summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2.3-1/ChangeLog452
-rw-r--r--2.3-1/DESCRIPTION73
-rw-r--r--2.3-1/Doc/SCI2CUserGuidev4.docbin0 -> 799232 bytes
-rw-r--r--2.3-1/FILES2750
-rw-r--r--2.3-1/Makefile.am23
-rw-r--r--2.3-1/Makefile.in734
-rw-r--r--2.3-1/RUN_TESTS/RUN_TESTS.vcxproj496
-rw-r--r--2.3-1/RUN_TESTS/RUN_TESTS.vcxproj.filters17
-rwxr-xr-x2.3-1/RUN_TESTS/run_tests.bat99
-rw-r--r--2.3-1/Visual-Studio-settings/f2c.props23
-rw-r--r--2.3-1/Visual-Studio-settings/f2c.rules20
-rw-r--r--2.3-1/Visual-Studio-settings/f2c.targets81
-rw-r--r--2.3-1/Visual-Studio-settings/f2c.xml127
-rw-r--r--2.3-1/Visual-Studio-settings/rename-vc-files.rules19
-rw-r--r--2.3-1/builder.sce34
-rw-r--r--2.3-1/config/compile142
-rw-r--r--2.3-1/config/config.guess1516
-rw-r--r--2.3-1/config/config.sub1626
-rw-r--r--2.3-1/config/depcomp589
-rw-r--r--2.3-1/config/install-sh519
-rw-r--r--2.3-1/config/ltmain.sh8412
-rw-r--r--2.3-1/config/missing367
-rw-r--r--2.3-1/configure21545
-rw-r--r--2.3-1/configure.ac297
-rw-r--r--2.3-1/demos/Filter.dem.sce21
-rw-r--r--2.3-1/demos/LinearRegression.dem.sce19
-rw-r--r--2.3-1/demos/Symbols.dem.sce20
-rw-r--r--2.3-1/demos/TrigonometricIdentity.dem.sce21
-rw-r--r--2.3-1/demos/analog_in_out_volt.dem.sce7
-rw-r--r--2.3-1/demos/analog_out.dem.sce7
-rw-r--r--2.3-1/demos/blink.dem.sce7
-rw-r--r--2.3-1/demos/dc_motor.dem.sce7
-rw-r--r--2.3-1/demos/digital_in.dem.sce7
-rw-r--r--2.3-1/demos/master_write.dem.sce7
-rw-r--r--2.3-1/demos/scilab2c.dem.gateway.sce27
-rw-r--r--2.3-1/etc/scilab2c.quit0
-rw-r--r--2.3-1/etc/scilab2c.start62
-rw-r--r--2.3-1/includes/bcm2835.h1625
-rw-r--r--2.3-1/includes/blas.h160
-rw-r--r--2.3-1/includes/constant.h34
-rw-r--r--2.3-1/includes/f2c.h245
-rw-r--r--2.3-1/includes/lapack.h192
-rw-r--r--2.3-1/includes/machine.h.in80
-rw-r--r--2.3-1/includes/notFound.h18
-rw-r--r--2.3-1/includes/sci2clib.h623
-rw-r--r--2.3-1/loader.sce10
-rw-r--r--2.3-1/m4/fftw.m416
-rw-r--r--2.3-1/m4/fortran.m4103
-rw-r--r--2.3-1/m4/intel_compiler.m436
-rw-r--r--2.3-1/macros/ASTManagement/%comment_string.sci7
-rw-r--r--2.3-1/macros/ASTManagement/%cste_string.sci26
-rw-r--r--2.3-1/macros/ASTManagement/%equal_string.sci16
-rw-r--r--2.3-1/macros/ASTManagement/%for_string.sci15
-rw-r--r--2.3-1/macros/ASTManagement/%funcall_string.sci15
-rw-r--r--2.3-1/macros/ASTManagement/%ifthenel_string.sci27
-rw-r--r--2.3-1/macros/ASTManagement/%ifthenelse_string.sci27
-rw-r--r--2.3-1/macros/ASTManagement/%operatio_string.sci13
-rw-r--r--2.3-1/macros/ASTManagement/%operation_string.sci13
-rw-r--r--2.3-1/macros/ASTManagement/%program_p.sci4
-rw-r--r--2.3-1/macros/ASTManagement/%program_string.sci19
-rw-r--r--2.3-1/macros/ASTManagement/%variable_string.sci26
-rw-r--r--2.3-1/macros/ASTManagement/%while_string.sci14
-rw-r--r--2.3-1/macros/ASTManagement/AST2Ccode.sci268
-rw-r--r--2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.sci88
-rw-r--r--2.3-1/macros/ASTManagement/AST_CheckLastFunc.sci77
-rw-r--r--2.3-1/macros/ASTManagement/AST_CheckLineLength.sci31
-rw-r--r--2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.sci82
-rw-r--r--2.3-1/macros/ASTManagement/AST_DisplayStack.sci42
-rw-r--r--2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.sci107
-rw-r--r--2.3-1/macros/ASTManagement/AST_GetASTFile.sci58
-rw-r--r--2.3-1/macros/ASTManagement/AST_GetFuncallPrm.sci54
-rw-r--r--2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.sci99
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleEOL.sci65
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleEndFor.sci78
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci564
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleEndProgram.sci62
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleEndWhile.sci76
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleFor.sci84
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleForStatem.sci87
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleHeader.sci249
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleIfElse.sci92
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleWhileExpr.sci80
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci118
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci168
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci116
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci119
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci127
-rw-r--r--2.3-1/macros/ASTManagement/AST_PopASTStack.sci40
-rw-r--r--2.3-1/macros/ASTManagement/AST_PushASTStack.sci36
-rw-r--r--2.3-1/macros/ASTManagement/AST_ReadASTHeader.sci90
-rw-r--r--2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.sci61
-rw-r--r--2.3-1/macros/ASTManagement/GenOutArgNames.sci89
-rw-r--r--2.3-1/macros/ASTManagement/Operator2FunName.sci119
-rw-r--r--2.3-1/macros/ASTManagement/SciFile2ASTFile.sci36
-rw-r--r--2.3-1/macros/ASTManagement/_comment_string.sci7
-rw-r--r--2.3-1/macros/ASTManagement/_cste_string.sci26
-rw-r--r--2.3-1/macros/ASTManagement/_equal_string.sci16
-rw-r--r--2.3-1/macros/ASTManagement/_for_string.sci15
-rw-r--r--2.3-1/macros/ASTManagement/_funcall_string.sci15
-rw-r--r--2.3-1/macros/ASTManagement/_ifthenel_string.sci27
-rw-r--r--2.3-1/macros/ASTManagement/_ifthenelse_string.sci27
-rw-r--r--2.3-1/macros/ASTManagement/_operatio_string.sci13
-rw-r--r--2.3-1/macros/ASTManagement/_operation_string.sci13
-rw-r--r--2.3-1/macros/ASTManagement/_program_p.sci4
-rw-r--r--2.3-1/macros/ASTManagement/_program_string.sci19
-rw-r--r--2.3-1/macros/ASTManagement/_variable_string.sci26
-rw-r--r--2.3-1/macros/ASTManagement/_while_string.sci14
-rw-r--r--2.3-1/macros/ASTManagement/buildmacros.sce15
-rw-r--r--2.3-1/macros/ASTManagement/libbin0 -> 1884 bytes
-rw-r--r--2.3-1/macros/ASTManagement/names59
-rw-r--r--2.3-1/macros/ASTManagement/objectlist2string.sci13
-rw-r--r--2.3-1/macros/CCodeGeneration/C_FinalizeCode.sci116
-rw-r--r--2.3-1/macros/CCodeGeneration/C_ForExpression.sci217
-rw-r--r--2.3-1/macros/CCodeGeneration/C_Funcall.sci467
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenDeclarations.sci135
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateFunName.sci56
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateLaunchScript.sci86
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci146
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateMakefile_msvc.sci131
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateMkfle_arduino.sci24
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateSCI2CHeader.sci21
-rw-r--r--2.3-1/macros/CCodeGeneration/C_IfElseBlocks.sci68
-rw-r--r--2.3-1/macros/CCodeGeneration/C_IfExpression.sci91
-rw-r--r--2.3-1/macros/CCodeGeneration/C_IndentBlanks.sci31
-rw-r--r--2.3-1/macros/CCodeGeneration/C_InitHeader.sci77
-rw-r--r--2.3-1/macros/CCodeGeneration/C_MemAllocOutTempVars.sci64
-rw-r--r--2.3-1/macros/CCodeGeneration/C_SCI2CHeader.sci46
-rw-r--r--2.3-1/macros/CCodeGeneration/C_Type.sci66
-rw-r--r--2.3-1/macros/CCodeGeneration/C_WhileExpression.sci93
-rw-r--r--2.3-1/macros/CCodeGeneration/GenCFunDatFiles.sci73
-rw-r--r--2.3-1/macros/CCodeGeneration/GetClsFileName.sci95
-rw-r--r--2.3-1/macros/CCodeGeneration/GetSymbolDimension.sci68
-rw-r--r--2.3-1/macros/CCodeGeneration/GetWhileCondVariable.sci72
-rw-r--r--2.3-1/macros/CCodeGeneration/JoinDeclarAndCcode.sci173
-rw-r--r--2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp230
-rw-r--r--2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp1230
-rw-r--r--2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp2126
-rw-r--r--2.3-1/macros/CCodeGeneration/Sci2AnnotationFile.sci55
-rw-r--r--2.3-1/macros/CCodeGeneration/buildmacros.sce15
-rw-r--r--2.3-1/macros/CCodeGeneration/libbin0 -> 1052 bytes
-rw-r--r--2.3-1/macros/CCodeGeneration/names24
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/ConvertPrecision.c41
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/FileManagement.c12
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpEqual.c90
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpExt.c11
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpIns.c11
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpLogAnd.c38
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpLogGe.c37
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpLogGt.c37
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpLogLe.c37
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpLogLt.c37
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/OpLogOr.c38
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/RealToComplex.c134
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/SCI2Cconvol.c2
-rw-r--r--2.3-1/macros/CFiles/sci2ccode/SCI2Cfft.c13
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/ConvertPrecision.h18
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/FileManagement.h13
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpEqual.h33
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpExt.h108
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpLogAnd.h23
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpLogGe.h36
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpLogLe.h37
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpLogLt.h35
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/OpLogOr.h23
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/RealToComplex.h33
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/SCI2CMacroInterface.h281
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/SCI2Cconvol.h15
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/SCI2Cfft.h16
-rw-r--r--2.3-1/macros/CFiles/sci2cincludes/notFound.h18
-rw-r--r--2.3-1/macros/CFiles/sci2cobj/readme.txt2
-rw-r--r--2.3-1/macros/ErrorMessages/EM_NanSize.sci82
-rw-r--r--2.3-1/macros/ErrorMessages/EM_UnknownStep.sci70
-rw-r--r--2.3-1/macros/ErrorMessages/EM_ZeroSize.sci27
-rw-r--r--2.3-1/macros/ErrorMessages/buildmacros.sce15
-rw-r--r--2.3-1/macros/ErrorMessages/libbin0 -> 556 bytes
-rw-r--r--2.3-1/macros/ErrorMessages/names3
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_ADD.sci43
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_DIV.sci41
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_GetDefaultPrecision.sci97
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci216
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_GetOutArgInfo.sci133
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_GetResizeApproach.sci79
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_INT.sci40
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_MAX.sci50
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_MIN.sci45
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_MUL.sci42
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_REAL.sci50
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SCHUR_SZ.sci42
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SCHUR_TP.sci38
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SUB.sci41
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_1.sci21
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_2.sci21
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_COLUMN_DIAG.sci40
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_COL_DIAG_IN_EX.sci61
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BASE.sci30
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BIN.sci20
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2HEX.sci21
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2OCT.sci20
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_DIFF.sci58
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_FACTOR.sci20
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci36
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_LINSPACE_ROW.sci33
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_LQE.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_LQR.sci34
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OBSCNT.sci48
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPAPEX.sci26
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPBACKSLASH.sci39
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPCC.sci40
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTAPEX.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTBACKSLASH.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTHAT.sci43
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSLASH.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSTAR.sci32
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPHAT.sci43
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGAND.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGEQ.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGE.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGT.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLE.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLT.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNE.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNOT.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGOR.sci16
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPMINUS.sci51
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUS.sci93
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUSA.sci66
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPRC.sci40
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_OPSTAR.sci68
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_PRIMES.sci21
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN_CAT.sci50
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG.sci38
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG_INS_EXT.sci103
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_SEL1.sci48
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_SEL2.sci44
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_C.sci32
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_COMPLEX.sci42
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_CVIMAGE.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_D.sci32
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_I.sci32
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_INT16.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_INT8.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_MAX.sci45
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_MIN_REAL.sci35
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_REAL.sci38
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_S.sci32
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_UINT16.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_UINT8.sci37
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_USER.sci38
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_Z.sci32
-rw-r--r--2.3-1/macros/FunctionAnnotation/buildmacros.sce15
-rw-r--r--2.3-1/macros/FunctionAnnotation/libbin0 -> 2264 bytes
-rw-r--r--2.3-1/macros/FunctionAnnotation/names74
-rw-r--r--2.3-1/macros/FunctionList/FL_ExistCFunction.sci106
-rw-r--r--2.3-1/macros/FunctionList/FL_ExtractFuncList.sci62
-rw-r--r--2.3-1/macros/FunctionList/FL_GetFunctionClass.sci54
-rw-r--r--2.3-1/macros/FunctionList/FL_InOutArgs2CFunNames.sci51
-rw-r--r--2.3-1/macros/FunctionList/FL_UpdateConverted.sci46
-rw-r--r--2.3-1/macros/FunctionList/FL_UpdateToBeConv.sci114
-rw-r--r--2.3-1/macros/FunctionList/buildmacros.sce15
-rw-r--r--2.3-1/macros/FunctionList/libbin0 -> 624 bytes
-rw-r--r--2.3-1/macros/FunctionList/names6
-rw-r--r--2.3-1/macros/GeneralFunctions/Array2String.sci40
-rw-r--r--2.3-1/macros/GeneralFunctions/ConvertPathMat2C.sci61
-rw-r--r--2.3-1/macros/GeneralFunctions/File2StringArray.sci54
-rw-r--r--2.3-1/macros/GeneralFunctions/FunName2SciFileName.sci56
-rw-r--r--2.3-1/macros/GeneralFunctions/IsNanSize.sci39
-rw-r--r--2.3-1/macros/GeneralFunctions/KeyStr2FileStrPos.sci83
-rw-r--r--2.3-1/macros/GeneralFunctions/PrintStepInfo.sci56
-rw-r--r--2.3-1/macros/GeneralFunctions/PrintStringInfo.sci69
-rw-r--r--2.3-1/macros/GeneralFunctions/ReadStringCard.sci61
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2CCreateDir.sci31
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2CFindFile.sci41
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2CNInArgCheck.sci26
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2COpenFileRead.sci30
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2COpenFileWrite.sci30
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2CTemplate.sci32
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Ccopyfile.sci49
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cfileexist.sci38
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cflipud.sci40
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cmdelete.sci33
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cresize.sci33
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cstring.sci34
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cstrncmp.sci27
-rw-r--r--2.3-1/macros/GeneralFunctions/SCI2Cstrncmps1size.sci32
-rw-r--r--2.3-1/macros/GeneralFunctions/SizeInByte.sci41
-rw-r--r--2.3-1/macros/GeneralFunctions/buildmacros.sce15
-rw-r--r--2.3-1/macros/GeneralFunctions/dispina.sci31
-rw-r--r--2.3-1/macros/GeneralFunctions/filenamefprintf.sci48
-rw-r--r--2.3-1/macros/GeneralFunctions/float.sci26
-rw-r--r--2.3-1/macros/GeneralFunctions/libbin0 -> 1168 bytes
-rw-r--r--2.3-1/macros/GeneralFunctions/names28
-rw-r--r--2.3-1/macros/GeneralFunctions/squeezestrings.sci31
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRADCSetup.sci47
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRDigitalIn.sci50
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRDigitalOut.sci51
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRDigitalPortSetup.sci47
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRDigitalSetup.sci51
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRGetTimerValue.sci40
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRPWM0SetDuty.sci35
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRPWM0Setup.sci68
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRPWM1SetDuty.sci52
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRPWM1Setup.sci79
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRPWM2SetDuty.sci38
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRPWM2Setup.sci69
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRReadADC.sci44
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRSleep.sci4
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRTimerSetup.sci56
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRUARTReceive.sci30
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRUARTSetup.sci61
-rw-r--r--2.3-1/macros/Hardware/AVR/AVRUARTTransmit.sci33
-rw-r--r--2.3-1/macros/Hardware/AVR/GetAVRSupportFunctions.sci43
-rw-r--r--2.3-1/macros/Hardware/AVR/GetPeripheral.sci31
-rw-r--r--2.3-1/macros/Hardware/AVR/InsertPeripheralInList.sci27
-rw-r--r--2.3-1/macros/Hardware/AVR/IsAVRSupportFunction.sci32
-rw-r--r--2.3-1/macros/Hardware/AVR/buildmacros.sce4
-rw-r--r--2.3-1/macros/Hardware/AVR/libbin0 -> 1008 bytes
-rw-r--r--2.3-1/macros/Hardware/AVR/names22
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/GetRPISupportFunctions.sci48
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/IsRPISupportFunction.sci32
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_DelayMicro.sci38
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_DelayMilli.sci39
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_DigitalIn.sci43
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_DigitalOut.sci44
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_DigitalSetup.sci36
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_GetMicros.sci39
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_GetMillis.sci39
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetClock.sci35
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetMode.sci32
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetRange.sci35
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMWrite.sci39
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_PinISR.sci56
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_SerialClose.sci33
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_SerialFlush.sci34
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_SerialGetChar.sci36
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendChar.sci37
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendData.sci38
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/RPI_SerialSetup.sci36
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/buildmacros.sce4
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/libbin0 -> 1012 bytes
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/names21
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/u16RPISerialDataAvail.sci37
-rw-r--r--2.3-1/macros/ImageProcessing/buildmacros.sce26
-rw-r--r--2.3-1/macros/ImageProcessing/core/CV_CreateImage.sci41
-rw-r--r--2.3-1/macros/ImageProcessing/core/CV_GetImgSize.sci37
-rw-r--r--2.3-1/macros/ImageProcessing/core/buildmacros.sce15
-rw-r--r--2.3-1/macros/ImageProcessing/core/libbin0 -> 560 bytes
-rw-r--r--2.3-1/macros/ImageProcessing/core/names2
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/CV_LoadImage.sci40
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/CV_SaveImage.sci38
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/CV_ShowImage.sci39
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/CV_WaitKey.sci39
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/buildmacros.sce15
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/libbin0 -> 620 bytes
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/names4
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_AdaptiveThreshold.sci48
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_Blur.sci47
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_Canny.sci47
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_CornerHarris.sci53
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_CvtColor.sci41
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_Dilate.sci52
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_DistanceTransform.sci40
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_Erode.sci51
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_GaussianBlur.sci51
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_MedianBlur.sci41
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/CV_Threshold.sci41
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/buildmacros.sce15
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/libbin0 -> 788 bytes
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/names11
-rw-r--r--2.3-1/macros/Scilab-Arduino/GenerateSetupFunction.sci56
-rw-r--r--2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci36
-rw-r--r--2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci31
-rw-r--r--2.3-1/macros/Scilab-Arduino/InsertSetupInList.sci91
-rw-r--r--2.3-1/macros/Scilab-Arduino/IsArduinoFunction.sci32
-rw-r--r--2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci34
-rw-r--r--2.3-1/macros/Scilab-Arduino/buildmacros.sce29
-rw-r--r--2.3-1/macros/Scilab-Arduino/cmd_i2c_dev.sci3
-rw-r--r--2.3-1/macros/Scilab-Arduino/cmd_i2c_read.sci2
-rw-r--r--2.3-1/macros/Scilab-Arduino/cmd_i2c_read_register.sci3
-rw-r--r--2.3-1/macros/Scilab-Arduino/cmd_i2c_write.sci2
-rw-r--r--2.3-1/macros/Scilab-Arduino/cmd_i2c_write_register.sci2
-rw-r--r--2.3-1/macros/Scilab-Arduino/libbin0 -> 736 bytes
-rw-r--r--2.3-1/macros/Scilab-Arduino/names11
-rw-r--r--2.3-1/macros/SymbolTable/ST_AnalyzeScope.sci125
-rw-r--r--2.3-1/macros/SymbolTable/ST_Del.sci41
-rw-r--r--2.3-1/macros/SymbolTable/ST_FindPos.sci46
-rw-r--r--2.3-1/macros/SymbolTable/ST_Get.sci64
-rw-r--r--2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci220
-rw-r--r--2.3-1/macros/SymbolTable/ST_GetSymbolInfo.sci99
-rw-r--r--2.3-1/macros/SymbolTable/ST_InsForCntVars.sci191
-rw-r--r--2.3-1/macros/SymbolTable/ST_InsOutArg.sci192
-rw-r--r--2.3-1/macros/SymbolTable/ST_Load.sci36
-rw-r--r--2.3-1/macros/SymbolTable/ST_MatchSymbol.sci69
-rw-r--r--2.3-1/macros/SymbolTable/ST_Save.sci44
-rw-r--r--2.3-1/macros/SymbolTable/ST_Set.sci49
-rw-r--r--2.3-1/macros/SymbolTable/buildmacros.sce15
-rw-r--r--2.3-1/macros/SymbolTable/libbin0 -> 752 bytes
-rw-r--r--2.3-1/macros/SymbolTable/names12
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_CreateDirs.sci65
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci8290
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_GenAnnFLFunctions.sci28
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_GenFileInfo.sci117
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_GenLibraries.sci61
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci137
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_LoadLibraries.sci64
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_RemoveDirs.sci74
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_SCI2C.sci164
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_SCI2CLoader.sce72
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_SharedInfoEqual.sci43
-rw-r--r--2.3-1/macros/ToolInitialization/ManageNextConversion.sci87
-rw-r--r--2.3-1/macros/ToolInitialization/SCI2CInputParameters.sce87
-rw-r--r--2.3-1/macros/ToolInitialization/UpdateSCI2CInfo.sci208
-rw-r--r--2.3-1/macros/ToolInitialization/buildmacros.sce15
-rw-r--r--2.3-1/macros/ToolInitialization/doublecomplex.sci29
-rw-r--r--2.3-1/macros/ToolInitialization/floatcomplex.sci26
-rw-r--r--2.3-1/macros/ToolInitialization/libbin0 -> 816 bytes
-rw-r--r--2.3-1/macros/ToolInitialization/names14
-rw-r--r--2.3-1/macros/buildmacros.sce31
-rw-r--r--2.3-1/macros/cb_sci2c_gui.sci223
-rw-r--r--2.3-1/macros/findDeps/Scilab2CDeps.sci1808
-rw-r--r--2.3-1/macros/findDeps/buildmacros.sce15
-rw-r--r--2.3-1/macros/findDeps/findDeps.sci44
-rw-r--r--2.3-1/macros/findDeps/getAllHeaders.sci258
-rw-r--r--2.3-1/macros/findDeps/getAllInterfaces.sci247
-rw-r--r--2.3-1/macros/findDeps/getAllLibraries.sci82
-rw-r--r--2.3-1/macros/findDeps/getAllSources.sci1319
-rw-r--r--2.3-1/macros/findDeps/getArduinoFiles.sci27
-rw-r--r--2.3-1/macros/findDeps/get_rquird_fnctns.sci140
-rw-r--r--2.3-1/macros/findDeps/libbin0 -> 640 bytes
-rw-r--r--2.3-1/macros/findDeps/names8
-rw-r--r--2.3-1/macros/full_reset.sce22
-rw-r--r--2.3-1/macros/getScilab2cVersion.sci15
-rw-r--r--2.3-1/macros/libbin0 -> 556 bytes
-rw-r--r--2.3-1/macros/names6
-rw-r--r--2.3-1/macros/runsci2c.sci266
-rw-r--r--2.3-1/macros/runscicode.sci67
-rw-r--r--2.3-1/macros/sci2c_gui.sci516
-rw-r--r--2.3-1/macros/scilab2c.sci212
-rw-r--r--2.3-1/readme.txt151
-rw-r--r--2.3-1/readme_visual.txt18
-rw-r--r--2.3-1/scilab2c.sln1271
-rw-r--r--2.3-1/scilab2c.sln.txt1271
-rw-r--r--2.3-1/scilab2c_f2c.sln1050
-rw-r--r--2.3-1/scilab2c_f2c.sln.txt1050
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionAbs.sci20
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionConj.sci31
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind.sci20
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind2d.sci32
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsEmpty.sci18
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsNan.sci20
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionLength.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSign.sci28
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSize.sci27
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionType.sci16
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACos.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASin.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASinh.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan2.sci14
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATanh.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCeil_Fix_Floor_Int_Round.sci48
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCos.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCosh.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionExp_Expm.sci30
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog10.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog1p.sci17
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow0.sci27
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci50
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSin.sci16
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSinh.sci16
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSqrt.sci16
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTan.sci16
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTanh.sci16
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/implicitList/mainfunctionImplicitList.sci36
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpIns.sci136
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogEq.sci32
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNe.sci32
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNot.sci29
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionChol.sci24
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionDet.sci28
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionEye.sci37
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionInversion.sci21
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOnes.sci37
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOpApex_OpDotApex.sci29
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionSpec_Spec2.sci66
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionZeros.sci37
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpMinus.sci50
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpPlus.sci47
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpSlash_OpDotSlash.sci67
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpStar_OpDotStar.sci58
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionConvol.sci47
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFft.sci38
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFftShift.sci30
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionIfft.sci24
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionLev.sci38
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionMean.sci21
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionSum.sci20
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionVariance.sci20
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/type/mainfunctionReal_Imag.sci20
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/SCI2CInputParameters.sce89
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/scilabcode/mainfunction.sci30
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/SCI2CInputParameters.sce89
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/scilabcode/mainfunction.sci55
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce89
-rw-r--r--2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci30
-rw-r--r--2.3-1/src/c/CACSD/includes/lqe.h26
-rw-r--r--2.3-1/src/c/CACSD/includes/lqr.h26
-rw-r--r--2.3-1/src/c/CACSD/includes/obscont.h28
-rw-r--r--2.3-1/src/c/CACSD/includes/syslin.h31
-rw-r--r--2.3-1/src/c/CACSD/interfaces/int_lqe.h25
-rw-r--r--2.3-1/src/c/CACSD/interfaces/int_lqr.h25
-rw-r--r--2.3-1/src/c/CACSD/interfaces/int_obscont.h29
-rw-r--r--2.3-1/src/c/CACSD/interfaces/int_syslin.h78
-rw-r--r--2.3-1/src/c/CACSD/lqe/dlqea.c60
-rw-r--r--2.3-1/src/c/CACSD/lqr/as_per_sci_code.c144
-rw-r--r--2.3-1/src/c/CACSD/lqr/dlqra.c352
-rw-r--r--2.3-1/src/c/CACSD/obscont/dobsconta.c284
-rw-r--r--2.3-1/src/c/CACSD/syslin/dsyslina.c107
-rw-r--r--2.3-1/src/c/Files/includes/files.h47
-rw-r--r--2.3-1/src/c/Files/interfaces/int_files.h58
-rw-r--r--2.3-1/src/c/Files/mclose/mclose.c22
-rw-r--r--2.3-1/src/c/Files/mopen/mopen.c24
-rw-r--r--2.3-1/src/c/Files/mput/dmputa.c33
-rw-r--r--2.3-1/src/c/Files/mput/dmputs.c27
-rw-r--r--2.3-1/src/c/Files/mput/i16mputa.c33
-rw-r--r--2.3-1/src/c/Files/mput/i16mputs.c26
-rw-r--r--2.3-1/src/c/Files/mput/i8mputa.c33
-rw-r--r--2.3-1/src/c/Files/mput/i8mputs.c26
-rw-r--r--2.3-1/src/c/Files/mput/smputa.c33
-rw-r--r--2.3-1/src/c/Files/mput/smputs.c26
-rw-r--r--2.3-1/src/c/Files/mput/u16mputa.c33
-rw-r--r--2.3-1/src/c/Files/mput/u16mputs.c26
-rw-r--r--2.3-1/src/c/Files/mput/u8mputa.c33
-rw-r--r--2.3-1/src/c/Files/mput/u8mputs.c26
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/Makefile.am25
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/Makefile.in573
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/Makefile.am65
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/Makefile.in800
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/cabsa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/cabss.c30
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/dabsa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/dabss.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/i16absa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/i16abss.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/i8absa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/i8abss.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/sabsa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/sabss.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/testAbs.h39
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/testDoubleAbs.c93
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/testFloatAbs.c93
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj181
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj181
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/u16absa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/u16abss.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/u8absa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/u8abss.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/zabsa.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/abs/zabss.c31
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj507
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj.filters284
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/Makefile.am44
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/Makefile.in710
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/cconja.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/cconjs.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/testConj.c139
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj178
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj.filters22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/zconja.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/conj/zconjs.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/Makefile.am49
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/Makefile.in691
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/cfinda.c37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/dfinda.c40
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/i16finda.c39
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/i8finda.c40
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/sfinda.c41
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/testFind.c217
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/testFind.h42
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj181
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/u16finda.c39
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/u8finda.c40
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find/zfinda.c37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.am48
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.in689
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/cfind2da.c36
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/dfind2da.c40
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/sfind2da.c36
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.c532
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.h41
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj181
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/find2d/zfind2da.c36
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.am66
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.in716
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/dfrexps.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/sfrexps.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/testFrexp.c162
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj187
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj.filters22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/abs.h160
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/conj.h37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/dynlib_auxiliaryfunctions.h26
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/find.h79
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/find2d.h52
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/frexp.h33
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/isempty.h64
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/isnan.h71
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/length.h98
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/max.h22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/min.h20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/pythag.h50
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/rand.h135
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/sign.h169
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/size.h25
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/includes/type.h72
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_abs.h50
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_conj.h52
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_find.h184
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_frexp.h22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_isempty.h34
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_isnan.h34
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_length.h70
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_max.h53
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_min.h53
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_pythag.h27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_rand.h94
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_sign.h50
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_size.h72
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/interfaces/int_type.h34
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.am37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.in611
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.c159
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.h32
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj181
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.am48
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.in721
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/cisnana.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/cisnans.c23
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/disnana.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/disnans.c23
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/sisnana.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/sisnans.c23
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.c157
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.h40
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj185
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/zisnana.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/isnan/zisnans.c21
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/length/Makefile.am37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/length/Makefile.in611
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/length/testLength.c106
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/length/testLength.h33
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj177
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.am58
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.in737
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/cpythags.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/dpythags.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/spythags.c17
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.c52
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.h27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj177
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/pythag/zpythags.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/Makefile.am52
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/Makefile.in758
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/cranda.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/crands.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/dranda.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/drands.c94
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/i16randa.c23
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/i16rands.c57
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/i8randa.c23
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/i8rands.c53
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/sranda.c20
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/srands.c18
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/testRand.c101
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/testRand.h32
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj177
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/u16randa.c23
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/u16rands.c57
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/u8randa.c26
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/u8rands.c79
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/zranda.c25
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/rand/zrands.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/Makefile.am60
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/Makefile.in772
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/csigna.c21
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/csigns.c19
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/dsigna.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/dsigns.c24
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/i16signa.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/i16signs.c25
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/i8signa.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/i8signs.c25
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/ssigna.c21
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/ssigns.c24
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/testSign.c106
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/testSign.h30
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj185
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/u16signa.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/u16signs.c24
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/u8signa.c22
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/u8signs.c25
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/zsigna.c21
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/sign/zsigns.c19
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/Makefile.am37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/Makefile.in611
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/dallsizea.c34
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/testSize.c106
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/testSize.h33
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj177
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj.filters27
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/type/Makefile.am37
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/type/Makefile.in611
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/type/testType.c155
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/type/testType.h41
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj181
-rw-r--r--2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj.filters27
-rw-r--r--2.3-1/src/c/differential_calculus/diff/ddiffca.c203
-rw-r--r--2.3-1/src/c/differential_calculus/diff/i16diffca.c203
-rw-r--r--2.3-1/src/c/differential_calculus/diff/i8diffca.c203
-rw-r--r--2.3-1/src/c/differential_calculus/diff/sdiffca.c203
-rw-r--r--2.3-1/src/c/differential_calculus/diff/u16diffca.c203
-rw-r--r--2.3-1/src/c/differential_calculus/diff/u8diffca.c203
-rw-r--r--2.3-1/src/c/differential_calculus/includes/diffc.h39
-rw-r--r--2.3-1/src/c/differential_calculus/includes/ode.h24
-rw-r--r--2.3-1/src/c/differential_calculus/interfaces/int_diffc.h105
-rw-r--r--2.3-1/src/c/differential_calculus/interfaces/int_ode.h68
-rw-r--r--2.3-1/src/c/differential_calculus/ode/dodea.c67
-rw-r--r--2.3-1/src/c/differential_calculus/ode/dodes.c49
-rw-r--r--2.3-1/src/c/elementaryFunctions/Makefile.am40
-rw-r--r--2.3-1/src/c/elementaryFunctions/Makefile.in587
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosda.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosds.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosda.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosds.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotda.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccotha.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccoths.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcotha.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcoths.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scotha.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scoths.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcotha.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcoths.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccsca.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccscs.c28
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcsca.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcscs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scsca.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scscs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcsca.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcscs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscda.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscds.c29
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscda.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscds.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscda.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscds.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscda.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscds.c29
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccscha.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccschs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcscha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcschs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scscha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scschs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcscha.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcschs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/cseca.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/csecs.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dseca.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dsecs.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/sseca.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/ssecs.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zseca.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zsecs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecda.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecds.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecda.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecds.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csecha.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csechs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsecha.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsechs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssecha.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssechs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsecha.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsechs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/Makefile.am73
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/Makefile.in813
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/cacosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/cacoss.c147
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/dacosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/dacoss.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/sacosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/sacoss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/testAcos.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/testCplxAcos.c681
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/testRealsAcos.c647
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj182
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj.filters27
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj174
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj.filters22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/zacosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acos/zacoss.c147
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosd/cacoss.c147
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosd/dacosda.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosd/dacosds.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosd/sacosda.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosd/sacosds.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/Makefile.am72
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/Makefile.in816
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/cacosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/cacoshs.c33
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/dacosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/dacoshs.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/sacosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/sacoshs.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/testAcosh.h39
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/testDoubleAcosh.c512
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/testFloatAcosh.c510
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj178
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj.filters22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj179
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj.filters22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/zacosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acosh/zacoshs.c33
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/cacota.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/cacots.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/dacota.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/dacots.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/sacota.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/sacots.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/zacota.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acot/zacots.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/acotd/dacotda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acotd/dacotds.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acotd/sacotda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acotd/sacotds.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/cacotha.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/cacoths.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/dacotha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/dacoths.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/sacotha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/sacoths.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/zacotha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acoth/zacoths.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/cacsca.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/cacscs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/dacsca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/dacscs.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/sacsca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/sacscs.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/zacsca.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsc/zacscs.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/acscd/dacscda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acscd/dacscds.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/acscd/sacscda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acscd/sacscds.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/cacscha.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/cacschs.c30
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/dacscha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/dacschs.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/sacscha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/sacschs.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/zacscha.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/acsch/zacschs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/asec/daseca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asec/dasecs.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/asec/saseca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asec/sasecs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/asecd/dasecda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asecd/dasecds.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/asecd/sasecda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asecd/sasecds.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/asech/dasecha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asech/dasechs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/asech/sasecha.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asech/sasechs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/Makefile.am72
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/Makefile.in812
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/casina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/casins.c146
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/dasina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/dasins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/sasina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/sasins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/testAsin.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/testDoubleAsin.c495
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/testFloatAsin.c497
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/zasina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asin/zasins.c146
-rw-r--r--2.3-1/src/c/elementaryFunctions/asind/dasinda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asind/dasinds.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/asind/sasinda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/asind/sasinds.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/Makefile.am69
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/Makefile.in812
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/casinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/casinhs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/dasinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/dasinhs.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/sasinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/sasinhs.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/testAsinh.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/testDoubleAsinh.c497
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/testFloatAsinh.c497
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/zasinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/asinh/zasinhs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/Makefile.am67
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/Makefile.in803
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/catana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/catans.c249
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/datana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/datans.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/satana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/satans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/testAtan.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/testDoubleAtan.c496
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/testFloatAtan.c502
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/zatana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan/zatans.c242
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/Makefile.am58
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/Makefile.in726
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/datan2a.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/datan2s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/satan2a.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/satan2s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/atan2/testAtan2.c429
-rw-r--r--2.3-1/src/c/elementaryFunctions/atand/datanda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/atand/datands.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/atand/satanda.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/atand/satands.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/Makefile.am68
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/Makefile.in809
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/catanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/catanhs.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/datanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/datanhs.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/satanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/satanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/testAtanh.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/testDoubleAtanh.c605
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/testFloatAtanh.c600
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/zatanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/atanh/zatanhs.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/auxiliaryFunctions_Import.def8
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitand/u16bitanda.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitand/u16bitands.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitand/u8bitanda.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitand/u8bitands.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmpa.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmps.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmpa.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmps.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitget/u16bitgets.c34
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitget/u8bitgets.c35
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitor/u16bitora.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitor/u16bitors.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitor/u8bitora.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitor/u8bitors.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitset/u16bitsets.c30
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitset/u8bitsets.c30
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitxor/u16bitxora.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitxor/u16bitxors.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitxor/u8bitxora.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/bitxor/u8bitxors.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/Makefile.am60
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/Makefile.in788
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/cceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/cceils.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/dceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/dceils.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/i16ceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/i16ceils.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/i8ceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/i8ceils.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/sceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/sceils.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/testDoubleCeil.c153
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/testFloatCeil.c149
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/u16ceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/u16ceils.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/u8ceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/u8ceils.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/zceila.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/ceil/zceils.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/Makefile.am71
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/Makefile.in810
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/ccosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/ccoss.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/dcosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/dcoss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/i16cosa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/i16coss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/i8cosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/i8coss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/scosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/scoss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/testCos.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/testDoubleCos.c496
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/testFloatCos.c494
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/u16cosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/u16coss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/u8cosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/u8coss.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/zcosa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cos/zcoss.c24
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/Makefile.am70
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/Makefile.in811
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/ccosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/ccoshs.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/dcosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/dcoshs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/i16cosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/i16coshs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/i8cosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/i8coshs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/scosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/scoshs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/testCosh.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/testDoubleCosh.c507
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/testFloatCosh.c497
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/u16cosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/u16coshs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/u8cosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/u8coshs.c27
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/zcosha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/cosh/zcoshs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/dfactors.c39
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/sfactors.c39
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactoriala.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactorials.c35
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactoriala.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactorials.c34
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/dprimess.c35
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/sprimess.c35
-rw-r--r--2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj1562
-rw-r--r--2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj.filters857
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/Makefile.am65
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/Makefile.in804
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/cexpa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/cexps.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/dexpa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/dexps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/i16expa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/i16exps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/i8expa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/i8exps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/sexpa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/sexps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/testDoubleExp.c499
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/testExp.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/testFloatExp.c514
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/u16expa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/u16exps.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/u8expa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/u8exps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/zexpa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp/zexps.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/Makefile.am71
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/Makefile.in817
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/cexp10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/cexp10s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/dexp10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/dexp10s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/sexp10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/sexp10s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/testDoubleExp10.c496
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/testExp10.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/testFloatExp10.c495
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/zexp10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/exp10/zexp10s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/Makefile.am60
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/Makefile.in788
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/cfixa.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/cfixs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/dfixa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/dfixs.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/i16fixa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/i16fixs.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/i8fixa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/i8fixs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/sfixa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/sfixs.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/testDoubleFix.c150
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/testFloatFix.c148
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/u16fixa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/u16fixs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/u8fixa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/u8fixs.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/zfixa.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/fix/zfixs.c26
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/dfloata.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/dfloats.c16
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/i16floata.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/i16floats.c16
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/i8floata.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/i8floats.c16
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/sfloata.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/sfloats.c16
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/u16floata.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/u16floats.c16
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/u8floata.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/float/u8floats.c16
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/Makefile.am60
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/Makefile.in790
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/cfloora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/cfloors.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/dfloora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/dfloors.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/i16floora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/i16floors.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/i8floora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/i8floors.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/sfloora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/sfloors.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/testDoubleFloor.c152
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/testFloatFloor.c147
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/u16floora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/u16floors.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/u8floora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/u8floors.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/zfloora.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/floor/zfloors.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acos.h89
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acosd.h33
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acosh.h91
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acot.h43
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acotd.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acoth.h44
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acsc.h44
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acscd.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/acsch.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/asec.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/asecd.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/asech.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/asin.h90
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/asind.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/asinh.h90
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/atan.h90
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/atan2.h57
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/atand.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/atanh.h91
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/base2dec.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bin2dec.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bitand.h48
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bitcmp.h48
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bitget.h35
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bitor.h48
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bitset.h35
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/bitxor.h48
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/ceil.h67
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/cos.h145
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/cosd.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/cosh.h148
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/cotd.h29
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/coth.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/csc.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/cscd.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/csch.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/dec2base.h29
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/dec2bin.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/dec2hex.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/dec2oct.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/dynlib_elementaryfunctions.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/exp.h148
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/exp10.h90
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/factor.h27
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/factorial.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/fix.h72
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/floor.h66
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/get_float.h56
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/hex2dec.h27
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/int.h49
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/int16.h54
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/int8.h54
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/linspace.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/lnp1m1.h46
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/log.h89
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/log10.h89
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/log1p.h88
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/logspace.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/oct2dec.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/pow.h59
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/primes.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/round.h65
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sec.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/secd.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sech.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sin.h150
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sinh.h147
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sqrt.h94
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/tan.h148
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/tanh.h145
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/uint16.h54
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/uint8.h54
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/Makefile.am61
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/Makefile.in790
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/cinta.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/cints.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/dinta.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/dints.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/sinta.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/sints.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/testDoubleInt.c160
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/testFloatInt.c149
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/zinta.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int/zints.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/dint16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/dint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/i8int16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/i8int16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/sint16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/sint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/u16int16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/u16int16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/u8int16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int16/u8int16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/dint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/dint8s.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/i16int8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/i16int8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/sint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/sint8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/u16int8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/u16int8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/u8int8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/int8/u8int8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_OpDotHat.h204
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_OpHat.h153
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acos.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acosd.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acosh.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acot.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acotd.h33
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acoth.h43
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acsc.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acscd.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_acsch.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_asec.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_asecd.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_asech.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_asin.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_asind.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_asinh.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_atan.h44
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_atand.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_atanh.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_base2dec.h27
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bin2dec.h37
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bitand.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bitcmp.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bitget.h20
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bitor.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bitset.h23
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_bitxor.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_ceil.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_cos.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_cosd.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_cosh.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_cotd.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_coth.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_csc.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_cscd.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_csch.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_dec2base.h35
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_dec2bin.h48
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_dec2hex.h35
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_dec2oct.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_exp.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_exp10.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_factor.h29
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_factorial.h31
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_fix.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_float.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_floor.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_hex2dec.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_int.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_int16.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_int8.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h20
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_lnp1m1.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_log.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_log10.h42
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_log1p.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_logspace.h20
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_oct2dec.h35
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_pow.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_primes.h29
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_round.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_sec.h34
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_secd.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_sech.h32
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_sin.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_sinh.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_sqrt.h64
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_tan.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_tanh.h50
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_uint16.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_uint8.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/linspace/dlinspacea.c49
-rw-r--r--2.3-1/src/c/elementaryFunctions/linspace/dlinspaces.c33
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.am56
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.in743
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/dlnp1m1s.c77
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/slnp1m1s.c77
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/testDoubleLnp1m1.c36
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/testFloatLnp1m1.c36
-rw-r--r--2.3-1/src/c/elementaryFunctions/lnp1m1/testLnp1m1.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/Makefile.am65
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/Makefile.in802
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/cloga.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/clogs.c65
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/dloga.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/dlogs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/sloga.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/slogs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/testDoubleLog.c956
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/testFloatLog.c958
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/testLog.h39
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/zloga.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log/zlogs.c65
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/Makefile.am67
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/Makefile.in808
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/clog10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/clog10s.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/dlog10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/dlog10s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/slog10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/slog10s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/testDoubleLog10.c495
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/testFloatLog10.c495
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/testLog10.h39
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/zlog10a.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log10/zlog10s.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/Makefile.am66
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/Makefile.in806
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/clog1pa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/clog1ps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/dlog1pa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/dlog1ps.c34
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/slog1pa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/slog1ps.c35
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/testDoubleLog1p.c1255
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/testFloatLog1p.c966
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/testLog1p.h38
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/zlog1pa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/log1p/zlog1ps.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/logspace/dlogspacea.c50
-rw-r--r--2.3-1/src/c/elementaryFunctions/logspace/dlogspaces.c34
-rw-r--r--2.3-1/src/c/elementaryFunctions/nthroot/dnthroot.c0
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/Makefile.am71
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/Makefile.in815
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/cpowa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/cpows.c28
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/dpowa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/dpows.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/i16powa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/i16pows.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/i8powa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/i8pows.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/spowa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/spows.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/testDoublePow.c519
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/testFloatPow.c521
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/testPow.h41
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/u16powa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/u16pows.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/u8powa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/u8pows.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/zpowa.c25
-rw-r--r--2.3-1/src/c/elementaryFunctions/pow/zpows.c28
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/dbase2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/gbase2decs.c166
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2basea.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2bases.c71
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2basea.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2bases.c45
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bina.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bins.c50
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bina.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bins.c43
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bina.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bins.c43
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bina.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bins.c43
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bina.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bins.c43
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexs.c50
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexs.c49
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexs.c50
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexs.c49
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexs.c49
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octs.c38
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octa.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octs.c38
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octs.c38
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octs.c38
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octa.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octs.c38
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/dhex2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/ghex2decs.c87
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2deca.c21
-rw-r--r--2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2decs.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/Makefile.am59
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/Makefile.in786
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/crounda.c19
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/crounds.c29
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/drounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/drounds.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/i16rounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/i16rounds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/i8rounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/i8rounds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/srounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/srounds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/testDoubleRound.c152
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/testFloatRound.c148
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/u16rounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/u16rounds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/u8rounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/u8rounds.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/zrounda.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/round/zrounds.c29
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/Makefile.am68
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/Makefile.in808
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/csina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/csins.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/dsina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/dsins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/i16sina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/i16sins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/i8sina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/i8sins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/ssina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/ssins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/testDoubleSin.c498
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/testFloatSin.c494
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/testSin.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/u16sina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/u16sins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/u8sina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/u8sins.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/zsina.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sin/zsins.c23
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/Makefile.am68
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/Makefile.in808
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/csinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/csinhs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/dsinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/dsinhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/i16sinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/i16sinhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/i8sinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/i8sinhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/ssinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/ssinhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/testDoubleSinh.c511
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/testFloatSinh.c495
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/testSinh.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/u16sinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/u16sinhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/u8sinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/u8sinhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/zsinha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sinh/zsinhs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/Makefile.am65
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/Makefile.in800
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/csqrta.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/csqrts.c111
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/dsqrta.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/dsqrts.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/ssqrta.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/ssqrts.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/testDoubleSqrt.c497
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/testFloatSqrt.c496
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/testSqrt.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/zsqrta.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/sqrt/zsqrts.c111
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/Makefile.am73
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/Makefile.in818
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/ctana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/ctans.c45
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/dtana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/dtans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/i16tana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/i16tans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/i8tana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/i8tans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/stana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/stans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/testDoubleTan.c497
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/testFloatTan.c495
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/testTan.h36
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/u16tana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/u16tans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/u8tana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/u8tans.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/ztana.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tan/ztans.c104
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/Makefile.am73
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/Makefile.in819
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/ctanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/ctanhs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/dtanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/dtanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/i16tanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/i16tanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/i8tanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/i8tanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/stanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/stanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/testDoubleTanh.c496
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/testFloatTanh.c494
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/testTanh.h40
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/u16tanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/u16tanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/u8tanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/u8tanhs.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/ztanha.c20
-rw-r--r--2.3-1/src/c/elementaryFunctions/tanh/ztanhs.c22
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/duint16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/duint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/i16uint16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/i16uint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/i8uint16a.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/i8uint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/suint16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/suint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/u8uint16a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint16/u8uint16s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/duint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/duint8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/i16uint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/i16uint8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/i8uint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/i8uint8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/suint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/suint8s.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/u16uint8a.c18
-rw-r--r--2.3-1/src/c/elementaryFunctions/uint8/u16uint8s.c18
-rw-r--r--2.3-1/src/c/hardware/avr/adc/u8AVRADCSetups.c43
-rw-r--r--2.3-1/src/c/hardware/avr/adc/u8AVRReadADCs.c82
-rw-r--r--2.3-1/src/c/hardware/avr/default_files/Makefile387
-rw-r--r--2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalIns.c63
-rw-r--r--2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalOuts.c78
-rw-r--r--2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalPortSetups.c81
-rw-r--r--2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalSetups.c70
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRPeripheralADC.h27
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRPeripheralGPIO.h54
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h34
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRPeripheralTimer.h32
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRPeripheralUART.h59
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRUtil.h31
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralADC.h32
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h40
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h39
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralTimer.h31
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralUART.h57
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRUtil.h32
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0SetDutys.c24
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0Setups.c50
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1SetDutys.c31
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1Setups.c69
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2SetDutys.c22
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2Setups.c47
-rw-r--r--2.3-1/src/c/hardware/avr/timer/u16AVRGetTimerValues.c51
-rw-r--r--2.3-1/src/c/hardware/avr/timer/u8AVRGetTimerValues.c63
-rw-r--r--2.3-1/src/c/hardware/avr/timer/u8AVRTimerSetups.c110
-rw-r--r--2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmits.c88
-rw-r--r--2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmitu8.c21
-rw-r--r--2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmita.c26
-rw-r--r--2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmits.c31
-rw-r--r--2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmitu8.c24
-rw-r--r--2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmita.c27
-rw-r--r--2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmits.c73
-rw-r--r--2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmitu8.c31
-rw-r--r--2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmita.c25
-rw-r--r--2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmits.c26
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmita.c28
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmits.c87
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmitu8.c38
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u8AVRUARTReceiveCharu8.c20
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u8AVRUARTSetups.c143
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmita.c26
-rw-r--r--2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmits.c60
-rw-r--r--2.3-1/src/c/hardware/avr/util/u16AVRSleeps.c21
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c24
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c26
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c39
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h36
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPWM.h31
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h26
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h49
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h28
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h34
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralDigital.h33
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPWM.h30
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h47
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h34
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetClocks.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetModes.c28
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetRanges.c25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMWrites.c26
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c35
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c24
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c26
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c22
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c34
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c28
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c23
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSetups.c25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c21
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c21
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c21
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c27
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c22
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c24
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c22
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c25
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c21
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c21
-rw-r--r--2.3-1/src/c/imageProcessing/cvcore/imcvCreateImages.cpp46
-rw-r--r--2.3-1/src/c/imageProcessing/cvcore/imcvGetImgSizes.cpp27
-rw-r--r--2.3-1/src/c/imageProcessing/cvhighgui/imcvLoadImages.cpp23
-rw-r--r--2.3-1/src/c/imageProcessing/cvhighgui/imcvShowImages.cpp27
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvAdaptThresholds.cpp47
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvBlurs.cpp55
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvCanny.cpp31
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvCornerHarris.cpp55
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvCvtColors.cpp148
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvDilate.cpp71
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvDistanceTransforms.cpp41
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvErode.cpp71
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvGaussianBlurs.cpp54
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvMedianBlurs.cpp31
-rw-r--r--2.3-1/src/c/imageProcessing/cvimgproc/imcvThresholds.cpp38
-rw-r--r--2.3-1/src/c/imageProcessing/includes/cvcore.hpp26
-rw-r--r--2.3-1/src/c/imageProcessing/includes/cvhighgui.hpp26
-rw-r--r--2.3-1/src/c/imageProcessing/includes/cvimgproc.hpp52
-rw-r--r--2.3-1/src/c/imageProcessing/interfaces/int_cvcore.hpp26
-rw-r--r--2.3-1/src/c/imageProcessing/interfaces/int_cvhighgui.hpp35
-rw-r--r--2.3-1/src/c/imageProcessing/interfaces/int_cvimgproc.hpp71
-rw-r--r--2.3-1/src/c/implicitList/Makefile.am47
-rw-r--r--2.3-1/src/c/implicitList/Makefile.in749
-rw-r--r--2.3-1/src/c/implicitList/cimplicitLists.c18
-rw-r--r--2.3-1/src/c/implicitList/dimplicitLists.c42
-rw-r--r--2.3-1/src/c/implicitList/dynlib_implicitlist.h26
-rw-r--r--2.3-1/src/c/implicitList/implicitList.h42
-rw-r--r--2.3-1/src/c/implicitList/implicitList.vcxproj204
-rw-r--r--2.3-1/src/c/implicitList/implicitList.vcxproj.filters45
-rw-r--r--2.3-1/src/c/implicitList/int_OpColon.h101
-rw-r--r--2.3-1/src/c/implicitList/simplicitLists.c42
-rw-r--r--2.3-1/src/c/implicitList/testDoubleImplicitList.c142
-rw-r--r--2.3-1/src/c/implicitList/testFloatImplicitList.c65
-rw-r--r--2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj178
-rw-r--r--2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj.filters22
-rw-r--r--2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj174
-rw-r--r--2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj.filters22
-rw-r--r--2.3-1/src/c/implicitList/zimplicitLists.c18
-rw-r--r--2.3-1/src/c/linearAlgebra/balanc/dbalanca.c75
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/balanc.h27
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/rcond.h26
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/schur.h30
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_balanc.h29
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_rcond.h25
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_schur.h60
-rw-r--r--2.3-1/src/c/linearAlgebra/rcond/drconda.c46
-rw-r--r--2.3-1/src/c/linearAlgebra/schur/dgschura.c161
-rw-r--r--2.3-1/src/c/linearAlgebra/schur/dschura.c126
-rw-r--r--2.3-1/src/c/matrixOperations/Makefile.am38
-rw-r--r--2.3-1/src/c/matrixOperations/Makefile.in583
-rw-r--r--2.3-1/src/c/matrixOperations/cat/Makefile.am52
-rw-r--r--2.3-1/src/c/matrixOperations/cat/Makefile.in792
-rw-r--r--2.3-1/src/c/matrixOperations/cat/ccata.c54
-rw-r--r--2.3-1/src/c/matrixOperations/cat/ccats.c23
-rw-r--r--2.3-1/src/c/matrixOperations/cat/dcata.c55
-rw-r--r--2.3-1/src/c/matrixOperations/cat/dcats.c23
-rw-r--r--2.3-1/src/c/matrixOperations/cat/i16cata.c63
-rw-r--r--2.3-1/src/c/matrixOperations/cat/i16cats.c26
-rw-r--r--2.3-1/src/c/matrixOperations/cat/i8cata.c60
-rw-r--r--2.3-1/src/c/matrixOperations/cat/i8cats.c26
-rw-r--r--2.3-1/src/c/matrixOperations/cat/scata.c55
-rw-r--r--2.3-1/src/c/matrixOperations/cat/scats.c23
-rw-r--r--2.3-1/src/c/matrixOperations/cat/testDoubleMatrixConcatenation.c342
-rw-r--r--2.3-1/src/c/matrixOperations/cat/testFloatMatrixConcatenation.c341
-rw-r--r--2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/cat/u16cata.c63
-rw-r--r--2.3-1/src/c/matrixOperations/cat/u16cats.c27
-rw-r--r--2.3-1/src/c/matrixOperations/cat/u8cata.c60
-rw-r--r--2.3-1/src/c/matrixOperations/cat/u8cats.c26
-rw-r--r--2.3-1/src/c/matrixOperations/cat/zcata.c54
-rw-r--r--2.3-1/src/c/matrixOperations/cat/zcats.c24
-rw-r--r--2.3-1/src/c/matrixOperations/chol/Makefile.am71
-rw-r--r--2.3-1/src/c/matrixOperations/chol/Makefile.in772
-rw-r--r--2.3-1/src/c/matrixOperations/chol/cchola.c91
-rw-r--r--2.3-1/src/c/matrixOperations/chol/dchola.c69
-rw-r--r--2.3-1/src/c/matrixOperations/chol/dchols.c22
-rw-r--r--2.3-1/src/c/matrixOperations/chol/schola.c80
-rw-r--r--2.3-1/src/c/matrixOperations/chol/schols.c23
-rw-r--r--2.3-1/src/c/matrixOperations/chol/testDoubleChol.c152
-rw-r--r--2.3-1/src/c/matrixOperations/chol/testFloatChol.c97
-rw-r--r--2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/chol/zchola.c80
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/dcolumncumproda.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/dcumproda.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/drowcumproda.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/i16columncumproda.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/i16cumproda.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/i16rowcumproda.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/i8columncumproda.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/i8cumproda.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/i8rowcumproda.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/scolumncumproda.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/scumproda.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/srowcumproda.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/u16columncumproda.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/u16cumproda.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/u16rowcumproda.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/u8columncumproda.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/u8cumproda.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumprod/u8rowcumproda.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/dcolumncumsuma.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/dcumsuma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/drowcumsuma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/i16columncumsuma.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/i16cumsuma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/i16rowcumsuma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/i8columncumsuma.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/i8cumsuma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/i8rowcumsuma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/scolumncumsuma.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/scumsuma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/srowcumsuma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/u16columncumsuma.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/u16cumsuma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/u16rowcumsuma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/u8columncumsuma.c39
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/u8cumsuma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/cumsum/u8rowcumsuma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/determ/Makefile.am64
-rw-r--r--2.3-1/src/c/matrixOperations/determ/Makefile.in750
-rw-r--r--2.3-1/src/c/matrixOperations/determ/cdeterma.c150
-rw-r--r--2.3-1/src/c/matrixOperations/determ/ddeterma.c92
-rw-r--r--2.3-1/src/c/matrixOperations/determ/i16determa.c92
-rw-r--r--2.3-1/src/c/matrixOperations/determ/i8determa.c92
-rw-r--r--2.3-1/src/c/matrixOperations/determ/sdeterma.c97
-rw-r--r--2.3-1/src/c/matrixOperations/determ/testDoubleDeterm.c451
-rw-r--r--2.3-1/src/c/matrixOperations/determ/testFloatDeterm.c453
-rw-r--r--2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj186
-rw-r--r--2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/determ/u16determa.c92
-rw-r--r--2.3-1/src/c/matrixOperations/determ/u8determa.c92
-rw-r--r--2.3-1/src/c/matrixOperations/determ/zdeterma.c138
-rw-r--r--2.3-1/src/c/matrixOperations/diag/ddiaga.c40
-rw-r--r--2.3-1/src/c/matrixOperations/diag/ddiagexa.c130
-rw-r--r--2.3-1/src/c/matrixOperations/diag/ddiagexs.c53
-rw-r--r--2.3-1/src/c/matrixOperations/diag/ddiagina.c59
-rw-r--r--2.3-1/src/c/matrixOperations/diag/ddiagins.c37
-rw-r--r--2.3-1/src/c/matrixOperations/diag/ddiags.c20
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i16diaga.c40
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i16diagexa.c130
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i16diagexs.c53
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i16diagina.c58
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i16diagins.c37
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i16diags.c20
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i8diaga.c40
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i8diagexa.c130
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i8diagexs.c53
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i8diagina.c58
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i8diagins.c37
-rw-r--r--2.3-1/src/c/matrixOperations/diag/i8diags.c20
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u16diaga.c40
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u16diagexa.c130
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u16diagexs.c53
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u16diagina.c58
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u16diagins.c37
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u16diags.c20
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u8diaga.c40
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u8diagexa.c130
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u8diagexs.c53
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u8diagina.c58
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u8diagins.c37
-rw-r--r--2.3-1/src/c/matrixOperations/diag/u8diags.c20
-rw-r--r--2.3-1/src/c/matrixOperations/dist/Makefile.am87
-rw-r--r--2.3-1/src/c/matrixOperations/dist/Makefile.in803
-rw-r--r--2.3-1/src/c/matrixOperations/dist/cdista.c54
-rw-r--r--2.3-1/src/c/matrixOperations/dist/cdists.c25
-rw-r--r--2.3-1/src/c/matrixOperations/dist/ddista.c53
-rw-r--r--2.3-1/src/c/matrixOperations/dist/ddists.c21
-rw-r--r--2.3-1/src/c/matrixOperations/dist/sdista.c53
-rw-r--r--2.3-1/src/c/matrixOperations/dist/sdists.c20
-rw-r--r--2.3-1/src/c/matrixOperations/dist/testDoubleDist.c116
-rw-r--r--2.3-1/src/c/matrixOperations/dist/testFloatDist.c116
-rw-r--r--2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/dist/zdista.c54
-rw-r--r--2.3-1/src/c/matrixOperations/dist/zdists.c25
-rw-r--r--2.3-1/src/c/matrixOperations/division/Makefile.am73
-rw-r--r--2.3-1/src/c/matrixOperations/division/Makefile.in880
-rw-r--r--2.3-1/src/c/matrixOperations/division/cldivma.c65
-rw-r--r--2.3-1/src/c/matrixOperations/division/crdivcsv.c23
-rw-r--r--2.3-1/src/c/matrixOperations/division/crdivma.c62
-rw-r--r--2.3-1/src/c/matrixOperations/division/crdivscv.c23
-rw-r--r--2.3-1/src/c/matrixOperations/division/crdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/dldivma.c111
-rw-r--r--2.3-1/src/c/matrixOperations/division/drdivma.c129
-rw-r--r--2.3-1/src/c/matrixOperations/division/drdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/i16ldivma.c111
-rw-r--r--2.3-1/src/c/matrixOperations/division/i16rdivma.c129
-rw-r--r--2.3-1/src/c/matrixOperations/division/i16rdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/i8ldivma.c111
-rw-r--r--2.3-1/src/c/matrixOperations/division/i8rdivma.c129
-rw-r--r--2.3-1/src/c/matrixOperations/division/i8rdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/sldivma.c61
-rw-r--r--2.3-1/src/c/matrixOperations/division/srdivma.c63
-rw-r--r--2.3-1/src/c/matrixOperations/division/srdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/testMatrixLDivision.c456
-rw-r--r--2.3-1/src/c/matrixOperations/division/testMatrixRDivision.c504
-rw-r--r--2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/division/u16ldivma.c111
-rw-r--r--2.3-1/src/c/matrixOperations/division/u16rdivma.c129
-rw-r--r--2.3-1/src/c/matrixOperations/division/u16rdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/u8ldivma.c111
-rw-r--r--2.3-1/src/c/matrixOperations/division/u8rdivma.c129
-rw-r--r--2.3-1/src/c/matrixOperations/division/u8rdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/zldivma.c125
-rw-r--r--2.3-1/src/c/matrixOperations/division/zrdivdzv.c23
-rw-r--r--2.3-1/src/c/matrixOperations/division/zrdivma.c165
-rw-r--r--2.3-1/src/c/matrixOperations/division/zrdivv.c24
-rw-r--r--2.3-1/src/c/matrixOperations/division/zrdivzdv.c23
-rw-r--r--2.3-1/src/c/matrixOperations/expm/Makefile.am79
-rw-r--r--2.3-1/src/c/matrixOperations/expm/Makefile.in753
-rw-r--r--2.3-1/src/c/matrixOperations/expm/cexpma.c173
-rw-r--r--2.3-1/src/c/matrixOperations/expm/dexpma.c163
-rw-r--r--2.3-1/src/c/matrixOperations/expm/sexpma.c167
-rw-r--r--2.3-1/src/c/matrixOperations/expm/testMatrixExponential.c570
-rw-r--r--2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/expm/zexpma.c178
-rw-r--r--2.3-1/src/c/matrixOperations/eye/Makefile.am46
-rw-r--r--2.3-1/src/c/matrixOperations/eye/Makefile.in712
-rw-r--r--2.3-1/src/c/matrixOperations/eye/ceyea.c24
-rw-r--r--2.3-1/src/c/matrixOperations/eye/deyea.c23
-rw-r--r--2.3-1/src/c/matrixOperations/eye/i16eyea.c23
-rw-r--r--2.3-1/src/c/matrixOperations/eye/i8eyea.c23
-rw-r--r--2.3-1/src/c/matrixOperations/eye/seyea.c23
-rw-r--r--2.3-1/src/c/matrixOperations/eye/testMatrixEye.c348
-rw-r--r--2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/eye/u16eyea.c23
-rw-r--r--2.3-1/src/c/matrixOperations/eye/u8eyea.c23
-rw-r--r--2.3-1/src/c/matrixOperations/eye/zeyea.c24
-rw-r--r--2.3-1/src/c/matrixOperations/fill/Makefile.am55
-rw-r--r--2.3-1/src/c/matrixOperations/fill/Makefile.in739
-rw-r--r--2.3-1/src/c/matrixOperations/fill/cfilla.c21
-rw-r--r--2.3-1/src/c/matrixOperations/fill/dfilla.c22
-rw-r--r--2.3-1/src/c/matrixOperations/fill/sfilla.c22
-rw-r--r--2.3-1/src/c/matrixOperations/fill/testDoubleFill.c49
-rw-r--r--2.3-1/src/c/matrixOperations/fill/testFloatFill.c47
-rw-r--r--2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/fill/zfilla.c22
-rw-r--r--2.3-1/src/c/matrixOperations/flipdim/dflipdima.c81
-rw-r--r--2.3-1/src/c/matrixOperations/flipdim/i16flipdima.c81
-rw-r--r--2.3-1/src/c/matrixOperations/flipdim/i8flipdima.c81
-rw-r--r--2.3-1/src/c/matrixOperations/flipdim/sflipdima.c81
-rw-r--r--2.3-1/src/c/matrixOperations/flipdim/u16flipdima.c81
-rw-r--r--2.3-1/src/c/matrixOperations/flipdim/u8flipdima.c80
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/Makefile.am37
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/Makefile.in688
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/dhilba.c43
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/shilba.c44
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/testHilbert.c112
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj174
-rw-r--r--2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/includes/cat.h162
-rw-r--r--2.3-1/src/c/matrixOperations/includes/chol.h43
-rw-r--r--2.3-1/src/c/matrixOperations/includes/cumprod.h53
-rw-r--r--2.3-1/src/c/matrixOperations/includes/cumsum.h53
-rw-r--r--2.3-1/src/c/matrixOperations/includes/determ.h39
-rw-r--r--2.3-1/src/c/matrixOperations/includes/diag.h97
-rw-r--r--2.3-1/src/c/matrixOperations/includes/dist.h48
-rw-r--r--2.3-1/src/c/matrixOperations/includes/dynlib_matrixoperations.h26
-rw-r--r--2.3-1/src/c/matrixOperations/includes/eye.h110
-rw-r--r--2.3-1/src/c/matrixOperations/includes/fill.h40
-rw-r--r--2.3-1/src/c/matrixOperations/includes/flipdim.h40
-rw-r--r--2.3-1/src/c/matrixOperations/includes/hilb.h46
-rw-r--r--2.3-1/src/c/matrixOperations/includes/infiniteNorm.h67
-rw-r--r--2.3-1/src/c/matrixOperations/includes/jmat.h29
-rw-r--r--2.3-1/src/c/matrixOperations/includes/kron.h32
-rw-r--r--2.3-1/src/c/matrixOperations/includes/logm.h37
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixDivision.h102
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixExponential.h51
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixInversion.h104
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixMagnitude.h54
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixMultiplication.h150
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixPow.h43
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixSquaredMagnitude.h41
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixTrace.h109
-rw-r--r--2.3-1/src/c/matrixOperations/includes/matrixTranspose.h101
-rw-r--r--2.3-1/src/c/matrixOperations/includes/norm.h32
-rw-r--r--2.3-1/src/c/matrixOperations/includes/ones.h112
-rw-r--r--2.3-1/src/c/matrixOperations/includes/spec.h56
-rw-r--r--2.3-1/src/c/matrixOperations/includes/tril.h34
-rw-r--r--2.3-1/src/c/matrixOperations/includes/triu.h34
-rw-r--r--2.3-1/src/c/matrixOperations/includes/zeros.h114
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.am58
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.in734
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/cinfnorma.c36
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/dinfnorma.c35
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/sinfnorma.c37
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/testMatrixInfiniteNorm.c316
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/infiniteNorm/zinfnorma.c34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpApex.h34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpBackSlash.h37
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpCc.h134
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpDotApex.h34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpRc.h139
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpSlash.h38
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_OpStar.h45
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_cat.h359
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_chol.h34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_cumprod.h54
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_cumsum.h54
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_det.h34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_diag.h85
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_dist.h34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_expm.h26
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_eye.h88
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_fill.h51
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_flipdim.h109
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_invert.h50
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_kron.h43
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_norm.h53
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_ones.h87
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_permute.h28
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_spec.h71
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_trace.h48
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_transpose.h51
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_tril.h62
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_triu.h62
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_v2magn.h34
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_vmagn.h51
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/int_zeros.h89
-rw-r--r--2.3-1/src/c/matrixOperations/interfaces/interface.sh6
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/Makefile.am56
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/Makefile.in731
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/cinverma.c53
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/dinverma.c38
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/i16inverma.c55
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/i8inverma.c55
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/sinverma.c55
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/testMatrixInversion.c581
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/u16inverma.c55
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/u8inverma.c55
-rw-r--r--2.3-1/src/c/matrixOperations/inversion/zinverma.c36
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/Makefile.am35
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/Makefile.in684
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/djmata.c22
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/sjmata.c22
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/testJmat.c20
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/kron/dkrona.c39
-rw-r--r--2.3-1/src/c/matrixOperations/kron/skrona.c39
-rw-r--r--2.3-1/src/c/matrixOperations/logm/Makefile.am81
-rw-r--r--2.3-1/src/c/matrixOperations/logm/Makefile.in763
-rw-r--r--2.3-1/src/c/matrixOperations/logm/clogma.c37
-rw-r--r--2.3-1/src/c/matrixOperations/logm/dlogma.c31
-rw-r--r--2.3-1/src/c/matrixOperations/logm/slogma.c32
-rw-r--r--2.3-1/src/c/matrixOperations/logm/testDoubleLogm.c185
-rw-r--r--2.3-1/src/c/matrixOperations/logm/testFloatLogm.c185
-rw-r--r--2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/logm/zlogma.c100
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/Makefile.am66
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/Makefile.in805
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/cmagna.c44
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/cmagns.c23
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/dmagna.c43
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/dmagns.c23
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/i16magna.c43
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/i16magns.c22
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/i8magna.c43
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/i8magns.c22
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/smagna.c45
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/smagns.c23
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/testDoubleMagnitude.c192
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/testFloatMagnitude.c183
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/u16magna.c33
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/u16magns.c13
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/u8magna.c33
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/u8magns.c13
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/zmagna.c46
-rw-r--r--2.3-1/src/c/matrixOperations/magnitude/zmagns.c23
-rw-r--r--2.3-1/src/c/matrixOperations/matrixOperations.vcxproj934
-rw-r--r--2.3-1/src/c/matrixOperations/matrixOperations.vcxproj.filters576
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/Makefile.am49
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/Makefile.in756
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/cmulma.c44
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/dmulma.c67
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/i16mulma.c54
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/i8mulma.c54
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/smulma.c49
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/testDoubleMatrixMultiplication.c354
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/testFloatMatrixMultiplication.c213
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/u16mulma.c54
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/u8mulma.c54
-rw-r--r--2.3-1/src/c/matrixOperations/multiplication/zmulma.c103
-rw-r--r--2.3-1/src/c/matrixOperations/norm/dnorma.c72
-rw-r--r--2.3-1/src/c/matrixOperations/norm/dnormv.c60
-rw-r--r--2.3-1/src/c/matrixOperations/norm/snorma.c72
-rw-r--r--2.3-1/src/c/matrixOperations/norm/snormv.c60
-rw-r--r--2.3-1/src/c/matrixOperations/ones/Makefile.am42
-rw-r--r--2.3-1/src/c/matrixOperations/ones/Makefile.in710
-rw-r--r--2.3-1/src/c/matrixOperations/ones/conesa.c25
-rw-r--r--2.3-1/src/c/matrixOperations/ones/donesa.c26
-rw-r--r--2.3-1/src/c/matrixOperations/ones/i16onesa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/ones/i8onesa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/ones/sonesa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/ones/testMatrixOnes.c160
-rw-r--r--2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/ones/u16onesa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/ones/u8onesa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/ones/zonesa.c25
-rw-r--r--2.3-1/src/c/matrixOperations/powm/Makefile.am86
-rw-r--r--2.3-1/src/c/matrixOperations/powm/Makefile.in784
-rw-r--r--2.3-1/src/c/matrixOperations/powm/cpowma.c64
-rw-r--r--2.3-1/src/c/matrixOperations/powm/dpowma.c72
-rw-r--r--2.3-1/src/c/matrixOperations/powm/spowma.c72
-rw-r--r--2.3-1/src/c/matrixOperations/powm/testDoublePowm.c138
-rw-r--r--2.3-1/src/c/matrixOperations/powm/testFloatPowm.c136
-rw-r--r--2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/powm/zpowma.c64
-rw-r--r--2.3-1/src/c/matrixOperations/spec/Makefile.am70
-rw-r--r--2.3-1/src/c/matrixOperations/spec/Makefile.in755
-rw-r--r--2.3-1/src/c/matrixOperations/spec/cspeca.c34
-rw-r--r--2.3-1/src/c/matrixOperations/spec/dspeca.c71
-rw-r--r--2.3-1/src/c/matrixOperations/spec/sspeca.c34
-rw-r--r--2.3-1/src/c/matrixOperations/spec/testDoubleSpec.c116
-rw-r--r--2.3-1/src/c/matrixOperations/spec/testFloatSpec.c110
-rw-r--r--2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/spec/zspeca.c80
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/Makefile.am70
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/Makefile.in757
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/cspec2a.c36
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/dspec2a.c113
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/sspec2a.c36
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/testDoubleSpec2.c261
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/testFloatSpec2.c134
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/spec2/zspec2a.c96
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.am61
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.in799
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagna.c25
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagns.c22
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagna.c25
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagns.c22
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagna.c25
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagns.c22
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/testDoubleSquaredMagnitude.c67
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/testFloatSquaredMagnitude.c52
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagna.c25
-rw-r--r--2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagns.c22
-rw-r--r--2.3-1/src/c/matrixOperations/trace/Makefile.am41
-rw-r--r--2.3-1/src/c/matrixOperations/trace/Makefile.in712
-rw-r--r--2.3-1/src/c/matrixOperations/trace/ctracea.c32
-rw-r--r--2.3-1/src/c/matrixOperations/trace/dtracea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/trace/i16tracea.c28
-rw-r--r--2.3-1/src/c/matrixOperations/trace/i8tracea.c28
-rw-r--r--2.3-1/src/c/matrixOperations/trace/stracea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/trace/testMatrixTrace.c237
-rw-r--r--2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/trace/u16tracea.c28
-rw-r--r--2.3-1/src/c/matrixOperations/trace/u8tracea.c28
-rw-r--r--2.3-1/src/c/matrixOperations/trace/ztracea.c31
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/Makefile.am42
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/Makefile.in718
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/ctransposea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/dtransposea.c28
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/i16transposea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/i8transposea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/stransposea.c26
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/testMatrixTranspose.c519
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/u16transposea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/u8transposea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/transpose/ztransposea.c27
-rw-r--r--2.3-1/src/c/matrixOperations/tril/dtrila.c35
-rw-r--r--2.3-1/src/c/matrixOperations/tril/i16trila.c35
-rw-r--r--2.3-1/src/c/matrixOperations/tril/i8trila.c35
-rw-r--r--2.3-1/src/c/matrixOperations/tril/strila.c35
-rw-r--r--2.3-1/src/c/matrixOperations/tril/u16trila.c35
-rw-r--r--2.3-1/src/c/matrixOperations/tril/u8trila.c35
-rw-r--r--2.3-1/src/c/matrixOperations/triu/dtriua.c35
-rw-r--r--2.3-1/src/c/matrixOperations/triu/i16triua.c35
-rw-r--r--2.3-1/src/c/matrixOperations/triu/i8triua.c35
-rw-r--r--2.3-1/src/c/matrixOperations/triu/striua.c35
-rw-r--r--2.3-1/src/c/matrixOperations/triu/u16triua.c35
-rw-r--r--2.3-1/src/c/matrixOperations/triu/u8triua.c36
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/Makefile.am42
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/Makefile.in712
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/czerosa.c25
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/dzerosa.c26
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/dzerosh.c26
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/i16zerosa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/i8zerosa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/szerosa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/testMatrixZeros.c137
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj178
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj.filters22
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/u16zerosa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/u8zerosa.c28
-rw-r--r--2.3-1/src/c/matrixOperations/zeros/zzerosa.c25
-rw-r--r--2.3-1/src/c/operations/Makefile.am18
-rw-r--r--2.3-1/src/c/operations/Makefile.in565
-rw-r--r--2.3-1/src/c/operations/addition/Makefile.am45
-rw-r--r--2.3-1/src/c/operations/addition/Makefile.in748
-rw-r--r--2.3-1/src/c/operations/addition/cadda.c20
-rw-r--r--2.3-1/src/c/operations/addition/cadds.c18
-rw-r--r--2.3-1/src/c/operations/addition/dadda.c20
-rw-r--r--2.3-1/src/c/operations/addition/dadds.c18
-rw-r--r--2.3-1/src/c/operations/addition/i16adda.c20
-rw-r--r--2.3-1/src/c/operations/addition/i16adds.c18
-rw-r--r--2.3-1/src/c/operations/addition/i8adda.c20
-rw-r--r--2.3-1/src/c/operations/addition/i8adds.c18
-rw-r--r--2.3-1/src/c/operations/addition/sadda.c20
-rw-r--r--2.3-1/src/c/operations/addition/sadds.c18
-rw-r--r--2.3-1/src/c/operations/addition/testAddition.c128
-rw-r--r--2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj178
-rw-r--r--2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj.filters22
-rw-r--r--2.3-1/src/c/operations/addition/u16adda.c20
-rw-r--r--2.3-1/src/c/operations/addition/u16adds.c18
-rw-r--r--2.3-1/src/c/operations/addition/u8adda.c20
-rw-r--r--2.3-1/src/c/operations/addition/u8adds.c18
-rw-r--r--2.3-1/src/c/operations/addition/zadda.c20
-rw-r--r--2.3-1/src/c/operations/addition/zadds.c18
-rw-r--r--2.3-1/src/c/operations/auxiliaryFunctions_Import.def6
-rw-r--r--2.3-1/src/c/operations/division/Makefile.am66
-rw-r--r--2.3-1/src/c/operations/division/Makefile.in858
-rw-r--r--2.3-1/src/c/operations/division/cldiva.c22
-rw-r--r--2.3-1/src/c/operations/division/cldivs.c27
-rw-r--r--2.3-1/src/c/operations/division/crdiva.c22
-rw-r--r--2.3-1/src/c/operations/division/crdivs.c38
-rw-r--r--2.3-1/src/c/operations/division/dldiva.c21
-rw-r--r--2.3-1/src/c/operations/division/dldivs.c19
-rw-r--r--2.3-1/src/c/operations/division/drdiva.c21
-rw-r--r--2.3-1/src/c/operations/division/drdivs.c19
-rw-r--r--2.3-1/src/c/operations/division/i16ldiva.c21
-rw-r--r--2.3-1/src/c/operations/division/i16ldivs.c19
-rw-r--r--2.3-1/src/c/operations/division/i16rdiva.c21
-rw-r--r--2.3-1/src/c/operations/division/i16rdivs.c19
-rw-r--r--2.3-1/src/c/operations/division/i8ldiva.c20
-rw-r--r--2.3-1/src/c/operations/division/i8ldivs.c19
-rw-r--r--2.3-1/src/c/operations/division/i8rdiva.c21
-rw-r--r--2.3-1/src/c/operations/division/i8rdivs.c19
-rw-r--r--2.3-1/src/c/operations/division/sldiva.c21
-rw-r--r--2.3-1/src/c/operations/division/sldivs.c19
-rw-r--r--2.3-1/src/c/operations/division/srdiva.c22
-rw-r--r--2.3-1/src/c/operations/division/srdivs.c19
-rw-r--r--2.3-1/src/c/operations/division/testLDivision.c1440
-rw-r--r--2.3-1/src/c/operations/division/testRDivision.c1434
-rw-r--r--2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj178
-rw-r--r--2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj.filters22
-rw-r--r--2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj178
-rw-r--r--2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj.filters22
-rw-r--r--2.3-1/src/c/operations/division/u16ldiva.c21
-rw-r--r--2.3-1/src/c/operations/division/u16ldivs.c19
-rw-r--r--2.3-1/src/c/operations/division/u16rdiva.c21
-rw-r--r--2.3-1/src/c/operations/division/u16rdivs.c19
-rw-r--r--2.3-1/src/c/operations/division/u8ldiva.c21
-rw-r--r--2.3-1/src/c/operations/division/u8ldivs.c19
-rw-r--r--2.3-1/src/c/operations/division/u8rdiva.c21
-rw-r--r--2.3-1/src/c/operations/division/u8rdivs.c19
-rw-r--r--2.3-1/src/c/operations/division/zldiva.c21
-rw-r--r--2.3-1/src/c/operations/division/zldivs.c27
-rw-r--r--2.3-1/src/c/operations/division/zrdiva.c21
-rw-r--r--2.3-1/src/c/operations/division/zrdivs.c39
-rw-r--r--2.3-1/src/c/operations/includes/addition.h196
-rw-r--r--2.3-1/src/c/operations/includes/division.h328
-rw-r--r--2.3-1/src/c/operations/includes/dynlib_operations.h26
-rw-r--r--2.3-1/src/c/operations/includes/multiplication.h253
-rw-r--r--2.3-1/src/c/operations/includes/subtraction.h197
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpBackSlash.h109
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpDotBackSlash.h153
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpDotSlash.h176
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpDotStar.h151
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpEqual.h39
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpExt.h109
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpIns.h364
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogAnd.h179
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogEq.h145
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogGe.h110
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogGt.h103
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogLe.h102
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogLt.h102
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogNe.h136
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogNot.h67
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpLogOr.h171
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpMinus.h248
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpPlus.h185
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpSlash.h195
-rw-r--r--2.3-1/src/c/operations/interfaces/int_OpStar.h223
-rw-r--r--2.3-1/src/c/operations/matrixOperations_Import.def7
-rw-r--r--2.3-1/src/c/operations/multiplication/Makefile.am58
-rw-r--r--2.3-1/src/c/operations/multiplication/Makefile.in835
-rw-r--r--2.3-1/src/c/operations/multiplication/cmula.c21
-rw-r--r--2.3-1/src/c/operations/multiplication/cmulcsv.c24
-rw-r--r--2.3-1/src/c/operations/multiplication/cmuls.c41
-rw-r--r--2.3-1/src/c/operations/multiplication/cmulscv.c24
-rw-r--r--2.3-1/src/c/operations/multiplication/cmulv.c26
-rw-r--r--2.3-1/src/c/operations/multiplication/dmula.c22
-rw-r--r--2.3-1/src/c/operations/multiplication/dmuls.c19
-rw-r--r--2.3-1/src/c/operations/multiplication/dmulv.c26
-rw-r--r--2.3-1/src/c/operations/multiplication/i16mula.c21
-rw-r--r--2.3-1/src/c/operations/multiplication/i16muls.c19
-rw-r--r--2.3-1/src/c/operations/multiplication/i16mulv.c27
-rw-r--r--2.3-1/src/c/operations/multiplication/i8mula.c21
-rw-r--r--2.3-1/src/c/operations/multiplication/i8muls.c19
-rw-r--r--2.3-1/src/c/operations/multiplication/i8mulv.c27
-rw-r--r--2.3-1/src/c/operations/multiplication/smula.c23
-rw-r--r--2.3-1/src/c/operations/multiplication/smuls.c18
-rw-r--r--2.3-1/src/c/operations/multiplication/smulv.c27
-rw-r--r--2.3-1/src/c/operations/multiplication/testMultiplication.c1407
-rw-r--r--2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj178
-rw-r--r--2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj.filters22
-rw-r--r--2.3-1/src/c/operations/multiplication/u16mula.c21
-rw-r--r--2.3-1/src/c/operations/multiplication/u16muls.c19
-rw-r--r--2.3-1/src/c/operations/multiplication/u16mulv.c27
-rw-r--r--2.3-1/src/c/operations/multiplication/u8mula.c21
-rw-r--r--2.3-1/src/c/operations/multiplication/u8muls.c19
-rw-r--r--2.3-1/src/c/operations/multiplication/u8mulv.c26
-rw-r--r--2.3-1/src/c/operations/multiplication/zmula.c21
-rw-r--r--2.3-1/src/c/operations/multiplication/zmuldzv.c24
-rw-r--r--2.3-1/src/c/operations/multiplication/zmuls.c40
-rw-r--r--2.3-1/src/c/operations/multiplication/zmulv.c27
-rw-r--r--2.3-1/src/c/operations/multiplication/zmulzdv.c24
-rw-r--r--2.3-1/src/c/operations/operations.vcxproj495
-rw-r--r--2.3-1/src/c/operations/operations.vcxproj.filters203
-rw-r--r--2.3-1/src/c/operations/subtraction/Makefile.am45
-rw-r--r--2.3-1/src/c/operations/subtraction/Makefile.in750
-rw-r--r--2.3-1/src/c/operations/subtraction/cdiffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/cdiffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/ddiffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/ddiffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/i16diffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/i16diffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/i8diffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/i8diffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/sdiffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/sdiffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/testSubtraction.c132
-rw-r--r--2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj178
-rw-r--r--2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj.filters22
-rw-r--r--2.3-1/src/c/operations/subtraction/u16diffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/u16diffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/u8diffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/u8diffs.c18
-rw-r--r--2.3-1/src/c/operations/subtraction/zdiffa.c20
-rw-r--r--2.3-1/src/c/operations/subtraction/zdiffs.c18
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_analog_in/u8cmd_analog_ins.c20
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_analog_in_volt/u8cmd_analog_in_volts.c22
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_analog_out/u8cmd_analog_outs.c21
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_analog_out_volt/u8cmd_analog_out_volts.c22
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_dcmotor_release/u8cmd_dcmotor_releases.c29
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c60
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c43
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_digital_in/u8cmd_digital_ins.c20
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_digital_out/u8cmd_digital_outs.c22
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp23
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp32
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp40
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp26
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp30
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_servo_attach/u8cmd_servo_attachs.cpp32
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_servo_detach/u8cmd_servo_detachs.cpp32
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_servo_move/u8cmd_servo_moves.cpp34
-rw-r--r--2.3-1/src/c/scilab-arduino/default_files/Makefile10
-rw-r--r--2.3-1/src/c/scilab-arduino/default_files/sci2c_arduino.ino26
-rw-r--r--2.3-1/src/c/scilab-arduino/default_files/setup_arduino.h65
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_analog_in.h29
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_analog_in_volt.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_analog_out.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_analog_out_volt.h27
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_release.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_run.h31
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h32
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_digital_in.h29
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_digital_out.h29
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_dev.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read_register.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write_register.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_servo_attach.h31
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_servo_detach.h32
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_servo_move.h32
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/sleep.h28
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in_volt.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out.h33
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out_volt.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h40
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_in.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_out.h35
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h29
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h31
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h32
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h31
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_servo.h35
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_sleep.h29
-rw-r--r--2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c21
-rw-r--r--2.3-1/src/c/signalProcessing/Makefile.am22
-rw-r--r--2.3-1/src/c/signalProcessing/Makefile.in570
-rw-r--r--2.3-1/src/c/signalProcessing/conv/Makefile.am74
-rw-r--r--2.3-1/src/c/signalProcessing/conv/Makefile.in754
-rw-r--r--2.3-1/src/c/signalProcessing/conv/cconva.c53
-rw-r--r--2.3-1/src/c/signalProcessing/conv/dconva.c39
-rw-r--r--2.3-1/src/c/signalProcessing/conv/sconva.c44
-rw-r--r--2.3-1/src/c/signalProcessing/conv/testDoubleConv.c135
-rw-r--r--2.3-1/src/c/signalProcessing/conv/testFloatConv.c134
-rw-r--r--2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/conv/zconva.c51
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/Makefile.am64
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/Makefile.in749
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/cconv2da.c37
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/dconv2da.c35
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/sconv2da.c36
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/testDoubleConv2d.c119
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/testFloatConv2d.c106
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/conv2d/zconv2da.c37
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/Makefile.am66
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/Makefile.in754
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/ccrossCorra.c33
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/dcrossCorra.c37
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/scrossCorra.c31
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/testDoubleCrossCorr.c62
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/testFloatCrossCorr.c48
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/crossCorr/zcrossCorra.c34
-rw-r--r--2.3-1/src/c/signalProcessing/fft/Makefile.am83
-rw-r--r--2.3-1/src/c/signalProcessing/fft/Makefile.in865
-rw-r--r--2.3-1/src/c/signalProcessing/fft/cfftma.c52
-rw-r--r--2.3-1/src/c/signalProcessing/fft/dfft2.c24
-rw-r--r--2.3-1/src/c/signalProcessing/fft/dfftbi.c322
-rw-r--r--2.3-1/src/c/signalProcessing/fft/dfftma.c31
-rw-r--r--2.3-1/src/c/signalProcessing/fft/dfftmx.c1211
-rw-r--r--2.3-1/src/c/signalProcessing/fft/fft842.c173
-rw-r--r--2.3-1/src/c/signalProcessing/fft/fft_internal.h42
-rw-r--r--2.3-1/src/c/signalProcessing/fft/r2tx.c46
-rw-r--r--2.3-1/src/c/signalProcessing/fft/r4tx.c49
-rw-r--r--2.3-1/src/c/signalProcessing/fft/r8tx.c169
-rw-r--r--2.3-1/src/c/signalProcessing/fft/sfftma.c34
-rw-r--r--2.3-1/src/c/signalProcessing/fft/testDoubleFft.c470
-rw-r--r--2.3-1/src/c/signalProcessing/fft/testFloatFft.c1238
-rw-r--r--2.3-1/src/c/signalProcessing/fft/testMatFft.c297
-rw-r--r--2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/fft/zfftma.c156
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/Makefile.am68
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/Makefile.in828
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/ccolumnfftshifta.c48
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/cfftshifta.c26
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/crowfftshifta.c48
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/dcolumnfftshifta.c45
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/dfftshifta.c26
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/drowfftshifta.c46
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/scolumnfftshifta.c49
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/sfftshifta.c26
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/srowfftshifta.c48
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/testDoubleFftShift.c162
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/testFloatFftShift.c159
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/zcolumnfftshifta.c46
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/zfftshifta.c26
-rw-r--r--2.3-1/src/c/signalProcessing/fftshift/zrowfftshifta.c45
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/Makefile.am67
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/Makefile.in726
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/dhilberta.c37
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/dhilberts.c18
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/shilberta.c32
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/shilberts.c18
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/testHilbert.c851
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/Makefile.am84
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/Makefile.in866
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/cifftma.c51
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/diffbi_lavraie.c243
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/difft2.c24
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/difftbi.c321
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/difftma.c32
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/difftmx.c1253
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/ifft842.c163
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/ifft_internal.h44
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/ir2tx.c46
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/ir4tx.c49
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/ir8tx.c169
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/sifftma.c34
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/testDoubleIfft.c1301
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/testFloatIfft.c1269
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/testMatIfft.c289
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/ifft/zifftma.c160
-rw-r--r--2.3-1/src/c/signalProcessing/includes/conv.h41
-rw-r--r--2.3-1/src/c/signalProcessing/includes/conv2d.h38
-rw-r--r--2.3-1/src/c/signalProcessing/includes/crossCorr.h37
-rw-r--r--2.3-1/src/c/signalProcessing/includes/dynlib_signalprocessing.h26
-rw-r--r--2.3-1/src/c/signalProcessing/includes/fft.h57
-rw-r--r--2.3-1/src/c/signalProcessing/includes/fftshift.h76
-rw-r--r--2.3-1/src/c/signalProcessing/includes/hilbert.h43
-rw-r--r--2.3-1/src/c/signalProcessing/includes/ifft.h59
-rw-r--r--2.3-1/src/c/signalProcessing/includes/lev.h50
-rw-r--r--2.3-1/src/c/signalProcessing/includes/levin.h31
-rw-r--r--2.3-1/src/c/signalProcessing/includes/lpc2cep.h44
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_cepstrum.h34
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_convol.h153
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_fft.h71
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_fftshift.h51
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_hilbert.h26
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_ifft.h52
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_lev.h53
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_levin.h60
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_lpc2cep.h27
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_xcorr.h176
-rw-r--r--2.3-1/src/c/signalProcessing/lev/Makefile.am76
-rw-r--r--2.3-1/src/c/signalProcessing/lev/Makefile.in773
-rw-r--r--2.3-1/src/c/signalProcessing/lev/cleva.c85
-rw-r--r--2.3-1/src/c/signalProcessing/lev/cleva2.c83
-rw-r--r--2.3-1/src/c/signalProcessing/lev/dleva.c67
-rw-r--r--2.3-1/src/c/signalProcessing/lev/dleva2.c65
-rw-r--r--2.3-1/src/c/signalProcessing/lev/sleva.c66
-rw-r--r--2.3-1/src/c/signalProcessing/lev/sleva2.c64
-rw-r--r--2.3-1/src/c/signalProcessing/lev/testDoubleLev.c199
-rw-r--r--2.3-1/src/c/signalProcessing/lev/testFloatLev.c198
-rw-r--r--2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/lev/zleva.c86
-rw-r--r--2.3-1/src/c/signalProcessing/lev/zleva2.c83
-rw-r--r--2.3-1/src/c/signalProcessing/levin/Makefile.am76
-rw-r--r--2.3-1/src/c/signalProcessing/levin/Makefile.in759
-rw-r--r--2.3-1/src/c/signalProcessing/levin/dlevina.c185
-rw-r--r--2.3-1/src/c/signalProcessing/levin/levinUtils.c270
-rw-r--r--2.3-1/src/c/signalProcessing/levin/levinUtils.h71
-rw-r--r--2.3-1/src/c/signalProcessing/levin/slevina.c185
-rw-r--r--2.3-1/src/c/signalProcessing/levin/testDoubleLevin.c103
-rw-r--r--2.3-1/src/c/signalProcessing/levin/testFloatLevin.c103
-rw-r--r--2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/Makefile.am89
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/Makefile.in796
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/clpc2cepa.c32
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/dlpc2cepa.c38
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/slpc2cepa.c39
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/testDoubleLpc2cep.c39
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/testFloatLpc2cep.c40
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj178
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj.filters22
-rw-r--r--2.3-1/src/c/signalProcessing/lpc2cep/zlpc2cepa.c34
-rw-r--r--2.3-1/src/c/signalProcessing/signalProcessing.vcxproj607
-rw-r--r--2.3-1/src/c/signalProcessing/signalProcessing.vcxproj.filters320
-rw-r--r--2.3-1/src/c/statisticsFunctions/Makefile.am21
-rw-r--r--2.3-1/src/c/statisticsFunctions/Makefile.in569
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/dynlib_statisticsfunctions.h26
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/mean.h99
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/meanf.h106
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/prod.h100
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/statMax.h130
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/statMin.h130
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/stdevf.h129
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/sum.h102
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/variance.h117
-rw-r--r--2.3-1/src/c/statisticsFunctions/includes/variancef.h117
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_mean.h71
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_meanf.h183
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_prod.h71
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_statMax.h161
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_statMin.h162
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_stdevf.h188
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_sum.h70
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_variance.h71
-rw-r--r--2.3-1/src/c/statisticsFunctions/interfaces/int_variancef.h58
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/Makefile.am51
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/Makefile.in759
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/dcolumnmaxa.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/dmaxa.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/drowmaxa.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/i16columnmaxa.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/i16maxa.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/i16rowmaxa.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/i8columnmaxa.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/i8maxa.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/i8rowmaxa.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/scolumnmaxa.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/smaxa.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/srowmaxa.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/testDoubleMax.c93
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/testFloatMax.c93
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/u16columnmaxa.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/u16maxa.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/u16rowmaxa.c27
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/u8columnmaxa.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/u8maxa.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/max/u8rowmaxa.c28
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/Makefile.am69
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/Makefile.in839
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/ccolumnmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/cmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/crowmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/dcolumnmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/dmeana.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/drowmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/scolumnmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/smeana.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/srowmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/testDoubleMean.c498
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/testFloatMean.c481
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/zcolumnmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/zmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/mean/zrowmeana.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/Makefile.am74
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/Makefile.in879
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/ccolumnmeanfa.c39
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/cmeanfa.c30
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/cmeanfcs.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/cmeanfsc.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/crowmeanfa.c36
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/dcolumnmeanfa.c40
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/dmeanfa.c28
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/drowmeanfa.c36
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/scolumnmeanfa.c40
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/smeanfa.c27
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/srowmeanfa.c37
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/testDoubleMeanf.c409
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/testFloatMeanf.c383
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/zcolumnmeanfa.c39
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/zmeanfa.c29
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/zmeanfdz.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/zmeanfzd.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/meanf/zrowmeanfa.c36
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/Makefile.am51
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/Makefile.in759
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/dcolumnmina.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/dmina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/drowmina.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/i16columnmina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/i16mina.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/i16rowmina.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/i8columnmina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/i8mina.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/i8rowmina.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/scolumnmina.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/smina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/srowmina.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/testDoubleMin.c93
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/testFloatMin.c92
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/u16columnmina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/u16mina.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/u16rowmina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/u8columnmina.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/u8mina.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/min/u8rowmina.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/Makefile.am66
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/Makefile.in833
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/ccolumnproda.c36
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/cproda.c30
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/crowproda.c37
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/dcolumnproda.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/dproda.c29
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/drowproda.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/scolumnproda.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/sproda.c29
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/srowproda.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/testDoubleProd.c519
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/testFloatProd.c527
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/zcolumnproda.c36
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/zproda.c30
-rw-r--r--2.3-1/src/c/statisticsFunctions/prod/zrowproda.c37
-rw-r--r--2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj661
-rw-r--r--2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj.filters311
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/Makefile.am88
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/Makefile.in875
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/ccolumnstdevfa.c58
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/crowstdevfa.c59
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/cstdevfa.c43
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/cstdevfcs.c41
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/cstdevfsc.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/dcolumnstdevfa.c69
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/drowstdevfa.c53
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/dstdevfa.c43
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/scolumnstdevfa.c69
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/srowstdevfa.c53
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/sstdevfa.c68
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c509
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/testFloatStdevf.c389
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/zcolumnstdevfa.c59
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/zrowstdevfa.c63
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/zstdevfa.c46
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/zstdevfdz.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/stdevf/zstdevfzd.c41
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/Makefile.am65
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/Makefile.in831
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/ccolumnsuma.c33
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/crowsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/csuma.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/dcolumnsuma.c33
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/drowsuma.c33
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/dsuma.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/i16columnsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/i16rowsuma.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/i16suma.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/i8columnsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/i8rowsuma.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/i8suma.c27
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/scolumnsuma.c33
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/srowsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/ssuma.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/testDoubleSum.c493
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/testFloatSum.c481
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/u16columnsuma.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/u16rowsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/u16suma.c25
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/u8columnsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/u8rowsuma.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/u8suma.c26
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/zcolumnsuma.c33
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/zrowsuma.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/sum/zsuma.c24
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/Makefile.am89
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/Makefile.in884
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/ccolumnvariancea.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/crowvariancea.c22
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/cvariancea.c36
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/dcolumnvariancea.c32
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/drowvariancea.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/dvariancea.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/scolumnvariancea.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/srowvariancea.c21
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/svariancea.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/svn-prop.tmp12
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/testDoubleVariance.c335
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/testDoubleVarianceNono.c363
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/testFloatVariance.c329
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/testFloatVarianceNono.c364
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj178
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj.filters22
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/zcolumnvariancea.c34
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/zrowvariancea.c21
-rw-r--r--2.3-1/src/c/statisticsFunctions/variance/zvariancea.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/Makefile.am89
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/Makefile.in886
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/crowvariancefa.c22
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/cvariancefa.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c33
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/drowvariancefa.c23
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/dvariancefa.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/scolumnvariancefa.c47
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/srowvariancefa.c21
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/svariancefa.c46
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariance.c335
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariancef.c373
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/testFloatVariance.c329
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/testFloatVariancef.c381
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c35
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/zrowvariancefa.c21
-rw-r--r--2.3-1/src/c/statisticsFunctions/variancef/zvariancefa.c35
-rw-r--r--2.3-1/src/c/string/Makefile.am17
-rw-r--r--2.3-1/src/c/string/Makefile.in562
-rw-r--r--2.3-1/src/c/string/convstr/gconvstrs.c34
-rw-r--r--2.3-1/src/c/string/disp/Makefile.am52
-rw-r--r--2.3-1/src/c/string/disp/Makefile.in754
-rw-r--r--2.3-1/src/c/string/disp/cdispa.c23
-rw-r--r--2.3-1/src/c/string/disp/cdisps.c20
-rw-r--r--2.3-1/src/c/string/disp/ddispa.c23
-rw-r--r--2.3-1/src/c/string/disp/ddisph.c32
-rw-r--r--2.3-1/src/c/string/disp/ddisps.c18
-rw-r--r--2.3-1/src/c/string/disp/i16dispa.c24
-rw-r--r--2.3-1/src/c/string/disp/i16disps.c19
-rw-r--r--2.3-1/src/c/string/disp/i8dispa.c24
-rw-r--r--2.3-1/src/c/string/disp/i8disps.c19
-rw-r--r--2.3-1/src/c/string/disp/sdispa.c23
-rw-r--r--2.3-1/src/c/string/disp/sdisps.c18
-rw-r--r--2.3-1/src/c/string/disp/testDisp.c107
-rw-r--r--2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj178
-rw-r--r--2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj.filters22
-rw-r--r--2.3-1/src/c/string/disp/u16dispa.c24
-rw-r--r--2.3-1/src/c/string/disp/u16disps.c19
-rw-r--r--2.3-1/src/c/string/disp/u8dispa.c24
-rw-r--r--2.3-1/src/c/string/disp/u8disps.c19
-rw-r--r--2.3-1/src/c/string/disp/zdispa.c23
-rw-r--r--2.3-1/src/c/string/disp/zdisps.c19
-rw-r--r--2.3-1/src/c/string/includes/convstr.h26
-rw-r--r--2.3-1/src/c/string/includes/disp.h132
-rw-r--r--2.3-1/src/c/string/includes/dynlib_string.h27
-rw-r--r--2.3-1/src/c/string/includes/str.h146
-rw-r--r--2.3-1/src/c/string/includes/strrchr.h26
-rw-r--r--2.3-1/src/c/string/includes/strrev.h27
-rw-r--r--2.3-1/src/c/string/includes/strsubst.h27
-rw-r--r--2.3-1/src/c/string/interfaces/int_convstr.h27
-rw-r--r--2.3-1/src/c/string/interfaces/int_disp.h60
-rw-r--r--2.3-1/src/c/string/interfaces/int_string.h52
-rw-r--r--2.3-1/src/c/string/interfaces/int_strrchr.h25
-rw-r--r--2.3-1/src/c/string/interfaces/int_strrev.h25
-rw-r--r--2.3-1/src/c/string/interfaces/int_strsubst.h28
-rw-r--r--2.3-1/src/c/string/string.vcxproj276
-rw-r--r--2.3-1/src/c/string/string.vcxproj.filters89
-rw-r--r--2.3-1/src/c/string/string/Makefile.am52
-rw-r--r--2.3-1/src/c/string/string/Makefile.am.bak3
-rw-r--r--2.3-1/src/c/string/string/Makefile.in755
-rw-r--r--2.3-1/src/c/string/string/cstringa.c23
-rw-r--r--2.3-1/src/c/string/string/cstrings.c22
-rw-r--r--2.3-1/src/c/string/string/dstringa.c22
-rw-r--r--2.3-1/src/c/string/string/dstrings.c19
-rw-r--r--2.3-1/src/c/string/string/i16stringa.c24
-rw-r--r--2.3-1/src/c/string/string/i16strings.c21
-rw-r--r--2.3-1/src/c/string/string/i8stringa.c24
-rw-r--r--2.3-1/src/c/string/string/i8strings.c21
-rw-r--r--2.3-1/src/c/string/string/sstringa.c22
-rw-r--r--2.3-1/src/c/string/string/sstrings.c19
-rw-r--r--2.3-1/src/c/string/string/testString.c238
-rw-r--r--2.3-1/src/c/string/string/test_String/testString.vcxproj178
-rw-r--r--2.3-1/src/c/string/string/test_String/testString.vcxproj.filters22
-rw-r--r--2.3-1/src/c/string/string/u16stringa.c24
-rw-r--r--2.3-1/src/c/string/string/u16strings.c21
-rw-r--r--2.3-1/src/c/string/string/u8stringa.c24
-rw-r--r--2.3-1/src/c/string/string/u8strings.c21
-rw-r--r--2.3-1/src/c/string/string/zstringa.c23
-rw-r--r--2.3-1/src/c/string/string/zstrings.c22
-rw-r--r--2.3-1/src/c/string/strrchr/gstrrchra.c32
-rw-r--r--2.3-1/src/c/string/strrev/gstrreva.c26
-rw-r--r--2.3-1/src/c/string/strsubst/gstrsubsta.c69
-rw-r--r--2.3-1/src/c/type/Makefile.am37
-rw-r--r--2.3-1/src/c/type/Makefile.in669
-rw-r--r--2.3-1/src/c/type/doubleComplex.c138
-rw-r--r--2.3-1/src/c/type/doubleComplex.h92
-rw-r--r--2.3-1/src/c/type/dynlib_type.h26
-rw-r--r--2.3-1/src/c/type/floatComplex.c139
-rw-r--r--2.3-1/src/c/type/floatComplex.h94
-rw-r--r--2.3-1/src/c/type/int_imag.h50
-rw-r--r--2.3-1/src/c/type/int_real.h61
-rw-r--r--2.3-1/src/c/type/testDoubleComplex.c61
-rw-r--r--2.3-1/src/c/type/testFloatComplex.c62
-rw-r--r--2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj171
-rw-r--r--2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj.filters22
-rw-r--r--2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj175
-rw-r--r--2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj.filters22
-rw-r--r--2.3-1/src/c/type/type.vcxproj182
-rw-r--r--2.3-1/src/c/type/type.vcxproj.filters39
-rw-r--r--2.3-1/src/c/type/types.h17
-rw-r--r--2.3-1/src/fortran/blas/Makefile.am86
-rw-r--r--2.3-1/src/fortran/blas/Makefile.in601
-rw-r--r--2.3-1/src/fortran/blas/README6
-rw-r--r--2.3-1/src/fortran/blas/blas_f/blasplus.def74
-rw-r--r--2.3-1/src/fortran/blas/blas_f/blasplusAtlas.def144
-rw-r--r--2.3-1/src/fortran/blas/blas_f/blasplus_DLL.suobin0 -> 3072 bytes
-rw-r--r--2.3-1/src/fortran/blas/blas_f/blasplus_DLL.vfproj124
-rw-r--r--2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj370
-rw-r--r--2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj.filters463
-rw-r--r--2.3-1/src/fortran/blas/dasum.f43
-rw-r--r--2.3-1/src/fortran/blas/daxpy.f48
-rw-r--r--2.3-1/src/fortran/blas/dcabs1.f8
-rw-r--r--2.3-1/src/fortran/blas/dcopy.f50
-rw-r--r--2.3-1/src/fortran/blas/ddot.f49
-rw-r--r--2.3-1/src/fortran/blas/dgbmv.f300
-rw-r--r--2.3-1/src/fortran/blas/dgemm.f315
-rw-r--r--2.3-1/src/fortran/blas/dgemv.f261
-rw-r--r--2.3-1/src/fortran/blas/dger.f157
-rw-r--r--2.3-1/src/fortran/blas/dnrm2.f60
-rw-r--r--2.3-1/src/fortran/blas/drot.f37
-rw-r--r--2.3-1/src/fortran/blas/drotg.f27
-rw-r--r--2.3-1/src/fortran/blas/dsbmv.f303
-rw-r--r--2.3-1/src/fortran/blas/dscal.f43
-rw-r--r--2.3-1/src/fortran/blas/dspmv.f262
-rw-r--r--2.3-1/src/fortran/blas/dspr.f198
-rw-r--r--2.3-1/src/fortran/blas/dspr2.f229
-rw-r--r--2.3-1/src/fortran/blas/dswap.f56
-rw-r--r--2.3-1/src/fortran/blas/dsymm.f294
-rw-r--r--2.3-1/src/fortran/blas/dsymv.f262
-rw-r--r--2.3-1/src/fortran/blas/dsyr.f197
-rw-r--r--2.3-1/src/fortran/blas/dsyr2.f230
-rw-r--r--2.3-1/src/fortran/blas/dsyr2k.f327
-rw-r--r--2.3-1/src/fortran/blas/dsyrk.f294
-rw-r--r--2.3-1/src/fortran/blas/dtbmv.f342
-rw-r--r--2.3-1/src/fortran/blas/dtbsv.f346
-rw-r--r--2.3-1/src/fortran/blas/dtpmv.f299
-rw-r--r--2.3-1/src/fortran/blas/dtpsv.f302
-rw-r--r--2.3-1/src/fortran/blas/dtrmm.f355
-rw-r--r--2.3-1/src/fortran/blas/dtrmv.f286
-rw-r--r--2.3-1/src/fortran/blas/dtrsm.f378
-rw-r--r--2.3-1/src/fortran/blas/dtrsv.f289
-rw-r--r--2.3-1/src/fortran/blas/dzasum.f34
-rw-r--r--2.3-1/src/fortran/blas/dznrm2.f67
-rw-r--r--2.3-1/src/fortran/blas/idamax.f39
-rw-r--r--2.3-1/src/fortran/blas/izamax.f41
-rw-r--r--2.3-1/src/fortran/blas/license.txt6
-rw-r--r--2.3-1/src/fortran/blas/lsame.f87
-rw-r--r--2.3-1/src/fortran/blas/xerbla.f46
-rw-r--r--2.3-1/src/fortran/blas/zaxpy.f34
-rw-r--r--2.3-1/src/fortran/blas/zcopy.f33
-rw-r--r--2.3-1/src/fortran/blas/zdotc.f36
-rw-r--r--2.3-1/src/fortran/blas/zdotu.f36
-rw-r--r--2.3-1/src/fortran/blas/zdscal.f30
-rw-r--r--2.3-1/src/fortran/blas/zgbmv.f322
-rw-r--r--2.3-1/src/fortran/blas/zgemm.f415
-rw-r--r--2.3-1/src/fortran/blas/zgemv.f281
-rw-r--r--2.3-1/src/fortran/blas/zgerc.f157
-rw-r--r--2.3-1/src/fortran/blas/zgeru.f157
-rw-r--r--2.3-1/src/fortran/blas/zhbmv.f309
-rw-r--r--2.3-1/src/fortran/blas/zhemm.f304
-rw-r--r--2.3-1/src/fortran/blas/zhemv.f266
-rw-r--r--2.3-1/src/fortran/blas/zher.f212
-rw-r--r--2.3-1/src/fortran/blas/zher2.f249
-rw-r--r--2.3-1/src/fortran/blas/zher2k.f372
-rw-r--r--2.3-1/src/fortran/blas/zherk.f330
-rw-r--r--2.3-1/src/fortran/blas/zhpmv.f270
-rw-r--r--2.3-1/src/fortran/blas/zhpr.f217
-rw-r--r--2.3-1/src/fortran/blas/zhpr2.f251
-rw-r--r--2.3-1/src/fortran/blas/zrotg.f21
-rw-r--r--2.3-1/src/fortran/blas/zscal.f29
-rw-r--r--2.3-1/src/fortran/blas/zswap.f36
-rw-r--r--2.3-1/src/fortran/blas/zsymm.f296
-rw-r--r--2.3-1/src/fortran/blas/zsyr2k.f324
-rw-r--r--2.3-1/src/fortran/blas/zsyrk.f293
-rw-r--r--2.3-1/src/fortran/blas/ztbmv.f377
-rw-r--r--2.3-1/src/fortran/blas/ztbsv.f381
-rw-r--r--2.3-1/src/fortran/blas/ztpmv.f338
-rw-r--r--2.3-1/src/fortran/blas/ztpsv.f341
-rw-r--r--2.3-1/src/fortran/blas/ztrmm.f392
-rw-r--r--2.3-1/src/fortran/blas/ztrmv.f321
-rw-r--r--2.3-1/src/fortran/blas/ztrsm.f414
-rw-r--r--2.3-1/src/fortran/blas/ztrsv.f324
-rw-r--r--2.3-1/src/fortran/lapack/Makefile.am322
-rw-r--r--2.3-1/src/fortran/lapack/Makefile.in894
-rw-r--r--2.3-1/src/fortran/lapack/README5
-rw-r--r--2.3-1/src/fortran/lapack/dbdsqr.f742
-rw-r--r--2.3-1/src/fortran/lapack/dgebak.f188
-rw-r--r--2.3-1/src/fortran/lapack/dgebal.f322
-rw-r--r--2.3-1/src/fortran/lapack/dgebd2.f239
-rw-r--r--2.3-1/src/fortran/lapack/dgebrd.f268
-rw-r--r--2.3-1/src/fortran/lapack/dgecon.f185
-rw-r--r--2.3-1/src/fortran/lapack/dgeequ.f225
-rw-r--r--2.3-1/src/fortran/lapack/dgees.f434
-rw-r--r--2.3-1/src/fortran/lapack/dgeesx.f527
-rw-r--r--2.3-1/src/fortran/lapack/dgeev.f423
-rw-r--r--2.3-1/src/fortran/lapack/dgegs.f438
-rw-r--r--2.3-1/src/fortran/lapack/dgehd2.f149
-rw-r--r--2.3-1/src/fortran/lapack/dgehrd.f273
-rw-r--r--2.3-1/src/fortran/lapack/dgelq2.f121
-rw-r--r--2.3-1/src/fortran/lapack/dgelqf.f195
-rw-r--r--2.3-1/src/fortran/lapack/dgels.f422
-rw-r--r--2.3-1/src/fortran/lapack/dgelss.f617
-rw-r--r--2.3-1/src/fortran/lapack/dgelsx.f349
-rw-r--r--2.3-1/src/fortran/lapack/dgelsy.f391
-rw-r--r--2.3-1/src/fortran/lapack/dgeql2.f122
-rw-r--r--2.3-1/src/fortran/lapack/dgeqlf.f213
-rw-r--r--2.3-1/src/fortran/lapack/dgeqp3.f287
-rw-r--r--2.3-1/src/fortran/lapack/dgeqpf.f231
-rw-r--r--2.3-1/src/fortran/lapack/dgeqr2.f121
-rw-r--r--2.3-1/src/fortran/lapack/dgeqrf.f196
-rw-r--r--2.3-1/src/fortran/lapack/dgerfs.f336
-rw-r--r--2.3-1/src/fortran/lapack/dgerq2.f122
-rw-r--r--2.3-1/src/fortran/lapack/dgerqf.f213
-rw-r--r--2.3-1/src/fortran/lapack/dgesc2.f132
-rw-r--r--2.3-1/src/fortran/lapack/dgesv.f107
-rw-r--r--2.3-1/src/fortran/lapack/dgesvd.f3401
-rw-r--r--2.3-1/src/fortran/lapack/dgesvx.f479
-rw-r--r--2.3-1/src/fortran/lapack/dgetc2.f146
-rw-r--r--2.3-1/src/fortran/lapack/dgetf2.f147
-rw-r--r--2.3-1/src/fortran/lapack/dgetrf.f159
-rw-r--r--2.3-1/src/fortran/lapack/dgetri.f192
-rw-r--r--2.3-1/src/fortran/lapack/dgetrs.f149
-rw-r--r--2.3-1/src/fortran/lapack/dggbak.f220
-rw-r--r--2.3-1/src/fortran/lapack/dggbal.f469
-rw-r--r--2.3-1/src/fortran/lapack/dgges.f550
-rw-r--r--2.3-1/src/fortran/lapack/dggev.f489
-rw-r--r--2.3-1/src/fortran/lapack/dgghrd.f264
-rw-r--r--2.3-1/src/fortran/lapack/dhgeqz.f1243
-rw-r--r--2.3-1/src/fortran/lapack/dhseqr.f407
-rw-r--r--2.3-1/src/fortran/lapack/disnan.f33
-rw-r--r--2.3-1/src/fortran/lapack/dlabad.f55
-rw-r--r--2.3-1/src/fortran/lapack/dlabrd.f290
-rw-r--r--2.3-1/src/fortran/lapack/dlacn2.f214
-rw-r--r--2.3-1/src/fortran/lapack/dlacon.f205
-rw-r--r--2.3-1/src/fortran/lapack/dlacpy.f87
-rw-r--r--2.3-1/src/fortran/lapack/dladiv.f62
-rw-r--r--2.3-1/src/fortran/lapack/dlae2.f123
-rw-r--r--2.3-1/src/fortran/lapack/dlaev2.f169
-rw-r--r--2.3-1/src/fortran/lapack/dlaexc.f354
-rw-r--r--2.3-1/src/fortran/lapack/dlag2.f300
-rw-r--r--2.3-1/src/fortran/lapack/dlagv2.f287
-rw-r--r--2.3-1/src/fortran/lapack/dlahqr.f501
-rw-r--r--2.3-1/src/fortran/lapack/dlahr2.f238
-rw-r--r--2.3-1/src/fortran/lapack/dlahrd.f207
-rw-r--r--2.3-1/src/fortran/lapack/dlaic1.f292
-rw-r--r--2.3-1/src/fortran/lapack/dlaisnan.f41
-rw-r--r--2.3-1/src/fortran/lapack/dlaln2.f507
-rw-r--r--2.3-1/src/fortran/lapack/dlamch.f857
-rw-r--r--2.3-1/src/fortran/lapack/dlange.f144
-rw-r--r--2.3-1/src/fortran/lapack/dlanhs.f141
-rw-r--r--2.3-1/src/fortran/lapack/dlansp.f196
-rw-r--r--2.3-1/src/fortran/lapack/dlanst.f124
-rw-r--r--2.3-1/src/fortran/lapack/dlansy.f173
-rw-r--r--2.3-1/src/fortran/lapack/dlantr.f276
-rw-r--r--2.3-1/src/fortran/lapack/dlanv2.f205
-rw-r--r--2.3-1/src/fortran/lapack/dlapmt.f136
-rw-r--r--2.3-1/src/fortran/lapack/dlapy2.f53
-rw-r--r--2.3-1/src/fortran/lapack/dlapy3.f56
-rw-r--r--2.3-1/src/fortran/lapack/dlaqge.f154
-rw-r--r--2.3-1/src/fortran/lapack/dlaqp2.f175
-rw-r--r--2.3-1/src/fortran/lapack/dlaqps.f259
-rw-r--r--2.3-1/src/fortran/lapack/dlaqr0.f642
-rw-r--r--2.3-1/src/fortran/lapack/dlaqr1.f97
-rw-r--r--2.3-1/src/fortran/lapack/dlaqr2.f551
-rw-r--r--2.3-1/src/fortran/lapack/dlaqr3.f561
-rw-r--r--2.3-1/src/fortran/lapack/dlaqr4.f640
-rw-r--r--2.3-1/src/fortran/lapack/dlaqr5.f812
-rw-r--r--2.3-1/src/fortran/lapack/dlarf.f115
-rw-r--r--2.3-1/src/fortran/lapack/dlarfb.f587
-rw-r--r--2.3-1/src/fortran/lapack/dlarfg.f137
-rw-r--r--2.3-1/src/fortran/lapack/dlarft.f217
-rw-r--r--2.3-1/src/fortran/lapack/dlarfx.f638
-rw-r--r--2.3-1/src/fortran/lapack/dlartg.f145
-rw-r--r--2.3-1/src/fortran/lapack/dlarz.f152
-rw-r--r--2.3-1/src/fortran/lapack/dlarzb.f220
-rw-r--r--2.3-1/src/fortran/lapack/dlarzt.f184
-rw-r--r--2.3-1/src/fortran/lapack/dlas2.f121
-rw-r--r--2.3-1/src/fortran/lapack/dlascl.f267
-rw-r--r--2.3-1/src/fortran/lapack/dlaset.f114
-rw-r--r--2.3-1/src/fortran/lapack/dlasq1.f148
-rw-r--r--2.3-1/src/fortran/lapack/dlasq2.f448
-rw-r--r--2.3-1/src/fortran/lapack/dlasq3.f295
-rw-r--r--2.3-1/src/fortran/lapack/dlasq4.f329
-rw-r--r--2.3-1/src/fortran/lapack/dlasq5.f195
-rw-r--r--2.3-1/src/fortran/lapack/dlasq6.f175
-rw-r--r--2.3-1/src/fortran/lapack/dlasr.f361
-rw-r--r--2.3-1/src/fortran/lapack/dlasrt.f243
-rw-r--r--2.3-1/src/fortran/lapack/dlassq.f88
-rw-r--r--2.3-1/src/fortran/lapack/dlasv2.f249
-rw-r--r--2.3-1/src/fortran/lapack/dlaswp.f119
-rw-r--r--2.3-1/src/fortran/lapack/dlasy2.f381
-rw-r--r--2.3-1/src/fortran/lapack/dlasyf.f587
-rw-r--r--2.3-1/src/fortran/lapack/dlatdf.f237
-rw-r--r--2.3-1/src/fortran/lapack/dlatrd.f258
-rw-r--r--2.3-1/src/fortran/lapack/dlatrs.f701
-rw-r--r--2.3-1/src/fortran/lapack/dlatrz.f127
-rw-r--r--2.3-1/src/fortran/lapack/dlatzm.f142
-rw-r--r--2.3-1/src/fortran/lapack/dlazq3.f302
-rw-r--r--2.3-1/src/fortran/lapack/dlazq4.f330
-rw-r--r--2.3-1/src/fortran/lapack/dopgtr.f160
-rw-r--r--2.3-1/src/fortran/lapack/dorg2l.f127
-rw-r--r--2.3-1/src/fortran/lapack/dorg2r.f129
-rw-r--r--2.3-1/src/fortran/lapack/dorgbr.f244
-rw-r--r--2.3-1/src/fortran/lapack/dorghr.f164
-rw-r--r--2.3-1/src/fortran/lapack/dorgl2.f133
-rw-r--r--2.3-1/src/fortran/lapack/dorglq.f215
-rw-r--r--2.3-1/src/fortran/lapack/dorgql.f222
-rw-r--r--2.3-1/src/fortran/lapack/dorgqr.f216
-rw-r--r--2.3-1/src/fortran/lapack/dorgr2.f131
-rw-r--r--2.3-1/src/fortran/lapack/dorgrq.f222
-rw-r--r--2.3-1/src/fortran/lapack/dorgtr.f183
-rw-r--r--2.3-1/src/fortran/lapack/dorm2l.f193
-rw-r--r--2.3-1/src/fortran/lapack/dorm2r.f197
-rw-r--r--2.3-1/src/fortran/lapack/dormbr.f281
-rw-r--r--2.3-1/src/fortran/lapack/dormhr.f201
-rw-r--r--2.3-1/src/fortran/lapack/dorml2.f197
-rw-r--r--2.3-1/src/fortran/lapack/dormlq.f267
-rw-r--r--2.3-1/src/fortran/lapack/dormql.f261
-rw-r--r--2.3-1/src/fortran/lapack/dormqr.f260
-rw-r--r--2.3-1/src/fortran/lapack/dormr2.f193
-rw-r--r--2.3-1/src/fortran/lapack/dormr3.f206
-rw-r--r--2.3-1/src/fortran/lapack/dormrq.f268
-rw-r--r--2.3-1/src/fortran/lapack/dormrz.f292
-rw-r--r--2.3-1/src/fortran/lapack/dpocon.f177
-rw-r--r--2.3-1/src/fortran/lapack/dpotf2.f167
-rw-r--r--2.3-1/src/fortran/lapack/dpotrf.f183
-rw-r--r--2.3-1/src/fortran/lapack/dpotrs.f132
-rw-r--r--2.3-1/src/fortran/lapack/dpptrf.f177
-rw-r--r--2.3-1/src/fortran/lapack/drscl.f114
-rw-r--r--2.3-1/src/fortran/lapack/dspev.f187
-rw-r--r--2.3-1/src/fortran/lapack/dspgst.f208
-rw-r--r--2.3-1/src/fortran/lapack/dspgv.f195
-rw-r--r--2.3-1/src/fortran/lapack/dsptrd.f228
-rw-r--r--2.3-1/src/fortran/lapack/dsptrf.f547
-rw-r--r--2.3-1/src/fortran/lapack/dsteqr.f500
-rw-r--r--2.3-1/src/fortran/lapack/dsterf.f364
-rw-r--r--2.3-1/src/fortran/lapack/dsycon.f165
-rw-r--r--2.3-1/src/fortran/lapack/dsyev.f211
-rw-r--r--2.3-1/src/fortran/lapack/dsysv.f174
-rw-r--r--2.3-1/src/fortran/lapack/dsytd2.f248
-rw-r--r--2.3-1/src/fortran/lapack/dsytf2.f521
-rw-r--r--2.3-1/src/fortran/lapack/dsytrd.f294
-rw-r--r--2.3-1/src/fortran/lapack/dsytrf.f287
-rw-r--r--2.3-1/src/fortran/lapack/dsytri.f312
-rw-r--r--2.3-1/src/fortran/lapack/dsytrs.f369
-rw-r--r--2.3-1/src/fortran/lapack/dtgevc.f1147
-rw-r--r--2.3-1/src/fortran/lapack/dtgex2.f581
-rw-r--r--2.3-1/src/fortran/lapack/dtgexc.f440
-rw-r--r--2.3-1/src/fortran/lapack/dtgsen.f723
-rw-r--r--2.3-1/src/fortran/lapack/dtgsy2.f956
-rw-r--r--2.3-1/src/fortran/lapack/dtgsyl.f556
-rw-r--r--2.3-1/src/fortran/lapack/dtrcon.f197
-rw-r--r--2.3-1/src/fortran/lapack/dtrevc.f980
-rw-r--r--2.3-1/src/fortran/lapack/dtrexc.f345
-rw-r--r--2.3-1/src/fortran/lapack/dtrsen.f459
-rw-r--r--2.3-1/src/fortran/lapack/dtrsyl.f913
-rw-r--r--2.3-1/src/fortran/lapack/dtrti2.f146
-rw-r--r--2.3-1/src/fortran/lapack/dtrtri.f176
-rw-r--r--2.3-1/src/fortran/lapack/dtrtrs.f147
-rw-r--r--2.3-1/src/fortran/lapack/dtzrqf.f164
-rw-r--r--2.3-1/src/fortran/lapack/dtzrzf.f244
-rw-r--r--2.3-1/src/fortran/lapack/dzsum1.f81
-rw-r--r--2.3-1/src/fortran/lapack/ieeeck.f147
-rw-r--r--2.3-1/src/fortran/lapack/ilaenv.f552
-rw-r--r--2.3-1/src/fortran/lapack/iparmq.f253
-rw-r--r--2.3-1/src/fortran/lapack/izmax1.f95
-rw-r--r--2.3-1/src/fortran/lapack/lapack_f/lapack.def306
-rw-r--r--2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.suobin0 -> 3072 bytes
-rw-r--r--2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.vfproj352
-rw-r--r--2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj837
-rw-r--r--2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj.filters1782
-rw-r--r--2.3-1/src/fortran/lapack/lsame.f87
-rw-r--r--2.3-1/src/fortran/lapack/slamch.f857
-rw-r--r--2.3-1/src/fortran/lapack/xerbla.f45
-rw-r--r--2.3-1/src/fortran/lapack/zbdsqr.f742
-rw-r--r--2.3-1/src/fortran/lapack/zdrot.f96
-rw-r--r--2.3-1/src/fortran/lapack/zdrscl.f114
-rw-r--r--2.3-1/src/fortran/lapack/zgebak.f189
-rw-r--r--2.3-1/src/fortran/lapack/zgebal.f330
-rw-r--r--2.3-1/src/fortran/lapack/zgebd2.f250
-rw-r--r--2.3-1/src/fortran/lapack/zgebrd.f268
-rw-r--r--2.3-1/src/fortran/lapack/zgecon.f193
-rw-r--r--2.3-1/src/fortran/lapack/zgees.f324
-rw-r--r--2.3-1/src/fortran/lapack/zgeev.f396
-rw-r--r--2.3-1/src/fortran/lapack/zgehd2.f148
-rw-r--r--2.3-1/src/fortran/lapack/zgehrd.f273
-rw-r--r--2.3-1/src/fortran/lapack/zgelq2.f123
-rw-r--r--2.3-1/src/fortran/lapack/zgelqf.f195
-rw-r--r--2.3-1/src/fortran/lapack/zgelsy.f385
-rw-r--r--2.3-1/src/fortran/lapack/zgeqp3.f293
-rw-r--r--2.3-1/src/fortran/lapack/zgeqpf.f234
-rw-r--r--2.3-1/src/fortran/lapack/zgeqr2.f121
-rw-r--r--2.3-1/src/fortran/lapack/zgeqrf.f196
-rw-r--r--2.3-1/src/fortran/lapack/zgesc2.f133
-rw-r--r--2.3-1/src/fortran/lapack/zgesvd.f3602
-rw-r--r--2.3-1/src/fortran/lapack/zgetc2.f145
-rw-r--r--2.3-1/src/fortran/lapack/zgetf2.f148
-rw-r--r--2.3-1/src/fortran/lapack/zgetrf.f159
-rw-r--r--2.3-1/src/fortran/lapack/zgetri.f193
-rw-r--r--2.3-1/src/fortran/lapack/zgetrs.f149
-rw-r--r--2.3-1/src/fortran/lapack/zggbak.f220
-rw-r--r--2.3-1/src/fortran/lapack/zggbal.f482
-rw-r--r--2.3-1/src/fortran/lapack/zgges.f477
-rw-r--r--2.3-1/src/fortran/lapack/zggev.f454
-rw-r--r--2.3-1/src/fortran/lapack/zgghrd.f264
-rw-r--r--2.3-1/src/fortran/lapack/zheev.f218
-rw-r--r--2.3-1/src/fortran/lapack/zhetd2.f258
-rw-r--r--2.3-1/src/fortran/lapack/zhetrd.f296
-rw-r--r--2.3-1/src/fortran/lapack/zhgeqz.f759
-rw-r--r--2.3-1/src/fortran/lapack/zhseqr.f395
-rw-r--r--2.3-1/src/fortran/lapack/zlabrd.f328
-rw-r--r--2.3-1/src/fortran/lapack/zlacgv.f60
-rw-r--r--2.3-1/src/fortran/lapack/zlacn2.f221
-rw-r--r--2.3-1/src/fortran/lapack/zlacon.f212
-rw-r--r--2.3-1/src/fortran/lapack/zlacpy.f90
-rw-r--r--2.3-1/src/fortran/lapack/zladiv.f46
-rw-r--r--2.3-1/src/fortran/lapack/zlahqr.f470
-rw-r--r--2.3-1/src/fortran/lapack/zlahr2.f240
-rw-r--r--2.3-1/src/fortran/lapack/zlahrd.f213
-rw-r--r--2.3-1/src/fortran/lapack/zlaic1.f295
-rw-r--r--2.3-1/src/fortran/lapack/zlange.f145
-rw-r--r--2.3-1/src/fortran/lapack/zlanhe.f187
-rw-r--r--2.3-1/src/fortran/lapack/zlanhs.f142
-rw-r--r--2.3-1/src/fortran/lapack/zlaqp2.f179
-rw-r--r--2.3-1/src/fortran/lapack/zlaqps.f266
-rw-r--r--2.3-1/src/fortran/lapack/zlaqr0.f601
-rw-r--r--2.3-1/src/fortran/lapack/zlaqr1.f97
-rw-r--r--2.3-1/src/fortran/lapack/zlaqr2.f437
-rw-r--r--2.3-1/src/fortran/lapack/zlaqr3.f448
-rw-r--r--2.3-1/src/fortran/lapack/zlaqr4.f602
-rw-r--r--2.3-1/src/fortran/lapack/zlaqr5.f809
-rw-r--r--2.3-1/src/fortran/lapack/zlarf.f120
-rw-r--r--2.3-1/src/fortran/lapack/zlarfb.f608
-rw-r--r--2.3-1/src/fortran/lapack/zlarfg.f145
-rw-r--r--2.3-1/src/fortran/lapack/zlarft.f224
-rw-r--r--2.3-1/src/fortran/lapack/zlarfx.f641
-rw-r--r--2.3-1/src/fortran/lapack/zlartg.f195
-rw-r--r--2.3-1/src/fortran/lapack/zlarz.f157
-rw-r--r--2.3-1/src/fortran/lapack/zlarzb.f234
-rw-r--r--2.3-1/src/fortran/lapack/zlarzt.f186
-rw-r--r--2.3-1/src/fortran/lapack/zlascl.f267
-rw-r--r--2.3-1/src/fortran/lapack/zlaset.f114
-rw-r--r--2.3-1/src/fortran/lapack/zlasr.f363
-rw-r--r--2.3-1/src/fortran/lapack/zlassq.f101
-rw-r--r--2.3-1/src/fortran/lapack/zlaswp.f119
-rw-r--r--2.3-1/src/fortran/lapack/zlatdf.f241
-rw-r--r--2.3-1/src/fortran/lapack/zlatrd.f279
-rw-r--r--2.3-1/src/fortran/lapack/zlatrs.f879
-rw-r--r--2.3-1/src/fortran/lapack/zlatrz.f133
-rw-r--r--2.3-1/src/fortran/lapack/zpotf2.f174
-rw-r--r--2.3-1/src/fortran/lapack/zpotrf.f186
-rw-r--r--2.3-1/src/fortran/lapack/zrot.f91
-rw-r--r--2.3-1/src/fortran/lapack/zsteqr.f503
-rw-r--r--2.3-1/src/fortran/lapack/ztgevc.f633
-rw-r--r--2.3-1/src/fortran/lapack/ztgex2.f265
-rw-r--r--2.3-1/src/fortran/lapack/ztgexc.f206
-rw-r--r--2.3-1/src/fortran/lapack/ztgsen.f652
-rw-r--r--2.3-1/src/fortran/lapack/ztgsy2.f361
-rw-r--r--2.3-1/src/fortran/lapack/ztgsyl.f575
-rw-r--r--2.3-1/src/fortran/lapack/ztrevc.f386
-rw-r--r--2.3-1/src/fortran/lapack/ztrexc.f162
-rw-r--r--2.3-1/src/fortran/lapack/ztrsen.f359
-rw-r--r--2.3-1/src/fortran/lapack/ztrsyl.f365
-rw-r--r--2.3-1/src/fortran/lapack/ztrti2.f146
-rw-r--r--2.3-1/src/fortran/lapack/ztrtri.f177
-rw-r--r--2.3-1/src/fortran/lapack/ztzrzf.f244
-rw-r--r--2.3-1/src/fortran/lapack/zung2l.f128
-rw-r--r--2.3-1/src/fortran/lapack/zung2r.f130
-rw-r--r--2.3-1/src/fortran/lapack/zungbr.f245
-rw-r--r--2.3-1/src/fortran/lapack/zunghr.f165
-rw-r--r--2.3-1/src/fortran/lapack/zungl2.f136
-rw-r--r--2.3-1/src/fortran/lapack/zunglq.f215
-rw-r--r--2.3-1/src/fortran/lapack/zungql.f222
-rw-r--r--2.3-1/src/fortran/lapack/zungqr.f216
-rw-r--r--2.3-1/src/fortran/lapack/zungtr.f184
-rw-r--r--2.3-1/src/fortran/lapack/zunm2r.f201
-rw-r--r--2.3-1/src/fortran/lapack/zunmbr.f288
-rw-r--r--2.3-1/src/fortran/lapack/zunml2.f205
-rw-r--r--2.3-1/src/fortran/lapack/zunmlq.f267
-rw-r--r--2.3-1/src/fortran/lapack/zunmqr.f260
-rw-r--r--2.3-1/src/fortran/lapack/zunmr3.f212
-rw-r--r--2.3-1/src/fortran/lapack/zunmrz.f296
-rw-r--r--2.3-1/tests/unit_tests/Moebius.dia.ref3200
-rw-r--r--2.3-1/tests/unit_tests/Moebius.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Convol.sci124
-rw-r--r--2.3-1/tests/unit_tests/double/test_Convol.sci.dia.ref2919
-rw-r--r--2.3-1/tests/unit_tests/double/test_Convol.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Det.sci15
-rw-r--r--2.3-1/tests/unit_tests/double/test_Det.sci.dia.ref670
-rw-r--r--2.3-1/tests/unit_tests/double/test_Det.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Disp.sci13
-rw-r--r--2.3-1/tests/unit_tests/double/test_Disp.sci.dia.ref686
-rw-r--r--2.3-1/tests/unit_tests/double/test_Disp.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Expm.sci9
-rw-r--r--2.3-1/tests/unit_tests/double/test_Expm.sci.dia.ref583
-rw-r--r--2.3-1/tests/unit_tests/double/test_Expm.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_FFTShift.sci37
-rw-r--r--2.3-1/tests/unit_tests/double/test_FFTShift.sci.dia.ref1669
-rw-r--r--2.3-1/tests/unit_tests/double/test_FFTShift.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Fft.sci172
-rw-r--r--2.3-1/tests/unit_tests/double/test_Fft.sci.dia.ref7610
-rw-r--r--2.3-1/tests/unit_tests/double/test_Fft.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Find.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_Find.sci.dia.ref1187
-rw-r--r--2.3-1/tests/unit_tests/double/test_Find.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_IFFT.sci89
-rw-r--r--2.3-1/tests/unit_tests/double/test_IFFT.sci.dia.ref4472
-rw-r--r--2.3-1/tests/unit_tests/double/test_IFFT.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Length.sci32
-rw-r--r--2.3-1/tests/unit_tests/double/test_Length.sci.dia.ref1229
-rw-r--r--2.3-1/tests/unit_tests/double/test_Length.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Lev.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_Lev.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Meanf.sci48
-rw-r--r--2.3-1/tests/unit_tests/double/test_Meanf.sci.dia.ref2615
-rw-r--r--2.3-1/tests/unit_tests/double/test_Meanf.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpApex.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpApex.sci.dia.ref661
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpApex.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpCc.sci46
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpCc.sci.dia.ref1413
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpCc.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpColon.sci41
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpColon.sci.dia.ref1249
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpColon.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotApex.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotApex.sci.dia.ref661
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotApex.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci30
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.dia.ref1261
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotHat.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotHat.sci.dia.ref1293
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotHat.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotSlash.sci26
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.dia.ref1189
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotStar.sci26
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotStar.sci.dia.ref1189
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpDotStar.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpEqual.sci24
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpEqual.sci.dia.ref801
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpEqual.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpExt.sci25
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpExt.sci.dia.ref1052
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpExt.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpHat.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpHat.sci.dia.ref1197
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpHat.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpIns.sci129
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpIns.sci.dia.ref3885
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpIns.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogAnd.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.dia.ref1203
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogEq.sci33
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogEq.sci.dia.ref1303
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogEq.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogGe.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogGe.sci.dia.ref990
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogGe.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogGt.sci30
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogGt.sci.dia.ref1008
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogGt.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogLe.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogLe.sci.dia.ref990
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogLe.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogLt.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogLt.sci.dia.ref990
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogLt.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogNe.sci33
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogNe.sci.dia.ref1303
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogNe.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogNot.sci23
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogNot.sci.dia.ref1105
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogNot.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogOr.sci29
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogOr.sci.dia.ref1203
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpLogOr.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpMinus.sci45
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpMinus.sci.dia.ref1573
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpMinus.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpPlus.sci32
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpPlus.sci.dia.ref1258
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpPlus.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpRc.sci45
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpRc.sci.dia.ref1355
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpRc.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpSlash.sci32
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpSlash.sci.dia.ref1533
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpSlash.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpStar.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpStar.sci.dia.ref1535
-rw-r--r--2.3-1/tests/unit_tests/double/test_OpStar.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Size.sci41
-rw-r--r--2.3-1/tests/unit_tests/double/test_Size.sci.dia.ref1637
-rw-r--r--2.3-1/tests/unit_tests/double/test_Size.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Spec.sci41
-rw-r--r--2.3-1/tests/unit_tests/double/test_Spec.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Stdevf.sci45
-rw-r--r--2.3-1/tests/unit_tests/double/test_Stdevf.sci.dia.ref2672
-rw-r--r--2.3-1/tests/unit_tests/double/test_Stdevf.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Trace.sci13
-rw-r--r--2.3-1/tests/unit_tests/double/test_Trace.sci.dia.ref670
-rw-r--r--2.3-1/tests/unit_tests/double/test_Trace.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_Type.sci8
-rw-r--r--2.3-1/tests/unit_tests/double/test_Type.sci.dia.ref463
-rw-r--r--2.3-1/tests/unit_tests/double/test_Type.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_abs.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_abs.sci.dia.ref661
-rw-r--r--2.3-1/tests/unit_tests/double/test_abs.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_acos.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_acos.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_acos.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_acosh.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_acosh.sci.dia.ref671
-rw-r--r--2.3-1/tests/unit_tests/double/test_acosh.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_asin.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_asin.sci.dia.ref681
-rw-r--r--2.3-1/tests/unit_tests/double/test_asin.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_asinh.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_asinh.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_asinh.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_atan.sci14
-rw-r--r--2.3-1/tests/unit_tests/double/test_atan.sci.dia.ref758
-rw-r--r--2.3-1/tests/unit_tests/double/test_atan.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_atanh.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_atanh.sci.dia.ref681
-rw-r--r--2.3-1/tests/unit_tests/double/test_atanh.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_ceil.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_ceil.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_ceil.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_chol.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_chol.sci.dia.ref693
-rw-r--r--2.3-1/tests/unit_tests/double/test_chol.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_conj.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_conj.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_conj.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_cos.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_cos.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_cos.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_cosh.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_cosh.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_cosh.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_exp.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_exp.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_exp.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_eye.sci14
-rw-r--r--2.3-1/tests/unit_tests/double/test_eye.sci.dia.ref747
-rw-r--r--2.3-1/tests/unit_tests/double/test_eye.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_fix.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_fix.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_fix.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_floor.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_floor.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_floor.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_imag.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_imag.sci.dia.ref661
-rw-r--r--2.3-1/tests/unit_tests/double/test_imag.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_int.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_int.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_int.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_inv.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_inv.sci.dia.ref629
-rw-r--r--2.3-1/tests/unit_tests/double/test_inv.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_isnan.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_isnan.sci.dia.ref661
-rw-r--r--2.3-1/tests/unit_tests/double/test_isnan.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_log.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_log.sci.dia.ref671
-rw-r--r--2.3-1/tests/unit_tests/double/test_log.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_log10.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_log10.sci.dia.ref671
-rw-r--r--2.3-1/tests/unit_tests/double/test_log10.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_log1p.sci12
-rw-r--r--2.3-1/tests/unit_tests/double/test_log1p.sci.dia.ref646
-rw-r--r--2.3-1/tests/unit_tests/double/test_log1p.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_max.sci32
-rw-r--r--2.3-1/tests/unit_tests/double/test_max.sci.dia.ref1067
-rw-r--r--2.3-1/tests/unit_tests/double/test_max.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_mean.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_mean.sci.dia.ref1137
-rw-r--r--2.3-1/tests/unit_tests/double/test_mean.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_min.sci32
-rw-r--r--2.3-1/tests/unit_tests/double/test_min.sci.dia.ref1067
-rw-r--r--2.3-1/tests/unit_tests/double/test_min.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_ones.sci14
-rw-r--r--2.3-1/tests/unit_tests/double/test_ones.sci.dia.ref747
-rw-r--r--2.3-1/tests/unit_tests/double/test_ones.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_prod.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_prod.sci.dia.ref1137
-rw-r--r--2.3-1/tests/unit_tests/double/test_prod.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_rand.sci14
-rw-r--r--2.3-1/tests/unit_tests/double/test_rand.sci.dia.ref757
-rw-r--r--2.3-1/tests/unit_tests/double/test_rand.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_real.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_real.sci.dia.ref661
-rw-r--r--2.3-1/tests/unit_tests/double/test_real.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_round.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_round.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_round.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_sign.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_sign.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_sign.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_sin.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_sin.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_sin.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_sinh.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_sinh.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_sinh.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_sqrt.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_sqrt.sci.dia.ref671
-rw-r--r--2.3-1/tests/unit_tests/double/test_sqrt.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_st_deviation.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_st_deviation.sci.dia.ref1144
-rw-r--r--2.3-1/tests/unit_tests/double/test_st_deviation.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_sum.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_sum.sci.dia.ref1137
-rw-r--r--2.3-1/tests/unit_tests/double/test_sum.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_tanh.sci11
-rw-r--r--2.3-1/tests/unit_tests/double/test_tanh.sci.dia.ref623
-rw-r--r--2.3-1/tests/unit_tests/double/test_tanh.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_variance.sci31
-rw-r--r--2.3-1/tests/unit_tests/double/test_variance.sci.dia.ref969
-rw-r--r--2.3-1/tests/unit_tests/double/test_variance.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/double/test_zeros.sci14
-rw-r--r--2.3-1/tests/unit_tests/double/test_zeros.sci.dia.ref747
-rw-r--r--2.3-1/tests/unit_tests/double/test_zeros.sci.tst22
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Convol.sci125
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Det.sci16
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Disp.sci14
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Expm.sci10
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_FFTShift.sci38
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Fft.sci173
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Find.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_IFFT.sci90
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Length.sci33
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Lev.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Meanf.sci49
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpApex.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpCc.sci47
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpColon.sci42
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpDotApex.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpDotBackSlas.sci31
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpDotHat.sci30
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpDotSlash.sci27
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpDotStar.sci27
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpEqual.sci25
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpExt.sci26
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpHat.sci30
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpIns.sci130
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogAnd.sci38
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogEq.sci34
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogGe.sci30
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogGt.sci31
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogLe.sci30
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogLt.sci30
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogNe.sci34
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogNot.sci24
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpLogOr.sci37
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpMinus.sci46
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpPlus.sci49
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpRc.sci46
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpSlash.sci33
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_OpStar.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Size.sci42
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Spec.sci42
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Stdevf.sci46
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Trace.sci14
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_Type.sci9
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_abs.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_acos.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_acosh.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_asin.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_asinh.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_atan.sci15
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_atanh.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_ceil.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_chol.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_conj.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_cos.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_cosh.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_exp.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_eye.sci15
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_fix.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_floor.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_imag.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_int.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_inv.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_isnan.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_log.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_log10.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_log1p.sci13
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_max.sci17
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_mean.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_min.sci19
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_ones.sci15
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_prod.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_rand.sci15
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_real.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_round.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_sign.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_sin.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_sinh.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_sqrt.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_st_deviation.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_sum.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_tanh.sci12
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_variance.sci32
-rw-r--r--2.3-1/tests/unit_tests/float/test_float_zeros.sci15
-rw-r--r--2.3-1/tests/unit_tests/test000_TrigonIdentity/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci30
-rw-r--r--2.3-1/tests/unit_tests/test001_LinearRegression/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci56
-rw-r--r--2.3-1/tests/unit_tests/test002_Symbols/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci21
-rw-r--r--2.3-1/tests/unit_tests/test003_VerySimple/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test003_VerySimple/scilabcode/mainfunction.sci10
-rw-r--r--2.3-1/tests/unit_tests/test004_Filter/scilabcode/high_pass.sci16
-rw-r--r--2.3-1/tests/unit_tests/test004_Filter/scilabcode/main.sci15
-rw-r--r--2.3-1/tests/unit_tests/test004_LinearCombination/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test004_LinearCombination/scilabcode/mainfunction.sci16
-rw-r--r--2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/LinComb.sci16
-rw-r--r--2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/mainfunction.sci21
-rw-r--r--2.3-1/tests/unit_tests/test011_InsExtfunctions/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test011_InsExtfunctions/scilabcode/mainfunction.sci24
-rw-r--r--2.3-1/tests/unit_tests/test012_OpMinus/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test012_OpMinus/scilabcode/mainfunction.sci10
-rw-r--r--2.3-1/tests/unit_tests/test013_TestOpRcCC/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test013_TestOpRcCC/scilabcode/mainfunction.sci15
-rw-r--r--2.3-1/tests/unit_tests/test018_NestedWhile/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test018_NestedWhile/scilabcode/mainfunction.sci19
-rw-r--r--2.3-1/tests/unit_tests/test024_test_if_pi/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test024_test_if_pi/scilabcode/mainfunction.sci24
-rw-r--r--2.3-1/tests/unit_tests/test038_FindI2O1Float/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test038_FindI2O1Float/scilabcode/mainfunction.sci57
-rw-r--r--2.3-1/tests/unit_tests/test061_SumShortTest/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test061_SumShortTest/scilabcode/mainfunction.sci22
-rw-r--r--2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/scilabcode/mainfunction.sci43
-rw-r--r--2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun1.sci10
-rw-r--r--2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun2.sci14
-rw-r--r--2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/mainfunction.sci12
-rw-r--r--2.3-1/tests/unit_tests/test088_SimpleFor/launchConversion.sci4
-rw-r--r--2.3-1/tests/unit_tests/test088_SimpleFor/scilabcode/mainfunction.sci17
-rw-r--r--2.3-1/tests/unit_tests/test089_SimpleFor/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test089_SimpleFor/scilabcode/mainfunction.sci17
-rw-r--r--2.3-1/tests/unit_tests/test100_recursivefunctions/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/IterativePower.sci17
-rw-r--r--2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/RecursivePower.sci23
-rw-r--r--2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/mainfunction.sci57
-rw-r--r--2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/scilabcode/mainfunction.sci18
-rw-r--r--2.3-1/tests/unit_tests/test104_ScalarProduct/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test104_ScalarProduct/scilabcode/mainfunction.sci10
-rw-r--r--2.3-1/tests/unit_tests/test200_malloc/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test200_malloc/scilabcode/mainfunction.sci18
-rw-r--r--2.3-1/tests/unit_tests/test200_malloc/scilabcode/myinit.sci13
-rw-r--r--2.3-1/tests/unit_tests/test200_malloc/scilabcode/myzeros.sci11
-rw-r--r--2.3-1/tests/unit_tests/test301_cchirp/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test301_cchirp/scilabcode/mainfunction.sci59
-rw-r--r--2.3-1/tests/unit_tests/test301_cchirp/scilabcode/myconvol.sci31
-rw-r--r--2.3-1/tests/unit_tests/test305_Moebius/Moebius.sci66
-rw-r--r--2.3-1/tests/unit_tests/test305_Moebius/XYgrid.sci32
-rw-r--r--2.3-1/tests/unit_tests/test600_SimpleFindDouble/launchConversion.sci5
-rw-r--r--2.3-1/tests/unit_tests/test600_SimpleFindDouble/scilabcode/mainfunction.sci17
-rw-r--r--2.3-1/tests/unit_tests/test9999_WorkingDir/scilabcode/mainfunction.sci59
-rw-r--r--2.3-1/tests/unit_tests/testArduino/analog_check.sci7
-rw-r--r--2.3-1/tests/unit_tests/testArduino/analog_in_check_volt.sci4
-rw-r--r--2.3-1/tests/unit_tests/testArduino/blink_13.sci6
-rw-r--r--2.3-1/tests/unit_tests/testArduino/board_test_release2.sci11
-rw-r--r--2.3-1/tests/unit_tests/testArduino/digital_in_check.sci10
-rw-r--r--2.3-1/tests/unit_tests/testArduino/i2c_master.sci9
-rw-r--r--2.3-1/tests/unit_tests/test_CDG/D2Q9.sci189
-rw-r--r--2.3-1/tests/unit_tests/test_CDG/cs.sci25
-rw-r--r--2.3-1/tests/unit_tests/test_hypermat.sci47
-rw-r--r--2.3-1/tests/unit_tests/test_hypermat.sci.dia.ref1455
-rw-r--r--2.3-1/tests/unit_tests/test_hypermat.sci.tst22
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cv.h82
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cv.hpp52
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.h65
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.hpp51
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cvwimage.h46
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.h53
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.hpp52
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cxeigen.hpp48
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/cxmisc.h48
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/highgui.h50
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv/ml.h48
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d/calib3d.hpp811
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/contrib.hpp998
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/detection_based_tracker.hpp106
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/hybridtracker.hpp220
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/openfabmap.hpp405
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/retina.hpp354
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/affine.hpp513
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/core.hpp4924
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/core_c.h1886
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/cuda_devptrs.hpp199
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/devmem2d.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/eigen.hpp280
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/gpumat.hpp564
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/internal.hpp795
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/mat.hpp2625
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop.hpp284
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop_deprecated.hpp300
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/operations.hpp4123
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/types_c.h1923
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/version.hpp72
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/core/wimage.hpp621
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/features2d.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/features2d/features2d.hpp1616
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/all_indices.h155
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/allocator.h188
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/any.h318
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/autotuned_index.h595
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/composite_index.h201
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/config.h38
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/defines.h176
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dist.h937
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dummy.h45
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dynamic_bitset.h159
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann.hpp427
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann_base.hpp301
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/general.h52
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/ground_truth.h94
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hdf5.h231
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/heap.h165
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hierarchical_clustering_index.h776
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/index_testing.h318
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_index.h628
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_single_index.h641
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kmeans_index.h1133
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/linear_index.h139
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/logger.h130
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_index.h420
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_table.h497
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/matrix.h116
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/miniflann.hpp163
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/nn_index.h184
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/object_factory.h91
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/params.h99
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/random.h133
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/result_set.h543
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/sampling.h81
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/saving.h187
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/simplex_downhill.h186
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/flann/timer.h93
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/block.hpp203
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/border_interpolate.hpp714
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/color.hpp301
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/common.hpp118
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/datamov_utils.hpp105
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/color_detail.hpp2219
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce.hpp361
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce_key_val.hpp498
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/transform_detail.hpp395
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/type_traits_detail.hpp187
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/vec_distance_detail.hpp117
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/dynamic_smem.hpp80
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/emulation.hpp138
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/filters.hpp278
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/funcattrib.hpp71
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/functional.hpp789
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/limits.hpp122
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/reduce.hpp197
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/saturate_cast.hpp284
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/scan.hpp250
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/simd_functions.hpp909
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/static_check.hpp67
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/transform.hpp67
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/type_traits.hpp82
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/utility.hpp213
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_distance.hpp224
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_math.hpp922
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_traits.hpp280
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp.hpp131
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_reduce.hpp68
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_shuffle.hpp145
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/devmem2d.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpu.hpp2530
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpumat.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/stream_accessor.hpp65
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/highgui.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/cap_ios.h171
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui.hpp255
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui_c.h660
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/ios.h49
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc.hpp1299
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc_c.h623
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/types_c.h640
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/blobtrack.hpp948
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/compat.hpp740
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/legacy.hpp3436
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/streams.hpp92
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ml.hpp41
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ml/ml.hpp2147
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/features2d.hpp155
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/gpu.hpp128
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/nonfree.hpp57
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/ocl.hpp140
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect/objdetect.hpp1073
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/matrix_operations.hpp490
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/ocl.hpp1998
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/opencv.hpp83
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/opencv_modules.hpp29
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/photo.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo.hpp91
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo_c.h69
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/autocalib.hpp65
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/blenders.hpp137
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/camera.hpp69
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/exposure_compensate.hpp106
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/matchers.hpp192
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/motion_estimators.hpp205
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/seam_finders.hpp267
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util.hpp162
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util_inl.hpp127
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers.hpp510
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers_inl.hpp765
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/stitcher.hpp174
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/warpers.hpp170
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/superres.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/superres/optical_flow.hpp76
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/superres/superres.hpp99
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ts.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_perf.hpp115
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_test.hpp360
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts.hpp638
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_gtest.h20125
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_perf.hpp618
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/video.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/video/background_segm.hpp263
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/video/tracking.hpp373
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/video/video.hpp58
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab.hpp43
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/deblurring.hpp110
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching.hpp103
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching_inl.hpp166
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/frame_source.hpp91
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/global_motion.hpp141
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/inpainting.hpp200
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/log.hpp75
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/motion_stabilizing.hpp106
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/optical_flow.hpp120
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/stabilizer.hpp187
-rw-r--r--2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/videostab.hpp48
-rw-r--r--2.3-1/thirdparty/includes/WiringPi/wiringPi.h234
-rw-r--r--2.3-1/thirdparty/includes/WiringPi/wiringSerial.h38
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libIlmImf.abin0 -> 3168218 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjasper.abin0 -> 631746 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjpeg.abin0 -> 416032 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibpng.abin0 -> 454798 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibtiff.abin0 -> 817086 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_calib3d.abin0 -> 1475852 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_contrib.abin0 -> 1975556 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_core.abin0 -> 4812140 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_features2d.abin0 -> 1458210 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_flann.abin0 -> 1229676 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_gpu.abin0 -> 941850 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_haartraining_engine.abin0 -> 924922 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_highgui.abin0 -> 616776 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_imgproc.abin0 -> 4442036 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_legacy.abin0 -> 2623770 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ml.abin0 -> 1117070 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_nonfree.abin0 -> 407046 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_objdetect.abin0 -> 999830 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ocl.abin0 -> 3368232 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_photo.abin0 -> 202340 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_stitching.abin0 -> 1122226 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_superres.abin0 -> 546078 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ts.abin0 -> 1855398 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_video.abin0 -> 626406 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_videostab.abin0 -> 527904 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libzlib.abin0 -> 167862 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/Lapack/blasplus.libbin0 -> 23128 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/Lapack/lapack.libbin0 -> 119452 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImf.libbin0 -> 30821686 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImfd.libbin0 -> 41688642 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjasper.libbin0 -> 1728614 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjpeg.libbin0 -> 808624 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libpng.libbin0 -> 1096298 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libtiff.libbin0 -> 2601558 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_calib3d2413.libbin0 -> 8149714 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_contrib2413.libbin0 -> 16512622 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_core2413.libbin0 -> 18600420 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_features2d2413.libbin0 -> 9824282 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_flann2413.libbin0 -> 9237126 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_gpu2413.libbin0 -> 4052944 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_haartraining_engine.libbin0 -> 4460472 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_highgui2413.libbin0 -> 3786262 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_imgproc2413.libbin0 -> 15578966 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_legacy2413.libbin0 -> 12106470 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ml2413.libbin0 -> 4094228 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_nonfree2413.libbin0 -> 2755892 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_objdetect2413.libbin0 -> 9044850 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ocl2413.libbin0 -> 24626172 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_photo2413.libbin0 -> 961556 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_stitching2413.libbin0 -> 9902982 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_superres2413.libbin0 -> 2607060 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ts2413.libbin0 -> 11379948 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_video2413.libbin0 -> 2636090 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_videostab2413.libbin0 -> 2836214 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/zlib.libbin0 -> 273732 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/Lapack/libblas.libbin0 -> 25800 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/Lapack/liblapack.libbin0 -> 312486 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/IlmImf.libbin0 -> 25531120 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjasper.libbin0 -> 1500168 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjpeg.libbin0 -> 696800 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libpng.libbin0 -> 980466 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libtiff.libbin0 -> 2338734 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_calib3d2413.libbin0 -> 6521202 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_contrib2413.libbin0 -> 13176010 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_core2413.libbin0 -> 14730290 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_features2d2413.libbin0 -> 7805440 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_flann2413.libbin0 -> 7382376 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_gpu2413.libbin0 -> 3357130 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_highgui2413.libbin0 -> 3142058 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_imgproc2413.libbin0 -> 12539382 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_legacy2413.libbin0 -> 9628532 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ml2413.libbin0 -> 3360184 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_nonfree2413.libbin0 -> 2191940 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_objdetect2413.libbin0 -> 7106550 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ocl2413.libbin0 -> 17881828 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_photo2413.libbin0 -> 816104 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_stitching2413.libbin0 -> 7875508 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_superres2413.libbin0 -> 2047200 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ts2413.libbin0 -> 8971116 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_video2413.libbin0 -> 2127446 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_videostab2413.libbin0 -> 2354896 bytes
-rw-r--r--2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/zlib.libbin0 -> 238394 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libIlmImf.abin0 -> 2763492 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libcblas.abin0 -> 261416 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libgfortran.abin0 -> 1569996 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libgsl.abin0 -> 11823192 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libjasper.abin0 -> 423758 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libjpeg.abin0 -> 243096 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/liblapack.abin0 -> 6869860 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_calib3d.abin0 -> 1085214 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_contrib.abin0 -> 1509928 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_core.abin0 -> 3816510 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_features2d.abin0 -> 1182146 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_flann.abin0 -> 1054510 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_gpu.abin0 -> 763098 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_highgui.abin0 -> 512558 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_imgproc.abin0 -> 3248656 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_legacy.abin0 -> 2066262 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_ml.abin0 -> 857478 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_nonfree.abin0 -> 331496 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_objdetect.abin0 -> 814754 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_ocl.abin0 -> 2814596 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_photo.abin0 -> 153324 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_stitching.abin0 -> 825842 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_superres.abin0 -> 436700 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_ts.abin0 -> 1365686 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_video.abin0 -> 465468 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libopencv_videostab.abin0 -> 439870 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libpng.abin0 -> 252546 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/librefblas.abin0 -> 441848 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libtiff.abin0 -> 541798 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libwiringPi.sobin0 -> 58044 bytes
-rw-r--r--2.3-1/thirdparty/lib/raspberrypi/libzlib.abin0 -> 120138 bytes
-rw-r--r--2.3-1/toyApplication/GuitarString.rarbin0 -> 150913 bytes
-rw-r--r--2.3-1/toyApplication/tols.m160
-rw-r--r--2.3-1/toyApplication/tolstoy.m64
-rw-r--r--2.3-1/unloader.sce14
-rw-r--r--README.md22
3975 files changed, 628776 insertions, 0 deletions
diff --git a/2.3-1/ChangeLog b/2.3-1/ChangeLog
new file mode 100644
index 00000000..7dc67122
--- /dev/null
+++ b/2.3-1/ChangeLog
@@ -0,0 +1,452 @@
+2011-05-25 Allan CORNET
+
+ * Visual Studio 2010 C++ Pro/Express support
+ * x64 target added in VS solution
+
+2007-09-07 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/auxiliaryFunctions/includes/rand.h :
+ Modification of funtions prototypes.
+ Array generation must be in a given array.
+
+2007-08-30 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/auxiliaryFunctions/pythag :
+ Add Pythag mangement for complex type.
+
+2007-07-11 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/*/Makefile.* :
+ Update Autotools version.
+ * src/configure :
+ Update Autotools version.
+
+2007-07-11 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/type/doubleComplex.c :
+ Begin complex operations. Must be improved/tested.
+
+2007-06-XX Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/acos :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/acosh :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/asin :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/asinh :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/atan :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/atanh :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/cos :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/cosh :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/exp :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/exp10 :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/log :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/log10 :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/sin :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/sinh :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/sqrt :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/tan :
+ Finalise Prototyping, add dummy code with FIXME.
+ * src/elementaryFunctions/tanh :
+ Finalise Prototyping, add dummy code with FIXME.
+
+2007-05-07 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/AuxiliaryFunctions/isnan :
+ New Nan detection function. Must be improved !
+
+2007-04-27 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/AuxiliaryFunctions/isempty :
+ [RELEASE] Ending IsEmpty implementation AND tests.
+
+2007-04-26 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/AuxiliaryFunctions/find :
+ [RELEASE] Ending Find implementation AND tests.
+
+2007-04-25 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/AuxiliaryFunctions/abs :
+ [RELEASE] Ending Absolute Value implementation AND tests.
+
+2007-04-24 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/AuxiliaryFunctions/find :
+ New find implementation.
+
+2007-04-23 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/AuxiliaryFunctions/abs :
+ New Absolute Value implementation.
+ * src/AuxiliaryFunctions/pythag :
+ New Pythagore function : sqrt(a^2 + b^2)
+
+2007-04-20 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/ElementaryFunctions/sinh :
+ [RELEASE] Ending Hyperbolic Sine implementation AND tests.
+
+2007-04-19 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/ElementaryFunctions/cosh :
+ [RELEASE] Ending Hyperbolic Cosine implementation AND tests.
+
+2007-04-18 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/ElementaryFunctions/sin :
+ [RELEASE] Ending Sine implementation AND tests.
+
+2007-04-17 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/ElementaryFunctions/cos :
+ [RELEASE] Ending Cosine implementation AND tests.
+
+2007-04-16 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test :
+ Removing tests to add it under Autotools management.
+
+2007-03-25 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/*/Makefile.am :
+ Migration to Autotools.
+ * src/elementaryFunctions/*/Makefile.in :
+ Migration to Autotools.
+
+
+2007-03-23 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/sqrt/* :
+ Adding Square Root module.
+ * src/elementaryfunctions/log/* :
+ Adding Logarithm module.
+
+2007-03-22 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/type/testFloatComplex.c :
+ Best fit C99.
+ * src/type/testFloatComplex.h :
+ Best fit C99.
+ * src/type/testDoubleComplex.c :
+ Best fit C99.
+ * src/type/testDoubleComplex.h :
+ Best fit C99.
+ * src/configure.ac :
+ Enable STD C99 compilation process.
+
+2007-03-20 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/type/Makefile :
+ Removed : delegate to AutoTools.
+ * src/type/Makefile.am :
+ Automake file.
+ * src/type/Makefile.in :
+ Automake generated file : ./configure needed.
+ * src/type/testFloatComplex.c :
+ Test Float Complex generation :
+ Assert + AutoCheck through AutoTools.
+ * src/type/testDoubleComplex.c :
+ Test Double Complex generation :
+ Assert + AutoCheck through AutoTools.
+
+2007-03-19 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test/Makefile :
+ Link with my Complex Library.
+ * src/test/testCos.c :
+ Finishing all kind of tests.
+ * src/elementaryFunctions/*/*a.c :
+ Remove StrideX and StrideY useless parameters.
+ * src/elementaryFunctions/includes/*.h :
+ Update headers with right parameters.
+ Add Dioxygen style documentation.
+
+2007-02-23 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test/*.c :
+ Better dependancies with includes.
+ * src/test/Makedile :
+ Changing includes / headers / link.
+ * src/misc :
+ _MOVED_ : Becoming includes.
+ * src/includes :
+ For general headers includings.
+ * src/auxiliaryFunctions/includes :
+ Add includes directory for profiling functions.
+ * src/auxiliaryFunctions/*/*.h :
+ Moving headers to includes.
+ * src/auxiliaryFunctions/*/*.c :
+ Better dependancies with includes.
+ * src/auxiliaryFunctions/*/Makedile :
+ Changing includes / headers / link.
+ * src/elementaryFunctions/includes :
+ Add includes directory for profiling functions.
+ * src/elementaryFunctions/*/*.h :
+ Moving headers to includes.
+ * src/elementaryFunctions/*/*.c :
+ Better dependancies with includes.
+ * src/elementaryFunctions/*/Makedile :
+ Changing includes / headers / link.
+ * src/type/doubleComplexC99.h :
+ _REMOVED_ : All declarations are put in
+ src/type/doubleComplex.h .
+ * src/type/floatComplexC99.h :
+ _REMOVED_ : All declarations are put in
+ src/type/floatComplex.h .
+
+2007-02-15 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test/testIsEmpty.c :
+ Add some tests.
+ * src/test/Makefile :
+ Some trouble with link... Better in this order !
+
+2007-02-14 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test/test*.c :
+ Add some FIXME in order to remember to code some tests.
+ * src/test/testFind.c :
+ Testing of the find function.
+ * src/test/testIsEmpty.c :
+ Testing of the isEmpty function.
+ * src/misc :
+ Create for misc includes.
+ * src/auxiliaryFunctions/find/notFound.h :
+ Moved
+ * src/misc/notFound.h :
+ Better use here.
+ * */*/Makefile :
+ Modify all Makefiles. Remove -pedantic.
+ Must be crazy to use this...
+ * src/auxiliaryFunctions/isempty :
+ IsEmpty functions implementation.
+ * src/auxiliaryFunctions/isempty/{sdcz}isEmptya.c :
+ Implementation : s(float) d(double)
+ c(floatComplex) z(doubleComplex)
+
+2007-02-13 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/tanh/ztanhs.c :
+ Fixed with C99 Complex but Scilab computation.
+ * src/elementaryFunctions/tanh/ctanhs.c :
+ Fixed with C99 Complex but Scilab computation.
+ * src/auxiliaryFunctions/find :
+ Find not null element in list.
+ * src/auxiliaryFunctions/find/{sdcz}finda.c :
+ Implementation : s(float) d(double)
+ c(floatComplex) z(doubleComplex)
+ * src/auxiliaryFunctions/find/find.h :
+ Interface.
+ * src/auxiliaryFunctions/find/notFound.h :
+ Constant if all elements are not null.
+
+2007-02-12 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/sinh/zsinhs.c
+ Fixed with C99 Complex but Scilab computation.
+ * src/elementaryFunctions/sinh/csinhs.c
+ Fixed with C99 Complex but Scilab computation.
+
+2007-02-09 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/exp/cexps.c :
+ Implementation.
+ * src/elementaryFunctions/exp/zexps.c :
+ Implementation.
+
+2007-02-08 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/auxiliaryFunctions/sign :
+ Signe of a float or double.
+ * src/auxiliaryFunctions/sign/sign.h :
+ Interface
+ * src/auxiliaryFunctions/sign/{sd}signs.c :
+ Implementation : s(float) d(double)
+
+2007-02-07 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/auxiliaryFunctions :
+ Some misc Functions used in many cases.
+
+2007-02-06 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/cosh/zcoshs.c
+ Fixed with C99 Complex but Scilab computation.
+ * src/elementaryFunctions/cosh/ccoshs.c
+ Fixed with C99 Complex but Scilab computation.
+ * src/elementaryFunctions/sin/zsins.c
+ Fixed with C99 Complex but Scilab computation.
+ * src/elementaryFunctions/sin/csins.c
+ Fixed with C99 Complex but Scilab computation.
+
+2007-02-05 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/type :
+ Add C99 compatibility. Float implementation.
+ * src/elementaryFunctions/cos/zcoss.c
+ Fixed with C99 Complex but Scilab computation.
+ * src/elementaryFunctions/cos/ccoss.c
+ Fixed with C99 Complex but Scilab computation.
+
+2007-02-02 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/type :
+ Add C99 compatibility. Double implementation.
+
+2007-01-31 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/*.c :
+ Remove Multi Complex definition.
+ * src/type/doubleComplex.h :
+ Used as C99 Complex interface or hand-made complex.
+ * src/type/floatComplex.h :
+ Used as C99 Complex interface or hand-made complex.
+ * src/*/Makefile :
+ Add -std=c99 flag for native c99 complex compilation.
+ * src/elementaryFunctions/exp :
+ Exponential functions.
+ * src/test/testExp.c :
+ Add some Exponential functions tests.
+
+2007-01-29 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/tan :
+ Tangeant functions.
+ * src/elementaryFunctions/tanh :
+ Hyperbolic Tangeant functions.
+ * src/test/testCosh.c :
+ Add some Hyperbolic Cosine tests.
+ * src/test/tesSinh.c :
+ Add some Hyperbolic Sine tests.
+ * src/test/testTan.c :
+ Add some Tangeant tests.
+ * src/test/tesTanh.c :
+ Add some Hyperbolic Tangeant tests.
+
+
+2007-01-19 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/cosh :
+ Hyperbolic Cosine functions
+ * src/elementaryFunctions/sinh :
+ Hyperbolic Sine functions
+
+2007-01-05 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/elementaryFunctions/acos :
+ ArcCosine functions
+ * src/elementaryFunctions/asin :
+ ArcSine functions
+
+2006-12-11 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test/testCos.c :
+ Add some cosine tests.
+ * src/test/tesSin.c :
+ Add some sine tests.
+ * README :
+ Add some standards and style definitions.
+
+2006-12-08 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * src/test :
+ Test files for libraries.
+ * src/elementaryFunctions/cos :
+ Cosine functions
+ * src/elementaryFunctions/sin :
+ Sine functions
+
+
+2006-12-04 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * Group functions:
+ Group all same name functions, ignore type.
+ * Inverse Cosinus [acos]:
+ Done for Real and Complex type.
+ * Inverse Hyperbolic Cosinus [acosh]:
+ Done for Real and Complex type.
+ * Inverse Sinus [asin]:
+ Done for Real and Complex type.
+ * Inverse Hyperbolic Sinus [asinh]:
+ Done for Real and Complex type.
+ * Inverse Tangeant [atan]:
+ Done for Real and Complex type.
+
+2006-11-30 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * Hyperbolic Cosinus [cosh]:
+ Done for Real and Complex type.
+ * Hyperboloc Sinus [sinh]:
+ Done for Real and Complex type.
+ * Hyperbolic Tangeant [tanh]:
+ Done for Real and Complex type.
+ * src:
+ To put basic sources.
+ * src/type:
+ To put complex types.
+ * src/type/doubleComplex.{ch}:
+ Simple definition of complex as struct of double.
+
+2006-11-29 Bruno JOFRET <brunojofret@inria.fr>
+
+ * Pythagore [pythag]:
+ Done for Real Type.
+ * LAPACK [dlamch]:
+ Add dlamch.help to keep an eye on each option.
+ * Icrease logarithm [log1p]:
+ Done for Real Type.
+ * Exponential [exp]:
+ Done for Real and Complex Type.
+ * ArcTangeante2 [atan2]:
+ Done for Real Type.
+
+2006-11-28 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * Logarithm [log]:
+ Correction : Log for a negative Real call Log as complex.
+ * Root [sqrt]:
+ Done for Real and Complex.
+
+2006-11-27 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * Number Sign [sign]:
+ Done for Real Type.
+ * Abslute Value [abs]:
+ Done for Real Type.
+
+2006-11-18 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * Tangeant [tan]:
+ Done for Real and Complex Type.
+ * Logarithm [log]:
+ Done for Real and Complex Type.
+
+2006-11-15 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * Cosinus [cos]:
+ Done for Real and Complex Type.
+ * Sinus [sin]:
+ Done for Real and Complex Type.
+
+2006-11-13 Bruno JOFRET <bruno.jofret@inria.fr>
+
+ * TrigonometricsDependeces.dot :
+ First dependences...
+ Evaluating all depences in order to find atomic calls.
+
+
+
diff --git a/2.3-1/DESCRIPTION b/2.3-1/DESCRIPTION
new file mode 100644
index 00000000..77ae9750
--- /dev/null
+++ b/2.3-1/DESCRIPTION
@@ -0,0 +1,73 @@
+Toolbox: scilab2c
+
+Title: Scilab 2 C
+
+Summary: Translate Scilab code into C code
+
+Version: 2.3
+
+Author: Bruno JOFRET
+ Allan SIMON
+ Raffaele NUTRICATO
+ Alberto MOREA
+ Maria Teresa CHIARADA
+
+Maintainer: Pierre Marechal <pierre.marechal@contrib.scilab.org>
+ Bruno Jofret <bruno.jofret@scilab-enterprises.com>
+
+Category: Tests
+ Technical
+
+Entity: DIGITEO
+
+WebSite: http://forge.scilab.org/index.php/p/scilab2c/
+
+URL: http://atoms.scilab.org/toolboxes/scilab2c/2.3
+
+License: GPL
+
+ScilabVersion: >= 5.4
+
+Depends:
+
+Date: 2012-08-02 09:53:30
+
+Description: Sci2C is a tool capable to translate Scilab code into C code.
+
+ It is a standalone toolbox of Scilab and it has been primarily developed to
+ become the interface between the Scilab scientific software package and the
+ hArtes design flow.
+
+ The output C code is in a plain style and does not include any part of the
+ Scilab interpreter thus making it small, efficient and easy to interface to the
+ hArtes tool chain.
+
+ In other words, the generated C code is standalone and minimal in the sense that
+ Scilab interpreter is no longer needed and only the minimal number of C files
+ which are necessary to execute the application are generated. It follows that
+ the generated code can be embedded in processors or used as entries for other
+ software.
+
+ Sci2C is implemented in Scilab language, so it naturally becomes a Scilab
+ toolbox available in the Scilab installation program and consequently it can be
+ directly used in the Scilab Development Environment.
+
+ The implementation of Sci2C is mainly based on the introduction of data and
+ function annotations into Scilab code which is seen as comment by the Scilab
+ interpreter, but that are used by Sci2C to translate the Scilab code into an
+ efficient and plain C code. Moreover the use of annotations allows the user to
+ specify not only the size of data but also their precision, in that way it is
+ possible to get a further optimization of the C code produced thanks to the
+ possibility to use ad-hoc precision for each data to be processed.
+
+ Two major limitations can be identified in Sci2C: the first limitation of the
+ tool is that the annotations must be manually added by the user, although it is
+ the only manual intervention required by the tool; the second limitation is that
+ the size of data is fixed and consequently no dynamic array extension is
+ allowed.
+
+ Other minor limitations have been introduced in order to simplify the
+ development of the tool without impacting on the usefulness of it for embedded
+ systems.
+
+
diff --git a/2.3-1/Doc/SCI2CUserGuidev4.doc b/2.3-1/Doc/SCI2CUserGuidev4.doc
new file mode 100644
index 00000000..345f84f4
--- /dev/null
+++ b/2.3-1/Doc/SCI2CUserGuidev4.doc
Binary files differ
diff --git a/2.3-1/FILES b/2.3-1/FILES
new file mode 100644
index 00000000..b9fe2681
--- /dev/null
+++ b/2.3-1/FILES
@@ -0,0 +1,2750 @@
+6da34e1ed6162e10703efef2daf0d874 ChangeLog
+b2a35e98453194ca837c363ee9c0d379 config/compile
+a6d968df0c07d16a351ea892a640474f config/config.guess
+00380e6b8910e0cd7ee98506ae1af0aa config/config.sub
+534084afb552747d884a45353769fa29 config/depcomp
+5cc51dc6eb45a90231a4e31efbc3f220 config/install-sh
+66d1c573e07150e4bfceb7532fd748dd config/ltmain.sh
+c7645c248f924f07869059b76300fea9 config/missing
+c5659cd9ada9591575d83e6acfeff663 configure
+65f3788d4e38d272de8fb7815c9c6472 configure.ac
+5d13f88657db23a4e14788b1d5664d5d demos/Filter.dem.sce
+d28cee93efb602554e7d6f33d9a54b56 demos/LinearRegression.dem.sce
+057d6f27c750d0cda0368922d7d4568b demos/scilab2c.dem.gateway.sce
+a376be852ce7348e54e30bfe5a6165d0 demos/Symbols.dem.sce
+5b64743df5ad553dfb156bbc32ed1ec6 demos/TrigonometricIdentity.dem.sce
+f2ee5418aecce0b468a42990212df554 DESCRIPTION
+10893c992916c744599f68a58f4bf49d Doc/SCI2CUserGuidev4.doc
+d41d8cd98f00b204e9800998ecf8427e etc/scilab2c.quit
+11ab2cf138508c0bd3fea95c8ec2f86f etc/scilab2c.start
+504e200ab5684e3c9cb12a9afb5a1376 includes/blas.h
+aab6c6c913b86b335bd879799b2b5f54 includes/constant.h
+2b4c8d750eef8b4a9d39b1ec11438e0e includes/f2c.h
+44483d389cf8fd906a465e41b9d339c8 includes/lapack.h
+b223ce36123b7682d3aea3c87e380848 includes/machine.h.in
+769404ccbc621c364af1114dea030684 includes/notFound.h
+14336823e8640333b7b04cc183af18cf includes/sci2clib.h
+c7d963dd716c14d5147eb4dbeab24b82 loader.sce
+72fd37584e13ab534bf809f29e121080 m4/fftw.m4
+ab779aa53d08e4ff94c90a69381ab5c9 m4/fortran.m4
+970c49d9d278452c876edb8d57af22b3 m4/intel_compiler.m4
+a11dc7c28cf26a2cb304d3d02843971b macros/ASTManagement/%comment_string.bin
+ae8ac74d19faa9f55e120b9977c768a4 macros/ASTManagement/%comment_string.sci
+c4fd5a2fa01f496bae70eb1e7f13613e macros/ASTManagement/%cste_string.bin
+5b344db3752c05882b303291aa2c2790 macros/ASTManagement/%cste_string.sci
+ee91d61a5a89fb966f98a022e023b9e4 macros/ASTManagement/%equal_string.bin
+50f89d5ffd8f9cd142e766402536d32d macros/ASTManagement/%equal_string.sci
+aaeec9c8ae6a61a6711ab82655e7b88f macros/ASTManagement/%for_string.bin
+1cc14d68965980e103c48bf1ea36efbf macros/ASTManagement/%for_string.sci
+d1b84014f9f7070221e14745a0046d11 macros/ASTManagement/%funcall_string.bin
+21e5fb5ef5cc2fe15db5f0ad8d6c56b1 macros/ASTManagement/%funcall_string.sci
+0d9c4b8d602eb31e961a24edb3a214b8 macros/ASTManagement/%ifthenel_string.bin
+bea1d00ad6c037301b87fcc2fd556bdb macros/ASTManagement/%ifthenel_string.sci
+094b6d90f68bb8c373fc9797725d35b3 macros/ASTManagement/%operatio_string.bin
+eb4d660e0275565665feaf368e596367 macros/ASTManagement/%operatio_string.sci
+88b63c56ea6d5a34d5bb86bffda09545 macros/ASTManagement/%program_p.bin
+f82997d4a4eb277a488273be69fb31ce macros/ASTManagement/%program_p.sci
+85a33301b028a5cc5e375cb84c5509a0 macros/ASTManagement/%program_string.bin
+879f4b4f005fd98d8dd1a198e85b4dce macros/ASTManagement/%program_string.sci
+83bcffcf5bf87290c8216c2842697ae3 macros/ASTManagement/%variable_string.bin
+be1ccff22e2958638882c809403b2a36 macros/ASTManagement/%variable_string.sci
+070f537f96ac375d93b3060d682d1869 macros/ASTManagement/%while_string.bin
+3f9300680176235c78bfc42abbe11715 macros/ASTManagement/%while_string.sci
+8869316cff05d1ba96ac7a91fa38c364 macros/ASTManagement/AST2Ccode.bin
+230e73ae8ce9061f6f6d9664648dda0e macros/ASTManagement/AST2Ccode.sci
+52e1fba23deba274523359361f865584 macros/ASTManagement/AST_CheckCommonInOutArgs.bin
+7be23272bbff9b141535b71c0eefb3b4 macros/ASTManagement/AST_CheckCommonInOutArgs.sci
+3d2ae51ce6019f0e2adda085a55f31d6 macros/ASTManagement/AST_CheckLastFunc.bin
+41af209af677f8fd3c68fd1920a7fcbb macros/ASTManagement/AST_CheckLastFunc.sci
+963677e2e57b419fb095ad9e44012892 macros/ASTManagement/AST_CheckLineLength.bin
+eb2c4ac2671c0cf8df0ed2fe354ac94c macros/ASTManagement/AST_CheckLineLength.sci
+e6f485de7ddaa9457992375eac15bc87 macros/ASTManagement/AST_CheckPrecSpecifier.bin
+144f0a7d5c6e6bb705b9042580a5bf61 macros/ASTManagement/AST_CheckPrecSpecifier.sci
+472c2f20669dda041232589715454f25 macros/ASTManagement/AST_DisplayStack.bin
+21388a317814d324031f5f303da4c4d1 macros/ASTManagement/AST_DisplayStack.sci
+77a6f51352acea2b2c968cff945873a6 macros/ASTManagement/AST_ExtractNameAndScope.bin
+abeb39ea53ab8555c3f9f3a6f97080c8 macros/ASTManagement/AST_ExtractNameAndScope.sci
+6bf9e633a967f000ac636334d4538e48 macros/ASTManagement/AST_GetASTFile.bin
+46b005d916ff66672d4424fe6c867371 macros/ASTManagement/AST_GetASTFile.sci
+0ae307b6cd335d997a2e7f93c5938a0c macros/ASTManagement/AST_GetFuncallPrm.bin
+eae44f2db2aa35208413d2748f4b1eda macros/ASTManagement/AST_GetFuncallPrm.sci
+a9f19fb8938293c979010eebbcb8d874 macros/ASTManagement/AST_GetPrecAndLhsArg.bin
+a9b1bfe5554da61d2f8bf5f650d45fb7 macros/ASTManagement/AST_GetPrecAndLhsArg.sci
+5c550cabd3b6635887afd5b12dc50430 macros/ASTManagement/AST_HandleEndFor.bin
+fdbd73e88f395b5af34aaff8f338257a macros/ASTManagement/AST_HandleEndFor.sci
+9dd74cff686cd7f39e24760f8ec17e9a macros/ASTManagement/AST_HandleEndGenFun.bin
+5ebed1243d0d067126c179f7b65440b9 macros/ASTManagement/AST_HandleEndGenFun.sci
+0c445a4ec89d61508b5f91c5c6b08f5c macros/ASTManagement/AST_HandleEndProgram.bin
+6c15e907c85813690569e22aafe1ad73 macros/ASTManagement/AST_HandleEndProgram.sci
+75b3abbf89c19d5616fde456848497c7 macros/ASTManagement/AST_HandleEndWhile.bin
+48b96325a3f21c4ba50a0f1cd1a66942 macros/ASTManagement/AST_HandleEndWhile.sci
+95a379d6d8a98e99bcb5cfc1201b0db8 macros/ASTManagement/AST_HandleEOL.bin
+f987eace484aa84e2c6466d14bb219b9 macros/ASTManagement/AST_HandleEOL.sci
+6e1328d9f786220907cdedc2611755a3 macros/ASTManagement/AST_HandleFor.bin
+a57ea977d9d6464a897a336be790d12b macros/ASTManagement/AST_HandleFor.sci
+371199381ad254225b63dfdb6ae6ef7b macros/ASTManagement/AST_HandleForStatem.bin
+e8798a3174da8b15be1899c2fa6caf51 macros/ASTManagement/AST_HandleForStatem.sci
+6ea5b428e249aa4ce60032f6f9098bc6 macros/ASTManagement/AST_HandleHeader.bin
+23e7e0f61d81562b55f4182c4ad87166 macros/ASTManagement/AST_HandleHeader.sci
+eb40ca486239261a5e2e0a6386073961 macros/ASTManagement/AST_HandleIfElse.bin
+d4baa1f0627796ffb096ddaf813a4052 macros/ASTManagement/AST_HandleIfElse.sci
+35f8ada84adf5fc874fb9fa09181f239 macros/ASTManagement/AST_HandleWhileExpr.bin
+8e4cd2599cffc1f1e2acc8cc5b530d17 macros/ASTManagement/AST_HandleWhileExpr.sci
+3c2a173e25d6d8d5ffec573d911e99ad macros/ASTManagement/AST_HandleWhileStatem.bin
+7c614bb64405216e1734963f1ad30c2b macros/ASTManagement/AST_HandleWhileStatem.sci
+1b99350a1677b0aed8d111da235a71d3 macros/ASTManagement/AST_ParseEqualStruct.bin
+3f5f0449f1ad323f8d773a5f1706abdf macros/ASTManagement/AST_ParseEqualStruct.sci
+ebfbf076d2eebf74295d1c0cf16412eb macros/ASTManagement/AST_ParseFuncallStruct.bin
+6ae1693c012bee2c3995b5c6c170e932 macros/ASTManagement/AST_ParseFuncallStruct.sci
+62404990a7ba2df44d8b6814952e7faf macros/ASTManagement/AST_ParseIfExprStruct.bin
+89ef7c4ede0000994da10a78426a33ec macros/ASTManagement/AST_ParseIfExprStruct.sci
+9a0511bb84296432c59d1228ede870ea macros/ASTManagement/AST_ParseOperStruct.bin
+fddebf40106d89e48cf7688690b74292 macros/ASTManagement/AST_ParseOperStruct.sci
+04a17cc7ebe8d99ca298739ceb072c89 macros/ASTManagement/AST_PopASTStack.bin
+aa506e9d2a10176575085782eb86643d macros/ASTManagement/AST_PopASTStack.sci
+8b017a124b7f302db31f1e689065eb5c macros/ASTManagement/AST_PushASTStack.bin
+8a547533e5316bc5e1187d2d39066e18 macros/ASTManagement/AST_PushASTStack.sci
+3b458a779e8c544914419817efa70294 macros/ASTManagement/AST_ReadASTHeader.bin
+4fea8ab28d3961a4a3f61c8f4a01766a macros/ASTManagement/AST_ReadASTHeader.sci
+347d00fe0b43cd6c758653cf03ced4f4 macros/ASTManagement/AST_ReadEqualRhsNames.bin
+f8e22007b9355279a374cc42447f6108 macros/ASTManagement/AST_ReadEqualRhsNames.sci
+186dfe3552c0a356d710ecdb6b642fc5 macros/ASTManagement/buildmacros.sce
+ae029f0001587d14a3fb4d296d926003 macros/ASTManagement/GenOutArgNames.bin
+f178df107549d3ca37abb21dd953b6cc macros/ASTManagement/GenOutArgNames.sci
+5a536f9f26a1c5fabb3ea806793cedc9 macros/ASTManagement/lib
+1721aeb951da5d128ef6655e81943b9c macros/ASTManagement/names
+de6316043b0dafc21ac8fc33810dcf43 macros/ASTManagement/objectlist2string.bin
+f60f3697119f4fe84dd9d1b02e63dbfd macros/ASTManagement/objectlist2string.sci
+a089023f784fac29ffdecf0e46e4052e macros/ASTManagement/Operator2FunName.bin
+34685d41108ddc924387875fa326ce9f macros/ASTManagement/Operator2FunName.sci
+c41806717c0aa696c87e921aeaaa3c85 macros/ASTManagement/SciFile2ASTFile.bin
+3df4ebaf016d911d24ee5f7b5dd20575 macros/ASTManagement/SciFile2ASTFile.sci
+bbdea8bb285a18e3bcec72be47f6bbea macros/buildmacros.sce
+14ca7d8f0a04318fd916e9ecad604bca macros/cb_sci2c_gui.bin
+8d85fecc608c4c6fa3a19e903702008f macros/cb_sci2c_gui.sci
+186dfe3552c0a356d710ecdb6b642fc5 macros/CCodeGeneration/buildmacros.sce
+724f389bd79f7dd6786973b4aee71118 macros/CCodeGeneration/C_FinalizeCode.bin
+b707ec678640caf45d71005da3a475ca macros/CCodeGeneration/C_FinalizeCode.sci
+e82d3662bf984325c4891ddb2385aba8 macros/CCodeGeneration/C_ForExpression.bin
+ee0d8be7166406fb0aa2d2eecb4b74ea macros/CCodeGeneration/C_ForExpression.sci
+756a929f5d87575ccc00fe215b5deda8 macros/CCodeGeneration/C_Funcall.bin
+63646d6b6a2f3019f1f415de4baccf66 macros/CCodeGeneration/C_Funcall.sci
+30960a4d7b475997dc6da98abdbb2d3a macros/CCodeGeneration/C_GenDeclarations.bin
+7c06a9a9d4f17bbba518ccb473ae4e35 macros/CCodeGeneration/C_GenDeclarations.sci
+684698acd2cee262b7745ceb3ffca0aa macros/CCodeGeneration/C_GenerateFunName.bin
+1f283408aff7c9af34ee2841df168ccb macros/CCodeGeneration/C_GenerateFunName.sci
+25ecc8b316196df5e155bdbcf8b31673 macros/CCodeGeneration/C_GenerateLaunchScript.bin
+6a7eebd266f6ba252a610a9b6e5e12fe macros/CCodeGeneration/C_GenerateLaunchScript.sci
+64ea48af27ea7c9e15e605df84ff9b8d macros/CCodeGeneration/C_GenerateMakefile.bin
+ceb01d196fe4c2fe79b5ca640d5b4edc macros/CCodeGeneration/C_GenerateMakefile.sci
+a41534f27bf7826cf530424d38545e1b macros/CCodeGeneration/C_GenerateMakefile_msvc.bin
+411da5b904de006f710cb905cfadd87e macros/CCodeGeneration/C_GenerateMakefile_msvc.sci
+61ded34d589b5571ef078b4e5c1c71e6 macros/CCodeGeneration/C_GenerateSCI2CHeader.bin
+0718f257ee598048a8c8c0fcdb06c8fc macros/CCodeGeneration/C_GenerateSCI2CHeader.sci
+fc95af33236615de6660e040bd845c1e macros/CCodeGeneration/C_IfElseBlocks.bin
+78d53c95511b9b46ea8739a177efd631 macros/CCodeGeneration/C_IfElseBlocks.sci
+e3469abe68342ec671880c1781be7654 macros/CCodeGeneration/C_IfExpression.bin
+3add0023106554d31abb46b2e726dc6a macros/CCodeGeneration/C_IfExpression.sci
+f155b00f5f55a95096e1d98bb70a8060 macros/CCodeGeneration/C_IndentBlanks.bin
+c13a65c5aa31c1832a39c2319fb657da macros/CCodeGeneration/C_IndentBlanks.sci
+a172be1e5a50e974b132524fc01cf621 macros/CCodeGeneration/C_InitHeader.bin
+0fcccf132189f58b4b6f3bf379b6842d macros/CCodeGeneration/C_InitHeader.sci
+5126bb4587fe68db9327ed87913c1fe6 macros/CCodeGeneration/C_MemAllocOutTempVars.bin
+494955df92eb7221773c3b7a02669060 macros/CCodeGeneration/C_MemAllocOutTempVars.sci
+61d6b3f428cce4a3ef1ce45487b0e3f6 macros/CCodeGeneration/C_SCI2CHeader.bin
+e4aa8324d333399ee3a799b31e346225 macros/CCodeGeneration/C_SCI2CHeader.sci
+78eff5ac4b69f37d1fb345bb0addd293 macros/CCodeGeneration/C_Type.bin
+1f7bba07a79c43dc6ca013198b18de4b macros/CCodeGeneration/C_Type.sci
+6246a61a49b54a20124ea9d030c3827a macros/CCodeGeneration/C_WhileExpression.bin
+a92e85944d39cd88c56e9fc66fcf873d macros/CCodeGeneration/C_WhileExpression.sci
+b087ae0cfee49e52998de0a86e4db7db macros/CCodeGeneration/GenCFunDatFiles.bin
+f0b139926435307b59da0ed9372d52c1 macros/CCodeGeneration/GenCFunDatFiles.sci
+b9626712edb0a8a735707b0202e63cac macros/CCodeGeneration/GetClsFileName.bin
+09345707048846b729664cf858d36564 macros/CCodeGeneration/GetClsFileName.sci
+7b75658a6e58ffc62073f1a019c50935 macros/CCodeGeneration/GetSymbolDimension.bin
+5f5d185c6cf8951cb1f86ac3807e5348 macros/CCodeGeneration/GetSymbolDimension.sci
+eeb87c5be580d9afc03bbf48ebd1c571 macros/CCodeGeneration/GetWhileCondVariable.bin
+488b23b870f6b7395ea07ebd122efa98 macros/CCodeGeneration/GetWhileCondVariable.sci
+196c7ea235ac5af56f9e61c1f7819a06 macros/CCodeGeneration/JoinDeclarAndCcode.bin
+8dee0a59f9d3b98fe6f78cc6bfebf130 macros/CCodeGeneration/JoinDeclarAndCcode.sci
+294afd5266919456e911d42abb26ae48 macros/CCodeGeneration/lib
+4fda4e12a0c3f173a63183b3ec1fd843 macros/CCodeGeneration/names
+2528c8f253c36213cd5dd8e854b40463 macros/CCodeGeneration/Sci2AnnotationFile.bin
+186fac1c1ab1b5f6856af349b9aed271 macros/CCodeGeneration/Sci2AnnotationFile.sci
+1167e2133d4df050be2cef4608fa220c macros/CCodeGeneration/SCI2CMakefileTemplate.bkp
+1167e2133d4df050be2cef4608fa220c macros/CCodeGeneration/SCI2CMakefileTemplate.bkp1
+771b0cd822ac9173626ee1eda2e93ad4 macros/CCodeGeneration/SCI2CMakefileTemplate.bkp2
+64278cb37b889e820c951129c12733aa macros/CFiles/sci2ccode/ConvertPrecision.c
+4a55c4273dc8ad60467d6ec07b2ebd1a macros/CFiles/sci2ccode/FileManagement.c
+676b77c95c0d044a03bda5dffc96e8cb macros/CFiles/sci2ccode/OpEqual.c
+d8a1ad3c3000fba24159408523ca8ee2 macros/CFiles/sci2ccode/OpExt.c
+d56985e405a0e3ec7cb64660d050d3c3 macros/CFiles/sci2ccode/OpIns.c
+c2393bd7eb454254582e1eecd3f77f9e macros/CFiles/sci2ccode/OpLogAnd.c
+5014760c3c18aa7926058b85e68a09e8 macros/CFiles/sci2ccode/OpLogGe.c
+c49a2a22aa78c73b4da250de2f4bd06b macros/CFiles/sci2ccode/OpLogGt.c
+aa29ff739062bda40c6ef00bd08470c9 macros/CFiles/sci2ccode/OpLogLe.c
+a008a7bd52e102621b9f47f02c81a8d7 macros/CFiles/sci2ccode/OpLogLt.c
+7630b28a8a3ef06bd9f982b5c003fea7 macros/CFiles/sci2ccode/OpLogOr.c
+2da097a93110420bdc4b176a9711f1b2 macros/CFiles/sci2ccode/RealToComplex.c
+996a92abb7901e60bc452c3df5e9d1b1 macros/CFiles/sci2ccode/SCI2Cconvol.c
+0028f91e79e14deb37258504c67ff878 macros/CFiles/sci2ccode/SCI2Cfft.c
+2b3b150031f9856ba189ea46425fbfaa macros/CFiles/sci2cincludes/ConvertPrecision.h
+eec455aecc0e1cd9abda2d876206184a macros/CFiles/sci2cincludes/FileManagement.h
+bd6807508bbb0efa41b508ce42546b05 macros/CFiles/sci2cincludes/notFound.h
+c4c449dba0ccaae4371db6097d77568f macros/CFiles/sci2cincludes/OpEqual.h
+fe063e1657f19f20fdd0098700a5f6c0 macros/CFiles/sci2cincludes/OpExt.h
+e6f4af0848a9a074b16a086fe7825430 macros/CFiles/sci2cincludes/OpLogAnd.h
+f29b9e9b1c6754d8c006614f24128186 macros/CFiles/sci2cincludes/OpLogGe.h
+4d6f910abc0c38ed19ba366f55ee5db2 macros/CFiles/sci2cincludes/OpLogLe.h
+91dfb6b3b55adf2fe89d64906d9d56e2 macros/CFiles/sci2cincludes/OpLogLt.h
+4d6d26fe5605c679e19b91cb92933151 macros/CFiles/sci2cincludes/OpLogOr.h
+c05c835ad3ea2900e8a95200726e7dd5 macros/CFiles/sci2cincludes/RealToComplex.h
+4d4da9d5ae06c6ef9e33b961a166d35f macros/CFiles/sci2cincludes/SCI2Cconvol.h
+efc7c8c4b2f8d1cc6b0d4509859293ff macros/CFiles/sci2cincludes/SCI2Cfft.h
+c5106f09e200ca07a88405c4c00d7ead macros/CFiles/sci2cincludes/SCI2CMacroInterface.h
+7fb410a7c5c374fe8a11b1b55faf4a77 macros/CFiles/sci2cobj/readme.txt
+186dfe3552c0a356d710ecdb6b642fc5 macros/ErrorMessages/buildmacros.sce
+8b2f5b25b0b5350cb6a2222fe0d0be30 macros/ErrorMessages/EM_NanSize.bin
+fc75c3a19b9b54f897e1f1df3eb19299 macros/ErrorMessages/EM_NanSize.sci
+66be8fa50ef7c5669c27f3098f690416 macros/ErrorMessages/EM_UnknownStep.bin
+41f96c9dd67d0a3c2d0f87155ae3e448 macros/ErrorMessages/EM_UnknownStep.sci
+95e21667832543b55820978e97c9606b macros/ErrorMessages/EM_ZeroSize.bin
+fbf27b6201a8966c3f7d334ecadcf7dd macros/ErrorMessages/EM_ZeroSize.sci
+d8baa321f50e0724a169ea5d9f8c25d7 macros/ErrorMessages/lib
+1cdba141d64e3c1196ff0323867480a0 macros/ErrorMessages/names
+186dfe3552c0a356d710ecdb6b642fc5 macros/findDeps/buildmacros.sce
+05aa61079e99c3b96e1cb96f239cc98a macros/findDeps/findDeps.bin
+84601fa84fc20d60cf13a314f416eb7a macros/findDeps/findDeps.sci
+718bef9acfb68ec69b453762f27de97f macros/findDeps/getAllHeaders.bin
+5cd338eb562eb2a4feb0c9729ab3f497 macros/findDeps/getAllHeaders.sci
+e21343dd7eb24d678691e657eb3f2677 macros/findDeps/getAllInterfaces.bin
+dfb5ba5bf4c68537f0af602002419c94 macros/findDeps/getAllInterfaces.sci
+6f1245cacd15af50e2610fa18a6a3596 macros/findDeps/getAllSources.bin
+95a0130f13d2d56d7f6a4dfde9af8732 macros/findDeps/getAllSources.sci
+6146b9c7c1e04f2e9d6f4a3040ff8c48 macros/findDeps/lib
+4c6ff0d7512ca55d7c37908230a8d3ed macros/findDeps/names
+ccf98f30e779171a27e79ede290e9692 macros/findDeps/Scilab2CDeps.bin
+e6ae53919e31b087f1cb3f9ff44e50be macros/findDeps/Scilab2CDeps.sci
+19997176afd6dfceb7db3d0f4dbec61f macros/full_reset.sce
+186dfe3552c0a356d710ecdb6b642fc5 macros/FunctionAnnotation/buildmacros.sce
+986137062df3b89158adee56d245e904 macros/FunctionAnnotation/FA_ADD.bin
+dd7cb2352cebe51a26960f27800d142f macros/FunctionAnnotation/FA_ADD.sci
+5c37d56a427b5438499319aa29ece12b macros/FunctionAnnotation/FA_DIV.bin
+cbb58f8dca2f538fc55318cd9fe2aacf macros/FunctionAnnotation/FA_DIV.sci
+43dbffaa9fa0b057576b0446745fbfd4 macros/FunctionAnnotation/FA_GetDefaultPrecision.bin
+ba027178635419a3fc06ee6bddc0768b macros/FunctionAnnotation/FA_GetDefaultPrecision.sci
+23d831e0dca47f1b20eb8af8330157d0 macros/FunctionAnnotation/FA_GetFunAnn.bin
+9a0ce8f1301a477b49af8c6f27613c7e macros/FunctionAnnotation/FA_GetFunAnn.sci
+bcb140f16ac6a99207f62d77dbc3a02b macros/FunctionAnnotation/FA_GetOutArgInfo.bin
+586c16f8c1ff31cedfd03d918cccb416 macros/FunctionAnnotation/FA_GetOutArgInfo.sci
+b8e30fb72ed1e8d76796cc57192901d8 macros/FunctionAnnotation/FA_GetResizeApproach.bin
+c2a56f2e19e5f00501fa4df3458c9dee macros/FunctionAnnotation/FA_GetResizeApproach.sci
+111ce64cf0d24687198eee4ea653d1fb macros/FunctionAnnotation/FA_INT.bin
+0c205473109f430cde9f44ef82d7ff89 macros/FunctionAnnotation/FA_INT.sci
+2bc5b9a1b0b1d5b1dc7b0512289e8b97 macros/FunctionAnnotation/FA_MAX.bin
+790b6345bc6f83c1abf409a947fe5cf1 macros/FunctionAnnotation/FA_MAX.sci
+1fd61140def5f66559675dcc0214d730 macros/FunctionAnnotation/FA_MIN.bin
+38be83fabf9f82c18da51bc5fe012db0 macros/FunctionAnnotation/FA_MIN.sci
+e05d8c9478cb9634f201c404cc081138 macros/FunctionAnnotation/FA_MUL.bin
+3a74a8b10fbebd61448fa7aae4b0ae52 macros/FunctionAnnotation/FA_MUL.sci
+f419b796a5e84f7bd4c75a07e38415c1 macros/FunctionAnnotation/FA_REAL.bin
+ad893eb35ca6549f79fa16db4a40ac14 macros/FunctionAnnotation/FA_REAL.sci
+fc4861f9edc9250bf3c4e3e5d9ee72ae macros/FunctionAnnotation/FA_SUB.bin
+e2bf87b2eea426ca19dbf4da723bc09b macros/FunctionAnnotation/FA_SUB.sci
+d6b9b93b10d4903cecaa502c44d48b4d macros/FunctionAnnotation/FA_SZ_1.bin
+054f47b2b4bf1f42792956d0e13495f2 macros/FunctionAnnotation/FA_SZ_1.sci
+de05c5febedd70008c943d3bef899dda macros/FunctionAnnotation/FA_SZ_2.bin
+625a93e39dd4c7d794cbda4f22cfdc55 macros/FunctionAnnotation/FA_SZ_2.sci
+4a9b0c131eaadabe1f654e9de9401631 macros/FunctionAnnotation/FA_SZ_FROM_VAL.bin
+6a4dc1ba2700c52f1e5c2c3a59476b33 macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci
+a66b4e44b43c647770b771a159cbc11f macros/FunctionAnnotation/FA_SZ_OPAPEX.bin
+0b8d88d93b998df3809b5b982b1866d3 macros/FunctionAnnotation/FA_SZ_OPAPEX.sci
+612c514b614ce9a1e5da77a0fb83cbb2 macros/FunctionAnnotation/FA_SZ_OPBACKSLASH.bin
+e73b175d9caa578b8b5d86ec3a662031 macros/FunctionAnnotation/FA_SZ_OPBACKSLASH.sci
+d3d0b2f4eb3ca106dde02613dcfc73eb macros/FunctionAnnotation/FA_SZ_OPCC.bin
+3f572fa3c3155b2bed062f740a984ea5 macros/FunctionAnnotation/FA_SZ_OPCC.sci
+d000d274121347a8fab8e0a57863d1f6 macros/FunctionAnnotation/FA_SZ_OPDOTAPEX.bin
+8dfa044bd8b98dfde688bff426d87d1d macros/FunctionAnnotation/FA_SZ_OPDOTAPEX.sci
+496ce90c7e68194fd8a314311d529244 macros/FunctionAnnotation/FA_SZ_OPDOTBACKSLASH.bin
+d4fe9cacf1bd6011accd3487ce8d031b macros/FunctionAnnotation/FA_SZ_OPDOTBACKSLASH.sci
+92e88abab1829dd85266c0061d6ec8f1 macros/FunctionAnnotation/FA_SZ_OPDOTHAT.bin
+90f02cfe6237d0c6ae62465ce79c6216 macros/FunctionAnnotation/FA_SZ_OPDOTHAT.sci
+1cc99808a4dd2d316d871366b3d40225 macros/FunctionAnnotation/FA_SZ_OPDOTSLASH.bin
+c8f1792d47a1f550b8841ff5a09c579a macros/FunctionAnnotation/FA_SZ_OPDOTSLASH.sci
+d6167f990050b2f3b781b4ddbd6952eb macros/FunctionAnnotation/FA_SZ_OPDOTSTAR.bin
+bba11e56953d49103918e4cd809e600b macros/FunctionAnnotation/FA_SZ_OPDOTSTAR.sci
+6c195fc8809bfff51f66ff10ea0f145c macros/FunctionAnnotation/FA_SZ_OPHAT.bin
+e6ae28b646780cd2bd8a805062cde7ef macros/FunctionAnnotation/FA_SZ_OPHAT.sci
+7c90158cf6292cdffe56d4b3c7f9a837 macros/FunctionAnnotation/FA_SZ_OPLOGAND.bin
+4032d5f8b0e63f626d3241f1c006f656 macros/FunctionAnnotation/FA_SZ_OPLOGAND.sci
+3f91369626388666f666e3d3aa601953 macros/FunctionAnnotation/FA_SZ_OPLOGEQ.bin
+2f3d13895689d637eae997ed30ef0be3 macros/FunctionAnnotation/FA_SZ_OPLOGEQ.sci
+05fb727204c80fbbf53e28d56eb539d1 macros/FunctionAnnotation/FA_SZ_OPLOGGE.bin
+d505fb681e8da5673e40506d13c51782 macros/FunctionAnnotation/FA_SZ_OPLOGGE.sci
+72a403eb88345a658a95a8edde7bb627 macros/FunctionAnnotation/FA_SZ_OPLOGGT.bin
+042b32801e3185a407d2c14d4db04d48 macros/FunctionAnnotation/FA_SZ_OPLOGGT.sci
+21e298a3841d440c79019f2acf200767 macros/FunctionAnnotation/FA_SZ_OPLOGLE.bin
+09071e32ac728089784b6a13818a83f0 macros/FunctionAnnotation/FA_SZ_OPLOGLE.sci
+118713ecc59b3ee0361f771474f1eb1b macros/FunctionAnnotation/FA_SZ_OPLOGLT.bin
+6364d833b8b7563e9ae3fde1a213e1e1 macros/FunctionAnnotation/FA_SZ_OPLOGLT.sci
+1b7c7f51ab02845e445b1a0903bcd1db macros/FunctionAnnotation/FA_SZ_OPLOGNE.bin
+fe9b599ed3514e57a9fa33b7b70a7595 macros/FunctionAnnotation/FA_SZ_OPLOGNE.sci
+1021d9c69684ceb261694ad83021f0d6 macros/FunctionAnnotation/FA_SZ_OPLOGNOT.bin
+e74bfb3e1ce6b44e951ba68f33a650b6 macros/FunctionAnnotation/FA_SZ_OPLOGNOT.sci
+1a64853574827553aa36e560faaae131 macros/FunctionAnnotation/FA_SZ_OPLOGOR.bin
+b4a75a6a8346c89bed0ecf1a2f124149 macros/FunctionAnnotation/FA_SZ_OPLOGOR.sci
+f14bdfe1dac384d275a8d36168eefa38 macros/FunctionAnnotation/FA_SZ_OPMINUS.bin
+531081ff89e3bc221e9350534d1e5774 macros/FunctionAnnotation/FA_SZ_OPMINUS.sci
+5fe5d1f0f0601d2f3475a6c5cb95cbc8 macros/FunctionAnnotation/FA_SZ_OPPLUS.bin
+fb32876c98a0c8cbadb17e999535fe5b macros/FunctionAnnotation/FA_SZ_OPPLUS.sci
+27eec3ef567ac8b6d23ef7430ec11a07 macros/FunctionAnnotation/FA_SZ_OPPLUSA.bin
+c1bac420198fed222e20954f51cda1c9 macros/FunctionAnnotation/FA_SZ_OPPLUSA.sci
+2aa67edabbb33e7b1f1d51bd29421f4b macros/FunctionAnnotation/FA_SZ_OPRC.bin
+124eab79039ee479e51f88daf06ac012 macros/FunctionAnnotation/FA_SZ_OPRC.sci
+e7508161916c64e4199b13efec996b74 macros/FunctionAnnotation/FA_SZ_OPSLASH.bin
+51fce2ad33d44222ba4d5a0a8d8a242d macros/FunctionAnnotation/FA_SZ_OPSLASH.sci
+a36f79712249e1b1e24276d0dd025208 macros/FunctionAnnotation/FA_SZ_OPSTAR.bin
+73cae8d1759df6537840fc74fd11873c macros/FunctionAnnotation/FA_SZ_OPSTAR.sci
+823cf6b11c9b3599af7cfd5d369afaed macros/FunctionAnnotation/FA_SZ_SEL1.bin
+52dd46606145ca458df12d0dd722c4ef macros/FunctionAnnotation/FA_SZ_SEL1.sci
+632a11c8b53abf3ad36e96841a73a8f9 macros/FunctionAnnotation/FA_SZ_SEL2.bin
+0a263cc65a610eb2fde5657e7d400ffb macros/FunctionAnnotation/FA_SZ_SEL2.sci
+8d6df7f30ba64189e6f2fdcaf762313b macros/FunctionAnnotation/FA_TP_C.bin
+31bae7d2d1fe42bf98f8ef681570da2f macros/FunctionAnnotation/FA_TP_C.sci
+4e9d5845bcf6f79734b366fa420f9fc1 macros/FunctionAnnotation/FA_TP_COMPLEX.bin
+2b6bacd8aa67da17f617e96c8e78e490 macros/FunctionAnnotation/FA_TP_COMPLEX.sci
+63c4fd2e93ab19230b770349ca0c4c6e macros/FunctionAnnotation/FA_TP_D.bin
+eed4ea99f6a31dcf7b41bd0350db3b02 macros/FunctionAnnotation/FA_TP_D.sci
+9015320d9151c24f35864e77546a07b5 macros/FunctionAnnotation/FA_TP_I.bin
+11feb4a7d2beb20a8daf1fbf07209cb1 macros/FunctionAnnotation/FA_TP_I.sci
+244f626d0dba3a8e2ab17c91b89b9e43 macros/FunctionAnnotation/FA_TP_MAX.bin
+b1879c6e3f42266a6ac618d3d503b172 macros/FunctionAnnotation/FA_TP_MAX.sci
+ee630cf44cb5fa69f64b713f51c854a3 macros/FunctionAnnotation/FA_TP_MIN_REAL.bin
+6a66e23c0450dfe7cb0bdbf9081eb865 macros/FunctionAnnotation/FA_TP_MIN_REAL.sci
+7e7e26461d01b86e4033b348ce6a47cd macros/FunctionAnnotation/FA_TP_REAL.bin
+215e39c32fe43bd675c5dd5b9b7ef9eb macros/FunctionAnnotation/FA_TP_REAL.sci
+ad8316c858bc2c983dd2f418cf1a8cdb macros/FunctionAnnotation/FA_TP_S.bin
+288d8b054ed78d5e659b6154aa3b7d9b macros/FunctionAnnotation/FA_TP_S.sci
+211b5b96fa5396bae1e15235a6eb8551 macros/FunctionAnnotation/FA_TP_USER.bin
+bd6cbe6349ee29c69c2509221bedb9f5 macros/FunctionAnnotation/FA_TP_USER.sci
+d3e4d3b9244cef7e013fb64721d71a13 macros/FunctionAnnotation/FA_TP_Z.bin
+330887a571487527c7e7365fb3588ddd macros/FunctionAnnotation/FA_TP_Z.sci
+38eebb72b6bab6536c9fdcc7983e5e68 macros/FunctionAnnotation/lib
+9d91ffeeb5d0951694ceec4636b63544 macros/FunctionAnnotation/names
+186dfe3552c0a356d710ecdb6b642fc5 macros/FunctionList/buildmacros.sce
+475e20547110a3deff19113f6f336e4f macros/FunctionList/FL_ExistCFunction.bin
+87833f802261d83a6d99b9e3a83fdbc1 macros/FunctionList/FL_ExistCFunction.sci
+128c9641507a36570b17828460986136 macros/FunctionList/FL_ExtractFuncList.bin
+d712beb1d049c806d3796e6722ed6152 macros/FunctionList/FL_ExtractFuncList.sci
+a69bd87c1c1534318360ddc39074c87a macros/FunctionList/FL_GetFunctionClass.bin
+b2ce834b42b32699576058f073c9a166 macros/FunctionList/FL_GetFunctionClass.sci
+bd8ed726176162e5ec854ea205e6dd12 macros/FunctionList/FL_InOutArgs2CFunNames.bin
+45fa3434e882e189bbd21863e95dd5e7 macros/FunctionList/FL_InOutArgs2CFunNames.sci
+654f35dc5d3f4e5771d94edf92ee465a macros/FunctionList/FL_UpdateConverted.bin
+69034247e4e14ac615bd25a457c74ed6 macros/FunctionList/FL_UpdateConverted.sci
+8b2d8e9d8850f25c35af682d19934b3a macros/FunctionList/FL_UpdateToBeConv.bin
+acdca3a93fbca37c8794f4c71b13aef1 macros/FunctionList/FL_UpdateToBeConv.sci
+b56fb701a78a689504ff742d20af16a3 macros/FunctionList/lib
+9eacf09fd93dbdc0bd163b572a40f0f3 macros/FunctionList/names
+2a73482000dc081023ce4c18eedcc241 macros/GeneralFunctions/Array2String.bin
+f359d0725cfbf10a9909807062cfa0e0 macros/GeneralFunctions/Array2String.sci
+186dfe3552c0a356d710ecdb6b642fc5 macros/GeneralFunctions/buildmacros.sce
+4ea3a2e2a2718e61c82a2a3a5b99effa macros/GeneralFunctions/ConvertPathMat2C.bin
+fc9b8026bef87f92416ebb3d9f06d711 macros/GeneralFunctions/ConvertPathMat2C.sci
+fc4526e69d34c79930e524412957c69b macros/GeneralFunctions/dispina.bin
+15104b1ed494ee1909a6bba4ce1338cb macros/GeneralFunctions/dispina.sci
+b3df6ebc1ae3954567779c22693dc12b macros/GeneralFunctions/File2StringArray.bin
+c251e7e3094f1e4ac1592552a1650664 macros/GeneralFunctions/File2StringArray.sci
+c951455361d248eb512c4fd9836bf6ed macros/GeneralFunctions/filenamefprintf.bin
+a0ad2da67f594314c1ee897fd3ed33b0 macros/GeneralFunctions/filenamefprintf.sci
+82b1b7fbb78fe6c57c1da3beac77d685 macros/GeneralFunctions/float.bin
+8d628463141a9ec8a20cf035bb1457c7 macros/GeneralFunctions/float.sci
+67dcdee519d0795d7c0eb10088405f91 macros/GeneralFunctions/FunName2SciFileName.bin
+36dedfeba347d05db669636bfe008589 macros/GeneralFunctions/FunName2SciFileName.sci
+c27e6a2c03eef948145842dd932c0f53 macros/GeneralFunctions/IsNanSize.bin
+dae7f5c2b501a50e181d91464c7cc136 macros/GeneralFunctions/IsNanSize.sci
+ded3f1847a4f93c07af3c42c40b81796 macros/GeneralFunctions/KeyStr2FileStrPos.bin
+2a9f90726f83cdddced6862802af0b15 macros/GeneralFunctions/KeyStr2FileStrPos.sci
+d78fdf50472d9f61d9ada567fc794498 macros/GeneralFunctions/lib
+2e7fc0d96ca555a0d38ca98f41de0ec0 macros/GeneralFunctions/names
+5b823f875910b10a896840f1392fdbfa macros/GeneralFunctions/PrintStepInfo.bin
+961dc63439a40fbc380a042da8fe6f0a macros/GeneralFunctions/PrintStepInfo.sci
+2ee025e01b380a3a43993730fff8f734 macros/GeneralFunctions/PrintStringInfo.bin
+e117a4dad1e8efe63d0570bf6ae3fdea macros/GeneralFunctions/PrintStringInfo.sci
+938cc4e20a43aee67887aa8ad1cc5975 macros/GeneralFunctions/ReadStringCard.bin
+d764a1b8d66d48a0fcab2e3f1ac9735d macros/GeneralFunctions/ReadStringCard.sci
+dd537025ea3cff522fb218ba34a88e07 macros/GeneralFunctions/SCI2Ccopyfile.bin
+35c3f76948a747fe4256ed284bf48152 macros/GeneralFunctions/SCI2Ccopyfile.sci
+01824f02ad5da306664db8d14b103657 macros/GeneralFunctions/SCI2CCreateDir.bin
+35b17dfdc41dce0f7ac3657a864fadca macros/GeneralFunctions/SCI2CCreateDir.sci
+1eafb61be5bacb8e49460540efd3c231 macros/GeneralFunctions/SCI2Cfileexist.bin
+a58abf80ba5deb3fdb86805ac87418ed macros/GeneralFunctions/SCI2Cfileexist.sci
+23ea378c8cf1ebcfa129034a6ca90f7d macros/GeneralFunctions/SCI2CFindFile.bin
+5125ebc895d44e9d568a95fccdd706d3 macros/GeneralFunctions/SCI2CFindFile.sci
+21d9417eff8395382514c37d6f942c45 macros/GeneralFunctions/SCI2Cflipud.bin
+b54407448a26a2ce2157833dcee77635 macros/GeneralFunctions/SCI2Cflipud.sci
+c4c8f14ccd1da6829afbd51cb5b7a44f macros/GeneralFunctions/SCI2Cmdelete.bin
+b2760f5f7967c0faa47153ace2245831 macros/GeneralFunctions/SCI2Cmdelete.sci
+bf302afce5ce2f83730aa19bbde8d353 macros/GeneralFunctions/SCI2CNInArgCheck.bin
+82267f28d1e4ee2a7c72b1aec2d14ed7 macros/GeneralFunctions/SCI2CNInArgCheck.sci
+1fcfd9298ad283d16dc41b060f031a64 macros/GeneralFunctions/SCI2COpenFileRead.bin
+814ee652d2532fa11e4dbee2f4392b55 macros/GeneralFunctions/SCI2COpenFileRead.sci
+c331a9e9dd73cb5d6c526a667002fb3a macros/GeneralFunctions/SCI2COpenFileWrite.bin
+a108cab8b517d7864e7ec0eff1fecb00 macros/GeneralFunctions/SCI2COpenFileWrite.sci
+39f2d2f08e48a22033842ab76a410e95 macros/GeneralFunctions/SCI2Cresize.bin
+2c2e9a5a8bfb3623e7f733a92654adc8 macros/GeneralFunctions/SCI2Cresize.sci
+18c44b612eb617215a44a9c2fbe3533c macros/GeneralFunctions/SCI2Cstring.bin
+9a2943a63781502fb5239694d8472b65 macros/GeneralFunctions/SCI2Cstring.sci
+20a75c0eb71836b4f16c3dfe91a440a4 macros/GeneralFunctions/SCI2Cstrncmp.bin
+701294186894c69dc2f3d8d6733a6a1c macros/GeneralFunctions/SCI2Cstrncmp.sci
+ae823f7e66b24bd7d7ae8e042b616f9f macros/GeneralFunctions/SCI2Cstrncmps1size.bin
+5fd65e3dc9df1e6c48dfc2ff074b782d macros/GeneralFunctions/SCI2Cstrncmps1size.sci
+db6c39e7ea2453fc57b47030a70c6b8e macros/GeneralFunctions/SCI2CTemplate.bin
+736dc431e0005e123ae266a0ad8dfca4 macros/GeneralFunctions/SCI2CTemplate.sci
+23216a50670227471f8d8ae89f75bf71 macros/GeneralFunctions/SizeInByte.bin
+1934993e2e0c0e07f896134fa07f54bb macros/GeneralFunctions/SizeInByte.sci
+b60d7e61663b63070cf55f68bf6ce36f macros/GeneralFunctions/squeezestrings.bin
+f3e1bf33c7ccccaded897c57edd9558c macros/GeneralFunctions/squeezestrings.sci
+1daaff52ef84f480da33adf198d6f859 macros/getScilab2cVersion.bin
+545f819ed79b7ce64559e1f28562e337 macros/getScilab2cVersion.sci
+de76d578124c7ca338bbd92cb2450b07 macros/lib
+dd700384728395b4ae584be5118798bc macros/names
+dca6d93bfc67060141c365b7a2f7eb75 macros/runsci2c.bin
+b4927c031b9cc2eaddda8d3b36d2757f macros/runsci2c.sci
+015507fc9712caad0fc78f8576e1d592 macros/runscicode.bin
+dda869e4bae8ab1676801715686005af macros/runscicode.sci
+8dca6ddab5443dbc346f22384957a94d macros/sci2c_gui.bin
+0778caa308f702b40e0f68724f0ea3c4 macros/sci2c_gui.sci
+1d7ac281bdf0340b7f46a007cd75a202 macros/scilab2c.bin
+573b48a721e5682c1e8024643f6dcecc macros/scilab2c.sci
+186dfe3552c0a356d710ecdb6b642fc5 macros/SymbolTable/buildmacros.sce
+5ed94704338b70db6f419f0fd2f7e20e macros/SymbolTable/lib
+50c789ffea495061c01dfc8fc5cd5aad macros/SymbolTable/names
+a61bc10e5d1f99dd328e10c32ba63ccd macros/SymbolTable/ST_AnalyzeScope.bin
+d716fa8c631f31f1cebf8a440c92ab79 macros/SymbolTable/ST_AnalyzeScope.sci
+e30a2ca1a8fb29379ba08cdb0b7c8874 macros/SymbolTable/ST_Del.bin
+c0bdeb010d246043ef563330baaf7c8d macros/SymbolTable/ST_Del.sci
+18aa477a75baaa3d620a6efe1b110fd4 macros/SymbolTable/ST_FindPos.bin
+8ed17c55f492018967232dbdcbb86118 macros/SymbolTable/ST_FindPos.sci
+9fd6a798f89fc53dd04010ae6dfe12dc macros/SymbolTable/ST_Get.bin
+5d1169cd38716e1b5bf03e92ca66429f macros/SymbolTable/ST_Get.sci
+3f75d574fc2d24ffeaac8e25620d51cf macros/SymbolTable/ST_GetInArgInfo.bin
+f6c86a57f23a2b0511fd11ca6a44b3e2 macros/SymbolTable/ST_GetInArgInfo.sci
+af706817bd998ad6edc420ad823d5dd0 macros/SymbolTable/ST_GetSymbolInfo.bin
+e5daa7c30d3494273c0025ab71805479 macros/SymbolTable/ST_GetSymbolInfo.sci
+232b32bfb0f523241c344b87502c9a0d macros/SymbolTable/ST_InsForCntVars.bin
+f6c885f5e7e167615ecb30f7a87b50cf macros/SymbolTable/ST_InsForCntVars.sci
+f70d5c368af39f84007249950366bb35 macros/SymbolTable/ST_InsOutArg.bin
+22d8a473d4491f1b487ea3378f839bde macros/SymbolTable/ST_InsOutArg.sci
+dc342baf9bb4b183c420fa75dac72075 macros/SymbolTable/ST_Load.bin
+cc2bdfc34e42a0842708b330b61f693e macros/SymbolTable/ST_Load.sci
+355c0381cbbe83f2b53a69c15da5330a macros/SymbolTable/ST_MatchSymbol.bin
+0ab129648eaf26d7762939192b147b7b macros/SymbolTable/ST_MatchSymbol.sci
+1420962c38234d143602b82a1ef08499 macros/SymbolTable/ST_Save.bin
+c16a3c951d700392f0f159532d1eee68 macros/SymbolTable/ST_Save.sci
+4587824dc71ba7a9eb3f24c44c6b7042 macros/SymbolTable/ST_Set.bin
+e110b67b46b44bcb9eccae988f741a60 macros/SymbolTable/ST_Set.sci
+186dfe3552c0a356d710ecdb6b642fc5 macros/ToolInitialization/buildmacros.sce
+399f4adcdac0756039d04f6bda2bec81 macros/ToolInitialization/doublecomplex.bin
+b980b3950bf6735138d42817c9df5b3f macros/ToolInitialization/doublecomplex.sci
+383d3b82e79cec7d2bc236a33670cc8d macros/ToolInitialization/floatcomplex.bin
+a4053b5e3420e4be28bf8d4d7783b149 macros/ToolInitialization/floatcomplex.sci
+274f3dc2d10d4d8aafe24763aba7bb7a macros/ToolInitialization/INIT_CreateDirs.bin
+5b23f4434e84d9a783841b3bbd77a8ed macros/ToolInitialization/INIT_CreateDirs.sci
+896ebf4a10dcfc9ef39e51bdda617ff6 macros/ToolInitialization/INIT_FillSCI2LibCDirs.bin
+34f1a54c82dd5fe3e453d80bf8629e04 macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+92605aaf602a79527a73ba155a72031e macros/ToolInitialization/INIT_GenAnnFLFunctions.bin
+682d03ac085a9d855a7057ba0a7f539a macros/ToolInitialization/INIT_GenAnnFLFunctions.sci
+011415a26e4dc3b088686a9a0b8bdb34 macros/ToolInitialization/INIT_GenFileInfo.bin
+86678b716708530270f4941ae7ea3704 macros/ToolInitialization/INIT_GenFileInfo.sci
+df290d3be3fc5fab7079db1321f8333c macros/ToolInitialization/INIT_GenLibraries.bin
+f839fe378df2a79345c693ad0a1a6ed5 macros/ToolInitialization/INIT_GenLibraries.sci
+7055047d5e83eb16328ce81837c27551 macros/ToolInitialization/INIT_GenSharedInfo.bin
+76f1ee245f45810bd22581d37de702c9 macros/ToolInitialization/INIT_GenSharedInfo.sci
+e537b582ae161734233e4816a63cd84b macros/ToolInitialization/INIT_LoadLibraries.bin
+5b5c22194e1d1da9230ee8239c17f6e8 macros/ToolInitialization/INIT_LoadLibraries.sci
+beae7c7b3127e4723e08322384eef5c6 macros/ToolInitialization/INIT_RemoveDirs.bin
+6364871392f56621c877206d6300e4cd macros/ToolInitialization/INIT_RemoveDirs.sci
+89304bd842b9989f69d7af97971b97dc macros/ToolInitialization/INIT_SCI2C.bin
+5007584f280b7ed0c86c4253c20f05ff macros/ToolInitialization/INIT_SCI2C.sci
+1e04a1c4888b552a7030a59d150ce8d6 macros/ToolInitialization/INIT_SCI2CLoader.sce
+7e2f6e284587e3b979958d1ebb222598 macros/ToolInitialization/INIT_SharedInfoEqual.bin
+df9b22f1ed97c812bfdf5acb94323628 macros/ToolInitialization/INIT_SharedInfoEqual.sci
+ab9cfe2a84f94380cb7644f37c20928b macros/ToolInitialization/lib
+921bd32daabe19eb351fb69324a2477c macros/ToolInitialization/ManageNextConversion.bin
+6db4caabde30977ef290cd65dc483e6e macros/ToolInitialization/ManageNextConversion.sci
+d88b45f92f8c7f4da29e6c024cb60f67 macros/ToolInitialization/names
+21f826cff10adaa1c53905544a053e29 macros/ToolInitialization/SCI2CInputParameters.bkp
+21f826cff10adaa1c53905544a053e29 macros/ToolInitialization/SCI2CInputParameters.sce
+d1652938eaa03197157a93c8fff1f902 macros/ToolInitialization/UpdateSCI2CInfo.bin
+556a839b2b66c29b0f4ab60a2f6b6bc6 macros/ToolInitialization/UpdateSCI2CInfo.sci
+3ee4f1685315c7c6d2e285b1bbd49880 Makefile.am
+d82ff2c24bceb8c1553acc8a2661060d Makefile.in
+77603e2f9adf5c782d618b53b7a19015 readme.txt
+f2751e8dc3199c4221622a41bb79de88 readme_visual.txt
+3fa5321e2d02cf33f0ad18d8aba14196 RUN_TESTS/run_tests.bat
+352106db5c74c380555ef5fdde67175c RUN_TESTS/RUN_TESTS.vcxproj
+b577d932363b4a842016bcaf95c0d107 RUN_TESTS/RUN_TESTS.vcxproj.filters
+9d9da7dae91d606bc19e63ac5e61188e scilab2c.sln
+42c9d85f9d7966cd7c5d38c531754419 scilab2c_f2c.sln
+b74917d0e051e642911c38fdf982382f src/c/auxiliaryFunctions/abs/cabsa.c
+264059979ab2d75d250aad3d0aa7dcdb src/c/auxiliaryFunctions/abs/cabss.c
+2e20ec45b04a800727d9de9b2ed03ba9 src/c/auxiliaryFunctions/abs/dabsa.c
+e5b8c7e42ff09c0fbbb4b68416075134 src/c/auxiliaryFunctions/abs/dabss.c
+cfb135a4305d32a64dc7b751d83976c6 src/c/auxiliaryFunctions/abs/Makefile.am
+06b0f92320664662789c478b21e49ae7 src/c/auxiliaryFunctions/abs/Makefile.in
+8c6ab9aed0ab676d75659cc304acbda4 src/c/auxiliaryFunctions/abs/sabsa.c
+26ed513aee90e2d55fff732cf214ba52 src/c/auxiliaryFunctions/abs/sabss.c
+00bce0627f0b776851a7744353a9b6c6 src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj
+4bf81ea767312df2b03df5bf4f61c359 src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj.filters
+963500fbd7854a19349dbc0b4ea2b3f0 src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj
+3915629fcdb9104afb1fe15d29709b38 src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj.filters
+39779a227f44f546a0d4e0f823bbcbc0 src/c/auxiliaryFunctions/abs/testAbs.h
+05b749a87a56cb4c30ea005b94477338 src/c/auxiliaryFunctions/abs/testDoubleAbs.c
+c1c359cdad95cbf9416a605cf0a3c040 src/c/auxiliaryFunctions/abs/testFloatAbs.c
+7fecb039a4a0246eb7966f7c24a8a336 src/c/auxiliaryFunctions/abs/zabsa.c
+12e9519677ff375db5010383f01ff178 src/c/auxiliaryFunctions/abs/zabss.c
+f558855e8eb1adc9765d99245c8d5655 src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj
+d561ffed460cbf240eda04d3c6676fd8 src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj.filters
+d1332076b5e4d788e1db25d2f4b0b2eb src/c/auxiliaryFunctions/conj/cconja.c
+daf96c90493f445479ed135e4e76a758 src/c/auxiliaryFunctions/conj/cconjs.c
+d44e5f9792bd704688991e6b6c819bbf src/c/auxiliaryFunctions/conj/Makefile.am
+37ffb2176bdc7ee3bfe02ecbe45eccb0 src/c/auxiliaryFunctions/conj/Makefile.in
+203f7e0cb5c8d0f6190a011fdbe85c3b src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj
+777af32052ccd83e78166686e58a5dd8 src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj.filters
+155a11de6f55675ff76ded39dcf1b416 src/c/auxiliaryFunctions/conj/testConj.c
+962bf8823a83548e358f364e2c38109c src/c/auxiliaryFunctions/conj/zconja.c
+405732de71406cb307282e7af11a803c src/c/auxiliaryFunctions/conj/zconjs.c
+ebe344aa30abd8a0cbab2f103014b535 src/c/auxiliaryFunctions/find/cfinda.c
+0147adb8175bf90392d3fd01ba927146 src/c/auxiliaryFunctions/find/dfinda.c
+970a6bb239a1daa342a195e0d4e221a2 src/c/auxiliaryFunctions/find/Makefile.am
+f786069b5094dc573a8bba421016e616 src/c/auxiliaryFunctions/find/Makefile.in
+807e1297090f0bbbcee7afe60fe7e243 src/c/auxiliaryFunctions/find/sfinda.c
+5bb4a7f5e959803bfead31051291a9ca src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj
+e18ca817471f6e59315cfeaec21d3113 src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj.filters
+9932f739907c362cff0a21d169177eff src/c/auxiliaryFunctions/find/testFind.c
+f55e1aca4a6314b1d593ed3d59e5f87c src/c/auxiliaryFunctions/find/testFind.h
+2a39f44c51aefa70843476d0dcb3378f src/c/auxiliaryFunctions/find/zfinda.c
+f075b40abc4a328f08d3681b82296dc4 src/c/auxiliaryFunctions/find2d/cfind2da.c
+b0c35d5b34ca1e71449fd3ae875e69c0 src/c/auxiliaryFunctions/find2d/dfind2da.c
+04a2cb61709f62e30b8a2c7e2fceb134 src/c/auxiliaryFunctions/find2d/Makefile.am
+c7832c327280742bd2f8995fc0219368 src/c/auxiliaryFunctions/find2d/Makefile.in
+647f2e7750f6d94e3bd9fac6eb997cef src/c/auxiliaryFunctions/find2d/sfind2da.c
+b874ffdbb07ae3546c23d643f9fa55b6 src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj
+10948b0fa9f59cca5174ac9af91bd366 src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj.filters
+4ad44415b9c9de753ea8f8badb8e7658 src/c/auxiliaryFunctions/find2d/testFind2d.c
+3703bcec433d4cc2a948b8195d79c767 src/c/auxiliaryFunctions/find2d/testFind2d.h
+dfa2c988b671056aae7ee582cc4c41fd src/c/auxiliaryFunctions/find2d/zfind2da.c
+d7b50cde3310e24e496bdb20e11f8f39 src/c/auxiliaryFunctions/frexp/dfrexps.c
+a3ffde698d90e0e04c5c23252243e033 src/c/auxiliaryFunctions/frexp/Makefile.am
+61eaa9d102d045b8a150eedd453735f6 src/c/auxiliaryFunctions/frexp/Makefile.in
+72f89592483dffab2e32e3a5a1ee487a src/c/auxiliaryFunctions/frexp/sfrexps.c
+f6f503cc8626e901f2b3efe959a494f9 src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj
+f19556408ffecf283783f2427bd2d4b0 src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj.filters
+8c42c8fd20b21d5e049466ce736c38e4 src/c/auxiliaryFunctions/frexp/testFrexp.c
+ddd7175802d553fd195da7e997bf18ae src/c/auxiliaryFunctions/includes/abs.h
+005e1981e3aeb0ef7887dbea29773450 src/c/auxiliaryFunctions/includes/conj.h
+3303091e037f83897c8ae3ce81958371 src/c/auxiliaryFunctions/includes/dynlib_auxiliaryfunctions.h
+a10f941923e36579a0009b4d74d71f82 src/c/auxiliaryFunctions/includes/find.h
+6276dd0f5726463a3ddd015fcea19b37 src/c/auxiliaryFunctions/includes/find2d.h
+87b641d08b5b999b866368e1ecf4ecf0 src/c/auxiliaryFunctions/includes/frexp.h
+21beae6866652650dc467cfc648ca514 src/c/auxiliaryFunctions/includes/isempty.h
+1fc0b728611df778d6549a37a229c5f5 src/c/auxiliaryFunctions/includes/isnan.h
+f723a64fd405295d45777662aa8a13a9 src/c/auxiliaryFunctions/includes/length.h
+b4f7c4cd5162daaab6d9fc221d21d060 src/c/auxiliaryFunctions/includes/max.h
+5cdd2f47562daaf5bbd7fc6eec8372cb src/c/auxiliaryFunctions/includes/min.h
+d4b257a75180d311f68899ffeac350ca src/c/auxiliaryFunctions/includes/pythag.h
+be974a3daa7fef05ba6fb43b486bdbf3 src/c/auxiliaryFunctions/includes/rand.h
+3f69920991d6de5b85c800cd966c5caa src/c/auxiliaryFunctions/includes/sign.h
+a817b2614f2a5ead350c3c7d62817c66 src/c/auxiliaryFunctions/includes/size.h
+fe63bc3c6f0de3a7f4a0ed34e3dbe39e src/c/auxiliaryFunctions/includes/type.h
+53ac2b59be15f839be6847f21817ebc8 src/c/auxiliaryFunctions/interfaces/int_abs.h
+cf6321013f194385bc6b4cc4c0fdad0c src/c/auxiliaryFunctions/interfaces/int_conj.h
+b93de897052fe267b742880a1256d3d0 src/c/auxiliaryFunctions/interfaces/int_find.h
+a167c43adb0ee7e530ce1a575b0729db src/c/auxiliaryFunctions/interfaces/int_frexp.h
+6917c033dfe1c557f516ebe2d721a6db src/c/auxiliaryFunctions/interfaces/int_isempty.h
+36ed08799e8e7412cfbd9b1c62c60fee src/c/auxiliaryFunctions/interfaces/int_isnan.h
+8a4c340206801ee8705156d8968e325e src/c/auxiliaryFunctions/interfaces/int_length.h
+1c5992b823478b32d002e8d70a44c1ec src/c/auxiliaryFunctions/interfaces/int_max.h
+5bc1ed42c5603f6cdaeca056aa519cd7 src/c/auxiliaryFunctions/interfaces/int_min.h
+8dcab58d49d359bfd29c3731cf52f002 src/c/auxiliaryFunctions/interfaces/int_pythag.h
+390eab65b6fbba6032a26620a21be2d9 src/c/auxiliaryFunctions/interfaces/int_rand.h
+e62e4a38f27eeffb121216696b5e40b7 src/c/auxiliaryFunctions/interfaces/int_sign.h
+ab51ca0bf5282d83734f9fda87e2d371 src/c/auxiliaryFunctions/interfaces/int_size.h
+65238bf8a21377662b43afc9384aded7 src/c/auxiliaryFunctions/interfaces/int_type.h
+c721483d762d42bef2261b1fa04128bb src/c/auxiliaryFunctions/isempty/Makefile.am
+b016cd340aeec127a77b09a792b1215a src/c/auxiliaryFunctions/isempty/Makefile.in
+05bdaaaca4a0e8df1a5a6f2958e13ce0 src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj
+93b4354f452adbd006e568ef24b496bc src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj.filters
+7d96e085633952f01a03d9f7f9a65954 src/c/auxiliaryFunctions/isempty/testIsEmpty.c
+463f8a3ccb77e76620d0fa2a877db6d4 src/c/auxiliaryFunctions/isempty/testIsEmpty.h
+16d5360e065125d3c28ce50e6dfe7939 src/c/auxiliaryFunctions/isnan/cisnana.c
+bffbdc7d27eab3e856b1fcb0bb2963c0 src/c/auxiliaryFunctions/isnan/cisnans.c
+c1717167494caa5ab64e4328ab6920b6 src/c/auxiliaryFunctions/isnan/disnana.c
+2902bf72c2bfe4d2bcccaab55d1d1c32 src/c/auxiliaryFunctions/isnan/disnans.c
+012e9b39c78f7cedf4fd3f14e9e41abb src/c/auxiliaryFunctions/isnan/Makefile.am
+a4040faae257b21cfedb772f4de3804b src/c/auxiliaryFunctions/isnan/Makefile.in
+468a4e2571b598fccb0234f4ee82de7b src/c/auxiliaryFunctions/isnan/sisnana.c
+ab5548a21ecfe77a9bcfc300d8df88e9 src/c/auxiliaryFunctions/isnan/sisnans.c
+0459f8ff3226ebb04ca7a4ab42b5c7eb src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj
+fd946da708aab38b53098bdadec8fe19 src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj.filters
+bfaf162d0b0d2858cf3f5b9b08999837 src/c/auxiliaryFunctions/isnan/testIsNan.c
+aac9039d0fc982f1513c7de42730163a src/c/auxiliaryFunctions/isnan/testIsNan.h
+439148399167a52b23efd2ccbc3d409d src/c/auxiliaryFunctions/isnan/zisnana.c
+1fa66890f36de7de8668ffd76ec47527 src/c/auxiliaryFunctions/isnan/zisnans.c
+a908236fb5330dcc2c465eaf05faa499 src/c/auxiliaryFunctions/length/Makefile.am
+655a30d6bbfb2b092a5d1316a7e2755c src/c/auxiliaryFunctions/length/Makefile.in
+651f7d82e2892f366c726b0bc816cb1b src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj
+be74fc6a7ed4380a9b7efa1ca851b88a src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj.filters
+b1169331ebf2de10d28aeed14af841f1 src/c/auxiliaryFunctions/length/testLength.c
+82d5767e3ca0a61fcb0dc44f9501d2e3 src/c/auxiliaryFunctions/length/testLength.h
+44dad7236c830702731c8c7d6ed309dc src/c/auxiliaryFunctions/Makefile.am
+8e5946aacd48cd97785aa397c272316b src/c/auxiliaryFunctions/Makefile.in
+1cd1cef2eed216480ec96b125f35136f src/c/auxiliaryFunctions/pythag/cpythags.c
+1e061a6fbe8f6782206ec69129d76116 src/c/auxiliaryFunctions/pythag/dpythags.c
+e99488ff9991ef538cff694d13b2fc45 src/c/auxiliaryFunctions/pythag/Makefile.am
+5482eb27329089c6a1f254eb6eb86713 src/c/auxiliaryFunctions/pythag/Makefile.in
+2cd86e51b6ad910ee9600c07fb9fca32 src/c/auxiliaryFunctions/pythag/spythags.c
+9a5f9657f8b7d9049e8d641aacbfa739 src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj
+e231b608bf5be4479fca42945ad1e6ec src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj.filters
+7c380024317ae681fbcff5d702175fa0 src/c/auxiliaryFunctions/pythag/testPythag.c
+08c6b8d136ab55e9a83bb3ced2bffd30 src/c/auxiliaryFunctions/pythag/testPythag.h
+6878d0eac0e25b84d834f471bd31c9f0 src/c/auxiliaryFunctions/pythag/zpythags.c
+e39de8d96bbf4e5c28d44fe645bc9c36 src/c/auxiliaryFunctions/rand/cranda.c
+5eafdff981d1f9fd526e249831f5b749 src/c/auxiliaryFunctions/rand/crands.c
+9fd5781cf6da6ea9562859e55a340c5c src/c/auxiliaryFunctions/rand/dranda.c
+d9eb9e5e1d203241e15e6f448b1ef5cf src/c/auxiliaryFunctions/rand/drands.c
+5466d4aa57a6b34b9ecc0dabedc72ffc src/c/auxiliaryFunctions/rand/Makefile.am
+a4e83be4085391347d6e42708f738b49 src/c/auxiliaryFunctions/rand/Makefile.in
+78037194d9354aa540055c1224422e01 src/c/auxiliaryFunctions/rand/sranda.c
+c9f91724f488be9ccc1ae90a6dcd8eb7 src/c/auxiliaryFunctions/rand/srands.c
+c88791f2707d3791d38161f8a2953cfc src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj
+97b216f6b6e0dafe6df266992aee0b59 src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj.filters
+6198a08277ce1633661fb44ae05a43a7 src/c/auxiliaryFunctions/rand/testRand.c
+6772aa74570ce6a6fad861751aa45c02 src/c/auxiliaryFunctions/rand/testRand.h
+faa122b28bf67cb7105bc3a79fd9d600 src/c/auxiliaryFunctions/rand/zranda.c
+fc4267107d74fb43940007ef9236ef90 src/c/auxiliaryFunctions/rand/zrands.c
+bb2c508afd7c74d0975c5d3a27b26100 src/c/auxiliaryFunctions/sign/csigna.c
+04b5200569af715b329e0b49e77e3033 src/c/auxiliaryFunctions/sign/csigns.c
+926af1bd38543aceea6edfb8d21c503f src/c/auxiliaryFunctions/sign/dsigna.c
+bc9b55a7b32f3a2ea97bae65ef78628b src/c/auxiliaryFunctions/sign/dsigns.c
+ffaea5560b6ea6873facee66dafafd0b src/c/auxiliaryFunctions/sign/Makefile.am
+e0c65df2a6aa0aa514a92486eea438f2 src/c/auxiliaryFunctions/sign/Makefile.in
+d379b0963555b3cd30c9a9d063b4f765 src/c/auxiliaryFunctions/sign/ssigna.c
+6ad09ce5e56f4d5b14ee7b3a2555a63d src/c/auxiliaryFunctions/sign/ssigns.c
+3ff7f0099e3f30ea0af26df4a1bc128f src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj
+1f4def7539b3ae55fefbd1398bfe062a src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj.filters
+b34199beedf15b7aa201b06bd73f881d src/c/auxiliaryFunctions/sign/testSign.c
+515651f37a2f831ec1c37cc38c129457 src/c/auxiliaryFunctions/sign/testSign.h
+63a6e111650386184d85dbde7b15b656 src/c/auxiliaryFunctions/sign/zsigna.c
+c783635c6a50278768767f693d30fd4b src/c/auxiliaryFunctions/sign/zsigns.c
+dadda42b04e6e052fa90e25584cb26e0 src/c/auxiliaryFunctions/size/dallsizea.c
+a31489bcb2b7fb7e922b2637dae557aa src/c/auxiliaryFunctions/size/Makefile.am
+7554f4e5c493f2867728eeb71b6abf32 src/c/auxiliaryFunctions/size/Makefile.in
+ca33a7aa8b90d744d8b1027570eec2e7 src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj
+607730dd5bcdeddfcdc6ca7f83204d59 src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj.filters
+46bc0b78d0351d61c1a8a98ae8108b2a src/c/auxiliaryFunctions/size/testSize.c
+a73836c686be1f6a024e88481292c645 src/c/auxiliaryFunctions/size/testSize.h
+dd76a3a1a28dc23b9797ea5ad18086d8 src/c/auxiliaryFunctions/type/Makefile.am
+27ba49d6816f88ed3cab3ed7bc2fbba2 src/c/auxiliaryFunctions/type/Makefile.in
+3f9e48185590df431ff8c2830bfb6f04 src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj
+ab6b1efe515f53825c891f58ca8353f9 src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj.filters
+6e5abef772de0aa3c31c4139bf46be81 src/c/auxiliaryFunctions/type/testType.c
+9d3d82bf93d10565f3c7f79868294e74 src/c/auxiliaryFunctions/type/testType.h
+4fd8deff29f7725413523892a0e14cf9 src/c/elementaryFunctions/acos/cacosa.c
+7f4d83c6de7122dd7cbf0757b5acc3c8 src/c/elementaryFunctions/acos/cacoss.c
+8cd84772ca6959ca42f723e5ee1ff9dc src/c/elementaryFunctions/acos/dacosa.c
+7346c3a13d922299a7e2641d2d2f3c3b src/c/elementaryFunctions/acos/dacoss.c
+126a10d92c82ef31dbe45db0c736942c src/c/elementaryFunctions/acos/Makefile.am
+297b5e71199e49547987f4bf18a55e70 src/c/elementaryFunctions/acos/Makefile.in
+aea82b1a319575ee24cba8a3fdbd3bcf src/c/elementaryFunctions/acos/sacosa.c
+5adc0d93900ba8d9276c527e0269c409 src/c/elementaryFunctions/acos/sacoss.c
+652630ab310201143e64e551ef260773 src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj
+68e4d971e1f3fc7953855b73651e1280 src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj.filters
+5ede8e819591928b05670db5c6cb94b1 src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj
+a9037c16c596879bbad1e417e445938d src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj.filters
+8b9e93d9ada425372a45ea16da2cace8 src/c/elementaryFunctions/acos/testAcos.h
+b8ac51434b6fb928e7696758f001091d src/c/elementaryFunctions/acos/testCplxAcos.c
+a338b8d8afd711d0a8e6af7156368e3c src/c/elementaryFunctions/acos/testRealsAcos.c
+8c4dd13484a886c567aeca04083dee6a src/c/elementaryFunctions/acos/zacosa.c
+7288053a3894fba3c83f5eefa23c2573 src/c/elementaryFunctions/acos/zacoss.c
+fc7d5534d23c0e7453047cc1ff299862 src/c/elementaryFunctions/acosh/cacosha.c
+e11ed37b10dd2997b570ab317ac88b83 src/c/elementaryFunctions/acosh/cacoshs.c
+9d64f138f8aa8f11d4d4828305843195 src/c/elementaryFunctions/acosh/dacosha.c
+22e62dda7cfb8893941cc4f518b6b88b src/c/elementaryFunctions/acosh/dacoshs.c
+b235be57a7e45ec3ab81329fbcf614e5 src/c/elementaryFunctions/acosh/Makefile.am
+96909382195f8f8f297d60d3a7dc209a src/c/elementaryFunctions/acosh/Makefile.in
+844c9abcc02d319499283e4566f757b7 src/c/elementaryFunctions/acosh/sacosha.c
+60ca585f945e9c8dfe31f66fa46f9ae6 src/c/elementaryFunctions/acosh/sacoshs.c
+871426893ee0507c81ed19ebd369007f src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj
+8d105f8d968153c7d5dfb6da1226a40b src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj.filters
+9cf0ded2008081842d73eb1e1a92ffa8 src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj
+bc2628218cedb205a14881f7cdca5ba6 src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj.filters
+d4d06db1d77f4afedbb6b67aec9c6064 src/c/elementaryFunctions/acosh/testAcosh.h
+85027613bf18594a21a1df1a293842d3 src/c/elementaryFunctions/acosh/testDoubleAcosh.c
+c461a86af74a040d8aefaa773fb25783 src/c/elementaryFunctions/acosh/testFloatAcosh.c
+32b1e9d9b7ebbba4f533434b1bafbb2e src/c/elementaryFunctions/acosh/zacosha.c
+f63ce9f84dbb0391ae99382336137d51 src/c/elementaryFunctions/acosh/zacoshs.c
+95ad95e1a6e8ebdc4b0e2596e399126d src/c/elementaryFunctions/asin/casina.c
+3358e7ce8030b97580584af0a776bc74 src/c/elementaryFunctions/asin/casins.c
+8cfbb3e00119b4f2875afca33c28d210 src/c/elementaryFunctions/asin/dasina.c
+13daa677f027942a12e00a05574d578f src/c/elementaryFunctions/asin/dasins.c
+83fb830d2f345cc39e26a8afd9395d9c src/c/elementaryFunctions/asin/Makefile.am
+eba1410544332dfcf8f5ca611dba0d3b src/c/elementaryFunctions/asin/Makefile.in
+f9a13178b6a7f863a33d516cff7479a2 src/c/elementaryFunctions/asin/sasina.c
+753da62e81155b1061b171bb15b47951 src/c/elementaryFunctions/asin/sasins.c
+fc1f8cd46fe580693cf8b6e1ec36e59e src/c/elementaryFunctions/asin/testAsin.h
+97f97a4c65c5155b55c531fadf96561b src/c/elementaryFunctions/asin/testDoubleAsin.c
+51bad338233626b8cc8b2fbefea65020 src/c/elementaryFunctions/asin/testFloatAsin.c
+bcec665b84a7b7a7999a9b9844e87cf4 src/c/elementaryFunctions/asin/zasina.c
+e7e9f237941a18f6b5a74394f94ad2ff src/c/elementaryFunctions/asin/zasins.c
+60c9300182e841f0d12f364b1046c389 src/c/elementaryFunctions/asinh/casinha.c
+c393e2c461649dc5bcb958049f2ccbd6 src/c/elementaryFunctions/asinh/casinhs.c
+851f66585a8ad2aa67dfa087fe9c6308 src/c/elementaryFunctions/asinh/dasinha.c
+9d269734db1980336ccfd14c4285acc3 src/c/elementaryFunctions/asinh/dasinhs.c
+55b750faf727d690947750f4907a00cb src/c/elementaryFunctions/asinh/Makefile.am
+05eedab01eb686ab57314ed39cce3e26 src/c/elementaryFunctions/asinh/Makefile.in
+0b76fe521916a1ad995e7b5be1cfb35d src/c/elementaryFunctions/asinh/sasinha.c
+2f4358875ada6b4178bfa79946bbd1d2 src/c/elementaryFunctions/asinh/sasinhs.c
+c41016ad697e3badb7868094916acb69 src/c/elementaryFunctions/asinh/testAsinh.h
+23b80e64e768d8f059b137b60ad503b5 src/c/elementaryFunctions/asinh/testDoubleAsinh.c
+f0fce9b238f9b9d45e7da27e1ae1452e src/c/elementaryFunctions/asinh/testFloatAsinh.c
+cf4bbbe5286ed100913db2d1ed40af45 src/c/elementaryFunctions/asinh/zasinha.c
+d8fd24b5a7ef94066a5a50bef5c6a349 src/c/elementaryFunctions/asinh/zasinhs.c
+8ef8224b23d61b6bbbc023289dd2f0b5 src/c/elementaryFunctions/atan/catana.c
+814b09d818f09e4d0c964d29d980edad src/c/elementaryFunctions/atan/catans.c
+dad0bbe9040a16f8996cc0d6cacdbcae src/c/elementaryFunctions/atan/datana.c
+8beda85f4b44f0eb2b6045c57cc6a8a7 src/c/elementaryFunctions/atan/datans.c
+d1ad5fbfada696196ffe4f40ac479435 src/c/elementaryFunctions/atan/Makefile.am
+4060f585d534029b7bb7200b28df6293 src/c/elementaryFunctions/atan/Makefile.in
+104788e5ccb4851c38f322b98667d34a src/c/elementaryFunctions/atan/satana.c
+0e02409e66d69b6db1c36cf0a045807b src/c/elementaryFunctions/atan/satans.c
+130677e44df7cc43f3e9eca60e967daa src/c/elementaryFunctions/atan/testAtan.h
+d5f62ed8cad1b8b4d6f6ae6a502083f0 src/c/elementaryFunctions/atan/testDoubleAtan.c
+d29dbba812ae8714cf43b8dfd9fc3041 src/c/elementaryFunctions/atan/testFloatAtan.c
+5081ebe0a9deea269a1713c020111154 src/c/elementaryFunctions/atan/zatana.c
+fdf1d69381ccd510d1373ef65ec41289 src/c/elementaryFunctions/atan/zatans.c
+75ad63dced32c40caab8cae94b60621c src/c/elementaryFunctions/atan2/datan2a.c
+8ee6e2fbd80e0fe02e5a234b50a47063 src/c/elementaryFunctions/atan2/datan2s.c
+797129b31303585970f296f0b3786a76 src/c/elementaryFunctions/atan2/Makefile.am
+fd808c52e08bb23d04371c418ad5e0ac src/c/elementaryFunctions/atan2/Makefile.in
+c4d245e903e911aa67cba52f31e38ec9 src/c/elementaryFunctions/atan2/satan2a.c
+91ed430530280b88e903cff679407abb src/c/elementaryFunctions/atan2/satan2s.c
+1c592a9de2d74cd701cb087e25ce017b src/c/elementaryFunctions/atan2/testAtan2.c
+b87bd78ba9654b0d61a55b99790af9cf src/c/elementaryFunctions/atanh/catanha.c
+ae1d6ff46fc4c690f7ba0c1d1c6ba4be src/c/elementaryFunctions/atanh/catanhs.c
+1aa4d5808a088210640bee5da51a822f src/c/elementaryFunctions/atanh/datanha.c
+6ac7fc88b5351f1fd23fc1b8db3f459a src/c/elementaryFunctions/atanh/datanhs.c
+82fe60968436abba8be7135f9d169100 src/c/elementaryFunctions/atanh/Makefile.am
+284ba07064d30f4138b2d4ba2b0efb85 src/c/elementaryFunctions/atanh/Makefile.in
+c96d4911aeb94bfb89468eba13f5af5a src/c/elementaryFunctions/atanh/satanha.c
+2cb175ed0787cd8f1a8e876b30fed6db src/c/elementaryFunctions/atanh/satanhs.c
+73fb6a0f4e959456b9754fee7be692d4 src/c/elementaryFunctions/atanh/testAtanh.h
+587c2c17b46f61cddc2e451d49c6cc96 src/c/elementaryFunctions/atanh/testDoubleAtanh.c
+81c9cfcbe7af8df234e00960cc859b8a src/c/elementaryFunctions/atanh/testFloatAtanh.c
+3483168334c3c7d43b49cdba29c60de0 src/c/elementaryFunctions/atanh/zatanha.c
+6fb39a3a5cd2a668ac352ce15f4f6f3c src/c/elementaryFunctions/atanh/zatanhs.c
+41711eaad72a80affbf3f5e83a4aefe9 src/c/elementaryFunctions/auxiliaryFunctions_Import.def
+a5b34a790a326243eabf938fce1e89b1 src/c/elementaryFunctions/ceil/cceila.c
+6b68f1a2983cc79f8883d44d20b5b586 src/c/elementaryFunctions/ceil/cceils.c
+92417444c0e3fbe064fb4ee4fc726950 src/c/elementaryFunctions/ceil/dceila.c
+d4d163bf9c23259e9464e640eb4171d9 src/c/elementaryFunctions/ceil/dceils.c
+d3adb4ab355c39fb9cc8e048a13aed80 src/c/elementaryFunctions/ceil/Makefile.am
+c8806328bdeab92a8b77f4272f6adfad src/c/elementaryFunctions/ceil/Makefile.in
+50ff0c8db00724db339674efe3f6e599 src/c/elementaryFunctions/ceil/sceila.c
+bf891f5264f65a0ce6f00fa06cdd0846 src/c/elementaryFunctions/ceil/sceils.c
+c2aee157696477a0f12f155d9d16fb7e src/c/elementaryFunctions/ceil/testDoubleCeil.c
+a2be4b0248ad26ee4cedd12c1abcd2fa src/c/elementaryFunctions/ceil/testFloatCeil.c
+a19dda96e908111ee8b22d9850361975 src/c/elementaryFunctions/ceil/zceila.c
+45625d8a307ee09a2179f4238a18dfb1 src/c/elementaryFunctions/ceil/zceils.c
+c274dfa492d53df14e140ec771be9b12 src/c/elementaryFunctions/cos/ccosa.c
+b58811e7cdec3d25b604c82fa9f46749 src/c/elementaryFunctions/cos/ccoss.c
+06fb9f80e00c1c489aef89f7d4f9c1cd src/c/elementaryFunctions/cos/dcosa.c
+b1ec66d63562c362ce141ac1a075a176 src/c/elementaryFunctions/cos/dcoss.c
+cba4218212c7e1543934ee6e7df0922c src/c/elementaryFunctions/cos/Makefile.am
+4f072a09a3c373216cd00c5287316b55 src/c/elementaryFunctions/cos/Makefile.in
+5867edb486e229ac47572558ae7724e9 src/c/elementaryFunctions/cos/scosa.c
+fd47e142faac7f2948e405af51c92bce src/c/elementaryFunctions/cos/scoss.c
+c9a25458b5a120be734082f239aba5ef src/c/elementaryFunctions/cos/testCos.h
+361439ed500170bde505a163b0323f0e src/c/elementaryFunctions/cos/testDoubleCos.c
+7c10443b181c7b16a02b7d4b95640a09 src/c/elementaryFunctions/cos/testFloatCos.c
+2c8d3a0559f1299c79d96d4cad7bd605 src/c/elementaryFunctions/cos/zcosa.c
+291d08007cd22ac381bae28d9258d477 src/c/elementaryFunctions/cos/zcoss.c
+4cb5701216ed511697f004f8c8382ee2 src/c/elementaryFunctions/cosh/ccosha.c
+59db20ec7862c168c4ab73b0196225c1 src/c/elementaryFunctions/cosh/ccoshs.c
+c886d070b033d7c9ffd817d97d9a0533 src/c/elementaryFunctions/cosh/dcosha.c
+d14cfd8c7086eaf511d9ef5aee8fcfb1 src/c/elementaryFunctions/cosh/dcoshs.c
+fa0d8bc39f6e5b2939e5c1337fa78d9e src/c/elementaryFunctions/cosh/Makefile.am
+5eb929939df1c9b966d53fd2259f7232 src/c/elementaryFunctions/cosh/Makefile.in
+0ba38f0ef381b8df227675d624f851db src/c/elementaryFunctions/cosh/scosha.c
+2f431a37f3cdd0c7fdce14714f2a69e6 src/c/elementaryFunctions/cosh/scoshs.c
+d2ec33c57264a501658a49168dd3a36a src/c/elementaryFunctions/cosh/testCosh.h
+671b232126e0b3810903c1971f141c78 src/c/elementaryFunctions/cosh/testDoubleCosh.c
+d140c13898c8e595f380d7f987cb1913 src/c/elementaryFunctions/cosh/testFloatCosh.c
+08cd8c685051fe272f1e9dffdf3899e9 src/c/elementaryFunctions/cosh/zcosha.c
+aefe9e53457a9f3f2009925dfe9639bf src/c/elementaryFunctions/cosh/zcoshs.c
+77d496bb6c5add0ab60490ad2c5d243e src/c/elementaryFunctions/elementaryFunctions.vcxproj
+6ce978019bbcca2e0a4241c65f00f20b src/c/elementaryFunctions/elementaryFunctions.vcxproj.filters
+9cd145417572c0ccc251aa8ca4227485 src/c/elementaryFunctions/exp/cexpa.c
+1ef8e44875ce96ec02d8cad4512f9536 src/c/elementaryFunctions/exp/cexps.c
+2d37ccf49b86412323eb3c2ec003fb21 src/c/elementaryFunctions/exp/dexpa.c
+470940dc2b847046e697176007d78caf src/c/elementaryFunctions/exp/dexps.c
+77c83e8363fc6a0655c63d5e07d19cf5 src/c/elementaryFunctions/exp/Makefile.am
+c8905ab3d7759a4a91f0380b5542984c src/c/elementaryFunctions/exp/Makefile.in
+b4edab666b06128ae74ba11b95ece500 src/c/elementaryFunctions/exp/sexpa.c
+5b518fb0726546e11d1ab0ae3ec71690 src/c/elementaryFunctions/exp/sexps.c
+f20714a213c526d7d52c175ccf990a3d src/c/elementaryFunctions/exp/testDoubleExp.c
+0d0667b737f6e33c7be32cd1ee75221a src/c/elementaryFunctions/exp/testExp.h
+69967fab5d7f136cd243ff3e62712353 src/c/elementaryFunctions/exp/testFloatExp.c
+9383565e63a7139b87609054b2c77a1e src/c/elementaryFunctions/exp/zexpa.c
+6cfce61057da2975679c9e382782197c src/c/elementaryFunctions/exp/zexps.c
+5a88a39c53bf47d352ef0f87de3af930 src/c/elementaryFunctions/exp10/cexp10a.c
+582ca1d544c46acdb83efac4259a0a45 src/c/elementaryFunctions/exp10/cexp10s.c
+0e54a5799ca6979e2d00f2ca6b14732c src/c/elementaryFunctions/exp10/dexp10a.c
+990f35d98e371a15a339cf9b885dcca1 src/c/elementaryFunctions/exp10/dexp10s.c
+e0db69608739fee62182cf50088a08e6 src/c/elementaryFunctions/exp10/Makefile.am
+2be9cfe5bad3911eac29c5d5683e9fc6 src/c/elementaryFunctions/exp10/Makefile.in
+97bdcfd25b44ae831bf76bc6d770da5a src/c/elementaryFunctions/exp10/sexp10a.c
+fd63af795715f4fecb763b41132f0156 src/c/elementaryFunctions/exp10/sexp10s.c
+9620915b03aebdd035d42865a5344ec5 src/c/elementaryFunctions/exp10/testDoubleExp10.c
+db44a55ddbb166c14956fa521e3d7e35 src/c/elementaryFunctions/exp10/testExp10.h
+9e73ad626096a606758a7cbe160a18a8 src/c/elementaryFunctions/exp10/testFloatExp10.c
+36a53f599643b033ae3b2a6c6e9a51d0 src/c/elementaryFunctions/exp10/zexp10a.c
+da70fc6b1874d82d378b58c9149e1638 src/c/elementaryFunctions/exp10/zexp10s.c
+56055b6c277d4dd28db785d4e247c407 src/c/elementaryFunctions/fix/cfixa.c
+ddd583747ef1cce8702736fc9fb9faa7 src/c/elementaryFunctions/fix/cfixs.c
+51c6344da25b2db1fe1f60583810f330 src/c/elementaryFunctions/fix/dfixa.c
+fee90d265634900f0233e78989e9c838 src/c/elementaryFunctions/fix/dfixs.c
+cd51a29218a1966ebcdf4022cf7e16fa src/c/elementaryFunctions/fix/Makefile.am
+9bfb2d5b74846de856bb6762c14b3545 src/c/elementaryFunctions/fix/Makefile.in
+da66cf543e51d0954339f8ddd6250932 src/c/elementaryFunctions/fix/sfixa.c
+6f74bdf4f3387b4eac2ee3ad1826eaad src/c/elementaryFunctions/fix/sfixs.c
+4da280531456bba4d1977591f03a6e6f src/c/elementaryFunctions/fix/testDoubleFix.c
+dcacd5ee18a77fb041111c7bac9788f8 src/c/elementaryFunctions/fix/testFloatFix.c
+72fce51a6ddd2a663f2b4d07e5d34d31 src/c/elementaryFunctions/fix/zfixa.c
+6d16feadb3ec4352a0ec809b95e0f8e9 src/c/elementaryFunctions/fix/zfixs.c
+8b6449d1d285426edb3d52bca5571a06 src/c/elementaryFunctions/floor/cfloora.c
+97faecb1bb238e52646ce5d7c184411a src/c/elementaryFunctions/floor/cfloors.c
+defa9c97f3c41fa185b9c430942369c1 src/c/elementaryFunctions/floor/dfloora.c
+9365533c690a82ad5f25c60c0bd9814e src/c/elementaryFunctions/floor/dfloors.c
+a03f56386a6109f7473d1bd8bfc735c1 src/c/elementaryFunctions/floor/Makefile.am
+3053d32826c7d14b292a3a9dba631ca2 src/c/elementaryFunctions/floor/Makefile.in
+a15d114cba95d84d579aebda491f3347 src/c/elementaryFunctions/floor/sfloora.c
+a36b92f978cb29d6235f661fa04ea146 src/c/elementaryFunctions/floor/sfloors.c
+d6b836a18fe4dd018168efca6b62cb92 src/c/elementaryFunctions/floor/testDoubleFloor.c
+de749473edb92cb5ba8654c7190cb75b src/c/elementaryFunctions/floor/testFloatFloor.c
+a4839f99f4b164d0ad075d762548b504 src/c/elementaryFunctions/floor/zfloora.c
+e77e117ba6b24992f4d630bb3205265a src/c/elementaryFunctions/floor/zfloors.c
+3e4e1ad90954c769d586cab6458da426 src/c/elementaryFunctions/includes/acos.h
+82978d28be41af2267a1938cbde1bb3f src/c/elementaryFunctions/includes/acosh.h
+30a047a88ba81fabd0494ce8b0980a30 src/c/elementaryFunctions/includes/asin.h
+cca242fe4806f3519f62ae32334df233 src/c/elementaryFunctions/includes/asinh.h
+36d58ddea98482e52348c251a6d65423 src/c/elementaryFunctions/includes/atan.h
+450665b56eab6c48e4dcafad544276c4 src/c/elementaryFunctions/includes/atan2.h
+bebd9e47120edf1b2749d1b0cf16f53a src/c/elementaryFunctions/includes/atanh.h
+745b647b79160d5c94ceed307d8686a3 src/c/elementaryFunctions/includes/ceil.h
+6a71ddb4dd5e8cc2db7446af844059b0 src/c/elementaryFunctions/includes/cos.h
+c9d49e0982a7326f4d3ae56b4a8bd88b src/c/elementaryFunctions/includes/cosh.h
+baa8b2178b88730c036381267500343a src/c/elementaryFunctions/includes/dynlib_elementaryfunctions.h
+ab2d9cc0ec4a9106fcf6df36bc23d56c src/c/elementaryFunctions/includes/exp.h
+f6ae978dcf6a872d3f93d1364fe7490e src/c/elementaryFunctions/includes/exp10.h
+60379098829df997491a3670a964d7f0 src/c/elementaryFunctions/includes/fix.h
+da5eb4331b62cd247e31faf11f97513a src/c/elementaryFunctions/includes/floor.h
+573dd50ff2a9937668d86eb1ec8048d0 src/c/elementaryFunctions/includes/int.h
+aa66745930763145acde0c62fd071004 src/c/elementaryFunctions/includes/lnp1m1.h
+fd2e93484bdb57620bfc99667bd79d42 src/c/elementaryFunctions/includes/log.h
+30990c0ae0e3a21c24c8cedbb6e924a9 src/c/elementaryFunctions/includes/log10.h
+31f663d9a9db70bd985f9c8fb5dc4c14 src/c/elementaryFunctions/includes/log1p.h
+ad8a7f0b8e967deaaf748aa64b411f74 src/c/elementaryFunctions/includes/pow.h
+78123f29b57bd54a35e338e5581a93b0 src/c/elementaryFunctions/includes/round.h
+7bdb97eb8d33fe05bab3e515ee8b9b62 src/c/elementaryFunctions/includes/sin.h
+171517a9c7c86ce44cdac5c1365973ff src/c/elementaryFunctions/includes/sinh.h
+d725a7060e04a533166b11cbfa25a190 src/c/elementaryFunctions/includes/sqrt.h
+949e462581592ed9ecfcd433744a6730 src/c/elementaryFunctions/includes/tan.h
+8286ab120e287c417ae06a4326f3ed3a src/c/elementaryFunctions/includes/tanh.h
+d36724f4d1dc73a2ddf05c3bb6ddee7d src/c/elementaryFunctions/int/cinta.c
+15b85e2b1625e3f94bc08a5a2ab80c91 src/c/elementaryFunctions/int/cints.c
+fa7155b9a8f9610a1fa4779daee2a53a src/c/elementaryFunctions/int/dinta.c
+60b54b902c8e3afa44885bcb17a474d6 src/c/elementaryFunctions/int/dints.c
+90d618067bc65fb84aeb211e8b89bbec src/c/elementaryFunctions/int/Makefile.am
+97aa567bde463b7d4341675433b8f8d8 src/c/elementaryFunctions/int/Makefile.in
+5881490f2276b634dc493de5ab1d51fe src/c/elementaryFunctions/int/sinta.c
+da39883df36d18d57571107b0e9f1aee src/c/elementaryFunctions/int/sints.c
+4e877a23f14c53de5f05785ecfa14731 src/c/elementaryFunctions/int/testDoubleInt.c
+e8b198ccaaf803b6094f21ace1f550ef src/c/elementaryFunctions/int/testFloatInt.c
+b4f6365613261cf7b27f22c39c53c64d src/c/elementaryFunctions/int/zinta.c
+ef288a803a00304e43328a092ea453cb src/c/elementaryFunctions/int/zints.c
+911ce569fd46b8c3db262c2963be3375 src/c/elementaryFunctions/interfaces/int_acos.h
+468ee88be8e9755229320705c76b755a src/c/elementaryFunctions/interfaces/int_acosh.h
+f4b6e31221d591d50e9a066a5781d89e src/c/elementaryFunctions/interfaces/int_asin.h
+7721f8684bb52e3dea2ed7ae21352d79 src/c/elementaryFunctions/interfaces/int_asinh.h
+dc0b9f13c801b5d1548d68836322ccba src/c/elementaryFunctions/interfaces/int_atan.h
+a86d05418f08441f78d124e93545b8c0 src/c/elementaryFunctions/interfaces/int_atanh.h
+6425a9fe3e9d1975313832e6c82c2e81 src/c/elementaryFunctions/interfaces/int_ceil.h
+0f91e912f2b40d6e39fab50300c1952e src/c/elementaryFunctions/interfaces/int_cos.h
+e40ddd850b6de288e293391d47859b75 src/c/elementaryFunctions/interfaces/int_cosh.h
+45bb96e14357c6e4f1149c93ab4c7acc src/c/elementaryFunctions/interfaces/int_exp.h
+7eca9064e8ac4f6e7fdff4259ef77032 src/c/elementaryFunctions/interfaces/int_exp10.h
+6a93b4ad91e12cd7657de04bbdb2b56a src/c/elementaryFunctions/interfaces/int_fix.h
+84872a9ddbd053406879d14b558a8111 src/c/elementaryFunctions/interfaces/int_floor.h
+68932204cb4bf8c39b9526aa7e5dcdfa src/c/elementaryFunctions/interfaces/int_int.h
+e284998f270b32d3d3232c9802666b83 src/c/elementaryFunctions/interfaces/int_lnp1m1.h
+cee5d3ffab6243b4d7091c0e2acbbbed src/c/elementaryFunctions/interfaces/int_log.h
+70d4fbf2aa2b77179b49bc3a0b232a60 src/c/elementaryFunctions/interfaces/int_log10.h
+ae33b21762264e7eb6e8b9bc0528ca17 src/c/elementaryFunctions/interfaces/int_log1p.h
+24a21dd3052f27effe37d3c2ed0d375e src/c/elementaryFunctions/interfaces/int_OpDotHat.h
+caf594c6ec24941cde891758f6dd7107 src/c/elementaryFunctions/interfaces/int_OpHat.h
+2ea268d5445522e4989cc50275d4efc4 src/c/elementaryFunctions/interfaces/int_pow.h
+18781199fa5fa47a910d9cc11c7f2105 src/c/elementaryFunctions/interfaces/int_round.h
+35dd73046f820dfa9fb6bccf5a721b14 src/c/elementaryFunctions/interfaces/int_sin.h
+4701c2103dcf91a901030c00aaacf473 src/c/elementaryFunctions/interfaces/int_sinh.h
+05368e2e4b887f2177c98267a665f8ed src/c/elementaryFunctions/interfaces/int_sqrt.h
+f144c3d0e237d70da8de3e95b6b53ebd src/c/elementaryFunctions/interfaces/int_tan.h
+0d19e784f2d703962cd92851766e904c src/c/elementaryFunctions/interfaces/int_tanh.h
+c4d18c28a749bc1b9e45d431dc7019c6 src/c/elementaryFunctions/lnp1m1/dlnp1m1s.c
+19b9f978a941e7c5b131188a1696f1ac src/c/elementaryFunctions/lnp1m1/Makefile.am
+49abae8b575529f0cd2232667b4613d8 src/c/elementaryFunctions/lnp1m1/Makefile.in
+b6abc0fa65c29587d92be1b3eb393164 src/c/elementaryFunctions/lnp1m1/slnp1m1s.c
+e06eb062c99144a06afe60ae81b2b5e3 src/c/elementaryFunctions/lnp1m1/testDoubleLnp1m1.c
+e06849457e7689cf9c2be8f6b5b24e48 src/c/elementaryFunctions/lnp1m1/testFloatLnp1m1.c
+765c9b3b10c9ff5e181379dbe3e2fead src/c/elementaryFunctions/lnp1m1/testLnp1m1.h
+a964114fbbf1c26f4b127ecb8acda0e7 src/c/elementaryFunctions/log/cloga.c
+d73df7be0e8aaaeebe34d1ffda476ba6 src/c/elementaryFunctions/log/clogs.c
+3676b0eb54ef4a98add664e6f92eab69 src/c/elementaryFunctions/log/dloga.c
+13f873f7c6b9e7ea7d233ec95c99ac65 src/c/elementaryFunctions/log/dlogs.c
+6ce55f24cabb558742f5695c15fb3962 src/c/elementaryFunctions/log/Makefile.am
+bcdafbf21a9a4d2a00728f777c3aa861 src/c/elementaryFunctions/log/Makefile.in
+e00360d8309194fcffe7c69f17004f0f src/c/elementaryFunctions/log/sloga.c
+576c6c7d2da1aa38075f7012a0fa68e3 src/c/elementaryFunctions/log/slogs.c
+1b64a21ed2a4103d4f14a6549dde9433 src/c/elementaryFunctions/log/testDoubleLog.c
+2e51a5246e783a37cc1ae45db7a8cdb6 src/c/elementaryFunctions/log/testFloatLog.c
+eeab303d7f073b81d13b4acb9f0b03ce src/c/elementaryFunctions/log/testLog.h
+137a65aa13ef2c621e1ac0599495cbdb src/c/elementaryFunctions/log/zloga.c
+b4d82a8f7c3ea2f7e619541c562f7e19 src/c/elementaryFunctions/log/zlogs.c
+698e350e7d1aeae6581b269087ac6e24 src/c/elementaryFunctions/log10/clog10a.c
+6b20cfa598b9131d3e0b84230adf0fe3 src/c/elementaryFunctions/log10/clog10s.c
+70d7b0b9424e2c06fffaa6ae4b15d2ec src/c/elementaryFunctions/log10/dlog10a.c
+b8e8de16c7eed7362a737dc9e4712e56 src/c/elementaryFunctions/log10/dlog10s.c
+a6aab9774567de8eea5bf399fa130d90 src/c/elementaryFunctions/log10/Makefile.am
+01e65cd1c3df0611214d22c054242243 src/c/elementaryFunctions/log10/Makefile.in
+d0110683600e8208f041fef094629e04 src/c/elementaryFunctions/log10/slog10a.c
+104c75bf4309b7409c85102d33a74c62 src/c/elementaryFunctions/log10/slog10s.c
+9f60637063f91dc3cf0ff5a4cdedfe6d src/c/elementaryFunctions/log10/testDoubleLog10.c
+78f02f020443334d8929067b1fe4291a src/c/elementaryFunctions/log10/testFloatLog10.c
+99a4263b07b6b76831e7cd4c8e10c586 src/c/elementaryFunctions/log10/testLog10.h
+33c7798ba5fe580c2f7cfadfcc3afe96 src/c/elementaryFunctions/log10/zlog10a.c
+0aabd0050a83b9e6241057acae01f3a4 src/c/elementaryFunctions/log10/zlog10s.c
+1829111887542d46992de213f4181bc9 src/c/elementaryFunctions/log1p/clog1pa.c
+754e6ed66abb6c4ec3843c8069f466f0 src/c/elementaryFunctions/log1p/clog1ps.c
+247cf0eb2cafdb6bb2cc2a3907de271c src/c/elementaryFunctions/log1p/dlog1pa.c
+37a8632f02b03b52636ec94d6bc4d255 src/c/elementaryFunctions/log1p/dlog1ps.c
+3e1145377c15210c9cc246f8e49314bd src/c/elementaryFunctions/log1p/Makefile.am
+7b40cb5f2dad50c910cdcc66a9ed2d1c src/c/elementaryFunctions/log1p/Makefile.in
+483427059f5d39822318168785f0667b src/c/elementaryFunctions/log1p/slog1pa.c
+4be8f80d43a0768f3357b56e77f9ad27 src/c/elementaryFunctions/log1p/slog1ps.c
+e26e400d8604446db13737a8acaf879b src/c/elementaryFunctions/log1p/testDoubleLog1p.c
+2eb9d9013ad9b93852aa72b5492fafc0 src/c/elementaryFunctions/log1p/testFloatLog1p.c
+5a629dbfed4261623b25ab330f323487 src/c/elementaryFunctions/log1p/testLog1p.h
+6da473a3e6bc6ec4b0a0fd827198993f src/c/elementaryFunctions/log1p/zlog1pa.c
+88f2605c8831dfb5c33d092e46f51c17 src/c/elementaryFunctions/log1p/zlog1ps.c
+ed3424e032804d138284c5fd393f1866 src/c/elementaryFunctions/Makefile.am
+67fecd797449b43dd5348b16c44d10ed src/c/elementaryFunctions/Makefile.in
+6234cabe4d7485e65251b93fb6b6e550 src/c/elementaryFunctions/pow/cpowa.c
+ca780a43f0faf6909e7269d982a152e5 src/c/elementaryFunctions/pow/cpows.c
+43bd89e795ff79aa1ec7c98b374acdff src/c/elementaryFunctions/pow/dpowa.c
+8ab4b5fc2eab1190091e3940e3630388 src/c/elementaryFunctions/pow/dpows.c
+e7143972fd379ad2b2942edc13967426 src/c/elementaryFunctions/pow/Makefile.am
+c8d7c509732ecfe3ba4d9ac5ed837dd0 src/c/elementaryFunctions/pow/Makefile.in
+8965b01852a62d9f9715f37cfe301cab src/c/elementaryFunctions/pow/spowa.c
+3c5380785b469347f229f471b939214d src/c/elementaryFunctions/pow/spows.c
+8c2809e18b839f726ca3f90b0ea819e8 src/c/elementaryFunctions/pow/testDoublePow.c
+20e18ad968c8acbaadfa373c8bb0d669 src/c/elementaryFunctions/pow/testFloatPow.c
+f60498dde1541f0fee77e48fffb988d6 src/c/elementaryFunctions/pow/testPow.h
+2a9a64d16c48695f4519a9cea09d7554 src/c/elementaryFunctions/pow/zpowa.c
+4348913b0ab7eb12a7d6a9b7081fb461 src/c/elementaryFunctions/pow/zpows.c
+f277be0fdd9ddc1cc5bd2b9393b5dbf4 src/c/elementaryFunctions/round/crounda.c
+7b2e9543f6bc3968f8cf274906303ece src/c/elementaryFunctions/round/crounds.c
+cf3c3dd14d7397d6065f8f3e54e5222e src/c/elementaryFunctions/round/drounda.c
+f43c54b4f09cccaa015771183c4ea187 src/c/elementaryFunctions/round/drounds.c
+2c0a15037a40d6279a7ca8b4da038232 src/c/elementaryFunctions/round/Makefile.am
+4d60bbb0f79c7a1fa629531696a13bc9 src/c/elementaryFunctions/round/Makefile.in
+9f34f5b79d82ec225411609ee451b7c3 src/c/elementaryFunctions/round/srounda.c
+841df5c34d8ec1e54f04525f774408e4 src/c/elementaryFunctions/round/srounds.c
+330a7bcdd80f6146de0bf4f697d5303e src/c/elementaryFunctions/round/testDoubleRound.c
+15eba5f09ef75ea74f90e800d5c03dd4 src/c/elementaryFunctions/round/testFloatRound.c
+98cbaec8c55b64175716265eff2691cc src/c/elementaryFunctions/round/zrounda.c
+a6596ad026ccec0a1f2737536a380946 src/c/elementaryFunctions/round/zrounds.c
+0eeca456db0e54755afb10591079217f src/c/elementaryFunctions/sin/csina.c
+48812311a3432a52eac19bcb58ad106b src/c/elementaryFunctions/sin/csins.c
+393cd0aceb337f954a49e74745a96a13 src/c/elementaryFunctions/sin/dsina.c
+172afcd4dab3e2e74370f384517755a9 src/c/elementaryFunctions/sin/dsins.c
+1c419ab8646601a7fa51fc6884d885cf src/c/elementaryFunctions/sin/Makefile.am
+d6d7f215543728fcff5977256918d150 src/c/elementaryFunctions/sin/Makefile.in
+a2cc3a7cfdbbd8f63b1c6d440523b8d7 src/c/elementaryFunctions/sin/ssina.c
+7ecf4fe199ac2ae274da1aa23bb85223 src/c/elementaryFunctions/sin/ssins.c
+cd621e739745e45e8954be4947af84ef src/c/elementaryFunctions/sin/testDoubleSin.c
+8c5002dfa1415adea2b3aeca5cf559db src/c/elementaryFunctions/sin/testFloatSin.c
+726b473c2398feac2097996fe6b63cf8 src/c/elementaryFunctions/sin/testSin.h
+cd4716f9315bb02088971d7acbbba56e src/c/elementaryFunctions/sin/zsina.c
+625cfea0936f98fcae055cc6a4574643 src/c/elementaryFunctions/sin/zsins.c
+0a76bde539f4e1eb8e5f38f5082c5725 src/c/elementaryFunctions/sinh/csinha.c
+f194725d0c7b597477d4b473002757f8 src/c/elementaryFunctions/sinh/csinhs.c
+360acd0b294af152284f7e36c98449cd src/c/elementaryFunctions/sinh/dsinha.c
+c44f898b2081c075c4eeb0c483dce622 src/c/elementaryFunctions/sinh/dsinhs.c
+ddcd83f13c5bf4e48d118c25d6140ad3 src/c/elementaryFunctions/sinh/Makefile.am
+a76904af5d6c2a303ffe70d7baca64a8 src/c/elementaryFunctions/sinh/Makefile.in
+15d30474d62ed99ef737c1f5c00c272e src/c/elementaryFunctions/sinh/ssinha.c
+6c7eec5fa1dbaec862fa5478f3aa273d src/c/elementaryFunctions/sinh/ssinhs.c
+98b454527270a2ee60772c070d764464 src/c/elementaryFunctions/sinh/testDoubleSinh.c
+8ef05f4c3eed83dab53fcab77994d9ec src/c/elementaryFunctions/sinh/testFloatSinh.c
+ed2db1888ded82d9529dd70854a297fa src/c/elementaryFunctions/sinh/testSinh.h
+b3595d2573774c6ad0a52f2bb4273e3c src/c/elementaryFunctions/sinh/zsinha.c
+32fd3ffb93bbabf3e3748fa0324c0299 src/c/elementaryFunctions/sinh/zsinhs.c
+c1e5a73b5ce2cfc8cb86e7f85c14298f src/c/elementaryFunctions/sqrt/csqrta.c
+99712061e962cf17037dcbfc1aa80ca4 src/c/elementaryFunctions/sqrt/csqrts.c
+07620aec24a7b9756549e8b373df50d4 src/c/elementaryFunctions/sqrt/dsqrta.c
+97dab3d0a8b478c4dd61b135d6c37a51 src/c/elementaryFunctions/sqrt/dsqrts.c
+df22183eae3608120337ff5e6c0dcc74 src/c/elementaryFunctions/sqrt/Makefile.am
+ebb0fe51e30eedbee69538f4a898f3c7 src/c/elementaryFunctions/sqrt/Makefile.in
+3059f02a67b54d7b9687d39a71567944 src/c/elementaryFunctions/sqrt/ssqrta.c
+1b111da80c74a76398961c9ac5d5b941 src/c/elementaryFunctions/sqrt/ssqrts.c
+5e5dfc9378842ccc1998c82f1e7d4357 src/c/elementaryFunctions/sqrt/testDoubleSqrt.c
+68611723dffff304352a0c02d1a86d90 src/c/elementaryFunctions/sqrt/testFloatSqrt.c
+90312be040624aeada8c2beb072b771f src/c/elementaryFunctions/sqrt/testSqrt.h
+dcc3a9e7d306b481663b59f9017eeebb src/c/elementaryFunctions/sqrt/zsqrta.c
+da697dfa428fa528ed89815141ea7ed8 src/c/elementaryFunctions/sqrt/zsqrts.c
+d1be0253f3c3d869914e2e360211dba2 src/c/elementaryFunctions/tan/ctana.c
+42c71ada22ad94efe4525413de328646 src/c/elementaryFunctions/tan/ctans.c
+f52d274192d868a8cde5a80e8cec7fcf src/c/elementaryFunctions/tan/dtana.c
+06da5c435d779dbcbb7df3f7a1fbd0e1 src/c/elementaryFunctions/tan/dtans.c
+ddea8e22f1699633791f9cff8c5789d4 src/c/elementaryFunctions/tan/Makefile.am
+19c68dba241bf338418ec0d9b7a3e2b0 src/c/elementaryFunctions/tan/Makefile.in
+d851c18059814158e4b47e5d61caee10 src/c/elementaryFunctions/tan/stana.c
+ed073919f0b0c80eab7deda2038a1af4 src/c/elementaryFunctions/tan/stans.c
+028a090a22da6676c0fb2d1f51768a14 src/c/elementaryFunctions/tan/testDoubleTan.c
+d80f3a70ae794361c22b288de02b8531 src/c/elementaryFunctions/tan/testFloatTan.c
+48445d7423dd910bd1f57dcd5050ead4 src/c/elementaryFunctions/tan/testTan.h
+5d361f28aa9fa3387ffb2e55e588f2f8 src/c/elementaryFunctions/tan/ztana.c
+aa97dc77215ac62f108fea648120fe20 src/c/elementaryFunctions/tan/ztans.c
+ca14e48ea14b88d496ebeebb694efe57 src/c/elementaryFunctions/tanh/ctanha.c
+191e7c93b4209d1a01f8b62b06ab18b6 src/c/elementaryFunctions/tanh/ctanhs.c
+88d6080ac2ff8338e690b8820861b510 src/c/elementaryFunctions/tanh/dtanha.c
+8c54956fe15a2d1324cc56e6ea9994c1 src/c/elementaryFunctions/tanh/dtanhs.c
+c5257124a1ac8af0404c6b425bb1c5d2 src/c/elementaryFunctions/tanh/Makefile.am
+c83bd3e50ff176184ecc95ef5f06f6ee src/c/elementaryFunctions/tanh/Makefile.in
+4c8f609ee6606f82e41cde2a5318e5a6 src/c/elementaryFunctions/tanh/stanha.c
+6f5d627deaa392f97eaa336471e919d5 src/c/elementaryFunctions/tanh/stanhs.c
+87916812e3a1bf319483edf4546b2ce8 src/c/elementaryFunctions/tanh/testDoubleTanh.c
+2a4366a371b1aa3f1e87973c490d8ba6 src/c/elementaryFunctions/tanh/testFloatTanh.c
+7921c4bdfb7280a9155858e6a5f853b1 src/c/elementaryFunctions/tanh/testTanh.h
+dd101bcf8e3e1920636d44076f2d47d7 src/c/elementaryFunctions/tanh/ztanha.c
+f2269babafdb58ad79a4dde9019b92e6 src/c/elementaryFunctions/tanh/ztanhs.c
+a373cd566f8ec592eb5f639b17e77548 src/c/implicitList/cimplicitLists.c
+797ba1e1948284d8f3508fe818977344 src/c/implicitList/dimplicitLists.c
+18e348b116bcf6f62744a2a0d99cf8b9 src/c/implicitList/dynlib_implicitlist.h
+69e6323a9becf1075ee8fbbbe3702f57 src/c/implicitList/implicitList.h
+d3d367c2f589b3f9f69e328a63b61758 src/c/implicitList/implicitList.vcxproj
+35212e309e0bdab52195d74bd1dfdaae src/c/implicitList/implicitList.vcxproj.filters
+01909dd95e93c48d354b0d2706da26ef src/c/implicitList/int_OpColon.h
+776f2ffbb1b86239496181c3c0fd6d24 src/c/implicitList/Makefile.am
+2f481af2df301da0510cb124b92a70cf src/c/implicitList/Makefile.in
+66a582c4c01a9ebde58bbd5ff483ae51 src/c/implicitList/simplicitLists.c
+eb90bd214871cc265380e2fedc95d441 src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj
+9e668f4f15f552dfcabb418853465e77 src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj.filters
+fb9936998a90fafd8e3d8d2f00d4d8a3 src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj
+0e0360dcbf3a945b56ba4105d44410e0 src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj.filters
+b559fc55f101b49515375f8163572a5d src/c/implicitList/testDoubleImplicitList.c
+99f6ac780554ee77b2aa87671f07646d src/c/implicitList/testFloatImplicitList.c
+d54da34897c6925196d606af5f894d63 src/c/implicitList/zimplicitLists.c
+2b208a9cdd5fb8f2acd4731976e24aed src/c/matrixOperations/cat/ccata.c
+d28a36314b292c05594bf0dc531b5bf6 src/c/matrixOperations/cat/ccats.c
+2162c9996a049a051ad1f00c0a20c924 src/c/matrixOperations/cat/dcata.c
+76fd530990beeb282e6932751f6bfbd6 src/c/matrixOperations/cat/dcats.c
+c3299992218e7fc8afc53f2c92b1acd8 src/c/matrixOperations/cat/Makefile.am
+af17ffcef9ed907c5bca67efb5cc4492 src/c/matrixOperations/cat/Makefile.in
+85f693b29794fff5c01fa94054a61b6a src/c/matrixOperations/cat/scata.c
+59d19179f08eb0be85ffd36263914266 src/c/matrixOperations/cat/scats.c
+c5e2dd82acc86329eeb3c4f165bd9c4b src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj
+70871d6316c9a38941dd91132d805c11 src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj.filters
+de46cc36ed588450c2d180a8ed3f861b src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj
+3d3b5f5ead9945525541e3c4aabedfb3 src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj.filters
+2e2ab55fd1c4652518b6ddf0a1bb6cb3 src/c/matrixOperations/cat/testDoubleMatrixConcatenation.c
+bedb138b38d5b0725b77762174474df8 src/c/matrixOperations/cat/testFloatMatrixConcatenation.c
+af429fce6efd3304d1694d1dff7ca047 src/c/matrixOperations/cat/zcata.c
+ba8974fba1e6b2407648a46ae43b6645 src/c/matrixOperations/cat/zcats.c
+140cd18792955e438bd0715c640e82e3 src/c/matrixOperations/chol/cchola.c
+1052964560896054020c6d5e54b48a97 src/c/matrixOperations/chol/dchola.c
+42d9088674febc6841b1eb771ddd0093 src/c/matrixOperations/chol/dchols.c
+7df09b31f5b2295a1dced02d6cd79596 src/c/matrixOperations/chol/Makefile.am
+a8b48637a4079cb2121666200ddd7df0 src/c/matrixOperations/chol/Makefile.in
+5f773600a7bfbfd0d05ec4065d3e8dcf src/c/matrixOperations/chol/schola.c
+dd32d07be7a2b15d0cc27bb428a292a2 src/c/matrixOperations/chol/schols.c
+bef4358285ac46ef6c3a8650feeb7f10 src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj
+1d2d4fd6b85b468d1fedf1534d03d731 src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj.filters
+8a52a8ed10eed608076f6272337c2bc4 src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj
+4170b5e3f6fcc9431d0afef0a7e55a9e src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj.filters
+246d8f90e9611bb3f35b770d6afabbed src/c/matrixOperations/chol/testDoubleChol.c
+49f1f08266e43945acdb29fdb58384d8 src/c/matrixOperations/chol/testFloatChol.c
+d76a399dfae5666f0177f64d6c505d30 src/c/matrixOperations/chol/zchola.c
+f6fe2d4a408435f20d0ddea8a5695490 src/c/matrixOperations/determ/cdeterma.c
+1eb68c8999b95769c2cada162e27c7f7 src/c/matrixOperations/determ/ddeterma.c
+f757a7d54f3c99df321d0027ea5fa90c src/c/matrixOperations/determ/Makefile.am
+03fa8bda7ac2ef45aca300c1ecd2f488 src/c/matrixOperations/determ/Makefile.in
+fe58ca4e8ca4ef71b408202aaed1f7c4 src/c/matrixOperations/determ/sdeterma.c
+21932f282bf733038c9ac19c89f53fca src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj
+25abbf72238559f18c999a891afb96b5 src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj.filters
+eadc83d1b114f7fa80b17b60b3db96e9 src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj
+25abbf72238559f18c999a891afb96b5 src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj.filters
+3e93d9b11d1fa93311bfcfa26030dcb5 src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj
+4e7456a28a7ee55cde9a8bf15ce1e401 src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj.filters
+93692ac8715b465400634cf1b8b845d2 src/c/matrixOperations/determ/testDoubleDeterm.c
+50ec4b478032f76139c5a0e1ae4f5dbe src/c/matrixOperations/determ/testFloatDeterm.c
+92171c19de4abc6885f3b7f7985ec458 src/c/matrixOperations/determ/zdeterma.c
+485ba2d8542bd21d752e0064648056dd src/c/matrixOperations/dist/cdista.c
+4a633b6b2dc54874e26592fcebd80432 src/c/matrixOperations/dist/cdists.c
+300ef08648c841da777cc0a9d8cfa8e5 src/c/matrixOperations/dist/ddista.c
+1c8bdfaf6a04158cad461b97604492e1 src/c/matrixOperations/dist/ddists.c
+857946b3b16726100f680648e6c3f8e4 src/c/matrixOperations/dist/Makefile.am
+561f6ba572d8e458fc4542073e428a70 src/c/matrixOperations/dist/Makefile.in
+4c9e0cb6a6d7fbfc384c02f23cf69f98 src/c/matrixOperations/dist/sdista.c
+ba951adaa96f8a037efca8f266cd5d4e src/c/matrixOperations/dist/sdists.c
+6b23e4ca1cf63051d25b1392fc5fd8da src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj
+002ea3738ba9384bf78cf0c627be10f2 src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj.filters
+6a4e5dc123c935dc33aee7da89ba6e1c src/c/matrixOperations/dist/testDoubleDist.c
+afdc530ee7ed582a4f9d92f290f744f8 src/c/matrixOperations/dist/testFloatDist.c
+c3d25add2a90c2152b1825e806bd48bc src/c/matrixOperations/dist/zdista.c
+968917b4bba3d17eca8548d9c9b61bb5 src/c/matrixOperations/dist/zdists.c
+964439e55b98c918267d8988e6db4e26 src/c/matrixOperations/division/cldivma.c
+a992c8869bcd77b52fe9ee0a5a61cbc0 src/c/matrixOperations/division/crdivcsv.c
+3d8ce8af32a96a2f18026bcd94ad0e38 src/c/matrixOperations/division/crdivma.c
+cf47c6b7ed35b18f284e41567904ebbd src/c/matrixOperations/division/crdivscv.c
+94e5605fd1048914373f221e99c1c358 src/c/matrixOperations/division/crdivv.c
+59197ed277423843685d75cde2b508ea src/c/matrixOperations/division/dldivma.c
+b3301552b41a25e86e75677b6d07f693 src/c/matrixOperations/division/drdivma.c
+1c5411da5ac0e792f44fb23914aca82d src/c/matrixOperations/division/drdivv.c
+520b1b059965d7f3d07ebf2defdb6859 src/c/matrixOperations/division/Makefile.am
+c8bf921164654b557055ab4f3d9322ab src/c/matrixOperations/division/Makefile.in
+1544ed5838cdb1ecc2fded77851309e0 src/c/matrixOperations/division/sldivma.c
+a8f1af3aefb4bd7fabff9b7f3babbba6 src/c/matrixOperations/division/srdivma.c
+e080b08465e031587d6098a463fbdec1 src/c/matrixOperations/division/srdivv.c
+10cc3acdf10f23ec5e5770244052b71f src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj
+6237e12785734852af5d5ac2d2118e31 src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj.filters
+8fb7a8af41d2de38dafb0eb606c4d862 src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj
+4005beafc6d43d67d492883e5ab9f650 src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj.filters
+2a796d06f3dc9f979b81d13dcaa48c49 src/c/matrixOperations/division/testMatrixLDivision.c
+53adce9c9a21dcf32663af98ad6a4ac1 src/c/matrixOperations/division/testMatrixRDivision.c
+2ce4104a0fb5f9955dbdaa3153ac552d src/c/matrixOperations/division/zldivma.c
+b9db2c9d9af3897c7b1454ac4f9eeb7d src/c/matrixOperations/division/zrdivdzv.c
+c4aa9ad524f59ef75a108b1725d634cb src/c/matrixOperations/division/zrdivma.c
+9311c3113c7c8f7f293bac3c0ea621ee src/c/matrixOperations/division/zrdivv.c
+b76150831559af83d5ddf8f5f3f0a278 src/c/matrixOperations/division/zrdivzdv.c
+f0ff23aac435f8c335876e59d0068295 src/c/matrixOperations/expm/cexpma.c
+6c39487f805cb9bd06c18cf23c1c4877 src/c/matrixOperations/expm/dexpma.c
+65cf7ac3bbc2426b3c517d1f8e078319 src/c/matrixOperations/expm/Makefile.am
+e3d23e8e6566b17b7bbd02bb8ed85bdf src/c/matrixOperations/expm/Makefile.in
+416bc74de4eff323eea33c6dac22f8e7 src/c/matrixOperations/expm/sexpma.c
+93777db979dc0d89dfee696a8a751690 src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj
+40bfe0b294743ab874a5c6dc6ecc478a src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj.filters
+8b26225c29496b6f091f2ef08b3ebac9 src/c/matrixOperations/expm/testMatrixExponential.c
+f7c55c26d602be879bb54c880ffcacf1 src/c/matrixOperations/expm/zexpma.c
+0641c3e1f462ad86a60b8b29dfddb967 src/c/matrixOperations/eye/ceyea.c
+6c2e91fb7b6fd089df585f2351171583 src/c/matrixOperations/eye/deyea.c
+9569652f6889562d8e02c992736bffed src/c/matrixOperations/eye/Makefile.am
+15ec837e2ab77660c1f3a5a756facae9 src/c/matrixOperations/eye/Makefile.in
+5101cc2a9bde1977ec0e4944d740104e src/c/matrixOperations/eye/seyea.c
+ef29f6978f592eac14231bc1e5480766 src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj
+51c1dc5e2b93aa55a3691581378ee065 src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj.filters
+a3d6404236f30214dfaeaf258dd31d04 src/c/matrixOperations/eye/testMatrixEye.c
+dee0e385b30ee1a5153ecda9e16c63f4 src/c/matrixOperations/eye/zeyea.c
+41674b1ff2ccaba5d5cfb4402cce728f src/c/matrixOperations/fill/cfilla.c
+e693a3d068760bd172959ed5151bef73 src/c/matrixOperations/fill/dfilla.c
+3ea8fe0d681a3c22ef2c9203d83abee4 src/c/matrixOperations/fill/Makefile.am
+5855baa5b03965cac5927f0b7d5c29ae src/c/matrixOperations/fill/Makefile.in
+0e94966bea3cdff60f03d8d4de8356af src/c/matrixOperations/fill/sfilla.c
+5102348cb98380255c36f6c3f8d4c621 src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj
+603eb1df3bd2d367682cb95d5cb53e7e src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj.filters
+76ac0a6d502341eb083f02e75f154416 src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj
+acf5aa3358a5936cf52835e95ccbe419 src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj.filters
+6166b6c181f06fe188249aa0d01dc32f src/c/matrixOperations/fill/testDoubleFill.c
+cff77ac07104da12181e8fe3973f0d34 src/c/matrixOperations/fill/testFloatFill.c
+a989c0fff276f0bdee5c94b45535ec3d src/c/matrixOperations/fill/zfilla.c
+f1790415f132b0d4e3310d36a5187e6a src/c/matrixOperations/hilb/dhilba.c
+01ea3c464b949c6c65f38a03ee88fb6a src/c/matrixOperations/hilb/Makefile.am
+d57a76c2198626fbf23a90fa0f10cc99 src/c/matrixOperations/hilb/Makefile.in
+fa560e94d41de0ad9d3ea6cd50fbff18 src/c/matrixOperations/hilb/shilba.c
+bc083c1f2c35b9c1e022e7a6081eacf0 src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj
+29d52dee04c9e94509f8e994cc20b78c src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj.filters
+d873000baab4354801c60a77a8a6bbb2 src/c/matrixOperations/hilb/testHilbert.c
+214089c80465ef3a720a7896a9b3ddc0 src/c/matrixOperations/includes/cat.h
+d631d164f13802b313dbc0330019271f src/c/matrixOperations/includes/chol.h
+b99744178a04b00b469e069abd20e0da src/c/matrixOperations/includes/determ.h
+42f112963353769c04e63761c6721d25 src/c/matrixOperations/includes/dist.h
+0d8b177ce1e237f0cd09ef1070aeb3fb src/c/matrixOperations/includes/dynlib_matrixoperations.h
+a61b450874f93d3b9a6ffd933610c037 src/c/matrixOperations/includes/eye.h
+64d4e1b4b1a02a7acb81bfcad29ca63c src/c/matrixOperations/includes/fill.h
+33f2a359a963a7491dcd953444c1668e src/c/matrixOperations/includes/hilb.h
+09d484cec8865fa2f20f3ed35240133f src/c/matrixOperations/includes/infiniteNorm.h
+8f8bd0c3d13e10f218d04df4cb7a7807 src/c/matrixOperations/includes/jmat.h
+0541434a172dde79e22c94f72fba4f4e src/c/matrixOperations/includes/logm.h
+d82a7b51644afd662e5fb376288b7ec2 src/c/matrixOperations/includes/matrixDivision.h
+1e293415815015803db76e2aa294bd0c src/c/matrixOperations/includes/matrixExponential.h
+ab5555d9684a484bcba199245bc8b72d src/c/matrixOperations/includes/matrixInversion.h
+a72205f7173124874d8322929df10895 src/c/matrixOperations/includes/matrixMagnitude.h
+b6b4c2e629eb2c75a8816356ebb3001a src/c/matrixOperations/includes/matrixMultiplication.h
+c88e32eed2aeb8ea1a1a749140252632 src/c/matrixOperations/includes/matrixPow.h
+89a841fe07c392c4ebdf6563caeb1217 src/c/matrixOperations/includes/matrixSquaredMagnitude.h
+a8fe621bad10fb18a2f15102972467fb src/c/matrixOperations/includes/matrixTrace.h
+efa649ec8701f0d5c93617355247f648 src/c/matrixOperations/includes/matrixTranspose.h
+dff325145757253603424cef78e7996d src/c/matrixOperations/includes/ones.h
+2fabf61d865c0d2c7064ba26abbfaf0f src/c/matrixOperations/includes/spec.h
+c436242de7cbde8be29351d52a22a07d src/c/matrixOperations/includes/zeros.h
+cad53081ded5ab4fc3508a4eb92b7902 src/c/matrixOperations/infiniteNorm/cinfnorma.c
+0ef91e45153020f4ae7545e888998c61 src/c/matrixOperations/infiniteNorm/dinfnorma.c
+c99a7606ddc9b5c909b9443ca2b05215 src/c/matrixOperations/infiniteNorm/Makefile.am
+349e076ffed8bbf1b86137bcbd109f15 src/c/matrixOperations/infiniteNorm/Makefile.in
+5efb6a4a80e272b69dbc551121232c88 src/c/matrixOperations/infiniteNorm/sinfnorma.c
+032db5c0d624925c8d75b34988b88d26 src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj
+03af6ab0d1be42aec7d648fa04c4daf3 src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj.filters
+27f33b81ea39df300664c5b6bb55117f src/c/matrixOperations/infiniteNorm/testMatrixInfiniteNorm.c
+7837f5eaf65fb541632176947b7355ab src/c/matrixOperations/infiniteNorm/zinfnorma.c
+a8aae5decfc31c6d8758c535c0071643 src/c/matrixOperations/interfaces/int_chol.h
+4e5df52642d8b43ab2e8d768f000d5cd src/c/matrixOperations/interfaces/int_det.h
+7ef9cbd51abe05c6771d8becaad2ac65 src/c/matrixOperations/interfaces/int_dist.h
+a91f0d3ed6563d2f8349e8dea18e17f3 src/c/matrixOperations/interfaces/int_expm.h
+ec513445cd057ff447068a1ad45c4d03 src/c/matrixOperations/interfaces/int_eye.h
+7e69a59a7fa32682f5fc28a97500abf6 src/c/matrixOperations/interfaces/int_fill.h
+8e9e556df48f904a50043293f750cd3e src/c/matrixOperations/interfaces/int_invert.h
+037793f9ce03779b56ac8a848d289455 src/c/matrixOperations/interfaces/int_ones.h
+72200551851654578a814f61f6eac880 src/c/matrixOperations/interfaces/int_OpApex.h
+e7d2967a67e983884e918e09f4c458a5 src/c/matrixOperations/interfaces/int_OpBackSlash.h
+17df1a548623c3c7387c0c21f153133a src/c/matrixOperations/interfaces/int_OpCc.h
+8bcaebb673c997c62171e8ce6a55a616 src/c/matrixOperations/interfaces/int_OpDotApex.h
+94d3be58ad8f79cb5337ee4832897420 src/c/matrixOperations/interfaces/int_OpRc.h
+68e0496afee000e4f6ee05d32be3ad75 src/c/matrixOperations/interfaces/int_OpSlash.h
+85401aa9b280c92eb43508ce19b89a2f src/c/matrixOperations/interfaces/int_OpStar.h
+a1410b6e152acacd1f7212022c4090c1 src/c/matrixOperations/interfaces/int_spec.h
+39d5de5ea58671daf418c55097cbd445 src/c/matrixOperations/interfaces/int_trace.h
+2516db05d159a2f1a7dfa20a0bb9fc61 src/c/matrixOperations/interfaces/int_transpose.h
+a9445bcd2d2d9874539278b0454ac0ca src/c/matrixOperations/interfaces/int_v2magn.h
+baf217ae294dfaf421efe7288609d3ff src/c/matrixOperations/interfaces/int_vmagn.h
+7e2ad039cd14121e43876346151f601e src/c/matrixOperations/interfaces/int_zeros.h
+e391618a9f8ccd228a77085570f6e1fa src/c/matrixOperations/interfaces/interface.sh
+ff4d90e697bebcfb0d0d4449ba10268f src/c/matrixOperations/inversion/cinverma.c
+2938eb3e6592dc9e3256d35721274e1a src/c/matrixOperations/inversion/dinverma.c
+4aacf56a096a8393a460171d2a7dbbed src/c/matrixOperations/inversion/Makefile.am
+2af788edfb3e115aef05ef1e7ae3bb79 src/c/matrixOperations/inversion/Makefile.in
+5bdc0ae9a73c399676515fbe7e3e9ede src/c/matrixOperations/inversion/sinverma.c
+d65e0fe8c17fcf4698ec626bb2131d9f src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj
+e588b665e7790f85a04046d38b63c4b6 src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj.filters
+595b278d309c83d3820939789d51de1c src/c/matrixOperations/inversion/testMatrixInversion.c
+6403ee04fdbda62e0486f0f34887accf src/c/matrixOperations/inversion/zinverma.c
+2bc4dfef7ccfc2b901f3a4127fe2c0fe src/c/matrixOperations/jmat/djmata.c
+1156f2911448b234a53ad50a9894d7ef src/c/matrixOperations/jmat/Makefile.am
+e42305e97a114eb79819f5e7b95f489c src/c/matrixOperations/jmat/Makefile.in
+881bbda05941fe8bc4d496699b14c9f0 src/c/matrixOperations/jmat/sjmata.c
+ef4db301c3dcc35550d5aadbbe52e22e src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj
+1dbd69b04e91a695a897909e05117d42 src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj.filters
+8e9bc9780ef54e29bc8834a2aa19e828 src/c/matrixOperations/jmat/testJmat.c
+31797c1814e23481a7a85cd91f1c06e8 src/c/matrixOperations/logm/clogma.c
+11e9c658faecfb5e3cba7fddfefc6af9 src/c/matrixOperations/logm/dlogma.c
+205409f341cf19f69aa94c3df0b58067 src/c/matrixOperations/logm/Makefile.am
+82a7c5b5a99a39db2fdc116686660fb6 src/c/matrixOperations/logm/Makefile.in
+7e84b95b0156125b60e63a1052b7c3f5 src/c/matrixOperations/logm/slogma.c
+16867415a5f1ffa5550e33c3eca2c388 src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj
+054b5025b80fedbf98bb11b2ec3cd47c src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj.filters
+ab62207bb079fb076e2133d69ddf2ed0 src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj
+6bb6841ce3a3b5bfce746f5dd93b4446 src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj.filters
+2ee6945851715373e5d5fadc00f12fa3 src/c/matrixOperations/logm/testDoubleLogm.c
+685a1fd2853c2925460dc7095cf1243d src/c/matrixOperations/logm/testFloatLogm.c
+4d6bf359b29bec0c9b719aa053bcb6e6 src/c/matrixOperations/logm/zlogma.c
+425eb9908e15e9dc1e6a9c91a063e796 src/c/matrixOperations/magnitude/cmagna.c
+37c07367240147d7d0ce0a491e0689e3 src/c/matrixOperations/magnitude/cmagns.c
+9220b302ff88436b41d55e4a679ce599 src/c/matrixOperations/magnitude/dmagna.c
+22feeba8ca3961a9cb99e434715cf005 src/c/matrixOperations/magnitude/dmagns.c
+de2a87599fd7f9adb84dfbc5fe58e79f src/c/matrixOperations/magnitude/Makefile.am
+45f12f611d1f215f42674c2ad49761a3 src/c/matrixOperations/magnitude/Makefile.in
+b54ce4da9ae372ecb5b8ab43c3fe7f8b src/c/matrixOperations/magnitude/smagna.c
+778d4a08efda4e5005e2f679c08aba3f src/c/matrixOperations/magnitude/smagns.c
+2e3e3f9422956228389ab9d6c0e27158 src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj
+3372f48de4b188d51d6559778649b8f3 src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj.filters
+80c26a02e97185c605def1432058fd30 src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj
+2ef2ec22bbf57308bcd28010c7bb821f src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj.filters
+3d2ced29a6ab4dafcda5c60d69d0b9ef src/c/matrixOperations/magnitude/testDoubleMagnitude.c
+61223fa24567ef3c1a94eba08d92ed67 src/c/matrixOperations/magnitude/testFloatMagnitude.c
+9329c9138b54d01b308a7fd932ef0fe1 src/c/matrixOperations/magnitude/zmagna.c
+6ef3d662d31f7f9a3dd368df5c213d99 src/c/matrixOperations/magnitude/zmagns.c
+62fffd25962b2518f658bc329573a761 src/c/matrixOperations/Makefile.am
+689dbcef62c7301ba907ea29cc12ee91 src/c/matrixOperations/Makefile.in
+6c14f82b4bfa7040069bbf4d43874ee4 src/c/matrixOperations/matrixOperations.vcxproj
+b065e7b5a0544fbd150b47ffd9bca001 src/c/matrixOperations/matrixOperations.vcxproj.filters
+66c5a168abbfb9c3f7e591129c7a703a src/c/matrixOperations/multiplication/cmulma.c
+fad18a6856b013beb9088ef759bb9962 src/c/matrixOperations/multiplication/dmulma.c
+c68ba21ad52681a1087b08820ae4f72c src/c/matrixOperations/multiplication/Makefile.am
+dbd8b387bb0935d47de8c2d520d9c510 src/c/matrixOperations/multiplication/Makefile.in
+721b2c2d3859496bedd8e1f37b2e7133 src/c/matrixOperations/multiplication/smulma.c
+3a2357903184cd0c77153320fd57ffd8 src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj
+2ee96d89059669da753b541bceca1d3c src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj.filters
+680d3c94b2803083b904426a35512961 src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj
+dfa72b577bdbef1b900249718a255884 src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj.filters
+b0d5d7421f24a0914c4b425b31e258f9 src/c/matrixOperations/multiplication/testDoubleMatrixMultiplication.c
+63f6704eed5974b954d59e905f06afc4 src/c/matrixOperations/multiplication/testFloatMatrixMultiplication.c
+719b31dacb76c3621b12bcf4564584f6 src/c/matrixOperations/multiplication/zmulma.c
+68fdd8a814738a3cfd33b91322cbabef src/c/matrixOperations/ones/conesa.c
+35f3709d35224186f7e7c5113bdc6715 src/c/matrixOperations/ones/donesa.c
+271d2f46f416503dd56cdcef2eab9906 src/c/matrixOperations/ones/Makefile.am
+10e32d91b96f060938856db6e40697e0 src/c/matrixOperations/ones/Makefile.in
+65dadc89cc9d70db87d6ce635c104f92 src/c/matrixOperations/ones/sonesa.c
+98759af645f154f346f172890ae8cb05 src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj
+e8370966dc48ae2ab8302b47742bf869 src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj.filters
+4918b932ee9d71472e937fdbda981b4c src/c/matrixOperations/ones/testMatrixOnes.c
+a7ba1694be1094a631fbf4b129113f41 src/c/matrixOperations/ones/zonesa.c
+215c459e678e2f4a5d4a9ca42e3f265a src/c/matrixOperations/powm/cpowma.c
+f293af2a4b02eb655edce481a129224f src/c/matrixOperations/powm/dpowma.c
+b83ee926857e6d5bb123644067709b4b src/c/matrixOperations/powm/Makefile.am
+d58880afdf7335eefff2763b1b9c0374 src/c/matrixOperations/powm/Makefile.in
+edcadea2579ddd11a280893407701b8d src/c/matrixOperations/powm/spowma.c
+fdfdeafadf0673515e1c24d789f039ba src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj
+027a31287cda3bacd9e1a935231e671f src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj.filters
+0d38857ee72f2ef2ad8aa4623df07901 src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj
+1da234cb1e70a09923a360f9b2e8de8b src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj.filters
+928f9c7d9e029b0eaa59ea5bff00cf96 src/c/matrixOperations/powm/testDoublePowm.c
+06ca58dc9d3ff03a6123aba9a5aae1f4 src/c/matrixOperations/powm/testFloatPowm.c
+37985c3e5428cdef774577b09c908147 src/c/matrixOperations/powm/zpowma.c
+c980f3bb95770280318bfdc5e8d826ba src/c/matrixOperations/spec/cspeca.c
+8202add0952022a67e056570ed9318f9 src/c/matrixOperations/spec/dspeca.c
+7e95cb6b6f2dd8f06903c83d0a1ba1fa src/c/matrixOperations/spec/Makefile.am
+dbe5e04761194805338133e47ec83c48 src/c/matrixOperations/spec/Makefile.in
+020c5f4eeb786d5a92408d3e14ddedfc src/c/matrixOperations/spec/sspeca.c
+fd399699c1230c78c9d247718d759ce8 src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj
+a63f0901578166c5703dc14eb101a717 src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters
+a2c4e52f0abe893d3fb9d53061414c86 src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj
+f376375d991e08c2a1492d7838e6c0c6 src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj.filters
+bdd3e96b74dfaca3a3ed5933ccbecd4b src/c/matrixOperations/spec/testDoubleSpec.c
+74aa018c6491fa484f58c47705432d12 src/c/matrixOperations/spec/testFloatSpec.c
+d32faa42576f9708009dce5f42782ea0 src/c/matrixOperations/spec/zspeca.c
+7d2ec32e1aa807c4e30a55c083cb88ee src/c/matrixOperations/spec2/cspec2a.c
+c44ce0aa01e5966826080cd08ec1c9f3 src/c/matrixOperations/spec2/dspec2a.c
+f460f2068488e3507bfbd9aac8010f8d src/c/matrixOperations/spec2/Makefile.am
+12399d62d383f706f7b67b298aa855d2 src/c/matrixOperations/spec2/Makefile.in
+5655b4cb64164bcd4e0cb680507ad605 src/c/matrixOperations/spec2/sspec2a.c
+61e187e11aaf7b4f3926279b21e772c5 src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj
+95fa4cd569373ea7895a11fa19b92b9d src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters
+0e7297f5217d63b874b03877802210de src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj
+caa0fc73cca6f0e6af05fcf1c7b3dc8c src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters
+27aed79a1c34770402b68a457f86aaad src/c/matrixOperations/spec2/testDoubleSpec2.c
+958495e123cbffa19b2475ab72edcefa src/c/matrixOperations/spec2/testFloatSpec2.c
+a1d99cc3f2a26659ed2d576d4724efe2 src/c/matrixOperations/spec2/zspec2a.c
+ea44c6c86fb80e5088b72eb14dacc107 src/c/matrixOperations/squaredMagnitude/csquMagna.c
+3845a7bfdba7566568c838ba0b28b558 src/c/matrixOperations/squaredMagnitude/csquMagns.c
+d2770c01be1409c9a7a07dcccc47b9de src/c/matrixOperations/squaredMagnitude/dsquMagna.c
+96a3e4f384298aab50eed55de44a2b5a src/c/matrixOperations/squaredMagnitude/dsquMagns.c
+a4d7893db5461c5671ede841a4d625f5 src/c/matrixOperations/squaredMagnitude/Makefile.am
+f62d2e2c40d8888f467ebd458f4fb18f src/c/matrixOperations/squaredMagnitude/Makefile.in
+f31e6a8c7d8e9d706924b8f7b8b5a778 src/c/matrixOperations/squaredMagnitude/ssquMagna.c
+e25ffe842f73367c01b1e84dc3f747f4 src/c/matrixOperations/squaredMagnitude/ssquMagns.c
+5ad0a9e5e5ec8137285039b02216e4bf src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj
+77b4f679cab91802270b699acc7b0cef src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj.filters
+19e5533c64ccaae972f9f750910124c9 src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj
+5b730398121ed8bb6bcb9a6ef7be7780 src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj.filters
+c97f6aecbf5c875581e15fbedc4470fb src/c/matrixOperations/squaredMagnitude/testDoubleSquaredMagnitude.c
+260afffe278c71abd0c337deb72a0a6d src/c/matrixOperations/squaredMagnitude/testFloatSquaredMagnitude.c
+b530608a8c346949fca8642de54cbd44 src/c/matrixOperations/squaredMagnitude/zsquMagna.c
+4fdc3fc88b906b91b6b269c20aa834a2 src/c/matrixOperations/squaredMagnitude/zsquMagns.c
+74a21cf3fa87c225b90975ecae7aaa44 src/c/matrixOperations/trace/ctracea.c
+f35c0e7edf17ce9b4c3d6303025d6dc4 src/c/matrixOperations/trace/dtracea.c
+273b05b7c6c5e3a33042d507d389d7f7 src/c/matrixOperations/trace/Makefile.am
+09e5c39b997600695cac3f6fc3124789 src/c/matrixOperations/trace/Makefile.in
+d11a18221183f36c849b32db8a0108b9 src/c/matrixOperations/trace/stracea.c
+5bb89bc1547ed881381b2472086750c9 src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj
+f5eaf73c2a0b0deaa0e5667226515dc4 src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj.filters
+704b709ba43e407e4e9a0ddb2da639d8 src/c/matrixOperations/trace/testMatrixTrace.c
+22c3beb35ddc175c77e1c1f7640f76cf src/c/matrixOperations/trace/ztracea.c
+80845233fd3270efe702a57a9c9ca5cd src/c/matrixOperations/transpose/ctransposea.c
+4c911e14c86df67c105bc6927a9834c5 src/c/matrixOperations/transpose/dtransposea.c
+be248ecc333ac275da950d557ad764b4 src/c/matrixOperations/transpose/Makefile.am
+cb8e58941fd6d873db1da3de731891e5 src/c/matrixOperations/transpose/Makefile.in
+1c72366ef7cf6d9165740f687b293f7c src/c/matrixOperations/transpose/stransposea.c
+938b9c887fe069553e024d6c637a84a2 src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj
+b346bb7c0f1cf2e0ae937eb93df537c6 src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj.filters
+1359c202159b457e70df0b3410cfdf6a src/c/matrixOperations/transpose/testMatrixTranspose.c
+6a432c03a332c5f38fdd538bfaeeb54e src/c/matrixOperations/transpose/ztransposea.c
+4e35354a156eafbf17a6a9a2daae4cfd src/c/matrixOperations/zeros/czerosa.c
+10e1244b9632e85616f68794d6acaeeb src/c/matrixOperations/zeros/dzerosa.c
+f62bf4da15c9b4bd42c2bd5f7d8bab36 src/c/matrixOperations/zeros/dzerosh.c
+2b9a339bf6b1d1d473f64876f641e2db src/c/matrixOperations/zeros/Makefile.am
+74e5c067db908d108fd801de1efec644 src/c/matrixOperations/zeros/Makefile.in
+8982d8a3a4b6a6fb7e376d8aca700f5e src/c/matrixOperations/zeros/szerosa.c
+52ec6c00ccbce35f4f120e2dd8de15fc src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj
+f5e3b7dce10bec6019553ff3042c1456 src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj.filters
+e9665ebaef7c1c6036c1e19a69701ae7 src/c/matrixOperations/zeros/testMatrixZeros.c
+13ff30964399dc4fa2c2c2ba7631350a src/c/matrixOperations/zeros/zzerosa.c
+5ff63925285d7e91f2dc2f8767e44aa8 src/c/operations/addition/cadda.c
+f833d21607baef26a484151ac5465644 src/c/operations/addition/cadds.c
+f1782cde23aaf248142f90198c480113 src/c/operations/addition/dadda.c
+fcda8a0c41b9cdde2ebbf2201ef5de06 src/c/operations/addition/dadds.c
+dacf3ee4868b81f14312649642193ee3 src/c/operations/addition/Makefile.am
+1d9643483d39b41efc0967a9802af988 src/c/operations/addition/Makefile.in
+c5d6dc8ee6fc8342216092638c2bbf53 src/c/operations/addition/sadda.c
+518b69078c9401f6ee0bc690d44e7e38 src/c/operations/addition/sadds.c
+36e203713a37bf1d17e2910b459e7920 src/c/operations/addition/test_Addition/testAddition.vcxproj
+59a89dc7630fb1ce648d1e0486309a5b src/c/operations/addition/test_Addition/testAddition.vcxproj.filters
+b30859e8c4a0f16a27cb056b1560c7eb src/c/operations/addition/testAddition.c
+bfd33ef5d2626626f93860f928f43eb6 src/c/operations/addition/zadda.c
+e19469bcc208f340597aec524702e50e src/c/operations/addition/zadds.c
+1b74ff9975c51817d04c4f8f42730cd0 src/c/operations/auxiliaryFunctions_Import.def
+0640b0858b6eb640be8a9e67f4a17ea7 src/c/operations/division/cldiva.c
+4da35a6f9ad45250bd9db758e244242b src/c/operations/division/cldivs.c
+88af19fff7d0a726005064c267fd50dd src/c/operations/division/crdiva.c
+9a4c176ab69f72761bd5fe0013d0f30f src/c/operations/division/crdivs.c
+a800536e78a66b326f5eb0bf6f7e8817 src/c/operations/division/dldiva.c
+e9fdb984cb32eba4b634f59053b341c6 src/c/operations/division/dldivs.c
+74668ae68178c5fa701bb749ff852ddb src/c/operations/division/drdiva.c
+491f63cd824b19c2c45f171ab649fab7 src/c/operations/division/drdivs.c
+921fb2ccebd13c1f479452558cb06149 src/c/operations/division/Makefile.am
+90aa97d452d3d10295b0e3638baff96a src/c/operations/division/Makefile.in
+6fa87a692c2a3d54b2128e8957fa5495 src/c/operations/division/sldiva.c
+ee4ddcad64ee26a9d68e1e1f08ed9233 src/c/operations/division/sldivs.c
+94b25a8ba6e6487b1a8c36cb1bc4b045 src/c/operations/division/srdiva.c
+f5cd41f66531b2d558eeebc71e3c9abe src/c/operations/division/srdivs.c
+addf1bc9de6f2360cc03ffdd2d994d25 src/c/operations/division/test_LDivision/testLDivision.vcxproj
+7984cc90b42afeb615b984859e3134f9 src/c/operations/division/test_LDivision/testLDivision.vcxproj.filters
+e5db1e44dc9e33fec67fdaefe884c5d8 src/c/operations/division/test_RDivision/testRDivision.vcxproj
+c10833546cd04b2bc228ea3742176595 src/c/operations/division/test_RDivision/testRDivision.vcxproj.filters
+efba0a55f9f0e23e4466415b7a5c9f4c src/c/operations/division/testLDivision.c
+cacfd895de64486f74f256f61ad6e701 src/c/operations/division/testRDivision.c
+ce6f2414a599d196767ae8c2141d4728 src/c/operations/division/zldiva.c
+af9c78d972e741b8cfd93c427243808e src/c/operations/division/zldivs.c
+a58f4d2a1434c9ca9189266ddb18c621 src/c/operations/division/zrdiva.c
+718f5cb9730175638d363ab16d0946e8 src/c/operations/division/zrdivs.c
+99066a040c18b7321ae4c925b8b49ed2 src/c/operations/includes/addition.h
+316e22807078de7bd7ad5193a9e9882e src/c/operations/includes/division.h
+37c508dedaa46e89563d5d36158e6908 src/c/operations/includes/dynlib_operations.h
+23cb5addc47997f75705d21e015f2fd5 src/c/operations/includes/multiplication.h
+e07ae31814175ffc108395e01572b59d src/c/operations/includes/subtraction.h
+761b6900ca217ade936eb11e311921dd src/c/operations/interfaces/int_OpBackSlash.h
+516c37dbfdc369821e0b446ccfa5289e src/c/operations/interfaces/int_OpDotBackSlash.h
+7495860a4741afdf545a906ed63b708c src/c/operations/interfaces/int_OpDotSlash.h
+11e718b075382e6ff0de9d6c757d7cfe src/c/operations/interfaces/int_OpDotStar.h
+b2240ab27f18c6d8aa11facab2c9acd8 src/c/operations/interfaces/int_OpEqual.h
+6e503fb9dcf867467e9fb67311654da5 src/c/operations/interfaces/int_OpExt.h
+8e444f10c4e2f3c79abcdf46f122299a src/c/operations/interfaces/int_OpIns.h
+463293fdd3d185b60a6c19a8a6193605 src/c/operations/interfaces/int_OpLogAnd.h
+b83615e2d6f8b97b52555cfb0288d2cb src/c/operations/interfaces/int_OpLogEq.h
+cd50220e114a6a295824111094be2598 src/c/operations/interfaces/int_OpLogGe.h
+08d7b66deb3a9103e30dca415c68a977 src/c/operations/interfaces/int_OpLogGt.h
+f97ea291b14c3624c0a9d2350aa59a3d src/c/operations/interfaces/int_OpLogLe.h
+8601b043d36355d66b211afabbfb86d8 src/c/operations/interfaces/int_OpLogLt.h
+fe47ce17fa7d53ddadf22e34307d1f45 src/c/operations/interfaces/int_OpLogNe.h
+14e32714c6e5af49cea8a66a2049cddd src/c/operations/interfaces/int_OpLogNot.h
+ce7f95a3c22e6520c8d9daeb6f98703d src/c/operations/interfaces/int_OpLogOr.h
+fb4cb4b36b8d2746bbfb2b18fb324670 src/c/operations/interfaces/int_OpMinus.h
+6ab1d71238b356074eb5446d84bc71f6 src/c/operations/interfaces/int_OpPlus.h
+407eb295ad6cc03716fd9ca3c7fca35f src/c/operations/interfaces/int_OpSlash.h
+8605bf18594bdd01ac730b35093823c5 src/c/operations/interfaces/int_OpStar.h
+d0154963cd8eb441f980e9c2ec85215a src/c/operations/Makefile.am
+a1561bba738907ad9a9b78cab500fb9f src/c/operations/Makefile.in
+110ba21a6feb8db71e97aee28d5f0a50 src/c/operations/matrixOperations_Import.def
+82648fe5118a5c5f571930d0a1f0a0c8 src/c/operations/multiplication/cmula.c
+90d68ec36644d2c06f75391e1eaaefde src/c/operations/multiplication/cmulcsv.c
+94ee6903bf5ab780258519ce64a63ad6 src/c/operations/multiplication/cmuls.c
+4bb533dbd611633811eeda41fc7b9f6f src/c/operations/multiplication/cmulscv.c
+83a2fd296674a7cf0d9410e19346894a src/c/operations/multiplication/cmulv.c
+bd1f75a8d848e467452c3629b30b61a6 src/c/operations/multiplication/dmula.c
+601aff9e2730d46db05e2c616cd4bb2f src/c/operations/multiplication/dmuls.c
+91d6c75e205ba492b35bd937a12e084a src/c/operations/multiplication/dmulv.c
+56fb78cedc13caabadad92da00bee382 src/c/operations/multiplication/Makefile.am
+07c508bdd0c22259829050f9dd308829 src/c/operations/multiplication/Makefile.in
+b533670be7cf8c267cce11588a4345b0 src/c/operations/multiplication/smula.c
+24c70dde577338188c3650cee1c22767 src/c/operations/multiplication/smuls.c
+a771a16d7fcc8adc54dc5425ca09fd5b src/c/operations/multiplication/smulv.c
+ae5e88aaffb864d29d5535813cdfc5c5 src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj
+6ed8776b26a79ba8e60ac3600743ac40 src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj.filters
+4983fca285c27b6a5aeb569741c9318b src/c/operations/multiplication/testMultiplication.c
+89f5a4e20bea81a7df52b05aa3d5f51e src/c/operations/multiplication/zmula.c
+8578eeb72e9175b414b326a3f82a181f src/c/operations/multiplication/zmuldzv.c
+97447c301b660e5343cd900672e7824b src/c/operations/multiplication/zmuls.c
+be18e0f6d2b664a176cbaa31c0cfe5c0 src/c/operations/multiplication/zmulv.c
+4d3e2c565c6c2147362fbbc750ef9011 src/c/operations/multiplication/zmulzdv.c
+6f86294fa4c18bc602e6bcc582e9e2ec src/c/operations/operations.vcxproj
+3ad50cd22e45bb717d2b007ade125193 src/c/operations/operations.vcxproj.filters
+ee30a90d451a5552bd301bf6bba0e574 src/c/operations/subtraction/cdiffa.c
+d88ef95c363034af93609dddf151052d src/c/operations/subtraction/cdiffs.c
+145047c915ba8979cbf7f6f6c99e1a10 src/c/operations/subtraction/ddiffa.c
+edd945d41c86a08bb4d8ee7c213bd65d src/c/operations/subtraction/ddiffs.c
+9db087029d86cbc806a99b36bf4d6fed src/c/operations/subtraction/Makefile.am
+10e289a773488e6b82ff0d8714ee87fc src/c/operations/subtraction/Makefile.in
+03cafd70a4b9568cbc061c19129405ee src/c/operations/subtraction/sdiffa.c
+057adf9fb6dfbe913cb40f031d16eabc src/c/operations/subtraction/sdiffs.c
+e4a88e8fe423ac50526a79be79b7bcf2 src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj
+096e603c2e1e78e72c67cbe011b082f9 src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj.filters
+d4b8795136b19592f18d4ea356209633 src/c/operations/subtraction/testSubtraction.c
+a4463497317040326c0ae1b545ad467b src/c/operations/subtraction/zdiffa.c
+3f5d62e8b92784f0e0c37303db4a2fa1 src/c/operations/subtraction/zdiffs.c
+3c7500f10744a90331007df7e74da5e9 src/c/signalProcessing/conv/cconva.c
+7a36cbe5f224b9661b72829df70846e2 src/c/signalProcessing/conv/dconva.c
+050a6edc4053ae129c3bb6168acf5a09 src/c/signalProcessing/conv/Makefile.am
+50dfae2abee40f8e01ff276617d2700d src/c/signalProcessing/conv/Makefile.in
+377978f0093f47220fb24cb6657fa651 src/c/signalProcessing/conv/sconva.c
+9116c107194dd1c9f386f6303b2b7a1f src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj
+3519aa85b533159ac785df0aa5747eb6 src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj.filters
+49d3a3f539792154e1057f1f505ac4ee src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj
+182182772489539f36a042acbc63840f src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj.filters
+bcaaa424838e55dd5581df3a2f78c3ff src/c/signalProcessing/conv/testDoubleConv.c
+a5d6bb083b229ce19bc7d1424f5146d8 src/c/signalProcessing/conv/testFloatConv.c
+5d51acfd42cf592da66682f24e94dd0c src/c/signalProcessing/conv/zconva.c
+5e05f984f2bdca89614cf5c44c2aff7e src/c/signalProcessing/conv2d/cconv2da.c
+5d74c91c02b69e5590fda869bbca780a src/c/signalProcessing/conv2d/dconv2da.c
+c211e943376a8ab19acb2bc20099bb7d src/c/signalProcessing/conv2d/Makefile.am
+350b9b9d8f3fdc491aee2e26075a8f55 src/c/signalProcessing/conv2d/Makefile.in
+a0ec91c645ba03cdc72d9bd6264a2159 src/c/signalProcessing/conv2d/sconv2da.c
+040d73044e233b54469c6389578e514d src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj
+1d62404ab5a3a9d9780d43f0381bd3e4 src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj.filters
+8026713302aea46d694e12595314738e src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj
+68838983a8f6f165053b93fa4f6fc2f3 src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj.filters
+633588c6fce4a2c50ad80c3f4ddb2a2d src/c/signalProcessing/conv2d/testDoubleConv2d.c
+a228b9845c2d1c3240c358dfa2285fa3 src/c/signalProcessing/conv2d/testFloatConv2d.c
+cef374bbb20c89a66525e1d5a06f95f7 src/c/signalProcessing/conv2d/zconv2da.c
+53967d049c0c82b45c9a0ad67505f842 src/c/signalProcessing/crossCorr/ccrossCorra.c
+727fe9ac91dc51ead37176caa71b9936 src/c/signalProcessing/crossCorr/dcrossCorra.c
+25752e7ba5079341089570be1b9af406 src/c/signalProcessing/crossCorr/Makefile.am
+a8b71ca2d6e6c1b0a91876c49b98ca24 src/c/signalProcessing/crossCorr/Makefile.in
+3ed3bc0e9b806b7de64335cb41a0b67d src/c/signalProcessing/crossCorr/scrossCorra.c
+31feb530a05de7298932e7f193a1a800 src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj
+da8070c95321fd22551bc2138d8baf9f src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj.filters
+aef0f831de01cb70467cecb3253309fc src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj
+3fca0ae896a4c774ffa83baa95890359 src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj.filters
+b87bc2a4d486bd68e44ace5e4250a6d2 src/c/signalProcessing/crossCorr/testDoubleCrossCorr.c
+af7c37eab17e9fe64b9762e5368799b8 src/c/signalProcessing/crossCorr/testFloatCrossCorr.c
+0ee2639ef9a914682ba2ab8a2c74d290 src/c/signalProcessing/crossCorr/zcrossCorra.c
+7af9ed908f4bfdc4670ed2c46801b6ff src/c/signalProcessing/fft/cfftma.c
+7ca97d6a7a50d39d07cb6e8ffadb3b76 src/c/signalProcessing/fft/dfft2.c
+390c6f3a74a153992fdabd009b555dcd src/c/signalProcessing/fft/dfftbi.c
+fb4e552bda486590864f9a435fab05a7 src/c/signalProcessing/fft/dfftma.c
+a8ea154e701d92599fb04e7d50d57d66 src/c/signalProcessing/fft/dfftmx.c
+d29f3850843f542d39576341585b608a src/c/signalProcessing/fft/fft842.c
+7db2ed9b41b926e4f60a7ac5687e7ceb src/c/signalProcessing/fft/fft_internal.h
+10de28fcfb9b549debdd75f57afa00e0 src/c/signalProcessing/fft/Makefile.am
+2d628d592d95bec5404c54aec62d062c src/c/signalProcessing/fft/Makefile.in
+a4ede43542147f31943322ceef82d881 src/c/signalProcessing/fft/r2tx.c
+0d3dd883126cb68a2e0ef850b7cfa3b5 src/c/signalProcessing/fft/r4tx.c
+60d1f30bdfa132056ef55691088917a2 src/c/signalProcessing/fft/r8tx.c
+9bf63ea50f172dd35ba9bf59040062cb src/c/signalProcessing/fft/sfftma.c
+98b5539a594b88d510b564b305de0aaa src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj
+8a90d93e25fbf30b9335bddce9e7a314 src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters
+01a40e311f37923b8267715eada24374 src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj
+21aa965247dd35b21ff621b8cda522a7 src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters
+4b011f2a0384f383d0380d922069d0b7 src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj
+9fc5b935a1db18e0d328893825c05567 src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters
+ad2bcc088f57abc05c7a30dfda3bee4d src/c/signalProcessing/fft/testDoubleFft.c
+48270177d8332a55ac6e67ccb047a5fd src/c/signalProcessing/fft/testFloatFft.c
+d94b4727f9c89e0cb1edd2b5653a19c4 src/c/signalProcessing/fft/testMatFft.c
+a9c72068add88f240d8f88a53122485a src/c/signalProcessing/fft/zfftma.c
+49151ef58baedae82b060b350b8312f4 src/c/signalProcessing/fftshift/ccolumnfftshifta.c
+397ae9796d8cc846eabbb8c7712551d6 src/c/signalProcessing/fftshift/cfftshifta.c
+6a46fa9ef425aed178b43f4ae87b803c src/c/signalProcessing/fftshift/crowfftshifta.c
+532c12939d718c71f0a17d28ffebb4ca src/c/signalProcessing/fftshift/dcolumnfftshifta.c
+231434764ba585311ceb102cc0f1f0ab src/c/signalProcessing/fftshift/dfftshifta.c
+7acd5b46235f509d83880e56b5c37064 src/c/signalProcessing/fftshift/drowfftshifta.c
+00e8c0a2467e07f76c2a0ffe61f88507 src/c/signalProcessing/fftshift/Makefile.am
+8c31089be9dcb881ebfa2d5b4f592cd0 src/c/signalProcessing/fftshift/Makefile.in
+fd278effe500ec83017587ade2a48e61 src/c/signalProcessing/fftshift/scolumnfftshifta.c
+2d192a7a886053676f5a6e3b8441930d src/c/signalProcessing/fftshift/sfftshifta.c
+2ec76a7093248f527422428aeac0bc1f src/c/signalProcessing/fftshift/srowfftshifta.c
+2bd03a76560c8d2642f0b7b80325e98a src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj
+1d29c45cdaa1e65264efcbde32896975 src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj.filters
+4dacca9d4e93d7d1a5c6e6991e0682f0 src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj
+5024dd90eae3873d9e1a17fe9cf7c3a3 src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj.filters
+0ab0cf9e54c802885ec7e8f30710b626 src/c/signalProcessing/fftshift/testDoubleFftShift.c
+836ae697ed176355a21478aaf37e9358 src/c/signalProcessing/fftshift/testFloatFftShift.c
+ef517534b8cb75c8c2ab037cb2a0e113 src/c/signalProcessing/fftshift/zcolumnfftshifta.c
+f934c3a7b11e39830f2b07abd6ec6616 src/c/signalProcessing/fftshift/zfftshifta.c
+f2c6dcc350a5589c7d210a1d5fcbc6bf src/c/signalProcessing/fftshift/zrowfftshifta.c
+4c32e9325b285947a7825b4f413504de src/c/signalProcessing/hilbert/dhilberta.c
+8482b84125cb672c65a56559226a886e src/c/signalProcessing/hilbert/dhilberts.c
+fcdcd0d16994f0db5fd7689ac7724e1c src/c/signalProcessing/hilbert/Makefile.am
+009ef17494478643658195d421e06be4 src/c/signalProcessing/hilbert/Makefile.in
+0bb26609e12de9d61a56b0f9984c1e7e src/c/signalProcessing/hilbert/shilberta.c
+38d771ba8d577860415a915ebfacb262 src/c/signalProcessing/hilbert/shilberts.c
+0af5069bde98fb66dd426977f79e08b1 src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj
+29d52dee04c9e94509f8e994cc20b78c src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj.filters
+769ef729c4d9611d357bded94cf66394 src/c/signalProcessing/hilbert/testHilbert.c
+0b38c56b98e95f7fdd4a67b7c7455af4 src/c/signalProcessing/ifft/cifftma.c
+ea15ad5afe3a236cc266db5983ef496a src/c/signalProcessing/ifft/diffbi_lavraie.c
+dd1df1c63ab33df53246188b6b7ff8e0 src/c/signalProcessing/ifft/difft2.c
+a47fde0fd465decb2f4df26c2725c19f src/c/signalProcessing/ifft/difftbi.c
+43ae73ded614eda790b8d1e22fb351c8 src/c/signalProcessing/ifft/difftma.c
+d76b354b40f66714229b58f76cb06f91 src/c/signalProcessing/ifft/difftmx.c
+52e9dbd2dba703a79e098c5cf86684e8 src/c/signalProcessing/ifft/ifft842.c
+6e331c6543c43298308a54ed9a99fc03 src/c/signalProcessing/ifft/ifft_internal.h
+c36077a1dc40927c42216e314e36d37e src/c/signalProcessing/ifft/ir2tx.c
+6ac90f7e21f605e716c5df3e67db9b20 src/c/signalProcessing/ifft/ir4tx.c
+6989286240f69985424ed7ebe150112f src/c/signalProcessing/ifft/ir8tx.c
+982ebb913b6f2c343f3225aedb9543e3 src/c/signalProcessing/ifft/Makefile.am
+99328fbd6ece5df644ca2795b8df71ba src/c/signalProcessing/ifft/Makefile.in
+17ad850bb35c2396db54d923fa1b85e0 src/c/signalProcessing/ifft/sifftma.c
+81f37522737ea9a20ac8e84193be6983 src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj
+56d409887d96ca9202e719838a336125 src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj.filters
+a2318300bc4ff049135c2b8fdec8722a src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj
+a81d00f32f6a0d3f66ab4271af3b3680 src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj.filters
+c0245254958addbd4a7e443127a0ef27 src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj
+a318e3f49a2d1c431f7787d3a21519f7 src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj.filters
+ca9820bef09192e2b82d376f46ae4e41 src/c/signalProcessing/ifft/testDoubleIfft.c
+d3ce9f70fee1c7ab54f84bb7daf04697 src/c/signalProcessing/ifft/testFloatIfft.c
+7c1f8b4ce45cb9ae6c572025944b5e7b src/c/signalProcessing/ifft/testMatIfft.c
+010fa160d02eb90cf1bf0c153fb79637 src/c/signalProcessing/ifft/zifftma.c
+b2962c73f6424faac20987ca2b0dbbf2 src/c/signalProcessing/includes/conv.h
+6245288e42ca18fa853a2e5e395f563a src/c/signalProcessing/includes/conv2d.h
+875941a8e9d33b94891a39331d1250cb src/c/signalProcessing/includes/crossCorr.h
+04e1bd05ae10a21a28805c8dbf1c84ba src/c/signalProcessing/includes/dynlib_signalprocessing.h
+0d7dc2c578d8aa9628c3af7b942a34e0 src/c/signalProcessing/includes/fft.h
+fbf81bb03e07edabda36cb019c629fa7 src/c/signalProcessing/includes/fftshift.h
+02b0f15c32ab5c6ac14f6b88c02bd92c src/c/signalProcessing/includes/hilbert.h
+d846585c833775da33a2202d97f7e30e src/c/signalProcessing/includes/ifft.h
+a7320192cf1d5c62212840dcebc64df0 src/c/signalProcessing/includes/lev.h
+3d8b6504fa381eb9becd35117f6a2acb src/c/signalProcessing/includes/levin.h
+d311b430f2820d2a3697b4e05609e9c5 src/c/signalProcessing/includes/lpc2cep.h
+4a6e2dc40f49f95ef5b9b50244637700 src/c/signalProcessing/interfaces/int_cepstrum.h
+a94f8ae77844af347a625849795ddf85 src/c/signalProcessing/interfaces/int_convol.h
+24fc4a241e0f4513c72d4cbb572ef7a9 src/c/signalProcessing/interfaces/int_fft.h
+9077e27cb016c22c50e3b33ee8c9a9d7 src/c/signalProcessing/interfaces/int_fftshift.h
+6da4d97f894d33f13f030054cb89353e src/c/signalProcessing/interfaces/int_hilbert.h
+e6d305b7ae963b11e5d0b0138c9fe6b6 src/c/signalProcessing/interfaces/int_ifft.h
+de97247faf18ac8dc23cd4ca060003a3 src/c/signalProcessing/interfaces/int_lev.h
+de11d487ee4309e76d9fe405861b8b42 src/c/signalProcessing/interfaces/int_levin.h
+f8c61b334d1671f09848afcb311aeaa1 src/c/signalProcessing/interfaces/int_lpc2cep.h
+99ed3d0f9ef24d84219bfebabf46928e src/c/signalProcessing/interfaces/int_xcorr.h
+7d11c97c717505b13799e5d88f1c3871 src/c/signalProcessing/lev/cleva.c
+25621085abdde30cca16c1aea1da3084 src/c/signalProcessing/lev/cleva2.c
+e08b9a0948ceff7a10f0c4f373ca9e90 src/c/signalProcessing/lev/dleva.c
+f963a4c62c536a0efbfcc383d05ad1c2 src/c/signalProcessing/lev/dleva2.c
+2ac50f849535738efd4753df4f6230b4 src/c/signalProcessing/lev/Makefile.am
+c1432a8951d735a8dbb9e77d5147d933 src/c/signalProcessing/lev/Makefile.in
+52671687eda0ec39680b8730c2c18594 src/c/signalProcessing/lev/sleva.c
+1444dec5de7ebaf2bf1d819722a1f7c0 src/c/signalProcessing/lev/sleva2.c
+4a8038ce490471b06bd0a233dc724098 src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj
+f2ac41a24830869f76ee246b8883ce8e src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj.filters
+31c92e46911fc206b167d9c8d648d19a src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj
+b86258df8318fdf2c2a195534f8675cd src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj.filters
+3a98d95cead753b71c37a33e0b06e3e4 src/c/signalProcessing/lev/testDoubleLev.c
+363f767961483a012c521381dc1033c2 src/c/signalProcessing/lev/testFloatLev.c
+4c9fe3c570f981df47c0e688a9922039 src/c/signalProcessing/lev/zleva.c
+9f28a7e8c8047054e230f95e8f56f6e8 src/c/signalProcessing/lev/zleva2.c
+6e94168f73a3a98d391af843eda852a5 src/c/signalProcessing/levin/dlevina.c
+cd725665c359be3a2a0b32f9f0992f8a src/c/signalProcessing/levin/levinUtils.c
+dc2472f42399626c5d18b0e4f4a112fd src/c/signalProcessing/levin/levinUtils.h
+dc26829c8c1d6a17bc7eb74c48395917 src/c/signalProcessing/levin/Makefile.am
+db3285f64ef36c7c437e2393aa0d3107 src/c/signalProcessing/levin/Makefile.in
+940cde3d72835447b77111ad1c5b3de3 src/c/signalProcessing/levin/slevina.c
+196eaf670b15ec6085ec99fbfce66d54 src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj
+cd48dcf39107d7dc628142e0959665f7 src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj.filters
+805910e2ee8e7d86163a356527116c13 src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj
+15a72ecedc555d7f5710185424ab73d3 src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj.filters
+8c705b27f4e0e231c3190354ec5ecf48 src/c/signalProcessing/levin/testDoubleLevin.c
+b1af6d4144c44afea236f144859c630b src/c/signalProcessing/levin/testFloatLevin.c
+afa9e54527678002258eac2a052fdd5c src/c/signalProcessing/lpc2cep/clpc2cepa.c
+b3b89594453922f2aa354a70ea8e43fb src/c/signalProcessing/lpc2cep/dlpc2cepa.c
+6108a40b7d7f47383f369b9c72badbd1 src/c/signalProcessing/lpc2cep/Makefile.am
+a749192fa9037f310965dd78b47593ba src/c/signalProcessing/lpc2cep/Makefile.in
+c8fbbca5d77bfa71b374b11fa7e1e411 src/c/signalProcessing/lpc2cep/slpc2cepa.c
+73717507da145abbfde9836a4a86f4e6 src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj
+4de2a8ce3aae8a550a1af91ae84fdf8d src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj.filters
+da5be71be1a23163191ae41cdc445ac4 src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj
+24098098ed7df59e1d72037dcf371af7 src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj.filters
+cd2ed04ed1fbd2418d5ef290e6d20691 src/c/signalProcessing/lpc2cep/testDoubleLpc2cep.c
+bedc8cb8052ade14305a0321bab410c6 src/c/signalProcessing/lpc2cep/testFloatLpc2cep.c
+b4672c19695e2772f35484c26f57e394 src/c/signalProcessing/lpc2cep/zlpc2cepa.c
+8fae259324ea84dca93fcba1b344e92a src/c/signalProcessing/Makefile.am
+37893482ecc3f136689c0fa71571daff src/c/signalProcessing/Makefile.in
+5634f775aa31b6aac603e827dc6c594a src/c/signalProcessing/signalProcessing.vcxproj
+202383922ee15457ea59370abeb22db4 src/c/signalProcessing/signalProcessing.vcxproj.filters
+0b59f35ed2f880222786f16d97ce14fc src/c/statisticsFunctions/includes/dynlib_statisticsfunctions.h
+c3eebc305eeb57a43b54532da687e73c src/c/statisticsFunctions/includes/mean.h
+14cfd6c9c7bca4ee1ab672e31df2192d src/c/statisticsFunctions/includes/meanf.h
+3e57b69bb07842ba15b310ffb73f24c2 src/c/statisticsFunctions/includes/prod.h
+0f94c2d175c63d9fb89f91e9e19ad140 src/c/statisticsFunctions/includes/statMax.h
+477bbe762b203fea553a948256a08c2a src/c/statisticsFunctions/includes/statMin.h
+6e54c536e3e626345e85568936dcb1d3 src/c/statisticsFunctions/includes/stdevf.h
+31804336c9b22febab299879f606b47e src/c/statisticsFunctions/includes/sum.h
+2cb58bbe454a07a2461e625c0e92a585 src/c/statisticsFunctions/includes/variance.h
+ad763af800ff09fe3f6f30c902c91eea src/c/statisticsFunctions/includes/variancef.h
+b1a45723ef24faa531ae0c04f786ca9b src/c/statisticsFunctions/interfaces/int_mean.h
+0ed22b18be46be193fb2f99c7851a2b2 src/c/statisticsFunctions/interfaces/int_meanf.h
+e1c5e8de1a51521db5ba3ae2c2f80775 src/c/statisticsFunctions/interfaces/int_prod.h
+41bbec2f3285a15ab37481eb4a0f062a src/c/statisticsFunctions/interfaces/int_stdevf.h
+3a8b778bdce18ef44ac243b25bccec5a src/c/statisticsFunctions/interfaces/int_sum.h
+c8eceb4fed8b005aee070b0ef7fd83ba src/c/statisticsFunctions/interfaces/int_variance.h
+2022d87e950e973923b3401bad2514db src/c/statisticsFunctions/interfaces/int_variancef.h
+89b10d39d2055eb09a66aaad833c1c5e src/c/statisticsFunctions/Makefile.am
+3f213c6b8c46683abd1d61ad4c2bd6c2 src/c/statisticsFunctions/Makefile.in
+63426ce162e43f08aeddf071ad21d275 src/c/statisticsFunctions/max/dcolumnmaxa.c
+b223f99be9052bc2a42407fcceac7114 src/c/statisticsFunctions/max/dmaxa.c
+bf33fd300ae6c56e8092c3a2b8b36984 src/c/statisticsFunctions/max/drowmaxa.c
+d203e65adecc93734bfffa982622244f src/c/statisticsFunctions/max/Makefile.am
+90ff9cbd07994994e31ecafc2f43d34d src/c/statisticsFunctions/max/Makefile.in
+69fd80714d7c3f41bdac75346909f618 src/c/statisticsFunctions/max/scolumnmaxa.c
+bef5a517b44c44b3a238f2ffe1b36011 src/c/statisticsFunctions/max/smaxa.c
+20ab34f9b6132a3c1aee1bd210b1caf7 src/c/statisticsFunctions/max/srowmaxa.c
+d4323ee87bfb2ad0b12410c0708e5092 src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj
+f0d019ec34919f5aa45aaf11104ab775 src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj.filters
+55bb022ddf52e7fcfad95429079ee55d src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj
+bd4fee7767f64e04cdfdb7348ef39543 src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj.filters
+134196b2408c9839cea263af143b72ba src/c/statisticsFunctions/max/testDoubleMax.c
+15386a52f043b28a9dd5afb8b7d66808 src/c/statisticsFunctions/max/testFloatMax.c
+b10d7e3fd5f1737ffa83bef1bfd2c6da src/c/statisticsFunctions/mean/ccolumnmeana.c
+e68a30a57fc0bd1be7984bb1d56cca06 src/c/statisticsFunctions/mean/cmeana.c
+08a6a5b7b2b96b55d7e028ff62a7b826 src/c/statisticsFunctions/mean/crowmeana.c
+20fd9d36bcc175069de10f9083638487 src/c/statisticsFunctions/mean/dcolumnmeana.c
+50b20e7b3e4c9f1498b55d56f3c512bb src/c/statisticsFunctions/mean/dmeana.c
+b1fd782fa11f6a70b79e609d38e693f6 src/c/statisticsFunctions/mean/drowmeana.c
+c9a8e917d9cb4df70b36ab5525e2dac3 src/c/statisticsFunctions/mean/Makefile.am
+97098460e4f5032b615912700dc2b9e2 src/c/statisticsFunctions/mean/Makefile.in
+936282a49bc1e593528a3e021a8e736a src/c/statisticsFunctions/mean/scolumnmeana.c
+a83249ee68ce7baebe86c25011b702f1 src/c/statisticsFunctions/mean/smeana.c
+5e5c2788cc519dc2119d5f90d9ce341d src/c/statisticsFunctions/mean/srowmeana.c
+41704fb3858f836d0fd9b2e61aa6f20f src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj
+dfa62425c9d51d8b78491c756a836f0b src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj.filters
+26daf4cc71c78a06e5f645edb3e87c91 src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj
+328e60872c12689f18111a0f4f4f321e src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj.filters
+3c5bba770b42edf14d3abcbc3a4757fb src/c/statisticsFunctions/mean/testDoubleMean.c
+aaa17f771ea69300b7c35a70d185b1cd src/c/statisticsFunctions/mean/testFloatMean.c
+35587c2923f987fbb8d8cf72bae24e01 src/c/statisticsFunctions/mean/zcolumnmeana.c
+a7b9fae4c1270bc020c43c3fa2468a34 src/c/statisticsFunctions/mean/zmeana.c
+abb6ea6aa6f90d99dd666e73068794fc src/c/statisticsFunctions/mean/zrowmeana.c
+8aa692a42bb8386639c0759b19fbf5c7 src/c/statisticsFunctions/meanf/ccolumnmeanfa.c
+b70ee6dbda1e457b6f7560484a3253b6 src/c/statisticsFunctions/meanf/cmeanfa.c
+fe8a220a36f53bb9ba6f405ca1104a90 src/c/statisticsFunctions/meanf/cmeanfcs.c
+1095047a01dfb88d509b08f2191a014c src/c/statisticsFunctions/meanf/cmeanfsc.c
+9b97e6635775fc3cc1b69c6a8ae4695f src/c/statisticsFunctions/meanf/crowmeanfa.c
+e2c3fdedb5cf1fd0210f76224590d661 src/c/statisticsFunctions/meanf/dcolumnmeanfa.c
+47b7ba22d5c3f6d9bbb6e2a4af44fbb4 src/c/statisticsFunctions/meanf/dmeanfa.c
+efaf9eb8ef1b1f64b3fca6f63b255923 src/c/statisticsFunctions/meanf/drowmeanfa.c
+5592f192aa097b5c9b6eb15602f34982 src/c/statisticsFunctions/meanf/Makefile.am
+826aa6144168acaf780ebeede3cc6071 src/c/statisticsFunctions/meanf/Makefile.in
+bf1e3c592b9a93793f28080209e1be1d src/c/statisticsFunctions/meanf/scolumnmeanfa.c
+f93ce8835bd551f8fe3fd12867b6be4a src/c/statisticsFunctions/meanf/smeanfa.c
+7f260f450bda412b6606d3f747684a7d src/c/statisticsFunctions/meanf/srowmeanfa.c
+19443c2c7346c256af28727a760475ee src/c/statisticsFunctions/meanf/testDoubleMeanf.c
+0dc0be635b22dc69d9a4c9f83498ef9a src/c/statisticsFunctions/meanf/testFloatMeanf.c
+aa47a52020e9f2b43ff4144b64ad24e5 src/c/statisticsFunctions/meanf/zcolumnmeanfa.c
+0602b6b54c5a8a9b5664ae4155c11f5a src/c/statisticsFunctions/meanf/zmeanfa.c
+915a97a9e518e035973a5da2d2fa402b src/c/statisticsFunctions/meanf/zmeanfdz.c
+697e8eccf0f22d7b4db02a689e4c3603 src/c/statisticsFunctions/meanf/zmeanfzd.c
+b8eb0c77d4f2479ae128b35a02b98405 src/c/statisticsFunctions/meanf/zrowmeanfa.c
+959ddcfe4373e209f3ae846815565453 src/c/statisticsFunctions/min/dcolumnmina.c
+aa19842034923e726ce936a6d8dd7b45 src/c/statisticsFunctions/min/dmina.c
+6995afe1a882b8a11ab3ee337b05ae7e src/c/statisticsFunctions/min/drowmina.c
+23a2dfee2472ba93811dc161764d06fd src/c/statisticsFunctions/min/Makefile.am
+36336b91c44190d62d77ebd04d24ff75 src/c/statisticsFunctions/min/Makefile.in
+eb3223287d3095198eabebe3287b7da2 src/c/statisticsFunctions/min/scolumnmina.c
+0020b20ff79a1e1938853a9ca0ea6e27 src/c/statisticsFunctions/min/smina.c
+d03cc25aea3f0bf0927910212188bb40 src/c/statisticsFunctions/min/srowmina.c
+b37a51ede3937ccd8659e55d25fa0bbf src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj
+ec5dd86459be3923b96e8a0e6195c796 src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj.filters
+56d6a67d009dfce93f0d7926f38141a0 src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj
+ba79783284b6248b9aa0fca3601ddc59 src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj.filters
+65c6a14e45753ed3b6feb0f823abcc88 src/c/statisticsFunctions/min/testDoubleMin.c
+42f10fe352d58013e2f91cd2a6513a2d src/c/statisticsFunctions/min/testFloatMin.c
+a885fd3aeb799631b92e0eb520389f81 src/c/statisticsFunctions/prod/ccolumnproda.c
+0c1f9bbea1ef2b441318f4103797f425 src/c/statisticsFunctions/prod/cproda.c
+f7f753e919c6aa0117f4136523df6497 src/c/statisticsFunctions/prod/crowproda.c
+e81a7265710f45dd7ac1281ad8647a86 src/c/statisticsFunctions/prod/dcolumnproda.c
+9a5e23914a975f9e52bee1a87bcf3a6b src/c/statisticsFunctions/prod/dproda.c
+e144977786ef58696afd112df3cb26b4 src/c/statisticsFunctions/prod/drowproda.c
+8dccce72e1e13fabc6b4aefb8a4975fb src/c/statisticsFunctions/prod/Makefile.am
+c77bc6b1ace86e7be38315e17d76be18 src/c/statisticsFunctions/prod/Makefile.in
+dfe5dcf9d201d1a5acf05928e09c48c0 src/c/statisticsFunctions/prod/scolumnproda.c
+8375b49140b0b7ed152ed556d1237aff src/c/statisticsFunctions/prod/sproda.c
+97edd00cb7661a2aa210202bae4fdd59 src/c/statisticsFunctions/prod/srowproda.c
+346879e732fd3a40167baeb8ef80c4d0 src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj
+f10f58e5843d173ecdc6c31830b3f3cc src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj.filters
+d23671ad84e4c78e5f846fefa90a0f4c src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj
+3299e23d305b8da8f1ee6e8d872b23f4 src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj.filters
+5fea2512a37a5d283afc21b35d0c8963 src/c/statisticsFunctions/prod/testDoubleProd.c
+580ee3acf15d2285a95fe838230bdaa6 src/c/statisticsFunctions/prod/testFloatProd.c
+604f36e6363b7fccf7244c096b899249 src/c/statisticsFunctions/prod/zcolumnproda.c
+03897fb31fd4b7305c48d8165e52dad0 src/c/statisticsFunctions/prod/zproda.c
+3b73eb5dcf16dfd213a6e84419e8c699 src/c/statisticsFunctions/prod/zrowproda.c
+3b9513b0830dcb5f74cf996d68710da8 src/c/statisticsFunctions/statisticsFunctions.vcxproj
+331e333db843ba21a090dfd16f89a6ac src/c/statisticsFunctions/statisticsFunctions.vcxproj.filters
+2de5a7877b0f6b066662622c57b65534 src/c/statisticsFunctions/stdevf/ccolumnstdevfa.c
+9983974883eb1b0af0fa5576a6a45e37 src/c/statisticsFunctions/stdevf/crowstdevfa.c
+de0ba7b8486fd1a4679a32b985d9f035 src/c/statisticsFunctions/stdevf/cstdevfa.c
+2bd6ad76dc2d52d7816c7a1bcc0e4a36 src/c/statisticsFunctions/stdevf/cstdevfcs.c
+1009bd3bae68b35357a13397309884b9 src/c/statisticsFunctions/stdevf/cstdevfsc.c
+35737cc4a4fa149fdf4f16431157cf7d src/c/statisticsFunctions/stdevf/dcolumnstdevfa.c
+9244a876a5ecd4e525b7ab5878e2166c src/c/statisticsFunctions/stdevf/drowstdevfa.c
+39fe8ec26aa22ed773ff4a2f67ac849e src/c/statisticsFunctions/stdevf/dstdevfa.c
+2821d5aefb7afe76e8b1f8df15e616e0 src/c/statisticsFunctions/stdevf/Makefile.am
+7f4ab4ebed1186bbca88f7e24b10d277 src/c/statisticsFunctions/stdevf/Makefile.in
+40813727d6b901ab88514ee76b6649df src/c/statisticsFunctions/stdevf/scolumnstdevfa.c
+f919c65c393a89f1d402d9c1508a8567 src/c/statisticsFunctions/stdevf/srowstdevfa.c
+c4a6a783299f56f84976c58cc9da9ce3 src/c/statisticsFunctions/stdevf/sstdevfa.c
+61d4f6065ac877dda17fdda7d6f4e675 src/c/statisticsFunctions/stdevf/testDoubleStdevf.c
+d4fcaded478c91b08ccd8a5bc5acb5ec src/c/statisticsFunctions/stdevf/testFloatStdevf.c
+0095f357b4fbde3d62346203b6f7768c src/c/statisticsFunctions/stdevf/zcolumnstdevfa.c
+7c83fc6e6a0a18ae1304ebb57618b092 src/c/statisticsFunctions/stdevf/zrowstdevfa.c
+3d69988ba9b924d53790b32c8578b171 src/c/statisticsFunctions/stdevf/zstdevfa.c
+4e1e2eba858c79b3a40b70c06689fba8 src/c/statisticsFunctions/stdevf/zstdevfdz.c
+50ac240e8f4e87b4f71fee7203df4a89 src/c/statisticsFunctions/stdevf/zstdevfzd.c
+9380d5decd535672e19bfd5931b43a03 src/c/statisticsFunctions/sum/ccolumnsuma.c
+c2aa8b1526ff4c9c7d4df67a8e5ee8d6 src/c/statisticsFunctions/sum/crowsuma.c
+137753b96e90489e713808ee2aa047c9 src/c/statisticsFunctions/sum/csuma.c
+feb9e74b6ef0559202bb67248a0da421 src/c/statisticsFunctions/sum/dcolumnsuma.c
+8173b58e61a39f9005feb6085bd2831a src/c/statisticsFunctions/sum/drowsuma.c
+618b518828881bda6b49e8947094a60f src/c/statisticsFunctions/sum/dsuma.c
+d815e83f50d60b1c204bea569f01e988 src/c/statisticsFunctions/sum/Makefile.am
+6bb7de4b7642faffe5dcfba12387bd0c src/c/statisticsFunctions/sum/Makefile.in
+d8f06042e5e6a6a5e44adeb4318c40e7 src/c/statisticsFunctions/sum/scolumnsuma.c
+932d4d9067db9933729791f93b3a327a src/c/statisticsFunctions/sum/srowsuma.c
+bcb19555e7cb0373dffed165b1dee782 src/c/statisticsFunctions/sum/ssuma.c
+85eda36793dafb9ebe3a6e1c9c37cf9d src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj
+67481be385f07d85543eae850102cdb2 src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj.filters
+2d4d82613a444f22e06e5d80b41dae5c src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj
+0e7a01230ec64c9ab12eb8df6d41a644 src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj.filters
+a5f2c6ccec6e67f39712418d6a14cb01 src/c/statisticsFunctions/sum/testDoubleSum.c
+c09c38fa5646a3c38d24e07bfbe737a4 src/c/statisticsFunctions/sum/testFloatSum.c
+c972c04f1ab0ac97353b44ec79d5a3c7 src/c/statisticsFunctions/sum/zcolumnsuma.c
+e490370c78ef8cd00b59c008b645cc02 src/c/statisticsFunctions/sum/zrowsuma.c
+8f45c0f44f1b752a143cdf394a3a9ea3 src/c/statisticsFunctions/sum/zsuma.c
+1a49c741631b238a406927b11f545f1e src/c/statisticsFunctions/variance/ccolumnvariancea.c
+de9ed52693441244c2146cd550986204 src/c/statisticsFunctions/variance/crowvariancea.c
+8d3ab60801ee8ad14e38069f41055b92 src/c/statisticsFunctions/variance/cvariancea.c
+d57ee7b9860878726f76392338b52ca0 src/c/statisticsFunctions/variance/dcolumnvariancea.c
+2f1c8472fd63f2d27072a6b1f375362a src/c/statisticsFunctions/variance/drowvariancea.c
+5a486a728710203003bb9b0b094fa96a src/c/statisticsFunctions/variance/dvariancea.c
+57aac74eb145cd2c6ed88d8049898a73 src/c/statisticsFunctions/variance/Makefile.am
+3ed640a708fea0f823b2467191e1f03c src/c/statisticsFunctions/variance/Makefile.in
+a62148a63f9f47cc67cfe565b4593743 src/c/statisticsFunctions/variance/scolumnvariancea.c
+be56c9fa00bc0c70e49cc3467bceb210 src/c/statisticsFunctions/variance/srowvariancea.c
+36aa6cb6e9aad4cb3726d1742ffe19cc src/c/statisticsFunctions/variance/svariancea.c
+8d3a7ee667dd3f9d18bcf233168d58d1 src/c/statisticsFunctions/variance/svn-prop.tmp
+1609d941b3f61f38ba5e88fdcdf644c6 src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj
+8e30da3004e215fa1cef902568115c78 src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj.filters
+33beef6d5c012fd7147e3b8363d7dd20 src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj
+675ac8e67a57431d9967b8c704764e8c src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj.filters
+14821f4664c60445875dc7b9002841fd src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj
+70612657cd42769a76ec0ada5ee010cf src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj.filters
+3822d3ed6177e23db38605116822fdd3 src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj
+33a0ce20fa8f9f30f8d729e9ad630437 src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj.filters
+ae79220512762d4b6bb3148d658d32c0 src/c/statisticsFunctions/variance/testDoubleVariance.c
+80e619e92fb55ea15f347b815fd7d46f src/c/statisticsFunctions/variance/testDoubleVarianceNono.c
+86dcd40850c5480e4c7daeb562aee1ad src/c/statisticsFunctions/variance/testFloatVariance.c
+eca24543c44f6b1d132ccbb56372c2b4 src/c/statisticsFunctions/variance/testFloatVarianceNono.c
+3b2bd41574d994fed325f0e238d3c0a8 src/c/statisticsFunctions/variance/zcolumnvariancea.c
+bfbe6798a8bfecb9b3004e3dc0cb20f5 src/c/statisticsFunctions/variance/zrowvariancea.c
+83da84191d48a4a7bd181461415c4927 src/c/statisticsFunctions/variance/zvariancea.c
+126112a55de45e30040ab09b1645080f src/c/statisticsFunctions/variancef/ccolumnvariancefa.c
+b41fb02b55f23adfac827a1ded6e6bd4 src/c/statisticsFunctions/variancef/crowvariancefa.c
+c7fffb92e2be06a326b6a9cf43e64714 src/c/statisticsFunctions/variancef/cvariancefa.c
+b950e8efb5e8ee75a12e8f611fea7021 src/c/statisticsFunctions/variancef/dcolumnvariancefa.c
+b67ac276d8e5d9005086e56f3d9c63bc src/c/statisticsFunctions/variancef/drowvariancefa.c
+bf9ef8760e300dd715690d9b70e7ef32 src/c/statisticsFunctions/variancef/dvariancefa.c
+fb5528aaed3cd1de930076420e64ebff src/c/statisticsFunctions/variancef/Makefile.am
+25d77111b58b101013495bf6a4342ced src/c/statisticsFunctions/variancef/Makefile.in
+c576e7a76ad11d81e53fee4502767cec src/c/statisticsFunctions/variancef/scolumnvariancefa.c
+cc71a12973e72f032bbc09219dfe7ebe src/c/statisticsFunctions/variancef/srowvariancefa.c
+7b63e0ed4f7b80a8265e74459de498a6 src/c/statisticsFunctions/variancef/svariancefa.c
+791fa1f624bb76189761c1828a4aabcc src/c/statisticsFunctions/variancef/testDoubleVariance.c
+8bb95fa8787af7085f35f8c9b935d1ba src/c/statisticsFunctions/variancef/testDoubleVariancef.c
+731d54494441e023088ed56c7566f15d src/c/statisticsFunctions/variancef/testFloatVariance.c
+320080b3715fc92eef76b411c5fafa21 src/c/statisticsFunctions/variancef/testFloatVariancef.c
+488154381a3ae6efefe6107d8bccce59 src/c/statisticsFunctions/variancef/zcolumnvariancefa.c
+7891e16a7845bb9f2cd561519108733e src/c/statisticsFunctions/variancef/zrowvariancefa.c
+0573a62332022b676fe1cffdec67b362 src/c/statisticsFunctions/variancef/zvariancefa.c
+23e2b95ab1c194f17cd9a2edc2306abd src/c/string/disp/cdispa.c
+4740d6fb634118f4256cbb66a824f40b src/c/string/disp/cdisps.c
+4cfd4f4e33445e10e45596866bbfe98f src/c/string/disp/ddispa.c
+ec4fc33f0686498a4b29dfdac65e1e55 src/c/string/disp/ddisph.c
+236ec80a6c31c8849cbd9b607c2bfb74 src/c/string/disp/ddisps.c
+bc4d6ccac8a77fd7316bfae47a9daed3 src/c/string/disp/Makefile.am
+3f31e0e593e64f95173b81cdd0997ad5 src/c/string/disp/Makefile.in
+b50ea9227d3632cdd2061006627ed5d5 src/c/string/disp/sdispa.c
+f4ff20c324e0b794c6b2a9f4cc0c7144 src/c/string/disp/sdisps.c
+cbddc06f11bb3b8c50d396ea0528f6f0 src/c/string/disp/test_Disp/testDisp.vcxproj
+cd1a2b28430c1e7af0ab4375f12985fb src/c/string/disp/test_Disp/testDisp.vcxproj.filters
+5e08a36531d3623457cbd5ad1956eefb src/c/string/disp/testDisp.c
+4221b5d8ba38c1caf0bd9abadfda9d97 src/c/string/disp/zdispa.c
+e50a09cafb8c3c2407a6b9e0c1e27c94 src/c/string/disp/zdisps.c
+46c13b4572ad5fe4bba08c0639b1ef6f src/c/string/includes/disp.h
+c629a47e1b11a84c162b1875ce5b7ec7 src/c/string/includes/dynlib_string.h
+4b84234fd3f5ec4ded96013cc8824dc4 src/c/string/includes/str.h
+c7e7b5b2e96cffe8fbdd13eefbcad8bf src/c/string/interfaces/int_disp.h
+0c59417ff5d13fcc82ed78023e405cfa src/c/string/Makefile.am
+bfc5c6d36ddc4bb6c2f0bd40501ae5e3 src/c/string/Makefile.in
+e9f711c0c53243ecae52170e1f8f5a62 src/c/string/string/cstringa.c
+50a2b8db158ca55d430714a5ef8c6486 src/c/string/string/cstrings.c
+49332d930838830cfcc98c1af8364333 src/c/string/string/dstringa.c
+96804fc0760bff47465c12ea84186f4c src/c/string/string/dstrings.c
+51ceac678590e3f83e1a419b236e2b13 src/c/string/string/Makefile.am
+c5448757ee6eff6de79c57932b6b2e1a src/c/string/string/Makefile.am.bak
+d3aa733729a736cdb3148f3f23dd906f src/c/string/string/Makefile.in
+5ec873f1edb10b93131987d3ca180b68 src/c/string/string/sstringa.c
+9516ec76cc4a939c94fafe7226fb4f08 src/c/string/string/sstrings.c
+f979ae9e2cfeddaaa70b33a831cd2d94 src/c/string/string/test_String/testString.vcxproj
+79ab0118ff7d9384f35e64dd55af9a0f src/c/string/string/test_String/testString.vcxproj.filters
+9c0becd1f083875b820b781ac787f322 src/c/string/string/testString.c
+26ffc33a132fb5a903c1571b1ed3a883 src/c/string/string/zstringa.c
+5553fc10b7915f67a5a1bfe312a84103 src/c/string/string/zstrings.c
+cd07d5cc3ea822b8e9be82429b5caab1 src/c/string/string.vcxproj
+0b09b592b45c27c54c80b96ca7c64521 src/c/string/string.vcxproj.filters
+3ef55ca6c3b6809cd89aca6497036fbe src/c/type/doubleComplex.c
+e7884e04dbe6f9312ef63e32f81ffce3 src/c/type/doubleComplex.h
+3aa89a01d7d4a20a9e0e09b5ec285f81 src/c/type/dynlib_type.h
+e20b00e18187ce9cd494ddbff57bd87c src/c/type/floatComplex.c
+e0811836d31fbbd9a1a6c55421a2d10a src/c/type/floatComplex.h
+dad7f21fe033075bcdd342d2235daa92 src/c/type/int_imag.h
+36e2f02d8d5762e007c8ea3be22cb8be src/c/type/int_real.h
+3e346a455e600d9ac9b010e964c2ee2f src/c/type/Makefile.am
+246a10612488fe37a70c4e8977115a6f src/c/type/Makefile.in
+cdc82d81433ab4d6f49f95d20af7c57a src/c/type/test_doubleComplex/test_doubleComplex.vcxproj
+18c3b7e878e2e93915060f70a3df5a94 src/c/type/test_doubleComplex/test_doubleComplex.vcxproj.filters
+46734b556afba9db3be95bc5c85e2902 src/c/type/test_floatComplex/test_floatComplex.vcxproj
+9adc8de542af93fd29c47091f78af498 src/c/type/test_floatComplex/test_floatComplex.vcxproj.filters
+44d1b2bcad2d1361ef471690a25e30ba src/c/type/testDoubleComplex.c
+f9be3295e39188360a117cd719aa0976 src/c/type/testFloatComplex.c
+94eacaeffbb429be5b30d9935e711d9b src/c/type/type.vcxproj
+2b39fc315969c904b8a8a01f6d799f81 src/c/type/type.vcxproj.filters
+a9a38bc73fea22f52fdcb8e25d803b94 src/fortran/blas/blas_f/blasplus.def
+580ca821cbb6473836f3007638f7efa9 src/fortran/blas/blas_f/blasplus_DLL.suo
+1ef4cee895c6fbc0e2c60d85772de876 src/fortran/blas/blas_f/blasplus_DLL.vfproj
+7ff7e5b644c851cbea59c99405e312eb src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj
+49f38cbc57ea5d6083f988fd0ca6d5dc src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj.filters
+910cafd20ebe7ff0e5c786a727cdc383 src/fortran/blas/blas_f/blasplusAtlas.def
+d16289f9e78cfc3d588a4f18373fd550 src/fortran/blas/dasum.f
+5d4a3f1cf848eab92418839789c75c7d src/fortran/blas/daxpy.f
+c67f3ae408434a9e3b13f5a55bfe3f66 src/fortran/blas/dcabs1.f
+f44a9b507665d9d2e5cd7eed0ecf1443 src/fortran/blas/dcopy.f
+2bc19431ba590c0d607719bd7a0d0a75 src/fortran/blas/ddot.f
+324b7739a7b5257a86326994e3f8c764 src/fortran/blas/dgbmv.f
+46705eca5188cf41a9621a4f3ad8c344 src/fortran/blas/dgemm.f
+9dfebe2ff3aea985bc3c10fff3f59ab0 src/fortran/blas/dgemv.f
+7ec7e1c3d945b2488369c5b8389bc154 src/fortran/blas/dger.f
+e6915ae5d5adaa14ad7bde99dd3ca419 src/fortran/blas/dnrm2.f
+6120077e58b3ea03ec24ec5c35b40fc8 src/fortran/blas/drot.f
+104741b260e5525fd072f9b7791f7b0f src/fortran/blas/drotg.f
+7842ee8571cea57ff31248e6516acc22 src/fortran/blas/dsbmv.f
+369932a0bdaa92e3ead29d51dc1444a4 src/fortran/blas/dscal.f
+bbb710eeb2503295898f80c419432c98 src/fortran/blas/dspmv.f
+66768be4b1c9aff0b05a47ddfa0d8349 src/fortran/blas/dspr.f
+36ecc2f5f34d548876b6b0c452b84851 src/fortran/blas/dspr2.f
+9892f7805dba770b8e5cdb0169cac667 src/fortran/blas/dswap.f
+e0edc0b3d8e131e964afb72f56aed67b src/fortran/blas/dsymm.f
+870b60dd6ad96962bc6edbba6a87810b src/fortran/blas/dsymv.f
+68b30a4850c567b74decd4904dd59e45 src/fortran/blas/dsyr.f
+411e5c450fc66504185c64ab2ff5359f src/fortran/blas/dsyr2.f
+9f84ff52c13f0fce9f027f8dbbae500d src/fortran/blas/dsyr2k.f
+877e5256736591303544834c1370e70f src/fortran/blas/dsyrk.f
+40bcf5e0223f25ffededc95160db6d70 src/fortran/blas/dtbmv.f
+de2498e4c124971eed6ad8825f7a805c src/fortran/blas/dtbsv.f
+a1a83564f9d93c06a49d1a22bb1acb2b src/fortran/blas/dtpmv.f
+c128ff63103b205d94b298e392f9f5f9 src/fortran/blas/dtpsv.f
+a779b01eaa8edd65d887965d7adee1e6 src/fortran/blas/dtrmm.f
+ce7a7f1a9fecc9af10869498acaea02e src/fortran/blas/dtrmv.f
+9bcfaa0fec06d33a5a22155a5d154e5e src/fortran/blas/dtrsm.f
+3b23fba23da6558e239d43205ca8643a src/fortran/blas/dtrsv.f
+6f6629ea5a95e708a8db3697230ed6b3 src/fortran/blas/dzasum.f
+289d717a4f581657e497cb135a51ecf2 src/fortran/blas/dznrm2.f
+520c31c30ff8327895894870ba34855f src/fortran/blas/idamax.f
+08523909c54f63fd99cf51e944a1b6b6 src/fortran/blas/izamax.f
+c878f18e75f360cc7f618a88b55960df src/fortran/blas/license.txt
+5bc716c42b05f9e0d528ec3713cd08be src/fortran/blas/lsame.f
+66ad5c787c64a7d049e67e80eb5d1700 src/fortran/blas/Makefile.am
+5d03906bfb02614f0e06122c89a64bed src/fortran/blas/Makefile.in
+a3ce539809018de341c277341e5f16ab src/fortran/blas/README
+960b8596d6eda603054e52984b904f53 src/fortran/blas/xerbla.f
+2250f8a1746c7f16efe8d4d1fc12b55a src/fortran/blas/zaxpy.f
+2cd96190a028f6b00874f3eba605840f src/fortran/blas/zcopy.f
+686438e972f0f8de71bf0ce6059c11bc src/fortran/blas/zdotc.f
+16ad895ed978df60c0d45467b6fcb977 src/fortran/blas/zdotu.f
+1eb99488682a07b4fb5e0a4ed796eed4 src/fortran/blas/zdscal.f
+4e23f092d312333e60f8fde62d624bbb src/fortran/blas/zgbmv.f
+2290d0884904cf3ac51056bc68bcb4c0 src/fortran/blas/zgemm.f
+15e3c96eb0c6d6e60184eefcf079c4f9 src/fortran/blas/zgemv.f
+5e750a4eceb40049412979d117a40f48 src/fortran/blas/zgerc.f
+6ee2754a462ff78ac7cd59ed41be6949 src/fortran/blas/zgeru.f
+5a4c546feb1a6dc1844884d7c903629b src/fortran/blas/zhbmv.f
+04231f1f530ef70b480d77106d3570db src/fortran/blas/zhemm.f
+368a3c1107b6a8ebb795558b2091ca62 src/fortran/blas/zhemv.f
+8d61ce48550dc8fa4daed4b21557d8a7 src/fortran/blas/zher.f
+06bc5b2ab41120a5c4e21175fee078dd src/fortran/blas/zher2.f
+d4697a61a44c345148dd3c7ca80c4b06 src/fortran/blas/zher2k.f
+1b916d799815d421fa76b3cb00cbb052 src/fortran/blas/zherk.f
+4f6df7538a98298ae2ac2e9478c524c9 src/fortran/blas/zhpmv.f
+0758492ea49e016cc8aaddb8850b21fe src/fortran/blas/zhpr.f
+a67d7e757dce979782a1ce1dd852335e src/fortran/blas/zhpr2.f
+4417cd1a1b13a95514be3ed37a051803 src/fortran/blas/zrotg.f
+f96a9edcde6f07d6049574b495159b36 src/fortran/blas/zscal.f
+73d4f9992ebf7752a498c492b499658d src/fortran/blas/zswap.f
+08af7aa75e4da5649e3b6e029e375c87 src/fortran/blas/zsymm.f
+363bcd96c6fa76f58e0710a2a9c07f7e src/fortran/blas/zsyr2k.f
+95e45714111217e846219608f105acba src/fortran/blas/zsyrk.f
+4f2d072320f475b4eac07a85bfb3db2f src/fortran/blas/ztbmv.f
+05d42db1dd26005656ae23b1ee241feb src/fortran/blas/ztbsv.f
+69a1ce05cdcc209f801da77f312eb4bf src/fortran/blas/ztpmv.f
+bcabbafdc0f4a327b0b2ec257c2d3f24 src/fortran/blas/ztpsv.f
+5520deb545a4b3894d2d660f5ec3d9a8 src/fortran/blas/ztrmm.f
+0c66a78e3a618217be34a38bc6bcf6a2 src/fortran/blas/ztrmv.f
+5998eaab26344c392abac27b8b63281f src/fortran/blas/ztrsm.f
+1d135b97f498c4167496ef51652dbf79 src/fortran/blas/ztrsv.f
+9d24dbe021747dcbcbd2941150544440 src/fortran/lapack/dbdsqr.f
+8bef304f28d29947c174d2549994b76c src/fortran/lapack/dgebak.f
+dc8690e95185c2b9546e5a6044f645ff src/fortran/lapack/dgebal.f
+5190e2cd4a96c0b75b17f046c88fdde3 src/fortran/lapack/dgebd2.f
+d12ed328b58a6ba8d10765e3388b7e2c src/fortran/lapack/dgebrd.f
+57f55d6b949f9f89a107403cf29fa941 src/fortran/lapack/dgecon.f
+bf67c09a4f5509812fd636b60031a8c0 src/fortran/lapack/dgeequ.f
+be5e08d9fff4f30c347b344840469beb src/fortran/lapack/dgees.f
+7a798534c067ef3fe642978cad086ffe src/fortran/lapack/dgeesx.f
+a0eac2e40bd1d20646e72fbf3924198e src/fortran/lapack/dgeev.f
+78a5666cd7d3e4fb184861732d2677e7 src/fortran/lapack/dgegs.f
+c92620f43a733d18f2dd291e28b3766b src/fortran/lapack/dgehd2.f
+e2b4df3c0488c649a760e6867c0ad980 src/fortran/lapack/dgehrd.f
+2d956bb726757ff40b9e5ffbc2f8d74a src/fortran/lapack/dgelq2.f
+1dd9dbef331c5069f2dfb0884e0ad012 src/fortran/lapack/dgelqf.f
+1f91ffc8498ba60524f69ebd815b072e src/fortran/lapack/dgels.f
+058c8c9ee5b17b6459de42a75e40022a src/fortran/lapack/dgelss.f
+903232af33b6ea37401aba40446b8a3b src/fortran/lapack/dgelsx.f
+19bea8f8381644984c78dc006ffdd222 src/fortran/lapack/dgelsy.f
+411e1e35fd86b07037d7f44bdb08db14 src/fortran/lapack/dgeql2.f
+3a0d1573af86ced005d7d5734a1a9dbb src/fortran/lapack/dgeqlf.f
+9a1102e892bcbed54ce24c833093f99a src/fortran/lapack/dgeqp3.f
+d2504c9a37e3989104d70a1c6268c346 src/fortran/lapack/dgeqpf.f
+d8ad63c155bc89034866241c7e10ec28 src/fortran/lapack/dgeqr2.f
+1323f5690ce24d4914b66c1b3e35752e src/fortran/lapack/dgeqrf.f
+ed01c82b93670cdcd8352bb3a8ded989 src/fortran/lapack/dgerfs.f
+a6b39d1dc5c182cf002ae50d111fd653 src/fortran/lapack/dgerq2.f
+97ec192a7fa5fa332f1f3dab62804e22 src/fortran/lapack/dgerqf.f
+28f66a6196210f5c0b4d0680350efa07 src/fortran/lapack/dgesc2.f
+c0ea3b77cc730ffd2479df75e0892d8b src/fortran/lapack/dgesv.f
+3fa8b4bbf351316e856bbc65e091f9e5 src/fortran/lapack/dgesvd.f
+1d87115dbed54dd28321caabee9e0d29 src/fortran/lapack/dgesvx.f
+8f60a240f37419a805b791bb44e2e4c8 src/fortran/lapack/dgetc2.f
+9da44a1d2ba66ab6d0223010e142bba4 src/fortran/lapack/dgetf2.f
+26bd14f37924737a3e3a8802b0139c84 src/fortran/lapack/dgetrf.f
+c7191d7df8357776eb8374bef7d0b83e src/fortran/lapack/dgetri.f
+e2a2aec05aabfeabd037d8141fdf8011 src/fortran/lapack/dgetrs.f
+cc79b9cab6795536ef4aa3e12f430196 src/fortran/lapack/dggbak.f
+5ce60f94f44ef9052a14d97624b1afa1 src/fortran/lapack/dggbal.f
+4ca650ea4ad1f79fde7923c10ce5beba src/fortran/lapack/dgges.f
+2113f100968d4c942932ea8fedfe6a8b src/fortran/lapack/dggev.f
+d0b70c41f28679ad99bce7400ea2f197 src/fortran/lapack/dgghrd.f
+71d6dbeab2cff0ba334426dab4ec3110 src/fortran/lapack/dhgeqz.f
+a1f9a197e51a948ae3d97e40f94d48e0 src/fortran/lapack/dhseqr.f
+401b597b82fc90a239f2960fd06dc6b5 src/fortran/lapack/disnan.f
+5ea15d2cf43ac0f69a72fd9f0048a61e src/fortran/lapack/dlabad.f
+8cabfc63c5d730392b4db9c200c35f84 src/fortran/lapack/dlabrd.f
+307ae7ad0742b58c87227ad04ae47b86 src/fortran/lapack/dlacn2.f
+e1fe658c0a5092a46cb92c2bfd34d37c src/fortran/lapack/dlacon.f
+0030cd8c5a70da61400d028a5ceed4de src/fortran/lapack/dlacpy.f
+31bc597aa60e97cb413cf026a19ff4f8 src/fortran/lapack/dladiv.f
+3fe63f7ba36d30ab3c2327f4ebb91fcc src/fortran/lapack/dlae2.f
+67f334217790526e05b7dcd00fa7161d src/fortran/lapack/dlaev2.f
+7cabed43d703647dc04014d654abbed6 src/fortran/lapack/dlaexc.f
+7470075f02e7d5fd25cf8c2fb9cb3d8a src/fortran/lapack/dlag2.f
+a69abc2123862264e905a74b7fd3066a src/fortran/lapack/dlagv2.f
+6255a951b2b525540819143ff83cd776 src/fortran/lapack/dlahqr.f
+10dcc183b48f6e940b94d578fb43201b src/fortran/lapack/dlahr2.f
+6f8bc25a70da2ccb7d200b6e0eb40204 src/fortran/lapack/dlahrd.f
+f7214ed1890655d7643bbd4f4695e4dd src/fortran/lapack/dlaic1.f
+2704fdf0fd77e4def93002477e06f966 src/fortran/lapack/dlaisnan.f
+55e761d03290d12f5342aac9dbd0cb72 src/fortran/lapack/dlaln2.f
+c44c1fec94a4fdc57054259718b1277b src/fortran/lapack/dlamch.f
+f9111650d8cf997fc7f3745e18e2a042 src/fortran/lapack/dlange.f
+498eeaa21ba47600ef9b93b66514e943 src/fortran/lapack/dlanhs.f
+1767e5a7a217c26e8417c5b695259228 src/fortran/lapack/dlansp.f
+8daae38e886fd9132c142e9030c45c09 src/fortran/lapack/dlanst.f
+1500160aaff065caa6d8e5ac70245a4e src/fortran/lapack/dlansy.f
+23c51d2a8e21ba39c16220a9d636099c src/fortran/lapack/dlantr.f
+d7083f273dd3df20250c988efde6e8a9 src/fortran/lapack/dlanv2.f
+106d201a937f8b6ff9e1831e80ac242f src/fortran/lapack/dlapmt.f
+392617a381dcfb90e3350b54634eea11 src/fortran/lapack/dlapy2.f
+45e18eb242ac9096af1156ab5a4539b9 src/fortran/lapack/dlapy3.f
+6c932a0e19884335c503dd53ceeacd8a src/fortran/lapack/dlaqge.f
+12d7596f29fa861cffa068ca9ee2291f src/fortran/lapack/dlaqp2.f
+129ccf15d5c7f1ae81ccb00d58782f14 src/fortran/lapack/dlaqps.f
+2425478ec42b55167b2d15d118e9cf4c src/fortran/lapack/dlaqr0.f
+8cc28780202b1c387391dc86c98836e4 src/fortran/lapack/dlaqr1.f
+b036fbd0796536b31f5dc5ddd1b455cc src/fortran/lapack/dlaqr2.f
+19c31299baffb90a1a19d1394d33b758 src/fortran/lapack/dlaqr3.f
+d9fc11ccc86b32743d7b107d2928d130 src/fortran/lapack/dlaqr4.f
+a988bbf58474cefc9fff1fa0c18fe78b src/fortran/lapack/dlaqr5.f
+dbb08c83326e2521f756c9c09b62a104 src/fortran/lapack/dlarf.f
+e774ce5a043faff8e97ff9efbf5fcfbf src/fortran/lapack/dlarfb.f
+15caf587f6eb25bea06157c6829b0d62 src/fortran/lapack/dlarfg.f
+622a270fde8116d8aee2af43d9f5e777 src/fortran/lapack/dlarft.f
+5d8999a4ea2c321dff402682cfa158a5 src/fortran/lapack/dlarfx.f
+325f1efa14b142745710d2b4b4d44bfa src/fortran/lapack/dlartg.f
+a573ddf0e24be22fa179ec740cee5ba5 src/fortran/lapack/dlarz.f
+b75d80ea89a95798be6b36f536581b8e src/fortran/lapack/dlarzb.f
+9a5100968639bd389766039e75655db4 src/fortran/lapack/dlarzt.f
+9ebc4f41c6f2070c176217e3c32b7ba0 src/fortran/lapack/dlas2.f
+b04cf125efd41e98cd97a01220e3e2ea src/fortran/lapack/dlascl.f
+b20473feac6d57c4f107332d9c2ec78d src/fortran/lapack/dlaset.f
+9f7bd99c12b99372e1f74d13436e5169 src/fortran/lapack/dlasq1.f
+8927544781ab14e4983e470262bdd5d7 src/fortran/lapack/dlasq2.f
+229a78cab00304ca2c3ae3aae95339c0 src/fortran/lapack/dlasq3.f
+9a5553878ea64c00e260e0e0fa90bab7 src/fortran/lapack/dlasq4.f
+79595c75fb108ae5c27a54827cd8b6f8 src/fortran/lapack/dlasq5.f
+56f5ee4efc87172012e43b1fd2a3a16f src/fortran/lapack/dlasq6.f
+85481c066bd4cd11914c3ef6c738b41f src/fortran/lapack/dlasr.f
+374fd0c52d291abe504336cfdde876af src/fortran/lapack/dlasrt.f
+55798b80f0d2a302289bf7184ee1e827 src/fortran/lapack/dlassq.f
+40550f4f6310c488ecf18e19ba49bfe8 src/fortran/lapack/dlasv2.f
+6db4b6bb7e45de93d78d8d218cf6120f src/fortran/lapack/dlaswp.f
+b7522724542a62dd9bbe18d17dbe5e21 src/fortran/lapack/dlasy2.f
+de1f4469de24eed9b5f3b14e1196cef3 src/fortran/lapack/dlasyf.f
+2cd3ae997f95ca7fb235769617f8f8d0 src/fortran/lapack/dlatdf.f
+e7eeda76711cc6bfd6c53eb7ddf87d34 src/fortran/lapack/dlatrd.f
+b10713ce582f688b72e53d8802003576 src/fortran/lapack/dlatrs.f
+51d43290a1c012022df217b324dce2f3 src/fortran/lapack/dlatrz.f
+587117a8f04d6b533bbe6cfb8003a0be src/fortran/lapack/dlatzm.f
+a579d9b53c23ebceafd08ce8fc8629f5 src/fortran/lapack/dlazq3.f
+5a8f2aeaf1c8bfcfb42e45fa3c839316 src/fortran/lapack/dlazq4.f
+be38565ed6ee9185a4df19fae0ece726 src/fortran/lapack/dopgtr.f
+5977e85a3417ca64f4630ca9a62faa69 src/fortran/lapack/dorg2l.f
+d77bc4e98e7dfa0d3e31bb495bed77db src/fortran/lapack/dorg2r.f
+8c67aefa6a73b31360ea0a316db0e668 src/fortran/lapack/dorgbr.f
+0558b39a4a6e9e4cc1306b902ce5547e src/fortran/lapack/dorghr.f
+d2493b482c64aa7cb8f31a09504b30d2 src/fortran/lapack/dorgl2.f
+330a12c5458c5a253163066eddcbb35e src/fortran/lapack/dorglq.f
+28eaff703618734948b3844032d7d356 src/fortran/lapack/dorgql.f
+b37f7043717ccd91c9ab5b7308d8013f src/fortran/lapack/dorgqr.f
+6df8e4b64f24fb55c9a7b16015158bc5 src/fortran/lapack/dorgr2.f
+41639fa5a5c849507026796602a988cc src/fortran/lapack/dorgrq.f
+087f1bacea453d009bbcf981ac05c17c src/fortran/lapack/dorgtr.f
+77b3d631d5675faaa44132a589413b6d src/fortran/lapack/dorm2l.f
+d19addf07638e6bc4bca8509a6a48ae0 src/fortran/lapack/dorm2r.f
+cdaffeb9304517f0112ab0284cc547d2 src/fortran/lapack/dormbr.f
+50cbe5074a171f79acb349814dc583e8 src/fortran/lapack/dormhr.f
+8b2ba9b4fb7f18e8f8b5354ff3107c81 src/fortran/lapack/dorml2.f
+3b4ca822f27b948411ad55c3fc2122bf src/fortran/lapack/dormlq.f
+860d8ddbf9bc0697d1ea3099dd9f478f src/fortran/lapack/dormql.f
+11e7ad241fa0fb0608dcc0510963c73b src/fortran/lapack/dormqr.f
+875226fa9045c340a28f1d559f32acc3 src/fortran/lapack/dormr2.f
+2215998f8456e5ac6adcc66d86955595 src/fortran/lapack/dormr3.f
+9500d4e7b8876c2c674ed9b51547e702 src/fortran/lapack/dormrq.f
+18538701430ee36fda685861bdb28760 src/fortran/lapack/dormrz.f
+d15c07d859d13c6435d1e051dcd6c995 src/fortran/lapack/dpocon.f
+77d76f27050652a0f074c325925b24a4 src/fortran/lapack/dpotf2.f
+2b6a494c98c3029a9b6d1b7ba5b45374 src/fortran/lapack/dpotrf.f
+463c204e8ddd9a42a8dd0a7912a1abc6 src/fortran/lapack/dpotrs.f
+d6765063431a854860a1d1d883cd7e8b src/fortran/lapack/dpptrf.f
+7083249fb350f774127ce43b45037231 src/fortran/lapack/drscl.f
+613c4e3fedcf7b0339745819e1ce9412 src/fortran/lapack/dspev.f
+9233f56f654abd4d184c7b3e812f80c7 src/fortran/lapack/dspgst.f
+4aee0ac21d5fcdb0b9124bbdbb556fe2 src/fortran/lapack/dspgv.f
+b430be95dae8f9ab1c9111629dd6433f src/fortran/lapack/dsptrd.f
+2fa6425e10615813b210bbbbb89d3063 src/fortran/lapack/dsptrf.f
+caa29f112a28de397311e3b893469f35 src/fortran/lapack/dsteqr.f
+682843ef756120c8576b30f4fb2f714f src/fortran/lapack/dsterf.f
+696ceca1d8e6d8844f68a75491da209a src/fortran/lapack/dsycon.f
+999fd849090869732d164d159c1eb9ec src/fortran/lapack/dsyev.f
+08137c7e28a87c4fc98997ec4a8d0143 src/fortran/lapack/dsysv.f
+c74c22d9dd7d80ec168c68bbaadb1bcf src/fortran/lapack/dsytd2.f
+0df93a4637246348030cdfb4506a3b4c src/fortran/lapack/dsytf2.f
+731169d6b53795321742f6b07bda0c4c src/fortran/lapack/dsytrd.f
+a3f2c33e705a2196ae36c950c0c4ed37 src/fortran/lapack/dsytrf.f
+213a65d354fa8be63435b7b65d4280ce src/fortran/lapack/dsytri.f
+d0b48a7f9a5e7ff12cc130fc3edecdc9 src/fortran/lapack/dsytrs.f
+26e5190590fb41e87fdfbc2cc13a1b26 src/fortran/lapack/dtgevc.f
+17fb06c5d89f5542319b275c3073cf2a src/fortran/lapack/dtgex2.f
+a65c93ca90be352b1818e2854a66c55a src/fortran/lapack/dtgexc.f
+146a72b8831e38d866571f27384a69a1 src/fortran/lapack/dtgsen.f
+8b526335fc6083b886fa5b5dbed4a9a4 src/fortran/lapack/dtgsy2.f
+5c3a84b041be30671b9cc740efb4da2f src/fortran/lapack/dtgsyl.f
+faa5cd9ddeb85a8fada17dcbfa1ba30e src/fortran/lapack/dtrcon.f
+31fa29016e16dbfdd0c0a6c8ad6fdc2d src/fortran/lapack/dtrevc.f
+fec22e13214794af0c5b0ad76acd8b5f src/fortran/lapack/dtrexc.f
+4356c83fb8e603d2b795da3244191d32 src/fortran/lapack/dtrsen.f
+f7b5731725f7b7d062fb0317b1a7c8fe src/fortran/lapack/dtrsyl.f
+806d4535dfeec07dd9126f5775f737e0 src/fortran/lapack/dtrti2.f
+31ab550efd7954dcb969da756faa2c61 src/fortran/lapack/dtrtri.f
+f6659641db7159edb19bbd06a1bcbee5 src/fortran/lapack/dtrtrs.f
+6fca382d9b54ff83befca6721842f84c src/fortran/lapack/dtzrqf.f
+c51bd0dd48536484d5f2131c1fa8659d src/fortran/lapack/dtzrzf.f
+e944e0bc26eafd7c29df657992cb05f5 src/fortran/lapack/dzsum1.f
+cc50f891751defd76eb4075d583fe04f src/fortran/lapack/ieeeck.f
+d3c88e248491da05d0e0c637bd020822 src/fortran/lapack/ilaenv.f
+4d3902ac47190031d3ad166a3979fa7a src/fortran/lapack/iparmq.f
+38285f9c4939daa64b0185901ffa8313 src/fortran/lapack/izmax1.f
+eb9d4cae45500d174cb9566d6da29044 src/fortran/lapack/lapack_f/lapack.def
+522928e23103179bfc4b4e0520772bd5 src/fortran/lapack/lapack_f/lapack_DLL.suo
+b30070e7b0ea43b17124a5e0c787dbef src/fortran/lapack/lapack_f/lapack_DLL.vfproj
+6ed2adaefe904fc005cf0f242d9025f7 src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj
+25484922b5a5423120b4363365dd7243 src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj.filters
+5bc716c42b05f9e0d528ec3713cd08be src/fortran/lapack/lsame.f
+9e777c4e67729ab09df242ff0b9de283 src/fortran/lapack/Makefile.am
+e0e8fcda214d0656bef6406efb9fb0ff src/fortran/lapack/Makefile.in
+57a2405f1830ddd7b525ee974d4781d5 src/fortran/lapack/README
+42c085c58a6496f308917ad828256e95 src/fortran/lapack/slamch.f
+f0cde536da3c858501ca20baac91e83d src/fortran/lapack/xerbla.f
+28acb9ee2d99cde03b388381376ae7a7 src/fortran/lapack/zbdsqr.f
+ae90cf9e80b5f1d28831ce3fb0a571a9 src/fortran/lapack/zdrot.f
+7d4552b9888409aa7677b5840e62ddaa src/fortran/lapack/zdrscl.f
+566a416fa12a0c34346bdc4d6c374c2d src/fortran/lapack/zgebak.f
+89095ffc4df6356f8b835a3b12e6b067 src/fortran/lapack/zgebal.f
+d3bedefa7be78140982b58e3348e45ed src/fortran/lapack/zgebd2.f
+9d564f4fe5bd676e8bb038d5b857114c src/fortran/lapack/zgebrd.f
+16c82d25120a2064a173d5b03654bbc9 src/fortran/lapack/zgecon.f
+52fe116ffccb0669d0d254addf21c200 src/fortran/lapack/zgees.f
+5f29b06dbf8ffd04a908eabebb946805 src/fortran/lapack/zgeev.f
+ebe35807951fae8c2cf6d3236852b8ef src/fortran/lapack/zgehd2.f
+9c5d804640d81f0392e6591c55cbe988 src/fortran/lapack/zgehrd.f
+1b849150a59b8deefcf7c38ff50eb548 src/fortran/lapack/zgelq2.f
+05074b0803d78f538ad42dad1320183b src/fortran/lapack/zgelqf.f
+0518d3a65d3875220cc72e535f6fccfa src/fortran/lapack/zgelsy.f
+5a2b0dc6ffcd164512d0426b7fe79b47 src/fortran/lapack/zgeqp3.f
+8f6437dccd7cc3f082f61c35db1a5fc5 src/fortran/lapack/zgeqpf.f
+cbf0ad72c0c6f3f41aa2f776788ceba5 src/fortran/lapack/zgeqr2.f
+48cbe6432ebbac82660abd9578597e56 src/fortran/lapack/zgeqrf.f
+3a4da181d8afae455e500d9fc921a04f src/fortran/lapack/zgesc2.f
+bf2350e468fabe45c577057d778f67b0 src/fortran/lapack/zgesvd.f
+99e3e797ca615903e528d76a81f1c8b3 src/fortran/lapack/zgetc2.f
+727f467db07ca2ed193c2cf57b99d0fb src/fortran/lapack/zgetf2.f
+f176c0bc06427ac4b3948596eadf8e4c src/fortran/lapack/zgetrf.f
+34eceb48435a02e0093979468af6c629 src/fortran/lapack/zgetri.f
+1dc0a918b7f6ab4f18c3f3c3c16104a7 src/fortran/lapack/zgetrs.f
+6f87b01cf7c7874b3bbda6c9ee8cf843 src/fortran/lapack/zggbak.f
+413e1f3b356a968b5c845559b77f041b src/fortran/lapack/zggbal.f
+5dac83d16018dd0307dacb5af199eacf src/fortran/lapack/zgges.f
+96ccca6d0dd9a6708528e70ca065dd7a src/fortran/lapack/zggev.f
+e7db294eaf8bf9e0893acfe9d8539088 src/fortran/lapack/zgghrd.f
+09a63480ea8d40a465f02a466bc585fc src/fortran/lapack/zheev.f
+b8103cded181859ae5d45a01b229c890 src/fortran/lapack/zhetd2.f
+ae969c2ee634b925a39a52825684bb04 src/fortran/lapack/zhetrd.f
+4b760307367570429cef26197a72192f src/fortran/lapack/zhgeqz.f
+d39e64652a3517092129692531ca6d3c src/fortran/lapack/zhseqr.f
+01098dc63092550871baeec04cc9e0ef src/fortran/lapack/zlabrd.f
+2ba5ba8a8bee3a2748c72a89b6a99506 src/fortran/lapack/zlacgv.f
+868ec6b8a742dc74491ddf0dd88925b2 src/fortran/lapack/zlacn2.f
+59f4ecb2bf28f1e597a25d408c5f800b src/fortran/lapack/zlacon.f
+99b13e61d9fda75c84089007b8795cf7 src/fortran/lapack/zlacpy.f
+dc7cd608eeff8fc420a7f65ec885aec8 src/fortran/lapack/zladiv.f
+d18dbf315da76f485ddd90ee648c23ce src/fortran/lapack/zlahqr.f
+348251f48fc0e0b42ce4f293f45b79d5 src/fortran/lapack/zlahr2.f
+7890ea426325e3900f9141ce880698b5 src/fortran/lapack/zlahrd.f
+4693d05668bf3a7b0beb7a815bbd25a3 src/fortran/lapack/zlaic1.f
+58bfb18fce2fbc3c7ae1c398a6d03f4a src/fortran/lapack/zlange.f
+75d64653fa73c91e15f257274f76ad4f src/fortran/lapack/zlanhe.f
+d6aa16a31a4875485290cb8f1bfc9ff3 src/fortran/lapack/zlanhs.f
+b6f482d9703b4ea282bc1022d0db32e0 src/fortran/lapack/zlaqp2.f
+84b65c0d73a79eaa641e857373b5eb21 src/fortran/lapack/zlaqps.f
+632c8e6963c4cc9b47df28cba024188c src/fortran/lapack/zlaqr0.f
+1ae45d7b0a6a1316fdad089ad73b701e src/fortran/lapack/zlaqr1.f
+efc8430dd991b9d2dc6316f93cbbe455 src/fortran/lapack/zlaqr2.f
+ef83258725e8c80805a73d7fecd32d4f src/fortran/lapack/zlaqr3.f
+927ec752bf7f8c353776dd11182069c9 src/fortran/lapack/zlaqr4.f
+90fa1de6c04486831a0b97957eec6e92 src/fortran/lapack/zlaqr5.f
+3f77825697db8664fe0ebe19650b9169 src/fortran/lapack/zlarf.f
+6a17240ab0945c80adc26fbd76086a55 src/fortran/lapack/zlarfb.f
+7ca54521d73094ce2265c7a254621552 src/fortran/lapack/zlarfg.f
+91a5bf58516935528871462e3413a580 src/fortran/lapack/zlarft.f
+e436cfc806787f93febfee2a89939c98 src/fortran/lapack/zlarfx.f
+3a8b1892549c2f77cb85172a9f7e8084 src/fortran/lapack/zlartg.f
+35144172da97b6b4400ca9fdb9c891bd src/fortran/lapack/zlarz.f
+46c16708f2b2916bbbb1fe7fd79cb1c3 src/fortran/lapack/zlarzb.f
+1246644f74b3542b4f930cc1a4d4f26c src/fortran/lapack/zlarzt.f
+4b1283a3340d2b9f8603db4a99a86756 src/fortran/lapack/zlascl.f
+797adc35788213ae06bed71027bb26c4 src/fortran/lapack/zlaset.f
+44373427edd2b3151850fce5370454d0 src/fortran/lapack/zlasr.f
+da124435d7f026098e39d8fc92952a74 src/fortran/lapack/zlassq.f
+f5bd7338a7ebfd184bd85356211ca254 src/fortran/lapack/zlaswp.f
+17aebf3dea52f3216ad64bd441de3dc7 src/fortran/lapack/zlatdf.f
+473f682dab3ee787a7f9d876db56e10c src/fortran/lapack/zlatrd.f
+eb4cdecdd9b724513a2171b8579f4f6d src/fortran/lapack/zlatrs.f
+78982c0f77a892ba23bf646da00c790d src/fortran/lapack/zlatrz.f
+ee896970bf38fad9198fef4d6a7feb1f src/fortran/lapack/zpotf2.f
+5cff5053c0efb2ba807b4e1be4647d72 src/fortran/lapack/zpotrf.f
+9547c08fd4bad89f9e849db519444ef7 src/fortran/lapack/zrot.f
+8bef6bd40f3f5332297c5de6a03b9a91 src/fortran/lapack/zsteqr.f
+f8e0cf039adcb4aed05e7d263e546b05 src/fortran/lapack/ztgevc.f
+7994f3e37636afbb14d388112ac64d37 src/fortran/lapack/ztgex2.f
+a7e8b0afdf779eecfb17f71f3e4a7b34 src/fortran/lapack/ztgexc.f
+75b1a3a397eb83dea02c331cde1edf57 src/fortran/lapack/ztgsen.f
+4316515edae8f94dbd5be299caaf3604 src/fortran/lapack/ztgsy2.f
+deec2c38d13692c4c265afa6e19cff77 src/fortran/lapack/ztgsyl.f
+c2b51125445faea08f92d4e939520357 src/fortran/lapack/ztrevc.f
+1d4f61b9b75257deaf14e03e42086fa6 src/fortran/lapack/ztrexc.f
+01164d1a67b282766c26d96303441dbb src/fortran/lapack/ztrsen.f
+e6085d45d7fb44b4a442655f2877a958 src/fortran/lapack/ztrsyl.f
+df9ce75416fcf02562cd21a1c3748896 src/fortran/lapack/ztrti2.f
+389b1addbd2335e4fc7ef0622f70a442 src/fortran/lapack/ztrtri.f
+f36fb1ea0072afd8ac803d32c7b37697 src/fortran/lapack/ztzrzf.f
+c18bd2a2b14609a0947fa5fa3fe489fb src/fortran/lapack/zung2l.f
+e6811c08c5aa3e4a61619642f21e5a24 src/fortran/lapack/zung2r.f
+fd43f8792f97feb926f9b90f4535d25c src/fortran/lapack/zungbr.f
+4689575e28d112a7d0bbf1c3877bc7cf src/fortran/lapack/zunghr.f
+3d13077b2b992fc49e30467316877172 src/fortran/lapack/zungl2.f
+4ecb4b606ffc48593ec4342aec681cc6 src/fortran/lapack/zunglq.f
+7a21938ab1a1014fa228321ac39c6b89 src/fortran/lapack/zungql.f
+737faa318ce8f4514030f244c464b06e src/fortran/lapack/zungqr.f
+e9fe884d52ecbacba13e924417f1e232 src/fortran/lapack/zungtr.f
+225fbf3f8319f76d5f9dbae74fa6541a src/fortran/lapack/zunm2r.f
+92e675079fe41dfd2f79475b0fb59043 src/fortran/lapack/zunmbr.f
+7b434328897783ecc59893bc2217c8c6 src/fortran/lapack/zunml2.f
+443642da69fe144b3a087229eedaa26a src/fortran/lapack/zunmlq.f
+eac790f40a59c9c959dcefa430342ce1 src/fortran/lapack/zunmqr.f
+178db2c0b16be454df4ffee83994304c src/fortran/lapack/zunmr3.f
+9a2889eab9d709b287371fd968ea291e src/fortran/lapack/zunmrz.f
+d5fc4b5384c3bd7d574c12381dda761e src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionAbs.sci
+749909d70f66880423e6266117b5062e src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionConj.sci
+7a58b5981bf6acdfe786c1e82f9db34c src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind.sci
+49589897c8a5c53d7a89ec2dce34a34d src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind2d.sci
+6e1bf6d823c95ee2914df7dc1316f1d8 src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsEmpty.sci
+0f99a9e72f100a9ad782294c7b8bfde2 src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsNan.sci
+116fcb75b3ccf13613273620088fae1f src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionLength.sci
+7a8931330662908c01a9d5a1d9385317 src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSign.sci
+c6c229b9a095ca2318ea760bf5049696 src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSize.sci
+e7614907953fbf4d470a43e23d3f1efc src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionType.sci
+e329fa0a7e1ce2fed27d40c952a96f1c src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACos.sci
+f979799f9d0bb19f8b449f9b09ab3d19 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci
+cf51294390b6b79af3ab729af011e1db src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASin.sci
+737caeafe136a99f68d4657a4f84e99e src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASinh.sci
+6ee7e9eca06c06acfea6a0040a4a0b24 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan.sci
+d48c8ae1605744ae45b5ce04415f4938 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan2.sci
+af22a5608114c5bef30bf4ccd62b1655 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATanh.sci
+88be9a858d48e154bfc95a71e270b255 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCeil_Fix_Floor_Int_Round.sci
+03d6f237de0733a4030befc1fda26b0d src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCos.sci
+fbd8333ad2f5fd55af1b531e36081fcc src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCosh.sci
+9429420be9d4460dd0de7da31561919b src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionExp_Expm.sci
+40f8f99c9ad67b639f95632ffd14e893 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog.sci
+ea33680a29d7f5c0c86199dfa2f90829 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog10.sci
+bf431774471f4d63fc16d7c42d1f6871 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog1p.sci
+f2d26dc0edaf92a877792d52c89177f6 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow0.sci
+4cde0aeed3d967e9b7669a5078d083b9 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci
+181f8c93c7384b5c409c9b5a32f67af2 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSin.sci
+ec57327955669ee78c6aa3984b4ec966 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSinh.sci
+2c4e515fda35ae6585c9724c7965e5e1 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSqrt.sci
+b828485eccf2a1d8621d6664dd4428b7 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTan.sci
+2a04fcd39476b711977edc2ec35ed315 src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTanh.sci
+f77d486297fbfc111aa80e7273e0bc13 src/Scilab2C/SCI2CTests/Mes_tests/implicitList/mainfunctionImplicitList.sci
+83e050e89f8139c67cb39a73da063cea src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpIns.sci
+d53ee2dcbcf084d8d4358a4574494e50 src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogEq.sci
+ae6b3c4c8b973fa3fbab26b679efadb3 src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNe.sci
+95d54acec2d9713bc295c066bf32a268 src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNot.sci
+ceb39362b9e8a76df4491c0074bc9e88 src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionChol.sci
+bd0b73793098b573c6388fa07e20e169 src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionDet.sci
+90e14baed98fe80ea8c26b7ea7cbe19f src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionEye.sci
+908eff4fb6de56b86fc55d33878599b6 src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionInversion.sci
+d58926ccb1fb639ecc045cec8abedce3 src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOnes.sci
+51f717a3ac26a4621d90834ff398be78 src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOpApex_OpDotApex.sci
+aaee5011c223111b75ba0f03ed996100 src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionSpec_Spec2.sci
+9894a0b1df2254814e488726081654de src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionZeros.sci
+8b1b5b1c612448482bdb1a2abc129162 src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpMinus.sci
+d5a0aa35af70cb6592b421cd9ec43593 src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpPlus.sci
+cf6774f46303cf0a5714267cf8ae1a58 src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpSlash_OpDotSlash.sci
+b5dbc13a9ea56916c48a5327837a8ab7 src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpStar_OpDotStar.sci
+26e8750a2a6e77224acd4e3a3852dbea src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionConvol.sci
+8126a7b6c16bcd70eec1adc15e7e6f93 src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFft.sci
+8817a4a05fee376a9abfc58a4909c4fe src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFftShift.sci
+e6b5e7c5f1972b6d26f390bf0e878a0e src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionIfft.sci
+a1246b87940e5011ee4cdc64efce940c src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionLev.sci
+b4bfc120b29472cfa9b803cb3283ec09 src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionMean.sci
+9204741e5c3095c5195fe5655ed7bd9a src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionSum.sci
+0b498105d9f832e7d6000440d9cc461c src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionVariance.sci
+71ffe2693ede3bede8bf48df0dc967c0 src/Scilab2C/SCI2CTests/Mes_tests/type/mainfunctionReal_Imag.sci
+f17ba2c959cc5822884c430bcaf7368c src/Scilab2C/SCI2CTests/test000_TrigonIdentity/SCI2CInputParameters.sce
+1a5a8bbf3756c95ba403445b699be087 src/Scilab2C/SCI2CTests/test000_TrigonIdentity/scilabcode/mainfunction.sci
+f17ba2c959cc5822884c430bcaf7368c src/Scilab2C/SCI2CTests/test001_LinearRegression/SCI2CInputParameters.sce
+739742466419fe3f9b4e759b43f35649 src/Scilab2C/SCI2CTests/test001_LinearRegression/scilabcode/mainfunction.sci
+e512d7ce83fc2664d33e259064465669 src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce
+1a5a8bbf3756c95ba403445b699be087 src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
+ef6c2732c3eced7e02281f6cd81b3199 tests/unit_tests/double/test_abs.sci
+43e622c85934eee86c5cbb6d0b69f0bf tests/unit_tests/double/test_abs.sci.dia.ref
+89c2dc472de5e4bff776865e56d705ab tests/unit_tests/double/test_abs.sci.tst
+d28a4379cb7b2bb5f5a263b9b41b151d tests/unit_tests/double/test_acos.sci
+512f6f2e86b83f767ab22ed76b3022b7 tests/unit_tests/double/test_acos.sci.dia.ref
+2e2db1245838dae38426ae200712b7ea tests/unit_tests/double/test_acos.sci.tst
+4dddf11a4ea9f0d1cf8bc8bf796c295b tests/unit_tests/double/test_acosh.sci
+5adf3be429e9ce8754021f73a561f38b tests/unit_tests/double/test_acosh.sci.dia.ref
+78c7ebbac7e2dc3a9cb44bd74bf56ec5 tests/unit_tests/double/test_acosh.sci.tst
+c7e603c85882f997c77525095a5a24c0 tests/unit_tests/double/test_asin.sci
+dbd4d7e419ebf0a9607e15ccd5ee1d26 tests/unit_tests/double/test_asin.sci.dia.ref
+5ae139b31e5bafff50cfc65d62173cea tests/unit_tests/double/test_asin.sci.tst
+aa88576beafe3133403b8ff83d7ebb4b tests/unit_tests/double/test_asinh.sci
+f195cc95f09be69639eaa65f7072f5ab tests/unit_tests/double/test_asinh.sci.dia.ref
+442c24162c84a3b8f6b33b385245d7da tests/unit_tests/double/test_asinh.sci.tst
+2b3ec5d1f255cfe04093de03bdae1d69 tests/unit_tests/double/test_atan.sci
+f1f641a468fa85b808a759830f790961 tests/unit_tests/double/test_atan.sci.dia.ref
+553f0cd2662c6e6ff0520b11846e010b tests/unit_tests/double/test_atan.sci.tst
+dd1cf5593ad21c01aad0a175acf9185b tests/unit_tests/double/test_atanh.sci
+4cdf897c24dee86bd3b22836614c4cdf tests/unit_tests/double/test_atanh.sci.dia.ref
+2fee7f12aacb6e3e88f8f6948be2ba8f tests/unit_tests/double/test_atanh.sci.tst
+8a6997f7aa519f5c59f3e30df63a72b9 tests/unit_tests/double/test_ceil.sci
+849011d7823b02ebdbbdf429363d28c9 tests/unit_tests/double/test_ceil.sci.dia.ref
+9c50c240a2e0f3c6dbd64e061ca3d1e0 tests/unit_tests/double/test_ceil.sci.tst
+f7016fe29d75766631988f62b80d6767 tests/unit_tests/double/test_chol.sci
+88e42f6f5e8ad85e2d0ee3bdb191adca tests/unit_tests/double/test_chol.sci.dia.ref
+0c2b9a138f40f26aba99f7f5bbe57988 tests/unit_tests/double/test_chol.sci.tst
+e5d92bfd23a45dee2b5c6ad5b5933559 tests/unit_tests/double/test_conj.sci
+fcd5906c33e0ea4f2c7caaaedd935e87 tests/unit_tests/double/test_conj.sci.dia.ref
+9d09d53efdb0fb4c756e98e26012ae69 tests/unit_tests/double/test_conj.sci.tst
+11ff5c75407177afe06f1e3c3de8092e tests/unit_tests/double/test_Convol.sci
+6032eb3d513cc832675cfb7c9e9f1395 tests/unit_tests/double/test_Convol.sci.dia.ref
+9d7d5b4121333d823de7ee630d40f638 tests/unit_tests/double/test_Convol.sci.tst
+4a694b8bae082856793a121333bb9c96 tests/unit_tests/double/test_cos.sci
+f812373c56de35487701be06826d1a1d tests/unit_tests/double/test_cos.sci.dia.ref
+dceb890a5119126af930392f9510fb5c tests/unit_tests/double/test_cos.sci.tst
+558be7c82a41df1694a6d39f516d3eb7 tests/unit_tests/double/test_cosh.sci
+7af8db52c5f9c17052c0f6a41ad3f2dd tests/unit_tests/double/test_cosh.sci.dia.ref
+7f7e9f0fabbbca918d08934c0fd3b35e tests/unit_tests/double/test_cosh.sci.tst
+dc12548877b6c3ff5957d17a83c9c0c9 tests/unit_tests/double/test_Det.sci
+88981444c8df0fb48ce7c770be7a7cfc tests/unit_tests/double/test_Det.sci.dia.ref
+5f4a943617434530805d483e573d2640 tests/unit_tests/double/test_Det.sci.tst
+852a3bb31cfce74dc84aed96448f006a tests/unit_tests/double/test_Disp.sci
+add06ffa14fc76e1dd3dd88636628883 tests/unit_tests/double/test_Disp.sci.dia.ref
+ddb0b3752cd41564f77f7b20dc291fac tests/unit_tests/double/test_Disp.sci.tst
+34e2337827519109a3d0faf613eacddb tests/unit_tests/double/test_exp.sci
+1ac2f7c8458192da47d401fa3dd68c1b tests/unit_tests/double/test_exp.sci.dia.ref
+4fa94b76150aadfae4c1407f677d06ef tests/unit_tests/double/test_exp.sci.tst
+dcd7c4357f57ca9b12572a570a24110b tests/unit_tests/double/test_Expm.sci
+de358cf893ae8c7fb47197846a52e9a8 tests/unit_tests/double/test_Expm.sci.dia.ref
+c1de9277d43b2ade50c040cbe8555f28 tests/unit_tests/double/test_Expm.sci.tst
+a346ceb8907aec05d19bddb0941b167f tests/unit_tests/double/test_eye.sci
+ed270b3f078cf4b574f979a8b95f6900 tests/unit_tests/double/test_eye.sci.dia.ref
+16d68685ab5aee55a8ea5d9d41a630bd tests/unit_tests/double/test_eye.sci.tst
+bc8e1f584fc8f6e1cafd9e67afb8b392 tests/unit_tests/double/test_Fft.sci
+92f180723dc2a793173cb96b1ab31dd4 tests/unit_tests/double/test_Fft.sci.dia.ref
+ec22e6c3a29640cbc8ed2dac2ee8dfe3 tests/unit_tests/double/test_Fft.sci.tst
+a96ac1c1a8476406567bbe70a4565d81 tests/unit_tests/double/test_FFTShift.sci
+bffa9718fd3609d5e0c2dd7de024144f tests/unit_tests/double/test_FFTShift.sci.dia.ref
+53caa76a068783d37bfcc26072b48f14 tests/unit_tests/double/test_FFTShift.sci.tst
+128558f1ba3bd69b9da1fb2ad3e669f6 tests/unit_tests/double/test_Find.sci
+38d2f1f1ded9dccd9485cc3ec07cebb6 tests/unit_tests/double/test_Find.sci.dia.ref
+5433e88b9e6f5b72b9c9f2cbbd6c20fd tests/unit_tests/double/test_Find.sci.tst
+20c7ad02ed099c5f27359b3b6374c719 tests/unit_tests/double/test_fix.sci
+faeb4e736d2e0b38cd431712301fe904 tests/unit_tests/double/test_fix.sci.dia.ref
+797fff94ab7722c5f5d5b2fd3362581a tests/unit_tests/double/test_fix.sci.tst
+4fcd0ba6843cb67a989a758728fbf6de tests/unit_tests/double/test_floor.sci
+a725b0e50f184e3dde49acf171ba5576 tests/unit_tests/double/test_floor.sci.dia.ref
+96b964b47aee8413bb973cae646ec786 tests/unit_tests/double/test_floor.sci.tst
+fde6f720a078aa36cf05682b8dbb3cf6 tests/unit_tests/double/test_IFFT.sci
+00bf317750fd675d3418b5f5057dacbf tests/unit_tests/double/test_IFFT.sci.dia.ref
+88c02e09d45fcfab2a4e1c647c10d956 tests/unit_tests/double/test_IFFT.sci.tst
+d9fb29a23c7bf93447b6965b1a6faec3 tests/unit_tests/double/test_imag.sci
+7e7140598e620f368ef6d631f1b79e61 tests/unit_tests/double/test_imag.sci.dia.ref
+7c198594185661952c2e344127b708e8 tests/unit_tests/double/test_imag.sci.tst
+eeefda8527b7829f750c4eba8f9c89d5 tests/unit_tests/double/test_int.sci
+e028300c2e273a5111804f9c199b3c90 tests/unit_tests/double/test_int.sci.dia.ref
+be37e244aacbf8620384bca5ff68a387 tests/unit_tests/double/test_int.sci.tst
+71b5da91ec3393eb09bcf253897b6ab7 tests/unit_tests/double/test_inv.sci
+1effb1f1d3b5b472ec7b3bc05617291b tests/unit_tests/double/test_inv.sci.dia.ref
+ca91b12b03ba4a9a045d672ae3caf5d5 tests/unit_tests/double/test_inv.sci.tst
+1ba114cbd735e74a56a67afda8d25e48 tests/unit_tests/double/test_isnan.sci
+ae45d9ab44fd1983257b7fb901f3e8a8 tests/unit_tests/double/test_isnan.sci.dia.ref
+f3409f591a6dc5f7c211b68a044f0bc0 tests/unit_tests/double/test_isnan.sci.tst
+71a1eb6ec5da04f89341696457f4b06b tests/unit_tests/double/test_Length.sci
+d436e3c7f7eeff7cf50714a22834b8c4 tests/unit_tests/double/test_Length.sci.dia.ref
+5450a01b77ea165614d4c467356f8534 tests/unit_tests/double/test_Length.sci.tst
+72a56fd4b0e28490adf62aa007be7e37 tests/unit_tests/double/test_Lev.sci
+584450d8cea605c266a962f6495ed7f7 tests/unit_tests/double/test_Lev.sci.tst
+0bd1dd0ccdf915a91a15054bb2058e4a tests/unit_tests/double/test_log.sci
+1a1d4826b0fcdfadcf4de5ea7f584070 tests/unit_tests/double/test_log.sci.dia.ref
+5b90358202b1cae30c63ae9ce24b13ff tests/unit_tests/double/test_log.sci.tst
+11efad45f1838d1734a0d255243a0a4c tests/unit_tests/double/test_log10.sci
+e2fb0273d22a1496aa9fd7b87900e88d tests/unit_tests/double/test_log10.sci.dia.ref
+3984543b7ad4a4f0b7e33751c529ab9e tests/unit_tests/double/test_log10.sci.tst
+ae25b3473c45d96097d769e3ec909aa0 tests/unit_tests/double/test_log1p.sci
+098e67894e18844798980b1156aa101d tests/unit_tests/double/test_log1p.sci.dia.ref
+dc17955d5ce0375e3bfcbfab224e675e tests/unit_tests/double/test_log1p.sci.tst
+a6f96fc96c269f7554a709ad425619bd tests/unit_tests/double/test_max.sci
+3a065cdb3803d112e81fb6a163ff1672 tests/unit_tests/double/test_max.sci.dia.ref
+d511324b8998508a26a4d31c137c87dd tests/unit_tests/double/test_max.sci.tst
+6b2ba649bb3144a965f119ecea2918ad tests/unit_tests/double/test_mean.sci
+84e5a4a16a2622a130cc0053debfcee3 tests/unit_tests/double/test_mean.sci.dia.ref
+62fed41b9271af3a7417722947ba9e40 tests/unit_tests/double/test_mean.sci.tst
+1def1e6892a502081bd00ab8748d1845 tests/unit_tests/double/test_Meanf.sci
+164d2ab599b2231131626b8e7ad89b94 tests/unit_tests/double/test_Meanf.sci.dia.ref
+96885fda7468cde3d0d4f34b5ad66db5 tests/unit_tests/double/test_Meanf.sci.tst
+435347e25eec9f558e248cca7a5ccc2b tests/unit_tests/double/test_min.sci
+4919cc92e273a07346b71875f4474b39 tests/unit_tests/double/test_min.sci.dia.ref
+13ce68e32e82732b3c98abffd2605ef8 tests/unit_tests/double/test_min.sci.tst
+fb4dd6b60fdfdd6980b48fe1096bc2b2 tests/unit_tests/double/test_ones.sci
+14d0a5a480c9b21fdf338a461b440ab9 tests/unit_tests/double/test_ones.sci.dia.ref
+35a9e17861ecbed6c847bee9a1fecb5b tests/unit_tests/double/test_ones.sci.tst
+e1c3e55dd0e8d613169a5c2a69934c98 tests/unit_tests/double/test_OpApex.sci
+7eba3b4152f9d948fe4c9b2a7fde80a3 tests/unit_tests/double/test_OpApex.sci.dia.ref
+15251e3eae953cf97a59c7b3e42582cf tests/unit_tests/double/test_OpApex.sci.tst
+36a789293f65ba6fa9d3a8b4eeda1003 tests/unit_tests/double/test_OpCc.sci
+7276bea259a2d29d115d38f7953114a0 tests/unit_tests/double/test_OpCc.sci.dia.ref
+4b9fc8b8445fe0bce6353b2db3624431 tests/unit_tests/double/test_OpCc.sci.tst
+de02f0625b2af6dd9bd2d4b326ff20d3 tests/unit_tests/double/test_OpColon.sci
+01fd2fd15790c7cc73a82abc51a0e933 tests/unit_tests/double/test_OpColon.sci.dia.ref
+7434a625bd8b1ad95b9cb91f37151546 tests/unit_tests/double/test_OpColon.sci.tst
+f5c77738b294e66739d27648baabe634 tests/unit_tests/double/test_OpDotApex.sci
+b64c95ddd7b2c2ae90f784962af362d0 tests/unit_tests/double/test_OpDotApex.sci.dia.ref
+6a8ec0f23139c5bea0979c1d8681be70 tests/unit_tests/double/test_OpDotApex.sci.tst
+5823573dba56ffd93cf648f74bf4770c tests/unit_tests/double/test_OpDotBackSlash.sci
+34b598020cd93050afebc1e5fb73aeb8 tests/unit_tests/double/test_OpDotBackSlash.sci.dia.ref
+4c5154168b08c725e85b3ffdec14153f tests/unit_tests/double/test_OpDotBackSlash.sci.tst
+b4dd99ef5498fd67bfda17644eb75128 tests/unit_tests/double/test_OpDotHat.sci
+dd8f69c7ea3040c5b14943c6f606139a tests/unit_tests/double/test_OpDotHat.sci.dia.ref
+ca3a408abb212d290709f4fdda24a188 tests/unit_tests/double/test_OpDotHat.sci.tst
+4f63cb4220ba0d3641ea2bb1ef4d4734 tests/unit_tests/double/test_OpDotSlash.sci
+39eb8a767b382f3c54e329f9c0b36201 tests/unit_tests/double/test_OpDotSlash.sci.dia.ref
+395d273593eb002e480818e8acb44cc8 tests/unit_tests/double/test_OpDotSlash.sci.tst
+683e13d94891dc8941ea0218de32160a tests/unit_tests/double/test_OpDotStar.sci
+e27c3ae125896ca8a0c681d8cb112386 tests/unit_tests/double/test_OpDotStar.sci.dia.ref
+7fb38dde92231df92b800c3b785a728e tests/unit_tests/double/test_OpDotStar.sci.tst
+184f400d8a3bff8cc073228e13d98cad tests/unit_tests/double/test_OpEqual.sci
+7cc753aa86be3e200a705a5b4be836d9 tests/unit_tests/double/test_OpEqual.sci.dia.ref
+798cdf8fc8726d6813751ee8e98aedce tests/unit_tests/double/test_OpEqual.sci.tst
+fb2e01d710a4e94dfc43c7a087e6b6dc tests/unit_tests/double/test_OpExt.sci
+9ce1b708efb0c655d7bc42caf8ca08bf tests/unit_tests/double/test_OpExt.sci.dia.ref
+f7faad8e5c0e00c643e136a91387338f tests/unit_tests/double/test_OpExt.sci.tst
+487a1d49535d6e724ebf8d85eefb8eab tests/unit_tests/double/test_OpHat.sci
+36c38886a41d0fbc8751cf3696dc5e8f tests/unit_tests/double/test_OpHat.sci.dia.ref
+f22401a95085ba085fe54efe8745c868 tests/unit_tests/double/test_OpHat.sci.tst
+2ad2e367745f70f89b79092fa6fc1bbe tests/unit_tests/double/test_OpIns.sci
+6a23b26bbbb8f82f90a0b2eea347ca75 tests/unit_tests/double/test_OpIns.sci.dia.ref
+36b308323d4cf806370bbefcfac01875 tests/unit_tests/double/test_OpIns.sci.tst
+47bc278561c1ca34e5d8e319962f4b7d tests/unit_tests/double/test_OpLogAnd.sci
+8ab3624047d7848fe55e3afecbd27053 tests/unit_tests/double/test_OpLogAnd.sci.dia.ref
+6d96f95bd21ad56ebd4bd0b53d82ce66 tests/unit_tests/double/test_OpLogAnd.sci.tst
+cabad8ebf9d104b4827150bab74b2d72 tests/unit_tests/double/test_OpLogEq.sci
+94520482ceccb49d89885728d4ccbcbb tests/unit_tests/double/test_OpLogEq.sci.dia.ref
+162495d0c7cfdea154bc496d3f85c971 tests/unit_tests/double/test_OpLogEq.sci.tst
+6241148d73097d1f15a2d8ef873dfd78 tests/unit_tests/double/test_OpLogGe.sci
+a06ab6fe99c97d587d7dc52b49441f6c tests/unit_tests/double/test_OpLogGe.sci.dia.ref
+a71c6bf267f0921eae4b54ef37dd1696 tests/unit_tests/double/test_OpLogGe.sci.tst
+b2cc1635c29a259232c50df38b19507b tests/unit_tests/double/test_OpLogGt.sci
+cec6bafbb8e51e09f3f48f743630678f tests/unit_tests/double/test_OpLogGt.sci.dia.ref
+95f2eaa7a0799a825384ea6d41ed0fbc tests/unit_tests/double/test_OpLogGt.sci.tst
+4f19fa115bbcf27b805209386e489e39 tests/unit_tests/double/test_OpLogLe.sci
+eb2e524cb7c0f7d7af10966a218dde88 tests/unit_tests/double/test_OpLogLe.sci.dia.ref
+7dddf7d905d7b9dcd489541b42b8ff77 tests/unit_tests/double/test_OpLogLe.sci.tst
+3a8ecd091ad3806efabfbcbb956d664d tests/unit_tests/double/test_OpLogLt.sci
+3c21c081969e21b7f0c39d74cd6cde72 tests/unit_tests/double/test_OpLogLt.sci.dia.ref
+aaa433b3a268b75fb3e63b463e232b6b tests/unit_tests/double/test_OpLogLt.sci.tst
+ea59a31380771fb3618ffd67bffee2da tests/unit_tests/double/test_OpLogNe.sci
+55fdc806c086f62597555aa4cca7ac62 tests/unit_tests/double/test_OpLogNe.sci.dia.ref
+fb2ae29759614a30f5899be6f58a825a tests/unit_tests/double/test_OpLogNe.sci.tst
+0016dc328ef47a9ec6cd7252514c7d96 tests/unit_tests/double/test_OpLogNot.sci
+83d138ac0f8f70244462abfdaa34d21d tests/unit_tests/double/test_OpLogNot.sci.dia.ref
+b8cc06eed8d429a2de7244b35c9111c6 tests/unit_tests/double/test_OpLogNot.sci.tst
+4f0c81ffa1b275bcaafd63e376886224 tests/unit_tests/double/test_OpLogOr.sci
+b81e57f3b1ca40c272fbdf96dff1dcc5 tests/unit_tests/double/test_OpLogOr.sci.dia.ref
+b21bea432afcb56ac184694132e27e7a tests/unit_tests/double/test_OpLogOr.sci.tst
+8f6aec3a839290fbc1850b30488bc76f tests/unit_tests/double/test_OpMinus.sci
+276adea60c398563fb6958d49168bde1 tests/unit_tests/double/test_OpMinus.sci.dia.ref
+7d1ec92972e7cfaf0919d894137b0666 tests/unit_tests/double/test_OpMinus.sci.tst
+6b319ec58c05af63b5eeb9169f920678 tests/unit_tests/double/test_OpPlus.sci
+b1a616a7e0be138b850d01e06fbd3791 tests/unit_tests/double/test_OpPlus.sci.dia.ref
+f83dd8e66214d0d15a14f961de5972e3 tests/unit_tests/double/test_OpPlus.sci.tst
+254a7aa0a35be6d8b772773a482d7ccd tests/unit_tests/double/test_OpRc.sci
+075afe7d43ba0fc67df415b01c84162d tests/unit_tests/double/test_OpRc.sci.dia.ref
+1d6ee75fb06ca606af59f9a0037a34be tests/unit_tests/double/test_OpRc.sci.tst
+50bb03ab741a7c90325aaef997b6b201 tests/unit_tests/double/test_OpSlash.sci
+bcabae00336052db9c0cd0266ee8d949 tests/unit_tests/double/test_OpSlash.sci.dia.ref
+8170d164032ecee3845fadaeb65cc55e tests/unit_tests/double/test_OpSlash.sci.tst
+cec62159afa93b4d9659f1883b470820 tests/unit_tests/double/test_OpStar.sci
+7ff9505f32b8c105e141273437285c03 tests/unit_tests/double/test_OpStar.sci.dia.ref
+c01c31e91f1677348d01aa594296cd08 tests/unit_tests/double/test_OpStar.sci.tst
+f589410b40bcc929bc785b544604bf77 tests/unit_tests/double/test_prod.sci
+f698aeda242364b5079db2ec88843f32 tests/unit_tests/double/test_prod.sci.dia.ref
+8455442297f72f9d459f3f487a7f74ff tests/unit_tests/double/test_prod.sci.tst
+10b2f9962bc2645aecc4b4f71c460853 tests/unit_tests/double/test_rand.sci
+bf41d1032a08e26adeee206a10337868 tests/unit_tests/double/test_rand.sci.dia.ref
+3552e59d43748086cd8f3d482479493c tests/unit_tests/double/test_rand.sci.tst
+f4071455347402c4cab2c643608d0155 tests/unit_tests/double/test_real.sci
+2337c341c43fa70213f47e0316618b4b tests/unit_tests/double/test_real.sci.dia.ref
+7c5b1d0fae8a0c0d904fb35abfce0a58 tests/unit_tests/double/test_real.sci.tst
+b7c13b29a8e1a75b8042af4baff42df9 tests/unit_tests/double/test_round.sci
+5932b02a87c7c677d56a6964142d1ed4 tests/unit_tests/double/test_round.sci.dia.ref
+42162efb27d00987f7cc1dc199075e5c tests/unit_tests/double/test_round.sci.tst
+a7a402f8a8ef1d8cb29490b5f2c16f1c tests/unit_tests/double/test_sign.sci
+670384d13b6dff04ae7d68e5c23d8bb2 tests/unit_tests/double/test_sign.sci.dia.ref
+825fd79967509c05662b6585ef3e84b6 tests/unit_tests/double/test_sign.sci.tst
+404ac106e19e98a2c638850869fab90f tests/unit_tests/double/test_sin.sci
+b99803ab49fadd343cde9f82cb1ce283 tests/unit_tests/double/test_sin.sci.dia.ref
+09b3cb3139d55886f0776209fdf2a6c0 tests/unit_tests/double/test_sin.sci.tst
+3b9233aa0806ba0fa3c1cf17da686747 tests/unit_tests/double/test_sinh.sci
+6156440ceaf167d01a98ad0de1cfe3f3 tests/unit_tests/double/test_sinh.sci.dia.ref
+ebcd807ee0e654ca61768749bcf7b71f tests/unit_tests/double/test_sinh.sci.tst
+9b6d6f0c9a6c6205bf318a1f3b853a27 tests/unit_tests/double/test_Size.sci
+6aedb81836a73a50ad72e56c02fe2f51 tests/unit_tests/double/test_Size.sci.dia.ref
+e91102d9f5bb50ffec6aaeb1c4b620e4 tests/unit_tests/double/test_Size.sci.tst
+288885072380fc4de025ee6b62f1dacc tests/unit_tests/double/test_Spec.sci
+ef4080203ac676fdba728d0ce962555b tests/unit_tests/double/test_Spec.sci.tst
+dd07109ee150dbea48bc23cfb70f53a9 tests/unit_tests/double/test_sqrt.sci
+c9a47f9a09317a6ef5eb46639acccc9b tests/unit_tests/double/test_sqrt.sci.dia.ref
+1276d57179b441551d40949ec08c5abd tests/unit_tests/double/test_sqrt.sci.tst
+70551c1a439e35f144019c0f7da9743f tests/unit_tests/double/test_st_deviation.sci
+5e31903476568a32e0ebf4ed837fee20 tests/unit_tests/double/test_st_deviation.sci.dia.ref
+7bdf2d33a277a03a90c6f0ab2420e27b tests/unit_tests/double/test_st_deviation.sci.tst
+7727dea647bd9d9c312ced595cd8baa5 tests/unit_tests/double/test_Stdevf.sci
+9ec0f68c6b905205fa186c236df7bc70 tests/unit_tests/double/test_Stdevf.sci.dia.ref
+2fb6a9b89df499734e59eb34e88db0a0 tests/unit_tests/double/test_Stdevf.sci.tst
+72719dba8715be6fb23aabaf6543e7a6 tests/unit_tests/double/test_sum.sci
+e238d19d93f9576a8c8b6bc3ecddfe58 tests/unit_tests/double/test_sum.sci.dia.ref
+8aaa8490effa28bfc9c91efb6298d5d2 tests/unit_tests/double/test_sum.sci.tst
+bc9cef6cedd9e9a6585308d4c05405fa tests/unit_tests/double/test_tanh.sci
+8b539d0d792709a68344d00600238e0e tests/unit_tests/double/test_tanh.sci.dia.ref
+eaa3d865e7117e0e940cf551623b5614 tests/unit_tests/double/test_tanh.sci.tst
+9c4b28a72b3f7faab72b100841cef35f tests/unit_tests/double/test_Trace.sci
+b39716b55cf60717e269e6c3c2fd788e tests/unit_tests/double/test_Trace.sci.dia.ref
+0474b0f9d4fb980f7511b2a85d361280 tests/unit_tests/double/test_Trace.sci.tst
+700a5f10fb9f5e62644506ac6f127461 tests/unit_tests/double/test_Type.sci
+ea4dec1012e6a73e10cb3ee5fc18e47f tests/unit_tests/double/test_Type.sci.dia.ref
+0b40420b4d21143a0136f82298c66227 tests/unit_tests/double/test_Type.sci.tst
+ae97931a6d22403b3baf428b30b84e12 tests/unit_tests/double/test_variance.sci
+47fb7c1d0518bbcd4ce3fe4e6ced5003 tests/unit_tests/double/test_variance.sci.dia.ref
+ff540180d1247aac48e2ba7f72c3f102 tests/unit_tests/double/test_variance.sci.tst
+0356ade9de2dd2b04e53fdbe44eeaa69 tests/unit_tests/double/test_zeros.sci
+1f0d0f23e3f64f2f128564f595bbb2e9 tests/unit_tests/double/test_zeros.sci.dia.ref
+365b562117a498f321a8c70cb29daf93 tests/unit_tests/double/test_zeros.sci.tst
+7ae2ea45e49895c9468734c90a9fce79 tests/unit_tests/float/test_float_abs.sci
+aaa79ce5cdaf41c723bc4b84aed1c44e tests/unit_tests/float/test_float_acos.sci
+be3b83ffa828d85f2ddca4357e702057 tests/unit_tests/float/test_float_acosh.sci
+77219fc4bf0b72902506b1f53dbf3753 tests/unit_tests/float/test_float_asin.sci
+14955f6315020a457fa258a52e16f1ce tests/unit_tests/float/test_float_asinh.sci
+4e256ded094402ecf6e40d8b6a834027 tests/unit_tests/float/test_float_atan.sci
+1e1174c40b36f96c62c7039555f6b340 tests/unit_tests/float/test_float_atanh.sci
+c9450f1edc47a62654782a8a06ad173d tests/unit_tests/float/test_float_ceil.sci
+9d75ce10437e643a2c97606360a0e944 tests/unit_tests/float/test_float_chol.sci
+afef42e1dde47a29e370a61d8c5e853f tests/unit_tests/float/test_float_conj.sci
+8cfe5bfcc98fd5e0f6849079a75f0fee tests/unit_tests/float/test_float_Convol.sci
+99a0a56c7136705aee7aa9fd0a825609 tests/unit_tests/float/test_float_cos.sci
+b5f17a4b2e17ea9c830aee100f1086ff tests/unit_tests/float/test_float_cosh.sci
+8f36ae6b115d062d1243e93f82b86f8a tests/unit_tests/float/test_float_Det.sci
+7dbf2abc8316efa673e1f9082902c21b tests/unit_tests/float/test_float_Disp.sci
+221adf4538e231d0788e81597ab5c602 tests/unit_tests/float/test_float_exp.sci
+36f545abc2fcd1f4d8f1f432a7c22fe8 tests/unit_tests/float/test_float_Expm.sci
+a82c2c03c123452e2393c611806fcb82 tests/unit_tests/float/test_float_eye.sci
+41f73378047dbb447524b3c4d3389ab3 tests/unit_tests/float/test_float_Fft.sci
+47c7db8e1cc1e0a8994323caef3e89a2 tests/unit_tests/float/test_float_FFTShift.sci
+ccc7ab262afd8f76f10e3b119be55df6 tests/unit_tests/float/test_float_Find.sci
+f6de2496b81447cd68eb6106f9b5680c tests/unit_tests/float/test_float_fix.sci
+34e33c6b132c830b60aa40b4b58e4f9f tests/unit_tests/float/test_float_floor.sci
+7e68020ad30f1c56f0dd83710b3814be tests/unit_tests/float/test_float_IFFT.sci
+cfd4b3cdfcddb958e212fb96004ea6da tests/unit_tests/float/test_float_imag.sci
+4929b285f22bbd32994b2ef8eea60a90 tests/unit_tests/float/test_float_int.sci
+d6f13e5ec5235bd7d4abc6b651ce60f1 tests/unit_tests/float/test_float_inv.sci
+dce76d6ded694adcea448da8cc7d8864 tests/unit_tests/float/test_float_isnan.sci
+19f9e32dd4903c2d54c7278716616cba tests/unit_tests/float/test_float_Length.sci
+13657f0acc06535299b11bc877a3df1f tests/unit_tests/float/test_float_Lev.sci
+492c306558efce78c447870690a1949c tests/unit_tests/float/test_float_log.sci
+f465b5a8db3a745b0ac92dcf316580e4 tests/unit_tests/float/test_float_log10.sci
+3e8a2ae410924fbcd196c5bd510dafae tests/unit_tests/float/test_float_log1p.sci
+cbca882194ff053b231fb2c059a1fa2b tests/unit_tests/float/test_float_max.sci
+a78e9a5cece7fbcdd84030802a874598 tests/unit_tests/float/test_float_mean.sci
+e06f20dc3478516a7fede51157fd7ac8 tests/unit_tests/float/test_float_Meanf.sci
+d290019826cce1d838dff666bddca621 tests/unit_tests/float/test_float_min.sci
+3f5773f949a50595a520861109220fb8 tests/unit_tests/float/test_float_ones.sci
+dfb38c3ae2bd868153d598f10de818ea tests/unit_tests/float/test_float_OpApex.sci
+d5a343ae3e9131c0986af7a7c3a74ae1 tests/unit_tests/float/test_float_OpCc.sci
+f1ebde99b8d567b43963ddb099f7b392 tests/unit_tests/float/test_float_OpColon.sci
+bed6b11db636e73573dcf132e70cef72 tests/unit_tests/float/test_float_OpDotApex.sci
+6c9d7cdd63bbb6875b81ac3a10ce309e tests/unit_tests/float/test_float_OpDotBackSlas.sci
+61a38555557c9f125c5dd2bb452f73c6 tests/unit_tests/float/test_float_OpDotHat.sci
+d5834fad8cda1d4bb9e4a43e9b73583e tests/unit_tests/float/test_float_OpDotSlash.sci
+fe014254d664f8da47458268233bea48 tests/unit_tests/float/test_float_OpDotStar.sci
+81eeb990891a5207ee12443cc8bb0236 tests/unit_tests/float/test_float_OpEqual.sci
+ca88aad1dd0cbb15d1b2b3155b792c5c tests/unit_tests/float/test_float_OpExt.sci
+9fa8c663eedb39a4f9224b29a5516bec tests/unit_tests/float/test_float_OpHat.sci
+35d131d9f516ba4bf81c0b6a626547a1 tests/unit_tests/float/test_float_OpIns.sci
+e6fe50fcd431f285959302dcfe31026f tests/unit_tests/float/test_float_OpLogAnd.sci
+b94a798d05f87f00746e92e51063cbe4 tests/unit_tests/float/test_float_OpLogEq.sci
+38d13abc00a1f451fa06887a0e44ffc3 tests/unit_tests/float/test_float_OpLogGe.sci
+9c56c48eb4c409a2a84d68f80b0b75e3 tests/unit_tests/float/test_float_OpLogGt.sci
+292bac738c6bfa3632794999dc75dd44 tests/unit_tests/float/test_float_OpLogLe.sci
+1201e1fd998bcf67212b40300197c013 tests/unit_tests/float/test_float_OpLogLt.sci
+7c0c275bed82221f6397dc2a0bb0fc25 tests/unit_tests/float/test_float_OpLogNe.sci
+c344463c2cdbf7226ed27338e5812d58 tests/unit_tests/float/test_float_OpLogNot.sci
+9a473c25b6e9760ed737f47fa151c655 tests/unit_tests/float/test_float_OpLogOr.sci
+c28722e326f6beb733424bb985555e1b tests/unit_tests/float/test_float_OpMinus.sci
+f19ac798f2df303ca4b3374eeecdc6ae tests/unit_tests/float/test_float_OpPlus.sci
+8e9caae2270bbb57648b9bcb6c3b276e tests/unit_tests/float/test_float_OpRc.sci
+ff5bd7175b9e0703b5291e646d854cd5 tests/unit_tests/float/test_float_OpSlash.sci
+64e5dee420ba9b966083756b668a3bd0 tests/unit_tests/float/test_float_OpStar.sci
+a41aeee02479c1ea193fc565437315a3 tests/unit_tests/float/test_float_prod.sci
+672433111e3e517edeb393b5fc43497c tests/unit_tests/float/test_float_rand.sci
+40f648990138fe4c50391ea26110d4ba tests/unit_tests/float/test_float_real.sci
+c4e93a8a37db25afb3675d49e23d3c47 tests/unit_tests/float/test_float_round.sci
+3f6c315abe26001bf62952aa9a7cb3a8 tests/unit_tests/float/test_float_sign.sci
+215ba89cfab586c9fca7ddbf98235dcf tests/unit_tests/float/test_float_sin.sci
+6e91db92e7d40408b8a9962cbbb72005 tests/unit_tests/float/test_float_sinh.sci
+7816fdcc9307b514f22e7182aa1b0908 tests/unit_tests/float/test_float_Size.sci
+f04db80c28ccd360a92ddc6febd3c239 tests/unit_tests/float/test_float_Spec.sci
+23538cc7962c839d38b50673cc2b9e46 tests/unit_tests/float/test_float_sqrt.sci
+7312a1e057112b3aad48c935f6459e29 tests/unit_tests/float/test_float_st_deviation.sci
+9b15289ac0fa758fcb8093ff584d3283 tests/unit_tests/float/test_float_Stdevf.sci
+8f9295193369efb0c518f2c191837956 tests/unit_tests/float/test_float_sum.sci
+8a09d56b7dc451e99fcaaa3caa803a88 tests/unit_tests/float/test_float_tanh.sci
+b6f61a6006ff8e5990b1591a703d4e7b tests/unit_tests/float/test_float_Trace.sci
+95d98170397f37e31a67c31bab9d5822 tests/unit_tests/float/test_float_Type.sci
+bc44837c80b3d6f56585ef6393852e2b tests/unit_tests/float/test_float_variance.sci
+f52028b18ab2a713b433d859d7e16893 tests/unit_tests/float/test_float_zeros.sci
+588b5bf929c0b77c11a467d9d20f777f tests/unit_tests/Moebius.dia.ref
+f563be850d87d11227c84beee0a13568 tests/unit_tests/Moebius.tst
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test000_TrigonIdentity/launchConversion.sci
+b28f05585a6b876f035a8bcd4af1afd8 tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test001_LinearRegression/launchConversion.sci
+fb4e4de46ef4d8e8782346d06cb1a665 tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test002_Symbols/launchConversion.sci
+325af2447e763251c0bca3fa940fbfbd tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test003_VerySimple/launchConversion.sci
+fc2221ce52bbcf08edda68611668144b tests/unit_tests/test003_VerySimple/scilabcode/mainfunction.sci
+ef33d7b3a625c9924b32b7ecd0c0204e tests/unit_tests/test004_Filter/scilabcode/high_pass.sci
+5fbbf1e42dc39b0028adf7faf36a7198 tests/unit_tests/test004_Filter/scilabcode/main.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test004_LinearCombination/launchConversion.sci
+61f871e019330c9dfdf746bece926758 tests/unit_tests/test004_LinearCombination/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test005_LinearCombinationNoTempVars/launchConversion.sci
+52c34801ff4297ee151df37cb53a2a31 tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/LinComb.sci
+47af66ba915d3628c3304102a58e5f69 tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test011_InsExtfunctions/launchConversion.sci
+85550532bb687930a6e50ff687685b98 tests/unit_tests/test011_InsExtfunctions/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test012_OpMinus/launchConversion.sci
+c1fa5fcbe2a5f8f2cf47d8814fa3ce49 tests/unit_tests/test012_OpMinus/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test013_TestOpRcCC/launchConversion.sci
+6d57bab8d4eaa8258f6d2f4c5cfeeda9 tests/unit_tests/test013_TestOpRcCC/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test018_NestedWhile/launchConversion.sci
+2213d12db00b2946d03bdc38c0a21696 tests/unit_tests/test018_NestedWhile/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test024_test_if_pi/launchConversion.sci
+a359af758e6e46d0541de867b6f09d96 tests/unit_tests/test024_test_if_pi/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test038_FindI2O1Float/launchConversion.sci
+8fea7d4c3d4b9eaa17a1e97982df1709 tests/unit_tests/test038_FindI2O1Float/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test061_SumShortTest/launchConversion.sci
+88c0aa97d4f46016055b1d7230ecdef7 tests/unit_tests/test061_SumShortTest/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test064_OpMinusFloatComplex/launchConversion.sci
+dc85077dba91521569f52f2bbc288f3b tests/unit_tests/test064_OpMinusFloatComplex/scilabcode/mainfunction.sci
+41ccbdc53f9dabdbd2009bb14c23fca3 tests/unit_tests/test081_twoFunctions/scilabcode/fun1.sci
+93beccd73ec7ad6584c29cd1d89e5085 tests/unit_tests/test081_twoFunctions/scilabcode/fun2.sci
+59c59b0e250980b6818dc0e25fc3f0d1 tests/unit_tests/test081_twoFunctions/scilabcode/mainfunction.sci
+183be1697582bc3e9cae591938f6813b tests/unit_tests/test088_SimpleFor/launchConversion.sci
+183e2ca6d5ca6675be9b4303621efba5 tests/unit_tests/test088_SimpleFor/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test089_SimpleFor/launchConversion.sci
+183e2ca6d5ca6675be9b4303621efba5 tests/unit_tests/test089_SimpleFor/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test100_recursivefunctions/launchConversion.sci
+6190ffad7a798ab9d4539bc422ab4b8b tests/unit_tests/test100_recursivefunctions/scilabcode/IterativePower.sci
+45d009a4778f99d3f91f75b2564bf9b5 tests/unit_tests/test100_recursivefunctions/scilabcode/mainfunction.sci
+35e7af4a1b205a8b8034ce3bd42b64f4 tests/unit_tests/test100_recursivefunctions/scilabcode/RecursivePower.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test101_SimpleStringConcatenation/launchConversion.sci
+f13855e1e52b7eb634b253d859e6ec84 tests/unit_tests/test101_SimpleStringConcatenation/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test104_ScalarProduct/launchConversion.sci
+122f243fb0cd2434a47c18fc2969089f tests/unit_tests/test104_ScalarProduct/scilabcode/mainfunction.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test200_malloc/launchConversion.sci
+e7677794c8b0970386252c6fab317610 tests/unit_tests/test200_malloc/scilabcode/mainfunction.sci
+17130ccfa1e117c9c10544b3b03f92f4 tests/unit_tests/test200_malloc/scilabcode/myinit.sci
+55fad74d4834e3a163b9a9d3d0bc3968 tests/unit_tests/test200_malloc/scilabcode/myzeros.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test301_cchirp/launchConversion.sci
+632d6a12d6e958b413b3f482a00c5be3 tests/unit_tests/test301_cchirp/scilabcode/mainfunction.sci
+c53904ebffd7402510cd7914e535959b tests/unit_tests/test301_cchirp/scilabcode/myconvol.sci
+4219659c1c4a066c4bb355e39a226574 tests/unit_tests/test305_Moebius/Moebius.sci
+1a1f3d70c129a0a422f615110f537efd tests/unit_tests/test305_Moebius/XYgrid.sci
+d0d29adc8fd5e12a82e4fbd5437a5e63 tests/unit_tests/test600_SimpleFindDouble/launchConversion.sci
+554bcf42a30d9fe3e70fb18cbf366159 tests/unit_tests/test600_SimpleFindDouble/scilabcode/mainfunction.sci
+632d6a12d6e958b413b3f482a00c5be3 tests/unit_tests/test9999_WorkingDir/scilabcode/mainfunction.sci
+b734290b7de931db7024b1fbdbc5c749 tests/unit_tests/test_CDG/cs.sci
+f0d7e80cc1b43702f68b69726570b606 tests/unit_tests/test_CDG/D2Q9.sci
+7c651247842fb6b1ffbd668880e6d4ac tests/unit_tests/test_hypermat.sci
+828e4a37f83f66ce9e71c99e75eacd9c tests/unit_tests/test_hypermat.sci.dia.ref
+1d22e19878dc8cc7cb42c2a04d9fc4a2 tests/unit_tests/test_hypermat.sci.tst
+bd1b030c6c8b12eabfffdcde1f45fb30 toyApplication/GuitarString.rar
+b67703ed2f505e1b8dd21ac875ee5562 toyApplication/tols.m
+e1f07e24174f8c22e8f0aa434aa00d42 toyApplication/tolstoy.m
+ed20e4dd542b0a78f0ad0da85f1e828d Visual-Studio-settings/f2c.props
+45cc727b0e7c60d5a53617e55b41036e Visual-Studio-settings/f2c.rules
+afdabaddb6464208ad6d92c54c760800 Visual-Studio-settings/f2c.targets
+5ede965021868dc1a469b13df853996b Visual-Studio-settings/f2c.xml
+9170544a26a6f3447d6da3568fa7a65c Visual-Studio-settings/rename-vc-files.rules
diff --git a/2.3-1/Makefile.am b/2.3-1/Makefile.am
new file mode 100644
index 00000000..1a9bd6ee
--- /dev/null
+++ b/2.3-1/Makefile.am
@@ -0,0 +1,23 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+SUBDIRS= src/fortran/blas \
+ src/fortran/lapack \
+ src/c/type \
+ src/c/operations \
+ src/c/elementaryFunctions \
+ src/c/auxiliaryFunctions \
+ src/c/statisticsFunctions \
+ src/c/matrixOperations \
+ src/c/implicitList \
+ src/c/string \
+ src/c/signalProcessing
diff --git a/2.3-1/Makefile.in b/2.3-1/Makefile.in
new file mode 100644
index 00000000..deb947dd
--- /dev/null
+++ b/2.3-1/Makefile.in
@@ -0,0 +1,734 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/configure \
+ $(top_srcdir)/includes/machine.h.in ChangeLog config/compile \
+ config/config.guess config/config.sub config/depcomp \
+ config/install-sh config/ltmain.sh config/missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d "$(distdir)" \
+ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr "$(distdir)"; }; }
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = src/fortran/blas \
+ src/fortran/lapack \
+ src/c/type \
+ src/c/operations \
+ src/c/elementaryFunctions \
+ src/c/auxiliaryFunctions \
+ src/c/statisticsFunctions \
+ src/c/matrixOperations \
+ src/c/implicitList \
+ src/c/string \
+ src/c/signalProcessing
+
+all: all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+includes/machine.h: includes/stamp-h1
+ @if test ! -f $@; then \
+ rm -f includes/stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) includes/stamp-h1; \
+ else :; fi
+
+includes/stamp-h1: $(top_srcdir)/includes/machine.h.in $(top_builddir)/config.status
+ @rm -f includes/stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status includes/machine.h
+$(top_srcdir)/includes/machine.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f includes/stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f includes/machine.h includes/stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @$(am__cd) '$(distuninstallcheck_dir)' \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+ distcheck distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/RUN_TESTS/RUN_TESTS.vcxproj b/2.3-1/RUN_TESTS/RUN_TESTS.vcxproj
new file mode 100644
index 00000000..84c6dfd4
--- /dev/null
+++ b/2.3-1/RUN_TESTS/RUN_TESTS.vcxproj
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{39BC0138-6B50-492C-8570-06458772282B}</ProjectGuid>
+ <RootNamespace>RUN_TESTS</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>$(SolutionDir)RUN_TESTS/run_tests.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>$(SolutionDir)RUN_TESTS/run_tests.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>$(SolutionDir)RUN_TESTS/run_tests.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>$(SolutionDir)RUN_TESTS/run_tests.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\abs\test_DoubleAbs\testDoubleAbs.vcxproj">
+ <Project>{5a8d4b59-ac5d-4ba0-a26f-17e740f35042}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\abs\test_FloatAbs\testFloatAbs.vcxproj">
+ <Project>{4b5a02a3-c3ef-4a5c-b5a8-7264697d42b6}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\conj\test_Conj\testConj.vcxproj">
+ <Project>{cd5db834-234f-40a3-b551-dc895885e7b1}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\find2d\test_Find2d\testFind2d.vcxproj">
+ <Project>{7361b40c-bcf5-442b-9116-7db5ad7456b0}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\find\test_Find\testFind.vcxproj">
+ <Project>{d5110077-ca24-494b-87d0-451bd124cf70}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\frexp\test_frexp\frexp.vcxproj">
+ <Project>{fdbbfb07-9e66-481e-aa45-3f3bd87cce77}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\isempty\test_IsEmpty\testIsEmpty.vcxproj">
+ <Project>{cf43766b-febe-4e52-a7ca-7d0a9f5db982}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\isnan\test_IsNan\testIsNan.vcxproj">
+ <Project>{18763bd3-2916-4d97-9633-5dac1a635edd}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\length\test_Length\testLength.vcxproj">
+ <Project>{a4626e50-ddd7-44e1-83fc-05bf396af250}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\pythag\test_Pythag\testPythag.vcxproj">
+ <Project>{10f6c306-fd81-45f3-936b-cdf8213a88e6}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\rand\test_Rand\testRand.vcxproj">
+ <Project>{31bbbdb6-9e46-4227-a8e3-9a1942dbd05e}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\sign\test_Sign\testSign.vcxproj">
+ <Project>{eebfac09-8bd7-4254-9316-57c1907d827e}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\size\test_Size\testSize.vcxproj">
+ <Project>{5d4b1991-549d-48ed-a5f6-cb17f15b72c8}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\auxiliaryFunctions\type\test_Type\testType.vcxproj">
+ <Project>{8eb05c91-9405-4af4-88b4-a6b227409bfb}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\elementaryFunctions\acosh\test_doubleacosh\test_doubleacosh.vcxproj">
+ <Project>{5805527c-6a77-40a9-8ef6-414b0269b50e}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\elementaryFunctions\acosh\test_FloatAcosh\testFloatAcosh.vcxproj">
+ <Project>{24015124-a47c-406f-850b-09e95dbbf573}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\elementaryFunctions\acos\test_cplxacos\test_cplxacos.vcxproj">
+ <Project>{20afe4d5-ce52-4cce-adab-87442079bc0b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\elementaryFunctions\acos\test_realsacos\testrealsacos.vcxproj">
+ <Project>{0556427d-6d88-4a12-9eb3-7f551d6f1fa4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\implicitList\test_DoubleImplicitList\testDoubleImplicitList.vcxproj">
+ <Project>{15d96388-c17c-4085-991f-9003e0ce9c6a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\implicitList\test_FloatImplicitList\testFloatImplicitList.vcxproj">
+ <Project>{93cf027e-c286-4f61-a9d6-de3c899c5e77}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\cat\test_DoubleMatrixConcatenation\testDoubleMatrixConcatenation.vcxproj">
+ <Project>{7f36a592-b667-43a4-b3c3-66636f2decb8}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\cat\test_FloatMatrixConcatenation\testFloatMatrixConcatenation.vcxproj">
+ <Project>{b9413124-1841-4373-bfe2-ae6c78f24731}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\chol\test_DoubleChol\testDoubleChol.vcxproj">
+ <Project>{2b2d70a6-f2db-4160-972c-9ecfa0b0699a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\chol\test_FloatChol\testFloatChol.vcxproj">
+ <Project>{c5ba0b86-b432-4ef6-95de-75c026994f4f}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\determ\test_DoubleDeterm\testDoubleDeterm.vcxproj">
+ <Project>{7f13c8ae-27ac-43b4-8c1e-263c5a4c9942}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\determ\test_DoubleDist\testDoubleDist.vcxproj">
+ <Project>{3f1c1c41-424e-4e23-8990-aeb55196376d}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\determ\test_FloatDeterm\testFloatDeterm.vcxproj">
+ <Project>{204a5126-03b1-4e9d-8cc1-cca9f64bd081}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\dist\test_FloatDist\testFloatDist.vcxproj">
+ <Project>{3902cf74-70d4-4fa4-aa53-71643b94bab9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\division\test_MatrixLDivision\testMatrixLDivision.vcxproj">
+ <Project>{b1f2a8ce-764a-4d51-aabd-998d48783894}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\division\test_MatrixRDivision\testMatrixRDivision.vcxproj">
+ <Project>{33833932-6973-483b-b0d1-b3cc800bdff5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\expm\test_MatrixExponential\testMatrixExponential.vcxproj">
+ <Project>{1a4ddf0e-cf14-43ff-bba3-6928ef6d1072}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\eye\test_MatrixEye\testMatrixEye.vcxproj">
+ <Project>{4f99e000-ac7d-4c3b-80c5-5a5a64d5757f}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\fill\test_DoubleFill\testDoubleFill.vcxproj">
+ <Project>{903b0194-f1a9-4302-ac3d-7e88e0406e26}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\fill\test_FloatFill\testFloatFill.vcxproj">
+ <Project>{054c79a1-a607-496b-96ce-6f0bb404f754}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\hilb\test_Hilbert\testHilbert.vcxproj">
+ <Project>{f7747e9b-a57f-43d2-8c1f-1f77c670b406}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\infiniteNorm\test_MatrixInfiniteNorm\testMatrixInfiniteNorm.vcxproj">
+ <Project>{43bf5e9a-3456-45fe-9def-9e962b4d4e3d}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\inversion\test_MatrixInversion\testMatrixInversion.vcxproj">
+ <Project>{44d3efb8-a861-41c4-bbcd-18470fa0d5ac}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\jmat\test_Jmat\testJmat.vcxproj">
+ <Project>{04980e4a-fd92-4d44-8eb6-6f643a4ed9b3}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\logm\test_DoubleLogm\testDoubleLogm.vcxproj">
+ <Project>{df3336e6-f783-4577-b014-75d0e0377b3e}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\logm\test_FloatLogm\testFloatLogm.vcxproj">
+ <Project>{bafd5fa4-3d99-48ff-bbfd-5017207870e7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\magnitude\test_DoubleMagnitude\testDoubleMagnitude.vcxproj">
+ <Project>{818553d4-0def-4bbe-a43a-45611dd84580}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\magnitude\test_FloatMagnitude\testFloatMagnitude.vcxproj">
+ <Project>{1e12c5a2-edf1-47bb-a2ef-60a288dc278d}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\multiplication\test_DoubleMatrixMultiplication\testDoubleMatrixMultiplication.vcxproj">
+ <Project>{c4fbeb3f-d766-4c74-9377-7d4434a2fc6c}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\multiplication\test_FloatMatrixMultiplication\testFloatMatrixMultiplication.vcxproj">
+ <Project>{4ce33021-55f3-46cc-a548-a151d07b24cf}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\ones\test_MatrixOnes\testMatrixOnes.vcxproj">
+ <Project>{d21bd764-eec6-4474-9d4b-808ef2217cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\powm\test_DoublePowm\testDoublePowm.vcxproj">
+ <Project>{d83a0994-57a0-4c17-89df-ede84450c202}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\powm\test_FloatPowm\testFloatPowm.vcxproj">
+ <Project>{8594acb2-d3c8-4d3a-b905-794354a8a0cc}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\spec2\test_DoubleSpec2\testDoubleSpec2.vcxproj">
+ <Project>{fd0a4495-c372-41ef-b8ef-0a0939da6c1e}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\spec2\test_FloatSpec2\testFloatSpec2.vcxproj">
+ <Project>{e20d0bc2-b28a-412c-9715-5b93b319a4a3}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\spec\test_DoubleSpec\testDoubleSpec.vcxproj">
+ <Project>{651b0e61-1047-4575-be31-d9cb28062cba}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\spec\test_FloatSpec\testFloatSpec.vcxproj">
+ <Project>{b7bef8a2-3e42-4fa3-94a7-22618594057d}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\squaredMagnitude\test_DoubleSquaredMagnitude\testDoubleSquaredMagnitude.vcxproj">
+ <Project>{16744340-9ddc-4cc6-ac7d-a25de89a3f5d}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\squaredMagnitude\test_FloatSquaredMagnitude\testFloatSquaredMagnitude.vcxproj">
+ <Project>{6dbadd0b-c4c1-48cf-95ea-6cf7272a0391}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\trace\test_MatrixTrace\testMatrixTrace.vcxproj">
+ <Project>{21e5e59a-7e4e-4f65-9042-9c67c713d51c}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\transpose\test_MatrixTranspose\testMatrixTranspose.vcxproj">
+ <Project>{8d483b26-a264-4ba6-bb6a-36306bcfa8e3}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\matrixOperations\zeros\test_MatrixZeros\testMatrixZeros.vcxproj">
+ <Project>{d55bc043-1853-4e4c-a8a8-2756682e4b23}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\operations\addition\test_Addition\testAddition.vcxproj">
+ <Project>{59f5b75c-7fcc-4b07-a5d0-c39d5757204b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\operations\division\test_LDivision\testLDivision.vcxproj">
+ <Project>{7a424759-5962-4ae5-abb6-0b94ddd21f61}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\operations\division\test_RDivision\testRDivision.vcxproj">
+ <Project>{bf995e6f-88c9-4175-9ee3-ecb3d270aea6}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\operations\multiplication\test_Multiplication\testMultiplication.vcxproj">
+ <Project>{769e26c1-e337-4878-b604-8be33323f5ff}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\operations\subtraction\test_Subtraction\testSubtraction.vcxproj">
+ <Project>{f0da7501-84cb-4641-9dda-da084736b7d4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\conv2d\test_DoubleConv2d\testDoubleConv2d.vcxproj">
+ <Project>{c46c7cde-9d38-42e5-9dba-3e7306033450}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\conv2d\test_FloatConv2d\testFloatConv2d.vcxproj">
+ <Project>{26170083-8042-4e04-bfe3-b553a5a8d481}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\conv\test_DoubleConv\testDoubleConv.vcxproj">
+ <Project>{0ed6e2d7-b50d-4a17-a34b-440a7307e747}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\conv\test_FloatConv\testFloatConv.vcxproj">
+ <Project>{5a0d9a72-fa85-41f8-a605-a2b31961b01c}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\crossCorr\test_DoubleCrossCorr\testDoubleCrossCorr.vcxproj">
+ <Project>{9cf61ef1-2ff6-4dc2-a6ee-00c2288732bd}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\crossCorr\test_FloatCrossCorr\testFloatCrossCorr.vcxproj">
+ <Project>{0f19a6a2-2ee2-4e39-8a4c-2f898d4186cf}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\fftshift\test_DoubleFftShift\testDoubleFftShift.vcxproj">
+ <Project>{1ea7e165-a87c-49ea-90cb-2aecd5fed605}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\fftshift\test_FloatFftShift\testFloatFftShift.vcxproj">
+ <Project>{cf3e80f1-a0b6-465b-9285-11753e84b7f4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\fft\test_DoubleFft\testDoubleFft.vcxproj">
+ <Project>{dbd206e6-f7f2-4c00-83f0-2aaab90a6c72}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\fft\test_FloatFft\testFloatFft.vcxproj">
+ <Project>{ede2f70a-e2a0-45b6-a9c7-e3e62409af95}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\fft\test_MatFft\testMatFft.vcxproj">
+ <Project>{a7a46527-b5f9-4b92-9c46-2416e2432314}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\hilbert\test_Hilbert\testHilbert.vcxproj">
+ <Project>{ae37524c-2ebb-4eae-93b9-ae9c89323b1e}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\ifft\test_DoubleIfft\testDoubleIfft.vcxproj">
+ <Project>{633b36b2-af28-4ef8-a236-021aa1ecf18a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\ifft\test_FloatIfft\testFloatIfft.vcxproj">
+ <Project>{3545dd4a-7de1-4db8-a28f-bbca0278ba57}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\ifft\test_MatIfft\testMatIfft.vcxproj">
+ <Project>{2f903f45-a053-47f8-bea7-2490dea6c9c5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\levin\test_DoubleLevin\testDoubleLevin.vcxproj">
+ <Project>{caa51066-e3ac-4fe7-a330-d946a7ad6026}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\levin\test_FloatLevin\testFloatLevin.vcxproj">
+ <Project>{fcd4f6f6-b226-4cc8-a9bd-432c36def855}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\lev\test_DoubleLev\testDoubleLev.vcxproj">
+ <Project>{bd0b9c19-fdc9-46ab-bcdb-384b4967b7a2}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\lev\test_FloatLev\testFloatLev.vcxproj">
+ <Project>{81145727-fb2b-4cd6-b5ac-3f2146f93d5f}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\lpc2cep\test_DoubleLpc2cep\testDoubleLpc2cep.vcxproj">
+ <Project>{edf4f58c-2776-49a0-9f2d-cae9a8979ce1}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\signalProcessing\lpc2cep\test_FloatLpc2cep\testFloatLpc2cep.vcxproj">
+ <Project>{f37fac6d-8c48-4f25-8e8d-ab0bf1a8641f}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\max\test_DoubleMax\testDoubleMax.vcxproj">
+ <Project>{020991c0-9640-4097-b697-d514f08aa74c}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\max\test_FloatMax\testFloatMax.vcxproj">
+ <Project>{0e4ec2a2-badc-48c8-af56-d1437094887a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\mean\test_DoubleMean\testDoubleMean.vcxproj">
+ <Project>{3c4d1eb3-7d2a-4aae-9b4c-3a0c18cba156}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\mean\test_FloatMean\testFloatMean.vcxproj">
+ <Project>{acf6bdb6-c931-400d-a1ed-0b053a19f7ee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\min\test_DoubleMin\testDoubleMin.vcxproj">
+ <Project>{9678e693-3459-4d6f-9017-ea3e28a58ac7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\min\test_FloatMin\testFloatMin.vcxproj">
+ <Project>{0a156c36-89d5-485e-bb8e-c7536a1da566}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\prod\test_DoubleProd\testDoubleProd.vcxproj">
+ <Project>{322f871e-3349-4993-bc87-cafaa6b6f72c}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\prod\test_FloatProd\testFloatProd.vcxproj">
+ <Project>{b80645fe-03d0-4bc8-8dae-032a58cf4e57}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\sum\test_DoubleSum\testDoubleSum.vcxproj">
+ <Project>{f2a81cdc-2581-481f-b63d-3d2079b264c2}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\sum\test_FloatSum\testFloatSum.vcxproj">
+ <Project>{450c8334-ba46-43db-81ba-7bedbb346126}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\variance\test_DoubleVarianceNono\testDoubleVarianceNono.vcxproj">
+ <Project>{ccd3f89c-a278-457d-bfd6-adeef4860e07}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\variance\test_DoubleVariance\testDoubleVariance.vcxproj">
+ <Project>{774783e0-2443-42db-aa48-04730e59b396}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\variance\test_FloatVarianceNono\testFloatVarianceNono.vcxproj">
+ <Project>{def1a42f-599b-4b1d-ab11-202e86670021}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\statisticsFunctions\variance\test_FloatVariance\testFloatVariance.vcxproj">
+ <Project>{53f78e7f-3024-4999-be70-f4a242357809}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\string\disp\test_Disp\testDisp.vcxproj">
+ <Project>{432917e4-f042-47b2-bf43-0c376883a7e6}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\string\string\test_String\testString.vcxproj">
+ <Project>{df010f03-718d-4cef-bd03-5e2c9c47613d}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\type\test_doubleComplex\test_doubleComplex.vcxproj">
+ <Project>{dbb1b4e8-e9d0-44e5-8aa6-4ecf1aaa1d0f}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\src\c\type\test_floatComplex\test_floatComplex.vcxproj">
+ <Project>{a6ebf2f9-c100-453f-a0d1-1649dcf557ec}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/RUN_TESTS/RUN_TESTS.vcxproj.filters b/2.3-1/RUN_TESTS/RUN_TESTS.vcxproj.filters
new file mode 100644
index 00000000..500f18ae
--- /dev/null
+++ b/2.3-1/RUN_TESTS/RUN_TESTS.vcxproj.filters
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/RUN_TESTS/run_tests.bat b/2.3-1/RUN_TESTS/run_tests.bat
new file mode 100755
index 00000000..bf3e639b
--- /dev/null
+++ b/2.3-1/RUN_TESTS/run_tests.bat
@@ -0,0 +1,99 @@
+..\bin\testAddition.exe
+..\bin\testConj.exe
+..\bin\testCplxAcos.exe
+..\bin\testDisp.exe
+..\bin\testDoubleAbs.exe
+..\bin\testDoubleAcosh.exe
+..\bin\testDoubleChol.exe
+..\bin\testDoubleComplex.exe
+..\bin\testDoubleConv.exe
+..\bin\testDoubleConv2d.exe
+..\bin\testDoubleCrossCorr.exe
+..\bin\testDoubleDeterm.exe
+..\bin\testDoubleDist.exe
+..\bin\testDoubleFft.exe
+..\bin\testDoubleFftShift.exe
+..\bin\testDoubleFill.exe
+..\bin\testDoubleIfft.exe
+..\bin\testDoubleImplicitList.exe
+..\bin\testDoubleLev.exe
+..\bin\testDoubleLevin.exe
+..\bin\testDoubleLogm.exe
+..\bin\testDoubleLpc2cep.exe
+..\bin\testDoubleMagnitude.exe
+..\bin\testDoubleMatrixConcatenation.exe
+..\bin\testDoubleMatrixMultiplication.exe
+..\bin\testDoubleMax.exe
+..\bin\testDoubleMean.exe
+..\bin\testDoubleMin.exe
+..\bin\testDoublePowm.exe
+..\bin\testDoubleProd.exe
+..\bin\testDoubleSpec.exe
+..\bin\testDoubleSpec2.exe
+..\bin\testDoubleSquaredMagnitude.exe
+..\bin\testDoubleSum.exe
+..\bin\testDoubleVariance.exe
+..\bin\testDoubleVarianceNono.exe
+..\bin\testFind.exe
+..\bin\testFind2d.exe
+..\bin\testFloatAbs.exe
+..\bin\testFloatAcosh.exe
+..\bin\testFloatChol.exe
+..\bin\testFloatComplex.exe
+..\bin\testFloatConv.exe
+..\bin\testFloatConv2d.exe
+..\bin\testFloatCrossCorr.exe
+..\bin\testFloatDeterm.exe
+..\bin\testFloatDist.exe
+..\bin\testFloatFft.exe
+..\bin\testFloatFftShift.exe
+..\bin\testFloatFill.exe
+..\bin\testFloatIfft.exe
+..\bin\testFloatImplicitList.exe
+..\bin\testFloatLev.exe
+..\bin\testFloatLevin.exe
+..\bin\testFloatLogm.exe
+..\bin\testFloatLpc2cep.exe
+..\bin\testFloatMagnitude.exe
+..\bin\testFloatMatrixConcatenation.exe
+..\bin\testFloatMatrixMultiplication.exe
+..\bin\testFloatMax.exe
+..\bin\testFloatMean.exe
+..\bin\testFloatMin.exe
+..\bin\testFloatPowm.exe
+..\bin\testFloatProd.exe
+..\bin\testFloatSpec.exe
+..\bin\testFloatSpec2.exe
+..\bin\testFloatSquaredMagnitude.exe
+..\bin\testFloatSum.exe
+..\bin\testFloatVariance.exe
+..\bin\testFloatVarianceNono.exe
+..\bin\testFrexp.exe
+..\bin\testHilbert.exe
+..\bin\testIsEmpty.exe
+..\bin\testIsNan.exe
+..\bin\testJmat.exe
+..\bin\testLDivision.exe
+..\bin\testLength.exe
+..\bin\testMatFft.exe
+..\bin\testMatIfft.exe
+..\bin\testMatrixExponential.exe
+..\bin\testMatrixEye.exe
+..\bin\testMatrixInfiniteNorm.exe
+..\bin\testMatrixInversion.exe
+..\bin\testMatrixLDivision.exe
+..\bin\testMatrixOnes.exe
+..\bin\testMatrixRDivision.exe
+..\bin\testMatrixTrace.exe
+..\bin\testMatrixTranspose.exe
+..\bin\testMatrixZeros.exe
+..\bin\testMultiplication.exe
+..\bin\testPythag.exe
+..\bin\testRand.exe
+..\bin\testRDivision.exe
+..\bin\testRealsAcos.exe
+..\bin\testSign.exe
+..\bin\testSize.exe
+..\bin\testString.exe
+..\bin\testSubtraction.exe
+..\bin\testType.exe
diff --git a/2.3-1/Visual-Studio-settings/f2c.props b/2.3-1/Visual-Studio-settings/f2c.props
new file mode 100644
index 00000000..c1282654
--- /dev/null
+++ b/2.3-1/Visual-Studio-settings/f2c.props
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup
+ Condition="'$(f2c_ruleBeforeTargets)' == '' and '$(f2c_ruleAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
+ <f2c_ruleBeforeTargets>Midl</f2c_ruleBeforeTargets>
+ <f2c_ruleAfterTargets>CustomBuild</f2c_ruleAfterTargets>
+ </PropertyGroup>
+ <PropertyGroup>
+ <f2c_ruleDependsOn
+ Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(f2c_ruleDependsOn)</f2c_ruleDependsOn>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <f2c_rule>
+ <CommandLineTemplate>cd "%(RootDir)%(Directory)"
+"$(SolutionDir)bin\f2c.exe" -E -I..\..\..\core\includes -I..\..\..\..\core\includes "%(Filename)%(Extension)" 2&gt;NUL
+
+</CommandLineTemplate>
+ <Outputs>%(RootDir)%(Directory)%(Filename).c</Outputs>
+ <ExecutionDescription>Converting %(Filename).f to %(Filename).c ...</ExecutionDescription>
+ <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties>
+ </f2c_rule>
+ </ItemDefinitionGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/Visual-Studio-settings/f2c.rules b/2.3-1/Visual-Studio-settings/f2c.rules
new file mode 100644
index 00000000..c69a92f9
--- /dev/null
+++ b/2.3-1/Visual-Studio-settings/f2c.rules
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<VisualStudioToolFile
+ Name="Fortran to C conversion"
+ Version="8,00"
+ >
+ <Rules>
+ <CustomBuildRule
+ Name="f2c rule"
+ DisplayName="f2c rule"
+ CommandLine="cd &quot;$(InputDir)&quot;&#x0D;&#x0A;&quot;$(SolutionDir)bin\f2c.exe&quot; -E -I..\..\..\core\includes -I..\..\..\..\core\includes &quot;$(InputFileName)&quot; 2&gt;NUL&#x0D;&#x0A;&#x0D;&#x0A;"
+ Outputs="&quot;$(InputDir)$(InputName).c&quot;"
+ FileExtensions="*.f"
+ ExecutionDescription="Converting $(InputName).f to $(InputName).c ..."
+ ShowOnlyRuleProperties="false"
+ >
+ <Properties>
+ </Properties>
+ </CustomBuildRule>
+ </Rules>
+</VisualStudioToolFile>
diff --git a/2.3-1/Visual-Studio-settings/f2c.targets b/2.3-1/Visual-Studio-settings/f2c.targets
new file mode 100644
index 00000000..7bfc2a04
--- /dev/null
+++ b/2.3-1/Visual-Studio-settings/f2c.targets
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <PropertyPageSchema
+ Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
+ <AvailableItemName
+ Include="f2c_rule">
+ <Targets>_f2c_rule</Targets>
+ </AvailableItemName>
+ </ItemGroup>
+ <UsingTask
+ TaskName="f2c_rule"
+ TaskFactory="XamlTaskFactory"
+ AssemblyName="Microsoft.Build.Tasks.v4.0">
+ <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
+ </UsingTask>
+ <Target
+ Name="_f2c_rule"
+ BeforeTargets="$(f2c_ruleBeforeTargets)"
+ AfterTargets="$(f2c_ruleAfterTargets)"
+ Condition="'@(f2c_rule)' != ''"
+ DependsOnTargets="$(f2c_ruleDependsOn);Computef2c_ruleOutput"
+ Outputs="%(f2c_rule.Outputs)"
+ Inputs="%(f2c_rule.Identity);%(f2c_rule.AdditionalDependencies);$(MSBuildProjectFile)">
+ <ItemGroup
+ Condition="'@(SelectedFiles)' != ''">
+ <f2c_rule
+ Remove="@(f2c_rule)"
+ Condition="'%(Identity)' != '@(SelectedFiles)'" />
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule_tlog
+ Include="%(f2c_rule.Outputs)"
+ Condition="'%(f2c_rule.Outputs)' != '' and '%(f2c_rule.ExcludedFromBuild)' != 'true'">
+ <Source>@(f2c_rule, '|')</Source>
+ </f2c_rule_tlog>
+ </ItemGroup>
+ <Message
+ Importance="High"
+ Text="%(f2c_rule.ExecutionDescription)" />
+ <WriteLinesToFile
+ Condition="'@(f2c_rule_tlog)' != '' and '%(f2c_rule_tlog.ExcludedFromBuild)' != 'true'"
+ File="$(IntDir)$(ProjectName).write.1.tlog"
+ Lines="^%(f2c_rule_tlog.Source);@(f2c_rule_tlog-&gt;'%(Fullpath)')" />
+ <f2c_rule
+ Condition="'@(f2c_rule)' != '' and '%(f2c_rule.ExcludedFromBuild)' != 'true'"
+ CommandLineTemplate="%(f2c_rule.CommandLineTemplate)"
+ AdditionalOptions="%(f2c_rule.AdditionalOptions)"
+ Inputs="%(f2c_rule.Identity)" />
+ </Target>
+ <PropertyGroup>
+ <ComputeLinkInputsTargets>
+ $(ComputeLinkInputsTargets);
+ Computef2c_ruleOutput;
+ </ComputeLinkInputsTargets>
+ <ComputeLibInputsTargets>
+ $(ComputeLibInputsTargets);
+ Computef2c_ruleOutput;
+ </ComputeLibInputsTargets>
+ </PropertyGroup>
+ <Target
+ Name="Computef2c_ruleOutput"
+ Condition="'@(f2c_rule)' != ''">
+ <ItemGroup>
+ <f2c_ruleDirsToMake
+ Condition="'@(f2c_rule)' != '' and '%(f2c_rule.ExcludedFromBuild)' != 'true'"
+ Include="%(f2c_rule.Outputs)" />
+ <Link
+ Include="%(f2c_ruleDirsToMake.Identity)"
+ Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
+ <Lib
+ Include="%(f2c_ruleDirsToMake.Identity)"
+ Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
+ <ImpLib
+ Include="%(f2c_ruleDirsToMake.Identity)"
+ Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
+ </ItemGroup>
+ <MakeDir
+ Directories="@(f2c_ruleDirsToMake-&gt;'%(RootDir)%(Directory)')" />
+ </Target>
+</Project> \ No newline at end of file
diff --git a/2.3-1/Visual-Studio-settings/f2c.xml b/2.3-1/Visual-Studio-settings/f2c.xml
new file mode 100644
index 00000000..b4df8830
--- /dev/null
+++ b/2.3-1/Visual-Studio-settings/f2c.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
+ <Rule
+ Name="f2c_rule"
+ PageTemplate="tool"
+ DisplayName="f2c rule"
+ Order="200">
+ <Rule.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ ItemType="f2c_rule" />
+ </Rule.DataSource>
+ <Rule.Categories>
+ <Category
+ Name="General">
+ <Category.DisplayName>
+ <sys:String>General</sys:String>
+ </Category.DisplayName>
+ </Category>
+ <Category
+ Name="Command Line"
+ Subtype="CommandLine">
+ <Category.DisplayName>
+ <sys:String>Command Line</sys:String>
+ </Category.DisplayName>
+ </Category>
+ </Rule.Categories>
+ <StringListProperty
+ Name="Inputs"
+ Category="Command Line"
+ IsRequired="true"
+ Switch=" ">
+ <StringListProperty.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ ItemType="f2c_rule"
+ SourceType="Item" />
+ </StringListProperty.DataSource>
+ </StringListProperty>
+ <StringProperty
+ Name="CommandLineTemplate"
+ DisplayName="Command Line"
+ Visible="False"
+ IncludeInCommandLine="False" />
+ <DynamicEnumProperty
+ Name="f2c_ruleBeforeTargets"
+ Category="General"
+ EnumProvider="Targets"
+ IncludeInCommandLine="False">
+ <DynamicEnumProperty.DisplayName>
+ <sys:String>Execute Before</sys:String>
+ </DynamicEnumProperty.DisplayName>
+ <DynamicEnumProperty.Description>
+ <sys:String>Specifies the targets for the build customization to run before.</sys:String>
+ </DynamicEnumProperty.Description>
+ <DynamicEnumProperty.ProviderSettings>
+ <NameValuePair
+ Name="Exclude"
+ Value="^f2c_ruleBeforeTargets|^Compute" />
+ </DynamicEnumProperty.ProviderSettings>
+ <DynamicEnumProperty.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ HasConfigurationCondition="true" />
+ </DynamicEnumProperty.DataSource>
+ </DynamicEnumProperty>
+ <DynamicEnumProperty
+ Name="f2c_ruleAfterTargets"
+ Category="General"
+ EnumProvider="Targets"
+ IncludeInCommandLine="False">
+ <DynamicEnumProperty.DisplayName>
+ <sys:String>Execute After</sys:String>
+ </DynamicEnumProperty.DisplayName>
+ <DynamicEnumProperty.Description>
+ <sys:String>Specifies the targets for the build customization to run after.</sys:String>
+ </DynamicEnumProperty.Description>
+ <DynamicEnumProperty.ProviderSettings>
+ <NameValuePair
+ Name="Exclude"
+ Value="^f2c_ruleAfterTargets|^Compute" />
+ </DynamicEnumProperty.ProviderSettings>
+ <DynamicEnumProperty.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ ItemType=""
+ HasConfigurationCondition="true" />
+ </DynamicEnumProperty.DataSource>
+ </DynamicEnumProperty>
+ <StringListProperty
+ Name="Outputs"
+ DisplayName="Outputs"
+ Visible="False"
+ IncludeInCommandLine="False" />
+ <StringProperty
+ Name="ExecutionDescription"
+ DisplayName="Execution Description"
+ Visible="False"
+ IncludeInCommandLine="False" />
+ <StringListProperty
+ Name="AdditionalDependencies"
+ DisplayName="Additional Dependencies"
+ IncludeInCommandLine="False"
+ Visible="true" />
+ <StringProperty
+ Subtype="AdditionalOptions"
+ Name="AdditionalOptions"
+ Category="Command Line">
+ <StringProperty.DisplayName>
+ <sys:String>Additional Options</sys:String>
+ </StringProperty.DisplayName>
+ <StringProperty.Description>
+ <sys:String>Additional Options</sys:String>
+ </StringProperty.Description>
+ </StringProperty>
+ </Rule>
+ <ItemType
+ Name="f2c_rule"
+ DisplayName="f2c rule" />
+ <FileExtension
+ Name="*.f"
+ ContentType="f2c_rule" />
+ <ContentType
+ Name="f2c_rule"
+ DisplayName="f2c rule"
+ ItemType="f2c_rule" />
+</ProjectSchemaDefinitions> \ No newline at end of file
diff --git a/2.3-1/Visual-Studio-settings/rename-vc-files.rules b/2.3-1/Visual-Studio-settings/rename-vc-files.rules
new file mode 100644
index 00000000..6af189d1
--- /dev/null
+++ b/2.3-1/Visual-Studio-settings/rename-vc-files.rules
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<VisualStudioToolFile
+ Name="Rename .vc Files"
+ Version="8,00"
+ >
+ <Rules>
+ <CustomBuildRule
+ Name="rename .vc files"
+ DisplayName="Rename .vc files"
+ CommandLine="copy &quot;$(InputDir)$(InputFileName)&quot; &quot;$(InputDir)$(InputName)&quot; 1&gt;NUL"
+ Outputs="$(InputDir)$(InputName) "
+ FileExtensions="*.vc"
+ ExecutionDescription="Copy $(InputDir)$(InputFileName) --&gt; $(InputDir)$(InputName)"
+ >
+ <Properties>
+ </Properties>
+ </CustomBuildRule>
+ </Rules>
+</VisualStudioToolFile>
diff --git a/2.3-1/builder.sce b/2.3-1/builder.sce
new file mode 100644
index 00000000..5938a588
--- /dev/null
+++ b/2.3-1/builder.sce
@@ -0,0 +1,34 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+//mode(-1);
+lines(0);
+try
+ getversion('scilab');
+catch
+ error(gettext('Scilab 5.0 or more is required.'));
+end;
+// ====================================================================
+if ~with_module('development_tools') then
+ error(msprintf(gettext('%s module not installed.'),'development_tools'));
+end
+// ====================================================================
+TOOLBOX_NAME = 'scilab2c';
+TOOLBOX_TITLE = 'Scilab 2 C Converter';
+// ====================================================================
+toolbox_dir = get_absolute_file_path('builder.sce');
+
+tbx_builder_macros(toolbox_dir);
+//tbx_builder_help(toolbox_dir);
+tbx_build_loader(TOOLBOX_NAME, toolbox_dir);
+
+clear toolbox_dir TOOLBOX_NAME TOOLBOX_TITLE;
+// ====================================================================
diff --git a/2.3-1/config/compile b/2.3-1/config/compile
new file mode 100644
index 00000000..1b1d2321
--- /dev/null
+++ b/2.3-1/config/compile
@@ -0,0 +1,142 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as `compile cc -o foo foo.c'.
+ # So we strip `-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no `-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # `.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/2.3-1/config/config.guess b/2.3-1/config/config.guess
new file mode 100644
index 00000000..278f9e9e
--- /dev/null
+++ b/2.3-1/config/config.guess
@@ -0,0 +1,1516 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2007-07-22'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa:Linux:*:*)
+ echo xtensa-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/2.3-1/config/config.sub b/2.3-1/config/config.sub
new file mode 100644
index 00000000..1761d8bd
--- /dev/null
+++ b/2.3-1/config/config.sub
@@ -0,0 +1,1626 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2007-06-28'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/2.3-1/config/depcomp b/2.3-1/config/depcomp
new file mode 100644
index 00000000..e5f9736c
--- /dev/null
+++ b/2.3-1/config/depcomp
@@ -0,0 +1,589 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2007-03-29.01
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/2.3-1/config/install-sh b/2.3-1/config/install-sh
new file mode 100644
index 00000000..a5897de6
--- /dev/null
+++ b/2.3-1/config/install-sh
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/2.3-1/config/ltmain.sh b/2.3-1/config/ltmain.sh
new file mode 100644
index 00000000..b612e9a6
--- /dev/null
+++ b/2.3-1/config/ltmain.sh
@@ -0,0 +1,8412 @@
+# Generated from ltmain.m4sh.
+
+# ltmain.sh (GNU libtool) 2.2.6
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+# --config show all configuration variables
+# --debug enable verbose shell tracing
+# -n, --dry-run display commands without modifying any files
+# --features display basic configuration information and exit
+# --mode=MODE use operation mode MODE
+# --preserve-dup-deps don't remove duplicate dependency libraries
+# --quiet, --silent don't print informational messages
+# --tag=TAG use configuration variables from tag TAG
+# -v, --verbose print informational messages (default)
+# --version print version information
+# -h, --help print short or long help message
+#
+# MODE must be one of the following:
+#
+# clean remove files from the build directory
+# compile compile a source file into a libtool object
+# execute automatically set library path, then run a program
+# finish complete the installation of libtool libraries
+# install install libraries or executables
+# link create a library or an executable
+# uninstall remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+# host-triplet: $host
+# shell: $SHELL
+# compiler: $LTCC
+# compiler flags: $LTCFLAGS
+# linker: $LD (gnu? $with_gnu_ld)
+# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-1ubuntu1
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"
+TIMESTAMP=""
+package_revision=1.3012
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# NLS nuisances: We save the old values to restore during execute mode.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+done
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="echo"}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/bin/sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+# Generated shell functions inserted here.
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+# In the unlikely event $progname began with a '-', it would play havoc with
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+case $progname in
+ -*) progname=./$progname ;;
+esac
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=$func_dirname_result
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=:
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname${mode+: }$mode: $*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ case $my_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+ done
+ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$opt_dry_run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+ case $1 in
+ *[\\\`\"\$]*)
+ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+ *)
+ func_quote_for_eval_unquoted_result="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "X$1" | $Xsed \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$lt_user_locale
+ $my_cmd"
+ my_status=$?
+ eval "$lt_safe_locale"
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $SED -n '/^# Usage:/,/# -h/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ $ECHO
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ func_error "missing argument for $1"
+ exit_cmd=exit
+}
+
+exit_cmd=:
+
+
+
+
+
+# Check that we have a working $ECHO.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell, and then maybe $ECHO will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+# $mode is unset
+nonopt=
+execute_dlfiles=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+ $ECHO "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $ECHO "enable shared libraries"
+ else
+ $ECHO "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $ECHO "enable static libraries"
+ else
+ $ECHO "disable static libraries"
+ fi
+
+ exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+# Parse options once, thoroughly. This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
+
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
+
+ # Parse non-mode specific arguments:
+ while test "$#" -gt 0; do
+ opt="$1"
+ shift
+
+ case $opt in
+ --config) func_config ;;
+
+ --debug) preserve_args="$preserve_args $opt"
+ func_echo "enabling shell trace mode"
+ opt_debug='set -x'
+ $opt_debug
+ ;;
+
+ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ execute_dlfiles="$execute_dlfiles $1"
+ shift
+ ;;
+
+ --dry-run | -n) opt_dry_run=: ;;
+ --features) func_features ;;
+ --finish) mode="finish" ;;
+
+ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ case $1 in
+ # Valid mode arguments:
+ clean) ;;
+ compile) ;;
+ execute) ;;
+ finish) ;;
+ install) ;;
+ link) ;;
+ relink) ;;
+ uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+
+ mode="$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_duplicate_deps=: ;;
+
+ --quiet|--silent) preserve_args="$preserve_args $opt"
+ opt_silent=:
+ ;;
+
+ --verbose| -v) preserve_args="$preserve_args $opt"
+ opt_silent=false
+ ;;
+
+ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ preserve_args="$preserve_args $opt $1"
+ func_enable_tag "$1" # tagname is set here
+ shift
+ ;;
+
+ # Separate optargs to long options:
+ -dlopen=*|--mode=*|--tag=*)
+ func_opt_split "$opt"
+ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) opt_help=: ;;
+ --version) func_version ;;
+
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+
+ *) nonopt="$opt"
+ break
+ ;;
+ esac
+ done
+
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+ ;;
+ esac
+
+ # Having warned about all mis-specified options, bail out if
+ # anything was wrong.
+ $exit_cmd $EXIT_FAILURE
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+$opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_ltwrapper_scriptname_result=""
+ if func_ltwrapper_executable_p "$1"; then
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ fi
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ pie_flag="$pie_flag $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$arg"
+ lastarg="$lastarg $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ *)
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ func_quote_for_eval "$lastarg"
+ base_compile="$base_compile $func_quote_for_eval_result"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname="$func_basename_result"
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ removelist="$removelist $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ removelist="$removelist $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ compile)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+ execute)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+ finish)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+ install)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+ uninstall)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode \`$mode'"
+ ;;
+ esac
+
+ $ECHO
+ $ECHO "Try \`$progname --help' for more information about other modes."
+
+ exit $?
+}
+
+ # Now that we've collected a possible --mode arg, show help if necessary
+ $opt_help && func_mode_help
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
+ *)
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_quote_for_eval "$file"
+ args="$args $func_quote_for_eval_result"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ $ECHO "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ $ECHO "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ $ECHO
+ $ECHO "If you ever happen to want to link against installed libraries"
+ $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $ECHO "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $ECHO " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
+ $ECHO " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $ECHO " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $ECHO " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $ECHO
+
+ $ECHO "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ $ECHO "pages."
+ ;;
+ *)
+ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+}
+
+test "$mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog$func_quote_for_eval_result"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir="$func_dirname_result"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+ fi
+
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "\`$lib' has not been installed in \`$libdir'"
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_verbose "generating symbol list for \`$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_verbose "extracting global C symbols from \`$progfile'"
+ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ done
+
+ $opt_dry_run || {
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $MV "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if $GREP -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ $GREP -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+ else
+ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+/* DATA imports from DLLs on WIN32 con't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs. */"
+ lt_dlsym_const= ;;
+ *osf5*)
+ echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+ lt_dlsym_const= ;;
+ *)
+ lt_dlsym_const=const ;;
+ esac
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+$lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) symtab_cflags="$symtab_cflags $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+ $opt_debug
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
+
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $opt_debug
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename "$darwin_archive"`
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_emit_wrapper_part1 [arg=no]
+#
+# Emit the first part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part1 ()
+{
+ func_emit_wrapper_part1_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_part1_arg1=$1
+ fi
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$ECHO are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ ECHO=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$ECHO works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$ECHO will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $ECHO "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+"
+}
+# end: func_emit_wrapper_part1
+
+# func_emit_wrapper_part2 [arg=no]
+#
+# Emit the second part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part2 ()
+{
+ func_emit_wrapper_part2_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_part2_arg1=$1
+ fi
+
+ $ECHO "\
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $ECHO "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" ||
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $MKDIR \"\$progdir\"
+ else
+ $RM \"\$progdir/\$file\"
+ fi"
+
+ $ECHO "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+ exit 1
+ fi
+ fi
+
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+ fi
+ else
+ # The program doesn't exist.
+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit 1
+ fi
+fi\
+"
+}
+# end: func_emit_wrapper_part2
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_arg1=$1
+ fi
+
+ # split this up so that func_emit_cwrapperexe_src
+ # can call each part independently.
+ func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
+ func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
+}
+
+
+# func_to_host_path arg
+#
+# Convert paths to host format when used with build tools.
+# Intended for use with "native" mingw (where libtool itself
+# is running under the msys shell), or in the following cross-
+# build environments:
+# $build $host
+# mingw (msys) mingw [e.g. native]
+# cygwin mingw
+# *nix + wine mingw
+# where wine is equipped with the `winepath' executable.
+# In the native mingw case, the (msys) shell automatically
+# converts paths for any non-msys applications it launches,
+# but that facility isn't available from inside the cwrapper.
+# Similar accommodations are necessary for $host mingw and
+# $build cygwin. Calling this function does no harm for other
+# $host/$build combinations not listed above.
+#
+# ARG is the path (on $build) that should be converted to
+# the proper representation for $host. The result is stored
+# in $func_to_host_path_result.
+func_to_host_path ()
+{
+ func_to_host_path_result="$1"
+ if test -n "$1" ; then
+ case $host in
+ *mingw* )
+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+ case $build in
+ *mingw* ) # actually, msys
+ # awkward: cmd appends spaces to result
+ lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+ func_to_host_path_tmp1=`( cmd //c echo "$1" |\
+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ *cygwin* )
+ func_to_host_path_tmp1=`cygpath -w "$1"`
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ * )
+ # Unfortunately, winepath does not exit with a non-zero
+ # error code, so we are forced to check the contents of
+ # stdout. On the other hand, if the command is not
+ # found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both
+ # error code of zero AND non-empty stdout, which explains
+ # the odd construction:
+ func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ else
+ # Allow warning below.
+ func_to_host_path_result=""
+ fi
+ ;;
+ esac
+ if test -z "$func_to_host_path_result" ; then
+ func_error "Could not determine host path corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_path_result="$1"
+ fi
+ ;;
+ esac
+ fi
+}
+# end: func_to_host_path
+
+# func_to_host_pathlist arg
+#
+# Convert pathlists to host format when used with build tools.
+# See func_to_host_path(), above. This function supports the
+# following $build/$host combinations (but does no harm for
+# combinations not listed here):
+# $build $host
+# mingw (msys) mingw [e.g. native]
+# cygwin mingw
+# *nix + wine mingw
+#
+# Path separators are also converted from $build format to
+# $host format. If ARG begins or ends with a path separator
+# character, it is preserved (but converted to $host format)
+# on output.
+#
+# ARG is a pathlist (on $build) that should be converted to
+# the proper representation on $host. The result is stored
+# in $func_to_host_pathlist_result.
+func_to_host_pathlist ()
+{
+ func_to_host_pathlist_result="$1"
+ if test -n "$1" ; then
+ case $host in
+ *mingw* )
+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_to_host_pathlist_tmp2="$1"
+ # Once set for this call, this variable should not be
+ # reassigned. It is used in tha fallback case.
+ func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e 's|^:*||' -e 's|:*$||'`
+ case $build in
+ *mingw* ) # Actually, msys.
+ # Awkward: cmd appends spaces to result.
+ lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+ func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ *cygwin* )
+ func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ * )
+ # unfortunately, winepath doesn't convert pathlists
+ func_to_host_pathlist_result=""
+ func_to_host_pathlist_oldIFS=$IFS
+ IFS=:
+ for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+ IFS=$func_to_host_pathlist_oldIFS
+ if test -n "$func_to_host_pathlist_f" ; then
+ func_to_host_path "$func_to_host_pathlist_f"
+ if test -n "$func_to_host_path_result" ; then
+ if test -z "$func_to_host_pathlist_result" ; then
+ func_to_host_pathlist_result="$func_to_host_path_result"
+ else
+ func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
+ fi
+ fi
+ fi
+ IFS=:
+ done
+ IFS=$func_to_host_pathlist_oldIFS
+ ;;
+ esac
+ if test -z "$func_to_host_pathlist_result" ; then
+ func_error "Could not determine the host path(s) corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This may break if $1 contains DOS-style drive
+ # specifications. The fix is not to complicate the expression
+ # below, but for the user to provide a working wine installation
+ # with winepath so that path translation in the cross-to-mingw
+ # case works properly.
+ lt_replace_pathsep_nix_to_dos="s|:|;|g"
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+ $SED -e "$lt_replace_pathsep_nix_to_dos"`
+ fi
+ # Now, add the leading and trailing path separators back
+ case "$1" in
+ :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+ ;;
+ esac
+ case "$1" in
+ *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+}
+# end: func_to_host_pathlist
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "$SHELL $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat <<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+# define setmode _setmode
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# define HAVE_SETENV
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+#ifdef _MSC_VER
+# define S_IXUSR _S_IEXEC
+# define stat _stat
+# ifndef _INTPTR_T_DEFINED
+# define intptr_t int
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifdef __CYGWIN__
+# define FOPEN_WB "wb"
+#endif
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#undef LTWRAPPER_DEBUGPRINTF
+#if defined DEBUGWRAPPER
+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+static void
+ltwrapper_debugprintf (const char *fmt, ...)
+{
+ va_list args;
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+}
+#else
+# define LTWRAPPER_DEBUGPRINTF(args)
+#endif
+
+const char *program_name = NULL;
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_opt_process_env_set (const char *arg);
+void lt_opt_process_env_prepend (const char *arg);
+void lt_opt_process_env_append (const char *arg);
+int lt_split_name_value (const char *arg, char** name, char** value);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+
+static const char *script_text_part1 =
+EOF
+
+ func_emit_wrapper_part1 yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ "/' -e 's/$/\\n"/'
+ echo ";"
+ cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+ func_emit_wrapper_part2 yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ "/' -e 's/$/\\n"/'
+ echo ";"
+
+ cat <<EOF
+const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_pathlist "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_pathlist "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test "$fast_install" = yes; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
+
+static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set";
+ /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend";
+ /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append";
+ /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ intptr_t rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
+ LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+
+ /* very simple arg parsing; don't want to rely on getopt */
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+ {
+EOF
+ case "$host" in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ printf ("%s", script_text_part1);
+ printf ("%s", script_text_part2);
+ return 0;
+ }
+ }
+
+ newargz = XMALLOC (char *, argc + 1);
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal ("Couldn't find %s", argv[0]);
+ LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+ tmp_pathspec));
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+ actual_cwrapper_path));
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+ target_name));
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+ {
+ if (argv[i][env_set_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_set_opt_len + 1;
+ lt_opt_process_env_set (p);
+ }
+ else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_set (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_set_opt);
+ continue;
+ }
+ if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+ {
+ if (argv[i][env_prepend_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_prepend_opt_len + 1;
+ lt_opt_process_env_prepend (p);
+ }
+ else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_prepend_opt);
+ continue;
+ }
+ if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+ {
+ if (argv[i][env_append_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_append_opt_len + 1;
+ lt_opt_process_env_append (p);
+ }
+ else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_append (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_append_opt);
+ continue;
+ }
+ if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal ("Unrecognized option in %s namespace: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+ LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+ for (i = 0; i < newargc; i++)
+ {
+ LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+ string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable (const char *path)
+{
+ struct stat st;
+
+ LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
+ path ? (*path ? path : "EMPTY!") : "NULL!"));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
+ path ? (*path ? path : "EMPTY!") : "NULL!"));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+ int has_slash = 0;
+ const char *p;
+ const char *p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char *concat_name;
+
+ LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
+ wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char *path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char *q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR (*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name =
+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+ tmp_pathspec));
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ char *errstr = strerror (errno);
+ lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal ("Could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert (str != NULL);
+ assert (pat != NULL);
+
+ len = strlen (str);
+ patlen = strlen (pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp (str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ int len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ int orig_value_len = strlen (orig_value);
+ int add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+int
+lt_split_name_value (const char *arg, char** name, char** value)
+{
+ const char *p;
+ int len;
+ if (!arg || !*arg)
+ return 1;
+
+ p = strchr (arg, (int)'=');
+
+ if (!p)
+ return 1;
+
+ *value = xstrdup (++p);
+
+ len = strlen (arg) - strlen (*value);
+ *name = XMALLOC (char, len);
+ strncpy (*name, arg, len-1);
+ (*name)[len - 1] = '\0';
+
+ return 0;
+}
+
+void
+lt_opt_process_env_set (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
+ }
+
+ lt_setenv (name, value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_opt_process_env_prepend (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+ char *new_value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+ }
+
+ new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_opt_process_env_append (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+ char *new_value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+ }
+
+ new_value = lt_extend_str (getenv (name), value, 1);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ int len = strlen (new_value);
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[len-1] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append finalize_command " @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ weak_libs="$weak_libs $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname '-L' '' "$arg"
+ dir=$func_stripname_result
+ if test -z "$dir"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+ linker_flags="$linker_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if $opt_duplicate_deps ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+
+ case $linkmode in
+ lib)
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+
+ for pass in $passes; do
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link)
+ libs="$deplibs %DEPLIBS%"
+ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+ ;;
+ esac
+ fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ case $lib in
+ *.la) func_source "$lib" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) deplibs="$deplibs $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ dir=$func_stripname_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $ECHO
+ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because the file extensions .$libext of this argument makes me believe"
+ $ECHO "*** that it is just a static archive that I should not use here."
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+ *) temp_rpath="$temp_rpath$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ $ECHO
+ if test "$linkmode" = prog; then
+ $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $ECHO "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw* | *cegcc*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ if test "X$dlopenmodule" != "X$lib"; then
+ $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $ECHO
+ $ECHO "*** And there doesn't seem to be a static archive available"
+ $ECHO "*** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ elif test -n "$old_library"; then
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes &&
+ test "$hardcode_minus_L" != yes &&
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $ECHO
+ $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $ECHO "*** But as you try to build a module library, libtool will still create "
+ $ECHO "*** a static module, that should work as long as the dlopening application"
+ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $ECHO
+ $ECHO "*** However, this would only work if libtool was able to extract symbol"
+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $ECHO "*** not find such a program. So, this module is probably useless."
+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_dirname "$deplib" "" "."
+ dir="$func_dirname_result"
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test "$pass" = link; then
+ if test "$linkmode" = "prog"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
+ IFS="$save_ifs"
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_minor"
+ lt_irix_increment=no
+ ;;
+ *)
+ func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ irix | nonstopux)
+ if test "X$lt_irix_increment" = "Xno"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ libobjs="$libobjs $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext | *.gcno)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
+ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+ #done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which I believe you do not have"
+ $ECHO "*** because a test_compile did reveal that the linker did not use it for"
+ $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ ;;
+ *)
+ newdeplibs="$newdeplibs $i"
+ ;;
+ esac
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because a test_compile did reveal that the linker did not use this one"
+ $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
+ $ECHO "*** make it link in! You will probably need to install it or some"
+ $ECHO "*** library that it depends on before this library will be fully"
+ $ECHO "*** functional. Installing it before continuing would be even better."
+ fi
+ ;;
+ *)
+ newdeplibs="$newdeplibs $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
+ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+ done
+ fi
+ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
+ $GREP . >/dev/null; then
+ $ECHO
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $ECHO "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library with the System framework
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $ECHO
+ $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
+ $ECHO "*** a static module, that should work as long as the dlopening"
+ $ECHO "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $ECHO
+ $ECHO "*** However, this would only work if libtool was able to extract symbol"
+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $ECHO "*** not find such a program. So, this module is probably useless."
+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $ECHO "*** The inter-library dependencies that have been dropped here will be"
+ $ECHO "*** automatically added whenever a program is linked with this library"
+ $ECHO "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $ECHO
+ $ECHO "*** Since this library must not contain undefined symbols,"
+ $ECHO "*** because either the platform does not support them or"
+ $ECHO "*** it was explicitly requested with -no-undefined,"
+ $ECHO "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ delfiles="$delfiles $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ func_len " $cmd"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ $ECHO 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ $ECHO "$obj" >> $output
+ done
+ $ECHO ')' >> $output
+ delfiles="$delfiles $output"
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ $ECHO "$obj" >> $output
+ done
+ delfiles="$delfiles $output"
+ output=$firstobj\"$file_list_spec$output\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test "X$objlist" = X ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append objlist " $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+ delfiles="$delfiles $output"
+
+ else
+ output=
+ fi
+
+ if ${skipped_export-false}; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+ test -n "$save_libobjs" &&
+ func_verbose "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ if ${skipped_export-false}; then
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
+
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=yes
+ case $host in
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *cegcc)
+ # Disable wrappers for cegcc, we are cross compiling anyway.
+ wrappers_required=no
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $ECHO for shipping.
+ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host" ; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ oldobjs="$oldobjs $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $ECHO "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ oldobjs=
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_verbose "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ newdlfiles="$newdlfiles $libdir/$name"
+ ;;
+ *) newdlfiles="$newdlfiles $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $ECHO >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+{ test "$mode" = link || test "$mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ RM="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) RM="$RM $arg"; rmforce=yes ;;
+ -*) RM="$RM $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if { test -L "$file"; } >/dev/null 2>&1 ||
+ { test -h "$file"; } >/dev/null 2>&1 ||
+ test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+test -z "$mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/2.3-1/config/missing b/2.3-1/config/missing
new file mode 100644
index 00000000..1c8ff704
--- /dev/null
+++ b/2.3-1/config/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/2.3-1/configure b/2.3-1/configure
new file mode 100644
index 00000000..b721d581
--- /dev/null
+++ b/2.3-1/configure
@@ -0,0 +1,21545 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.65 for sci2cLibrary 0.3.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<_LT_EOF
+$*
+_LT_EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+ then
+ break
+ fi
+ done
+ fi
+
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+ else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$ECHO" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ ECHO='print -r'
+ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ ECHO='printf %s\n'
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ ECHO="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ ECHO=echo
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='sci2cLibrary'
+PACKAGE_TARNAME='sci2clibrary'
+PACKAGE_VERSION='0.3'
+PACKAGE_STRING='sci2cLibrary 0.3'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+LIBMATH
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+ac_ct_F77
+FFLAGS
+F77
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+lt_ECHO
+RANLIB
+AR
+OBJDUMP
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+LIBTOOL
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LN_S
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+enable_dependency_tracking
+with_gnu_ld
+enable_libtool_lock
+with_stdc99
+with_blas
+enable_debug
+enable_stopOnWarning
+with_fftw
+with_atlas_library
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+F77
+FFLAGS
+CXX
+CXXFLAGS
+CCC
+CXXCPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures sci2cLibrary 0.3 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/sci2clibrary]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of sci2cLibrary 0.3:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-debug Use verbose messages through compilation process
+ --enable-stop-on-warning
+ Stop the compilation on the first warning found in
+ the C/C++ code
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-stdc99 Enable standard C99 (Used in complex implementation)
+ --with-blas Enable call to blas library (Used in matrix
+ operations)
+ --with-fftw compile with the FFTW 3 library
+ --with-atlas-library=DIR Atlas library files are in DIR and we use Atlas
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+sci2cLibrary configure 0.3
+generated by GNU Autoconf 2.65
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_f77_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_f77_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_f77_try_compile
+
+# ac_fn_f77_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_f77_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_f77_try_link
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by sci2cLibrary $as_me 0.3, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_aux_dir=
+for ac_dir in config "$srcdir"/config; do
+ for ac_t in install-sh install.sh shtool; do
+ if test -f "$ac_dir/$ac_t"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/$ac_t -c"
+ break 2
+ fi
+ done
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+
+RM='rm -f'
+SCIDIR=$srcdir
+SCIDIRFULL=`cd $SCIDIR && pwd`
+
+ac_config_headers="$ac_config_headers includes/machine.h"
+
+
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+#AC_PACKAGE_VERSION([4.0])
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='sci2clibrary'
+ VERSION='0.3'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+ # Not using -Werror because we override {C,F}FLAGS in order to disable optimisation
+
+### LibTool
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.6'
+macro_revision='1.3012'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:4805: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:4808: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:4811: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 6006 "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; pic_mode="$withval"
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7532: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:7536: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7871: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:7875: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7976: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:7980: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:8031: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:8035: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu)
+ link_all_deplibs=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ link_all_deplibs=no
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
+$as_echo "$archive_cmds_need_lc" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = x""yes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 10414 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 10510 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+### Fortran Compiler
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_F77" && break
+done
+
+ if test "x$ac_ct_F77" = x; then
+ F77=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ F77=$ac_ct_F77
+ fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ FFLAGS=-g
+cat > conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+ ac_cv_prog_f77_g=yes
+else
+ ac_cv_prog_f77_g=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+ G77=yes
+else
+ G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_F77" && break
+done
+
+ if test "x$ac_ct_F77" = x; then
+ F77=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ F77=$ac_ct_F77
+ fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ FFLAGS=-g
+cat > conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+ ac_cv_prog_f77_g=yes
+else
+ ac_cv_prog_f77_g=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+ G77=yes
+else
+ G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+
+
+
+ ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_direct_absolute_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+inherit_rpath_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+ # save warnings/boilerplate of simple test code
+ ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${F77-"f77"}
+ compiler=$CC
+ compiler_F77=$CC
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ GCC=$G77
+ if test -n "$compiler"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+ GCC_F77="$G77"
+ LD_F77="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_F77=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic_F77='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='--shared'
+ lt_prog_compiler_static_F77='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fpic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-qpic'
+ lt_prog_compiler_static_F77='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ lt_prog_compiler_wl_F77=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic_F77='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_F77='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_F77='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_F77" >&5
+$as_echo "$lt_prog_compiler_pic_F77" >&6; }
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11613: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:11617: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works_F77=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works_F77=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works_F77=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
+ :
+else
+ lt_prog_compiler_static_F77=
+fi
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11712: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:11716: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11764: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:11768: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ always_export_symbols_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ compiler_needs_object_F77=no
+ enable_shared_with_static_runtimes_F77=no
+ export_dynamic_flag_spec_F77=
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic_F77=no
+ hardcode_direct_F77=no
+ hardcode_direct_absolute_F77=no
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ inherit_rpath_F77=no
+ link_all_deplibs_F77=unknown
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ old_archive_from_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ thread_safe_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu)
+ link_all_deplibs_F77=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77=''
+ ;;
+ m68k)
+ archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec_F77=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object_F77=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_F77=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_F77=''
+ hardcode_direct_F77=yes
+ hardcode_direct_absolute_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ file_list_spec_F77='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct_F77=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ link_all_deplibs_F77=no
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec_F77='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat > conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+if ac_fn_f77_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat > conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+if ac_fn_f77_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77='$convenience'
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77=''
+ ;;
+ m68k)
+ archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ allow_undefined_flag_F77="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs_F77=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+ hardcode_direct_absolute_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ *)
+ hardcode_direct_F77=yes
+ hardcode_direct_absolute_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat > conftest.$ac_ext <<_ACEOF
+int foo(void) {}
+_ACEOF
+if ac_fn_f77_try_link "$LINENO"; then :
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc_F77='no'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ inherit_rpath_F77=yes
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ hardcode_direct_absolute_F77=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc_F77='no'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ archive_cmds_need_lc_F77='no'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_F77='${wl}-z,text'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_F77='${wl}-z,text'
+ allow_undefined_flag_F77='${wl}-z,nodefs'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-R,$libdir'
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec_F77='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5
+$as_echo "$ld_shlibs_F77" >&6; }
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+with_gnu_ld_F77=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ pic_flag=$lt_prog_compiler_pic_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_F77" >&5
+$as_echo "$archive_cmds_need_lc_F77" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\""
+ cat > conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+if ac_fn_f77_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" ||
+ test -n "$runpath_var_F77" ||
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct_F77" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5
+$as_echo "$hardcode_action_F77" >&6; }
+
+if test "$hardcode_action_F77" = relink ||
+ test "$inherit_rpath_F77" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+### C Compiler
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+### C++ Compiler
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+else
+ CXXFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+else
+ CXXFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+_lt_caught_CXX_error=yes; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+ _lt_caught_CXX_error=yes
+fi
+
+
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+ # save warnings/boilerplate of simple test code
+ ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ compiler_CXX=$CC
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+ else
+ lt_prog_compiler_no_builtin_flag_CXX=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ ld_shlibs_CXX=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_direct_absolute_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ file_list_spec_CXX='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec_CXX='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ always_export_symbols_CXX=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX='$convenience'
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+ allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+
+ else
+ ld_shlibs_CXX=no
+ fi
+
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_direct_absolute_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ inherit_rpath_CXX=yes
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [1-5]* | *pgcpp\ [1-5]*)
+ prelink_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+ old_archive_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+ $RANLIB $oldlib'
+ archive_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 will use weak symbols
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ xl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object_CXX=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ ld_shlibs_CXX=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ hardcode_direct_absolute_CXX=yes
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=echo
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ ;;
+ esac
+
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+ GCC_CXX="$GXX"
+ LD_CXX="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" ||
+ test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ postdeps_CXX='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ postdeps_CXX='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic_CXX='-fPIC -shared'
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[4-9]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ xlc* | xlC*)
+ # IBM XL 8.0 on PPC
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-qpic'
+ lt_prog_compiler_static_CXX='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic_CXX='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16975: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:16979: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17074: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:17078: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17126: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:17130: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix[4-9]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ linux* | k*bsd*-gnu)
+ link_all_deplibs_CXX=no
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+ exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5
+$as_echo "$archive_cmds_need_lc_CXX" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+ test -n "$runpath_var_CXX" ||
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+ test "$inherit_rpath_CXX" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# for "subdir-objects"
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 understands -c and -o together" >&5
+$as_echo_n "checking whether $F77 understands -c and -o together... " >&6; }
+if test "${ac_cv_prog_f77_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+# We test twice because some compilers refuse to overwrite an existing
+# `.o' file with `-o', although they will create one.
+ac_try='$F77 $FFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext &&
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ ac_cv_prog_f77_c_o=yes
+else
+ ac_cv_prog_f77_c_o=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_c_o" >&5
+$as_echo "$ac_cv_prog_f77_c_o" >&6; }
+if test $ac_cv_prog_f77_c_o = no; then
+
+$as_echo "#define F77_NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+### Need to check for math lib and symbols
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing atan" >&5
+$as_echo_n "checking for library containing atan... " >&6; }
+if test "${ac_cv_search_atan+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char atan ();
+int
+main ()
+{
+return atan ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' m; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_atan=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if test "${ac_cv_search_atan+set}" = set; then :
+ break
+fi
+done
+if test "${ac_cv_search_atan+set}" = set; then :
+
+else
+ ac_cv_search_atan=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_atan" >&5
+$as_echo "$ac_cv_search_atan" >&6; }
+ac_res=$ac_cv_search_atan
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ LIBMATH="-lm"
+fi
+
+
+
+
+#################################
+## all the --with-* argument help
+#################################
+
+# Check whether --with-stdc99 was given.
+if test "${with_stdc99+set}" = set; then :
+ withval=$with_stdc99;
+fi
+
+if test "$with_stdc99" = yes; then
+ for ac_header in complex.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "complex.h" "ac_cv_header_complex_h" "$ac_includes_default"
+if test "x$ac_cv_header_complex_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_COMPLEX_H 1
+_ACEOF
+
+fi
+
+done
+
+ CFLAGS="$CFLAGS -std=c99"
+fi
+
+
+# Check whether --with-blas was given.
+if test "${with_blas+set}" = set; then :
+ withval=$with_blas;
+fi
+
+if test "$with_blas" = no; then
+ CFLAGS="$CFLAGS -DWITHOUT_BLAS"
+fi
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+ enableval=$enable_debug;
+fi
+
+if test "$enable_debug" = yes; then
+ CFLAGS="$CFLAGS -Wall -Wextra -pedantic -Wconversion -Wformat -Wshadow \
+ -Wpointer-arith -Wcast-align -Wmissing-prototypes \
+ -Wmissing-declarations"
+fi
+
+# Check whether --enable-stopOnWarning was given.
+if test "${enable_stopOnWarning+set}" = set; then :
+ enableval=$enable_stopOnWarning;
+fi
+
+if test "$enable_stop_on_warning" = yes; then
+ CFLAGS="$CFLAGS -Werror"
+fi
+
+###########�FORTRAN FLAGS ######################
+
+######################
+######## With F77 / G77 / GFortran ...
+######################
+
+if test -n "$F77"; then
+ FFLAGS="$FFLAGS -g -Wall "
+fi
+
+###########�C FLAGS ######################
+
+######################
+######## With GCC ...
+######################
+ CFLAGS="$CFLAGS"
+
+
+##############################################################
+## test for functions in standard C library and C math library
+##############################################################
+
+# Provided by math.h
+#AC_CHECK_FUNCS([pow] [sqrt] [finite] [floor])
+
+#AC_CHECK_FUNC([exp10],,[
+# AC_DEFINE([log_10_],[2.3025850929940456840179914546844],[Provide a macro to do exp10])
+# AC_DEFINE([exp10(x)],[exp( (log_10_) * (x) )],[Provide a macro to do exp10])
+# ])
+
+########################
+## test for header files
+########################
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ bool e = &s;
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+# if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a runtime
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+# endif
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+
+#################
+## FFTW
+#################
+
+
+# Check whether --with-fftw was given.
+if test "${with_fftw+set}" = set; then :
+ withval=$with_fftw;
+fi
+
+if test "$with_fftw" = yes; then
+ # AC_FFTW()
+ echo
+fi
+
+#################
+## atlas
+#################
+
+# check user arguments
+USER_ATLAS_LIB_PATH=""
+
+
+# Check whether --with-atlas-library was given.
+if test "${with_atlas_library+set}" = set; then :
+ withval=$with_atlas_library; USER_ATLAS_LIB_PATH=$withval
+ CC_OPTIONS="$CC_OPTIONS -DWITH_ATLAS"
+fi
+
+if test "$USER_ATLAS_LIB_PATH" = ""; then
+ WHICH_BLAS="STD_BLAS"
+ IN_ATLAS=LOCAL
+else
+ echo "Using Atlas library"
+ WHICH_BLAS="ATLAS_LAPACKBLAS"
+ ATLAS_DIR=$USER_ATLAS_LIB_PATH
+ IN_ATLAS=ATLAS
+
+$as_echo "#define WITH_ATLAS /**/" >>confdefs.h
+
+fi
+
+#######################
+###### Creation of the header file (machine.h)
+#######################
+
+#operations/multiplication/Makefile
+#operations/division/Makefile
+
+ac_config_files="$ac_config_files Makefile src/fortran/blas/Makefile src/fortran/lapack/Makefile src/c/type/Makefile src/c/operations/Makefile src/c/operations/addition/Makefile src/c/operations/subtraction/Makefile src/c/operations/division/Makefile src/c/operations/multiplication/Makefile src/c/matrixOperations/Makefile src/c/matrixOperations/multiplication/Makefile src/c/matrixOperations/division/Makefile src/c/matrixOperations/cat/Makefile src/c/matrixOperations/transpose/Makefile src/c/matrixOperations/trace/Makefile src/c/matrixOperations/hilb/Makefile src/c/matrixOperations/expm/Makefile src/c/matrixOperations/eye/Makefile src/c/matrixOperations/ones/Makefile src/c/matrixOperations/infiniteNorm/Makefile src/c/matrixOperations/inversion/Makefile src/c/matrixOperations/jmat/Makefile src/c/matrixOperations/chol/Makefile src/c/matrixOperations/determ/Makefile src/c/matrixOperations/dist/Makefile src/c/matrixOperations/fill/Makefile src/c/matrixOperations/magnitude/Makefile src/c/matrixOperations/squaredMagnitude/Makefile src/c/matrixOperations/logm/Makefile src/c/matrixOperations/powm/Makefile src/c/matrixOperations/zeros/Makefile src/c/matrixOperations/spec/Makefile src/c/matrixOperations/spec2/Makefile src/c/implicitList/Makefile src/c/elementaryFunctions/Makefile src/c/elementaryFunctions/cos/Makefile src/c/elementaryFunctions/cosh/Makefile src/c/elementaryFunctions/acos/Makefile src/c/elementaryFunctions/acosh/Makefile src/c/elementaryFunctions/sin/Makefile src/c/elementaryFunctions/sinh/Makefile src/c/elementaryFunctions/asin/Makefile src/c/elementaryFunctions/asinh/Makefile src/c/elementaryFunctions/tan/Makefile src/c/elementaryFunctions/tanh/Makefile src/c/elementaryFunctions/atan/Makefile src/c/elementaryFunctions/atan2/Makefile src/c/elementaryFunctions/atanh/Makefile src/c/elementaryFunctions/log/Makefile src/c/elementaryFunctions/log1p/Makefile src/c/elementaryFunctions/log10/Makefile src/c/elementaryFunctions/exp/Makefile src/c/elementaryFunctions/exp10/Makefile src/c/elementaryFunctions/sqrt/Makefile src/c/elementaryFunctions/lnp1m1/Makefile src/c/elementaryFunctions/pow/Makefile src/c/elementaryFunctions/ceil/Makefile src/c/elementaryFunctions/fix/Makefile src/c/elementaryFunctions/floor/Makefile src/c/elementaryFunctions/int/Makefile src/c/elementaryFunctions/round/Makefile src/c/auxiliaryFunctions/Makefile src/c/auxiliaryFunctions/abs/Makefile src/c/auxiliaryFunctions/find/Makefile src/c/auxiliaryFunctions/find2d/Makefile src/c/auxiliaryFunctions/frexp/Makefile src/c/auxiliaryFunctions/isempty/Makefile src/c/auxiliaryFunctions/isnan/Makefile src/c/auxiliaryFunctions/rand/Makefile src/c/auxiliaryFunctions/sign/Makefile src/c/auxiliaryFunctions/size/Makefile src/c/auxiliaryFunctions/length/Makefile src/c/auxiliaryFunctions/type/Makefile src/c/auxiliaryFunctions/pythag/Makefile src/c/auxiliaryFunctions/conj/Makefile src/c/statisticsFunctions/Makefile src/c/statisticsFunctions/mean/Makefile src/c/statisticsFunctions/meanf/Makefile src/c/statisticsFunctions/stdevf/Makefile src/c/statisticsFunctions/prod/Makefile src/c/statisticsFunctions/sum/Makefile src/c/statisticsFunctions/variance/Makefile src/c/statisticsFunctions/variancef/Makefile src/c/statisticsFunctions/max/Makefile src/c/statisticsFunctions/min/Makefile src/c/string/Makefile src/c/string/disp/Makefile src/c/string/string/Makefile src/c/signalProcessing/Makefile src/c/signalProcessing/fft/Makefile src/c/signalProcessing/ifft/Makefile src/c/signalProcessing/levin/Makefile src/c/signalProcessing/conv/Makefile src/c/signalProcessing/conv2d/Makefile src/c/signalProcessing/hilbert/Makefile src/c/signalProcessing/crossCorr/Makefile src/c/signalProcessing/lpc2cep/Makefile src/c/signalProcessing/lev/Makefile src/c/signalProcessing/fftshift/Makefile"
+
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by sci2cLibrary $as_me 0.3, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+sci2cLibrary config.status 0.3
+configured by $0, generated by GNU Autoconf 2.65,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
+enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
+host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
+host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
+host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
+build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
+build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
+build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
+SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
+Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
+GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
+EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
+FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
+LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
+NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
+LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
+exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
+AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
+GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
+SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
+ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
+need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
+LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
+libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
+version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
+striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`'
+predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`'
+postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`'
+LD_F77='`$ECHO "X$LD_F77" | $Xsed -e "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds_F77='`$ECHO "X$old_archive_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_F77='`$ECHO "X$compiler_F77" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+GCC_F77='`$ECHO "X$GCC_F77" | $Xsed -e "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_F77='`$ECHO "X$lt_prog_compiler_no_builtin_flag_F77" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_F77='`$ECHO "X$lt_prog_compiler_wl_F77" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_F77='`$ECHO "X$lt_prog_compiler_pic_F77" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static_F77='`$ECHO "X$lt_prog_compiler_static_F77" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_F77='`$ECHO "X$lt_cv_prog_compiler_c_o_F77" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc_F77='`$ECHO "X$archive_cmds_need_lc_F77" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_F77='`$ECHO "X$enable_shared_with_static_runtimes_F77" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_F77='`$ECHO "X$export_dynamic_flag_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec_F77='`$ECHO "X$whole_archive_flag_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object_F77='`$ECHO "X$compiler_needs_object_F77" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_F77='`$ECHO "X$old_archive_from_new_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_F77='`$ECHO "X$old_archive_from_expsyms_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_F77='`$ECHO "X$archive_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds_F77='`$ECHO "X$archive_expsym_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds_F77='`$ECHO "X$module_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds_F77='`$ECHO "X$module_expsym_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld_F77='`$ECHO "X$with_gnu_ld_F77" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag_F77='`$ECHO "X$allow_undefined_flag_F77" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag_F77='`$ECHO "X$no_undefined_flag_F77" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_F77='`$ECHO "X$hardcode_libdir_flag_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_F77='`$ECHO "X$hardcode_libdir_flag_spec_ld_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator_F77='`$ECHO "X$hardcode_libdir_separator_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_F77='`$ECHO "X$hardcode_direct_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute_F77='`$ECHO "X$hardcode_direct_absolute_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L_F77='`$ECHO "X$hardcode_minus_L_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_F77='`$ECHO "X$hardcode_shlibpath_var_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic_F77='`$ECHO "X$hardcode_automatic_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath_F77='`$ECHO "X$inherit_rpath_F77" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs_F77='`$ECHO "X$link_all_deplibs_F77" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path_F77='`$ECHO "X$fix_srcfile_path_F77" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols_F77='`$ECHO "X$always_export_symbols_F77" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds_F77='`$ECHO "X$export_symbols_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms_F77='`$ECHO "X$exclude_expsyms_F77" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms_F77='`$ECHO "X$include_expsyms_F77" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds_F77='`$ECHO "X$prelink_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec_F77='`$ECHO "X$file_list_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action_F77='`$ECHO "X$hardcode_action_F77" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_F77='`$ECHO "X$compiler_lib_search_dirs_F77" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+predep_objects_F77='`$ECHO "X$predep_objects_F77" | $Xsed -e "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+postdep_objects_F77='`$ECHO "X$postdep_objects_F77" | $Xsed -e "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+predeps_F77='`$ECHO "X$predeps_F77" | $Xsed -e "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+postdeps_F77='`$ECHO "X$postdeps_F77" | $Xsed -e "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_lib_search_path_F77='`$ECHO "X$compiler_lib_search_path_F77" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+SHELL \
+ECHO \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_F77 \
+LD_CXX \
+compiler_F77 \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_F77 \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_wl_F77 \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_pic_F77 \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_static_F77 \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_F77 \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_F77 \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_F77 \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_F77 \
+compiler_needs_object_CXX \
+with_gnu_ld_F77 \
+with_gnu_ld_CXX \
+allow_undefined_flag_F77 \
+allow_undefined_flag_CXX \
+no_undefined_flag_F77 \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_F77 \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_flag_spec_ld_F77 \
+hardcode_libdir_flag_spec_ld_CXX \
+hardcode_libdir_separator_F77 \
+hardcode_libdir_separator_CXX \
+fix_srcfile_path_F77 \
+fix_srcfile_path_CXX \
+exclude_expsyms_F77 \
+exclude_expsyms_CXX \
+include_expsyms_F77 \
+include_expsyms_CXX \
+file_list_spec_F77 \
+file_list_spec_CXX \
+compiler_lib_search_dirs_F77 \
+compiler_lib_search_dirs_CXX \
+predep_objects_F77 \
+predep_objects_CXX \
+postdep_objects_F77 \
+postdep_objects_CXX \
+predeps_F77 \
+predeps_CXX \
+postdeps_F77 \
+postdeps_CXX \
+compiler_lib_search_path_F77 \
+compiler_lib_search_path_CXX; do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+old_archive_cmds_F77 \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_F77 \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_F77 \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_F77 \
+archive_cmds_CXX \
+archive_expsym_cmds_F77 \
+archive_expsym_cmds_CXX \
+module_cmds_F77 \
+module_cmds_CXX \
+module_expsym_cmds_F77 \
+module_expsym_cmds_CXX \
+export_symbols_cmds_F77 \
+export_symbols_cmds_CXX \
+prelink_cmds_F77 \
+prelink_cmds_CXX; do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
+ ;;
+esac
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "includes/machine.h") CONFIG_HEADERS="$CONFIG_HEADERS includes/machine.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "src/fortran/blas/Makefile") CONFIG_FILES="$CONFIG_FILES src/fortran/blas/Makefile" ;;
+ "src/fortran/lapack/Makefile") CONFIG_FILES="$CONFIG_FILES src/fortran/lapack/Makefile" ;;
+ "src/c/type/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/type/Makefile" ;;
+ "src/c/operations/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/operations/Makefile" ;;
+ "src/c/operations/addition/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/operations/addition/Makefile" ;;
+ "src/c/operations/subtraction/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/operations/subtraction/Makefile" ;;
+ "src/c/operations/division/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/operations/division/Makefile" ;;
+ "src/c/operations/multiplication/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/operations/multiplication/Makefile" ;;
+ "src/c/matrixOperations/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/Makefile" ;;
+ "src/c/matrixOperations/multiplication/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/multiplication/Makefile" ;;
+ "src/c/matrixOperations/division/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/division/Makefile" ;;
+ "src/c/matrixOperations/cat/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/cat/Makefile" ;;
+ "src/c/matrixOperations/transpose/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/transpose/Makefile" ;;
+ "src/c/matrixOperations/trace/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/trace/Makefile" ;;
+ "src/c/matrixOperations/hilb/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/hilb/Makefile" ;;
+ "src/c/matrixOperations/expm/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/expm/Makefile" ;;
+ "src/c/matrixOperations/eye/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/eye/Makefile" ;;
+ "src/c/matrixOperations/ones/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/ones/Makefile" ;;
+ "src/c/matrixOperations/infiniteNorm/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/infiniteNorm/Makefile" ;;
+ "src/c/matrixOperations/inversion/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/inversion/Makefile" ;;
+ "src/c/matrixOperations/jmat/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/jmat/Makefile" ;;
+ "src/c/matrixOperations/chol/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/chol/Makefile" ;;
+ "src/c/matrixOperations/determ/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/determ/Makefile" ;;
+ "src/c/matrixOperations/dist/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/dist/Makefile" ;;
+ "src/c/matrixOperations/fill/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/fill/Makefile" ;;
+ "src/c/matrixOperations/magnitude/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/magnitude/Makefile" ;;
+ "src/c/matrixOperations/squaredMagnitude/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/squaredMagnitude/Makefile" ;;
+ "src/c/matrixOperations/logm/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/logm/Makefile" ;;
+ "src/c/matrixOperations/powm/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/powm/Makefile" ;;
+ "src/c/matrixOperations/zeros/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/zeros/Makefile" ;;
+ "src/c/matrixOperations/spec/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/spec/Makefile" ;;
+ "src/c/matrixOperations/spec2/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/matrixOperations/spec2/Makefile" ;;
+ "src/c/implicitList/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/implicitList/Makefile" ;;
+ "src/c/elementaryFunctions/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/Makefile" ;;
+ "src/c/elementaryFunctions/cos/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/cos/Makefile" ;;
+ "src/c/elementaryFunctions/cosh/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/cosh/Makefile" ;;
+ "src/c/elementaryFunctions/acos/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/acos/Makefile" ;;
+ "src/c/elementaryFunctions/acosh/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/acosh/Makefile" ;;
+ "src/c/elementaryFunctions/sin/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/sin/Makefile" ;;
+ "src/c/elementaryFunctions/sinh/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/sinh/Makefile" ;;
+ "src/c/elementaryFunctions/asin/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/asin/Makefile" ;;
+ "src/c/elementaryFunctions/asinh/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/asinh/Makefile" ;;
+ "src/c/elementaryFunctions/tan/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/tan/Makefile" ;;
+ "src/c/elementaryFunctions/tanh/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/tanh/Makefile" ;;
+ "src/c/elementaryFunctions/atan/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/atan/Makefile" ;;
+ "src/c/elementaryFunctions/atan2/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/atan2/Makefile" ;;
+ "src/c/elementaryFunctions/atanh/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/atanh/Makefile" ;;
+ "src/c/elementaryFunctions/log/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/log/Makefile" ;;
+ "src/c/elementaryFunctions/log1p/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/log1p/Makefile" ;;
+ "src/c/elementaryFunctions/log10/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/log10/Makefile" ;;
+ "src/c/elementaryFunctions/exp/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/exp/Makefile" ;;
+ "src/c/elementaryFunctions/exp10/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/exp10/Makefile" ;;
+ "src/c/elementaryFunctions/sqrt/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/sqrt/Makefile" ;;
+ "src/c/elementaryFunctions/lnp1m1/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/lnp1m1/Makefile" ;;
+ "src/c/elementaryFunctions/pow/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/pow/Makefile" ;;
+ "src/c/elementaryFunctions/ceil/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/ceil/Makefile" ;;
+ "src/c/elementaryFunctions/fix/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/fix/Makefile" ;;
+ "src/c/elementaryFunctions/floor/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/floor/Makefile" ;;
+ "src/c/elementaryFunctions/int/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/int/Makefile" ;;
+ "src/c/elementaryFunctions/round/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/elementaryFunctions/round/Makefile" ;;
+ "src/c/auxiliaryFunctions/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/Makefile" ;;
+ "src/c/auxiliaryFunctions/abs/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/abs/Makefile" ;;
+ "src/c/auxiliaryFunctions/find/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/find/Makefile" ;;
+ "src/c/auxiliaryFunctions/find2d/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/find2d/Makefile" ;;
+ "src/c/auxiliaryFunctions/frexp/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/frexp/Makefile" ;;
+ "src/c/auxiliaryFunctions/isempty/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/isempty/Makefile" ;;
+ "src/c/auxiliaryFunctions/isnan/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/isnan/Makefile" ;;
+ "src/c/auxiliaryFunctions/rand/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/rand/Makefile" ;;
+ "src/c/auxiliaryFunctions/sign/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/sign/Makefile" ;;
+ "src/c/auxiliaryFunctions/size/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/size/Makefile" ;;
+ "src/c/auxiliaryFunctions/length/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/length/Makefile" ;;
+ "src/c/auxiliaryFunctions/type/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/type/Makefile" ;;
+ "src/c/auxiliaryFunctions/pythag/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/pythag/Makefile" ;;
+ "src/c/auxiliaryFunctions/conj/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/auxiliaryFunctions/conj/Makefile" ;;
+ "src/c/statisticsFunctions/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/Makefile" ;;
+ "src/c/statisticsFunctions/mean/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/mean/Makefile" ;;
+ "src/c/statisticsFunctions/meanf/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/meanf/Makefile" ;;
+ "src/c/statisticsFunctions/stdevf/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/stdevf/Makefile" ;;
+ "src/c/statisticsFunctions/prod/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/prod/Makefile" ;;
+ "src/c/statisticsFunctions/sum/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/sum/Makefile" ;;
+ "src/c/statisticsFunctions/variance/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/variance/Makefile" ;;
+ "src/c/statisticsFunctions/variancef/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/variancef/Makefile" ;;
+ "src/c/statisticsFunctions/max/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/max/Makefile" ;;
+ "src/c/statisticsFunctions/min/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/statisticsFunctions/min/Makefile" ;;
+ "src/c/string/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/string/Makefile" ;;
+ "src/c/string/disp/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/string/disp/Makefile" ;;
+ "src/c/string/string/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/string/string/Makefile" ;;
+ "src/c/signalProcessing/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/Makefile" ;;
+ "src/c/signalProcessing/fft/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/fft/Makefile" ;;
+ "src/c/signalProcessing/ifft/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/ifft/Makefile" ;;
+ "src/c/signalProcessing/levin/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/levin/Makefile" ;;
+ "src/c/signalProcessing/conv/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/conv/Makefile" ;;
+ "src/c/signalProcessing/conv2d/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/conv2d/Makefile" ;;
+ "src/c/signalProcessing/hilbert/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/hilbert/Makefile" ;;
+ "src/c/signalProcessing/crossCorr/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/crossCorr/Makefile" ;;
+ "src/c/signalProcessing/lpc2cep/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/lpc2cep/Makefile" ;;
+ "src/c/signalProcessing/lev/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/lev/Makefile" ;;
+ "src/c/signalProcessing/fftshift/Makefile") CONFIG_FILES="$CONFIG_FILES src/c/signalProcessing/fftshift/Makefile" ;;
+
+ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="F77 CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that does not interpret backslashes.
+ECHO=$lt_ECHO
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1+=\$2"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+ ;;
+ esac
+
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+
+ cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: F77
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_F77
+
+# A language specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_F77
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_F77
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_F77
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_F77
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_F77
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_F77
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_F77
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_F77
+postdep_objects=$lt_postdep_objects_F77
+predeps=$lt_predeps_F77
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# ### END LIBTOOL TAG CONFIG: F77
+_LT_EOF
+
+
+ cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+echo ""
+
+echo "Sci2C is configured as follows. Please verify that this configuration"
+echo "matches your expectations."
+echo ""
+echo "Host system type : $host"
+echo ""
+echo " Option Value"
+echo "-------------------------------------------------------------------------"
+echo "Options:"
+echo "Atlas library (--with-atlas-library) ............ : $USER_ATLAS_LIB_PATH"
+echo "Use FFTW (--with-fftw) .......................... : $with_fftw"
+
+echo ""
+
+echo ""
+echo "Options used to compile and link:"
+echo " PREFIX = $PREFIX_DIR"
+echo " EXEC-PREFIX = $EXEC_PREFIX_DIR"
+echo " CC = $CC"
+echo " CFLAGS = $CFLAGS"
+#echo " CPP = $CPP"
+#echo " CPPFLAGS = $CPPFLAGS"
+echo " PCFLAGS = $PCFLAGS"
+echo " DEFS = $DEFS"
+echo " LD = $LD"
+echo " LDFLAGS = $LDFLAGS"
+echo " LIBS = $LIBS"
+echo " LIBMATH = $LIBMATH"
+echo " CXX = $CXX"
+echo " CXXFLAGS = $CXXFLAGS"
+echo " F77 = $F77"
+echo " FFLAGS = $FFLAGS"
+echo " F77_LDFLAGS = $F77_LDFLAGS"
+echo ""
diff --git a/2.3-1/configure.ac b/2.3-1/configure.ac
new file mode 100644
index 00000000..63789ea9
--- /dev/null
+++ b/2.3-1/configure.ac
@@ -0,0 +1,297 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+AC_INIT([sci2cLibrary],[0.3],[])
+AC_CONFIG_AUX_DIR(config)
+AC_PREREQ(2.61)
+
+RM='rm -f'
+SCIDIR=$srcdir
+SCIDIRFULL=`cd $SCIDIR && pwd`
+
+AC_CONFIG_HEADERS([includes/machine.h])
+
+
+AM_PROG_INSTALL_STRIP
+AC_PROG_LN_S
+#AC_PACKAGE_VERSION([4.0])
+
+AC_CANONICAL_HOST
+
+AM_MAINTAINER_MODE
+AM_INIT_AUTOMAKE([-Wall foreign]) # Not using -Werror because we override {C,F}FLAGS in order to disable optimisation
+
+### LibTool
+AC_PROG_LIBTOOL
+### Fortran Compiler
+AC_PROG_F77
+### C Compiler
+AC_PROG_CC
+### C++ Compiler
+AC_PROG_CXX
+
+# for "subdir-objects"
+AM_PROG_CC_C_O
+AC_PROG_F77_C_O
+
+### Need to check for math lib and symbols
+AC_SEARCH_LIBS(atan, m, LIBMATH="-lm")
+AC_SUBST(LIBMATH)
+
+
+#################################
+## all the --with-* argument help
+#################################
+AC_ARG_WITH(stdc99,
+ AS_HELP_STRING([--with-stdc99],[Enable standard C99 (Used in complex implementation)]))
+if test "$with_stdc99" = yes; then
+ AC_CHECK_HEADERS([complex.h])
+ CFLAGS="$CFLAGS -std=c99"
+fi
+
+AC_ARG_WITH(blas,
+ AS_HELP_STRING([--with-blas],[Enable call to blas library (Used in matrix operations)]))
+if test "$with_blas" = no; then
+ CFLAGS="$CFLAGS -DWITHOUT_BLAS"
+fi
+
+AC_ARG_ENABLE(debug,
+ AS_HELP_STRING([--enable-debug],[Use verbose messages through compilation process]))
+if test "$enable_debug" = yes; then
+ CFLAGS="$CFLAGS -Wall -Wextra -pedantic -Wconversion -Wformat -Wshadow \
+ -Wpointer-arith -Wcast-align -Wmissing-prototypes \
+ -Wmissing-declarations"
+fi
+
+AC_ARG_ENABLE(stopOnWarning,
+ AS_HELP_STRING([--enable-stop-on-warning],[Stop the compilation on the first warning found in the C/C++ code]))
+if test "$enable_stop_on_warning" = yes; then
+ CFLAGS="$CFLAGS -Werror"
+fi
+
+###########�FORTRAN FLAGS ######################
+
+######################
+######## With F77 / G77 / GFortran ...
+######################
+
+if test -n "$F77"; then
+ FFLAGS="$FFLAGS -g -Wall "
+fi
+
+###########�C FLAGS ######################
+
+######################
+######## With GCC ...
+######################
+ CFLAGS="$CFLAGS"
+
+
+##############################################################
+## test for functions in standard C library and C math library
+##############################################################
+
+# Provided by math.h
+#AC_CHECK_FUNCS([pow] [sqrt] [finite] [floor])
+
+#AC_CHECK_FUNC([exp10],,[
+# AC_DEFINE([log_10_],[2.3025850929940456840179914546844],[Provide a macro to do exp10])
+# AC_DEFINE([exp10(x)],[exp( (log_10_) * (x) )],[Provide a macro to do exp10])
+# ])
+
+########################
+## test for header files
+########################
+
+AC_HEADER_STDBOOL
+
+#################
+## FFTW
+#################
+
+AC_ARG_WITH(fftw,
+ [ --with-fftw compile with the FFTW 3 library ])
+if test "$with_fftw" = yes; then
+ # AC_FFTW()
+ echo
+fi
+
+#################
+## atlas
+#################
+
+# check user arguments
+USER_ATLAS_LIB_PATH=""
+
+AC_ARG_WITH(atlas-library,
+ [ --with-atlas-library=DIR Atlas library files are in DIR and we use Atlas ],
+ [ USER_ATLAS_LIB_PATH=$withval
+ CC_OPTIONS="$CC_OPTIONS -DWITH_ATLAS"],
+ )
+if test "$USER_ATLAS_LIB_PATH" = ""; then
+ WHICH_BLAS="STD_BLAS"
+ IN_ATLAS=LOCAL
+else
+ echo "Using Atlas library"
+ WHICH_BLAS="ATLAS_LAPACKBLAS"
+ ATLAS_DIR=$USER_ATLAS_LIB_PATH
+ IN_ATLAS=ATLAS
+ AC_DEFINE([WITH_ATLAS],[],[With the Atlas Lib])
+fi
+
+#######################
+###### Creation of the header file (machine.h)
+#######################
+
+#operations/multiplication/Makefile
+#operations/division/Makefile
+
+AC_CONFIG_FILES([
+Makefile
+src/fortran/blas/Makefile
+src/fortran/lapack/Makefile
+src/c/type/Makefile
+src/c/operations/Makefile
+src/c/operations/addition/Makefile
+src/c/operations/subtraction/Makefile
+src/c/operations/division/Makefile
+src/c/operations/multiplication/Makefile
+src/c/matrixOperations/Makefile
+src/c/matrixOperations/multiplication/Makefile
+src/c/matrixOperations/division/Makefile
+src/c/matrixOperations/cat/Makefile
+src/c/matrixOperations/transpose/Makefile
+src/c/matrixOperations/trace/Makefile
+src/c/matrixOperations/hilb/Makefile
+src/c/matrixOperations/expm/Makefile
+src/c/matrixOperations/eye/Makefile
+src/c/matrixOperations/ones/Makefile
+src/c/matrixOperations/infiniteNorm/Makefile
+src/c/matrixOperations/inversion/Makefile
+src/c/matrixOperations/jmat/Makefile
+src/c/matrixOperations/chol/Makefile
+src/c/matrixOperations/determ/Makefile
+src/c/matrixOperations/dist/Makefile
+src/c/matrixOperations/fill/Makefile
+src/c/matrixOperations/magnitude/Makefile
+src/c/matrixOperations/squaredMagnitude/Makefile
+src/c/matrixOperations/logm/Makefile
+src/c/matrixOperations/powm/Makefile
+src/c/matrixOperations/zeros/Makefile
+src/c/matrixOperations/spec/Makefile
+src/c/matrixOperations/spec2/Makefile
+src/c/implicitList/Makefile
+src/c/elementaryFunctions/Makefile
+src/c/elementaryFunctions/cos/Makefile
+src/c/elementaryFunctions/cosh/Makefile
+src/c/elementaryFunctions/acos/Makefile
+src/c/elementaryFunctions/acosh/Makefile
+src/c/elementaryFunctions/sin/Makefile
+src/c/elementaryFunctions/sinh/Makefile
+src/c/elementaryFunctions/asin/Makefile
+src/c/elementaryFunctions/asinh/Makefile
+src/c/elementaryFunctions/tan/Makefile
+src/c/elementaryFunctions/tanh/Makefile
+src/c/elementaryFunctions/atan/Makefile
+src/c/elementaryFunctions/atan2/Makefile
+src/c/elementaryFunctions/atanh/Makefile
+src/c/elementaryFunctions/log/Makefile
+src/c/elementaryFunctions/log1p/Makefile
+src/c/elementaryFunctions/log10/Makefile
+src/c/elementaryFunctions/exp/Makefile
+src/c/elementaryFunctions/exp10/Makefile
+src/c/elementaryFunctions/sqrt/Makefile
+src/c/elementaryFunctions/lnp1m1/Makefile
+src/c/elementaryFunctions/pow/Makefile
+src/c/elementaryFunctions/ceil/Makefile
+src/c/elementaryFunctions/fix/Makefile
+src/c/elementaryFunctions/floor/Makefile
+src/c/elementaryFunctions/int/Makefile
+src/c/elementaryFunctions/round/Makefile
+src/c/auxiliaryFunctions/Makefile
+src/c/auxiliaryFunctions/abs/Makefile
+src/c/auxiliaryFunctions/find/Makefile
+src/c/auxiliaryFunctions/find2d/Makefile
+src/c/auxiliaryFunctions/frexp/Makefile
+src/c/auxiliaryFunctions/isempty/Makefile
+src/c/auxiliaryFunctions/isnan/Makefile
+src/c/auxiliaryFunctions/rand/Makefile
+src/c/auxiliaryFunctions/sign/Makefile
+src/c/auxiliaryFunctions/size/Makefile
+src/c/auxiliaryFunctions/length/Makefile
+src/c/auxiliaryFunctions/type/Makefile
+src/c/auxiliaryFunctions/pythag/Makefile
+src/c/auxiliaryFunctions/conj/Makefile
+src/c/statisticsFunctions/Makefile
+src/c/statisticsFunctions/mean/Makefile
+src/c/statisticsFunctions/meanf/Makefile
+src/c/statisticsFunctions/stdevf/Makefile
+src/c/statisticsFunctions/prod/Makefile
+src/c/statisticsFunctions/sum/Makefile
+src/c/statisticsFunctions/variance/Makefile
+src/c/statisticsFunctions/variancef/Makefile
+src/c/statisticsFunctions/max/Makefile
+src/c/statisticsFunctions/min/Makefile
+src/c/string/Makefile
+src/c/string/disp/Makefile
+src/c/string/string/Makefile
+src/c/signalProcessing/Makefile
+src/c/signalProcessing/fft/Makefile
+src/c/signalProcessing/ifft/Makefile
+src/c/signalProcessing/levin/Makefile
+src/c/signalProcessing/conv/Makefile
+src/c/signalProcessing/conv2d/Makefile
+src/c/signalProcessing/hilbert/Makefile
+src/c/signalProcessing/crossCorr/Makefile
+src/c/signalProcessing/lpc2cep/Makefile
+src/c/signalProcessing/lev/Makefile
+src/c/signalProcessing/fftshift/Makefile
+])
+
+
+AC_OUTPUT
+
+echo ""
+
+echo "Sci2C is configured as follows. Please verify that this configuration"
+echo "matches your expectations."
+echo ""
+echo "Host system type : $host"
+echo ""
+echo " Option Value"
+echo "-------------------------------------------------------------------------"
+echo "Options:"
+echo "Atlas library (--with-atlas-library) ............ : $USER_ATLAS_LIB_PATH"
+echo "Use FFTW (--with-fftw) .......................... : $with_fftw"
+
+echo ""
+
+echo ""
+echo "Options used to compile and link:"
+echo " PREFIX = $PREFIX_DIR"
+echo " EXEC-PREFIX = $EXEC_PREFIX_DIR"
+echo " CC = $CC"
+echo " CFLAGS = $CFLAGS"
+#echo " CPP = $CPP"
+#echo " CPPFLAGS = $CPPFLAGS"
+echo " PCFLAGS = $PCFLAGS"
+echo " DEFS = $DEFS"
+echo " LD = $LD"
+echo " LDFLAGS = $LDFLAGS"
+echo " LIBS = $LIBS"
+echo " LIBMATH = $LIBMATH"
+echo " CXX = $CXX"
+echo " CXXFLAGS = $CXXFLAGS"
+echo " F77 = $F77"
+echo " FFLAGS = $FFLAGS"
+echo " F77_LDFLAGS = $F77_LDFLAGS"
+echo ""
diff --git a/2.3-1/demos/Filter.dem.sce b/2.3-1/demos/Filter.dem.sce
new file mode 100644
index 00000000..100b37b3
--- /dev/null
+++ b/2.3-1/demos/Filter.dem.sce
@@ -0,0 +1,21 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+lines(0);
+
+global SCI2CHOME
+editor([SCI2CHOME+"/tests/unit_tests/test004_Filter/scilabcode/main.sci";
+ SCI2CHOME+"/tests/unit_tests/test004_Filter/scilabcode/high_pass.sci"]);
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/test004_Filter/scilabcode/main.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/test004_Filter/scilabcode");
+
+editor([TMPDIR+"/main.c";
+ TMPDIR+"/d2d0d0d0high_passd2.c"]);
diff --git a/2.3-1/demos/LinearRegression.dem.sce b/2.3-1/demos/LinearRegression.dem.sce
new file mode 100644
index 00000000..5c3a20c2
--- /dev/null
+++ b/2.3-1/demos/LinearRegression.dem.sce
@@ -0,0 +1,19 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+lines(0);
+global SCI2CHOME
+editor(SCI2CHOME+"/tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci");
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci", TMPDIR);
+
+editor(TMPDIR+"/main.c"); \ No newline at end of file
diff --git a/2.3-1/demos/Symbols.dem.sce b/2.3-1/demos/Symbols.dem.sce
new file mode 100644
index 00000000..5339b988
--- /dev/null
+++ b/2.3-1/demos/Symbols.dem.sce
@@ -0,0 +1,20 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+lines(0);
+
+global SCI2CHOME
+editor(SCI2CHOME+"/tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci");
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci", TMPDIR);
+
+editor(TMPDIR+"/main.c"); \ No newline at end of file
diff --git a/2.3-1/demos/TrigonometricIdentity.dem.sce b/2.3-1/demos/TrigonometricIdentity.dem.sce
new file mode 100644
index 00000000..a2c47c1e
--- /dev/null
+++ b/2.3-1/demos/TrigonometricIdentity.dem.sce
@@ -0,0 +1,21 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+lines(0);
+
+global SCI2CHOME
+editor(SCI2CHOME+"/tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci");
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci", TMPDIR);
+
+editor(TMPDIR+"/main.c");
+
diff --git a/2.3-1/demos/analog_in_out_volt.dem.sce b/2.3-1/demos/analog_in_out_volt.dem.sce
new file mode 100644
index 00000000..ca6da611
--- /dev/null
+++ b/2.3-1/demos/analog_in_out_volt.dem.sce
@@ -0,0 +1,7 @@
+lines(0);
+
+global SCI2CHOME
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/testArduino/analog_in_check_volt.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/testArduino", "All", "make" ,"Arduino", "uno");
+
+editor([TMPDIR+"/setup_arduino.cpp";TMPDIR+"/loop_arduino.cpp"]);
diff --git a/2.3-1/demos/analog_out.dem.sce b/2.3-1/demos/analog_out.dem.sce
new file mode 100644
index 00000000..65a1e279
--- /dev/null
+++ b/2.3-1/demos/analog_out.dem.sce
@@ -0,0 +1,7 @@
+lines(0);
+
+global SCI2CHOME
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/testArduino/analog_check.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/testArduino", "All", "make" ,"Arduino", "uno");
+
+editor([TMPDIR+"/setup_arduino.cpp";TMPDIR+"/loop_arduino.cpp"]);
diff --git a/2.3-1/demos/blink.dem.sce b/2.3-1/demos/blink.dem.sce
new file mode 100644
index 00000000..b01d3dae
--- /dev/null
+++ b/2.3-1/demos/blink.dem.sce
@@ -0,0 +1,7 @@
+lines(0);
+
+global SCI2CHOME
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/testArduino/blink_13.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/testArduino", "All", "make" ,"Arduino", "uno");
+
+editor([TMPDIR+"/setup_arduino.cpp";TMPDIR+"/loop_arduino.cpp"]);
diff --git a/2.3-1/demos/dc_motor.dem.sce b/2.3-1/demos/dc_motor.dem.sce
new file mode 100644
index 00000000..36c0badd
--- /dev/null
+++ b/2.3-1/demos/dc_motor.dem.sce
@@ -0,0 +1,7 @@
+lines(0);
+
+global SCI2CHOME
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/testArduino/board_test_release2.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/testArduino", "All", "make" ,"Arduino", "uno");
+
+editor([TMPDIR+"/setup_arduino.cpp";TMPDIR+"/loop_arduino.cpp"]);
diff --git a/2.3-1/demos/digital_in.dem.sce b/2.3-1/demos/digital_in.dem.sce
new file mode 100644
index 00000000..2eb4c3a0
--- /dev/null
+++ b/2.3-1/demos/digital_in.dem.sce
@@ -0,0 +1,7 @@
+lines(0);
+
+global SCI2CHOME
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/testArduino/digital_in_check.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/testArduino", "All", "make" ,"Arduino", "uno");
+
+editor([TMPDIR+"/setup_arduino.cpp";TMPDIR+"/loop_arduino.cpp"]);
diff --git a/2.3-1/demos/master_write.dem.sce b/2.3-1/demos/master_write.dem.sce
new file mode 100644
index 00000000..cdf522db
--- /dev/null
+++ b/2.3-1/demos/master_write.dem.sce
@@ -0,0 +1,7 @@
+lines(0);
+
+global SCI2CHOME
+
+scilab2c(SCI2CHOME+"/tests/unit_tests/testArduino/i2c_master.sci", TMPDIR, SCI2CHOME+"/tests/unit_tests/testArduino", "All", "make" ,"Arduino", "uno");
+
+editor([TMPDIR+"/setup_arduino.cpp";TMPDIR+"/loop_arduino.cpp"]);
diff --git a/2.3-1/demos/scilab2c.dem.gateway.sce b/2.3-1/demos/scilab2c.dem.gateway.sce
new file mode 100644
index 00000000..38f7fdc7
--- /dev/null
+++ b/2.3-1/demos/scilab2c.dem.gateway.sce
@@ -0,0 +1,27 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+demopath = get_absolute_file_path("scilab2c.dem.gateway.sce");
+
+subdemolist = ["Trigonometric Identity" , "TrigonometricIdentity.dem.sce";
+ "Linear Regression" , "LinearRegression.dem.sce";
+ "Symbols", "Symbols.dem.sce";
+ "High Pass Filter", "Filter.dem.sce";
+ "Arduino blink", "blink.dem.sce";
+ "Arduino digital input", "digital_in.dem.sce";
+ "Arduino analog voltage i/o", "analog_in_out_volt.dem.sce";
+ "Arduino analog output", "analog_out.dem.sce";
+ "Arduino DC motor", "dc_motor.dem.sce";
+ "Arduino Master write", "master_write.dem.sce";
+ ];
+
+subdemolist(:,2) = demopath + subdemolist(:,2);
diff --git a/2.3-1/etc/scilab2c.quit b/2.3-1/etc/scilab2c.quit
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/2.3-1/etc/scilab2c.quit
diff --git a/2.3-1/etc/scilab2c.start b/2.3-1/etc/scilab2c.start
new file mode 100644
index 00000000..59cf0865
--- /dev/null
+++ b/2.3-1/etc/scilab2c.start
@@ -0,0 +1,62 @@
+// This file is released into the public domain
+
+mprintf("Start Scilab 2 C module\n");
+
+etc_tlbx = get_absolute_file_path("scilab2c.start");
+etc_tlbx = getshortpathname(etc_tlbx);
+root_tlbx = strncpy( etc_tlbx, length(etc_tlbx)-length('\etc\') );
+
+//Load functions library
+// =============================================================================
+pathmacros = pathconvert( root_tlbx ) + 'macros'+ filesep();
+mprintf("\tLoad macros\n");
+sci2c_mainlib = lib(pathmacros);
+sci2c_ASTManagementlib = lib(pathmacros + "ASTManagement" + filesep());
+sci2c_CCodeGenerationlib = lib(pathmacros + "CCodeGeneration" + filesep());
+sci2c_ErrorMessageslib = lib(pathmacros + "ErrorMessages" + filesep());
+sci2c_FunAnnotationlib = lib(pathmacros + "FunctionAnnotation" + filesep());
+sci2c_FunListlib = lib(pathmacros + "FunctionList" + filesep());
+sci2c_GenFunctionslib = lib(pathmacros + "GeneralFunctions" + filesep());
+sci2c_SymbolTablelib = lib(pathmacros + "SymbolTable" + filesep());
+sci2c_ToolInitlib = lib(pathmacros + "ToolInitialization" + filesep());
+sci2c_finDeps = lib(pathmacros + "findDeps" + filesep());
+sci2c_AVRlib = lib(pathmacros + "Hardware\AVR" + filesep());
+sci2c_RPilib = lib(pathmacros + "Hardware\RasberryPi"+ filesep());
+sci2c_ScilabArduinolib = lib(pathmacros + "Scilab-Arduino" + filesep());
+sci2c_CVCorelib = lib(pathmacros + "ImageProcessing\core" + filesep());
+sci2c_CVHighguilib = lib(pathmacros + "ImageProcessing\highgui" + filesep());
+sci2c_CVImgproclib = lib(pathmacros + "ImageProcessing\imgproc" + filesep());
+clear pathmacros;
+
+// Load and add help chapter
+// =============================================================================
+
+if or(getscilabmode() == ["NW";"STD"]) then
+ mprintf("\tLoad help\n");
+ path_addchapter = pathconvert(root_tlbx+"/jar");
+ if isdir(path_addchapter) then
+ add_help_chapter("Scilab 2 C", path_addchapter, %F);
+ clear add_help_chapter path_addchapter
+ end
+end
+
+// Add demos
+// =============================================================================
+
+if or(getscilabmode() == ["NW";"STD"]) then
+ mprintf("\tLoad demos\n");
+ pathdemos = pathconvert(root_tlbx + "/demos/scilab2c.dem.gateway.sce",%f,%t);
+
+ add_demo(gettext("Scilab2C"),pathdemos);
+ clear pathdemos ;
+end
+
+mprintf("\tVersion: "+getScilab2cVersion()+"\n");
+
+global SCI2CHOME
+SCI2CHOME = root_tlbx;
+clear SCI2CHOME;
+
+// =============================================================================
+clear root_tlbx;
+clear etc_tlbx;
diff --git a/2.3-1/includes/bcm2835.h b/2.3-1/includes/bcm2835.h
new file mode 100644
index 00000000..ae41b3e1
--- /dev/null
+++ b/2.3-1/includes/bcm2835.h
@@ -0,0 +1,1625 @@
+/* bcm2835.h
+
+ C and C++ support for Broadcom BCM 2835 as used in Raspberry Pi
+
+ Author: Mike McCauley
+ Copyright (C) 2011-2013 Mike McCauley
+ $Id: bcm2835.h,v 1.20 2015/03/31 04:55:41 mikem Exp mikem $
+*/
+
+/*! \mainpage C library for Broadcom BCM 2835 as used in Raspberry Pi
+
+ This is a C library for Raspberry Pi (RPi). It provides access to
+ GPIO and other IO functions on the Broadcom BCM 2835 chip,
+ allowing access to the GPIO pins on the
+ 26 pin IDE plug on the RPi board so you can control and interface with various external devices.
+
+ It provides functions for reading digital inputs and setting digital outputs, using SPI and I2C,
+ and for accessing the system timers.
+ Pin event detection is supported by polling (interrupts are not supported).
+
+ It is C++ compatible, and installs as a header file and non-shared library on
+ any Linux-based distro (but clearly is no use except on Raspberry Pi or another board with
+ BCM 2835).
+
+ The version of the package that this documentation refers to can be downloaded
+ from http://www.airspayce.com/mikem/bcm2835/bcm2835-1.48.tar.gz
+ You can find the latest version at http://www.airspayce.com/mikem/bcm2835
+
+ Several example programs are provided.
+
+ Based on data in http://elinux.org/RPi_Low-level_peripherals and
+ http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
+ and http://www.scribd.com/doc/101830961/GPIO-Pads-Control2
+
+ You can also find online help and discussion at http://groups.google.com/group/bcm2835
+ Please use that group for all questions and discussions on this topic.
+ Do not contact the author directly, unless it is to discuss commercial licensing.
+ Before asking a question or reporting a bug, please read http://www.catb.org/esr/faqs/smart-questions.html
+
+ Tested on debian6-19-04-2012, 2012-07-15-wheezy-raspbian, 2013-07-26-wheezy-raspbian
+ and Occidentalisv01
+ CAUTION: it has been observed that when detect enables such as bcm2835_gpio_len()
+ are used and the pin is pulled LOW
+ it can cause temporary hangs on 2012-07-15-wheezy-raspbian, 2013-07-26-wheezy-raspbian
+ and Occidentalisv01.
+ Reason for this is not yet determined, but we suspect that an interrupt handler is
+ hitting a hard loop on those OSs.
+ If you must use bcm2835_gpio_len() and friends, make sure you disable the pins with
+ bcm2835_gpio_clr_len() and friends after use.
+
+ \par Installation
+
+ This library consists of a single non-shared library and header file, which will be
+ installed in the usual places by make install
+
+ \code
+ # download the latest version of the library, say bcm2835-1.xx.tar.gz, then:
+ tar zxvf bcm2835-1.xx.tar.gz
+ cd bcm2835-1.xx
+ ./configure
+ make
+ sudo make check
+ sudo make install
+ \endcode
+
+ \par Physical Addresses
+
+ The functions bcm2835_peri_read(), bcm2835_peri_write() and bcm2835_peri_set_bits()
+ are low level peripheral register access functions. They are designed to use
+ physical addresses as described in section 1.2.3 ARM physical addresses
+ of the BCM2835 ARM Peripherals manual.
+ Physical addresses range from 0x20000000 to 0x20FFFFFF for peripherals. The bus
+ addresses for peripherals are set up to map onto the peripheral bus address range starting at
+ 0x7E000000. Thus a peripheral advertised in the manual at bus address 0x7Ennnnnn is available at
+ physical address 0x20nnnnnn.
+
+ On RPI 2, the peripheral addresses are different and the bcm2835 library gets them
+ from reading /proc/device-tree/soc/ranges. This is only availble with recent versions of the kernel on RPI 2.
+
+ After initialisation, the base address of the various peripheral
+ registers are available with the following
+ externals:
+ bcm2835_gpio
+ bcm2835_pwm
+ bcm2835_clk
+ bcm2835_pads
+ bcm2835_spio0
+ bcm2835_st
+ bcm2835_bsc0
+ bcm2835_bsc1
+
+ \par Raspberry Pi 2 (RPI2)
+
+ For this library to work correctly on RPI2, you MUST have the device tree support enabled in the kernel.
+ You should also ensure you are using the latest version of Linux. The library has been tested on RPI2
+ with 2015-02-16-raspbian-wheezy and ArchLinuxARM-rpi-2 as of 2015-03-29.
+
+ When device tree suport is enabled, the file /proc/device-tree/soc/ranges will appear in the file system,
+ and the bcm2835 module relies on its presence to correctly run on RPI2 (it is optional for RPI1).
+ Without device tree support enabled and the presence of this file, it will not work on RPI2.
+
+ To enable device tree support:
+
+ \code
+ sudo raspi-config
+ under Advanced Options - enable Device Tree
+ Reboot.
+ \endcode
+
+ \par Pin Numbering
+
+ The GPIO pin numbering as used by RPi is different to and inconsistent with the underlying
+ BCM 2835 chip pin numbering. http://elinux.org/RPi_BCM2835_GPIOs
+
+ RPi has a 26 pin IDE header that provides access to some of the GPIO pins on the BCM 2835,
+ as well as power and ground pins. Not all GPIO pins on the BCM 2835 are available on the
+ IDE header.
+
+ RPi Version 2 also has a P5 connector with 4 GPIO pins, 5V, 3.3V and Gnd.
+
+ The functions in this library are designed to be passed the BCM 2835 GPIO pin number and _not_
+ the RPi pin number. There are symbolic definitions for each of the available pins
+ that you should use for convenience. See \ref RPiGPIOPin.
+
+ \par SPI Pins
+
+ The bcm2835_spi_* functions allow you to control the BCM 2835 SPI0 interface,
+ allowing you to send and received data by SPI (Serial Peripheral Interface).
+ For more information about SPI, see http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
+
+ When bcm2835_spi_begin() is called it changes the bahaviour of the SPI interface pins from their
+ default GPIO behaviour in order to support SPI. While SPI is in use, you will not be able
+ to control the state of the SPI pins through the usual bcm2835_spi_gpio_write().
+ When bcm2835_spi_end() is called, the SPI pins will all revert to inputs, and can then be
+ configured and controled with the usual bcm2835_gpio_* calls.
+
+ The Raspberry Pi GPIO pins used for SPI are:
+
+ - P1-19 (MOSI)
+ - P1-21 (MISO)
+ - P1-23 (CLK)
+ - P1-24 (CE0)
+ - P1-26 (CE1)
+
+ \par I2C Pins
+
+ The bcm2835_i2c_* functions allow you to control the BCM 2835 BSC interface,
+ allowing you to send and received data by I2C ("eye-squared cee"; generically referred to as "two-wire interface") .
+ For more information about I?C, see http://en.wikipedia.org/wiki/I%C2%B2C
+
+ The Raspberry Pi V2 GPIO pins used for I2C are:
+
+ - P1-03 (SDA)
+ - P1-05 (SLC)
+
+ \par PWM
+
+ The BCM2835 supports hardware PWM on a limited subset of GPIO pins. This bcm2835 library provides
+ functions for configuring and controlling PWM output on these pins.
+
+ The BCM2835 contains 2 independent PWM channels (0 and 1), each of which be connnected to a limited subset of
+ GPIO pins. The following GPIO pins may be connected to the following PWM channels (from section 9.5):
+ \code
+ GPIO PIN RPi pin PWM Channel ALT FUN
+ 12 0 0
+ 13 1 0
+ 18 1-12 0 5
+ 19 1 5
+ 40 0 0
+ 41 1 0
+ 45 1 0
+ 52 0 1
+ 53 1 1
+ \endcode
+ In order for a GPIO pin to emit output from its PWM channel, it must be set to the Alt Function given above.
+ Note carefully that current versions of the Raspberry Pi only expose one of these pins (GPIO 18 = RPi Pin 1-12)
+ on the IO headers, and therefore this is the only IO pin on the RPi that can be used for PWM.
+ Further it must be set to ALT FUN 5 to get PWM output.
+
+ Both PWM channels are driven by the same PWM clock, whose clock dvider can be varied using
+ bcm2835_pwm_set_clock(). Each channel can be separately enabled with bcm2835_pwm_set_mode().
+ The average output of the PWM channel is determined by the ratio of DATA/RANGE for that channel.
+ Use bcm2835_pwm_set_range() to set the range and bcm2835_pwm_set_data() to set the data in that ratio
+
+ Each PWM channel can run in either Balanced or Mark-Space mode. In Balanced mode, the hardware
+ sends a combination of clock pulses that results in an overall DATA pulses per RANGE pulses.
+ In Mark-Space mode, the hardware sets the output HIGH for DATA clock pulses wide, followed by
+ LOW for RANGE-DATA clock pulses.
+
+ The PWM clock can be set to control the PWM pulse widths. The PWM clock is derived from
+ a 19.2MHz clock. You can set any divider, but some common ones are provided by the BCM2835_PWM_CLOCK_DIVIDER_*
+ values of \ref bcm2835PWMClockDivider.
+
+ For example, say you wanted to drive a DC motor with PWM at about 1kHz,
+ and control the speed in 1/1024 increments from
+ 0/1024 (stopped) through to 1024/1024 (full on). In that case you might set the
+ clock divider to be 16, and the RANGE to 1024. The pulse repetition frequency will be
+ 1.2MHz/1024 = 1171.875Hz.
+
+ \par SPI
+
+ In order for bcm2835 library SPI to work, you may need to disable the SPI kernel module using:
+
+ \code
+ sudo raspi-config
+ under Advanced Options - enable Device Tree
+ under Advanced Options - disable SPI
+ Reboot.
+ \endcode
+
+ \par Real Time performance constraints
+
+ The bcm2835 is a library for user programs (i.e. they run in 'userland').
+ Such programs are not part of the kernel and are usually
+ subject to paging and swapping by the kernel while it does other things besides running your program.
+ This means that you should not expect to get real-time performance or
+ real-time timing constraints from such programs. In particular, there is no guarantee that the
+ bcm2835_delay() and bcm2835_delayMicroseconds() will return after exactly the time requested.
+ In fact, depending on other activity on the host, IO etc, you might get significantly longer delay times
+ than the one you asked for. So please dont expect to get exactly the time delay you request.
+
+ Arjan reports that you can prevent swapping on Linux with the following code fragment:
+
+ \code
+ struct sched_param sp;
+ memset(&sp, 0, sizeof(sp));
+ sp.sched_priority = sched_get_priority_max(SCHED_FIFO);
+ sched_setscheduler(0, SCHED_FIFO, &sp);
+ mlockall(MCL_CURRENT | MCL_FUTURE);
+ \endcode
+
+ \par Bindings to other languages
+
+ mikem has made Perl bindings available at CPAN:
+ http://search.cpan.org/~mikem/Device-BCM2835-1.9/lib/Device/BCM2835.pm
+ Matthew Baker has kindly made Python bindings available at:
+ https: github.com/mubeta06/py-libbcm2835
+ Gary Marks has created a Serial Peripheral Interface (SPI) command-line utility
+ for Raspberry Pi, based on the bcm2835 library. The
+ utility, spincl, is licensed under Open Source GNU GPLv3 by iP Solutions (http://ipsolutionscorp.com), as a
+ free download with source included: http://ipsolutionscorp.com/raspberry-pi-spi-utility/
+
+ \par Open Source Licensing GPL V2
+
+ This is the appropriate option if you want to share the source code of your
+ application with everyone you distribute it to, and you also want to give them
+ the right to share who uses it. If you wish to use this software under Open
+ Source Licensing, you must contribute all your source code to the open source
+ community in accordance with the GPL Version 2 when your application is
+ distributed. See http://www.gnu.org/copyleft/gpl.html and COPYING
+
+ \par Acknowledgements
+
+ Some of this code has been inspired by Dom and Gert.
+ The I2C code has been inspired by Alan Barr.
+
+ \par Revision History
+
+ \version 1.0 Initial release
+
+ \version 1.1 Minor bug fixes
+
+ \version 1.2 Added support for SPI
+
+ \version 1.3 Added bcm2835_spi_transfern()
+
+ \version 1.4 Fixed a problem that prevented SPI CE1 being used. Reported by David Robinson.
+
+ \version 1.5 Added bcm2835_close() to deinit the library. Suggested by C?sar Ortiz
+
+ \version 1.6 Document testing on 2012-07-15-wheezy-raspbian and Occidentalisv01
+ Functions bcm2835_gpio_ren(), bcm2835_gpio_fen(), bcm2835_gpio_hen()
+ bcm2835_gpio_len(), bcm2835_gpio_aren() and bcm2835_gpio_afen() now
+ changes only the pin specified. Other pins that were already previously
+ enabled stay enabled.
+ Added bcm2835_gpio_clr_ren(), bcm2835_gpio_clr_fen(), bcm2835_gpio_clr_hen()
+ bcm2835_gpio_clr_len(), bcm2835_gpio_clr_aren(), bcm2835_gpio_clr_afen()
+ to clear the enable for individual pins, suggested by Andreas Sundstrom.
+
+ \version 1.7 Added bcm2835_spi_transfernb to support different buffers for read and write.
+
+ \version 1.8 Improvements to read barrier, as suggested by maddin.
+
+ \version 1.9 Improvements contributed by mikew:
+ I noticed that it was mallocing memory for the mmaps on /dev/mem.
+ It's not necessary to do that, you can just mmap the file directly,
+ so I've removed the mallocs (and frees).
+ I've also modified delayMicroseconds() to use nanosleep() for long waits,
+ and a busy wait on a high resolution timer for the rest. This is because
+ I've found that calling nanosleep() takes at least 100-200 us.
+ You need to link using '-lrt' using this version.
+ I've added some unsigned casts to the debug prints to silence compiler
+ warnings I was getting, fixed some typos, and changed the value of
+ BCM2835_PAD_HYSTERESIS_ENABLED to 0x08 as per Gert van Loo's doc at
+ http://www.scribd.com/doc/101830961/GPIO-Pads-Control2
+ Also added a define for the passwrd value that Gert says is needed to
+ change pad control settings.
+
+ \version 1.10 Changed the names of the delay functions to bcm2835_delay()
+ and bcm2835_delayMicroseconds() to prevent collisions with wiringPi.
+ Macros to map delay()-> bcm2835_delay() and
+ Macros to map delayMicroseconds()-> bcm2835_delayMicroseconds(), which
+ can be disabled by defining BCM2835_NO_DELAY_COMPATIBILITY
+
+ \version 1.11 Fixed incorrect link to download file
+
+ \version 1.12 New GPIO pin definitions for RPi version 2 (which has a different GPIO mapping)
+
+ \version 1.13 New GPIO pin definitions for RPi version 2 plug P5
+ Hardware base pointers are now available (after initialisation) externally as bcm2835_gpio
+ bcm2835_pwm bcm2835_clk bcm2835_pads bcm2835_spi0.
+
+ \version 1.14 Now compiles even if CLOCK_MONOTONIC_RAW is not available, uses CLOCK_MONOTONIC instead.
+ Fixed errors in documentation of SPI divider frequencies based on 250MHz clock.
+ Reported by Ben Simpson.
+
+ \version 1.15 Added bcm2835_close() to end of examples as suggested by Mark Wolfe.
+
+ \version 1.16 Added bcm2835_gpio_set_multi, bcm2835_gpio_clr_multi and bcm2835_gpio_write_multi
+ to allow a mask of pins to be set all at once. Requested by Sebastian Loncar.
+
+ \version 1.17 Added bcm2835_gpio_write_mask. Requested by Sebastian Loncar.
+
+ \version 1.18 Added bcm2835_i2c_* functions. Changes to bcm2835_delayMicroseconds:
+ now uses the RPi system timer counter, instead of clock_gettime, for improved accuracy.
+ No need to link with -lrt now. Contributed by Arjan van Vught.
+ \version 1.19 Removed inlines added by previous patch since they don't seem to work everywhere.
+ Reported by olly.
+
+ \version 1.20 Patch from Mark Dootson to close /dev/mem after access to the peripherals has been granted.
+
+ \version 1.21 delayMicroseconds is now not susceptible to 32 bit timer overruns.
+ Patch courtesy Jeremy Mortis.
+
+ \version 1.22 Fixed incorrect definition of BCM2835_GPFEN0 which broke the ability to set
+ falling edge events. Reported by Mark Dootson.
+
+ \version 1.23 Added bcm2835_i2c_set_baudrate and bcm2835_i2c_read_register_rs.
+ Improvements to bcm2835_i2c_read and bcm2835_i2c_write functions
+ to fix ocasional reads not completing. Patched by Mark Dootson.
+
+ \version 1.24 Mark Dootson p[atched a problem with his previously submitted code
+ under high load from other processes.
+
+ \version 1.25 Updated author and distribution location details to airspayce.com
+
+ \version 1.26 Added missing unmapmem for pads in bcm2835_close to prevent a memory leak.
+ Reported by Hartmut Henkel.
+
+ \version 1.27 bcm2835_gpio_set_pad() no longer needs BCM2835_PAD_PASSWRD: it is
+ now automatically included.
+ Added suport for PWM mode with bcm2835_pwm_* functions.
+
+ \version 1.28 Fixed a problem where bcm2835_spi_writenb() would have problems with transfers of more than
+ 64 bytes dues to read buffer filling. Patched by Peter Würtz.
+
+ \version 1.29 Further fix to SPI from Peter Würtz.
+
+ \version 1.30 10 microsecond delays from bcm2835_spi_transfer and bcm2835_spi_transfern for
+ significant performance improvements, Patch by Alan Watson.
+
+ \version 1.31 Fix a GCC warning about dummy variable, patched by Alan Watson. Thanks.
+
+ \version 1.32 Added option I2C_V1 definition to compile for version 1 RPi.
+ By default I2C code is generated for the V2 RPi which has SDA1 and SCL1 connected.
+ Contributed by Malcolm Wiles based on work by Arvi Govindaraj.
+
+ \version 1.33 Added command line utilities i2c and gpio to examples. Contributed by Shahrooz Shahparnia.
+
+ \version 1.34 Added bcm2835_i2c_write_read_rs() which writes an arbitrary number of bytes,
+ sends a repeat start, and reads from the device. Contributed by Eduardo Steinhorst.
+
+ \version 1.35 Fix build errors when compiled under Qt. Also performance improvements with SPI transfers. Contributed b Udo Klaas.
+
+ \version 1.36 Make automake's test runner detect that we're skipping tests when not root, the second
+ one makes us skip the test when using fakeroot (as used when building
+ Debian packages). Contributed by Guido Günther.
+
+ \version 1.37 Moved confiure.in to configure.ac as receommnded by autoreconf.<br>
+ Improvements to bcm2835_st_read to account for possible timer overflow, contributed by 'Ed'.<br>
+ Added definitions for Raspberry Pi B+ J8 header GPIO pins.<br>
+
+ \version 1.38 Added bcm2835_regbase for the benefit of C# wrappers, patch by Frank Hommers <br>
+
+ \version 1.39 Beta version of RPi2 compatibility. Not tested here on RPi2 hardware.
+ Testers please confirm correct operation on RPi2.<br>
+ Unneccessary 'volatile' qualifiers removed from all variables and signatures.<br>
+ Removed unsupportable PWM dividers, based on a report from Christophe Cecillon.<br>
+ Minor improvements to spi.c example.<br>
+
+ \version 1.40 Correct operation on RPi2 has been confirmed.<br>
+ Fixed a number of compiler errors and warnings that occur when bcm2835.h is included
+ in code compiled with -Wall -Woverflow -Wstrict-overflow -Wshadow -Wextra -pedantic.
+ Reported by tlhackque.<br>
+ Fixed a problem where calling bcm2835_delayMicroseconds loops forever when debug is set. Reported by tlhackque.<br>
+ Reinstated use of volatile in 2 functions where there was a danger of lost reads or writes. Reported by tlhackque.<br>
+
+ \version 1.41 Added BCM2835_VERSION macro and new function bcm2835_version(); Requested by tlhackque.<br>
+ Improvements to peripheral memory barriers as suggested by tlhackque.<br>
+ Reinstated some necessary volatile declarations as requested by tlhackque.<br>
+
+ \version 1.42 Further improvements to memory barriers with the patient assistance and patches of tlhackque.<br>
+
+ \version 1.43 Fixed problems with compiling barriers on RPI 2 with Arch Linux and gcc 4.9.2.
+ Reported and patched by Lars Christensen.<br>
+ Testing on RPI 2, with ArchLinuxARM-rpi-2-latest and 2015-02-16-raspbian-wheezy.<br>
+
+ \version 1.44 Added documention about the need for device tree to be enabled on RPI2.<br>
+ Improvements to detection of availablity of DMB instruction based on value of __ARM_ARCH macro.<br>
+
+ \version 1.45 Fixed an error in the pad group offsets that would prevent bcm2835_gpio_set_pad()
+ and bcm2835_gpio_pad() working correctly with non-0 pad groups. Reported by Guido.
+
+ \version 1.46 2015-09-18
+ Added symbolic definitions for remaining pins on 40 pin GPIO header on RPi 2. <br>
+
+ \version 1.47 2015-11-18
+ Fixed possibly incorrect reads in bcm2835_i2c_read_register_rs, patch from Eckhardt Ulrich.<br>
+
+ \version 1.48 2015-12-08
+ Added patch from Eckhardt Ulrich that fixed problems that could cause hanging with bcm2835_i2c_read_register_rs
+ and others.
+
+ \author Mike McCauley (mikem@airspayce.com) DO NOT CONTACT THE AUTHOR DIRECTLY: USE THE LISTS
+*/
+
+
+/* Defines for BCM2835 */
+#ifndef BCM2835_H
+#define BCM2835_H
+
+#include <stdint.h>
+
+#define BCM2835_VERSION 10048 /* Version 1.48 */
+
+/* RPi 2 is ARM v7, and has DMB instruction for memory barriers.
+ Older RPis are ARM v6 and don't, so a coprocessor instruction must be used instead.
+ However, not all versions of gcc in all distros support the dmb assembler instruction even on conmpatible processors.
+ This test is so any ARMv7 or higher processors with suitable GCC will use DMB.
+*/
+#if __ARM_ARCH >= 7
+#define BCM2835_HAVE_DMB
+#endif
+
+/*! \defgroup constants Constants for passing to and from library functions
+ The values here are designed to be passed to various functions in the bcm2835 library.
+ @{
+*/
+
+/*! This means pin HIGH, true, 3.3volts on a pin. */
+#define HIGH 0x1
+/*! This means pin LOW, false, 0volts on a pin. */
+#define LOW 0x0
+
+/*! Speed of the core clock core_clk */
+#define BCM2835_CORE_CLK_HZ 250000000 /*!< 250 MHz */
+
+/*! On RPi2 with BCM2836, and all recent OSs, the base of the peripherals is read from a /proc file */
+#define BMC2835_RPI2_DT_FILENAME "/proc/device-tree/soc/ranges"
+/*! Offset into BMC2835_RPI2_DT_FILENAME for the peripherals base address */
+#define BMC2835_RPI2_DT_PERI_BASE_ADDRESS_OFFSET 4
+/*! Offset into BMC2835_RPI2_DT_FILENAME for the peripherals size address */
+#define BMC2835_RPI2_DT_PERI_SIZE_OFFSET 8
+
+/*! Physical addresses for various peripheral register sets
+ Base Physical Address of the BCM 2835 peripheral registers
+ Note this is different for the RPi2 BCM2836, where this is derived from /proc/device-tree/soc/ranges
+ If /proc/device-tree/soc/ranges exists on a RPi 1 OS, it would be expected to contain the
+ following numbers:
+*/
+/*! Peripherals block base address on RPi 1 */
+#define BCM2835_PERI_BASE 0x20000000
+/*! Size of the peripherals block on RPi 1 */
+#define BCM2835_PERI_SIZE 0x01000000
+
+/*! Offsets for the bases of various peripherals within the peripherals block
+ / Base Address of the System Timer registers
+*/
+#define BCM2835_ST_BASE 0x3000
+/*! Base Address of the Pads registers */
+#define BCM2835_GPIO_PADS 0x100000
+/*! Base Address of the Clock/timer registers */
+#define BCM2835_CLOCK_BASE 0x101000
+/*! Base Address of the GPIO registers */
+#define BCM2835_GPIO_BASE 0x200000
+/*! Base Address of the SPI0 registers */
+#define BCM2835_SPI0_BASE 0x204000
+/*! Base Address of the BSC0 registers */
+#define BCM2835_BSC0_BASE 0x205000
+/*! Base Address of the PWM registers */
+#define BCM2835_GPIO_PWM 0x20C000
+/*! Base Address of the BSC1 registers */
+#define BCM2835_BSC1_BASE 0x804000
+
+/*! Physical address and size of the peripherals block
+ May be overridden on RPi2
+*/
+extern uint32_t *bcm2835_peripherals_base;
+/*! Size of the peripherals block to be mapped */
+extern uint32_t bcm2835_peripherals_size;
+
+/*! Virtual memory address of the mapped peripherals block */
+extern uint32_t *bcm2835_peripherals;
+
+/*! Base of the ST (System Timer) registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_st;
+
+/*! Base of the GPIO registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_gpio;
+
+/*! Base of the PWM registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_pwm;
+
+/*! Base of the CLK registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_clk;
+
+/*! Base of the PADS registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_pads;
+
+/*! Base of the SPI0 registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_spi0;
+
+/*! Base of the BSC0 registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_bsc0;
+
+/*! Base of the BSC1 registers.
+ Available after bcm2835_init has been called
+*/
+extern volatile uint32_t *bcm2835_bsc1;
+
+/*! \brief bcm2835RegisterBase
+ Register bases for bcm2835_regbase()
+*/
+typedef enum
+{
+ BCM2835_REGBASE_ST = 1, /*!< Base of the ST (System Timer) registers. */
+ BCM2835_REGBASE_GPIO = 2, /*!< Base of the GPIO registers. */
+ BCM2835_REGBASE_PWM = 3, /*!< Base of the PWM registers. */
+ BCM2835_REGBASE_CLK = 4, /*!< Base of the CLK registers. */
+ BCM2835_REGBASE_PADS = 5, /*!< Base of the PADS registers. */
+ BCM2835_REGBASE_SPI0 = 6, /*! Base of the SPI0 registers. */
+ BCM2835_REGBASE_BSC0 = 7, /*!< Base of the BSC0 registers. */
+ BCM2835_REGBASE_BSC1 = 8 /*!< Base of the BSC1 registers. */
+} bcm2835RegisterBase;
+
+/*! Size of memory page on RPi */
+#define BCM2835_PAGE_SIZE (4*1024)
+/*! Size of memory block on RPi */
+#define BCM2835_BLOCK_SIZE (4*1024)
+
+
+/* Defines for GPIO
+ The BCM2835 has 54 GPIO pins.
+ BCM2835 data sheet, Page 90 onwards.
+*/
+/*! GPIO register offsets from BCM2835_GPIO_BASE.
+ Offsets into the GPIO Peripheral block in bytes per 6.1 Register View
+*/
+#define BCM2835_GPFSEL0 0x0000 /*!< GPIO Function Select 0 */
+#define BCM2835_GPFSEL1 0x0004 /*!< GPIO Function Select 1 */
+#define BCM2835_GPFSEL2 0x0008 /*!< GPIO Function Select 2 */
+#define BCM2835_GPFSEL3 0x000c /*!< GPIO Function Select 3 */
+#define BCM2835_GPFSEL4 0x0010 /*!< GPIO Function Select 4 */
+#define BCM2835_GPFSEL5 0x0014 /*!< GPIO Function Select 5 */
+#define BCM2835_GPSET0 0x001c /*!< GPIO Pin Output Set 0 */
+#define BCM2835_GPSET1 0x0020 /*!< GPIO Pin Output Set 1 */
+#define BCM2835_GPCLR0 0x0028 /*!< GPIO Pin Output Clear 0 */
+#define BCM2835_GPCLR1 0x002c /*!< GPIO Pin Output Clear 1 */
+#define BCM2835_GPLEV0 0x0034 /*!< GPIO Pin Level 0 */
+#define BCM2835_GPLEV1 0x0038 /*!< GPIO Pin Level 1 */
+#define BCM2835_GPEDS0 0x0040 /*!< GPIO Pin Event Detect Status 0 */
+#define BCM2835_GPEDS1 0x0044 /*!< GPIO Pin Event Detect Status 1 */
+#define BCM2835_GPREN0 0x004c /*!< GPIO Pin Rising Edge Detect Enable 0 */
+#define BCM2835_GPREN1 0x0050 /*!< GPIO Pin Rising Edge Detect Enable 1 */
+#define BCM2835_GPFEN0 0x0058 /*!< GPIO Pin Falling Edge Detect Enable 0 */
+#define BCM2835_GPFEN1 0x005c /*!< GPIO Pin Falling Edge Detect Enable 1 */
+#define BCM2835_GPHEN0 0x0064 /*!< GPIO Pin High Detect Enable 0 */
+#define BCM2835_GPHEN1 0x0068 /*!< GPIO Pin High Detect Enable 1 */
+#define BCM2835_GPLEN0 0x0070 /*!< GPIO Pin Low Detect Enable 0 */
+#define BCM2835_GPLEN1 0x0074 /*!< GPIO Pin Low Detect Enable 1 */
+#define BCM2835_GPAREN0 0x007c /*!< GPIO Pin Async. Rising Edge Detect 0 */
+#define BCM2835_GPAREN1 0x0080 /*!< GPIO Pin Async. Rising Edge Detect 1 */
+#define BCM2835_GPAFEN0 0x0088 /*!< GPIO Pin Async. Falling Edge Detect 0 */
+#define BCM2835_GPAFEN1 0x008c /*!< GPIO Pin Async. Falling Edge Detect 1 */
+#define BCM2835_GPPUD 0x0094 /*!< GPIO Pin Pull-up/down Enable */
+#define BCM2835_GPPUDCLK0 0x0098 /*!< GPIO Pin Pull-up/down Enable Clock 0 */
+#define BCM2835_GPPUDCLK1 0x009c /*!< GPIO Pin Pull-up/down Enable Clock 1 */
+
+/*! \brief bcm2835PortFunction
+ Port function select modes for bcm2835_gpio_fsel()
+*/
+typedef enum
+{
+ BCM2835_GPIO_FSEL_INPT = 0x00, /*!< Input 0b000 */
+ BCM2835_GPIO_FSEL_OUTP = 0x01, /*!< Output 0b001 */
+ BCM2835_GPIO_FSEL_ALT0 = 0x04, /*!< Alternate function 0 0b100 */
+ BCM2835_GPIO_FSEL_ALT1 = 0x05, /*!< Alternate function 1 0b101 */
+ BCM2835_GPIO_FSEL_ALT2 = 0x06, /*!< Alternate function 2 0b110, */
+ BCM2835_GPIO_FSEL_ALT3 = 0x07, /*!< Alternate function 3 0b111 */
+ BCM2835_GPIO_FSEL_ALT4 = 0x03, /*!< Alternate function 4 0b011 */
+ BCM2835_GPIO_FSEL_ALT5 = 0x02, /*!< Alternate function 5 0b010 */
+ BCM2835_GPIO_FSEL_MASK = 0x07 /*!< Function select bits mask 0b111 */
+} bcm2835FunctionSelect;
+
+/*! \brief bcm2835PUDControl
+ Pullup/Pulldown defines for bcm2835_gpio_pud()
+*/
+typedef enum
+{
+ BCM2835_GPIO_PUD_OFF = 0x00, /*!< Off ? disable pull-up/down 0b00 */
+ BCM2835_GPIO_PUD_DOWN = 0x01, /*!< Enable Pull Down control 0b01 */
+ BCM2835_GPIO_PUD_UP = 0x02 /*!< Enable Pull Up control 0b10 */
+} bcm2835PUDControl;
+
+/*! Pad control register offsets from BCM2835_GPIO_PADS */
+#define BCM2835_PADS_GPIO_0_27 0x002c /*!< Pad control register for pads 0 to 27 */
+#define BCM2835_PADS_GPIO_28_45 0x0030 /*!< Pad control register for pads 28 to 45 */
+#define BCM2835_PADS_GPIO_46_53 0x0034 /*!< Pad control register for pads 46 to 53 */
+
+/*! Pad Control masks */
+#define BCM2835_PAD_PASSWRD (0x5A << 24) /*!< Password to enable setting pad mask */
+#define BCM2835_PAD_SLEW_RATE_UNLIMITED 0x10 /*!< Slew rate unlimited */
+#define BCM2835_PAD_HYSTERESIS_ENABLED 0x08 /*!< Hysteresis enabled */
+#define BCM2835_PAD_DRIVE_2mA 0x00 /*!< 2mA drive current */
+#define BCM2835_PAD_DRIVE_4mA 0x01 /*!< 4mA drive current */
+#define BCM2835_PAD_DRIVE_6mA 0x02 /*!< 6mA drive current */
+#define BCM2835_PAD_DRIVE_8mA 0x03 /*!< 8mA drive current */
+#define BCM2835_PAD_DRIVE_10mA 0x04 /*!< 10mA drive current */
+#define BCM2835_PAD_DRIVE_12mA 0x05 /*!< 12mA drive current */
+#define BCM2835_PAD_DRIVE_14mA 0x06 /*!< 14mA drive current */
+#define BCM2835_PAD_DRIVE_16mA 0x07 /*!< 16mA drive current */
+
+/*! \brief bcm2835PadGroup
+ Pad group specification for bcm2835_gpio_pad()
+*/
+typedef enum
+{
+ BCM2835_PAD_GROUP_GPIO_0_27 = 0, /*!< Pad group for GPIO pads 0 to 27 */
+ BCM2835_PAD_GROUP_GPIO_28_45 = 1, /*!< Pad group for GPIO pads 28 to 45 */
+ BCM2835_PAD_GROUP_GPIO_46_53 = 2 /*!< Pad group for GPIO pads 46 to 53 */
+} bcm2835PadGroup;
+
+/*! \brief GPIO Pin Numbers
+
+ Here we define Raspberry Pin GPIO pins on P1 in terms of the underlying BCM GPIO pin numbers.
+ These can be passed as a pin number to any function requiring a pin.
+ Not all pins on the RPi 26 bin IDE plug are connected to GPIO pins
+ and some can adopt an alternate function.
+ RPi version 2 has some slightly different pinouts, and these are values RPI_V2_*.
+ RPi B+ has yet differnet pinouts and these are defined in RPI_BPLUS_*.
+ At bootup, pins 8 and 10 are set to UART0_TXD, UART0_RXD (ie the alt0 function) respectively
+ When SPI0 is in use (ie after bcm2835_spi_begin()), SPI0 pins are dedicated to SPI
+ and cant be controlled independently.
+ If you are using the RPi Compute Module, just use the GPIO number: there is no need to use one of these
+ symbolic names
+*/
+typedef enum
+{
+ RPI_GPIO_P1_03 = 0, /*!< Version 1, Pin P1-03 */
+ RPI_GPIO_P1_05 = 1, /*!< Version 1, Pin P1-05 */
+ RPI_GPIO_P1_07 = 4, /*!< Version 1, Pin P1-07 */
+ RPI_GPIO_P1_08 = 14, /*!< Version 1, Pin P1-08, defaults to alt function 0 UART0_TXD */
+ RPI_GPIO_P1_10 = 15, /*!< Version 1, Pin P1-10, defaults to alt function 0 UART0_RXD */
+ RPI_GPIO_P1_11 = 17, /*!< Version 1, Pin P1-11 */
+ RPI_GPIO_P1_12 = 18, /*!< Version 1, Pin P1-12, can be PWM channel 0 in ALT FUN 5 */
+ RPI_GPIO_P1_13 = 21, /*!< Version 1, Pin P1-13 */
+ RPI_GPIO_P1_15 = 22, /*!< Version 1, Pin P1-15 */
+ RPI_GPIO_P1_16 = 23, /*!< Version 1, Pin P1-16 */
+ RPI_GPIO_P1_18 = 24, /*!< Version 1, Pin P1-18 */
+ RPI_GPIO_P1_19 = 10, /*!< Version 1, Pin P1-19, MOSI when SPI0 in use */
+ RPI_GPIO_P1_21 = 9, /*!< Version 1, Pin P1-21, MISO when SPI0 in use */
+ RPI_GPIO_P1_22 = 25, /*!< Version 1, Pin P1-22 */
+ RPI_GPIO_P1_23 = 11, /*!< Version 1, Pin P1-23, CLK when SPI0 in use */
+ RPI_GPIO_P1_24 = 8, /*!< Version 1, Pin P1-24, CE0 when SPI0 in use */
+ RPI_GPIO_P1_26 = 7, /*!< Version 1, Pin P1-26, CE1 when SPI0 in use */
+
+ /* RPi Version 2 */
+ RPI_V2_GPIO_P1_03 = 2, /*!< Version 2, Pin P1-03 */
+ RPI_V2_GPIO_P1_05 = 3, /*!< Version 2, Pin P1-05 */
+ RPI_V2_GPIO_P1_07 = 4, /*!< Version 2, Pin P1-07 */
+ RPI_V2_GPIO_P1_08 = 14, /*!< Version 2, Pin P1-08, defaults to alt function 0 UART0_TXD */
+ RPI_V2_GPIO_P1_10 = 15, /*!< Version 2, Pin P1-10, defaults to alt function 0 UART0_RXD */
+ RPI_V2_GPIO_P1_11 = 17, /*!< Version 2, Pin P1-11 */
+ RPI_V2_GPIO_P1_12 = 18, /*!< Version 2, Pin P1-12, can be PWM channel 0 in ALT FUN 5 */
+ RPI_V2_GPIO_P1_13 = 27, /*!< Version 2, Pin P1-13 */
+ RPI_V2_GPIO_P1_15 = 22, /*!< Version 2, Pin P1-15 */
+ RPI_V2_GPIO_P1_16 = 23, /*!< Version 2, Pin P1-16 */
+ RPI_V2_GPIO_P1_18 = 24, /*!< Version 2, Pin P1-18 */
+ RPI_V2_GPIO_P1_19 = 10, /*!< Version 2, Pin P1-19, MOSI when SPI0 in use */
+ RPI_V2_GPIO_P1_21 = 9, /*!< Version 2, Pin P1-21, MISO when SPI0 in use */
+ RPI_V2_GPIO_P1_22 = 25, /*!< Version 2, Pin P1-22 */
+ RPI_V2_GPIO_P1_23 = 11, /*!< Version 2, Pin P1-23, CLK when SPI0 in use */
+ RPI_V2_GPIO_P1_24 = 8, /*!< Version 2, Pin P1-24, CE0 when SPI0 in use */
+ RPI_V2_GPIO_P1_26 = 7, /*!< Version 2, Pin P1-26, CE1 when SPI0 in use */
+ RPI_V2_GPIO_P1_29 = 5, /*!< Version 2, Pin P1-29 */
+ RPI_V2_GPIO_P1_31 = 6, /*!< Version 2, Pin P1-31 */
+ RPI_V2_GPIO_P1_32 = 12, /*!< Version 2, Pin P1-32 */
+ RPI_V2_GPIO_P1_33 = 13, /*!< Version 2, Pin P1-33 */
+ RPI_V2_GPIO_P1_35 = 19, /*!< Version 2, Pin P1-35 */
+ RPI_V2_GPIO_P1_36 = 16, /*!< Version 2, Pin P1-36 */
+ RPI_V2_GPIO_P1_37 = 26, /*!< Version 2, Pin P1-37 */
+ RPI_V2_GPIO_P1_38 = 20, /*!< Version 2, Pin P1-38 */
+ RPI_V2_GPIO_P1_40 = 21, /*!< Version 2, Pin P1-40 */
+
+ /* RPi Version 2, new plug P5 */
+ RPI_V2_GPIO_P5_03 = 28, /*!< Version 2, Pin P5-03 */
+ RPI_V2_GPIO_P5_04 = 29, /*!< Version 2, Pin P5-04 */
+ RPI_V2_GPIO_P5_05 = 30, /*!< Version 2, Pin P5-05 */
+ RPI_V2_GPIO_P5_06 = 31, /*!< Version 2, Pin P5-06 */
+
+ /* RPi B+ J8 header, also RPi 2 40 pin GPIO header */
+ RPI_BPLUS_GPIO_J8_03 = 2, /*!< B+, Pin J8-03 */
+ RPI_BPLUS_GPIO_J8_05 = 3, /*!< B+, Pin J8-05 */
+ RPI_BPLUS_GPIO_J8_07 = 4, /*!< B+, Pin J8-07 */
+ RPI_BPLUS_GPIO_J8_08 = 14, /*!< B+, Pin J8-08, defaults to alt function 0 UART0_TXD */
+ RPI_BPLUS_GPIO_J8_10 = 15, /*!< B+, Pin J8-10, defaults to alt function 0 UART0_RXD */
+ RPI_BPLUS_GPIO_J8_11 = 17, /*!< B+, Pin J8-11 */
+ RPI_BPLUS_GPIO_J8_12 = 18, /*!< B+, Pin J8-12, can be PWM channel 0 in ALT FUN 5 */
+ RPI_BPLUS_GPIO_J8_13 = 27, /*!< B+, Pin J8-13 */
+ RPI_BPLUS_GPIO_J8_15 = 22, /*!< B+, Pin J8-15 */
+ RPI_BPLUS_GPIO_J8_16 = 23, /*!< B+, Pin J8-16 */
+ RPI_BPLUS_GPIO_J8_18 = 24, /*!< B+, Pin J8-18 */
+ RPI_BPLUS_GPIO_J8_19 = 10, /*!< B+, Pin J8-19, MOSI when SPI0 in use */
+ RPI_BPLUS_GPIO_J8_21 = 9, /*!< B+, Pin J8-21, MISO when SPI0 in use */
+ RPI_BPLUS_GPIO_J8_22 = 25, /*!< B+, Pin J8-22 */
+ RPI_BPLUS_GPIO_J8_23 = 11, /*!< B+, Pin J8-23, CLK when SPI0 in use */
+ RPI_BPLUS_GPIO_J8_24 = 8, /*!< B+, Pin J8-24, CE0 when SPI0 in use */
+ RPI_BPLUS_GPIO_J8_26 = 7, /*!< B+, Pin J8-26, CE1 when SPI0 in use */
+ RPI_BPLUS_GPIO_J8_29 = 5, /*!< B+, Pin J8-29, */
+ RPI_BPLUS_GPIO_J8_31 = 6, /*!< B+, Pin J8-31, */
+ RPI_BPLUS_GPIO_J8_32 = 12, /*!< B+, Pin J8-32, */
+ RPI_BPLUS_GPIO_J8_33 = 13, /*!< B+, Pin J8-33, */
+ RPI_BPLUS_GPIO_J8_35 = 19, /*!< B+, Pin J8-35, */
+ RPI_BPLUS_GPIO_J8_36 = 16, /*!< B+, Pin J8-36, */
+ RPI_BPLUS_GPIO_J8_37 = 26, /*!< B+, Pin J8-37, */
+ RPI_BPLUS_GPIO_J8_38 = 20, /*!< B+, Pin J8-38, */
+ RPI_BPLUS_GPIO_J8_40 = 21 /*!< B+, Pin J8-40, */
+} RPiGPIOPin;
+
+/* Defines for SPI
+ GPIO register offsets from BCM2835_SPI0_BASE.
+ Offsets into the SPI Peripheral block in bytes per 10.5 SPI Register Map
+*/
+#define BCM2835_SPI0_CS 0x0000 /*!< SPI Master Control and Status */
+#define BCM2835_SPI0_FIFO 0x0004 /*!< SPI Master TX and RX FIFOs */
+#define BCM2835_SPI0_CLK 0x0008 /*!< SPI Master Clock Divider */
+#define BCM2835_SPI0_DLEN 0x000c /*!< SPI Master Data Length */
+#define BCM2835_SPI0_LTOH 0x0010 /*!< SPI LOSSI mode TOH */
+#define BCM2835_SPI0_DC 0x0014 /*!< SPI DMA DREQ Controls */
+
+/* Register masks for SPI0_CS */
+#define BCM2835_SPI0_CS_LEN_LONG 0x02000000 /*!< Enable Long data word in Lossi mode if DMA_LEN is set */
+#define BCM2835_SPI0_CS_DMA_LEN 0x01000000 /*!< Enable DMA mode in Lossi mode */
+#define BCM2835_SPI0_CS_CSPOL2 0x00800000 /*!< Chip Select 2 Polarity */
+#define BCM2835_SPI0_CS_CSPOL1 0x00400000 /*!< Chip Select 1 Polarity */
+#define BCM2835_SPI0_CS_CSPOL0 0x00200000 /*!< Chip Select 0 Polarity */
+#define BCM2835_SPI0_CS_RXF 0x00100000 /*!< RXF - RX FIFO Full */
+#define BCM2835_SPI0_CS_RXR 0x00080000 /*!< RXR RX FIFO needs Reading (full) */
+#define BCM2835_SPI0_CS_TXD 0x00040000 /*!< TXD TX FIFO can accept Data */
+#define BCM2835_SPI0_CS_RXD 0x00020000 /*!< RXD RX FIFO contains Data */
+#define BCM2835_SPI0_CS_DONE 0x00010000 /*!< Done transfer Done */
+#define BCM2835_SPI0_CS_TE_EN 0x00008000 /*!< Unused */
+#define BCM2835_SPI0_CS_LMONO 0x00004000 /*!< Unused */
+#define BCM2835_SPI0_CS_LEN 0x00002000 /*!< LEN LoSSI enable */
+#define BCM2835_SPI0_CS_REN 0x00001000 /*!< REN Read Enable */
+#define BCM2835_SPI0_CS_ADCS 0x00000800 /*!< ADCS Automatically Deassert Chip Select */
+#define BCM2835_SPI0_CS_INTR 0x00000400 /*!< INTR Interrupt on RXR */
+#define BCM2835_SPI0_CS_INTD 0x00000200 /*!< INTD Interrupt on Done */
+#define BCM2835_SPI0_CS_DMAEN 0x00000100 /*!< DMAEN DMA Enable */
+#define BCM2835_SPI0_CS_TA 0x00000080 /*!< Transfer Active */
+#define BCM2835_SPI0_CS_CSPOL 0x00000040 /*!< Chip Select Polarity */
+#define BCM2835_SPI0_CS_CLEAR 0x00000030 /*!< Clear FIFO Clear RX and TX */
+#define BCM2835_SPI0_CS_CLEAR_RX 0x00000020 /*!< Clear FIFO Clear RX */
+#define BCM2835_SPI0_CS_CLEAR_TX 0x00000010 /*!< Clear FIFO Clear TX */
+#define BCM2835_SPI0_CS_CPOL 0x00000008 /*!< Clock Polarity */
+#define BCM2835_SPI0_CS_CPHA 0x00000004 /*!< Clock Phase */
+#define BCM2835_SPI0_CS_CS 0x00000003 /*!< Chip Select */
+
+/*! \brief bcm2835SPIBitOrder SPI Bit order
+ Specifies the SPI data bit ordering for bcm2835_spi_setBitOrder()
+*/
+typedef enum
+{
+ BCM2835_SPI_BIT_ORDER_LSBFIRST = 0, /*!< LSB First */
+ BCM2835_SPI_BIT_ORDER_MSBFIRST = 1 /*!< MSB First */
+}bcm2835SPIBitOrder;
+
+/*! \brief SPI Data mode
+ Specify the SPI data mode to be passed to bcm2835_spi_setDataMode()
+*/
+typedef enum
+{
+ BCM2835_SPI_MODE0 = 0, /*!< CPOL = 0, CPHA = 0 */
+ BCM2835_SPI_MODE1 = 1, /*!< CPOL = 0, CPHA = 1 */
+ BCM2835_SPI_MODE2 = 2, /*!< CPOL = 1, CPHA = 0 */
+ BCM2835_SPI_MODE3 = 3 /*!< CPOL = 1, CPHA = 1 */
+}bcm2835SPIMode;
+
+/*! \brief bcm2835SPIChipSelect
+ Specify the SPI chip select pin(s)
+*/
+typedef enum
+{
+ BCM2835_SPI_CS0 = 0, /*!< Chip Select 0 */
+ BCM2835_SPI_CS1 = 1, /*!< Chip Select 1 */
+ BCM2835_SPI_CS2 = 2, /*!< Chip Select 2 (ie pins CS1 and CS2 are asserted) */
+ BCM2835_SPI_CS_NONE = 3 /*!< No CS, control it yourself */
+} bcm2835SPIChipSelect;
+
+/*! \brief bcm2835SPIClockDivider
+ Specifies the divider used to generate the SPI clock from the system clock.
+ Figures below give the divider, clock period and clock frequency.
+ Clock divided is based on nominal base clock rate of 250MHz
+ It is reported that (contrary to the documentation) any even divider may used.
+ The frequencies shown for each divider have been confirmed by measurement
+*/
+typedef enum
+{
+ BCM2835_SPI_CLOCK_DIVIDER_65536 = 0, /*!< 65536 = 262.144us = 3.814697260kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_32768 = 32768, /*!< 32768 = 131.072us = 7.629394531kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_16384 = 16384, /*!< 16384 = 65.536us = 15.25878906kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_8192 = 8192, /*!< 8192 = 32.768us = 30/51757813kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_4096 = 4096, /*!< 4096 = 16.384us = 61.03515625kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_2048 = 2048, /*!< 2048 = 8.192us = 122.0703125kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_1024 = 1024, /*!< 1024 = 4.096us = 244.140625kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_512 = 512, /*!< 512 = 2.048us = 488.28125kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_256 = 256, /*!< 256 = 1.024us = 976.5625kHz */
+ BCM2835_SPI_CLOCK_DIVIDER_128 = 128, /*!< 128 = 512ns = = 1.953125MHz */
+ BCM2835_SPI_CLOCK_DIVIDER_64 = 64, /*!< 64 = 256ns = 3.90625MHz */
+ BCM2835_SPI_CLOCK_DIVIDER_32 = 32, /*!< 32 = 128ns = 7.8125MHz */
+ BCM2835_SPI_CLOCK_DIVIDER_16 = 16, /*!< 16 = 64ns = 15.625MHz */
+ BCM2835_SPI_CLOCK_DIVIDER_8 = 8, /*!< 8 = 32ns = 31.25MHz */
+ BCM2835_SPI_CLOCK_DIVIDER_4 = 4, /*!< 4 = 16ns = 62.5MHz */
+ BCM2835_SPI_CLOCK_DIVIDER_2 = 2, /*!< 2 = 8ns = 125MHz, fastest you can get */
+ BCM2835_SPI_CLOCK_DIVIDER_1 = 1 /*!< 1 = 262.144us = 3.814697260kHz, same as 0/65536 */
+} bcm2835SPIClockDivider;
+
+/* Defines for I2C
+ GPIO register offsets from BCM2835_BSC*_BASE.
+ Offsets into the BSC Peripheral block in bytes per 3.1 BSC Register Map
+*/
+#define BCM2835_BSC_C 0x0000 /*!< BSC Master Control */
+#define BCM2835_BSC_S 0x0004 /*!< BSC Master Status */
+#define BCM2835_BSC_DLEN 0x0008 /*!< BSC Master Data Length */
+#define BCM2835_BSC_A 0x000c /*!< BSC Master Slave Address */
+#define BCM2835_BSC_FIFO 0x0010 /*!< BSC Master Data FIFO */
+#define BCM2835_BSC_DIV 0x0014 /*!< BSC Master Clock Divider */
+#define BCM2835_BSC_DEL 0x0018 /*!< BSC Master Data Delay */
+#define BCM2835_BSC_CLKT 0x001c /*!< BSC Master Clock Stretch Timeout */
+
+/* Register masks for BSC_C */
+#define BCM2835_BSC_C_I2CEN 0x00008000 /*!< I2C Enable, 0 = disabled, 1 = enabled */
+#define BCM2835_BSC_C_INTR 0x00000400 /*!< Interrupt on RX */
+#define BCM2835_BSC_C_INTT 0x00000200 /*!< Interrupt on TX */
+#define BCM2835_BSC_C_INTD 0x00000100 /*!< Interrupt on DONE */
+#define BCM2835_BSC_C_ST 0x00000080 /*!< Start transfer, 1 = Start a new transfer */
+#define BCM2835_BSC_C_CLEAR_1 0x00000020 /*!< Clear FIFO Clear */
+#define BCM2835_BSC_C_CLEAR_2 0x00000010 /*!< Clear FIFO Clear */
+#define BCM2835_BSC_C_READ 0x00000001 /*!< Read transfer */
+
+/* Register masks for BSC_S */
+#define BCM2835_BSC_S_CLKT 0x00000200 /*!< Clock stretch timeout */
+#define BCM2835_BSC_S_ERR 0x00000100 /*!< ACK error */
+#define BCM2835_BSC_S_RXF 0x00000080 /*!< RXF FIFO full, 0 = FIFO is not full, 1 = FIFO is full */
+#define BCM2835_BSC_S_TXE 0x00000040 /*!< TXE FIFO full, 0 = FIFO is not full, 1 = FIFO is full */
+#define BCM2835_BSC_S_RXD 0x00000020 /*!< RXD FIFO contains data */
+#define BCM2835_BSC_S_TXD 0x00000010 /*!< TXD FIFO can accept data */
+#define BCM2835_BSC_S_RXR 0x00000008 /*!< RXR FIFO needs reading (full) */
+#define BCM2835_BSC_S_TXW 0x00000004 /*!< TXW FIFO needs writing (full) */
+#define BCM2835_BSC_S_DONE 0x00000002 /*!< Transfer DONE */
+#define BCM2835_BSC_S_TA 0x00000001 /*!< Transfer Active */
+
+#define BCM2835_BSC_FIFO_SIZE 16 /*!< BSC FIFO size */
+
+/*! \brief bcm2835I2CClockDivider
+ Specifies the divider used to generate the I2C clock from the system clock.
+ Clock divided is based on nominal base clock rate of 250MHz
+*/
+typedef enum
+{
+ BCM2835_I2C_CLOCK_DIVIDER_2500 = 2500, /*!< 2500 = 10us = 100 kHz */
+ BCM2835_I2C_CLOCK_DIVIDER_626 = 626, /*!< 622 = 2.504us = 399.3610 kHz */
+ BCM2835_I2C_CLOCK_DIVIDER_150 = 150, /*!< 150 = 60ns = 1.666 MHz (default at reset) */
+ BCM2835_I2C_CLOCK_DIVIDER_148 = 148 /*!< 148 = 59ns = 1.689 MHz */
+} bcm2835I2CClockDivider;
+
+/*! \brief bcm2835I2CReasonCodes
+ Specifies the reason codes for the bcm2835_i2c_write and bcm2835_i2c_read functions.
+*/
+typedef enum
+{
+ BCM2835_I2C_REASON_OK = 0x00, /*!< Success */
+ BCM2835_I2C_REASON_ERROR_NACK = 0x01, /*!< Received a NACK */
+ BCM2835_I2C_REASON_ERROR_CLKT = 0x02, /*!< Received Clock Stretch Timeout */
+ BCM2835_I2C_REASON_ERROR_DATA = 0x04 /*!< Not all data is sent / received */
+} bcm2835I2CReasonCodes;
+
+/* Defines for ST
+ GPIO register offsets from BCM2835_ST_BASE.
+ Offsets into the ST Peripheral block in bytes per 12.1 System Timer Registers
+ The System Timer peripheral provides four 32-bit timer channels and a single 64-bit free running counter.
+ BCM2835_ST_CLO is the System Timer Counter Lower bits register.
+ The system timer free-running counter lower register is a read-only register that returns the current value
+ of the lower 32-bits of the free running counter.
+ BCM2835_ST_CHI is the System Timer Counter Upper bits register.
+ The system timer free-running counter upper register is a read-only register that returns the current value
+ of the upper 32-bits of the free running counter.
+*/
+#define BCM2835_ST_CS 0x0000 /*!< System Timer Control/Status */
+#define BCM2835_ST_CLO 0x0004 /*!< System Timer Counter Lower 32 bits */
+#define BCM2835_ST_CHI 0x0008 /*!< System Timer Counter Upper 32 bits */
+
+/*! @} */
+
+
+/* Defines for PWM, word offsets (ie 4 byte multiples) */
+#define BCM2835_PWM_CONTROL 0
+#define BCM2835_PWM_STATUS 1
+#define BCM2835_PWM_DMAC 2
+#define BCM2835_PWM0_RANGE 4
+#define BCM2835_PWM0_DATA 5
+#define BCM2835_PWM_FIF1 6
+#define BCM2835_PWM1_RANGE 8
+#define BCM2835_PWM1_DATA 9
+
+/* Defines for PWM Clock, word offsets (ie 4 byte multiples) */
+#define BCM2835_PWMCLK_CNTL 40
+#define BCM2835_PWMCLK_DIV 41
+#define BCM2835_PWM_PASSWRD (0x5A << 24) /*!< Password to enable setting PWM clock */
+
+#define BCM2835_PWM1_MS_MODE 0x8000 /*!< Run in Mark/Space mode */
+#define BCM2835_PWM1_USEFIFO 0x2000 /*!< Data from FIFO */
+#define BCM2835_PWM1_REVPOLAR 0x1000 /*!< Reverse polarity */
+#define BCM2835_PWM1_OFFSTATE 0x0800 /*!< Ouput Off state */
+#define BCM2835_PWM1_REPEATFF 0x0400 /*!< Repeat last value if FIFO empty */
+#define BCM2835_PWM1_SERIAL 0x0200 /*!< Run in serial mode */
+#define BCM2835_PWM1_ENABLE 0x0100 /*!< Channel Enable */
+
+#define BCM2835_PWM0_MS_MODE 0x0080 /*!< Run in Mark/Space mode */
+#define BCM2835_PWM_CLEAR_FIFO 0x0040 /*!< Clear FIFO */
+#define BCM2835_PWM0_USEFIFO 0x0020 /*!< Data from FIFO */
+#define BCM2835_PWM0_REVPOLAR 0x0010 /*!< Reverse polarity */
+#define BCM2835_PWM0_OFFSTATE 0x0008 /*!< Ouput Off state */
+#define BCM2835_PWM0_REPEATFF 0x0004 /*!< Repeat last value if FIFO empty */
+#define BCM2835_PWM0_SERIAL 0x0002 /*!< Run in serial mode */
+#define BCM2835_PWM0_ENABLE 0x0001 /*!< Channel Enable */
+
+/*! \brief bcm2835PWMClockDivider
+ Specifies the divider used to generate the PWM clock from the system clock.
+ Figures below give the divider, clock period and clock frequency.
+ Clock divided is based on nominal PWM base clock rate of 19.2MHz
+ The frequencies shown for each divider have been confirmed by measurement
+*/
+typedef enum
+{
+ BCM2835_PWM_CLOCK_DIVIDER_2048 = 2048, /*!< 2048 = 9.375kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_1024 = 1024, /*!< 1024 = 18.75kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_512 = 512, /*!< 512 = 37.5kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_256 = 256, /*!< 256 = 75kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_128 = 128, /*!< 128 = 150kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_64 = 64, /*!< 64 = 300kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_32 = 32, /*!< 32 = 600.0kHz */
+ BCM2835_PWM_CLOCK_DIVIDER_16 = 16, /*!< 16 = 1.2MHz */
+ BCM2835_PWM_CLOCK_DIVIDER_8 = 8, /*!< 8 = 2.4MHz */
+ BCM2835_PWM_CLOCK_DIVIDER_4 = 4, /*!< 4 = 4.8MHz */
+ BCM2835_PWM_CLOCK_DIVIDER_2 = 2, /*!< 2 = 9.6MHz, fastest you can get */
+ BCM2835_PWM_CLOCK_DIVIDER_1 = 1 /*!< 1 = 4.6875kHz, same as divider 4096 */
+} bcm2835PWMClockDivider;
+
+/* Historical name compatibility */
+#ifndef BCM2835_NO_DELAY_COMPATIBILITY
+#define delay(x) bcm2835_delay(x)
+#define delayMicroseconds(x) bcm2835_delayMicroseconds(x)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*! \defgroup init Library initialisation and management
+ These functions allow you to intialise and control the bcm2835 library
+ @{
+ */
+
+ /*! Initialise the library by opening /dev/mem and getting pointers to the
+ internal memory for BCM 2835 device registers. You must call this (successfully)
+ before calling any other
+ functions in this library (except bcm2835_set_debug).
+ If bcm2835_init() fails by returning 0,
+ calling any other function may result in crashes or other failures.
+ Prints messages to stderr in case of errors.
+ \return 1 if successful else 0
+ */
+ extern int bcm2835_init(void);
+
+ /*! Close the library, deallocating any allocated memory and closing /dev/mem
+ \return 1 if successful else 0
+ */
+ extern int bcm2835_close(void);
+
+ /*! Sets the debug level of the library.
+ A value of 1 prevents mapping to /dev/mem, and makes the library print out
+ what it would do, rather than accessing the GPIO registers.
+ A value of 0, the default, causes normal operation.
+ Call this before calling bcm2835_init();
+ \param[in] debug The new debug level. 1 means debug
+ */
+ extern void bcm2835_set_debug(uint8_t debug);
+
+ /*! Returns the version number of the library, same as BCM2835_VERSION
+ \return the current library version number
+ */
+ extern unsigned int bcm2835_version(void);
+
+ /*! @} */
+
+ /*! \defgroup lowlevel Low level register access
+ These functions provide low level register access, and should not generally
+ need to be used
+
+ @{
+ */
+
+ /*! Gets the base of a register
+ \param[in] regbase You can use one of the common values BCM2835_REGBASE_*
+ in \ref bcm2835RegisterBase
+ \return the register base
+ \sa Physical Addresses
+ */
+ extern uint32_t* bcm2835_regbase(uint8_t regbase);
+
+ /*! Reads 32 bit value from a peripheral address WITH a memory barrier before and after each read.
+ This is safe, but slow. The MB before protects this read from any in-flight reads that didn't
+ use a MB. The MB after protects subsequent reads from another peripheral.
+
+ \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc.
+ \return the value read from the 32 bit register
+ \sa Physical Addresses
+ */
+ extern uint32_t bcm2835_peri_read(volatile uint32_t* paddr);
+
+ /*! Reads 32 bit value from a peripheral address WITHOUT the read barriers
+ You should only use this when:
+ o your code has previously called bcm2835_peri_read() for a register
+ within the same peripheral, and no read or write to another peripheral has occurred since.
+ o your code has called bcm2835_memory_barrier() since the last access to ANOTHER peripheral.
+
+ \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc.
+ \return the value read from the 32 bit register
+ \sa Physical Addresses
+ */
+ extern uint32_t bcm2835_peri_read_nb(volatile uint32_t* paddr);
+
+
+ /*! Writes 32 bit value from a peripheral address WITH a memory barrier before and after each write
+ This is safe, but slow. The MB before ensures that any in-flight write to another peripheral
+ completes before this write is issued. The MB after ensures that subsequent reads and writes
+ to another peripheral will see the effect of this write.
+
+ This is a tricky optimization; if you aren't sure, use the barrier version.
+
+ \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc.
+ \param[in] value The 32 bit value to write
+ \sa Physical Addresses
+ */
+ extern void bcm2835_peri_write(volatile uint32_t* paddr, uint32_t value);
+
+ /*! Writes 32 bit value from a peripheral address without the write barrier
+ You should only use this when:
+ o your code has previously called bcm2835_peri_write() for a register
+ within the same peripheral, and no other peripheral access has occurred since.
+ o your code has called bcm2835_memory_barrier() since the last access to ANOTHER peripheral.
+
+ This is a tricky optimization; if you aren't sure, use the barrier version.
+
+ \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc.
+ \param[in] value The 32 bit value to write
+ \sa Physical Addresses
+ */
+ extern void bcm2835_peri_write_nb(volatile uint32_t* paddr, uint32_t value);
+
+ /*! Alters a number of bits in a 32 peripheral regsiter.
+ It reads the current valu and then alters the bits defines as 1 in mask,
+ according to the bit value in value.
+ All other bits that are 0 in the mask are unaffected.
+ Use this to alter a subset of the bits in a register.
+ Memory barriers are used. Note that this is not atomic; an interrupt
+ routine can cause unexpected results.
+ \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc.
+ \param[in] value The 32 bit value to write, masked in by mask.
+ \param[in] mask Bitmask that defines the bits that will be altered in the register.
+ \sa Physical Addresses
+ */
+ extern void bcm2835_peri_set_bits(volatile uint32_t* paddr, uint32_t value, uint32_t mask);
+ /*! @} end of lowlevel */
+
+ /*! \defgroup gpio GPIO register access
+ These functions allow you to control the GPIO interface. You can set the
+ function of each GPIO pin, read the input state and set the output state.
+ @{
+ */
+
+ /*! Sets the Function Select register for the given pin, which configures
+ the pin as Input, Output or one of the 6 alternate functions.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \param[in] mode Mode to set the pin to, one of BCM2835_GPIO_FSEL_* from \ref bcm2835FunctionSelect
+ */
+ extern void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode);
+
+ /*! Sets the specified pin output to
+ HIGH.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \sa bcm2835_gpio_write()
+ */
+ extern void bcm2835_gpio_set(uint8_t pin);
+
+ /*! Sets the specified pin output to
+ LOW.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \sa bcm2835_gpio_write()
+ */
+ extern void bcm2835_gpio_clr(uint8_t pin);
+
+ /*! Sets any of the first 32 GPIO output pins specified in the mask to
+ HIGH.
+ \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
+ \sa bcm2835_gpio_write_multi()
+ */
+ extern void bcm2835_gpio_set_multi(uint32_t mask);
+
+ /*! Sets any of the first 32 GPIO output pins specified in the mask to
+ LOW.
+ \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
+ \sa bcm2835_gpio_write_multi()
+ */
+ extern void bcm2835_gpio_clr_multi(uint32_t mask);
+
+ /*! Reads the current level on the specified
+ pin and returns either HIGH or LOW. Works whether or not the pin
+ is an input or an output.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \return the current level either HIGH or LOW
+ */
+ extern uint8_t bcm2835_gpio_lev(uint8_t pin);
+
+ /*! Event Detect Status.
+ Tests whether the specified pin has detected a level or edge
+ as requested by bcm2835_gpio_ren(), bcm2835_gpio_fen(), bcm2835_gpio_hen(),
+ bcm2835_gpio_len(), bcm2835_gpio_aren(), bcm2835_gpio_afen().
+ Clear the flag for a given pin by calling bcm2835_gpio_set_eds(pin);
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \return HIGH if the event detect status for the given pin is true.
+ */
+ extern uint8_t bcm2835_gpio_eds(uint8_t pin);
+
+ /*! Sets the Event Detect Status register for a given pin to 1,
+ which has the effect of clearing the flag. Use this afer seeing
+ an Event Detect Status on the pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_set_eds(uint8_t pin);
+
+ /*! Enable Rising Edge Detect Enable for the specified pin.
+ When a rising edge is detected, sets the appropriate pin in Event Detect Status.
+ The GPRENn registers use
+ synchronous edge detection. This means the input signal is sampled using the
+ system clock and then it is looking for a ?011? pattern on the sampled signal. This
+ has the effect of suppressing glitches.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_ren(uint8_t pin);
+
+ /*! Disable Rising Edge Detect Enable for the specified pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_clr_ren(uint8_t pin);
+
+ /*! Enable Falling Edge Detect Enable for the specified pin.
+ When a falling edge is detected, sets the appropriate pin in Event Detect Status.
+ The GPRENn registers use
+ synchronous edge detection. This means the input signal is sampled using the
+ system clock and then it is looking for a ?100? pattern on the sampled signal. This
+ has the effect of suppressing glitches.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_fen(uint8_t pin);
+
+ /*! Disable Falling Edge Detect Enable for the specified pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_clr_fen(uint8_t pin);
+
+ /*! Enable High Detect Enable for the specified pin.
+ When a HIGH level is detected on the pin, sets the appropriate pin in Event Detect Status.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_hen(uint8_t pin);
+
+ /*! Disable High Detect Enable for the specified pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_clr_hen(uint8_t pin);
+
+ /*! Enable Low Detect Enable for the specified pin.
+ When a LOW level is detected on the pin, sets the appropriate pin in Event Detect Status.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_len(uint8_t pin);
+
+ /*! Disable Low Detect Enable for the specified pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_clr_len(uint8_t pin);
+
+ /*! Enable Asynchronous Rising Edge Detect Enable for the specified pin.
+ When a rising edge is detected, sets the appropriate pin in Event Detect Status.
+ Asynchronous means the incoming signal is not sampled by the system clock. As such
+ rising edges of very short duration can be detected.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_aren(uint8_t pin);
+
+ /*! Disable Asynchronous Rising Edge Detect Enable for the specified pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_clr_aren(uint8_t pin);
+
+ /*! Enable Asynchronous Falling Edge Detect Enable for the specified pin.
+ When a falling edge is detected, sets the appropriate pin in Event Detect Status.
+ Asynchronous means the incoming signal is not sampled by the system clock. As such
+ falling edges of very short duration can be detected.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_afen(uint8_t pin);
+
+ /*! Disable Asynchronous Falling Edge Detect Enable for the specified pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ */
+ extern void bcm2835_gpio_clr_afen(uint8_t pin);
+
+ /*! Sets the Pull-up/down register for the given pin. This is
+ used with bcm2835_gpio_pudclk() to set the Pull-up/down resistor for the given pin.
+ However, it is usually more convenient to use bcm2835_gpio_set_pud().
+ \param[in] pud The desired Pull-up/down mode. One of BCM2835_GPIO_PUD_* from bcm2835PUDControl
+ \sa bcm2835_gpio_set_pud()
+ */
+ extern void bcm2835_gpio_pud(uint8_t pud);
+
+ /*! Clocks the Pull-up/down value set earlier by bcm2835_gpio_pud() into the pin.
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \param[in] on HIGH to clock the value from bcm2835_gpio_pud() into the pin.
+ LOW to remove the clock.
+ \sa bcm2835_gpio_set_pud()
+ */
+ extern void bcm2835_gpio_pudclk(uint8_t pin, uint8_t on);
+
+ /*! Reads and returns the Pad Control for the given GPIO group.
+ \param[in] group The GPIO pad group number, one of BCM2835_PAD_GROUP_GPIO_*
+ \return Mask of bits from BCM2835_PAD_* from \ref bcm2835PadGroup
+ */
+ extern uint32_t bcm2835_gpio_pad(uint8_t group);
+
+ /*! Sets the Pad Control for the given GPIO group.
+ \param[in] group The GPIO pad group number, one of BCM2835_PAD_GROUP_GPIO_*
+ \param[in] control Mask of bits from BCM2835_PAD_* from \ref bcm2835PadGroup. Note
+ that it is not necessary to include BCM2835_PAD_PASSWRD in the mask as this
+ is automatically included.
+ */
+ extern void bcm2835_gpio_set_pad(uint8_t group, uint32_t control);
+
+ /*! Delays for the specified number of milliseconds.
+ Uses nanosleep(), and therefore does not use CPU until the time is up.
+ However, you are at the mercy of nanosleep(). From the manual for nanosleep():
+ If the interval specified in req is not an exact multiple of the granularity
+ underlying clock (see time(7)), then the interval will be
+ rounded up to the next multiple. Furthermore, after the sleep completes,
+ there may still be a delay before the CPU becomes free to once
+ again execute the calling thread.
+ \param[in] millis Delay in milliseconds
+ */
+ extern void bcm2835_delay (unsigned int millis);
+
+ /*! Delays for the specified number of microseconds.
+ Uses a combination of nanosleep() and a busy wait loop on the BCM2835 system timers,
+ However, you are at the mercy of nanosleep(). From the manual for nanosleep():
+ If the interval specified in req is not an exact multiple of the granularity
+ underlying clock (see time(7)), then the interval will be
+ rounded up to the next multiple. Furthermore, after the sleep completes,
+ there may still be a delay before the CPU becomes free to once
+ again execute the calling thread.
+ For times less than about 450 microseconds, uses a busy wait on the System Timer.
+ It is reported that a delay of 0 microseconds on RaspberryPi will in fact
+ result in a delay of about 80 microseconds. Your mileage may vary.
+ \param[in] micros Delay in microseconds
+ */
+ extern void bcm2835_delayMicroseconds (uint64_t micros);
+
+ /*! Sets the output state of the specified pin
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \param[in] on HIGH sets the output to HIGH and LOW to LOW.
+ */
+ extern void bcm2835_gpio_write(uint8_t pin, uint8_t on);
+
+ /*! Sets any of the first 32 GPIO output pins specified in the mask to the state given by on
+ \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
+ \param[in] on HIGH sets the output to HIGH and LOW to LOW.
+ */
+ extern void bcm2835_gpio_write_multi(uint32_t mask, uint8_t on);
+
+ /*! Sets the first 32 GPIO output pins specified in the mask to the value given by value
+ \param[in] value values required for each bit masked in by mask, eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
+ \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
+ */
+ extern void bcm2835_gpio_write_mask(uint32_t value, uint32_t mask);
+
+ /*! Sets the Pull-up/down mode for the specified pin. This is more convenient than
+ clocking the mode in with bcm2835_gpio_pud() and bcm2835_gpio_pudclk().
+ \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin.
+ \param[in] pud The desired Pull-up/down mode. One of BCM2835_GPIO_PUD_* from bcm2835PUDControl
+ */
+ extern void bcm2835_gpio_set_pud(uint8_t pin, uint8_t pud);
+
+ /*! @} */
+
+ /*! \defgroup spi SPI access
+ These functions let you use SPI0 (Serial Peripheral Interface) to
+ interface with an external SPI device.
+ @{
+ */
+
+ /*! Start SPI operations.
+ Forces RPi SPI0 pins P1-19 (MOSI), P1-21 (MISO), P1-23 (CLK), P1-24 (CE0) and P1-26 (CE1)
+ to alternate function ALT0, which enables those pins for SPI interface.
+ You should call bcm2835_spi_end() when all SPI funcitons are complete to return the pins to
+ their default functions
+ \sa bcm2835_spi_end()
+ */
+ extern void bcm2835_spi_begin(void);
+
+ /*! End SPI operations.
+ SPI0 pins P1-19 (MOSI), P1-21 (MISO), P1-23 (CLK), P1-24 (CE0) and P1-26 (CE1)
+ are returned to their default INPUT behaviour.
+ */
+ extern void bcm2835_spi_end(void);
+
+ /*! Sets the SPI bit order
+ NOTE: has no effect. Not supported by SPI0.
+ Defaults to
+ \param[in] order The desired bit order, one of BCM2835_SPI_BIT_ORDER_*,
+ see \ref bcm2835SPIBitOrder
+ */
+ extern void bcm2835_spi_setBitOrder(uint8_t order);
+
+ /*! Sets the SPI clock divider and therefore the
+ SPI clock speed.
+ \param[in] divider The desired SPI clock divider, one of BCM2835_SPI_CLOCK_DIVIDER_*,
+ see \ref bcm2835SPIClockDivider
+ */
+ extern void bcm2835_spi_setClockDivider(uint16_t divider);
+
+ /*! Sets the SPI data mode
+ Sets the clock polariy and phase
+ \param[in] mode The desired data mode, one of BCM2835_SPI_MODE*,
+ see \ref bcm2835SPIMode
+ */
+ extern void bcm2835_spi_setDataMode(uint8_t mode);
+
+ /*! Sets the chip select pin(s)
+ When an bcm2835_spi_transfer() is made, the selected pin(s) will be asserted during the
+ transfer.
+ \param[in] cs Specifies the CS pins(s) that are used to activate the desired slave.
+ One of BCM2835_SPI_CS*, see \ref bcm2835SPIChipSelect
+ */
+ extern void bcm2835_spi_chipSelect(uint8_t cs);
+
+ /*! Sets the chip select pin polarity for a given pin
+ When an bcm2835_spi_transfer() occurs, the currently selected chip select pin(s)
+ will be asserted to the
+ value given by active. When transfers are not happening, the chip select pin(s)
+ return to the complement (inactive) value.
+ \param[in] cs The chip select pin to affect
+ \param[in] active Whether the chip select pin is to be active HIGH
+ */
+ extern void bcm2835_spi_setChipSelectPolarity(uint8_t cs, uint8_t active);
+
+ /*! Transfers one byte to and from the currently selected SPI slave.
+ Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect)
+ during the transfer.
+ Clocks the 8 bit value out on MOSI, and simultaneously clocks in data from MISO.
+ Returns the read data byte from the slave.
+ Uses polled transfer as per section 10.6.1 of the BCM 2835 ARM Peripherls manual
+ \param[in] value The 8 bit data byte to write to MOSI
+ \return The 8 bit byte simultaneously read from MISO
+ \sa bcm2835_spi_transfern()
+ */
+ extern uint8_t bcm2835_spi_transfer(uint8_t value);
+
+ /*! Transfers any number of bytes to and from the currently selected SPI slave.
+ Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect)
+ during the transfer.
+ Clocks the len 8 bit bytes out on MOSI, and simultaneously clocks in data from MISO.
+ The data read read from the slave is placed into rbuf. rbuf must be at least len bytes long
+ Uses polled transfer as per section 10.6.1 of the BCM 2835 ARM Peripherls manual
+ \param[in] tbuf Buffer of bytes to send.
+ \param[out] rbuf Received bytes will by put in this buffer
+ \param[in] len Number of bytes in the tbuf buffer, and the number of bytes to send/received
+ \sa bcm2835_spi_transfer()
+ */
+ extern void bcm2835_spi_transfernb(char* tbuf, char* rbuf, uint32_t len);
+
+ /*! Transfers any number of bytes to and from the currently selected SPI slave
+ using bcm2835_spi_transfernb.
+ The returned data from the slave replaces the transmitted data in the buffer.
+ \param[in,out] buf Buffer of bytes to send. Received bytes will replace the contents
+ \param[in] len Number of bytes int eh buffer, and the number of bytes to send/received
+ \sa bcm2835_spi_transfer()
+ */
+ extern void bcm2835_spi_transfern(char* buf, uint32_t len);
+
+ /*! Transfers any number of bytes to the currently selected SPI slave.
+ Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect)
+ during the transfer.
+ \param[in] buf Buffer of bytes to send.
+ \param[in] len Number of bytes in the tbuf buffer, and the number of bytes to send
+ */
+ extern void bcm2835_spi_writenb(char* buf, uint32_t len);
+
+ /*! @} */
+
+ /*! \defgroup i2c I2C access
+ These functions let you use I2C (The Broadcom Serial Control bus with the Philips
+ I2C bus/interface version 2.1 January 2000.) to interface with an external I2C device.
+ @{
+ */
+
+ /*! Start I2C operations.
+ Forces RPi I2C pins P1-03 (SDA) and P1-05 (SCL)
+ to alternate function ALT0, which enables those pins for I2C interface.
+ You should call bcm2835_i2c_end() when all I2C functions are complete to return the pins to
+ their default functions
+ \sa bcm2835_i2c_end()
+ */
+ extern void bcm2835_i2c_begin(void);
+
+ /*! End I2C operations.
+ I2C pins P1-03 (SDA) and P1-05 (SCL)
+ are returned to their default INPUT behaviour.
+ */
+ extern void bcm2835_i2c_end(void);
+
+ /*! Sets the I2C slave address.
+ \param[in] addr The I2C slave address.
+ */
+ extern void bcm2835_i2c_setSlaveAddress(uint8_t addr);
+
+ /*! Sets the I2C clock divider and therefore the I2C clock speed.
+ \param[in] divider The desired I2C clock divider, one of BCM2835_I2C_CLOCK_DIVIDER_*,
+ see \ref bcm2835I2CClockDivider
+ */
+ extern void bcm2835_i2c_setClockDivider(uint16_t divider);
+
+ /*! Sets the I2C clock divider by converting the baudrate parameter to
+ the equivalent I2C clock divider. ( see \sa bcm2835_i2c_setClockDivider)
+ For the I2C standard 100khz you would set baudrate to 100000
+ The use of baudrate corresponds to its use in the I2C kernel device
+ driver. (Of course, bcm2835 has nothing to do with the kernel driver)
+ */
+ extern void bcm2835_i2c_set_baudrate(uint32_t baudrate);
+
+ /*! Transfers any number of bytes to the currently selected I2C slave.
+ (as previously set by \sa bcm2835_i2c_setSlaveAddress)
+ \param[in] buf Buffer of bytes to send.
+ \param[in] len Number of bytes in the buf buffer, and the number of bytes to send.
+ \return reason see \ref bcm2835I2CReasonCodes
+ */
+ extern uint8_t bcm2835_i2c_write(const char * buf, uint32_t len);
+
+ /*! Transfers any number of bytes from the currently selected I2C slave.
+ (as previously set by \sa bcm2835_i2c_setSlaveAddress)
+ \param[in] buf Buffer of bytes to receive.
+ \param[in] len Number of bytes in the buf buffer, and the number of bytes to received.
+ \return reason see \ref bcm2835I2CReasonCodes
+ */
+ extern uint8_t bcm2835_i2c_read(char* buf, uint32_t len);
+
+ /*! Allows reading from I2C slaves that require a repeated start (without any prior stop)
+ to read after the required slave register has been set. For example, the popular
+ MPL3115A2 pressure and temperature sensor. Note that your device must support or
+ require this mode. If your device does not require this mode then the standard
+ combined:
+ \sa bcm2835_i2c_write
+ \sa bcm2835_i2c_read
+ are a better choice.
+ Will read from the slave previously set by \sa bcm2835_i2c_setSlaveAddress
+ \param[in] regaddr Buffer containing the slave register you wish to read from.
+ \param[in] buf Buffer of bytes to receive.
+ \param[in] len Number of bytes in the buf buffer, and the number of bytes to received.
+ \return reason see \ref bcm2835I2CReasonCodes
+ */
+ extern uint8_t bcm2835_i2c_read_register_rs(char* regaddr, char* buf, uint32_t len);
+
+ /*! Allows sending an arbitrary number of bytes to I2C slaves before issuing a repeated
+ start (with no prior stop) and reading a response.
+ Necessary for devices that require such behavior, such as the MLX90620.
+ Will write to and read from the slave previously set by \sa bcm2835_i2c_setSlaveAddress
+ \param[in] cmds Buffer containing the bytes to send before the repeated start condition.
+ \param[in] cmds_len Number of bytes to send from cmds buffer
+ \param[in] buf Buffer of bytes to receive.
+ \param[in] buf_len Number of bytes to receive in the buf buffer.
+ \return reason see \ref bcm2835I2CReasonCodes
+ */
+ extern uint8_t bcm2835_i2c_write_read_rs(char* cmds, uint32_t cmds_len, char* buf, uint32_t buf_len);
+
+ /*! @} */
+
+ /*! \defgroup st System Timer access
+ Allows access to and delays using the System Timer Counter.
+ @{
+ */
+
+ /*! Read the System Timer Counter register.
+ \return the value read from the System Timer Counter Lower 32 bits register
+ */
+ extern uint64_t bcm2835_st_read(void);
+
+ /*! Delays for the specified number of microseconds with offset.
+ \param[in] offset_micros Offset in microseconds
+ \param[in] micros Delay in microseconds
+ */
+ extern void bcm2835_st_delay(uint64_t offset_micros, uint64_t micros);
+
+ /*! @} */
+
+ /*! \defgroup pwm Pulse Width Modulation
+ Allows control of 2 independent PWM channels. A limited subset of GPIO pins
+ can be connected to one of these 2 channels, allowing PWM control of GPIO pins.
+ You have to set the desired pin into a particular Alt Fun to PWM output. See the PWM
+ documentation on the Main Page.
+ @{
+ */
+
+ /*! Sets the PWM clock divisor,
+ to control the basic PWM pulse widths.
+ \param[in] divisor Divides the basic 19.2MHz PWM clock. You can use one of the common
+ values BCM2835_PWM_CLOCK_DIVIDER_* in \ref bcm2835PWMClockDivider
+ */
+ extern void bcm2835_pwm_set_clock(uint32_t divisor);
+
+ /*! Sets the mode of the given PWM channel,
+ allowing you to control the PWM mode and enable/disable that channel
+ \param[in] channel The PWM channel. 0 or 1.
+ \param[in] markspace Set true if you want Mark-Space mode. 0 for Balanced mode.
+ \param[in] enabled Set true to enable this channel and produce PWM pulses.
+ */
+ extern void bcm2835_pwm_set_mode(uint8_t channel, uint8_t markspace, uint8_t enabled);
+
+ /*! Sets the maximum range of the PWM output.
+ The data value can vary between 0 and this range to control PWM output
+ \param[in] channel The PWM channel. 0 or 1.
+ \param[in] range The maximum value permitted for DATA.
+ */
+ extern void bcm2835_pwm_set_range(uint8_t channel, uint32_t range);
+
+ /*! Sets the PWM pulse ratio to emit to DATA/RANGE,
+ where RANGE is set by bcm2835_pwm_set_range().
+ \param[in] channel The PWM channel. 0 or 1.
+ \param[in] data Controls the PWM output ratio as a fraction of the range.
+ Can vary from 0 to RANGE.
+ */
+ extern void bcm2835_pwm_set_data(uint8_t channel, uint32_t data);
+
+ /*! @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BCM2835_H */
+
+/*! @example blink.c
+ Blinks RPi GPIO pin 11 on and off
+*/
+
+/*! @example input.c
+ Reads the state of an RPi input pin
+*/
+
+/*! @example event.c
+ Shows how to use event detection on an input pin
+*/
+
+/*! @example spi.c
+ Shows how to use SPI interface to transfer a byte to and from an SPI device
+*/
+
+/*! @example spin.c
+ Shows how to use SPI interface to transfer a number of bytes to and from an SPI device
+*/
+
+/*! @example pwm.c
+ Shows how to use PWM to control GPIO pins
+*/
+
+/*! @example i2c.c
+Command line utility for executing i2c commands with the
+Broadcom bcm2835. Contributed by Shahrooz Shahparnia.
+*/
+
+/*! example gpio.c
+ Command line utility for executing gpio commands with the
+ Broadcom bcm2835. Contributed by Shahrooz Shahparnia.
+*/
diff --git a/2.3-1/includes/blas.h b/2.3-1/includes/blas.h
new file mode 100644
index 00000000..f4b0bdad
--- /dev/null
+++ b/2.3-1/includes/blas.h
@@ -0,0 +1,160 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __BLAS_H__
+#define __BLAS_H__
+
+
+#ifndef _MACRO_C2F_
+#define _MACRO_C2F_
+#define C2F(name) name##_
+#endif
+/*
+ SUBROUTINE DGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 TRANSA, TRANSB
+ INTEGER M, N, K, LDA, LDB, LDC
+ DOUBLE PRECISION ALPHA, BETA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+C WARNING : this routine has been modified for Scilab (see comments
+C Cscilab) because algorithm is not ok if A matrix contains NaN
+C (NaN*0 should be NaN, not 0)
+* Purpose
+* =======
+*
+* DGEMM performs one of the matrix-matrix operations
+*
+* C := alpha*op( A )*op( B ) + beta*C,
+*
+* where op( X ) is one of
+*
+* op( X ) = X or op( X ) = X',
+*
+* alpha and beta are scalars, and A, B and C are matrices, with op( A )
+* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*
+* Parameters
+* ==========
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n', op( A ) = A.
+*
+* TRANSA = 'T' or 't', op( A ) = A'.
+*
+* TRANSA = 'C' or 'c', op( A ) = A'.
+*
+* Unchanged on exit.
+*
+* TRANSB - CHARACTER*1.
+* On entry, TRANSB specifies the form of op( B ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSB = 'N' or 'n', op( B ) = B.
+*
+* TRANSB = 'T' or 't', op( B ) = B'.
+*
+* TRANSB = 'C' or 'c', op( B ) = B'.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix
+* op( A ) and of the matrix C. M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix
+* op( B ) and the number of columns of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry, K specifies the number of columns of the matrix
+* op( A ) and the number of rows of the matrix op( B ). K must
+* be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANSA = 'N' or 'n', and is m otherwise.
+* Before entry with TRANSA = 'N' or 'n', the leading m by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by m part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANSA = 'N' or 'n' then
+* LDA must be at least max( 1, m ), otherwise LDA must be at
+* least max( 1, k ).
+* Unchanged on exit.
+*
+* B - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
+* n when TRANSB = 'N' or 'n', and is k otherwise.
+* Before entry with TRANSB = 'N' or 'n', the leading k by n
+* part of the array B must contain the matrix B, otherwise
+* the leading n by k part of the array B must contain the
+* matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. When TRANSB = 'N' or 'n' then
+* LDB must be at least max( 1, k ), otherwise LDB must be at
+* least max( 1, n ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then C need not be set on input.
+* Unchanged on exit.
+*
+* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+* Before entry, the leading m by n part of the array C must
+* contain the matrix C, except when beta is zero, in which
+* case C need not be set on entry.
+* On exit, the array C is overwritten by the m by n matrix
+* ( alpha*op( A )*op( B ) + beta*C ).
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*/
+/*
+void dgemm_(char *TRANSA, char* TRANSB, int *M, int *N, int *K,
+ double *ALPHA, double *A, int *LDA,
+ double *B, int *LDB, double *BETA,
+ double *C, int *LDC);*/
+
+extern int C2F(dgemm)(char *,char*,int*,int*,int*,double*,double*,int*,double*,int*,double*,double*,int*);
+extern int C2F(idamax)() ;/* could be transcribe easaly in c */
+extern int C2F(daxpy) () ;/* could be transcribe easaly in c */
+extern int C2F(dscal) () ;/* could be transcribe easaly in c */
+extern int C2F(dasum) () ;/* could be transcribe easaly in c */
+
+
+#endif /* !__BLAS_H__ */
diff --git a/2.3-1/includes/constant.h b/2.3-1/includes/constant.h
new file mode 100644
index 00000000..14543b61
--- /dev/null
+++ b/2.3-1/includes/constant.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __CONSTANT_H__
+#define __CONSTANT_H__
+
+#include <math.h>
+
+#define FPI 3.1415926535897931159980f
+#define DPI 3.1415926535897931159980
+
+#define NEPER 2.7182818284590450907956
+
+#define PI DPI
+#define SCI2C_PI DPI
+#define SCI2C_E NEPER
+#define SCI2C_T 1
+#define SCI2C_F 0
+#define SCI2C_NAN nan("")
+#define SCI2C_INF 1e100000
+#define SCI2C_IMG_C FloatComplex(0,1)
+#define SCI2C_IMG_Z DoubleComplex(0,1)
+
+#endif /* !__CONSTANT_H__ */
+
diff --git a/2.3-1/includes/f2c.h b/2.3-1/includes/f2c.h
new file mode 100644
index 00000000..a90a1ef5
--- /dev/null
+++ b/2.3-1/includes/f2c.h
@@ -0,0 +1,245 @@
+/* f2c.h -- Standard Fortran to C header file */
+
+/** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed."
+
+ - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
+
+#ifndef F2C_INCLUDE
+#define F2C_INCLUDE
+
+#ifdef FORDLL
+#define IMPORT extern __declspec (dllimport)
+#else
+#define IMPORT
+#endif
+
+#ifdef FORDLL
+#define Extern __declspec (dllimport)
+#else
+#define Extern
+#endif
+
+
+
+typedef long int integer;
+typedef unsigned long int uinteger;
+typedef char *address;
+typedef short int shortint;
+typedef float real;
+typedef double doublereal;
+typedef struct { real r, i; } complex;
+typedef struct { doublereal r, i; } doublecomplex;
+typedef long int logical;
+typedef short int shortlogical;
+typedef char logical1;
+typedef char integer1;
+#ifdef INTEGER_STAR_8 /* Adjust for integer*8. */
+typedef long long longint; /* system-dependent */
+typedef unsigned long long ulongint; /* system-dependent */
+#define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
+#define qbit_set(a,b) ((a) | ((ulongint)1 << (b)))
+#endif
+
+#define TRUE_ (1)
+#define FALSE_ (0)
+
+/* Extern is for use with -E */
+#ifndef Extern
+#define Extern extern
+#endif
+
+/* I/O stuff */
+
+#ifdef f2c_i2
+/* for -i2 */
+typedef short flag;
+typedef short ftnlen;
+typedef short ftnint;
+#else
+typedef long int flag;
+typedef long int ftnlen;
+typedef long int ftnint;
+#endif
+
+/*external read, write*/
+typedef struct
+{ flag cierr;
+ ftnint ciunit;
+ flag ciend;
+ char *cifmt;
+ ftnint cirec;
+} cilist;
+
+/*internal read, write*/
+typedef struct
+{ flag icierr;
+ char *iciunit;
+ flag iciend;
+ char *icifmt;
+ ftnint icirlen;
+ ftnint icirnum;
+} icilist;
+
+/*open*/
+typedef struct
+{ flag oerr;
+ ftnint ounit;
+ char *ofnm;
+ ftnlen ofnmlen;
+ char *osta;
+ char *oacc;
+ char *ofm;
+ ftnint orl;
+ char *oblnk;
+} olist;
+
+/*close*/
+typedef struct
+{ flag cerr;
+ ftnint cunit;
+ char *csta;
+} cllist;
+
+/*rewind, backspace, endfile*/
+typedef struct
+{ flag aerr;
+ ftnint aunit;
+} alist;
+
+/* inquire */
+typedef struct
+{ flag inerr;
+ ftnint inunit;
+ char *infile;
+ ftnlen infilen;
+ ftnint *inex; /*parameters in standard's order*/
+ ftnint *inopen;
+ ftnint *innum;
+ ftnint *innamed;
+ char *inname;
+ ftnlen innamlen;
+ char *inacc;
+ ftnlen inacclen;
+ char *inseq;
+ ftnlen inseqlen;
+ char *indir;
+ ftnlen indirlen;
+ char *infmt;
+ ftnlen infmtlen;
+ char *inform;
+ ftnint informlen;
+ char *inunf;
+ ftnlen inunflen;
+ ftnint *inrecl;
+ ftnint *innrec;
+ char *inblank;
+ ftnlen inblanklen;
+} inlist;
+
+#define VOID void
+
+union Multitype { /* for multiple entry points */
+ integer1 g;
+ shortint h;
+ integer i;
+ /* longint j; */
+ real r;
+ doublereal d;
+ complex c;
+ doublecomplex z;
+ };
+
+typedef union Multitype Multitype;
+
+/*typedef long int Long;*/ /* No longer used; formerly in Namelist */
+
+struct Vardesc { /* for Namelist */
+ char *name;
+ char *addr;
+ ftnlen *dims;
+ int type;
+ };
+typedef struct Vardesc Vardesc;
+
+struct Namelist {
+ char *name;
+ Vardesc **vars;
+ int nvars;
+ };
+typedef struct Namelist Namelist;
+
+#define abs(x) ((x) >= 0 ? (x) : -(x))
+#define dabs(x) (doublereal)abs(x)
+
+
+#ifndef min
+#define min(a,b) ((a) <= (b) ? (a) : (b))
+#endif
+
+#ifndef max
+#define max(a,b) ((a) >= (b) ? (a) : (b))
+#endif
+
+#define dmin(a,b) (doublereal)min(a,b)
+#define dmax(a,b) (doublereal)max(a,b)
+#define bit_test(a,b) ((a) >> (b) & 1)
+#define bit_clear(a,b) ((a) & ~((uinteger)1 << (b)))
+#define bit_set(a,b) ((a) | ((uinteger)1 << (b)))
+
+/* procedure parameter types for -A and -C++ */
+
+#define F2C_proc_par_types 1
+#ifdef __cplusplus
+typedef int /* Unknown procedure type */ (*U_fp)(...);
+typedef shortint (*J_fp)(...);
+typedef integer (*I_fp)(...);
+typedef real (*R_fp)(...);
+typedef doublereal (*D_fp)(...), (*E_fp)(...);
+typedef /* Complex */ VOID (*C_fp)(...);
+typedef /* Double Complex */ VOID (*Z_fp)(...);
+typedef logical (*L_fp)(...);
+typedef shortlogical (*K_fp)(...);
+typedef /* Character */ VOID (*H_fp)(...);
+typedef /* Subroutine */ int (*S_fp)(...);
+#else
+typedef int /* Unknown procedure type */ (*U_fp)();
+typedef shortint (*J_fp)();
+typedef integer (*I_fp)();
+typedef real (*R_fp)();
+typedef doublereal (*D_fp)(), (*E_fp)();
+typedef /* Complex */ VOID (*C_fp)();
+typedef /* Double Complex */ VOID (*Z_fp)();
+typedef logical (*L_fp)();
+typedef shortlogical (*K_fp)();
+typedef /* Character */ VOID (*H_fp)();
+typedef /* Subroutine */ int (*S_fp)();
+#endif
+/* E_fp is for real functions when -R is not specified */
+typedef VOID C_f; /* complex function */
+typedef VOID H_f; /* character function */
+typedef VOID Z_f; /* double complex function */
+typedef doublereal E_f; /* real function with -R not specified */
+
+/* undef any lower-case symbols that your C compiler predefines, e.g.: */
+
+#ifndef Skip_f2c_Undefs
+#undef cray
+#undef gcos
+#undef mc68010
+#undef mc68020
+#undef mips
+#undef pdp11
+#undef sgi
+#undef sparc
+#undef sun
+#undef sun2
+#undef sun3
+#undef sun4
+#undef u370
+#undef u3b
+#undef u3b2
+#undef u3b5
+#undef unix
+#undef vax
+#endif
+#endif
diff --git a/2.3-1/includes/lapack.h b/2.3-1/includes/lapack.h
new file mode 100644
index 00000000..ba568ce4
--- /dev/null
+++ b/2.3-1/includes/lapack.h
@@ -0,0 +1,192 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LAPACK_H__
+#define __LAPACK_H__
+
+#ifndef _MACRO_C2F_
+#define _MACRO_C2F_
+#define C2F(name) name##_
+#endif
+
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef lapack_int
+#define lapack_int int
+#endif
+#ifndef lapack_logical
+#define lapack_logical lapack_int
+#endif
+
+typedef lapack_logical (*LAPACK_D_SELECT3) (double*, double*, double*);
+typedef lapack_logical (*LAPACK_D_SELECT2) (double*, double*);
+
+#define getRelativeMachinePrecision() dlamch_("e", 1L)
+#define getOverflowThreshold() dlamch_("o", 1L)
+#define getUnderflowThreshold() dlamch_("u", 1L)
+
+#define getOneNorm(lines,cols,in,work) dlange_("1", lines, cols, in, lines, work)
+#define resolveSystemLinear(cols1,row2,cpytranIn1,pIpiv, transposeOfIn2,info) \
+ dgetrs_ ("N" ,cols1, row2, cpytranIn1 , cols1, pIpiv,transposeOfIn2, cols1, info) ;
+
+
+
+
+/**
+ * -- LAPACK auxiliary routine (version 3.0) --
+ * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+ * Courant Institute, Argonne National Lab, and Rice University
+ * October 31, 1992
+ *
+ * Purpose
+ * =======
+ *
+ * DLAMCH determines double precision machine parameters.
+ *
+ * Arguments
+ * =========
+ *
+ * CMACH (input) CHARACTER*1
+ * Specifies the value to be returned by DLAMCH:
+ * = 'E' or 'e', DLAMCH := eps
+ * = 'S' or 's , DLAMCH := sfmin
+ * = 'B' or 'b', DLAMCH := base
+ * = 'P' or 'p', DLAMCH := eps*base
+ * = 'N' or 'n', DLAMCH := t
+ * = 'R' or 'r', DLAMCH := rnd
+ * = 'M' or 'm', DLAMCH := emin
+ * = 'U' or 'u', DLAMCH := rmin
+ * = 'L' or 'l', DLAMCH := emax
+ * = 'O' or 'o', DLAMCH := rmax
+ *
+ * where
+ *
+ * eps = relative machine precision
+ * sfmin = safe minimum, such that 1/sfmin does not overflow
+ * base = base of the machine
+ * prec = eps*base
+ * t = number of (base) digits in the mantissa
+ * rnd = 1.0 when rounding occurs in addition, 0.0 otherwise
+ * emin = minimum exponent before (gradual) underflow
+ * rmin = underflow threshold - base**(emin-1)
+ * emax = largest exponent before overflow
+ * rmax = overflow threshold - (base**emax)*(1-eps)
+ *
+ * =====================================================================
+ **/
+extern double dlamch_ (char *CMACH, unsigned long int i);
+
+extern double dlange_ (char* NORM, int* M, int* N, double* A, int* LDA , double* WORK);
+
+extern double dgetrf_ (int* M, int* N , double* A , int* LDA , int* IPIV , int* INFO);
+
+extern double dgecon_ (char* NORM, int* N, double* A, int* LDA, double* ANORM,
+ double* RCOND, double* WORK , int* IWORK, int* INFO ) ;
+
+extern double dgetrs_ (char* TRANS, int* N, int* NRHS, double* A, int* LDA,
+ int* IPIV, double* B, int* LDB, int* INFO ) ;
+
+extern double dgelsy_ (int* M, int* N, int* NRHS, double* A, int* LDA,
+ double* B, int* LDB, int* JPVT, double* RCOND, int* RANK,
+ double* WORK, int* LWORK, int* INFO) ;
+
+extern double dlacpy_ (char* NORM, int* M, int* N, double* A, int* LDA,
+ double* B, int* LDB );
+
+extern double dgetri_ (int* N , double* A , int* LDA , int* IPIV , double* WORK,
+ int* LWORK , int* INFO ) ;
+
+
+/****** doubleComplex fortran function ************/
+extern double zgelsy_ (int*,int*,int*,doubleComplex*,int*,doubleComplex*,int*,int*,double*,int*,doubleComplex*,int*,double*,int*) ;
+
+
+extern double zlamch_ ();
+
+extern double zlange_ (char*,int*,int*,doubleComplex*,int*,doubleComplex*);
+
+extern double zgetrf_ (int *, int *, doubleComplex *, int *, int *, int *);
+
+extern double zgecon_ ( char*,int*,doubleComplex*,int*,double*,double*,doubleComplex*,double*,int*) ;
+
+extern double zgetrs_ ( char *,int*,int*,doubleComplex*,int*,int*,doubleComplex*,int*,int*) ;
+
+extern double zlacpy_ (char*,int*,int*,doubleComplex*,int*,doubleComplex*,int*);
+
+extern double zgetri_ (int*,doubleComplex*,int*,int*,doubleComplex*,int*,int*) ;
+/*extern int zgelsy_ ();*/
+
+/*certainly have some blas functions in */
+extern int C2F(split)();
+extern int C2F(exch)();
+
+extern int C2F(balbak)();
+extern double C2F(ddot)();
+extern int C2F(pade)();
+extern int C2F(dcopy)();
+extern int C2F(dscal)();
+
+extern int C2F(dgeco)();
+extern int C2F(dgesl)();
+extern int C2F(coef)();
+extern int C2F(cerr)();
+extern int C2F(dclmat)();
+extern int C2F(dexpm1)();
+extern int C2F(wexpm1)();
+extern int C2F(drot)();
+
+extern int C2F(intexpm) ();
+
+extern int C2F(zcopy)(int*,doubleComplex *,int*,doubleComplex*,int*);
+
+extern int C2F(dgemm)(char *,char*,int*,int*,int*,double*,double*,int*,double*,int*,double*,double*,int*);
+extern int C2F(idamax)() ;/* could be transcribe easily in c */
+extern int C2F(daxpy) () ;/* could be transcribe easily in c */
+extern int C2F(dscal) () ;/* could be transcribe easily in c */
+extern int C2F(dasum) () ;/* could be transcribe easily in c */
+
+/* used in chol */
+extern int C2F(dpotrf)(char*,int*,double*,int*,int*);
+extern int C2F(zpotrf)(char*,int*,doubleComplex*,int*,int*);
+
+/* used in logm */
+extern int C2F(zgeev)(char*,char*,int*,doubleComplex*,int*,doubleComplex*,
+ doubleComplex*,int*,doubleComplex*,int*,doubleComplex*,int *,doubleComplex*,int*);
+
+extern int C2F(zheev)(char*,char*,int*,doubleComplex*,int*,double*,doubleComplex*,int*,double*,int*);
+
+/* used in spec */
+extern int C2F(dgeev)(char*,char*,int*,double*,int*,double*,double*,double*,int*,double*,int*,double*,int*,int*);
+extern int C2F(dsyev)(char*,char*,int*,double*,int*,double*,double*,int*,int*);
+
+/*used in schur*/
+extern int dgees_(char*,char*,LAPACK_D_SELECT2,int*,double*,int*,int*, \
+ double*,double*,double*,int*,double*,int*,int*,int*);
+
+extern int dgges_(char*,char*,char*,LAPACK_D_SELECT3,int*,double*,int*,double*,int*, \
+ int*,double*,double*,double*,double*,int*,double*,int*,double*, int*, \
+ int*,int*);
+
+/*used in matrix balancing*/
+extern int dgebal_(char*,int*,double*,int*,int*,int*,double*,int*);
+extern int dggbal_(char*,int*,double*,int*,double*,int*,int*,int*,double*, \
+ double*,double*,int*);
+extern int dgebak_(char*,char*,int*,int*,int*,double*,int*,double*,int*,int*);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+#endif /* !__LAPACK_H__ */
diff --git a/2.3-1/includes/machine.h.in b/2.3-1/includes/machine.h.in
new file mode 100644
index 00000000..c38655b9
--- /dev/null
+++ b/2.3-1/includes/machine.h.in
@@ -0,0 +1,80 @@
+/* includes/machine.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if your Fortran compiler doesn't accept -c and -o together. */
+#undef F77_NO_MINUS_C_MINUS_O
+
+/* Define to 1 if you have the <complex.h> header file. */
+#undef HAVE_COMPLEX_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* With the Atlas Lib */
+#undef WITH_ATLAS
diff --git a/2.3-1/includes/notFound.h b/2.3-1/includes/notFound.h
new file mode 100644
index 00000000..2d5ee1c2
--- /dev/null
+++ b/2.3-1/includes/notFound.h
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __NOT_FOUND_H__
+#define __NOT_FOUND_H__
+
+#define NOT_FOUND -1
+
+#endif /* !__NOT_FOUND_H__ */
diff --git a/2.3-1/includes/sci2clib.h b/2.3-1/includes/sci2clib.h
new file mode 100644
index 00000000..55b6a349
--- /dev/null
+++ b/2.3-1/includes/sci2clib.h
@@ -0,0 +1,623 @@
+#ifndef __SCI2CLIB_H__
+#define __SCI2CLIB_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+/* CONSTANT */
+#include "constant.h"
+
+/* LIB */
+/* interfacing blas */
+#include "blas.h"
+/* interfacing lapack */
+#include "lapack.h"
+
+/* AUXILIARY FUNCTIONS */
+
+/* interfacing abs */
+#include "abs.h"
+#include "int_abs.h"
+/* interfacing conj */
+#include "conj.h"
+#include "int_conj.h"
+/* interfacing disp */
+#include "disp.h"
+#include "int_disp.h"
+/* interfacing find */
+#include "find.h"
+#include "find2d.h"
+#include "int_find.h"
+/* interfacing frexp */
+#include "frexp.h"
+/* interfacing isempty */
+#include "isempty.h"
+#include "int_isempty.h"
+/* interfacing isnan */
+#include "isnan.h"
+#include "int_isnan.h"
+/* interfacing length */
+#include "length.h"
+#include "int_length.h"
+/* interfacing max */
+#include "max.h"
+#include "int_max.h"
+/* interfacing min */
+#include "min.h"
+#include "int_min.h"
+/* interfacing pythag */
+#include "pythag.h"
+/* interfacing sign */
+#include "sign.h"
+#include "int_sign.h"
+/* interfacing size */
+#include "size.h"
+#include "int_size.h"
+/* interfacing type */
+#include "type.h"
+#include "int_type.h"
+/* interfacing rand */
+#include "rand.h"
+#include "int_rand.h"
+
+/* ELEMENTARY FUNCTIONS */
+
+/* interfacing atand */
+#include "atand.h"
+#include "int_atand.h"
+/* interfacing asind */
+#include "asind.h"
+#include "int_asind.h"
+/* interfacing asech */
+#include "asech.h"
+#include "int_asech.h"
+/* interfacing asecd */
+#include "asecd.h"
+#include "int_asecd.h"
+/* interfacing asec */
+#include "asec.h"
+#include "int_asec.h"
+/* interfacing acsch */
+#include "acsch.h"
+#include "int_acsch.h"
+/* interfacing acscd */
+#include "acscd.h"
+#include "int_acscd.h"
+/* interfacing acsc */
+#include "acsc.h"
+#include "int_acsc.h"
+/* interfacing acoth */
+#include "acoth.h"
+#include "int_acoth.h"
+/* interfacing acotd */
+#include "acotd.h"
+#include "int_acotd.h"
+/* interfacing acot */
+#include "acot.h"
+#include "int_acot.h"
+/* interfacing acos */
+#include "acos.h"
+#include "int_acos.h"
+/* interfacing acosd */
+#include "acosd.h"
+#include "int_acosd.h"
+/* interfacing acosh */
+#include "acosh.h"
+#include "int_acosh.h"
+/* interfacing asin */
+#include "asin.h"
+#include "int_asin.h"
+/* interfacing asinh */
+#include "asinh.h"
+#include "int_asinh.h"
+/* interfacing atan */
+#include "atan.h"
+#include "atan2.h"
+#include "int_atan.h"
+/* interfacing atanh */
+#include "atanh.h"
+#include "int_atanh.h"
+/* interfacing cos */
+#include "cos.h"
+#include "int_cos.h"
+/* interfacing ceil */
+#include "ceil.h"
+#include "int_ceil.h"
+/* interfacing cosh */
+#include "cosh.h"
+#include "int_cosh.h"
+/* interfacing exp */
+#include "exp.h"
+#include "int_exp.h"
+/* interfacing fix */
+#include "fix.h"
+#include "int_fix.h"
+/* interfacing floor */
+#include "floor.h"
+#include "int_floor.h"
+/* interfacing int */
+#include "int.h"
+#include "int_int.h"
+/* interfacing lnp1m1 */
+#include "lnp1m1.h"
+/* interfacing log */
+#include "log.h"
+#include "int_log.h"
+/* interfacing log10 */
+#include "log10.h"
+#include "int_log10.h"
+/* interfacing log1p */
+#include "log1p.h"
+#include "int_log1p.h"
+/* interfacing pow */
+#include "pow.h"
+#include "matrixPow.h"
+#include "int_OpHat.h"
+#include "int_OpDotHat.h"
+/* interfacing round */
+#include "round.h"
+#include "int_round.h"
+/* interfacing sin */
+#include "sin.h"
+#include "int_sin.h"
+/* interfacing sinh */
+#include "sinh.h"
+#include "int_sinh.h"
+/* interfacing sqrt */
+#include "sqrt.h"
+#include "int_sqrt.h"
+/* interfacing tan */
+#include "tan.h"
+#include "int_tan.h"
+/* interfacing tanh */
+#include "tanh.h"
+#include "int_tanh.h"
+/* interfacing uint8 */
+#include "uint8.h"
+#include "int_uint8.h"
+/* interfacing int8 */
+#include "int8.h"
+#include "int_int8.h"
+/* interfacing uint16 */
+#include "uint16.h"
+#include "int_uint16.h"
+/* interfacing int16 */
+#include "int16.h"
+#include "int_int16.h"
+
+/*interfacing bitand */
+#include "bitand.h"
+#include "int_bitand.h"
+
+/*interfacing bitor */
+#include "bitor.h"
+#include "int_bitor.h"
+
+/*interfacing bitxor */
+#include "bitxor.h"
+#include "int_bitxor.h"
+
+/*interfacing bitcmp */
+#include "bitcmp.h"
+#include "int_bitcmp.h"
+
+/*interfacing bitset */
+#include "bitset.h"
+#include "int_bitset.h"
+
+/*interfacing bitget */
+#include "bitget.h"
+#include "int_bitget.h"
+
+
+/*interfacing linspace */
+#include "linspace.h"
+#include "int_linspace.h"
+
+/*interfacing logspace */
+#include "logspace.h"
+#include "int_logspace.h"
+
+/*interfacing dec2base*/
+#include "dec2base.h"
+#include "int_dec2base.h"
+
+/*interfacing base2dec*/
+#include "base2dec.h"
+#include "int_base2dec.h"
+
+/*interfacing dec2bin*/
+#include "dec2bin.h"
+#include "int_dec2bin.h"
+/*interfacing dec2hex*/
+#include "dec2hex.h"
+#include "int_dec2hex.h"
+
+/*interfacing dec2oct*/
+#include "dec2oct.h"
+#include "int_dec2oct.h"
+/*interfacing oct2dec*/
+#include "oct2dec.h"
+#include "int_oct2dec.h"
+/*interfacing hex2dec*/
+#include "hex2dec.h"
+#include "int_hex2dec.h"
+/*interfacing bin2dec*/
+#include "bin2dec.h"
+#include "int_bin2dec.h"
+
+/*interfacing cosd*/
+#include "cosd.h"
+#include "int_cosd.h"
+
+
+/*interfacing cotd*/
+#include "cotd.h"
+#include "int_cotd.h"
+
+/*interfacing coth*/
+#include "coth.h"
+#include "int_coth.h"
+
+/*interfacing csc*/
+#include "csc.h"
+#include "int_csc.h"
+
+/*interfacing cscd*/
+#include "cscd.h"
+#include "int_cscd.h"
+
+/*interfacing csch*/
+#include "csch.h"
+#include "int_csch.h"
+
+/*interfacing sec*/
+#include "sec.h"
+#include "int_sec.h"
+
+/*interfacing sech*/
+#include "sech.h"
+#include "int_sech.h"
+
+/*interfacing secd*/
+#include "secd.h"
+#include "int_secd.h"
+
+/*interfacing float*/
+#include "float.h"
+#include "int_float.h"
+
+/*interfacing factorial*/
+#include "factorial.h"
+#include "int_factorial.h"
+
+/*interfacing primes*/
+#include "primes.h"
+#include "int_primes.h"
+
+/*interfacing factor*/
+#include "factor.h"
+#include "int_factor.h"
+
+/* IMPLICIT LISTS */
+/* interfacing implicitList/OpColon */
+#include "implicitList.h"
+#include "int_OpColon.h"
+
+/* OPERATIONS */
+/* interfacing assignation */
+#include "int_OpEqual.h"
+/* interfacing addition */
+#include "addition.h"
+#include "int_OpPlus.h"
+/* interfacing subtraction */
+#include "subtraction.h"
+#include "int_OpMinus.h"
+/* interfacing multiplication */
+#include "multiplication.h"
+#include "matrixMultiplication.h"
+#include "int_OpStar.h"
+#include "int_OpDotStar.h"
+/* interfacing division */
+#include "division.h"
+#include "matrixDivision.h"
+#include "int_OpSlash.h"
+#include "int_OpDotSlash.h"
+#include "int_OpBackSlash.h"
+#include "int_OpDotBackSlash.h"
+/* interfacing comparison */
+#include "int_OpLogNot.h"
+#include "int_OpLogEq.h"
+#include "int_OpLogNe.h"
+#include "int_OpLogGt.h"
+#include "int_OpLogGe.h"
+#include "int_OpLogLt.h"
+#include "int_OpLogLe.h"
+#include "int_OpLogAnd.h"
+#include "int_OpLogOr.h"
+/* interfacing insertion */
+#include "int_OpIns.h"
+
+
+/* MATRIX OPERATIONS */
+/* interfacing extraction */
+#include "int_OpExt.h"
+/* interfacing cat */
+#include "cat.h"
+#include "int_OpRc.h"
+#include "int_OpCc.h"
+/* interfacing chol */
+#include "chol.h"
+#include "int_chol.h"
+/* interfacing determinant */
+#include "determ.h"
+#include "int_det.h"
+/* interfacing expm */
+#include "matrixExponential.h"
+#include "int_expm.h"
+/* interfacing eye */
+#include "eye.h"
+#include "int_eye.h"
+/* interfacing fill */
+#include "fill.h"
+/* interfacing inversion */
+#include "matrixInversion.h"
+#include "int_invert.h"
+/* interfacing infinite norm */
+#include "infiniteNorm.h"
+/* interfacing ones */
+#include "ones.h"
+#include "int_ones.h"
+/* interfacing spec */
+#include "spec.h"
+#include "int_spec.h"
+/* interfacing trace */
+#include "matrixTrace.h"
+#include "int_trace.h"
+/* interfacing tranpose */
+#include "matrixTranspose.h"
+#include "int_OpApex.h"
+#include "int_OpDotApex.h"
+/* interfacing zeros */
+#include "zeros.h"
+#include "int_zeros.h"
+/* interfacing diag */
+#include "diag.h"
+#include "int_diag.h"
+/*interfacing cumsum*/
+#include "int_cumsum.h"
+#include "cumsum.h"
+/*interfacing cumprod*/
+#include "int_cumprod.h"
+#include "cumprod.h"
+/*interfacing triu*/
+#include "int_triu.h"
+#include "triu.h"
+/*interfacing tril*/
+#include "int_tril.h"
+#include "tril.h"
+/*interfacing kron*/
+#include "int_kron.h"
+#include "kron.h"
+/*interfacing flipdim*/
+#include "int_flipdim.h"
+#include "flipdim.h"
+/*interfacing norm*/
+#include "int_norm.h"
+#include "norm.h"
+
+/* SIGNAL PROCESSING */
+/* interfacing convol */
+#include "conv.h"
+#include "conv2d.h"
+#include "int_convol.h"
+/* interfacing fft */
+#include "fft.h"
+#include "fft_internal.h"
+#include "int_fft.h"
+/* interfacing fftshift */
+#include "fftshift.h"
+#include "int_fftshift.h"
+/* interfacing ifft */
+#include "ifft.h"
+#include "ifft_internal.h"
+#include "int_ifft.h"
+/* interfacing lev */
+#include "lev.h"
+#include "int_lev.h"
+
+
+
+/* STATISTICS FUNCTIONS */
+
+/* interfacing max */
+#include "statMax.h"
+/* interfacing min */
+#include "statMin.h"
+/* interfacing mean */
+#include "mean.h"
+#include "int_mean.h"
+/* interfacing stdevf */
+#include "stdevf.h"
+#include "int_stdevf.h"
+/* interfacing meanf */
+#include "meanf.h"
+#include "int_meanf.h"
+/* interfacing sum */
+#include "sum.h"
+#include "int_sum.h"
+/* interfacing prod */
+#include "prod.h"
+#include "int_prod.h"
+/* interfacing variance */
+#include "variance.h"
+#include "int_variance.h"
+
+/* TYPE */
+/* interfacing real */
+#include "int_real.h"
+/* interfacing imag */
+#include "int_imag.h"
+
+#include "types.h"
+
+/* STRING*/
+/* interface for String */
+#include "int_string.h"
+/*include for string */
+#include "str.h"
+
+/*ODE functions*/
+#include "ode.h"
+#include "int_ode.h"
+
+/*Diff function*/
+#include "diffc.h"
+#include "int_diffc.h"
+
+/*Functions related to file handling*/
+#include "files.h"
+#include "int_files.h"
+
+/*Functions related to strings*/
+#include "convstr.h"
+#include "int_convstr.h"
+
+/*interfacing strsubst*/
+#include "strsubst.h"
+#include "int_strsubst.h"
+
+/*interfacing strrev*/
+#include "strrev.h"
+#include "int_strrev.h"
+
+/*interfacing strrchr*/
+#include "strrchr.h"
+#include "int_strrchr.h"
+
+/*Functions related to strings*/
+#include "convstr.h"
+#include "int_convstr.h"
+
+
+#include "syslin.h"
+#include "int_syslin.h"
+
+#include "lqr.h"
+#include "int_lqr.h"
+
+#include "lqe.h"
+#include "int_lqe.h"
+
+#include "obscont.h"
+#include "int_obscont.h"
+
+#include "schur.h"
+#include "int_schur.h"
+
+#include "balanc.h"
+#include "int_balanc.h"
+
+#include "rcond.h"
+#include "int_rcond.h"
+
+/*Functions related to opencv*/
+/*#include "cvcore.hpp"
+#include "int_cvcore.hpp"
+#include "cvhighgui.hpp"
+#include "int_cvhighgui.hpp"
+#include "cvimgproc.hpp"
+#include "int_cvimgproc.hpp"
+*/
+/*Scilab-arduino toolbox*/
+#ifdef Arduino1
+#include "int_cmd_digital_out.h"
+#include "cmd_digital_out.h"
+#include "int_cmd_digital_in.h"
+#include "cmd_digital_in.h"
+#include "int_cmd_analog_out.h"
+#include "cmd_analog_out.h"
+#include "int_cmd_analog_in.h"
+#include "cmd_analog_in.h"
+#include "int_cmd_dcmotor.h"
+#include "cmd_dcmotor_run.h"
+#include "cmd_dcmotor_setup.h"
+#include "cmd_dcmotor_release.h"
+#include "int_sleep.h"
+#include "sleep.h"
+#include "int_cmd_analog_in_volt.h"
+#include "cmd_analog_in_volt.h"
+#include "int_cmd_analog_out_volt.h"
+#include "cmd_analog_out_volt.h"
+#include "cmd_i2c_dev.h"
+#include "int_cmd_i2c_dev.h"
+#include "cmd_i2c_write.h"
+#include "int_cmd_i2c_write.h"
+#include "cmd_i2c_read.h"
+#include "int_cmd_i2c_read.h"
+#include "cmd_i2c_write_register.h"
+#include "int_cmd_i2c_write_register.h"
+#include "cmd_i2c_read_register.h"
+#include "int_cmd_i2c_read_register.h"
+
+/*#include "cmd_servo_attach.h"
+#include "cmd_servo_detach.h"
+#include "cmd_servo_move.h"
+#include "int_cmd_servo.h"
+*/
+#endif
+
+/*AVR*/
+#ifdef AVR1
+#include "int_AVRPeripheralGPIO.h"
+#include "AVRPeripheralGPIO.h"
+#include "int_AVRPeripheralADC.h"
+#include "AVRPeripheralADC.h"
+#include "int_AVRPeripheralPWM.h"
+#include "AVRPeripheralPWM.h"
+#include "int_AVRUtil.h"
+#include "AVRUtil.h"
+#include "int_AVRPeripheralTimer.h"
+#include "AVRPeripheralTimer.h"
+#include "int_AVRPeripheralUART.h"
+#include "AVRPeripheralUART.h"
+#endif
+
+/*RPi*/
+#ifdef RPi1
+#include "wiringPi.h"
+#include "int_RPIPeripheralDigital.h"
+#include "RPIPeripheralDigital.h"
+#include "int_RPIPeripheralTiming.h"
+#include "RPIPeripheralTiming.h"
+#include "int_RPIPeripheralSerial.h"
+#include "RPIPeripheralSerial.h"
+#include "int_RPIPeripheralThreading.h"
+#include "RPIPeripheralThreading.h"
+#include "int_RPIPeripheralPinISR.h"
+#include "RPIPeripheralPinISR.h"
+#include "int_RPIPeripheralPWM.h"
+#include "RPIPeripheralPWM.h"
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// #ifdef opencv1
+// #include "cvcore.hpp"
+// #include "int_cvcore.hpp"
+// #include "cvhighgui.hpp"
+// #include "int_cvhighgui.hpp"
+// #include "cvimgproc.hpp"
+// #include "int_cvimgproc.hpp"
+// #endif
+
+#endif /* !__SCI2CLIB_H__ */
+
+
diff --git a/2.3-1/loader.sce b/2.3-1/loader.sce
new file mode 100644
index 00000000..92d68830
--- /dev/null
+++ b/2.3-1/loader.sce
@@ -0,0 +1,10 @@
+// This file is released under the 3-clause BSD license. See COPYING-BSD.
+// Generated by builder.sce: Please, do not edit this file
+
+try
+ getversion("scilab");
+catch
+ error("Scilab 5.0 or more is required.");
+end;
+
+exec(get_absolute_file_path("loader.sce")+"etc/"+"scilab2c.start");
diff --git a/2.3-1/m4/fftw.m4 b/2.3-1/m4/fftw.m4
new file mode 100644
index 00000000..8764aaba
--- /dev/null
+++ b/2.3-1/m4/fftw.m4
@@ -0,0 +1,16 @@
+dnl AC_FFTW
+dnl ------------------------------------------------------
+dnl Check if FFTW is usable and working
+dnl
+AC_DEFUN([AC_FFTW], [
+
+ AC_CHECK_HEADER([fftw3.h],[],[AC_MSG_ERROR([Cannot find headers (fftw3.h) of the library fftw. Please install the dev package (Debian : fftw3-dev)])])
+ AC_CHECK_LIB([fftw3], [fftw_plan_dft_r2c],
+ [FFTW3_LIB=-lfftw3],
+ [AC_MSG_ERROR([libfftw3 : library missing. (Cannot find symbol fftw_plan_dft_r2c). Check if libfftw3 is installed and if the version is correct])]
+ )
+ AC_SUBST(FFTW3_LIB)
+ AC_DEFINE([WITH_FFTW], [], [With FFTW])
+])
+
+
diff --git a/2.3-1/m4/fortran.m4 b/2.3-1/m4/fortran.m4
new file mode 100644
index 00000000..4ed4c7f7
--- /dev/null
+++ b/2.3-1/m4/fortran.m4
@@ -0,0 +1,103 @@
+dnl Macros which process ./configure arguments
+
+
+dnl Fortran Macros
+dnl ------------------------------------------------------
+dnl Copyright INRIA
+dnl Sylvestre Ledru - June 2006
+dnl
+dnl ------------------------------------------------------
+dnl AC_CHECK_UNDERSCORE_FORTRAN
+dnl Look for trailing or leading underscores
+dnl
+AC_DEFUN([AC_CHECK_UNDERSCORE_FORTRAN],[
+
+AC_CHECK_PROGS(NM,nm,no)
+if test "x$NM" = "xno"; then
+ AC_MSG_ERROR([Unable to find nm in the path. nm is used to list all the symbol from a lib])
+fi
+AC_MSG_CHECKING([for leading underscores with Fortran (name-mangling scheme)])
+
+cat << EOF > pipof.f
+ subroutine pipof
+ end
+EOF
+
+dnl expand possible $SCIDIR in $FC (wizard command...)
+eval "$F77 -c pipof.f > /dev/null 2>&1"
+
+FC_LEADING_UNDERSCORE=no
+FC_TRAILING_UNDERSCORE=no
+
+output=`$NM $NMOPT pipof.o|grep _pipof 2>&1`
+if test ! -z "$output"; then
+ FC_LEADING_UNDERSCORE=yes
+ FC_TRAILING_UNDERSCORE=no
+fi
+
+output=`$NM $NMOPT pipof.o|grep pipof_ 2>&1`
+if test ! -z "$output"; then
+ FC_LEADING_UNDERSCORE=no
+ FC_TRAILING_UNDERSCORE=yes
+fi
+
+output=`$NM $NMOPT pipof.o|grep _pipof_ 2>&1`
+if test ! -z "$output"; then
+ FC_LEADING_UNDERSCORE=yes
+ FC_TRAILING_UNDERSCORE=yes
+fi
+
+if test "$FC_LEADING_UNDERSCORE" = yes; then
+ AC_DEFINE([WLU],,[If leading underscores])
+fi
+if test "$FC_TRAILING_UNDERSCORE" = yes; then
+ AC_DEFINE([WTU],,[If trailing underscores])
+fi
+
+rm -f pipof.f pipof.o
+
+AC_MSG_RESULT([$FC_LEADING_UNDERSCORE])
+AC_MSG_CHECKING([for trailing underscores with Fortran (name-mangling scheme)])
+AC_MSG_RESULT([$FC_TRAILING_UNDERSCORE])
+
+#####################
+## test for sharpsign
+#####################
+
+AC_MSG_CHECKING([use of the sharpsign in CPP])
+
+AC_COMPILE_IFELSE(
+ [
+ AC_LANG_PROGRAM(
+ [[#define C2F(name) name##_]],
+ [[C2F(toto)()]]
+ )
+ ],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE([CNAME(name1,name2)], [name1##name2],[Cname])
+ USE_SHARP_SIGN=yes]
+ ,
+ [AC_MSG_RESULT(no)
+ AC_DEFINE([CNAME(name1,name2)], [name1/**/name2],[Cname])
+ USE_SHARP_SIGN=no]
+)
+
+## Define C2F and F2C entry point conversion ##
+if test "$FC_TRAILING_UNDERSCORE" = yes; then
+ if test "$USE_SHARP_SIGN" = yes; then
+ AC_MSG_RESULT([Define C2F with Trailing Underscore and Sharp Sign])
+ AC_DEFINE([C2F(name)], [name##_],[Define C2F with Trailing Underscore and Sharp Sign])
+ AC_DEFINE([F2C(name)], [name##_],[Define F2C with Trailing Underscore and Sharp Sign])
+ else
+ AC_MSG_RESULT([Define C2F with Trailing Underscore and without Sharp Sign])
+ AC_DEFINE([C2F(name)], [name/**/_],[Define C2F with Trailing Underscore and without Sharp Sign])
+ AC_DEFINE([F2C(name)], [name/**/_],[Define F2C with Trailing Underscore and without Sharp Sign])
+ fi
+else
+ AC_MSG_RESULT([Define C2F without Trailing Underscore])
+ AC_DEFINE([C2F(name)], [name],[Define C2F without Trailing Underscore])
+ AC_DEFINE([F2C(name)], [name],[Define C2F without Trailing Underscore])
+fi
+
+])dnl AC_CHECK_UNDERSCORE_FORTRAN
+
diff --git a/2.3-1/m4/intel_compiler.m4 b/2.3-1/m4/intel_compiler.m4
new file mode 100644
index 00000000..ca9eaa3d
--- /dev/null
+++ b/2.3-1/m4/intel_compiler.m4
@@ -0,0 +1,36 @@
+dnl SCI_INTEL_COMPILER
+dnl ------------------------------------------------------
+dnl Set compilation options for intel C/Fortran compilers
+dnl
+
+AC_DEFUN([SCI_INTEL_COMPILER],
+[
+
+ CFLAGS=" $CFLAGS -Dlinux -DNARROWPROTO -mp"
+ # -cm remove comments displays, -w90 -w95 remove warnings abort f90 f95 non standard
+
+ FFLAGS=" $FFLAGS -cm -w90 -w95 -mp"
+
+
+ case "$host" in
+ i*86-*-linux-gnu | *-pc-linux-gnu )
+ # -pc64 : double precision
+ EXTRA_OPTIONS=" -pc64 -ffnalias -falias"
+ ;;
+ esac
+
+ if test "$enable_debug_C" = yes; then
+ CFLAGS="-g $CFLAGS $EXTRA_OPTIONS"
+ else
+ CFLAGS="-O -DNDEBUG $CFLAGS "
+ fi
+
+ if test "$enable_debug_fortran" = yes; then
+ FFLAGS="-g $FFLAGS $EXTRA_OPTIONS"
+ else
+ FFLAGS="-O $FFLAGS "
+ fi
+
+ # TODO : voir si obligatoire vu que c'est en partie le boulot de AC_PROG_C
+
+])dnl SCI_INTEL_COMPILER
diff --git a/2.3-1/macros/ASTManagement/%comment_string.sci b/2.3-1/macros/ASTManagement/%comment_string.sci
new file mode 100644
index 00000000..a963507d
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%comment_string.sci
@@ -0,0 +1,7 @@
+function txt=%comment_string(e)
+//overloading function for "comment" type tlist string function
+//fields:
+// text: a string
+//this is a leaf of the AST
+ txt=['Comment : '+e.text]
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%cste_string.sci b/2.3-1/macros/ASTManagement/%cste_string.sci
new file mode 100644
index 00000000..ba9971d2
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%cste_string.sci
@@ -0,0 +1,26 @@
+function txt=%cste_string(c)
+//overloading function for "cste" type tlist string function
+//this is a leaf of the AST
+//fields:
+// value : a number or a string
+//NUT: added cste I also need "" for strings in order to be sure that the blanks are
+//NUT: correctly considered and not mistaken with additional blanks present in the ast text file.
+ stringcvalue = string(c.value);
+ if (stringcvalue == "%T" | ...
+ stringcvalue == "%t" | ...
+ stringcvalue == "%F" | ...
+ stringcvalue == "%f" | ...
+ stringcvalue == "%nan" | ...
+ stringcvalue == "%inf" | ...
+ stringcvalue == "%e" | ...
+ stringcvalue == "%pi")
+ txt=['Number_x: '+stringcvalue];
+ elseif (isnum(stringcvalue))
+ //NUT needed to convert format 1D-14 into 1d-14
+ txt=['Number_x: '+strsubst(stringcvalue,'D','e')];
+ elseif (stringcvalue == "%i")
+ txt=['Number_X: '+stringcvalue];
+ else
+ txt=['String: ""'+stringcvalue+'""'];
+ end
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/%equal_string.sci b/2.3-1/macros/ASTManagement/%equal_string.sci
new file mode 100644
index 00000000..9678f0e0
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%equal_string.sci
@@ -0,0 +1,16 @@
+function txt=%equal_string(e)
+//overloading function for "equal" type tlist string function
+//this is a node of the AST
+
+//fields:
+// expression: "expression" type tlist (the right hand side)
+// lhs : list of "variable" type tlist and "operation" type tlist // (the assignment)
+// endsymbol : string (the orginal end-of-instruction symbol (, ; <CR>))
+ txt=['Equal'
+ ' Expression: '
+ ' '+string(e.expression)
+ ' Lhs : '
+ ' '+objectlist2string(e.lhs)
+ 'EndEqual'
+ ]
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/%for_string.sci b/2.3-1/macros/ASTManagement/%for_string.sci
new file mode 100644
index 00000000..0ed9ca28
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%for_string.sci
@@ -0,0 +1,15 @@
+function txt=%for_string(F)
+//overloading function for "for" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// for instructions list)
+//NUT: raf cambiato ForExpression e ForStatements
+ txt=['For'
+ ' ForExpression:'
+ ' '+string(F.expression)
+ ' ForStatements:'
+ ' '+objectlist2string(F.statements)
+ 'EndFor']
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/%funcall_string.sci b/2.3-1/macros/ASTManagement/%funcall_string.sci
new file mode 100644
index 00000000..faeb81d9
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%funcall_string.sci
@@ -0,0 +1,15 @@
+function txt=%funcall_string(F)
+//overloading function for "funcall" type tlist string function
+//this is a node of the AST
+//fields:
+// rhs : a list
+// name : string, the name of the function
+// lhsnb: number, the number of function lhs
+
+txt=['Funcall : '+F.name
+ ' #lhs : '+string(F.lhsnb)
+ ' Rhs : '
+ ' '+objectlist2string(F.rhs)
+ 'EndFuncall'
+ ]
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%ifthenel_string.sci b/2.3-1/macros/ASTManagement/%ifthenel_string.sci
new file mode 100644
index 00000000..6787a87c
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%ifthenel_string.sci
@@ -0,0 +1,27 @@
+function txt=%ifthenel_string(I)
+//overloading function for "ifthenel" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the if expression)
+// then : list of "equal" type tlist and list('EOL') (the
+// then instructions list)
+// elseifs : a list of tlists
+// else : list of "equal" type tlist and list('EOL') (the
+// else instructions list)
+ txt=['If '
+ ' Expression:'
+ ' '+string(I.expression)
+ ' If Statements'
+ ' '+objectlist2string(I.then)]
+ for e=I.elseifs
+ txt=[txt;
+ ' Else If Expression'
+ ' '+string(e.expression)
+ ' Else If Statements'
+ ' '+objectlist2string(e.then)]
+ end
+ txt=[txt;
+ ' Else Statements'
+ ' '+objectlist2string(I.else)
+ 'EndIf']
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%ifthenelse_string.sci b/2.3-1/macros/ASTManagement/%ifthenelse_string.sci
new file mode 100644
index 00000000..ef588c56
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%ifthenelse_string.sci
@@ -0,0 +1,27 @@
+function txt=%ifthenelse_string(I)
+//overloading function for "ifthenel" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the if expression)
+// then : list of "equal" type tlist and list('EOL') (the
+// then instructions list)
+// elseifs : a list of tlists
+// else : list of "equal" type tlist and list('EOL') (the
+// else instructions list)
+ txt=['If '
+ ' Expression:'
+ ' '+string(I.expression)
+ ' If Statements'
+ ' '+objectlist2string(I.then)]
+ for e=I.elseifs
+ txt=[txt;
+ ' Else If Expression'
+ ' '+string(e.expression)
+ ' Else If Statements'
+ ' '+objectlist2string(e.then)]
+ end
+ txt=[txt;
+ ' Else Statements'
+ ' '+objectlist2string(I.else)
+ 'EndIf']
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%operatio_string.sci b/2.3-1/macros/ASTManagement/%operatio_string.sci
new file mode 100644
index 00000000..8421a3f4
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%operatio_string.sci
@@ -0,0 +1,13 @@
+function txt=%operatio_string(O)
+//overloading function for "operation" type tlist string function
+//this is a node of the AST
+//fields:
+// operands: a list
+// operator: a string
+ txt=['Operation'
+ ' Operands:'
+ ' '+objectlist2string(O.operands)
+ ' Operator: '+O.operator
+ 'EndOperation'
+ ]
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/%operation_string.sci b/2.3-1/macros/ASTManagement/%operation_string.sci
new file mode 100644
index 00000000..84f5ce3c
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%operation_string.sci
@@ -0,0 +1,13 @@
+function txt=%operation_string(O)
+//overloading function for "operation" type tlist string function
+//this is a node of the AST
+//fields:
+// operands: a list
+// operator: a string
+ txt=['Operation'
+ ' Operands:'
+ ' '+objectlist2string(O.operands)
+ ' Operator: '+O.operator
+ 'EndOperation'
+ ]
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/%program_p.sci b/2.3-1/macros/ASTManagement/%program_p.sci
new file mode 100644
index 00000000..f45ed69a
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%program_p.sci
@@ -0,0 +1,4 @@
+function %program_p(p)
+ //overloading function for "program" type tlist display
+ mprintf("%s\n",string(p))
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%program_string.sci b/2.3-1/macros/ASTManagement/%program_string.sci
new file mode 100644
index 00000000..93486992
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%program_string.sci
@@ -0,0 +1,19 @@
+function txt=%program_string(p)
+//overloading function for "program" type tlist string function
+//main (root) node of the Abstract Formal Tree
+//fields:
+// name : string (the function name)
+// outputs : list of "variable" type tlist (the output arg names)
+// inputs : list of "variable" type tlist (the intput arg names)
+// statements: list of "equal" type tlist and list('EOL') (the
+// instructions list)
+// nblines : number (the number of lines in the scilab function)
+ txt=['Program'
+ 'Name : '+p.name
+ 'Outputs: '+strcat(objectlist2string(p.outputs),' ')
+ 'Inputs : '+strcat(objectlist2string(p.inputs),' ')
+ 'Statements '
+ ' '+objectlist2string(p.statements)
+ 'EndProgram'
+ ]
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%variable_string.sci b/2.3-1/macros/ASTManagement/%variable_string.sci
new file mode 100644
index 00000000..86507957
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%variable_string.sci
@@ -0,0 +1,26 @@
+function txt=%variable_string(v)
+ global anscounter; //NUT: just to fix problem with ans variables.
+//overloading function for "variable" type tlist string function
+//fields: name
+//this is a leaf of the AST
+//NUT: changed here. For me %i is a number not a variable.
+ if (v.name == "%T" | ...
+ v.name == "%t" | ...
+ v.name == "%F"| ...
+ v.name == "%f"| ...
+ v.name == "%nan"| ...
+ v.name == "%inf"| ...
+ v.name == "%e" | ...
+ v.name == "%pi")
+ txt=['Number_x: '+v.name];
+ elseif (v.name == "%i")
+ txt=['Number_X: '+v.name];
+ else
+ if (v.name == 'ans')
+ anscounter = anscounter + 1;
+ txt=['Variable: '+v.name+string(anscounter)];
+ else
+ txt=['Variable: '+v.name];
+ end
+ end
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/%while_string.sci b/2.3-1/macros/ASTManagement/%while_string.sci
new file mode 100644
index 00000000..7d5e6223
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/%while_string.sci
@@ -0,0 +1,14 @@
+function txt=%while_string(W)
+//overloading function for "while" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// while instructions list)
+ txt=['While'
+ ' WhileExpression:'
+ ' '+string(W.expression)
+ ' WhileStatements:'
+ ' '+objectlist2string(W.statements)
+ 'EndWhile']
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST2Ccode.sci b/2.3-1/macros/ASTManagement/AST2Ccode.sci
new file mode 100644
index 00000000..409eaab1
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST2Ccode.sci
@@ -0,0 +1,268 @@
+function AST2Ccode(FileInfoDatFile)
+// function AST2Ccode(FileInfoDatFile)
+// -----------------------------------------------------------------
+// Read the AST and call the corresponding handlers.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-May-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+
+//NUT: questa funzione e' da sistemare meglio
+
+// ---------------------
+// --- Load section. ---
+// ---------------------
+// --- Load File Info Structure. ---
+load(FileInfoDatFile,'FileInfo');
+
+// --- Load Shared Info Structure. ---
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+// -------------------------
+// --- End load section. ---
+// -------------------------
+
+// ---------------------------------------------------
+// --- Extraction of the function name and number. ---
+// ---------------------------------------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+SharedInfo.Function_list = [];
+SharedInfo.Function_list_index = 1;
+
+// ---------------------------------
+// --- Parameter Initialization. ---
+// ---------------------------------
+global SCI2CSTACK
+SCI2CSTACK = ['EMPTYSTACK'];
+
+global StackPosition;
+StackPosition = 1;
+
+global STACKDEDUG
+STACKDEDUG = 0; // 1 -> Every Pop and Push operation on the stack, the stack content will be printed on screen.
+// -------------------------------------
+// --- End parameter Initialization. ---
+// -------------------------------------
+
+ASTFileName = FileInfo.Funct(nxtscifunnumber).ASTFileName;
+
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// --- Open AST file. ---
+SharedInfo.ASTReader.fidAST = SCI2COpenFileRead(ASTFileName);
+fidAST = SharedInfo.ASTReader.fidAST;
+
+OrigWorkAreaUsedBytes = SharedInfo.WorkAreaUsedBytes;
+OrigUsedTempScalarVars = SharedInfo.UsedTempScalarVars;
+
+PrintStepInfo('Generate C code in '+FileInfo.Funct(nxtscifunnumber).FinalCFileName,...
+ FileInfo.GeneralReport,'both');
+// ---------------------------
+// --- End initialization. ---
+// ---------------------------
+
+// ------------------------
+// --- Parse AST header. ---
+// ------------------------
+ASTHeader = AST_ReadASTHeader(fidAST,ReportFileName);
+SharedInfo = AST_HandleHeader(ASTHeader,FileInfo,SharedInfo);
+//NUT: le metto per ora perche' quando provo a cercare lo specifier di precisione al termine
+//NUT: del programma non ho piu' nulla da poppare se lo specifier e' assente. Al limite posso mettere la program e i nomi
+//NUT: al posto di dummy.
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+AST_PushASTStack('Dummy');
+//NUT: Se ne tolgo qualcuno ottengo errori
+// ----------------------------
+// --- End Parse AST header. ---
+// ----------------------------
+ //NUT: better to have a function.
+
+ // --- Reset TempVars Structure. ---
+ TempVars = [];
+ // Reset info related to temp variables used in the C code.
+ SharedInfo.WorkAreaUsedBytes = OrigWorkAreaUsedBytes;
+ SharedInfo.UsedTempScalarVars = OrigUsedTempScalarVars;
+ //NUT: put here a manageeol so that you can have all the save and load you want.
+ SharedInfo.ASTReader.UsedTempVars = 0;
+
+// ----------------------------------
+// --- Main loop to read the AST. ---
+// ----------------------------------
+//NUT: file ottenuto con m2sci se hai tempo prova a vedere se ci sono inesattezze.
+//NUT: inoltre per maggiore eleganza si puo' pensare di introdurre piu' funzioni
+
+while ~meof(fidAST)
+ // Read a line from the AST
+ tline = mgetl(fidAST,1);
+ AST_CheckLineLength(tline);
+ treeline = stripblanks(tline);
+
+ if STACKDEDUG == 1
+ disp('Read AST Line: '+treeline);
+ end
+
+ // Analyze line.
+ select treeline
+
+ // ------------------
+ // --- Functions. ---
+ // ------------------
+ //NUT: qui puoi anche aggiunger piu' case per specificare meglio la struttura della funcall
+ //NUT: i case aggiunti ovviamente faranno solo il push della treeline.
+ case 'EndOperation' then
+ [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,'Operation');
+ case 'EndFuncall' then
+ [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,'Funcall');
+
+ // --------------
+ // --- Equal. ---
+ // --------------
+ case 'EndEqual' then
+ //NUT: prima di lanciare l'analisi della equal puoi mettere degli argomenti dummy
+ //NUT: per fare in modo di coprire le ins, anche se ci puo' essere qualche rischio quando
+ //NUT: ho miste ins e variabili, per esempio [c(1,1), a] = twooutfun();
+ //NUT: in questo caso solo una delle due equal va scartata.
+ [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,'Equal');
+ SharedInfo = INIT_SharedInfoEqual(SharedInfo);
+ case 'Equal' then
+ SharedInfo.Equal.Enabled = 1; // 1 means enabled -> we are inside an equal AST block.
+ AST_PushASTStack(treeline);
+ case 'Lhs :' then
+ SharedInfo.Equal.Lhs = 1; // 1 means that we are inside the Lhs block of the Equal
+ [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_ReadEqualRhsNames(FileInfo,SharedInfo);
+
+ // lengthNumber = length('Number_');
+ // if (part(EqualInArgScope,1:lengthNumber) == 'Number_')
+ // SharedInfo.SkipNextEqual = 1
+ // end
+ SharedInfo.Equal.NInArg = EqualNInArg;
+ for tmpcnt = 1:SharedInfo.Equal.NInArg
+ SharedInfo.Equal.InArg(tmpcnt).Name = EqualInArgName(tmpcnt);
+ SharedInfo.Equal.InArg(tmpcnt).Scope = EqualInArgScope(tmpcnt);
+ end
+ AST_PushASTStack(treeline);
+
+ // ----------------
+ // --- If/Else. ---
+ // ----------------
+ //NUT: da verificare la gestione dello stack
+ case 'If Statements' then
+ [FileInfo,SharedInfo] = AST_HandleIfElse(FileInfo,SharedInfo,'if');
+ case 'Else If Expression' then
+ AST_PushASTStack(treeline);
+ [FileInfo,SharedInfo] = AST_HandleIfElse(FileInfo,SharedInfo,'else');
+ case 'Else If Statements' then
+ [FileInfo,SharedInfo] = AST_HandleIfElse(FileInfo,SharedInfo,'elseif');
+ case 'Else Statements' then
+ [FileInfo,SharedInfo] = AST_HandleIfElse(FileInfo,SharedInfo,'else');
+ case 'EndIf' then
+ for counter=1:SharedInfo.CountNestedIf+1
+ SharedInfo = C_IfElseBlocks(FileInfo,SharedInfo,'out');
+ end
+ SharedInfo.CountNestedIf = 0;
+
+ // --------------
+ // --- Dummy. ---
+ // --------------
+ case 'Comment :' then
+ AST_HandleEOL(FileInfo,SharedInfo); //NUT: si potrebbe differenziare comment da EOL
+ case '<EOL>' then
+ AST_HandleEOL(FileInfo,SharedInfo);
+
+ // -----------------
+ // --- Epilogue. ---
+ // -----------------
+ case 'EndProgram'
+ SharedInfo = AST_HandleEndProgram(FileInfo,SharedInfo);
+ //NUT: per essere precisi si puo' pensare di mettere un check
+ //NUT: alla fine dell'albero per accertarsi che c'e' end program li' dove ce lo aspettiamo
+
+ // ------------
+ // --- For. ---
+ // ------------
+ case 'For' then
+ SharedInfo.For.Level = SharedInfo.For.Level + 1;
+ FileInfo = AST_HandleFor(FileInfo,SharedInfo);
+ case 'ForExpression:'
+ AST_PushASTStack(treeline);
+ SharedInfo.ForExpr.OnExec = SharedInfo.ForExpr.OnExec + 1;
+ case 'ForStatements:'
+ [FileInfo,SharedInfo] = AST_HandleForStatem(FileInfo,SharedInfo);
+ case 'EndFor' then
+ SharedInfo = AST_HandleEndFor(FileInfo,SharedInfo);
+ SharedInfo.For.Level = SharedInfo.For.Level - 1;
+
+ // --------------
+ // --- While. ---
+ // --------------
+ case 'While' then
+ AST_PushASTStack(treeline);
+ SharedInfo.While.Level = SharedInfo.While.Level + 1;
+ case 'WhileExpression:'
+ AST_PushASTStack(treeline);
+ [FileInfo,SharedInfo] = AST_HandleWhileExpr(FileInfo,SharedInfo);
+ case 'WhileStatements:'
+ [FileInfo,SharedInfo] = AST_HandleWhileStatem(FileInfo,SharedInfo);
+ case 'EndWhile' then
+ SharedInfo = AST_HandleEndWhile(FileInfo,SharedInfo);
+ SharedInfo.While.Level = SharedInfo.While.Level - 1;
+
+ // ----------------
+ // --- Default. ---
+ // ----------------
+ else
+ AST_PushASTStack(treeline);
+ end
+end
+
+// ------------------------------------
+// -----List of functions Used--------
+// -------------------------------------
+
+SharedInfo.Function_list_index = SharedInfo.Function_list_index - 2;
+SharedInfo.Function_list = SharedInfo.Function_list(1:SharedInfo.Function_list_index);
+//To remove function repeatedly used----------
+x = size(unique(SharedInfo.Function_list));
+SharedInfo.Function_list_index = x(1);
+SharedInfo.Function_list = unique(SharedInfo.Function_list);
+
+SharedInfo.Function_list = SharedInfo.Function_list(1:SharedInfo.Function_list_index);
+
+// --------------------------------------
+// --- End main loop to read the AST. ---
+// --------------------------------------
+
+mclose(fidAST);
+// ---------------------
+// --- Save section. ---
+// ---------------------
+// --- Save Shared Info Structure. ---
+save(SharedInfoDatFile, "SharedInfo");
+// -------------------------
+// --- End save section. ---
+// -------------------------
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.sci b/2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.sci
new file mode 100644
index 00000000..8e3afdcf
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.sci
@@ -0,0 +1,88 @@
+function AST_CheckCommonInOutArgs(InArg,NInArg,OutArg,NOutArg,ReportFileName)
+// function AST_CheckCommonInOutArgs(InArg,NInArg,OutArg,NOutArg,ReportFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Compares input and output arguments names and issues and error
+// when at least one output argument is equal to the one of the
+// input arguments. The error is issued only when the common argument
+// is not a scalar value. This is a safe approach that prevents error
+// when the same matrix is used as both input and output argument of
+// a function.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 08-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+ncommonstrings = 0;
+commonstrings = '';
+
+//RNU non mi ricordo per quale motivo avevo commentato il seguente codice
+//RNU e decommentato l'altro a seguire. Sembra che avessi deciso che anche
+//RNU le variabili scalari non potessero essere usate nella stessa expr
+//RNU contemporaneamente come input e come output
+for cnt1 = 1:NInArg
+ for cnt2 = 1:NOutArg
+ if ((InArg(cnt1).Name == OutArg(cnt2).Name) & ...
+ (InArg(cnt1).Dimension > 0))
+ ncommonstrings = ncommonstrings + 1;
+ commonstrings(ncommonstrings) = InArg(cnt1).Name;
+ end
+ end
+end
+
+// for cnt1 = 1:NInArg
+// for cnt2 = 1:NOutArg
+// if ((InArg(cnt1).Name == OutArg(cnt2).Name))
+// ncommonstrings = ncommonstrings + 1;
+// commonstrings(ncommonstrings) = InArg(cnt1).Name;
+// end
+// end
+// end
+
+if (ncommonstrings > 0)
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Found '+string(ncommonstrings)+' input/output 2-D arguments',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: with the same name: ',ReportFileName,'both','y');
+ for cntstr = 1:ncommonstrings
+ PrintStringInfo('SCI2CERROR: Arg('+string(cntstr)+'): '+commonstrings(cntstr),ReportFileName,'both','y');
+ end
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: This approach is not allowed because it is not safe',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: due to the fact that arrays are passed by reference to functions.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: For example if A is a squared matrix then the following code,',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: A = A'';',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: could generate incorrect results.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Please consider renaming input or output arguments.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: See examples below:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: // Example 1: Function call.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: A = zeros(10,9);',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: A = sin(A); // Not Allowed',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: // The previous line must be rewritten as:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: MYTMP = A; // Allowed',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: A = sin(MYTMP); // Allowed',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: // Example 2: Function definition.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: function d = myfun(a,b,c,d) // Not Allowed',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: // The previous line must be rewritten as:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: function e = myfun(a,b,c,d) // Not Allowed',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Found '+string(ncommonstrings)+' input/output 2-D arguments with the same name.');
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_CheckLastFunc.sci b/2.3-1/macros/ASTManagement/AST_CheckLastFunc.sci
new file mode 100644
index 00000000..508435b7
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_CheckLastFunc.sci
@@ -0,0 +1,77 @@
+function [LhsArgNames,LhsArgScope,NLhsArg] = AST_CheckLastFunc(fidAST,SearchLevel)
+// function [LhsArgNames,LhsArgScope,NLhsArg] = AST_CheckLastFunc(fidAST,SearchLevel)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+astfilepos = mtell(fidAST);
+NLhsArg = 0;
+LhsArgNames = '';
+LhsArgScope = '';
+FlagLastFunc = 0;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//NUT: non capisco come mai tu non faccia il flipud degli argometi letti.
+//NUT: Level 1 e' quando abbiamo una equal float fun
+//NUT: level 0 quando abbiamo equal fun
+tline = mgetl(fidAST,1);
+AST_CheckLineLength(tline);
+LhsField = stripblanks(tline);
+if ((SearchLevel == 1) & (LhsField == 'EndFuncall'))
+ SearchLevel = 0;
+ tline = mgetl(fidAST,1);
+ AST_CheckLineLength(tline);
+ LhsField = stripblanks(tline);
+end
+if ((SearchLevel == 0) & (LhsField == 'Lhs :'))
+ tline = mgetl(fidAST,1);
+ AST_CheckLineLength(tline);
+ LhsField = stripblanks(tline);
+ while(LhsField ~= 'EndEqual')
+ NLhsArg = NLhsArg + 1;
+ if (LhsField == '<EOL>')
+ error(9999, 'Found <EOL> before EndEqual');
+ elseif (LhsField == 'EndProgram')
+ error(9999, 'Found EndProgram before EndEqual');
+ end
+ if (LhsField == 'Operation')
+ // if (LhsField == 'Operator: ins')
+ // It means that we have to store the results of the function in temp vars.
+ LhsField = 'EndEqual'; // Force the exit from the while.
+ NLhsArg = 0;
+ LhsArgNames = '';
+ LhsArgScope = '';
+ else
+ [LhsArgNames(NLhsArg),LhsArgScope(NLhsArg)] = AST_ExtractNameAndScope(LhsField);
+ tline = mgetl(fidAST,1);
+ AST_CheckLineLength(tline);
+ LhsField = stripblanks(tline);
+ end
+ end
+end
+mseek(astfilepos,fidAST,'set');
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_CheckLineLength.sci b/2.3-1/macros/ASTManagement/AST_CheckLineLength.sci
new file mode 100644
index 00000000..3973b188
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_CheckLineLength.sci
@@ -0,0 +1,31 @@
+function AST_CheckLineLength(instring)
+// function AST_CheckLineLength(instring)
+// -----------------------------------------------------------------
+// "Fixes" the AST generator bug. When a line of code is greater
+// than 80 chars the generated AST is wrong.
+//
+// Input data:
+// instring: string read from the AST.
+//
+// Output data:
+// ---
+//
+// Status:
+// 15-May-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// TODO : Remove me
+
+//if length(instring) > 77
+// SCI2Cerror('Line too long: please reduce the length of the current line.');
+//end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.sci b/2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.sci
new file mode 100644
index 00000000..e8ffbf1f
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.sci
@@ -0,0 +1,82 @@
+function AnnotationFnc = AST_CheckPrecSpecifier(FunctionName,FileInfo,SharedInfo);
+// function AnnotationFnc = AST_CheckPrecSpecifier(FunctionName,FileInfo,SharedInfo);
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Searches for one of the following data annotation functions:
+// Funcall : int
+// Funcall : float
+// Funcall : double
+// Note: remember to execute this function before pushing the output
+// argument names into the stack.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 13-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+PrintStringInfo(' ',ReportFileName,'file','y');
+// #RNU_RES_B
+PrintStringInfo(' Checking presence of precision specifier',ReportFileName,'file','y');
+//NUT: da sistemare senza le global
+// #RNU_RES_E
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+AnnotationFnc = 'default';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+Pop1 = AST_PopASTStack(); // Rhs :
+if (mtlb_strcmp(stripblanks(Pop1),'Rhs :'))
+ Pop2 = AST_PopASTStack(); // #lhs : 1
+ if (mtlb_strcmp(stripblanks(Pop2),'#lhs : 1'))
+ Pop3 = AST_PopASTStack(); // Funcall : double
+ FunctionName = stripblanks(part(Pop3,12:length(Pop3)));
+ for counterdataprec = 1:max(size(SharedInfo.Annotations.DataPrec))
+ if (mtlb_strcmp(FunctionName,SharedInfo.Annotations.DataPrec(counterdataprec)))
+ AnnotationFnc = FunctionName;
+ end
+ end
+ // --- Repush strings into the AST stack. ---
+ AST_PushASTStack(Pop3);
+ end
+ // --- Repush strings into the AST stack. ---
+ AST_PushASTStack(Pop2);
+end
+// --- Repush strings into the AST stack. ---
+AST_PushASTStack(Pop1);
+
+if mtlb_strcmp(AnnotationFnc,'default')
+ // #RNU_RES_B
+ PrintStringInfo('Function is not annotated',ReportFileName,'file','y');
+ PrintStringInfo('The ""'+SharedInfo.DefaultPrecision+'"" default precision will be used.',ReportFileName,'file','y');
+ // #RNU_RES_E
+else
+ // #RNU_RES_B
+ PrintStringInfo('Function is annotated with ""'+AnnotationFnc+'"" specifier',ReportFileName,'file','y');
+ // #RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_DisplayStack.sci b/2.3-1/macros/ASTManagement/AST_DisplayStack.sci
new file mode 100644
index 00000000..8543e2e0
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_DisplayStack.sci
@@ -0,0 +1,42 @@
+function AST_DisplayStack()
+// function AST_DisplayStack()
+// -----------------------------------------------------------------
+// Displays the AST stack content. The AST stack is used to read the
+// AST.
+//
+// Input data:
+// ---
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+disp('*********************')
+disp('*********************')
+
+if (STACKDEDUG == 1)
+ for counterposition = 1:StackPosition
+ disp(SCI2CSTACK(counterposition,1))
+ end
+end
+disp('---------------------')
+disp('---------------------')
+disp(' ');disp(' ');disp('Press return to continue'); halt;
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.sci b/2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.sci
new file mode 100644
index 00000000..1dbaaad7
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.sci
@@ -0,0 +1,107 @@
+function [ArgName,ArgScope] = AST_ExtractNameAndScope(ASTField)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Dec-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+ArgName = '';
+ArgScope = '';
+
+cnttag = 0;
+cnttag = cnttag + 1;
+tagname(cnttag) = 'Number_';
+taglength(cnttag) = length(tagname(cnttag));
+
+cnttag = cnttag + 1;
+tagname(cnttag) = 'String:';
+taglength(cnttag) = length(tagname(cnttag));
+
+cnttag = cnttag + 1;
+tagname(cnttag) = 'Variable:';
+taglength(cnttag) = length(tagname(cnttag));
+
+cnttag = cnttag + 1;
+tagname(cnttag) = 'Global:';
+taglength(cnttag) = length(tagname(cnttag));
+
+cnttag = cnttag + 1;
+tagname(cnttag) = 'Local:';
+taglength(cnttag) = length(tagname(cnttag));
+
+cnttag = cnttag + 1;
+tagname(cnttag) = 'Temp:';
+taglength(cnttag) = length(tagname(cnttag));
+
+cnttag = cnttag + 1;
+tagname(cnttag) = '<empty>';
+taglength(cnttag) = length(tagname(cnttag));
+
+fieldlength = length(ASTField);
+
+
+//NUT: il seguente codice e' poco elegante.
+if (SCI2Cstrncmps1size(tagname(1),ASTField))
+ // Here we can have:
+ // Number_x: it means default precision.
+ // Number_s: it means float real type.
+ // Number_d: it means double real type.
+ // Number_c: it means float complex type.
+ // Number_z: it means double complex type.
+
+ // If ArgName is i, make it string
+ if(mtlb_strcmp(ASTField,"Number_x: i") == %T)
+ ArgName = stripblanks(part(ASTField,taglength(1)+3:fieldlength));
+ ArgScope = 'String';
+ else
+ ArgName = stripblanks(part(ASTField,taglength(1)+3:fieldlength));
+ ArgScope = stripblanks(part(ASTField,1:taglength(1)+1));
+ end
+
+elseif (SCI2Cstrncmps1size(tagname(2),ASTField))
+ ArgName = stripblanks(part(ASTField,taglength(2)+1:fieldlength));
+ ArgName = part(ArgName,2:length(ArgName)-1); // I remove also the first and the last "
+ ArgScope = 'String';
+
+elseif (SCI2Cstrncmps1size(tagname(3),ASTField))
+ ArgName = stripblanks(part(ASTField,taglength(3)+1:fieldlength));
+ ArgScope = 'Variable';
+
+elseif (SCI2Cstrncmps1size(tagname(4),ASTField))
+ ArgName = stripblanks(part(ASTField,taglength(4)+1:fieldlength));
+ ArgScope = 'Global';
+
+elseif (SCI2Cstrncmps1size(tagname(5),ASTField))
+ ArgName = stripblanks(part(ASTField,taglength(5)+1:fieldlength));
+ ArgScope = 'Local';
+
+elseif (SCI2Cstrncmps1size(tagname(6),ASTField))
+ ArgName = stripblanks(part(ASTField,taglength(6)+1:fieldlength));
+ ArgScope = 'Temp';
+
+elseif (SCI2Cstrncmps1size(tagname(7),ASTField))
+ ArgName = '<empty>';
+ ArgScope = 'None';
+else
+ error(9999, 'Argument specifier not found in the AST field: '+ASTField);
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_GetASTFile.sci b/2.3-1/macros/ASTManagement/AST_GetASTFile.sci
new file mode 100644
index 00000000..16fbbbac
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_GetASTFile.sci
@@ -0,0 +1,58 @@
+function AST_GetASTFile(FileInfoDatFile)
+// function AST_GetASTFile(FileInfoDatFile)
+// -----------------------------------------------------------------
+// Generates the AST file starting from the .sci file specified
+// in SharedInfo.NextSCIFileName.
+//
+// Input data:
+// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
+//
+// Output data:
+// ---
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ---------------------------------
+// --- Load File Info Structure. ---
+// ---------------------------------
+clear FileInfo
+load(FileInfoDatFile,'FileInfo');
+
+// -----------------------------------
+// --- Load Shared Info Structure. ---
+// -----------------------------------
+clear SharedInfo
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+
+// ---------------------------------------------------
+// --- Extraction of the function name and number. ---
+// ---------------------------------------------------
+funname = SharedInfo.NextSCIFunName;
+funnumber = SharedInfo.NextSCIFunNumber;
+
+PrintStepInfo('Generate the AST.', FileInfo.GeneralReport,'both');
+
+// --- Generation of the AST file. ---
+SciFile2ASTFile(FileInfo.Funct(funnumber).SCIFileName,...
+ FileInfo.Funct(funnumber).ASTFileName);
+
+// ---------------------
+// --- Save section. ---
+// ---------------------
+// --- Save File Info Structure. ---
+// save(FileInfoDatFile, "FileInfo");
+// -------------------------
+// --- End save section. ---
+// -------------------------
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_GetFuncallPrm.sci b/2.3-1/macros/ASTManagement/AST_GetFuncallPrm.sci
new file mode 100644
index 00000000..e7c1581c
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_GetFuncallPrm.sci
@@ -0,0 +1,54 @@
+function [FunctionName,InArg,NInArg,OutArg,NOutArg] = ...
+ AST_GetFuncallPrm(FileInfo,SharedInfo,ASTFunType)
+// function [FunctionName,InArg,NInArg,NOutArg] = ...
+// AST_GetFuncallPrm(FileInfo,SharedInfo,ASTFunType)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+//#RNU_RES_B
+PrintStringInfo('***Retrieving '+ASTFunType+' Parameters from AST***',ReportFileName,'file','y');
+//#RNU_RES_E
+OutArg = [];
+NOutArg = 0;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ------------------------------------------------------
+// --- Get Parameters from the AST Funcall structure. ---
+// ------------------------------------------------------
+if (ASTFunType=='Funcall')
+ [FunctionName,InArg,NInArg,NOutArg] = AST_ParseFuncallStruct(FileInfo,SharedInfo);
+elseif (ASTFunType=='Operation')
+ [FunctionName,InArg,NInArg,NOutArg] = AST_ParseOperStruct(FileInfo,SharedInfo);
+elseif (ASTFunType=='Equal')
+ [FunctionName,InArg,NInArg,OutArg,NOutArg] = AST_ParseEqualStruct(FileInfo,SharedInfo);
+else
+ error(9999, 'Unknown Function type: '+ASTFunType+'.');
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.sci b/2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.sci
new file mode 100644
index 00000000..f45c29e5
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.sci
@@ -0,0 +1,99 @@
+function [LhsArg,NLhsArg,PrecisionSpecifier,SharedInfo] = AST_GetPrecAndLhsArg(OutArg,NOutArg,FunctionName,FunTypeAnnot,FunSizeAnnot,ASTFunType,FileInfo,SharedInfo);
+// function [LhsArg,NLhsArg,PrecisionSpecifier,SharedInfo] = AST_GetPrecAndLhsArg(OutArg,NOutArg,FunctionName,FunTypeAnnot,FunSizeAnnot,ASTFunType,FileInfo,SharedInfo);
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),8,8);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+// #RNU_RES_B
+PrintStringInfo('***Search for Equal Lhs and precision specifier to be applied to the current function.***',ReportFileName,'file','y');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// ---------------------------------------
+// --- Search for Precision Specifier. ---
+// ---------------------------------------
+// #RNU_RES_E
+if (NOutArg == 1 & FunTypeAnnot == 'FA_TP_USER')
+ PrecisionSpecifier = AST_CheckPrecSpecifier(FunctionName,FileInfo,SharedInfo);
+ if (PrecisionSpecifier == 'default')
+ SearchLevel = 0;
+ else
+ SearchLevel = 1;
+ SharedInfo.SkipNextPrec = 1;
+ end
+else
+ PrecisionSpecifier = '';
+ SearchLevel = 0;
+end
+
+// #RNU_RES_B
+// -------------------------------------------------------------
+// --- Check Last Function Condition and update LhsArg info. ---
+// -------------------------------------------------------------
+// #RNU_RES_E
+if ((ASTFunType~='Equal')& (NOutArg ~= 0))
+ //If NOutArg = 0, bypass.
+ // #RNU_RES_B
+ PrintStringInfo(' ',ReportFileName,'file','y');
+ PrintStringInfo(' Checking presence of Equal after the current function...',ReportFileName,'file','y');
+ // #RNU_RES_E
+ [LhsArgNames,LhsArgScope,NLhsArg] = AST_CheckLastFunc(SharedInfo.ASTReader.fidAST,SearchLevel);
+else
+ LhsArgNames = '';
+ LhsArgScope = '';
+ NLhsArg = 0;
+end
+// --- Generate the LhsArg structure. ---
+LhsArg = [];
+for cntarg = 1:NLhsArg
+ LhsArg(cntarg).Name = LhsArgNames(cntarg);
+ LhsArg(cntarg).Scope = LhsArgScope(cntarg);
+end
+
+// #RNU_RES_B
+// -------------------------
+// --- Check on NLhsArg. ---
+// -------------------------
+// #RNU_RES_E
+if (NLhsArg > 0)
+ // #RNU_RES_B
+ PrintStringInfo('...Found Equal.',ReportFileName,'file','y');
+ PrintStringInfo('OutArg Names will be replaced with Lhs Names of the Equal.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ SharedInfo.SkipNextEqual = 1; // 1 = the next equal in the AST will not produce C code.
+ if (NLhsArg ~= NOutArg)
+ error(9999, 'NLhsArg='+string(NLhsArg)+' must be equal to NOutArg='+string(NOutArg)+'.');
+ end
+else
+ // #RNU_RES_B
+ PrintStringInfo('...Equal not found.',ReportFileName,'file','y');
+ // #RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleEOL.sci b/2.3-1/macros/ASTManagement/AST_HandleEOL.sci
new file mode 100644
index 00000000..4b287283
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleEOL.sci
@@ -0,0 +1,65 @@
+function AST_HandleEOL(FileInfo,SharedInfo)
+// function AST_HandleEOL(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// Handles the EOL tag of the AST.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+//#RNU_RES_B
+//NUT: questa parte e' molto interessante perche' ti puo' aiutare per fare confronti
+//NUT: incrociati tra le annotazioni della funzione e gli argomenti in uscita.
+//NUT: in particolare una volta messi nella tabella dei simboli anche gli argomenti
+//NUT: di uscita puoi benissimo verificare che li stai utilizzando bene nel corpo della funzione stessa.
+//#RNU_RES_E
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+SciFileFid = FileInfo.Funct(nxtscifunnumber).SCICopyFileFid;
+IndentLevel = SharedInfo.NIndent;
+
+PrintStepInfo('Handling EOL',ReportFileName,'file');
+sciline = mgetl(SciFileFid,1);
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y','n');
+PrintStringInfo('##################'+'################'+'##################'+'##################'+'##################',ReportFileName,'file','y','n');
+PrintStringInfo('##################'+'################'+'##################'+'##################'+'##################',ReportFileName,'file','y','n');
+//PrintStringInfo('### Scilab code: '+sciline+' ###',ReportFileName,'file','y','n');
+PrintStringInfo('##################'+'################'+'##################'+'##################'+'##################',ReportFileName,'file','y','n');
+PrintStringInfo('##################'+'################'+'##################'+'##################'+'##################',ReportFileName,'file','y','n');
+// #RNU_RES_E
+PrintStringInfo(' ',CPass1FileName,'file','y');
+// RNU BRUNO modeprintstringinfo MUST BE AN EXTERNAL PARAMETER!
+//modeprintstringinfo = 'both';
+if (SharedInfo.CopySciCodeIntoCCode == 1)
+ modeprintstringinfo = 'file';
+else
+ modeprintstringinfo = 'stdout';
+end
+PrintStringInfo(C_IndentBlanks(IndentLevel)+'/*SCI2C: #############'+'############'+'##############'+'###############'+'############',CPass1FileName,modeprintstringinfo,'y','n');
+PrintStringInfo(C_IndentBlanks(IndentLevel)+' SCI2C: '+sciline,CPass1FileName,modeprintstringinfo,'y','n');
+PrintStringInfo(C_IndentBlanks(IndentLevel)+' SCI2C: #############'+'############'+'##############'+'###############'+'############*/',CPass1FileName,modeprintstringinfo,'y','n');
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndFor.sci b/2.3-1/macros/ASTManagement/AST_HandleEndFor.sci
new file mode 100644
index 00000000..dc6c4126
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleEndFor.sci
@@ -0,0 +1,78 @@
+function SharedInfo = AST_HandleEndFor(FileInfo,SharedInfo)
+// function SharedInfo = AST_HandleEndFor(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Handles the EndFor tag of the AST.
+// overloading function for "for" type tlist string function
+// this is a node of the AST
+// fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// for instructions list)
+// txt=['For'
+// ' ForExpression:'
+// ' '+string(F.expression)
+// ' ForStatements:'
+// ' '+objectlist2string(F.statements)
+// 'EndFor']
+//
+// #RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 15-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+CPass1ForProlFileName = FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level);
+CPass1ForEpilFileName = FileInfo.Funct(nxtscifunnumber).CPass1ForEpilFileName(SharedInfo.For.Level);
+
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Handling EndFor***',ReportFileName,'file','y');
+CCall ='';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ----------------------------
+// --- Generate the C code. ---
+// ----------------------------
+// --- Copy Epilogue into C code (Pass1) file. ---
+[CLinesArray,N_Lines] = File2StringArray(CPass1ForEpilFileName);
+CLinesArray = stripblanks(CLinesArray);
+
+for tmpcnt = 1:N_Lines-1
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CLinesArray(tmpcnt),CPass1FileName,'file','y');
+end
+PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent-1)+CLinesArray(N_Lines),CPass1FileName,'file','y');
+
+// --------------------------
+// --- Update SharedInfo. ---
+// --------------------------
+SharedInfo.NIndent = SharedInfo.NIndent - 1;
+
+// -------------------------------
+// --- Delete temporary files. ---
+// -------------------------------
+SCI2Cmdelete(FileInfo.Funct(nxtscifunnumber).CPass1ForEpilFileName(SharedInfo.For.Level));
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci
new file mode 100644
index 00000000..fec79532
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci
@@ -0,0 +1,564 @@
+
+function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType)
+// function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Handles the EndFuncall, EndOperation and EndEqual tags of the AST.
+// ASTFunType can be 'Funcall', 'Operation', 'Equal'
+// Structure of Funcall:
+// overloading function for "funcall" type tlist string function
+// this is a node of the AST
+// fields:
+// rhs : a list
+// name : string, the name of the function
+// lhsnb: number, the number of function lhs
+// txt=['Funcall : '+F.name
+// ' #lhs : '+string(F.lhsnb)
+// ' Rhs : '
+// ' '+objectlist2string(F.rhs)
+// 'EndFuncall'
+// ]
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+Pass1HeaderFileName = FileInfo.Funct(nxtscifunnumber).Pass1HeaderFileName;
+FunInfoDatDir = FileInfo.FunctionList.FunInfoDatDir;
+CGblDeclarFileName = FileInfo.Funct(nxtscifunnumber).CGblDeclarFileName;
+if(SharedInfo.Target == 'AVR')
+ PeripheralInitListFile = FileInfo.PeripheralInitListFile;
+elseif (SharedInfo.Target == 'Arduino')
+ SetupListFile = FileInfo.SetupListFile;
+end
+
+Flag_FunAlreadyCalled = 0;
+// #RNU_RES_B
+PrintStepInfo('Handling Funcall/Operation/Equal',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+// #RNU_RES_E
+//NUT: da sistemare senza le global
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// ---------------------------------------------
+// --- Retrieve FunCall Parameters from AST. ---
+// ---------------------------------------------
+//NUT: verifica se ASTFunType e' veramente importante
+// #RNU_RES_E
+[ASTFunName,InArg,NInArg,OutArg,NOutArg] = AST_GetFuncallPrm(FileInfo,SharedInfo,ASTFunType);
+if (ASTFunType=='Funcall')
+SharedInfo.Function_list(SharedInfo.Function_list_index) = ASTFunName;
+SharedInfo.Function_list_index = SharedInfo.Function_list_index + 1;
+end
+NOutArg_mod = NOutArg
+ if(mtlb_strcmp(part(ASTFunName,1:2),'CV') == %T)
+ SharedInfo.OpenCVUsed = %T;
+ end
+
+ if (ASTFunName == 'OpIns')
+ SharedInfo.SkipNextEqual = 1;
+ SharedInfo.Equal.Nins = SharedInfo.Equal.Nins + 1;
+ //NUT: Force ins to have 0 args. Double check it.
+ NOutArg = 0;
+ // #RNU_RES_B
+ //NUT: io aumenterei qui gli argomenti in ingresso della ins cosi qui vengono fatte tutte le modifiche del
+ //NUT: caso e la C_FunCall non se ne deve preoccupare, vedi se lo stesso vale per le altre funzioni
+ //NUT: speciali presenti nell C_FunCall.
+
+ // 1 more input argument containing the values to be inserted in the matrix.
+ // #RNU_RES_E
+ NInArg = NInArg + 1;
+ InArg(NInArg).Name = SharedInfo.Equal.InArg(SharedInfo.Equal.Nins).Name;
+ InArg(NInArg).Scope = SharedInfo.Equal.InArg(SharedInfo.Equal.Nins).Scope;
+ elseif (ASTFunName == 'global')
+ SharedInfo.SkipNextEqual = 1;
+ SharedInfo.SkipNextFun = 1;
+ if (NInArg ~= 1)
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Multiple declaration of global variables is not allowed.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: See example below:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: global var1 var2; //NOT ALLOWED',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: global var1; //ALLOWED',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: global var2; //ALLOWED',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Multiple declaration of global variables is not allowed.');
+ end
+ if (NOutArg ~= 1)
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Unexpected number of output arguments for global function.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Please report this error to: http://forge.scilab.org/index.php/p/scilab2c/issues/',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Unexpected number of output arguments for global function.');
+ end
+ end
+
+ // #RNU_RES_B
+ // --------------------------------------
+ // --- Read the function annotations. ---
+ // --------------------------------------
+ // #RNU_RES_E
+
+ if (ASTFunName == 'OpEqual')
+ FunTypeAnnot = '';
+ FunSizeAnnot = '';
+ else
+ [FunTypeAnnot,FunSizeAnnot,NOutArg_mod] = FA_GetFunAnn(NInArg,NOutArg,ASTFunName,FileInfo,SharedInfo);
+ end
+
+ // #RNU_RES_B
+ // -------------------------------------------------------------------------------------------
+ // --- Search for Equal Lhs and precision specifier to be applied to the current function. ---
+ // -------------------------------------------------------------------------------------------
+ // #RNU_RES_E
+ [LhsArg,NLhsArg,FunPrecSpecifier,SharedInfo] = AST_GetPrecAndLhsArg(OutArg,NOutArg,ASTFunName,FunTypeAnnot,FunSizeAnnot,ASTFunType,FileInfo,SharedInfo);
+ //NUT: questa funzione contiene troppi parametri e mi sembra disordinata.
+
+ // #RNU_RES_B
+ // --------------------------------
+ // --- Input Arguments Section. ---
+ // --------------------------------
+ // --- Get Input Arguments info from their numerical value or from the symbol table. ---
+ // #RNU_RES_E
+ if (ASTFunName == 'global')
+ [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension,TBScope] = ...
+ ST_GetSymbolInfo(InArg(1).Name,FileInfo,SharedInfo);
+ if (TBFlagfound == 1)
+ InArg(1).Type = TBType;
+ InArg(1).Size = TBSize;
+ InArg(1).Value = TBValue;
+ InArg(1).FindLike = TBFindLike;
+ InArg(1).Dimension = TBDimension;
+ InArg(1).Scope = TBScope;
+ IndentLevelGlobal = 0; //NUT: forced always to 1
+ FlagExt = 1;
+ C_GenDeclarations(InArg(1),CGblDeclarFileName,IndentLevelGlobal,ReportFileName,FlagExt,SharedInfo.ResizeApproach);
+ else
+ // #RNU_RES_B
+ // That means it is the first time we encounter
+ // this global variable and in C this means that
+ // we don't have to do nothing.
+ // #RNU_RES_E
+ // SharedInfo.SkipNextFun = SharedInfo.SkipNextFun + 1;
+ SharedInfo.SkipNextFun = 1;
+
+ InArg(1).Type = 'GBLToBeDefined';
+ InArg(1).Size(1) = 'GBLToBeDefined';
+ InArg(1).Size(2) = 'GBLToBeDefined';
+ InArg(1).Value = %nan;
+ InArg(1).FindLike = %nan;
+ InArg(1).Dimension = %nan;
+ InArg(1).Scope = 'Global';
+
+ // #RNU_RES_B
+ PrintStringInfo('***Putting global variable in the symbol table***',ReportFileName,'file','y');
+ PrintStringInfo(' Symbol ""'+InArg(1).Name+'""',ReportFileName,'file','y');
+
+ PrintStringInfo(' Type: '+InArg(1).Type,ReportFileName,'file','y');
+ PrintStringInfo(' Size(1): '+string(InArg(1).Size(1)),ReportFileName,'file','y');
+ PrintStringInfo(' Size(2): '+string(InArg(1).Size(2)),ReportFileName,'file','y');
+ PrintStringInfo(' Value: '+string(InArg(1).Value),ReportFileName,'file','y');
+ PrintStringInfo(' FindLike: '+string(InArg(1).FindLike),ReportFileName,'file','y');
+ PrintStringInfo(' Dimension: '+string(InArg(1).Dimension),ReportFileName,'file','y');
+ PrintStringInfo(' Scope: '+string(InArg(1).Scope),ReportFileName,'file','y');
+ PrintStringInfo(' ',ReportFileName,'file','y');
+ // #RNU_RES_E
+
+ ST_Set(InArg(1).Name,...
+ InArg(1).Type,...
+ InArg(1).Size,...
+ InArg(1).Value,...
+ InArg(1).FindLike,...
+ InArg(1).Dimension,...
+ FileInfo.GlobalVarFileName);
+ end
+ else
+ if(ASTFunName == 'ode')
+ //Differnt handling of ode function is required as one of its input
+ // is a name of a function
+ if NInArg == 4
+ ODEFunName = InArg(4).Name;
+ //To differentiate functions containing differential equations,
+ //'odefn' is added at the beginning of the function name.
+ InArg(4).Name = 'odefn'+ InArg(4).Name
+ SharedInfo.Includelist($+1) = InArg(4).Name;
+ //Add ode function in list. this will be used to add corresponding
+ //header file in main function.
+ elseif NInArg == 5
+ ODEFunName = InArg(5).Name;
+ InArg(5).Name = 'odefn'+ InArg(5).Name
+ SharedInfo.Includelist($+1) = InArg(5).Name;
+ elseif NInArg == 6
+ ODEFunName = InArg(6).Name;
+ InArg(6).Name = 'odefn'+ InArg(6).Name
+ SharedInfo.Includelist($+1) = InArg(6).Name;
+ end
+
+
+ elseif(ASTFunName == 'RPI_ThreadCreate')
+ PI_thread_FunName = InArg(1).Name;
+ InArg(1).Name = 'PI_thread_'+PI_thread_FunName;
+ SharedInfo.Includelist($+1) = InArg(1).Name;
+ elseif(ASTFunName == 'RPI_PinISR')
+ PI_ISR_FunName = InArg(3).Name;
+ InArg(3).Name = 'ISR_'+PI_ISR_FunName;
+ SharedInfo.Includelist($+1) = InArg(3).Name;
+ end
+ [InArg,SharedInfo] = ST_GetInArgInfo(InArg,NInArg,FileInfo,SharedInfo,ASTFunName);
+
+ end
+
+ // #RNU_RES_B
+ // -------------------------------------------------------------------
+ // --- Change info of Input Argument according to resize approach. ---
+ // -------------------------------------------------------------------
+ //RNU toglimi nella versione da dare ad hartes.
+ //RNU per ora gestisco solo la resize all con tutte realloc.
+ //RNU global variables are still coded with fixed size.
+ // #RNU_RES_E
+ if (SharedInfo.ResizeApproach=='REALLOC_ALL_RESIZE_ALL')
+ for cntin = 1:NInArg
+ if ((InArg(cntin).Dimension > 0))
+ // if ((InArg(cntin).Dimension > 0) & (InArg(cntin).Scope ~= 'Global'))
+ InArg(cntin).Size(1) = '__'+InArg(cntin).Name+'Size[0]';
+ InArg(cntin).Size(2) = '__'+InArg(cntin).Name+'Size[1]';s
+ end
+ //#RNUREM_MERNU vedi se la seguente fa casino l'ho aggiunta in modo che agia=ones(1,3) sia generata come realloc ma non ho verificato.
+ tmpscope = InArg(cntin).Scope;
+ lengthNumber = length('Number_');
+ if (part(tmpscope,1:lengthNumber) == 'Number_')
+ //#RNUREM_ME RNU il problema e' che ones(3,1) allora l'output e' 3,1 e come faccio a trasformare 3 e 1 in simboli in modo tale che realloco anziche' allocare
+ InArg(cntin).Value = %nan; //RNU non va bene dove per esempio hai problemi di 1:3:4 se al posto dei numeri metti nan ti impalli
+ //#RNUREM_ME Credo che dove c'e' uan allocazione secca ones(3,1) non vada lasciata cosi' ma tutto vada ricondotto a realloc
+ //#RNUREM_ME quindi devo vedere nella dichiarazione delle variabili come forzare la dichiarazione dei null pointer.
+ //#RNUREM_ME successivamente devo vedere come fare a riscrivere la size dell'output.
+ else
+ end
+ end
+ end
+
+ // #RNU_RES_B
+ // ---------------------------------
+ // --- Output Arguments Section. ---
+ // ---------------------------------
+ // --- Update Out arg structure with info stored in the function annotations. ---
+ // #RNU_RES_E
+ if (ASTFunName == 'OpEqual')
+ for cntin = 1:NInArg
+ OutArg(cntin).Type = InArg(cntin).Type;
+ OutArg(cntin).Size = InArg(cntin).Size;
+ OutArg(cntin).Dimension = InArg(cntin).Dimension;
+ OutArg(cntin).Value = InArg(cntin).Value;
+ OutArg(cntin).FindLike = InArg(cntin).FindLike;
+ //NUT: forse qui occorre aggiungere lo scope che dovrebbe essere local or global.
+ //NUT: per ora lo scope viene settato da AST_ParseEqualStruct
+ end
+ elseif ((ASTFunName == 'OpMinus') & (NInArg == 1) & (InArg(1).Dimension == 0)&(InArg(1).Scope == 'Number'))
+ // #RNU_RES_B
+ // --- Manage OpMinus when applied to scalars. ---
+ // -1 is not translated as tmp = OpMinus(1), but
+ // it is considered as a single entity "-1"
+ // #RNU_RES_E
+ SharedInfo.SkipNextFun = 1; //RN: SISTEMAMI
+ OutArg(1).Type = InArg(1).Type;
+ OutArg(1).Size = InArg(1).Size;
+ OutArg(1).Dimension = InArg(1).Dimension;
+ OutArg(1).Value = -InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+ OutArg(1).Scope = 'Number_'+InArg(1).Type;
+ elseif ((ASTFunName == 'float') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ // #RNU_RES_B
+ // --- Manage OpMinus when applied to scalars. ---
+ // -1 is not translated as tmp = OpMinus(1), but
+ // it is considered as a single entity "-1"
+ // #RNU_RES_E
+ SharedInfo.SkipNextFun = 1; //RN: SISTEMAMI
+ OutArg(1).Type = InArg(1).Type;
+ OutArg(1).Size = InArg(1).Size;
+ OutArg(1).Dimension = InArg(1).Dimension;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+ OutArg(1).Scope = 'Number_s';
+ elseif ((ASTFunName == 'double') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ // #RNU_RES_B
+ // --- Manage OpMinus when applied to scalars. ---
+ // -1 is not translated as tmp = OpMinus(1), but
+ // it is considered as a single entity "-1"
+ // #RNU_RES_E
+ SharedInfo.SkipNextFun = 1;
+ //RN: SISTEMAMI
+ SharedInfo.SkipNextFun = 1; //RN: SISTEMAMI
+ OutArg(1).Type = InArg(1).Type;
+ OutArg(1).Size = InArg(1).Size;
+ OutArg(1).Dimension = InArg(1).Dimension;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+ OutArg(1).Scope = 'Number_d';
+ else
+ OutArg = FA_GetOutArgInfo(InArg,NInArg,OutArg,NOutArg,SharedInfo,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,ReportFileName,ASTFunName);
+ end
+
+ // #RNU_RES_B
+ // --- Generate the names for the output arguments. ---
+ // Update of OutArg.Name and OutArg.Scope fields.
+ // #RNU_RES_E
+ if ((ASTFunName == 'OpMinus') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Name = string(OutArg(1).Value);
+ elseif ((ASTFunName == 'float') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Name = string(OutArg(1).Value);
+ elseif ((ASTFunName == 'double') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Name = string(OutArg(1).Value);
+ else
+ [OutArg,SharedInfo] = GenOutArgNames(ASTFunName,InArg,NInArg,OutArg,NOutArg,LhsArg,NLhsArg,FileInfo,SharedInfo);
+ end
+
+ if ((ASTFunName == 'uint8') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Value = InArg(1).Value;
+ SharedInfo.SkipNextFun = 1;
+ elseif ((ASTFunName == 'int8') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Value = InArg(1).Value;
+ SharedInfo.SkipNextFun = 1;
+ elseif ((ASTFunName == 'uint16') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Value = InArg(1).Value;
+ SharedInfo.SkipNextFun = 1;
+ elseif ((ASTFunName == 'int16') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ OutArg(1).Value = InArg(1).Value;
+ SharedInfo.SkipNextFun = 1;
+ end
+
+ // #RNU_RES_B
+ // --- Push in the AST stack the Output arguments. ---
+ // #RNU_RES_E
+ if (ASTFunName == 'OpEqual')
+ // Do nothing
+ else
+ for counteroutargs = 1:NOutArg
+ tmppushstack = OutArg(counteroutargs).Scope+': '+OutArg(counteroutargs).Name;
+ // #RNU_RES_B
+ PrintStringInfo(' Pushing in the AST stack: ""'+tmppushstack+'"".',ReportFileName,'file','y');
+ // #RNU_RES_E
+ AST_PushASTStack(tmppushstack);
+ end
+ end
+
+
+ // #RNU_RES_B
+ //NUT: verificare se si puo' accorpare qualcosa qui sotto
+ //RN: non capisco come mai analizzo lo scope dopo che faccio il push nello stack dove lo utilizzo!!!
+ // --- Scope analysis of the output arguments. ---
+ // #RNU_RES_E
+ if (ASTFunName == 'OpMinus' & NInArg == 1 & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ // Scope already set above.
+ elseif (ASTFunName == 'float' & NInArg == 1 & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ // Scope already set above.
+ elseif (ASTFunName == 'double' & NInArg == 1 & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ // Scope already set above.
+ else
+ OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo);
+ end
+
+ //#RNUREM_ME --- Check if the current function is handling for counter variables. ---
+ [OutArg,SharedInfo] = ST_InsForCntVars(InArg,NInArg,OutArg,NOutArg,ASTFunName,FileInfo,SharedInfo);
+
+ //#RNUREM_ME --- Store the while condition variable (if any). ---
+ SharedInfo = GetWhileCondVariable(OutArg,NOutArg,ASTFunName,FileInfo,SharedInfo);
+
+
+ //#RNUREM_ME --- Update Symbol Table with output arguments. ---
+ if ((ASTFunName == 'OpMinus') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ //#RNUREM_ME A number is not inserted in the symbol table.
+ elseif ((ASTFunName == 'float') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ //#RNUREM_ME A number is not inserted in the symbol table.
+ elseif ((ASTFunName == 'double') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
+ //#RNUREM_ME A number is not inserted in the symbol table.
+ else
+ ST_InsOutArg(OutArg,NOutArg,FileInfo,SharedInfo,'all');
+ end
+ if ASTFunName == 'ode' then
+ if ((NInArg == 4) | (NInArg == 6))
+ ODE_InArg(1) = InArg(3)
+ ODE_InArg(2) = InArg(1)
+ ODE_OutArg(1) = OutArg(1)
+ elseif NInArg == 5 then
+ ODE_InArg(1) = InArg(4)
+ ODE_InArg(2) = InArg(2)
+ ODE_OutArg(1) = OutArg(1)
+ end
+ ODE_CFunName = C_GenerateFunName('odefn'+ODEFunName,ODE_InArg,2,ODE_OutArg,1);
+ //Functions containing differential equations that are used with 'ode'
+ //function need to be handled differently.
+
+ [FunFound, FunType, FunSize, FunValue, FunFindLike, FunDimension] = ...
+ ST_Get(InArg(4).Name,FileInfo.GlobalVarFileName);
+ //ST_Del(InArg(4).Name,FileInfo.GlobalVarFileName);
+ //ST_Set(ODE_CFunName, FunType, FunSize, FunValue, FunFindLike, FunDimension);
+ end
+
+ //#RNUREM_ME NUT: per risparmiare tempo di esecuzione puoi mettere delle if sulle funzioni che devono
+ //#RNUREM_ME NUT: essere skippate.
+
+ //#RNU_RES_B
+ // --------------------------------------------
+ // --- Generate the C name of the function. ---
+ // --------------------------------------------
+ //#RNU_RES_E
+ //disp(OutArg,InArg,ASTFunName)
+ CFunName = C_GenerateFunName(ASTFunName,InArg,NInArg,OutArg,NOutArg_mod);
+
+ //#RNU_RES_B
+ PrintStringInfo(' C Function Name: '+CFunName,ReportFileName,'file','y');
+ if(IsArduinoFunction(ASTFunName))
+ //disp(ASTFunName)
+ if(IsArduinoSetupFunction(ASTFunName))
+ //If current function is an arduino setup function (like 'dc_motor_setup'), it
+ //should not be converted and inserted here. It is inserted in a list now and
+ //added to 'setup_arduino.c' later
+ InsertSetupInList(CFunName,InArg,NInArg,SetupListFile,'Setup');
+ SharedInfo.SkipNextFun = SharedInfo.SkipNextFun + 1;
+ else //Currnet arduino function is not a setup function, so init function must be added
+ InsertSetupInList(ASTFunName,InArg,NInArg,SetupListFile,'Init');
+ end
+ end
+
+ // -------------------------------------------------------------------------
+ // --- Determine which library the function belongs to: USER2C or SCI2C. ---
+ // -------------------------------------------------------------------------
+ //#RNU_RES_E
+ if SCI2Cfileexist(FileInfo.SCI2CLibCAnnFun,ASTFunName+'.ann')
+ LibTypeInfo = 'SCI2C';
+ else
+ LibTypeInfo = 'USER2C';
+ end
+
+ //#RNU_RES_B
+ // ------------------------------------------------------------------------------------
+ // --- Check whether the function has been already called in the current .sci file. ---
+ // ------------------------------------------------------------------------------------
+ //#RNU_RES_E
+ if (sum(SharedInfo.CFunctsAlreadyCalled == CFunName) == 1)
+ Flag_FunAlreadyCalled = 1;
+ else
+
+ //#RNUREM_ME Add the C function name to the list of C functions called in the current .sci file.
+ SharedInfo.CFunctsAlreadyCalled(size(SharedInfo.CFunctsAlreadyCalled,1)+1) = CFunName;
+ end
+
+ //#RNU_RES_B
+ // ----------------------------------
+ // --- Generate FunInfo dat file. ---
+ // ----------------------------------
+ //NUT: questo .dat deve essere generato sempre perche' cambiano i nomi degli argomenti mentre il resto dovrebbe
+ //NUT: essere tutto uguale
+ //NUT: magari posso fare una funzione che inserisce solo i campi diversi e fa un check su quelli che
+ //NUT: dovrebbero essere identici.
+ //#RNU_RES_E
+ GenCFunDatFiles(ASTFunName,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,InArg,NInArg,OutArg,NOutArg_mod,CFunName,LibTypeInfo,FunInfoDatDir);
+
+ //#RNU_RES_B
+ // -----------------------------------
+ // --- Update SCI2C Function List. ---
+ // -----------------------------------
+ // Functions that are not already available in C are stored
+ // in the SCI2C Function List and converted in C at the end of
+ // the translation of the current .sci file.
+ //NUT: il problema della d0d0OpEqual dovrebbe essere legato al fatto che cerco di fare la opequal legata alla ins...
+ //NUT: devo evitare di scriveral dentro la lsista delle funzioni da tradurre.
+ //#RNU_RES_E
+
+ SharedInfo = FL_UpdateToBeConv(ASTFunName,CFunName,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,InArg,NInArg,OutArg,NOutArg,FileInfo,SharedInfo);
+
+ //#RNU_RES_B
+ // -----------------------------------------------
+ // --- Check on common input/output arguments. ---
+ // -----------------------------------------------
+ //#RNU_RES_E
+ if (((ASTFunName=='OpEqual') & (SharedInfo.SkipNextEqual == 1)) | ...
+ SharedInfo.SkipNextFun > 0 | ...
+ ((sum(mtlb_strcmp(ASTFunName,SharedInfo.Annotations.DataPrec)) > 0) & (SharedInfo.SkipNextPrec == 1)))
+ // Do nothing
+ else
+ AST_CheckCommonInOutArgs(InArg,NInArg,OutArg,NOutArg,ReportFileName);
+ end
+
+ //#RNU_RES_B
+ // -----------------------------
+ // --- C Generation Section. ---
+ // -----------------------------
+ // --- Load FunInfo structure. ---
+ //#RNU_RES_E
+ FunInfoDatFileName = fullfile(FunInfoDatDir,CFunName+'.dat');
+ load(FunInfoDatFileName,'FunInfo');
+
+ //#RNU_RES_B
+ // --- Generate include. ---
+ //#RNU_RES_E
+ if ((Flag_FunAlreadyCalled == 0) & (FunInfo.LibTypeInfo == 'USER2C') & (SharedInfo.NextCFunName ~= CFunName))
+ // (SharedInfo.NextCFunName ~= CFunName) I don't want an include in the same file. Ex. in main.h I don't want include "main.h"
+ // #RNU_RES_B
+ PrintStringInfo('Adding include',ReportFileName,'file','y');
+ PrintStringInfo('#include ""'+CFunName+'.h""',...
+ ReportFileName,'file','y');
+ // #RNU_RES_E
+ PrintStringInfo('#include ""'+CFunName+'.h""',...
+ Pass1HeaderFileName,'file','y');
+ end
+
+ //#RNU_RES_B
+ // --- Generate the C code for the current function. ---
+ //#RNU_RES_E
+ FlagCall = 1;
+ SharedInfo = C_Funcall(FunInfo,FileInfo,SharedInfo,FlagCall);
+ //#RNU_RES_B
+ //NUT: anziche farla fare alla cfuncall l'aggiornamento delle skip metti qui una funzione dedicata a cio'
+ //NUT: e' piu' ordinato.
+ //#RNU_RES_E
+
+ //If current function being converted is 'ode', insert function containing
+ //in list of functions to be converted
+ if ASTFunName == 'ode' then
+ //ODE_InArg(1) = InArg(3)
+ //ODE_InArg(2) = InArg(1)
+ //ODE_OutArg(1) = OutArg(1)
+ //ODE_CFunName = C_GenerateFunName(ODEFunName,ODE_InArg,2,ODE_OutArg,1);
+ GenCFunDatFiles(ODEFunName,%t,FunTypeAnnot,['IN(2).SZ(1)' 'IN(2).SZ(2)'],ODE_InArg,2,ODE_OutArg,1,ODE_CFunName,LibTypeInfo,FunInfoDatDir);
+ SharedInfo = FL_UpdateToBeConv(ODEFunName,ODE_CFunName,%t,FunTypeAnnot,FunSizeAnnot,ODE_InArg,2,ODE_OutArg,1,FileInfo,SharedInfo);
+ elseif ASTFunName == 'RPI_ThreadCreate' then
+ temp_InArg = InArg;
+ temp_InArg(1).Name = ""
+ PI_thread_CFunName = C_GenerateFunName(InArg(1).Name,temp_InArg,0,%t,0);
+ GenCFunDatFiles(PI_thread_FunName,%t,[],%t,temp_InArg,0,%t,0,PI_thread_CFunName,LibTypeInfo,FunInfoDatDir);
+ SharedInfo = FL_UpdateToBeConv(PI_thread_FunName,PI_thread_CFunName,%t,FunTypeAnnot,[],%t,0,%t,0,FileInfo,SharedInfo);
+ elseif ASTFunName == 'RPI_PinISR' then
+ temp_InArg = InArg;
+ temp_InArg(1).Name = ""
+ PI_ISR_CFunName = C_GenerateFunName(InArg(3).Name,temp_InArg,0,%t,0);
+ GenCFunDatFiles(PI_ISR_FunName,%t,[],%t,temp_InArg,0,%t,0,PI_ISR_CFunName,LibTypeInfo,FunInfoDatDir);
+ SharedInfo = FL_UpdateToBeConv(PI_ISR_FunName,PI_ISR_CFunName,%t,FunTypeAnnot,[],%t,0,%t,0,FileInfo,SharedInfo);
+ end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndProgram.sci b/2.3-1/macros/ASTManagement/AST_HandleEndProgram.sci
new file mode 100644
index 00000000..2d6d77a9
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleEndProgram.sci
@@ -0,0 +1,62 @@
+function SharedInfo = AST_HandleEndProgram(FileInfo,SharedInfo)
+// function SharedInfo = AST_HandleEndProgram(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// Handles the EndProgram tag of the AST.
+//
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 12-Jun-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName
+
+IndentLevel = SharedInfo.NIndent;
+CCall = '';
+PrintStepInfo('Handling EndProgram',ReportFileName,'file');
+tmpposfirstscalar = SharedInfo.CurrentFunInfo.PosFirstOutScalar;
+
+if (1==2)
+ //NUT: disabled because at the moment I am able to decode the return instruction.
+ if (SharedInfo.CurrentFunInfo.CFunctionName == SharedInfo.CMainFunName)
+ CCall = CCall+'return(0);';
+ else
+ if (SharedInfo.CurrentFunInfo.PosFirstOutScalar > 0)
+ CCall = CCall+'return('+SharedInfo.CurrentFunInfo.OutArg(tmpposfirstscalar).Name+');'
+ end
+ end
+
+ PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+end
+
+
+SharedInfo.NIndent = SharedInfo.NIndent - 1;
+IndentLevel = SharedInfo.NIndent;
+PrintStringInfo(' }',ReportFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(IndentLevel)+'}',CPass1FileName,'file','y');
+
+// --- Close the copy of the scilab file. ---
+PrintStringInfo(' Closing: '+FileInfo.Funct(nxtscifunnumber).SCICopyFileName,ReportFileName,'file','y');
+mclose(FileInfo.Funct(nxtscifunnumber).SCICopyFileFid);
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndWhile.sci b/2.3-1/macros/ASTManagement/AST_HandleEndWhile.sci
new file mode 100644
index 00000000..94649b10
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleEndWhile.sci
@@ -0,0 +1,76 @@
+function SharedInfo = AST_HandleEndWhile(FileInfo,SharedInfo)
+// function SharedInfo = AST_HandleEndWhile(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Handles the EndWhile tag of the AST.
+//
+// txt=['While'
+// ' WhileExpression:'
+// ' '+string(W.expression)
+// ' WhileStatements:'
+// ' '+objectlist2string(W.statements)
+// 'EndWhile']
+//#RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 15-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+CPass1WhileEpilFileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileEpilFileName(SharedInfo.While.Level);
+
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Handling EndWhile***',ReportFileName,'file','y');
+CCall ='';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//#RNU_RES_B
+// ----------------------------
+// --- Generate the C code. ---
+// ----------------------------
+// --- Copy Epilogue into C code (Pass1) file. ---
+//#RNU_RES_E
+[CLinesArray,N_Lines] = File2StringArray(CPass1WhileEpilFileName);
+CLinesArray = stripblanks(CLinesArray);
+
+for tmpcnt = 1:N_Lines-1
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CLinesArray(tmpcnt),CPass1FileName,'file','y');
+end
+PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent-1)+CLinesArray(N_Lines),CPass1FileName,'file','y');
+
+//#RNU_RES_B
+// --------------------------
+// --- Update SharedInfo. ---
+// --------------------------
+//#RNU_RES_E
+SharedInfo.NIndent = SharedInfo.NIndent - 1;
+
+// -------------------------------
+// --- Delete temporary files. ---
+// -------------------------------
+SCI2Cmdelete(CPass1WhileEpilFileName);
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleFor.sci b/2.3-1/macros/ASTManagement/AST_HandleFor.sci
new file mode 100644
index 00000000..e96edd4c
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleFor.sci
@@ -0,0 +1,84 @@
+function FileInfo = AST_HandleFor(FileInfo,SharedInfo)
+// function FileInfo = AST_HandleFor(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Handles the For tag of the AST.
+//
+// overloading function for "for" type tlist string function
+// this is a node of the AST
+// fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// for instructions list)
+// txt=['For'
+// ' Expression:'
+// ' '+string(F.expression)
+// ' Statements:'
+// ' '+objectlist2string(F.statements)
+// 'EndFor']
+//
+//#RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 10-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+PfxP1ForProlFileName = FileInfo.Funct(nxtscifunnumber).PfxP1ForProlFileName;
+PfxP1ForEpilFileName = FileInfo.Funct(nxtscifunnumber).PfxP1ForEpilFileName;
+PrintStepInfo('Handling For',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//#RNU_RES_B
+// --- Signal the entrance in a for expression. ---
+//#RNU_RES_E
+SharedInfo.ForExpr.OnExec = SharedInfo.ForExpr.OnExec + 1;
+
+//#RNU_RES_B
+// --- Generate the file names for the prologue and epilogue files. ---
+//#RNU_RES_E
+FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level) = ...
+ PfxP1ForProlFileName+string(SharedInfo.For.Level)+'.c';
+FileInfo.Funct(nxtscifunnumber).CPass1ForEpilFileName(SharedInfo.For.Level) = ...
+ PfxP1ForEpilFileName+string(SharedInfo.For.Level)+'.c';
+
+//#RNU_RES_B
+// ---------------------------------------------------------
+// --- Create a copy of the For Prologue/Epilogue Files. ---
+// ---------------------------------------------------------
+//#RNU_RES_E
+PrintStringInfo(' ',FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level),'file');
+PrintStringInfo(' ',FileInfo.Funct(nxtscifunnumber).CPass1ForEpilFileName(SharedInfo.For.Level),'file');
+
+//#RNU_RES_B
+// ------------------------------------------------------
+// --- Replace the CPass1V1 file with a temp ForFile. ---
+// ------------------------------------------------------
+// From now up to Expression: all the C code will be written in a for temporary file.
+//#RNU_RES_E
+tmpfilename = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+FileInfo.Funct(nxtscifunnumber).CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level);
+FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level) = tmpfilename;
+PrintStringInfo('Redirecting C code to: '+FileInfo.Funct(nxtscifunnumber).CPass1FileName,FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleForStatem.sci b/2.3-1/macros/ASTManagement/AST_HandleForStatem.sci
new file mode 100644
index 00000000..f47538a6
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleForStatem.sci
@@ -0,0 +1,87 @@
+function [FileInfo,SharedInfo] = AST_HandleForStatem(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Handles the ForStatements tag of the AST.
+// overloading function for "for" type tlist string function
+// this is a node of the AST
+// fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// for instructions list)
+// txt=['For'
+// ' ForExpression:'
+// ' '+string(F.expression)
+// ' ForStatements:'
+// ' '+objectlist2string(F.statements)
+// 'EndFor']
+//
+//#RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 15-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(2,2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+PrintStepInfo('Handling ForStatements',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//#RNU_RES_B
+// ---------------------------------------------
+// --- Resume the correct name for CPass1V1. ---
+// ---------------------------------------------
+//#RNU_RES_E
+tmpfilename = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+FileInfo.Funct(nxtscifunnumber).CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level);
+FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level) = tmpfilename;
+PrintStringInfo(' Redirecting C code to: '+FileInfo.Funct(nxtscifunnumber).CPass1FileName,FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+
+//#RNU_RES_B
+// ------------------------
+// --- Generate C code. ---
+// ------------------------
+//#RNU_RES_E
+SharedInfo = C_ForExpression(FileInfo,SharedInfo);
+
+//#RNU_RES_B
+// --------------------------
+// --- Update SharedInfo. ---
+// --------------------------
+// Signal the exit from a for expression.
+//#RNU_RES_E
+SharedInfo.ForExpr.OnExec = SharedInfo.ForExpr.OnExec - 1;
+SharedInfo.ForExpr.IntCntArg = [];
+SharedInfo.ForExpr.MtxValCntArg = [];
+SharedInfo.ForExpr.SclValCntArg = [];
+SharedInfo.ForExpr.OpColonInfoIn1 = '';
+SharedInfo.ForExpr.OpColonInfoIn2 = '';
+SharedInfo.ForExpr.OpColonInfoIn3 = '';
+
+
+SharedInfo.ForExpr.AssignmentFun = 0;
+
+// -------------------------------
+// --- Delete temporary files. ---
+// -------------------------------
+SCI2Cmdelete(FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level));
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleHeader.sci b/2.3-1/macros/ASTManagement/AST_HandleHeader.sci
new file mode 100644
index 00000000..0237bd5f
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleHeader.sci
@@ -0,0 +1,249 @@
+function SharedInfo = AST_HandleHeader(ASTHeader,FileInfo,SharedInfo)
+// function SharedInfo = AST_HandleHeader(ASTHeader,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// Handles the Header of the AST.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+FunctionName = ASTHeader.Name;
+if (mtlb_strcmp(ASTHeader.Name,SharedInfo.NextSCIFunName) == %F)
+ error(9999, 'Very strange! AST Name field ""'+ASTHeader.Name+...
+ '""is different from function name ""'+SharedInfo.NextSCIFunName+'"".');
+end
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// -------------------------------------
+// --- Extract info from AST header. ---
+// -------------------------------------
+TmpInNames = tokens(ASTHeader.Inputs,' ');
+TmpOutNames = tokens(ASTHeader.Outputs,' ');
+
+//#RNU_RES_B
+// Remove Variable: Number: or String: specifier.
+//#RNU_RES_E
+NInArg = 0;
+for tmpcnt = 1:size(TmpInNames,1)
+ TmpSingleName = TmpInNames(tmpcnt);
+ if ((TmpSingleName == 'Variable:') | ...
+ (TmpSingleName == 'String:') | ...
+ (TmpSingleName == 'Number:'))
+ // Skip the specifier.
+ else
+ NInArg = NInArg + 1;
+ InNames(NInArg) = TmpSingleName;
+ end
+end
+
+//#RNU_RES_B
+// Remove Variable: Number: or String: specifier.
+//#RNU_RES_E
+NOutArg = 0;
+for tmpcnt = 1:size(TmpOutNames,1)
+ TmpSingleName = TmpOutNames(tmpcnt);
+ if ((TmpSingleName == 'Variable:') | ...
+ (TmpSingleName == 'String:') | ...
+ (TmpSingleName == 'Number_x:') | ...
+ (TmpSingleName == 'Number_s:') | ...
+ (TmpSingleName == 'Number_d:') | ...
+ (TmpSingleName == 'Number_c:') | ...
+ (TmpSingleName == 'Number_z:'))
+ // Skip the specifier.
+ else
+ NOutArg = NOutArg + 1;
+ OutNames(NOutArg) = TmpSingleName;
+ end
+end
+
+if (mtlb_strcmp(InNames(1),'<empty>'))
+ NInArg = 0;
+else
+ NInArg = size(InNames,1);
+end
+
+if ((OutNames(1)=='<empty>') | (FunctionName == 'ins'))
+ //#RNU_RES_B
+ //NUT: Force ins to have 0 args. Double check it.
+ //#RNU_RES_E
+
+ NOutArg = 0;
+else
+ NOutArg = size(OutNames,1);
+end
+
+//#RNU_RES_B
+// -------------------------------------
+// --- Load the C function dat file. ---
+// -------------------------------------
+//NUT: This load is useful expecially for the second approach. In this case we are not using
+//NUT: the size info.
+//#RNU_RES_E
+load(fullfile(FileInfo.FunctionList.FunInfoDatDir,SharedInfo.NextCFunName+'.dat'),'FunInfo');
+
+SharedInfo.CurrentFunInfo = FunInfo;
+clear FunInfo
+
+//#RNU_RES_B
+// -----------------------------------------------------------------------------
+// --- Check coherence between In/Out names and In/Out Arg structure loaded. ---
+// -----------------------------------------------------------------------------
+//#RNU_RES_E
+if (~isempty(SharedInfo.CurrentFunInfo.InArg))
+
+ if (length(SharedInfo.CurrentFunInfo.InArg(1).Name) > 0)
+ NInArgDat = size(SharedInfo.CurrentFunInfo.InArg,1);
+ else
+ NInArgDat = 0;
+ end
+else
+ NInArgDat = 0;
+end
+
+
+if ((NInArgDat == NInArg)|(nxtscifunname == SharedInfo.SCIMainFunName))
+ for tmpcnt = 1:NInArg
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Name = InNames(tmpcnt);
+ if (SharedInfo.CurrentFunInfo.InArg(tmpcnt).Dimension == 0)
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size(1) = '1';
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size(2) = '1';
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Value = %nan;
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).FindLike = 0;
+ else
+ //#RNU_RES_B
+ //NUT: using approach 1: Setting for input and output arguments symbolic sizes.
+ //#RNU_RES_E
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size(1) = '__'+SharedInfo.CurrentFunInfo.InArg(tmpcnt).Name+'Size[0]';
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size(2) = '__'+SharedInfo.CurrentFunInfo.InArg(tmpcnt).Name+'Size[1]';
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Value = %nan;
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).FindLike = 0;
+ end
+ end
+else
+ error(9999, 'Number of input arguments specified in AST is different from the number specified in .dat file.');
+end
+
+if ((SharedInfo.CurrentFunInfo.NOutArg == NOutArg)|(nxtscifunname == SharedInfo.SCIMainFunName))
+ for tmpcnt = 1:NOutArg
+ SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Name = OutNames(tmpcnt);
+ end
+else
+ //#RNU_RES_B
+ PrintStringInfo('N. of output arguments found in the AST: '+string(NOutArg),ReportFileName,'both','y');
+ PrintStringInfo('N. of output arguments found in the call (FunInfo structure): '+string(SharedInfo.CurrentFunInfo.NOutArg),ReportFileName,'both','y');
+ //#RNU_RES_E
+ error(9999, 'Number of output arguments specified in AST is different from the number specified in .dat file.');
+end
+//#RNU_RES_B
+//NUT: using approach 1: Setting for input and output arguments symbolic sizes.
+//#RNU_RES_E
+SharedInfo.CurrentFunInfo.OutArg = ...
+ FA_GetOutArgInfo(SharedInfo.CurrentFunInfo.InArg,NInArg,...
+ SharedInfo.CurrentFunInfo.OutArg,NOutArg,...
+ SharedInfo,...
+ SharedInfo.CurrentFunInfo.FunPrecSpecifier,...
+ SharedInfo.CurrentFunInfo.FunTypeAnnot,SharedInfo.CurrentFunInfo.FunSizeAnnot,ReportFileName,'');
+//#RNU_RES_B
+// -------------------------------------------------------------------------
+// --- Stores InArg structure into the temporary variables symbol table. ---
+// -------------------------------------------------------------------------
+//#RNU_RES_E
+SymbTableFileName = FileInfo.Funct(nxtscifunnumber).LocalVarFileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Putting Input and Output arguments in the local symbol table***',ReportFileName,'file','y');
+// #RNU_RES_E
+for tmpcnt = 1:NInArg
+ //#RNU_RES_B
+ PrintStringInfo(' Symbol ""'+SharedInfo.CurrentFunInfo.InArg(tmpcnt).Name+'""',ReportFileName,'file','y');
+ PrintStringInfo(' Setting symbol ""'+SharedInfo.CurrentFunInfo.InArg(tmpcnt).Name+'"" in '+SymbTableFileName+'.',ReportFileName,'file','y');
+ //#RNU_RES_E
+
+ ST_Set(SharedInfo.CurrentFunInfo.InArg(tmpcnt).Name,...
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Type,...
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size,...
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Value,...
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).FindLike,...
+ SharedInfo.CurrentFunInfo.InArg(tmpcnt).Dimension,...
+ SymbTableFileName);
+ //#RNU_RES_B
+ PrintStringInfo(' Type: '+SharedInfo.CurrentFunInfo.InArg(tmpcnt).Type,ReportFileName,'file','y');
+ PrintStringInfo(' Size(1): '+string(SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size(1)),ReportFileName,'file','y');
+ PrintStringInfo(' Size(2): '+string(SharedInfo.CurrentFunInfo.InArg(tmpcnt).Size(2)),ReportFileName,'file','y');
+ PrintStringInfo(' Value: '+string(SharedInfo.CurrentFunInfo.InArg(tmpcnt).Value),ReportFileName,'file','y');
+ PrintStringInfo(' FindLike: '+string(SharedInfo.CurrentFunInfo.InArg(tmpcnt).FindLike),ReportFileName,'file','y');
+ PrintStringInfo(' Dimension: '+string(SharedInfo.CurrentFunInfo.InArg(tmpcnt).Dimension),ReportFileName,'file','y');
+ PrintStringInfo(' ',ReportFileName,'file','y');
+ //#RNU_RES_E
+end
+
+// --------------------------------------------------------------------------
+// --- Stores OutArg structure into the temporary variables symbol table. ---
+// --------------------------------------------------------------------------
+//NUT: verifica se puoi usare l'outarg2symboltable qui.
+for tmpcnt = 1:NOutArg
+ //#RNU_RES_B
+ PrintStringInfo(' Symbol ""'+SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Name+'""',ReportFileName,'file','y');
+
+ PrintStringInfo(' Setting symbol ""'+SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Name+'"" in '+SymbTableFileName+'.',ReportFileName,'file','y');
+ //#RNU_RES_E
+ ST_Set(SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Name,...
+ SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Type,...
+ SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Size,...
+ SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Value,...
+ SharedInfo.CurrentFunInfo.OutArg(tmpcnt).FindLike,...
+ SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Dimension,...
+ SymbTableFileName);
+ //#RNU_RES_B
+ PrintStringInfo(' Type: '+SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Type,ReportFileName,'file','y');
+ PrintStringInfo(' Size(1): '+string(SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Size(1)),ReportFileName,'file','y');
+ PrintStringInfo(' Size(2): '+string(SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Size(2)),ReportFileName,'file','y');
+ PrintStringInfo(' Value: '+string(SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Value),ReportFileName,'file','y');
+ PrintStringInfo(' FindLike: '+string(SharedInfo.CurrentFunInfo.OutArg(tmpcnt).FindLike),ReportFileName,'file','y');
+ PrintStringInfo(' Dimension: '+string(SharedInfo.CurrentFunInfo.OutArg(tmpcnt).Dimension),ReportFileName,'file','y');
+ PrintStringInfo(' ',ReportFileName,'file','y');
+ //#RNU_RES_E
+
+end
+
+//#RNU_RES_B
+// -----------------------------------------------
+// --- Check on common input/output arguments. ---
+// -----------------------------------------------
+//#RNU_RES_E
+AST_CheckCommonInOutArgs(SharedInfo.CurrentFunInfo.InArg,NInArg,SharedInfo.CurrentFunInfo.OutArg,NOutArg,ReportFileName);
+
+//#RNU_RES_B
+// ------------------------
+// --- Generate C code. ---
+// ------------------------
+//#RNU_RES_E
+FlagCall = 0;
+SharedInfo = C_Funcall(SharedInfo.CurrentFunInfo,FileInfo,SharedInfo,FlagCall);
+SharedInfo.NIndent = SharedInfo.NIndent+1; // Increase indentation level.
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci b/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci
new file mode 100644
index 00000000..5373adf6
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci
@@ -0,0 +1,92 @@
+function [FileInfo,SharedInfo] = AST_HandleIfElse(FileInfo,SharedInfo,ASTIfExpType)
+// function [FileInfo,SharedInfo] = AST_HandleIfElse(FileInfo,SharedInfo,ASTIfExpType)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Handles the Else If tag of the AST.
+//
+// overloading function for "ifthenel" type tlist string function
+// this is a node of the AST
+// fields:
+// expression : "expression" type tlist (the if expression)
+// then : list of "equal" type tlist and list('EOL') (the
+// then instructions list)
+// elseifs : a list of tlists
+// else : list of "equal" type tlist and list('EOL') (the
+// else instructions list)
+// txt=['If '
+// ' Expression:'
+// ' '+string(I.expression)
+// ' If Statements'
+// ' '+objectlist2string(I.then)]
+// for e=I.elseifs
+// txt=[txt;
+// ' Else If Expression'
+// ' '+string(e.expression)
+// ' Else If Statements'
+// ' '+objectlist2string(e.then)]
+// end
+// txt=[txt;
+// ' Else Statements'
+// ' '+objectlist2string(I.else)
+// 'EndIf']
+//
+// Input data:
+// ASTIfExpType: it specifies if we are handling a if condition (ASTIfExpType='if')
+// or an elseif condition (ASTIfExpType='elseif') or else statement (ASTIfExpType='else')
+//#RNU_RES_E
+// //NUT: add description here
+//
+//
+// Output data:
+// //NUT: add description here
+//
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+PrintStepInfo('Handling If Statements',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//#RNU_RES_B
+// ---------------------------------------------------
+// --- Retrieve If Expression Parameters from AST. ---
+// ---------------------------------------------------
+//#RNU_RES_E
+if (ASTIfExpType~='else')
+ [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType);
+else
+ // "else" type doesn't contain any condition to test.
+ IfCondArg = '';
+ NIfCondArg = 0;
+end
+
+//#RNU_RES_B
+// -----------------------------
+// --- C Generation Section. ---
+// -----------------------------
+// --- Generate the C code for if/elseif Expression. ---
+//#RNU_RES_E
+SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo);
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleWhileExpr.sci b/2.3-1/macros/ASTManagement/AST_HandleWhileExpr.sci
new file mode 100644
index 00000000..ffcf2f45
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleWhileExpr.sci
@@ -0,0 +1,80 @@
+function [FileInfo,SharedInfo] = AST_HandleWhileExpr(FileInfo,SharedInfo)
+// function [FileInfo,SharedInfo] = AST_HandleWhileExpr(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Handles the WhileExpression tag of the AST.
+//
+// txt=['While'
+// ' WhileExpression:'
+// ' '+string(W.expression)
+// ' WhileStatements:'
+// ' '+objectlist2string(W.statements)
+// 'EndWhile']
+//
+//#RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 29-Dec-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+PfxP1WhileProlFileName = FileInfo.Funct(nxtscifunnumber).PfxP1WhileProlFileName;
+PfxP1WhileEpilFileName = FileInfo.Funct(nxtscifunnumber).PfxP1WhileEpilFileName;
+PrintStepInfo('Handling While',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//#RNU_RES_B
+// --- Signal the entrance in a while expression. ---
+//#RNU_RES_E
+SharedInfo.WhileExpr.OnExec = SharedInfo.WhileExpr.OnExec + 1;
+
+//#RNU_RES_B
+// --- Generate the file names for the prologue and epilogue files. ---
+//#RNU_RES_E
+FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level) = ...
+ PfxP1WhileProlFileName+string(SharedInfo.While.Level)+'.c';
+FileInfo.Funct(nxtscifunnumber).CPass1WhileEpilFileName(SharedInfo.While.Level) = ...
+ PfxP1WhileEpilFileName+string(SharedInfo.While.Level)+'.c';
+
+//#RNU_RES_B
+// -----------------------------------------------------------
+// --- Create a copy of the While Prologue/Epilogue Files. ---
+// -----------------------------------------------------------
+//#RNU_RES_E
+PrintStringInfo(' ',FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level),'file');
+PrintStringInfo(' ',FileInfo.Funct(nxtscifunnumber).CPass1WhileEpilFileName(SharedInfo.While.Level),'file');
+
+//#RNU_RES_B
+// --------------------------------------------------------
+// --- Replace the CPass1V1 file with a temp WhileFile. ---
+// --------------------------------------------------------
+// From now up to Expression: all the C code will be written in a while temporary file.
+//#RNU_RES_E
+tmpfilename = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+FileInfo.Funct(nxtscifunnumber).CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level);
+FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level) = tmpfilename;
+//#RNU_RES_B
+PrintStringInfo('Redirecting C code to: '+FileInfo.Funct(nxtscifunnumber).CPass1FileName,FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+//#RNU_RES_E
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci b/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci
new file mode 100644
index 00000000..79fb516d
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci
@@ -0,0 +1,118 @@
+function [FileInfo,SharedInfo] = AST_HandleWhileStatem(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Handles the WhileStatements tag of the AST.
+//
+// txt=['While'
+// ' WhileExpression:'
+// ' '+string(W.expression)
+// ' WhileStatements:'
+// ' '+objectlist2string(W.statements)
+// 'EndWhile']
+//
+//#RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 20-Jan-2008 -- Edoardo Nutricato: Author.
+// 20-Jan-2008 -- Rubby Nutricato: Minor Changes.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+//#RNU_RES_B
+
+//NUT: accertati che l'epilogo e il prologo del while siano effettivamente differenti o se
+//NUT: si puo' avere un solo file utilizzato sia per il prologo che per l'epilogo.
+
+//NUT: da sistemare senza le global
+//#RNU_RES_E
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1WhileProlFileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level);
+PrintStepInfo('Handling WhileStatements',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+//#RNU_RES_B
+// -----------------------------------------------
+// --- Resume the correct name while CPass1V1. ---
+// -----------------------------------------------
+//#RNU_RES_E
+tmpfilename = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+FileInfo.Funct(nxtscifunnumber).CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level);
+FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level) = tmpfilename;
+CPass1WhileProlFileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level);
+PrintStringInfo(' Redirecting C code to: '+FileInfo.Funct(nxtscifunnumber).CPass1FileName,FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+
+//#RNU_RES_B
+// ------------------------
+// --- Generate C code. ---
+// ------------------------
+//#RNU_RES_E
+if(SharedInfo.WhileExpr.CondVar == '')
+ //#RNU_RES_B
+ // It means that we are handling something like while(a) or while(1)
+ // The while condition variable is generated by the HandleEndGenFun.
+ //#RNU_RES_E
+
+ // --- Pop the name of the condition variable or number. ---
+ Pop1 = AST_PopASTStack();
+
+ [ArgName,ArgScope] = AST_ExtractNameAndScope(Pop1);
+ if (length(ArgName) == 0)
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Expected while(variable) or while(number).','','stdout','y');
+ PrintStringInfo('SCI2CERROR: Expected a variable or number in the AST while expression.','','stdout','y');
+ PrintStringInfo('SCI2CERROR: Report this error to http://forge.scilab.org/index.php/p/scilab2c/issues/.','','stdout','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'Expected a conditional variable in the while expression');
+ end
+
+ SharedInfo.WhileExpr.CondVar = ArgName;
+ //#RNU_RES_B
+ // --- Repush strings into the AST stack. ---
+ //#RNU_RES_E
+
+ AST_PushASTStack(Pop1);
+
+elseif (SharedInfo.WhileExpr.DimCondVar > 0)
+ error(9999, 'Cannot manage while with matrix conditions');
+end
+SharedInfo = C_WhileExpression(FileInfo,SharedInfo);
+
+// --------------------------
+// --- Update SharedInfo. ---
+// --------------------------
+// Signal the exit from a while expression.
+SharedInfo.WhileExpr.OnExec = SharedInfo.WhileExpr.OnExec - 1;
+SharedInfo.WhileExpr.CondVar = '';
+SharedInfo.WhileExpr.DimCondVar = -1;
+SharedInfo.WhileExpr.AssignmentFun = 0; //NUT: siamo sicuri che serva?
+
+// -------------------------------
+// --- Delete temporary files. ---
+// -------------------------------
+SCI2Cmdelete(CPass1WhileProlFileName);
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci
new file mode 100644
index 00000000..fa76a01d
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci
@@ -0,0 +1,168 @@
+function [FunctionName,InArg,NInArg,OutArg,NOutArg] = AST_ParseEqualStruct(FileInfo,SharedInfo)
+// function [FunctionName,InArg,NInArg,OutArg,NOutArg] = AST_ParseEqualStruct(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Parses the Equal structure of the AST.
+// Structure of Equal:
+// txt=['Equal'
+// ' Expression: '
+// ' '+string(e.expression)
+// ' Lhs : '
+// ' '+objectlist2string(e.lhs)
+// 'EndEqual'
+// ]
+//#RNU_RES_E
+//
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+//#RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y','n');
+PrintStringInfo('***Reading AST***',ReportFileName,'file','y','n');
+//#RNU_RES_E
+
+// -------------------------------
+// --- Read Output parameters. ---
+// -------------------------------
+LhsField = AST_PopASTStack();
+NOutArg = 0;
+OutputArgumentNames = [];
+OutputArgumentScope = [];
+while (LhsField ~= 'Lhs :')
+ NOutArg = NOutArg + 1;
+ [OutputArgumentNames(NOutArg),OutputArgumentScope(NOutArg)] = AST_ExtractNameAndScope(LhsField);
+ LhsField = AST_PopASTStack();
+ if (LhsField == 'Expression:')
+ error(9999, 'Found Expression: before Lhs');
+ elseif (LhsField == 'Equal')
+ error(9999, 'Found Equal before Lhs');
+ end
+end
+OutputArgumentNames = SCI2Cflipud(OutputArgumentNames);
+OutputArgumentScope = SCI2Cflipud(OutputArgumentScope);
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+ExprField = AST_PopASTStack();
+NInArg = 0;
+InputArgumentNames = [];
+while (ExprField ~= 'Expression:')
+ NInArg = NInArg + 1;
+ [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(ExprField);
+ ExprField = AST_PopASTStack();
+ if (ExprField == 'Equal')
+ error(9999, 'Found Equal before Lhs');
+ end
+end
+InputArgumentNames = SCI2Cflipud(InputArgumentNames);
+InputArgumentScope = SCI2Cflipud(InputArgumentScope);
+
+//#RNU_RES_B
+// ------------------------------
+// --- Extract function name. ---
+// ------------------------------
+//#RNU_RES_E
+FunctionName = AST_PopASTStack();
+if (FunctionName ~= 'Equal') then
+ error(9999, 'Problems with Equal, Expected Equal tag.');
+end
+FunctionName = 'OpEqual';
+
+//#RNU_RES_B
+// -------------------------------------
+// --- Generate the InArg structure. ---
+// -------------------------------------
+//#RNU_RES_E
+InArg = [];
+for counterinputargs = 1:NInArg
+ InArg(counterinputargs).Name=InputArgumentNames(counterinputargs);
+ InArg(counterinputargs).Scope=InputArgumentScope(counterinputargs);
+end
+
+//#RNU_RES_B
+// -------------------------------------
+// --- Generate the InArg structure. ---
+// -------------------------------------
+//#RNU_RES_E
+OutArg = [];
+for counteroutputargs = 1:NOutArg
+ OutArg(counteroutputargs).Name=OutputArgumentNames(counteroutputargs);
+ OutArg(counteroutputargs).Scope=OutputArgumentScope(counteroutputargs);
+end
+
+// ------------------------
+// --- Print Some Info. ---
+// ------------------------
+//#RNU_RES_B
+PrintStringInfo('Function Name: '+FunctionName,ReportFileName,'file','y','n');
+PrintStringInfo('N Intput Arguments: '+string(NInArg),ReportFileName,'file','y','n');
+//#RNU_RES_E
+if (SharedInfo.Equal.Nins > 0)
+ //#RNU_RES_B
+ PrintStringInfo('N ins functions: '+string(SharedInfo.Equal.Nins),ReportFileName,'file','y');
+ //#RNU_RES_E
+ for counterinputargs = 1:NInArg
+ //#RNU_RES_B
+ PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+InArg(counterinputargs).Name,...
+ ReportFileName,'file','y');
+ PrintStringInfo(' Scope: '+InArg(counterinputargs).Scope,...
+ ReportFileName,'file','y');
+ //#RNU_RES_E
+ end
+ if (NInArg ~= SharedInfo.Equal.Nins)
+ error(9999, 'Number of input arguments must be equal to number of ins functions.');
+ end
+else
+ //#RNU_RES_B
+ PrintStringInfo('N Output Arguments: '+string(NOutArg),ReportFileName,'file','y');
+ //#RNU_RES_E
+ for counterinputargs = 1:NInArg
+ //#RNU_RES_B
+ PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+InArg(counterinputargs).Name,...
+ ReportFileName,'file','y','n');
+ PrintStringInfo(' Scope: '+InArg(counterinputargs).Scope,...
+ ReportFileName,'file','y','n');
+ //#RNU_RES_E
+ end
+ for counteroutputargs = 1:NOutArg
+ //#RNU_RES_B
+ PrintStringInfo('Output Argument Number '+string(counteroutputargs)+': '+OutArg(counteroutputargs).Name,...
+ ReportFileName,'file','y','n');
+ PrintStringInfo(' Scope: '+OutArg(counterinputargs).Scope,...
+ ReportFileName,'file','y','n');
+ //#RNU_RES_E
+ end
+ if (NInArg ~= NOutArg)
+ error(9999, 'Number of input arguments must be equal to number of output arguments.');
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci
new file mode 100644
index 00000000..647a70d7
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci
@@ -0,0 +1,116 @@
+function [FunctionName,InArg,NInArg,NOutArg] = AST_ParseFuncallStruct(FileInfo,SharedInfo)
+// function [FunctionName,InArg,NInArg,NOutArg] = AST_ParseFuncallStruct(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Extracts Input Arguments, Output Arguments and Function Name
+// from the AST.
+//
+// Structure of Funcall:
+// overloading function for "funcall" type tlist string function
+// this is a node of the AST
+// fields:
+// rhs : a list
+// name : string, the name of the function
+// lhsnb: number, the number of function lhs
+// txt=['Funcall : '+F.name
+// ' #lhs : '+string(F.lhsnb)
+// ' Rhs : '
+// ' '+objectlist2string(F.rhs)
+// 'EndFuncall'
+// ]
+//
+//#RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+// #RNU_RES_B
+PrintStringInfo(' Parsing Funcall structure',ReportFileName,'file','y');
+// #RNU_RES_E
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+RhsField = AST_PopASTStack();
+NInArg = 0;
+while (RhsField ~= 'Rhs :')
+ NInArg = NInArg + 1;
+ [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(RhsField);
+ RhsField = AST_PopASTStack();
+ if (RhsField == '#lhs :')
+ error(9999, 'Found #lhs before Rhs');
+ elseif (RhsField == 'Funcall :')
+ error(9999, 'Found Funcall before Rhs');
+ end
+end
+if (stripblanks(InputArgumentNames(NInArg)) == '<empty>')
+ NInArg = 0;
+ InputArgumentNames = [];
+ InputArgumentScope = [];
+end
+InputArgumentNames = SCI2Cflipud(InputArgumentNames);
+InputArgumentScope = SCI2Cflipud(InputArgumentScope);
+
+// --------------------------------------------
+// --- Extract number of output parameters. ---
+// --------------------------------------------
+buffstring = AST_PopASTStack();
+NOutArg = eval(stripblanks(part(buffstring,10:length(buffstring))));
+
+// ------------------------------
+// --- Extract function name. ---
+// ------------------------------
+buffstring = AST_PopASTStack();
+FunctionName = stripblanks(part(buffstring,12:length(buffstring)));
+
+// -------------------------------------
+// --- Generate the InArg structure. ---
+// -------------------------------------
+InArg = [];
+for counterinputargs = 1:NInArg
+ if (InputArgumentNames(counterinputargs) == 'r')
+ InputArgumentNames(counterinputargs) = 'rr'; //NUT: per ora cerco di risolvere cosi' il baco sulla 'r'
+ end
+ InArg(counterinputargs).Name=InputArgumentNames(counterinputargs);
+ InArg(counterinputargs).Scope=InputArgumentScope(counterinputargs);
+end
+
+//#RNU_RES_B
+PrintStringInfo('Function Name: '+FunctionName,ReportFileName,'file','y','n');
+PrintStringInfo('N Intput Arguments: '+string(NInArg),ReportFileName,'file','y','n');
+PrintStringInfo('N Output Arguments: '+string(NOutArg),ReportFileName,'file','y','n');
+//#RNU_RES_E
+for counterinputargs = 1:NInArg
+ //#RNU_RES_B
+ PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+InArg(counterinputargs).Name,...
+ ReportFileName,'file','y','n');
+ PrintStringInfo(' Scope: '+InArg(counterinputargs).Scope,...
+ ReportFileName,'file','y','n');
+ //#RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci
new file mode 100644
index 00000000..a7da0128
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci
@@ -0,0 +1,119 @@
+function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
+// function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Parses the IfExpression structure of the AST.
+//
+// txt=['If '
+// ' Expression:'
+// ' '+string(I.expression)
+// ' If Statements'
+// ' '+objectlist2string(I.then)]
+// for e=I.elseifs
+// txt=[txt;
+// ' Else If Expression'
+// ' '+string(e.expression)
+// ' Else If Statements'
+// ' '+objectlist2string(e.then)]
+// end
+// txt=[txt;
+// ' Else Statements'
+// ' '+objectlist2string(I.else)
+// 'EndIf']
+//
+//#RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+//#RNU_RES_B
+PrintStringInfo('***Retrieving '+ASTIfExpType+' expression parameters from AST***',ReportFileName,'file','y');
+//#RNU_RES_E
+IfCondArg = [];
+NIfCondArg = 0;
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ------------------------------------
+// --- Read if condition variables. ---
+// ------------------------------------
+flagendpop = 0;
+IfExprField = AST_PopASTStack();
+if (ASTIfExpType=='if')
+ if (IfExprField=='Expression:')
+ flagendpop = 1;
+ // Pop Again the If tag from the AST.
+ IfExprField = AST_PopASTStack();
+ end
+elseif (ASTIfExpType=='elseif')
+ if (IfExprField=='Else If Expression')
+ flagendpop = 1;
+ end
+else
+ error(9999, 'Unknown ASTIfExpType ""'+ASTIfExpType+'"".');
+end
+
+while (flagendpop == 0)
+ if (IfExprField~='<EOL>')
+ if (ASTIfExpType=='if')
+ if (IfExprField=='Expression:')
+ flagendpop = 1;
+ // Pop Again the If tag from the AST.
+ IfExprField = AST_PopASTStack();
+ else
+ NIfCondArg = NIfCondArg + 1;
+ [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
+ end
+ elseif (ASTIfExpType=='elseif')
+ if (IfExprField=='Else If Expression')
+ flagendpop = 1;
+ else
+ NIfCondArg = NIfCondArg + 1;
+ IfCondArg(NIfCondArg) = IfExprField;
+ [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
+ end
+ end
+ end
+ IfExprField = AST_PopASTStack();
+end
+
+//#RNU_RES_B
+// -------------------------------------------
+// --- Print some info in the report file. ---
+// -------------------------------------------
+PrintStringInfo('N '+ASTIfExpType+' Condition Arguments: '+string(NIfCondArg),ReportFileName,'file','y');
+//#RNU_RES_E
+for counterifcondargs = 1:NIfCondArg
+ //#RNU_RES_B
+ PrintStringInfo(ASTIfExpType+' Condition Argument Number '+string(counterifcondargs)+': '+IfCondArg(counterifcondargs),...
+ ReportFileName,'file','y');
+ //#RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci
new file mode 100644
index 00000000..a77317bd
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci
@@ -0,0 +1,127 @@
+function [FunctionName,InArg,NInArg,NOutArg] = AST_ParseOperStruct(FileInfo,SharedInfo)
+// function [FunctionName,InArg,NInArg,NOutArg] = AST_ParseOperStruct(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Parses the Operation structure of the AST.
+//
+// Structure of Operation:
+//overloading function for "operation" type tlist string function
+//this is a node of the AST
+//fields:
+// operands: a list
+// operator: a string
+// txt=['Operation'
+// ' Operands:'
+// ' '+objectlist2string(O.operands)
+// ' Operator: '+O.operator
+// 'EndOperation'
+// ]
+//
+//#RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Reading AST***',ReportFileName,'file','y');
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+// ------------------------------
+// --- Extract function name. ---
+// ------------------------------
+buffstring = AST_PopASTStack();
+LabelFunctName = 'Operator: ';
+FunctionName = stripblanks(part(buffstring,length(LabelFunctName)+1:length(buffstring)));
+// Generate the proper function name.
+FunctionName = Operator2FunName(FunctionName);
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+RhsField = AST_PopASTStack();
+NInArg = 0;
+while (RhsField ~= 'Operands:')
+ NInArg = NInArg + 1;
+ [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(RhsField);
+ RhsField = AST_PopASTStack();
+ if (RhsField == 'Operation')
+ error(9999, 'Found Operation before Rhs');
+ end
+end
+
+if (stripblanks(InputArgumentNames(NInArg)) == '<empty>')
+ //NUT: forse non serve per l'operation
+ NInArg = 0;
+ InputArgumentNames = [];
+ InputArgumentScope = [];
+end
+InputArgumentNames = SCI2Cflipud(InputArgumentNames);
+InputArgumentScope = SCI2Cflipud(InputArgumentScope);
+
+//#RNU_RES_B
+// Remove tag "Operation" from the stack.
+//#RNU_RES_E
+OperationField = AST_PopASTStack();
+if (OperationField ~= 'Operation') then
+ error(9999, 'Problems with Operation, Expected Operation tag.');
+end
+
+// --------------------------------------------
+// --- Extract number of output parameters. ---
+// --------------------------------------------
+if (FunctionName == 'ins')
+ NOutArg = 0; // It is always 1. Double check it!
+else
+ NOutArg = 1; // It is always 1. Double check it!
+end
+// -------------------------------------
+// --- Generate the InArg structure. ---
+// -------------------------------------
+InArg = [];
+for counterinputargs = 1:NInArg
+ InArg(counterinputargs).Name=InputArgumentNames(counterinputargs);
+ InArg(counterinputargs).Scope=InputArgumentScope(counterinputargs);
+end
+
+//#RNU_RES_B
+PrintStringInfo('Operation Name: '+FunctionName,ReportFileName,'file','y');
+PrintStringInfo('N Intput Arguments: '+string(NInArg),ReportFileName,'file','y');
+PrintStringInfo('N Output Arguments: '+string(NOutArg),ReportFileName,'file','y');
+//#RNU_RES_E
+for counterinputargs = 1:NInArg
+ //#RNU_RES_B
+ PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+InArg(counterinputargs).Name,...
+ ReportFileName,'file','y');
+ PrintStringInfo(' Scope: '+InArg(counterinputargs).Scope,...
+ ReportFileName,'file','y');
+ //#RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_PopASTStack.sci b/2.3-1/macros/ASTManagement/AST_PopASTStack.sci
new file mode 100644
index 00000000..34857499
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_PopASTStack.sci
@@ -0,0 +1,40 @@
+function stackelement = AST_PopASTStack()
+// function stackelement = AST_PopASTStack()
+// -----------------------------------------------------------------
+// Pop the AST stack.
+//
+// Input data:
+// ---
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Aug-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+global SCI2CSTACK;
+global StackPosition;
+global STACKDEDUG;
+
+if StackPosition == 1
+ error(9999, 'Stack empty. Cannot pop from stack.');
+end
+
+stackelement = SCI2CSTACK(StackPosition,1);
+SCI2CSTACK = SCI2CSTACK(1:StackPosition-1);
+StackPosition = StackPosition - 1;
+
+if (STACKDEDUG == 1)
+ AST_DisplayStack();
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_PushASTStack.sci b/2.3-1/macros/ASTManagement/AST_PushASTStack.sci
new file mode 100644
index 00000000..34cd883b
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_PushASTStack.sci
@@ -0,0 +1,36 @@
+function AST_PushASTStack(stackelement)
+// function AST_PushASTStack(stackelement)
+// -----------------------------------------------------------------
+// Push the AST stack.
+//
+// Input data:
+// ---
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Aug-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+StackPosition = StackPosition + 1;
+SCI2CSTACK(StackPosition,1) = stackelement;
+
+if (STACKDEDUG == 1)
+ AST_DisplayStack();
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ReadASTHeader.sci b/2.3-1/macros/ASTManagement/AST_ReadASTHeader.sci
new file mode 100644
index 00000000..7a52b1f2
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ReadASTHeader.sci
@@ -0,0 +1,90 @@
+function ASTHeader = AST_ReadASTHeader(fidAST,ReportFileName)
+// function ASTHeader = AST_ReadASTHeader(fidAST,ReportFileName)
+// -----------------------------------------------------------------
+// Reads the AST header
+// txt=['Program'
+// 'Name : '+p.name
+// 'Outputs: '+strcat(objectlist2string(p.outputs),' ')
+// 'Inputs : '+strcat(objectlist2string(p.inputs),' ')
+// 'Statements '
+//
+// Input data:
+// //NUT: add description here
+//
+//
+// Output data:
+// //NUT: add description here
+//
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+ASTHeader = [];
+
+tline = mgetl(fidAST,1);
+AST_CheckLineLength(tline);
+treeline = stripblanks(tline);
+if STACKDEDUG == 1
+ disp('Read AST Line: '+treeline);
+end
+if (SCI2Cstrncmps1size('Program',treeline) == %F)
+ error(9999, 'Expected ""Program"" label in the AST');
+end
+
+tline = mgetl(fidAST,1);
+AST_CheckLineLength(tline);
+treeline = stripblanks(tline);
+if STACKDEDUG == 1
+ disp('Read AST Line: '+treeline);
+end
+if (SCI2Cstrncmps1size('Name : ',treeline) == %F)
+ error(9999, 'Expected ""Name : "" label in the AST');
+else
+ ASTHeader.Name = stripblanks(part(treeline,length('Name : ')+1:length(treeline)));
+end
+
+tline = mgetl(fidAST,1);
+AST_CheckLineLength(tline);
+treeline = stripblanks(tline);
+if STACKDEDUG == 1
+ disp('Read AST Line: '+treeline);
+end
+if (SCI2Cstrncmps1size('Outputs: ',treeline) == %F)
+ error(9999, 'Expected ""Outputs: "" label in the AST');
+else
+ ASTHeader.Outputs = stripblanks(part(treeline,length('Outputs: ')+1:length(treeline)));
+end
+
+tline = mgetl(fidAST,1);
+AST_CheckLineLength(tline);
+treeline = stripblanks(tline);
+if STACKDEDUG == 1
+ disp('Read AST Line: '+treeline);
+end
+if (SCI2Cstrncmps1size('Inputs : ',treeline) == %F)
+ error(9999, 'Expected ""Inputs : "" label in the AST');
+else
+ ASTHeader.Inputs = stripblanks(part(treeline,length('Inputs : ')+1:length(treeline)));
+end
+
+tline = mgetl(fidAST,1);
+AST_CheckLineLength(tline);
+treeline = stripblanks(tline);
+if STACKDEDUG == 1
+ disp('Read AST Line: '+treeline);
+end
+if (SCI2Cstrncmps1size('Statements ',treeline) == %F)
+ error(9999, 'Expected ""Statements "" label in the AST');
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.sci b/2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.sci
new file mode 100644
index 00000000..96ec3ebe
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.sci
@@ -0,0 +1,61 @@
+function [RhsNames,RhsScope,NRhs] = AST_ReadEqualRhsNames(FileInfo,SharedInfo)
+// function [RhsNames,RhsScope,NRhs] = AST_ReadEqualRhsNames(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
+//#RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Reading Equal Rhs Names***',ReportFileName,'file','y');
+//#RNU_RES_E
+
+// -------------------------------
+// --- Read Output parameters. ---
+// -------------------------------
+cntpop = 1;
+NRhs = 0;
+RhsField(cntpop) = AST_PopASTStack();
+RhsNames = [];
+while (RhsField(cntpop) ~= 'Expression:')
+ NRhs = NRhs + 1;
+ [RhsNames(NRhs),RhsScope(NRhs)] = AST_ExtractNameAndScope(RhsField(cntpop));
+ cntpop = cntpop + 1;
+ RhsField(cntpop) = AST_PopASTStack();
+end
+RhsNames = SCI2Cflipud(RhsNames);
+RhsScope = SCI2Cflipud(RhsScope);
+
+// --- Repush everything into the stack. ---
+for cntpush = cntpop:-1:1
+ AST_PushASTStack(RhsField(cntpush));
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/GenOutArgNames.sci b/2.3-1/macros/ASTManagement/GenOutArgNames.sci
new file mode 100644
index 00000000..0e683835
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/GenOutArgNames.sci
@@ -0,0 +1,89 @@
+function [OutArg,SharedInfo] = GenOutArgNames(FunctionName,InArg,NInArg,OldOutArg,NOutArg,LhsArg,NLhsArg,FileInfo,SharedInfo)
+// function [OutArg,SharedInfo] = GenOutArgNames(FunctionName,OutArg,NOutArg,LhsArg,NLhsArg,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Generate the names for the temporary variables that store the
+// output arguments.
+//#RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// OutArg: is the Output arguments structure containing the field
+// name that specifies the output argument names.
+// //NUT: add description here
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),9,9);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+// #RNU_RES_B
+PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+// #RNU_RES_E
+OutArg = OldOutArg;
+
+//#RNU_RES_B
+// ---------------------------------------------------------------------------------------
+// --- Generate the names for the temporary variables that store the output arguments. ---
+// ---------------------------------------------------------------------------------------
+// At this step only the name of the output arguments can be generated. ---
+//#RNU_RES_E
+if (NLhsArg > 0)
+ //#RNU_RES_B
+ // Use the equal Lhs names.
+ PrintStringInfo('Using Equal Lhs names.',ReportFileName,'file','y');
+ //#RNU_RES_E
+ if (NLhsArg ~= NOutArg)
+ error(9999, 'NLhsArg='+string(NLhsArg)+' must be equal to NOutArg='+string(NOutArg)+'.');
+ end
+ for counteroutputargs = 1:NOutArg
+ OutArg(counteroutputargs).Name=LhsArg(counteroutputargs).Name;
+ OutArg(counteroutputargs).Scope=LhsArg(counteroutputargs).Scope;
+ end
+else
+ //#RNU_RES_B
+ // Generate temporary variables.
+ PrintStringInfo('Generating temporary variables.',ReportFileName,'file','y');
+ //#RNU_RES_E
+ if ((sum(mtlb_strcmp(FunctionName,SharedInfo.Annotations.DataPrec)) > 0) & ...
+ (SharedInfo.SkipNextPrec == 1))
+ //#RNU_RES_B
+ PrintStringInfo(' Skipping code generating because already generated in the previous function.',ReportFileName,'file','y');
+ //#RNU_RES_E
+ for counteroutputargs = 1:NOutArg
+ OutArg(counteroutputargs).Name = InArg(counteroutputargs).Name;
+ end
+ elseif (mtlb_strcmp(FunctionName,'OpEqual'))
+ // do nothing.
+ //NUT: verifica questa parte di codice. e' sicuro che se ho equal gli oldoutarg contengono gia' il nome?
+ else
+ for counteroutputargs = 1:NOutArg
+ if ((SharedInfo.ASTReader.EnableTempVarsReuse == 1) & ...
+ (length(SharedInfo.ASTReader.ReusableTempVars) > 0))
+ TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.ReusableTempVars(1))]);
+ SharedInfo.ASTReader.ReusableTempVars = SharedInfo.ASTReader.ReusableTempVars(2:$);
+ else
+ SharedInfo.ASTReader.UsedTempVars = SharedInfo.ASTReader.UsedTempVars + 1;
+ TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.UsedTempVars)]);
+ end
+ OutArg(counteroutputargs).Name=TmpOutArgName;
+ end
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/Operator2FunName.sci b/2.3-1/macros/ASTManagement/Operator2FunName.sci
new file mode 100644
index 00000000..1aa934cb
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/Operator2FunName.sci
@@ -0,0 +1,119 @@
+function FunName = Operator2FunName(OperatorName);
+// -----------------------------------------------------------------
+// Returns the function name corresponding to the input operator.
+// From intmacr2tree.c we have:
+// char *operators[]={"+","-","*",".*","*.",".*.","/","./","/.","./.",
+// "\\",".\\","\\.",".\\.","^","==","<",">","<=",">=","~=",
+// ":","rc","ins","ext","'","cc","|","&","~",".^",".'","cceol"};
+// I also added "<>".
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 29-May-2007 -- Nutricato Raffaele: Changed code into a function.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+//NUT: non e' inserito il "\" verifica come mai.
+//NUT: il ".\" l'ho inserito io
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+FuncPrefix = 'Op';
+FuncSuffix = '';
+
+if (OperatorName == '+')
+ FunName = FuncPrefix+'Plus'+FuncSuffix;
+elseif (OperatorName == '-')
+ FunName = FuncPrefix+'Minus'+FuncSuffix;
+elseif (OperatorName == '*')
+ FunName = FuncPrefix+'Star'+FuncSuffix;
+elseif (OperatorName == '.*')
+ FunName = FuncPrefix+'DotStar'+FuncSuffix;
+elseif (OperatorName == '*.')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == '.*.')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == '/')
+ FunName = FuncPrefix+'Slash'+FuncSuffix;
+elseif (OperatorName == './')
+ FunName = FuncPrefix+'DotSlash'+FuncSuffix;
+elseif (OperatorName == '/.')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == './.')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == '.\')
+ FunName = FuncPrefix+'DotBackSlash'+FuncSuffix;
+elseif (OperatorName == '\')
+ //PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ //SCI2Cerror(' ');
+ FunName = FuncPrefix+'BackSlash'+FuncSuffix;
+elseif (OperatorName == '.\')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == '\.')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == '.\.')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+elseif (OperatorName == '^')
+ FunName = FuncPrefix+'Hat'+FuncSuffix;
+elseif (OperatorName == '.^')
+ FunName = FuncPrefix+'DotHat'+FuncSuffix;
+elseif (OperatorName == '''')
+ FunName = FuncPrefix+'Apex'+FuncSuffix;
+elseif (OperatorName == '.''')
+ FunName = FuncPrefix+'DotApex'+FuncSuffix;
+elseif (OperatorName == '==')
+ FunName = FuncPrefix+'LogEq'+FuncSuffix;
+elseif (OperatorName == '<')
+ FunName = FuncPrefix+'LogLt'+FuncSuffix;
+elseif (OperatorName == '>')
+ FunName = FuncPrefix+'LogGt'+FuncSuffix;
+elseif (OperatorName == '<=')
+ FunName = FuncPrefix+'LogLe'+FuncSuffix;
+elseif (OperatorName == '>=')
+ FunName = FuncPrefix+'LogGe'+FuncSuffix;
+elseif (OperatorName == '~=')
+ FunName = FuncPrefix+'LogNe'+FuncSuffix;
+elseif (OperatorName == '<>')
+ FunName = FuncPrefix+'LogNe'+FuncSuffix;
+elseif (OperatorName == '|')
+ FunName = FuncPrefix+'LogOr'+FuncSuffix;
+elseif (OperatorName == '&')
+ FunName = FuncPrefix+'LogAnd'+FuncSuffix;
+elseif (OperatorName == '~')
+ FunName = FuncPrefix+'LogNot'+FuncSuffix;
+elseif (OperatorName == ':')
+ FunName = FuncPrefix+'Colon'+FuncSuffix;
+elseif (OperatorName == 'rc')
+ FunName = 'OpRc';
+elseif (OperatorName == 'cc')
+ FunName = 'OpCc';
+elseif (OperatorName == 'ins')
+ FunName = 'OpIns';
+elseif (OperatorName == 'ext')
+ FunName = 'OpExt';
+elseif (OperatorName == 'cceol')
+ PrintStringInfo('SCI2CERROR: Operator ""'+OperatorName+'"" not supported.','','stout','y');
+ error(9999, 'SCI2CERROR: Operator ""'+OperatorName+'"" not supported.');
+else
+ PrintStringInfo('SCI2CERROR: Unknown Operator ""'+OperatorName+'.','','stout','y');
+ error(9999, 'SCI2CERROR: Unknown Operator ""'+OperatorName+'.');
+end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/SciFile2ASTFile.sci b/2.3-1/macros/ASTManagement/SciFile2ASTFile.sci
new file mode 100644
index 00000000..be978c57
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/SciFile2ASTFile.sci
@@ -0,0 +1,36 @@
+function SciFile2ASTFile(SciFile,ASTFile);
+// function SciFile2ASTFile(SciFile,ASTFile);
+// -----------------------------------------------------------------
+// This function makes use of the macr2tree function to generate
+// the ASTFile containing the AST (Abstract Syntactic Tree) of the
+// input Scilab function (SciFile).
+//
+// Input data:
+// SciFile: full path of the input function.
+// ASTFile: full path of the file that will store the AST.
+//
+// Output data:
+// ---
+//
+// Status:
+// 12-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+exec(SciFile);
+[tmppath,ScilabFunName,tmpext] = fileparts(SciFile);
+AST=eval('macr2tree('+ScilabFunName+')');
+
+
+[ASTx,ASTierr]=fileinfo(ASTFile);
+if ASTierr == 0
+ mdelete(ASTFile);
+end
+
+fd = mopen(ASTFile, "wt");
+mputl(string(AST), fd);
+mclose(fd);
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_comment_string.sci b/2.3-1/macros/ASTManagement/_comment_string.sci
new file mode 100644
index 00000000..a963507d
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_comment_string.sci
@@ -0,0 +1,7 @@
+function txt=%comment_string(e)
+//overloading function for "comment" type tlist string function
+//fields:
+// text: a string
+//this is a leaf of the AST
+ txt=['Comment : '+e.text]
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_cste_string.sci b/2.3-1/macros/ASTManagement/_cste_string.sci
new file mode 100644
index 00000000..ba9971d2
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_cste_string.sci
@@ -0,0 +1,26 @@
+function txt=%cste_string(c)
+//overloading function for "cste" type tlist string function
+//this is a leaf of the AST
+//fields:
+// value : a number or a string
+//NUT: added cste I also need "" for strings in order to be sure that the blanks are
+//NUT: correctly considered and not mistaken with additional blanks present in the ast text file.
+ stringcvalue = string(c.value);
+ if (stringcvalue == "%T" | ...
+ stringcvalue == "%t" | ...
+ stringcvalue == "%F" | ...
+ stringcvalue == "%f" | ...
+ stringcvalue == "%nan" | ...
+ stringcvalue == "%inf" | ...
+ stringcvalue == "%e" | ...
+ stringcvalue == "%pi")
+ txt=['Number_x: '+stringcvalue];
+ elseif (isnum(stringcvalue))
+ //NUT needed to convert format 1D-14 into 1d-14
+ txt=['Number_x: '+strsubst(stringcvalue,'D','e')];
+ elseif (stringcvalue == "%i")
+ txt=['Number_X: '+stringcvalue];
+ else
+ txt=['String: ""'+stringcvalue+'""'];
+ end
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/_equal_string.sci b/2.3-1/macros/ASTManagement/_equal_string.sci
new file mode 100644
index 00000000..9678f0e0
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_equal_string.sci
@@ -0,0 +1,16 @@
+function txt=%equal_string(e)
+//overloading function for "equal" type tlist string function
+//this is a node of the AST
+
+//fields:
+// expression: "expression" type tlist (the right hand side)
+// lhs : list of "variable" type tlist and "operation" type tlist // (the assignment)
+// endsymbol : string (the orginal end-of-instruction symbol (, ; <CR>))
+ txt=['Equal'
+ ' Expression: '
+ ' '+string(e.expression)
+ ' Lhs : '
+ ' '+objectlist2string(e.lhs)
+ 'EndEqual'
+ ]
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/_for_string.sci b/2.3-1/macros/ASTManagement/_for_string.sci
new file mode 100644
index 00000000..0ed9ca28
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_for_string.sci
@@ -0,0 +1,15 @@
+function txt=%for_string(F)
+//overloading function for "for" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// for instructions list)
+//NUT: raf cambiato ForExpression e ForStatements
+ txt=['For'
+ ' ForExpression:'
+ ' '+string(F.expression)
+ ' ForStatements:'
+ ' '+objectlist2string(F.statements)
+ 'EndFor']
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/_funcall_string.sci b/2.3-1/macros/ASTManagement/_funcall_string.sci
new file mode 100644
index 00000000..faeb81d9
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_funcall_string.sci
@@ -0,0 +1,15 @@
+function txt=%funcall_string(F)
+//overloading function for "funcall" type tlist string function
+//this is a node of the AST
+//fields:
+// rhs : a list
+// name : string, the name of the function
+// lhsnb: number, the number of function lhs
+
+txt=['Funcall : '+F.name
+ ' #lhs : '+string(F.lhsnb)
+ ' Rhs : '
+ ' '+objectlist2string(F.rhs)
+ 'EndFuncall'
+ ]
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_ifthenel_string.sci b/2.3-1/macros/ASTManagement/_ifthenel_string.sci
new file mode 100644
index 00000000..6787a87c
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_ifthenel_string.sci
@@ -0,0 +1,27 @@
+function txt=%ifthenel_string(I)
+//overloading function for "ifthenel" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the if expression)
+// then : list of "equal" type tlist and list('EOL') (the
+// then instructions list)
+// elseifs : a list of tlists
+// else : list of "equal" type tlist and list('EOL') (the
+// else instructions list)
+ txt=['If '
+ ' Expression:'
+ ' '+string(I.expression)
+ ' If Statements'
+ ' '+objectlist2string(I.then)]
+ for e=I.elseifs
+ txt=[txt;
+ ' Else If Expression'
+ ' '+string(e.expression)
+ ' Else If Statements'
+ ' '+objectlist2string(e.then)]
+ end
+ txt=[txt;
+ ' Else Statements'
+ ' '+objectlist2string(I.else)
+ 'EndIf']
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_ifthenelse_string.sci b/2.3-1/macros/ASTManagement/_ifthenelse_string.sci
new file mode 100644
index 00000000..ef588c56
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_ifthenelse_string.sci
@@ -0,0 +1,27 @@
+function txt=%ifthenelse_string(I)
+//overloading function for "ifthenel" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the if expression)
+// then : list of "equal" type tlist and list('EOL') (the
+// then instructions list)
+// elseifs : a list of tlists
+// else : list of "equal" type tlist and list('EOL') (the
+// else instructions list)
+ txt=['If '
+ ' Expression:'
+ ' '+string(I.expression)
+ ' If Statements'
+ ' '+objectlist2string(I.then)]
+ for e=I.elseifs
+ txt=[txt;
+ ' Else If Expression'
+ ' '+string(e.expression)
+ ' Else If Statements'
+ ' '+objectlist2string(e.then)]
+ end
+ txt=[txt;
+ ' Else Statements'
+ ' '+objectlist2string(I.else)
+ 'EndIf']
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_operatio_string.sci b/2.3-1/macros/ASTManagement/_operatio_string.sci
new file mode 100644
index 00000000..8421a3f4
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_operatio_string.sci
@@ -0,0 +1,13 @@
+function txt=%operatio_string(O)
+//overloading function for "operation" type tlist string function
+//this is a node of the AST
+//fields:
+// operands: a list
+// operator: a string
+ txt=['Operation'
+ ' Operands:'
+ ' '+objectlist2string(O.operands)
+ ' Operator: '+O.operator
+ 'EndOperation'
+ ]
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/_operation_string.sci b/2.3-1/macros/ASTManagement/_operation_string.sci
new file mode 100644
index 00000000..84f5ce3c
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_operation_string.sci
@@ -0,0 +1,13 @@
+function txt=%operation_string(O)
+//overloading function for "operation" type tlist string function
+//this is a node of the AST
+//fields:
+// operands: a list
+// operator: a string
+ txt=['Operation'
+ ' Operands:'
+ ' '+objectlist2string(O.operands)
+ ' Operator: '+O.operator
+ 'EndOperation'
+ ]
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/_program_p.sci b/2.3-1/macros/ASTManagement/_program_p.sci
new file mode 100644
index 00000000..f45ed69a
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_program_p.sci
@@ -0,0 +1,4 @@
+function %program_p(p)
+ //overloading function for "program" type tlist display
+ mprintf("%s\n",string(p))
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_program_string.sci b/2.3-1/macros/ASTManagement/_program_string.sci
new file mode 100644
index 00000000..93486992
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_program_string.sci
@@ -0,0 +1,19 @@
+function txt=%program_string(p)
+//overloading function for "program" type tlist string function
+//main (root) node of the Abstract Formal Tree
+//fields:
+// name : string (the function name)
+// outputs : list of "variable" type tlist (the output arg names)
+// inputs : list of "variable" type tlist (the intput arg names)
+// statements: list of "equal" type tlist and list('EOL') (the
+// instructions list)
+// nblines : number (the number of lines in the scilab function)
+ txt=['Program'
+ 'Name : '+p.name
+ 'Outputs: '+strcat(objectlist2string(p.outputs),' ')
+ 'Inputs : '+strcat(objectlist2string(p.inputs),' ')
+ 'Statements '
+ ' '+objectlist2string(p.statements)
+ 'EndProgram'
+ ]
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_variable_string.sci b/2.3-1/macros/ASTManagement/_variable_string.sci
new file mode 100644
index 00000000..86507957
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_variable_string.sci
@@ -0,0 +1,26 @@
+function txt=%variable_string(v)
+ global anscounter; //NUT: just to fix problem with ans variables.
+//overloading function for "variable" type tlist string function
+//fields: name
+//this is a leaf of the AST
+//NUT: changed here. For me %i is a number not a variable.
+ if (v.name == "%T" | ...
+ v.name == "%t" | ...
+ v.name == "%F"| ...
+ v.name == "%f"| ...
+ v.name == "%nan"| ...
+ v.name == "%inf"| ...
+ v.name == "%e" | ...
+ v.name == "%pi")
+ txt=['Number_x: '+v.name];
+ elseif (v.name == "%i")
+ txt=['Number_X: '+v.name];
+ else
+ if (v.name == 'ans')
+ anscounter = anscounter + 1;
+ txt=['Variable: '+v.name+string(anscounter)];
+ else
+ txt=['Variable: '+v.name];
+ end
+ end
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ASTManagement/_while_string.sci b/2.3-1/macros/ASTManagement/_while_string.sci
new file mode 100644
index 00000000..7d5e6223
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/_while_string.sci
@@ -0,0 +1,14 @@
+function txt=%while_string(W)
+//overloading function for "while" type tlist string function
+//this is a node of the AST
+//fields:
+// expression : "expression" type tlist (the loop expression)
+// statements : list of "equal" type tlist and list('EOL') (the
+// while instructions list)
+ txt=['While'
+ ' WhileExpression:'
+ ' '+string(W.expression)
+ ' WhileStatements:'
+ ' '+objectlist2string(W.statements)
+ 'EndWhile']
+endfunction
diff --git a/2.3-1/macros/ASTManagement/buildmacros.sce b/2.3-1/macros/ASTManagement/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/ASTManagement/lib b/2.3-1/macros/ASTManagement/lib
new file mode 100644
index 00000000..5d98a03d
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/lib
Binary files differ
diff --git a/2.3-1/macros/ASTManagement/names b/2.3-1/macros/ASTManagement/names
new file mode 100644
index 00000000..a1aafbc1
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/names
@@ -0,0 +1,59 @@
+%comment_string
+%cste_string
+%equal_string
+%for_string
+%funcall_string
+%ifthenel_string
+%ifthenelse_string
+%operatio_string
+%operation_string
+%program_p
+%program_string
+%variable_string
+%while_string
+AST2Ccode
+AST_CheckCommonInOutArgs
+AST_CheckLastFunc
+AST_CheckLineLength
+AST_CheckPrecSpecifier
+AST_DisplayStack
+AST_ExtractNameAndScope
+AST_GetASTFile
+AST_GetFuncallPrm
+AST_GetPrecAndLhsArg
+AST_HandleEOL
+AST_HandleEndFor
+AST_HandleEndGenFun
+AST_HandleEndProgram
+AST_HandleEndWhile
+AST_HandleFor
+AST_HandleForStatem
+AST_HandleHeader
+AST_HandleIfElse
+AST_HandleWhileExpr
+AST_HandleWhileStatem
+AST_ParseEqualStruct
+AST_ParseFuncallStruct
+AST_ParseIfExprStruct
+AST_ParseOperStruct
+AST_PopASTStack
+AST_PushASTStack
+AST_ReadASTHeader
+AST_ReadEqualRhsNames
+GenOutArgNames
+Operator2FunName
+SciFile2ASTFile
+_comment_string
+_cste_string
+_equal_string
+_for_string
+_funcall_string
+_ifthenel_string
+_ifthenelse_string
+_operatio_string
+_operation_string
+_program_p
+_program_string
+_variable_string
+_while_string
+objectlist2string
diff --git a/2.3-1/macros/ASTManagement/objectlist2string.sci b/2.3-1/macros/ASTManagement/objectlist2string.sci
new file mode 100644
index 00000000..26a38962
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/objectlist2string.sci
@@ -0,0 +1,13 @@
+function txt=objectlist2string(L)
+//auxiliary function for conversion of a list of objects
+//into a string vector
+ txt=[];
+ for o=L,
+ if type(o)==15 then //EOL case
+ txt=[txt;'<'+o(1)+'>'],
+ else
+ txt=[txt; string(o)],
+ end
+ end
+ if txt==[] then txt='<empty>',end
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_FinalizeCode.sci b/2.3-1/macros/CCodeGeneration/C_FinalizeCode.sci
new file mode 100644
index 00000000..33a1d791
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_FinalizeCode.sci
@@ -0,0 +1,116 @@
+function C_FinalizeCode(FileInfo,SharedInfo)
+// function C_FinalizeCode(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// --- Load File Info Structure. ---
+load(FileInfoDatFile,'FileInfo');
+
+// --- Load Shared Info Structure. ---
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+
+CPass2FileName = FileInfo.Funct(SharedInfo.NextSCIFunNumber).CPass2FileName;
+FinalCFileName = FileInfo.Funct(SharedInfo.NextSCIFunNumber).FinalCFileName;
+Pass1HeaderFileName = FileInfo.Funct(SharedInfo.NextSCIFunNumber).Pass1HeaderFileName;
+FinalHeaderFileName = FileInfo.Funct(SharedInfo.NextSCIFunNumber).FinalHeaderFileName;
+// #RNU_RES_B
+PrintStringInfo('Generating the final C code in:'+FinalCFileName,...
+ FileInfo.Funct(SharedInfo.NextSCIFunNumber).ReportFileName,'file','y');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ---------------------------------
+// --- Finalize the header file. ---
+// ---------------------------------
+if(SharedInfo.OpenCVUsed)
+ PrintStringInfo('#include ""cvcore.hpp""',Pass1HeaderFileName,'file','y');
+ PrintStringInfo('#include ""int_cvcore.hpp""',Pass1HeaderFileName,'file','y');
+ PrintStringInfo('#include ""cvhighgui.hpp""',Pass1HeaderFileName,'file','y');
+ PrintStringInfo('#include ""int_cvhighgui.hpp""',Pass1HeaderFileName,'file','y');
+ PrintStringInfo('#include ""cvimgproc.hpp""',Pass1HeaderFileName,'file','y');
+ PrintStringInfo('#include ""int_cvimgproc.hpp""',Pass1HeaderFileName,'file','y');
+end
+PrintStringInfo('/*',Pass1HeaderFileName,'file','y');
+PrintStringInfo('** ---------------------------- ',Pass1HeaderFileName,'file','y');
+PrintStringInfo('** --- End USER2C Includes. --- ',Pass1HeaderFileName,'file','y');
+PrintStringInfo('** ---------------------------- ',Pass1HeaderFileName,'file','y');
+PrintStringInfo('*/',Pass1HeaderFileName,'file','y');
+//PrintStringInfo('#ifdef __cplusplus',Pass1HeaderFileName,'file','y');
+//PrintStringInfo('} /* extern ""C"" */',Pass1HeaderFileName,'file','y');
+//PrintStringInfo('#endif',Pass1HeaderFileName,'file','y');
+PrintStringInfo('#endif',Pass1HeaderFileName,'file','y');
+// -------------------------------------
+// --- End Finalize the header file. ---
+// -------------------------------------
+
+[tmphdrpath,tmphdrname,tmphdrext] = fileparts(Pass1HeaderFileName);
+
+// #RNU_RES_B
+// --------------------------------------------------
+// --- Copy the C code into the C code directory. ---
+// --------------------------------------------------
+// #RNU_RES_E
+C_SCI2CHeader(FinalCFileName);
+PrintStringInfo('/*',FinalCFileName,'file','y');
+PrintStringInfo('** ----------------- ',FinalCFileName,'file','y');
+PrintStringInfo('** --- Includes. --- ',FinalCFileName,'file','y');
+PrintStringInfo('** ----------------- ',FinalCFileName,'file','y');
+PrintStringInfo('*/',FinalCFileName,'file','y');
+PrintStringInfo('#include ""'+tmphdrname+tmphdrext+'""',...
+ FinalCFileName,'file','y');
+//If current file is main C file, include header files corresponding to ODE
+//functions, if any.
+if(SharedInfo.NextSCIFunName == SharedInfo.SCIMainFunName)
+ if(size(SharedInfo.Includelist) <> 0) //check if list is empty
+ //If not empty, add those header files here.
+ for cntlist = 1:size(SharedInfo.Includelist)
+ PrintStringInfo('#include ""'+SharedInfo.Includelist(cntlist)+'.h""',...
+ FinalCFileName,'file','y');
+ end
+
+ end
+end
+
+//If current function contains ODEs, add gsl/gsl_errno.h.
+if (mtlb_strcmp(part(SharedInfo.CurrentFunInfo.CFunctionName,1:5),'odefn') == %T)
+ PrintStringInfo('#include <gsl/gsl_errno.h>',...
+ FinalCFileName,'file','y');
+end
+PrintStringInfo('/*',FinalCFileName,'file','y');
+PrintStringInfo('** --------------------- ',FinalCFileName,'file','y');
+PrintStringInfo('** --- End Includes. --- ',FinalCFileName,'file','y');
+PrintStringInfo('** --------------------- ',FinalCFileName,'file','y');
+PrintStringInfo('*/',FinalCFileName,'file','y');
+PrintStringInfo(' ',FinalCFileName,'file','y');
+PrintStringInfo(' ',FinalCFileName,'file','y');
+PrintStringInfo(' ',FinalCFileName,'file','y');
+SCI2Ccopyfile(CPass2FileName,...
+ FinalCFileName,'append');
+SCI2Ccopyfile(Pass1HeaderFileName,...
+ FinalHeaderFileName,'append');
+
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_ForExpression.sci b/2.3-1/macros/CCodeGeneration/C_ForExpression.sci
new file mode 100644
index 00000000..4e75c066
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_ForExpression.sci
@@ -0,0 +1,217 @@
+function SharedInfo = C_ForExpression(FileInfo,SharedInfo)
+// function SharedInfo = C_ForExpression(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// Get function for a generic SCI2C table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 15-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+CPass1ForProlFileName = FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level);
+CDeclarationFileName = FileInfo.Funct(nxtscifunnumber).CDeclarationFileName;
+CPass1ForEpilFileName = FileInfo.Funct(nxtscifunnumber).CPass1ForEpilFileName(SharedInfo.For.Level);
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Generating C code***',ReportFileName,'file','y','n');
+// #RNU_RES_E
+CCall ='';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ----------------------------
+// --- Generate the C call. ---
+// ----------------------------
+
+// -------------------------
+// --- Manage all cases. ---
+// -------------------------
+if (SharedInfo.ForExpr.AssignmentFun == SharedInfo.CFunId.EqScalar)
+ // #RNU_RES_B
+ // ---------------
+ // --- Case 1. ---
+ // ---------------
+ PrintStringInfo(' Handling For Expression with scalar equal.',ReportFileName,'file','y');
+
+ // for a = 10 or for a = sin(tan(b)) where b is scalar:
+ // In this case non for loops are needed.--> Do nothing!
+
+ // -------------------------------------------------------------------------------------
+ // --- Generate Prologue and Epilogue -> Copy the first N-1 lines of the for.c code. ---
+ // -------------------------------------------------------------------------------------
+ // #RNU_RES_E
+ [C_Strings,NumCStrings] = File2StringArray(FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level));
+ C_Strings = stripblanks(C_Strings);
+
+ for cntstr = 1:NumCStrings
+ // #RNU_RES_B
+ // Prologue
+ // #RNU_RES_E
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+C_Strings(cntstr),CPass1FileName,'file','y');
+ end
+ // #RNU_RES_B
+ // Epilogue
+ // #RNU_RES_E
+ PrintStringInfo(' ',CPass1ForEpilFileName ,'file','y');
+
+elseif (SharedInfo.ForExpr.AssignmentFun == SharedInfo.CFunId.OpColon)
+ // #RNU_RES_B
+ // ---------------
+ // --- Case 2. ---
+ // ---------------
+ // for a = 1:10
+ PrintStringInfo(' Handling For Expression with OpColon.',ReportFileName,'file','y');
+ // #RNU_RES_E
+
+ // #RNU_RES_B
+ // -------------------------------------------------------------------------------------
+ // --- Generate Prologue and Epilogue -> Copy the first N-1 lines of the for.c code. ---
+ // -------------------------------------------------------------------------------------
+ // #RNU_RES_E
+ [C_Strings,NumCStrings] = File2StringArray(FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level));
+ C_Strings = stripblanks(C_Strings);
+ for cntstr = 1:NumCStrings
+ // #RNU_RES_B
+ // Prologue
+ // #RNU_RES_E
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+C_Strings(cntstr),CPass1FileName,'file','y','n');
+ // #RNU_RES_B
+ // Epilogue
+ // #RNU_RES_E
+ if (length(C_Strings(cntstr)) == 0)
+ C_Strings(cntstr) = ' '; // RNU for Bruno: If I don't do that I get a PrintStringInfo error related to mputstr.
+ // Function not defined for given argument type(s),
+ // check arguments or define function %0_mputstr for overloading.
+ end
+ PrintStringInfo(string(C_Strings(cntstr)),CPass1ForEpilFileName ,'file','y','n');
+ end
+ // #RNU_RES_B
+ // ----------------------------------------
+ // --- Insert "}" in the epilogue file. ---
+ // ----------------------------------------
+ // #RNU_RES_E
+ PrintStringInfo('}',CPass1ForEpilFileName ,'file','y');
+
+ // #RNU_RES_B
+ // ------------------------------
+ // --- Insert for expression. ---
+ // ------------------------------
+ // #RNU_RES_E
+ CCall = 'for('+SharedInfo.ForExpr.SclValCntArg.Name+' = '+SharedInfo.ForExpr.OpColonInfoIn1+'; '...
+ +SharedInfo.ForExpr.SclValCntArg.Name+' <= '+SharedInfo.ForExpr.OpColonInfoIn3+'; '...
+ +SharedInfo.ForExpr.SclValCntArg.Name+' += '+SharedInfo.ForExpr.OpColonInfoIn2+')';
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+ // #RNU_RES_B
+ // -------------------
+ // --- Insert "{". ---
+ // -------------------
+ // #RNU_RES_E
+ CCall = '{';
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+ // ---------------------------------
+ // --- Update Indentation Level. ---
+ // ---------------------------------
+ SharedInfo.NIndent = SharedInfo.NIndent + 1;
+
+elseif (SharedInfo.ForExpr.AssignmentFun == SharedInfo.CFunId.EqMatrix | ...
+ SharedInfo.ForExpr.AssignmentFun == SharedInfo.CFunId.GenFunMtx)
+ // #RNU_RES_B
+ // ---------------
+ // --- Case 3. ---
+ // ---------------
+ PrintStringInfo(' Handling For Expression with Matrix Equal/Function.',ReportFileName,'file','y');
+
+ // for cnt = TMP where TMP is a matrix
+ // for cnt = fun(TMP) where TMP is a matrix
+ // Conversion is performed as shown in the following example:
+ // init code for temp vars --> copy all for.c code (up to last-1 line) into C pass1 code.
+ // intSCI2C __forcnt1; --> declaration file.
+ // replace in the last C line CntArg.Name with '__TmpVal'+CntArg.Name
+ // for (__forcnt1 = 0; __forcnt1 < CntArg.Size(1)*CntArg.Size(2); __forcnt1++)
+ // {
+ // CntArg.Name = '__TmpVal'+CntArg.Name[__forcnt1];
+ // init code for temp vars
+ // }
+
+ // -------------------------------------------------------------------------------------
+ // --- Generate Prologue and Epilogue -> Copy the first N-1 lines of the for.c code. ---
+ // -------------------------------------------------------------------------------------
+ // #RNU_RES_E
+ [C_Strings,NumCStrings] = File2StringArray(FileInfo.Funct(nxtscifunnumber).CPass1ForProlFileName(SharedInfo.For.Level));
+ C_Strings = stripblanks(C_Strings);
+
+ for cntstr = 1:NumCStrings
+ // Prologue
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+C_Strings(cntstr),CPass1FileName,'file','y');
+ // Epilogue
+ PrintStringInfo(C_Strings(cntstr),CPass1ForEpilFileName ,'file','y');
+ end
+
+ // #RNU_RES_B
+ // ----------------------------------------
+ // --- Insert "}" in the epilogue file. ---
+ // ----------------------------------------
+ // #RNU_RES_E
+ PrintStringInfo('}',CPass1ForEpilFileName ,'file','y');
+
+ // ------------------------------
+ // --- Insert for expression. ---
+ // ------------------------------
+ CCall = 'for('+SharedInfo.ForExpr.IntCntArg.Name+' = 0'+'; '+...
+ SharedInfo.ForExpr.IntCntArg.Name+' < '+SharedInfo.ForExpr.MtxValCntArg.Size(1)+'*'+SharedInfo.ForExpr.MtxValCntArg.Size(2)+'; '+...
+ SharedInfo.ForExpr.IntCntArg.Name+'++)';
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+ // -------------------
+ // --- Insert "{". ---
+ // -------------------
+ CCall = '{';
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+ // ---------------------------------
+ // --- Update Indentation Level. ---
+ // ---------------------------------
+ SharedInfo.NIndent = SharedInfo.NIndent + 1;
+
+ // #RNU_RES_B
+ // ----------------------------------------------------
+ // --- Add code to read the element of CntArg.Name. ---
+ // ----------------------------------------------------
+ // #RNU_RES_E
+ CCall = SharedInfo.ForExpr.SclValCntArg.Name+' = '+SharedInfo.ForExpr.MtxValCntArg.Name+'['+SharedInfo.ForExpr.IntCntArg.Name+'];';
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+else
+ // ---------------
+ // --- Case 5. ---
+ // ---------------
+
+ SCI2Cerror('Could not manage the for expression.');
+end
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_Funcall.sci b/2.3-1/macros/CCodeGeneration/C_Funcall.sci
new file mode 100644
index 00000000..450ad088
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_Funcall.sci
@@ -0,0 +1,467 @@
+function SharedInfo = C_Funcall(FunInfo,FileInfo,SharedInfo,FlagCall)
+// function SharedInfo = C_Funcall(FunInfo,FileInfo,SharedInfo,FlagCall)
+// -----------------------------------------------------------------
+// Get function for a generic SCI2C table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),4,4);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+CPass1FreeFileName = FileInfo.Funct(nxtscifunnumber).CPass1FreeFileName;
+HeaderFileName = FileInfo.Funct(nxtscifunnumber).Pass1HeaderFileName;
+CDeclarationFileName = FileInfo.Funct(nxtscifunnumber).CDeclarationFileName;
+CInitVarsFileName = FileInfo.Funct(nxtscifunnumber).CInitVarsFileName;
+IndentLevel = SharedInfo.NIndent;
+CCall = '';
+Target = SharedInfo.Target;
+// --- Extract Function Info. ---
+FunctionName = FunInfo.SCIFunctionName;
+CFunName = FunInfo.CFunctionName;
+InArg = FunInfo.InArg;
+NInArg = FunInfo.NInArg;
+OutArg = FunInfo.OutArg;
+NOutArg = FunInfo.NOutArg;
+PosFirstOutScalar = FunInfo.PosFirstOutScalar;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Generating C code***',ReportFileName,'file','y');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+// --------------------------------------------------
+// --- Manage anticipated exit from the function. ---
+// --------------------------------------------------
+if (SharedInfo.SkipNextFun > 0)
+ SharedInfo.SkipNextFun = SharedInfo.SkipNextFun - 1;
+ return;
+end
+
+// #RNU_RES_B
+// Exit if the function is a precision specifier and the corresponding flag is 1.
+// #RNU_RES_E
+if ((sum(mtlb_strcmp(FunctionName,SharedInfo.Annotations.DataPrec)) > 0) & ...
+ (SharedInfo.SkipNextPrec == 1))
+ // #RNU_RES_B
+ PrintStringInfo(' Skipping code generating because already generated in the previous function.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ SharedInfo.SkipNextPrec = SharedInfo.SkipNextPrec - 1;
+ return;
+end
+
+// #RNU_RES_B
+// Exit if the function is OpEqual and the corresponding skip flag is enabled.
+// #RNU_RES_E
+if ((mtlb_strcmp(FunctionName,'OpEqual')) & ...
+ (SharedInfo.SkipNextEqual == 1))
+ // #RNU_RES_B
+ PrintStringInfo(' Skipping code generating because already generated in the previous function.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ SharedInfo.SkipNextEqual = SharedInfo.SkipNextEqual - 1;
+ return;
+end
+
+// #BJ
+// size should be managed as other functions
+// otherwise size(4) will lead to a C variable __4Size reference
+// wich will never exists
+
+// #RNU_RES_B
+// Exit if the function is size.
+// #RNU_RES_E
+// if ((mtlb_strcmp(FunctionName,'size')))
+// // #RNU_RES_B
+// PrintStringInfo(' Anticipated exit for the size function.',ReportFileName,'file','y');
+// // #RNU_RES_E
+// CCall ='';
+// if (NInArg == 1)
+// if (NOutArg == 1)
+// CCall = CCall+OutArg(1).Name+'[0] = __'+InArg(1).Name+'Size[0];';
+// // #RNU_RES_B
+// PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+// // #RNU_RES_E
+// PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+
+// CCall ='';
+// CCall = CCall+OutArg(1).Name+'[1] = __'+InArg(1).Name+'Size[1];';
+// // #RNU_RES_B
+// PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+// // #RNU_RES_E
+// PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+// elseif (NOutArg == 2)
+// CCall = CCall+OutArg(1).Name+' = __'+InArg(1).Name+'Size[0];';
+// // #RNU_RES_B
+// PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+// // #RNU_RES_E
+// PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+
+// CCall ='';
+// CCall = CCall+OutArg(2).Name+' = __'+InArg(1).Name+'Size[1];';
+// // #RNU_RES_B
+// PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+// // #RNU_RES_E
+// PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+// else
+// SCI2Cerror('Don''t know how to manage size function with number of output args different from 1 and 2.');
+// end
+// elseif (NInArg == 2)
+// if (NOutArg == 1)
+// if (InArg(2).Value == 1)
+// CCall = CCall+OutArg(1).Name+' = __'+InArg(1).Name+'Size[0];';
+// // #RNU_RES_B
+// PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+// // #RNU_RES_E
+// PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+// elseif (InArg(2).Value == 2)
+// CCall = CCall+OutArg(1).Name+' = __'+InArg(1).Name+'Size[1];';
+// // #RNU_RES_B
+// PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+// // #RNU_RES_E
+// PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+// else
+// SCI2Cerror('Not known the value of the second input arg for the size function.');
+// end
+// else
+// SCI2Cerror('Don''t know how to manage size function with number of output args different from 1.');
+// end
+// else
+// SCI2Cerror('Don''t know how to manage size function with number of input args different from 1 and 2.');
+// end
+// return;
+// end
+// ------------------------------------------------------
+// --- End Manage anticipated exit from the function. ---
+// ------------------------------------------------------
+
+// #RNU_RES_B
+// ------------------------------------------------------------
+// --- Allocate memory and size array for output arguments. ---
+// ------------------------------------------------------------
+// #RNU_RES_E
+if (FlagCall == 1)
+// #RNU_RES_B
+//RNU qui va tolto tutto una volta sicuri che la memallocout puo' essere fatta dentro la st_insoutarg
+// C_MemAllocOutTempVars(OutArg,NOutArg,CPass1FileName,CPass1FreeFileName,IndentLevel,ReportFileName);
+// #RNU_RES_E
+end
+
+// ----------------------------
+// --- Generate the C call. ---
+// ----------------------------
+CCall ='';
+if(mtlb_strcmp(part(CFunName,1:9),'PI_thread') == %T)
+//Functions that are to be ru in separate thread in case of RPi target,
+//need to have specific name which is PI_THREAD(functionname)
+
+CCall = CCall + 'PI_THREAD('+CFunName+')'
+else
+
+ if (FunInfo.CFunctionName == SharedInfo.CMainFunName)
+ if (FlagCall == 1)
+ error(9999, 'main function called in a source code!');
+ else
+ CCall =CCall+'int ';
+ end
+ elseif ((mtlb_strcmp(part(CFunName,1:5),'odefn') == %T))
+ //Return type of function containing ODEs must be int.
+ CCall = CCall + 'int ';
+ else
+ if (PosFirstOutScalar >= 1)
+ if (FlagCall == 1)
+ CCall = CCall+OutArg(PosFirstOutScalar).Name+' = ';
+ else
+ CCall = CCall+C_Type(OutArg(PosFirstOutScalar).Type)+' ';
+ end
+ else
+ if (FlagCall == 0)
+ CCall = CCall+'void ';
+ end
+ end
+ end
+
+
+ // FIXME : Wrap library function call with prefixed name
+
+ //if CFunName == "main"
+ CCall = CCall + CFunName + "(";
+ //else
+ // CCall = CCall+"SCI2C("+CFunName+")(";
+ //end
+
+ // #RNU_RES_B
+ PrintStringInfo(' C call after output scalar args check: '+CCall,ReportFileName,'file','y');
+ // #RNU_RES_E
+ clear counterin
+ if(mtlb_strcmp(part(CFunName,1:5),'odefn') == %F)
+ for counterin = 1:NInArg
+
+ if (InArg(counterin).Type == 'g' & InArg(counterin).Scope == 'String')
+ TmpInArgName = '""'+InArg(counterin).Name+'""';
+ elseif (InArg(counterin).Type == 'z' & (InArg(counterin).Scope == 'Number'))
+ TmpInArgName = 'DoubleComplex('+SCI2Cstring(real(InArg(counterin).Value))+','+SCI2Cstring(imag(InArg(counterin).Value))+')';
+ elseif (InArg(counterin).Type == 'c' & (InArg(counterin).Scope == 'Number'))
+ TmpInArgName = 'FloatComplex('+SCI2Cstring(real(InArg(counterin).Value))+','+SCI2Cstring(imag(InArg(counterin).Value))+')';
+ else
+ TmpInArgName = InArg(counterin).Name;
+ end
+ TmpInArgType = C_Type(InArg(counterin).Type);
+
+ //if (FunctionName == 'OpEqual')
+ // TmpInArgSizeVar = '__'+OutArg(counterin).Name+'Size';
+ // else
+ TmpInArgSizeVar = '__'+InArg(counterin).Name+'Size';
+ //end
+
+ if (InArg(counterin).Dimension == 0)
+ if (FlagCall == 0)
+ CCall = CCall+TmpInArgType+' ';
+ end
+ CCall = CCall+TmpInArgName+',';
+ else
+ if (FlagCall == 0)
+ CCall = CCall+TmpInArgType+'* '+TmpInArgName+', int* __'+TmpInArgName+'Size,';
+ else
+ CCall = CCall+TmpInArgName+', '+TmpInArgSizeVar+',';
+ end
+ end
+ end
+ else
+ //If current function contains 'odefn' at the beginning, then it contains
+ //differnetial equations and its function call need to be differnt than
+ //other function call. GSL library being used for solving ODEs, requires
+ //function containing odes in specific format which is differnt than generated
+ //above.
+ for counterin = 1:NInArg
+
+ //if((NInArg == 4 & counterin <> 3) | (NInArg == 5 & counterin <> 4)) //Skip third argument
+ if (InArg(counterin).Type == 'g' & InArg(counterin).Scope == 'String')
+ TmpInArgName = '""'+InArg(counterin).Name+'""';
+ elseif (InArg(counterin).Type == 'z' & (InArg(counterin).Scope == 'Number'))
+ TmpInArgName = 'DoubleComplex('+SCI2Cstring(real(InArg(counterin).Value))+','+SCI2Cstring(imag(InArg(counterin).Value))+')';
+ elseif (InArg(counterin).Type == 'c' & (InArg(counterin).Scope == 'Number'))
+ TmpInArgName = 'FloatComplex('+SCI2Cstring(real(InArg(counterin).Value))+','+SCI2Cstring(imag(InArg(counterin).Value))+')';
+ else
+ TmpInArgName = InArg(counterin).Name;
+ end
+
+ TmpInArgType = C_Type(InArg(counterin).Type);
+
+ //if (FunctionName == 'OpEqual')
+ // TmpInArgSizeVar = '__'+OutArg(counterin).Name+'Size';
+ // else
+ TmpInArgSizeVar = '__'+InArg(counterin).Name+'Size';
+ //end
+
+ if (InArg(counterin).Dimension == 0)
+ if (FlagCall == 0)
+ CCall = CCall+TmpInArgType+' ';
+ end
+ CCall = CCall+TmpInArgName+',';
+ else
+ if (FlagCall == 0)
+ CCall = CCall+TmpInArgType+'* '+TmpInArgName+', ';//int* __'+TmpInArgName+'Size,';
+ else
+ CCall = CCall+TmpInArgName+', ';//+TmpInArgSizeVar+',';
+ end
+ end
+ //end
+ end
+
+ end
+
+ // #RNU_RES_B
+ PrintStringInfo(' C call after input args analysis: '+CCall,ReportFileName,'file','y');
+ // #RNU_RES_E
+ for counterout = 1:NOutArg
+ TmpOutArgName = OutArg(counterout).Name;
+ TmpOutArgType = C_Type(OutArg(counterout).Type);
+ if (counterout == PosFirstOutScalar)
+ if (FlagCall == 0)
+ // #RNU_RES_B
+ // --- Write in the declaration file the returned output scalar (if any). ---
+ // #RNU_RES_E
+ outscalardeclaration = TmpOutArgType+' '+TmpOutArgName+';';
+ // #RNU_RES_B
+ PrintStringInfo(outscalardeclaration,ReportFileName,'file','y');
+ // #RNU_RES_E
+ PrintStringInfo(C_IndentBlanks(1)+outscalardeclaration,CDeclarationFileName,'file','y');
+ PrintStringInfo(' ',CDeclarationFileName,'file','y');
+ end
+ else
+ if (OutArg(counterout).Dimension == 0)
+ if (FlagCall == 0)
+ // --- Write in the declaration file the returned output scalar (if any). ---
+ outscalardeclaration = TmpOutArgType+' '+TmpOutArgName+';';
+ PrintStringInfo(outscalardeclaration,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+outscalardeclaration,CDeclarationFileName,'file','y');
+ PrintStringInfo(' ',CDeclarationFileName,'file','y');
+ CCall = CCall+TmpOutArgType+'* __ptr'+TmpOutArgName+', ';
+ else
+ CCall = CCall+'&'+TmpOutArgName+', ';//NUT: verifica se ci vuole l'&
+ end
+ else
+ if (FlagCall == 0)
+ CCall = CCall+TmpOutArgType+'* '+TmpOutArgName+',';
+ if (OutArg(counterout).FindLike == 1)
+ CCall = CCall+'int* __'+TmpOutArgName+'Size'+',';
+ end
+ // #RNU_RES_B
+ //NUT prova a sostituire le variabili strutture con variabili dichiarate all'inizio del codice.
+ // --- Declare the size of the output arguments. ---
+ // #RNU_RES_E
+ outscalardeclaration = 'int __'+TmpOutArgName+'Size[2];';
+ PrintStringInfo(outscalardeclaration,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+outscalardeclaration,CDeclarationFileName,'file','y');
+ outscalardeclaration = '__'+TmpOutArgName+'Size[0] = '+(OutArg(counterout).Size(1))+';';
+ PrintStringInfo(outscalardeclaration,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+outscalardeclaration,CInitVarsFileName,'file','y');
+ outscalardeclaration = '__'+TmpOutArgName+'Size[1] = '+(OutArg(counterout).Size(2))+';';
+ PrintStringInfo(outscalardeclaration,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+outscalardeclaration,CInitVarsFileName,'file','y');
+ PrintStringInfo(' ',CInitVarsFileName,'file','y');
+ else
+ CCall = CCall+OutArg(counterout).Name+',';
+ if (OutArg(counterout).FindLike == 1)
+ CCall = CCall+'(int* ) __'+TmpOutArgName+'Size'+',';
+ end
+ end
+ end
+ end
+ end
+ PrintStringInfo(' C call after output args analysis: '+CCall,ReportFileName,'file','y');
+ // Remove the last " " and ","
+ if (part(CCall,length(CCall):length(CCall)) == ' ')
+ CCall = part(CCall,1:length(CCall)-1);
+ end
+ if (part(CCall,length(CCall):length(CCall)) == ',')
+ CCall = part(CCall,1:length(CCall)-1);
+ end
+
+ //__ysize is added to input arguments at last to comply with form required by GSL
+ if(mtlb_strcmp(part(CFunName,1:5),'odefn') == %T)
+ CCall = CCall + ', int* '+TmpInArgSizeVar;
+ end
+
+ CCall = CCall+')';
+ if (FlagCall == 1)
+ CCall = CCall+';';
+ end
+
+end
+//NUT: la parte di generazione della C call va inserita in una funzione a parte.
+//NUT: tale funzione deve avere anche uno switch che consenta di generare differenti versioni
+//NUT: delle chiamate C in accordo con la libreria disponibile, fermo restando che
+//NUT: e' sempre possibile fornire la lista delle macro.
+if mtlb_strcmp(FunctionName,'return')
+ // Here I introduce the pointer assignment for output scalar arguments.
+ for cntout = 1:SharedInfo.CurrentFunInfo.NOutArg
+ if (cntout ~= SharedInfo.CurrentFunInfo.PosFirstOutScalar & ...
+ SharedInfo.CurrentFunInfo.OutArg(cntout).Dimension == 0)
+ CCall = '';
+ CCall = CCall+'*__ptr'+SharedInfo.CurrentFunInfo.OutArg(cntout).Name+' = '+...
+ SharedInfo.CurrentFunInfo.OutArg(cntout).Name+';';
+ PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+ end
+ end
+ // --- Then I free the memory dinamically allocated. ---
+ // ----------------------------
+ // --- Handle Free section. ---
+ // ----------------------------
+ PrintStringInfo(C_IndentBlanks(1)+'/*',CPass1FreeFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+'** ------------------------- ',CPass1FreeFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+'** --- End Free Section. --- ',CPass1FreeFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+'** ------------------------- ',CPass1FreeFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+'*/',CPass1FreeFileName,'file','y');
+ PrintStringInfo(' ',CPass1FreeFileName,'file','y');
+ SCI2Ccopyfile(CPass1FreeFileName,...
+ CPass1FileName,'append');
+ // --------------------------------
+ // --- End Handle Free section. ---
+ // --------------------------------
+
+ // --- Then I introduce the return to the first scalar output arguments. ---
+ CCall = '';
+ // #RNU_RES_B
+ //NUT: non capisco questo skip a questo punto.
+ //NUT: perche' la return finale la sto gestendo nella AST_HandleEndProgram.
+ PrintStringInfo(' return function of the AST is skipped.',ReportFileName,'file','y');
+ //RN provo a non skippare e a mettere la return.
+ // #RNU_RES_E
+
+ if (SharedInfo.CurrentFunInfo.CFunctionName == SharedInfo.CMainFunName)
+ CCall = CCall+'return(0);';
+ elseif (mtlb_strcmp(part(SharedInfo.CurrentFunInfo.CFunctionName,1:5),'odefn') == %T)
+ //For GSL library, function containing ODEs must return GSL_SUCCESS
+ CCall = CCall + 'return GSL_SUCCESS;'
+ else
+ if (SharedInfo.CurrentFunInfo.PosFirstOutScalar > 0)
+ CCall = CCall+'return('+SharedInfo.CurrentFunInfo.OutArg(SharedInfo.CurrentFunInfo.PosFirstOutScalar).Name+');'
+ end
+ end
+ // #RNU_RES_B
+ PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+ // #RNU_RES_E
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+else
+ // #RNU_RES_B
+ PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+ // #RNU_RES_E
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+ if (FlagCall == 0)
+ // Add prototype to the header file
+
+ C_InitHeader(CCall+';',HeaderFileName,SharedInfo.Sci2CLibMainHeaderFName,Target,SharedInfo.OpenCVUsed);
+
+ // Add { at the beginning of the function.
+ PrintStringInfo(' {',ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+'{',CPass1FileName,'file','y');
+
+ end
+end
+
+// #RNU_RES_B
+// Add in the C code the new size of the output argument when SCI2Cresize function is called.
+// #RNU_RES_E
+if (FunctionName == 'SCI2Cresize')
+ // #RNU_RES_B
+ PrintStringInfo(' Found SCI2Cresize -> Changing the size of the output argument.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ OutArgName = OutArg(counterout).Name;
+ tmpcode = '__'+OutArgName+'Size[0]='+OutArg(counterout).Size(1)+';';
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+tmpcode,CPass1FileName,'file','y');
+ // #RNU_RES_B
+ PrintStringInfo(' '+tmpcode,ReportFileName,'file','y');
+ // #RNU_RES_E
+ tmpcode = '__'+OutArgName+'Size[1]='+OutArg(counterout).Size(2)+';';
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+tmpcode,CPass1FileName,'file','y');
+ // #RNU_RES_B
+ PrintStringInfo(' '+tmpcode,ReportFileName,'file','y');
+ // #RNU_RES_E
+end
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_GenDeclarations.sci b/2.3-1/macros/CCodeGeneration/C_GenDeclarations.sci
new file mode 100644
index 00000000..41ba3a91
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenDeclarations.sci
@@ -0,0 +1,135 @@
+function Cdeclaration = C_GenDeclarations(ArgStruct,CDeclarationFileName,IndentLevel,ReportFileName,FlagExt,ResizeApproach)
+// function Cdeclaration = C_GenDeclarations(ArgStruct,CDeclarationFileName,IndentLevel,ReportFileName,FlagExt,ResizeApproach)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+// 10-Jun-2008 -- Raffaele Nutricato: adapted to work with realloc function.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// Generate C corresponding declaration given some information in ArgStruct
+//
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+ SCI2CNInArgCheck(argn(2),6,6);
+// #RNU_RES_B
+//NUT: ilnome di questa funzione va cambiato perche' le dichiarazioni le fanno anche i for e i while.
+
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Generating C declaration***',ReportFileName,'file','y');
+// #RNU_RES_E
+
+Cdeclaration = '';
+if (ArgStruct.Dimension > 0)
+ if (FlagExt == 1)
+ Cdeclaration(1) = 'extern ';
+ Cdeclaration(2) = 'extern ';
+ else
+ Cdeclaration(1) = '';
+ Cdeclaration(2) = '';
+ end
+// #RNU_RES_B
+//NUT: vedi Mem_Alloc_Out per maggiori info sulla rimozione della temp nella if
+// if ((ArgStruct.Scope=='Temp') | (ArgStruct.FindLike == -1) | (isnum(ArgStruct.Size(1))==%F) | (isnum(ArgStruct.Size(2))==%F))
+// #RNU_RES_E
+ if (ArgStruct.Type=='g')
+// if (isnan(ArgStruct.Value) )
+ if ((isnum(ArgStruct.Size(1))==%F) | (isnum(ArgStruct.Size(2))==%F) )
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+...
+ ' * '+ArgStruct.Name+';';
+ else
+ if ((FlagExt == 1) | (isnan(ArgStruct.Value)))
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+...
+ ' '+ArgStruct.Name+'['+ArgStruct.Size(1)+'*'+ArgStruct.Size(2)+'];';
+ else
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+...
+ ' '+ArgStruct.Name+'['+ArgStruct.Size(1)+'*'+ArgStruct.Size(2)+'] = {'+ArgStruct.Value+'};';
+ end
+ end
+ Cdeclaration(2) = Cdeclaration(2)+C_Type('i')+' __'+ArgStruct.Name+'Size[2] = {'+ArgStruct.Size(1)+','+ArgStruct.Size(2)+'};';
+ elseif ((ArgStruct.FindLike == -1) | ...
+ (isnum(ArgStruct.Size(1))==%F) | (isnum(ArgStruct.Size(2))==%F) | ...
+ (ResizeApproach=='REALLOC_ALL_RESIZE_ALL' & ArgStruct.Type~='g'))
+// #RNU_RES_B
+//RNU sulle stringhe non ho ancora deciso se applicare la realloc.
+// Generate only the pointer that will be used by the malloc function.
+// #RNU_RES_E
+ if (FlagExt == 1)
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+'* '+...
+ ArgStruct.Name+';';
+ else
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+'* '+...
+ ArgStruct.Name+' = NULL;';
+ end
+// Declare the Size array
+ Cdeclaration(2) = Cdeclaration(2)+C_Type('i')+' __'+ArgStruct.Name+'Size[2];';
+ else
+// Declare the array with its size.
+ computedSize = ArgStruct.Size(1);
+ computedSizeLength = size(ArgStruct.Size, '*');
+ computedSizeField = ArgStruct.Size(1);
+ for sizeIterator = 2:computedSizeLength;
+ computedSize = computedSize + ' * ' + ArgStruct.Size(sizeIterator);
+ computedSizeField = computedSizeField + ', ' + ArgStruct.Size(sizeIterator);
+ end
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+' '+ArgStruct.Name+'['+computedSize+'];';
+ Cdeclaration(2) = Cdeclaration(2)+C_Type('i')+' __'+ArgStruct.Name+'Size['+string(computedSizeLength)+']';
+ if (FlagExt <> 1)
+ Cdeclaration(2) = Cdeclaration(2)+' = {'+computedSizeField+'};';
+ end
+ Cdeclaration(2) = Cdeclaration(2)+';';
+ end
+else
+ if (ArgStruct.Type == 'fn')
+ //do nothing. This is a function name. Will be declared in header file.
+ else
+ if (FlagExt == 1)
+ Cdeclaration(1) = 'extern ';
+ else
+ Cdeclaration(1) = '';
+ end
+ Cdeclaration(1) = Cdeclaration(1)+C_Type(ArgStruct.Type)+' '+ArgStruct.Name;
+ if (~isnan(ArgStruct.Value) & (FlagExt == 0))
+ if isreal(ArgStruct.Value)
+ Cdeclaration(1) = Cdeclaration(1)+' = '+SCI2Cstring(ArgStruct.Value);
+ else
+ if (ArgStruct.Type == 'z')
+ Cdeclaration(1) = Cdeclaration(1)+' = DoubleComplex('+SCI2Cstring(real(ArgStruct.Value))+','+SCI2Cstring(imag(ArgStruct.Value))+')';
+ else
+ Cdeclaration(1) = Cdeclaration(1)+' = FloatComplex('+SCI2Cstring(real(ArgStruct.Value))+','+SCI2Cstring(imag(ArgStruct.Value))+')';
+ end
+ end
+ end
+ Cdeclaration(1) = Cdeclaration(1)+';';
+ end
+end
+
+
+// --------------------------------------------
+// --- Write C declaration into the C file. ---
+// --------------------------------------------
+for cntdecl = 1:size(Cdeclaration, '*')
+ PrintStringInfo(' '+Cdeclaration(cntdecl),ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+Cdeclaration(cntdecl),CDeclarationFileName,'file','y');
+end
+
+PrintStringInfo(' Writing C declaration in: '+CDeclarationFileName,ReportFileName,'file','y');
+PrintStringInfo(' ',CDeclarationFileName,'file','y');
+
+endfunction
+// #RNU_RES_B
+//NUT: dove sta il controllo che verifica se dopo aver dichiarato una local A[10] essa viene utilizzata
+//NUT: per memorizzare un A = sin(B) dove B[11]??
+// #RNU_RES_E
diff --git a/2.3-1/macros/CCodeGeneration/C_GenerateFunName.sci b/2.3-1/macros/CCodeGeneration/C_GenerateFunName.sci
new file mode 100644
index 00000000..a1373ded
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateFunName.sci
@@ -0,0 +1,56 @@
+function CFunName = C_GenerateFunName(FunctionName,InArg,NInArg,OutArg,NOutArg)
+// function CFunName = C_GenerateFunName(FunctionName,InArg,NInArg,OutArg,NOutArg)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+// 11-Nov-2007 -- Raffaele Nutricato: changed naming rule.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+CFunName = '';
+if((IsAVRSupportFunction(FunctionName)) | (IsRPISupportFunction(FunctionName)) | ...
+ (mtlb_strcmp(part(FunctionName,1:5),'odefn') == %T) |...
+ (mtlb_strcmp(part(FunctionName,1:9),'PI_thread') == %T)| ...
+ (mtlb_strcmp(part(FunctionName,1:4),'ISR_') == %T))
+//If current function is an AVR or RPi function, then function name can be just
+//plain function name without any input/output arguments types
+//Slimilarly for functions conataining ode functions and functions to be called in
+//separate thread in RPi
+ CFunName = CFunName+FunctionName;
+
+else
+ for tmpcnt = 1:NInArg
+ if (InArg(tmpcnt).Dimension == 1)
+ CFunName = CFunName+InArg(tmpcnt).Type+'2';
+ else
+ CFunName = CFunName+InArg(tmpcnt).Type+SCI2Cstring(InArg(tmpcnt).Dimension);
+ end
+ end
+
+ CFunName = CFunName+FunctionName;
+
+ for tmpcnt = 1:NOutArg
+ if (OutArg(tmpcnt).Dimension == 1)
+ CFunName = CFunName+OutArg(tmpcnt).Type+'2';
+ else
+ CFunName = CFunName+OutArg(tmpcnt).Type+SCI2Cstring(OutArg(tmpcnt).Dimension);
+ end
+ end
+
+end
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_GenerateLaunchScript.sci b/2.3-1/macros/CCodeGeneration/C_GenerateLaunchScript.sci
new file mode 100644
index 00000000..027d4c70
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateLaunchScript.sci
@@ -0,0 +1,86 @@
+function C_GenerateLaunchScript(OutDir,ListSCI2CInputPrmFiles)
+// function C_GenerateLaunchScript(OutDir,ListSCI2CInputPrmFiles)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Generate the script that can be used to compile all the regression
+// tests and to run them and finally to write results in the report
+// file.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+ScriptFileName = fullfile(OutDir,'LaunchRegressionTests.rc');
+NTranslations = size(ListSCI2CInputPrmFiles,1);
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+SCI2Cmdelete(ScriptFileName);
+PrintStringInfo('#! /bin/bash ',ScriptFileName,'file','y');
+PrintStringInfo(' ',ScriptFileName,'file','y');
+PrintStringInfo('maindir=$PWD',ScriptFileName,'file','y');
+PrintStringInfo(' ',ScriptFileName,'file','y');
+PrintStringInfo('INTIALIZE()',ScriptFileName,'file','y');
+PrintStringInfo('{',ScriptFileName,'file','y');
+PrintStringInfo(' reportfile=$maindir/RegressionTestsReport.txt',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""#############'+'#################"" > $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""REPORT OF THE REGRESSION TESTS"" > $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""#############'+'#################"" > $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""Author: Raffaele Nutricato"" > $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""Copyright 2008 Raffaele Nutricato"" > $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" > $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' cd $maindir ',ScriptFileName,'file','y');
+PrintStringInfo('}',ScriptFileName,'file','y');
+PrintStringInfo(' ',ScriptFileName,'file','y');
+PrintStringInfo('EXECUTE()',ScriptFileName,'file','y');
+PrintStringInfo('{',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""xxxxxxxxxxxxxx'+'xxxxxxxxxxxxxxxxxx'+'xxxxxxxxxxxx""',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""xxxxxxxxxxxxxx'+'xxxxxxxxxxxxxxxxxxxxxxx'+'xxxxxxx"" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo $testname ',ScriptFileName,'file','y');
+PrintStringInfo(' echo $testname >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""xxxxxxxxxxxxxxx'+'xxxxxxxxxxxxxxxxx'+'xxxxxxxxxxxx"" ',ScriptFileName,'file','y');
+PrintStringInfo(' echo ""xxxxxxxxxxxxxxxx'+'xxxxxxxxxxxxxxxxxxxx'+'xxxxxxxx"" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' cd $testname/C_Code',ScriptFileName,'file','y');
+PrintStringInfo(' make >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' cd $maindir',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo(' echo "" "" >> $reportfile',ScriptFileName,'file','y');
+PrintStringInfo('}',ScriptFileName,'file','y');
+PrintStringInfo(' ',ScriptFileName,'file','y');
+PrintStringInfo('#############'+'##############',ScriptFileName,'file','y');
+PrintStringInfo('### ADD YOUR TESTS HERE ###',ScriptFileName,'file','y');
+PrintStringInfo('##############'+'#############',ScriptFileName,'file','y');
+PrintStringInfo('INTIALIZE',ScriptFileName,'file','y');
+PrintStringInfo(' ',ScriptFileName,'file','y');
+
+for cnttransl = 1:NTranslations
+ [testpath,tmpname,tmpext] = fileparts(ListSCI2CInputPrmFiles(cnttransl));
+ testpath = ConvertPathMat2C(testpath,'cygwin');
+ PrintStringInfo('testname=""'+testpath+'""',ScriptFileName,'file','y');
+ PrintStringInfo('EXECUTE $testname',ScriptFileName,'file','y');
+ PrintStringInfo(' ',ScriptFileName,'file','y');
+end
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci b/2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci
new file mode 100644
index 00000000..7dfb4da4
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci
@@ -0,0 +1,146 @@
+//Removed 4 lines code from end that causes ot generate the Makefile.mak file that is not needed with cygwin
+//Changed at line 52
+function C_GenerateMakefile(FileInfo,SharedInfo)
+// function C_GenerateMakefile(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// Generate the makefile.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+PrintStepInfo('Generating Builder '+FileInfo.MakefileFilename,...
+ FileInfo.GeneralReport,'both');
+
+target = SharedInfo.Target;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+PrintStringInfo('# SCI2C Makefile',FileInfo.MakefileFilename,'file','y');
+PrintStringInfo('# hArtes EU Project.',FileInfo.MakefileFilename,'file','y');
+PrintStringInfo('# Authors: PoliBa & Inria',FileInfo.MakefileFilename,'file','y');
+PrintStringInfo('# -----------------------',FileInfo.MakefileFilename,'file','y');
+PrintStringInfo('# --- USER PARAMETERS ---',FileInfo.MakefileFilename,'file','y');
+PrintStringInfo('# -----------------------',FileInfo.MakefileFilename,'file','y');
+PrintStringInfo('# --- DIRECTORIES AND FILES ---',FileInfo.MakefileFilename,'file','y');
+
+makecsrcdir = pathconvert('src/c', %f, %f, 'u');
+makehsrcdir = pathconvert('includes', %f, %f, 'u');
+makeisrcdir = pathconvert('interfaces', %f, %f, 'u');
+makelibdir = pathconvert('libraries', %f, %f, 'u');
+makesci2cdir = FileInfo.CStyleOutCCCodeDir;
+
+
+PrintStringInfo('CSRCDIR = '+makecsrcdir,FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('HSRCDIR = '+makehsrcdir,FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('ISRCDIR = '+makeisrcdir,FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('LIBDIR = '+makelibdir,FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('SCI2CDIR = .',FileInfo.MakefileFilename,'file','y','y');
+
+if getos() == 'Windows' then
+
+ // Compiler definition
+ PrintStringInfo('CC = gcc',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CXX = g++',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CFLAGS = -Wall -pedantic -g -I $(HSRCDIR) -I $(ISRCDIR)',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CXXFLAGS = -Wall -pedantic -g -I $(HSRCDIR) -I $(ISRCDIR)',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS = -L./ -lblasplus -llapack -lm',FileInfo.MakefileFilename,'file','y','y'); //Added -L./ and -lblasplus(previously it was -lblas)
+
+else
+ if (target == 'RPi')
+ PrintStringInfo('CC = arm-linux-gnueabihf-gcc ',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CXX = arm-linux-gnueabihf-g++ ',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CFLAGS = -Wall -pedantic -g -I $(HSRCDIR) -I $(ISRCDIR) -L $(LIBDIR)',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CXXFLAGS = -Wall -pedantic -g -I $(HSRCDIR) -I $(ISRCDIR) -L $(LIBDIR)',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS = -llapack -lrefblas -lgfortran -lwiringPi',FileInfo.MakefileFilename,'file','y','y');
+ else
+ PrintStringInfo('CC = gcc',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CXX = g++',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CFLAGS = -Wall -pedantic -g -I $(HSRCDIR) -I $(ISRCDIR) -L $(LIBDIR)',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('CXXFLAGS = -Wall -pedantic -g -I $(HSRCDIR) -I $(ISRCDIR) -L $(LIBDIR)',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS = -lblas -llapack -lm ',FileInfo.MakefileFilename,'file','y','y');
+ end
+ if(SharedInfo.OpenCVUsed == %T)
+ PrintStringInfo('LDFLAGS += -lopencv_calib3d -lopencv_contrib -lopencv_features2d -lopencv_flann -lopencv_gpu',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS += -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS += -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS += -lopencv_ts -lopencv_video -lopencv_videostab -lopencv_core -lrt -lpthread -lm -ldl', FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('LDFLAGS += -lIlmImf -ljpeg -ljasper -ltiff -lpng -lzlib -lstdc++',FileInfo.MakefileFilename,'file','y','y');
+ end
+end
+//If ode function is used, add libgsl.
+if(size(SharedInfo.Includelist) <> 0)
+ if((mtlb_strcmp(part(SharedInfo.Includelist(1),1:5),'odefn') == %T))
+ PrintStringInfo('LDFLAGS += -lgsl',FileInfo.MakefileFilename,'file','y','y');
+ end
+end
+
+// Binary definition
+PrintStringInfo('EXEFILENAME = '+SharedInfo.SCIMainFunName,FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('EXEFILE = $(SCI2CDIR)/$(EXEFILENAME)', FileInfo.MakefileFilename,'file','y','y');
+
+// Sources
+//Check the output format selected and insert files according to it
+PrintStringInfo('SRC = $(wildcard $(CSRCDIR)/*.c)', FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('SRCC = $(wildcard $(CSRCDIR)/*.cpp)', FileInfo.MakefileFilename,'file','y','y');
+
+// Objects
+PrintStringInfo('OBJ = $(SRC:.c=.o)', FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('OBJC = $(SRCC:.cpp=.o)', FileInfo.MakefileFilename,'file','y','y');
+
+// Rules
+PrintStringInfo('# ---------------',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('# --- TARGETS ---',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('# ---------------',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('compileexecute: $(OBJ) $(OBJC)',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""============================""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""Generation of the executable""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""============================""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t$(CXX) $(CFLAGS) $(OBJ) $(OBJC) *.c $(LDFLAGS) -o $(EXEFILE)',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',FileInfo.MakefileFilename,'file','y','y');
+if(target == "StandAlone")
+ PrintStringInfo('\t@echo ""==============""',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('\t@echo ""Executing code""',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('\t@echo ""==============""',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('\t$(EXEFILE)',FileInfo.MakefileFilename,'file','y','y');
+end
+PrintStringInfo('clean:',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""=============================""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""Removing only exe + obj files""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""=============================""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\trm -rf $(EXEFILE)',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\trm -rf $(OBJ)',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\trm -rf $(OBJC)',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',FileInfo.MakefileFilename,'file','y','y');
+
+PrintStringInfo('distclean: clean',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""==========================""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""Removing only the exe file""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""==========================""',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\trm -rf $(EXEFILE)',FileInfo.MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',FileInfo.MakefileFilename,'file','y','y');
+
+
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_GenerateMakefile_msvc.sci b/2.3-1/macros/CCodeGeneration/C_GenerateMakefile_msvc.sci
new file mode 100644
index 00000000..00ffb63c
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateMakefile_msvc.sci
@@ -0,0 +1,131 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - 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
+//
+//
+
+function C_GenerateMakefile_msvc(FileInfo, SharedInfo)
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+MakefileFilename = FileInfo.MakefileFilename + '.mak';
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+PrintStepInfo('Generating Builder '+MakefileFilename,...
+ FileInfo.GeneralReport,'both');
+
+target = SharedInfo.Target;
+
+PrintStringInfo('# SCI2C Makefile (Visual Studio 2008)',MakefileFilename,'file','y','y');
+PrintStringInfo('# hArtes EU Project.',MakefileFilename,'file','y','y');
+PrintStringInfo('# Authors: PoliBa & Inria & DIGITEO',MakefileFilename,'file','y','y');
+PrintStringInfo('# -----------------------',MakefileFilename,'file','y','y');
+PrintStringInfo('# --- USER PARAMETERS ---',MakefileFilename,'file','y','y');
+PrintStringInfo('# -----------------------',MakefileFilename,'file','y','y');
+PrintStringInfo('# --- DIRECTORIES AND FILES ---',MakefileFilename,'file','y','y');
+
+makecsrcdir = pathconvert('src/c', %f, %f, 'u');
+makehsrcdir = pathconvert('includes', %f, %f, 'u');
+makeisrcdir = pathconvert('interfaces', %f, %f, 'u');
+makelibdir = pathconvert('libraries', %f, %f, 'u');
+makesci2cdir = FileInfo.CStyleOutCCCodeDir;
+
+PrintStringInfo('CSRCDIR = '+makecsrcdir,MakefileFilename,'file','y','y');
+PrintStringInfo('HSRCDIR = '+makehsrcdir,MakefileFilename,'file','y','y');
+PrintStringInfo('ISRCDIR = '+makeisrcdir,MakefileFilename,'file','y','y');
+PrintStringInfo('SCI2CDIR = .',MakefileFilename,'file','y','y');
+
+PrintStringInfo('DIR_OBJ=Release',MakefileFilename,'file','y','y');
+//PrintStringInfo('LAPACK_LIB =$(SCI2CDIR)/libraries/lapack.lib',MakefileFilename,'file','y','y');
+//PrintStringInfo('BLAS_LIB = $(SCI2CDIR)/libraries/blasplus.lib',MakefileFilename,'file','y','y');
+PrintStringInfo('LIB_PATH = $(SCI2CDIR)/libraries',MakefileFilename,'file','y','y');
+PrintStringInfo('LIBS = lapack.lib blasplus.lib',MakefileFilename,'file','y','y');
+PrintStringInfo('LIBS = $(LIBS) kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib',MakefileFilename,'file','y','y');
+PrintStringInfo('CC = cl',MakefileFilename,'file','y','y');
+PrintStringInfo('LINKER = link',MakefileFilename,'file','y','y');
+PrintStringInfo('LINKER_OPTIMISATION_MODE=/RELEASE ',MakefileFilename,'file','y','y');
+PrintStringInfo('CC__OPTIMISATION_MODE=-Z7 -O2 -MT',MakefileFilename,'file','y','y');
+PrintStringInfo('CC_OPTIONS = $(CC_COMMON) -W3 -Gd $(CC__OPTIMISATION_MODE) /Fo""$(DIR_OBJ)/"" /Fd""$(DIR_OBJ)/"" ',MakefileFilename,'file','y','y');
+PrintStringInfo('CFLAGS = $(CC_OPTIONS) -I""$(HSRCDIR)"" -I""$(ISRCDIR)"" /EHsc /TP ',MakefileFilename,'file','y','y');
+PrintStringInfo('EXEFILENAME = '+SharedInfo.SCIMainFunName,MakefileFilename,'file','y','y');
+PrintStringInfo('EXEFILE = $(SCI2CDIR)\\$(EXEFILENAME)',MakefileFilename,'file','y','y');
+PrintStringInfo('MAIN_SRC = $(SCI2CDIR)/main.c',MakefileFilename,'file','y','y');
+
+if(SharedInfo.OpenCVUsed == %T)
+ PrintStringInfo('LIBS = $(LIBS) opencv_calib3d2413.lib opencv_contrib2413.lib opencv_features2d2413.lib',MakefileFilename,'file','y','y');
+ PrintStringInfo('LIBS = $(LIBS) opencv_flann2413.lib opencv_gpu2413.lib opencv_highgui2413.lib ',MakefileFilename,'file','y','y');
+ PrintStringInfo('LIBS = $(LIBS) opencv_imgproc2413.lib opencv_legacy2413.lib opencv_ml2413.lib opencv_nonfree2413.lib',MakefileFilename,'file','y','y');
+ PrintStringInfo('LIBS = $(LIBS) opencv_objdetect2413.lib opencv_ocl2413.lib opencv_photo2413.lib opencv_stitching2413.lib',MakefileFilename,'file','y','y');
+ PrintStringInfo('LIBS = $(LIBS) opencv_superres2413.lib opencv_ts2413.lib opencv_video2413.lib opencv_videostab2413.lib opencv_core2413.lib',MakefileFilename,'file','y','y');
+ PrintStringInfo('LIBS = $(LIBS) IlmImf.lib libjpeg.lib libjasper.lib libtiff.lib libpng.lib zlib.lib',MakefileFilename,'file','y','y');
+end
+// Sources
+PrintStringInfo('SRC = $(CSRCDIR)/*.c', MakefileFilename,'file','y','y');
+PrintStringInfo('SRCC = $(CSRCDIR)/*.cpp', MakefileFilename,'file','y','y');
+
+//PrintStringInfo('SRC = \\', MakefileFilename,'file','y','y');
+//allSources = getAllSources();
+//nbSources = size(allSources);
+//for i = 1:(nbSources(1) - 1)
+// [tmppath,tmpfile,tmpext] = fileparts(allSources(i));
+// PrintStringInfo(' $(CSRCDIR)/'+tmpfile+tmpext+' \\', MakefileFilename,'file','y','y');
+//end
+//[tmppath,tmpfile,tmpext] = fileparts(allSources(nbSources(1)));
+//PrintStringInfo(' $(CSRCDIR)/'+tmpfile+tmpext, MakefileFilename,'file','y','y');
+
+PrintStringInfo('OBJ = $(SRC:.c=.obj) $(MAIN_SRC:.c=.obj)',MakefileFilename,'file','y','y');
+PrintStringInfo('OBJC = $(SRCC:.cpp=.o)', MakefileFilename,'file','y','y');
+PrintStringInfo('# ---------------',MakefileFilename,'file','y','y');
+PrintStringInfo('# --- TARGETS ---',MakefileFilename,'file','y','y');
+PrintStringInfo('# ---------------',MakefileFilename,'file','y','y');
+PrintStringInfo('compileexecute: ',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""============================""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""Generation of the executable""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""============================""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-IF NOT EXIST $(DIR_OBJ) mkdir $(DIR_OBJ)',MakefileFilename,'file','y','y');
+PrintStringInfo('\t$(CC) $(CFLAGS) $(SRC) $(SRCC) $(MAIN_SRC) /link /LIBPATH:$(LIB_PATH) $(LIBS) /out:$(EXEFILE).exe',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',MakefileFilename,'file','y','y');
+if(target == "StandAlone")
+ PrintStringInfo('\t@echo ""==============""',MakefileFilename,'file','y','y');
+ PrintStringInfo('\t@echo ""Executing code""',MakefileFilename,'file','y','y');
+ PrintStringInfo('\t@echo ""==============""',MakefileFilename,'file','y','y');
+ PrintStringInfo('\t$(EXEFILE).exe',MakefileFilename,'file','y','y');
+end
+PrintStringInfo('clean:',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""=============================""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""Removing only exe + obj files""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""=============================""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del ""$(DIR_OBJ)\*.obj""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-rmdir ""$(DIR_OBJ)""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).exe',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).exp',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).lib',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).pdb',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).ilk',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',MakefileFilename,'file','y','y');
+PrintStringInfo('distclean: clean',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""==========================""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""Removing only the exe file""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo ""==========================""',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).exe',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).exp',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).lib',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).pdb',MakefileFilename,'file','y','y');
+PrintStringInfo('\t-del $(EXEFILE).ilk',MakefileFilename,'file','y','y');
+PrintStringInfo('\t@echo "" ""',MakefileFilename,'file','y','y');
+
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/CCodeGeneration/C_GenerateMkfle_arduino.sci b/2.3-1/macros/CCodeGeneration/C_GenerateMkfle_arduino.sci
new file mode 100644
index 00000000..c66b9764
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateMkfle_arduino.sci
@@ -0,0 +1,24 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+// 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
+// Author: Yash Pratap Singh Tomar
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+
+function C_GenerateMkfle_arduino(FileInfo,SharedInfo)
+
+ PrintStringInfo('ARDUINO_DIR = /usr/share/arduino',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('ARDMK_DIR = /usr/share/arduino',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('AVR_TOOLS_DIR = /usr',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('BOARD_TAG = ' + SharedInfo.Board_name ,FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('USER_LIB_PATH = ../',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('ARDUINO_LIBS = ../src/c ../includes ../interfaces ../ Wire',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('ARDUINO_PORT = /dev/ttyACM0',FileInfo.MakefileFilename,'file','y','y');
+ PrintStringInfo('include /usr/share/arduino/Arduino.mk',FileInfo.MakefileFilename,'file','y','y');
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_GenerateSCI2CHeader.sci b/2.3-1/macros/CCodeGeneration/C_GenerateSCI2CHeader.sci
new file mode 100644
index 00000000..bced7243
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateSCI2CHeader.sci
@@ -0,0 +1,21 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+function C_GenerateSCI2CHeader(OutputPath, FunctionPrefix)
+ FileName = OutputPath+"scilab2c.h"
+ C_SCI2CHeader(FileName);
+ PrintStringInfo('#ifndef __SCILAB2C_H__',FileName,'file','y');
+ PrintStringInfo('#define __SCILAB2C_H__',FileName,'file','y');
+ PrintStringInfo('',FileName,'file','y');
+ PrintStringInfo('#define SCI2C(Name) '+FunctionPrefix+'_##Name',FileName,'file','y');
+ PrintStringInfo('',FileName,'file','y');
+ PrintStringInfo('#endif /* !__SCILAB2C_H__ */',FileName,'file','y');
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_IfElseBlocks.sci b/2.3-1/macros/CCodeGeneration/C_IfElseBlocks.sci
new file mode 100644
index 00000000..92ac94f7
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_IfElseBlocks.sci
@@ -0,0 +1,68 @@
+function SharedInfo = C_IfElseBlocks(FileInfo,SharedInfo,InOutStatements)
+// function SharedInfo = C_IfElseBlocks(FileInfo,SharedInfo,InOutStatements)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+
+IndentLevel = SharedInfo.NIndent;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo(' Generate ""{"" or ""}"" code for if/else statement',ReportFileName,'file','y');
+// #RNU_RES_E
+CCall = '';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// -----------------------------------------------------
+// --- Generate the C call/Update indentation level. ---
+// -----------------------------------------------------
+// #RNU_RES_E
+if (InOutStatements=='in')
+ CCall = CCall+'{';
+ PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+ IndentLevel = IndentLevel + 1;
+elseif (InOutStatements=='out')
+ CCall = CCall+'}';
+ IndentLevel = IndentLevel - 1;
+ PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+CCall,CPass1FileName,'file','y');
+else
+ error(9999, 'Unknown setting for InOutStatements: '+InOutStatements+'.');
+end
+
+// #RNU_RES_B
+PrintStringInfo(' Updating indentation level to:'+string(IndentLevel),ReportFileName,'file','y');
+// #RNU_RES_E
+SharedInfo.NIndent = IndentLevel;
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_IfExpression.sci b/2.3-1/macros/CCodeGeneration/C_IfExpression.sci
new file mode 100644
index 00000000..48a05383
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_IfExpression.sci
@@ -0,0 +1,91 @@
+function SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo)
+// function SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// --- Check NIfCondArg value. ---
+if ((NIfCondArg ~= 1) & (ASTIfExpType~='else'))
+ error(9999, 'Cannot manage ""if/elseif"" with a number of condition variables not equal to 1.');
+end
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Generating C code***',ReportFileName,'file','y');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// --------------------------------------------
+// --- Generate the C name of the function. ---
+// --------------------------------------------
+if (ASTIfExpType=='if')
+ CFunName = 'if';
+elseif (ASTIfExpType=='elseif')
+ CFunName = 'if';
+elseif (ASTIfExpType=='else')
+ CFunName = 'else';
+else
+ error(9999, 'Unknown ASTIfExpType ""'+ASTIfExpType+'"".');
+end
+
+// ----------------------------
+// --- Generate the C call. ---
+// ----------------------------
+if SCI2Cstrncmps1size(ASTIfExpType,'else')
+ // #RNU_RES_B
+ // before opening a new C block, closes the previous one.
+ // #RNU_RES_E
+ SharedInfo = C_IfElseBlocks(FileInfo,SharedInfo,'out');
+end
+
+CCall ='';
+CCall = CCall+CFunName;
+if (ASTIfExpType~='else')
+ CCall = CCall+'('+IfCondArg(1)+')';
+end
+PrintStringInfo(' '+CCall,ReportFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+SharedInfo = C_IfElseBlocks(FileInfo,SharedInfo,'in');
+
+// #RNU_RES_B
+// ---------------------------------
+// --- Update counter nested if. ---
+// ---------------------------------
+// #RNU_RES_E
+if (ASTIfExpType=='elseif')
+ // #RNU_RES_B
+ // every elseif statement a new } is required.
+ // #RNU_RES_E
+ SharedInfo.CountNestedIf = SharedInfo.CountNestedIf + 1;
+end
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_IndentBlanks.sci b/2.3-1/macros/CCodeGeneration/C_IndentBlanks.sci
new file mode 100644
index 00000000..9304aefb
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_IndentBlanks.sci
@@ -0,0 +1,31 @@
+function OutBlanksString = C_IndentBlanks(IndentLevel)
+// function OutBlanksString = C_IndentBlanks(IndentLevel)
+// -----------------------------------------------------------------
+// Delete function for a generic SCI2C table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+OutBlanksString = '';
+BlanksPerLevel = ' ';
+for cntind = 1:IndentLevel
+ OutBlanksString = OutBlanksString + BlanksPerLevel;
+end
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_InitHeader.sci b/2.3-1/macros/CCodeGeneration/C_InitHeader.sci
new file mode 100644
index 00000000..97dcf0d6
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_InitHeader.sci
@@ -0,0 +1,77 @@
+function C_InitHeader(C_Prototype,HeaderFileName,Sci2CLibMainHeaderFName,Target,OpenCVUsed)
+// function C_InitHeader(C_Prototype,HeaderFileName,Sci2CLibMainHeaderFName)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+C_SCI2CHeader(HeaderFileName);
+[tmppath,tmpfname,tmpextension]=fileparts(HeaderFileName);
+PrintStringInfo('#ifndef '+tmpfname+'_h',HeaderFileName,'file','y');
+PrintStringInfo('#define '+tmpfname+'_h',HeaderFileName,'file','y');
+PrintStringInfo('/*',HeaderFileName,'file','y');
+PrintStringInfo('** ------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('** ----- Target ------ ',HeaderFileName,'file','y');
+PrintStringInfo('** ------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('*/',HeaderFileName,'file','y');
+PrintStringInfo('#define ' + Target + '1 1' ,HeaderFileName,'file','y');
+PrintStringInfo('/*',HeaderFileName,'file','y');
+PrintStringInfo('** ----------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('** --- SCI2C Includes. --- ',HeaderFileName,'file','y');
+PrintStringInfo('** ----------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('*/',HeaderFileName,'file','y');
+PrintStringInfo('#include ""'+Sci2CLibMainHeaderFName+'""',HeaderFileName,'file','y');
+PrintStringInfo('/*',HeaderFileName,'file','y');
+PrintStringInfo('** --------------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('** --- End SCI2C Includes. --- ',HeaderFileName,'file','y');
+PrintStringInfo('** --------------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('*/',HeaderFileName,'file','y');
+PrintStringInfo(' ',HeaderFileName,'file','y');
+PrintStringInfo(' ',HeaderFileName,'file','y');
+//PrintStringInfo('#ifdef __cplusplus',HeaderFileName,'file','y');
+//PrintStringInfo('extern ""C"" {',HeaderFileName,'file','y');
+//PrintStringInfo('#endif',HeaderFileName,'file','y');
+PrintStringInfo('/*',HeaderFileName,'file','y');
+PrintStringInfo('** ------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('** --- Prototypes. --- ',HeaderFileName,'file','y');
+PrintStringInfo('** ------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('*/',HeaderFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(0)+C_Prototype,HeaderFileName,'file','y');
+PrintStringInfo('/*',HeaderFileName,'file','y');
+PrintStringInfo('** ----------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('** --- End Prototypes. --- ',HeaderFileName,'file','y');
+PrintStringInfo('** ----------------------- ',HeaderFileName,'file','y');
+PrintStringInfo('*/',HeaderFileName,'file','y');
+PrintStringInfo(' ',HeaderFileName,'file','y');
+PrintStringInfo(' ',HeaderFileName,'file','y');
+PrintStringInfo('/*',HeaderFileName,'file','y');
+PrintStringInfo('** ------------------------ ',HeaderFileName,'file','y');
+PrintStringInfo('** --- USER2C Includes. --- ',HeaderFileName,'file','y');
+PrintStringInfo('** ------------------------ ',HeaderFileName,'file','y');
+PrintStringInfo('*/',HeaderFileName,'file','y');
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_MemAllocOutTempVars.sci b/2.3-1/macros/CCodeGeneration/C_MemAllocOutTempVars.sci
new file mode 100644
index 00000000..dedcfd33
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_MemAllocOutTempVars.sci
@@ -0,0 +1,64 @@
+function C_MemAllocOutTempVars(OutArg,NOutArg,CPass1FileName,CPass1FreeFileName,IndentLevel,ReportFileName,ResizeApproach)
+// function C_MemAllocOutTempVars(OutArg,NOutArg,CPass1FileName,CPass1FreeFileName,IndentLevel,ReportFileName,ResizeApproach)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+// 10-Jun-2008 -- Raffaele Nutricato: replaced malloc with realloc.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),7,7);
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Allocating memory for temp variables***',ReportFileName,'file','y');
+// #RNU_RES_E
+
+// #RNU_RES_B
+// --- Allocate memory and size array for output arguments. ---
+// #RNU_RES_E
+for counterout = 1:NOutArg
+ if (OutArg(counterout).Dimension > 0)
+ // #RNU_RES_B
+ // if ((OutArg(counterout).Scope == 'Temp') | (OutArg(counterout).FindLike == -1) | ...
+ // (isnum(OutArg(counterout).Size(1))==%F) | (isnum(OutArg(counterout).Size(2))==%F))
+ //NUT: qui forse ci vuole un check per verificare se per caso la variabile e' globale e non se ne conosce la size numerica.
+ //NUT infatti. Per ora se la size numerica assumo che la variabile globale e' da reallocare. Secondo me occorre aggiungere
+ //NUT un campo negli argomenti che specifichi la presenza di realloc da fare.
+ //NUT: ho tolto il check sulle temp perche' se una temp ha size numerica non voglio fare malloc.
+ //RNU sulle stringhe ancora non applico realloc
+ // #RNU_RES_E
+ if ((OutArg(counterout).FindLike == -1) | ...
+ (isnum(OutArg(counterout).Size(1))==%F) | (isnum(OutArg(counterout).Size(2))==%F)| ...
+ (ResizeApproach=='REALLOC_ALL_RESIZE_ALL' & OutArg(counterout).Type ~= 'g'))
+ OutArgName = OutArg(counterout).Name;
+ tmpcode = '__'+OutArgName+'Size[0]='+OutArg(counterout).Size(1)+';';
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+tmpcode,CPass1FileName,'file','y');
+ PrintStringInfo(' '+tmpcode,ReportFileName,'file','y');
+ tmpcode = '__'+OutArgName+'Size[1]='+OutArg(counterout).Size(2)+';';
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+tmpcode,CPass1FileName,'file','y');
+ PrintStringInfo(' '+tmpcode,ReportFileName,'file','y');
+ //a->val = (double *) malloc(nnz * sizeof(double));
+ // numbers = (int*) realloc (numbers, count * sizeof(int));
+ tmpcode = OutArgName+' = ('+C_Type(OutArg(counterout).Type)+'*) realloc('+OutArgName+',('+OutArg(counterout).Size(1)+')*('+OutArg(counterout).Size(2)+')*sizeof('+C_Type(OutArg(counterout).Type)+'));';
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+tmpcode,CPass1FileName,'file','y');
+ PrintStringInfo(' '+tmpcode,ReportFileName,'file','y');
+ PrintStringInfo(C_IndentBlanks(1)+'free('+OutArgName+');',CPass1FreeFileName,'file','y');
+ end
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_SCI2CHeader.sci b/2.3-1/macros/CCodeGeneration/C_SCI2CHeader.sci
new file mode 100644
index 00000000..42c25a4c
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_SCI2CHeader.sci
@@ -0,0 +1,46 @@
+function C_SCI2CHeader(FileName)
+// function C_SCI2CHeader(FileName)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 21-Dec-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+PrintStringInfo('/*',FileName,'file','y');
+PrintStringInfo('** ************************************************',FileName,'file','y');
+PrintStringInfo('** This file has been generated using',FileName,'file','y');
+PrintStringInfo('** Scilab2C (Version '+getScilab2cVersion()+')',FileName,'file','y');
+PrintStringInfo('**',FileName,'file','y');
+PrintStringInfo('** Please visit following links for more informations:',FileName,'file','y');
+PrintStringInfo('** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c',FileName,'file','y');
+PrintStringInfo('** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/',FileName,'file','y');
+PrintStringInfo('** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/',FileName,'file','y');
+PrintStringInfo('** ************************************************',FileName,'file','y');
+PrintStringInfo('*/',FileName,'file','y');
+PrintStringInfo(' ',FileName,'file','y');
+PrintStringInfo(' ',FileName,'file','y');
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_Type.sci b/2.3-1/macros/CCodeGeneration/C_Type.sci
new file mode 100644
index 00000000..d296c5c6
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_Type.sci
@@ -0,0 +1,66 @@
+function OutC_Type = C_Type(ArgType)
+// function OutC_Type = C_Type(ArgType)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+if (ArgType == 's')
+ OutC_Type = 'float';
+elseif (ArgType == 'd')
+ OutC_Type = 'double';
+elseif (ArgType == 'c')
+ OutC_Type = 'floatComplex';
+elseif (ArgType == 'z')
+ OutC_Type = 'doubleComplex';
+elseif (ArgType == 'i')
+ OutC_Type = 'int';
+elseif (ArgType == 'g')
+ OutC_Type = 'char';
+elseif (ArgType == 'f')
+ OutC_Type = 'FILE *';
+elseif (ArgType == 'u8')
+ OutC_Type = 'uint8';
+elseif (ArgType == 'i8')
+ OutC_Type = 'int8';
+elseif (ArgType == 'u16')
+ OutC_Type = 'uint16';
+elseif (ArgType == 'i16')
+ OutC_Type = 'int16';
+elseif (ArgType == 'u32')
+ OutC_Type = 'uint32';
+elseif (ArgType == 'i32')
+ OutC_Type = 'int32';
+elseif (ArgType == 'fn') //This type introduced for ODE function,
+ // as it's one of the inout argument is name of the other function
+ OutC_Type = '';
+elseif (ArgType == 'mt')
+ OutC_Type = 'Mat'
+elseif (ArgType == 'ss')
+ OutC_Type = 'double'
+ //This type is introduced for storing state space systems.
+ //It is a matrix of size (n+k)*(n+m+1), for n states, m inputs,
+ //k outputs. It stores matrices A,B,C,D and initial state in following form
+ // | A B X0 |
+ // | C D 0 |
+
+else
+ error(9999, 'Unknown Argument Type: ""'+ArgType+'"".');
+end
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci b/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci
new file mode 100644
index 00000000..edd2830e
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci
@@ -0,0 +1,93 @@
+function SharedInfo = C_WhileExpression(FileInfo,SharedInfo)
+// function SharedInfo = C_WhileExpression(FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 15-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+
+CPass1WhileProlFileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileProlFileName(SharedInfo.While.Level);
+CPass1WhileEpilFileName = FileInfo.Funct(nxtscifunnumber).CPass1WhileEpilFileName(SharedInfo.While.Level);
+CDeclarationFileName = FileInfo.Funct(nxtscifunnumber).CDeclarationFileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Generating C code***',ReportFileName,'file','y');
+// #RNU_RES_E
+CCall ='';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ----------------------------
+// --- Generate the C call. ---
+// ----------------------------
+
+// -------------------------
+// --- Manage all cases. ---
+// -------------------------
+PrintStringInfo(' Handling While Expression with OpColon.',ReportFileName,'file','y'); //NUT: sistema il commento.
+
+// -------------------------------------------------------------------------------------
+// --- Generate Prologue and Epilogue -> Copy the first N-1 lines of the for.c code. ---
+// -------------------------------------------------------------------------------------
+[C_Strings,NumCStrings] = File2StringArray(CPass1WhileProlFileName);
+C_Strings = stripblanks(C_Strings);
+for cntstr = 1:NumCStrings
+ // Prologue
+ PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+C_Strings(cntstr),CPass1FileName,'file','y','n');
+ // Epilogue
+ if (length(C_Strings(cntstr)) == 0)
+ C_Strings(cntstr) = ' '; // RNU for Bruno: If I don't do that I get a PrintStringInfo error related to mputstr.
+ // Function not defined for given argument type(s),
+ // check arguments or define function %0_mputstr for overloading.
+ end
+ PrintStringInfo(C_Strings(cntstr),CPass1WhileEpilFileName ,'file','y','n');
+end
+// ----------------------------------------
+// --- Insert "}" in the epilogue file. ---
+// ----------------------------------------
+PrintStringInfo('}',CPass1WhileEpilFileName ,'file','y');
+
+// ------------------------------
+// --- Insert for expression. ---
+// ------------------------------
+CCall = 'while('+SharedInfo.WhileExpr.CondVar+')';
+PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+// -------------------
+// --- Insert "{". ---
+// -------------------
+CCall = '{';
+PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+// ---------------------------------
+// --- Update Indentation Level. ---
+// ---------------------------------
+SharedInfo.NIndent = SharedInfo.NIndent + 1;
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/GenCFunDatFiles.sci b/2.3-1/macros/CCodeGeneration/GenCFunDatFiles.sci
new file mode 100644
index 00000000..9af858c7
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/GenCFunDatFiles.sci
@@ -0,0 +1,73 @@
+function GenCFunDatFiles(FunctionName,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,InArg,NInArg,OutArg,NOutArg,CFunName,LibTypeInfo,FunInfoDatDir)
+// function GenCFunDatFiles(FunctionName,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,InArg,NInArg,OutArg,NOutArg,CFunName,LibTypeInfo,FunInfoDatDir)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 30-Oct-2007 -- Raffaele Nutricato: Author.
+// 30-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// #RNU_RES_B
+//NUT Nella fun info posso mettere le size simboliche per out arg e non quelle numeriche
+//NUT che non usero' mai, anche perche' se un giorno decidero' di cambiare approccio e usero' funzioni
+//NUT differenti per size differenti allora dovro' cambiare anche il loro nome per distinguerle
+//NUT e di conseguenza avro' funinfo differenti.
+// #RNU_RES_E
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),11,11);
+
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// ----------------------------------------------------------
+// --- Find Position of the first output scalar argument. ---
+// ----------------------------------------------------------
+// #RNU_RES_E
+PosFirstOutScalar = 0;
+FoundOutScalar = 0;
+for counterout = 1:NOutArg
+ if (OutArg(counterout).Dimension == 0)
+ if (FoundOutScalar==0)
+ PosFirstOutScalar = counterout;
+ FoundOutScalar = 1;
+ end
+ end
+end
+
+// ------------------------------------
+// --- Update C function dat files. ---
+// ------------------------------------
+clear FunInfo
+FunInfo.SCIFunctionName = FunctionName;
+FunInfo.CFunctionName = CFunName;
+FunInfo.FunPrecSpecifier = FunPrecSpecifier;
+FunInfo.FunTypeAnnot = FunTypeAnnot;
+FunInfo.FunSizeAnnot = FunSizeAnnot;
+FunInfo.InArg = InArg;
+FunInfo.NInArg = NInArg;
+FunInfo.OutArg = OutArg;
+FunInfo.NOutArg = NOutArg;
+FunInfo.PosFirstOutScalar = PosFirstOutScalar;
+FunInfo.LibTypeInfo = LibTypeInfo;
+save(fullfile(FunInfoDatDir,CFunName+'.dat'), "FunInfo");
+clear FunInfo
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/GetClsFileName.sci b/2.3-1/macros/CCodeGeneration/GetClsFileName.sci
new file mode 100644
index 00000000..46f08201
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/GetClsFileName.sci
@@ -0,0 +1,95 @@
+function SCI2CClassFileName = GetClsFileName(FunName,FileInfo,SharedInfo)
+// function SCI2CClassFileName = GetClsFileName(FunName,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Jul-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// //NUT: verifica che il nome sia accettabile e che non
+// //NUT: occorra spezzettarla in piu funzioni.
+
+// --- Extraction of the function name and number. ---
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// --- Initialization. ---
+tmpannfilename = FunName+'.ann';
+tmpscifilename = FunName+'.sci';
+AnnFileName = '';
+ClsFileName = ''
+
+SCI2CClassSpecifier = SharedInfo.Annotations.FUNCLASS;
+FlagFoundAnnFile = 0;
+// #RNU_RES_B
+//NUT: qui e' presente la lista delle priorita' di accesso alle annotazioni.
+// #RNU_RES_E
+if SCI2Cfileexist(FileInfo.USER2CLibCAnnFun,tmpannfilename)
+ // #RNU_RES_B
+ // It is a C function of the USER2C library.
+ // #RNU_RES_E
+ FlagFoundAnnFile = 1;
+ AnnFileName = fullfile(FileInfo.USER2CLibCAnnFun,tmpannfilename);
+ SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
+ SCI2CClassFileName = fullfile(FileInfo.USER2CLibCAnnCls,SCI2CClassName+'.acls');
+elseif SCI2Cfileexist(FileInfo.USER2CLibSCIAnnFun,tmpannfilename)
+ // #RNU_RES_B
+ // It is a scilab function of the USER2C library.
+ // #RNU_RES_E
+ FlagFoundAnnFile = 1;
+ AnnFileName = fullfile(FileInfo.USER2CLibSCIAnnFun,tmpannfilename);
+ SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
+ SCI2CClassFileName = fullfile(FileInfo.USER2CLibSCIAnnCls,SCI2CClassName+'.acls');
+elseif (SCI2Cfileexist(FileInfo.SCI2CLibCAnnFun,tmpannfilename))
+ // #RNU_RES_B
+ // It is a C function of the SCI2C library.
+ // #RNU_RES_E
+ FlagFoundAnnFile = 1;
+ AnnFileName = fullfile(FileInfo.SCI2CLibCAnnFun,tmpannfilename);
+ SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
+ SCI2CClassFileName = fullfile(FileInfo.SCI2CLibCAnnCls,SCI2CClassName+'.acls');
+elseif (SCI2Cfileexist(FileInfo.SCI2CLibSCIAnnFun,tmpannfilename))
+ // #RNU_RES_B
+ // It is a scilab function of the SCI2C library.
+ // #RNU_RES_E
+ FlagFoundAnnFile = 1;
+ AnnFileName = fullfile(FileInfo.SCI2CLibSCIAnnFun,tmpannfilename);
+ SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
+ SCI2CClassFileName = fullfile(FileInfo.SCI2CLibSCIAnnCls,SCI2CClassName+'.acls');
+end
+
+if (FlagFoundAnnFile == 0)
+ [FlagFoundAnnFile,fullpathscifilename] = SCI2CFindFile(FileInfo.UserSciFilesPaths,FunName+'.sci');
+ if (FlagFoundAnnFile == 0)
+ // #RNU_RES_B
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Missing function annotation. Could not find',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: an associated .sci or .ann file for function: '+FunName,ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ // #RNU_RES_E
+ error(9999, 'SCI2CERROR: Missing function annotation. Could not find an associated .sci or .ann file for function: '+FunName);
+ end
+ AnnFileName = fullfile(FileInfo.USER2CLibSCIAnnFun,tmpannfilename);
+ SCI2CClassName = FunName;
+ SCI2CClassFileName = fullfile(FileInfo.USER2CLibSCIAnnCls,SCI2CClassName+'.acls');
+ Sci2AnnotationFile(fullpathscifilename,SCI2CClassFileName,AnnFileName,...
+ SharedInfo.Annotations.USERFUN,ReportFileName);
+end
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/GetSymbolDimension.sci b/2.3-1/macros/CCodeGeneration/GetSymbolDimension.sci
new file mode 100644
index 00000000..5828e0ae
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/GetSymbolDimension.sci
@@ -0,0 +1,68 @@
+function symboldimension = GetSymbolDimension(Field_Size)
+// function symboldimension = GetSymbolDimension(Field_Size)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Get the dimesion (0D,1D,2D) of a symbol given its size.
+//
+// Input data:
+// Field_Size: it is the Size field of the InArg or OutArg structures.
+// It is a 2-element array. N-dim array are not supported
+// in this release.
+//
+// Output data:
+// symboldimension: number specifying the dimension of the symbol.
+// 0 = scalar; 1 = column or row; 2 = matrix; 3 = hypermatrix.
+//
+// #RNU_RES_E
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+ SCI2CNInArgCheck(argn(2),1,1);
+
+// Size is expressed as an array of two strings.
+ Nelem = max(size(Field_Size));
+ if (Nelem < 2)
+ error(9999, 'The size of a symbol cannot be expressed with one or zero numbers.');
+ end
+
+ for countersize = 1:Nelem
+// #RNU_RES_B
+// Field_Type = 1; if Size is Symbol or a number > 1
+// Field_Type = 0; if Size is a number == 1
+// error if Size is 0.
+// A symbol is scalar if the sum of the Field_Type elements is zero.
+// A symbol is column or row if the sum of the Field_Type elements is one.
+// A symbol is a matrix if the sum of the Field_Type elements is > 1.
+// #RNU_RES_E
+ if (isnum(Field_Size(countersize)))
+ tmpnum = eval(Field_Size(countersize));
+ if (tmpnum == 0)
+ error(9999, 'Found a symbol that has zeros elements. 0xN or Nx0 matrices are not allowed.');
+ elseif (tmpnum == 1)
+ Field_Type(countersize) = 0;
+ else
+ Field_Type(countersize) = 1;
+ end
+ else
+ Field_Type(countersize) = 1;
+ end
+ end
+
+ // The symbol global dimension is the count of all >1 dimension.
+ symboldimension = sum(Field_Type);
+
+ if (symboldimension == 1)
+// #RNU_RES_B
+// symboldimension = 1; //NUT for this release there will not be difference between vectors and matrices.
+// #RNU_RES_E
+ symboldimension = 2;
+ end
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/GetWhileCondVariable.sci b/2.3-1/macros/CCodeGeneration/GetWhileCondVariable.sci
new file mode 100644
index 00000000..ba4c7e92
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/GetWhileCondVariable.sci
@@ -0,0 +1,72 @@
+function SharedInfo = GetWhileCondVariable(OutArg,NOutArg,FunctionName,FileInfo,SharedInfo)
+// function SharedInfo = GetWhileCondVariable(OutArg,NOutArg,FunctionName,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+//NUT: secondo me questa funzione non serve a nulla
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Checking if the current function is handling while counter variables.***',ReportFileName,'file','y');
+// #RNU_RES_E
+
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// -----------------------------------------------
+// --- Initial Check on While counter variables. ---
+// -----------------------------------------------
+// #RNU_RES_E
+if ((SharedInfo.WhileExpr.OnExec > 0) & (NOutArg==1))
+ // #RNU_RES_B
+ //NUT: se sono in una while expression devo memorizzarmi l'ultima variabile di output
+ //NUT: perche' e' quella che contiene la condizione da testare,
+ //NUT: allora io me le salvo tutte e l'ultima salvata sara' quella che andra' a finire
+ //NUT: nella while.
+ // #RNU_RES_E
+ SharedInfo.WhileExpr.CondVar = OutArg(1).Name;
+ // #RNU_RES_B
+ //if (SharedInfo.WhileExpr.AssignmentFun == 0)
+ //NUT: Test also that SharedInfo.WhileExpr.AssignmentFun because sometimes Equal are dummy!
+ //NUT: verifica se e' giusta questa mia affermazione.
+ //RNU il seguente test e' stato spostato nella AST_HandleWhileStatem.c perche'
+ //RNU: secondo me la matrice finale non e' supportata dalla while, ma while(det(M)>0)
+ //RNU: puo' essere benissimo supportato.
+ // if (OutArg.Dimension > 0)
+ // SCI2CerrorFile('Cannot manage while with matrix conditions',ReportFileName);
+ // SharedInfo.SkipNextFun = 0; //NUT verifica se serve
+ // end
+ // #RNU_RES_E
+ SharedInfo.WhileExpr.DimCondVar = OutArg(1).Dimension;
+ ///end
+end
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/JoinDeclarAndCcode.sci b/2.3-1/macros/CCodeGeneration/JoinDeclarAndCcode.sci
new file mode 100644
index 00000000..2c69f46e
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/JoinDeclarAndCcode.sci
@@ -0,0 +1,173 @@
+function JoinDeclarAndCcode(FileInfoDatFile)
+// function JoinDeclarAndCcode(FileInfoDatFile)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 07-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ---------------------
+// --- Load section. ---
+// ---------------------
+// --- Load File Info Structure. ---
+load(FileInfoDatFile,'FileInfo');
+
+// --- Load Shared Info Structure. ---
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+// -------------------------
+// --- End load section. ---
+// -------------------------
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+funnumber = SharedInfo.NextSCIFunNumber;
+
+CPass1FileName = FileInfo.Funct(funnumber).CPass1FileName;
+CPass2FileName = FileInfo.Funct(funnumber).CPass2FileName;
+CDeclarationFileName = FileInfo.Funct(funnumber).CDeclarationFileName;
+CGblDeclarFileName = FileInfo.Funct(funnumber).CGblDeclarFileName;
+CInitVarsFileName = FileInfo.Funct(funnumber).CInitVarsFileName;
+ReportFileName = FileInfo.Funct(funnumber).ReportFileName;
+
+CPass1V1FileFid = SCI2COpenFileRead(CPass1FileName);
+CDeclarationFileFid = SCI2COpenFileRead(CDeclarationFileName);
+CGblDeclarFileFid = SCI2COpenFileRead(CGblDeclarFileName);
+CInitVarsFileFid = SCI2COpenFileRead(CInitVarsFileName);
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+PrintStepInfo('Joining declaration and C-call files',ReportFileName,'file');
+
+PrintStringInfo('/*',CPass2FileName,'file','y');
+PrintStringInfo('** -------------------------------------',CPass2FileName,'file','y');
+PrintStringInfo('** --- Global Variables Declaration. ---',CPass2FileName,'file','y');
+PrintStringInfo('** -------------------------------------',CPass2FileName,'file','y');
+PrintStringInfo('*/',CPass2FileName,'file','y');
+// #RNU_RES_B
+// --- Copy in V2 the global declaration file. ---
+// #RNU_RES_E
+while (~meof(CGblDeclarFileFid))
+ // Read a line from C Global Declaration file.
+ tmpcline = mgetl(CGblDeclarFileFid,1);
+ if (length(tmpcline) == 0)
+ tmpcline = ' ';
+ end
+
+ noblkstmpcline = stripblanks(tmpcline);
+ PrintStringInfo(tmpcline,CPass2FileName,'file','y');
+end
+PrintStringInfo('/*',CPass2FileName,'file','y');
+PrintStringInfo('** -----------------------------------------',CPass2FileName,'file','y');
+PrintStringInfo('** --- End Global Variables Declaration. ---',CPass2FileName,'file','y');
+PrintStringInfo('** -----------------------------------------',CPass2FileName,'file','y');
+PrintStringInfo('*/',CPass2FileName,'file','y');
+PrintStringInfo(' ',CPass2FileName,'file','y');
+
+// #RNU_RES_B
+// --- Copy in V2 the first part of V1 up to "{". ---
+// #RNU_RES_E
+FoundCurlyBracket = 0;
+while ((~meof(CPass1V1FileFid)) & (FoundCurlyBracket == 0))
+ // Read a line from C Pass1 file.
+ tmpcline = mgetl(CPass1V1FileFid,1);
+ noblkstmpcline = stripblanks(tmpcline);
+ if (length(noblkstmpcline) > 0)
+ if (SCI2Cstrncmps1size('{',noblkstmpcline))
+ FoundCurlyBracket = 1;
+ end
+ else
+ tmpcline = ' ';
+ end
+ PrintStringInfo(tmpcline,CPass2FileName,'file','y');
+end
+
+if (FoundCurlyBracket == 0)
+ SCI2CerrorFile('""{"" char not found in:'+CPass1FileName,ReportFileName);
+end
+
+PrintStringInfo('/*',CPass2FileName,'file','y');
+PrintStringInfo('** -----------------------------',CPass2FileName,'file','y');
+PrintStringInfo('** --- Variable Declaration. ---',CPass2FileName,'file','y');
+PrintStringInfo('** -----------------------------',CPass2FileName,'file','y');
+PrintStringInfo('*/',CPass2FileName,'file','y');
+// --- Copy in V2 the declaration file. ---
+while (~meof(CDeclarationFileFid))
+ // Read a line from C Declaration file.
+ tmpcline = mgetl(CDeclarationFileFid,1);
+ if (length(tmpcline) == 0)
+ tmpcline = ' ';
+ end
+
+ noblkstmpcline = stripblanks(tmpcline);
+ PrintStringInfo(tmpcline,CPass2FileName,'file','y');
+end
+
+// #RNU_RES_B
+// --- Copy in V2 the variable initialization file. ---
+// #RNU_RES_E
+while (~meof(CInitVarsFileFid))
+ // Read a line from C Declaration file.
+ tmpcline = mgetl(CInitVarsFileFid,1);
+ if (length(tmpcline) == 0)
+ tmpcline = ' ';
+ end
+
+ noblkstmpcline = stripblanks(tmpcline);
+ PrintStringInfo(tmpcline,CPass2FileName,'file','y');
+end
+PrintStringInfo('/*',CPass2FileName,'file','y');
+PrintStringInfo('** ---------------------------------',CPass2FileName,'file','y');
+PrintStringInfo('** --- End Variable Declaration. ---',CPass2FileName,'file','y');
+PrintStringInfo('** ---------------------------------',CPass2FileName,'file','y');
+PrintStringInfo('*/',CPass2FileName,'file','y');
+
+
+PrintStringInfo('/*',CPass2FileName,'file','y');
+PrintStringInfo('** ---------------',CPass2FileName,'file','y');
+PrintStringInfo('** --- C code. ---',CPass2FileName,'file','y');
+PrintStringInfo('** ---------------',CPass2FileName,'file','y');
+PrintStringInfo('*/',CPass2FileName,'file','y');
+
+if((SharedInfo.Target == "RPi") & (nxtscifunname == SharedInfo.SCIMainFunName))
+ //Add wiringPiSetup() function as it is required
+ PrintStringInfo('wiringPiSetup();',CPass2FileName,'file','y');
+end
+// --- Copy the remaining part of V1 in V2. ---
+while (~meof(CPass1V1FileFid))
+ // #RNU_RES_B
+ // Read a line from C Pass1 file.
+ // #RNU_RES_E
+ tmpcline = mgetl(CPass1V1FileFid,1);
+ if (length(tmpcline) == 0)
+ tmpcline = ' ';
+ end
+ PrintStringInfo(tmpcline,CPass2FileName,'file','y');
+end
+
+// --------------------
+// --- Close Files. ---
+// --------------------
+mclose(CPass1V1FileFid);
+mclose(CDeclarationFileFid);
+mclose(CGblDeclarFileFid);
+mclose(CInitVarsFileFid);
+
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp b/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp
new file mode 100644
index 00000000..65184df1
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp
@@ -0,0 +1,230 @@
+
+# --- C COMPILER ---
+CC = gcc
+CFLAGS = -Wall -pedantic -O3 -I $(HSRCDIR)
+# ---------------------------
+# --- END USER PARAMETERS ---
+# ---------------------------
+
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# DON'T TOUCH ANYTHING BELOW THIS LINE
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+
+ELEMENTARY_FUNCTIONS_DIR = $(CSRCDIR)/src/elementaryFunctions
+CFLAGS_ELEMENTARY_FUNCTIONS = -I $(ELEMENTARY_FUNCTIONS_DIR)/includes -I $(ELEMENTARY_FUNCTIONS_DIR)/interfaces
+
+
+EXEFILE = $(SCI2CDIR)/$(EXEFILENAME)
+
+objects = \
+ $(OBJDIR)/doubleComplex.o \
+ $(OBJDIR)/floatComplex.o \
+ $(OBJDIR)/RealToComplex.o \
+ $(OBJDIR)/conj.o \
+ $(OBJDIR)/disp.o \
+ $(OBJDIR)/ones.o \
+ $(OBJDIR)/zeros.o \
+ $(OBJDIR)/OpApex.o \
+ $(OBJDIR)/OpColon.o \
+ $(OBJDIR)/OpDotStar.o \
+ $(OBJDIR)/OpDotHat.o \
+ $(OBJDIR)/OpDotSlash.o \
+ $(OBJDIR)/OpEqual.o \
+ $(OBJDIR)/OpPlus.o \
+ $(OBJDIR)/OpMinus.o \
+ $(OBJDIR)/OpStar.o \
+ $(OBJDIR)/OpIns.o \
+ $(OBJDIR)/OpExt.o \
+ $(OBJDIR)/OpRc.o \
+ $(OBJDIR)/OpCc.o \
+ $(OBJDIR)/cos.o \
+ $(OBJDIR)/cosh.o \
+ $(OBJDIR)/sin.o \
+ $(OBJDIR)/sinh.o \
+ $(OBJDIR)/FileManagement.o \
+ $(OBJDIR)/OpLogLt.o \
+ $(OBJDIR)/OpLogGt.o \
+ $(OBJDIR)/OpLogGe.o \
+ $(OBJDIR)/OpLogLe.o \
+ $(OBJDIR)/OpLogEq.o \
+ $(OBJDIR)/Find.o \
+ $(OBJDIR)/ConvertPrecision.o \
+ $(OBJDIR)/SCI2Cfft.o \
+ $(OBJDIR)/SCI2Cconvol.o \
+ $(OBJDIR)/ssqrts.o \
+ $(OBJDIR)/dsqrts.o \
+ $(OBJDIR)/csqrts.o \
+ $(OBJDIR)/zsqrts.o \
+ $(OBJDIR)/ssqrta.o \
+ $(OBJDIR)/dsqrta.o \
+ $(OBJDIR)/csqrta.o \
+ $(OBJDIR)/zsqrta.o
+
+# ---------------
+# --- TARGETS ---
+# ---------------
+compileexecute: $(objects)
+ @echo " "
+ @echo "============================"
+ @echo "Generation of the executable"
+ @echo "============================"
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) $(objects) $(SCI2CDIR)/*.c -o $(EXEFILE)
+ @echo " "
+ @echo "=============="
+ @echo "Executing code"
+ @echo "=============="
+ $(EXEFILE)
+
+clean:
+ @echo " "
+ @echo "============================="
+ @echo "Removing only exe + obj files"
+ @echo "============================="
+ rm -rf $(EXEFILE)
+ rm -rf $(objects)
+ @echo " "
+
+cleanexe:
+ @echo " "
+ @echo "=========================="
+ @echo "Removing only the exe file"
+ @echo "=========================="
+ rm -rf $(EXEFILE)
+ @echo " "
+
+$(OBJDIR)/doubleComplex.o: $(CSRCDIR)/doubleComplex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/doubleComplex.c -o $(OBJDIR)/doubleComplex.o
+
+$(OBJDIR)/floatComplex.o: $(CSRCDIR)/floatComplex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/floatComplex.c -o $(OBJDIR)/floatComplex.o
+
+$(OBJDIR)/RealToComplex.o: $(CSRCDIR)/RealToComplex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/RealToComplex.c -o $(OBJDIR)/RealToComplex.o
+
+$(OBJDIR)/conj.o: $(CSRCDIR)/conj.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/conj.c -o $(OBJDIR)/conj.o
+
+$(OBJDIR)/disp.o: $(CSRCDIR)/disp.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/disp.c -o $(OBJDIR)/disp.o
+
+$(OBJDIR)/zeros.o: $(CSRCDIR)/zeros.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/zeros.c -o $(OBJDIR)/zeros.o
+
+$(OBJDIR)/ones.o: $(CSRCDIR)/ones.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/ones.c -o $(OBJDIR)/ones.o
+
+$(OBJDIR)/OpApex.o: $(CSRCDIR)/OpApex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpApex.c -o $(OBJDIR)/OpApex.o
+
+$(OBJDIR)/OpColon.o: $(CSRCDIR)/OpColon.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpColon.c -o $(OBJDIR)/OpColon.o
+
+$(OBJDIR)/OpDotStar.o: $(CSRCDIR)/OpDotStar.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpDotStar.c -o $(OBJDIR)/OpDotStar.o
+
+$(OBJDIR)/OpDotHat.o: $(CSRCDIR)/OpDotHat.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpDotHat.c -o $(OBJDIR)/OpDotHat.o
+
+$(OBJDIR)/OpDotSlash.o: $(CSRCDIR)/OpDotSlash.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpDotSlash.c -o $(OBJDIR)/OpDotSlash.o
+
+$(OBJDIR)/OpEqual.o: $(CSRCDIR)/OpEqual.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpEqual.c -o $(OBJDIR)/OpEqual.o
+
+$(OBJDIR)/OpPlus.o: $(CSRCDIR)/OpPlus.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpPlus.c -o $(OBJDIR)/OpPlus.o
+
+$(OBJDIR)/OpMinus.o: $(CSRCDIR)/OpMinus.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpMinus.c -o $(OBJDIR)/OpMinus.o
+
+$(OBJDIR)/OpStar.o: $(CSRCDIR)/OpStar.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpStar.c -o $(OBJDIR)/OpStar.o
+
+$(OBJDIR)/OpIns.o: $(CSRCDIR)/OpIns.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpIns.c -o $(OBJDIR)/OpIns.o
+
+$(OBJDIR)/OpExt.o: $(CSRCDIR)/OpExt.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpExt.c -o $(OBJDIR)/OpExt.o
+
+$(OBJDIR)/OpRc.o: $(CSRCDIR)/OpRc.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpRc.c -o $(OBJDIR)/OpRc.o
+
+$(OBJDIR)/OpCc.o: $(CSRCDIR)/OpCc.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpCc.c -o $(OBJDIR)/OpCc.o
+
+$(OBJDIR)/cos.o: $(CSRCDIR)/cos.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/cos.c -o $(OBJDIR)/cos.o
+
+$(OBJDIR)/cosh.o: $(CSRCDIR)/cosh.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/cosh.c -o $(OBJDIR)/cosh.o
+
+$(OBJDIR)/sin.o: $(CSRCDIR)/sin.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/sin.c -o $(OBJDIR)/sin.o
+
+$(OBJDIR)/sinh.o: $(CSRCDIR)/sinh.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/sinh.c -o $(OBJDIR)/sinh.o
+
+$(OBJDIR)/FileManagement.o: $(CSRCDIR)/FileManagement.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/FileManagement.c -o $(OBJDIR)/FileManagement.o
+
+$(OBJDIR)/OpLogLt.o: $(CSRCDIR)/OpLogLt.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogLt.c -o $(OBJDIR)/OpLogLt.o
+
+$(OBJDIR)/OpLogGt.o: $(CSRCDIR)/OpLogGt.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogGt.c -o $(OBJDIR)/OpLogGt.o
+
+$(OBJDIR)/OpLogLe.o: $(CSRCDIR)/OpLogLe.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogLe.c -o $(OBJDIR)/OpLogLe.o
+
+$(OBJDIR)/OpLogGe.o: $(CSRCDIR)/OpLogGe.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogGe.c -o $(OBJDIR)/OpLogGe.o
+
+$(OBJDIR)/OpLogEq.o: $(CSRCDIR)/OpLogEq.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogEq.c -o $(OBJDIR)/OpLogEq.o
+
+$(OBJDIR)/Find.o: $(CSRCDIR)/Find.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/Find.c -o $(OBJDIR)/Find.o
+
+$(OBJDIR)/ConvertPrecision.o: $(CSRCDIR)/ConvertPrecision.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/ConvertPrecision.c -o $(OBJDIR)/ConvertPrecision.o
+
+$(OBJDIR)/SCI2Cfft.o: $(CSRCDIR)/SCI2Cfft.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/SCI2Cfft.c -o $(OBJDIR)/SCI2Cfft.o
+
+$(OBJDIR)/SCI2Cconvol.o: $(CSRCDIR)/SCI2Cconvol.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/SCI2Cconvol.c -o $(OBJDIR)/SCI2Cconvol.o
+
+$(OBJDIR)/sqrt.o: $(CSRCELEMFUNDIR)/sqrt/*sqrt*.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCELEMFUNDIR)/sqrt/*sqrt*.c -o $(OBJDIR)/sqrt.o
+
+$(OBJDIR)/ssqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/ssqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/ssqrts.c -o $(OBJDIR)/ssqrts.o
+
+$(OBJDIR)/dsqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/dsqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/dsqrts.c -o $(OBJDIR)/dsqrts.o
+
+$(OBJDIR)/csqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/csqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/csqrts.c -o $(OBJDIR)/csqrts.o
+
+$(OBJDIR)/zsqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/zsqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/zsqrts.c -o $(OBJDIR)/zsqrts.o
+
+$(OBJDIR)/ssqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/ssqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/ssqrta.c -o $(OBJDIR)/ssqrta.o
+
+$(OBJDIR)/dsqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/dsqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/dsqrta.c -o $(OBJDIR)/dsqrta.o
+
+$(OBJDIR)/csqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/csqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/csqrta.c -o $(OBJDIR)/csqrta.o
+
+$(OBJDIR)/zsqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/zsqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/zsqrta.c -o $(OBJDIR)/zsqrta.o
diff --git a/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp1 b/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp1
new file mode 100644
index 00000000..65184df1
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp1
@@ -0,0 +1,230 @@
+
+# --- C COMPILER ---
+CC = gcc
+CFLAGS = -Wall -pedantic -O3 -I $(HSRCDIR)
+# ---------------------------
+# --- END USER PARAMETERS ---
+# ---------------------------
+
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# DON'T TOUCH ANYTHING BELOW THIS LINE
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+
+ELEMENTARY_FUNCTIONS_DIR = $(CSRCDIR)/src/elementaryFunctions
+CFLAGS_ELEMENTARY_FUNCTIONS = -I $(ELEMENTARY_FUNCTIONS_DIR)/includes -I $(ELEMENTARY_FUNCTIONS_DIR)/interfaces
+
+
+EXEFILE = $(SCI2CDIR)/$(EXEFILENAME)
+
+objects = \
+ $(OBJDIR)/doubleComplex.o \
+ $(OBJDIR)/floatComplex.o \
+ $(OBJDIR)/RealToComplex.o \
+ $(OBJDIR)/conj.o \
+ $(OBJDIR)/disp.o \
+ $(OBJDIR)/ones.o \
+ $(OBJDIR)/zeros.o \
+ $(OBJDIR)/OpApex.o \
+ $(OBJDIR)/OpColon.o \
+ $(OBJDIR)/OpDotStar.o \
+ $(OBJDIR)/OpDotHat.o \
+ $(OBJDIR)/OpDotSlash.o \
+ $(OBJDIR)/OpEqual.o \
+ $(OBJDIR)/OpPlus.o \
+ $(OBJDIR)/OpMinus.o \
+ $(OBJDIR)/OpStar.o \
+ $(OBJDIR)/OpIns.o \
+ $(OBJDIR)/OpExt.o \
+ $(OBJDIR)/OpRc.o \
+ $(OBJDIR)/OpCc.o \
+ $(OBJDIR)/cos.o \
+ $(OBJDIR)/cosh.o \
+ $(OBJDIR)/sin.o \
+ $(OBJDIR)/sinh.o \
+ $(OBJDIR)/FileManagement.o \
+ $(OBJDIR)/OpLogLt.o \
+ $(OBJDIR)/OpLogGt.o \
+ $(OBJDIR)/OpLogGe.o \
+ $(OBJDIR)/OpLogLe.o \
+ $(OBJDIR)/OpLogEq.o \
+ $(OBJDIR)/Find.o \
+ $(OBJDIR)/ConvertPrecision.o \
+ $(OBJDIR)/SCI2Cfft.o \
+ $(OBJDIR)/SCI2Cconvol.o \
+ $(OBJDIR)/ssqrts.o \
+ $(OBJDIR)/dsqrts.o \
+ $(OBJDIR)/csqrts.o \
+ $(OBJDIR)/zsqrts.o \
+ $(OBJDIR)/ssqrta.o \
+ $(OBJDIR)/dsqrta.o \
+ $(OBJDIR)/csqrta.o \
+ $(OBJDIR)/zsqrta.o
+
+# ---------------
+# --- TARGETS ---
+# ---------------
+compileexecute: $(objects)
+ @echo " "
+ @echo "============================"
+ @echo "Generation of the executable"
+ @echo "============================"
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) $(objects) $(SCI2CDIR)/*.c -o $(EXEFILE)
+ @echo " "
+ @echo "=============="
+ @echo "Executing code"
+ @echo "=============="
+ $(EXEFILE)
+
+clean:
+ @echo " "
+ @echo "============================="
+ @echo "Removing only exe + obj files"
+ @echo "============================="
+ rm -rf $(EXEFILE)
+ rm -rf $(objects)
+ @echo " "
+
+cleanexe:
+ @echo " "
+ @echo "=========================="
+ @echo "Removing only the exe file"
+ @echo "=========================="
+ rm -rf $(EXEFILE)
+ @echo " "
+
+$(OBJDIR)/doubleComplex.o: $(CSRCDIR)/doubleComplex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/doubleComplex.c -o $(OBJDIR)/doubleComplex.o
+
+$(OBJDIR)/floatComplex.o: $(CSRCDIR)/floatComplex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/floatComplex.c -o $(OBJDIR)/floatComplex.o
+
+$(OBJDIR)/RealToComplex.o: $(CSRCDIR)/RealToComplex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/RealToComplex.c -o $(OBJDIR)/RealToComplex.o
+
+$(OBJDIR)/conj.o: $(CSRCDIR)/conj.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/conj.c -o $(OBJDIR)/conj.o
+
+$(OBJDIR)/disp.o: $(CSRCDIR)/disp.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/disp.c -o $(OBJDIR)/disp.o
+
+$(OBJDIR)/zeros.o: $(CSRCDIR)/zeros.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/zeros.c -o $(OBJDIR)/zeros.o
+
+$(OBJDIR)/ones.o: $(CSRCDIR)/ones.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/ones.c -o $(OBJDIR)/ones.o
+
+$(OBJDIR)/OpApex.o: $(CSRCDIR)/OpApex.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpApex.c -o $(OBJDIR)/OpApex.o
+
+$(OBJDIR)/OpColon.o: $(CSRCDIR)/OpColon.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpColon.c -o $(OBJDIR)/OpColon.o
+
+$(OBJDIR)/OpDotStar.o: $(CSRCDIR)/OpDotStar.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpDotStar.c -o $(OBJDIR)/OpDotStar.o
+
+$(OBJDIR)/OpDotHat.o: $(CSRCDIR)/OpDotHat.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpDotHat.c -o $(OBJDIR)/OpDotHat.o
+
+$(OBJDIR)/OpDotSlash.o: $(CSRCDIR)/OpDotSlash.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpDotSlash.c -o $(OBJDIR)/OpDotSlash.o
+
+$(OBJDIR)/OpEqual.o: $(CSRCDIR)/OpEqual.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpEqual.c -o $(OBJDIR)/OpEqual.o
+
+$(OBJDIR)/OpPlus.o: $(CSRCDIR)/OpPlus.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpPlus.c -o $(OBJDIR)/OpPlus.o
+
+$(OBJDIR)/OpMinus.o: $(CSRCDIR)/OpMinus.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpMinus.c -o $(OBJDIR)/OpMinus.o
+
+$(OBJDIR)/OpStar.o: $(CSRCDIR)/OpStar.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpStar.c -o $(OBJDIR)/OpStar.o
+
+$(OBJDIR)/OpIns.o: $(CSRCDIR)/OpIns.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpIns.c -o $(OBJDIR)/OpIns.o
+
+$(OBJDIR)/OpExt.o: $(CSRCDIR)/OpExt.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpExt.c -o $(OBJDIR)/OpExt.o
+
+$(OBJDIR)/OpRc.o: $(CSRCDIR)/OpRc.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpRc.c -o $(OBJDIR)/OpRc.o
+
+$(OBJDIR)/OpCc.o: $(CSRCDIR)/OpCc.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpCc.c -o $(OBJDIR)/OpCc.o
+
+$(OBJDIR)/cos.o: $(CSRCDIR)/cos.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/cos.c -o $(OBJDIR)/cos.o
+
+$(OBJDIR)/cosh.o: $(CSRCDIR)/cosh.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/cosh.c -o $(OBJDIR)/cosh.o
+
+$(OBJDIR)/sin.o: $(CSRCDIR)/sin.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/sin.c -o $(OBJDIR)/sin.o
+
+$(OBJDIR)/sinh.o: $(CSRCDIR)/sinh.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/sinh.c -o $(OBJDIR)/sinh.o
+
+$(OBJDIR)/FileManagement.o: $(CSRCDIR)/FileManagement.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/FileManagement.c -o $(OBJDIR)/FileManagement.o
+
+$(OBJDIR)/OpLogLt.o: $(CSRCDIR)/OpLogLt.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogLt.c -o $(OBJDIR)/OpLogLt.o
+
+$(OBJDIR)/OpLogGt.o: $(CSRCDIR)/OpLogGt.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogGt.c -o $(OBJDIR)/OpLogGt.o
+
+$(OBJDIR)/OpLogLe.o: $(CSRCDIR)/OpLogLe.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogLe.c -o $(OBJDIR)/OpLogLe.o
+
+$(OBJDIR)/OpLogGe.o: $(CSRCDIR)/OpLogGe.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogGe.c -o $(OBJDIR)/OpLogGe.o
+
+$(OBJDIR)/OpLogEq.o: $(CSRCDIR)/OpLogEq.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/OpLogEq.c -o $(OBJDIR)/OpLogEq.o
+
+$(OBJDIR)/Find.o: $(CSRCDIR)/Find.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/Find.c -o $(OBJDIR)/Find.o
+
+$(OBJDIR)/ConvertPrecision.o: $(CSRCDIR)/ConvertPrecision.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/ConvertPrecision.c -o $(OBJDIR)/ConvertPrecision.o
+
+$(OBJDIR)/SCI2Cfft.o: $(CSRCDIR)/SCI2Cfft.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/SCI2Cfft.c -o $(OBJDIR)/SCI2Cfft.o
+
+$(OBJDIR)/SCI2Cconvol.o: $(CSRCDIR)/SCI2Cconvol.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCDIR)/SCI2Cconvol.c -o $(OBJDIR)/SCI2Cconvol.o
+
+$(OBJDIR)/sqrt.o: $(CSRCELEMFUNDIR)/sqrt/*sqrt*.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) -c $(CSRCELEMFUNDIR)/sqrt/*sqrt*.c -o $(OBJDIR)/sqrt.o
+
+$(OBJDIR)/ssqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/ssqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/ssqrts.c -o $(OBJDIR)/ssqrts.o
+
+$(OBJDIR)/dsqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/dsqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/dsqrts.c -o $(OBJDIR)/dsqrts.o
+
+$(OBJDIR)/csqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/csqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/csqrts.c -o $(OBJDIR)/csqrts.o
+
+$(OBJDIR)/zsqrts.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/zsqrts.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/zsqrts.c -o $(OBJDIR)/zsqrts.o
+
+$(OBJDIR)/ssqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/ssqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/ssqrta.c -o $(OBJDIR)/ssqrta.o
+
+$(OBJDIR)/dsqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/dsqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/dsqrta.c -o $(OBJDIR)/dsqrta.o
+
+$(OBJDIR)/csqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/csqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/csqrta.c -o $(OBJDIR)/csqrta.o
+
+$(OBJDIR)/zsqrta.o: $(CSRCDIR)/src/elementaryFunctions/sqrt/zsqrta.c $(HSRCDIR)/*.h
+ $(CC) $(CFLAGS) $(CFLAGS_ELEMENTARY_FUNCTIONS) -c $(ELEMENTARY_FUNCTIONS_DIR)/sqrt/zsqrta.c -o $(OBJDIR)/zsqrta.o
diff --git a/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp2 b/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp2
new file mode 100644
index 00000000..c6ba2a9c
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/SCI2CMakefileTemplate.bkp2
@@ -0,0 +1,126 @@
+
+# --- C COMPILER ---
+CC = gcc
+CFLAGS = -Wall -pedantic -O3 -I $(HSRCDIR) -I $(ISRCDIR)
+# ---------------------------
+# --- END USER PARAMETERS ---
+# ---------------------------
+
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# DON'T TOUCH ANYTHING BELOW THIS LINE
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+# ------------------------------------
+
+EXEFILE = $(SCI2CDIR)/$(EXEFILENAME)
+
+SWSRCS = \
+ $(CSRCDIR)/doubleComplex.c \
+ $(CSRCDIR)/floatComplex.c \
+ $(CSRCDIR)/RealToComplex.c \
+ $(CSRCDIR)/conj.c \
+ $(CSRCDIR)/disp.c \
+ $(CSRCDIR)/ones.c \
+ $(CSRCDIR)/zeros.c \
+ $(CSRCDIR)/OpApex.c \
+ $(CSRCDIR)/OpColon.c \
+ $(CSRCDIR)/OpDotStar.c \
+ $(CSRCDIR)/OpDotHat.c \
+ $(CSRCDIR)/OpDotSlash.c \
+ $(CSRCDIR)/OpEqual.c \
+ $(CSRCDIR)/OpPlus.c \
+ $(CSRCDIR)/OpMinus.c \
+ $(CSRCDIR)/OpStar.c \
+ $(CSRCDIR)/OpIns.c \
+ $(CSRCDIR)/OpExt.c \
+ $(CSRCDIR)/OpRc.c \
+ $(CSRCDIR)/OpCc.c \
+ $(CSRCDIR)/cos.c \
+ $(CSRCDIR)/cosh.c \
+ $(CSRCDIR)/sin.c \
+ $(CSRCDIR)/sinh.c \
+ $(CSRCDIR)/FileManagement.c \
+ $(CSRCDIR)/OpLogLt.c \
+ $(CSRCDIR)/OpLogGt.c \
+ $(CSRCDIR)/OpLogGe.c \
+ $(CSRCDIR)/OpLogLe.c \
+ $(CSRCDIR)/OpLogEq.c \
+ $(CSRCDIR)/OpLogOr.c \
+ $(CSRCDIR)/OpLogAnd.c \
+ $(CSRCDIR)/Find.c \
+ $(CSRCDIR)/ConvertPrecision.c \
+ $(CSRCDIR)/SCI2Cfft.c \
+ $(CSRCDIR)/SCI2Cconvol.c \
+ $(CSRCDIR)/ssqrts.c \
+ $(CSRCDIR)/dsqrts.c \
+ $(CSRCDIR)/csqrts.c \
+ $(CSRCDIR)/zsqrts.c \
+ $(CSRCDIR)/ssqrta.c \
+ $(CSRCDIR)/dsqrta.c \
+ $(CSRCDIR)/csqrta.c \
+ $(CSRCDIR)/zsqrta.c \
+ $(CSRCDIR)/sabss.c \
+ $(CSRCDIR)/dabss.c \
+ $(CSRCDIR)/cabss.c \
+ $(CSRCDIR)/zabss.c \
+ $(CSRCDIR)/sabsa.c \
+ $(CSRCDIR)/dabsa.c \
+ $(CSRCDIR)/cabsa.c \
+ $(CSRCDIR)/zabsa.c \
+ $(CSRCDIR)/sexps.c \
+ $(CSRCDIR)/dexps.c \
+ $(CSRCDIR)/cexps.c \
+ $(CSRCDIR)/zexps.c \
+ $(CSRCDIR)/sexpa.c \
+ $(CSRCDIR)/dexpa.c \
+ $(CSRCDIR)/cexpa.c \
+ $(CSRCDIR)/zexpa.c
+
+SWOBJS = $(SWSRCS:.c=.o)
+
+# ---------------
+# --- TARGETS ---
+# ---------------
+compileexecute: $(SWOBJS)
+ @echo " "
+ @echo "============================"
+ @echo "Generation of the executable"
+ @echo "============================"
+ $(CC) $(CFLAGS) $(SWOBJS) $(SCI2CDIR)/*.c -o $(EXEFILE)
+ @echo " "
+ @echo "=============="
+ @echo "Executing code"
+ @echo "=============="
+ $(EXEFILE)
+
+clean:
+ @echo " "
+ @echo "============================="
+ @echo "Removing only exe + obj files"
+ @echo "============================="
+ rm -rf $(EXEFILE)
+ rm -rf $(SWOBJS)
+ @echo " "
+
+cleanexe:
+ @echo " "
+ @echo "=========================="
+ @echo "Removing only the exe file"
+ @echo "=========================="
+ rm -rf $(EXEFILE)
+ @echo " "
+
+# how to compile object code .o from C source files .c (general rule)
+# space between -o and filename for SUN make
+.c.o:
+ $(CC) $(CFLAGS) -c -o $(@) $<
+
+# Make object code from source
+swobjs: $(SWOBJS)
+
diff --git a/2.3-1/macros/CCodeGeneration/Sci2AnnotationFile.sci b/2.3-1/macros/CCodeGeneration/Sci2AnnotationFile.sci
new file mode 100644
index 00000000..001ed250
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/Sci2AnnotationFile.sci
@@ -0,0 +1,55 @@
+function Sci2AnnotationFile(SciFileName,ClsFileName,AnnFileName,AnnSpecifier,ReportFileName)
+// function Sci2AnnotationFile(SciFileName,ClsFileName,AnnFileName,AnnSpecifier,ReportFileName)
+// --------------------------------------------------------------------------------
+// #RNU_RES_B
+// This function reads the .sci input file and generates the correspondig .ann
+// and .acls files.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 25-Jun-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+[tmppath,tmpfunname,tmpext] = fileparts(SciFileName);
+
+// ---------------------------------------
+// --- Open the .sci file (read only). ---
+// ---------------------------------------
+inscifid = SCI2COpenFileRead(SciFileName);
+
+// ----------------------------------------------
+// --- Loop over the lines of the input file. ---
+// ----------------------------------------------
+line_position = 0;
+L_AnnSpecifierP1 = length(AnnSpecifier)+1;
+while (meof(inscifid) == 0)
+ check_string = stripblanks(mgetl(inscifid,1));
+ line_position = line_position + 1;
+ L_string = length(check_string);
+ if (L_string >= 1)
+ if (SCI2Cstrncmps1size(AnnSpecifier,check_string))
+ tmpannotation = stripblanks(part(check_string,L_AnnSpecifierP1:L_string));
+ PrintStringInfo(tmpannotation,ClsFileName,'file','y');
+ end
+ end
+end
+mclose(inscifid);
+// --------------------------------------------------
+// --- End loop over the lines of the input file. ---
+// --------------------------------------------------
+PrintStringInfo('CLASS: '+tmpfunname,AnnFileName,'file','y');
+endfunction
diff --git a/2.3-1/macros/CCodeGeneration/buildmacros.sce b/2.3-1/macros/CCodeGeneration/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/CCodeGeneration/lib b/2.3-1/macros/CCodeGeneration/lib
new file mode 100644
index 00000000..8316c669
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/lib
Binary files differ
diff --git a/2.3-1/macros/CCodeGeneration/names b/2.3-1/macros/CCodeGeneration/names
new file mode 100644
index 00000000..5311c7fd
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/names
@@ -0,0 +1,24 @@
+C_FinalizeCode
+C_ForExpression
+C_Funcall
+C_GenDeclarations
+C_GenerateFunName
+C_GenerateLaunchScript
+C_GenerateMakefile
+C_GenerateMakefile_msvc
+C_GenerateMkfle_arduino
+C_GenerateSCI2CHeader
+C_IfElseBlocks
+C_IfExpression
+C_IndentBlanks
+C_InitHeader
+C_MemAllocOutTempVars
+C_SCI2CHeader
+C_Type
+C_WhileExpression
+GenCFunDatFiles
+GetClsFileName
+GetSymbolDimension
+GetWhileCondVariable
+JoinDeclarAndCcode
+Sci2AnnotationFile
diff --git a/2.3-1/macros/CFiles/sci2ccode/ConvertPrecision.c b/2.3-1/macros/CFiles/sci2ccode/ConvertPrecision.c
new file mode 100644
index 00000000..ee3ecc3a
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/ConvertPrecision.c
@@ -0,0 +1,41 @@
+/*
+** -*- C -*-
+**
+** ConvertPrecision.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+** Copyright Raffaele Nutricato 2008
+*/
+
+
+double s0doubled0(float in)
+{
+ double out;
+ out = (double) in;
+ return (out);
+}
+
+void s2doubled2(float* in, int* inSize, double* out)
+{
+ int i;
+ for (i=0; i<inSize[0]*inSize[1]; i++)
+ {
+ out[i] = (double) in[i];
+ }
+}
+
+float d0floats0(double in)
+{
+ float out;
+ out = (float) in;
+ return (out);
+}
+
+void d2floats2(double* in, int* inSize, float* out)
+{
+ int i;
+ for (i=0; i<inSize[0]*inSize[1]; i++)
+ {
+ out[i] = (float) in[i];
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/FileManagement.c b/2.3-1/macros/CFiles/sci2ccode/FileManagement.c
new file mode 100644
index 00000000..427b3551
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/FileManagement.c
@@ -0,0 +1,12 @@
+/*
+** -*- C -*-
+**
+** FileManagement.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Rubby Nutricato 2007
+*/
+
+#include "FileManagement.h"
+
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpEqual.c b/2.3-1/macros/CFiles/sci2ccode/OpEqual.c
new file mode 100644
index 00000000..70f3d504
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpEqual.c
@@ -0,0 +1,90 @@
+/*
+** -*- C -*-
+**
+** OpEqual.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpEqual.h"
+
+float sOpEquals1(float x)
+{
+ return (x);
+}
+
+double dOpEquals1(double x)
+{
+ return x;
+}
+
+floatComplex c0OpEqualc0(floatComplex x)
+{
+ return x;
+}
+
+doubleComplex z0OpEqualz0(doubleComplex x)
+{
+ return x;
+}
+
+char g0OpEqualg0(char x)
+{
+ return x;
+}
+
+void sOpEquala1(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = x[i];
+ }
+}
+
+void dOpEquala1(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = x[i];
+ }
+}
+
+void c2OpEqualc2(floatComplex* x, int* xSize, floatComplex* y)
+{
+ int i = 0;
+ int size;
+ size = xSize[0]*xSize[1];
+
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = x[i];
+ }
+}
+
+void z2OpEqualz2(doubleComplex* x, int* xSize, doubleComplex* y)
+{
+ int i = 0;
+ int size;
+ size = xSize[0]*xSize[1];
+
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = x[i];
+ }
+}
+
+void g2OpEqualg2(char* x, int* xSize, char* y)
+{
+ int i = 0;
+ int size;
+ size = xSize[0]*xSize[1];
+
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = x[i];
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpExt.c b/2.3-1/macros/CFiles/sci2ccode/OpExt.c
new file mode 100644
index 00000000..0b137b14
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpExt.c
@@ -0,0 +1,11 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+#include "OpExt.h"
+
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpIns.c b/2.3-1/macros/CFiles/sci2ccode/OpIns.c
new file mode 100644
index 00000000..df386894
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpIns.c
@@ -0,0 +1,11 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+#include "OpIns.h"
+
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpLogAnd.c b/2.3-1/macros/CFiles/sci2ccode/OpLogAnd.c
new file mode 100644
index 00000000..86deee72
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpLogAnd.c
@@ -0,0 +1,38 @@
+/*
+** -*- C -*-
+**
+** OpLogAnd.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpLogAnd.h"
+
+void s2s0OpLogAnds2(float* in1, int* in1Size, float in2, float* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (float) (in1[rows*in1Size[1]+cols] && in2);
+ }
+ }
+}
+
+void d2d0OpLogAndd2(double* in1, int* in1Size, double in2, double* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (double) (in1[rows*in1Size[1]+cols] && in2);
+ }
+ }
+}
+
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpLogGe.c b/2.3-1/macros/CFiles/sci2ccode/OpLogGe.c
new file mode 100644
index 00000000..3664f2e1
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpLogGe.c
@@ -0,0 +1,37 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpLogGe.h"
+
+void s2s0OpLogGes2(float* in1, int* in1Size, float in2, float* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (float) (in1[rows*in1Size[1]+cols] >= in2);
+ }
+ }
+}
+
+void d2d0OpLogGed2(double* in1, int* in1Size, double in2, double* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (double) (in1[rows*in1Size[1]+cols] >= in2);
+ }
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpLogGt.c b/2.3-1/macros/CFiles/sci2ccode/OpLogGt.c
new file mode 100644
index 00000000..25e4bd96
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpLogGt.c
@@ -0,0 +1,37 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpLogGt.h"
+
+void s2s0OpLogGts2(float* in1, int* in1Size, float in2, float* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (float) (in1[rows*in1Size[1]+cols] > in2);
+ }
+ }
+}
+
+void d2d0OpLogGtd2(double* in1, int* in1Size, double in2, double* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (double) (in1[rows*in1Size[1]+cols] > in2);
+ }
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpLogLe.c b/2.3-1/macros/CFiles/sci2ccode/OpLogLe.c
new file mode 100644
index 00000000..a1544489
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpLogLe.c
@@ -0,0 +1,37 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpLogLe.h"
+
+void s2s0OpLogLes2(float* in1, int* in1Size, float in2, float* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (float) (in1[rows*in1Size[1]+cols] <= in2);
+ }
+ }
+}
+
+void d2d0OpLogLed2(double* in1, int* in1Size, double in2, double* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (double) (in1[rows*in1Size[1]+cols] <= in2);
+ }
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpLogLt.c b/2.3-1/macros/CFiles/sci2ccode/OpLogLt.c
new file mode 100644
index 00000000..a7e6d774
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpLogLt.c
@@ -0,0 +1,37 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpLogLt.h"
+
+void s2s0OpLogLts2(float* in1, int* in1Size, float in2, float* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (float) (in1[rows*in1Size[1]+cols] < in2);
+ }
+ }
+}
+
+void d2d0OpLogLtd2(double* in1, int* in1Size, double in2, double* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (double) (in1[rows*in1Size[1]+cols] < in2);
+ }
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/OpLogOr.c b/2.3-1/macros/CFiles/sci2ccode/OpLogOr.c
new file mode 100644
index 00000000..eb553b33
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/OpLogOr.c
@@ -0,0 +1,38 @@
+/*
+** -*- C -*-
+**
+** OpLogOr.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "OpLogOr.h"
+
+void s2s0OpLogOrs2(float* in1, int* in1Size, float in2, float* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (float) (in1[rows*in1Size[1]+cols] || in2);
+ }
+ }
+}
+
+void d2d0OpLogOrd2(double* in1, int* in1Size, double in2, double* out)
+{
+ int rows = 0;
+ int cols = 0;
+ for (rows = 0; rows < in1Size[0];rows++)
+ {
+ for (cols = 0; cols < in1Size[1];cols++)
+ {
+ out[rows*in1Size[1]+cols] = (double) (in1[rows*in1Size[1]+cols] || in2);
+ }
+ }
+}
+
diff --git a/2.3-1/macros/CFiles/sci2ccode/RealToComplex.c b/2.3-1/macros/CFiles/sci2ccode/RealToComplex.c
new file mode 100644
index 00000000..dd7b5ecf
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/RealToComplex.c
@@ -0,0 +1,134 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+#include "RealToComplex.h"
+
+floatComplex s0floatcomplexc0(float in)
+{
+ floatComplex out;
+ out = FloatComplex(in,0);
+ return out;
+}
+
+floatComplex d0floatcomplexc0(double in)
+{
+ floatComplex out;
+ out = FloatComplex(in,0);
+ return out;
+}
+
+floatComplex c0floatcomplexc0(floatComplex in)
+{
+ return in;
+}
+
+floatComplex z0floatcomplexc0(doubleComplex in)
+{
+ floatComplex out;
+ out = FloatComplex((float)zreals(in),(float)zimags(in));
+ return out;
+}
+
+void s2floatcomplexc2(float* in, int* inSize, floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = s0floatcomplexc0(in[i]);
+ }
+}
+
+void d2floatcomplexc2(double* in, int* inSize, floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = d0floatcomplexc0(in[i]);
+ }
+}
+
+void c2floatcomplexc2(floatComplex* in, int* inSize, floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = c0floatcomplexc0(in[i]);
+ }
+}
+
+void z2floatcomplexc2(doubleComplex* in, int* inSize, floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = z0floatcomplexc0(in[i]);
+ }
+}
+
+doubleComplex s0doublecomplexz0(float in)
+{
+ doubleComplex out;
+ out = DoubleComplex((double)(in),0);
+ return out;
+}
+
+doubleComplex d0doublecomplexz0(double in)
+{
+ doubleComplex out;
+ out = DoubleComplex(in,0);
+ return out;
+}
+
+doubleComplex c0doublecomplexz0(floatComplex in)
+{
+ doubleComplex out;
+ out = DoubleComplex((double) creals(in),(double) cimags(in));
+ return out;
+}
+
+doubleComplex z0doublecomplexz0(doubleComplex in)
+{
+ return in;
+}
+
+void s2doublecomplexz2(float* in, int* inSize, doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = s0doublecomplexz0(in[i]);
+ }
+}
+
+void d2doublecomplexz2(double* in, int* inSize, doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = d0doublecomplexz0(in[i]);
+ }
+}
+
+void c2doublecomplexz2(floatComplex* in, int* inSize, doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = c0doublecomplexz0(in[i]);
+ }
+}
+
+void z2doublecomplexz2(doubleComplex* in, int* inSize, doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<inSize[0]*inSize[1];i++)
+ {
+ out[i] = z0doublecomplexz0(in[i]);
+ }
+}
diff --git a/2.3-1/macros/CFiles/sci2ccode/SCI2Cconvol.c b/2.3-1/macros/CFiles/sci2ccode/SCI2Cconvol.c
new file mode 100644
index 00000000..989cb9de
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/SCI2Cconvol.c
@@ -0,0 +1,2 @@
+#include "SCI2Cconvol.h"
+
diff --git a/2.3-1/macros/CFiles/sci2ccode/SCI2Cfft.c b/2.3-1/macros/CFiles/sci2ccode/SCI2Cfft.c
new file mode 100644
index 00000000..9cced2e1
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2ccode/SCI2Cfft.c
@@ -0,0 +1,13 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#include "SCI2Cfft.h"
+
+
diff --git a/2.3-1/macros/CFiles/sci2cincludes/ConvertPrecision.h b/2.3-1/macros/CFiles/sci2cincludes/ConvertPrecision.h
new file mode 100644
index 00000000..0546432d
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/ConvertPrecision.h
@@ -0,0 +1,18 @@
+/*
+** -*- C -*-
+**
+** ConvertPrecision.h
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+** Copyright Raffaele Nutricato 2008
+*/
+
+#ifndef __ConvertPrecision_H__
+#define __ConvertPrecision_H__
+
+
+double s0doubled0(float in);
+void s2doubled2(float* in, int* inSize, double* out);
+float d0floats0(double in);
+void d2floats2(double* in, int* inSize, float* out);
+#endif /* !__ConvertPrecision_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/FileManagement.h b/2.3-1/macros/CFiles/sci2cincludes/FileManagement.h
new file mode 100644
index 00000000..937a66ef
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/FileManagement.h
@@ -0,0 +1,13 @@
+/*
+** -*- C -*-
+**
+** FileManagement.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Rubby Nutricato 2007
+** 31-dec-2007
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpEqual.h b/2.3-1/macros/CFiles/sci2cincludes/OpEqual.h
new file mode 100644
index 00000000..da36059a
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpEqual.h
@@ -0,0 +1,33 @@
+/*
+** -*- C -*-
+**
+** OpEqual.h
+** Made by Raffaele Nutricato
+**
+**
+*/
+
+#ifndef __OPEQUAL_H__
+#define __OPEQUAL_H__
+
+#include <string.h>
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+/*
+** Compute Opequal for different types .
+*/
+
+float sOpEquals1(float x);
+double dOpEquals1(double x);
+floatComplex c0OpEqualc0(floatComplex x);
+doubleComplex z0OpEqualz0(doubleComplex x);
+char g0OpEqualg0(char x);
+
+void sOpEquala1(float* x, int size, float* y);
+void dOpEquala1(double* x, int size, double* y);
+void c2OpEqualc2(floatComplex* x, int* xSize, floatComplex* y);
+void z2OpEqualz2(doubleComplex* x, int* xSize, doubleComplex* y);
+void g2OpEqualg2(char* x, int* xSize, char* y);
+
+#endif /* !__OPEQUAL_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpExt.h b/2.3-1/macros/CFiles/sci2cincludes/OpExt.h
new file mode 100644
index 00000000..7d8a77f7
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpExt.h
@@ -0,0 +1,108 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+/*
+ Modify by Arnaud Torset : 20/02/09
+*/
+
+#ifndef __OPEXT_H__
+#define __OPEXT_H__
+
+#define s2s0OpExts0(in1,size,in2) in1[in2-1];
+#define d2d0OpExtd0(in1,size,in2) in1[in2-1];
+#define c2s0OpExtc0(in1,size,in2) in1[in2-1];
+#define z2d0OpExtz0(in1,size,in2) in1[in2-1];
+
+
+#define s2s0s0OpExts0(in1,size,row,col) in1[(col-1)*size[0]+row-1];
+#define d2d0d0OpExtd0(in1,size,row,col) in1[(col-1)*size[0]+row-1];
+#define c2s0s0OpExtc0(in1,size,row,col) in1[(col-1)*size[0]+row-1];
+#define z2d0d0OpExtz0(in1,size,row,col) in1[(col-1)*size[0]+row-1];
+
+
+#define s2s2OpExts2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1];\
+ }
+
+#define d2d2OpExtd2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1];\
+ }
+
+#define c2s2OpExtc2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1;i++]) out[i]=in1[(int)in2[i]-1];\
+ }
+
+#define z2d2OpExtz2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1];\
+ }
+
+
+
+#define s2s2s0OpExts2(in1,size1,rows,size2,col,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=s2s0s0OpExts0(in1,size1,(int)rows[i],col);\
+ }
+
+#define d2d2d0OpExtd2(in1,size1,rows,size2,col,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=d2d0d0OpExtd0(in1,size1,(int)rows[i],col);\
+ }
+
+#define c2s2s0OpExtc2(in1,size1,rows,size2,col,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=c2s0s0OpExtc0(in1,size1,(int)rows[i],col);\
+ }
+
+#define z2d2d0OpExtz2(in1,size1,rows,size2,col,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=z2d0d0OpExtz0(in1,size1,(int)rows[i],col);\
+ }
+
+#define s2s0s2OpExts2(in1,size1,row,cols,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=s2s0s0OpExts0(in1,size1,row,(int)cols[i]);\
+ }
+
+#define d2d0d2OpExtd2(in1,size1,row,cols,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=d2d0d0OpExtd0(in1,size1,row,(int)cols[i]);\
+ }
+
+#define c2s0s2OpExtc2(in1,size1,row,cols,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=c2s0s0OpExtc0(in1,size1,row,(int)cols[i]);\
+ }
+
+#define z2d0d2OpExtz2(in1,size1,row,cols,size2,out) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=z2d0d0OpExtz0(in1,size1,row,(int)cols[i]);\
+ }
+
+
+#define s2s2s2OpExts2(in1,size1,rows,size2,cols,size3,out) {int i,j;\
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
+ }
+
+#define d2d2d2OpExtd2(in1,size1,rows,size2,cols,size3,out) {int i,j;\
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
+ }
+
+#define c2s2s2OpExtc2(in1,size1,rows,size2,cols,size3,out) {int i,j;\
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
+ }
+
+#define z2d2d2OpExtz2(in1,size1,rows,size2,cols,size3,out) {int i,j;\
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
+ }
+
+
+
+
+
+#endif /* !__OPEXT_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpLogAnd.h b/2.3-1/macros/CFiles/sci2cincludes/OpLogAnd.h
new file mode 100644
index 00000000..8d61a59c
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpLogAnd.h
@@ -0,0 +1,23 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+#ifndef __OPLOGAND_H__
+#define __OPLOGAND_H__
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#define s0s0OpLogAnds0(in1,in2) \
+ (float) (in1 && in2)
+void s2s0OpLogAnds2(float* in1, int* in1Size, float in2, float* out);
+
+#define d0d0OpLogAndd0(in1,in2) \
+ (double) (in1 && in2)
+void d2d0OpLogAndd2(double* in1, int* in1Size, double in2, double* out);
+#endif /* !__OPLOGAND_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpLogGe.h b/2.3-1/macros/CFiles/sci2cincludes/OpLogGe.h
new file mode 100644
index 00000000..ddc9631f
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpLogGe.h
@@ -0,0 +1,36 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Started on Tue Dec 5 15:49:18 2006 jofret
+** Last update Mon Oct 22 10:01:54 2007 bruno
+**
+** Copyright INRIA 2006
+*/
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+#ifndef __OPLOGGE_H__
+#define __OPLOGGE_H__
+
+
+#define s0s0OpLogGes0(in1,in2) \
+ (float) (in1 >= in2)
+void s2s0OpLogGes2(float* in1, int* in1Size, float in2, float* out);
+
+#define d0d0OpLogGed0(in1,in2) \
+ (double) (in1 >= in2)
+void d2d0OpLogGed2(double* in1, int* in1Size, double in2, double* out);
+
+/* we must have size1=size2 */
+
+#define s2s2OpLogGes2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1]) out[i] = s0s0OpLogGes0(in1[i],in2[i]);\
+ }
+#define d2d2OpLogGed2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1]) out[i] = d0d0OpLogGed0(in1[i],in2[i]);\
+ }
+#endif /* !__OPLOGLE_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpLogLe.h b/2.3-1/macros/CFiles/sci2cincludes/OpLogLe.h
new file mode 100644
index 00000000..7bc0c3af
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpLogLe.h
@@ -0,0 +1,37 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Started on Tue Dec 5 15:49:18 2006 jofret
+** Last update Mon Oct 22 10:01:54 2007 bruno
+**
+** Copyright INRIA 2006
+*/
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+
+#ifndef __OPLOGLE_H__
+#define __OPLOGLE_H__
+
+
+#define s0s0OpLogLes0(in1,in2) \
+ (float) (in1 <= in2)
+void s2s0OpLogLes2(float* in1, int* in1Size, float in2, float* out);
+
+#define d0d0OpLogLed0(in1,in2) \
+ (double) (in1 <= in2)
+void d2d0OpLogLed2(double* in1, int* in1Size, double in2, double* out);
+
+/* we must have size1=size2 */
+
+#define s2s2OpLogLes2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1]) out[i] = s0s0OpLogLes0(in1[i],in2[i]);\
+ }
+#define d2d2OpLogLed2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1]) out[i] = d0d0OpLogLed0(in1[i],in2[i]);\
+ }
+#endif /* !__OPLOGLE_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpLogLt.h b/2.3-1/macros/CFiles/sci2cincludes/OpLogLt.h
new file mode 100644
index 00000000..2962f151
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpLogLt.h
@@ -0,0 +1,35 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Started on Tue Dec 5 15:49:18 2006 jofret
+** Last update Mon Oct 22 10:01:54 2007 bruno
+**
+** Copyright INRIA 2006
+*/
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+#ifndef __OPLOGLT_H__
+#define __OPLOGLT_H__
+
+#define s0s0OpLogLts0(in1,in2) \
+ (float) (in1 < in2)
+void s2s0OpLogLts2(float* in1, int* in1Size, float in2, float* out);
+
+#define d0d0OpLogLtd0(in1,in2) \
+ (double) (in1 < in2)
+void d2d0OpLogLtd2(double* in1, int* in1Size, double in2, double* out);
+
+/* we must have size1=size2 */
+
+#define s2s2OpLogLts2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1]) out[i] = s0s0OpLogLts0(in1[i],in2[i]);\
+ }
+#define d2d2OpLogLtd2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1]) out[i] = d0d0OpLogLtd0(in1[i],in2[i]);\
+ }
+#endif /* !__OPLOGLT_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/OpLogOr.h b/2.3-1/macros/CFiles/sci2cincludes/OpLogOr.h
new file mode 100644
index 00000000..331cae78
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/OpLogOr.h
@@ -0,0 +1,23 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+#ifndef __OPLOGOR_H__
+#define __OPLOGOR_H__
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#define s0s0OpLogOrs0(in1,in2) \
+ (float) (in1 || in2)
+void s2s0OpLogOrs2(float* in1, int* in1Size, float in2, float* out);
+
+#define d0d0OpLogOrd0(in1,in2) \
+ (double) (in1 || in2)
+void d2d0OpLogOrd2(double* in1, int* in1Size, double in2, double* out);
+#endif /* !__OPLOGOR_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/RealToComplex.h b/2.3-1/macros/CFiles/sci2cincludes/RealToComplex.h
new file mode 100644
index 00000000..6de98be2
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/RealToComplex.h
@@ -0,0 +1,33 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+
+#ifndef __REALTOCOMPLEX_H__
+#define __REALTOCOMPLEX_H__
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+floatComplex s0floatcomplexc0(float in);
+floatComplex d0floatcomplexc0(double in);
+floatComplex c0floatcomplexc0(floatComplex in);
+floatComplex z0floatcomplexc0(doubleComplex in);
+void s2floatcomplexc2(float* in, int* inSize, floatComplex* out);
+void d2floatcomplexc2(double* in, int* inSize, floatComplex* out);
+void c2floatcomplexc2(floatComplex* in, int* inSize, floatComplex* out);
+void z2floatcomplexc2(doubleComplex* in, int* inSize, floatComplex* out);
+
+doubleComplex s0doublecomplexz0(float in);
+doubleComplex d0doublecomplexz0(double in);
+doubleComplex c0doublecomplexz0(floatComplex in);
+doubleComplex z0doublecomplexz0(doubleComplex in);
+void s2doublecomplexz2(float* in, int* inSize, doubleComplex* out);
+void d2doublecomplexz2(double* in, int* inSize, doubleComplex* out);
+void c2doublecomplexz2(floatComplex* in, int* inSize, doubleComplex* out);
+void z2doublecomplexz2(doubleComplex* in, int* inSize, doubleComplex* out);
+#endif /* !__REALTOCOMPLEX_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/SCI2CMacroInterface.h b/2.3-1/macros/CFiles/sci2cincludes/SCI2CMacroInterface.h
new file mode 100644
index 00000000..4e129a76
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/SCI2CMacroInterface.h
@@ -0,0 +1,281 @@
+/*
+** ----------------------
+** --- Class OPEQUAL. ---
+** ----------------------
+*/
+/* --- Equal. --- */
+#define s0OpEquals0(in) \
+sOpEquals1(in);
+
+#define s2OpEquals2(inptr,insizeptr,outptr) \
+sOpEquala1(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define d0OpEquald0(in) \
+dOpEquals1(in);
+
+#define d2OpEquald2(inptr,insizeptr,outptr) \
+dOpEquala1(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+/*
+// ---------------------
+// --- Class OPSTAR. ---
+// ---------------------
+*/
+/* --- OpStar. ---
+#define s0s0OpStars0(in1,in2) \
+ssOpStarss1(in1,in2);
+
+#define s0s2OpStars2(in1,inptr2,insizeptr2,outptr) \
+ssOpStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);
+
+#define s2s0OpStars2(inptr2,insizeptr2,in1,outptr) \
+ssOpStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);*/
+/*questa su e' una macro
+
+#define s2s2OpStars2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \
+ssOpStaraa1(inptr1,insizeptr1[0],insizeptr1[1], inptr2, insizeptr2[1], outptr);
+
+#define d0d0OpStard0(in1,in2) \
+ddOpStarss1(in1,in2);
+
+#define d0d2OpStard2(in1,inptr2,insizeptr2,outptr) \
+ddOpStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)
+
+#define d2d0OpStard2(inptr2,insizeptr2,in1,outptr) \
+ddOpStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)*/
+/*questa su e' una macro
+
+#define d2d2OpStard2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \
+ddOpStaraa1(inptr1,insizeptr1[0],insizeptr1[1], inptr2, insizeptr2[1], outptr);*/
+
+/*
+// ---------------------
+// --- Class OPPLUS. ---
+// ---------------------
+*/
+/* --- OpPlus. ---*/
+/*RN volendo puoi fare una sola macro del tipo sa1() che serve per tutte le operazioni
+#define s0s0OpPluss0(in1,in2) \
+ssOpPlusss1(in1,in2);
+
+#define s0s2OpPluss2(in1,inptr2,insizeptr2,outptr) \
+ssOpPlussa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);
+
+#define s2s2OpPluss2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \
+ssOpPlusaa1(inptr1,inptr2, insizeptr1[0]*insizeptr1[1], outptr)
+
+#define s2s0OpPluss2(inptr2,insizeptr2,in1,outptr) \
+ssOpPlussa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);*/
+/*questa su e' una macro
+
+#define d0d0OpPlusd0(in1,in2) \
+ddOpPlusss1(in1,in2);
+
+#define d2d2OpPlusd2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \
+ddOpPlusaa1(inptr1,inptr2, insizeptr1[0]*insizeptr1[1], outptr);
+
+#define d0d2OpPlusd2(in1,inptr2,insizeptr2,outptr) \
+ddOpPlussa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)
+
+#define d2d0OpPlusd2(inptr2,insizeptr2,in1,outptr) \
+ddOpPlussa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)*/
+/*questa su e' una macro */
+
+
+/* --- OpDotStar. ---*/
+/*#define s0s0OpDotStars0(in1,in2) \
+ssOpDotStarss1(in1,in2);
+
+#define s0s2OpDotStars2(in1,inptr2,insizeptr2,outptr) \
+ssOpDotStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);
+
+#define s2s2OpDotStars2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \
+ssOpDotStaraa1(inptr1,inptr2, insizeptr1[0]*insizeptr1[1], outptr)
+
+#define s2s0OpDotStars2(inptr2,insizeptr2,in1,outptr) \
+ssOpDotStarsa1(in1,inptr2, insizeptr2[0]*insizeptr2[1], outptr);
+questa su e' una macro */
+
+/*#define d0d0OpDotStard0(in1,in2) \
+ddOpDotStarss1(in1,in2);
+
+#define d2d2OpDotStard2(inptr1,insizeptr1,inptr2,insizeptr2,outptr) \
+ddOpDotStaraa1(inptr1,inptr2, insizeptr1[0]*insizeptr1[1], outptr);
+
+#define d0d2OpDotStard2(in1,inptr2,insizeptr2,outptr) \
+ddOpDotStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)
+
+#define d2d0OpDotStard2(inptr2,insizeptr2,in1,outptr) \
+ddOpDotStarsa1(in1,inptr2, (insizeptr2[0]) * (insizeptr2[1]), outptr)
+questa su e' una macro */
+
+/*
+// ---------------------
+// --- Class ^. ---
+// ---------------------
+*/
+/*RN DA FARE ANCORA forse la si puo' integrare dentro le operazioni OPPLUS*/
+
+/*
+// ---------------------
+// --- Class OPAPEX. ---
+// ---------------------
+*/
+/* --- OpApex. ---
+#define s0OpApexs0(in) \
+sOpApexs(in);
+
+#define d0OpApexd0(in) \
+dOpApexs(in);
+
+#define s2OpApexs2(inptr,insizeptr,outptr) \
+sOpApexa(inptr, insizeptr[0],insizeptr[1], outptr);
+
+#define d2OpApexd2(inptr,insizeptr,outptr) \
+dOpApexa(inptr, insizeptr[0],insizeptr[1], outptr);
+*/
+/*
+// ---------------------
+// --- Class SIN. ---
+// ---------------------
+*/
+/* --- sin. ---*/ /*
+#define s0sins0(inptr) \
+ssins(inptr);
+
+#define d0sind0(inptr) \
+dsins(inptr);
+
+#define c0sinc0(inptr) \
+csins(inptr);
+
+#define z0sinz0(inptr) \
+zsins(inptr);
+
+#define s2sins2(inptr,insizeptr,outptr) \
+ssina(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define d2sind2(inptr,insizeptr,outptr) \
+dsina(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define c2sinc2(inptr,insizeptr,outptr) \
+csina(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define z2sinz2(inptr,insizeptr,outptr) \
+zsina(inptr, insizeptr[0]*insizeptr[1], outptr);
+ */
+/* --- cos. ---*/ /*
+#define s0coss0(inptr) \
+scoss(inptr);
+
+#define d0cosd0(inptr) \
+dcoss(inptr);
+
+#define c0cosc0(inptr) \
+ccoss(inptr);
+
+#define z0cosz0(inptr) \
+zcoss(inptr);
+
+#define s2coss2(inptr,insizeptr,outptr) \
+scosa(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define d2cosd2(inptr,insizeptr,outptr) \
+dcosa(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define c2cosc2(inptr,insizeptr,outptr) \
+ccosa(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define z2cosz2(inptr,insizeptr,outptr) \
+zcosa(inptr, insizeptr[0]*insizeptr[1], outptr);
+ */
+/* --- sinh. ---*/ /*
+#define s0sinhs0(inptr) \
+ssinhs(inptr);
+
+#define d0sinhd0(inptr) \
+dsinhs(inptr);
+
+#define c0sinhc0(inptr) \
+csinhs(inptr);
+
+#define z0sinhz0(inptr) \
+zsins(inptr);
+
+#define s2sinhs2(inptr,insizeptr,outptr) \
+ssinha(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define d2sinhd2(inptr,insizeptr,outptr) \
+dsinha(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define c2sinhc2(inptr,insizeptr,outptr) \
+csinha(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+#define z2sinhz2(inptr,insizeptr,outptr) \
+zsinha(inptr, insizeptr[0]*insizeptr[1], outptr);
+
+*/
+/*
+// ---------------------
+// --- Class DISP. ---
+// ---------------------
+*//*
+#define s0dispd0(invar) \
+sdisps2 (invar, #invar );
+
+#define d0dispd0(invar) \
+ddisps2 (invar, #invar );
+
+#define c0dispd0(invar) \
+cdisps2 (invar, #invar );
+
+#define z0dispd0(invar) \
+zdisps2 (invar, #invar );
+
+#define s2dispd0(invar,insize) \
+sdispa2 (invar, insize, #invar );
+
+#define d2dispd0(invar,insize) \
+ddispa2 (invar, insize, #invar );
+
+#define c2dispd0(invar,insize) \
+cdispa2 (invar, insize, #invar );
+
+#define z2dispd0(invar,insize) \
+zdispa2 (invar, insize, #invar );
+
+#define i2dispd0(invar,insize) \
+idispa2 (invar, insize, #invar );*/
+/*
+// --------------------
+// --- Class ZEROS. ---
+// --------------------
+*/
+/* --- ones. ---*/ /*
+#define d0d0onesd2(inptr1,inptr2,outptr) \
+ddonesss1(inptr1, inptr2, outptr);
+
+#define onesd0() \
+1
+
+#define d0onesd0(in1) \
+1
+
+#define d2onesd2(inptr,insizeptr,outptr) \
+ddonesss1(insizeptr[0], insizeptr[1], outptr);
+
+#define d0d0onesd2(inptr1,inptr2,outptr) \
+ddonesss1(inptr1, inptr2, outptr);
+
+#define s0s0oness2(inptr1,inptr2,outptr) \
+ssonesss1(inptr1, inptr2, outptr);
+
+#define oness0() \
+1
+
+#define s0oness0(in1) \
+1
+
+#define s2oness2(inptr,insizeptr,outptr) \
+ssonesss1(insizeptr[0], insizeptr[1], outptr);
+*/
diff --git a/2.3-1/macros/CFiles/sci2cincludes/SCI2Cconvol.h b/2.3-1/macros/CFiles/sci2cincludes/SCI2Cconvol.h
new file mode 100644
index 00000000..3fb3b9e9
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/SCI2Cconvol.h
@@ -0,0 +1,15 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#ifndef __CONVOL_H__
+#define __CONVOL_H__
+
+#include "SCI2CMacroInterface.h"
+#endif /* !__CONVOL_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/SCI2Cfft.h b/2.3-1/macros/CFiles/sci2cincludes/SCI2Cfft.h
new file mode 100644
index 00000000..f82b74b4
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/SCI2Cfft.h
@@ -0,0 +1,16 @@
+/*
+** -*- C -*-
+**
+** OpDotSlash.c
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright Raffaele Nutricato 2007
+*/
+
+#ifndef __SCI2CFFT_H__
+#define __SCI2CFFT_H__
+
+#include "SCI2CMacroInterface.h"
+
+#endif /* !__SCI2CFFT_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cincludes/notFound.h b/2.3-1/macros/CFiles/sci2cincludes/notFound.h
new file mode 100644
index 00000000..59d8c2fe
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cincludes/notFound.h
@@ -0,0 +1,18 @@
+/*
+** -*- C -*-
+**
+** notFound.h
+** Made by Bruno JOFRET <bruno.jofret@inria.fr>
+**
+** Started on Thu Feb 8 10:12:17 2007 jofret
+** Last update Tue Feb 13 17:16:47 2007 jofret
+**
+** Copyright INRIA 2007
+*/
+
+#ifndef __NOT_FOUND_H__
+#define __NOT_FOUND_H__
+
+#define NOT_FOUND -1
+
+#endif /* !__NOT_FOUND_H__ */
diff --git a/2.3-1/macros/CFiles/sci2cobj/readme.txt b/2.3-1/macros/CFiles/sci2cobj/readme.txt
new file mode 100644
index 00000000..54f467f7
--- /dev/null
+++ b/2.3-1/macros/CFiles/sci2cobj/readme.txt
@@ -0,0 +1,2 @@
+for the moment the makefile generates the obj files in
+the source directory where .c files are stored. \ No newline at end of file
diff --git a/2.3-1/macros/ErrorMessages/EM_NanSize.sci b/2.3-1/macros/ErrorMessages/EM_NanSize.sci
new file mode 100644
index 00000000..60877389
--- /dev/null
+++ b/2.3-1/macros/ErrorMessages/EM_NanSize.sci
@@ -0,0 +1,82 @@
+function EM_NanSize(ReportFileName)
+// function EM_NanSize(ReportFileName)
+// -----------------------------------------------------------------
+//
+// Input data:
+// //NUT: Add description here
+//
+// Output data:
+// //NUT: Add description here
+//
+// Status:
+// 13-Feb-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+PrintStringInfo(' ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Cannot initialize a local or global variable with a variable value',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: coming from a function or an operation.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: See code below:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: a = 10;',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: b = 10;',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: c = a+b;',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: D = zeros(a,b); // Allowed',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: E = zeros(10,b); // Allowed',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: F = zeros(10,5); // Allowed',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: G = zeros(10,c); // Not Allowed because c value is not known at transation time.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: H = 10:c:9;// Not Allowed because c value is not known at transation time.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: The same problem arises in for loops.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: SCI2C forbids use of step values in ""for"" loops which come from ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: a function or an operation.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Always specify its value.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Example: ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Scilab Code:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: unkstep = 2*cos(0); // It means that unkstep is not known at translation time.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for cnt=10:unkstep:1',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: end',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: The code above is not allowed. You can change it as shown below:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: unkstep = 2; // This time the value of unkstep is known at translation time.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for cnt=10:unkstep:1',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: end',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: The reason for this limitation is related to the impossibility to generate optimized C code.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: when the step is unknown.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Look at the following example for more details,',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Scilab Code:;',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for cnt=10:unkstep:1',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: end',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: If unkstep variable value is unkwnown it is not possible to generate',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: optimized C code.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Infact, if unkstep is >= 0, the correct C code is:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10;cnt<=1;cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: If unkstep is < 0 the correct C code is:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10; cnt>=1; cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Note how the condition cnt<=1 changes to cnt>=1.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: In order to take into account of this possibility ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: SCI2C translator should generate both codes and then ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: insert them into an if/else block as shown here: ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: if (unkstep >= 0)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: {',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10;cnt<=1;cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: }',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: else{',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: {',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10;cnt<=1;cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: }',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Of course it is not optimized C code.',ReportFileName,'both','y');
+PrintStringInfo(' ',ReportFileName,'both','y');
+SCI2Cerror(9999, 'SCI2CERROR: Cannot initialize a local or global variable with a variable value coming from a function or an operation.');
+endfunction
diff --git a/2.3-1/macros/ErrorMessages/EM_UnknownStep.sci b/2.3-1/macros/ErrorMessages/EM_UnknownStep.sci
new file mode 100644
index 00000000..e9e37c2d
--- /dev/null
+++ b/2.3-1/macros/ErrorMessages/EM_UnknownStep.sci
@@ -0,0 +1,70 @@
+function EM_UnknownStep(ReportFileName)
+// function EM_UnknownStep(ReportFileName)
+// -----------------------------------------------------------------
+//
+// Input data:
+// //NUT: Add description here
+//
+// Output data:
+// //NUT: Add description here
+//
+// Status:
+// 13-Feb-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+PrintStringInfo(' ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: SCI2C forbids use of step values in ""for"" loops which come from ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: a function or an operation.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Always specify its value.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Example: ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Scilab Code:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: unkstep = 2*cos(0); // It means that unkstep is not known at translation time.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for cnt=10:unkstep:1',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: end',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: The code above is not allowed. You can change it as shown below:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: unkstep = 2; // This time the value of unkstep is known at translation time.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for cnt=10:unkstep:1',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: end',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: The reason for this limitation is related to the impossibility to generate optimized C code.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: when the step is unknown.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Look at the following example for more details,',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Scilab Code:;',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for cnt=10:unkstep:1',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: end',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: If unkstep variable value is unkwnown it is not possible to generate',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: optimized C code.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Infact, if unkstep is >= 0, the correct C code is:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10;cnt<=1;cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: If unkstep is < 0 the correct C code is:',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10; cnt>=1; cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Note how the condition cnt<=1 changes to cnt>=1.',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: In order to take into account of this possibility ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: SCI2C translator should generate both codes and then ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: insert them into an if/else block as shown here: ',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: if (unkstep >= 0)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: {',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10;cnt<=1;cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: }',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: else{',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: {',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: for (cnt=10;cnt<=1;cnt+=unkstep)',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: disp(cnt);',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: }',ReportFileName,'both','y');
+PrintStringInfo('SCI2CERROR: Of course it is not optimized C code.',ReportFileName,'both','y');
+PrintStringInfo(' ',ReportFileName,'both','y');
+error(9999, 'SCI2C forbids use of step values in ""for"" loops which come from a function or an operation.');
+endfunction
diff --git a/2.3-1/macros/ErrorMessages/EM_ZeroSize.sci b/2.3-1/macros/ErrorMessages/EM_ZeroSize.sci
new file mode 100644
index 00000000..7cee5b9f
--- /dev/null
+++ b/2.3-1/macros/ErrorMessages/EM_ZeroSize.sci
@@ -0,0 +1,27 @@
+function EM_ZeroSize(ReportFileName)
+// function EM_ZeroSize(ReportFileName)
+// -----------------------------------------------------------------
+//
+// Input data:
+// //NUT: Add description here
+//
+// Output data:
+// //NUT: Add description here
+//
+// Status:
+// 13-Feb-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+PrintStringInfo('SCI2CERROR: Cannot handle zero-size arrays.',ReportFileName,'both','y');
+PrintStringInfo(' ',ReportFileName,'both','y');
+error(9999, 'SCI2CERROR: Cannot handle zero-size arrays.');
+
+endfunction
diff --git a/2.3-1/macros/ErrorMessages/buildmacros.sce b/2.3-1/macros/ErrorMessages/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/ErrorMessages/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/ErrorMessages/lib b/2.3-1/macros/ErrorMessages/lib
new file mode 100644
index 00000000..5370e124
--- /dev/null
+++ b/2.3-1/macros/ErrorMessages/lib
Binary files differ
diff --git a/2.3-1/macros/ErrorMessages/names b/2.3-1/macros/ErrorMessages/names
new file mode 100644
index 00000000..f55e8f8b
--- /dev/null
+++ b/2.3-1/macros/ErrorMessages/names
@@ -0,0 +1,3 @@
+EM_NanSize
+EM_UnknownStep
+EM_ZeroSize
diff --git a/2.3-1/macros/FunctionAnnotation/FA_ADD.sci b/2.3-1/macros/FunctionAnnotation/FA_ADD.sci
new file mode 100644
index 00000000..4193422b
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_ADD.sci
@@ -0,0 +1,43 @@
+function opout = FA_ADD(in1,in2)
+// function opout = FA_ADD(in1,in2)
+// -----------------------------------------------------------------
+// Addition function for Function Annotations.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1) & isnum(in2))
+ in1num = eval(in1);
+ in2num = eval(in2);
+ outnum = in1num+in2num;
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+else
+ opout = string('('+in1+'+'+in2+')');
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_DIV.sci b/2.3-1/macros/FunctionAnnotation/FA_DIV.sci
new file mode 100644
index 00000000..d4ec0ccd
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_DIV.sci
@@ -0,0 +1,41 @@
+function opout = FA_DIV(in1,in2)
+// function opout = FA_DIV(in1,in2)
+// -----------------------------------------------------------------
+// Division function for Function Annotations.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1) & isnum(in2))
+ in1num = eval(in1);
+ in2num = eval(in2);
+ outnum = in1num/in2num;
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+else
+ opout = '('+string(in1)+'/'+string(in2)+')';
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_GetDefaultPrecision.sci b/2.3-1/macros/FunctionAnnotation/FA_GetDefaultPrecision.sci
new file mode 100644
index 00000000..3603c572
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_GetDefaultPrecision.sci
@@ -0,0 +1,97 @@
+function defaultprecision = FA_GetDefaultPrecision(scifilename,ReportFileName)
+// function defaultprecision = FA_GetDefaultPrecision(scifilename,ReportFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Extracts the default precision for the file .sci passed in input.
+// The following annotation will be searched in the scilab code:
+// //SCI2C: DEFAULT_PRECISION= FLOAT
+// //SCI2C: DEFAULT_PRECISION= DOUBLE
+// If the annotation is missing the default DOUBLE precision will be
+// implicitly used.
+// #RNU_RES_E
+//
+// Input data:
+// ---
+//
+// Output data:
+// defaultprecision: string which specifies the default precision to be
+// used in the translation of scifilename.
+//
+// Status:
+// 12-Feb-2008 -- Raffaele Nutricato: Author.
+// 12-Feb-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+defaultprecision = 'd';
+annotationstring = '//SCI2C: DEFAULT_PRECISION='
+// #RNU_RES_B
+PrintStringInfo('***Get default precision from: '+scifilename,ReportFileName,'file','y');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// --- Open the .sci file (read only). ---
+scifid = SCI2COpenFileRead(scifilename);
+
+// #RNU_RES_B
+// --- Loop over the lines of the input file. ---
+// Position file pointer to the desired NInArg/NOutArg section,
+// and read the NOutArg annotation.
+// #RNU_RES_E
+foundannotation = 0;
+line_position = 0;
+while ((meof(scifid) == 0) & (foundannotation == 0))
+ check_string = stripblanks(mgetl(scifid,1));
+ line_position = line_position + 1;
+ if (~isempty(check_string))
+
+ if (SCI2Cstrncmps1size(annotationstring,check_string))
+ tmpprecision = stripblanks(part(check_string,length(annotationstring)+1:length(check_string)));
+ // #RNU_RES_B
+ PrintStringInfo(' Line '+string(line_position)+...
+ ' - Found annotation for default precision'+' ""'+check_string+' ""',...
+ ReportFileName,'file','y');
+ // #RNU_RES_E
+ foundannotation = 1;
+ end
+ end
+end
+
+if (foundannotation == 0)
+ // #RNU_RES_B
+ PrintStringInfo('Annotation for default precision not found.',ReportFileName,'file','y');
+ PrintStringInfo('Using the ""DOUBLE"" default precision.',ReportFileName,'file','y');
+ // #RNU_RES_E
+else
+ if (tmpprecision == 'FLOAT')
+ defaultprecision = 's';
+ elseif (tmpprecision == 'DOUBLE')
+ defaultprecision = 'd';
+ elseif (tmpprecision == 'UINT8')
+ defaultprecision = 'u8';
+ elseif (tmpprecision == 'INT8')
+ defaultprecision = 'i8';
+ elseif (tmpprecision == 'UINT16')
+ defaultprecision = 'u16';
+ elseif (tmpprecision == 'INT16')
+ defaultprecision = 'i16';
+ elseif (tmpprecision == 'CVIMAGE')
+ defaultprecision = 'IplImage'
+
+ end
+end
+
+mclose(scifid);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci b/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci
new file mode 100644
index 00000000..d11e3cee
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci
@@ -0,0 +1,216 @@
+function [FunTypeAnnot,FunSizeAnnot,NOutArg_mod] = ...
+ FA_GetFunAnn(NInArg,NOutArg,FunName,FileInfo,SharedInfo)
+// function [FunTypeAnnot,FunSizeAnnot] = ...
+// FA_GetFunAnn(NInArg,NOutArg,FunName,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function extracts the TYPE and SIZE annotations from the
+// input .ann file.
+// No blank lines are allowed between function annotations.
+//
+// #RNU_RES_E
+// Input data:
+// //NUT: Add description here
+//
+// Output data:
+// //NUT: Add description here
+//
+// Status:
+// 11-Jul-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+//NUT: consider the possibility to split this function into more functions.
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Reading function annotations***',ReportFileName,'file','y');
+// #RNU_RES_E
+SCI2CClassFileName = GetClsFileName(FunName,FileInfo,SharedInfo);
+FunTypeAnnot = '';
+FunSizeAnnot = '';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+// ---------------------------------------------
+// --- Read the annotations of the function. ---
+// ---------------------------------------------
+// --- Open the .sci file (read only). ---
+inclsfid = SCI2COpenFileRead(SCI2CClassFileName);
+
+// #RNU_RES_B
+// --- Loop over the lines of the input file. ---
+// Position file pointer to the desired NInArg/NOutArg section,
+// and read the NOutArg annotation.
+// #RNU_RES_E
+FoundNIn = 0;
+FoundNOut = 0;
+line_position = 0;
+while ((meof(inclsfid) == 0) & (FoundNIn == 0) & (FoundNOut == 0))
+ check_string = stripblanks(mgetl(inclsfid,1));
+ line_position = line_position + 1;
+ if (~isempty(check_string))
+
+// #RNU_RES_B
+// --- Search for the NIN annotation. ---
+// #RNU_RES_E
+ if (SCI2Cstrncmps1size(SharedInfo.Annotations.FUNNIN,check_string))
+ FUNNINAnnot = part(check_string,length(SharedInfo.Annotations.FUNNIN)+1:length(check_string));
+
+// #RNU_RES_B
+// --- Check NIN value. ---
+// #RNU_RES_E
+ if (eval(FUNNINAnnot) == NInArg)
+// #RNU_RES_B
+ PrintStringInfo(' Line '+string(line_position)+' - Function NInArg Annotation: '+' ""'+check_string+' ""',...
+ ReportFileName,'file','y');
+// #RNU_RES_E
+ FoundNIn = 1;
+ check_string = stripblanks(mgetl(inclsfid,1));
+ line_position = line_position + 1;
+ if (~isempty(check_string))
+
+// #RNU_RES_B
+// --- Search for the NOUT annotation. ---
+// #RNU_RES_E
+ if (SCI2Cstrncmps1size(SharedInfo.Annotations.FUNNOUT,check_string))
+ FUNNOUTAnnot = part(check_string,length(SharedInfo.Annotations.FUNNOUT)+1:length(check_string));
+// #RNU_RES_B
+// --- Check NOUT value. ---
+// #RNU_RES_E
+ if (eval(FUNNOUTAnnot) == NOutArg)
+// #RNU_RES_B
+ PrintStringInfo(' Line '+string(line_position)+' - Function NOutArg Annotation: '+' ""'+check_string+' ""',...
+ ReportFileName,'file','y');
+// #RNU_RES_E
+ FoundNOut = 1;
+ elseif(eval(FUNNOUTAnnot) == 0)
+ FoundNOut = 1
+ else
+ FoundNIn = 0;
+ end
+ else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Incorrect format for function annotation.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Expected '+SharedInfo.Annotations.FUNNIN+' field in the annotations of the function.',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Incorrect format for function annotation.');
+ end
+ else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Incorrect format for function annotation.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Expected '+SharedInfo.Annotations.FUNNIN+' field in the annotations of the function.',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Incorrect format for function annotation.');
+ end
+ end
+ end
+ end
+end
+
+if (FoundNOut*FoundNIn == 0)
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Please check file: '+SCI2CClassFileName,ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Incorrect function annotation.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: There are two possibilities:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: 1. Syntax error in function annotations.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: 2. Missing the right combination of NIN/NOUT annotations: ""'+SharedInfo.Annotations.FUNNIN+string(NInArg)+','+SharedInfo.Annotations.FUNNOUT+' '+string(NOutArg)+'"".',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Incorrect function annotation.');
+else
+ //This change has been made in order to supress the generation
+ //of output variables in case of functions which do not return
+ //anything.
+ if(eval(FUNNOUTAnnot) == 0)
+ NOutArg_mod = 0;
+ else
+ NOutArg_mod = NOutArg
+ end
+
+ // In case we are reading to much informations
+ readNewLine = %t;
+
+ for cntout = 1:NOutArg
+ SCI2C_nout=cntout; // Useful for eval.
+
+// #RNU_RES_B
+// Read the Fun type annotation.
+// #RNU_RES_E
+ if (readNewLine == %t)
+ check_string = stripblanks(mgetl(inclsfid,1));
+ line_position = line_position + 1;
+ else
+ // reset state
+ readNewLine = %t;
+ end
+ if (isempty(check_string) == %F)
+ tmpannstring = eval(SharedInfo.Annotations.FUNTYPE);
+ if (SCI2Cstrncmps1size(tmpannstring,check_string))
+// #RNU_RES_B
+ PrintStringInfo(' Line '+string(line_position)+' - Function Type Annotation: '+' ""'+check_string+' ""',...
+ ReportFileName,'file','y');
+// #RNU_RES_E
+ FunTypeAnnot(cntout) = ...
+ stripblanks(part(check_string,length(tmpannstring)+1:length(check_string)));
+ end
+ else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Line '+string(line_position)+' Function type annotation not found in file: '+SCI2CClassFileName,ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Line '+string(line_position)+' Function type annotation not found in file: '+SCI2CClassFileName);
+ end
+
+// #RNU_RES_B
+// --- Read the Fun size annotation. ---
+// #RNU_RES_E
+ SCI2C_nelem = 0; // Useful for eval.
+// while(SCI2C_nelem < 2 & isempty(check_string) == %F)
+ while(SCI2C_nelem < 3 & isempty(check_string) == %F)
+ line_position = line_position + 1;
+// #RNU_RES_B
+ PrintStringInfo(' Line '+string(line_position)+' - Function Size Annotation: '+' ""'+check_string+' ""',...
+ ReportFileName,'file','y');
+ if (isempty(check_string) == %F)
+ SCI2C_nelem = SCI2C_nelem + 1
+ tmpannstring = eval(SharedInfo.Annotations.FUNSIZE);
+ check_string = stripblanks(mgetl(inclsfid,1));
+ if (SCI2Cstrncmps1size(tmpannstring,check_string))
+// #RNU_RES_E
+ FunSizeAnnot(cntout,SCI2C_nelem) = ...
+ stripblanks(part(check_string,length(tmpannstring)+1:length(check_string)));
+ else
+ readNewLine = %f;
+ end
+ else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Line '+string(line_position)+' Function size annotation not found in file: '+SCI2CClassFileName,ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Line '+string(line_position)+' Function size annotation not found in file: '+SCI2CClassFileName);
+ end
+ end
+ end
+
+
+end
+// --- End loop over the lines of the input file. ---
+mclose(inclsfid);
+// -------------------------------------------------
+// --- End Read the annotations of the function. ---
+// -------------------------------------------------
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_GetOutArgInfo.sci b/2.3-1/macros/FunctionAnnotation/FA_GetOutArgInfo.sci
new file mode 100644
index 00000000..99eaaa5f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_GetOutArgInfo.sci
@@ -0,0 +1,133 @@
+function UpdatedOutArg = ...
+ FA_GetOutArgInfo(InArg,NInArg,OutArg,NOutArg,SharedInfo,FunPrecSpecifier, ...
+ FunTypeAnnot,FunSizeAnnot,ReportFileName,ASTFunName)
+// function UpdatedOutArg = ...
+// FA_GetOutArgInfo(InArg,NInArg,OutArg,NOutArg,SharedInfo,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,ReportFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// InArg is used by eval don't remove it from the function call.
+//
+// #RNU_RES_E
+// Input data:
+// //NUT: Add description here
+//
+// Output data:
+// //NUT: Add description here
+//
+// Status:
+// 25-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),10,10);
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+
+UpdatedOutArg = OutArg;
+for cntin = 1:NInArg
+ IN(cntin).TP = InArg(cntin).Type;
+ for _InArgSize=1:size(InArg(cntin).Size, '*')
+ IN(cntin).SZ(_InArgSize) = InArg(cntin).Size(_InArgSize);
+ end
+ if ((isnan(InArg(cntin).Value)) & (GetSymbolDimension(InArg(cntin).Size) == 0))
+ // #RNU_RES_B
+ // IN(cntin).VAL = '__SCI2CNANSIZE'; //RNU: toglimi
+ //RNU: Replace the value of the variable with its name, in case it is a scalar variable.
+ // #RNU_RES_E
+ IN(cntin).VAL = InArg(cntin).Name;
+ else
+ IN(cntin).VAL = string(InArg(cntin).Value);
+ end
+end
+DefaultPrecision = SharedInfo.DefaultPrecision;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+if (FunTypeAnnot(1) == '')
+ NOutArg = 0;
+
+else
+ NOutArg = max(size(FunTypeAnnot));
+end
+
+flagfindlike = 0;
+
+for counterin = 1:NInArg
+ if (InArg(counterin).FindLike == 1 | InArg(counterin).FindLike == -1)
+ // #RNU_RES_B
+ // Then we must assume that the output will be findlike
+ // 0 = no find-like
+ // 1 = pure find-like
+ //-1 = similar to find-like (out=fun(in)) where in is find-like.
+ // #RNU_RES_E
+ flagfindlike = -1;
+ end
+end
+
+for counterout = 1:NOutArg
+ if(FunTypeAnnot == 'FA_TP_USER')
+ UpdatedOutArg(counterout).Type = FA_TP_USER(FunPrecSpecifier,DefaultPrecision);
+ else
+ UpdatedOutArg(counterout).Type = eval(FunTypeAnnot(counterout));
+ end
+ UpdatedOutArg(counterout).FindLike = 0;
+
+ // This is just to remove the FA_SZ_RTMAX tag ???
+ lengthFA_SZ_RTMAX = length('FA_SZ_RTMAX');
+ if (SCI2Cstrncmps1size('FA_SZ_RTMAX',FunSizeAnnot(counterout,1)))
+ UpdatedOutArg(counterout).FindLike = 1;
+ FunSizeAnnot(counterout,1) = part(FunSizeAnnot(counterout,1),lengthFA_SZ_RTMAX+1:length(FunSizeAnnot(counterout,1)));
+ end
+
+ if (SCI2Cstrncmps1size('FA_SZ_RTMAX',FunSizeAnnot(counterout,2)))
+ UpdatedOutArg(counterout).FindLike = 1;
+ FunSizeAnnot(counterout,2) = part(FunSizeAnnot(counterout,2),lengthFA_SZ_RTMAX+1:length(FunSizeAnnot(counterout,2)));
+ end
+
+ if (flagfindlike == -1)
+ UpdatedOutArg(counterout).FindLike = -1;
+ end
+
+ // #RNU_RES_B
+ // When the size is given by e IN(x).VAL annotation we can have two cases:
+ // IN(x).VAL is a number or IN(x).VAL is %nan. When it is %nan the
+ // size is equal to the name of IN(x).
+ // This is a dynamic memory extension of a local variable and for the moment
+ // we issue an error according to SCI2C specifications
+ // #RNU_RES_E
+ //disp(FunSizeAnnot)
+ for iterOutputPosition=1:size(FunSizeAnnot, 'c')
+ tmpeval = eval(FunSizeAnnot(counterout, iterOutputPosition));
+ if (IsNanSize(tmpeval))
+ if SharedInfo.ForExpr.OnExec == 0
+ EM_NanSize(ReportFileName);
+ else
+ UpdatedOutArg(counterout).Size(iterOutputPosition) = string(tmpeval);
+ end
+ elseif(isnum(tmpeval))
+ if (eval(tmpeval) <= 0)
+ EM_ZeroSize(ReportFileName);
+ else
+ UpdatedOutArg(counterout).Size(iterOutputPosition) = string(tmpeval);
+ end
+ else
+ UpdatedOutArg(counterout).Size(iterOutputPosition) = string(tmpeval);
+ end
+ end
+ if(ASTFunName == 'syslin')
+ no_of_st = eval(InArg(2).Size(1))
+ no_of_ip = eval(InArg(3).Size(2))
+ UpdatedOutArg(counterout).Value = no_of_st+no_of_ip*0.1;
+ else
+ UpdatedOutArg(counterout).Value = %nan;
+ end
+ UpdatedOutArg(counterout).Dimension = GetSymbolDimension(UpdatedOutArg(counterout).Size);
+ UpdatedOutArg(counterout).Scope = 'Temp';//NUT anche su questo si puo' ragionare verifica anche la handleoperation.
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_GetResizeApproach.sci b/2.3-1/macros/FunctionAnnotation/FA_GetResizeApproach.sci
new file mode 100644
index 00000000..95427001
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_GetResizeApproach.sci
@@ -0,0 +1,79 @@
+function ResizeApproach = FA_GetResizeApproach(scifilename,ReportFileName)
+
+// function ResizeApproach = FA_GetResizeApproach(scifilename,ReportFileName)
+// -----------------------------------------------------------------
+// Extracts the resize approach from the file .sci passed in input.
+// The following annotation will be searched in the scilab code:
+// //SCI2C: RESIZE_APPROACH= NO_RESIZE
+// //SCI2C: RESIZE_APPROACH= RESIZE_ALL
+// //SCI2C: RESIZE_APPROACH= REALLOC_ALL_RESIZE_ALL
+// //SCI2C: RESIZE_APPROACH= RESIZE_TEMP
+// //SCI2C: RESIZE_APPROACH= RESIZE_LOCAL
+// //SCI2C: RESIZE_APPROACH= RESIZE_GLOBAL
+// If the annotation is missing the default NO_RESIZE approach will be
+// implicitly used.
+//
+// Input data:
+// ---
+//
+// Output data:
+// ResizeApproach: string which specifies the resize approach
+// used in the translation of scifilename.
+//
+// Status:
+// 12-Jul-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+ResizeApproach = 'NO_RESIZE';
+annotationstring = '//SCI2C: RESIZE_APPROACH='
+PrintStringInfo('***Get resize approach from: '+scifilename,ReportFileName,'file','y'); // #RNUREM_ME
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// --- Open the .sci file (read only). ---
+scifid = SCI2COpenFileRead(scifilename);
+
+// --- Loop over the lines of the input file. ---
+// Position file pointer to the desired NInArg/NOutArg section,
+// and read the NOutArg annotation.
+foundannotation = 0;
+line_position = 0;
+
+while ((meof(scifid) == 0) & (foundannotation == 0))
+ check_string = stripblanks(mgetl(scifid,1));
+ line_position = line_position + 1;
+ if (~isempty(check_string))
+ if (SCI2Cstrncmps1size(annotationstring,check_string))
+ tmpresize = stripblanks(part(check_string,length(annotationstring)+1:length(check_string)));
+ // #RNU_RES_B
+ PrintStringInfo(' Line '+string(line_position)+...
+ ' - Found annotation for resize approach'+' ""'+check_string+' ""',...
+ ReportFileName,'file','y');
+ // #RNU_RES_E
+ foundannotation = 1;
+ end
+ end
+end
+
+if (foundannotation == 0)
+ // #RNU_RES_B
+ PrintStringInfo('Annotation for resize approach not found.',ReportFileName,'file','y');
+ PrintStringInfo('Using the ''NO_RESIZE'' resize approach.',ReportFileName,'file','y');
+ // #RNU_RES_E
+else
+ ResizeApproach = tmpresize;
+end
+mclose(scifid);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_INT.sci b/2.3-1/macros/FunctionAnnotation/FA_INT.sci
new file mode 100644
index 00000000..e1bdba33
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_INT.sci
@@ -0,0 +1,40 @@
+function opout = FA_INT(in1)
+// function opout = FA_INT(in1)
+// -----------------------------------------------------------------
+// Int function for Function Annotations.
+// When in1 is a number opout = int(in1); where int truncates in1
+// to integer. If in1 is string opout = in1.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1))
+ outnum = int(eval(in1));
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+else
+ opout = in1;
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_MAX.sci b/2.3-1/macros/FunctionAnnotation/FA_MAX.sci
new file mode 100644
index 00000000..c5406f14
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_MAX.sci
@@ -0,0 +1,50 @@
+function opout = FA_MAX(in1,in2)
+// function opout = FA_MAX(in1,in2)
+// -----------------------------------------------------------------
+// Maximum function for Function Annotations.
+// When in1 and in2 are both symbols this function returns
+// in1.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1))
+ in1num = eval(in1);
+ if (isnum(in2))
+ in2num = eval(in2);
+ outnum = max(in1num,in2num);
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+ else
+ if (in1num == 1)
+ opout = string(in2);
+ end
+ end
+else
+ opout = string(in1);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_MIN.sci b/2.3-1/macros/FunctionAnnotation/FA_MIN.sci
new file mode 100644
index 00000000..e1539103
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_MIN.sci
@@ -0,0 +1,45 @@
+function opout = FA_MIN(in1,in2)
+// function opout = FA_MIN(in1,in2)
+// -----------------------------------------------------------------
+// Minimum function for Function Annotations.
+// When in1 and in2 are both symbols this function returns
+// in1.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1))
+ in1num = eval(in1);
+ if (isnum(in2))
+ in2num = eval(in2);
+ outnum = min(in1num,in2num);
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+ else
+ if (in1num == 1)
+ opout = string(in2);
+ end
+ end
+else
+ opout = string(in1);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_MUL.sci b/2.3-1/macros/FunctionAnnotation/FA_MUL.sci
new file mode 100644
index 00000000..8c9a930a
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_MUL.sci
@@ -0,0 +1,42 @@
+function opout = FA_MUL(in1,in2)
+// function opout = FA_MUL(in1,in2)
+// -----------------------------------------------------------------
+// Multiplication function for Function Annotations.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1) & isnum(in2))
+ in1num = eval(in1);
+ in2num = eval(in2);
+ outnum = in1num*in2num;
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+else
+ opout = '('+string(in1)+'*'+string(in2)+')';
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_REAL.sci b/2.3-1/macros/FunctionAnnotation/FA_REAL.sci
new file mode 100644
index 00000000..7b8c0fda
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_REAL.sci
@@ -0,0 +1,50 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+function opout = FA_REAL(in1, in2)
+// function opout = FA_REAL(in1, in2)
+// -----------------------------------------------------------------
+// Real function for Function Annotations.
+// When in1 is a number opout = real(in1); where real returns in1
+// real part. If in1 is string opout = in1.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying in1 type
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1))
+ outnum = real(eval(in1));
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+else
+ if (in1 == "%i")
+ opout = " 0 ";
+ else
+ opout = in2+"0real"+FA_TP_REAL(in2)+"0"+"("+in1+")";
+ end
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SCHUR_SZ.sci b/2.3-1/macros/FunctionAnnotation/FA_SCHUR_SZ.sci
new file mode 100644
index 00000000..7b426e1c
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SCHUR_SZ.sci
@@ -0,0 +1,42 @@
+function out2sz = FA_SCHUR_SZ(in2tp,in1sz)
+//function out2sz = FA_SCHUR_SZ(in2tp,in1sz)
+// -----------------------------------------------------------------
+// Get size of output for Schur function
+//
+// Input data:
+// in2tp: string specifying the type of second input argument.
+// in1sz: string specifying the size of first input argument.
+//
+// Output data:
+// out2sz: string containing the size for second output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+in2type = string(in2tp);
+in1sz = string(in1sz);
+in1dim = eval(in1sz);
+
+if(in2type == 'g')
+ out2sz = '1'
+else
+ out2sz = string(in1dim)
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SCHUR_TP.sci b/2.3-1/macros/FunctionAnnotation/FA_SCHUR_TP.sci
new file mode 100644
index 00000000..828ea1e5
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SCHUR_TP.sci
@@ -0,0 +1,38 @@
+function out2tp = FA_SCHUR_TP(in2tp)
+// function out2tp = FA_SCHUR_TP(in2tp)
+// -----------------------------------------------------------------
+// Get type of output for Schur function
+//
+// Input data:
+// in2tp: string specifying the type of second input argument.
+//
+// Output data:
+// out2tp: string containing the type for second output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(1),1,1);
+
+in2type = string(in2tp);
+
+if(in2type == 'g')
+ out2tp = 'd'
+else
+ out2tp = in2type
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SUB.sci b/2.3-1/macros/FunctionAnnotation/FA_SUB.sci
new file mode 100644
index 00000000..1ef0ad46
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SUB.sci
@@ -0,0 +1,41 @@
+function opout = FA_SUB(in1,in2)
+// function opout = FA_SUB(in1,in2)
+// -----------------------------------------------------------------
+// Subtraction function for Function Annotations.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (isnum(in1) & isnum(in2))
+ in1num = eval(in1);
+ in2num = eval(in2);
+ outnum = in1num-in2num;
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+else
+ opout = '('+string(in1)+'-'+string(in2)+')';
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_1.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_1.sci
new file mode 100644
index 00000000..3d20b992
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_1.sci
@@ -0,0 +1,21 @@
+function outsize = FA_SZ_1(insize)
+// function outsize = FA_SZ_1(insize)
+// -----------------------------------------------------------------
+// Returns the first element of the size array.
+//
+// Input data:
+// insize: size of input argument. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// outsize: first element of the insize array.
+//
+// Status:
+// 08-Dec-2007 -- Raffaele Nutricato: Author.
+// 08-Dec-2007 -- Alberto Morea: Test Ok.
+// -----------------------------------------------------------------
+
+outsize = insize(1);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_2.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_2.sci
new file mode 100644
index 00000000..164cab3f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_2.sci
@@ -0,0 +1,21 @@
+function outsize = FA_SZ_2(insize)
+// function outsize = FA_SZ_2(insize)
+// -----------------------------------------------------------------
+// Returns the second element of the size array.
+//
+// Input data:
+// insize: size of input argument. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// outsize: second element of the insize array.
+//
+// Status:
+// 08-Dec-2007 -- Raffaele Nutricato: Author.
+// 08-Dec-2007 -- Alberto Morea: Test Ok.
+// -----------------------------------------------------------------
+
+outsize = insize(2);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_COLUMN_DIAG.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_COLUMN_DIAG.sci
new file mode 100644
index 00000000..3aea8397
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_COLUMN_DIAG.sci
@@ -0,0 +1,40 @@
+function outsize = FA_SZ_COLUMN_DIAG(insize)
+//function outsize = FA_SZ_COLUMN_DIAG(insize)
+// -----------------------------------------------------------------
+// Get size of column of the output for diag function
+//
+// Input data:
+// insize: string specifying the size of input argument.
+//
+// Output data:
+// outsize: string containing the column size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Mushir
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(1),1,1);
+
+ if(insize(2)=='1') then
+ outsize = insize(1);
+
+ elseif(insize(1) == insize(2))
+ outsize = '1';
+ else
+ outsize = insize(2);
+
+ end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_COL_DIAG_IN_EX.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_COL_DIAG_IN_EX.sci
new file mode 100644
index 00000000..8a313fee
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_COL_DIAG_IN_EX.sci
@@ -0,0 +1,61 @@
+function outsize =FA_SZ_COL_DIAG_IN_EX(insize,val)
+//function outsize =FA_SZ_COL_DIAG_IN_EX(insize,val)
+// -----------------------------------------------------------------
+// Get size of column of the output for diag(insert) function
+//
+// Input data:
+// insize: string specifying the size of input argument.
+// val: string containing value of second input
+//
+// Output data:
+// outsize: string containing the column size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Mushir
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+///////////////////////////////COLUMN SIZE FOR INSERT POSITION////////////////
+
+
+
+ if((insize(1) == '1')) // If ROW size is 1
+ if(val == '0') then //For Oth position
+ outsize = insize(2); //COLUMN size is equal to COLUMN size
+ else // For ...-2,-1,1,2... position
+ outsize = string(eval(insize(2))+abs(eval(val)));
+ // COLUMN size is equal to COLUMN size + absolute value of position(for 1*3 matrix and 2nd postion COLUMN size is (3+2)=5
+ end
+ elseif((insize(2) == '1')) // If COLUMN size is 1
+ if(val == '0') then //For Oth position
+ outsize = insize(1); //COLUMNS size is equal to ROW size
+ else // For ...-2,-1,1,2.... position
+ outsize = string(eval(insize(1))+abs(eval(val)));
+ // COLUMN size is equal to ROW size + absolute value of position(for 3*1 matrix and 1st postion COLUMN size is (3+1)=4
+ end
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////COLUMN SIZE FOR EXTRACT POSITION////////////////////
+
+ else
+ outsize = '1'; // For extract condition COLUMN size is always ONE.
+ end
+
+////////////////////////////////////////////////////////////////////////////////
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BASE.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BASE.sci
new file mode 100644
index 00000000..4cd6467d
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BASE.sci
@@ -0,0 +1,30 @@
+function opout = FA_SZ_DEC2BASE(in1val,in2val)
+
+// 07-Sep-2016 -- Author : Shamik Guha
+
+
+in1val=string(in1val);
+in2val=string(in2val);
+if (isnum(in1val)) then
+ in1_num = eval(in1val) ;
+ in2_num = eval(in2val) ;
+ out=dec2base(in1_num,in2_num);
+ //disp(out);
+
+else
+ error(36, "Wrong input argument "+in1val+".");
+
+end
+if (in2_num>10) then
+ out=sci2exp(out);
+ opout=string(length(out)-2);
+ //disp(opout);
+ out=string(out);
+else
+ out=eval(out);
+ //disp(out);
+ opout=string(floor(log10(abs(out)+1))+1);
+ //disp(opout);
+ out=string(out);
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BIN.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BIN.sci
new file mode 100644
index 00000000..75d0cb07
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2BIN.sci
@@ -0,0 +1,20 @@
+function opout = FA_SZ_DEC2BIN(inval)
+
+// 07-Sep-2016 -- Author : Shamik Guha
+
+inval=string(inval);
+if (isnum(inval)) then
+ in_num = eval(inval) ;
+ out=dec2bin(in_num);
+ //disp(out);
+
+else
+ error(36, "Wrong input argument "+inval+".");
+
+end
+
+out=eval(out);
+
+opout=string(floor(log10(abs(out)+1))+1);
+out=string(out);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2HEX.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2HEX.sci
new file mode 100644
index 00000000..c1e07773
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2HEX.sci
@@ -0,0 +1,21 @@
+function opout = FA_SZ_DEC2HEX(inval)
+
+// 07-Sep-2016 -- Author : Shamik Guha
+
+inval=string(inval);
+if (isnum(inval)) then
+ in_num = eval(inval) ;
+ out=dec2hex(in_num);
+ //disp(out);
+
+else
+ error(36, "Wrong input argument "+inval+".");
+
+end
+
+out=sci2exp(out);
+
+opout=string(length(out)-2);
+//disp(opout);
+out=string(out);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2OCT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2OCT.sci
new file mode 100644
index 00000000..056d333d
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_DEC2OCT.sci
@@ -0,0 +1,20 @@
+function opout = FA_SZ_DEC2OCT(inval)
+
+// 07-Sep-2016 -- Author : Shamik Guha
+
+inval=string(inval);
+if (isnum(inval)) then
+ in_num = eval(inval) ;
+ out=dec2oct(in_num);
+ //disp(out);
+
+else
+ error(36, "Wrong input argument "+inval+".");
+
+end
+
+out=eval(out);
+
+opout=string(floor(log10(abs(out)+1))+1);
+out=string(out);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_DIFF.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_DIFF.sci
new file mode 100644
index 00000000..5639ce77
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_DIFF.sci
@@ -0,0 +1,58 @@
+function outsize = FA_SZ_DIFF(in1size, in2val, in3val)
+//function outsize = FA_SZ_DIFF(in1size, in2val, in3val)
+// -----------------------------------------------------------------
+// Get size of output for diff function
+//
+// Input data:
+// in1size: string specifying the size of first input argument.
+// in2val: string specifying the value of second input argument.
+// in3val: string specifying the value of third input argument.
+//
+// Output data:
+// outsize: string containing the size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(3),3,3);
+
+ in1size = string(in1size);
+ in1row = eval(in1size(1));
+ in1col = eval(in1size(2));
+ in2val = string(in2val);
+ in2num = eval(in2val);
+ in3num = eval(in3val);
+
+if(in3num == 0)
+ if((in1row == 1) & (in1col <> 1)) //input is row vector
+ outsize(1) = '1';
+ outsize(2) = string (in1col - in2num);
+ elseif((in1col == 1) & (in1row <> 1)) //input is column vector
+ outsize(1) = string(in1row - in2num);
+ outsize(2) = '1';
+ else // input is matrix. output is a column matrix
+ outsize(1) = string((in1row * in1col)- in2num);
+ outsize(2) = '1';
+ end
+elseif (in3num == 1) //Difference along rows
+ outsize(1) = string(in1row - in2num);
+ outsize(2) = string(in1col);
+elseif (in3num == 2) //Difference along columns
+ outsize(1) = string(in1row);
+ outsize(2) = string(in1col - in2num);
+end
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_FACTOR.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_FACTOR.sci
new file mode 100644
index 00000000..d816ff75
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_FACTOR.sci
@@ -0,0 +1,20 @@
+function opout = FA_SZ_FACTOR(inval)
+
+// 17-Dec-2016 -- Author : Shamik Guha
+
+inval=string(inval);
+if (isnum(inval)) then
+ in_num = eval(inval) ;
+ out=factor(in_num);
+ //disp(out);
+
+else
+ error(36, "Wrong input argument "+inval+".");
+
+end
+
+
+out=(length(out));
+opout=string(out);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci
new file mode 100644
index 00000000..5ff03a60
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci
@@ -0,0 +1,36 @@
+function opout = FA_SZ_FROM_VAL(in1,in2)
+// function opout = FA_SZ_FROM_VAL(in1,in2)
+// -----------------------------------------------------------------
+// Return a size according to the floored value of the first argument
+//
+// Input data:
+// in1: string specifying a number .
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// -----------------------------------------------------------------
+
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+if (isnum(in1))
+ in1num = eval(in1) ;
+ if isnan(in1num)
+ opout = '__SCI2CNANSIZE';
+ elseif ( in1num < 0 )
+ opout= '0' ;
+ else
+ opout = string ( floor (abs(in1num))) ;
+
+ end
+
+else
+ opout = in2+"0floor"+in2+"0"+"("+in1+")";
+ opout = in2+"0abs"+in2+"0"+"("+opout+")";
+
+
+end
+
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_LINSPACE_ROW.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_LINSPACE_ROW.sci
new file mode 100644
index 00000000..86f2aa7d
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_LINSPACE_ROW.sci
@@ -0,0 +1,33 @@
+function outsize = FA_SZ_LINSPACE_ROW(insize)
+//function outsize = FA_SZ_LINSPACE_ROW(insize)
+// -----------------------------------------------------------------
+// Get size of row for output for linspace function
+//
+// Input data:
+// insize: string specifying the size of first input argument.
+//
+// Output data:
+// outsize: string containing the row size of output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Mushir
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(1),1,1);
+
+ in1num = string(eval(insize(1)));
+ outsize = in1num;
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_LQE.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_LQE.sci
new file mode 100644
index 00000000..6ddd1988
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_LQE.sci
@@ -0,0 +1,37 @@
+function outsize = FA_SZ_LQE(inval,insz)
+//function outsize = FA_SZ_LQE(inval,insz)
+// -----------------------------------------------------------------
+// Get size of output for lqe function
+//
+// Input data:
+// inval: string specifying the value of input argument.
+// insz: string specifying the size of input argument.
+//
+// Output data:
+// outsize: string containing the size for second output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+ inval = eval(inval)
+ insz = eval(insz)
+ outsize(1) = string(int(inval));
+ outsize(2) = string(insz-int(inval));
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_LQR.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_LQR.sci
new file mode 100644
index 00000000..cf1884aa
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_LQR.sci
@@ -0,0 +1,34 @@
+function outsize = FA_SZ_LQR(inval)
+//function outsize = FA_SZ_LQR(inval)
+// -----------------------------------------------------------------
+// Get size of output for lqr function
+//
+// Input data:
+// inval: string specifying the value of input argument.
+//
+// Output data:
+// outsize: string containing the size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(1),1,1);
+
+ inval = eval(inval)
+ outsize(1) = string(int(inval));
+ outsize(2) = string(modulo(inval*10,10));
+ endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OBSCNT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OBSCNT.sci
new file mode 100644
index 00000000..a7cb85b9
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OBSCNT.sci
@@ -0,0 +1,48 @@
+function outsize = FA_SZ_OBSCNT(inval,insz1,insz2,nout)
+//function outsize = FA_SZ_OBSCNT(inval,insz1,insz2,nout)
+// -----------------------------------------------------------------
+// Get size of output for obscont function
+//
+// Input data:
+// inval: string specifying the value of first input argument.
+// insz1: string specifying the row size of first input argument.
+// insz2: string specifying the col size of first input argument.
+// nout: string specifying number of output arguments
+//
+// Output data:
+// outsize: string containing the size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(4),4,4);
+
+ inval = eval(inval);
+ insz1 = eval(insz1);
+ insz2 = eval(insz2);
+ //nout = eval(nout);
+ no_of_st = int(inval);
+ no_of_in = insz2 - no_of_st;
+ no_of_op = insz1 - no_of_st;
+ if(nout == 1)
+ outsize(1) = string(no_of_st+no_of_op+2);
+ outsize(2) = string(no_of_st+no_of_in);
+ else
+ outsize(1) = string(no_of_st+no_of_in+no_of_op+2);
+ outsize(2) = string(no_of_st+no_of_in+no_of_op);
+ end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPAPEX.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPAPEX.sci
new file mode 100644
index 00000000..a93e8c50
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPAPEX.sci
@@ -0,0 +1,26 @@
+function opoutsize = FA_SZ_OPAPEX(in1size)
+// function opoutsize = FA_SZ_OPAPEX(in1size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPAPEX operator.
+//
+//
+// Status:
+// 08-Jan-2008 -- Raffaele Nutricato: Author.
+// 08-Jan-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+opoutsize(1) = string(in1size(2));
+opoutsize(2) = string(in1size(1));
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPBACKSLASH.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPBACKSLASH.sci
new file mode 100644
index 00000000..9d0625bd
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPBACKSLASH.sci
@@ -0,0 +1,39 @@
+function opoutsize = FA_SZ_OPBACKSLASH(in1size,in2size)
+// function opoutsize = FA_SZ_OPBACKSLASH(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPBACKSLASH operator.
+//
+//
+// Status:
+// 08-Mar-2008 -- Alberto Morea: Author.
+// 08-Mar-2008 -- Raffaele Nutricato: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+in1size=string(in1size);
+in2size=string(in2size);
+
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+
+if (in1dim == 0)
+ opoutsize = in2size;
+elseif (in2dim == 0)
+ opoutsize = in1size;
+else
+ opoutsize(1) = in1size(2);
+ opoutsize(2) = in2size(2);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPCC.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPCC.sci
new file mode 100644
index 00000000..50527771
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPCC.sci
@@ -0,0 +1,40 @@
+function opoutsize = FA_SZ_OPCC(in1size,in2size)
+// function opoutsize = FA_SZ_OPCC(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPCC operator.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+in1size = string(in1size);
+in2size = string(in2size);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+
+if (isnum(in1size(1)) & isnum(in2size(1)))
+ in1num = eval(in1size(1));
+ in2num = eval(in2size(1));
+ opoutsize(1) = string(in1num+in2num);
+else
+ opoutsize(1) = '('+string(in1size(1))+'+'+string(in2size(1))+')';
+end
+
+opoutsize(2) = in1size(2);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTAPEX.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTAPEX.sci
new file mode 100644
index 00000000..64e8030e
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTAPEX.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPDOTAPEX(in1size)
+// function opoutsize = FA_SZ_OPDOTAPEX(in1size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTAPEX.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTAPEX(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTBACKSLASH.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTBACKSLASH.sci
new file mode 100644
index 00000000..75f4d5c3
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTBACKSLASH.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPDOTBACKSLASH(in1size,in2size)
+// function opoutsize = FA_SZ_OPDOTBACKSLASH(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTHAT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTHAT.sci
new file mode 100644
index 00000000..af522bac
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTHAT.sci
@@ -0,0 +1,43 @@
+function opoutsize = FA_SZ_OPDOTHAT(in1size,in2size)
+// function opoutsize = FA_SZ_OPDOTHAT(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPDOTHAT operator.
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in1c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 10-Dec-2007 -- Raffaele Nutricato: Author.
+// 10-Dec-2007 -- Alberto Morea: Test Ok.
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSLASH.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSLASH.sci
new file mode 100644
index 00000000..2a071f27
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSLASH.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPDOTSLASH(in1size,in2size)
+// function opoutsize = FA_SZ_OPDOTSLASH(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSTAR.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSTAR.sci
new file mode 100644
index 00000000..3fbae19a
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPDOTSTAR.sci
@@ -0,0 +1,32 @@
+function opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size)
+// function opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPDOTSTAR operator.
+//
+//
+// Status:
+// 08-Jan-2008 -- Raffaele Nutricato: Author.
+// 08-Jan-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+
+if (in1dim == 0)
+ opoutsize = string(in2size);
+else
+ opoutsize = string(in1size);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPHAT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPHAT.sci
new file mode 100644
index 00000000..31174511
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPHAT.sci
@@ -0,0 +1,43 @@
+function opoutsize = FA_SZ_OPHAT(in1size,in2size)
+// function opoutsize = FA_SZ_OPHAT(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPHAT operator.
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in1c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 10-Dec-2007 -- Raffaele Nutricato: Author.
+// 10-Dec-2007 -- Alberto Morea: Test Ok.
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGAND.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGAND.sci
new file mode 100644
index 00000000..099bb9ac
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGAND.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGAND(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGAND(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGEQ.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGEQ.sci
new file mode 100644
index 00000000..4ade6a0f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGEQ.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGEQ(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGEQ(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGE.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGE.sci
new file mode 100644
index 00000000..c6d6ee3f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGE.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGGE(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGGE(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGT.sci
new file mode 100644
index 00000000..0f6493c9
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGGT.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGGT(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGGT(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLE.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLE.sci
new file mode 100644
index 00000000..edda359f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLE.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGLE(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGLE(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLT.sci
new file mode 100644
index 00000000..81b1b256
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGLT.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGLT(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGLT(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNE.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNE.sci
new file mode 100644
index 00000000..ff62abbf
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNE.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGNE(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGNE(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNOT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNOT.sci
new file mode 100644
index 00000000..3b0c6549
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGNOT.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGNOT(in1size)
+// function opoutsize = FA_SZ_OPLOGNOT(in1size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTAPEX.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTAPEX(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGOR.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGOR.sci
new file mode 100644
index 00000000..f28eec2f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPLOGOR.sci
@@ -0,0 +1,16 @@
+function opoutsize = FA_SZ_OPLOGOR(in1size,in2size)
+// function opoutsize = FA_SZ_OPLOGOR(in1size,in2size)
+// -----------------------------------------------------------------
+// Alias of FA_SZ_OPDOTSTAR.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+opoutsize = FA_SZ_OPDOTSTAR(in1size,in2size);
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPMINUS.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPMINUS.sci
new file mode 100644
index 00000000..5f7fc96a
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPMINUS.sci
@@ -0,0 +1,51 @@
+function opoutsize = FA_SZ_OPMINUS(in1size,in2size)
+// function opoutsize = FA_SZ_OPMINUS(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPMINUS operator.
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in1c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 08-Dec-2007 -- Raffaele Nutricato: Author.
+// 08-Dec-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+opoutsize = FA_SZ_OPPLUSA(in1size,in2size);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUS.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUS.sci
new file mode 100644
index 00000000..f439e23e
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUS.sci
@@ -0,0 +1,93 @@
+function opoutsize = FA_SZ_OPPLUS(in1size,in2size,in1type,in2type)
+// function opoutsize = FA_SZ_OPPLUS(in1size,in2size,in1type,in2type)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPPLUS operator,
+// including the string operations.
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in1c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+// There is also the case related to the string catenation!
+// This is the main difference between - and + operators.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 08-Dec-2007 -- Raffaele Nutricato: Author.
+// 08-Dec-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),4,4);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1size = string(in1size);
+in2size = string(in2size);
+in1type = string(in1type);
+in2type = string(in2type);
+in1dim = GetSymbolDimension(in1size);
+
+if ((in1type ~= 'g') & (in2type ~= 'g'))
+ opoutsize = FA_SZ_OPPLUSA(in1size,in2size);
+elseif ((in1type == 'g') & (in2type == 'g'))
+ opoutsize(1) = '1';
+ if (isnum(in1size(1)) & isnum(in2size(1)))
+ in1num = eval(in1size(1));
+ in2num = eval(in2size(1));
+ if (in1num > 1 | in2num > 1)
+ error(9999, 'String catenation can be performed only on strings of 1 x N size not N x 1 size');
+ //NUT: mi pare che non possano proprio esistere stringe di dimensione Nx1 perche' in
+ //NUT: scilab esiste il tipo string che e' di size 1x1 e sono io a trasformarlo in
+ //NUT: 1xN per cui se uso sempre questa convenzione non sbaglio mai.
+ //NUT: ho provato in scilab a fare la trasposta di una stringa e ottengo sempre 1x1.
+ end
+ end
+ if (isnum(in1size(2)) & isnum(in2size(2)))
+ in1num = eval(in1size(2));
+ in2num = eval(in2size(2));
+ opoutsize(2) = string(in1num+in2num-1);
+ if isnan(opoutsize(2))
+ opoutsize(2) = '__SCI2CNANSIZE';
+ else
+ opoutsize(2) = string(opoutsize(2));
+ end
+ else
+ opoutsize(2) = '('+string(in1size(2))+'+'+string(in2size(2))+'-1)';
+ end
+else
+ error(9999, 'Unexpected type combination for ""+"" operator (type1,type2): ('+in1type+in2type+').');
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUSA.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUSA.sci
new file mode 100644
index 00000000..42ba90d5
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPPLUSA.sci
@@ -0,0 +1,66 @@
+function opoutsize = FA_SZ_OPPLUSA(in1size,in2size)
+// function opoutsize = FA_SZ_OPPLUSA(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPPLUS operator
+// restricted to arithmetic operations (string operations not supported.)
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in1c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+// There is also the case related to the string catenation!
+// This is the main difference between - and + operators.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 18-Mar-2008 -- Raffaele Nutricato: Author.
+// 18-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1size = string(in1size);
+in2size = string(in2size);
+in1dim = GetSymbolDimension(in1size);
+
+if (in1dim == 0)
+ opoutsize = in2size;
+else
+ opoutsize = in1size;
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPRC.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPRC.sci
new file mode 100644
index 00000000..c4da4a0f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPRC.sci
@@ -0,0 +1,40 @@
+function opoutsize = FA_SZ_OPRC(in1size,in2size)
+// function opoutsize = FA_SZ_OPRC(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPRC operator.
+//
+//
+// Status:
+// 08-Mar-2008 -- Raffaele Nutricato: Author.
+// 08-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+in1size = string(in1size);
+in2size = string(in2size);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+
+opoutsize(1) = in1size(1);
+
+if (isnum(in1size(2)) & isnum(in2size(2)))
+ in1num = eval(in1size(2));
+ in2num = eval(in2size(2));
+ opoutsize(2) = string(in1num+in2num);
+else
+ opoutsize(2) = '('+string(in1size(2))+'+'+string(in2size(2))+')';
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci
new file mode 100644
index 00000000..a44057d9
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci
@@ -0,0 +1,37 @@
+function opoutsize = FA_SZ_OPSLASH(in1size,in2size)
+// function opoutsize = FA_SZ_OPSLASH(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPSLASH operator.
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+in1size = string(in1size);
+in2size = string(in2size);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+
+if (in1dim == 0)
+ opoutsize = in2size;
+elseif (in2dim == 0)
+ opoutsize = in1size;
+else
+ opoutsize(1) = in1size(1);
+ opoutsize(2) = in2size(1);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_OPSTAR.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPSTAR.sci
new file mode 100644
index 00000000..12190d38
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_OPSTAR.sci
@@ -0,0 +1,68 @@
+function opoutsize = FA_SZ_OPSTAR(in1size,in2size)
+// function opoutsize = FA_SZ_OPSTAR(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPSTAR operator.
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in2c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 08-Dec-2007 -- Raffaele Nutricato: Author.
+// 08-Dec-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+in1size = string(in1size);
+in2size = string(in2size);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+
+if (in1dim == 0)
+ opoutsize = in2size;
+elseif (in2dim == 0)
+ opoutsize = in1size;
+else
+ opoutsize(1) = in1size(1);
+ opoutsize(2) = in2size(2);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_PRIMES.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_PRIMES.sci
new file mode 100644
index 00000000..5a450686
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_PRIMES.sci
@@ -0,0 +1,21 @@
+function opout = FA_SZ_PRIMES(inval)
+
+// 17-Dec-2016 -- Author : Shamik Guha
+
+inval=string(inval);
+if (isnum(inval)) then
+ in_num = eval(inval) ;
+ out=primes(in_num);
+ //disp(out);
+
+else
+ error(36, "Wrong input argument "+inval+".");
+
+end
+
+
+out=(length(out));
+opout=string(out);
+//disp(opout);
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN_CAT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN_CAT.sci
new file mode 100644
index 00000000..527217a5
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN_CAT.sci
@@ -0,0 +1,50 @@
+function outsize = FA_SZ_ROW_COLUMN_CAT(inval,in1size,in2size)
+//function outsize = FA_SZ_ROW_COLUMN_CAT(inval,in1size,in2size)
+// -----------------------------------------------------------------
+// Get size of row (col) of the output for cat function
+//
+// Input data:
+// inval: string specifying the value of input argument.
+// in1size: string specifying the row (col) of second input
+// in3size: string specifying the row (col) of third input
+// Output data:
+// outsize: string containing the column size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Mushir
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+
+in1size = string(in1size);
+in2size = string(in2size);
+inval = string(inval);
+if(inval == '1') then
+ in1num_r = eval(in1size);
+ in2num_r = eval(in2size);
+ outsize(1) = string(in1num_r + in2num_r);
+ outsize(2) = string(in2num_r);
+elseif(inval == '2') then
+ in1num_c = eval(in1size);
+ in2num_c = eval(in2size);
+ outsize(1) = string(in1num_c);
+ outsize(2) = string(in1num_c + in2num_c);
+else
+ error(36, "Wrong input argument "+inval+". Use 1 or 2 as first argument in cat command.");
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG.sci
new file mode 100644
index 00000000..1417b42b
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG.sci
@@ -0,0 +1,38 @@
+function outsize = FA_SZ_ROW_DIAG(insize)
+//function outsize = FA_SZ_ROW_DIAG(insize)
+// -----------------------------------------------------------------
+// Get size of row of the output for diag function
+//
+// Input data:
+// insize: string specifying the size of input argument.
+//
+// Output data:
+// outsize: string containing the row size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Mushir
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(1),1,1);
+
+if(insize(1)=='1') then
+ outsize = insize(2);
+elseif(insize(1) == insize(2))
+ outsize = insize(1);
+else
+ outsize = insize(1);
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG_INS_EXT.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG_INS_EXT.sci
new file mode 100644
index 00000000..1dddfb77
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_ROW_DIAG_INS_EXT.sci
@@ -0,0 +1,103 @@
+function outsize = FA_SZ_ROW_DIAG_INS_EXT(insize,val)
+//function outsize = FA_SZ_ROW_DIAG_INS_EXT(insize,val)
+// -----------------------------------------------------------------
+// Get row size of output for diag(insert) function
+//
+// Input data:
+// insize: string specifying the size of first input argument.
+// val: string specifying the value of second input argument.
+//
+// Output data:
+// outsize: string containing the size for output argument.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Mushir
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+ // val ==> Position value ...,-2,-1,0,1,2....
+ //insize ==> insize(1) will give ROW size and insize(2) will give COLUMN size.
+ insize = string(insize);
+ row_num = eval(insize(1));
+ col_num = eval(insize(2));
+ val_num = eval(val);
+ ///////////////////// FOR INSERT CONDITION //////////////////////////////
+
+
+
+ if(row_num == 1)
+ if(val_num == 0) then // For 0th position
+ outsize = string(col_num);// ROW size is equal to COLUMN size
+
+ else // For ....-2,-1,1,2... positions
+ outsize = string(col_num+abs(val_num));
+ //ROW is equal to COLUMN SIZE + position value (i.e for 1*4 matrix and insert position 1 then ROW size is 4+1 = 5 )
+
+ end
+ elseif(col_num == 1) // if Column size is one
+ if(val_num == 0) then // For Oth position
+ outsize = string(row_num); // ROW size is equal to ROW size
+
+ else // ....-2,-1,1,2... positions.
+ outsize = string(row_num + abs(val_num));
+ //ROW is equal to ROW SIZE + position value (i.e for 4*1 matrix and insert position 1 then ROW size is 4+1 = 5 )
+
+ end
+
+ /////////////////////////////////////////////////////////////////////////////
+
+
+ //////////////////////////// FOR EXTRACT CONDITION /////////////////////////
+
+ elseif(row_num == col_num) // For no. of rows equal to no. of column (R == C)
+ if(val_num == 0) then //For 0th position
+ outsize = string(col_num); // No. of row is equal to column size
+ else //For ....-2,-1,1,2... Positions
+ outsize = string(col_num-abs(val_num)); //row value is equal to subtraction of column size and absolute value of position (i.e +ve and -ve both position values)
+ end
+ elseif(row_num > col_num) // for no. of rows greater than no. of column (R > C)
+ if(val_num == 0) then // if 0th position
+ outsize = string(col_num); // No. of row is equal to column size
+ elseif(val_num > 0) then // For +ve positions i.e 1,2,3.....
+ outsize = string(col_num-abs(val_num)); // No. of row is equal to subtraction of column size and absolute value of +ve postion
+
+ elseif(val_num < 0 ) then // For -ve positions i.e -1,-2,-3
+ temp_outsize1 = row_num-abs(val_num); //In this row values are varying for 4*3 matrix there is no repetition of same row values,for 5*3 matrix there is (5-3 = 2) two same row size(i.e 3 and 3) for -1,-2 position and for 6*3 matrix there is (6-3 = 3) three same row size(i.e 3 ,3,3) for -1,-2,-3 position
+ if(temp_outsize1 >= col_num) // if temp_outsize1 is greater than equal to column size then
+ outsize = string(col_num); // row size is equal to column
+ else
+ outsize = string(row_num-abs(val_num)); // else row size is substractio of row and abosulte value of position(i.e -1,-2,-3)
+ end
+ end
+ elseif(row_num < col_num) // for no. of rows less than no. of column size
+ if(val_num == 0) then // if 0th position
+ outsize = string(row_num); // No. of row is equal to row size
+ elseif(val_num > 0) then // for +ve positions i.e 1,2 3.....
+ temp_outsize2 = col_num-abs(val_num);// In this column values are varying for 3*4 matrix there is no repetition of same row values,for 3*5 matrix there is (5-3 =2) two same row size (i.e 3, 3 ) for 1 ,2 position and for 3*6 matrix there is (6-3 = 3) three row size (i.e 3 ,3 ,3) for 1,2 3 position
+ if(temp_outsize2 >= row_num) // if temp_outsize2 is greater than equal to row size then
+ outsize = string(row_num); // row size is equal to row size
+ else
+ outsize = string(col_num-abs(val_num)); // else row size substractio of column and absolute value
+ end
+ elseif(val_num < 0) then // for -ve positions i.e -1,-2,-3 .. positions
+ outsize = string(row_num-abs(val_num)); // row size is substraction of row size and absolute value of position values(-1,-2,-3)
+ end
+
+ //////////////////////////////////////////////////////////////////////////////////////
+ end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_SEL1.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_SEL1.sci
new file mode 100644
index 00000000..6071e960
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_SEL1.sci
@@ -0,0 +1,48 @@
+function opout = FA_SZ_SEL1(in1,in2)
+// function opout = FA_SZ_SEL1(in1,in2)
+// -----------------------------------------------------------------
+// Determines the number of rows of the output arguments
+// according to the number of rows of the first input argument and
+// the specifier in2 which can be 1,2 or 'r','c' and 'm'.
+// In this release the 'm' specifier is not supported so when it is
+// used SCI2C will issue an error.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 16-Mar-2008 -- Raffaele Nutricato: Author.
+// 16-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+
+
+SCI2CNInArgCheck(argn(2),2,2);
+ReportFileName = '';
+in2 = string(in2);
+
+if (in2 == '1' | in2 == '""rr""' ) // Where can r become rr ???
+ opout = '1';
+elseif (in2 == '2' | in2 == '""c""' )
+ opout = in1;
+
+
+else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Cannot associate the second input argument to a known specifier.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Please rearrange your code by using one of the following specifiers:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: 1 or 2.',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Cannot associate the second input argument to a known specifier.');
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_SEL2.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_SEL2.sci
new file mode 100644
index 00000000..b0be739f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_SEL2.sci
@@ -0,0 +1,44 @@
+function opout = FA_SZ_SEL2(in1,in2)
+// function opout = FA_SZ_SEL2(in1,in2)
+// -----------------------------------------------------------------
+// Determines the number of columns of the output arguments
+// according to the number of columns of the first input argument and
+// the specifier in2 which can be 1,2 or 'r','c' and 'm'.
+// In this release the 'm' specifier is not supported so when it is
+// used SCI2C will issue an error.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 16-Mar-2008 -- Raffaele Nutricato: Author.
+// 16-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+ReportFileName = '';
+in2 = string(in2);
+
+if (in2 == '1'| in2 == '""rr""')
+ opout = in1;
+elseif (in2 == '2'| in2 == '""c""')
+ opout = '1';
+else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Cannot associate the second input argument to a known specifier.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Please rearrange your code by using one of the following specifiers:',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: 1 or 2.',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Cannot associate the second input argument to a known specifier.');
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_C.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_C.sci
new file mode 100644
index 00000000..b383b5ac
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_C.sci
@@ -0,0 +1,32 @@
+function typeout = FA_TP_C()
+// function typeout = FA_TP_C()
+// -----------------------------------------------------------------
+// Returns the "single complex" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'c';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_COMPLEX.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_COMPLEX.sci
new file mode 100644
index 00000000..bf3f2f9f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_COMPLEX.sci
@@ -0,0 +1,42 @@
+function typeout = FA_TP_COMPLEX(in1)
+// function typeout = FA_TP_COMPLEX(in1)
+// -----------------------------------------------------------------
+// Converts into complex data type the input argument, by preserving
+// the precision of the input argument.
+// See following examples:
+// FA_TP_COMPLEX('s') = 'c'
+// FA_TP_COMPLEX('d') = 'z'
+// FA_TP_COMPLEX('c') = 'c'
+// FA_TP_COMPLEX('z') = 'z'
+//
+// Input data:
+// in1: string specifying the data type number 1.
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Status:
+// 26-Jan-2008 -- Raffaele Nutricato: Author.
+// 26-Jan-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (in1 == 's')
+ typeout = 'c';
+elseif (in1 == 'd')
+ typeout = 'z';
+else
+ typeout = in1;
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_CVIMAGE.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_CVIMAGE.sci
new file mode 100644
index 00000000..5e87ab81
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_CVIMAGE.sci
@@ -0,0 +1,37 @@
+function typeout = FA_TP_CVIMAGE()
+// function typeout = FA_TP_INT16()
+// -----------------------------------------------------------------
+// Returns the OpenCV image type specifier (im)
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'im';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_D.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_D.sci
new file mode 100644
index 00000000..788a03fe
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_D.sci
@@ -0,0 +1,32 @@
+function typeout = FA_TP_D()
+// function typeout = FA_TP_D()
+// -----------------------------------------------------------------
+// Returns the "double" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'd';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_I.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_I.sci
new file mode 100644
index 00000000..94f383f4
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_I.sci
@@ -0,0 +1,32 @@
+function typeout = FA_TP_I()
+// function typeout = FA_TP_I()
+// -----------------------------------------------------------------
+// Returns the "int" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'i';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_INT16.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_INT16.sci
new file mode 100644
index 00000000..b7e25cad
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_INT16.sci
@@ -0,0 +1,37 @@
+function typeout = FA_TP_INT16()
+// function typeout = FA_TP_INT16()
+// -----------------------------------------------------------------
+// Returns the "int16" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'i16';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_INT8.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_INT8.sci
new file mode 100644
index 00000000..f1e2bf26
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_INT8.sci
@@ -0,0 +1,37 @@
+function typeout = FA_TP_INT8()
+// function typeout = FA_TP_INT8()
+// -----------------------------------------------------------------
+// Returns the "int8" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'i8';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_MAX.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_MAX.sci
new file mode 100644
index 00000000..0b78f9e3
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_MAX.sci
@@ -0,0 +1,45 @@
+function opout = FA_TP_MAX(in1,in2)
+// function opout = FA_TP_MAX(in1,in2)
+// -----------------------------------------------------------------
+// Type-Maximum function for Function Annotations.
+// Returns the maximum between the two data types in input according
+// to a predefined priority. For example z(double complex) is
+// greater that c(single complex).
+//
+// Input data:
+// in1: string specifying the data type number 1.
+// in2: string specifying the data type number 2.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+in1Pin2 = in1+in2;
+opout = in1;
+
+if (in2 == 'z')
+ opout = 'z';
+elseif (in1Pin2 == 'sd')
+ opout = 'd';
+elseif (in1Pin2 == 'sc')
+ opout = 'c';
+elseif (in1Pin2 == 'dc')
+ opout = 'z';
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_MIN_REAL.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_MIN_REAL.sci
new file mode 100644
index 00000000..43fc7926
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_MIN_REAL.sci
@@ -0,0 +1,35 @@
+function opout = FA_TP_MIN_REAL(in1,in2)
+// Status:
+// 2009 -- Arnaud Torset: Author.
+//
+// -----------------------------------------------------------------
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) INRIA
+//
+// 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
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+//SCI2CNInArgCheck(argn(2),2,2);
+
+in1Pin2 = in1+in2;
+opout = in1;
+
+if (opout == 'c')
+ opout = 's';
+elseif (opout == 'z')
+ opout = 'd';
+end
+
+if (in2 == 'c')
+ opout = 's';
+elseif (in2 == 's')
+ opout = 's';
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_REAL.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_REAL.sci
new file mode 100644
index 00000000..67a946dc
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_REAL.sci
@@ -0,0 +1,38 @@
+function opout = FA_TP_REAL(in1)
+// function opout = FA_TP_REAL(in1)
+// -----------------------------------------------------------------
+// Type-Real function for Function Annotations.
+// Returns the real precision corresponding to the precision of
+// the input operand.
+//
+// Input data:
+// in1: string specifying the data type number 1.
+//
+// Output data:
+// opout: string containing the computed result.
+//
+// Status:
+// 26-Mar-2008 -- Raffaele Nutricato: Author.
+// 26-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+opout = in1;
+
+if (in1 == 'c')
+ opout = 's';
+elseif (in1 == 'z')
+ opout = 'd';
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_S.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_S.sci
new file mode 100644
index 00000000..3de4c20c
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_S.sci
@@ -0,0 +1,32 @@
+function typeout = FA_TP_S()
+// function typeout = FA_TP_S()
+// -----------------------------------------------------------------
+// Returns the "float" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 's';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_UINT16.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_UINT16.sci
new file mode 100644
index 00000000..b77d7751
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_UINT16.sci
@@ -0,0 +1,37 @@
+function typeout = FA_TP_UINT16()
+// function typeout = FA_TP_UINT16()
+// -----------------------------------------------------------------
+// Returns the "uint16" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'u16';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_UINT8.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_UINT8.sci
new file mode 100644
index 00000000..f31cde0f
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_UINT8.sci
@@ -0,0 +1,37 @@
+function typeout = FA_TP_UINT8()
+// function typeout = FA_TP_UINT8()
+// -----------------------------------------------------------------
+// Returns the "uint8" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'u8';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_USER.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_USER.sci
new file mode 100644
index 00000000..e60a8ce8
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_USER.sci
@@ -0,0 +1,38 @@
+function type_out = FA_TP_USER(PrecisionSpecifier,DefaultType)
+// function type_out = FA_TP_USER(PrecisionSpecifier,DefaultType)
+// -----------------------------------------------------------------
+// Generate the output type of the output argument by using the
+// output (AnnotationFnc) generated by CheckAnnotationFunction.
+// double and float functions can be used to specify the type
+// of the output argument. They are typically used in combination
+// with zeros-like function.
+//
+// Input data:
+// PrecisionSpecifier: it can be 'double' or 'float'.
+//
+// Output data:
+// type_out: specifies the type of the output argument. It can be
+// 's' for float precision or 'd' for double precision.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+if (mtlb_strcmp(PrecisionSpecifier,'int'))
+ type_out = 'i';
+elseif (mtlb_strcmp(PrecisionSpecifier,'float'))
+ type_out = 's';
+elseif (mtlb_strcmp(PrecisionSpecifier,'double'))
+ type_out = 'd';
+elseif (mtlb_strcmp(PrecisionSpecifier,'default'))
+ type_out = DefaultType;
+else
+ error(9999, 'Unknown precision function: ""'+AnnotationFnc+'"".');
+end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_Z.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_Z.sci
new file mode 100644
index 00000000..2ac18dea
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_Z.sci
@@ -0,0 +1,32 @@
+function typeout = FA_TP_Z()
+// function typeout = FA_TP_Z()
+// -----------------------------------------------------------------
+// Returns the "double complex" type specifier
+// for Function Annotations.
+//
+// Input data:
+// ---
+//
+// Output data:
+// typeout: string containing the type specifier.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,0);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+typeout = 'z';
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/buildmacros.sce b/2.3-1/macros/FunctionAnnotation/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/FunctionAnnotation/lib b/2.3-1/macros/FunctionAnnotation/lib
new file mode 100644
index 00000000..005780a4
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/lib
Binary files differ
diff --git a/2.3-1/macros/FunctionAnnotation/names b/2.3-1/macros/FunctionAnnotation/names
new file mode 100644
index 00000000..8962de09
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/names
@@ -0,0 +1,74 @@
+FA_ADD
+FA_DIV
+FA_GetDefaultPrecision
+FA_GetFunAnn
+FA_GetOutArgInfo
+FA_GetResizeApproach
+FA_INT
+FA_MAX
+FA_MIN
+FA_MUL
+FA_REAL
+FA_SCHUR_SZ
+FA_SCHUR_TP
+FA_SUB
+FA_SZ_1
+FA_SZ_2
+FA_SZ_COLUMN_DIAG
+FA_SZ_COL_DIAG_IN_EX
+FA_SZ_DEC2BASE
+FA_SZ_DEC2BIN
+FA_SZ_DEC2HEX
+FA_SZ_DEC2OCT
+FA_SZ_DIFF
+FA_SZ_FACTOR
+FA_SZ_FROM_VAL
+FA_SZ_LINSPACE_ROW
+FA_SZ_LQE
+FA_SZ_LQR
+FA_SZ_OBSCNT
+FA_SZ_OPAPEX
+FA_SZ_OPBACKSLASH
+FA_SZ_OPCC
+FA_SZ_OPDOTAPEX
+FA_SZ_OPDOTBACKSLASH
+FA_SZ_OPDOTHAT
+FA_SZ_OPDOTSLASH
+FA_SZ_OPDOTSTAR
+FA_SZ_OPHAT
+FA_SZ_OPLOGAND
+FA_SZ_OPLOGEQ
+FA_SZ_OPLOGGE
+FA_SZ_OPLOGGT
+FA_SZ_OPLOGLE
+FA_SZ_OPLOGLT
+FA_SZ_OPLOGNE
+FA_SZ_OPLOGNOT
+FA_SZ_OPLOGOR
+FA_SZ_OPMINUS
+FA_SZ_OPPLUS
+FA_SZ_OPPLUSA
+FA_SZ_OPRC
+FA_SZ_OPSLASH
+FA_SZ_OPSTAR
+FA_SZ_PRIMES
+FA_SZ_ROW_COLUMN_CAT
+FA_SZ_ROW_DIAG
+FA_SZ_ROW_DIAG_INS_EXT
+FA_SZ_SEL1
+FA_SZ_SEL2
+FA_TP_C
+FA_TP_COMPLEX
+FA_TP_CVIMAGE
+FA_TP_D
+FA_TP_I
+FA_TP_INT16
+FA_TP_INT8
+FA_TP_MAX
+FA_TP_MIN_REAL
+FA_TP_REAL
+FA_TP_S
+FA_TP_UINT16
+FA_TP_UINT8
+FA_TP_USER
+FA_TP_Z
diff --git a/2.3-1/macros/FunctionList/FL_ExistCFunction.sci b/2.3-1/macros/FunctionList/FL_ExistCFunction.sci
new file mode 100644
index 00000000..5b63ec5b
--- /dev/null
+++ b/2.3-1/macros/FunctionList/FL_ExistCFunction.sci
@@ -0,0 +1,106 @@
+function flagexist = FL_ExistCFunction(CFunName,USER2CAvailableCDat,SCI2CAvailableCDat,ConvertedDat,ToBeConvertedDat,ReportFileName)
+// function flagexist = FL_ExistCFunction(CFunName,USER2CAvailableCDat,SCI2CAvailableCDat,ConvertedDat,ToBeConvertedDat,ReportFileName)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 30-Oct-2007 -- Raffaele Nutricato: Author.
+// 30-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),6,6);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+flagexist = %F;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+AvailableDat = USER2CAvailableCDat;
+load(AvailableDat,'Available');
+NAvail = size(Available,1);
+
+tmpcnt = 1;
+while ((tmpcnt <=NAvail) & (flagexist == %F))
+ if mtlb_strcmp(Available(tmpcnt),CFunName)
+ flagexist = %T;
+ // #RNU_RES_B
+ PrintStringInfo(' Found C Function Name in : '+AvailableDat,ReportFileName,'file','y');
+ // #RNU_RES_E
+ end
+ tmpcnt = tmpcnt + 1;
+end
+clear Available
+
+if (flagexist == %F)
+ AvailableDat = SCI2CAvailableCDat;
+ load(AvailableDat,'Available');
+ NAvail = size(Available,1);
+
+ tmpcnt = 1;
+ while ((tmpcnt <=NAvail) & (flagexist == %F))
+ if mtlb_strcmp(Available(tmpcnt),CFunName)
+ flagexist = %T;
+ // #RNU_RES_B
+ PrintStringInfo(' Found C Function Name in : '+AvailableDat,ReportFileName,'file','y');
+ // #RNU_RES_E
+ end
+ tmpcnt = tmpcnt + 1;
+ end
+ clear Available
+end
+
+if (flagexist == %F)
+ load(ConvertedDat,'Converted');
+ NConv = size(Converted,1);
+ tmpcnt = 1;
+ while ((tmpcnt <=NConv) & (flagexist == %F))
+ if mtlb_strcmp(Converted(tmpcnt),CFunName)
+ flagexist = %T;
+ // #RNU_RES_B
+ PrintStringInfo(' Found C Function Name in : '+ConvertedDat,ReportFileName,'file','y');
+ // #RNU_RES_E
+ end
+ tmpcnt = tmpcnt + 1;
+ end
+ clear Converted
+end
+
+if (flagexist == %F)
+ load(ToBeConvertedDat,'ToBeConverted');
+ NToBeConv = size(ToBeConverted,1);
+ tmpcnt = 1;
+ while ((tmpcnt <=NToBeConv) & (flagexist == %F))
+ if mtlb_strcmp(ToBeConverted(tmpcnt).CFunctionName,CFunName)
+ flagexist = %T;
+ // #RNU_RES_B
+ PrintStringInfo(' Found C Function Name in : '+ToBeConvertedDat,ReportFileName,'file','y');
+ // #RNU_RES_E
+ end
+ tmpcnt = tmpcnt + 1;
+ end
+ clear ToBeConverted
+end
+
+if (flagexist == %F)
+ // #RNU_RES_B
+ PrintStringInfo(' C Function Name not found in the ""Available"" , ""Converted"" and ""ToBeConverted"" function lists.',ReportFileName,'file','y');
+ // #RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionList/FL_ExtractFuncList.sci b/2.3-1/macros/FunctionList/FL_ExtractFuncList.sci
new file mode 100644
index 00000000..cbc14655
--- /dev/null
+++ b/2.3-1/macros/FunctionList/FL_ExtractFuncList.sci
@@ -0,0 +1,62 @@
+function [CFuncList,NElements] = FL_ExtractFuncList(FunctionDir,ClassDir,SCI2CClassSpecifier,ExtFLCls,ReportFileName)
+// function [CFuncList,NElements] = FL_ExtractFuncList(FunctionDir,ClassDir,SCI2CClassSpecifier,ExtFLCls,ReportFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Extracts the list of the C functions available. To do that
+// this function enters in the directories where the .clst and
+// .lst files are stored.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 05-Jan-2008 -- Nutricato Raffaele: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// #RNU_RES_B
+// ---------------------------------------------------------
+// --- Extract the list of files in Functions directory. ---
+// ---------------------------------------------------------
+// #RNU_RES_E
+tmppwd = pwd();
+cd(FunctionDir);
+// funfiles = ls();
+funfiles = listfiles();
+cd(tmppwd);
+NFunFiles = size(funfiles,1);
+
+// #RNU_RES_B
+// -----------------------------------------------------------
+// --- Extract the C function list from Classes directory. ---
+// -----------------------------------------------------------
+// #RNU_RES_E
+CFuncList = '';
+NElements = 0;
+
+for cntfun = 1:NFunFiles
+ FunFileName = fullfile(FunctionDir,funfiles(cntfun));
+ ClassName = FL_GetFunctionClass(FunFileName,SCI2CClassSpecifier,ReportFileName);
+ ClassFileName = fullfile(ClassDir,ClassName);
+ [tmpfunlist,tmpnelem] = File2StringArray(ClassFileName+ExtFLCls);
+ [tmppath,tmpfunname,tmpext] = fileparts(FunFileName);
+ tmpfunlist = FL_InOutArgs2CFunNames(tmpfunname,tmpfunlist,tmpnelem);
+ for cnttmpfun = 1:tmpnelem
+ NElements = NElements + 1;
+ CFuncList(NElements) = tmpfunlist(cnttmpfun);
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionList/FL_GetFunctionClass.sci b/2.3-1/macros/FunctionList/FL_GetFunctionClass.sci
new file mode 100644
index 00000000..09fad929
--- /dev/null
+++ b/2.3-1/macros/FunctionList/FL_GetFunctionClass.sci
@@ -0,0 +1,54 @@
+function SCI2CClassName = FL_GetFunctionClass(FunFileName,SCI2CClassSpecifier,ReportFileName)
+// function SCI2CClassName = FL_GetFunctionClass(FunFileName,SCI2CClassSpecifier,ReportFileName)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Jul-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// ---------------------------------------
+// --- Read the class of the function. ---
+// ---------------------------------------
+// --- Open the .sci file (read only). ---
+inannfid = SCI2COpenFileRead(FunFileName);
+
+FoundClass = 0;
+if (meof(inannfid) == 0)
+ check_string = stripblanks(mgetl(inannfid,1));
+ if (~isempty(check_string))
+ if (SCI2Cstrncmps1size(SCI2CClassSpecifier,check_string))
+ SCI2CClassName = part(check_string,length(SCI2CClassSpecifier)+1:length(check_string));
+ // #RNU_RES_B
+ PrintStringInfo(' Function belongs to class: '+SCI2CClassName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ FoundClass = 1;
+ else
+ error(9999, 'Could not find ""'+SCI2CClassSpecifier+'"" in '+FunFileName+'.');
+ end
+ end
+end
+mclose(inannfid);
+if (FoundClass == 0)
+ error(9999, 'Could not find ""'+SCI2CClassSpecifier+'"" specifier.');
+end
+
+// -------------------------------------------
+// --- End read the class of the function. ---
+// -------------------------------------------
+endfunction
+ \ No newline at end of file
diff --git a/2.3-1/macros/FunctionList/FL_InOutArgs2CFunNames.sci b/2.3-1/macros/FunctionList/FL_InOutArgs2CFunNames.sci
new file mode 100644
index 00000000..e559f385
--- /dev/null
+++ b/2.3-1/macros/FunctionList/FL_InOutArgs2CFunNames.sci
@@ -0,0 +1,51 @@
+function FunNameCFuncList = FL_InOutArgs2CFunNames(FunctionName,CommaSepCFuncList,CFuncListNElem)
+// function FunNameCFuncList = FL_InOutArgs2CFunNames(FunctionName,CommaSepCFuncList,CFuncListNElem)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Reads a Comma Separated Function List and converts it into the
+// corresponding list of C function. In the Comma Separated
+// Function List only input and output arguments are specified
+// and they are separated by a comma.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 05-Jan-2008 -- Nutricato Raffaele: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+
+FunNameCFuncList = '';
+SepChar = ',';
+for cntelem = 1:CFuncListNElem
+ tmptokens = tokens(CommaSepCFuncList(cntelem),SepChar);
+ if (size(tmptokens,1) == 0)
+ FunNameCFuncList(cntelem) = FunctionName;
+ elseif (size(tmptokens,1) == 1)
+ if part(tmptokens,1:1) == ','
+ FunNameCFuncList(cntelem) = FunctionName+tmptokens(2);
+ else
+ FunNameCFuncList(cntelem) = tmptokens(1)+FunctionName;
+ end
+ elseif (size(tmptokens,1) == 2)
+ FunNameCFuncList(cntelem) = tmptokens(1)+FunctionName+tmptokens(2);
+ else
+ disp('Incorrect format for the function list class.');
+ error(9999, 'Check the following function list class item: ""'+CommaSepCFuncList(cntelem)+'"".');
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionList/FL_UpdateConverted.sci b/2.3-1/macros/FunctionList/FL_UpdateConverted.sci
new file mode 100644
index 00000000..5f4637e8
--- /dev/null
+++ b/2.3-1/macros/FunctionList/FL_UpdateConverted.sci
@@ -0,0 +1,46 @@
+function Converted = FL_UpdateConverted(NFilesToTranslate,ConvertedDatFile)
+// function Converted = FL_UpdateConverted(NFilesToTranslate,ConvertedDatFile)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// --- Load Converted .dat file. ---
+load(ConvertedDatFile,'Converted');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+if (NFilesToTranslate >= 1)
+ // ---------------------------------------
+ // --- Update Converted Function List. ---
+ // ---------------------------------------
+ // --- Insert the current function into the converted function list. ---
+ NConvP1 = size(Converted,1)+1;
+ Converted(NConvP1) = SharedInfo.NextCFunName;
+ // -------------------------------------------
+ // --- End Update Converted Function List. ---
+ // -------------------------------------------
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionList/FL_UpdateToBeConv.sci b/2.3-1/macros/FunctionList/FL_UpdateToBeConv.sci
new file mode 100644
index 00000000..1ee2e15d
--- /dev/null
+++ b/2.3-1/macros/FunctionList/FL_UpdateToBeConv.sci
@@ -0,0 +1,114 @@
+function SharedInfo = FL_UpdateToBeConv(ASTFunName,CFunName,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,InArg,NInArg,OutArg,NOutArg,FileInfo,SharedInfo)
+// function SharedInfo = FL_UpdateToBeConv(ASTFunName,CFunName,FunPrecSpecifier,FunTypeAnnot,FunSizeAnnot,InArg,NInArg,OutArg,NOutArg,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),11,11);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+SCI2CAvailableCDat = FileInfo.FunctionList.SCI2CAvailableCDat;
+USER2CAvailableCDat = FileInfo.FunctionList.USER2CAvailableCDat;
+ConvertedDat = FileInfo.FunctionList.ConvertedDat;
+ToBeConvertedDat = FileInfo.FunctionList.ToBeConvertedDat;
+FunInfoDatDir = FileInfo.FunctionList.FunInfoDatDir;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Updating C Function List***',ReportFileName,'file','y');
+PrintStringInfo(' C Function Name: '+CFunName,ReportFileName,'file','y');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// --------------------------------------------------
+// --- Manage anticipated exit from the function. ---
+// --------------------------------------------------
+//NUT: questo codice e' identico quasi a quello della CFunCall, si pu0 pensare di
+//NUT: di fare un'unica funzione.
+// #RNU_RES_E
+
+if (SharedInfo.SkipNextFun > 0)
+ // #RNU_RES_B
+ PrintStringInfo(' Current function will not be inserted in the Function List.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ return;
+end
+
+// #RNU_RES_B
+// Exit if the function is a precision specifier and the corresponding flag is 1.
+// #RNU_RES_E
+if ((sum(mtlb_strcmp(ASTFunName,SharedInfo.Annotations.DataPrec)) > 0) & ...
+ (SharedInfo.SkipNextPrec == 1))
+ // #RNU_RES_B
+ PrintStringInfo(' Current function will not be inserted in the Function List.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ return;
+end
+
+// #RNU_RES_B
+// Exit if the function is OpEqual and the corresponding skip flag is enabled.
+// #RNU_RES_E
+if ((mtlb_strcmp(ASTFunName,'OpEqual')) & ...
+ (SharedInfo.SkipNextEqual == 1))
+ // #RNU_RES_B
+ PrintStringInfo(' Current function will not be inserted in the Function List.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ return;
+end
+
+// #RNU_RES_B
+// ---------------------------------------
+// --- If the function is not skipped. ---
+// ---------------------------------------
+// --- Check existence of the C function. ---
+// #RNU_RES_E
+flagexist = FL_ExistCFunction(CFunName,USER2CAvailableCDat,SCI2CAvailableCDat,ConvertedDat,ToBeConvertedDat,ReportFileName);
+
+// #RNU_RES_B
+// --- Update C function list and dat files. ---
+// #RNU_RES_E
+if (flagexist == %F)
+
+ // #RNU_RES_B
+ // --- Add C function to the "ToBeConverted" function list. ---
+ // #RNU_RES_E
+ load(ToBeConvertedDat,'ToBeConverted');
+
+ NToConvP1 = size(ToBeConverted,1)+1;
+ ToBeConverted(NToConvP1).SCIFunctionName = ASTFunName;
+ ToBeConverted(NToConvP1).CFunctionName = CFunName;
+
+ save(ToBeConvertedDat, "ToBeConverted");
+ SharedInfo.NFilesToTranslate = SharedInfo.NFilesToTranslate + 1;
+
+ // #RNU_RES_B
+ // --- Generate C Function dat file. ---
+ PrintStringInfo(' Add C Function ""'+CFunName+'"" to: '+ToBeConvertedDat,ReportFileName,'file','y');
+ // #RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionList/buildmacros.sce b/2.3-1/macros/FunctionList/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/FunctionList/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/FunctionList/lib b/2.3-1/macros/FunctionList/lib
new file mode 100644
index 00000000..f5a84d5f
--- /dev/null
+++ b/2.3-1/macros/FunctionList/lib
Binary files differ
diff --git a/2.3-1/macros/FunctionList/names b/2.3-1/macros/FunctionList/names
new file mode 100644
index 00000000..c40e30ca
--- /dev/null
+++ b/2.3-1/macros/FunctionList/names
@@ -0,0 +1,6 @@
+FL_ExistCFunction
+FL_ExtractFuncList
+FL_GetFunctionClass
+FL_InOutArgs2CFunNames
+FL_UpdateConverted
+FL_UpdateToBeConv
diff --git a/2.3-1/macros/GeneralFunctions/Array2String.sci b/2.3-1/macros/GeneralFunctions/Array2String.sci
new file mode 100644
index 00000000..27e9aa15
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/Array2String.sci
@@ -0,0 +1,40 @@
+function [StringArray] = Array2String(InArray);
+// function [StringArray] = Array2String(InArray);
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Converts an input array into a string. Maximum 2D array are allowed.
+// Ex.: InArray = [10, 4];
+// StringArray = "[10, 4]";
+// #RNU_RES_E
+//
+// Input data:
+// InArray: Input array.
+//
+// Output data:
+// StringArray: array converted into a string.
+//
+// Status:
+// 13-May-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+[Nrows,Ncols] = size(InArray);
+
+StringArray = '[';
+for counterrows = 1:Nrows
+ for countercols = 1:Ncols
+ StringArray = StringArray + string(InArray(counterrows,countercols)) + ',';
+ end
+ StringArray = part(StringArray,1:(length(StringArray)-1)); // Remove the last ','
+ StringArray = StringArray+';';
+end
+StringArray = part(StringArray,1:(length(StringArray)-1)); // Remove the last ';'
+StringArray = StringArray+']';
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/ConvertPathMat2C.sci b/2.3-1/macros/GeneralFunctions/ConvertPathMat2C.sci
new file mode 100644
index 00000000..d73d22c7
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/ConvertPathMat2C.sci
@@ -0,0 +1,61 @@
+function OutPath = ConvertPathMat2C(InPath,CPathStyle)
+// function OutPath = ConvertPathMat2C(InPath,CPathStyle)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Converts the input path InPath into a path by using the path
+// style specified by CPathStyle.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Jan-2008 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+if (CPathStyle == 'windows')
+ OutPath=strsubst(InPath,'/','\');
+elseif (CPathStyle == 'unix')
+ OutPath=strsubst(InPath,'\','/');
+elseif (CPathStyle == 'cygwin')
+ OutPath=strsubst(InPath,'\','/');
+ OutPath=strsubst(OutPath,'A:','/cygdrive/a');
+ OutPath=strsubst(OutPath,'B:','/cygdrive/b');
+ OutPath=strsubst(OutPath,'C:','/cygdrive/c');
+ OutPath=strsubst(OutPath,'D:','/cygdrive/d');
+ OutPath=strsubst(OutPath,'E:','/cygdrive/e');
+ OutPath=strsubst(OutPath,'F:','/cygdrive/f');
+ OutPath=strsubst(OutPath,'G:','/cygdrive/g');
+ OutPath=strsubst(OutPath,'H:','/cygdrive/h');
+ OutPath=strsubst(OutPath,'I:','/cygdrive/i');
+ OutPath=strsubst(OutPath,'J:','/cygdrive/j');
+ OutPath=strsubst(OutPath,'K:','/cygdrive/k');
+ OutPath=strsubst(OutPath,'L:','/cygdrive/l');
+ OutPath=strsubst(OutPath,'M:','/cygdrive/m');
+ OutPath=strsubst(OutPath,'N:','/cygdrive/n');
+ OutPath=strsubst(OutPath,'O:','/cygdrive/o');
+ OutPath=strsubst(OutPath,'P:','/cygdrive/p');
+ OutPath=strsubst(OutPath,'Q:','/cygdrive/q');
+ OutPath=strsubst(OutPath,'R:','/cygdrive/r');
+ OutPath=strsubst(OutPath,'S:','/cygdrive/s');
+ OutPath=strsubst(OutPath,'T:','/cygdrive/t');
+ OutPath=strsubst(OutPath,'U:','/cygdrive/u');
+ OutPath=strsubst(OutPath,'V:','/cygdrive/v');
+ OutPath=strsubst(OutPath,'W:','/cygdrive/w');
+ OutPath=strsubst(OutPath,'X:','/cygdrive/x');
+ OutPath=strsubst(OutPath,'Y:','/cygdrive/y');
+ OutPath=strsubst(OutPath,'Z:','/cygdrive/z');
+else
+ OutPath = InPath;
+end
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/File2StringArray.sci b/2.3-1/macros/GeneralFunctions/File2StringArray.sci
new file mode 100644
index 00000000..626cb6ce
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/File2StringArray.sci
@@ -0,0 +1,54 @@
+function [String_Array,N_Strings] = File2StringArray(InFileName)
+// function [String_Array,N_Strings] = File2StringArray(InFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Reads a text file and stores every line into a string array.
+// #RNU_RES_E
+//
+// Input data:
+// InFileName: path+filename of the input file.
+//
+// Output data:
+// String_Array: array of strings containing the lines of the input
+// text file.
+// N_Strings: number of strings stored in String_Array.
+//
+// Status:
+// 10-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+N_Strings = 0;
+String_Array = '';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// --------------------
+// --- Open C file. ---
+// --------------------
+fidfile = SCI2COpenFileRead(InFileName);
+
+// -------------------
+// --- Read lines. ---
+// -------------------
+tmpline = mgetl(fidfile,1);
+while (meof(fidfile) == 0)
+ N_Strings = N_Strings + 1;
+ String_Array(N_Strings) = tmpline;
+ tmpline = mgetl(fidfile,1);
+end
+
+mclose(fidfile);
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/FunName2SciFileName.sci b/2.3-1/macros/GeneralFunctions/FunName2SciFileName.sci
new file mode 100644
index 00000000..39ff5b21
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/FunName2SciFileName.sci
@@ -0,0 +1,56 @@
+function ScilabFileName = FunName2SciFileName(DirList,InFunName);
+// function ScilabFileName = FunName2SciFileName(DirList,InFunName);
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function generates the full path of the scilab file
+// related to the function name (InFunName) specified.
+// In more detail the file "eval(InFunName).sci" file is searched
+// in the directories specified in DirList.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 16-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+if (prod(size(DirList)) == 0)
+ error(9999, 'Incorrect DirList parameter.');
+end
+
+if (prod(size(InFunName)) == 0)
+ error(9999, 'Incorrect InFunName parameter.');
+end
+
+// --- Generate the PathList. ---
+for tmpcounter = 1:max(size(DirList))
+ PathList(tmpcounter) = fullfile(DirList(tmpcounter),(InFunName+'.sci'));
+end
+
+// --- Search the .sci file. ---
+ScilabFileName = listfiles(PathList);
+
+// --- Check on the number of .sci files found. ---
+if ((prod(size(ScilabFileName))) > 1)
+ disp(ScilabFileName);
+ error(9999, 'Found more than one scilab file.');
+end
+
+if ((prod(size(ScilabFileName))) < 1)
+ disp(ScilabFileName);
+ error(9999, 'Scilab file ""'+InFunName+'.sci"", not found');
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/IsNanSize.sci b/2.3-1/macros/GeneralFunctions/IsNanSize.sci
new file mode 100644
index 00000000..486f6fcc
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/IsNanSize.sci
@@ -0,0 +1,39 @@
+function outbool = IsNanSize(instring)
+// function outbool = IsNanSize(instring)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// It searches for __SCI2CNANSIZE string in the string which specifies the
+// size of the argument. Useful to find if a given size contains
+// a nan value. In this case an error is issued.
+// IsNanSize = '__SCI2CNANSIZE' -> True
+// IsNanSize = 'c*__SCI2CNANSIZE' -> True
+// IsNanSize = 'c+b' -> False
+// #RNU_RES_E
+//
+// Input data:
+// instring: string to analyze.
+//
+// Output data:
+// outbool: %T if nan string has been found.
+//
+// Status:
+// 11-Feb-2008 -- Nutricato Raffaele: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+
+outbool = %F;
+indexval = strindex(instring,'__SCI2CNANSIZE');
+
+if(length(indexval)>=1)
+ outbool = %T;
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/KeyStr2FileStrPos.sci b/2.3-1/macros/GeneralFunctions/KeyStr2FileStrPos.sci
new file mode 100644
index 00000000..e9fb1c48
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/KeyStr2FileStrPos.sci
@@ -0,0 +1,83 @@
+function [flag_found,requested_line,line_position] = KeyStr2FileStrPos(filename,key_string,method)
+// function [flag_found,requested_line,line_position] = KeyStr2FileStrPos(filename,key_string,method)
+// --------------------------------------------------------------------------------
+// #RNU_RES_B
+// This function returns a line and its position from a specified ASCII file.
+// The line and the position returned starts with a key string specified in the
+// input parameters.
+//
+// Input data:
+// filename: path + name of the ASCII file.
+// key_string: string that specifies the initial portion of the line to return.
+// method: 'cut': in the returned line will be removed the key_string
+// 'no_cut': (default), in the returned line will not be removed the key_string
+//
+// Output data:
+// flag_found: 0 if the line is not found or an error occured.
+// 1 if the search succeed.
+// requested_line: is the line in the file which contains as first characters those
+// specified in the key_string.
+// line_position: position of the line in the file; the first line in the file
+// is the line number 1.
+// #RNU_RES_E
+//
+//
+// Status:
+// 08-Jul-2002 -- Author: Raffaele Nutricato
+// 08-Jul-2002 -- Raffaele Nutricato: Revision OK
+// 23-Nov-2004 -- Raffaele Nutricato: Changed disp to warning in if (flag_found == 0).
+// It allows to disable the message it generates
+// by using warning off.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,3);
+
+
+if (argn(2) == 2)
+ method = 'no_cut';
+end
+method = convstr(method, 'u');
+
+// Initialize output parameters
+flag_found = 0;
+requested_line = '';
+line_position = 0;
+
+// Open the text file (read only)
+[fid,mess] = mopen(filename,'r');
+if ( fid == -1 )
+ disp(['Cannot open: '+filename])
+ disp(mess);
+ flag_found = 0;
+ return;
+end
+
+// loop on the lines of the file
+num_chars = length(key_string);
+while (meof(fid) == 0)
+ check_string = fgetl(fid);
+ line_position = line_position + 1;
+ if (key_string == check_string) & (key_string == num_chars) then
+ flag_found = 1;
+ requested_line = check_string;
+ if (method =='cut') then
+ requested_line(1:num_chars) = [];
+ end
+ mclose(fid);
+ return;
+ end
+end
+
+if (flag_found == 0)
+ warning('Warning: string ' + key_string + ' not found in file: ' + filename);
+ mclose(fid);
+end
+
+mclose(fid);
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/PrintStepInfo.sci b/2.3-1/macros/GeneralFunctions/PrintStepInfo.sci
new file mode 100644
index 00000000..8e1c1d02
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/PrintStepInfo.sci
@@ -0,0 +1,56 @@
+function PrintStepInfo(inputstring,filename,outputtype,formattedstring)
+// function PrintStepInfo(inputstring,filename,outputtype,formattedstring)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Prints a string by using a predefined format into a file or on
+// the stdout.
+//
+// Input data:
+// filename: optional parameter, that specifies the output file.
+// If filename is '' or it is not provided to the function,
+// the string will be printed on the stdout.
+// outputtype: 'file' -> prints only on file.
+// 'stdout' -> prints only on the stdout.
+// 'both' -> prints on both file and stdoud.
+// Default is 'stdout'.
+// formattedstring: if 'n' (default) it means that str is considered as a simple string (mputstr).
+// if 'y' then str is considered formatted according to mfprint syntax
+// Output data:
+//
+// #RNU_RES_E
+// Status:
+// 02-Jan-2006 -- Nutricato Raffaele: Author.
+// 02-Jan-2006 -- Nutricato Raffaele: TEST OK.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,4);
+
+if argn(2) < 4
+ formattedstring = 'n';
+ if argn(2) < 3
+ bothout = 'n';
+ if argn(2) < 2
+ filename = '';
+ end
+ end
+end
+if (length(filename) == 0)
+ outputtype = 'stdout'; // Prints only on the stdout.
+end
+
+blankstring = [' '];
+
+if ((outputtype=='both') | (outputtype=='stdout'))
+ disp(blankstring+'==> '+inputstring);
+end
+
+if ((outputtype=='both') | (outputtype=='file'))
+ filenamefprintf(filename,'y',blankstring+'==> '+inputstring,formattedstring);
+end
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/PrintStringInfo.sci b/2.3-1/macros/GeneralFunctions/PrintStringInfo.sci
new file mode 100644
index 00000000..a554d122
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/PrintStringInfo.sci
@@ -0,0 +1,69 @@
+function PrintStringInfo(str, filename, outputtype, ennewline,formattedstring)
+// function PrintStringInfo(str,filename,outputtype,ennewline,formattedstring)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Prints a string into a file or on the stdout or on both.
+//
+// Input data:
+// filename: optional parameter, that specifies the output file.
+// If filename is '' or it is not provided to the function,
+// the string will be printed on the stdout.
+// outputtype: 'file' -> prints only on file.
+// 'stdout' -> prints only on the stdout.
+// 'both' -> prints on both file and stdout.
+// Default is 'stdout'.
+// ennewline: optional (default = 'y'); If y adds a newline character
+// at the end of the input string.
+// formattedstring: if 'n' (default) it means that str is considered as a simple string (mputstr).
+// if 'y' then str is considered formatted according to mfprint syntax
+//
+// Output data:
+// ---
+// #RNU_RES_E
+//
+// Status:
+// 02-Jan-2006 -- Nutricato Raffaele: Author.
+// 02-Jan-2006 -- Nutricato Raffaele: TEST OK.
+// 02-May-2006 -- Nutricato Raffaele: Added ennewline.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),0,5);
+
+if argn(2) < 5
+ formattedstring = 'n';
+ if argn(2) < 4
+ ennewline = 'y';
+ if argn(2) < 3
+ outputtype = 'stdout';
+ if argn(2) < 2
+ filename = '';
+ if argn(2) < 1
+ str = '';
+ end
+ end
+ end
+ end
+end
+if (length(filename) == 0) then
+ outputtype = 'stdout'; // Prints only on the stdout.
+end
+
+if (outputtype=='both') | (outputtype=='stdout')
+ disp(str)
+end
+
+if (outputtype=='both') | (outputtype=='file')
+ if (ennewline=='y')
+ filenamefprintf(filename,'y',str,formattedstring);
+ else
+ filenamefprintf(filename,'n',str,formattedstring);
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/ReadStringCard.sci b/2.3-1/macros/GeneralFunctions/ReadStringCard.sci
new file mode 100644
index 00000000..a4525d90
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/ReadStringCard.sci
@@ -0,0 +1,61 @@
+function cardvalue = ReadStringCard(filename,cardname,commentdelim,enableerror)
+// function cardvalue = ReadStringCard(filename,cardname,commentdelim,enableerror)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Reads the string associated to the card cardname placed
+// in filename.
+// The value of cardname is assumed to be a string.
+// If the card is not found an error will occur.
+//
+// Input data:
+// filename: full path + name of the file where the card
+// is being searched.
+// cardname: string with the name of the card.
+// commentdelim: specifies a character for an eventual comment
+// (to be discarded) after the card value.
+// enableerror: 'y' enable error message.
+// 'n' enable warning message.
+//
+// Output data:
+// cardvalue: string associated to the card. Blanks characters
+// are discarded.
+// #RNU_RES_E
+//
+// Status:
+// 06-Feb-2004 -- Nutricato Raffaele: Author.
+// 06-Feb-2004 -- Nutricato Raffaele: TEST OK.
+// 25-Jun-2004 -- Nutricato Raffaele: Added Comment delimiter
+// and enableerror as input parameter.
+// 13-Apr-2007 -- Intelligente Fabio: Rewritten from Matlab to Scilab.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,3);
+
+if argn(2) == 2 then
+ commentdelim = ' ';
+ enableerror = 'y';
+
+elseif argn(2) == 3 then
+ enableerror = 'y';
+end
+
+[flag_found,requested_line,dummy2] = ...
+ KeyString2FileStringPos(filename,cardname,'cut');
+cardvalue = stripblanks(strtok(requested_line,commentdelim));
+clear requested_line dummy2
+
+if (flag_found == 0) then
+ if (enableerror == 'y') then
+ error(9999, cardname+' not found');
+ else
+ warning([cardname,' not found']);
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2CCreateDir.sci b/2.3-1/macros/GeneralFunctions/SCI2CCreateDir.sci
new file mode 100644
index 00000000..dcc39c3e
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2CCreateDir.sci
@@ -0,0 +1,31 @@
+function SCI2CCreateDir(OutDir)
+// function SCI2CCreateDir(OutDir)
+// -----------------------------------------------------------------
+// Create the dir OutDir.
+//
+// Input data:
+// OutDir: full path (absolute or relative) of the directory to be created.
+//
+// Output data:
+// ---
+//
+// Status:
+// 25-Jun-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+[tmppath,tmpfname,tmpextension]=fileparts(OutDir) ;
+
+status_dir = mkdir(tmppath,tmpfname+tmpextension) ;
+if (status_dir == 0)
+ error(9999, 'Cannot create: '+OutDir);
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2CFindFile.sci b/2.3-1/macros/GeneralFunctions/SCI2CFindFile.sci
new file mode 100644
index 00000000..912a72a8
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2CFindFile.sci
@@ -0,0 +1,41 @@
+function [FlagFound,SCIFileName] = SCI2CFindFile(PathList,FileName)
+// function [FlagFound,SCIFileName] = SCI2CFindFile(PathList,FileName)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 11-Jul-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+FlagFound = 0;
+SCIFileName = '';
+
+// Perform the search in the user .sci files.
+Nscipaths = size(PathList,1);
+counterscipaths = 1;
+while ((FlagFound == 0) & (counterscipaths <= Nscipaths))
+ dirscifilename = PathList(counterscipaths);
+ fullpathscifilename = fullfile(dirscifilename,FileName);
+ if (SCI2Cfileexist(dirscifilename,FileName))
+ // It is a function of the USER2C library.
+ FlagFound = 1;
+ SCIFileName = fullpathscifilename;
+ end
+ counterscipaths = counterscipaths + 1;
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2CNInArgCheck.sci b/2.3-1/macros/GeneralFunctions/SCI2CNInArgCheck.sci
new file mode 100644
index 00000000..71b93328
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2CNInArgCheck.sci
@@ -0,0 +1,26 @@
+function SCI2CNInArgCheck(NInArgs,MinNArgs,MaxNArgs)
+// function SCI2CNInArgCheck(NInArgs,MinNArgs,MaxNArgs)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Check that NInArgs is in the range specified by MinNArgs and
+// MaxNArgs.
+//
+// Input data:
+// NInArgs: number of input arguments of the function under test.
+// MinNArgs: minimum number of input arguments allowed.
+// MaxNArgs: maximum number of input arguments allowed.
+//
+// Output data:
+// ---
+// #RNU_RES_E
+//
+// Status:
+// 23-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato
+// -----------------------------------------------------------------
+
+if ((NInArgs < MinNArgs) | (NInArgs > MaxNArgs))
+ error(9999, 'Incorrect number of input arguments.');
+end
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2COpenFileRead.sci b/2.3-1/macros/GeneralFunctions/SCI2COpenFileRead.sci
new file mode 100644
index 00000000..8e54738c
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2COpenFileRead.sci
@@ -0,0 +1,30 @@
+function fidnumber = SCI2COpenFileRead(filename)
+// function fidnumber = SCI2COpenFileRead(filename)
+// --------------------------------------------------------------------------------
+// Open a file in read mode.
+//
+// Input data:
+// filename: path + name of the file to read.
+//
+// Output data:
+// fidnumber: file identifier.
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// --- Open the .sci file (read only). ---
+[fidnumber,fiderror] = mopen(filename,'r');
+if (fiderror < 0)
+ error(['Cannot open (in read mode): '+filename]);
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2COpenFileWrite.sci b/2.3-1/macros/GeneralFunctions/SCI2COpenFileWrite.sci
new file mode 100644
index 00000000..f87aef87
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2COpenFileWrite.sci
@@ -0,0 +1,30 @@
+function fidnumber = SCI2COpenFileWrite(filename)
+// function fidnumber = SCI2COpenFileWrite(filename)
+// --------------------------------------------------------------------------------
+// Open a file in write mode.
+//
+// Input data:
+// filename: path + name of the file to be written.
+//
+// Output data:
+// fidnumber: file identifier.
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// --- Open the .sci file (write mode). ---
+[fidnumber,fiderror] = mopen(filename,'w');
+if (fiderror < 0)
+ error(9999, 'Cannot open (in write mode): '+filename);
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2CTemplate.sci b/2.3-1/macros/GeneralFunctions/SCI2CTemplate.sci
new file mode 100644
index 00000000..e47bdd00
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2CTemplate.sci
@@ -0,0 +1,32 @@
+function out = SCI2CTemplate(in1,in2)
+// function out = SCI2CTemplate(in1,in2)
+// -----------------------------------------------------------------
+// This is a template function which shows how to comment functions.
+//
+// Input data:
+// in1: input argument number 1
+// in2: input argument number 2
+//
+// Output data:
+// out: output argument number 1
+//
+// Status:
+// 03-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Ccopyfile.sci b/2.3-1/macros/GeneralFunctions/SCI2Ccopyfile.sci
new file mode 100644
index 00000000..f95c29ef
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Ccopyfile.sci
@@ -0,0 +1,49 @@
+function SCI2Ccopyfile(InFileName,OutFileName,CopyMode)
+// function SCI2Ccopyfile(InFileName,OutFileName,CopyMode)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Copy the contents of infile into outfile. Append mode is used.
+//
+// Input data:
+// InFileName: path+filename of the input file.
+// OutFileName: path+filename of the input file.
+// CopyMode: 'append' or 'overwrite'
+// #RNU_RES_E
+//
+// Output data:
+// ---
+//
+// Status:
+// 23-Nov-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+if (CopyMode == 'append')
+ // ------------------------
+ // --- Open Input file. ---
+ // ------------------------
+ fidIn = SCI2COpenFileRead(InFileName);
+
+ // -------------------
+ // --- Read lines. ---
+ // -------------------
+ tmpline = mgetl(fidIn,1);
+ while (meof(fidIn) == 0)
+ PrintStringInfo(tmpline, OutFileName, 'file', 'y');
+ tmpline = mgetl(fidIn,1);
+ end
+ mclose(fidIn);
+elseif (CopyMode == 'overwrite')
+ PrintStringInfo(' ', OutFileName, 'file', 'y'); // Cannot use scilab copyfile when the directory is empty!.
+ copyfile(InFileName,OutFileName);
+else
+ SCI2Cerror('Unknown CopyMode: ""'+CopyMode+'""');
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cfileexist.sci b/2.3-1/macros/GeneralFunctions/SCI2Cfileexist.sci
new file mode 100644
index 00000000..05dbf590
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cfileexist.sci
@@ -0,0 +1,38 @@
+function ExistTest = SCI2Cfileexist(InDir,FileName)
+// function ExistTest = SCI2Cfileexist(InDir,FileName)
+// -----------------------------------------------------------------
+// Searches for the file FileName in the directory InDir.
+// Return %F if it doesn't exist.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 12-Jun-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+tmppwd = pwd();
+cd(InDir);
+allfiles = ls(FileName);
+cd(tmppwd);
+
+if (size(allfiles,1) == 0)
+ ExistTest = %F;
+elseif (size(allfiles,1) == 1)
+ ExistTest = %T;
+else
+ SCI2Cerror('Very Strange! Found more than one file with the same name.');
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cflipud.sci b/2.3-1/macros/GeneralFunctions/SCI2Cflipud.sci
new file mode 100644
index 00000000..2e988c1b
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cflipud.sci
@@ -0,0 +1,40 @@
+function OutputData = SCI2Cflipud(InputData)
+// function OutputData = SCI2Cflipud(InputData)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Inverts (flips) the position of the arguments of InputData.
+// Input data can be a struct or an array.
+// Ex.:
+// A(1) = 'one';
+// A(2) = 'two';
+// A(3) = 'three';
+// B = SCI2Cflipud(A);
+// B(1) = 'three';
+// B(2) = 'two';
+// B(3) = 'one';
+//
+// Input data:
+// InputData: input array or structure.
+//
+// Output data:
+// OutputData: flipped version of the input array.
+//
+// #RNU_RES_E
+// Status:
+// 12-May-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+NInputs = size(InputData,1);
+OutputData = InputData; // To be sure that they will have the same structure.
+for cnt = 1:NInputs
+ OutputData(cnt) = InputData(NInputs-cnt+1);
+end
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cmdelete.sci b/2.3-1/macros/GeneralFunctions/SCI2Cmdelete.sci
new file mode 100644
index 00000000..d19233dc
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cmdelete.sci
@@ -0,0 +1,33 @@
+function SCI2Cmdelete(InFile)
+// function SCI2Cmdelete(InFile)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Deletes the input files only if the file really exists.
+// This avoids the issuing of the error generated by mdelete.
+//
+// Input data:
+// InFile: full path of the file to be deleted.
+//
+// Output data:
+// #RNU_RES_E
+//
+// Status:
+// 12-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+[Inx,Inierr]=fileinfo(InFile);
+if Inierr == 0
+ mdelete(InFile);//NUT: questa stampa a video il file che sta cancellando.
+ //NUT ho fatto delle altre prove e mi funzionava tutto. solo che quando
+ //NUT eseguo il codice scilab to c mi stampa a video tutto il nome del file.
+end
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cresize.sci b/2.3-1/macros/GeneralFunctions/SCI2Cresize.sci
new file mode 100644
index 00000000..ba78fde0
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cresize.sci
@@ -0,0 +1,33 @@
+function out = SCI2Cresize(in)
+// function out = SCI2Cresize(in)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// It is a dummy function used by the programmer to specify at a given
+// point that a variable is changing its size. This will be translated
+// into C code by re-assigning the size array.
+// Next releases of this function will include check to avoid
+// increment of the size outside the limits specified by the first
+// initialization of the variable.
+//
+// Input data:
+// in: input variable to be resized
+//
+// Output data:
+// out: resized variable
+//
+// #RNU_RES_E
+// Status:
+// 10-Jun-2008 -- Nutricato Raffaele: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+out = in;
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cstring.sci b/2.3-1/macros/GeneralFunctions/SCI2Cstring.sci
new file mode 100644
index 00000000..cf6d4370
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cstring.sci
@@ -0,0 +1,34 @@
+function outstring = SCI2Cstring(innum)
+// function outstring = SCI2Cstring(innum)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// It fixes the bug of string function when applied to
+// exponential formats:
+// Example:
+// -->string(10e-10)
+// ans =
+// 1.000D-09
+// Note how the "D" is syntactically wrong.
+//
+// Input data:
+// innnum: input number to be converted into string.
+//
+// Output data:
+// outstring: string containing the conversion.
+// #RNU_RES_E
+//
+// Status:
+// 07-May-2008 -- Nutricato Raffaele: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+outstring=strsubst(string(innum),'D','e');
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cstrncmp.sci b/2.3-1/macros/GeneralFunctions/SCI2Cstrncmp.sci
new file mode 100644
index 00000000..54a5e148
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cstrncmp.sci
@@ -0,0 +1,27 @@
+function res = SCI2Cstrncmp(s1,s2,n)
+// function res = SCI2Cstrncmp(s1,s2,n)
+// -----------------------------------------------------------------
+// This function compares first n characters of strings s1 and s2.
+// SCI2Cstrncmp(s1,s2,n) returns 1logical T (true) if the first n characters of
+// the strings s1 and s2 are the same and logical 0 (false) otherwise.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 16-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+res = (part(s1,1:n) == part(s2,1:n));
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SCI2Cstrncmps1size.sci b/2.3-1/macros/GeneralFunctions/SCI2Cstrncmps1size.sci
new file mode 100644
index 00000000..38e8c371
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SCI2Cstrncmps1size.sci
@@ -0,0 +1,32 @@
+function res = SCI2Cstrncmps1size(s1,s2);
+// function res = SCI2Cstrncmps1size(s1,s2);
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function compares first n characters of strings s1 and s2.
+// n is the size of the string s1.
+// SCI2Cstrncmps1size returns logical T (true) if the first n characters of
+// the strings s1 and s2 are the same and logical 0 (false) otherwise.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// #RNU_RES_E
+// Status:
+// 16-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+n = length(s1);
+res = (part(s1,1:n) == part(s2,1:n));
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/SizeInByte.sci b/2.3-1/macros/GeneralFunctions/SizeInByte.sci
new file mode 100644
index 00000000..fa2d4f94
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/SizeInByte.sci
@@ -0,0 +1,41 @@
+function SizeIn = SizeInByte(InDataType)
+// function SizeIn = SizeInByte(InDataType)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Returns the size in bytes of the input data type.
+//
+// Input data:
+// InDataType: input data type. It can be:
+// 'float'
+// 'double'
+// 'floatComplex*'
+// 'doubleComplex*'
+//
+// Output data:
+// SizeIn: size in bytes of the input data type.
+//
+// #RNU_RES_E
+// Status:
+// 12-May-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+if (InDataType == 'float')
+ SizeIn = 4;
+elseif (InDataType == 'double')
+ SizeIn = 8;
+elseif (InDataType == 'floatComplex*')
+ SizeIn = 8;
+elseif (InDataType == 'doubleComplex*')
+ SizeIn = 16;
+else
+ error('Unknown data type: '+InDataType);
+end
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/buildmacros.sce b/2.3-1/macros/GeneralFunctions/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/GeneralFunctions/dispina.sci b/2.3-1/macros/GeneralFunctions/dispina.sci
new file mode 100644
index 00000000..dc07cddc
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/dispina.sci
@@ -0,0 +1,31 @@
+function dispina(instring);
+// function dispina(instring);
+// -----------------------------------------------------------------
+// Quista sacciu sulu iou comu funziona e a ce me serve.
+//
+// Input data:
+//
+// Output data:
+//
+// Status:
+// 12-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp(instring);
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+disp('++++++++++++++++++++++++++++++++++++++++++++++++++')
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/filenamefprintf.sci b/2.3-1/macros/GeneralFunctions/filenamefprintf.sci
new file mode 100644
index 00000000..f25e603e
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/filenamefprintf.sci
@@ -0,0 +1,48 @@
+function filenamefprintf(filename,ennewline,str,formattedstring)
+// function filenamefprintf(filename,ennewline,str,formattedstring)
+// --------------------------------------------------------------------------------
+// Uses the printf to print the string specified by varargin. filenamefprintf
+// uses the filename instead of the fid parameter used by fprintf.
+// Everytime filenamefprintf is called it
+// opens the file, prints the string in it and then closes it.
+// Opening is performed in read/append mode (at+).
+//
+// Input data:
+// filename: string that specifies the name of the file.
+// varargin are the input arguments for the printf.
+// formattedstring: if 'n' (default) it means that str is considered as a simple string (mputstr).
+// if 'y' then str is considered formatted according to mfprint syntax
+//
+// Output data:
+// ---
+//
+// Status:
+// 31-Jan-2006 -- Nutricato Raffaele: Author.
+// 31-Jan-2006 -- Nutricato Raffaele: TEST OK.
+//
+// Copyright 2006 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),4,4);
+
+
+// [FidReportFile, mess] = mopen(deblank(filename),'at+');
+ [FidReportFile, mess] = mopen(filename,'a+');
+ if (FidReportFile == -1) then
+ error(9999, mess);
+ end
+ if formattedstring == 'n'
+ mputstr(str,FidReportFile);
+ else
+ mfprintf(FidReportFile, str);
+ end
+ if ennewline=='y' then
+ mfprintf(FidReportFile,'\n');
+ end
+ mclose(FidReportFile);
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/float.sci b/2.3-1/macros/GeneralFunctions/float.sci
new file mode 100644
index 00000000..634950b1
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/float.sci
@@ -0,0 +1,26 @@
+function y = float(x)
+// -----------------------------------------------------------------
+// Dummy function for float precision specifier.
+//
+// Input data:
+// x: input array or scalar.
+//
+// Output data:
+// y: output array or scalar.
+//
+// Status:
+// 12-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+
+y = x;
+
+endfunction
diff --git a/2.3-1/macros/GeneralFunctions/lib b/2.3-1/macros/GeneralFunctions/lib
new file mode 100644
index 00000000..9d57416d
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/lib
Binary files differ
diff --git a/2.3-1/macros/GeneralFunctions/names b/2.3-1/macros/GeneralFunctions/names
new file mode 100644
index 00000000..eb8300a1
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/names
@@ -0,0 +1,28 @@
+Array2String
+ConvertPathMat2C
+File2StringArray
+FunName2SciFileName
+IsNanSize
+KeyStr2FileStrPos
+PrintStepInfo
+PrintStringInfo
+ReadStringCard
+SCI2CCreateDir
+SCI2CFindFile
+SCI2CNInArgCheck
+SCI2COpenFileRead
+SCI2COpenFileWrite
+SCI2CTemplate
+SCI2Ccopyfile
+SCI2Cfileexist
+SCI2Cflipud
+SCI2Cmdelete
+SCI2Cresize
+SCI2Cstring
+SCI2Cstrncmp
+SCI2Cstrncmps1size
+SizeInByte
+dispina
+filenamefprintf
+float
+squeezestrings
diff --git a/2.3-1/macros/GeneralFunctions/squeezestrings.sci b/2.3-1/macros/GeneralFunctions/squeezestrings.sci
new file mode 100644
index 00000000..049476d1
--- /dev/null
+++ b/2.3-1/macros/GeneralFunctions/squeezestrings.sci
@@ -0,0 +1,31 @@
+function OutString = squeezestrings(InStringArray)
+// function OutString = squeezestrings(InStringArray)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Converts an array of strings into a single string.
+//
+// Input data:
+// InStringArray: Array of strings.
+//
+// Output data:
+// OutString: Output string.
+//
+// #RNU_RES_E
+// Status:
+// 12-Apr-2007 -- Nutricato Raffaele: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+OutString = [];
+for counterstrings = 1:max(size(InStringArray))
+ OutString = OutString+InStringArray(counterstrings);
+end
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRADCSetup.sci b/2.3-1/macros/Hardware/AVR/AVRADCSetup.sci
new file mode 100644
index 00000000..264062bc
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRADCSetup.sci
@@ -0,0 +1,47 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRADCSetup(prescaler,adc_ref)
+// Function to initialise ADC of AVR
+//
+// Calling Sequence
+// AVRADCSetup(uint8 prescaler, uint8 adc_ref)
+//
+// Parameters
+// prescaler: prescaler to be used for generating ADC clock (0-7)
+// adc_ref : reference voltage to be used for ADC conversion
+// 0 -> Voltage on VREF pin
+// 1 -> Voltage on AVCC pin
+// 2 -> Internal 2.56 reference voltage
+//
+// Description
+// This function initialises ADc of AVR with given parameters. 'prescaler' is
+// needed for deciding ADC clock. ADC clock should be between 50KHz and 200KHz
+// and it given as (MCU clock/2^prescaler). Select appropriate prescaler depending
+// on MCU clock. 'adc_ref' selects one of the available reference voltage sources
+// available
+// Examples
+// AVRADCSetup(128,0)
+// See also
+// AVRReadADC
+//
+// Authors
+// Siddhesh Wani Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(prescaler>=8)
+disp("Error : Invalid input argument ''prescaler'' in AVRADCSetup function.");
+end
+if(adc_ref>=3) then
+disp("Error : Invalid input argument ''adc_ref'' in AVRADCSetup function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRDigitalIn.sci b/2.3-1/macros/Hardware/AVR/AVRDigitalIn.sci
new file mode 100644
index 00000000..54eb327b
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRDigitalIn.sci
@@ -0,0 +1,50 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+
+function state = AVRDigitalIn(port,pin)
+// Function to get state (high\low) of a digital input pin on AVR
+//
+// Calling Sequence
+// state=AVRDigitalIn(port,pin)
+//
+// Parameters
+// port : port of microcontroller to be used
+// pin : pin of port (mentioned above) to be used
+// Returns
+// state : state of an input pin (HIGH\LOW)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// inputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port as
+// digital input.
+//
+// Examples
+// pinA0 = AVRDigitalIn(1,0) //To read state on pin 0 of port A
+//
+// See also
+// AVRDigitalOut AVRDigitalSetup
+//
+//
+// Authors
+// Siddhesh Wani Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if((port==0)|(port>=5)) then
+disp("Error : Inavalid input argument ''port'' in AVRDigitalIn function.");
+end
+if(pin>=8) then
+disp("Error : Inavalid input argument ''pin'' in AVRDigitalIn function.");
+end
+state = 0;
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRDigitalOut.sci b/2.3-1/macros/Hardware/AVR/AVRDigitalOut.sci
new file mode 100644
index 00000000..a86a5aa9
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRDigitalOut.sci
@@ -0,0 +1,51 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRDigitalOut(port,pin,state)
+// Function to change state (high\low) of a digital output pin on AVR
+//
+// Calling Sequence
+// AVRDigitalOut(port,pin,state)
+//
+// Parameters
+// port : port of microcontroller to be used
+// pin : pin of port (mentioned above) to be used
+// state : state to be outputed on pin (HIGH\LOW)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port as
+// digital output. Also, desired output state must be specified as
+// 'HIGH' or 'LOW'.
+//
+// Examples
+// AVRDigitalOut('A',0,HIGH)
+//
+// See also
+// AVRDigitalIn
+//
+//
+// Authors
+// Siddhesh Wani Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if((port==0)|(port>=8)) then
+disp("Error : Inavalid input argument ''port'' in AVRDigitalOut function.");
+end
+if(pin>=8) then
+disp("Error : Invalid input argument ''pin'' in AVRDigitalOut function.");
+end
+if(state>=2) then
+disp("Error : Invalid input argument ''state'' in AVRDigitalOut function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRDigitalPortSetup.sci b/2.3-1/macros/Hardware/AVR/AVRDigitalPortSetup.sci
new file mode 100644
index 00000000..5f0b9671
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRDigitalPortSetup.sci
@@ -0,0 +1,47 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRDigitalPortSetup(port,direction)
+// Function to decide direction of port on AVR
+//
+// Calling Sequence
+// AVRDigitalPortSetup(port,direction)
+//
+// Parameters
+// port : port of microcontroller to be used(1 for PORTA, 2 for PORTB,...)
+// direction : direction to be set for pin (0 for INPUT, 1 for OUTPUT)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs/inputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port to be
+// used as digital output/input. Also, desired direction must be specified as
+// 'INPUT' or 'OUTPUT'.
+//
+// Examples
+// AVRDigitalPortSetup(1,0); //This function will make PortA as input port
+//
+// See also
+// AVRDigitalIn AVRDigitalOut
+//
+//
+// Authors
+// Siddhesh Wani Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if((port==0)|(port>=5)) then
+disp("Error : Invalid input argument ''port'' in AVRDigitalPortSetup function.");
+end
+if(direction>=2) then
+disp("Error : Invalid input argument ''direction'' in AVRDigitalPortSetup function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRDigitalSetup.sci b/2.3-1/macros/Hardware/AVR/AVRDigitalSetup.sci
new file mode 100644
index 00000000..e707d4fa
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRDigitalSetup.sci
@@ -0,0 +1,51 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRDigitalSetup(port,pin,direction)
+// Function to decide direction of a digital pin on AVR
+//
+// Calling Sequence
+// AVRDigitalSetup(port,pin,direction)
+//
+// Parameters
+// port : port of microcontroller to be used
+// pin : pin of port (mentioned above) to be used
+// direction : direction to be set for pin (INPUT\OUTPUT)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs/inputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port to be
+// used as digital output/input. Also, desired direction must be specified as
+// 'INPUT' or 'OUTPUT'.
+//
+// Examples
+// AVRDigitalSetup('A',0,OUTPUT)
+//
+// See also
+// AVRDigitalIn AVRDigitalOut
+//
+//
+// Authors
+// Siddhesh Wani Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if((port==0)|(port>=5)) then
+disp("Error : Invalid input argument ''port'' in AVRDigitalSetup function.");
+end
+if(pin>=8) then
+disp("Error : Invalid input argument ''pin'' in AVRDigitalSetup function.");
+end
+if(direction>=2) then
+disp("Error : Invalid input argument ''direction'' in AVRDigitalSetup function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRGetTimerValue.sci b/2.3-1/macros/Hardware/AVR/AVRGetTimerValue.sci
new file mode 100644
index 00000000..afb47ac8
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRGetTimerValue.sci
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function count = AVRGetTimerValue(timer)
+// Function to get timer count
+//
+// Parameters
+// timer : timer whose current count is to be returned
+// 0 for timer0
+// 1 for timer1
+// 2 for timer2
+//
+// Description
+// This function returns the count value of a desired timer.By knowing the count value
+// certain interrupt action can be taken.
+//
+// Examples
+// AVRGetTimerValue(0); //returns present count of the TCNT0 counter
+//
+// See also
+// AVRTimerSetup
+//
+// Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(timer>=3) then
+disp("Error : Invalid input argument ''timer'' in AVRGetTimerValue function.");
+end
+count = 0;
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRPWM0SetDuty.sci b/2.3-1/macros/Hardware/AVR/AVRPWM0SetDuty.sci
new file mode 100644
index 00000000..604d2f40
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRPWM0SetDuty.sci
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRPWM0SetDuty(duty)
+//Function to Set Duty cycle of PWM Output generated by Timer0 at OC0 pin.
+//Parameters
+// duty : It holds an integer value from 0 to 100 which sets the percentage
+// of time for which signal is active.
+//Description
+// Each Micro controller has PWM output pins which can generate varying voltage
+// from 0V-5V.In this function by varying the duty cycle, varying voltage can be
+// produced.
+//Example
+// AVRPWM0SetDuty(50); //Produces 2.5V at OC0 pin
+// AVRPWM0SetDuty(0); //Produces 0V at OC0 pin
+//See also
+// AVRPWM0Setup
+//
+//Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(duty>100) then
+disp("Error : Invalid input argument ''duty'' in AVRPWM0SetDuty function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRPWM0Setup.sci b/2.3-1/macros/Hardware/AVR/AVRPWM0Setup.sci
new file mode 100644
index 00000000..39861c86
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRPWM0Setup.sci
@@ -0,0 +1,68 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRPWM0Setup(waveform_mode,output_mode)
+//Function to Setup OC0 pin for required PWM mode
+//Description
+// Every Micro controller has PWM pins which can generate varying voltages
+// from 0V-5V.This function helps to use OC0 pin to produce required
+// output waveform by setting the waveform mode and otput mode.
+//
+//Parameters
+// waveform_mode:
+// 0 for Phase correct PWM Mode
+// 1 for Fast PWM Mode
+// 2 for CTC Mode
+// output_mode:
+// For Phase Correct PWM Mode:
+// 0 for Clear OC0 on compare match when up-counting. Set OC0 on compare
+// match when down-counting.
+// 1 for Set OC0 on compare match when up-counting. Clear OC0 on compare
+// match when down-counting.
+//
+// For Fast PWM Mode:
+// 0 for non-inverted output i.e Clear OC0 on compare match, set OC0 at BOTTOM.
+// 1 for inverted output i.e Set OC0 on compare match, clear OC0 at BOTTOM.
+//
+// For CTC Mode:
+// 0 to Clear OC0 on compare match
+// 1 to Set OC0 on compare match
+// 2 to toggle OC0 on compare match
+//
+//Example
+// AVRPWM0Setup(2,0); //This function will select CTC waveform mode and will clear OC0 on
+// compare match
+//See also
+// AVRPWM0SetDuty
+//
+//Authors
+// Ashish Kamble
+//
+//This is curretly dummy function. It provides no functionality but is required
+//for providing support for generating C code for AVR.
+
+if(waveform_mode>=3) then
+disp("Error : Invalid input argument ''waveform_mode'' in AVRPWM0Setup function.");
+end
+
+if((waveform_mode==0)|(waveform_mode==1)) then
+ if(output_mode>=2) then
+ disp("Error : Invalid input argument ''output_mode'' in AVRPWM0Setup function.");
+ end
+end
+
+
+if(waveform_mode==2) then
+ if(output_mode>=3) then
+ disp("Error : Invalid input argument ''output_mode'' in AVRPWM0Setup function.");
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRPWM1SetDuty.sci b/2.3-1/macros/Hardware/AVR/AVRPWM1SetDuty.sci
new file mode 100644
index 00000000..60dc0a9f
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRPWM1SetDuty.sci
@@ -0,0 +1,52 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRPWM1SetDuty(output_pin,duty,Top_Value)
+//Function to Set Duty cycle of PWM Output generated by Timer1 at OC1A or OC1B pin.
+//Parameters
+// ouput_pin:
+// 0 for selecting OC1A as output pin
+// 1 for selecting OC1B as output pin
+//
+// duty: It holds an integer value from 0 to 100 which sets the percentage
+// of time for which signal is active.
+//
+// Top_Value: It holds an integer value from 0 to 65535.This value sets the Top
+// value of the counter TCNT1 i.e ICR.(for more info refer datasheet)
+//
+//Description
+// Each Micro controller has PWM output pins which can generate varying voltage
+// from 0V-5V.This function Sets the duty cycle of output PWM signal.Also this function
+// decides the Top Vale of TCNT1 and the output pin to output PWM signal.
+//
+//Example
+// AVRPWM1SetDuty(0,50,40000); //This function will produce PWM signal of 50% duty
+// cycle on OC1A pin and TCNT1 will reset at 40000 instead
+// at 65535.
+//
+//See also
+// AVRPWM1Setup
+//
+//Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(output_pin>=2) then
+disp("Error : Invalid input argument ''output_pin'' in AVRPWM1SetDuty function.");
+end
+if(duty>100) then
+disp("Error : Invalid input argument ''duty'' in AVRPWM1SetDuty function.");
+end
+if(Top_Value>65535) then
+disp("Error : Invalid input argument ''Top_Value'' in AVRPWM1Setduty function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRPWM1Setup.sci b/2.3-1/macros/Hardware/AVR/AVRPWM1Setup.sci
new file mode 100644
index 00000000..51aa25b1
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRPWM1Setup.sci
@@ -0,0 +1,79 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRPWM1Setup(waveform_mode,output_mode,output_pin)
+//Function to Setup OC1A or OC1B pin for required PWM mode
+//Description
+// Every Micro controller has PWM pins which can generate varying voltages
+// from 0V-5V.This function helps to use OC1A or OC1B pin to produces required
+// output waveform by setting the waveform mode and otput mode.
+//
+//Parameters
+// waveform_mode:
+// 0 for Phase correct PWM Mode
+// 1 for Fast PWM Mode
+// 2 for CTC Mode
+//
+// output_mode:
+// For Phase Correct PWM Mode:
+// 0 for Clear OC1A or OC1B on compare match when up-counting. Set OC1A or OC1B
+// on compare match when down-counting.
+// 1 for Set OC1A or OC1B on compare match when up-counting. Clear OC1A or OC1B
+// on compare match when down-counting.
+//
+// For Fast PWM Mode:
+// 0 for non-inverted output i.e Clear OC1A or OC1B on compare match, set OC1A
+// OC1B at BOTTOM.
+// 1 for inverted output i.e Set OC1A or OC1B on compare match, clear OC1A or OC1B
+// at BOTTOM.
+//
+// For CTC Mode:
+// 0 to Clear OC1A or OC1B on compare match
+// 1 to Set OC1A or OC1B on compare match
+// 2 to toggle OC1A or OC1B on compare match
+//
+// output_pin:
+// 0 for selecting OC1A as output pin
+// 1 for selecting OC1B as output pin
+//
+//Example
+// AVRPWM1Setup(2,0,0); //This function will select CTC mode and will clear OC1A or OC1B
+// on compare match.Also as defined the output will be produced at
+// 0C1A pin.
+//See also
+// AVRPWM1SetDuty
+//
+//Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(waveform_mode>=3) then
+disp("Error : Invalid input argument ''waveform_mode'' in AVRPWM1Setup function.");
+end
+if(waveform_mode==0|waveform_mode==1) then
+{
+ //if((type(output_mode)~=8)|(output_mode>=2)) then
+ //disp("Error : Invalid input argument ''output_mode'' in AVRPWM1Setup function.");
+ //end
+}
+end
+if(waveform_mode==2) then
+{
+ if((type(output_mode)~=8)|(output_mode>=3)) then
+ disp("Error : Invalid input argument ''output_mode'' in AVRPWM1Setup function.");
+ end
+}
+end
+if(output_pin>=2) then
+disp("Error : Invalid input argument ''output_pin'' in AVRPWM1Setup function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRPWM2SetDuty.sci b/2.3-1/macros/Hardware/AVR/AVRPWM2SetDuty.sci
new file mode 100644
index 00000000..929c1a0a
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRPWM2SetDuty.sci
@@ -0,0 +1,38 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRPWM2SetDuty(duty)
+//Function to Set Duty cycle of PWM Output generated by Timer2 at OC2 pin.
+//Description
+// Each Micro controller has PWM output pins which can generate varying voltage
+// from 0V-5V.In this function by varying the duty cycle, varying voltage can be
+// produced.
+//
+//Parameters
+// duty : It holds an integer value from 0 to 100 which sets the percentage
+// of time for which signal is active.
+//
+//Example
+// AVRPWM2SetDuty(50); //Produces 2.5V at OC2 pin
+// AVRPWM2SetDuty(0); //Produces 0V at OC2 pin
+//
+//See also
+// AVRPWM2Setup
+//
+//Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(duty>100) then
+disp("Error : Invalid input argument ''duty'' in AVRPWM2SetDuty function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRPWM2Setup.sci b/2.3-1/macros/Hardware/AVR/AVRPWM2Setup.sci
new file mode 100644
index 00000000..d4bc74a6
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRPWM2Setup.sci
@@ -0,0 +1,69 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRPWM2Setup(waveform_mode,output_mode)
+//Function to Setup OC2 pin for required PWM mode
+//Description
+// Every Micro controller has PWM pins which can generate varying voltages
+// from 0V-5V.This function helps to use OC2 pin to produces required
+// output waveform by setting the waveform mode and otput mode.
+//
+//Parameters
+// waveform_mode:
+// 0 for Phase correct PWM Mode
+// 1 for Fast PWM Mode
+// 2 for CTC Mode
+//output_mode:
+// For Phase Correct PWM Mode:
+// 0 for Clear OC2 on compare match when up-counting. Set OC2 on compare
+// match when down-counting.
+// 1 for Set OC2 on compare match when up-counting. Clear OC2 on compare
+// match when down-counting.
+//
+// For Fast PWM Mode:
+// 0 for non-inverted output i.e Clear OC2 on compare match, set OC2 at BOTTOM.
+// 1 for inverted output i.e Set OC2 on compare match, clear OC2 at BOTTOM.
+//
+// For CTC Mode:
+// 0 to Clear OC2 on compare match
+// 1 to Set OC2 on compare match
+// 2 to toggle OC2 on compare match
+//
+//Example
+// AVRPWM2Setup(2,0); //This function will select CTC waveform mode and will clear OC2 on
+// compare match
+//See also
+// AVRPWM2SetDuty
+//
+//Authors
+// Ashish Kamble
+//
+//This is curretly dummy function. It provides no functionality but is required
+//for providing support for generating C code for AVR.
+
+if(waveform_mode>=3) then
+disp("Error : Invalid input argument ''waveform_mode'' in AVRPWM2Setup function.");
+end
+if((waveform_mode==0)|(waveform_mode==1)) then
+{
+ //if((type(output_mode)~=8)|(output_mode>=2)) then
+ //disp("Error : Invalid input argument ''output_mode'' in AVRPWM2Setup function.");
+ //end
+}
+end
+if(waveform_mode==2) then
+{
+ if((type(output_mode)~=8)|(output_mode>=3)) then
+ disp("Error : Invalid input argument ''output_mode'' in AVRPWM2Setup function.");
+ end
+}
+end
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRReadADC.sci b/2.3-1/macros/Hardware/AVR/AVRReadADC.sci
new file mode 100644
index 00000000..7fd3e67e
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRReadADC.sci
@@ -0,0 +1,44 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function adc_result = AVRReadADC(channel)
+// Function to get voltage on analog pin on AVR
+//
+// Calling Sequence
+// u8AVRReadADCs(channel)
+//
+// Parameters
+// channel : Select which channel is to be read. Values from 0-7 select one
+// of the pins ADC0-ADC7. For other possible channel values refer
+// datasheet
+// Returns->
+// result : Digital value for the voltage present on channel selected
+//
+// Description
+// This function returns digital value for present on adc pins. 'channel'
+// selects which of the ADC0-ADC7 is to be used for reading analog value.
+// Apart from reading just ADC0-ADC7 other it can also read differential
+// voltages between some pins. For channel values for those options, please
+// refer datasheet.
+//
+// Examples
+// adc_result = u8AVRReadADC(0) //Read ADC0
+//
+// Authors
+// Siddhesh Wani Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+
+if(channel>=8) then
+disp("Error : Inavlid input argument ''channel'' in AVRReadADC function.");
+end
+adc_result = 0; //adc_result has been initialised to avoid runtime error.
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRSleep.sci b/2.3-1/macros/Hardware/AVR/AVRSleep.sci
new file mode 100644
index 00000000..a1b6add2
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRSleep.sci
@@ -0,0 +1,4 @@
+function AVRSleep(delay)
+
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRTimerSetup.sci b/2.3-1/macros/Hardware/AVR/AVRTimerSetup.sci
new file mode 100644
index 00000000..7c5dd1da
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRTimerSetup.sci
@@ -0,0 +1,56 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRTimerSetup(timer,prescaler,clock_source)
+//Function to setup Timers in ATmega16
+//Descrpition:
+// This function tells the micro controller which clock source you will be using.
+// The timer value and prescaler value passed in this function setup the timer as per
+// your requirement.
+//
+//Parameters:
+// timer : It is an integer value.
+// 0 to setup timer0
+// 1 to setup timer1
+// 2 to setup timer2
+// prescaler : It is an integer value.
+// 1 for no prescaling i.e clock will run at max 16Hz frequency
+// 8 for prescaling clock by 8 i.e new clock frequency will be (clk/8)
+// 64 for prescaling clock by 64 i.e new clock frequency will be (clk/64)
+// 256 for prescaling clock by 256 i.e new clock frequency will be (clk/256)
+// 1024 for prescaling clock by 1024 i.e new clock frequency will be (clk/1024)
+// clock_source : It is an integer value.
+// 0 if you are using internal clock source
+// 1 if you are using external clock source
+//Example
+// AVRTimerSetup(0,64,0); //This function will select timer0 with timer running as per
+// internal clock source and prescaled by 64.
+//
+//See also
+// AVRGetTimerValues
+//
+//Authors
+// Ashish Kamble
+//
+//This is curretly dummy function. It provides no functionality but is required
+//for providing support for generating C code for AVR.
+
+if(timer>=3) then
+disp("Error : Invalid input argument ''timer'' in AVRTimerSetup function.");
+end
+
+if(~((prescaler==1)|(prescaler==8)|(prescaler==64)|(prescaler==256)|(prescaler==1024))) then
+disp("Error : Invalid input argument ''prescaler'' in AVRTimerSetup function.");
+end
+
+if(clock_source>=2) then
+disp("Error : Invalid input argument ''clock_source'' in AVRTimerSetup function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRUARTReceive.sci b/2.3-1/macros/Hardware/AVR/AVRUARTReceive.sci
new file mode 100644
index 00000000..790894fb
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRUARTReceive.sci
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function received = AVRUARTReceive()
+// Function to Receive Char value send to ATmega16 using UART or USART.
+// Description
+// This function Receives Char as 8 bit value.This value is stored in UDR at receiving
+// end.
+//
+//Examples
+// state = AVRUARTReceive(); //This function will Receive char and return the entire value
+//
+//See also
+// AVRUARTSetup
+// AVRUARTTransmit
+//
+// Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+received = 0; // received has been initialised to avoid runtime error.
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRUARTSetup.sci b/2.3-1/macros/Hardware/AVR/AVRUARTSetup.sci
new file mode 100644
index 00000000..32e5db86
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRUARTSetup.sci
@@ -0,0 +1,61 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRUARTSetup(mode, baudrate, stopbits, parity)
+// Function to Setup Serial Communication i.e UART or USART in ATmega16.
+// Description
+// This function Setup the UART or USART for Serial Communicaion between ATmega16
+// and different micro controllers or between ATmega16 and Computer.
+//
+// Parameters
+// mode :
+// 0 for Asynchronous Normal mode
+// 1 for Asynchronous Double Speed mode
+// 2 for Synchronous mode
+//
+// baudrate : Enter one of the following available baudrates
+// 2400 , 4800 , 9600 , 14400 , 19200 , 28800 , 38400 , 57600 ,
+// 768000 , 115200 , 230400 , 250000 , 1000000 .
+//
+// stopbits :
+// 0 for one stopbit
+// 1 for two stopbits
+//
+// parity :
+// 0 for parity disabled
+// 1 for even parity
+// 2 for odd parity
+//
+//Examples
+// AVRUARTSetup(0,9600,0,0); //This function will enable UART Communication for ATmega16
+// with 9600 as baudrate,one stop bit and parity disabled
+// See also
+// AVRUARTTransmit
+// AVRUARTReceive
+//
+// Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+if(mode>=3) then
+disp("Error : Invalid input argument ''mode'' in AVRUARTSetup function.");
+end
+
+if((baudrate <> 2400)&(baudrate <> 4800)&(baudrate <> 9600)&(baudrate <> 14400)&(baudrate <> 28800)&(baudrate <> 38400)&(baudrate <> 57600)&(baudrate <> 768000)&(baudrate <> 115200)&(baudrate <> 230400)&(baudrate <> 250000)& (baudrate <> 1000000)) then
+disp("Error : Invalid input argument ''baudrate'' in AVRUARTSetup function.");
+end
+if(stopbits>=2) then
+disp("Error : Invalid input argument ''stopbits'' in AVRUARTSetup function.");
+end
+if(parity>=3) then
+disp("Error : Invalid input argument ''parity'' in AVRUARTSetup function.");
+end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/AVRUARTTransmit.sci b/2.3-1/macros/Hardware/AVR/AVRUARTTransmit.sci
new file mode 100644
index 00000000..eb358499
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/AVRUARTTransmit.sci
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRUARTTransmit(data)
+// Function to Transmit data using UART or USART.
+// Description
+// This function Tranmits data over UART or USART.The data to be transmitted can
+// be a Char , String , Unsigned Int, Signed Int.
+//
+// Parameter
+// data :
+// The data to be transmitted can be a Char,String,Unsigned Int,Signed Int.
+//
+//Examples
+// AVRUARTTransmit("This is example"); //This function will transmit the entered string.
+//
+//See also
+// AVRUARTSetup
+// AVRUARTReceive
+//
+// Authors
+// Ashish Kamble
+//
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for AVR.
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/GetAVRSupportFunctions.sci b/2.3-1/macros/Hardware/AVR/GetAVRSupportFunctions.sci
new file mode 100644
index 00000000..99c6242f
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/GetAVRSupportFunctions.sci
@@ -0,0 +1,43 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function AVRSupportFunctions = GetAVRSupportFunctions()
+// -----------------------------------------------------------------
+// Get list of AVR peripherals supported
+//
+// Input data:
+// None
+//
+// Output data:
+// None
+//
+// Author: Siddhesh Wani Ashish Kamble
+// -----------------------------------------------------------------
+
+AVRSupportFunctions = [
+ "AVRADCSetup"
+ "AVRDigitalIn"
+ "AVRDigitalOut"
+ "AVRDigitalSetup"
+ "AVRDigitalPortSetup"
+ "AVRTimerSetup"
+ "AVRGetTimerValue"
+ "AVRPWM0Setup"
+ "AVRPWM0SetDuty"
+ "AVRPWM1Setup"
+ "AVRPWM1SetDuty"
+ "AVRPWM2Setup"
+ "AVRPWM2SetDuty"
+ "AVRReadADC"
+ "AVRSleep"
+ "AVRUARTSetup"
+ ];
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/GetPeripheral.sci b/2.3-1/macros/Hardware/AVR/GetPeripheral.sci
new file mode 100644
index 00000000..ac909deb
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/GetPeripheral.sci
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function Peripheral = GetPeripheral(FunName,InArg)
+// -----------------------------------------------------------------
+// Get an acronym for peripheral being used to be inserted in list of
+// used peripherals
+//
+// Input data:
+// FunName: Name of the function to be checked
+// InArg:Input arguements passed to function 'FunName'
+//
+// Output data:
+// Peripheral: Acronym for peripheral to be initialised
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+//select FunName
+
+//case AVRDigitalOut:
+// Peripheral = list('PORT', InArg(1),InArg(2)];
+//end
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/InsertPeripheralInList.sci b/2.3-1/macros/Hardware/AVR/InsertPeripheralInList.sci
new file mode 100644
index 00000000..198ea1da
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/InsertPeripheralInList.sci
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function InsertPeripheralInList(Peripheral,PeripheralListFile)
+// -----------------------------------------------------------------
+// Insert input peripheral in peripherals' list
+//
+// Input data:
+// Peripheral: Peripheral of type 'list' to be instertd in list
+// PeripheralListFile: Name of file containing list of peripheral used
+//
+// Output data:
+// None
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+load(PeripheralListFile,'PheripheralList');
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/IsAVRSupportFunction.sci b/2.3-1/macros/Hardware/AVR/IsAVRSupportFunction.sci
new file mode 100644
index 00000000..94f4af7c
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/IsAVRSupportFunction.sci
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function Output = IsAVRSupportFunction(FunName)
+// -----------------------------------------------------------------
+// Check whether input function name is an AVR support function or not.
+//
+// Input data:
+// FunName: Name of the function to be checked
+//
+// Output data:
+// Output: True or False depending whether given function is an AVR
+// support functions or not
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+//Get list of supported functions for AVR
+AVRSupportFunctions = GetAVRSupportFunctions();
+
+//Check whether input function is present in above list or not
+FunNameInAVRSupport = members(FunName,AVRSupportFunctions);
+Output = bool2s(FunNameInAVRSupport~=0);
+
+endfunction
diff --git a/2.3-1/macros/Hardware/AVR/buildmacros.sce b/2.3-1/macros/Hardware/AVR/buildmacros.sce
new file mode 100644
index 00000000..2954a424
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/buildmacros.sce
@@ -0,0 +1,4 @@
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/Hardware/AVR/lib b/2.3-1/macros/Hardware/AVR/lib
new file mode 100644
index 00000000..7631c354
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/lib
Binary files differ
diff --git a/2.3-1/macros/Hardware/AVR/names b/2.3-1/macros/Hardware/AVR/names
new file mode 100644
index 00000000..8fcfdb75
--- /dev/null
+++ b/2.3-1/macros/Hardware/AVR/names
@@ -0,0 +1,22 @@
+AVRADCSetup
+AVRDigitalIn
+AVRDigitalOut
+AVRDigitalPortSetup
+AVRDigitalSetup
+AVRGetTimerValue
+AVRPWM0SetDuty
+AVRPWM0Setup
+AVRPWM1SetDuty
+AVRPWM1Setup
+AVRPWM2SetDuty
+AVRPWM2Setup
+AVRReadADC
+AVRSleep
+AVRTimerSetup
+AVRUARTReceive
+AVRUARTSetup
+AVRUARTTransmit
+GetAVRSupportFunctions
+GetPeripheral
+InsertPeripheralInList
+IsAVRSupportFunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/GetRPISupportFunctions.sci b/2.3-1/macros/Hardware/RasberryPi/GetRPISupportFunctions.sci
new file mode 100644
index 00000000..3e6397b2
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/GetRPISupportFunctions.sci
@@ -0,0 +1,48 @@
+function RPiSupportFunctions = GetRPISupportFunctions()
+// -----------------------------------------------------------------
+// Get list of RPI peripherals supported
+//
+// Input data:
+// None
+//
+// Output data:
+// None
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+RPiSupportFunctions = [
+ "RPI_DigitalIn"
+ "RPI_DigitalOut"
+ "RPI_DigitalSetup"
+ "RPI_DelayMilli"
+ "RPI_DelayMicro"
+ "RPI_GetMillis"
+ "RPI_GetMicros"
+ "RPI_SerialSetup"
+ "RPI_SerialClose"
+ "RPI_SerialSendChar"
+ "RPI_SerialFlush"
+ "RPI_SerialGetChar"
+ "RPI_ThreadCreate"
+ "RPI_PinISR"
+ "RPI_HardPWMWrite"
+ "RPI_HardPWMSetRange"
+ "RPI_HardPWMSetClock"
+ "RPI_HardPWMSetMode"
+ ];
+
+//Note: "RPI_SerialSendData" is removed since distinction between input data
+//types is required
+
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/IsRPISupportFunction.sci b/2.3-1/macros/Hardware/RasberryPi/IsRPISupportFunction.sci
new file mode 100644
index 00000000..c6a2c365
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/IsRPISupportFunction.sci
@@ -0,0 +1,32 @@
+function Output = IsRPISupportFunction(FunName)
+// -----------------------------------------------------------------
+// Check whether input function name is a RPi support function or not.
+//
+// Input data:
+// FunName: Name of the function to be checked
+//
+// Output data:
+// Output: True or False depending whether given function is a RPi
+// support functions or not
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+//Get list of supported functions for AVR
+RPISupportFunctions = GetRPISupportFunctions();
+
+//Check whether input function is present in above list or not
+FunNameInRPISupport = members(FunName,RPISupportFunctions);
+Output = bool2s(FunNameInRPISupport~=0);
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_DelayMicro.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_DelayMicro.sci
new file mode 100644
index 00000000..bbb0bb3b
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_DelayMicro.sci
@@ -0,0 +1,38 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_DelayMicro(time)
+// Function to insert some delay in code execution.
+//
+// Calling Sequence
+// RPI_DelayMicro(time)
+//
+// Parameters
+// time: time(microseconds) for which execution is to be delayed
+//
+// Description
+// this function can be used for insertig execution delays. 'time' should be
+// specified in microseconds.'time' should be between (1-65536).
+// Note: Delay inserted by this function is not accurate, but depedent on
+// operating system, other running tasks etc.
+//
+// Examples
+// RPI_DelayMilli(100) //This will delay the execution of next code by 100 ms.
+//
+// See also
+// RPI_DelayMicro
+//
+//
+// Authors
+// Siddhesh Wani
+//
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_DelayMilli.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_DelayMilli.sci
new file mode 100644
index 00000000..13b79625
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_DelayMilli.sci
@@ -0,0 +1,39 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_DelayMilli(time)
+// Function to insert some delay in milli seconds in code execution.
+//
+// Calling Sequence
+// RPI_DelayMilli(time)
+//
+// Parameters
+// time: time(milliseconds) for which execution is to be delayed
+//
+// Description
+// This function can be used for insertig execution delays. 'time' should be
+// specified in milliseconds. If more resolution is required, use 'RPI_DelayMicro'
+// for inserting delay in microseconds.
+// Note: Delay inserted by this function is not accurate, but depedent on
+// operating system, other running tasks etc.
+//
+// Examples
+// RPI_DelayMilli(100) //This will delay the execution of next code by 100 ms.
+//
+// See also
+// RPI_DelayMicro
+//
+//
+// Authors
+// Siddhesh Wani
+//
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalIn.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalIn.sci
new file mode 100644
index 00000000..781c49c8
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalIn.sci
@@ -0,0 +1,43 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function state = RPI_DigitalIn(pin)
+// Function to read current state on digital pins.
+//
+// Calling Sequence
+// state = RPI_DigitalIn(pin)
+//
+// Parameters
+// pin : pin of RPi to be used
+// state : current state of the pin (0 -> LOW, 1 -> HIGH)
+//
+// Description
+// This fucntion is used for reading the current state on gpio pins of RPi. 'RPI_DigitalSetup' function must be called before this for setting up pin as input. 'pin' must be specified from list given. 'state' specifies the input state (0 -> Low, 1-> High)
+// Examples
+// RPI_DigitalIn(RPI_GPIO_P1_03) //Reads the state of pin 3 of header P1.
+//
+// See also
+// RPI_DigitalSetup RPI_DigitalOut
+//
+//
+// Authors
+// Siddhesh Wani
+//
+// -----------------------------------------------------------------
+//Pins of header P1 which can be used as GPIO
+supported_pins = [3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,27,28,29,...
+ 31,31,33,35,36,37,38,40];
+
+PinIsGPIO = members(pin, supported_pins); //Check if input pin supports GPIO
+
+//If given pin does not support GPIO functionality, raise the error
+if(PinIsGPIO == 0)
+ error(9999, 'SCI2CERROR: Given pin number doesnot support GPIO functionality.');
+end
+state = 1;
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalOut.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalOut.sci
new file mode 100644
index 00000000..dde3c934
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalOut.sci
@@ -0,0 +1,44 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_DigitalOut(pin, state)
+// Function to output desired state on digital pins.
+//
+// Calling Sequence
+// RPI_DigitalOut(pin, state)
+//
+// Parameters
+// pin : pin of RPi to be used
+// state : desired state of the pin (0 -> LOW, 1 -> HIGH)
+//
+// Description
+// This fucntion is used for outputting the desired state on gpio pins of RPi. 'RPI_DigitalSetup' function must be called before this for setting up pin as output. 'pin' must be specified from list given. 'state' specifies the output state (0 -> Low, 1-> High)
+// Examples
+// RPI_DigitalOut(RPI_GPIO_P1_03,0) //Changes the state of pin 3 of header P1 as 'Low'.
+//
+// See also
+// RPI_DigitalSetup RPI_DigitalIn
+//
+//
+// Authors
+// Siddhesh Wani
+//
+// -----------------------------------------------------------------
+//Pins of header P1 which can be used as GPIO
+supported_pins = [3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,27,28,29,...
+ 31,31,33,35,36,37,38,40];
+
+PinIsGPIO = members(pin, supported_pins); //Check if output pin supports GPIO
+
+//If given pin does not support GPIO functionality, raise the error
+if(PinIsGPIO == 0)
+ error(9999, 'SCI2CERROR: Given pin number doesnot support GPIO functionality.');
+end
+state = 1;
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalSetup.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalSetup.sci
new file mode 100644
index 00000000..01d6e07d
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_DigitalSetup.sci
@@ -0,0 +1,36 @@
+function RPI_DigitalSetup(pin, direction)
+// Function to setup digital pins.
+//
+// Calling Sequence
+// RPI_DigitalSetup(pin,direction)
+//
+// Parameters
+// pin : pin of RPi to be used
+// direction : direction to be set for pin
+// 0 -> INPUT, 1 -> OUTPUT, 2->PWM Output
+//
+// Description
+// There are few pins available on RPi as Gpio or digital io. These pins can be used as digital output or input. Pin name must be provided from list provided. Please refer '' for complete list of pins. Direction can be 0 or 1 depending upon desired function (Input/output)
+// Examples
+// RPI_DigitalSetup(3,0) //Sets pin 3 of header P1 as input
+//
+// See also
+// RPI_DigitalIn RPI_DigitalOut
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+//Pins of header P1 which can be used as GPIO
+supported_pins = [3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,27,28,29,...
+ 31,31,33,35,36,37,38,40];
+
+PinIsGPIO = members(pin, supported_pins); //Check if input pin supports GPIO
+
+//If given pin does not support GPIO functionality, raise the error
+if(PinIsGPIO == 0)
+ error(9999, 'SCI2CERROR: Given pin number doesnot support GPIO functionality.');
+end
+state = 1;
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_GetMicros.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_GetMicros.sci
new file mode 100644
index 00000000..6c4db57a
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_GetMicros.sci
@@ -0,0 +1,39 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function Micros = RPI_GetMicros()
+// Function to get time in Microsecond since first setup function called.
+//
+// Calling Sequence
+// Micros = RPI_GetMicros()
+//
+// Parameters
+// Micros: time in Microseconds since first setup function called
+//
+// Description
+// This function can be used to get time since first setup function called.
+// Note: To use this function atleast one setup function must be called.
+//
+// Examples
+// start = RPI_GetMicros()
+// RPI_DelayMicro(1000) //This will delay the execution of next code by 100 ms.
+// end = RPI_GetMicros()
+// delay = end- start //This should be approximately 1000 us.
+//
+// See also
+// RPI_GetMillis RPI_DelayMilli RPI_DelayMicro
+//
+//
+// Authors
+// Siddhesh Wani
+//
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+Micros = 0;
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_GetMillis.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_GetMillis.sci
new file mode 100644
index 00000000..c034a705
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_GetMillis.sci
@@ -0,0 +1,39 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function Millis = RPI_GetMillis()
+// Function to get time in millisecond since first setup function called.
+//
+// Calling Sequence
+// Millis = RPI_GetMillis()
+//
+// Parameters
+// Millis: time in milliseconds since first setup function called
+//
+// Description
+// This function can be used to get time since first setup function called.
+// Note: To use this function atleast one setup function must be called.
+//
+// Examples
+// start = RPI_GetMillis()
+// RPI_DelayMilli(100) //This will delay the execution of next code by 100 ms.
+// end = RPI_GetMillis()
+// delay = end- start //This should be approximately 100ms.
+//
+// See also
+// RPI_GetMicros RPI_DelayMilli RPI_DelayMicro
+//
+//
+// Authors
+// Siddhesh Wani
+//
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+Millis = 0;
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetClock.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetClock.sci
new file mode 100644
index 00000000..8448d364
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetClock.sci
@@ -0,0 +1,35 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_HardPWMSetClock(clock_divisor)
+// Function to set PWM clock. PWM clock frequency is 19.2MHz, which can be reduced
+// using suitable clock_divisor (1 to 2048, powers of 2)
+//
+// Calling Sequence
+// RPI_HardPWMSetClock(clock_divisor)
+//
+// Parameters
+// clock_divisor: Value can be from 1 to 2048, powers of 2.
+// Description
+// This function decides pwm clock.
+// PWM frequency = (PWM Clock frequency/Clock divisor/range)
+// PWM clock frequency = 19.2 MHz
+// clock divisor is setup using RPI_HardPWMSetClock
+// range is setup using RPI_HardPWMSetRange
+// Examples
+//
+// See also
+// RPI_HardPWMSetWrite RPI_HardPWMSetRange
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetMode.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetMode.sci
new file mode 100644
index 00000000..57b82601
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetMode.sci
@@ -0,0 +1,32 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_HardPWMSetMode(pwm_mode)
+// Function to set PWM mode. Two modes are available - balanced and mark/space
+//
+// Calling Sequence
+// RPI_HardPWMSetMode(pwm_mode)
+//
+// Parameters
+// pwm_mode: decides pwm mode
+// 0 -> balanced
+// 1 -> mark/space
+// Description
+// This function decides pwm mode
+// Examples
+//
+// See also
+// RPI_HardPWMSetWrite RPI_HardPWMSetRange
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetRange.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetRange.sci
new file mode 100644
index 00000000..c2075e2d
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMSetRange.sci
@@ -0,0 +1,35 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_HardPWMSetRange(range_val)
+// Function to set range value for PWM. Range value along with clock divisor
+// decides pwm frequency. Range value must be less than 1024
+//
+// Calling Sequence
+// RPI_HardPWMSetRange(range_val)
+//
+// Parameters
+// range_val: range for pwm
+// Description
+// This function decides range for pwm.
+// PWM frequency = (PWM Clock frequency/Clock divisor/range)
+// PWM clock frequency = 19.2 MHz
+// clock divisor is setup using RPI_HardPWMSetClock
+// range is setup using RPI_HardPWMSetRange
+// Examples
+//
+// See also
+// RPI_HardPWMSetClock RPI_HardPWMWrite
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMWrite.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMWrite.sci
new file mode 100644
index 00000000..dba5e674
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_HardPWMWrite.sci
@@ -0,0 +1,39 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_HardPWMWrite(pin,value)
+// Function to change pwm duty on specified pin. Hardware PWM is available
+// only on pin 12. So, only '12' should be provided as pin
+//
+// Calling Sequence
+// RPI_HardPWMWrite(12,512) //Value must be smaller than the range set
+// using RPI_HARDPWMSetRange
+//
+// Parameters
+// pin: pin no on which pwm value is to be changed. Currently only 12 is allowed
+// value: pwm value for given pin. This must be less than range value set
+// Description
+// This function changes pwm duty on specified pin. As for RPi, only one pin
+// (pin 12) is available for hardware PWM.
+// PWM frequency = (PWM Clock frequency/Clock divisor/range)
+// PWM clock frequency = 19.2 MHz
+// clock divisor is setup using RPI_HardPWMSetClock
+// range is setup using RPI_HardPWMSetRange
+// Actual PWM duty = value/range
+// Examples
+//
+// See also
+// RPI_HardPWMSetClock RPI_HardPWMSetRange
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_PinISR.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_PinISR.sci
new file mode 100644
index 00000000..c2354c1f
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_PinISR.sci
@@ -0,0 +1,56 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_PinISR(pin, edgetype, fn)
+// Function to assign a function to be run when an interrupt occurs on
+// specified pin.
+//
+// Calling Sequence
+// RPI_PinISR(pin, edgetype, fn)
+//
+// Parameters
+// pin : pin whose interrupt is to be configured
+// edgetype: edge on which interrupt is to be monitored
+// 1 -> Falling egde
+// 2 -> Rising egde
+// 3 -> Both egde
+// fn: name of the function to be executed on interrupt occurance
+// Description
+// This functions monitors interrupt on specified pin for specified edge,
+// When that interrupt occurs, function specified by 'fn' is executed.
+// Examples
+// RPI_PinISR(12, 0, Pin12ISR) //executes 'Pin12ISR' on falling edge on
+// pin 12
+// See also
+// RPI_ThreadCreate RPI_DigitalSetup
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+//Pins of header P1 which can be used as GPIO
+supported_pins = [3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,27,28,29,...
+ 31,31,33,35,36,37,38,40];
+
+PinIsGPIO = members(pin, supported_pins); //Check if input pin supports GPIO
+
+//If given pin does not support GPIO functionality, raise the error
+if(PinIsGPIO == 0)
+ error(9999, 'SCI2CERROR: Given pin number doesnot support GPIO functionality.');
+end
+EdgeTypeSupported = members(edgetype,[1 2 3]);
+
+if(EdgeTypeSupported == 0)
+ error(9999, 'SCI2CERROR: Given edgetype is incorrect. Please specify correct edgetype from [1,2,3]')
+end
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_SerialClose.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialClose.sci
new file mode 100644
index 00000000..f27dd432
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialClose.sci
@@ -0,0 +1,33 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_SerialClose(fd)
+// Function to close serial port specified by file descriptor.
+//
+// Calling Sequence
+// RPI_SerialClose(fd)
+//
+// Parameters
+// fd : file descriptor for opened port
+// Description
+// This functions closes the specified serial port
+// Examples
+// serial1 = RPI_SerialSetup('/dev/ttyAMA0',9600) //opens port 'USBtty0'
+// RPI_SerialClose(serial1)
+// See also
+// RPI_SerialOpen RPI_SerialSendChar
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_SerialFlush.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialFlush.sci
new file mode 100644
index 00000000..9bab386f
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialFlush.sci
@@ -0,0 +1,34 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function data = RPI_SerialGetChar(fd)
+// Function to read data from specified serial port
+//
+// Calling Sequence
+// RPI_SerialGetCharfd)
+//
+// Parameters
+// fd: file descriptor returned when serial port was opened
+// Description
+// This functions reads character form specified port. In case no
+// character is available, -1 is returned after 10 sec.
+// Examples
+// serial = RPI_SetupSerial("/dev/ttyAMA0", 9600);
+// RPI_SerialFlush(serial);
+// bytes = RPI_SerialDataAvail(serial);
+//
+// See also
+// RPI_SetupSerial RPI_SendData
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_SerialGetChar.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialGetChar.sci
new file mode 100644
index 00000000..a26e5b97
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialGetChar.sci
@@ -0,0 +1,36 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function data = RPI_SerialGetChar(fd)
+// Function to read data from specified serial port
+//
+// Calling Sequence
+// RPI_SerialGetChar(fd)
+//
+// Parameters
+// fd: file descriptor returned when serial port was opened
+// Description
+// This functions reads character form specified port. In case no
+// character is available, -1 is returned after 10 sec.
+// Examples
+// serial = RPI_SetupSerial("/dev/ttyAMA0", 9600);
+// bytes = RPI_SerialDataAvail(serial);
+// if(bytes>0)
+// data = RPI_SerialGetChar(serial) //Reads single character
+// end
+// See also
+// RPI_SetupSerial RPI_SendData
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+data = 0;
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendChar.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendChar.sci
new file mode 100644
index 00000000..769b21d2
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendChar.sci
@@ -0,0 +1,37 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_SerialSendChar(fd, data)
+// Function to send 8-bit char through serial port.
+//
+// Calling Sequence
+// RPI_SerialSendChar(fd, data)
+//
+// Parameters
+// fd : file descriptor for opened port
+// data: 8-bit character data to be sent
+// Description
+// This functions sends input 8-bit character data on specified serial port
+// Examples
+// serial1 = RPI_SerialSetup('/dev/ttyAMA0',9600) //opens port 'USBtty0'
+// RPI_SerialSendChar(serial1, 'H');
+// RPI_SerialSendChar(serial1, 'i');
+// RPI_SerialClose(serial1);
+//
+// See also
+// RPI_SerialOpen RPI_SerialClose
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendData.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendData.sci
new file mode 100644
index 00000000..c05852b1
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSendData.sci
@@ -0,0 +1,38 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function RPI_SerialSendData(fd, data)
+// Function to send data through serial port. Data can be of any datatype and
+// can be scalar or matrix
+//
+// Calling Sequence
+// RPI_SerialSendData(fd, data)
+//
+// Parameters
+// fd : file descriptor for opened port
+// data: data to be sent
+// Description
+// This functions sends input data on specified serial port
+// Examples
+// A = [2 3; 4 5]
+// serial1 = RPI_SerialSetup('/dev/ttyAMA0',9600) //opens port 'USBtty0'
+// RPI_SerialSendData(serial1, A);
+// RPI_SerialClose(serial1);
+//
+// See also
+// RPI_SerialOpen RPI_SerialClose
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSetup.sci b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSetup.sci
new file mode 100644
index 00000000..0f266610
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/RPI_SerialSetup.sci
@@ -0,0 +1,36 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function fd = RPI_SerialSetup(port, baudrate)
+// Function to setup serial port.
+//
+// Calling Sequence
+// RPI_SerialSetup(port, baudrate)
+//
+// Parameters
+// port : port of RPi to be used (eg. )
+// direction : direction to be set for pin (0 -> INPUT, 1 -> OUTPUT)
+// fd : file descriptor for opened port, -1 for error
+// Description
+// This functions opens the specified serial port and returns file descriptor
+// for the same
+// Examples
+// serial1 = RPI_SerialSetup('/dev/ttyAMA0',9600) //opens port 'USBtty0'
+//
+// See also
+// RPI_SerialClose RPI_SerialSendChar
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+fd = 0;
+endfunction
diff --git a/2.3-1/macros/Hardware/RasberryPi/buildmacros.sce b/2.3-1/macros/Hardware/RasberryPi/buildmacros.sce
new file mode 100644
index 00000000..2954a424
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/buildmacros.sce
@@ -0,0 +1,4 @@
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/Hardware/RasberryPi/lib b/2.3-1/macros/Hardware/RasberryPi/lib
new file mode 100644
index 00000000..c238317e
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/lib
Binary files differ
diff --git a/2.3-1/macros/Hardware/RasberryPi/names b/2.3-1/macros/Hardware/RasberryPi/names
new file mode 100644
index 00000000..fa647761
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/names
@@ -0,0 +1,21 @@
+GetRPISupportFunctions
+IsRPISupportFunction
+RPI_DelayMicro
+RPI_DelayMilli
+RPI_DigitalIn
+RPI_DigitalOut
+RPI_DigitalSetup
+RPI_GetMicros
+RPI_GetMillis
+RPI_HardPWMSetClock
+RPI_HardPWMSetMode
+RPI_HardPWMSetRange
+RPI_HardPWMWrite
+RPI_PinISR
+RPI_SerialClose
+RPI_SerialFlush
+RPI_SerialGetChar
+RPI_SerialSendChar
+RPI_SerialSendData
+RPI_SerialSetup
+u16RPISerialDataAvail
diff --git a/2.3-1/macros/Hardware/RasberryPi/u16RPISerialDataAvail.sci b/2.3-1/macros/Hardware/RasberryPi/u16RPISerialDataAvail.sci
new file mode 100644
index 00000000..6eb29a1c
--- /dev/null
+++ b/2.3-1/macros/Hardware/RasberryPi/u16RPISerialDataAvail.sci
@@ -0,0 +1,37 @@
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function bytes = RPI_SerialDataAvail(fd)
+// Function to get number of data bytes available on serial port specified by
+// file descriptor
+// Calling Sequence
+// RPI_SerialDataAvail(fd)
+//
+// Parameters
+// fd : file descriptor for already opened serial port
+// Description
+// This functions returns number of characters available to read,
+// otherwise reads -1 in case of error. This function can be used to check
+// new data is available on serial port
+// Examples
+// serial = RPI_SerialOpen("/dev/ttyAMA0", 9600);
+// charsToRead = RPI_SerialDataAvail(serial);
+// See also
+// RPI_SerialOpen RPI_SerialGetChar
+//
+//
+// Authors
+// Siddhesh Wani
+// -----------------------------------------------------------------
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for RPi.
+
+bytes = 0;
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ImageProcessing/buildmacros.sce b/2.3-1/macros/ImageProcessing/buildmacros.sce
new file mode 100644
index 00000000..6431a7df
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/buildmacros.sce
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+OpencvDirs = [ "core", ...
+ "highgui", ...
+ "imgproc"];
+
+
+ current_path = get_absolute_file_path("buildmacros.sce");
+
+ for L=1:size(OpencvDirs,"*")
+ myfile = current_path + filesep() + OpencvDirs(L) + filesep() + "buildmacros.sce";
+ if isfile(myfile) then
+ exec(myfile);
+ end
+end
+
+clear current_path;
diff --git a/2.3-1/macros/ImageProcessing/core/CV_CreateImage.sci b/2.3-1/macros/ImageProcessing/core/CV_CreateImage.sci
new file mode 100644
index 00000000..02758154
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/core/CV_CreateImage.sci
@@ -0,0 +1,41 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Author: Siddhesh Wani
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function img = CV_CreateImage(width,height,bit_depth,no_of_channels)
+// function to create an image object of given size and type
+//
+// Calling Sequence
+// CV_CreateImage(image_size,bit_depth,no_of_channels)
+//
+// Parameters
+// image_size: width and height of image
+// bit_depth: Bit depth of image elements
+// no_of_channels: no of channels per pixels
+//
+// Description
+// This function can be used to create opencv image object. For more info
+// about bit depth and channels,please refer to OpenCV documentation
+// Examples
+// CV_CreateImage([320 240], "IPL_DEPTH_8U", 1) //to create image of the size 320*240
+// pixels with 8 bit unsigned each pixels and gray scale image
+//
+// See also
+// CV_LoadImage
+//
+//
+// Authors
+// Siddhesh Wani
+//
+img = 0;
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/core/CV_GetImgSize.sci b/2.3-1/macros/ImageProcessing/core/CV_GetImgSize.sci
new file mode 100644
index 00000000..02e018a7
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/core/CV_GetImgSize.sci
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function imgsize = CV_GetImgSize(img)
+// function to get size of the image (width*height)
+//
+// Calling Sequence
+// CV_GetImgSize(img)
+//
+// Parameters
+// img: image whose size is to be returned
+//
+// Description
+// This function can be used for retriving size information of the image.
+// It returs an array with first image element as width and second as height
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// size = CV_GetImgSize(img)
+//
+// See also
+// CV_LoadImage CV_CreateImage
+//
+// Authors
+// Siddhesh Wani
+//
+imgsize = [0 0];
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/core/buildmacros.sce b/2.3-1/macros/ImageProcessing/core/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/core/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/ImageProcessing/core/lib b/2.3-1/macros/ImageProcessing/core/lib
new file mode 100644
index 00000000..fedf05e1
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/core/lib
Binary files differ
diff --git a/2.3-1/macros/ImageProcessing/core/names b/2.3-1/macros/ImageProcessing/core/names
new file mode 100644
index 00000000..f56c951c
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/core/names
@@ -0,0 +1,2 @@
+CV_CreateImage
+CV_GetImgSize
diff --git a/2.3-1/macros/ImageProcessing/highgui/CV_LoadImage.sci b/2.3-1/macros/ImageProcessing/highgui/CV_LoadImage.sci
new file mode 100644
index 00000000..01dda125
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/CV_LoadImage.sci
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function img = CV_LoadImage(filename,loadtype)
+// function to load an image object from given filename
+//
+// Calling Sequence
+// CV_LoadImage(filename,loadtype)
+//
+// Parameters
+// filename: name of file to be opened
+// loadtype: desired load method
+// <0 --> image is loaded as is (with alpha channel)
+// =0 --> image is loaded as greyscale
+// >0 --> 3 channel color image is loaded
+//
+// Description
+// This function can be used for loading a previously stored image
+// Examples
+// CV_LoadImage('~/test.jpg',0)
+//
+// See also
+// CV_CreateImage
+//
+//
+// Authors
+// Siddhesh Wani
+//
+img = 0;
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/highgui/CV_SaveImage.sci b/2.3-1/macros/ImageProcessing/highgui/CV_SaveImage.sci
new file mode 100644
index 00000000..708edff0
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/CV_SaveImage.sci
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function status = CV_SaveImage(filename,img)
+// function to save an image object as a given filename
+//
+// Calling Sequence
+// CV_SaveImage(filename,img)
+//
+// Parameters
+// filename: name of file image to be saved as
+// img: image to be saved
+//
+// Description
+// This function can be used for saving image. File format is detected
+// from file extension
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// CV_SaveImage('test1.png',img)
+//
+// See also
+// CV_LoadImage CV_CreateImage
+//
+// Authors
+// Siddhesh Wani
+//
+status = 0;
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/highgui/CV_ShowImage.sci b/2.3-1/macros/ImageProcessing/highgui/CV_ShowImage.sci
new file mode 100644
index 00000000..4bfe5913
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/CV_ShowImage.sci
@@ -0,0 +1,39 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function CV_ShowImage(winname,img)
+// function to show an image
+//
+// Calling Sequence
+// CV_ShowImage(img)
+// CV_ShowImage(winname,img)
+//
+// Parameters
+// winname: name of window in which img is to be shown
+// img: image to be shown already acquired (from file/camera)
+//
+// Description
+// This function can be used for showing images
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// CV_ShowImage(img)
+//
+// See also
+// CV_CreateImage CV_LoadImage
+//
+//
+// Authors
+// Siddhesh Wani
+//
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/highgui/CV_WaitKey.sci b/2.3-1/macros/ImageProcessing/highgui/CV_WaitKey.sci
new file mode 100644
index 00000000..0facaafe
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/CV_WaitKey.sci
@@ -0,0 +1,39 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function CV_WaitKey(delay)
+// function similar to cvWaitKey
+//
+// Calling Sequence
+// CV_WaitKey(delay)
+//
+// Parameters
+// delay: waiting delay, if 0 then wait till keypress
+//
+// Description
+// This function can be used for inseting some delay. This function must
+// follow CV_ShowImage to display image.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// CV_ShowImage('',img)
+// CV_WaitKey(0);
+//
+// See also
+// CV_LoadImage CV_ShowImage
+//
+//
+// Authors
+// Siddhesh Wani
+//
+
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/highgui/buildmacros.sce b/2.3-1/macros/ImageProcessing/highgui/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/ImageProcessing/highgui/lib b/2.3-1/macros/ImageProcessing/highgui/lib
new file mode 100644
index 00000000..30217607
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/lib
Binary files differ
diff --git a/2.3-1/macros/ImageProcessing/highgui/names b/2.3-1/macros/ImageProcessing/highgui/names
new file mode 100644
index 00000000..a717164a
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/highgui/names
@@ -0,0 +1,4 @@
+CV_LoadImage
+CV_SaveImage
+CV_ShowImage
+CV_WaitKey
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_AdaptiveThreshold.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_AdaptiveThreshold.sci
new file mode 100644
index 00000000..a922d798
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_AdaptiveThreshold.sci
@@ -0,0 +1,48 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_AdaptiveThreshold(srcimg,max_value,adaptive_method, ...
+ thresh_type, block_size, C)
+// function to adaptively threshold input image
+//
+// Calling Sequence
+// dst = CV_AdaptiveThreshold(srcimg,max_value,adaptive_method, ...
+// thresh_type,blk_size,c)
+//
+// Parameters
+// src -> Source 8-bit single-channel image.
+// max_value -> Non-zero value assigned to the pixels for which the
+// condition is satisfied. See the details below.
+// adaptive_method -> Adaptive thresholding algorithm to use,
+// ADAPTIVE_THRESH_MEAN_C or ADAPTIVE_THRESH_GAUSSIAN_C .
+// thresh_type -> Thresholding type that must be either THRESH_BINARY
+// or THRESH_BINARY_INV .
+// blockSize -> Size of a pixel neighborhood that is used to calculate
+// a threshold value for the pixel: 3, 5, 7, and so on.
+// C -> Constant subtracted from the mean or weighted mean.Normally,
+// it is positive but may be zero or negative as well.
+// Description
+// This function can be used for adaptively threshold given image
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_AdaptiveThreshold(img,255,"ADAPTIVE_THRESH_MEAN_C", ...
+// "THRESH_BINARY",5,0)
+//
+// See also
+// CV_LoadImage CV_CreateImage
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_Blur.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_Blur.sci
new file mode 100644
index 00000000..b81df491
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_Blur.sci
@@ -0,0 +1,47 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_Blur(srcimg,ksize_width,ksize_height,anchor_x,anchor_y, ...
+ border_type)
+// function to blur image using normalised box filter
+//
+// Calling Sequence
+// dst = CV_Blur(srcimg,ksize_width,ksize_height,anchor_x,anchor_y, ...
+// border_type)
+//
+// Parameters
+// srcimg -> Source image.
+// ksize_width, ksize_height -> blurring kernel size.
+// anchor_x, anchor_y -> x,y coordinates of anchor point
+// borderType -> border mode used to extrapolate pixels outside of the
+// image. Can be :
+// BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
+// BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
+// BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
+// BORDER_WRAP: cdefgh|abcdefgh|abcdefg
+// BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii
+// Description
+// This function can be used for blurring image using normalised box
+// filter. Image can be of any depth and have any no of channels.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_Blur(img,3,3,-1,-1,"BORDER_CONSTANT")
+//
+// See also
+// CV_LoadImage CV_Threshold, CV_CvtColor
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_Canny.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_Canny.sci
new file mode 100644
index 00000000..b21028a0
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_Canny.sci
@@ -0,0 +1,47 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function edges = CV_Canny(srcimg,threhold1,threshold2,aperture_size,L2gradient)
+//Finds edges in image using Canny algorithm
+//
+// Calling Sequence
+// edges = CV_Canny(srcimg,threhold1,threshold2,aperture_size,L2gradient)
+//
+// Parameters
+// srcimg -> single-channel 8-bit input image.
+// threshold1 -> first threshold for the hysteresis procedure.
+// threshold2 -> second threshold for the hysteresis procedure.
+// aperture_size -> aperture size for the Sobel() operator.
+// L2gradient -> a flag, indicating whether a more accurate
+// L_2 norm =sqrt{(dI/dx)^2 + (dI/dy)^2} should be used to
+// calculate the image gradient magnitude ( L2gradient=1 ),
+// or whether the default L_1 norm =|dI/dx|+|dI/dy| is enough
+// ( L2gradient=0).
+// Description
+// This function can be used for finding edes in single channel 8 bit
+// image. 'aperture_size' and 'L2gradient' are optionals. By default,
+// aperture_size is 3 and L2gradient is false.
+//
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_CvtColor(img,"CV_RGB2GRAY");
+// edge = CV_Canny(dst,50,100,3,0);
+//
+// See also
+// CV_LoadImage CV_CvtColor
+//
+// Authors
+// Siddhesh Wani
+//
+edges = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_CornerHarris.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_CornerHarris.sci
new file mode 100644
index 00000000..fb25612b
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_CornerHarris.sci
@@ -0,0 +1,53 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function edges = CV_CornerHarris(srcimg,blocksize,ksize,k,border_type)
+//Finds edges in image using Harris algorithm
+//
+// Calling Sequence
+// edges = CV_CornerHarris(srcimg,blocksize,ksize,k,border_type)
+//
+// Parameters
+// srcimg -> Input single-channel 8-bit or floating-point image.
+// blockSize -> Neighborhood size
+// ksize -> Aperture parameter for the Sobel() operator.
+// k -> Harris detector free parameter.
+// borderType -> border mode used to extrapolate pixels outside of the
+// image. It can be :
+// BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
+// BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
+// BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
+// BORDER_WRAP: cdefgh|abcdefgh|abcdefg
+// BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii
+// Description
+// The function runs the Harris edge detector on the image. For each
+// pixel (x, y) it calculates a 2 * 2 gradient covariance matrix M(x,y)
+// over a blockSize * blockSize neighborhood. Then, it computes the
+// following characteristic:
+// dst(x,y) = det(M(x,y)) - k .tr(M(x,y))^2
+// Corners in the image can be found as the local maxima of this
+// response map
+//
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_CvtColor(img,"CV_RGB2GRAY");
+// edge = CV_CornerHarris(dst,5,3,1,"BORDER_REPLICATE");
+//
+// See also
+// CV_LoadImage CV_CvtColor
+//
+// Authors
+// Siddhesh Wani
+//
+edges = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_CvtColor.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_CvtColor.sci
new file mode 100644
index 00000000..766844bf
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_CvtColor.sci
@@ -0,0 +1,41 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_CvtColor(srcimg,code)
+// function to convert image from one colorspace to other colorspace
+//
+// Calling Sequence
+// CV_CvtColor(srcimg,code)
+//
+// Parameters
+// srcimg: source image to be converted
+// dstimg: destination image in which to store converted image
+// code: String specifying conversion type. Same as defined in OpenCV
+// for eg. 'CV_RGB2GRAY' for conversion from RGB image to grayscale image
+// dstCn: no of channels in destination image (0 by default)
+//
+// Description
+// This function can be used for converting an image to other colorspace.
+// Refer OpenCV documentation for list of available conversions
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_CvtColor(img,'CV_RGB2GRAY')
+//
+// See also
+// CV_LoadImage CV_CreateImage
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_Dilate.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_Dilate.sci
new file mode 100644
index 00000000..196cab85
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_Dilate.sci
@@ -0,0 +1,52 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_Dilate(srcimg,dilation_type,dilation_size,iterations, ...
+ border_type,border_value)
+// dilates an image by using a specific structuring element.
+//
+// Calling Sequence
+// cvtimg = CV_Dilate(srcimg,dilation_type,dilation_size,[iterations, ...
+// border_type,border_value])
+// Parameters
+// src -> input image; the number of channels can be arbitrary, but the
+// depth should be one of CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
+// dilation_type -> can be one of : MORPH_RECT, MORPH_CROSS,
+// MORPH_ELLIPSE
+// dilation_size -> size of kernel to be used for erosion. Must be odd
+// iterations -> number of times erosion is applied.
+// border_type -> pixel extrapolation method. It can be:
+// BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
+// BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
+// BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
+// BORDER_WRAP: cdefgh|abcdefgh|abcdefg
+// BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii
+// border_value -> border value in case of a constant border
+// Description
+// This function can be used for eroding an image. Kernel used for erosion
+// is decided by type and size. Size must always be odd. Anchor pint of
+// kernel is always center of kernel. Input arguements 'iterations(1),
+// border_type(BORDER_CONSTANT) and border_value' are optionals. Whwn not
+// specified, default values as as mentioned in brackets.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_Erode(img,"MORPH_RECT",3,1,"BORDER_CONSTANT",0);
+//
+// See also
+// CV_LoadImage CV_Erode
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_DistanceTransform.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_DistanceTransform.sci
new file mode 100644
index 00000000..e8772958
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_DistanceTransform.sci
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function dstimg = CV_DistanceTransform(srcimg,distance_type,mask_size)
+// function to calculate distance to closest zero pixels for each pixel
+//
+// Calling Sequence
+// dst = CV_DistanceTransform(srcimg,distance_type,mask_size)
+//
+// Parameters
+// srcimg -> Source 8-bit single-channel image.
+// distance_type -> Type of distance. It can be
+// CV_DIST_L1, CV_DIST_L2 , or CV_DIST_C
+// mask_size -> Size of the distance transform mask
+// Description
+// This function can be used to calculate distance to closest zero
+// pixel for each pixel of the source image. Output is 32 bit floating
+// point, single channel image of the same size as that of source image.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_DistanceTransform(img,"CV_DIST_L1",3)
+//
+// See also
+// CV_LoadImage CV_CreateImage CV_CvtColor
+//
+// Authors
+// Siddhesh Wani
+//
+dstimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_Erode.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_Erode.sci
new file mode 100644
index 00000000..d77e9e69
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_Erode.sci
@@ -0,0 +1,51 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_Erode(srcimg,erosion_type,erosion_size,iterations, ...
+ border_type,border_value)
+// Erodes an image by using a specific structuring element.
+//
+// Calling Sequence
+// cvtimg = CV_Erode(srcimg,erosion_type,erosion_size,[iterations, ...
+// border_type,border_value])
+// Parameters
+// src -> input image; the number of channels can be arbitrary, but the
+// depth should be one of CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
+// erosion_type -> can be one of : MORPH_RECT, MORPH_CROSS, MORPH_ELLIPSE
+// erosion_size -> size of kernel to be used for erosion. Must be odd
+// iterations -> number of times erosion is applied.
+// border_type -> pixel extrapolation method. It can be:
+// BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
+// BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
+// BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
+// BORDER_WRAP: cdefgh|abcdefgh|abcdefg
+// BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii
+// border_value -> border value in case of a constant border
+// Description
+// This function can be used for eroding an image. Kernel used for erosion
+// is decided by type and size. Size must always be odd. Anchor pint of
+// kernel is always center of kernel. Input arguements 'iterations(1),
+// border_type(BORDER_CONSTANT) and border_value' are optionals. Whwn not
+// specified, default values as as mentioned in brackets.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_Erode(img,"MORPH_RECT",3,1,"BORDER_CONSTANT",0);
+//
+// See also
+// CV_LoadImage CV_Dilate
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_GaussianBlur.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_GaussianBlur.sci
new file mode 100644
index 00000000..0799c4dd
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_GaussianBlur.sci
@@ -0,0 +1,51 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_GaussianBlur(srcimg,ksize_width,ksize_height,sigma_x,sigma_y, ...
+ border_type)
+// function to blur image using gaussian filter
+//
+// Calling Sequence
+// dst = CV_Blur(srcimg,ksize_width,ksize_height,anchor_x,anchor_y, ...
+// border_type)
+//
+// Parameters
+// srcimg -> Source image.
+// ksize_width, ksize_height -> blurring kernel size. must be odd.
+// sigmaX -> Gaussian kernel standard deviation in X direction.
+// sigmaY -> Gaussian kernel standard deviation in Y direction;
+// if sigmaY is zero, it is set to be equal to sigmaX,
+// if both sigmas are zeros, they are computed from
+// ksize.width and ksize.height , respectively
+// borderType -> border mode used to extrapolate pixels outside of the
+// image. Can be :
+// BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
+// BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
+// BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
+// BORDER_WRAP: cdefgh|abcdefgh|abcdefg
+// BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii
+// Description
+// This function can be used for blurring image using gaussian
+// filter. Image can be of any depth and have any no of channels.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_GaussianBlur(img,3,3,0,0,"BORDER_CONSTANT")
+//
+// See also
+// CV_LoadImage CV_Blur, CV_CvtColor
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_MedianBlur.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_MedianBlur.sci
new file mode 100644
index 00000000..d8f9a900
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_MedianBlur.sci
@@ -0,0 +1,41 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_MedianBlur(srcimg,ksize)
+// function to blur image using median filter
+//
+// Calling Sequence
+// dst = CV_Blur(srcimg,ksize_width,ksize_height,anchor_x,anchor_y, ...
+// border_type)
+//
+// Parameters
+// srcimg -> input 1-, 3-, or 4-channel image; when ksize is 3 or 5,
+// the image depth should be CV_8U, CV_16U, or CV_32F, for
+// larger aperture sizes, it can only be CV_8U.
+// ksize_width -> aperture linear size; it must be odd and greater than 1,
+// for example: 3, 5, 7 ...
+// Description
+// This function can be used for blurring image using median
+// filter. Image can be of any depth and have any no of channels.
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_MedianBlur(img,3)
+//
+// See also
+// CV_GaussianBlur CV_Blur, CV_CvtColor
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/CV_Threshold.sci b/2.3-1/macros/ImageProcessing/imgproc/CV_Threshold.sci
new file mode 100644
index 00000000..823a5768
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/CV_Threshold.sci
@@ -0,0 +1,41 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function cvtimg = CV_Threshold(srcimg,threshold,max_value,thresh_type)
+// function to threshold input image
+//
+// Calling Sequence
+// dst = CV_Threshold(srcimg,code,threshold,max_value,thresh_type)
+//
+// Parameters
+// srcimg: source image to be converted
+// threshold: threshold value
+// max_value: maximum value to be used with THRESH_BINARY and THRESH_BINARY_INV
+// thresh_type: Type for threshold. It can one of the following:
+// THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC,
+// THRESH_TOZERO, THRESH_TOZERO_INV
+// Description
+// This function can be used for converting an image to other colorspace.
+// Refer OpenCV documentation for list of available conversions
+// Examples
+// img = CV_LoadImage('~/test.jpg',0)
+// dst = CV_Threshold(img,100,255,'THRESH_BINARY')
+//
+// See also
+// CV_LoadImage CV_CreateImage
+//
+// Authors
+// Siddhesh Wani
+//
+cvtimg = 0
+// This is curretly dummy function. It provides no functionality but is required
+// for providing support for generating C code for OpenCV
+
+endfunction
diff --git a/2.3-1/macros/ImageProcessing/imgproc/buildmacros.sce b/2.3-1/macros/ImageProcessing/imgproc/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/ImageProcessing/imgproc/lib b/2.3-1/macros/ImageProcessing/imgproc/lib
new file mode 100644
index 00000000..ac605c04
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/lib
Binary files differ
diff --git a/2.3-1/macros/ImageProcessing/imgproc/names b/2.3-1/macros/ImageProcessing/imgproc/names
new file mode 100644
index 00000000..16240f53
--- /dev/null
+++ b/2.3-1/macros/ImageProcessing/imgproc/names
@@ -0,0 +1,11 @@
+CV_AdaptiveThreshold
+CV_Blur
+CV_Canny
+CV_CornerHarris
+CV_CvtColor
+CV_Dilate
+CV_DistanceTransform
+CV_Erode
+CV_GaussianBlur
+CV_MedianBlur
+CV_Threshold
diff --git a/2.3-1/macros/Scilab-Arduino/GenerateSetupFunction.sci b/2.3-1/macros/Scilab-Arduino/GenerateSetupFunction.sci
new file mode 100644
index 00000000..19cf4b88
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/GenerateSetupFunction.sci
@@ -0,0 +1,56 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function GenerateSetupFunction(FileInfo)
+// -----------------------------------------------------------------
+// Generate setup functions for Arduino peripherals according to
+// entries in given input file
+//
+// Input data:
+// File containing required peripheral initialisation
+//
+// Output data:
+// generates file with setup functions
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+
+SetupListFile = FileInfo.SetupListFile;
+load(SetupListFile,'SetupList');
+
+SetupArduinoFile = fullfile(FileInfo.CStyleOutCCCodeDir,'setup_arduino.c');
+SetupArduinoFile = fullfile(FileInfo.CStyleOutCCCodeDir,'setup_arduino.cpp');
+C_SCI2CHeader(SetupArduinoFile);
+
+PrintStringInfo('#include ""setup_arduino.h""',SetupArduinoFile,'file','y');
+PrintStringInfo(' ',SetupArduinoFile,'file','y');
+PrintStringInfo('int setup_arduino()',SetupArduinoFile,'file','y');
+PrintStringInfo('{',SetupArduinoFile,'file','y');
+
+nelements=size(SetupList);
+for i=1:nelements
+ funcall = ' ';
+ funcall = funcall + SetupList(i)(1);
+ funcall = funcall + '(';
+ NInArg = size(SetupList(i))-1;
+ for j=1:NInArg-1
+ funcall = funcall + SetupList(i)(j+1);
+ funcall = funcall + ', ';
+ end
+ funcall = funcall + SetupList(i)(NInArg+1);
+ funcall = funcall + ');';
+ PrintStringInfo(funcall,SetupArduinoFile,'file','y');
+end
+PrintStringInfo(' ',SetupArduinoFile,'file','y');
+PrintStringInfo(' return (0); ',SetupArduinoFile,'file','y');
+PrintStringInfo('}',SetupArduinoFile,'file','y');
+
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci b/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci
new file mode 100644
index 00000000..69c4ab37
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function ArduinoFunctions = GetArduinoFunctions()
+// -----------------------------------------------------------------
+// Get list of Arduino functions supported
+//
+// Input data:
+// None
+//
+// Output data:
+// List of Arduino functions supported
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+ArduinoFunctions = [
+ "cmd_digital_out"
+ "cmd_digital_in"
+ "cmd_analog_out"
+ "cmd_analog_in"
+ "cmd_dcmotor_setup"
+ "cmd_dcmotor_run"
+ "cmd_servo_attach"
+ "cmd_servo_detach"
+ "cmd_servo_move"
+ "cmd_i2c_dev"];
+
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci b/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci
new file mode 100644
index 00000000..78bda033
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function ArduinoSetupFunctions = GetArduinoSetupFunctions()
+// -----------------------------------------------------------------
+// Get list of Arduino setup functions supported
+//
+// Input data:
+// None
+//
+// Output data:
+// List of Arduino setup functions supported
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+ArduinoSetupFunctions = [
+ "cmd_dcmotor_setup"
+ "cmd_servo_attach"
+ "cmd_servo_detach"
+ "cmd_i2c_dev"];
+
+
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/InsertSetupInList.sci b/2.3-1/macros/Scilab-Arduino/InsertSetupInList.sci
new file mode 100644
index 00000000..6584f293
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/InsertSetupInList.sci
@@ -0,0 +1,91 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function InsertSetupInList(FunName,InArg,NInArg,SetupListFile,FunType)
+// -----------------------------------------------------------------
+// Generate list of setup functions required acorginto peripherals used
+//
+// Input data:
+// FunName: scilab-arduino toolbox function
+// InArg: input arguments for above mentioned function
+// NInArg: no of input arguments for above mentioned function
+// SetupListFile: file containing list of setup functions
+// FunType: Gpio function or initialisation function for any other perpheral
+//
+// Output data:
+// List of setup functions for Arduino
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+ load(SetupListFile,'SetupList');
+
+ //Check first if current input function already exists in the list
+ nelements = size(SetupList);
+
+ found=%F;
+ if(FunType=='Setup')
+ for i=1:nelements
+ if(SetupList(i)(1) == FunName)
+ for j=1:NInArg
+ if(SetupList(i)(j+1) ~= InArg(j).Name)
+ found = %F
+ break;
+ else
+ found = %T;
+ end
+ end
+ end
+ if (found == %T)
+ break; //One match found. No need to check further.
+ end
+ end
+
+ if(found == %F)
+ temp = list(FunName);
+ for i=1:NInArg
+ temp($+1) = InArg(i).Name;
+ end
+ end
+ SetupList($+1) = temp;
+ elseif((FunType=='Init')&((FunName=='cmd_digital_out')|(FunName=='cmd_analog_out')|(FunName=='cmd_digital_in')))
+ for i=1:nelements
+ if(SetupList(i)(1) == "pinMode")
+ if(SetupList(i)(2) == InArg(2).Name)
+ found = %T
+ break;
+ else
+ found = %F;
+ end
+ else
+
+ found = %F;
+
+ end
+
+ end
+
+ if(found == %F)
+ temp = list('pinMode');
+ temp($+1) = InArg(2).Name;
+ if ((FunName=='cmd_digital_out')|(FunName=='cmd_analog_out'))
+ temp($+1) = 'OUTPUT';
+ elseif ((FunName == 'cmd_digital_in') | (FunName=='cmd_analog_in'))
+ temp($+1) = 'INPUT';
+ end
+ SetupList($+1) = temp;
+
+ end
+
+
+ end
+ save(SetupListFile,'SetupList');
+
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/IsArduinoFunction.sci b/2.3-1/macros/Scilab-Arduino/IsArduinoFunction.sci
new file mode 100644
index 00000000..d98f5cd5
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/IsArduinoFunction.sci
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function Output = IsArduinoFunction(FunName)
+// -----------------------------------------------------------------
+// Check whether input function name is an Arduino function or not.
+//
+// Input data:
+// FunName: Name of the function to be checked
+//
+// Output data:
+// Output: True or False depending whether given function is an
+// Arduino function or not
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+//Get list of supported functions for Arduino
+ArduinoFunctions = GetArduinoFunctions();
+
+//Check whether input function is present in above list or not
+FunNameInArduino = members(FunName,ArduinoFunctions);
+Output = bool2s(FunNameInArduino~=0);
+
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci b/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci
new file mode 100644
index 00000000..4afceca8
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci
@@ -0,0 +1,34 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function Output = IsArduinoSetupFunction(FunName)
+disp(FunName)
+// -----------------------------------------------------------------
+// Check whether input function name is an Arduino setup function or not.
+//
+// Input data:
+// FunName: Name of the function to be checked
+//
+// Output data:
+// Output: True or False depending whether given function is an
+// Arduino setup function or not
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+//Get list of supported functions for Arduino
+ArduinoSetupFunctions = GetArduinoSetupFunctions();
+
+
+//Check whether input function is present in above list or not
+FunNameInArduinoSetup = members(FunName,ArduinoSetupFunctions);
+Output = bool2s(FunNameInArduinoSetup~=0);
+
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/buildmacros.sce b/2.3-1/macros/Scilab-Arduino/buildmacros.sce
new file mode 100644
index 00000000..dfeb4755
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/buildmacros.sce
@@ -0,0 +1,29 @@
+// This file is released into the public domain
+
+Directories = [ "ASTManagement", ...
+ "CCodeGeneration", ...
+ "ErrorMessages", ...
+ "findDeps", ...
+ "FunctionAnnotation", ...
+ "FunctionList", ...
+ "GeneralFunctions", ...
+ "SymbolTable", ...
+ "ToolInitialization"...
+ "Hardware/AVR"...
+ "Scilab-Arduino" ];
+
+
+current_path_buildmacros = get_absolute_file_path("buildmacros.sce");
+
+for K=1:size(Directories,"*")
+ myfile = current_path_buildmacros + filesep() + Directories(K) + filesep() + "buildmacros.sce";
+ if isfile(myfile) then
+ exec(myfile);
+ end
+end
+
+clear current_path_buildmacros;
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/Scilab-Arduino/cmd_i2c_dev.sci b/2.3-1/macros/Scilab-Arduino/cmd_i2c_dev.sci
new file mode 100644
index 00000000..37854cf3
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/cmd_i2c_dev.sci
@@ -0,0 +1,3 @@
+function z = cmd_i2c_dev(address)
+ z = 0
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/cmd_i2c_read.sci b/2.3-1/macros/Scilab-Arduino/cmd_i2c_read.sci
new file mode 100644
index 00000000..1edc1aae
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/cmd_i2c_read.sci
@@ -0,0 +1,2 @@
+function y = cmd_i2c_read(address,bytes)
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/cmd_i2c_read_register.sci b/2.3-1/macros/Scilab-Arduino/cmd_i2c_read_register.sci
new file mode 100644
index 00000000..f5394a66
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/cmd_i2c_read_register.sci
@@ -0,0 +1,3 @@
+function x = cmd_i2c_read_register(address,reg_adrs)
+ x = 0;
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/cmd_i2c_write.sci b/2.3-1/macros/Scilab-Arduino/cmd_i2c_write.sci
new file mode 100644
index 00000000..8ed8eb4e
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/cmd_i2c_write.sci
@@ -0,0 +1,2 @@
+function cmd_i2c_write(address,data)
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/cmd_i2c_write_register.sci b/2.3-1/macros/Scilab-Arduino/cmd_i2c_write_register.sci
new file mode 100644
index 00000000..02c48393
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/cmd_i2c_write_register.sci
@@ -0,0 +1,2 @@
+function cmd_i2c_write_register(address, reg_adrs, data)
+endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/lib b/2.3-1/macros/Scilab-Arduino/lib
new file mode 100644
index 00000000..18879110
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/lib
Binary files differ
diff --git a/2.3-1/macros/Scilab-Arduino/names b/2.3-1/macros/Scilab-Arduino/names
new file mode 100644
index 00000000..8b8d7c48
--- /dev/null
+++ b/2.3-1/macros/Scilab-Arduino/names
@@ -0,0 +1,11 @@
+GenerateSetupFunction
+GetArduinoFunctions
+GetArduinoSetupFunctions
+InsertSetupInList
+IsArduinoFunction
+IsArduinoSetupFunction
+cmd_i2c_dev
+cmd_i2c_read
+cmd_i2c_read_register
+cmd_i2c_write
+cmd_i2c_write_register
diff --git a/2.3-1/macros/SymbolTable/ST_AnalyzeScope.sci b/2.3-1/macros/SymbolTable/ST_AnalyzeScope.sci
new file mode 100644
index 00000000..6ce94820
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_AnalyzeScope.sci
@@ -0,0 +1,125 @@
+function OutArg = ST_AnalyzeScope(OldOutArg,NOutArg,FileInfo,SharedInfo);
+// function OutArg = ST_AnalyzeScope(OldOutArg,NOutArg,FileInfo,SharedInfo);
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),4,4);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Getting output arguments info from the symbol table***',ReportFileName,'file','y');
+// #RNU_RES_E
+
+OutArg = OldOutArg;
+GlobalVarsFileName = FileInfo.GlobalVarFileName;
+LocalVarsFileName = FileInfo.Funct(nxtscifunnumber).LocalVarFileName;
+TempVarsFileName = FileInfo.Funct(nxtscifunnumber).TempVarFileName;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// ------------------------------------------------------------------
+// --- Check if the out variables already exist in symbol tables. ---
+// ------------------------------------------------------------------
+// #RNU_RES_E
+for cntout = 1:NOutArg
+
+ // #RNU_RES_B
+ PrintStringInfo(' Symbol ""'+OutArg(cntout).Name+'""',ReportFileName,'file','y');
+ // #RNU_RES_E
+ TBName = OutArg(cntout).Name;
+
+ // #RNU_RES_B
+ // --- Check in temporary symbol table. ---
+ // #RNU_RES_E
+ SymbolTableFileName = TempVarsFileName;
+ [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(TBName,SymbolTableFileName);
+ if (TBFlagfound == 0)
+ // #RNU_RES_B
+ PrintStringInfo(' ...not found in: '+SymbolTableFileName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ else
+ error(9999, 'Found a temp symbol in '+SymbolTableFileName+...
+ ' with the same name of the equal output argument ""'+TBName+'"".');
+ end
+
+ // #RNU_RES_B
+ // --- Check in local symbol table. ---
+ // #RNU_RES_E
+ SymbolTableFileName = LocalVarsFileName;
+ [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(TBName,SymbolTableFileName);
+ if (TBFlagfound == 0)
+ // #RNU_RES_B
+ PrintStringInfo(' ...not found in: '+SymbolTableFileName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ else
+ // #RNU_RES_B
+ PrintStringInfo(' ...found in: '+SymbolTableFileName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ OutArg(cntout).Scope = 'Local';
+ end
+
+ // #RNU_RES_B
+ // --- Check in global symbol table. ---
+ // #RNU_RES_E
+ if (TBFlagfound == 0)
+ // Local wins over global.
+ SymbolTableFileName = GlobalVarsFileName;
+ [TBFlagfound2,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(TBName,SymbolTableFileName);
+ if (TBFlagfound2 == 0)
+ // #RNU_RES_B
+ PrintStringInfo(' ...not found in: '+SymbolTableFileName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ if SCI2Cstrncmps1size(SharedInfo.ASTReader.TempVarsName,OutArg(cntout).Name)
+ OutArg(cntout).Scope = 'Temp';
+ else
+ OutArg(cntout).Scope = 'Local';
+ end
+ else
+ // #RNU_RES_B
+ PrintStringInfo(' ...found in: '+SymbolTableFileName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ OutArg(cntout).Scope = 'Global';
+ end
+ end
+
+ // #RNU_RES_B
+ PrintStringInfo(' Type: '+OutArg(cntout).Type,ReportFileName,'file','y');
+ PrintStringInfo(' Size(1): '+string(OutArg(cntout).Size(1)),ReportFileName,'file','y');
+ PrintStringInfo(' Size(2): '+string(OutArg(cntout).Size(2)),ReportFileName,'file','y');
+ PrintStringInfo(' Value: '+string(OutArg(cntout).Value),ReportFileName,'file','y');
+ PrintStringInfo(' FindLike: '+string(OutArg(cntout).FindLike),ReportFileName,'file','y');
+ PrintStringInfo(' Dimension: '+string(OutArg(cntout).Dimension),ReportFileName,'file','y');
+ PrintStringInfo(' Scope: '+string(OutArg(cntout).Scope),ReportFileName,'file','y');
+ PrintStringInfo(' ',ReportFileName,'file','y');
+ // #RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_Del.sci b/2.3-1/macros/SymbolTable/ST_Del.sci
new file mode 100644
index 00000000..7eda874d
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_Del.sci
@@ -0,0 +1,41 @@
+function ST_Del(TBName,SymbolTableFileName)
+// function ST_Del(TBName,SymbolTableFileName)
+// -----------------------------------------------------------------
+// Delete function for the symbol table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// --- Load symbol table. ---
+SCI2CSymbolTable = ST_Load(SymbolTableFileName);
+
+// --- Find symbol position. ---
+[TBFlagfound,TBPosition] = ST_FindPos(TBName,SymbolTableFileName);
+
+if (TBFlagfound == 0)
+ error(9999, 'Missing symbol: trying to del a non existing symbol ""'+TBName+'"".');
+elseif (TBFlagfound == 1)
+ // --- Update symbol table. ---
+ SCI2CSymbolTable(TBPosition) = [];
+
+ // --- Save symbol table. ---
+ ST_Save(SymbolTableFileName,SCI2CSymbolTable);
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_FindPos.sci b/2.3-1/macros/SymbolTable/ST_FindPos.sci
new file mode 100644
index 00000000..737b7de4
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_FindPos.sci
@@ -0,0 +1,46 @@
+function [TBFlagfound,TBPosition] = ST_FindPos(TBName,SymbolTableFileName)
+// function [TBFlagfound,TBPosition] = ST_FindPos(TBName,SymbolTableFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Finds position of symbol TBName in the symbol table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// #RNU_RES_E
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// --- Load symbol table. ---
+SCI2CSymbolTable = ST_Load(SymbolTableFileName);
+
+// --- Find position of the line to be removed. ---
+TBFlagfound = 0;
+TBPosition = 0;
+NEntries = max(size(SCI2CSymbolTable));
+for countertable = 1:NEntries
+ if (mtlb_strcmp(TBName,SCI2CSymbolTable(countertable).Name))
+ TBFlagfound = TBFlagfound + 1;
+ TBPosition = countertable;
+ end
+end
+
+if (TBFlagfound > 1)
+ error(9999, 'Symbol table conflict: found two symbols with the same name ""'+TBName+'"".');
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_Get.sci b/2.3-1/macros/SymbolTable/ST_Get.sci
new file mode 100644
index 00000000..636a873a
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_Get.sci
@@ -0,0 +1,64 @@
+function [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(Field_Name,SymbolTableFileName)
+// function [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+// ST_Get(Field_Name,SymbolTableFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Get function for the symbol table.
+//
+// #RNU_RES_E
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// --------------------------
+// --- Load Symbol Table. ---
+// --------------------------
+[tmpnams,tmptyps,tmpdims,tmpvols]=listvarinfile(SymbolTableFileName);
+if (max(size(tmpnams)) > 1)
+ error(9999, 'More than one variable found in ""'+SymbolTableFileName+'"".');
+end
+load(SymbolTableFileName,tmpnams);
+SCI2CSymbolTable = eval(tmpnams);
+// ------------------------------
+// --- End Load Symbol Table. ---
+// ------------------------------
+
+TBFlagfound = 0;
+TBType = '';
+TBSize(1) = '';
+TBSize(2) = '';
+TBValue = %nan;
+TBFindLike = %nan;
+TBDimension = %nan;
+NEntries = max(size(SCI2CSymbolTable));
+for countertable = 1:NEntries
+ if (mtlb_strcmp(Field_Name,SCI2CSymbolTable(countertable).Name))
+ TBFlagfound = TBFlagfound + 1;
+ TBType = SCI2CSymbolTable(countertable).Type; // String
+ TBSize = SCI2CSymbolTable(countertable).Size; // String
+ TBValue = SCI2CSymbolTable(countertable).Value;
+ TBFindLike = SCI2CSymbolTable(countertable).FindLike; // Number: 0 or 1.
+ TBDimension = SCI2CSymbolTable(countertable).Dimension; // Number: 0 or 1 or 2.
+ end
+end
+
+if (TBFlagfound > 1)
+ error(9999, 'Symbol table conflict: found two symbols with the same name ""'+TBName+'"".');
+end
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci b/2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci
new file mode 100644
index 00000000..4c85408c
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci
@@ -0,0 +1,220 @@
+function [UpdatedInArg,SharedInfo] = ST_GetInArgInfo(InArg,NInArg,FileInfo,SharedInfo,ASTFunName)
+// function UpdatedInArg = ST_GetInArgInfo(InArg,NInArg,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Generate all the info concerning the input arguments.
+//
+// Input data:
+// InArg: InArg structure containing only the names of the input
+// arguments.
+// //NUT: add description here
+//
+// Output data:
+// UpdatedInArg: InArg structure with all the info on the input
+// arguments.
+// FileInfoDatFile: name of the .dat file containing the FileInfo
+// structure.
+// #RNU_RES_E
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Analyzing Input Arguments***',ReportFileName,'file','y');
+// #RNU_RES_E
+
+UpdatedInArg = InArg;
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+for cntinarg = 1:NInArg
+ tmpname = InArg(cntinarg).Name;
+ tmpscope = InArg(cntinarg).Scope;
+ lengthNumber = length('Number_');
+ if (part(tmpscope,1:lengthNumber) == 'Number_')
+ // #RNU_RES_B
+ PrintStringInfo('Input Argument '+string(cntinarg)+' is a number: '+tmpname+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ UpdatedInArg(cntinarg).Type = part(tmpscope,lengthNumber+1:lengthNumber+1);
+ if (UpdatedInArg(cntinarg).Type == 'x')
+ UpdatedInArg(cntinarg).Type = SharedInfo.DefaultPrecision; // It is the default
+ elseif (UpdatedInArg(cntinarg).Type == 'X')
+ if (SharedInfo.DefaultPrecision == 's')
+ UpdatedInArg(cntinarg).Type = 'c'; // It is the default.
+ elseif (SharedInfo.DefaultPrecision == 'd')
+ UpdatedInArg(cntinarg).Type = 'z'; // It is the default.
+ else
+ error(9999, 'Unexpected value for SharedInfo.DefaultPrecision: ""'+SharedInfo.DefaultPrecision+'""');
+ end
+ end
+ if (tmpname == '%pi')
+ UpdatedInArg(cntinarg).Name = 'SCI2C_PI';
+ numvalue = %pi;
+ elseif (tmpname == '%e')
+ UpdatedInArg(cntinarg).Name = 'SCI2C_E';
+ numvalue = %e;
+ elseif (tmpname == '%T' | tmpname == '%t')
+ UpdatedInArg(cntinarg).Name = 'SCI2C_T';
+ numvalue = 1;
+ elseif (tmpname == '%F' | tmpname == '%f')
+ UpdatedInArg(cntinarg).Name = 'SCI2C_F';
+ numvalue = 0;
+ elseif (tmpname == '%nan')
+ UpdatedInArg(cntinarg).Name = 'SCI2C_NAN';
+ numvalue = %nan;
+ elseif (tmpname == '%inf')
+ UpdatedInArg(cntinarg).Name = 'SCI2C_INF';
+ numvalue = %nan; // Otherwise it will put in the C code Inf value.
+ elseif (tmpname == '%i')
+ // #RNU_RES_B
+ //NUT: Other complex numbers are always
+ //NUT: stored in variables, and don't appear as immediate numbers.
+ // #RNU_RES_E
+ UpdatedInArg(cntinarg).Name = 'SCI2C_IMG_'+convstr(UpdatedInArg(cntinarg).Type,'u');
+ numvalue = %i;
+ else
+ numvalue = eval(tmpname);
+ //UpdatedInArg(cntinarg).Type = 'd'; // it is the default.
+ end
+
+ UpdatedInArg(cntinarg).Size(1) = '1';
+ UpdatedInArg(cntinarg).Size(2) = '1';
+ UpdatedInArg(cntinarg).Value = numvalue;
+ UpdatedInArg(cntinarg).FindLike = 0;
+ UpdatedInArg(cntinarg).Dimension = 0;
+ UpdatedInArg(cntinarg).Scope = 'Number';
+ if((ASTFunName == 'cmd_analog_in' | ASTFunName == 'cmd_analog_in_volt' ) & cntinarg == 2)
+ numvalue = eval(tmpname);
+ if (SharedInfo.Board_name == 'mega' | SharedInfo.Board_name == 'mega2560') then
+ tmpname = string(numvalue + 54)
+ UpdatedInArg(cntinarg).Value = 54 + numvalue;
+ else
+ tmpname = string(numvalue + 14)
+ UpdatedInArg(cntinarg).Value = 14 + numvalue;
+ end
+ UpdatedInArg(cntinarg).Name = tmpname; // Change the name.
+ end
+
+ elseif (tmpscope == 'String')
+ // #RNU_RES_B
+ PrintStringInfo('Input Argument '+string(cntinarg)+' is a string: '+tmpname+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ SharedInfo.ASTReader.UsedTempVars = SharedInfo.ASTReader.UsedTempVars + 1;
+ TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.UsedTempVars)]);
+
+ UpdatedInArg(cntinarg).Name = TmpOutArgName; // Change the name.
+ UpdatedInArg(cntinarg).Type = 'g'; // it is the default.
+ UpdatedInArg(cntinarg).Size(1) = '1';
+ UpdatedInArg(cntinarg).Size(2) = string(length(tmpname)+1); //+1 = (\0)
+ UpdatedInArg(cntinarg).Value = '""'+tmpname+'""';
+ UpdatedInArg(cntinarg).FindLike = 0;
+ UpdatedInArg(cntinarg).Dimension = 2; //Keep it zero to avoid extra argument 'funcnameSize'.
+ UpdatedInArg(cntinarg).Scope = 'Temp';
+
+ // #RNU_RES_B
+ // Add the new symbol in the symbol table.
+ // #RNU_RES_E
+ ST_InsOutArg(UpdatedInArg(cntinarg),1,FileInfo,SharedInfo,'all');
+
+ elseif (tmpscope == 'Variable' | tmpscope == 'Global' | tmpscope == 'Local' | tmpscope == 'Temp')
+ // #RNU_RES_B
+ //NUT: nelle future versioni qui si puo' fare una utile differenziazione per rendere piu' intelligente il tutto.
+ PrintStringInfo('Input Argument '+string(cntinarg)+' is a symbol: '+tmpname+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension,TBScope] = ST_GetSymbolInfo(tmpname,FileInfo,SharedInfo);
+
+ if (TBFlagfound == 0)
+ if(ASTFunName == 'ode')
+ if((NInArg == 4 & cntinarg == 4) | (NInArg == 6 & cntinarg == 6))
+ //incase of 4 arguments, fourth argument is function name
+ UpdatedInArg(cntinarg).Name = tmpname; // Change the name.
+ UpdatedInArg(cntinarg).Type = 'fn'; //it is a function name
+ UpdatedInArg(cntinarg).Size(1) = '1';
+ UpdatedInArg(cntinarg).Size(2) = '1'; //+1 = (\0)
+ UpdatedInArg(cntinarg).Value = '&'+tmpname;
+ UpdatedInArg(cntinarg).FindLike = 0;
+ UpdatedInArg(cntinarg).Dimension = 0; //NUT: in future releases you can set this field to 1.
+ UpdatedInArg(cntinarg).Scope = 'Temp';
+ ST_InsOutArg(UpdatedInArg(cntinarg),1,FileInfo,SharedInfo,'all');
+ elseif (NInArg == 5 & cntinarg == 5) then
+ //incase of 5 arguments, fifth argument is function name
+ UpdatedInArg(cntinarg).Name = tmpname; // Change the name.
+ UpdatedInArg(cntinarg).Type = 'fn'; //it is a function name
+ UpdatedInArg(cntinarg).Size(1) = '1';
+ UpdatedInArg(cntinarg).Size(2) = '1'; //+1 = (\0)
+ UpdatedInArg(cntinarg).Value = '&'+tmpname;
+ UpdatedInArg(cntinarg).FindLike = 0;
+ UpdatedInArg(cntinarg).Dimension = 0; //NUT: in future releases you can set this field to 1.
+ UpdatedInArg(cntinarg).Scope = 'Temp';
+ ST_InsOutArg(UpdatedInArg(cntinarg),1,FileInfo,SharedInfo,'all');
+ end
+ elseif (ASTFunName == 'RPI_ThreadCreate')
+ UpdatedInArg(cntinarg).Name = tmpname; // Change the name.
+ UpdatedInArg(cntinarg).Type = 'fn'; //it is a function name
+ UpdatedInArg(cntinarg).Size(1) = '1';
+ UpdatedInArg(cntinarg).Size(2) = '1'; //+1 = (\0)
+ UpdatedInArg(cntinarg).Value = '&'+tmpname;
+ UpdatedInArg(cntinarg).FindLike = 0;
+ UpdatedInArg(cntinarg).Dimension = 0; //NUT: in future releases you can set this field to 1.
+ UpdatedInArg(cntinarg).Scope = 'Temp';
+ ST_InsOutArg(UpdatedInArg(cntinarg),1,FileInfo,SharedInfo,'all');
+ elseif (ASTFunName == 'RPI_PinISR')
+ UpdatedInArg(cntinarg).Name = tmpname; // Change the name.
+ UpdatedInArg(cntinarg).Type = 'fn'; //it is a function name
+ UpdatedInArg(cntinarg).Size(1) = '1';
+ UpdatedInArg(cntinarg).Size(2) = '1'; //+1 = (\0)
+ UpdatedInArg(cntinarg).Value = '&'+tmpname;
+ UpdatedInArg(cntinarg).FindLike = 0;
+ UpdatedInArg(cntinarg).Dimension = 0; //NUT: in future releases you can set this field to 1.
+ UpdatedInArg(cntinarg).Scope = 'Temp';
+ ST_InsOutArg(UpdatedInArg(cntinarg),1,FileInfo,SharedInfo,'all');
+ else
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Unknown symbol ""'+tmpname+'"".',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Be sure to initialize every symbol you are using.',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Before running the SCI2C translator, remember to run the code you are trying',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: to translate in order to check syntax errors.',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Unknown symbol ""'+tmpname+'"".');
+ end
+ else
+ UpdatedInArg(cntinarg).Type = TBType;
+ UpdatedInArg(cntinarg).Size = TBSize;
+ UpdatedInArg(cntinarg).Value = TBValue;
+ UpdatedInArg(cntinarg).FindLike = TBFindLike;
+ UpdatedInArg(cntinarg).Dimension = TBDimension;
+ UpdatedInArg(cntinarg).Scope = TBScope;
+ end
+ else
+ error(9999, 'Unknown scope identifier ""'+tmpscope+'"" for variable ""'+tmpname+'"".');
+ end
+ // #RNU_RES_B
+ PrintStringInfo(' Type: '+UpdatedInArg(cntinarg).Type,FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ PrintStringInfo(' Size(1): '+string(UpdatedInArg(cntinarg).Size(1)),FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ PrintStringInfo(' Size(2): '+string(UpdatedInArg(cntinarg).Size(2)),FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ PrintStringInfo(' Value: '+string(UpdatedInArg(cntinarg).Value),FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ PrintStringInfo(' FindLike: '+string(UpdatedInArg(cntinarg).FindLike),FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ PrintStringInfo(' Dimension: '+string(UpdatedInArg(cntinarg).Dimension),FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ PrintStringInfo(' Scope: '+UpdatedInArg(cntinarg).Scope,FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_GetSymbolInfo.sci b/2.3-1/macros/SymbolTable/ST_GetSymbolInfo.sci
new file mode 100644
index 00000000..1fb2f3de
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_GetSymbolInfo.sci
@@ -0,0 +1,99 @@
+function [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension,TBScope] = ST_GetSymbolInfo(TBName,FileInfo,SharedInfo)
+// function [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension,TBScope] = ST_GetSymbolInfo(TBName,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// --- Extraction of the function name and number. ---
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+
+GlobalVarsFileName = FileInfo.GlobalVarFileName;
+LocalVarsFileName = FileInfo.Funct(nxtscifunnumber).LocalVarFileName;
+TempVarsFileName = FileInfo.Funct(nxtscifunnumber).TempVarFileName;
+
+TBFlagfound = 0;
+TBType = '';
+TBSize(1) = '';
+TBSize(2) = '';
+TBValue = %nan
+TBFindLike = %nan
+TBDimension = %nan;
+TBScope = '';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// #RNU_RES_B
+// ------------------------------------------------
+// --- Search in the temporary variables table. ---
+// ------------------------------------------------
+PrintStringInfo('Searching ""'+TBName+'"" in '+FileInfo.Funct(nxtscifunnumber).TempVarFileName+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+// #RNU_RES_E
+[TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(TBName,TempVarsFileName);
+if (TBFlagfound == 1);
+ // #RNU_RES_B
+ PrintStringInfo('...Found in: ""'+FileInfo.Funct(nxtscifunnumber).TempVarFileName+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ TBScope = 'Temp';
+end
+
+// --------------------------------------------
+// --- Search in the local variables table. ---
+// --------------------------------------------
+if (TBFlagfound == 0);
+ // #RNU_RES_B
+ PrintStringInfo('Searching ""'+TBName+'"" in '+FileInfo.Funct(nxtscifunnumber).LocalVarFileName+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(TBName,LocalVarsFileName);
+ if (TBFlagfound == 1);
+ // #RNU_RES_B
+ PrintStringInfo('...Found in: ""'+FileInfo.Funct(nxtscifunnumber).LocalVarFileName+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ TBScope = 'Local';
+ end
+end
+
+// #RNU_RES_B
+// ---------------------------------------------
+// --- Search in the global variables table. ---
+// ---------------------------------------------
+// #RNU_RES_E
+if (TBFlagfound == 0);
+ // #RNU_RES_B
+ PrintStringInfo('Searching ""'+TBName+'"" in '+FileInfo.GlobalVarFileName+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
+ ST_Get(TBName,GlobalVarsFileName);
+ if (TBFlagfound == 1);
+ // #RNU_RES_B
+ PrintStringInfo('...Found in: ""'+FileInfo.GlobalVarFileName+'.',FileInfo.Funct(nxtscifunnumber).ReportFileName,'file');
+ // #RNU_RES_E
+ TBScope = 'Global';
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_InsForCntVars.sci b/2.3-1/macros/SymbolTable/ST_InsForCntVars.sci
new file mode 100644
index 00000000..b0e6f356
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_InsForCntVars.sci
@@ -0,0 +1,191 @@
+function [OutArg,SharedInfo] = ST_InsForCntVars(InArg,NInArg,OutArg,NOutArg,FunctionName,FileInfo,SharedInfo)
+// function [OutArg,SharedInfo] = ST_InsForCntVars(InArg,NInArg,OutArg,NOutArg,FunctionName,FileInfo,SharedInfo)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),7,7);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Checking if the current function is handling for counter variables.***',ReportFileName,'file','y');
+// #RNU_RES_E
+
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// -----------------------------------------------
+// --- Initial Check on For counter variables. ---
+// -----------------------------------------------
+if ((SharedInfo.ForExpr.OnExec > 0) & (NOutArg==1) & (OutArg.Scope~='Temp'))
+ // #RNU_RES_B
+ // If we are here, for sure we are in the last assignment of a for loop expression.
+ //
+ // All the following cases must be handled:
+ // OpColon (1,10,cnt) or Opcolon (1,1,10,cnt) --> cnt must be redefined to dim=0
+ // cnt = a; where a is scalar
+ // OpEqual(TMP,cnt); where TMP is matrix --> cnt must be redefined to dim=0, a SCI2Cint counter must be generated
+ // Fun(TMP,cnt); where TMP is matrix.--> cnt must be redefined to dim=0, a SCI2Cint counter must be generated, CNT must be generated where CNT is a Matrix
+ // #RNU_RES_E
+ if (FunctionName == 'OpColon')
+ // #RNU_RES_B
+ PrintStringInfo(' The for expression is using an OpColon-based assignment',ReportFileName,'file','y');
+ // #RNU_RES_E
+ SharedInfo.SkipNextFun = 1;
+
+ OutArg.Size(1) = '1';
+ OutArg.Size(2) = '1';
+ OutArg.Value = %nan;
+ OutArg.FindLike = 0;
+ OutArg.Dimension = 0;
+ SharedInfo.ForExpr.OpColonInfoIn1 = InArg(1).Name;
+
+ if (NInArg == 2)
+ SharedInfo.ForExpr.OpColonInfoIn2 = '1';
+ SharedInfo.ForExpr.OpColonInfoIn3 = InArg(2).Name;
+ else
+ SharedInfo.ForExpr.OpColonInfoIn2 = InArg(2).Name;
+ if isnan(InArg(2).Value)
+ EM_UnknownStep(ReportFileName);
+ end
+
+ SharedInfo.ForExpr.OpColonInfoIn3 = InArg(3).Name;
+ end
+
+ // #RNU_RES_B
+ // Generate all info to generate the C for expression
+ // #RNU_RES_E
+ SharedInfo.ForExpr.AssignmentFun = SharedInfo.CFunId.OpColon;
+ SharedInfo.ForExpr.IntCntArg = [];
+ SharedInfo.ForExpr.MtxValCntArg = [];
+ SharedInfo.ForExpr.SclValCntArg = OutArg;
+
+ elseif ((FunctionName == 'OpEqual') & (SharedInfo.ForExpr.AssignmentFun == 0))
+ // #RNU_RES_B
+ //NUT: Test also that SharedInfo.ForExpr.AssignmentFun because sometimes Equal are dummy!
+ //NUT: verifica se e' giusta questa mia affermazione.
+ // #RNU_RES_E
+ if (OutArg.Dimension > 0)
+ // #RNU_RES_B
+ PrintStringInfo(' The for expression is using a Matrix-Equal-based assignment',ReportFileName,'file','y');
+ // #RNU_RES_E
+ SharedInfo.SkipNextFun = 1; //NUT: forse qui sarebbe meglio mettere uno skipnextequal per precisione.
+ // #RNU_RES_B
+ //NUT: a dire il vero occorre capire se c'e' differenza tra i vari skip.
+ // #RNU_RES_E
+ OutArg.Size(1) = '1';
+ OutArg.Size(2) = '1';
+ OutArg.Value = %nan;
+ OutArg.FindLike = 0;
+ OutArg.Dimension = 0;
+
+ // #RNU_RES_B
+ // Introduce the int counter variable.
+ // #RNU_RES_E
+ NNewArg = 1;
+ NewArg(NNewArg).Name = SharedInfo.ASTReader.TempForCntVarsName+string(SharedInfo.CountForTempVars);
+ SharedInfo.CountForTempVars = SharedInfo.CountForTempVars + 1;
+ NewArg(NNewArg).Size(1) = '1';
+ NewArg(NNewArg).Size(2) = '1';
+ NewArg(NNewArg).Type = 'i';
+ NewArg(NNewArg).Value = 0;
+ NewArg(NNewArg).FindLike = 0;
+ NewArg(NNewArg).Dimension = 0;
+ NewArg(NNewArg).Scope = 'Temp';
+
+ // #RNU_RES_B
+ // Insert New Arguments in the symbol table.
+ // #RNU_RES_E
+ NNewArg = 1;
+ ST_InsOutArg(NewArg,NNewArg,FileInfo,SharedInfo,'all');
+
+ // #RNU_RES_B
+ // Generate all info to generate the C for expression
+ // #RNU_RES_E
+ SharedInfo.ForExpr.AssignmentFun = SharedInfo.CFunId.EqMatrix;
+ SharedInfo.ForExpr.IntCntArg = NewArg(1);
+ SharedInfo.ForExpr.MtxValCntArg = InArg(1);
+ SharedInfo.ForExpr.SclValCntArg = OutArg;
+ else
+ // #RNU_RES_B
+ PrintStringInfo(' The for expression is using a Scalar-Equal-based assignment',ReportFileName,'file','y');
+ // #RNU_RES_E
+ SharedInfo.ForExpr.AssignmentFun = SharedInfo.CFunId.EqScalar;
+ end
+ else
+ if (OutArg.Dimension > 0)
+ // #RNU_RES_B
+ PrintStringInfo(' The for expression is using a Matrix-Function-based assignment',ReportFileName,'file','y');
+
+ // Introduce the val counter variable.
+ // #RNU_RES_E
+ NewArg = OutArg;
+ OutArg.Name = SharedInfo.ASTReader.TempForValVarsName+OutArg.Name;
+
+ // #RNU_RES_B
+ // Set the counter variable to scalar.
+ // #RNU_RES_E
+ NNewArg = 1;
+ NewArg(NNewArg).Size(1) = '1';
+ NewArg(NNewArg).Size(2) = '1';
+ NewArg(NNewArg).Value = %nan;
+ NewArg(NNewArg).FindLike = 0;
+ NewArg(NNewArg).Dimension = 0;
+
+ // #RNU_RES_B
+ // Introduce the int counter variable.
+ // #RNU_RES_E
+ NNewArg = 2;
+ NewArg(NNewArg).Name = SharedInfo.ASTReader.TempForCntVarsName+string(SharedInfo.CountForTempVars);
+ SharedInfo.CountForTempVars = SharedInfo.CountForTempVars + 1;
+ NewArg(NNewArg).Size(1) = '1';
+ NewArg(NNewArg).Size(2) = '1';
+ NewArg(NNewArg).Type = 'i';
+ NewArg(NNewArg).Value = 0;
+ NewArg(NNewArg).FindLike = 0;
+ NewArg(NNewArg).Dimension = 0;
+ NewArg(NNewArg).Scope = 'Temp';
+
+ // #RNU_RES_B
+ // Insert New Arguments in the symbol table.
+ // #RNU_RES_E
+ NNewArg = 2;
+ ST_InsOutArg(NewArg,NNewArg,FileInfo,SharedInfo,'all');
+
+ // #RNU_RES_B
+ // Generate all info to generate the C for expression
+ // #RNU_RES_E
+ SharedInfo.ForExpr.AssignmentFun = SharedInfo.CFunId.GenFunMtx;
+ SharedInfo.ForExpr.IntCntArg = NewArg(2);
+ SharedInfo.ForExpr.MtxValCntArg = OutArg(1);
+ SharedInfo.ForExpr.SclValCntArg = NewArg(1);
+ end
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_InsOutArg.sci b/2.3-1/macros/SymbolTable/ST_InsOutArg.sci
new file mode 100644
index 00000000..fd6b426c
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_InsOutArg.sci
@@ -0,0 +1,192 @@
+function ST_InsOutArg(OutArg,NOutArg,FileInfo,SharedInfo,MatchRule)
+// function ST_InsOutArg(OutArg,NOutArg,FileInfo,SharedInfo,MatchRule)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+CDeclarationFileName = FileInfo.Funct(nxtscifunnumber).CDeclarationFileName;
+CGblDeclarFileName = FileInfo.Funct(nxtscifunnumber).CGblDeclarFileName;
+
+GlobalVarsFileName = FileInfo.GlobalVarFileName;
+LocalVarsFileName = FileInfo.Funct(nxtscifunnumber).LocalVarFileName;
+TempVarsFileName = FileInfo.Funct(nxtscifunnumber).TempVarFileName;
+
+CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
+CPass1FreeFileName = FileInfo.Funct(nxtscifunnumber).CPass1FreeFileName;
+
+
+// #RNU_RES_B
+PrintStringInfo(' ',ReportFileName,'file','y');
+PrintStringInfo('***Putting output arguments in the symbol table***',ReportFileName,'file','y','n');
+// #RNU_RES_E
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+for counteroutput = 1:NOutArg
+ // #RNU_RES_B
+ PrintStringInfo(' Symbol ""'+OutArg(counteroutput).Name+'""',ReportFileName,'file','y','n');
+ PrintStringInfo(' Type: '+OutArg(counteroutput).Type,ReportFileName,'file','y','n');
+ PrintStringInfo(' Size(1): '+string(OutArg(counteroutput).Size(1)),ReportFileName,'file','y','n');
+ PrintStringInfo(' Size(2): '+string(OutArg(counteroutput).Size(2)),ReportFileName,'file','y','n');
+ PrintStringInfo(' Value: '+string(OutArg(counteroutput).Value),ReportFileName,'file','y','n');
+ PrintStringInfo(' FindLike: '+string(OutArg(counteroutput).FindLike),ReportFileName,'file','y','n');
+ PrintStringInfo(' Dimension: '+string(OutArg(counteroutput).Dimension),ReportFileName,'file','y','n');
+ PrintStringInfo(' Scope: '+string(OutArg(counteroutput).Scope),ReportFileName,'file','y','n');
+ PrintStringInfo(' ',ReportFileName,'file','y','n');
+ // #RNU_RES_E
+ if (OutArg(counteroutput).Scope == 'Temp')
+ SymbTableFileName = TempVarsFileName;
+ elseif (OutArg(counteroutput).Scope == 'Local')
+ SymbTableFileName = LocalVarsFileName;
+ elseif (OutArg(counteroutput).Scope == 'Global')
+ SymbTableFileName = GlobalVarsFileName;
+ else
+ error(9999, 'Unknown scope ""'+OutArg(counteroutput).Scope+'"" for symbol: '+OutArg(counteroutput).Name);
+ end
+ // #RNU_RES_B
+ PrintStringInfo(' Setting symbol ""'+OutArg(counteroutput).Name+'"" in '+SymbTableFileName+'.',ReportFileName,'file','y');
+ // #RNU_RES_E
+
+ // #RNU_RES_B
+ // Check existence and conflicts in the symbol table.
+ // Here we have four possibilities:
+ // 1. the symbol is a global variable not initialized yet -> we have to initialize it.
+ // 2. the symbol already exists with different settings -> we have to issue an error.
+ // 3. the symbol already exists with the same settings -> ok, we don't have to do nothing.
+ // 4. the symbol doesn't exist -> we have to insert it into the table.
+ // #RNU_RES_E
+ [TBFlagfound,TBFlagEqualSymbols] = ...
+ ST_MatchSymbol(OutArg(counteroutput).Name,...
+ OutArg(counteroutput).Type,...
+ OutArg(counteroutput).Size,...
+ OutArg(counteroutput).Value,...
+ OutArg(counteroutput).FindLike,...
+ OutArg(counteroutput).Dimension,...
+ SymbTableFileName,MatchRule);
+
+ if (TBFlagfound == 1)
+ if (TBFlagEqualSymbols == 0)
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Symbol Table Conflict. Trying to insert again symbol ""'+...
+ OutArg(counteroutput).Name+'"" with different settings',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: Please check that you are not using variable ""'+OutArg(counteroutput).Name+'""',ReportFileName,'both','y');
+ PrintStringInfo('SCI2CERROR: with different sizes and/or types.',ReportFileName,'both','y');
+ PrintStringInfo(' ',ReportFileName,'both','y');
+ error(9999, 'SCI2CERROR: Symbol Table Conflict. Trying to insert again symbol ""'+...
+ OutArg(counteroutput).Name+'"" with different settings');
+ else
+ // #RNU_RES_B
+ // It's ok symbols do match.
+ //NUT: forse occorre un altro check sulla size per capire se occore fare il malloc.
+ //NUT: qui entro anche quando ho una variabile global gia' dichiarata tale in un altro
+ //NUT: per cui devo dichiararala come external.
+ //RNU qui ci puoi mettere una warning quando stai riallocando uno stesso simbolo con size simbolica.
+ //RNU puoi anche aggiungere del codice in c o un semplice commento. per esempio una funzione c del tipo checksize che controlla il valore
+ //RNU prima dopo delle size di una data variabile. Cosa succede se cambio la size anche nel caso di array e approccio
+ //RNU di resize non attivo? L'unica cosa e' che molte size numeriche scompaiono e incomincio a creare numerose variabili
+ //RNU con size simbolica.
+
+ // If the symbol is scalar we update its value if it is an array we update its size
+ // only in case we are using the 'REALLOC_ALL_RESIZE_ALL' resize approach
+ // #RNU_RES_E
+ if ((GetSymbolDimension(OutArg(counteroutput).Size)) == 0 | (SharedInfo.ResizeApproach=='REALLOC_ALL_RESIZE_ALL'))
+ ST_Set(OutArg(counteroutput).Name,...
+ OutArg(counteroutput).Type,...
+ OutArg(counteroutput).Size,...
+ OutArg(counteroutput).Value,...
+ OutArg(counteroutput).FindLike,...
+ OutArg(counteroutput).Dimension,...
+ SymbTableFileName);
+ end
+
+ // IndentLevelDeclaration = 1; //NUT: per ora lo forzo sempre a 1
+ // IndentLevelMalloc = SharedInfo.NIndent;
+ // FlagExt = 0;
+ // C_GenDeclarations(OutArg(counteroutput),CDeclarationFileName,IndentLevelDeclaration,ReportFileName,FlagExt,SharedInfo.ResizeApproach);
+
+
+ end
+ elseif (TBFlagfound == 2)
+ // #RNU_RES_B
+ // We have a non-initialized global variable.
+ // Set the non-initialized global variable.
+ PrintStringInfo(' Found a non-initialized global variable.',ReportFileName,'file','y');
+ // #RNU_RES_E
+ ST_Set(OutArg(counteroutput).Name,...
+ OutArg(counteroutput).Type,...
+ OutArg(counteroutput).Size,...
+ OutArg(counteroutput).Value,...
+ OutArg(counteroutput).FindLike,...
+ OutArg(counteroutput).Dimension,...
+ SymbTableFileName);
+ IndentLevel = 0; //NUT: forced always to 1
+ FlagExt = 0;
+ C_GenDeclarations(OutArg(counteroutput),CGblDeclarFileName,IndentLevel,ReportFileName,FlagExt,SharedInfo.ResizeApproach);
+ IndentLevelMalloc = SharedInfo.NIndent;
+ // #RNU_RES_B
+ //RNU da verificare bene qui. Cio' che si verifica e' che se la size della globale e' simbolica
+ //RNU allora si assume che essa sia da allocare come puntatore e poi realloc.
+ // #RNU_RES_E
+ C_MemAllocOutTempVars(OutArg(counteroutput),1,CPass1FileName,CPass1FreeFileName,IndentLevelMalloc,ReportFileName,SharedInfo.ResizeApproach);
+ else
+ if (OutArg(counteroutput).FindLike == 1)
+ // #RNU_RES_B
+ // In presence of find-like functions the size must be always symbolic.
+ // Don't change here the value of OutArg.Size because the first time
+ // I need them to declare the OutArg variable with the values assumed by OutArg.Size.
+ // #RNU_RES_E
+ TmpOutArgSize(1) = '__'+OutArg(counteroutput).Name+'Size[0]';
+ TmpOutArgSize(2) = '__'+OutArg(counteroutput).Name+'Size[1]';
+ else
+ TmpOutArgSize(1) = OutArg(counteroutput).Size(1);
+ TmpOutArgSize(2) = OutArg(counteroutput).Size(2);
+ end
+ // #RNU_RES_B
+ // Set a new symbol.
+ // #RNU_RES_E
+ ST_Set(OutArg(counteroutput).Name,...
+ OutArg(counteroutput).Type,...
+ TmpOutArgSize,...
+ OutArg(counteroutput).Value,...
+ OutArg(counteroutput).FindLike,...
+ OutArg(counteroutput).Dimension,...
+ SymbTableFileName);
+ IndentLevelDeclaration = 1; //NUT: per ora lo forzo sempre a 1
+ IndentLevelMalloc = SharedInfo.NIndent;
+ FlagExt = 0;
+ C_GenDeclarations(OutArg(counteroutput),CDeclarationFileName,IndentLevelDeclaration,ReportFileName,FlagExt,SharedInfo.ResizeApproach);
+ // #RNU_RES_B
+ //RNU aggiunta qui in modo che le malloc saranno fatte una sola volta:
+ //RNU verifica che tutto funzioni e chi altro usa la C_MemAlloc per capire se si puo' ottimizzare per questo stadio.
+ // #RNU_RES_E
+ C_MemAllocOutTempVars(OutArg(counteroutput),1,CPass1FileName,CPass1FreeFileName,IndentLevelMalloc,ReportFileName,SharedInfo.ResizeApproach);
+ end
+
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_Load.sci b/2.3-1/macros/SymbolTable/ST_Load.sci
new file mode 100644
index 00000000..dbe53456
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_Load.sci
@@ -0,0 +1,36 @@
+function SCI2CSymbolTable = ST_Load(SymbolTableFileName)
+// function SCI2CSymbolTable = ST_Load(SymbolTableFileName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Load a symbol table stored into a .dat file.
+// #RNU_RES_E
+//
+// Input data:
+// //NUT: add description here
+//
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// --------------------------
+// --- Load Symbol Table. ---
+// --------------------------
+[tmpnams,tmptyps,tmpdims,tmpvols]=listvarinfile(SymbolTableFileName);
+if (max(size(tmpnams)) > 1)
+ error(9999, 'More than one variable found in ""'+SymbolTableFileName+'"".');
+end
+load(SymbolTableFileName,tmpnams);
+SCI2CSymbolTable = eval(tmpnams);
+// ------------------------------
+// --- End Load Symbol Table. ---
+// ------------------------------
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_MatchSymbol.sci b/2.3-1/macros/SymbolTable/ST_MatchSymbol.sci
new file mode 100644
index 00000000..504379c2
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_MatchSymbol.sci
@@ -0,0 +1,69 @@
+function [TBFlagfound,TBFlagEqualSymbols] = ST_MatchSymbol(TBName,TBType,TBSize,TBValue,TBFindLike,TBDimension,SymbolTableFileName,MatchRule)
+// function [TBFlagfound,TBFlagEqualSymbols] = ST_MatchSymbol(TBName,TBType,TBSize,TBValue,TBFindLike,TBDimension,SymbolTableFileName,MatchRule)
+// -----------------------------------------------------------------
+// Match function for the symbol table.
+//
+// Input data:
+// MatchRule: can be 'all','type','size','none'
+// //NUT: add description here
+//
+// Output data:
+// TBFlagfound: 0 = if the symbol doesn't exits.
+// 1 = the symbol exits.
+// 2 = the symbol exists but it is a non-initialized global variable.
+// TBFlagEqualSymbols: 0 if the two symbols don't have the same settings,
+// 1 if the two symbols have the same settings.
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),8,8);
+
+TBFlagfound = 0;
+TBFlagEqualSymbols = 0;
+
+// --- Find symbol (If exists). ---
+[TBFlagfound,tmpType,tmpSize,tmpValue,tmpFindLike,tmpDimension] = ...
+ ST_Get(TBName,SymbolTableFileName);
+if (TBFlagfound == 1)
+ if (tmpType == 'GBLToBeDefined')
+ TBFlagfound = 2;
+ TBFlagEqualSymbols = 0; // I don't want to force the error issue in ST_InsOutArg.sci
+ else
+ // Symbol already exists. Check that it has the same settings of the current output argument.
+ TBFlagEqualSymbols = 1;
+ if (MatchRule == 'type' | MatchRule == 'all')
+ if (mtlb_strcmp(tmpType,TBType) == %F)
+ TBFlagEqualSymbols = 0;
+ end
+ end
+ if (MatchRule == 'size' | MatchRule == 'all')
+ // First check the dimension.
+ if (tmpDimension ~= TBDimension)
+ TBFlagEqualSymbols = 0;
+ end
+ // Then if the size is a number also its value is compared.
+ if (isnum(tmpSize(1))) & (isnum(TBSize(1)))
+ if (mtlb_strcmp(tmpSize(1),TBSize(1)) == %F)
+ TBFlagEqualSymbols = 0;
+ end
+ end
+ if (isnum(tmpSize(2))) & (isnum(TBSize(2)))
+ if (mtlb_strcmp(tmpSize(2),TBSize(2)) == %F)
+ TBFlagEqualSymbols = 0;
+ end
+ end
+ end
+ end
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_Save.sci b/2.3-1/macros/SymbolTable/ST_Save.sci
new file mode 100644
index 00000000..44e6e868
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_Save.sci
@@ -0,0 +1,44 @@
+function ST_Save(SymbolTableFileName,SCI2CSymbolTable)
+// function ST_Save(SymbolTableFileName,SCI2CSymbolTable)
+// -----------------------------------------------------------------
+// Save into a .dat file a symbol table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+[tmpnams,tmptyps,tmpdims,tmpvols]=listvarinfile(SymbolTableFileName);
+if (max(size(tmpnams)) > 1)
+ SCI2Cerror('More than one variable found in ""'+SymbolTableFileName+'"".');
+end
+
+// Identifies the Table name and save it into the .dat file.
+if (mtlb_strcmp(tmpnams,'GlobalVars'))
+ GlobalVars = SCI2CSymbolTable;
+ save(SymbolTableFileName, "GlobalVars");
+elseif (mtlb_strcmp(tmpnams,'LocalVars'))
+ LocalVars = SCI2CSymbolTable;
+ save(SymbolTableFileName, "LocalVars");
+elseif (mtlb_strcmp(tmpnams,'TempVars'))
+ TempVars = SCI2CSymbolTable;
+ save(SymbolTableFileName, "TempVars");
+else
+ SCI2Cerror('Unknow table: ""'+tmpnams+'"".');
+end
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/ST_Set.sci b/2.3-1/macros/SymbolTable/ST_Set.sci
new file mode 100644
index 00000000..778f91aa
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_Set.sci
@@ -0,0 +1,49 @@
+function ST_Set(TBName,TBType,TBSize,TBValue,TBFindLike,TBDimension,SymbolTableFileName)
+// function ST_Set(TBName,TBType,TBSize,TBValue,TBFindLike,TBDimension,SymbolTableFileName)
+// -----------------------------------------------------------------
+// Set function for the symbol table.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 26-Oct-2007 -- Raffaele Nutricato: Author.
+// 26-Oct-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),7,7);
+
+// --- Load symbol table. ---
+SCI2CSymbolTable = ST_Load(SymbolTableFileName);
+
+// --- Find symbol position (If exists). ---
+[TBFlagfound,TBPosition] = ST_FindPos(TBName,SymbolTableFileName);
+
+if (TBFlagfound == 0)
+ TBPosition = max(size(SCI2CSymbolTable))+1;
+end
+
+// --- Update symbol table. ---
+SCI2CSymbolTable(TBPosition).Name = TBName; // string.
+SCI2CSymbolTable(TBPosition).Type = TBType; // char.
+SCI2CSymbolTable(TBPosition).Size = TBSize; // structure of two strings (Size(1) and Size(2)).
+SCI2CSymbolTable(TBPosition).Value = TBValue; // int/real/complex number. %nan when the value is not available or isn't a scalar.
+SCI2CSymbolTable(TBPosition).FindLike = TBFindLike; // int number. FindLike = 1, when the symbol comes from a find-like function.
+ // FindLike = -1 when the function is not find-like but it is making use of input arguments that are find-like.
+ // FindLike = 0 in all other cases.
+SCI2CSymbolTable(TBPosition).Dimension = TBDimension; // int number.
+
+// --- Save symbol table. ---
+ST_Save(SymbolTableFileName,SCI2CSymbolTable);
+
+endfunction
diff --git a/2.3-1/macros/SymbolTable/buildmacros.sce b/2.3-1/macros/SymbolTable/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/SymbolTable/lib b/2.3-1/macros/SymbolTable/lib
new file mode 100644
index 00000000..59ce4653
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/lib
Binary files differ
diff --git a/2.3-1/macros/SymbolTable/names b/2.3-1/macros/SymbolTable/names
new file mode 100644
index 00000000..b5a7d65f
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/names
@@ -0,0 +1,12 @@
+ST_AnalyzeScope
+ST_Del
+ST_FindPos
+ST_Get
+ST_GetInArgInfo
+ST_GetSymbolInfo
+ST_InsForCntVars
+ST_InsOutArg
+ST_Load
+ST_MatchSymbol
+ST_Save
+ST_Set
diff --git a/2.3-1/macros/ToolInitialization/INIT_CreateDirs.sci b/2.3-1/macros/ToolInitialization/INIT_CreateDirs.sci
new file mode 100644
index 00000000..e6ef184e
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_CreateDirs.sci
@@ -0,0 +1,65 @@
+function INIT_CreateDirs(FileInfo)
+// function INIT_CreateDirs(FileInfo)
+// -----------------------------------------------------------------
+// Create directories.
+//
+// Input data:
+// FileInfo: structure containing all info about SCI2C files.
+//
+// Output data:
+// ---
+//
+// Status:
+// 03-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ---------------------------
+// --- Create Directories. ---
+// ---------------------------
+// --- Main directories. ---
+SCI2CCreateDir(FileInfo.WorkingDir);
+SCI2CCreateDir(FileInfo.OutCCCodeDir);
+
+// --- SCI2C Library. ---
+SCI2CCreateDir(FileInfo.SCI2CLibDir);
+SCI2CCreateDir(FileInfo.SCI2CLibSCIAnnDir);
+SCI2CCreateDir(FileInfo.SCI2CLibSCIAnnFun);
+SCI2CCreateDir(FileInfo.SCI2CLibSCIAnnCls);
+SCI2CCreateDir(FileInfo.SCI2CLibSCIFunListDir);
+SCI2CCreateDir(FileInfo.SCI2CLibSCIFLFun);
+SCI2CCreateDir(FileInfo.SCI2CLibSCIFLCls);
+SCI2CCreateDir(FileInfo.SCI2CLibCAnnDir);
+SCI2CCreateDir(FileInfo.SCI2CLibCAnnFun);
+SCI2CCreateDir(FileInfo.SCI2CLibCAnnCls);
+SCI2CCreateDir(FileInfo.SCI2CLibCFunListDir);
+SCI2CCreateDir(FileInfo.SCI2CLibCFLFun);
+SCI2CCreateDir(FileInfo.SCI2CLibCFLCls);
+
+// --- USER2C Library. ---
+SCI2CCreateDir(FileInfo.USER2CLibDir);
+SCI2CCreateDir(FileInfo.USER2CLibSCIAnnDir);
+SCI2CCreateDir(FileInfo.USER2CLibSCIAnnFun);
+SCI2CCreateDir(FileInfo.USER2CLibSCIAnnCls);
+SCI2CCreateDir(FileInfo.USER2CLibSCIFunListDir);
+SCI2CCreateDir(FileInfo.USER2CLibSCIFLFun);
+SCI2CCreateDir(FileInfo.USER2CLibSCIFLCls);
+SCI2CCreateDir(FileInfo.USER2CLibCAnnDir);
+SCI2CCreateDir(FileInfo.USER2CLibCAnnFun);
+SCI2CCreateDir(FileInfo.USER2CLibCAnnCls);
+SCI2CCreateDir(FileInfo.USER2CLibCFunListDir);
+SCI2CCreateDir(FileInfo.USER2CLibCFLFun);
+SCI2CCreateDir(FileInfo.USER2CLibCFLCls);
+
+// --- Function List. ---
+SCI2CCreateDir(FileInfo.FunctionList.MainDir);
+SCI2CCreateDir(FileInfo.FunctionList.FunInfoDatDir);
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
new file mode 100644
index 00000000..ba313b03
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -0,0 +1,8290 @@
+function INIT_FillSCI2LibCDirs(FileInfo,SharedInfoExtension)
+// function INIT_FillSCI2LibCDirs(FileInfo,SharedInfoExtension)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Generates files for the SCI2CLib CFunctionList and CAnnotations
+// directories.
+//
+// Input data:
+// FileInfo: structure containing all info about SCI2C files.
+// SharedInfoExtension: structure containing the file extensions.
+//
+// Output data:
+// ---
+//
+// #RNU_RES_E
+// Status:
+// 24-Dec-2007 -- Raffaele Nutricato: Author.
+// 24-Dec-2007 -- Alberto Morea: Test Ok.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+SCI2CLibCAnnClsDir = FileInfo.SCI2CLibCAnnCls;
+ExtensionCAnnCls = SharedInfoExtension.AnnotationClasses;
+
+SCI2CLibCAnnFunDir = FileInfo.SCI2CLibCAnnFun;
+ExtensionCAnnFun = SharedInfoExtension.AnnotationFunctions;
+
+SCI2CLibCFLClsDir = FileInfo.SCI2CLibCFLCls;
+ExtensionCFuncListCls = SharedInfoExtension.FuncListClasses;
+
+SCI2CLibCFLFunDir = FileInfo.SCI2CLibCFLFun;
+ExtensionCFuncListFun = SharedInfoExtension.FuncListFunctions;
+
+GeneralReport = FileInfo.GeneralReport;
+ArgSeparator = ',';
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// --------------------------------------------------------------------------------
+// --- Generate Function List class files for C functions of the SCI2C library. ---
+// --------------------------------------------------------------------------------
+//NUT old call to INIT_GenSCI2CLibCFLCls
+// INIT_GenSCI2CLibCFLCls(SCI2CLibCFLClsDir,ExtensionCFuncListCls,GeneralReport)
+// SCI2CLibCFLClsDir,ExtensionCFLCls,GeneralReport
+
+//NUT verifica le annotazioni di tutte le classi.
+
+// -----------------------------------------------------------------------------------------
+// --- Generate Function List and Annotation files for C functions of the SCI2C library. ---
+// -----------------------------------------------------------------------------------------
+
+
+// ---------------------
+// --- Class Global. ---
+// ---------------------
+ClassName = 'Global';
+// #RNU_RES_B
+//NUT: global function can work with a generic number of input arguments.
+//NUT: we force the global function to work with one input argument only.
+// --- Class Annotation. ---
+// #RNU_RES_E
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'global';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Float. ---
+// ---------------------
+ClassName = 'Float';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''s''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+//PrintStringInfo('c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'s2',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'s2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'float';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Double. ---
+// ---------------------
+ClassName = 'Double';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('c0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'double';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ----------------------------
+// --- Class FloatComplex. ---
+// ----------------------------
+//NUT sulla complex c'e' da capire se servono due o un solo argomento.
+//NUT secondo me ne va bene uno perche' serve per fare il casting di una variabile
+//NUT reale in una variabile complessa
+ClassName = 'FloatComplex';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''c''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'floatcomplex';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ----------------------------
+// --- Class DoubleComplex. ---
+// ----------------------------
+//NUT sulla complex c'e' da capire se servono due o un solo argomento.
+//NUT secondo me ne va bene uno perche' serve per fare il casting di una variabile
+//NUT reale in una variabile complessa
+ClassName = 'DoubleComplex';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''z''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'doublecomplex';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Uint8. ---
+// ---------------------
+ClassName = 'Uint8';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('c0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'u82',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'uint8';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ---------------------
+// --- Class Float. ---
+// ---------------------
+ClassName = 'Float';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''s''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'s2',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'float';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ---------------------
+// --- Class Int8. ---
+// ---------------------
+ClassName = 'Int8';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''i8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i80',ClassFileName,'file','y');
+//PrintStringInfo('c0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i82',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'int8';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ---------------------
+// --- Class Uint16. ---
+// ---------------------
+ClassName = 'Uint16';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'u160',ClassFileName,'file','y');
+//PrintStringInfo('c0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'u162',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'uint16';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ---------------------
+// --- Class Int16. ---
+// ---------------------
+ClassName = 'Int16';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''i16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+//PrintStringInfo('c0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'int16';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ------------------
+// --- Class Sin. ---
+// ------------------
+ClassName = 'Sin';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sin'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'sinh'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'asinh'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'cos'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'cosh'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'tan'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'tanh'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'exp'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'conj'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//NUT verifica
+FunctionName = 'inv'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'int'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'SCI2Cresize';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'chol'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ------------------
+// --- Class OpLogNot
+// ------------------
+ClassName = 'OpLogNot';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+FunctionName = 'OpLogNot'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'ceil'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'fix'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'floor'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'round'; //BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+// -------------------
+// --- Class bitand. ---
+// -------------------
+ClassName = 'bitand';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bitand';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bitor';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bitxor';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+// -------------------
+// --- Class bitcmp. ---
+// -------------------
+ClassName = 'bitcmp';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bitcmp';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class bitset. ---
+// -------------------
+ClassName = 'bitset';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+
+PrintStringInfo('u80d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160d0d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bitset';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// -------------------
+// --- Class bitget. ---
+// -------------------
+ClassName = 'bitget';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bitget';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+// ------------------
+// --- Class Sign ---
+// ------------------
+ClassName = 'Sign';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+// -------------------
+// --- Class Atan. ---
+// -------------------
+ClassName = 'Atan';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+// PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+// PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+// PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+// PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'atan'; //BJ : atan AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Sqrt. ---
+// -------------------
+ClassName = 'Sqrt';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y'); //FOR INRIA changed from IN(1).TP to FA_TP_USER
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'asin'; //BJ : Works but not able to generate all cases , AS : same for float
+ //--> asin(%pi).
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'acos'; //BJ : Works but not able to generate all cases , AS : same for float
+ //--> acos(%pi)
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'acosd'; //BJ : Works but not able to generate all cases , AS : same for float
+ //--> acosd(%pi)
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'acosh'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'atanh'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+FunctionName = 'acot'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+FunctionName = 'acotd'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+FunctionName = 'acoth'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'acsc'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'asec'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'asech'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'asind'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'atand'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+FunctionName = 'asecd'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'acscd'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'acsch'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+FunctionName = 'sqrt'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'log'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'log10'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'log1p'; // BJ : Ok AS : Float_Done
+ //--> log1p(%i) Not implemented in Scilab.
+ //WARNING z0log1pz0 will never happened.
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------
+// --- Class Zeros. ---
+// --------------------
+ClassName = 'Zeros';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 0',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(IN(1).SZ)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_FROM_VAL(IN(1).VAL,IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(IN(2).VAL,IN(2).TP)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_FROM_VAL(IN(1).VAL,IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(IN(2).VAL,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(3)= FA_SZ_FROM_VAL(IN(3).VAL,IN(3).TP)',ClassFileName,'file','y');
+
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo(ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo(ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo(ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo(ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+
+//NUT: no mixed input types are allowed.
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0d0'+ArgSeparator+'d3',ClassFileName,'file','y');
+
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'zeros'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'ones'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'eye'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// --------------------
+// --- Class Diag. ---
+// --------------------
+ClassName = 'diag';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_ROW_DIAG(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_COLUMN_DIAG(IN(1).SZ)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_ROW_DIAG_INS_EXT(IN(1).SZ,IN(2).VAL)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_COL_DIAG_IN_EX(IN(1).SZ,IN(2).VAL)',ClassFileName,'file','y');
+
+// ---Function List Class.----
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80d0'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160d0'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'diag'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// --------------------
+// --- Class linspace & logspace ---
+// --------------------
+ClassName = 'linspace';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_LINSPACE_ROW(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).VAL',ClassFileName,'file','y');
+
+
+// ---Function List Class.----
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+
+PrintStringInfo('d0d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'linspace'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'logspace'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//---------------------
+//-----Class Rand.------
+//---------------------
+ ClassName = 'rand'
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 0',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(IN(1).SZ)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_FROM_VAL(IN(1).VAL,IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(IN(2).VAL,IN(2).TP)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_FROM_VAL(IN(1).VAL,IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(IN(2).VAL,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(3)= FA_SZ_FROM_VAL(IN(3).VAL,IN(3).TP)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+
+//For rand operator
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+//NUT rand function doesn't behave like zeros and ones functions.
+FunctionName = 'rand'; // BJ : Done => rien pour f loat
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------
+// --- Class Sum. ---
+// --------------------
+ClassName = 'Sum';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_SEL1(IN(1).SZ(1),IN(2).VAL)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_SEL2(IN(1).SZ(2),IN(2).VAL)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s0',ClassFileName,'file','y'); //* possible ? */
+PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y'); //* possible ? */
+PrintStringInfo('c2s0'+ArgSeparator+'c0',ClassFileName,'file','y'); //* possible ? */
+PrintStringInfo('z2d0'+ArgSeparator+'z0',ClassFileName,'file','y'); //* possible ? */
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('s0g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0g2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0g2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2g2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z2g2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2g2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2g2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('u80g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82g2'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80g2'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82g2'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82g2'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160g2'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162g2'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162g2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160g2'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162g2'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162g2'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sum'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'prod'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'mean'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'st_deviation'; // BJ : Not implemented
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'variance'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// --------------------
+// --- Class Max. ---
+// --------------------
+ClassName = 'Max';
+
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPPLUS(IN(1).SZ,IN(2).SZ,IN(1).TP,IN(2).TP))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPPLUS(IN(1).SZ,IN(2).SZ,IN(1).TP,IN(2).TP))',ClassFileName,'file','y');
+
+
+//PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+//PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= FA_SZ_SEL1(IN(1).SZ(1),IN(2).VAL)',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= FA_SZ_SEL2(IN(1).SZ(2),IN(2).VAL)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82g2'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80g2'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82g2'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160g2'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162g2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160g2'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162g2'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+FunctionName = 'max'; // BJ : Done AS : Float_Done
+ // WARNING : Complex case will never be
+ // WARNING : max(x, 2) <=> max(x, 2 * ones(x)) nothing to do with 'r' nor 'c'
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+FunctionName = 'min'; // BJ : Done AS : Float_Done
+ // WARNING : Complex case will never be
+ // WARNING : max(x, 2) <=> max(x, 2 * ones(x)) nothing to do with 'r' nor 'c'
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+// --------------------
+// --- Class Abs. ---
+// --------------------
+ClassName = 'Abs';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_REAL(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'abs'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'real'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+FunctionName = 'imag'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ------------------------
+// --- Class OpDotStar. ---
+// ------------------------
+ClassName = 'OpDotStar';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i160i60'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpDotStar'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpDotSlash'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ------------------------
+// --- Class OpDotHat. ---
+// ------------------------
+ClassName = 'OpDotHat';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpDotHat'; // BJ : Done AS : Float_Done but poor precision
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//NUT verifica l'hat se e' ben annotato. L'input deve essere una matrice quadrata
+FunctionName = 'OpHat'; // BJ : Done AS : Float_Done but poor precision
+ // WARNING : d2d2 / z2z2 / d2z2 / z2d2 Not implemented in Scilab ...
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpDotBackSlash'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogLt'; // BJ : Done AS : Float_Done
+ // WARNING : Complex cases are useless.
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogLe'; // BJ : Done AS : Float_Done
+ // WARNING : Complex cases are useless.
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogGt'; // BJ : Done AS : Float_Done
+ // WARNING : Complex cases are useless.
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogGe'; // BJ : Done AS : Float_Done
+ // WARNING : Complex cases are useless.
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// ----------------------
+// --- Class OpLogEq. ---
+// ----------------------
+ClassName = 'OpLogEq';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MIN_REAL(IN(1).TP,IN(2).TP)',ClassFileName,'file','y'); //RNU
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPDOTSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('g0g0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('g0g0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('g2g0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('g2g0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('g0g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('g0g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+//mixed types
+PrintStringInfo('c2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('c0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('c2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80d0'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160d0'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('d0i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('d0u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('d0i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpLogEq'; // BJ : Done AS : Float_Done
+ // WARNING : Unable to generate g2 nor g0 code ...
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogNe'; // BJ : Done AS : Float_Done
+ // WARNING : Unable to generate g2 nor g0 code ...
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogAnd'; // AS : Double and Float_Done
+ // ERROR : z0z0OpLogAndz0 -> z0z0OpLogAndd0
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpLogOr'; // AS : Double and Float_Done
+ // ERROR : z0z0OpLogAndz0 -> z0z0OpLogAndd0
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class OpStar. ---
+// ---------------------
+ClassName = 'OpStar';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPSTAR(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u80i80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u80u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u80i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i80u80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80u80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i80u160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i80i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u160u80'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160i80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160u80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160i80'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160u160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u82u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u82i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i82u80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82u160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i82i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u162u80'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162i80'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162u80'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i80'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162u160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u80u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u80i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i80u82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i80u162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i80i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u160u82'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u160i82'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u82u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u82i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i82u82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82u162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i82i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u162u82'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162i82'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162u82'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i82'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162u162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82i82'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u82u162'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u82i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i82u82'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82u162'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i82i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u162u82'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162i82'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162u82'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162i82'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162u162'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpStar'; // BJ : Done AS : Float_Done
+
+
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+//NUT vedi che la opstar non funziona quando faccio scalare*matrice. o matrice*scalare.
+//NUT la lista delle funzioni disponibili e' identica a quella della classe 3.
+
+
+// ---------------------
+// --- Class OpSlash. ---
+// ---------------------
+ClassName = 'OpSlash';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPSLASH(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPSLASH(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+
+FunctionName = 'OpSlash'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class OpApex. ---
+// ---------------------
+ClassName = 'OpApex';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpApex'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'OpDotApex'; // BJ : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ---------------------
+// --- Class IsNan. ---
+// ---------------------
+ClassName = 'IsNan';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_REAL(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+FunctionName = 'isnan'; // BJ : Done AS : Float_Done
+ // ERROR : z2isnanz2 must be z2isnand2 // z0isnanz0 must be z0isnand0
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class OpPlus. ---
+// ---------------------
+ClassName = 'OpPlus';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPPLUS(IN(1).SZ,IN(2).SZ,IN(1).TP,IN(2).TP))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPPLUS(IN(1).SZ,IN(2).SZ,IN(1).TP,IN(2).TP))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('g0g0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('g2g0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('g0g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpPlus'; // BJ : Done AS : Float_Done
+ // ERROR : Strings are not correctly allowed.
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+// ----------------------
+// --- Class OpMinus. ---
+// ----------------------
+ClassName = 'OpMinus';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPMINUS(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPMINUS(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+
+FunctionName = 'OpMinus'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class OpRc. ---
+// -------------------
+ClassName = 'OpRc';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_ADD(IN(1).SZ(2),IN(2).SZ(2))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types considered
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('c0c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('z0z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('z0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpRc'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class OpCc. ---
+// -------------------
+ClassName = 'OpCc';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_ADD(IN(1).SZ(1),IN(2).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types considered
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('c0c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('z0z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('z0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpCc'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// -------------------
+// --- Class cat. ---
+// -------------------
+ClassName = 'cat';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(2).TP,IN(3).TP)',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= FA_ADD(IN(2).SZ(1),IN(3).SZ(1))',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= FA_ADD(IN(2).SZ(2),IN(3).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_ROW_COLUMN_CAT(IN(1).VAL,IN(2).SZ(1),IN(3).SZ(1)))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_ROW_COLUMN_CAT(IN(1).VAL,IN(2).SZ(2),IN(3).SZ(2)))',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= FA_SZ_ROW_COLUMN_CAT(IN(1).VAL,IN(2).SZ(1),IN(3).SZ(1))',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= FA_SZ_ROW_COLUMN_CAT(IN(1).VAL,IN(2).SZ(2),IN(3).SZ(2))',ClassFileName,'file','y');
+
+
+// --- Function List Class. ---
+//NUT: no mixed data types considered
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d2d2' +ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0u82u82' +ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('d0u162u162' +ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('d0i82i82' +ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('d0i162i162' +ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+
+PrintStringInfo('c0c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('z0z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('u80u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('z0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cat'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Find. ---
+// -------------------
+ClassName = 'Find';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MAX(FA_MUL(IN(1).SZ(1),IN(1).SZ(2)),''1'')',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MAX(FA_MUL(IN(1).SZ(1),IN(1).SZ(2)),''1'')',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(FA_MIN( IN(2).VAL ,FA_MUL(IN(1).SZ(1),IN(1).SZ(2))) ,IN(2).TP)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(FA_MIN( IN(2).VAL ,FA_MUL(IN(1).SZ(1),IN(1).SZ(2))) ,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SZ_FROM_VAL(FA_MIN( IN(2).VAL ,FA_MUL(IN(1).SZ(1),IN(1).SZ(2))) ,IN(2).TP)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160u160',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80i80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i60i60',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80u80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160u160',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80i80',ClassFileName,'file','y');
+PrintStringInfo('i160i60'+ArgSeparator+'i60i60',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'find'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Length. ---
+// ---------------------
+ClassName = 'Length';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('g0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('g0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'length'; // AS : done AS : Float_Done
+ // warning for string input , the length is +1 than scilab because
+ // in C we must take in account the ending '\0'
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'type'; // AS : done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Size. ---
+// -------------------
+ClassName = 'Size';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_REAL(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''2''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_REAL(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_REAL(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_REAL(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('d2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'size'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Return. ---
+// ---------------------
+ClassName = 'Return';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 0',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo(ArgSeparator,ClassFileName,'file','y');
+
+//NUT anche se metto Return funziona bene comunque! cerca di capire il motivo.
+//NUT limited use to zero in and out args only.
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'return';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ----------------------
+// --- Class OpColon. ---
+// ----------------------
+ClassName = 'OpColon';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MIN_REAL(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+
+
+
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(FA_ADD(FA_SUB(FA_REAL(IN(2).VAL,IN(2).TP),FA_REAL(IN(1).VAL,IN(1).TP)),''1''),FA_TP_REAL(IN(2).TP))',ClassFileName,'file','y');
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MIN_REAL(IN(1).TP,FA_TP_MIN_REAL(IN(2).TP,IN(3).TP))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(FA_ADD(FA_DIV(FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REAL(IN(1).VAL, IN(1).TP)),FA_REAL(IN(2).VAL,IN(2).TP)),''1''),FA_TP_REAL(IN(3).TP))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+
+
+PrintStringInfo('s0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0z0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0c0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('c0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('c0c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('c0s0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('d0z0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('z0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('z0z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('z0d0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0c0c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z0z0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0s0c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0c0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0c0c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('c0s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('c0c0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('c0s0c0'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0z0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0z0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('z0d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('z0z0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('z0d0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpColon'; // AS : done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ----------------------
+// --- Class IsEmpty. ---
+// ----------------------
+ClassName = 'IsEmpty';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'isempty';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ----------------------
+// --- Class Trace. ---
+// ----------------------
+ClassName = 'Trace';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'trace'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//NUT det is a little bit complex but for the moment we assume that
+//NUT that det works as trace function.
+FunctionName = 'det'; // AS : Done AS : Float_Done
+
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------
+// --- Class OpIns. ---
+// --------------------
+ClassName = 'OpIns';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s2s0s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s0s0s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s0s2s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s0s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s2s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s0s2s2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s0s2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s2s2'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('d2d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d0d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d0d2d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d2d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d0d2d2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d0d2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d2d2'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('c2s0c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2c2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s0s0c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s0s2c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s0c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s2c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s0s2c2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s0c2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s2c2'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('z2d0z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2z2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d0d0z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d0d2z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d0z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d2z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d0d2z2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d0z2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d2z2'+ArgSeparator,ClassFileName,'file','y');
+
+//Mixed input arguments
+PrintStringInfo('s2s0c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2c2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s0s0c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s0s2c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s0c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s2c0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s0s2c2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s0c2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2s2s2c2'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('d2d0z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2z2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d0d0z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d0d2z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d0z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d2z0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d0d2z2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d0z2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2d2d2z2'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('c2s0s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s0s0s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s0s2s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s0s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s2s0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s0s2s2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s0s2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('c2s2s2s2'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('z2d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d0d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d0d2d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d2d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d0d2d2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d0d2'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('z2d2d2d2'+ArgSeparator,ClassFileName,'file','y');
+
+// Hypermatrix management
+PrintStringInfo('d3d0d0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d3d0d0d0d0'+ArgSeparator,ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpIns'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------
+// --- Class OpExt. ---
+// --------------------
+ClassName = 'OpExt';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_MUL(IN(2).SZ(1),IN(2).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_MUL(IN(2).SZ(1),IN(2).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(3).SZ(1),IN(3).SZ(2))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_MUL(IN(2).SZ(1),IN(2).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(3).SZ(1),IN(3).SZ(2))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s2s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('c2s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c2s2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('z2d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z2d2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// Hypermatrix Management
+PrintStringInfo('s3s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d3d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d3d0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d3s0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpExt'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Disp. ---
+// -------------------
+ClassName = 'Disp';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('g0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'',ClassFileName,'file','y');
+
+PrintStringInfo('d3'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'disp'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class String ---
+// -------------------
+ClassName = 'String';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(IN.SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(IN.SZ)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('g0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'g0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'string'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ----------------------
+// --- Class OpEqual. ---
+// ----------------------
+ClassName = 'OpEqual';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(IN(1).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(2).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_SZ_1(IN(2).SZ)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SZ_2(IN(2).SZ)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('g0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+//NUT per ora non considero le equal con nin != 1
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpEqual'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// --------------------
+// --- Class Mopen. ---
+// --------------------
+ClassName = 'Mopen';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2'+ArgSeparator+'f0',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'f0s0',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'f0d0',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'f0',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'f0s0',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'f0d0',ClassFileName,'file','y');
+PrintStringInfo('g2g2s0'+ArgSeparator+'f0s0',ClassFileName,'file','y');
+PrintStringInfo('g2g2s0'+ArgSeparator+'f0d0',ClassFileName,'file','y');
+PrintStringInfo('g2g2d0'+ArgSeparator+'f0s0',ClassFileName,'file','y');
+PrintStringInfo('g2g2d0'+ArgSeparator+'f0d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'mopen';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Mput. ---
+// -------------------
+ClassName = 'Mput';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''i''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('s2g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d0g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('d2g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('u80g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('u82g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('i80g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('i82g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('u160g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('u162g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('i160g2f0'+ArgSeparator,ClassFileName,'file','y');
+PrintStringInfo('i162g2f0'+ArgSeparator,ClassFileName,'file','y');
+
+PrintStringInfo('s0g2f0'+ArgSeparator+'i0',ClassFileName,'file','y'); //NUT la mput e' strana
+PrintStringInfo('s2g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('d0g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('d2g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('u80g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('u82g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('i80g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('i82g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('u160g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('u162g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('i160g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+PrintStringInfo('i162g2f0'+ArgSeparator+'i0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'mput';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Mget. ---
+// -------------------
+ClassName = 'Mget';
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_USER',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_RTMAX(FA_SZ_FROM_VAL(IN(1).VAL,IN(1).TP))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0g2f0'+ArgSeparator+'s0',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('s0g2f0'+ArgSeparator+'d0',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('d0g2f0'+ArgSeparator+'s0',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('d0g2f0'+ArgSeparator+'d0',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('s0g2f0'+ArgSeparator+'s2',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('s0g2f0'+ArgSeparator+'d2',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('d0g2f0'+ArgSeparator+'s2',ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('d0g2f0'+ArgSeparator+'d2',ClassFileName,'file','y'); //NUT da chiarire
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'mget';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Mclose. ---
+// ---------------------
+ClassName = 'Mclose';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 0',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''i''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('f0'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('f0'+ArgSeparator+'i0',ClassFileName,'file','y'); //NUT da chiarire
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'mclose';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Mseek. ---
+// ---------------------
+ClassName = 'Mseek';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('s0f0'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('s0f0g2'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+
+PrintStringInfo('d0'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+PrintStringInfo('d0f0'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+
+
+PrintStringInfo('d0f0g2'+ArgSeparator,ClassFileName,'file','y'); //NUT da chiarire
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'mseek';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ---------------------
+// --- Class Convol. ---
+// ---------------------
+ClassName = 'Convol';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SUB(FA_ADD(IN(1).SZ(2),IN(2).SZ(2)),''1'')',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(2).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SUB(FA_ADD(IN(1).SZ(2),IN(2).SZ(2)),''1'')',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(FA_TP_MAX(IN(1).TP,IN(2).TP),IN(3).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(2).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_MAX(FA_TP_MAX(IN(1).TP,IN(2).TP),IN(3).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SUB(FA_ADD(IN(1).SZ(2),IN(2).SZ(2)),''1'')',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0z0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2c2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0c0'+ArgSeparator+'c0c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0z0'+ArgSeparator+'z0z0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s2s0'+ArgSeparator+'s2s0',ClassFileName,'file','y');
+PrintStringInfo('d0d2d0'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+PrintStringInfo('c0c2c0'+ArgSeparator+'c2c0',ClassFileName,'file','y');
+PrintStringInfo('z0z2z0'+ArgSeparator+'z2z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2s2'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2c2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+//added combination
+
+PrintStringInfo('d2d0'+ArgSeparator+'d0d2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z0z2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z0z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z0z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'convol'; // AS : done except 2 ouputs cases and 3 inputs cases AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class IFFT. ---
+// -------------------
+ClassName = 'IFFT';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+//Was FA_TP_USER
+//Cause some trouble if user specify some precision and if input(and also output) is complex.
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y'); //FOR INRIA changed from IN(1).TP to FA_TP_USER
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'ifft'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ------------------
+// --- Class FFT. ---
+// ------------------
+ClassName = 'FFT';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// scilab2c doesn't handle multidimensionnal Fft
+
+//PrintStringInfo('s0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+//PrintStringInfo('d0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('s0s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+//PrintStringInfo('d0d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+//PrintStringInfo('c0s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+//PrintStringInfo('z0d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+//PrintStringInfo('s2s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+//PrintStringInfo('d2d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('s2s0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+//PrintStringInfo('d2d0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+//PrintStringInfo('c2s0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+//PrintStringInfo('z2d0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+//PrintStringInfo('s0s0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+//PrintStringInfo('d0d0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('s0s0s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+//PrintStringInfo('d0d0d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+//PrintStringInfo('c0s0s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+//PrintStringInfo('z0d0d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+//PrintStringInfo('s2s0s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+//PrintStringInfo('d2d0d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('s2s0s0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+//PrintStringInfo('d2d0d0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+//PrintStringInfo('c2s0s0s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+//PrintStringInfo('z2d0d0d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+//NUT non metto tutte le combinazioni ma prima cerco di capire cosa mi offre INRIA
+//NUT come libreria a disposizione.
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'fft'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -----------------------
+// --- Class FFTShift. ---
+// -----------------------
+ClassName = 'FFTShift';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0g2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0g2'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2g2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2g2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'fftshift'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// --------------------
+// --- Class Meanf. ---
+// --------------------
+ClassName = 'Meanf';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP, IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP, IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_SEL1(IN(1).SZ(1),IN(3).VAL)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_SEL2(IN(1).SZ(2),IN(3).VAL)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2s2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2d2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+//
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+//
+PrintStringInfo('s0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s0c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('d0z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('c0c0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z0z0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2z2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2c2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2z2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'meanf'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'variancef';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'stdevf'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------
+// --- Class Frmag. ---
+// --------------------
+ClassName = 'Frmag';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(2).VAL',ClassFileName,'file','y');
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(2).VAL',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(2).VAL',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).VAL',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).VAL',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(3).VAL',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2d0'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0d0'+ArgSeparator+'d0d0',ClassFileName,'file','y');
+
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+PrintStringInfo('s2s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2s0'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('s0s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0s0s0'+ArgSeparator+'s0s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'frmag';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// ------------------
+// --- Class Lev. ---
+// ------------------
+ClassName = 'Lev';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SUB(FA_ADD(IN(1).SZ(1),IN(1).SZ(2)),''2'')',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SUB(FA_ADD(IN(1).SZ(1),IN(1).SZ(2)),''2'')',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SUB(FA_ADD(IN(1).SZ(1),IN(1).SZ(2)),''2'')',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= FA_SUB(FA_ADD(IN(1).SZ(1),IN(1).SZ(2)),''2'')',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2s0s2',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d0d2',ClassFileName,'file','y');
+
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2c0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2c0c2',ClassFileName,'file','y');
+
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2z0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2z0z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'lev'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// --------------------------
+// --- Class OpBackSlash. ---
+// --------------------------
+ClassName = 'OpBackSlash';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP) ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OPBACKSLASH(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OPBACKSLASH(IN(1).SZ,IN(2).SZ))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+PrintStringInfo('u80u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u160u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i80i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('i160i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('c0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+PrintStringInfo('c0s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('s0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('s2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c0'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('z0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('z0d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'OpBackSlash';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -----------------------
+// --- Class Cepstrum. ---
+// -----------------------
+ClassName = 'Cepstrum';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP) ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_MUL(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('s0s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s0c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('s2c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'Cepstrum';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Spec. ---
+// -------------------
+ClassName = 'Spec';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_COMPLEX(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= FA_TP_COMPLEX(IN(1).TP)',ClassFileName,'file','y'); //FOR INRIA FA_TP_MAX NEEDS 2 Input args
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_TP_COMPLEX(IN(1).TP)',ClassFileName,'file','y'); //FOR INRIA FA_TP_MAX NEEDS 2 Input args
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+PrintStringInfo('s0'+ArgSeparator+'c0c0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'z0z0',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0c0',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0z0',ClassFileName,'file','y');
+
+PrintStringInfo('s2'+ArgSeparator+'s2s2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'spec'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class Part. ---
+// -------------------
+ClassName = 'Part';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_RTMAX(IN(1).SZ(2))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('g2s0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g2d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g2s2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g2d2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'part'; // to code
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -----------------------
+// --- Class Strindex. ---
+// -----------------------
+ClassName = 'Strindex';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_RTMAX(IN(1).SZ(2))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('g2g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strindex'; // to code
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -----------------------
+// --- Class StrSubSt. ---
+// -----------------------
+//ClassName = 'StrSubSt';
+
+// --- Class Annotation. ---
+//PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+//ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+//PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+//PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= FA_SZ_RTMAX(FA_MUL(IN(1).SZ(2),IN(3).SZ(2)))',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//NUT: no mixed data types
+//ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+//PrintStringInfo('g2g2g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+//FunctionName = 'strsubst'; // to code
+//PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+//INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+//INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+// ------------------
+// --- Class Expm. ---
+// ------------------
+ClassName = 'Expm';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'expm'; // AS : Done AS : Float_Done
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---Functions for Scilab-arduino ----
+//------------------------------------
+
+
+//------------------------------------
+//---- Class cmd_digital_out ---------
+//------------------------------------
+ClassName = 'cmd_digital_out';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('d0d0u80'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_digital_out';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_digital_in ----------
+//------------------------------------
+ClassName = 'cmd_digital_in';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_digital_in';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cmd_analog_out ----------
+//------------------------------------
+ClassName = 'cmd_analog_out';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('d0d0u80'+ArgSeparator+'',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_analog_out';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cmd_analog_in -----------
+//------------------------------------
+ClassName = 'cmd_analog_in';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_analog_in';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_dcmotor_setup -------
+//------------------------------------
+ClassName = 'cmd_dcmotor_setup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_dcmotor_setup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cmd_dcmotor_run -------
+//------------------------------------
+ClassName = 'cmd_dcmotor_run';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('d0d0i160'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_dcmotor_run';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//---Class cmd_servo_attach.---
+ClassName = 'cmd_servo_attach';
+
+//----Class Annotation.----
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+//---Function List Class.-----
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_servo_attach';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//---Class cmd_servo_detach.---
+ClassName = 'cmd_servo_detach';
+
+//----Class Annotation.----
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+//---Function List Class.-----
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_servo_detach';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//---Class cmd_servo_move.---
+ClassName = 'cmd_servo_move';
+
+//----Class Annotation.----
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+//---Function List Class.-----
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_servo_move';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_analog_in_volt -----------
+//------------------------------------
+ClassName = 'cmd_analog_in_volt';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''s''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_analog_in_volt';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_i2c_dev -----------
+//------------------------------------
+ClassName = 'cmd_i2c_dev';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_i2c_dev';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class cmd_i2c_write -----------
+//------------------------------------
+ClassName = 'cmd_i2c_write';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''s''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_i2c_write';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_i2c_read -----------
+//------------------------------------
+ClassName = 'cmd_i2c_read';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''s''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_i2c_read';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_i2c_read_register -----------
+//------------------------------------
+ClassName = 'cmd_i2c_read_register';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_i2c_read_register';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class cmd_i2c_write_register -----------
+//------------------------------------
+ClassName = 'cmd_i2c_write_register';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''s''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u80d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_i2c_write_register';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class Sleep -------------------
+
+//------------------------------------
+ClassName = 'sleep';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sleep';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class cmd_analog_out_volt ----------
+//------------------------------------
+ClassName = 'cmd_analog_out_volt';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('d0d0s0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_analog_out_volt';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cmd_dcmotor_release -------
+//------------------------------------
+ClassName = 'cmd_dcmotor_release';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cmd_dcmotor_release';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---Functions for AVR ---------------
+//------------------------------------
+
+
+//------------------------------------
+//---- Class AVRDigitalSetup ---------
+//------------------------------------
+ClassName = 'AVRDigitalSetup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRDigitalSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class AVRDigitalPortSetup ---------
+//------------------------------------
+ClassName = 'AVRDigitalPortSetup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRDigitalPortSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+
+//------------------------------------
+//---- Class AVRDigitalOut -----------
+//------------------------------------
+ClassName = 'AVRDigitalOut';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRDigitalOut';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class AVRDigitalOut -----------
+//------------------------------------
+ClassName = 'AVRDigitalIn';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRDigitalIn';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class AVRADCSetup -----------
+//------------------------------------
+ClassName = 'AVRADCSetup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRADCSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class AVRReadADC -----------
+//------------------------------------
+ClassName = 'AVRReadADC';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRReadADC';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class AVRPWM0Setup -------------
+//------------------------------------
+ClassName = 'AVRPWM0Setup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRPWM0Setup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class AVRPWM2Setup -------------
+//------------------------------------
+ClassName = 'AVRPWM2Setup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRPWM2Setup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class AVRPWM1Setup -------------
+//------------------------------------
+ClassName = 'AVRPWM1Setup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRPWM1Setup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class AVRPWM0SetDuty -----------
+//------------------------------------
+ClassName = 'AVRPWM0SetDuty';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRPWM0SetDuty';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class AVRPWM2SetDuty -----------
+//------------------------------------
+ClassName = 'AVRPWM2SetDuty';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRPWM2SetDuty';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class AVRPWM1SetDuty -----------
+//------------------------------------
+ClassName = 'AVRPWM1SetDuty';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRPWM1SetDuty';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+//------------------------------------
+//---- Class AVRTimerInit -----------
+//------------------------------------
+ClassName = 'AVRTimerSetup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRTimerSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+//------------------------------------
+//---- Class AVRGetTimerValue -----------
+//------------------------------------
+ClassName = 'AVRGetTimerValue';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRGetTimerValue';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class AVRSleep -----------
+//------------------------------------
+ClassName = 'AVRSleep';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRSleep';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class AVRUARTSetup -----------
+//------------------------------------
+ClassName = 'AVRUARTSetup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRUARTSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class AVRUARTTransmit -----------
+//------------------------------------
+ClassName = 'AVRUARTTransmit';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('g0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//
+//PrintStringInfo('d2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRUARTTransmit';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+
+//------------------------------------
+//---- Class AVRUARTReceiveChar -----------
+//------------------------------------
+ClassName = 'AVRUARTReceiveChar';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 0',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('d0d0d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d0d0u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'AVRUARTReceiveChar';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class RPI_DigitalSetup --------
+//------------------------------------
+ClassName = 'RPI_DigitalSetup';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_DigitalSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_DigitalOut';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_HardPWMWrite';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_DigitalIn -----------
+//------------------------------------
+ClassName = 'RPI_DigitalIn';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_DigitalIn';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_DelayMilli ----------
+//------------------------------------
+ClassName = 'RPI_DelayMilli';
+
+//--- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+//--- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_DelayMilli';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_DelayMicro';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_SerialClose';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_SerialFlush';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_HardPWMSetRange';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_HardPWMSetClock';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_HardPWMSetMode';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_GetMilli ----------
+//------------------------------------
+ClassName = 'RPI_GetMilli';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 0',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u32''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_GetMillis';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'RPI_GetMicros';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_SetupSerial ----------
+//------------------------------------
+ClassName = 'RPI_SetupSerial';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_SerialSetup';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_SetupClose ----------
+//------------------------------------
+//ClassName = 'RPI_SetupClose';
+
+// --- Class Annotation. ---
+//PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+//ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+//PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+//PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+//ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+//PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+//FunctionName = 'RPI_SerialClose';
+//PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+//INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+//INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+//FunctionName = 'RPI_SerialFlush';
+//PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+//INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+//INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_SerialSendData ----------
+//------------------------------------
+ClassName = 'RPI_SerialSendData';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80i80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80u160'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80i160'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80s0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+PrintStringInfo('u80u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80i82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80u162'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80i162'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80s2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80d2'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_SerialSendData';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_SerialDataAvail ----------
+//------------------------------------
+ClassName = 'RPI_SerialDataAvail';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''i16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_SerialDataAvail';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+FunctionName = 'RPI_SerialGetChar';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class RPI_ThreadCreate ----------
+//------------------------------------
+ClassName = 'RPI_ThreadCreate';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_ThreadCreate';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RPI_PinISR --------------
+//------------------------------------
+ClassName = 'RPI_PinISR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''i16''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+
+PrintStringInfo(''+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'RPI_PinISR';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class ODE ---------------------
+//------------------------------------
+ClassName = 'ODE';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(1).SZ(2),IN(3).SZ(2))',ClassFileName,'file','y');
+
+//Arguements specified: initial value, start time, end time, ode function
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(3).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).SZ(2)',ClassFileName,'file','y');
+
+//Arguements specified: solver type, initial value, start time, end time, ode function
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(2).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(2).SZ(2),IN(4).SZ(2))',ClassFileName,'file','y');
+
+//Arguements specified: solver type, initial value, start time, end time, ode function
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(2).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(4).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(4).SZ(2)',ClassFileName,'file','y');
+
+//Arguements specified: initial value, start time, end time, relative tolerance,
+// absolute tolerance, ode function
+PrintStringInfo('NIN= 6',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(1).SZ(2),IN(3).SZ(2))',ClassFileName,'file','y');
+
+//Arguements specified: initial value, start time, end time, relative tolerance,
+// absolute tolerance, ode function
+PrintStringInfo('NIN= 6',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(3).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0fn0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0d0fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0d2fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0d2fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('g2d0d0d0fn0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('g2d2d0d0fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d0d2fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('g2d2d0d2fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0d0d0d0fn0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d0d0d0d0fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0d0d2d0d0fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0d2d0d0fn0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'ode';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CUMSUM ---------------------
+//------------------------------------
+ClassName = 'CUMSUM';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82g2'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82g2'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162g2'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162g2'+ArgSeparator+'i162',ClassFileName,'file','y');
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cumsum';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'cumprod';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class TRIU ---------------------
+//------------------------------------
+ClassName = 'TRIU';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80d0'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160d0'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'triu';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+FunctionName = 'tril';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class KRON --------------------
+//------------------------------------
+ClassName = 'KRON';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_MUL(IN(1).SZ(1),IN(2).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(1).SZ(2),IN(2).SZ(2))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'kron';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class FLIPDIM -----------------
+//------------------------------------
+ClassName = 'FLIPDIM';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('i80i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('u160u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+PrintStringInfo('i160i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0d0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82u80u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82i80u80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162i160i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82d0d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82d0d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162d0d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162d0d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'flipdim';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class DIFF -----------------
+//------------------------------------
+ClassName = 'DIFF';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_DIFF(IN(1).SZ,''1'',''0''))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_DIFF(IN(1).SZ,''1'',''0''))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_DIFF(IN(1).SZ,IN(2).VAL,''0''))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_DIFF(IN(1).SZ,IN(2).VAL,''0''))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_DIFF(IN(1).SZ,IN(2).VAL, IN(3).VAL))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_DIFF(IN(1).SZ,IN(2).VAL, IN(3).VAL))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2d0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('u82u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82u80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162u160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2d0d0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u82d0d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u82u80d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('i82d0d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i82u80d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('u162d0d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('u162u160d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+PrintStringInfo('i162d0d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('i162u160d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'diff';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class NORM --------------------
+//------------------------------------
+ClassName = 'NORM';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2d0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('d2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'norm';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CONVSTR --------------------
+//------------------------------------
+ClassName = 'CONVSTR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g0g0'+ArgSeparator+'g0',ClassFileName,'file','y');
+PrintStringInfo('g2g0'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'convstr';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cvCreateImage --------------------
+//------------------------------------
+ClassName = 'CV_CreateImage';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0g2d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_CreateImage';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cvLoadImage --------------------
+//------------------------------------
+ClassName = 'CV_LoadImage';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_LoadImage';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class cvShowImage -------------
+//------------------------------------
+ClassName = 'CV_ShowImage';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2mt0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('mt0'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_ShowImage';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'CV_SaveImage';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_WaitKey --------------
+//------------------------------------
+ClassName = 'CV_WaitKey';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 0',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''u8''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_WaitKey';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_CvtColor -------------
+//------------------------------------
+ClassName = 'CV_CvtColor';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0g2'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_CvtColor';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_GetImgSize -----------
+//------------------------------------
+ClassName = 'CV_GetImgSize';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''2''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_GetImgSize';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_Threshold -----------
+//------------------------------------
+ClassName = 'CV_Threshold';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0d0d0g2'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_Threshold';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_AdaptiveThreshold -----------
+//------------------------------------
+ClassName = 'CV_AdaptiveThreshold';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 6',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0d0g2g2d0d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_AdaptiveThreshold';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_DistanceTransform ----
+//------------------------------------
+ClassName = 'CV_DistanceTransform';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0g2d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_DistanceTransform';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_Blur -----------------
+//------------------------------------
+ClassName = 'CV_Blur';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 6',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0d0d0d0d0g2'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_Blur';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'CV_GaussianBlur';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_MedianBlur -----------------
+//------------------------------------
+ClassName = 'CV_MedianBlur';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_MedianBlur';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_Dilate ---------------
+//------------------------------------
+ClassName = 'CV_Dilate';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 6',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0g2d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+PrintStringInfo('mt0g2d0d0g2d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_Dilate';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+FunctionName = 'CV_Erode';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_Canny ----------------
+//------------------------------------
+ClassName = 'CV_Canny';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0d0d0d0d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+PrintStringInfo('mt0d0d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_Canny';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CV_CornerHarris ----------------
+//------------------------------------
+ClassName = 'CV_CornerHarris';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''mt''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('mt0d0d0d0g2'+ArgSeparator+'mt0',ClassFileName,'file','y');
+PrintStringInfo('mt0d0d0d0'+ArgSeparator+'mt0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'CV_CornerHarris';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class syslin ------------------
+//------------------------------------
+ClassName = 'SYSLIN';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''ss''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_ADD(IN(2).SZ(1),IN(4).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_ADD(FA_ADD(IN(2).SZ(2),IN(3).SZ(2)), ''2'')',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 5',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''ss''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_ADD(IN(2).SZ(1),IN(4).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_ADD(FA_ADD(IN(2).SZ(2),IN(3).SZ(2)), ''2'')',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 6',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''ss''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_ADD(IN(2).SZ(1),IN(4).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_ADD(FA_ADD(IN(2).SZ(2),IN(3).SZ(2)), ''2'')',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2d2d2d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d2d2d2d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d2d2d2d2d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+
+PrintStringInfo('g2d0d0d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d2d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d0d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d2d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+
+PrintStringInfo('g2d0d0d0d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d2d0d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d0d2d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d2d2d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d2d2d2d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+
+PrintStringInfo('g2d0d0d0d0d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d2d0d2d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d0d2d2d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d0d2d2d2d0'+ArgSeparator+'ss2',ClassFileName,'file','y');
+PrintStringInfo('g2d2d2d2d0d2'+ArgSeparator+'ss2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'syslin';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class schur -------------------
+//------------------------------------
+ClassName = 'SCHUR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= FA_SCHUR_TP(IN(2).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_SCHUR_SZ(IN(2).TP,IN(1).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SCHUR_SZ(IN(2).TP,IN(1).SZ(1))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 5',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(5).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(5).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(5).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2d0d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2d2d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2g2'+ArgSeparator+'d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2g2'+ArgSeparator+'d2d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2g2'+ArgSeparator+'d2d2d2d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2g2'+ArgSeparator+'d2d2d2d2d0',ClassFileName,'file','y');
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'schur';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class lqr ---------------------
+//------------------------------------
+ClassName = 'LQR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_LQR(IN(1).VAL))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_1(FA_SZ_LQR(IN(1).VAL))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_SZ_2(FA_SZ_LQR(IN(1).VAL))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SZ_1(FA_SZ_LQR(IN(1).VAL))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('ss2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'lqr';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class lqe ---------------------
+//------------------------------------
+ClassName = 'LQE';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_LQE(IN(1).VAL,IN(1).SZ(1)))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_1(FA_SZ_LQE(IN(1).VAL,IN(1).SZ(1)))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_SZ_1(FA_SZ_LQE(IN(1).VAL,IN(1).SZ(1)))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_SZ_2(FA_SZ_LQE(IN(1).VAL,IN(1).SZ(1)))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('ss2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'lqe';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class obscont -----------------
+//------------------------------------
+ClassName = 'OBSCONT';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OBSCNT(IN(1).VAL,IN(1).SZ(1),IN(1).SZ(2),NOutArg))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OBSCNT(IN(1).VAL,IN(1).SZ(1),IN(1).SZ(2),NOutArg))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_1(FA_SZ_OBSCNT(IN(1).VAL,IN(1).SZ(1),IN(1).SZ(2),NOutArg))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_2(FA_SZ_OBSCNT(IN(1).VAL,IN(1).SZ(1),IN(1).SZ(2),NOutArg))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= ''2''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('ss2d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('ss2d2d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'obscont';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class balanc ------------------
+//------------------------------------
+ClassName = 'BALANC';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'d2d2d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'balanc';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class RCOND -------------------
+//------------------------------------
+ClassName = 'RCOND';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'rcond';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CONVSTR --------------------
+//------------------------------------
+ClassName = 'CONVSTR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+//PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+//PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'convstr';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class STRSUBST --------------------
+//------------------------------------
+ClassName = 'STRSUBST';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2g2g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('g2g2g2g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strsubst';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class STRCMP --------------------
+//------------------------------------
+ClassName = 'STRCMP';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('g2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('g2g2g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strcmp';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class STRREV --------------------
+//------------------------------------
+ClassName = 'STRREV';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strrev';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class STRRCHR --------------------
+//------------------------------------
+ClassName = 'STRRCHR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2g2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strrchr';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class DEC2BIN --------------------
+//------------------------------------
+ClassName = 'DEC2BIN';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(FA_SZ_DEC2BIN(IN(1).VAL),IN(1).SZ(2))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(2).VAL,IN(1).SZ(2))',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i80d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u80d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82d0'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162d0'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82d0'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162d0'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'dec2bin';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class DEC2BASE --------------------
+//------------------------------------
+ClassName = 'DEC2BASE';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(FA_SZ_DEC2BASE(IN(1).VAL,IN(2).VAL),IN(1).SZ(2))',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(IN(2).VAL,IN(1).SZ(2))',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('s0d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('s2d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+PrintStringInfo('d0d0d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('d2d0d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('s0d0d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('s2d0d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'dec2base';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class DEC2OCT --------------------
+//------------------------------------
+ClassName = 'DEC2OCT';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(FA_SZ_DEC2OCT(IN(1).VAL),IN(1).SZ(1))',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'dec2oct';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class DEC2HEX --------------------
+//------------------------------------
+ClassName = 'DEC2HEX';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(FA_SZ_DEC2HEX(IN(1).VAL),IN(1).SZ(1))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'g2',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'dec2hex';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class BIN2DEC --------------------
+//------------------------------------
+ClassName = 'BIN2DEC';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'bin2dec';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class OCT2DEC --------------------
+//------------------------------------
+ClassName = 'OCT2DEC';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('i80'+ArgSeparator+'i80',ClassFileName,'file','y');
+PrintStringInfo('i160'+ArgSeparator+'i160',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u160'+ArgSeparator+'u160',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('i82'+ArgSeparator+'i82',ClassFileName,'file','y');
+PrintStringInfo('i162'+ArgSeparator+'i162',ClassFileName,'file','y');
+PrintStringInfo('u82'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('u162'+ArgSeparator+'u162',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'oct2dec';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class HEX2DEC --------------------
+//------------------------------------
+ClassName = 'HEX2DEC';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'hex2dec';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class BASE2DEC --------------------
+//------------------------------------
+ClassName = 'BASE2DEC';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'base2dec';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ------------------
+// --- Class Cosd. ---
+// ------------------
+ClassName = 'Cosd';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cosd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ------------------
+// --- Class Cotd. ---
+// ------------------
+ClassName = 'Cotd';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cotd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ------------------
+// --- Class Coth. ---
+// ------------------
+ClassName = 'Coth';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'coth';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ------------------
+// --- Class Csc. ---
+// ------------------
+ClassName = 'Csc';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'csc';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// ------------------
+// --- Class Cscd. ---
+// ------------------
+ClassName = 'Cscd';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cscd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// ------------------
+// --- Class Csch. ---
+// ------------------
+ClassName = 'Csch';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'csch';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// --- Class Sec. ---
+// ------------------
+ClassName = 'Sec';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sec';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// ------------------
+// --- Class Secd. ---
+// ------------------
+ClassName = 'Secd';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'secd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// --- Class Sech. ---
+// ------------------
+ClassName = 'Sech';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sech';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class FACTORIAL --------------------
+//------------------------------------
+ClassName = 'FACTORIAL';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'factorial';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+// --- Class Interp1. ---
+// ------------------
+ClassName = 'Interp1';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+// --- Function List Class. ---
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2d2d0g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+//PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+//PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+//PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+//PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'interp1';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class PRIMES --------------------
+//------------------------------------
+ClassName = 'PRIMES';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_PRIMES(IN(1).VAL)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'primes';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class FACTOR --------------------
+//------------------------------------
+ClassName = 'FACTOR';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+//Arguements specified: initial value, start time, time vector, ode function
+PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MUL(FA_SZ_FACTOR(IN(1).VAL),IN(1).SZ(1))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'factor';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+// ////////////////////////////////////////////
+// /////PARTE INTRODOTTA DA ALBERTO MOREA
+// /////////////////////////////////////////////
+// ///////////////////////////////////////////////
+
+// // DOMAINS DEFINITION FOR EVERY CLASS-LEADER IN SCI2C LIBRARY
+
+// // In the following lets:
+// // N,R ,C are the standard sets of integer,real ,complex numbers
+// // I,J c R are intervals of real numbers
+// // {} the empty set
+// // Sel={'r','c'} or {0,1} are the selection sets r=row,c=column
+// // B={T,F} is Boolean set
+// // F is the standard set of File IDentify files
+// // G is the standard alphanumeric string domain
+
+// // For every sci2c function library class we reported
+// // the domains , annotations only for the class-leader
+
+
+// // Example [y1,y2]=Fun(x1,x2,x3) : scilab library function call
+
+// // Domain RxNxSel->{R,R} :the first input element is real number ,the second is integer ,
+// // the last is in the selection set
+// // The first output and the second are real numbers
+
+// // Notice : only default (double) precision are considered for real and complex data
+// // The dimension of the input/output data are provided in the mapping schema
+
+// // d0 = double real scalar
+// // d2 = double real vector or matrix
+// // z0= double complex scalar
+// // z2= double complex vector or matrix
+
+// // ---------------------
+// // --- Class Global. ---
+// // ---------------------
+
+// // DOMAINS G -> R
+
+// //////////////////////////////////
+
+
+// // ---------------------
+// // --- Class Float. ---
+// // ---------------------
+
+// // DOMAINS R -> R
+
+// //////////////////////////////////
+
+
+// // ---------------------
+// // --- Class Double. ---
+// // ---------------------
+
+// // DOMAINS R -> R
+
+// //////////////////////////////////
+
+// // ----------------------------
+// // --- Class FloatComplex. ---
+// // ----------------------------
+
+// // DOMAINS 1)R -> C
+// // 2)C -> C
+
+// /////////////////////////////////
+
+// // ----------------------------
+// // --- Class DoubleComplex. ---
+// // ----------------------------
+
+// // DOMAINS 1) R -> C
+// // 2) C -> C
+
+// /////////////////////////////////
+
+// // ------------------
+// // --- Class Sin. ---
+// // ------------------
+
+// // DOMAINS 1) IcR -> JcR
+// // 2) C -> C
+
+// /////////////////////////////////
+
+// // -------------------
+// // --- Class Atan. ---
+// // -------------------
+
+// // DOMAINS 1) IcR -> JcR
+// // 2) C -> C
+// // 3) RxR -> JcR
+
+// /////////////////////////////////
+
+// // -------------------
+// // --- Class Sqrt. ---
+// // -------------------
+
+// // DOMAINS 1) IcR -> JcR
+// // 2) R -> R
+// // 3) C -> C
+
+ // /////////////////////////////////
+
+// // --------------------
+// // --- Class Zeros. ---
+// // --------------------
+
+// // DOMAINS 1) {}->R
+// // 2) NxN -> R
+// // 3) R -> R
+// // 4) C -> R
+
+// /////////////////////////////////
+
+// // --------------------
+// // --- Class Sum. ---
+// // --------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> C
+// // 3) RxSel -> R
+// // 4) CxSel -> R
+
+ // /////////////////////////////////
+
+// // --------------------
+// // --- Class Abs. ---
+// // --------------------
+
+// // DOMAINS 1) R -> R+
+// // 2) C -> R+
+
+// /////////////////////////////////
+
+// // ------------------------
+// // --- Class OpDotStar. ---
+// // ------------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) CxC -> C
+// // 3) RxC -> C
+// // 4) CxR -> C
+
+// /////////////////////////////////
+
+// // ------------------------
+// // --- Class OpDotHat. ---
+// // ------------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) CxC -> C
+
+// /////////////////////////////////
+
+// // ----------------------
+// // --- Class OpLogEq. ---
+// // ----------------------
+
+// // DOMAINS 1) RxR -> B
+// // 2) CxC -> B
+// // 3) GxG -> B
+
+// /////////////////////////////////
+
+// // ---------------------
+// // --- Class OpStar. ---
+// // ---------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) CxC -> C
+// // 3) RxC -> C
+// // 4) CxR -> C
+
+// /////////////////////////////////
+
+// // ---------------------
+// // --- Class OpApex. ---
+// // ---------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> C
+
+// /////////////////////////////////
+
+// // ---------------------
+// // --- Class OpPlus. ---
+// // ---------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> C
+// // 3) RxR -> R
+// // 4) CxC -> C
+// // 5) RxC -> C
+// // 6) CxR -> C
+// // 7) GxG -> G
+
+// /////////////////////////////////
+
+// // ----------------------
+// // --- Class OpMinus. ---
+// // ----------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> C
+// // 3) RxR -> R
+// // 4) CxC -> C
+// // 5) RxC -> C
+// // 6) CxR -> C
+
+
+// /////////////////////////////////
+
+// // -------------------
+// // --- Class OpRc. ---
+// // -------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) CxC -> C
+
+// /////////////////////////////////
+
+// // -------------------
+// // --- Class OpCc. ---
+// // -------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) CxC -> C
+
+// /////////////////////////////////
+
+// // -------------------
+// // --- Class Find. ---
+// // -------------------
+
+// // DOMAINS 1) R -> N
+// // 2) R -> {N,N}
+// // 3) RxN -> N
+// // 4) RxN ->{N,N}
+
+// /////////////////////////////////
+
+// // ---------------------
+// // --- Class Length. ---
+// // ---------------------
+
+// // DOMAINS 1) R -> N
+// // 2) C -> N
+// // 3) G -> N
+
+// /////////////////////////////////
+
+// // -------------------
+// // --- Class Size. ---
+// // -------------------
+
+// // DOMAINS 1) R -> {N,N}
+// // 2) C -> {N,N}
+// // 3) RxSel -> {N,N}
+// // 4) CxSel -> {N,N}
+
+// /////////////////////////////////
+
+// // ---------------------
+// // --- Class Return. ---
+// // ---------------------
+// // DOMAINS 1) {} -> {}
+
+// /////////////////////////////////
+
+// // ----------------------
+// // --- Class OpColon. ---
+// // ----------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) RxRxR -> R
+
+// /////////////////////////////////
+
+// // ----------------------
+// // --- Class IsEmpty. ---
+// // ----------------------
+
+// // DOMAINS 1) R -> B
+// // 2) C -> B
+
+// /////////////////////////////////
+
+// // ----------------------
+// // --- Class Trace. ---
+// // ----------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> C
+
+// ////////////////////////////////
+
+// // --------------------
+// // --- Class OpIns. ---
+// // --------------------
+
+// // DOMAINS 1) RxRxR -> {}
+// // 2) RxRxRxR -> {}
+// // 3) CxRxR -> {}
+// // 4) CxRxRxC -> {}
+// // 5) CxRxC -> {}
+
+// ////////////////////////////////
+
+// // --------------------
+// // --- Class OpExt. ---
+// // --------------------
+
+// // DOMAINS 1) RxR -> R
+// // 2) CxR -> C
+// // 3) CxRxR -> C
+
+// ////////////////////////////////
+
+// // -------------------
+// // --- Class Disp. ---
+// // -------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> R
+// // 3) G -> R
+
+// ////////////////////////////////
+
+// // ----------------------
+// // --- Class OpEqual. ---
+// // ----------------------
+
+// // DOMAINS 1) R -> R
+// // 2) C -> C
+// // 3) G -> G
+
+// ////////////////////////////////
+
+// // --------------------
+// // --- Class Mopen. ---
+// // --------------------
+
+// // DOMAINS 1) G -> F
+// // 2) GxG -> F
+// // 3) GxGxR -> {F,R}
+// // 4) G -> {F,R}
+// // 5) GxG -> {F,R}
+
+// ////////////////////////////////
+
+// // -------------------
+// // --- Class Mput. ---
+// // -------------------
+
+// // DOMAINS 1) RxGxF -> {}
+// // 2) RxGxF -> N
+
+// ////////////////////////////////
+
+// // -------------------
+// // --- Class Mget. ---
+// // -------------------
+
+// // DOMAINS 1) RxGxF -> N
+
+// ////////////////////////////////
+
+// // ---------------------
+// // --- Class Mclose. ---
+// // ---------------------
+
+// // DOMAINS 1) {} -> N
+// // 2) F -> N
+
+// ////////////////////////////////
+
+// // ---------------------
+// // --- Class Mseek. ---
+// // ---------------------
+
+// // DOMAINS 1) R -> {}
+// // 2) RxF -> {}
+// // 3) RxFxG -> {}
+
+// ////////////////////////////////
+
+// // ---------------------
+// // --- Class Convol. ---
+// // ---------------------
+
+// // DOMAINS 1) RxR->R
+ // 2) CxC->C
+ // 3) RxC->C
+ // 4) CxR->C
+ // 5) RxR->{R,R}
+ // 6) CxC->{C,C}
+ // 7) RxC->{C,C}
+ // 8) CxR->{C,C}
+ // 9) CxC->{C,C}
+ // 10) RxRxR->{R,R}
+ // 11) RxCxC->{C,C}
+ // and so on \85..
+
+
+// ////////////////////////////////
+
+
+// // -------------------
+// // --- Class IFFT. ---
+// // -------------------
+
+// // DOMAINS 1) R->C
+ // 2) C->C
+
+ // ////////////////////////////////
+
+// // ------------------
+// // --- Class FFT. ---
+// // ------------------
+
+// // DOMAINS 1) R->C
+ // 2) RxN->C
+ // 3) C->C
+ // 4) CxN->C
+ // 5) RxNxN->C
+ // 6) CxNxN->C
+ // 7) RxNxNxN->C
+ // 8) CxNxNxN->C
+
+// ////////////////////////////////
+
+// // -----------------------
+// // --- Class FFTShift. ---
+// // -----------------------
+
+// // DOMAINS 1) R->R
+ // 2) C->C
+ // 3) RxR->R
+ // 4) RxG->R
+ // 5) CxR->C
+ // 6) CxG->C
+
+// ////////////////////////////////
+
+// // --------------------
+// // --- Class Meanf. ---
+// // --------------------
+
+// // DOMAINS 1) R->R
+ // 2) C->C
+ // 3) CxSel->C
+ // 4) RxSel->R
+
+// ////////////////////////////////
+
+// // --------------------
+// // --- Class Frmag. ---
+// // --------------------
+
+// // DOMAINS 1) RxN->R
+ // 2) RxN->{R,R}
+ // 3) RxRxN->R
+ // 4) RxRxN->{R,R}
+
+// ////////////////////////////////
+
+// // ------------------
+// // --- Class Lev. ---
+// // ------------------
+
+// // DOMAINS 1) R->R
+ // 2) R->{R,R}
+ // 3) R->{R,R,R}
+ // 4) C->C
+ // 5) C->{C,C}
+ // 6) C->{C,C,C}
+
+// ////////////////////////////////
+
+// // --------------------------
+// // --- Class OpBackSlash. ---
+// // --------------------------
+
+// // DOMAINS 1) RxR->R
+ // 2) CxC->C
+ // 3) RxC->C
+ // 4) CxR->C
+
+// ////////////////////////////////
+
+// // -----------------------
+// // --- Class Cepstrum. ---
+// // -----------------------
+
+// // DOMAINS 1) RxR->C
+ // 2) RxC->C
+
+// ////////////////////////////////
+
+// // -----------------------
+// // --- Class Spec. ---
+// // -----------------------
+
+// // DOMAINS 1) R->R
+ // 2) C->C
+ // 3) R->{R,R}
+ // 4) C->{C,C}
+
+// ////////////////////////////////
+
+// // -------------------
+// // --- Class Part. ---
+// // -------------------
+
+// // DOMAINS 1) GxN->G
+
+// ////////////////////////////////
+
+// // -----------------------
+// // --- Class Strindex. ---
+// // -----------------------
+
+// // DOMAINS 1) GxG->N
+
+// ////////////////////////////////
+
+// // -----------------------
+// // --- Class StrSubSt. ---
+// // -----------------------
+
+// // DOMAINS 1) GxGxG->G
+
+// ////////////////////////////////
+
+
+// ////////////////////////////////
+// ////////////////////////////////
+// // fine parte introdotta alberto
+// ////////////////////////////////
+// ////////////////////////////////
+
+// //RNU se puoi sistema meglio la parte introdotta da al.
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_GenAnnFLFunctions.sci b/2.3-1/macros/ToolInitialization/INIT_GenAnnFLFunctions.sci
new file mode 100644
index 00000000..4f83814d
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_GenAnnFLFunctions.sci
@@ -0,0 +1,28 @@
+function INIT_GenAnnFLFunctions(FunctionName,FunctionsOutDir,ClassName,ReportFile,ExtensionCAnnFun)
+// function INIT_GenAnnFLFunctions(FunctionName,FunctionsOutDir,ClassName,ReportFile,ExtensionCAnnFun)
+// -----------------------------------------------------------------
+// Generates annotation or file list files.
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 17-Jun-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),5,5);
+
+FunctionExtension = ExtensionCAnnFun;
+FunctionFileName = fullfile(FunctionsOutDir,FunctionName+FunctionExtension);
+PrintStringInfo('CLASS: '+ClassName,FunctionFileName,'file','y');
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_GenFileInfo.sci b/2.3-1/macros/ToolInitialization/INIT_GenFileInfo.sci
new file mode 100644
index 00000000..21fe7a72
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_GenFileInfo.sci
@@ -0,0 +1,117 @@
+function FileInfo = INIT_GenFileInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths)
+// function FileInfo = INIT_GenFileInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function creates and initializes FileInfo structure.
+//
+// Input data:
+// WorkingDir: see description in the SCI2CInputParameters.sce file.
+// OutCCCodeDir: see description in the SCI2CInputParameters.sce file.
+// UserSciFilesPaths: see description in the SCI2CInputParameters.sce file.
+//
+// Output data:
+// FileInfo: structure containing all info about SCI2C files.
+//
+// #RNU_RES_E
+// Status:
+// 03-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+
+// -------------------------
+// --- Main directories. ---
+// -------------------------
+FileInfo.SCI2CMainDir = pwd();
+FileInfo.WorkingDir = WorkingDir;
+FileInfo.OutCCCodeDir = OutCCCodeDir;
+FileInfo.UserSciFilesPaths = UserSciFilesPaths;
+
+// -------------------
+// --- .dat Files. ---
+// -------------------
+FileInfo.FileInfoDatFile = fullfile(FileInfo.WorkingDir,'FileInfo.dat');
+FileInfo.SharedInfoDatFile = fullfile(FileInfo.WorkingDir,'SharedInfo.dat');
+FileInfo.GlobalVarFileName = fullfile(FileInfo.WorkingDir,'GBLVAR.dat');
+FileInfo.ASTStackDataFile = fullfile(FileInfo.WorkingDir,'ASTStack.dat');
+
+// ----------------------
+// --- SCI2C Library. ---
+// ----------------------
+FileInfo.SCI2CLibDir = fullfile(FileInfo.WorkingDir,'SCI2CLib');
+
+FileInfo.SCI2CLibSCIAnnDir = fullfile(FileInfo.SCI2CLibDir,'SCIAnnotations');
+FileInfo.SCI2CLibSCIAnnFun = fullfile(FileInfo.SCI2CLibSCIAnnDir,'Functions');
+FileInfo.SCI2CLibSCIAnnCls = fullfile(FileInfo.SCI2CLibSCIAnnDir,'Classes');
+
+FileInfo.SCI2CLibSCIFunListDir = fullfile(FileInfo.SCI2CLibDir,'SCIFunctionList');
+FileInfo.SCI2CLibSCIFLFun = fullfile(FileInfo.SCI2CLibSCIFunListDir,'Functions');
+FileInfo.SCI2CLibSCIFLCls = fullfile(FileInfo.SCI2CLibSCIFunListDir,'Classes');
+
+FileInfo.SCI2CLibCAnnDir = fullfile(FileInfo.SCI2CLibDir,'CAnnotations');
+FileInfo.SCI2CLibCAnnFun = fullfile(FileInfo.SCI2CLibCAnnDir,'Functions');
+FileInfo.SCI2CLibCAnnCls = fullfile(FileInfo.SCI2CLibCAnnDir,'Classes');
+
+FileInfo.SCI2CLibCFunListDir = fullfile(FileInfo.SCI2CLibDir,'CFunctionList');
+FileInfo.SCI2CLibCFLFun = fullfile(FileInfo.SCI2CLibCFunListDir,'Functions');
+FileInfo.SCI2CLibCFLCls = fullfile(FileInfo.SCI2CLibCFunListDir,'Classes');
+
+
+// -----------------------
+// --- USER2C Library. ---
+// -----------------------
+FileInfo.USER2CLibDir = fullfile(FileInfo.WorkingDir,'USER2CLib');
+
+FileInfo.USER2CLibSCIAnnDir = fullfile(FileInfo.USER2CLibDir,'SCIAnnotations');
+FileInfo.USER2CLibSCIAnnFun = fullfile(FileInfo.USER2CLibSCIAnnDir,'Functions');
+FileInfo.USER2CLibSCIAnnCls = fullfile(FileInfo.USER2CLibSCIAnnDir,'Classes');
+
+FileInfo.USER2CLibSCIFunListDir = fullfile(FileInfo.USER2CLibDir,'SCIFunctionList');
+FileInfo.USER2CLibSCIFLFun = fullfile(FileInfo.USER2CLibSCIFunListDir,'Functions');
+FileInfo.USER2CLibSCIFLCls = fullfile(FileInfo.USER2CLibSCIFunListDir,'Classes');
+
+FileInfo.USER2CLibCAnnDir = fullfile(FileInfo.USER2CLibDir,'CAnnotations');
+FileInfo.USER2CLibCAnnFun = fullfile(FileInfo.USER2CLibCAnnDir,'Functions');
+FileInfo.USER2CLibCAnnCls = fullfile(FileInfo.USER2CLibCAnnDir,'Classes');
+
+FileInfo.USER2CLibCFunListDir = fullfile(FileInfo.USER2CLibDir,'CFunctionList');
+FileInfo.USER2CLibCFLFun = fullfile(FileInfo.USER2CLibCFunListDir,'Functions');
+FileInfo.USER2CLibCFLCls = fullfile(FileInfo.USER2CLibCFunListDir,'Classes');
+
+// ----------------------
+// --- Function List. ---
+// ----------------------
+FileInfo.FunctionList.MainDir = fullfile(FileInfo.WorkingDir,'FunctionList');
+FileInfo.FunctionList.SCI2CAvailableCDat = fullfile(FileInfo.FunctionList.MainDir,'SCI2CAvailableC.dat');
+FileInfo.FunctionList.USER2CAvailableCDat = fullfile(FileInfo.FunctionList.MainDir,'USER2CAvailableC.dat');
+FileInfo.FunctionList.ConvertedDat = fullfile(FileInfo.FunctionList.MainDir,'Converted.dat');
+FileInfo.FunctionList.ToBeConvertedDat = fullfile(FileInfo.FunctionList.MainDir,'ToBeConverted.dat');
+FileInfo.FunctionList.FunInfoDatDir = fullfile(FileInfo.FunctionList.MainDir,'FunInfoDatFiles');
+
+// --------------------
+// --- Other Files. ---
+// --------------------
+FileInfo.GeneralReport = fullfile(FileInfo.WorkingDir,'SCI2CGeneralReport.txt');
+
+// -----------------------------------
+// --- C-Style paths and Makefile. ---
+// -----------------------------------
+//-- FileInfo.CStyleSCI2CMainDir = ConvertPathMat2C(FileInfo.SCI2CMainDir,SharedInfo.CCompilerPathStyle);
+//-- FileInfo.CStyleOutCCCodeDir = ConvertPathMat2C(OutCCCodeDir,SharedInfo.CCompilerPathStyle);
+FileInfo.CStyleSCI2CMainDir = pathconvert(FileInfo.SCI2CMainDir, %f, %f, 'u');
+FileInfo.CStyleOutCCCodeDir = pathconvert(OutCCCodeDir, %f, %f, 'u');
+FileInfo.MakefileFilename = fullfile(FileInfo.CStyleOutCCCodeDir,'Makefile');
+
+//-------------------------
+//----Hardware related-----
+//-------------------------
+FileInfo.PeripheralInitListFile = fullfile(FileInfo.WorkingDir,'PeripheralInit.dat');
+FileInfo.SetupListFile = fullfile(FileInfo.WorkingDir,'SetupList.dat');
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_GenLibraries.sci b/2.3-1/macros/ToolInitialization/INIT_GenLibraries.sci
new file mode 100644
index 00000000..eb2c01b7
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_GenLibraries.sci
@@ -0,0 +1,61 @@
+function INIT_GenLibraries(FileInfoDatFile)
+// function INIT_GenLibraries(FileInfoDatFile)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function initializes the SCI2C and USER libraries.
+// For each Scilab function a .ann file is created where the function
+// annotations are listed into it.
+// #RNU_RES_E
+//
+// Input data:
+// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
+//
+// Output data:
+// ---
+//
+// Status:
+// 12-Jun-2007 -- Nutricato Raffaele: Author.
+// 03-Jan-2008 -- Nutricato Raffaele: Changed directory structure.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// --- Load File Info Structure. ---
+clear FileInfo
+load(FileInfoDatFile,'FileInfo');
+
+// --- Load Shared Info Structure. ---
+clear SharedInfo
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+
+PrintStepInfo('Initialize SCI2C and USER2C Libraries.',...
+ FileInfo.GeneralReport,'both');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// -----------------------------------------------------------
+// --- Fills SCI2C and USER2C libs with appropriate files. ---
+// -----------------------------------------------------------
+INIT_FillSCI2LibCDirs(FileInfo,SharedInfo.Extension);
+
+// #RNU_RES_B
+//NUT the following functions will be useful in next release
+//NUT for advanced use of SCI2C
+//INIT_FillSCI2LibSCIDirs(FileInfo,SharedInfo.Extension);
+//INIT_FillUSER2LibCDirs(FileInfo,SharedInfo.Extension);
+//INIT_FillUSER2LibSCIDirs(FileInfo,SharedInfo.Extension);
+// ---------------------------------------------------------------
+// --- End Fills SCI2C and USER2C libs with appropriate files. ---
+// ---------------------------------------------------------------
+// #RNU_RES_E
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci b/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci
new file mode 100644
index 00000000..3c682bf8
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci
@@ -0,0 +1,137 @@
+function SharedInfo = INIT_GenSharedInfo(RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName,CopySciCodeIntoCCode,Target,Board_name)
+// function SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths,...
+// RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function creates and initializes SharedInfo structure.
+//
+// Input data:
+// WorkingDir: see description in the SCI2CInputParameters.sce file.
+// OutCCCodeDir: see description in the SCI2CInputParameters.sce file.
+// UserSciFilesPaths: see description in the SCI2CInputParameters.sce file.
+// RunMode: see description in the SCI2CInputParameters.sce file.
+// UserScilabMainFile: see description in the SCI2CInputParameters.sce file.
+// TotTempScalarVars: see description in the SCI2CInputParameters.sce file.
+// EnableTempVarsReuse: see description in the SCI2CInputParameters.sce file.
+//
+// Output data:
+// SharedInfo: structure containing all info about general parameters
+// used by SCI2C.
+//
+// #RNU_RES_E
+// Status:
+// 03-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+
+//-- SCI2CNInArgCheck(argn(2),8,8);
+
+
+// ------------------------------
+// --- Initialize SharedInfo. ---
+// ------------------------------
+//-- SharedInfo.CCompilerPathStyle = CCompilerPathStyle;
+SharedInfo.RunMode = RunMode;
+SharedInfo.Sci2CLibMainHeaderFName = pathconvert(Sci2CLibMainHeaderFName, %f, %f, 'u');
+
+// #RNU_RES_B
+// File names of the next .sci files to be converted in AST and
+// successively into C.
+// #RNU_RES_E
+SharedInfo.NextSCIFileName = UserScilabMainFile;
+[scipath,funname,sciext] = fileparts(UserScilabMainFile);
+SharedInfo.SCIMainFunName = funname;
+if (Target == 'Arduino')
+ SharedInfo.CMainFunName = 'loop_arduino';
+elseif (RunMode == 'Translate')
+ SharedInfo.CMainFunName = funname;
+else
+ SharedInfo.CMainFunName = 'main';
+end
+SharedInfo.NextSCIFunName = SharedInfo.SCIMainFunName; //NUT: per ora no so cosa metter
+SharedInfo.NextCFunName = SharedInfo.CMainFunName; //NUT: per ora no so cosa metter //NUT: questo viene aggiornato dalla C_Funcall
+SharedInfo.NextSCIFunNumber = 1;
+SharedInfo.NFilesToTranslate = 1;
+
+
+// --- Annotations. ---
+SharedInfo.Annotations.GBLVAR = 'global';
+SharedInfo.Annotations.DataPrec = {'uint8','int8','uint16','int16','int','float','double','IplImage'};
+SharedInfo.Annotations.FUNNIN = 'NIN=';
+SharedInfo.Annotations.FUNNOUT = 'NOUT=';
+SharedInfo.Annotations.FUNTYPE = '''OUT(''+string(SCI2C_nout)+'').TP='''; // Type includes also precision.
+SharedInfo.Annotations.FUNSIZE = '''OUT(''+string(SCI2C_nout)+'').SZ(''+string(SCI2C_nelem)+'')= ''';
+SharedInfo.Annotations.FUNCLASS = 'CLASS: ';
+SharedInfo.Annotations.USERFUN = '//SCI2C: ';
+SharedInfo.Annotations.INTYPE = '''IN(''+string(SCI2C_nout)+'').TP='''; // Type includes also precision.
+SharedInfo.Annotations.INSIZE = '''IN(''+string(SCI2C_nout)+'').SZ(''+string(SCI2C_nelem)+'')= ''';
+
+
+// #RNU_RES_B
+// Note when you execute the following code:
+ // SCI2C_nout=1;
+ // SCI2C_nelem=0;
+ // eval(SharedInfo.Annotations.FUNSIZE)
+ // you get:
+ // O1SIZE[0] =
+
+// Info related to temp variables used in the C code.
+// #RNU_RES_E
+SharedInfo.TotTempScalarVars = TotTempScalarVars;
+SharedInfo.UsedTempScalarVars = 0;
+SharedInfo.TempScalarVarsName = '__Scalar';
+//NUT: verificare se le seguenti due variabili sono utili. Le sto usando in AST2Ccode
+SharedInfo.WorkAreaUsedBytes = WorkAreaSizeBytes;
+SharedInfo.UsedTempScalarVars = WorkAreaSizeBytes;
+// Info related to temp variables used in the AST reading phase.
+SharedInfo.ASTReader.fidAST = -1;
+SharedInfo.ASTReader.UsedTempVars = 0;
+SharedInfo.ASTReader.TempVarsName = '__temp';
+SharedInfo.ASTReader.TempForCntVarsName = '__tmpcnt';
+SharedInfo.ASTReader.TempForValVarsName = '__TmpVal';
+SharedInfo.ASTReader.TempWhileCntVarsName = '__tmpWhilecnt';//NUT: vedi se serve.
+SharedInfo.ASTReader.TempWhileValVarsName = '__TmpWhileVal'; //NUT: vedi se serve
+SharedInfo.ASTReader.EnableTempVarsReuse = EnableTempVarsReuse; //NUT: non so se la devo rimuovere.
+SharedInfo.ASTReader.ReusableTempVars = [];//NUT: to be removed
+
+SharedInfo.NIndent = 0; // Indentation Level.
+SharedInfo.SkipNextEqual = 0; // 1 = the next equal in the AST will not produce C code.
+SharedInfo.SkipNextPrec = 0; // 1 = the next precision specifier in the AST will not produce C code.
+SharedInfo.SkipNextFun = 0;
+SharedInfo.CopySciCodeIntoCCode = CopySciCodeIntoCCode;
+SharedInfo.CountNestedIf = 0; // Number of nested if.
+
+SharedInfo.CFunId.OpColon = 3;
+SharedInfo.CFunId.EqScalar = 4;
+SharedInfo.CFunId.EqMatrix = 5;
+SharedInfo.CFunId.GenFunMtx = 6; // (scalar functions are fall in the scalar equal category.)
+
+SharedInfo = INIT_SharedInfoEqual(SharedInfo);
+// ------------------------
+// --- File Extensions. ---
+// ------------------------
+SharedInfo.Extension.AnnotationFunctions = '.ann'; // Stands for annotation
+SharedInfo.Extension.AnnotationClasses = '.acls'; // Stands for annotation class.
+SharedInfo.Extension.FuncListFunctions = '.lst'; // Stands for list
+SharedInfo.Extension.FuncListClasses = '.lcls'; // Stands for list class
+
+// ------------------------
+// --- Resize Approach. ---
+// ------------------------
+SharedInfo.ResizeApproach = 'NO_RESIZE'; // 'NO_RESIZE', 'RESIZE_ALL', 'RESIZE_TEMP', 'RESIZE_LOCAL', 'RESIZE_GLOBAL', 'REALLOC_ALL_RESIZE_ALL'
+
+SharedInfo.Target = Target; // Specifies code generation target.
+
+SharedInfo.Includelist = list(); //Maintains list of functions being used in code
+ // to add their header files to main function.
+SharedInfo.OpenCVUsed = %F; // Specifies if opencv library is used or not
+
+SharedInfo.Board_name = Board_name; //Specifies Name of Arduino board
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_LoadLibraries.sci b/2.3-1/macros/ToolInitialization/INIT_LoadLibraries.sci
new file mode 100644
index 00000000..28eb34f5
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_LoadLibraries.sci
@@ -0,0 +1,64 @@
+function INIT_LoadLibraries(FileInfoDatFile)
+// function INIT_LoadLibraries(FileInfoDatFile)
+// -----------------------------------------------------------------
+// This function loads the SCI2C and USER libraries.
+//
+// Input data:
+// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
+//
+// Output data:
+// ---
+//
+// Status:
+// 12-Jun-2007 -- Raffaele Nutricato: Author.
+// 03-Jan-2008 -- Raffaele Nutricato: Changed directory structure.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+// --- Load File Info Structure. ---
+clear FileInfo
+load(FileInfoDatFile,'FileInfo');
+
+// --- Load Shared Info Structure. ---
+clear SharedInfo
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+PrintStepInfo('Load SCI2C and USER2C Libraries.',FileInfo.GeneralReport,'both');
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ----------------------------------
+// --- Initialize Function Lists. ---
+// ----------------------------------
+SCI2CAvailableC = [];
+USER2CAvailableC = [];
+Converted = [];
+ToBeConverted(1).SCIFunctionName = SharedInfo.NextSCIFunName;
+ToBeConverted(1).CFunctionName = SharedInfo.NextCFunName;
+
+// --- Read the list of library functions available. ---
+[SCI2CAvailableC,SCI2CNElem] = FL_ExtractFuncList(FileInfo.SCI2CLibCFLFun,FileInfo.SCI2CLibCFLCls,...
+ SharedInfo.Annotations.FUNCLASS,SharedInfo.Extension.FuncListClasses,FileInfo.GeneralReport);
+//disp (SCI2CAvailable);
+[USER2CAvailableC,USER2CNElem] = FL_ExtractFuncList(FileInfo.USER2CLibCFLFun,FileInfo.USER2CLibCFLCls,...
+ SharedInfo.Annotations.FUNCLASS,SharedInfo.Extension.FuncListClasses,FileInfo.GeneralReport);
+
+// --- Save .dat files. ---
+Available = SCI2CAvailableC;
+save(FileInfo.FunctionList.SCI2CAvailableCDat, "Available");
+Available = USER2CAvailableC;
+save(FileInfo.FunctionList.USER2CAvailableCDat, "Available");
+save(FileInfo.FunctionList.ConvertedDat, "Converted");
+save(FileInfo.FunctionList.ToBeConvertedDat, "ToBeConverted");
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_RemoveDirs.sci b/2.3-1/macros/ToolInitialization/INIT_RemoveDirs.sci
new file mode 100644
index 00000000..4d72ab78
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_RemoveDirs.sci
@@ -0,0 +1,74 @@
+function INIT_RemoveDirs(FileInfo,SharedInfoRunMode)
+// function INIT_RemoveDirs(FileInfo,SharedInfoRunMode)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Removes existing directories according to the RunMode
+// specified by the user.
+//
+// Input data:
+// FileInfo: structure containing all info about SCI2C files.
+// SharedInfoRunMode: execution mode specified by the user in
+// the SCI2CInputParameters.sce file.
+//
+// Output data:
+// ---
+//
+// #RNU_RES_E
+// Status:
+// 03-Jan-2008 -- Raffaele Nutricato: Author.
+//
+// Copyright 2008 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ----------------------------------------------------
+// --- Remove previous versions of SCI2C files/dir. ---
+// ----------------------------------------------------
+if (SharedInfoRunMode == 'GenLibraryStructure' | SharedInfoRunMode == 'All')
+ disp('Removing directory: '+FileInfo.WorkingDir);
+ disp('Removing directory: '+FileInfo.OutCCCodeDir);
+ // Remove software<->user interaction.
+ // yesno=input('Are you sure [y/n]?','string');
+ yesno = 'y';
+
+ if (yesno=='y')
+ rmdir(FileInfo.WorkingDir,'s'); // delete WorkingDir if it exists due to previous translations...
+ mdelete(FileInfo.OutCCCodeDir+'/*.h'); // delete .h files generated in previous translations (if any).
+ mdelete(FileInfo.OutCCCodeDir+'/*.c'); // delete .c files generated in previous translations (if any).
+ mdelete(FileInfo.OutCCCodeDir+'/*.cpp'); // delete .cpp files generated in previous translations (if any).
+ mdelete(FileInfo.OutCCCodeDir+'/Makefile'); // delete .h files generated in previous translations (if any).
+ // Note I don't delete includes, interfaces and and src directories to avoid recompiling them every time
+ // a new translation is launched. I only delete source files generated by user.
+
+ else
+ SCI2Cerror('Cannot continue, because you don''t want to delete: '+FileInfo.WorkingDir);
+ SCI2Cerror('Cannot continue, because you don''t want to delete: '+FileInfo.OutCCCodeDir);
+ end
+elseif (SharedInfoRunMode == 'Translate')
+ // #RNU_RES_B
+ //NUT: non cancella le cartelle dei file C creati nella iterazione precedente
+ //NUT: occorre specificarlo bene nel manuale.
+ // #RNU_RES_E
+ disp('Removing directory: '+FileInfo.OutCCCodeDir);
+ // Remove software<->user interaction.
+ // yesno=input('Are you sure [y/n]?','string');
+ yesno = 'y';
+ if (yesno=='y')
+ rmdir(FileInfo.OutCCCodeDir,'s');
+ else
+ SCI2Cerror('Cannot continue, because you don''t want to delete: '+FileInfo.OutCCCodeDir);
+ end
+elseif (SharedInfoRunMode == 'FunCall')
+ //Do nothing
+else
+ disp('Unknown RunMode: ""'+SharedInfoRunMode+'"".');
+ disp('Please check RunMode parameter in the SCI2CInputParameters.sce file');
+ SCI2Cerror(' ');
+end
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/INIT_SCI2C.sci b/2.3-1/macros/ToolInitialization/INIT_SCI2C.sci
new file mode 100644
index 00000000..b6da9bd1
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_SCI2C.sci
@@ -0,0 +1,164 @@
+function [FileInfoDatFile,SharedInfoDatFile] = ...
+ INIT_SCI2C(UserScilabMainFile, UserSciFilesPaths, SCI2COutputDir, RunMode,Target,Board_name)
+// function [FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(SCI2CInputPrmFile)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function initializes the SCI2C tool according
+// to the input parameters recorded in the SCI2CParameters.
+// All info will be stored into FileInfoDatFile.
+//
+// Input data:
+// SCI2CInputPrmFile: name of the .sce file containing input parameters.
+//
+// Output data:
+// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
+// SharedInfoDatFile: it is a buffer containing parameters that are exchanged by the
+// functions of the SCI2C tool.
+// #RNU_RES_E
+// Status:
+// 13-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// #RNU_RES_B
+//NUT: questo file e' da rivedere quando il tool funzionera al 50%
+// #RNU_RES_E
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+//SCI2CNInArgCheck(argn(2),1,1);
+
+// ------------------------------
+// --- Read Input Parameters. ---
+// ------------------------------
+//exec(SCI2CInputPrmFile);
+// #RNU_RES_B
+//NUT: queste variabili sono per usi futuri.
+//NUT: e saranno introdotti nel parameter file.
+// #RNU_RES_E
+WorkAreaSizeBytes = 2000*8; // 2000 locations of double
+// #RNU_RES_B
+// Maximum number of temporary scalar variables that can be used.
+// #RNU_RES_E
+TotTempScalarVars = 20;
+EnableTempVarsReuse = 0; // 0 = Disable; 1 = Enable.
+
+
+// #RNU_RES_B
+//NUT: I prefer to don't show this parameters to the user.
+// --- Directory where all the products of the SCI2C tool will be stored. ---
+// #RNU_RES_E
+//-- [SCI2CResultDir,tmpfile,tmpext] = fileparts(SCI2CInputPrmFile);
+SCI2CResultDir = SCI2COutputDir;
+
+
+WorkingDir = fullfile(SCI2CResultDir,'SCI2CTmpResultsReports');
+// #RNU_RES_B
+// --- Directory where the generated C code will be stored. ---
+// #RNU_RES_E
+OutCCCodeDir = SCI2CResultDir;
+
+// ------------------------------
+// --- Initialize SharedInfo. ---
+// ------------------------------
+//SharedInfo = INIT_GenSharedInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths,...
+// RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName);
+
+//-- FIXME : MainLibHeader and Verbose mode are (?) configurable
+SharedInfo = INIT_GenSharedInfo(RunMode,UserScilabMainFile, ...
+ TotTempScalarVars,EnableTempVarsReuse,"sci2clib.h", %t,Target,Board_name);
+
+// ----------------------------
+// --- Initialize FileInfo. ---
+// ----------------------------
+FileInfo = INIT_GenFileInfo(WorkingDir,OutCCCodeDir,UserSciFilesPaths);
+
+
+PrintStepInfo('SCI2C hArtes/POLIBA Tool!!!',FileInfo.GeneralReport,'stdout');
+
+// ----------------------------------------------------
+// --- Remove previous versions of SCI2C files/dir. ---
+// ----------------------------------------------------
+INIT_RemoveDirs(FileInfo,SharedInfo.RunMode);
+
+// ---------------------------
+// --- Create Directories. ---
+// ---------------------------
+INIT_CreateDirs(FileInfo);
+PrintStepInfo('SCI2C hArtes/POLIBA Tool!!!',FileInfo.GeneralReport,'file');
+
+// ------------------------------
+// --- Initialize GlobalVars. ---
+// ------------------------------
+GlobalVars = [];
+save(FileInfo.GlobalVarFileName, "GlobalVars");
+
+// ----------------------------------
+// --- Initialize Main .dat file. ---
+// ----------------------------------
+//NUT: qui va sistemata.
+clear FunInfo
+//NUT: qua conviene fare una unica funzione.
+FunInfo.SCIFunctionName = SharedInfo.NextSCIFunName;
+FunInfo.CFunctionName = SharedInfo.NextCFunName;
+FunInfo.FunPrecSpecifier = ''; //NUT: si riferiscono al main verifica se sono corrette
+FunInfo.FunTypeAnnot = ''; //NUT: si riferiscono al main verifica se sono corrette
+FunInfo.FunSizeAnnot = ''; //NUT: si riferiscono al main verifica se sono corrette
+FunInfo.NInArg = 0;//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.InArg(1).Name = '';//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.InArg(1).Type = '';//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.InArg(1).Value = %nan;//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.InArg(1).Size(1) = '';//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.InArg(1).Dimension = '';//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.InArg(2).Size(2) = '';//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.NOutArg = 0;//NUT: si riferiscono al main verifica se sono corrette
+FunInfo.OutArg(1).Name = '';
+FunInfo.OutArg(1).Type = '';
+FunInfo.OutArg(1).Size(1) = '';
+FunInfo.OutArg(1).Size(2) = '';
+FunInfo.OutArg(1).Dimension = '';
+FunInfo.PosFirstOutScalar = 0;
+FunInfo.LibTypeInfo = 'USER2C';
+save(fullfile(FileInfo.FunctionList.FunInfoDatDir,FunInfo.CFunctionName+'.dat'), "FunInfo");
+clear FunInfo
+
+// -------------------------------------
+// --- Initialize ASTStack.dat file. ---
+// -------------------------------------
+//NUT: questa struttura deve sostituire le variabili global usate per lo stack
+clear ASTStack
+ASTStack.SCI2CSTACK = 'EMPTYSTACK';
+ASTStack.StackPosition = 1;
+ASTStack.STACKDEDUG = 0;
+save(FileInfo.ASTStackDataFile, "ASTStack");
+clear ASTStack
+
+// ---------------------------------------------
+// --- Generate new versions of SCI2C files. ---
+// ---------------------------------------------
+save(FileInfo.FileInfoDatFile, "FileInfo");
+save(FileInfo.SharedInfoDatFile, "SharedInfo");
+FileInfoDatFile = FileInfo.FileInfoDatFile;
+SharedInfoDatFile = FileInfo.SharedInfoDatFile;
+
+global anscounter; //NUT: just to fix problem with ans variables.
+anscounter = 0;
+
+//--------------------------------------------
+//---Hardware related initialisation----------
+//--------------------------------------------
+if (Target == 'AVR')
+ PeripheralList = list();
+ save(FileInfo.PeripheralInitListFile, 'PeripheralList');
+elseif (Target == 'Arduino')
+ SetupList = list();
+ save(FileInfo.SetupListFile, 'SetupList');
+end
+
+endfunction
+// #RNU_RES_B
+//NUT: quando genero il c della funzione utente devo anche generare il corrispondente file delle includes.
+//NUT: perche' la main non la devo annotare, secondo me occorre annotarla.?
+// #RNU_RES_E
diff --git a/2.3-1/macros/ToolInitialization/INIT_SCI2CLoader.sce b/2.3-1/macros/ToolInitialization/INIT_SCI2CLoader.sce
new file mode 100644
index 00000000..bd07f892
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_SCI2CLoader.sce
@@ -0,0 +1,72 @@
+// -----------------------------------------------------------------
+// Load SCI2C directories and files.
+//
+// Input data:
+// SCI2CLoaderMainDir: path of the directory where this script (main.sce) is stored.
+//
+// Output data:
+// ---
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+SCI2CLoaderMainDir = '..';
+
+// ---------------------------
+// --- Define Directories. ---
+// ---------------------------
+// Directory containing functions related to the management of the Abstract Syntactic tree.
+ASTManagement = 'ASTManagement';
+
+// Directory containing functions that produce the C code.
+CCodeGeneration = 'CCodeGeneration';
+
+// Directory containing functions that perform general tasks.
+GeneralFunctions = 'GeneralFunctions';
+
+// Directory containing functions that perform the initialization of the SCI2C tool.
+ToolInitialization = 'ToolInitialization';
+
+// Directory containing functions that perform the function annotation.
+FunctionAnnotation = 'FunctionAnnotation';
+
+// Directory containing functions that handle symbol table.
+SymbolTable = 'SymbolTable';
+
+// Directory containing functions that handle function lists.
+FunctionList = 'FunctionList';
+
+// Directory containing functions that print SCI2C error messages.
+ErrorMessages = 'ErrorMessages';
+
+
+// -------------------------------
+// --- End Define Directories. ---
+// -------------------------------
+
+// -------------
+// --- getd. ---
+// -------------
+getd(fullfile(SCI2CLoaderMainDir,ASTManagement));
+getd(fullfile(SCI2CLoaderMainDir,CCodeGeneration));
+getd(fullfile(SCI2CLoaderMainDir,GeneralFunctions));
+getd(fullfile(SCI2CLoaderMainDir,ToolInitialization));
+getd(fullfile(SCI2CLoaderMainDir,FunctionAnnotation));
+getd(fullfile(SCI2CLoaderMainDir,SymbolTable));
+getd(fullfile(SCI2CLoaderMainDir,FunctionList));
+getd(fullfile(SCI2CLoaderMainDir,ErrorMessages));
+// -----------------
+// --- End getd. ---
+// -----------------
+
+// -------------
+// --- exec. ---
+// -------------
+exec(fullfile(SCI2CLoaderMainDir,ASTManagement,'%program_p.sci'));
+// -----------------
+// --- End exec. ---
+// -----------------
diff --git a/2.3-1/macros/ToolInitialization/INIT_SharedInfoEqual.sci b/2.3-1/macros/ToolInitialization/INIT_SharedInfoEqual.sci
new file mode 100644
index 00000000..690a43f6
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/INIT_SharedInfoEqual.sci
@@ -0,0 +1,43 @@
+function SharedInfo = INIT_SharedInfoEqual(SharedInfo)
+// function SharedInfo = INIT_SharedInfoEqual(SharedInfo)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// This function initializes the SCI2C tool according
+// to the input parameters recorded in the SCI2CParameters.
+// All info will be stored into FileInfoDatFile.
+//
+// Input data:
+// SCI2CInputPrmFile: name of the .sce file containing input parameters.
+//
+// Output data:
+// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
+// SharedInfoDatFile: it is a buffer containing parameters that are exchanged by the
+// functions of the SCI2C tool.
+// #RNU_RES_E
+// Status:
+// 13-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// #RNU_RES_B
+//NUT: verifica se le variabili sotto elencate ti servono davvero.
+//NUT: Sarebbe interessante accorpare tutte le variabili usate per la equal sotto un'unica struttura
+//NUT: per esempio SharedInfo.SkipNextEqual
+// #RNU_RES_E
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+SharedInfo.Equal.Enabled = 0; // 1 means enabled -> we are inside an equal AST block.
+SharedInfo.Equal.NInArg = 0;
+SharedInfo.Equal.InArg(1).Name = '';
+SharedInfo.Equal.NOutArg = 0;
+SharedInfo.Equal.OutArg(1).Name = '';
+SharedInfo.Equal.Lhs = 0;
+SharedInfo.Equal.Nins = 0; // Counts the number of ins found in the lhs of the Equal.
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/ManageNextConversion.sci b/2.3-1/macros/ToolInitialization/ManageNextConversion.sci
new file mode 100644
index 00000000..a1524766
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/ManageNextConversion.sci
@@ -0,0 +1,87 @@
+function FlagContinueTranslation = ManageNextConversion(FileInfoDatFile)
+// function FlagContinueTranslation = ManageNextConversion(FileInfoDatFile)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+//NUT: verifica se update e managenexconversion possono essere integrate in un'unica funzione.
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ---------------------
+// --- Load section. ---
+// ---------------------
+// --- Load File Info Structure. ---
+load(FileInfoDatFile,'FileInfo');
+
+// --- Load Shared Info Structure. ---
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+
+// --- Load ToBeConverted .dat file. ---
+load(FileInfo.FunctionList.ToBeConvertedDat,'ToBeConverted');
+// -------------------------
+// --- End load section. ---
+// -------------------------
+
+FlagContinueTranslation = 0;
+
+// ------------------------------------
+// --- Finalize the current C code. ---
+// ------------------------------------
+C_FinalizeCode(FileInfo,SharedInfo);
+
+// ------------------------------------------------
+// --- Identify the next function to translate. ---
+// ------------------------------------------------
+SharedInfo.NFilesToTranslate = SharedInfo.NFilesToTranslate - 1;
+
+if (SharedInfo.NFilesToTranslate >= 1)
+ // Remove the translated C function from the ToBeConverted list
+ ToBeConverted(1) = [];
+ FlagContinueTranslation = 1;
+ SharedInfo.NextSCIFunName = ToBeConverted(1).SCIFunctionName;
+ SharedInfo.NextCFunName = ToBeConverted(1).CFunctionName;
+ SharedInfo.NextSCIFunNumber = SharedInfo.NextSCIFunNumber + 1;
+ [FlagFound,SharedInfo.NextSCIFileName] = ...
+ SCI2CFindFile(FileInfo.UserSciFilesPaths,SharedInfo.NextSCIFunName+'.sci');
+ if (FlagFound == 0)
+ error(9999, 'Cannot find a scilab file to generate ""'+SharedInfo.NextCFunName+'"".');
+ end
+end
+// ----------------------------------------------------
+// --- End Identify the next function to translate. ---
+// ----------------------------------------------------
+
+
+// ---------------------
+// --- Save section. ---
+// ---------------------
+// --- Save Shared Info Structure. ---
+save(FileInfo.SharedInfoDatFile, "SharedInfo");
+clear SharedInfo
+
+// --- Save ToBeConverted .dat file. ---
+save(FileInfo.FunctionList.ToBeConvertedDat, "ToBeConverted");
+clear ToBeConverted
+
+clear FileInfo
+// -------------------------
+// --- End Save section. ---
+// -------------------------
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/SCI2CInputParameters.sce b/2.3-1/macros/ToolInitialization/SCI2CInputParameters.sce
new file mode 100644
index 00000000..7af3343c
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/SCI2CInputParameters.sce
@@ -0,0 +1,87 @@
+// -----------------------------------------------------------------
+// === hArtes/PoliBa/GAP SCI2C tool ===
+// === Authors: ===
+// === Raffaele Nutricato ===
+// === raffaele.nutricato@tiscali.it ===
+// === Alberto Morea ===
+// === ===
+// === *************** ===
+// === USER PARAMETERS ===
+// === *************** ===
+// === ===
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------------------
+// --- Specify Paths of User Scilab code. ---
+// ------------------------------------------
+UserSciCodeMainDir = 'C:\SCI2CTests\RegressionTests\test999';
+
+// --- Path + filename of the .sci main file of the code to be translated. ---
+// It is the entry point.
+UserScilabMainFile = fullfile(UserSciCodeMainDir,'scilabcode\mainfun.sci');
+
+// --- List of the paths containing the .sci files written by the user. ---
+UserSciFilesPaths = ...
+ [...
+ fullfile(UserSciCodeMainDir,'scilabcode');...
+ ];
+
+// --------------------------
+// --- End Specify paths. ---
+// --------------------------
+
+
+// ----------------------------
+// --- Select the run mode. ---
+// ----------------------------
+//RunMode = 'GenLibraryStructure';
+//RunMode = 'Translate';
+RunMode = 'All';
+
+// --- Select one of the following options. ---
+
+// 'GenLibraryStructure';
+// Generates the library structure and exits. It is very
+// useful when the user wants to manually change the files stored in that structure
+// before running the translation. 'GenLibraryStructure' option forces SCI2C to remove
+// the already existing WorkingDir and OutCCCodeDir directories.
+
+// 'Translate';
+// Performs the translation without generating the library structure. It means that the library
+// structure must be already existing. This is useful when the user doesn't want to spend time
+// to generate again that structure or when he wants to force the SCI2C tool to access to
+// a manually-changed library structure. 'Translate' option forces SCI2C to don't remove
+// the already existing WorkingDir. Only OutCCCodeDir directory will be removed.
+
+// 'All';
+// Performs all the actions listed above.
+
+// --------------------------------
+// --- End Select the run mode. ---
+// --------------------------------
+
+
+// ----------------------------
+// --- Translation Options. ---
+// ----------------------------
+// --- Enable (1) / Disable (0) copy of Scilab code into C code. ---
+// If 1 the Scilab code will be copied into the C code in order to show
+// how each Scilab code line has been translated into C code.
+CopySciCodeIntoCCode = 1;
+
+// --- Select the path style for the C code. ---
+// It can be:
+// windows
+// unix
+// cygwin
+CCompilerPathStyle = 'cygwin';
+
+// --- Path + File name of the main SCI2C library header file.
+Sci2CLibMainHeaderFName = 'C:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\Scilab2C\CFiles\sci2cincludes\sci2clib.h';
+// --------------------------------
+// --- End Translation Options. ---
+// --------------------------------
diff --git a/2.3-1/macros/ToolInitialization/UpdateSCI2CInfo.sci b/2.3-1/macros/ToolInitialization/UpdateSCI2CInfo.sci
new file mode 100644
index 00000000..ed07907f
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/UpdateSCI2CInfo.sci
@@ -0,0 +1,208 @@
+function UpdateSCI2CInfo(FileInfoDatFile)
+// function UpdateSCI2CInfo(FileInfoDatFile)
+// -----------------------------------------------------------------
+// #RNU_RES_B
+// Updates the FileInfo struct according to the new scilab function
+// to be converted in C.
+//
+// Input data:
+// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
+//
+// Output data:
+// ---
+//
+// #RNU_RES_E
+// Status:
+// 13-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+// ---------------------------------
+// --- Load File Info Structure. ---
+// ---------------------------------
+clear FileInfo
+load(FileInfoDatFile,'FileInfo');
+
+// -----------------------------------
+// --- Load Shared Info Structure. ---
+// -----------------------------------
+clear SharedInfo
+load(FileInfo.SharedInfoDatFile,'SharedInfo');
+
+// ---------------------------------------------------
+// --- Extraction of the function name and number. ---
+// ---------------------------------------------------
+funname = SharedInfo.NextSCIFunName;
+funnumber = SharedInfo.NextSCIFunNumber;
+// #RNU_RES_B
+//NUT: sicuro che mi serve questa struttura? SharedInfo.NextSCIFunNumber cioe' il numero della funzione a che serve?
+// #RNU_RES_E
+PrintStepInfo('Start translation of function ""'+funname+'""',...
+ FileInfo.GeneralReport,'both');
+
+// -----------------------------------
+// --- Update File Info structure. ---
+// -----------------------------------
+FileInfo.Funct(funnumber).Name = funname;
+FileInfo.Funct(funnumber).SCIFileName = SharedInfo.NextSCIFileName;
+FileInfo.Funct(funnumber).ASTFileName = fullfile(FileInfo.WorkingDir,funname,funname+'.ast');
+FileInfo.Funct(funnumber).CPass1FileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass1.c');
+FileInfo.Funct(funnumber).PfxP1ForProlFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass1ProlFor');
+FileInfo.Funct(funnumber).PfxP1ForEpilFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass1EpilFor');
+FileInfo.Funct(funnumber).PfxP1WhileProlFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass1ProlWhile');
+FileInfo.Funct(funnumber).PfxP1WhileEpilFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass1EpilWhile');
+FileInfo.Funct(funnumber).CPass1FreeFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass1free.c');
+FileInfo.Funct(funnumber).CPass2FileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_pass2.c');
+FileInfo.Funct(funnumber).Pass1HeaderFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'.h');
+if (SharedInfo.Target == 'Arduino')
+//In case of "Arduino" target, *.cpp files should be generated, not *.c files.
+ FileInfo.Funct(funnumber).FinalCFileName = fullfile(FileInfo.OutCCCodeDir,SharedInfo.NextCFunName+'.cpp');
+else
+ FileInfo.Funct(funnumber).FinalCFileName = fullfile(FileInfo.OutCCCodeDir,SharedInfo.NextCFunName+'.c');
+end
+FileInfo.Funct(funnumber).FinalHeaderFileName = fullfile(FileInfo.OutCCCodeDir,SharedInfo.NextCFunName+'.h');
+FileInfo.Funct(funnumber).CInitVarsFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_initvars.c');
+FileInfo.Funct(funnumber).CDeclarationFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_declarations.c');
+FileInfo.Funct(funnumber).CGblDeclarFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_globaldeclarations.c');
+FileInfo.Funct(funnumber).ReportFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'.rpt');
+FileInfo.Funct(funnumber).LocalVarFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_LOCVAR.dat');
+FileInfo.Funct(funnumber).TempVarFileName = fullfile(FileInfo.WorkingDir,funname,SharedInfo.NextCFunName+'_TMPVAR.dat');
+FileInfo.Funct(funnumber).SCICopyFileName = fullfile(FileInfo.WorkingDir,funname,funname+'_copy.sci');
+
+
+// -------------------------------------
+// --- Update Shared Info structure. ---
+// -------------------------------------
+SharedInfo.NIndent = 0; // Indentation Level. Useful to produce indentated C code.
+SharedInfo.SkipNextEqual = 0; // 1 = the next equal in the AST will not produce C code.
+SharedInfo.SkipNextPrec = 0; // 1 = the next precision specifier in the AST will not produce C code.
+SharedInfo.SkipNextFun = 0; // 1 = the next function in the AST will not produce C code.
+SharedInfo.ASTReader.fidAST = -1;
+SharedInfo.CountNestedIf = 0;
+SharedInfo.CountForTempVars = 0;
+SharedInfo.For.Level = 0;
+SharedInfo.ForExpr.OnExec = 0;
+SharedInfo.ForExpr.IntCntArg = [];
+SharedInfo.ForExpr.MtxValCntArg = [];
+SharedInfo.ForExpr.SclValCntArg = [];
+SharedInfo.ForExpr.OpColonInfoIn1 = '';
+SharedInfo.ForExpr.OpColonInfoIn2 = '';
+SharedInfo.ForExpr.OpColonInfoIn3 = '';
+SharedInfo.ForExpr.AssignmentFun = 0;
+
+SharedInfo.WhileExpr.OnExec = 0;
+SharedInfo.WhileExpr.CondVar = '';
+SharedInfo.WhileExpr.DimCondVar = -1;
+SharedInfo.While.Level = 0;
+//NUT: anche questa sarebbe da inizializzare con una bella funzione.
+
+
+SharedInfo.CFunId.OpColon = 3;
+SharedInfo.CFunId.EqScalar = 4;
+SharedInfo.CFunId.EqMatrix = 5;
+SharedInfo.CFunId.GenFunMtx = 6; // (scalar functions are fall in the scalar equal category.)
+
+SharedInfo = INIT_SharedInfoEqual(SharedInfo);
+
+// Contains the list of the C calls calls made in the current .sci file.
+SharedInfo.CFunctsAlreadyCalled = '_____________'; // Initialization with a dummy name
+
+// ---------------------------------------
+// --- Update Converted Function List. ---
+// ---------------------------------------
+Converted = FL_UpdateConverted(SharedInfo.NFilesToTranslate,FileInfo.FunctionList.ConvertedDat);
+
+// --------------------------------------
+// --- Create the function directory. ---
+// --------------------------------------
+rmdir(fullfile(FileInfo.WorkingDir,funname),'s');
+mkdir(FileInfo.WorkingDir,funname);
+
+// -----------------------------------------
+// --- Initialize Other FileInfo fields. ---
+// -----------------------------------------
+PrintStringInfo(' ',FileInfo.Funct(funnumber).SCICopyFileName,'file','y'); // Cannot use copyfile when the directory is empty!.
+SCI2Ccopyfile(FileInfo.Funct(funnumber).SCIFileName,FileInfo.Funct(funnumber).SCICopyFileName,'overwrite');
+
+FileInfo.Funct(funnumber).SCICopyFileFid = SCI2COpenFileRead(FileInfo.Funct(funnumber).SCICopyFileName);
+// Perform a dummy reading up to the function.
+//NUT: mettimi in una funzione.
+scicopyfid = FileInfo.Funct(funnumber).SCICopyFileFid;
+CPass1FileName = FileInfo.Funct(funnumber).CPass1FileName;
+IndentLevel = SharedInfo.NIndent;
+FoundFunctionKey = 0;
+PrintStringInfo(C_IndentBlanks(IndentLevel)+'/*',CPass1FileName,'file','y');
+PrintStringInfo(C_IndentBlanks(IndentLevel)+' SCI2C: ------------------------------------------------------------------',CPass1FileName,'file','y');
+while (~meof(scicopyfid) & (FoundFunctionKey==0))
+ // Read a line from the scilab file
+ sciline = mgetl(scicopyfid,1);
+ noblkssciline = stripblanks(sciline);
+ if (SCI2Cstrncmps1size('function',noblkssciline))
+ FoundFunctionKey = 1;
+ end
+ PrintStringInfo(C_IndentBlanks(IndentLevel)+' SCI2C: '+sciline,CPass1FileName,'file','y');
+end
+PrintStringInfo(C_IndentBlanks(IndentLevel)+' SCI2C: ------------------------------------------------------------------',CPass1FileName,'file','y');
+PrintStringInfo(C_IndentBlanks(IndentLevel)+'*/',CPass1FileName,'file','y');
+
+// -------------------------
+// --- Initialize Files. ---
+// -------------------------
+PrintStringInfo(' ',FileInfo.Funct(funnumber).CDeclarationFileName,'file','y');
+PrintStringInfo(' ',FileInfo.Funct(funnumber).CGblDeclarFileName,'file','y');
+PrintStringInfo(' ',FileInfo.Funct(funnumber).CInitVarsFileName,'file','y');
+CPass1FreeFileName = FileInfo.Funct(funnumber).CPass1FreeFileName;
+PrintStringInfo(' ',CPass1FreeFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(1)+'/*',CPass1FreeFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(1)+'** --------------------- ',CPass1FreeFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(1)+'** --- Free Section. --- ',CPass1FreeFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(1)+'** --------------------- ',CPass1FreeFileName,'file','y');
+PrintStringInfo(C_IndentBlanks(1)+'*/',CPass1FreeFileName,'file','y');
+
+// -----------------------------------
+// --- Initialize Local/Temp Vars. ---
+// -----------------------------------
+LocalVars = [];
+TempVars = [];
+
+// ------------------------------------
+// --- Determine Default Precision. ---
+// ------------------------------------
+// For the current release only the following approaches are available:
+// 'NO_RESIZE'
+// 'REALLOC_ALL_RESIZE_ALL'
+SharedInfo.DefaultPrecision = ...
+ FA_GetDefaultPrecision(FileInfo.Funct(funnumber).SCICopyFileName,FileInfo.Funct(funnumber).ReportFileName);
+
+// ----------------------------------
+// --- Determine Resize Approach. ---
+// ----------------------------------
+SharedInfo.ResizeApproach = FA_GetResizeApproach(FileInfo.Funct(funnumber).SCICopyFileName,FileInfo.Funct(funnumber).ReportFileName);
+
+// ---------------------
+// --- Save section. ---
+// ---------------------
+// --- Save File Info Structure. ---
+save(FileInfoDatFile, "FileInfo");
+
+// --- Save File Info Structure. ---
+save(FileInfo.SharedInfoDatFile, "SharedInfo");
+
+// --- Save Local/Temp Vars. ---
+save(FileInfo.Funct(funnumber).LocalVarFileName, "LocalVars");
+save(FileInfo.Funct(funnumber).TempVarFileName, "TempVars");
+
+// --- Save Converted .dat file. ---
+save(FileInfo.FunctionList.ConvertedDat, "Converted");
+// -------------------------
+// --- End save section. ---
+// -------------------------
+
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/buildmacros.sce b/2.3-1/macros/ToolInitialization/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/ToolInitialization/doublecomplex.sci b/2.3-1/macros/ToolInitialization/doublecomplex.sci
new file mode 100644
index 00000000..ebeb883c
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/doublecomplex.sci
@@ -0,0 +1,29 @@
+function y = doublecomplex(x)
+// function y = doublecomplex(x)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+if(x==0)
+y = 0*%i;
+else
+y=x+0*%i;
+end
+endfunction
diff --git a/2.3-1/macros/ToolInitialization/floatcomplex.sci b/2.3-1/macros/ToolInitialization/floatcomplex.sci
new file mode 100644
index 00000000..eedae766
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/floatcomplex.sci
@@ -0,0 +1,26 @@
+function y = floatcomplex(x)
+// function y = floatcomplex(x)
+// -----------------------------------------------------------------
+// //NUT: add description here
+//
+// Input data:
+// //NUT: add description here
+//
+// Output data:
+// //NUT: add description here
+//
+// Status:
+// 27-Oct-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),1,1);
+
+y = x+0*%i;
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/ToolInitialization/lib b/2.3-1/macros/ToolInitialization/lib
new file mode 100644
index 00000000..1e49bc31
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/lib
Binary files differ
diff --git a/2.3-1/macros/ToolInitialization/names b/2.3-1/macros/ToolInitialization/names
new file mode 100644
index 00000000..71a724d3
--- /dev/null
+++ b/2.3-1/macros/ToolInitialization/names
@@ -0,0 +1,14 @@
+INIT_CreateDirs
+INIT_FillSCI2LibCDirs
+INIT_GenAnnFLFunctions
+INIT_GenFileInfo
+INIT_GenLibraries
+INIT_GenSharedInfo
+INIT_LoadLibraries
+INIT_RemoveDirs
+INIT_SCI2C
+INIT_SharedInfoEqual
+ManageNextConversion
+UpdateSCI2CInfo
+doublecomplex
+floatcomplex
diff --git a/2.3-1/macros/buildmacros.sce b/2.3-1/macros/buildmacros.sce
new file mode 100644
index 00000000..f02096d9
--- /dev/null
+++ b/2.3-1/macros/buildmacros.sce
@@ -0,0 +1,31 @@
+// This file is released into the public domain
+
+Directories = [ "ASTManagement", ...
+ "CCodeGeneration", ...
+ "ErrorMessages", ...
+ "findDeps", ...
+ "FunctionAnnotation", ...
+ "FunctionList", ...
+ "GeneralFunctions", ...
+ "SymbolTable", ...
+ "ToolInitialization", ...
+ "Hardware/AVR", ...
+ "Hardware/RasberryPi", ...
+ "ImageProcessing", ...
+ "Scilab-Arduino"];
+
+
+current_path_buildmacros = get_absolute_file_path("buildmacros.sce");
+
+for K=1:size(Directories,"*")
+ myfile = current_path_buildmacros + filesep() + Directories(K) + filesep() + "buildmacros.sce";
+ if isfile(myfile) then
+ exec(myfile);
+ end
+end
+
+clear current_path_buildmacros;
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/cb_sci2c_gui.sci b/2.3-1/macros/cb_sci2c_gui.sci
new file mode 100644
index 00000000..7bb0e733
--- /dev/null
+++ b/2.3-1/macros/cb_sci2c_gui.sci
@@ -0,0 +1,223 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Vincent COUVERT
+//
+// 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
+//
+
+// Callback function for SCI2C GUI (See sci2c_gui.sci)
+
+function cb_sci2c_gui
+
+//
+// --- File to convert ---
+//
+if get(gcbo,"tag")=="filebtn" then
+
+ filename = uigetfile("*.sci", pwd(), gettext("Select the file to translate"));
+ if ~isempty(filename) then
+ set(findobj("tag", "fileedit"), "string", filename);
+ end
+
+//
+// --- Sub-functions directory ---
+//
+elseif get(gcbo,"tag")=="subfunsbtn" then
+
+ directory = uigetdir(pwd(), gettext("Select your sub-functions directory"));
+ if ~isempty(directory) then
+ set(findobj("tag", "subfunsedit"), "string", directory);
+ end
+
+//
+// --- Output directory ---
+//
+elseif get(gcbo,"tag")=="outbtn" then
+
+ directory = uigetdir(pwd(), gettext("Select the directory for generated files"));
+ if ~isempty(directory) then
+ set(findobj("tag", "outedit"), "string", directory);
+ end
+
+//
+// --- Run mode option ---
+//
+elseif or(get(gcbo, "tag")==["runradioall","runradiotranslate","runradiogenlib"]) then
+
+ set(findobj("tag", "runradioall"), "value", 0);
+ set(findobj("tag", "runradiotranslate"), "value", 0);
+ set(findobj("tag", "runradiogenlib"), "value", 0);
+
+ set(gcbo, "value", 1);
+
+
+// --- Output format option ---
+
+elseif or(get(gcbo, "tag")==["outformatradiostalone","outformatradioarduino","outformatradioavr","outformatradiorpi"]) then
+
+ set(findobj("tag", "outformatradiostalone"), "value", 0);
+ set(findobj("tag", "outformatradioarduino"), "value", 0);
+ set(findobj("tag", "outformatradioavr"), "value", 0);
+ set(findobj("tag", "outformatradiorpi"), "value", 0);
+ set(gcbo, "value", 1);
+ if get(findobj("tag", "outformatradioarduino"), "value") == 1 then
+ set(findobj("tag", "brdnmType"), "enable", "on");
+ else
+ set(findobj("tag", "brdnmType"), "enable", "off");
+ end
+ //disp("YES")
+ //disp(get(findobj("tag", "brdnmType"), "value"))
+//
+// --- Copy Scilab code into C option ---
+//
+elseif or(get(gcbo, "tag")==["sciintocradioyes","sciintocradiono"]) then
+
+ set(findobj("tag", "sciintocradioyes"), "value", 0);
+ set(findobj("tag", "sciintocradiono"), "value", 0);
+
+ set(gcbo, "value", 1);
+
+//
+// --- Build Tool option ---
+//
+elseif or(get(gcbo, "tag")==["buildtoolradiowin","buildtoolradiounix"]) then
+
+ set(findobj("tag", "buildtoolradiowin"), "value", 0);
+ set(findobj("tag", "buildtoolradiounix"), "value", 0);
+
+ set(gcbo, "value", 1);
+
+//
+// --- Cancel conversion ---
+//
+elseif get(gcbo, "tag")=="cancelbtn" | get(gcbo, "tag")=="close_menu" then
+ delete(findobj("tag", "sci2cfig"));
+
+//
+// --- Launch conversion ---
+//
+elseif get(gcbo, "tag")=="convertbtn" then
+ UserScilabMainFile = get(findobj("tag", "fileedit"), "string");
+
+ UserSciFilesPaths = get(findobj("tag", "subfunsedit"), "string");
+
+// Sci2CLibMainHeaderFName = get(findobj("tag", "headeredit"), "string");
+
+ UserSciCodeMainDir = get(findobj("tag", "outedit"), "string");
+
+ if get(findobj("tag", "runradioall"), "value") == 1 then
+ RunMode = "All";
+ elseif get(findobj("tag", "runradiotranslate"), "value") == 1 then
+ RunMode = "Translate";
+ else
+ RunMode = "GenLibraryStructure";
+ end
+
+ if get(findobj("tag", "outformatradiostalone"), "value") == 1 then
+ Target = "StandAlone";
+ elseif get(findobj("tag", "outformatradioarduino"), "value") == 1 then
+ Target = "Arduino";
+ elseif get(findobj("tag", "outformatradioavr"), "value") == 1 then
+ Target = "AVR";
+ elseif get(findobj("tag", "outformatradiorpi"), "value") == 1 then
+ Target = "RPi";
+ end
+ if get(findobj("tag", "brdnmType"), "value") == 2 then
+ Board_name = "uno"
+ elseif get(findobj("tag", "brdnmType"), "value") == 3 then
+ Board_name = "mega"
+ elseif get(findobj("tag", "brdnmType"), "value") == 4 then
+ Board_name = "mega2560"
+ elseif get(findobj("tag", "brdnmType"), "value") == 5 then
+ Board_name = "nano"
+ elseif get(findobj("tag", "brdnmType"), "value") == 6 then
+ Board_name = "nano328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 7 then
+ Board_name = "micro"
+ elseif get(findobj("tag", "brdnmType"), "value") == 8 then
+ Board_name = "mini"
+ elseif get(findobj("tag", "brdnmType"), "value") == 9 then
+ Board_name = "mini328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 10 then
+ Board_name = "pro328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 11 then
+ Board_name = "pro"
+ elseif get(findobj("tag", "brdnmType"), "value") == 12 then
+ Board_name = "pro5v328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 13 then
+ Board_name = "pro5v"
+ elseif get(findobj("tag", "brdnmType"), "value") == 14 then
+ Board_name = "atmega168"
+ elseif get(findobj("tag", "brdnmType"), "value") == 15 then
+ Board_name = "atmega8"
+ elseif get(findobj("tag", "brdnmType"), "value") == 16 then
+ Board_name = "atmega328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 17 then
+ Board_name = "bt328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 18 then
+ Board_name = "bt"
+ elseif get(findobj("tag", "brdnmType"), "value") == 19 then
+ Board_name = "diecimila"
+ elseif get(findobj("tag", "brdnmType"), "value") == 20 then
+ Board_name = "esplora"
+ elseif get(findobj("tag", "brdnmType"), "value") == 21 then
+ Board_name = "ethernet"
+ elseif get(findobj("tag", "brdnmType"), "value") == 22 then
+ Board_name = "fio"
+ elseif get(findobj("tag", "brdnmType"), "value") == 23 then
+ Board_name = "leonardo"
+ elseif get(findobj("tag", "brdnmType"), "value") == 24 then
+ Board_name = "robotControl"
+ elseif get(findobj("tag", "brdnmType"), "value") == 25 then
+ Board_name = "robotMotor"
+ elseif get(findobj("tag", "brdnmType"), "value") == 26 then
+ Board_name = "lilypad328"
+ elseif get(findobj("tag", "brdnmType"), "value") == 27 then
+ Board_name = "lilypad"
+ elseif get(findobj("tag", "brdnmType"), "value") == 28 then
+ Board_name = "lilyPadUSB"
+ else
+ Board_name = "uno"
+
+ //elseif get(findobj("tag", "brdnmType"), "value") == [1 0 0 0 0 0] then
+ //Board_name = "none"
+ end
+
+ CopySciCodeIntoCCode = get(findobj("tag", "sciintocradioyes"), "value") == 1;
+
+ if get(findobj("tag", "buildtoolradiowin"), "value") == 1 then
+ NativeBuild = "nmake";
+ elseif get(findobj("tag", "buildtoolradiounix"), "value") == 1 then
+ NativeBuild = "make";
+// else
+// CCompilerPathStyle = "cygwin";
+ end
+
+
+ // -*- DEBUG ONLY -*-
+
+// mprintf("UserScilabMainFile = {%s}\n", UserScilabMainFile);
+// mprintf("UserSciFilesPaths = {%s}\n", UserSciFilesPaths);
+// mprintf("UserSciCodeMainDir = {%s}\n", UserSciCodeMainDir);
+// mprintf("RunMode = {%s}\n", RunMode);
+// mprintf("CopySciCodeIntoCCode = {%d}\n", bool2s(CopySciCodeIntoCCode));
+// mprintf("NativeBuild = {%s}\n", NativeBuild);
+ scilab2c(UserScilabMainFile, UserSciCodeMainDir, UserSciFilesPaths, RunMode, NativeBuild,Target,Board_name);
+//
+// --- sci2c help ---
+//
+elseif get(gcbo, "tag")=="sci2c_help_menu" then
+ help sci2c
+
+//
+// --- About SCI2C ---
+//
+elseif get(gcbo, "tag")=="about_sci2c_menu" then
+ help(gettext("About_SCI2C_tools"))
+end
+
+endfunction
diff --git a/2.3-1/macros/findDeps/Scilab2CDeps.sci b/2.3-1/macros/findDeps/Scilab2CDeps.sci
new file mode 100644
index 00000000..b1b75c76
--- /dev/null
+++ b/2.3-1/macros/findDeps/Scilab2CDeps.sci
@@ -0,0 +1,1808 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Arnaud Torset
+//
+// 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
+// Edited by: Yash Pratap Singh Tomar
+
+function scilab2ccode = Scilab2CDeps()
+
+
+/////////////////////////////////
+////// AUXILIARY FUNCTIONS //////
+/////////////////////////////////
+
+//abs
+scilab2ccode.deps.cabss=["ssqrts","sabss","creals","cimags"]
+scilab2ccode.deps.cabsa=["cabss"]
+scilab2ccode.deps.dabss=[]
+scilab2ccode.deps.dabsa=["dabss"]
+scilab2ccode.deps.sabss=[]
+scilab2ccode.deps.sabsa=["sabss"]
+scilab2ccode.deps.zabss=["dsqrts","dabss","zreals","zimags"]
+scilab2ccode.deps.zabsa=["zabss"]
+scilab2ccode.deps.u8absa=["u8abss"]
+scilab2ccode.deps.u8abss=[]
+scilab2ccode.deps.i8absa=["i8abss"]
+scilab2ccode.deps.i8abss=[]
+scilab2ccode.deps.u16absa=["u16abss"]
+scilab2ccode.deps.u16abss=[]
+scilab2ccode.deps.i16absa=["i16abss"]
+scilab2ccode.deps.i16abss=[]
+//conj
+scilab2ccode.deps.cconjs=["FloatComplex","creals","cimags"]
+scilab2ccode.deps.cconja=["cconjs"]
+scilab2ccode.deps.zconjs=["DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.zconja=["zconjs"]
+
+//find
+scilab2ccode.deps.cfinda=["creals","cimags"]
+scilab2ccode.deps.dfinda=[]
+scilab2ccode.deps.sfinda=[]
+scilab2ccode.deps.zfinda=["zreals","zimags"]
+scilab2ccode.deps.i8finda=[]
+scilab2ccode.deps.i16finda=[]
+scilab2ccode.deps.u8finda=[]
+scilab2ccode.deps.u16finda=[]
+
+//float
+scilab2ccode.deps.dfloats=[]
+scilab2ccode.deps.dfloata=[]
+scilab2ccode.deps.i8floats=[]
+scilab2ccode.deps.i8floata=[]
+scilab2ccode.deps.i16floats=[]
+scilab2ccode.deps.i16floata=[]
+scilab2ccode.deps.sfloats=[]
+scilab2ccode.deps.sfloata=[]
+scilab2ccode.deps.u8floats=[]
+scilab2ccode.deps.u8floata=[]
+scilab2ccode.deps.u16floats=[]
+scilab2ccode.deps.u16floata=[]
+
+//find2d
+scilab2ccode.deps.cfind2da=["creals","cimags"]
+scilab2ccode.deps.dfind2da=[]
+scilab2ccode.deps.sfind2da=[]
+scilab2ccode.deps.zfind2da=["zreals","zimags"]
+
+
+//frexp
+scilab2ccode.deps.dfrexps=[]
+scilab2ccode.deps.sfrexps=[]
+
+//isempty
+scilab2ccode.deps.cisemptys=[]
+scilab2ccode.deps.cisemptya=["cfinda"]
+scilab2ccode.deps.disemptys=[]
+scilab2ccode.deps.disemptya=["dfinda"]
+scilab2ccode.deps.sisemptys=[]
+scilab2ccode.deps.sisemptya=["sfinda"]
+scilab2ccode.deps.zisemptys=[]
+scilab2ccode.deps.zisemptya=["zfinda"]
+
+//isnan
+scilab2ccode.deps.cisnans=["creals","cimags"]
+scilab2ccode.deps.cisnana=["cisnans"]
+scilab2ccode.deps.disnans=[]
+scilab2ccode.deps.disnana=["disnans"]
+scilab2ccode.deps.sisnans=[]
+scilab2ccode.deps.sisnana=["sisnans"]
+scilab2ccode.deps.zisnans=["zreals","zimags"]
+scilab2ccode.deps.zisnana=["zisnans"]
+
+//length
+
+//pythag
+scilab2ccode.deps.cpythags=["csqrts","cadds","cmuls"]
+scilab2ccode.deps.dpythags=["dsqrts"]
+scilab2ccode.deps.spythags=["ssqrts"]
+scilab2ccode.deps.zpythags=["zsqrts","zadds","zmuls"]
+
+//rand
+scilab2ccode.deps.cranda=["crands"]
+scilab2ccode.deps.crands=["FloatComplex"]
+scilab2ccode.deps.dranda=["drands"]
+scilab2ccode.deps.drands=[]
+scilab2ccode.deps.i8randa=["i8rands"]
+scilab2ccode.deps.i8rands=[]
+scilab2ccode.deps.i16randa=["i16rands"]
+scilab2ccode.deps.i16rands=[]
+scilab2ccode.deps.sranda=["srands"]
+scilab2ccode.deps.srands=[]
+scilab2ccode.deps.u8randa=["u8rands"]
+scilab2ccode.deps.u8rands=[]
+scilab2ccode.deps.u16randa=["u16rands"]
+scilab2ccode.deps.u16rands=[]
+scilab2ccode.deps.zranda=["drands","DoubleComplex","zreals",]
+scilab2ccode.deps.zrands=["drands","DoubleComplex"]
+
+//sign
+scilab2ccode.deps.csigns=["FloatComplex","cabss","creals","cimags"]
+scilab2ccode.deps.csigna=["csigns"]
+scilab2ccode.deps.dsigns=[]
+scilab2ccode.deps.dsigna=["dsigns"]
+scilab2ccode.deps.dsigns=[]
+scilab2ccode.deps.dsigna=["ssigns"]
+scilab2ccode.deps.zsigns=["DoubleComplex","zabss","zreals","zimags"]
+scilab2ccode.deps.zsigna=["zsigns"]
+scilab2ccode.deps.i8signa=["i8signs"]
+scilab2ccode.deps.i8signs=[]
+scilab2ccode.deps.i16signa=["i16signs"]
+scilab2ccode.deps.i16signs=[]
+scilab2ccode.deps.u8signa=["u8signs"]
+scilab2ccode.deps.u8signs=[]
+scilab2ccode.deps.u16signa=["u16signs"]
+scilab2ccode.deps.u16signs=[]
+
+//size
+scilab2ccode.deps.dallsizea=[]
+
+//type
+
+/////////////////////////////////
+///// CACSD /////////////
+////////////////////////////////
+
+//lqe
+scilab2ccode.deps.dlqea=["dtransposea","dlqra"]
+
+//lqr
+scilab2ccode.deps.dlqra=["dtransposea","dmulma","dinverma","ddiffa","dschura","drdivma","dadda","deyea","dgschura"]
+
+//obscont
+scilab2ccode.deps.dobsconta=["dmulma","dadda"]
+
+//syslin
+scilab2ccode.deps.dsyslina=[]
+
+/////////////////////////////////
+///////DIFFERENTIAL CALCULUS/////
+/////////////////////////////////
+
+//diff
+scilab2ccode.deps.ddiffca=[]
+scilab2ccode.deps.i8diffca=[]
+scilab2ccode.deps.i16diffca=[]
+scilab2ccode.deps.sdiffca=[]
+scilab2ccode.deps.u8diffca=[]
+scilab2ccode.deps.u16diffca=[]
+
+//ode
+scilab2ccode.deps.dodea=[]
+scilab2ccode.deps.dodes=[]
+
+
+
+
+//////////////////////////////////
+////// ELEMENTARY FUNCTIONS //////
+//////////////////////////////////
+
+//acos
+scilab2ccode.deps.cacoss=["FloatComplex","ssqrts","sabss","sacoss","satans","slogs","slog1ps","creals","cimags"]
+scilab2ccode.deps.cacosa=["cacoss"]
+scilab2ccode.deps.dacoss=[]
+scilab2ccode.deps.dacosa=["dacoss"]
+scilab2ccode.deps.sacoss=[]
+scilab2ccode.deps.sacosa=["sacoss"]
+scilab2ccode.deps.zacoss=["DoubleComplex","dsqrts","dabss","dacoss","datans","dlogs","dlog1ps","zreals","zimags"]
+scilab2ccode.deps.zacosa=["zacoss"]
+
+//acosd
+scilab2ccode.deps.dacosda=["dacosds"]
+scilab2ccode.deps.dacosds=[]
+scilab2ccode.deps.sacosda=["sacosds"]
+scilab2ccode.deps.sacosds=[]
+
+//acosh
+scilab2ccode.deps.cacoshs=["FloatComplex","cacoss","creals","cimags"]
+scilab2ccode.deps.cacosha=["cacoshs"]
+scilab2ccode.deps.dacoshs=[]
+scilab2ccode.deps.dacosha=["dacoshs"]
+scilab2ccode.deps.sacoshs=[]
+scilab2ccode.deps.sacosha=["sacoshs"]
+scilab2ccode.deps.zacoshs=["DoubleComplex","zacoss","zreals","zimags"]
+scilab2ccode.deps.zacosha=["zacoshs"]
+
+//acot
+scilab2ccode.deps.cacota=["cacots"]
+scilab2ccode.deps.cacots=["FloatComplex","crdivs","catans"]
+scilab2ccode.deps.dacota=["dacots"]
+scilab2ccode.deps.dacots=[]
+scilab2ccode.deps.sacota=["sacots"]
+scilab2ccode.deps.sacots=[]
+scilab2ccode.deps.zacota=["zacots"]
+scilab2ccode.deps.zacots=["DoubleComplex","zrdivs","zatans"]
+
+//acotd
+scilab2ccode.deps.dacotda=["dacotds"]
+scilab2ccode.deps.dacotds=[]
+scilab2ccode.deps.sacotda=["sacotds"]
+scilab2ccode.deps.sacotds=[]
+
+//acoth
+scilab2ccode.deps.cacotha=["cacoths"]
+scilab2ccode.deps.cacoths=["FloatComplex","crdivs","catanhs"]
+scilab2ccode.deps.dacotha=["dacoths"]
+scilab2ccode.deps.dacoths=[]
+scilab2ccode.deps.sacotha=["sacoths"]
+scilab2ccode.deps.sacoths=[]
+scilab2ccode.deps.zacotha=["zacoths"]
+scilab2ccode.deps.zacoths=["DoubleComplex","zrdivs","zatanhs"]
+
+//acsc
+scilab2ccode.deps.cacsca=["cacscs"]
+scilab2ccode.deps.cacscs=["FloatComplex","crdivs","casins"]
+scilab2ccode.deps.dacsca=["dacscs"]
+scilab2ccode.deps.dacscs=[]
+scilab2ccode.deps.sacsca=["sacscs"]
+scilab2ccode.deps.sacscs=[]
+scilab2ccode.deps.zacsca=["zacscs"]
+scilab2ccode.deps.zacscs=["DoubleComplex","zrdivs","zasins"]
+
+//acscd
+scilab2ccode.deps.dacscda=["dacscds"]
+scilab2ccode.deps.dacscds=[]
+scilab2ccode.deps.sacscda=["sacscds"]
+scilab2ccode.deps.sacscds=[]
+
+//acsch
+scilab2ccode.deps.cacsca=["cacscs"]
+scilab2ccode.deps.cacscs=["FloatComplex","crdivs","cmuls"]
+scilab2ccode.deps.dacscha=["dacschs"]
+scilab2ccode.deps.dacschs=[]
+scilab2ccode.deps.sacscha=["sacschs"]
+scilab2ccode.deps.sacschs=[]
+scilab2ccode.deps.zacsca=["zacscs"]
+scilab2ccode.deps.zacscs=["zrdivs","DoubleComplex","zasins"]
+
+//asec
+scilab2ccode.deps.daseca=["dasecs"]
+scilab2ccode.deps.dasecs=[]
+scilab2ccode.deps.saseca=["sasecs"]
+scilab2ccode.deps.sasecs=[]
+
+//asecd
+scilab2ccode.deps.dasecda=["dasecds"]
+scilab2ccode.deps.dasecds=[]
+scilab2ccode.deps.sasecda=["sasecds"]
+scilab2ccode.deps.sasecds=[]
+
+//asech
+scilab2ccode.deps.dasecha=["dasechs"]
+scilab2ccode.deps.dasechs=[]
+scilab2ccode.deps.sasecha=["sasechs"]
+scilab2ccode.deps.sasechs=[]
+
+//asin
+scilab2ccode.deps.casins=["FloatComplex","ssqrts","sabss","sasins","satans","slogs","slog1ps","dabss","creals","cimags"]
+scilab2ccode.deps.casina=["casins"]
+scilab2ccode.deps.dasins=[]
+scilab2ccode.deps.dasina=["dasins"]
+scilab2ccode.deps.sasins=[]
+scilab2ccode.deps.sasina=["sasins"]
+scilab2ccode.deps.zasins=["DoubleComplex","dsqrts","dabss","dasins","datans","dlog1ps","dlogs","zreals","zimags"]
+scilab2ccode.deps.zasina=["zasins"]
+
+//asind
+scilab2ccode.deps.dasinda=["dasinds"]
+scilab2ccode.deps.dasinds=[]
+scilab2ccode.deps.sasinda=["sasinds"]
+scilab2ccode.deps.sasinds=[]
+
+
+//asinh
+scilab2ccode.deps.casinhs=["FloatComplex","casins","creals","cimags"]
+scilab2ccode.deps.casinha=["casinhs"]
+scilab2ccode.deps.dasinhs=["DoubleComplex","zasins"]
+scilab2ccode.deps.dasinha=["dasinhs"]
+scilab2ccode.deps.sasinhs=["FloatComplex","casins"]
+scilab2ccode.deps.sasinha=["sasinhs"]
+scilab2ccode.deps.zasinhs=["DoubleComplex","zasins","zreals","zimags"]
+scilab2ccode.deps.zasinha=["zasinhs"]
+
+
+//atan
+scilab2ccode.deps.catans=["satans","creals","cimags","dabss","slnp1m1s","sabss","FloatComplex"]
+scilab2ccode.deps.catana=["catans"]
+scilab2ccode.deps.datans=[]
+scilab2ccode.deps.datana=["datans"]
+scilab2ccode.deps.satans=[]
+scilab2ccode.deps.satana=["satans"]
+scilab2ccode.deps.zatans=["datans","zreals","zimags","dabss","dlnp1m1s","DoubleComplex"]
+scilab2ccode.deps.zatana=["zatans"]
+
+
+//atan2
+scilab2ccode.deps.datan2s=[]
+scilab2ccode.deps.datan2a=["datan2s"]
+scilab2ccode.deps.satan2s=[]
+scilab2ccode.deps.satan2a=["satan2s"]
+
+//atand
+scilab2ccode.deps.datanda=["datands"]
+scilab2ccode.deps.datands=[]
+scilab2ccode.deps.satanda=["satands"]
+scilab2ccode.deps.satands=[]
+
+//atanh
+scilab2ccode.deps.catanhs=["FloatComplex","creals","cimags","catans"]
+scilab2ccode.deps.catanha=["catanhs"]
+scilab2ccode.deps.datanhs=["zimags","zatans","DoubleComplex"]
+scilab2ccode.deps.datanha=["datanhs"]
+scilab2ccode.deps.satanhs=["cimags","catans","FloatComplex"]
+scilab2ccode.deps.satanha=["satanhs"]
+scilab2ccode.deps.zatanhs=["DoubleComplex","zreals","zimags","zatans"]
+scilab2ccode.deps.zatanha=["zatanhs"]
+
+//bitand
+scilab2ccode.deps.u8bitanda=["u8bitands"]
+scilab2ccode.deps.u8bitands=[]
+scilab2ccode.deps.u16bitanda=["u16bitands"]
+scilab2ccode.deps.u16bitands=[]
+
+//bitcmp
+scilab2ccode.deps.u8bitcmps=["u8bitcmps"]
+scilab2ccode.deps.u8bitcmps=[]
+scilab2ccode.deps.u16bitcmpa=["u16bitcmps"]
+scilab2ccode.deps.u16bitcmps=[]
+
+//bitget
+scilab2ccode.deps.u8bitgets=[]
+scilab2ccode.deps.u16bitgets=[]
+
+//bitor
+scilab2ccode.deps.u8bitora=["u8bitors"]
+scilab2ccode.deps.u8bitors=[]
+scilab2ccode.deps.u16bitora=["u16bitors"]
+scilab2ccode.deps.u16bitors=[]
+
+//bitset
+scilab2ccode.deps.u8bitsets=[]
+scilab2ccode.deps.u16bitsets=[]
+
+//bitxor
+scilab2ccode.deps.u8bitxora=["u8bitxors"]
+scilab2ccode.deps.u8bitxors=[]
+scilab2ccode.deps.u16bitxora=["u16bitxors"]
+scilab2ccode.deps.u16bitxors=[]
+
+//ceil
+scilab2ccode.deps.cceila=["cceils"]
+scilab2ccode.deps.cceils=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.dceila=["dceils"]
+scilab2ccode.deps.dceils=[]
+scilab2ccode.deps.i8ceila=["i8ceils"]
+scilab2ccode.deps.i8ceils=[]
+scilab2ccode.deps.i16ceila=["i16ceils"]
+scilab2ccode.deps.i16ceils=[]
+scilab2ccode.deps.sceila=["sceils"]
+scilab2ccode.deps.sceils=[]
+scilab2ccode.deps.u8ceila=["u8ceils"]
+scilab2ccode.deps.u8ceils=[]
+scilab2ccode.deps.u16ceila=["u16ceils"]
+scilab2ccode.deps.u16ceils=[]
+scilab2ccode.deps.zceila=["zceils"]
+scilab2ccode.deps.zceils=["zreals","zimags","DoubleComplex"]
+
+//cos
+scilab2ccode.deps.ccoss=["creals","cimags","FloatComplex","scoss","scoshs","ssins","ssinhs"]
+scilab2ccode.deps.ccosa=["ccoss"]
+scilab2ccode.deps.dcoss=[]
+scilab2ccode.deps.dcosa=["dcoss"]
+scilab2ccode.deps.scoss=[]
+scilab2ccode.deps.scosa=["scoss"]
+scilab2ccode.deps.zcoss=["zreals","zimags","DoubleComplex","dcoss","dcoshs","dsins","dsinhs"]
+scilab2ccode.deps.zcosa=["zcoss"]
+scilab2ccode.deps.i8cosa=["i8coss"]
+scilab2ccode.deps.i8coss=[]
+scilab2ccode.deps.i16cosa=["i16coss"]
+scilab2ccode.deps.i16coss=[]
+scilab2ccode.deps.u8cosa=["u8coss"]
+scilab2ccode.deps.u8coss=[]
+scilab2ccode.deps.u16cosa=["u16coss"]
+scilab2ccode.deps.u16coss=[]
+
+//cosh
+scilab2ccode.deps.ccoshs=["ccoss","FloatComplex","creals","cimags"]
+scilab2ccode.deps.ccosha=["ccoshs"]
+scilab2ccode.deps.dcoshs=["dexps","dabss"]
+scilab2ccode.deps.dcosha=["dcoshs"]
+scilab2ccode.deps.scoshs=["sexps","sabss"]
+scilab2ccode.deps.scosha=["scoshs"]
+scilab2ccode.deps.zcoshs=["zcoss","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.zcosha=["zcoshs"]
+scilab2ccode.deps.i8cosha=["i8coshs"]
+scilab2ccode.deps.i8coshs=["i8abss","i8exps"]
+scilab2ccode.deps.i16cosha=["i16coshs"]
+scilab2ccode.deps.i16coshs=["i16abss","i16exps"]
+scilab2ccode.deps.u8cosha=["u8coshs"]
+scilab2ccode.deps.u8coshs=["u8abss","u8exps"]
+scilab2ccode.deps.u16cosha=["u16coshs"]
+scilab2ccode.deps.u16coshs=["u16abss","u16exps"]
+
+
+//exp
+scilab2ccode.deps.cexps=["creals","cimags","FloatComplex","sexps","scoss","ssins"]
+scilab2ccode.deps.cexpa=["cexps"]
+scilab2ccode.deps.dexps=[]
+scilab2ccode.deps.dexpa=["dexps"]
+scilab2ccode.deps.sexps=[]
+scilab2ccode.deps.sexpa=["sexps"]
+scilab2ccode.deps.zexps=["zreals","zimags","DoubleComplex","dexps","dcoss","dsins"]
+scilab2ccode.deps.zexpa=["zexps"]
+scilab2ccode.deps.i8expa=["i8exps"]
+scilab2ccode.deps.i8exps=[]
+scilab2ccode.deps.i16expa=["i16exps"]
+scilab2ccode.deps.i16exps=[]
+scilab2ccode.deps.u8expa=["u8exps"]
+scilab2ccode.deps.u8exps=[]
+scilab2ccode.deps.u16expa=["u16exps"]
+scilab2ccode.deps.u16exps=[]
+
+//exp10
+scilab2ccode.deps.cexp10s=["cpows","FloatComplex"]
+scilab2ccode.deps.cexp10a=["cexp10s"]
+scilab2ccode.deps.dexp10s=[]
+scilab2ccode.deps.dexp10a=["dexp10s"]
+scilab2ccode.deps.sexp10s=[]
+scilab2ccode.deps.sexp10a=["sexp10s"]
+scilab2ccode.deps.zexp10s=["zpows","DoubleComplex"]
+scilab2ccode.deps.zexp10a=["zexp10s"]
+
+//fix
+scilab2ccode.deps.cfixa=["cfixs"]
+scilab2ccode.deps.cfixs=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.dfixa=["dfixs"]
+scilab2ccode.deps.dfixs=[]
+scilab2ccode.deps.i8fixa=["i8fixs"]
+scilab2ccode.deps.i8fixs=["i8floors","i8ceils"]
+scilab2ccode.deps.i16fixa=["i16fixs"]
+scilab2ccode.deps.i16fixs=["i16floors","i16ceils"]
+scilab2ccode.deps.sfixa=["sfixs"]
+scilab2ccode.deps.sfixs=[]
+scilab2ccode.deps.u8fixa=["u8fixs"]
+scilab2ccode.deps.u8fixs=["u8floors","u8ceils"]
+scilab2ccode.deps.u16fixa=["u16fixs"]
+scilab2ccode.deps.u16fixs=["u16floors","u16ceils"]
+scilab2ccode.deps.zfixa=["zfixs"]
+scilab2ccode.deps.zfixs=["zreals","zimags","DoubleComplex"]
+
+//floor
+scilab2ccode.deps.cfloora=["cfloors"]
+scilab2ccode.deps.cfloors=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.dfloora=["dfloors"]
+scilab2ccode.deps.dfloors=[]
+scilab2ccode.deps.i8floora=["i8floors"]
+scilab2ccode.deps.i8floors=[]
+scilab2ccode.deps.i16floora=["i16floors"]
+scilab2ccode.deps.i16floors=[]
+scilab2ccode.deps.sfloora=["sfloors"]
+scilab2ccode.deps.sfloors=[]
+scilab2ccode.deps.u8floora=["u8floors"]
+scilab2ccode.deps.u8floors=[]
+scilab2ccode.deps.u16floora=["u16floors"]
+scilab2ccode.deps.u16floors=[]
+scilab2ccode.deps.zfloors=["zfloors"]
+scilab2ccode.deps.zfloors=["zreals","zimags","DoubleComplex"]
+
+//int
+scilab2ccode.deps.cinta=["cfixa"]
+scilab2ccode.deps.cints=["cfixs"]
+scilab2ccode.deps.dinta=["dfixa"]
+scilab2ccode.deps.dints=["dfixs"]
+scilab2ccode.deps.sinta=["sfixa"]
+scilab2ccode.deps.sints=["sfixs"]
+scilab2ccode.deps.zinta=["zfixa"]
+scilab2ccode.deps.zints=["zfixs"]
+
+//int8
+scilab2ccode.deps.dint8a=["dint8s"]
+scilab2ccode.deps.dint8s=[]
+scilab2ccode.deps.i16int8a=["i16int8s"]
+scilab2ccode.deps.i16int8s=[]
+scilab2ccode.deps.sint8a=["sint8s"]
+scilab2ccode.deps.sint8s=[]
+scilab2ccode.deps.u8int8a=["u8int8s"]
+scilab2ccode.deps.u8int8s=[]
+scilab2ccode.deps.u16int8a=["u16int8s"]
+scilab2ccode.deps.u16int8s=[]
+
+//int16
+scilab2ccode.deps.dint16a=["dint16s"]
+scilab2ccode.deps.dint16s=[]
+scilab2ccode.deps.i8int16a=["i8int16s"]
+scilab2ccode.deps.i8int16s=[]
+scilab2ccode.deps.sint16a=["sint16s"]
+scilab2ccode.deps.sint16s=[]
+scilab2ccode.deps.u8int16a=["u8int16s"]
+scilab2ccode.deps.u8int16s=[]
+scilab2ccode.deps.u16int16a=["u16int16s"]
+scilab2ccode.deps.u16int16s=[]
+
+//linspace
+scilab2ccode.deps.dlinspacea=[]
+scilab2ccode.deps.dlinspaces=[]
+
+
+//lnp1m1
+scilab2ccode.deps.dlnp1m1s=["dabss"]
+scilab2ccode.deps.slnp1m1s=["sabss"]
+
+
+//log
+scilab2ccode.deps.clogs=["creals","cimags","slog1ps","slogs","spythags","FloatComplex"]
+scilab2ccode.deps.cloga=["clogs"]
+scilab2ccode.deps.dlogs=[]
+scilab2ccode.deps.dloga=["dlogs"]
+scilab2ccode.deps.slogs=[]
+scilab2ccode.deps.sloga=["slogs"]
+scilab2ccode.deps.zlogs=["zreals","zimags","zlog1ps","zlogs","zpythags","DoubleComplex"]
+scilab2ccode.deps.zloga=["zlogs"]
+
+
+//log1p
+scilab2ccode.deps.clog1ps=["clogs","FloatComplex","creals","cimags"]
+scilab2ccode.deps.clog1pa=["clog1ps"]
+scilab2ccode.deps.dlog1ps=["dlnp1m1s","dlogs"]
+scilab2ccode.deps.dlog1pa=["dlog1ps"]
+scilab2ccode.deps.slog1ps=["slnp1m1s","slogs"]
+scilab2ccode.deps.slog1pa=["slog1ps"]
+scilab2ccode.deps.zlog1ps=["zlogs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.zlog1pa=["zlog1ps"]
+
+
+//log10
+scilab2ccode.deps.clog10s=["clogs","FloatComplex","creals","cimags","slogs"]
+scilab2ccode.deps.clog10a=["clog10s"]
+scilab2ccode.deps.dlog10s=[]
+scilab2ccode.deps.dlog10a=["dlog10s"]
+scilab2ccode.deps.slog10s=[]
+scilab2ccode.deps.slog10a=["slog10s"]
+scilab2ccode.deps.zlog10s=["zlogs","DoubleComplex","zreals","zimags","dlogs"]
+scilab2ccode.deps.zlog10a=["zlog10s"]
+
+//logspace
+scilab2ccode.deps.dlogspacea=[]
+scilab2ccode.deps.dlogspaces=[]
+
+//pow
+scilab2ccode.deps.cpows=["cexps","cmuls","clogs"]
+scilab2ccode.deps.cpowa=["cpows"]
+scilab2ccode.deps.dpows=[]
+scilab2ccode.deps.dpowa=["dpows"]
+scilab2ccode.deps.spows=[]
+scilab2ccode.deps.spowa=["spows"]
+scilab2ccode.deps.zpows=["zexps","zmuls","zlogs"]
+scilab2ccode.deps.zpowa=["zpows"]
+scilab2ccode.deps.i8powa=["i8pows"]
+scilab2ccode.deps.i8pows=[]
+scilab2ccode.deps.i16powa=["i16pows"]
+scilab2ccode.deps.i16pows=[]
+scilab2ccode.deps.u8powa=["u8pows"]
+scilab2ccode.deps.u8pows=[]
+scilab2ccode.deps.u16powa=["u16pows"]
+scilab2ccode.deps.u16pows=[]
+
+//round
+scilab2ccode.deps.crounda=["crounds"]
+scilab2ccode.deps.crounds=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.drounda=["drounds"]
+scilab2ccode.deps.drounds=[]
+scilab2ccode.deps.i8rounda=["i8rounds"]
+scilab2ccode.deps.i8rounds=[]
+scilab2ccode.deps.i16rounda=["i16rounds"]
+scilab2ccode.deps.i16rounds=[]
+scilab2ccode.deps.srounda=["srounds"]
+scilab2ccode.deps.srounds=[]
+scilab2ccode.deps.u8rounda=["u8rounds"]
+scilab2ccode.deps.u8rounds=[]
+scilab2ccode.deps.u16rounda=["u16rounds"]
+scilab2ccode.deps.u16rounds=[]
+scilab2ccode.deps.zrounda=["zrounds"]
+scilab2ccode.deps.zrounds=["zreals","zimags","DoubleComplex"]
+
+//sin
+scilab2ccode.deps.csins=["creals","cimags","FloatComplex","ssins","scoshs","scoss","ssinhs"]
+scilab2ccode.deps.csina=["csins"]
+scilab2ccode.deps.dsins=[]
+scilab2ccode.deps.dsina=["dsins"]
+scilab2ccode.deps.ssins=[]
+scilab2ccode.deps.ssina=["ssins"]
+scilab2ccode.deps.zsins=["zreals","zimags","DoubleComplex","dsins","dcoshs","dcoss","dsinhs"]
+scilab2ccode.deps.zsina=["zsins"]
+scilab2ccode.deps.i8sina=["i8sins"]
+scilab2ccode.deps.i8sins=[]
+scilab2ccode.deps.i16sina=["i16sins"]
+scilab2ccode.deps.i16sins=[]
+scilab2ccode.deps.u8sina=["u8sins"]
+scilab2ccode.deps.u8sins=[]
+scilab2ccode.deps.u16sina=["u16sins"]
+scilab2ccode.deps.u16sins=[]
+
+
+//sinh
+scilab2ccode.deps.csinhs=["creals","cimags","csins","FloatComplex"]
+scilab2ccode.deps.csinha=["csinhs"]
+scilab2ccode.deps.dsinhs=[]
+scilab2ccode.deps.dsinha=["dsinhs"]
+scilab2ccode.deps.ssinhs=[]
+scilab2ccode.deps.ssinha=["ssinhs"]
+scilab2ccode.deps.zsinhs=["zreals","zimags","zsins","DoubleComplex"]
+scilab2ccode.deps.zsinha=["zsinhs"]
+scilab2ccode.deps.i8sinha=["i8sinhs"]
+scilab2ccode.deps.i8sinhs=[]
+scilab2ccode.deps.i16sinha=["i16sinhs"]
+scilab2ccode.deps.i16sinhs=[]
+scilab2ccode.deps.u8sinha=["u8sinhs"]
+scilab2ccode.deps.u8sinhs=[]
+scilab2ccode.deps.u16sinha=["u16sinhs"]
+scilab2ccode.deps.u16sinhs=[]
+
+
+//sqrt
+scilab2ccode.deps.csqrts=["creals","cimags","dabss","ssqrts","sabss","spythags","FloatComplex"]
+scilab2ccode.deps.csqrta=["csqrts"]
+scilab2ccode.deps.dsqrts=[]
+scilab2ccode.deps.dsqrta=["dsqrts"]
+scilab2ccode.deps.ssqrts=[]
+scilab2ccode.deps.ssqrta=["ssqrts"]
+scilab2ccode.deps.zsqrts=["zreals","zimags","dabss","dsqrts","dpythags","DoubleComplex"]
+scilab2ccode.deps.zsqrta=["zsqrts"]
+
+
+//tan
+scilab2ccode.deps.ctans=["slogs","ssqrts","creals","cimags","scoss","ssinhs","ssins","sabss","FloatComplex"]
+scilab2ccode.deps.ctana=["ctans"]
+scilab2ccode.deps.dtans=[]
+scilab2ccode.deps.dtana=["dtans"]
+scilab2ccode.deps.stans=[]
+scilab2ccode.deps.stana=["stans"]
+scilab2ccode.deps.ztans=["dlogs","dsqrts","zreals","zimags","dcoss","dsinhs","dsins","dabss","DoubleComplex"]
+scilab2ccode.deps.ztana=["ztans"]
+scilab2ccode.deps.i8tana=["i8tans"]
+scilab2ccode.deps.i8tans=[]
+scilab2ccode.deps.i16tana=["i16tans"]
+scilab2ccode.deps.i16tans=[]
+scilab2ccode.deps.u8tana=["u8tans"]
+scilab2ccode.deps.u8tans=[]
+scilab2ccode.deps.u16tana=["u16tans"]
+scilab2ccode.deps.u16tans=[]
+
+
+//tanh
+scilab2ccode.deps.ctanhs=["creals","cimags","ctans","FloatComplex"]
+scilab2ccode.deps.ctanha=["ctanhs"]
+scilab2ccode.deps.dtanhs=[]
+scilab2ccode.deps.dtanha=["dtanhs"]
+scilab2ccode.deps.stanhs=[]
+scilab2ccode.deps.stanha=["stanhs"]
+scilab2ccode.deps.ztanhs=["zreals","zimags","ztans","DoubleComplex"]
+scilab2ccode.deps.ztanha=["ztanhs"]
+scilab2ccode.deps.i8tanha=["i8tanhs"]
+scilab2ccode.deps.i8tanhs=[]
+scilab2ccode.deps.i16tanha=["i16tanhs"]
+scilab2ccode.deps.i16tanhs=[]
+scilab2ccode.deps.u8tanha=["u8tanhs"]
+scilab2ccode.deps.u8tanhs=[]
+scilab2ccode.deps.u16tanha=["u16tanhs"]
+scilab2ccode.deps.u16tanhs=[]
+
+//uint8
+scilab2ccode.deps.duint8a=["duint8s"]
+scilab2ccode.deps.duint8s=[]
+scilab2ccode.deps.i8uint8a=["i8uint8s"]
+scilab2ccode.deps.i8uint8s=[]
+scilab2ccode.deps.i16uint8a=["i16uint8s"]
+scilab2ccode.deps.i16uint8s=[]
+scilab2ccode.deps.suint8a=["suint8s"]
+scilab2ccode.deps.suint8s=[]
+scilab2ccode.deps.u16uint8a=["u16uint8s"]
+scilab2ccode.deps.u16uint8s=[]
+
+//uint16
+scilab2ccode.deps.duint16a=["duint16s"]
+scilab2ccode.deps.duint16s=[]
+scilab2ccode.deps.i8uint16a=["i8uint16s"]
+scilab2ccode.deps.i8uint16s=[]
+scilab2ccode.deps.i16uint16a=["i16uint16s"]
+scilab2ccode.deps.i16uint16s=[]
+scilab2ccode.deps.suint16a=["suint16s"]
+scilab2ccode.deps.suint16s=[]
+scilab2ccode.deps.u8uint16a=["u8uint16s"]
+scilab2ccode.deps.u8uint16s=[]
+
+//////DISCRETE_MATHEMATICS/////////
+
+//factor
+scilab2ccode.deps.dfactors=[]
+scilab2ccode.deps.sfactors=[]
+
+//factorial
+scilab2ccode.deps.dfactoriala=["dfactorials"]
+scilab2ccode.deps.dfactorials=[]
+scilab2ccode.deps.sfactoriala=["dfactorials"]
+scilab2ccode.deps.sfactorials=[]
+
+//primes
+scilab2ccode.deps.dprimess=[]
+scilab2ccode.deps.sprimess=[]
+
+
+////////RADIX_CONVERSION////////
+
+//base2dec
+scilab2ccode.deps.dbase2decs=[]
+scilab2ccode.deps.gbase2decs=[]
+
+//bin2dec
+scilab2ccode.deps.dbin2deca=["dbin2decs"]
+scilab2ccode.deps.dbin2decs=[]
+scilab2ccode.deps.i8bin2deca=["i8bin2decs"]
+scilab2ccode.deps.i8bin2decs=[]
+scilab2ccode.deps.i16bin2deca=["i16bin2decs"]
+scilab2ccode.deps.i16bin2decs=[]
+scilab2ccode.deps.u8bin2deca=["u8bin2decs"]
+scilab2ccode.deps.u8bin2decs=[]
+scilab2ccode.deps.u16bin2deca=["u16bin2decs"]
+scilab2ccode.deps.u16bin2decs=[]
+
+//dec2base
+scilab2ccode.deps.ddec2basea=["ddec2bases"]
+scilab2ccode.deps.ddec2bases=[]
+scilab2ccode.deps.sdec2basea=["sdec2bases"]
+scilab2ccode.deps.sdec2bases=[]
+
+//dec2bin
+scilab2ccode.deps.ddec2bina=["ddec2bins"]
+scilab2ccode.deps.ddec2bins=[]
+scilab2ccode.deps.i8dec2bina=["i8dec2bins"]
+scilab2ccode.deps.i8dec2bins=[]
+scilab2ccode.deps.i16dec2bina=["i16dec2bins"]
+scilab2ccode.deps.i16dec2bins=[]
+scilab2ccode.deps.u8dec2bina=["u8dec2bins"]
+scilab2ccode.deps.u8dec2bins=[]
+scilab2ccode.deps.u16dec2bina=["u16dec2bins"]
+scilab2ccode.deps.u16dec2bins=[]
+
+//dec2hex
+scilab2ccode.deps.ddec2hexa=["ddec2hexs"]
+scilab2ccode.deps.ddec2hexs=[]
+scilab2ccode.deps.i8dec2hexa=["i8dec2hexs"]
+scilab2ccode.deps.i8dec2hexs=[]
+scilab2ccode.deps.i16dec2hexa=["i16dec2hexs"]
+scilab2ccode.deps.i16dec2hexs=[]
+scilab2ccode.deps.u8dec2hexa=["u8dec2hexs"]
+scilab2ccode.deps.u8dec2hexs=[]
+scilab2ccode.deps.u16dec2hexa=["u16dec2hexs"]
+scilab2ccode.deps.u16dec2hexs=[]
+
+//dec2oct
+scilab2ccode.deps.ddec2octa=["ddec2octs"]
+scilab2ccode.deps.ddec2octs=[]
+scilab2ccode.deps.i8dec2octa=["i8dec2octs"]
+scilab2ccode.deps.i8dec2octs=[]
+scilab2ccode.deps.i16dec2octa=["i16dec2octs"]
+scilab2ccode.deps.i16dec2octs=[]
+scilab2ccode.deps.u8dec2octa=["u8dec2octs"]
+scilab2ccode.deps.u8dec2octs=[]
+scilab2ccode.deps.u16dec2octs=["u16dec2octs"]
+scilab2ccode.deps.u16dec2octs=[]
+
+//hex2dec
+scilab2ccode.deps.dhex2decs=[]
+scilab2ccode.deps.ghex2decs=[]
+
+//oct2dec
+scilab2ccode.deps.doct2deca=["doct2decs"]
+scilab2ccode.deps.doct2decs=[]
+scilab2ccode.deps.i8oct2deca=["i8oct2decs"]
+scilab2ccode.deps.i8oct2decs=[]
+scilab2ccode.deps.i16oct2deca=["i16oct2decs"]
+scilab2ccode.deps.i16oct2decs=[]
+scilab2ccode.deps.u8oct2deca=["u8oct2decs"]
+scilab2ccode.deps.u8oct2decs=[]
+scilab2ccode.deps.u16oct2deca=["u16oct2decs"]
+scilab2ccode.deps.u16oct2decs=[]
+
+//////////Trigonometry/////////
+
+//cosd
+scilab2ccode.deps.dcosda=["dcosds"]
+scilab2ccode.deps.dcosds=[]
+scilab2ccode.deps.scosda=["scosds"]
+scilab2ccode.deps.scosds=[]
+
+//cotd
+scilab2ccode.deps.dcotda=["dcotds"]
+scilab2ccode.deps.dcotds=[]
+scilab2ccode.deps.scotda=["scotds"]
+scilab2ccode.deps.scotds=[]
+
+//coth
+scilab2ccode.deps.ccotha=["ccoths"]
+scilab2ccode.deps.ccoths=["ctanhs","FloatComplex","crdivs"]
+scilab2ccode.deps.dcotha=[]
+scilab2ccode.deps.dcoths=[]
+scilab2ccode.deps.scotha=[]
+scilab2ccode.deps.scoths=[]
+scilab2ccode.deps.zcotha=["zcoths"]
+scilab2ccode.deps.zcoths=["zrdivs","DoubleComplex","ztanhs"]
+
+//csc
+scilab2ccode.deps.ccsca=["ccscs"]
+scilab2ccode.deps.ccscs=["csins","FloatComplex","crdivs"]
+scilab2ccode.deps.dcsca=["dcscs"]
+scilab2ccode.deps.dcscs=[]
+scilab2ccode.deps.scsca=["scscs"]
+scilab2ccode.deps.scscs=[]
+scilab2ccode.deps.zcsca=["zcscs"]
+scilab2ccode.deps.zcscs=["DoubleComplex","zrdivs","dsins","dcoshs","dcoss","dsinhs","zreals","zimags"]
+
+//cscd
+scilab2ccode.deps.ccscda=["ccscds"]
+scilab2ccode.deps.ccscds=["csins","FloatComplex","crdivs"]
+scilab2ccode.deps.dcscda=["dcscds"]
+scilab2ccode.deps.dcscds=[]
+scilab2ccode.deps.scscda=["scscds"]
+scilab2ccode.deps.scscds=[]
+scilab2ccode.deps.zcscda=["zcscds"]
+scilab2ccode.deps.zcscds=["zrdivs","DoubleComplex","zsins"]
+
+//csch
+scilab2ccode.deps.ccscha=["ccschs"]
+scilab2ccode.deps.ccschs=["csinhs","FloatComplex","crdivs"]
+scilab2ccode.deps.dcscha=["dcschs"]
+scilab2ccode.deps.dcschs=[]
+scilab2ccode.deps.scscha=["scschs"]
+scilab2ccode.deps.scschs=[]
+scilab2ccode.deps.zcscha=["zcschs"]
+scilab2ccode.deps.zcschs=["zrdivs","DoubleComplex","zsinhs"]
+
+//sec
+scilab2ccode.deps.cseca=["csecs"]
+scilab2ccode.deps.csecs=["ccoss","FloatComplex","crdivs"]
+scilab2ccode.deps.dseca=[]
+scilab2ccode.deps.dsecs=[]
+scilab2ccode.deps.sseca=["ssecs"]
+scilab2ccode.deps.ssecs=[]
+scilab2ccode.deps.zseca=["zsecs"]
+scilab2ccode.deps.zsecs=["zrdivs","DoubleComplex","zcoss"]
+
+//secd
+scilab2ccode.deps.dsecda=["dsecds"]
+scilab2ccode.deps.dsecds=[]
+scilab2ccode.deps.ssecda=["ssecds"]
+scilab2ccode.deps.ssecds=[]
+
+//sech
+scilab2ccode.deps.csecha=["csechs"]
+scilab2ccode.deps.ccoths=["ccoshs","FloatComplex","crdivs"]
+scilab2ccode.deps.dsecha=["dsechs"]
+scilab2ccode.deps.dsechs=[]
+scilab2ccode.deps.ssecha=["ssechs"]
+scilab2ccode.deps.ssechs=[]
+scilab2ccode.deps.zsecha=["zsechs"]
+scilab2ccode.deps.zsechs=["zrdivs","DoubleComplex","zcoshs"]
+
+///////////////////////////////
+////// FILES //////
+///////////////////////////////
+
+
+//mclose
+scilab2ccode.deps.mclose=[]
+
+
+//mopen
+scilab2ccode.deps.mopen=[]
+
+
+//mput
+scilab2ccode.deps.dmputa=[]
+scilab2ccode.deps.dmputs=[]
+scilab2ccode.deps.i8mputa=[]
+scilab2ccode.deps.i8mputs=[]
+scilab2ccode.deps.i16mputa=[]
+scilab2ccode.deps.i16mputs=[]
+scilab2ccode.deps.smputa=[]
+scilab2ccode.deps.smputs=[]
+scilab2ccode.deps.u8mputa=[]
+scilab2ccode.deps.u8mputs=[]
+scilab2ccode.deps.u16mputa=[]
+scilab2ccode.deps.u16mputs=[]
+
+
+
+///////////////////////////////
+////// IMPLICITLIST //////
+///////////////////////////////
+
+scilab2ccode.deps.cimplicitLists=["simplicitLists"]
+scilab2ccode.deps.dimplicitLists=[]
+scilab2ccode.deps.simplicitLists=[]
+scilab2ccode.deps.zimplicitLists=["dimplicitLists"]
+
+///////////////////////////////
+/////// LINEARALGEBRA ///////
+///////////////////////////////
+
+//balanc
+scilab2ccode.deps.dbalanca=["deyea"]
+
+//rcond
+scilab2ccode.deps.drconda=[]
+
+//schur
+scilab2ccode.deps.dgschura=[]
+scilab2ccode.deps.dschura=[]
+
+///////////////////////////////
+////// MATRIX OPERATIONS //////
+///////////////////////////////
+
+//cat
+scilab2ccode.deps.ccata=[]
+scilab2ccode.deps.ccats=[]
+scilab2ccode.deps.dcata=[]
+scilab2ccode.deps.dcatS=[]
+scilab2ccode.deps.scata=[]
+scilab2ccode.deps.scats=[]
+scilab2ccode.deps.zcata=[]
+scilab2ccode.deps.zcats=[]
+scilab2ccode.deps.i8cata=[]
+scilab2ccode.deps.i8cats=[]
+scilab2ccode.deps.i16cata=[]
+scilab2ccode.deps.i16catS=[]
+scilab2ccode.deps.u8cata=[]
+scilab2ccode.deps.u8cats=[]
+scilab2ccode.deps.u16cata=[]
+scilab2ccode.deps.u16cats=[]
+
+//OpRc
+scilab2ccode.deps.crowcats=[]
+scilab2ccode.deps.crowcata=[]
+scilab2ccode.deps.drowcats=[]
+scilab2ccode.deps.drowcata=[]
+scilab2ccode.deps.srowcats=[]
+scilab2ccode.deps.srowcata=[]
+scilab2ccode.deps.zrowcats=[]
+scilab2ccode.deps.zrowcata=[]
+
+
+//OpCc
+scilab2ccode.deps.ccolumncats=[]
+scilab2ccode.deps.ccolumncata=[]
+scilab2ccode.deps.dcolumncats=[]
+scilab2ccode.deps.dcolumncata=[]
+scilab2ccode.deps.scolumncats=[]
+scilab2ccode.deps.scolumncata=[]
+scilab2ccode.deps.zcolumncats=[]
+scilab2ccode.deps.zcolumncata=[]
+
+
+//chol
+scilab2ccode.deps.cchola=["DoubleComplex","creals","cimags","FloatComplex","zreals","zimags","cdiffs","cmuls","crdivs","csqrts"]
+scilab2ccode.deps.dchols=["dsqrts"]
+scilab2ccode.deps.dchola=[]
+scilab2ccode.deps.schols=["ssqrts"]
+scilab2ccode.deps.schola=["ssqrts"]
+scilab2ccode.deps.zchola=["DoubleComplex","zreals","zimags","zdiffs","zmuls","zrdivs","zsqrts"]
+//cumprod
+scilab2ccode.deps.dcolumncumproda=[]
+scilab2ccode.deps.dcumproda=[]
+scilab2ccode.deps.drowcumproda=[]
+scilab2ccode.deps.i8columncumproda=[]
+scilab2ccode.deps.i8cumproda=[]
+scilab2ccode.deps.i8rowcumproda=[]
+scilab2ccode.deps.i16columncumproda=[]
+scilab2ccode.deps.i16cumproda=[]
+scilab2ccode.deps.i16rowcumproda=[]
+scilab2ccode.deps.scolumncumproda=[]
+scilab2ccode.deps.scumproda=[]
+scilab2ccode.deps.srowcumproda=[]
+scilab2ccode.deps.u8columncumproda=[]
+scilab2ccode.deps.u8cumproda=[]
+scilab2ccode.deps.u8rowcumproda=[]
+scilab2ccode.deps.u16columncumproda=[]
+scilab2ccode.deps.u16cumproda=[]
+scilab2ccode.deps.u16rowcumproda=[]
+
+//cumcum
+scilab2ccode.deps.dcolumncumsuma=[]
+scilab2ccode.deps.dcumsuma=[]
+scilab2ccode.deps.drowcumsuma=[]
+scilab2ccode.deps.i8columncumsuma=[]
+scilab2ccode.deps.i8cumsuma=[]
+scilab2ccode.deps.i8rowcumsuma=[]
+scilab2ccode.deps.i16columncumsuma=[]
+scilab2ccode.deps.i16cumsuma=[]
+scilab2ccode.deps.i16rowcumsuma=[]
+scilab2ccode.deps.scolumncumsuma=[]
+scilab2ccode.deps.scumsuma=[]
+scilab2ccode.deps.srowcumsuma=[]
+scilab2ccode.deps.u8columncumsuma=[]
+scilab2ccode.deps.u8cumsuma=[]
+scilab2ccode.deps.u8rowcumsuma=[]
+scilab2ccode.deps.u16columncumsuma=[]
+scilab2ccode.deps.u16cumsuma=[]
+scilab2ccode.deps.u16rowcumsuma=[]
+
+//determ
+scilab2ccode.deps.cdeterma=["cdiffs","FloatComplex","cmuls","cadds","DoubleComplex","creals","cimags","zreals","zimags","zmuls","crdivs"]
+scilab2ccode.deps.ddeterma=[]
+scilab2ccode.deps.sdeterma=[]
+scilab2ccode.deps.zdeterma=["zdiffs","zmuls","DoubleComplex","zadds","zreals","zimags","zrdivs"]
+scilab2ccode.deps.i8determa=[]
+scilab2ccode.deps.i16determa=[]
+scilab2ccode.deps.u8determa=[]
+scilab2ccode.deps.u16determa=[]
+
+//diag
+scilab2ccode.deps.ddiaga=[]
+scilab2ccode.deps.ddiagexa=[]
+scilab2ccode.deps.ddiagexs=[]
+scilab2ccode.deps.ddiagina=[]
+scilab2ccode.deps.ddiagins=[]
+scilab2ccode.deps.ddiags=[]
+scilab2ccode.deps.i8diags=[]
+scilab2ccode.deps.i8diagexa=[]
+scilab2ccode.deps.i8diagexs=[]
+scilab2ccode.deps.i8diagina=[]
+scilab2ccode.deps.i8diagins=[]
+scilab2ccode.deps.i8diags=[]
+scilab2ccode.deps.i16diaga=[]
+scilab2ccode.deps.i16diags=[]
+scilab2ccode.deps.i16diagexa=[]
+scilab2ccode.deps.i16diagexs=[]
+scilab2ccode.deps.i16diagina=[]
+scilab2ccode.deps.i16diagins=[]
+scilab2ccode.deps.u8diaga=[]
+scilab2ccode.deps.u8diags=[]
+scilab2ccode.deps.u8diagexa=[]
+scilab2ccode.deps.u8diagexs=[]
+scilab2ccode.deps.u8diagina=[]
+scilab2ccode.deps.u8diagins=[]
+scilab2ccode.deps.u16diaga=[]
+scilab2ccode.deps.u16diags=[]
+scilab2ccode.deps.u16diagexa=[]
+scilab2ccode.deps.u16diagexs=[]
+scilab2ccode.deps.u16diagina=[]
+scilab2ccode.deps.u16diagins=[]
+
+//dist
+scilab2ccode.deps.cdists=["spows","creals","cimags","ssqrts"]
+scilab2ccode.deps.cdista=["spows","creals","cimags","ssqrts"]
+scilab2ccode.deps.ddists=["dpows","dsqrts"]
+scilab2ccode.deps.ddista=["dpows","dsqrts"]
+scilab2ccode.deps.sdists=["spows","ssqrts"]
+scilab2ccode.deps.sdista=["spows","ssqrts"]
+scilab2ccode.deps.zdists=["dpows","zreals","zimags","dsqrts"]
+scilab2ccode.deps.zdista=["dpows","zreals","zimags","dsqrts"]
+
+//division
+scilab2ccode.deps.crdivcsv=["crdivv"]
+scilab2ccode.deps.crdivscv=["crdivv"]
+scilab2ccode.deps.crdivv=["crdivma","FloatComplex"]
+scilab2ccode.deps.drdivv=["drdivma"]
+scilab2ccode.deps.i8rdivma=["dtransposea"]
+scilab2ccode.deps.i8ldivma=[]
+scilab2ccode.deps.i8rdivv=["i8rdivma"]
+scilab2ccode.deps.i16ldivma=[]
+scilab2ccode.deps.i16rdivma=["dtransposea"]
+scilab2ccode.deps.i16rdivv=["i16rdivma"]
+scilab2ccode.deps.srdivv=["srdivma"]
+scilab2ccode.deps.u8rdivma=["dtransposea"]
+scilab2ccode.deps.u8ldivma=[]
+scilab2ccode.deps.u8rdivv=["u8rdivma"]
+scilab2ccode.deps.u16ldivma=[]
+scilab2ccode.deps.u16rdivma=["dtransposea"]
+scilab2ccode.deps.u16rdivv=["u16rdivma"]
+scilab2ccode.deps.zrdivdzv=["dzerosa","zrdivv"]
+scilab2ccode.deps.zrdivv=["zrdivma","DoubleComplex"]
+scilab2ccode.deps.zrdivzdv=["dzerosa","zrdivv"]
+
+
+//OpSlash
+scilab2ccode.deps.crdivma=["DoubleComplex","creals","cimags","zrdivma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.drdivma=["dtransposea"]
+scilab2ccode.deps.srdivma=["drdivma"]
+scilab2ccode.deps.zrdivma=["ztransposea","zconja","DoubleComplex","zreals","zimags"]
+
+
+//OpBackSlash
+scilab2ccode.deps.cldivma=["DoubleComplex","creals","cimags","zldivma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.dldivma=[]
+scilab2ccode.deps.sldivma=["dldivma"]
+scilab2ccode.deps.zldivma=[]
+
+
+//expm
+scilab2ccode.deps.cexpma=["sfrexps","cinfnorma","spows","crdivs","FloatComplex","ceyea","cmuls","cadda","cdiffa","cmulma","cldivma"]
+scilab2ccode.deps.dexpma=["dfrexps","dinfnorma","dpows","deyea","dadda","ddiffa","dmulma","dldivma"]
+scilab2ccode.deps.sexpma=["sfrexps","sinfnorma","spows","seyea","sadda","sdiffa","smulma","sldivma"]
+scilab2ccode.deps.zexpma=["dfrexps","zinfnorma","zrdivs","DoubleComplex","zeyea","zmuls","zadda","zdiffa","zmulma","zldivma"]
+
+
+//eye
+scilab2ccode.deps.ceyea= ["FloatComplex"]
+scilab2ccode.deps.deyea= []
+scilab2ccode.deps.seyea= []
+scilab2ccode.deps.zeyea= ["DoubleComplex"]
+scilab2ccode.deps.i8eyea= []
+scilab2ccode.deps.i16eyea= []
+scilab2ccode.deps.u8eyea= []
+scilab2ccode.deps.u16eyea= []
+
+//fill
+scilab2ccode.deps.cfilla=["conesa","cmuls"]
+scilab2ccode.deps.dfilla=["donesa"]
+scilab2ccode.deps.sfilla=["sonesa"]
+scilab2ccode.deps.zfilla=["zonesa","zmuls"]
+
+//flipdim
+scilab2ccode.deps.dflipdima=[]
+scilab2ccode.deps.i8flipdima=[]
+scilab2ccode.deps.i16flipdima=[]
+scilab2ccode.deps.sflipdima=[]
+scilab2ccode.deps.u8flipdima=[]
+scilab2ccode.deps.u16flipdima=[]
+
+//hilb
+scilab2ccode.deps.dhilba=[]
+scilab2ccode.deps.shilba=[]
+
+
+//infinite norm
+scilab2ccode.deps.cinfnorma=["spythags","creals","cimags"]
+scilab2ccode.deps.dinfnorma=[]
+scilab2ccode.deps.sinfnorma=[]
+scilab2ccode.deps.zinfnorma=["dpythags","zreals","zimags"]
+
+
+//inversion
+scilab2ccode.deps.cinverma=["DoubleComplex","creals","cimags","zinverma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.dinverma=[]
+scilab2ccode.deps.sinverma=["dinverma"]
+scilab2ccode.deps.zinverma=[]
+scilab2ccode.deps.i8inverma=[]
+scilab2ccode.deps.i16inverma=[]
+scilab2ccode.deps.u8inverma=[]
+scilab2ccode.deps.u16inverma=[]
+
+
+//jmat
+scilab2ccode.deps.djmata=[]
+scilab2ccode.deps.sjmata=[]
+
+//kron
+scilab2ccode.deps.dkrona=[]
+scilab2ccode.deps.skrona=[]
+
+//logm
+scilab2ccode.deps.clogma=["DoubleComplex","creals","cimags","zlogma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.dlogma=["DoubleComplex","zlogma"]
+scilab2ccode.deps.slogma=["DoubleComplex","zlogma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.zlogma=["ztransposea","zreals","zimags","zlogs","DoubleComplex","zmulma","zinverma"]
+
+
+//magnitude
+scilab2ccode.deps.cmagns=["creals","cimags","ssqrts"]
+scilab2ccode.deps.cmagna=["cmagns"]
+scilab2ccode.deps.dmagns=[]
+scilab2ccode.deps.dmagna=["dmagns"]
+scilab2ccode.deps.smagns=[]
+scilab2ccode.deps.smagna=["smagns"]
+scilab2ccode.deps.zmagns=["zreals","zimags","dsqrts"]
+scilab2ccode.deps.zmagna=["zmagns"]
+scilab2ccode.deps.i8magna=[]
+scilab2ccode.deps.i8magns=["i8abss"]
+scilab2ccode.deps.i16magna=["dmagns"]
+scilab2ccode.deps.i16magns=["i16abss"]
+scilab2ccode.deps.u8magna=["dmagns"]
+scilab2ccode.deps.u8magns=["u8abss"]
+scilab2ccode.deps.u16magna=["dmagns"]
+scilab2ccode.deps.u16magns=["u16abss"]
+
+//OpStar
+scilab2ccode.deps.cmulma=["FloatComplex","cadds","cmuls"]
+scilab2ccode.deps.dmulma=[]
+scilab2ccode.deps.smulma=[]
+scilab2ccode.deps.zmulma=["zreala","zimaga","DoubleComplex","zadds","zmuls"]
+scilab2ccode.deps.i8mulma=[]
+scilab2ccode.deps.i16mulma=[]
+scilab2ccode.deps.u8mulma=[]
+scilab2ccode.deps.u16mulma=[]
+
+//norm
+scilab2ccode.deps.dnorma=[]
+scilab2ccode.deps.dnormv=[]
+scilab2ccode.deps.snorma=[]
+scilab2ccode.deps.snormv=[]
+
+//ones
+scilab2ccode.deps.conesa=["FloatComplex"]
+scilab2ccode.deps.donesa=[]
+scilab2ccode.deps.sonesa=[]
+scilab2ccode.deps.zonesa=["DoubleComplex"]
+scilab2ccode.deps.i8onesa=[]
+scilab2ccode.deps.i16onesa=[]
+scilab2ccode.deps.u8onesa=[]
+scilab2ccode.deps.u16onesa=[]
+
+//powm
+scilab2ccode.deps.cpowma=["creals","cimags","cspec2a","cpows","cmulma","ctransposea","cconja","cinverma"]
+scilab2ccode.deps.dpowma=["dzerosa","zspec2a","zpows","zmulma","ztransposea","zconja","zinverma","zreals","DoubleComplex"]
+scilab2ccode.deps.spowma=["szerosa","cspec2a","cpows","FloatComplex","cmulma","ctransposea","cconja","cinverma","creals"]
+scilab2ccode.deps.zpowma=["zreals","zimags","zspec2a","zpows","zmulma","ztransposea","zconja","zinverma"]
+
+//spec
+scilab2ccode.deps.cspeca=["DoubleComplex","creals","cimags","zspeca","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.dspeca=[]
+scilab2ccode.deps.sspeca=["dspeca"]
+scilab2ccode.deps.zspeca=["DoubleComplex","zreals","zimags","zconjs","dzerosa"]
+
+//spec2
+scilab2ccode.deps.cspec2a=["DoubleComplex","creals","cimags","zspec2a","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.dspec2a=["dzerosa"]
+scilab2ccode.deps.sspec2a=["dspec2a"]
+scilab2ccode.deps.zspec2a=["DoubleComplex","zreals","zimags","dzerosa"]
+
+//Squared Magnitude
+scilab2ccode.deps.csquMagns=["creals","cimags"]
+scilab2ccode.deps.csquMagna=["cmagna"]
+scilab2ccode.deps.dsquMagns=[]
+scilab2ccode.deps.dsquMagna=["dmagna"]
+scilab2ccode.deps.ssquMagns=[]
+scilab2ccode.deps.ssquMagna=["smagna"]
+scilab2ccode.deps.zsquMagns=["zreals","zimags"]
+scilab2ccode.deps.zsquMagna=["zmagna"]
+
+
+//trace
+scilab2ccode.deps.ctracea=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.dtracea=[]
+scilab2ccode.deps.stracea=[]
+scilab2ccode.deps.ztracea=["zreals","zimags","DoubleComplex"]
+scilab2ccode.deps.i8tracea=[]
+scilab2ccode.deps.i16tracea=[]
+scilab2ccode.deps.u8tracea=[]
+scilab2ccode.deps.u16tracea=[]
+
+
+//transpose
+scilab2ccode.deps.ctransposea=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.dtransposea=[]
+scilab2ccode.deps.stransposea=[]
+scilab2ccode.deps.ztransposea=["zreals","zimags","DoubleComplex"]
+scilab2ccode.deps.i8transposea=[]
+scilab2ccode.deps.i16transposea=[]
+scilab2ccode.deps.u8transposea=[]
+scilab2ccode.deps.u16transposea=[]
+
+//tril
+scilab2ccode.deps.dtrila=[]
+scilab2ccode.deps.i8trila=[]
+scilab2ccode.deps.i16trila=[]
+scilab2ccode.deps.strila=[]
+scilab2ccode.deps.u8trila=[]
+scilab2ccode.deps.u16trila=[]
+
+//triu
+scilab2ccode.deps.dtriua=[]
+scilab2ccode.deps.i8triua=[]
+scilab2ccode.deps.i16triua=[]
+scilab2ccode.deps.striua=[]
+scilab2ccode.deps.u8triua=[]
+scilab2ccode.deps.u16triua=[]
+
+//zeros
+scilab2ccode.deps.czerosa=["FloatComplex"]
+scilab2ccode.deps.dzerosa=[]
+scilab2ccode.deps.dzerosh=[]
+scilab2ccode.deps.i8zerosa=[]
+scilab2ccode.deps.i16zerosa=[]
+scilab2ccode.deps.szerosa=[]
+scilab2ccode.deps.u8zerosa=[]
+scilab2ccode.deps.u16zerosa=[]
+scilab2ccode.deps.zzerosa=["DoubleComplex"]
+
+////////////////////////
+////// OPERATIONS //////
+////////////////////////
+
+
+//addition
+scilab2ccode.deps.cadds=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.cadda=["cadds"]
+scilab2ccode.deps.dadds=[]
+scilab2ccode.deps.dadda=["dadds"]
+scilab2ccode.deps.sadds=[]
+scilab2ccode.deps.sadda=["sadds"]
+scilab2ccode.deps.zadds=["zreals","zimags","DoubleComplex"]
+scilab2ccode.deps.zadda=["zadds"]
+scilab2ccode.deps.i8adda=["i8adds"]
+scilab2ccode.deps.i8adds=[]
+scilab2ccode.deps.i16adda=["i16adds"]
+scilab2ccode.deps.i16adds=[]
+scilab2ccode.deps.u8adda=["u8adds"]
+scilab2ccode.deps.u8adds=[]
+scilab2ccode.deps.u16adda=["u16adds"]
+scilab2ccode.deps.u16adds=[]
+
+
+//division
+scilab2ccode.deps.crdivs=["FloatComplex"]
+scilab2ccode.deps.crdiva=["crdivs"]
+scilab2ccode.deps.drdivs=[]
+scilab2ccode.deps.drdiva=["drdivs"]
+scilab2ccode.deps.srdivs=[]
+scilab2ccode.deps.srdiva=["srdivs"]
+scilab2ccode.deps.zrdivs=["DoubleComplex"]
+scilab2ccode.deps.zrdiva=["zrdivs"]
+scilab2ccode.deps.cldivs=["cmuls","cconjs","creals","cimags","FloatComplex","crdivs"]
+scilab2ccode.deps.cldiva=["cldivs"]
+scilab2ccode.deps.dldivs=[]
+scilab2ccode.deps.dldiva=["dldivs"]
+scilab2ccode.deps.sldivs=[]
+scilab2ccode.deps.sldiva=["scldivs"]
+scilab2ccode.deps.zldivs=["zmuls","zconjs","zreals","zimags","DoubleComplex","zrdivs"]
+scilab2ccode.deps.zldiva=["zldivs"]
+scilab2ccode.deps.i8ldiva=["i8ldivs"]
+scilab2ccode.deps.i8ldivs=[]
+scilab2ccode.deps.i8rdiva=["i8rdivs"]
+scilab2ccode.deps.i8rdivs=[]
+scilab2ccode.deps.i16ldiva=["i16ldivs"]
+scilab2ccode.deps.i16ldivs=[]
+scilab2ccode.deps.i16rdiva=["i16rdivs"]
+scilab2ccode.deps.i16rdivs=[]
+scilab2ccode.deps.u8ldiva=["u8ldivs"]
+scilab2ccode.deps.u8ldivs=[]
+scilab2ccode.deps.u8rdiva=["u8rdivs"]
+scilab2ccode.deps.u8rdivs=[]
+scilab2ccode.deps.u16ldiva=["u16ldivs"]
+scilab2ccode.deps.u16ldivs=[]
+scilab2ccode.deps.u16rdiva=["u16rdivs"]
+scilab2ccode.deps.u16rdivs=[]
+
+//multiplication
+scilab2ccode.deps.cmuls=["FloatComplex"]
+scilab2ccode.deps.cmula=["cmuls"]
+scilab2ccode.deps.dmuls=[]
+scilab2ccode.deps.dmula=["dmuls"]
+scilab2ccode.deps.smuls=[]
+scilab2ccode.deps.smula=["smuls"]
+scilab2ccode.deps.zmuls=["DoubleComplex"]
+scilab2ccode.deps.zmula=["zmuls"]
+scilab2ccode.deps.cmulcsv=["cmulv"]
+scilab2ccode.deps.cmulscv=["cmulv"]
+scilab2ccode.deps.cmulv=["cadds"]
+scilab2ccode.deps.dmulv=["dmuls"]
+scilab2ccode.deps.i8muls=[]
+scilab2ccode.deps.i8mula=["i8muls"]
+scilab2ccode.deps.i8mulv=["i8muls"]
+scilab2ccode.deps.i16muls=[]
+scilab2ccode.deps.i16mula=["i16muls"]
+scilab2ccode.deps.i16mulv=["i16muls"]
+scilab2ccode.deps.smulv=["smuls"]
+scilab2ccode.deps.u8muls=[]
+scilab2ccode.deps.u8mula=["u8muls"]
+scilab2ccode.deps.u8mulv=["u8muls"]
+scilab2ccode.deps.u16muls=[]
+scilab2ccode.deps.u16mula=["u16muls"]
+scilab2ccode.deps.u16mulv=["u16muls"]
+scilab2ccode.deps.zmuldzv=["dzerosa","zmulv"]
+scilab2ccode.deps.zmulzdv=["dzerosa","zmulv"]
+scilab2ccode.deps.zmulv=["zadds"]
+
+//subtraction
+scilab2ccode.deps.cdiffs=["creals","cimags","FloatComplex"]
+scilab2ccode.deps.cdiffa=["cdiffs"]
+scilab2ccode.deps.ddiffs=[]
+scilab2ccode.deps.ddiffa=["ddiffs"]
+scilab2ccode.deps.sdiffs=[]
+scilab2ccode.deps.sdiffa=["sdiffs"]
+scilab2ccode.deps.zdiffs=["zreals","zimags","DoubleComplex"]
+scilab2ccode.deps.zdiffa=["zdiffs"]
+scilab2ccode.deps.i8diffs=[]
+scilab2ccode.deps.i8diffa=["i8diffs"]
+scilab2ccode.deps.i16diffa=["i16diffs"]
+scilab2ccode.deps.i16diffs=[]
+scilab2ccode.deps.u8diffa=["u8diffs"]
+scilab2ccode.deps.u8diffs=[]
+scilab2ccode.deps.u16diffa=["u16diffs"]
+scilab2ccode.deps.u16diffs=[]
+
+
+///////////////////////////////
+////// SIGNAL PROCESSING //////
+///////////////////////////////
+
+
+//conv
+scilab2ccode.deps.cconva=["FloatComplex","cfftma","cmula","cifftma"]
+scilab2ccode.deps.dconva=["DoubleComplex","zconva","zreala"]
+scilab2ccode.deps.sconva=["FloatComplex","cconva","creala"]
+scilab2ccode.deps.zconva=["DoubleComplex","zfftma","zmula","zifftma"]
+
+
+//conv2d
+scilab2ccode.deps.cconv2da=["FloatComplex","cadds","cmuls"]
+scilab2ccode.deps.dconv2da=[]
+scilab2ccode.deps.sconv2da=[]
+scilab2ccode.deps.zconv2da=["DoubleComplex","zadds","zmuls"]
+
+
+//cross correlation
+scilab2ccode.deps.ccrossCorra=["cconjs","cconv2da"]
+scilab2ccode.deps.dcrossCorra=["dconv2da"]
+scilab2ccode.deps.scrossCorra=["sconv2da"]
+scilab2ccode.deps.zcrossCorra=["zconjs","zconv2da"]
+
+
+//fft
+scilab2ccode.deps.cfftma=["DoubleComplex","creals","cimags","zfftma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.dfft2=["dfftbi"]
+scilab2ccode.deps.dfftbi=["dfftmx"]
+scilab2ccode.deps.dfftmx=[]
+scilab2ccode.deps.dfftma=["dzerosa","zfftma","zreala"]
+scilab2ccode.deps.fft842=["r2tx","r4tx","r8tx","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.r2tx=["zadds","zdiffs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.r4tx=["zadds","zdiffs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.r8tx=["zadds","zdiffs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.zfftma=["zreala","zimaga","fft842","dfft2","DoubleComplexMatrix"]
+scilab2ccode.deps.sfftma=["szerosa","cfftma","creala"]
+
+//hilbert
+scilab2ccode.deps.dhilberts=[]
+scilab2ccode.deps.dhilberta=["DoubleComplex","zfftma","zmuls","zifftma"]
+scilab2ccode.deps.shilberts=[]
+scilab2ccode.deps.shilberta=["FloatComplex","cfftma","cmuls","cifftma"]
+
+//fftshift
+scilab2ccode.deps.ccolumnfftshifta=[]
+scilab2ccode.deps.cfftshifta=["crowfftshifta","ccolumnfftshifta"]
+scilab2ccode.deps.crowfftshifta=[]
+scilab2ccode.deps.dcolumnfftshifta=[]
+scilab2ccode.deps.dfftshifta=["drowfftshifta","dcolumnfftshifta"]
+scilab2ccode.deps.drowfftshifta=[]
+scilab2ccode.deps.scolumnfftshifta=[]
+scilab2ccode.deps.sfftshifta=["srowfftshifta","scolumnfftshifta"]
+scilab2ccode.deps.srowfftshifta=[]
+scilab2ccode.deps.zcolumnfftshifta=[]
+scilab2ccode.deps.zfftshifta=["zrowfftshifta","zcolumnfftshifta"]
+scilab2ccode.deps.zrowfftshifta=[]
+
+
+//ifft
+scilab2ccode.deps.cifftma=["DoubleComplex","creals","cimags","zifftma","FloatComplex","zreals","zimags"]
+scilab2ccode.deps.difft2=["difftbi"]
+scilab2ccode.deps.difftbi=["difftmx"]
+scilab2ccode.deps.difftmx=[]
+scilab2ccode.deps.ifft842=["ir2tx","ir4tx","ir8tx","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.ir2tx=["zadds","zdiffs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.ir4tx=["zadds","zdiffs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.ir8tx=["zadds","zdiffs","DoubleComplex","zreals","zimags"]
+scilab2ccode.deps.zifftma=["zreala","zimaga","ifft842","difft2","DoubleComplexMatrix"]
+scilab2ccode.deps.diffbi_lavraie=[]
+scilab2ccode.deps.difftma=["dzerosa","zifftma","zreala"]
+scilab2ccode.deps.sifftma=["szerosa","cifftma","creala"]
+
+//lev
+scilab2ccode.deps.cleva=["crdivs","FloatComplex","creals","cimags","cmuls","cconjs","cdiffs","cadds"]
+scilab2ccode.deps.cleva2=["crdivs","FloatComplex","creals","cimags","cmuls","cconjs","cdiffs","cadds"]
+scilab2ccode.deps.dleva=[]
+scilab2ccode.deps.dleva2=[]
+scilab2ccode.deps.sleva=[]
+scilab2ccode.deps.sleva2=[]
+scilab2ccode.deps.zleva=["zrdivs","DoubleComplex","zreals","zimags","zmuls","zdiffs","zconjs","zadds"]
+scilab2ccode.deps.zleva2=["zrdivs","DoubleComplex","zreals","zimags","zmuls","zdiffs","zconjs","zadds"]
+
+
+//levin
+scilab2ccode.deps.dlevina=["dinitTab","dr1","dr2","dr3","dr4","dlevinmul","dinverma","dmulma","dlevinmul2","ddecalage","dlevinsub","dlevinsig"]
+scilab2ccode.deps.slevina=["sinitTab","sr1","sr2","sr3","sr4","slevinmul","sinverma","smulma","slevinmul2","sdecalage","slevinsub","slevinsig"]
+scilab2ccode.deps.dinitTab=[]
+scilab2ccode.deps.dr1=[]
+scilab2ccode.deps.dr2=[]
+scilab2ccode.deps.dr3=[]
+scilab2ccode.deps.dr4=[]
+scilab2ccode.deps.dlevinmul=[]
+scilab2ccode.deps.dlevinmul2=[]
+scilab2ccode.deps.ddecalage=[]
+scilab2ccode.deps.dlevinsub=[]
+scilab2ccode.deps.dlevinsig=[]
+scilab2ccode.deps.sinitTab=[]
+scilab2ccode.deps.sr1=[]
+scilab2ccode.deps.sr2=[]
+scilab2ccode.deps.sr3=[]
+scilab2ccode.deps.sr4=[]
+scilab2ccode.deps.slevinmul=[]
+scilab2ccode.deps.slevinmul2=[]
+scilab2ccode.deps.sdecalage=[]
+scilab2ccode.deps.slevinsub=[]
+scilab2ccode.deps.slevinsig=[]
+scilab2ccode.deps.levinUtils=[]
+
+//lpc2cep
+scilab2ccode.deps.clpc2cepa=["cfftma","clogma","cifftma"]
+scilab2ccode.deps.dlpc2cepa=["DoubleComplex","zfftma","zlogma","zifftma","zreala"]
+scilab2ccode.deps.slpc2cepa=["FloatComplex","cfftma","clogma","cifftma","creala"]
+scilab2ccode.deps.zlpc2cepa=["zfftma","zlogma","zifftma"]
+
+
+/////////////////////////////////
+////// STATISTIC FUNCTIONS //////
+/////////////////////////////////
+
+//max
+scilab2ccode.deps.dcolumnmaxa=[]
+scilab2ccode.deps.dmaxa=[]
+scilab2ccode.deps.drowmaxa=[]
+scilab2ccode.deps.i8columnmaxa=[]
+scilab2ccode.deps.i8maxa=[]
+scilab2ccode.deps.i8rowmaxa=[]
+scilab2ccode.deps.i16columnmaxa=[]
+scilab2ccode.deps.i16maxa=[]
+scilab2ccode.deps.i16rowmaxa=[]
+scilab2ccode.deps.scolumnmaxa=[]
+scilab2ccode.deps.smaxa=[]
+scilab2ccode.deps.srowmaxa=[]
+scilab2ccode.deps.u8columnmaxa=[]
+scilab2ccode.deps.u8maxa=[]
+scilab2ccode.deps.u8rowmaxa=[]
+scilab2ccode.deps.u16columnmaxa=[]
+scilab2ccode.deps.u16maxa=[]
+scilab2ccode.deps.u16rowmaxa=[]
+
+//mean
+scilab2ccode.deps.cmeana=["FloatComplex","cadds","creals","cimags"]
+scilab2ccode.deps.dmeana=[]
+scilab2ccode.deps.smeana=[]
+scilab2ccode.deps.zmeana=["DoubleComplex","zadds","zreals","zimags"]
+scilab2ccode.deps.ccolumnmeana=["ccolumnsuma","crdivs","FloatComplex"]
+scilab2ccode.deps.dcolumnmeana=["dcolumnsuma"]
+scilab2ccode.deps.scolumnmeana=["scolumnsuma"]
+scilab2ccode.deps.zcolumnmeana=["zcolumnsuma","zrdivs","DoubleComplex"]
+scilab2ccode.deps.crowmeana=["crowsuma","crdivs","FloatComplex"]
+scilab2ccode.deps.drowmeana=["drowsuma"]
+scilab2ccode.deps.srowmeana=["srowsuma"]
+scilab2ccode.deps.zrowmeana=["zrowsuma","zrdivs","DoubleComplex"]
+
+//meanf
+scilab2ccode.deps.cmeanfa=["FloatComplex","cadds","crdivs"]
+scilab2ccode.deps.dmeanfa=[]
+scilab2ccode.deps.smeanfa=[]
+scilab2ccode.deps.zmeanfa=["DoubleComplex","zadds","zmuls","zrdivs"]
+scilab2ccode.deps.ccolumnmeanfa=["cadds","cmuls","FloatComplex","crdivs"]
+scilab2ccode.deps.dcolumnmeanfa=[]
+scilab2ccode.deps.scolumnmeanfa=[]
+scilab2ccode.deps.zcolumnmeanfa=["zmuls","zrdivs","DoubleComplex","zadds"]
+scilab2ccode.deps.crowmeanfa=["cmuls","crdivs","FloatComplex","cadds"]
+scilab2ccode.deps.drowmeanfa=["drowsuma"]
+scilab2ccode.deps.srowmeanfa=[]
+scilab2ccode.deps.zrowmeanfa=["zmuls","zrdivs","DoubleComplex","zadds"]
+scilab2ccode.deps.cmeanfcs=["szerosa","cmeanfa"]
+scilab2ccode.deps.cmeanfsc=["szerosa","cmeanfa"]
+scilab2ccode.deps.zmeanfdz=["dzerosa","zmeanfa"]
+scilab2ccode.deps.zmeanfzd=["dzerosa","zmeanfa"]
+
+//min
+scilab2ccode.deps.dcolumnmina=[]
+scilab2ccode.deps.dmina=[]
+scilab2ccode.deps.drowmina=[]
+scilab2ccode.deps.i8columnmina=[]
+scilab2ccode.deps.i8mina=[]
+scilab2ccode.deps.i8rowmina=[]
+scilab2ccode.deps.i16columnmina=[]
+scilab2ccode.deps.i16mina=[]
+scilab2ccode.deps.i16rowmina=[]
+scilab2ccode.deps.scolumnmina=[]
+scilab2ccode.deps.smina=[]
+scilab2ccode.deps.srowmina=[]
+scilab2ccode.deps.u8columnmina=[]
+scilab2ccode.deps.u8mina=[]
+scilab2ccode.deps.u8rowmina=[]
+scilab2ccode.deps.u16columnmina=[]
+scilab2ccode.deps.u16mina=[]
+scilab2ccode.deps.u16rowmina=[]
+//prod
+scilab2ccode.deps.cproda=["cmuls"]
+scilab2ccode.deps.dproda=[]
+scilab2ccode.deps.sproda=[]
+scilab2ccode.deps.zproda=["zmuls"]
+scilab2ccode.deps.ccolumnproda=["cmuls"]
+scilab2ccode.deps.dcolumnproda=[]
+scilab2ccode.deps.scolumnproda=[]
+scilab2ccode.deps.zcolumnproda=["zmuls"]
+scilab2ccode.deps.crowproda=["cmuls"]
+scilab2ccode.deps.drowproda=[]
+scilab2ccode.deps.srowproda=[]
+scilab2ccode.deps.zrowproda=["zmuls"]
+
+//stdevf
+scilab2ccode.deps.ccolumnstdevfa=["FloatComplex","cpows","cdiffs","cmuls","cadds","sabss","creals","cimags","crdivs","csqrts"]
+scilab2ccode.deps.cstdevfa=["FloatComplex","cmeanfa","cpows","cmuls","cadds","crdivs","csqrts","cdiffs"]
+scilab2ccode.deps.crowstdevfa=["FloatComplex","crowmeanfa","cpows","cdiffs","cmuls","cadds""sabss","creals","cimags","crdivs","csqrts"]
+scilab2ccode.deps.cstdevfcs=["FloatComplex","cmeanfcs","cpows","cdiffs","cmuls","cadds","creals","cimags","csqrts"]
+scilab2ccode.deps.cstdevfsc=["szerosa","cstdevfa"]
+scilab2ccode.deps.dcolumnstdevfa=["dcolumnmeanfa","dpows","dsqrts"]
+scilab2ccode.deps.dstdevfa=[]
+scilab2ccode.deps.drowstdevfa=[]
+scilab2ccode.deps.i8columnmina=[]
+scilab2ccode.deps.i8mina=[]
+scilab2ccode.deps.i8rowmina=[]
+scilab2ccode.deps.i16columnmina=[]
+scilab2ccode.deps.i16mina=[]
+scilab2ccode.deps.i16rowmina=[]
+scilab2ccode.deps.scolumnmina=[]
+scilab2ccode.deps.smina=[]
+scilab2ccode.deps.srowmina=[]
+scilab2ccode.deps.u8columnmina=[]
+scilab2ccode.deps.u8mina=[]
+scilab2ccode.deps.u8rowmina=[]
+scilab2ccode.deps.u16columnmina=[]
+scilab2ccode.deps.u16mina=[]
+scilab2ccode.deps.u16rowmina=[]
+
+//sum
+scilab2ccode.deps.csuma=["cadds"]
+scilab2ccode.deps.dsuma=[]
+scilab2ccode.deps.ssuma=[]
+scilab2ccode.deps.zsuma=["zadds"]
+scilab2ccode.deps.ccolumnsuma=["cadds"]
+scilab2ccode.deps.dcolumnsuma=[]
+scilab2ccode.deps.scolumnsuma=[]
+scilab2ccode.deps.zcolumnsuma=["zadds"]
+scilab2ccode.deps.crowsuma=["cadds"]
+scilab2ccode.deps.drowsuma=[]
+scilab2ccode.deps.srowsuma=[]
+scilab2ccode.deps.zrowsuma=["zadds"]
+scilab2ccode.deps.i8suma=["i8adds"]
+scilab2ccode.deps.i8columnsuma=["i8adds"]
+scilab2ccode.deps.i8rowsuma=["i8adds"]
+scilab2ccode.deps.i16suma=["i16adds"]
+scilab2ccode.deps.i16columnsuma=["i16adds"]
+scilab2ccode.deps.i16rowsuma=["i16adds"]
+scilab2ccode.deps.u8suma=["u8adds"]
+scilab2ccode.deps.U8columnsuma=["u8adds"]
+scilab2ccode.deps.u8rowsuma=["u8adds"]
+scilab2ccode.deps.u16suma=["u16adds"]
+scilab2ccode.deps.u16columnsuma=["u16adds"]
+scilab2ccode.deps.u16rowsuma=["u16adds"]
+
+//variance
+scilab2ccode.deps.cvariancea=["FloatComplex","cmeana","cdiffs","cadds","cpows","creals","cimags","crdivs"]
+scilab2ccode.deps.dvariancea=["dmeana","dpows"]
+scilab2ccode.deps.svariancea=["smeana","spows"]
+scilab2ccode.deps.zvariancea=["DoubleComplex","zmeana","zdiffs","zadds","zpows","zreals","zimags","zrdivs"]
+scilab2ccode.deps.ccolumnvariancea=["cvariancea"]
+scilab2ccode.deps.dcolumnvariancea=["dvariancea"]
+scilab2ccode.deps.scolumnvariancea=["svariancea"]
+scilab2ccode.deps.zcolumnvariancea=["zvariancea"]
+scilab2ccode.deps.crowvariancea=["ctransposea","FloatComplex","creals","cimags","cvariancea"]
+scilab2ccode.deps.drowvariancea=["dtransposea","dvariancea"]
+scilab2ccode.deps.srowvariancea=["stransposea","svariancea"]
+scilab2ccode.deps.zrowvariancea=["ztransposea","DoubleComplex","zreals","zimags","zvariancea"]
+
+//variancef
+scilab2ccode.deps.cvariancefa=["FloatComplex","cmeanfa","cdiffs","cadds","cpows","cmuls","crdivs"]
+scilab2ccode.deps.dvariancefa=["dmeanfa","dpows"]
+scilab2ccode.deps.svariancefa=["smeanfa","spows"]
+scilab2ccode.deps.zvariancefa=["DoubleComplex","zmeanfa","zdiffs","zadds","zpows","zrdivs"]
+scilab2ccode.deps.ccolumnvariancefa=["cvariancefa","ctransposea"]
+scilab2ccode.deps.dcolumnvariancefa=["dvariancefa","dtransposea"]
+scilab2ccode.deps.scolumnvariancefa=["scolumnmeanfa","spows"]
+scilab2ccode.deps.zcolumnvariancefa=["zvariancefa","ztransposea"]
+scilab2ccode.deps.crowvariancefa=["cvariancefa"]
+scilab2ccode.deps.drowvariancefa=["dvariancefa"]
+scilab2ccode.deps.srowvariancefa=["svariancefa"]
+scilab2ccode.deps.zrowvariancefa=["zvariancefa"]
+
+
+////////////////////
+////// STRING //////
+////////////////////
+
+//convstr
+scilab2ccode.deps.gconvstrs=[]
+
+//disp
+scilab2ccode.deps.cdisps=["creals","cimags"]
+scilab2ccode.deps.cdispa=["creals","cimags"]
+scilab2ccode.deps.ddisps=[]
+scilab2ccode.deps.ddispa=[]
+scilab2ccode.deps.sdisps=[]
+scilab2ccode.deps.sdispa=[]
+scilab2ccode.deps.zdisps=["zreals","zimags"]
+scilab2ccode.deps.zdispa=["zreals","zimags"]
+scilab2ccode.deps.ddisph=[]
+scilab2ccode.deps.i8disps=[]
+scilab2ccode.deps.i8dispa=[]
+scilab2ccode.deps.i16disps=[]
+scilab2ccode.deps.i16dispa=[]
+scilab2ccode.deps.u8disps=[]
+scilab2ccode.deps.u8dispa=[]
+scilab2ccode.deps.u16disps=[]
+scilab2ccode.deps.u16dispa=[]
+
+//string
+scilab2ccode.deps.cstringa=["cstrings"]
+scilab2ccode.deps.cstrings=["creals","cimags"]
+scilab2ccode.deps.dstringa=["dstrings"]
+scilab2ccode.deps.dstrings=[]
+scilab2ccode.deps.i8stringa=["i8strings"]
+scilab2ccode.deps.i8strings=[]
+scilab2ccode.deps.i16stringa=["i16strings"]
+scilab2ccode.deps.i16strings=[]
+scilab2ccode.deps.sstringa=["sstrings"]
+scilab2ccode.deps.sstrings=[]
+scilab2ccode.deps.u8stringa=["u8strings"]
+scilab2ccode.deps.u8strings=[]
+scilab2ccode.deps.u16stringa=["u16strings"]
+scilab2ccode.deps.u16strings=[]
+scilab2ccode.deps.zstringa=["zstrings"]
+scilab2ccode.deps.zstrings=[]
+
+//strrchr
+scilab2ccode.deps.gstrrchra=[]
+
+//strrev
+scilab2ccode.deps.gstrreva=[]
+
+//strsubst
+scilab2ccode.deps.gstrsubsta=[]
+
+///////////////////
+////// TYPES //////
+///////////////////
+
+scilab2ccode.deps.floatComplex=["creals","cimags","FloatComplex","cisreals","cisimags"]
+scilab2ccode.deps.doubleComplex=["zreals","zimags","DoubleComplex","zisreals","zisimags"]
+
+//floatComplex
+scilab2ccode.deps.creals=[]
+scilab2ccode.deps.cimags=[]
+scilab2ccode.deps.creala=["creals"]
+scilab2ccode.deps.cimaga=["cimags"]
+scilab2ccode.deps.FloatComplex=[]
+scilab2ccode.deps.FloatComplexMatrix=["FloatComplex"]
+scilab2ccode.deps.cisreals=["cimags"]
+scilab2ccode.deps.cisimags=["creals"]
+
+
+//doubleComplex
+scilab2ccode.deps.zreals=[]
+scilab2ccode.deps.zimags=[]
+scilab2ccode.deps.zreala=["zreals"]
+scilab2ccode.deps.zimaga=["zimags"]
+scilab2ccode.deps.DoubleComplex=[]
+scilab2ccode.deps.DoubleComplexMatrix=["DoubleComplex"]
+scilab2ccode.deps.zisreals=["zimags"]
+scilab2ccode.deps.zisimags=["zreals"]
+
+//Arduino Functions
+scilab2ccode.deps.u8cmd_analog_ins=["duint16a","duint16s","i8uint16a","i8uint16s","i16uint16a","i16uint16s","suint16a","suint16s","u8uint16a","u8uint16s"]
+scilab2ccode.deps.u8cmd_analog_in_volts=["dfloats","dfloata","i8floats","i8floata","i16floats","i16floata","sfloats","sfloata","u8floats","u8floata","u16floats","u16floata"]
+scilab2ccode.deps.u8cmd_analog_outs=[]
+scilab2ccode.deps.u8cmd_analog_out_volts=[]
+scilab2ccode.deps.u8cmd_dcmotor_releases=[]
+scilab2ccode.deps.u8cmd_dcmotor_runs=[]
+scilab2ccode.deps.u8cmd_dcmotor_setups=[]
+scilab2ccode.deps.u8cmd_digital_ins=["duint8a","duint8s","i8uint8a","i8uint8s","i16uint8a","i16uint8s","suint8a","suint8s","u16uint8a","u16uint8s"]
+scilab2ccode.deps.u8cmd_digital_outs=[]
+scilab2ccode.deps.u8cmd_i2c_devs=["duint8a","duint8s","i8uint8a","i8uint8s","i16uint8a","i16uint8s","suint8a","suint8s","u16uint8a","u16uint8s"]
+scilab2ccode.deps.u8cmd_i2c_reads=[]
+scilab2ccode.deps.u8cmd_i2c_read_registers=[]
+scilab2ccode.deps.u8cmd_i2c_writes=[]
+scilab2ccode.deps.u8cmd_i2c_write_registers=[]
+scilab2ccode.deps.u8cmd_servo_attach=[]
+scilab2ccode.deps.u8cmd_servo_move=[]
+scilab2ccode.deps.u8cmd_servo_detach=[]
+scilab2ccode.deps.u16sleeps=[]
+
+endfunction
diff --git a/2.3-1/macros/findDeps/buildmacros.sce b/2.3-1/macros/findDeps/buildmacros.sce
new file mode 100644
index 00000000..60fd2843
--- /dev/null
+++ b/2.3-1/macros/findDeps/buildmacros.sce
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+tbx_build_macros(TOOLBOX_NAME, get_absolute_file_path('buildmacros.sce'));
+
+clear tbx_build_macros;
diff --git a/2.3-1/macros/findDeps/findDeps.sci b/2.3-1/macros/findDeps/findDeps.sci
new file mode 100644
index 00000000..965ae8e0
--- /dev/null
+++ b/2.3-1/macros/findDeps/findDeps.sci
@@ -0,0 +1,44 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) INRIA - 2009 - Arnaud TORSET
+//
+// 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
+
+
+function y=findDeps(x, deps)
+//give the dependances of x
+//
+
+nbArgsIn = size(deps.x,'c');
+//stocke deps.x dans y
+y=deps.x;
+for i=1:nbArgsIn,
+ //on boucle sur le nombre d'entrées afin de pouvoir extraire chaque éléments
+ //l'element est stockédans deps(deps.a(i))
+ for j=1:size(deps(deps.a(i)),'c'),
+ //on boucle sur les dependances de cet element afin de savoir s'il faut rajoutere des dependances
+ nouveau = 0;
+ for k=1:size(y,'c'),
+ //on boucle sur le nombre d'elements de y afin de faire une comparaison entre les elements
+ //presents et absents de la liste.
+ //S'il est absent de la liste(nouveau=0), on le rajoute à y, sinon(nouveau=1) on fait rien
+ if (deps(deps.a(i))(j)==deps.y(k)) then nouveau=nouveau+1;end;
+ end;
+ if (nouveau==0) then y(1,size(y,'c')+1)=deps(deps.a(i))(j);end;
+ end;
+end;
+
+//si le nb de parametres du début est égal à celui de la fin alors on arrete, sinon on continue
+nbArgsOut = size(deps.y,'c');
+if (nbArgsOut>nbArgsIn) then findDeps(y, deps);
+else if (nbArgsOut<nbArgsIn) then disp("error");end;
+end;
+
+endfunction
+
+
+
+
diff --git a/2.3-1/macros/findDeps/getAllHeaders.sci b/2.3-1/macros/findDeps/getAllHeaders.sci
new file mode 100644
index 00000000..85baef1a
--- /dev/null
+++ b/2.3-1/macros/findDeps/getAllHeaders.sci
@@ -0,0 +1,258 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+function allHeaders = getAllHeaders(SharedInfo)
+ Target = SharedInfo.Target;
+
+ //Header files common to all types of output format.
+ Standalone_headers = [
+ "includes/blas.h"
+ "includes/lapack.h"
+ "includes/constant.h"
+ "includes/f2c.h"
+ "includes/notFound.h"
+ "includes/sci2clib.h"
+ "src/c/auxiliaryFunctions/includes/abs.h"
+ "src/c/auxiliaryFunctions/includes/max.h"
+ "src/c/auxiliaryFunctions/includes/min.h"
+ "src/c/auxiliaryFunctions/includes/dynlib_auxiliaryfunctions.h"
+ "src/c/auxiliaryFunctions/includes/find2d.h"
+ "src/c/auxiliaryFunctions/includes/length.h"
+ "src/c/auxiliaryFunctions/includes/conj.h"
+ "src/c/auxiliaryFunctions/includes/find.h"
+ "src/c/auxiliaryFunctions/includes/frexp.h"
+ "src/c/auxiliaryFunctions/includes/rand.h"
+ "src/c/auxiliaryFunctions/includes/sign.h"
+ "src/c/auxiliaryFunctions/includes/size.h"
+ "src/c/auxiliaryFunctions/includes/type.h"
+ "src/c/auxiliaryFunctions/includes/pythag.h"
+ "src/c/auxiliaryFunctions/includes/isempty.h"
+ "src/c/auxiliaryFunctions/includes/isnan.h"
+ "src/c/type/doubleComplex.h"
+ "src/c/type/dynlib_type.h"
+ "src/c/type/floatComplex.h"
+ "src/c/type/types.h"
+ "src/c/matrixOperations/includes/cat.h"
+ "src/c/matrixOperations/includes/hilb.h"
+ "src/c/matrixOperations/includes/eye.h"
+ "src/c/matrixOperations/includes/matrixTrace.h"
+ "src/c/matrixOperations/includes/matrixExponential.h"
+ "src/c/matrixOperations/includes/matrixInversion.h"
+ "src/c/matrixOperations/includes/infiniteNorm.h"
+ "src/c/matrixOperations/includes/zeros.h"
+ "src/c/matrixOperations/includes/matrixMagnitude.h"
+ "src/c/matrixOperations/includes/chol.h"
+ "src/c/matrixOperations/includes/dist.h"
+ "src/c/matrixOperations/includes/fill.h"
+ "src/c/matrixOperations/includes/dynlib_matrixoperations.h"
+ "src/c/matrixOperations/includes/matrixPow.h"
+ "src/c/matrixOperations/includes/matrixDivision.h"
+ "src/c/matrixOperations/includes/jmat.h"
+ "src/c/matrixOperations/includes/logm.h"
+ "src/c/matrixOperations/includes/ones.h"
+ "src/c/matrixOperations/includes/matrixSquaredMagnitude.h"
+ "src/c/matrixOperations/includes/spec.h"
+ "src/c/matrixOperations/includes/matrixTranspose.h"
+ "src/c/matrixOperations/includes/determ.h"
+ "src/c/matrixOperations/includes/matrixMultiplication.h"
+ "src/c/matrixOperations/includes/diag.h"
+ "src/c/matrixOperations/includes/cumsum.h"
+ "src/c/matrixOperations/includes/cumprod.h"
+ "src/c/matrixOperations/includes/triu.h"
+ "src/c/matrixOperations/includes/tril.h"
+ "src/c/matrixOperations/includes/kron.h"
+ "src/c/matrixOperations/includes/flipdim.h"
+ "src/c/matrixOperations/includes/norm.h"
+ "src/c/elementaryFunctions/includes/cos.h"
+ "src/c/elementaryFunctions/includes/fix.h"
+ "src/c/elementaryFunctions/includes/exp.h"
+ "src/c/elementaryFunctions/includes/int.h"
+ "src/c/elementaryFunctions/includes/log.h"
+ "src/c/elementaryFunctions/includes/pow.h"
+ "src/c/elementaryFunctions/includes/sin.h"
+ "src/c/elementaryFunctions/includes/tan.h"
+ "src/c/elementaryFunctions/includes/round.h"
+ "src/c/elementaryFunctions/includes/log10.h"
+ "src/c/elementaryFunctions/includes/log1p.h"
+ "src/c/elementaryFunctions/includes/acos.h"
+ "src/c/elementaryFunctions/includes/asin.h"
+ "src/c/elementaryFunctions/includes/atan.h"
+ "src/c/elementaryFunctions/includes/floor.h"
+ "src/c/elementaryFunctions/includes/ceil.h"
+ "src/c/elementaryFunctions/includes/exp10.h"
+ "src/c/elementaryFunctions/includes/cosh.h"
+ "src/c/elementaryFunctions/includes/dynlib_elementaryfunctions.h"
+ "src/c/elementaryFunctions/includes/acosh.h"
+ "src/c/elementaryFunctions/includes/sinh.h"
+ "src/c/elementaryFunctions/includes/lnp1m1.h"
+ "src/c/elementaryFunctions/includes/tanh.h"
+ "src/c/elementaryFunctions/includes/sqrt.h"
+ "src/c/elementaryFunctions/includes/bitand.h"
+ "src/c/elementaryFunctions/includes/bitor.h"
+ "src/c/elementaryFunctions/includes/bitxor.h"
+ "src/c/elementaryFunctions/includes/bitcmp.h"
+ "src/c/elementaryFunctions/includes/bitset.h"
+ "src/c/elementaryFunctions/includes/bitget.h"
+ "src/c/elementaryFunctions/includes/linspace.h"
+ "src/c/elementaryFunctions/includes/logspace.h"
+ "src/c/elementaryFunctions/includes/asinh.h"
+ "src/c/elementaryFunctions/includes/atan2.h"
+ "src/c/elementaryFunctions/includes/atanh.h"
+ "src/c/elementaryFunctions/includes/uint8.h"
+ "src/c/elementaryFunctions/includes/int8.h"
+ "src/c/elementaryFunctions/includes/uint16.h"
+ "src/c/elementaryFunctions/includes/int16.h"
+ "src/c/elementaryFunctions/includes/acosd.h"
+ "src/c/elementaryFunctions/includes/acot.h"
+ "src/c/elementaryFunctions/includes/acotd.h"
+ "src/c/elementaryFunctions/includes/acoth.h"
+ "src/c/elementaryFunctions/includes/acsc.h"
+ "src/c/elementaryFunctions/includes/acscd.h"
+ "src/c/elementaryFunctions/includes/acsch.h"
+ "src/c/elementaryFunctions/includes/asec.h"
+ "src/c/elementaryFunctions/includes/asecd.h"
+ "src/c/elementaryFunctions/includes/asech.h"
+ "src/c/elementaryFunctions/includes/asind.h"
+ "src/c/elementaryFunctions/includes/atand.h"
+ "src/c/statisticsFunctions/includes/variance.h"
+ "src/c/statisticsFunctions/includes/sum.h"
+ "src/c/statisticsFunctions/includes/mean.h"
+ "src/c/statisticsFunctions/includes/meanf.h"
+ "src/c/statisticsFunctions/includes/stdevf.h"
+ "src/c/statisticsFunctions/includes/prod.h"
+ "src/c/statisticsFunctions/includes/dynlib_statisticsfunctions.h"
+ "src/c/statisticsFunctions/includes/statMax.h"
+ "src/c/statisticsFunctions/includes/statMin.h"
+ "src/c/operations/includes/subtraction.h"
+ "src/c/operations/includes/addition.h"
+ "src/c/operations/includes/dynlib_operations.h"
+ "src/c/operations/includes/division.h"
+ "src/c/operations/includes/multiplication.h"
+ "src/c/string/includes/dynlib_string.h"
+ "src/c/string/includes/disp.h"
+ "src/c/string/includes/str.h"
+ "src/c/signalProcessing/fft/fft_internal.h"
+ "src/c/signalProcessing/ifft/ifft_internal.h"
+ "src/c/signalProcessing/levin/levinUtils.h"
+ "src/c/signalProcessing/includes/hilbert.h"
+ "src/c/signalProcessing/includes/fft.h"
+ "src/c/signalProcessing/includes/lev.h"
+ "src/c/signalProcessing/includes/levin.h"
+ "src/c/signalProcessing/includes/conv.h"
+ "src/c/signalProcessing/includes/conv2d.h"
+ "src/c/signalProcessing/includes/ifft.h"
+ "src/c/signalProcessing/includes/fftshift.h"
+ "src/c/signalProcessing/includes/lpc2cep.h"
+ "src/c/signalProcessing/includes/dynlib_signalprocessing.h"
+ "src/c/signalProcessing/includes/crossCorr.h"
+ "src/c/implicitList/dynlib_implicitlist.h"
+ "src/c/implicitList/implicitList.h"
+ "src/c/differential_calculus/includes/ode.h"
+ "src/c/differential_calculus/includes/diffc.h"
+ "src/c/Files/includes/files.h"
+ "src/c/string/includes/convstr.h"
+ "src/c/string/includes/strsubst.h"
+ //"src/c/string/includes/strcmp.h"
+ "src/c/string/includes/strrev.h"
+ "src/c/string/includes/strrchr.h"
+ "src/c/elementaryFunctions/includes/dec2bin.h"
+ "src/c/elementaryFunctions/includes/dec2hex.h"
+ "src/c/elementaryFunctions/includes/dec2oct.h"
+ "src/c/elementaryFunctions/includes/oct2dec.h"
+ "src/c/elementaryFunctions/includes/hex2dec.h"
+ "src/c/elementaryFunctions/includes/bin2dec.h"
+ "src/c/elementaryFunctions/includes/dec2base.h"
+ "src/c/elementaryFunctions/includes/base2dec.h"
+ "src/c/elementaryFunctions/includes/cosd.h"
+ "src/c/elementaryFunctions/includes/cotd.h"
+ "src/c/elementaryFunctions/includes/coth.h"
+ "src/c/elementaryFunctions/includes/csc.h"
+ "src/c/elementaryFunctions/includes/cscd.h"
+ "src/c/elementaryFunctions/includes/csch.h"
+ "src/c/elementaryFunctions/includes/sec.h"
+ "src/c/elementaryFunctions/includes/secd.h"
+ "src/c/elementaryFunctions/includes/sech.h"
+ "src/c/elementaryFunctions/includes/get_float.h"
+ "src/c/elementaryFunctions/includes/factorial.h"
+ "src/c/elementaryFunctions/includes/primes.h"
+ "src/c/elementaryFunctions/includes/factor.h"
+ "src/c/CACSD/includes/syslin.h"
+ "src/c/CACSD/includes/lqr.h"
+ "src/c/CACSD/includes/lqe.h"
+ "src/c/CACSD/includes/obscont.h"
+ "src/c/linearAlgebra/includes/schur.h"
+ "src/c/linearAlgebra/includes/balanc.h"
+ "src/c/linearAlgebra/includes/rcond.h"];
+
+
+ //Header files required for "Arduino" output
+ Arduino_headers = [
+ "src/c/scilab-arduino/includes/cmd_digital_out.h"
+ "src/c/scilab-arduino/includes/cmd_digital_in.h"
+ "src/c/scilab-arduino/includes/cmd_analog_out.h"
+ "src/c/scilab-arduino/includes/cmd_analog_in.h"
+ "src/c/scilab-arduino/includes/cmd_dcmotor_setup.h"
+ "src/c/scilab-arduino/includes/cmd_dcmotor_run.h"
+ //"src/c/scilab-arduino/includes/cmd_servo_attach.h"
+ //"src/c/scilab-arduino/includes/cmd_servo_detach.h"
+ //"src/c/scilab-arduino/includes/cmd_servo_move.h"
+ "src/c/scilab-arduino/includes/sleep.h"
+ "src/c/scilab-arduino/includes/cmd_analog_in_volt.h"
+ "src/c/scilab-arduino/includes/cmd_analog_out_volt.h"
+ "src/c/scilab-arduino/includes/cmd_dcmotor_release.h"
+ "src/c/scilab-arduino/includes/cmd_i2c_dev.h"
+ "src/c/scilab-arduino/includes/cmd_i2c_write.h"
+ "src/c/scilab-arduino/includes/cmd_i2c_read.h"
+ "src/c/scilab-arduino/includes/cmd_i2c_read_register.h"
+ "src/c/scilab-arduino/includes/cmd_i2c_write_register.h"];
+
+ AVR_headers = [
+ "src/c/hardware/avr/includes/AVRPeripheralGPIO.h"
+ "src/c/hardware/avr/includes/AVRPeripheralADC.h"
+ "src/c/hardware/avr/includes/AVRPeripheralPWM.h"
+ "src/c/hardware/avr/includes/AVRUtil.h"
+ "src/c/hardware/avr/includes/AVRPeripheralTimer.h"
+ "src/c/hardware/avr/includes/AVRPeripheralUART.h"
+ ];
+
+ RPi_headers = [
+ "thirdparty/includes/WiringPi/wiringPi.h"
+ "thirdparty/includes/WiringPi/wiringSerial.h"
+ "src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h"
+ "src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h"
+ "src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h"
+ "src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h"
+ "src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h"
+ "src/c/hardware/rasberrypi/includes/RPIPeripheralPWM.h"
+ ];
+
+ OpenCV_headers = [
+ "src/c/imageProcessing/includes/cvcore.hpp"
+ "src/c/imageProcessing/includes/cvhighgui.hpp"
+ "src/c/imageProcessing/includes/cvimgproc.hpp"
+ "thirdparty/includes/OpenCV/"];
+
+ if Target == "StandAlone"
+ allHeaders = Standalone_headers;
+ elseif Target == "Arduino"
+ allHeaders = cat(1,Standalone_headers, Arduino_headers);
+ elseif Target == "AVR"
+ allHeaders = cat(1,Standalone_headers, AVR_headers);
+ elseif Target == "RPi"
+ allHeaders = cat(1,Standalone_headers, RPi_headers);
+ end
+
+ if (SharedInfo.OpenCVUsed == %T)
+ allHeaders = cat(1,allHeaders,OpenCV_headers);
+ end
+
+endfunction
diff --git a/2.3-1/macros/findDeps/getAllInterfaces.sci b/2.3-1/macros/findDeps/getAllInterfaces.sci
new file mode 100644
index 00000000..e5c7e0a5
--- /dev/null
+++ b/2.3-1/macros/findDeps/getAllInterfaces.sci
@@ -0,0 +1,247 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+function allInterfaces = getAllInterfaces(SharedInfo)
+ Target = SharedInfo.Target;
+ //Interface files common to all types of output format
+ Standalone_interfaces = [
+ "src/c/auxiliaryFunctions/interfaces/int_rand.h"
+ "src/c/auxiliaryFunctions/interfaces/int_sign.h"
+ "src/c/auxiliaryFunctions/interfaces/int_size.h"
+ "src/c/auxiliaryFunctions/interfaces/int_length.h"
+ "src/c/auxiliaryFunctions/interfaces/int_type.h"
+ "src/c/auxiliaryFunctions/interfaces/int_isempty.h"
+ "src/c/auxiliaryFunctions/interfaces/int_isnan.h"
+ "src/c/auxiliaryFunctions/interfaces/int_pythag.h"
+ "src/c/auxiliaryFunctions/interfaces/int_frexp.h"
+ "src/c/auxiliaryFunctions/interfaces/int_abs.h"
+ "src/c/auxiliaryFunctions/interfaces/int_max.h"
+ "src/c/auxiliaryFunctions/interfaces/int_min.h"
+ "src/c/auxiliaryFunctions/interfaces/int_conj.h"
+ "src/c/auxiliaryFunctions/interfaces/int_find.h"
+ "src/c/type/int_imag.h"
+ "src/c/type/int_real.h"
+ "src/c/matrixOperations/interfaces/int_vmagn.h"
+ "src/c/matrixOperations/interfaces/int_ones.h"
+ "src/c/matrixOperations/interfaces/int_spec.h"
+ "src/c/matrixOperations/interfaces/int_cat.h"
+ "src/c/matrixOperations/interfaces/int_zeros.h"
+ "src/c/matrixOperations/interfaces/int_OpBackSlash.h"
+ "src/c/matrixOperations/interfaces/int_OpApex.h"
+ "src/c/matrixOperations/interfaces/int_OpCc.h"
+ "src/c/matrixOperations/interfaces/int_OpRc.h"
+ "src/c/matrixOperations/interfaces/int_transpose.h"
+ "src/c/matrixOperations/interfaces/int_v2magn.h"
+ "src/c/matrixOperations/interfaces/int_invert.h"
+ "src/c/matrixOperations/interfaces/int_OpSlash.h"
+ "src/c/matrixOperations/interfaces/int_OpDotApex.h"
+ "src/c/matrixOperations/interfaces/int_trace.h"
+ "src/c/matrixOperations/interfaces/int_det.h"
+ "src/c/matrixOperations/interfaces/int_eye.h"
+ "src/c/matrixOperations/interfaces/int_OpStar.h"
+ "src/c/matrixOperations/interfaces/int_chol.h"
+ "src/c/matrixOperations/interfaces/int_dist.h"
+ "src/c/matrixOperations/interfaces/int_fill.h"
+ "src/c/matrixOperations/interfaces/int_expm.h"
+ "src/c/matrixOperations/interfaces/int_diag.h"
+ "src/c/matrixOperations/interfaces/int_cumsum.h"
+ "src/c/matrixOperations/interfaces/int_cumprod.h"
+ "src/c/matrixOperations/interfaces/int_triu.h"
+ "src/c/matrixOperations/interfaces/int_tril.h"
+ "src/c/matrixOperations/interfaces/int_kron.h"
+ "src/c/matrixOperations/interfaces/int_flipdim.h"
+ "src/c/matrixOperations/interfaces/int_permute.h"
+ "src/c/matrixOperations/interfaces/int_norm.h"
+ "src/c/elementaryFunctions/interfaces/int_asinh.h"
+ "src/c/elementaryFunctions/interfaces/int_atanh.h"
+ "src/c/elementaryFunctions/interfaces/int_sinh.h"
+ "src/c/elementaryFunctions/interfaces/int_tanh.h"
+ "src/c/elementaryFunctions/interfaces/int_sqrt.h"
+ "src/c/elementaryFunctions/interfaces/int_OpDotHat.h"
+ "src/c/elementaryFunctions/interfaces/int_OpHat.h"
+ "src/c/elementaryFunctions/interfaces/int_lnp1m1.h"
+ "src/c/elementaryFunctions/interfaces/int_round.h"
+ "src/c/elementaryFunctions/interfaces/int_log10.h"
+ "src/c/elementaryFunctions/interfaces/int_log1p.h"
+ "src/c/elementaryFunctions/interfaces/int_floor.h"
+ "src/c/elementaryFunctions/interfaces/int_exp10.h"
+ "src/c/elementaryFunctions/interfaces/int_cos.h"
+ "src/c/elementaryFunctions/interfaces/int_fix.h"
+ "src/c/elementaryFunctions/interfaces/int_exp.h"
+ "src/c/elementaryFunctions/interfaces/int_int.h"
+ "src/c/elementaryFunctions/interfaces/int_log.h"
+ "src/c/elementaryFunctions/interfaces/int_pow.h"
+ "src/c/elementaryFunctions/interfaces/int_sin.h"
+ "src/c/elementaryFunctions/interfaces/int_tan.h"
+ "src/c/elementaryFunctions/interfaces/int_acosh.h"
+ "src/c/elementaryFunctions/interfaces/int_acos.h"
+ "src/c/elementaryFunctions/interfaces/int_asin.h"
+ "src/c/elementaryFunctions/interfaces/int_atan.h"
+ "src/c/elementaryFunctions/interfaces/int_ceil.h"
+ "src/c/elementaryFunctions/interfaces/int_bitand.h"
+ "src/c/elementaryFunctions/interfaces/int_bitor.h"
+ "src/c/elementaryFunctions/interfaces/int_bitxor.h"
+ "src/c/elementaryFunctions/interfaces/int_bitcmp.h"
+ "src/c/elementaryFunctions/interfaces/int_bitset.h"
+ "src/c/elementaryFunctions/interfaces/int_bitget.h"
+ "src/c/elementaryFunctions/interfaces/int_linspace.h"
+ "src/c/elementaryFunctions/interfaces/int_logspace.h"
+ "src/c/elementaryFunctions/interfaces/int_cosh.h"
+ "src/c/elementaryFunctions/interfaces/int_uint8.h"
+ "src/c/elementaryFunctions/interfaces/int_int8.h"
+ "src/c/elementaryFunctions/interfaces/int_uint16.h"
+ "src/c/elementaryFunctions/interfaces/int_int16.h"
+ "src/c/elementaryFunctions/interfaces/int_acosd.h"
+ "src/c/elementaryFunctions/interfaces/int_acot.h"
+ "src/c/elementaryFunctions/interfaces/int_acotd.h"
+ "src/c/elementaryFunctions/interfaces/int_acoth.h"
+ "src/c/elementaryFunctions/interfaces/int_acsc.h"
+ "src/c/elementaryFunctions/interfaces/int_acscd.h"
+ "src/c/elementaryFunctions/interfaces/int_acsch.h"
+ "src/c/elementaryFunctions/interfaces/int_asec.h"
+ "src/c/elementaryFunctions/interfaces/int_asecd.h"
+ "src/c/elementaryFunctions/interfaces/int_asech.h"
+ "src/c/elementaryFunctions/interfaces/int_asind.h"
+ "src/c/elementaryFunctions/interfaces/int_atand.h"
+ "src/c/statisticsFunctions/interfaces/int_mean.h"
+ "src/c/statisticsFunctions/interfaces/int_meanf.h"
+ "src/c/statisticsFunctions/interfaces/int_stdevf.h"
+ "src/c/statisticsFunctions/interfaces/int_prod.h"
+ "src/c/statisticsFunctions/interfaces/int_variance.h"
+ "src/c/statisticsFunctions/interfaces/int_sum.h"
+ "src/c/operations/interfaces/int_OpEqual.h"
+ "src/c/operations/interfaces/int_OpLogNot.h"
+ "src/c/operations/interfaces/int_OpLogEq.h"
+ "src/c/operations/interfaces/int_OpLogNe.h"
+ "src/c/operations/interfaces/int_OpLogGt.h"
+ "src/c/operations/interfaces/int_OpLogGe.h"
+ "src/c/operations/interfaces/int_OpLogLt.h"
+ "src/c/operations/interfaces/int_OpLogLe.h"
+ "src/c/operations/interfaces/int_OpLogAnd.h"
+ "src/c/operations/interfaces/int_OpLogOr.h"
+ "src/c/operations/interfaces/int_OpDotStar.h"
+ "src/c/operations/interfaces/int_OpDotSlash.h"
+ "src/c/operations/interfaces/int_OpBackSlash.h"
+ "src/c/operations/interfaces/int_OpDotBackSlash.h"
+ "src/c/operations/interfaces/int_OpSlash.h"
+ "src/c/operations/interfaces/int_OpPlus.h"
+ "src/c/operations/interfaces/int_OpMinus.h"
+ "src/c/operations/interfaces/int_OpStar.h"
+ "src/c/operations/interfaces/int_OpExt.h"
+ "src/c/operations/interfaces/int_OpIns.h"
+ "src/c/string/interfaces/int_disp.h"
+ "src/c/string/interfaces/int_string.h"
+ "src/c/signalProcessing/interfaces/int_ifft.h"
+ "src/c/signalProcessing/interfaces/int_lpc2cep.h"
+ "src/c/signalProcessing/interfaces/int_cepstrum.h"
+ "src/c/signalProcessing/interfaces/int_xcorr.h"
+ "src/c/signalProcessing/interfaces/int_convol.h"
+ "src/c/signalProcessing/interfaces/int_hilbert.h"
+ "src/c/signalProcessing/interfaces/int_levin.h"
+ "src/c/signalProcessing/interfaces/int_fftshift.h"
+ "src/c/signalProcessing/interfaces/int_fft.h"
+ "src/c/signalProcessing/interfaces/int_lev.h"
+ "src/c/implicitList/int_OpColon.h"
+ "src/c/differential_calculus/interfaces/int_ode.h"
+ "src/c/differential_calculus/interfaces/int_diffc.h"
+ "src/c/Files/interfaces/int_files.h"
+ "src/c/string/interfaces/int_convstr.h"
+ "src/c/string/interfaces/int_strsubst.h"
+ //"src/c/string/interfaces/int_strcmp.h"
+ "src/c/string/interfaces/int_strrev.h"
+ "src/c/string/interfaces/int_strrchr.h"
+ "src/c/elementaryFunctions/interfaces/int_dec2base.h"
+ "src/c/elementaryFunctions/interfaces/int_base2dec.h"
+ "src/c/elementaryFunctions/interfaces/int_dec2bin.h"
+ "src/c/elementaryFunctions/interfaces/int_dec2hex.h"
+ "src/c/elementaryFunctions/interfaces/int_dec2oct.h"
+ "src/c/elementaryFunctions/interfaces/int_oct2dec.h"
+ "src/c/elementaryFunctions/interfaces/int_hex2dec.h"
+ "src/c/elementaryFunctions/interfaces/int_bin2dec.h"
+ "src/c/elementaryFunctions/interfaces/int_cosd.h"
+ "src/c/elementaryFunctions/interfaces/int_cotd.h"
+ "src/c/elementaryFunctions/interfaces/int_coth.h"
+ "src/c/elementaryFunctions/interfaces/int_csc.h"
+ "src/c/elementaryFunctions/interfaces/int_cscd.h"
+ "src/c/elementaryFunctions/interfaces/int_csch.h"
+ "src/c/elementaryFunctions/interfaces/int_sec.h"
+ "src/c/elementaryFunctions/interfaces/int_secd.h"
+ "src/c/elementaryFunctions/interfaces/int_sech.h"
+ "src/c/elementaryFunctions/interfaces/int_float.h"
+ "src/c/elementaryFunctions/interfaces/int_factorial.h"
+ "src/c/elementaryFunctions/interfaces/int_primes.h"
+ "src/c/elementaryFunctions/interfaces/int_factor.h"
+ "src/c/CACSD/interfaces/int_syslin.h"
+ "src/c/CACSD/interfaces/int_lqr.h"
+ "src/c/CACSD/interfaces/int_lqe.h"
+ "src/c/CACSD/interfaces/int_obscont.h"
+ "src/c/linearAlgebra/interfaces/int_schur.h"
+ "src/c/linearAlgebra/interfaces/int_balanc.h"
+ "src/c/linearAlgebra/interfaces/int_rcond.h"];
+
+
+ //Interface files required for "Arduino" output
+ Arduino_interfaces = [
+ "src/c/scilab-arduino/interfaces/int_cmd_digital_out.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_digital_in.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_analog_out.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_analog_in.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_servo.h"
+ "src/c/scilab-arduino/interfaces/int_sleep.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_analog_in_volt.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_analog_out_volt.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h"
+ "src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h"];
+
+ //Interface files required for "AVR" output
+ AVR_interfaces = [
+ "src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h"
+ "src/c/hardware/avr/interfaces/int_AVRPeripheralADC.h"
+ "src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h"
+ "src/c/hardware/avr/interfaces/int_AVRUtil.h"
+ "src/c/hardware/avr/interfaces/int_AVRPeripheralTimer.h"
+ "src/c/hardware/avr/interfaces/int_AVRPeripheralUART.h"
+ ];
+
+ RPI_interfaces = [
+ "src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralDigital.h"
+ "src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h"
+ "src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h"
+ "src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h"
+ "src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h"
+ "src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPWM.h"
+ ];
+
+ OpenCV_interfaces = [
+ "src/c/imageProcessing/interfaces/int_cvcore.hpp"
+ "src/c/imageProcessing/interfaces/int_cvhighgui.hpp"
+ "src/c/imageProcessing/interfaces/int_cvimgproc.hpp"];
+
+ if Target == "StandAlone"
+ allInterfaces = Standalone_interfaces;
+ elseif Target == "Arduino"
+ allInterfaces = cat(1,Standalone_interfaces, Arduino_interfaces);
+ elseif Target == "AVR"
+ allInterfaces = cat(1,Standalone_interfaces, AVR_interfaces);
+ elseif Target == "RPi"
+ allInterfaces = cat(1,Standalone_interfaces, RPI_interfaces);
+ end
+
+ if (SharedInfo.OpenCVUsed == %T)
+ allInterfaces = cat(1,allInterfaces,OpenCV_interfaces)
+ end
+
+endfunction
diff --git a/2.3-1/macros/findDeps/getAllLibraries.sci b/2.3-1/macros/findDeps/getAllLibraries.sci
new file mode 100644
index 00000000..14fc020a
--- /dev/null
+++ b/2.3-1/macros/findDeps/getAllLibraries.sci
@@ -0,0 +1,82 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function allLibraries = getAllLibraries(SharedInfo)
+// -----------------------------------------------------------------
+// Select library files according to target specified
+//
+// Input data:
+// scilab2c SharedInfo structure
+//
+// Output data:
+// returns an array containing file paths for libraries
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+ Target = SharedInfo.Target;
+ //Library files required for "RasberryPi" target
+ RPi_libs = [
+ "thirdparty/lib/raspberrypi/libwiringPi.so"
+ "thirdparty/lib/raspberrypi/libcblas.a"
+ "thirdparty/lib/raspberrypi/librefblas.a"
+ "thirdparty/lib/raspberrypi/liblapack.a"
+ "thirdparty/lib/raspberrypi/libgfortran.a"
+ "thirdparty/lib/raspberrypi/libgsl.a"];
+
+ RPi_cvlibs = [
+ "thirdparty/lib/raspberrypi/libopencv_calib3d.a"
+ "thirdparty/lib/raspberrypi/libopencv_contrib.a"
+ "thirdparty/lib/raspberrypi/libopencv_core.a"
+ "thirdparty/lib/raspberrypi/libopencv_features2d.a"
+ "thirdparty/lib/raspberrypi/libopencv_flann.a"
+ "thirdparty/lib/raspberrypi/libopencv_gpu.a"
+ "thirdparty/lib/raspberrypi/libopencv_highgui.a"
+ "thirdparty/lib/raspberrypi/libopencv_imgproc.a"
+ "thirdparty/lib/raspberrypi/libopencv_legacy.a"
+ "thirdparty/lib/raspberrypi/libopencv_ml.a"
+ "thirdparty/lib/raspberrypi/libopencv_nonfree.a"
+ "thirdparty/lib/raspberrypi/libopencv_objdetect.a"
+ "thirdparty/lib/raspberrypi/libopencv_ocl.a"
+ "thirdparty/lib/raspberrypi/libopencv_photo.a"
+ "thirdparty/lib/raspberrypi/libopencv_stitching.a"
+ "thirdparty/lib/raspberrypi/libopencv_superres.a"
+ "thirdparty/lib/raspberrypi/libopencv_video.a"
+ "thirdparty/lib/raspberrypi/libopencv_videostab.a"
+ "thirdparty/lib/raspberrypi/libopencv_ts.a"
+ "thirdparty/lib/raspberrypi/libjpeg.a"
+ "thirdparty/lib/raspberrypi/libjasper.a"
+ "thirdparty/lib/raspberrypi/libpng.a"
+ "thirdparty/lib/raspberrypi/libIlmImf.a"
+ "thirdparty/lib/raspberrypi/libzlib.a"
+ "thirdparty/lib/raspberrypi/libtiff.a"];
+
+
+ if Target == "RPi"
+ allLibraries = RPi_libs;
+ if (SharedInfo.OpenCVUsed == %T)
+ allLibraries = cat(1,allLibraries,RPi_cvlibs)
+ end
+ elseif Target == "StandAlone"
+ allLibraries =["thirdparty/lib/pc/windows/x64/Lapack"];
+ if (SharedInfo.OpenCVUsed == %T)
+ os_arch = system_getproperty('os.arch');
+ if(getos() == 'Linux' & os_arch == 'amd64')
+ allLibraries = cat(1,allLibraries,"thirdparty/lib/pc/linux/x64/OpenCV")
+ elseif(getos() == 'Windows' & os_arch == 'amd64')
+ allLibraries = cat(1,allLibraries,"thirdparty/lib/pc/windows/x64/OpenCV")
+ end
+ end
+
+ else
+ allLibraries = [];
+ end
+
+endfunction
diff --git a/2.3-1/macros/findDeps/getAllSources.sci b/2.3-1/macros/findDeps/getAllSources.sci
new file mode 100644
index 00000000..4da4a9c6
--- /dev/null
+++ b/2.3-1/macros/findDeps/getAllSources.sci
@@ -0,0 +1,1319 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+function allSources = getAllSources(SharedInfo,BuildTool)
+ Target = SharedInfo.Target;
+
+ //Files common to types of output format
+ Standalone_files = [ "src/c/auxiliaryFunctions/abs/sabsa.c"
+ "src/c/auxiliaryFunctions/abs/sabss.c"
+ "src/c/auxiliaryFunctions/abs/zabsa.c"
+ "src/c/auxiliaryFunctions/abs/zabss.c"
+ "src/c/auxiliaryFunctions/abs/cabsa.c"
+ "src/c/auxiliaryFunctions/abs/cabss.c"
+ "src/c/auxiliaryFunctions/abs/dabsa.c"
+ "src/c/auxiliaryFunctions/abs/dabss.c"
+ "src/c/auxiliaryFunctions/abs/u8absa.c"
+ "src/c/auxiliaryFunctions/abs/u8abss.c"
+ "src/c/auxiliaryFunctions/abs/i8absa.c"
+ "src/c/auxiliaryFunctions/abs/i8abss.c"
+ "src/c/auxiliaryFunctions/abs/u16absa.c"
+ "src/c/auxiliaryFunctions/abs/u16abss.c"
+ "src/c/auxiliaryFunctions/abs/i16absa.c"
+ "src/c/auxiliaryFunctions/abs/i16abss.c"
+ "src/c/auxiliaryFunctions/conj/zconja.c"
+ "src/c/auxiliaryFunctions/conj/zconjs.c"
+ "src/c/auxiliaryFunctions/conj/cconja.c"
+ "src/c/auxiliaryFunctions/conj/cconjs.c"
+ "src/c/auxiliaryFunctions/find/cfinda.c"
+ "src/c/auxiliaryFunctions/find/dfinda.c"
+ "src/c/auxiliaryFunctions/find/sfinda.c"
+ "src/c/auxiliaryFunctions/find/zfinda.c"
+ "src/c/auxiliaryFunctions/rand/dranda.c"
+ "src/c/auxiliaryFunctions/rand/drands.c"
+ "src/c/auxiliaryFunctions/rand/sranda.c"
+ "src/c/auxiliaryFunctions/rand/srands.c"
+ "src/c/auxiliaryFunctions/rand/zranda.c"
+ "src/c/auxiliaryFunctions/rand/zrands.c"
+ "src/c/auxiliaryFunctions/rand/cranda.c"
+ "src/c/auxiliaryFunctions/rand/crands.c"
+ "src/c/auxiliaryFunctions/rand/u8randa.c"
+ "src/c/auxiliaryFunctions/rand/u8rands.c"
+ "src/c/auxiliaryFunctions/rand/u16randa.c"
+ "src/c/auxiliaryFunctions/rand/u16rands.c"
+ "src/c/auxiliaryFunctions/rand/i8randa.c"
+ "src/c/auxiliaryFunctions/rand/i8rands.c"
+ "src/c/auxiliaryFunctions/rand/i16randa.c"
+ "src/c/auxiliaryFunctions/rand/i16rands.c"
+ "src/c/auxiliaryFunctions/sign/csigna.c"
+ "src/c/auxiliaryFunctions/sign/csigns.c"
+ "src/c/auxiliaryFunctions/sign/dsigna.c"
+ "src/c/auxiliaryFunctions/sign/dsigns.c"
+ "src/c/auxiliaryFunctions/sign/ssigna.c"
+ "src/c/auxiliaryFunctions/sign/ssigns.c"
+ "src/c/auxiliaryFunctions/sign/zsigna.c"
+ "src/c/auxiliaryFunctions/sign/zsigns.c"
+ "src/c/auxiliaryFunctions/sign/u8signa.c"
+ "src/c/auxiliaryFunctions/sign/u8signs.c"
+ "src/c/auxiliaryFunctions/sign/i8signa.c"
+ "src/c/auxiliaryFunctions/sign/i8signs.c"
+ "src/c/auxiliaryFunctions/sign/u16signa.c"
+ "src/c/auxiliaryFunctions/sign/u16signs.c"
+ "src/c/auxiliaryFunctions/sign/i16signa.c"
+ "src/c/auxiliaryFunctions/sign/i16signs.c"
+ "src/c/auxiliaryFunctions/frexp/dfrexps.c"
+ "src/c/auxiliaryFunctions/frexp/sfrexps.c"
+ "src/c/auxiliaryFunctions/isnan/disnana.c"
+ "src/c/auxiliaryFunctions/isnan/disnans.c"
+ "src/c/auxiliaryFunctions/isnan/cisnana.c"
+ "src/c/auxiliaryFunctions/isnan/cisnans.c"
+ "src/c/auxiliaryFunctions/isnan/zisnana.c"
+ "src/c/auxiliaryFunctions/isnan/zisnans.c"
+ "src/c/auxiliaryFunctions/isnan/sisnana.c"
+ "src/c/auxiliaryFunctions/isnan/sisnans.c"
+ "src/c/auxiliaryFunctions/find2d/zfind2da.c"
+ "src/c/auxiliaryFunctions/find2d/cfind2da.c"
+ "src/c/auxiliaryFunctions/find2d/sfind2da.c"
+ "src/c/auxiliaryFunctions/find2d/dfind2da.c"
+ "src/c/auxiliaryFunctions/pythag/dpythags.c"
+ "src/c/auxiliaryFunctions/pythag/zpythags.c"
+ "src/c/auxiliaryFunctions/pythag/cpythags.c"
+ "src/c/auxiliaryFunctions/pythag/spythags.c"
+ "src/c/auxiliaryFunctions/size/dallsizea.c"
+ "src/c/type/doubleComplex.c"
+ "src/c/type/floatComplex.c"
+ "src/c/matrixOperations/cat/dcata.c"
+ "src/c/matrixOperations/cat/dcats.c"
+ "src/c/matrixOperations/cat/scata.c"
+ "src/c/matrixOperations/cat/scats.c"
+ "src/c/matrixOperations/cat/u8cats.c"
+ "src/c/matrixOperations/cat/u8cata.c"
+ "src/c/matrixOperations/cat/u16cats.c"
+ "src/c/matrixOperations/cat/u16cata.c"
+ "src/c/matrixOperations/cat/i8cats.c"
+ "src/c/matrixOperations/cat/i8cata.c"
+ "src/c/matrixOperations/cat/i16cats.c"
+ "src/c/matrixOperations/cat/i16cata.c"
+ "src/c/matrixOperations/eye/deyea.c"
+ "src/c/matrixOperations/eye/seyea.c"
+ "src/c/matrixOperations/eye/zeyea.c"
+ "src/c/matrixOperations/eye/ceyea.c"
+ "src/c/matrixOperations/eye/u8eyea.c"
+ "src/c/matrixOperations/eye/i8eyea.c"
+ "src/c/matrixOperations/eye/u16eyea.c"
+ "src/c/matrixOperations/eye/i16eyea.c"
+ "src/c/matrixOperations/chol/dchola.c"
+ "src/c/matrixOperations/chol/dchols.c"
+ "src/c/matrixOperations/chol/schola.c"
+ "src/c/matrixOperations/chol/schols.c"
+ "src/c/matrixOperations/chol/zchola.c"
+ "src/c/matrixOperations/chol/cchola.c"
+ "src/c/matrixOperations/dist/ddista.c"
+ "src/c/matrixOperations/dist/ddists.c"
+ "src/c/matrixOperations/dist/sdista.c"
+ "src/c/matrixOperations/dist/sdists.c"
+ "src/c/matrixOperations/dist/zdista.c"
+ "src/c/matrixOperations/dist/zdists.c"
+ "src/c/matrixOperations/dist/cdista.c"
+ "src/c/matrixOperations/dist/cdists.c"
+ "src/c/matrixOperations/fill/cfilla.c"
+ "src/c/matrixOperations/fill/dfilla.c"
+ "src/c/matrixOperations/fill/sfilla.c"
+ "src/c/matrixOperations/fill/zfilla.c"
+ "src/c/matrixOperations/expm/zexpma.c"
+ "src/c/matrixOperations/expm/cexpma.c"
+ "src/c/matrixOperations/expm/dexpma.c"
+ "src/c/matrixOperations/expm/sexpma.c"
+ "src/c/matrixOperations/jmat/djmata.c"
+ "src/c/matrixOperations/jmat/sjmata.c"
+ "src/c/matrixOperations/logm/clogma.c"
+ "src/c/matrixOperations/logm/dlogma.c"
+ "src/c/matrixOperations/logm/slogma.c"
+ "src/c/matrixOperations/logm/zlogma.c"
+ "src/c/matrixOperations/ones/donesa.c"
+ "src/c/matrixOperations/ones/sonesa.c"
+ "src/c/matrixOperations/ones/zonesa.c"
+ "src/c/matrixOperations/ones/conesa.c"
+ "src/c/matrixOperations/ones/u8onesa.c"
+ "src/c/matrixOperations/ones/i8onesa.c"
+ "src/c/matrixOperations/ones/u16onesa.c"
+ "src/c/matrixOperations/ones/i16onesa.c"
+ "src/c/matrixOperations/powm/dpowma.c"
+ "src/c/matrixOperations/powm/spowma.c"
+ "src/c/matrixOperations/powm/zpowma.c"
+ "src/c/matrixOperations/powm/cpowma.c"
+ "src/c/matrixOperations/spec/cspeca.c"
+ "src/c/matrixOperations/spec/dspeca.c"
+ "src/c/matrixOperations/spec/sspeca.c"
+ "src/c/matrixOperations/spec/zspeca.c"
+ "src/c/matrixOperations/transpose/ztransposea.c"
+ "src/c/matrixOperations/transpose/stransposea.c"
+ "src/c/matrixOperations/transpose/ctransposea.c"
+ "src/c/matrixOperations/transpose/dtransposea.c"
+ "src/c/matrixOperations/spec2/zspec2a.c"
+ "src/c/matrixOperations/spec2/sspec2a.c"
+ "src/c/matrixOperations/spec2/dspec2a.c"
+ "src/c/matrixOperations/spec2/cspec2a.c"
+ "src/c/matrixOperations/trace/stracea.c"
+ "src/c/matrixOperations/trace/dtracea.c"
+ "src/c/matrixOperations/trace/ctracea.c"
+ "src/c/matrixOperations/trace/ztracea.c"
+ "src/c/matrixOperations/zeros/dzerosa.c"
+ "src/c/matrixOperations/zeros/czerosa.c"
+ "src/c/matrixOperations/zeros/zzerosa.c"
+ "src/c/matrixOperations/zeros/szerosa.c"
+ "src/c/matrixOperations/zeros/dzerosh.c"
+ "src/c/matrixOperations/zeros/u8zerosa.c"
+ "src/c/matrixOperations/zeros/i8zerosa.c"
+ "src/c/matrixOperations/zeros/u16zerosa.c"
+ "src/c/matrixOperations/zeros/i16zerosa.c"
+ "src/c/matrixOperations/inversion/zinverma.c"
+ "src/c/matrixOperations/inversion/cinverma.c"
+ "src/c/matrixOperations/inversion/sinverma.c"
+ "src/c/matrixOperations/inversion/dinverma.c"
+ "src/c/matrixOperations/inversion/u8inverma.c"
+ "src/c/matrixOperations/inversion/i8inverma.c"
+ "src/c/matrixOperations/inversion/u16inverma.c"
+ "src/c/matrixOperations/inversion/i16inverma.c"
+ "src/c/matrixOperations/infiniteNorm/sinfnorma.c"
+ "src/c/matrixOperations/infiniteNorm/dinfnorma.c"
+ "src/c/matrixOperations/infiniteNorm/zinfnorma.c"
+ "src/c/matrixOperations/infiniteNorm/cinfnorma.c"
+ "src/c/matrixOperations/multiplication/zmulma.c"
+ "src/c/matrixOperations/multiplication/cmulma.c"
+ "src/c/matrixOperations/multiplication/dmulma.c"
+ "src/c/matrixOperations/multiplication/smulma.c"
+ "src/c/matrixOperations/multiplication/u8mulma.c"
+ "src/c/matrixOperations/multiplication/u16mulma.c"
+ "src/c/matrixOperations/multiplication/i8mulma.c"
+ "src/c/matrixOperations/multiplication/i16mulma.c"
+ "src/c/matrixOperations/division/cldivma.c"
+ "src/c/matrixOperations/division/zldivma.c"
+ "src/c/matrixOperations/division/sldivma.c"
+ "src/c/matrixOperations/division/drdivma.c"
+ "src/c/matrixOperations/division/drdivv.c"
+ "src/c/matrixOperations/division/dldivma.c"
+ "src/c/matrixOperations/division/crdivma.c"
+ "src/c/matrixOperations/division/crdivv.c"
+ "src/c/matrixOperations/division/crdivscv.c"
+ "src/c/matrixOperations/division/crdivcsv.c"
+ "src/c/matrixOperations/division/zrdivma.c"
+ "src/c/matrixOperations/division/zrdivv.c"
+ "src/c/matrixOperations/division/zrdivzdv.c"
+ "src/c/matrixOperations/division/zrdivdzv.c"
+ "src/c/matrixOperations/division/srdivma.c"
+ "src/c/matrixOperations/division/srdivv.c"
+ "src/c/matrixOperations/determ/ddeterma.c"
+ "src/c/matrixOperations/determ/zdeterma.c"
+ "src/c/matrixOperations/determ/cdeterma.c"
+ "src/c/matrixOperations/determ/sdeterma.c"
+ "src/c/matrixOperations/magnitude/cmagna.c"
+ "src/c/matrixOperations/magnitude/cmagns.c"
+ "src/c/matrixOperations/magnitude/dmagna.c"
+ "src/c/matrixOperations/magnitude/dmagns.c"
+ "src/c/matrixOperations/magnitude/smagna.c"
+ "src/c/matrixOperations/magnitude/smagns.c"
+ "src/c/matrixOperations/magnitude/zmagna.c"
+ "src/c/matrixOperations/magnitude/zmagns.c"
+ "src/c/matrixOperations/magnitude/u8magna.c"
+ "src/c/matrixOperations/magnitude/u8magns.c"
+ "src/c/matrixOperations/magnitude/u16magna.c"
+ "src/c/matrixOperations/magnitude/u16magns.c"
+ "src/c/matrixOperations/magnitude/i8magna.c"
+ "src/c/matrixOperations/magnitude/i8magns.c"
+ "src/c/matrixOperations/magnitude/i16magna.c"
+ "src/c/matrixOperations/magnitude/i16magns.c"
+ "src/c/matrixOperations/hilb/shilba.c"
+ "src/c/matrixOperations/hilb/dhilba.c"
+ "src/c/matrixOperations/squaredMagnitude/ssquMagna.c"
+ "src/c/matrixOperations/squaredMagnitude/ssquMagns.c"
+ "src/c/matrixOperations/squaredMagnitude/dsquMagna.c"
+ "src/c/matrixOperations/squaredMagnitude/dsquMagns.c"
+ "src/c/matrixOperations/squaredMagnitude/zsquMagna.c"
+ "src/c/matrixOperations/squaredMagnitude/zsquMagns.c"
+ "src/c/matrixOperations/squaredMagnitude/csquMagna.c"
+ "src/c/matrixOperations/squaredMagnitude/csquMagns.c"
+ "src/c/matrixOperations/diag/ddiags.c"
+ "src/c/matrixOperations/diag/ddiaga.c"
+ "src/c/matrixOperations/diag/ddiagina.c"
+ "src/c/matrixOperations/diag/ddiagins.c"
+ "src/c/matrixOperations/diag/ddiagexa.c"
+ "src/c/matrixOperations/diag/ddiagexs.c"
+ "src/c/matrixOperations/diag/u8diags.c"
+ "src/c/matrixOperations/diag/u8diaga.c"
+ "src/c/matrixOperations/diag/u8diagina.c"
+ "src/c/matrixOperations/diag/u8diagins.c"
+ "src/c/matrixOperations/diag/u8diagexa.c"
+ "src/c/matrixOperations/diag/u8diagexs.c"
+ "src/c/matrixOperations/diag/u16diags.c"
+ "src/c/matrixOperations/diag/u16diaga.c"
+ "src/c/matrixOperations/diag/u16diagina.c"
+ "src/c/matrixOperations/diag/u16diagins.c"
+ "src/c/matrixOperations/diag/u16diagexa.c"
+ "src/c/matrixOperations/diag/u16diagexs.c"
+ "src/c/matrixOperations/diag/i8diags.c"
+ "src/c/matrixOperations/diag/i8diaga.c"
+ "src/c/matrixOperations/diag/i8diagina.c"
+ "src/c/matrixOperations/diag/i8diagins.c"
+ "src/c/matrixOperations/diag/i8diagexa.c"
+ "src/c/matrixOperations/diag/i8diagexs.c"
+ "src/c/matrixOperations/diag/i16diags.c"
+ "src/c/matrixOperations/diag/i16diaga.c"
+ "src/c/matrixOperations/diag/i16diagina.c"
+ "src/c/matrixOperations/diag/i16diagins.c"
+ "src/c/matrixOperations/diag/i16diagexa.c"
+ "src/c/matrixOperations/diag/i16diagexs.c"
+ "src/c/matrixOperations/cumsum/dcumsuma.c"
+ "src/c/matrixOperations/cumsum/drowcumsuma.c"
+ "src/c/matrixOperations/cumsum/dcolumncumsuma.c"
+ "src/c/matrixOperations/cumsum/scumsuma.c"
+ "src/c/matrixOperations/cumsum/srowcumsuma.c"
+ "src/c/matrixOperations/cumsum/scolumncumsuma.c"
+ "src/c/matrixOperations/cumsum/u8cumsuma.c"
+ "src/c/matrixOperations/cumsum/u8rowcumsuma.c"
+ "src/c/matrixOperations/cumsum/u8columncumsuma.c"
+ "src/c/matrixOperations/cumsum/i8cumsuma.c"
+ "src/c/matrixOperations/cumsum/i8rowcumsuma.c"
+ "src/c/matrixOperations/cumsum/i8columncumsuma.c"
+ "src/c/matrixOperations/cumsum/u16cumsuma.c"
+ "src/c/matrixOperations/cumsum/u16rowcumsuma.c"
+ "src/c/matrixOperations/cumsum/u16columncumsuma.c"
+ "src/c/matrixOperations/cumsum/i16cumsuma.c"
+ "src/c/matrixOperations/cumsum/i16rowcumsuma.c"
+ "src/c/matrixOperations/cumsum/i16columncumsuma.c"
+ "src/c/matrixOperations/cumprod/dcumproda.c"
+ "src/c/matrixOperations/cumprod/drowcumproda.c"
+ "src/c/matrixOperations/cumprod/dcolumncumproda.c"
+ "src/c/matrixOperations/cumprod/scumproda.c"
+ "src/c/matrixOperations/cumprod/srowcumproda.c"
+ "src/c/matrixOperations/cumprod/scolumncumproda.c"
+ "src/c/matrixOperations/cumprod/u8cumproda.c"
+ "src/c/matrixOperations/cumprod/u8rowcumproda.c"
+ "src/c/matrixOperations/cumprod/u8columncumproda.c"
+ "src/c/matrixOperations/cumprod/i8cumproda.c"
+ "src/c/matrixOperations/cumprod/i8rowcumproda.c"
+ "src/c/matrixOperations/cumprod/i8columncumproda.c"
+ "src/c/matrixOperations/cumprod/u16cumproda.c"
+ "src/c/matrixOperations/cumprod/u16rowcumproda.c"
+ "src/c/matrixOperations/cumprod/u16columncumproda.c"
+ "src/c/matrixOperations/cumprod/i16cumproda.c"
+ "src/c/matrixOperations/cumprod/i16rowcumproda.c"
+ "src/c/matrixOperations/cumprod/i16columncumproda.c"
+ "src/c/matrixOperations/triu/dtriua.c"
+ "src/c/matrixOperations/triu/striua.c"
+ "src/c/matrixOperations/triu/u8triua.c"
+ "src/c/matrixOperations/triu/i8triua.c"
+ "src/c/matrixOperations/triu/u16triua.c"
+ "src/c/matrixOperations/triu/i16triua.c"
+ "src/c/matrixOperations/flipdim/dflipdima.c"
+ "src/c/matrixOperations/flipdim/sflipdima.c"
+ "src/c/matrixOperations/flipdim/u8flipdima.c"
+ "src/c/matrixOperations/flipdim/i8flipdima.c"
+ "src/c/matrixOperations/flipdim/u16flipdima.c"
+ "src/c/matrixOperations/flipdim/i16flipdima.c"
+ "src/c/matrixOperations/tril/dtrila.c"
+ "src/c/matrixOperations/tril/strila.c"
+ "src/c/matrixOperations/tril/u8trila.c"
+ "src/c/matrixOperations/tril/i8trila.c"
+ "src/c/matrixOperations/tril/u16trila.c"
+ "src/c/matrixOperations/tril/i16trila.c"
+ "src/c/matrixOperations/kron/dkrona.c"
+ "src/c/matrixOperations/kron/skrona.c"
+ "src/c/matrixOperations/norm/dnormv.c"
+ "src/c/matrixOperations/norm/dnorma.c"
+ "src/c/elementaryFunctions/cos/dcosa.c"
+ "src/c/elementaryFunctions/cos/dcoss.c"
+ "src/c/elementaryFunctions/cos/scosa.c"
+ "src/c/elementaryFunctions/cos/scoss.c"
+ "src/c/elementaryFunctions/cos/zcosa.c"
+ "src/c/elementaryFunctions/cos/zcoss.c"
+ "src/c/elementaryFunctions/cos/ccosa.c"
+ "src/c/elementaryFunctions/cos/ccoss.c"
+ "src/c/elementaryFunctions/cos/u8cosa.c"
+ "src/c/elementaryFunctions/cos/u8coss.c"
+ "src/c/elementaryFunctions/cos/i8cosa.c"
+ "src/c/elementaryFunctions/cos/i8coss.c"
+ "src/c/elementaryFunctions/cos/u16cosa.c"
+ "src/c/elementaryFunctions/cos/u16coss.c"
+ "src/c/elementaryFunctions/cos/i16cosa.c"
+ "src/c/elementaryFunctions/cos/i16coss.c"
+ "src/c/elementaryFunctions/fix/dfixa.c"
+ "src/c/elementaryFunctions/fix/dfixs.c"
+ "src/c/elementaryFunctions/fix/sfixa.c"
+ "src/c/elementaryFunctions/fix/sfixs.c"
+ "src/c/elementaryFunctions/fix/zfixa.c"
+ "src/c/elementaryFunctions/fix/zfixs.c"
+ "src/c/elementaryFunctions/fix/cfixa.c"
+ "src/c/elementaryFunctions/fix/cfixs.c"
+ "src/c/elementaryFunctions/fix/u8fixa.c"
+ "src/c/elementaryFunctions/fix/u8fixs.c"
+ "src/c/elementaryFunctions/fix/i8fixa.c"
+ "src/c/elementaryFunctions/fix/i8fixs.c"
+ "src/c/elementaryFunctions/fix/u16fixa.c"
+ "src/c/elementaryFunctions/fix/u16fixs.c"
+ "src/c/elementaryFunctions/fix/i16fixa.c"
+ "src/c/elementaryFunctions/fix/i16fixs.c"
+ "src/c/elementaryFunctions/exp/dexpa.c"
+ "src/c/elementaryFunctions/exp/dexps.c"
+ "src/c/elementaryFunctions/exp/sexpa.c"
+ "src/c/elementaryFunctions/exp/sexps.c"
+ "src/c/elementaryFunctions/exp/zexpa.c"
+ "src/c/elementaryFunctions/exp/zexps.c"
+ "src/c/elementaryFunctions/exp/cexpa.c"
+ "src/c/elementaryFunctions/exp/cexps.c"
+ "src/c/elementaryFunctions/exp/u8expa.c"
+ "src/c/elementaryFunctions/exp/u8exps.c"
+ "src/c/elementaryFunctions/exp/i8expa.c"
+ "src/c/elementaryFunctions/exp/i8exps.c"
+ "src/c/elementaryFunctions/exp/u16expa.c"
+ "src/c/elementaryFunctions/exp/u16exps.c"
+ "src/c/elementaryFunctions/exp/i16expa.c"
+ "src/c/elementaryFunctions/exp/i16exps.c"
+ "src/c/elementaryFunctions/int/dinta.c"
+ "src/c/elementaryFunctions/int/dints.c"
+ "src/c/elementaryFunctions/int/sinta.c"
+ "src/c/elementaryFunctions/int/sints.c"
+ "src/c/elementaryFunctions/int/zinta.c"
+ "src/c/elementaryFunctions/int/zints.c"
+ "src/c/elementaryFunctions/int/cinta.c"
+ "src/c/elementaryFunctions/int/cints.c"
+ "src/c/elementaryFunctions/log/cloga.c"
+ "src/c/elementaryFunctions/log/clogs.c"
+ "src/c/elementaryFunctions/log/dloga.c"
+ "src/c/elementaryFunctions/log/dlogs.c"
+ "src/c/elementaryFunctions/log/sloga.c"
+ "src/c/elementaryFunctions/log/slogs.c"
+ "src/c/elementaryFunctions/log/zloga.c"
+ "src/c/elementaryFunctions/log/zlogs.c"
+ "src/c/elementaryFunctions/pow/cpowa.c"
+ "src/c/elementaryFunctions/pow/cpows.c"
+ "src/c/elementaryFunctions/pow/dpowa.c"
+ "src/c/elementaryFunctions/pow/dpows.c"
+ "src/c/elementaryFunctions/pow/spowa.c"
+ "src/c/elementaryFunctions/pow/spows.c"
+ "src/c/elementaryFunctions/pow/zpowa.c"
+ "src/c/elementaryFunctions/pow/zpows.c"
+ "src/c/elementaryFunctions/sin/csina.c"
+ "src/c/elementaryFunctions/sin/csins.c"
+ "src/c/elementaryFunctions/sin/dsina.c"
+ "src/c/elementaryFunctions/sin/dsins.c"
+ "src/c/elementaryFunctions/sin/ssina.c"
+ "src/c/elementaryFunctions/sin/ssins.c"
+ "src/c/elementaryFunctions/sin/zsina.c"
+ "src/c/elementaryFunctions/sin/zsins.c"
+ "src/c/elementaryFunctions/sin/u8sina.c"
+ "src/c/elementaryFunctions/sin/u8sins.c"
+ "src/c/elementaryFunctions/sin/i8sina.c"
+ "src/c/elementaryFunctions/sin/i8sins.c"
+ "src/c/elementaryFunctions/sin/u16sina.c"
+ "src/c/elementaryFunctions/sin/u16sins.c"
+ "src/c/elementaryFunctions/sin/i16sina.c"
+ "src/c/elementaryFunctions/sin/i16sins.c"
+ "src/c/elementaryFunctions/tan/ctana.c"
+ "src/c/elementaryFunctions/tan/ctans.c"
+ "src/c/elementaryFunctions/tan/dtana.c"
+ "src/c/elementaryFunctions/tan/dtans.c"
+ "src/c/elementaryFunctions/tan/stana.c"
+ "src/c/elementaryFunctions/tan/stans.c"
+ "src/c/elementaryFunctions/tan/ztana.c"
+ "src/c/elementaryFunctions/tan/ztans.c"
+ "src/c/elementaryFunctions/tan/u8tana.c"
+ "src/c/elementaryFunctions/tan/u8tans.c"
+ "src/c/elementaryFunctions/tan/i8tana.c"
+ "src/c/elementaryFunctions/tan/i8tans.c"
+ "src/c/elementaryFunctions/tan/u16tana.c"
+ "src/c/elementaryFunctions/tan/u16tans.c"
+ "src/c/elementaryFunctions/tan/i16tana.c"
+ "src/c/elementaryFunctions/tan/i16tans.c"
+ "src/c/elementaryFunctions/acos/zacosa.c"
+ "src/c/elementaryFunctions/acos/zacoss.c"
+ "src/c/elementaryFunctions/acos/cacosa.c"
+ "src/c/elementaryFunctions/acos/cacoss.c"
+ "src/c/elementaryFunctions/acos/dacosa.c"
+ "src/c/elementaryFunctions/acos/dacoss.c"
+ "src/c/elementaryFunctions/acos/sacosa.c"
+ "src/c/elementaryFunctions/acos/sacoss.c"
+ "src/c/elementaryFunctions/asin/dasina.c"
+ "src/c/elementaryFunctions/asin/dasins.c"
+ "src/c/elementaryFunctions/asin/sasina.c"
+ "src/c/elementaryFunctions/asin/sasins.c"
+ "src/c/elementaryFunctions/asin/zasina.c"
+ "src/c/elementaryFunctions/asin/zasins.c"
+ "src/c/elementaryFunctions/asin/casina.c"
+ "src/c/elementaryFunctions/asin/casins.c"
+ "src/c/elementaryFunctions/atan/datana.c"
+ "src/c/elementaryFunctions/atan/datans.c"
+ "src/c/elementaryFunctions/atan/satana.c"
+ "src/c/elementaryFunctions/atan/satans.c"
+ "src/c/elementaryFunctions/atan/zatana.c"
+ "src/c/elementaryFunctions/atan/zatans.c"
+ "src/c/elementaryFunctions/atan/catana.c"
+ "src/c/elementaryFunctions/atan/catans.c"
+ "src/c/elementaryFunctions/ceil/dceila.c"
+ "src/c/elementaryFunctions/ceil/dceils.c"
+ "src/c/elementaryFunctions/ceil/sceila.c"
+ "src/c/elementaryFunctions/ceil/sceils.c"
+ "src/c/elementaryFunctions/ceil/zceila.c"
+ "src/c/elementaryFunctions/ceil/zceils.c"
+ "src/c/elementaryFunctions/ceil/cceila.c"
+ "src/c/elementaryFunctions/ceil/cceils.c"
+ "src/c/elementaryFunctions/ceil/u8ceila.c"
+ "src/c/elementaryFunctions/ceil/u8ceils.c"
+ "src/c/elementaryFunctions/ceil/i8ceila.c"
+ "src/c/elementaryFunctions/ceil/i8ceils.c"
+ "src/c/elementaryFunctions/ceil/u16ceila.c"
+ "src/c/elementaryFunctions/ceil/u16ceils.c"
+ "src/c/elementaryFunctions/ceil/i16ceila.c"
+ "src/c/elementaryFunctions/ceil/i16ceils.c"
+ "src/c/elementaryFunctions/cosh/dcosha.c"
+ "src/c/elementaryFunctions/cosh/dcoshs.c"
+ "src/c/elementaryFunctions/cosh/scosha.c"
+ "src/c/elementaryFunctions/cosh/scoshs.c"
+ "src/c/elementaryFunctions/cosh/zcosha.c"
+ "src/c/elementaryFunctions/cosh/zcoshs.c"
+ "src/c/elementaryFunctions/cosh/ccosha.c"
+ "src/c/elementaryFunctions/cosh/ccoshs.c"
+ "src/c/elementaryFunctions/cosh/u8cosha.c"
+ "src/c/elementaryFunctions/cosh/u8coshs.c"
+ "src/c/elementaryFunctions/cosh/i8cosha.c"
+ "src/c/elementaryFunctions/cosh/i8coshs.c"
+ "src/c/elementaryFunctions/cosh/u16cosha.c"
+ "src/c/elementaryFunctions/cosh/u16coshs.c"
+ "src/c/elementaryFunctions/cosh/i16cosha.c"
+ "src/c/elementaryFunctions/cosh/i16coshs.c"
+ "src/c/elementaryFunctions/sinh/csinha.c"
+ "src/c/elementaryFunctions/sinh/csinhs.c"
+ "src/c/elementaryFunctions/sinh/dsinha.c"
+ "src/c/elementaryFunctions/sinh/dsinhs.c"
+ "src/c/elementaryFunctions/sinh/ssinha.c"
+ "src/c/elementaryFunctions/sinh/ssinhs.c"
+ "src/c/elementaryFunctions/sinh/zsinha.c"
+ "src/c/elementaryFunctions/sinh/zsinhs.c"
+ "src/c/elementaryFunctions/sinh/u8sinha.c"
+ "src/c/elementaryFunctions/sinh/u8sinhs.c"
+ "src/c/elementaryFunctions/sinh/i8sinha.c"
+ "src/c/elementaryFunctions/sinh/i8sinhs.c"
+ "src/c/elementaryFunctions/sinh/u16sinha.c"
+ "src/c/elementaryFunctions/sinh/u16sinhs.c"
+ "src/c/elementaryFunctions/sinh/i16sinha.c"
+ "src/c/elementaryFunctions/sinh/i16sinhs.c"
+ "src/c/elementaryFunctions/tanh/ctanha.c"
+ "src/c/elementaryFunctions/tanh/ctanhs.c"
+ "src/c/elementaryFunctions/tanh/dtanha.c"
+ "src/c/elementaryFunctions/tanh/dtanhs.c"
+ "src/c/elementaryFunctions/tanh/stanha.c"
+ "src/c/elementaryFunctions/tanh/stanhs.c"
+ "src/c/elementaryFunctions/tanh/ztanha.c"
+ "src/c/elementaryFunctions/tanh/ztanhs.c"
+ "src/c/elementaryFunctions/tanh/u8tanha.c"
+ "src/c/elementaryFunctions/tanh/u8tanhs.c"
+ "src/c/elementaryFunctions/tanh/i8tanha.c"
+ "src/c/elementaryFunctions/tanh/i8tanhs.c"
+ "src/c/elementaryFunctions/tanh/u16tanha.c"
+ "src/c/elementaryFunctions/tanh/u16tanhs.c"
+ "src/c/elementaryFunctions/tanh/i16tanha.c"
+ "src/c/elementaryFunctions/tanh/i16tanhs.c"
+ "src/c/elementaryFunctions/sqrt/csqrta.c"
+ "src/c/elementaryFunctions/sqrt/csqrts.c"
+ "src/c/elementaryFunctions/sqrt/dsqrta.c"
+ "src/c/elementaryFunctions/sqrt/dsqrts.c"
+ "src/c/elementaryFunctions/sqrt/ssqrta.c"
+ "src/c/elementaryFunctions/sqrt/ssqrts.c"
+ "src/c/elementaryFunctions/sqrt/zsqrta.c"
+ "src/c/elementaryFunctions/sqrt/zsqrts.c"
+ "src/c/elementaryFunctions/acosh/cacosha.c"
+ "src/c/elementaryFunctions/acosh/cacoshs.c"
+ "src/c/elementaryFunctions/acosh/zacosha.c"
+ "src/c/elementaryFunctions/acosh/zacoshs.c"
+ "src/c/elementaryFunctions/acosh/sacosha.c"
+ "src/c/elementaryFunctions/acosh/sacoshs.c"
+ "src/c/elementaryFunctions/acosh/dacosha.c"
+ "src/c/elementaryFunctions/acosh/dacoshs.c"
+ "src/c/elementaryFunctions/asinh/dasinha.c"
+ "src/c/elementaryFunctions/asinh/dasinhs.c"
+ "src/c/elementaryFunctions/asinh/casinha.c"
+ "src/c/elementaryFunctions/asinh/casinhs.c"
+ "src/c/elementaryFunctions/asinh/zasinha.c"
+ "src/c/elementaryFunctions/asinh/zasinhs.c"
+ "src/c/elementaryFunctions/asinh/sasinha.c"
+ "src/c/elementaryFunctions/asinh/sasinhs.c"
+ "src/c/elementaryFunctions/atan2/datan2a.c"
+ "src/c/elementaryFunctions/atan2/datan2s.c"
+ "src/c/elementaryFunctions/atan2/satan2a.c"
+ "src/c/elementaryFunctions/atan2/satan2s.c"
+ "src/c/elementaryFunctions/atanh/datanha.c"
+ "src/c/elementaryFunctions/atanh/datanhs.c"
+ "src/c/elementaryFunctions/atanh/catanha.c"
+ "src/c/elementaryFunctions/atanh/catanhs.c"
+ "src/c/elementaryFunctions/atanh/zatanha.c"
+ "src/c/elementaryFunctions/atanh/zatanhs.c"
+ "src/c/elementaryFunctions/atanh/satanha.c"
+ "src/c/elementaryFunctions/atanh/satanhs.c"
+ "src/c/elementaryFunctions/floor/dfloora.c"
+ "src/c/elementaryFunctions/floor/dfloors.c"
+ "src/c/elementaryFunctions/floor/cfloora.c"
+ "src/c/elementaryFunctions/floor/cfloors.c"
+ "src/c/elementaryFunctions/floor/zfloora.c"
+ "src/c/elementaryFunctions/floor/zfloors.c"
+ "src/c/elementaryFunctions/floor/sfloora.c"
+ "src/c/elementaryFunctions/floor/sfloors.c"
+ "src/c/elementaryFunctions/floor/u8floora.c"
+ "src/c/elementaryFunctions/floor/u8floors.c"
+ "src/c/elementaryFunctions/floor/i8floora.c"
+ "src/c/elementaryFunctions/floor/i8floors.c"
+ "src/c/elementaryFunctions/floor/u16floora.c"
+ "src/c/elementaryFunctions/floor/u16floors.c"
+ "src/c/elementaryFunctions/floor/i16floora.c"
+ "src/c/elementaryFunctions/floor/i16floors.c"
+ "src/c/elementaryFunctions/exp10/dexp10a.c"
+ "src/c/elementaryFunctions/exp10/dexp10s.c"
+ "src/c/elementaryFunctions/exp10/cexp10a.c"
+ "src/c/elementaryFunctions/exp10/cexp10s.c"
+ "src/c/elementaryFunctions/exp10/zexp10a.c"
+ "src/c/elementaryFunctions/exp10/zexp10s.c"
+ "src/c/elementaryFunctions/exp10/sexp10a.c"
+ "src/c/elementaryFunctions/exp10/sexp10s.c"
+ "src/c/elementaryFunctions/log10/dlog10a.c"
+ "src/c/elementaryFunctions/log10/dlog10s.c"
+ "src/c/elementaryFunctions/log10/clog10a.c"
+ "src/c/elementaryFunctions/log10/clog10s.c"
+ "src/c/elementaryFunctions/log10/zlog10a.c"
+ "src/c/elementaryFunctions/log10/zlog10s.c"
+ "src/c/elementaryFunctions/log10/slog10a.c"
+ "src/c/elementaryFunctions/log10/slog10s.c"
+ "src/c/elementaryFunctions/log1p/dlog1pa.c"
+ "src/c/elementaryFunctions/log1p/dlog1ps.c"
+ "src/c/elementaryFunctions/log1p/clog1pa.c"
+ "src/c/elementaryFunctions/log1p/clog1ps.c"
+ "src/c/elementaryFunctions/log1p/zlog1pa.c"
+ "src/c/elementaryFunctions/log1p/zlog1ps.c"
+ "src/c/elementaryFunctions/log1p/slog1pa.c"
+ "src/c/elementaryFunctions/log1p/slog1ps.c"
+ "src/c/elementaryFunctions/round/drounda.c"
+ "src/c/elementaryFunctions/round/drounds.c"
+ "src/c/elementaryFunctions/round/crounda.c"
+ "src/c/elementaryFunctions/round/crounds.c"
+ "src/c/elementaryFunctions/round/zrounda.c"
+ "src/c/elementaryFunctions/round/zrounds.c"
+ "src/c/elementaryFunctions/round/srounda.c"
+ "src/c/elementaryFunctions/round/srounds.c"
+ "src/c/elementaryFunctions/round/u8rounda.c"
+ "src/c/elementaryFunctions/round/u8rounds.c"
+ "src/c/elementaryFunctions/round/i8rounda.c"
+ "src/c/elementaryFunctions/round/i8rounds.c"
+ "src/c/elementaryFunctions/round/u16rounda.c"
+ "src/c/elementaryFunctions/round/u16rounds.c"
+ "src/c/elementaryFunctions/round/i16rounda.c"
+ "src/c/elementaryFunctions/round/i16rounds.c"
+ "src/c/elementaryFunctions/lnp1m1/slnp1m1s.c"
+ "src/c/elementaryFunctions/lnp1m1/dlnp1m1s.c"
+ "src/c/elementaryFunctions/uint8/duint8s.c"
+ "src/c/elementaryFunctions/uint8/duint8a.c"
+ "src/c/elementaryFunctions/uint8/suint8s.c"
+ "src/c/elementaryFunctions/uint8/suint8a.c"
+ "src/c/elementaryFunctions/uint8/i8uint8s.c"
+ "src/c/elementaryFunctions/uint8/i8uint8a.c"
+ "src/c/elementaryFunctions/uint8/u16uint8s.c"
+ "src/c/elementaryFunctions/uint8/u16uint8a.c"
+ "src/c/elementaryFunctions/uint8/i16uint8s.c"
+ "src/c/elementaryFunctions/uint8/i16uint8a.c"
+ "src/c/elementaryFunctions/float/dfloats.c"
+ "src/c/elementaryFunctions/float/dfloata.c"
+ "src/c/elementaryFunctions/float/sfloats.c"
+ "src/c/elementaryFunctions/float/sfloata.c"
+ "src/c/elementaryFunctions/float/u8floats.c"
+ "src/c/elementaryFunctions/float/u8floata.c"
+ "src/c/elementaryFunctions/float/i8floats.c"
+ "src/c/elementaryFunctions/float/i8floata.c"
+ "src/c/elementaryFunctions/float/u16floats.c"
+ "src/c/elementaryFunctions/float/u16floata.c"
+ "src/c/elementaryFunctions/float/i16floats.c"
+ "src/c/elementaryFunctions/float/i16floata.c"
+ "src/c/elementaryFunctions/int8/dint8s.c"
+ "src/c/elementaryFunctions/int8/dint8a.c"
+ "src/c/elementaryFunctions/int8/sint8s.c"
+ "src/c/elementaryFunctions/int8/sint8a.c"
+ "src/c/elementaryFunctions/int8/u8int8s.c"
+ "src/c/elementaryFunctions/int8/u8int8a.c"
+ "src/c/elementaryFunctions/int8/u16int8s.c"
+ "src/c/elementaryFunctions/int8/u16int8a.c"
+ "src/c/elementaryFunctions/int8/i16int8s.c"
+ "src/c/elementaryFunctions/int8/i16int8a.c"
+ "src/c/elementaryFunctions/uint16/duint16s.c"
+ "src/c/elementaryFunctions/uint16/duint16a.c"
+ "src/c/elementaryFunctions/uint16/suint16s.c"
+ "src/c/elementaryFunctions/uint16/suint16a.c"
+ "src/c/elementaryFunctions/uint16/u8uint16s.c"
+ "src/c/elementaryFunctions/uint16/u8uint16a.c"
+ "src/c/elementaryFunctions/uint16/i8uint16s.c"
+ "src/c/elementaryFunctions/uint16/i8uint16a.c"
+ "src/c/elementaryFunctions/uint16/i16uint16s.c"
+ "src/c/elementaryFunctions/uint16/i16uint16a.c"
+ "src/c/elementaryFunctions/int16/dint16s.c"
+ "src/c/elementaryFunctions/int16/dint16a.c"
+ "src/c/elementaryFunctions/int16/sint16s.c"
+ "src/c/elementaryFunctions/int16/sint16a.c"
+ "src/c/elementaryFunctions/int16/u8int16s.c"
+ "src/c/elementaryFunctions/int16/u8int16a.c"
+ "src/c/elementaryFunctions/int16/i8int16s.c"
+ "src/c/elementaryFunctions/int16/i8int16a.c"
+ "src/c/elementaryFunctions/int16/u16int16s.c"
+ "src/c/elementaryFunctions/int16/u16int16a.c"
+ "src/c/elementaryFunctions/bitand/u8bitands.c"
+ "src/c/elementaryFunctions/bitand/u8bitanda.c"
+ "src/c/elementaryFunctions/bitand/u16bitands.c"
+ "src/c/elementaryFunctions/bitand/u16bitanda.c"
+ "src/c/elementaryFunctions/bitor/u8bitors.c"
+ "src/c/elementaryFunctions/bitor/u8bitora.c"
+ "src/c/elementaryFunctions/bitor/u16bitors.c"
+ "src/c/elementaryFunctions/bitor/u16bitora.c"
+ "src/c/elementaryFunctions/bitxor/u8bitxors.c"
+ "src/c/elementaryFunctions/bitxor/u8bitxora.c"
+ "src/c/elementaryFunctions/bitxor/u16bitxors.c"
+ "src/c/elementaryFunctions/bitxor/u16bitxora.c"
+ "src/c/elementaryFunctions/bitcmp/u8bitcmps.c"
+ "src/c/elementaryFunctions/bitcmp/u8bitcmpa.c"
+ "src/c/elementaryFunctions/bitcmp/u16bitcmps.c"
+ "src/c/elementaryFunctions/bitcmp/u16bitcmpa.c"
+ "src/c/elementaryFunctions/bitset/u8bitsets.c"
+ "src/c/elementaryFunctions/bitset/u16bitsets.c"
+ "src/c/elementaryFunctions/bitget/u8bitgets.c"
+ "src/c/elementaryFunctions/bitget/u16bitgets.c"
+ "src/c/elementaryFunctions/linspace/dlinspaces.c"
+ "src/c/elementaryFunctions/linspace/dlinspacea.c"
+ "src/c/elementaryFunctions/logspace/dlogspaces.c"
+ "src/c/elementaryFunctions/logspace/dlogspacea.c"
+ "src/c/elementaryFunctions/acosd/dacosda.c"
+ "src/c/elementaryFunctions/acosd/dacosds.c"
+ "src/c/elementaryFunctions/acosd/sacosda.c"
+ "src/c/elementaryFunctions/acosd/sacosds.c"
+ "src/c/elementaryFunctions/acot/dacota.c"
+ "src/c/elementaryFunctions/acot/dacots.c"
+ "src/c/elementaryFunctions/acot/sacota.c"
+ "src/c/elementaryFunctions/acot/sacots.c"
+ "src/c/elementaryFunctions/acot/cacots.c"
+ "src/c/elementaryFunctions/acot/cacota.c"
+ "src/c/elementaryFunctions/acot/zacots.c"
+ "src/c/elementaryFunctions/acot/zacota.c"
+ "src/c/elementaryFunctions/acotd/dacotda.c"
+ "src/c/elementaryFunctions/acotd/dacotds.c"
+ "src/c/elementaryFunctions/acotd/sacotda.c"
+ "src/c/elementaryFunctions/acotd/sacotds.c"
+ "src/c/elementaryFunctions/acoth/dacotha.c"
+ "src/c/elementaryFunctions/acoth/dacoths.c"
+ "src/c/elementaryFunctions/acoth/sacotha.c"
+ "src/c/elementaryFunctions/acoth/sacoths.c"
+ "src/c/elementaryFunctions/acoth/cacoths.c"
+ "src/c/elementaryFunctions/acoth/cacotha.c"
+ "src/c/elementaryFunctions/acoth/zacoths.c"
+ "src/c/elementaryFunctions/acoth/zacotha.c"
+ "src/c/elementaryFunctions/acsc/dacsca.c"
+ "src/c/elementaryFunctions/acsc/dacscs.c"
+ "src/c/elementaryFunctions/acsc/sacsca.c"
+ "src/c/elementaryFunctions/acsc/sacscs.c"
+ "src/c/elementaryFunctions/acsc/cacscs.c"
+ "src/c/elementaryFunctions/acsc/cacsca.c"
+ "src/c/elementaryFunctions/acsc/zacscs.c"
+ "src/c/elementaryFunctions/acsc/zacsca.c"
+ "src/c/elementaryFunctions/acscd/dacscda.c"
+ "src/c/elementaryFunctions/acscd/dacscds.c"
+ "src/c/elementaryFunctions/acscd/sacscda.c"
+ "src/c/elementaryFunctions/acscd/sacscds.c"
+ "src/c/elementaryFunctions/acsch/dacscha.c"
+ "src/c/elementaryFunctions/acsch/dacschs.c"
+ "src/c/elementaryFunctions/acsch/sacscha.c"
+ "src/c/elementaryFunctions/acsch/sacschs.c"
+ "src/c/elementaryFunctions/asec/daseca.c"
+ "src/c/elementaryFunctions/asec/dasecs.c"
+ "src/c/elementaryFunctions/asec/saseca.c"
+ "src/c/elementaryFunctions/asec/sasecs.c"
+ "src/c/elementaryFunctions/asecd/dasecda.c"
+ "src/c/elementaryFunctions/asecd/dasecds.c"
+ "src/c/elementaryFunctions/asecd/sasecda.c"
+ "src/c/elementaryFunctions/asecd/sasecds.c"
+ "src/c/elementaryFunctions/asech/dasecha.c"
+ "src/c/elementaryFunctions/asech/dasechs.c"
+ "src/c/elementaryFunctions/asech/sasecha.c"
+ "src/c/elementaryFunctions/asech/sasechs.c"
+ "src/c/elementaryFunctions/asind/dasinda.c"
+ "src/c/elementaryFunctions/asind/dasinds.c"
+ "src/c/elementaryFunctions/asind/sasinda.c"
+ "src/c/elementaryFunctions/asind/sasinds.c"
+ "src/c/elementaryFunctions/atand/datanda.c"
+ "src/c/elementaryFunctions/atand/datands.c"
+ "src/c/elementaryFunctions/atand/satanda.c"
+ "src/c/elementaryFunctions/atand/satands.c"
+ "src/c/statisticsFunctions/max/dmaxa.c"
+ "src/c/statisticsFunctions/max/smaxa.c"
+ "src/c/statisticsFunctions/max/srowmaxa.c"
+ "src/c/statisticsFunctions/max/drowmaxa.c"
+ "src/c/statisticsFunctions/max/scolumnmaxa.c"
+ "src/c/statisticsFunctions/max/dcolumnmaxa.c"
+ "src/c/statisticsFunctions/min/dmina.c"
+ "src/c/statisticsFunctions/min/smina.c"
+ "src/c/statisticsFunctions/min/srowmina.c"
+ "src/c/statisticsFunctions/min/drowmina.c"
+ "src/c/statisticsFunctions/min/scolumnmina.c"
+ "src/c/statisticsFunctions/min/dcolumnmina.c"
+ "src/c/statisticsFunctions/sum/dcolumnsuma.c"
+ "src/c/statisticsFunctions/sum/csuma.c"
+ "src/c/statisticsFunctions/sum/dsuma.c"
+ "src/c/statisticsFunctions/sum/zrowsuma.c"
+ "src/c/statisticsFunctions/sum/ssuma.c"
+ "src/c/statisticsFunctions/sum/crowsuma.c"
+ "src/c/statisticsFunctions/sum/zsuma.c"
+ "src/c/statisticsFunctions/sum/zcolumnsuma.c"
+ "src/c/statisticsFunctions/sum/srowsuma.c"
+ "src/c/statisticsFunctions/sum/drowsuma.c"
+ "src/c/statisticsFunctions/sum/scolumnsuma.c"
+ "src/c/statisticsFunctions/sum/ccolumnsuma.c"
+ "src/c/statisticsFunctions/mean/cmeana.c"
+ "src/c/statisticsFunctions/mean/ccolumnmeana.c"
+ "src/c/statisticsFunctions/mean/srowmeana.c"
+ "src/c/statisticsFunctions/mean/drowmeana.c"
+ "src/c/statisticsFunctions/mean/dmeana.c"
+ "src/c/statisticsFunctions/mean/zrowmeana.c"
+ "src/c/statisticsFunctions/mean/smeana.c"
+ "src/c/statisticsFunctions/mean/scolumnmeana.c"
+ "src/c/statisticsFunctions/mean/crowmeana.c"
+ "src/c/statisticsFunctions/mean/dcolumnmeana.c"
+ "src/c/statisticsFunctions/mean/zmeana.c"
+ "src/c/statisticsFunctions/mean/zcolumnmeana.c"
+ "src/c/statisticsFunctions/meanf/cmeanfa.c"
+ "src/c/statisticsFunctions/meanf/ccolumnmeanfa.c"
+ "src/c/statisticsFunctions/meanf/srowmeanfa.c"
+ "src/c/statisticsFunctions/meanf/drowmeanfa.c"
+ "src/c/statisticsFunctions/meanf/dmeanfa.c"
+ "src/c/statisticsFunctions/meanf/zrowmeanfa.c"
+ "src/c/statisticsFunctions/meanf/smeanfa.c"
+ "src/c/statisticsFunctions/meanf/scolumnmeanfa.c"
+ "src/c/statisticsFunctions/meanf/crowmeanfa.c"
+ "src/c/statisticsFunctions/meanf/dcolumnmeanfa.c"
+ "src/c/statisticsFunctions/meanf/zmeanfa.c"
+ "src/c/statisticsFunctions/meanf/zmeanfzd.c"
+ "src/c/statisticsFunctions/meanf/cmeanfcs.c"
+ "src/c/statisticsFunctions/meanf/zmeanfdz.c"
+ "src/c/statisticsFunctions/meanf/cmeanfsc.c"
+ "src/c/statisticsFunctions/meanf/zcolumnmeanfa.c"
+ "src/c/statisticsFunctions/prod/srowproda.c"
+ "src/c/statisticsFunctions/prod/drowproda.c"
+ "src/c/statisticsFunctions/prod/dproda.c"
+ "src/c/statisticsFunctions/prod/zrowproda.c"
+ "src/c/statisticsFunctions/prod/sproda.c"
+ "src/c/statisticsFunctions/prod/scolumnproda.c"
+ "src/c/statisticsFunctions/prod/crowproda.c"
+ "src/c/statisticsFunctions/prod/dcolumnproda.c"
+ "src/c/statisticsFunctions/prod/zproda.c"
+ "src/c/statisticsFunctions/prod/zcolumnproda.c"
+ "src/c/statisticsFunctions/prod/cproda.c"
+ "src/c/statisticsFunctions/prod/ccolumnproda.c"
+ "src/c/statisticsFunctions/variance/cvariancea.c"
+ "src/c/statisticsFunctions/variance/zvariancea.c"
+ "src/c/statisticsFunctions/variance/dcolumnvariancea.c"
+ "src/c/statisticsFunctions/variance/dvariancea.c"
+ "src/c/statisticsFunctions/variance/crowvariancea.c"
+ "src/c/statisticsFunctions/variance/svariancea.c"
+ "src/c/statisticsFunctions/variance/drowvariancea.c"
+ "src/c/statisticsFunctions/variance/srowvariancea.c"
+ "src/c/statisticsFunctions/variance/zcolumnvariancea.c"
+ "src/c/statisticsFunctions/variance/zrowvariancea.c"
+ "src/c/statisticsFunctions/variance/ccolumnvariancea.c"
+ "src/c/statisticsFunctions/variance/scolumnvariancea.c"
+ "src/c/statisticsFunctions/stdevf/cstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/zstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/cstdevfcs.c"
+ "src/c/statisticsFunctions/stdevf/zstdevfzd.c"
+ "src/c/statisticsFunctions/stdevf/cstdevfsc.c"
+ "src/c/statisticsFunctions/stdevf/zstdevfdz.c"
+ "src/c/statisticsFunctions/stdevf/dcolumnstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/dstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/crowstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/sstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/drowstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/srowstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/zcolumnstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/zrowstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/ccolumnstdevfa.c"
+ "src/c/statisticsFunctions/stdevf/scolumnstdevfa.c"
+ "src/c/operations/multiplication/cmula.c"
+ "src/c/operations/multiplication/cmuls.c"
+ "src/c/operations/multiplication/cmulv.c"
+ "src/c/operations/multiplication/cmulcsv.c"
+ "src/c/operations/multiplication/cmulscv.c"
+ "src/c/operations/multiplication/dmula.c"
+ "src/c/operations/multiplication/dmuls.c"
+ "src/c/operations/multiplication/dmulv.c"
+ "src/c/operations/multiplication/smula.c"
+ "src/c/operations/multiplication/smuls.c"
+ "src/c/operations/multiplication/smulv.c"
+ "src/c/operations/multiplication/zmula.c"
+ "src/c/operations/multiplication/zmuls.c"
+ "src/c/operations/multiplication/zmulv.c"
+ "src/c/operations/multiplication/zmuldzv.c"
+ "src/c/operations/multiplication/zmulzdv.c"
+ "src/c/operations/multiplication/u8muls.c"
+ "src/c/operations/multiplication/u8mulv.c"
+ "src/c/operations/multiplication/i8muls.c"
+ "src/c/operations/multiplication/i8mulv.c"
+ "src/c/operations/multiplication/u16muls.c"
+ "src/c/operations/multiplication/u16mulv.c"
+ "src/c/operations/multiplication/i16muls.c"
+ "src/c/operations/multiplication/i16mulv.c"
+ "src/c/operations/division/drdiva.c"
+ "src/c/operations/division/drdivs.c"
+ "src/c/operations/division/srdiva.c"
+ "src/c/operations/division/srdivs.c"
+ "src/c/operations/division/dldiva.c"
+ "src/c/operations/division/dldivs.c"
+ "src/c/operations/division/sldiva.c"
+ "src/c/operations/division/sldivs.c"
+ "src/c/operations/division/zrdiva.c"
+ "src/c/operations/division/zrdivs.c"
+ "src/c/operations/division/zldiva.c"
+ "src/c/operations/division/zldivs.c"
+ "src/c/operations/division/crdiva.c"
+ "src/c/operations/division/crdivs.c"
+ "src/c/operations/division/cldiva.c"
+ "src/c/operations/division/cldivs.c"
+ "src/c/operations/division/u8ldivs.c"
+ "src/c/operations/division/u8rdivs.c"
+ "src/c/operations/division/i8ldivs.c"
+ "src/c/operations/division/i8rdivs.c"
+ "src/c/operations/division/u16ldivs.c"
+ "src/c/operations/division/u16rdivs.c"
+ "src/c/operations/division/i16ldivs.c"
+ "src/c/operations/division/i16rdivs.c"
+ "src/c/operations/addition/sadda.c"
+ "src/c/operations/addition/sadds.c"
+ "src/c/operations/addition/zadda.c"
+ "src/c/operations/addition/zadds.c"
+ "src/c/operations/addition/cadda.c"
+ "src/c/operations/addition/cadds.c"
+ "src/c/operations/addition/dadda.c"
+ "src/c/operations/addition/dadds.c"
+ "src/c/operations/addition/u8adds.c"
+ "src/c/operations/addition/u8adda.c"
+ "src/c/operations/addition/i8adds.c"
+ "src/c/operations/addition/i8adda.c"
+ "src/c/operations/addition/u16adds.c"
+ "src/c/operations/addition/u16adda.c"
+ "src/c/operations/addition/i16adds.c"
+ "src/c/operations/addition/i16adda.c"
+ "src/c/operations/subtraction/ddiffa.c"
+ "src/c/operations/subtraction/ddiffs.c"
+ "src/c/operations/subtraction/sdiffa.c"
+ "src/c/operations/subtraction/sdiffs.c"
+ "src/c/operations/subtraction/zdiffa.c"
+ "src/c/operations/subtraction/zdiffs.c"
+ "src/c/operations/subtraction/cdiffa.c"
+ "src/c/operations/subtraction/cdiffs.c"
+ "src/c/operations/subtraction/u8diffs.c"
+ "src/c/operations/subtraction/u8diffa.c"
+ "src/c/operations/subtraction/i8diffs.c"
+ "src/c/operations/subtraction/i8diffa.c"
+ "src/c/operations/subtraction/u16diffs.c"
+ "src/c/operations/subtraction/u16diffa.c"
+ "src/c/operations/subtraction/i16diffs.c"
+ "src/c/operations/subtraction/i16diffa.c"
+ "src/c/string/disp/ddispa.c"
+ "src/c/string/disp/ddisps.c"
+ "src/c/string/disp/sdispa.c"
+ "src/c/string/disp/sdisps.c"
+ "src/c/string/disp/zdispa.c"
+ "src/c/string/disp/zdisps.c"
+ "src/c/string/disp/cdispa.c"
+ "src/c/string/disp/cdisps.c"
+ "src/c/string/disp/u8dispa.c"
+ "src/c/string/disp/u8disps.c"
+ "src/c/string/disp/i8dispa.c"
+ "src/c/string/disp/i8disps.c"
+ "src/c/string/disp/u16dispa.c"
+ "src/c/string/disp/u16disps.c"
+ "src/c/string/disp/i16dispa.c"
+ "src/c/string/disp/i16disps.c"
+ "src/c/string/disp/ddisph.c"
+ "src/c/string/string/zstringa.c"
+ "src/c/string/string/zstrings.c"
+ "src/c/string/string/cstringa.c"
+ "src/c/string/string/cstrings.c"
+ "src/c/string/string/sstringa.c"
+ "src/c/string/string/sstrings.c"
+ "src/c/string/string/dstringa.c"
+ "src/c/string/string/dstrings.c"
+ "src/c/string/string/u8stringa.c"
+ "src/c/string/string/u8strings.c"
+ "src/c/string/string/i8stringa.c"
+ "src/c/string/string/i8strings.c"
+ "src/c/string/string/u16stringa.c"
+ "src/c/string/string/u16strings.c"
+ "src/c/string/string/i16stringa.c"
+ "src/c/string/string/i16strings.c"
+ "src/c/signalProcessing/fft/dfft2.c"
+ "src/c/signalProcessing/fft/cfftma.c"
+ "src/c/signalProcessing/fft/r2tx.c"
+ "src/c/signalProcessing/fft/r4tx.c"
+ "src/c/signalProcessing/fft/r8tx.c"
+ "src/c/signalProcessing/fft/dfftbi.c"
+ "src/c/signalProcessing/fft/dfftma.c"
+ "src/c/signalProcessing/fft/dfftmx.c"
+ "src/c/signalProcessing/fft/sfftma.c"
+ "src/c/signalProcessing/fft/zfftma.c"
+ "src/c/signalProcessing/fft/fft842.c"
+ "src/c/signalProcessing/lev/dleva.c"
+ "src/c/signalProcessing/lev/sleva.c"
+ "src/c/signalProcessing/lev/zleva.c"
+ "src/c/signalProcessing/lev/dleva2.c"
+ "src/c/signalProcessing/lev/sleva2.c"
+ "src/c/signalProcessing/lev/zleva2.c"
+ "src/c/signalProcessing/lev/cleva2.c"
+ "src/c/signalProcessing/lev/cleva.c"
+ "src/c/signalProcessing/conv/dconva.c"
+ "src/c/signalProcessing/conv/sconva.c"
+ "src/c/signalProcessing/conv/zconva.c"
+ "src/c/signalProcessing/conv/cconva.c"
+ "src/c/signalProcessing/ifft/difftbi.c"
+ "src/c/signalProcessing/ifft/difftma.c"
+ "src/c/signalProcessing/ifft/difftmx.c"
+ "src/c/signalProcessing/ifft/difft2.c"
+ "src/c/signalProcessing/ifft/ifft842.c"
+ "src/c/signalProcessing/ifft/cifftma.c"
+ "src/c/signalProcessing/ifft/zifftma.c"
+ "src/c/signalProcessing/ifft/sifftma.c"
+ "src/c/signalProcessing/ifft/ir2tx.c"
+ "src/c/signalProcessing/ifft/ir4tx.c"
+ "src/c/signalProcessing/ifft/ir8tx.c"
+ "src/c/signalProcessing/fftshift/crowfftshifta.c"
+ "src/c/signalProcessing/fftshift/sfftshifta.c"
+ "src/c/signalProcessing/fftshift/drowfftshifta.c"
+ "src/c/signalProcessing/fftshift/srowfftshifta.c"
+ "src/c/signalProcessing/fftshift/zcolumnfftshifta.c"
+ "src/c/signalProcessing/fftshift/zrowfftshifta.c"
+ "src/c/signalProcessing/fftshift/ccolumnfftshifta.c"
+ "src/c/signalProcessing/fftshift/scolumnfftshifta.c"
+ "src/c/signalProcessing/fftshift/cfftshifta.c"
+ "src/c/signalProcessing/fftshift/zfftshifta.c"
+ "src/c/signalProcessing/fftshift/dcolumnfftshifta.c"
+ "src/c/signalProcessing/fftshift/dfftshifta.c"
+ "src/c/signalProcessing/levin/levinUtils.c"
+ "src/c/signalProcessing/levin/slevina.c"
+ "src/c/signalProcessing/levin/dlevina.c"
+ "src/c/signalProcessing/lpc2cep/dlpc2cepa.c"
+ "src/c/signalProcessing/lpc2cep/zlpc2cepa.c"
+ "src/c/signalProcessing/lpc2cep/clpc2cepa.c"
+ "src/c/signalProcessing/lpc2cep/slpc2cepa.c"
+ "src/c/signalProcessing/crossCorr/dcrossCorra.c"
+ "src/c/signalProcessing/crossCorr/zcrossCorra.c"
+ "src/c/signalProcessing/crossCorr/scrossCorra.c"
+ "src/c/signalProcessing/crossCorr/ccrossCorra.c"
+ "src/c/signalProcessing/conv2d/zconv2da.c"
+ "src/c/signalProcessing/conv2d/cconv2da.c"
+ "src/c/signalProcessing/conv2d/sconv2da.c"
+ "src/c/signalProcessing/conv2d/dconv2da.c"
+ "src/c/signalProcessing/hilbert/shilberta.c"
+ "src/c/signalProcessing/hilbert/shilberts.c"
+ "src/c/signalProcessing/hilbert/dhilberta.c"
+ "src/c/signalProcessing/hilbert/dhilberts.c"
+ "src/c/implicitList/zimplicitLists.c"
+ "src/c/implicitList/dimplicitLists.c"
+ "src/c/implicitList/cimplicitLists.c"
+ "src/c/implicitList/simplicitLists.c"
+ "src/c/differential_calculus/ode/dodes.c"
+ "src/c/differential_calculus/ode/dodea.c"
+ "src/c/differential_calculus/diff/ddiffca.c"
+ "src/c/differential_calculus/diff/sdiffca.c"
+ "src/c/differential_calculus/diff/u8diffca.c"
+ "src/c/Files/mopen/mopen.c"
+ "src/c/Files/mclose/mclose.c"
+ "src/c/Files/mput/dmputs.c"
+ "src/c/Files/mput/smputs.c"
+ "src/c/Files/mput/u8mputs.c"
+ "src/c/Files/mput/i8mputs.c"
+ "src/c/Files/mput/u16mputs.c"
+ "src/c/Files/mput/i16mputs.c"
+ "src/c/Files/mput/dmputa.c"
+ "src/c/Files/mput/smputa.c"
+ "src/c/Files/mput/u8mputa.c"
+ "src/c/Files/mput/i8mputa.c"
+ "src/c/Files/mput/u16mputa.c"
+ "src/c/Files/mput/i16mputa.c"
+ "src/c/string/convstr/gconvstrs.c"
+ "src/c/string/strsubst/gstrsubsta.c"
+ //"src/c/string/strcmp/gstrcmps.c"
+ "src/c/string/strrev/gstrreva.c"
+ "src/c/string/strrchr/gstrrchra.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bins.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bins.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bins.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bins.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bins.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bina.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bina.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bina.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bina.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bina.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2base/ddec2bases.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2base/sdec2bases.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2base/ddec2basea.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2base/sdec2basea.c"
+ "src/c/elementaryFunctions/radix_conversions/base2dec/gbase2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/base2dec/dbase2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octs.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octa.c"
+ "src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octa.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/doct2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/doct2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/hex2dec/ghex2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/hex2dec/dhex2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2decs.c"
+ //"src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2decs.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2deca.c"
+ //"src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2deca.c"
+ "src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2deca.c"
+ "src/c/elementaryFunctions/Trigonometry/cosd/dcosda.c"
+ "src/c/elementaryFunctions/Trigonometry/cosd/dcosds.c"
+ "src/c/elementaryFunctions/Trigonometry/cosd/scosda.c"
+ "src/c/elementaryFunctions/Trigonometry/cosd/scosds.c"
+ "src/c/elementaryFunctions/Trigonometry/cotd/dcotda.c"
+ "src/c/elementaryFunctions/Trigonometry/cotd/dcotds.c"
+ "src/c/elementaryFunctions/Trigonometry/cotd/scotda.c"
+ "src/c/elementaryFunctions/Trigonometry/cotd/scotds.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/dcotha.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/dcoths.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/scotha.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/scoths.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/zcoths.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/zcotha.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/ccoths.c"
+ "src/c/elementaryFunctions/Trigonometry/coth/ccotha.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/dcsca.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/dcscs.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/scsca.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/scscs.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/zcscs.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/zcsca.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/ccscs.c"
+ "src/c/elementaryFunctions/Trigonometry/csc/ccsca.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/dcscds.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/dcscda.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/scscds.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/scscda.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/zcscds.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/zcscda.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/ccscds.c"
+ "src/c/elementaryFunctions/Trigonometry/cscd/ccscda.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/dcscha.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/dcschs.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/scscha.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/scschs.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/zcschs.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/zcscha.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/ccschs.c"
+ "src/c/elementaryFunctions/Trigonometry/csch/ccscha.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/dsecs.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/dseca.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/sseca.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/ssecs.c"
+ //"src/c/elementaryFunctions/Trigonometry/sec/zseca.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/zsecs.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/cseca.c"
+ "src/c/elementaryFunctions/Trigonometry/sec/csecs.c"
+ "src/c/elementaryFunctions/Trigonometry/secd/dsecda.c"
+ "src/c/elementaryFunctions/Trigonometry/secd/dsecds.c"
+ "src/c/elementaryFunctions/Trigonometry/secd/ssecda.c"
+ "src/c/elementaryFunctions/Trigonometry/secd/ssecds.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/dsechs.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/dsecha.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/ssecha.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/ssechs.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/zsecha.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/zsechs.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/csecha.c"
+ "src/c/elementaryFunctions/Trigonometry/sech/csechs.c"
+ "src/c/elementaryFunctions/discrete_mathematics/factorial/dfactorials.c"
+ "src/c/elementaryFunctions/discrete_mathematics/factorial/dfactoriala.c"
+ "src/c/elementaryFunctions/discrete_mathematics/factorial/sfactorials.c"
+ "src/c/elementaryFunctions/discrete_mathematics/factorial/sfactoriala.c"
+ "src/c/elementaryFunctions/discrete_mathematics/primes/dprimess.c"
+ "src/c/elementaryFunctions/discrete_mathematics/primes/sprimess.c"
+ "src/c/elementaryFunctions/discrete_mathematics/factor/dfactors.c"
+ "src/c/elementaryFunctions/discrete_mathematics/factor/sfactors.c"
+ "src/c/CACSD/syslin/dsyslina.c"
+ "src/c/CACSD/lqr/dlqra.c"
+ "src/c/CACSD/lqe/dlqea.c"
+ "src/c/CACSD/obscont/dobsconta.c"
+ "src/c/linearAlgebra/schur/dschura.c"
+ "src/c/linearAlgebra/schur/dgschura.c"
+ "src/c/linearAlgebra/balanc/dbalanca.c"
+ "src/c/linearAlgebra/rcond/drconda.c"];
+
+ //Files to be inserted only if output format selected is 'Arduino'.
+ Arduino_files = ["src/c/scilab-arduino/cmd_digital_out/u8cmd_digital_outs.c"
+ "src/c/scilab-arduino/cmd_digital_in/u8cmd_digital_ins.c"
+ "src/c/scilab-arduino/cmd_analog_out/u8cmd_analog_outs.c"
+ "src/c/scilab-arduino/cmd_analog_in/u8cmd_analog_ins.c"
+ "src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c"
+ "src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c"
+ //"src/c/scilab-arduino/cmd_servo_attach/u8cmd_servo_attach.cpp"
+ //"src/c/scilab-arduino/cmd_servo_detach/u8cmd_servo_detach.cpp"
+ //"src/c/scilab-arduino/cmd_servo_move/u8cmd_servo_move.cpp"
+ "src/c/scilab-arduino/sleep/u16sleeps.c"
+ "src/c/scilab-arduino/cmd_analog_in_volt/u8cmd_analog_in_volts.c"
+ "src/c/scilab-arduino/cmd_analog_out_volt/u8cmd_analog_out_volts.c"
+ "src/c/scilab-arduino/cmd_dcmotor_release/u8cmd_dcmotor_releases.c"
+ "src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp"
+ "src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp"
+ "src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp"
+ "src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp"
+ "src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp"];
+
+ //Files to be inserted only if output format selected is 'AVR'.
+ AVR_files = [
+ "src/c/hardware/avr/gpio/u8AVRDigitalSetups.c"
+ "src/c/hardware/avr/gpio/u8AVRDigitalPortSetups.c"
+ "src/c/hardware/avr/gpio/u8AVRDigitalOuts.c"
+ "src/c/hardware/avr/gpio/u8AVRDigitalIns.c"
+ "src/c/hardware/avr/adc/u8AVRADCSetups.c"
+ "src/c/hardware/avr/adc/u8AVRReadADCs.c"
+ "src/c/hardware/avr/pwm/u8AVRPWM0Setups.c"
+ "src/c/hardware/avr/pwm/u8AVRPWM2Setups.c"
+ "src/c/hardware/avr/pwm/u8AVRPWM1Setups.c"
+ "src/c/hardware/avr/pwm/u8AVRPWM0SetDutys.c"
+ "src/c/hardware/avr/pwm/u8AVRPWM2SetDutys.c"
+ "src/c/hardware/avr/pwm/u8AVRPWM1SetDutys.c"
+ "src/c/hardware/avr/util/u16AVRSleeps.c"
+ "src/c/hardware/avr/timer/u8AVRTimerSetups.c"
+ "src/c/hardware/avr/timer/u8AVRGetTimerValues.c"
+ "src/c/hardware/avr/uart/u8AVRUARTReceiveCharu8.c"
+ "src/c/hardware/avr/uart/u8AVRUARTSetups.c"
+ "src/c/hardware/avr/uart/u8AVRUARTTransmits.c"
+ "src/c/hardware/avr/uart/i16AVRUARTTransmits.c"
+ "src/c/hardware/avr/uart/i8AVRUARTTransmits.c"
+ "src/c/hardware/avr/uart/gAVRUARTTransmits.c"
+ "src/c/hardware/avr/uart/u16AVRUARTTransmits.c"
+ "src/c/hardware/avr/uart/u8AVRUARTTransmita.c"
+ "src/c/hardware/avr/uart/i16AVRUARTTransmita.c"
+ "src/c/hardware/avr/uart/i8AVRUARTTransmita.c"
+ "src/c/hardware/avr/uart/dAVRUARTTransmits.c"
+// "src/c/hardware/avr/uart/gAVRUARTTransmita.c"
+ "src/c/hardware/avr/uart/u16AVRUARTTransmita.c"
+// "src/c/hardware/avr/uart/sAVRUARTTransmits.c"
+
+
+ ];
+
+ RPI_files = [
+ "src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c"
+ "src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c"
+ "src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c"
+ "src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c"
+ "src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c"
+ "src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c"
+ "src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c"
+ "src/c/hardware/rasberrypi/serial/u16RPISerialSetups.c"
+ "src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c"
+ "src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c"
+ "src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c"
+ "src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c"
+ "src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c"
+ "src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c"
+ "src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c"
+ "src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c"
+ "src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c"
+ "src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c"
+ "src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c"
+ "src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c"
+ "src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c"
+ "src/c/hardware/rasberrypi/pwm/u8RPIHardPWMWrites.c"
+ "src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetRanges.c"
+ "src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetModes.c"
+ "src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetClocks.c"
+ "src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c"
+ ];
+
+ OpenCV_files = [
+ "src/c/imageProcessing/cvcore/imcvCreateImages.cpp"
+ "src/c/imageProcessing/cvcore/imcvGetImgSizes.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvCvtColors.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvThresholds.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvAdaptThresholds.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvDistanceTransforms.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvBlurs.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvGaussianBlurs.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvMedianBlurs.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvErode.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvDilate.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvCanny.cpp"
+ "src/c/imageProcessing/cvimgproc/imcvCornerHarris.cpp"];
+
+ if Target == "Arduino" & BuildTool == "nmake"
+ Required_addrs = get_rquird_fnctns(Standalone_files,Arduino_files,SharedInfo);
+ end
+
+ if Target == "StandAlone"
+ allSources = Standalone_files;
+ elseif Target == "Arduino"
+ if BuildTool == "nmake"
+ allSources = Required_addrs;
+ else
+ allSources = cat(1,Standalone_files, Arduino_files);
+ end
+ elseif Target == "AVR"
+ allSources = cat(1,Standalone_files, AVR_files);
+ elseif Target == "RPi"
+ allSources = cat(1,Standalone_files, RPI_files);
+ end
+
+ if (SharedInfo.OpenCVUsed == %T)
+ allSources = cat(1,allSources,OpenCV_files);
+ end
+
+ //"src/c/matrixOperations/cat/zcata.c"
+ // "src/c/matrixOperations/cat/zcats.c"
+ // "src/c/matrixOperations/cat/ccata.c"
+ //"src/c/matrixOperations/cat/ccats.c"
+endfunction
diff --git a/2.3-1/macros/findDeps/getArduinoFiles.sci b/2.3-1/macros/findDeps/getArduinoFiles.sci
new file mode 100644
index 00000000..97264575
--- /dev/null
+++ b/2.3-1/macros/findDeps/getArduinoFiles.sci
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function arduinoFiles = getArduinoFiles()
+// -----------------------------------------------------------------
+// Returns address of some default arduino files
+//
+// Input data:
+// None
+//
+// Output data:
+// Returns address of some default arduino files
+//
+// Author: Siddhesh Wani
+// -----------------------------------------------------------------
+
+ arduinoFiles = [
+ "src/c/scilab-arduino/default_files/setup_arduino.h"
+ "src/c/scilab-arduino/default_files/sci2c_arduino.ino"];
+endfunction
diff --git a/2.3-1/macros/findDeps/get_rquird_fnctns.sci b/2.3-1/macros/findDeps/get_rquird_fnctns.sci
new file mode 100644
index 00000000..28837952
--- /dev/null
+++ b/2.3-1/macros/findDeps/get_rquird_fnctns.sci
@@ -0,0 +1,140 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+// 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
+// Author: Yash Pratap Singh Tomar
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+//This function creates and compares the list of functions used in scilab code to existing function list from getallSources
+function Required_addrs = get_rquird_fnctns(Standalone_files,Arduino_files,SharedInfo)
+ Required_stdalon_indx = 1;
+ Required_ardno_indx = 1;
+ x = 1;
+ y = 1;
+
+//Creating lists for stanalone C file and function
+//Some C files don't have their function name directory. So their address is being shifted to last of the list
+ Standalone_files_1 = Standalone_files;
+ Standalone_files_extras(1) = Standalone_files_1(76);
+ Standalone_files_extras(2) = Standalone_files_1(77);
+ Standalone_files_extras(3) = Standalone_files_1(1009);
+ Standalone_files_extras(4) = Standalone_files_1(1010);
+ Standalone_files_extras(5) = Standalone_files_1(1011);
+ Standalone_files_extras(6) = Standalone_files_1(1012);
+ Standalone_files_1(1012) = [];
+ Standalone_files_1(1011) = [];
+ Standalone_files_1(1010) = [];
+ Standalone_files_1(1009) = [];
+ Standalone_files_1(77) = [];
+ Standalone_files_1(76) = [];
+
+//calculating the total no. of standalone files
+ No_of_stdalon_files = size(Standalone_files_1);
+ No_of_stdalon_files = No_of_stdalon_files(1);
+
+//This for loop is to extract function name list from address list
+ for index=1:No_of_stdalon_files
+ K = strsplit(Standalone_files_1(index),"/");
+ Standalone_files_folders(index) = K(4);
+ Standalone_C_files(index) = K(5);
+ Standalone_C_files(index) = strtok(Standalone_C_files(index),".");
+ end
+
+//Here, it adds the functions to the list which were earlier removed to shift to the end
+ for index=1:6
+ K = strsplit(Standalone_files_extras(index),"/");
+ Standalone_files_folders(No_of_stdalon_files+index) = K(3);
+ Standalone_C_files(No_of_stdalon_files+index) = K(4);
+ Standalone_files_1(No_of_stdalon_files+index)= Standalone_files_extras(index);
+ Standalone_C_files(No_of_stdalon_files+index) = strtok(Standalone_C_files(No_of_stdalon_files+index),".");
+ end
+
+//Following similar procedure for Arduino
+ Arduino_files_1 = Arduino_files;
+ No_of_ardno_files = size(Arduino_files_1);
+ No_of_ardno_files = No_of_ardno_files(1);
+ for index=1:No_of_ardno_files
+ K = strsplit(Arduino_files_1(index),"/");
+ Arduino_files_folders(index) = K(4);
+ Arduino_C_files(index) = K(5);
+ Arduino_C_files(index) = strtok(Arduino_C_files(index),".");
+ end
+
+//comparing
+//this compares the list of functions used in scilab file to the created standalone C files and function list
+ for index = 1:SharedInfo.Function_list_index
+ for k = 1:No_of_stdalon_files
+ if SharedInfo.Function_list(index) == Standalone_files_folders(k)
+ Required_fnctn_stdalon(Required_stdalon_indx) = k;
+ Required_fnctn_stdlon_f(x) = Standalone_C_files(k);
+ x = x+1;
+ Required_stdalon_indx = Required_stdalon_indx + 1;
+ end
+ end
+ end
+ if x == 1
+ Required_fnctn_stdlon_f = [];
+ end
+//this compares the list of functions used in scilab file to the created Arduino files and function list
+Required_stdalon_indx = Required_stdalon_indx - 1;
+
+ for index = 1:SharedInfo.Function_list_index
+ for k = 1:No_of_ardno_files
+ if SharedInfo.Function_list(index) == Arduino_files_folders(k);
+ Required_fnctn_ardno(Required_ardno_indx) = k;
+ Required_fnctn_ardno_f(y) = Arduino_C_files(k);
+ y = y+1;
+ Required_ardno_indx = Required_ardno_indx + 1;
+ end
+ end
+ end
+
+ Required_ardno_indx = Required_ardno_indx - 1;
+//Calling Scilab2CDeps structure
+ scilab2ccode = Scilab2CDeps();
+
+//Looking for the depencies of the C files used on other files
+ for index = 1:Required_stdalon_indx
+ call = "scilab2ccode.deps." + Standalone_C_files(Required_fnctn_stdalon(index));
+ call_val = eval(call);
+ Required_fnctn_stdlon_f = cat(1,Required_fnctn_stdlon_f,(call_val)');
+ end
+
+ Required_fnctn_stdlon_f = unique(Required_fnctn_stdlon_f);
+
+//Looking for the depencies of the Arduino files used on other C or Arduino files
+ for index = 1:Required_ardno_indx
+ call = "scilab2ccode.deps." + Arduino_C_files(Required_fnctn_ardno(index));
+ call_val = eval(call);
+ Required_fnctn_ardno_f = cat(1,Required_fnctn_ardno_f,(call_val)');
+ end
+ Required_fnctn_ardno_f = unique(Required_fnctn_ardno_f);
+
+//Adding Standalone and Arudino files lists
+ all_files_addrs = cat(1,Standalone_files_1,Arduino_files_1);
+
+//Adding Requied Standalone and Arudino files lists which are to be copied
+ required_files = cat(1,Required_fnctn_stdlon_f,Required_fnctn_ardno_f);
+ required_files = unique(required_files);
+ no_of_required_files = size(required_files);
+ no_of_required_files = no_of_required_files(1);
+ no_of_all_files = size(all_files_addrs);
+ no_of_all_files = no_of_all_files(1);
+
+ all_files = cat(1,Standalone_C_files,Arduino_C_files);
+ index = 1;
+//Creating final list which has address of files to be copied
+ for i=1:no_of_required_files
+ for k=1:no_of_all_files
+ if required_files(i) == all_files(k)
+ Required_addrs(index) = all_files_addrs(k);
+ index = index + 1;
+ end
+ end
+ end
+
+endfunction
diff --git a/2.3-1/macros/findDeps/lib b/2.3-1/macros/findDeps/lib
new file mode 100644
index 00000000..6d120fef
--- /dev/null
+++ b/2.3-1/macros/findDeps/lib
Binary files differ
diff --git a/2.3-1/macros/findDeps/names b/2.3-1/macros/findDeps/names
new file mode 100644
index 00000000..b1825b69
--- /dev/null
+++ b/2.3-1/macros/findDeps/names
@@ -0,0 +1,8 @@
+Scilab2CDeps
+findDeps
+getAllHeaders
+getAllInterfaces
+getAllLibraries
+getAllSources
+getArduinoFiles
+get_rquird_fnctns
diff --git a/2.3-1/macros/full_reset.sce b/2.3-1/macros/full_reset.sce
new file mode 100644
index 00000000..084ad851
--- /dev/null
+++ b/2.3-1/macros/full_reset.sce
@@ -0,0 +1,22 @@
+// Clear files, variables, figures, screen.
+//mode(-1);
+//clc;
+
+//disp('Starting full reset...')
+//disp('Press enter to continue...');
+//halt;
+
+//clc;
+//clear
+//mclose('all');
+
+//
+// LOL !!!!
+// Well... I'm pretty sure this is totally useless.
+//
+// Assuming that max 50 figures are currently open
+//for counter =1:50
+// close
+//end
+//YES BUT I NEED HOW TO PERFORM THE CLOSE ALL ACTION!!!
+//lines(0)
diff --git a/2.3-1/macros/getScilab2cVersion.sci b/2.3-1/macros/getScilab2cVersion.sci
new file mode 100644
index 00000000..36c01797
--- /dev/null
+++ b/2.3-1/macros/getScilab2cVersion.sci
@@ -0,0 +1,15 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012-2012 - Scilab Enterprises - Bruno JOFRET
+//
+// 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
+//
+//
+
+function version=getScilab2cVersion()
+ version = "2.3"
+endfunction
diff --git a/2.3-1/macros/lib b/2.3-1/macros/lib
new file mode 100644
index 00000000..77c2f112
--- /dev/null
+++ b/2.3-1/macros/lib
Binary files differ
diff --git a/2.3-1/macros/names b/2.3-1/macros/names
new file mode 100644
index 00000000..a126347e
--- /dev/null
+++ b/2.3-1/macros/names
@@ -0,0 +1,6 @@
+cb_sci2c_gui
+getScilab2cVersion
+runsci2c
+runscicode
+sci2c_gui
+scilab2c
diff --git a/2.3-1/macros/runsci2c.sci b/2.3-1/macros/runsci2c.sci
new file mode 100644
index 00000000..7475f870
--- /dev/null
+++ b/2.3-1/macros/runsci2c.sci
@@ -0,0 +1,266 @@
+function runsci2c(UserScilabMainFile, UserSciFilesPaths, SCI2COutputPath, Runmode, BuildTool,Target,Board_name)
+// function runsci2c(SCI2CInputPrmFile)
+// -----------------------------------------------------------------
+// === hArtes/PoliBa/GAP SCI2C tool ===
+// === Authors: ===
+// === Raffaele Nutricato ===
+// === raffaele.nutricato@tiscali.it ===
+// === Alberto Morea ===
+//
+// This is the main function of SCI2C.
+//
+// Input data:
+// SCI2CInputPrmFile: path+filename of the input parameters file.
+//
+// Output data:
+// ---
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+// 11-Apr-2007 -- Alberto Morea: Tests.
+//
+// Copyright 2007 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// -------------------
+// --- Soft reset. ---
+// -------------------
+//mode(-1);
+//clc;
+// -----------------------
+// --- End Soft reset. ---
+// -----------------------
+
+// -------------------------
+// --- Input Parameters. ---
+// -------------------------
+RunSci2CMainDir = pwd();
+disp(RunSci2CMainDir);
+// -----------------------------
+// --- End input Parameters. ---
+// -----------------------------
+
+// -------------------------------
+// --- Perform Intializations. ---
+// -------------------------------
+// --- Load SCI2C directories and files. ---
+//cd(fullfile(RunSci2CMainDir,'ToolInitialization'));
+//exec('INIT_SCI2CLoader.sce');
+//cd(RunSci2CMainDir);
+
+// --- Initialize the SCI2C tool directories and files. ---
+[FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(UserScilabMainFile, ...
+ UserSciFilesPaths, SCI2COutputPath, RunMode, Target,Board_name);
+
+// -- Load FileInfo and SharedInfo
+load(SharedInfoDatFile,'SharedInfo');
+load(FileInfoDatFile,'FileInfo');
+
+RunMode = SharedInfo.RunMode;
+
+// --- Generation of the library structure. ---
+if (RunMode == 'GenLibraryStructure' | RunMode == 'All')
+ INIT_GenLibraries(FileInfoDatFile);
+end
+
+// --- Load Library Info. ---
+INIT_LoadLibraries(FileInfoDatFile);
+
+// -----------------------------------
+// --- End Perform Intializations. ---
+// -----------------------------------
+
+// ----------------------------------
+// --- Perform SCI2C Translation. ---
+// ----------------------------------
+if (RunMode == 'All' | RunMode == 'Translate')
+ FlagContinueTranslation = 1;
+ while(FlagContinueTranslation == 1)
+ UpdateSCI2CInfo(FileInfoDatFile);
+ AST_GetASTFile(FileInfoDatFile);
+ AST2Ccode(FileInfoDatFile);
+ JoinDeclarAndCcode(FileInfoDatFile);
+ FlagContinueTranslation = ManageNextConversion(FileInfoDatFile);
+ end
+end
+
+load(SharedInfoDatFile,'SharedInfo');
+// ---------------------------
+// --- Copy library files. ---
+// ---------------------------
+
+global SCI2CHOME
+allSources = SCI2CHOME + "/" + getAllSources(SharedInfo, BuildTool);
+allHeaders = SCI2CHOME + "/" +getAllHeaders(SharedInfo);
+allInterfaces = SCI2CHOME + "/" + getAllInterfaces(SharedInfo);
+if(~isempty(getAllLibraries(SharedInfo)))
+ allLibraries = SCI2CHOME + "/" + getAllLibraries(SharedInfo);
+else
+ allLibraries = ''
+end
+//allLibraries = SCI2CHOME + "/" + getAllLibraries(Target);
+if (Target == 'Arduino')
+ mkdir(SCI2COutputPath+"/arduino/");
+ mkdir(SCI2COutputPath+"/arduino/sci2c_arduino");
+end
+mkdir(SCI2COutputPath+"/src/");
+mkdir(SCI2COutputPath+"/src/c/");
+mkdir(SCI2COutputPath+"/includes/");
+mkdir(SCI2COutputPath+"/interfaces/");
+mkdir(SCI2COutputPath+"/libraries/");
+
+// -- Sources
+PrintStepInfo('Copying sources', FileInfo.GeneralReport,'both');
+
+for i = 1:size(allSources, "*")
+ // DEBUG only
+ //disp("Copying "+allSources(i)+" in "+SCI2COutputPath+"/src/c/");
+ //Copy ode related functions only if 'ode' function is used.
+ if(~isempty(strstr(allSources(i),'dode')))
+ if(size(SharedInfo.Includelist) <> 0)
+ if((mtlb_strcmp(part(SharedInfo.Includelist(1),1:5),'odefn') == %T))
+ if BuildTool == "nmake"
+ copyfile(allSources(i), SCI2COutputPath+"/arduino/sci2c_arduino/");
+ else
+ copyfile(allSources(i), SCI2COutputPath+"/src/c/");
+ end
+ end
+ end
+ else
+ if BuildTool == "nmake"
+ copyfile(allSources(i), SCI2COutputPath+"/arduino/sci2c_arduino/");
+ else
+ copyfile(allSources(i), SCI2COutputPath+"/src/c/");
+ end
+ end
+end
+
+// -- Includes
+PrintStepInfo('Copying headers', FileInfo.GeneralReport,'both');
+for i = 1:size(allHeaders, "*")
+ // DEBUG only
+ //disp("Copying "+allHeaders(i)+" in "+SCI2COutputPath+"/includes/");
+ if BuildTool == "nmake"
+ copyfile(allHeaders(i), SCI2COutputPath+"/arduino/sci2c_arduino/");
+ else
+ copyfile(allHeaders(i), SCI2COutputPath+"/includes/");
+ end
+end
+
+// -- Interfaces
+PrintStepInfo('Copying interfaces', FileInfo.GeneralReport,'both');
+for i = 1:size(allInterfaces, "*")
+ // DEBUG only
+ //disp("Copying "+allInterfaces(i)+" in "+SCI2COutputPath+"/interfaces/");
+ if BuildTool == "nmake"
+ copyfile(allInterfaces(i), SCI2COutputPath+"/arduino/sci2c_arduino/");
+ else
+ copyfile(allInterfaces(i), SCI2COutputPath+"/interfaces/");
+ end
+end
+
+// -- Libraries
+if(~isempty(allLibraries))
+ PrintStepInfo('Copying libraries', FileInfo.GeneralReport,'both');
+ for i = 1:size(allLibraries, "*")
+ // DEBUG only
+ //disp("Copying "+allLibraries(i)+" in "+SCI2COutputPath+"/libraries/");
+ copyfile(allLibraries(i), SCI2COutputPath+"/libraries/");
+ end
+end
+
+//Copy folder containing opencv include files in Includes folder
+//if((Target == 'RPi') & (SharedInfo.OpenCVUsed == %T))
+// copyfile(SCI2CHOME + "/" +'thirdparty/raspberrypi/includes/opencv2/',SCI2COutputPath+"/includes/opencv2")
+//end
+
+// --------------------------
+// --- Generate Makefile. ---
+// --------------------------
+//If output format is chosen as 'Arduino', then copy makefile for arduino from
+//default folder, else generate makefile for standalone c code
+
+if (Target == 'Arduino')
+
+ GenerateSetupFunction(FileInfo);
+ //Copy arduino makefile
+ arduinoFiles = SCI2CHOME + "/" + getArduinoFiles();
+ PrintStepInfo('Copying arduino files', FileInfo.GeneralReport,'both');
+ copyfile(arduinoFiles(1), SCI2COutputPath);
+ for i = 2:size(arduinoFiles, "*")
+ // DEBUG only
+ //disp("Copying "+arduinoFiles(i)+" in "+SCI2COutputPath+"/arduino/sci2carduino");
+ copyfile(arduinoFiles(i), SCI2COutputPath+"/arduino/sci2c_arduino/");
+ end
+ C_GenerateMkfle_arduino(FileInfo,SharedInfo);
+ movefile(FileInfo.MakefileFilename, SCI2COutputPath+"/arduino/sci2c_arduino/");
+elseif (Target == 'AVR')
+ AVRFile = SCI2CHOME + "/" + "src/c/hardware/avr/default_files/Makefile";
+ copyfile(AVRFile, SCI2COutputPath);
+else
+
+ if BuildTool == "make"
+ C_GenerateMakefile(FileInfo,SharedInfo);
+ copyBlasLapackLibs(FileInfo,SharedInfo); //Previously .dll files and blas,lapack library not creating for cygwin by additing this works fine
+ end
+ if BuildTool == "nmake"
+ //copyBlasLapackLibs(FileInfo,SharedInfo);
+ C_GenerateMakefile_msvc(FileInfo,SharedInfo);
+ end
+end
+if BuildTool == "nmake" & Target == 'Arduino'
+ movefile(SCI2COutputPath +"/setup_arduino.h", SCI2COutputPath+"/arduino/sci2c_arduino/");
+ movefile(SCI2COutputPath +"/setup_arduino.cpp", SCI2COutputPath+"/arduino/sci2c_arduino/");
+ movefile(SCI2COutputPath +"/loop_arduino.cpp", SCI2COutputPath+"/arduino/sci2c_arduino/");
+ movefile(SCI2COutputPath +"/loop_arduino.h", SCI2COutputPath+"/arduino/sci2c_arduino/");
+end
+
+
+
+// ------------------------------
+// --- Generate SCI2C Header. ---
+// ------------------------------
+// FIXME : Give the user the ability to set this prefix
+FunctionPrefix = "SCI2C";
+C_GenerateSCI2CHeader(SCI2COutputPath+"/includes/", FunctionPrefix);
+
+// -----------------
+// --- Epilogue. ---
+// -----------------
+if (RunMode == 'All' | RunMode == 'Translate')
+ PrintStepInfo('Translation Successfully Completed!!!',FileInfo.GeneralReport,'both');
+elseif (RunMode == 'GenLibraryStructure')
+ PrintStepInfo('Library Structure Successfully Created!!!',FileInfo.GeneralReport,'both');
+end
+
+
+endfunction
+
+
+function r = copyBlasLapackLibs(FileInfo, SharedInfo)
+ r = %f;
+ if getos() == 'Windows' then
+ // create external-libs directory
+ EXTERNLIBSPATH = FileInfo.OutCCCodeDir + '/external-libs';
+ if ~isdir(EXTERNLIBSPATH) then
+ mkdir(EXTERNLIBSPATH);
+ end
+ if ~isdir(EXTERNLIBSPATH) r = %f;
+ else
+ // copy blas & lapack librairies
+ copyfile(SCI + '/bin/blasplus.lib', EXTERNLIBSPATH);
+ copyfile(SCI + '/bin/lapack.lib', EXTERNLIBSPATH);
+ copyfile(SCI + '/bin/blasplus.dll', FileInfo.OutCCCodeDir);
+ copyfile(SCI + '/bin/lapack.dll', FileInfo.OutCCCodeDir);
+ // copy dependencies if MKL
+ if isfile(SCI + '/bin/libguide40.dll') then
+ copyfile(SCI + '/bin/libguide40.dll', FileInfo.OutCCCodeDir);
+ end
+ if isfile(SCI + '/bin/libiomp5md.dll') then
+ copyfile(SCI + '/bin/libiomp5md.dll', FileInfo.OutCCCodeDir);
+ end
+ r = %t;
+ end
+ end
+endfunction
diff --git a/2.3-1/macros/runscicode.sci b/2.3-1/macros/runscicode.sci
new file mode 100644
index 00000000..94b76a17
--- /dev/null
+++ b/2.3-1/macros/runscicode.sci
@@ -0,0 +1,67 @@
+function runscicode(UserScilabMainFile, UserSciFilesPaths)
+// function runscicode(SCI2CInputPrmFile)
+// -----------------------------------------------------------------
+// === hArtes/PoliBa/GAP SCI2C tool ===
+// === Authors: ===
+// === Raffaele Nutricato ===
+// === raffaele.nutricato@tiscali.it ===
+// === Alberto Morea ===
+//
+// Run the code written by the user before translating it.
+//
+// Input data:
+// ---
+// Output data:
+// ---
+//
+// Status:
+// 11-Apr-2007 -- Raffaele Nutricato: Author.
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// -------------------
+// --- Soft reset. ---
+// -------------------
+//mode(-1);
+//clc;
+// -----------------------
+// --- End Soft reset. ---
+// -----------------------
+
+// -------------------------
+// --- Input Parameters. ---
+// -------------------------
+//RunSci2CMainDir = pwd();
+// -----------------------------
+// --- End input Parameters. ---
+// -----------------------------
+
+//cd(fullfile(RunSci2CMainDir,'ToolInitialization'));
+//exec('INIT_SCI2CLoader.sce');
+//cd(RunSci2CMainDir);
+
+// --- Read user parameters. ---
+//exec(SCI2CInputPrmFile);
+
+// --- Add all user paths. ---
+for cntpath = 1:size(UserSciFilesPaths,1)
+ getd(UserSciFilesPaths(cntpath));
+end
+
+// --- Execute code. ---
+disp('-----------------------------------');
+disp('--- Executing your SCILAB code. ---');
+disp('-----------------------------------');
+exec(UserScilabMainFile);
+[tmppath,tmpfile,tmpext] = fileparts(UserScilabMainFile);
+//cd(tmppath);
+execstr(tmpfile);
+//cd(RunSci2CMainDir);
+disp('------------------------------------------');
+disp('--- End Execution of your SCILAB code. ---');
+disp('------------------------------------------');
+
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/macros/sci2c_gui.sci b/2.3-1/macros/sci2c_gui.sci
new file mode 100644
index 00000000..bee6fe43
--- /dev/null
+++ b/2.3-1/macros/sci2c_gui.sci
@@ -0,0 +1,516 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Vincent COUVERT
+//
+// 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
+//
+
+function sci2c_gui()
+
+// Sizes
+widgeth = 20;
+widgetLabelWidth = 220;
+btnh = 22;
+btnw = 80;
+defaultfont = "arial";
+margin = 13;
+radiow = 85;
+
+// Figure creation
+sci2cfig = figure("figure_name", gettext("Scilab to C conversion tool"),"tag","sci2cfig");
+
+// Remove Scilab graphics menus & toolbar
+delmenu(sci2cfig.figure_id, gettext("&File"));
+delmenu(sci2cfig.figure_id, gettext("&Tools"));
+delmenu(sci2cfig.figure_id, gettext("&Edit"));
+delmenu(sci2cfig.figure_id, gettext("&?"));
+toolbar(sci2cfig.figure_id, "off");
+
+h = uimenu("parent", sci2cfig, "label", gettext("File"));
+uimenu("parent", h, "label", gettext("Close"), "callback", "cb_sci2c_gui", "tag", "close_menu");
+
+h = uimenu("parent", sci2cfig, "label", gettext("?"));
+uimenu("parent", h, "label", gettext("Sci2c help page"), "callback", "cb_sci2c_gui", "tag", "sci2c_help_menu");
+uimenu("parent", h, "label", gettext("About SCI2C tools..."), "callback", "cb_sci2c_gui", "tag", "about_sci2c_menu");
+
+figw = 800;
+figh = 16*margin + btnh + 10*widgeth;
+sci2cfig.axes_size = [figw figh];
+sci2cfig.auto_resize = "on";
+//sci2cfig.visible = "off"; // to be sure that no plot can appear in the window
+
+//-------------------
+// --- Validation ---
+//-------------------
+
+// Convert button
+convertbtn = uicontrol("parent", sci2cfig,...
+ "backgroundcolor", [0.8 0.8 0.8],...
+ "style", "pushbutton",...
+ "string", gettext("Convert"),...
+ "position", [figw-2*margin-2*btnw margin btnw btnh],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "tag","convertbtn",...
+ "callback","cb_sci2c_gui");
+
+// Cancel button
+cancelbtn = uicontrol("parent", sci2cfig,...
+ "backgroundcolor", [0.8 0.8 0.8],...
+ "style", "pushbutton",...
+ "string", gettext("Cancel"),...
+ "position", [figw-margin-btnw margin btnw btnh],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "tag", "cancelbtn",...
+ "callback","cb_sci2c_gui");
+
+//----------------
+// --- Options ---
+//----------------
+// Frame
+optframe = uicontrol("parent", sci2cfig,...
+ "relief", "groove",...
+ "style", "frame",...
+ "units", "pixels",...
+ "position", [margin 2*margin+btnh figw-2*margin 7*margin+6*widgeth],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "fontweight", "bold", ...
+ "horizontalalignment", "center");
+// Frame title
+opttitle = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Options"),...
+ "units", "pixels",...
+ "position", [2*margin 5*margin+btnh+4*margin+6*widgeth-8 50 18],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 11,...
+ "horizontalalignment", "center");
+
+// --- Building Tool ---
+buildtooly = 2 * margin + 2 * btnh + margin;
+buildtoollabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Tool to compile generated C code: "),...
+ "position",[2*margin buildtooly widgetLabelWidth widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+buildtoolradiowin = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("nmake for Windows with Visual Studio / Visual Express"),...
+ "position",[2*margin+widgetLabelWidth buildtooly 5 * radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "callback", "cb_sci2c_gui",...
+ "tag", "buildtoolradiowin");
+buildtoolradiounix = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("make for Unix / Windows with Cygwin"),...
+ "position",[2*margin+widgetLabelWidth buildtooly-widgeth 5 * radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "callback", "cb_sci2c_gui",...
+ "tag", "buildtoolradiounix");
+if getos() == "Windows"
+ set(buildtoolradiowin, "value", 1);
+ set(buildtoolradiounix, "value", 0);
+else
+ set(buildtoolradiowin, "value", 0);
+ set(buildtoolradiounix, "value", 1);
+end
+
+// --- Copy Scilab code into C option ---
+sciintocy = buildtooly + margin + btnh ;
+sciintoclabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Copy Scilab code into C: "),...
+ "position",[2*margin sciintocy widgetLabelWidth widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+sciintocradioyes = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("Yes"),...
+ "position",[2*margin+widgetLabelWidth sciintocy radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 0,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "sciintocradioyes");
+sciintocradiono = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("No"),...
+ "position",[2*margin+widgetLabelWidth+radiow sciintocy radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 1,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "sciintocradiono");
+
+// --- Board Name ----
+brdnmy = sciintocy + margin + btnh ;
+brdnmlabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Board Name: "),...
+ "position",[2*margin brdnmy widgetLabelWidth widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+
+brdnmType = uicontrol("parent", sci2cfig,...
+ "style", "popupmenu",...
+ "string", ["";"Uno";"Mega-ATmega1280";"Mega-2560 or Mega ADK";"Nano - ATmega168";"Nano - ATmega328";"Micro";"Mini - Atmega168";"Mini - Atmega328";"Pro Mini (3.3V, 8MHz) - ATmega328";"Pro Mini (3.3V, 8MHz) - ATmega168";"Pro Mini (5V, 16MHz) - ATmega328";"Pro Mini (5V, 16MHz) - ATmega168";"NG or older - ATmega168";"NG or older - ATmega8";"Duemilanove - ATmega328";"BT - ATmega328";"BT - ATmega 168";"Diecimila/Duemilanove - ATmega168";"Esplora";"Ethernet";"Fio";"Leonardo";"Robot Control";"Robot Motor";"LilyPad Arduino - ATmega328";"LilyPad Arduino - ATmega168";"LilyPad Arduino USB"],...
+ "position",[2*margin+widgetLabelWidth brdnmy 3*radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "enable", "off",...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],...
+ "callback", "cb_sci2c_gui",...
+ "tag", "brdnmType");
+
+sciintocy = brdnmy
+// --- Output format: Standalone or Arduino
+outformaty = sciintocy + margin + btnh ;
+outformatlabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Type of output format: "),...
+ "position",[2*margin outformaty widgetLabelWidth widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+
+outformatradiostalone = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("Stand-alone"),...
+ "position",[2*margin+widgetLabelWidth outformaty 2*radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 1,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "outformatradiostalone");
+
+outformatradioarduino = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("Arduino"),...
+ "position",[margin+widgetLabelWidth+2*radiow outformaty radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 0,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "outformatradioarduino");
+
+outformatradioavr = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("AVR"),...
+ "position",[margin+widgetLabelWidth+3*radiow outformaty radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 0,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "outformatradioavr");
+
+outformatradiorpi = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("Rpi"),...
+ "position",[margin+widgetLabelWidth+4*radiow outformaty radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 0,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "outformatradiorpi");
+
+
+// --- Run mode option ---
+runy = outformaty + margin + widgeth;
+runlabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Run mode: "),...
+ "position",[2*margin runy widgetLabelWidth widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+runradioall = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("All"),...
+ "position",[2*margin+widgetLabelWidth runy radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 1,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "runradioall");
+runradiotranslate = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("Translate"),...
+ "position",[2*margin+widgetLabelWidth+radiow runy radiow widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 0,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "runradiotranslate");
+runradiogenlib = uicontrol("parent", sci2cfig,...
+ "style", "radiobutton",...
+ "string", gettext("Generate library"),...
+ "position",[2*margin+widgetLabelWidth+2*radiow runy 120 widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "min", 0, ...
+ "max", 1, ...
+ "value", 0,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "runradiogenlib");
+
+// ------------------------
+// --- Output directory ---
+// ------------------------
+// Frame
+optframemaxy = 5*margin+btnh + 4*margin+6*widgeth;
+outframe = uicontrol("parent", sci2cfig,...
+ "relief", "groove",...
+ "style", "frame",...
+ "units", "pixels",...
+ "position", [margin optframemaxy+margin figw-2*margin widgeth+2*margin],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "fontweight", "bold", ...
+ "horizontalalignment", "center");
+// Frame title
+outtitle = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Output directory"),...
+ "units", "pixels",...
+ "position", [2*margin optframemaxy+margin+widgeth+2*margin-8 90 14],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 11,...
+ "horizontalalignment", "center");
+outlabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Directory name: "),...
+ "position",[2*margin optframemaxy+2*margin-1 100 widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+outedit = uicontrol("parent", sci2cfig,...
+ "style", "edit",...
+ "string", TMPDIR,...
+ "units", "pixels",...
+ "position",[3*margin+100 optframemaxy+2*margin-1 figw-6*margin-100-btnw widgeth],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12, ...
+ "tag", "outedit");
+outbtn = uicontrol("parent", sci2cfig,...
+ "backgroundcolor", [0.8 0.8 0.8],...
+ "style", "pushbutton",...
+ "string", gettext("Browse"),...
+ "position",[figw-2*margin-btnw optframemaxy+2*margin btnw btnh],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "outbtn");
+
+// -------------------------------
+// --- SciLib main header file ---
+// -------------------------------
+// Frame
+outframemaxy = optframemaxy + 2*margin + widgeth + margin;
+// headerframe = uicontrol("parent", sci2cfig,...
+// "relief", "groove",...
+// "style", "frame",...
+// "units", "pixels",...
+// "position", [margin outframemaxy+margin figw-2*margin widgeth+2*margin],...
+// "fontname", defaultfont,...
+// "fontunits", "points",...
+// "fontsize", 12,...
+// "fontweight", "bold", ...
+// "horizontalalignment", "center");
+// // Frame title
+// headertitle = uicontrol("parent", sci2cfig,...
+// "style", "text",...
+// "string", gettext("Scilab library header"),...
+// "units", "pixels",...
+// "position", [2*margin outframemaxy+margin+widgeth+2*margin-8 110 14],...
+// "fontname", defaultfont,...
+// "fontunits", "points",...
+// "fontsize", 11,...
+// "horizontalalignment", "center");
+// headerlabel = uicontrol("parent", sci2cfig,...
+// "style", "text",...
+// "string", gettext("File name: "),...
+// "position",[2*margin outframemaxy+2*margin-1 100 widgeth],...
+// "horizontalalignment", "left",...
+// "fontname", defaultfont,...
+// "fontunits", "points",...
+// "fontsize", 12);
+// headeredit = uicontrol("parent", sci2cfig,...
+// "style", "edit",...
+// "string", gettext("<enter a file name>"),...
+// "units", "pixels",...
+// "position",[3*margin+100 outframemaxy+2*margin-1 figw-6*margin-100-btnw widgeth],...
+// "fontname", defaultfont,...
+// "fontunits", "points",...
+// "fontsize", 12, ...
+// "tag", "headeredit");
+// headerbtn = uicontrol("parent", sci2cfig,...
+// "backgroundcolor", [0.8 0.8 0.8],...
+// "style", "pushbutton",...
+// "string", gettext("Browse"),...
+// "position",[figw-2*margin-btnw outframemaxy+2*margin btnw btnh],...
+// "fontname", defaultfont,...
+// "fontunits", "points",...
+// "fontsize", 12,...
+// "callback", "cb_sci2c_gui",...
+// "tag", "headerbtn");
+
+// -------------------------
+// --- File(s) selection ---
+// -------------------------
+// Frame
+headerframemaxy = outframemaxy //+ 2*margin + widgeth + margin;
+selframe = uicontrol("parent", sci2cfig,...
+ "relief", "groove",...
+ "style", "frame",...
+ "units", "pixels",...
+ "position", [margin headerframemaxy+margin figw-2*margin 3*margin+2*widgeth],...
+ "fontname", "arial",...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "fontweight", "bold", ...
+ "horizontalalignment", "center");
+// Frame title
+seltitle = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Input file"),...
+ "units", "pixels",...
+ "position", [2*margin headerframemaxy+margin+3*margin+2*widgeth-8 50 14],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 11,...
+ "horizontalalignment", "center", ...
+ "tag", "seltitle");
+
+// --- Sub-functions selection ---
+subfunslabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Sub-functions: "),...
+ "position",[2*margin headerframemaxy+2*margin-1 100 widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12);
+subfunsedit = uicontrol("parent", sci2cfig,...
+ "style", "edit",...
+ "string", "",...
+ "units", "pixels",...
+ "position",[3*margin+100 headerframemaxy+2*margin-1 figw-6*margin-100-btnw widgeth],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12, ...
+ "tag", "subfunsedit");
+subfunsbtn = uicontrol("parent", sci2cfig,...
+ "backgroundcolor", [0.8 0.8 0.8],...
+ "style", "pushbutton",...
+ "string", gettext("Browse"),...
+ "position",[figw-2*margin-btnw headerframemaxy+2*margin btnw btnh],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "subfunsbtn");
+
+// --- File selection ---
+filelabel = uicontrol("parent", sci2cfig,...
+ "style", "text",...
+ "string", gettext("Main file name: "),...
+ "position",[2*margin headerframemaxy+3*margin-1+widgeth 100 widgeth],...
+ "horizontalalignment", "left",...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "tag", "filelabel");
+
+fileedit = uicontrol("parent", sci2cfig,...
+ "style", "edit",...
+ "string", gettext("<enter a file name>"),...
+ "position",[3*margin+100 headerframemaxy+3*margin-1+widgeth figw-6*margin-100-btnw widgeth],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "tag", "fileedit");
+
+filebtn = uicontrol("parent", sci2cfig,...
+ "backgroundcolor", [0.8 0.8 0.8],...
+ "style", "pushbutton",...
+ "string", gettext("Browse"),...
+ "position",[figw-2*margin-btnw headerframemaxy+3*margin+widgeth btnw btnh],...
+ "fontname", defaultfont,...
+ "fontunits", "points",...
+ "fontsize", 12,...
+ "callback", "cb_sci2c_gui",...
+ "tag", "filebtn");
+
+endfunction
diff --git a/2.3-1/macros/scilab2c.sci b/2.3-1/macros/scilab2c.sci
new file mode 100644
index 00000000..2979b2ae
--- /dev/null
+++ b/2.3-1/macros/scilab2c.sci
@@ -0,0 +1,212 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+function scilab2c(varargin)
+ [lhs, rhs] = argn();
+ select rhs
+//
+// scilab2c()
+//
+ case 0
+ sci2c_gui();
+ return
+//
+// scilab2c(UserScilabMainFile, CCodeOutputDir)
+//
+ case 2
+ for i = 1:2
+ if typeof(varargin(i)) <> "string"
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"scilab2c",i));
+ return
+ end
+ end
+ UserScilabMainFile = varargin(1);
+ CCodeOutputDir = varargin(2);
+ UserSciFilesPaths = [];
+ RunMode = 'All';
+ BuildTool = getNativeBuildTool();
+ Target = "StandAlone"
+ //Board_name = "uno"
+ //
+// scilab2c(UserScilabMainFile, CCodeOutputDir, UserSciFilesPaths)
+//
+ case 3
+ for i = 1:3
+ if typeof(varargin(i)) <> "string"
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"scilab2c",i));
+ return
+ end
+ end
+ UserScilabMainFile = varargin(1);
+ CCodeOutputDir = varargin(2);
+ if varargin(3) == ""
+ UserSciFilesPaths = [];
+ else
+ UserSciFilesPaths = varargin(3);
+ end
+ RunMode = "All";
+ BuildTool = getNativeBuildTool();
+ Target = "StandAlone"
+ //Board_name = "uno"
+ //
+// scilab2c(UserScilabMainFile, CCodeOutputDir, UserSciFilesPaths, RunMode)
+//
+ case 4
+ for i = 1:4
+ if typeof(varargin(i)) <> "string"
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"scilab2c",i));
+ return
+ end
+ end
+ if varargin(4) <> "All" & varargin(4) <> "Translate" & varargin(4) <> "GenLibraryStructure"
+ error(msprintf(gettext("%s: argument #%d must be: ""All"", ""Translate"",""GenLibraryStructure"".\n"),"scilab2c",4));
+ return
+ end
+ UserScilabMainFile = varargin(1);
+ CCodeOutputDir = varargin(2);
+ if varargin(3) == ""
+ UserSciFilesPaths = [];
+ else
+ UserSciFilesPaths = varargin(3);
+ end
+ RunMode = varargin(4);
+ BuildTool = getNativeBuildTool();
+ Target = "StandAlone"
+ //Board_name = "uno"
+ case 5
+ for i = 1:4
+ if typeof(varargin(i)) <> "string"
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"scilab2c",i));
+ return
+ end
+ end
+ if varargin(4) <> "All" & varargin(4) <> "Translate" & varargin(4) <> "GenLibraryStructure" & varargin(4) <> "FunCall"
+ error(msprintf(gettext("%s: argument #%d must be: ""All"", ""Translate"",""GenLibraryStructure"" or ""FunCall"".\n"),"scilab2c",4));
+ return
+ end
+ if varargin(5) <> "make" & varargin(5) <> "nmake"
+ error(msprintf(gettext("%s: argument #%d must be: ""make"" or ""nmake"".\n"),"scilab2c",5));
+ return
+ end
+ UserScilabMainFile = varargin(1);
+ CCodeOutputDir = varargin(2);
+ if varargin(3) == ""
+ UserSciFilesPaths = [];
+ else
+ UserSciFilesPaths = varargin(3);
+ end
+ RunMode = varargin(4);
+ BuildTool = varargin(5);
+ Target = "StandAlone"
+ //Board_name = "uno"
+ case 6
+ for i = 1:4
+ if typeof(varargin(i)) <> "string"
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"scilab2c",i));
+ return
+ end
+ end
+ if varargin(4) <> "All" & varargin(4) <> "Translate" & varargin(4) <> "GenLibraryStructure" & varargin(4) <> "FunCall"
+ error(msprintf(gettext("%s: argument #%d must be: ""All"", ""Translate"" ,""GenLibraryStructure"" or ""FunCall"".\n"),"scilab2c",4));
+ return
+ end
+ if varargin(5) <> "make" & varargin(5) <> "nmake"
+ error(msprintf(gettext("%s: argument #%d must be: ""make"" or ""nmake"".\n"),"scilab2c",5));
+ return
+ end
+ if varargin(6) <> "StandAlone" & varargin(6) <> "Arduino" & varargin(6) <> "AVR" & varargin(6) <> "RPi"
+ error(msprintf(gettext("%s: argument #%d must be: ""StandAlone"" or ""Arduino"" or ""AVR"" or ""RPi"".\n"),"scilab2c",5));
+ return
+ end
+ UserScilabMainFile = varargin(1);
+ CCodeOutputDir = varargin(2);
+ if varargin(3) == ""
+ UserSciFilesPaths = [];
+ else
+ UserSciFilesPaths = varargin(3);
+ end
+ RunMode = varargin(4);
+ BuildTool = varargin(5);
+ Target = varargin(6);
+ //Board_name = "uno";
+ case 7
+ for i = 1:4
+ if typeof(varargin(i)) <> "string"
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"scilab2c",i));
+ return
+ end
+ end
+ if varargin(4) <> "All" & varargin(4) <> "Translate" & varargin(4) <> "GenLibraryStructure" & varargin(4) <> "FunCall"
+ error(msprintf(gettext("%s: argument #%d must be: ""All"", ""Translate"" ,""GenLibraryStructure"" or ""FunCall"".\n"),"scilab2c",4));
+ return
+ end
+ if varargin(5) <> "make" & varargin(5) <> "nmake"
+ error(msprintf(gettext("%s: argument #%d must be: ""make"" or ""nmake"".\n"),"scilab2c",5));
+ return
+ end
+ if varargin(6) <> "StandAlone" & varargin(6) <> "Arduino" & varargin(6) <> "AVR" & varargin(6) <> "RPi"
+ error(msprintf(gettext("%s: argument #%d must be: ""StandAlone"" or ""Arduino"" or ""AVR"" or ""RPi"".\n"),"scilab2c",5));
+ return
+ end
+ //if varargin(7) <> "uno" & varargin(7) <> "mega" & varargin(7) <> "mega2560" & varargin(7) <> "micro" & varargin(7) <> "nano" & varargin(7) <> "mini"
+ // error(msprintf(gettext("%s: argument #%d must be: ""uno"" or ""mega"" or ""micro"" or ""nano"" or ""mini"".\n"),"scilab2c",7));
+ //return
+ //end
+ UserScilabMainFile = varargin(1);
+ CCodeOutputDir = varargin(2);
+ if varargin(3) == ""
+ UserSciFilesPaths = [];
+ else
+ UserSciFilesPaths = varargin(3);
+ end
+ RunMode = varargin(4);
+ BuildTool = varargin(5);
+ Target = varargin(6);
+ Board_name = varargin(7);
+ else
+//
+// Calling scilab2c with more than understood values
+//
+error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"scilab2c",2));
+ end
+
+
+// --- LAUNCH USER SCI CODE TO TEST IT BEFORE TRANSLATING IT!!! ---
+// If Target choosen is 'Standalone' then only execute the code, otherwise directly start conversion.
+ if (Target == "StandAlone" |Target == "AVR")
+ runscicode(UserScilabMainFile, UserSciFilesPaths);
+
+ // --- ASK USER FOR CONTINUATION. ---
+
+ // Do not open confirmation box if we are not in STD mode.
+ if(getscilabmode() == "STD")
+ userchoice = messagebox("Exection Succesfull. Start translation ?", "modal", "info", ["Yes" "No"])
+ else
+ userchoice = 1
+ end
+ else
+ userchoice = 1;
+ end
+ if (userchoice == 1)
+// --- LAUNCH SCI2C ---
+ runsci2c(UserScilabMainFile, UserSciFilesPaths, CCodeOutputDir, RunMode, BuildTool,Target,Board_name);
+ end
+
+endfunction
+
+function BuildTool = getNativeBuildTool()
+ if getos() == "Windows"
+ BuildTool = "nmake"
+ else
+ BuildTool = "make"
+ end
+endfunction
diff --git a/2.3-1/readme.txt b/2.3-1/readme.txt
new file mode 100644
index 00000000..171987b6
--- /dev/null
+++ b/2.3-1/readme.txt
@@ -0,0 +1,151 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+Feel free to add everything you find useful for hArtes and the scilab2c tool.
+
+/*
+** Type definition
+*/
+We define types that way (but it can evolve in the future) :
+I - Scalar
+-----------
+
+ I.1 - Real
+ I.1.1 - Simple precision (float)
+ I.1.2 - Double precision (double)
+
+ I.2 - Complex
+ I.2.1 - Simple precision (float)
+ I.2.2 - Double precision (double)
+
+ I.3 - Integer (NOT IMPLEMENTED YET)
+
+ I.4 - Boolean (NOT IMPLEMENTED YET)
+
+II - Matrix
+------------
+
+!! WARNING !!
+Matrix are stored column ways.
+Ex :
+double M[4] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}
+- If M has 2 lines and 3 columns :
+M = [ 1.0 3.0 5.0 ]
+ [ 2.0 4.0 6.0 ]
+- If M has 3 lines and 2 columns :
+M = [ 1.0 4.0 ]
+ [ 2.0 5.0 ]
+ [ 3.0 6.0 ]
+
+ I.1 - Real
+ I.1.1 - Simple precision (float)
+ I.1.2 - Double precision (double)
+
+ I.2 - Complex
+ I.2.1 - Simple precision (float)
+ I.2.2 - Double precision (double)
+
+ I.3 - Integer (NOT IMPLEMENTED YET)
+
+ I.4 - Boolean (NOT IMPLEMENTED YET)
+
+
+/*
+** Functions Naming style
+*/
+We define this coding style for functions names :
+<precision><function_name><variable_type>.
+
+variable_type :
+- 's' : Scalar
+- 'a' : Matrix
+
+precision :
+- 's' : Real simple precision (float)
+- 'd' : Real double precision (double)
+- 'c' : Complex simple precision (float)
+- 'z' : Complex double precision (double)
+
+/*
+** Transtyping functions
+** FIXME : Add it into the users limitations.
+*/
+
+- acos(x) : Real input.
+ Return a Real value if x E [ -1 ; 1 ].
+ Return a Complex value if x E ] -inf ; -1 [ U ] 1 ; +inf [.
+
+- acosh(x) : Real input.
+ Return a Real value if x E ] 1 ; +inf [.
+ Return a Complex value if x E ] -inf ; 1 ].
+
+- asin(x) : Real input.
+ Return a Real value if x E [ -1 ; 1 ].
+ Return a Complex value if x E ] -inf ; -1 [ U ] 1 ; +inf [.
+
+- atanh(x) : Real input.
+ Return a Real value if x E ] -1 ; 1[.
+ Return a Complex value if x E ] -inf ; -1 [ U ] 1 ; +inf [.
+
+- log(x) : Real input.
+ Return a Real value if x E ] 0 ; +inf [
+ Return a Complex value if x E ] -inf ; 0 [
+
+- log10(x) : Real input.
+ Return a Real value if x E ] 0 ; +inf [
+ Return a Complex value if x E ] -inf ; 0 [
+
+- spec(A) : Real input.
+ Return a Real value if A symmetric and for some other cases (to complete)
+ Return a Complex value otherelse
+
+- spec2(A) : Real input.
+ Return Reals value if A symmetric and for some other cases (to complete)
+ Return Complexes value otherelse
+
+- logm(A) : Real input.
+ Return either a Real value or a Complex value : don't know the conditions to have one
+
+- powm(A) : Real input.
+ Return either a Real value or a Complex value : don't know the conditions to have one
+
+- chol(A) : Complex input
+ The diagonal must be real;
+
+-max(a,b) : Real input only
+
+-min(a,b) : Real input only
+
+Following fuctions must have their 2 input matrix with the same dimension(row1=row2 and column1=column2)
+-operation element by element : add, diff, rdiv, ldiv, mul
+-comparaison operators : LogEq, LogNe, LogGt, LogGe, LogLt, LogLe
+-pow
+
+
+
+Following fuctions must have a square matrix on input
+-logm
+-powm
+-determ
+-chol
+-trace
+-lpc2cep (because using logm)
+-spec
+-spec2
+-inv
+
+
+-Careful about the functions ceil, floor, fix/int, round with float precision. Exemple :
+floor(1,999999)=2 instead of 1 in Scilab
+floor(1.99999)=1 egal to Scilab result
+
+
diff --git a/2.3-1/readme_visual.txt b/2.3-1/readme_visual.txt
new file mode 100644
index 00000000..096e8ab4
--- /dev/null
+++ b/2.3-1/readme_visual.txt
@@ -0,0 +1,18 @@
+
+If you use Visual Studio Express 2010:
+
+You need to copy in bin
+f2c.exe
+libf2c.dll
+libf2c.lib
+
+And click on scilab2c_f2c.sln
+
+
+If you use Visual Studio 2010 Pro or more and Intel Fortran 2011 XE :
+
+click on scilab2c.sln
+
+
+
+Allan CORNET - DIGITEO - 2009-2011
diff --git a/2.3-1/scilab2c.sln b/2.3-1/scilab2c.sln
new file mode 100644
index 00000000..059742a8
--- /dev/null
+++ b/2.3-1/scilab2c.sln
@@ -0,0 +1,1271 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auxiliaryFunctions", "auxiliaryFunctions", "{46F3D788-C329-4384-A4E7-47D971FAAEE9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elementaryFunctions", "elementaryFunctions", "{35BA54D4-CF76-478A-A85C-DD4B3941CA09}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "matrixOperations", "matrixOperations", "{BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "implicitList", "implicitList", "{E54C14CE-33AF-4AA4-9864-2EAFC73DD813}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "operations", "operations", "{370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "signalProcessing", "signalProcessing", "{0A43F290-F34B-4448-9A70-8EDAFC29893F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "statisticsFunctions", "statisticsFunctions", "{AF72E544-553A-4D1D-831B-8D7987BDF82C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "string", "string", "{E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "type", "type", "{53D4C03D-7FBF-46C8-A07A-C44644420132}"
+EndProject
+Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "blasplus_DLL", "src\fortran\blas\blas_f\blasplus_DLL.vfproj", "{78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}"
+EndProject
+Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "lapack_DLL", "src\fortran\lapack\lapack_f\lapack_DLL.vfproj", "{69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}"
+ ProjectSection(ProjectDependencies) = postProject
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "type", "src\c\type\type.vcxproj", "{9B1BD750-1FEF-4D6B-9422-782D16181CEE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleComplex", "src\c\type\test_doubleComplex\test_doubleComplex.vcxproj", "{DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatComplex", "src\c\type\test_floatComplex\test_floatComplex.vcxproj", "{A6EBF2F9-C100-453F-A0D1-1649DCF557EC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "elementaryFunctions", "src\c\elementaryFunctions\elementaryFunctions.vcxproj", "{72B46833-B150-432D-B231-3E0ECD91E190}"
+ ProjectSection(ProjectDependencies) = postProject
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923} = {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testCplxAcos", "src\c\elementaryFunctions\acos\test_cplxacos\test_cplxacos.vcxproj", "{20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrealsacos", "src\c\elementaryFunctions\acos\test_realsacos\testrealsacos.vcxproj", "{0556427D-6D88-4A12-9EB3-7F551D6F1FA4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAcosh", "src\c\elementaryFunctions\acosh\test_doubleacosh\test_doubleacosh.vcxproj", "{5805527C-6A77-40A9-8EF6-414B0269B50E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "auxiliaryFunctions", "src\c\auxiliaryFunctions\auxiliaryFunctions.vcxproj", "{AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {9B622A66-546A-4B33-B947-0A189D259D37} = {9B622A66-546A-4B33-B947-0A189D259D37}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "matrixOperations", "src\c\matrixOperations\matrixOperations.vcxproj", "{FD335544-52BF-4736-A34E-77F591D158D5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923} = {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}
+ {9B622A66-546A-4B33-B947-0A189D259D37} = {9B622A66-546A-4B33-B947-0A189D259D37}
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "operations", "src\c\operations\operations.vcxproj", "{9B622A66-546A-4B33-B947-0A189D259D37}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "implicitList", "src\c\implicitList\implicitList.vcxproj", "{4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signalProcessing", "src\c\signalProcessing\signalProcessing.vcxproj", "{F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}"
+ ProjectSection(ProjectDependencies) = postProject
+ {FD335544-52BF-4736-A34E-77F591D158D5} = {FD335544-52BF-4736-A34E-77F591D158D5}
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "statisticsFunctions", "src\c\statisticsFunctions\statisticsFunctions.vcxproj", "{E11ED064-3BF2-4F70-B66E-3223C737EC60}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string", "src\c\string\string.vcxproj", "{38A141F2-DF77-4032-A17C-0901EA1A7AF1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAbs", "src\c\auxiliaryFunctions\abs\test_FloatAbs\testFloatAbs.vcxproj", "{4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAbs", "src\c\auxiliaryFunctions\abs\test_DoubleAbs\testDoubleAbs.vcxproj", "{5A8D4B59-AC5D-4BA0-A26F-17E740F35042}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testConj", "src\c\auxiliaryFunctions\conj\test_Conj\testConj.vcxproj", "{CD5DB834-234F-40A3-B551-DC895885E7B1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind", "src\c\auxiliaryFunctions\find\test_Find\testFind.vcxproj", "{D5110077-CA24-494B-87D0-451BD124CF70}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind2d", "src\c\auxiliaryFunctions\find2d\test_Find2d\testFind2d.vcxproj", "{7361B40C-BCF5-442B-9116-7DB5AD7456B0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFrexp", "src\c\auxiliaryFunctions\frexp\test_frexp\frexp.vcxproj", "{FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsEmpty", "src\c\auxiliaryFunctions\isempty\test_IsEmpty\testIsEmpty.vcxproj", "{CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsNan", "src\c\auxiliaryFunctions\isnan\test_IsNan\testIsNan.vcxproj", "{18763BD3-2916-4D97-9633-5DAC1A635EDD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLength", "src\c\auxiliaryFunctions\length\test_Length\testLength.vcxproj", "{A4626E50-DDD7-44E1-83FC-05BF396AF250}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testPythag", "src\c\auxiliaryFunctions\pythag\test_Pythag\testPythag.vcxproj", "{10F6C306-FD81-45F3-936B-CDF8213A88E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRand", "src\c\auxiliaryFunctions\rand\test_Rand\testRand.vcxproj", "{31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSign", "src\c\auxiliaryFunctions\sign\test_Sign\testSign.vcxproj", "{EEBFAC09-8BD7-4254-9316-57C1907D827E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSize", "src\c\auxiliaryFunctions\size\test_Size\testSize.vcxproj", "{5D4B1991-549D-48ED-A5F6-CB17F15B72C8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testType", "src\c\auxiliaryFunctions\type\test_Type\testType.vcxproj", "{8EB05C91-9405-4AF4-88B4-A6B227409BFB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDisp", "src\c\string\disp\test_Disp\testDisp.vcxproj", "{432917E4-F042-47B2-BF43-0C376883A7E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testString", "src\c\string\string\test_String\testString.vcxproj", "{DF010F03-718D-4CEF-BD03-5E2C9C47613D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAcosh", "src\c\elementaryFunctions\acosh\test_FloatAcosh\testFloatAcosh.vcxproj", "{24015124-A47C-406F-850B-09E95DBBF573}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatImplicitList", "src\c\implicitList\test_FloatImplicitList\testFloatImplicitList.vcxproj", "{93CF027E-C286-4F61-A9D6-DE3C899C5E77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleImplicitList", "src\c\implicitList\test_DoubleImplicitList\testDoubleImplicitList.vcxproj", "{15D96388-C17C-4085-991F-9003E0CE9C6A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMultiplication", "src\c\operations\multiplication\test_Multiplication\testMultiplication.vcxproj", "{769E26C1-E337-4878-B604-8BE33323F5FF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSubtraction", "src\c\operations\subtraction\test_Subtraction\testSubtraction.vcxproj", "{F0DA7501-84CB-4641-9DDA-DA084736B7D4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testAddition", "src\c\operations\addition\test_Addition\testAddition.vcxproj", "{59F5B75C-7FCC-4B07-A5D0-C39D5757204B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLDivision", "src\c\operations\division\test_LDivision\testLDivision.vcxproj", "{7A424759-5962-4AE5-ABB6-0B94DDD21F61}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRDivision", "src\c\operations\division\test_RDivision\testRDivision.vcxproj", "{BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixConcatenation", "src\c\matrixOperations\cat\test_DoubleMatrixConcatenation\testDoubleMatrixConcatenation.vcxproj", "{7F36A592-B667-43A4-B3C3-66636F2DECB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixConcatenation", "src\c\matrixOperations\cat\test_FloatMatrixConcatenation\testFloatMatrixConcatenation.vcxproj", "{B9413124-1841-4373-BFE2-AE6C78F24731}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatChol", "src\c\matrixOperations\chol\test_FloatChol\testFloatChol.vcxproj", "{C5BA0B86-B432-4EF6-95DE-75C026994F4F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleChol", "src\c\matrixOperations\chol\test_DoubleChol\testDoubleChol.vcxproj", "{2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDeterm", "src\c\matrixOperations\determ\test_FloatDeterm\testFloatDeterm.vcxproj", "{204A5126-03B1-4E9D-8CC1-CCA9F64BD081}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDeterm", "src\c\matrixOperations\determ\test_DoubleDeterm\testDoubleDeterm.vcxproj", "{7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDist", "src\c\matrixOperations\dist\test_FloatDist\testFloatDist.vcxproj", "{3902CF74-70D4-4FA4-AA53-71643B94BAB9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDist", "src\c\matrixOperations\determ\test_DoubleDist\testDoubleDist.vcxproj", "{3F1C1C41-424E-4E23-8990-AEB55196376D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixRDivision", "src\c\matrixOperations\division\test_MatrixRDivision\testMatrixRDivision.vcxproj", "{33833932-6973-483B-B0D1-B3CC800BDFF5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixLDivision", "src\c\matrixOperations\division\test_MatrixLDivision\testMatrixLDivision.vcxproj", "{B1F2A8CE-764A-4D51-AABD-998D48783894}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixExponential", "src\c\matrixOperations\expm\test_MatrixExponential\testMatrixExponential.vcxproj", "{1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixEye", "src\c\matrixOperations\eye\test_MatrixEye\testMatrixEye.vcxproj", "{4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFill", "src\c\matrixOperations\fill\test_FloatFill\testFloatFill.vcxproj", "{054C79A1-A607-496B-96CE-6F0BB404F754}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFill", "src\c\matrixOperations\fill\test_DoubleFill\testDoubleFill.vcxproj", "{903B0194-F1A9-4302-AC3D-7E88E0406E26}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInfiniteNorm", "src\c\matrixOperations\infiniteNorm\test_MatrixInfiniteNorm\testMatrixInfiniteNorm.vcxproj", "{43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInversion", "src\c\matrixOperations\inversion\test_MatrixInversion\testMatrixInversion.vcxproj", "{44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testJmat", "src\c\matrixOperations\jmat\test_Jmat\testJmat.vcxproj", "{04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLogm", "src\c\matrixOperations\logm\test_FloatLogm\testFloatLogm.vcxproj", "{BAFD5FA4-3D99-48FF-BBFD-5017207870E7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLogm", "src\c\matrixOperations\logm\test_DoubleLogm\testDoubleLogm.vcxproj", "{DF3336E6-F783-4577-B014-75D0E0377B3E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMagnitude", "src\c\matrixOperations\magnitude\test_FloatMagnitude\testFloatMagnitude.vcxproj", "{1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMagnitude", "src\c\matrixOperations\magnitude\test_DoubleMagnitude\testDoubleMagnitude.vcxproj", "{818553D4-0DEF-4BBE-A43A-45611DD84580}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixMultiplication", "src\c\matrixOperations\multiplication\test_FloatMatrixMultiplication\testFloatMatrixMultiplication.vcxproj", "{4CE33021-55F3-46CC-A548-A151D07B24CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixMultiplication", "src\c\matrixOperations\multiplication\test_DoubleMatrixMultiplication\testDoubleMatrixMultiplication.vcxproj", "{C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixOnes", "src\c\matrixOperations\ones\test_MatrixOnes\testMatrixOnes.vcxproj", "{D21BD764-EEC6-4474-9D4B-808EF2217CC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoublePowm", "src\c\matrixOperations\powm\test_DoublePowm\testDoublePowm.vcxproj", "{D83A0994-57A0-4C17-89DF-EDE84450C202}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatPowm", "src\c\matrixOperations\powm\test_FloatPowm\testFloatPowm.vcxproj", "{8594ACB2-D3C8-4D3A-B905-794354A8A0CC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec", "src\c\matrixOperations\spec\test_FloatSpec\testFloatSpec.vcxproj", "{B7BEF8A2-3E42-4FA3-94A7-22618594057D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec", "src\c\matrixOperations\spec\test_DoubleSpec\testDoubleSpec.vcxproj", "{651B0E61-1047-4575-BE31-D9CB28062CBA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec2", "src\c\matrixOperations\spec2\test_FloatSpec2\testFloatSpec2.vcxproj", "{E20D0BC2-B28A-412C-9715-5B93B319A4A3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec2", "src\c\matrixOperations\spec2\test_DoubleSpec2\testDoubleSpec2.vcxproj", "{FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_FloatSquaredMagnitude\testFloatSquaredMagnitude.vcxproj", "{6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_DoubleSquaredMagnitude\testDoubleSquaredMagnitude.vcxproj", "{16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTrace", "src\c\matrixOperations\trace\test_MatrixTrace\testMatrixTrace.vcxproj", "{21E5E59A-7E4E-4F65-9042-9C67C713D51C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTranspose", "src\c\matrixOperations\transpose\test_MatrixTranspose\testMatrixTranspose.vcxproj", "{8D483B26-A264-4BA6-BB6A-36306BCFA8E3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixZeros", "src\c\matrixOperations\zeros\test_MatrixZeros\testMatrixZeros.vcxproj", "{D55BC043-1853-4E4C-A8A8-2756682E4B23}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RUN_TESTS", "RUN_TESTS\RUN_TESTS.vcxproj", "{39BC0138-6B50-492C-8570-06458772282B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMax", "src\c\statisticsFunctions\max\test_DoubleMax\testDoubleMax.vcxproj", "{020991C0-9640-4097-B697-D514F08AA74C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMax", "src\c\statisticsFunctions\max\test_FloatMax\testFloatMax.vcxproj", "{0E4EC2A2-BADC-48C8-AF56-D1437094887A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMean", "src\c\statisticsFunctions\mean\test_FloatMean\testFloatMean.vcxproj", "{ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMean", "src\c\statisticsFunctions\mean\test_DoubleMean\testDoubleMean.vcxproj", "{3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMin", "src\c\statisticsFunctions\min\test_DoubleMin\testDoubleMin.vcxproj", "{9678E693-3459-4D6F-9017-EA3E28A58AC7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMin", "src\c\statisticsFunctions\min\test_FloatMin\testFloatMin.vcxproj", "{0A156C36-89D5-485E-BB8E-C7536A1DA566}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatProd", "src\c\statisticsFunctions\prod\test_FloatProd\testFloatProd.vcxproj", "{B80645FE-03D0-4BC8-8DAE-032A58CF4E57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleProd", "src\c\statisticsFunctions\prod\test_DoubleProd\testDoubleProd.vcxproj", "{322F871E-3349-4993-BC87-CAFAA6B6F72C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSum", "src\c\statisticsFunctions\sum\test_FloatSum\testFloatSum.vcxproj", "{450C8334-BA46-43DB-81BA-7BEDBB346126}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSum", "src\c\statisticsFunctions\sum\test_DoubleSum\testDoubleSum.vcxproj", "{F2A81CDC-2581-481F-B63D-3D2079B264C2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVarianceNono", "src\c\statisticsFunctions\variance\test_FloatVarianceNono\testFloatVarianceNono.vcxproj", "{DEF1A42F-599B-4B1D-AB11-202E86670021}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVariance", "src\c\statisticsFunctions\variance\test_FloatVariance\testFloatVariance.vcxproj", "{53F78E7F-3024-4999-BE70-F4A242357809}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVarianceNono", "src\c\statisticsFunctions\variance\test_DoubleVarianceNono\testDoubleVarianceNono.vcxproj", "{CCD3F89C-A278-457D-BFD6-ADEEF4860E07}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVariance", "src\c\statisticsFunctions\variance\test_DoubleVariance\testDoubleVariance.vcxproj", "{774783E0-2443-42DB-AA48-04730E59B396}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv", "src\c\signalProcessing\conv\test_FloatConv\testFloatConv.vcxproj", "{5A0D9A72-FA85-41F8-A605-A2B31961B01C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv", "src\c\signalProcessing\conv\test_DoubleConv\testDoubleConv.vcxproj", "{0ED6E2D7-B50D-4A17-A34B-440A7307E747}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv2d", "src\c\signalProcessing\conv2d\test_DoubleConv2d\testDoubleConv2d.vcxproj", "{C46C7CDE-9D38-42E5-9DBA-3E7306033450}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv2d", "src\c\signalProcessing\conv2d\test_FloatConv2d\testFloatConv2d.vcxproj", "{26170083-8042-4E04-BFE3-B553A5A8D481}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatCrossCorr", "src\c\signalProcessing\crossCorr\test_FloatCrossCorr\testFloatCrossCorr.vcxproj", "{0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleCrossCorr", "src\c\signalProcessing\crossCorr\test_DoubleCrossCorr\testDoubleCrossCorr.vcxproj", "{9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatFft", "src\c\signalProcessing\fft\test_MatFft\testMatFft.vcxproj", "{A7A46527-B5F9-4B92-9C46-2416E2432314}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFft", "src\c\signalProcessing\fft\test_FloatFft\testFloatFft.vcxproj", "{EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFft", "src\c\signalProcessing\fft\test_DoubleFft\testDoubleFft.vcxproj", "{DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFftShift", "src\c\signalProcessing\fftshift\test_DoubleFftShift\testDoubleFftShift.vcxproj", "{1EA7E165-A87C-49EA-90CB-2AECD5FED605}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFftShift", "src\c\signalProcessing\fftshift\test_FloatFftShift\testFloatFftShift.vcxproj", "{CF3E80F1-A0B6-465B-9285-11753E84B7F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\signalProcessing\hilbert\test_Hilbert\testHilbert.vcxproj", "{AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatIfft", "src\c\signalProcessing\ifft\test_MatIfft\testMatIfft.vcxproj", "{2F903F45-A053-47F8-BEA7-2490DEA6C9C5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatIfft", "src\c\signalProcessing\ifft\test_FloatIfft\testFloatIfft.vcxproj", "{3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleIfft", "src\c\signalProcessing\ifft\test_DoubleIfft\testDoubleIfft.vcxproj", "{633B36B2-AF28-4EF8-A236-021AA1ECF18A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLev", "src\c\signalProcessing\lev\test_FloatLev\testFloatLev.vcxproj", "{81145727-FB2B-4CD6-B5AC-3F2146F93D5F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLev", "src\c\signalProcessing\lev\test_DoubleLev\testDoubleLev.vcxproj", "{BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLevin", "src\c\signalProcessing\levin\test_FloatLevin\testFloatLevin.vcxproj", "{FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLevin", "src\c\signalProcessing\levin\test_DoubleLevin\testDoubleLevin.vcxproj", "{CAA51066-E3AC-4FE7-A330-D946A7AD6026}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLpc2cep", "src\c\signalProcessing\lpc2cep\test_DoubleLpc2cep\testDoubleLpc2cep.vcxproj", "{EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLpc2cep", "src\c\signalProcessing\lpc2cep\test_FloatLpc2cep\testFloatLpc2cep.vcxproj", "{F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\matrixOperations\hilb\test_Hilbert\testHilbert.vcxproj", "{F7747E9B-A57F-43D2-8C1F-1F77C670B406}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.Build.0 = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.ActiveCfg = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.Build.0 = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.ActiveCfg = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.Build.0 = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.ActiveCfg = Release|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.Build.0 = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.ActiveCfg = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.Build.0 = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.ActiveCfg = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.Build.0 = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.ActiveCfg = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.Build.0 = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.ActiveCfg = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.Build.0 = Release|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.Build.0 = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|x64.ActiveCfg = Debug|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|x64.Build.0 = Debug|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.ActiveCfg = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.Build.0 = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|x64.ActiveCfg = Release|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|x64.Build.0 = Release|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.Build.0 = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|x64.ActiveCfg = Debug|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|x64.Build.0 = Debug|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.ActiveCfg = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.Build.0 = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|x64.ActiveCfg = Release|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|x64.Build.0 = Release|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.Build.0 = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|x64.ActiveCfg = Debug|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|x64.Build.0 = Debug|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.ActiveCfg = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.Build.0 = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|x64.ActiveCfg = Release|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|x64.Build.0 = Release|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.ActiveCfg = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.Build.0 = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|x64.ActiveCfg = Debug|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|x64.Build.0 = Debug|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.ActiveCfg = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.Build.0 = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|x64.ActiveCfg = Release|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|x64.Build.0 = Release|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.Build.0 = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|x64.ActiveCfg = Debug|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|x64.Build.0 = Debug|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.ActiveCfg = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.Build.0 = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|x64.ActiveCfg = Release|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|x64.Build.0 = Release|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.Build.0 = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|x64.ActiveCfg = Debug|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|x64.Build.0 = Debug|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.ActiveCfg = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.Build.0 = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|x64.ActiveCfg = Release|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|x64.Build.0 = Release|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.Build.0 = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|x64.ActiveCfg = Debug|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|x64.Build.0 = Debug|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.ActiveCfg = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.Build.0 = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|x64.ActiveCfg = Release|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|x64.Build.0 = Release|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.Build.0 = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|x64.ActiveCfg = Debug|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|x64.Build.0 = Debug|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.ActiveCfg = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.Build.0 = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|x64.ActiveCfg = Release|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|x64.Build.0 = Release|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.Build.0 = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|x64.ActiveCfg = Debug|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|x64.Build.0 = Debug|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.ActiveCfg = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.Build.0 = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|x64.ActiveCfg = Release|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|x64.Build.0 = Release|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.Build.0 = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|x64.ActiveCfg = Debug|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|x64.Build.0 = Debug|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.ActiveCfg = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.Build.0 = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|x64.ActiveCfg = Release|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|x64.Build.0 = Release|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.Build.0 = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|x64.ActiveCfg = Debug|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|x64.Build.0 = Debug|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.ActiveCfg = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.Build.0 = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|x64.ActiveCfg = Release|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|x64.Build.0 = Release|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|x64.ActiveCfg = Debug|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|x64.Build.0 = Debug|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.Build.0 = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|x64.ActiveCfg = Release|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|x64.Build.0 = Release|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.Build.0 = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|x64.ActiveCfg = Debug|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|x64.Build.0 = Debug|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.ActiveCfg = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.Build.0 = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|x64.ActiveCfg = Release|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|x64.Build.0 = Release|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.Build.0 = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|x64.ActiveCfg = Debug|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|x64.Build.0 = Debug|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.ActiveCfg = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.Build.0 = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|x64.ActiveCfg = Release|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|x64.Build.0 = Release|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.Build.0 = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|x64.ActiveCfg = Debug|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|x64.Build.0 = Debug|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.ActiveCfg = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.Build.0 = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|x64.ActiveCfg = Release|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|x64.Build.0 = Release|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.Build.0 = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|x64.ActiveCfg = Debug|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|x64.Build.0 = Debug|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.ActiveCfg = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.Build.0 = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|x64.ActiveCfg = Release|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|x64.Build.0 = Release|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.Build.0 = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|x64.ActiveCfg = Debug|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|x64.Build.0 = Debug|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.ActiveCfg = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.Build.0 = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|x64.ActiveCfg = Release|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|x64.Build.0 = Release|x64
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|x64.ActiveCfg = Debug|x64
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|Win32.ActiveCfg = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|x64.ActiveCfg = Release|x64
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|x64.ActiveCfg = Debug|x64
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|Win32.ActiveCfg = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|x64.ActiveCfg = Release|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.Build.0 = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|x64.ActiveCfg = Debug|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|x64.Build.0 = Debug|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.ActiveCfg = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.Build.0 = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|x64.ActiveCfg = Release|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|x64.Build.0 = Release|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.Build.0 = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|x64.ActiveCfg = Debug|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|x64.Build.0 = Debug|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.ActiveCfg = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.Build.0 = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|x64.ActiveCfg = Release|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|x64.Build.0 = Release|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.Build.0 = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|x64.ActiveCfg = Debug|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|x64.Build.0 = Debug|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.ActiveCfg = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.Build.0 = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|x64.ActiveCfg = Release|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|x64.Build.0 = Release|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.Build.0 = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|x64.ActiveCfg = Debug|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|x64.Build.0 = Debug|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.ActiveCfg = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.Build.0 = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|x64.ActiveCfg = Release|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|x64.Build.0 = Release|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.Build.0 = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|x64.ActiveCfg = Debug|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|x64.Build.0 = Debug|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.ActiveCfg = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.Build.0 = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|x64.ActiveCfg = Release|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|x64.Build.0 = Release|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.Build.0 = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|x64.ActiveCfg = Debug|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|x64.Build.0 = Debug|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.ActiveCfg = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.Build.0 = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|x64.ActiveCfg = Release|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|x64.Build.0 = Release|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.Build.0 = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|x64.ActiveCfg = Debug|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|x64.Build.0 = Debug|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.ActiveCfg = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.Build.0 = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|x64.ActiveCfg = Release|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|x64.Build.0 = Release|x64
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|x64.ActiveCfg = Debug|x64
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|Win32.ActiveCfg = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|x64.ActiveCfg = Release|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.Build.0 = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|x64.ActiveCfg = Debug|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|x64.Build.0 = Debug|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.ActiveCfg = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.Build.0 = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|x64.ActiveCfg = Release|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|x64.Build.0 = Release|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.Build.0 = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|x64.ActiveCfg = Debug|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|x64.Build.0 = Debug|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.ActiveCfg = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.Build.0 = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|x64.ActiveCfg = Release|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|x64.Build.0 = Release|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.Build.0 = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|x64.ActiveCfg = Debug|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|x64.Build.0 = Debug|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.ActiveCfg = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.Build.0 = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|x64.ActiveCfg = Release|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|x64.Build.0 = Release|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.ActiveCfg = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.Build.0 = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|x64.ActiveCfg = Debug|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|x64.Build.0 = Debug|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.ActiveCfg = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.Build.0 = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|x64.ActiveCfg = Release|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|x64.Build.0 = Release|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.Build.0 = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|x64.ActiveCfg = Debug|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|x64.Build.0 = Debug|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.ActiveCfg = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.Build.0 = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|x64.ActiveCfg = Release|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|x64.Build.0 = Release|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.Build.0 = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|x64.ActiveCfg = Debug|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|x64.Build.0 = Debug|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.ActiveCfg = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.Build.0 = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|x64.ActiveCfg = Release|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|x64.Build.0 = Release|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.Build.0 = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|x64.ActiveCfg = Debug|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|x64.Build.0 = Debug|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.ActiveCfg = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.Build.0 = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|x64.ActiveCfg = Release|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|x64.Build.0 = Release|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.Build.0 = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|x64.ActiveCfg = Debug|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|x64.Build.0 = Debug|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.ActiveCfg = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.Build.0 = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|x64.ActiveCfg = Release|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|x64.Build.0 = Release|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.Build.0 = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|x64.ActiveCfg = Debug|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|x64.Build.0 = Debug|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.ActiveCfg = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.Build.0 = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|x64.ActiveCfg = Release|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|x64.Build.0 = Release|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.Build.0 = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|x64.ActiveCfg = Debug|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|x64.Build.0 = Debug|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.ActiveCfg = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.Build.0 = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|x64.ActiveCfg = Release|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|x64.Build.0 = Release|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.Build.0 = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|x64.ActiveCfg = Debug|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|x64.Build.0 = Debug|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.ActiveCfg = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.Build.0 = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|x64.ActiveCfg = Release|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|x64.Build.0 = Release|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.Build.0 = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|x64.ActiveCfg = Debug|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|x64.Build.0 = Debug|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.ActiveCfg = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.Build.0 = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|x64.ActiveCfg = Release|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|x64.Build.0 = Release|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.Build.0 = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|x64.ActiveCfg = Debug|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|x64.Build.0 = Debug|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.ActiveCfg = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.Build.0 = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|x64.ActiveCfg = Release|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|x64.Build.0 = Release|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.Build.0 = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|x64.ActiveCfg = Debug|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|x64.Build.0 = Debug|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.ActiveCfg = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.Build.0 = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|x64.ActiveCfg = Release|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|x64.Build.0 = Release|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.Build.0 = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|x64.ActiveCfg = Debug|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|x64.Build.0 = Debug|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.ActiveCfg = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.Build.0 = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|x64.ActiveCfg = Release|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|x64.Build.0 = Release|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.ActiveCfg = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.Build.0 = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|x64.ActiveCfg = Debug|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|x64.Build.0 = Debug|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.ActiveCfg = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.Build.0 = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|x64.ActiveCfg = Release|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|x64.Build.0 = Release|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.Build.0 = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|x64.ActiveCfg = Debug|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|x64.Build.0 = Debug|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.ActiveCfg = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.Build.0 = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|x64.ActiveCfg = Release|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|x64.Build.0 = Release|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.Build.0 = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|x64.ActiveCfg = Debug|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|x64.Build.0 = Debug|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.ActiveCfg = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.Build.0 = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|x64.ActiveCfg = Release|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|x64.Build.0 = Release|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.Build.0 = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|x64.ActiveCfg = Debug|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|x64.Build.0 = Debug|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.ActiveCfg = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.Build.0 = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|x64.ActiveCfg = Release|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|x64.Build.0 = Release|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.Build.0 = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|x64.ActiveCfg = Debug|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|x64.Build.0 = Debug|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.ActiveCfg = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.Build.0 = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|x64.ActiveCfg = Release|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|x64.Build.0 = Release|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.Build.0 = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|x64.ActiveCfg = Debug|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|x64.Build.0 = Debug|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.ActiveCfg = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.Build.0 = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|x64.ActiveCfg = Release|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|x64.Build.0 = Release|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.Build.0 = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|x64.ActiveCfg = Debug|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|x64.Build.0 = Debug|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.ActiveCfg = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.Build.0 = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|x64.ActiveCfg = Release|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|x64.Build.0 = Release|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.Build.0 = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|x64.ActiveCfg = Debug|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|x64.Build.0 = Debug|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.ActiveCfg = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.Build.0 = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|x64.ActiveCfg = Release|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|x64.Build.0 = Release|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.ActiveCfg = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.Build.0 = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|x64.ActiveCfg = Debug|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|x64.Build.0 = Debug|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.ActiveCfg = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.Build.0 = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|x64.ActiveCfg = Release|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|x64.Build.0 = Release|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.ActiveCfg = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.Build.0 = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|x64.ActiveCfg = Debug|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|x64.Build.0 = Debug|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.ActiveCfg = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.Build.0 = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|x64.ActiveCfg = Release|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|x64.Build.0 = Release|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.Build.0 = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|x64.ActiveCfg = Debug|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|x64.Build.0 = Debug|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.ActiveCfg = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.Build.0 = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|x64.ActiveCfg = Release|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|x64.Build.0 = Release|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.Build.0 = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|x64.ActiveCfg = Debug|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|x64.Build.0 = Debug|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.ActiveCfg = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.Build.0 = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|x64.ActiveCfg = Release|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|x64.Build.0 = Release|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.Build.0 = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|x64.ActiveCfg = Debug|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|x64.Build.0 = Debug|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.ActiveCfg = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.Build.0 = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|x64.ActiveCfg = Release|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|x64.Build.0 = Release|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.Build.0 = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|x64.ActiveCfg = Debug|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|x64.Build.0 = Debug|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.ActiveCfg = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.Build.0 = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|x64.ActiveCfg = Release|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|x64.Build.0 = Release|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.Build.0 = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|x64.ActiveCfg = Debug|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|x64.Build.0 = Debug|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.ActiveCfg = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.Build.0 = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|x64.ActiveCfg = Release|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|x64.Build.0 = Release|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.Build.0 = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|x64.ActiveCfg = Debug|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|x64.Build.0 = Debug|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.ActiveCfg = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.Build.0 = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|x64.ActiveCfg = Release|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|x64.Build.0 = Release|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.ActiveCfg = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.Build.0 = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|x64.ActiveCfg = Debug|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|x64.Build.0 = Debug|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.ActiveCfg = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.Build.0 = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|x64.ActiveCfg = Release|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|x64.Build.0 = Release|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.Build.0 = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|x64.ActiveCfg = Debug|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|x64.Build.0 = Debug|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.ActiveCfg = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.Build.0 = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|x64.ActiveCfg = Release|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|x64.Build.0 = Release|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.Build.0 = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|x64.ActiveCfg = Debug|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|x64.Build.0 = Debug|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.ActiveCfg = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.Build.0 = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|x64.ActiveCfg = Release|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|x64.Build.0 = Release|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|x64.ActiveCfg = Debug|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|x64.Build.0 = Debug|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.Build.0 = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|x64.ActiveCfg = Release|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|x64.Build.0 = Release|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.Build.0 = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|x64.ActiveCfg = Debug|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|x64.Build.0 = Debug|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.ActiveCfg = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.Build.0 = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|x64.ActiveCfg = Release|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|x64.Build.0 = Release|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.Build.0 = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|x64.ActiveCfg = Debug|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|x64.Build.0 = Debug|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.ActiveCfg = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.Build.0 = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|x64.ActiveCfg = Release|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|x64.Build.0 = Release|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.Build.0 = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|x64.ActiveCfg = Debug|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|x64.Build.0 = Debug|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.ActiveCfg = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.Build.0 = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|x64.ActiveCfg = Release|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|x64.Build.0 = Release|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.Build.0 = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|x64.ActiveCfg = Debug|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|x64.Build.0 = Debug|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.ActiveCfg = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.Build.0 = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|x64.ActiveCfg = Release|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|x64.Build.0 = Release|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.Build.0 = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|x64.ActiveCfg = Debug|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|x64.Build.0 = Debug|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.ActiveCfg = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.Build.0 = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|x64.ActiveCfg = Release|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|x64.Build.0 = Release|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.Build.0 = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|x64.ActiveCfg = Debug|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|x64.Build.0 = Debug|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.ActiveCfg = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.Build.0 = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|x64.ActiveCfg = Release|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|x64.Build.0 = Release|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.Build.0 = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|x64.ActiveCfg = Debug|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|x64.Build.0 = Debug|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.ActiveCfg = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.Build.0 = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|x64.ActiveCfg = Release|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|x64.Build.0 = Release|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.Build.0 = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|x64.ActiveCfg = Debug|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|x64.Build.0 = Debug|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.ActiveCfg = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.Build.0 = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|x64.ActiveCfg = Release|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|x64.Build.0 = Release|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.Build.0 = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|x64.ActiveCfg = Debug|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|x64.Build.0 = Debug|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.ActiveCfg = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.Build.0 = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|x64.ActiveCfg = Release|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|x64.Build.0 = Release|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.Build.0 = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|x64.ActiveCfg = Debug|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|x64.Build.0 = Debug|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.ActiveCfg = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.Build.0 = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|x64.ActiveCfg = Release|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|x64.Build.0 = Release|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.Build.0 = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|x64.ActiveCfg = Debug|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|x64.Build.0 = Debug|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.ActiveCfg = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.Build.0 = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|x64.ActiveCfg = Release|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|x64.Build.0 = Release|x64
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|x64.ActiveCfg = Debug|x64
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|Win32.ActiveCfg = Release|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|x64.ActiveCfg = Release|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.Build.0 = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|x64.ActiveCfg = Debug|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|x64.Build.0 = Debug|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.ActiveCfg = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.Build.0 = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|x64.ActiveCfg = Release|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|x64.Build.0 = Release|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.Build.0 = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|x64.ActiveCfg = Debug|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|x64.Build.0 = Debug|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.ActiveCfg = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.Build.0 = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|x64.ActiveCfg = Release|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|x64.Build.0 = Release|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.Build.0 = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|x64.ActiveCfg = Debug|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|x64.Build.0 = Debug|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.ActiveCfg = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.Build.0 = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|x64.ActiveCfg = Release|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|x64.Build.0 = Release|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.Build.0 = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|x64.ActiveCfg = Debug|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|x64.Build.0 = Debug|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.ActiveCfg = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.Build.0 = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|x64.ActiveCfg = Release|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|x64.Build.0 = Release|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.Build.0 = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|x64.ActiveCfg = Debug|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|x64.Build.0 = Debug|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.ActiveCfg = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.Build.0 = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|x64.ActiveCfg = Release|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|x64.Build.0 = Release|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.Build.0 = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|x64.ActiveCfg = Debug|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|x64.Build.0 = Debug|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.ActiveCfg = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.Build.0 = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|x64.ActiveCfg = Release|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|x64.Build.0 = Release|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.Build.0 = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|x64.ActiveCfg = Debug|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|x64.Build.0 = Debug|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.ActiveCfg = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.Build.0 = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|x64.ActiveCfg = Release|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|x64.Build.0 = Release|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.Build.0 = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|x64.ActiveCfg = Debug|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|x64.Build.0 = Debug|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.ActiveCfg = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.Build.0 = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|x64.ActiveCfg = Release|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|x64.Build.0 = Release|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.ActiveCfg = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.Build.0 = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|x64.ActiveCfg = Debug|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|x64.Build.0 = Debug|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.ActiveCfg = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.Build.0 = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|x64.ActiveCfg = Release|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|x64.Build.0 = Release|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.Build.0 = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|x64.ActiveCfg = Debug|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|x64.Build.0 = Debug|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.ActiveCfg = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.Build.0 = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|x64.ActiveCfg = Release|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|x64.Build.0 = Release|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.Build.0 = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|x64.ActiveCfg = Debug|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|x64.Build.0 = Debug|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.ActiveCfg = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.Build.0 = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|x64.ActiveCfg = Release|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|x64.Build.0 = Release|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.ActiveCfg = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.Build.0 = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|x64.ActiveCfg = Debug|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|x64.Build.0 = Debug|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.ActiveCfg = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.Build.0 = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|x64.ActiveCfg = Release|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|x64.Build.0 = Release|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.Build.0 = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|x64.ActiveCfg = Debug|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|x64.Build.0 = Debug|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.ActiveCfg = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.Build.0 = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|x64.ActiveCfg = Release|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|x64.Build.0 = Release|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.ActiveCfg = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.Build.0 = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|x64.ActiveCfg = Debug|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|x64.Build.0 = Debug|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.ActiveCfg = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.Build.0 = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|x64.ActiveCfg = Release|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|x64.Build.0 = Release|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.Build.0 = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|x64.ActiveCfg = Debug|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|x64.Build.0 = Debug|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.ActiveCfg = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.Build.0 = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|x64.ActiveCfg = Release|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|x64.Build.0 = Release|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.Build.0 = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|x64.ActiveCfg = Debug|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|x64.Build.0 = Debug|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.ActiveCfg = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.Build.0 = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|x64.ActiveCfg = Release|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|x64.Build.0 = Release|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.Build.0 = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|x64.ActiveCfg = Debug|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|x64.Build.0 = Debug|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.ActiveCfg = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.Build.0 = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|x64.ActiveCfg = Release|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|x64.Build.0 = Release|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.ActiveCfg = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.Build.0 = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|x64.ActiveCfg = Debug|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|x64.Build.0 = Debug|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.ActiveCfg = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.Build.0 = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|x64.ActiveCfg = Release|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|x64.Build.0 = Release|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.Build.0 = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|x64.ActiveCfg = Debug|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|x64.Build.0 = Debug|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.ActiveCfg = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.Build.0 = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|x64.ActiveCfg = Release|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|x64.Build.0 = Release|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.Build.0 = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|x64.ActiveCfg = Debug|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|x64.Build.0 = Debug|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.ActiveCfg = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.Build.0 = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|x64.ActiveCfg = Release|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|x64.Build.0 = Release|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.Build.0 = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|x64.ActiveCfg = Debug|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|x64.Build.0 = Debug|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.ActiveCfg = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.Build.0 = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|x64.ActiveCfg = Release|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|x64.Build.0 = Release|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.Build.0 = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|x64.ActiveCfg = Debug|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|x64.Build.0 = Debug|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.ActiveCfg = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.Build.0 = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|x64.ActiveCfg = Release|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|x64.Build.0 = Release|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.Build.0 = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|x64.ActiveCfg = Debug|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|x64.Build.0 = Debug|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.ActiveCfg = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.Build.0 = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|x64.ActiveCfg = Release|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|x64.Build.0 = Release|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.Build.0 = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|x64.ActiveCfg = Debug|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|x64.Build.0 = Debug|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.ActiveCfg = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.Build.0 = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|x64.ActiveCfg = Release|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|x64.Build.0 = Release|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.Build.0 = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|x64.ActiveCfg = Debug|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|x64.Build.0 = Debug|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.ActiveCfg = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.Build.0 = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|x64.ActiveCfg = Release|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|x64.Build.0 = Release|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.Build.0 = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|x64.ActiveCfg = Debug|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|x64.Build.0 = Debug|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.ActiveCfg = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.Build.0 = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|x64.ActiveCfg = Release|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|x64.Build.0 = Release|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.Build.0 = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|x64.ActiveCfg = Debug|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|x64.Build.0 = Debug|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.ActiveCfg = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.Build.0 = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|x64.ActiveCfg = Release|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|x64.Build.0 = Release|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.Build.0 = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|x64.ActiveCfg = Debug|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|x64.Build.0 = Debug|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.ActiveCfg = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.Build.0 = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|x64.ActiveCfg = Release|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|x64.Build.0 = Release|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.Build.0 = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|x64.ActiveCfg = Debug|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|x64.Build.0 = Debug|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.ActiveCfg = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.Build.0 = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|x64.ActiveCfg = Release|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|x64.Build.0 = Release|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.Build.0 = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|x64.ActiveCfg = Debug|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|x64.Build.0 = Debug|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.ActiveCfg = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.Build.0 = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|x64.ActiveCfg = Release|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|x64.Build.0 = Release|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.Build.0 = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|x64.ActiveCfg = Debug|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|x64.Build.0 = Debug|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.ActiveCfg = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.Build.0 = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|x64.ActiveCfg = Release|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|x64.Build.0 = Release|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.Build.0 = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|x64.ActiveCfg = Debug|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|x64.Build.0 = Debug|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.ActiveCfg = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.Build.0 = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|x64.ActiveCfg = Release|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|x64.Build.0 = Release|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.Build.0 = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|x64.ActiveCfg = Debug|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|x64.Build.0 = Debug|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.ActiveCfg = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.Build.0 = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|x64.ActiveCfg = Release|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|x64.Build.0 = Release|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.Build.0 = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|x64.ActiveCfg = Debug|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|x64.Build.0 = Debug|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.ActiveCfg = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.Build.0 = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|x64.ActiveCfg = Release|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|x64.Build.0 = Release|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.Build.0 = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|x64.ActiveCfg = Debug|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|x64.Build.0 = Debug|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.ActiveCfg = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.Build.0 = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|x64.ActiveCfg = Release|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|x64.Build.0 = Release|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.Build.0 = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|x64.ActiveCfg = Debug|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|x64.Build.0 = Debug|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.ActiveCfg = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.Build.0 = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|x64.ActiveCfg = Release|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {46F3D788-C329-4384-A4E7-47D971FAAEE9} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {35BA54D4-CF76-478A-A85C-DD4B3941CA09} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E54C14CE-33AF-4AA4-9864-2EAFC73DD813} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {0A43F290-F34B-4448-9A70-8EDAFC29893F} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {AF72E544-553A-4D1D-831B-8D7987BDF82C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {53D4C03D-7FBF-46C8-A07A-C44644420132} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {39BC0138-6B50-492C-8570-06458772282B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CD5DB834-234F-40A3-B551-DC895885E7B1} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {D5110077-CA24-494B-87D0-451BD124CF70} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {5805527C-6A77-40A9-8EF6-414B0269B50E} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {24015124-A47C-406F-850B-09E95DBBF573} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B9413124-1841-4373-BFE2-AE6C78F24731} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3F1C1C41-424E-4E23-8990-AEB55196376D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {33833932-6973-483B-B0D1-B3CC800BDFF5} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B1F2A8CE-764A-4D51-AABD-998D48783894} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {054C79A1-A607-496B-96CE-6F0BB404F754} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {DF3336E6-F783-4577-B014-75D0E0377B3E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {818553D4-0DEF-4BBE-A43A-45611DD84580} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4CE33021-55F3-46CC-A548-A151D07B24CF} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D83A0994-57A0-4C17-89DF-EDE84450C202} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {651B0E61-1047-4575-BE31-D9CB28062CBA} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {15D96388-C17C-4085-991F-9003E0CE9C6A} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {769E26C1-E337-4878-B604-8BE33323F5FF} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {26170083-8042-4E04-BFE3-B553A5A8D481} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {A7A46527-B5F9-4B92-9C46-2416E2432314} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {020991C0-9640-4097-B697-D514F08AA74C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {450C8334-BA46-43DB-81BA-7BEDBB346126} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {DEF1A42F-599B-4B1D-AB11-202E86670021} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {53F78E7F-3024-4999-BE70-F4A242357809} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {774783E0-2443-42DB-AA48-04730E59B396} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {432917E4-F042-47B2-BF43-0C376883A7E6} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ EndGlobalSection
+EndGlobal
diff --git a/2.3-1/scilab2c.sln.txt b/2.3-1/scilab2c.sln.txt
new file mode 100644
index 00000000..059742a8
--- /dev/null
+++ b/2.3-1/scilab2c.sln.txt
@@ -0,0 +1,1271 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auxiliaryFunctions", "auxiliaryFunctions", "{46F3D788-C329-4384-A4E7-47D971FAAEE9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elementaryFunctions", "elementaryFunctions", "{35BA54D4-CF76-478A-A85C-DD4B3941CA09}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "matrixOperations", "matrixOperations", "{BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "implicitList", "implicitList", "{E54C14CE-33AF-4AA4-9864-2EAFC73DD813}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "operations", "operations", "{370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "signalProcessing", "signalProcessing", "{0A43F290-F34B-4448-9A70-8EDAFC29893F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "statisticsFunctions", "statisticsFunctions", "{AF72E544-553A-4D1D-831B-8D7987BDF82C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "string", "string", "{E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "type", "type", "{53D4C03D-7FBF-46C8-A07A-C44644420132}"
+EndProject
+Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "blasplus_DLL", "src\fortran\blas\blas_f\blasplus_DLL.vfproj", "{78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}"
+EndProject
+Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "lapack_DLL", "src\fortran\lapack\lapack_f\lapack_DLL.vfproj", "{69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}"
+ ProjectSection(ProjectDependencies) = postProject
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "type", "src\c\type\type.vcxproj", "{9B1BD750-1FEF-4D6B-9422-782D16181CEE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleComplex", "src\c\type\test_doubleComplex\test_doubleComplex.vcxproj", "{DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatComplex", "src\c\type\test_floatComplex\test_floatComplex.vcxproj", "{A6EBF2F9-C100-453F-A0D1-1649DCF557EC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "elementaryFunctions", "src\c\elementaryFunctions\elementaryFunctions.vcxproj", "{72B46833-B150-432D-B231-3E0ECD91E190}"
+ ProjectSection(ProjectDependencies) = postProject
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923} = {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testCplxAcos", "src\c\elementaryFunctions\acos\test_cplxacos\test_cplxacos.vcxproj", "{20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrealsacos", "src\c\elementaryFunctions\acos\test_realsacos\testrealsacos.vcxproj", "{0556427D-6D88-4A12-9EB3-7F551D6F1FA4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAcosh", "src\c\elementaryFunctions\acosh\test_doubleacosh\test_doubleacosh.vcxproj", "{5805527C-6A77-40A9-8EF6-414B0269B50E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "auxiliaryFunctions", "src\c\auxiliaryFunctions\auxiliaryFunctions.vcxproj", "{AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {9B622A66-546A-4B33-B947-0A189D259D37} = {9B622A66-546A-4B33-B947-0A189D259D37}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "matrixOperations", "src\c\matrixOperations\matrixOperations.vcxproj", "{FD335544-52BF-4736-A34E-77F591D158D5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923} = {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}
+ {9B622A66-546A-4B33-B947-0A189D259D37} = {9B622A66-546A-4B33-B947-0A189D259D37}
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "operations", "src\c\operations\operations.vcxproj", "{9B622A66-546A-4B33-B947-0A189D259D37}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "implicitList", "src\c\implicitList\implicitList.vcxproj", "{4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signalProcessing", "src\c\signalProcessing\signalProcessing.vcxproj", "{F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}"
+ ProjectSection(ProjectDependencies) = postProject
+ {FD335544-52BF-4736-A34E-77F591D158D5} = {FD335544-52BF-4736-A34E-77F591D158D5}
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9} = {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "statisticsFunctions", "src\c\statisticsFunctions\statisticsFunctions.vcxproj", "{E11ED064-3BF2-4F70-B66E-3223C737EC60}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string", "src\c\string\string.vcxproj", "{38A141F2-DF77-4032-A17C-0901EA1A7AF1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAbs", "src\c\auxiliaryFunctions\abs\test_FloatAbs\testFloatAbs.vcxproj", "{4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAbs", "src\c\auxiliaryFunctions\abs\test_DoubleAbs\testDoubleAbs.vcxproj", "{5A8D4B59-AC5D-4BA0-A26F-17E740F35042}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testConj", "src\c\auxiliaryFunctions\conj\test_Conj\testConj.vcxproj", "{CD5DB834-234F-40A3-B551-DC895885E7B1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind", "src\c\auxiliaryFunctions\find\test_Find\testFind.vcxproj", "{D5110077-CA24-494B-87D0-451BD124CF70}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind2d", "src\c\auxiliaryFunctions\find2d\test_Find2d\testFind2d.vcxproj", "{7361B40C-BCF5-442B-9116-7DB5AD7456B0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFrexp", "src\c\auxiliaryFunctions\frexp\test_frexp\frexp.vcxproj", "{FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsEmpty", "src\c\auxiliaryFunctions\isempty\test_IsEmpty\testIsEmpty.vcxproj", "{CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsNan", "src\c\auxiliaryFunctions\isnan\test_IsNan\testIsNan.vcxproj", "{18763BD3-2916-4D97-9633-5DAC1A635EDD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLength", "src\c\auxiliaryFunctions\length\test_Length\testLength.vcxproj", "{A4626E50-DDD7-44E1-83FC-05BF396AF250}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testPythag", "src\c\auxiliaryFunctions\pythag\test_Pythag\testPythag.vcxproj", "{10F6C306-FD81-45F3-936B-CDF8213A88E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRand", "src\c\auxiliaryFunctions\rand\test_Rand\testRand.vcxproj", "{31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSign", "src\c\auxiliaryFunctions\sign\test_Sign\testSign.vcxproj", "{EEBFAC09-8BD7-4254-9316-57C1907D827E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSize", "src\c\auxiliaryFunctions\size\test_Size\testSize.vcxproj", "{5D4B1991-549D-48ED-A5F6-CB17F15B72C8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testType", "src\c\auxiliaryFunctions\type\test_Type\testType.vcxproj", "{8EB05C91-9405-4AF4-88B4-A6B227409BFB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDisp", "src\c\string\disp\test_Disp\testDisp.vcxproj", "{432917E4-F042-47B2-BF43-0C376883A7E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testString", "src\c\string\string\test_String\testString.vcxproj", "{DF010F03-718D-4CEF-BD03-5E2C9C47613D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAcosh", "src\c\elementaryFunctions\acosh\test_FloatAcosh\testFloatAcosh.vcxproj", "{24015124-A47C-406F-850B-09E95DBBF573}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatImplicitList", "src\c\implicitList\test_FloatImplicitList\testFloatImplicitList.vcxproj", "{93CF027E-C286-4F61-A9D6-DE3C899C5E77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleImplicitList", "src\c\implicitList\test_DoubleImplicitList\testDoubleImplicitList.vcxproj", "{15D96388-C17C-4085-991F-9003E0CE9C6A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMultiplication", "src\c\operations\multiplication\test_Multiplication\testMultiplication.vcxproj", "{769E26C1-E337-4878-B604-8BE33323F5FF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSubtraction", "src\c\operations\subtraction\test_Subtraction\testSubtraction.vcxproj", "{F0DA7501-84CB-4641-9DDA-DA084736B7D4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testAddition", "src\c\operations\addition\test_Addition\testAddition.vcxproj", "{59F5B75C-7FCC-4B07-A5D0-C39D5757204B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLDivision", "src\c\operations\division\test_LDivision\testLDivision.vcxproj", "{7A424759-5962-4AE5-ABB6-0B94DDD21F61}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRDivision", "src\c\operations\division\test_RDivision\testRDivision.vcxproj", "{BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixConcatenation", "src\c\matrixOperations\cat\test_DoubleMatrixConcatenation\testDoubleMatrixConcatenation.vcxproj", "{7F36A592-B667-43A4-B3C3-66636F2DECB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixConcatenation", "src\c\matrixOperations\cat\test_FloatMatrixConcatenation\testFloatMatrixConcatenation.vcxproj", "{B9413124-1841-4373-BFE2-AE6C78F24731}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatChol", "src\c\matrixOperations\chol\test_FloatChol\testFloatChol.vcxproj", "{C5BA0B86-B432-4EF6-95DE-75C026994F4F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleChol", "src\c\matrixOperations\chol\test_DoubleChol\testDoubleChol.vcxproj", "{2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDeterm", "src\c\matrixOperations\determ\test_FloatDeterm\testFloatDeterm.vcxproj", "{204A5126-03B1-4E9D-8CC1-CCA9F64BD081}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDeterm", "src\c\matrixOperations\determ\test_DoubleDeterm\testDoubleDeterm.vcxproj", "{7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDist", "src\c\matrixOperations\dist\test_FloatDist\testFloatDist.vcxproj", "{3902CF74-70D4-4FA4-AA53-71643B94BAB9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDist", "src\c\matrixOperations\determ\test_DoubleDist\testDoubleDist.vcxproj", "{3F1C1C41-424E-4E23-8990-AEB55196376D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixRDivision", "src\c\matrixOperations\division\test_MatrixRDivision\testMatrixRDivision.vcxproj", "{33833932-6973-483B-B0D1-B3CC800BDFF5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixLDivision", "src\c\matrixOperations\division\test_MatrixLDivision\testMatrixLDivision.vcxproj", "{B1F2A8CE-764A-4D51-AABD-998D48783894}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixExponential", "src\c\matrixOperations\expm\test_MatrixExponential\testMatrixExponential.vcxproj", "{1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixEye", "src\c\matrixOperations\eye\test_MatrixEye\testMatrixEye.vcxproj", "{4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFill", "src\c\matrixOperations\fill\test_FloatFill\testFloatFill.vcxproj", "{054C79A1-A607-496B-96CE-6F0BB404F754}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFill", "src\c\matrixOperations\fill\test_DoubleFill\testDoubleFill.vcxproj", "{903B0194-F1A9-4302-AC3D-7E88E0406E26}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInfiniteNorm", "src\c\matrixOperations\infiniteNorm\test_MatrixInfiniteNorm\testMatrixInfiniteNorm.vcxproj", "{43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInversion", "src\c\matrixOperations\inversion\test_MatrixInversion\testMatrixInversion.vcxproj", "{44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testJmat", "src\c\matrixOperations\jmat\test_Jmat\testJmat.vcxproj", "{04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLogm", "src\c\matrixOperations\logm\test_FloatLogm\testFloatLogm.vcxproj", "{BAFD5FA4-3D99-48FF-BBFD-5017207870E7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLogm", "src\c\matrixOperations\logm\test_DoubleLogm\testDoubleLogm.vcxproj", "{DF3336E6-F783-4577-B014-75D0E0377B3E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMagnitude", "src\c\matrixOperations\magnitude\test_FloatMagnitude\testFloatMagnitude.vcxproj", "{1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMagnitude", "src\c\matrixOperations\magnitude\test_DoubleMagnitude\testDoubleMagnitude.vcxproj", "{818553D4-0DEF-4BBE-A43A-45611DD84580}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixMultiplication", "src\c\matrixOperations\multiplication\test_FloatMatrixMultiplication\testFloatMatrixMultiplication.vcxproj", "{4CE33021-55F3-46CC-A548-A151D07B24CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixMultiplication", "src\c\matrixOperations\multiplication\test_DoubleMatrixMultiplication\testDoubleMatrixMultiplication.vcxproj", "{C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixOnes", "src\c\matrixOperations\ones\test_MatrixOnes\testMatrixOnes.vcxproj", "{D21BD764-EEC6-4474-9D4B-808EF2217CC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoublePowm", "src\c\matrixOperations\powm\test_DoublePowm\testDoublePowm.vcxproj", "{D83A0994-57A0-4C17-89DF-EDE84450C202}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatPowm", "src\c\matrixOperations\powm\test_FloatPowm\testFloatPowm.vcxproj", "{8594ACB2-D3C8-4D3A-B905-794354A8A0CC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec", "src\c\matrixOperations\spec\test_FloatSpec\testFloatSpec.vcxproj", "{B7BEF8A2-3E42-4FA3-94A7-22618594057D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec", "src\c\matrixOperations\spec\test_DoubleSpec\testDoubleSpec.vcxproj", "{651B0E61-1047-4575-BE31-D9CB28062CBA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec2", "src\c\matrixOperations\spec2\test_FloatSpec2\testFloatSpec2.vcxproj", "{E20D0BC2-B28A-412C-9715-5B93B319A4A3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec2", "src\c\matrixOperations\spec2\test_DoubleSpec2\testDoubleSpec2.vcxproj", "{FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_FloatSquaredMagnitude\testFloatSquaredMagnitude.vcxproj", "{6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_DoubleSquaredMagnitude\testDoubleSquaredMagnitude.vcxproj", "{16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTrace", "src\c\matrixOperations\trace\test_MatrixTrace\testMatrixTrace.vcxproj", "{21E5E59A-7E4E-4F65-9042-9C67C713D51C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTranspose", "src\c\matrixOperations\transpose\test_MatrixTranspose\testMatrixTranspose.vcxproj", "{8D483B26-A264-4BA6-BB6A-36306BCFA8E3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixZeros", "src\c\matrixOperations\zeros\test_MatrixZeros\testMatrixZeros.vcxproj", "{D55BC043-1853-4E4C-A8A8-2756682E4B23}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RUN_TESTS", "RUN_TESTS\RUN_TESTS.vcxproj", "{39BC0138-6B50-492C-8570-06458772282B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMax", "src\c\statisticsFunctions\max\test_DoubleMax\testDoubleMax.vcxproj", "{020991C0-9640-4097-B697-D514F08AA74C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMax", "src\c\statisticsFunctions\max\test_FloatMax\testFloatMax.vcxproj", "{0E4EC2A2-BADC-48C8-AF56-D1437094887A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMean", "src\c\statisticsFunctions\mean\test_FloatMean\testFloatMean.vcxproj", "{ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMean", "src\c\statisticsFunctions\mean\test_DoubleMean\testDoubleMean.vcxproj", "{3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMin", "src\c\statisticsFunctions\min\test_DoubleMin\testDoubleMin.vcxproj", "{9678E693-3459-4D6F-9017-EA3E28A58AC7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMin", "src\c\statisticsFunctions\min\test_FloatMin\testFloatMin.vcxproj", "{0A156C36-89D5-485E-BB8E-C7536A1DA566}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatProd", "src\c\statisticsFunctions\prod\test_FloatProd\testFloatProd.vcxproj", "{B80645FE-03D0-4BC8-8DAE-032A58CF4E57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleProd", "src\c\statisticsFunctions\prod\test_DoubleProd\testDoubleProd.vcxproj", "{322F871E-3349-4993-BC87-CAFAA6B6F72C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSum", "src\c\statisticsFunctions\sum\test_FloatSum\testFloatSum.vcxproj", "{450C8334-BA46-43DB-81BA-7BEDBB346126}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSum", "src\c\statisticsFunctions\sum\test_DoubleSum\testDoubleSum.vcxproj", "{F2A81CDC-2581-481F-B63D-3D2079B264C2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVarianceNono", "src\c\statisticsFunctions\variance\test_FloatVarianceNono\testFloatVarianceNono.vcxproj", "{DEF1A42F-599B-4B1D-AB11-202E86670021}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVariance", "src\c\statisticsFunctions\variance\test_FloatVariance\testFloatVariance.vcxproj", "{53F78E7F-3024-4999-BE70-F4A242357809}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVarianceNono", "src\c\statisticsFunctions\variance\test_DoubleVarianceNono\testDoubleVarianceNono.vcxproj", "{CCD3F89C-A278-457D-BFD6-ADEEF4860E07}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVariance", "src\c\statisticsFunctions\variance\test_DoubleVariance\testDoubleVariance.vcxproj", "{774783E0-2443-42DB-AA48-04730E59B396}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv", "src\c\signalProcessing\conv\test_FloatConv\testFloatConv.vcxproj", "{5A0D9A72-FA85-41F8-A605-A2B31961B01C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv", "src\c\signalProcessing\conv\test_DoubleConv\testDoubleConv.vcxproj", "{0ED6E2D7-B50D-4A17-A34B-440A7307E747}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv2d", "src\c\signalProcessing\conv2d\test_DoubleConv2d\testDoubleConv2d.vcxproj", "{C46C7CDE-9D38-42E5-9DBA-3E7306033450}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv2d", "src\c\signalProcessing\conv2d\test_FloatConv2d\testFloatConv2d.vcxproj", "{26170083-8042-4E04-BFE3-B553A5A8D481}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatCrossCorr", "src\c\signalProcessing\crossCorr\test_FloatCrossCorr\testFloatCrossCorr.vcxproj", "{0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleCrossCorr", "src\c\signalProcessing\crossCorr\test_DoubleCrossCorr\testDoubleCrossCorr.vcxproj", "{9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatFft", "src\c\signalProcessing\fft\test_MatFft\testMatFft.vcxproj", "{A7A46527-B5F9-4B92-9C46-2416E2432314}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFft", "src\c\signalProcessing\fft\test_FloatFft\testFloatFft.vcxproj", "{EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFft", "src\c\signalProcessing\fft\test_DoubleFft\testDoubleFft.vcxproj", "{DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFftShift", "src\c\signalProcessing\fftshift\test_DoubleFftShift\testDoubleFftShift.vcxproj", "{1EA7E165-A87C-49EA-90CB-2AECD5FED605}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFftShift", "src\c\signalProcessing\fftshift\test_FloatFftShift\testFloatFftShift.vcxproj", "{CF3E80F1-A0B6-465B-9285-11753E84B7F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\signalProcessing\hilbert\test_Hilbert\testHilbert.vcxproj", "{AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatIfft", "src\c\signalProcessing\ifft\test_MatIfft\testMatIfft.vcxproj", "{2F903F45-A053-47F8-BEA7-2490DEA6C9C5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatIfft", "src\c\signalProcessing\ifft\test_FloatIfft\testFloatIfft.vcxproj", "{3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleIfft", "src\c\signalProcessing\ifft\test_DoubleIfft\testDoubleIfft.vcxproj", "{633B36B2-AF28-4EF8-A236-021AA1ECF18A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLev", "src\c\signalProcessing\lev\test_FloatLev\testFloatLev.vcxproj", "{81145727-FB2B-4CD6-B5AC-3F2146F93D5F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLev", "src\c\signalProcessing\lev\test_DoubleLev\testDoubleLev.vcxproj", "{BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLevin", "src\c\signalProcessing\levin\test_FloatLevin\testFloatLevin.vcxproj", "{FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLevin", "src\c\signalProcessing\levin\test_DoubleLevin\testDoubleLevin.vcxproj", "{CAA51066-E3AC-4FE7-A330-D946A7AD6026}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLpc2cep", "src\c\signalProcessing\lpc2cep\test_DoubleLpc2cep\testDoubleLpc2cep.vcxproj", "{EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLpc2cep", "src\c\signalProcessing\lpc2cep\test_FloatLpc2cep\testFloatLpc2cep.vcxproj", "{F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\matrixOperations\hilb\test_Hilbert\testHilbert.vcxproj", "{F7747E9B-A57F-43D2-8C1F-1F77C670B406}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.Build.0 = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.ActiveCfg = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.Build.0 = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.ActiveCfg = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.Build.0 = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.ActiveCfg = Release|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.Build.0 = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.ActiveCfg = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.Build.0 = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.ActiveCfg = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.Build.0 = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.ActiveCfg = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.Build.0 = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.ActiveCfg = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.Build.0 = Release|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.Build.0 = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|x64.ActiveCfg = Debug|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|x64.Build.0 = Debug|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.ActiveCfg = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.Build.0 = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|x64.ActiveCfg = Release|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|x64.Build.0 = Release|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.Build.0 = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|x64.ActiveCfg = Debug|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|x64.Build.0 = Debug|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.ActiveCfg = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.Build.0 = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|x64.ActiveCfg = Release|x64
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|x64.Build.0 = Release|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.Build.0 = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|x64.ActiveCfg = Debug|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|x64.Build.0 = Debug|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.ActiveCfg = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.Build.0 = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|x64.ActiveCfg = Release|x64
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|x64.Build.0 = Release|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.ActiveCfg = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.Build.0 = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|x64.ActiveCfg = Debug|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|x64.Build.0 = Debug|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.ActiveCfg = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.Build.0 = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|x64.ActiveCfg = Release|x64
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|x64.Build.0 = Release|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.Build.0 = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|x64.ActiveCfg = Debug|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|x64.Build.0 = Debug|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.ActiveCfg = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.Build.0 = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|x64.ActiveCfg = Release|x64
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|x64.Build.0 = Release|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.Build.0 = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|x64.ActiveCfg = Debug|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|x64.Build.0 = Debug|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.ActiveCfg = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.Build.0 = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|x64.ActiveCfg = Release|x64
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|x64.Build.0 = Release|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.Build.0 = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|x64.ActiveCfg = Debug|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|x64.Build.0 = Debug|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.ActiveCfg = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.Build.0 = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|x64.ActiveCfg = Release|x64
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|x64.Build.0 = Release|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.Build.0 = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|x64.ActiveCfg = Debug|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|x64.Build.0 = Debug|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.ActiveCfg = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.Build.0 = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|x64.ActiveCfg = Release|x64
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|x64.Build.0 = Release|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.Build.0 = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|x64.ActiveCfg = Debug|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|x64.Build.0 = Debug|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.ActiveCfg = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.Build.0 = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|x64.ActiveCfg = Release|x64
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|x64.Build.0 = Release|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.Build.0 = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|x64.ActiveCfg = Debug|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|x64.Build.0 = Debug|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.ActiveCfg = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.Build.0 = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|x64.ActiveCfg = Release|x64
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|x64.Build.0 = Release|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.Build.0 = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|x64.ActiveCfg = Debug|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|x64.Build.0 = Debug|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.ActiveCfg = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.Build.0 = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|x64.ActiveCfg = Release|x64
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|x64.Build.0 = Release|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|x64.ActiveCfg = Debug|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|x64.Build.0 = Debug|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.Build.0 = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|x64.ActiveCfg = Release|x64
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|x64.Build.0 = Release|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.Build.0 = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|x64.ActiveCfg = Debug|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|x64.Build.0 = Debug|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.ActiveCfg = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.Build.0 = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|x64.ActiveCfg = Release|x64
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|x64.Build.0 = Release|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.Build.0 = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|x64.ActiveCfg = Debug|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|x64.Build.0 = Debug|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.ActiveCfg = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.Build.0 = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|x64.ActiveCfg = Release|x64
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|x64.Build.0 = Release|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.Build.0 = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|x64.ActiveCfg = Debug|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|x64.Build.0 = Debug|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.ActiveCfg = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.Build.0 = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|x64.ActiveCfg = Release|x64
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|x64.Build.0 = Release|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.Build.0 = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|x64.ActiveCfg = Debug|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|x64.Build.0 = Debug|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.ActiveCfg = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.Build.0 = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|x64.ActiveCfg = Release|x64
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|x64.Build.0 = Release|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.Build.0 = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|x64.ActiveCfg = Debug|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|x64.Build.0 = Debug|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.ActiveCfg = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.Build.0 = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|x64.ActiveCfg = Release|x64
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|x64.Build.0 = Release|x64
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|x64.ActiveCfg = Debug|x64
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|Win32.ActiveCfg = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|x64.ActiveCfg = Release|x64
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|x64.ActiveCfg = Debug|x64
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|Win32.ActiveCfg = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|x64.ActiveCfg = Release|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.Build.0 = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|x64.ActiveCfg = Debug|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|x64.Build.0 = Debug|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.ActiveCfg = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.Build.0 = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|x64.ActiveCfg = Release|x64
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|x64.Build.0 = Release|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.Build.0 = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|x64.ActiveCfg = Debug|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|x64.Build.0 = Debug|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.ActiveCfg = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.Build.0 = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|x64.ActiveCfg = Release|x64
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|x64.Build.0 = Release|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.Build.0 = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|x64.ActiveCfg = Debug|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|x64.Build.0 = Debug|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.ActiveCfg = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.Build.0 = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|x64.ActiveCfg = Release|x64
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|x64.Build.0 = Release|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.Build.0 = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|x64.ActiveCfg = Debug|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|x64.Build.0 = Debug|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.ActiveCfg = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.Build.0 = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|x64.ActiveCfg = Release|x64
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|x64.Build.0 = Release|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.Build.0 = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|x64.ActiveCfg = Debug|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|x64.Build.0 = Debug|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.ActiveCfg = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.Build.0 = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|x64.ActiveCfg = Release|x64
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|x64.Build.0 = Release|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.Build.0 = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|x64.ActiveCfg = Debug|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|x64.Build.0 = Debug|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.ActiveCfg = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.Build.0 = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|x64.ActiveCfg = Release|x64
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|x64.Build.0 = Release|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.Build.0 = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|x64.ActiveCfg = Debug|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|x64.Build.0 = Debug|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.ActiveCfg = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.Build.0 = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|x64.ActiveCfg = Release|x64
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|x64.Build.0 = Release|x64
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|x64.ActiveCfg = Debug|x64
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|Win32.ActiveCfg = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|x64.ActiveCfg = Release|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.Build.0 = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|x64.ActiveCfg = Debug|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|x64.Build.0 = Debug|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.ActiveCfg = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.Build.0 = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|x64.ActiveCfg = Release|x64
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|x64.Build.0 = Release|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.Build.0 = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|x64.ActiveCfg = Debug|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|x64.Build.0 = Debug|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.ActiveCfg = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.Build.0 = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|x64.ActiveCfg = Release|x64
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|x64.Build.0 = Release|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.Build.0 = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|x64.ActiveCfg = Debug|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|x64.Build.0 = Debug|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.ActiveCfg = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.Build.0 = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|x64.ActiveCfg = Release|x64
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|x64.Build.0 = Release|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.ActiveCfg = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.Build.0 = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|x64.ActiveCfg = Debug|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|x64.Build.0 = Debug|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.ActiveCfg = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.Build.0 = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|x64.ActiveCfg = Release|x64
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|x64.Build.0 = Release|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.Build.0 = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|x64.ActiveCfg = Debug|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|x64.Build.0 = Debug|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.ActiveCfg = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.Build.0 = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|x64.ActiveCfg = Release|x64
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|x64.Build.0 = Release|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.Build.0 = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|x64.ActiveCfg = Debug|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|x64.Build.0 = Debug|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.ActiveCfg = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.Build.0 = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|x64.ActiveCfg = Release|x64
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|x64.Build.0 = Release|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.Build.0 = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|x64.ActiveCfg = Debug|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|x64.Build.0 = Debug|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.ActiveCfg = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.Build.0 = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|x64.ActiveCfg = Release|x64
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|x64.Build.0 = Release|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.Build.0 = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|x64.ActiveCfg = Debug|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|x64.Build.0 = Debug|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.ActiveCfg = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.Build.0 = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|x64.ActiveCfg = Release|x64
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|x64.Build.0 = Release|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.Build.0 = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|x64.ActiveCfg = Debug|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|x64.Build.0 = Debug|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.ActiveCfg = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.Build.0 = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|x64.ActiveCfg = Release|x64
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|x64.Build.0 = Release|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.Build.0 = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|x64.ActiveCfg = Debug|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|x64.Build.0 = Debug|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.ActiveCfg = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.Build.0 = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|x64.ActiveCfg = Release|x64
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|x64.Build.0 = Release|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.Build.0 = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|x64.ActiveCfg = Debug|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|x64.Build.0 = Debug|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.ActiveCfg = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.Build.0 = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|x64.ActiveCfg = Release|x64
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|x64.Build.0 = Release|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.Build.0 = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|x64.ActiveCfg = Debug|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|x64.Build.0 = Debug|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.ActiveCfg = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.Build.0 = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|x64.ActiveCfg = Release|x64
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|x64.Build.0 = Release|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.Build.0 = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|x64.ActiveCfg = Debug|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|x64.Build.0 = Debug|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.ActiveCfg = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.Build.0 = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|x64.ActiveCfg = Release|x64
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|x64.Build.0 = Release|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.Build.0 = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|x64.ActiveCfg = Debug|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|x64.Build.0 = Debug|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.ActiveCfg = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.Build.0 = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|x64.ActiveCfg = Release|x64
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|x64.Build.0 = Release|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.Build.0 = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|x64.ActiveCfg = Debug|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|x64.Build.0 = Debug|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.ActiveCfg = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.Build.0 = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|x64.ActiveCfg = Release|x64
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|x64.Build.0 = Release|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.ActiveCfg = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.Build.0 = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|x64.ActiveCfg = Debug|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|x64.Build.0 = Debug|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.ActiveCfg = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.Build.0 = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|x64.ActiveCfg = Release|x64
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|x64.Build.0 = Release|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.Build.0 = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|x64.ActiveCfg = Debug|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|x64.Build.0 = Debug|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.ActiveCfg = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.Build.0 = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|x64.ActiveCfg = Release|x64
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|x64.Build.0 = Release|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.Build.0 = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|x64.ActiveCfg = Debug|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|x64.Build.0 = Debug|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.ActiveCfg = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.Build.0 = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|x64.ActiveCfg = Release|x64
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|x64.Build.0 = Release|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.Build.0 = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|x64.ActiveCfg = Debug|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|x64.Build.0 = Debug|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.ActiveCfg = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.Build.0 = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|x64.ActiveCfg = Release|x64
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|x64.Build.0 = Release|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.Build.0 = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|x64.ActiveCfg = Debug|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|x64.Build.0 = Debug|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.ActiveCfg = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.Build.0 = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|x64.ActiveCfg = Release|x64
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|x64.Build.0 = Release|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.Build.0 = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|x64.ActiveCfg = Debug|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|x64.Build.0 = Debug|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.ActiveCfg = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.Build.0 = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|x64.ActiveCfg = Release|x64
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|x64.Build.0 = Release|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.Build.0 = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|x64.ActiveCfg = Debug|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|x64.Build.0 = Debug|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.ActiveCfg = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.Build.0 = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|x64.ActiveCfg = Release|x64
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|x64.Build.0 = Release|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.Build.0 = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|x64.ActiveCfg = Debug|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|x64.Build.0 = Debug|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.ActiveCfg = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.Build.0 = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|x64.ActiveCfg = Release|x64
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|x64.Build.0 = Release|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.ActiveCfg = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.Build.0 = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|x64.ActiveCfg = Debug|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|x64.Build.0 = Debug|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.ActiveCfg = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.Build.0 = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|x64.ActiveCfg = Release|x64
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|x64.Build.0 = Release|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.ActiveCfg = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.Build.0 = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|x64.ActiveCfg = Debug|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|x64.Build.0 = Debug|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.ActiveCfg = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.Build.0 = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|x64.ActiveCfg = Release|x64
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|x64.Build.0 = Release|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.Build.0 = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|x64.ActiveCfg = Debug|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|x64.Build.0 = Debug|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.ActiveCfg = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.Build.0 = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|x64.ActiveCfg = Release|x64
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|x64.Build.0 = Release|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.Build.0 = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|x64.ActiveCfg = Debug|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|x64.Build.0 = Debug|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.ActiveCfg = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.Build.0 = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|x64.ActiveCfg = Release|x64
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|x64.Build.0 = Release|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.Build.0 = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|x64.ActiveCfg = Debug|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|x64.Build.0 = Debug|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.ActiveCfg = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.Build.0 = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|x64.ActiveCfg = Release|x64
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|x64.Build.0 = Release|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.Build.0 = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|x64.ActiveCfg = Debug|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|x64.Build.0 = Debug|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.ActiveCfg = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.Build.0 = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|x64.ActiveCfg = Release|x64
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|x64.Build.0 = Release|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.Build.0 = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|x64.ActiveCfg = Debug|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|x64.Build.0 = Debug|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.ActiveCfg = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.Build.0 = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|x64.ActiveCfg = Release|x64
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|x64.Build.0 = Release|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.Build.0 = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|x64.ActiveCfg = Debug|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|x64.Build.0 = Debug|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.ActiveCfg = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.Build.0 = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|x64.ActiveCfg = Release|x64
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|x64.Build.0 = Release|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.ActiveCfg = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.Build.0 = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|x64.ActiveCfg = Debug|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|x64.Build.0 = Debug|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.ActiveCfg = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.Build.0 = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|x64.ActiveCfg = Release|x64
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|x64.Build.0 = Release|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.Build.0 = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|x64.ActiveCfg = Debug|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|x64.Build.0 = Debug|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.ActiveCfg = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.Build.0 = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|x64.ActiveCfg = Release|x64
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|x64.Build.0 = Release|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.Build.0 = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|x64.ActiveCfg = Debug|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|x64.Build.0 = Debug|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.ActiveCfg = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.Build.0 = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|x64.ActiveCfg = Release|x64
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|x64.Build.0 = Release|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|x64.ActiveCfg = Debug|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|x64.Build.0 = Debug|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.Build.0 = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|x64.ActiveCfg = Release|x64
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|x64.Build.0 = Release|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.Build.0 = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|x64.ActiveCfg = Debug|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|x64.Build.0 = Debug|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.ActiveCfg = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.Build.0 = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|x64.ActiveCfg = Release|x64
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|x64.Build.0 = Release|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.Build.0 = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|x64.ActiveCfg = Debug|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|x64.Build.0 = Debug|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.ActiveCfg = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.Build.0 = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|x64.ActiveCfg = Release|x64
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|x64.Build.0 = Release|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.Build.0 = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|x64.ActiveCfg = Debug|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|x64.Build.0 = Debug|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.ActiveCfg = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.Build.0 = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|x64.ActiveCfg = Release|x64
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|x64.Build.0 = Release|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.Build.0 = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|x64.ActiveCfg = Debug|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|x64.Build.0 = Debug|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.ActiveCfg = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.Build.0 = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|x64.ActiveCfg = Release|x64
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|x64.Build.0 = Release|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.Build.0 = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|x64.ActiveCfg = Debug|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|x64.Build.0 = Debug|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.ActiveCfg = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.Build.0 = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|x64.ActiveCfg = Release|x64
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|x64.Build.0 = Release|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.Build.0 = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|x64.ActiveCfg = Debug|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|x64.Build.0 = Debug|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.ActiveCfg = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.Build.0 = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|x64.ActiveCfg = Release|x64
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|x64.Build.0 = Release|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.Build.0 = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|x64.ActiveCfg = Debug|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|x64.Build.0 = Debug|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.ActiveCfg = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.Build.0 = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|x64.ActiveCfg = Release|x64
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|x64.Build.0 = Release|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.Build.0 = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|x64.ActiveCfg = Debug|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|x64.Build.0 = Debug|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.ActiveCfg = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.Build.0 = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|x64.ActiveCfg = Release|x64
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|x64.Build.0 = Release|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.Build.0 = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|x64.ActiveCfg = Debug|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|x64.Build.0 = Debug|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.ActiveCfg = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.Build.0 = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|x64.ActiveCfg = Release|x64
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|x64.Build.0 = Release|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.Build.0 = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|x64.ActiveCfg = Debug|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|x64.Build.0 = Debug|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.ActiveCfg = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.Build.0 = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|x64.ActiveCfg = Release|x64
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|x64.Build.0 = Release|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.Build.0 = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|x64.ActiveCfg = Debug|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|x64.Build.0 = Debug|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.ActiveCfg = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.Build.0 = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|x64.ActiveCfg = Release|x64
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|x64.Build.0 = Release|x64
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|x64.ActiveCfg = Debug|x64
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|Win32.ActiveCfg = Release|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|x64.ActiveCfg = Release|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.Build.0 = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|x64.ActiveCfg = Debug|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|x64.Build.0 = Debug|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.ActiveCfg = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.Build.0 = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|x64.ActiveCfg = Release|x64
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|x64.Build.0 = Release|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.Build.0 = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|x64.ActiveCfg = Debug|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|x64.Build.0 = Debug|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.ActiveCfg = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.Build.0 = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|x64.ActiveCfg = Release|x64
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|x64.Build.0 = Release|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.Build.0 = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|x64.ActiveCfg = Debug|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|x64.Build.0 = Debug|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.ActiveCfg = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.Build.0 = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|x64.ActiveCfg = Release|x64
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|x64.Build.0 = Release|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.Build.0 = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|x64.ActiveCfg = Debug|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|x64.Build.0 = Debug|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.ActiveCfg = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.Build.0 = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|x64.ActiveCfg = Release|x64
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|x64.Build.0 = Release|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.Build.0 = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|x64.ActiveCfg = Debug|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|x64.Build.0 = Debug|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.ActiveCfg = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.Build.0 = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|x64.ActiveCfg = Release|x64
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|x64.Build.0 = Release|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.Build.0 = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|x64.ActiveCfg = Debug|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|x64.Build.0 = Debug|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.ActiveCfg = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.Build.0 = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|x64.ActiveCfg = Release|x64
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|x64.Build.0 = Release|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.Build.0 = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|x64.ActiveCfg = Debug|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|x64.Build.0 = Debug|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.ActiveCfg = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.Build.0 = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|x64.ActiveCfg = Release|x64
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|x64.Build.0 = Release|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.Build.0 = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|x64.ActiveCfg = Debug|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|x64.Build.0 = Debug|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.ActiveCfg = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.Build.0 = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|x64.ActiveCfg = Release|x64
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|x64.Build.0 = Release|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.ActiveCfg = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.Build.0 = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|x64.ActiveCfg = Debug|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|x64.Build.0 = Debug|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.ActiveCfg = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.Build.0 = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|x64.ActiveCfg = Release|x64
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|x64.Build.0 = Release|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.Build.0 = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|x64.ActiveCfg = Debug|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|x64.Build.0 = Debug|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.ActiveCfg = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.Build.0 = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|x64.ActiveCfg = Release|x64
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|x64.Build.0 = Release|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.Build.0 = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|x64.ActiveCfg = Debug|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|x64.Build.0 = Debug|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.ActiveCfg = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.Build.0 = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|x64.ActiveCfg = Release|x64
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|x64.Build.0 = Release|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.ActiveCfg = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.Build.0 = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|x64.ActiveCfg = Debug|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|x64.Build.0 = Debug|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.ActiveCfg = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.Build.0 = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|x64.ActiveCfg = Release|x64
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|x64.Build.0 = Release|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.Build.0 = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|x64.ActiveCfg = Debug|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|x64.Build.0 = Debug|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.ActiveCfg = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.Build.0 = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|x64.ActiveCfg = Release|x64
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|x64.Build.0 = Release|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.ActiveCfg = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.Build.0 = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|x64.ActiveCfg = Debug|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|x64.Build.0 = Debug|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.ActiveCfg = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.Build.0 = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|x64.ActiveCfg = Release|x64
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|x64.Build.0 = Release|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.Build.0 = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|x64.ActiveCfg = Debug|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|x64.Build.0 = Debug|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.ActiveCfg = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.Build.0 = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|x64.ActiveCfg = Release|x64
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|x64.Build.0 = Release|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.Build.0 = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|x64.ActiveCfg = Debug|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|x64.Build.0 = Debug|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.ActiveCfg = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.Build.0 = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|x64.ActiveCfg = Release|x64
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|x64.Build.0 = Release|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.Build.0 = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|x64.ActiveCfg = Debug|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|x64.Build.0 = Debug|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.ActiveCfg = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.Build.0 = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|x64.ActiveCfg = Release|x64
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|x64.Build.0 = Release|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.ActiveCfg = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.Build.0 = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|x64.ActiveCfg = Debug|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|x64.Build.0 = Debug|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.ActiveCfg = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.Build.0 = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|x64.ActiveCfg = Release|x64
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|x64.Build.0 = Release|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.Build.0 = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|x64.ActiveCfg = Debug|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|x64.Build.0 = Debug|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.ActiveCfg = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.Build.0 = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|x64.ActiveCfg = Release|x64
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|x64.Build.0 = Release|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.Build.0 = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|x64.ActiveCfg = Debug|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|x64.Build.0 = Debug|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.ActiveCfg = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.Build.0 = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|x64.ActiveCfg = Release|x64
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|x64.Build.0 = Release|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.Build.0 = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|x64.ActiveCfg = Debug|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|x64.Build.0 = Debug|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.ActiveCfg = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.Build.0 = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|x64.ActiveCfg = Release|x64
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|x64.Build.0 = Release|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.Build.0 = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|x64.ActiveCfg = Debug|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|x64.Build.0 = Debug|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.ActiveCfg = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.Build.0 = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|x64.ActiveCfg = Release|x64
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|x64.Build.0 = Release|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.Build.0 = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|x64.ActiveCfg = Debug|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|x64.Build.0 = Debug|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.ActiveCfg = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.Build.0 = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|x64.ActiveCfg = Release|x64
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|x64.Build.0 = Release|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.Build.0 = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|x64.ActiveCfg = Debug|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|x64.Build.0 = Debug|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.ActiveCfg = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.Build.0 = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|x64.ActiveCfg = Release|x64
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|x64.Build.0 = Release|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.Build.0 = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|x64.ActiveCfg = Debug|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|x64.Build.0 = Debug|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.ActiveCfg = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.Build.0 = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|x64.ActiveCfg = Release|x64
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|x64.Build.0 = Release|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.Build.0 = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|x64.ActiveCfg = Debug|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|x64.Build.0 = Debug|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.ActiveCfg = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.Build.0 = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|x64.ActiveCfg = Release|x64
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|x64.Build.0 = Release|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.Build.0 = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|x64.ActiveCfg = Debug|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|x64.Build.0 = Debug|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.ActiveCfg = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.Build.0 = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|x64.ActiveCfg = Release|x64
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|x64.Build.0 = Release|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.Build.0 = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|x64.ActiveCfg = Debug|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|x64.Build.0 = Debug|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.ActiveCfg = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.Build.0 = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|x64.ActiveCfg = Release|x64
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|x64.Build.0 = Release|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.Build.0 = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|x64.ActiveCfg = Debug|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|x64.Build.0 = Debug|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.ActiveCfg = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.Build.0 = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|x64.ActiveCfg = Release|x64
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|x64.Build.0 = Release|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.Build.0 = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|x64.ActiveCfg = Debug|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|x64.Build.0 = Debug|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.ActiveCfg = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.Build.0 = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|x64.ActiveCfg = Release|x64
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|x64.Build.0 = Release|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.Build.0 = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|x64.ActiveCfg = Debug|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|x64.Build.0 = Debug|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.ActiveCfg = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.Build.0 = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|x64.ActiveCfg = Release|x64
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|x64.Build.0 = Release|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.Build.0 = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|x64.ActiveCfg = Debug|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|x64.Build.0 = Debug|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.ActiveCfg = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.Build.0 = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|x64.ActiveCfg = Release|x64
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|x64.Build.0 = Release|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.Build.0 = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|x64.ActiveCfg = Debug|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|x64.Build.0 = Debug|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.ActiveCfg = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.Build.0 = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|x64.ActiveCfg = Release|x64
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|x64.Build.0 = Release|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.Build.0 = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|x64.ActiveCfg = Debug|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|x64.Build.0 = Debug|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.ActiveCfg = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.Build.0 = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|x64.ActiveCfg = Release|x64
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|x64.Build.0 = Release|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.Build.0 = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|x64.ActiveCfg = Debug|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|x64.Build.0 = Debug|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.ActiveCfg = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.Build.0 = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|x64.ActiveCfg = Release|x64
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|x64.Build.0 = Release|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.Build.0 = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|x64.ActiveCfg = Debug|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|x64.Build.0 = Debug|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.ActiveCfg = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.Build.0 = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|x64.ActiveCfg = Release|x64
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {46F3D788-C329-4384-A4E7-47D971FAAEE9} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {35BA54D4-CF76-478A-A85C-DD4B3941CA09} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E54C14CE-33AF-4AA4-9864-2EAFC73DD813} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {0A43F290-F34B-4448-9A70-8EDAFC29893F} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {AF72E544-553A-4D1D-831B-8D7987BDF82C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {53D4C03D-7FBF-46C8-A07A-C44644420132} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {39BC0138-6B50-492C-8570-06458772282B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CD5DB834-234F-40A3-B551-DC895885E7B1} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {D5110077-CA24-494B-87D0-451BD124CF70} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {5805527C-6A77-40A9-8EF6-414B0269B50E} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {24015124-A47C-406F-850B-09E95DBBF573} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B9413124-1841-4373-BFE2-AE6C78F24731} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3F1C1C41-424E-4E23-8990-AEB55196376D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {33833932-6973-483B-B0D1-B3CC800BDFF5} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B1F2A8CE-764A-4D51-AABD-998D48783894} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {054C79A1-A607-496B-96CE-6F0BB404F754} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {DF3336E6-F783-4577-B014-75D0E0377B3E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {818553D4-0DEF-4BBE-A43A-45611DD84580} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4CE33021-55F3-46CC-A548-A151D07B24CF} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D83A0994-57A0-4C17-89DF-EDE84450C202} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {651B0E61-1047-4575-BE31-D9CB28062CBA} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {15D96388-C17C-4085-991F-9003E0CE9C6A} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {769E26C1-E337-4878-B604-8BE33323F5FF} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {26170083-8042-4E04-BFE3-B553A5A8D481} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {A7A46527-B5F9-4B92-9C46-2416E2432314} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {020991C0-9640-4097-B697-D514F08AA74C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {450C8334-BA46-43DB-81BA-7BEDBB346126} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {DEF1A42F-599B-4B1D-AB11-202E86670021} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {53F78E7F-3024-4999-BE70-F4A242357809} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {774783E0-2443-42DB-AA48-04730E59B396} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {432917E4-F042-47B2-BF43-0C376883A7E6} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ EndGlobalSection
+EndGlobal
diff --git a/2.3-1/scilab2c_f2c.sln b/2.3-1/scilab2c_f2c.sln
new file mode 100644
index 00000000..26029754
--- /dev/null
+++ b/2.3-1/scilab2c_f2c.sln
@@ -0,0 +1,1050 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auxiliaryFunctions", "auxiliaryFunctions", "{46F3D788-C329-4384-A4E7-47D971FAAEE9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elementaryFunctions", "elementaryFunctions", "{35BA54D4-CF76-478A-A85C-DD4B3941CA09}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "matrixOperations", "matrixOperations", "{BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "implicitList", "implicitList", "{E54C14CE-33AF-4AA4-9864-2EAFC73DD813}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "operations", "operations", "{370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "signalProcessing", "signalProcessing", "{0A43F290-F34B-4448-9A70-8EDAFC29893F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "statisticsFunctions", "statisticsFunctions", "{AF72E544-553A-4D1D-831B-8D7987BDF82C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "string", "string", "{E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "type", "type", "{53D4C03D-7FBF-46C8-A07A-C44644420132}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blasplus_f2c_DLL", "src\fortran\blas\blas_f\blasplus_DLL_f2c.vcxproj", "{78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lapack_f2c_DLL", "src\fortran\lapack\lapack_f\lapack_DLL_f2c.vcxproj", "{69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "type", "src\c\type\type.vcxproj", "{9B1BD750-1FEF-4D6B-9422-782D16181CEE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleComplex", "src\c\type\test_doubleComplex\test_doubleComplex.vcxproj", "{DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatComplex", "src\c\type\test_floatComplex\test_floatComplex.vcxproj", "{A6EBF2F9-C100-453F-A0D1-1649DCF557EC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "elementaryFunctions", "src\c\elementaryFunctions\elementaryFunctions.vcxproj", "{72B46833-B150-432D-B231-3E0ECD91E190}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testCplxAcos", "src\c\elementaryFunctions\acos\test_cplxacos\test_cplxacos.vcxproj", "{20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrealsacos", "src\c\elementaryFunctions\acos\test_realsacos\testrealsacos.vcxproj", "{0556427D-6D88-4A12-9EB3-7F551D6F1FA4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAcosh", "src\c\elementaryFunctions\acosh\test_doubleacosh\test_doubleacosh.vcxproj", "{5805527C-6A77-40A9-8EF6-414B0269B50E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "auxiliaryFunctions", "src\c\auxiliaryFunctions\auxiliaryFunctions.vcxproj", "{AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "matrixOperations", "src\c\matrixOperations\matrixOperations.vcxproj", "{FD335544-52BF-4736-A34E-77F591D158D5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "operations", "src\c\operations\operations.vcxproj", "{9B622A66-546A-4B33-B947-0A189D259D37}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "implicitList", "src\c\implicitList\implicitList.vcxproj", "{4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signalProcessing", "src\c\signalProcessing\signalProcessing.vcxproj", "{F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "statisticsFunctions", "src\c\statisticsFunctions\statisticsFunctions.vcxproj", "{E11ED064-3BF2-4F70-B66E-3223C737EC60}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string", "src\c\string\string.vcxproj", "{38A141F2-DF77-4032-A17C-0901EA1A7AF1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAbs", "src\c\auxiliaryFunctions\abs\test_FloatAbs\testFloatAbs.vcxproj", "{4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAbs", "src\c\auxiliaryFunctions\abs\test_DoubleAbs\testDoubleAbs.vcxproj", "{5A8D4B59-AC5D-4BA0-A26F-17E740F35042}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testConj", "src\c\auxiliaryFunctions\conj\test_Conj\testConj.vcxproj", "{CD5DB834-234F-40A3-B551-DC895885E7B1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind", "src\c\auxiliaryFunctions\find\test_Find\testFind.vcxproj", "{D5110077-CA24-494B-87D0-451BD124CF70}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind2d", "src\c\auxiliaryFunctions\find2d\test_Find2d\testFind2d.vcxproj", "{7361B40C-BCF5-442B-9116-7DB5AD7456B0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFrexp", "src\c\auxiliaryFunctions\frexp\test_frexp\frexp.vcxproj", "{FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsEmpty", "src\c\auxiliaryFunctions\isempty\test_IsEmpty\testIsEmpty.vcxproj", "{CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsNan", "src\c\auxiliaryFunctions\isnan\test_IsNan\testIsNan.vcxproj", "{18763BD3-2916-4D97-9633-5DAC1A635EDD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLength", "src\c\auxiliaryFunctions\length\test_Length\testLength.vcxproj", "{A4626E50-DDD7-44E1-83FC-05BF396AF250}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testPythag", "src\c\auxiliaryFunctions\pythag\test_Pythag\testPythag.vcxproj", "{10F6C306-FD81-45F3-936B-CDF8213A88E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRand", "src\c\auxiliaryFunctions\rand\test_Rand\testRand.vcxproj", "{31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSign", "src\c\auxiliaryFunctions\sign\test_Sign\testSign.vcxproj", "{EEBFAC09-8BD7-4254-9316-57C1907D827E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSize", "src\c\auxiliaryFunctions\size\test_Size\testSize.vcxproj", "{5D4B1991-549D-48ED-A5F6-CB17F15B72C8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testType", "src\c\auxiliaryFunctions\type\test_Type\testType.vcxproj", "{8EB05C91-9405-4AF4-88B4-A6B227409BFB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDisp", "src\c\string\disp\test_Disp\testDisp.vcxproj", "{432917E4-F042-47B2-BF43-0C376883A7E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testString", "src\c\string\string\test_String\testString.vcxproj", "{DF010F03-718D-4CEF-BD03-5E2C9C47613D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAcosh", "src\c\elementaryFunctions\acosh\test_FloatAcosh\testFloatAcosh.vcxproj", "{24015124-A47C-406F-850B-09E95DBBF573}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatImplicitList", "src\c\implicitList\test_FloatImplicitList\testFloatImplicitList.vcxproj", "{93CF027E-C286-4F61-A9D6-DE3C899C5E77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleImplicitList", "src\c\implicitList\test_DoubleImplicitList\testDoubleImplicitList.vcxproj", "{15D96388-C17C-4085-991F-9003E0CE9C6A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMultiplication", "src\c\operations\multiplication\test_Multiplication\testMultiplication.vcxproj", "{769E26C1-E337-4878-B604-8BE33323F5FF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSubtraction", "src\c\operations\subtraction\test_Subtraction\testSubtraction.vcxproj", "{F0DA7501-84CB-4641-9DDA-DA084736B7D4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testAddition", "src\c\operations\addition\test_Addition\testAddition.vcxproj", "{59F5B75C-7FCC-4B07-A5D0-C39D5757204B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLDivision", "src\c\operations\division\test_LDivision\testLDivision.vcxproj", "{7A424759-5962-4AE5-ABB6-0B94DDD21F61}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRDivision", "src\c\operations\division\test_RDivision\testRDivision.vcxproj", "{BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixConcatenation", "src\c\matrixOperations\cat\test_DoubleMatrixConcatenation\testDoubleMatrixConcatenation.vcxproj", "{7F36A592-B667-43A4-B3C3-66636F2DECB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixConcatenation", "src\c\matrixOperations\cat\test_FloatMatrixConcatenation\testFloatMatrixConcatenation.vcxproj", "{B9413124-1841-4373-BFE2-AE6C78F24731}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatChol", "src\c\matrixOperations\chol\test_FloatChol\testFloatChol.vcxproj", "{C5BA0B86-B432-4EF6-95DE-75C026994F4F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleChol", "src\c\matrixOperations\chol\test_DoubleChol\testDoubleChol.vcxproj", "{2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDeterm", "src\c\matrixOperations\determ\test_FloatDeterm\testFloatDeterm.vcxproj", "{204A5126-03B1-4E9D-8CC1-CCA9F64BD081}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDeterm", "src\c\matrixOperations\determ\test_DoubleDeterm\testDoubleDeterm.vcxproj", "{7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDist", "src\c\matrixOperations\dist\test_FloatDist\testFloatDist.vcxproj", "{3902CF74-70D4-4FA4-AA53-71643B94BAB9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDist", "src\c\matrixOperations\determ\test_DoubleDist\testDoubleDist.vcxproj", "{3F1C1C41-424E-4E23-8990-AEB55196376D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixRDivision", "src\c\matrixOperations\division\test_MatrixRDivision\testMatrixRDivision.vcxproj", "{33833932-6973-483B-B0D1-B3CC800BDFF5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixLDivision", "src\c\matrixOperations\division\test_MatrixLDivision\testMatrixLDivision.vcxproj", "{B1F2A8CE-764A-4D51-AABD-998D48783894}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixExponential", "src\c\matrixOperations\expm\test_MatrixExponential\testMatrixExponential.vcxproj", "{1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixEye", "src\c\matrixOperations\eye\test_MatrixEye\testMatrixEye.vcxproj", "{4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFill", "src\c\matrixOperations\fill\test_FloatFill\testFloatFill.vcxproj", "{054C79A1-A607-496B-96CE-6F0BB404F754}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFill", "src\c\matrixOperations\fill\test_DoubleFill\testDoubleFill.vcxproj", "{903B0194-F1A9-4302-AC3D-7E88E0406E26}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\matrixOperations\hilbert\test_Hilbert\testHilbert.vcproj", "{F7747E9B-A57F-43D2-8C1F-1F77C670B406}"
+ ProjectSection(ProjectDependencies) = postProject
+ {FD335544-52BF-4736-A34E-77F591D158D5} = {FD335544-52BF-4736-A34E-77F591D158D5}
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE} = {9B1BD750-1FEF-4D6B-9422-782D16181CEE}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInfiniteNorm", "src\c\matrixOperations\infiniteNorm\test_MatrixInfiniteNorm\testMatrixInfiniteNorm.vcxproj", "{43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInversion", "src\c\matrixOperations\inversion\test_MatrixInversion\testMatrixInversion.vcxproj", "{44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testJmat", "src\c\matrixOperations\jmat\test_Jmat\testJmat.vcxproj", "{04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLogm", "src\c\matrixOperations\logm\test_FloatLogm\testFloatLogm.vcxproj", "{BAFD5FA4-3D99-48FF-BBFD-5017207870E7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLogm", "src\c\matrixOperations\logm\test_DoubleLogm\testDoubleLogm.vcxproj", "{DF3336E6-F783-4577-B014-75D0E0377B3E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMagnitude", "src\c\matrixOperations\magnitude\test_FloatMagnitude\testFloatMagnitude.vcxproj", "{1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMagnitude", "src\c\matrixOperations\magnitude\test_DoubleMagnitude\testDoubleMagnitude.vcxproj", "{818553D4-0DEF-4BBE-A43A-45611DD84580}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixMultiplication", "src\c\matrixOperations\multiplication\test_FloatMatrixMultiplication\testFloatMatrixMultiplication.vcxproj", "{4CE33021-55F3-46CC-A548-A151D07B24CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixMultiplication", "src\c\matrixOperations\multiplication\test_DoubleMatrixMultiplication\testDoubleMatrixMultiplication.vcxproj", "{C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixOnes", "src\c\matrixOperations\ones\test_MatrixOnes\testMatrixOnes.vcxproj", "{D21BD764-EEC6-4474-9D4B-808EF2217CC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoublePowm", "src\c\matrixOperations\powm\test_DoublePowm\testDoublePowm.vcxproj", "{D83A0994-57A0-4C17-89DF-EDE84450C202}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatPowm", "src\c\matrixOperations\powm\test_FloatPowm\testFloatPowm.vcxproj", "{8594ACB2-D3C8-4D3A-B905-794354A8A0CC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec", "src\c\matrixOperations\spec\test_FloatSpec\testFloatSpec.vcxproj", "{B7BEF8A2-3E42-4FA3-94A7-22618594057D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec", "src\c\matrixOperations\spec\test_DoubleSpec\testDoubleSpec.vcxproj", "{651B0E61-1047-4575-BE31-D9CB28062CBA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec2", "src\c\matrixOperations\spec2\test_FloatSpec2\testFloatSpec2.vcxproj", "{E20D0BC2-B28A-412C-9715-5B93B319A4A3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec2", "src\c\matrixOperations\spec2\test_DoubleSpec2\testDoubleSpec2.vcxproj", "{FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_FloatSquaredMagnitude\testFloatSquaredMagnitude.vcxproj", "{6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_DoubleSquaredMagnitude\testDoubleSquaredMagnitude.vcxproj", "{16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTrace", "src\c\matrixOperations\trace\test_MatrixTrace\testMatrixTrace.vcxproj", "{21E5E59A-7E4E-4F65-9042-9C67C713D51C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTranspose", "src\c\matrixOperations\transpose\test_MatrixTranspose\testMatrixTranspose.vcxproj", "{8D483B26-A264-4BA6-BB6A-36306BCFA8E3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixZeros", "src\c\matrixOperations\zeros\test_MatrixZeros\testMatrixZeros.vcxproj", "{D55BC043-1853-4E4C-A8A8-2756682E4B23}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RUN_TESTS", "RUN_TESTS\RUN_TESTS.vcxproj", "{39BC0138-6B50-492C-8570-06458772282B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMax", "src\c\statisticsFunctions\max\test_DoubleMax\testDoubleMax.vcxproj", "{020991C0-9640-4097-B697-D514F08AA74C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMax", "src\c\statisticsFunctions\max\test_FloatMax\testFloatMax.vcxproj", "{0E4EC2A2-BADC-48C8-AF56-D1437094887A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMean", "src\c\statisticsFunctions\mean\test_FloatMean\testFloatMean.vcxproj", "{ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMean", "src\c\statisticsFunctions\mean\test_DoubleMean\testDoubleMean.vcxproj", "{3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMin", "src\c\statisticsFunctions\min\test_DoubleMin\testDoubleMin.vcxproj", "{9678E693-3459-4D6F-9017-EA3E28A58AC7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMin", "src\c\statisticsFunctions\min\test_FloatMin\testFloatMin.vcxproj", "{0A156C36-89D5-485E-BB8E-C7536A1DA566}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatProd", "src\c\statisticsFunctions\prod\test_FloatProd\testFloatProd.vcxproj", "{B80645FE-03D0-4BC8-8DAE-032A58CF4E57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleProd", "src\c\statisticsFunctions\prod\test_DoubleProd\testDoubleProd.vcxproj", "{322F871E-3349-4993-BC87-CAFAA6B6F72C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSum", "src\c\statisticsFunctions\sum\test_FloatSum\testFloatSum.vcxproj", "{450C8334-BA46-43DB-81BA-7BEDBB346126}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSum", "src\c\statisticsFunctions\sum\test_DoubleSum\testDoubleSum.vcxproj", "{F2A81CDC-2581-481F-B63D-3D2079B264C2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVarianceNono", "src\c\statisticsFunctions\variance\test_FloatVarianceNono\testFloatVarianceNono.vcxproj", "{DEF1A42F-599B-4B1D-AB11-202E86670021}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVariance", "src\c\statisticsFunctions\variance\test_FloatVariance\testFloatVariance.vcxproj", "{53F78E7F-3024-4999-BE70-F4A242357809}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVarianceNono", "src\c\statisticsFunctions\variance\test_DoubleVarianceNono\testDoubleVarianceNono.vcxproj", "{CCD3F89C-A278-457D-BFD6-ADEEF4860E07}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVariance", "src\c\statisticsFunctions\variance\test_DoubleVariance\testDoubleVariance.vcxproj", "{774783E0-2443-42DB-AA48-04730E59B396}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv", "src\c\signalProcessing\conv\test_FloatConv\testFloatConv.vcxproj", "{5A0D9A72-FA85-41F8-A605-A2B31961B01C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv", "src\c\signalProcessing\conv\test_DoubleConv\testDoubleConv.vcxproj", "{0ED6E2D7-B50D-4A17-A34B-440A7307E747}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv2d", "src\c\signalProcessing\conv2d\test_DoubleConv2d\testDoubleConv2d.vcxproj", "{C46C7CDE-9D38-42E5-9DBA-3E7306033450}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv2d", "src\c\signalProcessing\conv2d\test_FloatConv2d\testFloatConv2d.vcxproj", "{26170083-8042-4E04-BFE3-B553A5A8D481}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatCrossCorr", "src\c\signalProcessing\crossCorr\test_FloatCrossCorr\testFloatCrossCorr.vcxproj", "{0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleCrossCorr", "src\c\signalProcessing\crossCorr\test_DoubleCrossCorr\testDoubleCrossCorr.vcxproj", "{9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatFft", "src\c\signalProcessing\fft\test_MatFft\testMatFft.vcxproj", "{A7A46527-B5F9-4B92-9C46-2416E2432314}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFft", "src\c\signalProcessing\fft\test_FloatFft\testFloatFft.vcxproj", "{EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFft", "src\c\signalProcessing\fft\test_DoubleFft\testDoubleFft.vcxproj", "{DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFftShift", "src\c\signalProcessing\fftshift\test_DoubleFftShift\testDoubleFftShift.vcxproj", "{1EA7E165-A87C-49EA-90CB-2AECD5FED605}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFftShift", "src\c\signalProcessing\fftshift\test_FloatFftShift\testFloatFftShift.vcxproj", "{CF3E80F1-A0B6-465B-9285-11753E84B7F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\signalProcessing\hilbert\test_Hilbert\testHilbert.vcxproj", "{AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatIfft", "src\c\signalProcessing\ifft\test_MatIfft\testMatIfft.vcxproj", "{2F903F45-A053-47F8-BEA7-2490DEA6C9C5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatIfft", "src\c\signalProcessing\ifft\test_FloatIfft\testFloatIfft.vcxproj", "{3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleIfft", "src\c\signalProcessing\ifft\test_DoubleIfft\testDoubleIfft.vcxproj", "{633B36B2-AF28-4EF8-A236-021AA1ECF18A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLev", "src\c\signalProcessing\lev\test_FloatLev\testFloatLev.vcxproj", "{81145727-FB2B-4CD6-B5AC-3F2146F93D5F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLev", "src\c\signalProcessing\lev\test_DoubleLev\testDoubleLev.vcxproj", "{BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLevin", "src\c\signalProcessing\levin\test_FloatLevin\testFloatLevin.vcxproj", "{FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLevin", "src\c\signalProcessing\levin\test_DoubleLevin\testDoubleLevin.vcxproj", "{CAA51066-E3AC-4FE7-A330-D946A7AD6026}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLpc2cep", "src\c\signalProcessing\lpc2cep\test_DoubleLpc2cep\testDoubleLpc2cep.vcxproj", "{EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLpc2cep", "src\c\signalProcessing\lpc2cep\test_FloatLpc2cep\testFloatLpc2cep.vcxproj", "{F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.Build.0 = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.ActiveCfg = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.Build.0 = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.ActiveCfg = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.Build.0 = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.ActiveCfg = Release|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.Build.0 = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.ActiveCfg = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.Build.0 = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.ActiveCfg = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.Build.0 = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.ActiveCfg = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.Build.0 = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.ActiveCfg = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.Build.0 = Release|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.Build.0 = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|x64.ActiveCfg = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.ActiveCfg = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.Build.0 = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|x64.ActiveCfg = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.Build.0 = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|x64.ActiveCfg = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.ActiveCfg = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.Build.0 = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|x64.ActiveCfg = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.Build.0 = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|x64.ActiveCfg = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.ActiveCfg = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.Build.0 = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|x64.ActiveCfg = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.ActiveCfg = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.Build.0 = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|x64.ActiveCfg = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.ActiveCfg = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.Build.0 = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|x64.ActiveCfg = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.Build.0 = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|x64.ActiveCfg = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.ActiveCfg = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.Build.0 = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|x64.ActiveCfg = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.Build.0 = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|x64.ActiveCfg = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.ActiveCfg = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.Build.0 = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|x64.ActiveCfg = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.Build.0 = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|x64.ActiveCfg = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.ActiveCfg = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.Build.0 = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|x64.ActiveCfg = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.Build.0 = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|x64.ActiveCfg = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.ActiveCfg = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.Build.0 = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|x64.ActiveCfg = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.Build.0 = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|x64.ActiveCfg = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.ActiveCfg = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.Build.0 = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|x64.ActiveCfg = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.Build.0 = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|x64.ActiveCfg = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.ActiveCfg = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.Build.0 = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|x64.ActiveCfg = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.Build.0 = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|x64.ActiveCfg = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.ActiveCfg = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.Build.0 = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|x64.ActiveCfg = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|x64.ActiveCfg = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.Build.0 = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|x64.ActiveCfg = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.Build.0 = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|x64.ActiveCfg = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.ActiveCfg = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.Build.0 = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|x64.ActiveCfg = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.Build.0 = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|x64.ActiveCfg = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.ActiveCfg = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.Build.0 = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|x64.ActiveCfg = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.Build.0 = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|x64.ActiveCfg = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.ActiveCfg = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.Build.0 = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|x64.ActiveCfg = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.Build.0 = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|x64.ActiveCfg = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.ActiveCfg = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.Build.0 = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|x64.ActiveCfg = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.Build.0 = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|x64.ActiveCfg = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.ActiveCfg = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.Build.0 = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|x64.ActiveCfg = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|Win32.Build.0 = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|x64.ActiveCfg = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|Win32.ActiveCfg = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|Win32.Build.0 = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|x64.ActiveCfg = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|Win32.Build.0 = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|x64.ActiveCfg = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|Win32.ActiveCfg = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|Win32.Build.0 = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|x64.ActiveCfg = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.Build.0 = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|x64.ActiveCfg = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.ActiveCfg = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.Build.0 = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|x64.ActiveCfg = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.Build.0 = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|x64.ActiveCfg = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.ActiveCfg = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.Build.0 = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|x64.ActiveCfg = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.Build.0 = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|x64.ActiveCfg = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.ActiveCfg = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.Build.0 = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|x64.ActiveCfg = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.Build.0 = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|x64.ActiveCfg = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.ActiveCfg = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.Build.0 = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|x64.ActiveCfg = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.Build.0 = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|x64.ActiveCfg = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.ActiveCfg = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.Build.0 = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|x64.ActiveCfg = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.Build.0 = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|x64.ActiveCfg = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.ActiveCfg = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.Build.0 = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|x64.ActiveCfg = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.Build.0 = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|x64.ActiveCfg = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.ActiveCfg = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.Build.0 = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|x64.ActiveCfg = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|Win32.Build.0 = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|x64.ActiveCfg = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|Win32.ActiveCfg = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|Win32.Build.0 = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|x64.ActiveCfg = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.Build.0 = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|x64.ActiveCfg = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.ActiveCfg = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.Build.0 = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|x64.ActiveCfg = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.Build.0 = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|x64.ActiveCfg = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.ActiveCfg = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.Build.0 = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|x64.ActiveCfg = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.Build.0 = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|x64.ActiveCfg = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.ActiveCfg = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.Build.0 = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|x64.ActiveCfg = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.ActiveCfg = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.Build.0 = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|x64.ActiveCfg = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.ActiveCfg = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.Build.0 = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|x64.ActiveCfg = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.Build.0 = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|x64.ActiveCfg = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.ActiveCfg = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.Build.0 = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|x64.ActiveCfg = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.Build.0 = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|x64.ActiveCfg = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.ActiveCfg = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.Build.0 = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|x64.ActiveCfg = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.Build.0 = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|x64.ActiveCfg = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.ActiveCfg = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.Build.0 = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|x64.ActiveCfg = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.Build.0 = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|x64.ActiveCfg = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.ActiveCfg = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.Build.0 = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|x64.ActiveCfg = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.Build.0 = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|x64.ActiveCfg = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.ActiveCfg = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.Build.0 = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|x64.ActiveCfg = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.Build.0 = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|x64.ActiveCfg = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.ActiveCfg = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.Build.0 = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|x64.ActiveCfg = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.Build.0 = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|x64.ActiveCfg = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.ActiveCfg = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.Build.0 = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|x64.ActiveCfg = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.Build.0 = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|x64.ActiveCfg = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.ActiveCfg = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.Build.0 = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|x64.ActiveCfg = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.Build.0 = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|x64.ActiveCfg = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.ActiveCfg = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.Build.0 = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|x64.ActiveCfg = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.Build.0 = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|x64.ActiveCfg = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.ActiveCfg = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.Build.0 = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|x64.ActiveCfg = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.Build.0 = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|x64.ActiveCfg = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.ActiveCfg = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.Build.0 = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|x64.ActiveCfg = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.ActiveCfg = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.Build.0 = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|x64.ActiveCfg = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.ActiveCfg = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.Build.0 = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|x64.ActiveCfg = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.Build.0 = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|x64.ActiveCfg = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.ActiveCfg = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.Build.0 = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|x64.ActiveCfg = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.Build.0 = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|x64.ActiveCfg = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.ActiveCfg = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.Build.0 = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|x64.ActiveCfg = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.Build.0 = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|x64.ActiveCfg = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.ActiveCfg = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.Build.0 = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|x64.ActiveCfg = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.Build.0 = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|x64.ActiveCfg = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.ActiveCfg = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.Build.0 = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|x64.ActiveCfg = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.Build.0 = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|x64.ActiveCfg = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.ActiveCfg = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.Build.0 = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|x64.ActiveCfg = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.Build.0 = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|x64.ActiveCfg = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.ActiveCfg = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.Build.0 = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|x64.ActiveCfg = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.Build.0 = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|x64.ActiveCfg = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.ActiveCfg = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.Build.0 = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|x64.ActiveCfg = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.ActiveCfg = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.Build.0 = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|x64.ActiveCfg = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.ActiveCfg = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.Build.0 = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|x64.ActiveCfg = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.ActiveCfg = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.Build.0 = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|x64.ActiveCfg = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.ActiveCfg = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.Build.0 = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|x64.ActiveCfg = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.Build.0 = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|x64.ActiveCfg = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.ActiveCfg = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.Build.0 = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|x64.ActiveCfg = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.Build.0 = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|x64.ActiveCfg = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.ActiveCfg = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.Build.0 = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|x64.ActiveCfg = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.Build.0 = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|x64.ActiveCfg = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.ActiveCfg = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.Build.0 = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|x64.ActiveCfg = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.Build.0 = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|x64.ActiveCfg = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.ActiveCfg = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.Build.0 = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|x64.ActiveCfg = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.Build.0 = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|x64.ActiveCfg = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.ActiveCfg = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.Build.0 = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|x64.ActiveCfg = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.Build.0 = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|x64.ActiveCfg = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.ActiveCfg = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.Build.0 = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|x64.ActiveCfg = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.Build.0 = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|x64.ActiveCfg = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.ActiveCfg = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.Build.0 = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|x64.ActiveCfg = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.ActiveCfg = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.Build.0 = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|x64.ActiveCfg = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.ActiveCfg = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.Build.0 = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|x64.ActiveCfg = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.Build.0 = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|x64.ActiveCfg = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.ActiveCfg = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.Build.0 = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|x64.ActiveCfg = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.Build.0 = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|x64.ActiveCfg = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.ActiveCfg = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.Build.0 = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|x64.ActiveCfg = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|x64.ActiveCfg = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.Build.0 = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|x64.ActiveCfg = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.Build.0 = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|x64.ActiveCfg = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.ActiveCfg = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.Build.0 = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|x64.ActiveCfg = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.Build.0 = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|x64.ActiveCfg = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.ActiveCfg = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.Build.0 = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|x64.ActiveCfg = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.Build.0 = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|x64.ActiveCfg = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.ActiveCfg = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.Build.0 = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|x64.ActiveCfg = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.Build.0 = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|x64.ActiveCfg = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.ActiveCfg = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.Build.0 = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|x64.ActiveCfg = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.Build.0 = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|x64.ActiveCfg = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.ActiveCfg = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.Build.0 = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|x64.ActiveCfg = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.Build.0 = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|x64.ActiveCfg = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.ActiveCfg = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.Build.0 = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|x64.ActiveCfg = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.Build.0 = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|x64.ActiveCfg = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.ActiveCfg = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.Build.0 = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|x64.ActiveCfg = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.Build.0 = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|x64.ActiveCfg = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.ActiveCfg = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.Build.0 = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|x64.ActiveCfg = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.Build.0 = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|x64.ActiveCfg = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.ActiveCfg = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.Build.0 = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|x64.ActiveCfg = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.Build.0 = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|x64.ActiveCfg = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.ActiveCfg = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.Build.0 = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|x64.ActiveCfg = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.Build.0 = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|x64.ActiveCfg = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.ActiveCfg = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.Build.0 = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|x64.ActiveCfg = Release|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|x64.ActiveCfg = Debug|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|Win32.ActiveCfg = Release|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|x64.ActiveCfg = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.Build.0 = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|x64.ActiveCfg = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.ActiveCfg = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.Build.0 = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|x64.ActiveCfg = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.Build.0 = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|x64.ActiveCfg = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.ActiveCfg = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.Build.0 = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|x64.ActiveCfg = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.Build.0 = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|x64.ActiveCfg = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.ActiveCfg = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.Build.0 = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|x64.ActiveCfg = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.Build.0 = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|x64.ActiveCfg = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.ActiveCfg = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.Build.0 = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|x64.ActiveCfg = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.Build.0 = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|x64.ActiveCfg = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.ActiveCfg = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.Build.0 = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|x64.ActiveCfg = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.Build.0 = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|x64.ActiveCfg = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.ActiveCfg = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.Build.0 = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|x64.ActiveCfg = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.Build.0 = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|x64.ActiveCfg = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.ActiveCfg = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.Build.0 = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|x64.ActiveCfg = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.Build.0 = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|x64.ActiveCfg = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.ActiveCfg = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.Build.0 = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|x64.ActiveCfg = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.ActiveCfg = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.Build.0 = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|x64.ActiveCfg = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.ActiveCfg = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.Build.0 = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|x64.ActiveCfg = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.Build.0 = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|x64.ActiveCfg = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.ActiveCfg = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.Build.0 = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|x64.ActiveCfg = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.Build.0 = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|x64.ActiveCfg = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.ActiveCfg = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.Build.0 = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|x64.ActiveCfg = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.ActiveCfg = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.Build.0 = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|x64.ActiveCfg = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.ActiveCfg = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.Build.0 = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|x64.ActiveCfg = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.Build.0 = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|x64.ActiveCfg = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.ActiveCfg = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.Build.0 = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|x64.ActiveCfg = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.ActiveCfg = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.Build.0 = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|x64.ActiveCfg = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.ActiveCfg = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.Build.0 = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|x64.ActiveCfg = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.Build.0 = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|x64.ActiveCfg = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.ActiveCfg = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.Build.0 = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|x64.ActiveCfg = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.Build.0 = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|x64.ActiveCfg = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.ActiveCfg = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.Build.0 = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|x64.ActiveCfg = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.Build.0 = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|x64.ActiveCfg = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.ActiveCfg = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.Build.0 = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|x64.ActiveCfg = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.ActiveCfg = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.Build.0 = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|x64.ActiveCfg = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.ActiveCfg = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.Build.0 = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|x64.ActiveCfg = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.Build.0 = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|x64.ActiveCfg = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.ActiveCfg = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.Build.0 = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|x64.ActiveCfg = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.Build.0 = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|x64.ActiveCfg = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.ActiveCfg = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.Build.0 = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|x64.ActiveCfg = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.Build.0 = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|x64.ActiveCfg = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.ActiveCfg = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.Build.0 = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|x64.ActiveCfg = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.Build.0 = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|x64.ActiveCfg = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.ActiveCfg = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.Build.0 = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|x64.ActiveCfg = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.Build.0 = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|x64.ActiveCfg = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.ActiveCfg = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.Build.0 = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|x64.ActiveCfg = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.Build.0 = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|x64.ActiveCfg = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.ActiveCfg = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.Build.0 = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|x64.ActiveCfg = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.Build.0 = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|x64.ActiveCfg = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.ActiveCfg = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.Build.0 = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|x64.ActiveCfg = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.Build.0 = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|x64.ActiveCfg = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.ActiveCfg = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.Build.0 = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|x64.ActiveCfg = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.Build.0 = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|x64.ActiveCfg = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.ActiveCfg = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.Build.0 = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|x64.ActiveCfg = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.Build.0 = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|x64.ActiveCfg = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.ActiveCfg = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.Build.0 = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|x64.ActiveCfg = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.Build.0 = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|x64.ActiveCfg = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.ActiveCfg = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.Build.0 = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|x64.ActiveCfg = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.Build.0 = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|x64.ActiveCfg = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.ActiveCfg = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.Build.0 = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|x64.ActiveCfg = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.Build.0 = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|x64.ActiveCfg = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.ActiveCfg = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.Build.0 = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|x64.ActiveCfg = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.Build.0 = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|x64.ActiveCfg = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.ActiveCfg = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.Build.0 = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|x64.ActiveCfg = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.Build.0 = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|x64.ActiveCfg = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.ActiveCfg = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.Build.0 = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|x64.ActiveCfg = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.Build.0 = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|x64.ActiveCfg = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.ActiveCfg = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.Build.0 = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|x64.ActiveCfg = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.Build.0 = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|x64.ActiveCfg = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.ActiveCfg = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.Build.0 = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|x64.ActiveCfg = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {46F3D788-C329-4384-A4E7-47D971FAAEE9} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {35BA54D4-CF76-478A-A85C-DD4B3941CA09} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E54C14CE-33AF-4AA4-9864-2EAFC73DD813} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {0A43F290-F34B-4448-9A70-8EDAFC29893F} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {AF72E544-553A-4D1D-831B-8D7987BDF82C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {53D4C03D-7FBF-46C8-A07A-C44644420132} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {39BC0138-6B50-492C-8570-06458772282B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CD5DB834-234F-40A3-B551-DC895885E7B1} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {D5110077-CA24-494B-87D0-451BD124CF70} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {5805527C-6A77-40A9-8EF6-414B0269B50E} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {24015124-A47C-406F-850B-09E95DBBF573} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B9413124-1841-4373-BFE2-AE6C78F24731} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3F1C1C41-424E-4E23-8990-AEB55196376D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {33833932-6973-483B-B0D1-B3CC800BDFF5} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B1F2A8CE-764A-4D51-AABD-998D48783894} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {054C79A1-A607-496B-96CE-6F0BB404F754} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {DF3336E6-F783-4577-B014-75D0E0377B3E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {818553D4-0DEF-4BBE-A43A-45611DD84580} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4CE33021-55F3-46CC-A548-A151D07B24CF} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D83A0994-57A0-4C17-89DF-EDE84450C202} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {651B0E61-1047-4575-BE31-D9CB28062CBA} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {15D96388-C17C-4085-991F-9003E0CE9C6A} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {769E26C1-E337-4878-B604-8BE33323F5FF} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {26170083-8042-4E04-BFE3-B553A5A8D481} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {A7A46527-B5F9-4B92-9C46-2416E2432314} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {020991C0-9640-4097-B697-D514F08AA74C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {450C8334-BA46-43DB-81BA-7BEDBB346126} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {DEF1A42F-599B-4B1D-AB11-202E86670021} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {53F78E7F-3024-4999-BE70-F4A242357809} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {774783E0-2443-42DB-AA48-04730E59B396} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {432917E4-F042-47B2-BF43-0C376883A7E6} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ EndGlobalSection
+EndGlobal
diff --git a/2.3-1/scilab2c_f2c.sln.txt b/2.3-1/scilab2c_f2c.sln.txt
new file mode 100644
index 00000000..26029754
--- /dev/null
+++ b/2.3-1/scilab2c_f2c.sln.txt
@@ -0,0 +1,1050 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auxiliaryFunctions", "auxiliaryFunctions", "{46F3D788-C329-4384-A4E7-47D971FAAEE9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elementaryFunctions", "elementaryFunctions", "{35BA54D4-CF76-478A-A85C-DD4B3941CA09}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "matrixOperations", "matrixOperations", "{BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "implicitList", "implicitList", "{E54C14CE-33AF-4AA4-9864-2EAFC73DD813}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "operations", "operations", "{370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "signalProcessing", "signalProcessing", "{0A43F290-F34B-4448-9A70-8EDAFC29893F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "statisticsFunctions", "statisticsFunctions", "{AF72E544-553A-4D1D-831B-8D7987BDF82C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "string", "string", "{E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "type", "type", "{53D4C03D-7FBF-46C8-A07A-C44644420132}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blasplus_f2c_DLL", "src\fortran\blas\blas_f\blasplus_DLL_f2c.vcxproj", "{78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lapack_f2c_DLL", "src\fortran\lapack\lapack_f\lapack_DLL_f2c.vcxproj", "{69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "type", "src\c\type\type.vcxproj", "{9B1BD750-1FEF-4D6B-9422-782D16181CEE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleComplex", "src\c\type\test_doubleComplex\test_doubleComplex.vcxproj", "{DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatComplex", "src\c\type\test_floatComplex\test_floatComplex.vcxproj", "{A6EBF2F9-C100-453F-A0D1-1649DCF557EC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "elementaryFunctions", "src\c\elementaryFunctions\elementaryFunctions.vcxproj", "{72B46833-B150-432D-B231-3E0ECD91E190}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testCplxAcos", "src\c\elementaryFunctions\acos\test_cplxacos\test_cplxacos.vcxproj", "{20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrealsacos", "src\c\elementaryFunctions\acos\test_realsacos\testrealsacos.vcxproj", "{0556427D-6D88-4A12-9EB3-7F551D6F1FA4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAcosh", "src\c\elementaryFunctions\acosh\test_doubleacosh\test_doubleacosh.vcxproj", "{5805527C-6A77-40A9-8EF6-414B0269B50E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "auxiliaryFunctions", "src\c\auxiliaryFunctions\auxiliaryFunctions.vcxproj", "{AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "matrixOperations", "src\c\matrixOperations\matrixOperations.vcxproj", "{FD335544-52BF-4736-A34E-77F591D158D5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "operations", "src\c\operations\operations.vcxproj", "{9B622A66-546A-4B33-B947-0A189D259D37}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "implicitList", "src\c\implicitList\implicitList.vcxproj", "{4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signalProcessing", "src\c\signalProcessing\signalProcessing.vcxproj", "{F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "statisticsFunctions", "src\c\statisticsFunctions\statisticsFunctions.vcxproj", "{E11ED064-3BF2-4F70-B66E-3223C737EC60}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string", "src\c\string\string.vcxproj", "{38A141F2-DF77-4032-A17C-0901EA1A7AF1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAbs", "src\c\auxiliaryFunctions\abs\test_FloatAbs\testFloatAbs.vcxproj", "{4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleAbs", "src\c\auxiliaryFunctions\abs\test_DoubleAbs\testDoubleAbs.vcxproj", "{5A8D4B59-AC5D-4BA0-A26F-17E740F35042}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testConj", "src\c\auxiliaryFunctions\conj\test_Conj\testConj.vcxproj", "{CD5DB834-234F-40A3-B551-DC895885E7B1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind", "src\c\auxiliaryFunctions\find\test_Find\testFind.vcxproj", "{D5110077-CA24-494B-87D0-451BD124CF70}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFind2d", "src\c\auxiliaryFunctions\find2d\test_Find2d\testFind2d.vcxproj", "{7361B40C-BCF5-442B-9116-7DB5AD7456B0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFrexp", "src\c\auxiliaryFunctions\frexp\test_frexp\frexp.vcxproj", "{FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsEmpty", "src\c\auxiliaryFunctions\isempty\test_IsEmpty\testIsEmpty.vcxproj", "{CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testIsNan", "src\c\auxiliaryFunctions\isnan\test_IsNan\testIsNan.vcxproj", "{18763BD3-2916-4D97-9633-5DAC1A635EDD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLength", "src\c\auxiliaryFunctions\length\test_Length\testLength.vcxproj", "{A4626E50-DDD7-44E1-83FC-05BF396AF250}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testPythag", "src\c\auxiliaryFunctions\pythag\test_Pythag\testPythag.vcxproj", "{10F6C306-FD81-45F3-936B-CDF8213A88E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRand", "src\c\auxiliaryFunctions\rand\test_Rand\testRand.vcxproj", "{31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSign", "src\c\auxiliaryFunctions\sign\test_Sign\testSign.vcxproj", "{EEBFAC09-8BD7-4254-9316-57C1907D827E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSize", "src\c\auxiliaryFunctions\size\test_Size\testSize.vcxproj", "{5D4B1991-549D-48ED-A5F6-CB17F15B72C8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testType", "src\c\auxiliaryFunctions\type\test_Type\testType.vcxproj", "{8EB05C91-9405-4AF4-88B4-A6B227409BFB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDisp", "src\c\string\disp\test_Disp\testDisp.vcxproj", "{432917E4-F042-47B2-BF43-0C376883A7E6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testString", "src\c\string\string\test_String\testString.vcxproj", "{DF010F03-718D-4CEF-BD03-5E2C9C47613D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatAcosh", "src\c\elementaryFunctions\acosh\test_FloatAcosh\testFloatAcosh.vcxproj", "{24015124-A47C-406F-850B-09E95DBBF573}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatImplicitList", "src\c\implicitList\test_FloatImplicitList\testFloatImplicitList.vcxproj", "{93CF027E-C286-4F61-A9D6-DE3C899C5E77}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleImplicitList", "src\c\implicitList\test_DoubleImplicitList\testDoubleImplicitList.vcxproj", "{15D96388-C17C-4085-991F-9003E0CE9C6A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMultiplication", "src\c\operations\multiplication\test_Multiplication\testMultiplication.vcxproj", "{769E26C1-E337-4878-B604-8BE33323F5FF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testSubtraction", "src\c\operations\subtraction\test_Subtraction\testSubtraction.vcxproj", "{F0DA7501-84CB-4641-9DDA-DA084736B7D4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testAddition", "src\c\operations\addition\test_Addition\testAddition.vcxproj", "{59F5B75C-7FCC-4B07-A5D0-C39D5757204B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testLDivision", "src\c\operations\division\test_LDivision\testLDivision.vcxproj", "{7A424759-5962-4AE5-ABB6-0B94DDD21F61}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRDivision", "src\c\operations\division\test_RDivision\testRDivision.vcxproj", "{BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixConcatenation", "src\c\matrixOperations\cat\test_DoubleMatrixConcatenation\testDoubleMatrixConcatenation.vcxproj", "{7F36A592-B667-43A4-B3C3-66636F2DECB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixConcatenation", "src\c\matrixOperations\cat\test_FloatMatrixConcatenation\testFloatMatrixConcatenation.vcxproj", "{B9413124-1841-4373-BFE2-AE6C78F24731}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatChol", "src\c\matrixOperations\chol\test_FloatChol\testFloatChol.vcxproj", "{C5BA0B86-B432-4EF6-95DE-75C026994F4F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleChol", "src\c\matrixOperations\chol\test_DoubleChol\testDoubleChol.vcxproj", "{2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDeterm", "src\c\matrixOperations\determ\test_FloatDeterm\testFloatDeterm.vcxproj", "{204A5126-03B1-4E9D-8CC1-CCA9F64BD081}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDeterm", "src\c\matrixOperations\determ\test_DoubleDeterm\testDoubleDeterm.vcxproj", "{7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatDist", "src\c\matrixOperations\dist\test_FloatDist\testFloatDist.vcxproj", "{3902CF74-70D4-4FA4-AA53-71643B94BAB9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleDist", "src\c\matrixOperations\determ\test_DoubleDist\testDoubleDist.vcxproj", "{3F1C1C41-424E-4E23-8990-AEB55196376D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixRDivision", "src\c\matrixOperations\division\test_MatrixRDivision\testMatrixRDivision.vcxproj", "{33833932-6973-483B-B0D1-B3CC800BDFF5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixLDivision", "src\c\matrixOperations\division\test_MatrixLDivision\testMatrixLDivision.vcxproj", "{B1F2A8CE-764A-4D51-AABD-998D48783894}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixExponential", "src\c\matrixOperations\expm\test_MatrixExponential\testMatrixExponential.vcxproj", "{1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixEye", "src\c\matrixOperations\eye\test_MatrixEye\testMatrixEye.vcxproj", "{4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFill", "src\c\matrixOperations\fill\test_FloatFill\testFloatFill.vcxproj", "{054C79A1-A607-496B-96CE-6F0BB404F754}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFill", "src\c\matrixOperations\fill\test_DoubleFill\testDoubleFill.vcxproj", "{903B0194-F1A9-4302-AC3D-7E88E0406E26}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\matrixOperations\hilbert\test_Hilbert\testHilbert.vcproj", "{F7747E9B-A57F-43D2-8C1F-1F77C670B406}"
+ ProjectSection(ProjectDependencies) = postProject
+ {FD335544-52BF-4736-A34E-77F591D158D5} = {FD335544-52BF-4736-A34E-77F591D158D5}
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE} = {9B1BD750-1FEF-4D6B-9422-782D16181CEE}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInfiniteNorm", "src\c\matrixOperations\infiniteNorm\test_MatrixInfiniteNorm\testMatrixInfiniteNorm.vcxproj", "{43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixInversion", "src\c\matrixOperations\inversion\test_MatrixInversion\testMatrixInversion.vcxproj", "{44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testJmat", "src\c\matrixOperations\jmat\test_Jmat\testJmat.vcxproj", "{04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLogm", "src\c\matrixOperations\logm\test_FloatLogm\testFloatLogm.vcxproj", "{BAFD5FA4-3D99-48FF-BBFD-5017207870E7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLogm", "src\c\matrixOperations\logm\test_DoubleLogm\testDoubleLogm.vcxproj", "{DF3336E6-F783-4577-B014-75D0E0377B3E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMagnitude", "src\c\matrixOperations\magnitude\test_FloatMagnitude\testFloatMagnitude.vcxproj", "{1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMagnitude", "src\c\matrixOperations\magnitude\test_DoubleMagnitude\testDoubleMagnitude.vcxproj", "{818553D4-0DEF-4BBE-A43A-45611DD84580}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMatrixMultiplication", "src\c\matrixOperations\multiplication\test_FloatMatrixMultiplication\testFloatMatrixMultiplication.vcxproj", "{4CE33021-55F3-46CC-A548-A151D07B24CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMatrixMultiplication", "src\c\matrixOperations\multiplication\test_DoubleMatrixMultiplication\testDoubleMatrixMultiplication.vcxproj", "{C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixOnes", "src\c\matrixOperations\ones\test_MatrixOnes\testMatrixOnes.vcxproj", "{D21BD764-EEC6-4474-9D4B-808EF2217CC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoublePowm", "src\c\matrixOperations\powm\test_DoublePowm\testDoublePowm.vcxproj", "{D83A0994-57A0-4C17-89DF-EDE84450C202}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatPowm", "src\c\matrixOperations\powm\test_FloatPowm\testFloatPowm.vcxproj", "{8594ACB2-D3C8-4D3A-B905-794354A8A0CC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec", "src\c\matrixOperations\spec\test_FloatSpec\testFloatSpec.vcxproj", "{B7BEF8A2-3E42-4FA3-94A7-22618594057D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec", "src\c\matrixOperations\spec\test_DoubleSpec\testDoubleSpec.vcxproj", "{651B0E61-1047-4575-BE31-D9CB28062CBA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSpec2", "src\c\matrixOperations\spec2\test_FloatSpec2\testFloatSpec2.vcxproj", "{E20D0BC2-B28A-412C-9715-5B93B319A4A3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSpec2", "src\c\matrixOperations\spec2\test_DoubleSpec2\testDoubleSpec2.vcxproj", "{FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_FloatSquaredMagnitude\testFloatSquaredMagnitude.vcxproj", "{6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSquaredMagnitude", "src\c\matrixOperations\squaredMagnitude\test_DoubleSquaredMagnitude\testDoubleSquaredMagnitude.vcxproj", "{16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTrace", "src\c\matrixOperations\trace\test_MatrixTrace\testMatrixTrace.vcxproj", "{21E5E59A-7E4E-4F65-9042-9C67C713D51C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixTranspose", "src\c\matrixOperations\transpose\test_MatrixTranspose\testMatrixTranspose.vcxproj", "{8D483B26-A264-4BA6-BB6A-36306BCFA8E3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatrixZeros", "src\c\matrixOperations\zeros\test_MatrixZeros\testMatrixZeros.vcxproj", "{D55BC043-1853-4E4C-A8A8-2756682E4B23}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RUN_TESTS", "RUN_TESTS\RUN_TESTS.vcxproj", "{39BC0138-6B50-492C-8570-06458772282B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMax", "src\c\statisticsFunctions\max\test_DoubleMax\testDoubleMax.vcxproj", "{020991C0-9640-4097-B697-D514F08AA74C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMax", "src\c\statisticsFunctions\max\test_FloatMax\testFloatMax.vcxproj", "{0E4EC2A2-BADC-48C8-AF56-D1437094887A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMean", "src\c\statisticsFunctions\mean\test_FloatMean\testFloatMean.vcxproj", "{ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMean", "src\c\statisticsFunctions\mean\test_DoubleMean\testDoubleMean.vcxproj", "{3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleMin", "src\c\statisticsFunctions\min\test_DoubleMin\testDoubleMin.vcxproj", "{9678E693-3459-4D6F-9017-EA3E28A58AC7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatMin", "src\c\statisticsFunctions\min\test_FloatMin\testFloatMin.vcxproj", "{0A156C36-89D5-485E-BB8E-C7536A1DA566}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatProd", "src\c\statisticsFunctions\prod\test_FloatProd\testFloatProd.vcxproj", "{B80645FE-03D0-4BC8-8DAE-032A58CF4E57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleProd", "src\c\statisticsFunctions\prod\test_DoubleProd\testDoubleProd.vcxproj", "{322F871E-3349-4993-BC87-CAFAA6B6F72C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatSum", "src\c\statisticsFunctions\sum\test_FloatSum\testFloatSum.vcxproj", "{450C8334-BA46-43DB-81BA-7BEDBB346126}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleSum", "src\c\statisticsFunctions\sum\test_DoubleSum\testDoubleSum.vcxproj", "{F2A81CDC-2581-481F-B63D-3D2079B264C2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVarianceNono", "src\c\statisticsFunctions\variance\test_FloatVarianceNono\testFloatVarianceNono.vcxproj", "{DEF1A42F-599B-4B1D-AB11-202E86670021}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatVariance", "src\c\statisticsFunctions\variance\test_FloatVariance\testFloatVariance.vcxproj", "{53F78E7F-3024-4999-BE70-F4A242357809}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVarianceNono", "src\c\statisticsFunctions\variance\test_DoubleVarianceNono\testDoubleVarianceNono.vcxproj", "{CCD3F89C-A278-457D-BFD6-ADEEF4860E07}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleVariance", "src\c\statisticsFunctions\variance\test_DoubleVariance\testDoubleVariance.vcxproj", "{774783E0-2443-42DB-AA48-04730E59B396}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv", "src\c\signalProcessing\conv\test_FloatConv\testFloatConv.vcxproj", "{5A0D9A72-FA85-41F8-A605-A2B31961B01C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv", "src\c\signalProcessing\conv\test_DoubleConv\testDoubleConv.vcxproj", "{0ED6E2D7-B50D-4A17-A34B-440A7307E747}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleConv2d", "src\c\signalProcessing\conv2d\test_DoubleConv2d\testDoubleConv2d.vcxproj", "{C46C7CDE-9D38-42E5-9DBA-3E7306033450}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatConv2d", "src\c\signalProcessing\conv2d\test_FloatConv2d\testFloatConv2d.vcxproj", "{26170083-8042-4E04-BFE3-B553A5A8D481}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatCrossCorr", "src\c\signalProcessing\crossCorr\test_FloatCrossCorr\testFloatCrossCorr.vcxproj", "{0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleCrossCorr", "src\c\signalProcessing\crossCorr\test_DoubleCrossCorr\testDoubleCrossCorr.vcxproj", "{9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatFft", "src\c\signalProcessing\fft\test_MatFft\testMatFft.vcxproj", "{A7A46527-B5F9-4B92-9C46-2416E2432314}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFft", "src\c\signalProcessing\fft\test_FloatFft\testFloatFft.vcxproj", "{EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFft", "src\c\signalProcessing\fft\test_DoubleFft\testDoubleFft.vcxproj", "{DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleFftShift", "src\c\signalProcessing\fftshift\test_DoubleFftShift\testDoubleFftShift.vcxproj", "{1EA7E165-A87C-49EA-90CB-2AECD5FED605}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatFftShift", "src\c\signalProcessing\fftshift\test_FloatFftShift\testFloatFftShift.vcxproj", "{CF3E80F1-A0B6-465B-9285-11753E84B7F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testHilbert", "src\c\signalProcessing\hilbert\test_Hilbert\testHilbert.vcxproj", "{AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testMatIfft", "src\c\signalProcessing\ifft\test_MatIfft\testMatIfft.vcxproj", "{2F903F45-A053-47F8-BEA7-2490DEA6C9C5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatIfft", "src\c\signalProcessing\ifft\test_FloatIfft\testFloatIfft.vcxproj", "{3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleIfft", "src\c\signalProcessing\ifft\test_DoubleIfft\testDoubleIfft.vcxproj", "{633B36B2-AF28-4EF8-A236-021AA1ECF18A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLev", "src\c\signalProcessing\lev\test_FloatLev\testFloatLev.vcxproj", "{81145727-FB2B-4CD6-B5AC-3F2146F93D5F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLev", "src\c\signalProcessing\lev\test_DoubleLev\testDoubleLev.vcxproj", "{BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLevin", "src\c\signalProcessing\levin\test_FloatLevin\testFloatLevin.vcxproj", "{FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLevin", "src\c\signalProcessing\levin\test_DoubleLevin\testDoubleLevin.vcxproj", "{CAA51066-E3AC-4FE7-A330-D946A7AD6026}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testDoubleLpc2cep", "src\c\signalProcessing\lpc2cep\test_DoubleLpc2cep\testDoubleLpc2cep.vcxproj", "{EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testFloatLpc2cep", "src\c\signalProcessing\lpc2cep\test_FloatLpc2cep\testFloatLpc2cep.vcxproj", "{F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|Win32.Build.0 = Debug|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.ActiveCfg = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Debug|x64.Build.0 = Debug|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.ActiveCfg = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|Win32.Build.0 = Release|Win32
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.ActiveCfg = Release|x64
+ {78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}.Release|x64.Build.0 = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.ActiveCfg = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|Win32.Build.0 = Debug|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.ActiveCfg = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Debug|x64.Build.0 = Debug|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.ActiveCfg = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|Win32.Build.0 = Release|Win32
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.ActiveCfg = Release|x64
+ {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}.Release|x64.Build.0 = Release|x64
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|Win32.Build.0 = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Debug|x64.ActiveCfg = Debug|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.ActiveCfg = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|Win32.Build.0 = Release|Win32
+ {9B1BD750-1FEF-4D6B-9422-782D16181CEE}.Release|x64.ActiveCfg = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|Win32.Build.0 = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Debug|x64.ActiveCfg = Debug|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.ActiveCfg = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|Win32.Build.0 = Release|Win32
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}.Release|x64.ActiveCfg = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|Win32.Build.0 = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Debug|x64.ActiveCfg = Debug|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.ActiveCfg = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|Win32.Build.0 = Release|Win32
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC}.Release|x64.ActiveCfg = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.ActiveCfg = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|Win32.Build.0 = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Debug|x64.ActiveCfg = Debug|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.ActiveCfg = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|Win32.Build.0 = Release|Win32
+ {72B46833-B150-432D-B231-3E0ECD91E190}.Release|x64.ActiveCfg = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|Win32.Build.0 = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Debug|x64.ActiveCfg = Debug|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.ActiveCfg = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|Win32.Build.0 = Release|Win32
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}.Release|x64.ActiveCfg = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|Win32.Build.0 = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Debug|x64.ActiveCfg = Debug|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.ActiveCfg = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|Win32.Build.0 = Release|Win32
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4}.Release|x64.ActiveCfg = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|Win32.Build.0 = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Debug|x64.ActiveCfg = Debug|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.ActiveCfg = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|Win32.Build.0 = Release|Win32
+ {5805527C-6A77-40A9-8EF6-414B0269B50E}.Release|x64.ActiveCfg = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|Win32.Build.0 = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Debug|x64.ActiveCfg = Debug|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.ActiveCfg = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|Win32.Build.0 = Release|Win32
+ {AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}.Release|x64.ActiveCfg = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|Win32.Build.0 = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Debug|x64.ActiveCfg = Debug|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.ActiveCfg = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|Win32.Build.0 = Release|Win32
+ {FD335544-52BF-4736-A34E-77F591D158D5}.Release|x64.ActiveCfg = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|Win32.Build.0 = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Debug|x64.ActiveCfg = Debug|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.ActiveCfg = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|Win32.Build.0 = Release|Win32
+ {9B622A66-546A-4B33-B947-0A189D259D37}.Release|x64.ActiveCfg = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|Win32.Build.0 = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Debug|x64.ActiveCfg = Debug|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.ActiveCfg = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|Win32.Build.0 = Release|Win32
+ {4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}.Release|x64.ActiveCfg = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Debug|x64.ActiveCfg = Debug|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|Win32.Build.0 = Release|Win32
+ {F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}.Release|x64.ActiveCfg = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|Win32.Build.0 = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Debug|x64.ActiveCfg = Debug|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.ActiveCfg = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|Win32.Build.0 = Release|Win32
+ {E11ED064-3BF2-4F70-B66E-3223C737EC60}.Release|x64.ActiveCfg = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|Win32.Build.0 = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Debug|x64.ActiveCfg = Debug|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.ActiveCfg = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|Win32.Build.0 = Release|Win32
+ {38A141F2-DF77-4032-A17C-0901EA1A7AF1}.Release|x64.ActiveCfg = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|Win32.Build.0 = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Debug|x64.ActiveCfg = Debug|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.ActiveCfg = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|Win32.Build.0 = Release|Win32
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}.Release|x64.ActiveCfg = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|Win32.Build.0 = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Debug|x64.ActiveCfg = Debug|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.ActiveCfg = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|Win32.Build.0 = Release|Win32
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042}.Release|x64.ActiveCfg = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|Win32.Build.0 = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Debug|x64.ActiveCfg = Debug|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.ActiveCfg = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|Win32.Build.0 = Release|Win32
+ {CD5DB834-234F-40A3-B551-DC895885E7B1}.Release|x64.ActiveCfg = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|Win32.Build.0 = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Debug|x64.ActiveCfg = Debug|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|Win32.ActiveCfg = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|Win32.Build.0 = Release|Win32
+ {D5110077-CA24-494B-87D0-451BD124CF70}.Release|x64.ActiveCfg = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|Win32.Build.0 = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Debug|x64.ActiveCfg = Debug|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|Win32.ActiveCfg = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|Win32.Build.0 = Release|Win32
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0}.Release|x64.ActiveCfg = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|Win32.Build.0 = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Debug|x64.ActiveCfg = Debug|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.ActiveCfg = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|Win32.Build.0 = Release|Win32
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}.Release|x64.ActiveCfg = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|Win32.Build.0 = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Debug|x64.ActiveCfg = Debug|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.ActiveCfg = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|Win32.Build.0 = Release|Win32
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}.Release|x64.ActiveCfg = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|Win32.Build.0 = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Debug|x64.ActiveCfg = Debug|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.ActiveCfg = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|Win32.Build.0 = Release|Win32
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD}.Release|x64.ActiveCfg = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|Win32.Build.0 = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Debug|x64.ActiveCfg = Debug|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.ActiveCfg = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|Win32.Build.0 = Release|Win32
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250}.Release|x64.ActiveCfg = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|Win32.Build.0 = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Debug|x64.ActiveCfg = Debug|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.ActiveCfg = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|Win32.Build.0 = Release|Win32
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6}.Release|x64.ActiveCfg = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|Win32.Build.0 = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Debug|x64.ActiveCfg = Debug|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.ActiveCfg = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|Win32.Build.0 = Release|Win32
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}.Release|x64.ActiveCfg = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|Win32.Build.0 = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Debug|x64.ActiveCfg = Debug|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.ActiveCfg = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|Win32.Build.0 = Release|Win32
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E}.Release|x64.ActiveCfg = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|Win32.Build.0 = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Debug|x64.ActiveCfg = Debug|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|Win32.ActiveCfg = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|Win32.Build.0 = Release|Win32
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8}.Release|x64.ActiveCfg = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|Win32.Build.0 = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Debug|x64.ActiveCfg = Debug|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.ActiveCfg = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|Win32.Build.0 = Release|Win32
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB}.Release|x64.ActiveCfg = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|Win32.Build.0 = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Debug|x64.ActiveCfg = Debug|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.ActiveCfg = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|Win32.Build.0 = Release|Win32
+ {432917E4-F042-47B2-BF43-0C376883A7E6}.Release|x64.ActiveCfg = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|Win32.Build.0 = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Debug|x64.ActiveCfg = Debug|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.ActiveCfg = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|Win32.Build.0 = Release|Win32
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D}.Release|x64.ActiveCfg = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.ActiveCfg = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|Win32.Build.0 = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Debug|x64.ActiveCfg = Debug|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.ActiveCfg = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|Win32.Build.0 = Release|Win32
+ {24015124-A47C-406F-850B-09E95DBBF573}.Release|x64.ActiveCfg = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.ActiveCfg = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|Win32.Build.0 = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Debug|x64.ActiveCfg = Debug|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.ActiveCfg = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|Win32.Build.0 = Release|Win32
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77}.Release|x64.ActiveCfg = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|Win32.Build.0 = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Debug|x64.ActiveCfg = Debug|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.ActiveCfg = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|Win32.Build.0 = Release|Win32
+ {15D96388-C17C-4085-991F-9003E0CE9C6A}.Release|x64.ActiveCfg = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|Win32.Build.0 = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Debug|x64.ActiveCfg = Debug|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.ActiveCfg = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|Win32.Build.0 = Release|Win32
+ {769E26C1-E337-4878-B604-8BE33323F5FF}.Release|x64.ActiveCfg = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|Win32.Build.0 = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Debug|x64.ActiveCfg = Debug|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.ActiveCfg = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|Win32.Build.0 = Release|Win32
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4}.Release|x64.ActiveCfg = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|Win32.Build.0 = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Debug|x64.ActiveCfg = Debug|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.ActiveCfg = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|Win32.Build.0 = Release|Win32
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B}.Release|x64.ActiveCfg = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|Win32.Build.0 = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Debug|x64.ActiveCfg = Debug|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.ActiveCfg = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|Win32.Build.0 = Release|Win32
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61}.Release|x64.ActiveCfg = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|Win32.Build.0 = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Debug|x64.ActiveCfg = Debug|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.ActiveCfg = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|Win32.Build.0 = Release|Win32
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}.Release|x64.ActiveCfg = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|Win32.Build.0 = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Debug|x64.ActiveCfg = Debug|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.ActiveCfg = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|Win32.Build.0 = Release|Win32
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8}.Release|x64.ActiveCfg = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|Win32.Build.0 = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Debug|x64.ActiveCfg = Debug|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.ActiveCfg = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|Win32.Build.0 = Release|Win32
+ {B9413124-1841-4373-BFE2-AE6C78F24731}.Release|x64.ActiveCfg = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|Win32.Build.0 = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Debug|x64.ActiveCfg = Debug|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.ActiveCfg = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|Win32.Build.0 = Release|Win32
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F}.Release|x64.ActiveCfg = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|Win32.Build.0 = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Debug|x64.ActiveCfg = Debug|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.ActiveCfg = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|Win32.Build.0 = Release|Win32
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}.Release|x64.ActiveCfg = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.ActiveCfg = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|Win32.Build.0 = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Debug|x64.ActiveCfg = Debug|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.ActiveCfg = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|Win32.Build.0 = Release|Win32
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081}.Release|x64.ActiveCfg = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|Win32.Build.0 = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Debug|x64.ActiveCfg = Debug|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.ActiveCfg = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|Win32.Build.0 = Release|Win32
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}.Release|x64.ActiveCfg = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|Win32.Build.0 = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Debug|x64.ActiveCfg = Debug|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.ActiveCfg = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|Win32.Build.0 = Release|Win32
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9}.Release|x64.ActiveCfg = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|Win32.Build.0 = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Debug|x64.ActiveCfg = Debug|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.ActiveCfg = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|Win32.Build.0 = Release|Win32
+ {3F1C1C41-424E-4E23-8990-AEB55196376D}.Release|x64.ActiveCfg = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|Win32.Build.0 = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Debug|x64.ActiveCfg = Debug|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.ActiveCfg = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|Win32.Build.0 = Release|Win32
+ {33833932-6973-483B-B0D1-B3CC800BDFF5}.Release|x64.ActiveCfg = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|Win32.Build.0 = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Debug|x64.ActiveCfg = Debug|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.ActiveCfg = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|Win32.Build.0 = Release|Win32
+ {B1F2A8CE-764A-4D51-AABD-998D48783894}.Release|x64.ActiveCfg = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|Win32.Build.0 = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Debug|x64.ActiveCfg = Debug|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.ActiveCfg = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|Win32.Build.0 = Release|Win32
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}.Release|x64.ActiveCfg = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|Win32.Build.0 = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Debug|x64.ActiveCfg = Debug|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.ActiveCfg = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|Win32.Build.0 = Release|Win32
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}.Release|x64.ActiveCfg = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.ActiveCfg = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|Win32.Build.0 = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Debug|x64.ActiveCfg = Debug|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.ActiveCfg = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|Win32.Build.0 = Release|Win32
+ {054C79A1-A607-496B-96CE-6F0BB404F754}.Release|x64.ActiveCfg = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.ActiveCfg = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|Win32.Build.0 = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Debug|x64.ActiveCfg = Debug|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.ActiveCfg = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|Win32.Build.0 = Release|Win32
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26}.Release|x64.ActiveCfg = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|Win32.Build.0 = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Debug|x64.ActiveCfg = Debug|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.ActiveCfg = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|Win32.Build.0 = Release|Win32
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406}.Release|x64.ActiveCfg = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|Win32.Build.0 = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Debug|x64.ActiveCfg = Debug|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.ActiveCfg = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|Win32.Build.0 = Release|Win32
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}.Release|x64.ActiveCfg = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|Win32.Build.0 = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Debug|x64.ActiveCfg = Debug|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.ActiveCfg = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|Win32.Build.0 = Release|Win32
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}.Release|x64.ActiveCfg = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|Win32.Build.0 = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Debug|x64.ActiveCfg = Debug|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.ActiveCfg = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|Win32.Build.0 = Release|Win32
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}.Release|x64.ActiveCfg = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|Win32.Build.0 = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Debug|x64.ActiveCfg = Debug|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.ActiveCfg = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|Win32.Build.0 = Release|Win32
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7}.Release|x64.ActiveCfg = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|Win32.Build.0 = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Debug|x64.ActiveCfg = Debug|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.ActiveCfg = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|Win32.Build.0 = Release|Win32
+ {DF3336E6-F783-4577-B014-75D0E0377B3E}.Release|x64.ActiveCfg = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|Win32.Build.0 = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Debug|x64.ActiveCfg = Debug|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.ActiveCfg = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|Win32.Build.0 = Release|Win32
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}.Release|x64.ActiveCfg = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.ActiveCfg = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|Win32.Build.0 = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Debug|x64.ActiveCfg = Debug|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.ActiveCfg = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|Win32.Build.0 = Release|Win32
+ {818553D4-0DEF-4BBE-A43A-45611DD84580}.Release|x64.ActiveCfg = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|Win32.Build.0 = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Debug|x64.ActiveCfg = Debug|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.ActiveCfg = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|Win32.Build.0 = Release|Win32
+ {4CE33021-55F3-46CC-A548-A151D07B24CF}.Release|x64.ActiveCfg = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|Win32.Build.0 = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Debug|x64.ActiveCfg = Debug|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.ActiveCfg = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|Win32.Build.0 = Release|Win32
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}.Release|x64.ActiveCfg = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|Win32.Build.0 = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Debug|x64.ActiveCfg = Debug|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.ActiveCfg = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|Win32.Build.0 = Release|Win32
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4}.Release|x64.ActiveCfg = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|Win32.Build.0 = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Debug|x64.ActiveCfg = Debug|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.ActiveCfg = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|Win32.Build.0 = Release|Win32
+ {D83A0994-57A0-4C17-89DF-EDE84450C202}.Release|x64.ActiveCfg = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|Win32.Build.0 = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Debug|x64.ActiveCfg = Debug|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.ActiveCfg = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|Win32.Build.0 = Release|Win32
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC}.Release|x64.ActiveCfg = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|Win32.Build.0 = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Debug|x64.ActiveCfg = Debug|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.ActiveCfg = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|Win32.Build.0 = Release|Win32
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D}.Release|x64.ActiveCfg = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|Win32.Build.0 = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Debug|x64.ActiveCfg = Debug|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.ActiveCfg = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|Win32.Build.0 = Release|Win32
+ {651B0E61-1047-4575-BE31-D9CB28062CBA}.Release|x64.ActiveCfg = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|Win32.Build.0 = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Debug|x64.ActiveCfg = Debug|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.ActiveCfg = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|Win32.Build.0 = Release|Win32
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3}.Release|x64.ActiveCfg = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|Win32.Build.0 = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Debug|x64.ActiveCfg = Debug|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.ActiveCfg = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|Win32.Build.0 = Release|Win32
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}.Release|x64.ActiveCfg = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|Win32.Build.0 = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Debug|x64.ActiveCfg = Debug|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.ActiveCfg = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|Win32.Build.0 = Release|Win32
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}.Release|x64.ActiveCfg = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|Win32.Build.0 = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Debug|x64.ActiveCfg = Debug|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.ActiveCfg = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|Win32.Build.0 = Release|Win32
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}.Release|x64.ActiveCfg = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|Win32.Build.0 = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Debug|x64.ActiveCfg = Debug|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.ActiveCfg = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|Win32.Build.0 = Release|Win32
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C}.Release|x64.ActiveCfg = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|Win32.Build.0 = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Debug|x64.ActiveCfg = Debug|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.ActiveCfg = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|Win32.Build.0 = Release|Win32
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3}.Release|x64.ActiveCfg = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|Win32.Build.0 = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Debug|x64.ActiveCfg = Debug|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.ActiveCfg = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|Win32.Build.0 = Release|Win32
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23}.Release|x64.ActiveCfg = Release|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Debug|x64.ActiveCfg = Debug|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|Win32.ActiveCfg = Release|Win32
+ {39BC0138-6B50-492C-8570-06458772282B}.Release|x64.ActiveCfg = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|Win32.Build.0 = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Debug|x64.ActiveCfg = Debug|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.ActiveCfg = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|Win32.Build.0 = Release|Win32
+ {020991C0-9640-4097-B697-D514F08AA74C}.Release|x64.ActiveCfg = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|Win32.Build.0 = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Debug|x64.ActiveCfg = Debug|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.ActiveCfg = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|Win32.Build.0 = Release|Win32
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A}.Release|x64.ActiveCfg = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|Win32.Build.0 = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Debug|x64.ActiveCfg = Debug|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.ActiveCfg = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|Win32.Build.0 = Release|Win32
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}.Release|x64.ActiveCfg = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|Win32.Build.0 = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Debug|x64.ActiveCfg = Debug|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.ActiveCfg = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|Win32.Build.0 = Release|Win32
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}.Release|x64.ActiveCfg = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|Win32.Build.0 = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Debug|x64.ActiveCfg = Debug|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.ActiveCfg = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|Win32.Build.0 = Release|Win32
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7}.Release|x64.ActiveCfg = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|Win32.Build.0 = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Debug|x64.ActiveCfg = Debug|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.ActiveCfg = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|Win32.Build.0 = Release|Win32
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566}.Release|x64.ActiveCfg = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|Win32.Build.0 = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Debug|x64.ActiveCfg = Debug|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.ActiveCfg = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|Win32.Build.0 = Release|Win32
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57}.Release|x64.ActiveCfg = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|Win32.Build.0 = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Debug|x64.ActiveCfg = Debug|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.ActiveCfg = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|Win32.Build.0 = Release|Win32
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C}.Release|x64.ActiveCfg = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.ActiveCfg = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|Win32.Build.0 = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Debug|x64.ActiveCfg = Debug|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.ActiveCfg = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|Win32.Build.0 = Release|Win32
+ {450C8334-BA46-43DB-81BA-7BEDBB346126}.Release|x64.ActiveCfg = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|Win32.Build.0 = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Debug|x64.ActiveCfg = Debug|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.ActiveCfg = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|Win32.Build.0 = Release|Win32
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2}.Release|x64.ActiveCfg = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|Win32.Build.0 = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Debug|x64.ActiveCfg = Debug|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.ActiveCfg = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|Win32.Build.0 = Release|Win32
+ {DEF1A42F-599B-4B1D-AB11-202E86670021}.Release|x64.ActiveCfg = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.ActiveCfg = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|Win32.Build.0 = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Debug|x64.ActiveCfg = Debug|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.ActiveCfg = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|Win32.Build.0 = Release|Win32
+ {53F78E7F-3024-4999-BE70-F4A242357809}.Release|x64.ActiveCfg = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|Win32.Build.0 = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Debug|x64.ActiveCfg = Debug|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.ActiveCfg = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|Win32.Build.0 = Release|Win32
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07}.Release|x64.ActiveCfg = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.ActiveCfg = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|Win32.Build.0 = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Debug|x64.ActiveCfg = Debug|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.ActiveCfg = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|Win32.Build.0 = Release|Win32
+ {774783E0-2443-42DB-AA48-04730E59B396}.Release|x64.ActiveCfg = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|Win32.Build.0 = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Debug|x64.ActiveCfg = Debug|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.ActiveCfg = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|Win32.Build.0 = Release|Win32
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C}.Release|x64.ActiveCfg = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|Win32.Build.0 = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Debug|x64.ActiveCfg = Debug|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.ActiveCfg = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|Win32.Build.0 = Release|Win32
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747}.Release|x64.ActiveCfg = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|Win32.Build.0 = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Debug|x64.ActiveCfg = Debug|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.ActiveCfg = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|Win32.Build.0 = Release|Win32
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450}.Release|x64.ActiveCfg = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.ActiveCfg = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|Win32.Build.0 = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Debug|x64.ActiveCfg = Debug|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.ActiveCfg = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|Win32.Build.0 = Release|Win32
+ {26170083-8042-4E04-BFE3-B553A5A8D481}.Release|x64.ActiveCfg = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|Win32.Build.0 = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Debug|x64.ActiveCfg = Debug|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.ActiveCfg = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|Win32.Build.0 = Release|Win32
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}.Release|x64.ActiveCfg = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|Win32.Build.0 = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Debug|x64.ActiveCfg = Debug|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.ActiveCfg = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|Win32.Build.0 = Release|Win32
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}.Release|x64.ActiveCfg = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|Win32.Build.0 = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Debug|x64.ActiveCfg = Debug|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.ActiveCfg = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|Win32.Build.0 = Release|Win32
+ {A7A46527-B5F9-4B92-9C46-2416E2432314}.Release|x64.ActiveCfg = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|Win32.Build.0 = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Debug|x64.ActiveCfg = Debug|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.ActiveCfg = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|Win32.Build.0 = Release|Win32
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}.Release|x64.ActiveCfg = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|Win32.Build.0 = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Debug|x64.ActiveCfg = Debug|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.ActiveCfg = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|Win32.Build.0 = Release|Win32
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}.Release|x64.ActiveCfg = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|Win32.Build.0 = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Debug|x64.ActiveCfg = Debug|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.ActiveCfg = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|Win32.Build.0 = Release|Win32
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605}.Release|x64.ActiveCfg = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|Win32.Build.0 = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Debug|x64.ActiveCfg = Debug|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.ActiveCfg = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|Win32.Build.0 = Release|Win32
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4}.Release|x64.ActiveCfg = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|Win32.Build.0 = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Debug|x64.ActiveCfg = Debug|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.ActiveCfg = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|Win32.Build.0 = Release|Win32
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}.Release|x64.ActiveCfg = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|Win32.Build.0 = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Debug|x64.ActiveCfg = Debug|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.ActiveCfg = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|Win32.Build.0 = Release|Win32
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5}.Release|x64.ActiveCfg = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|Win32.Build.0 = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Debug|x64.ActiveCfg = Debug|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.ActiveCfg = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|Win32.Build.0 = Release|Win32
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}.Release|x64.ActiveCfg = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|Win32.Build.0 = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Debug|x64.ActiveCfg = Debug|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.ActiveCfg = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|Win32.Build.0 = Release|Win32
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A}.Release|x64.ActiveCfg = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|Win32.Build.0 = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Debug|x64.ActiveCfg = Debug|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.ActiveCfg = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|Win32.Build.0 = Release|Win32
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F}.Release|x64.ActiveCfg = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|Win32.Build.0 = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Debug|x64.ActiveCfg = Debug|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.ActiveCfg = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|Win32.Build.0 = Release|Win32
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}.Release|x64.ActiveCfg = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|Win32.Build.0 = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Debug|x64.ActiveCfg = Debug|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.ActiveCfg = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|Win32.Build.0 = Release|Win32
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}.Release|x64.ActiveCfg = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|Win32.Build.0 = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Debug|x64.ActiveCfg = Debug|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.ActiveCfg = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|Win32.Build.0 = Release|Win32
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026}.Release|x64.ActiveCfg = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|Win32.Build.0 = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Debug|x64.ActiveCfg = Debug|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.ActiveCfg = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|Win32.Build.0 = Release|Win32
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}.Release|x64.ActiveCfg = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|Win32.Build.0 = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Debug|x64.ActiveCfg = Debug|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.ActiveCfg = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|Win32.Build.0 = Release|Win32
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}.Release|x64.ActiveCfg = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {46F3D788-C329-4384-A4E7-47D971FAAEE9} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {35BA54D4-CF76-478A-A85C-DD4B3941CA09} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E54C14CE-33AF-4AA4-9864-2EAFC73DD813} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {0A43F290-F34B-4448-9A70-8EDAFC29893F} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {AF72E544-553A-4D1D-831B-8D7987BDF82C} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {53D4C03D-7FBF-46C8-A07A-C44644420132} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {39BC0138-6B50-492C-8570-06458772282B} = {4BB7C9F2-969F-4C5C-97F1-89350DCC09B6}
+ {4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5A8D4B59-AC5D-4BA0-A26F-17E740F35042} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CD5DB834-234F-40A3-B551-DC895885E7B1} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {D5110077-CA24-494B-87D0-451BD124CF70} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {7361B40C-BCF5-442B-9116-7DB5AD7456B0} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {FDBBFB07-9E66-481E-AA45-3F3BD87CCE77} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {18763BD3-2916-4D97-9633-5DAC1A635EDD} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {A4626E50-DDD7-44E1-83FC-05BF396AF250} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {10F6C306-FD81-45F3-936B-CDF8213A88E6} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {31BBBDB6-9E46-4227-A8E3-9A1942DBD05E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {EEBFAC09-8BD7-4254-9316-57C1907D827E} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {5D4B1991-549D-48ED-A5F6-CB17F15B72C8} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {8EB05C91-9405-4AF4-88B4-A6B227409BFB} = {46F3D788-C329-4384-A4E7-47D971FAAEE9}
+ {20AFE4D5-CE52-4CCE-ADAB-87442079BC0B} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {0556427D-6D88-4A12-9EB3-7F551D6F1FA4} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {5805527C-6A77-40A9-8EF6-414B0269B50E} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {24015124-A47C-406F-850B-09E95DBBF573} = {35BA54D4-CF76-478A-A85C-DD4B3941CA09}
+ {7F36A592-B667-43A4-B3C3-66636F2DECB8} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B9413124-1841-4373-BFE2-AE6C78F24731} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C5BA0B86-B432-4EF6-95DE-75C026994F4F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {2B2D70A6-F2DB-4160-972C-9ECFA0B0699A} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {204A5126-03B1-4E9D-8CC1-CCA9F64BD081} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {7F13C8AE-27AC-43B4-8C1E-263C5A4C9942} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3902CF74-70D4-4FA4-AA53-71643B94BAB9} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {3F1C1C41-424E-4E23-8990-AEB55196376D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {33833932-6973-483B-B0D1-B3CC800BDFF5} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B1F2A8CE-764A-4D51-AABD-998D48783894} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4F99E000-AC7D-4C3B-80C5-5A5A64D5757F} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {054C79A1-A607-496B-96CE-6F0BB404F754} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {903B0194-F1A9-4302-AC3D-7E88E0406E26} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {F7747E9B-A57F-43D2-8C1F-1F77C670B406} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {44D3EFB8-A861-41C4-BBCD-18470FA0D5AC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {04980E4A-FD92-4D44-8EB6-6F643A4ED9B3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {BAFD5FA4-3D99-48FF-BBFD-5017207870E7} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {DF3336E6-F783-4577-B014-75D0E0377B3E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {1E12C5A2-EDF1-47BB-A2EF-60A288DC278D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {818553D4-0DEF-4BBE-A43A-45611DD84580} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {4CE33021-55F3-46CC-A548-A151D07B24CF} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {C4FBEB3F-D766-4C74-9377-7D4434A2FC6C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D21BD764-EEC6-4474-9D4B-808EF2217CC4} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D83A0994-57A0-4C17-89DF-EDE84450C202} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8594ACB2-D3C8-4D3A-B905-794354A8A0CC} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {B7BEF8A2-3E42-4FA3-94A7-22618594057D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {651B0E61-1047-4575-BE31-D9CB28062CBA} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {E20D0BC2-B28A-412C-9715-5B93B319A4A3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {FD0A4495-C372-41EF-B8EF-0A0939DA6C1E} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {6DBADD0B-C4C1-48CF-95EA-6CF7272A0391} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {16744340-9DDC-4CC6-AC7D-A25DE89A3F5D} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {21E5E59A-7E4E-4F65-9042-9C67C713D51C} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {8D483B26-A264-4BA6-BB6A-36306BCFA8E3} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {D55BC043-1853-4E4C-A8A8-2756682E4B23} = {BA3E6D9D-EDDC-4AED-883C-AC00B902A83B}
+ {93CF027E-C286-4F61-A9D6-DE3C899C5E77} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {15D96388-C17C-4085-991F-9003E0CE9C6A} = {E54C14CE-33AF-4AA4-9864-2EAFC73DD813}
+ {769E26C1-E337-4878-B604-8BE33323F5FF} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {F0DA7501-84CB-4641-9DDA-DA084736B7D4} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {59F5B75C-7FCC-4B07-A5D0-C39D5757204B} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {7A424759-5962-4AE5-ABB6-0B94DDD21F61} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {BF995E6F-88C9-4175-9EE3-ECB3D270AEA6} = {370A736B-BA27-4B88-ABEB-B2A05E0E9B6C}
+ {5A0D9A72-FA85-41F8-A605-A2B31961B01C} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0ED6E2D7-B50D-4A17-A34B-440A7307E747} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {C46C7CDE-9D38-42E5-9DBA-3E7306033450} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {26170083-8042-4E04-BFE3-B553A5A8D481} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {A7A46527-B5F9-4B92-9C46-2416E2432314} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {1EA7E165-A87C-49EA-90CB-2AECD5FED605} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CF3E80F1-A0B6-465B-9285-11753E84B7F4} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {AE37524C-2EBB-4EAE-93B9-AE9C89323B1E} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {2F903F45-A053-47F8-BEA7-2490DEA6C9C5} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {633B36B2-AF28-4EF8-A236-021AA1ECF18A} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {81145727-FB2B-4CD6-B5AC-3F2146F93D5F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {FCD4F6F6-B226-4CC8-A9BD-432C36DEF855} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {CAA51066-E3AC-4FE7-A330-D946A7AD6026} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F} = {0A43F290-F34B-4448-9A70-8EDAFC29893F}
+ {020991C0-9640-4097-B697-D514F08AA74C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0E4EC2A2-BADC-48C8-AF56-D1437094887A} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {ACF6BDB6-C931-400D-A1ED-0B053A19F7EE} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {9678E693-3459-4D6F-9017-EA3E28A58AC7} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {0A156C36-89D5-485E-BB8E-C7536A1DA566} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {B80645FE-03D0-4BC8-8DAE-032A58CF4E57} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {322F871E-3349-4993-BC87-CAFAA6B6F72C} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {450C8334-BA46-43DB-81BA-7BEDBB346126} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {F2A81CDC-2581-481F-B63D-3D2079B264C2} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {DEF1A42F-599B-4B1D-AB11-202E86670021} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {53F78E7F-3024-4999-BE70-F4A242357809} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {CCD3F89C-A278-457D-BFD6-ADEEF4860E07} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {774783E0-2443-42DB-AA48-04730E59B396} = {AF72E544-553A-4D1D-831B-8D7987BDF82C}
+ {432917E4-F042-47B2-BF43-0C376883A7E6} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DF010F03-718D-4CEF-BD03-5E2C9C47613D} = {E6F54BE7-6E5F-4D2D-89FE-4A57DDFB41FB}
+ {DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ {A6EBF2F9-C100-453F-A0D1-1649DCF557EC} = {53D4C03D-7FBF-46C8-A07A-C44644420132}
+ EndGlobalSection
+EndGlobal
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionAbs.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionAbs.sci
new file mode 100644
index 00000000..8bbbf644
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionAbs.sci
@@ -0,0 +1,20 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+disp(abs(7))
+disp(abs(-3))
+
+
+disp(abs(7-%i))
+disp(abs(7+%i))
+disp(abs(-3-2*%i))
+disp(abs(-3+2*%i))
+
+a=[-1 -5 4 -7; -8 3 -74 -5; 141 -3 4 45]
+b=[1+%i*7 2 5+%i*4; 4+%i*21 8+%i 6; 3-%i*7 4-%i*2 78 ]
+disp(abs(a))
+disp(abs(b))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionConj.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionConj.sci
new file mode 100644
index 00000000..3cceb0d1
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionConj.sci
@@ -0,0 +1,31 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function mainfunction()
+
+s1=[1+%i*3 1-%i*7;-1+5*%i 1-%i*7;-1+5*%i -1-6*%i]
+s2=conj(s1);
+disp(s2);
+
+s3=[1 1;-1+5*%i 1-%i*7;-1+5*%i -1-6*%i]
+s4=conj(s3);
+disp(s4);
+
+s5=1+%i*3
+s6=conj(s5);
+disp(s6);
+
+
+s7=1-%i*3
+s8=conj(s7);
+disp(s8);
+
+s9=[1+%i*3 1-%i*7;-1 7;-1+5*%i -1-6*%i]
+s10=conj(s9);
+disp(s10);
+
+s11=[1+%i*3 1;-1+5*%i 1;-1 -1-6*%i]
+s12=conj(s11);
+disp(s12);
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind.sci
new file mode 100644
index 00000000..2a093e9c
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind.sci
@@ -0,0 +1,20 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+a = 1
+disp(find(a==0))
+disp(find(a==1))
+
+b = 1+3*%i
+disp(find(b==2-%i))
+disp(find(b==1+3*%i))
+
+c=[2 5 4 7; 36 4 1 5; 1 2 54 7; 9 6 3 1]
+disp(find(c==1))
+
+
+d=[1 2+%i 5 9; 7+%i 5+%i 4+%i 1+%i; 1+%i 5+%i 6+%i 3+%i; 2+%i 2+%i 2+%i 2+%i*3]
+disp(find(d==2+%i))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind2d.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind2d.sci
new file mode 100644
index 00000000..2857b80b
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionFind2d.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+a = 1
+[u1,v1]=find(a==0);
+[u2,v2]=find(a==1);
+
+disp(u1);disp(v1);
+disp(u2);disp(v2);
+
+b = 1+3*%i
+[u3,v3]=find(b==0);
+[u4,v4]=find(b==1+3*%i);
+
+disp(u3);disp(v3);
+disp(u4);disp(v4);
+
+c=[2 5 4 7; 36 4 1 5; 1 2 54 7; 9 6 3 1]
+[u5,v5]=find(c==0);
+[u6,v6]=find(c==1);
+
+disp(u5);disp(v5);
+disp(u6);disp(v6);
+
+d=[1 2+%i 5 9; 7+%i 5+%i 4+%i 1+%i; 1+%i 5+%i 6+%i 3+%i; 2+%i 2+%i 2-%i 2+%i*3]
+[u7,v7]=find(d==0);
+[u8,v8]=find(d==2+%i);
+
+disp(u7);disp(v7);
+disp(u8);disp(v8);
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsEmpty.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsEmpty.sci
new file mode 100644
index 00000000..9c975ad7
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsEmpty.sci
@@ -0,0 +1,18 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test isempty
+
+
+disp(isempty(4));
+disp(isempty(3+%i*4));
+
+c=[1 5 4 8; 2 9 4 5; 3 6 4 7]
+d=[1 5+%i*4 4 8+%i; 2-%i*3 9+%i*7 4+%i*2 5; 3 6 4 7-%i]
+e=[0,0]
+disp(isempty(c));
+disp(isempty(d));
+disp(isempty(e));
+disp(isempty(e+%i*0));
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsNan.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsNan.sci
new file mode 100644
index 00000000..9d4eac4f
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionIsNan.sci
@@ -0,0 +1,20 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test isnan
+
+
+disp(isnan(4));
+disp(isnan(3+%i*4));
+
+c=[1 5 4 8; 2 9 4 5; 3 6 4 7]
+d=[1 5+%i*4 4 8+%i; 2-%i*3 9+%i*7 4+%i*2 5; 3 6 4 7-%i]
+e=[0,0]
+//disp(isnan([1 0.01 -%nan %inf-%inf]));
+disp(isnan([1 0.01 %inf-%inf]));
+disp(isnan(c));
+disp(isnan(d));
+disp(isnan(e));
+disp(isnan(e+%i*0));
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionLength.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionLength.sci
new file mode 100644
index 00000000..7509073c
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionLength.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test length
+
+
+disp(length(4));
+disp(length(3+%i*4));
+
+c=[1 5 4 8; 2 9 4 5; 3 6 4 7]
+d=[1 5+%i*4 4 8+%i; 2-%i*3 9+%i*7 4+%i*2 5; 3 6 4 7-%i; 3 6 4 7-%i]
+
+disp(length(c));
+disp(length(d));
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSign.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSign.sci
new file mode 100644
index 00000000..6a1ce45c
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSign.sci
@@ -0,0 +1,28 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test sign
+
+//real
+disp (sign(4))
+disp (sign(0))
+disp (sign(-2))
+
+a=[1 0 5 4; -2 4 0 5 ; -4 -2 -1 4]
+disp (sign(a))
+
+
+//complex
+disp (sign(4-2*%i))
+disp (sign(4+2*%i))
+disp (sign(0+%i*0))
+disp (sign(3+%i*0))
+disp (sign(0+%i*3))
+disp (sign(-2 - 2*%i))
+disp (sign(-2 + 2*%i))
+
+b=[1+%i 0+0*%i 5-2*%i 4+0*%i; -2+%i 4 0+2*%i 5 ; -4-3*%i -2 -1-3*%i 4+2*%i]
+disp (sign(b))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSize.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSize.sci
new file mode 100644
index 00000000..067365db
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionSize.sci
@@ -0,0 +1,27 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test sign
+
+//real
+disp (size(4))
+disp (size(4,1))
+disp (size(4,2))
+
+a=[1 0 5 4; -2 4 0 5 ; -4 -2 -1 4]
+disp (size(a))
+disp (size(a,1))
+disp (size(a,2))
+
+//complex
+disp (size(4-2*%i))
+disp (size(4-2*%i,1))
+disp (size(4-2*%i,2))
+
+b=[1+%i 0+0*%i 5-2*%i 4+0*%i; -2+%i 4 0+2*%i 5 ]
+disp (size(b))
+disp (size(b,1))
+disp (size(b,2))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionType.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionType.sci
new file mode 100644
index 00000000..db837346
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/auxiliaryFunctions/mainfunctionType.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test type
+
+disp (type(4))
+disp (type(2+3*%i))
+
+a=[1 2 4 ; 2 5 3]
+disp (type(a))
+
+b=[1-%i 2+3*%i 4 ; 2-2*%i 5 3+2*%i]
+disp (type(b))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACos.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACos.sci
new file mode 100644
index 00000000..e0225554
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACos.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test acos
+
+
+disp (acos(0.5));
+disp (acos(0.2+0.1*%i))
+
+c=[4 2 3 ;8 8 4; 3 4 5]/10
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]/10
+
+disp (acos(c))
+disp (acos(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci
new file mode 100644
index 00000000..08739198
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionACosh.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test acos
+
+
+disp (acosh(7));
+disp (acosh(2+11*%i))
+
+c=[4 2 3 ;8 8 4; 3 4 5];
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5];
+
+disp (acosh(c))
+disp (acosh(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASin.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASin.sci
new file mode 100644
index 00000000..83fdef40
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASin.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function mainfunction()
+
+//test asin
+
+
+disp (asin(.7));
+disp (asin(.2+.11*%i))
+
+c=[4 2 3 ;8 8 4; 3 4 5]/10
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]/10
+
+disp (asin(c))
+disp (asin(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASinh.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASinh.sci
new file mode 100644
index 00000000..967341ef
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionASinh.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test asinh
+
+
+disp (asinh(7));
+disp (asinh(2+11*%i))
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (asinh(c))
+disp (asinh(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan.sci
new file mode 100644
index 00000000..ae5e83db
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test atan
+
+
+disp (atan(7));
+disp (atan(2+11*%i))
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (atan(c))
+disp (atan(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan2.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan2.sci
new file mode 100644
index 00000000..fa8d0a16
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATan2.sci
@@ -0,0 +1,14 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test atan2
+
+
+disp (atan(7,2));
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[2 3 7 ;2 4 4; 1 3 4]
+disp (atan(c,d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATanh.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATanh.sci
new file mode 100644
index 00000000..d81af8d7
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionATanh.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test atanh
+
+
+disp (atanh(7/10));
+disp (atanh((2+11*%i)/10))
+
+c=[4 2 3 ;8 8 4; 3 4 5]/10
+d=[4 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]/10
+
+disp (atanh(c))
+disp (atanh(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCeil_Fix_Floor_Int_Round.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCeil_Fix_Floor_Int_Round.sci
new file mode 100644
index 00000000..a5930c21
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCeil_Fix_Floor_Int_Round.sci
@@ -0,0 +1,48 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test ceil/fix/floor/int/round
+
+disp(ceil(4.2))
+disp(fix(4.2))
+disp(floor(4.2))
+disp(int(4.2))
+disp(round(4.2))
+
+disp(ceil(-4.2))
+disp(fix(-4.2))
+disp(floor(-4.2))
+disp(int(-4.2))
+disp(round(-4.2))
+
+
+disp(ceil(4.2 - 2.5*%i))
+disp(fix(4.2 - 2.5*%i))
+disp(floor(4.2 - 2.5*%i))
+disp(int(4.2 - 2.5*%i))
+disp(round(4.2 - 2.5*%i))
+
+disp(ceil(-4.2 + 2.5*%i))
+disp(fix(-4.2 + 2.5*%i))
+disp(floor(-4.2 + 2.5*%i))
+disp(int(-4.2 + 2.5*%i))
+disp(round(-4.2 + 2.5*%i))
+
+a=[12.5 1.3 1.74 ; -2.4 -3.8 1.000001 ; 1.23 1.99999 0.035; 0 2 -4.5];
+
+disp(ceil(a))
+disp(fix(a))
+disp(floor(a))
+disp(int(a))
+disp(round(a))
+
+b=a+[1.2 3.8 -3.9; 7 2.7 1.5; 0 -9.5 2.0001; 2.35 -1. 5.49]*%i;
+disp(ceil(b))
+disp(fix(b))
+disp(floor(b))
+disp(int(b))
+disp(round(b))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCos.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCos.sci
new file mode 100644
index 00000000..d86406b1
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCos.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test cos
+
+
+disp (cos(7/10));
+disp (cos((2+11*%i)/10))
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (cos(c))
+disp (cos(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCosh.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCosh.sci
new file mode 100644
index 00000000..915396ff
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionCosh.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test cosh
+
+
+disp (cosh(7/10));
+disp (cosh((2+11*%i)/10))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (cosh(c))
+disp (cosh(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionExp_Expm.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionExp_Expm.sci
new file mode 100644
index 00000000..d56328d1
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionExp_Expm.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+
+//test exp and expm
+
+//d0
+disp (exp(3))
+
+//z0
+disp (exp(3+%i*4))
+
+
+a=[1 2 3; 5 5 6]
+c=[4 2 3 ;8 8 4; 3 4 5]
+b=[1+%i,2+4*%i 3+1*%i; 4 5 6+2*%i]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+//d2
+disp (exp(a))
+disp (exp(c))
+disp (expm(c))
+
+//z2
+disp (exp(b))
+disp (exp(d))
+disp (expm(d))
+
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog.sci
new file mode 100644
index 00000000..925182cb
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test log
+
+
+disp (log(7/10));
+disp (log(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (log(c))
+disp (log(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog10.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog10.sci
new file mode 100644
index 00000000..c8b48552
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog10.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test log10
+
+
+disp (log10(7/10));
+disp (log10(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (log10(c))
+disp (log10(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog1p.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog1p.sci
new file mode 100644
index 00000000..3c929e80
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionLog1p.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test log1p
+
+
+disp (log1p(7/10));
+//disp (log1p(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+//d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (log1p(c))
+//disp (log1p(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow0.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow0.sci
new file mode 100644
index 00000000..0a19a9b9
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow0.sci
@@ -0,0 +1,27 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function mainfunction()
+
+//test pow0
+
+
+disp(0^0);
+disp(0^4);
+
+disp(0^(0+0*%i));
+disp(0^(0+%i));
+disp(0^(3+0*%i));
+disp(0^(2+%i));
+
+disp((0+0*%i)^0);
+disp((0+0*%i)^2);
+
+disp((0+0*%i)^(0+0*%i));
+//disp((0+0*%i)^(0+3*%i));
+disp((0+0*%i)^(2+0*%i));
+//disp((0+0*%i)^(2+1*%i));
+
+
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci
new file mode 100644
index 00000000..3706353b
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionPow_MatrixPow.sci
@@ -0,0 +1,50 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test Hat_DotHat
+
+disp(4.1^3.5);
+disp(4.1.^3.5);
+
+disp(4.4^(3.2+%i*1.1));
+disp(4.4.^(3.2+%i*1.1));
+
+disp((3.2+%i*1.1)^4.4);
+disp((3.2+%i*1.1).^4.4);
+
+disp((3.2+%i*1.1)^(4.4+2.6*%i));
+disp((3.2+%i*1.1).^(4.4+2.6*%i));
+
+a=[1.2 4.1 3.9; 3.7 2.6 8.1];
+b=a+[2.5 3.9 8.7; 2.5 0.2 3.3]*%i;
+
+disp(1.2^a)
+disp(1.2.^a)
+
+disp(1.2^b)
+disp(1.2.^b)
+
+disp((1.2+%i*1.1)^a)
+disp((1.2+%i*1.1).^a)
+
+disp((1.2+%i*1.1)^b)
+disp((1.2+%i*1.1).^b)
+
+disp(a.^a)
+disp(a.^b)
+
+disp(b.^a)
+disp(b.^b)
+
+c=[1.2 1.3; 1.4 5.1];
+
+disp(c^2.1);
+disp(c^(2.1+%i*4.6));
+
+d=c+[4.1 2.1; 4.6 5.1]*%i;
+
+disp(d^2.1);
+disp(d^(2.1+%i*4.6));
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSin.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSin.sci
new file mode 100644
index 00000000..db01d7bd
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSin.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test sin
+
+disp (sin(7/10));
+disp (sin(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (sin(c))
+disp (sin(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSinh.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSinh.sci
new file mode 100644
index 00000000..c16af3e7
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSinh.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test sinh
+
+disp (sinh(7/10));
+disp (sinh(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (sinh(c))
+disp (sinh(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSqrt.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSqrt.sci
new file mode 100644
index 00000000..ba64d189
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionSqrt.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test sqrt
+
+disp (sqrt(7/10));
+disp (sqrt(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (sqrt(c))
+disp (sqrt(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTan.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTan.sci
new file mode 100644
index 00000000..67572f08
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTan.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test tan
+
+disp (tan(7/10));
+disp (tan(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (tan(c))
+disp (tan(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTanh.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTanh.sci
new file mode 100644
index 00000000..b282d6d9
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/elementary Functions/mainfunctionTanh.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test tanh
+
+disp (tanh(7/10));
+disp (tanh(2+11*%i))
+
+c=[1 2 3 ;8 8 4; 3 4 5]
+d=[1 2 3+3*%i ;8 8-1*%i 4; 3+4*%i 4 5]
+
+disp (tanh(c))
+disp (tanh(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/implicitList/mainfunctionImplicitList.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/implicitList/mainfunctionImplicitList.sci
new file mode 100644
index 00000000..8d7c6912
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/implicitList/mainfunctionImplicitList.sci
@@ -0,0 +1,36 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test OpColon
+
+//reals
+
+disp(2:2)
+
+disp(1:6)
+
+disp(2:1:2)
+
+disp(2:1:5)
+
+disp(1:2:1)
+
+disp(1:3:10)
+
+
+//complexe
+
+2+%i:2-%i
+
+1+%i:6+%i*5
+
+2+%i*3:1-%i*4:2+%i*2
+
+2+%i:1+%i:5+%i
+
+1+%i:2+%i:1+%i
+
+1+%i:3+%i:10+%i
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpIns.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpIns.sci
new file mode 100644
index 00000000..37c7375e
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpIns.sci
@@ -0,0 +1,136 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test OpIns
+
+//reals
+a=[1 2 3; 4 5 6]
+
+a(3)=-2
+disp(a);
+
+a(3)=-4+%i
+disp(a);
+
+a(1,3)=-12;
+disp(a);
+
+a(1,3)=-5+%i;
+disp(a);
+
+a([1,2],1)=-12;
+disp(a);
+
+a([1,2],1)=-5+%i;
+disp(a);
+
+a(2,[2,3])=-12;
+disp(a);
+
+a(2,[2,3])=-5+%i;
+disp(a);
+
+a([1 2],[1,2,3])=4;
+disp(a);
+
+a([1 2],[1,2,3])=3+%i;
+disp(a);
+
+a([1,3])=7;
+disp(a);
+
+a([1,3])=2+%i;
+disp(a);
+
+a([1,3])=[1,0];
+disp(a);
+
+a([1,3])=[3-%i,1+%i];
+disp(a);
+
+a(2,[1,3])=[-2,-7];
+disp(a);
+
+a(2,[1,3])=[-4+%i,-5+%i];
+disp(a);
+
+a([1,2],3)=[-9;-1];
+disp(a);
+
+a([1,2],3)=[-4+%i;-5+%i];
+disp(a);
+
+a([1,2],[2,3])=[-31 -45;-29 -51];
+disp(a);
+
+a([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+disp(a);
+
+
+//complexes
+
+b=[1-3*%i 2+%i 3+2*%i; 4 5+4*%i 6]
+
+b(3)=-2
+disp(b);
+
+b(3)=-4+%i
+disp(b);
+
+b(1,3)=-12;
+disp(b);
+
+b(1,3)=-5+%i;
+disp(b);
+
+b([1,2],1)=-12;
+disp(b);
+
+b([1,2],1)=-5+%i;
+disp(b);
+
+b(2,[2,3])=-12;
+disp(b);
+
+b(2,[2,3])=-5+%i;
+disp(b);
+
+b([1 2],[1,2,3])=4;
+disp(b);
+
+b([1 2],[1,2,3])=3+%i;
+disp(b);
+
+b([1,3])=7;
+disp(b);
+
+b([1,3])=2+%i;
+disp(b);
+
+b([1,3])=[1,0];
+disp(b);
+
+b([1,3])=[3-%i,1+%i];
+disp(b);
+
+b(2,[1,3])=[-2,-7];
+disp(b);
+
+b(2,[1,3])=[-4+%i,-5+%i];
+disp(b);
+
+b([1,2],3)=[-9;-1];
+disp(b);
+
+b([1,2],3)=[-4+%i;-5+%i];
+disp(b);
+
+b([1,2],[2,3])=[-31 -45;-29 -51];
+disp(b);
+
+b([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+disp(b);
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogEq.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogEq.sci
new file mode 100644
index 00000000..86ab7251
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogEq.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test OpEqual
+disp(1==1)
+disp(1==2)
+disp(1==2+%i)
+disp(1+%i==2)
+disp(1+%i==2+%i)
+
+a=[1 2 ; 3 4]
+b=[5 2 ; 6+%i 1-%i]
+
+disp(a==a)
+disp(a==b)
+disp(b==a)
+disp(b==b)
+
+
+disp(3==a)
+disp(5==b)
+disp(a==4)
+disp(b==2)
+
+disp(1+%i==a)
+disp(1-%i==b)
+disp(a==6+%i)
+disp(b==6+%i)
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNe.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNe.sci
new file mode 100644
index 00000000..d1212dac
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNe.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test OpEqual
+disp(1<>1)
+disp(1<>2)
+disp(1<>2+%i)
+disp(1+%i<>2)
+disp(1+%i<>2+%i)
+
+a=[1 2 ; 3 4]
+b=[5 2 ; 6+%i 1-%i]
+
+disp(a<>a)
+disp(a<>b)
+disp(b<>a)
+disp(b<>b)
+
+
+disp(3<>a)
+disp(5<>b)
+disp(a<>4)
+disp(b<>2)
+
+disp(1+%i<>a)
+disp(1-%i<>b)
+disp(a<>6+%i)
+disp(b<>6+%i)
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNot.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNot.sci
new file mode 100644
index 00000000..6f17a306
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/mainfunctionOpLogNot.sci
@@ -0,0 +1,29 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test OpLogNot
+
+disp(~(-2))
+disp(~(0))
+disp(~(3))
+
+disp(~(0-2*%i))
+disp(~(0+0*%i))
+disp(~(0+3*%i))
+disp(~(3-5*%i))
+disp(~(3+0*%i))
+disp(~(3+6*%i))
+
+a=[-1 2 3; 0 -1 4; 2 -0 5];
+
+disp(~(a))
+
+b=[0+3*%i 2-%i 1 ; 0-2*%i 2+2*%i 1-%i; 0+0*%i 4+0*%i 5-0*%i]
+
+disp(~(b))
+
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionChol.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionChol.sci
new file mode 100644
index 00000000..46f8c409
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionChol.sci
@@ -0,0 +1,24 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test chol
+
+//real
+disp (chol(4))
+
+a=[1 0 5; -2 4 0 ; -4 -2 -1]
+a2=a*a'
+disp (chol(a2))
+
+
+//complex
+disp (chol(4-2*%i))
+
+
+b=[1+%i 0+0*%i; 5-2*%i 4+0*%i]
+b2=b*b'
+disp (chol(b2))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionDet.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionDet.sci
new file mode 100644
index 00000000..fbd59649
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionDet.sci
@@ -0,0 +1,28 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+
+//test det
+
+//d0
+disp (det(3))
+
+//z0
+disp (det(3+%i*4))
+
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+e=[4 2 3 1;8 8 4 4; 3 4 5 7; 12 2 3 4]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+f=[4+%i 2 3 1*%i ;3+4*%i 8-2*%i 8+4*%i 4+2*%i ; 3 4+2*%i 5 7; 12+2*%i 2 3 4]
+
+//d2
+disp (det(c))
+disp (det(e))
+
+//z2
+disp (det(d))
+disp (det(f))
+
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionEye.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionEye.sci
new file mode 100644
index 00000000..b077c9f4
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionEye.sci
@@ -0,0 +1,37 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test eye
+
+//reals
+
+
+disp(eye())
+
+disp(eye(1))
+
+disp(eye(4))
+
+disp(eye(1,1))
+
+disp(eye(1,4))
+
+disp(eye(4,4))
+
+disp(eye(4,1))
+
+a=[1 2 3; 4 5 6; 7 8 9]
+
+disp(eye(a))
+
+//complexe
+
+disp(eye(2+%i))
+
+b=a+%i
+
+disp(eye(b))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionInversion.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionInversion.sci
new file mode 100644
index 00000000..71645901
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionInversion.sci
@@ -0,0 +1,21 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test inversion
+
+
+disp (inv(3))
+
+
+disp (inv(3+2*%i))
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+
+disp (inv(c))
+
+disp (inv(d))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOnes.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOnes.sci
new file mode 100644
index 00000000..15b57b61
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOnes.sci
@@ -0,0 +1,37 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test ones
+
+//reals
+
+
+//disp(ones())
+
+disp(ones(1))
+
+disp(ones(4))
+
+disp(ones(1,1))
+
+disp(ones(1,4))
+
+disp(ones(4,4))
+
+disp(ones(4,1))
+
+a=[1 2 3; 4 5 6; 7 8 9]
+
+disp(ones(a))
+
+//complexe
+
+disp(ones(2+%i))
+
+b=a+%i
+
+disp(ones(b))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOpApex_OpDotApex.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOpApex_OpDotApex.sci
new file mode 100644
index 00000000..3f3822ea
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionOpApex_OpDotApex.sci
@@ -0,0 +1,29 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test OpApex(transpose&conj) & OpDotApex(transpose)
+
+//reals
+
+disp(3')
+
+disp(3.')
+
+a=[4 2 4 8;3 4 5 1;1 4 5 6; 7 4 5 3]
+
+disp(a')
+disp(a.')
+
+//complexes
+
+disp((3+%i)')
+
+disp((3+%i).')
+
+b=2.5*a+a*%i;
+
+disp(b')
+disp(b.')
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionSpec_Spec2.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionSpec_Spec2.sci
new file mode 100644
index 00000000..36b63d7f
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionSpec_Spec2.sci
@@ -0,0 +1,66 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test spec
+
+//reals
+
+disp(spec(4))
+
+[u,v]=spec(4)
+disp(u)
+disp(v)
+
+a=[4 2 4 8;3 4 5 1;1 4 5 6; 7 4 5 3]
+
+disp(spec(a))
+
+[x,y]=spec(a)
+disp(x)
+disp(y)
+
+b=[1 1;1 3]
+disp(spec(b))
+
+[s,t]=spec(b)
+disp(s)
+disp(t)
+
+c=[1 -2;1 3]
+disp(spec(c))
+
+[m,n]=spec(c)
+disp(m)
+disp(n)
+
+
+//complexes
+
+disp(spec(3-%i))
+
+[i,j]=spec(3-%i)
+disp(i)
+disp(j)
+
+d=[1 4 2 5; 2 5 4 7; 3 4 2 4;1 4 7 5]+[1 4 5 7;2 3 6 9;2 4 1 5; 7 8 5 4]*%i;
+
+disp(spec(d))
+
+[k,l]=spec(d)
+disp(k)
+disp(l)
+
+e=[1 2; 2 7]+[0 4;-4 0]*%i
+disp(spec(e))
+
+[o,p]=spec(e)
+disp(o)
+disp(p)
+
+disp(spec(a+0*%i))
+[q,qq]=spec(a+0*%i)
+disp(q)
+disp(qq)
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionZeros.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionZeros.sci
new file mode 100644
index 00000000..7b4b0f9d
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/matrixOperations/mainfunctionZeros.sci
@@ -0,0 +1,37 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test zeros
+
+//reals
+
+
+//disp(zeros())
+
+disp(zeros(1))
+
+disp(zeros(4))
+
+disp(zeros(1,1))
+
+disp(zeros(1,4))
+
+disp(zeros(4,4))
+
+disp(zeros(4,1))
+
+a=[1 2 3; 4 5 6; 7 8 9]
+
+disp(zeros(a))
+
+//complexe
+
+disp(zeros(2+%i))
+
+b=a+%i
+
+disp(zeros(b))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpMinus.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpMinus.sci
new file mode 100644
index 00000000..4445143b
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpMinus.sci
@@ -0,0 +1,50 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+
+//test soustraction
+
+//d0d0
+disp (5-3)
+//d0z0
+disp (1-%i)
+//z0d0
+disp (%i-1)
+//z0z0
+disp (%i-3*%i)
+
+a=[1 2 3; 4 5 6]
+c=[1 5 3; 7 0 5]
+b=[1+%i,2+4*%i 3+1*%i; 4 5 6+2*%i]
+d=[1+%i,5+%i 3; 7+3*%i 0 5]
+
+//d2d2
+disp(a-c)
+disp(a-a)
+//d2z2
+disp(a-d)
+//z2d2
+disp(d-a)
+//z2z2
+disp(b-b)
+disp(b-d)
+
+//d2d0
+disp(a-1)
+//d0d2
+disp(1-a)
+//d2z0
+disp(a-%i)
+//z0d2
+disp(%i-a)
+
+
+//z2d0
+disp(b-1)
+//d0z2
+disp(1-b)
+//z2z0
+disp(b-%i)
+//z0z2
+disp(%i-b)
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpPlus.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpPlus.sci
new file mode 100644
index 00000000..3cef1468
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpPlus.sci
@@ -0,0 +1,47 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+
+//test addition
+
+//d0d0
+disp (1+1)
+//d0z0
+disp (1+%i)
+//z0d0
+disp (%i+1)
+//z0z0
+disp (%i+%i)
+
+a=[1 2 3; 4 5 6]
+b=[1+%i,2 3; 4 5 6]
+
+
+//d2d2
+disp(a+a)
+//d2z2
+disp(a+b)
+//z2d2
+disp(b+a)
+//z2z2
+disp(b+b)
+
+//d2d0
+disp(a+1)
+//d0d2
+disp(1+a)
+//d2z0
+disp(a+%i)
+//z0d2
+disp(%i+a)
+//z2z2
+
+//z2d0
+disp(b+1)
+//d0z2
+disp(1+b)
+//z2z0
+disp(b+%i)
+//z0z2
+disp(%i+b)
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpSlash_OpDotSlash.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpSlash_OpDotSlash.sci
new file mode 100644
index 00000000..5523a19f
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpSlash_OpDotSlash.sci
@@ -0,0 +1,67 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function mainfunction()
+
+//test division
+
+//d0d0
+disp (5/3)
+//d0z0
+disp (1/%i)
+//z0d0
+disp (%i/5)
+//z0z0
+disp (%i/(3*%i))
+
+a=[1 2 3; 5 5 6]
+c=[4 2 3 ;8 8 4; 3 4 5]
+b=[1+%i,2+4*%i 3+1*%i; 4 5 6+2*%i]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+//d2d2
+disp("d2d2")
+disp(a/c)
+disp(a./a)
+//d2z2
+disp("d2z2")
+disp(a/d)
+disp(a./b)
+//z2d2
+disp("z2d2")
+disp(d/c)
+disp(b./a)
+//z2z2
+disp("z2z2")
+disp(b/d)
+disp(b./b)
+
+
+
+
+//d2d0
+disp("d2d0")
+disp(a/2)
+//d0d2
+disp("d0d2")
+disp(1/c)
+//d2z0
+disp("d2z0")
+disp(a/%i)
+//z0d2
+disp("z0d2")
+disp(%i/c)
+
+
+//z2d0
+disp("z2d0")
+disp(b/5)
+//d0z2
+disp("d0z2")
+disp(1/d)
+//z2z0
+disp("z2z0")
+disp(b/%i)
+//z0z2
+disp("z0z2")
+disp(%i/d)
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpStar_OpDotStar.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpStar_OpDotStar.sci
new file mode 100644
index 00000000..93d50258
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/operations/mainfunctionOpStar_OpDotStar.sci
@@ -0,0 +1,58 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+
+//test multiplication
+
+//d0d0
+disp (5/3)
+//d0z0
+disp (1/%i)
+//z0d0
+disp (%i/5)
+//z0z0
+disp (%i/(3*%i))
+
+a=[1 2 3; 4 5 6]
+c=[4 2 3 ;8 8 4; 3 4 5]
+b=[1+%i,2+4*%i 3+1*%i; 4 5 6+2*%i]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+e=[4 2 ;3 8 ;8-1*%i 4; 3+4*%i 4]
+
+//d2d2
+disp(a*c)
+disp(a.*a)
+//d2z2
+disp(a*d)
+disp(a.*b)
+//z2d2
+disp(e*a)
+disp(b.*a)
+//z2z2
+disp(b*d)
+disp(b.*b)
+
+
+
+
+//d2d0
+disp(a*1)
+//d0d2
+disp(1*a)
+//d2z0
+disp(a*%i)
+//z0d2
+disp(%i*a)
+
+
+//z2d0
+disp(b*1)
+//d0z2
+disp(1*b)
+//z2z0
+disp(b*%i)
+//z0z2
+disp(%i*b)
+
+endfunction
+
+
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionConvol.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionConvol.sci
new file mode 100644
index 00000000..41c38603
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionConvol.sci
@@ -0,0 +1,47 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test convol
+
+disp (convol(3,5))
+disp (convol(3+2*%i,5-%i))
+
+disp (convol(3,5+3*%i))
+disp (convol(3+2*%i,2))
+
+c=[1 2 3]
+d=[4 5 6 7 8]
+e=[2+3*%i 4+4*%i 7-5*%i 8+%i]
+f=[1+5*%i 3-2*%i 1-%i]
+
+disp (convol(3,d))
+disp (convol(3,f))
+disp (convol(c,2))
+disp (convol(e,5))
+
+disp (convol(3-%i,d))
+disp (convol(3+2*%i,f))
+disp (convol(c,2+2*%i))
+disp (convol(e,5+%i))
+
+disp (convol(c,d))
+disp (convol(c,f))
+disp (convol(e,c))
+disp (convol(e,f))
+
+//the following lines don't exist in Scilab but are in Sci2C
+
+//g=[1 2; 3 4]
+//h=[4 5; 6 7]
+//i=[2+3*%i 4+4*%i; 7-5*%i 8+%i]
+//j=[1+5*%i 4+4*%i; 3-2*%i 1-%i]
+
+//disp (convol(g,h))
+//disp (convol(g,j))
+//disp (convol(i,h))
+//disp (convol(i,j))
+
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFft.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFft.sci
new file mode 100644
index 00000000..e9d11acd
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFft.sci
@@ -0,0 +1,38 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test fftshift
+
+//1 input argument
+disp(fft(4))
+
+disp(fft([3 4 2 1; 1 4 5 2]));
+
+disp(fft(4-%i))
+
+
+disp(fft([3+%i*2 4 2-%i 1; 1-%i*2 4 5 2]));
+
+//2 input arguments
+
+disp(fft(4,1))
+
+disp(fft([3 4 2 1; 1 4 5 2],1));
+
+disp(fft(4-%i,1))
+
+
+disp(fft([3+%i*2 4 2-%i 1; 1-%i*2 4 5 2],1));
+
+disp(fft(4,-1))
+
+disp(fft([3 4 2 1; 1 4 5 2],-1));
+
+disp(fft(4-%i,-1))
+
+
+disp(fft([3+%i*2 4 2-%i 1; 1-%i*2 4 5 2],-1));
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFftShift.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFftShift.sci
new file mode 100644
index 00000000..b562894f
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionFftShift.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+// test fftshift
+
+disp(fftshift(4))
+disp(fftshift(5,1))
+disp(fftshift(6,2))
+
+disp(fftshift(4-%i))
+disp(fftshift(4-%i*2,1))
+disp(fftshift(4-%i*3,2))
+
+a=[2 3 4 8; 8 4 5 6;1 2 3 4; 14 5 8 7; 1 2 6 7]
+b=[2 3 4 8;1 2 6+3*%i 7]
+
+
+disp(fftshift(a))
+disp(fftshift(a,1))
+disp(fftshift(a,2))
+
+
+disp(fftshift(b))
+disp(fftshift(b,1))
+disp(fftshift(b,2))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionIfft.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionIfft.sci
new file mode 100644
index 00000000..3da3e39b
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionIfft.sci
@@ -0,0 +1,24 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test ifft
+
+//real
+disp (ifft(4))
+
+a=[1 0 5; -2 4 0 ; -4 -2 -1]
+
+disp (ifft(a))
+
+
+//complex
+disp (ifft(4-2*%i))
+
+
+b=[1+%i 0+0*%i; 5-2*%i 4+0*%i]
+
+disp (ifft(b))
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionLev.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionLev.sci
new file mode 100644
index 00000000..274567db
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/signalProcessing/mainfunctionLev.sci
@@ -0,0 +1,38 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test lev
+
+//reals
+
+b=[1 2 3 4]
+
+disp(lev(b))
+
+[u,v]=lev(b)
+disp(u)
+disp(v)
+
+[x,y,z]=lev(b)
+disp(x)
+disp(y)
+disp(z)
+
+//complexes
+
+c=[1+2*%i 2 3-3*%i 4+%i]
+
+disp(lev(c))
+
+[uc,vc]=lev(c)
+disp(uc)
+disp(vc)
+
+[xc,yc,zc]=lev(c)
+disp(xc)
+disp(yc)
+disp(zc)
+
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionMean.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionMean.sci
new file mode 100644
index 00000000..ab4b0bc5
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionMean.sci
@@ -0,0 +1,21 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+
+function mainfunction()
+
+//test mean
+
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+
+
+disp (mean(c))
+disp (mean(c,1))
+disp (mean(c,2))
+disp (mean(d))
+disp (mean(d,1))
+disp (mean(d,2))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionSum.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionSum.sci
new file mode 100644
index 00000000..7302398e
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionSum.sci
@@ -0,0 +1,20 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test sum
+
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+
+
+disp (sum(c))
+disp (sum(c,1))
+disp (sum(c,2))
+disp (sum(d))
+disp (sum(d,1))
+disp (sum(d,2))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionVariance.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionVariance.sci
new file mode 100644
index 00000000..716d61e3
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/statistic Functions/mainfunctionVariance.sci
@@ -0,0 +1,20 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+//test variance
+
+
+c=[4 2 3 ;8 8 4; 3 4 5]
+d=[4 2 3 ;8 8-1*%i 4; 3+4*%i 4 5]
+
+
+
+disp (variance(c))
+disp (variance(c,1))
+disp (variance(c,2))
+disp (variance(d))
+disp (variance(d,1))
+disp (variance(d,2))
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/type/mainfunctionReal_Imag.sci b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/type/mainfunctionReal_Imag.sci
new file mode 100644
index 00000000..02b5c3a7
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/Mes_tests/type/mainfunctionReal_Imag.sci
@@ -0,0 +1,20 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+disp(real(4));
+disp(imag(4));
+
+disp(real(1+2*%i));
+disp(imag(1+2*%i));
+
+a=[4 2 7 5;4 8 6 1];
+
+disp(real(a));
+disp(imag(a));
+
+b=a+%i*2*a
+disp(real(b));
+disp(imag(b));
+
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/SCI2CInputParameters.sce b/2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/SCI2CInputParameters.sce
new file mode 100644
index 00000000..84590e7b
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/SCI2CInputParameters.sce
@@ -0,0 +1,89 @@
+// -----------------------------------------------------------------
+// === hArtes/PoliBa/GAP SCI2C tool ===
+// === Authors: ===
+// === Raffaele Nutricato ===
+// === raffaele.nutricato@tiscali.it ===
+// === Alberto Morea ===
+// === ===
+// === *************** ===
+// === USER PARAMETERS ===
+// === *************** ===
+// === ===
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------------------
+// --- Specify Paths of User Scilab code. ---
+// ------------------------------------------
+// UserSciCodeMainDir = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\SCI2CTests\test999_WorkingDir';
+UserSciCodeMainDir = '../SCI2CTests/test999_WorkingDir';
+
+// --- Path + filename of the .sci main file of the code to be translated. ---
+// It is the entry point.
+UserScilabMainFile = fullfile(UserSciCodeMainDir,'scilabcode\mainfunction.sci');
+
+// --- List of the paths containing the .sci files written by the user. ---
+UserSciFilesPaths = ...
+ [...
+ fullfile(UserSciCodeMainDir,'scilabcode');...
+ ];
+
+// --------------------------
+// --- End Specify paths. ---
+// --------------------------
+
+
+// ----------------------------
+// --- Select the run mode. ---
+// ----------------------------
+//RunMode = 'GenLibraryStructure';
+//RunMode = 'Translate';
+RunMode = 'All';
+
+// --- Select one of the following options. ---
+
+// 'GenLibraryStructure';
+// Generates the library structure and exits. It is very
+// useful when the user wants to manually change the files stored in that structure
+// before running the translation. 'GenLibraryStructure' option forces SCI2C to remove
+// the already existing WorkingDir and OutCCCodeDir directories.
+
+// 'Translate';
+// Performs the translation without generating the library structure. It means that the library
+// structure must be already existing. This is useful when the user doesn't want to spend time
+// to generate again that structure or when he wants to force the SCI2C tool to access to
+// a manually-changed library structure. 'Translate' option forces SCI2C to don't remove
+// the already existing WorkingDir. Only OutCCCodeDir directory will be removed.
+
+// 'All';
+// Performs all the actions listed above.
+
+// --------------------------------
+// --- End Select the run mode. ---
+// --------------------------------
+
+
+// ----------------------------
+// --- Translation Options. ---
+// ----------------------------
+// --- Enable (1) / Disable (0) copy of Scilab code into C code. ---
+// If 1 the Scilab code will be copied into the C code in order to show
+// how each Scilab code line has been translated into C code.
+CopySciCodeIntoCCode = 1;
+
+// --- Select the path style for the C code. ---
+// It can be:
+// windows
+// unix
+// cygwin
+CCompilerPathStyle = 'cygwin';
+
+// --- Path + File name of the main SCI2C library header file.
+// Sci2CLibMainHeaderFName = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\Scilab2C\CFiles\sci2cincludes\sci2clib.h';
+Sci2CLibMainHeaderFName = '../../../Scilab2C/CFiles/sci2cincludes/sci2clib.h';
+// --------------------------------
+// --- End Translation Options. ---
+// --------------------------------
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/scilabcode/mainfunction.sci b/2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..e39f7648
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/test000_TrigonIdentity/scilabcode/mainfunction.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+// ------------------------------
+// --- Simple Scalar Addition ---
+// ------------------------------
+a = 1;
+b = 2;
+c = 0;
+c = a + b;
+disp(c);
+
+// ------------------------------
+// --- Trigonometric Identity ---
+// ------------------------------
+x = (1:3)' * (4:9);
+y = (sin(x).^2) + (cos(x).^2);
+disp(x);
+disp(y-ones(3,6));
+
+// -------------------------------
+// --- Computation of Distance ---
+// -------------------------------
+// generate a vector w
+w = cos(sin(cos(x*3)*2).* x+ones(3,6).*cos(x-sin(y*2)));
+distxw = sqrt(x.^2 + w.^2);
+disp(distxw);
+endfunction
+ \ No newline at end of file
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/SCI2CInputParameters.sce b/2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/SCI2CInputParameters.sce
new file mode 100644
index 00000000..84590e7b
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/SCI2CInputParameters.sce
@@ -0,0 +1,89 @@
+// -----------------------------------------------------------------
+// === hArtes/PoliBa/GAP SCI2C tool ===
+// === Authors: ===
+// === Raffaele Nutricato ===
+// === raffaele.nutricato@tiscali.it ===
+// === Alberto Morea ===
+// === ===
+// === *************** ===
+// === USER PARAMETERS ===
+// === *************** ===
+// === ===
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------------------
+// --- Specify Paths of User Scilab code. ---
+// ------------------------------------------
+// UserSciCodeMainDir = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\SCI2CTests\test999_WorkingDir';
+UserSciCodeMainDir = '../SCI2CTests/test999_WorkingDir';
+
+// --- Path + filename of the .sci main file of the code to be translated. ---
+// It is the entry point.
+UserScilabMainFile = fullfile(UserSciCodeMainDir,'scilabcode\mainfunction.sci');
+
+// --- List of the paths containing the .sci files written by the user. ---
+UserSciFilesPaths = ...
+ [...
+ fullfile(UserSciCodeMainDir,'scilabcode');...
+ ];
+
+// --------------------------
+// --- End Specify paths. ---
+// --------------------------
+
+
+// ----------------------------
+// --- Select the run mode. ---
+// ----------------------------
+//RunMode = 'GenLibraryStructure';
+//RunMode = 'Translate';
+RunMode = 'All';
+
+// --- Select one of the following options. ---
+
+// 'GenLibraryStructure';
+// Generates the library structure and exits. It is very
+// useful when the user wants to manually change the files stored in that structure
+// before running the translation. 'GenLibraryStructure' option forces SCI2C to remove
+// the already existing WorkingDir and OutCCCodeDir directories.
+
+// 'Translate';
+// Performs the translation without generating the library structure. It means that the library
+// structure must be already existing. This is useful when the user doesn't want to spend time
+// to generate again that structure or when he wants to force the SCI2C tool to access to
+// a manually-changed library structure. 'Translate' option forces SCI2C to don't remove
+// the already existing WorkingDir. Only OutCCCodeDir directory will be removed.
+
+// 'All';
+// Performs all the actions listed above.
+
+// --------------------------------
+// --- End Select the run mode. ---
+// --------------------------------
+
+
+// ----------------------------
+// --- Translation Options. ---
+// ----------------------------
+// --- Enable (1) / Disable (0) copy of Scilab code into C code. ---
+// If 1 the Scilab code will be copied into the C code in order to show
+// how each Scilab code line has been translated into C code.
+CopySciCodeIntoCCode = 1;
+
+// --- Select the path style for the C code. ---
+// It can be:
+// windows
+// unix
+// cygwin
+CCompilerPathStyle = 'cygwin';
+
+// --- Path + File name of the main SCI2C library header file.
+// Sci2CLibMainHeaderFName = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\Scilab2C\CFiles\sci2cincludes\sci2clib.h';
+Sci2CLibMainHeaderFName = '../../../Scilab2C/CFiles/sci2cincludes/sci2clib.h';
+// --------------------------------
+// --- End Translation Options. ---
+// --------------------------------
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/scilabcode/mainfunction.sci b/2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..a29a1c9e
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/test001_LinearRegression/scilabcode/mainfunction.sci
@@ -0,0 +1,55 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+// Knowing that
+// (1) P * (V^gamma) = C
+// Where
+// P = Pressure
+// V = Volume
+// gamma,C = constants depending on the particular gas used.
+// (2) log10(P) = log10(C) - gamma*log10(V)
+// (3) x = log10(V)
+// (4) y = log10(P)
+// than (2) becomes:
+// y = a + b*x;
+// Where
+// a = log10(C)
+// b = -gamma
+// Then thanks to this transformation it is possible to perform
+// a linear regression to estimate gamma and C!
+
+Volume = [54.3 61.8 72.4 88.7 118.6 194.0];
+Pressure = [61.2 49.5 37.6 28.4 19.2 10.1];
+x = log10(Volume);
+y = log10(Pressure);
+
+a = (sum(y)*sum(x.^2)-sum(x)*sum(x.*y))./(length(x)*sum(x.^2)-sum(x).*sum(x));
+b = (length(x)*sum(x.*y)-sum(x)*sum(y))./(length(x)*sum(x.^2)-sum(x).*sum(x));
+
+// Other way to compute a and b
+beq = sum((x-mean(x)).*(y-mean(y)))./sum((x-mean(x)).^2);
+aeq = mean(y)-mean(x)*beq;
+
+C = 10 .^a;
+gamma = -b;
+
+disp('C')
+disp(C)
+
+disp('gamma');
+disp(gamma);
+
+disp('a');
+disp(a)
+disp('aeq');
+disp(aeq)
+
+disp('b');
+disp(b)
+disp('beq');
+disp(beq)
+
+// plot(Volume,Pressure);
+// plot(Volume,(C ./(Volume.^gamma)),'r')
+endfunction
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce b/2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce
new file mode 100644
index 00000000..52d8c7d5
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/SCI2CInputParameters.sce
@@ -0,0 +1,89 @@
+// -----------------------------------------------------------------
+// === hArtes/PoliBa/GAP SCI2C tool ===
+// === Authors: ===
+// === Raffaele Nutricato ===
+// === raffaele.nutricato@tiscali.it ===
+// === Alberto Morea ===
+// === ===
+// === *************** ===
+// === USER PARAMETERS ===
+// === *************** ===
+// === ===
+//
+// Copyright 2007 Raffaele Nutricato.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+
+// ------------------------------------------
+// --- Specify Paths of User Scilab code. ---
+// ------------------------------------------
+// UserSciCodeMainDir = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\SCI2CTests\test999_WorkingDir';
+UserSciCodeMainDir = '../SCI2CTests/test999_WorkingDir';
+
+// --- Path + filename of the .sci main file of the code to be translated. ---
+// It is the entry point.
+UserScilabMainFile = fullfile(UserSciCodeMainDir,'scilabcode/mainfunction.sci');
+
+// --- List of the paths containing the .sci files written by the user. ---
+UserSciFilesPaths = ...
+ [...
+ fullfile(UserSciCodeMainDir,'scilabcode');...
+ ];
+
+// --------------------------
+// --- End Specify paths. ---
+// --------------------------
+
+
+// ----------------------------
+// --- Select the run mode. ---
+// ----------------------------
+//RunMode = 'GenLibraryStructure';
+//RunMode = 'Translate';
+RunMode = 'All';
+
+// --- Select one of the following options. ---
+
+// 'GenLibraryStructure';
+// Generates the library structure and exits. It is very
+// useful when the user wants to manually change the files stored in that structure
+// before running the translation. 'GenLibraryStructure' option forces SCI2C to remove
+// the already existing WorkingDir and OutCCCodeDir directories.
+
+// 'Translate';
+// Performs the translation without generating the library structure. It means that the library
+// structure must be already existing. This is useful when the user doesn't want to spend time
+// to generate again that structure or when he wants to force the SCI2C tool to access to
+// a manually-changed library structure. 'Translate' option forces SCI2C to don't remove
+// the already existing WorkingDir. Only OutCCCodeDir directory will be removed.
+
+// 'All';
+// Performs all the actions listed above.
+
+// --------------------------------
+// --- End Select the run mode. ---
+// --------------------------------
+
+
+// ----------------------------
+// --- Translation Options. ---
+// ----------------------------
+// --- Enable (1) / Disable (0) copy of Scilab code into C code. ---
+// If 1 the Scilab code will be copied into the C code in order to show
+// how each Scilab code line has been translated into C code.
+CopySciCodeIntoCCode = 1;
+
+// --- Select the path style for the C code. ---
+// It can be:
+// windows
+// unix
+// cygwin
+CCompilerPathStyle = 'unix';
+
+// --- Path + File name of the main SCI2C library header file.
+// Sci2CLibMainHeaderFName = 'D:\Nutricato\OpenProjects\FP6_hArtes\WP2_SCI2C\Software\svnhartes\src\Scilab2C\Scilab2C\CFiles\sci2cincludes\sci2clib.h';
+Sci2CLibMainHeaderFName = '../../../Scilab2C/CFiles/sci2cincludes/sci2clib.h';
+// --------------------------------
+// --- End Translation Options. ---
+// --------------------------------
diff --git a/2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci b/2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..e39f7648
--- /dev/null
+++ b/2.3-1/src/Scilab2C/SCI2CTests/test999_WorkingDir/scilabcode/mainfunction.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+// ------------------------------
+// --- Simple Scalar Addition ---
+// ------------------------------
+a = 1;
+b = 2;
+c = 0;
+c = a + b;
+disp(c);
+
+// ------------------------------
+// --- Trigonometric Identity ---
+// ------------------------------
+x = (1:3)' * (4:9);
+y = (sin(x).^2) + (cos(x).^2);
+disp(x);
+disp(y-ones(3,6));
+
+// -------------------------------
+// --- Computation of Distance ---
+// -------------------------------
+// generate a vector w
+w = cos(sin(cos(x*3)*2).* x+ones(3,6).*cos(x-sin(y*2)));
+distxw = sqrt(x.^2 + w.^2);
+disp(distxw);
+endfunction
+ \ No newline at end of file
diff --git a/2.3-1/src/c/CACSD/includes/lqe.h b/2.3-1/src/c/CACSD/includes/lqe.h
new file mode 100644
index 00000000..1cc902fd
--- /dev/null
+++ b/2.3-1/src/c/CACSD/includes/lqe.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __LQE_H__
+#define __LQE_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dlqea(double* sys, int sys_rows, int sys_cols, double* X, double* K);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__LQE_H__*/
diff --git a/2.3-1/src/c/CACSD/includes/lqr.h b/2.3-1/src/c/CACSD/includes/lqr.h
new file mode 100644
index 00000000..062d6e41
--- /dev/null
+++ b/2.3-1/src/c/CACSD/includes/lqr.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __LQR_H__
+#define __LQR_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__LQR_H__*/
diff --git a/2.3-1/src/c/CACSD/includes/obscont.h b/2.3-1/src/c/CACSD/includes/obscont.h
new file mode 100644
index 00000000..f316adb5
--- /dev/null
+++ b/2.3-1/src/c/CACSD/includes/obscont.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __OBSCONT_H__
+#define __OBSCONT_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dobsconta(double* sys, int sys_rows, int sys_cols, double* Kc, double* Kf, \
+ double *K, double *r);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__OBSCONT_H__*/
diff --git a/2.3-1/src/c/CACSD/includes/syslin.h b/2.3-1/src/c/CACSD/includes/syslin.h
new file mode 100644
index 00000000..21b23294
--- /dev/null
+++ b/2.3-1/src/c/CACSD/includes/syslin.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __SYSLIN_H__
+#define __SYSLIN_H__
+
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void dsyslina(char* dom, double* A, int no_of_states, double* B, int no_of_inputs, \
+ double* C, int no_of_outputs, double* D, double* X0, double* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__SYSLIN_H__*/ \ No newline at end of file
diff --git a/2.3-1/src/c/CACSD/interfaces/int_lqe.h b/2.3-1/src/c/CACSD/interfaces/int_lqe.h
new file mode 100644
index 00000000..d801bf3e
--- /dev/null
+++ b/2.3-1/src/c/CACSD/interfaces/int_lqe.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_LQE_H__
+#define __INT_LQE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ss2lqed2d2(in1,size1,out1,out2) dlqea(in1,size1[0],size1[1],out1,out2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_LQE_H__*/
diff --git a/2.3-1/src/c/CACSD/interfaces/int_lqr.h b/2.3-1/src/c/CACSD/interfaces/int_lqr.h
new file mode 100644
index 00000000..e6f534fc
--- /dev/null
+++ b/2.3-1/src/c/CACSD/interfaces/int_lqr.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_LQR_H__
+#define __INT_LQR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ss2lqrd2d2(in1,size1,out1,out2) dlqra(in1,size1[0],size1[1],out1,out2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_LQR_H__*/
diff --git a/2.3-1/src/c/CACSD/interfaces/int_obscont.h b/2.3-1/src/c/CACSD/interfaces/int_obscont.h
new file mode 100644
index 00000000..fd3a823c
--- /dev/null
+++ b/2.3-1/src/c/CACSD/interfaces/int_obscont.h
@@ -0,0 +1,29 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_OBSCONT_H__
+#define __INT_OBSCONT_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define ss2d2d2obscontd2(in1,size1,in2,size2,in3,size3,out) \
+ dobsconta(in1,size1[0],size1[1],in2,in3,out,NULL)
+
+#define ss2d2d2obscontd2d2(in1,size1,in2,size2,in3,size3,out1,out2) \
+ dobsconta(in1,size1[0],size1[1],in2,in3,out1,out2)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_OBSCONT_H__*/
diff --git a/2.3-1/src/c/CACSD/interfaces/int_syslin.h b/2.3-1/src/c/CACSD/interfaces/int_syslin.h
new file mode 100644
index 00000000..3f74ea6e
--- /dev/null
+++ b/2.3-1/src/c/CACSD/interfaces/int_syslin.h
@@ -0,0 +1,78 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_SYSLIN_H__
+#define __INT_SYSLIN_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2d2d2d2syslinss2(in1,size1,in2,size2,in3,size3,in4,size4,out) \
+ dsyslina(in1,in2,size2[0],in3,size3[1],in4,size4[0],NULL,NULL,out)
+
+#define g2d2d2d2d2syslinss2(in1,size1,in2,size2,in3,size3,in4,size4,in5, \
+ size5,out) dsyslina(in1,in2,size2[0],in3,size3[1],in4,size4[0],in5,NULL,out)
+
+#define g2d2d2d2d2d2syslinss2(in1,size1,in2,size2,in3,size3,in4,size4, \
+ in5,size5,in6,size6,out) dsyslina(in1,in2,size2[0],in3,size3[1],in4, \
+ size4[0],in5,in6,out)
+//
+#define g2d0d0d0syslinss2(in1,size1,in2,in3,in4,out) \
+ dsyslina(in1,&in2,1,&in3,1,&in4,1,NULL,NULL,out)
+
+#define g2d0d2d0syslinss2(in1,size1,in2,in3,size3,in4,out) \
+ dsyslina(in1,&in2,1,in3,size3[1],&in4,1,NULL,NULL,out)
+
+#define g2d0d0d2syslinss2(in1,size1,in2,in3,in4,size4,out) \
+ dsyslina(in1,&in2,1,&in3,1,in4,size4[0],NULL,NULL,out)
+
+#define g2d0d2d2syslinss2(in1,size1,in2,in3,size3,in4,size4,out) \
+ dsyslina(in1,&in2,1,in3,size3[1],in4,size4[0],NULL,NULL,out)
+//
+#define g2d0d0d0d0syslinss2(in1,size1,in2,in3,in4,in5,out) \
+ dsyslina(in1,&in2,1,&in3,1,&in4,1,&in5,NULL,out)
+
+#define g2d0d2d0d2syslinss2(in1,size1,in2,in3,size3,in4,in5,size5, \
+ out) dsyslina(in1,&in2,1,in3,size3[1],&in4,1,&in5,NULL,out)
+
+#define g2d0d0d2d2syslinss2(in1,size1,in2,in3,in4,size4,in5,size5, \
+ out) dsyslina(in1,&in2,1,&in3,1,in4,size4[0],in5,NULL,out)
+
+#define g2d0d2d2d2syslinss2(in1,size1,in2,in3,size3,in4,size4,in5, \
+ size5, out) dsyslina(in1,&in2,1,in3,size3[1],in4,size4[0],in5,NULL,out)
+
+#define g2d2d2d2d0syslinss2(in1,size1,in2,size2,in3,size3,in4,size4, \
+ in5,out) dsyslina(in1,in2,size2[0],in3,size3[1],in4,size4[0],&in5,NULL,out)
+//
+#define g2d0d0d0d0d0syslinss2(in1,size1,in2,in3,in4,in5,in6,out) \
+ dsyslina(in1,&in2,1,&in3,1,&in4,1,&in5,&in6,out)
+
+#define g2d0d2d0d2d0syslinss2(in1,size1,in2,in3,size3,in4,in5,size5, \
+ in6,out) dsyslina(in1,&in2,1,in3,size3[1],in4,1,in5,&in6,out)
+
+#define g2d0d0d2d2d0syslinss2(in1,size1,in2,in3,in4,size4,in5,size5, \
+ in6,out) dsyslina(in1,&in2,1,in3,1,in4,size4[0],in5,&in6,out)
+
+#define g2d0d2d2d2d0syslinss2(in1,size1,in2,in3,size3,in4,size4,in5, \
+ size5,in6,out) dsyslina(in1,&in2,1,in3,size3[1],in4,size4[0],in5,&in6,out)
+
+#define g2d2d2d2d0d2syslinss2(in1,size1,in2,size2,in3,size3,in4,size4, \
+ in5,in6,size6,out) dsyslina(in1,in2,size2[0],in3,size3[1],in4,size4[0], \
+ &in5,in6,out)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /*__INT_SYSLIN_H__*/ \ No newline at end of file
diff --git a/2.3-1/src/c/CACSD/lqe/dlqea.c b/2.3-1/src/c/CACSD/lqe/dlqea.c
new file mode 100644
index 00000000..63f8d62d
--- /dev/null
+++ b/2.3-1/src/c/CACSD/lqe/dlqea.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for calculating lqe gain. Refer 'lqe.sci' in scilab source.*/
+
+#include <stdlib.h>
+#include "lqr.h"
+#include "matrixTranspose.h"
+
+void dlqea(double* sys, int sys_rows, int sys_cols, double* X, double* K)
+{
+
+ double *sys_lqr, *K_lqr;
+ int row, col;
+ int sys_lqr_rows = sys_cols-2;
+ int sys_lqr_cols = sys_rows + 2;
+ int no_of_ip, no_of_st;
+
+ no_of_ip = (int)sys[sys_rows*(sys_cols-1)+1];
+ no_of_st = (int)sys[sys_rows*(sys_cols-1)];
+
+ /*Transpose given system and calculate LQR with new system. Transpose result
+ got from LQR*/
+
+ sys_lqr = (double*) malloc(sys_lqr_rows*sys_lqr_cols*sizeof(double));
+
+ for(col = 0; col<sys_lqr_cols; col++)
+ {
+ for(row = 0; row<sys_lqr_rows; row++)
+ {
+ sys_lqr[col*sys_lqr_rows+row] = sys[row*sys_rows+col];
+
+ }
+ }
+
+ /*Copy initial states and type of system*/
+ for(row = 0; row<sys_lqr_rows; row++)
+ {
+ sys_lqr[sys_lqr_rows*(sys_lqr_cols-2) + row] = sys[sys_rows*(sys_cols-2)+row];
+ }
+
+ /*Copy no of states and no of inputs*/
+ sys_lqr[sys_lqr_rows*(sys_lqr_cols-1)] = no_of_st;
+ sys_lqr[sys_lqr_rows*(sys_lqr_cols-1)+1] = sys_rows - no_of_st;
+
+ /*Calculate LQR gain*/
+ K_lqr = (double*) malloc(no_of_ip*no_of_st*sizeof(double));
+ dlqra(sys_lqr,sys_lqr_rows,sys_lqr_cols,X,K_lqr);
+
+ dtransposea(K_lqr,sys_rows - no_of_st,no_of_st,K);
+} \ No newline at end of file
diff --git a/2.3-1/src/c/CACSD/lqr/as_per_sci_code.c b/2.3-1/src/c/CACSD/lqr/as_per_sci_code.c
new file mode 100644
index 00000000..01f002c3
--- /dev/null
+++ b/2.3-1/src/c/CACSD/lqr/as_per_sci_code.c
@@ -0,0 +1,144 @@
+
+ sizeBA = 2*no_of_states + no_of_inputs;
+ BigE = (double*) malloc (sizeBA*sizeBA*sizeof(double));
+ BigA = (double*) malloc (sizeBA*sizeBA*sizeof(double));
+
+ /*Setup BigE*/
+ deyea(BigE,sizeBA,sizeBA);
+
+ for(row = no_of_states*2; row<sizeBA; row++)
+ {
+ BigE[row*sizeBA+row] = 0;
+ }
+
+ /*Setup BigA*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ BigA[col*sizeBA+row] = A[col*no_of_states + row];
+ }
+ }
+
+ for(col=no_of_states; col < no_of_states*2; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ BigA[col*sizeBA+row] = 0;
+ }
+ }
+
+ for(col=2*no_of_states; col < sizeBA; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ BigA[col*sizeBA+row] = B[col*no_of_states + row];
+ }
+ }
+
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ BigA[col*sizeBA+row] = -1.0*Q[col*no_of_states + row];
+ }
+ }
+
+ for(col=no_of_states; col < 2*no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ BigA[col*sizeBA+row] = -1.0*A[row*no_of_states + col];
+ }
+ }
+
+ for(col=2*no_of_states; col < sizeBA; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ BigA[col*sizeBA+row] = -1.0*S[row*no_of_inputs + col];
+ }
+ }
+
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 2*no_of_states; row < sizeBA; row++)
+ {
+ BigA[col*sizeBA+row] = S[col*no_of_inputs + row];
+ }
+ }
+
+ for(col=no_of_states; col < 2*no_of_states; col++)
+ {
+ for(row = 2*no_of_states; row < sizeBA; row++)
+ {
+ BigA[col*sizeBA+row] = B[row*no_of_inputs + col];
+ }
+ }
+
+
+ for(col=2*no_of_states; col < sizeBA; col++)
+ {
+ for(row = 2*no_of_states; row < sizeBA; row++)
+ {
+ BigA[col*sizeBA+row] = R[col*no_of_inputs + row];
+ }
+ }
+
+ /*Free up unwanted variables*/
+ free(A);
+ free(C);
+ free(C_t);
+ free(D);
+ free(D_t);
+ free(Q);
+
+ /*Inverse of R*/
+ Ri = (double*) malloc(no_of_inputs*no_of_inputs*sizeof(double));
+ dinverma(R,Ri,no_of_inputs);
+
+ /*Setup Left*/
+ Left = (double*) malloc(sizeBA*sizeBA*sizeof(double));
+ deyea(Left,sizeBA,sizeBA);
+
+ BRi = (double*) malloc(no_of_states*no_of_inputs*sizeof(double));
+ S_t = (double*) malloc(no_of_states*no_of_inputs*sizeof(double));
+ StRi = (double*) malloc(no_of_states*no_of_inputs*sizeof(double));
+
+ dtransposea(S,no_of_inputs,no_of_states,S_t);
+ dmula(B,no_of_states,no_of_inputs,Ri,no_of_inputs,no_of_inputs,BRi);
+ dmula(S_t,no_of_states,no_of_inputs,Ri,no_of_inputs,no_of_inputs,StRi);
+
+ for(col=2*no_of_states; col < sizeBA; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ Left[col*sizeBA+row] = -1.0*BRi[col*no_of_states + row];
+ }
+ }
+
+ for(col=2*no_of_states; col < sizeBA; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ Left[col*sizeBA+row] = StRi[col*no_of_states + row];
+ }
+ }
+
+ for(col=2*no_of_states; col < sizeBA; col++)
+ {
+ for(row = 2*no_of_states; row < sizeBA; row++)
+ {
+ Left[col*sizeBA+row] = Ri[col*no_of_states + row];
+ }
+ }
+
+ /*Freeup umwanted variables*/
+ free(R);
+ free(BRi);
+ free(S_t);
+ free(StRi);
+ free(B);
+
+ LA = (double*) malloc(sizeBA*sizeBA*sizeof(double));
+ dmula(Left,sizeBA,sizeBA,BigA,sizeBA,sizeBA,LA); \ No newline at end of file
diff --git a/2.3-1/src/c/CACSD/lqr/dlqra.c b/2.3-1/src/c/CACSD/lqr/dlqra.c
new file mode 100644
index 00000000..02ac1504
--- /dev/null
+++ b/2.3-1/src/c/CACSD/lqr/dlqra.c
@@ -0,0 +1,352 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for calculating lqr gain. Refer 'lqr.sci' in scilab source.*/
+
+#include <stdlib.h>
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+#include "eye.h"
+#include "matrixInversion.h"
+#include "subtraction.h"
+#include "addition.h"
+#include "schur.h"
+#include "matrixDivision.h"
+
+void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
+{
+ int no_of_states, no_of_inputs, no_of_outputs, dom = 1;
+ int row,col;
+ no_of_states = (int)sys[sys_rows*(sys_cols-1)];
+ no_of_inputs = (int)sys[sys_rows*(sys_cols-1) + 1];
+ no_of_outputs = sys_rows - no_of_states;
+
+ double *A, *B, *C, *D;
+ double *B_t, *C_t, *D_t;
+ double *Q, *R, *S;
+ double *Ri, *LA, *LE;
+ double *BRi, *StRi, *S_t;
+ double *buf1, *buf2, *buf3, *buf4, *buf5, *buf6;
+
+ int ks;
+ double *wsmall, *X12, *phi12;
+
+ A = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ B = (double*) malloc (no_of_states*no_of_inputs*sizeof(double));
+ C = (double*) malloc (no_of_states*no_of_outputs*sizeof(double));
+ D = (double*) malloc (no_of_inputs*no_of_outputs*sizeof(double));
+
+ B_t = (double*) malloc (no_of_states*no_of_inputs*sizeof(double));
+ C_t = (double*) malloc (no_of_states*no_of_outputs*sizeof(double));
+ D_t = (double*) malloc (no_of_inputs*no_of_outputs*sizeof(double));
+
+ /*Get A from system matrix*/
+ for(col = 0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ A[col*no_of_states + row] = sys[col*sys_rows + row];
+ }
+ }
+
+ /*Get matrix B from system matrix*/
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ B[col * no_of_states + row] = \
+ sys[col * sys_rows + no_of_states*sys_rows + row];
+ }
+ }
+
+ /*Get matrix C from system matrix*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ C[col * no_of_outputs + row] = \
+ sys[no_of_states + (col*sys_rows) + row];
+ }
+ }
+
+ /*Get matrix D from system matrix*/
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ D[col * no_of_outputs + row] = \
+ sys[(no_of_states+col)*sys_rows + no_of_states + row];
+ }
+ }
+
+ dom = (int)sys[(sys_rows*(sys_cols-2)) + no_of_states];
+
+ Q = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ R = (double*) malloc (no_of_inputs*no_of_inputs*sizeof(double));
+ S = (double*) malloc (no_of_inputs*no_of_states*sizeof(double));
+
+ dtransposea(B,no_of_states,no_of_inputs,B_t);
+ dtransposea(C,no_of_outputs,no_of_states,C_t);
+ dtransposea(D,no_of_outputs,no_of_inputs,D_t);
+
+ dmulma(C_t,no_of_states,no_of_outputs,C,no_of_outputs,no_of_states,Q);
+ dmulma(D_t,no_of_inputs,no_of_outputs,D,no_of_outputs,no_of_inputs,R);
+ dmulma(D_t,no_of_inputs,no_of_outputs,C,no_of_outputs,no_of_states,S);
+
+ /*Free up unwanted variables*/
+
+ free(C);
+ free(C_t);
+ free(D);
+ free(D_t);
+
+
+ /*Inverse of R*/
+ Ri = (double*) malloc(no_of_inputs*no_of_inputs*sizeof(double));
+ dinverma(R,Ri,no_of_inputs);
+
+ BRi = (double*) malloc(no_of_states*no_of_inputs*sizeof(double));
+ S_t = (double*) malloc(no_of_states*no_of_inputs*sizeof(double));
+ StRi = (double*) malloc(no_of_states*no_of_inputs*sizeof(double));
+
+ dtransposea(S,no_of_inputs,no_of_states,S_t);
+ dmulma(B,no_of_states,no_of_inputs,Ri,no_of_inputs,no_of_inputs,BRi);
+ dmulma(S_t,no_of_states,no_of_inputs,Ri,no_of_inputs,no_of_inputs,StRi);
+
+ buf1 = (double*) malloc(no_of_states*no_of_states*sizeof(double));
+ buf2 = (double*) malloc(no_of_states*no_of_states*sizeof(double));
+
+ if(dom == 1)
+ {
+ /*Setup LA*/
+ LA = (double*) malloc(4*no_of_states*no_of_states*sizeof(double));
+ /*Block 11 --> A - B*Ri*S*/
+ dmulma(BRi,no_of_states,no_of_inputs,S,no_of_inputs,no_of_states,buf1);
+ ddiffa(A,no_of_states*no_of_states,buf1,no_of_states*no_of_states,buf2);
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ LA[col*2*no_of_states+row] = buf2[col*no_of_states + row];
+ }
+ }
+
+ /*Block 22= Block 11' --> -A' + S'*Ri*B'*/
+ dtransposea(buf2,no_of_states,no_of_states,buf1);
+ for(col=no_of_states; col < 2*no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ LA[col*2*no_of_states+row] = \
+ -1.0*buf1[(col-no_of_states)*no_of_states + (row-no_of_states)];
+ }
+ }
+
+ /*Block 12 --> -B*Ri*B'*/
+ dmulma(BRi,no_of_states,no_of_inputs,B_t,no_of_inputs,no_of_states,buf1);
+ for(col=no_of_states; col < 2*no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ LA[col*2*no_of_states+row] = \
+ -1.0*buf1[(col-no_of_states)*no_of_states + row];
+ }
+ }
+
+ /*Block 21 --> -Q + S'*Ri*S*/
+ dmulma(StRi,no_of_states,no_of_inputs,S,no_of_inputs,no_of_states,buf1);
+ ddiffa(buf1,no_of_states*no_of_states,Q,no_of_states*no_of_states,buf2);
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ LA[col*2*no_of_states+row] = \
+ buf2[col*no_of_states + (row-no_of_states)];
+ }
+ }
+
+
+ /*Freeup umwanted variables*/
+ free(A);
+ free(Q);
+ free(R);
+ free(BRi);
+ free(S_t);
+ free(StRi);
+ free(B);
+
+ /*Find schur decomposition of LA*/
+ wsmall = (double*) malloc(4*no_of_states*no_of_states*sizeof(double));
+ ks = (int)dschura(LA,2*no_of_states,1,2,wsmall,NULL);
+
+ X12 = (double*) malloc(no_of_states*no_of_states*sizeof(double));
+ phi12 = (double*) malloc(no_of_states*no_of_states*sizeof(double));
+
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ X12[col*no_of_states + row] = wsmall[col*2*no_of_states+row];
+ }
+ }
+
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ phi12[col*no_of_states + (row-no_of_states)] = \
+ wsmall[col*2*no_of_states+row];
+ }
+ }
+
+ drdivma(phi12,no_of_states,no_of_states,X12,no_of_states,no_of_states,X);
+
+ buf3 = (double*) malloc(no_of_inputs*no_of_states*sizeof(double));
+ buf4 = (double*) malloc(no_of_inputs*no_of_states*sizeof(double));
+
+ dmulma(B_t,no_of_inputs,no_of_states,X,no_of_states,no_of_states,buf3);
+ dadda(buf3,no_of_inputs*no_of_states,S,no_of_inputs*no_of_states,buf4);
+ dmulma(Ri,no_of_inputs,no_of_inputs,buf4,no_of_inputs,no_of_states,buf3);
+
+ for(row = 0;row<no_of_inputs*no_of_states;row++)
+ {
+ K[row] = -buf3[row];
+ }
+
+ }
+ else if(dom == 2)
+ {
+ /*Setup LA and LE*/
+ LA = (double*) malloc(4*no_of_states*no_of_states*sizeof(double));
+ deyea(LA,2*no_of_states,2*no_of_states);
+ LE = (double*) malloc(4*no_of_states*no_of_states*sizeof(double));
+ deyea(LE,2*no_of_states,2*no_of_states);
+
+ /*Block 11 --> A - B*Ri*S*/
+ dmulma(BRi,no_of_states,no_of_inputs,S,no_of_inputs,no_of_states,buf1);
+ ddiffa(A,no_of_states*no_of_states,buf1,no_of_states*no_of_states,buf2);
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ LA[col*2*no_of_states+row] = buf2[col*no_of_states + row];
+ }
+ }
+
+ /*Block 22= Block 11' --> A' - S'*Ri*B'*/
+ dtransposea(buf2,no_of_states,no_of_states,buf1);
+ for(col=no_of_states; col < 2*no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ LE[col*2*no_of_states+row] = \
+ buf1[(col-no_of_states)*no_of_states + (row-no_of_states)];
+ }
+ }
+
+ /*Block 21 --> -Q + S'*Ri*S*/
+ dmulma(StRi,no_of_states,no_of_inputs,S,no_of_inputs,no_of_states,buf1);
+ ddiffa(buf1,no_of_states*no_of_states,Q,no_of_states*no_of_states,buf2);
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ LA[col*2*no_of_states+row] = \
+ buf2[col*no_of_states + (row-no_of_states)];
+ }
+ }
+
+
+ /*Block 12 --> B*Ri*B'*/
+ dmulma(BRi,no_of_states,no_of_inputs,B_t,no_of_inputs,no_of_states,buf1);
+ for(col=no_of_states; col < 2*no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ LE[col*2*no_of_states+row] = \
+ buf1[(col-no_of_states)*no_of_states + row];
+ }
+ }
+
+
+ free(Q);
+ free(BRi);
+ free(S_t);
+ free(StRi);
+
+ /*Find schur decomposition of LA*/
+ wsmall = (double*) malloc(4*no_of_states*no_of_states*sizeof(double));
+ ks = (int)dgschura(LA,2*no_of_states,LE,2,2,wsmall,NULL,NULL,NULL);
+
+ X12 = (double*) malloc(no_of_states*no_of_states*sizeof(double));
+ phi12 = (double*) malloc(no_of_states*no_of_states*sizeof(double));
+
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ X12[col*no_of_states + row] = wsmall[col*2*no_of_states+row];
+ }
+ }
+
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = no_of_states; row < 2*no_of_states; row++)
+ {
+ phi12[col*no_of_states + (row-no_of_states)] = \
+ wsmall[col*2*no_of_states+row];
+ }
+ }
+
+ drdivma(phi12,no_of_states,no_of_states,X12,no_of_states,no_of_states,X);
+
+ buf5 = (double*) malloc(no_of_inputs*no_of_inputs*sizeof(double));
+ buf6 = (double*) malloc(no_of_inputs*no_of_inputs*sizeof(double));
+ buf3 = (double*) malloc(no_of_inputs*no_of_states*sizeof(double));
+ buf4 = (double*) malloc(no_of_inputs*no_of_states*sizeof(double));
+
+ /*inv(B'XB+R)*/
+ dmulma(B_t,no_of_inputs,no_of_states,X,no_of_states,no_of_states,buf3);
+ dmulma(buf3,no_of_inputs,no_of_states,B_t,no_of_states,no_of_inputs,buf6);
+ dadda(buf6,no_of_inputs*no_of_inputs,R,no_of_inputs*no_of_inputs,buf5);
+ dinverma(buf5,buf6,no_of_inputs);
+ /*B'XA+S*/
+ dmulma(B_t,no_of_inputs,no_of_states,X,no_of_states,no_of_states,buf3);
+ dmulma(buf3,no_of_inputs,no_of_states,A,no_of_states,no_of_states,buf4);
+ dadda(buf4,no_of_inputs*no_of_states,S,no_of_inputs*no_of_states,buf3);
+
+ dmulma(buf6,no_of_inputs,no_of_inputs,buf3,no_of_inputs,no_of_states,buf4);
+
+ for(row = 0;row<no_of_inputs*no_of_states;row++)
+ {
+ K[row] = -buf4[row];
+ }
+
+ free(A);
+ free(B);
+ free(R);
+ free(buf5);
+ free(buf6);
+
+ }
+
+ free(B_t);
+ free(S);
+ free(wsmall);
+ free(X12);
+ free(phi12);
+ free(buf1);
+ free(buf2);
+ free(buf3);
+ free(buf4);
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/CACSD/obscont/dobsconta.c b/2.3-1/src/c/CACSD/obscont/dobsconta.c
new file mode 100644
index 00000000..c67b70e2
--- /dev/null
+++ b/2.3-1/src/c/CACSD/obscont/dobsconta.c
@@ -0,0 +1,284 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for calculating observer controller.
+ Refer 'obscont.sci' in scilab source.*/
+
+#include <stdlib.h>
+#include "matrixMultiplication.h"
+#include "addition.h"
+
+void dobsconta(double* sys, int sys_rows, int sys_cols, double* Kc, double* Kf, \
+ double *K, double *r)
+{
+ int no_of_states, no_of_inputs, no_of_outputs, dom = 1;
+ int row,col;
+ no_of_states = (int)sys[sys_rows*(sys_cols-1)];
+ no_of_inputs = (int)sys[sys_rows*(sys_cols-1) + 1];
+ no_of_outputs = sys_rows - no_of_states;
+
+ int no_of_cols;
+ int no_of_rows;
+
+ double *A, *B, *C, *D;
+ double *BKc, *KfC, *KfD,*DKc;
+ double *buf, *buf1, *buf2;
+
+ A = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ B = (double*) malloc (no_of_states*no_of_inputs*sizeof(double));
+ C = (double*) malloc (no_of_states*no_of_outputs*sizeof(double));
+ D = (double*) malloc (no_of_inputs*no_of_outputs*sizeof(double));
+
+ BKc = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ KfC = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ KfD = (double*) malloc (no_of_states*no_of_inputs*sizeof(double));
+ DKc = (double*) malloc (no_of_outputs*no_of_states*sizeof(double));
+ buf = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ buf1 = (double*) malloc (no_of_states*no_of_inputs*sizeof(double));
+ buf2 = (double*) malloc (no_of_outputs*no_of_states*sizeof(double));
+
+ /*Get A from system matrix*/
+ for(col = 0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ A[col*no_of_states + row] = sys[col*sys_rows + row];
+ }
+ }
+
+ /*Get matrix B from system matrix*/
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ B[col * no_of_states + row] = \
+ sys[col * sys_rows + no_of_states*sys_rows + row];
+ }
+ }
+
+ /*Get matrix C from system matrix*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ C[col * no_of_outputs + row] = \
+ sys[no_of_states + (col*sys_rows) + row];
+ }
+ }
+
+ /*Get matrix D from system matrix*/
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ D[col * no_of_outputs + row] = \
+ sys[(no_of_states+col)*sys_rows + no_of_states + row];
+ }
+ }
+
+ dom = (int)sys[(sys_rows*(sys_cols-2)) + no_of_states];
+
+ dmulma(B,no_of_states,no_of_inputs,Kc,no_of_inputs,no_of_states,BKc);
+ dmulma(Kf,no_of_states,no_of_outputs,C,no_of_outputs,no_of_states,KfC);
+ dmulma(Kf,no_of_states,no_of_outputs,D,no_of_outputs,no_of_inputs,KfD);
+
+ /*Variables are reused to save memory*/
+ /*A+BKc*/
+ dadda(A,no_of_states*no_of_states,BKc,no_of_states*no_of_states,buf);
+ /*A+BKc+KfC*/
+ dadda(KfC,no_of_states*no_of_states,buf,no_of_states*no_of_states,A);
+ /*KfDKc*/
+ dmulma(KfD,no_of_states,no_of_inputs,Kc,no_of_inputs,no_of_states,BKc);
+ /*A+BKc+KfC+KfDKc*/
+ dadda(A,no_of_states*no_of_states,BKc,no_of_states*no_of_states,buf);
+
+ /*Dimensions of K*/
+ no_of_cols = no_of_states + no_of_inputs + 2;
+ no_of_rows = no_of_states + no_of_outputs;
+
+ if(r == NULL)
+ {
+ /*Dimensions of K*/
+ no_of_cols = no_of_states + no_of_outputs + 2;
+ no_of_rows = no_of_states + no_of_inputs;
+
+ for(col = 0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ K[col*no_of_rows + row] = buf[col*no_of_states + row];
+ }
+
+ }
+
+ /*Copy matrix -Kf in out matrix*/
+ for(col=0; col < no_of_outputs; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ K[col * no_of_rows + no_of_states*no_of_rows + row] \
+ = -1.0*Kf[col * no_of_states + row];
+ }
+ }
+
+ /*Copy matrix Kc in out matrix*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_inputs; row++)
+ {
+ K[no_of_states + (col*no_of_rows) + row] = Kc[col * no_of_inputs + row];
+ }
+ }
+
+ K[(no_of_rows*(no_of_cols-2)) + no_of_states] = dom;
+ /*Insert no of states and inputs in last column*/
+ K[(no_of_rows*(no_of_cols-1))] = no_of_states;
+ K[(no_of_rows*(no_of_cols-1))+1] = no_of_outputs;
+ /*For K, no_of_outputs is no of inputs*/
+
+ }
+ else
+ {
+ /*Dimensions of K*/
+ no_of_cols = no_of_states + no_of_inputs + no_of_outputs + 2;
+ no_of_rows = no_of_states + no_of_outputs + no_of_inputs;
+
+ r[0] = no_of_outputs;
+ r[1] = no_of_inputs;
+
+ for(col = 0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ K[col*no_of_rows + row] = buf[col*no_of_states + row];
+ }
+
+ }
+
+ /*Copy matrix -Kf in out matrix*/
+ for(col=0; col < no_of_outputs; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ K[col * no_of_rows + no_of_states*no_of_rows + row] \
+ = -1.0*Kf[col * no_of_states + row];
+ }
+ }
+
+ /*B+Kf*D*/
+ dadda(B,no_of_states*no_of_inputs,KfD,no_of_states*no_of_inputs,buf1);
+
+ /*Copy matrix (B+KfD) in out matrix*/
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ K[col * no_of_rows + (no_of_states+no_of_outputs)*no_of_rows \
+ + row] = buf1[col * no_of_states + row];
+ }
+ }
+
+ /*DKc*/
+ dmulma(D,no_of_outputs,no_of_inputs,Kc,no_of_inputs,no_of_states,DKc);
+ /*C+DKc*/
+ dadda(C,no_of_outputs*no_of_states,DKc,no_of_outputs*no_of_states,buf2);
+
+ /*Copy matrix Kc in out matrix*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_inputs; row++)
+ {
+ K[no_of_states + (col*no_of_rows) + row] \
+ = Kc[col * no_of_inputs + row];
+ }
+ }
+
+ /*Copy -(C+DKc) in out matrix*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ K[(no_of_states+no_of_inputs) + (col*no_of_rows) + row] \
+ = -1.0*buf2[col * no_of_outputs + row];
+ }
+ }
+
+ /*Block 22 for K*/
+ for(col=0; col < no_of_outputs; col++)
+ {
+ for(row = 0; row < no_of_inputs; row++)
+ {
+ K[no_of_states + (col*no_of_rows) + no_of_states*no_of_rows \
+ + row] = 0;
+ }
+ }
+
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_inputs; row++)
+ {
+ if(row == col)
+ K[no_of_states + (col*no_of_rows) + \
+ (no_of_states+no_of_outputs)*no_of_rows + row] = 1;
+ else
+ K[no_of_states + (col*no_of_rows) + \
+ (no_of_states+no_of_outputs)*no_of_rows + row] = 0;
+ }
+ }
+
+ for(col=0; col < no_of_outputs; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ if(row == col)
+ K[no_of_states + no_of_inputs + (col*no_of_rows) + \
+ no_of_states*no_of_rows + row] = 1;
+ else
+ K[no_of_states + no_of_inputs + (col*no_of_rows) + \
+ no_of_states*no_of_rows + row] = 0;
+ }
+ }
+
+
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ K[no_of_states + no_of_inputs + (col*no_of_rows) + \
+ (no_of_states+no_of_outputs)*no_of_rows + row] \
+ = -1.0*D[col*no_of_inputs + row];
+ }
+ }
+
+
+ K[(no_of_rows*(no_of_cols-2))+ no_of_states] = dom;
+ /*Insert no of states and inputs in last column*/
+ K[(no_of_rows*(no_of_cols-1))] = no_of_states;
+ K[(no_of_rows*(no_of_cols-1))+1] = no_of_outputs + no_of_inputs;
+ /*For K, (no_of_outputs+no_of_inputs) is no of inputs*/
+
+
+ }
+
+
+ free(A);
+ free(B);
+ free(C);
+ free(D);
+ free(BKc);
+ free(KfC);
+ free(KfD);
+ free(DKc);
+ free(buf);
+ free(buf1);
+ free(buf2);
+}
diff --git a/2.3-1/src/c/CACSD/syslin/dsyslina.c b/2.3-1/src/c/CACSD/syslin/dsyslina.c
new file mode 100644
index 00000000..3c20c65c
--- /dev/null
+++ b/2.3-1/src/c/CACSD/syslin/dsyslina.c
@@ -0,0 +1,107 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for declaring state space system*/
+/*output structure is as follows :
+ | A B X0 |
+ | C D dom|
+ where dom is 1 for 'c' and 2 for 'd'
+ Another column is appended with no_of_states and no_inputs as its elements */
+
+
+
+#include <stdlib.h>
+
+void dsyslina(char* dom, double* A, int no_of_states, double* B, int no_of_inputs, \
+ double* C, int no_of_outputs, double* D, double* X0, double* out)
+{
+ int row = 0,col = 0;
+ int no_of_cols = no_of_states + no_of_inputs + 2;
+ int no_of_rows = no_of_states + no_of_outputs;
+ /*Copy matrix A into out matrix*/
+ for(col = 0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ out[col*no_of_rows + row] = A[col*no_of_states + row];
+ }
+
+ }
+
+ /*Copy matrix B in out matrix*/
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ out[col * no_of_rows + no_of_states*no_of_rows + row] \
+ = B[col * no_of_states + row];
+ }
+ }
+
+ /*Copy matrix C in out matrix*/
+ for(col=0; col < no_of_states; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ out[no_of_states + (col*no_of_rows) + row] = C[col * no_of_outputs + row];
+ }
+ }
+
+ /*Copy matrix D in out matrix*/
+ if( D != NULL)
+ {
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ out[(no_of_states+col)*no_of_rows + no_of_states + row] = \
+ D[col * no_of_outputs + row];
+ }
+ }
+ }
+ else
+ {
+ for(col=0; col < no_of_inputs; col++)
+ {
+ for(row = 0; row < no_of_outputs; row++)
+ {
+ out[(no_of_states+col)*no_of_rows + no_of_states + row] = 0;
+ }
+ }
+ }
+
+ /*Copy matrix X0 in out matrix*/
+ if( X0 != NULL)
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ out[(no_of_rows*(no_of_cols-1))+row] = X0[row];
+ }
+ }
+ else
+ {
+ for(row = 0; row < no_of_states; row++)
+ {
+ out[(no_of_rows*(no_of_cols-1))+row] = 0;
+ }
+ }
+
+ if(*dom == 'c')
+ out[(no_of_rows*(no_of_cols-2)) + no_of_states] = 1;
+ else if(*dom == 'd')
+ out[(no_of_rows*(no_of_cols-2)) + no_of_states] = 2;
+
+ /*Insert no of states and inputs in last column*/
+ out[(no_of_rows*(no_of_cols-1))] = no_of_states;
+ out[(no_of_rows*(no_of_cols-1))+1] = no_of_inputs;
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/includes/files.h b/2.3-1/src/c/Files/includes/files.h
new file mode 100644
index 00000000..4491e7e6
--- /dev/null
+++ b/2.3-1/src/c/Files/includes/files.h
@@ -0,0 +1,47 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __FILES_H__
+#define __FILES_H__
+
+#include <stdio.h>
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+FILE *mopen (char *path, char *mode);
+
+int mclose(FILE *fptr);
+
+/*For writing single/scalar values*/
+int dmputs (FILE *fptr, double data);
+int smputs (FILE *fptr, float data);
+int u8mputs (FILE *fptr, uint8 data);
+int i8mputs (FILE *fptr, int8 data);
+int u16mputs (FILE *fptr, uint16 data);
+int i16mputs (FILE *fptr, int16 data);
+
+/*For writing array/matrix values*/
+int dmputa (FILE *fptr, double *data, int row, int col);
+int smputa (FILE *fptr, float *data, int row, int col);
+int u8mputa (FILE *fptr, uint8 *data, int row, int col);
+int i8mputa (FILE *fptr, int8 *data, int row, int col);
+int u16mputa (FILE *fptr, uint16 *data, int row, int col);
+int i16mputa (FILE *fptr, int16 *data, int row, int col);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__FILES_H__*/
diff --git a/2.3-1/src/c/Files/interfaces/int_files.h b/2.3-1/src/c/Files/interfaces/int_files.h
new file mode 100644
index 00000000..862754fc
--- /dev/null
+++ b/2.3-1/src/c/Files/interfaces/int_files.h
@@ -0,0 +1,58 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_FILES_H__
+#define __INT_FILES_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2g2mopenf0(path, pathsize, mode, modesize) mopen(path, mode)
+
+#define f0mclosei0(fptr) mclose(fptr)
+
+#define d0g2f0mputi0(data, format, formatsize, fptr) dmputs(fptr, data)
+
+#define s0g2f0mputi0(data, format, formatsize, fptr) smputs(fptr, data)
+
+#define u80g2f0mputi0(data, format, formatsize, fptr) u8mputs(fptr, data)
+
+#define i80g2f0mputi0(data, format, formatsize, fptr) i8mputs(fptr, data)
+
+#define u160g2f0mputi0(data, format, formatsize, fptr) u16mputs(fptr, data)
+
+#define i160g2f0mputi0(data, format, formatsize, fptr) i16mputs(fptr, data)
+
+#define d2g2f0mputi0(data, size1, format, formatsize, fptr) \
+ dmputa(fptr, data, size1[0], size1[1])
+
+#define s2g2f0mputi0(data, size1, format, formatsize, fptr) \
+ smputa(fptr, data, size1[0], size1[1])
+
+#define u82g2f0mputi0(data, size1, format, formatsize, fptr) \
+ u8mputa(fptr, data, size1[0], size1[1])
+
+#define i82g2f0mputi0(data, size1, format, formatsize, fptr) \
+ i8mputa(fptr, data, size1[0], size1[1])
+
+#define u162g2f0mputi0(data, size1, format, formatsize, fptr) \
+ u16mputa(fptr, data, size1[0], size1[1])
+
+#define i162g2f0mputi0(data, size1, format, formatsize, fptr) \
+ i16mputa(fptr, data, size1[0], size1[1])
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_FILES_H__*/
diff --git a/2.3-1/src/c/Files/mclose/mclose.c b/2.3-1/src/c/Files/mclose/mclose.c
new file mode 100644
index 00000000..5e689358
--- /dev/null
+++ b/2.3-1/src/c/Files/mclose/mclose.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to close file pointed by input file handle*/
+
+#include "files.h"
+
+int mclose(FILE *fptr)
+{
+ int res;
+ res = fclose(fptr);
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mopen/mopen.c b/2.3-1/src/c/Files/mopen/mopen.c
new file mode 100644
index 00000000..1cb1c880
--- /dev/null
+++ b/2.3-1/src/c/Files/mopen/mopen.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to open a file and obtain handle for the same */
+
+#include "files.h"
+
+FILE *mopen (char *path, char *mode)
+{
+ FILE *fptr;
+
+ fptr = fopen(path, mode);
+
+ return fptr;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/dmputa.c b/2.3-1/src/c/Files/mput/dmputa.c
new file mode 100644
index 00000000..9cb6482b
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/dmputa.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'double' array/matrix in given file */
+
+#include "files.h"
+
+int dmputa (FILE *fptr, double *data, int row, int col)
+{
+ int res = 0, row_ctr, col_ctr;
+
+ if(fptr != NULL)
+ {
+ for(row_ctr = 0; row_ctr < row; row_ctr++)
+ {
+ for(col_ctr = 0; col_ctr < col; col_ctr++)
+ {
+ res += fprintf(fptr, "%f ", data[row*col_ctr+row_ctr]);
+ }
+ fprintf(fptr, "\n");
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/dmputs.c b/2.3-1/src/c/Files/mput/dmputs.c
new file mode 100644
index 00000000..42780059
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/dmputs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'double' scalar in given file */
+
+#include <stdio.h>
+
+int dmputs (FILE *fptr, double data)
+{
+ int res;
+
+
+ if(fptr != NULL)
+ {
+ res = fprintf(fptr, "%f", data);
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/i16mputa.c b/2.3-1/src/c/Files/mput/i16mputa.c
new file mode 100644
index 00000000..daa07bf8
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/i16mputa.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'int16' array/matrix in given file */
+
+#include "files.h"
+
+int i16mputa (FILE *fptr, int16 *data, int row, int col)
+{
+ int res = 0, row_ctr, col_ctr;
+
+ if(fptr != NULL)
+ {
+ for(row_ctr = 0; row_ctr < row; row_ctr++)
+ {
+ for(col_ctr = 0; col_ctr < col; col_ctr++)
+ {
+ res += fprintf(fptr, "%d ", data[row*col_ctr+row_ctr]);
+ }
+ fprintf(fptr, "\n");
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/i16mputs.c b/2.3-1/src/c/Files/mput/i16mputs.c
new file mode 100644
index 00000000..43194f1f
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/i16mputs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'int16' scalar in given file */
+
+#include "files.h"
+
+int i16mputs (FILE *fptr, int16 data)
+{
+ int res;
+
+ if(fptr != NULL)
+ {
+ res = fprintf(fptr, "%d\n", data);
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/i8mputa.c b/2.3-1/src/c/Files/mput/i8mputa.c
new file mode 100644
index 00000000..50da3989
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/i8mputa.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'int8' array/matrix in given file */
+
+#include "files.h"
+
+int i8mputa (FILE *fptr, int8 *data, int row, int col)
+{
+ int res = 0, row_ctr, col_ctr;
+
+ if(fptr != NULL)
+ {
+ for(row_ctr = 0; row_ctr < row; row_ctr++)
+ {
+ for(col_ctr = 0; col_ctr < col; col_ctr++)
+ {
+ res += fprintf(fptr, "%d ", data[row*col_ctr+row_ctr]);
+ }
+ fprintf(fptr, "\n");
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/i8mputs.c b/2.3-1/src/c/Files/mput/i8mputs.c
new file mode 100644
index 00000000..1884bf2f
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/i8mputs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'int8' scalar in given file */
+
+#include "files.h"
+
+int i8mputs (FILE *fptr, int8 data)
+{
+ int res;
+
+ if(fptr != NULL)
+ {
+ res = fprintf(fptr, "%d\n", data);
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/smputa.c b/2.3-1/src/c/Files/mput/smputa.c
new file mode 100644
index 00000000..03098a78
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/smputa.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'float' array/matrix in given file */
+
+#include "files.h"
+
+int smputa (FILE *fptr, float *data, int row, int col)
+{
+ int res = 0, row_ctr, col_ctr;
+
+ if(fptr != NULL)
+ {
+ for(row_ctr = 0; row_ctr < row; row_ctr++)
+ {
+ for(col_ctr = 0; col_ctr < col; col_ctr++)
+ {
+ res += fprintf(fptr, "%f ", data[row*col_ctr+row_ctr]);
+ }
+ fprintf(fptr, "\n");
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/smputs.c b/2.3-1/src/c/Files/mput/smputs.c
new file mode 100644
index 00000000..10eeb7b5
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/smputs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'float' scalar in given file */
+
+#include "files.h"
+
+int smputs (FILE *fptr, float data)
+{
+ int res;
+
+ if(fptr != NULL)
+ {
+ res = fprintf(fptr, "%f\n", data);
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/u16mputa.c b/2.3-1/src/c/Files/mput/u16mputa.c
new file mode 100644
index 00000000..e2d2d8fe
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/u16mputa.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'uint16' array/matrix in given file */
+
+#include "files.h"
+
+int u16mputa (FILE *fptr, uint16 *data, int row, int col)
+{
+ int res = 0, row_ctr, col_ctr;
+
+ if(fptr != NULL)
+ {
+ for(row_ctr = 0; row_ctr < row; row_ctr++)
+ {
+ for(col_ctr = 0; col_ctr < col; col_ctr++)
+ {
+ res += fprintf(fptr, "%d ", data[row*col_ctr+row_ctr]);
+ }
+ fprintf(fptr, "\n");
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/u16mputs.c b/2.3-1/src/c/Files/mput/u16mputs.c
new file mode 100644
index 00000000..46b95221
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/u16mputs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'uint16' scalar in given file */
+
+#include "files.h"
+
+int u16mputs (FILE *fptr, uint16 data)
+{
+ int res;
+
+ if(fptr != NULL)
+ {
+ res = fprintf(fptr, "%d\n", data);
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/u8mputa.c b/2.3-1/src/c/Files/mput/u8mputa.c
new file mode 100644
index 00000000..d2baee16
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/u8mputa.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'uint8' array/matrix in given file */
+
+#include "files.h"
+
+int u8mputa (FILE *fptr, uint8 *data, int row, int col)
+{
+ int res = 0, row_ctr, col_ctr;
+
+ if(fptr != NULL)
+ {
+ for(row_ctr = 0; row_ctr < row; row_ctr++)
+ {
+ for(col_ctr = 0; col_ctr < col; col_ctr++)
+ {
+ res += fprintf(fptr, "%d ", data[row*col_ctr+row_ctr]);
+ }
+ fprintf(fptr, "\n");
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/Files/mput/u8mputs.c b/2.3-1/src/c/Files/mput/u8mputs.c
new file mode 100644
index 00000000..a53179e9
--- /dev/null
+++ b/2.3-1/src/c/Files/mput/u8mputs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function ot write 'uint8' scalar in given file */
+
+#include "files.h"
+
+int u8mputs (FILE *fptr, uint8 data)
+{
+ int res;
+
+ if(fptr != NULL)
+ {
+ res = fprintf(fptr, "%d\n", data);
+ }
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/Makefile.am
new file mode 100644
index 00000000..5a9a6120
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/Makefile.am
@@ -0,0 +1,25 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+SUBDIRS= abs \
+ conj \
+ find \
+ isempty \
+ isnan \
+ rand \
+ sign \
+ pythag \
+ size \
+ type \
+ length \
+ frexp\
+ find2d
diff --git a/2.3-1/src/c/auxiliaryFunctions/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/Makefile.in
new file mode 100644
index 00000000..edc340c4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/Makefile.in
@@ -0,0 +1,573 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/auxiliaryFunctions
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = abs \
+ conj \
+ find \
+ isempty \
+ isnan \
+ rand \
+ sign \
+ pythag \
+ size \
+ type \
+ length \
+ frexp\
+ find2d
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/abs/Makefile.am
new file mode 100644
index 00000000..5ed377e4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/Makefile.am
@@ -0,0 +1,65 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAbs_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAbs.la
+
+libAbs_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sabss.c \
+ dabss.c \
+ cabss.c \
+ zabss.c \
+ sabsa.c \
+ dabsa.c \
+ cabsa.c \
+ zabsa.c
+
+HEAD = ../includes/abs.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatAbs testDoubleAbs
+
+TESTS = testFloatAbs testDoubleAbs
+
+#
+# -*- Abs Tests -*-
+#
+testFloatAbs_SOURCES = testAbs.h testFloatAbs.c
+testFloatAbs_CFLAGS = $(check_INCLUDES)
+testFloatAbs_LDADD = $(check_LDADD)
+
+testDoubleAbs_SOURCES = testAbs.h testDoubleAbs.c
+testDoubleAbs_CFLAGS = $(check_INCLUDES)
+testDoubleAbs_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/abs/Makefile.in
new file mode 100644
index 00000000..ef9df92c
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/Makefile.in
@@ -0,0 +1,800 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatAbs$(EXEEXT) testDoubleAbs$(EXEEXT)
+TESTS = testFloatAbs$(EXEEXT) testDoubleAbs$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/abs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAbs_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAbs_la-sabss.lo libAbs_la-dabss.lo \
+ libAbs_la-cabss.lo libAbs_la-zabss.lo libAbs_la-sabsa.lo \
+ libAbs_la-dabsa.lo libAbs_la-cabsa.lo libAbs_la-zabsa.lo
+am_libAbs_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAbs_la_OBJECTS = $(am_libAbs_la_OBJECTS)
+libAbs_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAbs_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleAbs_OBJECTS = testDoubleAbs-testDoubleAbs.$(OBJEXT)
+testDoubleAbs_OBJECTS = $(am_testDoubleAbs_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleAbs_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleAbs_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleAbs_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatAbs_OBJECTS = testFloatAbs-testFloatAbs.$(OBJEXT)
+testFloatAbs_OBJECTS = $(am_testFloatAbs_OBJECTS)
+testFloatAbs_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatAbs_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatAbs_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAbs_la_SOURCES) $(testDoubleAbs_SOURCES) \
+ $(testFloatAbs_SOURCES)
+DIST_SOURCES = $(libAbs_la_SOURCES) $(testDoubleAbs_SOURCES) \
+ $(testFloatAbs_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAbs_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAbs.la
+libAbs_la_SOURCES = $(HEAD) $(SRC)
+SRC = sabss.c \
+ dabss.c \
+ cabss.c \
+ zabss.c \
+ sabsa.c \
+ dabsa.c \
+ cabsa.c \
+ zabsa.c
+
+HEAD = ../includes/abs.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Abs Tests -*-
+#
+testFloatAbs_SOURCES = testAbs.h testFloatAbs.c
+testFloatAbs_CFLAGS = $(check_INCLUDES)
+testFloatAbs_LDADD = $(check_LDADD)
+testDoubleAbs_SOURCES = testAbs.h testDoubleAbs.c
+testDoubleAbs_CFLAGS = $(check_INCLUDES)
+testDoubleAbs_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/abs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/abs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAbs.la: $(libAbs_la_OBJECTS) $(libAbs_la_DEPENDENCIES)
+ $(libAbs_la_LINK) -rpath $(pkglibdir) $(libAbs_la_OBJECTS) $(libAbs_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleAbs$(EXEEXT): $(testDoubleAbs_OBJECTS) $(testDoubleAbs_DEPENDENCIES)
+ @rm -f testDoubleAbs$(EXEEXT)
+ $(testDoubleAbs_LINK) $(testDoubleAbs_OBJECTS) $(testDoubleAbs_LDADD) $(LIBS)
+testFloatAbs$(EXEEXT): $(testFloatAbs_OBJECTS) $(testFloatAbs_DEPENDENCIES)
+ @rm -f testFloatAbs$(EXEEXT)
+ $(testFloatAbs_LINK) $(testFloatAbs_OBJECTS) $(testFloatAbs_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-cabsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-cabss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-dabsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-dabss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-sabsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-sabss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-zabsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAbs_la-zabss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleAbs-testDoubleAbs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatAbs-testFloatAbs.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAbs_la-sabss.lo: sabss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-sabss.lo -MD -MP -MF $(DEPDIR)/libAbs_la-sabss.Tpo -c -o libAbs_la-sabss.lo `test -f 'sabss.c' || echo '$(srcdir)/'`sabss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-sabss.Tpo $(DEPDIR)/libAbs_la-sabss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sabss.c' object='libAbs_la-sabss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-sabss.lo `test -f 'sabss.c' || echo '$(srcdir)/'`sabss.c
+
+libAbs_la-dabss.lo: dabss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-dabss.lo -MD -MP -MF $(DEPDIR)/libAbs_la-dabss.Tpo -c -o libAbs_la-dabss.lo `test -f 'dabss.c' || echo '$(srcdir)/'`dabss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-dabss.Tpo $(DEPDIR)/libAbs_la-dabss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dabss.c' object='libAbs_la-dabss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-dabss.lo `test -f 'dabss.c' || echo '$(srcdir)/'`dabss.c
+
+libAbs_la-cabss.lo: cabss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-cabss.lo -MD -MP -MF $(DEPDIR)/libAbs_la-cabss.Tpo -c -o libAbs_la-cabss.lo `test -f 'cabss.c' || echo '$(srcdir)/'`cabss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-cabss.Tpo $(DEPDIR)/libAbs_la-cabss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cabss.c' object='libAbs_la-cabss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-cabss.lo `test -f 'cabss.c' || echo '$(srcdir)/'`cabss.c
+
+libAbs_la-zabss.lo: zabss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-zabss.lo -MD -MP -MF $(DEPDIR)/libAbs_la-zabss.Tpo -c -o libAbs_la-zabss.lo `test -f 'zabss.c' || echo '$(srcdir)/'`zabss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-zabss.Tpo $(DEPDIR)/libAbs_la-zabss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zabss.c' object='libAbs_la-zabss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-zabss.lo `test -f 'zabss.c' || echo '$(srcdir)/'`zabss.c
+
+libAbs_la-sabsa.lo: sabsa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-sabsa.lo -MD -MP -MF $(DEPDIR)/libAbs_la-sabsa.Tpo -c -o libAbs_la-sabsa.lo `test -f 'sabsa.c' || echo '$(srcdir)/'`sabsa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-sabsa.Tpo $(DEPDIR)/libAbs_la-sabsa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sabsa.c' object='libAbs_la-sabsa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-sabsa.lo `test -f 'sabsa.c' || echo '$(srcdir)/'`sabsa.c
+
+libAbs_la-dabsa.lo: dabsa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-dabsa.lo -MD -MP -MF $(DEPDIR)/libAbs_la-dabsa.Tpo -c -o libAbs_la-dabsa.lo `test -f 'dabsa.c' || echo '$(srcdir)/'`dabsa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-dabsa.Tpo $(DEPDIR)/libAbs_la-dabsa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dabsa.c' object='libAbs_la-dabsa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-dabsa.lo `test -f 'dabsa.c' || echo '$(srcdir)/'`dabsa.c
+
+libAbs_la-cabsa.lo: cabsa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-cabsa.lo -MD -MP -MF $(DEPDIR)/libAbs_la-cabsa.Tpo -c -o libAbs_la-cabsa.lo `test -f 'cabsa.c' || echo '$(srcdir)/'`cabsa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-cabsa.Tpo $(DEPDIR)/libAbs_la-cabsa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cabsa.c' object='libAbs_la-cabsa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-cabsa.lo `test -f 'cabsa.c' || echo '$(srcdir)/'`cabsa.c
+
+libAbs_la-zabsa.lo: zabsa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -MT libAbs_la-zabsa.lo -MD -MP -MF $(DEPDIR)/libAbs_la-zabsa.Tpo -c -o libAbs_la-zabsa.lo `test -f 'zabsa.c' || echo '$(srcdir)/'`zabsa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAbs_la-zabsa.Tpo $(DEPDIR)/libAbs_la-zabsa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zabsa.c' object='libAbs_la-zabsa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAbs_la_CFLAGS) $(CFLAGS) -c -o libAbs_la-zabsa.lo `test -f 'zabsa.c' || echo '$(srcdir)/'`zabsa.c
+
+testDoubleAbs-testDoubleAbs.o: testDoubleAbs.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAbs_CFLAGS) $(CFLAGS) -MT testDoubleAbs-testDoubleAbs.o -MD -MP -MF $(DEPDIR)/testDoubleAbs-testDoubleAbs.Tpo -c -o testDoubleAbs-testDoubleAbs.o `test -f 'testDoubleAbs.c' || echo '$(srcdir)/'`testDoubleAbs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAbs-testDoubleAbs.Tpo $(DEPDIR)/testDoubleAbs-testDoubleAbs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAbs.c' object='testDoubleAbs-testDoubleAbs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAbs_CFLAGS) $(CFLAGS) -c -o testDoubleAbs-testDoubleAbs.o `test -f 'testDoubleAbs.c' || echo '$(srcdir)/'`testDoubleAbs.c
+
+testDoubleAbs-testDoubleAbs.obj: testDoubleAbs.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAbs_CFLAGS) $(CFLAGS) -MT testDoubleAbs-testDoubleAbs.obj -MD -MP -MF $(DEPDIR)/testDoubleAbs-testDoubleAbs.Tpo -c -o testDoubleAbs-testDoubleAbs.obj `if test -f 'testDoubleAbs.c'; then $(CYGPATH_W) 'testDoubleAbs.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAbs.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAbs-testDoubleAbs.Tpo $(DEPDIR)/testDoubleAbs-testDoubleAbs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAbs.c' object='testDoubleAbs-testDoubleAbs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAbs_CFLAGS) $(CFLAGS) -c -o testDoubleAbs-testDoubleAbs.obj `if test -f 'testDoubleAbs.c'; then $(CYGPATH_W) 'testDoubleAbs.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAbs.c'; fi`
+
+testFloatAbs-testFloatAbs.o: testFloatAbs.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAbs_CFLAGS) $(CFLAGS) -MT testFloatAbs-testFloatAbs.o -MD -MP -MF $(DEPDIR)/testFloatAbs-testFloatAbs.Tpo -c -o testFloatAbs-testFloatAbs.o `test -f 'testFloatAbs.c' || echo '$(srcdir)/'`testFloatAbs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAbs-testFloatAbs.Tpo $(DEPDIR)/testFloatAbs-testFloatAbs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAbs.c' object='testFloatAbs-testFloatAbs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAbs_CFLAGS) $(CFLAGS) -c -o testFloatAbs-testFloatAbs.o `test -f 'testFloatAbs.c' || echo '$(srcdir)/'`testFloatAbs.c
+
+testFloatAbs-testFloatAbs.obj: testFloatAbs.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAbs_CFLAGS) $(CFLAGS) -MT testFloatAbs-testFloatAbs.obj -MD -MP -MF $(DEPDIR)/testFloatAbs-testFloatAbs.Tpo -c -o testFloatAbs-testFloatAbs.obj `if test -f 'testFloatAbs.c'; then $(CYGPATH_W) 'testFloatAbs.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAbs.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAbs-testFloatAbs.Tpo $(DEPDIR)/testFloatAbs-testFloatAbs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAbs.c' object='testFloatAbs-testFloatAbs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAbs_CFLAGS) $(CFLAGS) -c -o testFloatAbs-testFloatAbs.obj `if test -f 'testFloatAbs.c'; then $(CYGPATH_W) 'testFloatAbs.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAbs.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/cabsa.c b/2.3-1/src/c/auxiliaryFunctions/abs/cabsa.c
new file mode 100644
index 00000000..cacf4273
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/cabsa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+
+void cabsa(floatComplex *in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = cabss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/cabss.c b/2.3-1/src/c/auxiliaryFunctions/abs/cabss.c
new file mode 100644
index 00000000..8cd766df
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/cabss.c
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+#include "sqrt.h"
+#include "max.h"
+#include "min.h"
+
+float cabss(floatComplex in) {
+ float real = sabss(creals(in));
+ float imag = sabss(cimags(in));
+ float zMax = max(real, imag);
+ float zMin = min(real, imag);
+
+ if(zMin == 0)
+ {
+ return zMax;
+ }
+ return zMax * (ssqrts(1 + (zMin / zMax) * (zMin / zMax)));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/dabsa.c b/2.3-1/src/c/auxiliaryFunctions/abs/dabsa.c
new file mode 100644
index 00000000..edff9910
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/dabsa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+
+void dabsa(double *in, int size, double* out){
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = dabss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/dabss.c b/2.3-1/src/c/auxiliaryFunctions/abs/dabss.c
new file mode 100644
index 00000000..5be86cd1
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/dabss.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+
+double dabss(double num) {
+ if (num >= 0) {
+ return num;
+ }
+ return -num;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/i16absa.c b/2.3-1/src/c/auxiliaryFunctions/abs/i16absa.c
new file mode 100644
index 00000000..2abedc47
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/i16absa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+void i16absa(int16 *in, int size, int16* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = i16abss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/i16abss.c b/2.3-1/src/c/auxiliaryFunctions/abs/i16abss.c
new file mode 100644
index 00000000..ab478333
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/i16abss.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+int16 i16abss(int16 num) {
+ if (num >= 0) {
+ return num;
+ }
+ return -num;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/i8absa.c b/2.3-1/src/c/auxiliaryFunctions/abs/i8absa.c
new file mode 100644
index 00000000..1a646e4a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/i8absa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+void i8absa(int8 *in, int size, int8* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = i8abss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/i8abss.c b/2.3-1/src/c/auxiliaryFunctions/abs/i8abss.c
new file mode 100644
index 00000000..2c3e0a04
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/i8abss.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+int8 i8abss(int8 num) {
+ if (num >= 0) {
+ return num;
+ }
+ return -num;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/sabsa.c b/2.3-1/src/c/auxiliaryFunctions/abs/sabsa.c
new file mode 100644
index 00000000..406afc59
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/sabsa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+
+void sabsa(float *in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = sabss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/sabss.c b/2.3-1/src/c/auxiliaryFunctions/abs/sabss.c
new file mode 100644
index 00000000..802951e6
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/sabss.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+
+float sabss(float num) {
+ if (num >= 0) {
+ return num;
+ }
+ return -num;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/testAbs.h b/2.3-1/src/c/auxiliaryFunctions/abs/testAbs.h
new file mode 100644
index 00000000..c334f678
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/testAbs.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTABS_H_
+#define _TESTABS_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "abs.h"
+
+int sabssTest(void);
+
+int dabssTest(void);
+
+int cabssTest(void);
+
+int zabssTest(void);
+
+int sabsaTest(void);
+
+int dabsaTest(void);
+
+int cabsaTest(void);
+
+int zabsaTest(void);
+
+int testAbs(void);
+
+#endif /* ! _TESTABS_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/testDoubleAbs.c b/2.3-1/src/c/auxiliaryFunctions/abs/testDoubleAbs.c
new file mode 100644
index 00000000..c096692e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/testDoubleAbs.c
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAbs.h"
+
+int dabssTest() {
+ double value1 = -123456.789;
+ double value2 = 987654.321;
+ printf(">> Doubles \n");
+ assert(dabss(value1) == -value1);
+ assert(dabss(value2) == value2);
+ assert(dabss(0) == 0);
+ assert(dabss(-1) == 1);
+ assert(dabss(1) == 1);
+ return 0;
+}
+
+int zabssTest() {
+ doubleComplex value1 = DoubleComplex(4,3);
+ printf(">> Double Complex \n");
+ assert(zabss(value1) == 5);
+ return 0;
+}
+
+int dabsaTest() {
+ double value1 = -123456.789;
+ double value2 = 987654.321;
+ double value3 = 0;
+ double in[3];
+ double out[3];
+
+ in[0] = value1;
+ in[1] = value2;
+ in[2] = value3;
+
+ printf(">> Doubles Array\n");
+ dabsa(in, 3, out);
+ assert(out[0] == -value1);
+ assert(out[1] == value2);
+ assert(out[2] == value3);
+ assert(out[2] == 0);
+ return 0;
+}
+
+int zabsaTest() {
+ doubleComplex in[4];
+ double out[4];
+
+ in[0] = DoubleComplex(4,3);
+ in[1] = DoubleComplex(-4,3);
+ in[2] = DoubleComplex(4,-3);
+ in[3] = DoubleComplex(-4,-3);
+
+ printf(">> Double Complex Array\n");
+ zabsa(in, 4, out);
+ assert(out[0] == 5);
+ assert(out[1] == 5);
+ assert(out[2] == 5);
+ assert(out[3] == 5);
+ return 0;
+}
+
+int testAbs() {
+ int dabssStatus = 0;
+ int zabssStatus = 0;
+ int dabsaStatus = 0;
+ int zabsaStatus = 0;
+
+ printf(">>>> Abs Tests\n");
+ dabssStatus = dabssTest();
+ zabssStatus = zabssTest();
+ dabsaStatus = dabsaTest();
+ zabsaStatus = zabsaTest();
+
+ return (dabssStatus +
+ zabssStatus+
+ dabsaStatus +
+ zabsaStatus);
+}
+
+int main(void) {
+ assert(testAbs() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/testFloatAbs.c b/2.3-1/src/c/auxiliaryFunctions/abs/testFloatAbs.c
new file mode 100644
index 00000000..93bbba63
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/testFloatAbs.c
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAbs.h"
+
+int sabssTest() {
+ float value1 = -123456.789f;
+ float value2 = 987654.321f;
+ printf(">> Floats \n");
+ assert(sabss(value1) == -value1);
+ assert(sabss(value2) == value2);
+ assert(sabss(0) == 0);
+ assert(sabss(-1) == 1);
+ assert(sabss(1) == 1);
+ return 0;
+}
+
+int cabssTest() {
+ floatComplex value1 = FloatComplex(4.0f,3.0f);
+ printf(">> Float Complex \n");
+ assert(cabss(value1) == 5.0f);
+ return 0;
+}
+
+int sabsaTest() {
+ float value1 = -123456.789f;
+ float value2 = 987654.321f;
+ float value3 = 0.0f;
+ float in[3];
+ float out[3];
+
+ in[0] = value1;
+ in[1] = value2;
+ in[2] = value3;
+
+ printf(">> Floats Array\n");
+ sabsa(in, 3, out);
+ assert(out[0] == -value1);
+ assert(out[1] == value2);
+ assert(out[2] == value3);
+ assert(out[2] == 0.0f);
+ return 0;
+}
+
+int cabsaTest() {
+ floatComplex in[4];
+ float out[4];
+
+ in[0] = FloatComplex(4.0f,3.0f);
+ in[1] = FloatComplex(-4.0f,3.0f);
+ in[2] = FloatComplex(4.0f,-3.0f);
+ in[3] = FloatComplex(-4.0f,-3.0f);
+
+ printf(">> Float Complex Array\n");
+ cabsa(in, 4, out);
+ assert(out[0] == 5.0f);
+ assert(out[1] == 5.0f);
+ assert(out[2] == 5.0f);
+ assert(out[3] == 5.0f);
+ return 0;
+}
+
+int testAbs() {
+ int sabssStatus = 0;
+ int cabssStatus = 0;
+ int sabsaStatus = 0;
+ int cabsaStatus = 0;
+
+ printf(">>>> Float Abs Tests\n");
+ sabssStatus = sabssTest();
+ cabssStatus = cabssTest();
+ sabsaStatus = sabsaTest();
+ cabsaStatus = cabsaTest();
+
+ return (sabssStatus +
+ cabssStatus +
+ sabsaStatus +
+ cabsaStatus);
+}
+
+int main(void) {
+ assert(testAbs() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj b/2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj
new file mode 100644
index 00000000..da75e942
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5A8D4B59-AC5D-4BA0-A26F-17E740F35042}</ProjectGuid>
+ <RootNamespace>testDoubleAbs</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleAbs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testAbs.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj.filters
new file mode 100644
index 00000000..c16bb7b5
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/test_DoubleAbs/testDoubleAbs.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleAbs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testAbs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj b/2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj
new file mode 100644
index 00000000..a8e1fdc3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{4B5A02A3-C3EF-4A5C-B5A8-7264697D42B6}</ProjectGuid>
+ <RootNamespace>testFloatAbs</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatAbs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testAbs.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj.filters
new file mode 100644
index 00000000..5c85e70f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/test_FloatAbs/testFloatAbs.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatAbs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testAbs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/u16absa.c b/2.3-1/src/c/auxiliaryFunctions/abs/u16absa.c
new file mode 100644
index 00000000..60c1ed96
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/u16absa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+void u16absa(uint16 *in, int size, uint16* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = u16abss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/u16abss.c b/2.3-1/src/c/auxiliaryFunctions/abs/u16abss.c
new file mode 100644
index 00000000..2e15d25f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/u16abss.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+uint16 u16abss(uint16 num) {
+ if (num >= 0) {
+ return num;
+ }
+ return -num;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/u8absa.c b/2.3-1/src/c/auxiliaryFunctions/abs/u8absa.c
new file mode 100644
index 00000000..2edd8541
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/u8absa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+void u8absa(uint8 *in, int size, uint8* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = u8abss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/u8abss.c b/2.3-1/src/c/auxiliaryFunctions/abs/u8abss.c
new file mode 100644
index 00000000..220e9b8c
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/u8abss.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "abs.h"
+
+uint8 u8abss(uint8 num) {
+ if (num >= 0) {
+ return num;
+ }
+ return -num;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/zabsa.c b/2.3-1/src/c/auxiliaryFunctions/abs/zabsa.c
new file mode 100644
index 00000000..2b73432e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/zabsa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+
+void zabsa(doubleComplex *in, int size, double* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = zabss(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/abs/zabss.c b/2.3-1/src/c/auxiliaryFunctions/abs/zabss.c
new file mode 100644
index 00000000..4e7b4dd3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/abs/zabss.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "abs.h"
+#include "sqrt.h"
+#include "max.h"
+#include "min.h"
+
+double zabss(doubleComplex in) {
+ double real = dabss(zreals(in));
+ double imag = dabss(zimags(in));
+ double zMax = max(real, imag);
+ double zMin = min(real, imag);
+
+ if(zMin == 0)
+ {
+ return zMax;
+ }
+ return zMax * (dsqrts(1 + (zMin / zMax) * (zMin / zMax)));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj b/2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj
new file mode 100644
index 00000000..d152ba26
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj
@@ -0,0 +1,507 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{AF4A8AF2-CC9F-4991-BE6E-8AAF9CB5BFC9}</ProjectGuid>
+ <RootNamespace>auxiliaryFunctions</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../includes;../operations/includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AUXILIARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../includes;../operations/includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AUXILIARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../includes;../operations/includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AUXILIARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../includes;../operations/includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AUXILIARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="abs\cabsa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\cabss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\dabsa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\dabss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\sabsa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\sabss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\zabsa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="abs\zabss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conj\cconja.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conj\cconjs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conj\zconja.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conj\zconjs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find\cfinda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find\dfinda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find\sfinda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find\zfinda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find2d\cfind2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find2d\dfind2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find2d\sfind2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="find2d\zfind2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="frexp\dfrexps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="frexp\sfrexps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\cisnana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\cisnans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\disnana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\disnans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\sisnana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\sisnans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\zisnana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="isnan\zisnans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pythag\cpythags.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pythag\dpythags.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pythag\spythags.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pythag\zpythags.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\cranda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\crands.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\dranda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\drands.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\sranda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\srands.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\zranda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="rand\zrands.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\csigna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\csigns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\dsigna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\dsigns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\ssigna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\ssigns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\zsigna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sign\zsigns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="abs\Makefile.am" />
+ <None Include="conj\Makefile.am" />
+ <None Include="find\Makefile.am" />
+ <None Include="find2d\Makefile.am" />
+ <None Include="frexp\Makefile.am" />
+ <None Include="isnan\Makefile.am" />
+ <None Include="pythag\Makefile.am" />
+ <None Include="rand\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\abs.h" />
+ <ClInclude Include="includes\conj.h" />
+ <ClInclude Include="includes\dynlib_auxiliaryfunctions.h" />
+ <ClInclude Include="includes\find.h" />
+ <ClInclude Include="includes\find2d.h" />
+ <ClInclude Include="includes\frexp.h" />
+ <ClInclude Include="includes\isempty.h" />
+ <ClInclude Include="includes\isnan.h" />
+ <ClInclude Include="includes\length.h" />
+ <ClInclude Include="includes\max.h" />
+ <ClInclude Include="includes\min.h" />
+ <ClInclude Include="includes\pythag.h" />
+ <ClInclude Include="includes\rand.h" />
+ <ClInclude Include="includes\sign.h" />
+ <ClInclude Include="includes\size.h" />
+ <ClInclude Include="includes\type.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\operations\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj.filters
new file mode 100644
index 00000000..f84550bc
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/auxiliaryFunctions.vcxproj.filters
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\abs">
+ <UniqueIdentifier>{a20f4024-42d0-43f3-9f83-a9719b14699c}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\conj">
+ <UniqueIdentifier>{a0b76aea-8f6d-4671-8f84-096e86ab5d0b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\find">
+ <UniqueIdentifier>{0be62708-24dc-4ee0-b2c0-4cb62191c396}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\find2d">
+ <UniqueIdentifier>{b0d1ea94-0f26-46cf-b3e8-d44f6833dc2d}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\frexp">
+ <UniqueIdentifier>{b900d815-afa8-48e9-92c0-e1b53277942f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\isempty">
+ <UniqueIdentifier>{5901078e-0d30-4157-9789-03e80e3e277b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\isnan">
+ <UniqueIdentifier>{5332579b-316d-4830-9de8-bd72d0d56511}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\length">
+ <UniqueIdentifier>{39e0071f-0a03-4686-b2c2-da5ed82db0df}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\pythag">
+ <UniqueIdentifier>{bdd2dc71-9612-4b61-9a60-c598c3f03b85}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\rand">
+ <UniqueIdentifier>{f6035d57-7c08-48fb-bc55-e7c55c165edd}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\type">
+ <UniqueIdentifier>{ea170338-a2c4-4dd6-aedb-998de767fedd}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\size">
+ <UniqueIdentifier>{52b3f0d4-6f15-4e0e-90b7-3c3b0b42157e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\sign">
+ <UniqueIdentifier>{f1a35ccf-dacf-497e-bd3d-c88534e42095}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="abs\cabsa.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\cabss.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\dabsa.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\dabss.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\sabsa.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\sabss.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\zabsa.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="abs\zabss.c">
+ <Filter>Source Files\abs</Filter>
+ </ClCompile>
+ <ClCompile Include="conj\cconja.c">
+ <Filter>Source Files\conj</Filter>
+ </ClCompile>
+ <ClCompile Include="conj\cconjs.c">
+ <Filter>Source Files\conj</Filter>
+ </ClCompile>
+ <ClCompile Include="conj\zconja.c">
+ <Filter>Source Files\conj</Filter>
+ </ClCompile>
+ <ClCompile Include="conj\zconjs.c">
+ <Filter>Source Files\conj</Filter>
+ </ClCompile>
+ <ClCompile Include="find\cfinda.c">
+ <Filter>Source Files\find</Filter>
+ </ClCompile>
+ <ClCompile Include="find\dfinda.c">
+ <Filter>Source Files\find</Filter>
+ </ClCompile>
+ <ClCompile Include="find\sfinda.c">
+ <Filter>Source Files\find</Filter>
+ </ClCompile>
+ <ClCompile Include="find\zfinda.c">
+ <Filter>Source Files\find</Filter>
+ </ClCompile>
+ <ClCompile Include="find2d\cfind2da.c">
+ <Filter>Source Files\find2d</Filter>
+ </ClCompile>
+ <ClCompile Include="find2d\dfind2da.c">
+ <Filter>Source Files\find2d</Filter>
+ </ClCompile>
+ <ClCompile Include="find2d\sfind2da.c">
+ <Filter>Source Files\find2d</Filter>
+ </ClCompile>
+ <ClCompile Include="find2d\zfind2da.c">
+ <Filter>Source Files\find2d</Filter>
+ </ClCompile>
+ <ClCompile Include="frexp\dfrexps.c">
+ <Filter>Source Files\frexp</Filter>
+ </ClCompile>
+ <ClCompile Include="frexp\sfrexps.c">
+ <Filter>Source Files\frexp</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\cisnana.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\cisnans.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\disnana.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\disnans.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\sisnana.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\sisnans.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\zisnana.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="isnan\zisnans.c">
+ <Filter>Source Files\isnan</Filter>
+ </ClCompile>
+ <ClCompile Include="pythag\cpythags.c">
+ <Filter>Source Files\pythag</Filter>
+ </ClCompile>
+ <ClCompile Include="pythag\dpythags.c">
+ <Filter>Source Files\pythag</Filter>
+ </ClCompile>
+ <ClCompile Include="pythag\spythags.c">
+ <Filter>Source Files\pythag</Filter>
+ </ClCompile>
+ <ClCompile Include="pythag\zpythags.c">
+ <Filter>Source Files\pythag</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\cranda.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\crands.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\dranda.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\drands.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\sranda.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\srands.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\zranda.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="rand\zrands.c">
+ <Filter>Source Files\rand</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\csigna.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\csigns.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\dsigna.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\dsigns.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\ssigna.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\ssigns.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\zsigna.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ <ClCompile Include="sign\zsigns.c">
+ <Filter>Source Files\sign</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="abs\Makefile.am">
+ <Filter>Source Files\abs</Filter>
+ </None>
+ <None Include="conj\Makefile.am">
+ <Filter>Source Files\conj</Filter>
+ </None>
+ <None Include="find\Makefile.am">
+ <Filter>Source Files\find</Filter>
+ </None>
+ <None Include="find2d\Makefile.am">
+ <Filter>Source Files\find2d</Filter>
+ </None>
+ <None Include="frexp\Makefile.am">
+ <Filter>Source Files\frexp</Filter>
+ </None>
+ <None Include="isnan\Makefile.am">
+ <Filter>Source Files\isnan</Filter>
+ </None>
+ <None Include="pythag\Makefile.am">
+ <Filter>Source Files\pythag</Filter>
+ </None>
+ <None Include="rand\Makefile.am">
+ <Filter>Source Files\rand</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\abs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\conj.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_auxiliaryfunctions.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\find.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\find2d.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\frexp.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\isempty.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\isnan.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\length.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\max.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\min.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\pythag.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\rand.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\sign.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\size.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\type.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/conj/Makefile.am
new file mode 100644
index 00000000..e9c9bc98
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/Makefile.am
@@ -0,0 +1,44 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libConj_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libConj.la
+
+HEAD = ../includes/conj.h
+
+libConj_la_SOURCES = $(HEAD) \
+ cconja.c \
+ zconja.c \
+ zconjs.c \
+ cconjs.c
+
+check_PROGRAMS = testConj
+
+check_LDADD = libConj.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la
+
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+testConj_SOURCES = testConj.c
+testConj_LDADD = $(check_LDADD)
+testConj_CFLAGS = $(check_INCLUDES)
+
+TESTS = testConj
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/conj/Makefile.in
new file mode 100644
index 00000000..a3477788
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/Makefile.in
@@ -0,0 +1,710 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testConj$(EXEEXT)
+TESTS = testConj$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/conj
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libConj_la_LIBADD =
+am__objects_1 =
+am_libConj_la_OBJECTS = $(am__objects_1) libConj_la-cconja.lo \
+ libConj_la-zconja.lo libConj_la-zconjs.lo libConj_la-cconjs.lo
+libConj_la_OBJECTS = $(am_libConj_la_OBJECTS)
+libConj_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libConj_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testConj_OBJECTS = testConj-testConj.$(OBJEXT)
+testConj_OBJECTS = $(am_testConj_OBJECTS)
+testConj_DEPENDENCIES = $(check_LDADD)
+testConj_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testConj_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libConj_la_SOURCES) $(testConj_SOURCES)
+DIST_SOURCES = $(libConj_la_SOURCES) $(testConj_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libConj_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libConj.la
+HEAD = ../includes/conj.h
+libConj_la_SOURCES = $(HEAD) \
+ cconja.c \
+ zconja.c \
+ zconjs.c \
+ cconjs.c
+
+check_LDADD = libConj.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+testConj_SOURCES = testConj.c
+testConj_LDADD = $(check_LDADD)
+testConj_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/conj/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/conj/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libConj.la: $(libConj_la_OBJECTS) $(libConj_la_DEPENDENCIES)
+ $(libConj_la_LINK) -rpath $(pkglibdir) $(libConj_la_OBJECTS) $(libConj_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testConj$(EXEEXT): $(testConj_OBJECTS) $(testConj_DEPENDENCIES)
+ @rm -f testConj$(EXEEXT)
+ $(testConj_LINK) $(testConj_OBJECTS) $(testConj_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConj_la-cconja.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConj_la-cconjs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConj_la-zconja.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConj_la-zconjs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testConj-testConj.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libConj_la-cconja.lo: cconja.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -MT libConj_la-cconja.lo -MD -MP -MF $(DEPDIR)/libConj_la-cconja.Tpo -c -o libConj_la-cconja.lo `test -f 'cconja.c' || echo '$(srcdir)/'`cconja.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConj_la-cconja.Tpo $(DEPDIR)/libConj_la-cconja.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cconja.c' object='libConj_la-cconja.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -c -o libConj_la-cconja.lo `test -f 'cconja.c' || echo '$(srcdir)/'`cconja.c
+
+libConj_la-zconja.lo: zconja.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -MT libConj_la-zconja.lo -MD -MP -MF $(DEPDIR)/libConj_la-zconja.Tpo -c -o libConj_la-zconja.lo `test -f 'zconja.c' || echo '$(srcdir)/'`zconja.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConj_la-zconja.Tpo $(DEPDIR)/libConj_la-zconja.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zconja.c' object='libConj_la-zconja.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -c -o libConj_la-zconja.lo `test -f 'zconja.c' || echo '$(srcdir)/'`zconja.c
+
+libConj_la-zconjs.lo: zconjs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -MT libConj_la-zconjs.lo -MD -MP -MF $(DEPDIR)/libConj_la-zconjs.Tpo -c -o libConj_la-zconjs.lo `test -f 'zconjs.c' || echo '$(srcdir)/'`zconjs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConj_la-zconjs.Tpo $(DEPDIR)/libConj_la-zconjs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zconjs.c' object='libConj_la-zconjs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -c -o libConj_la-zconjs.lo `test -f 'zconjs.c' || echo '$(srcdir)/'`zconjs.c
+
+libConj_la-cconjs.lo: cconjs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -MT libConj_la-cconjs.lo -MD -MP -MF $(DEPDIR)/libConj_la-cconjs.Tpo -c -o libConj_la-cconjs.lo `test -f 'cconjs.c' || echo '$(srcdir)/'`cconjs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConj_la-cconjs.Tpo $(DEPDIR)/libConj_la-cconjs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cconjs.c' object='libConj_la-cconjs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConj_la_CFLAGS) $(CFLAGS) -c -o libConj_la-cconjs.lo `test -f 'cconjs.c' || echo '$(srcdir)/'`cconjs.c
+
+testConj-testConj.o: testConj.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testConj_CFLAGS) $(CFLAGS) -MT testConj-testConj.o -MD -MP -MF $(DEPDIR)/testConj-testConj.Tpo -c -o testConj-testConj.o `test -f 'testConj.c' || echo '$(srcdir)/'`testConj.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testConj-testConj.Tpo $(DEPDIR)/testConj-testConj.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testConj.c' object='testConj-testConj.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testConj_CFLAGS) $(CFLAGS) -c -o testConj-testConj.o `test -f 'testConj.c' || echo '$(srcdir)/'`testConj.c
+
+testConj-testConj.obj: testConj.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testConj_CFLAGS) $(CFLAGS) -MT testConj-testConj.obj -MD -MP -MF $(DEPDIR)/testConj-testConj.Tpo -c -o testConj-testConj.obj `if test -f 'testConj.c'; then $(CYGPATH_W) 'testConj.c'; else $(CYGPATH_W) '$(srcdir)/testConj.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testConj-testConj.Tpo $(DEPDIR)/testConj-testConj.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testConj.c' object='testConj-testConj.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testConj_CFLAGS) $(CFLAGS) -c -o testConj-testConj.obj `if test -f 'testConj.c'; then $(CYGPATH_W) 'testConj.c'; else $(CYGPATH_W) '$(srcdir)/testConj.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/cconja.c b/2.3-1/src/c/auxiliaryFunctions/conj/cconja.c
new file mode 100644
index 00000000..a975f4cf
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/cconja.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "conj.h"
+
+void cconja ( floatComplex* in , int size, floatComplex* out ){
+
+ int i = 0 ;
+
+ for ( i =0 ; i < size ; i++ )
+ out[i] = cconjs ( in[i]);
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/cconjs.c b/2.3-1/src/c/auxiliaryFunctions/conj/cconjs.c
new file mode 100644
index 00000000..c6aed15b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/cconjs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "conj.h"
+
+floatComplex cconjs ( floatComplex in )
+{
+ return FloatComplex ( creals ( in ) ,- cimags( in ));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/testConj.c b/2.3-1/src/c/auxiliaryFunctions/conj/testConj.c
new file mode 100644
index 00000000..bdb443fc
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/testConj.c
@@ -0,0 +1,139 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "conj.h"
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#define SIZE 100
+#define FMATRIX {0.0373321f,0.4293466f,0.3157233f,0.3682477f,0.1458774f,0.6768379f,0.5261979f,0.4003626f,\
+0.0029108f,0.3068181f,0.7902694f,0.9577950f,0.6689271f,0.2929616f,0.8223899f,0.0179846f,\
+0.8710701f,0.3181024f,0.5724473f,0.5738658f,0.3492018f,0.7067298f,0.3599201f,0.4052311f,\
+0.6140811f,0.6524047f,0.0295171f,0.5668896f,0.7114017f,0.4588491f,0.4720517f,0.0623731f,\
+0.0854401f,0.0134564f,0.3543002f,0.6719395f,0.1360619f,0.2119744f,0.4015942f,0.4036219f,\
+0.5628382f,0.5531093f,0.0768984f,0.5360758f,0.0900212f,0.6218026f,0.0001215f,0.7219727f,\
+0.6661293f,0.6799288f,0.9514125f,0.1206901f,0.7318910f,0.0831662f,0.8021909f,0.0290492f,\
+0.6502991f,0.7427882f,0.2176611f,0.9788486f,0.8925237f,0.3511275f,0.4745619f,0.7699462f,\
+0.0734342f,0.5894619f,0.2378993f,0.4076361f,0.4304818f,0.0370717f,0.6404148f,0.4130743f,\
+0.8396902f,0.0002195f,0.5085374f,0.4754997f,0.9625065f,0.9798011f,0.0785698f,0.9150032f,\
+0.6172610f,0.9964195f,0.0468599f,0.9245926f,0.9689865f,0.4916290f,0.2977053f,0.0603055f,\
+0.6313472f,0.0241030f,0.1527438f,0.9481178f,0.2744266f,0.4794727f,0.4855768f,0.6764004f,\
+0.8321250f,0.0125876f,0.5453780f,0.8426717f}
+#define DMATRIX {0.70964269945397973061,0.6610225578770041465759,0.7252350724302232265472,\
+0.510143497958779335022,0.2824866441078484058380,0.2214915128424763679504,\
+0.5767575385980308055878,0.7048253491520881652832,0.5607945644296705722809,\
+0.3628880484029650688171,0.3088326244615018367767,0.9813414867967367172241,\
+0.7428482254035770893097,0.1616391474381089210510,0.3652521963231265544891,\
+0.3835070468485355377197,0.1169181005097925662994,0.8911246126517653465271,\
+0.0634272000752389431000,0.6263941843062639236450,0.6807702076621353626251,\
+0.2588596837595105171204,0.4394804346375167369843,0.8598818778991699218750,\
+0.5482823201455175876617,0.8135995296761393547058,0.4898237003944814205170,\
+0.0240026097744703292847,0.7369195525534451007843,0.2411156157031655311584,\
+0.1529693226329982280731,0.2648359201848506927490,0.4298193217255175113678,\
+0.7673939457163214683533,0.8753260499797761440277,0.3796988371759653091431,\
+0.3062356826849281787872,0.3880051793530583381653,0.1047293278388679027557,\
+0.7603831812739372253418,0.0340930395759642124176,0.1423966242000460624695,\
+0.5554559468291699886322,0.8031897451728582382202,0.5183992316015064716339,\
+0.1518561029806733131409,0.5884730662219226360321,0.2545093484222888946533,\
+0.9992679939605295658112,0.6398976957425475120544,0.5506716123782098293304,\
+0.4607007671147584915161,0.5933007937856018543243,0.6538193570449948310852,\
+0.4168340521864593029022,0.9910155385732650756836,0.3720780410803854465485,\
+0.7061824081465601921082,0.5780865414999425411224,0.602319641038775444031,\
+0.5715096746571362018585,0.0549629041925072669983,0.1205854485742747784,\
+0.0143620483577251434326,0.0257951230742037296295,0.8411248764023184776306,\
+0.4381882525049149990082,0.4643401596695184707642,0.4197426405735313892365,\
+0.8023654492571949958801,0.5228588166646659374237,0.5095121040940284729004,\
+0.4531980180181562900543,0.7817818326875567436218,0.776557037141174077988,\
+0.0466059204190969467163,0.5113326688297092914581,0.7502101892605423927307,\
+0.6883628661744296550751,0.0167756117880344390869,0.9345410899259150028229,\
+0.5609863763675093650818,0.2205847105942666530609,0.7648540753871202468872,\
+0.4816976976580917835236,0.1558785634115338325500,0.2476022052578628063202,\
+0.5216529071331024169922,0.0805230387486517429352,0.4409417239949107170105,\
+0.8911933614872395992279,0.9780590813606977462769,0.4588093762286007404327,\
+0.5510440031066536903381,0.0960960905067622661591,0.4196785055100917816162,\
+0.7502556503750383853912,0.7218149593099951744080,0.2895541018806397914886,\
+0.3907764498144388198853}
+
+
+static void cconjsTest ( void )
+{
+ float realin = 0.126244857f;
+ float imagin = -0.47864959f;
+ floatComplex in = FloatComplex ( realin , imagin );
+
+ assert ( fabs ( creals ( in ) - realin ) / fabs( creals (in)) < 1e-06 );
+ assert ( fabs ( cimags ( in ) - imagin ) / fabs( cimags (in)) < 1e-06 );
+}
+
+
+static void cconjaTest ( void )
+{
+ int i = 0 ;
+ float tin [] = FMATRIX ;
+ floatComplex* in = FloatComplexMatrix ( tin , tin , SIZE );
+ floatComplex out[100] ;
+
+ cconja ( in , SIZE , out ) ;
+
+ for ( i = 0 ; i < SIZE ; i++ )
+ {
+ assert ( fabs ( creals ( in[i] ) - tin[i] ) / fabs( creals (in[i])) < 1e-06 );
+ assert ( fabs ( cimags ( in[i] ) - tin[i] ) / fabs( cimags (in[i])) < 1e-06 );
+ }
+
+}
+
+static void zconjsTest ( void )
+{
+ double realin = 0.126244857788445;
+ double imagin = -0.47864959451267;
+ doubleComplex in = DoubleComplex ( realin , imagin );
+
+ assert ( fabs ( zreals ( in ) - realin ) / fabs( zreals (in)) < 1e-16 );
+ assert ( fabs ( zimags ( in ) - imagin ) / fabs( zimags (in)) < 1e-16 );
+}
+
+static void zconjaTest ( void )
+{
+ int i = 0 ;
+ double tin [] = DMATRIX ;
+ doubleComplex* in = DoubleComplexMatrix ( tin , tin , SIZE );
+ doubleComplex out[100] ;
+
+ zconja ( in , SIZE , out ) ;
+
+ for ( i = 0 ; i < SIZE ; i++ )
+ {
+ assert ( fabs ( zreals ( in[i] ) - tin[i] ) / fabs( zreals (in[i])) < 1e-16 );
+ assert ( fabs ( zimags ( in[i] ) - tin[i] ) / fabs( zimags (in[i])) < 1e-16 );
+ }
+
+}
+
+static int testConj (void) {
+
+ printf("\n>>>> Float a Tests\n");
+ cconjsTest();
+ cconjaTest();
+printf("\t>>>> Double a Tests\n");
+ zconjsTest();
+ zconjaTest();
+
+
+ return 0;
+}
+
+
+int main(void) {
+ assert(testConj() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj b/2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj
new file mode 100644
index 00000000..2a287102
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{CD5DB834-234F-40A3-B551-DC895885E7B1}</ProjectGuid>
+ <RootNamespace>testConj</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testConj.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj.filters
new file mode 100644
index 00000000..f084f6fe
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/test_Conj/testConj.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testConj.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/zconja.c b/2.3-1/src/c/auxiliaryFunctions/conj/zconja.c
new file mode 100644
index 00000000..2c939f72
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/zconja.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "conj.h"
+
+void zconja ( doubleComplex* in , int size, doubleComplex* out ){
+
+ int i = 0 ;
+
+ for ( i =0 ; i < size ; i++ )
+ out[i] = zconjs ( in[i]);
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/conj/zconjs.c b/2.3-1/src/c/auxiliaryFunctions/conj/zconjs.c
new file mode 100644
index 00000000..b98f46d3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/conj/zconjs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "conj.h"
+
+doubleComplex zconjs ( doubleComplex in )
+{
+ return DoubleComplex ( zreals ( in ) ,- zimags( in ));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/find/Makefile.am
new file mode 100644
index 00000000..622cc20b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/Makefile.am
@@ -0,0 +1,49 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+AM_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libFind.la
+
+libFind_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sfinda.c \
+ dfinda.c \
+ cfinda.c \
+ zfinda.c
+
+HEAD = ../includes/find.h \
+ ../../includes/notFound.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testFind
+
+TESTS = testFind
+
+#
+# -*- Find Tests -*-
+#
+testFind_SOURCES = testFind.h testFind.c
+testFind_CFLAGS = $(check_INCLUDES)
+testFind_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find/libFind.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/find/Makefile.in
new file mode 100644
index 00000000..09820585
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/Makefile.in
@@ -0,0 +1,691 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFind$(EXEEXT)
+TESTS = testFind$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/find
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFind_la_LIBADD =
+am__objects_1 =
+am__objects_2 = sfinda.lo dfinda.lo cfinda.lo zfinda.lo
+am_libFind_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libFind_la_OBJECTS = $(am_libFind_la_OBJECTS)
+am_testFind_OBJECTS = testFind-testFind.$(OBJEXT)
+testFind_OBJECTS = $(am_testFind_OBJECTS)
+testFind_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find/libFind.la
+testFind_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testFind_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFind_la_SOURCES) $(testFind_SOURCES)
+DIST_SOURCES = $(libFind_la_SOURCES) $(testFind_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFind.la
+libFind_la_SOURCES = $(HEAD) $(SRC)
+SRC = sfinda.c \
+ dfinda.c \
+ cfinda.c \
+ zfinda.c
+
+HEAD = ../includes/find.h \
+ ../../includes/notFound.h
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Find Tests -*-
+#
+testFind_SOURCES = testFind.h testFind.c
+testFind_CFLAGS = $(check_INCLUDES)
+testFind_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find/libFind.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/find/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/find/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFind.la: $(libFind_la_OBJECTS) $(libFind_la_DEPENDENCIES)
+ $(LINK) -rpath $(pkglibdir) $(libFind_la_OBJECTS) $(libFind_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testFind$(EXEEXT): $(testFind_OBJECTS) $(testFind_DEPENDENCIES)
+ @rm -f testFind$(EXEEXT)
+ $(testFind_LINK) $(testFind_OBJECTS) $(testFind_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfinda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dfinda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfinda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFind-testFind.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfinda.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+testFind-testFind.o: testFind.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind_CFLAGS) $(CFLAGS) -MT testFind-testFind.o -MD -MP -MF $(DEPDIR)/testFind-testFind.Tpo -c -o testFind-testFind.o `test -f 'testFind.c' || echo '$(srcdir)/'`testFind.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFind-testFind.Tpo $(DEPDIR)/testFind-testFind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFind.c' object='testFind-testFind.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind_CFLAGS) $(CFLAGS) -c -o testFind-testFind.o `test -f 'testFind.c' || echo '$(srcdir)/'`testFind.c
+
+testFind-testFind.obj: testFind.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind_CFLAGS) $(CFLAGS) -MT testFind-testFind.obj -MD -MP -MF $(DEPDIR)/testFind-testFind.Tpo -c -o testFind-testFind.obj `if test -f 'testFind.c'; then $(CYGPATH_W) 'testFind.c'; else $(CYGPATH_W) '$(srcdir)/testFind.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFind-testFind.Tpo $(DEPDIR)/testFind-testFind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFind.c' object='testFind-testFind.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind_CFLAGS) $(CFLAGS) -c -o testFind-testFind.obj `if test -f 'testFind.c'; then $(CYGPATH_W) 'testFind.c'; else $(CYGPATH_W) '$(srcdir)/testFind.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/cfinda.c b/2.3-1/src/c/auxiliaryFunctions/find/cfinda.c
new file mode 100644
index 00000000..54374903
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/cfinda.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "find.h"
+
+void cfinda(floatComplex* z, int size, float *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max)
+ {
+ return ;
+ }
+
+ if (creals(z[i]) != 0 || cimags(z[i]) != 0)
+ {
+ out[j] = (float)(i+1);
+ ++j;
+ }
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/dfinda.c b/2.3-1/src/c/auxiliaryFunctions/find/dfinda.c
new file mode 100644
index 00000000..ac223ae2
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/dfinda.c
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "find.h"
+
+void dfinda(double* x, int size, double *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max)
+ {
+ return ;
+ }
+
+ if (x[i] != 0)
+ {
+ out[j] = (double)(i+1);
+ ++j;
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/i16finda.c b/2.3-1/src/c/auxiliaryFunctions/find/i16finda.c
new file mode 100644
index 00000000..4dff1020
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/i16finda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "find.h"
+
+void i16finda(int16* x, int size, int16 *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max)
+ {
+ return ;
+ }
+
+ if (x[i] != 0)
+ {
+ out[j] = (int16)(i+1);
+ ++j;
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/i8finda.c b/2.3-1/src/c/auxiliaryFunctions/find/i8finda.c
new file mode 100644
index 00000000..7e633dc1
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/i8finda.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "find.h"
+
+void i8finda(int8* x, int size, int8 *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max)
+ {
+ return ;
+ }
+
+ if (x[i] != 0)
+ {
+ out[j] = (int8)(i+1);
+ ++j;
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/sfinda.c b/2.3-1/src/c/auxiliaryFunctions/find/sfinda.c
new file mode 100644
index 00000000..ac445fac
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/sfinda.c
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "find.h"
+
+void sfinda(float* x, int size, float* out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+
+ /* if out is empty */
+ out[0]=-1;
+
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max )
+ {
+ return ;
+ }
+
+ if (x[i] != 0)
+ {
+ out[j] = (float)(i+1);
+ ++j;
+ }
+ }
+}
+
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/testFind.c b/2.3-1/src/c/auxiliaryFunctions/find/testFind.c
new file mode 100644
index 00000000..298d55b3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/testFind.c
@@ -0,0 +1,217 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include "testFind.h"
+
+int sfindaTest() {
+ int result = 0, i = 0;
+ float goodArray[5] = {0.,2.,3.,5.,10.};
+ float badArray[5] = {0.,0.,0.,0.,0.};
+ float res[4] = {2.,3.,4.,5.};
+ float *outGood = NULL, *outBad = NULL;
+ int indiceOut;
+
+ outGood=(float*)malloc((unsigned int)5*sizeof(float));
+ outBad=(float*)malloc((unsigned int)5*sizeof(float));
+
+ printf(">> Floats \n");
+ sfinda(goodArray, 5, outGood, &indiceOut,-1);
+ sfinda(badArray, 5, outBad, &indiceOut,-1);
+
+ for (i=0;i<4;i++){
+ if ( outGood[i] != res[i]) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outGood[i]);
+ }
+
+ printf("\n");
+
+ if (outBad[0]!=-1) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outBad[0]);
+
+ printf("\n");
+ free(outBad);
+ free(outGood);
+ return result;
+}
+
+int dfindaTest() {
+ int result = 0, i = 0;
+ double goodArray[5] = {0.,2.,3.,5.,10.};
+ double badArray[5] = {0.,0.,0.,0.,0.};
+ double res[4] = {2.,3.,4.,5.};
+ double *outGood = NULL, *outBad = NULL;
+ int indiceOut;
+
+ outGood=(double*)malloc((unsigned int)5*sizeof(double));
+ outBad=(double*)malloc((unsigned int)5*sizeof(double));
+
+
+ printf(">> Double \n");
+ dfinda(goodArray, 5, outGood, &indiceOut,-1);
+ dfinda(badArray, 5, outBad, &indiceOut,-1);
+
+ for (i=0;i<4;i++){
+ if ( outGood[i] != res[i]) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outGood[i]);
+ }
+
+ printf("\n");
+
+ if (outBad[0]!=-1) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outBad[0]);
+
+ printf("\n");
+ free(outBad);
+ free(outGood);
+ return result;
+}
+
+int cfindaTest() {
+ int result = 0, i = 0;
+ floatComplex goodArray[5];
+ floatComplex badArray[5];
+ float res[4] = {2.,3.,4.,5.};
+ float *outGood = NULL, *outBad = NULL;
+ int indiceOut;
+
+ outGood=(float*)malloc((unsigned int)5*sizeof(float));
+ outBad=(float*)malloc((unsigned int)5*sizeof(float));
+
+ /* Good values in goodArray */
+ goodArray[0] = FloatComplex(0., 0.);
+ goodArray[1] = FloatComplex(0., 2.);
+ goodArray[2] = FloatComplex(3., 50.);
+ goodArray[3] = FloatComplex(5., 10.);
+ goodArray[4] = FloatComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = FloatComplex(0., 0.);
+ badArray[1] = FloatComplex(0., 0.);
+ badArray[2] = FloatComplex(0., 0.);
+ badArray[3] = FloatComplex(0., 0.);
+ badArray[4] = FloatComplex(0., 0.);
+
+ printf(">> Float Complex \n");
+ cfinda(goodArray, 5, outGood, &indiceOut,-1);
+ cfinda(badArray, 5, outBad, &indiceOut,-1);
+
+ for (i=0;i<4;i++){
+ if ( outGood[i] != res[i]) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outGood[i]);
+ }
+
+ printf("\n");
+
+ if (outBad[0]!=-1) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outBad[0]);
+
+ printf("\n");
+ free(outBad);
+ free(outGood);
+ return result;
+}
+
+int zfindaTest() {
+ int result = 0, i = 0;
+ doubleComplex goodArray[5];
+ doubleComplex badArray[5];
+ double res[4] = {2.,3.,4.,5.};
+ double *outGood = NULL, *outBad = NULL;
+ int indiceOut;
+
+ outGood=(double*)malloc((unsigned int)5*sizeof(double));
+ outBad=(double*)malloc((unsigned int)5*sizeof(double));
+
+
+ /* Good values in goodArray */
+ goodArray[0] = DoubleComplex(0., 0.);
+ goodArray[1] = DoubleComplex(0., 2.);
+ goodArray[2] = DoubleComplex(3., 50.);
+ goodArray[3] = DoubleComplex(5., 10.);
+ goodArray[4] = DoubleComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = DoubleComplex(0., 0.);
+ badArray[1] = DoubleComplex(0., 0.);
+ badArray[2] = DoubleComplex(0., 0.);
+ badArray[3] = DoubleComplex(0., 0.);
+ badArray[4] = DoubleComplex(0., 0.);
+
+
+ printf(">> Double Complex \n");
+ zfinda(goodArray, 5, outGood, &indiceOut,-1);
+ zfinda(badArray, 5, outBad, &indiceOut,-1);
+
+ for (i=0;i<4;i++){
+ if ( outGood[i] != res[i]) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outGood[i]);
+ }
+
+ printf("\n");
+
+ if (outBad[0]!=-1) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("%f ",outBad[0]);
+
+ printf("\n");
+ free(outBad);
+ free(outGood);
+ return result;
+}
+
+int testFind() {
+ int sfindaStatus, dfindaStatus = 0;
+ int cfindaStatus, zfindaStatus = 0;
+
+ printf(">>>> Find Tests\n");
+ sfindaStatus = sfindaTest();
+ dfindaStatus = dfindaTest();
+ cfindaStatus = cfindaTest();
+ zfindaStatus = zfindaTest();
+
+ return (sfindaStatus + dfindaStatus +
+ cfindaStatus + zfindaStatus);
+}
+
+int main(void) {
+ assert(testFind() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/testFind.h b/2.3-1/src/c/auxiliaryFunctions/find/testFind.h
new file mode 100644
index 00000000..1b257e79
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/testFind.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTFIND_H_
+#define _TESTFIND_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "find.h"
+#include "notFound.h"
+
+#define ERROR 42
+
+int sfindsTest(void);
+
+int dfindsTest(void);
+
+int cfindsTest(void);
+
+int zfindsTest(void);
+
+int sfindaTest(void);
+
+int dfindaTest(void);
+
+int cfindaTest(void);
+
+int zfindaTest(void);
+
+int testFind(void);
+
+#endif /* ! _TESTFIND_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj b/2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj
new file mode 100644
index 00000000..bad1e747
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D5110077-CA24-494B-87D0-451BD124CF70}</ProjectGuid>
+ <RootNamespace>testFind</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFind.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testFind.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj.filters
new file mode 100644
index 00000000..acd53578
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/test_Find/testFind.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFind.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testFind.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/u16finda.c b/2.3-1/src/c/auxiliaryFunctions/find/u16finda.c
new file mode 100644
index 00000000..2ff57869
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/u16finda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "find.h"
+
+void u16finda(uint16* x, int size, uint16 *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max)
+ {
+ return ;
+ }
+
+ if (x[i] != 0)
+ {
+ out[j] = (uint16)(i+1);
+ ++j;
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/u8finda.c b/2.3-1/src/c/auxiliaryFunctions/find/u8finda.c
new file mode 100644
index 00000000..e2de81fa
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/u8finda.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "find.h"
+
+void u8finda(uint8* x, int size, uint8 *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max)
+ {
+ return ;
+ }
+
+ if (x[i] != 0)
+ {
+ out[j] = (uint8)(i+1);
+ ++j;
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/find/zfinda.c b/2.3-1/src/c/auxiliaryFunctions/find/zfinda.c
new file mode 100644
index 00000000..cb6295a3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find/zfinda.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "find.h"
+
+void zfinda(doubleComplex* z, int size, double *out, int max)
+{
+ int i = 0;
+ int j = 0;
+
+ /* if out is empty */
+ out[0]=-1;
+
+ for (i = 0; i < size ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (j == max )
+ {
+ return ;
+ }
+
+ if (zreals(z[i]) != 0 || zimags(z[i]) != 0)
+ {
+ out[j] = (double)(i+1);
+ ++j;
+ }
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.am
new file mode 100644
index 00000000..c1c2f2ad
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.am
@@ -0,0 +1,48 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+AM_CFLAGS = -I ../../type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libFind2d.la
+
+libFind2d_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sfind2da.c \
+ dfind2da.c \
+ cfind2da.c \
+ zfind2da.c
+
+HEAD = ../includes/find2d.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testFind2d
+
+TESTS = testFind2d
+
+#
+# -*- Find2d Tests -*-
+#
+testFind2d_SOURCES = testFind2d.h testFind2d.c
+testFind2d_CFLAGS = $(check_INCLUDES)
+testFind2d_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find2d/libFind2d.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.in
new file mode 100644
index 00000000..6fb34f73
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/Makefile.in
@@ -0,0 +1,689 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFind2d$(EXEEXT)
+TESTS = testFind2d$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/find2d
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFind2d_la_LIBADD =
+am__objects_1 =
+am__objects_2 = sfind2da.lo dfind2da.lo cfind2da.lo zfind2da.lo
+am_libFind2d_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libFind2d_la_OBJECTS = $(am_libFind2d_la_OBJECTS)
+am_testFind2d_OBJECTS = testFind2d-testFind2d.$(OBJEXT)
+testFind2d_OBJECTS = $(am_testFind2d_OBJECTS)
+testFind2d_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find2d/libFind2d.la
+testFind2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFind2d_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFind2d_la_SOURCES) $(testFind2d_SOURCES)
+DIST_SOURCES = $(libFind2d_la_SOURCES) $(testFind2d_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = -I ../../type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFind2d.la
+libFind2d_la_SOURCES = $(HEAD) $(SRC)
+SRC = sfind2da.c \
+ dfind2da.c \
+ cfind2da.c \
+ zfind2da.c
+
+HEAD = ../includes/find2d.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Find2d Tests -*-
+#
+testFind2d_SOURCES = testFind2d.h testFind2d.c
+testFind2d_CFLAGS = $(check_INCLUDES)
+testFind2d_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find2d/libFind2d.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/find2d/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/find2d/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFind2d.la: $(libFind2d_la_OBJECTS) $(libFind2d_la_DEPENDENCIES)
+ $(LINK) -rpath $(pkglibdir) $(libFind2d_la_OBJECTS) $(libFind2d_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testFind2d$(EXEEXT): $(testFind2d_OBJECTS) $(testFind2d_DEPENDENCIES)
+ @rm -f testFind2d$(EXEEXT)
+ $(testFind2d_LINK) $(testFind2d_OBJECTS) $(testFind2d_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfind2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dfind2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfind2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFind2d-testFind2d.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfind2da.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+testFind2d-testFind2d.o: testFind2d.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind2d_CFLAGS) $(CFLAGS) -MT testFind2d-testFind2d.o -MD -MP -MF $(DEPDIR)/testFind2d-testFind2d.Tpo -c -o testFind2d-testFind2d.o `test -f 'testFind2d.c' || echo '$(srcdir)/'`testFind2d.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFind2d-testFind2d.Tpo $(DEPDIR)/testFind2d-testFind2d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFind2d.c' object='testFind2d-testFind2d.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind2d_CFLAGS) $(CFLAGS) -c -o testFind2d-testFind2d.o `test -f 'testFind2d.c' || echo '$(srcdir)/'`testFind2d.c
+
+testFind2d-testFind2d.obj: testFind2d.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind2d_CFLAGS) $(CFLAGS) -MT testFind2d-testFind2d.obj -MD -MP -MF $(DEPDIR)/testFind2d-testFind2d.Tpo -c -o testFind2d-testFind2d.obj `if test -f 'testFind2d.c'; then $(CYGPATH_W) 'testFind2d.c'; else $(CYGPATH_W) '$(srcdir)/testFind2d.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFind2d-testFind2d.Tpo $(DEPDIR)/testFind2d-testFind2d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFind2d.c' object='testFind2d-testFind2d.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFind2d_CFLAGS) $(CFLAGS) -c -o testFind2d-testFind2d.obj `if test -f 'testFind2d.c'; then $(CYGPATH_W) 'testFind2d.c'; else $(CYGPATH_W) '$(srcdir)/testFind2d.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/cfind2da.c b/2.3-1/src/c/auxiliaryFunctions/find2d/cfind2da.c
new file mode 100644
index 00000000..c2db728b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/cfind2da.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "find2d.h"
+
+void cfind2da(floatComplex* x, int rows, int columns, float* out1,int* indiceOut1, float* out2,int* indiceOut2,int max) {
+ int i = 0, j=0;
+ indiceOut1[1] = 0;
+
+ /* if out are empties */
+ out1[0]=-1;
+ out2[0]=-1;
+
+ for (j = 0; j < columns ; ++j){
+ for (i = 0; i < rows ; ++i) {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (indiceOut1[1] == max ) return ;
+ if ((creals(x[j*rows+i]) != 0) || (cimags(x[j*rows+i])!=0) ) {
+
+ out1[indiceOut1[1]] = (float)(i+1);
+ out2[indiceOut1[1]] = (float)(j+1);
+ indiceOut1[1]++;
+ }
+ }
+ }
+ indiceOut2[1]=indiceOut1[1];
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/dfind2da.c b/2.3-1/src/c/auxiliaryFunctions/find2d/dfind2da.c
new file mode 100644
index 00000000..22d4cf55
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/dfind2da.c
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "find2d.h"
+
+void dfind2da(double* x, int rows, int columns, double* out1, double* out2, int max) {
+ int i = 0, j=0, k = 0;
+
+ /* if out are empties */
+ out1[0]=-1;
+ out2[0]=-1;
+
+ for (j = 0; j < columns ; ++j)
+ {
+ for (i = 0; i < rows ; ++i)
+ {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (max == 0)
+ {
+ return;
+ }
+
+ if (x[j*rows+i] != 0)
+ {
+ out1[k] = (double)(i+1);
+ out2[k] = (double)(j+1);
+ k++;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/sfind2da.c b/2.3-1/src/c/auxiliaryFunctions/find2d/sfind2da.c
new file mode 100644
index 00000000..fdd74bfc
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/sfind2da.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "find2d.h"
+
+void sfind2da(float* x, int rows, int columns, float* out1,int* indiceOut1, float* out2,int* indiceOut2,int max) {
+ int i = 0, j=0;
+ indiceOut1[1] = 0;
+
+ /* if out are empties */
+ out1[0]=-1;
+ out2[0]=-1;
+
+ for (j = 0; j < columns ; ++j){
+ for (i = 0; i < rows ; ++i) {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (indiceOut1[1] == max ) return ;
+ if (x[j*rows+i] != 0) {
+
+ out1[indiceOut1[1]] = (float)(i+1);
+ out2[indiceOut1[1]] = (float)(j+1);
+ indiceOut1[1]++;
+ }
+ }
+ }
+ indiceOut2[1]=indiceOut1[1];
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.c b/2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.c
new file mode 100644
index 00000000..1fcfdc9e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.c
@@ -0,0 +1,532 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testFind2d.h"
+#include <stdio.h>
+
+int sfind2daTest() {
+ int result = 0, i = 0;
+ float goodArray[6] = {0.,2.,3.,0.,5.,10.};
+ float badArray[6] = {0.,0.,0.,0.,0.,0.};
+ float out1_1_6[4] = {1.,1.,1.,1.};
+ float out1_2_3[4] = {1.,1.,2.,2.};
+ float out1_3_2[4] = {2.,2.,3.,3.};
+ float out1_6_1[4] = {2.,3.,5.,6.};
+ float out2_1_6[4] = {2.,3.,5.,6.};
+ float out2_2_3[4] = {2.,3.,1.,3.};
+ float out2_3_2[4] = {1.,2.,1.,2.};
+ float out2_6_1[4] = {1.,1.,1.,1.};
+ float out1Good[6] = {0}, out1Bad[6] = {0}, out2Good[6] = {0}, out2Bad[6] = {0};
+ int size1[2]={0},size2[2]={0};
+ printf(">> Floats \n");
+
+ /* Test tab 1 ligne 6 colonnes */
+ sfind2da(goodArray, 1, 6, out1Good, size1, out2Good, size2 , -1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_1_6[i]) || (out2Good[i] != out2_1_6[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ sfind2da(badArray, 1, 6, out1Bad, size1,out2Bad,size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 2 lignes 3 colonnes */
+ sfind2da(goodArray, 2, 3, out1Good, size1, out2Good, size2 , -1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_2_3[i]) || (out2Good[i] != out2_2_3[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ sfind2da(badArray, 2, 3, out1Bad, size1, out2Bad, size2 , -1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 3 lignes 2 colonnes */
+ sfind2da(goodArray, 3, 2, out1Good, size1, out2Good, size1, -1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_3_2[i]) || (out2Good[i] != out2_3_2[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ sfind2da(badArray, 3, 2, out1Bad, size1, out2Bad, size1,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 6 lignes 1 colonne */
+ sfind2da(goodArray, 6, 1, out1Good, size1, out2Good, size1,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_6_1[i]) || (out2Good[i] != out2_6_1[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ sfind2da(badArray, 6, 1, out1Bad, size1, out2Bad, size1,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+
+ return result;
+}
+
+int dfind2daTest() {
+ int result = 0, i = 0;
+ double goodArray[6] = {0.,2.,3.,0.,5.,10.};
+ double badArray[6] = {0.,0.,0.,0.,0.,0.};
+ double out1_1_6[4] = {1.,1.,1.,1.};
+ double out1_2_3[4] = {1.,1.,2.,2.};
+ double out1_3_2[4] = {2.,2.,3.,3.};
+ double out1_6_1[4] = {2.,3.,5.,6.};
+ double out2_1_6[4] = {2.,3.,5.,6.};
+ double out2_2_3[4] = {2.,3.,1.,3.};
+ double out2_3_2[4] = {1.,2.,1.,2.};
+ double out2_6_1[4] = {1.,1.,1.,1.};
+ double out1Good[6] = {0}, out1Bad[6] = {0}, out2Good[6] = {0}, out2Bad[6] = {0};
+ int size1[2]={0},size2[2]={0};
+
+ printf(">> Double \n");
+
+ /* Test tab 1 ligne 6 colonnes */
+ dfind2da(goodArray, 1, 6, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_1_6[i]) || (out2Good[i] != out2_1_6[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ dfind2da(badArray, 1, 6, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 2 lignes 3 colonnes */
+ dfind2da(goodArray, 2, 3, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_2_3[i]) || (out2Good[i] != out2_2_3[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ dfind2da(badArray, 2, 3, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 3 lignes 2 colonnes */
+ dfind2da(goodArray, 3, 2, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_3_2[i]) || (out2Good[i] != out2_3_2[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ dfind2da(badArray, 3, 2, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 6 lignes 1 colonne */
+ dfind2da(goodArray, 6, 1, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_6_1[i]) || (out2Good[i] != out2_6_1[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ dfind2da(badArray, 6, 1, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+
+ return result;
+}
+
+int cfind2daTest() {
+ int result = 0, i = 0;
+ floatComplex goodArray[6];
+ floatComplex badArray[6];
+ float out1_1_6[4] = {1.,1.,1.,1.};
+ float out1_2_3[4] = {1.,1.,2.,2.};
+ float out1_3_2[4] = {2.,2.,3.,3.};
+ float out1_6_1[4] = {2.,3.,5.,6.};
+ float out2_1_6[4] = {2.,3.,5.,6.};
+ float out2_2_3[4] = {2.,3.,1.,3.};
+ float out2_3_2[4] = {1.,2.,1.,2.};
+ float out2_6_1[4] = {1.,1.,1.,1.};
+ float out1Good[6] = {0}, out1Bad[6] = {0}, out2Good[6] = {0}, out2Bad[6] = {0};
+ int size1[2]={0},size2[2]={0};
+
+ /* Good values in goodArray */
+ goodArray[0] = FloatComplex(0., 0.);
+ goodArray[1] = FloatComplex(0., 2.);
+ goodArray[2] = FloatComplex(3., 50.);
+ goodArray[3] = FloatComplex(0., 0.);
+ goodArray[4] = FloatComplex(5., 10.);
+ goodArray[5] = FloatComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = FloatComplex(0., 0.);
+ badArray[1] = FloatComplex(0., 0.);
+ badArray[2] = FloatComplex(0., 0.);
+ badArray[3] = FloatComplex(0., 0.);
+ badArray[4] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+
+ printf(">> Float Complex \n");
+
+ /* Test tab 1 ligne 6 colonnes */
+ cfind2da(goodArray, 1, 6, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_1_6[i]) || (out2Good[i] != out2_1_6[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ cfind2da(badArray, 1, 6, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 2 lignes 3 colonnes */
+ cfind2da(goodArray, 2, 3, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_2_3[i]) || (out2Good[i] != out2_2_3[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ cfind2da(badArray, 2, 3, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 3 lignes 2 colonnes */
+ cfind2da(goodArray, 3, 2, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_3_2[i]) || (out2Good[i] != out2_3_2[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ cfind2da(badArray, 3, 2, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 6 lignes 1 colonne */
+ cfind2da(goodArray, 6, 1, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_6_1[i]) || (out2Good[i] != out2_6_1[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ cfind2da(badArray, 6, 1, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out2Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+
+ return result;
+}
+
+int zfind2daTest() {
+ int result = 0, i = 0;
+ doubleComplex goodArray[6];
+ doubleComplex badArray[6];
+ double out1_1_6[4] = {1.,1.,1.,1.};
+ double out1_2_3[4] = {1.,1.,2.,2.};
+ double out1_3_2[4] = {2.,2.,3.,3.};
+ double out1_6_1[4] = {2.,3.,5.,6.};
+ double out2_1_6[4] = {2.,3.,5.,6.};
+ double out2_2_3[4] = {2.,3.,1.,3.};
+ double out2_3_2[4] = {1.,2.,1.,2.};
+ double out2_6_1[4] = {1.,1.,1.,1.};
+ double out1Good[6] = {0}, out1Bad[6] = {0}, out2Good[6] = {0}, out2Bad[6] = {0};
+ int size1[2]={0},size2[2]={0};
+
+
+ /* Good values in goodArray */
+ goodArray[0] = DoubleComplex(0., 0.);
+ goodArray[1] = DoubleComplex(0., 2.);
+ goodArray[2] = DoubleComplex(3., 50.);
+ goodArray[3] = DoubleComplex(0., 0.);
+ goodArray[4] = DoubleComplex(5., 10.);
+ goodArray[5] = DoubleComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = DoubleComplex(0., 0.);
+ badArray[1] = DoubleComplex(0., 0.);
+ badArray[2] = DoubleComplex(0., 0.);
+ badArray[3] = DoubleComplex(0., 0.);
+ badArray[4] = DoubleComplex(0., 0.);
+ badArray[5] = DoubleComplex(0., 0.);
+
+
+ printf(">> Double Complex \n");
+
+ /* Test tab 1 ligne 6 colonnes */
+ zfind2da(goodArray, 1, 6, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_1_6[i]) || (out2Good[i] != out2_1_6[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ zfind2da(badArray, 1, 6, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out1Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 2 lignes 3 colonnes */
+ zfind2da(goodArray, 2, 3, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_2_3[i]) || (out2Good[i] != out2_2_3[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ zfind2da(badArray, 2, 3, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out1Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 3 lignes 2 colonnes */
+ zfind2da(goodArray, 3, 2, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_3_2[i]) || (out2Good[i] != out2_3_2[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ zfind2da(badArray, 3, 2, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out1Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+ /* Test tab 6 lignes 1 colonne */
+ zfind2da(goodArray, 6, 1, out1Good, size1, out2Good, size2,-1);
+
+
+ for (i=0;i<size1[1];i++){
+ if ( (out1Good[i] != out1_6_1[i]) || (out2Good[i] != out2_6_1[i]) ) {
+ printf("ERROR ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("(%f-%f) ",out1Good[i],out2Good[i]);
+ }
+
+ printf("\n");
+ zfind2da(badArray, 6, 1, out1Bad, size1, out2Bad, size2,-1);
+ if ((out1Bad[0]!=-1) || (out1Bad[0]!=-1) ) {
+ printf("ERROR ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ else
+ printf("pointeur NULL \n ");
+
+ printf("\n");
+
+
+ return result;
+}
+
+int testFind2d() {
+ int sfind2daStatus, dfind2daStatus = 0;
+ int cfind2daStatus, zfind2daStatus = 0;
+
+ printf(">>>> Find2d Tests\n");
+ sfind2daStatus = sfind2daTest();
+ dfind2daStatus = dfind2daTest();
+ cfind2daStatus = cfind2daTest();
+ zfind2daStatus = zfind2daTest();
+
+ return (sfind2daStatus + dfind2daStatus +
+ cfind2daStatus + zfind2daStatus);
+}
+
+int main(void) {
+ assert(testFind2d() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.h b/2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.h
new file mode 100644
index 00000000..f5c49062
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/testFind2d.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTFIND2D_H_
+#define _TESTFIND2D_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "find2d.h"
+
+#define ERROR 42
+
+int sfind2dsTest(void);
+
+int dfind2dsTest(void);
+
+int cfind2dsTest(void);
+
+int zfind2dsTest(void);
+
+int sfind2daTest(void);
+
+int dfind2daTest(void);
+
+int cfind2daTest(void);
+
+int zfind2daTest(void);
+
+int testFind2d(void);
+
+#endif /* ! _TESTFIND2D_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj b/2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj
new file mode 100644
index 00000000..13ba2480
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7361B40C-BCF5-442B-9116-7DB5AD7456B0}</ProjectGuid>
+ <RootNamespace>testFind2d</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFind2d.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testFind2d.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj.filters
new file mode 100644
index 00000000..31560ef4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/test_Find2d/testFind2d.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFind2d.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testFind2d.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/find2d/zfind2da.c b/2.3-1/src/c/auxiliaryFunctions/find2d/zfind2da.c
new file mode 100644
index 00000000..a8fa4962
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/find2d/zfind2da.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "find2d.h"
+
+void zfind2da(doubleComplex* x, int rows, int columns, double* out1,int* indiceOut1, double* out2,int* indiceOut2,int max) {
+ int i = 0, j=0;
+ indiceOut1[1] = 0;
+
+ /* if out are empties */
+ out1[0]=-1;
+ out2[0]=-1;
+
+ for (j = 0; j < columns ; ++j){
+ for (i = 0; i < rows ; ++i) {
+ /*to avoid useless search if we only want to find the max first founded value */
+ if (indiceOut1[1] == max ) return ;
+ if ((zreals(x[j*rows+i]) != 0) || (zimags(x[j*rows+i])!=0) ) {
+
+ out1[indiceOut1[1]] = (double)(i+1);
+ out2[indiceOut1[1]] = (double)(j+1);
+ indiceOut1[1]++;
+ }
+ }
+ }
+ indiceOut2[1]=indiceOut1[1];
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.am
new file mode 100644
index 00000000..a9e2b0f3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.am
@@ -0,0 +1,66 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libFrexp_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libFrexp.la
+
+HEAD = ../includes/frexp.h
+
+libFrexp_la_SOURCES = $(HEAD) \
+ sfrexps.c \
+ dfrexps.c
+
+check_PROGRAMS = testFrexp
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libFrexp.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+
+testFrexp_SOURCES = testFrexp.c
+testFrexp_LDADD = $(check_LDADD)
+testFrexp_CFLAGS = $(check_INCLUDES)
+
+TESTS = testFrexp
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.in
new file mode 100644
index 00000000..52b1558b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/Makefile.in
@@ -0,0 +1,716 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFrexp$(EXEEXT)
+TESTS = testFrexp$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/frexp
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFrexp_la_LIBADD =
+am__objects_1 =
+am_libFrexp_la_OBJECTS = $(am__objects_1) libFrexp_la-sfrexps.lo \
+ libFrexp_la-dfrexps.lo
+libFrexp_la_OBJECTS = $(am_libFrexp_la_OBJECTS)
+libFrexp_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libFrexp_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFrexp_OBJECTS = testFrexp-testFrexp.$(OBJEXT)
+testFrexp_OBJECTS = $(am_testFrexp_OBJECTS)
+testFrexp_DEPENDENCIES = $(check_LDADD)
+testFrexp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFrexp_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFrexp_la_SOURCES) $(testFrexp_SOURCES)
+DIST_SOURCES = $(libFrexp_la_SOURCES) $(testFrexp_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libFrexp_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFrexp.la
+HEAD = ../includes/frexp.h
+libFrexp_la_SOURCES = $(HEAD) \
+ sfrexps.c \
+ dfrexps.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libFrexp.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testFrexp_SOURCES = testFrexp.c
+testFrexp_LDADD = $(check_LDADD)
+testFrexp_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/frexp/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/frexp/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFrexp.la: $(libFrexp_la_OBJECTS) $(libFrexp_la_DEPENDENCIES)
+ $(libFrexp_la_LINK) -rpath $(pkglibdir) $(libFrexp_la_OBJECTS) $(libFrexp_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testFrexp$(EXEEXT): $(testFrexp_OBJECTS) $(testFrexp_DEPENDENCIES)
+ @rm -f testFrexp$(EXEEXT)
+ $(testFrexp_LINK) $(testFrexp_OBJECTS) $(testFrexp_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFrexp_la-dfrexps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFrexp_la-sfrexps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFrexp-testFrexp.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libFrexp_la-sfrexps.lo: sfrexps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFrexp_la_CFLAGS) $(CFLAGS) -MT libFrexp_la-sfrexps.lo -MD -MP -MF $(DEPDIR)/libFrexp_la-sfrexps.Tpo -c -o libFrexp_la-sfrexps.lo `test -f 'sfrexps.c' || echo '$(srcdir)/'`sfrexps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFrexp_la-sfrexps.Tpo $(DEPDIR)/libFrexp_la-sfrexps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfrexps.c' object='libFrexp_la-sfrexps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFrexp_la_CFLAGS) $(CFLAGS) -c -o libFrexp_la-sfrexps.lo `test -f 'sfrexps.c' || echo '$(srcdir)/'`sfrexps.c
+
+libFrexp_la-dfrexps.lo: dfrexps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFrexp_la_CFLAGS) $(CFLAGS) -MT libFrexp_la-dfrexps.lo -MD -MP -MF $(DEPDIR)/libFrexp_la-dfrexps.Tpo -c -o libFrexp_la-dfrexps.lo `test -f 'dfrexps.c' || echo '$(srcdir)/'`dfrexps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFrexp_la-dfrexps.Tpo $(DEPDIR)/libFrexp_la-dfrexps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfrexps.c' object='libFrexp_la-dfrexps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFrexp_la_CFLAGS) $(CFLAGS) -c -o libFrexp_la-dfrexps.lo `test -f 'dfrexps.c' || echo '$(srcdir)/'`dfrexps.c
+
+testFrexp-testFrexp.o: testFrexp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFrexp_CFLAGS) $(CFLAGS) -MT testFrexp-testFrexp.o -MD -MP -MF $(DEPDIR)/testFrexp-testFrexp.Tpo -c -o testFrexp-testFrexp.o `test -f 'testFrexp.c' || echo '$(srcdir)/'`testFrexp.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFrexp-testFrexp.Tpo $(DEPDIR)/testFrexp-testFrexp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFrexp.c' object='testFrexp-testFrexp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFrexp_CFLAGS) $(CFLAGS) -c -o testFrexp-testFrexp.o `test -f 'testFrexp.c' || echo '$(srcdir)/'`testFrexp.c
+
+testFrexp-testFrexp.obj: testFrexp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFrexp_CFLAGS) $(CFLAGS) -MT testFrexp-testFrexp.obj -MD -MP -MF $(DEPDIR)/testFrexp-testFrexp.Tpo -c -o testFrexp-testFrexp.obj `if test -f 'testFrexp.c'; then $(CYGPATH_W) 'testFrexp.c'; else $(CYGPATH_W) '$(srcdir)/testFrexp.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFrexp-testFrexp.Tpo $(DEPDIR)/testFrexp-testFrexp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFrexp.c' object='testFrexp-testFrexp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFrexp_CFLAGS) $(CFLAGS) -c -o testFrexp-testFrexp.obj `if test -f 'testFrexp.c'; then $(CYGPATH_W) 'testFrexp.c'; else $(CYGPATH_W) '$(srcdir)/testFrexp.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/dfrexps.c b/2.3-1/src/c/auxiliaryFunctions/frexp/dfrexps.c
new file mode 100644
index 00000000..04d05be4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/dfrexps.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "frexp.h"
+
+double dfrexps(double _dblVal, double *_pdblExp)
+{
+ int iExp = 0;
+ double dblCoef = 0;
+ dblCoef = frexp(_dblVal, &iExp);
+ *_pdblExp = iExp;
+ return dblCoef;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/sfrexps.c b/2.3-1/src/c/auxiliaryFunctions/frexp/sfrexps.c
new file mode 100644
index 00000000..b15095e3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/sfrexps.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "frexp.h"
+
+float sfrexps(float _fltVal, float *_pfltExp)
+{
+ int iExp = 0;
+ float fltCoef = 0;
+ fltCoef = (float) frexp (_fltVal, &iExp);
+ *_pfltExp = (float) iExp;
+ return fltCoef;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/testFrexp.c b/2.3-1/src/c/auxiliaryFunctions/frexp/testFrexp.c
new file mode 100644
index 00000000..45988886
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/testFrexp.c
@@ -0,0 +1,162 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#define SIZE 100
+
+#define DMATRIX_TEST {14.6458099031118518,15.9879935334969154,14.5023146230340352,9.79104027026660262,\
+ 13.658147977601745,18.2826677794023276,13.9913488019182726,13.0555850244756648,\
+ 11.2702097163264696,12.2080852641231488,\
+14.9576657268129818,18.0415870145381838,15.4577532112657572,10.6060207869925502,\
+ 14.6987916130120198,19.9917861348452170,14.8484467294549827,14.0994958596124,\
+ 12.1294313366477713,12.8836800651605152,\
+7.72729140087719646,8.27571528291814396,8.78222511899259928,5.22537042408334251,\
+ 7.61718988429527233,10.1106593547443495,7.22727291477849576,6.72646688774223733,\
+ 6.21430065514425589,6.69442204331610213,\
+11.8618893865302528,13.2731189359057637,12.8373872935372706,9.52692469532374631,\
+ 11.9056327368823247,16.3654355264039921,11.8674243780595265,11.7206072002431814,\
+ 9.24712051368910970,10.6966525674175159,\
+7.25089971320127891,8.98673751651268127,7.49831172728240691,5.29368504368777693,\
+ 8.12154956830077346,10.3089262075282218,7.4337348502224856,6.83888206810676191,\
+ 5.87125977419815737,6.5321378683758375,\
+9.25854069422946502,10.4059421461299539,9.47515410794143342,7.263789985253827,\
+ 9.16034813421007321,13.6353552693330933,9.3726649654333336,8.83558176180042132,\
+ 7.6055387753197277,8.4871270614444292,\
+12.6878667266786511,14.1417583108624711,13.0448499416136254,9.182764814582713,\
+ 12.4852121681423256,17.073953108953809,13.2550267101027224,11.3640159258193041,\
+ 9.6279844249894015,10.6765282334921068,\
+16.0691497196859565,18.4667994666424704,16.975871456346809,12.083598083627443,\
+ 15.7522021028722747,22.0489520587189212,16.1322911282790358,16.8044904865300744,\
+ 12.7829232118433556,14.5730443462997599,\
+11.943978463537455,13.6259118560125358,11.8068134298221956,8.21687415305816771,\
+ 11.4127920042158735,15.2296090993128281,11.3826577511842082,11.0976684273648587,\
+ 10.3857413785092909,10.2894980707345525,\
+11.5843985401712821,13.2781579371486753,12.1725305229437293,8.37850128011447204,\
+ 11.8141382209783163,15.4022074994757734,11.484608766021573,11.1535660239869383,\
+ 9.31343988645433285,11.1349864749012912}
+
+#define FMATRIX_TEST {4.6052332809216896f,2.16205411267794823f,1.12245312965776556f,4.0468190853821735f,\
+ 7.29705295628955231f,2.45894799152591625f,2.29331674633863614f,4.21571156291592253f,\
+ 2.81922686558935887f,2.348781949769843f,\
+2.07401297354815162f,1.50063692688995753f,0.25219828236411757f,2.7063265188290884f,\
+ 6.35812780561968260f,0.67264506810224134f,0.79079814568186024f,2.91747981321864280f,\
+ 1.01032692983832129f,0.75975015828076931f,\
+7.04077899650083694f,5.39363072316827363f,4.99449464719530045f,6.79878933472462954f,\
+ 11.2977866849707205f,5.7026161792862045f,6.09443833294921244f,7.35970702338152272f,\
+ 6.14030297304667272f,5.80227288585002476f,\
+1.52422494456658053f,0.15792523935350228f,-0.39437456229879331f,3.21063571532312331f,\
+ 4.72654937095295491f,0.19681048033039794f,0.13926710536989889f,2.4098033377935764f,\
+ 1.19110231590601412f,0.24431206393184518f,\
+5.84910802491279558f,3.67968516288822922f,2.73879619563976862f,5.69547375492497387f,\
+ 10.2284804678743431f,4.40378197582331143f,3.9855513762320007f,6.24858736599414133f,\
+ 4.57057059205936156f,4.19331143449899635f,\
+2.84423960711997825f,0.91341486330902766f,0.32799575263405639f,3.63130361353437925f,\
+ 6.73358898182897025f,2.44092642244158631f,1.4035651670524776f,3.29646069585033841f,\
+ 1.63804041671370615f,1.34065096546340268f,\
+5.04689360696997724f,2.58451417966281571f,1.89915292921285772f,4.62170835433455451f,\
+ 9.05019265678329887f,3.33670002112993291f,3.66038974983755372f,5.62296495186113443f,\
+ 4.04432332701467434f,3.48415716881126114f,\
+2.99051528256943167f,0.76077291642727529f,0.19995186822386554f,2.96972391032047955f,\
+ 6.60462877127714787f,1.8346028052798535f,1.31621250911818244f,3.73816126628208467f,\
+ 1.3788533261260996f,0.30973924698106181f,\
+5.20595600060592734f,3.44646883779368096f,1.85946748567920750f,5.1361216710529769f,\
+ 10.0941765681228333f,3.49429925842045552f,3.05021742013193098f,5.4348094549241184f,\
+ 4.51765668386982977f,3.40850797720926035f,\
+4.65702831667450212f,3.03706964016556746f,2.06940591125521856f,5.11047315752830578f,\
+ 9.94379845012778674f,3.3321507049026704f,3.29919175160893818f,5.94111235727490428f,\
+ 4.22429837741492253f,4.41612421969640145f}
+
+
+
+#include <assert.h>
+#include <stdio.h>
+#include "frexp.h"
+#include "pow.h"
+
+
+static void dfrexpsTest ( void ) {
+
+ int i = 0 ;
+
+ double out = 0 ;
+ double dexp = 0 ;
+ double result = 0;
+
+
+
+ double in[] = DMATRIX_TEST ;
+
+
+
+
+
+
+ for ( i = 0 ; i < SIZE; i++ )
+ {
+ out = dfrexps ( in[i] , &dexp ) ;
+ result = out * dpows( 2 , dexp) ;
+
+ printf ( "\t\t %d in :%e %e\tresult : %e\tassert : %e \n" , i , dexp, in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+ assert ( fabs ( in[i] - result) / fabs( in[i]) < 3e-16 ) ;
+ }
+
+
+}
+
+static void sfrexpsTest ( void ) {
+
+ int i = 0 ;
+
+ float out = 0 ;
+ float fexp = 0 ;
+ float result = 0;
+
+
+ float in[] = FMATRIX_TEST ;
+
+
+
+
+
+
+ for ( i = 0 ; i < SIZE; i++ )
+ {
+ out = sfrexps ( in[i] , &fexp ) ;
+ result = out * spows( 2.0f , fexp) ;
+
+ printf ( "\t\t %d in : %e\tresult : %e\tassert : %e \n" , i , in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+ assert ( fabs ( in[i] - result) / fabs( in[i]) < 1e-6 ) ;
+ }
+
+
+}
+
+
+static int testFrexp(void) {
+
+ printf("\n>>>> Matrix Exponential Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ dfrexpsTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ sfrexpsTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testFrexp() == 0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj b/2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj
new file mode 100644
index 00000000..0c4a6f72
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>testFrexp</ProjectName>
+ <ProjectGuid>{FDBBFB07-9E66-481E-AA45-3F3BD87CCE77}</ProjectGuid>
+ <RootNamespace>frexp</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFrexp.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\operations\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj.filters
new file mode 100644
index 00000000..ea3ead10
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/frexp/test_frexp/frexp.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFrexp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/abs.h b/2.3-1/src/c/auxiliaryFunctions/includes/abs.h
new file mode 100644
index 00000000..cd022905
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/abs.h
@@ -0,0 +1,160 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ABS_H__
+#define __ABS_H__
+
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "sqrt.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ ** \brief Float Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the float we must determine abs.
+ ** \return -in or in depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT float sabss(float in);
+
+/**
+ ** \brief Double Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the double we must determine abs.
+ ** \return -in or +in depending on the abs of in.
+ **/
+EXTERN_AUXFUNCT double dabss(double in);
+
+/**
+ ** \brief Float Complex Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the float complex we must determine abs i.e. module.
+ ** \return |in|.
+ **/
+EXTERN_AUXFUNCT float cabss(floatComplex in);
+
+/**
+ ** \brief Double Complex Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the double complex we must determine abs i.e. module.
+ ** \return |in|.
+ **/
+EXTERN_AUXFUNCT double zabss(doubleComplex in);
+
+/**
+ ** \brief Uint8 Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the uint8 we must determine abs.
+ ** \return -in or in depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT uint8 u8abss(uint8 in);
+
+/**
+ ** \brief Int8 Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the int8 we must determine abs.
+ ** \return -in or in depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int8 i8abss(int8 in);
+
+/**
+ ** \brief Uint16 Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the uint16 we must determine abs.
+ ** \return -in or in depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT uint16 u16abss(uint16 in);
+
+/**
+ ** \brief Int16 Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the int16 we must determine abs.
+ ** \return -in or in depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int16 i16abss(int16 in);
+
+/**
+ ** \brief Float Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the float array we must determine abs.
+ ** \param out : the float array result.
+ **/
+EXTERN_AUXFUNCT void sabsa(float *in, int size, float* out);
+
+/**
+ ** \brief Double Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the double array we must determine abs.
+ ** \param out : the double array result.
+ **/
+EXTERN_AUXFUNCT void dabsa(double *in, int size, double* out);
+
+/**
+ ** \brief Float Complex Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the float complex array we must determine abs i.e. module.
+ ** \param out : the float complex array result i.e out[n] = |in[n]|.
+ **/
+EXTERN_AUXFUNCT void cabsa(floatComplex *in, int size, float* out);
+
+/**
+ ** \brief Double Complex Array Absolute Value function
+ ** Determine the absolute value of in.
+ ** \param in : the double complex array we must determine abs i.e. module.
+ ** \param out : the double complex array result i.e out[n] = |in[n]|.
+ **/
+EXTERN_AUXFUNCT void zabsa(doubleComplex *in, int size, double* out);
+
+
+/**
+ ** \brief Uint8 Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the uint8 array we must determine abs.
+ ** \param out : the uint8 array result.
+ **/
+EXTERN_AUXFUNCT void u8absa(uint8 *in, int size, uint8* out);
+
+/**
+ ** \brief Int8 Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the int8 array we must determine abs.
+ ** \param out : the int8 array result.
+ **/
+EXTERN_AUXFUNCT void i8absa(int8 *in, int size, int8* out);
+
+/**
+ ** \brief Uint16 Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the uint16 array we must determine abs.
+ ** \param out : the uint16 array result.
+ **/
+EXTERN_AUXFUNCT void u16absa(uint16 *in, int size, uint16* out);
+
+/**
+ ** \brief Int16 Array Absolute Value function
+ ** Determine the absolute value of in elements.
+ ** \param in : the int16 array we must determine abs.
+ ** \param out : the int16 array result.
+ **/
+EXTERN_AUXFUNCT void i16absa(int16 *in, int size, int16* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ABS_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/conj.h b/2.3-1/src/c/auxiliaryFunctions/includes/conj.h
new file mode 100644
index 00000000..b49855bf
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/conj.h
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __CONJ_H__
+#define __CONJ_H__
+
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_AUXFUNCT floatComplex cconjs( floatComplex in ) ;
+
+EXTERN_AUXFUNCT void cconja ( floatComplex* in , int size, floatComplex* out );
+
+EXTERN_AUXFUNCT doubleComplex zconjs ( doubleComplex in) ;
+
+EXTERN_AUXFUNCT void zconja ( doubleComplex* in , int size, doubleComplex* out ) ;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__CONJ_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/dynlib_auxiliaryfunctions.h b/2.3-1/src/c/auxiliaryFunctions/includes/dynlib_auxiliaryfunctions.h
new file mode 100644
index 00000000..09b1bea8
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/dynlib_auxiliaryfunctions.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_AUXILIARYFUNCTIONS_H__
+#define __DYNLIB_AUXILIARYFUNCTIONS_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if AUXILIARYFUNCTIONS_EXPORTS
+ #define EXTERN_AUXFUNCT __declspec (dllexport)
+ #else
+ #define EXTERN_AUXFUNCT __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_AUXFUNCT
+#endif
+
+#endif /* __DYNLIB_AUXILIARYFUNCTIONS_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/find.h b/2.3-1/src/c/auxiliaryFunctions/includes/find.h
new file mode 100644
index 00000000..8072f745
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/find.h
@@ -0,0 +1,79 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __FIND_H__
+#define __FIND_H__
+
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Float Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void sfinda(float* x, int size, float *out, int max);
+
+/*
+** \brief Double Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void dfinda(double*x, int size, double *out, int max);
+
+/*
+** \brief Float Complex Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void cfinda(floatComplex* z, int size, float *out, int max);
+
+/*
+** \brief Double Complex Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void zfinda(doubleComplex* z, int size, double *out, int max);
+
+/*
+** \brief uint8 Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void u8finda(uint8 *x, int size, uint8 *out, int max);
+
+/*
+** \brief uint16 Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void u16finda(uint16 *x, int size, uint16 *out, int max);
+
+/*
+** \brief int8 Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void i8finda(int8 *x, int size, int8 *out, int max);
+
+/*
+** \brief int16 Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void i16finda(int16 *x, int size, int16 *out, int max);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__FIND_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/find2d.h b/2.3-1/src/c/auxiliaryFunctions/includes/find2d.h
new file mode 100644
index 00000000..2e9be6fa
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/find2d.h
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __FIND2D_H__
+#define __FIND2D_H__
+
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Float Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void sfind2da(float* x, int rows, int columns, float* out1, int* sizeOut1, float* out2, int* sizeOut2,int max);
+
+/*
+** \brief Double Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void dfind2da(double* x, int rows, int columns, double* out1, double* out2, int max);
+
+/*
+** \brief Float Complex Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void cfind2da(floatComplex* z, int rows, int columns, float* out1, int* sizeOut1, float* out2, int* sizeOut2,int max);
+
+/*
+** \brief Double Complex Find function
+** max is an integer giving the maximum number of indices to return. (use -1 to search them all)
+*/
+EXTERN_AUXFUNCT void zfind2da(doubleComplex* z, int rows, int columns, double* out1, int* sizeOut1, double* out2, int* sizeOut2,int max);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__FIND2D_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/frexp.h b/2.3-1/src/c/auxiliaryFunctions/includes/frexp.h
new file mode 100644
index 00000000..cb4d8f32
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/frexp.h
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __FREXP_H__
+#define __FREXP_H__
+
+#include <math.h>
+#include "dynlib_auxiliaryfunctions.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_AUXFUNCT float sfrexps(float _fltVal, float *_pfltExp);
+
+EXTERN_AUXFUNCT double dfrexps(double _dblVal, double *_pdblExp);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+
+#endif /* !__FREXP_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/isempty.h b/2.3-1/src/c/auxiliaryFunctions/includes/isempty.h
new file mode 100644
index 00000000..4248200a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/isempty.h
@@ -0,0 +1,64 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __IS_EMPTY_H__
+#define __IS_EMPTY_H__
+
+
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "notFound.h"
+#include "find.h"
+
+
+/*
+** \brief Float Is Empty function
+*/
+#define sisemptys(in) 0.0f /*= false*/
+
+/*
+** \brief Double Is Empty function
+*/
+#define disemptys(in) 0/*= false*/
+
+/*
+** \brief Float Complex Is Empty function
+*/
+#define cisemptys(in) 0.0f/*= false*/
+
+/*
+** \brief Double Complex Is Empty function
+*/
+#define zisemptys(in) 0/*= false*/
+
+/*
+** \brief Float Is Empty function
+*/
+#define sisemptya(in,size) (size==0) ? 1.0f : 0.0f
+
+/*
+** \brief Double Is Empty function
+*/
+#define disemptya(in,size) (size==0) ? 1.0 : 0.0
+
+/*
+** \brief Float Complex Is Empty function
+*/
+#define cisemptya(in,size) (size==0) ? 1.0f : 0.0f
+
+/*
+** \brief Double Complex Is Empty function
+*/
+#define zisemptya(in,size) (size==0) ? 1.0 : 0.0
+
+#endif /* !__IS_EMPTY_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/isnan.h b/2.3-1/src/c/auxiliaryFunctions/includes/isnan.h
new file mode 100644
index 00000000..e0975c23
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/isnan.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __IS_NAN_H__
+#define __IS_NAN_H__
+
+#include <math.h>
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief Float Is Nan function
+*/
+EXTERN_AUXFUNCT float sisnans(float x);
+
+/*
+** \brief Double Is Nan function
+*/
+EXTERN_AUXFUNCT double disnans(double x);
+
+/*
+** \brief Float Complex Is Nan function
+*/
+EXTERN_AUXFUNCT float cisnans(floatComplex z);
+
+/*
+** \brief Double Complex Is Nan function
+*/
+EXTERN_AUXFUNCT double zisnans(doubleComplex z);
+
+/*
+** \brief Float Is Nan function
+*/
+EXTERN_AUXFUNCT void sisnana(float* x, int size, float* out);
+
+/*
+** \brief Double Is Nan function
+*/
+EXTERN_AUXFUNCT void disnana(double* x, int size, double* out);
+
+/*
+** \brief Float Complex Is Nan function
+*/
+EXTERN_AUXFUNCT void cisnana(floatComplex* z, int size, float* out);
+
+/*
+** \brief Double Complex Is Nan function
+*/
+EXTERN_AUXFUNCT void zisnana(doubleComplex* z, int size, double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+
+#endif /* !__IS_NAN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/length.h b/2.3-1/src/c/auxiliaryFunctions/includes/length.h
new file mode 100644
index 00000000..f8939f18
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/length.h
@@ -0,0 +1,98 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) 2007-2008 - POLIBA - Raffaele Nutricato
+ *
+ * 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
+ *
+ */
+
+#ifndef __LENGTH_H__
+#define __LENGTH_H__
+
+#include "dynlib_auxiliaryfunctions.h"
+
+/**
+ ** WARNING :
+ ** We assume size of arrays are known, so we
+ ** use #define to avoid compilation warnings
+ ** such as "unused parameter"
+ **/
+
+/**
+ ** \brief Float Size Scalar function
+ ** Determine the size of an array.
+ ** \param in : the float array we must determine size.
+ ** \param size : the number of elements.
+ ** \return the size of in.
+ **/
+#define slengths(in) 1.0f
+
+/**
+ ** \brief Float length Scalar function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define dlengths(in) 1.0
+
+/**
+ ** \brief Complex Float length Scalar function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define clengths(in) 1.0f
+
+/**
+ ** \brief Complex Double length Array function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define zlengths(in) 1.0
+
+/**
+ ** \brief Float length Array function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define slengtha(in, size) (float)size
+
+/**
+ ** \brief Double length Array function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define dlengtha(in, size) (double)size
+
+/**
+ ** \brief Complex Float length Array function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define clengtha(in, size) (float)size
+
+/**
+ ** \brief Complex Double length Array function
+ ** Determine the length of an array.
+ ** \param in : the float array we must determine length.
+ ** \param length : the number of elements.
+ ** \return the length of in.
+ **/
+#define zlengtha(in, size) (double)size
+
+#endif /* !__LENGTH_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/max.h b/2.3-1/src/c/auxiliaryFunctions/includes/max.h
new file mode 100644
index 00000000..c37bfea5
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/max.h
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __MAX_H__
+#define __MAX_H__
+
+#define max(a,b) (a>=b?a:b)
+
+#define maxa(a,size1,b,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=max(a[i],b[i]);\
+ }
+
+#endif /* !__MAX_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/min.h b/2.3-1/src/c/auxiliaryFunctions/includes/min.h
new file mode 100644
index 00000000..70097d10
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/min.h
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+#ifndef __MIN_H__
+#define __MIN_H__
+
+#define min(a,b) (a<=b?a:b)
+
+#define mina(a,size1,b,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=min(a[i],b[i]);\
+ }
+#endif /* !__MIN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/pythag.h b/2.3-1/src/c/auxiliaryFunctions/includes/pythag.h
new file mode 100644
index 00000000..9535a354
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/pythag.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __PYTHAG_H__
+#define __PYTHAG_H__
+
+#include "dynlib_auxiliaryfunctions.h"
+#include "multiplication.h"
+#include "addition.h"
+#include "sqrt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief Float Pythag function
+*/
+EXTERN_AUXFUNCT float spythags(float x, float y);
+
+/*
+** \brief Double Pythag function
+*/
+EXTERN_AUXFUNCT double dpythags(double x, double y);
+
+/*
+** \brief Float Complex Pythag function
+*/
+EXTERN_AUXFUNCT floatComplex cpythags(floatComplex x, floatComplex y);
+
+/*
+** \brief Double Complex Pythag function
+*/
+EXTERN_AUXFUNCT doubleComplex zpythags(doubleComplex x, doubleComplex y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__PYTHAG_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/rand.h b/2.3-1/src/c/auxiliaryFunctions/includes/rand.h
new file mode 100644
index 00000000..d032a124
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/rand.h
@@ -0,0 +1,135 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __RAND_H__
+#define __RAND_H__
+
+#include <math.h>
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ ** \brief Float Rand function
+ ** \return A random float.
+ **/
+EXTERN_AUXFUNCT float srands(void);
+
+/**
+ ** \brief Double Rand function
+ ** \return A random double.
+ **/
+EXTERN_AUXFUNCT double drands(void);
+
+/**
+ ** \brief Float Complex Rand function
+ ** \return A random float complex.
+ **/
+EXTERN_AUXFUNCT floatComplex crands(void);
+
+/**
+ ** \brief Double Complex Rand function
+ ** \return A random double complex.
+ **/
+EXTERN_AUXFUNCT doubleComplex zrands(void);
+
+
+/**
+ ** \brief uint8 Rand function
+ ** \return A random double.
+ **/
+EXTERN_AUXFUNCT double u8rands(void);
+
+
+/**
+ ** \brief uint16 Rand function
+ ** \return A random double.
+ **/
+EXTERN_AUXFUNCT double u16rands(void);
+
+
+/**
+ ** \brief int8 Rand function
+ ** \return A random double.
+ **/
+EXTERN_AUXFUNCT double i8rands(void);
+
+
+/**
+ ** \brief int16 Rand function
+ ** \return A random double.
+ **/
+EXTERN_AUXFUNCT double i16rands(void);
+
+
+/**
+ ** \brief Float Array Rand function
+ ** \return A random float array.
+ **/
+EXTERN_AUXFUNCT void sranda(float *out, int size);
+
+/**
+ ** \brief Double Array Rand function
+ ** \return A random double array.
+ **/
+EXTERN_AUXFUNCT void dranda(double *out, int size);
+
+/**
+ ** \brief Float Complex Array Rand function
+ ** \return A random float complex array.
+ **/
+EXTERN_AUXFUNCT void cranda(floatComplex *out, int size);
+
+/**
+ ** \brief Double Complex Array Rand function
+ ** \return A random double complex array.
+ **/
+EXTERN_AUXFUNCT void zranda(doubleComplex *out, int size);
+
+/**
+ ** \brief uint8 Array Rand function
+ ** \return A random double array.
+ **/
+EXTERN_AUXFUNCT void u8randa(double *out, int size);
+
+/**
+ ** \brief uint16 Array Rand function
+ ** \return A random double array.
+ **/
+EXTERN_AUXFUNCT void u16randa(double *out, int size);
+
+
+/**
+ ** \brief int8 Array Rand function
+ ** \return A random double array.
+ **/
+EXTERN_AUXFUNCT void i8randa(double *out, int size);
+
+/**
+ ** \brief int16 Array Rand function
+ ** \return A random double array.
+ **/
+EXTERN_AUXFUNCT void i16randa(double *out, int size);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+
+#endif /* !__RAND_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/sign.h b/2.3-1/src/c/auxiliaryFunctions/includes/sign.h
new file mode 100644
index 00000000..67f0da8b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/sign.h
@@ -0,0 +1,169 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SIGN_H__
+#define __SIGN_H__
+
+#include <math.h>
+
+#include "dynlib_auxiliaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ ** \brief Float Signe function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the float we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT float ssigns(float in);
+
+/**
+ ** \brief Double Signe function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the double we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT double dsigns(double in);
+
+/**
+ ** \brief Float Complex Signe function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the float we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT floatComplex csigns(floatComplex in);
+
+/**
+ ** \brief Double Complex Signe function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the double we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT doubleComplex zsigns(doubleComplex in);
+
+/**
+ ** \brief Uint8 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the uint8 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int8 u8signs(uint8 in);
+
+/**
+ ** \brief Int8 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the int8 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int8 i8signs(int8 in);
+
+/**
+ ** \brief Uint16 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the uint16 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int16 u16signs(uint16 in);
+
+/**
+ ** \brief Int16 Sign function
+ ** Determine the sign of in (assume that 0 is positive).
+ ** \param in : the uint16 we must determine sign.
+ ** \return -1 or +1 depending on the sign of in.
+ **/
+EXTERN_AUXFUNCT int16 i16signs(int16 in);
+
+/**
+ ** \brief Float Signe Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the float array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void ssigna(float *in, int size, float *out);
+
+/**
+ ** \brief Double Signe Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the double array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void dsigna(double *in, int size, double *out);
+
+/**
+ ** \brief Float Signe Complex Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the float complex array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void csigna(floatComplex *in, int size, floatComplex *out);
+
+/**
+ ** \brief Double Signe Complex Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the double complex array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void zsigna(doubleComplex *in, int size, doubleComplex *out);
+
+/**
+ ** \brief Uint8 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the uint8 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void u8signa(uint8 *in, int size, int8 *out);
+
+/**
+ ** \brief Int8 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the int8 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void i8signa(int8 *in, int size, int8 *out);
+
+/**
+ ** \brief Uint16 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the uint16 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void u16signa(uint16 *in, int size, int16 *out);
+
+/**
+ ** \brief Int16 Sign Array function
+ ** Determine the sign of an array in (assume that 0 is positive).
+ ** \param in : the int16 array we must determine sign.
+ ** \param size : the number of elements.
+ ** \return -1 or +1 depending on the sign of in elements.
+ **/
+EXTERN_AUXFUNCT void i16signa(int16 *in, int size, int16 *out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__SIGN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/size.h b/2.3-1/src/c/auxiliaryFunctions/includes/size.h
new file mode 100644
index 00000000..ebc07a05
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/size.h
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SIZE_H__
+#define __SIZE_H__
+
+/**
+ ** \brief Double Size Array function
+ ** Determine the size of an array.
+ ** \param in : the float array we must determine size.
+ ** \param size : the number of elements.
+ ** \return the size of in.
+ **/
+double dallsizea(int *size, char *select);
+
+#endif /* !__SIZE_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/includes/type.h b/2.3-1/src/c/auxiliaryFunctions/includes/type.h
new file mode 100644
index 00000000..00b468d6
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/includes/type.h
@@ -0,0 +1,72 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/**
+ ** \brief Return scilab code encoding for data type.
+ **/
+
+/**
+ ** WARNING :
+ ** We use #define to avoid compilation warnings
+ ** such as "unused parameter" and better performance.
+ **/
+
+#ifndef __TYPE_H__
+#define __TYPE_H__
+
+#define REAL_FLOAT_CONSTANT_MATRIX 1.0f
+#define REAL_DOUBLE_CONSTANT_MATRIX 1.0
+
+#define COMPLEX_FLOAT_CONSTANT_MATRIX 1.0f
+#define COMPLEX_DOUBLE_CONSTANT_MATRIX 1.0
+
+/**
+ ** Float scalar.
+ **/
+#define stypes(in) REAL_FLOAT_CONSTANT_MATRIX
+
+/**
+ ** Double scalar.
+ **/
+#define dtypes(in) REAL_DOUBLE_CONSTANT_MATRIX
+
+/**
+ ** Float complex scalar.
+ **/
+#define ctypes(in) COMPLEX_FLOAT_CONSTANT_MATRIX
+
+/**
+ ** Double complex scalar.
+ **/
+#define ztypes(in) COMPLEX_DOUBLE_CONSTANT_MATRIX
+
+/**
+ ** Float array.
+ **/
+#define stypea(in, size) REAL_FLOAT_CONSTANT_MATRIX
+
+/**
+ ** Double array.
+ **/
+#define dtypea(in, size) REAL_DOUBLE_CONSTANT_MATRIX
+
+/**
+ ** Float complex array.
+ **/
+#define ctypea(in, size) COMPLEX_FLOAT_CONSTANT_MATRIX
+
+/**
+ ** Double complex array.
+ **/
+#define ztypea(in, size) COMPLEX_DOUBLE_CONSTANT_MATRIX
+
+#endif /* !__TYPE_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_abs.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_abs.h
new file mode 100644
index 00000000..70a428c2
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_abs.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ABS_H__
+#define __INT_ABS_H__
+
+#define s0abss0(in) sabss(in)
+
+#define d0absd0(in) dabss(in)
+
+#define c0abss0(in) cabss(in)
+
+#define z0absd0(in) zabss(in)
+
+#define u80absu80(in) u8abss(in)
+
+#define i80absi80(in) i8abss(in)
+
+#define u160absu160(in) u16abss(in)
+
+#define i160absi160(in) i16abss(in)
+
+#define s2abss2(in,size,out) sabsa(in, size[0]*size[1], out)
+
+#define d2absd2(in,size,out) dabsa(in, size[0]*size[1], out)
+
+#define c2abss2(in,size,out) cabsa(in, size[0]*size[1], out)
+
+#define z2absd2(in,size,out) zabsa(in, size[0]*size[1], out)
+
+#define u82absu82(in,size,out) u8absa(in, size[0]*size[1], out)
+
+#define i82absi82(in,size,out) i8absa(in, size[0]*size[1], out)
+
+#define u162absu162(in,size,out) u16absa(in, size[0]*size[1], out)
+
+#define i162absi162(in,size,out) i16absa(in, size[0]*size[1], out)
+
+#endif /* !__INT_ABS_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_conj.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_conj.h
new file mode 100644
index 00000000..7884c99f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_conj.h
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_CONJ_H__
+#define __INT_CONJ_H__
+
+#define copy_c(in,size,out) {int i;for (i=0; i<size[0]*size[1];i++) out[i]=in[i];}
+
+#define s0conjs0(in) in
+
+#define d0conjd0(in) in
+
+#define c0conjc0(in) cconjs(in)
+
+#define z0conjz0(in) zconjs(in)
+
+#define u80conju80(in) in
+
+#define i80conji80(in) in
+
+#define u160conju160(in) in
+
+#define i160conji160(in) in
+
+#define s2conjs2(in,size,out) copy_c(in,size,out)
+
+#define d2conjd2(in,size,out) copy_c(in,size,out)
+
+#define c2conjc2(in,size,out) cconja(in, size[0]*size[1], out)
+
+#define z2conjz2(in,size,out) zconja(in, size[0]*size[1], out)
+
+#define u82conju82(in,size,out) copy_c(in,size,out)
+
+#define i82conji82(in,size,out) copy_c(in,size,out)
+
+#define u162conju162(in,size,out) copy_c(in,size,out)
+
+#define i162conji162(in,size,out) copy_c(in,size,out)
+
+#endif /* !__INT_CONJ_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_find.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_find.h
new file mode 100644
index 00000000..ec1e1575
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_find.h
@@ -0,0 +1,184 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FIND_H__
+#define __INT_FIND_H__
+
+/* 1 input, 1 output */
+
+#define s0finds0(in) (in == 0) ? -1 : 1
+
+#define d0findd0(in) (in == 0) ? -1 : 1
+
+#define c0finds0(in) ((creals(in) == 0) && (cimags(in) == 0)) ? -1 : 1
+
+#define z0findd0(in) ((zreals(in) == 0) && (zimags(in) == 0)) ? -1 : 1
+
+#define u80findu80(in) (in == 0) ? -1 : 1
+
+#define u160findu160(in) (in == 0) ? -1 : 1
+
+#define i80findi80(in) (in == 0) ? -1 : 1
+
+#define i160findi160(in) (in == 0) ? -1 : 1
+
+#define s2finds2(in,size,out) sfinda(in, size[0]*size[1], out, -1)
+
+#define d2findd2(in,size,out) dfinda(in, size[0]*size[1], out, -1)
+
+#define c2finds2(in,size,out) cfinda(in, size[0]*size[1], out, -1)
+
+#define z2findd2(in,size,out) zfinda(in, size[0]*size[1], out, -1)
+
+#define u82findu82(in,size,out) u8finda(in,size[0]*size[1],out, -1)
+
+#define u162findu162(in,size,out) u16finda(in,size[0]*size[1],out, -1)
+
+#define i82findi82(in,size,out) i8finda(in,size[0]*size[1],out, -1)
+
+#define i162findi162(in,size,out) i16finda(in,size[0]*size[1],out, -1)
+
+/* 1 input, 2 outputs */
+
+#define s0finds0s0(in,out2) *out2 = s0finds0(in);s0finds0(in)
+
+#define d0findd0d0(in,out2) *out2 = d0findd0(in);d0findd0(in)
+
+#define c0finds0s0(in,out2) if ((creals(in)==0) && (cimags(in)==0)) {out2=0;} else {out2=1;}
+
+#define z0findd0d0(in,out2) if ((zreals(in)==0) && (zimags(in)==0)) {out2=0;} else {out2=1;}
+
+#define u80findu80u80(in,out2) *out2 = u80findu80(in);u80findu80(in)
+
+#define u160findu160u160(in,out2) *out2 = u160findu160(in);u160findu160(in)
+
+#define i80findi80i80(in,out2) *out2 = i80findi80(in);i80findi80(in)
+
+#define i160findi160i160(in,out2) *out2 = i160findi160(in);i160findi160(in)
+
+
+#define s2finds2s2(in,size,out1,sizeOut1,out2,sizeOut2) sfind2da(in,size[0],size[1],out1,sizeOut1,out2,sizeOut2,-1)
+
+#define d2findd2d2(in,size,out1,out2) dfind2da(in,size[0],size[1],out1,out2,-1)
+
+#define c2finds2s2(in,size,out1,sizeOut1,out2,sizeOut2) cfind2da(in,size[0],size[1],out1,sizeOut1,out2,sizeOut2,-1)
+
+#define z2finds2s2(in,size,out1,sizeOut1,out2,sizeOut2) zfind2da(in,size[0],size[1],out1,sizeOut1,out2,sizeOut2,-1)
+
+/* 2 inputs, 1 output */
+
+#define s0s0finds0(in1,in2) s0finds0(in1)
+
+#define d0d0findd0(in1,in2) d0findd0(in1)
+
+#define c0s0finds0(in1,in2) c0finds0(in1)
+
+#define z0d0findd0(in1,in2) z0findd0(in1)
+
+#define u80u80findu80(in1,in2) u80findu80(in1)
+
+#define u160u160findu160(in1,in2) u160findu160(in1)
+
+#define i80i80findi80(in1,in2) i80findi80(in1)
+
+#define i160i160findi160(in1,in2) i160findi160(in1)
+
+#define s2s0finds2(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0} ;\
+ sfinda(in1,size[0]*size[1],out,in2);\
+ }
+
+#define d2d0findd2(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0} ;\
+ dfinda(in1,size[0]*size[1],out,in2);\
+ }
+
+#define c2s0finds2(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0} ;\
+ cfinda(in1,size[0]*size[1],out,in2);\
+ }
+
+#define z2d0findd2(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0} ;\
+ zfinda(in1,size[0]*size[1],out,in2);\
+ }
+
+#define u82u80findu82(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0};\
+ u8finda(in1,size[0]*size[1],out,in2);\
+}
+
+#define u162u160findu162(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0};\
+ u16finda(in1,size[0]*size[1],out,in2);\
+}
+
+#define i82i80findi82(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0};\
+ i8finda(in1,size[0]*size[1],out,in2);\
+}
+
+#define i162i160findi162(in1,size,in2,out) {\
+ int temp_out_indice[2] = {0};\
+ i16finda(in1,size[0]*size[1],out,in2);\
+}
+/* 2 inputs, 2 outputs */
+
+#define s0s0finds0s0(in1,in2,out1,out2) s0finds0s0(in1,out1,out2)
+
+#define d0d0findd0d0(in1,in2,out1,out2) d0findd0d0(in1,out1,out2)
+
+#define c0s0finds0s0(in1,in2,out1,out2) c0finds0s0(in1,out1,out2)
+
+#define z0d0findd0d0(in1,in2,out1,out2) z0findd0d0(in1,out1,out2)
+
+#define u80u80findu80u80(in1,in2,out1,out2) u80findu80u80(in1,out1,out2)
+
+#define u160u160findu160u160(in1,in2,out1,out2) u160findu160u160(in1,out1,out2)
+
+#define i80i80findi80i80(in1,in2,out1,out2) i80findi80i80(in1,out1,out2)
+
+#define i160i60findi60i60(in1,in2,out1,out2) i60findi60i60(in1,out1,out2)
+
+
+/*FIXME : prototypes are wrong*/
+#define s2s0finds2s2(in1,size,in2,out1,out2) {\
+ int temp_out_indice1[2] = {0} ;\
+ int temp_out_indice2[2] = {0} ;\
+ sfind2da(in1,size[0],size[1],out1,temp_out_indice1,out2,temp_out_indice2,in2);\
+ }
+
+#define d2d0findd2d2(in1,size,in2,out1,out2) {\
+ int temp_out_indice1[2] = {0} ;\
+ int temp_out_indice2[2] = {0} ;\
+ dfind2da(in1,size[0],size[1],out1,temp_out_indice1,out2,temp_out_indice2,in2);\
+ }
+
+
+#define c2s0finds2s2(in1,size,in2,out1,out2) {\
+ int temp_out_indice1[2] = {0} ;\
+ int temp_out_indice2[2] = {0} ;\
+ cfind2da(in1,size[0],size[1],out1,temp_out_indice1,out2,temp_out_indice2,in2);\
+ }
+
+#define z2d0findd2d2(in1,size,in2,out1,out2) {\
+ int temp_out_indice1[2] = {0} ;\
+ int temp_out_indice2[2] = {0} ;\
+ zfind2da(in1,size[0],size[1],out1,temp_out_indice1,out2,temp_out_indice2,in2);\
+ }
+
+
+
+#endif /* !__INT_FIND_H__ */
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_frexp.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_frexp.h
new file mode 100644
index 00000000..fa72417d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_frexp.h
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FREXP_H__
+#define __INT_FREXP_H__
+
+#define s0s2frexps0(in1,in2) sfrexps(in1,in2)
+
+#define d0d2frexps0(in1,in2) dfrexps(in1,in2)
+
+#endif /* !__INT_FREXP_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_isempty.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_isempty.h
new file mode 100644
index 00000000..403bc56e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_isempty.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ISEMPTY_H__
+#define __INT_ISEMPTY_H__
+
+#define s0isemptys0(in) sisemptys(in)
+
+#define d0isemptyd0(in) disemptys(in)
+
+#define c0isemptys0(in) cisemptys(in)
+
+#define z0isemptyd0(in) zisemptys(in)
+
+#define s2isemptys0(in,size) sisemptya(in, size[0]*size[1])
+
+#define d2isemptyd0(in,size) disemptya(in, size[0]*size[1])
+
+#define c2isemptys0(in,size) cisemptya(in, size[0]*size[1])
+
+#define z2isemptyd0(in,size) zisemptya(in, size[0]*size[1])
+
+#endif /* !__INT_ISEMPTY_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_isnan.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_isnan.h
new file mode 100644
index 00000000..8ab7c74c
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_isnan.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ISNAN_H__
+#define __INT_ISNAN_H__
+
+#define s0isnans0(in) sisnans(in)
+
+#define d0isnand0(in) disnans(in)
+
+#define c0isnans0(in) cisnans(in)
+
+#define z0isnand0(in) zisnans(in)
+
+#define s2isnans2(in,size,out) sisnana(in, size[0]*size[1], out)
+
+#define d2isnand2(in,size,out) disnana(in, size[0]*size[1], out)
+
+#define c2isnans2(in,size,out) cisnana(in, size[0]*size[1], out)
+
+#define z2isnand2(in,size,out) zisnana(in, size[0]*size[1], out)
+
+#endif /* !__INT_ISNAN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_length.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_length.h
new file mode 100644
index 00000000..fe84a92a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_length.h
@@ -0,0 +1,70 @@
+/*
+** -*- C -*-
+**
+** int_length.h
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright POLIBA 2008
+*/
+/*
+ 1. Search for length in INIT_FillSCI2LibCDirs.sci
+ 2. Search for // --- Function List Class. --- in INIT_FillSCI2LibCDirs.sci
+ 3. You will find
+ PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+ PrintStringInfo('c0'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+ PrintStringInfo('g0'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('g0'+ArgSeparator+'d0',ClassFileName,'file','y');
+
+ PrintStringInfo('s2'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+ PrintStringInfo('c2'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('z2'+ArgSeparator+'d0',ClassFileName,'file','y');
+ PrintStringInfo('g2'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('g2'+ArgSeparator+'d0',ClassFileName,'file','y');
+ 4. These are all the functions to be implemented.
+ 5. According to functions available in src you have to generate the mapping between
+ functions in step3 and functions in src.
+*/
+
+#ifndef __INT_LENGTH_H__
+#define __INT_LENGTH_H__
+
+#define s0lengths0(in) \
+slengths(in)
+
+#define d0lengthd0(in) \
+dlengths(in)
+
+#define c0lengths0(in) \
+clengths(in)
+
+#define z0lengthd0(in) \
+zlengths(in)
+
+#define g0lengths0(in) \
+slengths(in)
+
+#define g0lengthd0(in) \
+dlengths(in)
+
+#define s2lengths0(inptr,insizeptr) \
+slengtha(inptr, insizeptr[0]*insizeptr[1])
+
+#define d2lengthd0(inptr,insizeptr) \
+dlengtha(inptr, insizeptr[0]*insizeptr[1])
+
+#define c2lengths0(inptr,insizeptr) \
+clengtha(inptr, insizeptr[0]*insizeptr[1])
+
+#define z2lengthd0(inptr,insizeptr) \
+zlengtha(inptr, insizeptr[0]*insizeptr[1])
+
+#define g2lengths0(inptr,insizeptr) \
+slengtha(inptr, insizeptr[0]*insizeptr[1])
+
+#define g2lengthd0(inptr,insizeptr) \
+dlengtha(inptr, insizeptr[0]*insizeptr[1])
+#endif /* !__INT_LENGTH_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_max.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_max.h
new file mode 100644
index 00000000..0dc0eef0
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_max.h
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_MAX_H__
+#define __INT_MAX_H__
+
+#define s0maxs0(in) in
+
+#define d0maxd0(in) in
+
+#define s2maxs0(in,size) smaxa(in,size[0]*size[1]);
+
+#define d2maxd0(in,size) dmaxa(in,size[0]*size[1]);
+
+
+
+#define s0s0maxs0(in1,in2) max(in1,in2)
+
+#define d0d0maxd0(in1,in2) max(in1,in2)
+
+#define s2s2maxs2(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define d2d2maxd2(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+
+#define s2s0maxs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define d2d0maxd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define s0s2maxs2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define d0d2maxd2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#endif /* !__INT_MAX_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_min.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_min.h
new file mode 100644
index 00000000..ec48da72
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_min.h
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_MIN_H__
+#define __INT_MIN_H__
+
+#define s0mins0(in) in
+
+#define d0mind0(in) in
+
+#define s2mins0(in,size) smina(in,size[0]*size[1]);
+
+#define d2mind0(in,size) dmina(in,size[0]*size[1]);
+
+
+
+#define s0s0mins0(in1,in2) min(in1,in2)
+
+#define d0d0mind0(in1,in2) min(in1,in2)
+
+#define s2s2mins2(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define d2d2mind2(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+
+#define s2s0mins2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define d2d0mind2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define s0s2mins2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define d0d2mind2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#endif /* !__INT_MIN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_pythag.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_pythag.h
new file mode 100644
index 00000000..67f559ae
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_pythag.h
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_PYTHAG_H__
+#define __INT_PYTHAG_H__
+
+#define s0s0pythags0(in1,in2) spythags(in1,in2)
+
+#define d0d0pythagd0(in1,in2) dpythags(in1,in2)
+
+#define c0c0pythagc0(in1,in2) cpythags(in1,in2)
+
+#define z0z0pythagz0(in1,in2) zpythags(in1,in2)
+
+
+#endif /* !__INT_PYTHAG_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_rand.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_rand.h
new file mode 100644
index 00000000..85d08eae
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_rand.h
@@ -0,0 +1,94 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_RAND_H__
+#define __INT_RAND_H__
+
+
+#define rands0() srands()
+
+#define randd0() drands()
+
+#define randu80() u8rands()
+
+#define randu160() u16rands()
+
+#define randi80() i8rands()
+
+#define randi160() i16rands()
+
+
+
+#define s0rands0(in) srands()
+
+#define d0randd0(in) drands()
+
+#define c0randc0(in) crands()
+
+#define z0randz0(in) zrands()
+
+#define u80randd0(in) u8rands()
+
+#define u160randd0(in) u16rands()
+
+#define i80randd0(in) i8rands()
+
+#define i160randd0(in) i16rands()
+
+
+#define s0s0rands0(in1,in2) srands()
+
+#define d0d0randd0(in,in2) drands()
+
+#define u80u80randd0(in1,in2) u8rands()
+
+#define u160u160randd0(in1,in2) u16rands()
+
+#define i80i80randd0(in1,in2) i8rands()
+
+#define i160i160randd0(in1,in2) i16rands()
+
+
+#define s0s0rands2(in1,in2,out) sranda(out,(int)in1*(int)in2)
+
+#define d0d0randd2(in1,in2,out) dranda(out,(int)in1*(int)in2)
+
+#define u80u80randd2(in1,in2,out) u8randa(out,(int)in1*(int)in2)
+
+#define u160u160randd2(in1,in2,out) u16randa(out,(int)in1*(int)in2)
+
+#define i80i80randd2(in1,in2,out) i8randa(out,(int)in1*(int)in2)
+
+#define i160i160randd2(in1,in2,out) i16randa(out,(int)in1*(int)in2)
+
+#define s2rands2(in,size,out) sranda(out, size[0]*size[1])
+
+#define d2randd2(in,size,out) dranda(out, size[0]*size[1])
+
+#define c2randc2(in,size,out) cranda(out, size[0]*size[1])
+
+#define z2randz2(in,size,out) zranda(out, size[0]*size[1])
+
+#define u82randd2(in,size,out) u8randa(out, size[0]*size[1])
+
+#define u162randd2(in,size,out) u16randa(out, size[0]*size[1])
+
+#define i82randd2(in,size,out) i8randa(out, size[0]*size[1])
+
+#define i62randd2(in,size,out) i16randa(out, size[0]*size[1])
+
+
+
+
+#endif /* !__INT_RAND_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_sign.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_sign.h
new file mode 100644
index 00000000..1003fe73
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_sign.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_SIGN_H__
+#define __INT_SIGN_H__
+
+#define s0signs0(in) ssigns(in)
+
+#define d0signd0(in) dsigns(in)
+
+#define c0signc0(in) csigns(in)
+
+#define z0signz0(in) zsigns(in)
+
+#define u80signi80(in) u8signs(in)
+
+#define i80signi80(in) i8signs(in)
+
+#define u160signi160(in) u16signs(in)
+
+#define i160signi160(in) i16signs(in)
+
+#define s2signs2(in,size,out) ssigna(in, size[0]*size[1], out)
+
+#define d2signd2(in,size,out) dsigna(in, size[0]*size[1], out)
+
+#define c2signc2(in,size,out) csigna(in, size[0]*size[1], out)
+
+#define z2signz2(in,size,out) zsigna(in, size[0]*size[1], out)
+
+#define u82signi82(in,size,out) u8signa(in, size[0]*size[1], out)
+
+#define i82signi82(in,size,out) i8signa(in, size[0]*size[1], out)
+
+#define u162signi162(in,size,out) u16signa(in, size[0]*size[1], out)
+
+#define i162signi162(in,size,out) i16signa(in, size[0]*size[1], out)
+
+#endif /* !__INT_SIGN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_size.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_size.h
new file mode 100644
index 00000000..c529a97d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_size.h
@@ -0,0 +1,72 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+/* ADDED BY NUTRICATO, BUT WAITING FOR THE AUTOMATIC GENERATION OF IT
+ AS SHOWN BELOW MANY CASES ARE MISSING. SCALAR RANDOM GENERATOR NOT
+ IMPLEMENTED YET, SEE DRANDS.C
+*/
+
+
+#ifndef __INT_SIZE_H__
+#define __INT_SIZE_H__
+
+#define s0sizes2(in,out) out[0]=1.0f;out[1]=1.0f;
+
+#define d0sized2(in,out) out[0]=1.0;out[1]=1.0;
+
+#define c0sizes2(in,out) out[0]=1.0f;out[1]=1.0f;
+
+#define z0sized2(in,out) out[0]=1.0;out[1]=1.0;
+
+#define s2sizes2(in,size,out) out[0]=size[0];out[1]=size[1];
+
+#define d2sized2(in,size,out) out[0]=size[0];out[1]=size[1];
+
+#define c2sizes2(in,size,out) out[0]=size[0];out[1]=size[1];
+
+#define z2sized2(in,size,out) out[0]=size[0];out[1]=size[1];
+
+#define s0sizes0s0(in,out1,out2) out1=1.0f;out2=1.0f;
+
+#define d0sized0d0(in,out1,out2) out1=1.0;out2=1.0;
+
+#define c0sizes0s0(in,out1,out2) out1=1.0f;out2=1.0f;
+
+#define z0sized0d0(in,out1,out2) out1=1.0;out2=1.0;
+
+#define s2sizes0s0(in,size,out1,out2) out1=size[0];out2=size[1];
+
+#define d2sized0d0(in,size,out1,out2) out1=size[0];out2=size[1];
+
+#define c2sizes0s0(in,size,out1,out2) out1=size[0];out2=size[1];
+
+#define z2sized0d0(in,size,out1,out2) out1=size[0];out2=size[1];
+
+#define s0s0sizes0(in1,in2) 1.0f
+
+#define d0d0sized0(in1,in2) 1.
+
+#define c0s0sizes0(in1,in2) 1.0f
+
+#define z0d0sized0(in1,in2) 1.
+
+#define s2s0sizes0(in1,size,in2) (in2==1) ? size[0] : size[1]
+
+#define d2d0sized0(in1,size,in2) (in2==1) ? size[0] : size[1]
+
+#define c2s0sizes0(in1,size,in2) (in2==1) ? size[0] : size[1]
+
+#define z2d0sized0(in1,size,in2) (in2==1) ? size[0] : size[1]
+
+#define d2g2sized0(in1,size1,in2,size2) dallsizea(size1, in2)
+#endif /* !__INT_SIZE_H__ */
+
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/interfaces/int_type.h b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_type.h
new file mode 100644
index 00000000..3862cb8f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/interfaces/int_type.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_TYPE_H__
+#define __INT_TYPE_H__
+
+#define s0types0(in) stypes(in)
+
+#define d0typed0(in) dtypes(in)
+
+#define c0types0(in) ctypes(in)
+
+#define z0typed0(in) ztypes(in)
+
+#define s2types0(in,size) stypea(in, size[0]*size[1])
+
+#define d2typed0(in,size) dtypea(in, size[0]*size[1])
+
+#define c2types0(in,size) ctypea(in, size[0]*size[1])
+
+#define z2typed0(in,size) ztypea(in, size[0]*size[1])
+
+#endif /* !__INT_TYPE_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.am
new file mode 100644
index 00000000..b1390623
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.am
@@ -0,0 +1,37 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libIsempty_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testIsEmpty
+
+TESTS = testIsEmpty
+
+#
+# -*- Isempty Tests -*-
+#
+testIsEmpty_SOURCES = testIsEmpty.h testIsEmpty.c
+testIsEmpty_CFLAGS = $(check_INCLUDES)
+testIsEmpty_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find/libFind.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.in
new file mode 100644
index 00000000..3c626a65
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isempty/Makefile.in
@@ -0,0 +1,611 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testIsEmpty$(EXEEXT)
+TESTS = testIsEmpty$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/isempty
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_testIsEmpty_OBJECTS = testIsEmpty-testIsEmpty.$(OBJEXT)
+testIsEmpty_OBJECTS = $(am_testIsEmpty_OBJECTS)
+testIsEmpty_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find/libFind.la
+testIsEmpty_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testIsEmpty_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(testIsEmpty_SOURCES)
+DIST_SOURCES = $(testIsEmpty_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libIsempty_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Isempty Tests -*-
+#
+testIsEmpty_SOURCES = testIsEmpty.h testIsEmpty.c
+testIsEmpty_CFLAGS = $(check_INCLUDES)
+testIsEmpty_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/find/libFind.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/isempty/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/isempty/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testIsEmpty$(EXEEXT): $(testIsEmpty_OBJECTS) $(testIsEmpty_DEPENDENCIES)
+ @rm -f testIsEmpty$(EXEEXT)
+ $(testIsEmpty_LINK) $(testIsEmpty_OBJECTS) $(testIsEmpty_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testIsEmpty-testIsEmpty.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+testIsEmpty-testIsEmpty.o: testIsEmpty.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsEmpty_CFLAGS) $(CFLAGS) -MT testIsEmpty-testIsEmpty.o -MD -MP -MF $(DEPDIR)/testIsEmpty-testIsEmpty.Tpo -c -o testIsEmpty-testIsEmpty.o `test -f 'testIsEmpty.c' || echo '$(srcdir)/'`testIsEmpty.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testIsEmpty-testIsEmpty.Tpo $(DEPDIR)/testIsEmpty-testIsEmpty.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsEmpty.c' object='testIsEmpty-testIsEmpty.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsEmpty_CFLAGS) $(CFLAGS) -c -o testIsEmpty-testIsEmpty.o `test -f 'testIsEmpty.c' || echo '$(srcdir)/'`testIsEmpty.c
+
+testIsEmpty-testIsEmpty.obj: testIsEmpty.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsEmpty_CFLAGS) $(CFLAGS) -MT testIsEmpty-testIsEmpty.obj -MD -MP -MF $(DEPDIR)/testIsEmpty-testIsEmpty.Tpo -c -o testIsEmpty-testIsEmpty.obj `if test -f 'testIsEmpty.c'; then $(CYGPATH_W) 'testIsEmpty.c'; else $(CYGPATH_W) '$(srcdir)/testIsEmpty.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testIsEmpty-testIsEmpty.Tpo $(DEPDIR)/testIsEmpty-testIsEmpty.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsEmpty.c' object='testIsEmpty-testIsEmpty.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsEmpty_CFLAGS) $(CFLAGS) -c -o testIsEmpty-testIsEmpty.obj `if test -f 'testIsEmpty.c'; then $(CYGPATH_W) 'testIsEmpty.c'; else $(CYGPATH_W) '$(srcdir)/testIsEmpty.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.c b/2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.c
new file mode 100644
index 00000000..011b5d2f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.c
@@ -0,0 +1,159 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testIsEmpty.h"
+
+int sisemptyaTest() {
+ int result = 0;
+ float *empty;
+ float full[5] = {1., 2., 3., 0., 0.};
+ float out;
+
+ empty = NULL;
+ full[4]=0;
+
+ printf(">> Float array\n");
+
+ out=sisemptya(empty, 0);
+ if (out == 0) {
+ printf("ERROR1 ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ assert (out == 1);
+
+
+ out = sisemptya(full, 5);
+ if ( out == 1) {
+ printf("ERROR2 ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ assert(out == 0);
+
+ return result;
+}
+
+int disemptyaTest() {
+ int result = 0;
+ double *empty;
+ double full[5] = {1., 2., 3., 0., 0.};
+ double out;
+
+ empty = NULL;
+ full[4]=0;
+
+
+ printf(">> Double array\n");
+ out=disemptya(empty, 0);
+ if (out == 0) {
+ printf("ERROR1 ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+
+ assert(out == 1);
+
+
+ out=disemptya(full, 5);
+ if (out == 1) {
+ printf("ERROR2 ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ assert(out == 0);
+
+ return result;
+}
+
+int cisemptyaTest() {
+ int result = 0;
+ floatComplex *empty;
+ floatComplex full[5];
+ float out;
+
+ empty=NULL;
+
+ full[0] = FloatComplex(0.,1.);
+ full[1] = FloatComplex(0., 2.);
+ full[2] = FloatComplex(0., 3.);
+ full[3] = FloatComplex(0., 0.);
+ full[4] = FloatComplex(0., 0.);
+
+ printf(">> Float Complex array\n");
+
+ out = cisemptya(empty, 0);
+ if (out == 0) {
+ printf("ERROR1 ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ assert (out == 1);
+
+
+ out = cisemptya(full, 5);
+ if (out == 1) {
+ printf("ERROR2 ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ assert(out == 0);
+
+
+ return result;
+}
+
+int zisemptyaTest() {
+ int result = 0;
+ doubleComplex *empty;
+ doubleComplex full[5];
+ double out;
+
+ empty=NULL;
+
+ full[0] = DoubleComplex(0.,1.);
+ full[1] = DoubleComplex(0., 2.);
+ full[2] = DoubleComplex(0., 3.);
+ full[3] = DoubleComplex(0., 0.);
+ full[4] = DoubleComplex(0., 0.);;
+
+ printf(">> Double Complex array\n");
+
+ out = zisemptya(empty, 0);
+ if (out == 0) {
+ printf("ERROR1 ! : Test Failed (empty array)\n");
+ result = ERROR;
+ }
+ assert (out == 1);
+
+ out = zisemptya(full, 5);
+ if (out == 1) {
+ printf("ERROR2 ! : Test Failed (non empty array)\n");
+ result = ERROR;
+ }
+ assert(out == 0);
+
+
+ return result;
+}
+
+
+int testIsEmpty() {
+ int sisemptyaTestStatus, disemptyaTestStatus = 0;
+ int cisemptyaTestStatus, zisemptyaTestStatus = 0;
+ printf("\n>>>> IsEmpty Tests\n");
+ sisemptyaTestStatus = sisemptyaTest();
+ disemptyaTestStatus = disemptyaTest();
+ cisemptyaTestStatus = cisemptyaTest();
+ zisemptyaTestStatus = zisemptyaTest();
+ return (sisemptyaTestStatus + disemptyaTestStatus +
+ cisemptyaTestStatus + zisemptyaTestStatus);
+}
+
+int main(void) {
+ assert(testIsEmpty() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.h b/2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.h
new file mode 100644
index 00000000..6e3726ae
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isempty/testIsEmpty.h
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __TESTISEMPTY_H__
+#define __TESTISEMPTY_H__
+
+#include <stdio.h>
+#include <assert.h>
+#include "isempty.h"
+
+#define ERROR 51
+
+int sisemptyaTest(void);
+
+int disemptyaTest(void);
+
+int cisemptyaTest(void);
+
+int zisemptyaTest(void);
+
+int testIsEmpty(void);
+
+#endif /* ! __TESTISEMPTY_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj b/2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj
new file mode 100644
index 00000000..aae8bfab
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{CF43766B-FEBE-4E52-A7CA-7D0A9F5DB982}</ProjectGuid>
+ <RootNamespace>testIsEmpty</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testIsEmpty.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testIsEmpty.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj.filters
new file mode 100644
index 00000000..9b8f6aad
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isempty/test_IsEmpty/testIsEmpty.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testIsEmpty.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testIsEmpty.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.am
new file mode 100644
index 00000000..dbe87924
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.am
@@ -0,0 +1,48 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libIsnan_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libIsnan.la
+
+libIsnan_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sisnans.c \
+ disnans.c \
+ cisnans.c \
+ zisnans.c
+
+HEAD = ../includes/isnan.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testIsnan
+
+TESTS = testIsnan
+
+#
+# -*- Isnan Tests -*-
+#
+testIsnan_SOURCES = testIsNan.h testIsNan.c
+testIsnan_CFLAGS = $(check_INCLUDES)
+testIsnan_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.in
new file mode 100644
index 00000000..e9e38b53
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/Makefile.in
@@ -0,0 +1,721 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testIsnan$(EXEEXT)
+TESTS = testIsnan$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/isnan
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libIsnan_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libIsnan_la-sisnans.lo libIsnan_la-disnans.lo \
+ libIsnan_la-cisnans.lo libIsnan_la-zisnans.lo
+am_libIsnan_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libIsnan_la_OBJECTS = $(am_libIsnan_la_OBJECTS)
+libIsnan_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libIsnan_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testIsnan_OBJECTS = testIsnan-testIsNan.$(OBJEXT)
+testIsnan_OBJECTS = $(am_testIsnan_OBJECTS)
+testIsnan_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la
+testIsnan_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testIsnan_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libIsnan_la_SOURCES) $(testIsnan_SOURCES)
+DIST_SOURCES = $(libIsnan_la_SOURCES) $(testIsnan_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libIsnan_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libIsnan.la
+libIsnan_la_SOURCES = $(HEAD) $(SRC)
+SRC = sisnans.c \
+ disnans.c \
+ cisnans.c \
+ zisnans.c
+
+HEAD = ../includes/isnan.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Isnan Tests -*-
+#
+testIsnan_SOURCES = testIsNan.h testIsNan.c
+testIsnan_CFLAGS = $(check_INCLUDES)
+testIsnan_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/isnan/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/isnan/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libIsnan.la: $(libIsnan_la_OBJECTS) $(libIsnan_la_DEPENDENCIES)
+ $(libIsnan_la_LINK) -rpath $(pkglibdir) $(libIsnan_la_OBJECTS) $(libIsnan_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testIsnan$(EXEEXT): $(testIsnan_OBJECTS) $(testIsnan_DEPENDENCIES)
+ @rm -f testIsnan$(EXEEXT)
+ $(testIsnan_LINK) $(testIsnan_OBJECTS) $(testIsnan_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIsnan_la-cisnans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIsnan_la-disnans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIsnan_la-sisnans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIsnan_la-zisnans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testIsnan-testIsNan.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libIsnan_la-sisnans.lo: sisnans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -MT libIsnan_la-sisnans.lo -MD -MP -MF $(DEPDIR)/libIsnan_la-sisnans.Tpo -c -o libIsnan_la-sisnans.lo `test -f 'sisnans.c' || echo '$(srcdir)/'`sisnans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIsnan_la-sisnans.Tpo $(DEPDIR)/libIsnan_la-sisnans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sisnans.c' object='libIsnan_la-sisnans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -c -o libIsnan_la-sisnans.lo `test -f 'sisnans.c' || echo '$(srcdir)/'`sisnans.c
+
+libIsnan_la-disnans.lo: disnans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -MT libIsnan_la-disnans.lo -MD -MP -MF $(DEPDIR)/libIsnan_la-disnans.Tpo -c -o libIsnan_la-disnans.lo `test -f 'disnans.c' || echo '$(srcdir)/'`disnans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIsnan_la-disnans.Tpo $(DEPDIR)/libIsnan_la-disnans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disnans.c' object='libIsnan_la-disnans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -c -o libIsnan_la-disnans.lo `test -f 'disnans.c' || echo '$(srcdir)/'`disnans.c
+
+libIsnan_la-cisnans.lo: cisnans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -MT libIsnan_la-cisnans.lo -MD -MP -MF $(DEPDIR)/libIsnan_la-cisnans.Tpo -c -o libIsnan_la-cisnans.lo `test -f 'cisnans.c' || echo '$(srcdir)/'`cisnans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIsnan_la-cisnans.Tpo $(DEPDIR)/libIsnan_la-cisnans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cisnans.c' object='libIsnan_la-cisnans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -c -o libIsnan_la-cisnans.lo `test -f 'cisnans.c' || echo '$(srcdir)/'`cisnans.c
+
+libIsnan_la-zisnans.lo: zisnans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -MT libIsnan_la-zisnans.lo -MD -MP -MF $(DEPDIR)/libIsnan_la-zisnans.Tpo -c -o libIsnan_la-zisnans.lo `test -f 'zisnans.c' || echo '$(srcdir)/'`zisnans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIsnan_la-zisnans.Tpo $(DEPDIR)/libIsnan_la-zisnans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zisnans.c' object='libIsnan_la-zisnans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIsnan_la_CFLAGS) $(CFLAGS) -c -o libIsnan_la-zisnans.lo `test -f 'zisnans.c' || echo '$(srcdir)/'`zisnans.c
+
+testIsnan-testIsNan.o: testIsNan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -MT testIsnan-testIsNan.o -MD -MP -MF $(DEPDIR)/testIsnan-testIsNan.Tpo -c -o testIsnan-testIsNan.o `test -f 'testIsNan.c' || echo '$(srcdir)/'`testIsNan.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testIsnan-testIsNan.Tpo $(DEPDIR)/testIsnan-testIsNan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsNan.c' object='testIsnan-testIsNan.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -c -o testIsnan-testIsNan.o `test -f 'testIsNan.c' || echo '$(srcdir)/'`testIsNan.c
+
+testIsnan-testIsNan.obj: testIsNan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -MT testIsnan-testIsNan.obj -MD -MP -MF $(DEPDIR)/testIsnan-testIsNan.Tpo -c -o testIsnan-testIsNan.obj `if test -f 'testIsNan.c'; then $(CYGPATH_W) 'testIsNan.c'; else $(CYGPATH_W) '$(srcdir)/testIsNan.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testIsnan-testIsNan.Tpo $(DEPDIR)/testIsnan-testIsNan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsNan.c' object='testIsnan-testIsNan.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -c -o testIsnan-testIsNan.obj `if test -f 'testIsNan.c'; then $(CYGPATH_W) 'testIsNan.c'; else $(CYGPATH_W) '$(srcdir)/testIsNan.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/cisnana.c b/2.3-1/src/c/auxiliaryFunctions/isnan/cisnana.c
new file mode 100644
index 00000000..0048400a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/cisnana.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "isnan.h"
+
+
+void cisnana(floatComplex* in, int size, float* out){
+ int i=0;
+
+ for (i=0;i<size;i++) out[i] = cisnans(in[i]);
+
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/cisnans.c b/2.3-1/src/c/auxiliaryFunctions/isnan/cisnans.c
new file mode 100644
index 00000000..623cea0b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/cisnans.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifdef _WIN32
+#include <math.h>
+#endif
+
+#include "isnan.h"
+
+
+float cisnans(floatComplex in) {
+ if ((int)(isnan(creals(in))) && (int)(isnan(cimags(in)))) return 1;
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/disnana.c b/2.3-1/src/c/auxiliaryFunctions/isnan/disnana.c
new file mode 100644
index 00000000..ad556fd8
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/disnana.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "isnan.h"
+
+
+void disnana(double* in, int size, double* out){
+ int i=0;
+
+ for (i=0;i<size;i++) out[i] = disnans(in[i]);
+
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/disnans.c b/2.3-1/src/c/auxiliaryFunctions/isnan/disnans.c
new file mode 100644
index 00000000..99b5b664
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/disnans.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+
+#ifdef _WIN32
+#include <math.h>
+#endif
+
+#include "isnan.h"
+
+double disnans(double in) {
+ return isnan(in) ? 1 : 0;
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/sisnana.c b/2.3-1/src/c/auxiliaryFunctions/isnan/sisnana.c
new file mode 100644
index 00000000..31574376
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/sisnana.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "isnan.h"
+
+
+void sisnana(float* in, int size, float* out){
+ int i=0;
+
+ for (i=0;i<size;i++) out[i] = sisnans(in[i]);
+
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/sisnans.c b/2.3-1/src/c/auxiliaryFunctions/isnan/sisnans.c
new file mode 100644
index 00000000..905890b8
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/sisnans.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+
+#ifdef _WIN32
+#include <math.h>
+#endif
+
+#include "isnan.h"
+
+float sisnans(float in) {
+ return isnan(in) ? (float)1 :(float)0;
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.c b/2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.c
new file mode 100644
index 00000000..6e14cd5b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.c
@@ -0,0 +1,157 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* FIXME : Must improve isnan rules and remove define. */
+#define NDEBUG
+
+#include "testIsNan.h"
+
+int sisnansTest() {
+ int result = 0;
+ float fA=0.0f;
+ float fB=0.0f;
+ float nan = fA / fB;
+ float full = 1.23456789f;
+
+ printf(">> Float \n");
+ if ((bool)sisnans(nan) == false) {
+ printf("ERROR ! : Test Failed (Must be nan)\n");
+ result = ERROR;
+ }
+ assert (sisnans(nan) == true);
+
+ if ((bool)sisnans(full) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(sisnans(full) == false);
+
+ return result;
+}
+
+int disnansTest() {
+ int result = 0;
+ double dA = 0.;
+ double dB = 0.;
+ double nan = dA / dB;
+ double full = 1.456789321861;
+
+ printf(">> Double\n");
+ if ((bool)disnans(nan) == false) {
+ printf("ERROR ! : Test Failed (Must be nan)\n");
+ result = ERROR;
+ }
+ assert(disnans(nan) == true);
+
+ if ((bool)disnans(full) == true) {
+ printf("ERROR ! : Test Failed (non nan array)\n");
+ result = ERROR;
+ }
+ assert(disnans(full) == false);
+
+ return result;
+}
+
+int cisnansTest() {
+ int result = 0;
+ float fA = 0.;
+ float fB = 0.;
+ floatComplex nan_nan = FloatComplex(fA/fB, fA/fB);
+ floatComplex nan_real = FloatComplex(fA/fB, 1.123456789f);
+ floatComplex real_nan = FloatComplex(1.123456789f, fA/fB);
+ floatComplex full = FloatComplex(0.0f,1.0f);
+
+ printf(">> Float Complex\n");
+ if ((bool)cisnans(nan_nan) == false) {
+ printf("ERROR ! : Test Failed (Must be nan)\n");
+ result = ERROR;
+ }
+ assert (cisnans(nan_nan) == true);
+
+ if ((bool)cisnans(nan_real) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(cisnans(nan_real) == false);
+
+ if ((bool)cisnans(real_nan) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(cisnans(real_nan) == false);
+
+ if ((bool)cisnans(full) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(cisnans(full) == false);
+
+
+ return result;
+}
+
+int zisnansTest() {
+ int result = 0;
+ float fA = 0.;
+ float fB = 0.;
+ floatComplex nan_nan = FloatComplex(fA/fB, fA/fB);
+ floatComplex nan_real = FloatComplex(fA/fB, 1.123456789f);
+ floatComplex real_nan = FloatComplex(1.123456789f , fA/fB);
+ floatComplex full = FloatComplex(0.0f,1.0f);
+
+ printf(">> Double Complex\n");
+ if ((bool)cisnans(nan_nan) == false) {
+ printf("ERROR ! : Test Failed (Must be nan)\n");
+ result = ERROR;
+ }
+ assert (cisnans(nan_nan) == true);
+
+ if ((bool)cisnans(nan_real) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(cisnans(nan_real) == false);
+
+ if ((bool)cisnans(real_nan) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(cisnans(real_nan) == false);
+
+ if ((bool)cisnans(full) == true) {
+ printf("ERROR ! : Test Failed (Must not be nan)\n");
+ result = ERROR;
+ }
+ assert(cisnans(full) == false);
+
+
+ return result;
+}
+
+
+int testIsNan() {
+ int sisnansTestStatus, disnansTestStatus = 0;
+ int cisnansTestStatus, zisnansTestStatus = 0;
+ printf("\n>>>> IsNan Tests\n");
+ sisnansTestStatus = sisnansTest();
+ disnansTestStatus = disnansTest();
+ cisnansTestStatus = cisnansTest();
+ zisnansTestStatus = zisnansTest();
+
+ return (sisnansTestStatus + disnansTestStatus +
+ cisnansTestStatus + zisnansTestStatus);
+}
+
+int main(void) {
+ assert(testIsNan() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.h b/2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.h
new file mode 100644
index 00000000..ee34db84
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/testIsNan.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __TESTISNAN_H__
+#define __TESTISNAN_H__
+
+#include <stdio.h>
+#include <assert.h>
+#include "isnan.h"
+
+#define ERROR 51
+
+int sisnansTest(void);
+
+int disnansTest(void);
+
+int cisnansTest(void);
+
+int zisnansTest(void);
+
+int sisnanaTest(void);
+
+int disnanaTest(void);
+
+int cisnanaTest(void);
+
+int zisnanaTest(void);
+
+int testIsNan(void);
+
+#endif /* ! __TESTISNAN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj b/2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj
new file mode 100644
index 00000000..96df6092
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{18763BD3-2916-4D97-9633-5DAC1A635EDD}</ProjectGuid>
+ <RootNamespace>testIsNan</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testIsNan.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testIsNan.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj.filters
new file mode 100644
index 00000000..7dccdb35
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/test_IsNan/testIsNan.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testIsNan.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testIsNan.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/zisnana.c b/2.3-1/src/c/auxiliaryFunctions/isnan/zisnana.c
new file mode 100644
index 00000000..a6a65596
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/zisnana.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "isnan.h"
+
+
+void zisnana(doubleComplex* in, int size, double* out){
+ int i=0;
+
+ for (i=0;i<size;i++) out[i] = zisnans(in[i]);
+
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/isnan/zisnans.c b/2.3-1/src/c/auxiliaryFunctions/isnan/zisnans.c
new file mode 100644
index 00000000..95cfd972
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/isnan/zisnans.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifdef _WIN32
+#include <math.h>
+#endif
+
+#include "isnan.h"
+
+double zisnans(doubleComplex in) {
+ return (isnan(zreals(in)) || isnan(zimags(in)));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/length/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/length/Makefile.am
new file mode 100644
index 00000000..8c51f41c
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/length/Makefile.am
@@ -0,0 +1,37 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libLength_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testLength
+
+TESTS = testLength
+
+#
+# -*- Length Tests -*-
+#
+testLength_SOURCES = testLength.h testLength.c
+testLength_CFLAGS = $(check_INCLUDES)
+testLength_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/length/libLength.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/length/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/length/Makefile.in
new file mode 100644
index 00000000..d7bd658c
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/length/Makefile.in
@@ -0,0 +1,611 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testLength$(EXEEXT)
+TESTS = testLength$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/length
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_testLength_OBJECTS = testLength-testLength.$(OBJEXT)
+testLength_OBJECTS = $(am_testLength_OBJECTS)
+testLength_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/length/libLength.la
+testLength_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testLength_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(testLength_SOURCES)
+DIST_SOURCES = $(testLength_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLength_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Length Tests -*-
+#
+testLength_SOURCES = testLength.h testLength.c
+testLength_CFLAGS = $(check_INCLUDES)
+testLength_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/length/libLength.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/length/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/length/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testLength$(EXEEXT): $(testLength_OBJECTS) $(testLength_DEPENDENCIES)
+ @rm -f testLength$(EXEEXT)
+ $(testLength_LINK) $(testLength_OBJECTS) $(testLength_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLength-testLength.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+testLength-testLength.o: testLength.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLength_CFLAGS) $(CFLAGS) -MT testLength-testLength.o -MD -MP -MF $(DEPDIR)/testLength-testLength.Tpo -c -o testLength-testLength.o `test -f 'testLength.c' || echo '$(srcdir)/'`testLength.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testLength-testLength.Tpo $(DEPDIR)/testLength-testLength.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testLength.c' object='testLength-testLength.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLength_CFLAGS) $(CFLAGS) -c -o testLength-testLength.o `test -f 'testLength.c' || echo '$(srcdir)/'`testLength.c
+
+testLength-testLength.obj: testLength.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLength_CFLAGS) $(CFLAGS) -MT testLength-testLength.obj -MD -MP -MF $(DEPDIR)/testLength-testLength.Tpo -c -o testLength-testLength.obj `if test -f 'testLength.c'; then $(CYGPATH_W) 'testLength.c'; else $(CYGPATH_W) '$(srcdir)/testLength.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testLength-testLength.Tpo $(DEPDIR)/testLength-testLength.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testLength.c' object='testLength-testLength.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLength_CFLAGS) $(CFLAGS) -c -o testLength-testLength.obj `if test -f 'testLength.c'; then $(CYGPATH_W) 'testLength.c'; else $(CYGPATH_W) '$(srcdir)/testLength.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/length/testLength.c b/2.3-1/src/c/auxiliaryFunctions/length/testLength.c
new file mode 100644
index 00000000..339884f0
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/length/testLength.c
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testLength.h"
+
+int slengthaTest() {
+ float goodArray[5] = {0.,2.,3.,5.,10.};
+ float badArray[5] = {0.,0.,0.,0.,0.};
+
+ /* Only to avoid gss unused variable warning */
+ goodArray[4] = 10.0f;
+ badArray[4] = 0.0f;
+
+ printf(">> Floats \n");
+ assert(slengtha(goodArray, 5) == 5);
+ assert(slengtha(badArray, 5) == 5);
+ return 0;
+}
+
+int dlengthaTest() {
+ double goodArray[5] = {0.,2.,3.,5.,10.};
+ double badArray[5] = {0.,0.,0.,0.,0.};
+
+ /* Only to avoid gss unused variable warning */
+ goodArray[4] = 10.0;
+ badArray[4] = 0.0;
+
+ printf(">> Doubles \n");
+ assert(dlengtha(goodArray, 5) == 5);
+ assert(dlengtha(badArray, 5) == 5);
+ return 0;
+}
+
+int clengthaTest() {
+ floatComplex goodArray[5];
+ floatComplex badArray[5];
+
+ /* Good values in goodArray */
+ goodArray[0] = FloatComplex(0., 0.);
+ goodArray[1] = FloatComplex(0., 2.);
+ goodArray[2] = FloatComplex(3., 50.);
+ goodArray[3] = FloatComplex(5., 10.);
+ goodArray[4] = FloatComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+
+ printf(">> Float Complex \n");
+ assert(clengtha(goodArray, 5) == 5);
+ assert(clengtha(badArray, 5) == 5);
+ return 0;
+}
+
+int zlengthaTest() {
+ doubleComplex goodArray[5];
+ doubleComplex badArray[5];
+
+ /* Good values in goodArray. */
+ goodArray[0] = DoubleComplex(0., 0.);
+ goodArray[1] = DoubleComplex(0., 2.);
+ goodArray[2] = DoubleComplex(3., 50.);
+ goodArray[3] = DoubleComplex(5., 10.);
+ goodArray[4] = DoubleComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = DoubleComplex(0., 0.);
+ badArray[1] = DoubleComplex(0., 0.);
+ badArray[2] = DoubleComplex(0., 0.);
+ badArray[3] = DoubleComplex(0., 0.);
+ badArray[4] = DoubleComplex(0., 0.);
+
+ printf(">> Double Complex \n");
+ assert(zlengtha(goodArray, 5) == 5);
+ assert(zlengtha(goodArray, 5) == 5);
+ return 0;
+}
+
+int testLength() {
+ int slengthaStatus, dlengthaStatus = 0;
+ int clengthaStatus, zlengthaStatus = 0;
+
+ printf(">>>> Length Tests\n");
+ slengthaStatus = slengthaTest();
+ dlengthaStatus = dlengthaTest();
+ clengthaStatus = clengthaTest();
+ zlengthaStatus = zlengthaTest();
+
+ return (slengthaStatus + dlengthaStatus +
+ clengthaStatus + zlengthaStatus);
+}
+
+int main(void) {
+ assert(testLength() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/length/testLength.h b/2.3-1/src/c/auxiliaryFunctions/length/testLength.h
new file mode 100644
index 00000000..f8e27325
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/length/testLength.h
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTLENGTH_H_
+#define _TESTLENGTH_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "length.h"
+
+int slengthaTest(void);
+
+int dlengthaTest(void);
+
+int clengthaTest(void);
+
+int zlengthaTest(void);
+
+int testLength(void);
+
+#endif /* ! _TESTLENGTH_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj b/2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj
new file mode 100644
index 00000000..f50d88d7
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A4626E50-DDD7-44E1-83FC-05BF396AF250}</ProjectGuid>
+ <RootNamespace>testLength</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testLength.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testLength.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj.filters
new file mode 100644
index 00000000..ff0141df
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/length/test_Length/testLength.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testLength.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testLength.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.am
new file mode 100644
index 00000000..4cf06ea4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.am
@@ -0,0 +1,58 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libPythag_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libPythag.la
+
+libPythag_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = spythags.c \
+ dpythags.c \
+ cpythags.c \
+ zpythags.c
+
+HEAD = ../includes/pythag.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testPythag
+
+TESTS = testPythag
+
+#
+# -*- Pythag Tests -*-
+#
+testPythag_SOURCES = testPythag.h testPythag.c
+testPythag_CFLAGS = $(check_INCLUDES)
+testPythag_LDADD = $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.in
new file mode 100644
index 00000000..3cc42cd7
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/Makefile.in
@@ -0,0 +1,737 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testPythag$(EXEEXT)
+TESTS = testPythag$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/pythag
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libPythag_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libPythag_la-spythags.lo libPythag_la-dpythags.lo \
+ libPythag_la-cpythags.lo libPythag_la-zpythags.lo
+am_libPythag_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libPythag_la_OBJECTS = $(am_libPythag_la_OBJECTS)
+libPythag_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libPythag_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testPythag_OBJECTS = testPythag-testPythag.$(OBJEXT)
+testPythag_OBJECTS = $(am_testPythag_OBJECTS)
+testPythag_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testPythag_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testPythag_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libPythag_la_SOURCES) $(testPythag_SOURCES)
+DIST_SOURCES = $(libPythag_la_SOURCES) $(testPythag_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libPythag_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libPythag.la
+libPythag_la_SOURCES = $(HEAD) $(SRC)
+SRC = spythags.c \
+ dpythags.c \
+ cpythags.c \
+ zpythags.c
+
+HEAD = ../includes/pythag.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Pythag Tests -*-
+#
+testPythag_SOURCES = testPythag.h testPythag.c
+testPythag_CFLAGS = $(check_INCLUDES)
+testPythag_LDADD = $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/pythag/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/pythag/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libPythag.la: $(libPythag_la_OBJECTS) $(libPythag_la_DEPENDENCIES)
+ $(libPythag_la_LINK) -rpath $(pkglibdir) $(libPythag_la_OBJECTS) $(libPythag_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testPythag$(EXEEXT): $(testPythag_OBJECTS) $(testPythag_DEPENDENCIES)
+ @rm -f testPythag$(EXEEXT)
+ $(testPythag_LINK) $(testPythag_OBJECTS) $(testPythag_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPythag_la-cpythags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPythag_la-dpythags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPythag_la-spythags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPythag_la-zpythags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testPythag-testPythag.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libPythag_la-spythags.lo: spythags.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -MT libPythag_la-spythags.lo -MD -MP -MF $(DEPDIR)/libPythag_la-spythags.Tpo -c -o libPythag_la-spythags.lo `test -f 'spythags.c' || echo '$(srcdir)/'`spythags.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPythag_la-spythags.Tpo $(DEPDIR)/libPythag_la-spythags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spythags.c' object='libPythag_la-spythags.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -c -o libPythag_la-spythags.lo `test -f 'spythags.c' || echo '$(srcdir)/'`spythags.c
+
+libPythag_la-dpythags.lo: dpythags.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -MT libPythag_la-dpythags.lo -MD -MP -MF $(DEPDIR)/libPythag_la-dpythags.Tpo -c -o libPythag_la-dpythags.lo `test -f 'dpythags.c' || echo '$(srcdir)/'`dpythags.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPythag_la-dpythags.Tpo $(DEPDIR)/libPythag_la-dpythags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dpythags.c' object='libPythag_la-dpythags.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -c -o libPythag_la-dpythags.lo `test -f 'dpythags.c' || echo '$(srcdir)/'`dpythags.c
+
+libPythag_la-cpythags.lo: cpythags.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -MT libPythag_la-cpythags.lo -MD -MP -MF $(DEPDIR)/libPythag_la-cpythags.Tpo -c -o libPythag_la-cpythags.lo `test -f 'cpythags.c' || echo '$(srcdir)/'`cpythags.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPythag_la-cpythags.Tpo $(DEPDIR)/libPythag_la-cpythags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cpythags.c' object='libPythag_la-cpythags.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -c -o libPythag_la-cpythags.lo `test -f 'cpythags.c' || echo '$(srcdir)/'`cpythags.c
+
+libPythag_la-zpythags.lo: zpythags.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -MT libPythag_la-zpythags.lo -MD -MP -MF $(DEPDIR)/libPythag_la-zpythags.Tpo -c -o libPythag_la-zpythags.lo `test -f 'zpythags.c' || echo '$(srcdir)/'`zpythags.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPythag_la-zpythags.Tpo $(DEPDIR)/libPythag_la-zpythags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zpythags.c' object='libPythag_la-zpythags.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPythag_la_CFLAGS) $(CFLAGS) -c -o libPythag_la-zpythags.lo `test -f 'zpythags.c' || echo '$(srcdir)/'`zpythags.c
+
+testPythag-testPythag.o: testPythag.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testPythag_CFLAGS) $(CFLAGS) -MT testPythag-testPythag.o -MD -MP -MF $(DEPDIR)/testPythag-testPythag.Tpo -c -o testPythag-testPythag.o `test -f 'testPythag.c' || echo '$(srcdir)/'`testPythag.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testPythag-testPythag.Tpo $(DEPDIR)/testPythag-testPythag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testPythag.c' object='testPythag-testPythag.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testPythag_CFLAGS) $(CFLAGS) -c -o testPythag-testPythag.o `test -f 'testPythag.c' || echo '$(srcdir)/'`testPythag.c
+
+testPythag-testPythag.obj: testPythag.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testPythag_CFLAGS) $(CFLAGS) -MT testPythag-testPythag.obj -MD -MP -MF $(DEPDIR)/testPythag-testPythag.Tpo -c -o testPythag-testPythag.obj `if test -f 'testPythag.c'; then $(CYGPATH_W) 'testPythag.c'; else $(CYGPATH_W) '$(srcdir)/testPythag.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testPythag-testPythag.Tpo $(DEPDIR)/testPythag-testPythag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testPythag.c' object='testPythag-testPythag.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testPythag_CFLAGS) $(CFLAGS) -c -o testPythag-testPythag.obj `if test -f 'testPythag.c'; then $(CYGPATH_W) 'testPythag.c'; else $(CYGPATH_W) '$(srcdir)/testPythag.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/cpythags.c b/2.3-1/src/c/auxiliaryFunctions/pythag/cpythags.c
new file mode 100644
index 00000000..2f4ad33d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/cpythags.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pythag.h"
+
+floatComplex cpythags(floatComplex x, floatComplex y) {
+ return (csqrts( cadds(cmuls(x,x),
+ cmuls(y,y)) ));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/dpythags.c b/2.3-1/src/c/auxiliaryFunctions/pythag/dpythags.c
new file mode 100644
index 00000000..9e2c09a6
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/dpythags.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pythag.h"
+
+double dpythags(double x, double y) {
+ return (dsqrts( (x*x) + (y*y) ) );
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/spythags.c b/2.3-1/src/c/auxiliaryFunctions/pythag/spythags.c
new file mode 100644
index 00000000..64d22a47
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/spythags.c
@@ -0,0 +1,17 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pythag.h"
+
+float spythags(float x, float y) {
+ return (ssqrts( (x*x) + (y*y) ));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.c b/2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.c
new file mode 100644
index 00000000..81e92b71
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.c
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testPythag.h"
+
+int spythagsTest() {
+ float value1 = -3;
+ float value2 = 4;
+
+ printf(">> Floats \n");
+ assert(spythags(value1, value2) == 5);
+ assert(spythags(0, 0) == 0);
+ assert(spythags(-3, 0) == 3);
+ assert(spythags(3, 0) == 3);
+ return 0;
+}
+
+int dpythagsTest() {
+ double value1 = -3;
+ double value2 = 4;
+
+ printf(">> Doubles \n");
+ assert(dpythags(value1, value2) == 5);
+ assert(dpythags(0, 0) == 0);
+ assert(dpythags(-3, 0) == 3);
+ assert(dpythags(3, 0) == 3);
+ return 0;
+}
+
+int testPythag() {
+ int spythagsStatus, dpythagsStatus = 0;
+
+ printf(">>>> Pythag Tests\n");
+ spythagsStatus = spythagsTest();
+ dpythagsStatus = dpythagsTest();
+
+ return (spythagsStatus + dpythagsStatus);
+}
+
+int main(void) {
+ assert(testPythag() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.h b/2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.h
new file mode 100644
index 00000000..f2981db4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/testPythag.h
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTPYTHAG_H_
+#define _TESTPYTHAG_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "pythag.h"
+
+int spythagsTest(void);
+
+int dpythagsTest(void);
+
+int testPythag(void);
+
+#endif /* ! _TESTPYTHAG_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj b/2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj
new file mode 100644
index 00000000..7701234c
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{10F6C306-FD81-45F3-936B-CDF8213A88E6}</ProjectGuid>
+ <RootNamespace>testPythag</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testPythag.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testPythag.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj.filters
new file mode 100644
index 00000000..4c2c3c9d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/test_Pythag/testPythag.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testPythag.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testPythag.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/pythag/zpythags.c b/2.3-1/src/c/auxiliaryFunctions/pythag/zpythags.c
new file mode 100644
index 00000000..5ba7dba9
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/pythag/zpythags.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pythag.h"
+
+doubleComplex zpythags(doubleComplex x, doubleComplex y) {
+ return (zsqrts( zadds(zmuls(x,x),
+ zmuls(y,y)) ));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/rand/Makefile.am
new file mode 100644
index 00000000..5a7edb4e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/Makefile.am
@@ -0,0 +1,52 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libRand_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libRand.la
+
+libRand_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = srands.c \
+ drands.c \
+ crands.c \
+ zrands.c \
+ sranda.c \
+ dranda.c \
+ cranda.c \
+ zranda.c
+
+HEAD = ../includes/rand.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testRand
+
+TESTS = testRand
+
+#
+# -*- Rand Tests -*-
+#
+testRand_SOURCES = testRand.h testRand.c
+testRand_CFLAGS = $(check_INCLUDES)
+testRand_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/rand/libRand.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/rand/Makefile.in
new file mode 100644
index 00000000..eff51ad3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/Makefile.in
@@ -0,0 +1,758 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testRand$(EXEEXT)
+TESTS = testRand$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/rand
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libRand_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libRand_la-srands.lo libRand_la-drands.lo \
+ libRand_la-crands.lo libRand_la-zrands.lo libRand_la-sranda.lo \
+ libRand_la-dranda.lo libRand_la-cranda.lo libRand_la-zranda.lo
+am_libRand_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libRand_la_OBJECTS = $(am_libRand_la_OBJECTS)
+libRand_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libRand_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testRand_OBJECTS = testRand-testRand.$(OBJEXT)
+testRand_OBJECTS = $(am_testRand_OBJECTS)
+testRand_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/rand/libRand.la
+testRand_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testRand_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libRand_la_SOURCES) $(testRand_SOURCES)
+DIST_SOURCES = $(libRand_la_SOURCES) $(testRand_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libRand_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libRand.la
+libRand_la_SOURCES = $(HEAD) $(SRC)
+SRC = srands.c \
+ drands.c \
+ crands.c \
+ zrands.c \
+ sranda.c \
+ dranda.c \
+ cranda.c \
+ zranda.c
+
+HEAD = ../includes/rand.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Rand Tests -*-
+#
+testRand_SOURCES = testRand.h testRand.c
+testRand_CFLAGS = $(check_INCLUDES)
+testRand_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/rand/libRand.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/rand/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/rand/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libRand.la: $(libRand_la_OBJECTS) $(libRand_la_DEPENDENCIES)
+ $(libRand_la_LINK) -rpath $(pkglibdir) $(libRand_la_OBJECTS) $(libRand_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testRand$(EXEEXT): $(testRand_OBJECTS) $(testRand_DEPENDENCIES)
+ @rm -f testRand$(EXEEXT)
+ $(testRand_LINK) $(testRand_OBJECTS) $(testRand_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-cranda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-crands.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-dranda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-drands.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-sranda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-srands.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-zranda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRand_la-zrands.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRand-testRand.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libRand_la-srands.lo: srands.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-srands.lo -MD -MP -MF $(DEPDIR)/libRand_la-srands.Tpo -c -o libRand_la-srands.lo `test -f 'srands.c' || echo '$(srcdir)/'`srands.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-srands.Tpo $(DEPDIR)/libRand_la-srands.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srands.c' object='libRand_la-srands.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-srands.lo `test -f 'srands.c' || echo '$(srcdir)/'`srands.c
+
+libRand_la-drands.lo: drands.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-drands.lo -MD -MP -MF $(DEPDIR)/libRand_la-drands.Tpo -c -o libRand_la-drands.lo `test -f 'drands.c' || echo '$(srcdir)/'`drands.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-drands.Tpo $(DEPDIR)/libRand_la-drands.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drands.c' object='libRand_la-drands.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-drands.lo `test -f 'drands.c' || echo '$(srcdir)/'`drands.c
+
+libRand_la-crands.lo: crands.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-crands.lo -MD -MP -MF $(DEPDIR)/libRand_la-crands.Tpo -c -o libRand_la-crands.lo `test -f 'crands.c' || echo '$(srcdir)/'`crands.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-crands.Tpo $(DEPDIR)/libRand_la-crands.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crands.c' object='libRand_la-crands.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-crands.lo `test -f 'crands.c' || echo '$(srcdir)/'`crands.c
+
+libRand_la-zrands.lo: zrands.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-zrands.lo -MD -MP -MF $(DEPDIR)/libRand_la-zrands.Tpo -c -o libRand_la-zrands.lo `test -f 'zrands.c' || echo '$(srcdir)/'`zrands.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-zrands.Tpo $(DEPDIR)/libRand_la-zrands.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrands.c' object='libRand_la-zrands.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-zrands.lo `test -f 'zrands.c' || echo '$(srcdir)/'`zrands.c
+
+libRand_la-sranda.lo: sranda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-sranda.lo -MD -MP -MF $(DEPDIR)/libRand_la-sranda.Tpo -c -o libRand_la-sranda.lo `test -f 'sranda.c' || echo '$(srcdir)/'`sranda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-sranda.Tpo $(DEPDIR)/libRand_la-sranda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sranda.c' object='libRand_la-sranda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-sranda.lo `test -f 'sranda.c' || echo '$(srcdir)/'`sranda.c
+
+libRand_la-dranda.lo: dranda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-dranda.lo -MD -MP -MF $(DEPDIR)/libRand_la-dranda.Tpo -c -o libRand_la-dranda.lo `test -f 'dranda.c' || echo '$(srcdir)/'`dranda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-dranda.Tpo $(DEPDIR)/libRand_la-dranda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dranda.c' object='libRand_la-dranda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-dranda.lo `test -f 'dranda.c' || echo '$(srcdir)/'`dranda.c
+
+libRand_la-cranda.lo: cranda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-cranda.lo -MD -MP -MF $(DEPDIR)/libRand_la-cranda.Tpo -c -o libRand_la-cranda.lo `test -f 'cranda.c' || echo '$(srcdir)/'`cranda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-cranda.Tpo $(DEPDIR)/libRand_la-cranda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cranda.c' object='libRand_la-cranda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-cranda.lo `test -f 'cranda.c' || echo '$(srcdir)/'`cranda.c
+
+libRand_la-zranda.lo: zranda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -MT libRand_la-zranda.lo -MD -MP -MF $(DEPDIR)/libRand_la-zranda.Tpo -c -o libRand_la-zranda.lo `test -f 'zranda.c' || echo '$(srcdir)/'`zranda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRand_la-zranda.Tpo $(DEPDIR)/libRand_la-zranda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zranda.c' object='libRand_la-zranda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRand_la_CFLAGS) $(CFLAGS) -c -o libRand_la-zranda.lo `test -f 'zranda.c' || echo '$(srcdir)/'`zranda.c
+
+testRand-testRand.o: testRand.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRand_CFLAGS) $(CFLAGS) -MT testRand-testRand.o -MD -MP -MF $(DEPDIR)/testRand-testRand.Tpo -c -o testRand-testRand.o `test -f 'testRand.c' || echo '$(srcdir)/'`testRand.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testRand-testRand.Tpo $(DEPDIR)/testRand-testRand.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testRand.c' object='testRand-testRand.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRand_CFLAGS) $(CFLAGS) -c -o testRand-testRand.o `test -f 'testRand.c' || echo '$(srcdir)/'`testRand.c
+
+testRand-testRand.obj: testRand.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRand_CFLAGS) $(CFLAGS) -MT testRand-testRand.obj -MD -MP -MF $(DEPDIR)/testRand-testRand.Tpo -c -o testRand-testRand.obj `if test -f 'testRand.c'; then $(CYGPATH_W) 'testRand.c'; else $(CYGPATH_W) '$(srcdir)/testRand.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testRand-testRand.Tpo $(DEPDIR)/testRand-testRand.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testRand.c' object='testRand-testRand.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRand_CFLAGS) $(CFLAGS) -c -o testRand-testRand.obj `if test -f 'testRand.c'; then $(CYGPATH_W) 'testRand.c'; else $(CYGPATH_W) '$(srcdir)/testRand.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/cranda.c b/2.3-1/src/c/auxiliaryFunctions/rand/cranda.c
new file mode 100644
index 00000000..12dda29e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/cranda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+
+void cranda(floatComplex *out, int size) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = crands();
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/crands.c b/2.3-1/src/c/auxiliaryFunctions/rand/crands.c
new file mode 100644
index 00000000..82b1a620
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/crands.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+
+floatComplex crands(void) {
+ /* FIXME : Implementation */
+ return FloatComplex(0, 0);
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/dranda.c b/2.3-1/src/c/auxiliaryFunctions/rand/dranda.c
new file mode 100644
index 00000000..3defc264
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/dranda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+
+void dranda(double *out, int size) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = drands();
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/drands.c b/2.3-1/src/c/auxiliaryFunctions/rand/drands.c
new file mode 100644
index 00000000..658cd0b0
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/drands.c
@@ -0,0 +1,94 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*
+ URAND, A UNIVERSAL RANDOM NUMBER GENERATOR
+ BY, MICHAEL A. MALCOLM, CLEVE B. MOLER,
+ STAN-CS-73-334, JANUARY 1973,
+ COMPUTER SCIENCE DEPARTMENT,
+ School of Humanities and Sciences, STANFORD UNIVERSITY,
+ ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/73/334/CS-TR-73-334.pdf
+
+*/
+
+
+
+#include "rand.h"
+#include <stdio.h>
+
+double drands(void) {
+ int m=1;
+ const int itwo=2;
+ static int m2=0,halfm=0,ia=0, ic=0, mic=0, iy=0;
+ static double s=0.0;
+
+ if (m2==0){
+ /* if first entry, compute machine integer word length */
+ while (m>m2){
+ m2=m;
+ m=itwo*m2;
+
+ }
+
+ halfm = m2;
+
+ /* compute multiplier and increment for linear congruential method */
+ ia = 8*(int)(halfm*atan(1.0)/8.0) + 5;
+
+ ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) + 1;
+
+ mic = (m2 - ic) + m2;
+
+ /* s is the scale factor for converting to floating point */
+ s = 0.5/halfm;
+
+
+ }
+
+ /* compute next random number */
+ iy = iy*ia;
+
+
+
+ /* the following statement is for computers which do not allow
+ integer overflow on addition */
+ if (iy > mic)
+ {
+ iy = (iy - m2) - m2;
+
+ }
+
+ iy = iy + ic;
+
+ /* the following statement is for computers where the
+ word length for addition is greater than for multiplication */
+ if (iy/2 > m2)
+ {
+ iy = (iy - m2) - m2;
+
+ }
+
+ /* the following statement is for computers where integer
+ overflow affects the sign bit */
+ if (iy < 0)
+ {
+ iy = (iy + m2) + m2;
+
+
+ }
+
+
+ return (double)iy*s;
+}
+
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/i16randa.c b/2.3-1/src/c/auxiliaryFunctions/rand/i16randa.c
new file mode 100644
index 00000000..b6aa741d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/i16randa.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+
+void i16randa(double *out,int size)
+{
+ int i = 0;
+ for(i = 0 ; i < size ; ++i)
+ {
+ out[i] = i16rands();
+ }
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/i16rands.c b/2.3-1/src/c/auxiliaryFunctions/rand/i16rands.c
new file mode 100644
index 00000000..67173d23
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/i16rands.c
@@ -0,0 +1,57 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+#include <stdio.h>
+
+double i16rands(void)
+{
+
+int m=1;
+const int itwo=2;
+static int m2=0,halfm=0,ia=0,ic=0,mic=0,iy=0;
+static double s=0.0;
+if(m2==0)
+{
+ /*if first entry,compute machine integer word length*/
+ while(m>m2)
+ {
+ m2=m;
+ m=itwo*m2;
+ }
+ halfm = m2;
+ /* compute multiplier and increment for linear congruential methos */
+ ia = 8*(int)(halfm*atan(1.0)/8.0) + 5;
+ ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) +1;
+ mic = (m2 - ic) + m2;
+ /* s is the scale factor for converting to floating point*/
+ s = 0.5/halfm;
+
+}
+
+/* compute next random number */
+ iy = iy*ia;
+/* the following statement is for computers which do not allow interger overflow on addition*/
+if(iy > mic) iy = (iy - m2) - m2;
+ iy = iy + ic;
+
+ /* the following statement is for computers where the word length for addition is greater than for multiplication */
+ if(iy/2 > m2) iy = (iy - m2) - m2;
+ /* the following statement is for computers where integer overflow affects the sign bit */
+ if(iy < 0) iy = (iy + m2) + m2;
+ return (double)iy*s;
+
+
+
+
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/i8randa.c b/2.3-1/src/c/auxiliaryFunctions/rand/i8randa.c
new file mode 100644
index 00000000..68d3ff3b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/i8randa.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+
+void i8randa(double *out,int size)
+{
+ int i = 0;
+ for(i = 0 ; i < size ; ++i)
+ {
+ out[i] = i8rands();
+ }
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/i8rands.c b/2.3-1/src/c/auxiliaryFunctions/rand/i8rands.c
new file mode 100644
index 00000000..e9b30a33
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/i8rands.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+#include <stdio.h>
+
+double i8rands(void)
+{
+
+int m=1;
+const int itwo=2;
+static int m2=0,halfm=0,ia=0,ic=0,mic=0,iy=0;
+static double s=0.0;
+if(m2==0)
+{
+ /*if first entry,compute machine integer word length*/
+ while(m>m2)
+ {
+ m2=m;
+ m=itwo*m2;
+ }
+ halfm = m2;
+ /* compute multiplier and increment for linear congruential methos */
+ ia = 8*(int)(halfm*atan(1.0)/8.0) + 5;
+ ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) +1;
+ mic = (m2 - ic) + m2;
+ /* s is the scale factor for converting to floating point*/
+ s = 0.5/halfm;
+
+}
+
+/* compute next random number */
+ iy = iy*ia;
+/* the following statement is for computers which do not allow interger overflow on addition*/
+if(iy > mic) iy = (iy - m2) - m2;
+ iy = iy + ic;
+
+ /* the following statement is for computers where the word length for addition is greater than for multiplication */
+ if(iy/2 > m2) iy = (iy - m2) - m2;
+ /* the following statement is for computers where integer overflow affects the sign bit */
+ if(iy < 0) iy = (iy + m2) + m2;
+ return (double)iy*s;
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/sranda.c b/2.3-1/src/c/auxiliaryFunctions/rand/sranda.c
new file mode 100644
index 00000000..e6203e3e
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/sranda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+
+void sranda(float *out, int size) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = srands();
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/srands.c b/2.3-1/src/c/auxiliaryFunctions/rand/srands.c
new file mode 100644
index 00000000..8196d7cd
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/srands.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+
+float srands(void) {
+ /* FIXME : need some code */
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/testRand.c b/2.3-1/src/c/auxiliaryFunctions/rand/testRand.c
new file mode 100644
index 00000000..c57b69da
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/testRand.c
@@ -0,0 +1,101 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include "testRand.h"
+
+/*
+
+int drandsTest() {
+
+ double nan = 0.0 / 0.0;
+ double result = nan;
+ int i=0;
+ printf(">> Double\n");
+ for (i=0;i<10;i++){
+ result = drands();
+ printf("%1.20f\n",result);
+ }
+
+ assert(&result != &nan);
+
+ return 0;
+}
+*/
+
+/*
+int zrandsTest() {
+
+ double nan = 0.0 / 0.0;
+ doubleComplex result = DoubleComplex(nan,nan);
+ int i=0;
+ printf(">> DoubleComplex\n");
+ for (i=0;i<10;i++){
+ result = zrands();
+ printf("%1.20f+%1.20f\n",zreals(result),zimags(result));
+ }
+
+ assert(zreals(result) != nan);
+
+ return 0;
+}
+*/
+
+
+int drandaTest() {
+ int i;
+ double dA = 0.0;
+ double nan = dA / dA;
+ double *result;
+ result=(double*)malloc((unsigned int)12*sizeof(double));
+ printf(">> Double Array\n");
+ dranda(result,12);
+ for (i=0;i<12;i++){
+ printf("%1.20f\n",result[i]);
+
+ assert(result[i] != nan);}
+ free(result);
+ return 0;
+}
+
+
+/*
+int zrandaTest() {
+ int i;
+ double nan = 0.0 / 0.0;
+ doubleComplex *result;
+ result=malloc((uint)12*sizeof(doubleComplex));
+ printf(">> DoubleComplex Array\n");
+ zranda(result,12);
+ for (i=0;i<12;i++){
+ printf("%1.20f+%1.20f\n",zreals(result[i]),zimags(result[i]));
+
+ assert(zreals(result[i]) != nan);}
+ free(result);
+
+ return 0;
+}
+*/
+
+int testRand() {
+/* int drandsTestStatus = 0;*/
+ int zrandaTestStatus = 0;
+ printf("\n>>>> Rand Tests\n");
+ /* drandsTestStatus = drandsTest();*/
+ zrandaTestStatus = drandaTest();
+ return (zrandaTestStatus);
+}
+
+int main(void) {
+ assert(testRand() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/testRand.h b/2.3-1/src/c/auxiliaryFunctions/rand/testRand.h
new file mode 100644
index 00000000..48f05788
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/testRand.h
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __TESTRAND_H__
+#define __TESTRAND_H__
+
+#include <stdio.h>
+#include <assert.h>
+#include "rand.h"
+
+#define ERROR 51
+
+int srandsTest(void);
+
+int drandsTest(void);
+int drandaTest(void);
+int crandsTest(void);
+
+int zrandsTest(void);
+int zrandaTest(void);
+int testRand(void);
+
+#endif /* ! __TESTRAND_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj b/2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj
new file mode 100644
index 00000000..a6ffe249
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{31BBBDB6-9E46-4227-A8E3-9A1942DBD05E}</ProjectGuid>
+ <RootNamespace>testRand</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testRand.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testRand.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj.filters
new file mode 100644
index 00000000..a2ac28e9
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/test_Rand/testRand.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testRand.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testRand.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/u16randa.c b/2.3-1/src/c/auxiliaryFunctions/rand/u16randa.c
new file mode 100644
index 00000000..cfcfb50f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/u16randa.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+
+void u16randa(double *out,int size)
+{
+ int i = 0;
+ for(i = 0 ; i < size ; ++i)
+ {
+ out[i] = u16rands();
+ }
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/u16rands.c b/2.3-1/src/c/auxiliaryFunctions/rand/u16rands.c
new file mode 100644
index 00000000..2023be4a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/u16rands.c
@@ -0,0 +1,57 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+#include <stdio.h>
+
+double u16rands(void)
+{
+
+int m=1;
+const int itwo=2;
+static int m2=0,halfm=0,ia=0,ic=0,mic=0,iy=0;
+static double s=0;
+if(m2==0)
+{
+ /*if first entry,compute machine integer word length*/
+ while(m>m2)
+ {
+ m2=m;
+ m=itwo*m2;
+ }
+ halfm = m2;
+ /* compute multiplier and increment for linear congruential methos */
+ ia = 8*(int)(halfm*atan(1.0)/8.0) + 5;
+ ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) +1;
+ mic = (m2 - ic) + m2;
+ /* s is the scale factor for converting to floating point*/
+ s = 0.5/halfm;
+
+}
+
+/* compute next random number */
+ iy = iy*ia;
+/* the following statement is for computers which do not allow interger overflow on addition*/
+if(iy > mic) iy = (iy - m2) - m2;
+ iy = iy + ic;
+
+ /* the following statement is for computers where the word length for addition is greater than for multiplication */
+ if(iy/2 > m2) iy = (iy - m2) - m2;
+ /* the following statement is for computers where integer overflow affects the sign bit */
+ if(iy < 0) iy = (iy + m2) + m2;
+ return (double)iy*s;
+
+
+
+}
+
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/u8randa.c b/2.3-1/src/c/auxiliaryFunctions/rand/u8randa.c
new file mode 100644
index 00000000..a7fc5836
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/u8randa.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+#include<stdio.h>
+void u8randa(double *out,int size)
+{
+
+ int i = 0;
+
+ for(i = 0 ; i < size ; ++i)
+ {
+ out[i] = u8rands();
+
+ }
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/u8rands.c b/2.3-1/src/c/auxiliaryFunctions/rand/u8rands.c
new file mode 100644
index 00000000..d03741a4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/u8rands.c
@@ -0,0 +1,79 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "rand.h"
+#include <stdio.h>
+
+double u8rands(void)
+{
+
+int m=1;
+const int itwo=2;
+static int m2=0,halfm=0,ia=0,ic=0,mic=0,iy=0;
+static double s=0.0;
+if(m2==0)
+{
+ /*if first entry,compute machine integer word length*/
+
+ while(m>m2)
+ {
+
+ m2=m;
+
+ m=itwo*m2;
+
+ }
+
+ halfm = m2;
+ /* compute multiplier and increment for linear congruential methos */
+ ia = 8*(int)(halfm*atan(1.0)/8.0) + 5;
+ ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) +1;
+
+ mic = (m2 - ic) + m2;
+
+ /* s is the scale factor for converting to floating point*/
+ s = 0.5/halfm;
+
+
+}
+
+/* compute next random number */
+ iy = iy*ia;
+
+/* the following statement is for computers which do not allow interger overflow on addition*/
+if(iy > mic)
+{
+ iy = (iy - m2) - m2;
+
+}
+ iy = iy + ic;
+
+ /* the following statement is for computers where the word length for addition is greater than for multiplication */
+ if(iy/2 > m2)
+{
+ iy = (iy - m2) - m2;
+
+}
+ /* the following statement is for computers where integer overflow affects the sign bit */
+ if(iy < 0)
+ {
+ iy = (iy + m2) + m2;
+
+ }
+
+ return (double)iy*s;
+
+
+
+
+
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/zranda.c b/2.3-1/src/c/auxiliaryFunctions/rand/zranda.c
new file mode 100644
index 00000000..a9b9c895
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/zranda.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+#include <stdio.h>
+void zranda(doubleComplex *out, int size) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = DoubleComplex(drands(), 0);
+ }
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = DoubleComplex(zreals(out[i]), drands());
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/rand/zrands.c b/2.3-1/src/c/auxiliaryFunctions/rand/zrands.c
new file mode 100644
index 00000000..3011545f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/rand/zrands.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "rand.h"
+
+doubleComplex zrands(void) {
+ double Real_rand=drands();
+ double Imag_rand=drands();
+ return DoubleComplex(Real_rand,Imag_rand );
+
+ /* We can't do return DoubleComplex(drands(),drands())
+ cause the result is false; it give imag+real*i instead of real+imag*i */
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/sign/Makefile.am
new file mode 100644
index 00000000..4060373a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/Makefile.am
@@ -0,0 +1,60 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSign_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSign.la
+
+libSign_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = ssigns.c \
+ dsigns.c \
+ csigns.c \
+ zsigns.c \
+ ssigna.c \
+ dsigna.c \
+ csigna.c \
+ zsigna.c
+
+HEAD = ../includes/sign.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+check_PROGRAMS = testSign
+
+TESTS = testSign
+
+#
+# -*- Sign Tests -*-
+#
+testSign_SOURCES = testSign.h testSign.c
+testSign_CFLAGS = $(check_INCLUDES)
+testSign_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/sign/Makefile.in
new file mode 100644
index 00000000..ab42d154
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/Makefile.in
@@ -0,0 +1,772 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testSign$(EXEEXT)
+TESTS = testSign$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/sign
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSign_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libSign_la-ssigns.lo libSign_la-dsigns.lo \
+ libSign_la-csigns.lo libSign_la-zsigns.lo libSign_la-ssigna.lo \
+ libSign_la-dsigna.lo libSign_la-csigna.lo libSign_la-zsigna.lo
+am_libSign_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libSign_la_OBJECTS = $(am_libSign_la_OBJECTS)
+libSign_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSign_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testSign_OBJECTS = testSign-testSign.$(OBJEXT)
+testSign_OBJECTS = $(am_testSign_OBJECTS)
+testSign_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testSign_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testSign_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSign_la_SOURCES) $(testSign_SOURCES)
+DIST_SOURCES = $(libSign_la_SOURCES) $(testSign_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSign_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSign.la
+libSign_la_SOURCES = $(HEAD) $(SRC)
+SRC = ssigns.c \
+ dsigns.c \
+ csigns.c \
+ zsigns.c \
+ ssigna.c \
+ dsigna.c \
+ csigna.c \
+ zsigna.c
+
+HEAD = ../includes/sign.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+#
+# -*- Sign Tests -*-
+#
+testSign_SOURCES = testSign.h testSign.c
+testSign_CFLAGS = $(check_INCLUDES)
+testSign_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/sign/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/sign/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSign.la: $(libSign_la_OBJECTS) $(libSign_la_DEPENDENCIES)
+ $(libSign_la_LINK) -rpath $(pkglibdir) $(libSign_la_OBJECTS) $(libSign_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testSign$(EXEEXT): $(testSign_OBJECTS) $(testSign_DEPENDENCIES)
+ @rm -f testSign$(EXEEXT)
+ $(testSign_LINK) $(testSign_OBJECTS) $(testSign_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-csigna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-csigns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-dsigna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-dsigns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-ssigna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-ssigns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-zsigna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSign_la-zsigns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSign-testSign.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSign_la-ssigns.lo: ssigns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-ssigns.lo -MD -MP -MF $(DEPDIR)/libSign_la-ssigns.Tpo -c -o libSign_la-ssigns.lo `test -f 'ssigns.c' || echo '$(srcdir)/'`ssigns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-ssigns.Tpo $(DEPDIR)/libSign_la-ssigns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssigns.c' object='libSign_la-ssigns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-ssigns.lo `test -f 'ssigns.c' || echo '$(srcdir)/'`ssigns.c
+
+libSign_la-dsigns.lo: dsigns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-dsigns.lo -MD -MP -MF $(DEPDIR)/libSign_la-dsigns.Tpo -c -o libSign_la-dsigns.lo `test -f 'dsigns.c' || echo '$(srcdir)/'`dsigns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-dsigns.Tpo $(DEPDIR)/libSign_la-dsigns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsigns.c' object='libSign_la-dsigns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-dsigns.lo `test -f 'dsigns.c' || echo '$(srcdir)/'`dsigns.c
+
+libSign_la-csigns.lo: csigns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-csigns.lo -MD -MP -MF $(DEPDIR)/libSign_la-csigns.Tpo -c -o libSign_la-csigns.lo `test -f 'csigns.c' || echo '$(srcdir)/'`csigns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-csigns.Tpo $(DEPDIR)/libSign_la-csigns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csigns.c' object='libSign_la-csigns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-csigns.lo `test -f 'csigns.c' || echo '$(srcdir)/'`csigns.c
+
+libSign_la-zsigns.lo: zsigns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-zsigns.lo -MD -MP -MF $(DEPDIR)/libSign_la-zsigns.Tpo -c -o libSign_la-zsigns.lo `test -f 'zsigns.c' || echo '$(srcdir)/'`zsigns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-zsigns.Tpo $(DEPDIR)/libSign_la-zsigns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsigns.c' object='libSign_la-zsigns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-zsigns.lo `test -f 'zsigns.c' || echo '$(srcdir)/'`zsigns.c
+
+libSign_la-ssigna.lo: ssigna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-ssigna.lo -MD -MP -MF $(DEPDIR)/libSign_la-ssigna.Tpo -c -o libSign_la-ssigna.lo `test -f 'ssigna.c' || echo '$(srcdir)/'`ssigna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-ssigna.Tpo $(DEPDIR)/libSign_la-ssigna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssigna.c' object='libSign_la-ssigna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-ssigna.lo `test -f 'ssigna.c' || echo '$(srcdir)/'`ssigna.c
+
+libSign_la-dsigna.lo: dsigna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-dsigna.lo -MD -MP -MF $(DEPDIR)/libSign_la-dsigna.Tpo -c -o libSign_la-dsigna.lo `test -f 'dsigna.c' || echo '$(srcdir)/'`dsigna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-dsigna.Tpo $(DEPDIR)/libSign_la-dsigna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsigna.c' object='libSign_la-dsigna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-dsigna.lo `test -f 'dsigna.c' || echo '$(srcdir)/'`dsigna.c
+
+libSign_la-csigna.lo: csigna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-csigna.lo -MD -MP -MF $(DEPDIR)/libSign_la-csigna.Tpo -c -o libSign_la-csigna.lo `test -f 'csigna.c' || echo '$(srcdir)/'`csigna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-csigna.Tpo $(DEPDIR)/libSign_la-csigna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csigna.c' object='libSign_la-csigna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-csigna.lo `test -f 'csigna.c' || echo '$(srcdir)/'`csigna.c
+
+libSign_la-zsigna.lo: zsigna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -MT libSign_la-zsigna.lo -MD -MP -MF $(DEPDIR)/libSign_la-zsigna.Tpo -c -o libSign_la-zsigna.lo `test -f 'zsigna.c' || echo '$(srcdir)/'`zsigna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSign_la-zsigna.Tpo $(DEPDIR)/libSign_la-zsigna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsigna.c' object='libSign_la-zsigna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSign_la_CFLAGS) $(CFLAGS) -c -o libSign_la-zsigna.lo `test -f 'zsigna.c' || echo '$(srcdir)/'`zsigna.c
+
+testSign-testSign.o: testSign.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSign_CFLAGS) $(CFLAGS) -MT testSign-testSign.o -MD -MP -MF $(DEPDIR)/testSign-testSign.Tpo -c -o testSign-testSign.o `test -f 'testSign.c' || echo '$(srcdir)/'`testSign.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testSign-testSign.Tpo $(DEPDIR)/testSign-testSign.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testSign.c' object='testSign-testSign.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSign_CFLAGS) $(CFLAGS) -c -o testSign-testSign.o `test -f 'testSign.c' || echo '$(srcdir)/'`testSign.c
+
+testSign-testSign.obj: testSign.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSign_CFLAGS) $(CFLAGS) -MT testSign-testSign.obj -MD -MP -MF $(DEPDIR)/testSign-testSign.Tpo -c -o testSign-testSign.obj `if test -f 'testSign.c'; then $(CYGPATH_W) 'testSign.c'; else $(CYGPATH_W) '$(srcdir)/testSign.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testSign-testSign.Tpo $(DEPDIR)/testSign-testSign.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testSign.c' object='testSign-testSign.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSign_CFLAGS) $(CFLAGS) -c -o testSign-testSign.obj `if test -f 'testSign.c'; then $(CYGPATH_W) 'testSign.c'; else $(CYGPATH_W) '$(srcdir)/testSign.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/csigna.c b/2.3-1/src/c/auxiliaryFunctions/sign/csigna.c
new file mode 100644
index 00000000..478b4689
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/csigna.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+
+void csigna(floatComplex *in, int size, floatComplex *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = csigns(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/csigns.c b/2.3-1/src/c/auxiliaryFunctions/sign/csigns.c
new file mode 100644
index 00000000..b054046f
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/csigns.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+#include "abs.h"
+
+floatComplex csigns(floatComplex in) {
+ if ( (creals(in)==0) && (cimags(in)==0) ) return FloatComplex(0,0);
+ return FloatComplex(creals(in) / cabss(in), cimags(in) / cabss(in));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/dsigna.c b/2.3-1/src/c/auxiliaryFunctions/sign/dsigna.c
new file mode 100644
index 00000000..49e66144
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/dsigna.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+
+void dsigna(double *in, int size, double *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = dsigns(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/dsigns.c b/2.3-1/src/c/auxiliaryFunctions/sign/dsigns.c
new file mode 100644
index 00000000..66bd2669
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/dsigns.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+
+double dsigns(double num) {
+ if (num > 0) {
+ return 1.0;
+ }
+ if (num < 0) {
+ return -1.0;
+ }
+ /* num == 0 */
+ return 0.0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/i16signa.c b/2.3-1/src/c/auxiliaryFunctions/sign/i16signa.c
new file mode 100644
index 00000000..a2b61823
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/i16signa.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+void i16signa(int16 *in, int size, int16 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = i16signs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/i16signs.c b/2.3-1/src/c/auxiliaryFunctions/sign/i16signs.c
new file mode 100644
index 00000000..b6e70a8a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/i16signs.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+int16 i16signs(int16 num) {
+ if (num > 0) {
+ return (int16)1;
+ }
+ if (num < 0) {
+ return (int16)-1;
+ }
+ /* num == 0 */
+ return (int16)0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/i8signa.c b/2.3-1/src/c/auxiliaryFunctions/sign/i8signa.c
new file mode 100644
index 00000000..3390b042
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/i8signa.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+void i8signa(int8 *in, int size, int8 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = i8signs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/i8signs.c b/2.3-1/src/c/auxiliaryFunctions/sign/i8signs.c
new file mode 100644
index 00000000..4bbefeb3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/i8signs.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+int8 i8signs(int8 num) {
+ if (num > 0) {
+ return (int8)1;
+ }
+ if (num < 0) {
+ return (int8)-1;
+ }
+ /* num == 0 */
+ return (int8)0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/ssigna.c b/2.3-1/src/c/auxiliaryFunctions/sign/ssigna.c
new file mode 100644
index 00000000..44f8cf4a
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/ssigna.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+
+void ssigna(float *in, int size, float *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = ssigns(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/ssigns.c b/2.3-1/src/c/auxiliaryFunctions/sign/ssigns.c
new file mode 100644
index 00000000..8be78cce
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/ssigns.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+
+float ssigns(float num) {
+ if (num > 0) {
+ return 1.0f;
+ }
+ if (num < 0) {
+ return -1.0f;
+ }
+ /* num == 0 */
+ return 0.0f;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/testSign.c b/2.3-1/src/c/auxiliaryFunctions/sign/testSign.c
new file mode 100644
index 00000000..7f23f8f3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/testSign.c
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+** FIXME : Add some array tests !
+*/
+
+#include "testSign.h"
+
+int ssignsTest() {
+
+ float positive = 0.123f;
+ float negative = -0.123f;
+ float zero = 0.0f;
+
+ printf(">> Float \n");
+ assert(ssigns(positive) == 1);
+ assert(ssigns(negative) == -1);
+ assert(ssigns(zero) == 0);
+ return 0;
+}
+
+int dsignsTest() {
+
+ double positive = 0.123;
+ double negative = -0.123;
+ double zero = 0;
+
+ printf(">> Double\n");
+ assert(dsigns(positive) == 1);
+ assert(dsigns(negative) == -1);
+ assert(dsigns(zero) == 0);
+ return 0;
+}
+
+int csignsTest() {
+ floatComplex zero = FloatComplex(0., 0.);
+ floatComplex i = FloatComplex(0., 1.);
+ floatComplex oneAndI = FloatComplex(1., 1.);
+ floatComplex sign_i = csigns(i);
+ floatComplex sign_oneAndI = csigns(oneAndI);
+ floatComplex sign_zero = csigns(zero);
+
+ printf(">> Float Complex\n");
+ /* sign(%i) = %i */
+ assert(creals(sign_i) == 0);
+ assert(cimags(sign_i) == 1);
+ /* sign(1+%i) = (1+%i) / sqrt(2) */
+ assert(creals(sign_oneAndI) == 1 / sqrtf(2));
+ assert(cimags(sign_oneAndI) == 1 / sqrtf(2));
+ /* sign(0) = 0 */
+ assert(creals(sign_zero) == 0);
+ assert(cimags(sign_zero) == 0);
+
+ return 0;
+}
+
+int zsignsTest() {
+ floatComplex zero = FloatComplex(0., 0.);
+ doubleComplex i = DoubleComplex(0., 1.);
+ doubleComplex oneAndI = DoubleComplex(1., 1.);
+ doubleComplex sign_i = zsigns(i);
+ doubleComplex sign_oneAndI = zsigns(oneAndI);
+ floatComplex sign_zero = csigns(zero);
+
+ printf(">> Double Complex\n");
+ /* sign(%i) = %i */
+ assert(zreals(sign_i) == 0);
+ assert(zimags(sign_i) == 1);
+ /* sign(1+%i) = (1+%i) / sqrt(2) */
+ assert ( fabs ( zreals(sign_oneAndI) - (sqrt(2.)/2.) ) / fabs( zreals(sign_oneAndI)) < 1e-15) ;
+ assert ( fabs ( zimags(sign_oneAndI) - 1 / sqrt(2.) ) / fabs( zimags(sign_oneAndI)) < 1e-15) ;
+ /* sign(0) = 0 */
+ assert(creals(sign_zero) == 0);
+ assert(cimags(sign_zero) == 0);
+
+ return 0;
+}
+
+
+int testSign() {
+ int ssignsTestStatus, dsignsTestStatus = 0;
+ int csignsTestStatus, zsignsTestStatus = 0;
+ printf("\n>>>> Sign Tests\n");
+ ssignsTestStatus = ssignsTest();
+ dsignsTestStatus = dsignsTest();
+ csignsTestStatus = csignsTest();
+ zsignsTestStatus = zsignsTest();
+
+ return (ssignsTestStatus + dsignsTestStatus +
+ csignsTestStatus + zsignsTestStatus);
+}
+
+int main(void) {
+ assert(testSign() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/testSign.h b/2.3-1/src/c/auxiliaryFunctions/sign/testSign.h
new file mode 100644
index 00000000..214f28eb
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/testSign.h
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __TESTSIGN_H__
+#define __TESTSIGN_H__
+
+#include <stdio.h>
+#include <assert.h>
+#include "sign.h"
+
+int ssignsTest(void);
+
+int dsignsTest(void);
+
+int csignsTest(void);
+
+int zsignsTest(void);
+
+int testSign(void);
+
+#endif /* ! __TESTSIGN_H__ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj b/2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj
new file mode 100644
index 00000000..871fd18b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{EEBFAC09-8BD7-4254-9316-57C1907D827E}</ProjectGuid>
+ <RootNamespace>testSign</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testSign.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testSign.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj.filters
new file mode 100644
index 00000000..288bfbe2
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/test_Sign/testSign.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testSign.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testSign.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/u16signa.c b/2.3-1/src/c/auxiliaryFunctions/sign/u16signa.c
new file mode 100644
index 00000000..b962ee2d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/u16signa.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+void u16signa(uint16 *in, int size, int16 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = u16signs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/u16signs.c b/2.3-1/src/c/auxiliaryFunctions/sign/u16signs.c
new file mode 100644
index 00000000..d04d19cd
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/u16signs.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sign.h"
+
+int16 u16signs(uint16 num) {
+ if (num > 0) {
+ return (int16)1;
+ }
+ if (num < 0) {
+ return (int16)-1;
+ }
+ /* num == 0 */
+ return (int16)0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/u8signa.c b/2.3-1/src/c/auxiliaryFunctions/sign/u8signa.c
new file mode 100644
index 00000000..980931ec
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/u8signa.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+void u8signa(uint8 *in, int size, int8 *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = u8signs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/u8signs.c b/2.3-1/src/c/auxiliaryFunctions/sign/u8signs.c
new file mode 100644
index 00000000..69d766b0
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/u8signs.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sign.h"
+
+int8 u8signs(uint8 num) {
+ if (num > 0) {
+ return (int8)1;
+ }
+ if (num < 0) {
+ return (int8)-1;
+ }
+ /* num == 0 */
+ return (int8)0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/zsigna.c b/2.3-1/src/c/auxiliaryFunctions/sign/zsigna.c
new file mode 100644
index 00000000..eafbfbbf
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/zsigna.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+
+void zsigna(doubleComplex *in, int size, doubleComplex *out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = zsigns(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/sign/zsigns.c b/2.3-1/src/c/auxiliaryFunctions/sign/zsigns.c
new file mode 100644
index 00000000..a4fed8d4
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/sign/zsigns.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sign.h"
+#include "abs.h"
+
+doubleComplex zsigns(doubleComplex in) {
+ if ( (zreals(in)==0) && (zimags(in)==0) ) return DoubleComplex(0,0);
+ return DoubleComplex(zreals(in) / zabss(in), zimags(in) / zabss(in));
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/size/Makefile.am
new file mode 100644
index 00000000..e7eaacaa
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/Makefile.am
@@ -0,0 +1,37 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSize_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testSize
+
+TESTS = testSize
+
+#
+# -*- Size Tests -*-
+#
+testSize_SOURCES = testSize.h testSize.c
+testSize_CFLAGS = $(check_INCLUDES)
+testSize_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/size/libSize.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/size/Makefile.in
new file mode 100644
index 00000000..80b14074
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/Makefile.in
@@ -0,0 +1,611 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testSize$(EXEEXT)
+TESTS = testSize$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/size
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_testSize_OBJECTS = testSize-testSize.$(OBJEXT)
+testSize_OBJECTS = $(am_testSize_OBJECTS)
+testSize_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/size/libSize.la
+testSize_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testSize_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(testSize_SOURCES)
+DIST_SOURCES = $(testSize_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSize_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Size Tests -*-
+#
+testSize_SOURCES = testSize.h testSize.c
+testSize_CFLAGS = $(check_INCLUDES)
+testSize_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/size/libSize.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/size/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/size/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testSize$(EXEEXT): $(testSize_OBJECTS) $(testSize_DEPENDENCIES)
+ @rm -f testSize$(EXEEXT)
+ $(testSize_LINK) $(testSize_OBJECTS) $(testSize_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSize-testSize.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+testSize-testSize.o: testSize.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSize_CFLAGS) $(CFLAGS) -MT testSize-testSize.o -MD -MP -MF $(DEPDIR)/testSize-testSize.Tpo -c -o testSize-testSize.o `test -f 'testSize.c' || echo '$(srcdir)/'`testSize.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testSize-testSize.Tpo $(DEPDIR)/testSize-testSize.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testSize.c' object='testSize-testSize.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSize_CFLAGS) $(CFLAGS) -c -o testSize-testSize.o `test -f 'testSize.c' || echo '$(srcdir)/'`testSize.c
+
+testSize-testSize.obj: testSize.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSize_CFLAGS) $(CFLAGS) -MT testSize-testSize.obj -MD -MP -MF $(DEPDIR)/testSize-testSize.Tpo -c -o testSize-testSize.obj `if test -f 'testSize.c'; then $(CYGPATH_W) 'testSize.c'; else $(CYGPATH_W) '$(srcdir)/testSize.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testSize-testSize.Tpo $(DEPDIR)/testSize-testSize.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testSize.c' object='testSize-testSize.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSize_CFLAGS) $(CFLAGS) -c -o testSize-testSize.obj `if test -f 'testSize.c'; then $(CYGPATH_W) 'testSize.c'; else $(CYGPATH_W) '$(srcdir)/testSize.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/dallsizea.c b/2.3-1/src/c/auxiliaryFunctions/size/dallsizea.c
new file mode 100644
index 00000000..c757fc3d
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/dallsizea.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * 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 <stdio.h>
+#include <string.h>
+#include "size.h"
+
+double dallsizea(int *size, char *select)
+{
+ printf("** DEBUG ** select = [%s]\n", select);
+ if (strcmp(select, "*"))
+ {
+ return size[0] * size[1];
+ }
+ if (strcmp(select, "r"))
+ {
+ return size[0];
+ }
+ if (strcmp(select, "c"))
+ {
+ return size[1];
+ }
+
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/testSize.c b/2.3-1/src/c/auxiliaryFunctions/size/testSize.c
new file mode 100644
index 00000000..8effde94
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/testSize.c
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testSize.h"
+
+int ssizeaTest() {
+ float goodArray[5] = {0.,2.,3.,5.,10.};
+ float badArray[5] = {0.,0.,0.,0.,0.};
+
+ /* Only to avoid gss unused variable warning */
+ goodArray[4] = 10.0f;
+ badArray[4] = 0.0f;
+
+ printf(">> Floats \n");
+ assert(ssizea(goodArray, 5) == 5);
+ assert(ssizea(badArray, 5) == 5);
+ return 0;
+}
+
+int dsizeaTest() {
+ double goodArray[5] = {0.,2.,3.,5.,10.};
+ double badArray[5] = {0.,0.,0.,0.,0.};
+
+ /* Only to avoid gss unused variable warning */
+ goodArray[4] = 10.0;
+ badArray[4] = 0.0;
+
+ printf(">> Doubles \n");
+ assert(dsizea(goodArray, 5) == 5);
+ assert(dsizea(badArray, 5) == 5);
+ return 0;
+}
+
+int csizeaTest() {
+ floatComplex goodArray[5];
+ floatComplex badArray[5];
+
+ /* Good values in goodArray */
+ goodArray[0] = FloatComplex(0., 0.);
+ goodArray[1] = FloatComplex(0., 2.);
+ goodArray[2] = FloatComplex(3., 50.);
+ goodArray[3] = FloatComplex(5., 10.);
+ goodArray[4] = FloatComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+ badArray[5] = FloatComplex(0., 0.);
+
+ printf(">> Float Complex \n");
+ assert(csizea(goodArray, 5) == 5);
+ assert(csizea(badArray, 5) == 5);
+ return 0;
+}
+
+int zsizeaTest() {
+ doubleComplex goodArray[5];
+ doubleComplex badArray[5];
+
+ /* Good values in goodArray. */
+ goodArray[0] = DoubleComplex(0., 0.);
+ goodArray[1] = DoubleComplex(0., 2.);
+ goodArray[2] = DoubleComplex(3., 50.);
+ goodArray[3] = DoubleComplex(5., 10.);
+ goodArray[4] = DoubleComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = DoubleComplex(0., 0.);
+ badArray[1] = DoubleComplex(0., 0.);
+ badArray[2] = DoubleComplex(0., 0.);
+ badArray[3] = DoubleComplex(0., 0.);
+ badArray[4] = DoubleComplex(0., 0.);
+
+ printf(">> Double Complex \n");
+ assert(zsizea(goodArray, 5) == 5);
+ assert(zsizea(goodArray, 5) == 5);
+ return 0;
+}
+
+int testSize() {
+ int ssizeaStatus, dsizeaStatus = 0;
+ int csizeaStatus, zsizeaStatus = 0;
+
+ printf(">>>> Size Tests\n");
+ ssizeaStatus = ssizeaTest();
+ dsizeaStatus = dsizeaTest();
+ csizeaStatus = csizeaTest();
+ zsizeaStatus = zsizeaTest();
+
+ return (ssizeaStatus + dsizeaStatus +
+ csizeaStatus + zsizeaStatus);
+}
+
+int main(void) {
+ assert(testSize() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/testSize.h b/2.3-1/src/c/auxiliaryFunctions/size/testSize.h
new file mode 100644
index 00000000..b26ad7a6
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/testSize.h
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTSIZE_H_
+#define _TESTSIZE_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "size.h"
+
+int ssizeaTest(void);
+
+int dsizeaTest(void);
+
+int csizeaTest(void);
+
+int zsizeaTest(void);
+
+int testSize(void);
+
+#endif /* ! _TESTSIZE_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj b/2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj
new file mode 100644
index 00000000..19309aea
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5D4B1991-549D-48ED-A5F6-CB17F15B72C8}</ProjectGuid>
+ <RootNamespace>testSize</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testSize.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testSize.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj.filters
new file mode 100644
index 00000000..6e0d1d41
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/size/test_Size/testSize.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testSize.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testSize.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/type/Makefile.am b/2.3-1/src/c/auxiliaryFunctions/type/Makefile.am
new file mode 100644
index 00000000..004ba1b3
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/type/Makefile.am
@@ -0,0 +1,37 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libType_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_PROGRAMS = testType
+
+TESTS = testType
+
+#
+# -*- Type Tests -*-
+#
+testType_SOURCES = testType.h testType.c
+testType_CFLAGS = $(check_INCLUDES)
+testType_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/type/libType.la \
+ @LIBMATH@
diff --git a/2.3-1/src/c/auxiliaryFunctions/type/Makefile.in b/2.3-1/src/c/auxiliaryFunctions/type/Makefile.in
new file mode 100644
index 00000000..f2e87d49
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/type/Makefile.in
@@ -0,0 +1,611 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testType$(EXEEXT)
+TESTS = testType$(EXEEXT)
+subdir = src/c/auxiliaryFunctions/type
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_testType_OBJECTS = testType-testType.$(OBJEXT)
+testType_OBJECTS = $(am_testType_OBJECTS)
+testType_DEPENDENCIES = \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/type/libType.la
+testType_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testType_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(testType_SOURCES)
+DIST_SOURCES = $(testType_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libType_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+
+#
+# -*- Type Tests -*-
+#
+testType_SOURCES = testType.h testType.c
+testType_CFLAGS = $(check_INCLUDES)
+testType_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/type/libType.la \
+ @LIBMATH@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/type/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/auxiliaryFunctions/type/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testType$(EXEEXT): $(testType_OBJECTS) $(testType_DEPENDENCIES)
+ @rm -f testType$(EXEEXT)
+ $(testType_LINK) $(testType_OBJECTS) $(testType_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testType-testType.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+testType-testType.o: testType.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testType_CFLAGS) $(CFLAGS) -MT testType-testType.o -MD -MP -MF $(DEPDIR)/testType-testType.Tpo -c -o testType-testType.o `test -f 'testType.c' || echo '$(srcdir)/'`testType.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testType-testType.Tpo $(DEPDIR)/testType-testType.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testType.c' object='testType-testType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testType_CFLAGS) $(CFLAGS) -c -o testType-testType.o `test -f 'testType.c' || echo '$(srcdir)/'`testType.c
+
+testType-testType.obj: testType.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testType_CFLAGS) $(CFLAGS) -MT testType-testType.obj -MD -MP -MF $(DEPDIR)/testType-testType.Tpo -c -o testType-testType.obj `if test -f 'testType.c'; then $(CYGPATH_W) 'testType.c'; else $(CYGPATH_W) '$(srcdir)/testType.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testType-testType.Tpo $(DEPDIR)/testType-testType.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testType.c' object='testType-testType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testType_CFLAGS) $(CFLAGS) -c -o testType-testType.obj `if test -f 'testType.c'; then $(CYGPATH_W) 'testType.c'; else $(CYGPATH_W) '$(srcdir)/testType.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/auxiliaryFunctions/type/testType.c b/2.3-1/src/c/auxiliaryFunctions/type/testType.c
new file mode 100644
index 00000000..f2eafa89
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/type/testType.c
@@ -0,0 +1,155 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testType.h"
+#include "type.h"
+
+int stypesTest() {
+ float in = 3.14f;
+
+ /* Only to avoid gcc unused variable */
+ ++in;
+
+ assert(stypes(in) == 1);
+ return 0;
+}
+
+int dtypesTest() {
+ double in = 3.14;
+
+ /* Only to avoid gcc unused variable */
+ ++in;
+
+ assert(dtypes(in) == 1);
+ return 0;
+}
+
+int ctypesTest() {
+ floatComplex in = FloatComplex(3.14f, 3.14f);
+
+ /* Only to avoid gcc unused variable */
+ creals(in);
+
+ assert(ctypes(in) == 1);
+ return 0;
+}
+
+int ztypesTest() {
+ doubleComplex in = DoubleComplex(3.14, 3.14);
+
+ /* Only to avoid gcc unused variable */
+ zreals(in);
+
+ assert(ztypes(in) == 1);
+ return 0;
+}
+
+int stypeaTest() {
+ float goodArray[5] = {0.0f,2.0f,3.0f,5.0f,10.0f};
+ float badArray[5] = {0.0f,0.0f,0.0f,0.0f,0.0f};
+
+ /* Only to avoid gcc unused variable */
+ goodArray[4] = 11.0f;
+ badArray[4] = 0.0f;
+
+ printf(">> Floats \n");
+ assert(stypea(goodArray, 5) == 1);
+ assert(stypea(badArray, 5) == 1);
+ return 0;
+}
+
+int dtypeaTest() {
+ double goodArray[5] = {0.,2.,3.,5.,10.};
+ double badArray[5] = {0.,0.,0.,0.,0.};
+
+ /* Only to avoid gcc unused variable */
+ goodArray[4] = 11.0;
+ badArray[4] = 0.0;
+
+ printf(">> Doubles \n");
+ assert(dtypea(goodArray, 5) == 1);
+ assert(dtypea(badArray, 5) == 1);
+ return 0;
+}
+
+int ctypeaTest() {
+ floatComplex goodArray[5];
+ floatComplex badArray[5];
+
+ /* Good values in goodArray */
+ goodArray[0] = FloatComplex(0.0f, 0.0f);
+ goodArray[1] = FloatComplex(0.0f, 2.0f);
+ goodArray[2] = FloatComplex(3.0f, 50.0f);
+ goodArray[3] = FloatComplex(5.0f, 10.0f);
+ goodArray[4] = FloatComplex(10.0f, -10.0f);
+ /* Bad values in badArray */
+ badArray[5] = FloatComplex(0.0f, 0.0f);
+ badArray[5] = FloatComplex(0.0f, 0.0f);
+ badArray[5] = FloatComplex(0.0f, 0.0f);
+ badArray[5] = FloatComplex(0.0f, 0.0f);
+ badArray[5] = FloatComplex(0.0f, 0.0f);
+
+ printf(">> Float Complex \n");
+ assert(ctypea(goodArray, 5) == 1.0f);
+ assert(ctypea(badArray, 5) == 1.0f);
+ return 0;
+}
+
+int ztypeaTest() {
+ doubleComplex goodArray[5];
+ doubleComplex badArray[5];
+
+ /* Good values in goodArray. */
+ goodArray[0] = DoubleComplex(0., 0.);
+ goodArray[1] = DoubleComplex(0., 2.);
+ goodArray[2] = DoubleComplex(3., 50.);
+ goodArray[3] = DoubleComplex(5., 10.);
+ goodArray[4] = DoubleComplex(10., -10.);
+ /* Bad values in badArray */
+ badArray[0] = DoubleComplex(0., 0.);
+ badArray[1] = DoubleComplex(0., 0.);
+ badArray[2] = DoubleComplex(0., 0.);
+ badArray[3] = DoubleComplex(0., 0.);
+ badArray[4] = DoubleComplex(0., 0.);
+
+ printf(">> Double Complex \n");
+ assert(ztypea(goodArray, 5) == 1);
+ assert(ztypea(goodArray, 5) == 1);
+ return 0;
+}
+
+int testType() {
+ int stypesStatus, dtypesStatus = 0;
+ int ctypesStatus, ztypesStatus = 0;
+ int stypeaStatus, dtypeaStatus = 0;
+ int ctypeaStatus, ztypeaStatus = 0;
+
+ printf(">>>> Type Tests\n");
+ stypesStatus = stypesTest();
+ dtypesStatus = dtypesTest();
+ ctypesStatus = ctypesTest();
+ ztypesStatus = ztypesTest();
+ stypeaStatus = stypeaTest();
+ dtypeaStatus = dtypeaTest();
+ ctypeaStatus = ctypeaTest();
+ ztypeaStatus = ztypeaTest();
+
+ return (stypesStatus + dtypesStatus +
+ ctypesStatus + ztypesStatus +
+ stypeaStatus + dtypeaStatus +
+ ctypeaStatus + ztypeaStatus);
+}
+
+int main(void) {
+ assert(testType() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/auxiliaryFunctions/type/testType.h b/2.3-1/src/c/auxiliaryFunctions/type/testType.h
new file mode 100644
index 00000000..1057ac8b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/type/testType.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTTYPE_H_
+#define _TESTTYPE_H_
+
+#include <stdio.h>
+#include <assert.h>
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "type.h"
+
+int stypesTest(void);
+
+int dtypesTest(void);
+
+int ctypesTest(void);
+
+int ztypesTest(void);
+
+int stypeaTest(void);
+
+int dtypeaTest(void);
+
+int ctypeaTest(void);
+
+int ztypeaTest(void);
+
+int testType(void);
+
+#endif /* ! _TESTTYPE_H_ */
diff --git a/2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj b/2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj
new file mode 100644
index 00000000..96815e5b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8EB05C91-9405-4AF4-88B4-A6B227409BFB}</ProjectGuid>
+ <RootNamespace>testType</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;../../../type;../../../operations/includes;../../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testType.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testType.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj.filters b/2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj.filters
new file mode 100644
index 00000000..b6b8675b
--- /dev/null
+++ b/2.3-1/src/c/auxiliaryFunctions/type/test_Type/testType.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testType.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testType.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/differential_calculus/diff/ddiffca.c b/2.3-1/src/c/differential_calculus/diff/ddiffca.c
new file mode 100644
index 00000000..92727da0
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/diff/ddiffca.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /* This function calculates difference between adjacent members of given
+ input array/matrix */
+
+#include "diffc.h"
+
+
+void ddiffca(double *in, int row, int col, int depth, int dim, double *out)
+{
+ int counter, depth_count;
+ int row_count, col_count;
+ double *buffer; /*To store intermediate results*/
+
+ depth_count = 1;
+
+ if(dim == 0)
+ { /*For dim = 0, we calculate difference between adjacent elements
+ in case of arrays. In case of matrices, we calculate difference along
+ first column, and then continue to second (diff between first element
+ of second column and last element of first column, then third etc.*/
+ if(depth == 1)
+ {/*for depth=1, a buffer is not needed. Directly write result in
+ out buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else
+ { /*define buffer for storing intermediate results*/
+
+ buffer = (double *) malloc (sizeof(double)*(row*col-1));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*calculate diff and store in buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ buffer[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(counter = 0; counter <= row*col - depth_count ; counter++)
+ {
+ buffer[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ /*For last step use output buffer to store result*/
+ else
+ {
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ depth_count += 1;
+ }
+ }
+
+ }
+ else if(dim == 1)
+ {
+ /*For dim = 1, difference is calculated along rows. Each element of
+ first row is subtracted from corresponding element of second row and
+ result is stored in first row. Same thing is repeated till last row. */
+
+ if (depth == 1)
+ {
+ /*If depth is 1, store result directly in out buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ out[col_count*(row-1)+row_count] = in[col_count*row + row_count+1] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (double *) malloc (sizeof(double)*((row-1)*col));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*For first step, use in buffer and store results in buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ buffer[col_count*row+row_count] = in[col_count*row + row_count + 1] \
+ - in[col_count*row + row_count];
+ }
+
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[col_count*row + row_count + 1] \
+ - buffer[col_count*row + row_count];
+ }
+
+ }
+ }
+ else
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ out[col_count*(row-depth_count)+row_count] = buffer[col_count*row + row_count+1] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count +=1;
+ }
+ }
+ }
+ else if(dim == 2)
+ {
+ /*For dim = 2, difference is calculated along columns. Each element of
+ first column is subtracted from corresponding element of second column
+ and result is stored in first column. Same thing is repeated till last
+ column. */
+ if(depth == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ out[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (double *) malloc (sizeof(double)*(row*(col-1)));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ buffer[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ out[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count += 1;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/differential_calculus/diff/i16diffca.c b/2.3-1/src/c/differential_calculus/diff/i16diffca.c
new file mode 100644
index 00000000..d1c70a53
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/diff/i16diffca.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /* This function calculates difference between adjacent members of given
+ input array/matrix */
+
+#include "diffc.h"
+
+
+void i16diffca(int16 *in, int row, int col, int depth, int dim, int16 *out)
+{
+ int counter, depth_count;
+ int row_count, col_count;
+ int16 *buffer; /*To store intermediate results*/
+
+ depth_count = 1;
+
+ if(dim == 0)
+ { /*For dim = 0, we calculate difference between adjacent elements
+ in case of arrays. In case of matrices, we calculate difference along
+ first column, and then continue to second (diff between first element
+ of second column and last element of first column, then third etc.*/
+ if(depth == 1)
+ {/*for depth=1, a buffer is not needed. Directly write result in
+ out buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else
+ { /*define buffer for storing intermediate results*/
+
+ buffer = (int16 *) malloc (sizeof(int16)*(row*col-1));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*calculate diff and store in buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ buffer[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(counter = 0; counter <= row*col - depth_count ; counter++)
+ {
+ buffer[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ /*For last step use output buffer to store result*/
+ else
+ {
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ depth_count += 1;
+ }
+ }
+
+ }
+ else if(dim == 1)
+ {
+ /*For dim = 1, difference is calculated along rows. Each element of
+ first row is subtracted from corresponding element of second row and
+ result is stored in first row. Same thing is repeated till last row. */
+
+ if (depth == 1)
+ {
+ /*If depth is 1, store result directly in out buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ out[col_count*(row-1)+row_count] = in[col_count*row + row_count+1] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (int16 *) malloc (sizeof(int16)*((row-1)*col));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*For first step, use in buffer and store results in buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ buffer[col_count*row+row_count] = in[col_count*row + row_count + 1] \
+ - in[col_count*row + row_count];
+ }
+
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[col_count*row + row_count + 1] \
+ - buffer[col_count*row + row_count];
+ }
+
+ }
+ }
+ else
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ out[col_count*(row-depth_count)+row_count] = buffer[col_count*row + row_count+1] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count +=1;
+ }
+ }
+ }
+ else if(dim == 2)
+ {
+ /*For dim = 2, difference is calculated along columns. Each element of
+ first column is subtracted from corresponding element of second column
+ and result is stored in first column. Same thing is repeated till last
+ column. */
+ if(depth == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ out[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (int16 *) malloc (sizeof(int16)*(row*(col-1)));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ buffer[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ out[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count += 1;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/differential_calculus/diff/i8diffca.c b/2.3-1/src/c/differential_calculus/diff/i8diffca.c
new file mode 100644
index 00000000..7b76f961
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/diff/i8diffca.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /* This function calculates difference between adjacent members of given
+ input array/matrix */
+
+#include "diffc.h"
+
+
+void i8diffca(int8 *in, int row, int col, int depth, int dim, int8 *out)
+{
+ int counter, depth_count;
+ int row_count, col_count;
+ int8 *buffer; /*To store intermediate results*/
+
+ depth_count = 1;
+
+ if(dim == 0)
+ { /*For dim = 0, we calculate difference between adjacent elements
+ in case of arrays. In case of matrices, we calculate difference along
+ first column, and then continue to second (diff between first element
+ of second column and last element of first column, then third etc.*/
+ if(depth == 1)
+ {/*for depth=1, a buffer is not needed. Directly write result in
+ out buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else
+ { /*define buffer for storing intermediate results*/
+
+ buffer = (int8 *) malloc (sizeof(int8)*(row*col-1));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*calculate diff and store in buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ buffer[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(counter = 0; counter <= row*col - depth_count ; counter++)
+ {
+ buffer[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ /*For last step use output buffer to store result*/
+ else
+ {
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ depth_count += 1;
+ }
+ }
+
+ }
+ else if(dim == 1)
+ {
+ /*For dim = 1, difference is calculated along rows. Each element of
+ first row is subtracted from corresponding element of second row and
+ result is stored in first row. Same thing is repeated till last row. */
+
+ if (depth == 1)
+ {
+ /*If depth is 1, store result directly in out buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ out[col_count*(row-1)+row_count] = in[col_count*row + row_count+1] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (int8 *) malloc (sizeof(int8)*((row-1)*col));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*For first step, use in buffer and store results in buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ buffer[col_count*row+row_count] = in[col_count*row + row_count + 1] \
+ - in[col_count*row + row_count];
+ }
+
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[col_count*row + row_count + 1] \
+ - buffer[col_count*row + row_count];
+ }
+
+ }
+ }
+ else
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ out[col_count*(row-depth_count)+row_count] = buffer[col_count*row + row_count+1] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count +=1;
+ }
+ }
+ }
+ else if(dim == 2)
+ {
+ /*For dim = 2, difference is calculated along columns. Each element of
+ first column is subtracted from corresponding element of second column
+ and result is stored in first column. Same thing is repeated till last
+ column. */
+ if(depth == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ out[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (int8 *) malloc (sizeof(int8)*(row*(col-1)));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ buffer[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ out[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count += 1;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/differential_calculus/diff/sdiffca.c b/2.3-1/src/c/differential_calculus/diff/sdiffca.c
new file mode 100644
index 00000000..67526ad5
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/diff/sdiffca.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /* This function calculates difference between adjacent members of given
+ input array/matrix */
+
+#include "diffc.h"
+
+
+void sdiffca(float *in, int row, int col, int depth, int dim, float *out)
+{
+ int counter, depth_count;
+ int row_count, col_count;
+ float *buffer; /*To store intermediate results*/
+
+ depth_count = 1;
+
+ if(dim == 0)
+ { /*For dim = 0, we calculate difference between adjacent elements
+ in case of arrays. In case of matrices, we calculate difference along
+ first column, and then continue to second (diff between first element
+ of second column and last element of first column, then third etc.*/
+ if(depth == 1)
+ {/*for depth=1, a buffer is not needed. Directly write result in
+ out buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else
+ { /*define buffer for storing intermediate results*/
+
+ buffer = (float *) malloc (sizeof(float)*(row*col-1));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*calculate diff and store in buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ buffer[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(counter = 0; counter <= row*col - depth_count ; counter++)
+ {
+ buffer[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ /*For last step use output buffer to store result*/
+ else
+ {
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ depth_count += 1;
+ }
+ }
+
+ }
+ else if(dim == 1)
+ {
+ /*For dim = 1, difference is calculated along rows. Each element of
+ first row is subtracted from corresponding element of second row and
+ result is stored in first row. Same thing is repeated till last row. */
+
+ if (depth == 1)
+ {
+ /*If depth is 1, store result directly in out buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ out[col_count*(row-1)+row_count] = in[col_count*row + row_count+1] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (float *) malloc (sizeof(float)*((row-1)*col));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*For first step, use in buffer and store results in buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ buffer[col_count*row+row_count] = in[col_count*row + row_count + 1] \
+ - in[col_count*row + row_count];
+ }
+
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[col_count*row + row_count + 1] \
+ - buffer[col_count*row + row_count];
+ }
+
+ }
+ }
+ else
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ out[col_count*(row-depth_count)+row_count] = buffer[col_count*row + row_count+1] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count +=1;
+ }
+ }
+ }
+ else if(dim == 2)
+ {
+ /*For dim = 2, difference is calculated along columns. Each element of
+ first column is subtracted from corresponding element of second column
+ and result is stored in first column. Same thing is repeated till last
+ column. */
+ if(depth == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ out[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (float *) malloc (sizeof(float)*(row*(col-1)));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ buffer[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ out[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count += 1;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/differential_calculus/diff/u16diffca.c b/2.3-1/src/c/differential_calculus/diff/u16diffca.c
new file mode 100644
index 00000000..d83a9e6e
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/diff/u16diffca.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /* This function calculates difference between adjacent members of given
+ input array/matrix */
+
+#include "diffc.h"
+
+
+void u16diffca(uint16 *in, int row, int col, int depth, int dim, uint16 *out)
+{
+ int counter, depth_count;
+ int row_count, col_count;
+ uint16 *buffer; /*To store intermediate results*/
+
+ depth_count = 1;
+
+ if(dim == 0)
+ { /*For dim = 0, we calculate difference between adjacent elements
+ in case of arrays. In case of matrices, we calculate difference along
+ first column, and then continue to second (diff between first element
+ of second column and last element of first column, then third etc.*/
+ if(depth == 1)
+ {/*for depth=1, a buffer is not needed. Directly write result in
+ out buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else
+ { /*define buffer for storing intermediate results*/
+
+ buffer = (uint16 *) malloc (sizeof(uint16)*(row*col-1));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*calculate diff and store in buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ buffer[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(counter = 0; counter <= row*col - depth_count ; counter++)
+ {
+ buffer[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ /*For last step use output buffer to store result*/
+ else
+ {
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ depth_count += 1;
+ }
+ }
+
+ }
+ else if(dim == 1)
+ {
+ /*For dim = 1, difference is calculated along rows. Each element of
+ first row is subtracted from corresponding element of second row and
+ result is stored in first row. Same thing is repeated till last row. */
+
+ if (depth == 1)
+ {
+ /*If depth is 1, store result directly in out buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ out[col_count*(row-1)+row_count] = in[col_count*row + row_count+1] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (uint16 *) malloc (sizeof(uint16)*((row-1)*col));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*For first step, use in buffer and store results in buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ buffer[col_count*row+row_count] = in[col_count*row + row_count + 1] \
+ - in[col_count*row + row_count];
+ }
+
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[col_count*row + row_count + 1] \
+ - buffer[col_count*row + row_count];
+ }
+
+ }
+ }
+ else
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ out[col_count*(row-depth_count)+row_count] = buffer[col_count*row + row_count+1] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count +=1;
+ }
+ }
+ }
+ else if(dim == 2)
+ {
+ /*For dim = 2, difference is calculated along columns. Each element of
+ first column is subtracted from corresponding element of second column
+ and result is stored in first column. Same thing is repeated till last
+ column. */
+ if(depth == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ out[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (uint16 *) malloc (sizeof(uint16)*(row*(col-1)));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ buffer[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ out[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count += 1;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/differential_calculus/diff/u8diffca.c b/2.3-1/src/c/differential_calculus/diff/u8diffca.c
new file mode 100644
index 00000000..567ff8e6
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/diff/u8diffca.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /* This function calculates difference between adjacent members of given
+ input array/matrix */
+
+#include "diffc.h"
+
+
+void u8diffca(uint8 *in, int row, int col, int depth, int dim, uint8 *out)
+{
+ int counter, depth_count;
+ int row_count, col_count;
+ uint8 *buffer; /*To store intermediate results*/
+
+ depth_count = 1;
+
+ if(dim == 0)
+ { /*For dim = 0, we calculate difference between adjacent elements
+ in case of arrays. In case of matrices, we calculate difference along
+ first column, and then continue to second (diff between first element
+ of second column and last element of first column, then third etc.*/
+ if(depth == 1)
+ {/*for depth=1, a buffer is not needed. Directly write result in
+ out buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else
+ { /*define buffer for storing intermediate results*/
+
+ buffer = (uint8 *) malloc (sizeof(uint8)*(row*col-1));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*calculate diff and store in buffer*/
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ buffer[counter] = in[counter+1] - in[counter];
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(counter = 0; counter <= row*col - depth_count ; counter++)
+ {
+ buffer[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ /*For last step use output buffer to store result*/
+ else
+ {
+ for(counter = 0; counter < row*col - depth_count; counter++)
+ {
+ out[counter] = buffer[counter+1] - buffer[counter];
+ }
+ }
+ depth_count += 1;
+ }
+ }
+
+ }
+ else if(dim == 1)
+ {
+ /*For dim = 1, difference is calculated along rows. Each element of
+ first row is subtracted from corresponding element of second row and
+ result is stored in first row. Same thing is repeated till last row. */
+
+ if (depth == 1)
+ {
+ /*If depth is 1, store result directly in out buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ out[col_count*(row-1)+row_count] = in[col_count*row + row_count+1] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (uint8 *) malloc (sizeof(uint8)*((row-1)*col));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ /*For first step, use in buffer and store results in buffer*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - 1; row_count++)
+ {
+ buffer[col_count*row+row_count] = in[col_count*row + row_count + 1] \
+ - in[col_count*row + row_count];
+ }
+
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[col_count*row + row_count + 1] \
+ - buffer[col_count*row + row_count];
+ }
+
+ }
+ }
+ else
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count < row - depth_count; row_count++)
+ {
+ out[col_count*(row-depth_count)+row_count] = buffer[col_count*row + row_count+1] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count +=1;
+ }
+ }
+ }
+ else if(dim == 2)
+ {
+ /*For dim = 2, difference is calculated along columns. Each element of
+ first column is subtracted from corresponding element of second column
+ and result is stored in first column. Same thing is repeated till last
+ column. */
+ if(depth == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ out[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ /*If depth is not 1, declare a buffer to store intermediate
+ results. At last step store result into out buffer*/
+ buffer = (uint8 *) malloc (sizeof(uint8)*(row*(col-1)));
+
+ while(depth_count <= depth)
+ {
+ if(depth_count == 1)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - 1; col_count++)
+ {
+ buffer[col_count*row+row_count] = in[(col_count+1)*row + row_count] \
+ - in[col_count*row + row_count];
+ }
+ }
+ }
+ else if(depth_count < depth)
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ buffer[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ else
+ {
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col - depth_count; col_count++)
+ {
+ out[col_count*row+row_count] = buffer[(col_count+1)*row + row_count] \
+ - buffer[col_count*row + row_count];
+ }
+ }
+ }
+ depth_count += 1;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/differential_calculus/includes/diffc.h b/2.3-1/src/c/differential_calculus/includes/diffc.h
new file mode 100644
index 00000000..2e2cf018
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/includes/diffc.h
@@ -0,0 +1,39 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __DIFFC_H__
+#define __DIFFC_H__
+
+#include "types.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void ddiffca(double *in, int row, int col, int depth, int dim, double *out);
+
+void sdiffca(float *in, int row, int col, int depth, int dim, float *out);
+
+void u8diffca(uint8 *in, int row, int col, int depth, int dim, uint8 *out);
+
+void i8diffca(int8 *in, int row, int col, int depth, int dim, int8 *out);
+
+void u16diffca(uint16 *in, int row, int col, int depth, int dim, uint16 *out);
+
+void i16diffca(int16 *in, int row, int col, int depth, int dim, int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__DIFFC_H__*/
diff --git a/2.3-1/src/c/differential_calculus/includes/ode.h b/2.3-1/src/c/differential_calculus/includes/ode.h
new file mode 100644
index 00000000..7e110031
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/includes/ode.h
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __ODE_H__
+#define __ODE_H__
+
+double dodes(double initial_value, double start_time, double end_time, \
+ int (*ode_function)(double, double*, double*, int*), char *solver_type, double nequs, double eps_abs, double eps_rel, \
+ double step_size, int *params);
+
+void dodea(double *initial_value, double start_time, double end_time, \
+ int (*ode_function)(double, double*, double*, int*), char *solver_type, double nequs, double eps_abs, double eps_rel, \
+ double step_size, int *params, double *out);
+
+#endif /*__ODE_H__*/ \ No newline at end of file
diff --git a/2.3-1/src/c/differential_calculus/interfaces/int_diffc.h b/2.3-1/src/c/differential_calculus/interfaces/int_diffc.h
new file mode 100644
index 00000000..3c032426
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/interfaces/int_diffc.h
@@ -0,0 +1,105 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_DIFFC_H__
+#define __INT_DIFFC_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2diffd2(in, size, out) ddiffca(in, size[0], size[1], 1, 0, out)
+
+#define d2d0diffd2(in, size, depth, out) ddiffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define d2d0d0diffd2(in, size, depth, dim, out) ddiffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#define s2diffs2(in, size, out) sdiffca(in, size[0], size[1], 1, 0, out)
+
+#define s2d0diffs2(in, size, depth, out) sdiffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define s2s0diffs2(in, size, depth, out) sdiffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define s2s0d0diffs2(in, size, depth, dim, out) sdiffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#define s2d0d0diffs2(in, size, depth, dim, out) sdiffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#define u82diffu82(in, size, out) u8diffca(in, size[0], size[1], 1, 0, out)
+
+#define u82d0diffu82(in, size, depth, out) u8diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define u82u80diffu82(in, size, depth, out) u8diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define u82u80d0diffu82(in, size, depth, dim, out) u8diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+
+#define u82d0d0diffu82(in, size, depth, dim, out) u8diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#define i82diffi82(in, size, out) i8diffca(in, size[0], size[1], 1, 0, out)
+
+#define i82d0diffi82(in, size, depth, out) i8diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define i82u80diffi82(in, size, depth, out) i8diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define i82u80d0diffi82(in, size, depth, dim, out) i8diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+
+#define i82d0d0diffi82(in, size, depth, dim, out) i8diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#define u162diffu162(in, size, out) u16diffca(in, size[0], size[1], 1, 0, out)
+
+#define u162d0diffu162(in, size, depth, out) u16diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define u162u160diffu162(in, size, depth, out) u16diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define u162u160d0diffu162(in, size, depth, dim, out) u16diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+
+#define u162d0d0diffu162(in, size, depth, dim, out) u16diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#define i162diffi162(in, size, out) i16diffca(in, size[0], size[1], 1, 0, out)
+
+#define i162d0diffi162(in, size, depth, out) i16diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define i162u160diffi162(in, size, depth, out) i16diffca (in, size[0], size[1], \
+ depth, 0, out)
+
+#define i162u160d0diffi162(in, size, depth, dim, out) i16diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+
+#define i162d0d0diffi162(in, size, depth, dim, out) i16diffca(in, size[0], size[1], \
+ depth, dim, out)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_DIFFC_H__*/
diff --git a/2.3-1/src/c/differential_calculus/interfaces/int_ode.h b/2.3-1/src/c/differential_calculus/interfaces/int_ode.h
new file mode 100644
index 00000000..51764ea1
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/interfaces/int_ode.h
@@ -0,0 +1,68 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_ODE_H__
+#define __INT_ODE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0fn0oded0(in1, in2, in3, func_name) dodes(in1, in2, in3, \
+ func_name, "rkf",1, 1.0e-2, 1.0e-2, 1.0e-6, NULL)
+
+#define d2d0d0fn0oded2(in1, size1, in2, in3, func_name, out) dodea(in1, \
+ in2, in3, func_name, "rkf",size1[1], 1.0e-2, 1.0e-2, \
+ 1.0e-6, size1, out)
+
+#define d0d0d2fn0oded2(in1, in2, in3, size3, func_name, out) dodea(in1, in2, \
+ in3, func_name, "rkf", 1, 1.0e-2, 1.0e-2, 1.0e-6, size3, out)
+
+#define d2d0d2fn0oded2(in1, size1, in2, in3, size3, func_name, out) dodea(in1, \
+ in2, in3, func_name, "rkf",size1[1], 1.0e-2, 1.0e-2, \
+ 1.0e-6, size1, out)
+
+#define g2d0d0d0fn0oded0(solvertype, typesize, in1, in2, in3, func_name) dodes(in1, in2, in3, \
+ func_name, solvertype, 1, 1.0e-2, 1.0e-2, 1.0e-6, NULL)
+
+#define g2d2d0d0fn0oded2(solvertype, typesize, in1, size1, in2, in3, func_name, out) \
+ dodea(in1, in2, in3, func_name, solvertype, size1[1], \
+ 1.0e-2, 1.0e-2, 1.0e-6, size1, out)
+
+#define g2d0d0d2fn0oded2(solvertype, typesize, in1, in2, in3, size3, func_name, out) \
+ dodea(in1, in2, in3, func_name, solvertype,1, 1.0e-2, 1.0e-2, \
+ 1.0e-6, size3, out)
+
+#define g2d2d0d2fn0oded2(solvertype, typesize, in1, size1, in2, in3, size3, func_name, out) dodea(in1, \
+ in2, in3, func_name, solvertype, size1[1], 1.0e-2, 1.0e-2, \
+ 1.0e-6, size1, out)
+
+#define d0d0d0d0d0fn0oded0(in1, in2, in3, in4, in5, func_name) \
+ dodes(in1, in2, in3, func_name, "rkf",1, in5, in4, 1.0e-6, NULL)
+
+#define d2d0d0d0d0fn0oded2(in1, size1, in2, in3, in4, in5, func_name, out) \
+ dodea(in1, in2, in3, func_name, "rkf", size1[1], in5, in4, \
+ 1.0e-6, size1, out)
+
+#define d0d0d2d0d0fn0oded2(in1, in2, in3, size3, in4, in5, func_name, out) \
+ dodea(in1, in2, in3, func_name, "rkf", 1, in5, in4, 1.0e-6, size3, out)
+
+#define d2d0d2d0d0fn0oded2(in1, size1, in2, in3, size3, in4, in5, func_name, out) \
+ dodea(in1, in2, in3, func_name, "rkf", size1[1], in5, in4, \
+ 1.0e-6, size1, out)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /*__INT_ODE_H__*/ \ No newline at end of file
diff --git a/2.3-1/src/c/differential_calculus/ode/dodea.c b/2.3-1/src/c/differential_calculus/ode/dodea.c
new file mode 100644
index 00000000..97d56a1a
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/ode/dodea.c
@@ -0,0 +1,67 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for solving ODEs using GSL library*/
+
+#include "ode.h"
+#include "types.h"
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_odeiv2.h>
+
+
+void dodea(double *initial_value, double start_time, double end_time, \
+ int (*ode_function)(double, double*, double*, int*), char *solver_type, double nequs, double eps_abs, \
+ double eps_rel, double step_size, int *params, double *out)
+{
+ double t = start_time;
+ gsl_odeiv2_step_type *step_type;
+
+ /*Initialise output to initial state*/
+ int counter = 0;
+ for (counter = 0; counter<nequs;counter++)
+ {
+ out[counter] = initial_value[counter];
+ }
+
+ /*Setup ODE related parameters*/
+ gsl_odeiv2_system sys = {ode_function, NULL, nequs, params};
+
+ /*Select step solver*/
+ if (solver_type == "adams")
+ step_type = gsl_odeiv2_step_msadams;
+ if (solver_type == "stiff")
+ step_type = gsl_odeiv2_step_msbdf;
+ if (solver_type == "rk")
+ step_type = gsl_odeiv2_step_rk4;
+ if (solver_type == "rkf")
+ step_type = gsl_odeiv2_step_rkf45;
+ if (solver_type == "root")
+ step_type = gsl_odeiv2_step_rkck;
+ if (solver_type == "discrete")
+ step_type = gsl_odeiv2_step_rk8pd;
+ else
+ step_type = gsl_odeiv2_step_rkf45;
+
+ gsl_odeiv2_step *s = gsl_odeiv2_step_alloc (step_type, nequs);
+ gsl_odeiv2_control *c = gsl_odeiv2_control_y_new (eps_abs, eps_rel);
+ gsl_odeiv2_evolve *e = gsl_odeiv2_evolve_alloc (nequs);
+
+ while(t < end_time)
+ {
+ gsl_odeiv2_evolve_apply_fixed_step (e, c, s, &sys, &t, step_size, out);
+ }
+
+ gsl_odeiv2_evolve_free (e);
+ gsl_odeiv2_control_free (c);
+ gsl_odeiv2_step_free (s);
+}
diff --git a/2.3-1/src/c/differential_calculus/ode/dodes.c b/2.3-1/src/c/differential_calculus/ode/dodes.c
new file mode 100644
index 00000000..6d1a8672
--- /dev/null
+++ b/2.3-1/src/c/differential_calculus/ode/dodes.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for solving ODEs using GSL library*/
+
+#include "ode.h"
+#include "types.h"
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_odeiv2.h>
+
+
+double dodes(double initial_value, double start_time, double end_time, \
+ int (*ode_function)(double, double*, double*, int*), \
+ char *solver_type, double nequs, double eps_abs, \
+ double eps_rel, double step_size, int *params)
+{
+ double out = 0, t = 0;
+ //int status;
+ out = initial_value;
+ t = start_time;
+ //Setup ODE related parameters
+ gsl_odeiv2_system sys = {ode_function, NULL, nequs, NULL};
+
+ gsl_odeiv2_step *s = gsl_odeiv2_step_alloc (gsl_odeiv2_step_rkf45, nequs);
+ gsl_odeiv2_control *c = gsl_odeiv2_control_y_new (eps_abs, eps_rel);
+ gsl_odeiv2_evolve *e = gsl_odeiv2_evolve_alloc (nequs);
+
+ while(t < end_time)
+ {
+ gsl_odeiv2_evolve_apply_fixed_step (e, c, s, &sys, &t, step_size, &out);
+ }
+
+ gsl_odeiv2_evolve_free (e);
+ gsl_odeiv2_control_free (c);
+ gsl_odeiv2_step_free (s);
+
+ return out;
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Makefile.am b/2.3-1/src/c/elementaryFunctions/Makefile.am
new file mode 100644
index 00000000..66caa2d4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Makefile.am
@@ -0,0 +1,40 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+dist_SUBDIRS= includes
+
+SUBDIRS= cos \
+ cosh \
+ acos \
+ acosh \
+ sin \
+ sinh \
+ asinh \
+ tan \
+ tanh \
+ atan \
+ atanh \
+ exp \
+ exp10 \
+ log \
+ log1p \
+ log10 \
+ sqrt \
+ asin \
+ lnp1m1 \
+ pow \
+ atan2\
+ ceil\
+ floor\
+ fix\
+ int\
+ round
diff --git a/2.3-1/src/c/elementaryFunctions/Makefile.in b/2.3-1/src/c/elementaryFunctions/Makefile.in
new file mode 100644
index 00000000..d9edd2db
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Makefile.in
@@ -0,0 +1,587 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/elementaryFunctions
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_SUBDIRS = includes
+SUBDIRS = cos \
+ cosh \
+ acos \
+ acosh \
+ sin \
+ sinh \
+ asinh \
+ tan \
+ tanh \
+ atan \
+ atanh \
+ exp \
+ exp10 \
+ log \
+ log1p \
+ log10 \
+ sqrt \
+ asin \
+ lnp1m1 \
+ pow \
+ atan2\
+ ceil\
+ floor\
+ fix\
+ int\
+ round
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosda.c
new file mode 100644
index 00000000..65a6f4a2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosda.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cosd.h"
+#include <math.h>
+
+void dcosda(double* in,int size,double* out)
+{
+ int i=0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = dcosds(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosds.c
new file mode 100644
index 00000000..8bc6d4ab
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/dcosds.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+#include <math.h>
+#include "cos.h"
+#include "cosd.h"
+
+double dcosds(double in)
+{
+ if(cos((M_PI/180.0)*in)==0.0)
+ return 0.0;
+ else
+ return (cos((M_PI/180.0)*in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosda.c
new file mode 100644
index 00000000..7e0714db
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosda.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cos.h"
+#include "cosd.h"
+
+void scosda(float* in, int size, float* out)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = scosds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosds.c
new file mode 100644
index 00000000..45c788ff
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cosd/scosds.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+#include <math.h>
+#include "cosd.h"
+#include "cos.h"
+
+float scosds(float in)
+{
+ if(cosf((M_PI/180.0)*in)==0.0)
+ return 0.0;
+ else
+ return (cosf((M_PI/180.0)*in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotda.c
new file mode 100644
index 00000000..3a4b23c1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotda.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cotd.h"
+
+void dcotda(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=dcotds(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotds.c
new file mode 100644
index 00000000..34befb62
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/dcotds.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+#include <math.h>
+#include "cotd.h"
+
+double dcotds(double in)
+{
+ return (1/tan((M_PI/180.0)*in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotda.c
new file mode 100644
index 00000000..fbdf0f50
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cotd.h"
+
+void scotda(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = scotds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotds.c
new file mode 100644
index 00000000..e7e02b9d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cotd/scotds.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+#include <math.h>
+#include "cotd.h"
+
+float scotds(float in)
+{
+ return (1/tanf((M_PI/180.0)*in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccotha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccotha.c
new file mode 100644
index 00000000..44a366e8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccotha.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "coth.h"
+#include <math.h>
+
+void ccotha(floatComplex* in, int size,floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = ccoths(in[i]);
+ }
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccoths.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccoths.c
new file mode 100644
index 00000000..b7f90263
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/ccoths.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "coth.h"
+#include <math.h>
+#include "tanh.h"
+#include "floatComplex.h"
+#include "division.h"
+
+floatComplex ccoths(floatComplex z)
+{
+
+ floatComplex out;
+ out = crdivs(FloatComplex(1,0), ctanhs(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcotha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcotha.c
new file mode 100644
index 00000000..bb54b200
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcotha.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "coth.h"
+#include <math.h>
+
+void dcotha(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=cosh(in[i])/sinh(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcoths.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcoths.c
new file mode 100644
index 00000000..55c9a5b4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/dcoths.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "coth.h"
+#include "cosh.h"
+#include "cos.h"
+#include "sinh.h"
+#include "sin.h"
+
+double dcoths(double in) {
+ return (cosh(in)/sinh(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scotha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scotha.c
new file mode 100644
index 00000000..53351621
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scotha.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "coth.h"
+#include <math.h>
+
+void scotha(float* in,int size,float* out)
+{
+ float val;
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=cosh(in[i])/sinh(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scoths.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scoths.c
new file mode 100644
index 00000000..2865f566
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/scoths.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "coth.h"
+#include "cosh.h"
+#include "cos.h"
+#include "sinh.h"
+#include "sin.h"
+
+float scoths(float in) {
+ return (cosh(in)/sinh(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcotha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcotha.c
new file mode 100644
index 00000000..206cc43f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcotha.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "coth.h"
+#include <math.h>
+
+void zcotha(doubleComplex* in, int size,doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = zcoths(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcoths.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcoths.c
new file mode 100644
index 00000000..8b3b19f5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/coth/zcoths.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "coth.h"
+#include "tanh.h"
+#include "tan.h"
+#include <math.h>
+#include "doubleComplex.h"
+#include "division.h"
+
+doubleComplex zcoths(doubleComplex z)
+{
+
+ doubleComplex out;
+ out = zrdivs(DoubleComplex(1,0),ztanhs(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccsca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccsca.c
new file mode 100644
index 00000000..7ec9a6b8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccsca.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+#include <math.h>
+
+void ccsca(floatComplex* in, int size,floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = ccscs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccscs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccscs.c
new file mode 100644
index 00000000..f16aa1b9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/ccscs.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+#include "cos.h"
+#include "sinh.h"
+#include "cosh.h"
+#include "csc.h"
+#include "floatComplex.h"
+#include "division.h"
+
+floatComplex ccscs(floatComplex z)
+{
+
+ floatComplex out;
+ out = crdivs(FloatComplex(1,0),csins(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcsca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcsca.c
new file mode 100644
index 00000000..b1a3cf3b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcsca.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+
+void dcsca(double* in,int size,double* out)
+{
+ int i = 0;
+ for (i = 0;i<size;++i)
+ {
+ out[i] = dcscs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcscs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcscs.c
new file mode 100644
index 00000000..f9e128c2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/dcscs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+#include <math.h>
+
+double dcscs(double in)
+{
+ double out;
+ out=1/sin(in);
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scsca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scsca.c
new file mode 100644
index 00000000..cea8338f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scsca.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+
+void scsca(float* in,int size,float* out)
+{
+ int i = 0;
+ for (i = 0;i<size;++i)
+ {
+ out[i] = scscs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scscs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scscs.c
new file mode 100644
index 00000000..f0ad15e4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/scscs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+#include <math.h>
+
+float scscs(float in)
+{
+ float out;
+ out=1/sin(in);
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcsca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcsca.c
new file mode 100644
index 00000000..59430925
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcsca.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+#include <math.h>
+
+void zcsca(doubleComplex* in, int size,doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = zcscs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcscs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcscs.c
new file mode 100644
index 00000000..64fce57a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csc/zcscs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+#include "cos.h"
+#include "sinh.h"
+#include "cosh.h"
+#include "csc.h"
+#include "doubleComplex.h"
+#include "division.h"
+
+doubleComplex zcscs(doubleComplex z)
+{
+ double real = zreals(z);
+ double imag = zimags(z);
+ return zrdivs(DoubleComplex(1,0),(DoubleComplex(dsins(real) * dcoshs(imag), dcoss(real) * dsinhs(imag))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscda.c
new file mode 100644
index 00000000..ed13f9e7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscda.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+#include "cscd.h"
+#include <math.h>
+
+void ccscda(floatComplex* in, int size,floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = ccscds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscds.c
new file mode 100644
index 00000000..39b2576a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/ccscds.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+#include "cos.h"
+#include "sinh.h"
+#include "cosh.h"
+#include "csc.h"
+#include "cscd.h"
+#include "floatComplex.h"
+#include "division.h"
+
+floatComplex ccscds(floatComplex z)
+{
+
+ floatComplex out;
+ out = crdivs(FloatComplex(1,0),csins(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscda.c
new file mode 100644
index 00000000..8ca3df94
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscda.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cscd.h"
+#include <math.h>
+
+void dcscda(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=dcscds(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscds.c
new file mode 100644
index 00000000..af4dc30b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/dcscds.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+#include "cscd.h"
+#include <math.h>
+
+double dcscds(double in)
+{
+ double val;
+ val = (M_PI) / 180.0;
+ double out;
+ out=1/sin(in*val);
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscda.c
new file mode 100644
index 00000000..17936628
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscda.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cscd.h"
+
+void scscda(float* in,int size,float* out)
+{
+ int i = 0;
+ for (i = 0;i<size;++i)
+ {
+ out[i] = scscds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscds.c
new file mode 100644
index 00000000..ebf36d2d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/scscds.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+
+#include "cscd.h"
+#include <math.h>
+
+float scscds(float in)
+{
+ float out,val;
+ val=(M_PI)/180.0;
+ out=1/sin(in*val);
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscda.c
new file mode 100644
index 00000000..a8a617c2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscda.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csc.h"
+#include "cscd.h"
+#include <math.h>
+
+void zcscda(doubleComplex* in, int size,doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = zcscds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscds.c
new file mode 100644
index 00000000..47d5dfc1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/cscd/zcscds.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+#include "cos.h"
+#include "sinh.h"
+#include "cosh.h"
+#include "csc.h"
+#include "cscd.h"
+#include "doubleComplex.h"
+#include "division.h"
+
+doubleComplex zcscds(doubleComplex z)
+{
+
+ doubleComplex out;
+ out = zrdivs(DoubleComplex(1,0),zsins(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccscha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccscha.c
new file mode 100644
index 00000000..a95da200
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccscha.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+#include <math.h>
+
+void ccscha(floatComplex* in, int size,floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = ccschs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccschs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccschs.c
new file mode 100644
index 00000000..ddcc733f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/ccschs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+#include "sinh.h"
+#include "sin.h"
+#include <math.h>
+#include "floatComplex.h"
+#include "division.h"
+
+floatComplex ccschs(floatComplex z)
+{
+
+ floatComplex out;
+ out = crdivs(FloatComplex(1,0),csinhs(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcscha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcscha.c
new file mode 100644
index 00000000..32489051
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcscha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+
+void dcscha(double* in, int size, double* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = dcschs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcschs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcschs.c
new file mode 100644
index 00000000..7b1f15ae
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/dcschs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+#include <math.h>
+
+double dcschs(double in)
+{
+ double out;
+ out=1/sinh(in);
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scscha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scscha.c
new file mode 100644
index 00000000..18d5ea79
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scscha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+
+void scscha(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = scschs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scschs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scschs.c
new file mode 100644
index 00000000..ec550850
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/scschs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+#include <math.h>
+
+float scschs(float in)
+{
+ float out;
+ out=1/sinh(in);
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcscha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcscha.c
new file mode 100644
index 00000000..fab5cc43
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcscha.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+#include <math.h>
+
+void zcscha(doubleComplex* in, int size,doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = zcschs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcschs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcschs.c
new file mode 100644
index 00000000..33a4fccd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/csch/zcschs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "csch.h"
+#include "sinh.h"
+#include "sin.h"
+#include <math.h>
+#include "doubleComplex.h"
+#include "division.h"
+
+doubleComplex zcschs(doubleComplex z)
+{
+
+ doubleComplex out;
+ out = zrdivs(DoubleComplex(1,0),zsinhs(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/cseca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/cseca.c
new file mode 100644
index 00000000..fcb9b81a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/cseca.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sec.h"
+#include <math.h>
+
+void cseca(floatComplex* in, int size,floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = csecs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/csecs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/csecs.c
new file mode 100644
index 00000000..c2d9b9ed
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/csecs.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sec.h"
+#include "cos.h"
+#include <math.h>
+#include "floatComplex.h"
+#include "division.h"
+
+floatComplex csecs(floatComplex z)
+{
+
+ floatComplex out;
+ out = crdivs(FloatComplex(1,0),ccoss(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dseca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dseca.c
new file mode 100644
index 00000000..c39f7c6e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dseca.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sec.h"
+#include <math.h>
+
+void dseca(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=1/cos(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dsecs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dsecs.c
new file mode 100644
index 00000000..5278b371
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/dsecs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sec.h"
+
+double dsecs(double in)
+{
+ return (1/cos(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/sseca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/sseca.c
new file mode 100644
index 00000000..0ac7cc62
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/sseca.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sec.h"
+
+void sseca(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = ssecs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/ssecs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/ssecs.c
new file mode 100644
index 00000000..ad480005
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/ssecs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sec.h"
+
+float ssecs(float in)
+{
+ return (1/cos(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zseca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zseca.c
new file mode 100644
index 00000000..dec365d1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zseca.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sec.h"
+#include <math.h>
+
+void zseca(doubleComplex* in, int size,doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = zsecs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zsecs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zsecs.c
new file mode 100644
index 00000000..9629db71
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sec/zsecs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sec.h"
+#include "cos.h"
+#include <math.h>
+#include "doubleComplex.h"
+#include "division.h"
+
+doubleComplex zsecs(doubleComplex z)
+{
+
+ doubleComplex out;
+ out = zrdivs(DoubleComplex(1,0),zcoss(z));
+ return out;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecda.c
new file mode 100644
index 00000000..f9f70f0c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecda.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "secd.h"
+#include <math.h>
+
+void dsecda(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=dsecds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecds.c
new file mode 100644
index 00000000..aa95f29a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/dsecds.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+
+#include <math.h>
+#include "sec.h"
+#include "secd.h"
+
+double dsecds(double in)
+{
+ return (1/cos((M_PI/180.0)*in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecda.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecda.c
new file mode 100644
index 00000000..c1fc5e53
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecda.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sec.h"
+#include "secd.h"
+
+void ssecda(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = ssecds(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecds.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecds.c
new file mode 100644
index 00000000..eaf3a298
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/secd/ssecds.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifdef _WIN32
+ #define _USE_MATH_DEFINES
+#endif
+
+#include <math.h>
+#include "secd.h"
+#include "sec.h"
+
+float ssecds(float in) {
+ return (1/cos((M_PI/180.0)*in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csecha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csecha.c
new file mode 100644
index 00000000..c8d52d82
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csecha.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sech.h"
+#include <math.h>
+
+void csecha(floatComplex* in, int size,floatComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = csechs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csechs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csechs.c
new file mode 100644
index 00000000..e707e8b1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/csechs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sech.h"
+#include "sec.h"
+#include <math.h>
+#include "cos.h"
+#include "cosh.h"
+#include "floatComplex.h"
+#include "division.h"
+
+floatComplex csechs(floatComplex z)
+{
+
+ floatComplex out;
+ out = crdivs(FloatComplex(1,0),ccoshs(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsecha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsecha.c
new file mode 100644
index 00000000..4092c9e8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsecha.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sech.h"
+#include <math.h>
+void dsecha(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=dsechs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsechs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsechs.c
new file mode 100644
index 00000000..fdcfd69c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/dsechs.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sech.h"
+#include "cosh.h"
+#include "cos.h"
+
+
+double dsechs(double in)
+{
+ return (1/cosh(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssecha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssecha.c
new file mode 100644
index 00000000..d7e71b33
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssecha.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sech.h"
+#include <math.h>
+void ssecha(float* in,int size,float* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=ssechs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssechs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssechs.c
new file mode 100644
index 00000000..9fcd50b7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/ssechs.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sech.h"
+#include "cosh.h"
+#include "cos.h"
+
+
+float ssechs(float in)
+{
+ return (1/cosh(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsecha.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsecha.c
new file mode 100644
index 00000000..a3c3189f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsecha.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sech.h"
+#include <math.h>
+
+void zsecha(doubleComplex* in, int size,doubleComplex* out)
+{
+ int i = 0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = zsechs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsechs.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsechs.c
new file mode 100644
index 00000000..d23d2ef4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sech/zsechs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sech.h"
+#include "sec.h"
+#include <math.h>
+#include "cos.h"
+#include "cosh.h"
+#include "doubleComplex.h"
+#include "division.h"
+
+doubleComplex zsechs(doubleComplex z)
+{
+
+ doubleComplex out;
+ out = zrdivs(DoubleComplex(1,0),zcoshs(z));
+ return out;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/Makefile.am b/2.3-1/src/c/elementaryFunctions/acos/Makefile.am
new file mode 100644
index 00000000..24935987
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/Makefile.am
@@ -0,0 +1,73 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAcos_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAcos.la
+
+libAcos_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sacoss.c \
+ dacoss.c \
+ cacoss.c \
+ zacoss.c \
+ sacosa.c \
+ dacosa.c \
+ cacosa.c \
+ zacosa.c
+
+HEAD = ../includes/acos.h \
+ ../../auxiliaryFunctions/includes/min.h \
+ ../../auxiliaryFunctions/includes/max.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/acos/libAcos.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testRealsAcos testCplxAcos
+
+TESTS = testRealsAcos testCplxAcos
+
+#
+# -*- Acosine Tests -*-
+#
+testRealsAcos_SOURCES = testAcos.h testRealsAcos.c
+testRealsAcos_CFLAGS = $(check_INCLUDES)
+testRealsAcos_LDADD = $(check_LDADD)
+
+testCplxAcos_SOURCES = testAcos.h testCplxAcos.c
+testCplxAcos_CFLAGS = $(check_INCLUDES)
+testCplxAcos_LDADD = $(check_LDADD)
+
diff --git a/2.3-1/src/c/elementaryFunctions/acos/Makefile.in b/2.3-1/src/c/elementaryFunctions/acos/Makefile.in
new file mode 100644
index 00000000..504e3d15
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/Makefile.in
@@ -0,0 +1,813 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testRealsAcos$(EXEEXT) testCplxAcos$(EXEEXT)
+TESTS = testRealsAcos$(EXEEXT) testCplxAcos$(EXEEXT)
+subdir = src/c/elementaryFunctions/acos
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAcos_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAcos_la-sacoss.lo libAcos_la-dacoss.lo \
+ libAcos_la-cacoss.lo libAcos_la-zacoss.lo libAcos_la-sacosa.lo \
+ libAcos_la-dacosa.lo libAcos_la-cacosa.lo libAcos_la-zacosa.lo
+am_libAcos_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAcos_la_OBJECTS = $(am_libAcos_la_OBJECTS)
+libAcos_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAcos_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testCplxAcos_OBJECTS = testCplxAcos-testCplxAcos.$(OBJEXT)
+testCplxAcos_OBJECTS = $(am_testCplxAcos_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/acos/libAcos.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testCplxAcos_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testCplxAcos_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testCplxAcos_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testRealsAcos_OBJECTS = testRealsAcos-testRealsAcos.$(OBJEXT)
+testRealsAcos_OBJECTS = $(am_testRealsAcos_OBJECTS)
+testRealsAcos_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testRealsAcos_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testRealsAcos_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAcos_la_SOURCES) $(testCplxAcos_SOURCES) \
+ $(testRealsAcos_SOURCES)
+DIST_SOURCES = $(libAcos_la_SOURCES) $(testCplxAcos_SOURCES) \
+ $(testRealsAcos_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAcos_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAcos.la
+libAcos_la_SOURCES = $(HEAD) $(SRC)
+SRC = sacoss.c \
+ dacoss.c \
+ cacoss.c \
+ zacoss.c \
+ sacosa.c \
+ dacosa.c \
+ cacosa.c \
+ zacosa.c
+
+HEAD = ../includes/acos.h \
+ ../../auxiliaryFunctions/includes/min.h \
+ ../../auxiliaryFunctions/includes/max.h
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/acos/libAcos.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Acosine Tests -*-
+#
+testRealsAcos_SOURCES = testAcos.h testRealsAcos.c
+testRealsAcos_CFLAGS = $(check_INCLUDES)
+testRealsAcos_LDADD = $(check_LDADD)
+testCplxAcos_SOURCES = testAcos.h testCplxAcos.c
+testCplxAcos_CFLAGS = $(check_INCLUDES)
+testCplxAcos_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/acos/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/acos/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAcos.la: $(libAcos_la_OBJECTS) $(libAcos_la_DEPENDENCIES)
+ $(libAcos_la_LINK) -rpath $(pkglibdir) $(libAcos_la_OBJECTS) $(libAcos_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testCplxAcos$(EXEEXT): $(testCplxAcos_OBJECTS) $(testCplxAcos_DEPENDENCIES)
+ @rm -f testCplxAcos$(EXEEXT)
+ $(testCplxAcos_LINK) $(testCplxAcos_OBJECTS) $(testCplxAcos_LDADD) $(LIBS)
+testRealsAcos$(EXEEXT): $(testRealsAcos_OBJECTS) $(testRealsAcos_DEPENDENCIES)
+ @rm -f testRealsAcos$(EXEEXT)
+ $(testRealsAcos_LINK) $(testRealsAcos_OBJECTS) $(testRealsAcos_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-cacosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-cacoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-dacosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-dacoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-sacosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-sacoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-zacosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcos_la-zacoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testCplxAcos-testCplxAcos.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRealsAcos-testRealsAcos.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAcos_la-sacoss.lo: sacoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-sacoss.lo -MD -MP -MF $(DEPDIR)/libAcos_la-sacoss.Tpo -c -o libAcos_la-sacoss.lo `test -f 'sacoss.c' || echo '$(srcdir)/'`sacoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-sacoss.Tpo $(DEPDIR)/libAcos_la-sacoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sacoss.c' object='libAcos_la-sacoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-sacoss.lo `test -f 'sacoss.c' || echo '$(srcdir)/'`sacoss.c
+
+libAcos_la-dacoss.lo: dacoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-dacoss.lo -MD -MP -MF $(DEPDIR)/libAcos_la-dacoss.Tpo -c -o libAcos_la-dacoss.lo `test -f 'dacoss.c' || echo '$(srcdir)/'`dacoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-dacoss.Tpo $(DEPDIR)/libAcos_la-dacoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dacoss.c' object='libAcos_la-dacoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-dacoss.lo `test -f 'dacoss.c' || echo '$(srcdir)/'`dacoss.c
+
+libAcos_la-cacoss.lo: cacoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-cacoss.lo -MD -MP -MF $(DEPDIR)/libAcos_la-cacoss.Tpo -c -o libAcos_la-cacoss.lo `test -f 'cacoss.c' || echo '$(srcdir)/'`cacoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-cacoss.Tpo $(DEPDIR)/libAcos_la-cacoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cacoss.c' object='libAcos_la-cacoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-cacoss.lo `test -f 'cacoss.c' || echo '$(srcdir)/'`cacoss.c
+
+libAcos_la-zacoss.lo: zacoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-zacoss.lo -MD -MP -MF $(DEPDIR)/libAcos_la-zacoss.Tpo -c -o libAcos_la-zacoss.lo `test -f 'zacoss.c' || echo '$(srcdir)/'`zacoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-zacoss.Tpo $(DEPDIR)/libAcos_la-zacoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zacoss.c' object='libAcos_la-zacoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-zacoss.lo `test -f 'zacoss.c' || echo '$(srcdir)/'`zacoss.c
+
+libAcos_la-sacosa.lo: sacosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-sacosa.lo -MD -MP -MF $(DEPDIR)/libAcos_la-sacosa.Tpo -c -o libAcos_la-sacosa.lo `test -f 'sacosa.c' || echo '$(srcdir)/'`sacosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-sacosa.Tpo $(DEPDIR)/libAcos_la-sacosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sacosa.c' object='libAcos_la-sacosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-sacosa.lo `test -f 'sacosa.c' || echo '$(srcdir)/'`sacosa.c
+
+libAcos_la-dacosa.lo: dacosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-dacosa.lo -MD -MP -MF $(DEPDIR)/libAcos_la-dacosa.Tpo -c -o libAcos_la-dacosa.lo `test -f 'dacosa.c' || echo '$(srcdir)/'`dacosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-dacosa.Tpo $(DEPDIR)/libAcos_la-dacosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dacosa.c' object='libAcos_la-dacosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-dacosa.lo `test -f 'dacosa.c' || echo '$(srcdir)/'`dacosa.c
+
+libAcos_la-cacosa.lo: cacosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-cacosa.lo -MD -MP -MF $(DEPDIR)/libAcos_la-cacosa.Tpo -c -o libAcos_la-cacosa.lo `test -f 'cacosa.c' || echo '$(srcdir)/'`cacosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-cacosa.Tpo $(DEPDIR)/libAcos_la-cacosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cacosa.c' object='libAcos_la-cacosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-cacosa.lo `test -f 'cacosa.c' || echo '$(srcdir)/'`cacosa.c
+
+libAcos_la-zacosa.lo: zacosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -MT libAcos_la-zacosa.lo -MD -MP -MF $(DEPDIR)/libAcos_la-zacosa.Tpo -c -o libAcos_la-zacosa.lo `test -f 'zacosa.c' || echo '$(srcdir)/'`zacosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcos_la-zacosa.Tpo $(DEPDIR)/libAcos_la-zacosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zacosa.c' object='libAcos_la-zacosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcos_la_CFLAGS) $(CFLAGS) -c -o libAcos_la-zacosa.lo `test -f 'zacosa.c' || echo '$(srcdir)/'`zacosa.c
+
+testCplxAcos-testCplxAcos.o: testCplxAcos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testCplxAcos_CFLAGS) $(CFLAGS) -MT testCplxAcos-testCplxAcos.o -MD -MP -MF $(DEPDIR)/testCplxAcos-testCplxAcos.Tpo -c -o testCplxAcos-testCplxAcos.o `test -f 'testCplxAcos.c' || echo '$(srcdir)/'`testCplxAcos.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testCplxAcos-testCplxAcos.Tpo $(DEPDIR)/testCplxAcos-testCplxAcos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testCplxAcos.c' object='testCplxAcos-testCplxAcos.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testCplxAcos_CFLAGS) $(CFLAGS) -c -o testCplxAcos-testCplxAcos.o `test -f 'testCplxAcos.c' || echo '$(srcdir)/'`testCplxAcos.c
+
+testCplxAcos-testCplxAcos.obj: testCplxAcos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testCplxAcos_CFLAGS) $(CFLAGS) -MT testCplxAcos-testCplxAcos.obj -MD -MP -MF $(DEPDIR)/testCplxAcos-testCplxAcos.Tpo -c -o testCplxAcos-testCplxAcos.obj `if test -f 'testCplxAcos.c'; then $(CYGPATH_W) 'testCplxAcos.c'; else $(CYGPATH_W) '$(srcdir)/testCplxAcos.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testCplxAcos-testCplxAcos.Tpo $(DEPDIR)/testCplxAcos-testCplxAcos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testCplxAcos.c' object='testCplxAcos-testCplxAcos.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testCplxAcos_CFLAGS) $(CFLAGS) -c -o testCplxAcos-testCplxAcos.obj `if test -f 'testCplxAcos.c'; then $(CYGPATH_W) 'testCplxAcos.c'; else $(CYGPATH_W) '$(srcdir)/testCplxAcos.c'; fi`
+
+testRealsAcos-testRealsAcos.o: testRealsAcos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRealsAcos_CFLAGS) $(CFLAGS) -MT testRealsAcos-testRealsAcos.o -MD -MP -MF $(DEPDIR)/testRealsAcos-testRealsAcos.Tpo -c -o testRealsAcos-testRealsAcos.o `test -f 'testRealsAcos.c' || echo '$(srcdir)/'`testRealsAcos.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testRealsAcos-testRealsAcos.Tpo $(DEPDIR)/testRealsAcos-testRealsAcos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testRealsAcos.c' object='testRealsAcos-testRealsAcos.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRealsAcos_CFLAGS) $(CFLAGS) -c -o testRealsAcos-testRealsAcos.o `test -f 'testRealsAcos.c' || echo '$(srcdir)/'`testRealsAcos.c
+
+testRealsAcos-testRealsAcos.obj: testRealsAcos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRealsAcos_CFLAGS) $(CFLAGS) -MT testRealsAcos-testRealsAcos.obj -MD -MP -MF $(DEPDIR)/testRealsAcos-testRealsAcos.Tpo -c -o testRealsAcos-testRealsAcos.obj `if test -f 'testRealsAcos.c'; then $(CYGPATH_W) 'testRealsAcos.c'; else $(CYGPATH_W) '$(srcdir)/testRealsAcos.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testRealsAcos-testRealsAcos.Tpo $(DEPDIR)/testRealsAcos-testRealsAcos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testRealsAcos.c' object='testRealsAcos-testRealsAcos.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRealsAcos_CFLAGS) $(CFLAGS) -c -o testRealsAcos-testRealsAcos.obj `if test -f 'testRealsAcos.c'; then $(CYGPATH_W) 'testRealsAcos.c'; else $(CYGPATH_W) '$(srcdir)/testRealsAcos.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/acos/cacosa.c b/2.3-1/src/c/elementaryFunctions/acos/cacosa.c
new file mode 100644
index 00000000..da7e2e0f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/cacosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acos.h"
+
+void cacosa(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = cacoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/cacoss.c b/2.3-1/src/c/elementaryFunctions/acos/cacoss.c
new file mode 100644
index 00000000..97420313
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/cacoss.c
@@ -0,0 +1,147 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ * This fonction is a translation of fortran wacos write by Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>
+ * REFERENCE
+ * This is a Fortran-77 translation of an algorithm by
+ * T.E. Hull, T. F. Fairgrieve and P.T.P. Tang which
+ * appears in their article :
+ * "Implementing the Complex Arcsine and Arccosine
+ * Functions Using Exception Handling", ACM, TOMS,
+ * Vol 23, No. 3, Sept 1997, p. 299-335
+ */
+
+#include "acos.h"
+#include "atan.h"
+#include "log.h"
+#include "log1p.h"
+#include "sqrt.h"
+#include "abs.h"
+#include "lapack.h"
+#include "min.h"
+#include "max.h"
+
+#define localSign(x) (x>0 ? 1.0f : -1.0f)
+
+floatComplex cacoss(floatComplex z) {
+ static float sfltPi = 3.1415926535897932384626433f;
+ static float sfltPi_2 = 1.5707963267948966192313216f;
+ static float sfltLn2 = 0.6931471805599453094172321f;
+ static float sfltAcross = 1.5f;
+ static float sfltBcross = 0.6417f;
+
+ float fltLsup = ssqrts((float) getOverflowThreshold())/8.0f;
+ float fltLinf = 4.0f * ssqrts((float) getUnderflowThreshold());
+ float fltEpsm = ssqrts((float) getRelativeMachinePrecision());
+
+ float fltAbsReal = sabss(creals(z));
+ float fltAbsImg = sabss(cimags(z));
+ float fltSignReal = localSign(creals(z));
+ float fltSignImg = localSign(cimags(z));
+
+ float fltR = 0, fltS = 0, fltA = 0, fltB = 0;
+
+ float fltTemp = 0;
+
+ float _pfltReal = 0;
+ float _pfltImg = 0;
+
+ if( min(fltAbsReal, fltAbsImg) > fltLinf && max(fltAbsReal, fltAbsImg) <= fltLsup)
+ {/* we are in the safe region */
+ fltR = ssqrts( (fltAbsReal + 1 )*(fltAbsReal + 1 ) + fltAbsImg*fltAbsImg);
+ fltS = ssqrts( (fltAbsReal - 1 )*(fltAbsReal - 1 ) + fltAbsImg*fltAbsImg);
+ fltA = 0.5f * ( fltR + fltS );
+ fltB = fltAbsReal / fltA;
+
+
+ /* compute the real part */
+ if(fltB <= sfltBcross)
+ _pfltReal = sacoss(fltB);
+ else if( fltAbsReal <= 1)
+ _pfltReal = satans(ssqrts(0.5f * (fltA + fltAbsReal) * (fltAbsImg*fltAbsImg / (fltR + (fltAbsReal + 1)) + (fltS + (1 - fltAbsReal)))) / fltAbsReal);
+ else
+ _pfltReal = satans((fltAbsImg * ssqrts(0.5f * ((fltA + fltAbsReal) / (fltR + (fltAbsReal + 1)) + (fltA + fltAbsReal) / (fltS + (fltAbsReal - 1))))) / fltAbsReal);
+
+ /* compute the imaginary part */
+ if(fltA <= sfltAcross)
+ {
+ float fltImg1 = 0;
+
+ if(fltAbsReal < 1)
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(y**2)/(S+(1.d0-x))) */
+ fltImg1 = 0.5f * (fltAbsImg*fltAbsImg / (fltR + (fltAbsReal + 1)) + fltAbsImg*fltAbsImg / (fltS + (1 - fltAbsReal)));
+ else
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(S+(x-1.d0))) */
+ fltImg1 = 0.5f * (fltAbsImg*fltAbsImg / (fltR + (fltAbsReal + 1)) + (fltS + (fltAbsReal - 1)));
+ /* ai = logp1(Am1 + sqrt(Am1*(A+1.d0))) */
+ fltTemp = fltImg1 + ssqrts(fltImg1 *( fltA + 1));
+ _pfltImg = slog1ps(fltTemp);
+ }
+ else
+ /* ai = log(A + sqrt(A**2 - 1.d0)) */
+ _pfltImg = slogs(fltA + ssqrts(fltA*fltA - 1));
+ }
+ else
+ {/* evaluation in the special regions ... */
+ if(fltAbsImg <= fltEpsm * sabss(fltAbsReal - 1))
+ {
+ if(fltAbsReal < 1)
+ {
+ _pfltReal = sacoss(fltAbsReal);
+ _pfltImg = fltAbsImg / ssqrts((1 + fltAbsReal) * (1 - fltAbsReal));
+ }
+ else
+ {
+ _pfltReal = 0;
+ if(fltAbsReal <= fltLsup)
+ {
+ fltTemp = (fltAbsReal - 1) + ssqrts((fltAbsReal - 1) * (fltAbsReal + 1));
+ _pfltImg = slog1ps(fltTemp);
+ }
+ else
+ _pfltImg = sfltLn2 + slogs(fltAbsReal);
+ }
+ }
+ else if(fltAbsImg < fltLinf)
+ {
+ _pfltReal = ssqrts(fltAbsImg);
+ _pfltImg = _pfltReal;
+ }
+ else if((fltEpsm * fltAbsImg - 1 >= fltAbsReal))
+ {
+ _pfltReal = sfltPi_2;
+ _pfltImg = sfltLn2 + slogs(fltAbsImg);
+ }
+ else if(fltAbsReal > 1)
+ {
+ _pfltReal = satans(fltAbsImg / fltAbsReal);
+ fltTemp = (fltAbsReal / fltAbsImg)*(fltAbsReal / fltAbsImg);
+ _pfltImg = sfltLn2 + slogs(fltAbsImg) + 0.5f * slog1ps(fltTemp);
+ }
+ else
+ {
+ float fltTemp2 = ssqrts(1 + fltAbsImg*fltAbsImg);
+ _pfltReal = sfltPi_2;
+ fltTemp = 2 * fltAbsImg * (fltAbsImg + fltTemp2);
+ _pfltImg = 0.5f * slog1ps(fltTemp);
+ }
+ }
+ if(fltSignReal < 0)
+ _pfltReal = sfltPi - _pfltReal;
+
+ if(fltAbsImg != 0 || fltSignReal < 0)
+ _pfltImg = - fltSignImg * _pfltImg;
+
+ return FloatComplex(_pfltReal, _pfltImg);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/dacosa.c b/2.3-1/src/c/elementaryFunctions/acos/dacosa.c
new file mode 100644
index 00000000..62626a7c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/dacosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acos.h"
+
+void dacosa(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dacoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/dacoss.c b/2.3-1/src/c/elementaryFunctions/acos/dacoss.c
new file mode 100644
index 00000000..1c5eab24
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/dacoss.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acos.h"
+
+double dacoss(double x) {
+ return (acos(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/sacosa.c b/2.3-1/src/c/elementaryFunctions/acos/sacosa.c
new file mode 100644
index 00000000..6035130b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/sacosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acos.h"
+
+void sacosa(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sacoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/sacoss.c b/2.3-1/src/c/elementaryFunctions/acos/sacoss.c
new file mode 100644
index 00000000..733c8afe
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/sacoss.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acos.h"
+
+float sacoss(float x) {
+ return (acosf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/testAcos.h b/2.3-1/src/c/elementaryFunctions/acos/testAcos.h
new file mode 100644
index 00000000..781c9cb9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/testAcos.h
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTACOS_H_
+#define _TESTACOS_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include "acos.h"
+
+void sacossTest(void);
+
+void dacossTest(void);
+
+void cacossTest(void);
+
+void zacossTest(void);
+
+void sacosaTest(void);
+
+void dacosaTest(void);
+
+void cacosaTest(void);
+
+void zacosaTest(void);
+
+int testAcos(void);
+
+#endif /* ! _TESTACOS_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/acos/testCplxAcos.c b/2.3-1/src/c/elementaryFunctions/acos/testCplxAcos.c
new file mode 100644
index 00000000..f1b235db
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/testCplxAcos.c
@@ -0,0 +1,681 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testAcos.h"
+#include <math.h>
+#include <stdio.h>
+#include <assert.h>
+
+
+#define InRF {0.4424391170032322406769f,0.6678683990612626075745f,0.3319660718552768230438f, \
+0.9546736516058444976807f,0.0156700448133051395416f,0.8749210601672530174255f, \
+0.4522444806061685085297f,0.5117330569773912429810f,0.0253186416812241077423f, \
+0.0014351801946759223938f,0.9977079438976943492889f,0.2380047738552093505859f, \
+0.9923671730794012546539f,0.8377430764958262443542f,0.3201149418018758296967f, \
+0.8609968703240156173706f,0.2300571207888424396515f,0.0514277378097176551819f, \
+0.7738713542930781841278f,0.7888738475739955902100f,0.3247241438366472721100f, \
+0.4342710664495825767517f,0.2505763596855103969574f,0.1493970695883035659790f, \
+0.1849924144335091114044f,0.4753739954903721809387f,0.1413027080707252025604f, \
+0.8269120678305625915527f,0.7530783289112150669098f,0.4791984809562563896179f, \
+0.5703613697551190853119f,0.4661327209323644638062f,0.9719535936601459980011f, \
+0.9472813690081238746643f,0.2443005586974322795868f,0.9114723093807697296143f, \
+0.1021176860667765140533f,0.442370138131082057953f,0.7598891309462487697601f, \
+0.0506714452058076858521f,0.9817296904511749744415f,0.6537305163219571113586f, \
+0.7148343580774962902069f,0.5314728766679763793945f,0.3238495090045034885406f, \
+0.8823759732767939567566f,0.4649840756319463253021f,0.3200931679457426071167f, \
+0.6445384477265179157257f,0.6649690875783562660217f,0.87176320655271410942f, \
+0.5702412538230419158936f,0.9155691773630678653717f,0.7551447888836264610291f, \
+0.8835946596227586269379f,0.7714338693767786026001f,0.535495069343596696854f, \
+0.1810054751113057136536f,0.2950546029023826122284f,0.6453578546643257141113f, \
+0.7128289067186415195465f,0.5975380046293139457703f,0.5275121121667325496674f, \
+0.7590293344110250473022f,0.8550809700973331928253f,0.6527025634422898292542f, \
+0.7750031943432986736298f,0.3234997726976871490479f,0.0574064985848963260651f, \
+0.5859434073790907859802f,0.3590891859494149684906f,0.146858902648091316223f, \
+0.2846125257201492786407f,0.7778714792802929878235f,0.6364495265297591686249f, \
+0.2102845311164855957031f,0.3402740904130041599274f,0.46986890118569135666f, \
+0.3029589070938527584076f,0.8358892183750867843628f,0.2167098228819668292999f, \
+0.372365341521799564362f,0.4379987935535609722137f,0.9151138328015804290771f, \
+0.9195669055916368961334f,0.3805362572893500328064f,0.1327533251605927944183f, \
+0.1664179805666208267212f,0.3607654091902077198029f,0.1161730112507939338684f, \
+0.0462395879440009593964f,0.8910173103213310241699f,0.4135520034469664096832f, \
+0.5144748641178011894226f,0.7328222631476819515228f,0.1954176928848028182983f, \
+0.7234130431897938251495f,0.1745128417387604713440f,0.0849626506678760051727f, \
+0.1494962759315967559814f,0.3685970292426645755768f,0.6921154772862792015076f, \
+0.734952067490667104721f,0.8488794136792421340942f,0.9639964443631470203400f, \
+0.6939264284446835517883f,0.7593796211294829845428f,0.8503674715757369995117f, \
+0.3021389641799032688141f,0.7913839695975184440613f,0.5300843580625951290131f, \
+0.9491565059870481491089f,0.1250380431301891803741f,0.1733723590150475502014f, \
+0.0553417871706187725067f,0.7666068188846111297607f,0.1206528753973543643951f, \
+0.0562950810417532920837f,0.6550347781740128993988f,0.1173083875328302383423f, \
+0.7377077308483421802521f,0.7103199632838368415833f,0.3135588350705802440643f, \
+0.6241931691765785217285f,0.9126206659711897373199f,0.2805461687967181205750f, \
+0.5542117445729672908783f,0.5504442807286977767944f,0.3022916098125278949738f, \
+0.1218430632725358009338f,0.1788175995461642742157f,0.3169520534574985504150f, \
+0.1164998249150812625885f,0.8661109572276473045349f,0.7163351974450051784515f, \
+0.6740669626742601394653f,0.1436607432551681995392f,0.9407137231901288032532f, \
+0.9242008137516677379608f,0.9963994324207305908203f,0.0636921771802008152008f, \
+0.7568332878872752189636f,0.1861553504131734371185f,0.6694165151566267014f, \
+0.6417399053461849689484f,0.2864959994331002235413f,0.1503058592788875102997f, \
+0.036585446447134017944f,0.8965126336552202701569f,0.2470208695158362388611f, \
+0.4511714405380189418793f,0.8758140746504068374634f,0.8369763311930000782013f, \
+0.6116396905854344367981f,0.8594635161571204662323f,0.8739381656050682067871f, \
+0.8611579411663115024567f,0.6650390280410647392273f,0.7033504783175885677338f, \
+0.0680055823177099227905f,0.4108084668405354022980f,0.3225740874186158180237f, \
+0.9049567128531634807587f,0.7221073396503925323486f,0.9756754324771463871002f, \
+0.931904456578195095062f,0.4758459976874291896820f,0.6085055340081453323364f, \
+0.0411347192712128162384f,0.27580172289162874222f,0.8152392762713134288788f, \
+0.1618081480264663696289f,0.0729317762888967990875f,0.9948789654299616813660f, \
+0.6547168060205876827240f,0.4749407302588224411011f,0.1327822064049541950226f, \
+0.1489921221509575843811f,0.9931546817533671855927f,0.605664949864149093628f, \
+0.2185817272402346134186f,0.1360632320865988731384f,0.8656457341276109218597f, \
+0.1623940262943506240845f,0.9229755070991814136505f,0.6870755525305867195129f, \
+0.2901548030786216259003f,0.6380550339818000793457f,0.5040368759073317050934f, \
+0.1559905512258410453796f,0.2356583862565457820892f,0.4607480820268392562866f, \
+0.9618054111488163471222f,0.8233367735520005226135f,0.9555186624638736248016f, \
+0.2299523688852787017822f,0.2144343988038599491119f,0.4322205847129225730896f, \
+0.5298418900929391384125f,0.1070291120558977127075f}
+
+#define InIF {0.9676976692862808704376f,0.6755087869241833686829f,0.9605711805634200572968f, \
+0.8287713527679443359375f,0.3716058083809912204742f,0.8529331116005778312683f, \
+0.6630636467598378658295f,0.3127506356686353683472f,0.0578817431814968585968f, \
+.4168665865436196327209f,0.6979019264690577983856f,0.3232105635106563568115f, \
+0.6520457030273973941803f,0.6255217781290411949158f,0.5866900808177888393402f, \
+0.1662572268396615982056f,0.3538595554418861865997f,0.0223209084942936897278f, \
+0.0555838677100837230682f,0.8830965086817741394043f,0.6798805170692503452301f, \
+0.9601878477260470390320f,0.5503053902648389339447f,0.9100682642310857772827f, \
+0.9618742396123707294464f,0.8895119810476899147034f,0.8663921202532947063446f, \
+0.6742273755371570587158f,0.6948372707702219486237f,0.6285339510068297386169f, \
+0.7384302965365350246429f,0.0932216811925172805786f,0.3283788901753723621368f, \
+0.3349032746627926826477f,0.7320226985029876232147f,0.4482167810201644897461f, \
+0.5952123203314840793610f,0.3971578357741236686707f,0.2822407945059239864349f, \
+0.5986177157610654830933f,0.9705053125508129596710f,0.9648752519860863685608f, \
+0.2223112653009593486786f,0.0073375217616558074951f,0.3558401078917086124420f, \
+0.3362461170181632041931f,0.6462869024835526943207f,0.5453626606613397598267f, \
+0.5815327730961143970490f,0.9218191178515553474426f,0.4494518819265067577362f, \
+0.5443653240799903869629f,0.8210619115270674228668f,0.0031680269166827201843f, \
+0.3902114122174680233002f,0.0661126133054494857788f,0.5113567491061985492706f, \
+0.0052305692806839942932f,0.0172157580964267253876f,0.8574225939810276031494f, \
+0.872694595251232385635f,0.5010691648349165916443f,0.3054686388932168483734f, \
+0.9594172257930040359497f,0.6219576788134872913361f,0.6678035454824566841125f, \
+0.3451700019650161266327f,0.439822167158126831055f,0.9729993590153753757477f, \
+0.4124652473255991935730f,0.9270431711338460445404f,0.2170634549111127853394f, \
+0.5178697113879024982452f,0.8865239778533577919006f,0.3678963701240718364716f, \
+0.4449110589921474456787f,0.0826504887081682682037f,0.6078358581289649009705f, \
+0.4201686209999024868011f,0.4264193121343851089478f,0.1516494569368660449982f, \
+0.9087635399773716926575f,0.6092100176028907299042f,0.5259142145514488220215f, \
+0.9537041061557829380035f,0.9292181981727480888367f,0.8420463739894330501556f, \
+0.0477776136249303817749f,0.8043447365052998065948f,0.8733733976259827613831f, \
+0.6313782478682696819305f,0.5507782585918903350830f,0.7975669191218912601471f, \
+0.7488008355721831321716f,0.7785643390379846096039f,0.5666997302323579788208f, \
+0.4409633320756256580353f,0.3067779587581753730774f,0.8593392628245055675507f, \
+0.1920152455568313598633f,0.3279649713076651096344f,0.4025174556300044059753f, \
+0.3560156985186040401459f,0.5213593374937772750854f,0.4409417365677654743195f, \
+0.4940686235204339027405f,0.7799209128133952617645f,0.3915464095771312713623f, \
+0.1789123923517763614655f,0.4986406108364462852478f,0.6278176582418382167816f, \
+0.4048861656337976455688f,0.7036139038391411304474f,0.7250975342467427253723f, \
+0.5160594466142356395721f,0.7005459144711494445801f,0.6976801478303968906403f, \
+0.1013754708692431449890f,0.3362301974557340145111f,0.4427097495645284652710f, \
+0.1286799986846745014191f,0.4155713254585862159729f,0.7760182614438235759735f, \
+0.4942846037447452545166f,0.1127647892571985721588f,0.7894535725936293601990f, \
+0.0490748188458383083344f,0.2449031788855791091919f,0.4716751468367874622345f, \
+0.1031448738649487495422f,0.1776066529564559459686f,0.0619737505912780761719f, \
+0.0768572040833532810211f,0.5897265700623393058777f,0.6714532985351979732513f, \
+0.3335268478840589523315f,0.5744381849654018878937f,0.3185150483623147010803f, \
+0.9473985652439296245575f,0.57160880789160728455f,0.5848113656975328922272f, \
+0.7857599845156073570251f,0.3324664360843598842621f,0.5449722055345773696899f, \
+0.9705804106779396533966f,0.3315144600346684455872f,0.9949513408355414867401f, \
+0.9098131582140922546387f,0.2666130834259092807770f,0.6014269543811678886414f, \
+0.6469328044913709163666f,0.3073055054992437362671f,0.8659543325193226337433f, \
+0.7722052121534943580627f,0.3620244706980884075165f,0.3966818638145923614502f, \
+0.0553487525321543216705f,0.7595019852742552757263f,0.3521075001917779445648f, \
+0.7926115561276674270630f,0.4941224199719727039337f,0.1269726501777768135071f, \
+0.0467983442358672618866f,0.3756254166364669799805f,0.2301741042174398899078f, \
+0.9152546999976038932800f,0.3194008930586278438568f,0.9443374704569578170776f, \
+0.8468258534558117389679f,0.1096191117540001869202f,0.2030929992906749248505f, \
+0.6782134883105754852295f,0.8342829556204378604889f,0.9650435885414481163025f, \
+0.9410973764024674892426f,0.3796364162117242813110f,0.7794532743282616138458f, \
+0.9074576767161488533020f,0.7145868721418082714081f,0.9640186801552772521973f, \
+0.4678759598173201084137f,0.2299097580835223197937f,0.8920741169713437557220f, \
+0.1667113658040761947632f,0.4915095348842442035675f,0.3024059170857071876526f, \
+0.1440355475060641765594f,0.9354602731764316558838f,0.4561293558217585086823f, \
+0.5141706829890608787537f,0.2665198049508035182953f,0.4771588463336229324341f, \
+0.3820844483561813831329f,0.6670796470716595649719f,0.0574905085377395153046f, \
+0.4276479780673980712891f,0.3921637185849249362946f,0.0390139548107981681824f, \
+0.0896534039638936519623f,0.1133126895874738693237f}
+
+#define ResRF {1.255529833022194452496f,1.0200026717383132712769f,1.3324589639215225211899f, \
+0.8677406156444121831939f,1.5561073447625946020167f,0.9286968935379427136922f, \
+1.1937226600193293624130f,1.067915927099262640709f,1.545517326047555650703f, \
+1.5694716389035829884335f,0.7825751983710025339036f,1.3429338762216549429951f, \
+0.7639188473405255086490f,0.8664584310401818312286f,1.2939802433811951054565f, \
+0.5990898407849659657032f,1.3527841901085291276274f,1.5193587499057941148095f, \
+0.6904789613904125378241f,0.9961995980090498914450f,1.3021994564088539281244f, \
+1.26004387047876331707f,1.3507596621653372714889f,1.4603873397973008430029f, \
+1.4376480261770669955013f,1.2185152537606129818926f,1.4640602217743992063959f, \
+0.894854807527207585238f,0.9591997301055474878240f,1.164221222913740527716f, \
+1.1146461656150485897143f,1.0887716288036126677241f,0.5830870294869971992568f, \
+0.6121373513947664379842f,1.3737517861001466989990f,0.7178494362155037888940f, \
+1.4830224178312794158785f,1.15302764511686950399f,0.7870894488597584004452f, \
+1.5273165827155432694440f,0.9046421279509564428167f,1.1098998065332701390417f, \
+0.8178369263058140603562f,1.0104814656927540994502f,1.2625532917342228156343f, \
+0.6793632590344759192291f,1.1798090506359553142346f,1.2887180301097407308930f, \
+1.0105656841969548054294f,1.0915011675220371856199f,0.7542427310988851774098f, \
+1.0653686177891663611206f,0.8900627912448225709241f,0.7149348217487093704037f, \
+0.7102600249699384526991f,0.6960735527765307129044f,1.088533305867128486710f, \
+1.388790211991853373874f,1.2713337729965381583952f,1.088577004770347134155f, \
+1.0451133763707507462470f,1.028861647762511877f,1.0500108990334240388620f, \
+1.0388362590565514143037f,0.8513413455225736781173f,1.0298997364083655181588f, \
+0.7980374938553029817712f,1.272512010082343492101f,1.5296574807566454268226f, \
+1.0155756589776196996411f,1.3087404816635104243261f,1.4268507232054599143112f, \
+1.3171287563927265296115f,1.0046812403038571925862f,0.9520223764784513376114f, \
+1.3780800950311928865233f,1.2249760089920562755594f,1.1679630143718853219070f, \
+1.2895295822531129825705f,0.7757074400337321540277f,1.3549804577387012383127f, \
+1.2966028029732796778006f,1.1956170559024092980849f,0.7573690728750529510549f, \
+0.9358060876311721232312f,1.2935811029700821084276f,1.4692924940131448785507f, \
+1.403798205397557063989f,1.2904936439816625526333f,1.4833304573509458190728f, \
+1.5316962881883187108656f,0.7896852637031629429387f,1.2487229023268595629048f, \
+1.1608910658948932148604f,1.0024005845134518200013f,1.4005673415801471737296f, \
+0.8902696237675791213206f,1.4033814016250207856729f,1.5063701881984010721993f, \
+1.4235075164410782022628f,1.2154417216544426416647f,0.9067832509325496337382f, \
+0.8451361326845713284328f,0.8105760364528488137736f,0.6677149293012821784643f, \
+0.9376824522142382933865f,0.9834531063046333398958f,0.7435234402945338771929f, \
+1.2692770995801996303243f,0.8506643591613352040071f,1.1209388788239313949902f, \
+0.6577834067257107841797f,1.4685347852910790589220f,1.4304586887418837548580f, \
+1.5216097729687187989356f,0.9508172376200363373755f,1.4718437723337385314437f, \
+1.5147598813826532726523f,0.9228342692416234838149f,1.463425399368290413804f, \
+0.7595378867190821781108f,0.8934128848181713822285f,1.3234788454526924539323f, \
+1.0022503118871550764624f,0.4807627355715887174092f,1.3509123886799738745168f, \
+0.9845326329544197285770f,1.0135326383159133367684f,1.2959003688929946473962f, \
+1.4493071459819437674099f,1.393898839191649585700f,1.2489929355782913856f, \
+1.4543809570962817900863f,0.8282434492927793767691f,0.979974070275603015290f, \
+0.9016529084751209177639f,1.4461450567069793482489f,0.6070295384428338048011f, \
+0.9308147234333767894299f,0.7189471755291521049003f,1.5158092773905904593335f, \
+0.9872214614683698652442f,1.3935021592326080064339f,0.9771853998510096062091f, \
+1.1193192900537867195965f,1.296487096062820532083f,1.4643457982927459148925f, \
+1.5437362050733878238162f,0.6187847061723403818689f,1.3588173690830449569233f, \
+1.1915339871130086191187f,0.6686084978144331003591f,0.9583842322663218560308f, \
+1.0912664509894050013372f,0.7181625782359223331142f,0.7233140240221890282513f, \
+0.5428178535441999796873f,1.0471999339904087822362f,0.8769816861755428405445f, \
+1.5175053601847408035752f,1.1993783088315406182289f,1.2453663926230837954989f, \
+0.4514953581289469219939f,0.8662667007384096118372f,0.4974730247398895799371f, \
+0.9147617192703559885203f,1.1061521220724712666339f,1.1357238908175482094975f, \
+1.5394063571165421677733f,1.2932180862175921554069f,0.6824933434976203638911f, \
+1.43686302401783927429f,1.5148015609296603400935f,0.8950325309450218869145f, \
+1.1033723890979516557564f,1.1179316393641773874634f,1.4660961587943455164407f, \
+1.4605422546022659435749f,0.7934640514556516865952f,1.1421515306768439401708f, \
+1.3722266762337298473540f,1.4378608786974975686235f,0.9484918901540384528204f, \
+1.409977666065525436778f,0.7322918733552260528441f,0.8770810468745882104713f, \
+1.2797762559830598849686f,1.113354965599829160539f,1.1052282890851641283803f, \
+1.4319057784002142685864f,1.3414927111991592489915f,1.150175091750528233447f, \
+0.6311676673228704403940f,0.8947310349200747747744f,0.3427408557056949023334f, \
+1.3585307702603606205827f,1.3703718078359574672476f,1.1242902219788122319954f, \
+1.0158255484348914787773f,1.4642540410581941223711f}
+
+#define ResIF {-0.89394934684766447219f,-0.7269960621148598978181f,-0.873228865930417708086f, \
+-0.9411580369058477613109f,-0.3635823360806625381692f,-0.9266296361203899545345f, \
+-0.6634195150572302912551f,-0.3497653794429004814326f,-0.0578679396761476172451f, \
+-0.4056499805826500049122f,-0.8741287625997348209594f,-0.3259826010316183575455f, \
+-0.8401934298465025818814f,-0.7488675904074600930826f,-0.5773032354998757220699f, \
+-0.2907264701768227377343f,-0.3549390003452199127132f,-0.0223486092632642734113f, \
+-0.0871612243254889368371f,-0.9176985409654165870563f,-0.6568925683359604361655f, \
+-0.8873647393225528867688f,-0.5376252047526711708159f,-0.8204495329467825781578f, \
+-0.8603334854615410920431f,-0.8439135541376909799283f,-0.7874200016694758996749f, \
+-0.7820668187587638264802f,-0.7702271668977674901058f,-0.6397730584800335185136f, \
+-0.7501646240735952986256f,-0.1050163064317838901296f,-0.5657338500383883861389f, \
+-0.5540440668540072000070f,-0.6903185807895677594814f,-0.6373808782648936466231f, \
+-0.5666907482042378152443f,-0.4219005724672658108609f,-0.3886193868474250856515f, \
+-0.5681250599967884173935f,-1.0378225966102092581167f,-0.9349807842842002836292f, \
+-0.3001473873644374679159f,-0.0086619472523597629970f,-0.3652645919168465704630f, \
+-0.5124455823851000735303f,-0.6518809665531226649193f,-0.5410207144441225857179f, \
+-0.6415487649665978509006f,-0.9086003711350160161331f,-0.6165709440100644034288f, \
+-0.5877295308593559752808f,-0.9208050182698661600966f,-0.0048324714164703318209f, \
+-0.5674999297524496721934f,-0.1029242691026374945107f,-0.5491640506289516832084f, \
+-0.0053183908272447745144f,-0.0180166547854653871785f,-0.8584065847628071788122f, \
+-0.8876649204332747178370f,-0.5558116272697392057367f,-0.3452541277977640987729f, \
+-0.9592322323801306671598f,-0.7535283497855133072463f,-0.7161931212080890896132f, \
+-0.4651350655885536089507f,-0.4452798781006889750067f,-0.8627422069241995616906f, \
+-0.4680940627922438035391f,-0.8526687741435754475106f,-0.2176103156742132949120f, \
+-0.5122870446551318623918f,-0.9165631260315680872708f,-0.4375389900682862820425f, \
+-0.4390596706521518455268f,-0.0877388848995636905226f,-0.6201939230056620067089f, \
+-0.4244909451374946907087f,-0.5765081340409458077190f,-0.1546339715387441970940f, \
+-0.8412371149638495637646f,-0.6152054338449556292190f,-0.7055085618375696032700f, \
+-1.0060843012853948330587f,-0.8572003556218193986993f,-0.7684942188683597796839f, \
+-0.0484327267220403465120f,-0.7613094946055299905296f,-0.7914662562103550458303f, \
+-0.5959529832580606756309f,-0.7135015962341314521566f,-0.7642115760119819745100f, \
+-0.7454508488281011979737f,-0.8264682151161963918895f,-0.5472791982347332551129f, \
+-0.5406217977943502672744f,-0.3063151633155380415552f,-0.7796913689590335705404f, \
+-0.1929181474134157303624f,-0.3430522750956541133682f,-0.4911328183727812768389f, \
+-0.459568916168811014700f,-0.6685113226304408851064f,-0.6625697799772538587604f, \
+-0.5798078060087921148380f,-0.8360708027394485597483f,-0.5502607336825936501512f, \
+-0.1862858035907569154155f,-0.6223700777366898417853f,-0.6503554622010890851058f, \
+-0.6214803763548166770647f,-0.658644048866955045263f,-0.6789244719569749175747f, \
+-0.4960847336430311282918f,-0.7793968717468962026373f,-0.6535755489490102654315f, \
+-0.1013611882342874415119f,-0.4101097128485187148783f,-0.4317360856761057741338f, \
+-0.1858046514491050738016f,-0.5108140928015871828904f,-0.7329583102689192219970f, \
+-0.5572655332532194805140f,-0.2414852833474282756132f,-0.7396265276752447270781f, \
+-0.0588783609986792688673f,-0.2846992688951475170001f,-0.4723177842872927079121f, \
+-0.1037246805315373693324f,-0.1794574611552203768916f,-0.0652808430937008854489f, \
+-0.0773039499491101622652f,-0.7330187724544895422341f,-0.7392992415079050472215f,\
+-0.4133533124652354895368f,-0.5506738102468112794341f,-0.5328074192235940920170f, \
+-1.0038415897821586497685f,-0.7848345170731062525604f,-0.5565211946593774383629f, \
+-0.8394668443345630892694f,-0.3316478088740031915371f,-0.6174546571080481438543f, \
+-0.9359141759808927707454f,-0.3379222154458279558931f,-0.8818086263290126902703f, \
+-0.8163896696778171202524f,-0.4448261056193882900800f,-0.5818126677407939872921f, \
+-0.6497328441864358428148f,-0.4773967451595543809439f,-0.9219910445529124753961f, \
+-0.7866824847635498496601f,-0.5256445971902782288154f,-0.5682526122395586964942f, \
+-0.1069466527081457118964f,-0.7916702346016932789752f,-0.4433240253515259299277f, \
+-0.7277712730096503879196f,-0.508130072062960125301f,-0.1336083189147964367383f,\
+-0.1070544087071799849165f,-0.4749428955148710107537f,-0.4653576600823912667870f, \
+-0.9868535311953914312966f,-0.3500843154048065564155f,-0.9103124176740465811619f, \
+-0.7691355099915161419588f,-0.1137367567447675059666f,-0.3166772504537387900037f, \
+-0.6397920481545310567029f,-0.7602207727265776204817f,-1.0393654015282784985885f, \
+-0.9191682984673771317219f,-0.4105629424946563021948f,-0.7199249389558314282667f, \
+-0.8184995123883722634162f,-0.8831578283865785250484f,-0.9231074927684407294137f, \
+-0.4607753273118053716217f,-0.2299250742000491787298f,-0.9489247717923485758718f, \
+-0.1680978688129062259549f,-0.6812321574150533853853f,-0.3838159223290327215494f, \
+-0.1497969931648169827909f,-0.9112200478501172318246f,-0.4905472078299850102745f, \
+-0.4982920949193456183757f,-0.2703771635876200951643f,-0.501441786599973071681f,\
+-0.6091306446866900925485f,-0.7751834725402599879374f,-0.1702436202720564450974f, \
+-0.4245933471268953929290f,-0.3901971933403464709578f,-0.0432410994613097177108f, \
+-0.1052903868471218307157f,-0.1137136398834104750177f}
+
+
+
+#define InRD {0.9181839306838810443878,0.0884356433525681495667,0.4926414485089480876923, \
+0.8834870792925357818604,0.6802056566812098026276,0.0268530314788222312927, \
+0.7203164598904550075531,0.4598560053855180740356,0.4730282914824783802032, \
+0.0919386046007275581360,0.7707213866524398326874,0.2658544182777404785156, \
+0.0074534364975988864899,0.9752697972580790519714,0.7235199823044240474701, \
+0.5191026907414197921753,0.6986512844450771808624,0.0405965903773903846741, \
+0.1825077752582728862762,0.3346745036542415618896,0.7407455802895128726959, \
+0.2895397534593939781189,0.1539079672656953334808,0.2327872756868600845337, \
+0.249757957179099321365,0.1534609617665410041809,0.8524017068557441234589, \
+0.1445394679903984069824,0.5686616473831236362457,0.3302547885105013847351, \
+0.2786427377723157405853,0.8844447638839483261108,0.3282945682294666767120, \
+0.3848125720396637916565,0.9120064224116504192352,0.5585131235420703887939, \
+0.3578817830421030521393,0.3319081580266356468201,0.3623231402598321437836, \
+0.8766287136822938919067,0.0389173370786011219025,0.9202555166557431221008, \
+0.3243460613302886486053,0.8379747122526168823242,0.1961554684676229953766, \
+0.836488234810531139374,0.6787032946012914180756,0.7582549881190061569214, \
+0.1194611941464245319366,0.5478108832612633705139,0.0830844114534556865692, \
+0.1074626557528972625732,0.8102702707983553409576,0.0020722588524222373962, \
+0.8974113441072404384613,0.1269455049186944961548,0.0464085307903587818146, \
+0.9040105016902089118958,0.7867436590604484081268,0.6945183053612709045410, \
+0.3590205931104719638824,0.7864200873300433158875,0.8456682055257260799408, \
+0.4063719864934682846069,0.5153579493053257465363,0.5949906939640641212463, \
+0.5879231388680636882782,0.3445296920835971832275,0.6011764244176447391510, \
+0.0055679446086287498474,0.6450063190422952175140,0.4985997099429368972778, \
+0.2964930129237473011017,0.1925860242918133735657,0.5175180840305984020233, \
+0.3105752766132354736328,0.4384520896710455417633,0.2674221722409129142761, \
+0.2229883982799947261810,0.3114312570542097091675,0.465050995815545320511, \
+0.1054230490699410438538,0.1839383761398494243622,0.3182676993310451507568, \
+0.8334749997593462467194,0.7803529789671301841736,0.1999261802993714809418, \
+0.1607502643018960952759,0.0067916330881416797638,0.3250140668824315071106, \
+0.8473272952251136302948,0.4055975303053855895996,0.1027544015087187290192, \
+0.0367881907150149345398,0.1505991755984723567963,0.0478651728481054306030, \
+0.7984658707864582538605,0.0468508685007691383362,0.8687802697531878948212, \
+0.6377770192921161651611,0.5846501276828348636627,0.3718070005998015403748, \
+0.2409734181128442287445,0.8118529785424470901489,0.9632846158929169178009, \
+0.1664984868839383125305,0.5345636266283690929413,0.6970838457345962524414, \
+0.6823413469828665256500,0.3967337189242243766785,0.2399202152155339717865, \
+0.1569029819220304489136,0.6013874863274395465851,0.6506889471784234046936, \
+0.2553333411924540996552,0.3477048687636852264404,0.2817953140474855899811, \
+0.3077315231785178184509,0.9059348977170884609222,0.5546605382114648818970, \
+0.8953115609474480152130,0.7834150167182087898254,0.1403537872247397899628, \
+0.7755798771977424621582,0.5447361194528639316559,0.0693962080404162406921, \
+0.7488555698655545711517,0.0215708073228597640991,0.5904601295478641986847, \
+0.2870239550247788429260,0.9467164869420230388641,0.8032453395426273345947, \
+0.0766134397126734256744,0.4733499353751540184021,0.1665818593464791774750, \
+0.7712225038558244705200,0.8505714428611099720001,0.3183112638071179389954, \
+0.4035588609986007213593,0.9796781539916992187500,0.4695712872780859470367, \
+0.0718349842354655265808,0.9567936672829091548920,0.7416916470974683761597, \
+0.4881874625571072101593,0.3396144369617104530334,0.9112829784862697124481, \
+0.5451393984258174896240,0.2204167605377733707428,0.9863075008615851402283, \
+0.2036699182353913784027,0.9978853110224008560181,0.5701226112432777881622, \
+0.8649067105725407600403,0.6157743069343268871307,0.2710180804133415222168, \
+0.0235887938179075717926,0.5910312486812472343445,0.5396073102019727230072, \
+0.0088853742927312850952,0.3979325224645435810089,0.0808908129110932350159, \
+0.8576204623095691204071,0.1746748872101306915283,0.4391269073821604251862, \
+0.0716713583096861839294,0.7819390646182000637054,0.8002922702580690383911, \
+0.8633827907033264636993,0.3430927144363522529602,0.9963299590162932872772, \
+0.1092859357595443725586,0.9356399574317038059235,0.8588880775496363639832, \
+0.9446536763571202754974,0.9815687369555234909058,0.1789177213795483112335, \
+0.5469553777948021888733,0.6095509598962962627411,0.2286865226924419403076, \
+0.3082748861052095890045,0.9369305213913321495056,0.6251136637292802333832, \
+0.6483835671097040176392,0.9831290808506309986115,0.3739325078204274177551, \
+0.0672900262288749217987,0.327214874327182769775,0.4716854714788496494293, \
+0.0272304220125079154968,0.7657743184827268123627,0.1599553581327199935913, \
+0.8212248464114964008331,0.4125823015347123146057,0.4811308677308261394501, \
+0.0545558966696262359619,0.6280010775662958621979,0.6469958787783980369568, \
+0.7909024558030068874359,0.7913962621241807937622}
+
+
+#define InID {0.0004979562945663928986,0.1546611981466412544250,0.0284530925564467906952, \
+0.0055849254131317138672,0.8097954043187201023102,0.0428051082417368888855, \
+0.1182951643131673336029,0.2610557358711957931519,0.8207950596697628498077, \
+0.8662176290526986122131,0.6516509572975337505341,0.6852114759385585784912, \
+0.7980552376247942447662,0.9992001941427588462830,0.0459985560737550258636, \
+0.1328642908483743667603,0.1799852666445076465607,0.3336857678368687629700, \
+0.1323521169833838939667,0.3482229933142662048340,0.4151491993106901645660, \
+0.5222808374091982841492,0.0140265165828168392181,0.0936772432178258895874, \
+0.554428898263722658157,0.4849792802706360816956,0.5406363750807940959930, \
+0.7141286022961139678955,0.1927964971400797367096,0.3982981061562895774841, \
+0.2410794547758996486664,0.1056184638291597366333,0.3544462365098297595978, \
+0.8855850743129849433899,0.0592544334940612316132,0.5570028573274612426758, \
+0.4150356748141348361969,0.6272481856867671012878,0.7362630530260503292084, \
+0.4334241282194852828979,0.6547862743027508258820,0.1096570501103997230530, \
+0.1828466425649821758270,0.1703294925391674041748,0.5361933619715273380280, \
+0.7314661284908652305603,0.6858070171438157558441,0.5467864666134119033813, \
+0.3000954654999077320099,0.9861098499968647956848,0.2921617510728538036346, \
+0.7068451717495918273926,0.9738530241884291172028,0.9392196042463183403015, \
+0.2147838263772428035736,0.8976975139230489730835,0.3853864748962223529816, \
+0.7197126084938645362854,0.6032756562344729900360,0.3933832384645938873291, \
+0.2768237129785120487213,0.2433026498183608055115,0.5238274834118783473969, \
+0.5727928597480058670044,0.1115069282241165637970,0.8871827023103833198547, \
+0.4918101537041366100311,0.620717465877532958984,0.6681088157929480075836, \
+0.3346294192597270011902,0.4008522643707692623138,0.8206953983753919601440, \
+0.0156081621535122394562,0.3082795003429055213928,0.1921516875736415386200, \
+0.9084058068692684173584,0.9628748060204088687897,0.4108279338106513023376, \
+0.1077714688144624233246,0.4543590787798166275024,0.5766139742918312549591, \
+0.7918981136754155158997,0.8716701003722846508026,0.7446341440081596374512, \
+0.8614199929870665073395,0.8598338318988680839539,0.6422161697410047054291, \
+0.1284126546233892440796,0.1956893731839954853058,0.7571631455793976783752, \
+0.0799373830668628215790,0.3010600395500659942627,0.61714327195659279823, \
+0.8184841191396117210388,0.3742539635859429836273,0.4915034342557191848755, \
+0.5517093283124268054962,0.7295224415138363838196,0.5729464250616729259491, \
+0.0226564854383468627930,0.0795128741301596164703,0.6061109183356165885925, \
+0.0581077202223241329193,0.2136410307139158248901,0.3317275200970470905304, \
+0.7118408391252160072327,0.5123297641985118389130,0.0925556533038616180420, \
+0.1120351166464388370514,0.0331352194771170616150,0.2188743329606950283051, \
+0.8885411117225885391235,0.3364450898952782154083,0.4304939182475209236145, \
+0.0395783367566764354706,0.7718926444649696350098,0.3852231525816023349762, \
+0.584660629741847515106,0.9142434685491025447845,0.8109691496938467025757, \
+0.9606793900020420551300,0.4564617509022355079651,0.2252602274529635906219, \
+0.6146492399275302886963,0.5445657209493219852448,0.4790671234950423240662, \
+0.8712163171730935573578,0.6290841717272996902466,0.0488327336497604846954, \
+0.2014226512983441352844,0.3932394194416701793671,0.5574976503849029541016, \
+0.7534958967007696628571,0.6016047922894358634949,0.9978243424557149410248, \
+0.871782509610056877136,0.1253611450083553791046,0.7888469258323311805725, \
+0.8198945443145930767059,0.8846442662179470062256,0.6113598407246172428131, \
+0.3129875948652625083923,0.2698480314575135707855,0.3510415498167276382446, \
+0.0002431091852486133575,0.8000906230881810188293,0.8083376321010291576385, \
+0.0676734074950218200684,0.4463855498470366001129,0.1329871071502566337585, \
+0.9925356446765363216400,0.4392634835094213485718,0.7494483222253620624542, \
+0.8954892838373780250549,0.1376328612677752971649,0.4803910739719867706299, \
+0.9836516068316996097565,0.2990262722596526145935,0.4373219660483300685883, \
+0.2216190565377473831177,0.0704064411111176013947,0.3104516910389065742493, \
+0.8870153087191283702850,0.9886686950922012329102,0.3880559303797781467438, \
+0.1997731504961848258972,0.8535470529459416866302,0.5233913194388151168823, \
+0.0124758337624371051788,0.2265536198392510414124,0.6351096997968852519989, \
+0.4152868799865245819092,0.6822845251299440860748,0.6837346693500876426697, \
+0.8551749861799180507660,0.8123193774372339248657,0.0824123290367424488068, \
+0.0176315875723958015442,0.0341491582803428173065,0.8797791674733161926270, \
+0.5397802316583693027496,0.2428503734990954399109,0.1825126199983060359955, \
+0.9759421404451131820679,0.7248379667289555072784,0.3708766037598252296448, \
+0.7591939563862979412079,0.0132757760584354400635,0.4527114764787256717682, \
+0.0710861748084425926208,0.8389283320866525173187,0.9739420730620622634888, \
+0.1777097475714981555939,0.2829279201105237007141,0.8323502647690474987030, \
+0.0483473539352416992188,0.2749410220421850681305,0.9980281023308634757996, \
+0.6025707735680043697357,0.3654889445751905441284}
+
+#define ResRD {0.4073265521222889096187,1.4832960157658940936187,1.0559760538030802390352, \
+0.4876757408319799536,1.0503603238676473274893,1.543964660923583975816, \
+0.7807960353449081569721,1.113475122068019684818,1.2074148700721019089599, \
+1.5013200231227292746894,0.9297840505433454527662,1.3514532021448848464473, \
+1.5649706537079166590587,0.9184476769025181619455,0.7642136963785024494911, \
+1.0321272581534788326252,0.8249731824697179582984,1.5322804352205618982907, \
+1.3889179161647142723979,1.2511777469647082927651,0.8631362880453896657684, \
+1.3132001390852299227419,1.4162898618562522745634,1.336955652419456130886, \
+1.3518798690760625014207,1.432530814961507692473,0.8166991767829372417253, \
+1.4531763459288651318957,0.9836350291388685773697,1.2611871109235879284682, \
+1.2970941054870110953345,0.5247972514595955484396,1.2580817851890182534902, \
+1.284150657350121349509,0.4431164578699607337064,1.0790628231962844374436, \
+1.2369697766373111136318,1.2891801931155641991467,1.279426005626910445301, \
+0.7411469003274002709247,1.5382371539791293013621,0.4648284998100537523946, \
+1.2466755478200817197632,0.6344745057664578080647,1.3976472343104680007286, \
+0.9101343728052767589887,1.0145238645542766775520,0.8998398574208711364619, \
+1.4561881086142904884184,1.18618251793282958317,1.4909812525527503801470, \
+1.483042965312622918361,1.0101711671842434903112,1.5692858337560215975515, \
+0.581296448133323040430,1.4763786358343300442186,1.5274840435675274274985, \
+0.8570040265906480048130,0.8982361671454072160614,0.9010874927564332947938, \
+1.2192362807008756409033,0.7383467259694986850604,0.8144931489593250084624, \
+1.2166243834118397604271,1.03436100179767165308,1.131906113417643577890, \
+1.0351962467792186206594,1.2775309074990219837531,1.071918673883956119042, \
+1.565516150270076733975,0.9534817223618026194032,1.18808795707930903163, \
+1.2698193301194886650762,1.3859852741821954147383,1.0412417743580970608264, \
+1.3416868735639895238165,1.2575402806037097036551,1.3220218864013655313272, \
+1.3473014979095856435976,1.285468609148218810390,1.1658747858778166772709, \
+1.488164159422029397817,1.4322756049582612281057,1.3158102253315304697168, \
+0.9591789810942366045765,0.9946060566652682455313,1.4024848311652073906686, \
+1.4107060249666192319751,1.5641310708030540244096,1.3120464909736666569984, \
+0.5765266085251754546448,1.174948768778458774165,1.4833345055395814604537, \
+1.542328840440976067683,1.4294563291509121416567,1.5278339217974101771347, \
+0.8672708709861330911295,1.5329472698613195724704,0.8183477500293765416473, \
+0.8795454275343114192154,0.9497631085851768739658,1.2520159281840994580648, \
+1.3278713297298554429915,0.6921693745176561440857,0.5940515258646017482391, \
+1.4351615904003474089023,1.0896179081737702443178,0.8073262505844599479232, \
+0.8303525589696477693380,1.1631217540254512599063,1.3345425852020198487224, \
+1.4535942378139874442411,0.9795882485013941431973,0.9572655323242533764727, \
+1.3128248243665050498663,1.2961023348938622845594,1.3059941497461620141252, \
+1.304483982989253165741,0.9305437394849996879387,1.1438076057366068916110, \
+0.9529804506540070496712,0.8395036014732552009932,1.4335056151860767759132, \
+0.9118181357873784698143,1.088227104950570067743,1.5081933427510285650186, \
+1.0197527081918582592124,1.5525377607896333476134,0.9404998007389445691118, \
+1.286060244811547681465,0.6524446466111782916286,0.8656706311155134558888, \
+1.5096117736353744653854,1.1637012525123178185993,1.4530145530183353752562, \
+1.0046068631631419609818,0.5919009089776723353538,1.3213581010685828687201, \
+1.2600188980179465314535,0.8740394919467842083094,1.1689296619753437589395, \
+1.5022014467298512307991,0.5528837279866596343680,0.8359949109724567062329, \
+1.0607846432300507277802,1.3062568171740265299263,0.8879559287204453754683, \
+0.9963420783593853746751,1.3688496242545662440193,0.3803570908643706949270, \
+1.4264926442838912201694,0.6382023556059207569646,1.117517041236663288828, \
+0.9501387596985741978983,0.9188351614160777947049,1.3254743353137110606355, \
+1.55398001104990246546,0.9810746826810110565731,1.0669910119329548692235, \
+1.5621213392572059763808,1.162804162098360238886,1.4934861287145768660167, \
+0.9519686104540553417408,1.4467374415079707894449,1.154639180917391483305, \
+1.500462431806032004289,0.9915094174043252994721,0.8535439676775620210236, \
+0.5293817691790781987393,1.23068211775509039896,0.7526195369457671091595, \
+1.4697720678086412249286,0.8182121412746224953239,0.8746692343808056824273, \
+0.8844573970963010012269,0.8439197222579799539943,1.391544468064010775521, \
+0.9922180869468192332405,0.9160137371548995322001,1.3993728411492449836828, \
+1.2985217508033519706601,0.5536816066461542895638,0.9157598470345392760450, \
+1.1161566883090805468726,0.8048708844349877766788,1.2156607775224024248217, \
+1.5172042703120385276350,1.2374758085060872936367,1.1351487844726630971337, \
+1.5436311555741579759626,0.9980288444492946275943,1.4563247763642750420843, \
+0.6617790067192217406955,1.1654713730545154248830,1.2035174317997594517493, \
+1.5162772650111728811595,0.9344765112644882742998,1.1223294698972574590101, \
+0.8945516347671441659273,0.7901547616106909810441}
+
+#define ResID {-0.0012569697886744767793,-0.1546381133029076926366,-0.0326845596217153130936, \
+-0.0119187043920920034135,-0.8334668693395566041460,-0.0428074462389216731095, \
+-0.1672885154101033944318,-0.2869984863074300229790,-0.7925278559645111409182, \
+-0.7851274769100758943452,-0.7428250726131904180249,-0.6543302407510473983621, \
+-0.7311595163178985501418,-1.052203053002093824375,-0.0664259655312470775890, \
+-0.1541712629474439599786,-0.2426466544194012253666,-0.3280193987403173250250, \
+-0.1341688909762420167660,-0.3590358673724926563686,-0.5222636224036150132122, \
+-0.5167890418406643204818,-0.0141951437273657391641,-0.0961499124903888030547, \
+-0.5411789866531571124852,-0.4719374206382114245173,-0.6865145475966729637918, \
+-0.6682412786135066840032,-0.229561178131867382746,-0.4068630429518135804834, \
+-0.2478546467124292662643,-0.2092687177409224830171,-0.3643943961998056257912, \
+-0.8260533990387732838911,-0.1377643146197947143783,-0.5959599853289488935459, \
+-0.4262600844346774997540,-0.6137130366455740837495,-0.7080093721711945287112, \
+-0.6044893440702200360093,-0.6155234120386735563457,-0.2422467665254410262854, \
+-0.1917136851747310299920,-0.2835381480340813942220,-0.5205087419896101685879, \
+-0.8283554785369232620340,-0.7385639097367507899250,-0.6511255066138333935655, \
+-0.2976620683491659202780,-0.9257955504050334738508,-0.2890528438121037768660, \
+-0.6604934892243505828446,-0.9834822614680237551354,-0.8377366271338905212573, \
+-0.3818062735980304323036,-0.8101402379111779517018,-0.3767706089539061276028, \
+-0.8471279280465069394523,-0.7100416511121218077207,-0.4827879396812622680990, \
+-0.2907446603933081519244,-0.3540413099584073797210,-0.6691029908570297335402, \
+-0.5779752710357292100340,-0.1293680641651104301637,-0.8672105047323137583248, \
+-0.5445780680276932628203,-0.6098830976698420558435,-0.701796561463252421831, \
+-0.3286839097690721356315,-0.4736684460520745321155,-0.7974492297316398969897, \
+-0.0163420882574338011128,-0.3086940489965586675858,-0.2208475495159677448598, \
+-0.8330345833509705810727,-0.8899247395553587791639,-0.4121122816452804649145, \
+-0.110296470108896760287,-0.4573875737589336853972,-0.5921314598231492976055, \
+-0.7284533656063938433789,-0.7940022333816690869313,-0.7086861369245996966626, \
+-0.9177754728271111384075,-0.8992125494626673765097,-0.6124156802640610131050, \
+-0.1297119059766182191940,-0.1944657181402436596507,-0.7195246660784752057438, \
+-0.1461225286840270864985,-0.3207633116621479985042,-0.5854835047639634915129, \
+-0.7472936554211552229177,-0.3695542509299474809303,-0.4740067448468703315001, \
+-0.6718044057588442585782,-0.67710691385219745619,-0.7207858066458165957613, \
+-0.0294026163397106028718,-0.0976133299331403969656,-0.6013612638349056238596, \
+-0.0598297565651504936746,-0.328794773496815184721,-0.5625239033097394480976, \
+-0.6677071141299576462202,-0.5498312284204850408642,-0.1277672590472646030335, \
+-0.1511975528780685473773,-0.0360853980890413067462,-0.2232684445667622585852, \
+-0.8049065446736692885921,-0.3948819631358797543896,-0.5048059213328937033793, \
+-0.0409214035081632079849,-0.7341976462547471493636,-0.3892323418939396262317, \
+-0.5739837580671862671267,-0.9770097106672435138819,-0.8021342946497018733254, \
+-1.0021601470891579044320,-0.5801678547205166847078,-0.2254843767325802050827, \
+-0.7149457311090813282917,-0.5814477978791194878738,-0.4632588121589609753137, \
+-0.8972503262100923748790,-0.5936926452425980160754,-0.0604108143246592510511, \
+-0.2083620749723606169201,-0.6092960412140594472774,-0.6787459939901434591292, \
+-0.6970693351773428192431,-0.6155344865687581989988,-0.8847535831035618913987, \
+-0.9045009940161035100203,-0.2228370896879496854126,-0.7435945044006587734131, \
+-0.7797072997435431362945,-0.9858551830709869623348,-0.6231594490146994402835, \
+-0.3087944685075739159608,-0.4935703580252177591348,-0.4570457045425700415286, \
+-0.0002785589239395412880,-0.7550970319205865255441,-0.9107367125371321758820, \
+-0.0805255675456537367563,-0.4411921852011919109593,-0.3509629581295168887500, \
+-0.8834651688371163436031,-0.6829765945613543998149,-0.7587154857028519661100, \
+-0.9508788895131682350481,-0.1722922072289033157411,-0.4769308753189193672561, \
+-0.8698653140140508721601,-0.3524550030910831299735,-0.48064598279368742073, \
+-0.2198520225955942486440,-0.0766272000705114642027,-0.3065575707631173485446, \
+-0.9428944463643879059234,-0.8787732160663290770231,-0.4124717822835545222304, \
+-0.198953189056428669801,-0.8954090767834280706339,-0.6481614554957403351310, \
+-0.0247021173339000768565,-0.2380648741688522473936,-0.8303628800121001241052, \
+-0.4061558941427557689607,-0.8344614350167003369307,-0.8022035151889936877012, \
+-0.9540346088196560714323,-0.9416233317955250425868,-0.0836566823356919425647, \
+-0.0210575991644249005397,-0.0430401703581563405132,-0.8035548300562509460576, \
+-0.5345951582358715592491,-0.4468307121957418859282,-0.2281623925724436396933, \
+-0.9410916791444350337770,-0.8853872018362433093941,-0.3859095350986695427409, \
+-0.7013552814699581805513,-0.0140485558911140305527,-0.4806326207619357471224, \
+-0.0710526121402196841892,-0.8801311527599792183807,-0.8674163434334025701844, \
+-0.2852979580229001999037,-0.3032063540671979806618,-0.8027805094234632399264, \
+-0.0484003958010784038346,-0.3355136589916887235319,-0.9554164532781582730436, \
+-0.7111271555138466426982,-0.4940883791858934337426}
+
+
+
+
+
+
+void cacossTest(void){
+ int i=0;
+ float tInR[]=InRF;
+ float tInI[]=InIF;
+ float tResR[]=ResRF;
+ float tResI[]=ResIF;
+ floatComplex tIn[200];
+ floatComplex tRes[200];
+ floatComplex out[200];
+
+ for (i=0;i<200;i++){
+ tIn[i]=FloatComplex(tInR[i],tInI[i]);
+ tRes[i]=FloatComplex(tResR[i],tResI[i]);
+ out[i]=cacoss(tIn[i]);
+ }
+
+
+ for (i=0;i<200;i++){
+ assert ( ( fabs(creals(out[i]) - creals(tRes[i])) / fabs(creals(out[i])) ) < 1e-6);
+ assert ( ( fabs(cimags(out[i]) - cimags(tRes[i])) / fabs(cimags(out[i])) ) < 1e-6);
+ }
+}
+
+
+
+void zacossTest(void){
+ int i=0;
+ double tInR[]=InRD;
+ double tInI[]=InID;
+ double tResR[]=ResRD;
+ double tResI[]=ResID;
+ doubleComplex tIn[200];
+ doubleComplex tRes[200];
+ doubleComplex out[200];
+
+ for (i=0;i<200;i++){
+ tIn[i]=DoubleComplex(tInR[i],tInI[i]);
+ tRes[i]=DoubleComplex(tResR[i],tResI[i]);
+ out[i]=zacoss(tIn[i]);
+ }
+
+
+ for (i=0;i<200;i++){
+ assert ( ( fabs(zreals(out[i]) - zreals(tRes[i])) / fabs(zreals(out[i])) ) < 3e-15);
+ assert ( ( fabs(zimags(out[i]) - zimags(tRes[i])) / fabs(zimags(out[i])) ) < 3e-15);
+ }
+
+ out[0]=zacoss(DoubleComplex(0.2,0.1));
+ printf ("%1.20f + %1.20f *i\n",zreals(out[0]),zimags(out[0]));
+ assert ( ( fabs(zreals(out[0]) - 1.3704927556955963652285) / fabs(zreals(out[0])) ) < 3e-16);
+ assert ( ( fabs(zimags(out[0]) - (- 0.1018639159801242727310)) / fabs(zimags(out[0])) ) < 3e-16);
+}
+
+
+void cacosaTest(void){
+ int i=0;
+ float tInR[]=InRF;
+ float tInI[]=InIF;
+ float tResR[]=ResRF;
+ float tResI[]=ResIF;
+ floatComplex tIn[200];
+ floatComplex tRes[200];
+ floatComplex out[200];
+
+ for (i=0;i<200;i++){
+ tIn[i]=FloatComplex(tInR[i],tInI[i]);
+ tRes[i]=FloatComplex(tResR[i],tResI[i]);
+ }
+ cacosa(tIn,200,out);
+ for (i=0;i<200;i++){
+ assert ( ( fabs(creals(out[i]) - creals(tRes[i])) / fabs(creals(out[i])) ) < 1e-6);
+ assert ( ( fabs(cimags(out[i]) - cimags(tRes[i])) / fabs(cimags(out[i])) ) < 1e-6);
+ }
+}
+
+
+void zacosaTest(void){
+ int i=0;
+ double tInR[]=InRD;
+ double tInI[]=InID;
+ double tResR[]=ResRD;
+ double tResI[]=ResID;
+ doubleComplex tIn[200];
+ doubleComplex tRes[200];
+ doubleComplex out[200];
+
+ for (i=0;i<200;i++){
+ tIn[i]=DoubleComplex(tInR[i],tInI[i]);
+ tRes[i]=DoubleComplex(tResR[i],tResI[i]);
+ }
+ zacosa(tIn,200,out);
+ for (i=0;i<200;i++){
+ assert ( ( fabs(zreals(out[i]) - zreals(tRes[i])) / fabs(zreals(out[i])) ) < 3e-15);
+ assert ( ( fabs(zimags(out[i]) - zimags(tRes[i])) / fabs(zimags(out[i])) ) < 3e-15);
+ }
+}
+
+
+int testAcos(void) {
+ printf("\n>>>> Complex ArcCosine Tests\n");
+ cacossTest();
+ zacossTest();
+ cacosaTest();
+ zacosaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testAcos() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/testRealsAcos.c b/2.3-1/src/c/elementaryFunctions/acos/testRealsAcos.c
new file mode 100644
index 00000000..0609a7c2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/testRealsAcos.c
@@ -0,0 +1,647 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testAcos.h"
+#include <math.h>
+#include <stdio.h>
+#include <assert.h>
+
+
+#define InRF {0.2146485899575054645538f,0.0151845822110772132874f,0.0480025182478129863739f, \
+0.2151292376220226287842f,0.3335768491961061954498f,0.4239571234211325645447f, \
+0.8191771185956895351410f,0.1142293009907007217407f,0.2984248069114983081818f, \
+0.7708469005301594734192f,0.9841971280984580516815f,0.4902752116322517395020f, \
+0.1607228242792189121246f,0.4278817875310778617859f,0.3875273256562650203705f, \
+0.9808397348970174789429f,0.9092800100333988666534f,0.482719236053526401520f, \
+0.665830671321600675583f,0.2464372254908084869385f,0.7713316814042627811432f, \
+0.8996570175513625144958f,0.9153267047367990016937f,0.9860265571624040603638f, \
+0.2070462000556290149689f,0.6318158404901623725891f,0.9118843185715377330780f, \
+0.5755609273910522460938f,0.6911411830224096775055f,0.9032438425347208976746f, \
+0.7275989069603383541107f,0.2983345370739698410034f,0.8753590886481106281281f, \
+0.3796929577365517616272f,0.0876038889400660991669f,0.6358761452138423919678f, \
+0.2255521775223314762115f,0.446817158721387386322f,0.3108666068874299526215f, \
+0.5881394986063241958618f,0.7271268484182655811310f,0.3145425738766789436340f, \
+0.1787185999564826488495f,0.4917406365275382995605f,0.7525973492302000522614f, \
+0.1663594795390963554382f,0.5748702525161206722260f,0.3049920704215764999390f, \
+0.6849988629110157489777f,0.0722861671820282936096f,0.2406598175875842571259f, \
+0.8284838385879993438721f,0.3909099684096872806549f,0.8842546856030821800232f, \
+0.4892868152819573879242f,0.8299614358693361282349f,0.1368344766087830066681f, \
+0.8326684581115841865540f,0.2227798062376677989960f,0.5422506183385848999023f, \
+0.0426926412619650363922f,0.0428817747160792350769f,0.0954485400579869747162f, \
+0.5029790829867124557495f,0.6661717449314892292023f,0.6903511593118309974670f, \
+0.1675704787485301494598f,0.2048450224101543426514f,0.8116860599257051944733f, \
+0.0132086118683218955994f,0.8930616951547563076019f,0.5251825544983148574829f, \
+0.1576961842365562915802f,0.9010067256167531013489f,0.7848821463994681835175f, \
+0.4035740271210670471191f,0.7961377524770796298981f,0.2783856792375445365906f, \
+0.6019253223203122615814f,0.7362591978162527084351f,0.2777095218189060688019f, \
+0.0024121040478348731995f,0.4011422689072787761688f,0.9560912884771823883057f, \
+0.2567708329297602176666f,0.4923398261889815330505f,0.2986499867402017116547f, \
+0.2667899150401353836060f,0.3295984459109604358673f,0.8105424838140606880188f, \
+0.2835742044262588024139f,0.0002408921718597412109f,0.1597527512349188327789f, \
+0.4133680192753672599792f,0.9283765270374715328217f,0.0655929129570722579956f, \
+0.4843033556826412677765f,0.2906650463119149208069f,0.3394159595482051372528f, \
+0.9589011035859584808350f,0.0946640432812273502350f,0.7127310922369360923767f, \
+0.1914948052726686000824f,0.3020674530416727066040f,0.3857871112413704395294f, \
+0.303432715125381946564f,0.1901389393024146556854f,0.3798281177878379821777f, \
+0.5674670808948576450348f,0.6582474960014224052429f,0.8053624569438397884369f, \
+0.6435376014560461044312f,0.1315037836320698261261f,0.2259779060259461402893f, \
+0.6206666971556842327118f,0.6504998095333576202393f,0.6684748218394815921783f, \
+0.6728870486840605735779f,0.1410236409865319728851f,0.4075959790498018264771f, \
+0.627867404837161302567f,0.4480062769725918769836f,0.4035936850123107433319f, \
+0.5879594832658767700195f,0.1153195598162710666656f,0.7683646855875849723816f, \
+0.2349277897737920284271f,0.5894475113600492477417f,0.3207207177765667438507f, \
+0.7428904781118035316467f,0.4984040032140910625458f,0.9036596231162548065186f, \
+0.6709216744638979434967f,0.8537342092022299766541f,0.1756483591161668300629f, \
+0.7642531786113977432251f,0.3008039263077080249786f,0.5137639017775654792786f, \
+0.6256901505403220653534f,0.5433056429028511047363f,0.9364583813585340976715f, \
+0.9189820392057299613953f,0.8656015782617032527924f,0.8644737657159566879272f, \
+0.7842234452255070209503f,0.9146144324913620948792f,0.2163717742078006267548f, \
+0.9016996361315250396729f,0.5193324820138514041901f,0.0936209624633193016052f, \
+0.1577651998959481716156f,0.8322136122733354568481f,0.9679206502623856067657f, \
+0.8463781969621777534485f,0.7359144198708236217499f,0.9125841259956359863281f, \
+0.5761411138810217380524f,0.5802838830277323722839f,0.3673972501419484615326f, \
+0.1465643625706434249878f,0.2601406280882656574249f,0.8280333140864968299866f, \
+0.3835482816211879253387f,0.0134858153760433197021f,0.7306445003487169742584f, \
+0.4633175721392035484314f,0.1587547785602509975433f,0.2259487155824899673462f, \
+0.8859009263105690479279f,0.7426936449483036994934f,0.1664869519881904125214f, \
+0.9855593368411064147949f,0.3667347007431089878082f,0.3923764182254672050476f, \
+0.8068126081489026546478f,0.7054641749709844589233f,0.8674603034742176532745f, \
+0.4587025428190827369690f,0.34914617193862795830f,0.6684310026466846466064f, \
+0.2964043603278696537018f,0.1410161769017577171326f,0.8339820853434503078461f, \
+0.5892267990857362747192f,0.3797874790616333484650f,0.3257266031578183174133f, \
+0.277362580876797437668f,0.5500425547361373901367f,0.8027154603041708469391f, \
+0.0402877209708094596863f,0.0218298300169408321381f,0.2777149509638547897339f, \
+0.4810298834927380084991f,0.5458494136109948158264f,0.5776124666444957256317f, \
+0.2314949147403240203857f,0.0577680678106844425201f,0.2873307904228568077087f, \
+0.7977964854799211025238f,0.4701130483299493789673f}
+
+
+#define InIF {0.0394321014173328876495f,0.3370208526030182838440f,0.6783407176844775676727f, \
+0.2560503073036670684814f,0.5241241441108286380768f,0.9488922869786620140076f, \
+0.3087073317728936672211f,0.7950635720044374465942f,0.9224105221219360828400f, \
+0.4595228182151913642883f,0.7807972389273345470428f,0.226513788104057312012f, \
+0.9408814110793173313141f,0.6131632206961512565613f,0.4430119856260716915131f, \
+0.2909095119684934616089f,0.8606127654202282428741f,0.8565102526918053627014f, \
+0.9051895807497203350067f,0.6799235455691814422607f,0.5336262793280184268951f, \
+0.7887798985466361045837f,0.7137753940187394618988f,0.4034583661705255508423f, \
+0.1977087226696312427521f,0.1879524858668446540833f,0.7047274294309318065643f, \
+0.4047584310173988342285f,0.2033406519331037998199f,0.8319396777078509330750f, \
+0.8779059736989438533783f,0.3923193570226430892944f,0.2464844961650669574738f, \
+0.8334233397617936134338f,0.1366976196877658367157f,0.3573439754545688629150f, \
+0.2009820179082453250885f,0.7071162825450301170349f,0.7366236648522317409515f, \
+0.7454952616244554519653f,0.1443111491389572620392f,0.8881948785856366157532f, \
+0.7866828846745193004608f,0.751696139574050903f,0.6704522022046148777008f, \
+0.9206535546109080314636f,0.6471786811016499996185f,0.7067261617630720138550f, \
+0.0836134557612240314484f,0.0343311587348580360413f,0.5677806059829890727997f, \
+0.0243650637567043304443f,0.5665661157108843326569f,0.3293592026457190513611f, \
+0.4095702595077455043793f,0.6778331939131021499634f,0.9173386511392891407013f, \
+0.2867819787934422492981f,0.7948215636424720287323f,0.6742788180708885192871f, \
+0.9480205052532255649567f,0.8240985525771975517273f,0.5282654105685651302338f, \
+0.4960622992366552352905f,0.1394251813180744647980f,0.6144766295328736305237f, \
+0.6335886861197650432587f,0.9775871522724628448486f,0.6453627035953104496002f, \
+0.8883882975205779075623f,0.8489176682196557521820f,0.5864279735833406448364f, \
+0.240271453280001878738f,0.4364176439121365547180f,0.925035800319164991379f, \
+0.5775052458047866821289f,0.3039593794383108615875f,0.0319902477785944938660f, \
+0.5700858398340642452240f,0.9890570174902677536011f,0.4372045849449932575226f, \
+0.9927745470777153968811f,0.3845063815824687480927f,0.9491574577987194061279f, \
+0.8019652874208986759186f,0.0995050808414816856384f,0.6299527562223374843597f, \
+0.2615322861820459365845f,0.7799491551704704761505f,0.5909776063635945320129f, \
+0.1759523036889731884003f,0.7394210770726203918457f,0.0432920181192457675934f, \
+0.4539660913869738578796f,0.4680440216325223445892f,0.2562364395707845687866f, \
+0.6310959537513554096222f,0.7268115812912583351135f,0.8611525888554751873016f, \
+0.9817700721323490142822f,0.125576748047024011612f,0.0354329412803053855896f, \
+0.1619467637501657009125f,0.7726956922560930252075f,0.5215707314200699329376f, \
+0.0805094735696911811829f,0.7239321577362716197968f,0.1861188411712646484375f, \
+0.8831509896554052829742f,0.2945854095742106437683f,0.9390283836983144283295f, \
+0.0849235635250806808472f,0.3811029498465359210968f,0.3878462770953774452209f, \
+0.4693805794231593608856f,0.3036659620702266693115f,0.8050093413330614566803f, \
+0.0013171425089240074158f,0.0631553060375154018402f,0.3437646273523569107056f, \
+0.1436945316381752490997f,0.1862327279523015022278f,0.2980708214454352855682f, \
+0.5667379423975944519043f,0.3277782374061644077301f,0.9283294035121798515320f, \
+0.0964117287658154964447f,0.8542382624000310897827f,0.7280886103399097919464f, \
+0.4358090544119477272034f,0.3552779997698962688446f,0.2036329694092273712158f, \
+0.5036846981383860111237f,0.4097248231992125511169f,0.5358183733187615871429f, \
+0.2278824020177125930786f,0.3932382804341614246368f,0.0155387269333004951477f, \
+0.5551981288008391857147f,0.0284646600484848022461f,0.0435250797308981418610f, \
+0.7746011493727564811707f,0.8250512345694005489349f,0.4100972842425107955933f, \
+0.4687753473408520221710f,0.0943022081628441810608f,0.7801668713800609111786f, \
+0.9060058109462261199951f,0.7346338243223726749420f,0.6556449970230460166931f, \
+0.7411603308282792568207f,0.5824892017990350723267f,0.4604790774174034595490f, \
+0.3769907029345631599426f,0.4548782887868583202362f,0.0915321484208106994629f, \
+0.2338522099889814853668f,0.1727255983278155326843f,0.1562884538434445858002f, \
+0.9402142520993947982788f,0.5307449479587376117706f,0.2255999082699418067932f, \
+0.495603590738028287888f,0.4456660784780979156494f,0.2354971007443964481354f, \
+0.9914885526522994041443f,0.1743899188004434108734f,0.3443220872431993484497f, \
+0.354053397197276353836f,0.6553237633779644966125f,0.6344098853878676891327f, \
+0.5242204368114471435547f,0.0143296965397894382477f,0.2569495765492320060730f, \
+0.6429493143223226070404f,0.8490996640175580978394f,0.3474385743029415607452f, \
+0.2056481996551156044006f,0.1183789293281733989716f,0.5430422388017177581787f, \
+0.3435242832638323307037f,0.4020882537588477134705f,0.0397002524696290493011f, \
+0.1044149938970804214478f,0.2759570893831551074982f,0.6864448906853795051575f, \
+0.7838258775882422924042f,0.217856429517269134521f,0.7876369827426970005035f, \
+0.8314417852088809013367f,0.7343441187404096126556f,0.6330608930438756942749f, \
+0.2331567634828388690948f,0.79906500224024057388f,0.5055180336348712444305f, \
+0.4791096337139606475830f,0.3705745027400553226471f,0.4796987390145659446716f, \
+0.6252688220702111721039f,0.9830987323075532913208f}
+
+
+#define ResRF {1.3544643076000049131125f,1.555611161001190234643f,1.5227753545043396510295f, \
+1.3539721626852589953f,1.2307011179667750599975f,1.132986233674521114878f, \
+0.6108215211136103217626f,1.4563171387342028761935f,1.26775449603837397916f, \
+0.6906267709340139226981f,0.1780149993077420056409f,1.0583908356731808186879f, \
+1.4093733723685308856233f,1.1286484374252463425137f,1.1728485230904668323859f, \
+0.1960702202025065843394f,0.4292455238079518897720f,1.0670393141498673017509f, \
+0.8421897142243505163250f,1.3217939513349721281088f,0.6898654070878095234676f, \
+0.4518130294310849226491f,0.4144778912738525944448f,0.1673685006122558327490f, \
+1.3622415598200958708475f,0.886902683876586550582f,0.4229445354426950576254f, \
+0.9575064117084541859271f,0.8077294519947597617460f,0.4435267853313298869189f, \
+0.7559810258252398496026f,1.2678490741689776299950f,0.5046182820452449480086f, \
+1.1813319501282872892034f,1.4830799972889596727299f,0.8816531266139947531357f, \
+1.3432865448676185593513f,1.107591898499146854107f,1.2546916476714633503775f, \
+0.9420398538652174913466f,0.7566689041304636154095f,1.2508215962260114118010f, \
+1.3911123978681665391832f,1.0567086722755880678903f,0.7187986332601904448936f, \
+1.4036597839870441628563f,0.9583507556750017197800f,1.260866223812947772842f, \
+0.8161941887163420839002f,1.49844705842773628923f,1.327750735837211149004f, \
+0.5944014578559909667277f,1.1691763062196611766552f,0.4859006803898779369710f, \
+1.0595245187218389482098f,0.5917577795331790957434f,1.4335312043991983443902f, \
+0.5868872597311183270108f,1.3461313138241890463576f,0.9976829092544128307907f, \
+1.5280907058444337387471f,1.5279013990243792697754f,1.4752022598870020431150f, \
+1.0437541728877690605515f,0.8417324807407642328627f,0.8088220073687144573427f, \
+1.4024315436728629347130f,1.3644909573371579725176f,0.6237633497149321915032f, \
+1.5575873308176619858045f,0.4666916888200717261626f,1.0178667076465526264428f, \
+1.4124391178254291911998f,0.4487116894768009012218f,0.6682904180063654608901f, \
+1.1553765634714785459636f,0.6499108421939678859047f,1.2886833903313061888696f, \
+0.9248863868474237470707f,0.7432707317726728879492f,1.2893873050266133617470f, \
+1.5683842204080198357019f,1.1580328237052455175871f,0.297435226780083439291f, \
+1.3111168037999454405451f,1.0560204013836156367034f,1.267518556897496040392f, \
+1.300735649674872540515f,1.2349181037163743379637f,0.6257185580692986581752f, \
+1.2832770556580765930477f,1.5705554346207071247932f,1.4103561444004117930717f, \
+1.1446465290134530956578f,0.3807759856686916410951f,1.5051562877181774435797f, \
+1.065229590564843231704f,1.2758745069326440368940f,1.2245003981556386030149f, \
+0.2876926938040382797368f,1.475990325123716528921f,0.7774122140225130372926f, \
+1.3781114155823581679527f,1.263935652317189628491f,1.1747355003768786829710f, \
+1.2625031633451624379916f,1.379492661159100963530f,1.1811858445520480032087f, \
+0.9673699297198078417281f,0.8523079182101511719338f,0.6345096623572386019f, \
+0.8716851786364174792254f,1.438910541717890456681f,1.3428495335058063808731f, \
+0.9012036112561767620122f,0.8625540038617608429306f,0.8386401358861846899728f, \
+0.8326916717391449340724f,1.4293010137458141972644f,1.1509764487838076707504f, \
+0.8919861503219816967203f,1.1062622764047711498847f,1.1553550780909149775511f, \
+0.9422624178970196995309f,1.4552196270328432436969f,0.6945142387614549051023f, \
+1.33365204874339027263f,0.940421593525194388086f,1.244306023462703247873f, \
+0.7334183218187529940124f,1.049039471207045437495f,0.4425568980368907445744f, \
+0.8353452979806201827984f,0.5476812518090538040028f,1.3942319989111211508970f, \
+0.7009138051156860171886f,1.2652608172154014010147f,1.0312300888962582234853f, \
+0.8947803803621411367075f,0.9964267421930456114509f,0.3584025169927071985398f, \
+0.4053053537674792816681f,0.52444580540694141213f,0.5266937610818180903749f, \
+0.6693527332761076698020f,0.4162430398171838019650f,1.3526996566064570792776f, \
+0.4471117451927261177147f,1.0247266752134434053545f,1.4770380592585463652711f, \
+1.4123692272878969333760f,0.5877081129044480212187f,0.2539777406414896465670f, \
+0.5616486929670342354015f,0.7437800898892800161022f,0.4212363058629264855881f, \
+0.9567967508657543307393f,0.9517191061460341661160f,1.1945873210943909192849f, \
+1.4237020985347941248733f,1.307628484293123394266f,0.5952054691773595029858f, \
+1.1771609573131449621997f,1.5573101026141118463642f,0.7515308864404272037874f, \
+1.08906115052591578873f,1.4113670182151965004635f,1.3428794989819419214427f, \
+0.4823637262878405218558f,0.7337123123270111735295f,1.403530508718869640461f, \
+0.1701502458411716656173f,1.1952995905474013138559f,1.1675825417504139824842f, \
+0.632059235534878305351f,0.7877184695580223827704f,0.5207218041934291719031f, \
+1.0942618099823884225685f,1.2141365475300021081750f,0.8386990520942673166260f, \
+1.2698707048803585806240f,1.4293085531739009308438f,0.5845108665288674121285f, \
+0.9406947904242937141817f,1.1812297752030191944073f,1.2390161854573771282872f, \
+1.2897484327948283144849f,0.9883811343629644863285f,0.6389615878853852626307f, \
+1.5304976993530934326060f,1.5489647626028015814370f,1.2893816535780269205702f, \
+1.0689672707047077615528f,0.9933937851799321538948f,0.9549954566636918995570f, \
+1.337182267875798302725f,1.5129960805231705833762f,1.2793573801230322395384f, \
+0.6471646932978184496577f,1.0813774684738581832733f}
+
+#define ResIF {1.5313539994534084431876f,1.2270454945240594213374f,0.8252943559980340237914f, \
+1.3118622512767883492302f,1.0191099717030900340120f,0.3210890168818836265530f, \
+1.2569626427487261555171f,0.6516839411893488032135f,0.3965201754844740467121f, \
+1.0933384694570118522705f,0.6748555027471666578620f,1.3422993862285261812417f, \
+0.3455732962500616678447f,0.9107376302950138668990f,1.1118407738194451273017f, \
+1.2756190002512473036234f,0.534324627989826939078f,0.5423264441023638582351f, \
+0.4389707532009931023609f,0.8231379603724421345490f,1.0079137337479666669537f, \
+0.6619748165277959950359f,0.7759222830602500176056f,1.1555029726809751267069f, \
+1.3717763753859233410992f,1.3817192645680580476153f,0.7887574388774107880806f, \
+1.154081687844786152652f,1.3660276734930973940862f,0.5882019906981408308155f, \
+0.4993250010048232434556f,1.1676445771431656073247f,1.3217451760779403979740f, \
+0.5855226957110959418173f,1.4336693595120120203745f,1.205373778014949381898f, \
+1.3684360354595728193061f,0.7853847263571438475083f,0.7427319788503217168341f, \
+0.7295187281370371090716f,1.425979527467823082532f,0.4773949303589768988765f, \
+0.6653789652250786668120f,0.7201661840055592067600f,0.8359782312775623225320f, \
+0.4010449856231582121957f,0.8669186056114237537429f,0.7859362957809750138694f, \
+1.4870851367060453629421f,1.536458420533861612967f,0.9669891090554120216538f, \
+1.5464288516482158630794f,0.9684637239770992334087f,1.2351714956359907127137f, \
+1.1488133772379154340371f,0.8259848817840680368363f,0.4094531852851721054343f, \
+1.2799303040161731370716f,0.6520828442366262134300f,0.8308086408007220313721f, \
+0.3238399424616983379721f,0.6021873821209878796523f,1.0142399690964163383455f, \
+1.0517384795139694819710f,1.4309154243829336206062f,0.9090739203715231253611f, \
+0.8846133529122768290875f,0.2121182423802339123142f,0.8692983189363326923527f, \
+0.47697379514371801568f,0.5568622476164218904060f,0.9441544643774535394698f, \
+1.3281508401476103120586f,1.1191830432760909719292f,0.3896665024665909582424f, \
+0.9551267985697193818595f,1.2619503910172775729137f,1.5388006201603028344493f, \
+0.9641859946151247751089f,0.1480742995944135109720f,1.1183082300559199495638f, \
+0.1202844206176664348940f,1.1761232908094509941321f,0.3202477413820724594373f, \
+0.6402184399260194558323f,1.4711263056909940072359f,0.8893039482321445365898f, \
+1.3061869235485943363528f,0.6762117558368399006241f,0.9385261464846976764420f, \
+1.3939232457675478915604f,0.7385862765729950263349f,1.5274907742828045531525f, \
+1.0995848226997599894617f,1.0837202329455530858127f,1.3116696951046082908476f, \
+0.8878310767922412694020f,0.7571280287683522791653f,0.5332636611081145172619f, \
+0.1912359123928325799202f,1.44488716691460328256f,1.5353559670190242147925f, \
+1.4081331860416281820392f,0.6877194039437647399282f,1.02210543863474323523f, \
+1.4901996245029442977881f,0.7613110787878502039305f,1.3835858489414398775352f, \
+0.4882587676373527640905f,1.2717746792548134671108f,0.3510027969902725919482f, \
+1.48577035226708975557f,1.1798073422108839025668f,1.1725025103978652385450f, \
+1.082207178445642403730f,1.262258365804196147408f,0.6351051130420296564338f, \
+1.5694791839051283055539f,1.5075989617580312085465f,1.2198734065895773248656f, \
+1.4266026395050115383f,1.3834699355835038403484f,1.2681253600974256023903f, \
+0.9682551856135412915449f,1.2368453959617209392263f,0.3809027641084558046813f, \
+1.4742346083993373984100f,0.5467124691036475692130f,0.7552669049014355540095f, \
+1.1198593352029904135492f,1.2075848742491721576897f,1.3657291093636882983731f, \
+1.0429375766976551886955f,1.1486439448135470353662f,1.0053196235121615309538f, \
+1.3408940198345395966584f,1.166645348645906299367f,1.555256974484105159107f, \
+0.9821951633092294020599f,1.5423278214913895833860f,1.5272574927805724342988f, \
+0.6847121192620346796787f,0.6005034615094222427700f,1.1482356007343721415737f, \
+1.0828924838534597085982f,1.4763537862006439471685f,0.6758638036045827579557f, \
+0.4370463027476746975530f,0.7456695165395208491077f,0.8557598004935614843802f, \
+0.7359992024987982439654f,0.9490086268240732758628f,1.0922615019568577832132f, \
+1.184251206507022535774f,1.098560786595480287531f,1.4791358826505083268188f, \
+1.334758450002002438950f,1.3972001359840415801727f,1.4138645236300337870716f, \
+0.3475374929910621246698f,1.0113170412320249269555f,1.3432375513394290145186f, \
+1.0522666912154046148231f,1.1088781475531621634190f,1.3330663041014356728908f, \
+0.1305645353871486558095f,1.3955101678176036195111f,1.2192797033375830650925f, \
+1.2088946193116594240990f,0.8561851579342378837367f,0.8835514575659523250906f, \
+1.0189969006408940987995f,1.5564661397993202474055f,1.3109318548790835912143f, \
+0.8724535168872261658990f,0.5565178057806303701938f,1.215958206971465838109f, \
+1.3636703086937589368688f,1.4521391539839998419126f,0.9967404603545287899991f, \
+1.2201293368773795666726f,1.1569998731124000457271f,1.5310856382606727876805f, \
+1.4661906653829819280332f,1.2912110119575965772043f,0.8142075135673421115712f, \
+0.6699932176804166417128f,1.3511787210901111677686f,0.6638319846196626405899f, \
+0.5890987081162550875746f,0.7460964201464012068854f,0.8852953565042832595466f, \
+1.3354736682149619397819f,0.6450578234482783335224f,1.0408140682934756693356f, \
+1.0711562631188329408616f,1.1911688411902121575991f,1.0704849901046198379362f, \
+0.8953203785098390321551f,0.1841145960893279809323f}
+
+
+#define InRD {0.3596746218390762805939,0.9327730434015393257141,0.6520409691147506237030, \
+0.4466360807418823242188,0.5597501345910131931305,0.1586764482781291007996, \
+0.1349689974449574947357,0.5309285502880811691284,0.7984495465643703937531, \
+0.5877699116244912147522,0.5329149584285914897919,0.3033532761037349700928, \
+0.0826407433487474918365,0.2014105310663580894470,0.2214868194423615932465, \
+0.5626921299844980239868,0.594995748717337846756,0.3364775599911808967590, \
+0.9449067446403205394745,0.2256392762064933776855,0.0615444355644285678864, \
+0.3346643997356295585632,0.9560257433913648128510,0.1118353512138128280640, \
+0.875087611842900514603,0.9554424667730927467346,0.2715726937167346477509, \
+0.6644485183060169219971,0.0682194815017282962799,0.7714469349011778831482, \
+0.8863877407275140285492,0.5750523973256349563599,0.7297094804234802722931, \
+0.2650343524292111396790,0.2903900700621306896210,0.7815508693456649780273, \
+0.9579934873618185520172,0.8447621343657374382019,0.1320300563238561153412, \
+0.8078997563570737838745,0.9455244098789989948273,0.500539929606020450592, \
+0.3719757865183055400848,0.9143753759562969207764,0.2877321452833712100983, \
+0.3162028631195425987244,0.7707839584909379482269,0.0271399710327386856079, \
+0.1103429165668785572052,0.5582566531375050544739,0.0543051543645560741425, \
+0.9158540144562721252441,0.1088079833425581455231,0.5595446033403277397156, \
+0.6005734889768064022064,0.5880853887647390365601,0.0935917277820408344269, \
+0.1165864700451493263245,0.9919306333176791667938,0.3692654408514499664307, \
+0.1350691155530512332916,0.6193392043933272361755,0.2761342129670083522797, \
+0.6369419116526842117310,0.9017825317569077014923,0.6321295695379376411438, \
+0.2802005815319716930389,0.6780787408351898193359,0.2858079918660223484039, \
+0.1445086328312754631042,0.8207319690845906734467,0.6381527464836835861206, \
+0.9089807276614010334015,0.2107781330123543739319,0.1544780055992305278778, \
+0.0307971797883510589600,0.6037301481701433658600,0.1969387223944067955017, \
+0.5128816193901002407074,0.7767421547323465347290,0.4622741756029427051544, \
+0.3538100840523838996887,0.0643593105487525463104,0.2408019527792930603027, \
+0.54792295629158616066,0.9350729240104556083679,0.148065799381583929062, \
+0.2356592025607824325562,0.8622419466264545917511,0.5789828384295105934143, \
+0.1228930498473346233368,0.4611959345638751983643,0.6618243739940226078033, \
+0.1725060557946562767029,0.6754536679945886135101,0.3481215108186006546021, \
+0.7184230727143585681915,0.9166270541027188301086,0.9307986753992736339569, \
+0.7746474295854568481445,0.6161916949786245822906,0.8115780530497431755066, \
+0.2096196576021611690521,0.6249590050429105758667,0.6797852967865765094757, \
+0.2807403812184929847717,0.7756852875463664531708,0.6582339219748973846436, \
+0.6270702988840639591217,0.1519677182659506797791,0.4172622240148484706879, \
+0.6569576654583215713501,0.5401938227005302906036,0.7150812121108174324036, \
+0.2062703850679099559784,0.3232858255505561828613,0.2487624012865126132965, \
+0.0742864711210131645203,0.2789225964806973934174,0.8922032769769430160522, \
+0.7188800652511417865753,0.5142624313011765480042,0.9815986151807010173798, \
+0.9302302338182926177979,0.5417958036996424198151,0.0986720984801650047302, \
+0.2257035276852548122406,0.2884251791983842849731,0.1159104001708328723907, \
+0.2198451654985547065735,0.3952605235390365123749,0.6784346699714660644531, \
+0.6158926435746252536774,0.3183825043961405754089,0.6509880437515676021576, \
+0.8403400164097547531128,0.3426549141295254230499,0.4914325335994362831116, \
+0.9746113042347133159637,0.7710508368909358978271,0.5479381443001329898834, \
+0.2083894601091742515564,0.7971581942401826381683,0.98199548758566379547, \
+0.327256154734641313553,0.8527633966878056526184,0.5549895497970283031464, \
+0.2548583671450614929199,0.6749493652023375034332,0.3089723540470004081726, \
+0.0173138021491467952728,0.8641140963882207870483,0.2950978805311024188995, \
+0.3128061080351471900940,0.7289360011927783489227,0.7351085729897022247314, \
+0.2620439515449106693268,0.7843119418248534202576,0.4119912139140069484711, \
+0.5064369011670351028442,0.1242738110013306140900,0.8618522631004452705383, \
+0.6704122978262603282928,0.9653681963682174682617,0.5454088845290243625641, \
+0.8560840962454676628113,0.8408820494078099727631,0.8250672649592161178589, \
+0.0760563765652477741241,0.8426104495301842689514,0.3340197275392711162567, \
+0.3123631589114665985107,0.1502692312933504581451,0.1120535572990775108337, \
+0.3095519519411027431488,0.5348146054893732070923,0.9003654685802757740021, \
+0.1962999971583485603333,0.0292179766111075878143,0.0958223119378089904785, \
+0.8838568949140608310699,0.6896676821634173393250,0.7311593382619321346283, \
+0.926538145169615745544,0.3162371893413364887238,0.5837447280064225196838, \
+0.3695438797585666179657,0.8033211864531040191650,0.9033793644048273563385, \
+0.3346501952037215232849,0.0631741485558450222015,0.5194906610995531082153, \
+0.8672926020808517932892,0.3814667062833905220032,0.5968301701359450817108, \
+0.1801257431507110595703,0.2589884647168219089508,0.3345949379727244377136, \
+0.8190965964458882808685,0.5886622350662946701050}
+
+
+#define InID {0.9229331132955849170685,0.3624883117154240608215,0.4197423788718879222870, \
+0.1054803654551506042480,0.9433643990196287631989,0.2429116321727633476257, \
+0.5323819159530103206635,0.6621514465659856796265,0.3330680062063038349152, \
+0.5687411213293671607971,0.8901842678897082805634,0.3511209674179553985596, \
+0.0435834513045847415924,0.3901510154828429222107,0.6022473922930657863617, \
+0.1305641103535890579224,0.7857504826970398426056,0.3076619254425168037415, \
+0.1008732873015105724335,0.4706113189458847045898,0.23320029163733124733, \
+0.7386203287169337272644,0.0550201400183141231537,0.9430699776858091354370, \
+0.3567060981877148151398,0.8223499367013573646545,0.7739888499490916728973, \
+0.6216929666697978973389,0.9831431121565401554108,0.1827249368652701377869, \
+0.9450939274393022060394,0.2617440912872552871704,0.1728078690357506275177, \
+0.2669151099398732185364,0.0490687671117484569550,0.7276103869080543518066, \
+0.5088469409383833408356,0.4790528221055865287781,0.2969552963040769100189, \
+0.6372112985700368881226,0.8925450225360691547394,0.8275718921795487403870, \
+0.4322279985062777996063,0.6919547356665134429932,0.9382223919965326786041, \
+0.3049683338031172752380,0.2419023117981851100922,0.6609900016337633132935, \
+0.5614917469210922718048,0.7187329726293683052063,0.1203774022869765758514, \
+0.4885075986385345458984,0.8546244152821600437164,0.1922059385105967521667, \
+0.5297633125446736812592,0.4928359072655439376831,0.8427759413607418537140, \
+0.0541030326858162879944,0.7004424850456416606903,0.1260847412049770355225, \
+0.214821046683937311172,0.3354639699682593345642,0.4156156606040894985199, \
+0.2630857769399881362915,0.6225479659624397754669,0.5927724959328770637512, \
+0.2235821518115699291229,0.4883798584342002868652,0.6419621580280363559723, \
+0.2759983791038393974304,0.9215044914744794368744,0.3500011768192052841187, \
+0.9904493917711079120636,0.3603112781420350074768,0.6544074560515582561493, \
+0.0488083250820636749268,0.0935482070781290531158,0.4602164840325713157654, \
+0.4731614640913903713226,0.5321122277528047561646,0.5950817507691681385040, \
+0.1448625372722744941711,0.6952003496699035167694,0.4603509455919265747070, \
+0.9043989875353872776031,0.6732707200571894645691,0.9117235108278691768646, \
+0.0155613552778959274292,0.3744752858765423297882,0.8682364234700798988342, \
+0.9851324330084025859833,0.0203977040946483612061,0.2046223790384829044342, \
+0.3476523896679282188416,0.8804515874944627285004,0.3364470396190881729126, \
+0.6615577009506523609161,0.8320038290694355964661,0.6744837048463523387909, \
+0.0105915144085884094238,0.7125830971635878086090,0.7467854125425219535828, \
+0.5864494233392179012299,0.1381675656884908676147,0.6646229107864201068878, \
+0.8385901385918259620667,0.3738613124005496501923,0.9116719700396060943604, \
+0.9028714434243738651276,0.0236200755462050437927,0.9373822710476815700531, \
+0.8237647730857133865356,0.3227997911162674427032,0.1873689787462353706360, \
+0.4784183013252913951874,0.4933190941810607910156,0.5492720552720129489899, \
+0.1542267827317118644714,0.0531956567429006099701,0.0832678060978651046753, \
+0.5365209286101162433624,0.5457559684291481971741,0.8670723657123744487762, \
+0.7789970897138118743896,0.6427326560951769351959,0.7463898053392767906189, \
+0.1528341299854218959808,0.2960368636995553970337,0.772991370875388383865, \
+0.6953024687245488166809,0.9767245980910956859589,0.8857980892062187194824, \
+0.6843328052200376987457,0.7232010317966341972351,0.8159600137732923030853, \
+0.8081069495528936386108,0.0466573764570057392120,0.1527893329039216041565, \
+0.2514782394282519817352,0.7392859049141407012939,0.3532526479102671146393, \
+0.8816537177190184593201,0.6196721545420587062836,0.0845316220074892044067, \
+0.2746751648373901844025,0.6663206564262509346008,0.9668574291281402111053, \
+0.6633397787809371948242,0.5497416653670370578766,0.32623623590916395187, \
+0.1502246721647679805756,0.7367267441004514694214,0.0073796664364635944366, \
+0.5864175269380211830139,0.4290259550325572490692,0.8449981324374675750732, \
+0.8130874247290194034576,0.7775258263573050498962,0.3897457099519670009613, \
+0.4248142335563898086548,0.533753272611647844315,0.1121117742732167243958, \
+0.5490060034207999706268,0.6743023172020912170410,0.1145843290723860263824, \
+0.7557823462411761283875,0.4779561846517026424408,0.6349658127874135971069, \
+0.3618945856578648090363,0.4120397204533219337463,0.7918969090096652507782, \
+0.9591403640806674957275,0.0255023674108088016510,0.6395420199260115623474, \
+0.8488885364495217800140,0.3317467588931322097778,0.0744871688075363636017, \
+0.6205359296873211860657,0.5010939049534499645233,0.0150907337665557861328, \
+0.2600558646954596042633,0.5992111889645457267761,0.7426054789684712886810, \
+0.48545965366065502167,0.5592682962305843830109,0.7087269583716988563538, \
+0.5975068728439509868622,0.6302660666406154632568,0.5933722318150103092194, \
+0.4056600620970129966736,0.0919187492690980434418,0.4744881335645914077759, \
+0.6144977030344307422638,0.2306251050904393196106,0.6537790927104651927948, \
+0.9051569327712059020996,0.1544607155956327915192,0.1138164652511477470398, \
+0.7841078578494489192963,0.3626406397670507431030}
+
+
+#define ResRD {1.2028771717397248597337,0.3687655164040291033700,0.8605230767316590645422, \
+1.1077942947750605284796,0.9767120864552386594326,1.4114463541323842843411, \
+1.4354141532486464072349,1.0111003946929904007135,0.6460807643012056455945, \
+0.942496758054768402069,1.0087545936051280914825,1.262586531900748765267, \
+1.4880612274536648698131,1.3679985766801496804845,1.3474574320651662162618, \
+0.9731575131888534624380,0.9335359675538464907518,1.2276224867355149950043, \
+0.3334867299422681341525,1.3431971414533188102780,1.5092129727018919194137, \
+1.2295472552241557551156,0.2976587959346745915212,1.4587265301529550587389, \
+0.5051795104327043706149,0.2996411780017103065887,1.2957695643431932364109, \
+0.8440406830828603990113,1.50252381975481164034,0.6896842944166139410811, \
+0.4813132194495245430588,0.9581281339053301371322,0.7528993595207621458698, \
+1.3025567781811444589835,1.2761618784887454047805,0.6736483673578720354769, \
+0.2908743485069323897463,0.5646758064966191925649,1.438379639941827381477, \
+0.6302168108311377858755,0.3315946371104716572376,1.0465739819013770706135, \
+1.1896596872617526408078,0.4168338903307298726197,1.2789383292392024760176, \
+1.2490720222420119700502,0.6907255719643182745315,1.5436530228729308245050, \
+1.4602282599819302877364,0.9785132735167261230913,1.5164644455125539934670, \
+0.4131665402940313813751,1.4617724919866201815921,0.976960093696471187918, \
+0.9265781639066993369269,0.9421067569746168768319,1.4770674228670064298541, \
+1.4539441129892149984215,0.1271238965902136142105,1.1925778534654034590545, \
+1.4353131098866320769503,0.9028955486769573157702,1.291026727930056683391, \
+0.8802714396298314536438,0.4469199799286652230457,0.8864978673073259374249, \
+1.2867932721224226710888,0.8256508509224979031060,1.280946841714904582687, \
+1.4257799518141858197140,0.6081052805119846471626,0.8786997656642617782197, \
+0.4299640690276578247619,1.358425418880489399243,1.4156972317305263064924, \
+1.539994276579740084543,0.9226243343869420243664,1.3725618187689798688211, \
+1.0322581557317391798279,0.6813198095430882395007,1.0902381815309389878621, \
+1.2091547718013440082530,1.5063925025508968502663,1.3276042940716099582943, \
+0.9909170452840954101958,0.3623315827204681149887,1.4221840996178074512102, \
+1.3328995078730689893831,0.5311168124493514941520,0.9533157205028358616161, \
+1.4475918193576946535472,1.0914537614762709338834,0.8475465668021775478280, \
+1.397423024242874678436,0.8292165733697762775023,1.2152298005000905511963, \
+0.7692636520177893455497,0.4112369685450336653787,0.3742045597954955504783, \
+0.6846389399063078640140,0.9068981756365698254641,0.6239482394976629819894, \
+1.3596103677318518432315,0.8957173083282501391267,0.8233264779021800539027, \
+1.2862309003134888563125,0.6829961273496524265525,0.8523259494147855663826, \
+0.8930098639160600759723,1.4182375163347213931075,1.140365661220332116343, \
+0.8540200113324175612561,1.00012891553026617153,0.7740560507824159053314, \
+1.3630344917090961853745,1.2415966072092310401587,1.3193940476076928547400, \
+1.4964413607109372517101,1.2881243295307911456149,0.4685959659402677002227, \
+0.7686064589523176060482,1.0306489046710447521349,0.1921358819063216094580, \
+0.3757565999820682289823,0.9982241210548544740888,1.4719634077784360393082, \
+1.343131188620912519482,1.2782146146919892704119,1.4546247978060928840449, \
+1.34914057669922526905,1.1644448741462574137273,0.8251664782779083440190, \
+0.9072778206884453133796,1.2467736163145475281055,0.8619109958260211534764, \
+0.5728861415513620825024,1.2210548843020616605060,1.057062476566032582781, \
+0.2258178915663380803558,0.6903065678994606546581,0.9908988891861231218527, \
+1.3608683482364234418327,0.6482226075956507571618,0.1900463122401400695161, \
+1.2373979549105573738643,0.5495428169674564378155,0.9824459232054076895935, \
+1.3130950959292289059732,0.8299002502243607581889,1.2566839986965321340762, \
+1.5534816595091374136217,0.5274088279670856582726,1.2712383671403899576546, \
+1.2526503588977928593806,0.7540298966945283565266,0.7449695106054331494860, \
+1.3056567692434561944737,0.6692100940463061586883,1.1461580467200653821180, \
+1.0397487722058409431725,1.4462003916605226105929,0.5318856797809271563793, \
+0.8360320128831254526958,0.2639453129802519226743,0.9939194594428718554369, \
+0.5431515558502996166013,0.5718854142758250658218,0.6004750914590427646189, \
+1.494666433096084601218,0.5686839111974200111632,1.2302312925591223358168, \
+1.253116675176039196415,1.4199557361545380729240,1.4585069438499760341443, \
+1.2560745223234066614282,1.0065080046249368361799,0.4501876422711190706138, \
+1.37321326022231460229,1.541574191402776516924,1.474826766905839248167, \
+0.4867517858084012272180,0.8097662970595214115832,0.7507765257710836692695, \
+0.3856924750031833770691,1.249035839325627783580,0.9474631507713823230787, \
+1.1922782211545606134706,0.6379451906902231517194,0.4432108724859483706027, \
+1.2295623289060186866806,1.5075800815380702157853,1.0245415674248141701952, \
+0.5210587890871913874236,1.1794138612822491207766,0.9312516456662516262099, \
+1.3896820429875444968815,1.3088215387819075452569,1.2296209664609143441538, \
+0.6109619018903345022409,0.9413933583319856746030}
+
+#define ResID {0.3951648575239898320000,1.1998599191854182333117,1.1376348605752844012073, \
+1.465119377848908444051,0.3381668921842964636859,1.3254300655944222242510, \
+1.0093844168860410803745,0.8471101875532934810664,1.2312408252616013903946, \
+0.9658218036234816894492,0.4730468665045839404826,1.2120282989381994109834, \
+1.5271990657633036647667,1.1700007263913658750454,0.9244830082340818044884, \
+1.4398583874714105945714,0.6668878269832446692433,1.2580615360595837071145, \
+1.469751180044867489016,1.0808128388866473645891,1.3354289061467599086797, \
+0.7397748903744012505257,1.5157483892532124247765,0.3390532325241176758723, \
+1.2060566608171623403933,0.6052674782943161524429,0.6856796849056999709759, \
+0.8998940392728933534983,0.1838720261619849749568,1.3870389861749277127245, \
+0.3329144266647406369408,1.3059674741482103499379,1.3971166092654940804607, \
+1.3006057440568965510863,1.5217078474803023002693,0.7559642911271701182230, \
+1.0369514991511814550051,1.0712209857356591591326,1.269293794668532759928, \
+0.8799219498148160845119,0.4678387125772855426042,0.5960279397443470905671, \
+1.1238342982646878365216,0.8066031631951199321051,0.3533394355311441636935, \
+1.2608911478449162935078,1.3264704147976305037560,0.8486590233944532046806, \
+0.9746088733052290509207,0.7688180390299395039477,1.4501262863697272909036, \
+1.0604177661273477273340,0.5459692445499627622141,1.3773868224199956600273, \
+1.0124748504563416684476,1.0554503653691549303062,0.5683765307039274627954, \
+1.51666686477275236555,0.7947790388807016714878,1.444375103731482257174, \
+1.3542877317815249504918,1.2286986304625879817820,1.1421767363912749271293, \
+1.3045770615336993447642,0.8988019765557795359712,0.9362993172800923025179, \
+1.3453082070226998201434,1.0605641572328137200998,0.8737416901115169221015, \
+1.291168053919788061279,0.3988595901749554806237,1.2132239668698467927044, \
+0.1383173844378887129558,1.202194763365512786280,0.8573976133064432625375, \
+1.521968601948950672309,1.477111135350419379719,1.0925573022860231020559, \
+1.0779203988995060825573,1.0097029754548383362334,0.9334289595014243490212, \
+1.4254222838750787438755,0.8020977417833006217762,1.0924058427012042216120, \
+0.4408272680981772384534,0.8321728959279414139516,0.4233361516656445888707, \
+1.555234343403203434164,1.1869655070484292913591,0.5191596559668992805214, \
+0.1726531465878520799073,1.5503972079690304664013,1.36471841886514577702, \
+1.2157301769255985934848,0.4939825241386303633639,1.2276548967083007468659, \
+0.8479022368018470645623,0.5880863647395992988010,0.8305311605615690595528, \
+1.5602046143499832542290,0.7776231797042172377843,0.7275809483667111665639, \
+0.9441279829885425023406,1.4321853316086308183230,0.843807306082328567598, \
+0.5761063109755523159450,1.1876275724298643865495,0.4234615972962428864790, \
+0.4443937992506357126388,1.5471740543923786503910,0.3557593635626380978998, \
+0.6027763814257049990175,1.2421101770287796828285,1.38231332584564192700, \
+1.0719437082101082037155,1.0548949687688948806397,0.9893034572407536364480, \
+1.4159515018071209269124,1.5175755494012541646498,1.4874319959560586834613, \
+1.0044873206933038201072,0.9935053064241541331825,0.5215010392624837010089, \
+0.6777315702665774876934,0.8727363606570205378787,0.7281755897232153884602, \
+1.4173608641957105014342,1.2702554699418613370909,0.68725347232280220577, \
+0.8019556663866970191989,0.2161770444474211128050,0.4825853710330196832956, \
+0.8171080273286167594549,0.7623702910110113917241,0.6164084604410411394326, \
+0.6298651458963931970558,1.5241220055757684903597,1.4174061936572994735428, \
+1.3165890509097089022816,0.7387870320346577868165,1.2097506908133905945135, \
+0.4914411126250278760708,0.9024714041224581873024,1.486163708235356928355, \
+1.2925444697673078575662,0.8415327957004463677038,0.2581754363689663378523, \
+0.8455232994143846436685,0.9887413792308584747914,1.2384771061229662425518, \
+1.4200008069038045910304,0.7425795503893282134555,1.563416593374662655336, \
+0.9441673613882943794096,1.127382154057082752630,0.5642346520145214983089, \
+0.621360123138604558690,0.6800745718063847533585,1.1704408755783293205610, \
+1.1320396542439032927518,1.0077635667413964437600,1.458448357717931243016, \
+0.9896218035143569125012,0.8307768192585568423070,1.4559597641231585285482, \
+0.7139482848605868126057,1.0724698824433842592185,0.8828320605509567542413, \
+1.2004968934363549060151,1.146104811676569967815,0.6568872036374757694688, \
+0.2868482517606141812827,1.545291194242470300679,0.8768939505825917857251, \
+0.5569173641664709739629,1.232641734141120881674,1.4962401054388050347654, \
+0.9013703796371622667394,1.04593395730292670898,1.5557050202002185024241, \
+1.3077162690478547624195,0.9282808676410991832739,0.7338439661737942154573, \
+1.0639074721436194703728,0.9772934382272977504869,0.7831042538275899689282, \
+0.9304079984506387068777,0.8889004609716527616214,0.9355544417368609755314, \
+1.1530954621848632513093,1.4787476451204033534026,1.076413879615883972818, \
+0.9090472087664583922262,1.3380762696952535062422,0.8582283270195686375459, \
+0.4390475642403208755837,1.4157147317770455430264,1.4567326846157102604451, \
+0.6695389988269940806376,1.199696469825039413237}
+
+
+
+void sacossTest(void) {
+ int i=0;
+ float tIn1[]=InRF;
+ float tRes1[]=ResRF;
+ float tIn2[]=InIF;
+ float tRes2[]=ResIF;
+
+ for(i=0;i<200;i++){
+ assert ( ( fabs(sacoss(tIn1[i]) - tRes1[i]) / fabs(sacoss(tIn1[i])) ) < 1e-6);
+ assert ( ( fabs(sacoss(tIn2[i]) - tRes2[i]) / fabs(sacoss(tIn2[i])) ) < 3e-6);
+ }
+}
+
+
+void dacossTest(void) {
+ int i=0;
+ double tIn1[]=InRD;
+ double tRes1[]=ResRD;
+ double tIn2[]=InID;
+ double tRes2[]=ResID;
+
+ for(i=0;i<200;i++){
+ assert ( ( (fabs(dacoss(tIn1[i])) - tRes1[i]) / fabs(dacoss(tIn1[i])) ) < 3e-15);
+ assert ( ( (fabs(dacoss(tIn2[i])) - tRes2[i]) / fabs(dacoss(tIn2[i])) ) < 3e-15);
+ }
+}
+
+
+void sacosaTest(void){
+ int i=0;
+ float tIn1[]=InRF;
+ float tRes1[]=ResRF;
+ float tIn2[]=InIF;
+ float tRes2[]=ResIF;
+ float out1[200];
+ float out2[200];
+ sacosa(tIn1,200,out1);
+ sacosa(tIn2,200,out2);
+ for(i=0;i<200;i++){
+ assert( (fabs(out1[i]-tRes1[i])/fabs(out1[i])) <1e-6);
+ assert( (fabs(out2[i]-tRes2[i])/fabs(out2[i])) <3e-6);
+ }
+}
+
+void dacosaTest(void){
+ int i=0;
+ double tIn1[]=InRD;
+ double tRes1[]=ResRD;
+ double tIn2[]=InID;
+ double tRes2[]=ResID;
+ double out1[200];
+ double out2[200];
+ dacosa(tIn1,200,out1);
+ dacosa(tIn2,200,out2);
+ for(i=0;i<200;i++){
+ assert( (fabs(out1[i]-tRes1[i])/fabs(out1[i])) <3e-15);
+ assert( (fabs(out2[i]-tRes2[i])/fabs(out2[i])) <3e-15);
+ }
+}
+
+
+
+
+int testAcos(void) {
+ printf("\n>>>> Reals ArcCosine Tests\n");
+ sacossTest();
+ dacossTest();
+ sacosaTest();
+ dacosaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testAcos() == 0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj b/2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj
new file mode 100644
index 00000000..16540c31
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>testCplxAcos</ProjectName>
+ <ProjectGuid>{20AFE4D5-CE52-4CCE-ADAB-87442079BC0B}</ProjectGuid>
+ <RootNamespace>test_cplxacos</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testCplxAcos.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testAcos.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj.filters b/2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj.filters
new file mode 100644
index 00000000..df3e5449
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/test_cplxacos/test_cplxacos.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testCplxAcos.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\testAcos.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj b/2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj
new file mode 100644
index 00000000..35c1287e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0556427D-6D88-4A12-9EB3-7F551D6F1FA4}</ProjectGuid>
+ <RootNamespace>testrealsacos</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testRealsAcos.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj.filters b/2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj.filters
new file mode 100644
index 00000000..c2135695
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/test_realsacos/testrealsacos.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testRealsAcos.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acos/zacosa.c b/2.3-1/src/c/elementaryFunctions/acos/zacosa.c
new file mode 100644
index 00000000..812c1405
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/zacosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acos.h"
+
+void zacosa(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zacoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acos/zacoss.c b/2.3-1/src/c/elementaryFunctions/acos/zacoss.c
new file mode 100644
index 00000000..de6f3fe9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acos/zacoss.c
@@ -0,0 +1,147 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ * This fonction is a translation of fortran wacos write by Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>
+ * REFERENCE
+ * This is a Fortran-77 translation of an algorithm by
+ * T.E. Hull, T. F. Fairgrieve and P.T.P. Tang which
+ * appears in their article :
+ * "Implementing the Complex Arcsine and Arccosine
+ * Functions Using Exception Handling", ACM, TOMS,
+ * Vol 23, No. 3, Sept 1997, p. 299-335
+ */
+
+#include "acos.h"
+#include "atan.h"
+#include "log.h"
+#include "log1p.h"
+#include "sqrt.h"
+#include "abs.h"
+#include "lapack.h"
+#include "min.h"
+#include "max.h"
+
+#define localSign(x) (x>0 ? 1 : -1)
+
+doubleComplex zacoss(doubleComplex z) {
+ static double sdblPi = 3.1415926535897932384626433;
+ static double sdblPi_2 = 1.5707963267948966192313216;
+ static double sdblLn2 = 0.6931471805599453094172321;
+ static double sdblAcross = 1.5;
+ static double sdblBcross = 0.6417;
+
+ double dblLsup = dsqrts(getOverflowThreshold())/8.0;
+ double dblLinf = 4.0 * dsqrts(getUnderflowThreshold());
+ double dblEpsm = dsqrts(getRelativeMachinePrecision());
+
+ double dblAbsReal = dabss(zreals(z));
+ double dblAbsImg = dabss(zimags(z));
+ double dblSignReal = localSign(zreals(z));
+ double dblSignImg = localSign(zimags(z));
+
+ double dblR = 0, dblS = 0, dblA = 0, dblB = 0;
+
+ double dblTemp = 0;
+
+ double _pdblReal = 0;
+ double _pdblImg = 0;
+
+ if( min(dblAbsReal, dblAbsImg) > dblLinf && max(dblAbsReal, dblAbsImg) <= dblLsup)
+ {/* we are in the safe region */
+ dblR = dsqrts( (dblAbsReal + 1 )*(dblAbsReal + 1 ) + dblAbsImg*dblAbsImg);
+ dblS = dsqrts( (dblAbsReal - 1 )*(dblAbsReal - 1 ) + dblAbsImg*dblAbsImg);
+ dblA = 0.5 * ( dblR + dblS );
+ dblB = dblAbsReal / dblA;
+
+
+ /* compute the real part */
+ if(dblB <= sdblBcross)
+ _pdblReal = dacoss(dblB);
+ else if( dblAbsReal <= 1)
+ _pdblReal = datans(dsqrts(0.5 * (dblA + dblAbsReal) * (dblAbsImg*dblAbsImg / (dblR + (dblAbsReal + 1)) + (dblS + (1 - dblAbsReal)))) / dblAbsReal);
+ else
+ _pdblReal = datans((dblAbsImg * dsqrts(0.5 * ((dblA + dblAbsReal) / (dblR + (dblAbsReal + 1)) + (dblA + dblAbsReal) / (dblS + (dblAbsReal - 1))))) / dblAbsReal);
+
+ /* compute the imaginary part */
+ if(dblA <= sdblAcross)
+ {
+ double dblImg1 = 0;
+
+ if(dblAbsReal < 1)
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(y**2)/(S+(1.d0-x))) */
+ dblImg1 = 0.5 * (dblAbsImg*dblAbsImg / (dblR + (dblAbsReal + 1)) + dblAbsImg*dblAbsImg / (dblS + (1 - dblAbsReal)));
+ else
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(S+(x-1.d0))) */
+ dblImg1 = 0.5 * (dblAbsImg*dblAbsImg / (dblR + (dblAbsReal + 1)) + (dblS + (dblAbsReal - 1)));
+ /* ai = logp1(Am1 + sqrt(Am1*(A+1.d0))) */
+ dblTemp = dblImg1 + dsqrts(dblImg1 *( dblA + 1));
+ _pdblImg = dlog1ps(dblTemp);
+ }
+ else
+ /* ai = log(A + sqrt(A**2 - 1.d0)) */
+ _pdblImg = dlogs(dblA + dsqrts(dblA*dblA - 1));
+ }
+ else
+ {/* evaluation in the special regions ... */
+ if(dblAbsImg <= dblEpsm * dabss(dblAbsReal - 1))
+ {
+ if(dblAbsReal < 1)
+ {
+ _pdblReal = dacoss(dblAbsReal);
+ _pdblImg = dblAbsImg / dsqrts((1 + dblAbsReal) * (1 - dblAbsReal));
+ }
+ else
+ {
+ _pdblReal = 0;
+ if(dblAbsReal <= dblLsup)
+ {
+ dblTemp = (dblAbsReal - 1) + dsqrts((dblAbsReal - 1) * (dblAbsReal + 1));
+ _pdblImg = dlog1ps(dblTemp);
+ }
+ else
+ _pdblImg = sdblLn2 + dlogs(dblAbsReal);
+ }
+ }
+ else if(dblAbsImg < dblLinf)
+ {
+ _pdblReal = dsqrts(dblAbsImg);
+ _pdblImg = _pdblReal;
+ }
+ else if((dblEpsm * dblAbsImg - 1 >= dblAbsReal))
+ {
+ _pdblReal = sdblPi_2;
+ _pdblImg = sdblLn2 + dlogs(dblAbsImg);
+ }
+ else if(dblAbsReal > 1)
+ {
+ _pdblReal = datans(dblAbsImg / dblAbsReal);
+ dblTemp = (dblAbsReal / dblAbsImg)*(dblAbsReal / dblAbsImg);
+ _pdblImg = sdblLn2 + dlogs(dblAbsImg) + 0.5 * dlog1ps(dblTemp);
+ }
+ else
+ {
+ double dblTemp2 = dsqrts(1 + dblAbsImg*dblAbsImg);
+ _pdblReal = sdblPi_2;
+ dblTemp = 2 * dblAbsImg * (dblAbsImg + dblTemp2);
+ _pdblImg = 0.5 * dlog1ps(dblTemp);
+ }
+ }
+ if(dblSignReal < 0)
+ _pdblReal = sdblPi - _pdblReal;
+
+ if(dblAbsImg != 0 || dblSignReal < 0)
+ _pdblImg = - dblSignImg * _pdblImg;
+
+ return DoubleComplex(_pdblReal, _pdblImg);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosd/cacoss.c b/2.3-1/src/c/elementaryFunctions/acosd/cacoss.c
new file mode 100644
index 00000000..97420313
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosd/cacoss.c
@@ -0,0 +1,147 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ * This fonction is a translation of fortran wacos write by Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>
+ * REFERENCE
+ * This is a Fortran-77 translation of an algorithm by
+ * T.E. Hull, T. F. Fairgrieve and P.T.P. Tang which
+ * appears in their article :
+ * "Implementing the Complex Arcsine and Arccosine
+ * Functions Using Exception Handling", ACM, TOMS,
+ * Vol 23, No. 3, Sept 1997, p. 299-335
+ */
+
+#include "acos.h"
+#include "atan.h"
+#include "log.h"
+#include "log1p.h"
+#include "sqrt.h"
+#include "abs.h"
+#include "lapack.h"
+#include "min.h"
+#include "max.h"
+
+#define localSign(x) (x>0 ? 1.0f : -1.0f)
+
+floatComplex cacoss(floatComplex z) {
+ static float sfltPi = 3.1415926535897932384626433f;
+ static float sfltPi_2 = 1.5707963267948966192313216f;
+ static float sfltLn2 = 0.6931471805599453094172321f;
+ static float sfltAcross = 1.5f;
+ static float sfltBcross = 0.6417f;
+
+ float fltLsup = ssqrts((float) getOverflowThreshold())/8.0f;
+ float fltLinf = 4.0f * ssqrts((float) getUnderflowThreshold());
+ float fltEpsm = ssqrts((float) getRelativeMachinePrecision());
+
+ float fltAbsReal = sabss(creals(z));
+ float fltAbsImg = sabss(cimags(z));
+ float fltSignReal = localSign(creals(z));
+ float fltSignImg = localSign(cimags(z));
+
+ float fltR = 0, fltS = 0, fltA = 0, fltB = 0;
+
+ float fltTemp = 0;
+
+ float _pfltReal = 0;
+ float _pfltImg = 0;
+
+ if( min(fltAbsReal, fltAbsImg) > fltLinf && max(fltAbsReal, fltAbsImg) <= fltLsup)
+ {/* we are in the safe region */
+ fltR = ssqrts( (fltAbsReal + 1 )*(fltAbsReal + 1 ) + fltAbsImg*fltAbsImg);
+ fltS = ssqrts( (fltAbsReal - 1 )*(fltAbsReal - 1 ) + fltAbsImg*fltAbsImg);
+ fltA = 0.5f * ( fltR + fltS );
+ fltB = fltAbsReal / fltA;
+
+
+ /* compute the real part */
+ if(fltB <= sfltBcross)
+ _pfltReal = sacoss(fltB);
+ else if( fltAbsReal <= 1)
+ _pfltReal = satans(ssqrts(0.5f * (fltA + fltAbsReal) * (fltAbsImg*fltAbsImg / (fltR + (fltAbsReal + 1)) + (fltS + (1 - fltAbsReal)))) / fltAbsReal);
+ else
+ _pfltReal = satans((fltAbsImg * ssqrts(0.5f * ((fltA + fltAbsReal) / (fltR + (fltAbsReal + 1)) + (fltA + fltAbsReal) / (fltS + (fltAbsReal - 1))))) / fltAbsReal);
+
+ /* compute the imaginary part */
+ if(fltA <= sfltAcross)
+ {
+ float fltImg1 = 0;
+
+ if(fltAbsReal < 1)
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(y**2)/(S+(1.d0-x))) */
+ fltImg1 = 0.5f * (fltAbsImg*fltAbsImg / (fltR + (fltAbsReal + 1)) + fltAbsImg*fltAbsImg / (fltS + (1 - fltAbsReal)));
+ else
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(S+(x-1.d0))) */
+ fltImg1 = 0.5f * (fltAbsImg*fltAbsImg / (fltR + (fltAbsReal + 1)) + (fltS + (fltAbsReal - 1)));
+ /* ai = logp1(Am1 + sqrt(Am1*(A+1.d0))) */
+ fltTemp = fltImg1 + ssqrts(fltImg1 *( fltA + 1));
+ _pfltImg = slog1ps(fltTemp);
+ }
+ else
+ /* ai = log(A + sqrt(A**2 - 1.d0)) */
+ _pfltImg = slogs(fltA + ssqrts(fltA*fltA - 1));
+ }
+ else
+ {/* evaluation in the special regions ... */
+ if(fltAbsImg <= fltEpsm * sabss(fltAbsReal - 1))
+ {
+ if(fltAbsReal < 1)
+ {
+ _pfltReal = sacoss(fltAbsReal);
+ _pfltImg = fltAbsImg / ssqrts((1 + fltAbsReal) * (1 - fltAbsReal));
+ }
+ else
+ {
+ _pfltReal = 0;
+ if(fltAbsReal <= fltLsup)
+ {
+ fltTemp = (fltAbsReal - 1) + ssqrts((fltAbsReal - 1) * (fltAbsReal + 1));
+ _pfltImg = slog1ps(fltTemp);
+ }
+ else
+ _pfltImg = sfltLn2 + slogs(fltAbsReal);
+ }
+ }
+ else if(fltAbsImg < fltLinf)
+ {
+ _pfltReal = ssqrts(fltAbsImg);
+ _pfltImg = _pfltReal;
+ }
+ else if((fltEpsm * fltAbsImg - 1 >= fltAbsReal))
+ {
+ _pfltReal = sfltPi_2;
+ _pfltImg = sfltLn2 + slogs(fltAbsImg);
+ }
+ else if(fltAbsReal > 1)
+ {
+ _pfltReal = satans(fltAbsImg / fltAbsReal);
+ fltTemp = (fltAbsReal / fltAbsImg)*(fltAbsReal / fltAbsImg);
+ _pfltImg = sfltLn2 + slogs(fltAbsImg) + 0.5f * slog1ps(fltTemp);
+ }
+ else
+ {
+ float fltTemp2 = ssqrts(1 + fltAbsImg*fltAbsImg);
+ _pfltReal = sfltPi_2;
+ fltTemp = 2 * fltAbsImg * (fltAbsImg + fltTemp2);
+ _pfltImg = 0.5f * slog1ps(fltTemp);
+ }
+ }
+ if(fltSignReal < 0)
+ _pfltReal = sfltPi - _pfltReal;
+
+ if(fltAbsImg != 0 || fltSignReal < 0)
+ _pfltImg = - fltSignImg * _pfltImg;
+
+ return FloatComplex(_pfltReal, _pfltImg);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosd/dacosda.c b/2.3-1/src/c/elementaryFunctions/acosd/dacosda.c
new file mode 100644
index 00000000..2e95e9fc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosd/dacosda.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acosd.h"
+
+void dacosda(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dacosds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosd/dacosds.c b/2.3-1/src/c/elementaryFunctions/acosd/dacosds.c
new file mode 100644
index 00000000..8f59dab6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosd/dacosds.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acosd.h"
+
+double dacosds(double x)
+{
+ return ((acos(x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosd/sacosda.c b/2.3-1/src/c/elementaryFunctions/acosd/sacosda.c
new file mode 100644
index 00000000..440d9dc3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosd/sacosda.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acosd.h"
+
+void sacosda(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sacosds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosd/sacosds.c b/2.3-1/src/c/elementaryFunctions/acosd/sacosds.c
new file mode 100644
index 00000000..c166ff0e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosd/sacosds.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acosd.h"
+
+double sacosds(float x)
+{
+ return ((acos(x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/Makefile.am b/2.3-1/src/c/elementaryFunctions/acosh/Makefile.am
new file mode 100644
index 00000000..467f2ffb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/Makefile.am
@@ -0,0 +1,72 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAcosh_la_CFLAGS = -I ../../type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAcosh.la
+
+libAcosh_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sacoshs.c \
+ dacoshs.c \
+ cacoshs.c \
+ zacoshs.c \
+ sacosha.c \
+ dacosha.c \
+ cacosha.c \
+ zacosha.c
+
+HEAD = ../includes/acosh.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/acos/libAcos.la \
+ $(top_builddir)/src/c/elementaryFunctions/acosh/libAcosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatAcosh testDoubleAcosh
+
+TESTS = testFloatAcosh testDoubleAcosh
+
+#
+# -*- Hyperbolic Acosine Tests -*-
+#
+testFloatAcosh_SOURCES = testAcosh.h testFloatAcosh.c
+testFloatAcosh_CFLAGS = $(check_INCLUDES)
+testFloatAcosh_LDADD = $(check_LDADD)
+
+testDoubleAcosh_SOURCES = testAcosh.h testDoubleAcosh.c
+testDoubleAcosh_CFLAGS = $(check_INCLUDES)
+testDoubleAcosh_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/Makefile.in b/2.3-1/src/c/elementaryFunctions/acosh/Makefile.in
new file mode 100644
index 00000000..4517285e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/Makefile.in
@@ -0,0 +1,816 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatAcosh$(EXEEXT) testDoubleAcosh$(EXEEXT)
+TESTS = testFloatAcosh$(EXEEXT) testDoubleAcosh$(EXEEXT)
+subdir = src/c/elementaryFunctions/acosh
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAcosh_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAcosh_la-sacoshs.lo libAcosh_la-dacoshs.lo \
+ libAcosh_la-cacoshs.lo libAcosh_la-zacoshs.lo \
+ libAcosh_la-sacosha.lo libAcosh_la-dacosha.lo \
+ libAcosh_la-cacosha.lo libAcosh_la-zacosha.lo
+am_libAcosh_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAcosh_la_OBJECTS = $(am_libAcosh_la_OBJECTS)
+libAcosh_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAcosh_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleAcosh_OBJECTS = \
+ testDoubleAcosh-testDoubleAcosh.$(OBJEXT)
+testDoubleAcosh_OBJECTS = $(am_testDoubleAcosh_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/acos/libAcos.la \
+ $(top_builddir)/src/c/elementaryFunctions/acosh/libAcosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la
+testDoubleAcosh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleAcosh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleAcosh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatAcosh_OBJECTS = testFloatAcosh-testFloatAcosh.$(OBJEXT)
+testFloatAcosh_OBJECTS = $(am_testFloatAcosh_OBJECTS)
+testFloatAcosh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatAcosh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatAcosh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAcosh_la_SOURCES) $(testDoubleAcosh_SOURCES) \
+ $(testFloatAcosh_SOURCES)
+DIST_SOURCES = $(libAcosh_la_SOURCES) $(testDoubleAcosh_SOURCES) \
+ $(testFloatAcosh_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAcosh_la_CFLAGS = -I ../../type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAcosh.la
+libAcosh_la_SOURCES = $(HEAD) $(SRC)
+SRC = sacoshs.c \
+ dacoshs.c \
+ cacoshs.c \
+ zacoshs.c \
+ sacosha.c \
+ dacosha.c \
+ cacosha.c \
+ zacosha.c
+
+HEAD = ../includes/acosh.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/acos/libAcos.la \
+ $(top_builddir)/src/c/elementaryFunctions/acosh/libAcosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la \
+ @LIBMATH@
+
+
+#
+# -*- Hyperbolic Acosine Tests -*-
+#
+testFloatAcosh_SOURCES = testAcosh.h testFloatAcosh.c
+testFloatAcosh_CFLAGS = $(check_INCLUDES)
+testFloatAcosh_LDADD = $(check_LDADD)
+testDoubleAcosh_SOURCES = testAcosh.h testDoubleAcosh.c
+testDoubleAcosh_CFLAGS = $(check_INCLUDES)
+testDoubleAcosh_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/acosh/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/acosh/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAcosh.la: $(libAcosh_la_OBJECTS) $(libAcosh_la_DEPENDENCIES)
+ $(libAcosh_la_LINK) -rpath $(pkglibdir) $(libAcosh_la_OBJECTS) $(libAcosh_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleAcosh$(EXEEXT): $(testDoubleAcosh_OBJECTS) $(testDoubleAcosh_DEPENDENCIES)
+ @rm -f testDoubleAcosh$(EXEEXT)
+ $(testDoubleAcosh_LINK) $(testDoubleAcosh_OBJECTS) $(testDoubleAcosh_LDADD) $(LIBS)
+testFloatAcosh$(EXEEXT): $(testFloatAcosh_OBJECTS) $(testFloatAcosh_DEPENDENCIES)
+ @rm -f testFloatAcosh$(EXEEXT)
+ $(testFloatAcosh_LINK) $(testFloatAcosh_OBJECTS) $(testFloatAcosh_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-cacosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-cacoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-dacosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-dacoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-sacosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-sacoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-zacosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAcosh_la-zacoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatAcosh-testFloatAcosh.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAcosh_la-sacoshs.lo: sacoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-sacoshs.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-sacoshs.Tpo -c -o libAcosh_la-sacoshs.lo `test -f 'sacoshs.c' || echo '$(srcdir)/'`sacoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-sacoshs.Tpo $(DEPDIR)/libAcosh_la-sacoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sacoshs.c' object='libAcosh_la-sacoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-sacoshs.lo `test -f 'sacoshs.c' || echo '$(srcdir)/'`sacoshs.c
+
+libAcosh_la-dacoshs.lo: dacoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-dacoshs.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-dacoshs.Tpo -c -o libAcosh_la-dacoshs.lo `test -f 'dacoshs.c' || echo '$(srcdir)/'`dacoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-dacoshs.Tpo $(DEPDIR)/libAcosh_la-dacoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dacoshs.c' object='libAcosh_la-dacoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-dacoshs.lo `test -f 'dacoshs.c' || echo '$(srcdir)/'`dacoshs.c
+
+libAcosh_la-cacoshs.lo: cacoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-cacoshs.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-cacoshs.Tpo -c -o libAcosh_la-cacoshs.lo `test -f 'cacoshs.c' || echo '$(srcdir)/'`cacoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-cacoshs.Tpo $(DEPDIR)/libAcosh_la-cacoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cacoshs.c' object='libAcosh_la-cacoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-cacoshs.lo `test -f 'cacoshs.c' || echo '$(srcdir)/'`cacoshs.c
+
+libAcosh_la-zacoshs.lo: zacoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-zacoshs.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-zacoshs.Tpo -c -o libAcosh_la-zacoshs.lo `test -f 'zacoshs.c' || echo '$(srcdir)/'`zacoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-zacoshs.Tpo $(DEPDIR)/libAcosh_la-zacoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zacoshs.c' object='libAcosh_la-zacoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-zacoshs.lo `test -f 'zacoshs.c' || echo '$(srcdir)/'`zacoshs.c
+
+libAcosh_la-sacosha.lo: sacosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-sacosha.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-sacosha.Tpo -c -o libAcosh_la-sacosha.lo `test -f 'sacosha.c' || echo '$(srcdir)/'`sacosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-sacosha.Tpo $(DEPDIR)/libAcosh_la-sacosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sacosha.c' object='libAcosh_la-sacosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-sacosha.lo `test -f 'sacosha.c' || echo '$(srcdir)/'`sacosha.c
+
+libAcosh_la-dacosha.lo: dacosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-dacosha.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-dacosha.Tpo -c -o libAcosh_la-dacosha.lo `test -f 'dacosha.c' || echo '$(srcdir)/'`dacosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-dacosha.Tpo $(DEPDIR)/libAcosh_la-dacosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dacosha.c' object='libAcosh_la-dacosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-dacosha.lo `test -f 'dacosha.c' || echo '$(srcdir)/'`dacosha.c
+
+libAcosh_la-cacosha.lo: cacosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-cacosha.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-cacosha.Tpo -c -o libAcosh_la-cacosha.lo `test -f 'cacosha.c' || echo '$(srcdir)/'`cacosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-cacosha.Tpo $(DEPDIR)/libAcosh_la-cacosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cacosha.c' object='libAcosh_la-cacosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-cacosha.lo `test -f 'cacosha.c' || echo '$(srcdir)/'`cacosha.c
+
+libAcosh_la-zacosha.lo: zacosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -MT libAcosh_la-zacosha.lo -MD -MP -MF $(DEPDIR)/libAcosh_la-zacosha.Tpo -c -o libAcosh_la-zacosha.lo `test -f 'zacosha.c' || echo '$(srcdir)/'`zacosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAcosh_la-zacosha.Tpo $(DEPDIR)/libAcosh_la-zacosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zacosha.c' object='libAcosh_la-zacosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAcosh_la_CFLAGS) $(CFLAGS) -c -o libAcosh_la-zacosha.lo `test -f 'zacosha.c' || echo '$(srcdir)/'`zacosha.c
+
+testDoubleAcosh-testDoubleAcosh.o: testDoubleAcosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAcosh_CFLAGS) $(CFLAGS) -MT testDoubleAcosh-testDoubleAcosh.o -MD -MP -MF $(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Tpo -c -o testDoubleAcosh-testDoubleAcosh.o `test -f 'testDoubleAcosh.c' || echo '$(srcdir)/'`testDoubleAcosh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Tpo $(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAcosh.c' object='testDoubleAcosh-testDoubleAcosh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAcosh_CFLAGS) $(CFLAGS) -c -o testDoubleAcosh-testDoubleAcosh.o `test -f 'testDoubleAcosh.c' || echo '$(srcdir)/'`testDoubleAcosh.c
+
+testDoubleAcosh-testDoubleAcosh.obj: testDoubleAcosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAcosh_CFLAGS) $(CFLAGS) -MT testDoubleAcosh-testDoubleAcosh.obj -MD -MP -MF $(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Tpo -c -o testDoubleAcosh-testDoubleAcosh.obj `if test -f 'testDoubleAcosh.c'; then $(CYGPATH_W) 'testDoubleAcosh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAcosh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Tpo $(DEPDIR)/testDoubleAcosh-testDoubleAcosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAcosh.c' object='testDoubleAcosh-testDoubleAcosh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAcosh_CFLAGS) $(CFLAGS) -c -o testDoubleAcosh-testDoubleAcosh.obj `if test -f 'testDoubleAcosh.c'; then $(CYGPATH_W) 'testDoubleAcosh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAcosh.c'; fi`
+
+testFloatAcosh-testFloatAcosh.o: testFloatAcosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAcosh_CFLAGS) $(CFLAGS) -MT testFloatAcosh-testFloatAcosh.o -MD -MP -MF $(DEPDIR)/testFloatAcosh-testFloatAcosh.Tpo -c -o testFloatAcosh-testFloatAcosh.o `test -f 'testFloatAcosh.c' || echo '$(srcdir)/'`testFloatAcosh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAcosh-testFloatAcosh.Tpo $(DEPDIR)/testFloatAcosh-testFloatAcosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAcosh.c' object='testFloatAcosh-testFloatAcosh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAcosh_CFLAGS) $(CFLAGS) -c -o testFloatAcosh-testFloatAcosh.o `test -f 'testFloatAcosh.c' || echo '$(srcdir)/'`testFloatAcosh.c
+
+testFloatAcosh-testFloatAcosh.obj: testFloatAcosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAcosh_CFLAGS) $(CFLAGS) -MT testFloatAcosh-testFloatAcosh.obj -MD -MP -MF $(DEPDIR)/testFloatAcosh-testFloatAcosh.Tpo -c -o testFloatAcosh-testFloatAcosh.obj `if test -f 'testFloatAcosh.c'; then $(CYGPATH_W) 'testFloatAcosh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAcosh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAcosh-testFloatAcosh.Tpo $(DEPDIR)/testFloatAcosh-testFloatAcosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAcosh.c' object='testFloatAcosh-testFloatAcosh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAcosh_CFLAGS) $(CFLAGS) -c -o testFloatAcosh-testFloatAcosh.obj `if test -f 'testFloatAcosh.c'; then $(CYGPATH_W) 'testFloatAcosh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAcosh.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/cacosha.c b/2.3-1/src/c/elementaryFunctions/acosh/cacosha.c
new file mode 100644
index 00000000..925ddf88
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/cacosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acosh.h"
+
+void cacosha(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = cacoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/cacoshs.c b/2.3-1/src/c/elementaryFunctions/acosh/cacoshs.c
new file mode 100644
index 00000000..15238215
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/cacoshs.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula :
+//
+// acosh(z) = sign(-imag(acos(z)) i acos(z)
+//
+// sign(x) = 1 if x >= 0
+// | -1 if x < 0
+*/
+
+#include "acosh.h"
+#include "acos.h"
+
+#define localSign(x) x >= 0 ? 1.0f : -1.0f
+
+floatComplex cacoshs(floatComplex z) {
+ floatComplex acos_z = cacoss(z);
+ float sign = localSign(-cimags(acos_z));
+
+ return FloatComplex(-sign * cimags(acos_z), sign * creals(acos_z));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/dacosha.c b/2.3-1/src/c/elementaryFunctions/acosh/dacosha.c
new file mode 100644
index 00000000..d681a052
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/dacosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acosh.h"
+
+void dacosha(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dacoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/dacoshs.c b/2.3-1/src/c/elementaryFunctions/acosh/dacoshs.c
new file mode 100644
index 00000000..a5c13c8b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/dacoshs.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acosh.h"
+
+#ifdef _MSC_VER
+double acosh(double x)
+{
+ return log(x + sqrt(x * x - 1));
+}
+#endif
+
+double dacoshs(double x) {
+ return (acosh(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/sacosha.c b/2.3-1/src/c/elementaryFunctions/acosh/sacosha.c
new file mode 100644
index 00000000..12b748cf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/sacosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acosh.h"
+
+void sacosha(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sacoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/sacoshs.c b/2.3-1/src/c/elementaryFunctions/acosh/sacoshs.c
new file mode 100644
index 00000000..d2a9ae53
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/sacoshs.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acosh.h"
+
+#ifdef _MSC_VER
+float acoshf (float x)
+{
+ return (float) log(x + sqrt(x * x - 1));
+}
+#endif
+
+float sacoshs(float x) {
+ return (acoshf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/testAcosh.h b/2.3-1/src/c/elementaryFunctions/acosh/testAcosh.h
new file mode 100644
index 00000000..04f91707
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/testAcosh.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTACOSH_H_
+#define _TESTACOSH_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include "acosh.h"
+
+
+void sacoshsTest(void);
+
+void dacoshsTest(void);
+
+void cacoshsTest(void);
+
+void zacoshsTest(void);
+
+void sacoshaTest(void);
+
+void dacoshaTest(void);
+
+void cacoshaTest(void);
+
+void zacoshaTest(void);
+
+int testAcosh(void);
+
+#endif /* ! _TESTACOSH_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/testDoubleAcosh.c b/2.3-1/src/c/elementaryFunctions/acosh/testDoubleAcosh.c
new file mode 100644
index 00000000..60a041db
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/testDoubleAcosh.c
@@ -0,0 +1,512 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "isnan.h"
+#include "testAcosh.h"
+
+#ifdef _MSC_VER
+#include <float.h>
+#define isnan(x) _isnan((double)x)
+#endif
+
+
+#define IN {38.746443623676896095276,39.8779044859111309052,99.6399083640426397324,\
+93.207842670381069183350,6.8147667217999696731567,71.874653641134500503540,\
+65.928971720859408378601,43.781969323754310607910,95.70061699487268924713,\
+39.777786191552877426147,54.149620747193694114685,14.754852838814258575439,\
+91.972588421776890754700,41.853474546223878860474,90.448315022513270378113,\
+32.027477025985717773438,57.482325518503785133362,75.726259034126996994019,\
+32.547289272770285606384,50.125551037490367889404,26.862081931903958320618,\
+11.706684622913599014282,36.675705714151263237000,87.538864836096763610840,\
+52.483216533437371253967,76.861125137656927108765,82.899243896827101707458,\
+64.99033216387033462524,56.250627012923359870911,21.698794979602098464966,\
+93.22312804870307445526,93.5097210109233856201,97.608120972290635108948,\
+91.35094834491610527039,26.843591919168829917908,9.1870715841650962829590,\
+17.129724519327282905579,73.117265943437814712524,86.922781122848391532898,\
+1.4808017760515213012695,65.071928361430764198303,42.254429217427968978882,\
+23.262092983350157737732,31.955500133335590362549,74.261871399357914924622,\
+77.881882060319185256958,65.248953877016901969910,90.324406325817108154297,\
+86.69646182097494602203,70.879780035465955734253,69.452034076675772666931,\
+84.671579115092754364014,93.227435695007443428040,95.654127094894647598267,\
+16.239900095388293266296,12.728751823306083679199,95.707353064790368080139,\
+67.644099798053503036499,39.798104530200362205505,11.081875301897525787354,\
+50.97153154201805591583,58.446559030562639236450,25.919713405892252922058,\
+29.182348400354385375977,6.0309174004942178726196,90.43274922296404838562,\
+61.944271018728613853455,25.037935934960842132568,83.850894169881939888000,\
+82.732185069471597671509,73.220202280208468437195,29.458374157547950744629,\
+29.091028729453682899475,70.458725746721029281616,30.465652560815215110779,\
+75.730663724243640899658,73.18075490184128284454,69.053836632519960403442,\
+62.402765033766627311707,41.599050164222717285156,28.105994546785950660706,\
+5.6220385245978832244873,58.040395518764853477478,0.4246918484568595886230,\
+68.2817161548882722855,89.133544359356164932251,92.980264825746417045593,\
+28.40001545846462249756,9.885430941358208656311,41.369083430618047714233,\
+64.121548598632216453552,64.692758955061435699463,47.02662643976509571075,\
+60.481913108378648757935,67.138904659077525138855,71.394702047109603881836,\
+54.127137595787644386292,39.052018057554960250854,1.1089378502219915390015,\
+90.150084160268306732178,13.887455360963940620422,8.5074969567358493804932,\
+34.66010238043963909149,42.338709905743598937988,80.213972786441445351,\
+31.7881367169320583344,18.021041667088866233826,69.688742049038410186768,\
+35.482168616726994514465,16.12617420032620429993,75.34236568026244640350,\
+62.194181978702545166016,51.510728383436799049377,67.819245439022779464722,\
+61.666865786537528038025,70.212037675082683563232,13.621602999046444892883,\
+60.870522353798151016235,18.923167092725634574890,47.614179179072380065918,\
+17.161004850640892982483,41.371036972850561141968,15.31781828962266445160,\
+22.868881560862064361572,95.856341393664479255676,39.499193150550127029419,\
+2.500818995758891106,44.927055388689041137695,91.384086245670914649963,\
+11.012465786188840866089,74.87958460114896297455,0.7881646975874900817871,\
+23.523587780073285102844,80.106287542730569839478,65.456348611041903495789,\
+51.620832458138465881348,70.271815219894051551819,5.5151230655610561370850,\
+62.56400248967111110687,84.313133545219898223877,17.294042231515049934387,\
+41.730730701237916946411,81.875373004004359245300,25.327575206756591796875,\
+86.085468018427491188049,17.212611716240644454956,78.060937067493796348572,\
+13.735765032470226287842,0.2187759149819612503052,1.4656470157206058502197,\
+30.469974083825945854187,80.307766422629356384277,99.052629480138421058655,\
+82.85992136225104331970,87.21015579067170619965,29.531141556799411773682,\
+58.27610609121620655060,29.06773509457707405090,2.0005736034363508224,\
+71.4346818625926971436,26.664068037644028663635,51.992803346365690231323,\
+48.17320345900952816010,0.0918259844183921813965,38.418471114709973335266,\
+49.06664276495575904846,44.197808159515261650085,65.678765252232551574707,\
+10.470610717311501502991,42.787145730108022689819,75.105277216061949729919,\
+36.962236650288105010986,84.119305433705449104309,90.374342072755098342896,\
+44.184404192492365837097,1.0920032858848571777344,20.380018139258027076721,\
+85.418348293751478195190,39.327101549133658409119,97.573022358119487762451,\
+8.4199145901948213577271,23.39450428262352943420,48.397052986547350883484,\
+33.292300626635551452637,96.453859517350792884827,52.920697536319494247437,\
+7.9968032892793416976929,75.475437380373477935791,4.476350219920277596,\
+84.631874877959489822388,20.008285669609904289246,69.44785490632057189941,\
+28.204387659206986427307,79.546741675585508346558,20.281786611303687095642,\
+78.075716458261013031006,93.606285052374005317688,88.801648560911417007446,\
+33.848348213359713554382,89.761531725525856018066}
+
+#define RESULT {4.3500195892822599574856,4.378812333443298676627,5.2946847693089331698957,\
+5.2279502699832844925254,2.6068118507181217147206,4.968022463585481496295,\
+4.8816676362403299549442,4.4722388068202851840738,5.2543446283333992141706,\
+4.3762977630646631155287,4.6848128785767624293612,3.3835688928264802122214,\
+5.2146082054939908445590,4.4271792498758397726988,5.1978952030053422461719,\
+4.159497560939560578674,4.7445490293632399669832,5.0202285648475850621253,\
+4.1756051841813626168687,4.6075785448582253778227,3.9835162329116351465075,\
+3.1514779837977200394050,4.2950758361772223281605,5.165197419194649697261,\
+4.653549840642725143880,5.035105083560019956224,5.1107367420045859418565,\
+4.8673265089936572636020,4.7228853485288873059744,3.7698725167565876326137,\
+5.2281142583800894740875,5.2311839874435639430317,5.2740816359097371091025,\
+5.2078258853539018957690,3.982827186610214287299,2.9079691610609703644741,\
+3.5331093207527803912171,4.9851649496034715625115,5.1581342419725935144470,\
+0.9450506373811344840163,4.8685813827251553931319,4.4367163112396088564537,\
+3.8395099847061766595857,4.1572465837028591550961,5.0006994941965512424531,\
+5.0482993082581542054754,4.8712984679982609392823,5.1965242406243383754827,\
+5.1555269912574592794385,4.954082618091184997411,4.9337317049920867972901,\
+5.1318923054243690273779,5.228160467885317963521,5.2538586990129676479455,\
+3.4796690893012534040452,3.2354639460120244720542,5.2544150166005954005755,\
+4.9073526741507107473694,4.3768085901327413722584,3.0964161555968114925008,\
+4.6243182142058252281913,4.7611868033967539304285,3.9477786701409951497510,\
+4.0664175090632737052943,2.4831009250018341028010,5.1977230816033159754852,\
+4.8193171469932529760172,3.9131402651137854320496,5.1221517738388655516246,\
+5.1087193584020944570057,4.98657191625376672306,4.0758371911626332106948,\
+4.0632814774108050315249,4.9481239065017428302440,4.1094776238806378643176,\
+5.0202867341820684998766,4.9860329708595516606806,4.9279811897230469952547,\
+4.8266925606060153697285,4.421080015153528108840,4.0288134359166507536543,\
+2.4118364183807097234080,4.7542122019999739634954,0,\
+4.9167355873994562642793,5.1832514554357551617159,5.2255055264178071894321,\
+4.0392267678246307482937,2.9816410740582028893186,4.4155348942144980739499,\
+4.8538668500531736427206,4.8627367182462748473881,4.5437480774189333843083,\
+4.7954231948046981415246,4.8998553915953095838631,4.9613217960209823331752,\
+4.6843975172654603866818,4.3578777660333960497496,0.4626347638559775710121,\
+5.1945923008314265345575,3.3228343258666956927527,2.830622803369744922009,\
+4.238528249750794785200,4.438709481897562980635,5.077806047884725337838,\
+4.1519928438683244564800,3.5839165427001460351164,4.9371344840241793150426,\
+4.2619788264190443527468,3.4726281293145686568380,5.0151457380383783757338,\
+4.8233440014012511909414,4.6348430510092004652734,4.9099388325030934865367,\
+4.81482819845952114690,4.9446162371720561168331,3.3034540778469194677314,\
+4.8018287252966844746993,3.6328352359975357721567,4.556167488561304601546,\
+3.5349368514717505185274,4.41558212917596915048,3.4210967363570983224008,\
+3.8224459155669441301484,5.2559705982049909067655,4.3692671498839636967659,\
+1.5671566063449566819088,4.4980634827120455909721,5.2081885950679547292452,\
+3.0901072205487807309510,5.0089838747007107144782,0,\
+3.850698741029123794988,5.076462566530570263978,4.8744723131002718474747,\
+4.6369786693462113902342,4.9454673471881154256380,2.3923187222394570738970,\
+4.8292733779221936885051,5.127649658742538640865,3.5426723072020398497273,\
+4.424241396092424949416,5.0983081346685077406278,3.9246509637740216724922,\
+5.1484540607983912963164,3.537944651477085589164,5.0505959169093319616195,\
+3.3118225003889145696689,0,0.9310418690232507010762,\
+4.1096195393026562214800,5.0789747485012091132717,5.2887730188734272118722,\
+5.1102622536361952398920,5.1614350980940946200803,4.0783057415377843568649,\
+4.7582657239633334711471,4.0624799671967695147146,1.3172890037212539038336,\
+4.9618816771260449982606,3.9761122565887623281,4.64415999832871140285,\
+4.5678423566873336270078,0,4.3415161209508754680542,\
+4.5862227542495350718355,4.481694375737592217490,4.8778648861550966131517,\
+3.0394313734202933474648,4.4492483198356360674097,5.0119936831694982259933,\
+4.3028609023006350042806,5.1253479422290126876760,5.1970769705972195140475,\
+4.4813909798397162376205,0.4257373352329655857851,3.7070996451820255046528,\
+5.1406738437618608728030,4.3648993866947414232982,5.2737219653314042489001,\
+2.820201721217977297584,3.8451912168199942065883,4.5724793527790357217100,\
+4.1982477070823893683382,5.2621850617105074832125,4.661852422144622920541,\
+2.7682565538529817494862,5.0169105620070073570105,2.1792385497944919414692,\
+5.131423242241443638534,3.6886685835548016498819,4.9336715234659216378077,\
+4.032310316197459165721,5.0694524637856641646749,3.7022621441401133424165,\
+5.0507852459760567143121,5.2322161767096924123166,5.1795206909289932539764,\
+4.2148191048546337356129,5.19027265701442619417}
+
+
+#define ZRIN {0.1483933464623987674713,0.5565875237807631492615,0.4628333351574838161469,\
+0.9158247429877519607544,0.0444016349501907825470,0.8175177471712231636047,\
+0.5320580708794295787811,0.2989391684532165527344,0.5029047676362097263336,\
+0.4266923693940043449402,0.3965902938507497310638,0.7440190296620130538940,\
+0.7921002809889614582062,0.5715918401256203651428,0.4155966262333095073700,\
+0.2953372262418270111084,0.1075767637230455875397,0.7572548976168036460876,\
+0.93660886352881789207,0.7694978956133127212524,0.0902581927366554737091,\
+0.4731486858800053596497,0.4765542480163276195526,0.6361737176775932312012,\
+0.5064576440490782260895,0.9049607468768954277039,0.6742701171897351741791,\
+0.3656400945037603378296,0.6837903787381947040558,0.4100628877058625221252,\
+0.3582529271952807903290,0.7118562050163745880127,0.7966963038779795169830,\
+0.9753969227895140647888,0.5733916512690484523773,0.8998429346829652786255,\
+0.5953218084760010242462,0.3765322910621762275696,0.9104355531744658946991,\
+0.1861076802015304565430,0.6715109744109213352203,0.2566455481573939323425,\
+0.9819463356398046016693,0.7608660291880369186401,0.8556561623699963092804,\
+0.8441717335954308509827,0.3884846637956798076630,0.4608103148639202117920,\
+0.8381579727865755558014,0.5278776129707694053650,0.0187810636125504970551,\
+0.2611750457435846328735,0.6092445817776024341583,0.0081067951396107673645,\
+0.0276411953382194042206,0.0158492103219032287598,0.8109004520811140537262,\
+0.2429467244073748588562,0.3353355019353330135345,0.4142854567617177963257,\
+0.5946544189937412738800,0.9080675477162003517151,0.992223232518881559372,\
+0.6239561475813388824463,0.0789771513082087039948,0.5889828568324446678162,\
+0.2523608407936990261078,0.5871062893420457839966,0.0000379872508347034454,\
+0.4244823055341839790344,0.69984475849196314812,0.4405533373355865478516,\
+0.6495711454190313816071,0.4199861017987132072449,0.2716385438106954097748,\
+0.0272838752716779708862,0.6936013107188045978546,0.1495713749900460243,\
+0.5206344048492610454559,0.9685971699655055999756,0.9657785953022539615631,\
+0.0654204180464148521423,0.9626990980468690395355,0.2655456010252237319946,\
+0.8290728745050728321075,0.1334408046677708625793,0.8514542016200721263885,\
+0.8984219655394554138184,0.1995774977840483188629,0.0138073815032839775085,\
+0.2245407640002667903900,0.3930436577647924423218,0.8261723746545612812042,\
+0.5051761353388428688049,0.5651183272711932659149,0.822583723813295364380,\
+0.9197964356280863285065,0.4713199352845549583435,0.9223483256064355373383,\
+0.2136987913399934768677,0.7260794681496918201447,0.9689361499622464179993,\
+0.8346118587069213390350,0.8257038742303848266602,0.1350833275355398654938,\
+0.7953761396929621696472,0.8992118402384221553802,0.2715440522879362106323,\
+0.9219025229103863239288,0.1750466236844658851624,0.3323095212690532207489,\
+0.9493130259215831756592,0.7118741781450808048248,0.8032329222187399864197,\
+0.3628453887067735195160,0.7530685458332300186157,0.2641473677940666675568,\
+0.9660940738394856452942,0.8041944387368857860565,0.5316947177052497863770,\
+0.1673618280328810214996,0.955579827539622783661,0.6473058252595365047455,\
+0.2645611818879842758179,0.5411860425956547260284,0.4980195099487900733948,\
+0.0190768833272159099579,0.4227291680872440338135,0.8374647037126123905182,\
+0.4151327675208449363708,0.3497115275822579860687,0.4844544250518083572388,\
+0.3347255480475723743439,0.2362121837213635444641,0.0928130256943404674530,\
+0.0737370252609252929688,0.4197955676354467868805,0.9802277712151408195496,\
+0.8419611467979848384857,0.6906680446118116378784,0.2502765958197414875031,\
+0.8266033390536904335022,0.1875236849300563335419,0.5023231171071529388428,\
+0.8916302681900560855865,0.8934147348627448081970,0.1574523574672639369965,\
+0.1629528645426034927368,0.5226223585195839405060,0.8417599620297551155090,\
+0.5858130785636603832245,0.1322202011942863464355,0.8028764897026121616364,\
+0.5250511718913912773132,0.2528006075881421566010,0.4602345135062932968140,\
+0.996287219692021608353,0.4019785309210419654846,0.1399875725619494915009,\
+0.5081327147781848907471,0.9440425024367868900299,0.9318959629163146018982,\
+0.6445578685961663722992,0.5729571748524904251099,0.4810055238194763660431,\
+0.6713787661865353584290,0.0962744313292205333710,0.8855805248022079467773,\
+0.3892059125937521457672,0.2907031057402491569519,0.4209313853643834590912,\
+0.9504273366183042526245,0.482190326321870088577,0.2289973804727196693420,\
+0.2940405677072703838348,0.6957426778972148895264,0.9139824123121798038483,\
+0.2068154653534293174744,0.6285024262033402919769,0.4031575415283441543579,\
+0.3064021435566246509552,0.3148818286135792732239,0.7400112929753959178925,\
+0.8853011503815650939941,0.788494529668241739273,0.8977585239335894584656,\
+0.0339450328610837459564,0.8802101369947195053101,0.5418177028186619281769,\
+0.9511840576305985450745,0.5574890668503940105438,0.1312845982611179351807,\
+0.9453403786756098270416,0.2518341308459639549255,0.2607447705231606960297,\
+0.1215410251170396804810,0.9136986923404037952423,0.9382542567327618598938,\
+0.3105722474865615367889,0.9309121072292327880859}
+
+#define ZIIN {0.5225624092854559421539,0.7617142526432871818542,0.3009174778126180171967,\
+0.1853434126824140548706,0.5148605112917721271515,0.7257346073165535926819,\
+0.7033738414756953716278,0.5664369426667690277100,0.7816161573864519596100,\
+0.3330347230657935142517,0.4017280167900025844574,0.8503915611654520034790,\
+0.41114101978018879890,0.1586530329659581184387,0.6542402538470923900604,\
+0.9449902996420860290527,0.400338994804769754410,0.9679889930412173271179,\
+0.32740902295336127281,0.8933845367282629013062,0.6218692888505756855011,\
+0.0985169494524598121643,0.7449700380675494670868,0.3134250529110431671143,\
+0.1409188793040812015533,0.3239218806847929954529,0.9958796552382409572601,\
+0.2412899602204561233521,0.4753343504853546619415,0.9194070147350430488586,\
+0.0450326460413634777069,0.8481595069169998168945,0.8928631045855581760406,\
+0.1469233212992548942566,0.4904643460176885128021,0.9986877571791410446167,\
+0.3392539476044476032257,0.8790708789601922035217,0.3107871781103312969208,\
+0.1200211457908153533936,0.0909670502878725528717,0.5804221173748373985291,\
+0.446611551102250814438,0.3501139078289270401001,0.7262432840652763843536,\
+0.3650169344618916511536,0.5597011330537497997284,0.434090383350849151611,\
+0.5082829319871962070465,0.3487796885892748832703,0.8136124997399747371674,\
+0.337404197081923484802,0.7742837746627628803253,0.0156080657616257667542,\
+0.0195691580884158611298,0.0445443131029605865479,0.4240885511972010135651,\
+0.8158838218078017234802,0.9913199446164071559906,0.5120379645377397537231,\
+0.1021917951293289661407,0.7161553995683789253235,0.4527317988686263561249,\
+0.2445004582405090332031,0.1668560453690588474274,0.9187424210831522941589,\
+0.3418669118545949459076,0.4624818544834852218628,0.0400874321348965167999,\
+0.4700120547786355018616,0.8552942494861781597137,0.3308605216443538665771,\
+0.0322206378914415836334,0.9760772576555609703064,0.0763854510150849819183,\
+0.2165335658937692642212,0.2348632332868874073029,0.1446668924763798713684,\
+0.5313451024703681468964,0.4441541358828544616699,0.5759493880905210971832,\
+0.3719177199527621269226,0.5167253850959241390228,0.5186656024307012557983,\
+0.6306529571302235126495,0.0928382659330964088440,0.5421750987879931926727,\
+0.2833826132118701934814,0.2819099412299692630768,0.1141945635899901390076,\
+0.7321730605326592922211,0.9823690224438905715942,0.8243003231473267078400,\
+0.6485677706077694892883,0.5304958778433501720428,0.6958626955747604370117,\
+0.6050392785109579563141,0.2683336613699793815613,0.5511700971983373165131,\
+0.1174971889704465866089,0.7958277617581188678741,0.4983139941468834877014,\
+0.9196587274782359600067,0.1420703046023845672607,0.389312467072159051895,\
+0.2658497532829642295837,0.9480321384035050868988,0.2326095197349786758423,\
+0.0139051643200218677521,0.9270462663844227790833,0.4878733339719474315643,\
+0.0354842916131019592285,0.6607114099897444248199,0.0879401965066790580750,\
+0.8046676008962094783783,0.212315237149596214294,0.9163186331279575824738,\
+0.9393384093418717384338,0.3174265320412814617157,0.9574301876127719879150,\
+0.7951935962773859500885,0.3240787154063582420349,0.0472964248619973659515,\
+0.1696171183139085769653,0.7654392314143478870392,0.2554624872282147407532,\
+0.1189010548405349254608,0.7469239532947540283203,0.0616608508862555027008,\
+0.1056091515347361564636,0.1581688239239156246185,0.9732552450150251388550,\
+0.8786917333491146564484,0.1824825564399361610413,0.9303942839615046977997,\
+0.4655157290399074554443,0.5399280847050249576569,0.9143392136320471763611,\
+0.0622840351425111293793,0.6500507537275552749634,0.2340233740396797657013,\
+0.3603484155610203742981,0.1917369994334876537323,0.2371335849165916442871,\
+0.4136920445598661899567,0.2661342276260256767273,0.3891090690158307552338,\
+0.6622495856136083602905,0.4503725995309650897980,0.3829893553629517555237,\
+0.1937121297232806682587,0.9629272706806659698486,0.6385000632144510746002,\
+0.2695108866319060325623,0.1092974594794213771820,0.0598662365227937698364,\
+0.1431378168053925037384,0.2944079088047146797180,0.9022735017351806163788,\
+0.9111119657754898071289,0.9847188093699514865875,0.0592310009524226188660,\
+0.5464080139063298702240,0.5080275069922208786011,0.6546461437828838825226,\
+0.9597736010327935218811,0.1577645908109843730927,0.1818120293319225311279,\
+0.4555030376650393009186,0.1048952480778098106384,0.7636235631071031093597,\
+0.1893162522464990615845,0.1596221593208611011505,0.3115166993811726570129,\
+0.2491372707299888134003,0.0469047501683235168457,0.0797643386758863925934,\
+0.3945369226858019828796,0.3254697113297879695892,0.5811151321977376937866,\
+0.1456566532142460346222,0.4704219633713364601135,0.8631705637089908123016,\
+0.1648640967905521392822,0.0801398889161646366119,0.4932156866416335105896,\
+0.4345335862599313259125,0.1079503614455461502075,0.2686753761954605579376,\
+0.7417223947122693061829,0.4086893904022872447968,0.6706044673919677734375,\
+0.4159612008370459079742,0.4766113189980387687683,0.4431825890205800533295,\
+0.6688354592770338058472,0.5834077899344265460968,0.4861929873004555702209,\
+0.715783319901674985886,0.1403244398534297943115}
+
+#define ZRRESULT {0.5053397031743451783825,0.7650083608446867078356,0.3289296819323739295982,\
+0.3563456766158749622342,0.4948207655225617118688,0.8169593462846268527855,\
+0.7132198900639351579755,0.5570137230416445373038,0.7685376318852206178889,\
+0.3559803193123551312560,0.4189790595413633300659,0.8813522345691391368661,\
+0.5405451162482487470484,0.1905551975849387180695,0.6493731034151291048317,\
+0.8578709195697519218626,0.3922142862720902067863,0.9642946930057294530059,\
+0.5389615746319644795648,0.9186094888728127960675,0.5890418064066422765279,\
+0.1113977102429560134267,0.7345860770241963155769,0.3799876579856086289411,\
+0.1619970506356118999935,0.51382943864194075001,0.9605702232101991366875,\
+0.2552214504374311077051,0.5588288246069162967800,0.8545155572742579863643,\
+0.0482073009402987154304,0.8701819105023789191478,0.9267094766915666692597,\
+0.3583874762657675017152,0.5394241582016752190043,1.0267057888096897677599,\
+0.3962322220487046187110,0.8200372580795054489045,0.5035682683774097556650,\
+0.1218215489911998739014,0.1217295472085216101465,0.5645974853924803360528,\
+0.6787204142960019392916,0.4641409785094591788912,0.8320374579652175528466,\
+0.5202648072575078996849,0.5635084163999081185992,0.4608376215542885900867,\
+0.6521335567127740651117,0.3901559225476997627702,0.7433295520896158192770,\
+0.3414853587252406064145,0.7876437052847802267053,0.0156079448330699189357,\
+0.0195753850507095344957,0.0445351746116087257588,0.5619901990592348628439,\
+0.7563216032216260042986,0.8953230010983072029163,0.5250759023565449989945,\
+0.1262270783291525866332,0.8463340938014771719367,0.6903512283163251161966,\
+0.3002023271844543317322,0.1665929038330317135674,0.8881085995755062523216,\
+0.3450945758035259824936,0.5168125326109850314893,0.0400767031552608649081,\
+0.4881659313644853837033,0.8717577944100705078512,0.3559191435167290418207,\
+0.0423384874325624382951,0.8962569818869624560520,0.0792669980362326609402,\
+0.2149514867261388406661,0.3084002596083564862184,0.1457610223920582370738,\
+0.5638322964331675679617,0.6681928703809085767773,0.7715309042125101379739,\
+0.3644939000586688848671,0.7241095709372292743566,0.5109856481565466790329,\
+0.7492592023075983487246,0.0935322123614654998836,0.6873609600399674945947,\
+0.4653574362777189166174,0.2834338708350941926639,0.1139584955905696417311,\
+0.6886187601911135658384,0.8966624572124947123442,0.8901159605244814976288,\
+0.6621780758434868685569,0.5739364819547106977282,0.7967040377802739881119,\
+0.7702556784014074064970,0.2963495189276508789966,0.729639913718978516677,\
+0.1199467917211827494572,0.8369585267706058928638,0.7130151705637984838049,\
+0.9564173315765011063050,0.2362741844905166255231,0.3829952297292640861492,\
+0.3854654409071321952140,0.9956878617898979877410,0.2388852521695121466916,\
+0.0357548125472270175718,0.8344528446849692748799,0.4908081134490644426016,\
+0.1072298401775326898155,0.7292248632489435333781,0.1444440063075330404896,\
+0.7618560442692507983509,0.3014073074948313002430,0.8338433864005018181231,\
+1.013809216729007589564,0.4488437286282063176657,0.9028988520348978363828,\
+0.7342748763980897486192,0.5492704923146081164020,0.0619250478958671968233,\
+0.1747947745500638971894,0.7643392221916658346714,0.2869233753851287982428,\
+0.1186438529044472750540,0.7261517086175122148717,0.1110167797262640587697,\
+0.1156665104854840142590,0.1677179018762894047168,0.9049771869312485117476,\
+0.8140692858573190804350,0.1865250841653489921601,0.8328626043313867022277,\
+0.4511026850510220786994,0.5511713324178673101272,1.0040394102716723168101,\
+0.1134432764930088655131,0.7136163206069113806862,0.2389915016256592694699,\
+0.5061510239067475991348,0.1938531425179492451161,0.267912781705172242663,\
+0.594520593176991907214,0.4421595740617755287971,0.3838580911610497414799,\
+0.6265966551277006857390,0.4892019455111443759776,0.5371648663643865395656,\
+0.2336644699290637006150,0.8580649693764487162539,0.7447932141471096390006,\
+0.30664577808112553070,0.1126796888171682081703,0.0673404850217956818526,\
+0.3780061914448271664924,0.3135468248495265064513,0.8141814149801622768621,\
+0.8656800272972641208113,1.0330415543607425199468,0.1517147576472806791426,\
+0.6107832692276639052764,0.5555300503019462432519,0.6621194316643849164805,\
+0.9359383537376269046604,0.1578266511911156633197,0.3288869400610432980336,\
+0.4688911283964798393242,0.1093517544178844447256,0.7390278072154514710235,\
+0.3915656081630794482784,0.1803516698292359499156,0.3140185989593758941751,\
+0.2570435038916802361619,0.0651252572213311814453,0.1812803236410877871787,\
+0.3918987512324060840108,0.3907169202420177067658,0.5847178774812699098007,\
+0.1522469534945809221949,0.4726351219523636792985,0.8890284419930043480207,\
+0.3043305148205690535690,0.1282404489119809976039,0.6689999411776240689775,\
+0.4220981761434796641907,0.2107039270298768085521,0.3089304668962193911597,\
+0.8825265124364938262858,0.4570764804119011315287,0.6317437032300170507426,\
+0.6289949625530589782940,0.4716158816756069738219,0.4417016096894970100806,\
+0.6297964082740089564183,0.7506329678118981441060,0.6853639001045995771122,\
+0.6844909750084481325771,0.3028385676048351293765}
+
+#define ZIRESULT {1.4391441245686327210507,1.130955515640670316913,1.1164484564631134144719,\
+0.5343429881094952094145,1.5313159234681512632648,0.9218282568507811802760,\
+1.1368031918334591257036,1.309961324172885133166,1.1768313149474189938104,\
+1.1581725732800560724201,1.198068547194847122128,1.0167778558643913999759,\
+0.8107284978807606234952,0.9747572654361357225028,1.2226962809307837520834,\
+1.356863284326968122073,1.4708283871101888173882,1.0424189614104724110888,\
+0.6175483783889722522176,1.012434899444895508580,1.4941377955828787360559,\
+1.081247186686038253001,1.189977918876721885155,0.9361970185325101390106,\
+1.0473314366303878575337,0.6478815708564551467674,1.103880390282215628872,\
+1.208902068619972958174,0.9405460211534443226711,1.2708555309086870810376,\
+1.2048457921815343141247,1.0386992340805454304586,0.9940470159552662332558,\
+0.4129471251607437776165,1.0483368304459323994138,0.9626808065085141752348,\
+0.9866797451792658213421,1.2893127532844186333705,0.6333368050416610106623,\
+1.3849939050391590900091,0.8412033774271403530065,1.3484185557182311043789,\
+0.6561721869869621137639,0.8152667302376208624537,0.8942162872449925803409,\
+0.7354476761871528989190,1.2302184692777484720239,1.1419032200306009627866,\
+0.8136425490751511002685,1.0585917357001826122342,1.5562281161680697749716,\
+1.3215709464122720184776,1.0936282246933759498830,1.562690430228121041267,\
+1.5431569076078051061529,1.5549621593607869662890,0.7985043985204253180754,\
+1.3827954341839958640747,1.3338048203354757603734,1.1992311317991326546917,\
+0.9398015526727905299964,0.8526323846859752420002,0.6516084904889641871151,\
+0.9312161189612270240090,1.4928235928235611407189,1.1434135639085114544145,\
+1.3304436504678796016066,1.0279557218905930326969,1.5707583700301124274290,\
+1.18264027414866035315,1.049240570305455033662,1.1438977350867394200407,\
+0.8645410048697405036577,1.272544314036070156604,1.2965854453389789036066,\
+1.5441276936419627840991,0.8474785980812834518261,1.4222542688372477037717,\
+1.1067340541491283989473,0.6658230283826037654293,0.7440600810961385258580,\
+1.509454955782236762474,0.7139904083352976993382,1.3343109319103572119047,\
+0.8754276015708571945240,1.4375430902494801266300,0.8182153660902479197503,\
+0.6279916190243797213810,1.3777792247900606525945,1.5570776874524723254467,\
+1.3896877170114805277734,1.292290381577097857502,0.9513544490495031702437,\
+1.146595322853661613749,1.0663673649265974496814,0.9066444651210990857138,\
+0.7936124351430207113367,1.1025133400691302654195,0.7646931356316959416120,\
+1.3570006423237950254901,1.0127507430242304042878,0.6984070724030820853656,\
+0.9777377069899801931285,0.6381815285628557044006,1.4447151619316793702552,\
+0.7381184252357657626931,0.9463444174447509515957,1.3036540993301888313738,\
+0.3993509460349408124458,1.4425649666003559357108,1.2703537792660923866350,\
+0.3366052452908819825339,0.9799364183556658058905,0.6519110571169279833015,\
+1.288935099739083156578,0.766834829952783847418,1.3765235555687964641436,\
+0.9026821267000586512808,0.7532458865053713870097,1.1915253215495016370085,\
+1.4398661339551832583084,0.5960292480319858698934,0.8683763627836410536887,\
+1.307183356265154250409,1.1437419441048803925298,1.0721920855425228769064,\
+1.5518517938677236500666,1.2329687641584510249260,0.5874976025749066854686,\
+1.1457409989520814797004,1.2187173974473419768572,1.2272326680013900812583,\
+1.3202499364548996307889,1.3364966855772182352524,1.5028659601895917319325,\
+1.5039244799556488185743,1.199080874147727016066,0.8850027352965960103504,\
+0.5797999065603636204003,0.9935513093218836244702,1.3250345117052622079257,\
+0.7510747251416685088543,1.3856864393507652977178,1.0646397833458374204696,\
+0.7161423103150551527918,0.6220745390646167383153,1.4237426982899421545881,\
+1.4349026977530163762253,1.0862935323189089054097,0.7475103036060971595234,\
+0.9640755596017442918821,1.4756182374730877349123,0.8992686396344509169865,\
+1.0456992348735927311765,1.316872193719026640224,1.0937098269572853581622,\
+0.3787889502350130777053,1.1777575502770252224849,1.466927792635024818679,\
+1.198998549247170863907,0.9317214709279717510526,0.3994553068013038665818,\
+0.9996993047110468433303,1.0533682169916682713762,1.1680862767422879322510,\
+1.0968093743281353003027,1.475564759332087749755,0.5739680940616843640711,\
+1.2132055498728515630091,1.277641763762892734846,1.2372616699165408515881,\
+0.4908185034943345348424,1.0764535824324550361553,1.3508749145869605179371,\
+1.282220574891209663448,0.8033914160655766245611,0.4529330910646225394345,\
+1.3777085436870080137339,0.9478851551815749010288,1.2208388985822435923723,\
+1.263077873207383738929,1.284175149159334061721,1.023436357706823729430,\
+0.5626793926847969418148,0.6728398111486185717567,0.7545922256887819257187,\
+1.5396608871785673056110,0.5335122401588628937574,1.0275094129340511805992,\
+0.8338356239168208672297,1.0426578447465559840168,1.4617456602888381222982,\
+0.6682797094798482717692,1.3426136823908161321839,1.3312882615539098907220,\
+1.4697575902556172522395,0.7877417380659905710161,0.7165102522491650915981,\
+1.3183788402186256139004,0.4738958779540429211430}
+
+void dacoshsTest(void) {
+ double In[]=IN;
+ double Res[]=RESULT;
+ double out;
+ int i = 0;
+
+ for (i=0;i<200;i++){
+ if (In[i]<1) assert(1);
+ else {
+ out = dacoshs(In[i]);
+ assert ( ( fabs(out-Res[i]) / fabs(out) ) <3e-16);
+ }
+ }
+}
+
+void zacoshsTest(void) {
+ double InR[]=ZRIN;
+ double InI[]=ZIIN;
+ double ResR[]=ZRRESULT;
+ double ResI[]=ZIRESULT;
+ int i=0;
+ doubleComplex in,out;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(InR[i],InI[i]);
+ out=zacoshs(in);
+ assert( ( fabs(zreals(out)-ResR[i]) / fabs(zreals(out)) ) <3e-15);
+ assert( ( fabs(zimags(out)-ResI[i]) / fabs(zimags(out)) ) <3e-15);
+ }
+}
+
+void dacoshaTest(void) {
+ double In[]=IN;
+ double Res[]=RESULT;
+ double out[200],in[200];
+ int i = 0;
+
+ for (i=0;i<200;i++){
+ in[i]=In[i];
+ }
+
+ dacosha(in,200,out);
+ for (i=0;i<200;i++){
+ if (isnan(out[i])) assert(1);
+ else{
+ assert ( ( fabs(out[i]-Res[i]) / fabs(out[i]) ) <3e-16);
+ }
+ }
+}
+
+void zacoshaTest(void) {
+ double InR[]=ZRIN;
+ double InI[]=ZIIN;
+ double ResR[]=ZRRESULT;
+ double ResI[]=ZIRESULT;
+ int i=0;
+ doubleComplex in[200],out[200];
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(InR[i],InI[i]);
+ }
+ zacosha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( fabs(zreals(out[i])-ResR[i]) / fabs(zreals(out[i])) ) <3e-15);
+ assert( ( fabs(zimags(out[i])-ResI[i]) / fabs(zimags(out[i])) ) <3e-15);
+ }
+}
+
+int testAcosh(void) {
+ printf("\n>>>> Double Hyperbolic ArcCosine Tests\n");
+ dacoshsTest();
+ zacoshsTest();
+ dacoshaTest();
+ zacoshaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testAcosh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/testFloatAcosh.c b/2.3-1/src/c/elementaryFunctions/acosh/testFloatAcosh.c
new file mode 100644
index 00000000..aa14a308
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/testFloatAcosh.c
@@ -0,0 +1,510 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAcosh.h"
+#include "isnan.h"
+
+#ifdef _MSC_VER
+#include <float.h>
+#define isnan(x) _isnan((double)x)
+#endif
+
+#define IN {38.746443623676896095276f,39.8779044859111309052f,99.6399083640426397324f,\
+93.207842670381069183350f,6.8147667217999696731567f,71.874653641134500503540f,\
+65.928971720859408378601f,43.781969323754310607910f,95.70061699487268924713f,\
+39.777786191552877426147f,54.149620747193694114685f,14.754852838814258575439f,\
+91.972588421776890754700f,41.853474546223878860474f,90.448315022513270378113f,\
+32.027477025985717773438f,57.482325518503785133362f,75.726259034126996994019f,\
+32.547289272770285606384f,50.125551037490367889404f,26.862081931903958320618f,\
+11.706684622913599014282f,36.675705714151263237000f,87.538864836096763610840f,\
+52.483216533437371253967f,76.861125137656927108765f,82.899243896827101707458f,\
+64.99033216387033462524f,56.250627012923359870911f,21.698794979602098464966f,\
+93.22312804870307445526f,93.5097210109233856201f,97.608120972290635108948f,\
+91.35094834491610527039f,26.843591919168829917908f,9.1870715841650962829590f,\
+17.129724519327282905579f,73.117265943437814712524f,86.922781122848391532898f,\
+1.4808017760515213012695f,65.071928361430764198303f,42.254429217427968978882f,\
+23.262092983350157737732f,31.955500133335590362549f,74.261871399357914924622f,\
+77.881882060319185256958f,65.248953877016901969910f,90.324406325817108154297f,\
+86.69646182097494602203f,70.879780035465955734253f,69.452034076675772666931f,\
+84.671579115092754364014f,93.227435695007443428040f,95.654127094894647598267f,\
+16.239900095388293266296f,12.728751823306083679199f,95.707353064790368080139f,\
+67.644099798053503036499f,39.798104530200362205505f,11.081875301897525787354f,\
+50.97153154201805591583f,58.446559030562639236450f,25.919713405892252922058f,\
+29.182348400354385375977f,6.0309174004942178726196f,90.43274922296404838562f,\
+61.944271018728613853455f,25.037935934960842132568f,83.850894169881939888000f,\
+82.732185069471597671509f,73.220202280208468437195f,29.458374157547950744629f,\
+29.091028729453682899475f,70.458725746721029281616f,30.465652560815215110779f,\
+75.730663724243640899658f,73.18075490184128284454f,69.053836632519960403442f,\
+62.402765033766627311707f,41.599050164222717285156f,28.105994546785950660706f,\
+5.6220385245978832244873f,58.040395518764853477478f,0.4246918484568595886230f,\
+68.2817161548882722855f,89.133544359356164932251f,92.980264825746417045593f,\
+28.40001545846462249756f,9.885430941358208656311f,41.369083430618047714233f,\
+64.121548598632216453552f,64.692758955061435699463f,47.02662643976509571075f,\
+60.481913108378648757935f,67.138904659077525138855f,71.394702047109603881836f,\
+54.127137595787644386292f,39.052018057554960250854f,1.1089378502219915390015f,\
+90.150084160268306732178f,13.887455360963940620422f,8.5074969567358493804932f,\
+34.66010238043963909149f,42.338709905743598937988f,80.213972786441445351f,\
+31.7881367169320583344f,18.021041667088866233826f,69.688742049038410186768f,\
+35.482168616726994514465f,16.12617420032620429993f,75.34236568026244640350f,\
+62.194181978702545166016f,51.510728383436799049377f,67.819245439022779464722f,\
+61.666865786537528038025f,70.212037675082683563232f,13.621602999046444892883f,\
+60.870522353798151016235f,18.923167092725634574890f,47.614179179072380065918f,\
+17.161004850640892982483f,41.371036972850561141968f,15.31781828962266445160f,\
+22.868881560862064361572f,95.856341393664479255676f,39.499193150550127029419f,\
+2.500818995758891106f,44.927055388689041137695f,91.384086245670914649963f,\
+11.012465786188840866089f,74.87958460114896297455f,0.7881646975874900817871f,\
+23.523587780073285102844f,80.106287542730569839478f,65.456348611041903495789f,\
+51.620832458138465881348f,70.271815219894051551819f,5.5151230655610561370850f,\
+62.56400248967111110687f,84.313133545219898223877f,17.294042231515049934387f,\
+41.730730701237916946411f,81.875373004004359245300f,25.327575206756591796875f,\
+86.085468018427491188049f,17.212611716240644454956f,78.060937067493796348572f,\
+13.735765032470226287842f,0.2187759149819612503052f,1.4656470157206058502197f,\
+30.469974083825945854187f,80.307766422629356384277f,99.052629480138421058655f,\
+82.85992136225104331970f,87.21015579067170619965f,29.531141556799411773682f,\
+58.27610609121620655060f,29.06773509457707405090f,2.0005736034363508224f,\
+71.4346818625926971436f,26.664068037644028663635f,51.992803346365690231323f,\
+48.17320345900952816010f,0.0918259844183921813965f,38.418471114709973335266f,\
+49.06664276495575904846f,44.197808159515261650085f,65.678765252232551574707f,\
+10.470610717311501502991f,42.787145730108022689819f,75.105277216061949729919f,\
+36.962236650288105010986f,84.119305433705449104309f,90.374342072755098342896f,\
+44.184404192492365837097f,1.0920032858848571777344f,20.380018139258027076721f,\
+85.418348293751478195190f,39.327101549133658409119f,97.573022358119487762451f,\
+8.4199145901948213577271f,23.39450428262352943420f,48.397052986547350883484f,\
+33.292300626635551452637f,96.453859517350792884827f,52.920697536319494247437f,\
+7.9968032892793416976929f,75.475437380373477935791f,4.476350219920277596f,\
+84.631874877959489822388f,20.008285669609904289246f,69.44785490632057189941f,\
+28.204387659206986427307f,79.546741675585508346558f,20.281786611303687095642f,\
+78.075716458261013031006f,93.606285052374005317688f,88.801648560911417007446f,\
+33.848348213359713554382f,89.761531725525856018066f}
+
+#define RESULT {4.3500195892822599574856f,4.378812333443298676627f,5.2946847693089331698957f,\
+5.2279502699832844925254f,2.6068118507181217147206f,4.968022463585481496295f,\
+4.8816676362403299549442f,4.4722388068202851840738f,5.2543446283333992141706f,\
+4.3762977630646631155287f,4.6848128785767624293612f,3.3835688928264802122214f,\
+5.2146082054939908445590f,4.4271792498758397726988f,5.1978952030053422461719f,\
+4.159497560939560578674f,4.7445490293632399669832f,5.0202285648475850621253f,\
+4.1756051841813626168687f,4.6075785448582253778227f,3.9835162329116351465075f,\
+3.1514779837977200394050f,4.2950758361772223281605f,5.165197419194649697261f,\
+4.653549840642725143880f,5.035105083560019956224f,5.1107367420045859418565f,\
+4.8673265089936572636020f,4.7228853485288873059744f,3.7698725167565876326137f,\
+5.2281142583800894740875f,5.2311839874435639430317f,5.2740816359097371091025f,\
+5.2078258853539018957690f,3.982827186610214287299f,2.9079691610609703644741f,\
+3.5331093207527803912171f,4.9851649496034715625115f,5.1581342419725935144470f,\
+0.9450506373811344840163f,4.8685813827251553931319f,4.4367163112396088564537f,\
+3.8395099847061766595857f,4.1572465837028591550961f,5.0006994941965512424531f,\
+5.0482993082581542054754f,4.8712984679982609392823f,5.1965242406243383754827f,\
+5.1555269912574592794385f,4.954082618091184997411f,4.9337317049920867972901f,\
+5.1318923054243690273779f,5.228160467885317963521f,5.2538586990129676479455f,\
+3.4796690893012534040452f,3.2354639460120244720542f,5.2544150166005954005755f,\
+4.9073526741507107473694f,4.3768085901327413722584f,3.0964161555968114925008f,\
+4.6243182142058252281913f,4.7611868033967539304285f,3.9477786701409951497510f,\
+4.0664175090632737052943f,2.4831009250018341028010f,5.1977230816033159754852f,\
+4.8193171469932529760172f,3.9131402651137854320496f,5.1221517738388655516246f,\
+5.1087193584020944570057f,4.98657191625376672306f,4.0758371911626332106948f,\
+4.0632814774108050315249f,4.9481239065017428302440f,4.1094776238806378643176f,\
+5.0202867341820684998766f,4.9860329708595516606806f,4.9279811897230469952547f,\
+4.8266925606060153697285f,4.421080015153528108840f,4.0288134359166507536543f,\
+2.4118364183807097234080f,4.7542122019999739634954f,0,\
+4.9167355873994562642793f,5.1832514554357551617159f,5.2255055264178071894321f,\
+4.0392267678246307482937f,2.9816410740582028893186f,4.4155348942144980739499f,\
+4.8538668500531736427206f,4.8627367182462748473881f,4.5437480774189333843083f,\
+4.7954231948046981415246f,4.8998553915953095838631f,4.9613217960209823331752f,\
+4.6843975172654603866818f,4.3578777660333960497496f,0.4626347638559775710121f,\
+5.1945923008314265345575f,3.3228343258666956927527f,2.830622803369744922009f,\
+4.238528249750794785200f,4.438709481897562980635f,5.077806047884725337838f,\
+4.1519928438683244564800f,3.5839165427001460351164f,4.9371344840241793150426f,\
+4.2619788264190443527468f,3.4726281293145686568380f,5.0151457380383783757338f,\
+4.8233440014012511909414f,4.6348430510092004652734f,4.9099388325030934865367f,\
+4.81482819845952114690f,4.9446162371720561168331f,3.3034540778469194677314f,\
+4.8018287252966844746993f,3.6328352359975357721567f,4.556167488561304601546f,\
+3.5349368514717505185274f,4.41558212917596915048f,3.4210967363570983224008f,\
+3.8224459155669441301484f,5.2559705982049909067655f,4.3692671498839636967659f,\
+1.5671566063449566819088f,4.4980634827120455909721f,5.2081885950679547292452f,\
+3.0901072205487807309510f,5.0089838747007107144782f,0,\
+3.850698741029123794988f,5.076462566530570263978f,4.8744723131002718474747f,\
+4.6369786693462113902342f,4.9454673471881154256380f,2.3923187222394570738970f,\
+4.8292733779221936885051f,5.127649658742538640865f,3.5426723072020398497273f,\
+4.424241396092424949416f,5.0983081346685077406278f,3.9246509637740216724922f,\
+5.1484540607983912963164f,3.537944651477085589164f,5.0505959169093319616195f,\
+3.3118225003889145696689f,0,0.9310418690232507010762f,\
+4.1096195393026562214800f,5.0789747485012091132717f,5.2887730188734272118722f,\
+5.1102622536361952398920f,5.1614350980940946200803f,4.0783057415377843568649f,\
+4.7582657239633334711471f,4.0624799671967695147146f,1.3172890037212539038336f,\
+4.9618816771260449982606f,3.9761122565887623281f,4.64415999832871140285f,\
+4.5678423566873336270078f,0,4.3415161209508754680542f,\
+4.5862227542495350718355f,4.481694375737592217490f,4.8778648861550966131517f,\
+3.0394313734202933474648f,4.4492483198356360674097f,5.0119936831694982259933f,\
+4.3028609023006350042806f,5.1253479422290126876760f,5.1970769705972195140475f,\
+4.4813909798397162376205f,0.4257373352329655857851f,3.7070996451820255046528f,\
+5.1406738437618608728030f,4.3648993866947414232982f,5.2737219653314042489001f,\
+2.820201721217977297584f,3.8451912168199942065883f,4.5724793527790357217100f,\
+4.1982477070823893683382f,5.2621850617105074832125f,4.661852422144622920541f,\
+2.7682565538529817494862f,5.0169105620070073570105f,2.1792385497944919414692f,\
+5.131423242241443638534f,3.6886685835548016498819f,4.9336715234659216378077f,\
+4.032310316197459165721f,5.0694524637856641646749f,3.7022621441401133424165f,\
+5.0507852459760567143121f,5.2322161767096924123166f,5.1795206909289932539764f,\
+4.2148191048546337356129f,5.19027265701442619417f}
+
+#define CRIN {0.1483933464623987674713f,0.5565875237807631492615f,0.4628333351574838161469f,\
+0.9158247429877519607544f,0.0444016349501907825470f,0.8175177471712231636047f,\
+0.5320580708794295787811f,0.2989391684532165527344f,0.5029047676362097263336f,\
+0.4266923693940043449402f,0.3965902938507497310638f,0.7440190296620130538940f,\
+0.7921002809889614582062f,0.5715918401256203651428f,0.4155966262333095073700f,\
+0.2953372262418270111084f,0.1075767637230455875397f,0.7572548976168036460876f,\
+0.93660886352881789207f,0.7694978956133127212524f,0.0902581927366554737091f,\
+0.4731486858800053596497f,0.4765542480163276195526f,0.6361737176775932312012f,\
+0.5064576440490782260895f,0.9049607468768954277039f,0.6742701171897351741791f,\
+0.3656400945037603378296f,0.6837903787381947040558f,0.4100628877058625221252f,\
+0.3582529271952807903290f,0.7118562050163745880127f,0.7966963038779795169830f,\
+0.9753969227895140647888f,0.5733916512690484523773f,0.8998429346829652786255f,\
+0.5953218084760010242462f,0.3765322910621762275696f,0.9104355531744658946991f,\
+0.1861076802015304565430f,0.6715109744109213352203f,0.2566455481573939323425f,\
+0.9819463356398046016693f,0.7608660291880369186401f,0.8556561623699963092804f,\
+0.8441717335954308509827f,0.3884846637956798076630f,0.4608103148639202117920f,\
+0.8381579727865755558014f,0.5278776129707694053650f,0.0187810636125504970551f,\
+0.2611750457435846328735f,0.6092445817776024341583f,0.0081067951396107673645f,\
+0.0276411953382194042206f,0.0158492103219032287598f,0.8109004520811140537262f,\
+0.2429467244073748588562f,0.3353355019353330135345f,0.4142854567617177963257f,\
+0.5946544189937412738800f,0.9080675477162003517151f,0.992223232518881559372f,\
+0.6239561475813388824463f,0.0789771513082087039948f,0.5889828568324446678162f,\
+0.2523608407936990261078f,0.5871062893420457839966f,0.0000379872508347034454f,\
+0.4244823055341839790344f,0.69984475849196314812f,0.4405533373355865478516f,\
+0.6495711454190313816071f,0.4199861017987132072449f,0.2716385438106954097748f,\
+0.0272838752716779708862f,0.6936013107188045978546f,0.1495713749900460243f,\
+0.5206344048492610454559f,0.9685971699655055999756f,0.9657785953022539615631f,\
+0.0654204180464148521423f,0.9626990980468690395355f,0.2655456010252237319946f,\
+0.8290728745050728321075f,0.1334408046677708625793f,0.8514542016200721263885f,\
+0.8984219655394554138184f,0.1995774977840483188629f,0.0138073815032839775085f,\
+0.2245407640002667903900f,0.3930436577647924423218f,0.8261723746545612812042f,\
+0.5051761353388428688049f,0.5651183272711932659149f,0.822583723813295364380f,\
+0.9197964356280863285065f,0.4713199352845549583435f,0.9223483256064355373383f,\
+0.2136987913399934768677f,0.7260794681496918201447f,0.9689361499622464179993f,\
+0.8346118587069213390350f,0.8257038742303848266602f,0.1350833275355398654938f,\
+0.7953761396929621696472f,0.8992118402384221553802f,0.2715440522879362106323f,\
+0.9219025229103863239288f,0.1750466236844658851624f,0.3323095212690532207489f,\
+0.9493130259215831756592f,0.7118741781450808048248f,0.8032329222187399864197f,\
+0.3628453887067735195160f,0.7530685458332300186157f,0.2641473677940666675568f,\
+0.9660940738394856452942f,0.8041944387368857860565f,0.5316947177052497863770f,\
+0.1673618280328810214996f,0.955579827539622783661f,0.6473058252595365047455f,\
+0.2645611818879842758179f,0.5411860425956547260284f,0.4980195099487900733948f,\
+0.0190768833272159099579f,0.4227291680872440338135f,0.8374647037126123905182f,\
+0.4151327675208449363708f,0.3497115275822579860687f,0.4844544250518083572388f,\
+0.3347255480475723743439f,0.2362121837213635444641f,0.0928130256943404674530f,\
+0.0737370252609252929688f,0.4197955676354467868805f,0.9802277712151408195496f,\
+0.8419611467979848384857f,0.6906680446118116378784f,0.2502765958197414875031f,\
+0.8266033390536904335022f,0.1875236849300563335419f,0.5023231171071529388428f,\
+0.8916302681900560855865f,0.8934147348627448081970f,0.1574523574672639369965f,\
+0.1629528645426034927368f,0.5226223585195839405060f,0.8417599620297551155090f,\
+0.5858130785636603832245f,0.1322202011942863464355f,0.8028764897026121616364f,\
+0.5250511718913912773132f,0.2528006075881421566010f,0.4602345135062932968140f,\
+0.996287219692021608353f,0.4019785309210419654846f,0.1399875725619494915009f,\
+0.5081327147781848907471f,0.9440425024367868900299f,0.9318959629163146018982f,\
+0.6445578685961663722992f,0.5729571748524904251099f,0.4810055238194763660431f,\
+0.6713787661865353584290f,0.0962744313292205333710f,0.8855805248022079467773f,\
+0.3892059125937521457672f,0.2907031057402491569519f,0.4209313853643834590912f,\
+0.9504273366183042526245f,0.482190326321870088577f,0.2289973804727196693420f,\
+0.2940405677072703838348f,0.6957426778972148895264f,0.9139824123121798038483f,\
+0.2068154653534293174744f,0.6285024262033402919769f,0.4031575415283441543579f,\
+0.3064021435566246509552f,0.3148818286135792732239f,0.7400112929753959178925f,\
+0.8853011503815650939941f,0.788494529668241739273f,0.8977585239335894584656f,\
+0.0339450328610837459564f,0.8802101369947195053101f,0.5418177028186619281769f,\
+0.9511840576305985450745f,0.5574890668503940105438f,0.1312845982611179351807f,\
+0.9453403786756098270416f,0.2518341308459639549255f,0.2607447705231606960297f,\
+0.1215410251170396804810f,0.9136986923404037952423f,0.9382542567327618598938f,\
+0.3105722474865615367889f,0.9309121072292327880859f}
+
+#define CIIN {0.5225624092854559421539f,0.7617142526432871818542f,0.3009174778126180171967f,\
+0.1853434126824140548706f,0.5148605112917721271515f,0.7257346073165535926819f,\
+0.7033738414756953716278f,0.5664369426667690277100f,0.7816161573864519596100f,\
+0.3330347230657935142517f,0.4017280167900025844574f,0.8503915611654520034790f,\
+0.41114101978018879890f,0.1586530329659581184387f,0.6542402538470923900604f,\
+0.9449902996420860290527f,0.400338994804769754410f,0.9679889930412173271179f,\
+0.32740902295336127281f,0.8933845367282629013062f,0.6218692888505756855011f,\
+0.0985169494524598121643f,0.7449700380675494670868f,0.3134250529110431671143f,\
+0.1409188793040812015533f,0.3239218806847929954529f,0.9958796552382409572601f,\
+0.2412899602204561233521f,0.4753343504853546619415f,0.9194070147350430488586f,\
+0.0450326460413634777069f,0.8481595069169998168945f,0.8928631045855581760406f,\
+0.1469233212992548942566f,0.4904643460176885128021f,0.9986877571791410446167f,\
+0.3392539476044476032257f,0.8790708789601922035217f,0.3107871781103312969208f,\
+0.1200211457908153533936f,0.0909670502878725528717f,0.5804221173748373985291f,\
+0.446611551102250814438f,0.3501139078289270401001f,0.7262432840652763843536f,\
+0.3650169344618916511536f,0.5597011330537497997284f,0.434090383350849151611f,\
+0.5082829319871962070465f,0.3487796885892748832703f,0.8136124997399747371674f,\
+0.337404197081923484802f,0.7742837746627628803253f,0.0156080657616257667542f,\
+0.0195691580884158611298f,0.0445443131029605865479f,0.4240885511972010135651f,\
+0.8158838218078017234802f,0.9913199446164071559906f,0.5120379645377397537231f,\
+0.1021917951293289661407f,0.7161553995683789253235f,0.4527317988686263561249f,\
+0.2445004582405090332031f,0.1668560453690588474274f,0.9187424210831522941589f,\
+0.3418669118545949459076f,0.4624818544834852218628f,0.0400874321348965167999f,\
+0.4700120547786355018616f,0.8552942494861781597137f,0.3308605216443538665771f,\
+0.0322206378914415836334f,0.9760772576555609703064f,0.0763854510150849819183f,\
+0.2165335658937692642212f,0.2348632332868874073029f,0.1446668924763798713684f,\
+0.5313451024703681468964f,0.4441541358828544616699f,0.5759493880905210971832f,\
+0.3719177199527621269226f,0.5167253850959241390228f,0.5186656024307012557983f,\
+0.6306529571302235126495f,0.0928382659330964088440f,0.5421750987879931926727f,\
+0.2833826132118701934814f,0.2819099412299692630768f,0.1141945635899901390076f,\
+0.7321730605326592922211f,0.9823690224438905715942f,0.8243003231473267078400f,\
+0.6485677706077694892883f,0.5304958778433501720428f,0.6958626955747604370117f,\
+0.6050392785109579563141f,0.2683336613699793815613f,0.5511700971983373165131f,\
+0.1174971889704465866089f,0.7958277617581188678741f,0.4983139941468834877014f,\
+0.9196587274782359600067f,0.1420703046023845672607f,0.389312467072159051895f,\
+0.2658497532829642295837f,0.9480321384035050868988f,0.2326095197349786758423f,\
+0.0139051643200218677521f,0.9270462663844227790833f,0.4878733339719474315643f,\
+0.0354842916131019592285f,0.6607114099897444248199f,0.0879401965066790580750f,\
+0.8046676008962094783783f,0.212315237149596214294f,0.9163186331279575824738f,\
+0.9393384093418717384338f,0.3174265320412814617157f,0.9574301876127719879150f,\
+0.7951935962773859500885f,0.3240787154063582420349f,0.0472964248619973659515f,\
+0.1696171183139085769653f,0.7654392314143478870392f,0.2554624872282147407532f,\
+0.1189010548405349254608f,0.7469239532947540283203f,0.0616608508862555027008f,\
+0.1056091515347361564636f,0.1581688239239156246185f,0.9732552450150251388550f,\
+0.8786917333491146564484f,0.1824825564399361610413f,0.9303942839615046977997f,\
+0.4655157290399074554443f,0.5399280847050249576569f,0.9143392136320471763611f,\
+0.0622840351425111293793f,0.6500507537275552749634f,0.2340233740396797657013f,\
+0.3603484155610203742981f,0.1917369994334876537323f,0.2371335849165916442871f,\
+0.4136920445598661899567f,0.2661342276260256767273f,0.3891090690158307552338f,\
+0.6622495856136083602905f,0.4503725995309650897980f,0.3829893553629517555237f,\
+0.1937121297232806682587f,0.9629272706806659698486f,0.6385000632144510746002f,\
+0.2695108866319060325623f,0.1092974594794213771820f,0.0598662365227937698364f,\
+0.1431378168053925037384f,0.2944079088047146797180f,0.9022735017351806163788f,\
+0.9111119657754898071289f,0.9847188093699514865875f,0.0592310009524226188660f,\
+0.5464080139063298702240f,0.5080275069922208786011f,0.6546461437828838825226f,\
+0.9597736010327935218811f,0.1577645908109843730927f,0.1818120293319225311279f,\
+0.4555030376650393009186f,0.1048952480778098106384f,0.7636235631071031093597f,\
+0.1893162522464990615845f,0.1596221593208611011505f,0.3115166993811726570129f,\
+0.2491372707299888134003f,0.0469047501683235168457f,0.0797643386758863925934f,\
+0.3945369226858019828796f,0.3254697113297879695892f,0.5811151321977376937866f,\
+0.1456566532142460346222f,0.4704219633713364601135f,0.8631705637089908123016f,\
+0.1648640967905521392822f,0.0801398889161646366119f,0.4932156866416335105896f,\
+0.4345335862599313259125f,0.1079503614455461502075f,0.2686753761954605579376f,\
+0.7417223947122693061829f,0.4086893904022872447968f,0.6706044673919677734375f,\
+0.4159612008370459079742f,0.4766113189980387687683f,0.4431825890205800533295f,\
+0.6688354592770338058472f,0.5834077899344265460968f,0.4861929873004555702209f,\
+0.715783319901674985886f,0.1403244398534297943115f}
+
+#define CRRESULT {0.5053397031743451783825f,0.7650083608446867078356f,0.3289296819323739295982f,\
+0.3563456766158749622342f,0.4948207655225617118688f,0.8169593462846268527855f,\
+0.7132198900639351579755f,0.5570137230416445373038f,0.7685376318852206178889f,\
+0.3559803193123551312560f,0.4189790595413633300659f,0.8813522345691391368661f,\
+0.5405451162482487470484f,0.1905551975849387180695f,0.6493731034151291048317f,\
+0.8578709195697519218626f,0.3922142862720902067863f,0.9642946930057294530059f,\
+0.5389615746319644795648f,0.9186094888728127960675f,0.5890418064066422765279f,\
+0.1113977102429560134267f,0.7345860770241963155769f,0.3799876579856086289411f,\
+0.1619970506356118999935f,0.51382943864194075001f,0.9605702232101991366875f,\
+0.2552214504374311077051f,0.5588288246069162967800f,0.8545155572742579863643f,\
+0.0482073009402987154304f,0.8701819105023789191478f,0.9267094766915666692597f,\
+0.3583874762657675017152f,0.5394241582016752190043f,1.0267057888096897677599f,\
+0.3962322220487046187110f,0.8200372580795054489045f,0.5035682683774097556650f,\
+0.1218215489911998739014f,0.1217295472085216101465f,0.5645974853924803360528f,\
+0.6787204142960019392916f,0.4641409785094591788912f,0.8320374579652175528466f,\
+0.5202648072575078996849f,0.5635084163999081185992f,0.4608376215542885900867f,\
+0.6521335567127740651117f,0.3901559225476997627702f,0.7433295520896158192770f,\
+0.3414853587252406064145f,0.7876437052847802267053f,0.0156079448330699189357f,\
+0.0195753850507095344957f,0.0445351746116087257588f,0.5619901990592348628439f,\
+0.7563216032216260042986f,0.8953230010983072029163f,0.5250759023565449989945f,\
+0.1262270783291525866332f,0.8463340938014771719367f,0.6903512283163251161966f,\
+0.3002023271844543317322f,0.1665929038330317135674f,0.8881085995755062523216f,\
+0.3450945758035259824936f,0.5168125326109850314893f,0.0400767031552608649081f,\
+0.4881659313644853837033f,0.8717577944100705078512f,0.3559191435167290418207f,\
+0.0423384874325624382951f,0.8962569818869624560520f,0.0792669980362326609402f,\
+0.2149514867261388406661f,0.3084002596083564862184f,0.1457610223920582370738f,\
+0.5638322964331675679617f,0.6681928703809085767773f,0.7715309042125101379739f,\
+0.3644939000586688848671f,0.7241095709372292743566f,0.5109856481565466790329f,\
+0.7492592023075983487246f,0.0935322123614654998836f,0.6873609600399674945947f,\
+0.4653574362777189166174f,0.2834338708350941926639f,0.1139584955905696417311f,\
+0.6886187601911135658384f,0.8966624572124947123442f,0.8901159605244814976288f,\
+0.6621780758434868685569f,0.5739364819547106977282f,0.7967040377802739881119f,\
+0.7702556784014074064970f,0.2963495189276508789966f,0.729639913718978516677f,\
+0.1199467917211827494572f,0.8369585267706058928638f,0.7130151705637984838049f,\
+0.9564173315765011063050f,0.2362741844905166255231f,0.3829952297292640861492f,\
+0.3854654409071321952140f,0.9956878617898979877410f,0.2388852521695121466916f,\
+0.0357548125472270175718f,0.8344528446849692748799f,0.4908081134490644426016f,\
+0.1072298401775326898155f,0.7292248632489435333781f,0.1444440063075330404896f,\
+0.7618560442692507983509f,0.3014073074948313002430f,0.8338433864005018181231f,\
+1.013809216729007589564f,0.4488437286282063176657f,0.9028988520348978363828f,\
+0.7342748763980897486192f,0.5492704923146081164020f,0.0619250478958671968233f,\
+0.1747947745500638971894f,0.7643392221916658346714f,0.2869233753851287982428f,\
+0.1186438529044472750540f,0.7261517086175122148717f,0.1110167797262640587697f,\
+0.1156665104854840142590f,0.1677179018762894047168f,0.9049771869312485117476f,\
+0.8140692858573190804350f,0.1865250841653489921601f,0.8328626043313867022277f,\
+0.4511026850510220786994f,0.5511713324178673101272f,1.0040394102716723168101f,\
+0.1134432764930088655131f,0.7136163206069113806862f,0.2389915016256592694699f,\
+0.5061510239067475991348f,0.1938531425179492451161f,0.267912781705172242663f,\
+0.594520593176991907214f,0.4421595740617755287971f,0.3838580911610497414799f,\
+0.6265966551277006857390f,0.4892019455111443759776f,0.5371648663643865395656f,\
+0.2336644699290637006150f,0.8580649693764487162539f,0.7447932141471096390006f,\
+0.30664577808112553070f,0.1126796888171682081703f,0.0673404850217956818526f,\
+0.3780061914448271664924f,0.3135468248495265064513f,0.8141814149801622768621f,\
+0.8656800272972641208113f,1.0330415543607425199468f,0.1517147576472806791426f,\
+0.6107832692276639052764f,0.5555300503019462432519f,0.6621194316643849164805f,\
+0.9359383537376269046604f,0.1578266511911156633197f,0.3288869400610432980336f,\
+0.4688911283964798393242f,0.1093517544178844447256f,0.7390278072154514710235f,\
+0.3915656081630794482784f,0.1803516698292359499156f,0.3140185989593758941751f,\
+0.2570435038916802361619f,0.0651252572213311814453f,0.1812803236410877871787f,\
+0.3918987512324060840108f,0.3907169202420177067658f,0.5847178774812699098007f,\
+0.1522469534945809221949f,0.4726351219523636792985f,0.8890284419930043480207f,\
+0.3043305148205690535690f,0.1282404489119809976039f,0.6689999411776240689775f,\
+0.4220981761434796641907f,0.2107039270298768085521f,0.3089304668962193911597f,\
+0.8825265124364938262858f,0.4570764804119011315287f,0.6317437032300170507426f,\
+0.6289949625530589782940f,0.4716158816756069738219f,0.4417016096894970100806f,\
+0.6297964082740089564183f,0.7506329678118981441060f,0.6853639001045995771122f,\
+0.6844909750084481325771f,0.3028385676048351293765f}
+
+#define CIRESULT {1.4391441245686327210507f,1.130955515640670316913f,1.1164484564631134144719f,\
+0.5343429881094952094145f,1.5313159234681512632648f,0.9218282568507811802760f,\
+1.1368031918334591257036f,1.309961324172885133166f,1.1768313149474189938104f,\
+1.1581725732800560724201f,1.198068547194847122128f,1.0167778558643913999759f,\
+0.8107284978807606234952f,0.9747572654361357225028f,1.2226962809307837520834f,\
+1.356863284326968122073f,1.4708283871101888173882f,1.0424189614104724110888f,\
+0.6175483783889722522176f,1.012434899444895508580f,1.4941377955828787360559f,\
+1.081247186686038253001f,1.189977918876721885155f,0.9361970185325101390106f,\
+1.0473314366303878575337f,0.6478815708564551467674f,1.103880390282215628872f,\
+1.208902068619972958174f,0.9405460211534443226711f,1.2708555309086870810376f,\
+1.2048457921815343141247f,1.0386992340805454304586f,0.9940470159552662332558f,\
+0.4129471251607437776165f,1.0483368304459323994138f,0.9626808065085141752348f,\
+0.9866797451792658213421f,1.2893127532844186333705f,0.6333368050416610106623f,\
+1.3849939050391590900091f,0.8412033774271403530065f,1.3484185557182311043789f,\
+0.6561721869869621137639f,0.8152667302376208624537f,0.8942162872449925803409f,\
+0.7354476761871528989190f,1.2302184692777484720239f,1.1419032200306009627866f,\
+0.8136425490751511002685f,1.0585917357001826122342f,1.5562281161680697749716f,\
+1.3215709464122720184776f,1.0936282246933759498830f,1.562690430228121041267f,\
+1.5431569076078051061529f,1.5549621593607869662890f,0.7985043985204253180754f,\
+1.3827954341839958640747f,1.3338048203354757603734f,1.1992311317991326546917f,\
+0.9398015526727905299964f,0.8526323846859752420002f,0.6516084904889641871151f,\
+0.9312161189612270240090f,1.4928235928235611407189f,1.1434135639085114544145f,\
+1.3304436504678796016066f,1.0279557218905930326969f,1.5707583700301124274290f,\
+1.18264027414866035315f,1.049240570305455033662f,1.1438977350867394200407f,\
+0.8645410048697405036577f,1.272544314036070156604f,1.2965854453389789036066f,\
+1.5441276936419627840991f,0.8474785980812834518261f,1.4222542688372477037717f,\
+1.1067340541491283989473f,0.6658230283826037654293f,0.7440600810961385258580f,\
+1.509454955782236762474f,0.7139904083352976993382f,1.3343109319103572119047f,\
+0.8754276015708571945240f,1.4375430902494801266300f,0.8182153660902479197503f,\
+0.6279916190243797213810f,1.3777792247900606525945f,1.5570776874524723254467f,\
+1.3896877170114805277734f,1.292290381577097857502f,0.9513544490495031702437f,\
+1.146595322853661613749f,1.0663673649265974496814f,0.9066444651210990857138f,\
+0.7936124351430207113367f,1.1025133400691302654195f,0.7646931356316959416120f,\
+1.3570006423237950254901f,1.0127507430242304042878f,0.6984070724030820853656f,\
+0.9777377069899801931285f,0.6381815285628557044006f,1.4447151619316793702552f,\
+0.7381184252357657626931f,0.9463444174447509515957f,1.3036540993301888313738f,\
+0.3993509460349408124458f,1.4425649666003559357108f,1.2703537792660923866350f,\
+0.3366052452908819825339f,0.9799364183556658058905f,0.6519110571169279833015f,\
+1.288935099739083156578f,0.766834829952783847418f,1.3765235555687964641436f,\
+0.9026821267000586512808f,0.7532458865053713870097f,1.1915253215495016370085f,\
+1.4398661339551832583084f,0.5960292480319858698934f,0.8683763627836410536887f,\
+1.307183356265154250409f,1.1437419441048803925298f,1.0721920855425228769064f,\
+1.5518517938677236500666f,1.2329687641584510249260f,0.5874976025749066854686f,\
+1.1457409989520814797004f,1.2187173974473419768572f,1.2272326680013900812583f,\
+1.3202499364548996307889f,1.3364966855772182352524f,1.5028659601895917319325f,\
+1.5039244799556488185743f,1.199080874147727016066f,0.8850027352965960103504f,\
+0.5797999065603636204003f,0.9935513093218836244702f,1.3250345117052622079257f,\
+0.7510747251416685088543f,1.3856864393507652977178f,1.0646397833458374204696f,\
+0.7161423103150551527918f,0.6220745390646167383153f,1.4237426982899421545881f,\
+1.4349026977530163762253f,1.0862935323189089054097f,0.7475103036060971595234f,\
+0.9640755596017442918821f,1.4756182374730877349123f,0.8992686396344509169865f,\
+1.0456992348735927311765f,1.316872193719026640224f,1.0937098269572853581622f,\
+0.3787889502350130777053f,1.1777575502770252224849f,1.466927792635024818679f,\
+1.198998549247170863907f,0.9317214709279717510526f,0.3994553068013038665818f,\
+0.9996993047110468433303f,1.0533682169916682713762f,1.1680862767422879322510f,\
+1.0968093743281353003027f,1.475564759332087749755f,0.5739680940616843640711f,\
+1.2132055498728515630091f,1.277641763762892734846f,1.2372616699165408515881f,\
+0.4908185034943345348424f,1.0764535824324550361553f,1.3508749145869605179371f,\
+1.282220574891209663448f,0.8033914160655766245611f,0.4529330910646225394345f,\
+1.3777085436870080137339f,0.9478851551815749010288f,1.2208388985822435923723f,\
+1.263077873207383738929f,1.284175149159334061721f,1.023436357706823729430f,\
+0.5626793926847969418148f,0.6728398111486185717567f,0.7545922256887819257187f,\
+1.5396608871785673056110f,0.5335122401588628937574f,1.0275094129340511805992f,\
+0.8338356239168208672297f,1.0426578447465559840168f,1.4617456602888381222982f,\
+0.6682797094798482717692f,1.3426136823908161321839f,1.3312882615539098907220f,\
+1.4697575902556172522395f,0.7877417380659905710161f,0.7165102522491650915981f,\
+1.3183788402186256139004f,0.4738958779540429211430f}
+
+
+void sacoshsTest(void) {
+ float In[]=IN;
+ float Res[]=RESULT;
+ float out;
+ int i = 0;
+
+ for (i=0;i<200;i++){
+ if (In[i]<1) assert(1);
+ else {
+ out = sacoshs(In[i]);
+ assert ( ( fabs(out-Res[i]) / fabs(out) ) <1e-6);
+ }
+ }
+}
+
+void cacoshsTest(void) {
+ float InR[]=CRIN;
+ float InI[]=CIIN;
+ float ResR[]=CRRESULT;
+ float ResI[]=CIRESULT;
+ int i=0;
+ floatComplex in,out;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(InR[i],InI[i]);
+ out=cacoshs(in);
+ assert( ( fabs(creals(out)-ResR[i]) / fabs(creals(out)) ) <1e-6);
+ assert( ( fabs(cimags(out)-ResI[i]) / fabs(cimags(out)) ) <1e-6);
+ }
+}
+
+void sacoshaTest(void) {
+ float In[]=IN;
+ float Res[]=RESULT;
+ float out[200],in[200];
+ int i = 0;
+
+ for (i=0;i<200;i++){
+ in[i]=In[i];
+ }
+
+ sacosha(in,200,out);
+ for (i=0;i<200;i++){
+ if (isnan(out[i])) assert(1);
+ else{
+ assert ( ( fabs(out[i]-Res[i]) / fabs(out[i]) ) <1e-6);
+ }
+ }
+}
+
+void cacoshaTest(void) {
+ float InR[]=CRIN;
+ float InI[]=CIIN;
+ float ResR[]=CRRESULT;
+ float ResI[]=CIRESULT;
+ int i=0;
+ floatComplex in[200],out[200];
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(InR[i],InI[i]);
+ }
+ cacosha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( fabs(creals(out[i])-ResR[i]) / fabs(creals(out[i])) ) <1e-6);
+ assert( ( fabs(cimags(out[i])-ResI[i]) / fabs(cimags(out[i])) ) <1e-6);
+ }
+}
+
+int testAcosh(void) {
+ printf("\n>>>> Float Hyperbolic ArcCosine Tests\n");
+ sacoshsTest();
+ cacoshsTest();
+ sacoshaTest();
+ cacoshaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testAcosh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj b/2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj
new file mode 100644
index 00000000..9e4fef1a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{24015124-A47C-406F-850B-09E95DBBF573}</ProjectGuid>
+ <RootNamespace>testFloatAcosh</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatAcosh.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj.filters b/2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj.filters
new file mode 100644
index 00000000..bb020c5d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/test_FloatAcosh/testFloatAcosh.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatAcosh.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj b/2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj
new file mode 100644
index 00000000..e89a1a6b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>testDoubleAcosh</ProjectName>
+ <ProjectGuid>{5805527C-6A77-40A9-8EF6-414B0269B50E}</ProjectGuid>
+ <RootNamespace>test_doubleacosh</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleAcosh.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj.filters b/2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj.filters
new file mode 100644
index 00000000..f609dce1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/test_doubleacosh/test_doubleacosh.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleAcosh.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/zacosha.c b/2.3-1/src/c/elementaryFunctions/acosh/zacosha.c
new file mode 100644
index 00000000..c5ba119e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/zacosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "acosh.h"
+
+void zacosha(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zacoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acosh/zacoshs.c b/2.3-1/src/c/elementaryFunctions/acosh/zacoshs.c
new file mode 100644
index 00000000..3bb3b25a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acosh/zacoshs.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula :
+//
+// acosh(z) = sign(-imag(acos(z)) i acos(z)
+//
+// sign(x) = 1 if x >= 0
+// | -1 if x < 0
+*/
+
+#include "acosh.h"
+#include "acos.h"
+
+#define localSign(x) x >= 0 ? 1.0 : -1.0
+
+doubleComplex zacoshs(doubleComplex z) {
+ doubleComplex acos_z = zacoss(z);
+ double sign = localSign(-zimags(acos_z));
+
+ return DoubleComplex(-sign * zimags(acos_z), sign * zreals(acos_z));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/cacota.c b/2.3-1/src/c/elementaryFunctions/acot/cacota.c
new file mode 100644
index 00000000..64e82b21
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/cacota.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acot.h"
+#include "floatComplex.h"
+
+void cacota(floatComplex* x, int size, floatComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = cacots(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/cacots.c b/2.3-1/src/c/elementaryFunctions/acot/cacots.c
new file mode 100644
index 00000000..f4c6236e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/cacots.c
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acot.h"
+#include "division.h"
+#include "floatComplex.h"
+#include "atan.h"
+
+floatComplex cacots(floatComplex x)
+{
+ floatComplex xinv;
+ xinv = crdivs(FloatComplex(1,0),x);
+ return catans(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/dacota.c b/2.3-1/src/c/elementaryFunctions/acot/dacota.c
new file mode 100644
index 00000000..794d0817
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/dacota.c
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acot.h"
+
+void dacota(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dacots(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/dacots.c b/2.3-1/src/c/elementaryFunctions/acot/dacots.c
new file mode 100644
index 00000000..42ce7b57
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/dacots.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acot.h"
+
+double dacots(double x)
+{
+ return ((3.14159265359/2)-atan(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/sacota.c b/2.3-1/src/c/elementaryFunctions/acot/sacota.c
new file mode 100644
index 00000000..b99a7739
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/sacota.c
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acot.h"
+
+void sacota(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sacots(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/sacots.c b/2.3-1/src/c/elementaryFunctions/acot/sacots.c
new file mode 100644
index 00000000..db6dca2f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/sacots.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acot.h"
+
+float sacots(float x)
+{
+ return ((3.14159265359/2)-atanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/zacota.c b/2.3-1/src/c/elementaryFunctions/acot/zacota.c
new file mode 100644
index 00000000..d08ebddd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/zacota.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acot.h"
+#include "doubleComplex.h"
+
+void zacota(doubleComplex* x, int size, doubleComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zacots(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acot/zacots.c b/2.3-1/src/c/elementaryFunctions/acot/zacots.c
new file mode 100644
index 00000000..3bf99b2c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acot/zacots.c
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acot.h"
+#include "division.h"
+#include "doubleComplex.h"
+#include "atan.h"
+
+doubleComplex zacots(doubleComplex x)
+{
+ doubleComplex xinv;
+ xinv = zrdivs(DoubleComplex(1,0),x);
+ return zatans(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acotd/dacotda.c b/2.3-1/src/c/elementaryFunctions/acotd/dacotda.c
new file mode 100644
index 00000000..a2b64856
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acotd/dacotda.c
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acotd.h"
+
+void dacotda(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dacotds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acotd/dacotds.c b/2.3-1/src/c/elementaryFunctions/acotd/dacotds.c
new file mode 100644
index 00000000..f149ac23
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acotd/dacotds.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acotd.h"
+
+double dacotds(double x)
+{
+ return ((((3.14159265359/2)-atan(x))*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acotd/sacotda.c b/2.3-1/src/c/elementaryFunctions/acotd/sacotda.c
new file mode 100644
index 00000000..39503044
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acotd/sacotda.c
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acotd.h"
+
+void sacotda(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sacotds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acotd/sacotds.c b/2.3-1/src/c/elementaryFunctions/acotd/sacotds.c
new file mode 100644
index 00000000..25797532
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acotd/sacotds.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acotd.h"
+
+float sacotds(float x)
+{
+ return ((((3.14159265359/2)-atanf(x))*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/cacotha.c b/2.3-1/src/c/elementaryFunctions/acoth/cacotha.c
new file mode 100644
index 00000000..f4e72dc6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/cacotha.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acoth.h"
+#include "floatComplex.h"
+
+void cacotha(floatComplex* x, int size, floatComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = cacoths(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/cacoths.c b/2.3-1/src/c/elementaryFunctions/acoth/cacoths.c
new file mode 100644
index 00000000..658c227a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/cacoths.c
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acoth.h"
+#include "division.h"
+#include "floatComplex.h"
+#include "atanh.h"
+
+floatComplex cacoths(floatComplex x)
+{
+ floatComplex xinv;
+ xinv = crdivs(FloatComplex(1,0),x);
+ return catanhs(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/dacotha.c b/2.3-1/src/c/elementaryFunctions/acoth/dacotha.c
new file mode 100644
index 00000000..b97b9039
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/dacotha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acoth.h"
+
+void dacotha(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dacoths(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/dacoths.c b/2.3-1/src/c/elementaryFunctions/acoth/dacoths.c
new file mode 100644
index 00000000..aa20a7bd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/dacoths.c
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acoth.h"
+#include "log.h"
+
+
+double dacoths(double x)
+{
+ return (log((1+x)/(x-1))/2);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/sacotha.c b/2.3-1/src/c/elementaryFunctions/acoth/sacotha.c
new file mode 100644
index 00000000..383f1882
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/sacotha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acoth.h"
+
+void sacotha(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sacoths(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/sacoths.c b/2.3-1/src/c/elementaryFunctions/acoth/sacoths.c
new file mode 100644
index 00000000..9a2137a6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/sacoths.c
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acoth.h"
+#include "log.h"
+
+float sacoths(float x)
+{
+ return (log((1+x)/(x-1))/2);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/zacotha.c b/2.3-1/src/c/elementaryFunctions/acoth/zacotha.c
new file mode 100644
index 00000000..3eb335ea
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/zacotha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "acoth.h"
+#include "doubleComplex.h"
+
+void zacotha(doubleComplex* x, int size, doubleComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zacoths(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acoth/zacoths.c b/2.3-1/src/c/elementaryFunctions/acoth/zacoths.c
new file mode 100644
index 00000000..bbb387b0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acoth/zacoths.c
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acoth.h"
+#include "division.h"
+#include "doubleComplex.h"
+#include "atanh.h"
+
+doubleComplex zacoths(doubleComplex x)
+{
+ doubleComplex xinv;
+ xinv = zrdivs(DoubleComplex(1,0),x);
+ return zatanhs(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/cacsca.c b/2.3-1/src/c/elementaryFunctions/acsc/cacsca.c
new file mode 100644
index 00000000..0512a20f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/cacsca.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+#include "floatComplex.h"
+
+void cacsca(floatComplex* x, int size, floatComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = cacscs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/cacscs.c b/2.3-1/src/c/elementaryFunctions/acsc/cacscs.c
new file mode 100644
index 00000000..9eea94e5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/cacscs.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+#include "floatComplex.h"
+#include "asin.h"
+#include "division.h"
+
+floatComplex cacscs(floatComplex x)
+{
+ floatComplex xinv;
+ xinv = crdivs(FloatComplex(1,0),x);
+ return casins(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/dacsca.c b/2.3-1/src/c/elementaryFunctions/acsc/dacsca.c
new file mode 100644
index 00000000..3f00d216
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/dacsca.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+
+void dacsca(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dacscs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/dacscs.c b/2.3-1/src/c/elementaryFunctions/acsc/dacscs.c
new file mode 100644
index 00000000..4b5ac25d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/dacscs.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+
+double dacscs(double x)
+{
+ return asin(1/x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/sacsca.c b/2.3-1/src/c/elementaryFunctions/acsc/sacsca.c
new file mode 100644
index 00000000..79e6bf95
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/sacsca.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+
+void sacsca(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sacscs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/sacscs.c b/2.3-1/src/c/elementaryFunctions/acsc/sacscs.c
new file mode 100644
index 00000000..e91fa398
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/sacscs.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+
+float sacscs(float x)
+{
+ return asin(1/x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/zacsca.c b/2.3-1/src/c/elementaryFunctions/acsc/zacsca.c
new file mode 100644
index 00000000..164406f6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/zacsca.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+#include "doubleComplex.h"
+
+void zacsca(doubleComplex* x, int size, doubleComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = zacscs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsc/zacscs.c b/2.3-1/src/c/elementaryFunctions/acsc/zacscs.c
new file mode 100644
index 00000000..91bb6c8c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsc/zacscs.c
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "acsc.h"
+#include "doubleComplex.h"
+#include "division.h"
+#include "asin.h"
+
+doubleComplex zacscs(doubleComplex x)
+{
+ doubleComplex xinv;
+ xinv = zrdivs(DoubleComplex(1,0),x);
+ return zasins(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acscd/dacscda.c b/2.3-1/src/c/elementaryFunctions/acscd/dacscda.c
new file mode 100644
index 00000000..84eeaed2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acscd/dacscda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acscd.h"
+
+void dacscda(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dacscds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acscd/dacscds.c b/2.3-1/src/c/elementaryFunctions/acscd/dacscds.c
new file mode 100644
index 00000000..27512ada
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acscd/dacscds.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acscd.h"
+
+double dacscds(double x)
+{
+ return ((asin(1/x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acscd/sacscda.c b/2.3-1/src/c/elementaryFunctions/acscd/sacscda.c
new file mode 100644
index 00000000..a5d130cf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acscd/sacscda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acscd.h"
+
+void sacscda(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sacscds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acscd/sacscds.c b/2.3-1/src/c/elementaryFunctions/acscd/sacscds.c
new file mode 100644
index 00000000..1c820c2a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acscd/sacscds.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acscd.h"
+
+float sacscds(float x)
+{
+ return ((asin(1/x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/cacscha.c b/2.3-1/src/c/elementaryFunctions/acsch/cacscha.c
new file mode 100644
index 00000000..0512a20f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/cacscha.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+#include "floatComplex.h"
+
+void cacsca(floatComplex* x, int size, floatComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = cacscs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/cacschs.c b/2.3-1/src/c/elementaryFunctions/acsch/cacschs.c
new file mode 100644
index 00000000..a250b9dc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/cacschs.c
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsch.h"
+#include "floatComplex.h"
+#include "asin.h"
+#include "division.h"
+
+floatComplex cacschs(floatComplex x)
+{
+ floatComplex xinv;
+ floatComplex temp;
+ xinv = crdivs(FloatComplex(1,0),x);
+ temp = sqrt(1+cmuls(xinv*xinv))
+
+}
+
+
+
+
+
+log(sqrt(1+(1/(x*x)))+(1/x));
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/dacscha.c b/2.3-1/src/c/elementaryFunctions/acsch/dacscha.c
new file mode 100644
index 00000000..e7177105
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/dacscha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsch.h"
+
+void dacscha(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dacschs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/dacschs.c b/2.3-1/src/c/elementaryFunctions/acsch/dacschs.c
new file mode 100644
index 00000000..b0a32291
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/dacschs.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsch.h"
+
+double dacschs(double x)
+{
+ return log(sqrt(1+(1/(x*x)))+(1/x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/sacscha.c b/2.3-1/src/c/elementaryFunctions/acsch/sacscha.c
new file mode 100644
index 00000000..c2321c6d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/sacscha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsch.h"
+
+void sacscha(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sacschs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/sacschs.c b/2.3-1/src/c/elementaryFunctions/acsch/sacschs.c
new file mode 100644
index 00000000..031773b9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/sacschs.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsch.h"
+
+double sacschs(float x)
+{
+ return log(sqrt(1+(1/(x*x)))+(1/x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/zacscha.c b/2.3-1/src/c/elementaryFunctions/acsch/zacscha.c
new file mode 100644
index 00000000..164406f6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/zacscha.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+#include "doubleComplex.h"
+
+void zacsca(doubleComplex* x, int size, doubleComplex* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = zacscs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/acsch/zacschs.c b/2.3-1/src/c/elementaryFunctions/acsch/zacschs.c
new file mode 100644
index 00000000..6e33e25b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/acsch/zacschs.c
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "acsc.h"
+#include "doubleComplex.h"
+#include "division.h"
+#include "asin.h"
+
+doubleComplex zacscs(doubleComplex x)
+{
+ doubleComplex xinv;
+ xinv = zrdivs(DoubleComplex(1,0),x);
+ return zasins(xinv);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asec/daseca.c b/2.3-1/src/c/elementaryFunctions/asec/daseca.c
new file mode 100644
index 00000000..2cf1dcd8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asec/daseca.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asec.h"
+
+void daseca(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dasecs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asec/dasecs.c b/2.3-1/src/c/elementaryFunctions/asec/dasecs.c
new file mode 100644
index 00000000..4f2f766e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asec/dasecs.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asec.h"
+
+double dasecs(double x)
+{
+ return acos(1/x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asec/saseca.c b/2.3-1/src/c/elementaryFunctions/asec/saseca.c
new file mode 100644
index 00000000..3b0afd84
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asec/saseca.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asec.h"
+
+void saseca(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sasecs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asec/sasecs.c b/2.3-1/src/c/elementaryFunctions/asec/sasecs.c
new file mode 100644
index 00000000..5db46a61
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asec/sasecs.c
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asec.h"
+
+double sasecs(float x)
+{
+ return acos(1/x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asecd/dasecda.c b/2.3-1/src/c/elementaryFunctions/asecd/dasecda.c
new file mode 100644
index 00000000..e692762c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asecd/dasecda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asecd.h"
+
+void dasecda(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dasecds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asecd/dasecds.c b/2.3-1/src/c/elementaryFunctions/asecd/dasecds.c
new file mode 100644
index 00000000..dead3189
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asecd/dasecds.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asecd.h"
+
+double dasecds(double x)
+{
+ return ((acos(1/x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asecd/sasecda.c b/2.3-1/src/c/elementaryFunctions/asecd/sasecda.c
new file mode 100644
index 00000000..5c9a42fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asecd/sasecda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asecd.h"
+
+void sasecda(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sasecds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asecd/sasecds.c b/2.3-1/src/c/elementaryFunctions/asecd/sasecds.c
new file mode 100644
index 00000000..2e265178
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asecd/sasecds.c
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asecd.h"
+
+double sasecds(float x)
+{
+ return ((acos(1/x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asech/dasecha.c b/2.3-1/src/c/elementaryFunctions/asech/dasecha.c
new file mode 100644
index 00000000..7309e3f2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asech/dasecha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asech.h"
+
+void dasecha(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dasechs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asech/dasechs.c b/2.3-1/src/c/elementaryFunctions/asech/dasechs.c
new file mode 100644
index 00000000..ad5756ae
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asech/dasechs.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asech.h"
+#include "log.h"
+
+double dasechs(double x)
+{
+ return log(sqrt((1/x)+1)*sqrt((1/x)-1)+(1/x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asech/sasecha.c b/2.3-1/src/c/elementaryFunctions/asech/sasecha.c
new file mode 100644
index 00000000..f28eace6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asech/sasecha.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asech.h"
+
+void sasecha(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sasechs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asech/sasechs.c b/2.3-1/src/c/elementaryFunctions/asech/sasechs.c
new file mode 100644
index 00000000..b1a1cab2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asech/sasechs.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#include <math.h>
+#include "asech.h"
+#include "log.h"
+
+double sasechs(float x)
+{
+ return log(sqrt((1/x)+1)*sqrt((1/x)-1)+(1/x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/Makefile.am b/2.3-1/src/c/elementaryFunctions/asin/Makefile.am
new file mode 100644
index 00000000..0a8ab05a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/Makefile.am
@@ -0,0 +1,72 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAsin_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAsin.la
+
+libAsin_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sasins.c \
+ dasins.c \
+ casins.c \
+ zasins.c \
+ sasina.c \
+ dasina.c \
+ casina.c \
+ zasina.c
+
+HEAD = ../includes/asin.h
+
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/asin/libAsin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatAsin testDoubleAsin
+
+TESTS = testFloatAsin testDoubleAsin
+
+#
+# -*- ArcSine Tests -*-
+#
+testFloatAsin_SOURCES = testAsin.h testFloatAsin.c
+testFloatAsin_CFLAGS = $(check_INCLUDES)
+testFloatAsin_LDADD = $(check_LDADD)
+
+testDoubleAsin_SOURCES = testAsin.h testDoubleAsin.c
+testDoubleAsin_CFLAGS = $(check_INCLUDES)
+testDoubleAsin_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/asin/Makefile.in b/2.3-1/src/c/elementaryFunctions/asin/Makefile.in
new file mode 100644
index 00000000..9c133bd6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/Makefile.in
@@ -0,0 +1,812 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatAsin$(EXEEXT) testDoubleAsin$(EXEEXT)
+TESTS = testFloatAsin$(EXEEXT) testDoubleAsin$(EXEEXT)
+subdir = src/c/elementaryFunctions/asin
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAsin_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAsin_la-sasins.lo libAsin_la-dasins.lo \
+ libAsin_la-casins.lo libAsin_la-zasins.lo libAsin_la-sasina.lo \
+ libAsin_la-dasina.lo libAsin_la-casina.lo libAsin_la-zasina.lo
+am_libAsin_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAsin_la_OBJECTS = $(am_libAsin_la_OBJECTS)
+libAsin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAsin_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleAsin_OBJECTS = testDoubleAsin-testDoubleAsin.$(OBJEXT)
+testDoubleAsin_OBJECTS = $(am_testDoubleAsin_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/asin/libAsin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleAsin_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleAsin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleAsin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatAsin_OBJECTS = testFloatAsin-testFloatAsin.$(OBJEXT)
+testFloatAsin_OBJECTS = $(am_testFloatAsin_OBJECTS)
+testFloatAsin_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatAsin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatAsin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAsin_la_SOURCES) $(testDoubleAsin_SOURCES) \
+ $(testFloatAsin_SOURCES)
+DIST_SOURCES = $(libAsin_la_SOURCES) $(testDoubleAsin_SOURCES) \
+ $(testFloatAsin_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAsin_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAsin.la
+libAsin_la_SOURCES = $(HEAD) $(SRC)
+SRC = sasins.c \
+ dasins.c \
+ casins.c \
+ zasins.c \
+ sasina.c \
+ dasina.c \
+ casina.c \
+ zasina.c
+
+HEAD = ../includes/asin.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/asin/libAsin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- ArcSine Tests -*-
+#
+testFloatAsin_SOURCES = testAsin.h testFloatAsin.c
+testFloatAsin_CFLAGS = $(check_INCLUDES)
+testFloatAsin_LDADD = $(check_LDADD)
+testDoubleAsin_SOURCES = testAsin.h testDoubleAsin.c
+testDoubleAsin_CFLAGS = $(check_INCLUDES)
+testDoubleAsin_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/asin/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/asin/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAsin.la: $(libAsin_la_OBJECTS) $(libAsin_la_DEPENDENCIES)
+ $(libAsin_la_LINK) -rpath $(pkglibdir) $(libAsin_la_OBJECTS) $(libAsin_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleAsin$(EXEEXT): $(testDoubleAsin_OBJECTS) $(testDoubleAsin_DEPENDENCIES)
+ @rm -f testDoubleAsin$(EXEEXT)
+ $(testDoubleAsin_LINK) $(testDoubleAsin_OBJECTS) $(testDoubleAsin_LDADD) $(LIBS)
+testFloatAsin$(EXEEXT): $(testFloatAsin_OBJECTS) $(testFloatAsin_DEPENDENCIES)
+ @rm -f testFloatAsin$(EXEEXT)
+ $(testFloatAsin_LINK) $(testFloatAsin_OBJECTS) $(testFloatAsin_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-casina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-casins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-dasina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-dasins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-sasina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-sasins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-zasina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsin_la-zasins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleAsin-testDoubleAsin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatAsin-testFloatAsin.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAsin_la-sasins.lo: sasins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-sasins.lo -MD -MP -MF $(DEPDIR)/libAsin_la-sasins.Tpo -c -o libAsin_la-sasins.lo `test -f 'sasins.c' || echo '$(srcdir)/'`sasins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-sasins.Tpo $(DEPDIR)/libAsin_la-sasins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sasins.c' object='libAsin_la-sasins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-sasins.lo `test -f 'sasins.c' || echo '$(srcdir)/'`sasins.c
+
+libAsin_la-dasins.lo: dasins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-dasins.lo -MD -MP -MF $(DEPDIR)/libAsin_la-dasins.Tpo -c -o libAsin_la-dasins.lo `test -f 'dasins.c' || echo '$(srcdir)/'`dasins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-dasins.Tpo $(DEPDIR)/libAsin_la-dasins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dasins.c' object='libAsin_la-dasins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-dasins.lo `test -f 'dasins.c' || echo '$(srcdir)/'`dasins.c
+
+libAsin_la-casins.lo: casins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-casins.lo -MD -MP -MF $(DEPDIR)/libAsin_la-casins.Tpo -c -o libAsin_la-casins.lo `test -f 'casins.c' || echo '$(srcdir)/'`casins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-casins.Tpo $(DEPDIR)/libAsin_la-casins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='casins.c' object='libAsin_la-casins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-casins.lo `test -f 'casins.c' || echo '$(srcdir)/'`casins.c
+
+libAsin_la-zasins.lo: zasins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-zasins.lo -MD -MP -MF $(DEPDIR)/libAsin_la-zasins.Tpo -c -o libAsin_la-zasins.lo `test -f 'zasins.c' || echo '$(srcdir)/'`zasins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-zasins.Tpo $(DEPDIR)/libAsin_la-zasins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zasins.c' object='libAsin_la-zasins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-zasins.lo `test -f 'zasins.c' || echo '$(srcdir)/'`zasins.c
+
+libAsin_la-sasina.lo: sasina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-sasina.lo -MD -MP -MF $(DEPDIR)/libAsin_la-sasina.Tpo -c -o libAsin_la-sasina.lo `test -f 'sasina.c' || echo '$(srcdir)/'`sasina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-sasina.Tpo $(DEPDIR)/libAsin_la-sasina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sasina.c' object='libAsin_la-sasina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-sasina.lo `test -f 'sasina.c' || echo '$(srcdir)/'`sasina.c
+
+libAsin_la-dasina.lo: dasina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-dasina.lo -MD -MP -MF $(DEPDIR)/libAsin_la-dasina.Tpo -c -o libAsin_la-dasina.lo `test -f 'dasina.c' || echo '$(srcdir)/'`dasina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-dasina.Tpo $(DEPDIR)/libAsin_la-dasina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dasina.c' object='libAsin_la-dasina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-dasina.lo `test -f 'dasina.c' || echo '$(srcdir)/'`dasina.c
+
+libAsin_la-casina.lo: casina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-casina.lo -MD -MP -MF $(DEPDIR)/libAsin_la-casina.Tpo -c -o libAsin_la-casina.lo `test -f 'casina.c' || echo '$(srcdir)/'`casina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-casina.Tpo $(DEPDIR)/libAsin_la-casina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='casina.c' object='libAsin_la-casina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-casina.lo `test -f 'casina.c' || echo '$(srcdir)/'`casina.c
+
+libAsin_la-zasina.lo: zasina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -MT libAsin_la-zasina.lo -MD -MP -MF $(DEPDIR)/libAsin_la-zasina.Tpo -c -o libAsin_la-zasina.lo `test -f 'zasina.c' || echo '$(srcdir)/'`zasina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsin_la-zasina.Tpo $(DEPDIR)/libAsin_la-zasina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zasina.c' object='libAsin_la-zasina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsin_la_CFLAGS) $(CFLAGS) -c -o libAsin_la-zasina.lo `test -f 'zasina.c' || echo '$(srcdir)/'`zasina.c
+
+testDoubleAsin-testDoubleAsin.o: testDoubleAsin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsin_CFLAGS) $(CFLAGS) -MT testDoubleAsin-testDoubleAsin.o -MD -MP -MF $(DEPDIR)/testDoubleAsin-testDoubleAsin.Tpo -c -o testDoubleAsin-testDoubleAsin.o `test -f 'testDoubleAsin.c' || echo '$(srcdir)/'`testDoubleAsin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAsin-testDoubleAsin.Tpo $(DEPDIR)/testDoubleAsin-testDoubleAsin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAsin.c' object='testDoubleAsin-testDoubleAsin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsin_CFLAGS) $(CFLAGS) -c -o testDoubleAsin-testDoubleAsin.o `test -f 'testDoubleAsin.c' || echo '$(srcdir)/'`testDoubleAsin.c
+
+testDoubleAsin-testDoubleAsin.obj: testDoubleAsin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsin_CFLAGS) $(CFLAGS) -MT testDoubleAsin-testDoubleAsin.obj -MD -MP -MF $(DEPDIR)/testDoubleAsin-testDoubleAsin.Tpo -c -o testDoubleAsin-testDoubleAsin.obj `if test -f 'testDoubleAsin.c'; then $(CYGPATH_W) 'testDoubleAsin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAsin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAsin-testDoubleAsin.Tpo $(DEPDIR)/testDoubleAsin-testDoubleAsin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAsin.c' object='testDoubleAsin-testDoubleAsin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsin_CFLAGS) $(CFLAGS) -c -o testDoubleAsin-testDoubleAsin.obj `if test -f 'testDoubleAsin.c'; then $(CYGPATH_W) 'testDoubleAsin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAsin.c'; fi`
+
+testFloatAsin-testFloatAsin.o: testFloatAsin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsin_CFLAGS) $(CFLAGS) -MT testFloatAsin-testFloatAsin.o -MD -MP -MF $(DEPDIR)/testFloatAsin-testFloatAsin.Tpo -c -o testFloatAsin-testFloatAsin.o `test -f 'testFloatAsin.c' || echo '$(srcdir)/'`testFloatAsin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAsin-testFloatAsin.Tpo $(DEPDIR)/testFloatAsin-testFloatAsin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAsin.c' object='testFloatAsin-testFloatAsin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsin_CFLAGS) $(CFLAGS) -c -o testFloatAsin-testFloatAsin.o `test -f 'testFloatAsin.c' || echo '$(srcdir)/'`testFloatAsin.c
+
+testFloatAsin-testFloatAsin.obj: testFloatAsin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsin_CFLAGS) $(CFLAGS) -MT testFloatAsin-testFloatAsin.obj -MD -MP -MF $(DEPDIR)/testFloatAsin-testFloatAsin.Tpo -c -o testFloatAsin-testFloatAsin.obj `if test -f 'testFloatAsin.c'; then $(CYGPATH_W) 'testFloatAsin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAsin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAsin-testFloatAsin.Tpo $(DEPDIR)/testFloatAsin-testFloatAsin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAsin.c' object='testFloatAsin-testFloatAsin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsin_CFLAGS) $(CFLAGS) -c -o testFloatAsin-testFloatAsin.obj `if test -f 'testFloatAsin.c'; then $(CYGPATH_W) 'testFloatAsin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAsin.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/asin/casina.c b/2.3-1/src/c/elementaryFunctions/asin/casina.c
new file mode 100644
index 00000000..9433290e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/casina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asin.h"
+
+void casina(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = casins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/casins.c b/2.3-1/src/c/elementaryFunctions/asin/casins.c
new file mode 100644
index 00000000..35a4a8d8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/casins.c
@@ -0,0 +1,146 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ * REFERENCE
+ * This is a Fortran-77 translation of an algorithm by
+ * T.E. Hull, T. F. Fairgrieve and P.T.P. Tang which
+ * appears in their article :
+ * "Implementing the Complex Arcsine and Arccosine
+ * Functions Using Exception Handling", ACM, TOMS,
+ * Vol 23, No. 3, Sept 1997, p. 299-335
+ * Thanks to Tom Fairgrieve
+ */
+
+#include "lapack.h"
+#include "asin.h"
+#include "atan.h"
+#include "sqrt.h"
+#include "abs.h"
+#include "log.h"
+#include "log1p.h"
+#include "min.h"
+#include "max.h"
+
+floatComplex casins(floatComplex z) {
+ static float sdblPi_2 = 1.5707963267948966192313216f;
+ static float sdblLn2 = 0.6931471805599453094172321f;
+ static float sdblAcross = 1.5f;
+ static float sdblBcross = 0.6417f;
+
+ float dblLsup = ssqrts((float) getOverflowThreshold())/ 8.0f;
+ float dblLinf = 4.0f * ssqrts((float) getUnderflowThreshold());
+ float dblEpsm = ssqrts((float) getRelativeMachinePrecision());
+
+ float _dblReal = creals(z);
+ float _dblImg = cimags(z);
+
+ float dblAbsReal = sabss(_dblReal);
+ float dblAbsImg = sabss(_dblImg);
+ float iSignReal = _dblReal < 0 ? -1.0f : 1.0f;
+ float iSignImg = _dblImg < 0 ? -1.0f : 1.0f;
+
+ float dblR = 0, dblS = 0, dblA = 0, dblB = 0;
+
+ float dblTemp = 0;
+
+ float _pdblReal = 0;
+ float _pdblImg = 0;
+
+ if( min(dblAbsReal, dblAbsImg) > dblLinf && max(dblAbsReal, dblAbsImg) <= dblLsup)
+ {
+ /* we are in the safe region */
+ dblR = ssqrts( (dblAbsReal + 1) * (dblAbsReal + 1) + dblAbsImg * dblAbsImg);
+ dblS = ssqrts( (dblAbsReal - 1) * (dblAbsReal - 1) + dblAbsImg * dblAbsImg);
+ dblA = (float) 0.5 * ( dblR + dblS );
+ dblB = dblAbsReal / dblA;
+
+
+ /* compute the real part */
+ if(dblB <= sdblBcross)
+ _pdblReal = sasins(dblB);
+ else if( dblAbsReal <= 1)
+ _pdblReal = satans(dblAbsReal / ssqrts( 0.5f * (dblA + dblAbsReal) * ( (dblAbsImg * dblAbsImg) / (dblR + (dblAbsReal + 1)) + (dblS + (1 - dblAbsReal)))));
+ else
+ _pdblReal = satans(dblAbsReal / (dblAbsImg * ssqrts( 0.5f * ((dblA + dblAbsReal) / (dblR + (dblAbsReal + 1)) + (dblA + dblAbsReal) / (dblS + (dblAbsReal-1))))));
+
+ /* compute the imaginary part */
+ if(dblA <= sdblAcross)
+ {
+ float dblImg1 = 0;
+
+ if(dblAbsReal < 1)
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(y**2)/(S+(1.d0-x))) */
+ dblImg1 = 0.5f * (dblAbsImg * dblAbsImg / (dblR + (dblAbsReal + 1)) + dblAbsImg * dblAbsImg / (dblS + (1 - dblAbsReal)));
+ else
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(S+(x-1.d0))) */
+ dblImg1 = 0.5f * (dblAbsImg * dblAbsImg / (dblR + (dblAbsReal + 1)) + (dblS + (dblAbsReal - 1)));
+ /* ai = logp1(Am1 + sqrt(Am1*(A+1.d0))) */
+ dblTemp = dblImg1 + ssqrts(dblImg1 * (dblA + 1));
+ _pdblImg = slog1ps(dblTemp);
+ }
+ else
+ /* ai = log(A + sqrt(A**2 - 1.d0)) */
+ _pdblImg = slogs(dblA + ssqrts(dblA * dblA - (float) 1.0));
+ }
+ else
+ {
+ /* evaluation in the special regions ... */
+ if(dblAbsImg <= dblEpsm * dabss(dblAbsReal - 1))
+ {
+ if(dblAbsReal < 1)
+ {
+ _pdblReal = sasins(dblAbsReal);
+ _pdblImg = dblAbsImg / ssqrts((1 + dblAbsReal) * (1 - dblAbsReal));
+ }
+ else
+ {
+ _pdblReal = sdblPi_2;
+ if(dblAbsReal <= dblLsup)
+ {
+ dblTemp = (dblAbsReal - 1) + ssqrts((dblAbsReal - 1) * (dblAbsReal + 1));
+ _pdblImg = slog1ps(dblTemp);
+ }
+ else
+ _pdblImg = sdblLn2 + slogs(dblAbsReal);
+ }
+ }
+ else if(dblAbsImg < dblLinf)
+ {
+ _pdblReal = sdblPi_2 - ssqrts(dblAbsImg);
+ _pdblImg = ssqrts(dblAbsImg);
+ }
+ else if((dblEpsm * dblAbsImg - 1 >= dblAbsReal))
+ {
+ _pdblReal = dblAbsReal * dblAbsImg;
+ _pdblImg = sdblLn2 + slogs(dblAbsReal);
+ }
+ else if(dblAbsReal > 1)
+ {
+ _pdblReal = satans(dblAbsReal / dblAbsImg);
+ dblTemp = (dblAbsReal / dblAbsImg) * (dblAbsReal / dblAbsImg);
+ _pdblImg = sdblLn2 + slogs(dblAbsReal) + 0.5f * slog1ps(dblTemp);
+ }
+ else
+ {
+ float dblTemp2 = ssqrts(1 + dblAbsImg * dblAbsImg);
+ _pdblReal = dblAbsReal / dblTemp2;
+ dblTemp = 2.0f * dblAbsImg * (dblAbsImg + dblTemp2);
+ _pdblImg = 0.5f * slog1ps(dblTemp);
+ }
+ }
+ _pdblReal *= iSignReal;
+ _pdblImg *= iSignImg;
+
+ return (FloatComplex(_pdblReal, _pdblImg));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/dasina.c b/2.3-1/src/c/elementaryFunctions/asin/dasina.c
new file mode 100644
index 00000000..beb38d42
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/dasina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asin.h"
+
+void dasina(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dasins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/dasins.c b/2.3-1/src/c/elementaryFunctions/asin/dasins.c
new file mode 100644
index 00000000..08e524b3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/dasins.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asin.h"
+
+double dasins(double x) {
+ return (asin(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/sasina.c b/2.3-1/src/c/elementaryFunctions/asin/sasina.c
new file mode 100644
index 00000000..d6e76ba3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/sasina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asin.h"
+
+void sasina(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sasins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/sasins.c b/2.3-1/src/c/elementaryFunctions/asin/sasins.c
new file mode 100644
index 00000000..63967c27
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/sasins.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asin.h"
+
+float sasins(float x) {
+ return (asinf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/testAsin.h b/2.3-1/src/c/elementaryFunctions/asin/testAsin.h
new file mode 100644
index 00000000..ede65bfc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/testAsin.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTASIN_H_
+#define _TESTASIN_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "asin.h"
+#include "constant.h"
+
+
+void sasinsTest(void);
+
+void dasinsTest(void);
+
+void casinsTest(void);
+
+void zasinsTest(void);
+
+void sasinaTest(void);
+
+void dasinaTest(void);
+
+void casinaTest(void);
+
+void zasinaTest(void);
+
+int testAsin(void);
+
+#endif /* ! _TESTASIN_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/asin/testDoubleAsin.c b/2.3-1/src/c/elementaryFunctions/asin/testDoubleAsin.c
new file mode 100644
index 00000000..58149a42
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/testDoubleAsin.c
@@ -0,0 +1,495 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAsin.h"
+
+#define SOURCE {0.9356911443173885345459,0.5202743173576891422272,0.8356943717226386070251,\
+0.1390841729007661342621,0.1484344247728586196899,0.5062630889005959033966,\
+0.6569615425541996955872,0.1527653667144477367401,0.2077333852648735046387,\
+0.1310311132110655307770,0.2355898572131991386414,0.9000837444327771663666,\
+0.0360118653625249862671,0.4438733388669788837433,0.2795370602980256080627,\
+0.3609029497019946575165,0.0737524814903736114502,0.8877843604423105716705,\
+0.7357059037312865257263,0.1533541432581841945648,0.2168745566159486770630,\
+0.7783402544446289539337,0.6990017639473080635071,0.6133037763647735118866,\
+0.1271589249372482299805,0.3196897902525961399078,0.2413121340796351432800,\
+0.0203057392500340938568,0.8844696115702390670776,0.7514050160534679889679,\
+0.8791579911485314369202,0.3137878845445811748505,0.4495223872363567352295,\
+0.7199412197805941104889,0.8987670382484793663025,0.1432229257188737392426,\
+0.9059501979500055313110,0.4684562650509178638458,0.2573188217356801033020,\
+0.5960337105207145214081,0.9504154697060585021973,0.9387393021024763584137,\
+0.2791117234155535697937,0.4469828694127500057220,0.5995192881673574447632,\
+0.3789988537319004535675,0.8654018277302384376526,0.2727968390099704265594,\
+0.5822574533522129058838,0.5512602762319147586823,0.4366636639460921287537,\
+0.2757742605172097682953,0.3867734093219041824341,0.1321225953288376331329,\
+0.3260228233411908149719,0.1601287531666457653046,0.4301580488681793212891,\
+0.4006247171200811862946,0.8426104513928294181824,0.9048160626552999019623,\
+0.320046393200755119324,0.8069710140116512775421,0.7235896149650216102600,\
+0.7765955845825374126434,0.6767611466348171234131,0.5158662856556475162506,\
+0.1936035444959998130798,0.4270762628875672817230,0.4847531262785196304321,\
+0.5182100948877632617950,0.3503957511857151985168,0.4174968632869422435760,\
+0.442088566720485687256,0.4049004786647856235504,0.0953520191833376884460,\
+0.0149906217120587825775,0.2767332997173070907593,0.396497034002095460892,\
+0.3277142727747559547424,0.6040842677466571331024,0.4983838088810443878174,\
+0.7224933789111673831940,0.6212163185700774192810,0.5571814230643212795258,\
+0.5545951593667268753052,0.9439489883370697498322,0.1018914626911282539368,\
+0.9077803748659789562225,0.8599558025598526000977,0.3132304050959646701813,\
+0.7458020029589533805847,0.6701762243174016475677,0.6670592557638883590698,\
+0.7646118258126080036163,0.8154405960813164710999,0.1493974099867045879364,\
+0.2480226568877696990967,0.6294850618578493595123,0.6535534998401999473572,\
+0.0851266062818467617035,0.3553021941334009170532,0.6699288752861320972443,\
+0.5531356902793049812317,0.9733559968881309032440,0.4305554106831550598145,\
+0.5243876897729933261871,0.9223478538915514945984,0.4095269232057034969330,\
+0.5303003843873739242554,0.1592096765525639057159,0.4631052548065781593323,\
+0.7969039077870547771454,0.4371217824518680572510,0.4197942153550684452057,\
+0.5820884769782423973083,0.2639330527745187282562,0.9251737911254167556763,\
+0.2750987303443253040314,0.7529260413721203804016,0.1343348133377730846405,\
+0.6487299203872680664062,0.8492549010552465915680,0.0482988981530070304871,\
+0.7936811461113393306732,0.6225296836346387863159,0.8340442483313381671906,\
+0.5607167938724160194397,0.2962070326320827007294,0.7626721523702144622803,\
+0.3759830952621996402740,0.9307165136560797691345,0.5556063777767121791840,\
+0.4568063858896493911743,0.0317669031210243701935,0.7012319983914494514465,\
+0.4635622831992805004120,0.6323687359690666198730,0.8858239823020994663239,\
+0.7168863369151949882507,0.7797616957686841487885,0.2916170265525579452515,\
+0.4237285782583057880402,0.28695563320070505142,0.1371444310061633586884,\
+0.9822116084396839141846,0.2552233324386179447174,0.3307547485455870628357,\
+0.0061365715228021144867,0.1720932889729738235474,0.2806011182256042957306,\
+0.2241949187591671943665,0.9616182404570281505585,0.9974081367254257202148,\
+0.3941962518729269504547,0.5662632463499903678894,0.0963757499121129512787,\
+0.3522291611880064010620,0.3187350784428417682648,0.5841740677133202552795,\
+0.9247881243936717510223,0.7888248674571514129639,0.6642959327436983585358,\
+0.3959421953186392784119,0.6204979992471635341644,0.1972246859222650527954,\
+0.8056284752674400806427,0.8491280348971486091614,0.9318168940953910350800,\
+0.7328312769532203674316,0.6715824031271040439606,0.1545045776292681694031,\
+0.6186148612760007381439,0.9608297105878591537476,0.0403955359943211078644,\
+0.0333962673321366310120,0.7544445092789828777313,0.6861435212194919586182,\
+0.4345912770368158817291,0.5974397426471114158630,0.7376494011841714382172,\
+0.4376876372843980789185,0.2092354488559067249298,0.6795164542272686958313,\
+0.3552068280987441539764,0.0756681859493255615234,0.9273025044240057468414,\
+0.8346071569249033927917,0.743054957594722509384,0.4906791727989912033081,\
+0.6159011130221188068390,0.7293182769790291786194,0.5866543571464717388153,\
+0.8633460365235805511475,0.9971091211773455142975,0.1388301542028784751892,\
+0.4055338925682008266449,0.4532660786062479019165,0.2871678886003792285919,\
+0.2700171591714024543762,0.2655710014514625072479}
+
+
+#define RESULT {1.2102129173972693276795,0.547172134283395505960,0.9893959167427971435060,\
+0.1395365387198562734383,0.1489849714320161666592,0.5308459929384929942842,\
+0.7167814580056727224999,0.1533658822581816516539,0.2092572247647190852859,\
+0.1314089889300391889027,0.2378254645317898763324,1.1199616760260284742401,\
+0.0360196535997655206685,0.4599165600749937077296,0.2833119142414158297960,\
+0.3692359156088362848180,0.0738195075749003143395,1.0925087004242901578266,\
+0.8267083221396219760990,0.1539616791242165161346,0.2186116813912043488344,\
+0.8920178989455170848188,0.7740006423727355810982,0.6602366372124121030041,\
+0.1275041230444604323235,0.3254020787470935927033,0.2437177159295554063068,\
+0.0203071349297229801489,1.0853560691206285415689,0.8501888295310906507041,\
+1.0740923528156336441697,0.3191797921431215878663,0.4662305874507110536875,\
+0.8037176217662085342397,1.1169491151572188414320,0.1437171522303946902266,\
+1.13361865210398771175,0.4875426458125770023955,0.2602465647055824948808,\
+0.6385524103330081358010,1.2545691699775671779093,1.2189537472935179085454,\
+0.2828689457902803794376,0.4633896660240007236986,0.6429003543060739511716,\
+0.3887142006801726501486,1.0459517428704359076619,0.2762989388590115780175,\
+0.6215026189895035413358,0.5838740042814533071081,0.4518867349636846997285,\
+0.2793951051102595561915,0.3971301217078890832823,0.132510043706192570667,\
+0.3320934649289025153429,0.1608210878711773539340,0.4446678438400747945813,\
+0.4121985697961437211667,1.0021124190562762379386,1.1309475449498487265032,\
+0.3257784557613874198978,0.9390052579549887923349,0.8089888457708835911575,\
+0.8892438326422247296676,0.7433542835357417333242,0.5420185672225497075516,\
+0.1948338635337260038582,0.4412568471414960447063,0.5060808916267004464729,\
+0.5447567844134539871703,0.3579936097184594490095,0.430688870641149468277,\
+0.4579258061456900619213,0.4168699854700866902490,0.0954971037836137986998,\
+0.0149911832144437959929,0.2803929768115001053275,0.4076979699824179737000,\
+0.3338832266123987202455,0.6486162776185823153341,0.5217335620683097863193,\
+0.8074019476106287784845,0.6702938912826584827442,0.5909876416606805182852,\
+0.5878763702657983092337,1.2343959660274554934745,0.1020685954711661458383,\
+1.1379615773910940479396,1.0351830670880448614923,0.3185927153117306676045,\
+0.8417379366997205236700,0.7344461964462585257252,0.7302544939241956134524,\
+0.8704388193816158247884,0.9534899570984974870314,0.1499588151786827583400,\
+0.2506386006706501912156,0.6808903181988129604818,0.7122699052095804450602,\
+0.0852297552133160912780,0.3632373356223638216633,0.7341129828114539845885,\
+0.5861234773434839118167,1.3394387326603169885431,0.4451080564403126493822,\
+0.5519958405399131295965,1.1741139184516546922765,0.4219354466987135787726,\
+0.5589548324277814339567,0.1598900667546140630382,0.4814956074594635149211,\
+0.9221526721268241688634,0.4523960307711298312050,0.4332185780481620507310,\
+0.6212947925772885904294,0.2670975836918499934924,1.1814932336008394653248,\
+0.2786923935221553016994,0.8524970032637724237645,0.1347421608080361932203,\
+0.7059143267628599227592,1.014572470500166190277,0.0483176963724658639632,\
+0.9168365263416731192336,0.6719709888964939814571,0.9863981265157644173769,\
+0.5952512315907774187451,0.3007190162077965633891,0.8674345484889434132469,\
+0.3854574865641427483531,1.1963670583888645904125,0.5890920941092092633085,\
+0.4744017948433008613485,0.0317722484037002914081,0.7771241013419247778415,\
+0.4820113338532510671719,0.6846071548899330672100,1.0882667543007658040,\
+0.7993259845681112141236,0.8942850957473000850229,0.2959169071935129347040,\
+0.4375577621669283212569,0.2910472961271438063768,0.1375780266978623433971,\
+1.3818975127290542559422,0.2580786782411462754183,0.337103224922307598277,\
+0.0061366100381220973006,0.1729542689024595181202,0.2844203312567258890020,\
+0.2261168471284604464255,1.292840105239649206581,1.4987826659389660299837,\
+0.4051931219540680362279,0.6019650966008720516243,0.0965255712145899474885,\
+0.3599518411886321600512,0.3243946620517429990649,0.6238620609478121581404,\
+1.1804783562721565814968,0.9088946724537740884386,0.7265514890656400437408,\
+0.407093673069975237055,0.6693775784027574671242,0.1985261923397042549411,\
+0.9367355633059043507060,1.0143322323911900806337,1.199387299048776833743,\
+0.8224738107516712526390,0.7363424248289601736772,0.1551259899908567496674,\
+0.6669785285495629656438,1.289980681935538386895,0.0404065303042144760570,\
+0.0334024783187645626925,0.8548073921139841546690,0.7561744594372630245971,\
+0.4495844069894625594230,0.6403046132494145670222,0.8295822852568314198507,\
+0.4530252724246893181181,0.2107930369382310653581,0.747103346555288094777,\
+0.3631353147252046054128,0.0757405812005388645591,1.1871407475057926816930,\
+0.9874192358186812956689,0.8376237455287295352591,0.5128690395827339987278,\
+0.6635292564994419439728,0.8173250039556049229006,0.6269213761078136215588,\
+1.0418634321911146578543,1.4947401270369859993536,0.1392800314888206769659,\
+0.4175628314057308609897,0.4704260294397792363519,0.29126887742414786509,\
+0.2734108525510542397896,0.2687961431094310627010}
+
+
+#define RSOURCE {0.0100881215184926986694,0.0074436445720493793488,0.2989360922947525978088,\
+0.3327573235146701335907,0.237830940634012222290,0.8535961345769464969635,\
+0.7922197943553328514099,0.9695409736596047878265,0.6468791384249925613403,\
+0.9159972262568771839142,0.7485287981107831001282,0.5446169781498610973358,\
+0.4380150139331817626953,0.8022991069592535495758,0.0770919052883982658386,\
+0.6038356139324605464935,0.0416274946182966232300,0.0491319303400814533234,\
+0.2167323390021920204163,0.5511633078567683696747,0.5648556910455226898193,\
+0.7904387773014605045319,0.8203159859403967857361,0.8707285351119935512543,\
+0.7680293265730142593384,0.9941699919290840625763,0.7653715135529637336731,\
+0.7766020926646888256073,0.0391560420393943786621,0.3610868924297392368317,\
+0.7096323622390627861023,0.1340617476962506771088,0.3352055754512548446655,\
+0.4794248570688068866730,0.9102506125345826148987,0.9960912610404193401337,\
+0.5589408166706562042236,0.3291657851077616214752,0.5254327272996306419373,\
+0.5988637856207787990570,0.3400457371026277542114,0.7296699327416718006134,\
+0.1172471689060330390930,0.1599596398882567882538,0.6893001943826675415039,\
+0.8244171240366995334625,0.5743538914248347282410,0.3230684562586247920990,\
+0.4945516120642423629761,0.1966073368676006793976,0.1734057078137993812561,\
+0.5929257045499980449677,0.3272335343062877655029,0.7093706638552248477936,\
+0.9978715321049094200134,0.6042335904203355312347,0.5281810555607080459595,\
+0.6643366483040153980255,0.4330314965918660163879,0.5683163288049399852753,\
+0.0414931252598762512207,0.3723129951395094394684,0.9558939440175890922546,\
+0.7412597923539578914642,0.9651917275041341781616,0.7298236568458378314972,\
+0.9387842947617173194885,0.2572855348698794841766,0.2874279357492923736572,\
+0.8952562944032251834869,0.6853557890281081199646,0.1711091897450387477875,\
+0.7769848424941301345825,0.658369113225489854813,0.4177721040323376655579,\
+0.0530332433991134166718,0.4968273639678955078125,0.59690707409754395485,\
+0.4338118461892008781433,0.9805241837166249752045,0.9094489198178052902222,\
+0.6140774791128933429718,0.152644918300211429596,0.2700240234844386577606,\
+0.0427649877965450286865,0.9506349326111376285553,0.2680307617411017417908,\
+0.7927461988292634487152,0.6853035334497690200806,0.2653256771154701709747,\
+0.7276884736493229866028,0.2182058426551520824432,0.0794423148036003112793,\
+0.8774413042701780796051,0.7575887991115450859070,0.0292344330810010433197,\
+0.0814430620521306991577,0.7652318407781422138214,0.6499179983511567115784,\
+0.652228816878050565720,0.2570325322449207305908,0.4139282093383371829987,\
+0.5334635889157652854919,0.5463846079073846340179,0.8812804389744997024536,\
+0.1071240645833313465118,0.8451719628646969795227,0.5956639605574309825897,\
+0.3115242570638656616211,0.7552670040167868137360,0.7216278789564967155457,\
+0.64724771818146109581,0.7020909022539854049683,0.8550091539509594440460,\
+0.0292058298364281654358,0.5402219365350902080536,0.5295652858912944793701,\
+0.6731671304441988468170,0.2516432842239737510681,0.4682487822137773036957,\
+0.8973557446151971817017,0.2490413752384483814240,0.953785804100334644318,\
+0.0199718060903251171112,0.0883063450455665588379,0.3088448666967451572418,\
+0.0402540368959307670593,0.7409055917523801326752,0.3341060634702444076538,\
+0.6859912057407200336456,0.5277825826779007911682,0.5605597789399325847626,\
+0.2702448405325412750244,0.3409920767880976200104,0.0499807363376021385193,\
+0.9285474619828164577484,0.0452665109187364578247,0.5747140836901962757111,\
+0.8132651047781109809875,0.0034279632382094860077,0.5530686080455780029297,\
+0.5287449606694281101227,0.2227140991017222404480,0.7380339815281331539154,\
+0.7569990437477827072144,0.5666191582567989826202,0.8965943017974495887756,\
+0.205033115576952695847,0.5744996629655361175537,0.6296528042294085025787,\
+0.28830870892852544785,0.0064737624488770961761,0.2910466734319925308228,\
+0.161138039547950029373,0.6345168473199009895325,0.1110653909854590892792,\
+0.9721379503607749938965,0.6926467292942106723785,0.4481767667457461357117,\
+0.9629431902430951595306,0.8420772161334753036499,0.6861935486085712909698,\
+0.2752589071169495582581,0.2056670929305255413055,0.0983050949871540069580,\
+0.7260084436275064945221,0.9338818406686186790466,0.8652051738463342189789,\
+0.1300270427018404006958,0.6536684674210846424103,0.9546198891475796699524,\
+0.3356514233164489269257,0.6098881512880325317383,0.7403389909304678440094,\
+0.4407326159998774528503,0.0114278956316411495209,0.4274448286741971969604,\
+0.4898742889054119586945,0.0670661935582756996155,0.9097212324850261211395,\
+0.9331833533942699432373,0.1665275008417665958405,0.4363766452297568321228,\
+0.1269035614095628261566,0.4618353042751550674438,0.6410199669189751148224,\
+0.5118249626830220222473,0.4726877692155539989471,0.6037398651242256164551,\
+0.6487199389375746250153,0.3443940980359911918640,0.1257671504281461238861,\
+0.1930030044168233871460,0.0536806662566959857941,0.813977831043303012848,\
+0.6546894307248294353485,0.4812035299837589263916,0.2122878567315638065338,\
+0.6028915112838149070740,0.2477151653729379177094}
+
+#define ISOURCE {0.4653960186988115310669,0.0302665126509964466095,0.1205546753481030464172,\
+0.4954105126671493053436,0.8391606211662292480469,0.8067971416749060153961,\
+0.5980955390259623527527,0.5697243823669850826263,0.535449741408228874207,\
+0.4594913427717983722687,0.0716273644939064979553,0.1432999591343104839325,\
+0.3299815915524959564209,0.2239767671562731266022,0.4729467025026679039001,\
+0.8927706009708344936371,0.4739306215196847915649,0.4218414542265236377716,\
+0.5464035095646977424622,0.9297901126556098461151,0.8246648237109184265137,\
+0.3906875425018370151520,0.8106931401416659355164,0.0035473941825330257416,\
+0.4432799126952886581421,0.1700443555600941181183,0.2843202138319611549377,\
+0.8185154641978442668915,0.1276803798973560333252,0.0368908629752695560455,\
+0.1934843575581908226013,0.3111848584376275539398,0.8499574232846498489380,\
+0.4845375162549316883087,0.3811378227546811103821,0.2295314031653106212616,\
+0.5668137520551681518555,0.7386174597777426242828,0.6359649775549769401550,\
+0.8589683636091649532318,0.3717852663248777389526,0.4039371167309582233429,\
+0.6600336739793419837952,0.2385329673998057842255,0.4580096118152141571045,\
+0.3359361500479280948639,0.8938684901222586631775,0.7110573030076920986176,\
+0.8602916095405817031860,0.3305067983455955982208,0.9176958473399281501770,\
+0.15107359318062663078,0.4452155604958534240723,0.7259225868619978427887,\
+0.6476110024377703666687,0.7142038433812558650970,0.1180544253438711166382,\
+0.5106264133937656879425,0.0454169148579239845276,0.4517838652245700359344,\
+0.7152258791029453277588,0.0306280092336237430573,0.5608849888667464256287,\
+0.6344716749154031276703,0.5510452408343553543091,0.8902607751078903675079,\
+0.0251876907423138618469,0.1285902666859328746796,0.0875252783298492431641,\
+0.1400479921139776706696,0.2142530409619212150574,0.6689547612331807613373,\
+0.6959728877991437911987,0.3454284076578915119171,0.8007909813895821571350,\
+0.3719339291565120220184,0.9791326485574245452881,0.6300911963917315006256,\
+0.9137416174635291099548,0.3324960893951356410980,0.6226272527128458023071,\
+0.2876702961511909961700,0.0238953353837132453918,0.6489893826656043529510,\
+0.2444448098540306091309,0.0555481188930571079254,0.374434794299304485321,\
+0.7194064198993146419525,0.2112230267375707626343,0.6445186366327106952667,\
+0.6751487934961915016174,0.1528833056800067424774,0.8900802619755268096924,\
+0.6180598423816263675690,0.27906801458448171616,0.1401830366812646389008,\
+0.3047434557229280471802,0.2149655860848724842072,0.5602726386860013008118,\
+0.6269132751040160655975,0.6647229343652725219727,0.2090867855586111545563,\
+0.7116218386217951774597,0.133228497114032506943,0.7362840902060270309448,\
+0.3999320124275982379913,0.6811551460996270179749,0.5637665162794291973114,\
+0.523965936154127120972,0.8278774530626833438873,0.4659156939014792442322,\
+0.8515693820081651210785,0.23139653541147708893,0.3077362445183098316193,\
+0.4819453330710530281067,0.7797386529855430126190,0.9701553061604499816895,\
+0.3744371854700148105621,0.2292016251012682914734,0.8245750456117093563080,\
+0.1854322012513875961304,0.2345628221519291400909,0.9701467091217637062073,\
+0.3639524574391543865204,0.2672337628901004791260,0.8174969092942774295807,\
+0.6407580440863966941833,0.0946763656102120876312,0.3158860523253679275513,\
+0.5199312460608780384064,0.7127110259607434272766,0.0025766002945601940155,\
+0.5305844545364379882812,0.7374818869866430759430,0.2254834799095988273621,\
+0.7290844931267201900482,0.1897403579205274581909,0.7771647279150784015656,\
+0.7071320274844765663147,0.67804440064355731010,0.6918747089803218841553,\
+0.2444804669357836246490,0.2024903288111090660095,0.7065096027217805385590,\
+0.6258084420114755630493,0.4988589403219521045685,0.1275391997769474983215,\
+0.7432725760154426097870,0.3388997837901115417480,0.2712128334678709506989,\
+0.1686986042186617851257,0.1788796423934400081635,0.9720784332603216171265,\
+0.0373507668264210224152,0.9457915211096405982971,0.3708799923770129680634,\
+0.4304266162216663360596,0.2409997568465769290924,0.6574296867474913597107,\
+0.1080590835772454738617,0.2580570150166749954224,0.9601870519109070301056,\
+0.4275712119415402412415,0.3774064141325652599335,0.8860375732183456420898,\
+0.1107313432730734348297,0.572000074200332164764,0.2775676711462438106537,\
+0.2221131753176450729370,0.7805933509953320026398,0.5034774849191308021545,\
+0.4225312541238963603973,0.0509742014110088348389,0.7888357848860323429108,\
+0.4943151315674185752869,0.6792991734109818935394,0.2138219568878412246704,\
+0.0629426804371178150177,0.0151202948763966560364,0.5832923236303031444550,\
+0.0359809771180152893066,0.9282481097616255283356,0.8684628410264849662781,\
+0.2752401321195065975189,0.9713082071393728256226,0.90322426753118634224,\
+0.8362140888348221778870,0.3033045823685824871063,0.9321490563452243804932,\
+0.0943789319135248661041,0.0593075519427657127380,0.1341886124573647975922,\
+0.2735903281718492507935,0.7845123005099594593048,0.868671556003391742706,\
+0.7169788884930312633514,0.9007600247859954833984,0.3080832012929022312164,\
+0.2860837308689951896667,0.9434729530476033687592}
+
+#define RRESULT {0.0091461935615653692372,0.0074403059517685150512,0.3011120408510194468299,\
+0.2998770814044370847107,0.1819248875927510500361,0.6444988336836313669309,\
+0.6791245188293772994115,0.8328839139359748289237,0.5765876696591275551995,\
+0.8504976129204943058326,0.8394277222457392495514,0.5667892427465585081237,\
+0.4244768273740840425212,0.8613255288489666261498,0.0697161665763657567574,\
+0.4438565921449716400460,0.0376207427201287192275,0.0452773943778729953680,\
+0.1905350234324321712087,0.3984765801447008870539,0.4314770699424559374791,\
+0.7678818181682768306828,0.6201489749119961647494,1.056635799167679801158,\
+0.7224469139675204765183,1.1570753191068809950792,0.7891360295709419769850,\
+0.5869418614770346431797,0.0388500272557359208059,0.3691306128445250300807,\
+0.7557159781600413239744,0.1282646090865436350192,0.254601106881209460209,\
+0.4365177363889400918850,0.8917468285467748945194,1.0969945987775304718781,\
+0.4896234023783549438313,0.2644825052430134770809,0.4440381533885026654751,\
+0.4483584089258232929787,0.3221387984110837821028,0.7011289310321348056121,\
+0.0978674265602834936306,0.1561241830600058055900,0.6415261435351872210120,\
+0.8301262834168886550756,0.4226589438886647065452,0.2631688682703156034748,\
+0.3718501469694869832061,0.1874416812787549069252,0.1276292125120765952317,\
+0.6223362931435947320580,0.3011173751873987280980,0.5675795050042053979666,\
+0.8129219748246857557561,0.4890104311779664980619,0.550584097940126637738,\
+0.6003329153401916196131,0.4472450285127820834852,0.5277749449162034700578,\
+0.0337492295725758256753,0.3812817338877603767777,0.8272241071562403957884,\
+0.6236783490132045137955,0.8396686488386544411355,0.5323480108875771055210,\
+1.2121602671977980136830,0.2578891950501832064369,0.2902963532926625123132,\
+1.0407218420407280401463,0.719658282922589376263,0.1422515549798589185038,\
+0.6295643770268913863575,0.6485925881357603728361,0.3247882629711342783452,\
+0.0497195040545942226751,0.3510527044460081680377,0.50563338590045081578,\
+0.3179706585678286345775,0.99285160840273078975,0.7609503370287584722576,\
+0.6176058717047394619470,0.1531988771495936818567,0.2266760787365090790146,\
+0.0415517947772082799074,1.218422457974889017152,0.2526690822330791563743,\
+0.6329425814457148025127,0.7204713317072120037921,0.2231989518352319179506,\
+0.5985707095895493878857,0.2172853881448477131322,0.0593293879714889560439,\
+0.7385713745542424879531,0.7823911147317434977566,0.0289551632441432602039,\
+0.0779646258693818400287,0.8182888473500083970080,0.5715052817983971022997,\
+0.5528641949610285655226,0.2141542425335012378440,0.4153673917132313930800,\
+0.4332354240667932732123,0.5700436227902923036481,0.6908832900189864067997,\
+0.0995605703740609776498,0.6869435543144543077076,0.5227653368830831315250,\
+0.2770997202417057603263,0.5689013982218961151816,0.6692632096949825415422,\
+0.4851064406738322953849,0.7345650510869129456992,0.8789819041715580816287,\
+0.0263110479671970418081,0.4230828882691921033476,0.3752940809060429927513,\
+0.6545085349432201438091,0.2474097208124308444610,0.3590569749582296354973,\
+1.0107395629243736134839,0.2444967346619240644578,0.6498559643022308041083,\
+0.0187681811419864209844,0.0853955435810109381167,0.23858632896482903640,\
+0.0338939736966144267161,0.8239189153398052134492,0.3225505736889286989566,\
+0.6168540121263207387514,0.428433060998039016987,0.5950583374560662885955,\
+0.2394573971728722883157,0.2741095497000874958715,0.0487731652979911251000,\
+0.7269475532699710695894,0.0444861838193508288275,0.4501104783981072499088,\
+0.6528448282940336744318,0.0028372513246705619722,0.4536708244402919421034,\
+0.5336004611058299262893,0.2198360890060693795256,0.5959746705988369086526,\
+0.6396262340663229073456,0.5139896603726894497299,1.0518513414805021888299,\
+0.1644962891003966809489,0.5624905673203877132238,0.6391528366469793054350,\
+0.2879084713580257748333,0.0063726492100631259435,0.2079683900269996554844,\
+0.1617268596829900817458,0.45252598419205131153,0.1042540297218644135269,\
+0.9167320764408587452365,0.7202498119943631094131,0.3747568855205881677151,\
+1.1832506588357394328170,0.8926873380378329558837,0.4837753498734558843530,\
+0.2545199640454580136684,0.1931610886369621860048,0.0735568361645391743942,\
+0.7995145050294805155744,0.8044454260553820512669,0.9085111724757110041040,\
+0.1272278092834613905104,0.5090362502018392909520,0.8578711409272452570463,\
+0.3118078521746414644156,0.6543371722769727449887,0.5706133911152972970626,\
+0.3988750643962680753063,0.0094531166452282121282,0.4291477558442853834642,\
+0.5104896641888095887296,0.0671088543520260150110,0.7800123094015957159186,\
+1.1912011959193866683648,0.12192992647229736192,0.3274120948460061963914,\
+0.1225950921700365431333,0.3281975873099651774822,0.4674494885223512974370,\
+0.3894697523335833855285,0.4641231634718703258358,0.4345931392944782367671,\
+0.6995072076723701792744,0.3508640282412981981075,0.1249574421756384084992,\
+0.1870180747450552183331,0.0422329366873970546425,0.5961240984598299430530,\
+0.5279606410558730367200,0.3544288908497560397493,0.2039132017920733119798,\
+0.6057722587792238044813,0.1797611770377918194441}
+
+#define IRESULT {0.4500666085684790207466,0.0302627309405466352055,0.1259014236203331582598,\
+0.4977434045460411571327,0.773705242465913545225,0.887900733341152936795,\
+0.7079916425568136828517,0.7688472856787659237554,0.6017352744773040162940,\
+0.6498883599394120746950,0.107039917160296094156,0.1690548918257823163280,\
+0.3546374548515999203246,0.3373847934787007063484,0.4579255569364570899182,\
+0.8732609696455944092719,0.4580771972571195393975,0.4106361461893539566148,\
+0.5311452992294272146268,0.8876026166669700456779,0.8147068623051754165942,\
+0.5194139247849689500214,0.8786785088163897583513,0.0072129604104987166471,\
+0.5609976062745508640361,0.4112823226813016597170,0.3933766150232178571144,\
+0.8693290272249873940,0.1274316261040582265451,0.0395449426043308974177,\
+0.2628191746325336808354,0.3088296914886584088045,0.7926272523547727155702,\
+0.5120084435293993374572,0.5746945549365780614437,0.4839450538685827751806,\
+0.6047355489888047719305,0.7052834690539023787537,0.6561539945033735277136,\
+0.8478769656358153827824,0.3825478020514606614100,0.5066754044490697772574,\
+0.6222644111952397860676,0.2391828028480158796487,0.5443776858218749570284,\
+0.4792822085648152929949,0.86724431342169228110,0.6822409980077328572889,\
+0.8261589834748411798060,0.3303572550644504612904,0.8274965298010771297399,\
+0.1848774585857928254296,0.4507700784722463716037,0.7795271583399024928340,\
+0.8398668346264467343687,0.7396983997066739480175,0.1380866564681807739934,\
+0.5849046253180708587749,0.0503500622675033676634,0.5016357319277500170784,\
+0.6654269099346773463921,0.0329916341046517930247,0.7548317451254575871644,\
+0.7182541963203104007363,0.7522847340656214631949,0.9046859380442064946237,\
+0.0716988879790057820340,0.132599207337852937,0.0912207697238807957429,\
+0.2735698269446988906139,0.2811794411108771152286,0.6327124304403525245633,\
+0.7796338249130402298093,0.4209075105417727225010,0.7673980540361009516914,\
+0.3642835980514441684974,0.9112659650125345400795,0.6691470644846674309392,\
+0.8542200565296905745427,0.5762098993480122555155,0.7786617427494030296842,\
+0.3459141320122436358275,0.0241761593182958818560,0.6246129374546308676841,\
+0.2422787652159511528893,0.1602629717157874056355,0.3776710192863622084225,\
+0.8030895628249021811484,0.2774953901907728504028,0.6203514328186836568335,\
+0.7460670209249947726349,0.1559320495131248929255,0.8026468549051214429468,\
+0.760424886296417135156,0.3839751822834133743179,0.1397861363985309635094,\
+0.3011015740622249303726,0.3095528263794048440261,0.6246974136518177456168,\
+0.6824390801574051756972,0.6364220425441351469686,0.2265745526065163772955,\
+0.7201722295639139126422,0.1575984581645545612449,0.8494571876510255137305,\
+0.3918195908099642577049,0.7946547307771568702250,0.6117848393634578441080,\
+0.5208720859508298994811,0.8690531065973791102763,0.5637323042761468450124,\
+0.8547026638602744919027,0.306960447908322775490,0.4654093394618514789585,\
+0.4651555318578067255153,0.7751475575968125308890,0.9112674172531984861934,\
+0.4560028346615129235531,0.234251732325255618283,0.7944832243829529350165,\
+0.3423334159329023407281,0.239457736168475460170,1.02777275826487124455,\
+0.3564220429250729016424,0.2650952420467553305450,0.7646166714313819001703,\
+0.6037691171359901298743,0.1389158036998756340363,0.3271927879913820724767,\
+0.6006321860598116124663,0.7197540296752282795723,0.0031113959438069660468,\
+0.5221204081389118067946,0.7059634191281195514378,0.2238770907129097598176,\
+0.8641197102092305071253,0.1888045378279312735970,0.7812121068214791241857,\
+0.8015589685608611736356,0.6345893564856053270518,0.7088628827258813824841,\
+0.2802718253544457249760,0.2060232397943899673720,0.7740411253804675428825,\
+0.716974289181374180302,0.5454318495795067445187,0.2544009667091767235014,\
+0.6958995710025659420239,0.3906147496642403682543,0.3317958100335353655019,\
+0.1750450440110335736943,0.1779427350870727009280,0.8767597428372501111582,\
+0.0378355850756998610129,0.9174242179663641971743,0.3647620293190586560073,\
+0.6587619708007782515224,0.3153773564551797248257,0.6579511103942273786416,\
+0.2821737200327205097317,0.4005650534773762538876,0.9399862930023007434599,\
+0.4285643691635598884204,0.3756601850966035938129,0.8002497169354958472809,\
+0.1581953331446839250418,0.7519083154621302167442,0.4373149903759625534150,\
+0.2220927412218937635480,0.804348871566688328,0.7089002298114742695034,\
+0.4305150724386235805419,0.0641995146174158398678,0.8363640441971674777122,\
+0.5135521078813733986124,0.6356504507416418370269,0.2330299466993880075361,\
+0.0720777388352223102874,0.0151538267615728122067,0.7485905695903387613299,\
+0.0969510446209165821507,0.8347965442360075760675,0.8215865796515979813108,\
+0.2738845295035164384423,0.8996918043828731059719,0.8896690120740690099765,\
+0.8117683352741612567982,0.3329971294517217184072,0.9008120497468148357711,\
+0.1230347833276769775601,0.0631133065200175230602,0.1348341818397757463366,\
+0.2749675342978448178144,0.7210794354646373749418,0.9161054973709473747689,\
+0.7559186765863976642521,0.8531345425055275599746,0.3096300406745840505529,\
+0.3413400734450014462062,0.8520286730709790701255}
+
+void dasinsTest(void) {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=dasins(in[i]);
+ assert( ( (fabs(out-res[i])) / (fabs(out)) ) <3e-16);
+ }
+}
+
+void zasinsTest(void) {
+ double inR[]= RSOURCE;
+ double inI[]= ISOURCE;
+ double resR[]= RRESULT;
+ double resI[]= IRESULT;
+ doubleComplex out,in;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in = DoubleComplex(inR[i],inI[i]);
+ out=zasins(in);
+ assert( ( (fabs(zreals(out)-resR[i])) / (fabs(zreals(out))) ) <3e-15);
+ assert( ( (fabs(zimags(out)-resI[i])) / (fabs(zimags(out))) ) <3e-15);
+ }
+}
+
+void dasinaTest(void) {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out[200];
+ int i=0;
+
+ dasina(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <3e-16);
+ }
+}
+
+void zasinaTest(void) {
+ double inR[]= RSOURCE;
+ double inI[]= ISOURCE;
+ double resR[]= RRESULT;
+ double resI[]= IRESULT;
+ doubleComplex out[200],*in;
+ int i=0;
+
+
+ in= DoubleComplexMatrix(inR,inI,200);
+ zasina(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert( ( (fabs(zreals(out[i])-resR[i])) / (fabs(zreals(out[i]))) ) <3e-15);
+ assert( ( (fabs(zimags(out[i])-resI[i])) / (fabs(zimags(out[i]))) ) <3e-15);
+ }
+}
+
+int testAsin(void) {
+ printf("\n>>>> Double ArcSine Tests\n");
+ dasinsTest();
+ zasinsTest();
+ dasinaTest();
+ zasinaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testAsin() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/testFloatAsin.c b/2.3-1/src/c/elementaryFunctions/asin/testFloatAsin.c
new file mode 100644
index 00000000..00a630ac
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/testFloatAsin.c
@@ -0,0 +1,497 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAsin.h"
+
+#define SOURCE {0.9356911443173885345459f,0.5202743173576891422272f,0.8356943717226386070251f,\
+0.1390841729007661342621f,0.1484344247728586196899f,0.5062630889005959033966f,\
+0.6569615425541996955872f,0.1527653667144477367401f,0.2077333852648735046387f,\
+0.1310311132110655307770f,0.2355898572131991386414f,0.9000837444327771663666f,\
+0.0360118653625249862671f,0.4438733388669788837433f,0.2795370602980256080627f,\
+0.3609029497019946575165f,0.0737524814903736114502f,0.8877843604423105716705f,\
+0.7357059037312865257263f,0.1533541432581841945648f,0.2168745566159486770630f,\
+0.7783402544446289539337f,0.6990017639473080635071f,0.6133037763647735118866f,\
+0.1271589249372482299805f,0.3196897902525961399078f,0.2413121340796351432800f,\
+0.0203057392500340938568f,0.8844696115702390670776f,0.7514050160534679889679f,\
+0.8791579911485314369202f,0.3137878845445811748505f,0.4495223872363567352295f,\
+0.7199412197805941104889f,0.8987670382484793663025f,0.1432229257188737392426f,\
+0.9059501979500055313110f,0.4684562650509178638458f,0.2573188217356801033020f,\
+0.5960337105207145214081f,0.9504154697060585021973f,0.9387393021024763584137f,\
+0.2791117234155535697937f,0.4469828694127500057220f,0.5995192881673574447632f,\
+0.3789988537319004535675f,0.8654018277302384376526f,0.2727968390099704265594f,\
+0.5822574533522129058838f,0.5512602762319147586823f,0.4366636639460921287537f,\
+0.2757742605172097682953f,0.3867734093219041824341f,0.1321225953288376331329f,\
+0.3260228233411908149719f,0.1601287531666457653046f,0.4301580488681793212891f,\
+0.4006247171200811862946f,0.8426104513928294181824f,0.9048160626552999019623f,\
+0.320046393200755119324f,0.8069710140116512775421f,0.7235896149650216102600f,\
+0.7765955845825374126434f,0.6767611466348171234131f,0.5158662856556475162506f,\
+0.1936035444959998130798f,0.4270762628875672817230f,0.4847531262785196304321f,\
+0.5182100948877632617950f,0.3503957511857151985168f,0.4174968632869422435760f,\
+0.442088566720485687256f,0.4049004786647856235504f,0.0953520191833376884460f,\
+0.0149906217120587825775f,0.2767332997173070907593f,0.396497034002095460892f,\
+0.3277142727747559547424f,0.6040842677466571331024f,0.4983838088810443878174f,\
+0.7224933789111673831940f,0.6212163185700774192810f,0.5571814230643212795258f,\
+0.5545951593667268753052f,0.9439489883370697498322f,0.1018914626911282539368f,\
+0.9077803748659789562225f,0.8599558025598526000977f,0.3132304050959646701813f,\
+0.7458020029589533805847f,0.6701762243174016475677f,0.6670592557638883590698f,\
+0.7646118258126080036163f,0.8154405960813164710999f,0.1493974099867045879364f,\
+0.2480226568877696990967f,0.6294850618578493595123f,0.6535534998401999473572f,\
+0.0851266062818467617035f,0.3553021941334009170532f,0.6699288752861320972443f,\
+0.5531356902793049812317f,0.9733559968881309032440f,0.4305554106831550598145f,\
+0.5243876897729933261871f,0.9223478538915514945984f,0.4095269232057034969330f,\
+0.5303003843873739242554f,0.1592096765525639057159f,0.4631052548065781593323f,\
+0.7969039077870547771454f,0.4371217824518680572510f,0.4197942153550684452057f,\
+0.5820884769782423973083f,0.2639330527745187282562f,0.9251737911254167556763f,\
+0.2750987303443253040314f,0.7529260413721203804016f,0.1343348133377730846405f,\
+0.6487299203872680664062f,0.8492549010552465915680f,0.0482988981530070304871f,\
+0.7936811461113393306732f,0.6225296836346387863159f,0.8340442483313381671906f,\
+0.5607167938724160194397f,0.2962070326320827007294f,0.7626721523702144622803f,\
+0.3759830952621996402740f,0.9307165136560797691345f,0.5556063777767121791840f,\
+0.4568063858896493911743f,0.0317669031210243701935f,0.7012319983914494514465f,\
+0.4635622831992805004120f,0.6323687359690666198730f,0.8858239823020994663239f,\
+0.7168863369151949882507f,0.7797616957686841487885f,0.2916170265525579452515f,\
+0.4237285782583057880402f,0.28695563320070505142f,0.1371444310061633586884f,\
+0.9822116084396839141846f,0.2552233324386179447174f,0.3307547485455870628357f,\
+0.0061365715228021144867f,0.1720932889729738235474f,0.2806011182256042957306f,\
+0.2241949187591671943665f,0.9616182404570281505585f,0.9974081367254257202148f,\
+0.3941962518729269504547f,0.5662632463499903678894f,0.0963757499121129512787f,\
+0.3522291611880064010620f,0.3187350784428417682648f,0.5841740677133202552795f,\
+0.9247881243936717510223f,0.7888248674571514129639f,0.6642959327436983585358f,\
+0.3959421953186392784119f,0.6204979992471635341644f,0.1972246859222650527954f,\
+0.8056284752674400806427f,0.8491280348971486091614f,0.9318168940953910350800f,\
+0.7328312769532203674316f,0.6715824031271040439606f,0.1545045776292681694031f,\
+0.6186148612760007381439f,0.9608297105878591537476f,0.0403955359943211078644f,\
+0.0333962673321366310120f,0.7544445092789828777313f,0.6861435212194919586182f,\
+0.4345912770368158817291f,0.5974397426471114158630f,0.7376494011841714382172f,\
+0.4376876372843980789185f,0.2092354488559067249298f,0.6795164542272686958313f,\
+0.3552068280987441539764f,0.0756681859493255615234f,0.9273025044240057468414f,\
+0.8346071569249033927917f,0.743054957594722509384f,0.4906791727989912033081f,\
+0.6159011130221188068390f,0.7293182769790291786194f,0.5866543571464717388153f,\
+0.8633460365235805511475f,0.9971091211773455142975f,0.1388301542028784751892f,\
+0.4055338925682008266449f,0.4532660786062479019165f,0.2871678886003792285919f,\
+0.2700171591714024543762f,0.2655710014514625072479f}
+
+#define RESULT {1.2102129173972693276795f,0.547172134283395505960f,0.9893959167427971435060f,\
+0.1395365387198562734383f,0.1489849714320161666592f,0.5308459929384929942842f,\
+0.7167814580056727224999f,0.1533658822581816516539f,0.2092572247647190852859f,\
+0.1314089889300391889027f,0.2378254645317898763324f,1.1199616760260284742401f,\
+0.0360196535997655206685f,0.4599165600749937077296f,0.2833119142414158297960f,\
+0.3692359156088362848180f,0.0738195075749003143395f,1.0925087004242901578266f,\
+0.8267083221396219760990f,0.1539616791242165161346f,0.2186116813912043488344f,\
+0.8920178989455170848188f,0.7740006423727355810982f,0.6602366372124121030041f,\
+0.1275041230444604323235f,0.3254020787470935927033f,0.2437177159295554063068f,\
+0.0203071349297229801489f,1.0853560691206285415689f,0.8501888295310906507041f,\
+1.0740923528156336441697f,0.3191797921431215878663f,0.4662305874507110536875f,\
+0.8037176217662085342397f,1.1169491151572188414320f,0.1437171522303946902266f,\
+1.13361865210398771175f,0.4875426458125770023955f,0.2602465647055824948808f,\
+0.6385524103330081358010f,1.2545691699775671779093f,1.2189537472935179085454f,\
+0.2828689457902803794376f,0.4633896660240007236986f,0.6429003543060739511716f,\
+0.3887142006801726501486f,1.0459517428704359076619f,0.2762989388590115780175f,\
+0.6215026189895035413358f,0.5838740042814533071081f,0.4518867349636846997285f,\
+0.2793951051102595561915f,0.3971301217078890832823f,0.132510043706192570667f,\
+0.3320934649289025153429f,0.1608210878711773539340f,0.4446678438400747945813f,\
+0.4121985697961437211667f,1.0021124190562762379386f,1.1309475449498487265032f,\
+0.3257784557613874198978f,0.9390052579549887923349f,0.8089888457708835911575f,\
+0.8892438326422247296676f,0.7433542835357417333242f,0.5420185672225497075516f,\
+0.1948338635337260038582f,0.4412568471414960447063f,0.5060808916267004464729f,\
+0.5447567844134539871703f,0.3579936097184594490095f,0.430688870641149468277f,\
+0.4579258061456900619213f,0.4168699854700866902490f,0.0954971037836137986998f,\
+0.0149911832144437959929f,0.2803929768115001053275f,0.4076979699824179737000f,\
+0.3338832266123987202455f,0.6486162776185823153341f,0.5217335620683097863193f,\
+0.8074019476106287784845f,0.6702938912826584827442f,0.5909876416606805182852f,\
+0.5878763702657983092337f,1.2343959660274554934745f,0.1020685954711661458383f,\
+1.1379615773910940479396f,1.0351830670880448614923f,0.3185927153117306676045f,\
+0.8417379366997205236700f,0.7344461964462585257252f,0.7302544939241956134524f,\
+0.8704388193816158247884f,0.9534899570984974870314f,0.1499588151786827583400f,\
+0.2506386006706501912156f,0.6808903181988129604818f,0.7122699052095804450602f,\
+0.0852297552133160912780f,0.3632373356223638216633f,0.7341129828114539845885f,\
+0.5861234773434839118167f,1.3394387326603169885431f,0.4451080564403126493822f,\
+0.5519958405399131295965f,1.1741139184516546922765f,0.4219354466987135787726f,\
+0.5589548324277814339567f,0.1598900667546140630382f,0.4814956074594635149211f,\
+0.9221526721268241688634f,0.4523960307711298312050f,0.4332185780481620507310f,\
+0.6212947925772885904294f,0.2670975836918499934924f,1.1814932336008394653248f,\
+0.2786923935221553016994f,0.8524970032637724237645f,0.1347421608080361932203f,\
+0.7059143267628599227592f,1.014572470500166190277f,0.0483176963724658639632f,\
+0.9168365263416731192336f,0.6719709888964939814571f,0.9863981265157644173769f,\
+0.5952512315907774187451f,0.3007190162077965633891f,0.8674345484889434132469f,\
+0.3854574865641427483531f,1.1963670583888645904125f,0.5890920941092092633085f,\
+0.4744017948433008613485f,0.0317722484037002914081f,0.7771241013419247778415f,\
+0.4820113338532510671719f,0.6846071548899330672100f,1.0882667543007658040f,\
+0.7993259845681112141236f,0.8942850957473000850229f,0.2959169071935129347040f,\
+0.4375577621669283212569f,0.2910472961271438063768f,0.1375780266978623433971f,\
+1.3818975127290542559422f,0.2580786782411462754183f,0.337103224922307598277f,\
+0.0061366100381220973006f,0.1729542689024595181202f,0.2844203312567258890020f,\
+0.2261168471284604464255f,1.292840105239649206581f,1.4987826659389660299837f,\
+0.4051931219540680362279f,0.6019650966008720516243f,0.0965255712145899474885f,\
+0.3599518411886321600512f,0.3243946620517429990649f,0.6238620609478121581404f,\
+1.1804783562721565814968f,0.9088946724537740884386f,0.7265514890656400437408f,\
+0.407093673069975237055f,0.6693775784027574671242f,0.1985261923397042549411f,\
+0.9367355633059043507060f,1.0143322323911900806337f,1.199387299048776833743f,\
+0.8224738107516712526390f,0.7363424248289601736772f,0.1551259899908567496674f,\
+0.6669785285495629656438f,1.289980681935538386895f,0.0404065303042144760570f,\
+0.0334024783187645626925f,0.8548073921139841546690f,0.7561744594372630245971f,\
+0.4495844069894625594230f,0.6403046132494145670222f,0.8295822852568314198507f,\
+0.4530252724246893181181f,0.2107930369382310653581f,0.747103346555288094777f,\
+0.3631353147252046054128f,0.0757405812005388645591f,1.1871407475057926816930f,\
+0.9874192358186812956689f,0.8376237455287295352591f,0.5128690395827339987278f,\
+0.6635292564994419439728f,0.8173250039556049229006f,0.6269213761078136215588f,\
+1.0418634321911146578543f,1.4947401270369859993536f,0.1392800314888206769659f,\
+0.4175628314057308609897f,0.4704260294397792363519f,0.29126887742414786509f,\
+0.2734108525510542397896f,0.2687961431094310627010f}
+
+
+
+#define RSOURCE {0.0100881215184926986694f,0.0074436445720493793488f,0.2989360922947525978088f,\
+0.3327573235146701335907f,0.237830940634012222290f,0.8535961345769464969635f,\
+0.7922197943553328514099f,0.9695409736596047878265f,0.6468791384249925613403f,\
+0.9159972262568771839142f,0.7485287981107831001282f,0.5446169781498610973358f,\
+0.4380150139331817626953f,0.8022991069592535495758f,0.0770919052883982658386f,\
+0.6038356139324605464935f,0.0416274946182966232300f,0.0491319303400814533234f,\
+0.2167323390021920204163f,0.5511633078567683696747f,0.5648556910455226898193f,\
+0.7904387773014605045319f,0.8203159859403967857361f,0.8707285351119935512543f,\
+0.7680293265730142593384f,0.9941699919290840625763f,0.7653715135529637336731f,\
+0.7766020926646888256073f,0.0391560420393943786621f,0.3610868924297392368317f,\
+0.7096323622390627861023f,0.1340617476962506771088f,0.3352055754512548446655f,\
+0.4794248570688068866730f,0.9102506125345826148987f,0.9960912610404193401337f,\
+0.5589408166706562042236f,0.3291657851077616214752f,0.5254327272996306419373f,\
+0.5988637856207787990570f,0.3400457371026277542114f,0.7296699327416718006134f,\
+0.1172471689060330390930f,0.1599596398882567882538f,0.6893001943826675415039f,\
+0.8244171240366995334625f,0.5743538914248347282410f,0.3230684562586247920990f,\
+0.4945516120642423629761f,0.1966073368676006793976f,0.1734057078137993812561f,\
+0.5929257045499980449677f,0.3272335343062877655029f,0.7093706638552248477936f,\
+0.9978715321049094200134f,0.6042335904203355312347f,0.5281810555607080459595f,\
+0.6643366483040153980255f,0.4330314965918660163879f,0.5683163288049399852753f,\
+0.0414931252598762512207f,0.3723129951395094394684f,0.9558939440175890922546f,\
+0.7412597923539578914642f,0.9651917275041341781616f,0.7298236568458378314972f,\
+0.9387842947617173194885f,0.2572855348698794841766f,0.2874279357492923736572f,\
+0.8952562944032251834869f,0.6853557890281081199646f,0.1711091897450387477875f,\
+0.7769848424941301345825f,0.658369113225489854813f,0.4177721040323376655579f,\
+0.0530332433991134166718f,0.4968273639678955078125f,0.59690707409754395485f,\
+0.4338118461892008781433f,0.9805241837166249752045f,0.9094489198178052902222f,\
+0.6140774791128933429718f,0.152644918300211429596f,0.2700240234844386577606f,\
+0.0427649877965450286865f,0.9506349326111376285553f,0.2680307617411017417908f,\
+0.7927461988292634487152f,0.6853035334497690200806f,0.2653256771154701709747f,\
+0.7276884736493229866028f,0.2182058426551520824432f,0.0794423148036003112793f,\
+0.8774413042701780796051f,0.7575887991115450859070f,0.0292344330810010433197f,\
+0.0814430620521306991577f,0.7652318407781422138214f,0.6499179983511567115784f,\
+0.652228816878050565720f,0.2570325322449207305908f,0.4139282093383371829987f,\
+0.5334635889157652854919f,0.5463846079073846340179f,0.8812804389744997024536f,\
+0.1071240645833313465118f,0.8451719628646969795227f,0.5956639605574309825897f,\
+0.3115242570638656616211f,0.7552670040167868137360f,0.7216278789564967155457f,\
+0.64724771818146109581f,0.7020909022539854049683f,0.8550091539509594440460f,\
+0.0292058298364281654358f,0.5402219365350902080536f,0.5295652858912944793701f,\
+0.6731671304441988468170f,0.2516432842239737510681f,0.4682487822137773036957f,\
+0.8973557446151971817017f,0.2490413752384483814240f,0.953785804100334644318f,\
+0.0199718060903251171112f,0.0883063450455665588379f,0.3088448666967451572418f,\
+0.0402540368959307670593f,0.7409055917523801326752f,0.3341060634702444076538f,\
+0.6859912057407200336456f,0.5277825826779007911682f,0.5605597789399325847626f,\
+0.2702448405325412750244f,0.3409920767880976200104f,0.0499807363376021385193f,\
+0.9285474619828164577484f,0.0452665109187364578247f,0.5747140836901962757111f,\
+0.8132651047781109809875f,0.0034279632382094860077f,0.5530686080455780029297f,\
+0.5287449606694281101227f,0.2227140991017222404480f,0.7380339815281331539154f,\
+0.7569990437477827072144f,0.5666191582567989826202f,0.8965943017974495887756f,\
+0.205033115576952695847f,0.5744996629655361175537f,0.6296528042294085025787f,\
+0.28830870892852544785f,0.0064737624488770961761f,0.2910466734319925308228f,\
+0.161138039547950029373f,0.6345168473199009895325f,0.1110653909854590892792f,\
+0.9721379503607749938965f,0.6926467292942106723785f,0.4481767667457461357117f,\
+0.9629431902430951595306f,0.8420772161334753036499f,0.6861935486085712909698f,\
+0.2752589071169495582581f,0.2056670929305255413055f,0.0983050949871540069580f,\
+0.7260084436275064945221f,0.9338818406686186790466f,0.8652051738463342189789f,\
+0.1300270427018404006958f,0.6536684674210846424103f,0.9546198891475796699524f,\
+0.3356514233164489269257f,0.6098881512880325317383f,0.7403389909304678440094f,\
+0.4407326159998774528503f,0.0114278956316411495209f,0.4274448286741971969604f,\
+0.4898742889054119586945f,0.0670661935582756996155f,0.9097212324850261211395f,\
+0.9331833533942699432373f,0.1665275008417665958405f,0.4363766452297568321228f,\
+0.1269035614095628261566f,0.4618353042751550674438f,0.6410199669189751148224f,\
+0.5118249626830220222473f,0.4726877692155539989471f,0.6037398651242256164551f,\
+0.6487199389375746250153f,0.3443940980359911918640f,0.1257671504281461238861f,\
+0.1930030044168233871460f,0.0536806662566959857941f,0.813977831043303012848f,\
+0.6546894307248294353485f,0.4812035299837589263916f,0.2122878567315638065338f,\
+0.6028915112838149070740f,0.2477151653729379177094f}
+
+#define ISOURCE {0.4653960186988115310669f,0.0302665126509964466095f,0.1205546753481030464172f,\
+0.4954105126671493053436f,0.8391606211662292480469f,0.8067971416749060153961f,\
+0.5980955390259623527527f,0.5697243823669850826263f,0.535449741408228874207f,\
+0.4594913427717983722687f,0.0716273644939064979553f,0.1432999591343104839325f,\
+0.3299815915524959564209f,0.2239767671562731266022f,0.4729467025026679039001f,\
+0.8927706009708344936371f,0.4739306215196847915649f,0.4218414542265236377716f,\
+0.5464035095646977424622f,0.9297901126556098461151f,0.8246648237109184265137f,\
+0.3906875425018370151520f,0.8106931401416659355164f,0.0035473941825330257416f,\
+0.4432799126952886581421f,0.1700443555600941181183f,0.2843202138319611549377f,\
+0.8185154641978442668915f,0.1276803798973560333252f,0.0368908629752695560455f,\
+0.1934843575581908226013f,0.3111848584376275539398f,0.8499574232846498489380f,\
+0.4845375162549316883087f,0.3811378227546811103821f,0.2295314031653106212616f,\
+0.5668137520551681518555f,0.7386174597777426242828f,0.6359649775549769401550f,\
+0.8589683636091649532318f,0.3717852663248777389526f,0.4039371167309582233429f,\
+0.6600336739793419837952f,0.2385329673998057842255f,0.4580096118152141571045f,\
+0.3359361500479280948639f,0.8938684901222586631775f,0.7110573030076920986176f,\
+0.8602916095405817031860f,0.3305067983455955982208f,0.9176958473399281501770f,\
+0.15107359318062663078f,0.4452155604958534240723f,0.7259225868619978427887f,\
+0.6476110024377703666687f,0.7142038433812558650970f,0.1180544253438711166382f,\
+0.5106264133937656879425f,0.0454169148579239845276f,0.4517838652245700359344f,\
+0.7152258791029453277588f,0.0306280092336237430573f,0.5608849888667464256287f,\
+0.6344716749154031276703f,0.5510452408343553543091f,0.8902607751078903675079f,\
+0.0251876907423138618469f,0.1285902666859328746796f,0.0875252783298492431641f,\
+0.1400479921139776706696f,0.2142530409619212150574f,0.6689547612331807613373f,\
+0.6959728877991437911987f,0.3454284076578915119171f,0.8007909813895821571350f,\
+0.3719339291565120220184f,0.9791326485574245452881f,0.6300911963917315006256f,\
+0.9137416174635291099548f,0.3324960893951356410980f,0.6226272527128458023071f,\
+0.2876702961511909961700f,0.0238953353837132453918f,0.6489893826656043529510f,\
+0.2444448098540306091309f,0.0555481188930571079254f,0.374434794299304485321f,\
+0.7194064198993146419525f,0.2112230267375707626343f,0.6445186366327106952667f,\
+0.6751487934961915016174f,0.1528833056800067424774f,0.8900802619755268096924f,\
+0.6180598423816263675690f,0.27906801458448171616f,0.1401830366812646389008f,\
+0.3047434557229280471802f,0.2149655860848724842072f,0.5602726386860013008118f,\
+0.6269132751040160655975f,0.6647229343652725219727f,0.2090867855586111545563f,\
+0.7116218386217951774597f,0.133228497114032506943f,0.7362840902060270309448f,\
+0.3999320124275982379913f,0.6811551460996270179749f,0.5637665162794291973114f,\
+0.523965936154127120972f,0.8278774530626833438873f,0.4659156939014792442322f,\
+0.8515693820081651210785f,0.23139653541147708893f,0.3077362445183098316193f,\
+0.4819453330710530281067f,0.7797386529855430126190f,0.9701553061604499816895f,\
+0.3744371854700148105621f,0.2292016251012682914734f,0.8245750456117093563080f,\
+0.1854322012513875961304f,0.2345628221519291400909f,0.9701467091217637062073f,\
+0.3639524574391543865204f,0.2672337628901004791260f,0.8174969092942774295807f,\
+0.6407580440863966941833f,0.0946763656102120876312f,0.3158860523253679275513f,\
+0.5199312460608780384064f,0.7127110259607434272766f,0.0025766002945601940155f,\
+0.5305844545364379882812f,0.7374818869866430759430f,0.2254834799095988273621f,\
+0.7290844931267201900482f,0.1897403579205274581909f,0.7771647279150784015656f,\
+0.7071320274844765663147f,0.67804440064355731010f,0.6918747089803218841553f,\
+0.2444804669357836246490f,0.2024903288111090660095f,0.7065096027217805385590f,\
+0.6258084420114755630493f,0.4988589403219521045685f,0.1275391997769474983215f,\
+0.7432725760154426097870f,0.3388997837901115417480f,0.2712128334678709506989f,\
+0.1686986042186617851257f,0.1788796423934400081635f,0.9720784332603216171265f,\
+0.0373507668264210224152f,0.9457915211096405982971f,0.3708799923770129680634f,\
+0.4304266162216663360596f,0.2409997568465769290924f,0.6574296867474913597107f,\
+0.1080590835772454738617f,0.2580570150166749954224f,0.9601870519109070301056f,\
+0.4275712119415402412415f,0.3774064141325652599335f,0.8860375732183456420898f,\
+0.1107313432730734348297f,0.572000074200332164764f,0.2775676711462438106537f,\
+0.2221131753176450729370f,0.7805933509953320026398f,0.5034774849191308021545f,\
+0.4225312541238963603973f,0.0509742014110088348389f,0.7888357848860323429108f,\
+0.4943151315674185752869f,0.6792991734109818935394f,0.2138219568878412246704f,\
+0.0629426804371178150177f,0.0151202948763966560364f,0.5832923236303031444550f,\
+0.0359809771180152893066f,0.9282481097616255283356f,0.8684628410264849662781f,\
+0.2752401321195065975189f,0.9713082071393728256226f,0.90322426753118634224f,\
+0.8362140888348221778870f,0.3033045823685824871063f,0.9321490563452243804932f,\
+0.0943789319135248661041f,0.0593075519427657127380f,0.1341886124573647975922f,\
+0.2735903281718492507935f,0.7845123005099594593048f,0.868671556003391742706f,\
+0.7169788884930312633514f,0.9007600247859954833984f,0.3080832012929022312164f,\
+0.2860837308689951896667f,0.9434729530476033687592f}
+
+#define RRESULT {0.0091461935615653692372f,0.0074403059517685150512f,0.3011120408510194468299f,\
+0.2998770814044370847107f,0.1819248875927510500361f,0.6444988336836313669309f,\
+0.6791245188293772994115f,0.8328839139359748289237f,0.5765876696591275551995f,\
+0.8504976129204943058326f,0.8394277222457392495514f,0.5667892427465585081237f,\
+0.4244768273740840425212f,0.8613255288489666261498f,0.0697161665763657567574f,\
+0.4438565921449716400460f,0.0376207427201287192275f,0.0452773943778729953680f,\
+0.1905350234324321712087f,0.3984765801447008870539f,0.4314770699424559374791f,\
+0.7678818181682768306828f,0.6201489749119961647494f,1.056635799167679801158f,\
+0.7224469139675204765183f,1.1570753191068809950792f,0.7891360295709419769850f,\
+0.5869418614770346431797f,0.0388500272557359208059f,0.3691306128445250300807f,\
+0.7557159781600413239744f,0.1282646090865436350192f,0.254601106881209460209f,\
+0.4365177363889400918850f,0.8917468285467748945194f,1.0969945987775304718781f,\
+0.4896234023783549438313f,0.2644825052430134770809f,0.4440381533885026654751f,\
+0.4483584089258232929787f,0.3221387984110837821028f,0.7011289310321348056121f,\
+0.0978674265602834936306f,0.1561241830600058055900f,0.6415261435351872210120f,\
+0.8301262834168886550756f,0.4226589438886647065452f,0.2631688682703156034748f,\
+0.3718501469694869832061f,0.1874416812787549069252f,0.1276292125120765952317f,\
+0.6223362931435947320580f,0.3011173751873987280980f,0.5675795050042053979666f,\
+0.8129219748246857557561f,0.4890104311779664980619f,0.550584097940126637738f,\
+0.6003329153401916196131f,0.4472450285127820834852f,0.5277749449162034700578f,\
+0.0337492295725758256753f,0.3812817338877603767777f,0.8272241071562403957884f,\
+0.6236783490132045137955f,0.8396686488386544411355f,0.5323480108875771055210f,\
+1.2121602671977980136830f,0.2578891950501832064369f,0.2902963532926625123132f,\
+1.0407218420407280401463f,0.719658282922589376263f,0.1422515549798589185038f,\
+0.6295643770268913863575f,0.6485925881357603728361f,0.3247882629711342783452f,\
+0.0497195040545942226751f,0.3510527044460081680377f,0.50563338590045081578f,\
+0.3179706585678286345775f,0.99285160840273078975f,0.7609503370287584722576f,\
+0.6176058717047394619470f,0.1531988771495936818567f,0.2266760787365090790146f,\
+0.0415517947772082799074f,1.218422457974889017152f,0.2526690822330791563743f,\
+0.6329425814457148025127f,0.7204713317072120037921f,0.2231989518352319179506f,\
+0.5985707095895493878857f,0.2172853881448477131322f,0.0593293879714889560439f,\
+0.7385713745542424879531f,0.7823911147317434977566f,0.0289551632441432602039f,\
+0.0779646258693818400287f,0.8182888473500083970080f,0.5715052817983971022997f,\
+0.5528641949610285655226f,0.2141542425335012378440f,0.4153673917132313930800f,\
+0.4332354240667932732123f,0.5700436227902923036481f,0.6908832900189864067997f,\
+0.0995605703740609776498f,0.6869435543144543077076f,0.5227653368830831315250f,\
+0.2770997202417057603263f,0.5689013982218961151816f,0.6692632096949825415422f,\
+0.4851064406738322953849f,0.7345650510869129456992f,0.8789819041715580816287f,\
+0.0263110479671970418081f,0.4230828882691921033476f,0.3752940809060429927513f,\
+0.6545085349432201438091f,0.2474097208124308444610f,0.3590569749582296354973f,\
+1.0107395629243736134839f,0.2444967346619240644578f,0.6498559643022308041083f,\
+0.0187681811419864209844f,0.0853955435810109381167f,0.23858632896482903640f,\
+0.0338939736966144267161f,0.8239189153398052134492f,0.3225505736889286989566f,\
+0.6168540121263207387514f,0.428433060998039016987f,0.5950583374560662885955f,\
+0.2394573971728722883157f,0.2741095497000874958715f,0.0487731652979911251000f,\
+0.7269475532699710695894f,0.0444861838193508288275f,0.4501104783981072499088f,\
+0.6528448282940336744318f,0.0028372513246705619722f,0.4536708244402919421034f,\
+0.5336004611058299262893f,0.2198360890060693795256f,0.5959746705988369086526f,\
+0.6396262340663229073456f,0.5139896603726894497299f,1.0518513414805021888299f,\
+0.1644962891003966809489f,0.5624905673203877132238f,0.6391528366469793054350f,\
+0.2879084713580257748333f,0.0063726492100631259435f,0.2079683900269996554844f,\
+0.1617268596829900817458f,0.45252598419205131153f,0.1042540297218644135269f,\
+0.9167320764408587452365f,0.7202498119943631094131f,0.3747568855205881677151f,\
+1.1832506588357394328170f,0.8926873380378329558837f,0.4837753498734558843530f,\
+0.2545199640454580136684f,0.1931610886369621860048f,0.0735568361645391743942f,\
+0.7995145050294805155744f,0.8044454260553820512669f,0.9085111724757110041040f,\
+0.1272278092834613905104f,0.5090362502018392909520f,0.8578711409272452570463f,\
+0.3118078521746414644156f,0.6543371722769727449887f,0.5706133911152972970626f,\
+0.3988750643962680753063f,0.0094531166452282121282f,0.4291477558442853834642f,\
+0.5104896641888095887296f,0.0671088543520260150110f,0.7800123094015957159186f,\
+1.1912011959193866683648f,0.12192992647229736192f,0.3274120948460061963914f,\
+0.1225950921700365431333f,0.3281975873099651774822f,0.4674494885223512974370f,\
+0.3894697523335833855285f,0.4641231634718703258358f,0.4345931392944782367671f,\
+0.6995072076723701792744f,0.3508640282412981981075f,0.1249574421756384084992f,\
+0.1870180747450552183331f,0.0422329366873970546425f,0.5961240984598299430530f,\
+0.5279606410558730367200f,0.3544288908497560397493f,0.2039132017920733119798f,\
+0.6057722587792238044813f,0.1797611770377918194441f}
+
+#define IRESULT {0.4500666085684790207466f,0.0302627309405466352055f,0.1259014236203331582598f,\
+0.4977434045460411571327f,0.773705242465913545225f,0.887900733341152936795f,\
+0.7079916425568136828517f,0.7688472856787659237554f,0.6017352744773040162940f,\
+0.6498883599394120746950f,0.107039917160296094156f,0.1690548918257823163280f,\
+0.3546374548515999203246f,0.3373847934787007063484f,0.4579255569364570899182f,\
+0.8732609696455944092719f,0.4580771972571195393975f,0.4106361461893539566148f,\
+0.5311452992294272146268f,0.8876026166669700456779f,0.8147068623051754165942f,\
+0.5194139247849689500214f,0.8786785088163897583513f,0.0072129604104987166471f,\
+0.5609976062745508640361f,0.4112823226813016597170f,0.3933766150232178571144f,\
+0.8693290272249873940f,0.1274316261040582265451f,0.0395449426043308974177f,\
+0.2628191746325336808354f,0.3088296914886584088045f,0.7926272523547727155702f,\
+0.5120084435293993374572f,0.5746945549365780614437f,0.4839450538685827751806f,\
+0.6047355489888047719305f,0.7052834690539023787537f,0.6561539945033735277136f,\
+0.8478769656358153827824f,0.3825478020514606614100f,0.5066754044490697772574f,\
+0.6222644111952397860676f,0.2391828028480158796487f,0.5443776858218749570284f,\
+0.4792822085648152929949f,0.86724431342169228110f,0.6822409980077328572889f,\
+0.8261589834748411798060f,0.3303572550644504612904f,0.8274965298010771297399f,\
+0.1848774585857928254296f,0.4507700784722463716037f,0.7795271583399024928340f,\
+0.8398668346264467343687f,0.7396983997066739480175f,0.1380866564681807739934f,\
+0.5849046253180708587749f,0.0503500622675033676634f,0.5016357319277500170784f,\
+0.6654269099346773463921f,0.0329916341046517930247f,0.7548317451254575871644f,\
+0.7182541963203104007363f,0.7522847340656214631949f,0.9046859380442064946237f,\
+0.0716988879790057820340f,0.132599207337852937f,0.0912207697238807957429f,\
+0.2735698269446988906139f,0.2811794411108771152286f,0.6327124304403525245633f,\
+0.7796338249130402298093f,0.4209075105417727225010f,0.7673980540361009516914f,\
+0.3642835980514441684974f,0.9112659650125345400795f,0.6691470644846674309392f,\
+0.8542200565296905745427f,0.5762098993480122555155f,0.7786617427494030296842f,\
+0.3459141320122436358275f,0.0241761593182958818560f,0.6246129374546308676841f,\
+0.2422787652159511528893f,0.1602629717157874056355f,0.3776710192863622084225f,\
+0.8030895628249021811484f,0.2774953901907728504028f,0.6203514328186836568335f,\
+0.7460670209249947726349f,0.1559320495131248929255f,0.8026468549051214429468f,\
+0.760424886296417135156f,0.3839751822834133743179f,0.1397861363985309635094f,\
+0.3011015740622249303726f,0.3095528263794048440261f,0.6246974136518177456168f,\
+0.6824390801574051756972f,0.6364220425441351469686f,0.2265745526065163772955f,\
+0.7201722295639139126422f,0.1575984581645545612449f,0.8494571876510255137305f,\
+0.3918195908099642577049f,0.7946547307771568702250f,0.6117848393634578441080f,\
+0.5208720859508298994811f,0.8690531065973791102763f,0.5637323042761468450124f,\
+0.8547026638602744919027f,0.306960447908322775490f,0.4654093394618514789585f,\
+0.4651555318578067255153f,0.7751475575968125308890f,0.9112674172531984861934f,\
+0.4560028346615129235531f,0.234251732325255618283f,0.7944832243829529350165f,\
+0.3423334159329023407281f,0.239457736168475460170f,1.02777275826487124455f,\
+0.3564220429250729016424f,0.2650952420467553305450f,0.7646166714313819001703f,\
+0.6037691171359901298743f,0.1389158036998756340363f,0.3271927879913820724767f,\
+0.6006321860598116124663f,0.7197540296752282795723f,0.0031113959438069660468f,\
+0.5221204081389118067946f,0.7059634191281195514378f,0.2238770907129097598176f,\
+0.8641197102092305071253f,0.1888045378279312735970f,0.7812121068214791241857f,\
+0.8015589685608611736356f,0.6345893564856053270518f,0.7088628827258813824841f,\
+0.2802718253544457249760f,0.2060232397943899673720f,0.7740411253804675428825f,\
+0.716974289181374180302f,0.5454318495795067445187f,0.2544009667091767235014f,\
+0.6958995710025659420239f,0.3906147496642403682543f,0.3317958100335353655019f,\
+0.1750450440110335736943f,0.1779427350870727009280f,0.8767597428372501111582f,\
+0.0378355850756998610129f,0.9174242179663641971743f,0.3647620293190586560073f,\
+0.6587619708007782515224f,0.3153773564551797248257f,0.6579511103942273786416f,\
+0.2821737200327205097317f,0.4005650534773762538876f,0.9399862930023007434599f,\
+0.4285643691635598884204f,0.3756601850966035938129f,0.8002497169354958472809f,\
+0.1581953331446839250418f,0.7519083154621302167442f,0.4373149903759625534150f,\
+0.2220927412218937635480f,0.804348871566688328f,0.7089002298114742695034f,\
+0.4305150724386235805419f,0.0641995146174158398678f,0.8363640441971674777122f,\
+0.5135521078813733986124f,0.6356504507416418370269f,0.2330299466993880075361f,\
+0.0720777388352223102874f,0.0151538267615728122067f,0.7485905695903387613299f,\
+0.0969510446209165821507f,0.8347965442360075760675f,0.8215865796515979813108f,\
+0.2738845295035164384423f,0.8996918043828731059719f,0.8896690120740690099765f,\
+0.8117683352741612567982f,0.3329971294517217184072f,0.9008120497468148357711f,\
+0.1230347833276769775601f,0.0631133065200175230602f,0.1348341818397757463366f,\
+0.2749675342978448178144f,0.7210794354646373749418f,0.9161054973709473747689f,\
+0.7559186765863976642521f,0.8531345425055275599746f,0.3096300406745840505529f,\
+0.3413400734450014462062f,0.8520286730709790701255f}
+
+void sasinsTest(void) {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=sasins(in[i]);
+ assert( ( (fabs(out-res[i])) / (fabs(out)) ) <1e-6);
+ }
+}
+
+void casinsTest(void) {
+ float inR[]= RSOURCE;
+ float inI[]= ISOURCE;
+ float resR[]= RRESULT;
+ float resI[]= IRESULT;
+ floatComplex out,in;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in = FloatComplex(inR[i],inI[i]);
+ out=casins(in);
+ assert( ( (fabs(creals(out)-resR[i])) / (fabs(creals(out))) ) <1e-6);
+ assert( ( (fabs(cimags(out)-resI[i])) / (fabs(cimags(out))) ) <1e-6);
+ }
+}
+
+void sasinaTest(void) {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out[200];
+ int i=0;
+
+ sasina(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <1e-6);
+ }
+}
+
+void casinaTest(void) {
+ float inR[]= RSOURCE;
+ float inI[]= ISOURCE;
+ float resR[]= RRESULT;
+ float resI[]= IRESULT;
+ floatComplex out[200],in[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i] = FloatComplex(inR[i],inI[i]);
+ }
+
+ casina(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(creals(out[i])-resR[i])) / (fabs(creals(out[i]))) ) <1e-6);
+ assert( ( (fabs(cimags(out[i])-resI[i])) / (fabs(cimags(out[i]))) ) <1e-6);
+ }
+}
+
+
+int testAsin(void) {
+ printf("\n>>>> Float ArcSine Tests\n");
+ sasinsTest();
+ casinsTest();
+ sasinaTest();
+ casinaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testAsin() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/zasina.c b/2.3-1/src/c/elementaryFunctions/asin/zasina.c
new file mode 100644
index 00000000..ca46ff3f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/zasina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asin.h"
+
+void zasina(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zasins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asin/zasins.c b/2.3-1/src/c/elementaryFunctions/asin/zasins.c
new file mode 100644
index 00000000..5bd586a8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asin/zasins.c
@@ -0,0 +1,146 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ * REFERENCE
+ * This is a Fortran-77 translation of an algorithm by
+ * T.E. Hull, T. F. Fairgrieve and P.T.P. Tang which
+ * appears in their article :
+ * "Implementing the Complex Arcsine and Arccosine
+ * Functions Using Exception Handling", ACM, TOMS,
+ * Vol 23, No. 3, Sept 1997, p. 299-335
+ * Thanks to Tom Fairgrieve
+ */
+
+#include "lapack.h"
+#include "asin.h"
+#include "atan.h"
+#include "sqrt.h"
+#include "abs.h"
+#include "log.h"
+#include "log1p.h"
+#include "min.h"
+#include "max.h"
+
+doubleComplex zasins(doubleComplex z) {
+ static double sdblPi_2 = 1.5707963267948966192313216;
+ static double sdblLn2 = 0.6931471805599453094172321;
+ static double sdblAcross = 1.5;
+ static double sdblBcross = 0.6417;
+
+ double dblLsup = dsqrts(getOverflowThreshold())/8.0;
+ double dblLinf = 4 * dsqrts(getUnderflowThreshold());
+ double dblEpsm = dsqrts(getRelativeMachinePrecision());
+
+ double _dblReal = zreals(z);
+ double _dblImg = zimags(z);
+
+ double dblAbsReal = dabss(_dblReal);
+ double dblAbsImg = dabss(_dblImg);
+ int iSignReal = _dblReal < 0 ? -1 : 1;
+ int iSignImg = _dblImg < 0 ? -1 : 1;
+
+ double dblR = 0, dblS = 0, dblA = 0, dblB = 0;
+
+ double dblTemp = 0;
+
+ double _pdblReal = 0;
+ double _pdblImg = 0;
+
+ if( min(dblAbsReal, dblAbsImg) > dblLinf && max(dblAbsReal, dblAbsImg) <= dblLsup)
+ {
+ /* we are in the safe region */
+ dblR = dsqrts( (dblAbsReal + 1) * (dblAbsReal + 1) + dblAbsImg * dblAbsImg);
+ dblS = dsqrts( (dblAbsReal - 1) * (dblAbsReal - 1) + dblAbsImg * dblAbsImg);
+ dblA = 0.5 * ( dblR + dblS );
+ dblB = dblAbsReal / dblA;
+
+
+ /* compute the real part */
+ if(dblB <= sdblBcross)
+ _pdblReal = dasins(dblB);
+ else if( dblAbsReal <= 1)
+ _pdblReal = datans(dblAbsReal / dsqrts( 0.5 * (dblA + dblAbsReal) * ( (dblAbsImg * dblAbsImg) / (dblR + (dblAbsReal + 1)) + (dblS + (1 - dblAbsReal)))));
+ else
+ _pdblReal = datans(dblAbsReal / (dblAbsImg * dsqrts(0.5 * ((dblA + dblAbsReal) / (dblR + (dblAbsReal + 1)) + (dblA + dblAbsReal) / (dblS + (dblAbsReal-1))))));
+
+ /* compute the imaginary part */
+ if(dblA <= sdblAcross)
+ {
+ double dblImg1 = 0;
+
+ if(dblAbsReal < 1)
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(y**2)/(S+(1.d0-x))) */
+ dblImg1 = 0.5 * (dblAbsImg * dblAbsImg / (dblR + (dblAbsReal + 1)) + dblAbsImg * dblAbsImg / (dblS + (1 - dblAbsReal)));
+ else
+ /* Am1 = 0.5d0*((y**2)/(R+(x+1.d0))+(S+(x-1.d0))) */
+ dblImg1 = 0.5 * (dblAbsImg * dblAbsImg / (dblR + (dblAbsReal + 1)) + (dblS + (dblAbsReal - 1)));
+ /* ai = logp1(Am1 + sqrt(Am1*(A+1.d0))) */
+ dblTemp = dblImg1 + dsqrts(dblImg1 * (dblA + 1));
+ _pdblImg = dlog1ps(dblTemp);
+ }
+ else
+ /* ai = log(A + sqrt(A**2 - 1.d0)) */
+ _pdblImg = dlogs(dblA + dsqrts(dblA * dblA - 1));
+ }
+ else
+ {
+ /* evaluation in the special regions ... */
+ if(dblAbsImg <= dblEpsm * dabss(dblAbsReal - 1))
+ {
+ if(dblAbsReal < 1)
+ {
+ _pdblReal = dasins(dblAbsReal);
+ _pdblImg = dblAbsImg / dsqrts((1 + dblAbsReal) * (1 - dblAbsReal));
+ }
+ else
+ {
+ _pdblReal = sdblPi_2;
+ if(dblAbsReal <= dblLsup)
+ {
+ dblTemp = (dblAbsReal - 1) + dsqrts((dblAbsReal - 1) * (dblAbsReal + 1));
+ _pdblImg = dlog1ps(dblTemp);
+ }
+ else
+ _pdblImg = sdblLn2 + dlogs(dblAbsReal);
+ }
+ }
+ else if(dblAbsImg < dblLinf)
+ {
+ _pdblReal = sdblPi_2 - dsqrts(dblAbsImg);
+ _pdblImg = dsqrts(dblAbsImg);
+ }
+ else if((dblEpsm * dblAbsImg - 1 >= dblAbsReal))
+ {
+ _pdblReal = dblAbsReal * dblAbsImg;
+ _pdblImg = sdblLn2 + dlogs(dblAbsReal);
+ }
+ else if(dblAbsReal > 1)
+ {
+ _pdblReal = datans(dblAbsReal / dblAbsImg);
+ dblTemp = (dblAbsReal / dblAbsImg) * (dblAbsReal / dblAbsImg);
+ _pdblImg = sdblLn2 + dlogs(dblAbsReal) + 0.5 * dlog1ps(dblTemp);
+ }
+ else
+ {
+ double dblTemp2 = dsqrts(1 + dblAbsImg * dblAbsImg);
+ _pdblReal = dblAbsReal / dblTemp2;
+ dblTemp = 2 * dblAbsImg * (dblAbsImg + dblTemp2);
+ _pdblImg = 0.5 * dlog1ps(dblTemp);
+ }
+ }
+ _pdblReal *= iSignReal;
+ _pdblImg *= iSignImg;
+
+ return (DoubleComplex(_pdblReal, _pdblImg));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asind/dasinda.c b/2.3-1/src/c/elementaryFunctions/asind/dasinda.c
new file mode 100644
index 00000000..4c7d9af7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asind/dasinda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "asind.h"
+
+void dasinda(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = dasinds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asind/dasinds.c b/2.3-1/src/c/elementaryFunctions/asind/dasinds.c
new file mode 100644
index 00000000..bc028a15
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asind/dasinds.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "asind.h"
+
+double dasinds(double x)
+{
+ return ((asin(x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asind/sasinda.c b/2.3-1/src/c/elementaryFunctions/asind/sasinda.c
new file mode 100644
index 00000000..100d09cb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asind/sasinda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "asind.h"
+
+void sasinda(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = sasinds(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asind/sasinds.c b/2.3-1/src/c/elementaryFunctions/asind/sasinds.c
new file mode 100644
index 00000000..1bbb3624
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asind/sasinds.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "asind.h"
+
+double sasinds(float x)
+{
+ return ((asin(x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/Makefile.am b/2.3-1/src/c/elementaryFunctions/asinh/Makefile.am
new file mode 100644
index 00000000..33f4436e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/Makefile.am
@@ -0,0 +1,69 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAsinh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAsinh.la
+
+libAsinh_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sasinhs.c \
+ dasinhs.c \
+ casinhs.c \
+ zasinhs.c \
+ sasinha.c \
+ dasinha.c \
+ casinha.c \
+ zasinha.c
+
+HEAD = ../includes/asinh.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/asinh/libAsinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/asin/libAsin.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatAsinh testDoubleAsinh
+
+TESTS = testFloatAsinh testDoubleAsinh
+
+#
+# -*- Hyperbolic ArcSine Tests -*-
+#
+testFloatAsinh_SOURCES = testAsinh.h testFloatAsinh.c
+testFloatAsinh_CFLAGS = $(check_INCLUDES)
+testFloatAsinh_LDADD = $(check_LDADD)
+
+testDoubleAsinh_SOURCES = testAsinh.h testDoubleAsinh.c
+testDoubleAsinh_CFLAGS = $(check_INCLUDES)
+testDoubleAsinh_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/Makefile.in b/2.3-1/src/c/elementaryFunctions/asinh/Makefile.in
new file mode 100644
index 00000000..3d560e29
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/Makefile.in
@@ -0,0 +1,812 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatAsinh$(EXEEXT) testDoubleAsinh$(EXEEXT)
+TESTS = testFloatAsinh$(EXEEXT) testDoubleAsinh$(EXEEXT)
+subdir = src/c/elementaryFunctions/asinh
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAsinh_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAsinh_la-sasinhs.lo libAsinh_la-dasinhs.lo \
+ libAsinh_la-casinhs.lo libAsinh_la-zasinhs.lo \
+ libAsinh_la-sasinha.lo libAsinh_la-dasinha.lo \
+ libAsinh_la-casinha.lo libAsinh_la-zasinha.lo
+am_libAsinh_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAsinh_la_OBJECTS = $(am_libAsinh_la_OBJECTS)
+libAsinh_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAsinh_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleAsinh_OBJECTS = \
+ testDoubleAsinh-testDoubleAsinh.$(OBJEXT)
+testDoubleAsinh_OBJECTS = $(am_testDoubleAsinh_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/asinh/libAsinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/asin/libAsin.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleAsinh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleAsinh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleAsinh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatAsinh_OBJECTS = testFloatAsinh-testFloatAsinh.$(OBJEXT)
+testFloatAsinh_OBJECTS = $(am_testFloatAsinh_OBJECTS)
+testFloatAsinh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatAsinh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatAsinh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAsinh_la_SOURCES) $(testDoubleAsinh_SOURCES) \
+ $(testFloatAsinh_SOURCES)
+DIST_SOURCES = $(libAsinh_la_SOURCES) $(testDoubleAsinh_SOURCES) \
+ $(testFloatAsinh_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAsinh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAsinh.la
+libAsinh_la_SOURCES = $(HEAD) $(SRC)
+SRC = sasinhs.c \
+ dasinhs.c \
+ casinhs.c \
+ zasinhs.c \
+ sasinha.c \
+ dasinha.c \
+ casinha.c \
+ zasinha.c
+
+HEAD = ../includes/asinh.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/asinh/libAsinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/asin/libAsin.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Hyperbolic ArcSine Tests -*-
+#
+testFloatAsinh_SOURCES = testAsinh.h testFloatAsinh.c
+testFloatAsinh_CFLAGS = $(check_INCLUDES)
+testFloatAsinh_LDADD = $(check_LDADD)
+testDoubleAsinh_SOURCES = testAsinh.h testDoubleAsinh.c
+testDoubleAsinh_CFLAGS = $(check_INCLUDES)
+testDoubleAsinh_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/asinh/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/asinh/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAsinh.la: $(libAsinh_la_OBJECTS) $(libAsinh_la_DEPENDENCIES)
+ $(libAsinh_la_LINK) -rpath $(pkglibdir) $(libAsinh_la_OBJECTS) $(libAsinh_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleAsinh$(EXEEXT): $(testDoubleAsinh_OBJECTS) $(testDoubleAsinh_DEPENDENCIES)
+ @rm -f testDoubleAsinh$(EXEEXT)
+ $(testDoubleAsinh_LINK) $(testDoubleAsinh_OBJECTS) $(testDoubleAsinh_LDADD) $(LIBS)
+testFloatAsinh$(EXEEXT): $(testFloatAsinh_OBJECTS) $(testFloatAsinh_DEPENDENCIES)
+ @rm -f testFloatAsinh$(EXEEXT)
+ $(testFloatAsinh_LINK) $(testFloatAsinh_OBJECTS) $(testFloatAsinh_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-casinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-casinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-dasinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-dasinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-sasinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-sasinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-zasinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAsinh_la-zasinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatAsinh-testFloatAsinh.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAsinh_la-sasinhs.lo: sasinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-sasinhs.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-sasinhs.Tpo -c -o libAsinh_la-sasinhs.lo `test -f 'sasinhs.c' || echo '$(srcdir)/'`sasinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-sasinhs.Tpo $(DEPDIR)/libAsinh_la-sasinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sasinhs.c' object='libAsinh_la-sasinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-sasinhs.lo `test -f 'sasinhs.c' || echo '$(srcdir)/'`sasinhs.c
+
+libAsinh_la-dasinhs.lo: dasinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-dasinhs.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-dasinhs.Tpo -c -o libAsinh_la-dasinhs.lo `test -f 'dasinhs.c' || echo '$(srcdir)/'`dasinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-dasinhs.Tpo $(DEPDIR)/libAsinh_la-dasinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dasinhs.c' object='libAsinh_la-dasinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-dasinhs.lo `test -f 'dasinhs.c' || echo '$(srcdir)/'`dasinhs.c
+
+libAsinh_la-casinhs.lo: casinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-casinhs.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-casinhs.Tpo -c -o libAsinh_la-casinhs.lo `test -f 'casinhs.c' || echo '$(srcdir)/'`casinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-casinhs.Tpo $(DEPDIR)/libAsinh_la-casinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='casinhs.c' object='libAsinh_la-casinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-casinhs.lo `test -f 'casinhs.c' || echo '$(srcdir)/'`casinhs.c
+
+libAsinh_la-zasinhs.lo: zasinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-zasinhs.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-zasinhs.Tpo -c -o libAsinh_la-zasinhs.lo `test -f 'zasinhs.c' || echo '$(srcdir)/'`zasinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-zasinhs.Tpo $(DEPDIR)/libAsinh_la-zasinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zasinhs.c' object='libAsinh_la-zasinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-zasinhs.lo `test -f 'zasinhs.c' || echo '$(srcdir)/'`zasinhs.c
+
+libAsinh_la-sasinha.lo: sasinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-sasinha.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-sasinha.Tpo -c -o libAsinh_la-sasinha.lo `test -f 'sasinha.c' || echo '$(srcdir)/'`sasinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-sasinha.Tpo $(DEPDIR)/libAsinh_la-sasinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sasinha.c' object='libAsinh_la-sasinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-sasinha.lo `test -f 'sasinha.c' || echo '$(srcdir)/'`sasinha.c
+
+libAsinh_la-dasinha.lo: dasinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-dasinha.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-dasinha.Tpo -c -o libAsinh_la-dasinha.lo `test -f 'dasinha.c' || echo '$(srcdir)/'`dasinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-dasinha.Tpo $(DEPDIR)/libAsinh_la-dasinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dasinha.c' object='libAsinh_la-dasinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-dasinha.lo `test -f 'dasinha.c' || echo '$(srcdir)/'`dasinha.c
+
+libAsinh_la-casinha.lo: casinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-casinha.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-casinha.Tpo -c -o libAsinh_la-casinha.lo `test -f 'casinha.c' || echo '$(srcdir)/'`casinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-casinha.Tpo $(DEPDIR)/libAsinh_la-casinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='casinha.c' object='libAsinh_la-casinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-casinha.lo `test -f 'casinha.c' || echo '$(srcdir)/'`casinha.c
+
+libAsinh_la-zasinha.lo: zasinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -MT libAsinh_la-zasinha.lo -MD -MP -MF $(DEPDIR)/libAsinh_la-zasinha.Tpo -c -o libAsinh_la-zasinha.lo `test -f 'zasinha.c' || echo '$(srcdir)/'`zasinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAsinh_la-zasinha.Tpo $(DEPDIR)/libAsinh_la-zasinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zasinha.c' object='libAsinh_la-zasinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAsinh_la_CFLAGS) $(CFLAGS) -c -o libAsinh_la-zasinha.lo `test -f 'zasinha.c' || echo '$(srcdir)/'`zasinha.c
+
+testDoubleAsinh-testDoubleAsinh.o: testDoubleAsinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsinh_CFLAGS) $(CFLAGS) -MT testDoubleAsinh-testDoubleAsinh.o -MD -MP -MF $(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Tpo -c -o testDoubleAsinh-testDoubleAsinh.o `test -f 'testDoubleAsinh.c' || echo '$(srcdir)/'`testDoubleAsinh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Tpo $(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAsinh.c' object='testDoubleAsinh-testDoubleAsinh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsinh_CFLAGS) $(CFLAGS) -c -o testDoubleAsinh-testDoubleAsinh.o `test -f 'testDoubleAsinh.c' || echo '$(srcdir)/'`testDoubleAsinh.c
+
+testDoubleAsinh-testDoubleAsinh.obj: testDoubleAsinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsinh_CFLAGS) $(CFLAGS) -MT testDoubleAsinh-testDoubleAsinh.obj -MD -MP -MF $(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Tpo -c -o testDoubleAsinh-testDoubleAsinh.obj `if test -f 'testDoubleAsinh.c'; then $(CYGPATH_W) 'testDoubleAsinh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAsinh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Tpo $(DEPDIR)/testDoubleAsinh-testDoubleAsinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAsinh.c' object='testDoubleAsinh-testDoubleAsinh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAsinh_CFLAGS) $(CFLAGS) -c -o testDoubleAsinh-testDoubleAsinh.obj `if test -f 'testDoubleAsinh.c'; then $(CYGPATH_W) 'testDoubleAsinh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAsinh.c'; fi`
+
+testFloatAsinh-testFloatAsinh.o: testFloatAsinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsinh_CFLAGS) $(CFLAGS) -MT testFloatAsinh-testFloatAsinh.o -MD -MP -MF $(DEPDIR)/testFloatAsinh-testFloatAsinh.Tpo -c -o testFloatAsinh-testFloatAsinh.o `test -f 'testFloatAsinh.c' || echo '$(srcdir)/'`testFloatAsinh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAsinh-testFloatAsinh.Tpo $(DEPDIR)/testFloatAsinh-testFloatAsinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAsinh.c' object='testFloatAsinh-testFloatAsinh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsinh_CFLAGS) $(CFLAGS) -c -o testFloatAsinh-testFloatAsinh.o `test -f 'testFloatAsinh.c' || echo '$(srcdir)/'`testFloatAsinh.c
+
+testFloatAsinh-testFloatAsinh.obj: testFloatAsinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsinh_CFLAGS) $(CFLAGS) -MT testFloatAsinh-testFloatAsinh.obj -MD -MP -MF $(DEPDIR)/testFloatAsinh-testFloatAsinh.Tpo -c -o testFloatAsinh-testFloatAsinh.obj `if test -f 'testFloatAsinh.c'; then $(CYGPATH_W) 'testFloatAsinh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAsinh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAsinh-testFloatAsinh.Tpo $(DEPDIR)/testFloatAsinh-testFloatAsinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAsinh.c' object='testFloatAsinh-testFloatAsinh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAsinh_CFLAGS) $(CFLAGS) -c -o testFloatAsinh-testFloatAsinh.obj `if test -f 'testFloatAsinh.c'; then $(CYGPATH_W) 'testFloatAsinh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAsinh.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/casinha.c b/2.3-1/src/c/elementaryFunctions/asinh/casinha.c
new file mode 100644
index 00000000..76108aaf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/casinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asinh.h"
+
+void casinha(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = casinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/casinhs.c b/2.3-1/src/c/elementaryFunctions/asinh/casinhs.c
new file mode 100644
index 00000000..0d90c5ec
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/casinhs.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula asinh(z) = -i asin(i z)
+*/
+
+#include "asinh.h"
+#include "asin.h"
+
+floatComplex casinhs(floatComplex z) {
+ floatComplex i_z = FloatComplex(-cimags(z), creals(z));
+ floatComplex asin_i_z = casins(i_z);
+
+ return FloatComplex(cimags(asin_i_z), -creals(asin_i_z));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/dasinha.c b/2.3-1/src/c/elementaryFunctions/asinh/dasinha.c
new file mode 100644
index 00000000..0b6caf84
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/dasinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asinh.h"
+
+void dasinha(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dasinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/dasinhs.c b/2.3-1/src/c/elementaryFunctions/asinh/dasinhs.c
new file mode 100644
index 00000000..1e7c3037
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/dasinhs.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula asinh(z) = -i asin(i z)
+// In real case asinh(z) = imag(asin(i z))
+*/
+
+#include "asinh.h"
+#include "asin.h"
+
+double dasinhs(double x) {
+ return zimags(zasins(DoubleComplex(0.0, x)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/sasinha.c b/2.3-1/src/c/elementaryFunctions/asinh/sasinha.c
new file mode 100644
index 00000000..e5dc9a32
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/sasinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asinh.h"
+
+void sasinha(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sasinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/sasinhs.c b/2.3-1/src/c/elementaryFunctions/asinh/sasinhs.c
new file mode 100644
index 00000000..ab12d16d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/sasinhs.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula asinh(z) = -i asin(i z)
+// In real case asinh(z) = imag(asin(i z))
+*/
+
+#include "asinh.h"
+#include "asin.h"
+
+float sasinhs(float x) {
+ return cimags(casins(FloatComplex(0.0f, x)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/testAsinh.h b/2.3-1/src/c/elementaryFunctions/asinh/testAsinh.h
new file mode 100644
index 00000000..4352300a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/testAsinh.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTASINH_H_
+#define _TESTASINH_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "asinh.h"
+#include "constant.h"
+
+
+void sasinhsTest(void);
+
+void dasinhsTest(void);
+
+void casinhsTest(void);
+
+void zasinhsTest(void);
+
+void sasinhaTest(void);
+
+void dasinhaTest(void);
+
+void casinhaTest(void);
+
+void zasinhaTest(void);
+
+int testAsinh(void);
+
+#endif /* ! _TESTASINH_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/testDoubleAsinh.c b/2.3-1/src/c/elementaryFunctions/asinh/testDoubleAsinh.c
new file mode 100644
index 00000000..105c32af
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/testDoubleAsinh.c
@@ -0,0 +1,497 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAsinh.h"
+
+
+
+#define SOURCE {-1.3576117896733277401466,-1.7637832035201410629810,0.3855566139299755334946,\
+-0.2160798468986061537933,0.5079016244365412990902,-0.6713405437771273742698,\
+1.2405146112769958044453,1.3996914808133518182132,2.455810932856137718261,\
+-0.140780207215658148545,-0.4702849878182233100965,0.0273321471208497618344,\
+0.1272959744763040301763,1.0077609385751984394375,-0.5992823608151862657678,\
+-1.4909735993420030197854,1.1850328323549159659223,-0.7532372700108580509948,\
+0.1544844959811866313970,-0.4395251247591652199453,-0.1710077835697096926282,\
+-0.0020392103157046703732,2.3911285878389949566269,-1.8171171150936700211531,\
+-0.7159791420443786247318,0.5100070355081758322058,-0.9023845512384770506387,\
+0.1404573536528139765522,1.101925188407546940539,-0.0755748286838698046797,\
+0.0052019860396882644168,-0.3525317421211751067744,0.9599782396584397581307,\
+-0.3373393328184763340083,-0.9424787821879185845120,1.107342433121214275715,\
+0.5275760618563184456420,2.2874014544326271014540,0.8431549305721607323605,\
+-0.1180124731434434998123,-0.4202553394312918411124,-1.114616954771672663327,\
+0.7423526085481280123446,-0.8110912540737037490501,-0.2279425085104251347268,\
+0.6450672141930872127702,0.7812946955887702937815,1.4559939295961445981931,\
+1.4808632601102580395036,-0.0561674797508281767322,-0.6499637724416639228409,\
+0.9406577697059905762700,0.4408659857477613686072,1.0630757257539220628217,\
+-1.3783233641019425608221,-0.3062086297728683903507,0.3570701509900506276374,\
+0.2722352561686949279363,-0.8234027247256571202527,-0.5990920922251514735279,\
+0.8126089186562406307957,-0.9202541957145593531919,0.4637689483065319806521,\
+2.7285780311422769273122,-0.5523000528063060077244,0.5645499540468182919639,\
+-0.1966239792749471526623,0.3232076144184721222530,0.2044915219084416369011,\
+0.9122595139735795166658,1.32862804461268768641,-0.3933121244849541731092,\
+0.6800596076198115458311,-0.0390966465388340317366,0.4460664717379928534413,\
+0.0466968662605830517331,-1.159097013642337747896,-0.1516000867442619526315,\
+1.099835547132880231302,-1.8591997482220850024248,-1.5859733492347323213778,\
+-2.3518422239705527587716,-0.0363309315202365243347,-0.3671077430846361733252,\
+1.4974841041542252817464,0.1166082461631383904166,0.6150562435701190100446,\
+-1.1854669210396810985486,0.3562903039222897749738,0.3468046496992864269338,\
+-0.7767949783190361001672,-0.0388605946733660209680,0.4658948000641440767566,\
+2.5397452836287333077792,-1.6499955625089919308834,-1.730408375709416413102,\
+-0.5118965544481819396339,0.6229106301535243250811,1.2541834743916775440908,\
+-0.4242067654129669240781,-2.4609745338396713520979,-0.5875679117078018709464,\
+0.0525256277866840218249,-0.0221901005868065138993,0.0047340660621973179242,\
+0.5954335288237887491292,1.240326181995874410546,-0.4474314847009220885710,\
+0.309985603496633732590,0.1897272751476858920761,-0.5041309171227571495066,\
+-1.0407049076417729249755,-0.8790182225827031237131,-0.8241442015820352740008,\
+0.0114520840633361691702,-0.8375012162452729613804,1.5044689875616372720657,\
+-1.4872169103117691690841,-0.9491620445763213620438,-0.4714572242020408365804,\
+-0.9944436112957297790871,-0.7897744853013518584461,-1.9610605179993771951530,\
+-0.5551411828413486126976,-0.1498033190111577317438,1.049612455441040648196,\
+-1.873247408264758551155,-1.7768646550852811305532,2.055125969134249608317,\
+0.4181799324473139956027,0.4756981765178688870144,-0.0497090050304667893655,\
+-0.8254170186481527560218,0.3315212467523889205978,-0.1049083295446031904863,\
+0.9436361823785577307433,-0.4297495677869329622212,0.6041720693587251389545,\
+-0.5126921017648137235412,0.8253623930867394209443,-0.5636867633411185574133,\
+1.4780035136607696522049,-0.1150898513104453707578,-0.0895959753888824761425,\
+-0.1719733530741588689583,0.2269131790250100699780,2.0342102181126362481223,\
+-0.0976186373893909720145,-1.0193857468205604899,0.778026114056752038373,\
+0.3469309321844699645077,-0.2119385547567329830532,0.1122013143743656737872,\
+0.5130455426994967593757,-0.9836962738165191399986,-1.8662473753394661635241,\
+0.5046191490309642757595,0.5397589965174257597980,0.1495290449776452701425,\
+-1.0010126697848658050560,-1.231087303316227510308,0.493771591129457787517,\
+0.0084749296034232757258,0.6528794554325030308206,1.3165434517533367575481,\
+-0.7644706245855447113158,1.60959294894722515501,-0.3945002118117288958388,\
+-1.7397191133485980785167,0.7283944071784652640744,-0.8252534213629215686936,\
+0.1067480143242338502807,1.4303021806407054672405,-0.9653188502218088551388,\
+0.3473141482678416824825,1.3246017895509272221943,2.2493951812296155701176,\
+-0.6569708783346918101742,-0.321524642114760117462,0.6051546744959480639281,\
+0.3028414522677088660529,-0.6449695892069078340114,0.3426130327302095435194,\
+-0.9643932135296735541630,1.3325612893853038265490,-1.628074335418207230219,\
+0.7075076309451185929689,1.0853008279162978944044,-2.3506278976788554935240,\
+-0.1463993258475799474905,-1.0813242242905494183702,0.8848173893719444293993,\
+-0.8759582027327027509145,-0.8344888331049786778237,-1.0485734628076319729928,\
+1.9962933549994803517080,1.2493174700563109968954,1.1394362749053514871633,\
+-0.2197402489428784411185,0.3152457615995896134109}
+
+#define RESULT {-1.1130949556588403126511,-1.3327159168755193796585,0.3765918165954149632313,\
+-0.2144327449409605401698,0.4882680607211341006213,-0.6290298228269889380115,\
+1.0416537998862092084806,1.1378027100741174848508,1.6306935238556961031975,\
+-0.1403192842222721059553,-0.4544772654936784506141,0.0273287452012760077869,\
+0.1269546678262620797994,0.8868507654832032960357,-0.568209430801213888351,\
+-1.1897458189645284676317,1.0063560088725012064970,-0.6957349846601869058915,\
+0.1538765289352577170234,-0.4264787556420423508818,-0.1701850823931514988807,\
+-0.0020392089024058542880,1.6060204471410550741695,-1.3587234662009097796442,\
+-0.6657080515933866404765,0.4901444289074484705893,-0.8106383081775411225678,\
+0.1399995760847499992607,0.9516413314489057251322,-0.0755030713336432846017,\
+0.0052019625784457792020,-0.3456102163306026819889,0.8527889195091039598040,\
+-0.3312482849825826303203,-0.8401095674014050773692,0.9552769725934540101520,\
+0.5057396137890651788283,1.5652435713544583517631,0.7660130911978242362892,\
+-0.1177402502570575049123,-0.4087756154845550438104,-0.9601436921836913329642,\
+0.6870180358136419584980,-0.7413056602559416896625,-0.2260133834402236752137,\
+0.607083791196235011967,0.7179951440904949189203,1.1701025225825925080159,\
+1.1841009702891132082669,-0.0561379888707583402097,-0.6111939387463327655325,\
+0.8387837653657870262691,0.4277059773372764994726,0.9252791007143230661569,\
+-1.1253178411086610655,-0.3016147291750726489035,0.3498873875038394642978,\
+0.2689800399453179946541,-0.7508385861915640724362,-0.568046218336308084140,\
+0.7424839156827229835756,-0.8238461490952974086710,0.4485733597383650406165,\
+1.7289314850929364819621,-0.5274948117440469985695,0.5381900831525847639369,\
+-0.1953785803896550821168,0.3178295637778837390286,0.2030924952508830483300,\
+0.8179516300830952379997,1.0957859238613814056862,-0.3838186466908449778757,\
+0.6362542602331872076959,-0.0390866932016993157140,0.4324599635687117471505,\
+0.0466799117153936446445,-0.9895220015504287980335,-0.1510253177999459628378,\
+0.9502363023238964423456,-1.3788344661100282451116,-1.2415257056941875202227,\
+-1.5907556842186492129798,-0.0363229438428324669097,-0.3593253093499745309813,\
+1.1933668386250828596928,0.1163455870775610828671,0.5816925710627691703536,\
+-1.0066359311257613295965,0.3491528652755562234233,0.3402040976525141924292,\
+-0.7144454627768908050456,-0.0388508204533765666433,0.4505011238681072560652,\
+1.6618918653106427019139,-1.2751867809374948237178,-1.3161363888578068159774,\
+-0.4918270306483571441269,0.5883710719531183297448,1.0502037442465796956981,\
+-0.4124158523209305871049,-1.6326391191927918100646,-0.5581352790789477769096,\
+0.0525015052004256660423,-0.0221882799205271458165,0.0047340483795489029725,\
+0.5649052397488373289391,1.0415355372390291410767,-0.4337062598861871065559,\
+0.3052242689715726209343,0.1886070763157441099178,-0.4849035737297955339642,\
+-0.9098654196250280934422,-0.7931897365608786554247,-0.7514108860522482613575,\
+0.0114518337541998777018,-0.7616847132530191188948,1.1972396117455856856537,\
+-1.1876514534079536389299,-0.8449650527155313506356,-0.4555378112663634460056,\
+-0.8774391641368382011024,-0.7246635421278604383133,-1.4260843463597587810199,\
+-0.5299803397861506670807,-0.1492486124002971037417,0.9160234338985321356219,\
+-1.3854693118499961101975,-1.339149741178953689769,1.4680202081995989971119,\
+0.4068615933419172381313,0.4593706772145678129959,-0.0496885560579486892929,\
+-0.7523928088748154108245,0.3257305872841815830299,-0.1047168437798993573251,\
+0.8409515953244546260237,-0.4175134246305884921924,0.5723991247141133609233,\
+-0.4925350737504667897326,0.7523506802368506996004,-0.5374382677208087155662,\
+1.1824994989469264083937,-0.1148372801243118385139,-0.0894765353119480744137,\
+-0.1711367593250398000393,0.2250096841326320595833,1.458830901005770064316,\
+-0.0974642573471812823094,-0.8950151622701945086646,0.7154174354590427942213,\
+0.3403234064876564657354,-0.2103831526165375054305,0.1119672185619183107930,\
+0.4928495654965970862449,-0.8697979955142227659337,-1.382167978700230337452,\
+0.4853394960873701480253,0.5164877528407616491535,0.1489773595696585739567,\
+-0.8820894714376154022162,-1.0357236173571910953228,0.4756340389263381540630,\
+0.0084748281555349427863,0.6136369862616236625641,1.0884976091419886756739,\
+-0.7046834979102297724651,1.254056645766540967202,-0.3849240656020492257205,\
+-1.3207856959376931271777,0.6757730196964429891793,-0.7522666350656633804661,\
+0.1065463121770779120201,1.155469512029384748786,-0.8566364746899163273852,\
+0.3406854318087456645614,1.0933623617966952146219,1.5499122891284196068540,\
+-0.6170596901911918896744,-0.3162277642902040497574,0.5732399668068761666717,\
+0.2983935984890606074593,-0.6070017519078403367416,0.3362413129909137543549,\
+-0.8559703502467290725519,1.0981489764525824703867,-1.2637694566754069658288,\
+0.6588062099967662010869,0.9404229224232689698937,-1.590280419973736147909,\
+-0.1458813492114517662568,-0.9377256428290303702511,0.7975391112088442424621,\
+-0.7908896752603351565369,-0.7593735645090678998415,-0.9153065625835585805703,\
+1.441976583204267914340,1.0471665685842834747632,0.9766162941953494547320,\
+-0.2180092160957680658129,0.3102448153202543856821}
+
+
+#define ZSOURCER {0.1344153599005591392945,-1.5506135890216410366804,-0.6851077106999041710367,\
+0.4218254137797516900577,0.4563186792784946765877,-0.0065657292828231895304,\
+-1.4909053660893785142605,0.3020078702400747494572,0.9932063361099687792688,\
+-0.4433136654301204071515,-1.2230912696221460933543,-0.4536074652511654647924,\
+-0.391728395210721336284,-1.0754644749418362792426,-0.3220075728643138068819,\
+-1.8561721663709394025688,0.9166361449615868517427,-0.4865676280317013935317,\
+-0.0798825634299456799337,0.7227932226211960520246,0.4367586477867241301354,\
+1.100708465607679542586,0.7887304681164191144660,-0.7638617615134800642451,\
+-1.1157778009204568636648,-0.0715514394916681589764,0.1759955522740979383389,\
+0.6521704771208436390850,-1.2566799200234315403435,0.7200913102328155845910,\
+-0.3420550667112094989086,0.2477935566640704911912,2.0205940701992970431888,\
+1.3930268695166325709778,-1.2605487293586259411882,-0.1650288634784027319569,\
+-0.0981081330322927658294,0.4100655669623185506367,0.7181621264742018562188,\
+-0.4072630840419457221024,0.5156039430832634051782,0.3795734781395984636099,\
+0.3638182194100580413298,0.8461109103084072380341,0.6093905395787995171730,\
+-0.2503150987783319125768,0.6420253514641469649860,-0.0446314315869399819148,\
+0.2916988037421140433914,-0.3385179884731976951429,0.4290547410494972568884,\
+-1.7617580904822116583119,0.0242252644066083683283,-1.6979773429025941666737,\
+-1.5685374082937220130418,0.2235220732382334762889,0.3158040584918663795655,\
+-0.3902896794740354780018,-0.2554731784615550393980,-1.2399505074947390070861,\
+-0.0969941013810174113008,-0.7835998873676693898815,-0.7420185738540517883521,\
+0.1215847078229450456410,0.346331144382537814419,-0.1289657459832099506425,\
+-0.2972509851392565738415,0.5513684955823417999099,-0.3924372370508544816126,\
+0.6550918706396454682661,-0.0941496244175293039991,-0.6298808116548983981886,\
+0.6046273337026021321705,1.154776599111647650275,-1.3475403271419439388268,\
+1.6941635868888738070126,-0.9698161544930480326698,0.321333626597992860763,\
+0.8077673631787291030903,0.4495327099693594008478,-0.2815944820401523052134,\
+0.5503911320698096076853,0.4415940612643087237466,-0.0426890352355768151749,\
+0.4574486820024267763607,-1.8233880107049311725120,-1.2644581540832258159668,\
+1.8182154451811951556550,-0.4365692326313646565161,-0.7834466000398015994577,\
+-0.2438122853723030947215,-1.238179759598785789620,1.0164635023339896324757,\
+1.1566875865587697980175,0.7525323014625638906594,-0.5302881550474964900133,\
+0.9946348209098996306921,-0.2846244148716441380031,-1.4971569165104527954213,\
+0.3858437386079422992680,0.5857497893655945198077,-0.5407108407032041874629,\
+-0.3913628275219260821416,0.394150621449124050066,-0.3677461583219513441279,\
+-0.3580090499105863521834,1.2238011161239454871463,-0.0394483595782139026542,\
+0.6819869387311006114771,0.0482725904112477066654,0.6909298247176761664790,\
+1.3224847954183336362632,1.4037115762091163517766,0.8467069128655627663349,\
+0.5210759995289813151231,-0.2055830325344648878971,-2.0192992995259366750815,\
+-0.5304191698016149647543,1.09472080578548336405,1.3620867421349684978082,\
+-0.1808242201566298279491,-0.0194904828858388744217,-0.4683180277648698042192,\
+0.7819869233308703870833,0.1429480494914288357666,0.2773646548392231792057,\
+0.6096476038786750040188,-0.5960852983339143262853,-1.963887290912852856550,\
+0.9721629223729456592551,-1.6452050961761244263215,-0.3723296190652639614527,\
+0.4738633834151028678683,-1.057700746568926764013,-0.4968910756708404541371,\
+0.2577873463311163293454,-0.0737988795500269523231,0.1977793752007929173331,\
+-0.6149210248305110315670,0.9875664176674272543011,-0.4642707502431423494116,\
+0.0643413048674845028385,0.6498540575999842694443,0.7121440663138152160627,\
+0.2359686505725840099945,-0.2350484222736072826,1.427908791905283747425,\
+-2.1717696603112686126735,-0.7707405591334609562537,0.8328839983146067993403,\
+-0.8442913355247498863321,-0.9327775490791254675571,-0.1481361786955139869804,\
+1.3160166106571784538914,-1.641046498941054032628,1.1071159236267200665083,\
+-0.1637297725664050573879,0.0063889356258534446900,-0.1876117315630027870821,\
+-0.0437156856017992812014,-0.5047856242612756005883,-0.4377080020532335691286,\
+0.8918622387976500309748,-0.7125206673387354250337,-1.8420141064608679393,\
+-0.6323236657671401639291,0.4307970989642812553733,0.0065706118931696342461,\
+-0.2380637309545470814420,-0.9281665549650555124828,1.2462413799568070604806,\
+0.1118120260462647785893,0.5017427788303500113543,0.1413380949238240147370,\
+0.5728474017890546887699,-0.2522748296906130449635,-0.4384774472140181011959,\
+0.0497517512937118988603,0.5020924835745471659365,0.6928164360637126817366,\
+0.9383192238380625438410,0.9522811808490952989459,0.6799302528285031677058,\
+0.5017679240717164423913,-2.1626383553421018035579,0.4579762384000223285341,\
+0.0586823729814069730559,-1.0035555258293702429739,-0.1166748359615927543853,\
+0.8530686378617126086610,-0.5952441201854786756442,-0.9104692400773028992944,\
+-0.1222081949574846115869,0.8743861864198215760879,-1.7814901158856750740256,\
+-0.1655434636829379024814,1.2699075561256230049167,3.1587625106365013749610,\
+0.8610776754247619901861,-0.0100004380673695478232}
+
+#define ZSOURCEI {0.9250286334648400998759,0.1065362941212572023275,-0.8122748012511081805442,\
+2.9016509109873367400212,-0.879282905363888867001,-0.3325238972742790566350,\
+1.2084799362120550725308,0.2580513186266746861186,-0.2529978784629969279507,\
+1.6363224419507169660193,0.3632057263498695842685,0.3611017132584669053763,\
+-1.2067543995469365292195,-0.9261214746973902567362,0.5500770410591231396324,\
+0.3509274981930612380410,-2.0620828383452867171854,0.1301261656898765051160,\
+-0.0829640021096160473757,0.5497292800458170036748,-1.586103376800369391120,\
+1.1212128658770057487715,-0.0802149047940418080671,0.3400568097779858578456,\
+0.5992917235464352287977,1.2934484737369573714716,-0.1770100915330515556345,\
+-1.6783588206143511545321,0.3877335362207995905770,-0.3290626192650726866695,\
+-0.7735806757117498211329,1.4288193530454935675778,-0.0608386450296815664562,\
+0.2853217242027552558170,-0.3091484421032868468160,0.2351673955360732704012,\
+0.8718242905301006873131,0.9043814712183079196350,0.4001603453209788274769,\
+0.2902565872125924539837,-0.1051862594971314374126,-0.2633497801636938695502,\
+0.5605928815183498503671,-1.0135332223701010168071,1.3762849538989350151041,\
+0.0221113855817069056287,0.296045052860035018405,0.1323984531412186749222,\
+-0.5439657044615130443432,0.7105758550684416752219,-1.988902172751357388947,\
+0.8370036445008282033342,-1.361827445493777322127,-0.2908726176761944892668,\
+0.7582058566306987268391,2.2582687071318150451305,-0.838995532132944754622,\
+-0.0049693115325542529942,0.8948621233346091274896,-0.1820415696112677728102,\
+0.0164009645281327567923,0.4631157184786182656744,1.2818863747394355634412,\
+1.37735582155233560187,-0.7661687725125947423521,-0.8188017890741936533061,\
+1.3941959606340814659120,2.0721869090596265472470,0.9329858014692479217800,\
+-1.0023470169799657547571,0.1352029091047084741195,0.5763346694547388793239,\
+-1.492034523395888490072,-0.4804977288873880647557,0.7911732889577677285686,\
+0.1745293679511154827377,0.0354831535332537570393,-0.8628629256538601355331,\
+0.1942834096659604437018,1.3466596448020036191906,0.3364543941938548110571,\
+-1.109797124842869298078,0.1809508886112952685821,0.5725159396053964844242,\
+0.6787472822917395287590,1.4922528447187788369632,-0.9855408452288743070824,\
+2.0147405762642014437347,-0.1974169216352719968821,-0.2472797570908096820297,\
+-0.3003777280233598800940,-0.6957353172991608269982,0.8954567399776292013769,\
+0.0025734217968703923703,1.2028191624106452373155,-0.3976568161030914483334,\
+-0.9486032699014914637559,0.344203116731234826098,-0.1282579491971870822020,\
+0.2354837848969928981724,-1.0123893486718691381299,-0.1455435264750559176683,\
+-0.0385439121492695893623,0.2704776801120854501370,0.9996348746916957628272,\
+1.1879952493572987215487,-0.1421627190737907164841,-0.9134168336317867176177,\
+-1.3273949616244651306118,-0.2266260602581666450117,0.0136941574262192684169,\
+0.8667822397875659667932,-0.8918524882230300931951,0.5818810906621436629393,\
+0.5786477410918646757665,-1.2824019249961673416749,-0.8858272202103619763491,\
+1.49931415247364041576,-0.3191008638398869501351,-0.6302800825827241659738,\
+-0.9307697616588104239099,-0.2218962076254625825911,0.5504657591791385362612,\
+0.7937732776747626894931,0.4530121091137990219089,-0.5561836772913717474864,\
+-0.0487810094749783207391,1.0373690852013959240452,-1.9605345216190741552964,\
+-0.6318190008183720562940,-0.2595506312908315571519,1.6655693943633802511783,\
+0.2643484753712377899326,0.5166487752761181884154,-1.7642021092407271787295,\
+0.9519817124353935344772,1.5941109627321103925368,-0.3268346133298423716873,\
+-0.8591341754919610274044,-0.5067465121338621258928,0.4012524027420211192307,\
+-1.3781772559142455580883,-1.0900200484217259511155,0.7071849131547247591101,\
+0.6311112492498477388736,-1.5661486235109134401711,-0.3037032596268335327139,\
+-2.3928711979350367755615,0.9280630230889591603116,1.234345031017325400313,\
+0.0245382276611107209841,-1.7795591476102954331395,-0.1457340296796875434016,\
+-1.4175919090731374794245,-1.0931645829165108629866,0.0976120560124896369247,\
+-0.4917932561715864236973,0.3236361331498361360026,-1.3493789441767958248164,\
+-0.4975410901203008995353,-0.5175498508985710843788,1.9028534065523732277114,\
+-1.0213015320689262654952,0.7201673839470011939667,-0.229479324750370056174,\
+0.0507808834449509222120,-0.6036524407661360003274,-0.3189899214184117592907,\
+0.8969390978377852485792,0.0689550751790670851671,-0.3842312216289716086948,\
+-0.5817559662860881664059,-1.4228206622942274339749,-0.8055937171612096436846,\
+-0.8761791574203163790457,0.6999940081500163335804,0.3592083211755666694032,\
+-2.2759824091756848396528,1.1126243656877470300515,-1.490042708505755930659,\
+-0.2517675074289520420479,-0.4649616224894683735869,-0.9304122891120238936224,\
+-0.2780945839682648634827,-1.186365868114249266796,-1.0805465619847403058174,\
+-0.2982113561322028982836,-0.4608151973468663786804,0.5142626215675811796046,\
+-0.8962085262358048254328,-1.8912922138922239057024,1.5339839202719194322100,\
+-1.0493592314888038341536,1.5275565058768361126340,-0.3000289995792813080300,\
+-1.2901253199534357118949,0.4517205659557054775455,0.1925085892467791881533,\
+0.4244705571771024699146,1.1465794102472002258253}
+
+#define ZRESULTR {0.2881823261718455264635,-1.2239148834349047323400,-0.7845879395690421587162,\
+1.7398908843418365854916,0.6267968040978579846723,-0.0069618200210163757799,\
+-1.3647060336777470102021,0.3067781755755824568688,0.8879601142484547793288,\
+-1.1408081118402808584733,-1.0511217892257147532575,-0.4630227853264242132703,\
+-0.8052300885146775888401,-1.0799054881923455528892,-0.3673239873834487356774,\
+-1.3895193771431015861140,1.4748704381210364644517,-0.4721815868535457205724,\
+-0.0800715444386163321955,0.7328675926305248111703,1.1062012776691256821238,\
+1.1578188890116758447135,0.7250736097899580512305,-0.7268209399811761395327,\
+-1.020749615675486277055,-0.7543891378811746761812,0.1777916795470285138414,\
+1.224903809672051702151,-1.074529895353530717372,0.6903548013878436639956,\
+-0.4611640141379182988857,0.933556473565831823613,1.4531339378119088046049,\
+1.1451427225776011908920,-1.0686132863053487973559,-0.1688483441440512822229,\
+-0.1889456477264452038956,0.5985578048499338166266,0.6993236665323845357989,\
+-0.4109810453160360754765,0.4971360116983927213141,0.3821580291233257486994,\
+0.4128919091647823558233,0.9758538921704605906271,1.0346135696067118026065,\
+-0.2478280180540722854587,0.6216905071606976251886,-0.0450118169844396301404,\
+0.3340415020637265142156,-0.4315313860868430495543,1.3446595868643815840926,\
+-1.4033414360880258620057,0.8274220763035017300879,-1.309144795084008494612,\
+-1.3004176310924011605863,1.4613978516551788811029,0.4652521895005036212112,\
+-0.3810083873666035292338,-0.4305652750257212835194,-1.0463819862831613693999,\
+-0.0968555231163464591670,-0.7621978211341690068181,-1.0442639351316740370379,\
+0.8551375533721097266238,0.4624338658491132791895,-0.2135461711123592121186,\
+-0.9192783709328955499274,1.406572519212488048268,-0.5996917427163407365853,\
+0.8472849136812159454024,-0.0948718277212909494311,-0.6635046470522460992925,\
+1.102552918644890800337,1.0241591511876448894469,-1.1946095915247210150767,\
+1.3012416677676885701231,-0.860094399966521483414,0.4848763007604853791932,\
+0.7459402751068522352540,0.9429407450799555112653,-0.2932662625241302944978,\
+0.8365772498525353428889,0.4339900657778844039747,-0.0520088659229247518567,\
+0.540163948037489571874,-1.5617045052623743650599,-1.1990755672824380262398,\
+1.6897714229424107834632,-0.4304392780607278479188,-0.7314935627224536940361,\
+-0.2521660858364912494167,-1.1139709472810304102808,1.03593284093582016503,\
+0.9879482215425008373444,1.008898373366306833177,-0.5387894626210441018088,\
+1.0404295395317768591070,-0.2970761763070669525533,-1.1952939328908356309000,\
+0.3857997224260597546319,0.8038817262315489653446,-0.5212531537640049394966,\
+-0.3822389517390957225373,0.3966495909859810709008,-0.6230521638604892276092,\
+-0.7692209701300163349202,1.03425437487647720047,-0.0946733232120821749378,\
+1.0396309891046779938506,0.0495385539831420876333,0.6452562376798283150237,\
+1.1985497422790862831476,1.2458585900431864423865,0.8349246161988523873276,\
+0.5689579490080320933743,-0.7806209699664544698905,-1.5187452500641256403213,\
+-1.0796802038517956390251,0.9639374126836365297422,1.1711728912763936794050,\
+-0.362488012679416937711,-0.0199872602643281528645,-0.5128264059242761963020,\
+0.8492028743473079011039,0.1591587587129435210631,0.3212111561314560104208,\
+0.5775318673000989777577,-0.8249558967503766160334,-1.7154192273737123297650,\
+0.9346304365709510175719,-1.2804432024400131950870,-1.1426657840798974952179,\
+0.4703017265736584850977,-0.9677493848474170157203,-1.2320829767979621927054,\
+0.4762683633703864716225,-1.0444970147674126348392,0.2072645201710894835578,\
+-0.7498010260478793487238,0.9188781401771745072082,-0.4789588845434366026765,\
+0.8476937452776511783270,0.8895027647705600060135,0.7682169660294876356588,\
+0.2922093151936491217668,-1.0429114806489117039945,1.166492728893671504409,\
+-1.8646253504096552688907,-0.8923239533314403226782,1.0666374040344190898821,\
+-0.7669950473749445052363,-1.3585386555510787776058,-0.1491456224121993634490,\
+1.354597929546794699007,-1.4004360287243708960148,0.9567139977921835791719,\
+-0.1859618971982733570680,0.0067522660769214690180,-0.842830481930881947328,\
+-0.0503539309377906904586,-0.5389456072426579424928,-1.2991753231583602623544,\
+1.0064698858838660999737,-0.7727166159011478185903,-1.375918311051623987851,\
+-0.5968365322787659854598,0.4909328325978893903248,0.0069327197759769939797,\
+-0.4109069224660110153380,-0.8305261099098545374275,1.067766372332880076002,\
+0.1364036525382384124061,1.0185816452043403579353,0.2263896344197315613211,\
+0.7241797053868859190828,-0.3310339119084142467386,-0.4485953806654829345568,\
+1.4637030484564286236804,0.8062581119903107218505,1.135230070733268981087,\
+0.8486739138084887779101,0.8869200257723099944940,0.8304138989692378958196,\
+0.4970805707137128659490,-1.6189532479764259242927,0.7536345887109229257916,\
+0.0614297741451279438740,-0.9217679644120017057318,-0.1351912284135200204016,\
+0.9344534227267771164804,-1.3237759469951597690596,-1.2409772949992454726953,\
+-0.4266400610039619012426,1.2242961173386468498592,-1.3507787481217943259537,\
+-0.7743193525686042910650,1.0905655681187926830944,1.869097852573508911078,\
+0.8141159942263986870614,-0.5353611933969746328188}
+
+#define ZRESULTI {1.0927665474832626291146,0.0577041411945533808114,-0.6605411939586326441898,\
+1.4173928005937053153929,-0.8196938376873322829042,-0.3389699587748392084485,\
+0.6182411929183926346809,0.2489298772050817232238,-0.1790179858054015138435,\
+1.2497543779018556175942,0.2282445233800083350673,0.3316185520857942714557,\
+-1.1178350760886399672955,-0.5992404494636266454322,0.5409431572062767257236,\
+0.165426376161976390611,-1.1122536593055589726475,0.1171231329897951256580,\
+-0.0827933061236485051682,0.4436212447193593200190,-1.2403328057018132568601,\
+0.6960798868922111193314,-0.0629757037081154352753,0.2697689038111338311055,\
+0.3922302209885859536342,1.4842743869253867128322,-0.1751428834182987837043,\
+-1.13801740936157136375,0.2394213509890497915134,-0.2668464988788373237760,\
+-0.7726426977316005473284,1.3382415873096298319922,-0.0269807302035863991185,\
+0.1656312162752983929703,-0.1911246952977092017356,0.2339836780169318453115,\
+1.0284310438096477824388,0.8686878315011077322794,0.3246111072217529036621,\
+0.2706500543034189298908,-0.0935407508346946525712,-0.2477506860556301926390,\
+0.5421539099371334158306,-0.7327711559744070068945,1.05214358953255682216,\
+0.0214509576394467729732,0.2493724089381304798163,0.1326531466862980457311,\
+-0.5409686898264083332322,0.7065143938000820744705,-1.3284854753780470648650,\
+0.3984512917058077308141,-1.5446072484052193463100,-0.1469509150678137976431,\
+0.3947301571210936610434,1.461008167394748147316,-0.8567501445560671280433,\
+-0.0046292376134026641879,0.9577036871573997300899,-0.1140752778705255016112,\
+0.0163250605343483005949,0.3628386917181465332050,0.9320951721399445277783,\
+1.44423353597128478754,-0.7628206936973814800140,-0.9280966118664348840639,\
+1.2849894108105837098321,1.2792864989827095190122,0.9061761299907579170210,\
+-0.8122605612540356734286,0.1350064725981316715586,0.4883936062374085174120,\
+-1.102637196793889051705,-0.3106468603302708908487,0.4543964386247798525886,\
+0.0885735454738456329249,0.0254706011136682855533,-0.8796254633651946486239,\
+0.151022627304807338655,1.1452851102523748938466,0.3283556388648877777392,\
+-0.9434455972747952667845,0.1659123702555805879300,0.6086281726098896616151,\
+0.631662047814702143356,0.6431181331610840157254,-0.5760553428914201301581,\
+0.8026360136122261401681,-0.1814351276467410234439,-0.1944579368330171531554,\
+-0.2953494745705410595704,-0.4250058789202441067445,0.599813865521373279499,\
+0.0016830438518425523946,0.8854731871017331723550,-0.3534985427172745442448,\
+-0.6383931728072353983805,0.3358307199066276060861,-0.0711733718807077142543,\
+0.2207727851446303901639,-0.8556718335996058577564,-0.1281371029552695606224,\
+-0.0358976629777693137524,0.2532084228703710415687,0.983986642358089413918,\
+1.1345925939829912820755,-0.0898559156199065373061,-1.1416915329673189560822,\
+-0.9870037974692073001748,-0.2283270051627071806077,0.0112664968061259064547,\
+0.4998464672322767698986,-0.4937534754955061888637,0.4389132738737425154518,\
+0.5191615917775272981416,-1.330080589614465180759,-0.3792401398168883108752,\
+1.1512099997314479971067,-0.2141264512433771194377,-0.3645359117298094808746,\
+-1.0609046855212507232125,-0.2237132816089271170057,0.5066458933231118288987,\
+0.6114387233853804115569,0.4637825784576218857147,-0.5570387380565021695489,\
+-0.0416532931678999865377,0.8675730496349238762832,-0.7521971544712148238787,\
+-0.4444425039044248570974,-0.1343255157657375076230,1.3031888522890535675458,\
+0.2398794824711508455461,0.3501788639961876947737,-1.2484148728039676790047,\
+1.0223862780907517766593,1.5114877336366283611113,-0.3256639805152193312132,\
+-0.7257147000802074421344,-0.3563177118938634091450,0.367466380314942664409,\
+-1.5032253124394940879682,-0.8731092741090689113292,0.5703012583169800864269,\
+0.6498833797759138164452,-1.3804786941428137669874,-0.1733188156619589748164,\
+-0.8098487944615534450676,0.7091099644264757806411,0.8627806630820323841036,\
+0.0187490818204580703132,-1.0316116049359651540840,-0.1446317495535741626256,\
+-0.7559013344655626243096,-0.5329078157992787057040,0.0653983668850169619358,\
+-0.5045465362161873912328,0.3295621318182701542376,-1.3711989596398608259875,\
+-0.5200355557922887728139,-0.4673488331710942134123,1.3098786184351398631520,\
+-0.7189565120188516900157,0.580208200526596162838,-0.1091990841314347954194,\
+0.0429221122996483323009,-0.5675416667058814645941,-0.3246554520854594838575,\
+0.9723329710924543123340,0.0505316478341986258238,-0.2385123070932486100126,\
+-0.6142986606043344677275,-1.1409813222703388824186,-0.9033119064286492250204,\
+-0.7584587763797572268487,0.7252421018090512427889,0.3319280479688784257775,\
+-1.5464687515566899467245,0.9763347698321626078055,-1.0511809923664583443781,\
+-0.1831638202759971745248,-0.3336438319634690841120,-0.7499286125479456277532,\
+-0.2495331996617490000201,-0.4693439688376106477818,-0.9839213631021112016484,\
+-0.3022296870844187743899,-0.3220832096726037319101,0.5347182539371353460211,\
+-0.6559994287878105900802,-1.2228456605235495935347,0.9588662882096035122714,\
+-1.2891530456629314294048,0.9731441796186428572213,-0.1461840118371629804184,\
+-1.3757278523698810435150,0.2762809284691948308321,0.0580458636704428015962,\
+0.3198225937522309325622,1.5529789344620548163789}
+
+void dasinhsTest(void) {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=dasinhs(in[i]);
+ assert ( ( (fabs(out-res[i])) / (fabs(out)) ) <3e-15);
+ }
+}
+
+void zasinhsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in, out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out = zasinhs(in);
+
+ assert( ( ( fabs( zreals(out)-resR[i] ) ) / (fabs(zreals(out)) ) ) <3e-15);
+ assert( ( ( fabs( zimags(out)-resI[i] ) ) / (fabs(zimags(out)) ) ) <3e-15);
+ }
+}
+
+void dasinhaTest(void) {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out[200];
+ int i=0;
+
+ dasinha(in,200,out);
+ for (i=0;i<200;i++){
+ assert ( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <3e-15);
+ }}
+
+void zasinhaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in[200], out[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(inR[i],inI[i]);
+ }
+ zasinha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( ( fabs( zreals(out[i])-resR[i] ) ) / (fabs(zreals(out[i])) ) ) <3e-15);
+ assert( ( ( fabs( zimags(out[i])-resI[i] ) ) / (fabs(zimags(out[i])) ) ) <3e-15);
+ }
+}
+
+int testAsinh(void) {
+ printf("\n>>>> Double Hyperbolic ArcSine Tests\n");
+ dasinhsTest();
+ zasinhsTest();
+ dasinhaTest();
+ zasinhaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testAsinh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/testFloatAsinh.c b/2.3-1/src/c/elementaryFunctions/asinh/testFloatAsinh.c
new file mode 100644
index 00000000..ab6add0a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/testFloatAsinh.c
@@ -0,0 +1,497 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAsinh.h"
+
+
+
+#define SOURCE {-1.3576117896733277401466f,-1.7637832035201410629810f,0.3855566139299755334946f,\
+-0.2160798468986061537933f,0.5079016244365412990902f,-0.6713405437771273742698f,\
+1.2405146112769958044453f,1.3996914808133518182132f,2.455810932856137718261f,\
+-0.140780207215658148545f,-0.4702849878182233100965f,0.0273321471208497618344f,\
+0.1272959744763040301763f,1.0077609385751984394375f,-0.5992823608151862657678f,\
+-1.4909735993420030197854f,1.1850328323549159659223f,-0.7532372700108580509948f,\
+0.1544844959811866313970f,-0.4395251247591652199453f,-0.1710077835697096926282f,\
+-0.0020392103157046703732f,2.3911285878389949566269f,-1.8171171150936700211531f,\
+-0.7159791420443786247318f,0.5100070355081758322058f,-0.9023845512384770506387f,\
+0.1404573536528139765522f,1.101925188407546940539f,-0.0755748286838698046797f,\
+0.0052019860396882644168f,-0.3525317421211751067744f,0.9599782396584397581307f,\
+-0.3373393328184763340083f,-0.9424787821879185845120f,1.107342433121214275715f,\
+0.5275760618563184456420f,2.2874014544326271014540f,0.8431549305721607323605f,\
+-0.1180124731434434998123f,-0.4202553394312918411124f,-1.114616954771672663327f,\
+0.7423526085481280123446f,-0.8110912540737037490501f,-0.2279425085104251347268f,\
+0.6450672141930872127702f,0.7812946955887702937815f,1.4559939295961445981931f,\
+1.4808632601102580395036f,-0.0561674797508281767322f,-0.6499637724416639228409f,\
+0.9406577697059905762700f,0.4408659857477613686072f,1.0630757257539220628217f,\
+-1.3783233641019425608221f,-0.3062086297728683903507f,0.3570701509900506276374f,\
+0.2722352561686949279363f,-0.8234027247256571202527f,-0.5990920922251514735279f,\
+0.8126089186562406307957f,-0.9202541957145593531919f,0.4637689483065319806521f,\
+2.7285780311422769273122f,-0.5523000528063060077244f,0.5645499540468182919639f,\
+-0.1966239792749471526623f,0.3232076144184721222530f,0.2044915219084416369011f,\
+0.9122595139735795166658f,1.32862804461268768641f,-0.3933121244849541731092f,\
+0.6800596076198115458311f,-0.0390966465388340317366f,0.4460664717379928534413f,\
+0.0466968662605830517331f,-1.159097013642337747896f,-0.1516000867442619526315f,\
+1.099835547132880231302f,-1.8591997482220850024248f,-1.5859733492347323213778f,\
+-2.3518422239705527587716f,-0.0363309315202365243347f,-0.3671077430846361733252f,\
+1.4974841041542252817464f,0.1166082461631383904166f,0.6150562435701190100446f,\
+-1.1854669210396810985486f,0.3562903039222897749738f,0.3468046496992864269338f,\
+-0.7767949783190361001672f,-0.0388605946733660209680f,0.4658948000641440767566f,\
+2.5397452836287333077792f,-1.6499955625089919308834f,-1.730408375709416413102f,\
+-0.5118965544481819396339f,0.6229106301535243250811f,1.2541834743916775440908f,\
+-0.4242067654129669240781f,-2.4609745338396713520979f,-0.5875679117078018709464f,\
+0.0525256277866840218249f,-0.0221901005868065138993f,0.0047340660621973179242f,\
+0.5954335288237887491292f,1.240326181995874410546f,-0.4474314847009220885710f,\
+0.309985603496633732590f,0.1897272751476858920761f,-0.5041309171227571495066f,\
+-1.0407049076417729249755f,-0.8790182225827031237131f,-0.8241442015820352740008f,\
+0.0114520840633361691702f,-0.8375012162452729613804f,1.5044689875616372720657f,\
+-1.4872169103117691690841f,-0.9491620445763213620438f,-0.4714572242020408365804f,\
+-0.9944436112957297790871f,-0.7897744853013518584461f,-1.9610605179993771951530f,\
+-0.5551411828413486126976f,-0.1498033190111577317438f,1.049612455441040648196f,\
+-1.873247408264758551155f,-1.7768646550852811305532f,2.055125969134249608317f,\
+0.4181799324473139956027f,0.4756981765178688870144f,-0.0497090050304667893655f,\
+-0.8254170186481527560218f,0.3315212467523889205978f,-0.1049083295446031904863f,\
+0.9436361823785577307433f,-0.4297495677869329622212f,0.6041720693587251389545f,\
+-0.5126921017648137235412f,0.8253623930867394209443f,-0.5636867633411185574133f,\
+1.4780035136607696522049f,-0.1150898513104453707578f,-0.0895959753888824761425f,\
+-0.1719733530741588689583f,0.2269131790250100699780f,2.0342102181126362481223f,\
+-0.0976186373893909720145f,-1.0193857468205604899f,0.778026114056752038373f,\
+0.3469309321844699645077f,-0.2119385547567329830532f,0.1122013143743656737872f,\
+0.5130455426994967593757f,-0.9836962738165191399986f,-1.8662473753394661635241f,\
+0.5046191490309642757595f,0.5397589965174257597980f,0.1495290449776452701425f,\
+-1.0010126697848658050560f,-1.231087303316227510308f,0.493771591129457787517f,\
+0.0084749296034232757258f,0.6528794554325030308206f,1.3165434517533367575481f,\
+-0.7644706245855447113158f,1.60959294894722515501f,-0.3945002118117288958388f,\
+-1.7397191133485980785167f,0.7283944071784652640744f,-0.8252534213629215686936f,\
+0.1067480143242338502807f,1.4303021806407054672405f,-0.9653188502218088551388f,\
+0.3473141482678416824825f,1.3246017895509272221943f,2.2493951812296155701176f,\
+-0.6569708783346918101742f,-0.321524642114760117462f,0.6051546744959480639281f,\
+0.3028414522677088660529f,-0.6449695892069078340114f,0.3426130327302095435194f,\
+-0.9643932135296735541630f,1.3325612893853038265490f,-1.628074335418207230219f,\
+0.7075076309451185929689f,1.0853008279162978944044f,-2.3506278976788554935240f,\
+-0.1463993258475799474905f,-1.0813242242905494183702f,0.8848173893719444293993f,\
+-0.8759582027327027509145f,-0.8344888331049786778237f,-1.0485734628076319729928f,\
+1.9962933549994803517080f,1.2493174700563109968954f,1.1394362749053514871633f,\
+-0.2197402489428784411185f,0.3152457615995896134109f}
+
+#define RESULT {-1.1130949556588403126511f,-1.3327159168755193796585f,0.3765918165954149632313f,\
+-0.2144327449409605401698f,0.4882680607211341006213f,-0.6290298228269889380115f,\
+1.0416537998862092084806f,1.1378027100741174848508f,1.6306935238556961031975f,\
+-0.1403192842222721059553f,-0.4544772654936784506141f,0.0273287452012760077869f,\
+0.1269546678262620797994f,0.8868507654832032960357f,-0.568209430801213888351f,\
+-1.1897458189645284676317f,1.0063560088725012064970f,-0.6957349846601869058915f,\
+0.1538765289352577170234f,-0.4264787556420423508818f,-0.1701850823931514988807f,\
+-0.0020392089024058542880f,1.6060204471410550741695f,-1.3587234662009097796442f,\
+-0.6657080515933866404765f,0.4901444289074484705893f,-0.8106383081775411225678f,\
+0.1399995760847499992607f,0.9516413314489057251322f,-0.0755030713336432846017f,\
+0.0052019625784457792020f,-0.3456102163306026819889f,0.8527889195091039598040f,\
+-0.3312482849825826303203f,-0.8401095674014050773692f,0.9552769725934540101520f,\
+0.5057396137890651788283f,1.5652435713544583517631f,0.7660130911978242362892f,\
+-0.1177402502570575049123f,-0.4087756154845550438104f,-0.9601436921836913329642f,\
+0.6870180358136419584980f,-0.7413056602559416896625f,-0.2260133834402236752137f,\
+0.607083791196235011967f,0.7179951440904949189203f,1.1701025225825925080159f,\
+1.1841009702891132082669f,-0.0561379888707583402097f,-0.6111939387463327655325f,\
+0.8387837653657870262691f,0.4277059773372764994726f,0.9252791007143230661569f,\
+-1.1253178411086610655f,-0.3016147291750726489035f,0.3498873875038394642978f,\
+0.2689800399453179946541f,-0.7508385861915640724362f,-0.568046218336308084140f,\
+0.7424839156827229835756f,-0.8238461490952974086710f,0.4485733597383650406165f,\
+1.7289314850929364819621f,-0.5274948117440469985695f,0.5381900831525847639369f,\
+-0.1953785803896550821168f,0.3178295637778837390286f,0.2030924952508830483300f,\
+0.8179516300830952379997f,1.0957859238613814056862f,-0.3838186466908449778757f,\
+0.6362542602331872076959f,-0.0390866932016993157140f,0.4324599635687117471505f,\
+0.0466799117153936446445f,-0.9895220015504287980335f,-0.1510253177999459628378f,\
+0.9502363023238964423456f,-1.3788344661100282451116f,-1.2415257056941875202227f,\
+-1.5907556842186492129798f,-0.0363229438428324669097f,-0.3593253093499745309813f,\
+1.1933668386250828596928f,0.1163455870775610828671f,0.5816925710627691703536f,\
+-1.0066359311257613295965f,0.3491528652755562234233f,0.3402040976525141924292f,\
+-0.7144454627768908050456f,-0.0388508204533765666433f,0.4505011238681072560652f,\
+1.6618918653106427019139f,-1.2751867809374948237178f,-1.3161363888578068159774f,\
+-0.4918270306483571441269f,0.5883710719531183297448f,1.0502037442465796956981f,\
+-0.4124158523209305871049f,-1.6326391191927918100646f,-0.5581352790789477769096f,\
+0.0525015052004256660423f,-0.0221882799205271458165f,0.0047340483795489029725f,\
+0.5649052397488373289391f,1.0415355372390291410767f,-0.4337062598861871065559f,\
+0.3052242689715726209343f,0.1886070763157441099178f,-0.4849035737297955339642f,\
+-0.9098654196250280934422f,-0.7931897365608786554247f,-0.7514108860522482613575f,\
+0.0114518337541998777018f,-0.7616847132530191188948f,1.1972396117455856856537f,\
+-1.1876514534079536389299f,-0.8449650527155313506356f,-0.4555378112663634460056f,\
+-0.8774391641368382011024f,-0.7246635421278604383133f,-1.4260843463597587810199f,\
+-0.5299803397861506670807f,-0.1492486124002971037417f,0.9160234338985321356219f,\
+-1.3854693118499961101975f,-1.339149741178953689769f,1.4680202081995989971119f,\
+0.4068615933419172381313f,0.4593706772145678129959f,-0.0496885560579486892929f,\
+-0.7523928088748154108245f,0.3257305872841815830299f,-0.1047168437798993573251f,\
+0.8409515953244546260237f,-0.4175134246305884921924f,0.5723991247141133609233f,\
+-0.4925350737504667897326f,0.7523506802368506996004f,-0.5374382677208087155662f,\
+1.1824994989469264083937f,-0.1148372801243118385139f,-0.0894765353119480744137f,\
+-0.1711367593250398000393f,0.2250096841326320595833f,1.458830901005770064316f,\
+-0.0974642573471812823094f,-0.8950151622701945086646f,0.7154174354590427942213f,\
+0.3403234064876564657354f,-0.2103831526165375054305f,0.1119672185619183107930f,\
+0.4928495654965970862449f,-0.8697979955142227659337f,-1.382167978700230337452f,\
+0.4853394960873701480253f,0.5164877528407616491535f,0.1489773595696585739567f,\
+-0.8820894714376154022162f,-1.0357236173571910953228f,0.4756340389263381540630f,\
+0.0084748281555349427863f,0.6136369862616236625641f,1.0884976091419886756739f,\
+-0.7046834979102297724651f,1.254056645766540967202f,-0.3849240656020492257205f,\
+-1.3207856959376931271777f,0.6757730196964429891793f,-0.7522666350656633804661f,\
+0.1065463121770779120201f,1.155469512029384748786f,-0.8566364746899163273852f,\
+0.3406854318087456645614f,1.0933623617966952146219f,1.5499122891284196068540f,\
+-0.6170596901911918896744f,-0.3162277642902040497574f,0.5732399668068761666717f,\
+0.2983935984890606074593f,-0.6070017519078403367416f,0.3362413129909137543549f,\
+-0.8559703502467290725519f,1.0981489764525824703867f,-1.2637694566754069658288f,\
+0.6588062099967662010869f,0.9404229224232689698937f,-1.590280419973736147909f,\
+-0.1458813492114517662568f,-0.9377256428290303702511f,0.7975391112088442424621f,\
+-0.7908896752603351565369f,-0.7593735645090678998415f,-0.9153065625835585805703f,\
+1.441976583204267914340f,1.0471665685842834747632f,0.9766162941953494547320f,\
+-0.2180092160957680658129f,0.3102448153202543856821f}
+
+
+#define CSOURCER {0.1344153599005591392945f,-1.5506135890216410366804f,-0.6851077106999041710367f,\
+0.4218254137797516900577f,0.4563186792784946765877f,-0.0065657292828231895304f,\
+-1.4909053660893785142605f,0.3020078702400747494572f,0.9932063361099687792688f,\
+-0.4433136654301204071515f,-1.2230912696221460933543f,-0.4536074652511654647924f,\
+-0.391728395210721336284f,-1.0754644749418362792426f,-0.3220075728643138068819f,\
+-1.8561721663709394025688f,0.9166361449615868517427f,-0.4865676280317013935317f,\
+-0.0798825634299456799337f,0.7227932226211960520246f,0.4367586477867241301354f,\
+1.100708465607679542586f,0.7887304681164191144660f,-0.7638617615134800642451f,\
+-1.1157778009204568636648f,-0.0715514394916681589764f,0.1759955522740979383389f,\
+0.6521704771208436390850f,-1.2566799200234315403435f,0.7200913102328155845910f,\
+-0.3420550667112094989086f,0.2477935566640704911912f,2.0205940701992970431888f,\
+1.3930268695166325709778f,-1.2605487293586259411882f,-0.1650288634784027319569f,\
+-0.0981081330322927658294f,0.4100655669623185506367f,0.7181621264742018562188f,\
+-0.4072630840419457221024f,0.5156039430832634051782f,0.3795734781395984636099f,\
+0.3638182194100580413298f,0.8461109103084072380341f,0.6093905395787995171730f,\
+-0.2503150987783319125768f,0.6420253514641469649860f,-0.0446314315869399819148f,\
+0.2916988037421140433914f,-0.3385179884731976951429f,0.4290547410494972568884f,\
+-1.7617580904822116583119f,0.0242252644066083683283f,-1.6979773429025941666737f,\
+-1.5685374082937220130418f,0.2235220732382334762889f,0.3158040584918663795655f,\
+-0.3902896794740354780018f,-0.2554731784615550393980f,-1.2399505074947390070861f,\
+-0.0969941013810174113008f,-0.7835998873676693898815f,-0.7420185738540517883521f,\
+0.1215847078229450456410f,0.346331144382537814419f,-0.1289657459832099506425f,\
+-0.2972509851392565738415f,0.5513684955823417999099f,-0.3924372370508544816126f,\
+0.6550918706396454682661f,-0.0941496244175293039991f,-0.6298808116548983981886f,\
+0.6046273337026021321705f,1.154776599111647650275f,-1.3475403271419439388268f,\
+1.6941635868888738070126f,-0.9698161544930480326698f,0.321333626597992860763f,\
+0.8077673631787291030903f,0.4495327099693594008478f,-0.2815944820401523052134f,\
+0.5503911320698096076853f,0.4415940612643087237466f,-0.0426890352355768151749f,\
+0.4574486820024267763607f,-1.8233880107049311725120f,-1.2644581540832258159668f,\
+1.8182154451811951556550f,-0.4365692326313646565161f,-0.7834466000398015994577f,\
+-0.2438122853723030947215f,-1.238179759598785789620f,1.0164635023339896324757f,\
+1.1566875865587697980175f,0.7525323014625638906594f,-0.5302881550474964900133f,\
+0.9946348209098996306921f,-0.2846244148716441380031f,-1.4971569165104527954213f,\
+0.3858437386079422992680f,0.5857497893655945198077f,-0.5407108407032041874629f,\
+-0.3913628275219260821416f,0.394150621449124050066f,-0.3677461583219513441279f,\
+-0.3580090499105863521834f,1.2238011161239454871463f,-0.0394483595782139026542f,\
+0.6819869387311006114771f,0.0482725904112477066654f,0.6909298247176761664790f,\
+1.3224847954183336362632f,1.4037115762091163517766f,0.8467069128655627663349f,\
+0.5210759995289813151231f,-0.2055830325344648878971f,-2.0192992995259366750815f,\
+-0.5304191698016149647543f,1.09472080578548336405f,1.3620867421349684978082f,\
+-0.1808242201566298279491f,-0.0194904828858388744217f,-0.4683180277648698042192f,\
+0.7819869233308703870833f,0.1429480494914288357666f,0.2773646548392231792057f,\
+0.6096476038786750040188f,-0.5960852983339143262853f,-1.963887290912852856550f,\
+0.9721629223729456592551f,-1.6452050961761244263215f,-0.3723296190652639614527f,\
+0.4738633834151028678683f,-1.057700746568926764013f,-0.4968910756708404541371f,\
+0.2577873463311163293454f,-0.0737988795500269523231f,0.1977793752007929173331f,\
+-0.6149210248305110315670f,0.9875664176674272543011f,-0.4642707502431423494116f,\
+0.0643413048674845028385f,0.6498540575999842694443f,0.7121440663138152160627f,\
+0.2359686505725840099945f,-0.2350484222736072826f,1.427908791905283747425f,\
+-2.1717696603112686126735f,-0.7707405591334609562537f,0.8328839983146067993403f,\
+-0.8442913355247498863321f,-0.9327775490791254675571f,-0.1481361786955139869804f,\
+1.3160166106571784538914f,-1.641046498941054032628f,1.1071159236267200665083f,\
+-0.1637297725664050573879f,0.0063889356258534446900f,-0.1876117315630027870821f,\
+-0.0437156856017992812014f,-0.5047856242612756005883f,-0.4377080020532335691286f,\
+0.8918622387976500309748f,-0.7125206673387354250337f,-1.8420141064608679393f,\
+-0.6323236657671401639291f,0.4307970989642812553733f,0.0065706118931696342461f,\
+-0.2380637309545470814420f,-0.9281665549650555124828f,1.2462413799568070604806f,\
+0.1118120260462647785893f,0.5017427788303500113543f,0.1413380949238240147370f,\
+0.5728474017890546887699f,-0.2522748296906130449635f,-0.4384774472140181011959f,\
+0.0497517512937118988603f,0.5020924835745471659365f,0.6928164360637126817366f,\
+0.9383192238380625438410f,0.9522811808490952989459f,0.6799302528285031677058f,\
+0.5017679240717164423913f,-2.1626383553421018035579f,0.4579762384000223285341f,\
+0.0586823729814069730559f,-1.0035555258293702429739f,-0.1166748359615927543853f,\
+0.8530686378617126086610f,-0.5952441201854786756442f,-0.9104692400773028992944f,\
+-0.1222081949574846115869f,0.8743861864198215760879f,-1.7814901158856750740256f,\
+-0.1655434636829379024814f,1.2699075561256230049167f,3.1587625106365013749610f,\
+0.8610776754247619901861f,-0.0100004380673695478232f}
+
+#define CSOURCEI {0.9250286334648400998759f,0.1065362941212572023275f,-0.8122748012511081805442f,\
+2.9016509109873367400212f,-0.879282905363888867001f,-0.3325238972742790566350f,\
+1.2084799362120550725308f,0.2580513186266746861186f,-0.2529978784629969279507f,\
+1.6363224419507169660193f,0.3632057263498695842685f,0.3611017132584669053763f,\
+-1.2067543995469365292195f,-0.9261214746973902567362f,0.5500770410591231396324f,\
+0.3509274981930612380410f,-2.0620828383452867171854f,0.1301261656898765051160f,\
+-0.0829640021096160473757f,0.5497292800458170036748f,-1.586103376800369391120f,\
+1.1212128658770057487715f,-0.0802149047940418080671f,0.3400568097779858578456f,\
+0.5992917235464352287977f,1.2934484737369573714716f,-0.1770100915330515556345f,\
+-1.6783588206143511545321f,0.3877335362207995905770f,-0.3290626192650726866695f,\
+-0.7735806757117498211329f,1.4288193530454935675778f,-0.0608386450296815664562f,\
+0.2853217242027552558170f,-0.3091484421032868468160f,0.2351673955360732704012f,\
+0.8718242905301006873131f,0.9043814712183079196350f,0.4001603453209788274769f,\
+0.2902565872125924539837f,-0.1051862594971314374126f,-0.2633497801636938695502f,\
+0.5605928815183498503671f,-1.0135332223701010168071f,1.3762849538989350151041f,\
+0.0221113855817069056287f,0.296045052860035018405f,0.1323984531412186749222f,\
+-0.5439657044615130443432f,0.7105758550684416752219f,-1.988902172751357388947f,\
+0.8370036445008282033342f,-1.361827445493777322127f,-0.2908726176761944892668f,\
+0.7582058566306987268391f,2.2582687071318150451305f,-0.838995532132944754622f,\
+-0.0049693115325542529942f,0.8948621233346091274896f,-0.1820415696112677728102f,\
+0.0164009645281327567923f,0.4631157184786182656744f,1.2818863747394355634412f,\
+1.37735582155233560187f,-0.7661687725125947423521f,-0.8188017890741936533061f,\
+1.3941959606340814659120f,2.0721869090596265472470f,0.9329858014692479217800f,\
+-1.0023470169799657547571f,0.1352029091047084741195f,0.5763346694547388793239f,\
+-1.492034523395888490072f,-0.4804977288873880647557f,0.7911732889577677285686f,\
+0.1745293679511154827377f,0.0354831535332537570393f,-0.8628629256538601355331f,\
+0.1942834096659604437018f,1.3466596448020036191906f,0.3364543941938548110571f,\
+-1.109797124842869298078f,0.1809508886112952685821f,0.5725159396053964844242f,\
+0.6787472822917395287590f,1.4922528447187788369632f,-0.9855408452288743070824f,\
+2.0147405762642014437347f,-0.1974169216352719968821f,-0.2472797570908096820297f,\
+-0.3003777280233598800940f,-0.6957353172991608269982f,0.8954567399776292013769f,\
+0.0025734217968703923703f,1.2028191624106452373155f,-0.3976568161030914483334f,\
+-0.9486032699014914637559f,0.344203116731234826098f,-0.1282579491971870822020f,\
+0.2354837848969928981724f,-1.0123893486718691381299f,-0.1455435264750559176683f,\
+-0.0385439121492695893623f,0.2704776801120854501370f,0.9996348746916957628272f,\
+1.1879952493572987215487f,-0.1421627190737907164841f,-0.9134168336317867176177f,\
+-1.3273949616244651306118f,-0.2266260602581666450117f,0.0136941574262192684169f,\
+0.8667822397875659667932f,-0.8918524882230300931951f,0.5818810906621436629393f,\
+0.5786477410918646757665f,-1.2824019249961673416749f,-0.8858272202103619763491f,\
+1.49931415247364041576f,-0.3191008638398869501351f,-0.6302800825827241659738f,\
+-0.9307697616588104239099f,-0.2218962076254625825911f,0.5504657591791385362612f,\
+0.7937732776747626894931f,0.4530121091137990219089f,-0.5561836772913717474864f,\
+-0.0487810094749783207391f,1.0373690852013959240452f,-1.9605345216190741552964f,\
+-0.6318190008183720562940f,-0.2595506312908315571519f,1.6655693943633802511783f,\
+0.2643484753712377899326f,0.5166487752761181884154f,-1.7642021092407271787295f,\
+0.9519817124353935344772f,1.5941109627321103925368f,-0.3268346133298423716873f,\
+-0.8591341754919610274044f,-0.5067465121338621258928f,0.4012524027420211192307f,\
+-1.3781772559142455580883f,-1.0900200484217259511155f,0.7071849131547247591101f,\
+0.6311112492498477388736f,-1.5661486235109134401711f,-0.3037032596268335327139f,\
+-2.3928711979350367755615f,0.9280630230889591603116f,1.234345031017325400313f,\
+0.0245382276611107209841f,-1.7795591476102954331395f,-0.1457340296796875434016f,\
+-1.4175919090731374794245f,-1.0931645829165108629866f,0.0976120560124896369247f,\
+-0.4917932561715864236973f,0.3236361331498361360026f,-1.3493789441767958248164f,\
+-0.4975410901203008995353f,-0.5175498508985710843788f,1.9028534065523732277114f,\
+-1.0213015320689262654952f,0.7201673839470011939667f,-0.229479324750370056174f,\
+0.0507808834449509222120f,-0.6036524407661360003274f,-0.3189899214184117592907f,\
+0.8969390978377852485792f,0.0689550751790670851671f,-0.3842312216289716086948f,\
+-0.5817559662860881664059f,-1.4228206622942274339749f,-0.8055937171612096436846f,\
+-0.8761791574203163790457f,0.6999940081500163335804f,0.3592083211755666694032f,\
+-2.2759824091756848396528f,1.1126243656877470300515f,-1.490042708505755930659f,\
+-0.2517675074289520420479f,-0.4649616224894683735869f,-0.9304122891120238936224f,\
+-0.2780945839682648634827f,-1.186365868114249266796f,-1.0805465619847403058174f,\
+-0.2982113561322028982836f,-0.4608151973468663786804f,0.5142626215675811796046f,\
+-0.8962085262358048254328f,-1.8912922138922239057024f,1.5339839202719194322100f,\
+-1.0493592314888038341536f,1.5275565058768361126340f,-0.3000289995792813080300f,\
+-1.2901253199534357118949f,0.4517205659557054775455f,0.1925085892467791881533f,\
+0.4244705571771024699146f,1.1465794102472002258253f}
+
+#define CRESULTR {0.2881823261718455264635f,-1.2239148834349047323400f,-0.7845879395690421587162f,\
+1.7398908843418365854916f,0.6267968040978579846723f,-0.0069618200210163757799f,\
+-1.3647060336777470102021f,0.3067781755755824568688f,0.8879601142484547793288f,\
+-1.1408081118402808584733f,-1.0511217892257147532575f,-0.4630227853264242132703f,\
+-0.8052300885146775888401f,-1.0799054881923455528892f,-0.3673239873834487356774f,\
+-1.3895193771431015861140f,1.4748704381210364644517f,-0.4721815868535457205724f,\
+-0.0800715444386163321955f,0.7328675926305248111703f,1.1062012776691256821238f,\
+1.1578188890116758447135f,0.7250736097899580512305f,-0.7268209399811761395327f,\
+-1.020749615675486277055f,-0.7543891378811746761812f,0.1777916795470285138414f,\
+1.224903809672051702151f,-1.074529895353530717372f,0.6903548013878436639956f,\
+-0.4611640141379182988857f,0.933556473565831823613f,1.4531339378119088046049f,\
+1.1451427225776011908920f,-1.0686132863053487973559f,-0.1688483441440512822229f,\
+-0.1889456477264452038956f,0.5985578048499338166266f,0.6993236665323845357989f,\
+-0.4109810453160360754765f,0.4971360116983927213141f,0.3821580291233257486994f,\
+0.4128919091647823558233f,0.9758538921704605906271f,1.0346135696067118026065f,\
+-0.2478280180540722854587f,0.6216905071606976251886f,-0.0450118169844396301404f,\
+0.3340415020637265142156f,-0.4315313860868430495543f,1.3446595868643815840926f,\
+-1.4033414360880258620057f,0.8274220763035017300879f,-1.309144795084008494612f,\
+-1.3004176310924011605863f,1.4613978516551788811029f,0.4652521895005036212112f,\
+-0.3810083873666035292338f,-0.4305652750257212835194f,-1.0463819862831613693999f,\
+-0.0968555231163464591670f,-0.7621978211341690068181f,-1.0442639351316740370379f,\
+0.8551375533721097266238f,0.4624338658491132791895f,-0.2135461711123592121186f,\
+-0.9192783709328955499274f,1.406572519212488048268f,-0.5996917427163407365853f,\
+0.8472849136812159454024f,-0.0948718277212909494311f,-0.6635046470522460992925f,\
+1.102552918644890800337f,1.0241591511876448894469f,-1.1946095915247210150767f,\
+1.3012416677676885701231f,-0.860094399966521483414f,0.4848763007604853791932f,\
+0.7459402751068522352540f,0.9429407450799555112653f,-0.2932662625241302944978f,\
+0.8365772498525353428889f,0.4339900657778844039747f,-0.0520088659229247518567f,\
+0.540163948037489571874f,-1.5617045052623743650599f,-1.1990755672824380262398f,\
+1.6897714229424107834632f,-0.4304392780607278479188f,-0.7314935627224536940361f,\
+-0.2521660858364912494167f,-1.1139709472810304102808f,1.03593284093582016503f,\
+0.9879482215425008373444f,1.008898373366306833177f,-0.5387894626210441018088f,\
+1.0404295395317768591070f,-0.2970761763070669525533f,-1.1952939328908356309000f,\
+0.3857997224260597546319f,0.8038817262315489653446f,-0.5212531537640049394966f,\
+-0.3822389517390957225373f,0.3966495909859810709008f,-0.6230521638604892276092f,\
+-0.7692209701300163349202f,1.03425437487647720047f,-0.0946733232120821749378f,\
+1.0396309891046779938506f,0.0495385539831420876333f,0.6452562376798283150237f,\
+1.1985497422790862831476f,1.2458585900431864423865f,0.8349246161988523873276f,\
+0.5689579490080320933743f,-0.7806209699664544698905f,-1.5187452500641256403213f,\
+-1.0796802038517956390251f,0.9639374126836365297422f,1.1711728912763936794050f,\
+-0.362488012679416937711f,-0.0199872602643281528645f,-0.5128264059242761963020f,\
+0.8492028743473079011039f,0.1591587587129435210631f,0.3212111561314560104208f,\
+0.5775318673000989777577f,-0.8249558967503766160334f,-1.7154192273737123297650f,\
+0.9346304365709510175719f,-1.2804432024400131950870f,-1.1426657840798974952179f,\
+0.4703017265736584850977f,-0.9677493848474170157203f,-1.2320829767979621927054f,\
+0.4762683633703864716225f,-1.0444970147674126348392f,0.2072645201710894835578f,\
+-0.7498010260478793487238f,0.9188781401771745072082f,-0.4789588845434366026765f,\
+0.8476937452776511783270f,0.8895027647705600060135f,0.7682169660294876356588f,\
+0.2922093151936491217668f,-1.0429114806489117039945f,1.166492728893671504409f,\
+-1.8646253504096552688907f,-0.8923239533314403226782f,1.0666374040344190898821f,\
+-0.7669950473749445052363f,-1.3585386555510787776058f,-0.1491456224121993634490f,\
+1.354597929546794699007f,-1.4004360287243708960148f,0.9567139977921835791719f,\
+-0.1859618971982733570680f,0.0067522660769214690180f,-0.842830481930881947328f,\
+-0.0503539309377906904586f,-0.5389456072426579424928f,-1.2991753231583602623544f,\
+1.0064698858838660999737f,-0.7727166159011478185903f,-1.375918311051623987851f,\
+-0.5968365322787659854598f,0.4909328325978893903248f,0.0069327197759769939797f,\
+-0.4109069224660110153380f,-0.8305261099098545374275f,1.067766372332880076002f,\
+0.1364036525382384124061f,1.0185816452043403579353f,0.2263896344197315613211f,\
+0.7241797053868859190828f,-0.3310339119084142467386f,-0.4485953806654829345568f,\
+1.4637030484564286236804f,0.8062581119903107218505f,1.135230070733268981087f,\
+0.8486739138084887779101f,0.8869200257723099944940f,0.8304138989692378958196f,\
+0.4970805707137128659490f,-1.6189532479764259242927f,0.7536345887109229257916f,\
+0.0614297741451279438740f,-0.9217679644120017057318f,-0.1351912284135200204016f,\
+0.9344534227267771164804f,-1.3237759469951597690596f,-1.2409772949992454726953f,\
+-0.4266400610039619012426f,1.2242961173386468498592f,-1.3507787481217943259537f,\
+-0.7743193525686042910650f,1.0905655681187926830944f,1.869097852573508911078f,\
+0.8141159942263986870614f,-0.5353611933969746328188f}
+
+#define CRESULTI {1.0927665474832626291146f,0.0577041411945533808114f,-0.6605411939586326441898f,\
+1.4173928005937053153929f,-0.8196938376873322829042f,-0.3389699587748392084485f,\
+0.6182411929183926346809f,0.2489298772050817232238f,-0.1790179858054015138435f,\
+1.2497543779018556175942f,0.2282445233800083350673f,0.3316185520857942714557f,\
+-1.1178350760886399672955f,-0.5992404494636266454322f,0.5409431572062767257236f,\
+0.165426376161976390611f,-1.1122536593055589726475f,0.1171231329897951256580f,\
+-0.0827933061236485051682f,0.4436212447193593200190f,-1.2403328057018132568601f,\
+0.6960798868922111193314f,-0.0629757037081154352753f,0.2697689038111338311055f,\
+0.3922302209885859536342f,1.4842743869253867128322f,-0.1751428834182987837043f,\
+-1.13801740936157136375f,0.2394213509890497915134f,-0.2668464988788373237760f,\
+-0.7726426977316005473284f,1.3382415873096298319922f,-0.0269807302035863991185f,\
+0.1656312162752983929703f,-0.1911246952977092017356f,0.2339836780169318453115f,\
+1.0284310438096477824388f,0.8686878315011077322794f,0.3246111072217529036621f,\
+0.2706500543034189298908f,-0.0935407508346946525712f,-0.2477506860556301926390f,\
+0.5421539099371334158306f,-0.7327711559744070068945f,1.05214358953255682216f,\
+0.0214509576394467729732f,0.2493724089381304798163f,0.1326531466862980457311f,\
+-0.5409686898264083332322f,0.7065143938000820744705f,-1.3284854753780470648650f,\
+0.3984512917058077308141f,-1.5446072484052193463100f,-0.1469509150678137976431f,\
+0.3947301571210936610434f,1.461008167394748147316f,-0.8567501445560671280433f,\
+-0.0046292376134026641879f,0.9577036871573997300899f,-0.1140752778705255016112f,\
+0.0163250605343483005949f,0.3628386917181465332050f,0.9320951721399445277783f,\
+1.44423353597128478754f,-0.7628206936973814800140f,-0.9280966118664348840639f,\
+1.2849894108105837098321f,1.2792864989827095190122f,0.9061761299907579170210f,\
+-0.8122605612540356734286f,0.1350064725981316715586f,0.4883936062374085174120f,\
+-1.102637196793889051705f,-0.3106468603302708908487f,0.4543964386247798525886f,\
+0.0885735454738456329249f,0.0254706011136682855533f,-0.8796254633651946486239f,\
+0.151022627304807338655f,1.1452851102523748938466f,0.3283556388648877777392f,\
+-0.9434455972747952667845f,0.1659123702555805879300f,0.6086281726098896616151f,\
+0.631662047814702143356f,0.6431181331610840157254f,-0.5760553428914201301581f,\
+0.8026360136122261401681f,-0.1814351276467410234439f,-0.1944579368330171531554f,\
+-0.2953494745705410595704f,-0.4250058789202441067445f,0.599813865521373279499f,\
+0.0016830438518425523946f,0.8854731871017331723550f,-0.3534985427172745442448f,\
+-0.6383931728072353983805f,0.3358307199066276060861f,-0.0711733718807077142543f,\
+0.2207727851446303901639f,-0.8556718335996058577564f,-0.1281371029552695606224f,\
+-0.0358976629777693137524f,0.2532084228703710415687f,0.983986642358089413918f,\
+1.1345925939829912820755f,-0.0898559156199065373061f,-1.1416915329673189560822f,\
+-0.9870037974692073001748f,-0.2283270051627071806077f,0.0112664968061259064547f,\
+0.4998464672322767698986f,-0.4937534754955061888637f,0.4389132738737425154518f,\
+0.5191615917775272981416f,-1.330080589614465180759f,-0.3792401398168883108752f,\
+1.1512099997314479971067f,-0.2141264512433771194377f,-0.3645359117298094808746f,\
+-1.0609046855212507232125f,-0.2237132816089271170057f,0.5066458933231118288987f,\
+0.6114387233853804115569f,0.4637825784576218857147f,-0.5570387380565021695489f,\
+-0.0416532931678999865377f,0.8675730496349238762832f,-0.7521971544712148238787f,\
+-0.4444425039044248570974f,-0.1343255157657375076230f,1.3031888522890535675458f,\
+0.2398794824711508455461f,0.3501788639961876947737f,-1.2484148728039676790047f,\
+1.0223862780907517766593f,1.5114877336366283611113f,-0.3256639805152193312132f,\
+-0.7257147000802074421344f,-0.3563177118938634091450f,0.367466380314942664409f,\
+-1.5032253124394940879682f,-0.8731092741090689113292f,0.5703012583169800864269f,\
+0.6498833797759138164452f,-1.3804786941428137669874f,-0.1733188156619589748164f,\
+-0.8098487944615534450676f,0.7091099644264757806411f,0.8627806630820323841036f,\
+0.0187490818204580703132f,-1.0316116049359651540840f,-0.1446317495535741626256f,\
+-0.7559013344655626243096f,-0.5329078157992787057040f,0.0653983668850169619358f,\
+-0.5045465362161873912328f,0.3295621318182701542376f,-1.3711989596398608259875f,\
+-0.5200355557922887728139f,-0.4673488331710942134123f,1.3098786184351398631520f,\
+-0.7189565120188516900157f,0.580208200526596162838f,-0.1091990841314347954194f,\
+0.0429221122996483323009f,-0.5675416667058814645941f,-0.3246554520854594838575f,\
+0.9723329710924543123340f,0.0505316478341986258238f,-0.2385123070932486100126f,\
+-0.6142986606043344677275f,-1.1409813222703388824186f,-0.9033119064286492250204f,\
+-0.7584587763797572268487f,0.7252421018090512427889f,0.3319280479688784257775f,\
+-1.5464687515566899467245f,0.9763347698321626078055f,-1.0511809923664583443781f,\
+-0.1831638202759971745248f,-0.3336438319634690841120f,-0.7499286125479456277532f,\
+-0.2495331996617490000201f,-0.4693439688376106477818f,-0.9839213631021112016484f,\
+-0.3022296870844187743899f,-0.3220832096726037319101f,0.5347182539371353460211f,\
+-0.6559994287878105900802f,-1.2228456605235495935347f,0.9588662882096035122714f,\
+-1.2891530456629314294048f,0.9731441796186428572213f,-0.1461840118371629804184f,\
+-1.3757278523698810435150f,0.2762809284691948308321f,0.0580458636704428015962f,\
+0.3198225937522309325622f,1.5529789344620548163789f}
+
+void sasinhsTest(void) {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=sasinhs(in[i]);
+ assert ( ( (fabs(out-res[i])) / (fabs(out)) ) <1e-6);
+ }
+}
+
+void casinhsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in, out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out = casinhs(in);
+
+ assert( ( ( fabs( creals(out)-resR[i] ) ) / (fabs(creals(out)) ) ) <1e-6);
+ assert( ( ( fabs( cimags(out)-resI[i] ) ) / (fabs(cimags(out)) ) ) <1e-6);
+ }
+}
+
+void sasinhaTest(void) {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out[200];
+ int i=0;
+
+ sasinha(in,200,out);
+ for (i=0;i<200;i++){
+ assert ( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <1e-6);
+ }}
+
+void casinhaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in[200], out[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(inR[i],inI[i]);
+ }
+ casinha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( ( fabs( creals(out[i])-resR[i] ) ) / (fabs(creals(out[i])) ) ) <1e-6);
+ assert( ( ( fabs( cimags(out[i])-resI[i] ) ) / (fabs(cimags(out[i])) ) ) <1e-6);
+ }
+}
+
+int testAsinh(void) {
+ printf("\n>>>> Double Hyperbolic ArcSine Tests\n");
+ sasinhsTest();
+ casinhsTest();
+ sasinhaTest();
+ casinhaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testAsinh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/zasinha.c b/2.3-1/src/c/elementaryFunctions/asinh/zasinha.c
new file mode 100644
index 00000000..4ce24bd8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/zasinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "asinh.h"
+
+void zasinha(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zasinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/asinh/zasinhs.c b/2.3-1/src/c/elementaryFunctions/asinh/zasinhs.c
new file mode 100644
index 00000000..9322b04e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/asinh/zasinhs.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula asinh(z) = -i asin(i z)
+*/
+
+#include "asinh.h"
+#include "asin.h"
+
+doubleComplex zasinhs(doubleComplex z) {
+ doubleComplex i_z = DoubleComplex(-zimags(z), zreals(z));
+ doubleComplex asin_i_z = zasins(i_z);
+
+ return DoubleComplex(zimags(asin_i_z), -zreals(asin_i_z));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/Makefile.am b/2.3-1/src/c/elementaryFunctions/atan/Makefile.am
new file mode 100644
index 00000000..5c090404
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/Makefile.am
@@ -0,0 +1,67 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAtan_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAtan.la
+
+libAtan_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = satans.c \
+ datans.c \
+ catans.c \
+ zatans.c \
+ satana.c \
+ datana.c \
+ catana.c \
+ zatana.c
+
+HEAD = ../includes/atan.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatAtan testDoubleAtan
+
+TESTS = testFloatAtan testDoubleAtan
+
+#
+# -*- Arc tangeant Tests -*-
+#
+testFloatAtan_SOURCES = testAtan.h testFloatAtan.c
+testFloatAtan_CFLAGS = $(check_INCLUDES)
+testFloatAtan_LDADD = $(check_LDADD)
+
+testDoubleAtan_SOURCES = testAtan.h testDoubleAtan.c
+testDoubleAtan_CFLAGS = $(check_INCLUDES)
+testDoubleAtan_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/atan/Makefile.in b/2.3-1/src/c/elementaryFunctions/atan/Makefile.in
new file mode 100644
index 00000000..abb85ad4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/Makefile.in
@@ -0,0 +1,803 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatAtan$(EXEEXT) testDoubleAtan$(EXEEXT)
+TESTS = testFloatAtan$(EXEEXT) testDoubleAtan$(EXEEXT)
+subdir = src/c/elementaryFunctions/atan
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAtan_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAtan_la-satans.lo libAtan_la-datans.lo \
+ libAtan_la-catans.lo libAtan_la-zatans.lo libAtan_la-satana.lo \
+ libAtan_la-datana.lo libAtan_la-catana.lo libAtan_la-zatana.lo
+am_libAtan_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAtan_la_OBJECTS = $(am_libAtan_la_OBJECTS)
+libAtan_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAtan_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleAtan_OBJECTS = testDoubleAtan-testDoubleAtan.$(OBJEXT)
+testDoubleAtan_OBJECTS = $(am_testDoubleAtan_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleAtan_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleAtan_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleAtan_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatAtan_OBJECTS = testFloatAtan-testFloatAtan.$(OBJEXT)
+testFloatAtan_OBJECTS = $(am_testFloatAtan_OBJECTS)
+testFloatAtan_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatAtan_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatAtan_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAtan_la_SOURCES) $(testDoubleAtan_SOURCES) \
+ $(testFloatAtan_SOURCES)
+DIST_SOURCES = $(libAtan_la_SOURCES) $(testDoubleAtan_SOURCES) \
+ $(testFloatAtan_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAtan_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAtan.la
+libAtan_la_SOURCES = $(HEAD) $(SRC)
+SRC = satans.c \
+ datans.c \
+ catans.c \
+ zatans.c \
+ satana.c \
+ datana.c \
+ catana.c \
+ zatana.c
+
+HEAD = ../includes/atan.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Arc tangeant Tests -*-
+#
+testFloatAtan_SOURCES = testAtan.h testFloatAtan.c
+testFloatAtan_CFLAGS = $(check_INCLUDES)
+testFloatAtan_LDADD = $(check_LDADD)
+testDoubleAtan_SOURCES = testAtan.h testDoubleAtan.c
+testDoubleAtan_CFLAGS = $(check_INCLUDES)
+testDoubleAtan_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/atan/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/atan/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAtan.la: $(libAtan_la_OBJECTS) $(libAtan_la_DEPENDENCIES)
+ $(libAtan_la_LINK) -rpath $(pkglibdir) $(libAtan_la_OBJECTS) $(libAtan_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleAtan$(EXEEXT): $(testDoubleAtan_OBJECTS) $(testDoubleAtan_DEPENDENCIES)
+ @rm -f testDoubleAtan$(EXEEXT)
+ $(testDoubleAtan_LINK) $(testDoubleAtan_OBJECTS) $(testDoubleAtan_LDADD) $(LIBS)
+testFloatAtan$(EXEEXT): $(testFloatAtan_OBJECTS) $(testFloatAtan_DEPENDENCIES)
+ @rm -f testFloatAtan$(EXEEXT)
+ $(testFloatAtan_LINK) $(testFloatAtan_OBJECTS) $(testFloatAtan_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-catana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-catans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-datana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-datans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-satana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-satans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-zatana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan_la-zatans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleAtan-testDoubleAtan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatAtan-testFloatAtan.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAtan_la-satans.lo: satans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-satans.lo -MD -MP -MF $(DEPDIR)/libAtan_la-satans.Tpo -c -o libAtan_la-satans.lo `test -f 'satans.c' || echo '$(srcdir)/'`satans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-satans.Tpo $(DEPDIR)/libAtan_la-satans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='satans.c' object='libAtan_la-satans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-satans.lo `test -f 'satans.c' || echo '$(srcdir)/'`satans.c
+
+libAtan_la-datans.lo: datans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-datans.lo -MD -MP -MF $(DEPDIR)/libAtan_la-datans.Tpo -c -o libAtan_la-datans.lo `test -f 'datans.c' || echo '$(srcdir)/'`datans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-datans.Tpo $(DEPDIR)/libAtan_la-datans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='datans.c' object='libAtan_la-datans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-datans.lo `test -f 'datans.c' || echo '$(srcdir)/'`datans.c
+
+libAtan_la-catans.lo: catans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-catans.lo -MD -MP -MF $(DEPDIR)/libAtan_la-catans.Tpo -c -o libAtan_la-catans.lo `test -f 'catans.c' || echo '$(srcdir)/'`catans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-catans.Tpo $(DEPDIR)/libAtan_la-catans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='catans.c' object='libAtan_la-catans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-catans.lo `test -f 'catans.c' || echo '$(srcdir)/'`catans.c
+
+libAtan_la-zatans.lo: zatans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-zatans.lo -MD -MP -MF $(DEPDIR)/libAtan_la-zatans.Tpo -c -o libAtan_la-zatans.lo `test -f 'zatans.c' || echo '$(srcdir)/'`zatans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-zatans.Tpo $(DEPDIR)/libAtan_la-zatans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zatans.c' object='libAtan_la-zatans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-zatans.lo `test -f 'zatans.c' || echo '$(srcdir)/'`zatans.c
+
+libAtan_la-satana.lo: satana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-satana.lo -MD -MP -MF $(DEPDIR)/libAtan_la-satana.Tpo -c -o libAtan_la-satana.lo `test -f 'satana.c' || echo '$(srcdir)/'`satana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-satana.Tpo $(DEPDIR)/libAtan_la-satana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='satana.c' object='libAtan_la-satana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-satana.lo `test -f 'satana.c' || echo '$(srcdir)/'`satana.c
+
+libAtan_la-datana.lo: datana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-datana.lo -MD -MP -MF $(DEPDIR)/libAtan_la-datana.Tpo -c -o libAtan_la-datana.lo `test -f 'datana.c' || echo '$(srcdir)/'`datana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-datana.Tpo $(DEPDIR)/libAtan_la-datana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='datana.c' object='libAtan_la-datana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-datana.lo `test -f 'datana.c' || echo '$(srcdir)/'`datana.c
+
+libAtan_la-catana.lo: catana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-catana.lo -MD -MP -MF $(DEPDIR)/libAtan_la-catana.Tpo -c -o libAtan_la-catana.lo `test -f 'catana.c' || echo '$(srcdir)/'`catana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-catana.Tpo $(DEPDIR)/libAtan_la-catana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='catana.c' object='libAtan_la-catana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-catana.lo `test -f 'catana.c' || echo '$(srcdir)/'`catana.c
+
+libAtan_la-zatana.lo: zatana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -MT libAtan_la-zatana.lo -MD -MP -MF $(DEPDIR)/libAtan_la-zatana.Tpo -c -o libAtan_la-zatana.lo `test -f 'zatana.c' || echo '$(srcdir)/'`zatana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan_la-zatana.Tpo $(DEPDIR)/libAtan_la-zatana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zatana.c' object='libAtan_la-zatana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan_la_CFLAGS) $(CFLAGS) -c -o libAtan_la-zatana.lo `test -f 'zatana.c' || echo '$(srcdir)/'`zatana.c
+
+testDoubleAtan-testDoubleAtan.o: testDoubleAtan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtan_CFLAGS) $(CFLAGS) -MT testDoubleAtan-testDoubleAtan.o -MD -MP -MF $(DEPDIR)/testDoubleAtan-testDoubleAtan.Tpo -c -o testDoubleAtan-testDoubleAtan.o `test -f 'testDoubleAtan.c' || echo '$(srcdir)/'`testDoubleAtan.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAtan-testDoubleAtan.Tpo $(DEPDIR)/testDoubleAtan-testDoubleAtan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAtan.c' object='testDoubleAtan-testDoubleAtan.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtan_CFLAGS) $(CFLAGS) -c -o testDoubleAtan-testDoubleAtan.o `test -f 'testDoubleAtan.c' || echo '$(srcdir)/'`testDoubleAtan.c
+
+testDoubleAtan-testDoubleAtan.obj: testDoubleAtan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtan_CFLAGS) $(CFLAGS) -MT testDoubleAtan-testDoubleAtan.obj -MD -MP -MF $(DEPDIR)/testDoubleAtan-testDoubleAtan.Tpo -c -o testDoubleAtan-testDoubleAtan.obj `if test -f 'testDoubleAtan.c'; then $(CYGPATH_W) 'testDoubleAtan.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAtan.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAtan-testDoubleAtan.Tpo $(DEPDIR)/testDoubleAtan-testDoubleAtan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAtan.c' object='testDoubleAtan-testDoubleAtan.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtan_CFLAGS) $(CFLAGS) -c -o testDoubleAtan-testDoubleAtan.obj `if test -f 'testDoubleAtan.c'; then $(CYGPATH_W) 'testDoubleAtan.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAtan.c'; fi`
+
+testFloatAtan-testFloatAtan.o: testFloatAtan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtan_CFLAGS) $(CFLAGS) -MT testFloatAtan-testFloatAtan.o -MD -MP -MF $(DEPDIR)/testFloatAtan-testFloatAtan.Tpo -c -o testFloatAtan-testFloatAtan.o `test -f 'testFloatAtan.c' || echo '$(srcdir)/'`testFloatAtan.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAtan-testFloatAtan.Tpo $(DEPDIR)/testFloatAtan-testFloatAtan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAtan.c' object='testFloatAtan-testFloatAtan.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtan_CFLAGS) $(CFLAGS) -c -o testFloatAtan-testFloatAtan.o `test -f 'testFloatAtan.c' || echo '$(srcdir)/'`testFloatAtan.c
+
+testFloatAtan-testFloatAtan.obj: testFloatAtan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtan_CFLAGS) $(CFLAGS) -MT testFloatAtan-testFloatAtan.obj -MD -MP -MF $(DEPDIR)/testFloatAtan-testFloatAtan.Tpo -c -o testFloatAtan-testFloatAtan.obj `if test -f 'testFloatAtan.c'; then $(CYGPATH_W) 'testFloatAtan.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAtan.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAtan-testFloatAtan.Tpo $(DEPDIR)/testFloatAtan-testFloatAtan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAtan.c' object='testFloatAtan-testFloatAtan.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtan_CFLAGS) $(CFLAGS) -c -o testFloatAtan-testFloatAtan.obj `if test -f 'testFloatAtan.c'; then $(CYGPATH_W) 'testFloatAtan.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAtan.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/atan/catana.c b/2.3-1/src/c/elementaryFunctions/atan/catana.c
new file mode 100644
index 00000000..d6335cd8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/catana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atan.h"
+
+void catana(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = catans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/catans.c b/2.3-1/src/c/elementaryFunctions/atan/catans.c
new file mode 100644
index 00000000..d2081181
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/catans.c
@@ -0,0 +1,249 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ PURPOSE
+ watan compute the arctangent of a complex number
+ y = yr + i yi = atan(x), x = xr + i xi
+
+ CALLING LIST / PARAMETERS
+ subroutine watan(xr,xi,yr,yi)
+ double precision xr,xi,yr,yi
+
+ xr,xi: real and imaginary parts of the complex number
+ yr,yi: real and imaginary parts of the result
+ yr,yi may have the same memory cases than xr et xi
+
+ COPYRIGHT (C) 2001 Bruno Pincon and Lydia van Dijk
+ Written by Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr> so
+ as to get more precision. Also to fix the
+ behavior at the singular points and at the branch cuts.
+ Polished by Lydia van Dijk
+ <lvandijk@hammersmith-consulting.com>
+
+ CHANGES : - (Bruno on 2001 May 22) for ysptrk use a
+ minimax polynome to enlarge the special
+ evaluation zone |s| < SLIM. Also rename
+ this function as lnp1m1.
+ - (Bruno on 2001 June 7) better handling
+ of spurious over/underflow ; remove
+ the call to pythag ; better accuracy
+ in the real part for z near +-i
+
+ EXTERNALS FUNCTIONS
+ dlamch
+ lnp1m1 (at the end of this file)
+
+ ALGORITHM : noting z = a + i*b, we have:
+ Z = yr + yi*b = arctan(z) = (i/2) * log( (i+z)/(i-z) )
+
+ This function has two branch points at +i and -i and the
+ chosen branch cuts are the two half-straight lines
+ D1 = [i, i*oo) and D2 = (-i*oo, i]. The function is then
+ analytic in C \ (D1 U D2)).
+
+ From the definition it follows that:
+
+ yr = 0.5 Arg ( (i+z)/(i-z) ) (1)
+ yi = 0.5 log (|(i+z)/(i-z)|) (2)
+
+ so lim (z -> +- i) yr = undefined (and Nan is logical)
+ lim (z -> +i) yi = +oo
+ lim (z -> -i) yi = -oo
+
+ The real part of arctan(z) is discontinuous across D1 and D2
+ and we impose the following definitions:
+ if imag(z) > 1 then
+ Arg(arctan(z)) = pi/2 (=lim real(z) -> 0+)
+ if imag(z) < 1 then
+ Arg(arctan(z)) = -pi/2 (=lim real(z) -> 0-)
+
+
+ Basic evaluation: if we write (i+z)/(i-z) using
+ z = a + i*b, we get:
+
+ i+z 1-(a**2+b**2) + i*(2a)
+ --- = ----------------------
+ i-z a**2 + (1-b)**2
+
+ then, with r2 = |z|^2 = a**2 + b**2 :
+
+ yr = 0.5 * Arg(1-r2 + (2*a)*i)
+ = 0.5 * atan2(2a, (1-r2)) (3)
+
+ This formula is changed when r2 > RMAX (max pos float)
+ and also when |1-r2| and |a| are near 0 (see comments
+ in the code).
+
+ After some math:
+
+ yi = 0.25 * log( (a**2 + (b + 1)**2) /
+ (a**2 + (b - 1)**2) ) (4)
+
+ Evaluation for "big" |z|
+ ------------------------
+
+ If |z| is "big", the direct evaluation of yi by (4) may
+ suffer of innaccuracies and of spurious overflow. Noting
+ that s = 2 b / (1 + |z|**2), we have:
+
+ yi = 0.25 log ( (1 + s)/(1 - s) ) (5)
+
+ 3 5
+ yi = 0.25*( 2 * ( s + 1/3 s + 1/5 s + ... ))
+
+ yi = 0.25 * lnp1m1(s) if |s| < SLIM
+
+ So if |s| is less than SLIM we switch to a special
+ evaluation done by the function lnp1m1. The
+ threshold value SLIM is choosen by experiment
+ (with the Pari-gp software). For |s|
+ "very small" we used a truncated taylor dvp,
+ else a minimax polynome (see lnp1m1).
+
+ To avoid spurious overflows (which result in spurious
+ underflows for s) in computing s with s= 2 b / (1 + |z|**2)
+ when |z|^2 > RMAX (max positive float) we use :
+
+ s = 2d0 / ( (a/b)*a + b )
+
+ but if |b| = Inf this formula leads to NaN when
+ |a| is also Inf. As we have :
+
+ |s| <= 2 / |b|
+
+ we impose simply : s = 0 when |b| = Inf
+
+ Evaluation for z very near to i or -i:
+ --------------------------------------
+ Floating point numbers of the form a+i or a-i with 0 <
+ a**2 < tiny (approximately 1d-308) may lead to underflow
+ (i.e., a**2 = 0) and the logarithm will break formula (4).
+ So we switch to the following formulas:
+
+ If b = +-1 and |a| < sqrt(tiny) approximately 1d-150 (say)
+ then (by using that a**2 + 4 = 4 in machine for such a):
+
+ yi = 0.5 * log( 2/|a| ) for b=1
+
+ yi = 0.5 * log( |a|/2 ) for b=-1
+
+ finally: yi = 0.5 * sign(b) * log( 2/|a| )
+ yi = 0.5 * sign(b) * (log(2) - log(|a|)) (6)
+
+ The last trick is to avoid overflow for |a|=tiny! In fact
+ this formula may be used until a**2 + 4 = 4 so that the
+ threshold value may be larger.
+*/
+
+#include <math.h>
+#include "atan.h"
+#include "abs.h"
+#include "lnp1m1.h"
+#include "lapack.h"
+
+#define _sign(a, b) b >=0 ? a : -a
+
+floatComplex catans(floatComplex z) {
+ static float sSlim = 0.2f;
+ /* .
+ ** / \ WARNING : this algorithm was based on double precision
+ ** / ! \ using float truncate the value to 0.
+ ** `----'
+ **
+ ** static float sAlim = 1E-150f;
+ */
+ static float sAlim = 0.0f;
+ static float sTol = 0.3f;
+ static float sLn2 = 0.6931471805599453094172321f;
+
+ float RMax = (float) getOverflowThreshold();
+ float Pi_2 = 2.0f * satans(1);
+
+ float _inReal = creals(z);
+ float _inImg = cimags(z);
+ float _outReal = 0;
+ float _outImg = 0;
+
+ /* Temporary variables */
+ float R2 = 0;
+ float S = 0;
+
+
+ if(_inImg == 0)
+ {
+ _outReal = satans(_inReal);
+ _outImg = 0;
+ }
+ else
+ {
+ R2 = _inReal * _inReal + _inImg * _inImg; /* Oo */
+ if(R2 > RMax)
+ {
+ if( dabss(_inImg) > RMax)
+ S = 0;
+ else
+ S = 1.0f / (((0.5f * _inReal) / _inImg) * _inReal + 0.5f * _inImg );
+ }
+ else
+ S = (2 * _inImg) / (1+R2);
+
+ if(dabss(S) < sSlim)
+ {
+ /*
+ s is small: |s| < SLIM <=> |z| outside the following disks:
+ D+ = D(center = [0; 1/slim], radius = sqrt(1/slim**2 - 1)) if b > 0
+ D- = D(center = [0; -1/slim], radius = sqrt(1/slim**2 - 1)) if b < 0
+ use the special evaluation of log((1+s)/(1-s)) (5)
+ */
+ _outImg = slnp1m1s(S) * 0.25f;
+ }
+ else
+ {
+ if(sabss(S) == 1 && sabss(_inReal) <= sAlim)
+ {
+ /* |s| >= SLIM => |z| is inside D+ or D- */
+ _outImg = _sign(0.5f,_inImg) * ( sLn2 - logf(sabss(_inReal)));
+ }
+ else
+ {
+ _outImg = 0.25f * logf((powf(_inReal,2) + powf((_inImg + 1.0f),2)) / (powf(_inReal,2) + powf((_inImg - 1.0f),2)));
+ }
+ }
+ if(_inReal == 0)
+ {/* z is purely imaginary */
+ if( dabss(_inImg) > 1)
+ {/* got sign(b) * pi/2 */
+ _outReal = _sign(1, _inImg) * Pi_2;
+ }
+ else if( dabss(_inImg) == 1)
+ {/* got a Nan with 0/0 */
+ _outReal = (_inReal - _inReal) / (_inReal - _inReal); /* Oo */
+ }
+ else
+ _outReal = 0;
+ }
+ else if(R2 > RMax)
+ {/* _outImg is necessarily very near sign(a)* pi/2 */
+ _outReal = _sign(1, _inReal) * Pi_2;
+ }
+ else if(sabss(1 - R2) + sabss(_inReal) <= sTol)
+ {/* |b| is very near 1 (and a is near 0) some cancellation occur in the (next) generic formula */
+ _outReal = 0.5f * atan2f(2.0f * _inReal, (1.0f - _inImg) * (1.0f + _inImg) - powf(_inReal,2.0f));
+ }
+ else
+ _outReal = 0.5f * atan2f(2.0f * _inReal, 1.0f - R2);
+ }
+
+ return FloatComplex(_outReal, _outImg);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/datana.c b/2.3-1/src/c/elementaryFunctions/atan/datana.c
new file mode 100644
index 00000000..9b1d9c94
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/datana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atan.h"
+
+void datana(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = datans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/datans.c b/2.3-1/src/c/elementaryFunctions/atan/datans.c
new file mode 100644
index 00000000..11785c04
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/datans.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atan.h"
+
+double datans(double x)
+{
+ return (atan(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/satana.c b/2.3-1/src/c/elementaryFunctions/atan/satana.c
new file mode 100644
index 00000000..639c6f58
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/satana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atan.h"
+
+void satana(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = satans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/satans.c b/2.3-1/src/c/elementaryFunctions/atan/satans.c
new file mode 100644
index 00000000..5c7badee
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/satans.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atan.h"
+
+float satans(float x) {
+ return (atanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/testAtan.h b/2.3-1/src/c/elementaryFunctions/atan/testAtan.h
new file mode 100644
index 00000000..86ba100a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/testAtan.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTATAN_H_
+#define _TESTATAN_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "atan.h"
+#include "constant.h"
+
+void satansTest(void);
+
+void satanaTest(void);
+
+void catansTest(void);
+
+void catanaTest(void);
+
+void datansTest(void);
+
+void datanaTest(void);
+
+void zatansTest(void);
+
+void zatanaTest(void);
+
+int testAtan(void);
+
+#endif /* !_TESTATAN_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/atan/testDoubleAtan.c b/2.3-1/src/c/elementaryFunctions/atan/testDoubleAtan.c
new file mode 100644
index 00000000..85ef1087
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/testDoubleAtan.c
@@ -0,0 +1,496 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testAtan.h"
+
+#define SOURCE {0.2271646957046519754719,0.0509554588447201708967,1.85687282969809008826,\
+-0.0600149264751901750925,0.1154209251583080408921,0.3931023811137128731730,\
+-0.3192353063868129114944,-0.1509983292012369027191,-0.3971164405532471297633,\
+-0.4879179365092389808467,0.8039704485327389127391,-1.6086183006520318183874,\
+-1.4550051558571557297483,-2.0613539298303464875062,2.3614638061462338569640,\
+-1.1480101088176024592968,-0.2658609898928261938700,1.5427739450302764279144,\
+0.7423335722389889923534,0.3296187860375025535653,0.8154893385384427428875,\
+-0.7055736212996815970300,0.2819847871866195676560,0.3955156539663013948172,\
+-1.0216483261612141486552,-0.9217285194529017955389,0.1388701122197689430404,\
+0.2561008611862776729318,0.9488840790776944533746,-0.6033504831579518112861,\
+-1.255847241084065313288,-1.5093582375924872174267,-0.2071228671170260715595,\
+-0.3992159361232490155658,1.1415777038585108726920,1.2096296402394912661293,\
+1.2000346264198469281581,0.7648344037454491983752,0.5126417298496636076877,\
+-0.6005237850264322219118,-2.2808601123468448257370,-1.0478316411512684780405,\
+0.3987387706615069249416,-0.7901557685645255180162,0.9472076517346639246142,\
+1.2552561019596721880731,0.4826393798173508331573,-1.9230607741483070061150,\
+0.4005546162223627693066,0.1739168390171661471300,-0.0825727057882147952306,\
+0.8203738818332056981220,0.9228038015421474726807,0.4570111559683089907935,\
+0.9219829463190309937204,1.604104528474896707024,-0.7201236539398426783620,\
+0.6869793119903724321063,-1.3399970213280150144186,0.6385085849830633986102,\
+-2.1392676796592846599765,0.3031216472852934495918,1.4731483222685206602165,\
+-0.6666106701273177836953,2.5253251451367195735,-0.3387226520606179125394,\
+0.1099263677503663910739,0.2055796316301525261672,0.4180157426427644207223,\
+-0.5676554981767482077615,0.1457986457557736703627,-1.887021345850510067876,\
+-2.0255226332731517402408,-1.5021973207858168031237,-0.1565213082415607970255,\
+1.792895025421787247311,0.9902819037203779428680,-1.3877868870664777922741,\
+-1.9114516712610110094062,-0.1241624780676525430234,-0.1512289550370426727266,\
+1.0440663453119916059819,0.8275748256509259936919,0.9453274386638104154201,\
+0.8371330563424048687438,0.7021707191099652023425,-1.06501992349112173386,\
+0.0584382761085656052269,0.3908208204693481846448,0.1507745763925768811564,\
+1.0041017891872929812536,-1.2313120848428102949157,0.3394895696418271380246,\
+-0.0827142520512850892844,0.6446222176264210235175,-1.4935026770981445487507,\
+-0.8052775249062644746800,-0.5748653112322126279565,0.9754979932482783500092,\
+-2.2884524191498907264020,2.022987266935787342703,0.1637454282369502356342,\
+0.5475744092801727580522,-0.8932610448161549809853,-1.2797351399265011195894,\
+0.1118201613432585478369,-0.9620980829388734445473,0.3643849907609559291011,\
+-0.6874188098904436827752,-1.217541476664303568000,-0.5294220756831705676504,\
+-0.5958966870065123266897,0.1130069370904074471662,1.3982224083465000230575,\
+-1.0698899503771839292199,-0.4886124217435617311800,-1.3658513358172643670230,\
+0.7879963184644042106797,-1.4375620975102927356915,-0.4139225629147579854639,\
+0.4724629049642866118752,1.3786020791121860185058,-0.1818007311019581573319,\
+-0.1220915022718044445904,-2.1432379005797042026416,-0.8715288727031362814301,\
+1.7328275421264391908949,0.0746395063981880602100,0.9478227559099661192477,\
+-0.6746643568348875685814,-1.12189978973121218253,0.7712825781700975991129,\
+0.7878967433781322027286,-0.114954127571938721775,-0.8797100720757337066757,\
+0.3945983137523260686486,-0.1335061206135170208675,-0.8812942795785859706470,\
+0.9678256351883146590964,-1.2184863124466103201371,0.2811177412486541848935,\
+0.9039980069833579712224,-0.8586130195545335075380,-0.9119525776637865677188,\
+0.7834023749729661645347,-1.8588322045751330957586,0.9413946838303350883592,\
+-0.6013167449649100548825,0.7116576086154465796696,0.1856739618227061516809,\
+-2.4025809662081938355982,-1.1900189182655975805858,0.4811625406314723463197,\
+0.2175387195999395339996,-0.0380853618830928608574,-0.6838145482543566133771,\
+-1.5179336348870946515888,-1.718734246002084020688,-0.5464611700109887060250,\
+0.7723526959000743818962,0.3006795138383335785903,1.4291868716265472283311,\
+-0.0677166634975557846232,0.0573956162401944233742,0.1830487012206095109867,\
+0.6989722492840018119864,0.1910038834963114218191,0.2306826823577726726100,\
+-0.2565102919971545825106,-0.3420573662934773273570,-0.0978166804483409507709,\
+0.1422536753322360680851,0.5435939242933658377410,-0.3468100829076145585894,\
+0.4660640367220392210612,0.8993729143853705920719,0.7600191222869452367661,\
+0.8968829064436780740266,0.5805771807617583490924,-0.2307843851109470378891,\
+0.5165770205506754475522,0.8824788500189956197417,-0.7969387348104061130627,\
+-1.8168722946703086407183,1.5190242407155258863583,-0.8149773729875190442229,\
+2.4028228775031306163612,0.4982657796195523181026,0.2226740315197290043248,\
+0.1768897379163425209736,0.3603060382424789764855,0.3218716686921767045071,\
+-1.192570046506437719813,-0.1122386313819233177869,-2.0287975179488202392974,\
+0.100288454133301133120,-0.9179783877737051067669,-1.1999331406575297620520,\
+0.7483478159755958536437,2.2060613717090746810356}
+
+#define RESULT {0.2233738732437201557346,0.0509114261721980362885,1.0767942567911201745545,\
+-0.0599430280405672463728,0.1149124379797051148655,0.3745460477695387035979,\
+-0.3090091280795300709983,-0.1498661654051850200542,-0.3780180809438991595961,\
+-0.4539353243495501954996,0.6771572627749745665326,-1.0146085369409014731445,\
+-0.9686564923933993487282,-1.1191250002845629651915,1.1702255762215818535310,\
+-0.8541951038511210736459,-0.2598500531232013632810,0.9956994243583069392756,\
+0.6385765127412353914238,0.3184037447477280347030,0.6841145592833487443230,\
+-0.6144568631857774132499,0.2748482455938721091826,0.3766345938432117956829,\
+-0.7961060093123013547967,-0.7446909349913972686608,0.1379876022907993438071,\
+0.2507123565043022361820,0.759175872898178005777,-0.5428794496736766284073,\
+-0.89833074078511021554,-0.9856607896834306270506,-0.2042349952101077392719,\
+-0.3798302772852411579585,0.8514111742492602719068,0.8799860018302214648145,\
+0.8760722415122048634117,0.6529277236314812160600,0.4737097703113398172725,\
+-0.5408045473230975730417,-1.1576046419742331838876,-0.8087511308495316519895,\
+0.3794186378049814734048,-0.6687094713589172290114,0.7582929808049961861727,\
+0.8981012978260718426782,0.4496629050128420623800,-1.0912735975391061327144,\
+0.3809844030879972476278,0.1721944986308187042212,-0.0823858026410947269502,\
+0.6870411688329144395126,0.7452719880215435965809,0.4286690862084140407617,\
+0.7448284765591709488675,1.0133478453990099055204,-0.6241044852011972121630,\
+0.6019336895450897451099,-0.9296864924479115721567,0.5682544332615881987891,\
+-1.1335263715873262757583,0.2943182248013878621329,0.9744281865108882501048,\
+-0.5879638357107155322012,1.1937528186152712716961,-0.3265930739728566956082,\
+0.1094867742408287547562,0.2027547884149371593132,0.3959400774109990694960,\
+-0.5162971747333449101802,0.1447785328438968288634,-1.0834879385306221966090,\
+-1.112201615701992940544,-0.98346913687842862917,-0.1552615733221418270471,\
+1.062017052786182524926,0.7805154284284491206236,-0.9463968404701921244282,\
+-1.088790816976063835497,-0.1235302727421704604982,-0.1500916423979053448967,\
+0.8069530021779800499360,0.6913301738780865957068,0.7573010048408638228423,\
+0.6969765492354944580455,0.6121813376326975530972,-0.8168741064761906311986,\
+0.0583718892203711620104,0.3725683317450820819516,0.1496473933205103579169,\
+0.7874448575733706823243,-0.8886955789071054878647,0.3272808967598674345645,\
+-0.0825263887088810432768,0.5725854110105892402771,-0.980788536566781998793,\
+-0.6779506710306395511623,-0.5217330517396027156352,0.772995847351621967469,\
+-1.1588253401537096376472,1.1117042516684423337,0.1623050519698593929796,\
+0.5009790459791051420169,-0.7290794216990050813365,-0.9074929345625200038938,\
+0.111357569834535111153,-0.7660835307058299070704,0.349432040770661034301,\
+-0.6022322122997969540137,-0.883185569845575946246,-0.4869072854862174781765,\
+-0.5373968957759416298359,0.1125295355475867259409,0.9499457978350420717106,\
+-0.8191503966966299232766,-0.4544961153792455021971,-0.9388212744104845741688,\
+0.667378646873721059762,-0.9630145809992480820938,-0.3924506725722226585518,\
+0.4413762601275756369823,0.9432440329190430183814,-0.1798366074472934617035,\
+-0.1214902252731905191174,-1.134237248756892579848,-0.7168606663031997783264,\
+1.0473916695445741886772,0.0745013609201800736104,0.7586170976909952790024,\
+-0.5935190472805600414574,-0.8427835085661474767704,0.6569834032811123769591,\
+0.6673172133738860534180,-0.1144517528481678869667,-0.7214914324609644769026,\
+0.3758410950307565223660,-0.1327212976140068612096,-0.722383800988696922474,\
+0.769049408891516961262,-0.8835660062516154100720,0.2740448831292710551999,\
+0.7350195594735607906856,-0.7094731621063239401792,-0.7393796262522003281958,\
+0.6645381846985234375325,-1.0772344059827341222757,0.7552201039546350136433,\
+-0.5413871326815293816281,0.6185070897724082028546,0.1835833463904297524483,\
+-1.176386657281365266670,-0.8719472877519027775861,0.4484643942741659561335,\
+0.2142014421948802427309,-0.0380669636860080026763,-0.5997804502671881810016,\
+-0.9882664118774061590145,-1.0438491153613729256477,-0.5001221995547742160682,\
+0.6576540281533080900545,0.292080085019127744239,0.9602726979256205330771,\
+-0.0676134413768641334697,0.0573327152217289193192,0.1810443840994339081973,\
+0.6100358657130787731759,0.1887306738654894733287,0.2267166741276365193869,\
+-0.2510965487437752940991,-0.3295815282597121531616,-0.0975064859373050984992,\
+0.141305606529955662953,0.4979116182528884881897,-0.3338302007475900112787,\
+0.4361321851910835434296,0.7324685375973356560309,0.6498825704253795576548,\
+0.731090278993245523687,0.526015577583169635645,-0.2268132361170670519002,\
+0.4768211073463659022131,0.7230501420836584758334,-0.6728715276854828619690,\
+-1.0676488164290300897363,0.9885963208407696489743,-0.6838069995773392584226,\
+1.1764223744131836468796,0.4622592705138702240397,0.2190994523411692873616,\
+0.1750786606269341127984,0.345826480359459564884,0.3113998336672463840280,\
+-0.8730018295092231150889,-0.1117708529226727198758,-1.1128425715998719880417,\
+0.0999542424787834421496,-0.7426595867662098005013,-0.8760306483273037070347,\
+0.6424428721795988339593,1.1452043748636047126865}
+
+#define ZSOURCER {-1.1795163216180464260674,-0.6957584169324845246862,0.8259988996926452831104,\
+0.2005040766836741483736,-1.2112828126521528737669,1.577061196992769698255,\
+0.7637772368360737917925,1.8192271630516374525399,0.5455430088849253511540,\
+1.146539236621446411490,1.6240394311350210276856,-1.4966797534977682726520,\
+-1.59547014335820214193,-0.7395898851221245351439,-0.8068636961152658715335,\
+-1.0311002075319768422901,1.2005970723482952688954,-0.2648910783446530303742,\
+-0.2626223153489460337973,-0.7475187472806215094323,-0.5661153624892958369230,\
+0.7434875747358512532159,0.7872535238570613769227,0.451715552409009846180,\
+0.4606878032667490185936,0.0776842938192593146507,0.8641526902252117947612,\
+1.207833841833020782630,0.8731959322473188400693,0.0203507380205638840898,\
+-2.142561452892851825425,0.3422111419280877142590,1.2579314478540355448644,\
+1.7477933051936518360492,0.5187339957481993391042,-0.132728581017459240643,\
+-1.1602733035670516059668,0.4875989045190238790894,-0.5701105851822111381111,\
+-1.1912139790942799510987,2.0124340046175204221868,-2.7045248893564091119401,\
+-0.6431322992574242114472,-1.9153194443350760600708,-0.5655545944523592272191,\
+-0.65321727466490830949,-0.704349532744792949934,0.1130503418105048285547,\
+0.7790220841116946015603,-0.8369920883463126681789,-1.604067362874623814406,\
+-0.2256746981594401069149,-0.1392938143448255172707,0.6830835101317246360608,\
+-0.4155213883413004238854,0.0229733819760836940893,0.8246417042132325736503,\
+-0.6376565658151804871778,-1.7068298799179615343746,1.4073819355206949044401,\
+-0.8295221757203087298294,0.6373043870424420775933,-0.2922017410826197592044,\
+2.1752387761511053909658,0.0600723389389604608968,0.7835812912685555797765,\
+-1.3959357154825373648066,-2.0629358999978850697232,0.2656918800288301518719,\
+-1.1613766205716309354301,0.8939124507954123721731,1.6784098435216081579568,\
+1.2683311792448521693188,1.8385748076192800493089,-0.9497329202198889763764,\
+-1.270378528387523964227,0.7963056587352231874277,-0.8480009473832804678395,\
+-0.8640072224951356183453,-0.8715001223760306947597,-1.0437638424148545368553,\
+-0.4238345049288854693437,1.1151445198271947578661,-2.2055374030068151114392,\
+0.2874269036908579932899,-1.141542990475093111158,0.5076848390265716881586,\
+0.3056363849775944885323,-0.3052849785217074396471,0.0155317052678219415240,\
+0.2432114799458970910706,0.6784283234918451199746,1.872617399166290219625,\
+-0.5480102320972454199577,-1.1310137592478748391756,-0.0865801063652356234224,\
+-0.32288669591661972591,-0.3304845320488251636526,0.0611848701378388329375,\
+1.826560717567842440090,0.7447867877814601245134,-1.1564474239432984692399,\
+-1.1265940444751152416103,0.142628529129462972014,-0.8925873814067234457426,\
+-0.3627863505191566417807,-0.5662183332585394301972,-0.2716795089578870614488,\
+1.3639803640910439508360,1.237612166886607800720,0.3924305122780659127457,\
+0.7582137693795522048745,-1.1492170633741971563779,0.4241382639443282975833,\
+0.4098444400457034175744,-1.37669132334320454270,-1.4476326062045372644604,\
+0.7114066611465256206870,-1.3924830606697651269599,0.0338524257403221839891,\
+0.0146836062137128426502,1.2378730149006278438151,0.2801823548361609406143,\
+-1.3742686169958964192972,0.1717540380186403925489,-0.5855903929173471578196,\
+0.1907429151227005570401,0.7888793090772500127272,1.1338168541183824000740,\
+0.7778678198128919918375,0.4430509890900592440133,-1.8169712227336964893709,\
+-0.1603235606348805963872,1.0728726966089832117746,-0.6538383763382829005906,\
+-1.2903854138672581353120,-1.2588653493715018516497,0.662482523108547827206,\
+0.8653058064884894262647,0.8205627120768179683097,-0.6052538675768098785923,\
+0.1489320223008726296055,-1.1002545757952191252116,0.5601748137285590400936,\
+-0.7753064210754536667025,0.0825270383499445148168,-1.3301792471357218872186,\
+0.3149537401293732719054,-0.4413283119409475707684,0.5584497354764290655282,\
+0.2709448579613401020261,-0.4281368707331745238065,-0.2387957265896963054974,\
+-0.4604827882307634956405,-0.5412644127984000963494,0.7328783982761175597176,\
+-0.0713404400136534444510,-1.1936962614002064597685,-3.042807307214757006619,\
+0.7597050488151386726798,0.1791274991920646930676,-0.2506292816675101398083,\
+-0.6351531470374360832665,-0.121161180968055212648,-0.3652194549719223193307,\
+-0.9437320920432173965153,-0.2710022932148818952669,-0.9443973941449046449748,\
+1.3983220899832822237130,-0.4381256814836405610869,0.3765568950431126271639,\
+-0.3219819650340491334894,-0.1074889504736799422657,-0.6785727331891553415488,\
+2.4505579021475099033012,-1.3142551981836398944381,0.7354780365902759964314,\
+0.3711279315629368302787,-0.8351813322615772028357,0.9766824658266765046832,\
+1.461883720898450089720,1.5553635146325224258845,1.4271923988949506423296,\
+0.0934141721491809351452,-0.6278372555306163116384,-0.7994063607890871114847,\
+0.4560734872063767486594,1.2736575371127356604006,0.2044809074410245119946,\
+0.2464253458581916467196,0.1480097817386342162749,-0.7352399556856978879438,\
+0.9198120099159204920980,-0.6013531026590643868701,-0.6865004071225593307304,\
+-0.104616070370811706236,-0.3041328910990643286105,-1.0780356133329238588203,\
+-0.4779521279351744977859,0.5025105381497957379722}
+
+#define ZSOURCEI {-0.9552428551144188650923,1.2961834852294731312838,1.1017640646828426032044,\
+0.8711087850527934328682,-0.9420760043657475657497,-0.1497284505613425964476,\
+-1.3185366552605053414027,-0.6344981208817582762904,-0.1939736947913383302566,\
+0.5047024828595823020549,0.571239270735604098839,0.6329832938920191276466,\
+-1.0836206204774869732432,-0.2988022043772741165313,0.0786451729619408040906,\
+0.1005946170325885125063,0.1951019512685897017157,1.3036996759610997020928,\
+-1.604446040591435362899,-1.665829130168900329423,0.3894119616051456289618,\
+-0.6441312956332616579402,-0.3024073427875212938254,-0.4621890957188650173038,\
+-0.6774568059775447625981,0.445231860114528421590,-0.5535293580988084327643,\
+-0.0006762893110915249931,-1.089389506561633025328,0.5723493142465210237191,\
+0.4420973206857362058919,-0.1612581930858848211496,-0.7163329171822375718293,\
+-0.5277733874018479820478,-0.4768406780661605948168,-0.3993604887388358948286,\
+-1.3804293506092022436604,-0.1591254367281162429570,-1.6980146860343119374903,\
+-1.4761781930573465437817,0.2862303841437082718713,0.6052999005919722508295,\
+-0.5483298295339265049364,0.0209604427664898014527,-0.6457183807429971444947,\
+-0.0603329310380973649064,0.0091414413452102355473,1.0949883817318917245132,\
+1.6400776092272673079009,-0.623485665086227380804,0.9132225220115295361012,\
+0.0829708966832887195864,-0.1905412057335640341194,1.7237280439025588485435,\
+-1.1486098807701770052603,0.7656322424078984001383,0.365608177776686305016,\
+0.8275570484489896960767,-1.1195346368945833237518,2.009348617520048563279,\
+-1.3914607990698013573194,2.0854477679794358735421,1.2877168046463016715109,\
+-0.8111545211857794646093,-1.4392639991852771430558,0.5337937550547192655515,\
+-0.4149967301072188807787,0.7753596072101661684783,-2.0802067762281923890555,\
+0.0857878546561958027494,0.6902510695334604928775,-0.8020501997457173404271,\
+-0.4448276219158631139550,-0.4542741017673427861290,0.7497806557441212271797,\
+0.3761686067694443580400,-0.5437950704705085680501,0.1952712229487395811933,\
+1.4963569359039357031804,0.1448961397504171522144,-1.6571742156046651572865,\
+-2.266222156481924709936,-0.6895293883454371997033,0.2295209621736973848449,\
+0.5362163385171105911553,0.9313103118348207143384,0.6330960821019180340130,\
+-1.0858111091662558944648,0.0887541886374976635166,-0.34952319730873010473,\
+1.2435770678983146808605,0.3496891344866185913354,0.8861210080034624958500,\
+0.8494363200871917207735,-2.6007673657870293837391,0.1208397242502698559763,\
+-2.7285983994246283401708,-0.9589084058643195795923,0.5028677894031623463178,\
+0.1177935239520793014867,-0.8303109816686591315715,0.1392963806792855974148,\
+-0.7007200653415375235511,0.3010279059055253614297,0.2808756871176958935798,\
+-0.3407758216783158822238,-0.1629402754377415607490,-0.9384370915542669111531,\
+-0.9062708617577245329144,-3.8216620591432644005181,-0.4342151148359789103459,\
+-1.8035270857235303765265,0.5183732162291515566110,-0.6322771366436347184603,\
+-1.565814486101537061913,-0.1275146747340561437234,1.64064977802353451075,\
+0.3863617690782851776810,2.0004008659625807098337,-0.6217884089242305956091,\
+0.5238947303594374549363,0.6235004214546735479274,0.2053444204279457063755,\
+0.8703948860420792632553,-1.0392069272746413677311,1.003277086375655047235,\
+-0.592126107443248783646,1.4081926997371712051432,0.3085101089696197229628,\
+1.3401416840168169919423,-0.1266586333113026985320,-0.6461594510334438545840,\
+-1.0118098370918304773625,0.6188273552553577028235,0.3590555220619524590120,\
+-1.1731665361057745933238,-0.6396350210213861409159,-0.1754282371769660675564,\
+-1.4007581459609705909486,0.9435849228454418202716,-0.8904968184314612233976,\
+0.2054651558278166589844,0.4710457442017800810952,-0.9616306477690889087384,\
+-0.121221389008828367428,-0.4940626370918775878138,-1.6256998584585298228689,\
+0.2527933604007285839366,0.9910414428133418329736,-0.4204166976073123729307,\
+-0.3726016912019385896038,0.9512465231833235890235,1.9770278000388763484096,\
+0.7942630050207910574755,0.2042467951135929216111,-0.4515030272861193516576,\
+0.6146475682591936440247,-0.6290585121948016888993,-0.1427330253584118413546,\
+-0.0603831392611861861308,-0.0118358773438195733624,1.060362899843382056275,\
+0.0968488469273018626193,0.1916075762821658201585,-0.4096449181703107345065,\
+0.3696227488734469268650,0.2664498618423789544352,-1.1169828984464544863187,\
+0.1529016818054778348301,0.5016653096177513537768,0.3713737327704177415555,\
+1.519060224335068820523,-0.1807259441689535728326,1.8139275887503047979266,\
+-0.3257752015232963649360,2.1486960576842424330835,-0.1051361455427324009815,\
+-0.2626851203928968758738,1.0103646188196337973864,0.2148110767207350724206,\
+0.4407052420763278299809,-0.5122126723342420584473,1.2412118916908576604641,\
+0.9766933236701691445347,2.039099736880281454887,-0.2559919392094065493382,\
+0.5420836083333696597819,0.0791245311903027159772,-0.0955893777744002970387,\
+-1.3712286813648302263857,2.1069701518694308184365,-1.189922581642507859456,\
+-1.1599757893702906663691,-0.5696357256121767909107,-1.3015572133370920671069,\
+-0.5449309642239419382292,-0.5067789559895423678881,0.6346443332238025369918,\
+-0.6108333161328157734360,1.8419857567724760016858}
+
+#define ZRESULTR {-1.0378404956328399766363,-1.133735695651125086059,1.0339197498326544444325,\
+0.5531122148702418694910,-1.040340001858497842591,1.0085860369894361632248,\
+1.1420720538989748149561,1.1056797792052726059353,0.5117972485274214777817,\
+0.9070677525728206846978,1.0572990288526666891045,-1.0360972400059726972188,\
+-1.1383229838393340571656,-0.6648420928164470167232,-0.6807443500487321275116,\
+-0.8031597943350016199915,0.883947625424225447155,-1.269412549612109586405,\
+-1.4161063395011512788813,-1.2859233456553140761969,-0.5672668801729759957553,\
+0.7745318044293433290548,0.6947007749642374330179,0.4991201053193883852011,\
+0.6140034872209438887580,0.096413007169791717366,0.8007709883951089624432,\
+0.8792563999787510464756,1.0343346624696823088385,0.0302467913897976371784,\
+-1.1472175673143576446478,0.3369832737151475243742,0.9907410521400105141154,\
+1.0796900049026223467052,0.5594674889946016360653,-0.1560251223940891662778,\
+-1.1705823062338804874116,0.4618385738778090776613,-1.3324797047631469215645,\
+-1.1997345609820562195580,1.1160254294044837930500,-1.230501878395329207194,\
+-0.6761086369817806973614,-1.0896592333865446899921,-0.6710881467286168300390,\
+-0.5798029666713722107829,-0.6136654494083557676021,1.1617507290156328103592,\
+1.27276401512989068010,-0.8120428578165023170143,-1.1072391191957589029471,\
+-0.2233715590492064695383,-0.1434422451344934956730,1.3153998337128238738103,\
+-1.0526498309129606045786,0.0553606627561369843415,0.7291584643384485531215,\
+-0.8211933984789114848724,-1.1593353121271579020402,1.3152057671476293787549,\
+-1.172801856026281397405,1.4071868225661712248353,-1.237749706635684621148,\
+1.1803373520872921798031,1.5151506180989924299496,0.7531983030718831795269,\
+-0.9762856051169326310202,-1.1612557605568909480098,1.4932305416569968681273,\
+-0.8614722664300586973951,0.8618528735715539346174,1.1016443473924788509777,\
+0.9393199732131509716027,1.0919198431908447854966,-0.9052324038739091305317,\
+-0.9298866314213817263479,0.7633780893052066751636,-0.7143116680469970836143,\
+-1.2127221047629597183715,-0.7227638256662162197230,-1.253501631676815275540,\
+-1.4738165927959636647415,0.9413278434132237304510,-1.1484735264203178584097,\
+0.3698862224535668929981,-1.0222624393360630890015,0.6231994143282580944643,\
+0.9950036636352803665062,-0.2983226702432650867536,0.0176907017367243651895,\
+1.2324636476429444709169,0.6361627801840686879942,1.1459319881374090410731,\
+-0.7953680408910630550423,-1.4154164061425698051266,-0.0876282946873059020998,\
+-1.5216557556403844664317,-0.8071142269969606708457,0.0815747053150205070349,\
+1.0712377179167194007903,0.8666202597884599123645,-0.8619222017137594393787,\
+-0.9481006227828882026998,0.1552413858057176687666,-0.7506128146087278629750,\
+-0.3836715577045819447477,-0.5239185633043924594787,-0.7436026090030812829568,\
+1.0616275053374448766874,1.4897517325664235698923,0.4367517077925673341099,\
+1.3246660695183969380651,-0.9109135023203799308433,0.5553722323129884896886,\
+1.3365545316217091187383,-0.9452504202661284882225,-1.24445301968662169756,\
+0.6665795438258386163000,-1.314150441284937187447,0.0550695906884250130364,\
+0.0202332991673926272658,0.9634857364192206397036,0.2836842504797497110935,\
+-1.0552170344242444155469,0.9396260470070250114816,-0.9303925570132891564867,\
+0.2783356640126000702828,1.1824291811858682610392,0.8685688319389791578473,\
+1.1519647668153425446036,0.4220715686665841848146,-1.1065714015957384130928,\
+-0.861924596730684333679,0.9073537157079681891858,-0.6218839294281949259258,\
+-1.120015581786375724604,-0.9733844585621500566930,0.595029230494463101664,\
+1.175230190501943328130,0.9508205283471821145369,-0.8508278968495206484590,\
+0.1541098930310453307690,-0.8824217885955716322854,0.8902851444120675195038,\
+-0.6639557596979325237996,0.1084368331219868891724,-1.2396941127079998956617,\
+0.3226031789257856052799,-0.8843151570857661347702,0.5707126023897258759732,\
+0.3012759106579737111709,-0.8367027089033168829602,-1.4909615617958020816758,\
+-0.7009193727197650103378,-0.5098573775891588333309,0.6979392344955810401075,\
+-0.11360619748546052499,-0.9509385591695135309109,-1.253860295053432105661,\
+0.650797750208578995590,0.1772712514866976729611,-0.9640945137047890467485,\
+-0.5689005122453275609118,-0.1250511412013994849701,-0.4037636514907702589561,\
+-0.7926166698304296653887,-0.2823466357029139617296,-1.056824688357730357424,\
+0.9537129762345133432433,-0.5025361511250948653995,0.4038372312258701746224,\
+-1.356748408455357823854,-0.1106205947085566049237,-1.3416335800212069173654,\
+1.1885949854017261451133,-1.3422443000337007656952,0.6375731708639520434190,\
+0.3760968575323995755078,-0.9884746207385446403748,0.7854115858087797885645,\
+0.999043445647114114472,1.033179400413832382810,1.1526308570666976560659,\
+0.6867562899067288784138,-1.4009010309735028254607,-0.6940419760103245794269,\
+0.5354681750957488439724,0.9063410461496741454823,0.2034358249367814175379,\
+1.3295608151948998809644,1.5281379412739910517161,-1.0737486644518823286631,\
+1.0727905584835071284289,-0.6577524210666327864061,-1.1372820311372766610702,\
+-0.1467884541731124814490,-0.3758609793464613990643,-0.9135278670013463608868,\
+-0.5879353157795642603745,1.3892627420568484097885}
+
+#define ZRESULTI {-0.3299360864553753103223,0.5773236414575498853807,0.4991095547887292593892,\
+1.0331094146354482532502,-0.3176151990967214233663,-0.0427672547155572568833,\
+-0.5408736725419536206516,-0.1380553162115908116814,-0.1495803862615101287314,\
+0.2075977110248564960759,0.1483156441793008761820,0.1814264210630067153396,\
+-0.2481388687151736549552,-0.1914494023025192226406,0.0475995307877313186817,\
+0.0486725512662827888843,0.0793454719839349342791,0.8749639413571212998022,\
+-0.6896294045728997845757,-0.5086525074514365307721,0.2944098793875352670923,\
+-0.3917506744074427116331,-0.1846852570799382420308,-0.3894217746197643492678,\
+-0.5646100518854718641748,0.4746040014516990646065,-0.3015127179783077537856,\
+-0.0002750414994330601867,-0.4738712470203229054633,0.6504861039469930217294,\
+0.0770111005352082517161,-0.1450021418767060144006,-0.2504460533174687753011,\
+-0.1242925201299330817406,-0.3767991401181884358884,-0.4132076872602681860691,\
+-0.3870747570445600693745,-0.1287551829606753961421,-0.5591653729797143590474,\
+-0.3808547758746415601294,0.0560087196606005033317,0.0701856173788610038233,\
+-0.3788485405347551959743,0.0044895072328474238538,-0.4792093730891275327188,\
+-0.0422815385429984591514,0.0061101098120875880007,1.3269258764406561823535,\
+0.50216582477378490790,-0.3441118926473294425961,0.2204807457606408893636,\
+0.0790893257779779063066,-0.1890021515648551142519,0.518665277550073300361,\
+-0.8006086655024508003109,1.0073379811293934338323,0.2137094925844510162616,\
+0.5375421998418649094376,-0.2320202834395212743157,0.3256990051992574852768,\
+-0.5075425697148114867474,0.4587488944259289214145,0.8635283954295314146066,\
+-0.1297869621390935479521,-0.852694676585578515,0.3180243625197139989424,\
+-0.1362504231180562963566,0.1356147426873018091431,-0.5110906304654022624945,\
+0.0364746671485365880905,0.3518205609306652159596,-0.1882338930265980980749,\
+-0.1641509348055795458610,-0.1003678389496054923491,0.3533058939584889368568,\
+0.1400753442460135889114,-0.3190262039403771177071,0.1130098866744752156288,\
+0.4874882612585151875351,0.0821093566409674818773,-0.4196102828902398829136,\
+-0.451423643355465198379,-0.2794721520836026540380,0.0388676985912680683644,\
+0.5261724556813406339373,0.3369140501375452179111,0.5021943268293638240607,\
+-0.9466008502228719923011,0.0813161752282447886087,-0.3647911127697049948893,\
+0.9402058236775613364600,0.2373145443406108057172,0.1741667096823807936445,\
+0.6110175965051998225874,-0.3276211596627106037438,0.1205074840878167241609,\
+-0.3776545253138779423274,-0.8929722827626465075923,0.549792722962075375293,\
+0.0271042479895461374539,-0.47522513055127707515,0.0593823102898174345898,\
+-0.2798313897020670570903,0.3034375004902351569136,0.1544875118519504486603,\
+-0.3064946913611272250044,-0.1233973071314871799986,-0.9748519593919268144688,\
+-0.2695469774323944189831,-0.2398595153162375315237,-0.3849351067537384318840,\
+-0.4832629774775746844817,0.2120502817724358168849,-0.5500280838647416681297,\
+-0.6567358702149050930785,-0.0439088406752093027285,0.3215272662057582220285,\
+0.252983359599071477852,0.3285524490410307585364,-0.7260295113781071174586,\
+0.5814783672028649430530,0.2280478984411803411447,0.1921683660815579341996,\
+0.2598222279442688464890,-1.2261944929533434844870,0.6354501028006451779362,\
+-0.6350507146232319266588,0.5241840999802419576170,0.1326112979841672367964,\
+0.5331634907909190701503,-0.1060363792025432461141,-0.1405159325068739140097,\
+-1.2650277702054697481771,0.2669908129991411804838,0.2495345813255305800205,\
+-0.3316627619047222141901,-0.2282918540535401608071,-0.1217152595768435791035,\
+-0.4921799931736892674827,0.4709770755615852455556,-0.5858164911014823728053,\
+0.2035859669317575948444,0.2043112301670926833630,-0.6450693837623580062512,\
+-0.0755935103401305513726,-0.5356174761081086144188,-0.3471562389208797116957,\
+0.2328317315621121486036,0.7651997819792383248583,-0.3199579280419243554334,\
+-0.3582454315092570285017,0.7669246314230472316709,0.5441811107763497856737,\
+0.6504831149102675569296,0.1580962824886572026806,-0.2872668874651375658935,\
+0.7084196447067554469612,-0.2398740644903666341392,-0.0138893916104706732079,\
+-0.0382724601233607325534,-0.0114683647521359316501,1.042906817386681339599,\
+0.0689854613036876146426,0.1910230634709511876590,-0.3704134917614289590482,\
+0.1911216797569713354843,0.2522464542416475996589,-0.4451672855349098623101,\
+0.0515134584128001532521,0.4287903998263715155126,0.3315338614185490695441,\
+0.7124742713592439047332,-0.1805296499983318203597,0.5024343285394804459187,\
+-0.0459393453273769861167,0.3351247751616924785978,-0.0681623033986126780626,\
+-0.2332477835758634543417,0.4789761892657505848447,0.1091019217623192538724,\
+0.1355147604481500289708,-0.1428984493591255733325,0.3037123307940571281804,\
+1.5115293287912119346572,0.4692494475562393740908,-0.154956179496453544386,\
+0.4557841446769143045614,0.0301394028826129541099,-0.0919789120268482279785,\
+-0.8385856266070932374390,0.5121474514176801440257,-0.5562655937076338430458,\
+-0.4610543161770726539039,-0.4105611124291430047428,-0.5820664911774818817136,\
+-0.5994113052598605273502,-0.4878070905668511203501,0.2712394281598410339384,\
+-0.5014387951037901913764,0.5397742494143892288960}
+
+
+
+void datansTest() {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=datans(in[i]);
+ assert( ( (fabs(out-res[i])) / (fabs(out)) ) <3e-16);
+ }
+}
+
+void zatansTest() {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in, out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zatans(in);
+ assert( ( (fabs(zreals(out)-resR[i])) / (fabs(zreals(out))) ) <3e-15);
+ assert( ( (fabs(zimags(out)-resI[i])) / (fabs(zimags(out))) ) <3e-15);
+ }
+}
+
+void datanaTest(void) {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out[200];
+ int i=0;
+
+ datana(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <3e-16);
+ }
+}
+
+void zatanaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in[200], out[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(inR[i],inI[i]);
+ }
+ zatana(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(zreals(out[i])-resR[i])) / (fabs(zreals(out[i]))) ) <3e-15);
+ assert( ( (fabs(zimags(out[i])-resI[i])) / (fabs(zimags(out[i]))) ) <3e-15);
+ }
+}
+
+int testAtan() {
+ printf("\n>>>> Double Arc Tangeant Tests\n");
+ datansTest();
+ zatansTest();
+ datanaTest();
+ zatanaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testAtan() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/testFloatAtan.c b/2.3-1/src/c/elementaryFunctions/atan/testFloatAtan.c
new file mode 100644
index 00000000..a740b53c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/testFloatAtan.c
@@ -0,0 +1,502 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testAtan.h"
+
+
+#define SOURCE {0.2271646957046519754719f,0.0509554588447201708967f,1.85687282969809008826f,\
+-0.0600149264751901750925f,0.1154209251583080408921f,0.3931023811137128731730f,\
+-0.3192353063868129114944f,-0.1509983292012369027191f,-0.3971164405532471297633f,\
+-0.4879179365092389808467f,0.8039704485327389127391f,-1.6086183006520318183874f,\
+-1.4550051558571557297483f,-2.0613539298303464875062f,2.3614638061462338569640f,\
+-1.1480101088176024592968f,-0.2658609898928261938700f,1.5427739450302764279144f,\
+0.7423335722389889923534f,0.3296187860375025535653f,0.8154893385384427428875f,\
+-0.7055736212996815970300f,0.2819847871866195676560f,0.3955156539663013948172f,\
+-1.0216483261612141486552f,-0.9217285194529017955389f,0.1388701122197689430404f,\
+0.2561008611862776729318f,0.9488840790776944533746f,-0.6033504831579518112861f,\
+-1.255847241084065313288f,-1.5093582375924872174267f,-0.2071228671170260715595f,\
+-0.3992159361232490155658f,1.1415777038585108726920f,1.2096296402394912661293f,\
+1.2000346264198469281581f,0.7648344037454491983752f,0.5126417298496636076877f,\
+-0.6005237850264322219118f,-2.2808601123468448257370f,-1.0478316411512684780405f,\
+0.3987387706615069249416f,-0.7901557685645255180162f,0.9472076517346639246142f,\
+1.2552561019596721880731f,0.4826393798173508331573f,-1.9230607741483070061150f,\
+0.4005546162223627693066f,0.1739168390171661471300f,-0.0825727057882147952306f,\
+0.8203738818332056981220f,0.9228038015421474726807f,0.4570111559683089907935f,\
+0.9219829463190309937204f,1.604104528474896707024f,-0.7201236539398426783620f,\
+0.6869793119903724321063f,-1.3399970213280150144186f,0.6385085849830633986102f,\
+-2.1392676796592846599765f,0.3031216472852934495918f,1.4731483222685206602165f,\
+-0.6666106701273177836953f,2.5253251451367195735f,-0.3387226520606179125394f,\
+0.1099263677503663910739f,0.2055796316301525261672f,0.4180157426427644207223f,\
+-0.5676554981767482077615f,0.1457986457557736703627f,-1.887021345850510067876f,\
+-2.0255226332731517402408f,-1.5021973207858168031237f,-0.1565213082415607970255f,\
+1.792895025421787247311f,0.9902819037203779428680f,-1.3877868870664777922741f,\
+-1.9114516712610110094062f,-0.1241624780676525430234f,-0.1512289550370426727266f,\
+1.0440663453119916059819f,0.8275748256509259936919f,0.9453274386638104154201f,\
+0.8371330563424048687438f,0.7021707191099652023425f,-1.06501992349112173386f,\
+0.0584382761085656052269f,0.3908208204693481846448f,0.1507745763925768811564f,\
+1.0041017891872929812536f,-1.2313120848428102949157f,0.3394895696418271380246f,\
+-0.0827142520512850892844f,0.6446222176264210235175f,-1.4935026770981445487507f,\
+-0.8052775249062644746800f,-0.5748653112322126279565f,0.9754979932482783500092f,\
+-2.2884524191498907264020f,2.022987266935787342703f,0.1637454282369502356342f,\
+0.5475744092801727580522f,-0.8932610448161549809853f,-1.2797351399265011195894f,\
+0.1118201613432585478369f,-0.9620980829388734445473f,0.3643849907609559291011f,\
+-0.6874188098904436827752f,-1.217541476664303568000f,-0.5294220756831705676504f,\
+-0.5958966870065123266897f,0.1130069370904074471662f,1.3982224083465000230575f,\
+-1.0698899503771839292199f,-0.4886124217435617311800f,-1.3658513358172643670230f,\
+0.7879963184644042106797f,-1.4375620975102927356915f,-0.4139225629147579854639f,\
+0.4724629049642866118752f,1.3786020791121860185058f,-0.1818007311019581573319f,\
+-0.1220915022718044445904f,-2.1432379005797042026416f,-0.8715288727031362814301f,\
+1.7328275421264391908949f,0.0746395063981880602100f,0.9478227559099661192477f,\
+-0.6746643568348875685814f,-1.12189978973121218253f,0.7712825781700975991129f,\
+0.7878967433781322027286f,-0.114954127571938721775f,-0.8797100720757337066757f,\
+0.3945983137523260686486f,-0.1335061206135170208675f,-0.8812942795785859706470f,\
+0.9678256351883146590964f,-1.2184863124466103201371f,0.2811177412486541848935f,\
+0.9039980069833579712224f,-0.8586130195545335075380f,-0.9119525776637865677188f,\
+0.7834023749729661645347f,-1.8588322045751330957586f,0.9413946838303350883592f,\
+-0.6013167449649100548825f,0.7116576086154465796696f,0.1856739618227061516809f,\
+-2.4025809662081938355982f,-1.1900189182655975805858f,0.4811625406314723463197f,\
+0.2175387195999395339996f,-0.0380853618830928608574f,-0.6838145482543566133771f,\
+-1.5179336348870946515888f,-1.718734246002084020688f,-0.5464611700109887060250f,\
+0.7723526959000743818962f,0.3006795138383335785903f,1.4291868716265472283311f,\
+-0.0677166634975557846232f,0.0573956162401944233742f,0.1830487012206095109867f,\
+0.6989722492840018119864f,0.1910038834963114218191f,0.2306826823577726726100f,\
+-0.2565102919971545825106f,-0.3420573662934773273570f,-0.0978166804483409507709f,\
+0.1422536753322360680851f,0.5435939242933658377410f,-0.3468100829076145585894f,\
+0.4660640367220392210612f,0.8993729143853705920719f,0.7600191222869452367661f,\
+0.8968829064436780740266f,0.5805771807617583490924f,-0.2307843851109470378891f,\
+0.5165770205506754475522f,0.8824788500189956197417f,-0.7969387348104061130627f,\
+-1.8168722946703086407183f,1.5190242407155258863583f,-0.8149773729875190442229f,\
+2.4028228775031306163612f,0.4982657796195523181026f,0.2226740315197290043248f,\
+0.1768897379163425209736f,0.3603060382424789764855f,0.3218716686921767045071f,\
+-1.192570046506437719813f,-0.1122386313819233177869f,-2.0287975179488202392974f,\
+0.100288454133301133120f,-0.9179783877737051067669f,-1.1999331406575297620520f,\
+0.7483478159755958536437f,2.2060613717090746810356f}
+
+#define RESULT {0.2233738732437201557346f,0.0509114261721980362885f,1.0767942567911201745545f,\
+-0.0599430280405672463728f,0.1149124379797051148655f,0.3745460477695387035979f,\
+-0.3090091280795300709983f,-0.1498661654051850200542f,-0.3780180809438991595961f,\
+-0.4539353243495501954996f,0.6771572627749745665326f,-1.0146085369409014731445f,\
+-0.9686564923933993487282f,-1.1191250002845629651915f,1.1702255762215818535310f,\
+-0.8541951038511210736459f,-0.2598500531232013632810f,0.9956994243583069392756f,\
+0.6385765127412353914238f,0.3184037447477280347030f,0.6841145592833487443230f,\
+-0.6144568631857774132499f,0.2748482455938721091826f,0.3766345938432117956829f,\
+-0.7961060093123013547967f,-0.7446909349913972686608f,0.1379876022907993438071f,\
+0.2507123565043022361820f,0.759175872898178005777f,-0.5428794496736766284073f,\
+-0.89833074078511021554f,-0.9856607896834306270506f,-0.2042349952101077392719f,\
+-0.3798302772852411579585f,0.8514111742492602719068f,0.8799860018302214648145f,\
+0.8760722415122048634117f,0.6529277236314812160600f,0.4737097703113398172725f,\
+-0.5408045473230975730417f,-1.1576046419742331838876f,-0.8087511308495316519895f,\
+0.3794186378049814734048f,-0.6687094713589172290114f,0.7582929808049961861727f,\
+0.8981012978260718426782f,0.4496629050128420623800f,-1.0912735975391061327144f,\
+0.3809844030879972476278f,0.1721944986308187042212f,-0.0823858026410947269502f,\
+0.6870411688329144395126f,0.7452719880215435965809f,0.4286690862084140407617f,\
+0.7448284765591709488675f,1.0133478453990099055204f,-0.6241044852011972121630f,\
+0.6019336895450897451099f,-0.9296864924479115721567f,0.5682544332615881987891f,\
+-1.1335263715873262757583f,0.2943182248013878621329f,0.9744281865108882501048f,\
+-0.5879638357107155322012f,1.1937528186152712716961f,-0.3265930739728566956082f,\
+0.1094867742408287547562f,0.2027547884149371593132f,0.3959400774109990694960f,\
+-0.5162971747333449101802f,0.1447785328438968288634f,-1.0834879385306221966090f,\
+-1.112201615701992940544f,-0.98346913687842862917f,-0.1552615733221418270471f,\
+1.062017052786182524926f,0.7805154284284491206236f,-0.9463968404701921244282f,\
+-1.088790816976063835497f,-0.1235302727421704604982f,-0.1500916423979053448967f,\
+0.8069530021779800499360f,0.6913301738780865957068f,0.7573010048408638228423f,\
+0.6969765492354944580455f,0.6121813376326975530972f,-0.8168741064761906311986f,\
+0.0583718892203711620104f,0.3725683317450820819516f,0.1496473933205103579169f,\
+0.7874448575733706823243f,-0.8886955789071054878647f,0.3272808967598674345645f,\
+-0.0825263887088810432768f,0.5725854110105892402771f,-0.980788536566781998793f,\
+-0.6779506710306395511623f,-0.5217330517396027156352f,0.772995847351621967469f,\
+-1.1588253401537096376472f,1.1117042516684423337f,0.1623050519698593929796f,\
+0.5009790459791051420169f,-0.7290794216990050813365f,-0.9074929345625200038938f,\
+0.111357569834535111153f,-0.7660835307058299070704f,0.349432040770661034301f,\
+-0.6022322122997969540137f,-0.883185569845575946246f,-0.4869072854862174781765f,\
+-0.5373968957759416298359f,0.1125295355475867259409f,0.9499457978350420717106f,\
+-0.8191503966966299232766f,-0.4544961153792455021971f,-0.9388212744104845741688f,\
+0.667378646873721059762f,-0.9630145809992480820938f,-0.3924506725722226585518f,\
+0.4413762601275756369823f,0.9432440329190430183814f,-0.1798366074472934617035f,\
+-0.1214902252731905191174f,-1.134237248756892579848f,-0.7168606663031997783264f,\
+1.0473916695445741886772f,0.0745013609201800736104f,0.7586170976909952790024f,\
+-0.5935190472805600414574f,-0.8427835085661474767704f,0.6569834032811123769591f,\
+0.6673172133738860534180f,-0.1144517528481678869667f,-0.7214914324609644769026f,\
+0.3758410950307565223660f,-0.1327212976140068612096f,-0.722383800988696922474f,\
+0.769049408891516961262f,-0.8835660062516154100720f,0.2740448831292710551999f,\
+0.7350195594735607906856f,-0.7094731621063239401792f,-0.7393796262522003281958f,\
+0.6645381846985234375325f,-1.0772344059827341222757f,0.7552201039546350136433f,\
+-0.5413871326815293816281f,0.6185070897724082028546f,0.1835833463904297524483f,\
+-1.176386657281365266670f,-0.8719472877519027775861f,0.4484643942741659561335f,\
+0.2142014421948802427309f,-0.0380669636860080026763f,-0.5997804502671881810016f,\
+-0.9882664118774061590145f,-1.0438491153613729256477f,-0.5001221995547742160682f,\
+0.6576540281533080900545f,0.292080085019127744239f,0.9602726979256205330771f,\
+-0.0676134413768641334697f,0.0573327152217289193192f,0.1810443840994339081973f,\
+0.6100358657130787731759f,0.1887306738654894733287f,0.2267166741276365193869f,\
+-0.2510965487437752940991f,-0.3295815282597121531616f,-0.0975064859373050984992f,\
+0.141305606529955662953f,0.4979116182528884881897f,-0.3338302007475900112787f,\
+0.4361321851910835434296f,0.7324685375973356560309f,0.6498825704253795576548f,\
+0.731090278993245523687f,0.526015577583169635645f,-0.2268132361170670519002f,\
+0.4768211073463659022131f,0.7230501420836584758334f,-0.6728715276854828619690f,\
+-1.0676488164290300897363f,0.9885963208407696489743f,-0.6838069995773392584226f,\
+1.1764223744131836468796f,0.4622592705138702240397f,0.2190994523411692873616f,\
+0.1750786606269341127984f,0.345826480359459564884f,0.3113998336672463840280f,\
+-0.8730018295092231150889f,-0.1117708529226727198758f,-1.1128425715998719880417f,\
+0.0999542424787834421496f,-0.7426595867662098005013f,-0.8760306483273037070347f,\
+0.6424428721795988339593f,1.1452043748636047126865f}
+
+#define CSOURCER {-1.1795163216180464260674f,-0.6957584169324845246862f,0.8259988996926452831104f,\
+0.2005040766836741483736f,-1.2112828126521528737669f,1.577061196992769698255f,\
+0.7637772368360737917925f,1.8192271630516374525399f,0.5455430088849253511540f,\
+1.146539236621446411490f,1.6240394311350210276856f,-1.4966797534977682726520f,\
+-1.59547014335820214193f,-0.7395898851221245351439f,-0.8068636961152658715335f,\
+-1.0311002075319768422901f,1.2005970723482952688954f,-0.2648910783446530303742f,\
+-0.2626223153489460337973f,-0.7475187472806215094323f,-0.5661153624892958369230f,\
+0.7434875747358512532159f,0.7872535238570613769227f,0.451715552409009846180f,\
+0.4606878032667490185936f,0.0776842938192593146507f,0.8641526902252117947612f,\
+1.207833841833020782630f,0.8731959322473188400693f,0.0203507380205638840898f,\
+-2.142561452892851825425f,0.3422111419280877142590f,1.2579314478540355448644f,\
+1.7477933051936518360492f,0.5187339957481993391042f,-0.132728581017459240643f,\
+-1.1602733035670516059668f,0.4875989045190238790894f,-0.5701105851822111381111f,\
+-1.1912139790942799510987f,2.0124340046175204221868f,-2.7045248893564091119401f,\
+-0.6431322992574242114472f,-1.9153194443350760600708f,-0.5655545944523592272191f,\
+-0.65321727466490830949f,-0.704349532744792949934f,0.1130503418105048285547f,\
+0.7790220841116946015603f,-0.8369920883463126681789f,-1.604067362874623814406f,\
+-0.2256746981594401069149f,-0.1392938143448255172707f,0.6830835101317246360608f,\
+-0.4155213883413004238854f,0.0229733819760836940893f,0.8246417042132325736503f,\
+-0.6376565658151804871778f,-1.7068298799179615343746f,1.4073819355206949044401f,\
+-0.8295221757203087298294f,0.6373043870424420775933f,-0.2922017410826197592044f,\
+2.1752387761511053909658f,0.0600723389389604608968f,0.7835812912685555797765f,\
+-1.3959357154825373648066f,-2.0629358999978850697232f,0.2656918800288301518719f,\
+-1.1613766205716309354301f,0.8939124507954123721731f,1.6784098435216081579568f,\
+1.2683311792448521693188f,1.8385748076192800493089f,-0.9497329202198889763764f,\
+-1.270378528387523964227f,0.7963056587352231874277f,-0.8480009473832804678395f,\
+-0.8640072224951356183453f,-0.8715001223760306947597f,-1.0437638424148545368553f,\
+-0.4238345049288854693437f,1.1151445198271947578661f,-2.2055374030068151114392f,\
+0.2874269036908579932899f,-1.141542990475093111158f,0.5076848390265716881586f,\
+0.3056363849775944885323f,-0.3052849785217074396471f,0.0155317052678219415240f,\
+0.2432114799458970910706f,0.6784283234918451199746f,1.872617399166290219625f,\
+-0.5480102320972454199577f,-1.1310137592478748391756f,-0.0865801063652356234224f,\
+-0.32288669591661972591f,-0.3304845320488251636526f,0.0611848701378388329375f,\
+1.826560717567842440090f,0.7447867877814601245134f,-1.1564474239432984692399f,\
+-1.1265940444751152416103f,0.142628529129462972014f,-0.8925873814067234457426f,\
+-0.3627863505191566417807f,-0.5662183332585394301972f,-0.2716795089578870614488f,\
+1.3639803640910439508360f,1.237612166886607800720f,0.3924305122780659127457f,\
+0.7582137693795522048745f,-1.1492170633741971563779f,0.4241382639443282975833f,\
+0.4098444400457034175744f,-1.37669132334320454270f,-1.4476326062045372644604f,\
+0.7114066611465256206870f,-1.3924830606697651269599f,0.0338524257403221839891f,\
+0.0146836062137128426502f,1.2378730149006278438151f,0.2801823548361609406143f,\
+-1.3742686169958964192972f,0.1717540380186403925489f,-0.5855903929173471578196f,\
+0.1907429151227005570401f,0.7888793090772500127272f,1.1338168541183824000740f,\
+0.7778678198128919918375f,0.4430509890900592440133f,-1.8169712227336964893709f,\
+-0.1603235606348805963872f,1.0728726966089832117746f,-0.6538383763382829005906f,\
+-1.2903854138672581353120f,-1.2588653493715018516497f,0.662482523108547827206f,\
+0.8653058064884894262647f,0.8205627120768179683097f,-0.6052538675768098785923f,\
+0.1489320223008726296055f,-1.1002545757952191252116f,0.5601748137285590400936f,\
+-0.7753064210754536667025f,0.0825270383499445148168f,-1.3301792471357218872186f,\
+0.3149537401293732719054f,-0.4413283119409475707684f,0.5584497354764290655282f,\
+0.2709448579613401020261f,-0.4281368707331745238065f,-0.2387957265896963054974f,\
+-0.4604827882307634956405f,-0.5412644127984000963494f,0.7328783982761175597176f,\
+-0.0713404400136534444510f,-1.1936962614002064597685f,-3.042807307214757006619f,\
+0.7597050488151386726798f,0.1791274991920646930676f,-0.2506292816675101398083f,\
+-0.6351531470374360832665f,-0.121161180968055212648f,-0.3652194549719223193307f,\
+-0.9437320920432173965153f,-0.2710022932148818952669f,-0.9443973941449046449748f,\
+1.3983220899832822237130f,-0.4381256814836405610869f,0.3765568950431126271639f,\
+-0.3219819650340491334894f,-0.1074889504736799422657f,-0.6785727331891553415488f,\
+2.4505579021475099033012f,-1.3142551981836398944381f,0.7354780365902759964314f,\
+0.3711279315629368302787f,-0.8351813322615772028357f,0.9766824658266765046832f,\
+1.461883720898450089720f,1.5553635146325224258845f,1.4271923988949506423296f,\
+0.0934141721491809351452f,-0.6278372555306163116384f,-0.7994063607890871114847f,\
+0.4560734872063767486594f,1.2736575371127356604006f,0.2044809074410245119946f,\
+0.2464253458581916467196f,0.1480097817386342162749f,-0.7352399556856978879438f,\
+0.9198120099159204920980f,-0.6013531026590643868701f,-0.6865004071225593307304f,\
+-0.104616070370811706236f,-0.3041328910990643286105f,-1.0780356133329238588203f,\
+-0.4779521279351744977859f,0.5025105381497957379722f}
+
+#define CSOURCEI {-0.9552428551144188650923f,1.2961834852294731312838f,1.1017640646828426032044f,\
+0.8711087850527934328682f,-0.9420760043657475657497f,-0.1497284505613425964476f,\
+-1.3185366552605053414027f,-0.6344981208817582762904f,-0.1939736947913383302566f,\
+0.5047024828595823020549f,0.571239270735604098839f,0.6329832938920191276466f,\
+-1.0836206204774869732432f,-0.2988022043772741165313f,0.0786451729619408040906f,\
+0.1005946170325885125063f,0.1951019512685897017157f,1.3036996759610997020928f,\
+-1.604446040591435362899f,-1.665829130168900329423f,0.3894119616051456289618f,\
+-0.6441312956332616579402f,-0.3024073427875212938254f,-0.4621890957188650173038f,\
+-0.6774568059775447625981f,0.445231860114528421590f,-0.5535293580988084327643f,\
+-0.0006762893110915249931f,-1.089389506561633025328f,0.5723493142465210237191f,\
+0.4420973206857362058919f,-0.1612581930858848211496f,-0.7163329171822375718293f,\
+-0.5277733874018479820478f,-0.4768406780661605948168f,-0.3993604887388358948286f,\
+-1.3804293506092022436604f,-0.1591254367281162429570f,-1.6980146860343119374903f,\
+-1.4761781930573465437817f,0.2862303841437082718713f,0.6052999005919722508295f,\
+-0.5483298295339265049364f,0.0209604427664898014527f,-0.6457183807429971444947f,\
+-0.0603329310380973649064f,0.0091414413452102355473f,1.0949883817318917245132f,\
+1.6400776092272673079009f,-0.623485665086227380804f,0.9132225220115295361012f,\
+0.0829708966832887195864f,-0.1905412057335640341194f,1.7237280439025588485435f,\
+-1.1486098807701770052603f,0.7656322424078984001383f,0.365608177776686305016f,\
+0.8275570484489896960767f,-1.1195346368945833237518f,2.009348617520048563279f,\
+-1.3914607990698013573194f,2.0854477679794358735421f,1.2877168046463016715109f,\
+-0.8111545211857794646093f,-1.4392639991852771430558f,0.5337937550547192655515f,\
+-0.4149967301072188807787f,0.7753596072101661684783f,-2.0802067762281923890555f,\
+0.0857878546561958027494f,0.6902510695334604928775f,-0.8020501997457173404271f,\
+-0.4448276219158631139550f,-0.4542741017673427861290f,0.7497806557441212271797f,\
+0.3761686067694443580400f,-0.5437950704705085680501f,0.1952712229487395811933f,\
+1.4963569359039357031804f,0.1448961397504171522144f,-1.6571742156046651572865f,\
+-2.266222156481924709936f,-0.6895293883454371997033f,0.2295209621736973848449f,\
+0.5362163385171105911553f,0.9313103118348207143384f,0.6330960821019180340130f,\
+-1.0858111091662558944648f,0.0887541886374976635166f,-0.34952319730873010473f,\
+1.2435770678983146808605f,0.3496891344866185913354f,0.8861210080034624958500f,\
+0.8494363200871917207735f,-2.6007673657870293837391f,0.1208397242502698559763f,\
+-2.7285983994246283401708f,-0.9589084058643195795923f,0.5028677894031623463178f,\
+0.1177935239520793014867f,-0.8303109816686591315715f,0.1392963806792855974148f,\
+-0.7007200653415375235511f,0.3010279059055253614297f,0.2808756871176958935798f,\
+-0.3407758216783158822238f,-0.1629402754377415607490f,-0.9384370915542669111531f,\
+-0.9062708617577245329144f,-3.8216620591432644005181f,-0.4342151148359789103459f,\
+-1.8035270857235303765265f,0.5183732162291515566110f,-0.6322771366436347184603f,\
+-1.565814486101537061913f,-0.1275146747340561437234f,1.64064977802353451075f,\
+0.3863617690782851776810f,2.0004008659625807098337f,-0.6217884089242305956091f,\
+0.5238947303594374549363f,0.6235004214546735479274f,0.2053444204279457063755f,\
+0.8703948860420792632553f,-1.0392069272746413677311f,1.003277086375655047235f,\
+-0.592126107443248783646f,1.4081926997371712051432f,0.3085101089696197229628f,\
+1.3401416840168169919423f,-0.1266586333113026985320f,-0.6461594510334438545840f,\
+-1.0118098370918304773625f,0.6188273552553577028235f,0.3590555220619524590120f,\
+-1.1731665361057745933238f,-0.6396350210213861409159f,-0.1754282371769660675564f,\
+-1.4007581459609705909486f,0.9435849228454418202716f,-0.8904968184314612233976f,\
+0.2054651558278166589844f,0.4710457442017800810952f,-0.9616306477690889087384f,\
+-0.121221389008828367428f,-0.4940626370918775878138f,-1.6256998584585298228689f,\
+0.2527933604007285839366f,0.9910414428133418329736f,-0.4204166976073123729307f,\
+-0.3726016912019385896038f,0.9512465231833235890235f,1.9770278000388763484096f,\
+0.7942630050207910574755f,0.2042467951135929216111f,-0.4515030272861193516576f,\
+0.6146475682591936440247f,-0.6290585121948016888993f,-0.1427330253584118413546f,\
+-0.0603831392611861861308f,-0.0118358773438195733624f,1.060362899843382056275f,\
+0.0968488469273018626193f,0.1916075762821658201585f,-0.4096449181703107345065f,\
+0.3696227488734469268650f,0.2664498618423789544352f,-1.1169828984464544863187f,\
+0.1529016818054778348301f,0.5016653096177513537768f,0.3713737327704177415555f,\
+1.519060224335068820523f,-0.1807259441689535728326f,1.8139275887503047979266f,\
+-0.3257752015232963649360f,2.1486960576842424330835f,-0.1051361455427324009815f,\
+-0.2626851203928968758738f,1.0103646188196337973864f,0.2148110767207350724206f,\
+0.4407052420763278299809f,-0.5122126723342420584473f,1.2412118916908576604641f,\
+0.9766933236701691445347f,2.039099736880281454887f,-0.2559919392094065493382f,\
+0.5420836083333696597819f,0.0791245311903027159772f,-0.0955893777744002970387f,\
+-1.3712286813648302263857f,2.1069701518694308184365f,-1.189922581642507859456f,\
+-1.1599757893702906663691f,-0.5696357256121767909107f,-1.3015572133370920671069f,\
+-0.5449309642239419382292f,-0.5067789559895423678881f,0.6346443332238025369918f,\
+-0.6108333161328157734360f,1.8419857567724760016858f}
+
+#define CRESULTR {-1.0378404956328399766363f,-1.133735695651125086059f,1.0339197498326544444325f,\
+0.5531122148702418694910f,-1.040340001858497842591f,1.0085860369894361632248f,\
+1.1420720538989748149561f,1.1056797792052726059353f,0.5117972485274214777817f,\
+0.9070677525728206846978f,1.0572990288526666891045f,-1.0360972400059726972188f,\
+-1.1383229838393340571656f,-0.6648420928164470167232f,-0.6807443500487321275116f,\
+-0.8031597943350016199915f,0.883947625424225447155f,-1.269412549612109586405f,\
+-1.4161063395011512788813f,-1.2859233456553140761969f,-0.5672668801729759957553f,\
+0.7745318044293433290548f,0.6947007749642374330179f,0.4991201053193883852011f,\
+0.6140034872209438887580f,0.096413007169791717366f,0.8007709883951089624432f,\
+0.8792563999787510464756f,1.0343346624696823088385f,0.0302467913897976371784f,\
+-1.1472175673143576446478f,0.3369832737151475243742f,0.9907410521400105141154f,\
+1.0796900049026223467052f,0.5594674889946016360653f,-0.1560251223940891662778f,\
+-1.1705823062338804874116f,0.4618385738778090776613f,-1.3324797047631469215645f,\
+-1.1997345609820562195580f,1.1160254294044837930500f,-1.230501878395329207194f,\
+-0.6761086369817806973614f,-1.0896592333865446899921f,-0.6710881467286168300390f,\
+-0.5798029666713722107829f,-0.6136654494083557676021f,1.1617507290156328103592f,\
+1.27276401512989068010f,-0.8120428578165023170143f,-1.1072391191957589029471f,\
+-0.2233715590492064695383f,-0.1434422451344934956730f,1.3153998337128238738103f,\
+-1.0526498309129606045786f,0.0553606627561369843415f,0.7291584643384485531215f,\
+-0.8211933984789114848724f,-1.1593353121271579020402f,1.3152057671476293787549f,\
+-1.172801856026281397405f,1.4071868225661712248353f,-1.237749706635684621148f,\
+1.1803373520872921798031f,1.5151506180989924299496f,0.7531983030718831795269f,\
+-0.9762856051169326310202f,-1.1612557605568909480098f,1.4932305416569968681273f,\
+-0.8614722664300586973951f,0.8618528735715539346174f,1.1016443473924788509777f,\
+0.9393199732131509716027f,1.0919198431908447854966f,-0.9052324038739091305317f,\
+-0.9298866314213817263479f,0.7633780893052066751636f,-0.7143116680469970836143f,\
+-1.2127221047629597183715f,-0.7227638256662162197230f,-1.253501631676815275540f,\
+-1.4738165927959636647415f,0.9413278434132237304510f,-1.1484735264203178584097f,\
+0.3698862224535668929981f,-1.0222624393360630890015f,0.6231994143282580944643f,\
+0.9950036636352803665062f,-0.2983226702432650867536f,0.0176907017367243651895f,\
+1.2324636476429444709169f,0.6361627801840686879942f,1.1459319881374090410731f,\
+-0.7953680408910630550423f,-1.4154164061425698051266f,-0.0876282946873059020998f,\
+-1.5216557556403844664317f,-0.8071142269969606708457f,0.0815747053150205070349f,\
+1.0712377179167194007903f,0.8666202597884599123645f,-0.8619222017137594393787f,\
+-0.9481006227828882026998f,0.1552413858057176687666f,-0.7506128146087278629750f,\
+-0.3836715577045819447477f,-0.5239185633043924594787f,-0.7436026090030812829568f,\
+1.0616275053374448766874f,1.4897517325664235698923f,0.4367517077925673341099f,\
+1.3246660695183969380651f,-0.9109135023203799308433f,0.5553722323129884896886f,\
+1.3365545316217091187383f,-0.9452504202661284882225f,-1.24445301968662169756f,\
+0.6665795438258386163000f,-1.314150441284937187447f,0.0550695906884250130364f,\
+0.0202332991673926272658f,0.9634857364192206397036f,0.2836842504797497110935f,\
+-1.0552170344242444155469f,0.9396260470070250114816f,-0.9303925570132891564867f,\
+0.2783356640126000702828f,1.1824291811858682610392f,0.8685688319389791578473f,\
+1.1519647668153425446036f,0.4220715686665841848146f,-1.1065714015957384130928f,\
+-0.861924596730684333679f,0.9073537157079681891858f,-0.6218839294281949259258f,\
+-1.120015581786375724604f,-0.9733844585621500566930f,0.595029230494463101664f,\
+1.175230190501943328130f,0.9508205283471821145369f,-0.8508278968495206484590f,\
+0.1541098930310453307690f,-0.8824217885955716322854f,0.8902851444120675195038f,\
+-0.6639557596979325237996f,0.1084368331219868891724f,-1.2396941127079998956617f,\
+0.3226031789257856052799f,-0.8843151570857661347702f,0.5707126023897258759732f,\
+0.3012759106579737111709f,-0.8367027089033168829602f,-1.4909615617958020816758f,\
+-0.7009193727197650103378f,-0.5098573775891588333309f,0.6979392344955810401075f,\
+-0.11360619748546052499f,-0.9509385591695135309109f,-1.253860295053432105661f,\
+0.650797750208578995590f,0.1772712514866976729611f,-0.9640945137047890467485f,\
+-0.5689005122453275609118f,-0.1250511412013994849701f,-0.4037636514907702589561f,\
+-0.7926166698304296653887f,-0.2823466357029139617296f,-1.056824688357730357424f,\
+0.9537129762345133432433f,-0.5025361511250948653995f,0.4038372312258701746224f,\
+-1.356748408455357823854f,-0.1106205947085566049237f,-1.3416335800212069173654f,\
+1.1885949854017261451133f,-1.3422443000337007656952f,0.6375731708639520434190f,\
+0.3760968575323995755078f,-0.9884746207385446403748f,0.7854115858087797885645f,\
+0.999043445647114114472f,1.033179400413832382810f,1.1526308570666976560659f,\
+0.6867562899067288784138f,-1.4009010309735028254607f,-0.6940419760103245794269f,\
+0.5354681750957488439724f,0.9063410461496741454823f,0.2034358249367814175379f,\
+1.3295608151948998809644f,1.5281379412739910517161f,-1.0737486644518823286631f,\
+1.0727905584835071284289f,-0.6577524210666327864061f,-1.1372820311372766610702f,\
+-0.1467884541731124814490f,-0.3758609793464613990643f,-0.9135278670013463608868f,\
+-0.5879353157795642603745f,1.3892627420568484097885f}
+
+#define CRESULTI {-0.3299360864553753103223f,0.5773236414575498853807f,0.4991095547887292593892f,\
+1.0331094146354482532502f,-0.3176151990967214233663f,-0.0427672547155572568833f,\
+-0.5408736725419536206516f,-0.1380553162115908116814f,-0.1495803862615101287314f,\
+0.2075977110248564960759f,0.1483156441793008761820f,0.1814264210630067153396f,\
+-0.2481388687151736549552f,-0.1914494023025192226406f,0.0475995307877313186817f,\
+0.0486725512662827888843f,0.0793454719839349342791f,0.8749639413571212998022f,\
+-0.6896294045728997845757f,-0.5086525074514365307721f,0.2944098793875352670923f,\
+-0.3917506744074427116331f,-0.1846852570799382420308f,-0.3894217746197643492678f,\
+-0.5646100518854718641748f,0.4746040014516990646065f,-0.3015127179783077537856f,\
+-0.0002750414994330601867f,-0.4738712470203229054633f,0.6504861039469930217294f,\
+0.0770111005352082517161f,-0.1450021418767060144006f,-0.2504460533174687753011f,\
+-0.1242925201299330817406f,-0.3767991401181884358884f,-0.4132076872602681860691f,\
+-0.3870747570445600693745f,-0.1287551829606753961421f,-0.5591653729797143590474f,\
+-0.3808547758746415601294f,0.0560087196606005033317f,0.0701856173788610038233f,\
+-0.3788485405347551959743f,0.0044895072328474238538f,-0.4792093730891275327188f,\
+-0.0422815385429984591514f,0.0061101098120875880007f,1.3269258764406561823535f,\
+0.50216582477378490790f,-0.3441118926473294425961f,0.2204807457606408893636f,\
+0.0790893257779779063066f,-0.1890021515648551142519f,0.518665277550073300361f,\
+-0.8006086655024508003109f,1.0073379811293934338323f,0.2137094925844510162616f,\
+0.5375421998418649094376f,-0.2320202834395212743157f,0.3256990051992574852768f,\
+-0.5075425697148114867474f,0.4587488944259289214145f,0.8635283954295314146066f,\
+-0.1297869621390935479521f,-0.852694676585578515f,0.3180243625197139989424f,\
+-0.1362504231180562963566f,0.1356147426873018091431f,-0.5110906304654022624945f,\
+0.0364746671485365880905f,0.3518205609306652159596f,-0.1882338930265980980749f,\
+-0.1641509348055795458610f,-0.1003678389496054923491f,0.3533058939584889368568f,\
+0.1400753442460135889114f,-0.3190262039403771177071f,0.1130098866744752156288f,\
+0.4874882612585151875351f,0.0821093566409674818773f,-0.4196102828902398829136f,\
+-0.451423643355465198379f,-0.2794721520836026540380f,0.0388676985912680683644f,\
+0.5261724556813406339373f,0.3369140501375452179111f,0.5021943268293638240607f,\
+-0.9466008502228719923011f,0.0813161752282447886087f,-0.3647911127697049948893f,\
+0.9402058236775613364600f,0.2373145443406108057172f,0.1741667096823807936445f,\
+0.6110175965051998225874f,-0.3276211596627106037438f,0.1205074840878167241609f,\
+-0.3776545253138779423274f,-0.8929722827626465075923f,0.549792722962075375293f,\
+0.0271042479895461374539f,-0.47522513055127707515f,0.0593823102898174345898f,\
+-0.2798313897020670570903f,0.3034375004902351569136f,0.1544875118519504486603f,\
+-0.3064946913611272250044f,-0.1233973071314871799986f,-0.9748519593919268144688f,\
+-0.2695469774323944189831f,-0.2398595153162375315237f,-0.3849351067537384318840f,\
+-0.4832629774775746844817f,0.2120502817724358168849f,-0.5500280838647416681297f,\
+-0.6567358702149050930785f,-0.0439088406752093027285f,0.3215272662057582220285f,\
+0.252983359599071477852f,0.3285524490410307585364f,-0.7260295113781071174586f,\
+0.5814783672028649430530f,0.2280478984411803411447f,0.1921683660815579341996f,\
+0.2598222279442688464890f,-1.2261944929533434844870f,0.6354501028006451779362f,\
+-0.6350507146232319266588f,0.5241840999802419576170f,0.1326112979841672367964f,\
+0.5331634907909190701503f,-0.1060363792025432461141f,-0.1405159325068739140097f,\
+-1.2650277702054697481771f,0.2669908129991411804838f,0.2495345813255305800205f,\
+-0.3316627619047222141901f,-0.2282918540535401608071f,-0.1217152595768435791035f,\
+-0.4921799931736892674827f,0.4709770755615852455556f,-0.5858164911014823728053f,\
+0.2035859669317575948444f,0.2043112301670926833630f,-0.6450693837623580062512f,\
+-0.0755935103401305513726f,-0.5356174761081086144188f,-0.3471562389208797116957f,\
+0.2328317315621121486036f,0.7651997819792383248583f,-0.3199579280419243554334f,\
+-0.3582454315092570285017f,0.7669246314230472316709f,0.5441811107763497856737f,\
+0.6504831149102675569296f,0.1580962824886572026806f,-0.2872668874651375658935f,\
+0.7084196447067554469612f,-0.2398740644903666341392f,-0.0138893916104706732079f,\
+-0.0382724601233607325534f,-0.0114683647521359316501f,1.042906817386681339599f,\
+0.0689854613036876146426f,0.1910230634709511876590f,-0.3704134917614289590482f,\
+0.1911216797569713354843f,0.2522464542416475996589f,-0.4451672855349098623101f,\
+0.0515134584128001532521f,0.4287903998263715155126f,0.3315338614185490695441f,\
+0.7124742713592439047332f,-0.1805296499983318203597f,0.5024343285394804459187f,\
+-0.0459393453273769861167f,0.3351247751616924785978f,-0.0681623033986126780626f,\
+-0.2332477835758634543417f,0.4789761892657505848447f,0.1091019217623192538724f,\
+0.1355147604481500289708f,-0.1428984493591255733325f,0.3037123307940571281804f,\
+1.5115293287912119346572f,0.4692494475562393740908f,-0.154956179496453544386f,\
+0.4557841446769143045614f,0.0301394028826129541099f,-0.0919789120268482279785f,\
+-0.8385856266070932374390f,0.5121474514176801440257f,-0.5562655937076338430458f,\
+-0.4610543161770726539039f,-0.4105611124291430047428f,-0.5820664911774818817136f,\
+-0.5994113052598605273502f,-0.4878070905668511203501f,0.2712394281598410339384f,\
+-0.5014387951037901913764f,0.5397742494143892288960f}
+
+
+
+
+
+
+void satansTest() {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=satans(in[i]);
+ assert( ( (fabs(out-res[i])) / (fabs(out)) ) <1e-7);
+ }
+}
+
+void catansTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in, out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=catans(in);
+ assert( ( (fabs(creals(out)-resR[i])) / (fabs(creals(out))) ) <1e-6);
+ assert( ( (fabs(cimags(out)-resI[i])) / (fabs(cimags(out))) ) <1e-6);
+ }
+}
+
+void satanaTest(void) {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out[200];
+ int i=0;
+
+ satana(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <1e-6);
+ }
+}
+
+void catanaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in[200], out[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(inR[i],inI[i]);
+ }
+ catana(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(creals(out[i])-resR[i])) / (fabs(creals(out[i]))) ) <1e-6);
+ assert( ( (fabs(cimags(out[i])-resI[i])) / (fabs(cimags(out[i]))) ) <1e-6);
+ }
+}
+
+
+
+int testAtan() {
+ printf("\n>>>> Float Arc tangeant Tests\n");
+ satansTest();
+ catansTest();
+ satanaTest();
+ catanaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testAtan() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/zatana.c b/2.3-1/src/c/elementaryFunctions/atan/zatana.c
new file mode 100644
index 00000000..bfe4fc34
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/zatana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atan.h"
+
+void zatana(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zatans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan/zatans.c b/2.3-1/src/c/elementaryFunctions/atan/zatans.c
new file mode 100644
index 00000000..4b8e9640
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan/zatans.c
@@ -0,0 +1,242 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ PURPOSE
+ watan compute the arctangent of a complex number
+ y = yr + i yi = atan(x), x = xr + i xi
+
+ CALLING LIST / PARAMETERS
+ subroutine watan(xr,xi,yr,yi)
+ double precision xr,xi,yr,yi
+
+ xr,xi: real and imaginary parts of the complex number
+ yr,yi: real and imaginary parts of the result
+ yr,yi may have the same memory cases than xr et xi
+
+ COPYRIGHT (C) 2001 Bruno Pincon and Lydia van Dijk
+ Written by Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr> so
+ as to get more precision. Also to fix the
+ behavior at the singular points and at the branch cuts.
+ Polished by Lydia van Dijk
+ <lvandijk@hammersmith-consulting.com>
+
+ CHANGES : - (Bruno on 2001 May 22) for ysptrk use a
+ minimax polynome to enlarge the special
+ evaluation zone |s| < SLIM. Also rename
+ this function as lnp1m1.
+ - (Bruno on 2001 June 7) better handling
+ of spurious over/underflow ; remove
+ the call to pythag ; better accuracy
+ in the real part for z near +-i
+
+ EXTERNALS FUNCTIONS
+ dlamch
+ lnp1m1 (at the end of this file)
+
+ ALGORITHM : noting z = a + i*b, we have:
+ Z = yr + yi*b = arctan(z) = (i/2) * log( (i+z)/(i-z) )
+
+ This function has two branch points at +i and -i and the
+ chosen branch cuts are the two half-straight lines
+ D1 = [i, i*oo) and D2 = (-i*oo, i]. The function is then
+ analytic in C \ (D1 U D2)).
+
+ From the definition it follows that:
+
+ yr = 0.5 Arg ( (i+z)/(i-z) ) (1)
+ yi = 0.5 log (|(i+z)/(i-z)|) (2)
+
+ so lim (z -> +- i) yr = undefined (and Nan is logical)
+ lim (z -> +i) yi = +oo
+ lim (z -> -i) yi = -oo
+
+ The real part of arctan(z) is discontinuous across D1 and D2
+ and we impose the following definitions:
+ if imag(z) > 1 then
+ Arg(arctan(z)) = pi/2 (=lim real(z) -> 0+)
+ if imag(z) < 1 then
+ Arg(arctan(z)) = -pi/2 (=lim real(z) -> 0-)
+
+
+ Basic evaluation: if we write (i+z)/(i-z) using
+ z = a + i*b, we get:
+
+ i+z 1-(a**2+b**2) + i*(2a)
+ --- = ----------------------
+ i-z a**2 + (1-b)**2
+
+ then, with r2 = |z|^2 = a**2 + b**2 :
+
+ yr = 0.5 * Arg(1-r2 + (2*a)*i)
+ = 0.5 * atan2(2a, (1-r2)) (3)
+
+ This formula is changed when r2 > RMAX (max pos float)
+ and also when |1-r2| and |a| are near 0 (see comments
+ in the code).
+
+ After some math:
+
+ yi = 0.25 * log( (a**2 + (b + 1)**2) /
+ (a**2 + (b - 1)**2) ) (4)
+
+ Evaluation for "big" |z|
+ ------------------------
+
+ If |z| is "big", the direct evaluation of yi by (4) may
+ suffer of innaccuracies and of spurious overflow. Noting
+ that s = 2 b / (1 + |z|**2), we have:
+
+ yi = 0.25 log ( (1 + s)/(1 - s) ) (5)
+
+ 3 5
+ yi = 0.25*( 2 * ( s + 1/3 s + 1/5 s + ... ))
+
+ yi = 0.25 * lnp1m1(s) if |s| < SLIM
+
+ So if |s| is less than SLIM we switch to a special
+ evaluation done by the function lnp1m1. The
+ threshold value SLIM is choosen by experiment
+ (with the Pari-gp software). For |s|
+ "very small" we used a truncated taylor dvp,
+ else a minimax polynome (see lnp1m1).
+
+ To avoid spurious overflows (which result in spurious
+ underflows for s) in computing s with s= 2 b / (1 + |z|**2)
+ when |z|^2 > RMAX (max positive float) we use :
+
+ s = 2d0 / ( (a/b)*a + b )
+
+ but if |b| = Inf this formula leads to NaN when
+ |a| is also Inf. As we have :
+
+ |s| <= 2 / |b|
+
+ we impose simply : s = 0 when |b| = Inf
+
+ Evaluation for z very near to i or -i:
+ --------------------------------------
+ Floating point numbers of the form a+i or a-i with 0 <
+ a**2 < tiny (approximately 1d-308) may lead to underflow
+ (i.e., a**2 = 0) and the logarithm will break formula (4).
+ So we switch to the following formulas:
+
+ If b = +-1 and |a| < sqrt(tiny) approximately 1d-150 (say)
+ then (by using that a**2 + 4 = 4 in machine for such a):
+
+ yi = 0.5 * log( 2/|a| ) for b=1
+
+ yi = 0.5 * log( |a|/2 ) for b=-1
+
+ finally: yi = 0.5 * sign(b) * log( 2/|a| )
+ yi = 0.5 * sign(b) * (log(2) - log(|a|)) (6)
+
+ The last trick is to avoid overflow for |a|=tiny! In fact
+ this formula may be used until a**2 + 4 = 4 so that the
+ threshold value may be larger.
+*/
+
+#include <math.h>
+#include "lapack.h"
+#include "atan.h"
+#include "abs.h"
+#include "lnp1m1.h"
+
+#define _sign(a, b) b >=0 ? a : -a
+
+doubleComplex zatans(doubleComplex z) {
+ static double sSlim = 0.2;
+ static double sAlim = 1E-150;
+ static double sTol = 0.3;
+ static double sLn2 = 0.6931471805599453094172321;
+
+ double RMax = getOverflowThreshold();
+ double Pi_2 = 2.0 * datans(1);
+
+ double _inReal = zreals(z);
+ double _inImg = zimags(z);
+ double _outReal = 0;
+ double _outImg = 0;
+
+ /* Temporary variables */
+ double R2 = 0;
+ double S = 0;
+
+
+ if(_inImg == 0)
+ {
+ _outReal = datans(_inReal);
+ _outImg = 0;
+ }
+ else
+ {
+ R2 = _inReal * _inReal + _inImg * _inImg; /* Oo */
+ if(R2 > RMax)
+ {
+ if( dabss(_inImg) > RMax)
+ S = 0;
+ else
+ S = 1 / (((0.5 * _inReal) / _inImg) * _inReal + 0.5 * _inImg );
+ }
+ else
+ S = (2 * _inImg) / (1+R2);
+
+ if(dabss(S) < sSlim)
+ {
+ /*
+ s is small: |s| < SLIM <=> |z| outside the following disks:
+ D+ = D(center = [0; 1/slim], radius = sqrt(1/slim**2 - 1)) if b > 0
+ D- = D(center = [0; -1/slim], radius = sqrt(1/slim**2 - 1)) if b < 0
+ use the special evaluation of log((1+s)/(1-s)) (5)
+ */
+ _outImg = dlnp1m1s(S) * 0.25;
+ }
+ else
+ {
+ if(dabss(S) == 1 && dabss(_inReal) <= sAlim)
+ {
+ /* |s| >= SLIM => |z| is inside D+ or D- */
+ _outImg = _sign(0.5,_inImg) * ( sLn2 - log(dabss(_inReal)));
+ }
+ else
+ {
+ _outImg = 0.25 * log((pow(_inReal,2) + pow((_inImg + 1),2)) / (pow(_inReal,2) + pow((_inImg - 1),2)));
+ }
+ }
+ if(_inReal == 0)
+ {/* z is purely imaginary */
+ if( dabss(_inImg) > 1)
+ {/* got sign(b) * pi/2 */
+ _outReal = _sign(1, _inImg) * Pi_2;
+ }
+ else if( dabss(_inImg) == 1)
+ {/* got a Nan with 0/0 */
+ _outReal = (_inReal - _inReal) / (_inReal - _inReal); /* Oo */
+ }
+ else
+ _outReal = 0;
+ }
+ else if(R2 > RMax)
+ {/* _outImg is necessarily very near sign(a)* pi/2 */
+ _outReal = _sign(1, _inReal) * Pi_2;
+ }
+ else if(dabss(1 - R2) + dabss(_inReal) <= sTol)
+ {/* |b| is very near 1 (and a is near 0) some cancellation occur in the (next) generic formula */
+ _outReal = 0.5 * atan2(2 * _inReal, (1-_inImg) * (1 + _inImg) - pow(_inReal,2));
+ }
+ else
+ _outReal = 0.5 * atan2(2 * _inReal, 1 - R2);
+ }
+
+ return DoubleComplex(_outReal, _outImg);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/Makefile.am b/2.3-1/src/c/elementaryFunctions/atan2/Makefile.am
new file mode 100644
index 00000000..becea0f4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/Makefile.am
@@ -0,0 +1,58 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libAtan2_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAtan2.la
+
+libAtan2_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = satan2s.c \
+ datan2s.c \
+ satan2a.c \
+ datan2a.c
+
+HEAD = ../includes/atan2.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan2/libAtan2.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+
+check_PROGRAMS = testAtan2
+
+TESTS = testAtan2
+
+#
+# -*- ArcTangeant2 Tests -*-
+#
+testAtan2_SOURCES = testAtan2.c
+testAtan2_CFLAGS = $(check_INCLUDES)
+testAtan2_LDADD = $(check_LDADD)
+
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/Makefile.in b/2.3-1/src/c/elementaryFunctions/atan2/Makefile.in
new file mode 100644
index 00000000..f2ccbdcd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/Makefile.in
@@ -0,0 +1,726 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testAtan2$(EXEEXT)
+TESTS = testAtan2$(EXEEXT)
+subdir = src/c/elementaryFunctions/atan2
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAtan2_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAtan2_la-satan2s.lo libAtan2_la-datan2s.lo \
+ libAtan2_la-satan2a.lo libAtan2_la-datan2a.lo
+am_libAtan2_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAtan2_la_OBJECTS = $(am_libAtan2_la_OBJECTS)
+libAtan2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAtan2_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testAtan2_OBJECTS = testAtan2-testAtan2.$(OBJEXT)
+testAtan2_OBJECTS = $(am_testAtan2_OBJECTS)
+testAtan2_DEPENDENCIES = $(check_LDADD)
+testAtan2_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testAtan2_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAtan2_la_SOURCES) $(testAtan2_SOURCES)
+DIST_SOURCES = $(libAtan2_la_SOURCES) $(testAtan2_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAtan2_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAtan2.la
+libAtan2_la_SOURCES = $(HEAD) $(SRC)
+SRC = satan2s.c \
+ datan2s.c \
+ satan2a.c \
+ datan2a.c
+
+HEAD = ../includes/atan2.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan2/libAtan2.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+
+
+#
+# -*- ArcTangeant2 Tests -*-
+#
+testAtan2_SOURCES = testAtan2.c
+testAtan2_CFLAGS = $(check_INCLUDES)
+testAtan2_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/atan2/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/atan2/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAtan2.la: $(libAtan2_la_OBJECTS) $(libAtan2_la_DEPENDENCIES)
+ $(libAtan2_la_LINK) -rpath $(pkglibdir) $(libAtan2_la_OBJECTS) $(libAtan2_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testAtan2$(EXEEXT): $(testAtan2_OBJECTS) $(testAtan2_DEPENDENCIES)
+ @rm -f testAtan2$(EXEEXT)
+ $(testAtan2_LINK) $(testAtan2_OBJECTS) $(testAtan2_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan2_la-datan2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan2_la-datan2s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan2_la-satan2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtan2_la-satan2s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testAtan2-testAtan2.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAtan2_la-satan2s.lo: satan2s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -MT libAtan2_la-satan2s.lo -MD -MP -MF $(DEPDIR)/libAtan2_la-satan2s.Tpo -c -o libAtan2_la-satan2s.lo `test -f 'satan2s.c' || echo '$(srcdir)/'`satan2s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan2_la-satan2s.Tpo $(DEPDIR)/libAtan2_la-satan2s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='satan2s.c' object='libAtan2_la-satan2s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -c -o libAtan2_la-satan2s.lo `test -f 'satan2s.c' || echo '$(srcdir)/'`satan2s.c
+
+libAtan2_la-datan2s.lo: datan2s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -MT libAtan2_la-datan2s.lo -MD -MP -MF $(DEPDIR)/libAtan2_la-datan2s.Tpo -c -o libAtan2_la-datan2s.lo `test -f 'datan2s.c' || echo '$(srcdir)/'`datan2s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan2_la-datan2s.Tpo $(DEPDIR)/libAtan2_la-datan2s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='datan2s.c' object='libAtan2_la-datan2s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -c -o libAtan2_la-datan2s.lo `test -f 'datan2s.c' || echo '$(srcdir)/'`datan2s.c
+
+libAtan2_la-satan2a.lo: satan2a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -MT libAtan2_la-satan2a.lo -MD -MP -MF $(DEPDIR)/libAtan2_la-satan2a.Tpo -c -o libAtan2_la-satan2a.lo `test -f 'satan2a.c' || echo '$(srcdir)/'`satan2a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan2_la-satan2a.Tpo $(DEPDIR)/libAtan2_la-satan2a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='satan2a.c' object='libAtan2_la-satan2a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -c -o libAtan2_la-satan2a.lo `test -f 'satan2a.c' || echo '$(srcdir)/'`satan2a.c
+
+libAtan2_la-datan2a.lo: datan2a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -MT libAtan2_la-datan2a.lo -MD -MP -MF $(DEPDIR)/libAtan2_la-datan2a.Tpo -c -o libAtan2_la-datan2a.lo `test -f 'datan2a.c' || echo '$(srcdir)/'`datan2a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtan2_la-datan2a.Tpo $(DEPDIR)/libAtan2_la-datan2a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='datan2a.c' object='libAtan2_la-datan2a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtan2_la_CFLAGS) $(CFLAGS) -c -o libAtan2_la-datan2a.lo `test -f 'datan2a.c' || echo '$(srcdir)/'`datan2a.c
+
+testAtan2-testAtan2.o: testAtan2.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAtan2_CFLAGS) $(CFLAGS) -MT testAtan2-testAtan2.o -MD -MP -MF $(DEPDIR)/testAtan2-testAtan2.Tpo -c -o testAtan2-testAtan2.o `test -f 'testAtan2.c' || echo '$(srcdir)/'`testAtan2.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testAtan2-testAtan2.Tpo $(DEPDIR)/testAtan2-testAtan2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testAtan2.c' object='testAtan2-testAtan2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAtan2_CFLAGS) $(CFLAGS) -c -o testAtan2-testAtan2.o `test -f 'testAtan2.c' || echo '$(srcdir)/'`testAtan2.c
+
+testAtan2-testAtan2.obj: testAtan2.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAtan2_CFLAGS) $(CFLAGS) -MT testAtan2-testAtan2.obj -MD -MP -MF $(DEPDIR)/testAtan2-testAtan2.Tpo -c -o testAtan2-testAtan2.obj `if test -f 'testAtan2.c'; then $(CYGPATH_W) 'testAtan2.c'; else $(CYGPATH_W) '$(srcdir)/testAtan2.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testAtan2-testAtan2.Tpo $(DEPDIR)/testAtan2-testAtan2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testAtan2.c' object='testAtan2-testAtan2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAtan2_CFLAGS) $(CFLAGS) -c -o testAtan2-testAtan2.obj `if test -f 'testAtan2.c'; then $(CYGPATH_W) 'testAtan2.c'; else $(CYGPATH_W) '$(srcdir)/testAtan2.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/datan2a.c b/2.3-1/src/c/elementaryFunctions/atan2/datan2a.c
new file mode 100644
index 00000000..49a06aed
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/datan2a.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "atan2.h"
+
+
+void datan2a(double *in1, int size1,
+ double *in2, int size2,
+ double * out)
+{
+ int i = 0;
+
+ for(i = 0 ; i < size1 && i < size2 ; ++i)
+ {
+ out[i] = datan2s( in1[i] , in2[i]) ;
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/datan2s.c b/2.3-1/src/c/elementaryFunctions/atan2/datan2s.c
new file mode 100644
index 00000000..f6c8637c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/datan2s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "atan2.h"
+
+
+double datan2s ( double x , double y ) {
+ return atan2 ( x, y ) ;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/satan2a.c b/2.3-1/src/c/elementaryFunctions/atan2/satan2a.c
new file mode 100644
index 00000000..0e563915
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/satan2a.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "atan2.h"
+
+
+void satan2a(float *in1, int size1,
+ float *in2, int size2,
+ float * out)
+{
+ int i = 0;
+
+ for(i = 0 ; i < size1 && i < size2 ; ++i)
+ {
+ out[i] = satan2s( in1[i] , in2[i]) ;
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/satan2s.c b/2.3-1/src/c/elementaryFunctions/atan2/satan2s.c
new file mode 100644
index 00000000..35015a8c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/satan2s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "atan2.h"
+
+
+float satan2s ( float x , float y ) {
+ return atan2f ( x, y ) ;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/atan2/testAtan2.c b/2.3-1/src/c/elementaryFunctions/atan2/testAtan2.c
new file mode 100644
index 00000000..bae5fe54
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atan2/testAtan2.c
@@ -0,0 +1,429 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "atan2.h"
+#include <assert.h>
+#include <stdio.h>
+#define SIZE 100
+
+
+static void satan2sTest ( void )
+{
+
+
+ int i = 0 ;
+ float Fin1[SIZE] =
+{0.0373321f,0.4293466f,0.3157233f,0.3682477f,0.1458774f,0.6768379f,0.5261979f,0.4003626f,
+0.0029108f,0.3068181f,0.7902694f,0.9577950f,0.6689271f,0.2929616f,0.8223899f,0.0179846f,
+0.8710701f,0.3181024f,0.5724473f,0.5738658f,0.3492018f,0.7067298f,0.3599201f,0.4052311f,
+0.6140811f,0.6524047f,0.0295171f,0.5668896f,0.7114017f,0.4588491f,0.4720517f,0.0623731f,
+0.0854401f,0.0134564f,0.3543002f,0.6719395f,0.1360619f,0.2119744f,0.4015942f,0.4036219f,
+0.5628382f,0.5531093f,0.0768984f,0.5360758f,0.0900212f,0.6218026f,0.0001215f,0.7219727f,
+0.6661293f,0.6799288f,0.9514125f,0.1206901f,0.7318910f,0.0831662f,0.8021909f,0.0290492f,
+0.6502991f,0.7427882f,0.2176611f,0.9788486f,0.8925237f,0.3511275f,0.4745619f,0.7699462f,
+0.0734342f,0.5894619f,0.2378993f,0.4076361f,0.4304818f,0.0370717f,0.6404148f,0.4130743f,
+0.8396902f,0.0002195f,0.5085374f,0.4754997f,0.9625065f,0.9798011f,0.0785698f,0.9150032f,
+0.6172610f,0.9964195f,0.0468599f,0.9245926f,0.9689865f,0.4916290f,0.2977053f,0.0603055f,
+0.6313472f,0.0241030f,0.1527438f,0.9481178f,0.2744266f,0.4794727f,0.4855768f,0.6764004f,
+0.8321250f,0.0125876f,0.5453780f,0.8426717f};
+ float Fin2[] =
+{0.9029165f,0.4409482f,0.8332359f,0.7233976f,0.4377150f,0.3080607f,0.8749813f,0.5355882f,
+0.3085999f,0.3354632f,0.2342486f,0.2589412f,0.8521509f,0.4821739f,0.6095218f,0.9872823f,
+0.9811427f,0.3303114f,0.3589146f,0.2780528f,0.9583482f,0.0156363f,0.2964352f,0.4685935f,
+0.4262021f,0.4217656f,0.1034854f,0.4279759f,0.7860729f,0.8568082f,0.1993437f,0.7131302f,
+0.5208952f,0.9311723f,0.4143836f,0.5980196f,0.5549106f,0.8552953f,0.3097751f,0.9446128f,
+0.2442680f,0.8760447f,0.4874215f,0.3844019f,0.0922345f,0.0705419f,0.7338807f,0.7792181f,
+0.7827638f,0.2161568f,0.3420198f,0.4300938f,0.6261753f,0.9554251f,0.4541551f,0.0029223f,
+0.0106921f,0.9746371f,0.7704261f,0.6396631f,0.9535886f,0.4148483f,0.4661540f,0.2238455f,
+0.3456973f,0.2340624f,0.6619341f,0.2691180f,0.9830249f,0.7393351f,0.2902136f,0.3995950f,
+0.9792278f,0.0075514f,0.7021023f,0.8907506f,0.6526974f,0.4136229f,0.8581691f,0.2396090f,
+0.4820042f,0.9848586f,0.4469722f,0.2329814f,0.2234514f,0.8002565f,0.7750734f,0.4825007f,
+0.7844883f,0.1534679f,0.7722877f,0.8952022f,0.9467326f,0.6981826f,0.9559161f,0.0484017f,
+0.5323521f,0.2946867f,0.6977137f,0.9376204f};
+
+ float Fout[SIZE] ;
+
+ float Result[] =
+{0.0413226f,0.7720683f,0.3621962f,0.4708637f,0.3216938f,1.1436704f,0.5414350f,0.6419116f,
+0.0094320f,0.7408287f,1.2826307f,1.3067571f,0.6655192f,0.5459780f,0.9329774f,0.0182142f,
+0.7260404f,0.7665715f,1.0107725f,1.1196046f,0.3494266f,1.5486751f,0.8818216f,0.7130133f,
+0.9640758f,0.9969006f,0.2778515f,0.9241318f,0.7355747f,0.4916683f,1.1712215f,0.0872419f,
+0.1625778f,0.0144500f,0.7073927f,0.8435390f,0.2404522f,0.2429425f,0.9137623f,0.4038071f,
+1.1613329f,0.5631677f,0.1564760f,0.9487081f,0.7732547f,1.4578319f,0.0001656f,0.7472834f,
+0.7050723f,1.2629896f,1.2256956f,0.2735775f,0.8630843f,0.0868274f,1.0556435f,1.4705351f,1.554356f,
+0.6512114f,0.2753444f,0.9919749f,0.7523326f,0.7024002f,0.7943357f,1.2878668f,0.2093122f,
+1.1928114f,0.3450245f,0.9872899f,0.4127591f,0.0501000f,1.1453135f,0.8019831f,0.7088335f,
+0.0290531f,0.6268536f,0.4903355f,0.9749046f,1.1713423f,0.0913007f,1.3146805f,0.9078258f,
+0.7912332f,0.1044568f,1.3239524f,1.3441551f,0.5508964f,0.3667243f,0.1243404f,0.6776540f,
+0.1557832f,0.1952610f,0.8140970f,0.2821348f,0.6017738f,0.4700034f,1.4993603f,1.0016604f,
+0.0426892f,0.6634603f,0.7321154f} ;
+
+
+
+
+
+
+
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ Fout[i] = satan2s( Fin1[i], Fin2[i] );
+ printf ( "%e - %e\n" , Fout[i] , Result[i] );
+ assert ( fabs ( Fout[i] - Result[i] ) / fabs( Fout[i]) < 3e-4 );
+ }
+
+}
+
+static void datan2sTest ( void )
+{
+
+
+ int i = 0 ;
+ double Fin1[SIZE] =
+{0.70964269945397973061,0.6610225578770041465759,0.7252350724302232265472,
+0.510143497958779335022,0.2824866441078484058380,0.2214915128424763679504,
+0.5767575385980308055878,0.7048253491520881652832,0.5607945644296705722809,
+0.3628880484029650688171,0.3088326244615018367767,0.9813414867967367172241,
+0.7428482254035770893097,0.1616391474381089210510,0.3652521963231265544891,
+0.3835070468485355377197,0.1169181005097925662994,0.8911246126517653465271,
+0.0634272000752389431000,0.6263941843062639236450,0.6807702076621353626251,
+0.2588596837595105171204,0.4394804346375167369843,0.8598818778991699218750,
+0.5482823201455175876617,0.8135995296761393547058,0.4898237003944814205170,
+0.0240026097744703292847,0.7369195525534451007843,0.2411156157031655311584,
+0.1529693226329982280731,0.2648359201848506927490,0.4298193217255175113678,
+0.7673939457163214683533,0.8753260499797761440277,0.3796988371759653091431,
+0.3062356826849281787872,0.3880051793530583381653,0.1047293278388679027557,
+0.7603831812739372253418,0.0340930395759642124176,0.1423966242000460624695,
+0.5554559468291699886322,0.8031897451728582382202,0.5183992316015064716339,
+0.1518561029806733131409,0.5884730662219226360321,0.2545093484222888946533,
+0.9992679939605295658112,0.6398976957425475120544,0.5506716123782098293304,
+0.4607007671147584915161,0.5933007937856018543243,0.6538193570449948310852,
+0.4168340521864593029022,0.9910155385732650756836,0.3720780410803854465485,
+0.7061824081465601921082,0.5780865414999425411224,0.602319641038775444031,
+0.5715096746571362018585,0.0549629041925072669983,0.1205854485742747784,
+0.0143620483577251434326,0.0257951230742037296295,0.8411248764023184776306,
+0.4381882525049149990082,0.4643401596695184707642,0.4197426405735313892365,
+0.8023654492571949958801,0.5228588166646659374237,0.5095121040940284729004,
+0.4531980180181562900543,0.7817818326875567436218,0.776557037141174077988,
+0.0466059204190969467163,0.5113326688297092914581,0.7502101892605423927307,
+0.6883628661744296550751,0.0167756117880344390869,0.9345410899259150028229,
+0.5609863763675093650818,0.2205847105942666530609,0.7648540753871202468872,
+0.4816976976580917835236,0.1558785634115338325500,0.2476022052578628063202,
+0.5216529071331024169922,0.0805230387486517429352,0.4409417239949107170105,
+0.8911933614872395992279,0.9780590813606977462769,0.4588093762286007404327,
+0.5510440031066536903381,0.0960960905067622661591,0.4196785055100917816162,
+0.7502556503750383853912,0.7218149593099951744080,0.2895541018806397914886,
+0.3907764498144388198853}
+;
+ double Fin2[SIZE] =
+{0.6686618146486580371857,0.4877656819298863410950,0.4685971769504249095917,
+0.3562648519873619079590,0.3442325466312468051910,0.4253307832404971122742,
+0.5588058172725141048431,0.3304864969104528427124,0.4157403339631855487823,
+0.1595822656527161598206,0.3883102680556476116180,0.9415460713207721710205,
+0.4722979352809488773346,0.8533652639016509056091,0.1207739165984094142914,
+0.8999380934983491897583,0.4384902161546051502228,0.8976056622341275215149,
+0.4911110657267272472382,0.3402217179536819458008,0.9966153600253164768219,
+0.0215395865961909294128,0.6876890822313725948334,0.0044924151152372360229,
+0.6397854541428387165070,0.5416147718206048011780,0.2247649203054606914520,
+0.7364005260169506072998,0.4496364505030214786530,0.9678138038143515586853,
+0.6489060199819505214691,0.2544666919857263565063,0.1923975017853081226349,
+0.6861492367461323738098,0.4231455805711448192596,0.6734441593289375305176,
+0.8270696722902357578278,0.9360805852338671684265,0.8326222090981900691986,
+0.7424779590219259262085,0.0194640238769352436066,0.8016031915321946144104,
+0.2554539437405765056610,0.2688109613955020904541,0.7558490769006311893463,
+0.4347589677199721336365,0.6425966522656381130219,0.6957868058234453201294,
+0.6499576461501419544220,0.2303190128877758979797,0.5504368054680526256561,
+0.3038997054100036621094,0.0371030517853796482086,0.1703881053254008293152,
+0.5698686256073415279388,0.0036411266773939132690,0.4491547052748501300812,
+0.0576810697093605995178,0.4956056098453700542450,0.1888933442533016204834,
+0.5641230703331530094147,0.8562210192903876304626,0.0794764286838471889496,
+0.6196198705583810806274,0.2241039988584816455841,0.8582094730809330940247,
+0.7114551994018256664276,0.8026027604937553405762,0.6153324418701231479645,
+0.8958183480426669120789,0.8721761344932019710541,0.8389767911285161972046,
+0.2040955354459583759308,0.3166538262739777565002,0.7006825651042163372040,
+0.2073105163872241973877,0.5222550616599619388580,0.9416420971974730491638,
+0.52116033947095274925,0.4509841967374086380005,0.3961292845197021961212,
+0.7240869747474789619446,0.6724055963568389415741,0.2386146038770675659180,
+0.7124841609038412570953,0.3286493895575404167175,0.4837769134901463985443,
+0.7662767004221677780151,0.3153839264996349811554,0.3489987561479210853577,
+0.7413818310014903545380,0.9702721945941448211670,0.1276510567404329776764,
+0.3828862151131033897400,0.4882477498613297939301,0.5191949699074029922485,
+0.0906856027431786060333,0.6833897503092885017395,0.5022272053174674510956,
+0.0540433898568153381348}
+
+ ;
+ double Fout[SIZE] ;
+
+double Result[] =
+{0.8151222298353714146302,0.9350871051642664077974,0.997145470042032466829,
+0.9611705131081605957277,0.6871926567255678408586,0.48011041457317088499,
+0.8012054946208865269242,1.132343901220193460588,0.9328596693816280094325,
+1.1564937347686861102147,0.6718834468335361798097,0.8060908633813578250127,
+1.00447314922565955619,0.1871960989477313985763,1.25145462350922120898,
+0.4028428263783953022781,0.2605755136377292391359,0.781774911019853857574,
+0.1284394521185465987134,1.073232720478735968683,0.5992812665317298614909,
+1.4877780687994013320008,0.5686520903625903455847,1.5655719182360376962038,
+0.7085314645036139280521,0.9834619198256084882104,1.140591448484360226345,
+0.0325829683756781798842,1.0229420689159220980713,0.2441637219657823987262,
+0.2315075947889858876128,0.805363112922971136065,1.1499199282073593320064,
+0.8412343166232832958329,1.1205046812517129861675,0.5133888656295326757828,
+0.3546137657219728400726,0.3929433432393027447738,0.1251254110872664360166,
+0.7973116893083483924798,1.0520419606393343059381,0.1758058639068769690716,
+1.1397404905667376517897,1.2478349146446092721163,0.6011661864384908460224,
+0.336040406143340686373,0.7414617770855178591205,0.35066862507579671382,
+0.994116233357116407809,1.225301837543258720586,0.7856114093437986944934,
+0.9876695123648748797507,1.5083409965621017434501,1.3158623593693956621564,
+0.6315271916809107599633,1.5671222065095873343665,0.6918174612768925868522,
+1.4892971216950183777072,0.8620674912261098166155,1.2669007116100525767166,
+0.7919024670030506696250,0.0641044712091229373918,0.9880588227443989346455,
+0.0231746556747607738991,0.1145990356665423787197,0.7753448027391854902035,
+0.5520317684396915947076,0.5244928157781221234046,0.5986382937223412303851,
+0.730422528982288210564,0.5400426833033002971263,0.5457711699419741657735,
+1.1476553996273199942380,1.1859516842120860768972,0.8367154013891151542737,
+0.2211356254003243038131,0.7748311007637324054897,0.6727280587907351616650,
+0.9227659311220508531193,0.0371806395770535452749,1.16987833340959523909,
+0.6591538541213141089159,0.3169908006212094342402,1.2683907108855461132180,
+0.5944925989956957312899,0.4428774366489620084586,0.4730514714397818787361,
+0.5976982909559278578371,0.2499770826480406105130,0.9012690725036259786762,
+0.8769058262572594353301,0.7893948375778501169719,1.2994367291712400902526,
+0.9635433198261218468161,0.1943343662922066283905,0.6797968572652465235606,
+1.4505069462951736269929,0.8127362698086932901731,0.5229909037180106023968,
+1.4333705873570850020116};
+
+
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ Fout[i] = datan2s( Fin1[i], Fin2[i] );
+ printf ( "%e - %e\n" , Fout[i] , Result[i] );
+ assert ( fabs ( Fout[i] - Result[i] ) / fabs( Fout[i]) < 1e-16 );
+ }
+
+}
+
+
+static void satan2aTest ( void )
+{
+
+
+ int i = 0 ;
+ float Fin1[SIZE] =
+{0.0373321f,0.4293466f,0.3157233f,0.3682477f,0.1458774f,0.6768379f,0.5261979f,0.4003626f,
+0.0029108f,0.3068181f,0.7902694f,0.9577950f,0.6689271f,0.2929616f,0.8223899f,0.0179846f,
+0.8710701f,0.3181024f,0.5724473f,0.5738658f,0.3492018f,0.7067298f,0.3599201f,0.4052311f,
+0.6140811f,0.6524047f,0.0295171f,0.5668896f,0.7114017f,0.4588491f,0.4720517f,0.0623731f,
+0.0854401f,0.0134564f,0.3543002f,0.6719395f,0.1360619f,0.2119744f,0.4015942f,0.4036219f,
+0.5628382f,0.5531093f,0.0768984f,0.5360758f,0.0900212f,0.6218026f,0.0001215f,0.7219727f,
+0.6661293f,0.6799288f,0.9514125f,0.1206901f,0.7318910f,0.0831662f,0.8021909f,0.0290492f,
+0.6502991f,0.7427882f,0.2176611f,0.9788486f,0.8925237f,0.3511275f,0.4745619f,0.7699462f,
+0.0734342f,0.5894619f,0.2378993f,0.4076361f,0.4304818f,0.0370717f,0.6404148f,0.4130743f,
+0.8396902f,0.0002195f,0.5085374f,0.4754997f,0.9625065f,0.9798011f,0.0785698f,0.9150032f,
+0.6172610f,0.9964195f,0.0468599f,0.9245926f,0.9689865f,0.4916290f,0.2977053f,0.0603055f,
+0.6313472f,0.0241030f,0.1527438f,0.9481178f,0.2744266f,0.4794727f,0.4855768f,0.6764004f,
+0.8321250f,0.0125876f,0.5453780f,0.8426717f};
+ float Fin2[] =
+{0.9029165f,0.4409482f,0.8332359f,0.7233976f,0.4377150f,0.3080607f,0.8749813f,0.5355882f,
+0.3085999f,0.3354632f,0.2342486f,0.2589412f,0.8521509f,0.4821739f,0.6095218f,0.9872823f,
+0.9811427f,0.3303114f,0.3589146f,0.2780528f,0.9583482f,0.0156363f,0.2964352f,0.4685935f,
+0.4262021f,0.4217656f,0.1034854f,0.4279759f,0.7860729f,0.8568082f,0.1993437f,0.7131302f,
+0.5208952f,0.9311723f,0.4143836f,0.5980196f,0.5549106f,0.8552953f,0.3097751f,0.9446128f,
+0.2442680f,0.8760447f,0.4874215f,0.3844019f,0.0922345f,0.0705419f,0.7338807f,0.7792181f,
+0.7827638f,0.2161568f,0.3420198f,0.4300938f,0.6261753f,0.9554251f,0.4541551f,0.0029223f,
+0.0106921f,0.9746371f,0.7704261f,0.6396631f,0.9535886f,0.4148483f,0.4661540f,0.2238455f,
+0.3456973f,0.2340624f,0.6619341f,0.2691180f,0.9830249f,0.7393351f,0.2902136f,0.3995950f,
+0.9792278f,0.0075514f,0.7021023f,0.8907506f,0.6526974f,0.4136229f,0.8581691f,0.2396090f,
+0.4820042f,0.9848586f,0.4469722f,0.2329814f,0.2234514f,0.8002565f,0.7750734f,0.4825007f,
+0.7844883f,0.1534679f,0.7722877f,0.8952022f,0.9467326f,0.6981826f,0.9559161f,0.0484017f,
+0.5323521f,0.2946867f,0.6977137f,0.9376204f};
+
+ float Fout[SIZE] ;
+
+ float Result[] =
+{0.0413226f,0.7720683f,0.3621962f,0.4708637f,0.3216938f,1.1436704f,0.5414350f,0.6419116f,
+0.0094320f,0.7408287f,1.2826307f,1.3067571f,0.6655192f,0.5459780f,0.9329774f,0.0182142f,
+0.7260404f,0.7665715f,1.0107725f,1.1196046f,0.3494266f,1.5486751f,0.8818216f,0.7130133f,
+0.9640758f,0.9969006f,0.2778515f,0.9241318f,0.7355747f,0.4916683f,1.1712215f,0.0872419f,
+0.1625778f,0.0144500f,0.7073927f,0.8435390f,0.2404522f,0.2429425f,0.9137623f,0.4038071f,
+1.1613329f,0.5631677f,0.1564760f,0.9487081f,0.7732547f,1.4578319f,0.0001656f,0.7472834f,
+0.7050723f,1.2629896f,1.2256956f,0.2735775f,0.8630843f,0.0868274f,1.0556435f,1.4705351f,1.554356f,
+0.6512114f,0.2753444f,0.9919749f,0.7523326f,0.7024002f,0.7943357f,1.2878668f,0.2093122f,
+1.1928114f,0.3450245f,0.9872899f,0.4127591f,0.0501000f,1.1453135f,0.8019831f,0.7088335f,
+0.0290531f,0.6268536f,0.4903355f,0.9749046f,1.1713423f,0.0913007f,1.3146805f,0.9078258f,
+0.7912332f,0.1044568f,1.3239524f,1.3441551f,0.5508964f,0.3667243f,0.1243404f,0.6776540f,
+0.1557832f,0.1952610f,0.8140970f,0.2821348f,0.6017738f,0.4700034f,1.4993603f,1.0016604f,
+0.0426892f,0.6634603f,0.7321154f} ;
+
+
+
+
+
+
+ satan2a( Fin1, SIZE , Fin2 , SIZE , Fout );
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ printf ( "%e - %e\n" , Fout[i] , Result[i] );
+ assert ( fabs ( Fout[i] - Result[i] ) / fabs( Fout[i]) < 3e-4 );
+ }
+
+}
+
+static void datan2aTest ( void )
+{
+
+
+ int i = 0 ;
+ double Fin1[SIZE] =
+{0.70964269945397973061,0.6610225578770041465759,0.7252350724302232265472,
+0.510143497958779335022,0.2824866441078484058380,0.2214915128424763679504,
+0.5767575385980308055878,0.7048253491520881652832,0.5607945644296705722809,
+0.3628880484029650688171,0.3088326244615018367767,0.9813414867967367172241,
+0.7428482254035770893097,0.1616391474381089210510,0.3652521963231265544891,
+0.3835070468485355377197,0.1169181005097925662994,0.8911246126517653465271,
+0.0634272000752389431000,0.6263941843062639236450,0.6807702076621353626251,
+0.2588596837595105171204,0.4394804346375167369843,0.8598818778991699218750,
+0.5482823201455175876617,0.8135995296761393547058,0.4898237003944814205170,
+0.0240026097744703292847,0.7369195525534451007843,0.2411156157031655311584,
+0.1529693226329982280731,0.2648359201848506927490,0.4298193217255175113678,
+0.7673939457163214683533,0.8753260499797761440277,0.3796988371759653091431,
+0.3062356826849281787872,0.3880051793530583381653,0.1047293278388679027557,
+0.7603831812739372253418,0.0340930395759642124176,0.1423966242000460624695,
+0.5554559468291699886322,0.8031897451728582382202,0.5183992316015064716339,
+0.1518561029806733131409,0.5884730662219226360321,0.2545093484222888946533,
+0.9992679939605295658112,0.6398976957425475120544,0.5506716123782098293304,
+0.4607007671147584915161,0.5933007937856018543243,0.6538193570449948310852,
+0.4168340521864593029022,0.9910155385732650756836,0.3720780410803854465485,
+0.7061824081465601921082,0.5780865414999425411224,0.602319641038775444031,
+0.5715096746571362018585,0.0549629041925072669983,0.1205854485742747784,
+0.0143620483577251434326,0.0257951230742037296295,0.8411248764023184776306,
+0.4381882525049149990082,0.4643401596695184707642,0.4197426405735313892365,
+0.8023654492571949958801,0.5228588166646659374237,0.5095121040940284729004,
+0.4531980180181562900543,0.7817818326875567436218,0.776557037141174077988,
+0.0466059204190969467163,0.5113326688297092914581,0.7502101892605423927307,
+0.6883628661744296550751,0.0167756117880344390869,0.9345410899259150028229,
+0.5609863763675093650818,0.2205847105942666530609,0.7648540753871202468872,
+0.4816976976580917835236,0.1558785634115338325500,0.2476022052578628063202,
+0.5216529071331024169922,0.0805230387486517429352,0.4409417239949107170105,
+0.8911933614872395992279,0.9780590813606977462769,0.4588093762286007404327,
+0.5510440031066536903381,0.0960960905067622661591,0.4196785055100917816162,
+0.7502556503750383853912,0.7218149593099951744080,0.2895541018806397914886,
+0.3907764498144388198853}
+;
+ double Fin2[SIZE] =
+{0.6686618146486580371857,0.4877656819298863410950,0.4685971769504249095917,
+0.3562648519873619079590,0.3442325466312468051910,0.4253307832404971122742,
+0.5588058172725141048431,0.3304864969104528427124,0.4157403339631855487823,
+0.1595822656527161598206,0.3883102680556476116180,0.9415460713207721710205,
+0.4722979352809488773346,0.8533652639016509056091,0.1207739165984094142914,
+0.8999380934983491897583,0.4384902161546051502228,0.8976056622341275215149,
+0.4911110657267272472382,0.3402217179536819458008,0.9966153600253164768219,
+0.0215395865961909294128,0.6876890822313725948334,0.0044924151152372360229,
+0.6397854541428387165070,0.5416147718206048011780,0.2247649203054606914520,
+0.7364005260169506072998,0.4496364505030214786530,0.9678138038143515586853,
+0.6489060199819505214691,0.2544666919857263565063,0.1923975017853081226349,
+0.6861492367461323738098,0.4231455805711448192596,0.6734441593289375305176,
+0.8270696722902357578278,0.9360805852338671684265,0.8326222090981900691986,
+0.7424779590219259262085,0.0194640238769352436066,0.8016031915321946144104,
+0.2554539437405765056610,0.2688109613955020904541,0.7558490769006311893463,
+0.4347589677199721336365,0.6425966522656381130219,0.6957868058234453201294,
+0.6499576461501419544220,0.2303190128877758979797,0.5504368054680526256561,
+0.3038997054100036621094,0.0371030517853796482086,0.1703881053254008293152,
+0.5698686256073415279388,0.0036411266773939132690,0.4491547052748501300812,
+0.0576810697093605995178,0.4956056098453700542450,0.1888933442533016204834,
+0.5641230703331530094147,0.8562210192903876304626,0.0794764286838471889496,
+0.6196198705583810806274,0.2241039988584816455841,0.8582094730809330940247,
+0.7114551994018256664276,0.8026027604937553405762,0.6153324418701231479645,
+0.8958183480426669120789,0.8721761344932019710541,0.8389767911285161972046,
+0.2040955354459583759308,0.3166538262739777565002,0.7006825651042163372040,
+0.2073105163872241973877,0.5222550616599619388580,0.9416420971974730491638,
+0.52116033947095274925,0.4509841967374086380005,0.3961292845197021961212,
+0.7240869747474789619446,0.6724055963568389415741,0.2386146038770675659180,
+0.7124841609038412570953,0.3286493895575404167175,0.4837769134901463985443,
+0.7662767004221677780151,0.3153839264996349811554,0.3489987561479210853577,
+0.7413818310014903545380,0.9702721945941448211670,0.1276510567404329776764,
+0.3828862151131033897400,0.4882477498613297939301,0.5191949699074029922485,
+0.0906856027431786060333,0.6833897503092885017395,0.5022272053174674510956,
+0.0540433898568153381348}
+
+ ;
+ double Fout[SIZE] ;
+
+double Result[] =
+{0.8151222298353714146302,0.9350871051642664077974,0.997145470042032466829,
+0.9611705131081605957277,0.6871926567255678408586,0.48011041457317088499,
+0.8012054946208865269242,1.132343901220193460588,0.9328596693816280094325,
+1.1564937347686861102147,0.6718834468335361798097,0.8060908633813578250127,
+1.00447314922565955619,0.1871960989477313985763,1.25145462350922120898,
+0.4028428263783953022781,0.2605755136377292391359,0.781774911019853857574,
+0.1284394521185465987134,1.073232720478735968683,0.5992812665317298614909,
+1.4877780687994013320008,0.5686520903625903455847,1.5655719182360376962038,
+0.7085314645036139280521,0.9834619198256084882104,1.140591448484360226345,
+0.0325829683756781798842,1.0229420689159220980713,0.2441637219657823987262,
+0.2315075947889858876128,0.805363112922971136065,1.1499199282073593320064,
+0.8412343166232832958329,1.1205046812517129861675,0.5133888656295326757828,
+0.3546137657219728400726,0.3929433432393027447738,0.1251254110872664360166,
+0.7973116893083483924798,1.0520419606393343059381,0.1758058639068769690716,
+1.1397404905667376517897,1.2478349146446092721163,0.6011661864384908460224,
+0.336040406143340686373,0.7414617770855178591205,0.35066862507579671382,
+0.994116233357116407809,1.225301837543258720586,0.7856114093437986944934,
+0.9876695123648748797507,1.5083409965621017434501,1.3158623593693956621564,
+0.6315271916809107599633,1.5671222065095873343665,0.6918174612768925868522,
+1.4892971216950183777072,0.8620674912261098166155,1.2669007116100525767166,
+0.7919024670030506696250,0.0641044712091229373918,0.9880588227443989346455,
+0.0231746556747607738991,0.1145990356665423787197,0.7753448027391854902035,
+0.5520317684396915947076,0.5244928157781221234046,0.5986382937223412303851,
+0.730422528982288210564,0.5400426833033002971263,0.5457711699419741657735,
+1.1476553996273199942380,1.1859516842120860768972,0.8367154013891151542737,
+0.2211356254003243038131,0.7748311007637324054897,0.6727280587907351616650,
+0.9227659311220508531193,0.0371806395770535452749,1.16987833340959523909,
+0.6591538541213141089159,0.3169908006212094342402,1.2683907108855461132180,
+0.5944925989956957312899,0.4428774366489620084586,0.4730514714397818787361,
+0.5976982909559278578371,0.2499770826480406105130,0.9012690725036259786762,
+0.8769058262572594353301,0.7893948375778501169719,1.2994367291712400902526,
+0.9635433198261218468161,0.1943343662922066283905,0.6797968572652465235606,
+1.4505069462951736269929,0.8127362698086932901731,0.5229909037180106023968,
+1.4333705873570850020116};
+
+
+
+ datan2a( Fin1, SIZE , Fin2 , SIZE , Fout );
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ printf ( "%e - %e\n" , Fout[i] , Result[i] );
+ assert ( fabs ( Fout[i] - Result[i] ) / fabs( Fout[i]) < 1e-17 );
+ }
+
+}
+
+
+
+
+static int testAtan2 (void) {
+
+ printf("\n>>>> Float a Tests\n");
+ satan2aTest();
+printf("\t>>>> Double a Tests\n");
+ datan2aTest();
+printf("\t>>>> Double s Tests\n");
+ datan2sTest();
+printf("\t>>>> Float s Tests\n");
+ satan2sTest();
+
+ return 0;
+}
+
+
+int main(void) {
+ assert(testAtan2() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atand/datanda.c b/2.3-1/src/c/elementaryFunctions/atand/datanda.c
new file mode 100644
index 00000000..5bf8cd9c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atand/datanda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "atand.h"
+
+void datanda(double* x, int size, double* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = datands(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atand/datands.c b/2.3-1/src/c/elementaryFunctions/atand/datands.c
new file mode 100644
index 00000000..8346ebe9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atand/datands.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "atand.h"
+
+double datands(double x)
+{
+ return ((atan(x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atand/satanda.c b/2.3-1/src/c/elementaryFunctions/atand/satanda.c
new file mode 100644
index 00000000..1669d69b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atand/satanda.c
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include "atand.h"
+
+void satanda(float* x, int size, float* y)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ y[i] = satands(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atand/satands.c b/2.3-1/src/c/elementaryFunctions/atand/satands.c
new file mode 100644
index 00000000..49ee6286
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atand/satands.c
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#include <math.h>
+#include "atand.h"
+
+double satands(float x)
+{
+ return ((atan(x)*180)/3.14159265359);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/Makefile.am b/2.3-1/src/c/elementaryFunctions/atanh/Makefile.am
new file mode 100644
index 00000000..df8ec211
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/Makefile.am
@@ -0,0 +1,68 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAtanh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAtanh.la
+
+libAtanh_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = satanhs.c \
+ datanhs.c \
+ catanhs.c \
+ zatanhs.c \
+ satanha.c \
+ datanha.c \
+ catanha.c \
+ zatanha.c
+
+HEAD = ../includes/atanh.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atanh/libAtanh.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatAtanh testDoubleAtanh
+
+TESTS = testFloatAtanh testDoubleAtanh
+
+#
+# -*- Hyperbolic ArcTangeant Tests -*-
+#
+testFloatAtanh_SOURCES = testAtanh.h testFloatAtanh.c
+testFloatAtanh_CFLAGS = $(check_INCLUDES)
+testFloatAtanh_LDADD = $(check_LDADD)
+
+testDoubleAtanh_SOURCES = testAtanh.h testDoubleAtanh.c
+testDoubleAtanh_CFLAGS = $(check_INCLUDES)
+testDoubleAtanh_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/Makefile.in b/2.3-1/src/c/elementaryFunctions/atanh/Makefile.in
new file mode 100644
index 00000000..d1541b3e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/Makefile.in
@@ -0,0 +1,809 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatAtanh$(EXEEXT) testDoubleAtanh$(EXEEXT)
+TESTS = testFloatAtanh$(EXEEXT) testDoubleAtanh$(EXEEXT)
+subdir = src/c/elementaryFunctions/atanh
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAtanh_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libAtanh_la-satanhs.lo libAtanh_la-datanhs.lo \
+ libAtanh_la-catanhs.lo libAtanh_la-zatanhs.lo \
+ libAtanh_la-satanha.lo libAtanh_la-datanha.lo \
+ libAtanh_la-catanha.lo libAtanh_la-zatanha.lo
+am_libAtanh_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libAtanh_la_OBJECTS = $(am_libAtanh_la_OBJECTS)
+libAtanh_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAtanh_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleAtanh_OBJECTS = \
+ testDoubleAtanh-testDoubleAtanh.$(OBJEXT)
+testDoubleAtanh_OBJECTS = $(am_testDoubleAtanh_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atanh/libAtanh.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la
+testDoubleAtanh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleAtanh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleAtanh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatAtanh_OBJECTS = testFloatAtanh-testFloatAtanh.$(OBJEXT)
+testFloatAtanh_OBJECTS = $(am_testFloatAtanh_OBJECTS)
+testFloatAtanh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatAtanh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatAtanh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAtanh_la_SOURCES) $(testDoubleAtanh_SOURCES) \
+ $(testFloatAtanh_SOURCES)
+DIST_SOURCES = $(libAtanh_la_SOURCES) $(testDoubleAtanh_SOURCES) \
+ $(testFloatAtanh_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAtanh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAtanh.la
+libAtanh_la_SOURCES = $(HEAD) $(SRC)
+SRC = satanhs.c \
+ datanhs.c \
+ catanhs.c \
+ zatanhs.c \
+ satanha.c \
+ datanha.c \
+ catanha.c \
+ zatanha.c
+
+HEAD = ../includes/atanh.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/atan/libAtan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/atanh/libAtanh.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/isnan/libIsnan.la \
+ @LIBMATH@
+
+
+#
+# -*- Hyperbolic ArcTangeant Tests -*-
+#
+testFloatAtanh_SOURCES = testAtanh.h testFloatAtanh.c
+testFloatAtanh_CFLAGS = $(check_INCLUDES)
+testFloatAtanh_LDADD = $(check_LDADD)
+testDoubleAtanh_SOURCES = testAtanh.h testDoubleAtanh.c
+testDoubleAtanh_CFLAGS = $(check_INCLUDES)
+testDoubleAtanh_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/atanh/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/atanh/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAtanh.la: $(libAtanh_la_OBJECTS) $(libAtanh_la_DEPENDENCIES)
+ $(libAtanh_la_LINK) -rpath $(pkglibdir) $(libAtanh_la_OBJECTS) $(libAtanh_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleAtanh$(EXEEXT): $(testDoubleAtanh_OBJECTS) $(testDoubleAtanh_DEPENDENCIES)
+ @rm -f testDoubleAtanh$(EXEEXT)
+ $(testDoubleAtanh_LINK) $(testDoubleAtanh_OBJECTS) $(testDoubleAtanh_LDADD) $(LIBS)
+testFloatAtanh$(EXEEXT): $(testFloatAtanh_OBJECTS) $(testFloatAtanh_DEPENDENCIES)
+ @rm -f testFloatAtanh$(EXEEXT)
+ $(testFloatAtanh_LINK) $(testFloatAtanh_OBJECTS) $(testFloatAtanh_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-catanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-catanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-datanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-datanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-satanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-satanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-zatanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAtanh_la-zatanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatAtanh-testFloatAtanh.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAtanh_la-satanhs.lo: satanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-satanhs.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-satanhs.Tpo -c -o libAtanh_la-satanhs.lo `test -f 'satanhs.c' || echo '$(srcdir)/'`satanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-satanhs.Tpo $(DEPDIR)/libAtanh_la-satanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='satanhs.c' object='libAtanh_la-satanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-satanhs.lo `test -f 'satanhs.c' || echo '$(srcdir)/'`satanhs.c
+
+libAtanh_la-datanhs.lo: datanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-datanhs.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-datanhs.Tpo -c -o libAtanh_la-datanhs.lo `test -f 'datanhs.c' || echo '$(srcdir)/'`datanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-datanhs.Tpo $(DEPDIR)/libAtanh_la-datanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='datanhs.c' object='libAtanh_la-datanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-datanhs.lo `test -f 'datanhs.c' || echo '$(srcdir)/'`datanhs.c
+
+libAtanh_la-catanhs.lo: catanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-catanhs.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-catanhs.Tpo -c -o libAtanh_la-catanhs.lo `test -f 'catanhs.c' || echo '$(srcdir)/'`catanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-catanhs.Tpo $(DEPDIR)/libAtanh_la-catanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='catanhs.c' object='libAtanh_la-catanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-catanhs.lo `test -f 'catanhs.c' || echo '$(srcdir)/'`catanhs.c
+
+libAtanh_la-zatanhs.lo: zatanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-zatanhs.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-zatanhs.Tpo -c -o libAtanh_la-zatanhs.lo `test -f 'zatanhs.c' || echo '$(srcdir)/'`zatanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-zatanhs.Tpo $(DEPDIR)/libAtanh_la-zatanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zatanhs.c' object='libAtanh_la-zatanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-zatanhs.lo `test -f 'zatanhs.c' || echo '$(srcdir)/'`zatanhs.c
+
+libAtanh_la-satanha.lo: satanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-satanha.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-satanha.Tpo -c -o libAtanh_la-satanha.lo `test -f 'satanha.c' || echo '$(srcdir)/'`satanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-satanha.Tpo $(DEPDIR)/libAtanh_la-satanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='satanha.c' object='libAtanh_la-satanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-satanha.lo `test -f 'satanha.c' || echo '$(srcdir)/'`satanha.c
+
+libAtanh_la-datanha.lo: datanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-datanha.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-datanha.Tpo -c -o libAtanh_la-datanha.lo `test -f 'datanha.c' || echo '$(srcdir)/'`datanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-datanha.Tpo $(DEPDIR)/libAtanh_la-datanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='datanha.c' object='libAtanh_la-datanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-datanha.lo `test -f 'datanha.c' || echo '$(srcdir)/'`datanha.c
+
+libAtanh_la-catanha.lo: catanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-catanha.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-catanha.Tpo -c -o libAtanh_la-catanha.lo `test -f 'catanha.c' || echo '$(srcdir)/'`catanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-catanha.Tpo $(DEPDIR)/libAtanh_la-catanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='catanha.c' object='libAtanh_la-catanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-catanha.lo `test -f 'catanha.c' || echo '$(srcdir)/'`catanha.c
+
+libAtanh_la-zatanha.lo: zatanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -MT libAtanh_la-zatanha.lo -MD -MP -MF $(DEPDIR)/libAtanh_la-zatanha.Tpo -c -o libAtanh_la-zatanha.lo `test -f 'zatanha.c' || echo '$(srcdir)/'`zatanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAtanh_la-zatanha.Tpo $(DEPDIR)/libAtanh_la-zatanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zatanha.c' object='libAtanh_la-zatanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAtanh_la_CFLAGS) $(CFLAGS) -c -o libAtanh_la-zatanha.lo `test -f 'zatanha.c' || echo '$(srcdir)/'`zatanha.c
+
+testDoubleAtanh-testDoubleAtanh.o: testDoubleAtanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtanh_CFLAGS) $(CFLAGS) -MT testDoubleAtanh-testDoubleAtanh.o -MD -MP -MF $(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Tpo -c -o testDoubleAtanh-testDoubleAtanh.o `test -f 'testDoubleAtanh.c' || echo '$(srcdir)/'`testDoubleAtanh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Tpo $(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAtanh.c' object='testDoubleAtanh-testDoubleAtanh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtanh_CFLAGS) $(CFLAGS) -c -o testDoubleAtanh-testDoubleAtanh.o `test -f 'testDoubleAtanh.c' || echo '$(srcdir)/'`testDoubleAtanh.c
+
+testDoubleAtanh-testDoubleAtanh.obj: testDoubleAtanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtanh_CFLAGS) $(CFLAGS) -MT testDoubleAtanh-testDoubleAtanh.obj -MD -MP -MF $(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Tpo -c -o testDoubleAtanh-testDoubleAtanh.obj `if test -f 'testDoubleAtanh.c'; then $(CYGPATH_W) 'testDoubleAtanh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAtanh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Tpo $(DEPDIR)/testDoubleAtanh-testDoubleAtanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleAtanh.c' object='testDoubleAtanh-testDoubleAtanh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleAtanh_CFLAGS) $(CFLAGS) -c -o testDoubleAtanh-testDoubleAtanh.obj `if test -f 'testDoubleAtanh.c'; then $(CYGPATH_W) 'testDoubleAtanh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleAtanh.c'; fi`
+
+testFloatAtanh-testFloatAtanh.o: testFloatAtanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtanh_CFLAGS) $(CFLAGS) -MT testFloatAtanh-testFloatAtanh.o -MD -MP -MF $(DEPDIR)/testFloatAtanh-testFloatAtanh.Tpo -c -o testFloatAtanh-testFloatAtanh.o `test -f 'testFloatAtanh.c' || echo '$(srcdir)/'`testFloatAtanh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAtanh-testFloatAtanh.Tpo $(DEPDIR)/testFloatAtanh-testFloatAtanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAtanh.c' object='testFloatAtanh-testFloatAtanh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtanh_CFLAGS) $(CFLAGS) -c -o testFloatAtanh-testFloatAtanh.o `test -f 'testFloatAtanh.c' || echo '$(srcdir)/'`testFloatAtanh.c
+
+testFloatAtanh-testFloatAtanh.obj: testFloatAtanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtanh_CFLAGS) $(CFLAGS) -MT testFloatAtanh-testFloatAtanh.obj -MD -MP -MF $(DEPDIR)/testFloatAtanh-testFloatAtanh.Tpo -c -o testFloatAtanh-testFloatAtanh.obj `if test -f 'testFloatAtanh.c'; then $(CYGPATH_W) 'testFloatAtanh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAtanh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatAtanh-testFloatAtanh.Tpo $(DEPDIR)/testFloatAtanh-testFloatAtanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatAtanh.c' object='testFloatAtanh-testFloatAtanh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatAtanh_CFLAGS) $(CFLAGS) -c -o testFloatAtanh-testFloatAtanh.obj `if test -f 'testFloatAtanh.c'; then $(CYGPATH_W) 'testFloatAtanh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatAtanh.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/catanha.c b/2.3-1/src/c/elementaryFunctions/atanh/catanha.c
new file mode 100644
index 00000000..0c7a77eb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/catanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+
+void catanha(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = catanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/catanhs.c b/2.3-1/src/c/elementaryFunctions/atanh/catanhs.c
new file mode 100644
index 00000000..8c975154
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/catanhs.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+#include "atan.h"
+
+floatComplex catanhs(floatComplex z) {
+ floatComplex minus_i_z = FloatComplex(cimags(z), -creals(z));
+ floatComplex atan_minus_i_z = catans(minus_i_z);
+ return FloatComplex(-cimags(atan_minus_i_z), creals(atan_minus_i_z));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/datanha.c b/2.3-1/src/c/elementaryFunctions/atanh/datanha.c
new file mode 100644
index 00000000..01189a8d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/datanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+
+void datanha(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = datanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/datanhs.c b/2.3-1/src/c/elementaryFunctions/atanh/datanhs.c
new file mode 100644
index 00000000..e5eddf39
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/datanhs.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+#include "atan.h"
+/*
+// METHOD
+// based on the formula atanh(z) = i atan(-i z)
+//
+// Real case : atanh(x) = -imag(atan(-i x))
+*/
+double datanhs(double x) {
+ return (-zimags(zatans(DoubleComplex(0.0, -x))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/satanha.c b/2.3-1/src/c/elementaryFunctions/atanh/satanha.c
new file mode 100644
index 00000000..48b79a0d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/satanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+
+void satanha(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = satanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/satanhs.c b/2.3-1/src/c/elementaryFunctions/atanh/satanhs.c
new file mode 100644
index 00000000..15354aad
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/satanhs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+#include "atan.h"
+
+float satanhs(float x) {
+ return (-cimags(catans(FloatComplex(0.0, -x))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/testAtanh.h b/2.3-1/src/c/elementaryFunctions/atanh/testAtanh.h
new file mode 100644
index 00000000..c683c179
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/testAtanh.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTATANH_H_
+#define _TESTATANH_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "atanh.h"
+#include "constant.h"
+
+void satanhsTest(void);
+
+void satanhaTest(void);
+
+void datanhsTest(void);
+
+void datanhaTest(void);
+
+void catanhsTest(void);
+
+void catanhaTest(void);
+
+void zatanhsTest(void);
+
+void zatanhaTest(void);
+
+int testAtanh(void);
+
+#endif /* !_TESTATANH_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/testDoubleAtanh.c b/2.3-1/src/c/elementaryFunctions/atanh/testDoubleAtanh.c
new file mode 100644
index 00000000..03b97e8f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/testDoubleAtanh.c
@@ -0,0 +1,605 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testAtanh.h"
+#include "isnan.h"
+
+#define SOURCE {-1.1105866164187250255679,-1.0028386111936116176224,0.2375765916352992890292,\
+-1.9260782734203465427214,1.6339029335662884623304,0.4006142544568777608127,\
+-0.1884054141613809019162,0.3250370808239260722594,0.4942341130822986983162,\
+-0.5271214361991748420522,-0.2047974713791562706433,-0.6989092545405519718571,\
+-0.7715561486980614391840,-0.571989225566208348006,-0.5020150984917894909643,\
+-2.2857334641783242368263,2.332010485133160226923,1.3889136138977253853710,\
+1.3789467621494246873937,0.1097978131481585906126,-0.0647218447158609960779,\
+0.0281807372021152316433,0.1350188864488831574917,1.0304207301469319180143,\
+1.2534650597477734468299,-0.6673847151191693027883,0.7687329161404042876526,\
+0.9397659613234893294376,-0.1842256540708016310237,-0.6380964000421092130466,\
+-0.4312384814994691395462,0.2955203345655439961526,-0.9485014036835781592316,\
+-0.7318488744075331009498,1.0038104194654713374746,-1.1353561092070965088396,\
+-1.0960321876977914268281,-0.0171134176442899188508,-0.5858103496627128370378,\
+0.1289555865425900393895,1.5820296359767425098397,-1.4631497998103890623156,\
+1.2963845181574007447978,-0.3801415377268548834166,2.06830447887869084411,\
+-0.5625246161593648874799,0.5326361661049561213588,-1.2444472935191353002438,\
+1.98041335297601972520,-1.1243976757801756871658,-0.2002672475586080858001,\
+-0.8369527550627472445299,-0.5501861155367867572963,-0.4142018271607930679501,\
+0.0805610771656549429220,1.1377543872793591805959,0.0358630657002049213489,\
+-0.7784293535508046701921,0.1468114639619267913773,0.8017875463824070125796,\
+0.9541283226908341408290,0.2570812112878080313294,0.5669583797452802942374,\
+-0.5124357940757415796895,-1.0874670623228419596984,0.1679748561443953069894,\
+1.0653376770396050243761,1.4418584607257751706300,0.4931419934636970814346,\
+0.8961862868877283894165,1.9862847823434610639026,-0.1823693074986679762972,\
+-1.4947586037652456081304,0.2872503175279246256935,0.0312925927822978733328,\
+0.6112211190486463996407,-0.7772375221664085120921,1.1093137211625221372202,\
+0.0442238350338455751820,1.6762117307909378816078,-0.6876351157010545112058,\
+-1.22967891951066876643,-0.1299578267276684795384,1.6975824415216096419101,\
+1.308926550069704708434,-1.098941911191897657929,0.8471934585094353931112,\
+-0.4433269337102597185130,-0.7837315591442685080992,0.9116218827858540985076,\
+-1.0105858633572861737804,0.4876488481804939212338,0.0655402107055627763943,\
+-0.2953709263667435580558,0.6148227532021686148056,-0.4034374023520052587877,\
+0.5833631341612930398810,-0.5528588193199002187583,-0.2778100246524093375200,\
+2.382193101614083818873,-0.5178234271111435971235,-0.6905004153871671102038,\
+1.1100538942612350190586,0.4362472672541874985086,1.6185312525007526929244,\
+-0.2435431173062182208522,1.3489566990051822248375,0.7594498437474611618470,\
+-0.2810994191894010674204,0.0572337467470783664569,-0.2986850540752242211262,\
+0.3080328437634018978741,-1.063898707867213300204,-0.4732241206771939379117,\
+0.4359979545522715271844,-1.1975945596394972358922,-2.0463590761656762495591,\
+-1.6981361097863292286547,-0.3298420709745075729558,0.6443404115154376388119,\
+1.1582132747946760620295,-0.1360263343598554774960,1.1191856336437415730956,\
+-0.3857336264473540388131,-0.9009857125105711350699,-0.6654259233895634118028,\
+0.8142113557520732625150,-0.7421459588282103281287,-0.7442082361451903826932,\
+-0.7150337980929084569226,0.9101123379002086233314,1.6512593716591941195304,\
+0.5444875921569681809231,-1.4717893200735545633506,-0.2233299046672752585785,\
+-0.0991741463892287511417,-0.9902546973703609811679,-1.376446086882661790085,\
+-1.7488399727971684072259,1.8239775508132596293365,-0.2630036367047015599674,\
+-0.5010962842642737724574,-0.5862555775092695986572,-1.3195380346103915414346,\
+-0.3864449051827200110054,-0.0225200748008141174439,-0.9526576040369814091235,\
+1.6155833271255157779223,1.2505121957121025921822,-0.1546296525315759562424,\
+0.7865497689541539605429,-0.6949758322935190024694,-0.4332203785337710999492,\
+0.6084666055394067907258,0.2648887243137521552150,-0.3173806367287662633103,\
+-0.9277748648924035723695,-0.6967437125955047161341,0.0106825075357279020843,\
+0.7977499585474604471003,0.9612439572909651230859,0.6750778949370804804531,\
+0.0690725368983376858401,-1.8076399886892613455558,-0.2596249600654364497743,\
+0.6728882350569161951981,-0.4537439012069451327314,0.695587590556807633391,\
+1.2463414096089968641223,-0.2637405473740589423315,-0.8045531944567444471161,\
+0.2829556705817293793537,0.1166763530431780965246,1.0028892209395869894450,\
+0.4234280063942446603598,0.6056937191431178701961,-1.4168714241399820163991,\
+-0.7415110426654055730822,-1.6002352979874459038001,-0.0441220186662526561716,\
+-0.6809183287313597121582,0.2835255852521558761481,0.2496331067144885174081,\
+0.1563210463282909690186,-1.006767784835231216434,-0.6458091780006059989816,\
+-2.529451976430145521135,-0.4966644528621277365765,0.3057445000796202294602,\
+0.0051108872162743653259,0.3463692486733729314352,0.4684023556979828861735,\
+-2.0819698824296395400779,-1.8736446723365958177965,0.5032045449115828406050,\
+1.0514506638411960093293,-0.5657157774822674234372,-0.2842153768346438180714,\
+0.1431506224954579853392,1.0806316268163596028273}
+
+/*
+#define RESULT {-1.4744610660983759053977+%i*1.5707963267948965579990,\
+-3.2795029213225106445861+%i*1.5707963267948965579990,0.2422041646840577544531,\
+-0.5752297863073998485106+%i*1.5707963267948965579990,\
+0.7121630945985538696519-%i*1.5707963267948965579990,0.4243803995861772371256,\
+-0.1906833812311178877330,0.3372689843733094883227,0.5416475837340712917722,\
+-0.5861506043378337249550,-0.2077349615310257191503,-0.8651650049502660477785,\
+-1.0241615832881652004005,-0.6504743749122398055462,-0.5519965631116492410513,\
+-0.4691302795139216663678+%i*1.5707963267948965579990,\
+0.4584432136447526562328-%i*1.5707963267948965579990,\
+0.9076183700076346783092-%i*1.5707963267948965579990,\
+0.9185087029260963209509-%i*1.5707963267948965579990,0.1102422571172131521289,\
+-0.0648124440153749203919,0.0281882007066550886731,0.1358484485857832935185,\
+2.1004370090239423696232-%i*1.5707963267948965579990,\
+1.0924991774831627200371-%i*1.5707963267948965579990,-0.8060125587957032156083,\
+1.0172227264061333151801,1.736042493622687921118,-0.1863533018119427342452,\
+-0.7549561185313359290561,-0.4614170985204111286038,0.3046041145449288611857,\
+-1.8166306469319770666715,-0.9326970536559181512715,\
+3.1325332888309622703105-%i*1.5707963267948965579990,\
+-1.3792397781139973389486+%i*1.5707963267948965579990,\
+-1.5415589891296013203004+%i*1.5707963267948965579990,-0.0171150886014554831638,\
+-0.6712634278717346525411,0.1296776288627018158817,\
+0.7449048409492748934468-%i*1.5707963267948965579990,\
+-0.8355728364335629487769+%i*1.5707963267948965579990,\
+1.0237167786809893144095-%i*1.5707963267948965579990,-0.4002250855702985665729,\
+0.5275261647661907415952-%i*1.5707963267948965579990,-0.6365188485604326151801,\
+0.593818237113303393215,-1.1086074290970830968917+%i*1.5707963267948965579990,\
+0.5559215037224033428842-%i*1.5707963267948965579990,\
+-1.4188800488983950298660+%i*1.5707963267948965579990,-0.2030109524350925953584,\
+-1.2109116806527058241016,-0.618648185057067423465,-0.4406726279385401179312,\
+0.0807360417981298622569,1.3710194541092590725384-%i*1.5707963267948965579990,\
+0.0358784527834248925804,-1.041372191940861169357,0.1478800901804916689830,\
+1.1035975394582797637355,1.8759258138597765253053,0.2629805384285096581110,\
+0.6430289187352878910175,-0.5660273762902281458054,\
+-1.5862221930864266461469+%i*1.5707963267948965579990,0.1695819872689824647782,\
+1.7267400811821158601589-%i*1.5707963267948965579990,\
+0.8547625432037965209631-%i*1.5707963267948965579990,0.5402035003963170378682,\
+1.4525009288261496731565,0.5539201036322172200244-%i*1.5707963267948965579990,\
+-0.1844324167806210001963,-0.8089386385243267918455+%i*1.5707963267948965579990,\
+0.2955667016509896383170,0.0313028129649670083801,0.7108684384800065814147,\
+-1.0383547009634652713572,1.4799479994581337116699-%i*1.5707963267948965579990,\
+0.0442526991314810200229,0.6878256510027744852209-%i*1.5707963267948965579990,\
+-0.8434557413354200061661,-1.1364652701643074284021+%i*1.5707963267948965579990,\
+-0.1306969520152806707447,0.6762452782098172798797-%i*1.5707963267948965579990,\
+1.005717225984443130571-%i*1.5707963267948965579990,\
+-1.5273278613167085016045+%i*1.5707963267948965579990,1.2461250150575873263392,\
+-0.4763639926970618110325,-1.0549712063383256399618,1.5370414589157994633695,\
+-2.6233309837037732670240+%i*1.5707963267948965579990,0.5329709825316656379712,\
+0.0656342963912304455665,-0.3044404175419783142864,0.7166384348283165728333,\
+-0.4277478080499193535680,0.6675457063378462674308,-0.6224892627320329774321,\
+-0.2853073726746037097612,0.4474264519637772830052-%i*1.5707963267948965579990,\
+-0.5733611255013777441292,-0.8489115589330021860448,\
+1.4767492874056193929988-%i*1.5707963267948965579990,0.4675865941091252309114,\
+0.7215105644264150352996-%i*1.5707963267948965579990,-0.2485372004835029458025,\
+0.9533893539015392271097-%i*1.5707963267948965579990,0.9949139163386880868600,\
+-0.2888754177942080558772,0.0572963634231402757502,-0.3080752338091528041986,\
+0.3183705746036424866219,-1.7375264548714035583998+%i*1.5707963267948965579990,\
+-0.5142166878802835183748,0.4672787235144033601841,\
+-1.2044507032201230423141+%i*1.5707963267948965579990,\
+-0.5343152701155061690130+%i*1.5707963267948965579990,\
+-0.6759512002250491757849+%i*1.5707963267948965579990,-0.3426510354825004212032,\
+0.7655602779397917556636,1.3065460037453791031226-%i*1.5707963267948965579990,\
+-0.1368747459554155443406,1.4390524672743967293798-%i*1.5707963267948965579990,\
+-0.4067781526762131449892,-1.4774318344439005823432,-0.8024889348769219665769,\
+1.1393982155849557980076,-0.9552396245178285116850,-0.9598461538853348962164,\
+-0.8974087416560057040016,1.5281783215878395054688,\
+0.7019410287263873060581-%i*1.5707963267948965579990,0.6105122611902852325372,\
+-0.8280825291376695540535+%i*1.5707963267948965579990,-0.2271580885894484980181,\
+-0.0995012215536074662303,-2.6596162554083884188572,\
+-0.9212932842045244985485+%i*1.5707963267948965579990,\
+-0.6502044836894653734305+%i*1.5707963267948965579990,\
+0.6158791818865629874580-%i*1.5707963267948965579990,-0.2693325220287110521866,\
+-0.5507689268125864900938,-0.6719415444836209783119,\
+-0.9911235054617995032800+%i*1.5707963267948965579990,-0.4076140317144636981972,\
+-0.0225238830066269123120,-1.8597701914697917224828,\
+0.7233360518064337885136-%i*1.5707963267948965579990,\
+1.0977027535066357089022-%i*1.5707963267948965579990,-0.1558800560054872108573,\
+1.0623189198966227486665,-0.8575163748144335462698,-0.463854325361329367094,\
+0.7064828873383774965333,0.2713587745389601235679,-0.3287316374977890531817,\
+-1.6421667900158274377986,-0.8609439745036365776443,0.0106829139117793642938,\
+1.092393189014539744974,1.9620237692362385573119,0.8200147353723576948425,\
+0.0691827011392311119753,-0.6229915735462322468052+%i*1.5707963267948965579990,\
+-0.2657062181808059753152,0.8160024961656430209089,-0.4894047987117864928486,\
+0.8587006143920951073412,1.1051698569402153005115-%i*1.5707963267948965579990,\
+-0.2701243583599451381083,-1.1113900272171266525589,0.2908920738530955119039,\
+0.1172101729688146409813,3.2706795664298211612220-%i*1.5707963267948965579990,\
+0.4518615589828762768576,0.7020915980292293800957,\
+-0.8787256719819279693340+%i*1.5707963267948965579990,-0.9538277279422371357498,\
+-0.7330177387440419689568+%i*1.5707963267948965579990,-0.0441506837064596646680,\
+-0.8308242272476199508091,0.2915116980546684222197,0.2550214973106580407247,\
+0.1576133484131722883870,-2.8460534045826286764225+%i*1.5707963267948965579990,\
+-0.768075815339287371053,-0.4181165627609883528315+%i*1.5707963267948965579990,\
+-0.5448685867460187903788,0.3158443034854154785052,0.0051109317177532613205,\
+0.3613121056785816853640,0.5080216801947243787652,\
+-0.5233928099098102970643+%i*1.5707963267948965579990,\
+-0.5953313420807592182271+%i*1.5707963267948965579990,0.5535880446904775098460,\
+1.842839548963430384987-%i*1.5707963267948965579990,-0.6411995769353845409100,\
+-0.2922619465382557679689,0.1441406428551997020993,\
+1.6252679142635939602002-%i*1.5707963267948965579990}
+*/
+#define ZSOURCER {0.1566312085376346807664,-0.9832172164912469369824,-0.4352704306190940952703,\
+0.5411529581857100756892,-0.4189678441885264503775,-0.3123240835354778588417,\
+-0.6429953452754243459211,0.5746034575341304462270,0.0583200256392587754184,\
+-0.7281504683187327575666,0.4564682359303286474095,1.2276307555220513645367,\
+1.0722151830463704236251,-0.8694353593641974686790,0.4560977429718384712487,\
+0.922397585949679688078,0.3447492619094876808994,-1.2072516069836567442763,\
+-3.0311848873460989217676,-0.5227521113472203273531,-0.9127256852426085531604,\
+0.9702908997340189412029,0.7984557906741573951592,-0.374280495762714437991,\
+0.2178224309624917087724,-0.7621335705740988064605,0.4017588191443041689688,\
+0.0259981222714757570502,-2.250132425948803138738,0.5878367273362664624514,\
+2.3809410297786541832465,0.1486053165381447105364,0.101236219868174881498,\
+0.6421364318076420163450,-0.6540329098904471560871,-0.5416580949191436289425,\
+0.9514918150544823260972,-1.267340977798151469003,-0.8455403103569121281424,\
+-0.364558782701674466420,-1.0697180418170626481356,0.1606013529586497734503,\
+-1.6656989490484364058176,0.4667927145215887141383,-0.0128825329067423742513,\
+0.9947195275346620846335,0.8275102004468978256213,0.2927543106645062453985,\
+-0.9280170868066852651879,-0.3636959897126564866809,1.4783506936052415170479,\
+2.4281448731590140610592,-0.0602106018714212570808,1.541843889601811401491,\
+1.341076792855444343999,-1.9789304036759756133534,-0.3294688652910273685137,\
+0.622286327382227888450,-0.6118557906779339417014,0.7459354816620213934897,\
+-0.4040802511755230974622,0.6577039363065745325443,-0.5486081684530353941298,\
+0.3927975474240214537325,0.7894975295935096060163,-0.1452945797743281086678,\
+0.1437495883505973681693,0.4103084241265512188690,0.1795141291570316322002,\
+-2.0420270362087347137958,-1.0136631446624102537157,-0.6372521675576777733241,\
+-0.2601528835939894701568,1.1986221523039410907785,1.601129898882974078589,\
+-1.2343266797475058726974,0.9483471983582205666607,-0.0424058145973261885198,\
+0.5150673339403005757120,0.0937153808744289607002,0.4638195050716256706558,\
+0.2202932903531656105844,-0.6924450714085558233890,-0.6889026252552187257194,\
+0.4927201161848878685490,0.3688430529148965519859,-0.1495056200185169992256,\
+0.0956460878099940903230,0.8967077311519383586713,0.7486850824131056070243,\
+-0.3635393959060023716390,2.72178097931810514254,0.8872833757746945160250,\
+0.9893578306194498184212,0.8262130885403843327808,1.8679166202704664545564,\
+0.5569566531470352410693,-0.0576405625178402075681,0.8001172842696224751791,\
+0.4480121632350138050072,-0.2882322764074837784243,-0.2677211241656151097246,\
+0.2862315832454170316801,0.9463381000719524038800,-1.574827516423719320215,\
+1.7962971923614798885893,0.9930237578825827915452,1.17225507537484907594,\
+-0.9161863233099263315040,0.1421586828731320473196,-0.1430347256308386882928,\
+-0.4683233849545334614994,-0.3180446316984328336552,-0.0576576190062656410151,\
+0.6249620545306199259628,0.7539731616235149092020,-0.1134181356790778527621,\
+-0.3551074647649283821949,-1.5743164879335251882253,-0.3132427332940839193043,\
+-0.5345549536487770314608,-0.3108292305558989498948,-0.0698678127822071615149,\
+1.9098270701284520978191,0.3087451523556873911325,0.792464324566980904407,\
+-0.7089070907362685636244,-1.69657580301203281259,0.2839165766617411379436,\
+-1.9503478026750964424707,-0.8383432843348773699788,0.4243701560501659808544,\
+1.0206422864827822127864,0.1651260412410127109695,-2.4565661716609770159891,\
+1.3581676364949575308572,1.5976518292284813682613,1.038096252933477403602,\
+-0.2179395863297476365616,0.1906211564102877620286,0.1220518503007956001571,\
+1.7007780598076820410824,2.3461749520518053735429,-0.7583114756702955538969,\
+0.1563580374722161325796,0.9458374821601646109670,1.106385383701591562655,\
+1.857413924600636034867,0.9819266230329063427362,0.1010843883126317094279,\
+-0.0394749928167329941497,0.9565452494078602319050,-1.164240263162510835571,\
+-0.0360262254241734622418,-0.4279483181417821913151,0.0207154879461370518279,\
+0.1331812668838084079415,0.0637098112636336894044,0.5563753726211196903861,\
+2.170691821782472885616,-1.4105863647114469383581,-0.3956456917805734052607,\
+-0.7536155387925271842420,-0.1512156734265959479036,-1.0252674376565367175829,\
+0.9250804906985814479725,0.0319417929504777348138,-0.3662171854280546479110,\
+0.9733260674698945846828,-0.2668109355235854240895,0.9653716053391865337119,\
+0.5007936673782547032374,-0.1208939822530236685161,1.0971085072938426829836,\
+0.2029604338428208087919,0.3746473304704570073120,0.9561076870030955632274,\
+1.1282520720814495085449,1.5637873924930061342309,0.4739411474762828535567,\
+-0.9908999627117486275196,0.4483771591380850130015,0.7638174840760570960541,\
+1.21967084705659489785,-1.1141855892005874117956,0.3637931277318062761594,\
+0.0172116174170295101187,-0.5359859794230503737822,1.7180258735531828140353,\
+-0.4389711879238100133982,-0.5289769194381308548003,-0.2349363816328474963147,\
+-1.770826942434098993928,-0.2698746134406798669048,-1.6219764795098883247704,\
+-0.4683402918639187895167,0.4233140865550635290049,0.5072350201185169549234,\
+1.846909249365268790299,0.8538988411566506009365}
+
+#define ZSOURCEI {-1.2880264074010461250452,-0.9681461673606511775247,0.8819263929226937026584,\
+-0.2968181427237222558269,0.3676169132810200301797,-1.4546278949302484662098,\
+-0.4969724671301882223950,-1.3684785326259825133377,0.3201951876584711031981,\
+0.0925515282972030062236,-1.3629699188377910612502,1.3008264376880041002238,\
+-1.312881117519760332257,0.7519787618494813141723,-0.349314202941638340949,\
+-0.6612113457421112672208,-0.1912192548186895935114,-0.2871763408135362682927,\
+2.1040662039819300055399,0.6770601919983177952034,-0.9998765495359557275989,\
+1.0320694267454630921321,0.5184250597548623051836,0.3020078279774962016,\
+-0.2426203970909892593255,1.085343122387009806573,0.3728224888143483184422,\
+0.3597109342835585477083,-0.5464095547489105086925,-0.0522892744113094345981,\
+-0.0037796004128336437196,1.3386616898503973516199,-0.8603866811447716811401,\
+-0.215138661778858181206,-0.1519505658345833010170,-0.0684049031594022166614,\
+0.3134237083474871732314,-0.2552970754123656815793,1.0371924512876768975644,\
+-2.4944520251764212837031,-0.9105655292839007763916,-0.5967335487543307115388,\
+-0.6520109300715212219401,1.891233309015407648701,-0.7688305781614098721732,\
+0.1640648747943601049037,-0.613585069751534706306,-0.2234197861121311190491,\
+1.9233974415188206386063,0.315204859780382373735,0.4595542257467975510998,\
+-1.1764564844019769207506,-2.1928435621757311757563,-0.3567337876240649907622,\
+1.4844812942744205486179,0.2127167501638982105572,0.326665566953199926203,\
+-0.3823116465408597508535,1.1195697860125490841199,0.3156195041989769412005,\
+-1.3411228504687704443654,1.2817926351994635147946,-0.8385592799769060468051,\
+0.2920629737538525949603,0.4117329700106473477916,0.8168979807640022183790,\
+0.6114286447089312126479,-0.9103003485572774833301,0.0883797323534893930486,\
+-0.8309636819350860736932,0.300088746736916378577,-0.9870316877320252091366,\
+0.0574605523525985317779,-0.0055294403676948468418,-0.4910286442216560409690,\
+-0.9282905300686704608282,-0.9620222168730435674533,1.5101979946106838248454,\
+0.16215452036647093337,0.8355679951054210130579,0.2598273768449387843837,\
+-0.8781794540671359339257,-0.0960593767304002976726,-0.8457942620552999501982,\
+-1.5126206512504021262089,0.0267016916333849170517,-0.0455102979008666919114,\
+-0.9512410833653791586428,-0.1410038404270228529214,0.8526701417894808621156,\
+-0.5427383894147087550763,0.3670995115141847953133,-0.4196045805115825033660,\
+-0.861511165291383607112,-0.5242638386479363532544,-1.0690056931583220567461,\
+-1.204258995571379831091,-0.1994216356488724417595,-0.651264013076401249158,\
+-1.2804046190990912013064,-0.1189798590125256405603,0.2757828726342566594276,\
+0.1186787898486535430820,-0.9717707229710241811915,-0.2337132662497607982210,\
+-1.2810105417899781965474,0.4516508120864454189913,-1.7941677742351858082515,\
+1.2424962452829722003855,-0.1452111265545129592525,0.803374036348334819024,\
+2.2359407014896999221776,0.0801276770871145183062,0.1489247936009177042394,\
+0.3146211320275099643240,-1.49119197842913098206,-0.8212344459793755602206,\
+-1.3094646972226284820096,-0.2661055404338998897629,0.2164009824597608044883,\
+0.4021554472831923576770,1.0836546525394512574536,-0.8330897968467666503400,\
+-1.2783354864784060023197,1.0944391027576960695455,0.5158321013729825210703,\
+0.5039256424604841022585,-1.1530018443600813515815,0.5567649276400054025871,\
+1.5507245891800580661624,2.0511800424609365478545,0.2003839203406024560561,\
+-0.5188228347179002497569,-0.5014579405716672599880,0.2409475853154263991218,\
+-1.2895515809257553918599,1.3505164949531500706570,-1.7662555890569775485233,\
+0.0695313390316097817978,0.4857809488385180229919,-1.54949381746834280449,\
+-0.5022279078645265348868,-0.4715667339089154030951,0.9071363416804920642988,\
+-0.0090747242741150424550,-1.426140714401586517823,0.0902619806757116310836,\
+-0.7111783918397256432087,0.4421886947944868029303,1.3229936148586256550175,\
+0.0399972677459073389095,-0.2744759605679197855821,-0.6365722011642755973071,\
+0.0838977431731276618310,-0.0154779602574307128399,1.3680369604712516728995,\
+0.8578728691952266505183,0.9477645632263477226687,0.4034044727794333096149,\
+-0.1637512612660888822180,-1.521579761721328916124,0.7389202762668894974851,\
+1.6242287608009475796678,0.0251523200085141500348,-0.2296479198161843759962,\
+0.3374847554612029343346,1.0988696857027278053209,0.6720077941707034430152,\
+1.6284314621145825618953,1.2811365743500131575416,-0.6480287734962971724073,\
+0.4079918994040774293808,-0.6857363255654103095793,0.1644734231427373016832,\
+-0.9707468997532966437092,-1.0103908741767126944211,-0.3245462572729273520444,\
+0.3569008288111439886059,1.1707819570142721232742,0.0931015649413182710958,\
+1.2605162559518456877328,-0.2998099303847839292025,-1.8576048661033506270712,\
+0.3542284165121863948045,-0.3606813370588974332343,-0.1691565053601437607078,\
+-1.3723457158075849093848,-0.3869812789951324605298,1.327934065790971063237,\
+0.6883264291332520379285,1.1636463404567130019984,-1.6679940626595868291560,\
+-1.1660526540945894691248,2.4012435579972462029730,1.8717476066252398680945,\
+0.6269431765551266577674,-0.7276289505214773578601,0.5485159953217271233683,\
+-1.0371187436769986334184,2.282202076649753941240}
+
+#define ZRESULTR {0.0586345786159515672264,-0.4119079581767730036113,-0.2376773392005311347219,\
+0.5274985111723742292611,-0.3785076402666358030835,-0.0984442400006558665515,\
+-0.5157322835496214175066,0.1877549307968403857760,0.0529309487949000886942,\
+-0.8980782630098248509043,0.1535280327645664466552,0.3347825460369071581823,\
+0.3118103625565722958335,-0.4854100811784345381739,0.4200271027799429846006,\
+0.558160367722654870981,0.3440445808210612077538,-0.9190853850068781971672,\
+-0.2206972238733744262618,-0.3495146734241325048309,-0.3828254526784128919381,\
+0.3837160824181031770763,0.6067122840309074893739,-0.3528285483819846302112,\
+0.2081338122939639656561,-0.3109916924279712002743,0.3607981848765179355709,\
+0.0230220619188065515892,-0.4409843876587154487545,0.6706334235337022553480,\
+0.4476928944367338791821,0.0530051009287677843407,0.0580922710665942171326,\
+0.6889248635636368023327,-0.7403179849986993854571,-0.6014835481325517818618,\
+0.9148458682398055152873,-0.9100406392834269331260,-0.3512629496668798201320,\
+-0.0497281250251861567380,-0.4533232590993708788218,0.1183827451686376569517,\
+-0.5400714293963024825729,0.0986159601519734224651,-0.0080964813496256192449,\
+1.2504251172076377152109,0.553383982176059552316,0.2851532314993195926789,\
+-0.1735373380028721046475,-0.3392884681219434650501,0.6674877635610125814480,\
+0.3361668249120546292374,-0.0103608516149833115860,0.6876886023380593959686,\
+0.2994018975364160506381,-0.5461669463711513738957,-0.3036470157958083837535,\
+0.5659099835134179246054,-0.2522688982901432619421,0.73840604848731461463,\
+-0.1399717847889199173750,0.2285367773899925347703,-0.3073816797691770186240,\
+0.3738323046463303267473,0.6895008314715558306318,-0.0869179912549136179933,\
+0.1045814791078650968226,0.2183617419002600035238,0.1799962512946713666384,\
+-0.4306170362358095471400,-0.956790010441086580251,-0.2988659063401313820130,\
+-0.26528818791890551587,1.2018988344435987958292,0.6134078020904577543959,\
+-0.4635409097157874858119,0.4066731412601408690577,-0.0129216461290907521503,\
+0.5459518490067882812156,0.0551242941387568297085,0.4571890743247491450951,\
+0.1235106929418888221939,-0.8301715333893021631084,-0.3700021952100086553017,\
+0.1433522018206848380739,0.3867313699737674470569,-0.1503114555841373045642,\
+0.0501390172375495365986,1.193524050554648274769,0.3916234392819171183930,\
+-0.2811037877759303138525,0.3767282302151824247005,0.7464338830239950484113,\
+0.4613726054161970124845,0.6177367275920276901147,0.3993738908711506052640,\
+0.2139276426895061200550,-0.0554860078847602203322,0.5165924809229520686671,\
+0.1633124027176871273515,-0.2918709165103665625907,-0.2528080890770357247455,\
+0.2897583915934112130941,0.4021736360794072595581,-0.713539018877845987454,\
+0.3562716257530119112751,0.7547097044407786725628,0.2233423544188815612621,\
+-0.3032157270895312062287,0.1400739703409606129458,-0.0867211925226533952848,\
+-0.0758855325499612903828,-0.3269646450472631915574,-0.0564625318897502212478,\
+0.6090972295195002939039,0.2104281878811394279616,-0.0676285383445118792878,\
+-0.1277092508406163506862,-0.7041149381903939463712,-0.3071683332013411815709,\
+-0.4736979352269045095980,-0.1404550230528205378988,-0.0412179517191962191403,\
+0.3529283428251930310182,0.1380434056063472858522,0.6051661095195016715209,\
+-0.5594498837332433360814,-0.3889971602159096875084,0.2168075281019664068971,\
+-0.3028666557798217473518,-0.1458483340857026078208,0.4293137169051447488144,\
+0.6953697523295457871839,0.1321249855766219449826,-0.4265596445818128912286,\
+0.3486234081846604770938,0.3421608935025099995642,0.2115120471977689209364,\
+-0.2203370156751261743633,0.1545639581145290264441,0.0357922784779254460341,\
+0.5794250482661091883330,0.4312552311016552564205,-0.3727620017605887681178,\
+0.1576377379130869393897,0.2624856474568436071060,1.3577286999442579329411,\
+0.4860182340340697959569,0.7617714539289787145648,0.0366834217396586823035,\
+-0.0394322693273299676453,0.9807192175900326658322,-0.6164954700307514467994,\
+-0.0357893654572665059765,-0.4572287236587250780495,0.0072135289476597582586,\
+0.0765359692550191955673,0.0335408660165012612042,0.4931690601828112585636,\
+0.4939993220457917777466,-0.296325232124018844715,-0.2516901659302647753513,\
+-0.1874945429943649932714,-0.1522841974461120184703,-1.0886404519839611992893,\
+0.8661426586684568551533,0.0144669239838038730245,-0.2498600121525025030689,\
+0.2258303913936256790418,-0.0996627600161344717744,0.5798388843647412915772,\
+0.4402912178536843579302,-0.0821496253311937152386,1.1995498265712831731378,\
+0.1037875988793510867447,0.1808411497687466285011,0.9003994950861190504909,\
+0.8693703906397208802659,0.3871229651004495231348,0.5084262016718109622460,\
+-0.3127921352240150554280,0.4284515458646944163768,0.1566612259199449408431,\
+0.8425254932446538669311,-0.8675086878856705929763,0.3679908151081396905369,\
+0.0059690185652748976169,-0.4818927853047598741654,0.3475368987720111602080,\
+-0.2928677403656957944911,-0.21281918945471237081,-0.0615315656203920743894,\
+-0.3828854358877186170318,-0.0395445045895176927608,-0.2453056840726963727661,\
+-0.3319274210060903507191,0.2716611153754885932265,0.3885772436850290501020,\
+0.4083161225294907326067,0.1256636073410991871757}
+
+#define ZRESULTI {-0.9150826723701824816359,-1.0038007968241344780580,0.7761168535216221853190,\
+-0.3822213477951738047622,0.4088073079437265500147,-0.9829838814461281382151,\
+-0.6207924428978939257462,-0.9924436424002488488227,0.3107781745847606469368,\
+0.190823563908477877860,-0.9717930993017909191423,1.1362832817249874928223,\
+-1.0952400709881249252220,0.8906629459042527674484,-0.4031733379746096357366,\
+-0.8926214809458651311402,-0.2125955165236021182640,-1.1626545105534673574255,\
+1.4098114180999468114663,0.6875898477221956683891,-0.9827065462915589577619,\
+1.0122682558571856059615,0.7403338169936454216113,0.3329978318477040399870,\
+-0.2487126175192662380642,0.9535461622187894059621,0.4086259224331897366156,\
+0.3454903551399998162807,-1.4480476267508943788442,-0.0795552773231696652712,\
+-1.5699867995861691571946,0.9329922799220887741356,-0.7134073946597112581003,\
+-0.3357762973784728099957,-0.2527252112264842809353,-0.0962463379406888058787,\
+0.7882465889811950399135,-1.2456800812145352175264,0.9674854545265952898703,\
+-1.1957951138140576752278,-1.0308375326751320066876,-0.5464592420922904647540,\
+-1.3032325007401501792970,1.1035601617683621356036,-0.6554945586705149818130,\
+0.8103435172856551238496,-0.8103372317467707475203,-0.2385573277010208381732,\
+1.1587938021757215878438,0.3435431890072572769235,1.279788873802896409515,\
+-1.3915550484745486947702,-1.143175630086853633571,-1.3493948361964505089361,\
+1.180878018812092644652,1.4994549779312595916281,0.3471363780379303487500,\
+-0.5114436565324694816681,0.922077454999635448551,0.5359370502466848096290,\
+-0.9575622722618749582679,0.9840232928412098178939,-0.7866361736794498238368,\
+0.3275153905103054818859,0.6621644080795368036974,0.6911787537867797315272,\
+0.5555203262090003812901,-0.7845741854114917090968,0.0910458923193785268912,\
+-1.367532424689007264362,0.8821163892946874973688,-0.8805618815721650838313,\
+0.0615381817744835926676,-1.5581379012861951149915,-1.3216226160366340014463,\
+-1.1059140418930615279436,-0.9879008462145800750775,0.986169123983388073995,\
+0.2146596902165759102044,0.6986026791593697993221,0.3134566221055383739014,\
+-0.7342575229927524871343,-0.1797145584041555665955,-0.8413107892059722425770,\
+-1.019619130948550722593,0.0308925093685123823561,-0.0465149720271331584831,\
+-0.7628135267341744629732,-0.5063811875785856342347,0.8689285269800102184945,\
+-0.5424489267017504889878,1.5149231207825908374076,-0.7635699257253423244407,\
+-0.9835608360649982229162,-0.7651335213236122312352,-1.3047698554262849857110,\
+-0.9383103802342007693227,-0.1974540431056293898759,-0.8100733516290339331078,\
+-0.9439058311312691351702,-0.1288637100697393178539,0.2871927052822376702501,\
+0.1283857487876574610119,-0.9893521517129132414325,-1.4229736910621084700068,\
+-1.278268082403663186142,0.88910168768678732309,-1.1784373117164359534570,\
+1.03935358865908744619,-0.1470722349218777647017,0.6828818013490814964328,\
+1.1635383473949738597497,0.0888393991592487247688,0.1483135488190464867930,\
+0.4446342289575472839225,-1.055940453660143329984,-0.6913288042725108661912,\
+-0.9407243087808065951094,-1.4053508981321376491991,0.2342864098211708545616,\
+0.4844410101414913238926,0.8475776035888460402390,-0.6960123633858344982528,\
+-1.3016421578221382127083,0.8519589639880413844963,0.7342440505866469901974,\
+0.6668635124458689444893,-1.2591545397069716649696,0.535024814500131951078,\
+1.30226369708141054282,1.1661057476987222170095,0.2373787574293542146364,\
+-0.9309471081116736934646,-0.4736579850459717855315,1.5236251088004300058287,\
+-1.171065543003733777638,1.2334327135159162125433,-1.153213069447322158823,\
+0.0728510737378383066432,0.4639741641063248600574,-0.9996734202650466860618,\
+-1.3518108187607991155232,-1.4723273061328936428538,0.8933558949405833171653,\
+-0.0093018535376701225181,-1.0826576750905823054438,1.2404141733855511553486,\
+-1.3465428092378513014182,0.8747309046321107839361,0.9253397074562169644096,\
+0.0400381835355557713640,-0.7765785126027255902414,-1.0546807717631738743336,\
+0.0838092326986521196641,-0.0189446011407611511479,0.9396543988269212555053,\
+0.7141040044798073749277,0.7596541492574908627233,0.4957818734457210552158,\
+-1.5271090619693206136276,-1.1987057982776780917789,0.6860846415801318265437,\
+1.0836815939774062655943,0.0257348439490480244973,-0.8966457616590515211641,\
+0.7629454929184202871539,0.8326995831057554253718,0.6358947917453465770166,\
+1.122174794910343109677,0.9210086183100237855470,-0.9179542949015334629692,\
+0.4753128844824887067055,-0.6057418122474197419436,1.0912054352763760345368,\
+-0.7811598998629154522177,-0.8252118132068452238670,-0.8003932093064218822320,\
+1.040963230413896711823,1.2239764586679500180111,0.1191234084420016575701,\
+1.064003892301497833373,-0.3509788166940612241795,-1.1278108079499422622405,\
+1.1420720075136889803957,-1.0231852297083139369249,-0.1916370368791805167685,\
+-0.941129540386991148004,-0.4709650954727132576849,1.2604683484747309929475,\
+0.6665567013842946808566,0.9183588395793375047660,-1.0371195264398431756803,\
+-1.276620042706810842503,1.1799805845600985776400,1.255793767839696428723,\
+0.6354974793467924598644,-0.6865980682751140484754,0.5939555774818401356896,\
+-1.3024651432778990844952,1.197724373266410013983}
+
+#define RESULT {-1.4744610660983759053977,-3.2795029213225106445861,0.2422041646840577544531,\
+-0.5752297863073998485106,0.7121630945985538696519,0.4243803995861772371256,\
+-0.1906833812311178877330,0.3372689843733094883227,0.5416475837340712917722,\
+-0.5861506043378337249550,-0.2077349615310257191503,-0.8651650049502660477785,\
+-1.0241615832881652004005,-0.6504743749122398055462,-0.5519965631116492410513,\
+-0.4691302795139216663678,0.4584432136447526562328,0.9076183700076346783092,\
+0.9185087029260963209509,0.1102422571172131521289,-0.0648124440153749203919,\
+0.0281882007066550886731,0.1358484485857832935185,2.1004370090239423696232,\
+1.0924991774831627200371,-0.8060125587957032156083,1.0172227264061333151801,\
+1.736042493622687921118,-0.1863533018119427342452,-0.7549561185313359290561,\
+-0.4614170985204111286038,0.3046041145449288611857,-1.8166306469319770666715,\
+-0.9326970536559181512715,3.1325332888309622703105,-1.3792397781139973389486,\
+-1.5415589891296013203004,-0.0171150886014554831638,-0.6712634278717346525411,\
+0.1296776288627018158817,0.7449048409492748934468,-0.8355728364335629487769,\
+1.0237167786809893144095,-0.4002250855702985665729,0.5275261647661907415952,\
+-0.6365188485604326151801,0.593818237113303393215,-1.1086074290970830968917,\
+0.5559215037224033428842,-1.4188800488983950298660,-0.2030109524350925953584,\
+-1.2109116806527058241016,-0.618648185057067423465,-0.4406726279385401179312,\
+0.0807360417981298622569,1.3710194541092590725384,0.0358784527834248925804,\
+-1.041372191940861169357,0.1478800901804916689830,1.1035975394582797637355,\
+1.8759258138597765253053,0.2629805384285096581110,0.6430289187352878910175,\
+-0.5660273762902281458054,-1.5862221930864266461469,0.1695819872689824647782,\
+1.7267400811821158601589,0.8547625432037965209631,0.5402035003963170378682,\
+1.4525009288261496731565,0.5539201036322172200244,-0.1844324167806210001963,\
+-0.8089386385243267918455,0.2955667016509896383170,0.0313028129649670083801,\
+0.7108684384800065814147,-1.0383547009634652713572,1.4799479994581337116699,\
+0.0442526991314810200229,0.6878256510027744852209,-0.8434557413354200061661,\
+-1.1364652701643074284021,-0.1306969520152806707447,0.6762452782098172798797,\
+1.005717225984443130571,-1.5273278613167085016045,1.2461250150575873263392,\
+-0.4763639926970618110325,-1.0549712063383256399618,1.5370414589157994633695,\
+-2.6233309837037732670240,0.5329709825316656379712,0.0656342963912304455665,\
+-0.3044404175419783142864,0.7166384348283165728333,-0.4277478080499193535680,\
+0.6675457063378462674308,-0.6224892627320329774321,-0.2853073726746037097612,\
+0.4474264519637772830052,-0.5733611255013777441292,-0.8489115589330021860448,\
+1.4767492874056193929988,0.4675865941091252309114,0.7215105644264150352996,\
+-0.2485372004835029458025,0.9533893539015392271097,0.9949139163386880868600,\
+-0.2888754177942080558772,0.0572963634231402757502,-0.3080752338091528041986,\
+0.3183705746036424866219,-1.7375264548714035583998,-0.5142166878802835183748,\
+0.4672787235144033601841,-1.2044507032201230423141,-0.5343152701155061690130,\
+-0.6759512002250491757849,-0.3426510354825004212032,0.7655602779397917556636,\
+1.3065460037453791031226,-0.1368747459554155443406,1.4390524672743967293798,\
+-0.4067781526762131449892,-1.4774318344439005823432,-0.8024889348769219665769,\
+1.1393982155849557980076,-0.9552396245178285116850,-0.9598461538853348962164,\
+-0.8974087416560057040016,1.5281783215878395054688,0.7019410287263873060581,\
+0.6105122611902852325372,-0.8280825291376695540535,-0.2271580885894484980181,\
+-0.0995012215536074662303,-2.6596162554083884188572,-0.9212932842045244985485,\
+-0.6502044836894653734305,0.6158791818865629874580,-0.2693325220287110521866,\
+-0.5507689268125864900938,-0.6719415444836209783119,-0.9911235054617995032800,\
+-0.4076140317144636981972,-0.0225238830066269123120,-1.8597701914697917224828,\
+0.7233360518064337885136,1.0977027535066357089022,-0.1558800560054872108573,\
+1.0623189198966227486665,-0.8575163748144335462698,-0.463854325361329367094,\
+0.7064828873383774965333,0.2713587745389601235679,-0.3287316374977890531817,\
+-1.6421667900158274377986,-0.8609439745036365776443,0.0106829139117793642938,\
+1.092393189014539744974,1.9620237692362385573119,0.8200147353723576948425,\
+0.0691827011392311119753,-0.6229915735462322468052,-0.2657062181808059753152,\
+0.8160024961656430209089,-0.4894047987117864928486,0.8587006143920951073412,\
+1.1051698569402153005115,-0.2701243583599451381083,-1.1113900272171266525589,\
+0.2908920738530955119039,0.1172101729688146409813,3.2706795664298211612220,\
+0.4518615589828762768576,0.7020915980292293800957,-0.8787256719819279693340,\
+-0.9538277279422371357498,-0.7330177387440419689568,-0.0441506837064596646680,\
+-0.8308242272476199508091,0.2915116980546684222197,0.2550214973106580407247,\
+0.1576133484131722883870,-2.8460534045826286764225,-0.768075815339287371053,\
+-0.4181165627609883528315,-0.5448685867460187903788,0.3158443034854154785052,\
+0.0051109317177532613205,0.3613121056785816853640,0.5080216801947243787652,\
+-0.5233928099098102970643,-0.5953313420807592182271,0.5535880446904775098460,\
+1.842839548963430384987,-0.6411995769353845409100,-0.2922619465382557679689,\
+0.1441406428551997020993,1.6252679142635939602002}
+
+
+void datanhsTest() {
+ double in[]= SOURCE;
+ double res[]= RESULT;
+ double out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=datanhs(in[i]);
+ if (disnans(out)) assert(1);
+ else {
+ assert( ( (fabs(out-res[i])) / (fabs(out)) ) <3e-15);
+ }
+ }
+}
+
+void zatanhsTest() {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in, out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zatanhs(in);
+ assert( ( (fabs(zreals(out)-resR[i])) / (fabs(zreals(out))) ) <3e-15);
+ assert( ( (fabs(zimags(out)-resI[i])) / (fabs(zimags(out))) ) <3e-15);
+ }
+ out=zatanhs((DoubleComplex(2.0/10.0,11.0/10.0)));
+ assert( ( (fabs(zreals(out)-0.0898435002269743487879)) / (fabs(zreals(out))) ) <3e-15);
+ assert( ( (fabs(zimags(out)-0.8419736541926906570055)) / (fabs(zimags(out))) ) <1e-15);
+
+}
+
+void datanhaTest(void) {
+ double in[]= SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i=0;
+
+ datanha(in,200,out);
+ for (i=0;i<200;i++){
+ if (disnans(out[i])) assert(1);
+ else assert( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <3e-15);
+ }
+}
+
+void zatanhaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in[200], out[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(inR[i],inI[i]);
+ }
+ zatanha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(zreals(out[i])-resR[i])) / (fabs(zreals(out[i]))) ) <3e-15);
+ assert( ( (fabs(zimags(out[i])-resI[i])) / (fabs(zimags(out[i]))) ) <3e-15);
+ }
+}
+
+
+
+int testAtanh() {
+ printf("\n>>>> Double Hyperbolic Arctangeant Tests\n");
+ datanhsTest();
+ zatanhsTest();
+ datanhaTest();
+ zatanhaTest();
+ return 0;
+}
+
+int main() {
+ assert(testAtanh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/testFloatAtanh.c b/2.3-1/src/c/elementaryFunctions/atanh/testFloatAtanh.c
new file mode 100644
index 00000000..3addb959
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/testFloatAtanh.c
@@ -0,0 +1,600 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testAtanh.h"
+#include "isnan.h"
+
+
+#define SOURCE {-1.1105866164187250255679f,-1.0028386111936116176224f,0.2375765916352992890292f,\
+-1.9260782734203465427214f,1.6339029335662884623304f,0.4006142544568777608127f,\
+-0.1884054141613809019162f,0.3250370808239260722594f,0.4942341130822986983162f,\
+-0.5271214361991748420522f,-0.2047974713791562706433f,-0.6989092545405519718571f,\
+-0.7715561486980614391840f,-0.571989225566208348006f,-0.5020150984917894909643f,\
+-2.2857334641783242368263f,2.332010485133160226923f,1.3889136138977253853710f,\
+1.3789467621494246873937f,0.1097978131481585906126f,-0.0647218447158609960779f,\
+0.0281807372021152316433f,0.1350188864488831574917f,1.0304207301469319180143f,\
+1.2534650597477734468299f,-0.6673847151191693027883f,0.7687329161404042876526f,\
+0.9397659613234893294376f,-0.1842256540708016310237f,-0.6380964000421092130466f,\
+-0.4312384814994691395462f,0.2955203345655439961526f,-0.9485014036835781592316f,\
+-0.7318488744075331009498f,1.0038104194654713374746f,-1.1353561092070965088396f,\
+-1.0960321876977914268281f,-0.0171134176442899188508f,-0.5858103496627128370378f,\
+0.1289555865425900393895f,1.5820296359767425098397f,-1.4631497998103890623156f,\
+1.2963845181574007447978f,-0.3801415377268548834166f,2.06830447887869084411f,\
+-0.5625246161593648874799f,0.5326361661049561213588f,-1.2444472935191353002438f,\
+1.98041335297601972520f,-1.1243976757801756871658f,-0.2002672475586080858001f,\
+-0.8369527550627472445299f,-0.5501861155367867572963f,-0.4142018271607930679501f,\
+0.0805610771656549429220f,1.1377543872793591805959f,0.0358630657002049213489f,\
+-0.7784293535508046701921f,0.1468114639619267913773f,0.8017875463824070125796f,\
+0.9541283226908341408290f,0.2570812112878080313294f,0.5669583797452802942374f,\
+-0.5124357940757415796895f,-1.0874670623228419596984f,0.1679748561443953069894f,\
+1.0653376770396050243761f,1.4418584607257751706300f,0.4931419934636970814346f,\
+0.8961862868877283894165f,1.9862847823434610639026f,-0.1823693074986679762972f,\
+-1.4947586037652456081304f,0.2872503175279246256935f,0.0312925927822978733328f,\
+0.6112211190486463996407f,-0.7772375221664085120921f,1.1093137211625221372202f,\
+0.0442238350338455751820f,1.6762117307909378816078f,-0.6876351157010545112058f,\
+-1.22967891951066876643f,-0.1299578267276684795384f,1.6975824415216096419101f,\
+1.308926550069704708434f,-1.098941911191897657929f,0.8471934585094353931112f,\
+-0.4433269337102597185130f,-0.7837315591442685080992f,0.9116218827858540985076f,\
+-1.0105858633572861737804f,0.4876488481804939212338f,0.0655402107055627763943f,\
+-0.2953709263667435580558f,0.6148227532021686148056f,-0.4034374023520052587877f,\
+0.5833631341612930398810f,-0.5528588193199002187583f,-0.2778100246524093375200f,\
+2.382193101614083818873f,-0.5178234271111435971235f,-0.6905004153871671102038f,\
+1.1100538942612350190586f,0.4362472672541874985086f,1.6185312525007526929244f,\
+-0.2435431173062182208522f,1.3489566990051822248375f,0.7594498437474611618470f,\
+-0.2810994191894010674204f,0.0572337467470783664569f,-0.2986850540752242211262f,\
+0.3080328437634018978741f,-1.063898707867213300204f,-0.4732241206771939379117f,\
+0.4359979545522715271844f,-1.1975945596394972358922f,-2.0463590761656762495591f,\
+-1.6981361097863292286547f,-0.3298420709745075729558f,0.6443404115154376388119f,\
+1.1582132747946760620295f,-0.1360263343598554774960f,1.1191856336437415730956f,\
+-0.3857336264473540388131f,-0.9009857125105711350699f,-0.6654259233895634118028f,\
+0.8142113557520732625150f,-0.7421459588282103281287f,-0.7442082361451903826932f,\
+-0.7150337980929084569226f,0.9101123379002086233314f,1.6512593716591941195304f,\
+0.5444875921569681809231f,-1.4717893200735545633506f,-0.2233299046672752585785f,\
+-0.0991741463892287511417f,-0.9902546973703609811679f,-1.376446086882661790085f,\
+-1.7488399727971684072259f,1.8239775508132596293365f,-0.2630036367047015599674f,\
+-0.5010962842642737724574f,-0.5862555775092695986572f,-1.3195380346103915414346f,\
+-0.3864449051827200110054f,-0.0225200748008141174439f,-0.9526576040369814091235f,\
+1.6155833271255157779223f,1.2505121957121025921822f,-0.1546296525315759562424f,\
+0.7865497689541539605429f,-0.6949758322935190024694f,-0.4332203785337710999492f,\
+0.6084666055394067907258f,0.2648887243137521552150f,-0.3173806367287662633103f,\
+-0.9277748648924035723695f,-0.6967437125955047161341f,0.0106825075357279020843f,\
+0.7977499585474604471003f,0.9612439572909651230859f,0.6750778949370804804531f,\
+0.0690725368983376858401f,-1.8076399886892613455558f,-0.2596249600654364497743f,\
+0.6728882350569161951981f,-0.4537439012069451327314f,0.695587590556807633391f,\
+1.2463414096089968641223f,-0.2637405473740589423315f,-0.8045531944567444471161f,\
+0.2829556705817293793537f,0.1166763530431780965246f,1.0028892209395869894450f,\
+0.4234280063942446603598f,0.6056937191431178701961f,-1.4168714241399820163991f,\
+-0.7415110426654055730822f,-1.6002352979874459038001f,-0.0441220186662526561716f,\
+-0.6809183287313597121582f,0.2835255852521558761481f,0.2496331067144885174081f,\
+0.1563210463282909690186f,-1.006767784835231216434f,-0.6458091780006059989816f,\
+-2.529451976430145521135f,-0.4966644528621277365765f,0.3057445000796202294602f,\
+0.0051108872162743653259f,0.3463692486733729314352f,0.4684023556979828861735f,\
+-2.0819698824296395400779f,-1.8736446723365958177965f,0.5032045449115828406050f,\
+1.0514506638411960093293f,-0.5657157774822674234372f,-0.2842153768346438180714f,\
+0.1431506224954579853392f,1.0806316268163596028273f}
+
+#define RESULT {-1.4744610660983759053977f,-3.2795029213225106445861f,0.2422041646840577544531f,\
+-0.5752297863073998485106f,0.7121630945985538696519f,0.4243803995861772371256f,\
+-0.1906833812311178877330f,0.3372689843733094883227f,0.5416475837340712917722f,\
+-0.5861506043378337249550f,-0.2077349615310257191503f,-0.8651650049502660477785f,\
+-1.0241615832881652004005f,-0.6504743749122398055462f,-0.5519965631116492410513f,\
+-0.4691302795139216663678f,0.4584432136447526562328f,0.9076183700076346783092f,\
+0.9185087029260963209509f,0.1102422571172131521289f,-0.0648124440153749203919f,\
+0.0281882007066550886731f,0.1358484485857832935185f,2.1004370090239423696232f,\
+1.0924991774831627200371f,-0.8060125587957032156083f,1.0172227264061333151801f,\
+1.736042493622687921118f,-0.1863533018119427342452f,-0.7549561185313359290561f,\
+-0.4614170985204111286038f,0.3046041145449288611857f,-1.8166306469319770666715f,\
+-0.9326970536559181512715f,3.1325332888309622703105f,-1.3792397781139973389486f,\
+-1.5415589891296013203004f,-0.0171150886014554831638f,-0.6712634278717346525411f,\
+0.1296776288627018158817f,0.7449048409492748934468f,-0.8355728364335629487769f,\
+1.0237167786809893144095f,-0.4002250855702985665729f,0.5275261647661907415952f,\
+-0.6365188485604326151801f,0.593818237113303393215f,-1.1086074290970830968917f,\
+0.5559215037224033428842f,-1.4188800488983950298660f,-0.2030109524350925953584f,\
+-1.2109116806527058241016f,-0.618648185057067423465f,-0.4406726279385401179312f,\
+0.0807360417981298622569f,1.3710194541092590725384f,0.0358784527834248925804f,\
+-1.041372191940861169357f,0.1478800901804916689830f,1.1035975394582797637355f,\
+1.8759258138597765253053f,0.2629805384285096581110f,0.6430289187352878910175f,\
+-0.5660273762902281458054f,-1.5862221930864266461469f,0.1695819872689824647782f,\
+1.7267400811821158601589f,0.8547625432037965209631f,0.5402035003963170378682f,\
+1.4525009288261496731565f,0.5539201036322172200244f,-0.1844324167806210001963f,\
+-0.8089386385243267918455f,0.2955667016509896383170f,0.0313028129649670083801f,\
+0.7108684384800065814147f,-1.0383547009634652713572f,1.4799479994581337116699f,\
+0.0442526991314810200229f,0.6878256510027744852209f,-0.8434557413354200061661f,\
+-1.1364652701643074284021f,-0.1306969520152806707447f,0.6762452782098172798797f,\
+1.005717225984443130571f,-1.5273278613167085016045f,1.2461250150575873263392f,\
+-0.4763639926970618110325f,-1.0549712063383256399618f,1.5370414589157994633695f,\
+-2.6233309837037732670240f,0.5329709825316656379712f,0.0656342963912304455665f,\
+-0.3044404175419783142864f,0.7166384348283165728333f,-0.4277478080499193535680f,\
+0.6675457063378462674308f,-0.6224892627320329774321f,-0.2853073726746037097612f,\
+0.4474264519637772830052f,-0.5733611255013777441292f,-0.8489115589330021860448f,\
+1.4767492874056193929988f,0.4675865941091252309114f,0.7215105644264150352996f,\
+-0.2485372004835029458025f,0.9533893539015392271097f,0.9949139163386880868600f,\
+-0.2888754177942080558772f,0.0572963634231402757502f,-0.3080752338091528041986f,\
+0.3183705746036424866219f,-1.7375264548714035583998f,-0.5142166878802835183748f,\
+0.4672787235144033601841f,-1.2044507032201230423141f,-0.5343152701155061690130f,\
+-0.6759512002250491757849f,-0.3426510354825004212032f,0.7655602779397917556636f,\
+1.3065460037453791031226f,-0.1368747459554155443406f,1.4390524672743967293798f,\
+-0.4067781526762131449892f,-1.4774318344439005823432f,-0.8024889348769219665769f,\
+1.1393982155849557980076f,-0.9552396245178285116850f,-0.9598461538853348962164f,\
+-0.8974087416560057040016f,1.5281783215878395054688f,0.7019410287263873060581f,\
+0.6105122611902852325372f,-0.8280825291376695540535f,-0.2271580885894484980181f,\
+-0.0995012215536074662303f,-2.6596162554083884188572f,-0.9212932842045244985485f,\
+-0.6502044836894653734305f,0.6158791818865629874580f,-0.2693325220287110521866f,\
+-0.5507689268125864900938f,-0.6719415444836209783119f,-0.9911235054617995032800f,\
+-0.4076140317144636981972f,-0.0225238830066269123120f,-1.8597701914697917224828f,\
+0.7233360518064337885136f,1.0977027535066357089022f,-0.1558800560054872108573f,\
+1.0623189198966227486665f,-0.8575163748144335462698f,-0.463854325361329367094f,\
+0.7064828873383774965333f,0.2713587745389601235679f,-0.3287316374977890531817f,\
+-1.6421667900158274377986f,-0.8609439745036365776443f,0.0106829139117793642938f,\
+1.092393189014539744974f,1.9620237692362385573119f,0.8200147353723576948425f,\
+0.0691827011392311119753f,-0.6229915735462322468052f,-0.2657062181808059753152f,\
+0.8160024961656430209089f,-0.4894047987117864928486f,0.8587006143920951073412f,\
+1.1051698569402153005115f,-0.2701243583599451381083f,-1.1113900272171266525589f,\
+0.2908920738530955119039f,0.1172101729688146409813f,3.2706795664298211612220f,\
+0.4518615589828762768576f,0.7020915980292293800957f,-0.8787256719819279693340f,\
+-0.9538277279422371357498f,-0.7330177387440419689568f,-0.0441506837064596646680f,\
+-0.8308242272476199508091f,0.2915116980546684222197f,0.2550214973106580407247f,\
+0.1576133484131722883870f,-2.8460534045826286764225f,-0.768075815339287371053f,\
+-0.4181165627609883528315f,-0.5448685867460187903788f,0.3158443034854154785052f,\
+0.0051109317177532613205f,0.3613121056785816853640f,0.5080216801947243787652f,\
+-0.5233928099098102970643f,-0.5953313420807592182271f,0.5535880446904775098460f,\
+1.842839548963430384987f,-0.6411995769353845409100f,-0.2922619465382557679689f,\
+0.1441406428551997020993f,1.6252679142635939602002f}
+/*
+#define RESULT2 {-1.4744610660983759053977+%i*1.5707963267948965579990f,\
+-3.2795029213225106445861+%i*1.5707963267948965579990f,0.2422041646840577544531f,\
+-0.5752297863073998485106+%i*1.5707963267948965579990f,\
+0.7121630945985538696519-%i*1.5707963267948965579990f,0.4243803995861772371256f,\
+-0.1906833812311178877330f,0.3372689843733094883227f,0.5416475837340712917722f,\
+-0.5861506043378337249550f,-0.2077349615310257191503f,-0.8651650049502660477785f,\
+-1.0241615832881652004005f,-0.6504743749122398055462f,-0.5519965631116492410513f,\
+-0.4691302795139216663678+%i*1.5707963267948965579990f,\
+0.4584432136447526562328-%i*1.5707963267948965579990f,\
+0.9076183700076346783092-%i*1.5707963267948965579990f,\
+0.9185087029260963209509-%i*1.5707963267948965579990f,0.1102422571172131521289f,\
+-0.0648124440153749203919f,0.0281882007066550886731f,0.1358484485857832935185f,\
+2.1004370090239423696232-%i*1.5707963267948965579990f,\
+1.0924991774831627200371-%i*1.5707963267948965579990f,-0.8060125587957032156083f,\
+1.0172227264061333151801f,1.736042493622687921118f,-0.1863533018119427342452f,\
+-0.7549561185313359290561f,-0.4614170985204111286038f,0.3046041145449288611857f,\
+-1.8166306469319770666715f,-0.9326970536559181512715f,\
+3.1325332888309622703105-%i*1.5707963267948965579990f,\
+-1.3792397781139973389486+%i*1.5707963267948965579990f,\
+-1.5415589891296013203004+%i*1.5707963267948965579990f,-0.0171150886014554831638f,\
+-0.6712634278717346525411f,0.1296776288627018158817f,\
+0.7449048409492748934468-%i*1.5707963267948965579990f,\
+-0.8355728364335629487769+%i*1.5707963267948965579990f,\
+1.0237167786809893144095-%i*1.5707963267948965579990f,-0.4002250855702985665729f,\
+0.5275261647661907415952-%i*1.5707963267948965579990f,-0.6365188485604326151801f,\
+0.593818237113303393215f,-1.1086074290970830968917+%i*1.5707963267948965579990f,\
+0.5559215037224033428842-%i*1.5707963267948965579990f,\
+-1.4188800488983950298660+%i*1.5707963267948965579990f,-0.2030109524350925953584f,\
+-1.2109116806527058241016f,-0.618648185057067423465f,-0.4406726279385401179312f,\
+0.0807360417981298622569f,1.3710194541092590725384-%i*1.5707963267948965579990f,\
+0.0358784527834248925804f,-1.041372191940861169357f,0.1478800901804916689830f,\
+1.1035975394582797637355f,1.8759258138597765253053f,0.2629805384285096581110f,\
+0.6430289187352878910175f,-0.5660273762902281458054f,\
+-1.5862221930864266461469+%i*1.5707963267948965579990f,0.1695819872689824647782f,\
+1.7267400811821158601589-%i*1.5707963267948965579990f,\
+0.8547625432037965209631-%i*1.5707963267948965579990f,0.5402035003963170378682f,\
+1.4525009288261496731565f,0.5539201036322172200244-%i*1.5707963267948965579990f,\
+-0.1844324167806210001963f,-0.8089386385243267918455+%i*1.5707963267948965579990f,\
+0.2955667016509896383170f,0.0313028129649670083801f,0.7108684384800065814147f,\
+-1.0383547009634652713572f,1.4799479994581337116699-%i*1.5707963267948965579990f,\
+0.0442526991314810200229f,0.6878256510027744852209-%i*1.5707963267948965579990f,\
+-0.8434557413354200061661f,-1.1364652701643074284021+%i*1.5707963267948965579990f,\
+-0.1306969520152806707447f,0.6762452782098172798797-%i*1.5707963267948965579990f,\
+1.005717225984443130571-%i*1.5707963267948965579990f,\
+-1.5273278613167085016045+%i*1.5707963267948965579990f,1.2461250150575873263392f,\
+-0.4763639926970618110325f,-1.0549712063383256399618f,1.5370414589157994633695f,\
+-2.6233309837037732670240+%i*1.5707963267948965579990f,0.5329709825316656379712f,\
+0.0656342963912304455665f,-0.3044404175419783142864f,0.7166384348283165728333f,\
+-0.4277478080499193535680f,0.6675457063378462674308f,-0.6224892627320329774321f,\
+-0.2853073726746037097612f,0.4474264519637772830052-%i*1.5707963267948965579990f,\
+-0.5733611255013777441292f,-0.8489115589330021860448f,\
+1.4767492874056193929988-%i*1.5707963267948965579990f,0.4675865941091252309114f,\
+0.7215105644264150352996-%i*1.5707963267948965579990f,-0.2485372004835029458025f,\
+0.9533893539015392271097-%i*1.5707963267948965579990f,0.9949139163386880868600f,\
+-0.2888754177942080558772f,0.0572963634231402757502f,-0.3080752338091528041986f,\
+0.3183705746036424866219f,-1.7375264548714035583998+%i*1.5707963267948965579990f,\
+-0.5142166878802835183748f,0.4672787235144033601841f,\
+-1.2044507032201230423141+%i*1.5707963267948965579990f,\
+-0.5343152701155061690130+%i*1.5707963267948965579990f,\
+-0.6759512002250491757849+%i*1.5707963267948965579990f,-0.3426510354825004212032f,\
+0.7655602779397917556636f,1.3065460037453791031226-%i*1.5707963267948965579990f,\
+-0.1368747459554155443406f,1.4390524672743967293798-%i*1.5707963267948965579990f,\
+-0.4067781526762131449892f,-1.4774318344439005823432f,-0.8024889348769219665769f,\
+1.1393982155849557980076f,-0.9552396245178285116850f,-0.9598461538853348962164f,\
+-0.8974087416560057040016f,1.5281783215878395054688f,\
+0.7019410287263873060581-%i*1.5707963267948965579990f,0.6105122611902852325372f,\
+-0.8280825291376695540535+%i*1.5707963267948965579990f,-0.2271580885894484980181f,\
+-0.0995012215536074662303f,-2.6596162554083884188572f,\
+-0.9212932842045244985485+%i*1.5707963267948965579990f,\
+-0.6502044836894653734305+%i*1.5707963267948965579990f,\
+0.6158791818865629874580-%i*1.5707963267948965579990f,-0.2693325220287110521866f,\
+-0.5507689268125864900938f,-0.6719415444836209783119f,\
+-0.9911235054617995032800+%i*1.5707963267948965579990f,-0.4076140317144636981972f,\
+-0.0225238830066269123120f,-1.8597701914697917224828f,\
+0.7233360518064337885136-%i*1.5707963267948965579990f,\
+1.0977027535066357089022-%i*1.5707963267948965579990f,-0.1558800560054872108573f,\
+1.0623189198966227486665f,-0.8575163748144335462698f,-0.463854325361329367094f,\
+0.7064828873383774965333f,0.2713587745389601235679f,-0.3287316374977890531817f,\
+-1.6421667900158274377986f,-0.8609439745036365776443f,0.0106829139117793642938f,\
+1.092393189014539744974f,1.9620237692362385573119f,0.8200147353723576948425f,\
+0.0691827011392311119753f,-0.6229915735462322468052+%i*1.5707963267948965579990f,\
+-0.2657062181808059753152f,0.8160024961656430209089f,-0.4894047987117864928486f,\
+0.8587006143920951073412f,1.1051698569402153005115-%i*1.5707963267948965579990f,\
+-0.2701243583599451381083f,-1.1113900272171266525589f,0.2908920738530955119039f,\
+0.1172101729688146409813f,3.2706795664298211612220-%i*1.5707963267948965579990f,\
+0.4518615589828762768576f,0.7020915980292293800957f,\
+-0.8787256719819279693340+%i*1.5707963267948965579990f,-0.9538277279422371357498f,\
+-0.7330177387440419689568+%i*1.5707963267948965579990f,-0.0441506837064596646680f,\
+-0.8308242272476199508091f,0.2915116980546684222197f,0.2550214973106580407247f,\
+0.1576133484131722883870f,-2.8460534045826286764225+%i*1.5707963267948965579990f,\
+-0.768075815339287371053f,-0.4181165627609883528315+%i*1.5707963267948965579990f,\
+-0.5448685867460187903788f,0.3158443034854154785052f,0.0051109317177532613205f,\
+0.3613121056785816853640f,0.5080216801947243787652f,\
+-0.5233928099098102970643+%i*1.5707963267948965579990f,\
+-0.5953313420807592182271+%i*1.5707963267948965579990f,0.5535880446904775098460f,\
+1.842839548963430384987-%i*1.5707963267948965579990f,-0.6411995769353845409100f,\
+-0.2922619465382557679689f,0.1441406428551997020993f,\
+1.6252679142635939602002-%i*1.5707963267948965579990f}
+*/
+#define CSOURCER {0.1566312085376346807664f,-0.9832172164912469369824f,-0.4352704306190940952703f,\
+0.5411529581857100756892f,-0.4189678441885264503775f,-0.3123240835354778588417f,\
+-0.6429953452754243459211f,0.5746034575341304462270f,0.0583200256392587754184f,\
+-0.7281504683187327575666f,0.4564682359303286474095f,1.2276307555220513645367f,\
+1.0722151830463704236251f,-0.8694353593641974686790f,0.4560977429718384712487f,\
+0.922397585949679688078f,0.3447492619094876808994f,-1.2072516069836567442763f,\
+-3.0311848873460989217676f,-0.5227521113472203273531f,-0.9127256852426085531604f,\
+0.9702908997340189412029f,0.7984557906741573951592f,-0.374280495762714437991f,\
+0.2178224309624917087724f,-0.7621335705740988064605f,0.4017588191443041689688f,\
+0.0259981222714757570502f,-2.250132425948803138738f,0.5878367273362664624514f,\
+2.3809410297786541832465f,0.1486053165381447105364f,0.101236219868174881498f,\
+0.6421364318076420163450f,-0.6540329098904471560871f,-0.5416580949191436289425f,\
+0.9514918150544823260972f,-1.267340977798151469003f,-0.8455403103569121281424f,\
+-0.364558782701674466420f,-1.0697180418170626481356f,0.1606013529586497734503f,\
+-1.6656989490484364058176f,0.4667927145215887141383f,-0.0128825329067423742513f,\
+0.9947195275346620846335f,0.8275102004468978256213f,0.2927543106645062453985f,\
+-0.9280170868066852651879f,-0.3636959897126564866809f,1.4783506936052415170479f,\
+2.4281448731590140610592f,-0.0602106018714212570808f,1.541843889601811401491f,\
+1.341076792855444343999f,-1.9789304036759756133534f,-0.3294688652910273685137f,\
+0.622286327382227888450f,-0.6118557906779339417014f,0.7459354816620213934897f,\
+-0.4040802511755230974622f,0.6577039363065745325443f,-0.5486081684530353941298f,\
+0.3927975474240214537325f,0.7894975295935096060163f,-0.1452945797743281086678f,\
+0.1437495883505973681693f,0.4103084241265512188690f,0.1795141291570316322002f,\
+-2.0420270362087347137958f,-1.0136631446624102537157f,-0.6372521675576777733241f,\
+-0.2601528835939894701568f,1.1986221523039410907785f,1.601129898882974078589f,\
+-1.2343266797475058726974f,0.9483471983582205666607f,-0.0424058145973261885198f,\
+0.5150673339403005757120f,0.0937153808744289607002f,0.4638195050716256706558f,\
+0.2202932903531656105844f,-0.6924450714085558233890f,-0.6889026252552187257194f,\
+0.4927201161848878685490f,0.3688430529148965519859f,-0.1495056200185169992256f,\
+0.0956460878099940903230f,0.8967077311519383586713f,0.7486850824131056070243f,\
+-0.3635393959060023716390f,2.72178097931810514254f,0.8872833757746945160250f,\
+0.9893578306194498184212f,0.8262130885403843327808f,1.8679166202704664545564f,\
+0.5569566531470352410693f,-0.0576405625178402075681f,0.8001172842696224751791f,\
+0.4480121632350138050072f,-0.2882322764074837784243f,-0.2677211241656151097246f,\
+0.2862315832454170316801f,0.9463381000719524038800f,-1.574827516423719320215f,\
+1.7962971923614798885893f,0.9930237578825827915452f,1.17225507537484907594f,\
+-0.9161863233099263315040f,0.1421586828731320473196f,-0.1430347256308386882928f,\
+-0.4683233849545334614994f,-0.3180446316984328336552f,-0.0576576190062656410151f,\
+0.6249620545306199259628f,0.7539731616235149092020f,-0.1134181356790778527621f,\
+-0.3551074647649283821949f,-1.5743164879335251882253f,-0.3132427332940839193043f,\
+-0.5345549536487770314608f,-0.3108292305558989498948f,-0.0698678127822071615149f,\
+1.9098270701284520978191f,0.3087451523556873911325f,0.792464324566980904407f,\
+-0.7089070907362685636244f,-1.69657580301203281259f,0.2839165766617411379436f,\
+-1.9503478026750964424707f,-0.8383432843348773699788f,0.4243701560501659808544f,\
+1.0206422864827822127864f,0.1651260412410127109695f,-2.4565661716609770159891f,\
+1.3581676364949575308572f,1.5976518292284813682613f,1.038096252933477403602f,\
+-0.2179395863297476365616f,0.1906211564102877620286f,0.1220518503007956001571f,\
+1.7007780598076820410824f,2.3461749520518053735429f,-0.7583114756702955538969f,\
+0.1563580374722161325796f,0.9458374821601646109670f,1.106385383701591562655f,\
+1.857413924600636034867f,0.9819266230329063427362f,0.1010843883126317094279f,\
+-0.0394749928167329941497f,0.9565452494078602319050f,-1.164240263162510835571f,\
+-0.0360262254241734622418f,-0.4279483181417821913151f,0.0207154879461370518279f,\
+0.1331812668838084079415f,0.0637098112636336894044f,0.5563753726211196903861f,\
+2.170691821782472885616f,-1.4105863647114469383581f,-0.3956456917805734052607f,\
+-0.7536155387925271842420f,-0.1512156734265959479036f,-1.0252674376565367175829f,\
+0.9250804906985814479725f,0.0319417929504777348138f,-0.3662171854280546479110f,\
+0.9733260674698945846828f,-0.2668109355235854240895f,0.9653716053391865337119f,\
+0.5007936673782547032374f,-0.1208939822530236685161f,1.0971085072938426829836f,\
+0.2029604338428208087919f,0.3746473304704570073120f,0.9561076870030955632274f,\
+1.1282520720814495085449f,1.5637873924930061342309f,0.4739411474762828535567f,\
+-0.9908999627117486275196f,0.4483771591380850130015f,0.7638174840760570960541f,\
+1.21967084705659489785f,-1.1141855892005874117956f,0.3637931277318062761594f,\
+0.0172116174170295101187f,-0.5359859794230503737822f,1.7180258735531828140353f,\
+-0.4389711879238100133982f,-0.5289769194381308548003f,-0.2349363816328474963147f,\
+-1.770826942434098993928f,-0.2698746134406798669048f,-1.6219764795098883247704f,\
+-0.4683402918639187895167f,0.4233140865550635290049f,0.5072350201185169549234f,\
+1.846909249365268790299f,0.8538988411566506009365f}
+
+#define CSOURCEI {-1.2880264074010461250452f,-0.9681461673606511775247f,0.8819263929226937026584f,\
+-0.2968181427237222558269f,0.3676169132810200301797f,-1.4546278949302484662098f,\
+-0.4969724671301882223950f,-1.3684785326259825133377f,0.3201951876584711031981f,\
+0.0925515282972030062236f,-1.3629699188377910612502f,1.3008264376880041002238f,\
+-1.312881117519760332257f,0.7519787618494813141723f,-0.349314202941638340949f,\
+-0.6612113457421112672208f,-0.1912192548186895935114f,-0.2871763408135362682927f,\
+2.1040662039819300055399f,0.6770601919983177952034f,-0.9998765495359557275989f,\
+1.0320694267454630921321f,0.5184250597548623051836f,0.3020078279774962016f,\
+-0.2426203970909892593255f,1.085343122387009806573f,0.3728224888143483184422f,\
+0.3597109342835585477083f,-0.5464095547489105086925f,-0.0522892744113094345981f,\
+-0.0037796004128336437196f,1.3386616898503973516199f,-0.8603866811447716811401f,\
+-0.215138661778858181206f,-0.1519505658345833010170f,-0.0684049031594022166614f,\
+0.3134237083474871732314f,-0.2552970754123656815793f,1.0371924512876768975644f,\
+-2.4944520251764212837031f,-0.9105655292839007763916f,-0.5967335487543307115388f,\
+-0.6520109300715212219401f,1.891233309015407648701f,-0.7688305781614098721732f,\
+0.1640648747943601049037f,-0.613585069751534706306f,-0.2234197861121311190491f,\
+1.9233974415188206386063f,0.315204859780382373735f,0.4595542257467975510998f,\
+-1.1764564844019769207506f,-2.1928435621757311757563f,-0.3567337876240649907622f,\
+1.4844812942744205486179f,0.2127167501638982105572f,0.326665566953199926203f,\
+-0.3823116465408597508535f,1.1195697860125490841199f,0.3156195041989769412005f,\
+-1.3411228504687704443654f,1.2817926351994635147946f,-0.8385592799769060468051f,\
+0.2920629737538525949603f,0.4117329700106473477916f,0.8168979807640022183790f,\
+0.6114286447089312126479f,-0.9103003485572774833301f,0.0883797323534893930486f,\
+-0.8309636819350860736932f,0.300088746736916378577f,-0.9870316877320252091366f,\
+0.0574605523525985317779f,-0.0055294403676948468418f,-0.4910286442216560409690f,\
+-0.9282905300686704608282f,-0.9620222168730435674533f,1.5101979946106838248454f,\
+0.16215452036647093337f,0.8355679951054210130579f,0.2598273768449387843837f,\
+-0.8781794540671359339257f,-0.0960593767304002976726f,-0.8457942620552999501982f,\
+-1.5126206512504021262089f,0.0267016916333849170517f,-0.0455102979008666919114f,\
+-0.9512410833653791586428f,-0.1410038404270228529214f,0.8526701417894808621156f,\
+-0.5427383894147087550763f,0.3670995115141847953133f,-0.4196045805115825033660f,\
+-0.861511165291383607112f,-0.5242638386479363532544f,-1.0690056931583220567461f,\
+-1.204258995571379831091f,-0.1994216356488724417595f,-0.651264013076401249158f,\
+-1.2804046190990912013064f,-0.1189798590125256405603f,0.2757828726342566594276f,\
+0.1186787898486535430820f,-0.9717707229710241811915f,-0.2337132662497607982210f,\
+-1.2810105417899781965474f,0.4516508120864454189913f,-1.7941677742351858082515f,\
+1.2424962452829722003855f,-0.1452111265545129592525f,0.803374036348334819024f,\
+2.2359407014896999221776f,0.0801276770871145183062f,0.1489247936009177042394f,\
+0.3146211320275099643240f,-1.49119197842913098206f,-0.8212344459793755602206f,\
+-1.3094646972226284820096f,-0.2661055404338998897629f,0.2164009824597608044883f,\
+0.4021554472831923576770f,1.0836546525394512574536f,-0.8330897968467666503400f,\
+-1.2783354864784060023197f,1.0944391027576960695455f,0.5158321013729825210703f,\
+0.5039256424604841022585f,-1.1530018443600813515815f,0.5567649276400054025871f,\
+1.5507245891800580661624f,2.0511800424609365478545f,0.2003839203406024560561f,\
+-0.5188228347179002497569f,-0.5014579405716672599880f,0.2409475853154263991218f,\
+-1.2895515809257553918599f,1.3505164949531500706570f,-1.7662555890569775485233f,\
+0.0695313390316097817978f,0.4857809488385180229919f,-1.54949381746834280449f,\
+-0.5022279078645265348868f,-0.4715667339089154030951f,0.9071363416804920642988f,\
+-0.0090747242741150424550f,-1.426140714401586517823f,0.0902619806757116310836f,\
+-0.7111783918397256432087f,0.4421886947944868029303f,1.3229936148586256550175f,\
+0.0399972677459073389095f,-0.2744759605679197855821f,-0.6365722011642755973071f,\
+0.0838977431731276618310f,-0.0154779602574307128399f,1.3680369604712516728995f,\
+0.8578728691952266505183f,0.9477645632263477226687f,0.4034044727794333096149f,\
+-0.1637512612660888822180f,-1.521579761721328916124f,0.7389202762668894974851f,\
+1.6242287608009475796678f,0.0251523200085141500348f,-0.2296479198161843759962f,\
+0.3374847554612029343346f,1.0988696857027278053209f,0.6720077941707034430152f,\
+1.6284314621145825618953f,1.2811365743500131575416f,-0.6480287734962971724073f,\
+0.4079918994040774293808f,-0.6857363255654103095793f,0.1644734231427373016832f,\
+-0.9707468997532966437092f,-1.0103908741767126944211f,-0.3245462572729273520444f,\
+0.3569008288111439886059f,1.1707819570142721232742f,0.0931015649413182710958f,\
+1.2605162559518456877328f,-0.2998099303847839292025f,-1.8576048661033506270712f,\
+0.3542284165121863948045f,-0.3606813370588974332343f,-0.1691565053601437607078f,\
+-1.3723457158075849093848f,-0.3869812789951324605298f,1.327934065790971063237f,\
+0.6883264291332520379285f,1.1636463404567130019984f,-1.6679940626595868291560f,\
+-1.1660526540945894691248f,2.4012435579972462029730f,1.8717476066252398680945f,\
+0.6269431765551266577674f,-0.7276289505214773578601f,0.5485159953217271233683f,\
+-1.0371187436769986334184f,2.282202076649753941240f}
+
+#define CRESULTR {0.0586345786159515672264f,-0.4119079581767730036113f,-0.2376773392005311347219f,\
+0.5274985111723742292611f,-0.3785076402666358030835f,-0.0984442400006558665515f,\
+-0.5157322835496214175066f,0.1877549307968403857760f,0.0529309487949000886942f,\
+-0.8980782630098248509043f,0.1535280327645664466552f,0.3347825460369071581823f,\
+0.3118103625565722958335f,-0.4854100811784345381739f,0.4200271027799429846006f,\
+0.558160367722654870981f,0.3440445808210612077538f,-0.9190853850068781971672f,\
+-0.2206972238733744262618f,-0.3495146734241325048309f,-0.3828254526784128919381f,\
+0.3837160824181031770763f,0.6067122840309074893739f,-0.3528285483819846302112f,\
+0.2081338122939639656561f,-0.3109916924279712002743f,0.3607981848765179355709f,\
+0.0230220619188065515892f,-0.4409843876587154487545f,0.6706334235337022553480f,\
+0.4476928944367338791821f,0.0530051009287677843407f,0.0580922710665942171326f,\
+0.6889248635636368023327f,-0.7403179849986993854571f,-0.6014835481325517818618f,\
+0.9148458682398055152873f,-0.9100406392834269331260f,-0.3512629496668798201320f,\
+-0.0497281250251861567380f,-0.4533232590993708788218f,0.1183827451686376569517f,\
+-0.5400714293963024825729f,0.0986159601519734224651f,-0.0080964813496256192449f,\
+1.2504251172076377152109f,0.553383982176059552316f,0.2851532314993195926789f,\
+-0.1735373380028721046475f,-0.3392884681219434650501f,0.6674877635610125814480f,\
+0.3361668249120546292374f,-0.0103608516149833115860f,0.6876886023380593959686f,\
+0.2994018975364160506381f,-0.5461669463711513738957f,-0.3036470157958083837535f,\
+0.5659099835134179246054f,-0.2522688982901432619421f,0.73840604848731461463f,\
+-0.1399717847889199173750f,0.2285367773899925347703f,-0.3073816797691770186240f,\
+0.3738323046463303267473f,0.6895008314715558306318f,-0.0869179912549136179933f,\
+0.1045814791078650968226f,0.2183617419002600035238f,0.1799962512946713666384f,\
+-0.4306170362358095471400f,-0.956790010441086580251f,-0.2988659063401313820130f,\
+-0.26528818791890551587f,1.2018988344435987958292f,0.6134078020904577543959f,\
+-0.4635409097157874858119f,0.4066731412601408690577f,-0.0129216461290907521503f,\
+0.5459518490067882812156f,0.0551242941387568297085f,0.4571890743247491450951f,\
+0.1235106929418888221939f,-0.8301715333893021631084f,-0.3700021952100086553017f,\
+0.1433522018206848380739f,0.3867313699737674470569f,-0.1503114555841373045642f,\
+0.0501390172375495365986f,1.193524050554648274769f,0.3916234392819171183930f,\
+-0.2811037877759303138525f,0.3767282302151824247005f,0.7464338830239950484113f,\
+0.4613726054161970124845f,0.6177367275920276901147f,0.3993738908711506052640f,\
+0.2139276426895061200550f,-0.0554860078847602203322f,0.5165924809229520686671f,\
+0.1633124027176871273515f,-0.2918709165103665625907f,-0.2528080890770357247455f,\
+0.2897583915934112130941f,0.4021736360794072595581f,-0.713539018877845987454f,\
+0.3562716257530119112751f,0.7547097044407786725628f,0.2233423544188815612621f,\
+-0.3032157270895312062287f,0.1400739703409606129458f,-0.0867211925226533952848f,\
+-0.0758855325499612903828f,-0.3269646450472631915574f,-0.0564625318897502212478f,\
+0.6090972295195002939039f,0.2104281878811394279616f,-0.0676285383445118792878f,\
+-0.1277092508406163506862f,-0.7041149381903939463712f,-0.3071683332013411815709f,\
+-0.4736979352269045095980f,-0.1404550230528205378988f,-0.0412179517191962191403f,\
+0.3529283428251930310182f,0.1380434056063472858522f,0.6051661095195016715209f,\
+-0.5594498837332433360814f,-0.3889971602159096875084f,0.2168075281019664068971f,\
+-0.3028666557798217473518f,-0.1458483340857026078208f,0.4293137169051447488144f,\
+0.6953697523295457871839f,0.1321249855766219449826f,-0.4265596445818128912286f,\
+0.3486234081846604770938f,0.3421608935025099995642f,0.2115120471977689209364f,\
+-0.2203370156751261743633f,0.1545639581145290264441f,0.0357922784779254460341f,\
+0.5794250482661091883330f,0.4312552311016552564205f,-0.3727620017605887681178f,\
+0.1576377379130869393897f,0.2624856474568436071060f,1.3577286999442579329411f,\
+0.4860182340340697959569f,0.7617714539289787145648f,0.0366834217396586823035f,\
+-0.0394322693273299676453f,0.9807192175900326658322f,-0.6164954700307514467994f,\
+-0.0357893654572665059765f,-0.4572287236587250780495f,0.0072135289476597582586f,\
+0.0765359692550191955673f,0.0335408660165012612042f,0.4931690601828112585636f,\
+0.4939993220457917777466f,-0.296325232124018844715f,-0.2516901659302647753513f,\
+-0.1874945429943649932714f,-0.1522841974461120184703f,-1.0886404519839611992893f,\
+0.8661426586684568551533f,0.0144669239838038730245f,-0.2498600121525025030689f,\
+0.2258303913936256790418f,-0.0996627600161344717744f,0.5798388843647412915772f,\
+0.4402912178536843579302f,-0.0821496253311937152386f,1.1995498265712831731378f,\
+0.1037875988793510867447f,0.1808411497687466285011f,0.9003994950861190504909f,\
+0.8693703906397208802659f,0.3871229651004495231348f,0.5084262016718109622460f,\
+-0.3127921352240150554280f,0.4284515458646944163768f,0.1566612259199449408431f,\
+0.8425254932446538669311f,-0.8675086878856705929763f,0.3679908151081396905369f,\
+0.0059690185652748976169f,-0.4818927853047598741654f,0.3475368987720111602080f,\
+-0.2928677403656957944911f,-0.21281918945471237081f,-0.0615315656203920743894f,\
+-0.3828854358877186170318f,-0.0395445045895176927608f,-0.2453056840726963727661f,\
+-0.3319274210060903507191f,0.2716611153754885932265f,0.3885772436850290501020f,\
+0.4083161225294907326067f,0.1256636073410991871757f}
+
+#define CRESULTI {-0.9150826723701824816359f,-1.0038007968241344780580f,0.7761168535216221853190f,\
+-0.3822213477951738047622f,0.4088073079437265500147f,-0.9829838814461281382151f,\
+-0.6207924428978939257462f,-0.9924436424002488488227f,0.3107781745847606469368f,\
+0.190823563908477877860f,-0.9717930993017909191423f,1.1362832817249874928223f,\
+-1.0952400709881249252220f,0.8906629459042527674484f,-0.4031733379746096357366f,\
+-0.8926214809458651311402f,-0.2125955165236021182640f,-1.1626545105534673574255f,\
+1.4098114180999468114663f,0.6875898477221956683891f,-0.9827065462915589577619f,\
+1.0122682558571856059615f,0.7403338169936454216113f,0.3329978318477040399870f,\
+-0.2487126175192662380642f,0.9535461622187894059621f,0.4086259224331897366156f,\
+0.3454903551399998162807f,-1.4480476267508943788442f,-0.0795552773231696652712f,\
+-1.5699867995861691571946f,0.9329922799220887741356f,-0.7134073946597112581003f,\
+-0.3357762973784728099957f,-0.2527252112264842809353f,-0.0962463379406888058787f,\
+0.7882465889811950399135f,-1.2456800812145352175264f,0.9674854545265952898703f,\
+-1.1957951138140576752278f,-1.0308375326751320066876f,-0.5464592420922904647540f,\
+-1.3032325007401501792970f,1.1035601617683621356036f,-0.6554945586705149818130f,\
+0.8103435172856551238496f,-0.8103372317467707475203f,-0.2385573277010208381732f,\
+1.1587938021757215878438f,0.3435431890072572769235f,1.279788873802896409515f,\
+-1.3915550484745486947702f,-1.143175630086853633571f,-1.3493948361964505089361f,\
+1.180878018812092644652f,1.4994549779312595916281f,0.3471363780379303487500f,\
+-0.5114436565324694816681f,0.922077454999635448551f,0.5359370502466848096290f,\
+-0.9575622722618749582679f,0.9840232928412098178939f,-0.7866361736794498238368f,\
+0.3275153905103054818859f,0.6621644080795368036974f,0.6911787537867797315272f,\
+0.5555203262090003812901f,-0.7845741854114917090968f,0.0910458923193785268912f,\
+-1.367532424689007264362f,0.8821163892946874973688f,-0.8805618815721650838313f,\
+0.0615381817744835926676f,-1.5581379012861951149915f,-1.3216226160366340014463f,\
+-1.1059140418930615279436f,-0.9879008462145800750775f,0.986169123983388073995f,\
+0.2146596902165759102044f,0.6986026791593697993221f,0.3134566221055383739014f,\
+-0.7342575229927524871343f,-0.1797145584041555665955f,-0.8413107892059722425770f,\
+-1.019619130948550722593f,0.0308925093685123823561f,-0.0465149720271331584831f,\
+-0.7628135267341744629732f,-0.5063811875785856342347f,0.8689285269800102184945f,\
+-0.5424489267017504889878f,1.5149231207825908374076f,-0.7635699257253423244407f,\
+-0.9835608360649982229162f,-0.7651335213236122312352f,-1.3047698554262849857110f,\
+-0.9383103802342007693227f,-0.1974540431056293898759f,-0.8100733516290339331078f,\
+-0.9439058311312691351702f,-0.1288637100697393178539f,0.2871927052822376702501f,\
+0.1283857487876574610119f,-0.9893521517129132414325f,-1.4229736910621084700068f,\
+-1.278268082403663186142f,0.88910168768678732309f,-1.1784373117164359534570f,\
+1.03935358865908744619f,-0.1470722349218777647017f,0.6828818013490814964328f,\
+1.1635383473949738597497f,0.0888393991592487247688f,0.1483135488190464867930f,\
+0.4446342289575472839225f,-1.055940453660143329984f,-0.6913288042725108661912f,\
+-0.9407243087808065951094f,-1.4053508981321376491991f,0.2342864098211708545616f,\
+0.4844410101414913238926f,0.8475776035888460402390f,-0.6960123633858344982528f,\
+-1.3016421578221382127083f,0.8519589639880413844963f,0.7342440505866469901974f,\
+0.6668635124458689444893f,-1.2591545397069716649696f,0.535024814500131951078f,\
+1.30226369708141054282f,1.1661057476987222170095f,0.2373787574293542146364f,\
+-0.9309471081116736934646f,-0.4736579850459717855315f,1.5236251088004300058287f,\
+-1.171065543003733777638f,1.2334327135159162125433f,-1.153213069447322158823f,\
+0.0728510737378383066432f,0.4639741641063248600574f,-0.9996734202650466860618f,\
+-1.3518108187607991155232f,-1.4723273061328936428538f,0.8933558949405833171653f,\
+-0.0093018535376701225181f,-1.0826576750905823054438f,1.2404141733855511553486f,\
+-1.3465428092378513014182f,0.8747309046321107839361f,0.9253397074562169644096f,\
+0.0400381835355557713640f,-0.7765785126027255902414f,-1.0546807717631738743336f,\
+0.0838092326986521196641f,-0.0189446011407611511479f,0.9396543988269212555053f,\
+0.7141040044798073749277f,0.7596541492574908627233f,0.4957818734457210552158f,\
+-1.5271090619693206136276f,-1.1987057982776780917789f,0.6860846415801318265437f,\
+1.0836815939774062655943f,0.0257348439490480244973f,-0.8966457616590515211641f,\
+0.7629454929184202871539f,0.8326995831057554253718f,0.6358947917453465770166f,\
+1.122174794910343109677f,0.9210086183100237855470f,-0.9179542949015334629692f,\
+0.4753128844824887067055f,-0.6057418122474197419436f,1.0912054352763760345368f,\
+-0.7811598998629154522177f,-0.8252118132068452238670f,-0.8003932093064218822320f,\
+1.040963230413896711823f,1.2239764586679500180111f,0.1191234084420016575701f,\
+1.064003892301497833373f,-0.3509788166940612241795f,-1.1278108079499422622405f,\
+1.1420720075136889803957f,-1.0231852297083139369249f,-0.1916370368791805167685f,\
+-0.941129540386991148004f,-0.4709650954727132576849f,1.2604683484747309929475f,\
+0.6665567013842946808566f,0.9183588395793375047660f,-1.0371195264398431756803f,\
+-1.276620042706810842503f,1.1799805845600985776400f,1.255793767839696428723f,\
+0.6354974793467924598644f,-0.6865980682751140484754f,0.5939555774818401356896f,\
+-1.3024651432778990844952f,1.197724373266410013983f}
+
+
+
+
+
+void satanhsTest() {
+ float in[]= SOURCE;
+ float res[]= RESULT;
+ float out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ out=satanhs(in[i]);
+ if (sisnans(out)) assert(1);
+ else assert( ( (fabs(out-res[i])) / (fabs(out)) ) <3e-6);
+ }
+}
+
+void catanhsTest() {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in, out;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=catanhs(in);
+ assert( ( (fabs(creals(out)-resR[i])) / (fabs(creals(out))) ) <1e-6);
+ assert( ( (fabs(cimags(out)-resI[i])) / (fabs(cimags(out))) ) <1e-6);
+ }
+}
+
+void satanhaTest(void) {
+ float in[]= SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i=0;
+
+ satanha(in,200,out);
+ for (i=0;i<200;i++){
+ if (sisnans(out[i])) assert(1);
+ else assert( ( (fabs(out[i]-res[i])) / (fabs(out[i])) ) <3e-6);
+ }
+}
+
+void catanhaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in[200], out[200];
+ int i=0;
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(inR[i],inI[i]);
+ }
+ catanha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( ( (fabs(creals(out[i])-resR[i])) / (fabs(creals(out[i]))) ) <1e-6);
+ assert( ( (fabs(cimags(out[i])-resI[i])) / (fabs(cimags(out[i]))) ) <1e-6);
+ }
+}
+
+int testAtanh() {
+ printf("\n>>>> Float Hyperbolic Arctangeant Tests\n");
+ satanhsTest();
+ catanhsTest();
+ satanhaTest();
+ catanhaTest();
+ return 0;
+}
+
+int main() {
+ assert(testAtanh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/zatanha.c b/2.3-1/src/c/elementaryFunctions/atanh/zatanha.c
new file mode 100644
index 00000000..e35af912
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/zatanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "atanh.h"
+
+void zatanha(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zatanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/atanh/zatanhs.c b/2.3-1/src/c/elementaryFunctions/atanh/zatanhs.c
new file mode 100644
index 00000000..7fb81126
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/atanh/zatanhs.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// METHOD
+// based on the formula atanh(z) = i atan(-i z)
+*/
+
+#include "atanh.h"
+#include "atan.h"
+
+doubleComplex zatanhs(doubleComplex z) {
+ doubleComplex minus_i_z = DoubleComplex(zimags(z), -zreals(z));
+ doubleComplex atan_minus_i_z = zatans(minus_i_z);
+ return DoubleComplex(-zimags(atan_minus_i_z), zreals(atan_minus_i_z));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/auxiliaryFunctions_Import.def b/2.3-1/src/c/elementaryFunctions/auxiliaryFunctions_Import.def
new file mode 100644
index 00000000..ee7e26e6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/auxiliaryFunctions_Import.def
@@ -0,0 +1,8 @@
+LIBRARY auxiliaryFunctions.dll
+
+
+EXPORTS
+sabss
+dabss
+spythags
+dpythags \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/bitand/u16bitanda.c b/2.3-1/src/c/elementaryFunctions/bitand/u16bitanda.c
new file mode 100644
index 00000000..ff92399c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitand/u16bitanda.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitand.h"
+
+void u16bitanda(uint16* x,uint16* y,int size,uint16* out)
+{
+ int i = 0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u16bitands(x[i],y[i]);
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitand/u16bitands.c b/2.3-1/src/c/elementaryFunctions/bitand/u16bitands.c
new file mode 100644
index 00000000..2fb78d17
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitand/u16bitands.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "bitand.h"
+
+uint16 u16bitands(uint16 x,uint16 y)
+{
+ return (x & y);
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitand/u8bitanda.c b/2.3-1/src/c/elementaryFunctions/bitand/u8bitanda.c
new file mode 100644
index 00000000..1622ec57
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitand/u8bitanda.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "bitand.h"
+
+void u8bitanda(uint8* x,uint8* y,int size,uint8* out)
+{
+ int i = 0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u8bitands(x[i],y[i]);
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitand/u8bitands.c b/2.3-1/src/c/elementaryFunctions/bitand/u8bitands.c
new file mode 100644
index 00000000..30dde0fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitand/u8bitands.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitand.h"
+
+uint8 u8bitands(uint8 x,uint8 y)
+{
+ return (x & y);
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmpa.c b/2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmpa.c
new file mode 100644
index 00000000..2d25d8d9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmpa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "bitcmp.h"
+void u16bitcmpa(uint16 *x,uint16 y,int size,uint16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u16bitcmps(x[i],y);
+
+ }
+
+
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmps.c b/2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmps.c
new file mode 100644
index 00000000..1cc2e296
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitcmp/u16bitcmps.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "bitcmp.h"
+uint16 u16bitcmps(uint16 x,uint16 y)
+{
+
+ return (~x);
+
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmpa.c b/2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmpa.c
new file mode 100644
index 00000000..c368f7d7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmpa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "bitcmp.h"
+void u8bitcmpa(uint8 *x,uint8 y,int size,uint8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u8bitcmps(x[i],y);
+
+ }
+
+
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmps.c b/2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmps.c
new file mode 100644
index 00000000..9d1affe0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitcmp/u8bitcmps.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "bitcmp.h"
+uint8 u8bitcmps(uint8 x,uint8 y)
+{
+ return (~x);
+
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitget/u16bitgets.c b/2.3-1/src/c/elementaryFunctions/bitget/u16bitgets.c
new file mode 100644
index 00000000..659d785b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitget/u16bitgets.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitget.h"
+#include<stdio.h>
+
+uint16 u16bitgets(uint16 value,int position)
+{
+
+ value = value >> (position -1);
+ value = value & 1;
+ return value;
+
+ /*unsigned char mask = 1<<(position-1);
+ uint16 bit = value&mask;
+ if(bit > 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }*/
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitget/u8bitgets.c b/2.3-1/src/c/elementaryFunctions/bitget/u8bitgets.c
new file mode 100644
index 00000000..03cc9097
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitget/u8bitgets.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "bitget.h"
+#include<stdio.h>
+
+uint8 u8bitgets(uint8 value,int position)
+{
+
+ value = value >> (position -1);
+ value = value & 1;
+ return value;
+
+ /*unsigned char mask = 1<<(position-1);
+ uint8 bit = value&mask;
+ if(bit > 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }*/
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitor/u16bitora.c b/2.3-1/src/c/elementaryFunctions/bitor/u16bitora.c
new file mode 100644
index 00000000..152ab53b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitor/u16bitora.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "bitor.h"
+
+void u16bitora(uint16* x,uint16* y,int size,uint16* out)
+{
+ int i = 0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u16bitors(x[i],y[i]);
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitor/u16bitors.c b/2.3-1/src/c/elementaryFunctions/bitor/u16bitors.c
new file mode 100644
index 00000000..984191ed
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitor/u16bitors.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitor.h"
+
+uint16 u16bitors(uint16 x,uint16 y)
+{
+ return (x | y);
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitor/u8bitora.c b/2.3-1/src/c/elementaryFunctions/bitor/u8bitora.c
new file mode 100644
index 00000000..83d08d50
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitor/u8bitora.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "bitor.h"
+
+void u8bitora(uint8* x,uint8* y,int size,uint8* out)
+{
+ int i = 0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u8bitors(x[i],y[i]);
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitor/u8bitors.c b/2.3-1/src/c/elementaryFunctions/bitor/u8bitors.c
new file mode 100644
index 00000000..9327effe
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitor/u8bitors.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitor.h"
+
+uint8 u8bitors(uint8 x,uint8 y)
+{
+ return (x | y);
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitset/u16bitsets.c b/2.3-1/src/c/elementaryFunctions/bitset/u16bitsets.c
new file mode 100644
index 00000000..179b7f21
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitset/u16bitsets.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitset.h"
+#include<stdio.h>
+
+uint16 u16bitsets(uint16 value,int position,int bit_value)
+{
+ if(bit_value==1)
+ {
+ unsigned char mask1 = 1 << (position-1) ; /* we could cast to unsigned char, just to be safe */
+ return (mask1 | value);
+ }
+ else
+ {
+ unsigned char mask2 = ~(1 << (position-1)); /*we could cast to unsigned char, just to be safe*/
+ return (mask2 & value);
+
+ }
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitset/u8bitsets.c b/2.3-1/src/c/elementaryFunctions/bitset/u8bitsets.c
new file mode 100644
index 00000000..1ff0d16f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitset/u8bitsets.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitset.h"
+#include<stdio.h>
+
+uint8 u8bitsets(uint8 value,int position,int bit_value)
+{
+ if(bit_value==1)
+ {
+ unsigned char mask1 = 1 << (position-1) ; /* we could cast to unsigned char, just to be safe */
+ return (mask1 | value);
+ }
+ else
+ {
+ unsigned char mask2 = ~(1 << (position-1)); /* we could cast to unsigned char, just to be safe */
+ return (mask2 & value);
+
+ }
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitxor/u16bitxora.c b/2.3-1/src/c/elementaryFunctions/bitxor/u16bitxora.c
new file mode 100644
index 00000000..413caa60
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitxor/u16bitxora.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "bitxor.h"
+
+void u16bitxora(uint16* x,uint16* y,int size,uint16* out)
+{
+ int i = 0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u16bitxors(x[i],y[i]);
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitxor/u16bitxors.c b/2.3-1/src/c/elementaryFunctions/bitxor/u16bitxors.c
new file mode 100644
index 00000000..b60fbb67
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitxor/u16bitxors.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitxor.h"
+
+uint16 u16bitxors(uint16 x,uint16 y)
+{
+ return (x ^ y);
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/bitxor/u8bitxora.c b/2.3-1/src/c/elementaryFunctions/bitxor/u8bitxora.c
new file mode 100644
index 00000000..7463487e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitxor/u8bitxora.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "bitxor.h"
+
+void u8bitxora(uint8* x,uint8* y,int size,uint8* out)
+{
+ int i = 0;
+ for(i=0;i<size;i++)
+ {
+ out[i] = u8bitxors(x[i],y[i]);
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/bitxor/u8bitxors.c b/2.3-1/src/c/elementaryFunctions/bitxor/u8bitxors.c
new file mode 100644
index 00000000..338f5482
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/bitxor/u8bitxors.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "bitxor.h"
+
+uint8 u8bitxors(uint8 x,uint8 y)
+{
+ return (x ^ y);
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/Makefile.am b/2.3-1/src/c/elementaryFunctions/ceil/Makefile.am
new file mode 100644
index 00000000..26723826
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/Makefile.am
@@ -0,0 +1,60 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libCeil_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libCeil.la
+
+libCeil_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/ceil.h
+
+SRC = sceils.c \
+ dceils.c \
+ cceils.c \
+ zceils.c \
+ sceila.c \
+ dceila.c \
+ cceila.c \
+ zceila.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/ceil/libCeil.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatCeil testDoubleCeil
+
+TESTS = testFloatCeil testDoubleCeil
+
+#
+# -*- Ceil Tests -*-
+#
+testFloatCeil_SOURCES = testFloatCeil.c
+testFloatCeil_CFLAGS = $(check_INCLUDES)
+testFloatCeil_LDADD = $(check_LDADD)
+
+testDoubleCeil_SOURCES = testDoubleCeil.c
+testDoubleCeil_CFLAGS = $(check_INCLUDES)
+testDoubleCeil_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/Makefile.in b/2.3-1/src/c/elementaryFunctions/ceil/Makefile.in
new file mode 100644
index 00000000..0283e108
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/Makefile.in
@@ -0,0 +1,788 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatCeil$(EXEEXT) testDoubleCeil$(EXEEXT)
+TESTS = testFloatCeil$(EXEEXT) testDoubleCeil$(EXEEXT)
+subdir = src/c/elementaryFunctions/ceil
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libCeil_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libCeil_la-sceils.lo libCeil_la-dceils.lo \
+ libCeil_la-cceils.lo libCeil_la-zceils.lo libCeil_la-sceila.lo \
+ libCeil_la-dceila.lo libCeil_la-cceila.lo libCeil_la-zceila.lo
+am_libCeil_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libCeil_la_OBJECTS = $(am_libCeil_la_OBJECTS)
+libCeil_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libCeil_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleCeil_OBJECTS = testDoubleCeil-testDoubleCeil.$(OBJEXT)
+testDoubleCeil_OBJECTS = $(am_testDoubleCeil_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/ceil/libCeil.la
+testDoubleCeil_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleCeil_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleCeil_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatCeil_OBJECTS = testFloatCeil-testFloatCeil.$(OBJEXT)
+testFloatCeil_OBJECTS = $(am_testFloatCeil_OBJECTS)
+testFloatCeil_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatCeil_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatCeil_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libCeil_la_SOURCES) $(testDoubleCeil_SOURCES) \
+ $(testFloatCeil_SOURCES)
+DIST_SOURCES = $(libCeil_la_SOURCES) $(testDoubleCeil_SOURCES) \
+ $(testFloatCeil_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libCeil_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libCeil.la
+libCeil_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/ceil.h
+SRC = sceils.c \
+ dceils.c \
+ cceils.c \
+ zceils.c \
+ sceila.c \
+ dceila.c \
+ cceila.c \
+ zceila.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/ceil/libCeil.la \
+ @LIBMATH@
+
+
+#
+# -*- Ceil Tests -*-
+#
+testFloatCeil_SOURCES = testFloatCeil.c
+testFloatCeil_CFLAGS = $(check_INCLUDES)
+testFloatCeil_LDADD = $(check_LDADD)
+testDoubleCeil_SOURCES = testDoubleCeil.c
+testDoubleCeil_CFLAGS = $(check_INCLUDES)
+testDoubleCeil_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/ceil/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/ceil/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libCeil.la: $(libCeil_la_OBJECTS) $(libCeil_la_DEPENDENCIES)
+ $(libCeil_la_LINK) -rpath $(pkglibdir) $(libCeil_la_OBJECTS) $(libCeil_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleCeil$(EXEEXT): $(testDoubleCeil_OBJECTS) $(testDoubleCeil_DEPENDENCIES)
+ @rm -f testDoubleCeil$(EXEEXT)
+ $(testDoubleCeil_LINK) $(testDoubleCeil_OBJECTS) $(testDoubleCeil_LDADD) $(LIBS)
+testFloatCeil$(EXEEXT): $(testFloatCeil_OBJECTS) $(testFloatCeil_DEPENDENCIES)
+ @rm -f testFloatCeil$(EXEEXT)
+ $(testFloatCeil_LINK) $(testFloatCeil_OBJECTS) $(testFloatCeil_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-cceila.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-cceils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-dceila.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-dceils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-sceila.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-sceils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-zceila.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCeil_la-zceils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleCeil-testDoubleCeil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatCeil-testFloatCeil.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libCeil_la-sceils.lo: sceils.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-sceils.lo -MD -MP -MF $(DEPDIR)/libCeil_la-sceils.Tpo -c -o libCeil_la-sceils.lo `test -f 'sceils.c' || echo '$(srcdir)/'`sceils.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-sceils.Tpo $(DEPDIR)/libCeil_la-sceils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sceils.c' object='libCeil_la-sceils.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-sceils.lo `test -f 'sceils.c' || echo '$(srcdir)/'`sceils.c
+
+libCeil_la-dceils.lo: dceils.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-dceils.lo -MD -MP -MF $(DEPDIR)/libCeil_la-dceils.Tpo -c -o libCeil_la-dceils.lo `test -f 'dceils.c' || echo '$(srcdir)/'`dceils.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-dceils.Tpo $(DEPDIR)/libCeil_la-dceils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dceils.c' object='libCeil_la-dceils.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-dceils.lo `test -f 'dceils.c' || echo '$(srcdir)/'`dceils.c
+
+libCeil_la-cceils.lo: cceils.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-cceils.lo -MD -MP -MF $(DEPDIR)/libCeil_la-cceils.Tpo -c -o libCeil_la-cceils.lo `test -f 'cceils.c' || echo '$(srcdir)/'`cceils.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-cceils.Tpo $(DEPDIR)/libCeil_la-cceils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cceils.c' object='libCeil_la-cceils.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-cceils.lo `test -f 'cceils.c' || echo '$(srcdir)/'`cceils.c
+
+libCeil_la-zceils.lo: zceils.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-zceils.lo -MD -MP -MF $(DEPDIR)/libCeil_la-zceils.Tpo -c -o libCeil_la-zceils.lo `test -f 'zceils.c' || echo '$(srcdir)/'`zceils.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-zceils.Tpo $(DEPDIR)/libCeil_la-zceils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zceils.c' object='libCeil_la-zceils.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-zceils.lo `test -f 'zceils.c' || echo '$(srcdir)/'`zceils.c
+
+libCeil_la-sceila.lo: sceila.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-sceila.lo -MD -MP -MF $(DEPDIR)/libCeil_la-sceila.Tpo -c -o libCeil_la-sceila.lo `test -f 'sceila.c' || echo '$(srcdir)/'`sceila.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-sceila.Tpo $(DEPDIR)/libCeil_la-sceila.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sceila.c' object='libCeil_la-sceila.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-sceila.lo `test -f 'sceila.c' || echo '$(srcdir)/'`sceila.c
+
+libCeil_la-dceila.lo: dceila.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-dceila.lo -MD -MP -MF $(DEPDIR)/libCeil_la-dceila.Tpo -c -o libCeil_la-dceila.lo `test -f 'dceila.c' || echo '$(srcdir)/'`dceila.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-dceila.Tpo $(DEPDIR)/libCeil_la-dceila.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dceila.c' object='libCeil_la-dceila.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-dceila.lo `test -f 'dceila.c' || echo '$(srcdir)/'`dceila.c
+
+libCeil_la-cceila.lo: cceila.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-cceila.lo -MD -MP -MF $(DEPDIR)/libCeil_la-cceila.Tpo -c -o libCeil_la-cceila.lo `test -f 'cceila.c' || echo '$(srcdir)/'`cceila.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-cceila.Tpo $(DEPDIR)/libCeil_la-cceila.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cceila.c' object='libCeil_la-cceila.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-cceila.lo `test -f 'cceila.c' || echo '$(srcdir)/'`cceila.c
+
+libCeil_la-zceila.lo: zceila.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -MT libCeil_la-zceila.lo -MD -MP -MF $(DEPDIR)/libCeil_la-zceila.Tpo -c -o libCeil_la-zceila.lo `test -f 'zceila.c' || echo '$(srcdir)/'`zceila.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCeil_la-zceila.Tpo $(DEPDIR)/libCeil_la-zceila.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zceila.c' object='libCeil_la-zceila.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCeil_la_CFLAGS) $(CFLAGS) -c -o libCeil_la-zceila.lo `test -f 'zceila.c' || echo '$(srcdir)/'`zceila.c
+
+testDoubleCeil-testDoubleCeil.o: testDoubleCeil.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCeil_CFLAGS) $(CFLAGS) -MT testDoubleCeil-testDoubleCeil.o -MD -MP -MF $(DEPDIR)/testDoubleCeil-testDoubleCeil.Tpo -c -o testDoubleCeil-testDoubleCeil.o `test -f 'testDoubleCeil.c' || echo '$(srcdir)/'`testDoubleCeil.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCeil-testDoubleCeil.Tpo $(DEPDIR)/testDoubleCeil-testDoubleCeil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCeil.c' object='testDoubleCeil-testDoubleCeil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCeil_CFLAGS) $(CFLAGS) -c -o testDoubleCeil-testDoubleCeil.o `test -f 'testDoubleCeil.c' || echo '$(srcdir)/'`testDoubleCeil.c
+
+testDoubleCeil-testDoubleCeil.obj: testDoubleCeil.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCeil_CFLAGS) $(CFLAGS) -MT testDoubleCeil-testDoubleCeil.obj -MD -MP -MF $(DEPDIR)/testDoubleCeil-testDoubleCeil.Tpo -c -o testDoubleCeil-testDoubleCeil.obj `if test -f 'testDoubleCeil.c'; then $(CYGPATH_W) 'testDoubleCeil.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCeil.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCeil-testDoubleCeil.Tpo $(DEPDIR)/testDoubleCeil-testDoubleCeil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCeil.c' object='testDoubleCeil-testDoubleCeil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCeil_CFLAGS) $(CFLAGS) -c -o testDoubleCeil-testDoubleCeil.obj `if test -f 'testDoubleCeil.c'; then $(CYGPATH_W) 'testDoubleCeil.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCeil.c'; fi`
+
+testFloatCeil-testFloatCeil.o: testFloatCeil.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCeil_CFLAGS) $(CFLAGS) -MT testFloatCeil-testFloatCeil.o -MD -MP -MF $(DEPDIR)/testFloatCeil-testFloatCeil.Tpo -c -o testFloatCeil-testFloatCeil.o `test -f 'testFloatCeil.c' || echo '$(srcdir)/'`testFloatCeil.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCeil-testFloatCeil.Tpo $(DEPDIR)/testFloatCeil-testFloatCeil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCeil.c' object='testFloatCeil-testFloatCeil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCeil_CFLAGS) $(CFLAGS) -c -o testFloatCeil-testFloatCeil.o `test -f 'testFloatCeil.c' || echo '$(srcdir)/'`testFloatCeil.c
+
+testFloatCeil-testFloatCeil.obj: testFloatCeil.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCeil_CFLAGS) $(CFLAGS) -MT testFloatCeil-testFloatCeil.obj -MD -MP -MF $(DEPDIR)/testFloatCeil-testFloatCeil.Tpo -c -o testFloatCeil-testFloatCeil.obj `if test -f 'testFloatCeil.c'; then $(CYGPATH_W) 'testFloatCeil.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCeil.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCeil-testFloatCeil.Tpo $(DEPDIR)/testFloatCeil-testFloatCeil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCeil.c' object='testFloatCeil-testFloatCeil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCeil_CFLAGS) $(CFLAGS) -c -o testFloatCeil-testFloatCeil.obj `if test -f 'testFloatCeil.c'; then $(CYGPATH_W) 'testFloatCeil.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCeil.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/cceila.c b/2.3-1/src/c/elementaryFunctions/ceil/cceila.c
new file mode 100644
index 00000000..b251440e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/cceila.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+void cceila(floatComplex* x, int size, floatComplex* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = cceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/cceils.c b/2.3-1/src/c/elementaryFunctions/ceil/cceils.c
new file mode 100644
index 00000000..b09fafc3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/cceils.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+floatComplex cceils(floatComplex x) {
+ float ceilReal = ceilf(creals(x));
+ float ceilImag = ceilf(cimags(x));
+
+ return FloatComplex(ceilReal, ceilImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/dceila.c b/2.3-1/src/c/elementaryFunctions/ceil/dceila.c
new file mode 100644
index 00000000..d21a9914
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/dceila.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+void dceila(double* x, int size, double* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = dceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/dceils.c b/2.3-1/src/c/elementaryFunctions/ceil/dceils.c
new file mode 100644
index 00000000..cd3df445
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/dceils.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+double dceils(double x) {
+ return (ceil(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/i16ceila.c b/2.3-1/src/c/elementaryFunctions/ceil/i16ceila.c
new file mode 100644
index 00000000..7b639e22
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/i16ceila.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+void i16ceila(int16* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16ceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/i16ceils.c b/2.3-1/src/c/elementaryFunctions/ceil/i16ceils.c
new file mode 100644
index 00000000..0b13c7e7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/i16ceils.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+int16 i16ceils(int16 x) {
+ return (int16)(ceilf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/i8ceila.c b/2.3-1/src/c/elementaryFunctions/ceil/i8ceila.c
new file mode 100644
index 00000000..aab8f78f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/i8ceila.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+void i8ceila(int8* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8ceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/i8ceils.c b/2.3-1/src/c/elementaryFunctions/ceil/i8ceils.c
new file mode 100644
index 00000000..901f87c6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/i8ceils.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+int8 i8ceils(int8 x) {
+ return (int8)(ceilf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/sceila.c b/2.3-1/src/c/elementaryFunctions/ceil/sceila.c
new file mode 100644
index 00000000..217536b1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/sceila.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+void sceila(float* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = sceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/sceils.c b/2.3-1/src/c/elementaryFunctions/ceil/sceils.c
new file mode 100644
index 00000000..cfcddeea
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/sceils.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+float sceils(float x) {
+ return (ceilf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/testDoubleCeil.c b/2.3-1/src/c/elementaryFunctions/ceil/testDoubleCeil.c
new file mode 100644
index 00000000..29b42c42
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/testDoubleCeil.c
@@ -0,0 +1,153 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "ceil.h"
+
+
+
+static void dceilsTest(void) {
+ assert ((fabs( dceils(-2) - (-2))/fabs(dceils(-2)))<1e-16);
+ assert ((fabs( dceils(-1.9) - (-1))/fabs(dceils(-1.9)))<1e-16);
+ assert ((fabs( dceils(-1.8) - (-1))/fabs(dceils(-1.8)))<1e-16);
+ assert ((fabs( dceils(-1.7) - (-1))/fabs(dceils(-1.7)))<1e-16);
+ assert ((fabs( dceils(-1.6) - (-1))/fabs(dceils(-1.6)))<1e-16);
+ assert ((fabs( dceils(-1.5) - (-1))/fabs(dceils(-1.5)))<1e-16);
+ assert ((fabs( dceils(-1.4) - (-1))/fabs(dceils(-1.4)))<1e-16);
+ assert ((fabs( dceils(-1.3) - (-1))/fabs(dceils(-1.3)))<1e-16);
+ assert ((fabs( dceils(-1.2) - (-1))/fabs(dceils(-1.2)))<1e-16);
+ assert ((fabs( dceils(-1.1) - (-1))/fabs(dceils(-1.1)))<1e-16);
+ assert ((fabs( dceils(-1.0) - (-1))/fabs(dceils(-1.0)))<1e-16);
+ assert (fabs( dceils(-.9))<1e-16);
+ assert ((fabs( dceils(1.0) - (1))/fabs(dceils(1.0)))<1e-16);
+ assert ((fabs( dceils(1.1) - (2))/fabs(dceils(1.1)))<1e-16);
+ assert ((fabs( dceils(1.2) - (2))/fabs(dceils(1.2)))<1e-16);
+ assert ((fabs( dceils(1.3) - (2))/fabs(dceils(1.3)))<1e-16);
+ assert ((fabs( dceils(1.4) - (2))/fabs(dceils(1.4)))<1e-16);
+ assert ((fabs( dceils(1.5) - (2))/fabs(dceils(1.9)))<1e-16);
+ assert ((fabs( dceils(1.6) - (2))/fabs(dceils(1.9)))<1e-16);
+ assert ((fabs( dceils(1.7) - (2))/fabs(dceils(1.9)))<1e-16);
+ assert ((fabs( dceils(1.8) - (2))/fabs(dceils(1.9)))<1e-16);
+ assert ((fabs( dceils(1.9) - (2))/fabs(dceils(1.9)))<1e-16);
+ assert ((fabs( dceils(2.0) - (2))/fabs(dceils(2.0)))<1e-16);
+
+}
+
+static void zceilsTest(void) {
+ doubleComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=DoubleComplex(-2,1);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.9,1.1);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.8,1.2);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.7,1.3);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.6,1.4);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.5,1.5);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.4,1.6);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.3,1.7);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.2,1.8);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.1,1.9);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.0,2.0);
+ out = zceils(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-.9,.9);
+ out = zceils(in);
+ assert (fabs( zreals(out))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+
+}
+
+static void dceilaTest(void) {
+ int i;
+ double in[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double res[10]={2,2,-2,-3,-4,7,5,5,0,1};
+ double out[10];
+
+ dceila(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert (fabs(out[i]-res[i])==0);
+}
+
+static void zceilaTest(void) {
+ int i;
+ double inR[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double inI[10]={5.4,1.8,1.4,-4.0,-2.7,-0.3,1.5,1.4,7.3,-4.6};
+ double resR[10]={2,2,-2,-3,-4,7,5,5,0,1};
+ double resI[10]={6,2,2,-4,-2,0,2,2,8,-4};
+ doubleComplex out[10],*in;
+
+ in=DoubleComplexMatrix(inR,inI,10);
+ zceila(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (zreals(out[i])!=0) assert(fabs(zreals(out[i])-resR[i])/fabs(zreals(out[i]))<1e-16);
+ else assert(fabs(zreals(out[i])-resR[i]) <1e-16);
+ if (zimags(out[i])!=0) assert(fabs(zimags(out[i])-resI[i])/fabs(zimags(out[i]))<1e-16);
+ else assert(fabs(zimags(out[i])-resI[i]) <1e-16);
+ }
+
+}
+
+
+static int testCeil() {
+ printf("\n>>>> Double Ceil Tests\n");
+ dceilsTest();
+ zceilsTest();
+ dceilaTest();
+ zceilaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testCeil() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/testFloatCeil.c b/2.3-1/src/c/elementaryFunctions/ceil/testFloatCeil.c
new file mode 100644
index 00000000..f3ded89b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/testFloatCeil.c
@@ -0,0 +1,149 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "ceil.h"
+
+
+static void sceilsTest(void) {
+
+ assert ((fabs( sceils(-2) - (-2))/fabs(sceils(-2)))<1e-16);
+ assert ((fabs( sceils(-1.9f) - (-1))/fabs(sceils(-1.9f)))<1e-16);
+ assert ((fabs( sceils(-1.8f) - (-1))/fabs(sceils(-1.8f)))<1e-16);
+ assert ((fabs( sceils(-1.7f) - (-1))/fabs(sceils(-1.7f)))<1e-16);
+ assert ((fabs( sceils(-1.6f) - (-1))/fabs(sceils(-1.6f)))<1e-16);
+ assert ((fabs( sceils(-1.5f) - (-1))/fabs(sceils(-1.5f)))<1e-16);
+ assert ((fabs( sceils(-1.4f) - (-1))/fabs(sceils(-1.4f)))<1e-16);
+ assert ((fabs( sceils(-1.3f) - (-1))/fabs(sceils(-1.3f)))<1e-16);
+ assert ((fabs( sceils(-1.2f) - (-1))/fabs(sceils(-1.2f)))<1e-16);
+ assert ((fabs( sceils(-1.1f) - (-1))/fabs(sceils(-1.1f)))<1e-16);
+ assert ((fabs( sceils(-1.0f) - (-1))/fabs(sceils(-1.0f)))<1e-16);
+ assert (fabs( sceils(-.9f))<1e-16);
+ assert ((fabs( sceils(1.0f) - (1))/fabs(sceils(1.0f)))<1e-16);
+ assert ((fabs( sceils(1.1f) - (2))/fabs(sceils(1.1f)))<1e-16);
+ assert ((fabs( sceils(1.2f) - (2))/fabs(sceils(1.2f)))<1e-16);
+ assert ((fabs( sceils(1.3f) - (2))/fabs(sceils(1.3f)))<1e-16);
+ assert ((fabs( sceils(1.4f) - (2))/fabs(sceils(1.4f)))<1e-16);
+ assert ((fabs( sceils(1.5f) - (2))/fabs(sceils(1.5f)))<1e-16);
+ assert ((fabs( sceils(1.6f) - (2))/fabs(sceils(1.6f)))<1e-16);
+ assert ((fabs( sceils(1.7f) - (2))/fabs(sceils(1.7f)))<1e-16);
+ assert ((fabs( sceils(1.8f) - (2))/fabs(sceils(1.8f)))<1e-16);
+ assert ((fabs( sceils(1.9f) - (2))/fabs(sceils(1.9f)))<1e-16);
+ assert ((fabs( sceils(2.0f) - (2))/fabs(sceils(2.0f)))<1e-16);
+}
+
+static void cceilsTest(void) {
+ floatComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=FloatComplex(-2,1);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.9f,1.1f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.8f,1.2f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.7f,1.3f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.6f,1.4f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.5f,1.5f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.4f,1.6f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.3f,1.7f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.2f,1.8f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.1f,1.9f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.0f,2.0f);
+ out = cceils(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-.9f,.9f);
+ out = cceils(in);
+ assert (fabs( creals(out))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+}
+
+static void sceilaTest(void) {
+ int i;
+ float in[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float res[10]={2,2,-2,-3,-4,7,5,5,0,1};
+ float out[10];
+
+ sceila(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i])<1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+}
+
+static void cceilaTest(void) {
+ int i;
+ float inR[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float inI[10]={5.4f,1.8f,1.4f,-4.0f,-2.7f,-0.3f,1.5f,1.4f,7.3f,-4.6f};
+ float resR[10]={2,2,-2,-3,-4,7,5,5,0,1};
+ float resI[10]={6,2,2,-4,-2,0,2,2,8,-4};
+ floatComplex out[10],*in;
+
+ in=FloatComplexMatrix(inR,inI,10);
+ cceila(in,10,out);
+
+ for (i=0;i<10;i++){
+ if(creals(out[i])!=0) assert(fabs(creals(out[i])-resR[i])/fabs(creals(out[i]))<1e-16);
+ else assert(fabs(creals(out[i])-resR[i]) <1e-16);
+ if(cimags(out[i])!=0) assert(fabs(cimags(out[i])-resI[i])/fabs(cimags(out[i]))<1e-16);
+ else assert(fabs(cimags(out[i])-resI[i]) <1e-16);
+ }
+}
+
+static int testCeil() {
+ printf("\n>>>> Float Ceil Tests\n");
+ sceilsTest();
+ cceilsTest();
+ sceilaTest();
+ cceilaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testCeil() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/u16ceila.c b/2.3-1/src/c/elementaryFunctions/ceil/u16ceila.c
new file mode 100644
index 00000000..cde894dc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/u16ceila.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+void u16ceila(uint16* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16ceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/u16ceils.c b/2.3-1/src/c/elementaryFunctions/ceil/u16ceils.c
new file mode 100644
index 00000000..1110b4b1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/u16ceils.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+uint16 u16ceils(uint16 x) {
+ return (uint16)(ceilf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/u8ceila.c b/2.3-1/src/c/elementaryFunctions/ceil/u8ceila.c
new file mode 100644
index 00000000..3d05a504
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/u8ceila.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+void u8ceila(uint8* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8ceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/u8ceils.c b/2.3-1/src/c/elementaryFunctions/ceil/u8ceils.c
new file mode 100644
index 00000000..c1ba0b0a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/u8ceils.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "ceil.h"
+
+uint8 u8ceils(uint8 x) {
+ return (uint8)(ceilf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/zceila.c b/2.3-1/src/c/elementaryFunctions/ceil/zceila.c
new file mode 100644
index 00000000..292726b1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/zceila.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+void zceila(doubleComplex* x, int size, doubleComplex* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = zceils(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/ceil/zceils.c b/2.3-1/src/c/elementaryFunctions/ceil/zceils.c
new file mode 100644
index 00000000..3befcd57
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/ceil/zceils.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "ceil.h"
+
+doubleComplex zceils(doubleComplex x) {
+ double ceilReal = ceil(zreals(x));
+ double ceilImag = ceil(zimags(x));
+
+ return DoubleComplex(ceilReal, ceilImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/Makefile.am b/2.3-1/src/c/elementaryFunctions/cos/Makefile.am
new file mode 100644
index 00000000..890675be
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/Makefile.am
@@ -0,0 +1,71 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libCos_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libCos.la
+
+libCos_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/cos.h
+
+SRC = scoss.c \
+ dcoss.c \
+ ccoss.c \
+ zcoss.c \
+ scosa.c \
+ dcosa.c \
+ ccosa.c \
+ zcosa.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatCos testDoubleCos
+
+TESTS = testFloatCos testDoubleCos
+
+#
+# -*- Cosine Tests -*-
+#
+testFloatCos_SOURCES = ../../includes/constant.h testCos.h testFloatCos.c
+testFloatCos_CFLAGS = $(check_INCLUDES)
+testFloatCos_LDADD = $(check_LDADD)
+
+testDoubleCos_SOURCES = ../../includes/constant.h testCos.h testDoubleCos.c
+testDoubleCos_CFLAGS = $(check_INCLUDES)
+testDoubleCos_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/cos/Makefile.in b/2.3-1/src/c/elementaryFunctions/cos/Makefile.in
new file mode 100644
index 00000000..748b9283
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/Makefile.in
@@ -0,0 +1,810 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatCos$(EXEEXT) testDoubleCos$(EXEEXT)
+TESTS = testFloatCos$(EXEEXT) testDoubleCos$(EXEEXT)
+subdir = src/c/elementaryFunctions/cos
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libCos_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libCos_la-scoss.lo libCos_la-dcoss.lo \
+ libCos_la-ccoss.lo libCos_la-zcoss.lo libCos_la-scosa.lo \
+ libCos_la-dcosa.lo libCos_la-ccosa.lo libCos_la-zcosa.lo
+am_libCos_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libCos_la_OBJECTS = $(am_libCos_la_OBJECTS)
+libCos_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libCos_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleCos_OBJECTS = testDoubleCos-testDoubleCos.$(OBJEXT)
+testDoubleCos_OBJECTS = $(am_testDoubleCos_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la
+testDoubleCos_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleCos_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleCos_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatCos_OBJECTS = testFloatCos-testFloatCos.$(OBJEXT)
+testFloatCos_OBJECTS = $(am_testFloatCos_OBJECTS)
+testFloatCos_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatCos_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatCos_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libCos_la_SOURCES) $(testDoubleCos_SOURCES) \
+ $(testFloatCos_SOURCES)
+DIST_SOURCES = $(libCos_la_SOURCES) $(testDoubleCos_SOURCES) \
+ $(testFloatCos_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libCos_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libCos.la
+libCos_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/cos.h
+SRC = scoss.c \
+ dcoss.c \
+ ccoss.c \
+ zcoss.c \
+ scosa.c \
+ dcosa.c \
+ ccosa.c \
+ zcosa.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ @LIBMATH@
+
+
+#
+# -*- Cosine Tests -*-
+#
+testFloatCos_SOURCES = ../../includes/constant.h testCos.h testFloatCos.c
+testFloatCos_CFLAGS = $(check_INCLUDES)
+testFloatCos_LDADD = $(check_LDADD)
+testDoubleCos_SOURCES = ../../includes/constant.h testCos.h testDoubleCos.c
+testDoubleCos_CFLAGS = $(check_INCLUDES)
+testDoubleCos_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/cos/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/cos/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libCos.la: $(libCos_la_OBJECTS) $(libCos_la_DEPENDENCIES)
+ $(libCos_la_LINK) -rpath $(pkglibdir) $(libCos_la_OBJECTS) $(libCos_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleCos$(EXEEXT): $(testDoubleCos_OBJECTS) $(testDoubleCos_DEPENDENCIES)
+ @rm -f testDoubleCos$(EXEEXT)
+ $(testDoubleCos_LINK) $(testDoubleCos_OBJECTS) $(testDoubleCos_LDADD) $(LIBS)
+testFloatCos$(EXEEXT): $(testFloatCos_OBJECTS) $(testFloatCos_DEPENDENCIES)
+ @rm -f testFloatCos$(EXEEXT)
+ $(testFloatCos_LINK) $(testFloatCos_OBJECTS) $(testFloatCos_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-ccosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-ccoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-dcosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-dcoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-scosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-scoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-zcosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCos_la-zcoss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleCos-testDoubleCos.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatCos-testFloatCos.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libCos_la-scoss.lo: scoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-scoss.lo -MD -MP -MF $(DEPDIR)/libCos_la-scoss.Tpo -c -o libCos_la-scoss.lo `test -f 'scoss.c' || echo '$(srcdir)/'`scoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-scoss.Tpo $(DEPDIR)/libCos_la-scoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scoss.c' object='libCos_la-scoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-scoss.lo `test -f 'scoss.c' || echo '$(srcdir)/'`scoss.c
+
+libCos_la-dcoss.lo: dcoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-dcoss.lo -MD -MP -MF $(DEPDIR)/libCos_la-dcoss.Tpo -c -o libCos_la-dcoss.lo `test -f 'dcoss.c' || echo '$(srcdir)/'`dcoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-dcoss.Tpo $(DEPDIR)/libCos_la-dcoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcoss.c' object='libCos_la-dcoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-dcoss.lo `test -f 'dcoss.c' || echo '$(srcdir)/'`dcoss.c
+
+libCos_la-ccoss.lo: ccoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-ccoss.lo -MD -MP -MF $(DEPDIR)/libCos_la-ccoss.Tpo -c -o libCos_la-ccoss.lo `test -f 'ccoss.c' || echo '$(srcdir)/'`ccoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-ccoss.Tpo $(DEPDIR)/libCos_la-ccoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccoss.c' object='libCos_la-ccoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-ccoss.lo `test -f 'ccoss.c' || echo '$(srcdir)/'`ccoss.c
+
+libCos_la-zcoss.lo: zcoss.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-zcoss.lo -MD -MP -MF $(DEPDIR)/libCos_la-zcoss.Tpo -c -o libCos_la-zcoss.lo `test -f 'zcoss.c' || echo '$(srcdir)/'`zcoss.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-zcoss.Tpo $(DEPDIR)/libCos_la-zcoss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcoss.c' object='libCos_la-zcoss.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-zcoss.lo `test -f 'zcoss.c' || echo '$(srcdir)/'`zcoss.c
+
+libCos_la-scosa.lo: scosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-scosa.lo -MD -MP -MF $(DEPDIR)/libCos_la-scosa.Tpo -c -o libCos_la-scosa.lo `test -f 'scosa.c' || echo '$(srcdir)/'`scosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-scosa.Tpo $(DEPDIR)/libCos_la-scosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scosa.c' object='libCos_la-scosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-scosa.lo `test -f 'scosa.c' || echo '$(srcdir)/'`scosa.c
+
+libCos_la-dcosa.lo: dcosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-dcosa.lo -MD -MP -MF $(DEPDIR)/libCos_la-dcosa.Tpo -c -o libCos_la-dcosa.lo `test -f 'dcosa.c' || echo '$(srcdir)/'`dcosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-dcosa.Tpo $(DEPDIR)/libCos_la-dcosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcosa.c' object='libCos_la-dcosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-dcosa.lo `test -f 'dcosa.c' || echo '$(srcdir)/'`dcosa.c
+
+libCos_la-ccosa.lo: ccosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-ccosa.lo -MD -MP -MF $(DEPDIR)/libCos_la-ccosa.Tpo -c -o libCos_la-ccosa.lo `test -f 'ccosa.c' || echo '$(srcdir)/'`ccosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-ccosa.Tpo $(DEPDIR)/libCos_la-ccosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccosa.c' object='libCos_la-ccosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-ccosa.lo `test -f 'ccosa.c' || echo '$(srcdir)/'`ccosa.c
+
+libCos_la-zcosa.lo: zcosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -MT libCos_la-zcosa.lo -MD -MP -MF $(DEPDIR)/libCos_la-zcosa.Tpo -c -o libCos_la-zcosa.lo `test -f 'zcosa.c' || echo '$(srcdir)/'`zcosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCos_la-zcosa.Tpo $(DEPDIR)/libCos_la-zcosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcosa.c' object='libCos_la-zcosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCos_la_CFLAGS) $(CFLAGS) -c -o libCos_la-zcosa.lo `test -f 'zcosa.c' || echo '$(srcdir)/'`zcosa.c
+
+testDoubleCos-testDoubleCos.o: testDoubleCos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCos_CFLAGS) $(CFLAGS) -MT testDoubleCos-testDoubleCos.o -MD -MP -MF $(DEPDIR)/testDoubleCos-testDoubleCos.Tpo -c -o testDoubleCos-testDoubleCos.o `test -f 'testDoubleCos.c' || echo '$(srcdir)/'`testDoubleCos.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCos-testDoubleCos.Tpo $(DEPDIR)/testDoubleCos-testDoubleCos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCos.c' object='testDoubleCos-testDoubleCos.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCos_CFLAGS) $(CFLAGS) -c -o testDoubleCos-testDoubleCos.o `test -f 'testDoubleCos.c' || echo '$(srcdir)/'`testDoubleCos.c
+
+testDoubleCos-testDoubleCos.obj: testDoubleCos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCos_CFLAGS) $(CFLAGS) -MT testDoubleCos-testDoubleCos.obj -MD -MP -MF $(DEPDIR)/testDoubleCos-testDoubleCos.Tpo -c -o testDoubleCos-testDoubleCos.obj `if test -f 'testDoubleCos.c'; then $(CYGPATH_W) 'testDoubleCos.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCos.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCos-testDoubleCos.Tpo $(DEPDIR)/testDoubleCos-testDoubleCos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCos.c' object='testDoubleCos-testDoubleCos.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCos_CFLAGS) $(CFLAGS) -c -o testDoubleCos-testDoubleCos.obj `if test -f 'testDoubleCos.c'; then $(CYGPATH_W) 'testDoubleCos.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCos.c'; fi`
+
+testFloatCos-testFloatCos.o: testFloatCos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCos_CFLAGS) $(CFLAGS) -MT testFloatCos-testFloatCos.o -MD -MP -MF $(DEPDIR)/testFloatCos-testFloatCos.Tpo -c -o testFloatCos-testFloatCos.o `test -f 'testFloatCos.c' || echo '$(srcdir)/'`testFloatCos.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCos-testFloatCos.Tpo $(DEPDIR)/testFloatCos-testFloatCos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCos.c' object='testFloatCos-testFloatCos.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCos_CFLAGS) $(CFLAGS) -c -o testFloatCos-testFloatCos.o `test -f 'testFloatCos.c' || echo '$(srcdir)/'`testFloatCos.c
+
+testFloatCos-testFloatCos.obj: testFloatCos.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCos_CFLAGS) $(CFLAGS) -MT testFloatCos-testFloatCos.obj -MD -MP -MF $(DEPDIR)/testFloatCos-testFloatCos.Tpo -c -o testFloatCos-testFloatCos.obj `if test -f 'testFloatCos.c'; then $(CYGPATH_W) 'testFloatCos.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCos.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCos-testFloatCos.Tpo $(DEPDIR)/testFloatCos-testFloatCos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCos.c' object='testFloatCos-testFloatCos.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCos_CFLAGS) $(CFLAGS) -c -o testFloatCos-testFloatCos.obj `if test -f 'testFloatCos.c'; then $(CYGPATH_W) 'testFloatCos.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCos.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/cos/ccosa.c b/2.3-1/src/c/elementaryFunctions/cos/ccosa.c
new file mode 100644
index 00000000..fbc421c6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/ccosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+
+void ccosa(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ccoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/ccoss.c b/2.3-1/src/c/elementaryFunctions/cos/ccoss.c
new file mode 100644
index 00000000..cee27a6e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/ccoss.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+#include "sin.h"
+#include "cosh.h"
+#include "sinh.h"
+
+floatComplex ccoss(floatComplex z) {
+ float real = creals(z);
+ float imag = cimags(z);
+
+ return FloatComplex(scoss(real) * scoshs(imag),
+ -ssins(real) * ssinhs(imag));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/dcosa.c b/2.3-1/src/c/elementaryFunctions/cos/dcosa.c
new file mode 100644
index 00000000..3a3242be
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/dcosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+
+void dcosa(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dcoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/dcoss.c b/2.3-1/src/c/elementaryFunctions/cos/dcoss.c
new file mode 100644
index 00000000..4614bd8a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/dcoss.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+
+double dcoss(double x) {
+ return (cos(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/i16cosa.c b/2.3-1/src/c/elementaryFunctions/cos/i16cosa.c
new file mode 100644
index 00000000..426eeabc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/i16cosa.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cos.h"
+
+void i16cosa(int16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16coss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/i16coss.c b/2.3-1/src/c/elementaryFunctions/cos/i16coss.c
new file mode 100644
index 00000000..787f713b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/i16coss.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "cos.h"
+
+float i16coss(int16 x) {
+ return (cos((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/i8cosa.c b/2.3-1/src/c/elementaryFunctions/cos/i8cosa.c
new file mode 100644
index 00000000..2f0053c8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/i8cosa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cos.h"
+
+void i8cosa(int8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8coss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/i8coss.c b/2.3-1/src/c/elementaryFunctions/cos/i8coss.c
new file mode 100644
index 00000000..4b344e1d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/i8coss.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "cos.h"
+
+float i8coss(int8 x) {
+ return (cos((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/scosa.c b/2.3-1/src/c/elementaryFunctions/cos/scosa.c
new file mode 100644
index 00000000..19930636
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/scosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+
+void scosa(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = scoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/scoss.c b/2.3-1/src/c/elementaryFunctions/cos/scoss.c
new file mode 100644
index 00000000..9a3ca059
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/scoss.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+
+float scoss(float x) {
+ return (cosf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/testCos.h b/2.3-1/src/c/elementaryFunctions/cos/testCos.h
new file mode 100644
index 00000000..11be0542
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/testCos.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTCOS_H_
+#define _TESTCOS_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "cos.h"
+#include "constant.h"
+
+
+void scossTest(void);
+
+void dcossTest(void);
+
+void ccossTest(void);
+
+void zcossTest(void);
+
+void scosaTest(void);
+
+void dcosaTest(void);
+
+void ccosaTest(void);
+
+void zcosaTest(void);
+
+int testCos(void);
+
+#endif /* ! _TESTCOS_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/cos/testDoubleCos.c b/2.3-1/src/c/elementaryFunctions/cos/testDoubleCos.c
new file mode 100644
index 00000000..d53d4aa6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/testDoubleCos.c
@@ -0,0 +1,496 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testCos.h"
+
+#define SOURCE {0.6087216374946681218816,-0.4914009399790010834685,0.2966492127240239473629,\
+-1.0120131171793795843428,-2.1768580524449996360659,0.0399891371904198267284,\
+0.3264664449949340463419,0.3928915710000103755917,-0.9023248339668938911018,\
+-0.7061054028011619632110,0.6351420537982425118528,1.7243031942788638044561,\
+-1.193843423508647916265,-0.6699486724870092890782,0.9455390047179551560319,\
+-0.7269584830448905243827,0.0587220167793607444873,0.7465722023081590164040,\
+-1.8115798920517958148224,-2.7758706356233147083401,1.6672616062636114175888,\
+-0.0836705642425854267952,0.3278617890836109105557,-0.4784618803967296551960,\
+-1.5167866307363953026766,0.3278666902123760218402,1.4583399615307341967707,\
+0.1568728504489345088,0.8788327319516627822438,0.6503974594047504664829,\
+-1.2192475208695570110251,1.1760897921697979207067,-1.8443279857673484656289,\
+0.7800878370874437806037,-1.7143820612787801227483,-1.2442138561935551788196,\
+-0.5030865876060848229656,-0.7500891916411158710787,0.0131204357988426462828,\
+-1.3051873378120935065283,-0.4721103394959948462706,-1.08171405175402890464,\
+0.1772346225663179453136,0.0709726766378662859980,0.5997183167182360552516,\
+-0.7982542475055777186910,1.1146919091581586336304,-0.5226194052411643475864,\
+-0.3280122727754089528851,0.0845844607820355476324,-0.4076056231156577891461,\
+2.671024580732940023609,0.2751537532064078916960,0.6141628828811964702084,\
+-0.7694928564341785293124,1.5452838740749164081478,1.2047554263319388834219,\
+-0.4418728868867642933793,-2.3845314085200706166745,-0.4507303538478215632068,\
+-1.2843948816610906149549,0.6258568994217935665958,0.5221599455292258440409,\
+0.6881147826420792590341,-1.5350411433640571701176,-0.9627472135269001807245,\
+-0.5218069771892938080171,0.1257945676013507985136,-1.6629602539620385037722,\
+-0.1168122168368753571732,0.6319751771097191772597,0.0279680711838030011951,\
+-1.0789454333610759562134,-2.2539675570413915117740,0.0159524501831603895963,\
+0.7246005623822228125519,1.3584241656028799294376,0.1335331404272114830256,\
+0.8003059664568770159576,-1.5933335032689068810896,-0.2766963701941145270524,\
+-0.1259819476132254256751,-2.1871819624452908392698,-0.0027183437417650840526,\
+0.0895441283705892265843,-0.0655528187812533247314,0.0082181667448872272597,\
+-0.1292799439278431716804,0.8059814954561199673577,-1.0227158239595737221350,\
+-1.1728578375397291644333,0.3095622814458759419765,0.4085150016548139140227,\
+0.4376992889872045044974,3.0932123457325086945957,-0.2404500241757465406334,\
+-0.2553482065690487190501,1.0058683512127921666490,1.8395637792194936555035,\
+0.3411429898658094317376,-3.0536685582128435534344,-0.1095788307430261981912,\
+1.6414918920137913094237,-1.0744672373614887472826,1.5353378953533194373193,\
+-0.8528406784492137404641,-0.7422456212235352124296,0.1342811638770788351671,\
+-1.6549750406888592557664,-0.7256367869747750720677,-0.0862485588565954086615,\
+-0.0561038363580659213414,-0.0030846890449726638815,0.2539566584786872027735,\
+-2.255576969911772700073,-1.7353562843564334094992,1.4790955315931679781016,\
+-0.6277258320505759714436,-0.874734985447433444072,1.7535503835541961237254,\
+-0.8019918985373268860428,0.2826253943812546687298,0.9297345065408313402600,\
+-0.1628091770786383452041,-0.5361503318172788912221,-0.1559543394910963276523,\
+0.4214606760227143644748,1.9422068405845787086861,1.126122745997659491124,\
+-0.3806596390838080656849,0.2838150495409667017910,0.5356418000869134221631,\
+-0.8698259506453359657385,-1.4811954887734988250969,-0.6640101248288414748089,\
+-0.8768395331826340788339,0.1637943427647920169310,0.8023136616688257838348,\
+1.9190648920981443481537,-1.1659867862660415749332,0.9175250832331292016875,\
+-0.4629851548188154697350,1.1531379126231540155345,1.280357188491430875388,\
+0.8752030571429955108087,-1.80360898378670553299,0.5261137866109517613467,\
+0.0015036147858927245008,-0.9395126502065724860557,0.1254332133415215488892,\
+0.7981010350443900058792,-0.7787639258289269506008,-2.211373434923878722458,\
+0.4245313340753193442900,0.4777310697112210347015,-0.7091015173222630085803,\
+2.5269774755909995000991,-0.5189834616032670266961,0.7465455379507028865760,\
+1.6922232637382539355286,-0.7527036628439752741215,-0.1791091421294778995854,\
+-1.143803039940205490410,-0.3557089242818732288676,-2.5859928945830414903639,\
+-0.4620292997028574988327,2.1043646801028508264153,0.2700104378784371483846,\
+-0.5683100411735593215923,0.0576234736047250076241,-0.3494123351876678440497,\
+-0.6437179916333417573071,1.1183843932324186720706,-1.7070244497383502135790,\
+-0.5423910203569126675660,1.478528409100926088726,1.4635937207455358421981,\
+0.9926533118110351106012,-0.7069946768514858703725,-0.7247022468472048561949,\
+0.0958136359005943571976,-0.3502577985930430126693,-0.7552136456030923428173,\
+0.4974020403078212582137,-1.1482817888259779781635,-0.2861580091485689814057,\
+-0.5017215979538576231533,-0.6146143460074020570261,-0.8743941016318307335453,\
+0.6112858348465053381915,1.1276508199848169766710,-0.6796253617896085286176,\
+1.0967206821241466396799,0.3644470031679390431556,0.2076189090924974445240,\
+-0.5458105472995297136052,-0.0671640776881476525562,0.9301013215147568846675,\
+1.4191187165731935504454,1.9739542618337482249302}
+
+#define RESULT {0.8203796801888452172591,0.8816726743563225721090,0.9563213494741442666225,\
+0.5301548730715204271746,-0.5696350270974277485436,0.9992005409985472708101,\
+0.9471814588690369296486,0.9238058529293791121262,0.6197871850499613310959,\
+0.7608947481851529026642,0.8049874252319156875402,-0.1529046956055711559141,\
+0.3680890208730970281081,0.7838535385146575551474,0.5853059322813873865954,\
+0.7471992477828661716188,0.9982763577574981228580,0.7340210854728602685171,\
+-0.2384636600673788464633,-0.9338657938993391027793,-0.0963157386477964672089,\
+0.9965016599751398418405,0.9467330527147245211594,0.8877041448701339376726,\
+0.0539834417486552073373,0.9467314744445589624888,0.1122194864288899307514,\
+0.9877206673462950448084,0.6380503687973807513956,0.7958431986465404062159,\
+0.3443523016260275904088,0.3845373047091283913446,-0.2701334763293031793197,\
+0.7108517612540402597077,-0.1430928615933441672148,0.32080801483743826008,\
+0.8760985949432102959378,0.7316280694838999121288,0.9999139283169750092028,\
+0.2624969502467918158750,0.8906105597759395031687,0.4698159512131697135295,\
+0.9843350146218102780793,0.9974824965990314318276,0.8254946325091827574738,\
+0.6979579732366844035951,0.4404541009116093031039,0.8665146735535679267670,\
+0.9466845833195259851678,0.9964248667932769087940,0.9180726139212290748404,\
+-0.8913108719456435125039,0.9623834350402660220425,0.8172561425171237514675,\
+0.718263617781651042549,0.0255096851968806929978,0.3579214307842031317364,\
+0.903952340447022550940,-0.7268574491788566405148,0.9001291834726419249790,\
+0.2825020879048804056666,0.8104614523160890149356,0.8667439221341659560949,\
+0.7724446547102603588542,0.0357475654825572253248,0.5712673305171682702763,\
+0.8669199123046601451748,0.9920982915300309290529,-0.0920335062605047438122,\
+0.9931852073290609039802,0.8068622676403011118040,0.9996089189905136285219,\
+0.4722581851967700972139,-0.6312557202207959017315,0.9998727623649044105036,\
+0.7487642434889083542515,0.2107793581335721255776,0.9910976901702407415584,\
+0.6964871898378746095659,-0.0225352686591101247782,0.961963168947402524900,\
+0.992074764843193790398,-0.5780897184534614652307,0.9999963053059259809885,\
+0.9959936026023269439733,0.997852183268367110003,0.9999662310577351886920,\
+0.9916549805054094557377,0.6924034092861499622984,0.5210498486203913870440,\
+0.3875187390378670992952,0.9524670084743368514424,0.9177117455650365407394,\
+0.9057292314266010002655,-0.9988299011655918935304,0.9712309045685737496356,\
+0.9675754035185222257098,0.5353549836201899614352,-0.2655433409023978952312,\
+0.9423728774251888262725,-0.9961371662051550224248,0.9940022450449995661259,\
+-0.0706366921418750404182,0.4762007884740003804680,0.0354510015922323284965,\
+0.65784633984897000758,0.7369525027778347503471,0.9909978235616448971612,\
+-0.0840793332663393455650,0.7480769942249303472437,0.9962828981406220973938,\
+0.9984265925479938186271,0.9999952423505205079124,0.9679259470687455735316,\
+-0.632503122148043273043,-0.1638182491633654591645,0.0915723300147998908738,\
+0.8093652317898135661878,0.6412002458492904732879,-0.1817384524188947747536,\
+0.6952764275967198148720,0.9603265844478726664946,0.5980467860661466961147,\
+0.9867758355724630670025,0.8596815738538068352170,0.9878637498486452228619,\
+0.9124923605358673528443,-0.3629301323805959045288,0.4301632279198022157374,\
+0.9284197599136463363578,0.959994136496382766133,0.8599412360983218484023,\
+0.6449595684306472787028,0.0894809955848772375919,0.7875272110120042912129,\
+0.6395838526894777054110,0.9866156703762346547038,0.6950451267922697073942,\
+-0.3412708317791682266495,0.3938437014688686566011,0.6077873470346980555590,\
+0.8947232532371431901197,0.405621261011146261311,0.2863729991092465732017,\
+0.6408409897588510650834,-0.2307152077489570130009,0.8647651606784810818240,\
+0.9999988695715007480658,0.5901815182487093469632,0.9921435633684139165922,\
+0.6980676864202854936536,0.7117823002210422744795,-0.5976582378696937425389,\
+0.9112318735935986957486,0.8880403834946687391394,0.7589472311619362976387,\
+-0.8169954127513406882954,0.8683238289487801297994,0.7340391936884439472166,\
+-0.1211287602524158124595,0.7298432754851863490941,0.9840027922687679673430,\
+0.414135922956764768177,0.9373998379717353168772,-0.8495842484392269744475,\
+0.8951497493851807707443,-0.5086089166239101677647,0.9637681122030780089815,\
+0.8428117284541520870533,0.9983402269892645009008,0.9395740596053013815592,\
+0.7998698514817192961601,0.4371360854041511645462,-0.1358071578606558360569,\
+0.8564769211630707257399,0.0921370549444396474970,0.1069973881579713986811,\
+0.5464696941763740323239,0.7603174194154225240538,0.7486968394521967828936,\
+0.9954133840567818136691,0.9392842830606296100626,0.7281251176521188472890,\
+0.8788251271401545938744,0.4100551583355765972172,0.9593354263834207307227,\
+0.8767558837388640391453,0.8169958925140410332943,0.6414617938312918710153,\
+0.8189107275146941811172,0.4287832557249183773607,0.7778082340710044118026,\
+0.4565162294470550552461,0.9343210101535780465198,0.9785245037094734144034,\
+0.8547068075395470865274,0.9977453410917197507146,0.5977527578720709389160,\
+0.1510966938752993093953,-0.3923250465140346587845}
+
+#define ZSOURCER {0.8652785065984375245662,-1.3368838685782120645484,1.6264408224927449087005,\
+-1.8690897079220740728545,0.9951518628175756164822,-1.688893672224414332916,\
+-0.7497508971113807652031,0.8268999681758193442960,2.2753757356206412154620,\
+-0.3872960166494098244172,-0.0799160908491712979052,-0.1884631346495315440404,\
+0.2094439405660133701748,0.3401928613448036986533,-1.2494684410199645707706,\
+-0.2979401746978811993394,-0.5157853813810977516852,0.7932915899466403963913,\
+1.5620570356415210966361,-0.844359823617092053460,-1.0437648196696975855247,\
+1.932990034770735388037,0.1853438341489616059121,-0.9962801836788344189699,\
+-0.5388351087532706751304,0.6070505636662814064053,1.5888625026588754085566,\
+0.2617832537783132407228,1.1970490473872079650874,0.12578128394682370,\
+1.39770280807620150831,0.2099988595145213798876,0.3421775699723230701466,\
+-1.8782261453279518459425,-0.6664189835307311460255,0.8127373993936040097452,\
+0.3767873922208855863580,-0.6374952135371538819442,-0.974468710244571822976,\
+-0.6722228555627711710230,0.8585099013504803311392,0.2446046980188737729467,\
+-0.9043973313471151964649,0.1358880163960933251666,-0.7695067786636404782996,\
+-0.8938327489087023458580,-1.9114553148531847615033,1.0171770494404650531095,\
+0.1835886481619793952902,-0.3163377812153213564095,-0.9195862784206330076131,\
+-0.1072018571251609070361,-1.7348283435296543153470,-1.0280015900042309695550,\
+-0.1045837022850216735392,-1.5256722999247080974072,1.1084725864612092749439,\
+0.6805135215035358342561,1.6689686098271181435848,0.2989927467898484958475,\
+-0.5006434061857586437227,0.7116857998261418849495,0.2485278541920327155523,\
+-0.6900291112600369647367,-0.6267355965803992345897,-0.4282667464892624953343,\
+-0.7336468298863978443336,-0.3574021092257179676999,0.2860336762162377644003,\
+1.1425687805503488281289,0.6919758815746888114262,0.8010668577124011591195,\
+1.7767980155474207837329,0.197833004692656910795,-1.8362538605563030191803,\
+0.3869279168511000066566,0.5325960336459322208569,0.0883113910959548165103,\
+-2.6418732644466236259007,-0.6564988101863107328171,-0.5566003466732061255584,\
+-1.479779603028395396080,0.1430519638431400619716,0.4320971393139262928251,\
+-0.3181852113191626640898,0.5371570151959671468589,1.4535234978041589037900,\
+0.3101271616559506116850,-1.340732344843439172166,2.060471964067395411746,\
+-0.0787601433757613156317,-1.0771984898755455617447,0.5648344207720079612756,\
+-0.3508614616179664413842,-0.9690830277765453137917,0.5156195652795886319453,\
+-0.5293387239139798472465,-0.9571359764302782568990,-0.2269082544310593585468,\
+0.4895059752188103407988,-0.2522128725839323237778,-1.4975804078553673903684,\
+-0.1603766798935232218426,0.1464267186008629817451,2.1615853347433549025425,\
+0.0399126120226646896594,-0.5544284809990485118902,0.5328414558183197646812,\
+0.3907850242802237139550,-0.3787774013072854883966,0.8417359908290755754479,\
+0.3176700186731257757877,1.592244506660871694592,-0.9951932381029318097632,\
+0.0410951006109449151760,-0.5188832355843150390129,-0.4767385649438746209050,\
+-0.3777777846485093071749,0.7910209775449256186519,-0.7086741723196363640369,\
+-2.3537808974280172158444,0.3583714955858253170540,-2.508952017613233387294,\
+2.087806522953977506063,0.2382312089001768218299,1.9833918106929020463980,\
+-2.167582574594525635092,-1.401225926702102553278,0.4640426253451597760069,\
+-0.3076759844353880168910,-0.7615259380675128975113,-1.1385700743993105721330,\
+-0.4270402705994392755784,-0.0367498239842839885538,-0.9128849844856976591956,\
+-1.9549432857416617626001,-0.8811112725878604834406,2.9821802878266292502474,\
+-1.7022507648063245344616,1.2487885639051212738337,0.0676735499770482057391,\
+-0.2367248998667950132813,-0.5285347231086527930444,0.7141648125067473484862,\
+-0.5878970571029352720771,-1.1459325979718588683909,0.4680548872241794833293,\
+-0.6843012596069305564228,0.5355357649056337043803,0.1540760632792411710668,\
+-0.6157450195036280327088,-1.41787024661118454816,-0.4570344170862304378211,\
+-0.1411796126420029884319,-0.6614438004746325816541,1.5436797442842080663183,\
+-0.0655012358215935341921,-1.0114218055676069685234,0.1895887411932805077797,\
+-1.2984646974992717360919,-0.5015613008687210827574,-1.162209366222186623929,\
+-2.509167640329787563047,-0.4405707024000362626026,-0.3943332184880063984167,\
+1.2805404560028668115024,-0.3061569333239507750832,-1.1420665340809226240282,\
+1.0167026164121319986577,1.958453071130288769552,-0.8471715882458593638304,\
+2.5258191429986913689731,-0.2048087265120654143491,-0.4182027716366760183853,\
+-0.3527210857802417498519,-0.5595241893671244470809,-0.6478265699785845654901,\
+-1.0507861982209916185127,0.7848448646063929112771,-0.1328983392812562724927,\
+-0.8579290931640745077047,-1.0403775604411991118070,-0.0520608986196072903718,\
+1.276568442453563045902,1.4203725991168176800983,-0.1287251249804796937592,\
+-1.959471210760952208929,0.3404865901494299462726,0.3700863012564228338164,\
+0.9399888255640819201275,0.4874471402488251836616,-0.9277526481559981164082,\
+1.4687996535197915815019,0.6577767757776173951356,-0.2596038157216366548674,\
+1.1286217610308955094922,0.0284581900701165874112,-1.2794761544488175708523,\
+-1.1137434890242723373177,-2.2955389951107569856958}
+
+#define ZSOURCEI {0.1918412521642277324130,0.4822328106056159024995,2.4722523083922975928317,\
+-0.1999085627658134245443,0.2290361675784305939274,0.1385769022152809337722,\
+-0.1308449665803144978948,1.8188246235702238973175,-1.360744719214450615397,\
+-0.8851525561710794631765,1.8831231089443882797951,-0.7390687967111120304509,\
+1.1162950684058663419762,0.5417636328738030249141,0.9074880499974204983715,\
+0.1136822955664789497332,0.5661113725007503871822,0.7795296942845783005893,\
+0.5870328147250098993482,0.0887163653774847987821,1.3588131422838234385608,\
+-0.7770801239208607880116,-2.1816983571681287656929,-0.6867928574771322569603,\
+3.132774112529277399375,-0.5876856927977032185595,-0.5468023513790022383,\
+0.3644381766801820243806,0.9444714440193706650462,-1.0355805625638589972937,\
+1.6339838311734231623973,2.3222150378340997711746,0.7603859366849585743608,\
+-1.7528561088374936538514,-0.2830657824851525727894,-0.5082187590533610022092,\
+1.2854936372804377509027,-0.1071924175739472628877,0.0680608377011317072780,\
+1.2478214718780462622050,0.2022362844423137018257,-1.1601145695370460586560,\
+-1.3732471859884713971667,-0.0871747108156779304533,0.3318121744832343011922,\
+0.813877556086732623086,0.6766249185129517007553,0.2594423975862346631871,\
+-1.2199874507987620297911,-0.9897424388234272729648,-1.5501341727479884813334,\
+1.3236241898041882780745,-0.6342132090900320928739,-0.4029346079915554490469,\
+1.3618162247590774871497,-1.2268551088323862430229,-0.0165544865341302541162,\
+0.4697449293077746168557,0.5129232238932224241523,-1.2864890116754716942182,\
+-0.5815154649104360418121,0.0042198993973377365435,0.4217149352171605802830,\
+-0.3269590438815029309616,-0.2713027722538356445448,0.9981558319993941719162,\
+-2.0584511427735407984585,0.6360071281896889638929,0.7792532924825519291545,\
+0.8152290078526440719742,0.302690835462471330430,0.7846292874622610158397,\
+1.3471935456922272678071,0.0235796939592457371893,0.8341783427284864549378,\
+-0.8042305059271110945218,1.2811212643144183065402,1.109535684815037281936,\
+1.5542750631114032877633,0.2918299696375577512164,1.0694551283559152743408,\
+1.2577061015533308463432,-2.904044346742185922494,-0.2870782813229341146055,\
+-1.2760057024544790849063,0.283985753428556031430,-1.3175328345022150333676,\
+0.8988284250430720323521,-1.8112538507045783386928,-1.0995994665801063217003,\
+-0.4449820788080595668212,0.5855247264136794749234,-0.7093745947817804431423,\
+0.1905828492221817993535,-0.5445080014401588730522,-1.365437721272832805042,\
+-0.6751146881456216997108,-1.1868018509166287088874,-0.8652762231421259331299,\
+1.3117247998219794258290,-0.2796512899932403484193,-0.2218002038379895402009,\
+-1.9751109128000410297687,0.1122673197507930292760,1.2555755229270146866583,\
+-1.9515162530964744735940,0.1977614186013104402573,0.2974354172914404070838,\
+-0.4957061458086293725955,-1.5054836292812976417110,-0.6943524973783626874635,\
+-0.4602840002479897663079,1.3936515683502606055555,-0.0740340331806867979481,\
+-0.6177784175603027172485,-0.2145874798022777973916,0.8980342752260660477148,\
+0.0337374057866826476682,-1.1446268541982025368497,-1.2555511561156762478930,\
+0.8386583904487018292784,-2.446562477109361033456,1.5119860122449106931697,\
+0.1869337784232076582480,-0.3349553867803892748256,0.131542782393392315710,\
+0.0174597275898690194873,1.778529610135566318974,0.618702552545296935449,\
+-1.6771343167918386640736,0.7435693095206714620105,-0.5379787827929278787309,\
+-1.5913674625260130213178,0.1780898508541619018608,-0.25671563034338790166,\
+-0.2862788634729842573989,-0.4906498481756356722094,0.3900012521547605026662,\
+-1.84205336065016078706,-1.5234366963806009742655,0.2365255965998115661453,\
+-1.7320610820689275044515,-0.2834038205636343343841,-1.5009852265404577398300,\
+1.7422292049682128745047,-0.2436614706579122158203,1.0689605525655874185276,\
+2.3690635117400145048805,-0.1930577380634317663510,0.2735573868128330365934,\
+1.5569516288681788385162,0.7150292123422491430418,0.5468099984878278529976,\
+-1.5473048247641658647922,-0.4396944448158471852039,0.3112403247843043563314,\
+-1.26537605009678144619,-2.3950841704590355440985,-0.2592078718414222993083,\
+-0.4387845364322502383914,0.7187054098642295940635,-1.2095433748027486497989,\
+0.1746582197927172008800,-1.1207357315790709151315,-1.2331864421831437717003,\
+1.040361177077658849655,-0.7973568364198504454521,0.4368277956791839500283,\
+1.3732228487397339922182,-1.520585040532598242180,1.0844121210894082096843,\
+-0.6034908039898051468342,1.691270204422151035573,-1.0147637811434373489305,\
+-1.543831005555790003569,-0.1908715944289217369967,-0.9777526617402377828725,\
+-0.5011593951678696701180,-0.6581745867398813842897,-1.222568274664002307972,\
+0.5739764929054486097826,-0.8178919175936580909791,-0.0839772392176704185474,\
+-2.2467727407263837768880,0.5311634003342166066020,0.0127028917577170375602,\
+1.4336465735979566638036,1.140130846486164140074,0.7078292602873598182711,\
+0.6419172762011019495176,-0.7752020495699509794463,-0.2227250211522007472542,\
+0.1418062472773869153730,0.3461143754334283229035,0.9346610138588777871860,\
+-1.1766714696487656777180,-1.155321545637316260624,-1.0348373990480448370022,\
+-0.4377198927182634480282,0.5342901632756290597470}
+
+#define ZRESULTR {0.6603968316049805276080,0.2592621892570787789367,-0.3318454617138371642859,\
+-0.2997813790812504652905,0.5587163403231363290047,-0.1189561420345783687713,\
+0.7381324458324397541631,2.142136719995466176414,-1.3458078751828295160919,\
+1.3129764303388649082649,3.3523257180963095258619,1.2630048090441925445759,\
+1.6535623505413692413413,1.0844508507590295831591,0.4550473771130031930277,\
+0.9621269818830543441024,1.013062998048058771516,0.9256575460351638140466,\
+0.0102887155976816024872,0.6668255580964917994535,1.0432946799591633624260,\
+-0.4668000327046901709593,4.4102457143090099123128,0.6767097030615227826189,\
+9.8624279257033951040512,0.9672974379596046556884,-0.0208338391589294388839,\
+1.0307881917288705952984,0.5404196044618572170037,1.5733521090107187578866,\
+0.4580812522816201659559,5.0350486020971887413111,1.2277369531593618212639,\
+-0.8994082908263842934815,0.8177424613018864363312,0.7782283917530580241717,\
+1.8099404305650070856615,0.8082102149385829159556,0.5629089875114635654896,\
+1.4748501127652635656062,0.6669768846821123586821,1.699726699407153374111,\
+1.298577834389474938703,0.9945484939786765066216,0.7581576733086236030701,\
+0.8456096567246286221931,-0.4135520032774342991111,0.5435636589621466452371,\
+1.810248147243165517395,1.4551350063240526822028,1.4924370356604863552263,\
+2.0000431078502241000194,-0.1972543510483453221838,0.5590324784918681011447,\
+2.068372118994307395923,0.0835345805491203158288,0.4460902185747692705320,\
+0.8645923158579836842463,-0.1111931823350623821378,1.8617144830169030100819,\
+1.02983082411914805832,0.7572686801513547338871,1.0567502136654132183224,\
+0.8128189945963255613748,0.8399378223031567225476,1.4017511305320988768131,\
+2.956644273924759147576,1.132754400798835492381,1.265693867178816711672,\
+0.5610629520868651853860,0.8055306977755860575741,0.9213852223586275203004,\
+-0.4199962882323669544071,0.9807673830270958736932,-0.3590470367287647013299,\
+1.2420524197984359471292,1.6706050779946230999684,1.6747789118158156185245,\
+-2.16927668845889520810,0.8261050353521025568782,1.3826822282594428692448,\
+0.1727680624199215975167,9.057823043102500193413,0.9457668311290795548629,\
+1.833812877114292083647,0.8940453644463330906689,0.2341249670166324903242,\
+1.363576337757532064288,0.7162232362688260023376,-0.7845189065148089335722,\
+1.097237008647440115183,0.5573625517969845732935,1.0662662205819704031029,\
+0.9561831479074293094200,0.6520642360884429944434,1.8151009640860991112277,\
+1.0674278234021243871865,1.0313090898160910402481,1.3624555698791520619295,\
+1.757155073751679230654,1.0064753136983999315390,0.0749572440340378898238,\
+3.6259465360107721032534,0.9955398364095786600814,-1.0568745874589622336,\
+3.5878460752889553830869,0.8668812254131966765769,0.8997505054992860351604,\
+1.040555384796898463762,2.1965462296781987916461,0.8333142225488954224488,\
+1.0523855335407785727142,-0.0458709738274477793474,0.5458332569596060501738,\
+1.195961273756254605871,0.8884437146730177481402,1.2715015087988947861675,\
+0.9300156339115848158627,1.2162605499523735375078,1.4405129668915395146911,\
+-0.9683533444224800001976,5.4479898316980985839564,-1.9178644985834492064924,\
+-0.5029446665597729904107,1.0267816742413071740003,-0.4044626121435637711166,\
+-0.5620727987859718277619,0.5138734552212488315703,1.0709367349326839313761,\
+2.6385439370616894372290,0.9332628709668898681073,0.4809878535892211925962,\
+2.3274184357315248483644,1.0152140200890447108151,0.6317250697033859330176,\
+-0.390230756302790915413,0.7144330074150475606842,-1.0633635201019895344388,\
+-0.4238985166974506557658,0.7604701169947127858961,1.0257495217324759106958,\
+2.8333209029821588842424,0.8984586856426056700187,1.7791621377373312284931,\
+2.4485583447413197255571,0.4244935342539479794510,1.4527777983860266086680,\
+4.1768674382240673637057,0.8760717584983536143639,1.025358467451832122919,\
+2.0225373659775809365158,0.1929591577071132768584,1.0348979760988403775457,\
+2.4313713775277490114490,0.8666224950927583492444,0.0284371329577691699109,\
+1.9091763626738669223926,2.934604495210217045553,1.0152593733387236252241,\
+0.2952893892910067874524,1.1132087589342971600814,0.7251532821639393722180,\
+-0.8189305685602711326609,1.5345662883929571673747,1.7188713168135731912400,\
+0.4555641729620423796554,1.273008943337736509349,0.4560137683691281029752,\
+1.1053164018215166919390,-0.9060167575034622222674,1.0910838839542402745053,\
+-0.9695473009615381831949,2.7466955042474223702698,1.4261078323829836644876,\
+2.297318046615583586600,0.8629928731306283351543,1.2099030156571450866920,\
+0.5606054313387058840590,0.8663522170995916482639,1.8289146898108739058841,\
+0.7647265415048952741373,0.6847484857113015355168,1.0021685183539132957264,\
+1.3866261204365910586489,0.1714987437851132057176,0.9918063704778133926609,\
+-0.8398571556569223162114,1.624536447087556512159,1.17576217917109437927,\
+0.7155426268638502840247,1.1625689563760244205071,0.6145684296686997338810,\
+0.1028453801776162412907,0.8392286126386587774562,1.4202930257299617444744,\
+0.7599315975784372012569,1.74429364867563263530,0.4552293130713663815712,\
+0.4842614797058485409664,-0.759839135565466450295}
+
+#define ZRESULTI {-0.146941580724984616202,0.4874941601771347610139,-5.8732506000776529830887,\
+-0.1923557391894928081388,-0.1938092227520436805488,0.1380525220047903456333,\
+-0.0894197912409416678647,-2.2083871916990625017263,1.38762940282270652581,\
+-0.379707247416236348680,0.2563331150684992620903,-0.1514182976925468326890,\
+-0.2833925825567581990860,-0.1897432487381172094842,0.9841855659814751078329,\
+0.0334435644614089755411,0.2943712296517632109882,-0.6135431940236653058918,\
+-0.6213108038265401367184,0.0664065988188502348555,1.5707022449109617756591,\
+0.8020378110570226537490,0.8061058304221635495423,-0.6229364595259883063960,\
+5.873854580840536243613,0.3548772564844954735541,0.5743671991358663131422,\
+-0.0964195772855189620065,-1.015948375800173053563,0.1544112964905340057431,\
+-2.427720301875694985938,-1.0527358981959802353146,-0.2804463002040958885530,\
+-2.667664304679369102757,-0.1773304122311009645152,0.3851475525760940099573,\
+-0.6144403782537597447089,-0.0639215126270850642065,0.0563572709924226103451,\
+0.9949983775946195097006,-0.1541120072724549983079,0.3483472405495082191429,\
+-1.4521802331617248427165,0.0118245383836800051908,0.2351284238449595775933,\
+0.7067939417094389886742,0.6875306193270583898780,-0.2231728770983253673510,\
+0.2822282491943420845715,-0.3606863345205877369182,-1.789492973412827536706,\
+0.1867542931864467348202,-0.6684973125435003105110,-0.3544323112754915183764,\
+0.1903651481757896168912,-1.5570503331148395353978,0.0148172477875626266292,\
+-0.3065501441038122609761,-0.5331323204569118345830,0.4924734236714592428008,\
+-0.2951210995789439461845,-0.0027560721209946860942,-0.1068344484336290478588,\
+-0.2118570413928013151939,-0.1610793407630224660654,0.4868738628243398092188,\
+-2.579960937463402714798,0.2378086541486917060428,-0.2428029308169650513083,\
+-0.8265359232776167131007,-0.1960976284506159017518,-0.6230605514253650945022,\
+-1.755406116186124965139,-0.0046349019875992188491,0.9016172621635419881514,\
+0.3372605888766848636351,-0.8436494304870341132130,-0.1192082555849750258314,\
+1.0830200228715931576318,0.1806566116072005345750,0.6790264707808069122308,\
+1.609828137915977341876,1.2968382390971706641380,0.1218796661012466753249,\
+-0.5166846594494688416077,-0.1472753279361777856149,1.7212963380251158351797,\
+-0.3127599294310591804269,-2.89888504993117113173,1.1780998114195078141364,\
+-0.0361775267207019371463,0.5456053298268405127303,0.4123679880285295307196,\
+0.0659019050150095875296,-0.4713866341281334748636,0.9028599597514885832794,\
+-0.3674007976866919822356,-1.2146233237644410429823,-0.2198736582857065691154,\
+-0.8094828887322721433506,-0.0706994284778254822310,-0.2230241649514515533959,\
+-0.5643984283124198197967,-0.0164146852495472492239,-1.3391611472776376867699,\
+0.1376079760459386902571,0.1047929421413649753170,-0.1533297870650806860038,\
+0.1966501815957944765412,-0.7921571860524847519258,0.5604745942609183906313,\
+0.1489022072975806909589,-1.8902500881495403195487,-0.0621612461401919516590,\
+0.0270260228763795351536,-0.1072348104191992446133,0.4697601544599027123539,\
+0.0124466007411300864927,1.0036512376933612866736,-1.049412060795365198018,\
+0.6666269392002136529030,2.010144371510963257066,1.2757551800142050701936,\
+-0.1634497680436179101182,0.0805305413426501415231,-0.1208519512813724661182,\
+0.0144424770778995917309,2.8348773781599185817015,-0.2949185744370810824400,\
+-0.7818376664535492404084,0.5616872313168002062156,-0.5124110438039969350754,\
+-0.9747306641614861266731,0.0065779403553887496811,-0.205370183808804979142,\
+-0.269054670595636091779,-0.3938808526857590086578,-0.0634893958645683514908,\
+-3.0489600352607997280074,2.072697136598120604134,-0.0161438616695122189038,\
+-0.6420425137334005993850,-0.144832386550082847787,1.3961681016866522853093,\
+1.534869934827646220654,-0.2242019675630647912445,-0.5795004710241905554469,\
+3.3483419852888491874410,0.0991308462877908275201,-0.0425076535895645771235,\
+1.309216767461068409162,0.7684601350295457988793,0.2535070961278987344834,\
+-0.3156127379694732559834,-0.278872470151356244283,-0.3161734445550384298151,\
+-0.106765701893629952335,-4.6100082079818358593570,0.0493978828262259944681,\
+-0.4363059774746961272385,0.3760761368145200678192,-1.4011279329067940491171,\
+0.1037666142610354780285,-0.5844725415055048722834,-0.6033334328120393275086,\
+-1.1866522252940947534938,-0.2666075239397875384917,0.4100487177769164826024,\
+-1.570972740050773142073,2.0165334475753500242945,0.9815781508770222707483,\
+0.3701172711568467832421,0.5330671903876023076663,-0.4865756887562372456912,\
+-0.7719024118076073248673,-0.101927682205751976574,-0.6886382760934363078675,\
+-0.4533487312581489514507,0.4994598581237761347751,-0.2054810163364952091403,\
+0.4584447177031794051771,-0.7868410449880314239124,-0.0043750939988532102504,\
+4.4747804523350742655907,-0.5502105833706960602569,0.0016307130557308498371,\
+1.83024619927524345719,-0.4687597592810309743427,-0.2779394557997144632466,\
+-0.5547224826362566751925,0.400556327585974369931,-0.1797184375596841132694,\
+-0.1415425280521077078255,-0.2158502978608074218680,0.2764160437046866980459,\
+1.326476685000083532984,0.0406909700160508550071,-1.1778701919064038516893,\
+-0.4054547584096580559176,0.419311934137157338309}
+
+
+void dcossTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dcoss(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zcossTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zcoss(in);
+ assert( fabs(zreals(out)-resR[i]) < 3e-15);
+ assert( fabs(zimags(out)-resI[i]) < 3e-15);
+ }
+}
+
+void dcosaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dcosa(in,200,out);
+ for (i=0;i<200;i++){
+ assert( fabs(out[i]-res[i]) < 1e-15);
+ }
+}
+
+void zcosaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in[200],out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(inR[i],inI[i]);
+ }
+ zcosa(in,200,out);
+ for (i=0;i<200;i++){
+ assert( fabs(zreals(out[i])-resR[i]) < 3e-14);
+ assert( fabs(zimags(out[i])-resI[i]) < 3e-14);
+ }
+}
+
+
+
+int testCos(void) {
+ printf("\n>>>> Double Cosine Tests\n");
+ dcossTest();
+ zcossTest();
+ dcosaTest();
+ zcosaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testCos() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/testFloatCos.c b/2.3-1/src/c/elementaryFunctions/cos/testFloatCos.c
new file mode 100644
index 00000000..98353b3d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/testFloatCos.c
@@ -0,0 +1,494 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testCos.h"
+
+#define SOURCE {0.6087216374946681218816f,-0.4914009399790010834685f,0.2966492127240239473629f,\
+-1.0120131171793795843428f,-2.1768580524449996360659f,0.0399891371904198267284f,\
+0.3264664449949340463419f,0.3928915710000103755917f,-0.9023248339668938911018f,\
+-0.7061054028011619632110f,0.6351420537982425118528f,1.7243031942788638044561f,\
+-1.193843423508647916265f,-0.6699486724870092890782f,0.9455390047179551560319f,\
+-0.7269584830448905243827f,0.0587220167793607444873f,0.7465722023081590164040f,\
+-1.8115798920517958148224f,-2.7758706356233147083401f,1.6672616062636114175888f,\
+-0.0836705642425854267952f,0.3278617890836109105557f,-0.4784618803967296551960f,\
+-1.5167866307363953026766f,0.3278666902123760218402f,1.4583399615307341967707f,\
+0.1568728504489345088f,0.8788327319516627822438f,0.6503974594047504664829f,\
+-1.2192475208695570110251f,1.1760897921697979207067f,-1.8443279857673484656289f,\
+0.7800878370874437806037f,-1.7143820612787801227483f,-1.2442138561935551788196f,\
+-0.5030865876060848229656f,-0.7500891916411158710787f,0.0131204357988426462828f,\
+-1.3051873378120935065283f,-0.4721103394959948462706f,-1.08171405175402890464f,\
+0.1772346225663179453136f,0.0709726766378662859980f,0.5997183167182360552516f,\
+-0.7982542475055777186910f,1.1146919091581586336304f,-0.5226194052411643475864f,\
+-0.3280122727754089528851f,0.0845844607820355476324f,-0.4076056231156577891461f,\
+2.671024580732940023609f,0.2751537532064078916960f,0.6141628828811964702084f,\
+-0.7694928564341785293124f,1.5452838740749164081478f,1.2047554263319388834219f,\
+-0.4418728868867642933793f,-2.3845314085200706166745f,-0.4507303538478215632068f,\
+-1.2843948816610906149549f,0.6258568994217935665958f,0.5221599455292258440409f,\
+0.6881147826420792590341f,-1.5350411433640571701176f,-0.9627472135269001807245f,\
+-0.5218069771892938080171f,0.1257945676013507985136f,-1.6629602539620385037722f,\
+-0.1168122168368753571732f,0.6319751771097191772597f,0.0279680711838030011951f,\
+-1.0789454333610759562134f,-2.2539675570413915117740f,0.0159524501831603895963f,\
+0.7246005623822228125519f,1.3584241656028799294376f,0.1335331404272114830256f,\
+0.8003059664568770159576f,-1.5933335032689068810896f,-0.2766963701941145270524f,\
+-0.1259819476132254256751f,-2.1871819624452908392698f,-0.0027183437417650840526f,\
+0.0895441283705892265843f,-0.0655528187812533247314f,0.0082181667448872272597f,\
+-0.1292799439278431716804f,0.8059814954561199673577f,-1.0227158239595737221350f,\
+-1.1728578375397291644333f,0.3095622814458759419765f,0.4085150016548139140227f,\
+0.4376992889872045044974f,3.0932123457325086945957f,-0.2404500241757465406334f,\
+-0.2553482065690487190501f,1.0058683512127921666490f,1.8395637792194936555035f,\
+0.3411429898658094317376f,-3.0536685582128435534344f,-0.1095788307430261981912f,\
+1.6414918920137913094237f,-1.0744672373614887472826f,1.5353378953533194373193f,\
+-0.8528406784492137404641f,-0.7422456212235352124296f,0.1342811638770788351671f,\
+-1.6549750406888592557664f,-0.7256367869747750720677f,-0.0862485588565954086615f,\
+-0.0561038363580659213414f,-0.0030846890449726638815f,0.2539566584786872027735f,\
+-2.255576969911772700073f,-1.7353562843564334094992f,1.4790955315931679781016f,\
+-0.6277258320505759714436f,-0.874734985447433444072f,1.7535503835541961237254f,\
+-0.8019918985373268860428f,0.2826253943812546687298f,0.9297345065408313402600f,\
+-0.1628091770786383452041f,-0.5361503318172788912221f,-0.1559543394910963276523f,\
+0.4214606760227143644748f,1.9422068405845787086861f,1.126122745997659491124f,\
+-0.3806596390838080656849f,0.2838150495409667017910f,0.5356418000869134221631f,\
+-0.8698259506453359657385f,-1.4811954887734988250969f,-0.6640101248288414748089f,\
+-0.8768395331826340788339f,0.1637943427647920169310f,0.8023136616688257838348f,\
+1.9190648920981443481537f,-1.1659867862660415749332f,0.9175250832331292016875f,\
+-0.4629851548188154697350f,1.1531379126231540155345f,1.280357188491430875388f,\
+0.8752030571429955108087f,-1.80360898378670553299f,0.5261137866109517613467f,\
+0.0015036147858927245008f,-0.9395126502065724860557f,0.1254332133415215488892f,\
+0.7981010350443900058792f,-0.7787639258289269506008f,-2.211373434923878722458f,\
+0.4245313340753193442900f,0.4777310697112210347015f,-0.7091015173222630085803f,\
+2.5269774755909995000991f,-0.5189834616032670266961f,0.7465455379507028865760f,\
+1.6922232637382539355286f,-0.7527036628439752741215f,-0.1791091421294778995854f,\
+-1.143803039940205490410f,-0.3557089242818732288676f,-2.5859928945830414903639f,\
+-0.4620292997028574988327f,2.1043646801028508264153f,0.2700104378784371483846f,\
+-0.5683100411735593215923f,0.0576234736047250076241f,-0.3494123351876678440497f,\
+-0.6437179916333417573071f,1.1183843932324186720706f,-1.7070244497383502135790f,\
+-0.5423910203569126675660f,1.478528409100926088726f,1.4635937207455358421981f,\
+0.9926533118110351106012f,-0.7069946768514858703725f,-0.7247022468472048561949f,\
+0.0958136359005943571976f,-0.3502577985930430126693f,-0.7552136456030923428173f,\
+0.4974020403078212582137f,-1.1482817888259779781635f,-0.2861580091485689814057f,\
+-0.5017215979538576231533f,-0.6146143460074020570261f,-0.8743941016318307335453f,\
+0.6112858348465053381915f,1.1276508199848169766710f,-0.6796253617896085286176f,\
+1.0967206821241466396799f,0.3644470031679390431556f,0.2076189090924974445240f,\
+-0.5458105472995297136052f,-0.0671640776881476525562f,0.9301013215147568846675f,\
+1.4191187165731935504454f,1.9739542618337482249302f}
+
+#define RESULT {0.8203796801888452172591f,0.8816726743563225721090f,0.9563213494741442666225f,\
+0.5301548730715204271746f,-0.5696350270974277485436f,0.9992005409985472708101f,\
+0.9471814588690369296486f,0.9238058529293791121262f,0.6197871850499613310959f,\
+0.7608947481851529026642f,0.8049874252319156875402f,-0.1529046956055711559141f,\
+0.3680890208730970281081f,0.7838535385146575551474f,0.5853059322813873865954f,\
+0.7471992477828661716188f,0.9982763577574981228580f,0.7340210854728602685171f,\
+-0.2384636600673788464633f,-0.9338657938993391027793f,-0.0963157386477964672089f,\
+0.9965016599751398418405f,0.9467330527147245211594f,0.8877041448701339376726f,\
+0.0539834417486552073373f,0.9467314744445589624888f,0.1122194864288899307514f,\
+0.9877206673462950448084f,0.6380503687973807513956f,0.7958431986465404062159f,\
+0.3443523016260275904088f,0.3845373047091283913446f,-0.2701334763293031793197f,\
+0.7108517612540402597077f,-0.1430928615933441672148f,0.32080801483743826008f,\
+0.8760985949432102959378f,0.7316280694838999121288f,0.9999139283169750092028f,\
+0.2624969502467918158750f,0.8906105597759395031687f,0.4698159512131697135295f,\
+0.9843350146218102780793f,0.9974824965990314318276f,0.8254946325091827574738f,\
+0.6979579732366844035951f,0.4404541009116093031039f,0.8665146735535679267670f,\
+0.9466845833195259851678f,0.9964248667932769087940f,0.9180726139212290748404f,\
+-0.8913108719456435125039f,0.9623834350402660220425f,0.8172561425171237514675f,\
+0.718263617781651042549f,0.0255096851968806929978f,0.3579214307842031317364f,\
+0.903952340447022550940f,-0.7268574491788566405148f,0.9001291834726419249790f,\
+0.2825020879048804056666f,0.8104614523160890149356f,0.8667439221341659560949f,\
+0.7724446547102603588542f,0.0357475654825572253248f,0.5712673305171682702763f,\
+0.8669199123046601451748f,0.9920982915300309290529f,-0.0920335062605047438122f,\
+0.9931852073290609039802f,0.8068622676403011118040f,0.9996089189905136285219f,\
+0.4722581851967700972139f,-0.6312557202207959017315f,0.9998727623649044105036f,\
+0.7487642434889083542515f,0.2107793581335721255776f,0.9910976901702407415584f,\
+0.6964871898378746095659f,-0.0225352686591101247782f,0.961963168947402524900f,\
+0.992074764843193790398f,-0.5780897184534614652307f,0.9999963053059259809885f,\
+0.9959936026023269439733f,0.997852183268367110003f,0.9999662310577351886920f,\
+0.9916549805054094557377f,0.6924034092861499622984f,0.5210498486203913870440f,\
+0.3875187390378670992952f,0.9524670084743368514424f,0.9177117455650365407394f,\
+0.9057292314266010002655f,-0.9988299011655918935304f,0.9712309045685737496356f,\
+0.9675754035185222257098f,0.5353549836201899614352f,-0.2655433409023978952312f,\
+0.9423728774251888262725f,-0.9961371662051550224248f,0.9940022450449995661259f,\
+-0.0706366921418750404182f,0.4762007884740003804680f,0.0354510015922323284965f,\
+0.65784633984897000758f,0.7369525027778347503471f,0.9909978235616448971612f,\
+-0.0840793332663393455650f,0.7480769942249303472437f,0.9962828981406220973938f,\
+0.9984265925479938186271f,0.9999952423505205079124f,0.9679259470687455735316f,\
+-0.632503122148043273043f,-0.1638182491633654591645f,0.0915723300147998908738f,\
+0.8093652317898135661878f,0.6412002458492904732879f,-0.1817384524188947747536f,\
+0.6952764275967198148720f,0.9603265844478726664946f,0.5980467860661466961147f,\
+0.9867758355724630670025f,0.8596815738538068352170f,0.9878637498486452228619f,\
+0.9124923605358673528443f,-0.3629301323805959045288f,0.4301632279198022157374f,\
+0.9284197599136463363578f,0.959994136496382766133f,0.8599412360983218484023f,\
+0.6449595684306472787028f,0.0894809955848772375919f,0.7875272110120042912129f,\
+0.6395838526894777054110f,0.9866156703762346547038f,0.6950451267922697073942f,\
+-0.3412708317791682266495f,0.3938437014688686566011f,0.6077873470346980555590f,\
+0.8947232532371431901197f,0.405621261011146261311f,0.2863729991092465732017f,\
+0.6408409897588510650834f,-0.2307152077489570130009f,0.8647651606784810818240f,\
+0.9999988695715007480658f,0.5901815182487093469632f,0.9921435633684139165922f,\
+0.6980676864202854936536f,0.7117823002210422744795f,-0.5976582378696937425389f,\
+0.9112318735935986957486f,0.8880403834946687391394f,0.7589472311619362976387f,\
+-0.8169954127513406882954f,0.8683238289487801297994f,0.7340391936884439472166f,\
+-0.1211287602524158124595f,0.7298432754851863490941f,0.9840027922687679673430f,\
+0.414135922956764768177f,0.9373998379717353168772f,-0.8495842484392269744475f,\
+0.8951497493851807707443f,-0.5086089166239101677647f,0.9637681122030780089815f,\
+0.8428117284541520870533f,0.9983402269892645009008f,0.9395740596053013815592f,\
+0.7998698514817192961601f,0.4371360854041511645462f,-0.1358071578606558360569f,\
+0.8564769211630707257399f,0.0921370549444396474970f,0.1069973881579713986811f,\
+0.5464696941763740323239f,0.7603174194154225240538f,0.7486968394521967828936f,\
+0.9954133840567818136691f,0.9392842830606296100626f,0.7281251176521188472890f,\
+0.8788251271401545938744f,0.4100551583355765972172f,0.9593354263834207307227f,\
+0.8767558837388640391453f,0.8169958925140410332943f,0.6414617938312918710153f,\
+0.8189107275146941811172f,0.4287832557249183773607f,0.7778082340710044118026f,\
+0.4565162294470550552461f,0.9343210101535780465198f,0.9785245037094734144034f,\
+0.8547068075395470865274f,0.9977453410917197507146f,0.5977527578720709389160f,\
+0.1510966938752993093953f,-0.3923250465140346587845f}
+
+#define CSOURCER {0.8652785065984375245662f,-1.3368838685782120645484f,1.6264408224927449087005f,\
+-1.8690897079220740728545f,0.9951518628175756164822f,-1.688893672224414332916f,\
+-0.7497508971113807652031f,0.8268999681758193442960f,2.2753757356206412154620f,\
+-0.3872960166494098244172f,-0.0799160908491712979052f,-0.1884631346495315440404f,\
+0.2094439405660133701748f,0.3401928613448036986533f,-1.2494684410199645707706f,\
+-0.2979401746978811993394f,-0.5157853813810977516852f,0.7932915899466403963913f,\
+1.5620570356415210966361f,-0.844359823617092053460f,-1.0437648196696975855247f,\
+1.932990034770735388037f,0.1853438341489616059121f,-0.9962801836788344189699f,\
+-0.5388351087532706751304f,0.6070505636662814064053f,1.5888625026588754085566f,\
+0.2617832537783132407228f,1.1970490473872079650874f,0.12578128394682370f,\
+1.39770280807620150831f,0.2099988595145213798876f,0.3421775699723230701466f,\
+-1.8782261453279518459425f,-0.6664189835307311460255f,0.8127373993936040097452f,\
+0.3767873922208855863580f,-0.6374952135371538819442f,-0.974468710244571822976f,\
+-0.6722228555627711710230f,0.8585099013504803311392f,0.2446046980188737729467f,\
+-0.9043973313471151964649f,0.1358880163960933251666f,-0.7695067786636404782996f,\
+-0.8938327489087023458580f,-1.9114553148531847615033f,1.0171770494404650531095f,\
+0.1835886481619793952902f,-0.3163377812153213564095f,-0.9195862784206330076131f,\
+-0.1072018571251609070361f,-1.7348283435296543153470f,-1.0280015900042309695550f,\
+-0.1045837022850216735392f,-1.5256722999247080974072f,1.1084725864612092749439f,\
+0.6805135215035358342561f,1.6689686098271181435848f,0.2989927467898484958475f,\
+-0.5006434061857586437227f,0.7116857998261418849495f,0.2485278541920327155523f,\
+-0.6900291112600369647367f,-0.6267355965803992345897f,-0.4282667464892624953343f,\
+-0.7336468298863978443336f,-0.3574021092257179676999f,0.2860336762162377644003f,\
+1.1425687805503488281289f,0.6919758815746888114262f,0.8010668577124011591195f,\
+1.7767980155474207837329f,0.197833004692656910795f,-1.8362538605563030191803f,\
+0.3869279168511000066566f,0.5325960336459322208569f,0.0883113910959548165103f,\
+-2.6418732644466236259007f,-0.6564988101863107328171f,-0.5566003466732061255584f,\
+-1.479779603028395396080f,0.1430519638431400619716f,0.4320971393139262928251f,\
+-0.3181852113191626640898f,0.5371570151959671468589f,1.4535234978041589037900f,\
+0.3101271616559506116850f,-1.340732344843439172166f,2.060471964067395411746f,\
+-0.0787601433757613156317f,-1.0771984898755455617447f,0.5648344207720079612756f,\
+-0.3508614616179664413842f,-0.9690830277765453137917f,0.5156195652795886319453f,\
+-0.5293387239139798472465f,-0.9571359764302782568990f,-0.2269082544310593585468f,\
+0.4895059752188103407988f,-0.2522128725839323237778f,-1.4975804078553673903684f,\
+-0.1603766798935232218426f,0.1464267186008629817451f,2.1615853347433549025425f,\
+0.0399126120226646896594f,-0.5544284809990485118902f,0.5328414558183197646812f,\
+0.3907850242802237139550f,-0.3787774013072854883966f,0.8417359908290755754479f,\
+0.3176700186731257757877f,1.592244506660871694592f,-0.9951932381029318097632f,\
+0.0410951006109449151760f,-0.5188832355843150390129f,-0.4767385649438746209050f,\
+-0.3777777846485093071749f,0.7910209775449256186519f,-0.7086741723196363640369f,\
+-2.3537808974280172158444f,0.3583714955858253170540f,-2.508952017613233387294f,\
+2.087806522953977506063f,0.2382312089001768218299f,1.9833918106929020463980f,\
+-2.167582574594525635092f,-1.401225926702102553278f,0.4640426253451597760069f,\
+-0.3076759844353880168910f,-0.7615259380675128975113f,-1.1385700743993105721330f,\
+-0.4270402705994392755784f,-0.0367498239842839885538f,-0.9128849844856976591956f,\
+-1.9549432857416617626001f,-0.8811112725878604834406f,2.9821802878266292502474f,\
+-1.7022507648063245344616f,1.2487885639051212738337f,0.0676735499770482057391f,\
+-0.2367248998667950132813f,-0.5285347231086527930444f,0.7141648125067473484862f,\
+-0.5878970571029352720771f,-1.1459325979718588683909f,0.4680548872241794833293f,\
+-0.6843012596069305564228f,0.5355357649056337043803f,0.1540760632792411710668f,\
+-0.6157450195036280327088f,-1.41787024661118454816f,-0.4570344170862304378211f,\
+-0.1411796126420029884319f,-0.6614438004746325816541f,1.5436797442842080663183f,\
+-0.0655012358215935341921f,-1.0114218055676069685234f,0.1895887411932805077797f,\
+-1.2984646974992717360919f,-0.5015613008687210827574f,-1.162209366222186623929f,\
+-2.509167640329787563047f,-0.4405707024000362626026f,-0.3943332184880063984167f,\
+1.2805404560028668115024f,-0.3061569333239507750832f,-1.1420665340809226240282f,\
+1.0167026164121319986577f,1.958453071130288769552f,-0.8471715882458593638304f,\
+2.5258191429986913689731f,-0.2048087265120654143491f,-0.4182027716366760183853f,\
+-0.3527210857802417498519f,-0.5595241893671244470809f,-0.6478265699785845654901f,\
+-1.0507861982209916185127f,0.7848448646063929112771f,-0.1328983392812562724927f,\
+-0.8579290931640745077047f,-1.0403775604411991118070f,-0.0520608986196072903718f,\
+1.276568442453563045902f,1.4203725991168176800983f,-0.1287251249804796937592f,\
+-1.959471210760952208929f,0.3404865901494299462726f,0.3700863012564228338164f,\
+0.9399888255640819201275f,0.4874471402488251836616f,-0.9277526481559981164082f,\
+1.4687996535197915815019f,0.6577767757776173951356f,-0.2596038157216366548674f,\
+1.1286217610308955094922f,0.0284581900701165874112f,-1.2794761544488175708523f,\
+-1.1137434890242723373177f,-2.2955389951107569856958f}
+
+#define CSOURCEI {0.1918412521642277324130f,0.4822328106056159024995f,2.4722523083922975928317f,\
+-0.1999085627658134245443f,0.2290361675784305939274f,0.1385769022152809337722f,\
+-0.1308449665803144978948f,1.8188246235702238973175f,-1.360744719214450615397f,\
+-0.8851525561710794631765f,1.8831231089443882797951f,-0.7390687967111120304509f,\
+1.1162950684058663419762f,0.5417636328738030249141f,0.9074880499974204983715f,\
+0.1136822955664789497332f,0.5661113725007503871822f,0.7795296942845783005893f,\
+0.5870328147250098993482f,0.0887163653774847987821f,1.3588131422838234385608f,\
+-0.7770801239208607880116f,-2.1816983571681287656929f,-0.6867928574771322569603f,\
+3.132774112529277399375f,-0.5876856927977032185595f,-0.5468023513790022383f,\
+0.3644381766801820243806f,0.9444714440193706650462f,-1.0355805625638589972937f,\
+1.6339838311734231623973f,2.3222150378340997711746f,0.7603859366849585743608f,\
+-1.7528561088374936538514f,-0.2830657824851525727894f,-0.5082187590533610022092f,\
+1.2854936372804377509027f,-0.1071924175739472628877f,0.0680608377011317072780f,\
+1.2478214718780462622050f,0.2022362844423137018257f,-1.1601145695370460586560f,\
+-1.3732471859884713971667f,-0.0871747108156779304533f,0.3318121744832343011922f,\
+0.813877556086732623086f,0.6766249185129517007553f,0.2594423975862346631871f,\
+-1.2199874507987620297911f,-0.9897424388234272729648f,-1.5501341727479884813334f,\
+1.3236241898041882780745f,-0.6342132090900320928739f,-0.4029346079915554490469f,\
+1.3618162247590774871497f,-1.2268551088323862430229f,-0.0165544865341302541162f,\
+0.4697449293077746168557f,0.5129232238932224241523f,-1.2864890116754716942182f,\
+-0.5815154649104360418121f,0.0042198993973377365435f,0.4217149352171605802830f,\
+-0.3269590438815029309616f,-0.2713027722538356445448f,0.9981558319993941719162f,\
+-2.0584511427735407984585f,0.6360071281896889638929f,0.7792532924825519291545f,\
+0.8152290078526440719742f,0.302690835462471330430f,0.7846292874622610158397f,\
+1.3471935456922272678071f,0.0235796939592457371893f,0.8341783427284864549378f,\
+-0.8042305059271110945218f,1.2811212643144183065402f,1.109535684815037281936f,\
+1.5542750631114032877633f,0.2918299696375577512164f,1.0694551283559152743408f,\
+1.2577061015533308463432f,-2.904044346742185922494f,-0.2870782813229341146055f,\
+-1.2760057024544790849063f,0.283985753428556031430f,-1.3175328345022150333676f,\
+0.8988284250430720323521f,-1.8112538507045783386928f,-1.0995994665801063217003f,\
+-0.4449820788080595668212f,0.5855247264136794749234f,-0.7093745947817804431423f,\
+0.1905828492221817993535f,-0.5445080014401588730522f,-1.365437721272832805042f,\
+-0.6751146881456216997108f,-1.1868018509166287088874f,-0.8652762231421259331299f,\
+1.3117247998219794258290f,-0.2796512899932403484193f,-0.2218002038379895402009f,\
+-1.9751109128000410297687f,0.1122673197507930292760f,1.2555755229270146866583f,\
+-1.9515162530964744735940f,0.1977614186013104402573f,0.2974354172914404070838f,\
+-0.4957061458086293725955f,-1.5054836292812976417110f,-0.6943524973783626874635f,\
+-0.4602840002479897663079f,1.3936515683502606055555f,-0.0740340331806867979481f,\
+-0.6177784175603027172485f,-0.2145874798022777973916f,0.8980342752260660477148f,\
+0.0337374057866826476682f,-1.1446268541982025368497f,-1.2555511561156762478930f,\
+0.8386583904487018292784f,-2.446562477109361033456f,1.5119860122449106931697f,\
+0.1869337784232076582480f,-0.3349553867803892748256f,0.131542782393392315710f,\
+0.0174597275898690194873f,1.778529610135566318974f,0.618702552545296935449f,\
+-1.6771343167918386640736f,0.7435693095206714620105f,-0.5379787827929278787309f,\
+-1.5913674625260130213178f,0.1780898508541619018608f,-0.25671563034338790166f,\
+-0.2862788634729842573989f,-0.4906498481756356722094f,0.3900012521547605026662f,\
+-1.84205336065016078706f,-1.5234366963806009742655f,0.2365255965998115661453f,\
+-1.7320610820689275044515f,-0.2834038205636343343841f,-1.5009852265404577398300f,\
+1.7422292049682128745047f,-0.2436614706579122158203f,1.0689605525655874185276f,\
+2.3690635117400145048805f,-0.1930577380634317663510f,0.2735573868128330365934f,\
+1.5569516288681788385162f,0.7150292123422491430418f,0.5468099984878278529976f,\
+-1.5473048247641658647922f,-0.4396944448158471852039f,0.3112403247843043563314f,\
+-1.26537605009678144619f,-2.3950841704590355440985f,-0.2592078718414222993083f,\
+-0.4387845364322502383914f,0.7187054098642295940635f,-1.2095433748027486497989f,\
+0.1746582197927172008800f,-1.1207357315790709151315f,-1.2331864421831437717003f,\
+1.040361177077658849655f,-0.7973568364198504454521f,0.4368277956791839500283f,\
+1.3732228487397339922182f,-1.520585040532598242180f,1.0844121210894082096843f,\
+-0.6034908039898051468342f,1.691270204422151035573f,-1.0147637811434373489305f,\
+-1.543831005555790003569f,-0.1908715944289217369967f,-0.9777526617402377828725f,\
+-0.5011593951678696701180f,-0.6581745867398813842897f,-1.222568274664002307972f,\
+0.5739764929054486097826f,-0.8178919175936580909791f,-0.0839772392176704185474f,\
+-2.2467727407263837768880f,0.5311634003342166066020f,0.0127028917577170375602f,\
+1.4336465735979566638036f,1.140130846486164140074f,0.7078292602873598182711f,\
+0.6419172762011019495176f,-0.7752020495699509794463f,-0.2227250211522007472542f,\
+0.1418062472773869153730f,0.3461143754334283229035f,0.9346610138588777871860f,\
+-1.1766714696487656777180f,-1.155321545637316260624f,-1.0348373990480448370022f,\
+-0.4377198927182634480282f,0.5342901632756290597470f}
+
+#define CRESULTR {0.6603968316049805276080f,0.2592621892570787789367f,-0.3318454617138371642859f,\
+-0.2997813790812504652905f,0.5587163403231363290047f,-0.1189561420345783687713f,\
+0.7381324458324397541631f,2.142136719995466176414f,-1.3458078751828295160919f,\
+1.3129764303388649082649f,3.3523257180963095258619f,1.2630048090441925445759f,\
+1.6535623505413692413413f,1.0844508507590295831591f,0.4550473771130031930277f,\
+0.9621269818830543441024f,1.013062998048058771516f,0.9256575460351638140466f,\
+0.0102887155976816024872f,0.6668255580964917994535f,1.0432946799591633624260f,\
+-0.4668000327046901709593f,4.4102457143090099123128f,0.6767097030615227826189f,\
+9.8624279257033951040512f,0.9672974379596046556884f,-0.0208338391589294388839f,\
+1.0307881917288705952984f,0.5404196044618572170037f,1.5733521090107187578866f,\
+0.4580812522816201659559f,5.0350486020971887413111f,1.2277369531593618212639f,\
+-0.8994082908263842934815f,0.8177424613018864363312f,0.7782283917530580241717f,\
+1.8099404305650070856615f,0.8082102149385829159556f,0.5629089875114635654896f,\
+1.4748501127652635656062f,0.6669768846821123586821f,1.699726699407153374111f,\
+1.298577834389474938703f,0.9945484939786765066216f,0.7581576733086236030701f,\
+0.8456096567246286221931f,-0.4135520032774342991111f,0.5435636589621466452371f,\
+1.810248147243165517395f,1.4551350063240526822028f,1.4924370356604863552263f,\
+2.0000431078502241000194f,-0.1972543510483453221838f,0.5590324784918681011447f,\
+2.068372118994307395923f,0.0835345805491203158288f,0.4460902185747692705320f,\
+0.8645923158579836842463f,-0.1111931823350623821378f,1.8617144830169030100819f,\
+1.02983082411914805832f,0.7572686801513547338871f,1.0567502136654132183224f,\
+0.8128189945963255613748f,0.8399378223031567225476f,1.4017511305320988768131f,\
+2.956644273924759147576f,1.132754400798835492381f,1.265693867178816711672f,\
+0.5610629520868651853860f,0.8055306977755860575741f,0.9213852223586275203004f,\
+-0.4199962882323669544071f,0.9807673830270958736932f,-0.3590470367287647013299f,\
+1.2420524197984359471292f,1.6706050779946230999684f,1.6747789118158156185245f,\
+-2.16927668845889520810f,0.8261050353521025568782f,1.3826822282594428692448f,\
+0.1727680624199215975167f,9.057823043102500193413f,0.9457668311290795548629f,\
+1.833812877114292083647f,0.8940453644463330906689f,0.2341249670166324903242f,\
+1.363576337757532064288f,0.7162232362688260023376f,-0.7845189065148089335722f,\
+1.097237008647440115183f,0.5573625517969845732935f,1.0662662205819704031029f,\
+0.9561831479074293094200f,0.6520642360884429944434f,1.8151009640860991112277f,\
+1.0674278234021243871865f,1.0313090898160910402481f,1.3624555698791520619295f,\
+1.757155073751679230654f,1.0064753136983999315390f,0.0749572440340378898238f,\
+3.6259465360107721032534f,0.9955398364095786600814f,-1.0568745874589622336f,\
+3.5878460752889553830869f,0.8668812254131966765769f,0.8997505054992860351604f,\
+1.040555384796898463762f,2.1965462296781987916461f,0.8333142225488954224488f,\
+1.0523855335407785727142f,-0.0458709738274477793474f,0.5458332569596060501738f,\
+1.195961273756254605871f,0.8884437146730177481402f,1.2715015087988947861675f,\
+0.9300156339115848158627f,1.2162605499523735375078f,1.4405129668915395146911f,\
+-0.9683533444224800001976f,5.4479898316980985839564f,-1.9178644985834492064924f,\
+-0.5029446665597729904107f,1.0267816742413071740003f,-0.4044626121435637711166f,\
+-0.5620727987859718277619f,0.5138734552212488315703f,1.0709367349326839313761f,\
+2.6385439370616894372290f,0.9332628709668898681073f,0.4809878535892211925962f,\
+2.3274184357315248483644f,1.0152140200890447108151f,0.6317250697033859330176f,\
+-0.390230756302790915413f,0.7144330074150475606842f,-1.0633635201019895344388f,\
+-0.4238985166974506557658f,0.7604701169947127858961f,1.0257495217324759106958f,\
+2.8333209029821588842424f,0.8984586856426056700187f,1.7791621377373312284931f,\
+2.4485583447413197255571f,0.4244935342539479794510f,1.4527777983860266086680f,\
+4.1768674382240673637057f,0.8760717584983536143639f,1.025358467451832122919f,\
+2.0225373659775809365158f,0.1929591577071132768584f,1.0348979760988403775457f,\
+2.4313713775277490114490f,0.8666224950927583492444f,0.0284371329577691699109f,\
+1.9091763626738669223926f,2.934604495210217045553f,1.0152593733387236252241f,\
+0.2952893892910067874524f,1.1132087589342971600814f,0.7251532821639393722180f,\
+-0.8189305685602711326609f,1.5345662883929571673747f,1.7188713168135731912400f,\
+0.4555641729620423796554f,1.273008943337736509349f,0.4560137683691281029752f,\
+1.1053164018215166919390f,-0.9060167575034622222674f,1.0910838839542402745053f,\
+-0.9695473009615381831949f,2.7466955042474223702698f,1.4261078323829836644876f,\
+2.297318046615583586600f,0.8629928731306283351543f,1.2099030156571450866920f,\
+0.5606054313387058840590f,0.8663522170995916482639f,1.8289146898108739058841f,\
+0.7647265415048952741373f,0.6847484857113015355168f,1.0021685183539132957264f,\
+1.3866261204365910586489f,0.1714987437851132057176f,0.9918063704778133926609f,\
+-0.8398571556569223162114f,1.624536447087556512159f,1.17576217917109437927f,\
+0.7155426268638502840247f,1.1625689563760244205071f,0.6145684296686997338810f,\
+0.1028453801776162412907f,0.8392286126386587774562f,1.4202930257299617444744f,\
+0.7599315975784372012569f,1.74429364867563263530f,0.4552293130713663815712f,\
+0.4842614797058485409664f,-0.759839135565466450295f}
+
+#define CRESULTI {-0.146941580724984616202f,0.4874941601771347610139f,-5.8732506000776529830887f,\
+-0.1923557391894928081388f,-0.1938092227520436805488f,0.1380525220047903456333f,\
+-0.0894197912409416678647f,-2.2083871916990625017263f,1.38762940282270652581f,\
+-0.379707247416236348680f,0.2563331150684992620903f,-0.1514182976925468326890f,\
+-0.2833925825567581990860f,-0.1897432487381172094842f,0.9841855659814751078329f,\
+0.0334435644614089755411f,0.2943712296517632109882f,-0.6135431940236653058918f,\
+-0.6213108038265401367184f,0.0664065988188502348555f,1.5707022449109617756591f,\
+0.8020378110570226537490f,0.8061058304221635495423f,-0.6229364595259883063960f,\
+5.873854580840536243613f,0.3548772564844954735541f,0.5743671991358663131422f,\
+-0.0964195772855189620065f,-1.015948375800173053563f,0.1544112964905340057431f,\
+-2.427720301875694985938f,-1.0527358981959802353146f,-0.2804463002040958885530f,\
+-2.667664304679369102757f,-0.1773304122311009645152f,0.3851475525760940099573f,\
+-0.6144403782537597447089f,-0.0639215126270850642065f,0.0563572709924226103451f,\
+0.9949983775946195097006f,-0.1541120072724549983079f,0.3483472405495082191429f,\
+-1.4521802331617248427165f,0.0118245383836800051908f,0.2351284238449595775933f,\
+0.7067939417094389886742f,0.6875306193270583898780f,-0.2231728770983253673510f,\
+0.2822282491943420845715f,-0.3606863345205877369182f,-1.789492973412827536706f,\
+0.1867542931864467348202f,-0.6684973125435003105110f,-0.3544323112754915183764f,\
+0.1903651481757896168912f,-1.5570503331148395353978f,0.0148172477875626266292f,\
+-0.3065501441038122609761f,-0.5331323204569118345830f,0.4924734236714592428008f,\
+-0.2951210995789439461845f,-0.0027560721209946860942f,-0.1068344484336290478588f,\
+-0.2118570413928013151939f,-0.1610793407630224660654f,0.4868738628243398092188f,\
+-2.579960937463402714798f,0.2378086541486917060428f,-0.2428029308169650513083f,\
+-0.8265359232776167131007f,-0.1960976284506159017518f,-0.6230605514253650945022f,\
+-1.755406116186124965139f,-0.0046349019875992188491f,0.9016172621635419881514f,\
+0.3372605888766848636351f,-0.8436494304870341132130f,-0.1192082555849750258314f,\
+1.0830200228715931576318f,0.1806566116072005345750f,0.6790264707808069122308f,\
+1.609828137915977341876f,1.2968382390971706641380f,0.1218796661012466753249f,\
+-0.5166846594494688416077f,-0.1472753279361777856149f,1.7212963380251158351797f,\
+-0.3127599294310591804269f,-2.89888504993117113173f,1.1780998114195078141364f,\
+-0.0361775267207019371463f,0.5456053298268405127303f,0.4123679880285295307196f,\
+0.0659019050150095875296f,-0.4713866341281334748636f,0.9028599597514885832794f,\
+-0.3674007976866919822356f,-1.2146233237644410429823f,-0.2198736582857065691154f,\
+-0.8094828887322721433506f,-0.0706994284778254822310f,-0.2230241649514515533959f,\
+-0.5643984283124198197967f,-0.0164146852495472492239f,-1.3391611472776376867699f,\
+0.1376079760459386902571f,0.1047929421413649753170f,-0.1533297870650806860038f,\
+0.1966501815957944765412f,-0.7921571860524847519258f,0.5604745942609183906313f,\
+0.1489022072975806909589f,-1.8902500881495403195487f,-0.0621612461401919516590f,\
+0.0270260228763795351536f,-0.1072348104191992446133f,0.4697601544599027123539f,\
+0.0124466007411300864927f,1.0036512376933612866736f,-1.049412060795365198018f,\
+0.6666269392002136529030f,2.010144371510963257066f,1.2757551800142050701936f,\
+-0.1634497680436179101182f,0.0805305413426501415231f,-0.1208519512813724661182f,\
+0.0144424770778995917309f,2.8348773781599185817015f,-0.2949185744370810824400f,\
+-0.7818376664535492404084f,0.5616872313168002062156f,-0.5124110438039969350754f,\
+-0.9747306641614861266731f,0.0065779403553887496811f,-0.205370183808804979142f,\
+-0.269054670595636091779f,-0.3938808526857590086578f,-0.0634893958645683514908f,\
+-3.0489600352607997280074f,2.072697136598120604134f,-0.0161438616695122189038f,\
+-0.6420425137334005993850f,-0.144832386550082847787f,1.3961681016866522853093f,\
+1.534869934827646220654f,-0.2242019675630647912445f,-0.5795004710241905554469f,\
+3.3483419852888491874410f,0.0991308462877908275201f,-0.0425076535895645771235f,\
+1.309216767461068409162f,0.7684601350295457988793f,0.2535070961278987344834f,\
+-0.3156127379694732559834f,-0.278872470151356244283f,-0.3161734445550384298151f,\
+-0.106765701893629952335f,-4.6100082079818358593570f,0.0493978828262259944681f,\
+-0.4363059774746961272385f,0.3760761368145200678192f,-1.4011279329067940491171f,\
+0.1037666142610354780285f,-0.5844725415055048722834f,-0.6033334328120393275086f,\
+-1.1866522252940947534938f,-0.2666075239397875384917f,0.4100487177769164826024f,\
+-1.570972740050773142073f,2.0165334475753500242945f,0.9815781508770222707483f,\
+0.3701172711568467832421f,0.5330671903876023076663f,-0.4865756887562372456912f,\
+-0.7719024118076073248673f,-0.101927682205751976574f,-0.6886382760934363078675f,\
+-0.4533487312581489514507f,0.4994598581237761347751f,-0.2054810163364952091403f,\
+0.4584447177031794051771f,-0.7868410449880314239124f,-0.0043750939988532102504f,\
+4.4747804523350742655907f,-0.5502105833706960602569f,0.0016307130557308498371f,\
+1.83024619927524345719f,-0.4687597592810309743427f,-0.2779394557997144632466f,\
+-0.5547224826362566751925f,0.400556327585974369931f,-0.1797184375596841132694f,\
+-0.1415425280521077078255f,-0.2158502978608074218680f,0.2764160437046866980459f,\
+1.326476685000083532984f,0.0406909700160508550071f,-1.1778701919064038516893f,\
+-0.4054547584096580559176f,0.419311934137157338309f}
+
+
+void scossTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=scoss(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-6);
+ }
+}
+
+void ccossTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=ccoss(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<3e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void scosaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i;
+
+ scosa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-6);
+ }
+}
+
+void ccosaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in[200],out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(inR[i],inI[i]);
+ }
+ ccosa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<3e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testCos(void) {
+ printf("\n>>>> Float Cosine Tests\n");
+ scossTest();
+ ccossTest();
+ scosaTest();
+ ccosaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testCos() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/u16cosa.c b/2.3-1/src/c/elementaryFunctions/cos/u16cosa.c
new file mode 100644
index 00000000..6e752e2b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/u16cosa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cos.h"
+
+void u16cosa(uint16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16coss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/u16coss.c b/2.3-1/src/c/elementaryFunctions/cos/u16coss.c
new file mode 100644
index 00000000..fb25ac56
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/u16coss.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "cos.h"
+
+float u16coss(uint16 x) {
+ return (cos((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/u8cosa.c b/2.3-1/src/c/elementaryFunctions/cos/u8cosa.c
new file mode 100644
index 00000000..ad129e12
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/u8cosa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cos.h"
+
+void u8cosa(uint8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8coss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/u8coss.c b/2.3-1/src/c/elementaryFunctions/cos/u8coss.c
new file mode 100644
index 00000000..26e2eba5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/u8coss.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "cos.h"
+
+float u8coss(uint8 x) {
+ return (cos((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/zcosa.c b/2.3-1/src/c/elementaryFunctions/cos/zcosa.c
new file mode 100644
index 00000000..76a4f2d6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/zcosa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+
+void zcosa(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zcoss(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cos/zcoss.c b/2.3-1/src/c/elementaryFunctions/cos/zcoss.c
new file mode 100644
index 00000000..4fd5d3f0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cos/zcoss.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cos.h"
+#include "sin.h"
+#include "cosh.h"
+#include "sinh.h"
+
+doubleComplex zcoss(doubleComplex z) {
+ double real = zreals(z);
+ double imag = zimags(z);
+
+ return DoubleComplex(dcoss(real) * dcoshs(imag),
+ -dsins(real) * dsinhs(imag));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/Makefile.am b/2.3-1/src/c/elementaryFunctions/cosh/Makefile.am
new file mode 100644
index 00000000..4d28f07e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/Makefile.am
@@ -0,0 +1,70 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libCosh_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libCosh.la
+
+libCosh_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = scoshs.c \
+ dcoshs.c \
+ ccoshs.c \
+ zcoshs.c \
+ scosha.c \
+ dcosha.c \
+ ccosha.c \
+ zcosha.c
+
+HEAD = ../includes/cosh.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatCosh testDoubleCosh
+
+TESTS = testFloatCosh testDoubleCosh
+
+#
+# -*- Hyperbolic Cosine Tests -*-
+#
+testFloatCosh_SOURCES = testCosh.h testFloatCosh.c
+testFloatCosh_CFLAGS = $(check_INCLUDES)
+testFloatCosh_LDADD = $(check_LDADD)
+
+testDoubleCosh_SOURCES = testCosh.h testDoubleCosh.c
+testDoubleCosh_CFLAGS = $(check_INCLUDES)
+testDoubleCosh_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/Makefile.in b/2.3-1/src/c/elementaryFunctions/cosh/Makefile.in
new file mode 100644
index 00000000..33c9a89c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/Makefile.in
@@ -0,0 +1,811 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatCosh$(EXEEXT) testDoubleCosh$(EXEEXT)
+TESTS = testFloatCosh$(EXEEXT) testDoubleCosh$(EXEEXT)
+subdir = src/c/elementaryFunctions/cosh
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libCosh_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libCosh_la-scoshs.lo libCosh_la-dcoshs.lo \
+ libCosh_la-ccoshs.lo libCosh_la-zcoshs.lo libCosh_la-scosha.lo \
+ libCosh_la-dcosha.lo libCosh_la-ccosha.lo libCosh_la-zcosha.lo
+am_libCosh_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libCosh_la_OBJECTS = $(am_libCosh_la_OBJECTS)
+libCosh_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libCosh_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleCosh_OBJECTS = testDoubleCosh-testDoubleCosh.$(OBJEXT)
+testDoubleCosh_OBJECTS = $(am_testDoubleCosh_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la
+testDoubleCosh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleCosh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleCosh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatCosh_OBJECTS = testFloatCosh-testFloatCosh.$(OBJEXT)
+testFloatCosh_OBJECTS = $(am_testFloatCosh_OBJECTS)
+testFloatCosh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatCosh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatCosh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libCosh_la_SOURCES) $(testDoubleCosh_SOURCES) \
+ $(testFloatCosh_SOURCES)
+DIST_SOURCES = $(libCosh_la_SOURCES) $(testDoubleCosh_SOURCES) \
+ $(testFloatCosh_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libCosh_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libCosh.la
+libCosh_la_SOURCES = $(HEAD) $(SRC)
+SRC = scoshs.c \
+ dcoshs.c \
+ ccoshs.c \
+ zcoshs.c \
+ scosha.c \
+ dcosha.c \
+ ccosha.c \
+ zcosha.c
+
+HEAD = ../includes/cosh.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ @LIBMATH@
+
+
+#
+# -*- Hyperbolic Cosine Tests -*-
+#
+testFloatCosh_SOURCES = testCosh.h testFloatCosh.c
+testFloatCosh_CFLAGS = $(check_INCLUDES)
+testFloatCosh_LDADD = $(check_LDADD)
+testDoubleCosh_SOURCES = testCosh.h testDoubleCosh.c
+testDoubleCosh_CFLAGS = $(check_INCLUDES)
+testDoubleCosh_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/cosh/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/cosh/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libCosh.la: $(libCosh_la_OBJECTS) $(libCosh_la_DEPENDENCIES)
+ $(libCosh_la_LINK) -rpath $(pkglibdir) $(libCosh_la_OBJECTS) $(libCosh_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleCosh$(EXEEXT): $(testDoubleCosh_OBJECTS) $(testDoubleCosh_DEPENDENCIES)
+ @rm -f testDoubleCosh$(EXEEXT)
+ $(testDoubleCosh_LINK) $(testDoubleCosh_OBJECTS) $(testDoubleCosh_LDADD) $(LIBS)
+testFloatCosh$(EXEEXT): $(testFloatCosh_OBJECTS) $(testFloatCosh_DEPENDENCIES)
+ @rm -f testFloatCosh$(EXEEXT)
+ $(testFloatCosh_LINK) $(testFloatCosh_OBJECTS) $(testFloatCosh_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-ccosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-ccoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-dcosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-dcoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-scosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-scoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-zcosha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCosh_la-zcoshs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleCosh-testDoubleCosh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatCosh-testFloatCosh.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libCosh_la-scoshs.lo: scoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-scoshs.lo -MD -MP -MF $(DEPDIR)/libCosh_la-scoshs.Tpo -c -o libCosh_la-scoshs.lo `test -f 'scoshs.c' || echo '$(srcdir)/'`scoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-scoshs.Tpo $(DEPDIR)/libCosh_la-scoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scoshs.c' object='libCosh_la-scoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-scoshs.lo `test -f 'scoshs.c' || echo '$(srcdir)/'`scoshs.c
+
+libCosh_la-dcoshs.lo: dcoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-dcoshs.lo -MD -MP -MF $(DEPDIR)/libCosh_la-dcoshs.Tpo -c -o libCosh_la-dcoshs.lo `test -f 'dcoshs.c' || echo '$(srcdir)/'`dcoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-dcoshs.Tpo $(DEPDIR)/libCosh_la-dcoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcoshs.c' object='libCosh_la-dcoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-dcoshs.lo `test -f 'dcoshs.c' || echo '$(srcdir)/'`dcoshs.c
+
+libCosh_la-ccoshs.lo: ccoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-ccoshs.lo -MD -MP -MF $(DEPDIR)/libCosh_la-ccoshs.Tpo -c -o libCosh_la-ccoshs.lo `test -f 'ccoshs.c' || echo '$(srcdir)/'`ccoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-ccoshs.Tpo $(DEPDIR)/libCosh_la-ccoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccoshs.c' object='libCosh_la-ccoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-ccoshs.lo `test -f 'ccoshs.c' || echo '$(srcdir)/'`ccoshs.c
+
+libCosh_la-zcoshs.lo: zcoshs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-zcoshs.lo -MD -MP -MF $(DEPDIR)/libCosh_la-zcoshs.Tpo -c -o libCosh_la-zcoshs.lo `test -f 'zcoshs.c' || echo '$(srcdir)/'`zcoshs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-zcoshs.Tpo $(DEPDIR)/libCosh_la-zcoshs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcoshs.c' object='libCosh_la-zcoshs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-zcoshs.lo `test -f 'zcoshs.c' || echo '$(srcdir)/'`zcoshs.c
+
+libCosh_la-scosha.lo: scosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-scosha.lo -MD -MP -MF $(DEPDIR)/libCosh_la-scosha.Tpo -c -o libCosh_la-scosha.lo `test -f 'scosha.c' || echo '$(srcdir)/'`scosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-scosha.Tpo $(DEPDIR)/libCosh_la-scosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scosha.c' object='libCosh_la-scosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-scosha.lo `test -f 'scosha.c' || echo '$(srcdir)/'`scosha.c
+
+libCosh_la-dcosha.lo: dcosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-dcosha.lo -MD -MP -MF $(DEPDIR)/libCosh_la-dcosha.Tpo -c -o libCosh_la-dcosha.lo `test -f 'dcosha.c' || echo '$(srcdir)/'`dcosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-dcosha.Tpo $(DEPDIR)/libCosh_la-dcosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcosha.c' object='libCosh_la-dcosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-dcosha.lo `test -f 'dcosha.c' || echo '$(srcdir)/'`dcosha.c
+
+libCosh_la-ccosha.lo: ccosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-ccosha.lo -MD -MP -MF $(DEPDIR)/libCosh_la-ccosha.Tpo -c -o libCosh_la-ccosha.lo `test -f 'ccosha.c' || echo '$(srcdir)/'`ccosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-ccosha.Tpo $(DEPDIR)/libCosh_la-ccosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccosha.c' object='libCosh_la-ccosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-ccosha.lo `test -f 'ccosha.c' || echo '$(srcdir)/'`ccosha.c
+
+libCosh_la-zcosha.lo: zcosha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -MT libCosh_la-zcosha.lo -MD -MP -MF $(DEPDIR)/libCosh_la-zcosha.Tpo -c -o libCosh_la-zcosha.lo `test -f 'zcosha.c' || echo '$(srcdir)/'`zcosha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCosh_la-zcosha.Tpo $(DEPDIR)/libCosh_la-zcosha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcosha.c' object='libCosh_la-zcosha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCosh_la_CFLAGS) $(CFLAGS) -c -o libCosh_la-zcosha.lo `test -f 'zcosha.c' || echo '$(srcdir)/'`zcosha.c
+
+testDoubleCosh-testDoubleCosh.o: testDoubleCosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCosh_CFLAGS) $(CFLAGS) -MT testDoubleCosh-testDoubleCosh.o -MD -MP -MF $(DEPDIR)/testDoubleCosh-testDoubleCosh.Tpo -c -o testDoubleCosh-testDoubleCosh.o `test -f 'testDoubleCosh.c' || echo '$(srcdir)/'`testDoubleCosh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCosh-testDoubleCosh.Tpo $(DEPDIR)/testDoubleCosh-testDoubleCosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCosh.c' object='testDoubleCosh-testDoubleCosh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCosh_CFLAGS) $(CFLAGS) -c -o testDoubleCosh-testDoubleCosh.o `test -f 'testDoubleCosh.c' || echo '$(srcdir)/'`testDoubleCosh.c
+
+testDoubleCosh-testDoubleCosh.obj: testDoubleCosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCosh_CFLAGS) $(CFLAGS) -MT testDoubleCosh-testDoubleCosh.obj -MD -MP -MF $(DEPDIR)/testDoubleCosh-testDoubleCosh.Tpo -c -o testDoubleCosh-testDoubleCosh.obj `if test -f 'testDoubleCosh.c'; then $(CYGPATH_W) 'testDoubleCosh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCosh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCosh-testDoubleCosh.Tpo $(DEPDIR)/testDoubleCosh-testDoubleCosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCosh.c' object='testDoubleCosh-testDoubleCosh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCosh_CFLAGS) $(CFLAGS) -c -o testDoubleCosh-testDoubleCosh.obj `if test -f 'testDoubleCosh.c'; then $(CYGPATH_W) 'testDoubleCosh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCosh.c'; fi`
+
+testFloatCosh-testFloatCosh.o: testFloatCosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCosh_CFLAGS) $(CFLAGS) -MT testFloatCosh-testFloatCosh.o -MD -MP -MF $(DEPDIR)/testFloatCosh-testFloatCosh.Tpo -c -o testFloatCosh-testFloatCosh.o `test -f 'testFloatCosh.c' || echo '$(srcdir)/'`testFloatCosh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCosh-testFloatCosh.Tpo $(DEPDIR)/testFloatCosh-testFloatCosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCosh.c' object='testFloatCosh-testFloatCosh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCosh_CFLAGS) $(CFLAGS) -c -o testFloatCosh-testFloatCosh.o `test -f 'testFloatCosh.c' || echo '$(srcdir)/'`testFloatCosh.c
+
+testFloatCosh-testFloatCosh.obj: testFloatCosh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCosh_CFLAGS) $(CFLAGS) -MT testFloatCosh-testFloatCosh.obj -MD -MP -MF $(DEPDIR)/testFloatCosh-testFloatCosh.Tpo -c -o testFloatCosh-testFloatCosh.obj `if test -f 'testFloatCosh.c'; then $(CYGPATH_W) 'testFloatCosh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCosh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCosh-testFloatCosh.Tpo $(DEPDIR)/testFloatCosh-testFloatCosh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCosh.c' object='testFloatCosh-testFloatCosh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCosh_CFLAGS) $(CFLAGS) -c -o testFloatCosh-testFloatCosh.obj `if test -f 'testFloatCosh.c'; then $(CYGPATH_W) 'testFloatCosh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCosh.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/ccosha.c b/2.3-1/src/c/elementaryFunctions/cosh/ccosha.c
new file mode 100644
index 00000000..57e2ed4d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/ccosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cosh.h"
+
+void ccosha(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ccoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/ccoshs.c b/2.3-1/src/c/elementaryFunctions/cosh/ccoshs.c
new file mode 100644
index 00000000..4504bec9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/ccoshs.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cosh.h"
+#include "cos.h"
+
+/** ch(z) = cos(i.z) */
+floatComplex ccoshs(floatComplex z) {
+
+ return (ccoss(FloatComplex(-cimags(z), creals(z))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/dcosha.c b/2.3-1/src/c/elementaryFunctions/cosh/dcosha.c
new file mode 100644
index 00000000..9b8ce3b2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/dcosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cosh.h"
+
+void dcosha(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dcoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/dcoshs.c b/2.3-1/src/c/elementaryFunctions/cosh/dcoshs.c
new file mode 100644
index 00000000..78131389
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/dcoshs.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// cosh(z) = 0.5 (exp(|z|) + exp(-|z|))
+// = 0.5 ( y + 1/y ) with y = exp(|z|)
+*/
+
+#include <math.h>
+#include "cosh.h"
+#include "exp.h"
+#include "abs.h"
+
+double dcoshs(double x) {
+ double y = dexps(dabss(x));
+ return (0.5 * (y + 1.0/y));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/i16cosha.c b/2.3-1/src/c/elementaryFunctions/cosh/i16cosha.c
new file mode 100644
index 00000000..edb56f9c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/i16cosha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cosh.h"
+
+void i16cosha(int16* x, int size, int16* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16coshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/i16coshs.c b/2.3-1/src/c/elementaryFunctions/cosh/i16coshs.c
new file mode 100644
index 00000000..10d3eb95
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/i16coshs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+// cosh(z) = 0.5 (exp(|z|) + exp(-|z|))
+// = 0.5 ( y + 1/y ) with y = exp(|z|)
+*/
+
+#include <math.h>
+#include "cosh.h"
+#include "exp.h"
+#include "abs.h"
+#include "types.h"
+
+float i16coshs(int16 x) {
+ double y = i16exps(i16abss(x));
+ return (0.5 * (y + 1.0/y));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/i8cosha.c b/2.3-1/src/c/elementaryFunctions/cosh/i8cosha.c
new file mode 100644
index 00000000..4ec75920
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/i8cosha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cosh.h"
+
+void i8cosha(int8* x, int size, int8* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8coshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/i8coshs.c b/2.3-1/src/c/elementaryFunctions/cosh/i8coshs.c
new file mode 100644
index 00000000..bc301221
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/i8coshs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+// cosh(z) = 0.5 (exp(|z|) + exp(-|z|))
+// = 0.5 ( y + 1/y ) with y = exp(|z|)
+*/
+
+#include <math.h>
+#include "cosh.h"
+#include "exp.h"
+#include "abs.h"
+#include "types.h"
+
+float i8coshs(int8 x) {
+ double y = i8exps(i8abss(x));
+ return (0.5 * (y + 1.0/y));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/scosha.c b/2.3-1/src/c/elementaryFunctions/cosh/scosha.c
new file mode 100644
index 00000000..8ac948a1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/scosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cosh.h"
+
+void scosha(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = scoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/scoshs.c b/2.3-1/src/c/elementaryFunctions/cosh/scoshs.c
new file mode 100644
index 00000000..3e8a1e18
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/scoshs.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+// cosh(z) = 0.5 (exp(|z|) + exp(-|z|))
+// = 0.5 ( y + 1/y ) with y = exp(|z|)
+*/
+
+#include <math.h>
+#include "cosh.h"
+#include "exp.h"
+#include "abs.h"
+
+float scoshs(float x) {
+ float y = sexps(sabss(x));
+ return (0.5f * (y + 1.0f / y));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/testCosh.h b/2.3-1/src/c/elementaryFunctions/cosh/testCosh.h
new file mode 100644
index 00000000..a4de725c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/testCosh.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTCOSH_H_
+#define _TESTCOSH_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "cosh.h"
+#include "constant.h"
+
+void scoshsTest(void);
+
+void dcoshsTest(void);
+
+void ccoshsTest(void);
+
+void zcoshsTest(void);
+
+void scoshaTest(void);
+
+void dcoshaTest(void);
+
+void ccoshaTest(void);
+
+void zcoshaTest(void);
+
+int testCosh(void);
+
+#endif /*! _TESTCOSH_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/testDoubleCosh.c b/2.3-1/src/c/elementaryFunctions/cosh/testDoubleCosh.c
new file mode 100644
index 00000000..ef3b5289
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/testDoubleCosh.c
@@ -0,0 +1,507 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testCosh.h"
+
+#define SOURCE {-1.205685175775274453613,-0.8333271236779051793775,1.2335774322243386880160,\
+0.3311018349037936903123,-0.8052653369328224286505,0.1998487851928297531767,\
+-0.8705427356398579563646,0.1975294304937466050021,0.9239335793216870706956,\
+0.2378506537628061745515,0.0049366873129022617595,-0.669236585027300545647,\
+1.0653101376824569701540,-0.3369456198746673680766,0.6204667311042414423738,\
+1.6283002068610463730636,0.7206914942876857521625,1.7221990362694574727698,\
+-1.0902216302137626158242,0.2874486754733126536721,-1.2122889745482419154854,\
+1.8215917027079053802652,2.8016558959521908889201,0.4050930510541474460773,\
+0.0617355341334478585624,-0.4301267567705842620462,-0.8284509700102783424924,\
+1.0256901078279201389165,1.525021231170059277105,-1.3197460532844016434240,\
+-0.4460647093896898951471,0.5045503141647188494190,-0.8098965560197782798113,\
+0.4268132043604428993433,-1.1336964590865461488534,1.127146072313511160345,\
+-0.9122705295277132586662,-0.3089065753248803058995,-2.3178211651402826909418,\
+1.1439933378277502562526,0.7005552213939509886842,0.4233298618301614135717,\
+-2.5208275627904130899992,-0.2816183187535069021301,0.7467093404219694585677,\
+0.7637510409783198062073,0.3396503036180347767647,-0.9747149605661590276995,\
+0.1472242280982364037722,0.9901921384491637612157,-1.2197737051905059857404,\
+-0.4607952353595122785279,-0.9492383290419380559300,1.4160381392623584417834,\
+-0.2758297498115374613015,1.7324484611160422264931,1.1368999048747294722261,\
+0.8568173351546003457813,0.3519313905007281362280,-0.8897875910518927566883,\
+0.2244273879422930551009,0.2394303391704008243668,-1.0382487030291693841377,\
+-1.0129167707607047432816,-0.3443356316152397234021,0.9904626758703307665144,\
+-0.5700286524862564485616,-1.2143893416629112369520,-0.7653327397314562130504,\
+0.5932733856160632424093,1.0109636831448121085941,-0.2591906321322083317504,\
+-0.6337213759172125593366,-1.3891534527523830000462,-0.7588209965122667544080,\
+-0.7751521002127067516696,-0.2569588781664822740858,-1.1144881209346948480743,\
+1.3683403773429958505403,-1.3171565382517111952865,-2.0066059395312958457680,\
+1.1665757372971858885080,0.1803963656727911035738,-1.4583403177666438566007,\
+-2.0738880513575592701159,-0.7736713589363241050378,-0.4690505767289738225934,\
+0.5290181646318501407222,-0.6366436437236088208280,-0.1514973533385992610079,\
+-0.4939237897364461837846,1.2009977647347911400288,-0.4479171393972471992839,\
+0.7962022364285237241432,1.0553131168098721648363,0.6399283922940391944323,\
+0.6404945676646236485396,0.4718907579921589601213,-1.1669004068172705856909,\
+0.8239670665751658296116,-0.5209824870944876895607,-0.5564774733886624913382,\
+0.677433403214317775287,-0.9826152250790042286255,-0.2301482766849789196595,\
+1.5256623976111793883348,-0.0141042499939363699668,-0.2206563911375283293381,\
+-1.2404617973010751974527,0.4956722425079039262563,-0.9198528977539149886766,\
+-0.9204208417497926619788,0.8313756689801026222852,0.3180154749624292120913,\
+0.2494121392443543194783,1.9786862305439512077498,-0.7539887840478504132946,\
+-0.2522144002260635065049,1.4817018679370650424687,-1.1886013018444978595056,\
+0.3497827881131843619222,0.0164051036269147361424,-0.3356971818656850903295,\
+1.5387250556465030815190,-2.2939395533776552049687,0.5463520678571377464650,\
+-0.6249598247747292223409,-0.3795057983233444121041,-0.6817850926970092650947,\
+0.1137639445438838742275,-0.3667643438770555319728,0.7811095630972452186214,\
+-0.6491897518190495874890,-0.4116889792407164572197,2.2135576248798094489700,\
+-0.8117887004060938549443,0.543890637094475826174,-0.4300056333049381840361,\
+-1.1073264735386671997475,1.9600404811338050237168,-1.1810889471038799047875,\
+-1.5998650464994574882382,0.2370987431342703177783,-1.1837915340560738464148,\
+-1.3250738110530209112881,0.9867165393345800339375,-0.4254735979103318466166,\
+-0.1977286302171261667127,-1.3843612904745590252986,0.0058770971600078198913,\
+1.6513137110120594819307,-1.9479686718307542836470,-1.1853539723928359084226,\
+-0.1952876876932538308118,-0.3910952467587283098993,2.6051477231429984726674,\
+-1.1685665444554920178177,0.4303553159707447783866,0.4980619697002917622974,\
+-0.5945099409025637049453,0.6251723753612481448982,0.5667367529854526742028,\
+0.2583522627447231712061,-1.117334797621551301106,-0.1572947959550771157566,\
+-0.1675843890566963978461,-0.4415529643720014774111,0.0296777742804143623845,\
+0.950535269366517221457,-0.2023353295590510914082,1.2240649283812428116391,\
+0.8408743467009373029342,0.7289489292828028599303,-0.3650480390020546805907,\
+0.7141089622210116116818,-1.6330473677930090747878,-1.2120035333729530790947,\
+2.5522160888662996924836,0.4631064145940361198583,-0.0364246441804653570129,\
+0.7308349560709582748430,-1.059234312724760096458,-1.5608743035213317185,\
+0.7865883787823105821602,-0.1899223202317779357617,-0.4035214553331447628892,\
+1.4993140466900047869103,1.2050329976249689600820,-0.2109320691913422751718,\
+0.0478227589320652582416,1.1080187662760754285785,0.3698710666565526716809,\
+-1.8629885917707584841452,0.1117850228517819205498,0.9930250182564113181627,\
+1.2533428090752711803191,0.5303160507909902010582,0.2252859052932770778099,\
+-0.7558035543285445134742,1.1653980888802857318609}
+
+#define RESULT {1.819266428064204577097,1.3677812549451693335811,1.8623697303215194231996,\
+1.0553168123818659207558,1.3421296845542964870646,1.0200363222965405096687,\
+1.403465448863383979727,1.0195724536239654245406,1.4580674176636316818900,\
+1.0284200725097112361084,1.0000121854655601438822,1.2324226844271635172845,\
+1.6231798706546742838697,1.0573052784271492754442,1.1987446423322825062030,\
+2.64573472675944731947,1.2711350583337506225945,2.8877476825709762486838,\
+1.6555376604226368364436,1.0415986209192817923963,1.829342489722003417540,\
+3.171729047671292711641,8.2663047019615358834699,1.0831783845382449982253,\
+1.0019062434070211686787,1.0939395186073928023518,1.3632471669518277934685,\
+1.5737842316817938215223,2.4064287835907673951397,2.0048370085520934580359,\
+1.1011474483510161892497,1.1300087947090773354830,1.3462897763229764169779,\
+1.0924759182927643585970,1.7144810122297002852321,1.7053954010120264683792,\
+1.4457904936509571314218,1.048092245021622570533,5.126007634597746331906,\
+1.7289119973762236970316,1.2555903810189259495189,1.0909502538663513604433,\
+6.2596397068650517780952,1.03991721163594563748,1.2919843250699158954120,\
+1.3061137606130501787050,1.0582378205813938176760,1.5138557575271749389145,\
+1.0108570760043096292691,1.5316284576789631621807,1.8408591504389772985917,\
+1.1080580118223748442574,1.4853883271417620548505,2.1817178624460376035188,\
+1.0382828245407387246502,2.9156663093555850174710,1.7189510624849844155904,\
+1.390081256029065626123,1.0625696729809925855648,1.4226777259325882329932,\
+1.0252897080419871578272,1.0288006377558764903313,1.5891703898572226982822,\
+1.558389589207426872974,1.0598715893830090717,1.5319423704594259394440,\
+1.1669134763143933497531,1.8325639262468249590654,1.3074443355436990987783,\
+1.1812094824791219416227,1.5560581683472911596056,1.0337783603024415235438,\
+1.20761220067196339834,2.1303694894256701708457,1.3019874017358665785338,\
+1.3157780065006974279385,1.0331959861022277369358,1.6880453716815839726451,\
+2.0916769731603670479103,2.000344096331303500591,3.7862367743494589333864,\
+1.7612050492619382158210,1.016315598810441089839,2.2657204820986769355784,\
+4.0406956659153259181494,1.3145132010698166169504,1.1120358920747182018829,\
+1.1432241110320022769997,1.2095957312624510127108,1.0114976895400229484068,\
+1.1244804773055134816673,1.8121625561683152305648,1.1020033178144590380043,\
+1.3340717665795371882353,1.6104789889363373411868,1.2118376325588768871455,\
+1.2122253780682052948237,1.1134219567585550425548,1.7616758393639733171199,\
+1.3591064226145659343814,1.1388088791439558988827,1.1588706347019575026991,\
+1.2383685118981913042546,1.5228821862471519921201,1.0266012226158198750170,\
+2.4078326713444666573594,1.00009946658283555010,1.0244435586923690273409,\
+1.8732301190987417083278,1.1253813439974511556585,1.4537494816372256156711,\
+1.4543489946263667977888,1.3659627989922018542757,1.0509945293445170921842,\
+1.0312647772215886021741,3.68574234301369418887,1.2979736367142225006432,\
+1.0319750139115386744493,2.3138394341351444793986,1.7935669311616093679618,\
+1.061800258350523940010,1.0001345667304306630285,1.0568774415753066087120,\
+2.4366507835843460583192,5.0073927789679837374592,1.1530000373394655444059,\
+1.2017269174685778487799,1.0728807813362080114672,1.2415589372685298386045,\
+1.0064780997777151849704,1.0680153713756039834948,1.3208958764713327749263,\
+1.2182291644802725194552,1.0859476120918869490595,4.6287577582643999463130,\
+1.3479977392146349490787,1.1515908109414143556393,1.0938858068153072267137,\
+1.6783490081276506433738,3.6202335893551729206763,1.782432142455154355787,\
+2.5771439034538188295187,1.0282398297270358700217,1.786426290897340729558,\
+2.014123198363930722365,1.5276055774381211982,1.0918876182447221356853,\
+1.019612078038364622046,2.1213794605936713288941,1.0000172701852236833986,\
+2.7028112826383159372767,3.5784939357816578642257,1.7887413660887121480414,\
+1.0191293197498234590626,1.0774575372953134611009,6.8035582731627464170288,\
+1.764094760751516499653,1.0940409161295887585652,1.1266181837435944590453,\
+1.1819878003429369339727,1.2018685976750431709803,1.1649400331120620677439,\
+1.03355898490236453036,1.6919235891909962798962,1.0123963536864837298168,\
+1.0140751587041334502715,1.0990787112389970303639,1.0004404174672476557362,\
+1.4868140745992959317334,1.02053972356750688455,1.847508472372893173485,\
+1.3748631970003435398553,1.2776582369190518928548,1.0673732569157268201820,\
+1.2659971203245654614022,2.6573926189895762384197,1.8289053177424414720065,\
+6.4567128779259412851843,1.1091640429888753871523,1.0006634506999989575604,\
+1.2791603587689326371191,1.61544148317066760256,2.4864680737312045977205,\
+1.3256439332679719189656,1.0180895207546800662612,1.0825255238019519943293,\
+2.3509495822805339670936,1.8182756477804529193776,1.0223287733363202178793,\
+1.001143726087694751925,1.679282557162007583074,1.0691856802487731403772,\
+3.2990857486037623580444,1.0062544545151006492034,1.5349210973541418390198,\
+1.8937893477592186997072,1.1439441561926790846826,1.0254843822262098562703,\
+1.2994774746280413069144,1.7594989466591723914490}
+
+#define ZSOURCER {-0.8912345066950769778558,-0.0058415661764856371616,0.8327394520710053038570,\
+-1.3031116495573464852953,1.3063996947557070527068,-0.3291212350984021872691,\
+-0.4314780628860441225036,0.3257069146291299843732,0.2704533752036020199938,\
+0.3948286552396417792288,1.7413456505609685720515,-0.0929389968439678221257,\
+-1.7740482961163070996236,-0.9310406640182858906130,1.0558482448966843847415,\
+0.5302093445317125341987,0.9099214704748677107204,-1.3248358105760951186625,\
+-0.5468817390748145212953,-0.8462613338460863721124,-0.8447436284186202737345,\
+-1.201032047282137193989,0.0724835993626015417934,0.0038054949984360143984,\
+-0.1410382163048108095094,-1.7842189597096504982687,0.0501420738427398662851,\
+-0.2334922077300364828822,1.5945984531602754863400,-0.3238241601909672695569,\
+1.513308285995593083229,1.5778451444411625281816,1.3691912706993336623640,\
+1.748251159750787042668,0.6019009531079806407661,0.0153371667399079970179,\
+-2.11368074169300124154,0.0736235546297408505190,1.16364818469077779817,\
+-1.7239586420846975123311,-0.1812698216235553161368,1.3506264987504341679170,\
+0.1572244306209917286132,0.0637660966151842728555,-0.1712993899334549763314,\
+1.9516485698976029361518,2.845403039274271073111,0.2554082947132658709677,\
+0.3587738434809014664850,1.6800084635178351710749,-0.7143150645295742728891,\
+0.3176042681985608573392,0.1918613409687800752668,-0.8669525494355047046113,\
+-2.486482303849266717322,-0.3399076190046602663486,-0.0275599140270330646152,\
+0.0760891140551305106277,0.0175525149136643889014,-1.0447511992604696651199,\
+0.5928194662003063442057,0.5337685538183976063920,-0.1083277352156265110894,\
+1.3163705916013288543809,1.6481947619041572572485,-0.0366427588652487520871,\
+-2.24532677610144792979,1.1646157862674424432470,0.1931514629705824159789,\
+-2.0280558458213828743055,-1.588195044157987734224,1.217389599860282611843,\
+-0.7923310676779923289459,0.4657912238712272334773,0.6341322794098591675294,\
+-0.2308714073795904986319,0.0959191686134504700734,-0.4119590516116395373380,\
+0.9909317687163362586844,-1.1184985773424866994930,0.3764360122586650203580,\
+1.0283807947333536425560,0.4399875767202614529339,-0.4587329057670580523265,\
+-0.8383371473991714228902,1.8010370613667443517869,0.3638310348854316700340,\
+0.5630372956104594539539,0.5158868637708874382852,0.6872616626544041373847,\
+-0.0355020269914341005113,0.8259138693919667595367,0.6872047295901000385498,\
+0.0739287007414783509107,-0.7662836697323893719869,0.4114094358620231095536,\
+0.9046891131020067255974,0.7464765051550138474923,-1.2447871833324788415354,\
+0.6121845724663061982795,1.2932746927561220573466,-1.3794546951962081138277,\
+-1.0054979370864329801805,0.304912140043878954199,2.2462341404304981828943,\
+0.8089620929537136850840,0.9035087652875184449641,1.3506573247795918835124,\
+0.7844818177699410810533,-0.0679273669198190016560,0.4928294105013013015615,\
+-1.096446680245239946316,1.737658266453646849214,1.2019686032899719041467,\
+0.1928095667884118236124,-1.5186389453508686298022,-1.2473448039026917566,\
+-1.489337044442988755577,1.4654430117361589847036,-0.3194353686893170451988,\
+0.9845148496238763646815,0.6602210723100759848236,0.8588563891948870487880,\
+-1.9910804060218119104775,-0.6479512615308331557884,0.3691293678246713727553,\
+-0.71770775009329423888,0.0044545145586906377197,-1.7569208392800599316530,\
+2.0338706868044176268029,-2.1630248696548646236693,-0.8178753147165283010622,\
+-1.3281476236021181325242,0.6822623476118111485178,0.7066790730643729423477,\
+-0.423530195967014910785,-0.8514600115056394358248,0.1911450421094866014560,\
+-0.0937215291541069195347,0.5968058072572121064425,0.1973784591490661544100,\
+-1.6526328643143648466918,2.1042236280016610727728,-2.19182144090441122231,\
+-1.2142537279036162978230,-0.1183253697043944729916,-0.8801137301237593746350,\
+-0.9900854927608483402324,-0.4110378213905900302017,-1.0605052107018932971982,\
+2.0298978504498510488929,0.9198308522281034571577,1.4593911606425682414567,\
+1.313234307458837291094,1.5294344184237567141338,0.6175875795682116420338,\
+0.2031917147194874651017,1.5255721310550354186120,0.9034041242193133758320,\
+-0.7761278947312221232480,-0.4993921694234899066878,-0.4357874013090125009384,\
+0.3873324791493603647119,-0.4467287463644364353677,-0.2545033653001004259053,\
+-1.3746540854818518617719,-0.1477740272607140914474,-1.5074443625622220288562,\
+-1.6715013742258788553841,0.9592226709426125985658,1.3640187263976746301353,\
+0.7890452102613630946948,1.2129240708363580036888,-0.9486821752491236825477,\
+-0.4274439849602727492517,1.6129284060703097392,0.9379949480470993750103,\
+-0.5596964661999650481050,-0.7987634619537844482551,0.0324112900849305857198,\
+1.314201571181351946294,1.0612990922031533269632,0.9227327442687582870207,\
+1.0844570327567082390630,-0.7983322787922396690519,0.4385271461747112797802,\
+0.0024102971394308028881,-1.0118154904234695212750,0.0705293335731081022510,\
+0.0697245903762851448882,-0.1632285547093744459968,-0.3480161062719534514898,\
+0.7985173205564675136259,0.1109596610185162313122,2.1081890906632976268043,\
+0.4892671398131347992866,1.0240089881181213549155,1.4852757378982723857064,\
+1.0644644981998814259327,-0.3570451345877300175502}
+
+#define ZSOURCEI {-0.9898306808620782604180,0.3667210055378663513537,-0.0115516846422681774414,\
+0.8852998822794806432768,-1.1751393894807391493629,-0.0206719580996688329089,\
+0.7962831267090092479677,-0.3570515343460327617464,1.1412480529936015472003,\
+0.9660799200593181979002,-1.500080296017527903274,1.5242908911731756216312,\
+1.105363493233324723164,-1.4826475597643153925276,-0.0160696607830907479963,\
+-1.1650712441016521925263,-1.5029224597675916452744,-0.1699343140216190151115,\
+0.7034171630892511739575,0.78048631235475940393,0.3572706186066606504070,\
+-0.6408324378966977485916,-0.0937081428320361148332,-0.5995006453733843221343,\
+1.998069767982257660677,-1.4952437710179469210203,-0.0218783914582419587724,\
+0.6948934249723224265693,0.1340798946938218938474,0.89984980932311908752,\
+-0.2284707639451582783519,-1.9920610974541457238729,0.3296873301478878692805,\
+0.8334316663655645385234,0.6017800660861944983537,0.3195021884236714515559,\
+0.8984984730147690390467,-1.9683562813815465020184,-0.2621383110944355832039,\
+-0.6316753727255608463764,-0.0591493996271135885623,0.4809775893765277920977,\
+0.6120565292662866196949,0.6937256492244192607188,-1.4222204429149998272663,\
+0.8456412639793806640398,0.5364524335270092203487,-0.5058105404615705902316,\
+-1.5311811141279494385969,0.0523506509744253098471,-0.5845520117472021714988,\
+1.1469635617104527725019,-0.1258479133308397501789,0.5773840158286764889795,\
+-1.1474331349335626928365,-0.3322391415499996170091,0.9929767773460509427963,\
+-1.660441950926221155171,-1.0585630798226148829855,-0.5685726288282663132279,\
+2.5350425363467468109491,1.1303214701472124037451,0.5096756039133761850835,\
+0.5467199129804439783342,1.4455896704702442256973,0.2077882393389256510119,\
+1.3512301851415178255422,0.2700167751147149464153,-0.6941424124437390874576,\
+0.5635246670082925124490,0.5834755445761464764942,0.9008533966882129595533,\
+-1.170120921094221611014,-0.0177589837851252312084,-0.2475436907499060923410,\
+0.4245903735389653377297,1.3061684980078611673093,-0.5518911372967175710258,\
+-0.1216398923828668349190,-0.1029994384259720480168,-0.1089806892178883240829,\
+1.0016946254399594629092,0.2334205918306470894930,0.9399822370279485861388,\
+-0.5987819428189028458931,1.4171477596181012437171,-0.0511681877729818074263,\
+-1.239060328697855206670,0.1921278548938223085241,0.5833400770787767752878,\
+0.1323798905411992243852,0.0725274151024776908558,1.517150104931189957824,\
+-0.2298162704468252326429,-0.4156880360427151477332,-1.2865870850947289660837,\
+0.2915127708019566443731,-0.4334207057720374511867,0.6674221275639458106355,\
+-0.1336045597099253245954,0.2151665632136103845085,-0.3174957202806932832218,\
+0.9961380035737125160367,1.5546597091479958940852,-1.3388468039798184783251,\
+-0.5065257499177515665423,-1.0639142786788362560202,-0.2959444267422965957337,\
+-1.960038123367497275851,-2.1398034807947201585421,1.3019428580756020608078,\
+-0.3083046332207799999914,0.2621552778202266842378,0.5195575373923391193642,\
+1.56243573209724884165,0.2068570860697496183178,-1.0570132216452536866313,\
+-0.5904609039323533981047,-1.8482550680523897046470,-1.291460161650367144404,\
+-0.7557326141240545691602,-1.0579108981634606223565,1.2726680818341371548286,\
+0.8679294400149879518125,0.1923087263308917160831,-0.7207099055968289036400,\
+-0.9810187619058614583167,-1.1007025532949878954270,1.0502610988542768755138,\
+2.1328376492581355705624,0.2517811686949605887165,0.0286045569084023044992,\
+0.5426452678085846859091,1.0007501149236575077595,-0.1483667758019126259317,\
+0.6740034918705165578601,-0.7882925718203834808406,-0.7561945904807015894633,\
+0.5978999579905148742398,-1.0006972818202708452873,-0.8844110367528469351939,\
+0.0563203493770412927377,0.0010532695687821122445,-2.2465253729529170989565,\
+1.141716522775603870343,-0.4500026076505115879556,0.9053568457125464874480,\
+1.1182847109018192455210,0.8014435340539697305573,0.7353172667964483766312,\
+-1.0684850588765142376246,-0.8549786389844856726583,3.744686089807424789200,\
+0.2152832470021692201634,-0.8813298598480671097732,1.096456876472062580419,\
+0.3072305150928033579127,-0.0799524082246828721177,-0.0588190904677381790067,\
+-1.1720572424194137806097,1.4720320544391665151807,0.0931276494198173265815,\
+0.555984015411468357470,0.8773397145008163811042,0.3438026639727968514215,\
+0.2511717975861258445036,-0.4806220734748062883845,0.1665649861790623464941,\
+-0.9011922058627225284866,-1.3882654124150977104080,-1.0995275754970570414315,\
+-0.2796226936636541648973,1.8675624576106222285432,-0.6479880884779005700835,\
+-1.2193765127792735025736,-0.4210708606718742141872,1.074252254135527273604,\
+0.5620287257728261431922,-0.5121392183328929981201,0.0495074962957085112913,\
+-1.483551847645206089865,-0.1477396930496895632867,0.4331368024681788719832,\
+-0.1336623009706502385185,-0.5252621832336971108290,0.6576305030526226058640,\
+-2.5329417269156695446952,-0.3644974785307753539776,-3.0957701776748671740336,\
+-1.5563868957442139606684,-1.3037172144407160878643,0.1173565633554439491260,\
+-1.4546337195274263720535,0.8077473947731041992171,0.5608831835142086275070,\
+-0.2032753128403547993042,2.1656548569001641268983,-1.0352617083883073334505,\
+0.0703447174899709398721,0.9001420266818445092838}
+
+#define ZRESULTR {0.7816146272263719829709,0.9335239938948984850242,1.3671418657595642009994,\
+1.251053426889690234347,0.7638235407866506010421,1.05442571981112132029,\
+0.7654863707154079266459,0.9870695051633786576417,0.4317842171461107048103,\
+0.6134213525393761301530,0.2077424772758102444747,0.0466895952950193357522,\
+1.360861123120397309094,0.1290276167481773372803,1.6109467398934755877349,\
+0.4514742994866134950804,0.0978899773240222564885,1.9847014656066033211346,\
+0.8795516810834358434334,0.9805643961019996357464,1.2914771272713012617572,\
+1.45266805020831779593,0.9982291599155850292391,0.8256234470461548680120,\
+-0.4185192299594263642959,0.2310786951961565083291,1.0010177538173574696145,\
+0.7891557184270517888436,2.5416517088949488467620,0.6546112908226877635798,\
+2.3190840475863043756988,-1.0326993872554559583676,1.9805065587758790002226,\
+1.9896627954528611770257,0.9782130127113016770934,0.9495035596250852583111,\
+2.6155274562386430226013,-0.3882195415344683042669,1.6969468407328636150311,\
+2.3343766660435352200409,1.0146967843242544748961,1.8258003683547168183310,\
+0.8286050933424484732370,0.7704328385697075676219,0.1502070282359266317762,\
+2.3818436251417942628450,7.4205579165122914631070,0.9034699872486960936513,\
+0.0421812525739015259374,2.772183837530781680414,1.05592364033954333458,\
+0.4321743126982589000562,1.0104075090452335761171,1.172999728469012792331,\
+2.4859521407117588509550,1.0004516930864140178414,0.546406215495572333829,\
+-0.0897848836255507876114,0.4902005853747226638006,1.3459428245240352417511,\
+-0.9702703286402243332276,0.4885630407318873325018,0.8780295479347596243613,\
+1.70760011581548409865,0.3365500801559331289781,0.9791465640129676240022,\
+1.0399586044108937166186,1.694655018871175533590,0.782984551558400743154,\
+3.2677601373666536055396,2.1277760759506403332,1.14078060084558496889,\
+0.5190124031043247265771,1.1102812125309757806946,1.1710705982540408065518,\
+0.9356000257245263851402,0.2627541871520008842644,0.9248192933983879759907,\
+1.521163371222483906564,1.6845378275230893372338,1.06533482774366716761,\
+0.8498389444062255382306,1.0685794539652364587567,0.652956087446700861321,\
+1.1336945232455741816580,0.4760496137462009169639,1.0655234579631518432308,\
+0.3786859524519583519719,1.1151440885209693565372,1.0396183182135259048806,\
+0.9918753196058325283246,1.3573231183580980463432,0.0667878216615050979144,\
+0.9763703551872023878033,1.1968339368077574036420,0.3044649077728942554444,\
+1.3772502379038416009394,1.17234744424829684384,1.4766671247289078205966,\
+1.1826761905568310417891,1.9143513147617730041361,2.0066566439861803772260,\
+0.8422630906406018969079,0.0168918363185286551920,1.0985590427740710151028,\
+1.1765072536632881217145,0.6974498887881349640239,1.9699828668985011059789,\
+-0.5023701162984575141479,-0.5400394193341752080428,0.2985422403364683119342,\
+1.5853347023892305767134,2.8298681106779470795232,1.57430200098008077347,\
+0.0085163822819922137264,2.34150280392945697727,0.9260267598505396158259,\
+1.935359947414732717519,-0.624580203843195791436,0.2899045962478056792655,\
+1.1098967555784207128511,0.6015796718407534493522,0.4088898624506622225816,\
+2.4110975561220100438220,1.194926943855234124925,0.8031086031385790136028,\
+0.7056759527365589201864,0.4529743829467441917913,1.4838629998186587677367,\
+-2.0715572287647061600069,4.2672653505633393322682,1.3529709414016093393940,\
+1.7293958649615748246475,0.6702228972280770413761,1.246418198725941284266,\
+0.8524596514683829839854,0.9764536278838282790105,0.7407821510692440547530,\
+0.8301521851442831279044,0.6387195724636756111181,0.6461301327556139284525,\
+2.7018352901688040823558,4.1613347047505291342873,-2.8343681862783589586741,\
+0.7623226303646806201186,0.9067568500030595002315,0.8723652455116047699235,\
+0.6696132906174546706168,0.7552700261493744404717,1.1992371819877765126705,\
+1.8643427000471699539474,0.9539854852947572405597,-1.8677739580920826867327,\
+1.9475448138625472971341,1.5369506397672023645384,0.5466606741068265051808,\
+0.9729193674298542982015,2.3999437957484786032580,1.4341047292357653741846,\
+0.5111837868275163065945,0.1111569790233604693164,1.091716362873146328738,\
+0.9138969247921984173644,0.7040484777727061826980,0.9721353920795816616618,\
+2.0373197284299586762302,0.8964067096914249965778,2.3355486655682877739082,\
+1.7093760866374785312161,0.2716303051904848664400,0.9460612941094431738165,\
+1.2762143042912967860758,-0.5352378220939374431353,1.1838129188764214827501,\
+0.3761598820395333775402,2.3805545048605618596582,0.7017854493503786761366,\
+0.9822084988099225588698,1.1648832392783827760496,0.9992994024245958062380,\
+0.1738523619678353504536,1.6004378914991708171556,1.3222645989799672872067,\
+1.6332603440938282535200,1.1558588483310223704592,0.8687697917589873863875,\
+-0.8204224950713523423218,1.4547791700377004087130,-1.0014359468702989097721,\
+0.0144439712508898226995,0.2674388703277625345400,1.0538721408636444465401,\
+0.1548583219344299433118,0.6953871836582313781250,3.5373520681952288491345,\
+1.0989946596859092586840,-0.8807918395297148483891,1.18456726702104053750,\
+1.6180875245455190736266,0.6615360547308598571092}
+
+#define ZRESULTI {0.8476313539717991174527,-0.0020945428347154504238,-0.0107702820990110675198,\
+-1.3194799051731675998411,-1.5788424410279275900137,0.0069265821924918190636,\
+-0.3180628434269115456523,-0.1158623505001605547005,0.2488922702434745726219,\
+0.3333162069042073238911,-2.7579550935532486377610,-0.0929722217314629395535,\
+-2.558018975124945360022,1.0673421965913736375597,-0.0202992468302341001751,\
+-0.5103135313335316336492,-1.0383893485568700398858,0.2955939972849115360276,\
+-0.3716363644745803163083,-0.669112301980219426056,-0.3318327753869652063656,\
+0.9035686841735829366584,-0.0067883075736271340089,-0.0021471806447879195068,\
+-0.1287847092516060110157,2.8852450693166233897102,-0.0010974001216119489213,\
+-0.1508680801994282949519,0.315705921414520418455,-0.2580859369524737267909,\
+-0.4893903475844605388545,-2.116294802120160856163,0.5953479459460185863051,\
+2.0617504351927595784844,0.3616928144472888462246,0.0048175006267416721831,\
+-3.1913265982599425818478,-0.0679428805767179483377,-0.3743690366783002931861,\
+1.6027053949682106281927,0.0107745309683946743906,0.8329399053511026274066,\
+0.0907062192789129806414,0.0408000708558418981320,0.1702419063491371065133,\
+2.5813113904964448686030,4.3826942657913274814518,-0.1250993995488117738191,\
+-0.366232782627764485994,0.1355060901825991537262,0.4285644238647245418683,\
+0.2943941929388677047896,-0.0242296816969479640591,-0.5347582943284873158163,\
+5.440972259812645539512,0.1130116459854922927875,-0.0230886388762507679950,\
+-0.0758567265188389433517,-0.0153004723200108137121,0.6705905748883707051533,\
+0.3580727041769314333841,0.5060754117432990639713,-0.0529558939424066774104,\
+0.8998620364333704824134,2.4830051583371242074350,-0.0075609544367582562363,\
+-4.5567155472995342080367,0.3858035723583744802667,-0.1243338609096430735779,\
+-1.9945093918095539997637,-1.2920941940088974675405,1.2080631306058675633608,\
+0.8083456169264077173509,-0.0085739065252298622688,-0.1660020282935961710713,\
+-0.0959540597572042242014,0.0927222427996397119410,0.2221508503381195154258,\
+-0.1409070089536773040528,0.1405249830722395676386,-0.0419169397939630830607,\
+1.0272672902510724401992,0.1050876648914500499643,-0.3835786757949954384195,\
+0.5298437409836795897178,2.9106995454114534815915,-0.0190217208337024913656,\
+-0.5609150372475696366692,0.1029355491400509997613,0.4090658874763115071538,\
+-0.0046870241505978906330,0.0668889266782490693464,0.7415168418856862286859,\
+-0.0168562013052173872985,0.3406253082923152986083,-0.4061399877851155082453,\
+0.2969570085375197732169,-0.3434409399238548266098,-0.9854495385788534234095,\
+-0.0867374346127948586682,0.3597999966335438393195,0.5808295174480837541608,\
+-0.9935741356819206560047,0.3096185219585154135835,-4.5479921396771585406782,\
+-0.4366900670417938612466,-0.9018465944214471008422,-0.5250881076401040514767,\
+-0.8025691478992442728924,0.0572684987995472974398,0.4945930961405698988997,\
+0.4034972398433521179051,0.7137454043276676429741,0.7512128888062908904644,\
+0.1939996418115135512483,-0.4464039676558783642513,1.3907357608014461192170,\
+1.17156541392215607367,-1.9708685366549760775712,0.3123022444724680712902,\
+-0.7896872395843760328304,-0.6179850212857144198253,0.9256883067644073870284,\
+-2.7417718288371224488742,-0.1326893078962607386284,-0.2491649089658723725815,\
+0.6490031468453125729212,-0.0039713278584005608923,-2.4386883505629461943442,\
+3.178543851545130305425,-1.0690676099739919724385,-0.0260882664072711288605,\
+-0.9060493921002102934992,0.6199896062130800800105,-0.1133779208230118323852,\
+-0.2723070216270195298414,0.6794632710962359434248,-0.1319558520667497847345,\
+-0.0528338647750857190455,-0.53278022650161005469,-0.1536737960232173183517,\
+-0.1415472283443244549961,0.0042545728383564943367,3.4486281529351474617329,\
+-1.3962363760387317412892,0.0515879186128369374154,-0.7852445756480942451461,\
+-1.0432119477148995567717,-0.3036586016327645909385,-0.8524640219222514581077,\
+-3.278864600929186412515,-0.7961629883628608128632,-1.1545100621855832745410,\
+0.3684195377039459207147,-1.6970666375940057779559,0.5849997270051815467795,\
+0.0618729525386339657134,-0.1749203390283090575608,-0.0606310989665877000943,\
+0.7892429044220883316285,-0.5178739198482895655928,-0.0418201497112469372519,\
+0.2095761220035197158751,-0.3550942958596610687927,-0.0867144455279654918778,\
+-0.4598945931287213850780,0.0685694193597463919065,-0.3559389766660929765862,\
+2.0119894555407911163059,-1.0947444956011096461879,-1.6288470340375438283331,\
+-0.2410820142960599099524,1.4659778142858674865323,0.6624490343288035321123,\
+0.4136536130989748594189,-0.9846866209581750517543,0.9510859925791920188587,\
+-0.3140825904492373088495,0.4344001304574144906034,0.0016042272632115935332,\
+-1.7199780122539785054414,-0.1872506113405222882839,0.4446357342161921244461,\
+-0.1745599221993578142875,0.4442139130537332003534,0.2767209124711134116126,\
+-0.0013781156561338940309,0.4254643497866397727769,-0.0032333769526939463469,\
+-0.0697738544158777868054,0.1581414947349125965648,-0.0415758240738434495243,\
+-0.8801521218406083146846,0.0803587769045229632914,2.1574882446469239027920,\
+-0.1027605757720615048401,1.0043017952229080780313,-1.8015810020856124484823,\
+0.0897692625606805599814,-0.2856956371820633111547}
+
+
+
+
+void dcoshsTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dcoshs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zcoshsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zcoshs(in);
+ assert( fabs(zreals(out) - resR[i]) < 1e-14);
+ assert( fabs(zimags(out) - resI[i]) < 1e-14);
+ }
+}
+
+void dcoshaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+ double mon_test[9]={1,8,3,2,8,4,3,4,5};
+ double mon_res[9]={1.5430806348152437124099,1490.4791612521778461087,10.06766199577776710328,
+ 3.7621956910836313880964,1490.4791612521778461087,27.308232836016486544395,
+ 10.06766199577776710328,27.308232836016486544395,74.209948524787861856566};
+ double mon_out[9];
+ dcosha(in,200,out);
+
+ dcosha(mon_test,9,mon_out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+
+ for (i=0;i<9;i++){
+ assert(( (fabs(mon_out[i]-mon_res[i]))/(fabs(mon_out[i])) )<3e-16);
+ }
+}
+
+void zcoshaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in[200],out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(inR[i],inI[i]);
+ }
+ zcosha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( fabs(zreals(out[i]) - resR[i]) < 3e-15);
+ assert( fabs(zimags(out[i]) - resI[i]) < 3e-15);
+ }
+}
+
+int testCosh(void) {
+ printf("\n>>>> Double Hyperbolic Cosine Tests\n");
+ dcoshsTest();
+ zcoshsTest();
+ dcoshaTest();
+ zcoshaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testCosh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/testFloatCosh.c b/2.3-1/src/c/elementaryFunctions/cosh/testFloatCosh.c
new file mode 100644
index 00000000..979d8d64
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/testFloatCosh.c
@@ -0,0 +1,497 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testCosh.h"
+
+#define SOURCE {-1.205685175775274453613f,-0.8333271236779051793775f,1.2335774322243386880160f,\
+0.3311018349037936903123f,-0.8052653369328224286505f,0.1998487851928297531767f,\
+-0.8705427356398579563646f,0.1975294304937466050021f,0.9239335793216870706956f,\
+0.2378506537628061745515f,0.0049366873129022617595f,-0.669236585027300545647f,\
+1.0653101376824569701540f,-0.3369456198746673680766f,0.6204667311042414423738f,\
+1.6283002068610463730636f,0.7206914942876857521625f,1.7221990362694574727698f,\
+-1.0902216302137626158242f,0.2874486754733126536721f,-1.2122889745482419154854f,\
+1.8215917027079053802652f,2.8016558959521908889201f,0.4050930510541474460773f,\
+0.0617355341334478585624f,-0.4301267567705842620462f,-0.8284509700102783424924f,\
+1.0256901078279201389165f,1.525021231170059277105f,-1.3197460532844016434240f,\
+-0.4460647093896898951471f,0.5045503141647188494190f,-0.8098965560197782798113f,\
+0.4268132043604428993433f,-1.1336964590865461488534f,1.127146072313511160345f,\
+-0.9122705295277132586662f,-0.3089065753248803058995f,-2.3178211651402826909418f,\
+1.1439933378277502562526f,0.7005552213939509886842f,0.4233298618301614135717f,\
+-2.5208275627904130899992f,-0.2816183187535069021301f,0.7467093404219694585677f,\
+0.7637510409783198062073f,0.3396503036180347767647f,-0.9747149605661590276995f,\
+0.1472242280982364037722f,0.9901921384491637612157f,-1.2197737051905059857404f,\
+-0.4607952353595122785279f,-0.9492383290419380559300f,1.4160381392623584417834f,\
+-0.2758297498115374613015f,1.7324484611160422264931f,1.1368999048747294722261f,\
+0.8568173351546003457813f,0.3519313905007281362280f,-0.8897875910518927566883f,\
+0.2244273879422930551009f,0.2394303391704008243668f,-1.0382487030291693841377f,\
+-1.0129167707607047432816f,-0.3443356316152397234021f,0.9904626758703307665144f,\
+-0.5700286524862564485616f,-1.2143893416629112369520f,-0.7653327397314562130504f,\
+0.5932733856160632424093f,1.0109636831448121085941f,-0.2591906321322083317504f,\
+-0.6337213759172125593366f,-1.3891534527523830000462f,-0.7588209965122667544080f,\
+-0.7751521002127067516696f,-0.2569588781664822740858f,-1.1144881209346948480743f,\
+1.3683403773429958505403f,-1.3171565382517111952865f,-2.0066059395312958457680f,\
+1.1665757372971858885080f,0.1803963656727911035738f,-1.4583403177666438566007f,\
+-2.0738880513575592701159f,-0.7736713589363241050378f,-0.4690505767289738225934f,\
+0.5290181646318501407222f,-0.6366436437236088208280f,-0.1514973533385992610079f,\
+-0.4939237897364461837846f,1.2009977647347911400288f,-0.4479171393972471992839f,\
+0.7962022364285237241432f,1.0553131168098721648363f,0.6399283922940391944323f,\
+0.6404945676646236485396f,0.4718907579921589601213f,-1.1669004068172705856909f,\
+0.8239670665751658296116f,-0.5209824870944876895607f,-0.5564774733886624913382f,\
+0.677433403214317775287f,-0.9826152250790042286255f,-0.2301482766849789196595f,\
+1.5256623976111793883348f,-0.0141042499939363699668f,-0.2206563911375283293381f,\
+-1.2404617973010751974527f,0.4956722425079039262563f,-0.9198528977539149886766f,\
+-0.9204208417497926619788f,0.8313756689801026222852f,0.3180154749624292120913f,\
+0.2494121392443543194783f,1.9786862305439512077498f,-0.7539887840478504132946f,\
+-0.2522144002260635065049f,1.4817018679370650424687f,-1.1886013018444978595056f,\
+0.3497827881131843619222f,0.0164051036269147361424f,-0.3356971818656850903295f,\
+1.5387250556465030815190f,-2.2939395533776552049687f,0.5463520678571377464650f,\
+-0.6249598247747292223409f,-0.3795057983233444121041f,-0.6817850926970092650947f,\
+0.1137639445438838742275f,-0.3667643438770555319728f,0.7811095630972452186214f,\
+-0.6491897518190495874890f,-0.4116889792407164572197f,2.2135576248798094489700f,\
+-0.8117887004060938549443f,0.543890637094475826174f,-0.4300056333049381840361f,\
+-1.1073264735386671997475f,1.9600404811338050237168f,-1.1810889471038799047875f,\
+-1.5998650464994574882382f,0.2370987431342703177783f,-1.1837915340560738464148f,\
+-1.3250738110530209112881f,0.9867165393345800339375f,-0.4254735979103318466166f,\
+-0.1977286302171261667127f,-1.3843612904745590252986f,0.0058770971600078198913f,\
+1.6513137110120594819307f,-1.9479686718307542836470f,-1.1853539723928359084226f,\
+-0.1952876876932538308118f,-0.3910952467587283098993f,2.6051477231429984726674f,\
+-1.1685665444554920178177f,0.4303553159707447783866f,0.4980619697002917622974f,\
+-0.5945099409025637049453f,0.6251723753612481448982f,0.5667367529854526742028f,\
+0.2583522627447231712061f,-1.117334797621551301106f,-0.1572947959550771157566f,\
+-0.1675843890566963978461f,-0.4415529643720014774111f,0.0296777742804143623845f,\
+0.950535269366517221457f,-0.2023353295590510914082f,1.2240649283812428116391f,\
+0.8408743467009373029342f,0.7289489292828028599303f,-0.3650480390020546805907f,\
+0.7141089622210116116818f,-1.6330473677930090747878f,-1.2120035333729530790947f,\
+2.5522160888662996924836f,0.4631064145940361198583f,-0.0364246441804653570129f,\
+0.7308349560709582748430f,-1.059234312724760096458f,-1.5608743035213317185f,\
+0.7865883787823105821602f,-0.1899223202317779357617f,-0.4035214553331447628892f,\
+1.4993140466900047869103f,1.2050329976249689600820f,-0.2109320691913422751718f,\
+0.0478227589320652582416f,1.1080187662760754285785f,0.3698710666565526716809f,\
+-1.8629885917707584841452f,0.1117850228517819205498f,0.9930250182564113181627f,\
+1.2533428090752711803191f,0.5303160507909902010582f,0.2252859052932770778099f,\
+-0.7558035543285445134742f,1.1653980888802857318609f}
+
+#define RESULT {1.819266428064204577097f,1.3677812549451693335811f,1.8623697303215194231996f,\
+1.0553168123818659207558f,1.3421296845542964870646f,1.0200363222965405096687f,\
+1.403465448863383979727f,1.0195724536239654245406f,1.4580674176636316818900f,\
+1.0284200725097112361084f,1.0000121854655601438822f,1.2324226844271635172845f,\
+1.6231798706546742838697f,1.0573052784271492754442f,1.1987446423322825062030f,\
+2.64573472675944731947f,1.2711350583337506225945f,2.8877476825709762486838f,\
+1.6555376604226368364436f,1.0415986209192817923963f,1.829342489722003417540f,\
+3.171729047671292711641f,8.2663047019615358834699f,1.0831783845382449982253f,\
+1.0019062434070211686787f,1.0939395186073928023518f,1.3632471669518277934685f,\
+1.5737842316817938215223f,2.4064287835907673951397f,2.0048370085520934580359f,\
+1.1011474483510161892497f,1.1300087947090773354830f,1.3462897763229764169779f,\
+1.0924759182927643585970f,1.7144810122297002852321f,1.7053954010120264683792f,\
+1.4457904936509571314218f,1.048092245021622570533f,5.126007634597746331906f,\
+1.7289119973762236970316f,1.2555903810189259495189f,1.0909502538663513604433f,\
+6.2596397068650517780952f,1.03991721163594563748f,1.2919843250699158954120f,\
+1.3061137606130501787050f,1.0582378205813938176760f,1.5138557575271749389145f,\
+1.0108570760043096292691f,1.5316284576789631621807f,1.8408591504389772985917f,\
+1.1080580118223748442574f,1.4853883271417620548505f,2.1817178624460376035188f,\
+1.0382828245407387246502f,2.9156663093555850174710f,1.7189510624849844155904f,\
+1.390081256029065626123f,1.0625696729809925855648f,1.4226777259325882329932f,\
+1.0252897080419871578272f,1.0288006377558764903313f,1.5891703898572226982822f,\
+1.558389589207426872974f,1.0598715893830090717f,1.5319423704594259394440f,\
+1.1669134763143933497531f,1.8325639262468249590654f,1.3074443355436990987783f,\
+1.1812094824791219416227f,1.5560581683472911596056f,1.0337783603024415235438f,\
+1.20761220067196339834f,2.1303694894256701708457f,1.3019874017358665785338f,\
+1.3157780065006974279385f,1.0331959861022277369358f,1.6880453716815839726451f,\
+2.0916769731603670479103f,2.000344096331303500591f,3.7862367743494589333864f,\
+1.7612050492619382158210f,1.016315598810441089839f,2.2657204820986769355784f,\
+4.0406956659153259181494f,1.3145132010698166169504f,1.1120358920747182018829f,\
+1.1432241110320022769997f,1.2095957312624510127108f,1.0114976895400229484068f,\
+1.1244804773055134816673f,1.8121625561683152305648f,1.1020033178144590380043f,\
+1.3340717665795371882353f,1.6104789889363373411868f,1.2118376325588768871455f,\
+1.2122253780682052948237f,1.1134219567585550425548f,1.7616758393639733171199f,\
+1.3591064226145659343814f,1.1388088791439558988827f,1.1588706347019575026991f,\
+1.2383685118981913042546f,1.5228821862471519921201f,1.0266012226158198750170f,\
+2.4078326713444666573594f,1.00009946658283555010f,1.0244435586923690273409f,\
+1.8732301190987417083278f,1.1253813439974511556585f,1.4537494816372256156711f,\
+1.4543489946263667977888f,1.3659627989922018542757f,1.0509945293445170921842f,\
+1.0312647772215886021741f,3.68574234301369418887f,1.2979736367142225006432f,\
+1.0319750139115386744493f,2.3138394341351444793986f,1.7935669311616093679618f,\
+1.061800258350523940010f,1.0001345667304306630285f,1.0568774415753066087120f,\
+2.4366507835843460583192f,5.0073927789679837374592f,1.1530000373394655444059f,\
+1.2017269174685778487799f,1.0728807813362080114672f,1.2415589372685298386045f,\
+1.0064780997777151849704f,1.0680153713756039834948f,1.3208958764713327749263f,\
+1.2182291644802725194552f,1.0859476120918869490595f,4.6287577582643999463130f,\
+1.3479977392146349490787f,1.1515908109414143556393f,1.0938858068153072267137f,\
+1.6783490081276506433738f,3.6202335893551729206763f,1.782432142455154355787f,\
+2.5771439034538188295187f,1.0282398297270358700217f,1.786426290897340729558f,\
+2.014123198363930722365f,1.5276055774381211982f,1.0918876182447221356853f,\
+1.019612078038364622046f,2.1213794605936713288941f,1.0000172701852236833986f,\
+2.7028112826383159372767f,3.5784939357816578642257f,1.7887413660887121480414f,\
+1.0191293197498234590626f,1.0774575372953134611009f,6.8035582731627464170288f,\
+1.764094760751516499653f,1.0940409161295887585652f,1.1266181837435944590453f,\
+1.1819878003429369339727f,1.2018685976750431709803f,1.1649400331120620677439f,\
+1.03355898490236453036f,1.6919235891909962798962f,1.0123963536864837298168f,\
+1.0140751587041334502715f,1.0990787112389970303639f,1.0004404174672476557362f,\
+1.4868140745992959317334f,1.02053972356750688455f,1.847508472372893173485f,\
+1.3748631970003435398553f,1.2776582369190518928548f,1.0673732569157268201820f,\
+1.2659971203245654614022f,2.6573926189895762384197f,1.8289053177424414720065f,\
+6.4567128779259412851843f,1.1091640429888753871523f,1.0006634506999989575604f,\
+1.2791603587689326371191f,1.61544148317066760256f,2.4864680737312045977205f,\
+1.3256439332679719189656f,1.0180895207546800662612f,1.0825255238019519943293f,\
+2.3509495822805339670936f,1.8182756477804529193776f,1.0223287733363202178793f,\
+1.001143726087694751925f,1.679282557162007583074f,1.0691856802487731403772f,\
+3.2990857486037623580444f,1.0062544545151006492034f,1.5349210973541418390198f,\
+1.8937893477592186997072f,1.1439441561926790846826f,1.0254843822262098562703f,\
+1.2994774746280413069144f,1.7594989466591723914490f}
+
+#define CSOURCER {-0.8912345066950769778558f,-0.0058415661764856371616f,0.8327394520710053038570f,\
+-1.3031116495573464852953f,1.3063996947557070527068f,-0.3291212350984021872691f,\
+-0.4314780628860441225036f,0.3257069146291299843732f,0.2704533752036020199938f,\
+0.3948286552396417792288f,1.7413456505609685720515f,-0.0929389968439678221257f,\
+-1.7740482961163070996236f,-0.9310406640182858906130f,1.0558482448966843847415f,\
+0.5302093445317125341987f,0.9099214704748677107204f,-1.3248358105760951186625f,\
+-0.5468817390748145212953f,-0.8462613338460863721124f,-0.8447436284186202737345f,\
+-1.201032047282137193989f,0.0724835993626015417934f,0.0038054949984360143984f,\
+-0.1410382163048108095094f,-1.7842189597096504982687f,0.0501420738427398662851f,\
+-0.2334922077300364828822f,1.5945984531602754863400f,-0.3238241601909672695569f,\
+1.513308285995593083229f,1.5778451444411625281816f,1.3691912706993336623640f,\
+1.748251159750787042668f,0.6019009531079806407661f,0.0153371667399079970179f,\
+-2.11368074169300124154f,0.0736235546297408505190f,1.16364818469077779817f,\
+-1.7239586420846975123311f,-0.1812698216235553161368f,1.3506264987504341679170f,\
+0.1572244306209917286132f,0.0637660966151842728555f,-0.1712993899334549763314f,\
+1.9516485698976029361518f,2.845403039274271073111f,0.2554082947132658709677f,\
+0.3587738434809014664850f,1.6800084635178351710749f,-0.7143150645295742728891f,\
+0.3176042681985608573392f,0.1918613409687800752668f,-0.8669525494355047046113f,\
+-2.486482303849266717322f,-0.3399076190046602663486f,-0.0275599140270330646152f,\
+0.0760891140551305106277f,0.0175525149136643889014f,-1.0447511992604696651199f,\
+0.5928194662003063442057f,0.5337685538183976063920f,-0.1083277352156265110894f,\
+1.3163705916013288543809f,1.6481947619041572572485f,-0.0366427588652487520871f,\
+-2.24532677610144792979f,1.1646157862674424432470f,0.1931514629705824159789f,\
+-2.0280558458213828743055f,-1.588195044157987734224f,1.217389599860282611843f,\
+-0.7923310676779923289459f,0.4657912238712272334773f,0.6341322794098591675294f,\
+-0.2308714073795904986319f,0.0959191686134504700734f,-0.4119590516116395373380f,\
+0.9909317687163362586844f,-1.1184985773424866994930f,0.3764360122586650203580f,\
+1.0283807947333536425560f,0.4399875767202614529339f,-0.4587329057670580523265f,\
+-0.8383371473991714228902f,1.8010370613667443517869f,0.3638310348854316700340f,\
+0.5630372956104594539539f,0.5158868637708874382852f,0.6872616626544041373847f,\
+-0.0355020269914341005113f,0.8259138693919667595367f,0.6872047295901000385498f,\
+0.0739287007414783509107f,-0.7662836697323893719869f,0.4114094358620231095536f,\
+0.9046891131020067255974f,0.7464765051550138474923f,-1.2447871833324788415354f,\
+0.6121845724663061982795f,1.2932746927561220573466f,-1.3794546951962081138277f,\
+-1.0054979370864329801805f,0.304912140043878954199f,2.2462341404304981828943f,\
+0.8089620929537136850840f,0.9035087652875184449641f,1.3506573247795918835124f,\
+0.7844818177699410810533f,-0.0679273669198190016560f,0.4928294105013013015615f,\
+-1.096446680245239946316f,1.737658266453646849214f,1.2019686032899719041467f,\
+0.1928095667884118236124f,-1.5186389453508686298022f,-1.2473448039026917566f,\
+-1.489337044442988755577f,1.4654430117361589847036f,-0.3194353686893170451988f,\
+0.9845148496238763646815f,0.6602210723100759848236f,0.8588563891948870487880f,\
+-1.9910804060218119104775f,-0.6479512615308331557884f,0.3691293678246713727553f,\
+-0.71770775009329423888f,0.0044545145586906377197f,-1.7569208392800599316530f,\
+2.0338706868044176268029f,-2.1630248696548646236693f,-0.8178753147165283010622f,\
+-1.3281476236021181325242f,0.6822623476118111485178f,0.7066790730643729423477f,\
+-0.423530195967014910785f,-0.8514600115056394358248f,0.1911450421094866014560f,\
+-0.0937215291541069195347f,0.5968058072572121064425f,0.1973784591490661544100f,\
+-1.6526328643143648466918f,2.1042236280016610727728f,-2.19182144090441122231f,\
+-1.2142537279036162978230f,-0.1183253697043944729916f,-0.8801137301237593746350f,\
+-0.9900854927608483402324f,-0.4110378213905900302017f,-1.0605052107018932971982f,\
+2.0298978504498510488929f,0.9198308522281034571577f,1.4593911606425682414567f,\
+1.313234307458837291094f,1.5294344184237567141338f,0.6175875795682116420338f,\
+0.2031917147194874651017f,1.5255721310550354186120f,0.9034041242193133758320f,\
+-0.7761278947312221232480f,-0.4993921694234899066878f,-0.4357874013090125009384f,\
+0.3873324791493603647119f,-0.4467287463644364353677f,-0.2545033653001004259053f,\
+-1.3746540854818518617719f,-0.1477740272607140914474f,-1.5074443625622220288562f,\
+-1.6715013742258788553841f,0.9592226709426125985658f,1.3640187263976746301353f,\
+0.7890452102613630946948f,1.2129240708363580036888f,-0.9486821752491236825477f,\
+-0.4274439849602727492517f,1.6129284060703097392f,0.9379949480470993750103f,\
+-0.5596964661999650481050f,-0.7987634619537844482551f,0.0324112900849305857198f,\
+1.314201571181351946294f,1.0612990922031533269632f,0.9227327442687582870207f,\
+1.0844570327567082390630f,-0.7983322787922396690519f,0.4385271461747112797802f,\
+0.0024102971394308028881f,-1.0118154904234695212750f,0.0705293335731081022510f,\
+0.0697245903762851448882f,-0.1632285547093744459968f,-0.3480161062719534514898f,\
+0.7985173205564675136259f,0.1109596610185162313122f,2.1081890906632976268043f,\
+0.4892671398131347992866f,1.0240089881181213549155f,1.4852757378982723857064f,\
+1.0644644981998814259327f,-0.3570451345877300175502f}
+
+#define CSOURCEI {-0.9898306808620782604180f,0.3667210055378663513537f,-0.0115516846422681774414f,\
+0.8852998822794806432768f,-1.1751393894807391493629f,-0.0206719580996688329089f,\
+0.7962831267090092479677f,-0.3570515343460327617464f,1.1412480529936015472003f,\
+0.9660799200593181979002f,-1.500080296017527903274f,1.5242908911731756216312f,\
+1.105363493233324723164f,-1.4826475597643153925276f,-0.0160696607830907479963f,\
+-1.1650712441016521925263f,-1.5029224597675916452744f,-0.1699343140216190151115f,\
+0.7034171630892511739575f,0.78048631235475940393f,0.3572706186066606504070f,\
+-0.6408324378966977485916f,-0.0937081428320361148332f,-0.5995006453733843221343f,\
+1.998069767982257660677f,-1.4952437710179469210203f,-0.0218783914582419587724f,\
+0.6948934249723224265693f,0.1340798946938218938474f,0.89984980932311908752f,\
+-0.2284707639451582783519f,-1.9920610974541457238729f,0.3296873301478878692805f,\
+0.8334316663655645385234f,0.6017800660861944983537f,0.3195021884236714515559f,\
+0.8984984730147690390467f,-1.9683562813815465020184f,-0.2621383110944355832039f,\
+-0.6316753727255608463764f,-0.0591493996271135885623f,0.4809775893765277920977f,\
+0.6120565292662866196949f,0.6937256492244192607188f,-1.4222204429149998272663f,\
+0.8456412639793806640398f,0.5364524335270092203487f,-0.5058105404615705902316f,\
+-1.5311811141279494385969f,0.0523506509744253098471f,-0.5845520117472021714988f,\
+1.1469635617104527725019f,-0.1258479133308397501789f,0.5773840158286764889795f,\
+-1.1474331349335626928365f,-0.3322391415499996170091f,0.9929767773460509427963f,\
+-1.660441950926221155171f,-1.0585630798226148829855f,-0.5685726288282663132279f,\
+2.5350425363467468109491f,1.1303214701472124037451f,0.5096756039133761850835f,\
+0.5467199129804439783342f,1.4455896704702442256973f,0.2077882393389256510119f,\
+1.3512301851415178255422f,0.2700167751147149464153f,-0.6941424124437390874576f,\
+0.5635246670082925124490f,0.5834755445761464764942f,0.9008533966882129595533f,\
+-1.170120921094221611014f,-0.0177589837851252312084f,-0.2475436907499060923410f,\
+0.4245903735389653377297f,1.3061684980078611673093f,-0.5518911372967175710258f,\
+-0.1216398923828668349190f,-0.1029994384259720480168f,-0.1089806892178883240829f,\
+1.0016946254399594629092f,0.2334205918306470894930f,0.9399822370279485861388f,\
+-0.5987819428189028458931f,1.4171477596181012437171f,-0.0511681877729818074263f,\
+-1.239060328697855206670f,0.1921278548938223085241f,0.5833400770787767752878f,\
+0.1323798905411992243852f,0.0725274151024776908558f,1.517150104931189957824f,\
+-0.2298162704468252326429f,-0.4156880360427151477332f,-1.2865870850947289660837f,\
+0.2915127708019566443731f,-0.4334207057720374511867f,0.6674221275639458106355f,\
+-0.1336045597099253245954f,0.2151665632136103845085f,-0.3174957202806932832218f,\
+0.9961380035737125160367f,1.5546597091479958940852f,-1.3388468039798184783251f,\
+-0.5065257499177515665423f,-1.0639142786788362560202f,-0.2959444267422965957337f,\
+-1.960038123367497275851f,-2.1398034807947201585421f,1.3019428580756020608078f,\
+-0.3083046332207799999914f,0.2621552778202266842378f,0.5195575373923391193642f,\
+1.56243573209724884165f,0.2068570860697496183178f,-1.0570132216452536866313f,\
+-0.5904609039323533981047f,-1.8482550680523897046470f,-1.291460161650367144404f,\
+-0.7557326141240545691602f,-1.0579108981634606223565f,1.2726680818341371548286f,\
+0.8679294400149879518125f,0.1923087263308917160831f,-0.7207099055968289036400f,\
+-0.9810187619058614583167f,-1.1007025532949878954270f,1.0502610988542768755138f,\
+2.1328376492581355705624f,0.2517811686949605887165f,0.0286045569084023044992f,\
+0.5426452678085846859091f,1.0007501149236575077595f,-0.1483667758019126259317f,\
+0.6740034918705165578601f,-0.7882925718203834808406f,-0.7561945904807015894633f,\
+0.5978999579905148742398f,-1.0006972818202708452873f,-0.8844110367528469351939f,\
+0.0563203493770412927377f,0.0010532695687821122445f,-2.2465253729529170989565f,\
+1.141716522775603870343f,-0.4500026076505115879556f,0.9053568457125464874480f,\
+1.1182847109018192455210f,0.8014435340539697305573f,0.7353172667964483766312f,\
+-1.0684850588765142376246f,-0.8549786389844856726583f,3.744686089807424789200f,\
+0.2152832470021692201634f,-0.8813298598480671097732f,1.096456876472062580419f,\
+0.3072305150928033579127f,-0.0799524082246828721177f,-0.0588190904677381790067f,\
+-1.1720572424194137806097f,1.4720320544391665151807f,0.0931276494198173265815f,\
+0.555984015411468357470f,0.8773397145008163811042f,0.3438026639727968514215f,\
+0.2511717975861258445036f,-0.4806220734748062883845f,0.1665649861790623464941f,\
+-0.9011922058627225284866f,-1.3882654124150977104080f,-1.0995275754970570414315f,\
+-0.2796226936636541648973f,1.8675624576106222285432f,-0.6479880884779005700835f,\
+-1.2193765127792735025736f,-0.4210708606718742141872f,1.074252254135527273604f,\
+0.5620287257728261431922f,-0.5121392183328929981201f,0.0495074962957085112913f,\
+-1.483551847645206089865f,-0.1477396930496895632867f,0.4331368024681788719832f,\
+-0.1336623009706502385185f,-0.5252621832336971108290f,0.6576305030526226058640f,\
+-2.5329417269156695446952f,-0.3644974785307753539776f,-3.0957701776748671740336f,\
+-1.5563868957442139606684f,-1.3037172144407160878643f,0.1173565633554439491260f,\
+-1.4546337195274263720535f,0.8077473947731041992171f,0.5608831835142086275070f,\
+-0.2032753128403547993042f,2.1656548569001641268983f,-1.0352617083883073334505f,\
+0.0703447174899709398721f,0.9001420266818445092838f}
+
+#define CRESULTR {0.7816146272263719829709f,0.9335239938948984850242f,1.3671418657595642009994f,\
+1.251053426889690234347f,0.7638235407866506010421f,1.05442571981112132029f,\
+0.7654863707154079266459f,0.9870695051633786576417f,0.4317842171461107048103f,\
+0.6134213525393761301530f,0.2077424772758102444747f,0.0466895952950193357522f,\
+1.360861123120397309094f,0.1290276167481773372803f,1.6109467398934755877349f,\
+0.4514742994866134950804f,0.0978899773240222564885f,1.9847014656066033211346f,\
+0.8795516810834358434334f,0.9805643961019996357464f,1.2914771272713012617572f,\
+1.45266805020831779593f,0.9982291599155850292391f,0.8256234470461548680120f,\
+-0.4185192299594263642959f,0.2310786951961565083291f,1.0010177538173574696145f,\
+0.7891557184270517888436f,2.5416517088949488467620f,0.6546112908226877635798f,\
+2.3190840475863043756988f,-1.0326993872554559583676f,1.9805065587758790002226f,\
+1.9896627954528611770257f,0.9782130127113016770934f,0.9495035596250852583111f,\
+2.6155274562386430226013f,-0.3882195415344683042669f,1.6969468407328636150311f,\
+2.3343766660435352200409f,1.0146967843242544748961f,1.8258003683547168183310f,\
+0.8286050933424484732370f,0.7704328385697075676219f,0.1502070282359266317762f,\
+2.3818436251417942628450f,7.4205579165122914631070f,0.9034699872486960936513f,\
+0.0421812525739015259374f,2.772183837530781680414f,1.05592364033954333458f,\
+0.4321743126982589000562f,1.0104075090452335761171f,1.172999728469012792331f,\
+2.4859521407117588509550f,1.0004516930864140178414f,0.546406215495572333829f,\
+-0.0897848836255507876114f,0.4902005853747226638006f,1.3459428245240352417511f,\
+-0.9702703286402243332276f,0.4885630407318873325018f,0.8780295479347596243613f,\
+1.70760011581548409865f,0.3365500801559331289781f,0.9791465640129676240022f,\
+1.0399586044108937166186f,1.694655018871175533590f,0.782984551558400743154f,\
+3.2677601373666536055396f,2.1277760759506403332f,1.14078060084558496889f,\
+0.5190124031043247265771f,1.1102812125309757806946f,1.1710705982540408065518f,\
+0.9356000257245263851402f,0.2627541871520008842644f,0.9248192933983879759907f,\
+1.521163371222483906564f,1.6845378275230893372338f,1.06533482774366716761f,\
+0.8498389444062255382306f,1.0685794539652364587567f,0.652956087446700861321f,\
+1.1336945232455741816580f,0.4760496137462009169639f,1.0655234579631518432308f,\
+0.3786859524519583519719f,1.1151440885209693565372f,1.0396183182135259048806f,\
+0.9918753196058325283246f,1.3573231183580980463432f,0.0667878216615050979144f,\
+0.9763703551872023878033f,1.1968339368077574036420f,0.3044649077728942554444f,\
+1.3772502379038416009394f,1.17234744424829684384f,1.4766671247289078205966f,\
+1.1826761905568310417891f,1.9143513147617730041361f,2.0066566439861803772260f,\
+0.8422630906406018969079f,0.0168918363185286551920f,1.0985590427740710151028f,\
+1.1765072536632881217145f,0.6974498887881349640239f,1.9699828668985011059789f,\
+-0.5023701162984575141479f,-0.5400394193341752080428f,0.2985422403364683119342f,\
+1.5853347023892305767134f,2.8298681106779470795232f,1.57430200098008077347f,\
+0.0085163822819922137264f,2.34150280392945697727f,0.9260267598505396158259f,\
+1.935359947414732717519f,-0.624580203843195791436f,0.2899045962478056792655f,\
+1.1098967555784207128511f,0.6015796718407534493522f,0.4088898624506622225816f,\
+2.4110975561220100438220f,1.194926943855234124925f,0.8031086031385790136028f,\
+0.7056759527365589201864f,0.4529743829467441917913f,1.4838629998186587677367f,\
+-2.0715572287647061600069f,4.2672653505633393322682f,1.3529709414016093393940f,\
+1.7293958649615748246475f,0.6702228972280770413761f,1.246418198725941284266f,\
+0.8524596514683829839854f,0.9764536278838282790105f,0.7407821510692440547530f,\
+0.8301521851442831279044f,0.6387195724636756111181f,0.6461301327556139284525f,\
+2.7018352901688040823558f,4.1613347047505291342873f,-2.8343681862783589586741f,\
+0.7623226303646806201186f,0.9067568500030595002315f,0.8723652455116047699235f,\
+0.6696132906174546706168f,0.7552700261493744404717f,1.1992371819877765126705f,\
+1.8643427000471699539474f,0.9539854852947572405597f,-1.8677739580920826867327f,\
+1.9475448138625472971341f,1.5369506397672023645384f,0.5466606741068265051808f,\
+0.9729193674298542982015f,2.3999437957484786032580f,1.4341047292357653741846f,\
+0.5111837868275163065945f,0.1111569790233604693164f,1.091716362873146328738f,\
+0.9138969247921984173644f,0.7040484777727061826980f,0.9721353920795816616618f,\
+2.0373197284299586762302f,0.8964067096914249965778f,2.3355486655682877739082f,\
+1.7093760866374785312161f,0.2716303051904848664400f,0.9460612941094431738165f,\
+1.2762143042912967860758f,-0.5352378220939374431353f,1.1838129188764214827501f,\
+0.3761598820395333775402f,2.3805545048605618596582f,0.7017854493503786761366f,\
+0.9822084988099225588698f,1.1648832392783827760496f,0.9992994024245958062380f,\
+0.1738523619678353504536f,1.6004378914991708171556f,1.3222645989799672872067f,\
+1.6332603440938282535200f,1.1558588483310223704592f,0.8687697917589873863875f,\
+-0.8204224950713523423218f,1.4547791700377004087130f,-1.0014359468702989097721f,\
+0.0144439712508898226995f,0.2674388703277625345400f,1.0538721408636444465401f,\
+0.1548583219344299433118f,0.6953871836582313781250f,3.5373520681952288491345f,\
+1.0989946596859092586840f,-0.8807918395297148483891f,1.18456726702104053750f,\
+1.6180875245455190736266f,0.6615360547308598571092f}
+
+#define CRESULTI {0.8476313539717991174527f,-0.0020945428347154504238f,-0.0107702820990110675198f,\
+-1.3194799051731675998411f,-1.5788424410279275900137f,0.0069265821924918190636f,\
+-0.3180628434269115456523f,-0.1158623505001605547005f,0.2488922702434745726219f,\
+0.3333162069042073238911f,-2.7579550935532486377610f,-0.0929722217314629395535f,\
+-2.558018975124945360022f,1.0673421965913736375597f,-0.0202992468302341001751f,\
+-0.5103135313335316336492f,-1.0383893485568700398858f,0.2955939972849115360276f,\
+-0.3716363644745803163083f,-0.669112301980219426056f,-0.3318327753869652063656f,\
+0.9035686841735829366584f,-0.0067883075736271340089f,-0.0021471806447879195068f,\
+-0.1287847092516060110157f,2.8852450693166233897102f,-0.0010974001216119489213f,\
+-0.1508680801994282949519f,0.315705921414520418455f,-0.2580859369524737267909f,\
+-0.4893903475844605388545f,-2.116294802120160856163f,0.5953479459460185863051f,\
+2.0617504351927595784844f,0.3616928144472888462246f,0.0048175006267416721831f,\
+-3.1913265982599425818478f,-0.0679428805767179483377f,-0.3743690366783002931861f,\
+1.6027053949682106281927f,0.0107745309683946743906f,0.8329399053511026274066f,\
+0.0907062192789129806414f,0.0408000708558418981320f,0.1702419063491371065133f,\
+2.5813113904964448686030f,4.3826942657913274814518f,-0.1250993995488117738191f,\
+-0.366232782627764485994f,0.1355060901825991537262f,0.4285644238647245418683f,\
+0.2943941929388677047896f,-0.0242296816969479640591f,-0.5347582943284873158163f,\
+5.440972259812645539512f,0.1130116459854922927875f,-0.0230886388762507679950f,\
+-0.0758567265188389433517f,-0.0153004723200108137121f,0.6705905748883707051533f,\
+0.3580727041769314333841f,0.5060754117432990639713f,-0.0529558939424066774104f,\
+0.8998620364333704824134f,2.4830051583371242074350f,-0.0075609544367582562363f,\
+-4.5567155472995342080367f,0.3858035723583744802667f,-0.1243338609096430735779f,\
+-1.9945093918095539997637f,-1.2920941940088974675405f,1.2080631306058675633608f,\
+0.8083456169264077173509f,-0.0085739065252298622688f,-0.1660020282935961710713f,\
+-0.0959540597572042242014f,0.0927222427996397119410f,0.2221508503381195154258f,\
+-0.1409070089536773040528f,0.1405249830722395676386f,-0.0419169397939630830607f,\
+1.0272672902510724401992f,0.1050876648914500499643f,-0.3835786757949954384195f,\
+0.5298437409836795897178f,2.9106995454114534815915f,-0.0190217208337024913656f,\
+-0.5609150372475696366692f,0.1029355491400509997613f,0.4090658874763115071538f,\
+-0.0046870241505978906330f,0.0668889266782490693464f,0.7415168418856862286859f,\
+-0.0168562013052173872985f,0.3406253082923152986083f,-0.4061399877851155082453f,\
+0.2969570085375197732169f,-0.3434409399238548266098f,-0.9854495385788534234095f,\
+-0.0867374346127948586682f,0.3597999966335438393195f,0.5808295174480837541608f,\
+-0.9935741356819206560047f,0.3096185219585154135835f,-4.5479921396771585406782f,\
+-0.4366900670417938612466f,-0.9018465944214471008422f,-0.5250881076401040514767f,\
+-0.8025691478992442728924f,0.0572684987995472974398f,0.4945930961405698988997f,\
+0.4034972398433521179051f,0.7137454043276676429741f,0.7512128888062908904644f,\
+0.1939996418115135512483f,-0.4464039676558783642513f,1.3907357608014461192170f,\
+1.17156541392215607367f,-1.9708685366549760775712f,0.3123022444724680712902f,\
+-0.7896872395843760328304f,-0.6179850212857144198253f,0.9256883067644073870284f,\
+-2.7417718288371224488742f,-0.1326893078962607386284f,-0.2491649089658723725815f,\
+0.6490031468453125729212f,-0.0039713278584005608923f,-2.4386883505629461943442f,\
+3.178543851545130305425f,-1.0690676099739919724385f,-0.0260882664072711288605f,\
+-0.9060493921002102934992f,0.6199896062130800800105f,-0.1133779208230118323852f,\
+-0.2723070216270195298414f,0.6794632710962359434248f,-0.1319558520667497847345f,\
+-0.0528338647750857190455f,-0.53278022650161005469f,-0.1536737960232173183517f,\
+-0.1415472283443244549961f,0.0042545728383564943367f,3.4486281529351474617329f,\
+-1.3962363760387317412892f,0.0515879186128369374154f,-0.7852445756480942451461f,\
+-1.0432119477148995567717f,-0.3036586016327645909385f,-0.8524640219222514581077f,\
+-3.278864600929186412515f,-0.7961629883628608128632f,-1.1545100621855832745410f,\
+0.3684195377039459207147f,-1.6970666375940057779559f,0.5849997270051815467795f,\
+0.0618729525386339657134f,-0.1749203390283090575608f,-0.0606310989665877000943f,\
+0.7892429044220883316285f,-0.5178739198482895655928f,-0.0418201497112469372519f,\
+0.2095761220035197158751f,-0.3550942958596610687927f,-0.0867144455279654918778f,\
+-0.4598945931287213850780f,0.0685694193597463919065f,-0.3559389766660929765862f,\
+2.0119894555407911163059f,-1.0947444956011096461879f,-1.6288470340375438283331f,\
+-0.2410820142960599099524f,1.4659778142858674865323f,0.6624490343288035321123f,\
+0.4136536130989748594189f,-0.9846866209581750517543f,0.9510859925791920188587f,\
+-0.3140825904492373088495f,0.4344001304574144906034f,0.0016042272632115935332f,\
+-1.7199780122539785054414f,-0.1872506113405222882839f,0.4446357342161921244461f,\
+-0.1745599221993578142875f,0.4442139130537332003534f,0.2767209124711134116126f,\
+-0.0013781156561338940309f,0.4254643497866397727769f,-0.0032333769526939463469f,\
+-0.0697738544158777868054f,0.1581414947349125965648f,-0.0415758240738434495243f,\
+-0.8801521218406083146846f,0.0803587769045229632914f,2.1574882446469239027920f,\
+-0.1027605757720615048401f,1.0043017952229080780313f,-1.8015810020856124484823f,\
+0.0897692625606805599814f,-0.2856956371820633111547f}
+
+
+
+
+void scoshsTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=scoshs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-6);
+ }
+}
+
+void ccoshsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=ccoshs(in);
+ assert( fabs(creals(out) - resR[i]) < 3e-6);
+ assert( fabs(cimags(out) - resI[i]) < 3e-6);
+ }
+}
+
+void scoshaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ j=1;
+ scosha(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void ccoshaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in[200],out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(inR[i],inI[i]);
+ }
+ ccosha(in,200,out);
+ for (i=0;i<200;i++){
+ assert( fabs(creals(out[i]) - resR[i]) < 3e-6);
+ assert( fabs(cimags(out[i]) - resI[i]) < 3e-6);
+ }
+}
+
+
+int testCosh(void) {
+ printf("\n>>>> Hyperbolic Cosine Tests\n");
+ scoshsTest();
+ ccoshsTest();
+ scoshaTest();
+ ccoshaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testCosh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/u16cosha.c b/2.3-1/src/c/elementaryFunctions/cosh/u16cosha.c
new file mode 100644
index 00000000..83d3786c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/u16cosha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cosh.h"
+
+void u16cosha(uint16* x, int size, uint16* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16coshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/u16coshs.c b/2.3-1/src/c/elementaryFunctions/cosh/u16coshs.c
new file mode 100644
index 00000000..22f6ded0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/u16coshs.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+// cosh(z) = 0.5 (exp(|z|) + exp(-|z|))
+// = 0.5 ( y + 1/y ) with y = exp(|z|)
+*/
+
+#include <math.h>
+#include "cosh.h"
+#include "exp.h"
+#include "abs.h"
+#include "types.h"
+
+float u16coshs(uint16 x) {
+ double y = u16exps(u16abss(x));
+ return (0.5 * (y + 1.0/y));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/u8cosha.c b/2.3-1/src/c/elementaryFunctions/cosh/u8cosha.c
new file mode 100644
index 00000000..4b44c28b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/u8cosha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cosh.h"
+
+void u8cosha(uint8* x, int size, uint8* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8coshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/u8coshs.c b/2.3-1/src/c/elementaryFunctions/cosh/u8coshs.c
new file mode 100644
index 00000000..bed1eb93
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/u8coshs.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+// cosh(z) = 0.5 (exp(|z|) + exp(-|z|))
+// = 0.5 ( y + 1/y ) with y = exp(|z|)
+*/
+
+#include <math.h>
+#include "cosh.h"
+#include "exp.h"
+#include "abs.h"
+#include "types.h"
+
+float u8coshs(uint8 x) {
+ double y = u8exps(u8abss(x));
+ return (0.5 * (y + 1.0/y));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/zcosha.c b/2.3-1/src/c/elementaryFunctions/cosh/zcosha.c
new file mode 100644
index 00000000..a7f59136
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/zcosha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cosh.h"
+
+void zcosha(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zcoshs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/cosh/zcoshs.c b/2.3-1/src/c/elementaryFunctions/cosh/zcoshs.c
new file mode 100644
index 00000000..a4c072fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/cosh/zcoshs.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/** cosh(z) = cos(i z) */
+
+#include "cosh.h"
+#include "cos.h"
+
+doubleComplex zcoshs(doubleComplex z) {
+
+ return (zcoss(DoubleComplex(-zimags(z), zreals(z))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/dfactors.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/dfactors.c
new file mode 100644
index 00000000..9ac76b5a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/dfactors.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+# include <stdio.h>
+# include <math.h>
+
+void dfactors(double in,double* out)
+{
+ int i=0,k=0;
+ int n=(int)in;
+ while (n%2 == 0)
+ {
+ out[k++]=2;
+ n = n/2;
+ }
+
+ for (i = 3; i <= (int)sqrt((double)n); i = i+2)
+ {
+ while (n%i == 0)
+ {
+ out[k++]=i;
+ n = n/i;
+ }
+ }
+
+ if (n > 2)
+ {
+ out[k++]=n;
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/sfactors.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/sfactors.c
new file mode 100644
index 00000000..a2eed09f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factor/sfactors.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+# include <stdio.h>
+# include <math.h>
+
+void sfactors(float in,float* out)
+{
+ int i=0,k=0;
+ int n=(int)in;
+ while (n%2 == 0)
+ {
+ out[k++]=2;
+ n = n/2;
+ }
+
+ for (i = 3; i <= (int)sqrt((double)n); i = i+2)
+ {
+ while (n%i == 0)
+ {
+ out[k++]=i;
+ n = n/i;
+ }
+ }
+
+ if (n > 2)
+ {
+ out[k++]=n;
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactoriala.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactoriala.c
new file mode 100644
index 00000000..68a118ba
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactoriala.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "factorial.h"
+#include <math.h>
+
+void dfactoriala(double* in,int size,double* out)
+{
+ int i=0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = dfactorials(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactorials.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactorials.c
new file mode 100644
index 00000000..354eb6a8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/dfactorials.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <stdio.h>
+#include <math.h>
+#include "factorial.h"
+
+double dfactorials(double in)
+{
+ int i,n;
+ long long int fact=1;
+ n=(int)in;
+ if (n < 0)
+ printf("Error! Factorial of a negative number doesn't exist.");
+ else if (n>170)
+ printf("Inf");
+ else
+ {
+ for(i=1; i<=n; i++)
+ {
+ fact=fact*i;
+ //printf("\n %lld",fact);
+ }
+ }
+
+ return fact;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactoriala.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactoriala.c
new file mode 100644
index 00000000..14f46d84
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactoriala.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "factorial.h"
+#include <math.h>
+
+void sfactoriala(float* in,int size,float* out)
+{
+ int i=0;
+ for (i=0;i<size;i++)
+ {
+ out[i] = dfactorials(in[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactorials.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactorials.c
new file mode 100644
index 00000000..e4f1017b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/factorial/sfactorials.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <stdio.h>
+#include <math.h>
+#include "factorial.h"
+
+float sfactorials(float in)
+{
+ int i,n;
+ long long int fact=1;
+ n=(int)in;
+ if (n < 0)
+ printf("Error! Factorial of a negative number doesn't exist.");
+ else if(n>170)
+ printf("Inf");
+ else
+ {
+ for(i=1; i<=n; i++)
+ {
+ fact *= i;
+ }
+ }
+
+ return fact;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/dprimess.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/dprimess.c
new file mode 100644
index 00000000..3aa0af4d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/dprimess.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include "primes.h"
+void dprimess(double in, double* out)
+{
+ int i=0,j=0,k=0,n=0,counter=0;
+ n=(int)in;
+ for(i=2;i<=n;i++)
+ {
+ counter=0;
+ for(j=2;j<i;j++)
+ {
+ if(i%j==0)
+ {
+ counter=1;
+ break;
+ }
+ }
+ if(counter==0)
+ {
+ out[k++]=i;
+
+ }
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/sprimess.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/sprimess.c
new file mode 100644
index 00000000..bff39d74
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/primes/sprimess.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include "primes.h"
+void sprimess(float in, float* out)
+{
+ int i=0,j=0,k=0,n=0,counter=0;
+ n=(int)in;
+ for(i=2;i<=n;i++)
+ {
+ counter=0;
+ for(j=2;j<i;j++)
+ {
+ if(i%j==0)
+ {
+ counter=1;
+ break;
+ }
+ }
+ if(counter==0)
+ {
+ out[k]=i;
+ k++;
+ }
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj b/2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj
new file mode 100644
index 00000000..e1029fb7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj
@@ -0,0 +1,1562 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{72B46833-B150-432D-B231-3E0ECD91E190}</ProjectGuid>
+ <RootNamespace>elementaryFunctions</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../../../includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ELEMENTARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;$(SolutionDir)bin/lapack.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../../../includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ELEMENTARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;$(SolutionDir)bin/lapack.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../../../includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ELEMENTARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;$(SolutionDir)bin/lapack.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../../../includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ELEMENTARYFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;$(SolutionDir)bin/lapack.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="acos\cacosa.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\cacoss.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\dacosa.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\dacoss.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\sacosa.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\sacoss.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\zacosa.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acos\zacoss.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\cacosha.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\cacoshs.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\dacosha.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\dacoshs.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\sacosha.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\sacoshs.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\zacosha.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="acosh\zacoshs.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\casina.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\casins.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\dasina.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\dasins.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\sasina.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\sasins.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\zasina.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asin\zasins.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\casinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\casinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\dasinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\dasinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\sasinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\sasinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\zasinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="asinh\zasinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\catana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\catans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\datana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\datans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\satana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\satans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\zatana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan\zatans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan2\datan2a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan2\datan2s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan2\satan2a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atan2\satan2s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\catanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\catanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\datanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\datanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\satanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\satanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\zatanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="atanh\zatanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\cceila.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\cceils.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\dceila.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\dceils.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\sceila.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\sceils.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\zceila.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ceil\zceils.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\ccosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\ccoss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\dcosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\dcoss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\scosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\scoss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\zcosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cos\zcoss.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\ccosha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\ccoshs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\dcosha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\dcoshs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\scosha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\scoshs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\zcosha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cosh\zcoshs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\cexpa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\cexps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\dexpa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\dexps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\sexpa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\sexps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\zexpa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp\zexps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\cexp10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\cexp10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\dexp10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\dexp10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\sexp10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\sexp10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\zexp10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="exp10\zexp10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\cfixa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\cfixs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\dfixa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\dfixs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\sfixa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\sfixs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\zfixa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fix\zfixs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\cfloora.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\cfloors.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\dfloora.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\dfloors.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\sfloora.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\sfloors.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\zfloora.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floor\zfloors.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\cinta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\cints.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\dinta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\dints.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\sinta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\sints.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\zinta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="int\zints.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lnp1m1\dlnp1m1s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lnp1m1\slnp1m1s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\cloga.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\clogs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\dloga.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\dlogs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\sloga.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\slogs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\zloga.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log\zlogs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\clog1pa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\clog1ps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\dlog1pa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\dlog1ps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\slog1pa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\slog1ps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\zlog1pa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log1p\zlog1ps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\clog10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\clog10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\dlog10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\dlog10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\slog10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\slog10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\zlog10a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="log10\zlog10s.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\cpowa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\cpows.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\dpowa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\dpows.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\spowa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\spows.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\zpowa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="pow\zpows.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\crounda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\crounds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\drounda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\drounds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\srounda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\srounds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\zrounda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="round\zrounds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\csina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\csins.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\dsina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\dsins.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\ssina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\ssins.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\zsina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sin\zsins.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\csinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\csinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\dsinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\dsinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\ssinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\ssinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\zsinha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sinh\zsinhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\csqrta.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\csqrts.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\dsqrta.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\dsqrts.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\ssqrta.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\ssqrts.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\zsqrta.c">
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
+ <CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Cdecl</CallingConvention>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sqrt\zsqrts.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\ctana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\ctans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\dtana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\dtans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\stana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\stans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\ztana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tan\ztans.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\ctanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\ctanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\dtanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\dtanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\stanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\stanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\ztanha.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="tanh\ztanhs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="acos\Makefile.am" />
+ <None Include="acosh\Makefile.am" />
+ <None Include="asin\Makefile.am" />
+ <None Include="asinh\Makefile.am" />
+ <None Include="atan\Makefile.am" />
+ <None Include="atan2\Makefile.am" />
+ <None Include="atanh\Makefile.am" />
+ <None Include="ceil\Makefile.am" />
+ <None Include="cos\Makefile.am" />
+ <None Include="cosh\Makefile.am" />
+ <None Include="exp\Makefile.am" />
+ <None Include="exp10\Makefile.am" />
+ <None Include="fix\Makefile.am" />
+ <None Include="floor\Makefile.am" />
+ <None Include="int\Makefile.am" />
+ <None Include="lnp1m1\Makefile.am" />
+ <None Include="log\Makefile.am" />
+ <None Include="log1p\Makefile.am" />
+ <None Include="log10\Makefile.am" />
+ <None Include="pow\Makefile.am" />
+ <None Include="round\Makefile.am" />
+ <None Include="sin\Makefile.am" />
+ <None Include="sinh\Makefile.am" />
+ <None Include="sqrt\Makefile.am" />
+ <None Include="tan\Makefile.am" />
+ <None Include="tanh\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\acos.h" />
+ <ClInclude Include="includes\acosh.h" />
+ <ClInclude Include="includes\asin.h" />
+ <ClInclude Include="includes\asinh.h" />
+ <ClInclude Include="includes\atan.h" />
+ <ClInclude Include="includes\atan2.h" />
+ <ClInclude Include="includes\atanh.h" />
+ <ClInclude Include="includes\ceil.h" />
+ <ClInclude Include="includes\cos.h" />
+ <ClInclude Include="includes\cosh.h" />
+ <ClInclude Include="includes\dynlib_elementaryfunctions.h" />
+ <ClInclude Include="includes\exp.h" />
+ <ClInclude Include="includes\exp10.h" />
+ <ClInclude Include="includes\fix.h" />
+ <ClInclude Include="includes\floor.h" />
+ <ClInclude Include="includes\int.h" />
+ <ClInclude Include="includes\lnp1m1.h" />
+ <ClInclude Include="includes\log.h" />
+ <ClInclude Include="includes\log10.h" />
+ <ClInclude Include="includes\log1p.h" />
+ <ClInclude Include="includes\pow.h" />
+ <ClInclude Include="includes\round.h" />
+ <ClInclude Include="includes\sin.h" />
+ <ClInclude Include="includes\sinh.h" />
+ <ClInclude Include="includes\sqrt.h" />
+ <ClInclude Include="includes\tan.h" />
+ <ClInclude Include="includes\tanh.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\operations\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\bin\lapack.lib" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj.filters b/2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj.filters
new file mode 100644
index 00000000..9e1965f4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/elementaryFunctions.vcxproj.filters
@@ -0,0 +1,857 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\acos">
+ <UniqueIdentifier>{4bee642b-618e-469b-abbb-eff706945f07}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\acosh">
+ <UniqueIdentifier>{ce931ede-d037-4ced-b097-92fd8c44e069}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\asin">
+ <UniqueIdentifier>{a8546fc3-383f-4383-ab59-ad6b9f0319ec}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\asinh">
+ <UniqueIdentifier>{a788e4a0-a4b2-41bd-b10d-9cfeaca3390b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\atan">
+ <UniqueIdentifier>{d934660b-0e2a-44d6-a91e-9b777ba1e76a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\atan2">
+ <UniqueIdentifier>{0401cf0d-8c1d-4104-92b7-c2e740e3f5d8}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\atanh">
+ <UniqueIdentifier>{89eb0e32-9870-4ec7-ab20-71e89163d7be}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\ceil">
+ <UniqueIdentifier>{41ffb68f-186c-40d4-8ecb-5a209b6d9b08}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\cos">
+ <UniqueIdentifier>{5b0722e6-d501-4970-8d47-3c1b7ae104eb}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\cosh">
+ <UniqueIdentifier>{b7e65ad6-ee23-4d3d-b67a-8188c23f6fee}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\exp">
+ <UniqueIdentifier>{8d46a382-248e-4adc-8a5e-40b774a6c9d0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\exp10">
+ <UniqueIdentifier>{efdcd1db-4220-4673-bdaf-a61ae5e52ea4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\fix">
+ <UniqueIdentifier>{ed1d39df-750e-4527-9044-38629af8526e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\floor">
+ <UniqueIdentifier>{193ec9fc-48c2-4348-9482-73ef57611c73}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\int">
+ <UniqueIdentifier>{03cefff6-72be-41a3-bdec-cc72b7f3a9b4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\lnp1m1">
+ <UniqueIdentifier>{683da905-d30d-4c01-a338-b907b0be88e7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\log">
+ <UniqueIdentifier>{d7fd467d-508c-4ed4-8434-d61218dffe7a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\log1p">
+ <UniqueIdentifier>{266d09c3-4a01-4e53-a9cc-7885a75a7e10}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\log10">
+ <UniqueIdentifier>{133460ee-f6d2-42ba-a012-ee666d0cf20f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\pow">
+ <UniqueIdentifier>{72dd8568-bd55-44b7-ac43-dadb2121a65b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\round">
+ <UniqueIdentifier>{7a1ea842-b75a-4359-9203-362b01b580de}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\sin">
+ <UniqueIdentifier>{ef365c2a-d020-4c72-b3d4-41d7faea88a0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\sinh">
+ <UniqueIdentifier>{dd4fce50-1f87-44a2-8d9d-94749d675564}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\sqrt">
+ <UniqueIdentifier>{5cec6d7f-51e5-4028-9d7f-84674c7d83ed}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\tan">
+ <UniqueIdentifier>{623a519d-2b90-41f1-819c-bedef22f3aeb}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\tanh">
+ <UniqueIdentifier>{c2f3668b-9d41-4ccb-9871-f857d72c9e0a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="acos\cacosa.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\cacoss.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\dacosa.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\dacoss.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\sacosa.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\sacoss.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\zacosa.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acos\zacoss.c">
+ <Filter>Source Files\acos</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\cacosha.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\cacoshs.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\dacosha.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\dacoshs.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\sacosha.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\sacoshs.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\zacosha.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="acosh\zacoshs.c">
+ <Filter>Source Files\acosh</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\casina.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\casins.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\dasina.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\dasins.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\sasina.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\sasins.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\zasina.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asin\zasins.c">
+ <Filter>Source Files\asin</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\casinha.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\casinhs.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\dasinha.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\dasinhs.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\sasinha.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\sasinhs.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\zasinha.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="asinh\zasinhs.c">
+ <Filter>Source Files\asinh</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\catana.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\catans.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\datana.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\datans.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\satana.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\satans.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\zatana.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan\zatans.c">
+ <Filter>Source Files\atan</Filter>
+ </ClCompile>
+ <ClCompile Include="atan2\datan2a.c">
+ <Filter>Source Files\atan2</Filter>
+ </ClCompile>
+ <ClCompile Include="atan2\datan2s.c">
+ <Filter>Source Files\atan2</Filter>
+ </ClCompile>
+ <ClCompile Include="atan2\satan2a.c">
+ <Filter>Source Files\atan2</Filter>
+ </ClCompile>
+ <ClCompile Include="atan2\satan2s.c">
+ <Filter>Source Files\atan2</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\catanha.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\catanhs.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\datanha.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\datanhs.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\satanha.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\satanhs.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\zatanha.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="atanh\zatanhs.c">
+ <Filter>Source Files\atanh</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\cceila.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\cceils.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\dceila.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\dceils.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\sceila.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\sceils.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\zceila.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="ceil\zceils.c">
+ <Filter>Source Files\ceil</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\ccosa.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\ccoss.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\dcosa.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\dcoss.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\scosa.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\scoss.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\zcosa.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cos\zcoss.c">
+ <Filter>Source Files\cos</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\ccosha.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\ccoshs.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\dcosha.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\dcoshs.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\scosha.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\scoshs.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\zcosha.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="cosh\zcoshs.c">
+ <Filter>Source Files\cosh</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\cexpa.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\cexps.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\dexpa.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\dexps.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\sexpa.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\sexps.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\zexpa.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp\zexps.c">
+ <Filter>Source Files\exp</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\cexp10a.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\cexp10s.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\dexp10a.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\dexp10s.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\sexp10a.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\sexp10s.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\zexp10a.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="exp10\zexp10s.c">
+ <Filter>Source Files\exp10</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\cfixa.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\cfixs.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\dfixa.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\dfixs.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\sfixa.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\sfixs.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\zfixa.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="fix\zfixs.c">
+ <Filter>Source Files\fix</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\cfloora.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\cfloors.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\dfloora.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\dfloors.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\sfloora.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\sfloors.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\zfloora.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="floor\zfloors.c">
+ <Filter>Source Files\floor</Filter>
+ </ClCompile>
+ <ClCompile Include="int\cinta.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\cints.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\dinta.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\dints.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\sinta.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\sints.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\zinta.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="int\zints.c">
+ <Filter>Source Files\int</Filter>
+ </ClCompile>
+ <ClCompile Include="lnp1m1\dlnp1m1s.c">
+ <Filter>Source Files\lnp1m1</Filter>
+ </ClCompile>
+ <ClCompile Include="lnp1m1\slnp1m1s.c">
+ <Filter>Source Files\lnp1m1</Filter>
+ </ClCompile>
+ <ClCompile Include="log\cloga.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\clogs.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\dloga.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\dlogs.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\sloga.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\slogs.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\zloga.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log\zlogs.c">
+ <Filter>Source Files\log</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\clog1pa.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\clog1ps.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\dlog1pa.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\dlog1ps.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\slog1pa.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\slog1ps.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\zlog1pa.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log1p\zlog1ps.c">
+ <Filter>Source Files\log1p</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\clog10a.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\clog10s.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\dlog10a.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\dlog10s.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\slog10a.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\slog10s.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\zlog10a.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="log10\zlog10s.c">
+ <Filter>Source Files\log10</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\cpowa.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\cpows.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\dpowa.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\dpows.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\spowa.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\spows.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\zpowa.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="pow\zpows.c">
+ <Filter>Source Files\pow</Filter>
+ </ClCompile>
+ <ClCompile Include="round\crounda.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\crounds.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\drounda.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\drounds.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\srounda.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\srounds.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\zrounda.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="round\zrounds.c">
+ <Filter>Source Files\round</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\csina.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\csins.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\dsina.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\dsins.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\ssina.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\ssins.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\zsina.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sin\zsins.c">
+ <Filter>Source Files\sin</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\csinha.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\csinhs.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\dsinha.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\dsinhs.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\ssinha.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\ssinhs.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\zsinha.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sinh\zsinhs.c">
+ <Filter>Source Files\sinh</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\csqrta.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\csqrts.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\dsqrta.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\dsqrts.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\ssqrta.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\ssqrts.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\zsqrta.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="sqrt\zsqrts.c">
+ <Filter>Source Files\sqrt</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\ctana.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\ctans.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\dtana.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\dtans.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\stana.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\stans.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\ztana.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tan\ztans.c">
+ <Filter>Source Files\tan</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\ctanha.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\ctanhs.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\dtanha.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\dtanhs.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\stanha.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\stanhs.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\ztanha.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ <ClCompile Include="tanh\ztanhs.c">
+ <Filter>Source Files\tanh</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="acos\Makefile.am">
+ <Filter>Source Files\acos</Filter>
+ </None>
+ <None Include="acosh\Makefile.am">
+ <Filter>Source Files\acosh</Filter>
+ </None>
+ <None Include="asin\Makefile.am">
+ <Filter>Source Files\asin</Filter>
+ </None>
+ <None Include="asinh\Makefile.am">
+ <Filter>Source Files\asinh</Filter>
+ </None>
+ <None Include="atan\Makefile.am">
+ <Filter>Source Files\atan</Filter>
+ </None>
+ <None Include="atan2\Makefile.am">
+ <Filter>Source Files\atan2</Filter>
+ </None>
+ <None Include="atanh\Makefile.am">
+ <Filter>Source Files\atanh</Filter>
+ </None>
+ <None Include="ceil\Makefile.am">
+ <Filter>Source Files\ceil</Filter>
+ </None>
+ <None Include="cos\Makefile.am">
+ <Filter>Source Files\cos</Filter>
+ </None>
+ <None Include="cosh\Makefile.am">
+ <Filter>Source Files\cosh</Filter>
+ </None>
+ <None Include="exp\Makefile.am">
+ <Filter>Source Files\exp</Filter>
+ </None>
+ <None Include="exp10\Makefile.am">
+ <Filter>Source Files\exp10</Filter>
+ </None>
+ <None Include="fix\Makefile.am">
+ <Filter>Source Files\fix</Filter>
+ </None>
+ <None Include="floor\Makefile.am">
+ <Filter>Source Files\floor</Filter>
+ </None>
+ <None Include="int\Makefile.am">
+ <Filter>Source Files\int</Filter>
+ </None>
+ <None Include="lnp1m1\Makefile.am">
+ <Filter>Source Files\lnp1m1</Filter>
+ </None>
+ <None Include="log\Makefile.am">
+ <Filter>Source Files\log</Filter>
+ </None>
+ <None Include="log1p\Makefile.am">
+ <Filter>Source Files\log1p</Filter>
+ </None>
+ <None Include="log10\Makefile.am">
+ <Filter>Source Files\log10</Filter>
+ </None>
+ <None Include="pow\Makefile.am">
+ <Filter>Source Files\pow</Filter>
+ </None>
+ <None Include="round\Makefile.am">
+ <Filter>Source Files\round</Filter>
+ </None>
+ <None Include="sin\Makefile.am">
+ <Filter>Source Files\sin</Filter>
+ </None>
+ <None Include="sinh\Makefile.am">
+ <Filter>Source Files\sinh</Filter>
+ </None>
+ <None Include="sqrt\Makefile.am">
+ <Filter>Source Files\sqrt</Filter>
+ </None>
+ <None Include="tan\Makefile.am">
+ <Filter>Source Files\tan</Filter>
+ </None>
+ <None Include="tanh\Makefile.am">
+ <Filter>Source Files\tanh</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\acos.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\acosh.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\asin.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\asinh.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\atan.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\atan2.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\atanh.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\ceil.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\cos.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\cosh.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_elementaryfunctions.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\exp.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\exp10.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\fix.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\floor.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\int.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\lnp1m1.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\log.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\log10.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\log1p.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\pow.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\round.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\sin.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\sinh.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\sqrt.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\tan.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\tanh.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\bin\lapack.lib" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/elementaryFunctions/exp/Makefile.am b/2.3-1/src/c/elementaryFunctions/exp/Makefile.am
new file mode 100644
index 00000000..f8c73aa5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/Makefile.am
@@ -0,0 +1,65 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libExp_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libExp.la
+
+libExp_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sexps.c \
+ dexps.c \
+ cexps.c \
+ zexps.c \
+ sexpa.c \
+ dexpa.c \
+ cexpa.c \
+ zexpa.c
+
+HEAD = ../includes/exp.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatExp testDoubleExp
+
+TESTS = testFloatExp testDoubleExp
+
+testFloatExp_SOURCES = testExp.h testFloatExp.c
+testFloatExp_CFLAGS = $(check_INCLUDES)
+testFloatExp_LDADD = $(check_LDADD)
+
+testDoubleExp_SOURCES = testExp.h testDoubleExp.c
+testDoubleExp_CFLAGS = $(check_INCLUDES)
+testDoubleExp_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/exp/Makefile.in b/2.3-1/src/c/elementaryFunctions/exp/Makefile.in
new file mode 100644
index 00000000..230e0b3a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/Makefile.in
@@ -0,0 +1,804 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatExp$(EXEEXT) testDoubleExp$(EXEEXT)
+TESTS = testFloatExp$(EXEEXT) testDoubleExp$(EXEEXT)
+subdir = src/c/elementaryFunctions/exp
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libExp_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libExp_la-sexps.lo libExp_la-dexps.lo \
+ libExp_la-cexps.lo libExp_la-zexps.lo libExp_la-sexpa.lo \
+ libExp_la-dexpa.lo libExp_la-cexpa.lo libExp_la-zexpa.lo
+am_libExp_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libExp_la_OBJECTS = $(am_libExp_la_OBJECTS)
+libExp_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libExp_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleExp_OBJECTS = testDoubleExp-testDoubleExp.$(OBJEXT)
+testDoubleExp_OBJECTS = $(am_testDoubleExp_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleExp_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleExp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleExp_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatExp_OBJECTS = testFloatExp-testFloatExp.$(OBJEXT)
+testFloatExp_OBJECTS = $(am_testFloatExp_OBJECTS)
+testFloatExp_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatExp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatExp_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libExp_la_SOURCES) $(testDoubleExp_SOURCES) \
+ $(testFloatExp_SOURCES)
+DIST_SOURCES = $(libExp_la_SOURCES) $(testDoubleExp_SOURCES) \
+ $(testFloatExp_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libExp_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libExp.la
+libExp_la_SOURCES = $(HEAD) $(SRC)
+SRC = sexps.c \
+ dexps.c \
+ cexps.c \
+ zexps.c \
+ sexpa.c \
+ dexpa.c \
+ cexpa.c \
+ zexpa.c
+
+HEAD = ../includes/exp.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+testFloatExp_SOURCES = testExp.h testFloatExp.c
+testFloatExp_CFLAGS = $(check_INCLUDES)
+testFloatExp_LDADD = $(check_LDADD)
+testDoubleExp_SOURCES = testExp.h testDoubleExp.c
+testDoubleExp_CFLAGS = $(check_INCLUDES)
+testDoubleExp_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/exp/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/exp/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libExp.la: $(libExp_la_OBJECTS) $(libExp_la_DEPENDENCIES)
+ $(libExp_la_LINK) -rpath $(pkglibdir) $(libExp_la_OBJECTS) $(libExp_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleExp$(EXEEXT): $(testDoubleExp_OBJECTS) $(testDoubleExp_DEPENDENCIES)
+ @rm -f testDoubleExp$(EXEEXT)
+ $(testDoubleExp_LINK) $(testDoubleExp_OBJECTS) $(testDoubleExp_LDADD) $(LIBS)
+testFloatExp$(EXEEXT): $(testFloatExp_OBJECTS) $(testFloatExp_DEPENDENCIES)
+ @rm -f testFloatExp$(EXEEXT)
+ $(testFloatExp_LINK) $(testFloatExp_OBJECTS) $(testFloatExp_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-cexpa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-cexps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-dexpa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-dexps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-sexpa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-sexps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-zexpa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp_la-zexps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleExp-testDoubleExp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatExp-testFloatExp.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libExp_la-sexps.lo: sexps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-sexps.lo -MD -MP -MF $(DEPDIR)/libExp_la-sexps.Tpo -c -o libExp_la-sexps.lo `test -f 'sexps.c' || echo '$(srcdir)/'`sexps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-sexps.Tpo $(DEPDIR)/libExp_la-sexps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sexps.c' object='libExp_la-sexps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-sexps.lo `test -f 'sexps.c' || echo '$(srcdir)/'`sexps.c
+
+libExp_la-dexps.lo: dexps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-dexps.lo -MD -MP -MF $(DEPDIR)/libExp_la-dexps.Tpo -c -o libExp_la-dexps.lo `test -f 'dexps.c' || echo '$(srcdir)/'`dexps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-dexps.Tpo $(DEPDIR)/libExp_la-dexps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dexps.c' object='libExp_la-dexps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-dexps.lo `test -f 'dexps.c' || echo '$(srcdir)/'`dexps.c
+
+libExp_la-cexps.lo: cexps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-cexps.lo -MD -MP -MF $(DEPDIR)/libExp_la-cexps.Tpo -c -o libExp_la-cexps.lo `test -f 'cexps.c' || echo '$(srcdir)/'`cexps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-cexps.Tpo $(DEPDIR)/libExp_la-cexps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cexps.c' object='libExp_la-cexps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-cexps.lo `test -f 'cexps.c' || echo '$(srcdir)/'`cexps.c
+
+libExp_la-zexps.lo: zexps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-zexps.lo -MD -MP -MF $(DEPDIR)/libExp_la-zexps.Tpo -c -o libExp_la-zexps.lo `test -f 'zexps.c' || echo '$(srcdir)/'`zexps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-zexps.Tpo $(DEPDIR)/libExp_la-zexps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zexps.c' object='libExp_la-zexps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-zexps.lo `test -f 'zexps.c' || echo '$(srcdir)/'`zexps.c
+
+libExp_la-sexpa.lo: sexpa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-sexpa.lo -MD -MP -MF $(DEPDIR)/libExp_la-sexpa.Tpo -c -o libExp_la-sexpa.lo `test -f 'sexpa.c' || echo '$(srcdir)/'`sexpa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-sexpa.Tpo $(DEPDIR)/libExp_la-sexpa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sexpa.c' object='libExp_la-sexpa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-sexpa.lo `test -f 'sexpa.c' || echo '$(srcdir)/'`sexpa.c
+
+libExp_la-dexpa.lo: dexpa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-dexpa.lo -MD -MP -MF $(DEPDIR)/libExp_la-dexpa.Tpo -c -o libExp_la-dexpa.lo `test -f 'dexpa.c' || echo '$(srcdir)/'`dexpa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-dexpa.Tpo $(DEPDIR)/libExp_la-dexpa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dexpa.c' object='libExp_la-dexpa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-dexpa.lo `test -f 'dexpa.c' || echo '$(srcdir)/'`dexpa.c
+
+libExp_la-cexpa.lo: cexpa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-cexpa.lo -MD -MP -MF $(DEPDIR)/libExp_la-cexpa.Tpo -c -o libExp_la-cexpa.lo `test -f 'cexpa.c' || echo '$(srcdir)/'`cexpa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-cexpa.Tpo $(DEPDIR)/libExp_la-cexpa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cexpa.c' object='libExp_la-cexpa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-cexpa.lo `test -f 'cexpa.c' || echo '$(srcdir)/'`cexpa.c
+
+libExp_la-zexpa.lo: zexpa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -MT libExp_la-zexpa.lo -MD -MP -MF $(DEPDIR)/libExp_la-zexpa.Tpo -c -o libExp_la-zexpa.lo `test -f 'zexpa.c' || echo '$(srcdir)/'`zexpa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp_la-zexpa.Tpo $(DEPDIR)/libExp_la-zexpa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zexpa.c' object='libExp_la-zexpa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp_la_CFLAGS) $(CFLAGS) -c -o libExp_la-zexpa.lo `test -f 'zexpa.c' || echo '$(srcdir)/'`zexpa.c
+
+testDoubleExp-testDoubleExp.o: testDoubleExp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp_CFLAGS) $(CFLAGS) -MT testDoubleExp-testDoubleExp.o -MD -MP -MF $(DEPDIR)/testDoubleExp-testDoubleExp.Tpo -c -o testDoubleExp-testDoubleExp.o `test -f 'testDoubleExp.c' || echo '$(srcdir)/'`testDoubleExp.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleExp-testDoubleExp.Tpo $(DEPDIR)/testDoubleExp-testDoubleExp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleExp.c' object='testDoubleExp-testDoubleExp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp_CFLAGS) $(CFLAGS) -c -o testDoubleExp-testDoubleExp.o `test -f 'testDoubleExp.c' || echo '$(srcdir)/'`testDoubleExp.c
+
+testDoubleExp-testDoubleExp.obj: testDoubleExp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp_CFLAGS) $(CFLAGS) -MT testDoubleExp-testDoubleExp.obj -MD -MP -MF $(DEPDIR)/testDoubleExp-testDoubleExp.Tpo -c -o testDoubleExp-testDoubleExp.obj `if test -f 'testDoubleExp.c'; then $(CYGPATH_W) 'testDoubleExp.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleExp.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleExp-testDoubleExp.Tpo $(DEPDIR)/testDoubleExp-testDoubleExp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleExp.c' object='testDoubleExp-testDoubleExp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp_CFLAGS) $(CFLAGS) -c -o testDoubleExp-testDoubleExp.obj `if test -f 'testDoubleExp.c'; then $(CYGPATH_W) 'testDoubleExp.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleExp.c'; fi`
+
+testFloatExp-testFloatExp.o: testFloatExp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp_CFLAGS) $(CFLAGS) -MT testFloatExp-testFloatExp.o -MD -MP -MF $(DEPDIR)/testFloatExp-testFloatExp.Tpo -c -o testFloatExp-testFloatExp.o `test -f 'testFloatExp.c' || echo '$(srcdir)/'`testFloatExp.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatExp-testFloatExp.Tpo $(DEPDIR)/testFloatExp-testFloatExp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatExp.c' object='testFloatExp-testFloatExp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp_CFLAGS) $(CFLAGS) -c -o testFloatExp-testFloatExp.o `test -f 'testFloatExp.c' || echo '$(srcdir)/'`testFloatExp.c
+
+testFloatExp-testFloatExp.obj: testFloatExp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp_CFLAGS) $(CFLAGS) -MT testFloatExp-testFloatExp.obj -MD -MP -MF $(DEPDIR)/testFloatExp-testFloatExp.Tpo -c -o testFloatExp-testFloatExp.obj `if test -f 'testFloatExp.c'; then $(CYGPATH_W) 'testFloatExp.c'; else $(CYGPATH_W) '$(srcdir)/testFloatExp.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatExp-testFloatExp.Tpo $(DEPDIR)/testFloatExp-testFloatExp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatExp.c' object='testFloatExp-testFloatExp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp_CFLAGS) $(CFLAGS) -c -o testFloatExp-testFloatExp.obj `if test -f 'testFloatExp.c'; then $(CYGPATH_W) 'testFloatExp.c'; else $(CYGPATH_W) '$(srcdir)/testFloatExp.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/exp/cexpa.c b/2.3-1/src/c/elementaryFunctions/exp/cexpa.c
new file mode 100644
index 00000000..1c98e0e0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/cexpa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+
+void cexpa(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = cexps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/cexps.c b/2.3-1/src/c/elementaryFunctions/exp/cexps.c
new file mode 100644
index 00000000..3be3b01f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/cexps.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+#include "cos.h"
+#include "sin.h"
+
+floatComplex cexps(floatComplex z) {
+ float real = creals(z);
+ float imag = cimags(z);
+
+ return FloatComplex(sexps(real)*scoss(imag),
+ sexps(real)*ssins(imag));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/dexpa.c b/2.3-1/src/c/elementaryFunctions/exp/dexpa.c
new file mode 100644
index 00000000..3907b174
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/dexpa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+
+void dexpa(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dexps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/dexps.c b/2.3-1/src/c/elementaryFunctions/exp/dexps.c
new file mode 100644
index 00000000..c244c684
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/dexps.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+
+double dexps(double x) {
+ return (exp(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/i16expa.c b/2.3-1/src/c/elementaryFunctions/exp/i16expa.c
new file mode 100644
index 00000000..cd66c85c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/i16expa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "exp.h"
+
+void i16expa(int16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16exps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/i16exps.c b/2.3-1/src/c/elementaryFunctions/exp/i16exps.c
new file mode 100644
index 00000000..12e85ee4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/i16exps.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "exp.h"
+
+float i16exps(int16 x) {
+ return (expf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/i8expa.c b/2.3-1/src/c/elementaryFunctions/exp/i8expa.c
new file mode 100644
index 00000000..e45becbd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/i8expa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "exp.h"
+
+void i8expa(int8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8exps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/i8exps.c b/2.3-1/src/c/elementaryFunctions/exp/i8exps.c
new file mode 100644
index 00000000..8d33d203
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/i8exps.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "exp.h"
+
+float i8exps(int8 x) {
+ return (expf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/sexpa.c b/2.3-1/src/c/elementaryFunctions/exp/sexpa.c
new file mode 100644
index 00000000..733e4b37
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/sexpa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+
+void sexpa(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sexps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/sexps.c b/2.3-1/src/c/elementaryFunctions/exp/sexps.c
new file mode 100644
index 00000000..643e8873
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/sexps.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+
+float sexps(float x) {
+ return (expf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/testDoubleExp.c b/2.3-1/src/c/elementaryFunctions/exp/testDoubleExp.c
new file mode 100644
index 00000000..a56e13fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/testDoubleExp.c
@@ -0,0 +1,499 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testExp.h"
+
+#define SOURCE {0.2179693998688542744269,-0.0965447246339290049422,0.7336822469173450711466,\
+0.1536179219946321450330,2.4661907147341337598334,0.6332832861607330388054,\
+0.4890665386763063948727,-1.2667347141842044688786,0.1055086446255857485221,\
+-0.5936826571652784600985,-0.7816336465253074239357,-1.2815191120322371176599,\
+-0.9972908908531801230879,-0.5763370349806613557320,0.3762718127153176217448,\
+-0.8343599392689131644119,-1.0647534449045219506758,0.8534997909421322415113,\
+0.4306578956143343739349,0.5321132560429659985601,1.5974906319789743402993,\
+0.7312358120089610391545,0.4431279991113933891533,0.0087064913021668820237,\
+-0.8280501749431711244753,-1.0000194068543815095751,-0.8231062295149559338014,\
+-1.014391306624823796412,0.9121054970139131912177,-0.3855306050210344781526,\
+-0.2598191828862038144088,-0.0831341089570867414205,1.6949336044621277075350,\
+0.2429392861367114797577,1.8753502720069497033961,0.1984146246369250243813,\
+-0.7119008641532499348514,0.2504295152565002013922,1.8412596530958635909769,\
+-0.8228059182439799723596,0.6769888144769687920999,-0.4970822573553836942750,\
+0.0527831065241245664388,0.9397902577952749192391,-0.1148979773734264131502,\
+0.0647134776331551031525,0.3730550115687696344224,1.8451193005461747898011,\
+-0.5388550697275177325807,0.9483924031089353556823,0.0149553330989996690475,\
+0.3492458987360779198994,0.6782119558587149654727,-1.0638111247721440122405,\
+-0.0013200516387791912543,0.5311672327771198576229,-0.6446734157979014945283,\
+0.7518088875179287366990,-0.6321033286458267452801,-1.7783294717850963717609,\
+-0.9695340176537615706209,0.0585248375044749719054,-0.4174672618194515405499,\
+1.067002270541741681953,-0.1107931733964626630495,0.9733263412399585368107,\
+-1.5676178926909869471018,1.5082394419009976793689,1.4975531724590585014312,\
+0.0773364211376570409584,0.8296923447513622207339,-0.9966607229071756668404,\
+-0.5179876589725144198084,0.4414952679928694223577,-0.8736872755871413209761,\
+-0.0349791375435402618344,0.9274876201813765375093,0.4517463561226834900530,\
+-0.9961910310034214344199,-0.4760507657625145383484,0.2735565496341169633432,\
+-0.8683706445498747816814,-0.5819104976015757602070,1.0334934603683001430596,\
+1.3664069352627037368109,0.7304950466471921144418,-2.2795501799654798169570,\
+-0.3686784792993444970222,-1.2288389604009317679356,-1.372993238103811464157,\
+0.4327366693143714915237,-2.5372469745505505933636,-0.6466940204055214858059,\
+0.3727678446055545102844,-1.2012067538727111415398,-0.4120248811585083825726,\
+-0.1824358873620524901238,-0.7071004997444696460462,-0.0734584462405756949410,\
+0.4857107830752938615326,-1.5839443933479926407415,-2.6376393427060378371607,\
+-0.1810786671588598961691,0.8157163062709066325695,-0.3867087459826359374659,\
+0.4198660262170845203222,-0.6048459538042058047935,0.7659922557941690746119,\
+0.7134643264223192726803,0.1349874125377001632398,0.9411487010623025284417,\
+-2.1973029826905001726800,-1.9520696706230427075468,-1.2525761477383645647876,\
+0.3859074186443228193788,2.7807429866034785170825,-0.4523923998873963236989,\
+1.585571863180605944876,-0.8857651118640259557679,1.3802479208151854361830,\
+-0.3327040930736118173883,-0.2328335442849216174732,-0.7859150581069940244561,\
+-0.7298755566585160003967,-0.2812060079915064125800,-0.5573134267677620767856,\
+-0.5509002031358800621774,1.5296906305375963519566,-0.5702710404977533453774,\
+-1.3692402567978680938410,0.1826473558262797503016,0.1798346311903204763905,\
+0.4425890891364235302241,-0.9017692018513575602512,-1.4772671313778520385540,\
+0.4118240527515873439235,-0.3831680771908100302525,-1.7286187555088927680913,\
+0.9581454530897092203290,-0.4289057042708049327651,-1.2735233142733974887051,\
+0.7534058867095866363073,0.4695440194018555835065,-1.4064759963786124252749,\
+0.4697098567590811124539,-0.4910731440349740406504,0.9955428392828012951199,\
+1.1510113490256201895789,-0.1082632054930593029640,0.4856574660939540488691,\
+2.8432492089162182402617,-0.2526776656626389394589,-2.1526240294434693112180,\
+-0.1700067035996372932782,-1.2942848891673066624719,0.3501843381023743151381,\
+0.1214335524018897854992,-0.0093577680302103644072,-0.8404790744305570271422,\
+-0.2709432496692772418534,2.129923383430207373124,0.1924976275921922719281,\
+-0.9958949135265199315015,0.5029057807067898178133,2.1223686722196575260568,\
+0.0454634212534271303641,0.9495546668659169409210,0.9477155819428292327089,\
+2.5219360071943213164047,0.6965268573783115479969,1.0778432726775772909633,\
+-2.5098595900849196560500,0.4486528645511871360441,-0.4241938936353907840804,\
+-0.1335517966712884141423,-0.1078744374453666915459,0.2327494623534509532448,\
+0.9351842746020352370451,0.5235744811910800766697,-0.0660252647673259390748,\
+-0.5945113005344258017004,0.8805986363667026584068,1.4189560003612493588321,\
+1.409077916250558226707,0.696455894185944335284,0.90951587071067696577,\
+-0.3637587731642325517001,-0.6227550415243503501017,-0.8451138025419450139353,\
+-0.9376931811420606832641,-0.5548689487135263220807,-0.5854929781645817898905,\
+1.2660172290794624583299,0.5877121654077364087954,-1.2764933780334013491142,\
+0.7392453034050661120347,0.3032161878585472591929,-0.4000095029594706308451,\
+0.6502681159628262985706,1.845716594779029051665}
+
+#define RESULT {1.2435490142739233920821,0.9079692880976051316821,2.0827356520772775105854,\
+1.1660452814005672905751,11.777497445956059962668,1.8837854434705150197260,\
+1.6307932268341887027674,0.2817501160466636123125,1.1112757110437740948328,\
+0.5522896416607726566284,0.4576577492819154380221,0.2776152512958051654657,\
+0.3688774179340663095239,0.5619530154526948262372,1.456843068428832488337,\
+0.4341522763440999188589,0.3448128596551297553319,2.347849472141609439291,\
+1.5382692112870990364115,1.7025263838493789325668,4.9406190246302923441135,\
+2.0776466024256405873416,1.5575716893750450875444,1.0087445030337489626504,\
+0.43690033557496926742,0.3678723018579735937195,0.4390656952911728971856,\
+0.3626230889407328072949,2.489558777574301107194,0.6800896814511222521205,\
+0.7711910177313587855252,0.9202277281636028760659,5.4462843442294808227189,\
+1.2749912121263455855313,6.5231035807982653551562,1.219467910454189230052,\
+0.4907105362925133218432,1.2845770436515608903250,6.3044747124787887671005,\
+0.4391975714691279120139,1.9679429600133448996502,0.6083029443616727593991,\
+1.054200971008417697661,2.5594445384876851612432,0.8914570880611734082777,\
+1.0668533032547884431551,1.4521642234675371518904,6.3288547811978252966014,\
+0.5834158405874197983465,2.5815562199289581180039,1.0150677236735847763782,\
+1.4179978313495280595191,1.9703515051800046808950,0.3451379368940441505487,\
+0.9986808192461388289374,1.7009165158858785549256,0.5248339165868535216575,\
+2.120832897097891578397,0.5314727626805419991030,0.1689200974890469886258,\
+0.3792597252702665788782,1.0602713198612101486162,0.6587130565620143984873,\
+2.9066530672450663352890,0.8951238652136722651065,2.6467337728218058856555,\
+0.2085413590449486931355,4.5187682330848559786318,4.4707365550132545095607,\
+1.0804054865026515575011,2.2926132972391299880144,0.3691099459169989716045,\
+0.5957181306287809841038,1.5550306685748274126979,0.4174096039635283306168,\
+0.9656255613686579586386,2.5281495201925832105871,1.5710534099579722688844,\
+0.3692833545913285497875,0.6212319441335979464114,1.314631699051673319190,\
+0.4196347266560193634000,0.5588297032433613420466,2.810868359578304609414,\
+3.921236098173682904644,2.076108123684798468,0.1023302265504790059536,\
+0.6916477537748028092679,0.2926321380214171319345,0.2533474941164985949626,\
+1.5414702508327886576467,0.0790838201409621577298,0.5237745054427331847791,\
+1.4517472697479263388232,0.3008309638501235339092,0.6623077968618373834175,\
+0.8332380633061603480982,0.4930717885873925898643,0.9291747556935816554358,\
+1.6253298553258777037200,0.2051642515979318348585,0.0715299280520010488660,\
+0.8343697186187617464981,2.2607945137747993413768,0.6792889117422631350962,\
+1.521757666329790259496,0.5461585538073224777023,2.1511277850444776582606,\
+2.0410498879452951825897,1.1445223776283628414063,2.5629237613167004106174,\
+0.1111023997465931806294,0.141979915628105440861,0.2857676680597394103245,\
+1.470948482105968180278,16.13100161483945527152,0.6361045134063019190762,\
+4.882082463582880116348,0.4123985215384664559934,3.9758872105147431419425,\
+0.7169823228043985530,0.7922854429887553617817,0.4557025166581872288596,\
+0.4819689641868314944340,0.7548728096296193346149,0.5727457220779371693808,\
+0.5764306720519700721894,4.61674832039780813631,0.5653721791738470781041,\
+0.2543000889430159783267,1.2003910225327127925254,1.1970193970806983774224,\
+1.5567325245923557819339,0.4058509918676029837314,0.2282606431186239848152,\
+1.5095688084830436448414,0.681698311719268423836,0.1775294522772180583203,\
+2.606857448284196188126,0.6512213336764225424247,0.279843904757457517807,\
+2.1242225714533806701922,1.5992647932168715385615,0.2450051627087996841681,\
+1.5995300330564117263776,0.6119693104596294341846,2.706192970479794457361,\
+3.1613885606985867582353,0.8973913670061375302822,1.6252431999544321161721,\
+17.171468681707562353722,0.7767182044255251938125,0.1161789005908738792172,\
+0.8436591610241814809257,0.2740938017114021296727,1.4193291609241254214169,\
+1.129114336496770620855,0.9906858796267230538035,0.4315037514894317638436,\
+0.7626597763715156075293,8.4142221179071938763627,1.2122736276966128432520,\
+0.3693927220385589405005,1.6535190604459728547226,8.350894611450568660871,\
+1.0465127237901119539032,2.5845584134924157737601,2.579809559192972390207,\
+12.452681823131790395109,2.0067707887308077197019,2.9383355238494659467108,\
+0.0812796509085991214505,1.5662008789775083705820,0.6542970055839620879823,\
+0.8749821466412209813868,0.8977403119208263726492,1.2620652448583575822028,\
+2.547682887735915890914,1.6880507842731462542218,0.9361072134619135010070,\
+0.5518321800737933102710,2.4123433907357978434050,4.132803541818598880297,\
+4.0921803308889375117019,2.0066283869219931901284,2.4831200911745119341845,\
+0.6950588413666404230540,0.5364644180251368910106,0.4295084762729607374965,\
+0.3915299831612857883734,0.5741474990346947526731,0.5568312884718313870991,\
+3.546698706809571000065,1.7998659059051445030519,0.2790139835869558937453,\
+2.094354315836046254162,1.3542071959523713786666,0.6703136760416763539894,\
+1.916054484944200275720,6.3326360988263932227937}
+
+#define ZSOURCER {0.4962097263673624913949,0.8910778018246798826141,0.0947801220713381104011,\
+-0.4603936178711778848260,-1.0252845699539288037982,-0.98492140788616533431,\
+0.6666841978684399094846,-0.8284280082188715255143,-0.8087801325930177309687,\
+0.4980076621960153326896,0.7628920854029445086653,2.8126683658021311984498,\
+1.691339266824742670892,-0.658296432197564951316,-0.8165943259043131341457,\
+-0.153838313722479663737,1.0488069232465311308999,0.8083896014295570697783,\
+-2.5696290069516263265825,-0.1755006665720788838758,-0.4111892069294727503070,\
+0.4347439848326261624401,0.2238731702156319669506,0.1031628567688149950010,\
+-0.8488244709313933489270,-1.4082269940133023133910,-0.5694039300480933096793,\
+0.6847821865673663355167,-0.2355866905280663559097,0.126244929305970754463,\
+-0.7524531768104696372035,1.547744870456928323321,1.9472508676223883039569,\
+0.4418443111187473348878,-1.2649638329504953038196,-1.8396310805312170444381,\
+-1.8200055182230749917238,-0.2830037881038854896687,1.0167783703917296911357,\
+-1.3736934824588333814432,-1.6523791477656657455952,2.0750211192468381860010,\
+-2.2299199681252757088146,0.0617102387651526432255,-0.1883752530215108134115,\
+0.2017498149536396945258,-0.3785108864619266544338,1.4258759859183376406122,\
+-0.2179348061181922979745,0.1732283900046150681984,0.1667406411484310679860,\
+-0.6517590587731293405582,0.2359187276296556834421,0.2867271206877638478616,\
+0.0606400241806124770672,-0.0258227029380159664451,0.0208448589487377940188,\
+-0.1006137675958410082622,0.6887664099542869511339,0.1558887949250353788244,\
+0.8324928725743804269754,-0.3151516259195137337201,-0.3438938576674008262835,\
+0.0533533125037666533519,1.410105419112359426137,-0.72771444778030081046,\
+-0.0273112350183467821052,-0.1234715201495915903873,1.6876811670344133986532,\
+1.7843408966113634139816,0.4553194681918236175200,-2.482440448619641859551,\
+-0.5647234157267987386675,0.4002741476630126693514,2.0575413657607160011764,\
+0.9910894257133318063779,-0.8534666223545112062610,1.0313921190741603961527,\
+-0.5817813998765138938651,0.6420267245927361310365,-0.9597162563373448085358,\
+0.1578963713606084673380,-0.3170234887209238405781,1.1563426252866808585651,\
+-1.9325017123145520336891,0.6854693920869295853393,-0.5604369008834102494632,\
+-2.2658178544445064517276,-0.3315993869783789849137,-0.3992162906900829644208,\
+-1.538475385459755262474,0.7929279218821023711428,0.4799096678735629839530,\
+0.3842559929950347674676,-0.2870732232583454446306,-0.5902902430980193626553,\
+-0.7496420812260378152558,-0.5047035567506975572982,0.2586980379965187482050,\
+1.5714132313006403673938,-1.0578766388700049372318,0.7485548459128271714391,\
+-1.3801279040397811392893,0.4597603556312274686313,1.6137862227144141868962,\
+-1.2277987398411676078780,0.2068847811693011184975,-0.2479337336106740286024,\
+-0.3541997324021416981843,0.1707344260894599619061,-1.1381496515511626554940,\
+-0.8140025532586576684224,0.0735093571009233642810,0.3035280587071761959628,\
+-0.2782846453257922791913,1.6871692459980407452491,-1.323166422518824214549,\
+-0.0753800807237546693917,-0.4003058770927516718530,0.4033101968714281615469,\
+0.1113491527432870636938,-0.8349617120636146916368,-0.6907116891918870793532,\
+-0.0170584241359153961082,0.8194033291997417922659,0.1556399708519044799981,\
+0.1516310573630105518195,0.7495489249293494360415,0.1716685606331417590642,\
+0.4519531238973814590842,0.9288803038597209793537,-2.3544674327002401703623,\
+-0.4112942143200571387673,-1.3097240599804396143924,-0.6114852145918039383332,\
+-0.8710601639646612381895,0.3633484479767548624984,-0.3041452834723618048329,\
+-1.3937055405477738467823,-0.5975281694506322516247,-0.6997444046104884796122,\
+-0.3196851144737095085091,1.09857442199734944843,-1.77236020622582612916,\
+-0.0885003512087364219152,1.3820373060805490883496,-0.3478356988431264840145,\
+-1.5917082966936921817336,-1.2805101534361520432270,0.2630673092127150392017,\
+0.3354398592128065015316,0.3056832398609472534190,-0.3465598133034439864986,\
+-0.0149898968435104897046,-0.8499089854435717406034,1.1188306614388350279654,\
+-0.6366826455916885230124,0.7478712286232889194793,-1.1407898077101095157815,\
+1.7416298413146675816421,-0.6492757257758221545174,0.9050061520410521698210,\
+-0.7214302149042788325772,0.1880549880800692907901,-0.6074290437972867939820,\
+-0.3926402375420063872724,-2.1738375226761288416810,-0.3077758151743882342188,\
+-1.4339354091797107404460,0.5131602976051053977002,0.0609103217068958785463,\
+-0.0915059705228822850565,0.2851713506321221225370,0.3850345796175008161732,\
+0.5344891195679912776484,-0.3352957511414503266600,0.5011675332336322785665,\
+0.9817842562968046582483,0.3201410638941641906285,2.908782756663177426759,\
+-0.8167435983319983883177,-0.6395703111646185989869,0.4768832439562080693918,\
+-2.3940570181394389415175,1.181268742272832517060,0.7860988797801938821053,\
+0.2080213710796271764369,-0.0657191135894376471382,2.2596861347367309669210,\
+0.7576187360739459197845,0.0816850726713814895286,0.713209526903904489359,\
+1.0221713946590338384368,-1.3357158672812421418286,-1.3632163488573514342761,\
+-0.1933486222136764076662,0.1054205318382937656141,0.8628332102807707570946,\
+0.6890069943729065782279,-0.1425645528482178403529}
+
+#define ZSOURCEI {0.4187679309893236334617,0.9571040727588696617190,1.172760842677368797737,\
+0.8367787345559263290085,0.0537934646406551114639,-0.3937773223205939254754,\
+1.7876375988580777143255,-0.5864530819794440130721,-0.9799596671663597380331,\
+-1.435491321041636902933,-0.7958478780018579668010,0.5425829186077295585022,\
+-0.6690160051984340716658,0.4469912205186009623858,-0.2043520888417388603475,\
+-0.4718547031305261874046,1.2345904036110504353729,0.2305518055397126619965,\
+1.0780366202665678798667,0.4904320988250001067676,-0.2652022209879114633679,\
+-0.9976659763947106629445,-1.349099117857334384496,-0.4904839979026296425957,\
+0.5445911400019642911730,1.5676016792969027502380,0.9705535858979048580153,\
+1.562322752104617240576,0.9312705713450669664510,-1.491064034017491879425,\
+0.5387480326121706353248,0.2780267771815282396020,-0.6792511192992195523388,\
+-1.7001946270260519522566,1.1064967394734230854425,0.6449691334115315033415,\
+1.010191395265231717460,0.7617257042808376343856,0.7130320908537892687917,\
+1.3873980946032253847022,1.0464400502880701893105,0.7743318486747019502303,\
+-1.0385544825558827852774,0.2570923151837984921286,-0.8100639413180467096609,\
+0.9637587964856539901604,1.5615765140914361630564,0.5804915960065005764434,\
+-0.2022297555607953933876,0.6091855774356720321094,-0.5513582447276994535912,\
+-0.4240953703415643594177,-0.8690915476323599619946,-1.0352497689734347918744,\
+0.3275700398280019243202,-0.7970043301223290743707,0.2341992112983941609627,\
+-0.2288430429610794625273,1.213479264737873375424,0.9031823906644896871043,\
+1.4754958638303785622981,1.6520423035243945175665,0.8178319166692843422695,\
+-0.4286042039456253727181,0.4413804125451418203241,-0.8566414495458910538517,\
+-1.3669367412247732662678,2.0376720143917643746079,-1.8253356531263227324757,\
+1.5266365006585700392350,0.1161871811298216261576,-0.6659495480394291844206,\
+-0.5450277852280467349999,1.2558648076421243811041,-0.7854748651398538727975,\
+-2.1498185127975446562232,-1.4516576281976432127863,0.4432114256783392658434,\
+-0.0042605582120147401926,-0.0805101613497762047533,-1.1324416682104487819061,\
+0.1150256099470636506066,1.3050405907321147580546,-1.0622634828383090699333,\
+-1.35922814179336781670,-1.703726701643710983447,-0.282327674589286536921,\
+1.4699227361546476355869,1.2714945342939698580409,0.8438338325656443705824,\
+1.6086130230417976516577,-0.8654237444216958952126,-2.1306341506077157710308,\
+0.4262366479533865049056,1.2202306126621282889033,-0.4781944951046422920271,\
+2.2327961471769124379705,0.6988675202840052280706,-1.1016041402782228431079,\
+-0.0366155088206388534822,0.9663901570211483882389,-0.3288372819689815984567,\
+1.8550047995758884855633,-0.9247532047817873523954,-1.1547662665953339899971,\
+1.4270134659704167834349,-0.2267973730507581442417,1.4593991828148868972193,\
+-0.8205572609516469384516,-0.3297213070039397009303,-0.5787995844520394950194,\
+1.8452573890170231862840,-0.5998455574460443973095,0.5461062118050383773493,\
+0.3989213456307151295377,0.6223400150931739371885,-0.661605777551548035476,\
+-0.806522789665139905324,-0.2812497112451433634028,-0.4100128914055168882768,\
+-1.50945722493549672194,0.4603669785905236677692,-0.4126050173509914209546,\
+1.6611257451475334168123,-0.8697907951355576816610,0.6696537851786207307114,\
+-0.5134482200325719558620,0.1007092240430608326429,1.2778361566544564897896,\
+1.2322028231309287704676,0.2307590408528507608388,1.5263506644977615778203,\
+-0.8569947230359247214437,1.1048772379802629384216,-0.2109985124170330184068,\
+-0.0551453334787995949617,0.1230778288705814127457,-1.423405390861443020611,\
+-0.394586285353004440069,-0.2879823286948200999902,0.1062021177580684955233,\
+-0.6907035832345697068391,0.3653158847737960068791,0.9338855454474609407711,\
+-0.4120224826154939568035,-0.1450379965292624417916,-0.9040960399672915981384,\
+-0.3390386771829260181832,1.625054083669380089461,0.4716305826679590418316,\
+0.6165901874856758446697,0.4270688825812783973035,-0.8343519087812022450024,\
+-0.5142102680242138790234,-0.3269678763130224319333,-0.4453255190855087697344,\
+-1.2280852212014194968503,0.0988020658802584578195,0.7533305302295955074854,\
+0.1183515262592216288340,0.4361801271894044096378,-1.203233821600386388440,\
+0.6270203182178656353685,-0.2147899120281239748742,-1.6199408065241285293,\
+-0.3813310069938283253244,-0.952339709740829487572,-1.3753328967678597472002,\
+0.1397812751994848834425,1.043902134788026403456,1.1627380196617531638026,\
+-1.0121704799221244996943,1.0517816399459063436694,0.0479426304050067017548,\
+-1.9256009187313227748461,0.0702119825151238802219,-1.5960860779727858993482,\
+0.3892567541356096727512,-0.3405739777798729162051,-2.3927967690864724303879,\
+1.4571677327957668346414,1.7033833498531005812282,1.4103109856750082329313,\
+0.8887233594164675176685,1.085007779468186495109,-0.1517851031708108977547,\
+-1.4279908879739833249545,0.8317119599758505676945,-0.100625285489182120235,\
+-0.0641469431098572184791,0.9441650291895723468016,1.7557389523285045207501,\
+-1.4553402741895795635685,0.8280178925672729839391,0.3768033744738639723160,\
+0.769460862052703697955,1.7363387952951863102413,0.2883880023549790228010,\
+0.1937130526956079012990,0.7931867418127547253448}
+
+#define ZRESULTR {1.5005579968888511643854,1.4038788522636540534450,0.4261430281005708642361,\
+0.4227040163485943913280,0.3581755188101993225835,0.3448856718113299524298,\
+-0.4190544272790215352131,0.3637606739341552875011,0.2481133547640819725366,\
+0.221957537083997319405,1.5004406253943489701896,14.262372555443052490887,\
+4.2569132214783609313713,0.4668662514373775884735,0.4327387090783468837074,\
+0.7637186245018753316671,0.9416373255706453893055,2.1849079400266222528160,\
+0.0362192687509753849517,0.7401390786280732658753,0.6396875438787329448687,\
+0.8375646978007738052696,0.2750576263630330475785,0.9779650400990845815485,\
+0.3660147454727735727431,0.0007813344853740371429,0.3196234331185683896770,\
+0.0168057767355581332003,0.4715477957119850183076,0.0903652551480593341227,\
+0.4044631913155857239062,4.5203389894684722349893,5.4536105990647092411905,\
+-0.2007273149144214174910,0.1263903817022170861240,0.1269607449461356840636,\
+0.0861483947375209779818,0.5452795580354135029921,2.0908477302753070148356,\
+0.0461711120003356623176,0.0959224290498517928594,5.6938820505915233027849,\
+0.0545714270555244795879,1.0286954018234739649529,0.5710758281447196882397,\
+0.6979532622664902374865,0.0063143806135506170760,3.4798191533417077714319,\
+0.7877896535828416979541,0.9752288031986856564615,1.0063735441532775105600,\
+0.4749622284565679919410,0.8172752232835529540012,0.6797654131732457916115,\
+1.0060191413953609718135,0.6810372893714221609329,0.9931890911476703998062,\
+0.8807071418681532426476,0.6964662788868779541573,0.7235561661943166189559,\
+0.2187683453764143193254,-0.0592182210929489902251,0.4848204523909904195555,\
+0.9593919417277750882889,3.7038010572869821679376,0.3163625232453476932015,\
+0.1969961410854516870028,-0.3978181614570159285726,-1.361462433143773242961,\
+0.2629151417766518727959,1.5660468223975476664833,0.0656893454691978989635,\
+0.4861465273206775350445,0.4622214272783724542393,5.5338903531227128240744,\
+-1.474264258662732141048,0.0506254763419271280878,2.5339495141019958701634,\
+0.5588967788586440832432,1.8941728912398605455536,0.1625651067402884841773,\
+1.1633063892460699940,0.191283239298288054719,1.547496475194143350507,\
+0.0304040029736053936393,-0.2630510364909662279764,0.5483550218772245132826,\
+0.0104474069781232917903,0.2116381376777875800155,0.4458460510519014485808,\
+-0.0081176195921236100894,1.4326892345597483924280,-0.8581368290819433308769,\
+1.3371299915531948965253,0.2577287469128092811665,0.4920040313161565537214,\
+-0.2904655234170689381834,0.462163508824150970344,0.5856645720520745612703,\
+4.81021957957627943614,0.1973001680885165531887,2.0006745533290084537725,\
+-0.0705330419570823624609,0.9534341938168940933096,2.0294673010324730810794,\
+0.0419743009154483204259,1.198346516707147646486,0.0867559391436964755240,\
+0.4784523700257174994022,1.1222795076752876131110,0.2682227152927741387067,\
+-0.1200874658138830208820,0.8883849124062789259781,1.1576031776174615650632,\
+0.6976356512079191496412,4.3909706615004120422441,0.2101052025810229428870,\
+0.6417663596495127853458,0.6437857682896207522916,1.3727122635941697570416,\
+0.0685209480693795836004,0.3887184828749501441791,0.4591565751761637059758,\
+-0.0886808967743262233085,1.4635680657432861284661,0.9160726657458563293446,\
+1.0136746786541579457008,2.1053235388732902677589,0.3428728910762353088160,\
+0.5219502401364545240980,2.4645660104152655733856,0.0042184623117796499203,\
+0.4339378404381282194890,0.1212485246955130047120,0.5305120745426482598006,\
+0.4178714460322863755160,1.42725807301201368382,0.1083449257198766668697,\
+0.2290848259097614525448,0.5275132726780440428627,0.4939136954488312358791,\
+0.5598904753492991437369,2.8019267774958218630843,0.1010607343958155046604,\
+0.838703631682240602,3.9411880425167020725041,0.4367206268973685134860,\
+0.1919888550719570374792,-0.0150705892655913463452,1.1588916915452081024540,\
+1.1410183495054209146247,1.2356219575708369262657,0.4749404480211336654349,\
+0.8577273295080861670314,0.4048075578221899673004,2.7627080603314042583918,\
+0.1777810656017677348739,2.1021956426305754561668,0.2330964886175431460824,\
+5.66671671967639412060,0.4735105506685184928450,0.8882739731815125772130,\
+0.3935986079583607688548,1.1791667609118299253623,-0.0267606605538480354922,\
+0.6267669571981022702545,0.0659441611256419563114,0.1427681092204574897497,\
+0.2360440610261224370081,0.8400442654362825223302,0.4217500256271256020568,\
+0.4836741737176751265714,0.659708006511050548681,1.4679764549267637629981,\
+-0.5928767353529774686294,0.7133645918582519618312,-0.0417400106828591799246,\
+2.46953429512858368966,1.2982129272812710230056,-13.430164449559464756589,\
+0.0501008887550637785346,-0.0697374371031275891442,0.2574407425697148865673,\
+0.0575298048786480678563,1.5214153238495213837922,2.1695830700438989424583,\
+0.1752306830704533635590,0.6307656294349494041640,9.5316214402790411241995,\
+2.1288031244453153867369,0.6363319322612546180551,-0.3752333236632875990146,\
+0.3201657030914684676226,0.1778562682310512732542,0.2378885254191149545289,\
+0.5920073359495072740089,-0.1831081087669608753465,2.2719985676152019138385,\
+1.9544837479586136819165,0.6083604660209539494176}
+
+#define ZRESULTI {0.66789173388469347259,1.9929317082415038964172,1.0134693185160317252524,\
+0.4685368189063157107199,0.0192861086704356442245,-0.1432921900711904839021,\
+1.9021551721948490865088,-0.2416937871379007396477,-0.3698944066530311935992,\
+-1.630400797414071512037,-1.53213128993891678498,8.5994415909131678432686,\
+-3.3657446415150640284253,0.2237921440211748103088,-0.0896829281433757230513,\
+-0.3897266612271670926937,2.6944436446476398572258,0.5128535974480390446928,\
+0.0674551867661900700357,0.3951923071518532726287,-0.1737389326052603821804,\
+-1.2977574398167355251843,-1.220297105474789312041,-0.5222431149169146635813,\
+0.2216906290760837783260,0.2445752865761168237668,0.4669490113374816231406,\
+1.983268587510182312528,0.6339653057626817300729,-1.1309555970451541373478,\
+0.2417594109687444814405,1.2901913158229225686568,-4.40337349863430294050,\
+-1.5425684980543696855904,0.2523692809573465090089,0.0955121010048793767089,\
+0.1372242993017437351355,0.5200557398879992465623,1.8081956965026793060503,\
+0.2489243937541025242233,0.1658522561714183829462,5.5692357559437404290748,\
+-0.0926616074754614826858,0.2704548071084568183764,-0.5999663537818090697229,\
+1.0049457307841926922976,0.6848514061793418150614,2.2823134654584236180597,\
+-0.1615224571979621548401,0.6804242491001384340876,-0.6188951521875099004433,\
+-0.2144424405243884335093,-0.9669529580119747835809,-1.1455586484969144667190,\
+0.3418574459217512129250,-0.6970321107785095726683,0.2369522455719338394076,\
+-0.2051372202341115724700,1.8654869710971573315561,0.9177784888023613474317,\
+2.2886105642667078363672,0.7272712824943110554443,0.5173355346085974915127,\
+-0.4383775740596613790245,1.7499274197824987719940,-0.3649863488832993385635,\
+-0.9529087376623858185454,0.7892565481221736067852,-5.2327138940157267299469,\
+5.9498471753939741191175,0.1827777741034706804335,-0.0516109653428112533091,\
+-0.2947431961312417803001,1.4188420873857061632606,-5.534739336307598733811,\
+-2.255013513539458447354,-0.4229165121855131270756,1.2028903349471207206989,\
+-0.0023812266691438442427,-0.1528305178806574626815,-0.3467892290786088183019,\
+0.1344033089941876202289,0.7027456808048029301972,-2.7761066302583010667604,\
+-0.1415572225289876973076,-1.9671936933888867216069,-0.1590647203810587884121,\
+0.1032177704018006486608,0.6858644064375456483873,0.5012535303694961585919,\
+0.2145546901849673948615,-1.6825191334017586264338,-1.3692428047734856999540,\
+0.6071558835309880386433,0.7048129294793062937785,-0.2550146122571063656004,\
+0.3727193608915256306524,0.388381095349859650767,-1.1552707405821953656755,\
+-0.1762073913025017923850,0.2856835610783352019659,-0.6826826797070948416035,\
+0.2414553165222597663764,-1.2645359787455874300832,-4.5934329346040874142432,\
+0.2899138963758796094794,-0.2765396421605960108892,0.7755744714874250878012,\
+-0.5133371708548779555059,-0.3840592062347947810430,-0.1752712350242682792789,\
+0.4264971552447213154480,-0.6075754177972138014852,0.7035454748522144141631,\
+0.2940690048846716919684,3.1502912129208726632612,-0.1636049555981854697340,\
+-0.66946985566275640789,-0.1859947683471395718513,-0.5966446238894932418972,\
+-1.1156829506070020663344,0.1927677941084386115111,-0.2009874518146967659060,\
+0.9790782744873792742268,-1.7340674208694739633074,0.7252463079270474732851,\
+-0.5716056662861231929540,0.2127452321317529204681,1.1366978856910239237266,\
+1.4821597980401888250412,0.5790353877850622499324,0.0948502955617512716335,\
+-0.5009900731541635510169,0.2411262068342296116530,-0.1136285464587050847429,\
+-0.0230670473414846290139,0.1765562266540864622133,-0.7297546590556842627251,\
+-0.0953969444497970303631,-0.1562582727501122537017,0.0526527844386815990774,\
+-0.4627604755682861448207,1.0716924742142539539458,0.1366141387590569244992,\
+-0.3665452417574971422098,-0.5756642515297435425126,-0.5549906098825418965248,\
+-0.0677059511108183409434,0.2774865464288255867409,0.5910566892682205253351,\
+0.8087239218207783464365,0.5623045509398011398972,-0.5238753172271245484026,\
+-0.4845296390188432167356,-0.1372866414817625335676,-1.3186482320231969200819,\
+-0.4982790611331439079024,0.2083797712931309276119,0.2186064764396851156647,\
+0.6738135687471651369407,0.2207138713569412324933,-2.3068359206298949537484,\
+0.2851861631055106482968,-0.2572412622481385358064,-0.5440918958783450554151,\
+-0.2513065277256731899769,-0.0926726651078676189055,-0.7210825269104839119194,\
+0.0332111240217310629830,1.4439889712068714189286,0.9755400591442719981927,\
+-0.7738329957764321642699,1.1548413262354173536295,0.0704326239228644929158,\
+-1.6002810307194081929083,0.0501692094503282184914,-1.6501195063537017482247,\
+1.012969261434880197115,-0.4600643435261628222399,-12.481321255158581706723,\
+0.4390187012381037146014,0.5228891202405995253244,1.5903431490098800527022,\
+0.0708411654197008272549,2.8815196278940593543894,-0.3318628781486120393751,\
+-1.218706228014425851924,0.6920752550579561956923,-0.9623724741584287478702,\
+-0.1367438235977035676516,0.8789505770880949864221,2.005732337058288017317,\
+-2.760719914038102906773,0.1937015573007111746140,0.0941350707005644549152,\
+0.5734318083679456057311,1.095987006643926342520,0.6740067391703287169591,\
+0.3834169282796987543449,0.6179115751021659885822}
+
+
+
+
+void dexpsTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dexps(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+
+ assert(( (fabs(exp(3)-20.085536923187671476398))/(exp(3)) )<3e-16);
+
+}
+
+void zexpsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zexps(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dexpaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dexpa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+}
+
+void zexpaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in[200],out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=DoubleComplex(inR[i],inI[i]);
+ }
+ zexpa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+int testExp(void) {
+ printf("\n>>>> Double Hyperbolic Cosine Tests\n");
+ dexpsTest();
+ zexpsTest();
+ dexpaTest();
+ zexpaTest();
+ return 0;
+}
+
+int main(void) {
+ assert( testExp() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/testExp.h b/2.3-1/src/c/elementaryFunctions/exp/testExp.h
new file mode 100644
index 00000000..6f0a879f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/testExp.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTEXP_H_
+#define _TESTEXP_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "exp.h"
+#include "constant.h"
+
+
+void sexpsTest(void);
+
+void dexpsTest(void);
+
+void cexpsTest(void);
+
+void zexpsTest(void);
+
+void sexpaTest(void);
+
+void dexpaTest(void);
+
+void cexpaTest(void);
+
+void zexpaTest(void);
+
+int testExp(void);
+
+#endif /* ! _TESTEXP_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/exp/testFloatExp.c b/2.3-1/src/c/elementaryFunctions/exp/testFloatExp.c
new file mode 100644
index 00000000..f1099d4c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/testFloatExp.c
@@ -0,0 +1,514 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testExp.h"
+
+#define SOURCE {0.2179693998688542744269f,-0.0965447246339290049422f,0.7336822469173450711466f,\
+0.1536179219946321450330f,2.4661907147341337598334f,0.6332832861607330388054f,\
+0.4890665386763063948727f,-1.2667347141842044688786f,0.1055086446255857485221f,\
+-0.5936826571652784600985f,-0.7816336465253074239357f,-1.2815191120322371176599f,\
+-0.9972908908531801230879f,-0.5763370349806613557320f,0.3762718127153176217448f,\
+-0.8343599392689131644119f,-1.0647534449045219506758f,0.8534997909421322415113f,\
+0.4306578956143343739349f,0.5321132560429659985601f,1.5974906319789743402993f,\
+0.7312358120089610391545f,0.4431279991113933891533f,0.0087064913021668820237f,\
+-0.8280501749431711244753f,-1.0000194068543815095751f,-0.8231062295149559338014f,\
+-1.014391306624823796412f,0.9121054970139131912177f,-0.3855306050210344781526f,\
+-0.2598191828862038144088f,-0.0831341089570867414205f,1.6949336044621277075350f,\
+0.2429392861367114797577f,1.8753502720069497033961f,0.1984146246369250243813f,\
+-0.7119008641532499348514f,0.2504295152565002013922f,1.8412596530958635909769f,\
+-0.8228059182439799723596f,0.6769888144769687920999f,-0.4970822573553836942750f,\
+0.0527831065241245664388f,0.9397902577952749192391f,-0.1148979773734264131502f,\
+0.0647134776331551031525f,0.3730550115687696344224f,1.8451193005461747898011f,\
+-0.5388550697275177325807f,0.9483924031089353556823f,0.0149553330989996690475f,\
+0.3492458987360779198994f,0.6782119558587149654727f,-1.0638111247721440122405f,\
+-0.0013200516387791912543f,0.5311672327771198576229f,-0.6446734157979014945283f,\
+0.7518088875179287366990f,-0.6321033286458267452801f,-1.7783294717850963717609f,\
+-0.9695340176537615706209f,0.0585248375044749719054f,-0.4174672618194515405499f,\
+1.067002270541741681953f,-0.1107931733964626630495f,0.9733263412399585368107f,\
+-1.5676178926909869471018f,1.5082394419009976793689f,1.4975531724590585014312f,\
+0.0773364211376570409584f,0.8296923447513622207339f,-0.9966607229071756668404f,\
+-0.5179876589725144198084f,0.4414952679928694223577f,-0.8736872755871413209761f,\
+-0.0349791375435402618344f,0.9274876201813765375093f,0.4517463561226834900530f,\
+-0.9961910310034214344199f,-0.4760507657625145383484f,0.2735565496341169633432f,\
+-0.8683706445498747816814f,-0.5819104976015757602070f,1.0334934603683001430596f,\
+1.3664069352627037368109f,0.7304950466471921144418f,-2.2795501799654798169570f,\
+-0.3686784792993444970222f,-1.2288389604009317679356f,-1.372993238103811464157f,\
+0.4327366693143714915237f,-2.5372469745505505933636f,-0.6466940204055214858059f,\
+0.3727678446055545102844f,-1.2012067538727111415398f,-0.4120248811585083825726f,\
+-0.1824358873620524901238f,-0.7071004997444696460462f,-0.0734584462405756949410f,\
+0.4857107830752938615326f,-1.5839443933479926407415f,-2.6376393427060378371607f,\
+-0.1810786671588598961691f,0.8157163062709066325695f,-0.3867087459826359374659f,\
+0.4198660262170845203222f,-0.6048459538042058047935f,0.7659922557941690746119f,\
+0.7134643264223192726803f,0.1349874125377001632398f,0.9411487010623025284417f,\
+-2.1973029826905001726800f,-1.9520696706230427075468f,-1.2525761477383645647876f,\
+0.3859074186443228193788f,2.7807429866034785170825f,-0.4523923998873963236989f,\
+1.585571863180605944876f,-0.8857651118640259557679f,1.3802479208151854361830f,\
+-0.3327040930736118173883f,-0.2328335442849216174732f,-0.7859150581069940244561f,\
+-0.7298755566585160003967f,-0.2812060079915064125800f,-0.5573134267677620767856f,\
+-0.5509002031358800621774f,1.5296906305375963519566f,-0.5702710404977533453774f,\
+-1.3692402567978680938410f,0.1826473558262797503016f,0.1798346311903204763905f,\
+0.4425890891364235302241f,-0.9017692018513575602512f,-1.4772671313778520385540f,\
+0.4118240527515873439235f,-0.3831680771908100302525f,-1.7286187555088927680913f,\
+0.9581454530897092203290f,-0.4289057042708049327651f,-1.2735233142733974887051f,\
+0.7534058867095866363073f,0.4695440194018555835065f,-1.4064759963786124252749f,\
+0.4697098567590811124539f,-0.4910731440349740406504f,0.9955428392828012951199f,\
+1.1510113490256201895789f,-0.1082632054930593029640f,0.4856574660939540488691f,\
+2.8432492089162182402617f,-0.2526776656626389394589f,-2.1526240294434693112180f,\
+-0.1700067035996372932782f,-1.2942848891673066624719f,0.3501843381023743151381f,\
+0.1214335524018897854992f,-0.0093577680302103644072f,-0.8404790744305570271422f,\
+-0.2709432496692772418534f,2.129923383430207373124f,0.1924976275921922719281f,\
+-0.9958949135265199315015f,0.5029057807067898178133f,2.1223686722196575260568f,\
+0.0454634212534271303641f,0.9495546668659169409210f,0.9477155819428292327089f,\
+2.5219360071943213164047f,0.6965268573783115479969f,1.0778432726775772909633f,\
+-2.5098595900849196560500f,0.4486528645511871360441f,-0.4241938936353907840804f,\
+-0.1335517966712884141423f,-0.1078744374453666915459f,0.2327494623534509532448f,\
+0.9351842746020352370451f,0.5235744811910800766697f,-0.0660252647673259390748f,\
+-0.5945113005344258017004f,0.8805986363667026584068f,1.4189560003612493588321f,\
+1.409077916250558226707f,0.696455894185944335284f,0.90951587071067696577f,\
+-0.3637587731642325517001f,-0.6227550415243503501017f,-0.8451138025419450139353f,\
+-0.9376931811420606832641f,-0.5548689487135263220807f,-0.5854929781645817898905f,\
+1.2660172290794624583299f,0.5877121654077364087954f,-1.2764933780334013491142f,\
+0.7392453034050661120347f,0.3032161878585472591929f,-0.4000095029594706308451f,\
+0.6502681159628262985706f,1.845716594779029051665f}
+
+#define RESULT {1.2435490142739233920821f,0.9079692880976051316821f,2.0827356520772775105854f,\
+1.1660452814005672905751f,11.777497445956059962668f,1.8837854434705150197260f,\
+1.6307932268341887027674f,0.2817501160466636123125f,1.1112757110437740948328f,\
+0.5522896416607726566284f,0.4576577492819154380221f,0.2776152512958051654657f,\
+0.3688774179340663095239f,0.5619530154526948262372f,1.456843068428832488337f,\
+0.4341522763440999188589f,0.3448128596551297553319f,2.347849472141609439291f,\
+1.5382692112870990364115f,1.7025263838493789325668f,4.9406190246302923441135f,\
+2.0776466024256405873416f,1.5575716893750450875444f,1.0087445030337489626504f,\
+0.43690033557496926742f,0.3678723018579735937195f,0.4390656952911728971856f,\
+0.3626230889407328072949f,2.489558777574301107194f,0.6800896814511222521205f,\
+0.7711910177313587855252f,0.9202277281636028760659f,5.4462843442294808227189f,\
+1.2749912121263455855313f,6.5231035807982653551562f,1.219467910454189230052f,\
+0.4907105362925133218432f,1.2845770436515608903250f,6.3044747124787887671005f,\
+0.4391975714691279120139f,1.9679429600133448996502f,0.6083029443616727593991f,\
+1.054200971008417697661f,2.5594445384876851612432f,0.8914570880611734082777f,\
+1.0668533032547884431551f,1.4521642234675371518904f,6.3288547811978252966014f,\
+0.5834158405874197983465f,2.5815562199289581180039f,1.0150677236735847763782f,\
+1.4179978313495280595191f,1.9703515051800046808950f,0.3451379368940441505487f,\
+0.9986808192461388289374f,1.7009165158858785549256f,0.5248339165868535216575f,\
+2.120832897097891578397f,0.5314727626805419991030f,0.1689200974890469886258f,\
+0.3792597252702665788782f,1.0602713198612101486162f,0.6587130565620143984873f,\
+2.9066530672450663352890f,0.8951238652136722651065f,2.6467337728218058856555f,\
+0.2085413590449486931355f,4.5187682330848559786318f,4.4707365550132545095607f,\
+1.0804054865026515575011f,2.2926132972391299880144f,0.3691099459169989716045f,\
+0.5957181306287809841038f,1.5550306685748274126979f,0.4174096039635283306168f,\
+0.9656255613686579586386f,2.5281495201925832105871f,1.5710534099579722688844f,\
+0.3692833545913285497875f,0.6212319441335979464114f,1.314631699051673319190f,\
+0.4196347266560193634000f,0.5588297032433613420466f,2.810868359578304609414f,\
+3.921236098173682904644f,2.076108123684798468f,0.1023302265504790059536f,\
+0.6916477537748028092679f,0.2926321380214171319345f,0.2533474941164985949626f,\
+1.5414702508327886576467f,0.0790838201409621577298f,0.5237745054427331847791f,\
+1.4517472697479263388232f,0.3008309638501235339092f,0.6623077968618373834175f,\
+0.8332380633061603480982f,0.4930717885873925898643f,0.9291747556935816554358f,\
+1.6253298553258777037200f,0.2051642515979318348585f,0.0715299280520010488660f,\
+0.8343697186187617464981f,2.2607945137747993413768f,0.6792889117422631350962f,\
+1.521757666329790259496f,0.5461585538073224777023f,2.1511277850444776582606f,\
+2.0410498879452951825897f,1.1445223776283628414063f,2.5629237613167004106174f,\
+0.1111023997465931806294f,0.141979915628105440861f,0.2857676680597394103245f,\
+1.470948482105968180278f,16.13100161483945527152f,0.6361045134063019190762f,\
+4.882082463582880116348f,0.4123985215384664559934f,3.9758872105147431419425f,\
+0.7169823228043985530f,0.7922854429887553617817f,0.4557025166581872288596f,\
+0.4819689641868314944340f,0.7548728096296193346149f,0.5727457220779371693808f,\
+0.5764306720519700721894f,4.61674832039780813631f,0.5653721791738470781041f,\
+0.2543000889430159783267f,1.2003910225327127925254f,1.1970193970806983774224f,\
+1.5567325245923557819339f,0.4058509918676029837314f,0.2282606431186239848152f,\
+1.5095688084830436448414f,0.681698311719268423836f,0.1775294522772180583203f,\
+2.606857448284196188126f,0.6512213336764225424247f,0.279843904757457517807f,\
+2.1242225714533806701922f,1.5992647932168715385615f,0.2450051627087996841681f,\
+1.5995300330564117263776f,0.6119693104596294341846f,2.706192970479794457361f,\
+3.1613885606985867582353f,0.8973913670061375302822f,1.6252431999544321161721f,\
+17.171468681707562353722f,0.7767182044255251938125f,0.1161789005908738792172f,\
+0.8436591610241814809257f,0.2740938017114021296727f,1.4193291609241254214169f,\
+1.129114336496770620855f,0.9906858796267230538035f,0.4315037514894317638436f,\
+0.7626597763715156075293f,8.4142221179071938763627f,1.2122736276966128432520f,\
+0.3693927220385589405005f,1.6535190604459728547226f,8.350894611450568660871f,\
+1.0465127237901119539032f,2.5845584134924157737601f,2.579809559192972390207f,\
+12.452681823131790395109f,2.0067707887308077197019f,2.9383355238494659467108f,\
+0.0812796509085991214505f,1.5662008789775083705820f,0.6542970055839620879823f,\
+0.8749821466412209813868f,0.8977403119208263726492f,1.2620652448583575822028f,\
+2.547682887735915890914f,1.6880507842731462542218f,0.9361072134619135010070f,\
+0.5518321800737933102710f,2.4123433907357978434050f,4.132803541818598880297f,\
+4.0921803308889375117019f,2.0066283869219931901284f,2.4831200911745119341845f,\
+0.6950588413666404230540f,0.5364644180251368910106f,0.4295084762729607374965f,\
+0.3915299831612857883734f,0.5741474990346947526731f,0.5568312884718313870991f,\
+3.546698706809571000065f,1.7998659059051445030519f,0.2790139835869558937453f,\
+2.094354315836046254162f,1.3542071959523713786666f,0.6703136760416763539894f,\
+1.916054484944200275720f,6.3326360988263932227937f}
+
+#define CSOURCER {0.4962097263673624913949f,0.8910778018246798826141f,0.0947801220713381104011f,\
+-0.4603936178711778848260f,-1.0252845699539288037982f,-0.98492140788616533431f,\
+0.6666841978684399094846f,-0.8284280082188715255143f,-0.8087801325930177309687f,\
+0.4980076621960153326896f,0.7628920854029445086653f,2.8126683658021311984498f,\
+1.691339266824742670892f,-0.658296432197564951316f,-0.8165943259043131341457f,\
+-0.153838313722479663737f,1.0488069232465311308999f,0.8083896014295570697783f,\
+-2.5696290069516263265825f,-0.1755006665720788838758f,-0.4111892069294727503070f,\
+0.4347439848326261624401f,0.2238731702156319669506f,0.1031628567688149950010f,\
+-0.8488244709313933489270f,-1.4082269940133023133910f,-0.5694039300480933096793f,\
+0.6847821865673663355167f,-0.2355866905280663559097f,0.126244929305970754463f,\
+-0.7524531768104696372035f,1.547744870456928323321f,1.9472508676223883039569f,\
+0.4418443111187473348878f,-1.2649638329504953038196f,-1.8396310805312170444381f,\
+-1.8200055182230749917238f,-0.2830037881038854896687f,1.0167783703917296911357f,\
+-1.3736934824588333814432f,-1.6523791477656657455952f,2.0750211192468381860010f,\
+-2.2299199681252757088146f,0.0617102387651526432255f,-0.1883752530215108134115f,\
+0.2017498149536396945258f,-0.3785108864619266544338f,1.4258759859183376406122f,\
+-0.2179348061181922979745f,0.1732283900046150681984f,0.1667406411484310679860f,\
+-0.6517590587731293405582f,0.2359187276296556834421f,0.2867271206877638478616f,\
+0.0606400241806124770672f,-0.0258227029380159664451f,0.0208448589487377940188f,\
+-0.1006137675958410082622f,0.6887664099542869511339f,0.1558887949250353788244f,\
+0.8324928725743804269754f,-0.3151516259195137337201f,-0.3438938576674008262835f,\
+0.0533533125037666533519f,1.410105419112359426137f,-0.72771444778030081046f,\
+-0.0273112350183467821052f,-0.1234715201495915903873f,1.6876811670344133986532f,\
+1.7843408966113634139816f,0.4553194681918236175200f,-2.482440448619641859551f,\
+-0.5647234157267987386675f,0.4002741476630126693514f,2.0575413657607160011764f,\
+0.9910894257133318063779f,-0.8534666223545112062610f,1.0313921190741603961527f,\
+-0.5817813998765138938651f,0.6420267245927361310365f,-0.9597162563373448085358f,\
+0.1578963713606084673380f,-0.3170234887209238405781f,1.1563426252866808585651f,\
+-1.9325017123145520336891f,0.6854693920869295853393f,-0.5604369008834102494632f,\
+-2.2658178544445064517276f,-0.3315993869783789849137f,-0.3992162906900829644208f,\
+-1.538475385459755262474f,0.7929279218821023711428f,0.4799096678735629839530f,\
+0.3842559929950347674676f,-0.2870732232583454446306f,-0.5902902430980193626553f,\
+-0.7496420812260378152558f,-0.5047035567506975572982f,0.2586980379965187482050f,\
+1.5714132313006403673938f,-1.0578766388700049372318f,0.7485548459128271714391f,\
+-1.3801279040397811392893f,0.4597603556312274686313f,1.6137862227144141868962f,\
+-1.2277987398411676078780f,0.2068847811693011184975f,-0.2479337336106740286024f,\
+-0.3541997324021416981843f,0.1707344260894599619061f,-1.1381496515511626554940f,\
+-0.8140025532586576684224f,0.0735093571009233642810f,0.3035280587071761959628f,\
+-0.2782846453257922791913f,1.6871692459980407452491f,-1.323166422518824214549f,\
+-0.0753800807237546693917f,-0.4003058770927516718530f,0.4033101968714281615469f,\
+0.1113491527432870636938f,-0.8349617120636146916368f,-0.6907116891918870793532f,\
+-0.0170584241359153961082f,0.8194033291997417922659f,0.1556399708519044799981f,\
+0.1516310573630105518195f,0.7495489249293494360415f,0.1716685606331417590642f,\
+0.4519531238973814590842f,0.9288803038597209793537f,-2.3544674327002401703623f,\
+-0.4112942143200571387673f,-1.3097240599804396143924f,-0.6114852145918039383332f,\
+-0.8710601639646612381895f,0.3633484479767548624984f,-0.3041452834723618048329f,\
+-1.3937055405477738467823f,-0.5975281694506322516247f,-0.6997444046104884796122f,\
+-0.3196851144737095085091f,1.09857442199734944843f,-1.77236020622582612916f,\
+-0.0885003512087364219152f,1.3820373060805490883496f,-0.3478356988431264840145f,\
+-1.5917082966936921817336f,-1.2805101534361520432270f,0.2630673092127150392017f,\
+0.3354398592128065015316f,0.3056832398609472534190f,-0.3465598133034439864986f,\
+-0.0149898968435104897046f,-0.8499089854435717406034f,1.1188306614388350279654f,\
+-0.6366826455916885230124f,0.7478712286232889194793f,-1.1407898077101095157815f,\
+1.7416298413146675816421f,-0.6492757257758221545174f,0.9050061520410521698210f,\
+-0.7214302149042788325772f,0.1880549880800692907901f,-0.6074290437972867939820f,\
+-0.3926402375420063872724f,-2.1738375226761288416810f,-0.3077758151743882342188f,\
+-1.4339354091797107404460f,0.5131602976051053977002f,0.0609103217068958785463f,\
+-0.0915059705228822850565f,0.2851713506321221225370f,0.3850345796175008161732f,\
+0.5344891195679912776484f,-0.3352957511414503266600f,0.5011675332336322785665f,\
+0.9817842562968046582483f,0.3201410638941641906285f,2.908782756663177426759f,\
+-0.8167435983319983883177f,-0.6395703111646185989869f,0.4768832439562080693918f,\
+-2.3940570181394389415175f,1.181268742272832517060f,0.7860988797801938821053f,\
+0.2080213710796271764369f,-0.0657191135894376471382f,2.2596861347367309669210f,\
+0.7576187360739459197845f,0.0816850726713814895286f,0.713209526903904489359f,\
+1.0221713946590338384368f,-1.3357158672812421418286f,-1.3632163488573514342761f,\
+-0.1933486222136764076662f,0.1054205318382937656141f,0.8628332102807707570946f,\
+0.6890069943729065782279f,-0.1425645528482178403529f}
+
+#define CSOURCEI {0.4187679309893236334617f,0.9571040727588696617190f,1.172760842677368797737f,\
+0.8367787345559263290085f,0.0537934646406551114639f,-0.3937773223205939254754f,\
+1.7876375988580777143255f,-0.5864530819794440130721f,-0.9799596671663597380331f,\
+-1.435491321041636902933f,-0.7958478780018579668010f,0.5425829186077295585022f,\
+-0.6690160051984340716658f,0.4469912205186009623858f,-0.2043520888417388603475f,\
+-0.4718547031305261874046f,1.2345904036110504353729f,0.2305518055397126619965f,\
+1.0780366202665678798667f,0.4904320988250001067676f,-0.2652022209879114633679f,\
+-0.9976659763947106629445f,-1.349099117857334384496f,-0.4904839979026296425957f,\
+0.5445911400019642911730f,1.5676016792969027502380f,0.9705535858979048580153f,\
+1.562322752104617240576f,0.9312705713450669664510f,-1.491064034017491879425f,\
+0.5387480326121706353248f,0.2780267771815282396020f,-0.6792511192992195523388f,\
+-1.7001946270260519522566f,1.1064967394734230854425f,0.6449691334115315033415f,\
+1.010191395265231717460f,0.7617257042808376343856f,0.7130320908537892687917f,\
+1.3873980946032253847022f,1.0464400502880701893105f,0.7743318486747019502303f,\
+-1.0385544825558827852774f,0.2570923151837984921286f,-0.8100639413180467096609f,\
+0.9637587964856539901604f,1.5615765140914361630564f,0.5804915960065005764434f,\
+-0.2022297555607953933876f,0.6091855774356720321094f,-0.5513582447276994535912f,\
+-0.4240953703415643594177f,-0.8690915476323599619946f,-1.0352497689734347918744f,\
+0.3275700398280019243202f,-0.7970043301223290743707f,0.2341992112983941609627f,\
+-0.2288430429610794625273f,1.213479264737873375424f,0.9031823906644896871043f,\
+1.4754958638303785622981f,1.6520423035243945175665f,0.8178319166692843422695f,\
+-0.4286042039456253727181f,0.4413804125451418203241f,-0.8566414495458910538517f,\
+-1.3669367412247732662678f,2.0376720143917643746079f,-1.8253356531263227324757f,\
+1.5266365006585700392350f,0.1161871811298216261576f,-0.6659495480394291844206f,\
+-0.5450277852280467349999f,1.2558648076421243811041f,-0.7854748651398538727975f,\
+-2.1498185127975446562232f,-1.4516576281976432127863f,0.4432114256783392658434f,\
+-0.0042605582120147401926f,-0.0805101613497762047533f,-1.1324416682104487819061f,\
+0.1150256099470636506066f,1.3050405907321147580546f,-1.0622634828383090699333f,\
+-1.35922814179336781670f,-1.703726701643710983447f,-0.282327674589286536921f,\
+1.4699227361546476355869f,1.2714945342939698580409f,0.8438338325656443705824f,\
+1.6086130230417976516577f,-0.8654237444216958952126f,-2.1306341506077157710308f,\
+0.4262366479533865049056f,1.2202306126621282889033f,-0.4781944951046422920271f,\
+2.2327961471769124379705f,0.6988675202840052280706f,-1.1016041402782228431079f,\
+-0.0366155088206388534822f,0.9663901570211483882389f,-0.3288372819689815984567f,\
+1.8550047995758884855633f,-0.9247532047817873523954f,-1.1547662665953339899971f,\
+1.4270134659704167834349f,-0.2267973730507581442417f,1.4593991828148868972193f,\
+-0.8205572609516469384516f,-0.3297213070039397009303f,-0.5787995844520394950194f,\
+1.8452573890170231862840f,-0.5998455574460443973095f,0.5461062118050383773493f,\
+0.3989213456307151295377f,0.6223400150931739371885f,-0.661605777551548035476f,\
+-0.806522789665139905324f,-0.2812497112451433634028f,-0.4100128914055168882768f,\
+-1.50945722493549672194f,0.4603669785905236677692f,-0.4126050173509914209546f,\
+1.6611257451475334168123f,-0.8697907951355576816610f,0.6696537851786207307114f,\
+-0.5134482200325719558620f,0.1007092240430608326429f,1.2778361566544564897896f,\
+1.2322028231309287704676f,0.2307590408528507608388f,1.5263506644977615778203f,\
+-0.8569947230359247214437f,1.1048772379802629384216f,-0.2109985124170330184068f,\
+-0.0551453334787995949617f,0.1230778288705814127457f,-1.423405390861443020611f,\
+-0.394586285353004440069f,-0.2879823286948200999902f,0.1062021177580684955233f,\
+-0.6907035832345697068391f,0.3653158847737960068791f,0.9338855454474609407711f,\
+-0.4120224826154939568035f,-0.1450379965292624417916f,-0.9040960399672915981384f,\
+-0.3390386771829260181832f,1.625054083669380089461f,0.4716305826679590418316f,\
+0.6165901874856758446697f,0.4270688825812783973035f,-0.8343519087812022450024f,\
+-0.5142102680242138790234f,-0.3269678763130224319333f,-0.4453255190855087697344f,\
+-1.2280852212014194968503f,0.0988020658802584578195f,0.7533305302295955074854f,\
+0.1183515262592216288340f,0.4361801271894044096378f,-1.203233821600386388440f,\
+0.6270203182178656353685f,-0.2147899120281239748742f,-1.6199408065241285293f,\
+-0.3813310069938283253244f,-0.952339709740829487572f,-1.3753328967678597472002f,\
+0.1397812751994848834425f,1.043902134788026403456f,1.1627380196617531638026f,\
+-1.0121704799221244996943f,1.0517816399459063436694f,0.0479426304050067017548f,\
+-1.9256009187313227748461f,0.0702119825151238802219f,-1.5960860779727858993482f,\
+0.3892567541356096727512f,-0.3405739777798729162051f,-2.3927967690864724303879f,\
+1.4571677327957668346414f,1.7033833498531005812282f,1.4103109856750082329313f,\
+0.8887233594164675176685f,1.085007779468186495109f,-0.1517851031708108977547f,\
+-1.4279908879739833249545f,0.8317119599758505676945f,-0.100625285489182120235f,\
+-0.0641469431098572184791f,0.9441650291895723468016f,1.7557389523285045207501f,\
+-1.4553402741895795635685f,0.8280178925672729839391f,0.3768033744738639723160f,\
+0.769460862052703697955f,1.7363387952951863102413f,0.2883880023549790228010f,\
+0.1937130526956079012990f,0.7931867418127547253448f}
+
+#define CRESULTR {1.5005579968888511643854f,1.4038788522636540534450f,0.4261430281005708642361f,\
+0.4227040163485943913280f,0.3581755188101993225835f,0.3448856718113299524298f,\
+-0.4190544272790215352131f,0.3637606739341552875011f,0.2481133547640819725366f,\
+0.221957537083997319405f,1.5004406253943489701896f,14.262372555443052490887f,\
+4.2569132214783609313713f,0.4668662514373775884735f,0.4327387090783468837074f,\
+0.7637186245018753316671f,0.9416373255706453893055f,2.1849079400266222528160f,\
+0.0362192687509753849517f,0.7401390786280732658753f,0.6396875438787329448687f,\
+0.8375646978007738052696f,0.2750576263630330475785f,0.9779650400990845815485f,\
+0.3660147454727735727431f,0.0007813344853740371429f,0.3196234331185683896770f,\
+0.0168057767355581332003f,0.4715477957119850183076f,0.0903652551480593341227f,\
+0.4044631913155857239062f,4.5203389894684722349893f,5.4536105990647092411905f,\
+-0.2007273149144214174910f,0.1263903817022170861240f,0.1269607449461356840636f,\
+0.0861483947375209779818f,0.5452795580354135029921f,2.0908477302753070148356f,\
+0.0461711120003356623176f,0.0959224290498517928594f,5.6938820505915233027849f,\
+0.0545714270555244795879f,1.0286954018234739649529f,0.5710758281447196882397f,\
+0.6979532622664902374865f,0.0063143806135506170760f,3.4798191533417077714319f,\
+0.7877896535828416979541f,0.9752288031986856564615f,1.0063735441532775105600f,\
+0.4749622284565679919410f,0.8172752232835529540012f,0.6797654131732457916115f,\
+1.0060191413953609718135f,0.6810372893714221609329f,0.9931890911476703998062f,\
+0.8807071418681532426476f,0.6964662788868779541573f,0.7235561661943166189559f,\
+0.2187683453764143193254f,-0.0592182210929489902251f,0.4848204523909904195555f,\
+0.9593919417277750882889f,3.7038010572869821679376f,0.3163625232453476932015f,\
+0.1969961410854516870028f,-0.3978181614570159285726f,-1.361462433143773242961f,\
+0.2629151417766518727959f,1.5660468223975476664833f,0.0656893454691978989635f,\
+0.4861465273206775350445f,0.4622214272783724542393f,5.5338903531227128240744f,\
+-1.474264258662732141048f,0.0506254763419271280878f,2.5339495141019958701634f,\
+0.5588967788586440832432f,1.8941728912398605455536f,0.1625651067402884841773f,\
+1.1633063892460699940f,0.191283239298288054719f,1.547496475194143350507f,\
+0.0304040029736053936393f,-0.2630510364909662279764f,0.5483550218772245132826f,\
+0.0104474069781232917903f,0.2116381376777875800155f,0.4458460510519014485808f,\
+-0.0081176195921236100894f,1.4326892345597483924280f,-0.8581368290819433308769f,\
+1.3371299915531948965253f,0.2577287469128092811665f,0.4920040313161565537214f,\
+-0.2904655234170689381834f,0.462163508824150970344f,0.5856645720520745612703f,\
+4.81021957957627943614f,0.1973001680885165531887f,2.0006745533290084537725f,\
+-0.0705330419570823624609f,0.9534341938168940933096f,2.0294673010324730810794f,\
+0.0419743009154483204259f,1.198346516707147646486f,0.0867559391436964755240f,\
+0.4784523700257174994022f,1.1222795076752876131110f,0.2682227152927741387067f,\
+-0.1200874658138830208820f,0.8883849124062789259781f,1.1576031776174615650632f,\
+0.6976356512079191496412f,4.3909706615004120422441f,0.2101052025810229428870f,\
+0.6417663596495127853458f,0.6437857682896207522916f,1.3727122635941697570416f,\
+0.0685209480693795836004f,0.3887184828749501441791f,0.4591565751761637059758f,\
+-0.0886808967743262233085f,1.4635680657432861284661f,0.9160726657458563293446f,\
+1.0136746786541579457008f,2.1053235388732902677589f,0.3428728910762353088160f,\
+0.5219502401364545240980f,2.4645660104152655733856f,0.0042184623117796499203f,\
+0.4339378404381282194890f,0.1212485246955130047120f,0.5305120745426482598006f,\
+0.4178714460322863755160f,1.42725807301201368382f,0.1083449257198766668697f,\
+0.2290848259097614525448f,0.5275132726780440428627f,0.4939136954488312358791f,\
+0.5598904753492991437369f,2.8019267774958218630843f,0.1010607343958155046604f,\
+0.838703631682240602f,3.9411880425167020725041f,0.4367206268973685134860f,\
+0.1919888550719570374792f,-0.0150705892655913463452f,1.1588916915452081024540f,\
+1.1410183495054209146247f,1.2356219575708369262657f,0.4749404480211336654349f,\
+0.8577273295080861670314f,0.4048075578221899673004f,2.7627080603314042583918f,\
+0.1777810656017677348739f,2.1021956426305754561668f,0.2330964886175431460824f,\
+5.66671671967639412060f,0.4735105506685184928450f,0.8882739731815125772130f,\
+0.3935986079583607688548f,1.1791667609118299253623f,-0.0267606605538480354922f,\
+0.6267669571981022702545f,0.0659441611256419563114f,0.1427681092204574897497f,\
+0.2360440610261224370081f,0.8400442654362825223302f,0.4217500256271256020568f,\
+0.4836741737176751265714f,0.659708006511050548681f,1.4679764549267637629981f,\
+-0.5928767353529774686294f,0.7133645918582519618312f,-0.0417400106828591799246f,\
+2.46953429512858368966f,1.2982129272812710230056f,-13.430164449559464756589f,\
+0.0501008887550637785346f,-0.0697374371031275891442f,0.2574407425697148865673f,\
+0.0575298048786480678563f,1.5214153238495213837922f,2.1695830700438989424583f,\
+0.1752306830704533635590f,0.6307656294349494041640f,9.5316214402790411241995f,\
+2.1288031244453153867369f,0.6363319322612546180551f,-0.3752333236632875990146f,\
+0.3201657030914684676226f,0.1778562682310512732542f,0.2378885254191149545289f,\
+0.5920073359495072740089f,-0.1831081087669608753465f,2.2719985676152019138385f,\
+1.9544837479586136819165f,0.6083604660209539494176f}
+
+#define CRESULTI {0.66789173388469347259f,1.9929317082415038964172f,1.0134693185160317252524f,\
+0.4685368189063157107199f,0.0192861086704356442245f,-0.1432921900711904839021f,\
+1.9021551721948490865088f,-0.2416937871379007396477f,-0.3698944066530311935992f,\
+-1.630400797414071512037f,-1.53213128993891678498f,8.5994415909131678432686f,\
+-3.3657446415150640284253f,0.2237921440211748103088f,-0.0896829281433757230513f,\
+-0.3897266612271670926937f,2.6944436446476398572258f,0.5128535974480390446928f,\
+0.0674551867661900700357f,0.3951923071518532726287f,-0.1737389326052603821804f,\
+-1.2977574398167355251843f,-1.220297105474789312041f,-0.5222431149169146635813f,\
+0.2216906290760837783260f,0.2445752865761168237668f,0.4669490113374816231406f,\
+1.983268587510182312528f,0.6339653057626817300729f,-1.1309555970451541373478f,\
+0.2417594109687444814405f,1.2901913158229225686568f,-4.40337349863430294050f,\
+-1.5425684980543696855904f,0.2523692809573465090089f,0.0955121010048793767089f,\
+0.1372242993017437351355f,0.5200557398879992465623f,1.8081956965026793060503f,\
+0.2489243937541025242233f,0.1658522561714183829462f,5.5692357559437404290748f,\
+-0.0926616074754614826858f,0.2704548071084568183764f,-0.5999663537818090697229f,\
+1.0049457307841926922976f,0.6848514061793418150614f,2.2823134654584236180597f,\
+-0.1615224571979621548401f,0.6804242491001384340876f,-0.6188951521875099004433f,\
+-0.2144424405243884335093f,-0.9669529580119747835809f,-1.1455586484969144667190f,\
+0.3418574459217512129250f,-0.6970321107785095726683f,0.2369522455719338394076f,\
+-0.2051372202341115724700f,1.8654869710971573315561f,0.9177784888023613474317f,\
+2.2886105642667078363672f,0.7272712824943110554443f,0.5173355346085974915127f,\
+-0.4383775740596613790245f,1.7499274197824987719940f,-0.3649863488832993385635f,\
+-0.9529087376623858185454f,0.7892565481221736067852f,-5.2327138940157267299469f,\
+5.9498471753939741191175f,0.1827777741034706804335f,-0.0516109653428112533091f,\
+-0.2947431961312417803001f,1.4188420873857061632606f,-5.534739336307598733811f,\
+-2.255013513539458447354f,-0.4229165121855131270756f,1.2028903349471207206989f,\
+-0.0023812266691438442427f,-0.1528305178806574626815f,-0.3467892290786088183019f,\
+0.1344033089941876202289f,0.7027456808048029301972f,-2.7761066302583010667604f,\
+-0.1415572225289876973076f,-1.9671936933888867216069f,-0.1590647203810587884121f,\
+0.1032177704018006486608f,0.6858644064375456483873f,0.5012535303694961585919f,\
+0.2145546901849673948615f,-1.6825191334017586264338f,-1.3692428047734856999540f,\
+0.6071558835309880386433f,0.7048129294793062937785f,-0.2550146122571063656004f,\
+0.3727193608915256306524f,0.388381095349859650767f,-1.1552707405821953656755f,\
+-0.1762073913025017923850f,0.2856835610783352019659f,-0.6826826797070948416035f,\
+0.2414553165222597663764f,-1.2645359787455874300832f,-4.5934329346040874142432f,\
+0.2899138963758796094794f,-0.2765396421605960108892f,0.7755744714874250878012f,\
+-0.5133371708548779555059f,-0.3840592062347947810430f,-0.1752712350242682792789f,\
+0.4264971552447213154480f,-0.6075754177972138014852f,0.7035454748522144141631f,\
+0.2940690048846716919684f,3.1502912129208726632612f,-0.1636049555981854697340f,\
+-0.66946985566275640789f,-0.1859947683471395718513f,-0.5966446238894932418972f,\
+-1.1156829506070020663344f,0.1927677941084386115111f,-0.2009874518146967659060f,\
+0.9790782744873792742268f,-1.7340674208694739633074f,0.7252463079270474732851f,\
+-0.5716056662861231929540f,0.2127452321317529204681f,1.1366978856910239237266f,\
+1.4821597980401888250412f,0.5790353877850622499324f,0.0948502955617512716335f,\
+-0.5009900731541635510169f,0.2411262068342296116530f,-0.1136285464587050847429f,\
+-0.0230670473414846290139f,0.1765562266540864622133f,-0.7297546590556842627251f,\
+-0.0953969444497970303631f,-0.1562582727501122537017f,0.0526527844386815990774f,\
+-0.4627604755682861448207f,1.0716924742142539539458f,0.1366141387590569244992f,\
+-0.3665452417574971422098f,-0.5756642515297435425126f,-0.5549906098825418965248f,\
+-0.0677059511108183409434f,0.2774865464288255867409f,0.5910566892682205253351f,\
+0.8087239218207783464365f,0.5623045509398011398972f,-0.5238753172271245484026f,\
+-0.4845296390188432167356f,-0.1372866414817625335676f,-1.3186482320231969200819f,\
+-0.4982790611331439079024f,0.2083797712931309276119f,0.2186064764396851156647f,\
+0.6738135687471651369407f,0.2207138713569412324933f,-2.3068359206298949537484f,\
+0.2851861631055106482968f,-0.2572412622481385358064f,-0.5440918958783450554151f,\
+-0.2513065277256731899769f,-0.0926726651078676189055f,-0.7210825269104839119194f,\
+0.0332111240217310629830f,1.4439889712068714189286f,0.9755400591442719981927f,\
+-0.7738329957764321642699f,1.1548413262354173536295f,0.0704326239228644929158f,\
+-1.6002810307194081929083f,0.0501692094503282184914f,-1.6501195063537017482247f,\
+1.012969261434880197115f,-0.4600643435261628222399f,-12.481321255158581706723f,\
+0.4390187012381037146014f,0.5228891202405995253244f,1.5903431490098800527022f,\
+0.0708411654197008272549f,2.8815196278940593543894f,-0.3318628781486120393751f,\
+-1.218706228014425851924f,0.6920752550579561956923f,-0.9623724741584287478702f,\
+-0.1367438235977035676516f,0.8789505770880949864221f,2.005732337058288017317f,\
+-2.760719914038102906773f,0.1937015573007111746140f,0.0941350707005644549152f,\
+0.5734318083679456057311f,1.095987006643926342520f,0.6740067391703287169591f,\
+0.3834169282796987543449f,0.6179115751021659885822f}
+
+
+
+
+void sexpsTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=sexps(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-6);
+ }
+
+ assert(( (fabs(sexps(0)-1))/(fabs(sexps(0))) )<1e-6);
+ assert(( (fabs(sexps(1)-2.7182818284590450907956))/(fabs(sexps(1))) )<1e-6);
+ assert(( (fabs(sexps(2)-7.3890560989306504069418))/(fabs(sexps(2))) )<1e-6);
+ assert(( (fabs(sexps(3)-20.085536923187671476398))/(fabs(sexps(3))) )<1e-6);
+ assert(( (fabs(sexps(4)-54.598150033144236203952))/(fabs(sexps(4))) )<1e-6);
+ assert(( (fabs(sexps(5)-148.41315910257662835647))/(fabs(sexps(5))) )<1e-6);
+ assert(( (fabs(sexps(6)-403.42879349273533762243))/(fabs(sexps(6))) )<1e-6);
+ assert(( (fabs(sexps(7)-1096.6331584284580458188))/(fabs(sexps(7))) )<1e-6);
+}
+
+void cexpsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=cexps(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<8e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void sexpaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ float mon_test[6]={1.0f,4.0f,2.0f,5.0f,3.0f,6.0f};
+ float result_mon_test[6]={2.7182818284590450907956f,54.598150033144236203952f,7.3890560989306504069418f,
+ 148.41315910257662835647f,20.085536923187671476398f,403.42879349273533762243f};
+ float out_mon_test[6];
+ j=1;
+ sexpa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+ sexpa(mon_test,6,out_mon_test);
+ for (i=0;i<6;i++){
+ assert(( (fabs(out_mon_test[i]-result_mon_test[i]))/(fabs(out_mon_test[i])) )<1e-6);
+ }
+}
+
+void cexpaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in[200],out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=FloatComplex(inR[i],inI[i]);
+ }
+ cexpa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<8e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+
+int testExp(void) {
+ printf("\n>>>> Float Exp Tests\n");
+ sexpsTest();
+ cexpsTest();
+ sexpaTest();
+ cexpaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testExp() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/u16expa.c b/2.3-1/src/c/elementaryFunctions/exp/u16expa.c
new file mode 100644
index 00000000..1655dfe9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/u16expa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "exp.h"
+
+void u16expa(uint16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16exps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/u16exps.c b/2.3-1/src/c/elementaryFunctions/exp/u16exps.c
new file mode 100644
index 00000000..d36cf1ef
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/u16exps.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <math.h>
+#include "exp.h"
+
+float u16exps(uint16 x) {
+ return (expf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/u8expa.c b/2.3-1/src/c/elementaryFunctions/exp/u8expa.c
new file mode 100644
index 00000000..828fb3da
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/u8expa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "exp.h"
+
+void u8expa(uint8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8exps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/u8exps.c b/2.3-1/src/c/elementaryFunctions/exp/u8exps.c
new file mode 100644
index 00000000..cae731a2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/u8exps.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "exp.h"
+
+float u8exps(uint8 x) {
+ return (expf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/zexpa.c b/2.3-1/src/c/elementaryFunctions/exp/zexpa.c
new file mode 100644
index 00000000..c4c8df38
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/zexpa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+
+void zexpa(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zexps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp/zexps.c b/2.3-1/src/c/elementaryFunctions/exp/zexps.c
new file mode 100644
index 00000000..4de8877d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp/zexps.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp.h"
+#include "cos.h"
+#include "sin.h"
+
+doubleComplex zexps(doubleComplex z) {
+ double real = zreals(z);
+ double imag = zimags(z);
+
+ return DoubleComplex(dexps(real)*dcoss(imag),
+ dexps(real)*dsins(imag));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/Makefile.am b/2.3-1/src/c/elementaryFunctions/exp10/Makefile.am
new file mode 100644
index 00000000..bc258bbd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/Makefile.am
@@ -0,0 +1,71 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libExp10_la_CFLAGS = -I ../../type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libExp10.la
+
+libExp10_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sexp10s.c \
+ dexp10s.c \
+ cexp10s.c \
+ zexp10s.c \
+ sexp10a.c \
+ dexp10a.c \
+ cexp10a.c \
+ zexp10a.c
+
+HEAD = ../includes/exp10.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp10/libExp10.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatExp10 testDoubleExp10
+
+TESTS = testFloatExp10 testDoubleExp10
+
+testFloatExp10_SOURCES = testExp10.h testFloatExp10.c
+testFloatExp10_CFLAGS = $(check_INCLUDES)
+testFloatExp10_LDADD = $(check_LDADD)
+
+testDoubleExp10_SOURCES = testExp10.h testDoubleExp10.c
+testDoubleExp10_CFLAGS = $(check_INCLUDES)
+testDoubleExp10_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/Makefile.in b/2.3-1/src/c/elementaryFunctions/exp10/Makefile.in
new file mode 100644
index 00000000..ca4c18f4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/Makefile.in
@@ -0,0 +1,817 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatExp10$(EXEEXT) testDoubleExp10$(EXEEXT)
+TESTS = testFloatExp10$(EXEEXT) testDoubleExp10$(EXEEXT)
+subdir = src/c/elementaryFunctions/exp10
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libExp10_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libExp10_la-sexp10s.lo libExp10_la-dexp10s.lo \
+ libExp10_la-cexp10s.lo libExp10_la-zexp10s.lo \
+ libExp10_la-sexp10a.lo libExp10_la-dexp10a.lo \
+ libExp10_la-cexp10a.lo libExp10_la-zexp10a.lo
+am_libExp10_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libExp10_la_OBJECTS = $(am_libExp10_la_OBJECTS)
+libExp10_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libExp10_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleExp10_OBJECTS = \
+ testDoubleExp10-testDoubleExp10.$(OBJEXT)
+testDoubleExp10_OBJECTS = $(am_testDoubleExp10_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp10/libExp10.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleExp10_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleExp10_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleExp10_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatExp10_OBJECTS = testFloatExp10-testFloatExp10.$(OBJEXT)
+testFloatExp10_OBJECTS = $(am_testFloatExp10_OBJECTS)
+testFloatExp10_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatExp10_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatExp10_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libExp10_la_SOURCES) $(testDoubleExp10_SOURCES) \
+ $(testFloatExp10_SOURCES)
+DIST_SOURCES = $(libExp10_la_SOURCES) $(testDoubleExp10_SOURCES) \
+ $(testFloatExp10_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libExp10_la_CFLAGS = -I ../../type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libExp10.la
+libExp10_la_SOURCES = $(HEAD) $(SRC)
+SRC = sexp10s.c \
+ dexp10s.c \
+ cexp10s.c \
+ zexp10s.c \
+ sexp10a.c \
+ dexp10a.c \
+ cexp10a.c \
+ zexp10a.c
+
+HEAD = ../includes/exp10.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp10/libExp10.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+testFloatExp10_SOURCES = testExp10.h testFloatExp10.c
+testFloatExp10_CFLAGS = $(check_INCLUDES)
+testFloatExp10_LDADD = $(check_LDADD)
+testDoubleExp10_SOURCES = testExp10.h testDoubleExp10.c
+testDoubleExp10_CFLAGS = $(check_INCLUDES)
+testDoubleExp10_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/exp10/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/exp10/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libExp10.la: $(libExp10_la_OBJECTS) $(libExp10_la_DEPENDENCIES)
+ $(libExp10_la_LINK) -rpath $(pkglibdir) $(libExp10_la_OBJECTS) $(libExp10_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleExp10$(EXEEXT): $(testDoubleExp10_OBJECTS) $(testDoubleExp10_DEPENDENCIES)
+ @rm -f testDoubleExp10$(EXEEXT)
+ $(testDoubleExp10_LINK) $(testDoubleExp10_OBJECTS) $(testDoubleExp10_LDADD) $(LIBS)
+testFloatExp10$(EXEEXT): $(testFloatExp10_OBJECTS) $(testFloatExp10_DEPENDENCIES)
+ @rm -f testFloatExp10$(EXEEXT)
+ $(testFloatExp10_LINK) $(testFloatExp10_OBJECTS) $(testFloatExp10_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-cexp10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-cexp10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-dexp10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-dexp10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-sexp10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-sexp10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-zexp10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libExp10_la-zexp10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleExp10-testDoubleExp10.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatExp10-testFloatExp10.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libExp10_la-sexp10s.lo: sexp10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-sexp10s.lo -MD -MP -MF $(DEPDIR)/libExp10_la-sexp10s.Tpo -c -o libExp10_la-sexp10s.lo `test -f 'sexp10s.c' || echo '$(srcdir)/'`sexp10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-sexp10s.Tpo $(DEPDIR)/libExp10_la-sexp10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sexp10s.c' object='libExp10_la-sexp10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-sexp10s.lo `test -f 'sexp10s.c' || echo '$(srcdir)/'`sexp10s.c
+
+libExp10_la-dexp10s.lo: dexp10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-dexp10s.lo -MD -MP -MF $(DEPDIR)/libExp10_la-dexp10s.Tpo -c -o libExp10_la-dexp10s.lo `test -f 'dexp10s.c' || echo '$(srcdir)/'`dexp10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-dexp10s.Tpo $(DEPDIR)/libExp10_la-dexp10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dexp10s.c' object='libExp10_la-dexp10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-dexp10s.lo `test -f 'dexp10s.c' || echo '$(srcdir)/'`dexp10s.c
+
+libExp10_la-cexp10s.lo: cexp10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-cexp10s.lo -MD -MP -MF $(DEPDIR)/libExp10_la-cexp10s.Tpo -c -o libExp10_la-cexp10s.lo `test -f 'cexp10s.c' || echo '$(srcdir)/'`cexp10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-cexp10s.Tpo $(DEPDIR)/libExp10_la-cexp10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cexp10s.c' object='libExp10_la-cexp10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-cexp10s.lo `test -f 'cexp10s.c' || echo '$(srcdir)/'`cexp10s.c
+
+libExp10_la-zexp10s.lo: zexp10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-zexp10s.lo -MD -MP -MF $(DEPDIR)/libExp10_la-zexp10s.Tpo -c -o libExp10_la-zexp10s.lo `test -f 'zexp10s.c' || echo '$(srcdir)/'`zexp10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-zexp10s.Tpo $(DEPDIR)/libExp10_la-zexp10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zexp10s.c' object='libExp10_la-zexp10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-zexp10s.lo `test -f 'zexp10s.c' || echo '$(srcdir)/'`zexp10s.c
+
+libExp10_la-sexp10a.lo: sexp10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-sexp10a.lo -MD -MP -MF $(DEPDIR)/libExp10_la-sexp10a.Tpo -c -o libExp10_la-sexp10a.lo `test -f 'sexp10a.c' || echo '$(srcdir)/'`sexp10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-sexp10a.Tpo $(DEPDIR)/libExp10_la-sexp10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sexp10a.c' object='libExp10_la-sexp10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-sexp10a.lo `test -f 'sexp10a.c' || echo '$(srcdir)/'`sexp10a.c
+
+libExp10_la-dexp10a.lo: dexp10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-dexp10a.lo -MD -MP -MF $(DEPDIR)/libExp10_la-dexp10a.Tpo -c -o libExp10_la-dexp10a.lo `test -f 'dexp10a.c' || echo '$(srcdir)/'`dexp10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-dexp10a.Tpo $(DEPDIR)/libExp10_la-dexp10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dexp10a.c' object='libExp10_la-dexp10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-dexp10a.lo `test -f 'dexp10a.c' || echo '$(srcdir)/'`dexp10a.c
+
+libExp10_la-cexp10a.lo: cexp10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-cexp10a.lo -MD -MP -MF $(DEPDIR)/libExp10_la-cexp10a.Tpo -c -o libExp10_la-cexp10a.lo `test -f 'cexp10a.c' || echo '$(srcdir)/'`cexp10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-cexp10a.Tpo $(DEPDIR)/libExp10_la-cexp10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cexp10a.c' object='libExp10_la-cexp10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-cexp10a.lo `test -f 'cexp10a.c' || echo '$(srcdir)/'`cexp10a.c
+
+libExp10_la-zexp10a.lo: zexp10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -MT libExp10_la-zexp10a.lo -MD -MP -MF $(DEPDIR)/libExp10_la-zexp10a.Tpo -c -o libExp10_la-zexp10a.lo `test -f 'zexp10a.c' || echo '$(srcdir)/'`zexp10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libExp10_la-zexp10a.Tpo $(DEPDIR)/libExp10_la-zexp10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zexp10a.c' object='libExp10_la-zexp10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libExp10_la_CFLAGS) $(CFLAGS) -c -o libExp10_la-zexp10a.lo `test -f 'zexp10a.c' || echo '$(srcdir)/'`zexp10a.c
+
+testDoubleExp10-testDoubleExp10.o: testDoubleExp10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp10_CFLAGS) $(CFLAGS) -MT testDoubleExp10-testDoubleExp10.o -MD -MP -MF $(DEPDIR)/testDoubleExp10-testDoubleExp10.Tpo -c -o testDoubleExp10-testDoubleExp10.o `test -f 'testDoubleExp10.c' || echo '$(srcdir)/'`testDoubleExp10.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleExp10-testDoubleExp10.Tpo $(DEPDIR)/testDoubleExp10-testDoubleExp10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleExp10.c' object='testDoubleExp10-testDoubleExp10.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp10_CFLAGS) $(CFLAGS) -c -o testDoubleExp10-testDoubleExp10.o `test -f 'testDoubleExp10.c' || echo '$(srcdir)/'`testDoubleExp10.c
+
+testDoubleExp10-testDoubleExp10.obj: testDoubleExp10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp10_CFLAGS) $(CFLAGS) -MT testDoubleExp10-testDoubleExp10.obj -MD -MP -MF $(DEPDIR)/testDoubleExp10-testDoubleExp10.Tpo -c -o testDoubleExp10-testDoubleExp10.obj `if test -f 'testDoubleExp10.c'; then $(CYGPATH_W) 'testDoubleExp10.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleExp10.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleExp10-testDoubleExp10.Tpo $(DEPDIR)/testDoubleExp10-testDoubleExp10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleExp10.c' object='testDoubleExp10-testDoubleExp10.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleExp10_CFLAGS) $(CFLAGS) -c -o testDoubleExp10-testDoubleExp10.obj `if test -f 'testDoubleExp10.c'; then $(CYGPATH_W) 'testDoubleExp10.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleExp10.c'; fi`
+
+testFloatExp10-testFloatExp10.o: testFloatExp10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp10_CFLAGS) $(CFLAGS) -MT testFloatExp10-testFloatExp10.o -MD -MP -MF $(DEPDIR)/testFloatExp10-testFloatExp10.Tpo -c -o testFloatExp10-testFloatExp10.o `test -f 'testFloatExp10.c' || echo '$(srcdir)/'`testFloatExp10.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatExp10-testFloatExp10.Tpo $(DEPDIR)/testFloatExp10-testFloatExp10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatExp10.c' object='testFloatExp10-testFloatExp10.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp10_CFLAGS) $(CFLAGS) -c -o testFloatExp10-testFloatExp10.o `test -f 'testFloatExp10.c' || echo '$(srcdir)/'`testFloatExp10.c
+
+testFloatExp10-testFloatExp10.obj: testFloatExp10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp10_CFLAGS) $(CFLAGS) -MT testFloatExp10-testFloatExp10.obj -MD -MP -MF $(DEPDIR)/testFloatExp10-testFloatExp10.Tpo -c -o testFloatExp10-testFloatExp10.obj `if test -f 'testFloatExp10.c'; then $(CYGPATH_W) 'testFloatExp10.c'; else $(CYGPATH_W) '$(srcdir)/testFloatExp10.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatExp10-testFloatExp10.Tpo $(DEPDIR)/testFloatExp10-testFloatExp10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatExp10.c' object='testFloatExp10-testFloatExp10.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatExp10_CFLAGS) $(CFLAGS) -c -o testFloatExp10-testFloatExp10.obj `if test -f 'testFloatExp10.c'; then $(CYGPATH_W) 'testFloatExp10.c'; else $(CYGPATH_W) '$(srcdir)/testFloatExp10.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/cexp10a.c b/2.3-1/src/c/elementaryFunctions/exp10/cexp10a.c
new file mode 100644
index 00000000..6245c801
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/cexp10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+
+void cexp10a(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = cexp10s(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/cexp10s.c b/2.3-1/src/c/elementaryFunctions/exp10/cexp10s.c
new file mode 100644
index 00000000..479909a7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/cexp10s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+#include "pow.h"
+
+floatComplex cexp10s(floatComplex z) {
+ return cpows(FloatComplex(10.0f, 0.0f), z);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/dexp10a.c b/2.3-1/src/c/elementaryFunctions/exp10/dexp10a.c
new file mode 100644
index 00000000..137754d8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/dexp10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+
+void dexp10a(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dexp10s(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/dexp10s.c b/2.3-1/src/c/elementaryFunctions/exp10/dexp10s.c
new file mode 100644
index 00000000..29ae40fe
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/dexp10s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+
+double dexp10s(double x) {
+ return (pow(10, x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/sexp10a.c b/2.3-1/src/c/elementaryFunctions/exp10/sexp10a.c
new file mode 100644
index 00000000..aa6cc0eb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/sexp10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+
+void sexp10a(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = sexp10s(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/sexp10s.c b/2.3-1/src/c/elementaryFunctions/exp10/sexp10s.c
new file mode 100644
index 00000000..8f428293
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/sexp10s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+
+float sexp10s(float x) {
+ return (powf(10,x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/testDoubleExp10.c b/2.3-1/src/c/elementaryFunctions/exp10/testDoubleExp10.c
new file mode 100644
index 00000000..2f4b2559
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/testDoubleExp10.c
@@ -0,0 +1,496 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testExp10.h"
+
+#define SOURCE {0.3796988371759653091431,0.3062356826849281787872,0.3880051793530583381653,\
+0.1047293278388679027557,0.7603831812739372253418,0.0340930395759642124176,\
+0.1423966242000460624695,0.5554559468291699886322,0.8031897451728582382202,\
+0.5183992316015064716339,0.1518561029806733131409,0.5884730662219226360321,\
+0.2545093484222888946533,0.9992679939605295658112,0.6398976957425475120544,\
+0.5506716123782098293304,0.4607007671147584915161,0.5933007937856018543243,\
+0.6538193570449948310852,0.4168340521864593029022,0.9910155385732650756836,\
+0.3720780410803854465485,0.7061824081465601921082,0.5780865414999425411224,\
+0.602319641038775444031,0.5715096746571362018585,0.0549629041925072669983,\
+0.1205854485742747784,0.0143620483577251434326,0.0257951230742037296295,\
+0.8411248764023184776306,0.4381882525049149990082,0.4643401596695184707642,\
+0.4197426405735313892365,0.8023654492571949958801,0.5228588166646659374237,\
+0.5095121040940284729004,0.4531980180181562900543,0.7817818326875567436218,\
+0.776557037141174077988,0.0466059204190969467163,0.5113326688297092914581,\
+0.7502101892605423927307,0.6883628661744296550751,0.0167756117880344390869,\
+0.9345410899259150028229,0.5609863763675093650818,0.2205847105942666530609,\
+0.7648540753871202468872,0.4816976976580917835236,0.1558785634115338325500,\
+0.2476022052578628063202,0.5216529071331024169922,0.0805230387486517429352,\
+0.4409417239949107170105,0.8911933614872395992279,0.9780590813606977462769,\
+0.4588093762286007404327,0.5510440031066536903381,0.0960960905067622661591,\
+0.4196785055100917816162,0.7502556503750383853912,0.7218149593099951744080,\
+0.2895541018806397914886,0.3907764498144388198853,0.6686618146486580371857,\
+0.4877656819298863410950,0.4685971769504249095917,0.3562648519873619079590,\
+0.3442325466312468051910,0.4253307832404971122742,0.5588058172725141048431,\
+0.3304864969104528427124,0.4157403339631855487823,0.1595822656527161598206,\
+0.3883102680556476116180,0.9415460713207721710205,0.4722979352809488773346,\
+0.8533652639016509056091,0.1207739165984094142914,0.8999380934983491897583,\
+0.4384902161546051502228,0.8976056622341275215149,0.4911110657267272472382,\
+0.3402217179536819458008,0.9966153600253164768219,0.0215395865961909294128,\
+0.6876890822313725948334,0.0044924151152372360229,0.6397854541428387165070,\
+0.5416147718206048011780,0.2247649203054606914520,0.7364005260169506072998,\
+0.4496364505030214786530,0.9678138038143515586853,0.6489060199819505214691,\
+0.2544666919857263565063,0.1923975017853081226349,0.6861492367461323738098,\
+0.4231455805711448192596,0.6734441593289375305176,0.8270696722902357578278,\
+0.9360805852338671684265,0.8326222090981900691986,0.7424779590219259262085,\
+0.0194640238769352436066,0.8016031915321946144104,0.2554539437405765056610,\
+0.2688109613955020904541,0.7558490769006311893463,0.4347589677199721336365,\
+0.6425966522656381130219,0.6957868058234453201294,0.6499576461501419544220,\
+0.2303190128877758979797,0.5504368054680526256561,0.3038997054100036621094,\
+0.0371030517853796482086,0.1703881053254008293152,0.5698686256073415279388,\
+0.0036411266773939132690,0.4491547052748501300812,0.0576810697093605995178,\
+0.4956056098453700542450,0.1888933442533016204834,0.5641230703331530094147,\
+0.8562210192903876304626,0.0794764286838471889496,0.6196198705583810806274,\
+0.2241039988584816455841,0.8582094730809330940247,0.7114551994018256664276,\
+0.8026027604937553405762,0.6153324418701231479645,0.8958183480426669120789,\
+0.8721761344932019710541,0.8389767911285161972046,0.2040955354459583759308,\
+0.3166538262739777565002,0.7006825651042163372040,0.2073105163872241973877,\
+0.5222550616599619388580,0.9416420971974730491638,0.52116033947095274925,\
+0.4509841967374086380005,0.3961292845197021961212,0.7240869747474789619446,\
+0.6724055963568389415741,0.2386146038770675659180,0.7124841609038412570953,\
+0.3286493895575404167175,0.4837769134901463985443,0.7662767004221677780151,\
+0.3153839264996349811554,0.3489987561479210853577,0.7413818310014903545380,\
+0.9702721945941448211670,0.1276510567404329776764,0.3828862151131033897400,\
+0.4882477498613297939301,0.5191949699074029922485,0.0906856027431786060333,\
+0.6833897503092885017395,0.5022272053174674510956,0.0540433898568153381348,\
+0.0163939022459089756012,0.6050811810418963432312,0.2953875153325498104095,\
+0.6451294776052236557007,0.9449766655452549457550,0.5638650292530655860901,\
+0.9786348040215671062469,0.9345349706709384918213,0.1023264364339411258698,\
+0.7292392617091536521912,0.8353224000893533229828,0.9328642506152391433716,\
+0.0507844281382858753204,0.1677279071882367134094,0.9475936102680861949921,\
+0.9390441477298736572266,0.1270067342557013034821,0.6562355486676096916199,\
+0.7192088677547872066498,0.5519206207245588302612,0.7606899146921932697296,\
+0.8840736905112862586975,0.6386072556488215923309,0.2424023114144802093506,\
+0.7679059565998613834381,0.2624090006574988365173,0.1259524053893983364105,\
+0.4549009744077920913696,0.2127966103143990039825,0.0598834278061985969543,\
+0.8079127701930701732635,0.7068187817931175231934,0.9313771002925932407379,\
+0.0831561936065554618835,0.0639262734912335872650}
+
+#define RESULT {2.3971700177038997026102,2.0241173275316319823958,2.4434596929789558217294,\
+1.2727096230040590985055,5.7594787634974791146192,1.0816656533775219628524,\
+1.3880228773309635226241,3.5929894899598955326780,6.3560857138200033134012,\
+3.2991285007258008832309,1.4185874159639277891642,3.8767970491010381728358,\
+1.7968397576993500042164,9.9831591347336789965539,4.3641301682226361080552,\
+3.5536251298653307451048,2.8886888633814562510338,3.9201329280029257873252,\
+4.506292282304419138939,2.6111634148093250118450,9.7952503109731186015097,\
+2.3554725153952857930051,5.0837291957799548569596,3.7851800417010572630261,\
+4.0023921772430028909184,3.7282899025795783742865,1.1349138714412994044523,\
+1.3200350064956956064322,1.033622723333016191205,1.0611948240957502775927,\
+6.9362522133054556050524,2.7427628125876060138921,2.9129978203666571090480,\
+2.6287097779191044288893,6.3440332316119087963102,3.3331803790647938079417,\
+3.232303288716906752853,2.8392132821292248578970,6.0503685885843978553567,\
+5.97801550527315583849,1.1132838793654469267125,3.245881561190152808649,\
+5.6261355226100322468596,4.879360051235307693673,1.0393830059871540516525,\
+8.600844382521195541358,3.6390362044693791432337,1.6618227902609816748480,\
+5.8190766171103653903174,3.0317800975513509165182,1.4317874896288145247780,\
+1.7684883582783652578030,3.3239379437878064926792,1.2037132434952326764943,\
+2.7602074516612016275019,7.7838303437469935630588,9.5073412259646765676280,\
+2.876135722709581621359,3.5566735327883938211357,1.2476595365735951848052,\
+2.6283216080771176770270,5.626724486525223944966,5.2700527142503661437445,\
+1.947843685866482488223,2.4591014722412456450229,4.6629613384726322777851,\
+3.0744375934314547293980,2.941691847776138235560,2.2712495380631962937912,\
+2.2091873443061853521385,2.6627523904580243652163,3.620810677149941980701,\
+2.1403583776871992760960,2.60459578833533411668,1.44405011565138674534,\
+2.4451768086326421958177,8.7406971172900771449576,2.9668660249388048022468,\
+7.1345282822869320327186,1.3206079780376647203610,7.9421501528532889579992,\
+2.7446705104699793409395,7.899610206034289205945,3.0982115292188217026137,\
+2.188878814912672332582,9.9223686842029490406958,1.050847236808647444661,\
+4.8717958623764170411619,1.0103978539346472054206,4.3630024226971446665857,\
+3.4802846963616036468636,1.6778955425132806578148,5.4500504945081766905446,\
+2.8160246398239912046790,9.2856819400663770380788,4.4555982016116564281560,\
+1.7966632806306144232167,1.5573904303972738727424,4.8545528865355054293218,\
+2.6493880955344351058045,4.7145924820058668913703,6.715365764647851953839,\
+8.6313869205483300106607,6.8017741785747647398352,5.5268535777229557126589,\
+1.0458370517364794505255,6.3329081834648581761371,1.8007521573290650174215,\
+1.8569959706339840277423,5.6996616704912836937069,2.7211906353565828986518,\
+4.39133583975054442305,4.9634860523035060353436,4.4664003219774368602657,\
+1.6994915629457518768675,3.5517043359266669000363,2.0132592604656482926373,\
+1.089188511318553986840,1.4804307775633922528158,3.7142285642082217833604,\
+1.0084192481976341770888,2.8129026699324310989425,1.142039354028792752516,\
+3.1304416262076188992580,1.5448749964710146720392,3.6654143041103313116480,\
+7.181596810407055997416,1.200815897009761545888,4.1650466551411478022260,\
+1.6753440162955879344509,7.21455374553604489307,5.1458272136838258958846,\
+6.3475007446385660614396,4.1241309049764449667919,7.8671666160643907161898,\
+7.450340721306332625318,6.9020291813359317956156,1.5999099356849897368704,\
+2.0732602743658210542321,5.0197555099972408498843,1.6117976431404783532741,\
+3.3285498202301311287954,8.7426299668587681424015,3.3201701404059416056214,\
+2.824777184045289768477,2.4895983330428896884712,5.297695284941288385028,\
+4.7033315715610184426509,1.7322660897889763376156,5.1580335293393115847493,\
+2.1313235787699511547544,3.0463297621649392254994,5.8381695091926415486228,\
+2.0672068075526839336931,2.2335658257207593457849,5.5129217858217156589262,\
+9.3383940240121710019139,1.3416865210022335119788,2.414828068089148516151,\
+3.0778521213560718905455,3.3051788871815572790069,1.2322124790790967008292,\
+4.8238050773970124751600,3.1785365175695079464901,1.1325135056912927211670,\
+1.038469874168215900667,4.0279231974946911876145,1.97418348876764548905,\
+4.4170211379151878006155,8.8100153590470213771368,3.663237102755284801958,\
+9.5199529943728755654320,8.6007231965720354338600,1.2656873409568392130353,\
+5.3609192017188229684166,6.8441954007674699056452,8.5676999890922083125133,\
+1.1240468894427289026083,1.471390362736320067683,8.8632624680127776173322,\
+8.690487669968261386089,1.3396974608773437598330,4.5314328497492990521778,\
+5.2385231533328031616747,3.5638598811998751791918,5.7635480038278910086547,\
+7.6572652334911666116568,4.351182064426246220989,1.7474401555184173595592,\
+5.8601125417902917291713,1.8298226565740485227707,1.336449046213224356450,\
+2.8503682671020214023372,1.6322873327021125700043,1.1478454784492588824918,\
+6.4255864384701686375934,5.0911838672535516536755,8.538411872415464287656,\
+1.211033602346728965671,1.1585806569998515769271}
+
+#define ZSOURCER {0.0521394181996583938599,0.4229906541295349597931,0.9028727160766720771790,\
+0.270216043572872877121,0.4369520992040634155273,0.0152578153647482395172,\
+0.6548111913725733757019,0.0449309810064733028412,0.2133925389498472213745,\
+0.5342523609288036823273,0.7069207737222313880920,0.2409008811227977275848,\
+0.2901745550334453582764,0.7550916881300508975983,0.2289740880951285362244,\
+0.4858699417673051357269,0.6168978903442621231079,0.8581895199604332447052,\
+0.9484143527224659919739,0.2478762450627982616425,0.3616605177521705627441,\
+0.4686846160329878330231,0.0340223712846636772156,0.5221414058469235897064,\
+0.3054678197950124740601,0.2017288585193455219269,0.4932554000988602638245,\
+0.3831945951096713542938,0.9221886433660984039307,0.8073847130872309207916,\
+0.3020078903064131736755,0.2459809384308755397797,0.1128082294017076492310,\
+0.5088820648379623889923,0.9855441050603985786438,0.1797042894177138805389,\
+0.0627280175685882568359,0.6279844292439520359039,0.8693526117131114006042,\
+0.1181543781422078609467,0.1908623259514570236206,0.0912145380862057209015,\
+0.7186726490035653114319,0.310268334578722715378,0.6592819057404994964600,\
+0.9106893003918230533600,0.9854423692449927330017,0.8546765870414674282074,\
+0.4121543709188699722290,0.2333141383714973926544,0.3814189555123448371887,\
+0.6619831356219947338104,0.212731502950191497803,0.0520866983570158481598,\
+0.9962206138297915458679,0.6885302006267011165619,0.6471334304660558700562,\
+0.1732599367387592792511,0.6790404403582215309143,0.7853972460143268108368,\
+0.5636796839535236358643,0.5331145809032022953033,0.9027821635827422142029,\
+0.0063843778334558010101,0.9165171254426240921021,0.4580909651704132556915,\
+0.8293677615001797676086,0.7187301176600158214569,0.4822947531938552856445,\
+0.9620302417315542697906,0.7949669538065791130066,0.3603135510347783565521,\
+0.4186353813856840133667,0.6742749665863811969757,0.9338985690847039222717,\
+0.18709085090085864067,0.1331541948020458221436,0.4923790604807436466217,\
+0.1599537869915366172791,0.8545161760412156581879,0.4317741785198450088501,\
+0.5531771448440849781036,0.2238912554457783699036,0.1766969445161521434784,\
+0.4150884225964546203613,0.6159632527269423007965,0.0658540828153491020203,\
+0.9070334821008145809174,0.0915193017572164535522,0.4515289147384464740753,\
+0.1814587051048874855042,0.8840930457226932048798,0.1760245300829410552979,\
+0.3308106199838221073151,0.2203056281432509422302,0.3864682218991219997406,\
+0.0431000906974077224731,0.2068966520018875598907,0.5356620447710156440735,\
+0.0403697001747786998749,0.3028300404548645019531,0.6841432997025549411774,\
+0.9040663270279765129089,0.1237034215591847896576,0.9687331896275281906128,\
+0.3681504433043301105499,0.1336043933406472206116,0.6103821019642055034637,\
+0.6861566565930843353271,0.6903465152718126773834,0.779607950709760189056,\
+0.7986211306415498256683,0.9899662975221872329712,0.8009328362531960010529,\
+0.6865246118977665901184,0.8669688436202704906464,0.0602840110659599304199,\
+0.6239373260177671909332,0.5747098876163363456726,0.2018211721442639827728,\
+0.9450219180434942245483,0.6681275893934071063995,0.3908910537138581275940,\
+0.8401706661097705364227,0.7179634161293506622314,0.6875333772040903568268,\
+0.6410528933629393577576,0.8713398925028741359711,0.5411411095410585403442,\
+0.7853284222073853015900,0.4244953142479062080383,0.1414492088370025157928,\
+0.1002616137266159057617,0.0548216500319540500641,0.3878128407523036003113,\
+0.1043689115904271602631,0.3819272350519895553589,0.3513077651150524616241,\
+0.3175459811463952064514,0.1629057596437633037567,0.2614045254886150360107,\
+0.2885272116400301456451,0.5902544697746634483337,0.3439738727174699306488,\
+0.8696897123008966445923,0.0534855094738304615021,0.1987623842433094978333,\
+0.6515000048093497753143,0.2086210027337074279785,0.1333819651044905185699,\
+0.5733251376077532768250,0.9408131926320493221283,0.9827877636998891830444,\
+0.5483977575786411762238,0.9164683455601334571838,0.6582687790505588054657,\
+0.1169865764677524566650,0.6840933994390070438385,0.2702485686168074607849,\
+0.2898568115197122097015,0.9279741663485765457153,0.3171655726619064807892,\
+0.0346859293058514595032,0.8625448155216872692,0.4192672073841094970703,\
+0.9283133395947515964508,0.1561186043545603752136,0.3421049430035054683685,\
+0.6677390020340681076050,0.8959637288935482501984,0.7042291918769478797913,\
+0.2711754958145320415497,0.7707630358636379241943,0.6646066964603960514069,\
+0.0564929535612463951111,0.4913068241439759731293,0.3226534072309732437134,\
+0.4814894613809883594513,0.4087979318574070930481,0.2927415999583899974823,\
+0.8891521319746971130371,0.7954202168621122837067,0.8309869421645998954773,\
+0.8356794654391705989838,0.4487133231014013290405,0.9114312161691486835480,\
+0.5860714400187134742737,0.186776056420058012009,0.2693342454731464385986,\
+0.9950512335635721683502,0.9318672632798552513123,0.8146264008246362209320,\
+0.1896832454949617385864,0.0199374002404510974884,0.1238022493198513984680,\
+0.8879826921038329601288,0.7732745558023452758789,0.7526164152659475803375,\
+0.8376457272097468376160,0.2204564376734197139740}
+
+#define ZSOURCEI {0.3044399749487638473511,0.3680851315148174762726,0.7309098849073052406311,\
+0.2054549823515117168427,0.0948474220931529998779,0.7900205166079103946686,\
+0.3616730114445090293884,0.5851024067960679531097,0.0693163666874170303345,\
+0.3493489888496696949005,0.1835746141150593757629,0.3968948009423911571503,\
+0.0996801331639289855957,0.8549251281656324863434,0.8357324106618762016296,\
+0.9418399124406278133392,0.0554450806230306625366,0.6700697620399296283722,\
+0.4463311964645981788635,0.1178311700932681560516,0.0399966575205326080322,\
+0.8887174264527857303619,0.1686335867270827293396,0.9620060822926461696625,\
+0.781102331355214118958,0.2049232018180191516876,0.6681626336649060249329,\
+0.7458390104584395885468,0.6444613933563232421875,0.5694789239205420017242,\
+0.7798063186928629875183,0.4667183174751698970795,0.2390516381710767745972,\
+0.2273887698538601398468,0.0535939196124672889709,0.0797578911297023296356,\
+0.0830229185521602630615,0.2299542189575731754303,0.4078942527994513511658,\
+0.3135930425487458705902,0.2988875750452280044556,0.0152183887548744678497,\
+0.6087857903912663459778,0.4139107796363532543182,0.8067577406764030456543,\
+0.1505197458900511264801,0.7943486524745821952820,0.6584644555114209651947,\
+0.9843795206397771835327,0.8309051920659840106964,0.7626284742727875709534,\
+0.9873227919451892375946,0.2627140469849109649658,0.2271525249816477298737,\
+0.242022148333489894867,0.5921032777987420558929,0.6258154083043336868286,\
+0.2771522742696106433868,0.8628354417160153388977,0.8079399424605071544647,\
+0.4837554544210433959961,0.0143989124335348606110,0.0487624881789088249207,\
+0.1519355042837560176849,0.8873454760760068893433,0.0273414407856762409210,\
+0.5470371553674340248108,0.8518478940241038799286,0.5534047596156597137451,\
+0.1433433503843843936920,0.8160062870010733604431,0.7087611532770097255707,\
+0.6693260166794061660767,0.9310019579716026782990,0.9888748200610280036926,\
+0.6374907079152762889862,0.9456876888871192932129,0.1145771169103682041168,\
+0.6323727769777178764343,0.7284730165265500545502,0.8856631275266408920288,\
+0.4942793031223118305206,0.0190941328182816505432,0.1748895938508212566376,\
+0.7399766482412815093994,0.4661670760251581668854,0.1322575574740767478943,\
+0.9087754092179238796234,0.11615646071732044220,0.7354039144702255725861,\
+0.1216390328481793403625,0.2898616599850356578827,0.7108344733715057373047,\
+0.3166244276799261569977,0.4294263450428843498230,0.6909029199741780757904,\
+0.1338429730385541915894,0.4151599411852657794952,0.3047454515472054481506,\
+0.323238662909716367722,0.2928581796586513519287,0.2828734577633440494537,\
+0.9256087234243750572205,0.1463391608558595180511,0.3073406759649515151978,\
+0.6423539933748543262482,0.8470350624993443489075,0.2050857576541602611542,\
+0.4205227121710777282715,0.7732202881015837192535,0.9940918935462832450867,\
+0.2385355173610150814056,0.87819238565862178802,0.8542838920839130878448,\
+0.9186090314760804176331,0.9039202476851642131805,0.2430246956646442413330,\
+0.6553216264583170413971,0.5383144235238432884216,0.4596298984251916408539,\
+0.1132094729691743850708,0.1722074192948639392853,0.0771417664363980293274,\
+0.2509303349070250988007,0.7141261845827102661133,0.2991535165347158908844,\
+0.4254599986597895622253,0.8421654864214360714,0.3318156134337186813354,\
+0.1318110679276287555695,0.6389746675267815589905,0.1391938696615397930145,\
+0.0569984130561351776123,0.9949800879694521427155,0.7950511714443564414978,\
+0.3458094871602952480316,0.8083905372768640518188,0.7886787918396294116974,\
+0.9252098770812153816223,0.0978971007280051708221,0.1040655449032783508301,\
+0.7463223063386976718903,0.2425431115552783012390,0.6190718798898160457611,\
+0.5496137794107198715210,0.1987607558257877826691,0.3828040296211838722229,\
+0.2415534253232181072235,0.5118484236299991607666,0.4379267231561243534088,\
+0.8779173558577895164490,0.1360241672955453395844,0.9468084294348955154419,\
+0.2738420856185257434845,0.5806620018556714057922,0.5942221391014754772186,\
+0.8508083224296569824219,0.378734225872904062271,0.2592755584046244621277,\
+0.7080181255005300045013,0.3032848816365003585815,0.0120116178877651691437,\
+0.0807306626811623573303,0.7887271861545741558075,0.5701906941831111907959,\
+0.2198487878777086734772,0.2014332404360175132751,0.3704045540653169155121,\
+0.2366845849901437759399,0.103130650240927934647,0.1840926231816411018372,\
+0.1408759090118110179901,0.8378689214587211608887,0.2475062184967100620270,\
+0.4595135403797030448914,0.6442520259879529476166,0.9563237931579351425171,\
+0.9093016912229359149933,0.552059986628592014313,0.0986777986399829387665,\
+0.2551880665123462677002,0.0510429129935801029205,0.287540963850915431976,\
+0.1730656377039849758148,0.4155373144894838333130,0.8203372103162109851837,\
+0.7022680984809994697571,0.0665632444433867931366,0.4468086212873458862305,\
+0.5658646025694906711578,0.8720351336523890495300,0.7345057590864598751068,\
+0.3390222620218992233276,0.9842283879406750202179,0.3797692963853478431702,\
+0.6046022842638194561005,0.5255502574145793914795,0.4914151043631136417389,\
+0.6406045397743582725525,0.6271067834459245204926}
+
+#define ZRESULTR {0.8616789149319691309969,1.7528026973616770423092,-0.8951576871785223987743,\
+1.65839939772781952421,2.670002318435218402470,-0.2545370391954314692740,\
+3.0388538062879217882539,0.2458549627872582132859,1.613753544958956620547,\
+2.373140931257777808128,4.6441801233654604885714,1.0634345748771927286924,\
+1.8994737292284431529055,-2.2038440203063891509316,-0.5865941523645769040129,\
+-1.7230123422001577537799,4.1053385752577806755426,0.2012772387479372093733,\
+4.5889850773872540301568,1.7048706561180972940406,2.2898980543543361321213,\
+-1.3470616397449584056289,1.000979918376255772827,-1.998745505240199671348,\
+-0.4562266859878671976247,1.4173389563254865652908,0.1005345377926576272420,\
+-0.3529055360142766550879,0.7252834368660135977436,1.6469252220572825340383,\
+-0.4467771279955162211373,0.8387209999987794706300,1.1050928340202259558822,\
+2.7952258554924300781863,9.5990623048041356923932,1.4870960004060611581167,\
+1.1343408485170072275139,3.664612325782657276108,4.3703600670610898148993,\
+0.9850722877732481785884,1.1986551091809227731488,1.2329567566066641504108,\
+0.8800935914266996284994,1.1832797973754654030643,-1.2910350436339537161246,\
+7.6571266019263468649569,-2.4697863053099986530015,0.3907140975028082774401,\
+-1.655858606271026545187,-0.5746050598208488624508,-0.4432229757632685229751,\
+-2.9672355970693655713433,1.3424314109887605095395,0.9766924789772336579219,\
+8.4134496859782270661299,1.0052614992336186272581,0.5743785834192948192012,\
+1.1969550027714319639927,-1.929705102086765711178,-1.7419725915375741109870,\
+1.6154412531361730387403,3.4109538321538344085582,7.9439933441705683492273,\
+0.9533381558732610949747,-3.7544424962625675412653,2.8656935239804841586420,\
+2.0671417342103679537502,-1.992605711686495695290,0.8871291147322790671126,\
+8.6682584526683399417379,-1.8914875129526329544660,-0.1401839917101320720505,\
+0.0776428549278006530088,-2.560598020200964608506,-5.5730608716054170770349,\
+0.1580601872370170912774,-0.7747638844786981504598,2.9997587850927698305270,\
+0.1654170760372596638010,-0.7609360918468449641594,-1.2203777718239325889016,\
+1.4986628046871217634362,1.6729053694884241654250,1.381936351079181113377,\
+-0.3450348611667466425246,1.9706824980594530583033,1.1101876800122791877357,\
+-4.0234586128898426338196,1.1906849924222373537930,-0.3456983902450189716227,\
+1.459474884821820195313,6.0143936939361175575414,-0.0988538832443286719087,\
+1.597480633260187854461,0.9129179205342567993142,-0.0488550375477847867445,\
+1.0523032581716083022627,0.9288642069528815214952,2.6218635570145862878633,\
+0.8072263924219229558332,1.5687383989731884526009,3.842899231404802939949,\
+-4.2624261266025849081984,1.2547786671163203564561,7.0708952400269708959968,\
+0.2138025786160810681746,-0.5039897261739162415140,3.6311482225254705369366,\
+2.7511697563589119219785,-1.0199337285771719052718,-3.9613785741953506658319,\
+5.3644844232216355450760,-4.261894060044243204288,-2.440577323716713653567,\
+-2.5162841502447741426352,-3.5973154891472156613474,0.9736685483701841281601,\
+0.2600685777468328963025,1.2216142738714919069309,0.7803738463829824612006,\
+8.5132680918277277015704,4.2958732896863782713126,2.4210488328114880829389,\
+5.79755622526757630197,-0.3837915438103189358365,3.75964173341358565139,\
+2.4386368546342671592697,-2.6776116153796971630641,2.5102046010802867570533,\
+5.821177306248865868099,0.2640059162189042352153,1.31446884371506267364,\
+1.2488505950260830879017,-0.7482976046844636019983,-0.6275966789165404735584,\
+0.8893791469828959961319,-0.6903683581860716733658,-0.5450973252013330272447,\
+-1.1028092549899868313190,1.4183297900536229185775,1.773434980128008042755,\
+-0.2859252183654940604463,3.3012839410905678860786,0.3197431184385559066463,\
+2.2263782918939738487,1.0146592610810074575056,1.0051892636742449926857,\
+3.8066700246852320788093,0.6179593115281443171938,0.7249522760637888696422,\
+-1.6307732738859830323719,8.3014440376437921287334,-5.5006403965152692592255,\
+2.8552972304138433123910,1.9111692714948702587208,0.9158531650125845136046,\
+-0.4956155140563224259509,3.1079184772588979157604,1.5408715933614589577161,\
+-0.1158617194706384467828,6.4886221326459514457952,2.0749108619541400955200,\
+1.0644832532013759340828,-1.769719547358157507588,0.6696790607045245424800,\
+7.4150575771959807980238,1.2812290258043323998294,1.4461251309266722753222,\
+3.9789946052408695642555,7.6489498856535602655526,4.6130068144799594165306,\
+1.7697609579312818528507,-2.069533011859056692572,3.8895055335340873448047,\
+0.5587033140125831076617,0.2704103697575463982616,-1.2405136002402707973147,\
+-1.5134557095053997599621,0.7566012248243810800474,1.9117596963451992664318,\
+6.447932326957059423478,6.2003146906774571078813,5.344469754581457898723,\
+6.3131049040564706231748,1.6189521464425622454542,-2.550619599252561098268,\
+-0.1781945407584817342439,1.5193399835582135359857,0.9590574537903557850171,\
+2.6165522176992435099407,-3.6188103766399173366608,-0.7842216609502735691350,\
+1.0995885822264845899099,-0.6708497380942372023682,0.8529889923514888394607,\
+1.3729938244229744626068,2.0937757207972880202362,2.4059764571152468803916,\
+0.6578397026948303860650,0.2101416292188336421010}
+
+#define ZRESULTI {0.7272548245748866602156,1.9854303798419310478351,7.9457339679995211412233,\
+0.8488412125630352411676,0.5925642663233093854203,1.0039936024574043216262,\
+3.3414071705695578273776,1.081403318108233868600,0.2597757190370896807075,\
+2.4651157060741901716483,2.0890001084665330566281,1.3789900497554921088295,\
+0.4437915251064282751159,5.2455794258294652365748,1.5894481231762551676212,\
+2.5300661616939024156636,0.5269825145414556155643,7.2114139192406465639351,\
+7.6023759189514121814568,0.474253708603649237752,0.2114880398457448518190,\
+2.615809838094426353905,0.40946194724304191270,2.660538085383924222782,\
+1.96836124960102032411,0.7232671662286862535041,3.111923291962274351619,\
+2.3906358097335185242116,8.3281383621146503060118,6.2028635418634419096406,\
+1.9540840065283944237962,1.5494625392422922693925,0.678202414336372183534,\
+1.6137618479690827300033,1.1906180579664376040228,0.2762165158082148241903,\
+0.2195296884715036700442,2.1446447456633843664520,5.9741482912408789829328,\
+0.867597682821533044972,0.9856997170507159067299,0.0432225133986508733286,\
+5.157507023966152459593,1.6654420749486735786604,4.3768952511866894283799,\
+2.7654687058579336955688,9.3496470896606780343063,7.1454288620924977237792,\
+1.9826603369952136013410,1.6118978629668390123442,2.3655185893491501580854,\
+3.5043054723514432957643,0.9281385166491339377970,0.5631636514321668451899,\
+5.2429430139302253266465,4.7766052326802679317552,4.4001190809809767046090,\
+0.8877792684794596489439,4.368513033448009785786,5.8469722698220429890625,\
+3.2860624631665138473124,0.1131306785331901154645,0.8957170057781025374055,\
+0.3478275260751592101727,7.3475483360254925102595,0.1806513152317329173879,\
+6.4267295981620362610442,4.8385133662587431757629,2.9034462647978491744993,\
+2.9696777404396668131881,5.9431363200854443462617,2.288232180725223052775,\
+2.6208664370161969259243,3.9693733894002809492463,6.5342907486237020719955,\
+1.5303355006050158859665,1.1162736854609731640409,0.8102944693911555695820,\
+1.4357885386399356075771,7.1128736564949752718690,2.4113210957685655699834,\
+3.2448135685253003401840,0.0735981604163226527104,0.5886735706121437594618,\
+2.5776994154551164939448,3.629648394334391792171,0.3489446690644626425382,\
+6.9989048057282028381110,0.3262782224609265258053,2.8071160078618211386470,\
+0.4198114062820728631387,4.7398318369933782889802,1.4965081339145251959621,\
+1.4268961804460684739126,1.3873315379595159146930,2.4343374430326063517782,\
+0.3349767990169579268134,1.3153540511429153703205,2.2160059373349834110911,\
+0.7434370339011254769090,1.253936082334201174149,2.929523877257661279572,\
+6.7911802335851190193239,0.4395719515095502516466,6.0491461603781946365643,\
+2.324454495134102849363,1.263389181071626898856,1.8546860110985297076525,\
+3.9998192433092101261,4.7944107664763828680066,4.5331878790851858340716,\
+3.2834478309428574149820,8.7932187934310537258398,5.8331542843869588210737,\
+4.1564133542481211947006,6.4227435117275550879867,0.6098783468239901139896,\
+4.1986123528738117371972,3.5516439676096513977654,1.3871043178012487651074,\
+2.2708618645232787613963,1.7986812579372670750644,0.4346204841779990335482,\
+3.7800771946382365484851,5.2094034804655127146589,3.0955575196143279015359,\
+3.6332179827516117853747,6.9371912371180162182327,2.4051741186173338782339,\
+1.8230887730163647386661,2.6444893659134645069742,0.4363389413001144689908,\
+0.1648513733929060642858,0.8527852017899220093966,2.3603668450398678224644,\
+0.9089049761135811200674,2.308482167770112614136,2.1783058145209865941183,\
+1.760657933306752465086,0.3252423522775149677955,0.4332745364849133751228,\
+1.922093093505325978043,2.0627370874500741138036,2.184596685297794049774,\
+7.065327858525169979487,0.4997624596555385045882,1.2195103000378291202566,\
+2.3664724579469695875389,1.4939021538810592915070,1.1500903795661745476764,\
+3.3700776947908237524132,2.6885676432811540514933,7.8817788746511769915060,\
+2.0842223123540501994455,8.0258609977666459656120,4.459626216287859712395,\
+1.211699888667206126414,3.6993867326108555992903,1.0474037470444790276503,\
+1.9457553430070655409168,5.4468957190088280739815,0.0574020495019843535189,\
+0.200187099983916316770,7.068768975957844702407,2.5390022146337085651169,\
+4.1109611351982495719426,0.6408861046921948689814,1.6557914176531909333789,\
+2.4121782951381569581883,1.8513041911556680219064,2.0815970551782250197448,\
+0.5950929849744456268112,5.5238367721873160576251,2.4925246722707656843454,\
+0.9924655082402137340480,3.0877905115051524909120,1.6970418763867407552226,\
+2.6253251426459978112860,2.4490847102298514137431,0.4420113886405674930025,\
+4.2948005817238108505762,0.7321010758042626465070,4.1657752085548631626466,\
+2.6579704039050806585465,2.2968127063505034968216,7.7460044759776618406022,\
+3.851297516891551087070,0.2347062006554227753252,1.5927846479405329827017,\
+9.5341720234343370066199,7.7442521101341821321284,6.478396320140080710814,\
+1.0891470158039435744968,0.8038176255057727370712,1.0202487324661473344634,\
+7.6035293179001266494765,5.5512724543076572558675,5.1202912658114749788751,\
+6.849389505178533177343,1.6479880468591965314573}
+
+
+
+
+void dexp10sTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dexp10s(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zexp10sTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zexp10s(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dexp10aTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dexp10a(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+}
+
+void zexp10aTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ zexp10a(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+int testExp10(void) {
+ printf("\n>>>> Double 10-Base Exponential Tests\n");
+ dexp10sTest();
+ zexp10sTest();
+ dexp10aTest();
+ zexp10aTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testExp10() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/testExp10.h b/2.3-1/src/c/elementaryFunctions/exp10/testExp10.h
new file mode 100644
index 00000000..8e3bbdbd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/testExp10.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTEXP10_H_
+#define _TESTEXP10_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "exp10.h"
+#include "constant.h"
+
+
+void sexp10sTest(void);
+
+void dexp10sTest(void);
+
+void cexp10sTest(void);
+
+void zexp10sTest(void);
+
+void sexp10aTest(void);
+
+void dexp10aTest(void);
+
+void cexp10aTest(void);
+
+void zexp10aTest(void);
+
+int testExp10(void);
+
+#endif /* ! _TESTEXP10_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/testFloatExp10.c b/2.3-1/src/c/elementaryFunctions/exp10/testFloatExp10.c
new file mode 100644
index 00000000..234c66dd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/testFloatExp10.c
@@ -0,0 +1,495 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testExp10.h"
+
+#define SOURCE {0.3796988371759653091431f,0.3062356826849281787872f,0.3880051793530583381653f,\
+0.1047293278388679027557f,0.7603831812739372253418f,0.0340930395759642124176f,\
+0.1423966242000460624695f,0.5554559468291699886322f,0.8031897451728582382202f,\
+0.5183992316015064716339f,0.1518561029806733131409f,0.5884730662219226360321f,\
+0.2545093484222888946533f,0.9992679939605295658112f,0.6398976957425475120544f,\
+0.5506716123782098293304f,0.4607007671147584915161f,0.5933007937856018543243f,\
+0.6538193570449948310852f,0.4168340521864593029022f,0.9910155385732650756836f,\
+0.3720780410803854465485f,0.7061824081465601921082f,0.5780865414999425411224f,\
+0.602319641038775444031f,0.5715096746571362018585f,0.0549629041925072669983f,\
+0.1205854485742747784f,0.0143620483577251434326f,0.0257951230742037296295f,\
+0.8411248764023184776306f,0.4381882525049149990082f,0.4643401596695184707642f,\
+0.4197426405735313892365f,0.8023654492571949958801f,0.5228588166646659374237f,\
+0.5095121040940284729004f,0.4531980180181562900543f,0.7817818326875567436218f,\
+0.776557037141174077988f,0.0466059204190969467163f,0.5113326688297092914581f,\
+0.7502101892605423927307f,0.6883628661744296550751f,0.0167756117880344390869f,\
+0.9345410899259150028229f,0.5609863763675093650818f,0.2205847105942666530609f,\
+0.7648540753871202468872f,0.4816976976580917835236f,0.1558785634115338325500f,\
+0.2476022052578628063202f,0.5216529071331024169922f,0.0805230387486517429352f,\
+0.4409417239949107170105f,0.8911933614872395992279f,0.9780590813606977462769f,\
+0.4588093762286007404327f,0.5510440031066536903381f,0.0960960905067622661591f,\
+0.4196785055100917816162f,0.7502556503750383853912f,0.7218149593099951744080f,\
+0.2895541018806397914886f,0.3907764498144388198853f,0.6686618146486580371857f,\
+0.4877656819298863410950f,0.4685971769504249095917f,0.3562648519873619079590f,\
+0.3442325466312468051910f,0.4253307832404971122742f,0.5588058172725141048431f,\
+0.3304864969104528427124f,0.4157403339631855487823f,0.1595822656527161598206f,\
+0.3883102680556476116180f,0.9415460713207721710205f,0.4722979352809488773346f,\
+0.8533652639016509056091f,0.1207739165984094142914f,0.8999380934983491897583f,\
+0.4384902161546051502228f,0.8976056622341275215149f,0.4911110657267272472382f,\
+0.3402217179536819458008f,0.9966153600253164768219f,0.0215395865961909294128f,\
+0.6876890822313725948334f,0.0044924151152372360229f,0.6397854541428387165070f,\
+0.5416147718206048011780f,0.2247649203054606914520f,0.7364005260169506072998f,\
+0.4496364505030214786530f,0.9678138038143515586853f,0.6489060199819505214691f,\
+0.2544666919857263565063f,0.1923975017853081226349f,0.6861492367461323738098f,\
+0.4231455805711448192596f,0.6734441593289375305176f,0.8270696722902357578278f,\
+0.9360805852338671684265f,0.8326222090981900691986f,0.7424779590219259262085f,\
+0.0194640238769352436066f,0.8016031915321946144104f,0.2554539437405765056610f,\
+0.2688109613955020904541f,0.7558490769006311893463f,0.4347589677199721336365f,\
+0.6425966522656381130219f,0.6957868058234453201294f,0.6499576461501419544220f,\
+0.2303190128877758979797f,0.5504368054680526256561f,0.3038997054100036621094f,\
+0.0371030517853796482086f,0.1703881053254008293152f,0.5698686256073415279388f,\
+0.0036411266773939132690f,0.4491547052748501300812f,0.0576810697093605995178f,\
+0.4956056098453700542450f,0.1888933442533016204834f,0.5641230703331530094147f,\
+0.8562210192903876304626f,0.0794764286838471889496f,0.6196198705583810806274f,\
+0.2241039988584816455841f,0.8582094730809330940247f,0.7114551994018256664276f,\
+0.8026027604937553405762f,0.6153324418701231479645f,0.8958183480426669120789f,\
+0.8721761344932019710541f,0.8389767911285161972046f,0.2040955354459583759308f,\
+0.3166538262739777565002f,0.7006825651042163372040f,0.2073105163872241973877f,\
+0.5222550616599619388580f,0.9416420971974730491638f,0.52116033947095274925f,\
+0.4509841967374086380005f,0.3961292845197021961212f,0.7240869747474789619446f,\
+0.6724055963568389415741f,0.2386146038770675659180f,0.7124841609038412570953f,\
+0.3286493895575404167175f,0.4837769134901463985443f,0.7662767004221677780151f,\
+0.3153839264996349811554f,0.3489987561479210853577f,0.7413818310014903545380f,\
+0.9702721945941448211670f,0.1276510567404329776764f,0.3828862151131033897400f,\
+0.4882477498613297939301f,0.5191949699074029922485f,0.0906856027431786060333f,\
+0.6833897503092885017395f,0.5022272053174674510956f,0.0540433898568153381348f,\
+0.0163939022459089756012f,0.6050811810418963432312f,0.2953875153325498104095f,\
+0.6451294776052236557007f,0.9449766655452549457550f,0.5638650292530655860901f,\
+0.9786348040215671062469f,0.9345349706709384918213f,0.1023264364339411258698f,\
+0.7292392617091536521912f,0.8353224000893533229828f,0.9328642506152391433716f,\
+0.0507844281382858753204f,0.1677279071882367134094f,0.9475936102680861949921f,\
+0.9390441477298736572266f,0.1270067342557013034821f,0.6562355486676096916199f,\
+0.7192088677547872066498f,0.5519206207245588302612f,0.7606899146921932697296f,\
+0.8840736905112862586975f,0.6386072556488215923309f,0.2424023114144802093506f,\
+0.7679059565998613834381f,0.2624090006574988365173f,0.1259524053893983364105f,\
+0.4549009744077920913696f,0.2127966103143990039825f,0.0598834278061985969543f,\
+0.8079127701930701732635f,0.7068187817931175231934f,0.9313771002925932407379f,\
+0.0831561936065554618835f,0.0639262734912335872650f}
+
+#define RESULT {2.3971700177038997026102f,2.0241173275316319823958f,2.4434596929789558217294f,\
+1.2727096230040590985055f,5.7594787634974791146192f,1.0816656533775219628524f,\
+1.3880228773309635226241f,3.5929894899598955326780f,6.3560857138200033134012f,\
+3.2991285007258008832309f,1.4185874159639277891642f,3.8767970491010381728358f,\
+1.7968397576993500042164f,9.9831591347336789965539f,4.3641301682226361080552f,\
+3.5536251298653307451048f,2.8886888633814562510338f,3.9201329280029257873252f,\
+4.506292282304419138939f,2.6111634148093250118450f,9.7952503109731186015097f,\
+2.3554725153952857930051f,5.0837291957799548569596f,3.7851800417010572630261f,\
+4.0023921772430028909184f,3.7282899025795783742865f,1.1349138714412994044523f,\
+1.3200350064956956064322f,1.033622723333016191205f,1.0611948240957502775927f,\
+6.9362522133054556050524f,2.7427628125876060138921f,2.9129978203666571090480f,\
+2.6287097779191044288893f,6.3440332316119087963102f,3.3331803790647938079417f,\
+3.232303288716906752853f,2.8392132821292248578970f,6.0503685885843978553567f,\
+5.97801550527315583849f,1.1132838793654469267125f,3.245881561190152808649f,\
+5.6261355226100322468596f,4.879360051235307693673f,1.0393830059871540516525f,\
+8.600844382521195541358f,3.6390362044693791432337f,1.6618227902609816748480f,\
+5.8190766171103653903174f,3.0317800975513509165182f,1.4317874896288145247780f,\
+1.7684883582783652578030f,3.3239379437878064926792f,1.2037132434952326764943f,\
+2.7602074516612016275019f,7.7838303437469935630588f,9.5073412259646765676280f,\
+2.876135722709581621359f,3.5566735327883938211357f,1.2476595365735951848052f,\
+2.6283216080771176770270f,5.626724486525223944966f,5.2700527142503661437445f,\
+1.947843685866482488223f,2.4591014722412456450229f,4.6629613384726322777851f,\
+3.0744375934314547293980f,2.941691847776138235560f,2.2712495380631962937912f,\
+2.2091873443061853521385f,2.6627523904580243652163f,3.620810677149941980701f,\
+2.1403583776871992760960f,2.60459578833533411668f,1.44405011565138674534f,\
+2.4451768086326421958177f,8.7406971172900771449576f,2.9668660249388048022468f,\
+7.1345282822869320327186f,1.3206079780376647203610f,7.9421501528532889579992f,\
+2.7446705104699793409395f,7.899610206034289205945f,3.0982115292188217026137f,\
+2.188878814912672332582f,9.9223686842029490406958f,1.050847236808647444661f,\
+4.8717958623764170411619f,1.0103978539346472054206f,4.3630024226971446665857f,\
+3.4802846963616036468636f,1.6778955425132806578148f,5.4500504945081766905446f,\
+2.8160246398239912046790f,9.2856819400663770380788f,4.4555982016116564281560f,\
+1.7966632806306144232167f,1.5573904303972738727424f,4.8545528865355054293218f,\
+2.6493880955344351058045f,4.7145924820058668913703f,6.715365764647851953839f,\
+8.6313869205483300106607f,6.8017741785747647398352f,5.5268535777229557126589f,\
+1.0458370517364794505255f,6.3329081834648581761371f,1.8007521573290650174215f,\
+1.8569959706339840277423f,5.6996616704912836937069f,2.7211906353565828986518f,\
+4.39133583975054442305f,4.9634860523035060353436f,4.4664003219774368602657f,\
+1.6994915629457518768675f,3.5517043359266669000363f,2.0132592604656482926373f,\
+1.089188511318553986840f,1.4804307775633922528158f,3.7142285642082217833604f,\
+1.0084192481976341770888f,2.8129026699324310989425f,1.142039354028792752516f,\
+3.1304416262076188992580f,1.5448749964710146720392f,3.6654143041103313116480f,\
+7.181596810407055997416f,1.200815897009761545888f,4.1650466551411478022260f,\
+1.6753440162955879344509f,7.21455374553604489307f,5.1458272136838258958846f,\
+6.3475007446385660614396f,4.1241309049764449667919f,7.8671666160643907161898f,\
+7.450340721306332625318f,6.9020291813359317956156f,1.5999099356849897368704f,\
+2.0732602743658210542321f,5.0197555099972408498843f,1.6117976431404783532741f,\
+3.3285498202301311287954f,8.7426299668587681424015f,3.3201701404059416056214f,\
+2.824777184045289768477f,2.4895983330428896884712f,5.297695284941288385028f,\
+4.7033315715610184426509f,1.7322660897889763376156f,5.1580335293393115847493f,\
+2.1313235787699511547544f,3.0463297621649392254994f,5.8381695091926415486228f,\
+2.0672068075526839336931f,2.2335658257207593457849f,5.5129217858217156589262f,\
+9.3383940240121710019139f,1.3416865210022335119788f,2.414828068089148516151f,\
+3.0778521213560718905455f,3.3051788871815572790069f,1.2322124790790967008292f,\
+4.8238050773970124751600f,3.1785365175695079464901f,1.1325135056912927211670f,\
+1.038469874168215900667f,4.0279231974946911876145f,1.97418348876764548905f,\
+4.4170211379151878006155f,8.8100153590470213771368f,3.663237102755284801958f,\
+9.5199529943728755654320f,8.6007231965720354338600f,1.2656873409568392130353f,\
+5.3609192017188229684166f,6.8441954007674699056452f,8.5676999890922083125133f,\
+1.1240468894427289026083f,1.471390362736320067683f,8.8632624680127776173322f,\
+8.690487669968261386089f,1.3396974608773437598330f,4.5314328497492990521778f,\
+5.2385231533328031616747f,3.5638598811998751791918f,5.7635480038278910086547f,\
+7.6572652334911666116568f,4.351182064426246220989f,1.7474401555184173595592f,\
+5.8601125417902917291713f,1.8298226565740485227707f,1.336449046213224356450f,\
+2.8503682671020214023372f,1.6322873327021125700043f,1.1478454784492588824918f,\
+6.4255864384701686375934f,5.0911838672535516536755f,8.538411872415464287656f,\
+1.211033602346728965671f,1.1585806569998515769271f}
+
+#define CSOURCER {0.0521394181996583938599f,0.4229906541295349597931f,0.9028727160766720771790f,\
+0.270216043572872877121f,0.4369520992040634155273f,0.0152578153647482395172f,\
+0.6548111913725733757019f,0.0449309810064733028412f,0.2133925389498472213745f,\
+0.5342523609288036823273f,0.7069207737222313880920f,0.2409008811227977275848f,\
+0.2901745550334453582764f,0.7550916881300508975983f,0.2289740880951285362244f,\
+0.4858699417673051357269f,0.6168978903442621231079f,0.8581895199604332447052f,\
+0.9484143527224659919739f,0.2478762450627982616425f,0.3616605177521705627441f,\
+0.4686846160329878330231f,0.0340223712846636772156f,0.5221414058469235897064f,\
+0.3054678197950124740601f,0.2017288585193455219269f,0.4932554000988602638245f,\
+0.3831945951096713542938f,0.9221886433660984039307f,0.8073847130872309207916f,\
+0.3020078903064131736755f,0.2459809384308755397797f,0.1128082294017076492310f,\
+0.5088820648379623889923f,0.9855441050603985786438f,0.1797042894177138805389f,\
+0.0627280175685882568359f,0.6279844292439520359039f,0.8693526117131114006042f,\
+0.1181543781422078609467f,0.1908623259514570236206f,0.0912145380862057209015f,\
+0.7186726490035653114319f,0.310268334578722715378f,0.6592819057404994964600f,\
+0.9106893003918230533600f,0.9854423692449927330017f,0.8546765870414674282074f,\
+0.4121543709188699722290f,0.2333141383714973926544f,0.3814189555123448371887f,\
+0.6619831356219947338104f,0.212731502950191497803f,0.0520866983570158481598f,\
+0.9962206138297915458679f,0.6885302006267011165619f,0.6471334304660558700562f,\
+0.1732599367387592792511f,0.6790404403582215309143f,0.7853972460143268108368f,\
+0.5636796839535236358643f,0.5331145809032022953033f,0.9027821635827422142029f,\
+0.0063843778334558010101f,0.9165171254426240921021f,0.4580909651704132556915f,\
+0.8293677615001797676086f,0.7187301176600158214569f,0.4822947531938552856445f,\
+0.9620302417315542697906f,0.7949669538065791130066f,0.3603135510347783565521f,\
+0.4186353813856840133667f,0.6742749665863811969757f,0.9338985690847039222717f,\
+0.18709085090085864067f,0.1331541948020458221436f,0.4923790604807436466217f,\
+0.1599537869915366172791f,0.8545161760412156581879f,0.4317741785198450088501f,\
+0.5531771448440849781036f,0.2238912554457783699036f,0.1766969445161521434784f,\
+0.4150884225964546203613f,0.6159632527269423007965f,0.0658540828153491020203f,\
+0.9070334821008145809174f,0.0915193017572164535522f,0.4515289147384464740753f,\
+0.1814587051048874855042f,0.8840930457226932048798f,0.1760245300829410552979f,\
+0.3308106199838221073151f,0.2203056281432509422302f,0.3864682218991219997406f,\
+0.0431000906974077224731f,0.2068966520018875598907f,0.5356620447710156440735f,\
+0.0403697001747786998749f,0.3028300404548645019531f,0.6841432997025549411774f,\
+0.9040663270279765129089f,0.1237034215591847896576f,0.9687331896275281906128f,\
+0.3681504433043301105499f,0.1336043933406472206116f,0.6103821019642055034637f,\
+0.6861566565930843353271f,0.6903465152718126773834f,0.779607950709760189056f,\
+0.7986211306415498256683f,0.9899662975221872329712f,0.8009328362531960010529f,\
+0.6865246118977665901184f,0.8669688436202704906464f,0.0602840110659599304199f,\
+0.6239373260177671909332f,0.5747098876163363456726f,0.2018211721442639827728f,\
+0.9450219180434942245483f,0.6681275893934071063995f,0.3908910537138581275940f,\
+0.8401706661097705364227f,0.7179634161293506622314f,0.6875333772040903568268f,\
+0.6410528933629393577576f,0.8713398925028741359711f,0.5411411095410585403442f,\
+0.7853284222073853015900f,0.4244953142479062080383f,0.1414492088370025157928f,\
+0.1002616137266159057617f,0.0548216500319540500641f,0.3878128407523036003113f,\
+0.1043689115904271602631f,0.3819272350519895553589f,0.3513077651150524616241f,\
+0.3175459811463952064514f,0.1629057596437633037567f,0.2614045254886150360107f,\
+0.2885272116400301456451f,0.5902544697746634483337f,0.3439738727174699306488f,\
+0.8696897123008966445923f,0.0534855094738304615021f,0.1987623842433094978333f,\
+0.6515000048093497753143f,0.2086210027337074279785f,0.1333819651044905185699f,\
+0.5733251376077532768250f,0.9408131926320493221283f,0.9827877636998891830444f,\
+0.5483977575786411762238f,0.9164683455601334571838f,0.6582687790505588054657f,\
+0.1169865764677524566650f,0.6840933994390070438385f,0.2702485686168074607849f,\
+0.2898568115197122097015f,0.9279741663485765457153f,0.3171655726619064807892f,\
+0.0346859293058514595032f,0.8625448155216872692f,0.4192672073841094970703f,\
+0.9283133395947515964508f,0.1561186043545603752136f,0.3421049430035054683685f,\
+0.6677390020340681076050f,0.8959637288935482501984f,0.7042291918769478797913f,\
+0.2711754958145320415497f,0.7707630358636379241943f,0.6646066964603960514069f,\
+0.0564929535612463951111f,0.4913068241439759731293f,0.3226534072309732437134f,\
+0.4814894613809883594513f,0.4087979318574070930481f,0.2927415999583899974823f,\
+0.8891521319746971130371f,0.7954202168621122837067f,0.8309869421645998954773f,\
+0.8356794654391705989838f,0.4487133231014013290405f,0.9114312161691486835480f,\
+0.5860714400187134742737f,0.186776056420058012009f,0.2693342454731464385986f,\
+0.9950512335635721683502f,0.9318672632798552513123f,0.8146264008246362209320f,\
+0.1896832454949617385864f,0.0199374002404510974884f,0.1238022493198513984680f,\
+0.8879826921038329601288f,0.7732745558023452758789f,0.7526164152659475803375f,\
+0.8376457272097468376160f,0.2204564376734197139740f}
+
+#define CSOURCEI {0.3044399749487638473511f,0.3680851315148174762726f,0.7309098849073052406311f,\
+0.2054549823515117168427f,0.0948474220931529998779f,0.7900205166079103946686f,\
+0.3616730114445090293884f,0.5851024067960679531097f,0.0693163666874170303345f,\
+0.3493489888496696949005f,0.1835746141150593757629f,0.3968948009423911571503f,\
+0.0996801331639289855957f,0.8549251281656324863434f,0.8357324106618762016296f,\
+0.9418399124406278133392f,0.0554450806230306625366f,0.6700697620399296283722f,\
+0.4463311964645981788635f,0.1178311700932681560516f,0.0399966575205326080322f,\
+0.8887174264527857303619f,0.1686335867270827293396f,0.9620060822926461696625f,\
+0.781102331355214118958f,0.2049232018180191516876f,0.6681626336649060249329f,\
+0.7458390104584395885468f,0.6444613933563232421875f,0.5694789239205420017242f,\
+0.7798063186928629875183f,0.4667183174751698970795f,0.2390516381710767745972f,\
+0.2273887698538601398468f,0.0535939196124672889709f,0.0797578911297023296356f,\
+0.0830229185521602630615f,0.2299542189575731754303f,0.4078942527994513511658f,\
+0.3135930425487458705902f,0.2988875750452280044556f,0.0152183887548744678497f,\
+0.6087857903912663459778f,0.4139107796363532543182f,0.8067577406764030456543f,\
+0.1505197458900511264801f,0.7943486524745821952820f,0.6584644555114209651947f,\
+0.9843795206397771835327f,0.8309051920659840106964f,0.7626284742727875709534f,\
+0.9873227919451892375946f,0.2627140469849109649658f,0.2271525249816477298737f,\
+0.242022148333489894867f,0.5921032777987420558929f,0.6258154083043336868286f,\
+0.2771522742696106433868f,0.8628354417160153388977f,0.8079399424605071544647f,\
+0.4837554544210433959961f,0.0143989124335348606110f,0.0487624881789088249207f,\
+0.1519355042837560176849f,0.8873454760760068893433f,0.0273414407856762409210f,\
+0.5470371553674340248108f,0.8518478940241038799286f,0.5534047596156597137451f,\
+0.1433433503843843936920f,0.8160062870010733604431f,0.7087611532770097255707f,\
+0.6693260166794061660767f,0.9310019579716026782990f,0.9888748200610280036926f,\
+0.6374907079152762889862f,0.9456876888871192932129f,0.1145771169103682041168f,\
+0.6323727769777178764343f,0.7284730165265500545502f,0.8856631275266408920288f,\
+0.4942793031223118305206f,0.0190941328182816505432f,0.1748895938508212566376f,\
+0.7399766482412815093994f,0.4661670760251581668854f,0.1322575574740767478943f,\
+0.9087754092179238796234f,0.11615646071732044220f,0.7354039144702255725861f,\
+0.1216390328481793403625f,0.2898616599850356578827f,0.7108344733715057373047f,\
+0.3166244276799261569977f,0.4294263450428843498230f,0.6909029199741780757904f,\
+0.1338429730385541915894f,0.4151599411852657794952f,0.3047454515472054481506f,\
+0.323238662909716367722f,0.2928581796586513519287f,0.2828734577633440494537f,\
+0.9256087234243750572205f,0.1463391608558595180511f,0.3073406759649515151978f,\
+0.6423539933748543262482f,0.8470350624993443489075f,0.2050857576541602611542f,\
+0.4205227121710777282715f,0.7732202881015837192535f,0.9940918935462832450867f,\
+0.2385355173610150814056f,0.87819238565862178802f,0.8542838920839130878448f,\
+0.9186090314760804176331f,0.9039202476851642131805f,0.2430246956646442413330f,\
+0.6553216264583170413971f,0.5383144235238432884216f,0.4596298984251916408539f,\
+0.1132094729691743850708f,0.1722074192948639392853f,0.0771417664363980293274f,\
+0.2509303349070250988007f,0.7141261845827102661133f,0.2991535165347158908844f,\
+0.4254599986597895622253f,0.8421654864214360714f,0.3318156134337186813354f,\
+0.1318110679276287555695f,0.6389746675267815589905f,0.1391938696615397930145f,\
+0.0569984130561351776123f,0.9949800879694521427155f,0.7950511714443564414978f,\
+0.3458094871602952480316f,0.8083905372768640518188f,0.7886787918396294116974f,\
+0.9252098770812153816223f,0.0978971007280051708221f,0.1040655449032783508301f,\
+0.7463223063386976718903f,0.2425431115552783012390f,0.6190718798898160457611f,\
+0.5496137794107198715210f,0.1987607558257877826691f,0.3828040296211838722229f,\
+0.2415534253232181072235f,0.5118484236299991607666f,0.4379267231561243534088f,\
+0.8779173558577895164490f,0.1360241672955453395844f,0.9468084294348955154419f,\
+0.2738420856185257434845f,0.5806620018556714057922f,0.5942221391014754772186f,\
+0.8508083224296569824219f,0.378734225872904062271f,0.2592755584046244621277f,\
+0.7080181255005300045013f,0.3032848816365003585815f,0.0120116178877651691437f,\
+0.0807306626811623573303f,0.7887271861545741558075f,0.5701906941831111907959f,\
+0.2198487878777086734772f,0.2014332404360175132751f,0.3704045540653169155121f,\
+0.2366845849901437759399f,0.103130650240927934647f,0.1840926231816411018372f,\
+0.1408759090118110179901f,0.8378689214587211608887f,0.2475062184967100620270f,\
+0.4595135403797030448914f,0.6442520259879529476166f,0.9563237931579351425171f,\
+0.9093016912229359149933f,0.552059986628592014313f,0.0986777986399829387665f,\
+0.2551880665123462677002f,0.0510429129935801029205f,0.287540963850915431976f,\
+0.1730656377039849758148f,0.4155373144894838333130f,0.8203372103162109851837f,\
+0.7022680984809994697571f,0.0665632444433867931366f,0.4468086212873458862305f,\
+0.5658646025694906711578f,0.8720351336523890495300f,0.7345057590864598751068f,\
+0.3390222620218992233276f,0.9842283879406750202179f,0.3797692963853478431702f,\
+0.6046022842638194561005f,0.5255502574145793914795f,0.4914151043631136417389f,\
+0.6406045397743582725525f,0.6271067834459245204926f}
+
+#define CRESULTR {0.8616789149319691309969f,1.7528026973616770423092f,-0.8951576871785223987743f,\
+1.65839939772781952421f,2.670002318435218402470f,-0.2545370391954314692740f,\
+3.0388538062879217882539f,0.2458549627872582132859f,1.613753544958956620547f,\
+2.373140931257777808128f,4.6441801233654604885714f,1.0634345748771927286924f,\
+1.8994737292284431529055f,-2.2038440203063891509316f,-0.5865941523645769040129f,\
+-1.7230123422001577537799f,4.1053385752577806755426f,0.2012772387479372093733f,\
+4.5889850773872540301568f,1.7048706561180972940406f,2.2898980543543361321213f,\
+-1.3470616397449584056289f,1.000979918376255772827f,-1.998745505240199671348f,\
+-0.4562266859878671976247f,1.4173389563254865652908f,0.1005345377926576272420f,\
+-0.3529055360142766550879f,0.7252834368660135977436f,1.6469252220572825340383f,\
+-0.4467771279955162211373f,0.8387209999987794706300f,1.1050928340202259558822f,\
+2.7952258554924300781863f,9.5990623048041356923932f,1.4870960004060611581167f,\
+1.1343408485170072275139f,3.664612325782657276108f,4.3703600670610898148993f,\
+0.9850722877732481785884f,1.1986551091809227731488f,1.2329567566066641504108f,\
+0.8800935914266996284994f,1.1832797973754654030643f,-1.2910350436339537161246f,\
+7.6571266019263468649569f,-2.4697863053099986530015f,0.3907140975028082774401f,\
+-1.655858606271026545187f,-0.5746050598208488624508f,-0.4432229757632685229751f,\
+-2.9672355970693655713433f,1.3424314109887605095395f,0.9766924789772336579219f,\
+8.4134496859782270661299f,1.0052614992336186272581f,0.5743785834192948192012f,\
+1.1969550027714319639927f,-1.929705102086765711178f,-1.7419725915375741109870f,\
+1.6154412531361730387403f,3.4109538321538344085582f,7.9439933441705683492273f,\
+0.9533381558732610949747f,-3.7544424962625675412653f,2.8656935239804841586420f,\
+2.0671417342103679537502f,-1.992605711686495695290f,0.8871291147322790671126f,\
+8.6682584526683399417379f,-1.8914875129526329544660f,-0.1401839917101320720505f,\
+0.0776428549278006530088f,-2.560598020200964608506f,-5.5730608716054170770349f,\
+0.1580601872370170912774f,-0.7747638844786981504598f,2.9997587850927698305270f,\
+0.1654170760372596638010f,-0.7609360918468449641594f,-1.2203777718239325889016f,\
+1.4986628046871217634362f,1.6729053694884241654250f,1.381936351079181113377f,\
+-0.3450348611667466425246f,1.9706824980594530583033f,1.1101876800122791877357f,\
+-4.0234586128898426338196f,1.1906849924222373537930f,-0.3456983902450189716227f,\
+1.459474884821820195313f,6.0143936939361175575414f,-0.0988538832443286719087f,\
+1.597480633260187854461f,0.9129179205342567993142f,-0.0488550375477847867445f,\
+1.0523032581716083022627f,0.9288642069528815214952f,2.6218635570145862878633f,\
+0.8072263924219229558332f,1.5687383989731884526009f,3.842899231404802939949f,\
+-4.2624261266025849081984f,1.2547786671163203564561f,7.0708952400269708959968f,\
+0.2138025786160810681746f,-0.5039897261739162415140f,3.6311482225254705369366f,\
+2.7511697563589119219785f,-1.0199337285771719052718f,-3.9613785741953506658319f,\
+5.3644844232216355450760f,-4.261894060044243204288f,-2.440577323716713653567f,\
+-2.5162841502447741426352f,-3.5973154891472156613474f,0.9736685483701841281601f,\
+0.2600685777468328963025f,1.2216142738714919069309f,0.7803738463829824612006f,\
+8.5132680918277277015704f,4.2958732896863782713126f,2.4210488328114880829389f,\
+5.79755622526757630197f,-0.3837915438103189358365f,3.75964173341358565139f,\
+2.4386368546342671592697f,-2.6776116153796971630641f,2.5102046010802867570533f,\
+5.821177306248865868099f,0.2640059162189042352153f,1.31446884371506267364f,\
+1.2488505950260830879017f,-0.7482976046844636019983f,-0.6275966789165404735584f,\
+0.8893791469828959961319f,-0.6903683581860716733658f,-0.5450973252013330272447f,\
+-1.1028092549899868313190f,1.4183297900536229185775f,1.773434980128008042755f,\
+-0.2859252183654940604463f,3.3012839410905678860786f,0.3197431184385559066463f,\
+2.2263782918939738487f,1.0146592610810074575056f,1.0051892636742449926857f,\
+3.8066700246852320788093f,0.6179593115281443171938f,0.7249522760637888696422f,\
+-1.6307732738859830323719f,8.3014440376437921287334f,-5.5006403965152692592255f,\
+2.8552972304138433123910f,1.9111692714948702587208f,0.9158531650125845136046f,\
+-0.4956155140563224259509f,3.1079184772588979157604f,1.5408715933614589577161f,\
+-0.1158617194706384467828f,6.4886221326459514457952f,2.0749108619541400955200f,\
+1.0644832532013759340828f,-1.769719547358157507588f,0.6696790607045245424800f,\
+7.4150575771959807980238f,1.2812290258043323998294f,1.4461251309266722753222f,\
+3.9789946052408695642555f,7.6489498856535602655526f,4.6130068144799594165306f,\
+1.7697609579312818528507f,-2.069533011859056692572f,3.8895055335340873448047f,\
+0.5587033140125831076617f,0.2704103697575463982616f,-1.2405136002402707973147f,\
+-1.5134557095053997599621f,0.7566012248243810800474f,1.9117596963451992664318f,\
+6.447932326957059423478f,6.2003146906774571078813f,5.344469754581457898723f,\
+6.3131049040564706231748f,1.6189521464425622454542f,-2.550619599252561098268f,\
+-0.1781945407584817342439f,1.5193399835582135359857f,0.9590574537903557850171f,\
+2.6165522176992435099407f,-3.6188103766399173366608f,-0.7842216609502735691350f,\
+1.0995885822264845899099f,-0.6708497380942372023682f,0.8529889923514888394607f,\
+1.3729938244229744626068f,2.0937757207972880202362f,2.4059764571152468803916f,\
+0.6578397026948303860650f,0.2101416292188336421010f}
+
+#define CRESULTI {0.7272548245748866602156f,1.9854303798419310478351f,7.9457339679995211412233f,\
+0.8488412125630352411676f,0.5925642663233093854203f,1.0039936024574043216262f,\
+3.3414071705695578273776f,1.081403318108233868600f,0.2597757190370896807075f,\
+2.4651157060741901716483f,2.0890001084665330566281f,1.3789900497554921088295f,\
+0.4437915251064282751159f,5.2455794258294652365748f,1.5894481231762551676212f,\
+2.5300661616939024156636f,0.5269825145414556155643f,7.2114139192406465639351f,\
+7.6023759189514121814568f,0.474253708603649237752f,0.2114880398457448518190f,\
+2.615809838094426353905f,0.40946194724304191270f,2.660538085383924222782f,\
+1.96836124960102032411f,0.7232671662286862535041f,3.111923291962274351619f,\
+2.3906358097335185242116f,8.3281383621146503060118f,6.2028635418634419096406f,\
+1.9540840065283944237962f,1.5494625392422922693925f,0.678202414336372183534f,\
+1.6137618479690827300033f,1.1906180579664376040228f,0.2762165158082148241903f,\
+0.2195296884715036700442f,2.1446447456633843664520f,5.9741482912408789829328f,\
+0.867597682821533044972f,0.9856997170507159067299f,0.0432225133986508733286f,\
+5.157507023966152459593f,1.6654420749486735786604f,4.3768952511866894283799f,\
+2.7654687058579336955688f,9.3496470896606780343063f,7.1454288620924977237792f,\
+1.9826603369952136013410f,1.6118978629668390123442f,2.3655185893491501580854f,\
+3.5043054723514432957643f,0.9281385166491339377970f,0.5631636514321668451899f,\
+5.2429430139302253266465f,4.7766052326802679317552f,4.4001190809809767046090f,\
+0.8877792684794596489439f,4.368513033448009785786f,5.8469722698220429890625f,\
+3.2860624631665138473124f,0.1131306785331901154645f,0.8957170057781025374055f,\
+0.3478275260751592101727f,7.3475483360254925102595f,0.1806513152317329173879f,\
+6.4267295981620362610442f,4.8385133662587431757629f,2.9034462647978491744993f,\
+2.9696777404396668131881f,5.9431363200854443462617f,2.288232180725223052775f,\
+2.6208664370161969259243f,3.9693733894002809492463f,6.5342907486237020719955f,\
+1.5303355006050158859665f,1.1162736854609731640409f,0.8102944693911555695820f,\
+1.4357885386399356075771f,7.1128736564949752718690f,2.4113210957685655699834f,\
+3.2448135685253003401840f,0.0735981604163226527104f,0.5886735706121437594618f,\
+2.5776994154551164939448f,3.629648394334391792171f,0.3489446690644626425382f,\
+6.9989048057282028381110f,0.3262782224609265258053f,2.8071160078618211386470f,\
+0.4198114062820728631387f,4.7398318369933782889802f,1.4965081339145251959621f,\
+1.4268961804460684739126f,1.3873315379595159146930f,2.4343374430326063517782f,\
+0.3349767990169579268134f,1.3153540511429153703205f,2.2160059373349834110911f,\
+0.7434370339011254769090f,1.253936082334201174149f,2.929523877257661279572f,\
+6.7911802335851190193239f,0.4395719515095502516466f,6.0491461603781946365643f,\
+2.324454495134102849363f,1.263389181071626898856f,1.8546860110985297076525f,\
+3.9998192433092101261f,4.7944107664763828680066f,4.5331878790851858340716f,\
+3.2834478309428574149820f,8.7932187934310537258398f,5.8331542843869588210737f,\
+4.1564133542481211947006f,6.4227435117275550879867f,0.6098783468239901139896f,\
+4.1986123528738117371972f,3.5516439676096513977654f,1.3871043178012487651074f,\
+2.2708618645232787613963f,1.7986812579372670750644f,0.4346204841779990335482f,\
+3.7800771946382365484851f,5.2094034804655127146589f,3.0955575196143279015359f,\
+3.6332179827516117853747f,6.9371912371180162182327f,2.4051741186173338782339f,\
+1.8230887730163647386661f,2.6444893659134645069742f,0.4363389413001144689908f,\
+0.1648513733929060642858f,0.8527852017899220093966f,2.3603668450398678224644f,\
+0.9089049761135811200674f,2.308482167770112614136f,2.1783058145209865941183f,\
+1.760657933306752465086f,0.3252423522775149677955f,0.4332745364849133751228f,\
+1.922093093505325978043f,2.0627370874500741138036f,2.184596685297794049774f,\
+7.065327858525169979487f,0.4997624596555385045882f,1.2195103000378291202566f,\
+2.3664724579469695875389f,1.4939021538810592915070f,1.1500903795661745476764f,\
+3.3700776947908237524132f,2.6885676432811540514933f,7.8817788746511769915060f,\
+2.0842223123540501994455f,8.0258609977666459656120f,4.459626216287859712395f,\
+1.211699888667206126414f,3.6993867326108555992903f,1.0474037470444790276503f,\
+1.9457553430070655409168f,5.4468957190088280739815f,0.0574020495019843535189f,\
+0.200187099983916316770f,7.068768975957844702407f,2.5390022146337085651169f,\
+4.1109611351982495719426f,0.6408861046921948689814f,1.6557914176531909333789f,\
+2.4121782951381569581883f,1.8513041911556680219064f,2.0815970551782250197448f,\
+0.5950929849744456268112f,5.5238367721873160576251f,2.4925246722707656843454f,\
+0.9924655082402137340480f,3.0877905115051524909120f,1.6970418763867407552226f,\
+2.6253251426459978112860f,2.4490847102298514137431f,0.4420113886405674930025f,\
+4.2948005817238108505762f,0.7321010758042626465070f,4.1657752085548631626466f,\
+2.6579704039050806585465f,2.2968127063505034968216f,7.7460044759776618406022f,\
+3.851297516891551087070f,0.2347062006554227753252f,1.5927846479405329827017f,\
+9.5341720234343370066199f,7.7442521101341821321284f,6.478396320140080710814f,\
+1.0891470158039435744968f,0.8038176255057727370712f,1.0202487324661473344634f,\
+7.6035293179001266494765f,5.5512724543076572558675f,5.1202912658114749788751f,\
+6.849389505178533177343f,1.6479880468591965314573f}
+
+
+
+
+void sexp10sTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=sexp10s(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-6);
+ }
+}
+
+void cexp10sTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=cexp10s(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<8e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void sexp10aTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ j=1;
+ sexp10a(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void cexp10aTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ cexp10a(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<8e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testExp10(void) {
+ printf("\n>>>> Float 10-Base Exponential Tests\n");
+ sexp10sTest();
+ cexp10sTest();
+ sexp10aTest();
+ cexp10aTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testExp10() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/zexp10a.c b/2.3-1/src/c/elementaryFunctions/exp10/zexp10a.c
new file mode 100644
index 00000000..10413355
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/zexp10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+
+void zexp10a(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zexp10s(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/exp10/zexp10s.c b/2.3-1/src/c/elementaryFunctions/exp10/zexp10s.c
new file mode 100644
index 00000000..6d1ebfd6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/exp10/zexp10s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "exp10.h"
+#include "pow.h"
+
+doubleComplex zexp10s(doubleComplex z) {
+ return zpows(DoubleComplex(10.0, 0.0), z);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/Makefile.am b/2.3-1/src/c/elementaryFunctions/fix/Makefile.am
new file mode 100644
index 00000000..a1d1cfdf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/Makefile.am
@@ -0,0 +1,60 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libFix_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libFix.la
+
+libFix_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/fix.h
+
+SRC = sfixs.c \
+ dfixs.c \
+ cfixs.c \
+ zfixs.c \
+ sfixa.c \
+ dfixa.c \
+ cfixa.c \
+ zfixa.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/fix/libFix.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatFix testDoubleFix
+
+TESTS = testFloatFix testDoubleFix
+
+#
+# -*- Fix Tests -*-
+#
+testFloatFix_SOURCES = testFloatFix.c
+testFloatFix_CFLAGS = $(check_INCLUDES)
+testFloatFix_LDADD = $(check_LDADD)
+
+testDoubleFix_SOURCES = testDoubleFix.c
+testDoubleFix_CFLAGS = $(check_INCLUDES)
+testDoubleFix_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/fix/Makefile.in b/2.3-1/src/c/elementaryFunctions/fix/Makefile.in
new file mode 100644
index 00000000..49c3c5cd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/Makefile.in
@@ -0,0 +1,788 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatFix$(EXEEXT) testDoubleFix$(EXEEXT)
+TESTS = testFloatFix$(EXEEXT) testDoubleFix$(EXEEXT)
+subdir = src/c/elementaryFunctions/fix
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFix_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libFix_la-sfixs.lo libFix_la-dfixs.lo \
+ libFix_la-cfixs.lo libFix_la-zfixs.lo libFix_la-sfixa.lo \
+ libFix_la-dfixa.lo libFix_la-cfixa.lo libFix_la-zfixa.lo
+am_libFix_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libFix_la_OBJECTS = $(am_libFix_la_OBJECTS)
+libFix_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libFix_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleFix_OBJECTS = testDoubleFix-testDoubleFix.$(OBJEXT)
+testDoubleFix_OBJECTS = $(am_testDoubleFix_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/fix/libFix.la
+testDoubleFix_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleFix_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleFix_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatFix_OBJECTS = testFloatFix-testFloatFix.$(OBJEXT)
+testFloatFix_OBJECTS = $(am_testFloatFix_OBJECTS)
+testFloatFix_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatFix_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatFix_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFix_la_SOURCES) $(testDoubleFix_SOURCES) \
+ $(testFloatFix_SOURCES)
+DIST_SOURCES = $(libFix_la_SOURCES) $(testDoubleFix_SOURCES) \
+ $(testFloatFix_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libFix_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFix.la
+libFix_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/fix.h
+SRC = sfixs.c \
+ dfixs.c \
+ cfixs.c \
+ zfixs.c \
+ sfixa.c \
+ dfixa.c \
+ cfixa.c \
+ zfixa.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/fix/libFix.la \
+ @LIBMATH@
+
+
+#
+# -*- Fix Tests -*-
+#
+testFloatFix_SOURCES = testFloatFix.c
+testFloatFix_CFLAGS = $(check_INCLUDES)
+testFloatFix_LDADD = $(check_LDADD)
+testDoubleFix_SOURCES = testDoubleFix.c
+testDoubleFix_CFLAGS = $(check_INCLUDES)
+testDoubleFix_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/fix/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/fix/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFix.la: $(libFix_la_OBJECTS) $(libFix_la_DEPENDENCIES)
+ $(libFix_la_LINK) -rpath $(pkglibdir) $(libFix_la_OBJECTS) $(libFix_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleFix$(EXEEXT): $(testDoubleFix_OBJECTS) $(testDoubleFix_DEPENDENCIES)
+ @rm -f testDoubleFix$(EXEEXT)
+ $(testDoubleFix_LINK) $(testDoubleFix_OBJECTS) $(testDoubleFix_LDADD) $(LIBS)
+testFloatFix$(EXEEXT): $(testFloatFix_OBJECTS) $(testFloatFix_DEPENDENCIES)
+ @rm -f testFloatFix$(EXEEXT)
+ $(testFloatFix_LINK) $(testFloatFix_OBJECTS) $(testFloatFix_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-cfixa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-cfixs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-dfixa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-dfixs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-sfixa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-sfixs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-zfixa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFix_la-zfixs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleFix-testDoubleFix.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatFix-testFloatFix.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libFix_la-sfixs.lo: sfixs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-sfixs.lo -MD -MP -MF $(DEPDIR)/libFix_la-sfixs.Tpo -c -o libFix_la-sfixs.lo `test -f 'sfixs.c' || echo '$(srcdir)/'`sfixs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-sfixs.Tpo $(DEPDIR)/libFix_la-sfixs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfixs.c' object='libFix_la-sfixs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-sfixs.lo `test -f 'sfixs.c' || echo '$(srcdir)/'`sfixs.c
+
+libFix_la-dfixs.lo: dfixs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-dfixs.lo -MD -MP -MF $(DEPDIR)/libFix_la-dfixs.Tpo -c -o libFix_la-dfixs.lo `test -f 'dfixs.c' || echo '$(srcdir)/'`dfixs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-dfixs.Tpo $(DEPDIR)/libFix_la-dfixs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfixs.c' object='libFix_la-dfixs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-dfixs.lo `test -f 'dfixs.c' || echo '$(srcdir)/'`dfixs.c
+
+libFix_la-cfixs.lo: cfixs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-cfixs.lo -MD -MP -MF $(DEPDIR)/libFix_la-cfixs.Tpo -c -o libFix_la-cfixs.lo `test -f 'cfixs.c' || echo '$(srcdir)/'`cfixs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-cfixs.Tpo $(DEPDIR)/libFix_la-cfixs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfixs.c' object='libFix_la-cfixs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-cfixs.lo `test -f 'cfixs.c' || echo '$(srcdir)/'`cfixs.c
+
+libFix_la-zfixs.lo: zfixs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-zfixs.lo -MD -MP -MF $(DEPDIR)/libFix_la-zfixs.Tpo -c -o libFix_la-zfixs.lo `test -f 'zfixs.c' || echo '$(srcdir)/'`zfixs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-zfixs.Tpo $(DEPDIR)/libFix_la-zfixs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfixs.c' object='libFix_la-zfixs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-zfixs.lo `test -f 'zfixs.c' || echo '$(srcdir)/'`zfixs.c
+
+libFix_la-sfixa.lo: sfixa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-sfixa.lo -MD -MP -MF $(DEPDIR)/libFix_la-sfixa.Tpo -c -o libFix_la-sfixa.lo `test -f 'sfixa.c' || echo '$(srcdir)/'`sfixa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-sfixa.Tpo $(DEPDIR)/libFix_la-sfixa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfixa.c' object='libFix_la-sfixa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-sfixa.lo `test -f 'sfixa.c' || echo '$(srcdir)/'`sfixa.c
+
+libFix_la-dfixa.lo: dfixa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-dfixa.lo -MD -MP -MF $(DEPDIR)/libFix_la-dfixa.Tpo -c -o libFix_la-dfixa.lo `test -f 'dfixa.c' || echo '$(srcdir)/'`dfixa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-dfixa.Tpo $(DEPDIR)/libFix_la-dfixa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfixa.c' object='libFix_la-dfixa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-dfixa.lo `test -f 'dfixa.c' || echo '$(srcdir)/'`dfixa.c
+
+libFix_la-cfixa.lo: cfixa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-cfixa.lo -MD -MP -MF $(DEPDIR)/libFix_la-cfixa.Tpo -c -o libFix_la-cfixa.lo `test -f 'cfixa.c' || echo '$(srcdir)/'`cfixa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-cfixa.Tpo $(DEPDIR)/libFix_la-cfixa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfixa.c' object='libFix_la-cfixa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-cfixa.lo `test -f 'cfixa.c' || echo '$(srcdir)/'`cfixa.c
+
+libFix_la-zfixa.lo: zfixa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -MT libFix_la-zfixa.lo -MD -MP -MF $(DEPDIR)/libFix_la-zfixa.Tpo -c -o libFix_la-zfixa.lo `test -f 'zfixa.c' || echo '$(srcdir)/'`zfixa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFix_la-zfixa.Tpo $(DEPDIR)/libFix_la-zfixa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfixa.c' object='libFix_la-zfixa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFix_la_CFLAGS) $(CFLAGS) -c -o libFix_la-zfixa.lo `test -f 'zfixa.c' || echo '$(srcdir)/'`zfixa.c
+
+testDoubleFix-testDoubleFix.o: testDoubleFix.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFix_CFLAGS) $(CFLAGS) -MT testDoubleFix-testDoubleFix.o -MD -MP -MF $(DEPDIR)/testDoubleFix-testDoubleFix.Tpo -c -o testDoubleFix-testDoubleFix.o `test -f 'testDoubleFix.c' || echo '$(srcdir)/'`testDoubleFix.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFix-testDoubleFix.Tpo $(DEPDIR)/testDoubleFix-testDoubleFix.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFix.c' object='testDoubleFix-testDoubleFix.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFix_CFLAGS) $(CFLAGS) -c -o testDoubleFix-testDoubleFix.o `test -f 'testDoubleFix.c' || echo '$(srcdir)/'`testDoubleFix.c
+
+testDoubleFix-testDoubleFix.obj: testDoubleFix.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFix_CFLAGS) $(CFLAGS) -MT testDoubleFix-testDoubleFix.obj -MD -MP -MF $(DEPDIR)/testDoubleFix-testDoubleFix.Tpo -c -o testDoubleFix-testDoubleFix.obj `if test -f 'testDoubleFix.c'; then $(CYGPATH_W) 'testDoubleFix.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFix.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFix-testDoubleFix.Tpo $(DEPDIR)/testDoubleFix-testDoubleFix.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFix.c' object='testDoubleFix-testDoubleFix.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFix_CFLAGS) $(CFLAGS) -c -o testDoubleFix-testDoubleFix.obj `if test -f 'testDoubleFix.c'; then $(CYGPATH_W) 'testDoubleFix.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFix.c'; fi`
+
+testFloatFix-testFloatFix.o: testFloatFix.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFix_CFLAGS) $(CFLAGS) -MT testFloatFix-testFloatFix.o -MD -MP -MF $(DEPDIR)/testFloatFix-testFloatFix.Tpo -c -o testFloatFix-testFloatFix.o `test -f 'testFloatFix.c' || echo '$(srcdir)/'`testFloatFix.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFix-testFloatFix.Tpo $(DEPDIR)/testFloatFix-testFloatFix.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFix.c' object='testFloatFix-testFloatFix.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFix_CFLAGS) $(CFLAGS) -c -o testFloatFix-testFloatFix.o `test -f 'testFloatFix.c' || echo '$(srcdir)/'`testFloatFix.c
+
+testFloatFix-testFloatFix.obj: testFloatFix.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFix_CFLAGS) $(CFLAGS) -MT testFloatFix-testFloatFix.obj -MD -MP -MF $(DEPDIR)/testFloatFix-testFloatFix.Tpo -c -o testFloatFix-testFloatFix.obj `if test -f 'testFloatFix.c'; then $(CYGPATH_W) 'testFloatFix.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFix.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFix-testFloatFix.Tpo $(DEPDIR)/testFloatFix-testFloatFix.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFix.c' object='testFloatFix-testFloatFix.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFix_CFLAGS) $(CFLAGS) -c -o testFloatFix-testFloatFix.obj `if test -f 'testFloatFix.c'; then $(CYGPATH_W) 'testFloatFix.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFix.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/fix/cfixa.c b/2.3-1/src/c/elementaryFunctions/fix/cfixa.c
new file mode 100644
index 00000000..525d7393
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/cfixa.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+void cfixa(floatComplex* x, int size, floatComplex* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = cfixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/cfixs.c b/2.3-1/src/c/elementaryFunctions/fix/cfixs.c
new file mode 100644
index 00000000..1d9e753a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/cfixs.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+floatComplex cfixs(floatComplex x) {
+ float fixReal = 0, fixImag = 0;
+
+ if (creals(x)>=0) fixReal = floorf(creals(x));
+ else fixReal = ceilf(creals(x));
+
+ if (cimags(x)>=0) fixImag = floorf(cimags(x));
+ else fixImag = ceilf(cimags(x));
+
+ return FloatComplex(fixReal, fixImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/dfixa.c b/2.3-1/src/c/elementaryFunctions/fix/dfixa.c
new file mode 100644
index 00000000..4d000ca1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/dfixa.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+void dfixa(double* x, int size, double* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = dfixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/dfixs.c b/2.3-1/src/c/elementaryFunctions/fix/dfixs.c
new file mode 100644
index 00000000..6fdbadf6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/dfixs.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+double dfixs(double x) {
+ if (x>=0) return floor(x);
+ else return ceil(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/i16fixa.c b/2.3-1/src/c/elementaryFunctions/fix/i16fixa.c
new file mode 100644
index 00000000..07cd75b0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/i16fixa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+#include "floor.h"
+#include "ceil.h"
+
+void i16fixa(int16* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16fixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/i16fixs.c b/2.3-1/src/c/elementaryFunctions/fix/i16fixs.c
new file mode 100644
index 00000000..f133d8a3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/i16fixs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+
+int16 i16fixs(int16 x) {
+ if (x>=0) return i16floors(x);
+ else return i16ceils(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/i8fixa.c b/2.3-1/src/c/elementaryFunctions/fix/i8fixa.c
new file mode 100644
index 00000000..bb20f2d3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/i8fixa.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+
+void i8fixa(int8* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8fixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/i8fixs.c b/2.3-1/src/c/elementaryFunctions/fix/i8fixs.c
new file mode 100644
index 00000000..adeb3dd0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/i8fixs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+#include "floor.h"
+#include "ceil.h"
+
+int8 i8fixs(int8 x) {
+ if (x>=0) return i8floors(x);
+ else return i8ceils(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/sfixa.c b/2.3-1/src/c/elementaryFunctions/fix/sfixa.c
new file mode 100644
index 00000000..4b27dae2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/sfixa.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+void sfixa(float* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = sfixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/sfixs.c b/2.3-1/src/c/elementaryFunctions/fix/sfixs.c
new file mode 100644
index 00000000..50f58240
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/sfixs.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+float sfixs(float x) {
+ if (x>=0) return floorf(x);
+ else return ceilf(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/testDoubleFix.c b/2.3-1/src/c/elementaryFunctions/fix/testDoubleFix.c
new file mode 100644
index 00000000..2d7c6cb5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/testDoubleFix.c
@@ -0,0 +1,150 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "fix.h"
+
+static void dfixsTest(void) {
+ assert ((fabs( dfixs(-2) - (-2))/fabs(dfixs(-2)))<1e-16);
+ assert ((fabs( dfixs(-1.9) - (-1))/fabs(dfixs(-1.9)))<1e-16);
+ assert ((fabs( dfixs(-1.8) - (-1))/fabs(dfixs(-1.8)))<1e-16);
+ assert ((fabs( dfixs(-1.7) - (-1))/fabs(dfixs(-1.7)))<1e-16);
+ assert ((fabs( dfixs(-1.6) - (-1))/fabs(dfixs(-1.6)))<1e-16);
+ assert ((fabs( dfixs(-1.5) - (-1))/fabs(dfixs(-1.5)))<1e-16);
+ assert ((fabs( dfixs(-1.4) - (-1))/fabs(dfixs(-1.4)))<1e-16);
+ assert ((fabs( dfixs(-1.3) - (-1))/fabs(dfixs(-1.3)))<1e-16);
+ assert ((fabs( dfixs(-1.2) - (-1))/fabs(dfixs(-1.2)))<1e-16);
+ assert ((fabs( dfixs(-1.1) - (-1))/fabs(dfixs(-1.1)))<1e-16);
+ assert ((fabs( dfixs(-1.0) - (-1))/fabs(dfixs(-1.0)))<1e-16);
+ assert (fabs( dfixs(-.9))<1e-16);
+ assert ((fabs( dfixs(1.0) - (1))/fabs(dfixs(1.0)))<1e-16);
+ assert ((fabs( dfixs(1.1) - (1))/fabs(dfixs(1.1)))<1e-16);
+ assert ((fabs( dfixs(1.2) - (1))/fabs(dfixs(1.2)))<1e-16);
+ assert ((fabs( dfixs(1.3) - (1))/fabs(dfixs(1.3)))<1e-16);
+ assert ((fabs( dfixs(1.4) - (1))/fabs(dfixs(1.4)))<1e-16);
+ assert ((fabs( dfixs(1.5) - (1))/fabs(dfixs(1.5)))<1e-16);
+ assert ((fabs( dfixs(1.6) - (1))/fabs(dfixs(1.6)))<1e-16);
+ assert ((fabs( dfixs(1.7) - (1))/fabs(dfixs(1.7)))<1e-16);
+ assert ((fabs( dfixs(1.8) - (1))/fabs(dfixs(1.8)))<1e-16);
+ assert ((fabs( dfixs(1.9) - (1))/fabs(dfixs(1.9)))<1e-16);
+ assert ((fabs( dfixs(2.0) - (2))/fabs(dfixs(2.0)))<1e-16);
+
+}
+
+static void zfixsTest(void) {
+ doubleComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=DoubleComplex(-2,1);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.9,1.1);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.8,1.2);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.7,1.3);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.6,1.4);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.5,1.5);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.4,1.6);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.3,1.7);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.2,1.8);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.1,1.9);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.0,2.0);
+ out = zfixs(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-.9,.9);
+ out = zfixs(in);
+ assert (fabs( zreals(out))<1e-16);
+ assert (fabs( zimags(out))<1e-16);
+}
+
+static void dfixaTest(void) {
+ int i;
+ double in[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double res[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ double out[10];
+
+ dfixa(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert (fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+
+}
+
+static void zfixaTest(void) {
+ int i;
+ double inR[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double inI[10]={5.4,1.8,1.4,-4.0,-2.7,-0.3,1.5,1.4,7.3,-4.6};
+ double resR[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ double resI[10]={5,1,1,-4,-2,0,1,1,7,-4};
+ doubleComplex out[10],*in;
+
+ in=DoubleComplexMatrix(inR,inI,10);
+ zfixa(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (zreals(out[i])!=0) assert(fabs(zreals(out[i])-resR[i])/fabs(zreals(out[i])) <1e-16);
+ else assert(fabs(zreals(out[i])-resR[i]) <1e-16);
+ if (zimags(out[i])!=0) assert(fabs(zimags(out[i])-resI[i])/fabs(zimags(out[i])) <1e-16);
+ else assert(fabs(zimags(out[i])-resI[i]) <1e-16);
+ }
+
+}
+
+
+static int testFix() {
+ printf("\n>>>> Double Fix Tests\n");
+ dfixsTest();
+ zfixsTest();
+ dfixaTest();
+ zfixaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testFix() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/testFloatFix.c b/2.3-1/src/c/elementaryFunctions/fix/testFloatFix.c
new file mode 100644
index 00000000..44d5596c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/testFloatFix.c
@@ -0,0 +1,148 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "fix.h"
+
+
+static void sfixsTest(void) {
+ assert ((fabs( sfixs(-2) - (-2))/fabs(sfixs(-2)))<1e-16);
+ assert ((fabs( sfixs(-1.9f) - (-1))/fabs(sfixs(-1.9f)))<1e-16);
+ assert ((fabs( sfixs(-1.8f) - (-1))/fabs(sfixs(-1.8f)))<1e-16);
+ assert ((fabs( sfixs(-1.7f) - (-1))/fabs(sfixs(-1.7f)))<1e-16);
+ assert ((fabs( sfixs(-1.6f) - (-1))/fabs(sfixs(-1.6f)))<1e-16);
+ assert ((fabs( sfixs(-1.5f) - (-1))/fabs(sfixs(-1.5f)))<1e-16);
+ assert ((fabs( sfixs(-1.4f) - (-1))/fabs(sfixs(-1.4f)))<1e-16);
+ assert ((fabs( sfixs(-1.3f) - (-1))/fabs(sfixs(-1.3f)))<1e-16);
+ assert ((fabs( sfixs(-1.2f) - (-1))/fabs(sfixs(-1.2f)))<1e-16);
+ assert ((fabs( sfixs(-1.1f) - (-1))/fabs(sfixs(-1.1f)))<1e-16);
+ assert ((fabs( sfixs(-1.0f) - (-1))/fabs(sfixs(-1.0f)))<1e-16);
+ assert (fabs( sfixs(-.9f))<1e-16);
+ assert ((fabs( sfixs(1.0f) - (1))/fabs(sfixs(1.0f)))<1e-16);
+ assert ((fabs( sfixs(1.1f) - (1))/fabs(sfixs(1.1f)))<1e-16);
+ assert ((fabs( sfixs(1.2f) - (1))/fabs(sfixs(1.2f)))<1e-16);
+ assert ((fabs( sfixs(1.3f) - (1))/fabs(sfixs(1.3f)))<1e-16);
+ assert ((fabs( sfixs(1.4f) - (1))/fabs(sfixs(1.4f)))<1e-16);
+ assert ((fabs( sfixs(1.5f) - (1))/fabs(sfixs(1.5f)))<1e-16);
+ assert ((fabs( sfixs(1.6f) - (1))/fabs(sfixs(1.6f)))<1e-16);
+ assert ((fabs( sfixs(1.7f) - (1))/fabs(sfixs(1.7f)))<1e-16);
+ assert ((fabs( sfixs(1.8f) - (1))/fabs(sfixs(1.8f)))<1e-16);
+ assert ((fabs( sfixs(1.9f) - (1))/fabs(sfixs(1.9f)))<1e-16);
+ assert ((fabs( sfixs(2.0f) - (2))/fabs(sfixs(2.0f)))<1e-16);
+}
+
+static void cfixsTest(void) {
+ floatComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=FloatComplex(-2,1);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.9f,1.1f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.8f,1.2f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.7f,1.3f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.6f,1.4f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.5f,1.5f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.4f,1.6f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.3f,1.7f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.2f,1.8f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.1f,1.9f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.0f,2.0f);
+ out = cfixs(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-.9f,.9f);
+ out = cfixs(in);
+ assert (fabs( creals(out))<1e-16);
+ assert (fabs( cimags(out))<1e-16);
+}
+
+static void sfixaTest(void) {
+ int i;
+ float in[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float res[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ float out[10];
+
+ sfixa(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+}
+
+static void cfixaTest(void) {
+ int i;
+ float inR[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float inI[10]={5.4f,1.8f,1.4f,-4.0f,-2.7f,-0.3f,1.5f,1.4f,7.3f,-4.6f};
+ float resR[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ float resI[10]={5,1,1,-4,-2,0,1,1,7,-4};
+ floatComplex out[10],*in;
+
+ in=FloatComplexMatrix(inR,inI,10);
+ cfixa(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (creals(out[i])!=0) assert(fabs(creals(out[i])-resR[i])/fabs(creals(out[i])) <1e-16);
+ else assert(fabs(creals(out[i])-resR[i]) <1e-16);
+ if (cimags(out[i])!=0) assert(fabs(cimags(out[i])-resI[i])/fabs(cimags(out[i])) <1e-16);
+ else assert(fabs(cimags(out[i])-resI[i]) <1e-16);
+ }
+
+}
+
+static int testFix() {
+ printf("\n>>>> Float Fix Tests\n");
+ sfixsTest();
+ cfixsTest();
+ sfixaTest();
+ cfixaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testFix() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/u16fixa.c b/2.3-1/src/c/elementaryFunctions/fix/u16fixa.c
new file mode 100644
index 00000000..acddf8df
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/u16fixa.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+
+void u16fixa(uint16* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16fixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/u16fixs.c b/2.3-1/src/c/elementaryFunctions/fix/u16fixs.c
new file mode 100644
index 00000000..1ff7a8a5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/u16fixs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+#include "floor.h"
+#include "ceil.h"
+
+uint16 u16fixs(uint16 x) {
+ if (x>=0) return u16floors(x);
+ else return u16ceils(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/u8fixa.c b/2.3-1/src/c/elementaryFunctions/fix/u8fixa.c
new file mode 100644
index 00000000..c86545b9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/u8fixa.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+
+void u8fixa(uint8* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8fixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/u8fixs.c b/2.3-1/src/c/elementaryFunctions/fix/u8fixs.c
new file mode 100644
index 00000000..c7740045
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/u8fixs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "fix.h"
+#include "floor.h"
+#include "ceil.h"
+
+uint8 u8fixs(uint8 x) {
+ if (x>=0) return u8floors(x);
+ else return u8ceils(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/zfixa.c b/2.3-1/src/c/elementaryFunctions/fix/zfixa.c
new file mode 100644
index 00000000..6c04fc6e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/zfixa.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+void zfixa(doubleComplex* x, int size, doubleComplex* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = zfixs(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/fix/zfixs.c b/2.3-1/src/c/elementaryFunctions/fix/zfixs.c
new file mode 100644
index 00000000..0a802d11
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/fix/zfixs.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+
+doubleComplex zfixs(doubleComplex x) {
+ double fixReal = 0, fixImag = 0;
+
+ if (zreals(x)>=0) fixReal = floor(zreals(x));
+ else fixReal = ceil(zreals(x));
+
+ if (zimags(x)>=0) fixImag = floor(zimags(x));
+ else fixImag = ceil(zimags(x));
+
+ return DoubleComplex(fixReal, fixImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/dfloata.c b/2.3-1/src/c/elementaryFunctions/float/dfloata.c
new file mode 100644
index 00000000..9705bd1a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/dfloata.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+void dfloata(double* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++)
+ out[i] = dfloats(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/dfloats.c b/2.3-1/src/c/elementaryFunctions/float/dfloats.c
new file mode 100644
index 00000000..ece554a8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/dfloats.c
@@ -0,0 +1,16 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+float dfloats(double x) {
+ return (float) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/i16floata.c b/2.3-1/src/c/elementaryFunctions/float/i16floata.c
new file mode 100644
index 00000000..c8113af9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/i16floata.c
@@ -0,0 +1,17 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+void i16floata(int16* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16floats(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/i16floats.c b/2.3-1/src/c/elementaryFunctions/float/i16floats.c
new file mode 100644
index 00000000..9f3ee063
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/i16floats.c
@@ -0,0 +1,16 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+float i16floats(int16 x) {
+ return (float) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/i8floata.c b/2.3-1/src/c/elementaryFunctions/float/i8floata.c
new file mode 100644
index 00000000..52f9a6a6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/i8floata.c
@@ -0,0 +1,17 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+void i8floata(int8* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8floats(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/i8floats.c b/2.3-1/src/c/elementaryFunctions/float/i8floats.c
new file mode 100644
index 00000000..88127b3f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/i8floats.c
@@ -0,0 +1,16 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+float i8floats(int8 x) {
+ return (float) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/sfloata.c b/2.3-1/src/c/elementaryFunctions/float/sfloata.c
new file mode 100644
index 00000000..34337068
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/sfloata.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+void sfloata(float* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++)
+ out[i] = sfloats(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/sfloats.c b/2.3-1/src/c/elementaryFunctions/float/sfloats.c
new file mode 100644
index 00000000..3351fb03
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/sfloats.c
@@ -0,0 +1,16 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+float sfloats(float x) {
+ return (float) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/u16floata.c b/2.3-1/src/c/elementaryFunctions/float/u16floata.c
new file mode 100644
index 00000000..febe5e08
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/u16floata.c
@@ -0,0 +1,17 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+void u16floata(uint16* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16floats(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/u16floats.c b/2.3-1/src/c/elementaryFunctions/float/u16floats.c
new file mode 100644
index 00000000..47e19aed
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/u16floats.c
@@ -0,0 +1,16 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+float u16floats(uint16 x) {
+ return (float) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/u8floata.c b/2.3-1/src/c/elementaryFunctions/float/u8floata.c
new file mode 100644
index 00000000..a4a1fec3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/u8floata.c
@@ -0,0 +1,17 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+void u8floata(uint8* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8floats(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/float/u8floats.c b/2.3-1/src/c/elementaryFunctions/float/u8floats.c
new file mode 100644
index 00000000..8b7dd8df
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/float/u8floats.c
@@ -0,0 +1,16 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "get_float.h"
+
+float u8floats(uint8 x) {
+ return (float) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/Makefile.am b/2.3-1/src/c/elementaryFunctions/floor/Makefile.am
new file mode 100644
index 00000000..469d2c1a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/Makefile.am
@@ -0,0 +1,60 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libFloor_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libFloor.la
+
+libFloor_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/floor.h
+
+SRC = sfloors.c \
+ dfloors.c \
+ cfloors.c \
+ zfloors.c \
+ sfloora.c \
+ dfloora.c \
+ cfloora.c \
+ zfloora.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/floor/libFloor.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatFloor testDoubleFloor
+
+TESTS = testFloatFloor testDoubleFloor
+
+#
+# -*- Floor Tests -*-
+#
+testFloatFloor_SOURCES = testFloatFloor.c
+testFloatFloor_CFLAGS = $(check_INCLUDES)
+testFloatFloor_LDADD = $(check_LDADD)
+
+testDoubleFloor_SOURCES = testDoubleFloor.c
+testDoubleFloor_CFLAGS = $(check_INCLUDES)
+testDoubleFloor_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/floor/Makefile.in b/2.3-1/src/c/elementaryFunctions/floor/Makefile.in
new file mode 100644
index 00000000..ad636fe3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/Makefile.in
@@ -0,0 +1,790 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatFloor$(EXEEXT) testDoubleFloor$(EXEEXT)
+TESTS = testFloatFloor$(EXEEXT) testDoubleFloor$(EXEEXT)
+subdir = src/c/elementaryFunctions/floor
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFloor_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libFloor_la-sfloors.lo libFloor_la-dfloors.lo \
+ libFloor_la-cfloors.lo libFloor_la-zfloors.lo \
+ libFloor_la-sfloora.lo libFloor_la-dfloora.lo \
+ libFloor_la-cfloora.lo libFloor_la-zfloora.lo
+am_libFloor_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libFloor_la_OBJECTS = $(am_libFloor_la_OBJECTS)
+libFloor_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libFloor_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleFloor_OBJECTS = \
+ testDoubleFloor-testDoubleFloor.$(OBJEXT)
+testDoubleFloor_OBJECTS = $(am_testDoubleFloor_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/floor/libFloor.la
+testDoubleFloor_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleFloor_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleFloor_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatFloor_OBJECTS = testFloatFloor-testFloatFloor.$(OBJEXT)
+testFloatFloor_OBJECTS = $(am_testFloatFloor_OBJECTS)
+testFloatFloor_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatFloor_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatFloor_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFloor_la_SOURCES) $(testDoubleFloor_SOURCES) \
+ $(testFloatFloor_SOURCES)
+DIST_SOURCES = $(libFloor_la_SOURCES) $(testDoubleFloor_SOURCES) \
+ $(testFloatFloor_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libFloor_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFloor.la
+libFloor_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/floor.h
+SRC = sfloors.c \
+ dfloors.c \
+ cfloors.c \
+ zfloors.c \
+ sfloora.c \
+ dfloora.c \
+ cfloora.c \
+ zfloora.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/floor/libFloor.la \
+ @LIBMATH@
+
+
+#
+# -*- Floor Tests -*-
+#
+testFloatFloor_SOURCES = testFloatFloor.c
+testFloatFloor_CFLAGS = $(check_INCLUDES)
+testFloatFloor_LDADD = $(check_LDADD)
+testDoubleFloor_SOURCES = testDoubleFloor.c
+testDoubleFloor_CFLAGS = $(check_INCLUDES)
+testDoubleFloor_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/floor/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/floor/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFloor.la: $(libFloor_la_OBJECTS) $(libFloor_la_DEPENDENCIES)
+ $(libFloor_la_LINK) -rpath $(pkglibdir) $(libFloor_la_OBJECTS) $(libFloor_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleFloor$(EXEEXT): $(testDoubleFloor_OBJECTS) $(testDoubleFloor_DEPENDENCIES)
+ @rm -f testDoubleFloor$(EXEEXT)
+ $(testDoubleFloor_LINK) $(testDoubleFloor_OBJECTS) $(testDoubleFloor_LDADD) $(LIBS)
+testFloatFloor$(EXEEXT): $(testFloatFloor_OBJECTS) $(testFloatFloor_DEPENDENCIES)
+ @rm -f testFloatFloor$(EXEEXT)
+ $(testFloatFloor_LINK) $(testFloatFloor_OBJECTS) $(testFloatFloor_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-cfloora.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-cfloors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-dfloora.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-dfloors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-sfloora.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-sfloors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-zfloora.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFloor_la-zfloors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleFloor-testDoubleFloor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatFloor-testFloatFloor.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libFloor_la-sfloors.lo: sfloors.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-sfloors.lo -MD -MP -MF $(DEPDIR)/libFloor_la-sfloors.Tpo -c -o libFloor_la-sfloors.lo `test -f 'sfloors.c' || echo '$(srcdir)/'`sfloors.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-sfloors.Tpo $(DEPDIR)/libFloor_la-sfloors.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfloors.c' object='libFloor_la-sfloors.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-sfloors.lo `test -f 'sfloors.c' || echo '$(srcdir)/'`sfloors.c
+
+libFloor_la-dfloors.lo: dfloors.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-dfloors.lo -MD -MP -MF $(DEPDIR)/libFloor_la-dfloors.Tpo -c -o libFloor_la-dfloors.lo `test -f 'dfloors.c' || echo '$(srcdir)/'`dfloors.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-dfloors.Tpo $(DEPDIR)/libFloor_la-dfloors.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfloors.c' object='libFloor_la-dfloors.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-dfloors.lo `test -f 'dfloors.c' || echo '$(srcdir)/'`dfloors.c
+
+libFloor_la-cfloors.lo: cfloors.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-cfloors.lo -MD -MP -MF $(DEPDIR)/libFloor_la-cfloors.Tpo -c -o libFloor_la-cfloors.lo `test -f 'cfloors.c' || echo '$(srcdir)/'`cfloors.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-cfloors.Tpo $(DEPDIR)/libFloor_la-cfloors.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfloors.c' object='libFloor_la-cfloors.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-cfloors.lo `test -f 'cfloors.c' || echo '$(srcdir)/'`cfloors.c
+
+libFloor_la-zfloors.lo: zfloors.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-zfloors.lo -MD -MP -MF $(DEPDIR)/libFloor_la-zfloors.Tpo -c -o libFloor_la-zfloors.lo `test -f 'zfloors.c' || echo '$(srcdir)/'`zfloors.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-zfloors.Tpo $(DEPDIR)/libFloor_la-zfloors.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfloors.c' object='libFloor_la-zfloors.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-zfloors.lo `test -f 'zfloors.c' || echo '$(srcdir)/'`zfloors.c
+
+libFloor_la-sfloora.lo: sfloora.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-sfloora.lo -MD -MP -MF $(DEPDIR)/libFloor_la-sfloora.Tpo -c -o libFloor_la-sfloora.lo `test -f 'sfloora.c' || echo '$(srcdir)/'`sfloora.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-sfloora.Tpo $(DEPDIR)/libFloor_la-sfloora.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfloora.c' object='libFloor_la-sfloora.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-sfloora.lo `test -f 'sfloora.c' || echo '$(srcdir)/'`sfloora.c
+
+libFloor_la-dfloora.lo: dfloora.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-dfloora.lo -MD -MP -MF $(DEPDIR)/libFloor_la-dfloora.Tpo -c -o libFloor_la-dfloora.lo `test -f 'dfloora.c' || echo '$(srcdir)/'`dfloora.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-dfloora.Tpo $(DEPDIR)/libFloor_la-dfloora.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfloora.c' object='libFloor_la-dfloora.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-dfloora.lo `test -f 'dfloora.c' || echo '$(srcdir)/'`dfloora.c
+
+libFloor_la-cfloora.lo: cfloora.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-cfloora.lo -MD -MP -MF $(DEPDIR)/libFloor_la-cfloora.Tpo -c -o libFloor_la-cfloora.lo `test -f 'cfloora.c' || echo '$(srcdir)/'`cfloora.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-cfloora.Tpo $(DEPDIR)/libFloor_la-cfloora.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfloora.c' object='libFloor_la-cfloora.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-cfloora.lo `test -f 'cfloora.c' || echo '$(srcdir)/'`cfloora.c
+
+libFloor_la-zfloora.lo: zfloora.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -MT libFloor_la-zfloora.lo -MD -MP -MF $(DEPDIR)/libFloor_la-zfloora.Tpo -c -o libFloor_la-zfloora.lo `test -f 'zfloora.c' || echo '$(srcdir)/'`zfloora.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFloor_la-zfloora.Tpo $(DEPDIR)/libFloor_la-zfloora.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfloora.c' object='libFloor_la-zfloora.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFloor_la_CFLAGS) $(CFLAGS) -c -o libFloor_la-zfloora.lo `test -f 'zfloora.c' || echo '$(srcdir)/'`zfloora.c
+
+testDoubleFloor-testDoubleFloor.o: testDoubleFloor.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFloor_CFLAGS) $(CFLAGS) -MT testDoubleFloor-testDoubleFloor.o -MD -MP -MF $(DEPDIR)/testDoubleFloor-testDoubleFloor.Tpo -c -o testDoubleFloor-testDoubleFloor.o `test -f 'testDoubleFloor.c' || echo '$(srcdir)/'`testDoubleFloor.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFloor-testDoubleFloor.Tpo $(DEPDIR)/testDoubleFloor-testDoubleFloor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFloor.c' object='testDoubleFloor-testDoubleFloor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFloor_CFLAGS) $(CFLAGS) -c -o testDoubleFloor-testDoubleFloor.o `test -f 'testDoubleFloor.c' || echo '$(srcdir)/'`testDoubleFloor.c
+
+testDoubleFloor-testDoubleFloor.obj: testDoubleFloor.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFloor_CFLAGS) $(CFLAGS) -MT testDoubleFloor-testDoubleFloor.obj -MD -MP -MF $(DEPDIR)/testDoubleFloor-testDoubleFloor.Tpo -c -o testDoubleFloor-testDoubleFloor.obj `if test -f 'testDoubleFloor.c'; then $(CYGPATH_W) 'testDoubleFloor.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFloor.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFloor-testDoubleFloor.Tpo $(DEPDIR)/testDoubleFloor-testDoubleFloor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFloor.c' object='testDoubleFloor-testDoubleFloor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFloor_CFLAGS) $(CFLAGS) -c -o testDoubleFloor-testDoubleFloor.obj `if test -f 'testDoubleFloor.c'; then $(CYGPATH_W) 'testDoubleFloor.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFloor.c'; fi`
+
+testFloatFloor-testFloatFloor.o: testFloatFloor.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFloor_CFLAGS) $(CFLAGS) -MT testFloatFloor-testFloatFloor.o -MD -MP -MF $(DEPDIR)/testFloatFloor-testFloatFloor.Tpo -c -o testFloatFloor-testFloatFloor.o `test -f 'testFloatFloor.c' || echo '$(srcdir)/'`testFloatFloor.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFloor-testFloatFloor.Tpo $(DEPDIR)/testFloatFloor-testFloatFloor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFloor.c' object='testFloatFloor-testFloatFloor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFloor_CFLAGS) $(CFLAGS) -c -o testFloatFloor-testFloatFloor.o `test -f 'testFloatFloor.c' || echo '$(srcdir)/'`testFloatFloor.c
+
+testFloatFloor-testFloatFloor.obj: testFloatFloor.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFloor_CFLAGS) $(CFLAGS) -MT testFloatFloor-testFloatFloor.obj -MD -MP -MF $(DEPDIR)/testFloatFloor-testFloatFloor.Tpo -c -o testFloatFloor-testFloatFloor.obj `if test -f 'testFloatFloor.c'; then $(CYGPATH_W) 'testFloatFloor.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFloor.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFloor-testFloatFloor.Tpo $(DEPDIR)/testFloatFloor-testFloatFloor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFloor.c' object='testFloatFloor-testFloatFloor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFloor_CFLAGS) $(CFLAGS) -c -o testFloatFloor-testFloatFloor.obj `if test -f 'testFloatFloor.c'; then $(CYGPATH_W) 'testFloatFloor.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFloor.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/floor/cfloora.c b/2.3-1/src/c/elementaryFunctions/floor/cfloora.c
new file mode 100644
index 00000000..941e8316
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/cfloora.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+void cfloora(floatComplex* x, int size, floatComplex* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = cfloors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/cfloors.c b/2.3-1/src/c/elementaryFunctions/floor/cfloors.c
new file mode 100644
index 00000000..75368638
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/cfloors.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+floatComplex cfloors(floatComplex x) {
+ float floorReal = floorf(creals(x));
+ float floorImag = floorf(cimags(x));
+
+ return FloatComplex(floorReal, floorImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/dfloora.c b/2.3-1/src/c/elementaryFunctions/floor/dfloora.c
new file mode 100644
index 00000000..fd70b53e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/dfloora.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+void dfloora(double* x, int size, double* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = dfloors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/dfloors.c b/2.3-1/src/c/elementaryFunctions/floor/dfloors.c
new file mode 100644
index 00000000..20b51054
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/dfloors.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+double dfloors(double x) {
+ return (floor(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/i16floora.c b/2.3-1/src/c/elementaryFunctions/floor/i16floora.c
new file mode 100644
index 00000000..7b7a211b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/i16floora.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+void i16floora(int16* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16floors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/i16floors.c b/2.3-1/src/c/elementaryFunctions/floor/i16floors.c
new file mode 100644
index 00000000..cc35cf9a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/i16floors.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+int16 i16floors(int16 x) {
+ return (int16)(floorf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/i8floora.c b/2.3-1/src/c/elementaryFunctions/floor/i8floora.c
new file mode 100644
index 00000000..5579321a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/i8floora.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+void i8floora(int8* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8floors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/i8floors.c b/2.3-1/src/c/elementaryFunctions/floor/i8floors.c
new file mode 100644
index 00000000..30967cdc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/i8floors.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+int8 i8floors(int8 x) {
+ return (int8)(floorf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/sfloora.c b/2.3-1/src/c/elementaryFunctions/floor/sfloora.c
new file mode 100644
index 00000000..9a549e2a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/sfloora.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+void sfloora(float* x, int size, float* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = sfloors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/sfloors.c b/2.3-1/src/c/elementaryFunctions/floor/sfloors.c
new file mode 100644
index 00000000..0feaa72e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/sfloors.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+float sfloors(float x) {
+ return (floorf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/testDoubleFloor.c b/2.3-1/src/c/elementaryFunctions/floor/testDoubleFloor.c
new file mode 100644
index 00000000..71e0b36f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/testDoubleFloor.c
@@ -0,0 +1,152 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "floor.h"
+
+
+static void dfloorsTest(void) {
+ assert ((fabs( dfloors(-2) - (-2))/fabs(dfloors(-2)))<1e-16);
+ assert ((fabs( dfloors(-1.9) - (-2))/fabs(dfloors(-1.9)))<1e-16);
+ assert ((fabs( dfloors(-1.8) - (-2))/fabs(dfloors(-1.8)))<1e-16);
+ assert ((fabs( dfloors(-1.7) - (-2))/fabs(dfloors(-1.7)))<1e-16);
+ assert ((fabs( dfloors(-1.6) - (-2))/fabs(dfloors(-1.6)))<1e-16);
+ assert ((fabs( dfloors(-1.5) - (-2))/fabs(dfloors(-1.5)))<1e-16);
+ assert ((fabs( dfloors(-1.4) - (-2))/fabs(dfloors(-1.4)))<1e-16);
+ assert ((fabs( dfloors(-1.3) - (-2))/fabs(dfloors(-1.3)))<1e-16);
+ assert ((fabs( dfloors(-1.2) - (-2))/fabs(dfloors(-1.2)))<1e-16);
+ assert ((fabs( dfloors(-1.1) - (-2))/fabs(dfloors(-1.1)))<1e-16);
+ assert ((fabs( dfloors(-1.0) - (-1))/fabs(dfloors(-1.0)))<1e-16);
+ assert ((fabs( dfloors(-0.9) - (-1))/fabs(dfloors(-0.9)))<1e-16);
+ assert ((fabs( dfloors(1.0) - (1))/fabs(dfloors(1.0)))<1e-16);
+ assert ((fabs( dfloors(1.1) - (1))/fabs(dfloors(1.1)))<1e-16);
+ assert ((fabs( dfloors(1.2) - (1))/fabs(dfloors(1.2)))<1e-16);
+ assert ((fabs( dfloors(1.3) - (1))/fabs(dfloors(1.3)))<1e-16);
+ assert ((fabs( dfloors(1.4) - (1))/fabs(dfloors(1.4)))<1e-16);
+ assert ((fabs( dfloors(1.5) - (1))/fabs(dfloors(1.5)))<1e-16);
+ assert ((fabs( dfloors(1.6) - (1))/fabs(dfloors(1.6)))<1e-16);
+ assert ((fabs( dfloors(1.7) - (1))/fabs(dfloors(1.7)))<1e-16);
+ assert ((fabs( dfloors(1.8) - (1))/fabs(dfloors(1.8)))<1e-16);
+ assert ((fabs( dfloors(1.9) - (1))/fabs(dfloors(1.9)))<1e-16);
+ assert ((fabs( dfloors(2.0) - (2))/fabs(dfloors(2.0)))<1e-16);
+
+}
+
+static void zfloorsTest(void) {
+ doubleComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=DoubleComplex(-2,1);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.9,1.1);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.8,1.2);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.7,1.3);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.6,1.4);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.5,1.5);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.4,1.6);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.3,1.7);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.2,1.8);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.1,1.9);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.0,2.0);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-.9,.9);
+ out = zfloors(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert (fabs( zimags(out))<1e-16);
+
+}
+
+static void dflooraTest(void) {
+ int i;
+ double in[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double res[10]={1,2,-2,-4,-5,6,4,4,-1,0};
+ double out[10];
+
+ dfloora(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) < 1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+}
+
+static void zflooraTest(void) {
+ int i;
+ double inR[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double inI[10]={5.4,1.8,1.4,-4.0,-2.7,-0.3,1.5,1.4,7.3,-4.6};
+ double resR[10]={1,2,-2,-4,-5,6,4,4,-1,0};
+ double resI[10]={5,1,1,-4,-3,-1,1,1,7,-5};
+ doubleComplex out[10],*in;
+
+ in=DoubleComplexMatrix(inR,inI,10);
+ zfloora(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (zreals(out[i])!=0) assert( fabs(zreals(out[i])-resR[i])/fabs(zreals(out[i])) < 1e-16);
+ else assert(fabs(zreals(out[i])-resR[i]) <1e-16);
+ if (zimags(out[i])!=0) assert( fabs(zimags(out[i])-resI[i])/fabs(zimags(out[i])) < 1e-16);
+ else assert(fabs(zimags(out[i])-resI[i]) <1e-16);
+ }
+
+}
+
+
+static int testFloor() {
+ printf("\n>>>> Double Floor Tests\n");
+ dfloorsTest();
+ zfloorsTest();
+ dflooraTest();
+ zflooraTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testFloor() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/testFloatFloor.c b/2.3-1/src/c/elementaryFunctions/floor/testFloatFloor.c
new file mode 100644
index 00000000..df49ee0d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/testFloatFloor.c
@@ -0,0 +1,147 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "floor.h"
+
+static void sfloorsTest(void) {
+ assert ((fabs( sfloors(-2) - (-2))/fabs(sfloors(-2)))<1e-16);
+ assert ((fabs( sfloors(-1.9f) - (-2))/fabs(sfloors(-1.9f)))<1e-16);
+ assert ((fabs( sfloors(-1.8f) - (-2))/fabs(sfloors(-1.8f)))<1e-16);
+ assert ((fabs( sfloors(-1.7f) - (-2))/fabs(sfloors(-1.7f)))<1e-16);
+ assert ((fabs( sfloors(-1.6f) - (-2))/fabs(sfloors(-1.6f)))<1e-16);
+ assert ((fabs( sfloors(-1.5f) - (-2))/fabs(sfloors(-1.5f)))<1e-16);
+ assert ((fabs( sfloors(-1.4f) - (-2))/fabs(sfloors(-1.4f)))<1e-16);
+ assert ((fabs( sfloors(-1.3f) - (-2))/fabs(sfloors(-1.3f)))<1e-16);
+ assert ((fabs( sfloors(-1.2f) - (-2))/fabs(sfloors(-1.2f)))<1e-16);
+ assert ((fabs( sfloors(-1.1f) - (-2))/fabs(sfloors(-1.1f)))<1e-16);
+ assert ((fabs( sfloors(-1.0f) - (-1))/fabs(sfloors(-1.0f)))<1e-16);
+ assert ((fabs( sfloors(-0.9f) - (-1))/fabs(sfloors(-0.9f)))<1e-16);
+ assert ((fabs( sfloors(1.0f) - (1))/fabs(sfloors(1.0f)))<1e-16);
+ assert ((fabs( sfloors(1.1f) - (1))/fabs(sfloors(1.1f)))<1e-16);
+ assert ((fabs( sfloors(1.2f) - (1))/fabs(sfloors(1.2f)))<1e-16);
+ assert ((fabs( sfloors(1.3f) - (1))/fabs(sfloors(1.3f)))<1e-16);
+ assert ((fabs( sfloors(1.4f) - (1))/fabs(sfloors(1.4f)))<1e-16);
+ assert ((fabs( sfloors(1.5f) - (1))/fabs(sfloors(1.5f)))<1e-16);
+ assert ((fabs( sfloors(1.6f) - (1))/fabs(sfloors(1.6f)))<1e-16);
+ assert ((fabs( sfloors(1.7f) - (1))/fabs(sfloors(1.7f)))<1e-16);
+ assert ((fabs( sfloors(1.8f) - (1))/fabs(sfloors(1.8f)))<1e-16);
+ assert ((fabs( sfloors(1.9f) - (1))/fabs(sfloors(1.9f)))<1e-16);
+ assert ((fabs( sfloors(2.0f) - (2))/fabs(sfloors(2.0f)))<1e-16);
+}
+
+static void cfloorsTest(void) {
+ floatComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=FloatComplex(-2,1);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.9f,1.1f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.8f,1.2f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.7f,1.3f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.6f,1.4f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.5f,1.5f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.4f,1.6f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.3f,1.7f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.2f,1.8f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.1f,1.9f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.0f,2.0f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-.9f,.9f);
+ out = cfloors(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert (fabs( cimags(out))<1e-16);
+
+}
+
+static void sflooraTest(void) {
+ int i;
+ float in[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float res[10]={1,2,-2,-4,-5,6,4,4,-1,0};
+ float out[10];
+
+ sfloora(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+}
+
+static void cflooraTest(void) {
+ int i;
+ float inR[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float inI[10]={5.4f,1.8f,1.4f,-4.0f,-2.7f,-0.3f,1.5f,1.4f,7.3f,-4.6f};
+ float resR[10]={1,2,-2,-4,-5,6,4,4,-1,0};
+ float resI[10]={5,1,1,-4,-3,-1,1,1,7,-5};
+ floatComplex out[10],*in;
+
+ in=FloatComplexMatrix(inR,inI,10);
+ cfloora(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (creals(out[i])!=0) assert(fabs(creals(out[i])-resR[i])/fabs(creals(out[i])) <1e-16);
+ else assert(fabs(creals(out[i])-resR[i]) <1e-16);
+ if (cimags(out[i])!=0) assert(fabs(cimags(out[i])-resI[i])/fabs(cimags(out[i])) <1e-16);
+ else assert(fabs(cimags(out[i])-resI[i]) <1e-16);
+ }
+}
+
+static int testFloor() {
+ printf("\n>>>> Float Floor Tests\n");
+ sfloorsTest();
+ cfloorsTest();
+ sflooraTest();
+ cflooraTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testFloor() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/u16floora.c b/2.3-1/src/c/elementaryFunctions/floor/u16floora.c
new file mode 100644
index 00000000..abff8077
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/u16floora.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+void u16floora(uint16* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16floors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/u16floors.c b/2.3-1/src/c/elementaryFunctions/floor/u16floors.c
new file mode 100644
index 00000000..a1fca9b5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/u16floors.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+uint16 u16floors(uint16 x) {
+ return (uint16)(floorf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/u8floora.c b/2.3-1/src/c/elementaryFunctions/floor/u8floora.c
new file mode 100644
index 00000000..04a980e9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/u8floora.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+void u8floora(uint8* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8floors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/u8floors.c b/2.3-1/src/c/elementaryFunctions/floor/u8floors.c
new file mode 100644
index 00000000..87a4e1fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/u8floors.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "floor.h"
+
+uint8 u8floors(uint8 x) {
+ return (uint8)(floorf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/zfloora.c b/2.3-1/src/c/elementaryFunctions/floor/zfloora.c
new file mode 100644
index 00000000..a6386c39
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/zfloora.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+void zfloora(doubleComplex* x, int size, doubleComplex* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = zfloors(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/floor/zfloors.c b/2.3-1/src/c/elementaryFunctions/floor/zfloors.c
new file mode 100644
index 00000000..783951fb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/floor/zfloors.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "floor.h"
+
+doubleComplex zfloors(doubleComplex x) {
+ double floorReal = floor(zreals(x));
+ double floorImag = floor(zimags(x));
+
+ return DoubleComplex(floorReal, floorImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acos.h b/2.3-1/src/c/elementaryFunctions/includes/acos.h
new file mode 100644
index 00000000..6b68c025
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acos.h
@@ -0,0 +1,89 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ACOS_H__
+#define __ACOS_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*
+** Compute ArcCosine for different types .
+*/
+
+/*
+** \brief Float ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT float sacoss(float in);
+
+/*
+** \brief Double ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT double dacoss(double in);
+
+/*
+** \brief Float Complex ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT floatComplex cacoss(floatComplex in);
+
+/*
+** \brief Double Complex ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zacoss(doubleComplex in);
+
+/*
+** \brief Float Matrix ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sacosa(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dacosa(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void cacosa(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zacosa(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOS_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acosd.h b/2.3-1/src/c/elementaryFunctions/includes/acosd.h
new file mode 100644
index 00000000..96dae80a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acosd.h
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ACOSD_H__
+#define __ACOSD_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacosds(double x);
+
+void dacosda(double* x, int size, double* y);
+
+double sacosds(float x);
+
+void sacosda(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOSD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acosh.h b/2.3-1/src/c/elementaryFunctions/includes/acosh.h
new file mode 100644
index 00000000..ed7aa6aa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acosh.h
@@ -0,0 +1,91 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ACOSH_H__
+#define __ACOSH_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*
+** Compute Hyperbolic Hyperbolic ArcCosine for different types .
+*/
+
+/*
+** \brief Float Hyperbolic ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT float sacoshs(float in);
+
+/*
+** \brief Double Hyperbolic ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT double dacoshs(double in);
+
+/*
+** \brief Float Complex Hyperbolic ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT floatComplex cacoshs(floatComplex in);
+
+/*
+** \brief Double Complex Hyperbolic ArcCosine function
+** \param in : input array value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zacoshs(doubleComplex in);
+
+/*
+** \brief Float Matrix Hyperbolic ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sacosha(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Hyperbolic ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dacosha(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Hyperbolic ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void cacosha(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Hyperbolic ArcCosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zacosha(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__ACOSH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acot.h b/2.3-1/src/c/elementaryFunctions/includes/acot.h
new file mode 100644
index 00000000..430be12d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acot.h
@@ -0,0 +1,43 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ACOT_H__
+#define __ACOT_H__
+#include "types.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacots(double x);
+
+void dacota(double* x, int size, double* y);
+
+float sacots(float x);
+
+void sacota(float* x, int size, float* y);
+
+floatComplex cacots(floatComplex x);
+
+void cacota(floatComplex* x, int size, floatComplex* y);
+
+doubleComplex zacots(doubleComplex x);
+
+void zacota(doubleComplex* x, int size, doubleComplex* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOT_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acotd.h b/2.3-1/src/c/elementaryFunctions/includes/acotd.h
new file mode 100644
index 00000000..3be05ccf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acotd.h
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ACOTD_H__
+#define __ACOTD_H__
+#include "types.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacotds(double x);
+
+void dacotda(double* x, int size, double* y);
+
+float sacotds(float x);
+
+void sacotda(float* x, int size, float* y);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOTD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acoth.h b/2.3-1/src/c/elementaryFunctions/includes/acoth.h
new file mode 100644
index 00000000..975182fe
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acoth.h
@@ -0,0 +1,44 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ACOTH_H__
+#define __ACOTH_H__
+#include "types.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacoths(double x);
+
+void dacotha(double* x, int size, double* y);
+
+float sacoths(float x);
+
+void sacotha(float* x, int size, float* y);
+
+floatComplex cacoths(floatComplex x);
+
+void cacotha(floatComplex* x, int size, floatComplex* y);
+
+doubleComplex zacoths(doubleComplex x);
+
+void zacotha(doubleComplex* x, int size, doubleComplex* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOTH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acsc.h b/2.3-1/src/c/elementaryFunctions/includes/acsc.h
new file mode 100644
index 00000000..be6455a4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acsc.h
@@ -0,0 +1,44 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __ACSC_H__
+#define __ACSC_H__
+#include "types.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacscs(double x);
+
+void dacsca(double* x, int size, double* y);
+
+float sacscs(float x);
+
+void sacsca(float* x, int size, float* y);
+
+floatComplex cacscs(floatComplex x);
+
+void cacsca(floatComplex* x, int size, floatComplex* y);
+
+doubleComplex zacscs(doubleComplex x);
+
+void zacsca(doubleComplex* x, int size, doubleComplex* y);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACSC_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acscd.h b/2.3-1/src/c/elementaryFunctions/includes/acscd.h
new file mode 100644
index 00000000..3c5bb18d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acscd.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __ACSCD_H__
+#define __ACSCD_H__
+#include "types.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacscds(double x);
+
+void dacscda(double* x, int size, double* y);
+
+float sacscds(float x);
+
+void sacscda(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACSCD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/acsch.h b/2.3-1/src/c/elementaryFunctions/includes/acsch.h
new file mode 100644
index 00000000..ba2b1e1d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/acsch.h
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __ACSCH_H__
+#define __ACSCH_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dacschs(double x);
+
+void dacscha(double* x, int size, double* y);
+
+double sacschs(float x);
+
+void sacscha(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACSCH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/asec.h b/2.3-1/src/c/elementaryFunctions/includes/asec.h
new file mode 100644
index 00000000..8d1a65d1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/asec.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ASEC_H__
+#define __ASEC_H__
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dasecs(double x);
+
+void daseca(double* x, int size, double* y);
+
+double sasecs(float x);
+
+void saseca(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASEC_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/asecd.h b/2.3-1/src/c/elementaryFunctions/includes/asecd.h
new file mode 100644
index 00000000..104677bd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/asecd.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ASECD_H__
+#define __ASECD_H__
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dasecds(double x);
+
+void dasecda(double* x, int size, double* y);
+
+double sasecds(float x);
+
+void sasecda(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASECD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/asech.h b/2.3-1/src/c/elementaryFunctions/includes/asech.h
new file mode 100644
index 00000000..5e6c5e9c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/asech.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ASECH_H__
+#define __ASECH_H__
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dasechs(double x);
+
+void dasecha(double* x, int size, double* y);
+
+double sasechs(float x);
+
+void sasecha(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASECH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/asin.h b/2.3-1/src/c/elementaryFunctions/includes/asin.h
new file mode 100644
index 00000000..3a28df18
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/asin.h
@@ -0,0 +1,90 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ASIN_H__
+#define __ASIN_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Compute ArcSine for different types .
+*/
+
+/*
+** \brief Float ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float sasins(float in);
+
+/*
+** \brief Double ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dasins(double in);
+
+/*
+** \brief Float Complex ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex casins(floatComplex in);
+
+/*
+** \brief Double Complex ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zasins(doubleComplex in);
+
+/*
+** \brief Float Matrix ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sasina(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dasina(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void casina(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zasina(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__ASIN_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/asind.h b/2.3-1/src/c/elementaryFunctions/includes/asind.h
new file mode 100644
index 00000000..8f7d7102
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/asind.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ASIND_H__
+#define __ASIND_H__
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dasinds(double x);
+
+void dasinda(double* x, int size, double* y);
+
+double sasinds(float x);
+
+void sasinda(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASIND_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/asinh.h b/2.3-1/src/c/elementaryFunctions/includes/asinh.h
new file mode 100644
index 00000000..9df597a5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/asinh.h
@@ -0,0 +1,90 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ASINH_H__
+#define __ASINH_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Compute Hyperbolic ArcSine for different types .
+*/
+
+/*
+** \brief Float Hyperbolic ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float sasinhs(float in);
+
+/*
+** \brief Double Hyperbolic ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dasinhs(double in);
+
+/*
+** \brief Float Complex Hyperbolic ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex casinhs(floatComplex in);
+
+/*
+** \brief Double Complex Hyperbolic ArcSine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zasinhs(doubleComplex in);
+
+/*
+** \brief Float Matrix Hyperbolic ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sasinha(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Hyperbolic ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dasinha(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Hyperbolic ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void casinha(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Hyperbolic ArcSine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zasinha(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__ASINH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/atan.h b/2.3-1/src/c/elementaryFunctions/includes/atan.h
new file mode 100644
index 00000000..b6a4cf0a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/atan.h
@@ -0,0 +1,90 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ATAN_H__
+#define __ATAN_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Compute ArcTangeant for different types .
+*/
+
+/*
+** \brief Float ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float satans(float in);
+
+/*
+** \brief Double ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double datans(double in);
+
+/*
+** \brief Float Complex ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex catans(floatComplex in);
+
+/*
+** \brief Double Complex ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zatans(doubleComplex in);
+
+/*
+** \brief Float Matrix ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void satana(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void datana(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void catana(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zatana(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__ATAN_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/atan2.h b/2.3-1/src/c/elementaryFunctions/includes/atan2.h
new file mode 100644
index 00000000..83aeebe2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/atan2.h
@@ -0,0 +1,57 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __ATAN2_H__
+#define __ATAN2_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include <math.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Compute arctan with two parameters .
+*/
+
+
+/*
+** \brief Float arc tangent function
+*/
+EXTERN_ELEMFUNCT float satan2s ( float x , float y );
+
+/*
+** \brief Double arc tangent function
+*/
+EXTERN_ELEMFUNCT double datan2s ( double x , double y);
+
+
+/*
+** \brief array's Float arc tangent function
+*/
+EXTERN_ELEMFUNCT void satan2a (float* in1, int size1, float* in2, int size2, float* out) ;
+
+/*
+** \brief array's Double arc tangent function
+*/
+EXTERN_ELEMFUNCT void datan2a (double* in1, int size1, double* in2, int size2, double* out) ;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+
+#endif /* !__EXP10_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/atand.h b/2.3-1/src/c/elementaryFunctions/includes/atand.h
new file mode 100644
index 00000000..ed10f09f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/atand.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __ATAND_H__
+#define __ATAND_H__
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double datands(double x);
+
+void datanda(double* x, int size, double* y);
+
+double satands(float x);
+
+void satanda(float* x, int size, float* y);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ATAND_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/atanh.h b/2.3-1/src/c/elementaryFunctions/includes/atanh.h
new file mode 100644
index 00000000..32fe1789
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/atanh.h
@@ -0,0 +1,91 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ATANH_H__
+#define __ATANH_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Compute Hyperbolic ArcTangeant for different types .
+*/
+
+/*
+** \brief Float Hyperbolic ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float satanhs(float in);
+
+/*
+** \brief Double Hyperbolic ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double datanhs(double in);
+
+/*
+** \brief Float Complex Hyperbolic ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex catanhs(floatComplex in);
+
+/*
+** \brief Double Complex Hyperbolic ArcTangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zatanhs(doubleComplex in);
+
+/*
+** \brief Float Matrix Hyperbolic ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void satanha(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Hyperbolic ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void datanha(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Hyperbolic ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void catanha(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Hyperbolic ArcTangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zatanha(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__ATANH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/base2dec.h b/2.3-1/src/c/elementaryFunctions/includes/base2dec.h
new file mode 100644
index 00000000..426388ef
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/base2dec.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __BASE2DEC_H__
+#define __BASE2DEC_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+double gbase2decs(char* in,int size,int base);
+double dbase2decs(double in,int base);
+//void ghex2deca(char* in,int size,double* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__BASE2DEC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bin2dec.h b/2.3-1/src/c/elementaryFunctions/includes/bin2dec.h
new file mode 100644
index 00000000..ea1585f5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bin2dec.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __BIN2DEC_H__
+#define __BIN2DEC_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+long double dbin2decs(long double in);
+int8 i8bin2decs(int8 in);
+int16 i16bin2decs(int16 in);
+uint8 u8bin2decs(uint8 in);
+uint16 u16bin2decs(uint16 in);
+
+void dbin2deca(double* in,int size,double* out);
+void i8bin2deca(int8* in,int size,int8* out);
+void i16bin2deca(int16* in,int size,int16* out);
+void u8bin2deca(uint8* in,int size,uint8* out);
+void u16bin2deca(uint16* in,int size,uint16* out);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__BIN2DEC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bitand.h b/2.3-1/src/c/elementaryFunctions/includes/bitand.h
new file mode 100644
index 00000000..ee132625
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bitand.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __BITAND_H__
+#define __BITAND_H__
+
+
+
+#include "dynlib_elementaryfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* bitand returns the logical AND operation
+ 12 = 00001100 (In Binary)
+ 25 = 00011001 (In Binary)
+
+Bit Operation of 12 and 25
+ 00001100
+& 00011001
+ ________
+ 00001000 = 8 (In decimal)
+*/
+
+uint8 u8bitands(uint8 in1,uint8 in2);
+
+void u8bitanda(uint8* in1,uint8* in2,int size,uint8* out);
+
+uint16 u16bitands(uint16 in1,uint16 in2);
+
+void u16bitanda(uint16* in1,uint16* in2,int size,uint16* out);
+
+
+#ifdef __cplusplus
+} /*extern "C" */
+#endif
+
+#endif /* !__BITAND_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bitcmp.h b/2.3-1/src/c/elementaryFunctions/includes/bitcmp.h
new file mode 100644
index 00000000..ead0b827
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bitcmp.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __BITCMP_H__
+#define __BITCMP_H__
+
+
+
+#include "dynlib_elementaryfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* bitcmp returns the complement
+35=00100011 (In Binary)
+
+Bitwise complement Operation of 35
+~ 00100011
+ ________
+ 11011100 = 220 (In decimal)
+*/
+
+EXTERN_ELEMFUNCT uint8 u8bitcmps(uint8 in1,uint8 in2);
+
+EXTERN_ELEMFUNCT void u8bitcmpa(uint8* in1,uint8 in2,int size,uint8* out);
+
+EXTERN_ELEMFUNCT uint16 u16bitcmps(uint16 in1,uint16 in2);
+
+EXTERN_ELEMFUNCT void u16bitcmpa(uint16* in1,uint16 in2,int size,uint16* out);
+
+
+
+#ifdef __cplusplus
+
+} /*extern "C" */
+#endif
+
+#endif /* !__BITCMP_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bitget.h b/2.3-1/src/c/elementaryFunctions/includes/bitget.h
new file mode 100644
index 00000000..9e12abdc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bitget.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __BITGET_H__
+#define __BITGET_H__
+
+
+
+#include "dynlib_elementaryfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+EXTERN_ELEMFUNCT uint8 u8bitgets(uint8 value,int position);
+
+EXTERN_ELEMFUNCT uint16 u16bitgets(uint16 value,int position);
+
+#ifdef __cplusplus
+
+} /*extern "C" */
+#endif
+
+#endif /* !__BITGET_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bitor.h b/2.3-1/src/c/elementaryFunctions/includes/bitor.h
new file mode 100644
index 00000000..3f2ae085
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bitor.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __BITOR_H__
+#define __BITOR_H__
+
+
+
+#include "dynlib_elementaryfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* bitor returns the logical OR operation
+ 12 = 00001100 (In Binary)
+25 = 00011001 (In Binary)
+
+Bitwise OR Operation of 12 and 25
+ 00001100
+| 00011001
+ ________
+ 00011101 = 29 (In decimal) */
+
+EXTERN_ELEMFUNCT uint8 u8bitors(uint8 in1,uint8 in2);
+
+EXTERN_ELEMFUNCT void u8bitora(uint8* in1,uint8* in2,int size,uint8* out);
+
+EXTERN_ELEMFUNCT uint16 u16bitors(uint16 in1,uint16 in2);
+
+EXTERN_ELEMFUNCT void u16bitora(uint16* in1,uint16* in2,int size,uint16* out);
+
+
+#ifdef __cplusplus
+
+} /*extern "C" */
+#endif
+
+#endif /* !__BITOR_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bitset.h b/2.3-1/src/c/elementaryFunctions/includes/bitset.h
new file mode 100644
index 00000000..5d519de9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bitset.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __BITSET_H__
+#define __BITSET_H__
+
+
+
+#include "dynlib_elementaryfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+EXTERN_ELEMFUNCT uint8 u8bitsets(uint8 value,int position,int bit_value);
+
+EXTERN_ELEMFUNCT uint16 u16bitsets(uint16 value,int position,int bit_value);
+
+#ifdef __cplusplus
+
+} /*extern "C" */
+#endif
+
+#endif /* !__BITSET_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/bitxor.h b/2.3-1/src/c/elementaryFunctions/includes/bitxor.h
new file mode 100644
index 00000000..5d429571
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/bitxor.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __BITXOR_H__
+#define __BITXOR_H__
+
+
+
+#include "dynlib_elementaryfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* bitxor returns the logical OR operation
+ 12 = 00001100 (In Binary)
+25 = 00011001 (In Binary)
+
+Bitwise XOR Operation of 12 and 25
+ 00001100
+^ 00011001
+ ________
+ 00010101 = 21 (In decimal) */
+
+EXTERN_ELEMFUNCT uint8 u8bitxors(uint8 in1,uint8 in2);
+
+EXTERN_ELEMFUNCT void u8bitxora(uint8* in1,uint8* in2,int size,uint8* out);
+
+EXTERN_ELEMFUNCT uint16 u16bitxors(uint16 in1,uint16 in2);
+
+EXTERN_ELEMFUNCT void u16bitxora(uint16* in1,uint16* in2,int size,uint16* out);
+
+
+#ifdef __cplusplus
+
+} /*extern "C" */
+#endif
+
+#endif /* !__BITXOR_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/ceil.h b/2.3-1/src/c/elementaryFunctions/includes/ceil.h
new file mode 100644
index 00000000..57df72d5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/ceil.h
@@ -0,0 +1,67 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+#ifndef __CEIL_H__
+#define __CEIL_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ ceil(x) returns an integer matrix made of rounded up elements
+*/
+
+EXTERN_ELEMFUNCT float sceils(float in);
+
+EXTERN_ELEMFUNCT double dceils(double in);
+
+EXTERN_ELEMFUNCT floatComplex cceils(floatComplex in);
+
+EXTERN_ELEMFUNCT doubleComplex zceils(doubleComplex in);
+
+EXTERN_ELEMFUNCT uint8 u8ceils(uint8 in);
+
+EXTERN_ELEMFUNCT int8 i8ceils(int8 in);
+
+EXTERN_ELEMFUNCT uint16 u16ceils(uint16 in);
+
+EXTERN_ELEMFUNCT int16 i16ceils(int16 in);
+
+EXTERN_ELEMFUNCT void sceila(float* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void dceila(double* in, int size, double* out);
+
+EXTERN_ELEMFUNCT void cceila(floatComplex* in, int size, floatComplex* out);
+
+EXTERN_ELEMFUNCT void zceila(doubleComplex* in, int size, doubleComplex* out);
+
+EXTERN_ELEMFUNCT void u8ceila(uint8* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void i8ceila(int8* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void u16ceila(uint16* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void i16ceila(int16* in, int size, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__CEIL_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/cos.h b/2.3-1/src/c/elementaryFunctions/includes/cos.h
new file mode 100644
index 00000000..25c76945
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/cos.h
@@ -0,0 +1,145 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __COS_H__
+#define __COS_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Cosine for different types .
+*/
+
+/*
+** \brief Float Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float scoss(float in);
+
+/*
+** \brief Double Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dcoss(double in);
+
+/*
+** \brief Float Complex Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex ccoss(floatComplex in);
+
+/*
+** \brief Double Complex Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zcoss(doubleComplex in);
+
+/*
+** \brief Uint8 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8coss(uint8 in);
+
+/*
+** \brief Int8 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8coss(int8 in);
+
+/*
+** \brief Uint16 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16coss(uint16 in);
+
+/*
+** \brief Int8 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16coss(int16 in);
+
+/*
+** \brief Float Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void scosa(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dcosa(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ccosa(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zcosa(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief uint8 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8cosa(uint8* in, int size, float* out);
+
+/*
+** \brief int8 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8cosa(int8* in, int size, float* out);
+
+/*
+** \brief uint16 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16cosa(uint16* in, int size, float* out);
+
+/*
+** \brief int16 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16cosa(int16* in, int size, float* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__COS_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/cosd.h b/2.3-1/src/c/elementaryFunctions/includes/cosd.h
new file mode 100644
index 00000000..7cb59be1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/cosd.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __COSD_H__
+#define __COSD_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dcosda(double* in,int size,double* out);
+void scosda(float* in,int size,float* out);
+double dcosds(double in);
+float scosds(float in);
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__COSD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/cosh.h b/2.3-1/src/c/elementaryFunctions/includes/cosh.h
new file mode 100644
index 00000000..5c7c8b71
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/cosh.h
@@ -0,0 +1,148 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __COSH_H__
+#define __COSH_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Cosine for different types .
+*/
+
+/*
+** \brief Float Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float scoshs(float in);
+
+/*
+** \brief Double Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dcoshs(double in);
+
+/*
+** \brief Float Complex Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex ccoshs(floatComplex in);
+
+/*
+** \brief Double Complex Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zcoshs(doubleComplex in);
+
+/*
+** \brief uint8 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8coshs(uint8 in);
+
+/*
+** \brief int8 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8coshs(int8 in);
+
+/*
+** \brief uint16 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16coshs(uint16 in);
+
+/*
+** \brief int16 Cosine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16coshs(int16 in);
+
+/*
+** \brief Float Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void scosha(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dcosha(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ccosha(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zcosha(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief Uint8 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8cosha(uint8* in, int size, uint8* out);
+
+/*
+** \brief Int8 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8cosha(int8* in, int size, int8* out);
+
+/*
+** \brief Uint16 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16cosha(uint16* in, int size, uint16* out);
+
+/*
+** \brief Int16 Matrix Cosine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16cosha(int16* in, int size, int16* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__COSH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/cotd.h b/2.3-1/src/c/elementaryFunctions/includes/cotd.h
new file mode 100644
index 00000000..d2140cb0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/cotd.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __COTD_H__
+#define __COTD_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dcotda(double* in,int size,double* out);
+double dcotds(double in);
+void scotda(float* in,int size,float* out);
+float scotds(float in);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__COTD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/coth.h b/2.3-1/src/c/elementaryFunctions/includes/coth.h
new file mode 100644
index 00000000..ac3f82c7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/coth.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __COTH_H__
+#define __COTH_H__
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dcotha(double* in,int size,double* out);
+double dcoths(double in);
+void scotha(float* in,int size,float* out);
+float scoths(float in);
+doubleComplex zcoths(doubleComplex z);
+void zcotha(doubleComplex* in, int size,doubleComplex* out);
+void ccotha(floatComplex* in, int size,floatComplex* out);
+floatComplex ccoths(floatComplex z);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__COTH_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/csc.h b/2.3-1/src/c/elementaryFunctions/includes/csc.h
new file mode 100644
index 00000000..6914c933
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/csc.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __CSC_H__
+#define __CSC_H__
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dcsca(double* in,int size,double* out);
+double dcscs(double in);
+void scsca(float* in,int size,float* out);
+float scscs(float in);
+doubleComplex zcscs(doubleComplex z);
+void zcsca(doubleComplex* in, int size,doubleComplex* out);
+floatComplex ccscs(floatComplex z);
+void ccsca(floatComplex* in, int size,floatComplex* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__CSC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/cscd.h b/2.3-1/src/c/elementaryFunctions/includes/cscd.h
new file mode 100644
index 00000000..fad31551
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/cscd.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __CSCD_H__
+#define __CSCD_H__
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dcscda(double* in,int size,double* out);
+double dcscds(double in);
+void scscda(float* in,int size,float* out);
+float scscds(float in);
+
+void ccscda(floatComplex* in,int size,floatComplex* out);
+floatComplex ccscds(floatComplex in);
+void zcscda(doubleComplex* in,int size,doubleComplex* out);
+doubleComplex zcscds(doubleComplex in);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__CSCD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/csch.h b/2.3-1/src/c/elementaryFunctions/includes/csch.h
new file mode 100644
index 00000000..fd7b8cd1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/csch.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __CSCH_H__
+#define __CSCH_H__
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dcscha(double* in,int size,double* out);
+double dcschs(double in);
+void scscha(float* in,int size,float* out);
+float scschs(float in);
+
+void ccscha(floatComplex* in,int size,floatComplex* out);
+floatComplex ccschs(floatComplex in);
+void zcscha(doubleComplex* in,int size,doubleComplex* out);
+doubleComplex zcschs(doubleComplex in);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__CSCH_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/dec2base.h b/2.3-1/src/c/elementaryFunctions/includes/dec2base.h
new file mode 100644
index 00000000..aa830072
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/dec2base.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __DEC2BASE_H__
+#define __DEC2BASE_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void ddec2bases(double in,int base,int n,char* out);
+void ddec2basea(double* in,int size,int base,int n,char* out);
+void sdec2bases(float in,int base,int n,char* out);
+void sdec2basea(float* in,int size,int base,int n,char* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__DEC2BASE_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/dec2bin.h b/2.3-1/src/c/elementaryFunctions/includes/dec2bin.h
new file mode 100644
index 00000000..d0917bba
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/dec2bin.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __DEC2BIN_H__
+#define __DEC2BIN_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void ddec2bins(double in,int n,double* out);
+void i8dec2bins(int8 in,int n,int8* out);
+void i16dec2bins(int16 in,int n,int16* out);
+void u8dec2bins(uint8 in,int n,uint8* out);
+void u16dec2bins(uint16 in,int n,uint16* out);
+
+void ddec2bina(double* in,int size,int n,double* out);
+void i8dec2bina(int8* in,int size,int n,int8* out);
+void i16dec2bina(int16* in,int size,int n,int16* out);
+void u8dec2bina(uint8* in,int size,int n,uint8* out);
+void u16dec2bina(uint16* in,int size,int n,uint16* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__DEC2BIN_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/dec2hex.h b/2.3-1/src/c/elementaryFunctions/includes/dec2hex.h
new file mode 100644
index 00000000..e973a871
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/dec2hex.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __DEC2HEX_H__
+#define __DEC2HEX_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void ddec2hexs(double in,char* out);
+void i8dec2hexs(int8 in,char* out);
+void i16dec2hexs(int16 in,char* out);
+void u8dec2hexs(uint8 in,char* out);
+void u16dec2hexs(uint16 in,char* out);
+
+void ddec2hexa(double* in,int size,char* out);
+void i8dec2hexa(int8* in,int size,char* out);
+void i16dec2hexa(int16* in,int size,char* out);
+void u8dec2hexa(uint8* in,int size,char* out);
+void u16dec2hexa(uint16* in,int size,char* out);
+
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__DEC2HEX_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/dec2oct.h b/2.3-1/src/c/elementaryFunctions/includes/dec2oct.h
new file mode 100644
index 00000000..b0e38fa5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/dec2oct.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __DEC2oct_H__
+#define __DEC2oct_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void ddec2octs(double in,double* out);
+void i8dec2octs(int8 in,int8* out);
+void i16dec2octs(int16 in,int16* out);
+void u8dec2octs(uint8 in,uint8* out);
+void u16dec2octs(uint16 in,uint16* out);
+
+void ddec2octa(double* in,int size,double* out);
+void i8dec2octa(int8* in,int size,int8* out);
+void i16dec2octa(int16* in,int size,int16* out);
+void u8dec2octa(uint8* in,int size,uint8* out);
+void u16dec2octa(uint16* in,int size,uint16* out);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__DEC2oct_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/dynlib_elementaryfunctions.h b/2.3-1/src/c/elementaryFunctions/includes/dynlib_elementaryfunctions.h
new file mode 100644
index 00000000..5037696f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/dynlib_elementaryfunctions.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_ELEMENTARYFUNCTIONS_H__
+#define __DYNLIB_ELEMENTARYFUNCTIONS_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if ELEMENTARYFUNCTIONS_EXPORTS
+ #define EXTERN_ELEMFUNCT __declspec (dllexport)
+ #else
+ #define EXTERN_ELEMFUNCT __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_ELEMFUNCT
+#endif
+
+#endif /* __DYNLIB_ELEMENTARYFUNCTIONS_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/exp.h b/2.3-1/src/c/elementaryFunctions/includes/exp.h
new file mode 100644
index 00000000..6e8f027c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/exp.h
@@ -0,0 +1,148 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __EXP_H__
+#define __EXP_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Exponential for different types .
+*/
+
+/*
+** \brief Float Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float sexps(float in);
+
+/*
+** \brief Double Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dexps(double in);
+
+/*
+** \brief Float Complex Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex cexps(floatComplex in);
+
+/*
+** \brief Double Complex Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zexps(doubleComplex in);
+
+/*
+** \brief Uint8 Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8exps(uint8 in);
+
+/*
+** \brief Int8 Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8exps(int8 in);
+
+/*
+** \brief Uint16 Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16exps(uint16 in);
+
+/*
+** \brief Int16 Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16exps(int16 in);
+
+/*
+** \brief Float Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sexpa(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dexpa(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void cexpa(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zexpa(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief Uint8 Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8expa(uint8* in, int size, float* out);
+
+/*
+** \brief Int8 Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8expa(int8* in, int size, float* out);
+
+/*
+** \brief Uint16 Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16expa(uint16* in, int size, float* out);
+
+/*
+** \brief Int16 Matrix Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16expa(int16* in, int size, float* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__EXP_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/exp10.h b/2.3-1/src/c/elementaryFunctions/includes/exp10.h
new file mode 100644
index 00000000..56a1d999
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/exp10.h
@@ -0,0 +1,90 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __EXP10_H__
+#define __EXP10_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute 10 based Exponential for different types .
+*/
+
+/*
+** \brief Float 10 based Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float sexp10s(float in);
+
+/*
+** \brief Double Exp10onential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dexp10s(double in);
+
+/*
+** \brief Float Complex 10 based Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex cexp10s(floatComplex in);
+
+/*
+** \brief Double Complex 10 based Exponential function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zexp10s(doubleComplex in);
+
+/*
+** \brief Float Matrix 10 based Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sexp10a(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix 10 based Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dexp10a(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix 10 based Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void cexp10a(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix 10 based Exponential function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zexp10a(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__EXP10_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/factor.h b/2.3-1/src/c/elementaryFunctions/includes/factor.h
new file mode 100644
index 00000000..bec7277b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/factor.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __FACTOR_H__
+#define __FACTOR_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dfactors(double in,double* out);
+void sfactors(float in,float* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__FACTOR_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/factorial.h b/2.3-1/src/c/elementaryFunctions/includes/factorial.h
new file mode 100644
index 00000000..077191e3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/factorial.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __FACTORIAL_H__
+#define __FACTORIAL_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dfactorials(double in);
+//int8 i8factorials(int8 in);
+//int16 i16factorials(int16 in);
+//uint8 u8factorials(uint8 in);
+//uint16 u16factorials(uint16 in);
+
+void dfactoriala(double* in,int size,double* out);
+//void i8factoriala(int8* in,int size,int8* out);
+//void i16factoriala(int16* in,int size,int16* out);
+//void u8factoriala(uint8* in,int size,uint8* out);
+//void u16factoriala(uint16* in,int size,uint16* out);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__FACTORIAL_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/fix.h b/2.3-1/src/c/elementaryFunctions/includes/fix.h
new file mode 100644
index 00000000..592905b4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/fix.h
@@ -0,0 +1,72 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+#ifndef __FIX_H__
+#define __FIX_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+#include "floor.h"
+#include "ceil.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ fix(x) returns an integer matrix made of nearest rounded integers toward zero,i.e, y=sign(x).*floor(abs(x)). Same as int.
+ In these functions, I take the formula :
+ if x>=0 y=floor(x)
+ else y=ceil(x)
+*/
+
+EXTERN_ELEMFUNCT float sfixs(float in);
+
+EXTERN_ELEMFUNCT double dfixs(double in);
+
+EXTERN_ELEMFUNCT floatComplex cfixs(floatComplex in);
+
+EXTERN_ELEMFUNCT doubleComplex zfixs(doubleComplex in);
+
+EXTERN_ELEMFUNCT uint8 u8fixs(uint8 in);
+
+EXTERN_ELEMFUNCT int8 i8fixs(int8 in);
+
+EXTERN_ELEMFUNCT uint16 u16fixs(uint16 in);
+
+EXTERN_ELEMFUNCT int16 i16fixs(int16 in);
+
+EXTERN_ELEMFUNCT void sfixa(float* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void dfixa(double* in, int size, double* out);
+
+EXTERN_ELEMFUNCT void cfixa(floatComplex* in, int size, floatComplex* out);
+
+EXTERN_ELEMFUNCT void zfixa(doubleComplex* in, int size, doubleComplex* out);
+
+EXTERN_ELEMFUNCT void u8fixa(uint8* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void i8fixa(int8* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void u16fixa(uint16* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void i16fixa(int16* in, int size, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__FIX_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/floor.h b/2.3-1/src/c/elementaryFunctions/includes/floor.h
new file mode 100644
index 00000000..cd566416
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/floor.h
@@ -0,0 +1,66 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+#ifndef __FLOOR_H__
+#define __FLOOR_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ floor(x) returns an integer matrix made of nearest rounded down integers.
+*/
+
+EXTERN_ELEMFUNCT float sfloors(float in);
+
+EXTERN_ELEMFUNCT double dfloors(double in);
+
+EXTERN_ELEMFUNCT floatComplex cfloors(floatComplex in);
+
+EXTERN_ELEMFUNCT doubleComplex zfloors(doubleComplex in);
+
+EXTERN_ELEMFUNCT uint8 u8floors(uint8 in);
+
+EXTERN_ELEMFUNCT int8 i8floors(int8 in);
+
+EXTERN_ELEMFUNCT uint16 u16floors(uint16 in);
+
+EXTERN_ELEMFUNCT int16 i16floors(int16 in);
+
+EXTERN_ELEMFUNCT void sfloora(float* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void dfloora(double* in, int size, double* out);
+
+EXTERN_ELEMFUNCT void cfloora(floatComplex* in, int size, floatComplex* out);
+
+EXTERN_ELEMFUNCT void zfloora(doubleComplex* in, int size, doubleComplex* out);
+
+EXTERN_ELEMFUNCT void u8floora(uint8* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void i8floora(int8* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void u16floora(uint16* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void i16floora(int16* in, int size, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__FLOOR_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/get_float.h b/2.3-1/src/c/elementaryFunctions/includes/get_float.h
new file mode 100644
index 00000000..285cb9c9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/get_float.h
@@ -0,0 +1,56 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud Torset
+ * Author - Shamik Guha
+ * 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
+ *
+ */
+
+#ifndef __GET_FLOAT_H__
+#define __GET_FLOAT_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ float(X) returns the unsigned char part of the double value
+*/
+
+EXTERN_ELEMFUNCT float sfloats(float in);
+
+EXTERN_ELEMFUNCT float dfloats(double in);
+
+EXTERN_ELEMFUNCT float i8floats(int8 in);
+
+EXTERN_ELEMFUNCT float u8floats(uint8 in);
+
+EXTERN_ELEMFUNCT float u16floats(uint16 in);
+
+EXTERN_ELEMFUNCT float i16floats(int16 in);
+
+EXTERN_ELEMFUNCT void sfloata(float* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void dfloata(double* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void i8floata(int8* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void u16floata(uint16* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void i16floata(int16* in, int size, float* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__GET_FLOAT_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/hex2dec.h b/2.3-1/src/c/elementaryFunctions/includes/hex2dec.h
new file mode 100644
index 00000000..f16a8541
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/hex2dec.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __HEX2DEC_H__
+#define __HEX2DEC_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+double ghex2decs(char* in,int size);
+double dhex2decs(double in);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__HEX2DEC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/int.h b/2.3-1/src/c/elementaryFunctions/includes/int.h
new file mode 100644
index 00000000..53985887
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/int.h
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+#ifndef __INT_H__
+#define __INT_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ int(X) returns the integer part of the real matrix X. Same as fix.
+*/
+
+EXTERN_ELEMFUNCT float sints(float in);
+
+EXTERN_ELEMFUNCT double dints(double in);
+
+EXTERN_ELEMFUNCT floatComplex cints(floatComplex in);
+
+EXTERN_ELEMFUNCT doubleComplex zints(doubleComplex in);
+
+EXTERN_ELEMFUNCT void sinta(float* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void dinta(double* in, int size, double* out);
+
+EXTERN_ELEMFUNCT void cinta(floatComplex* in, int size, floatComplex* out);
+
+EXTERN_ELEMFUNCT void zinta(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__INT_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/int16.h b/2.3-1/src/c/elementaryFunctions/includes/int16.h
new file mode 100644
index 00000000..6135e6b0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/int16.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT16_H__
+#define __INT16_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ int16(X) returns the signed int part of the double value
+*/
+
+EXTERN_ELEMFUNCT int16 sint16s(float in);
+
+EXTERN_ELEMFUNCT int16 dint16s(double in);
+
+EXTERN_ELEMFUNCT int16 u8int16s(uint8 in);
+
+EXTERN_ELEMFUNCT int16 i8int16s(int8 in);
+
+EXTERN_ELEMFUNCT int16 u16int16s(uint16 in);
+
+EXTERN_ELEMFUNCT void sint16a(float* in, int size, int16* out);
+
+EXTERN_ELEMFUNCT void dint16a(double* in, int size, int16* out);
+
+EXTERN_ELEMFUNCT void u8int16a(uint8* in, int size, int16* out);
+
+EXTERN_ELEMFUNCT void i8int16a(int8* in, int size, int16* out);
+
+EXTERN_ELEMFUNCT void u16int16a(uint16* in, int size, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__INT16_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/int8.h b/2.3-1/src/c/elementaryFunctions/includes/int8.h
new file mode 100644
index 00000000..0ac8723f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/int8.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT8_H__
+#define __INT8_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ int8(X) returns the signed char part of the double value
+*/
+
+EXTERN_ELEMFUNCT int8 sint8s(float in);
+
+EXTERN_ELEMFUNCT int8 dint8s(double in);
+
+EXTERN_ELEMFUNCT int8 u8int8s(uint8 in);
+
+EXTERN_ELEMFUNCT int8 u16int8s(uint16 in);
+
+EXTERN_ELEMFUNCT int8 i16int8s(int16 in);
+
+EXTERN_ELEMFUNCT void sint8a(float* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void dint8a(double* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void u8int8a(uint8* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void u16int8a(uint16* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void i16int8a(int16* in, int size, int8* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__INT8_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/linspace.h b/2.3-1/src/c/elementaryFunctions/includes/linspace.h
new file mode 100644
index 00000000..92fe10e5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/linspace.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __LINSPACE_H__
+#define __LINSPACE_H__
+
+#include "dynlib_elementaryfunctions.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+EXTERN_ELEMFUNCT void dlinspaces(double low_limit,double up_limit,double range_num, double* out);
+
+EXTERN_ELEMFUNCT void dlinspacea(double *low_limit,int row,double *up_limit,double range_num, double* out);
+
+
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__LINSPACE_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/lnp1m1.h b/2.3-1/src/c/elementaryFunctions/includes/lnp1m1.h
new file mode 100644
index 00000000..e5f37515
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/lnp1m1.h
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LNP1M1_H__
+#define __LNP1M1_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute v = log ( (1 + s)/(1 - s) ) for different types .
+*/
+
+/*
+** \brief Float Lnp1m1 function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float slnp1m1s(float in);
+
+/*
+** \brief Double Lnp1m1 function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dlnp1m1s(double in);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__LNP1M1_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/log.h b/2.3-1/src/c/elementaryFunctions/includes/log.h
new file mode 100644
index 00000000..9fb5e75b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/log.h
@@ -0,0 +1,89 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LOG_H__
+#define __LOG_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Logarithm for different types .
+*/
+
+/*
+** \brief Float Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float slogs(float in);
+
+/*
+** \brief Double Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dlogs(double in);
+
+/*
+** \brief Float Complex Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex clogs(floatComplex in);
+
+/*
+** \brief Double Complex Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zlogs(doubleComplex in);
+
+/*
+** \brief Float Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void sloga(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dloga(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void cloga(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zloga(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__LOG_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/log10.h b/2.3-1/src/c/elementaryFunctions/includes/log10.h
new file mode 100644
index 00000000..a595424e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/log10.h
@@ -0,0 +1,89 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LOG10_H__
+#define __LOG10_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Ten based Logarithm for different types .
+*/
+
+/*
+** \brief Float Ten based Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float slog10s(float in);
+
+/*
+** \brief Double Ten based Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dlog10s(double in);
+
+/*
+** \brief Float Complex Ten based Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex clog10s(floatComplex in);
+
+/*
+** \brief Double Complex Ten based Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zlog10s(doubleComplex in);
+
+/*
+** \brief Float Matrix Ten based Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void slog10a(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Ten based Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dlog10a(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Ten based Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void clog10a(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Ten based Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zlog10a(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__LOG10_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/log1p.h b/2.3-1/src/c/elementaryFunctions/includes/log1p.h
new file mode 100644
index 00000000..58b93d07
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/log1p.h
@@ -0,0 +1,88 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LOG1P_H__
+#define __LOG1P_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Logarithm for different types .
+*/
+
+/*
+** \brief Float Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float slog1ps(float in);
+
+/*
+** \brief Double Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dlog1ps(double in);
+
+/*
+** \brief Float Complex Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex clog1ps(floatComplex in);
+
+/*
+** \brief Double Complex Logarithm function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zlog1ps(doubleComplex in);
+
+/*
+** \brief Float Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void slog1pa(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dlog1pa(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void clog1pa(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Logarithm function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zlog1pa(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__LOG1P_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/logspace.h b/2.3-1/src/c/elementaryFunctions/includes/logspace.h
new file mode 100644
index 00000000..eee39de7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/logspace.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __LOGSPACE_H__
+#define __LOGSPACE_H__
+
+#include "dynlib_elementaryfunctions.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+EXTERN_ELEMFUNCT void dlogspaces(double low_limit,double up_limit,double range_num, double* out);
+
+EXTERN_ELEMFUNCT void dlogspacea(double *low_limit,int row,double *up_limit,double range_num, double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__LOGSPACE_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/oct2dec.h b/2.3-1/src/c/elementaryFunctions/includes/oct2dec.h
new file mode 100644
index 00000000..0b454d11
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/oct2dec.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __OCT2DEC_H__
+#define __OCT2DEC_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+double doct2decs(double in);
+int8 i8oct2decs(int8 in);
+int16 i16oct2decs(int16 in);
+uint8 u8oct2decs(uint8 in);
+uint16 u16oct2decs(uint16 in);
+
+void doct2deca(double* in,int size,double* out);
+void i8oct2deca(int8* in,int size,int8* out);
+void i16oct2deca(int16* in,int size,int16* out);
+void u8oct2deca(uint8* in,int size,uint8* out);
+void u16oct2deca(uint16* in,int size,uint16* out);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__OCT2DEC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/pow.h b/2.3-1/src/c/elementaryFunctions/includes/pow.h
new file mode 100644
index 00000000..de1eb409
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/pow.h
@@ -0,0 +1,59 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __POW_H__
+#define __POW_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "multiplication.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+EXTERN_ELEMFUNCT float spows(float value, float expand);
+
+EXTERN_ELEMFUNCT double dpows(double value, double expand);
+
+EXTERN_ELEMFUNCT floatComplex cpows(floatComplex value, floatComplex expand);
+
+EXTERN_ELEMFUNCT doubleComplex zpows(doubleComplex value, doubleComplex expand);
+
+EXTERN_ELEMFUNCT uint8 u8pows(uint8 value, uint8 expand);
+
+EXTERN_ELEMFUNCT uint16 u16pows(uint16 value, uint16 expand);
+
+EXTERN_ELEMFUNCT int8 i8pows(int8 value, int8 expand);
+
+EXTERN_ELEMFUNCT int16 i16pows(int16 value, int16 expand);
+
+EXTERN_ELEMFUNCT void spowa(float *value, int size, float* expand, float *out);
+
+EXTERN_ELEMFUNCT void dpowa(double *value, int size, double* expand, double *out);
+
+EXTERN_ELEMFUNCT void cpowa(floatComplex *value, int size, floatComplex* expand, floatComplex *out);
+
+EXTERN_ELEMFUNCT void zpowa(doubleComplex *value, int size, doubleComplex* expand, doubleComplex *out);
+
+EXTERN_ELEMFUNCT void u8powa(uint8 *value, int size, uint8* expand, uint8 *out);
+
+EXTERN_ELEMFUNCT void u16powa(uint16 *value, int size, uint16* expand, uint16 *out);
+
+EXTERN_ELEMFUNCT void i8powa(int8 *value, int size, int8* expand, int8 *out);
+
+EXTERN_ELEMFUNCT void i16powa(int16 *value, int size, int16* expand, int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__POW_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/primes.h b/2.3-1/src/c/elementaryFunctions/includes/primes.h
new file mode 100644
index 00000000..c541df9e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/primes.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __PRIMES_H__
+#define __PRIMES_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void dprimess(double in,double* out);
+void sprimess(float in,float* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__PRIMES_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/round.h b/2.3-1/src/c/elementaryFunctions/includes/round.h
new file mode 100644
index 00000000..6894265a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/round.h
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+#ifndef __ROUND_H__
+#define __ROUND_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ round(x) rounds the elements of x to the nearest integers.
+*/
+
+EXTERN_ELEMFUNCT float srounds(float in);
+
+EXTERN_ELEMFUNCT double drounds(double in);
+
+EXTERN_ELEMFUNCT floatComplex crounds(floatComplex in);
+
+EXTERN_ELEMFUNCT doubleComplex zrounds(doubleComplex in);
+
+EXTERN_ELEMFUNCT uint8 u8rounds(uint8 in);
+
+EXTERN_ELEMFUNCT int8 i8rounds(int8 in);
+
+EXTERN_ELEMFUNCT uint16 u16rounds(uint16 in);
+
+EXTERN_ELEMFUNCT int16 i16rounds(int16 in);
+
+EXTERN_ELEMFUNCT void srounda(float* in, int size, float* out);
+
+EXTERN_ELEMFUNCT void drounda(double* in, int size, double* out);
+
+EXTERN_ELEMFUNCT void crounda(floatComplex* in, int size, floatComplex* out);
+
+EXTERN_ELEMFUNCT void zrounda(doubleComplex* in, int size, doubleComplex* out);
+
+EXTERN_ELEMFUNCT void u8rounda(uint8* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void i8rounda(int8* in, int size, int8* out);
+
+EXTERN_ELEMFUNCT void u16rounda(uint16* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void i16rounda(int16* in, int size, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ROUND_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sec.h b/2.3-1/src/c/elementaryFunctions/includes/sec.h
new file mode 100644
index 00000000..a04c5f73
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/sec.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __SEC_H__
+#define __SEC_H__
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+//#include <complex.h>
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dseca(double* in,int size,double* out);
+double dsecs(double in);
+void sseca(float* in,int size,float* out);
+float ssecs(float in);
+
+doubleComplex zsecs(doubleComplex z);
+//void zseca(doubleComplex* in, int size,doubleComplex* out);
+floatComplex csecs(floatComplex z);
+void cseca(floatComplex* in, int size,floatComplex* out);
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__SEC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/secd.h b/2.3-1/src/c/elementaryFunctions/includes/secd.h
new file mode 100644
index 00000000..bf9c653d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/secd.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __SECD_H__
+#define __SECD_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dsecda(double* in,int size,double* out);
+void ssecda(float* in,int size,float* out);
+double dsecds(double in);
+float ssecds(float in);
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__SECD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sech.h b/2.3-1/src/c/elementaryFunctions/includes/sech.h
new file mode 100644
index 00000000..9b85396a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/sech.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __SECH_H__
+#define __SECH_H__
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void dsecha(double* in,int size,double* out);
+double dsechs(double in);
+void ssecha(float* in,int size,float* out);
+float ssechs(float in);
+
+void csecha(floatComplex* in,int size,floatComplex* out);
+floatComplex csechs(floatComplex in);
+void zsecha(doubleComplex* in,int size,doubleComplex* out);
+doubleComplex zsechs(doubleComplex in);
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__SECH_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sin.h b/2.3-1/src/c/elementaryFunctions/includes/sin.h
new file mode 100644
index 00000000..ffb76269
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/sin.h
@@ -0,0 +1,150 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SIN_H__
+#define __SIN_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Sine for different types .
+*/
+
+/*
+** \brief Float Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float ssins(float in);
+
+/*
+** \brief Double Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dsins(double in);
+
+/*
+** \brief Float Complex Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex csins(floatComplex in);
+
+/*
+** \brief Double Complex Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zsins(doubleComplex in);
+
+/*
+** \brief Uint8 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8sins(uint8 in);
+
+
+/*
+** \brief Int8 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8sins(int8 in);
+
+
+/*
+** \brief Uint16 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16sins(uint16 in);
+
+
+/*
+** \brief Int16 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16sins(int16 in);
+
+/*
+** \brief Float Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ssina(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dsina(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void csina(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zsina(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief uint8 Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8sina(uint8* in, int size, float* out);
+
+/*
+** \brief int8 Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8sina(int8* in, int size, float* out);
+
+/*
+** \brief uint16 Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16sina(uint16* in, int size, float* out);
+
+/*
+** \brief int16 Matrix Sine function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16sina(int16* in, int size, float* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__SIN_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sinh.h b/2.3-1/src/c/elementaryFunctions/includes/sinh.h
new file mode 100644
index 00000000..c464fce0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/sinh.h
@@ -0,0 +1,147 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SINH_H__
+#define __SINH_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Sine for different types .
+*/
+
+/*
+** \brief Float Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float ssinhs(float in);
+
+/*
+** \brief Double Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dsinhs(double in);
+
+/*
+** \brief Float Complex Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex csinhs(floatComplex in);
+
+/*
+** \brief Double Complex Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zsinhs(doubleComplex in);
+
+
+/*
+** \brief Uint8 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8sinhs(uint8 in);
+
+/*
+** \brief Int8 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8sinhs(int8 in);
+
+/*
+** \brief Uint16 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16sinhs(uint16 in);
+
+/*
+** \brief Int16 Sine function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16sinhs(int16 in);
+
+/*
+** \brief Float Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ssinha(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dsinha(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void csinha(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zsinha(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief Uint8 Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8sinha(uint8* in, int size, float* out);
+
+/*
+** \brief Int8 Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8sinha(int8* in, int size, float* out);
+
+/*
+** \brief Uint16 Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16sinha(uint16* in, int size, float* out);
+
+/*
+** \brief Int16 Matrix Sine function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16sinha(int16* in, int size, float* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__SINH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sqrt.h b/2.3-1/src/c/elementaryFunctions/includes/sqrt.h
new file mode 100644
index 00000000..df11b20e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/sqrt.h
@@ -0,0 +1,94 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SQRT_H__
+#define __SQRT_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Square Root for different types .
+*/
+
+/*
+** \brief Float Square Root function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float ssqrts(float in);
+
+/*
+** \brief Double Square Root function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dsqrts(double in);
+
+/*
+** \brief Float Complex Square Root function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex csqrts(floatComplex in);
+
+/*
+** \brief Double Complex Square Root function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex zsqrts(doubleComplex in);
+
+
+/*
+** \brief Float Matrix Square Root function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ssqrta(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Square Root function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dsqrta(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Square Root function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void csqrta(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Square Root function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void zsqrta(doubleComplex* in, int size, doubleComplex* out);
+
+
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__SQRT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/tan.h b/2.3-1/src/c/elementaryFunctions/includes/tan.h
new file mode 100644
index 00000000..2632a779
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/tan.h
@@ -0,0 +1,148 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __TAN_H__
+#define __TAN_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Tangeant for different types .
+*/
+
+/*
+** \brief Float Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float stans(float in);
+
+/*
+** \brief Double Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dtans(double in);
+
+/*
+** \brief Float Complex Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex ctans(floatComplex in);
+
+/*
+** \brief Double Complex Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex ztans(doubleComplex in);
+
+/*
+** \brief Uint8 Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8tans(uint8 in);
+
+/*
+** \brief Int8 Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8tans(int8 in);
+
+/*
+** \brief Uint16 Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16tans(uint16 in);
+
+/*
+** \brief Int16 Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16tans(int16 in);
+
+
+/*
+** \brief Float Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void stana(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dtana(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ctana(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ztana(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief Uint8 Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8tana(uint8* in, int size, float* out);
+
+/*
+** \brief Int8 Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8tana(int8* in, int size, float* out);
+
+/*
+** \brief Uint16 Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16tana(uint16* in, int size, float* out);
+
+/*
+** \brief Int16 Matrix Tangeant function
+** \param in : input array value.
+** \param out : input array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16tana(int16* in, int size, float* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__TAN_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/tanh.h b/2.3-1/src/c/elementaryFunctions/includes/tanh.h
new file mode 100644
index 00000000..6a654230
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/tanh.h
@@ -0,0 +1,145 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __TANH_H__
+#define __TANH_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "sinh.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** Compute Hyperbolic Tangeant for different types .
+*/
+
+/*
+** \brief Float Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float stanhs(float in);
+
+/*
+** \brief Double Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT double dtanhs(double in);
+
+/*
+** \brief Float Complex Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT floatComplex ctanhs(floatComplex in);
+
+/*
+** \brief Double Complex Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT doubleComplex ztanhs(doubleComplex in);
+
+/*
+** \brief Uint8 Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u8tanhs(uint8 in);
+
+/*
+** \brief Int8 Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i8tanhs(int8 in);
+
+/*
+** \brief Uint16 Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float u16tanhs(uint16 in);
+
+/*
+** \brief Int16 Hyperbolic Tangeant function
+** \param in : input value.
+*/
+EXTERN_ELEMFUNCT float i16tanhs(int16 in);
+
+/*
+** \brief Float Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void stanha(float* in, int size, float* out);
+
+/*
+** \brief Double Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void dtanha(double* in, int size, double* out);
+
+/*
+** \brief Float Complex Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ctanha(floatComplex* in, int size, floatComplex* out);
+
+/*
+** \brief Double Complex Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void ztanha(doubleComplex* in, int size, doubleComplex* out);
+
+/*
+** \brief Uint8 Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u8tanha(uint8* in, int size, float* out);
+
+/*
+** \brief Int8 Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i8tanha(int8* in, int size, float* out);
+
+/*
+** \brief Uint16 Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void u16tanha(uint16* in, int size, float* out);
+
+/*
+** \brief Int16 Matrix Hyperbolic Tangeant function
+** \param in : input array value.
+** \param out : output array value.
+** \param size : the size of in and out arrays.
+*/
+EXTERN_ELEMFUNCT void i16tanha(int16* in, int size, float* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__TANH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/includes/uint16.h b/2.3-1/src/c/elementaryFunctions/includes/uint16.h
new file mode 100644
index 00000000..9e162130
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/uint16.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __UINT16_H__
+#define __UINT16_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ uint16(X) returns the signed int part of the double value
+*/
+
+EXTERN_ELEMFUNCT uint16 suint16s(float in);
+
+EXTERN_ELEMFUNCT uint16 duint16s(double in);
+
+EXTERN_ELEMFUNCT uint16 u8uint16s(uint8 in);
+
+EXTERN_ELEMFUNCT uint16 i8uint16s(int8 in);
+
+EXTERN_ELEMFUNCT uint16 i16uint16s(int16 in);
+
+EXTERN_ELEMFUNCT void suint16a(float* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void duint16a(double* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void u8uint16a(uint8* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void i8uint16a(int8* in, int size, uint16* out);
+
+EXTERN_ELEMFUNCT void i16uint16a(int16* in, int size, uint16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__UINT16_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/uint8.h b/2.3-1/src/c/elementaryFunctions/includes/uint8.h
new file mode 100644
index 00000000..63071c4a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/uint8.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __UINT8_H__
+#define __UINT8_H__
+
+#include "dynlib_elementaryfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ uint8(X) returns the unsigned char part of the double value
+*/
+
+EXTERN_ELEMFUNCT uint8 suint8s(float in);
+
+EXTERN_ELEMFUNCT uint8 duint8s(double in);
+
+EXTERN_ELEMFUNCT uint8 i8uint8s(int8 in);
+
+EXTERN_ELEMFUNCT uint8 u16uint8s(uint16 in);
+
+EXTERN_ELEMFUNCT uint8 i16uint8s(int16 in);
+
+EXTERN_ELEMFUNCT void suint8a(float* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void duint8a(double* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void i8uint8a(int8* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void u16uint8a(uint16* in, int size, uint8* out);
+
+EXTERN_ELEMFUNCT void i16uint8a(int16* in, int size, uint8* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__UINT8_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/int/Makefile.am b/2.3-1/src/c/elementaryFunctions/int/Makefile.am
new file mode 100644
index 00000000..be6e6617
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/Makefile.am
@@ -0,0 +1,61 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libInt_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libInt.la
+
+libInt_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/int.h
+
+SRC = sints.c \
+ dints.c \
+ cints.c \
+ zints.c \
+ sinta.c \
+ dinta.c \
+ cinta.c \
+ zinta.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/int/libInt.la \
+ $(top_builddir)/src/c/elementaryFunctions/fix/libFix.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatInt testDoubleInt
+
+TESTS = testFloatInt testDoubleInt
+
+#
+# -*- Int Tests -*-
+#
+testFloatInt_SOURCES = testFloatInt.c
+testFloatInt_CFLAGS = $(check_INCLUDES)
+testFloatInt_LDADD = $(check_LDADD)
+
+testDoubleInt_SOURCES = testDoubleInt.c
+testDoubleInt_CFLAGS = $(check_INCLUDES)
+testDoubleInt_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/int/Makefile.in b/2.3-1/src/c/elementaryFunctions/int/Makefile.in
new file mode 100644
index 00000000..524944c0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/Makefile.in
@@ -0,0 +1,790 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatInt$(EXEEXT) testDoubleInt$(EXEEXT)
+TESTS = testFloatInt$(EXEEXT) testDoubleInt$(EXEEXT)
+subdir = src/c/elementaryFunctions/int
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libInt_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libInt_la-sints.lo libInt_la-dints.lo \
+ libInt_la-cints.lo libInt_la-zints.lo libInt_la-sinta.lo \
+ libInt_la-dinta.lo libInt_la-cinta.lo libInt_la-zinta.lo
+am_libInt_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libInt_la_OBJECTS = $(am_libInt_la_OBJECTS)
+libInt_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libInt_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleInt_OBJECTS = testDoubleInt-testDoubleInt.$(OBJEXT)
+testDoubleInt_OBJECTS = $(am_testDoubleInt_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/int/libInt.la \
+ $(top_builddir)/src/c/elementaryFunctions/fix/libFix.la
+testDoubleInt_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleInt_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleInt_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatInt_OBJECTS = testFloatInt-testFloatInt.$(OBJEXT)
+testFloatInt_OBJECTS = $(am_testFloatInt_OBJECTS)
+testFloatInt_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatInt_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatInt_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libInt_la_SOURCES) $(testDoubleInt_SOURCES) \
+ $(testFloatInt_SOURCES)
+DIST_SOURCES = $(libInt_la_SOURCES) $(testDoubleInt_SOURCES) \
+ $(testFloatInt_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libInt_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libInt.la
+libInt_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/int.h
+SRC = sints.c \
+ dints.c \
+ cints.c \
+ zints.c \
+ sinta.c \
+ dinta.c \
+ cinta.c \
+ zinta.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/int/libInt.la \
+ $(top_builddir)/src/c/elementaryFunctions/fix/libFix.la \
+ @LIBMATH@
+
+
+#
+# -*- Int Tests -*-
+#
+testFloatInt_SOURCES = testFloatInt.c
+testFloatInt_CFLAGS = $(check_INCLUDES)
+testFloatInt_LDADD = $(check_LDADD)
+testDoubleInt_SOURCES = testDoubleInt.c
+testDoubleInt_CFLAGS = $(check_INCLUDES)
+testDoubleInt_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/int/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/int/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libInt.la: $(libInt_la_OBJECTS) $(libInt_la_DEPENDENCIES)
+ $(libInt_la_LINK) -rpath $(pkglibdir) $(libInt_la_OBJECTS) $(libInt_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleInt$(EXEEXT): $(testDoubleInt_OBJECTS) $(testDoubleInt_DEPENDENCIES)
+ @rm -f testDoubleInt$(EXEEXT)
+ $(testDoubleInt_LINK) $(testDoubleInt_OBJECTS) $(testDoubleInt_LDADD) $(LIBS)
+testFloatInt$(EXEEXT): $(testFloatInt_OBJECTS) $(testFloatInt_DEPENDENCIES)
+ @rm -f testFloatInt$(EXEEXT)
+ $(testFloatInt_LINK) $(testFloatInt_OBJECTS) $(testFloatInt_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-cinta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-cints.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-dinta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-dints.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-sinta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-sints.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-zinta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libInt_la-zints.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleInt-testDoubleInt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatInt-testFloatInt.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libInt_la-sints.lo: sints.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-sints.lo -MD -MP -MF $(DEPDIR)/libInt_la-sints.Tpo -c -o libInt_la-sints.lo `test -f 'sints.c' || echo '$(srcdir)/'`sints.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-sints.Tpo $(DEPDIR)/libInt_la-sints.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sints.c' object='libInt_la-sints.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-sints.lo `test -f 'sints.c' || echo '$(srcdir)/'`sints.c
+
+libInt_la-dints.lo: dints.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-dints.lo -MD -MP -MF $(DEPDIR)/libInt_la-dints.Tpo -c -o libInt_la-dints.lo `test -f 'dints.c' || echo '$(srcdir)/'`dints.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-dints.Tpo $(DEPDIR)/libInt_la-dints.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dints.c' object='libInt_la-dints.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-dints.lo `test -f 'dints.c' || echo '$(srcdir)/'`dints.c
+
+libInt_la-cints.lo: cints.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-cints.lo -MD -MP -MF $(DEPDIR)/libInt_la-cints.Tpo -c -o libInt_la-cints.lo `test -f 'cints.c' || echo '$(srcdir)/'`cints.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-cints.Tpo $(DEPDIR)/libInt_la-cints.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cints.c' object='libInt_la-cints.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-cints.lo `test -f 'cints.c' || echo '$(srcdir)/'`cints.c
+
+libInt_la-zints.lo: zints.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-zints.lo -MD -MP -MF $(DEPDIR)/libInt_la-zints.Tpo -c -o libInt_la-zints.lo `test -f 'zints.c' || echo '$(srcdir)/'`zints.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-zints.Tpo $(DEPDIR)/libInt_la-zints.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zints.c' object='libInt_la-zints.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-zints.lo `test -f 'zints.c' || echo '$(srcdir)/'`zints.c
+
+libInt_la-sinta.lo: sinta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-sinta.lo -MD -MP -MF $(DEPDIR)/libInt_la-sinta.Tpo -c -o libInt_la-sinta.lo `test -f 'sinta.c' || echo '$(srcdir)/'`sinta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-sinta.Tpo $(DEPDIR)/libInt_la-sinta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sinta.c' object='libInt_la-sinta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-sinta.lo `test -f 'sinta.c' || echo '$(srcdir)/'`sinta.c
+
+libInt_la-dinta.lo: dinta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-dinta.lo -MD -MP -MF $(DEPDIR)/libInt_la-dinta.Tpo -c -o libInt_la-dinta.lo `test -f 'dinta.c' || echo '$(srcdir)/'`dinta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-dinta.Tpo $(DEPDIR)/libInt_la-dinta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dinta.c' object='libInt_la-dinta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-dinta.lo `test -f 'dinta.c' || echo '$(srcdir)/'`dinta.c
+
+libInt_la-cinta.lo: cinta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-cinta.lo -MD -MP -MF $(DEPDIR)/libInt_la-cinta.Tpo -c -o libInt_la-cinta.lo `test -f 'cinta.c' || echo '$(srcdir)/'`cinta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-cinta.Tpo $(DEPDIR)/libInt_la-cinta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cinta.c' object='libInt_la-cinta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-cinta.lo `test -f 'cinta.c' || echo '$(srcdir)/'`cinta.c
+
+libInt_la-zinta.lo: zinta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -MT libInt_la-zinta.lo -MD -MP -MF $(DEPDIR)/libInt_la-zinta.Tpo -c -o libInt_la-zinta.lo `test -f 'zinta.c' || echo '$(srcdir)/'`zinta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libInt_la-zinta.Tpo $(DEPDIR)/libInt_la-zinta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zinta.c' object='libInt_la-zinta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libInt_la_CFLAGS) $(CFLAGS) -c -o libInt_la-zinta.lo `test -f 'zinta.c' || echo '$(srcdir)/'`zinta.c
+
+testDoubleInt-testDoubleInt.o: testDoubleInt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleInt_CFLAGS) $(CFLAGS) -MT testDoubleInt-testDoubleInt.o -MD -MP -MF $(DEPDIR)/testDoubleInt-testDoubleInt.Tpo -c -o testDoubleInt-testDoubleInt.o `test -f 'testDoubleInt.c' || echo '$(srcdir)/'`testDoubleInt.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleInt-testDoubleInt.Tpo $(DEPDIR)/testDoubleInt-testDoubleInt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleInt.c' object='testDoubleInt-testDoubleInt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleInt_CFLAGS) $(CFLAGS) -c -o testDoubleInt-testDoubleInt.o `test -f 'testDoubleInt.c' || echo '$(srcdir)/'`testDoubleInt.c
+
+testDoubleInt-testDoubleInt.obj: testDoubleInt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleInt_CFLAGS) $(CFLAGS) -MT testDoubleInt-testDoubleInt.obj -MD -MP -MF $(DEPDIR)/testDoubleInt-testDoubleInt.Tpo -c -o testDoubleInt-testDoubleInt.obj `if test -f 'testDoubleInt.c'; then $(CYGPATH_W) 'testDoubleInt.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleInt.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleInt-testDoubleInt.Tpo $(DEPDIR)/testDoubleInt-testDoubleInt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleInt.c' object='testDoubleInt-testDoubleInt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleInt_CFLAGS) $(CFLAGS) -c -o testDoubleInt-testDoubleInt.obj `if test -f 'testDoubleInt.c'; then $(CYGPATH_W) 'testDoubleInt.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleInt.c'; fi`
+
+testFloatInt-testFloatInt.o: testFloatInt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatInt_CFLAGS) $(CFLAGS) -MT testFloatInt-testFloatInt.o -MD -MP -MF $(DEPDIR)/testFloatInt-testFloatInt.Tpo -c -o testFloatInt-testFloatInt.o `test -f 'testFloatInt.c' || echo '$(srcdir)/'`testFloatInt.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatInt-testFloatInt.Tpo $(DEPDIR)/testFloatInt-testFloatInt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatInt.c' object='testFloatInt-testFloatInt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatInt_CFLAGS) $(CFLAGS) -c -o testFloatInt-testFloatInt.o `test -f 'testFloatInt.c' || echo '$(srcdir)/'`testFloatInt.c
+
+testFloatInt-testFloatInt.obj: testFloatInt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatInt_CFLAGS) $(CFLAGS) -MT testFloatInt-testFloatInt.obj -MD -MP -MF $(DEPDIR)/testFloatInt-testFloatInt.Tpo -c -o testFloatInt-testFloatInt.obj `if test -f 'testFloatInt.c'; then $(CYGPATH_W) 'testFloatInt.c'; else $(CYGPATH_W) '$(srcdir)/testFloatInt.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatInt-testFloatInt.Tpo $(DEPDIR)/testFloatInt-testFloatInt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatInt.c' object='testFloatInt-testFloatInt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatInt_CFLAGS) $(CFLAGS) -c -o testFloatInt-testFloatInt.obj `if test -f 'testFloatInt.c'; then $(CYGPATH_W) 'testFloatInt.c'; else $(CYGPATH_W) '$(srcdir)/testFloatInt.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/int/cinta.c b/2.3-1/src/c/elementaryFunctions/int/cinta.c
new file mode 100644
index 00000000..a567b7af
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/cinta.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+void cinta(floatComplex* x, int size, floatComplex* out) {
+ cfixa(x,size,out);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/cints.c b/2.3-1/src/c/elementaryFunctions/int/cints.c
new file mode 100644
index 00000000..0a3fad2f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/cints.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+floatComplex cints(floatComplex x) {
+ return cfixs(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/dinta.c b/2.3-1/src/c/elementaryFunctions/int/dinta.c
new file mode 100644
index 00000000..5e34f757
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/dinta.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+void dinta(double* x, int size, double* out) {
+ dfixa(x,size,out);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/dints.c b/2.3-1/src/c/elementaryFunctions/int/dints.c
new file mode 100644
index 00000000..82150665
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/dints.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+double dints(double x) {
+ return dfixs(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/sinta.c b/2.3-1/src/c/elementaryFunctions/int/sinta.c
new file mode 100644
index 00000000..0035db05
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/sinta.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+void sinta(float* x, int size, float* out) {
+ sfixa(x,size,out);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/sints.c b/2.3-1/src/c/elementaryFunctions/int/sints.c
new file mode 100644
index 00000000..dd65a526
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/sints.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+float sints(float x) {
+ return sfixs(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/testDoubleInt.c b/2.3-1/src/c/elementaryFunctions/int/testDoubleInt.c
new file mode 100644
index 00000000..f5bf78b8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/testDoubleInt.c
@@ -0,0 +1,160 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "int.h"
+
+static void dintsTest(void) {
+ /* FIXME : results could be differents of what wanted because of C number
+ where 1 can be 0.99999999999992347
+ This example fail :
+ for(i=-2;i<-1;i+=.1){
+ out = dints(i);
+ }
+ In the case of -1, -1 wasn't -1 exactly so error
+ */
+ assert ((fabs( dints(-2) - (-2))/fabs(dints(-2)))<1e-16);
+ assert ((fabs( dints(-1.9) - (-1))/fabs(dints(-1.9)))<1e-16);
+ assert ((fabs( dints(-1.8) - (-1))/fabs(dints(-1.8)))<1e-16);
+ assert ((fabs( dints(-1.7) - (-1))/fabs(dints(-1.7)))<1e-16);
+ assert ((fabs( dints(-1.6) - (-1))/fabs(dints(-1.6)))<1e-16);
+ assert ((fabs( dints(-1.5) - (-1))/fabs(dints(-1.5)))<1e-16);
+ assert ((fabs( dints(-1.4) - (-1))/fabs(dints(-1.4)))<1e-16);
+ assert ((fabs( dints(-1.3) - (-1))/fabs(dints(-1.3)))<1e-16);
+ assert ((fabs( dints(-1.2) - (-1))/fabs(dints(-1.2)))<1e-16);
+ assert ((fabs( dints(-1.1) - (-1))/fabs(dints(-1.1)))<1e-16);
+ assert ((fabs( dints(-1.0) - (-1))/fabs(dints(-1.0)))<1e-16);
+ assert (fabs( dints(-.9))<1e-16);
+ assert ((fabs( dints(1.0) - (1))/fabs(dints(1.0)))<1e-16);
+ assert ((fabs( dints(1.1) - (1))/fabs(dints(1.1)))<1e-16);
+ assert ((fabs( dints(1.2) - (1))/fabs(dints(1.2)))<1e-16);
+ assert ((fabs( dints(1.3) - (1))/fabs(dints(1.3)))<1e-16);
+ assert ((fabs( dints(1.4) - (1))/fabs(dints(1.4)))<1e-16);
+ assert ((fabs( dints(1.5) - (1))/fabs(dints(1.5)))<1e-16);
+ assert ((fabs( dints(1.6) - (1))/fabs(dints(1.6)))<1e-16);
+ assert ((fabs( dints(1.7) - (1))/fabs(dints(1.7)))<1e-16);
+ assert ((fabs( dints(1.8) - (1))/fabs(dints(1.8)))<1e-16);
+ assert ((fabs( dints(1.9) - (1))/fabs(dints(1.9)))<1e-16);
+ assert ((fabs( dints(2.0) - (2))/fabs(dints(2.0)))<1e-16);
+
+}
+
+static void zintsTest(void) {
+ doubleComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=DoubleComplex(-2,1);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.9,1.1);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.8,1.2);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.7,1.3);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.6,1.4);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.5,1.5);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.4,1.6);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.3,1.7);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.2,1.8);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.4,1.9);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.0,2.0);
+ out = zints(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-.9,.9);
+ out = zints(in);
+ assert (fabs( zreals(out))<1e-16);
+ assert (fabs( zimags(out))<1e-16);
+}
+
+static void dintaTest(void) {
+ int i;
+ double in[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double res[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ double out[10];
+
+ dinta(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+
+
+
+}
+
+static void zintaTest(void) {
+ int i;
+ double inR[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double inI[10]={5.4,1.8,1.4,-4.0,-2.7,-0.3,1.5,1.4,7.3,-4.6};
+ double resR[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ double resI[10]={5,1,1,-4,-2,0,1,1,7,-4};
+ doubleComplex out[10],*in;
+
+ in=DoubleComplexMatrix(inR,inI,10);
+ zinta(in,10,out);
+
+ for (i=0;i<10;i++){
+ if(zreals(out[i])!=0) assert(fabs(zreals(out[i])-resR[i])/ fabs(zreals(out[i]))<1e-16);
+ assert(fabs(zreals(out[i])-resR[i]) <1e-16);
+ if(zimags(out[i])!=0) assert(fabs(zimags(out[i])-resI[i])/ fabs(zimags(out[i]))<1e-16);
+ assert(fabs(zimags(out[i])-resI[i]) <1e-16);
+ }
+}
+
+
+static int testInt() {
+ printf("\n>>>> Double Int Tests\n");
+ dintsTest();
+ zintsTest();
+ dintaTest();
+ zintaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testInt() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/testFloatInt.c b/2.3-1/src/c/elementaryFunctions/int/testFloatInt.c
new file mode 100644
index 00000000..923ebf5b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/testFloatInt.c
@@ -0,0 +1,149 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "int.h"
+
+static void sintsTest(void) {
+
+ assert ((fabs( sints(-2) - (-2))/fabs(sints(-2)))<1e-16);
+ assert ((fabs( sints(-1.9f) - (-1))/fabs(sints(-1.9f)))<1e-16);
+ assert ((fabs( sints(-1.8f) - (-1))/fabs(sints(-1.8f)))<1e-16);
+ assert ((fabs( sints(-1.7f) - (-1))/fabs(sints(-1.7f)))<1e-16);
+ assert ((fabs( sints(-1.6f) - (-1))/fabs(sints(-1.6f)))<1e-16);
+ assert ((fabs( sints(-1.5f) - (-1))/fabs(sints(-1.5f)))<1e-16);
+ assert ((fabs( sints(-1.4f) - (-1))/fabs(sints(-1.4f)))<1e-16);
+ assert ((fabs( sints(-1.3f) - (-1))/fabs(sints(-1.3f)))<1e-16);
+ assert ((fabs( sints(-1.2f) - (-1))/fabs(sints(-1.2f)))<1e-16);
+ assert ((fabs( sints(-1.1f) - (-1))/fabs(sints(-1.1f)))<1e-16);
+ assert ((fabs( sints(-1.0f) - (-1))/fabs(sints(-1.0f)))<1e-16);
+ assert (fabs( sints(-.9f))<1e-16);
+ assert ((fabs( sints(1.0f) - (1))/fabs(sints(1.0f)))<1e-16);
+ assert ((fabs( sints(1.1f) - (1))/fabs(sints(1.1f)))<1e-16);
+ assert ((fabs( sints(1.2f) - (1))/fabs(sints(1.2f)))<1e-16);
+ assert ((fabs( sints(1.3f) - (1))/fabs(sints(1.3f)))<1e-16);
+ assert ((fabs( sints(1.4f) - (1))/fabs(sints(1.4f)))<1e-16);
+ assert ((fabs( sints(1.5f) - (1))/fabs(sints(1.5f)))<1e-16);
+ assert ((fabs( sints(1.6f) - (1))/fabs(sints(1.6f)))<1e-16);
+ assert ((fabs( sints(1.7f) - (1))/fabs(sints(1.7f)))<1e-16);
+ assert ((fabs( sints(1.8f) - (1))/fabs(sints(1.8f)))<1e-16);
+ assert ((fabs( sints(1.9f) - (1))/fabs(sints(1.9f)))<1e-16);
+ assert ((fabs( sints(2.0f) - (2))/fabs(sints(2.0f)))<1e-16);
+}
+
+static void cintsTest(void) {
+ floatComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=FloatComplex(-2,1);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.9f,1.1f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.8f,1.2f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.7f,1.3f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.6f,1.4f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.5f,1.5f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.4f,1.6f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.3f,1.7f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.2f,1.8f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.1f,1.9f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.0f,2.0f);
+ out = cints(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-.9f,.9f);
+ out = cints(in);
+ assert (fabs( creals(out))<1e-16);
+ assert (fabs( cimags(out))<1e-16);
+}
+
+static void sintaTest(void) {
+ int i;
+ float in[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float res[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ float out[10];
+
+ sinta(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+
+}
+
+static void cintaTest(void) {
+ int i;
+ float inR[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float inI[10]={5.4f,1.8f,1.4f,-4.0f,-2.7f,-0.3f,1.5f,1.4f,7.3f,-4.6f};
+ float resR[10]={1,2,-2,-3,-4,6,4,4,0,0};
+ float resI[10]={5,1,1,-4,-2,0,1,1,7,-4};
+ floatComplex out[10],*in;
+
+ in=FloatComplexMatrix(inR,inI,10);
+ cinta(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (creals(out[i])!=0) assert(fabs(creals(out[i])-resR[i])/fabs(creals(out[i])) <1e-16);
+ else assert(fabs(creals(out[i])-resR[i]) <1e-16);
+ if (cimags(out[i])!=0) assert(fabs(cimags(out[i])-resI[i])/fabs(cimags(out[i])) <1e-16);
+ else assert(fabs(cimags(out[i])-resI[i]) <1e-16);
+ }
+}
+
+static int testInt() {
+ printf("\n>>>> Float Int Tests\n");
+ sintsTest();
+ cintsTest();
+ sintaTest();
+ cintaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testInt() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/zinta.c b/2.3-1/src/c/elementaryFunctions/int/zinta.c
new file mode 100644
index 00000000..1d6392be
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/zinta.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+void zinta(doubleComplex* x, int size, doubleComplex* out) {
+ zfixa(x,size,out);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int/zints.c b/2.3-1/src/c/elementaryFunctions/int/zints.c
new file mode 100644
index 00000000..1c014a57
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int/zints.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "int.h"
+
+doubleComplex zints(doubleComplex x) {
+ return zfixs(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/dint16a.c b/2.3-1/src/c/elementaryFunctions/int16/dint16a.c
new file mode 100644
index 00000000..e3b96116
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/dint16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int16.h"
+
+void dint16a(double* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = dint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/dint16s.c b/2.3-1/src/c/elementaryFunctions/int16/dint16s.c
new file mode 100644
index 00000000..6f09631a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/dint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int16.h"
+
+int16 dint16s(double x) {
+ return (int16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/i8int16a.c b/2.3-1/src/c/elementaryFunctions/int16/i8int16a.c
new file mode 100644
index 00000000..0885b021
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/i8int16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int16.h"
+
+void i8int16a(int8* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8int16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/i8int16s.c b/2.3-1/src/c/elementaryFunctions/int16/i8int16s.c
new file mode 100644
index 00000000..4a42acc0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/i8int16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int16.h"
+
+int16 i8int16s(int8 x) {
+ return (int16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/sint16a.c b/2.3-1/src/c/elementaryFunctions/int16/sint16a.c
new file mode 100644
index 00000000..9769127b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/sint16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int16.h"
+
+void sint16a(float* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = sint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/sint16s.c b/2.3-1/src/c/elementaryFunctions/int16/sint16s.c
new file mode 100644
index 00000000..2dd7af27
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/sint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int16.h"
+
+int16 sint16s(float x) {
+ return (int16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/u16int16a.c b/2.3-1/src/c/elementaryFunctions/int16/u16int16a.c
new file mode 100644
index 00000000..bc631988
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/u16int16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int16.h"
+
+void u16int16a(uint16* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16int16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/u16int16s.c b/2.3-1/src/c/elementaryFunctions/int16/u16int16s.c
new file mode 100644
index 00000000..ad226dba
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/u16int16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int16.h"
+
+int16 u16int16s(uint16 x) {
+ return (int16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/u8int16a.c b/2.3-1/src/c/elementaryFunctions/int16/u8int16a.c
new file mode 100644
index 00000000..8c9f94b0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/u8int16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int16.h"
+
+void u8int16a(uint8* x, int size, int16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8int16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int16/u8int16s.c b/2.3-1/src/c/elementaryFunctions/int16/u8int16s.c
new file mode 100644
index 00000000..463565f1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int16/u8int16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int16.h"
+
+int16 u8int16s(uint8 x) {
+ return (int16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/dint8a.c b/2.3-1/src/c/elementaryFunctions/int8/dint8a.c
new file mode 100644
index 00000000..035ea4f1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/dint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int8.h"
+
+void dint8a(double* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = dint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/dint8s.c b/2.3-1/src/c/elementaryFunctions/int8/dint8s.c
new file mode 100644
index 00000000..3b554141
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/dint8s.c
@@ -0,0 +1,17 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int8.h"
+
+int8 dint8s(double x) {
+ return (int8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/i16int8a.c b/2.3-1/src/c/elementaryFunctions/int8/i16int8a.c
new file mode 100644
index 00000000..b9aa0931
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/i16int8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int8.h"
+
+void i16int8a(int16* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16int8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/i16int8s.c b/2.3-1/src/c/elementaryFunctions/int8/i16int8s.c
new file mode 100644
index 00000000..1bdd1764
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/i16int8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int8.h"
+
+int8 i16int8s(int16 x) {
+ return (int8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/sint8a.c b/2.3-1/src/c/elementaryFunctions/int8/sint8a.c
new file mode 100644
index 00000000..4a04a4b0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/sint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int8.h"
+
+void sint8a(float* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = sint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/sint8s.c b/2.3-1/src/c/elementaryFunctions/int8/sint8s.c
new file mode 100644
index 00000000..6e4093e1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/sint8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int8.h"
+
+int8 sint8s(float x) {
+ return (int8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/u16int8a.c b/2.3-1/src/c/elementaryFunctions/int8/u16int8a.c
new file mode 100644
index 00000000..958dcb7c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/u16int8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int8.h"
+
+void u16int8a(uint16* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16int8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/u16int8s.c b/2.3-1/src/c/elementaryFunctions/int8/u16int8s.c
new file mode 100644
index 00000000..440b5d8a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/u16int8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int8.h"
+
+int8 u16int8s(uint16 x) {
+ return (int8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/u8int8a.c b/2.3-1/src/c/elementaryFunctions/int8/u8int8a.c
new file mode 100644
index 00000000..310aafd6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/u8int8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "int8.h"
+
+void u8int8a(uint8* x, int size, int8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8int8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/int8/u8int8s.c b/2.3-1/src/c/elementaryFunctions/int8/u8int8s.c
new file mode 100644
index 00000000..40b7e932
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/int8/u8int8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "int8.h"
+
+int8 u8int8s(uint8 x) {
+ return (int8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_OpDotHat.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_OpDotHat.h
new file mode 100644
index 00000000..2444f100
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_OpDotHat.h
@@ -0,0 +1,204 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPDOTHAT_H__
+#define __INT_OPDOTHAT_H__
+
+
+/* Scalar - Scalar */
+#define s0s0OpDotHats0(in1, in2) spows(in1, in2)
+
+#define d0d0OpDotHatd0(in1, in2) dpows(in1, in2)
+
+#define c0c0OpDotHatc0(in1, in2) cpows(in1, in2)
+
+#define z0z0OpDotHatz0(in1, in2) zpows(in1, in2)
+
+#define u80u80OpDotHatu80(in1, in2) u8pows(in1, in2)
+
+#define u160u160OpDotHatu160(in1, in2) u16pows(in1, in2)
+
+#define i80i80OpDotHati80(in1, in2) i8pows(in1, in2)
+
+#define i160i160OpDotHati60(in1, in2) i16pows(in1, in2)
+
+#define s0c0OpDotHatc0(in1, in2) cpows(FloatComplex(in1,0), in2)
+
+#define c0s0OpDotHatc0(in1, in2) cpows(in1, FloatComplex(in2,0))
+
+#define d0z0OpDotHatz0(in1, in2) zpows(DoubleComplex(in1,0), in2)
+
+#define z0d0OpDotHatz0(in1, in2) zpows(in1, DoubleComplex(in2,0))
+
+
+/* Scalar - Matrix */
+#define s0s2OpDotHats2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=spows(in1,in2[i]);\
+ }
+
+#define d0d2OpDotHatd2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=dpows(in1,in2[i]);\
+ }
+
+
+#define c0c2OpDotHatc2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1,in2[i]);\
+ }
+
+
+#define z0z2OpDotHatz2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1,in2[i]);\
+ }
+
+#define u80u82OpDotHatu82(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u8pows(in1,in2[i]);\
+ }
+
+#define u160u162OpDotHatu162(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u16pows(in1,in2[i]);\
+ }
+#define i80i82OpDotHati82(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i8pows(in1,in2[i]);\
+ }
+
+#define i160i162OpDotHati162(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i16pows(in1,in2[i]);\
+ }
+
+
+#define s0c2OpDotHatc2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(FloatComplex(in1,0),in2[i]);\
+ }
+
+#define d0z2OpDotHatz2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1,0),in2[i]);\
+ }
+
+#define c0s2OpDotHatc2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1,FloatComplex(in2[i],0));\
+ }
+
+#define z0d2OpDotHatz2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1,DoubleComplex(in2[i],0));\
+ }
+
+
+/* Matrix - Scalar */
+
+#define s2s0OpDotHats2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=spows(in1[i],in2);\
+ }
+
+#define d2d0OpDotHatd2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=dpows(in1[i],in2);\
+ }
+
+#define c2c0OpDotHatc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1[i],in2);\
+ }
+
+#define z2z0OpDotHatz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1[i],in2);\
+ }
+
+#define u82u80OpDotHatu82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u8pows(in1[i],in2);\
+ }
+
+#define u162u160OpDotHatu162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u16pows(in1[i],in2);\
+ }
+
+#define i82i80OpDotHati82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i8pows(in1[i],in2);\
+ }
+
+#define i162i160OpDotHati162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i16pows(in1[i],in2);\
+ }
+
+
+#define s2c0OpDotHatc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(FloatComplex(in1[i],0),in2);\
+ }
+
+#define d2z0OpDotHatz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1[i],0),in2);\
+ }
+
+#define c2s0OpDotHatc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1[i],FloatComplex(in2,0));\
+ }
+
+#define z2d0OpDotHatz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1[i],DoubleComplex(in2,0));\
+ }
+
+#define u82d0OpDotHatu82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u8pows(in1[i],in2);\
+ }
+
+#define u162d0OpDotHatu162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u16pows(in1[i],in2);\
+ }
+
+
+#define i82d0OpDotHati82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i8pows(in1[i],in2);\
+ }
+
+#define i162d0OpDotHatui62(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i16pows(in1[i],in2);\
+ }
+
+
+
+/* Matrix - Matrix */
+
+#define s2s2OpDotHats2(in1, size1, in2, size2, out) spowa(in1, size1[0]*size2[1], in2, out)
+
+#define d2d2OpDotHatd2(in1, size1, in2, size2, out) dpowa(in1, size1[0]*size2[1], in2, out)
+
+#define c2c2OpDotHatc2(in1, size1, in2, size2, out) cpowa(in1, size1[0]*size2[1], in2, out)
+
+#define z2z2OpDotHatz2(in1, size1, in2, size2, out) zpowa(in1, size1[0]*size2[1], in2, out)
+
+#define u82u82OpDotHatu82(in1, size1, in2, size2, out) u8powa(in1, size1[0]*size2[1], in2, out)
+
+#define u162u162OpDotHatu162(in1, size1, in2, size2, out) u16powa(in1, size1[0]*size2[1], in2, out)
+
+#define i82i82OpDotHati82(in1, size1, in2, size2, out) i8powa(in1, size1[0]*size2[1], in2, out)
+
+#define i162i162OpDotHati162(in1, size1, in2, size2, out) i16powa(in1, size1[0]*size2[1], in2, out)
+
+#define s2c2OpDotHatc2(in1, size1, in2, size2, out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cpows(FloatComplex(in1[i],0),in2[i]);\
+ }
+
+#define c2s2OpDotHatc2(in1, size1, in2, size2, out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cpows(in1[i],FloatComplex(in2[i],0));\
+ }
+
+#define d2z2OpDotHatz2(in1, size1, in2, size2, out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zpows(DoubleComplex(in1[i],0),in2[i]);\
+ }
+
+#define z2d2OpDotHatz2(in1, size1, in2, size2, out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zpows(in1[i],DoubleComplex(in2[i],0));\
+ }
+
+
+
+
+#endif /* !__INT_OPDOTHAT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_OpHat.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_OpHat.h
new file mode 100644
index 00000000..f1bb8d51
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_OpHat.h
@@ -0,0 +1,153 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPHAT_H__
+#define __INT_OPHAT_H__
+
+
+/* Scalar - Scalar */
+#define s0s0OpHats0(in1, in2) spows(in1, in2)
+
+#define d0d0OpHatd0(in1, in2) dpows(in1, in2)
+
+#define c0c0OpHatc0(in1, in2) cpows(in1, in2)
+
+#define u80u80OpHatu80(in1,in2) u8pows(in1, in2)
+
+#define u160u160OpHatu160(in1,in2) u16pows(in1, in2)
+
+#define i80i80OpHati80(in1,in2) i8pows(in1, in2)
+
+#define i160i60OpHati60(in1,in2) i6pows(in1, in2)
+
+#define s0c0OpHatc0(in1, in2) cpows(FloatComplex(in1,0), in2)
+
+#define c0s0OpHatc0(in1, in2) cpows(in1, FloatComplex(in2,0))
+
+#define z0z0OpHatz0(in1, in2) zpows(in1, in2)
+
+#define d0z0OpHatz0(in1, in2) zpows(DoubleComplex(in1,0), in2)
+
+#define z0d0OpHatz0(in1, in2) zpows(in1, DoubleComplex(in2,0))
+
+
+
+/* Scalar - Matrix */
+#define s0s2OpHats2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=spows(in1,in2[i]);\
+ }
+
+#define d0d2OpHatd2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=dpows(in1,in2[i]);\
+ }
+
+
+#define c0c2OpHatc2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1,in2[i]);\
+ }
+
+
+#define z0z2OpHatz2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1,in2[i]);\
+ }
+
+#define u80u82OpHatu82(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u8pows(in1,in2[i]);\
+ }
+
+
+#define u160u162OpHatu162(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u16pows(in1,in2[i]);\
+ }
+
+#define i80i82OpHati82(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i8pows(in1,in2[i]);\
+ }
+
+
+#define i160i162OpHati162(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i16pows(in1,in2[i]);\
+ }
+
+
+
+
+#define s0c2OpHatc2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(FloatComplex(in1,0),in2[i]);\
+ }
+
+#define d0z2OpHatz2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(DoubleComplex(in1,0),in2[i]);\
+ }
+
+#define c0s2OpHatc2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cpows(in1,FloatComplex(in2[i],0));\
+ }
+
+#define z0d2OpHatz2(in1, in2, size, out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zpows(in1,DoubleComplex(in2[i],0));\
+ }
+
+
+/* Matrix - Scalar */
+/* Matrices must be square */
+
+#define s2s0OpHats2(in1,size,in2,out) spowma(in1,size[0],in2,out);
+
+#define d2d0OpHatd2(in1,size,in2,out) dpowma(in1,size[0],in2,out);
+
+#define c2c0OpHatc2(in1,size,in2,out) cpowma(in1,size[0],in2,out);
+
+#define z2z0OpHatz2(in1,size,in2,out) zpowma(in1,size[0],in2,out);
+
+#define u82u80OpHatu82(in1,size,in2,out) u8powa(in1,size[0],in2,out)
+
+#define u162u162OpHatu162(in1,size,in2,out) u16powa(in1,size[0],in2,out)
+
+#define i82i80OpHati82(in1,size,in2,out) i8powa(in1,size[0],in2,out)
+
+#define i162i160OpHati82(in1,size,in2,out) i16powa(in1,size[0],in2,out)
+
+#define u82d0OpHatu82(in1,size,in2,out) u8powa(in1,size[0],in2,out)
+
+#define u162d0OpHatu162(in1,size,in2,out) u16powa(in1,size[0],in2,out)
+
+#define i82d0OpHati82(in1,size,in2,out) i8powa(in1,size[0],in2,out)
+
+#define i162d0OpHati162(in1,sine,in2,out) i16powa(in1,size[0],in2,out)
+
+/* FIXME : malloc here */
+#define s2c0OpHatc2(in1,size,in2,out) {float* tmp;\
+ tmp = malloc((uint)(size[0]*size[1])*sizeof(float));\
+ szerosa(tmp,size[0],size[1]);\
+ cpowma(FloatComplexMatrix(in1,tmp,size[0]*size[1]),size[0],in2,out);\
+ free(tmp);\
+ }
+
+#define d2z0OpHatz2(in1,size,in2,out) {double* tmp;\
+ tmp = malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dzerosa(tmp,size[0],size[1]);\
+ zpowma(DoubleComplexMatrix(in1,tmp,size[0]*size[1]),size[0],in2,out);\
+ free(tmp);\
+ }
+
+#define c2s0OpHatc2(in1,size,in2,out) cpowma(in1,size[0],FloatComplex(in2,0),out);
+
+#define z2d0OpHatz2(in1,size,in2,out) zpowma(in1,size[0],DoubleComplex(in2,0),out);
+
+
+
+
+
+#endif /* !__INT_OPHAT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acos.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acos.h
new file mode 100644
index 00000000..ad625348
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acos.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ACOS_H__
+#define __INT_ACOS_H__
+
+#define s0acoss0(in) sacoss(in)
+
+#define s0acosc0(in) cacoss(FloatComplex(in,0))
+
+#define d0acosd0(in) dacoss(in)
+
+#define d0acosz0(in) zacoss(DoubleComplex(in,0))
+
+#define c0acosc0(in) cacoss(in)
+
+#define z0acosz0(in) zacoss(in)
+
+#define s2acoss2(in,size,out) sacosa(in, size[0]*size[1], out)
+
+#define s2acosc2(in,size,out) cacosa(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2acosd2(in,size,out) dacosa(in, size[0]*size[1], out)
+
+#define d2acosz2(in,size,out) zacosa(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2acosc2(in,size,out) cacosa(in, size[0]*size[1], out)
+
+#define z2acosz2(in,size,out) zacosa(in, size[0]*size[1], out)
+
+#endif /* !__INT_ACOS_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acosd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acosd.h
new file mode 100644
index 00000000..ee188c98
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acosd.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ACOSD_H__
+#define __INT_ACOSD_H__
+
+#include "acosd.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acosdd0(in1) dacosds(in1);
+
+#define d2acosdd2(in1,in2,in3) dacosda(in1,in2[0]*in2[1],in3);
+
+#define s0acosds0(in1) sacosds(in1);
+
+#define s2acosds2(in1,in2,in3) sacosda(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOSD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acosh.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acosh.h
new file mode 100644
index 00000000..51280aa4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acosh.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ACOSH_H__
+#define __INT_ACOSH_H__
+
+#define s0acoshs0(in) sacoshs(in)
+
+#define s0acoshc0(in) cacoshs(FloatComplex(in,0))
+
+#define d0acoshd0(in) dacoshs(in)
+
+#define d0acoshz0(in) zacoshs(DoubleComplex(in,0))
+
+#define c0acoshc0(in) cacoshs(in)
+
+#define z0acoshz0(in) zacoshs(in)
+
+#define s2acoshs2(in,size,out) sacosha(in, size[0]*size[1], out)
+
+#define s2acoshc2(in,size,out) cacosha(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2acoshd2(in,size,out) dacosha(in, size[0]*size[1], out)
+
+#define d2acoshz2(in,size,out) zacosha(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2acoshc2(in,size,out) cacosha(in, size[0]*size[1], out)
+
+#define z2acoshz2(in,size,out) zacosha(in, size[0]*size[1], out)
+
+#endif /* !__INT_ACOSH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acot.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acot.h
new file mode 100644
index 00000000..371e64b5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acot.h
@@ -0,0 +1,42 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ACOT_H__
+#define __INT_ACOT_H__
+
+#include "acot.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acotd0(in1) dacots(in1);
+
+#define d2acotd2(in1,in2,in3) dacota(in1,in2[0]*in2[1],in3);
+
+#define s0acots0(in1) sacots(in1);
+
+#define s2acots2(in1,in2,in3) sacota(in1,in2[0]*in2[1],in3);
+
+#define c0acotd0(in1) cacots(in1);
+
+#define c2acotc2(in1,in2,in3) cacota(in1,in2[0]*in2[1],in3);
+
+#define z0acotz0(in1) zacots(in1);
+
+#define z2acotz2(in1,in2,in3) zacota(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOT_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acotd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acotd.h
new file mode 100644
index 00000000..22367bee
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acotd.h
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ACOTD_H__
+#define __INT_ACOTD_H__
+
+#include "acotd.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acotdd0(in1) dacotds(in1);
+
+#define d2acotdd2(in1,in2,in3) dacotda(in1,in2[0]*in2[1],in3);
+
+#define s0acotds0(in1) sacotds(in1);
+
+#define s2acotds2(in1,in2,in3) sacotda(in1,in2[0]*in2[1],in3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOTD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acoth.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acoth.h
new file mode 100644
index 00000000..8ec51a77
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acoth.h
@@ -0,0 +1,43 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __INT_ACOTH_H__
+#define __INT_ACOTH_H__
+
+#include "acoth.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acothd0(in1) dacoths(in1);
+
+#define d2acothd2(in1,in2,in3) dacotha(in1,in2[0]*in2[1],in3);
+
+#define s0acoths0(in1) sacoths(in1);
+
+#define s2acoths2(in1,in2,in3) sacotha(in1,in2[0]*in2[1],in3);
+
+#define c0acothc0(in1) cacoths(in1);
+
+#define c2acothc2(in1,in2,in3) cacotha(in1,in2[0]*in2[1],in3);
+
+#define z0acothz0(in1) zacoths(in1);
+
+#define z2acothz2(in1,in2,in3) zacotha(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACOTH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acsc.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acsc.h
new file mode 100644
index 00000000..e16f7c99
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acsc.h
@@ -0,0 +1,42 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ACSC_H__
+#define __INT_ACSC_H__
+
+#include "acsc.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acscd0(in1) dacscs(in1);
+
+#define d2acscd2(in1,in2,in3) dacsca(in1,in2[0]*in2[1],in3);
+
+#define s0acscs0(in1) sacscs(in1);
+
+#define s2acscs2(in1,in2,in3) sacsca(in1,in2[0]*in2[1],in3);
+
+#define c0acscc0(in1) cacscs(in1);
+
+#define c2acscc2(in1,in2,in3) cacsca(in1,in2[0]*in2[1],in3);
+
+#define z0acscz0(in1) zacscs(in1);
+
+#define z2acscz2(in1,in2,in3) zacsca(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACSC_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acscd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acscd.h
new file mode 100644
index 00000000..fa13acb8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acscd.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ACSCD_H__
+#define __INT_ACSCD_H__
+
+#include "acscd.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acscdd0(in1) dacscds(in1);
+
+#define d2acscdd2(in1,in2,in3) dacscda(in1,in2[0]*in2[1],in3);
+
+#define s0acscds0(in1) sacscds(in1);
+
+#define s2acscds2(in1,in2,in3) sacscda(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACSCD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_acsch.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_acsch.h
new file mode 100644
index 00000000..2101abe2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_acsch.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ACSCH_H__
+#define __INT_ACSCH_H__
+
+#include "acsch.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0acschd0(in1) dacschs(in1);
+
+#define d2acschd2(in1,in2,in3) dacscha(in1,in2[0]*in2[1],in3);
+
+#define s0acschs0(in1) sacschs(in1);
+
+#define s2acschs2(in1,in2,in3) sacscha(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ACSCH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_asec.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_asec.h
new file mode 100644
index 00000000..25a1f111
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_asec.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ASEC_H__
+#define __INT_ASEC_H__
+
+#include "asec.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0asecd0(in1) dasecs(in1);
+
+#define d2asecd2(in1,in2,in3) daseca(in1,in2[0]*in2[1],in3);
+
+#define s0asecs0(in1) sasecs(in1);
+
+#define s2asecs2(in1,in2,in3) saseca(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASEC_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_asecd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_asecd.h
new file mode 100644
index 00000000..a722b6b8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_asecd.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ASECD_H__
+#define __INT_ASECD_H__
+
+#include "asecd.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0asecdd0(in1) dasecds(in1);
+
+#define d2asecdd2(in1,in2,in3) dasecda(in1,in2[0]*in2[1],in3);
+
+#define s0asecds0(in1) sasecds(in1);
+
+#define s2asecds2(in1,in2,in3) sasecda(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASECD_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_asech.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_asech.h
new file mode 100644
index 00000000..c6830f5c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_asech.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ASECH_H__
+#define __INT_ASECH_H__
+
+#include "asech.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0asechd0(in1) dasechs(in1);
+
+#define d2asechd2(in1,in2,in3) dasecha(in1,in2[0]*in2[1],in3);
+
+#define s0asechs0(in1) sasechs(in1);
+
+#define s2asechs2(in1,in2,in3) sasecha(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASECH_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_asin.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_asin.h
new file mode 100644
index 00000000..65b5d17f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_asin.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ASIN_H__
+#define __INT_ASIN_H__
+
+#define s0asins0(in) sasins(in)
+
+#define s0asinc0(in) casins(FloatComplex(in,0))
+
+#define d0asind0(in) dasins(in)
+
+#define d0asinz0(in) zasins(DoubleComplex(in,0))
+
+#define c0asinc0(in) casins(in)
+
+#define z0asinz0(in) zasins(in)
+
+#define s2asins2(in,size,out) sasina(in, size[0]*size[1], out)
+
+#define s2asinc2(in,size,out) casina(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2asind2(in,size,out) dasina(in, size[0]*size[1], out)
+
+#define d2asinz2(in,size,out) zasina(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2asinc2(in,size,out) casina(in, size[0]*size[1], out)
+
+#define z2asinz2(in,size,out) zasina(in, size[0]*size[1], out)
+
+#endif /* !__INT_ASIN_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_asind.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_asind.h
new file mode 100644
index 00000000..fe640ea5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_asind.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ASIND_H__
+#define __INT_ASIND_H__
+
+#include "asind.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0asindd0(in1) dasinds(in1);
+
+#define d2asindd2(in1,in2,in3) dasinda(in1,in2[0]*in2[1],in3);
+
+#define s0asinds0(in1) sasinds(in1);
+
+#define s2asinds2(in1,in2,in3) sasinda(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ASIND_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_asinh.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_asinh.h
new file mode 100644
index 00000000..590d0ad9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_asinh.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ASINH_H__
+#define __INT_ASINH_H__
+
+#define s0asinhs0(in) sasinhs(in)
+
+#define d0asinhd0(in) dasinhs(in)
+
+#define c0asinhc0(in) casinhs(in)
+
+#define z0asinhz0(in) zasinhs(in)
+
+#define s2asinhs2(in,size,out) sasinha(in, size[0]*size[1], out)
+
+#define d2asinhd2(in,size,out) dasinha(in, size[0]*size[1], out)
+
+#define c2asinhc2(in,size,out) casinha(in, size[0]*size[1], out)
+
+#define z2asinhz2(in,size,out) zasinha(in, size[0]*size[1], out)
+
+#endif /* !__INT_ASINH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_atan.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_atan.h
new file mode 100644
index 00000000..ad87e675
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_atan.h
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ATAN_H__
+#define __INT_ATAN_H__
+
+#define s0atans0(in) satans(in)
+
+#define d0atand0(in) datans(in)
+
+#define c0atanc0(in) catans(in)
+
+#define z0atanz0(in) zatans(in)
+
+#define s2atans2(in,size,out) satana(in, size[0]*size[1], out)
+
+#define d2atand2(in,size,out) datana(in, size[0]*size[1], out)
+
+#define c2atanc2(in,size,out) catana(in, size[0]*size[1], out)
+
+#define z2atanz2(in,size,out) zatana(in, size[0]*size[1], out)
+
+#define s0s0atans0(in1, in2) satan2s(in1, in2)
+
+#define d0d0atand0(in1, in2) datan2s(in1, in2)
+
+#define s2s2atans2(in1,size1, in2, size2, out) satan2a(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define d2d2atand2(in1, size1, in2,size2, out) datan2a(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+
+
+#endif /* !__INT_ATAN_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_atand.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_atand.h
new file mode 100644
index 00000000..0adc9065
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_atand.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+#ifndef __INT_ATAND_H__
+#define __INT_ATAND_H__
+
+#include "atand.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0atandd0(in1) datands(in1);
+
+#define d2atandd2(in1,in2,in3) datanda(in1,in2[0]*in2[1],in3);
+
+#define s0atands0(in1) satands(in1);
+
+#define s2atands2(in1,in2,in3) satanda(in1,in2[0]*in2[1],in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ATAND_H__ */
+
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_atanh.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_atanh.h
new file mode 100644
index 00000000..492fa746
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_atanh.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ATANH_H__
+#define __INT_ATANH_H__
+
+#define s0atanhs0(in) satanhs(in)
+
+#define s0atanhc0(in) catanhs(FloatComplex(in,0))
+
+#define d0atanhd0(in) datanhs(in)
+
+#define d0atanhz0(in) zatanhs(DoubleComplex(in,0))
+
+#define c0atanhc0(in) catanhs(in)
+
+#define z0atanhz0(in) zatanhs(in)
+
+#define s2atanhs2(in,size,out) satanha(in, size[0]*size[1], out)
+
+#define s2atanhc2(in,size,out) catanha(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2atanhd2(in,size,out) datanha(in, size[0]*size[1], out)
+
+#define d2atanhz2(in,size,out) zatanha(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2atanhc2(in,size,out) catanha(in, size[0]*size[1], out)
+
+#define z2atanhz2(in,size,out) zatanha(in, size[0]*size[1], out)
+
+#endif /* !__INT_ATANH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_base2dec.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_base2dec.h
new file mode 100644
index 00000000..8d5e68eb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_base2dec.h
@@ -0,0 +1,27 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_base2dec_H__
+#define __INT_base2dec_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define g2d0base2decd0(in,size,base) gbase2decs(in,size[1],base)
+#define d0d0base2decd0(in,base) dbase2decs(in,base)
+//#define g2d0base2decd2(in,size,out) gbase2deca(in,size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_base2dec_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bin2dec.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bin2dec.h
new file mode 100644
index 00000000..c8e07b09
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bin2dec.h
@@ -0,0 +1,37 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_bin2dec_H__
+#define __INT_bin2dec_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0bin2decd0(in) dbin2decs(in)
+#define i80bin2deci80(in) i8bin2decs(in)
+//#define i160bin2deci160(in) i16bin2decs(in)
+#define u80bin2decu80(in) u8bin2decs(in)
+#define u160bin2decu160(in) u16bin2decs(in)
+
+#define d2bin2decd2(in,size,out) dbin2deca(in,size[0]*size[1],out)
+#define i82bin2deci82(in,size,out) i8bin2deca(in,size[0]*size[1],out)
+//#define i162bin2deci162(in,size,out) i16bin2deca(in,size[0]*size[1],out)
+#define u82bin2decu82(in,size,out) u8bin2deca(in,size[0]*size[1],out)
+#define u162bin2decu162(in,size,out) u16bin2deca(in,size[0]*size[1],out)
+
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_bin2dec_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bitand.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitand.h
new file mode 100644
index 00000000..8b208eaa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitand.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_BITAND_H__
+#define __INT_BITAND_H__
+
+
+#define u80u80bitandu80(in1,in2) u8bitands(in1,in2)
+
+#define u82u82bitandu82(in1,size1,in2,size2,out) u8bitanda(in1,in2,size1[0]*size1[1],out)
+
+#define u160u160bitandu160(in1,in2) u16bitands(in1,in2)
+
+#define u162u162bitandu162(in1,size1,in2,size2,out) u16bitanda(in1,in2,size1[0]*size1[1],out)
+
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bitcmp.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitcmp.h
new file mode 100644
index 00000000..d49289f1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitcmp.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_BITCMP_H__
+#define __INT_BITCMP_H__
+
+
+#define u80d0bitcmpu80(in1,in2) u8bitcmps(in1,in2)
+
+#define u82d0bitcmpu82(in1,size1,in2,out) u8bitcmpa(in1,in2,size1[0]*size1[1],out)
+
+#define u160d0bitcmpu160(in1,in2) u16bitcmps(in1,in2)
+
+#define u162d0bitcmpu162(in1,size1,in2,out) u16bitcmpa(in1,in2,size1[0]*size1[1],out)
+
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bitget.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitget.h
new file mode 100644
index 00000000..ea930ab1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitget.h
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_BITGET_H__
+#define __INT_BITGET_H__
+
+#define u80d0bitgetu80(in1,in2) u8bitgets(in1,in2)
+
+#define u160d0bitgetu160(in1,in2) u16bitgets(in1,in2)
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bitor.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitor.h
new file mode 100644
index 00000000..00edc483
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitor.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_BITOR_H__
+#define __INT_BITOR_H__
+
+
+#define u80u80bitoru80(in1,in2) u8bitors(in1,in2)
+
+#define u82u82bitoru82(in1,size1,in2,size2,out) u8bitora(in1,in2,size1[0]*size1[1],out)
+
+#define u160u160bitoru160(in1,in2) u16bitors(in1,in2)
+
+#define u162u162bitoru162(in1,size1,in2,size2,out) u16bitora(in1,in2,size1[0]*size1[1],out)
+
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bitset.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitset.h
new file mode 100644
index 00000000..a37160be
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitset.h
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_BITSET_H__
+#define __INT_BITSET_H__
+
+#define u80d0d0bitsetu80(in1,in2,in3) u8bitsets(in1,in2,in3)
+
+#define u160d0d0bitsetu160(in1,in2,in3) u16bitsets(in1,in2,in3)
+
+
+
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_bitxor.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitxor.h
new file mode 100644
index 00000000..1722c909
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_bitxor.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_BITXOR_H__
+#define __INT_BITXOR_H__
+
+
+#define u80u80bitxoru80(in1,in2) u8bitxors(in1,in2)
+
+#define u82u82bitxoru82(in1,size1,in2,size2,out) u8bitxora(in1,in2,size1[0]*size1[1],out)
+
+#define u160u160bitxoru160(in1,in2) u16bitxors(in1,in2)
+
+#define u162u162bitxoru162(in1,size1,in2,size2,out) u16bitxora(in1,in2,size1[0]*size1[1],out)
+
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_ceil.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_ceil.h
new file mode 100644
index 00000000..33c01769
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_ceil.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_CEIL_H__
+#define __INT_CEIL_H__
+
+#define s0ceils0(in) sceils(in)
+
+#define d0ceild0(in) dceils(in)
+
+#define c0ceilc0(in) cceils(in)
+
+#define z0ceilz0(in) zceils(in)
+
+#define u80ceilu80(in) u8ceils(in)
+
+#define i80ceili80(in) i8ceils(in)
+
+#define u160ceilu160(in) u16ceils(in)
+
+#define i160ceili160(in) i16ceils(in)
+
+#define s2ceils2(in,size,out) sceila(in, size[0]*size[1], out)
+
+#define d2ceild2(in,size,out) dceila(in, size[0]*size[1], out)
+
+#define c2ceilc2(in,size,out) cceila(in, size[0]*size[1], out)
+
+#define z2ceilz2(in,size,out) zceila(in, size[0]*size[1], out)
+
+#define u82ceilu82(in,size,out) u8ceila(in, size[0]*size[1], out)
+
+#define i82ceili82(in,size,out) i8ceila(in, size[0]*size[1], out)
+
+#define u162ceilu162(in,size,out) u16ceila(in, size[0]*size[1], out)
+
+#define i162ceili162(in,size,out) i16ceila(in, size[0]*size[1], out)
+
+#endif /* !__INT_CEIL_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_cos.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_cos.h
new file mode 100644
index 00000000..b19bcfc1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_cos.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_COS_H__
+#define __INT_COS_H__
+
+#define s0coss0(in) scoss(in)
+
+#define d0cosd0(in) dcoss(in)
+
+#define c0cosc0(in) ccoss(in)
+
+#define z0cosz0(in) zcoss(in)
+
+#define u80coss0(in) u8coss(in)
+
+#define i80coss0(in) i8coss(in)
+
+#define u160coss0(in) u16coss(in)
+
+#define i160coss0(in) i16coss(in)
+
+#define s2coss2(in,size,out) scosa(in, size[0]*size[1], out)
+
+#define d2cosd2(in,size,out) dcosa(in, size[0]*size[1], out)
+
+#define c2cosc2(in,size,out) ccosa(in, size[0]*size[1], out)
+
+#define z2cosz2(in,size,out) zcosa(in, size[0]*size[1], out)
+
+#define u82coss2(in,size,out) u8cosa(in, size[0]*size[1], out)
+
+#define i82coss2(in,size,out) i8cosa(in, size[0]*size[1], out)
+
+#define u162coss2(in,size,out) u16cosa(in, size[0]*size[1], out)
+
+#define i162coss2(in,size,out) i16cosa(in, size[0]*size[1], out)
+
+#endif /* !__INT_COS_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_cosd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_cosd.h
new file mode 100644
index 00000000..9ca9945b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_cosd.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_COSD_H__
+#define __INT_COSD_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2cosdd2(in,size,out) dcosda(in,size[1],out)
+#define d0cosdd0(in) dcosds(in)
+#define s2cosds2(in,size,out) scosda(in,size[1],out)
+#define s0cosds0(in) scosds(in)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_COSD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_cosh.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_cosh.h
new file mode 100644
index 00000000..c2b97ada
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_cosh.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_COSH_H__
+#define __INT_COSH_H__
+
+#define s0coshs0(in) scoshs(in)
+
+#define d0coshd0(in) dcoshs(in)
+
+#define c0coshc0(in) ccoshs(in)
+
+#define z0coshz0(in) zcoshs(in)
+
+#define u80coshs0(in) u8coshs(in)
+
+#define i80coshs0(in) i8coshs(in)
+
+#define u160coshs0(in) u16coshs(in)
+
+#define i160coshs0(in) i16coshs(in)
+
+#define s2coshs2(in,size,out) scosha(in, size[0]*size[1], out)
+
+#define d2coshd2(in,size,out) dcosha(in, size[0]*size[1], out)
+
+#define c2coshc2(in,size,out) ccosha(in, size[0]*size[1], out)
+
+#define z2coshz2(in,size,out) zcosha(in, size[0]*size[1], out)
+
+#define u82coshs2(in,size,out) u8cosha(in, size[0]*size[1], out)
+
+#define i82coshs2(in,size,out) i8cosha(in, size[0]*size[1], out)
+
+#define u162coshs2(in,size,out) u16cosha(in, size[0]*size[1], out)
+
+#define i162coshs2(in,size,out) i16cosha(in, size[0]*size[1], out)
+
+#endif /* !__INT_COSH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_cotd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_cotd.h
new file mode 100644
index 00000000..382f7802
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_cotd.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_COTD_H__
+#define __INT_COTD_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2cotdd2(in,size,out) dcotda(in,size[1],out)
+#define s2cotds2(in,size,out) scotda(in,size[1],out)
+#define d0cotdd0(in) dcotds(in)
+#define s0cotds0(in) scotds(in)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_COTD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_coth.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_coth.h
new file mode 100644
index 00000000..db8887a3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_coth.h
@@ -0,0 +1,32 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_COTH_H__
+#define __INT_COTH_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2cothd2(in,size,out) dcotha(in,size[1],out)
+#define s2coths2(in,size,out) scotha(in,size[1],out)
+#define d0cothd0(in) dcoths(in)
+#define s0coths0(in) scoths(in)
+#define z0cothz0(in) zcoths(in)
+#define z2cothz2(in,size,out) zcoths(in,size[1],out)
+#define c0cothc0(in) ccoths(in)
+#define c2cothc2(in,size,out) ccoths(in,size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_COTH_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_csc.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_csc.h
new file mode 100644
index 00000000..74038c97
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_csc.h
@@ -0,0 +1,32 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_CSC_H__
+#define __INT_CSC_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2cscd2(in,size,out) dcsca(in,size[1],out)
+#define d0cscd0(in) dcscs(in)
+#define s2cscs2(in,size,out) scsca(in,size[1],out)
+#define s0cscs0(in) scscs(in)
+#define z2cscz2(in,size,out) zcsca(in,size[1],out)
+#define z0cscz0(in) zcscs(in)
+#define c2cscc2(in,size,out) ccsca(in,size[1],out)
+#define c0cscc0(in) ccscs(in)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_CSC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_cscd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_cscd.h
new file mode 100644
index 00000000..99bc49a3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_cscd.h
@@ -0,0 +1,32 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_CSCD_H__
+#define __INT_CSCD_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2cscdd2(in,size,out) dcscda(in,size[1],out)
+#define d0cscdd0(in) dcscds(in)
+#define s2cscds2(in,size,out) scscda(in,size[1],out)
+#define s0cscds0(in) scscds(in)
+#define z0cscdz0(in) zcscds(in)
+#define z2cscdz2(in,size,out) zcscds(in,size[1],out)
+#define c0cscdc0(in) ccscds(in)
+#define c2cscdc2(in,size,out) ccscds(in,size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_CSCD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_csch.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_csch.h
new file mode 100644
index 00000000..ce355895
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_csch.h
@@ -0,0 +1,32 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_CSCH_H__
+#define __INT_CSCH_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2cschd2(in,size,out) dcscha(in,size[1],out)
+#define d0cschd0(in) dcschs(in)
+#define s2cschs2(in,size,out) scscha(in,size[1],out)
+#define s0cschs0(in) scschs(in)
+#define z0cschz0(in) zcschs(in)
+#define z2cschz2(in,size,out) zcschs(in,size[1],out)
+#define c0cschc0(in) ccschs(in)
+#define c2cschc2(in,size,out) ccschs(in,size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_CSC_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2base.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2base.h
new file mode 100644
index 00000000..637f099c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2base.h
@@ -0,0 +1,35 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_dec2base_H__
+#define __INT_dec2base_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0d0dec2baseg2(in,base,out) ddec2bases(in,base,0,out)
+#define s0d0dec2baseg2(in,base,out) sdec2bases(in,base,0,out)
+
+#define d2d0dec2baseg2(in,size,out) ddec2basea(in,size[0]*size[1],base,0,out)
+#define s2d0dec2baseg2(in,size,out) sdec2basea(in,size[0]*size[1],base,0,out)
+
+#define d0d0d0dec2baseg2(in,base,n,out) ddec2bases(in,base,n,out)
+#define s0d0d0dec2baseg2(in,base,n,out) sdec2bases(in,base,n,out)
+
+#define d2d0d0dec2baseg2(in,size,base,n,out) ddec2basea(in,size[0]*size[1],base,n,out)
+#define s2d0d0dec2baseg2(in,size,base,n,out) sdec2basea(in,size[0]*size[1],base,n,out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_dec2base_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2bin.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2bin.h
new file mode 100644
index 00000000..c6f2008b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2bin.h
@@ -0,0 +1,48 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_dec2bin_H__
+#define __INT_dec2bin_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0dec2bind2(in,out) ddec2bins(in,0,out)
+#define i80dec2bini82(in,out) i8dec2bins(in,0,out)
+#define i160dec2bini162(in,out) i16dec2bins(in,0,out)
+#define u80dec2binu82(in,out) u8dec2bins(in,0,out)
+#define u160dec2binu162(in,out) u16dec2bins(in,0,out)
+
+#define d2dec2bind2(in,size,out) ddec2bina(in,size[0]*size[1],0,out)
+#define i82dec2bini82(in,size,out) i8dec2bina(in,size[0]*size[1],0,out)
+#define i162dec2bini162(in,size,out) i16dec2bina(in,size[0]*size[1],0,out)
+#define u82dec2binu82(in,size,out) u8dec2bina(in,size[0]*size[1],0,out)
+#define u162dec2binu162(in,size,out) u16dec2bina(in,size[0]*size[1],0,out)
+
+#define d0d0dec2bind2(in,n,out) ddec2bins(in,n,out)
+#define i80d0dec2bini82(in,n,out) i8dec2bins(in,n,out)
+#define i160d0dec2bini162(in,n,out) i16dec2bins(in,n,out)
+#define u80d0dec2binu82(in,n,out) u8dec2bins(in,n,out)
+#define u160d0dec2binu162(in,n,out) u16dec2bins(in,n,out)
+
+#define d2d0dec2bind2(in,size,n,out) ddec2bina(in,size[0]*size[1],n,out)
+#define i82d0dec2bini82(in,size,n,out) i8dec2bina(in,size[0]*size[1],n,out)
+#define i162d0dec2bini162(in,size,n,out) i16dec2bina(in,size[0]*size[1],n,out)
+#define u82d0dec2binu82(in,size,n,out) u8dec2bina(in,size[0]*size[1],n,out)
+#define u162d0dec2binu162(in,size,n,out) u16dec2bina(in,size[0]*size[1],n,out)
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_dec2bin_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2hex.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2hex.h
new file mode 100644
index 00000000..bed85be1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2hex.h
@@ -0,0 +1,35 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_dec2hex_H__
+#define __INT_dec2hex_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0dec2hexg2(in,out) ddec2hexs(in,out)
+#define i80dec2hexg2(in,out) i8dec2hexs(in,out)
+#define i160dec2hexg2(in,out) i16dec2hexs(in,out)
+#define u80dec2hexg2(in,out) u8dec2hexs(in,out)
+#define u160dec2hexg2(in,out) u16dec2hexs(in,out)
+
+#define d2dec2hexg2(in,size,out) ddec2hexa(in,size[0]*size[1],out)
+#define i82dec2hexg2(in,size,out) i8dec2hexa(in,size[0]*size[1],out)
+#define i162dec2hexg2(in,size,out) i16dec2hexa(in,size[0]*size[1],out)
+#define u82dec2hexg2(in,size,out) u8dec2hexa(in,size[0]*size[1],out)
+#define u162dec2hexg2(in,size,out) u16dec2hexa(in,size[0]*size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_dec2hex_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2oct.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2oct.h
new file mode 100644
index 00000000..5cf61be1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_dec2oct.h
@@ -0,0 +1,36 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_dec2oct_H__
+#define __INT_dec2oct_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0dec2octd2(in,out) ddec2octs(in,out)
+#define i80dec2octi82(in,out) i8dec2octs(in,out)
+#define i160dec2octi162(in,out) i16dec2octs(in,out)
+#define u80dec2octu82(in,out) u8dec2octs(in,out)
+#define u160dec2octu162(in,out) u16dec2octs(in,out)
+
+#define d2dec2octd2(in,size,out) ddec2octa(in,size[0]*size[1],out)
+#define i82dec2octi82(in,size,out) i8dec2octa(in,size[0]*size[1],out)
+#define i162dec2octi162(in,size,out) i16dec2octa(in,size[0]*size[1],out)
+#define u82dec2octu82(in,size,out) u8dec2octa(in,size[0]*size[1],out)
+#define u162dec2octu162(in,size,out) u16dec2octa(in,size[0]*size[1],out)
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_dec2oct_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_exp.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_exp.h
new file mode 100644
index 00000000..bcb8dd99
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_exp.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_EXP_H__
+#define __INT_EXP_H__
+
+#define s0exps0(in) sexps(in)
+
+#define d0expd0(in) dexps(in)
+
+#define c0expc0(in) cexps(in)
+
+#define z0expz0(in) zexps(in)
+
+#define u80exps0(in) u8exps(in)
+
+#define i80exps0(in) i8exps(in)
+
+#define u160exps0(in) u16exps(in)
+
+#define i160exps0(in) i16exps(in)
+
+#define s2exps2(in,size,out) sexpa(in, size[0]*size[1], out)
+
+#define d2expd2(in,size,out) dexpa(in, size[0]*size[1], out)
+
+#define c2expc2(in,size,out) cexpa(in, size[0]*size[1], out)
+
+#define z2expz2(in,size,out) zexpa(in, size[0]*size[1], out)
+
+#define u82exps2(in,size,out) u8expa(in, size[0]*size[1], out)
+
+#define i82exps2(in,size,out) i8expa(in, size[0]*size[1], out)
+
+#define u162exps2(in,size,out) u16expa(in, size[0]*size[1], out)
+
+#define i162exps2(in,size,out) i16expa(in, size[0]*size[1], out)
+
+#endif /* !__INT_EXP_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_exp10.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_exp10.h
new file mode 100644
index 00000000..6cd9f136
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_exp10.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_EXP10_H__
+#define __INT_EXP10_H__
+
+#define s0exp10s0(in) sexp10s(in)
+
+#define d0exp10d0(in) dexp10s(in)
+
+#define c0exp10c0(in) cexp10s(in)
+
+#define z0exp10z0(in) zexp10s(in)
+
+#define s2exp10s2(in,size,out) sexp10a(in, size[0]*size[1], out)
+
+#define d2exp10d2(in,size,out) dexp10a(in, size[0]*size[1], out)
+
+#define c2exp10c2(in,size,out) cexp10a(in, size[0]*size[1], out)
+
+#define z2exp10z2(in,size,out) zexp10a(in, size[0]*size[1], out)
+
+#endif /* !__INT_EXP10_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_factor.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_factor.h
new file mode 100644
index 00000000..5e0991aa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_factor.h
@@ -0,0 +1,29 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_FACTOR_H__
+#define __INT_FACTOR_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0factord2(in,out) dfactors(in,out)
+#define s0factors2(in,out) sfactors(in,out)
+
+
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_FACTOR_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_factorial.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_factorial.h
new file mode 100644
index 00000000..446b5135
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_factorial.h
@@ -0,0 +1,31 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_FACTORIAL_H__
+#define __INT_FACTORIAL_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0factoriald0(in) dfactorials(in)
+#define s0factorials0(in) sfactorials(in)
+
+#define d2factoriald2(in,size,out) dfactoriala(in,size[0]*size[1],out)
+#define s2factorials2(in,size,out) sfactoriala(in,size[0]*size[1],out)
+
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_FACTORIAL_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_fix.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_fix.h
new file mode 100644
index 00000000..2a00e2cf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_fix.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FIX_H__
+#define __INT_FIX_H__
+
+#define s0fixs0(in) sfixs(in)
+
+#define d0fixd0(in) dfixs(in)
+
+#define c0fixc0(in) cfixs(in)
+
+#define z0fixz0(in) zfixs(in)
+
+#define u80fixu80(in) u8fixs(in)
+
+#define i80fixi80(in) i8fixs(in)
+
+#define u160fixu160(in) u16fixs(in)
+
+#define i160fixi160(in) i16fixs(in)
+
+#define s2fixs2(in,size,out) sfixa(in, size[0]*size[1], out)
+
+#define d2fixd2(in,size,out) dfixa(in, size[0]*size[1], out)
+
+#define c2fixc2(in,size,out) cfixa(in, size[0]*size[1], out)
+
+#define z2fixz2(in,size,out) zfixa(in, size[0]*size[1], out)
+
+#define u82fixu82(in,size,out) u8fixa(in, size[0]*size[1], out)
+
+#define i82fixi82(in,size,out) i8fixa(in, size[0]*size[1], out)
+
+#define u162fixu162(in,size,out) u16fixa(in, size[0]*size[1], out)
+
+#define i162fixi162(in,size,out) i16fixa(in, size[0]*size[1], out)
+
+#endif /* !__INT_FIX_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_float.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_float.h
new file mode 100644
index 00000000..df9aa395
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_float.h
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Author - Shamik Guha
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FLOAT_H__
+#define __INT_FLOAT_H__
+
+#define s0floats0(in) sfloats(in)
+
+#define d0floats0(in) dfloats(in)
+
+#define i80floats0(in) i8floats(in)
+
+#define u160floats0(in) u16floats(in)
+
+#define i160floats0(in) i16floats(in)
+
+#define s2floats2(in,size,out) sfloata(in, size[0]*size[1], out)
+
+#define d2floats2(in,size,out) dfloata(in, size[0]*size[1], out)
+
+#define i82floats2(in,size,out) i8floata(in, size[0]*size[1], out)
+
+#define u162floats2(in,size,out) u16floata(in, size[0]*size[1], out)
+
+#define i162floats2(in,size,out) i16floata(in, size[0]*size[1], out)
+
+#endif /* !__INT_FLOAT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_floor.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_floor.h
new file mode 100644
index 00000000..639819a7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_floor.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FLOOR_H__
+#define __INT_FLOOR_H__
+
+#define s0floors0(in) sfloors(in)
+
+#define d0floord0(in) dfloors(in)
+
+#define c0floorc0(in) cfloors(in)
+
+#define z0floorz0(in) zfloors(in)
+
+#define u80flooru80(in) u8floors(in)
+
+#define i80floori80(in) i8floors(in)
+
+#define u160flooru160(in) u16floors(in)
+
+#define i160floori160(in) i16floors(in)
+
+#define s2floors2(in,size,out) sfloora(in, size[0]*size[1], out)
+
+#define d2floord2(in,size,out) dfloora(in, size[0]*size[1], out)
+
+#define c2floorc2(in,size,out) cfloora(in, size[0]*size[1], out)
+
+#define z2floorz2(in,size,out) zfloora(in, size[0]*size[1], out)
+
+#define u82flooru82(in,size,out) u8floora(in, size[0]*size[1], out)
+
+#define i82floori82(in,size,out) i8floora(in, size[0]*size[1], out)
+
+#define u162flooru162(in,size,out) u16floora(in, size[0]*size[1], out)
+
+#define i162floori162(in,size,out) i16floora(in, size[0]*size[1], out)
+
+#endif /* !__INT_FLOOR_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_hex2dec.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_hex2dec.h
new file mode 100644
index 00000000..d5589369
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_hex2dec.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_hex2dec_H__
+#define __INT_hex2dec_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define g2hex2decd0(in,size) ghex2decs(in,size[1])
+#define d0hex2decd0(in) dhex2decs(in)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_hex2dec_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_int.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_int.h
new file mode 100644
index 00000000..b40811ad
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_int.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_INT_H__
+#define __INT_INT_H__
+
+#define s0ints0(in) sints(in)
+
+#define d0intd0(in) dints(in)
+
+#define c0intc0(in) cints(in)
+
+#define z0intz0(in) zints(in)
+
+#define s2ints2(in,size,out) sinta(in, size[0]*size[1], out)
+
+#define d2intd2(in,size,out) dinta(in, size[0]*size[1], out)
+
+#define c2intc2(in,size,out) cinta(in, size[0]*size[1], out)
+
+#define z2intz2(in,size,out) zinta(in, size[0]*size[1], out)
+
+#endif /* !__INT_INT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_int16.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_int16.h
new file mode 100644
index 00000000..4f32fe9b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_int16.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_INT16_H__
+#define __INT_INT16_H__
+
+#define s0int16i160(in) sint16s(in)
+
+#define d0int16i160(in) dint16s(in)
+
+#define u80int16i160(in) u8int16s(in)
+
+#define i80int16i160(in) i8int16s(in)
+
+#define u160int16i160(in) u16int16s(in)
+
+#define s2int16i162(in,size,out) sint16a(in, size[0]*size[1], out)
+
+#define d2int16i162(in,size,out) dint16a(in, size[0]*size[1], out)
+
+#define u82int16i162(in,size,out) u8int16a(in, size[0]*size[1], out)
+
+#define i82int16i162(in,size,out) i8int16a(in, size[0]*size[1], out)
+
+#define u162int16i162(in,size,out) u16int16a(in, size[0]*size[1], out)
+
+#endif /* !__INT_INT8_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_int8.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_int8.h
new file mode 100644
index 00000000..5628c5ac
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_int8.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_INT8_H__
+#define __INT_INT8_H__
+
+#define s0int8i80(in) sint8s(in)
+
+#define d0int8i80(in) dint8s(in)
+
+#define u80int8i80(in) u8int8s(in)
+
+#define u160int8i80(in) u16int8s(in)
+
+#define i160int8i80(in) i16int8s(in)
+
+#define s2int8i82(in,size,out) sint8a(in, size[0]*size[1], out)
+
+#define d2int8i82(in,size,out) dint8a(in, size[0]*size[1], out)
+
+#define u82int8i82(in,size,out) u8int8a(in, size[0]*size[1], out)
+
+#define u162int8i82(in,size,out) u16int8a(in, size[0]*size[1], out)
+
+#define i162int8i82(in,size,out) i16int8a(in, size[0]*size[1], out)
+
+#endif /* !__INT_INT8_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h
new file mode 100644
index 00000000..f8af947a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_LINSPACE_H__
+#define __INT_LINSPACE_H__
+
+#define d0d0d0linspaced2(in1,in2,in3,out) dlinspaces(in1,in2,in3,out)
+
+#define d2d2d0linspaced2(in1,size1,in2,size2,in3,out) dlinspacea(in1,size1[0],in2,in3,out)
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_lnp1m1.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_lnp1m1.h
new file mode 100644
index 00000000..0a745112
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_lnp1m1.h
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LNP1M1_H__
+#define __INT_LNP1M1_H__
+
+/*
+** Compute v = log ( (1 + s)/(1 - s) ) for different types .
+*/
+
+#define s0lnp1m1s0(in1) slnp1m1s(in1)
+
+#define d0lnp1m1d0(in1) dlnp1m1s(in1)
+
+#endif /* !__INT_LNP1M1_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_log.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_log.h
new file mode 100644
index 00000000..d7f19fee
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_log.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LOG_H__
+#define __INT_LOG_H__
+
+#define s0logs0(in) slogs(in)
+
+#define s0logc0(in) clogs(FloatComplex(in,0))
+
+#define d0logd0(in) dlogs(in)
+
+#define d0logz0(in) zlogs(DoubleComplex(in,0))
+
+#define c0logc0(in) clogs(in)
+
+#define z0logz0(in) zlogs(in)
+
+#define s2logs2(in,size,out) sloga(in, size[0]*size[1], out)
+
+#define s2logc2(in,size,out) cloga(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2logd2(in,size,out) dloga(in, size[0]*size[1], out)
+
+#define d2logz2(in,size,out) zloga(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2logc2(in,size,out) cloga(in, size[0]*size[1], out)
+
+#define z2logz2(in,size,out) zloga(in, size[0]*size[1], out)
+
+#endif /* !__INT_LOG_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_log10.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_log10.h
new file mode 100644
index 00000000..85d5ddeb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_log10.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LOG10_H__
+#define __INT_LOG10_H__
+
+#define s0log10s0(in) slog10s(in)
+
+#define s0log10c0(in) clog10s(FloatComplex(in,0))
+
+#define d0log10d0(in) dlog10s(in)
+
+#define d0log10z0(in) zlog10s(DoubleComplex(in,0))
+
+#define c0log10c0(in) clog10s(in)
+
+#define z0log10z0(in) zlog10s(in)
+
+#define s2log10s2(in,size,out) slog10a(in, size[0]*size[1], out)
+
+#define s2log10c2(in,size,out) clog10a(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2log10d2(in,size,out) dlog10a(in, size[0]*size[1], out)
+
+#define d2log10z2(in,size,out) zlog10a(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2log10c2(in,size,out) clog10a(in, size[0]*size[1], out)
+
+#define z2log10z2(in,size,out) zlog10a(in, size[0]*size[1], out)
+
+#endif /* !__INT_LOG10_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_log1p.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_log1p.h
new file mode 100644
index 00000000..29f6fb3a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_log1p.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LOG1p1P_H__
+#define __INT_LOG1p1P_H__
+
+#define s0log1ps0(in) slog1ps(in)
+
+#define s0log1pc0(in) clog1ps(FloatComplex(in,0))
+
+#define d0log1pd0(in) dlog1ps(in)
+
+#define d0log1pz0(in) zlog1ps(DoubleComplex(in,0))
+
+#define c0log1pc0(in) clog1ps(in)
+
+#define z0log1pz0(in) zlog1ps(in)
+
+#define s2log1ps2(in,size,out) slog1pa(in, size[0]*size[1], out)
+
+#define s2log1pc2(in,size,out) clog1pa(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2log1pd2(in,size,out) dlog1pa(in, size[0]*size[1], out)
+
+#define d2log1pz2(in,size,out) zlog1pa(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2log1pc2(in,size,out) clog1pa(in, size[0]*size[1], out)
+
+#define z2log1pz2(in,size,out) zlog1pa(in, size[0]*size[1], out)
+#endif /* !__INT_LOG1p1P_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_logspace.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_logspace.h
new file mode 100644
index 00000000..2c244006
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_logspace.h
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_LOGSPACE_H__
+#define __INT_LOGSPACE_H__
+
+#define d0d0d0logspaced2(in1,in2,in3,out) dlogspaces(in1,in2,in3,out)
+
+#define d2d2d0logspaced2(in1,size1,in2,size2,in3,out) dlogspacea(in1,size1[0],in2,in3,out)
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_oct2dec.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_oct2dec.h
new file mode 100644
index 00000000..0f5d1f24
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_oct2dec.h
@@ -0,0 +1,35 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_oct2dec_H__
+#define __INT_oct2dec_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0oct2decd0(in) doct2decs(in)
+#define i80oct2deci80(in) i8oct2decs(in)
+#define i160oct2deci160(in) i16oct2decs(in)
+#define u80oct2decu80(in) u8oct2decs(in)
+#define u160oct2decu160(in) u16oct2decs(in)
+
+#define d2oct2decd2(in,size,out) doct2deca(in,size[0]*size[1],out)
+#define i82oct2deci82(in,size,out) i8oct2deca(in,size[0]*size[1],out)
+#define i162oct2deci162(in,size,out) i16oct2deca(in,size[0]*size[1],out)
+#define u82oct2decu82(in,size,out) u8oct2deca(in,size[0]*size[1],out)
+#define u162oct2decu162(in,size,out) u16oct2deca(in,size[0]*size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_oct2dec_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_pow.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_pow.h
new file mode 100644
index 00000000..39f5e1ae
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_pow.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPDOTHAT_H__
+#define __INT_OPDOTHAT_H__
+
+#define s0s0OpDotHats0(in1, in2) spows(in1, in2)
+
+#define d0d0OpDotHatd0(in1, in2) dpows(in1, in2)
+
+#define c0c0OpDotHatc0(in1, in2) cpows(in1, in2)
+
+#define z0z0OpDotHatz0(in1, in2) zpows(in1, in2)
+
+#define s2s0OpDotHats2(in1, size, in2, out) spowa(in1, size[0]*size[1], in2, out)
+
+#define d2d0OpDotHatd2(in1, size, in2, out) dpowa(in1, size[0]*size[1], in2, out)
+
+#define c2c0OpDotHatc2(in1, size, in2, out) cpowa(in1, size[0]*size[1], in2, out)
+
+#define z2z0OpDotHatz2(in1, size, in2, out) zpowa(in1, size[0]*size[1], in2, out)
+
+#endif /* !__INT_OPDOTHAT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_primes.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_primes.h
new file mode 100644
index 00000000..d48a6831
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_primes.h
@@ -0,0 +1,29 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_PRIMES_H__
+#define __INT_PRIMES_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d0primesd2(in,out) dprimess(in,out)
+#define s0primess2(in,out) sprimess(in,out)
+
+
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_PRIMES_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_round.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_round.h
new file mode 100644
index 00000000..7d013c1e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_round.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ROUND_H__
+#define __INT_ROUND_H__
+
+#define s0rounds0(in) srounds(in)
+
+#define d0roundd0(in) drounds(in)
+
+#define c0roundc0(in) crounds(in)
+
+#define z0roundz0(in) zrounds(in)
+
+#define u80roundu80(in) u8rounds(in)
+
+#define i80roundi80(in) i8rounds(in)
+
+#define u160roundu160(in) u16rounds(in)
+
+#define i160roundi160(in) i16rounds(in)
+
+#define s2rounds2(in,size,out) srounda(in, size[0]*size[1], out)
+
+#define d2roundd2(in,size,out) drounda(in, size[0]*size[1], out)
+
+#define c2roundc2(in,size,out) crounda(in, size[0]*size[1], out)
+
+#define z2roundz2(in,size,out) zrounda(in, size[0]*size[1], out)
+
+#define u82roundu82(in,size,out) u8rounda(in, size[0]*size[1], out)
+
+#define i82roundi82(in,size,out) i8rounda(in, size[0]*size[1], out)
+
+#define u162roundu162(in,size,out) u16rounda(in, size[0]*size[1], out)
+
+#define i162roundi162(in,size,out) i16rounda(in, size[0]*size[1], out)
+
+#endif /* !__INT_ROUND_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_sec.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_sec.h
new file mode 100644
index 00000000..b07cdfc9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_sec.h
@@ -0,0 +1,34 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_SEC_H__
+#define __INT_SEC_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2secd2(in,size,out) dseca(in,size[1],out)
+#define d0secd0(in) dsecs(in)
+#define s2secs2(in,size,out) sseca(in,size[1],out)
+#define s0secs0(in) ssecs(in)
+
+#define z2secz2(in,size,out) zseca(in,size[1],out)
+#define z0secz0(in) zsecs(in)
+#define c2secc2(in,size,out) cseca(in,size[1],out)
+#define c0secc0(in) csecs(in)
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_SEC__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_secd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_secd.h
new file mode 100644
index 00000000..9304eb04
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_secd.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_SECD_H__
+#define __INT_SECD_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2secdd2(in,size,out) dsecda(in,size[1],out)
+#define d0secdd0(in) dsecds(in)
+#define s2secds2(in,size,out) ssecda(in,size[1],out)
+#define s0secds0(in) ssecds(in)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_SECD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_sech.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_sech.h
new file mode 100644
index 00000000..1cd42218
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_sech.h
@@ -0,0 +1,32 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_SECH_H__
+#define __INT_SECH_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define d2sechd2(in,size,out) dsecha(in,size[1],out)
+#define s2sechs2(in,size,out) ssecha(in,size[1],out)
+#define d0sechd0(in) dsechs(in)
+#define s0sechs0(in) ssechs(in)
+#define z0sechz0(in) zsechs(in)
+#define z2sechz2(in,size,out) zsechs(in,size[1],out)
+#define c0sechc0(in) csechs(in)
+#define c2sechc2(in,size,out) csechs(in,size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_SECH_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_sin.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_sin.h
new file mode 100644
index 00000000..4132704a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_sin.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_SIN_H__
+#define __INT_SIN_H__
+
+#define s0sins0(in) ssins(in)
+
+#define d0sind0(in) dsins(in)
+
+#define c0sinc0(in) csins(in)
+
+#define z0sinz0(in) zsins(in)
+
+#define u80sins0(in) u8sins(in)
+
+#define i80sins0(in) i8sins(in)
+
+#define u160sins0(in) u16sins(in)
+
+#define i160sins0(in) i16sins(in)
+
+#define s2sins2(in,size,out) ssina(in, size[0]*size[1], out)
+
+#define d2sind2(in,size,out) dsina(in, size[0]*size[1], out)
+
+#define c2sinc2(in,size,out) csina(in, size[0]*size[1], out)
+
+#define z2sinz2(in,size,out) zsina(in, size[0]*size[1], out)
+
+#define u82sins2(in,size,out) u8sina(in, size[0]*size[1], out)
+
+#define i82sins2(in,size,out) i8sina(in, size[0]*size[1], out)
+
+#define u162sins2(in,size,out) u16sina(in, size[0]*size[1], out)
+
+#define i162sins2(in,size,out) i16sina(in, size[0]*size[1], out)
+
+#endif /* !__INT_SIN_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_sinh.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_sinh.h
new file mode 100644
index 00000000..c5682a46
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_sinh.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_SINH_H__
+#define __INT_SINH_H__
+
+#define s0sinhs0(in) ssinhs(in)
+
+#define d0sinhd0(in) dsinhs(in)
+
+#define c0sinhc0(in) csinhs(in)
+
+#define z0sinhz0(in) zsinhs(in)
+
+#define u80sinhs0(in) u8sinhs(in)
+
+#define i80sinhs0(in) i8sinhs(in)
+
+#define u160sinhs0(in) u16sinhs(in)
+
+#define i160sinhs0(in) i16sinhs(in)
+
+#define s2sinhs2(in,size,out) ssinha(in, size[0]*size[1], out)
+
+#define d2sinhd2(in,size,out) dsinha(in, size[0]*size[1], out)
+
+#define c2sinhc2(in,size,out) csinha(in, size[0]*size[1], out)
+
+#define z2sinhz2(in,size,out) zsinha(in, size[0]*size[1], out)
+
+#define u82sinhs2(in,size,out) u8sinha(in, size[0]*size[1], out)
+
+#define i82sinhs2(in,size,out) i8sinha(in, size[0]*size[1], out)
+
+#define u162sinhs2(in,size,out) u16sinha(in, size[0]*size[1], out)
+
+#define i162sinhs2(in,size,out) i16sinha(in, size[0]*size[1], out)
+
+#endif /* !__INT_SINH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_sqrt.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_sqrt.h
new file mode 100644
index 00000000..090d9825
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_sqrt.h
@@ -0,0 +1,64 @@
+/*
+** -*- C -*-
+**
+** int_sqrt.h
+** Made by Raffaele Nutricato <raffaele.nutricato@tiscali.it>
+**
+**
+** Copyright POLIBA 2008
+*/
+/*
+ 1. Search for sqrt in INIT_FillSCI2LibCDirs.sci
+ 2. Search for // --- Function List Class. --- in INIT_FillSCI2LibCDirs.sci
+ 3. You will find
+ PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
+ PrintStringInfo('s0'+ArgSeparator+'c0',ClassFileName,'file','y');
+ PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+ PrintStringInfo('d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+ PrintStringInfo('c0'+ArgSeparator+'c0',ClassFileName,'file','y');
+ PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+ PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+ PrintStringInfo('s2'+ArgSeparator+'c2',ClassFileName,'file','y');
+ PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+ PrintStringInfo('d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+ PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+ PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+ 4. These are all the functions to be implemented.
+ 5. According to functions available in src you have to generate the mapping between
+ functions in step3 and functions in src.
+*/
+
+#ifndef __INT_SQRT_H__
+#define __INT_SQRT_H__
+
+#define s0sqrts0(in) ssqrts(in)
+
+#define s0sqrtc0(in) csqrts(FloatComplex(in,0))
+
+#define d0sqrtd0(in) dsqrts(in)
+
+#define d0sqrtz0(in) zsqrts(DoubleComplex(in,0))
+
+#define c0sqrtc0(in) csqrts(in)
+
+#define z0sqrtz0(in) zsqrts(in)
+
+
+
+#define s2sqrts2(in,size,out) ssqrta(in, size[0]*size[1], out)
+
+#define s2sqrtc2(in,size,out) csqrta(FloatComplexMatrix(in,0), size[0]*size[1], out)
+
+#define d2sqrtd2(in,size,out) dsqrta(in, size[0]*size[1], out)
+
+#define d2sqrtz2(in,size,out) zsqrta(DoubleComplexMatrix(in,0), size[0]*size[1], out)
+
+#define c2sqrtc2(in,size,out) csqrta(in, size[0]*size[1], out)
+
+#define z2sqrtz2(in,size,out) zsqrta(in, size[0]*size[1], out)
+
+
+
+
+#endif /* !__INT_SQRT_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_tan.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_tan.h
new file mode 100644
index 00000000..ddfb4ca1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_tan.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_TAN_H__
+#define __INT_TAN_H__
+
+#define s0tans0(in) stans(in)
+
+#define d0tand0(in) dtans(in)
+
+#define c0tanc0(in) ctans(in)
+
+#define z0tanz0(in) ztans(in)
+
+#define u80tans0(in) u8tans(in)
+
+#define i80tans0(in) i8tans(in)
+
+#define u160tans0(in) u16tans(in)
+
+#define i160tans0(in) i16tans(in)
+
+#define s2tans2(in,size,out) stana(in, size[0]*size[1], out)
+
+#define d2tand2(in,size,out) dtana(in, size[0]*size[1], out)
+
+#define c2tanc2(in,size,out) ctana(in, size[0]*size[1], out)
+
+#define z2tanz2(in,size,out) ztana(in, size[0]*size[1], out)
+
+#define u82tans2(in,size,out) u8tana(in, size[0]*size[1], out)
+
+#define i82tans2(in,size,out) i8tana(in, size[0]*size[1], out)
+
+#define u162tans2(in,size,out) u16tana(in, size[0]*size[1], out)
+
+#define i162tans2(in,size,out) i16tana(in, size[0]*size[1], out)
+
+#endif /* !__INT_TAN_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_tanh.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_tanh.h
new file mode 100644
index 00000000..e60e2c26
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_tanh.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_TANH_H__
+#define __INT_TANH_H__
+
+#define s0tanhs0(in) stanhs(in)
+
+#define d0tanhd0(in) dtanhs(in)
+
+#define c0tanhc0(in) ctanhs(in)
+
+#define z0tanhz0(in) ztanhs(in)
+
+#define u80tanhs0(in) u8tanhs(in)
+
+#define i80tanhs0(in) i8tanhs(in)
+
+#define u160tanhs0(in) u16tanhs(in)
+
+#define i160tanhs0(in) i16tanhs(in)
+
+#define s2tanhs2(in,size,out) stanha(in, size[0]*size[1], out)
+
+#define d2tanhd2(in,size,out) dtanha(in, size[0]*size[1], out)
+
+#define c2tanhc2(in,size,out) ctanha(in, size[0]*size[1], out)
+
+#define z2tanhz2(in,size,out) ztanha(in, size[0]*size[1], out)
+
+#define u82tanhs2(in,size,out) u8tanha(in, size[0]*size[1], out)
+
+#define i82tanhs2(in,size,out) i8tanha(in, size[0]*size[1], out)
+
+#define u162tanhs2(in,size,out) u16tanha(in, size[0]*size[1], out)
+
+#define i162tanhs2(in,size,out) i16tanha(in, size[0]*size[1], out)
+
+#endif /* !__INT_TANH_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_uint16.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_uint16.h
new file mode 100644
index 00000000..12808776
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_uint16.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_UINT16_H__
+#define __INT_UINT16_H__
+
+#define s0uint16u160(in) suint16s(in)
+
+#define d0uint16u160(in) duint16s(in)
+
+#define u80uint16u160(in) u8uint16s(in)
+
+#define i80uint16u160(in) i8uint16s(in)
+
+#define i160uint16u160(in) i16uint16s(in)
+
+#define s2uint16u162(in,size,out) suint16a(in, size[0]*size[1], out)
+
+#define d2uint16u162(in,size,out) duint16a(in, size[0]*size[1], out)
+
+#define u82uint16u162(in,size,out) u8uint16a(in, size[0]*size[1], out)
+
+#define i82uint16u162(in,size,out) i8int16a(in, size[0]*size[1], out)
+
+#define i162uint16u162(in,size,out) i16uint16a(in, size[0]*size[1], out)
+
+#endif /* !__INT_UINT8_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_uint8.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_uint8.h
new file mode 100644
index 00000000..ac0bc43e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_uint8.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_UINT8_H__
+#define __INT_UINT8_H__
+
+#define s0uint8u80(in) suint8s(in)
+
+#define d0uint8u80(in) duint8s(in)
+
+#define i80uint8u80(in) i8uint8s(in)
+
+#define u160uint8u80(in) u16uint8s(in)
+
+#define i160uint8u80(in) i16uint8s(in)
+
+#define s2uint8u82(in,size,out) suint8a(in, size[0]*size[1], out)
+
+#define d2uint8u82(in,size,out) duint8a(in, size[0]*size[1], out)
+
+#define i82uint8u82(in,size,out) i8uint8a(in, size[0]*size[1], out)
+
+#define u162uint8u82(in,size,out) u16uint8a(in, size[0]*size[1], out)
+
+#define i162uint8u82(in,size,out) i16uint8a(in, size[0]*size[1], out)
+
+#endif /* !__INT_UINT8_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/linspace/dlinspacea.c b/2.3-1/src/c/elementaryFunctions/linspace/dlinspacea.c
new file mode 100644
index 00000000..e23db2f3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/linspace/dlinspacea.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <stdlib.h>
+#include "linspace.h"
+
+void dlinspacea(double *low_limit,int _row,double *up_limit,double range_num,double *out)
+{
+ int i,j,k;
+ double temp;
+ double *step_iterate; /* for each row the spacing between two values is different.*/
+ step_iterate = (double*) malloc((double)_row*sizeof(double));
+ for(i=0;i<_row;i++)
+ {
+
+ step_iterate[i] = (up_limit[i]-low_limit[i])/(range_num-1);
+
+ }
+ for(j=0;j < _row;j++)
+ {
+ out[j] = low_limit[j]; /* For every row first element is the first value of low_limit array*/
+ temp = low_limit[j];
+ for(k=1;k < (double)range_num;k++ )
+ {
+ out[(_row*k)+j] = temp + step_iterate[j]; /* Output matrix positions for 3 X 5 matrix are [0 3 6 9 12;1 4 7 10 13;2 5 8 11 14] so (_row*k)+j) used*/
+ temp = out[(_row*k)+j];
+ if(k == (double)range_num-1 )
+ {
+ out[(_row*k)+j] = (double)up_limit[j]; /* Last value of output is equal to first value of up_limit array*/
+ }
+
+ }
+
+
+ }
+
+
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/linspace/dlinspaces.c b/2.3-1/src/c/elementaryFunctions/linspace/dlinspaces.c
new file mode 100644
index 00000000..9ac80271
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/linspace/dlinspaces.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "linspace.h"
+void dlinspaces(double low_limit,double up_limit,double range_num,double *out)
+{
+ int j;
+ double temp = low_limit;
+ float step_iterate = (up_limit-low_limit)/(range_num-1);
+ out[0] = low_limit; /*First value of output is equal to low_limit value*/
+ for(j=1; j<(double)range_num; j++)
+ {
+ out[j] = temp + step_iterate;
+ temp = out[j];
+ if(j == (double)range_num-1 )
+ {
+ out[j] = (double)up_limit; /* Last value of output is equal to up_limit value*/
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.am b/2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.am
new file mode 100644
index 00000000..16cd3465
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.am
@@ -0,0 +1,56 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libLnp1m1_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libLnp1m1.la
+
+libLnp1m1_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = slnp1m1s.c \
+ dlnp1m1s.c
+
+HEAD = $(top_builddir)/src/c/elementaryFunctions/includes/lnp1m1.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatLnp1m1 testDoubleLnp1m1
+
+TESTS = testFloatLnp1m1 testDoubleLnp1m1
+
+testFloatLnp1m1_SOURCES = testLnp1m1.h testFloatLnp1m1.c
+testFloatLnp1m1_CFLAGS = $(check_INCLUDES)
+testFloatLnp1m1_LDADD = $(check_LDADD)
+
+testDoubleLnp1m1_SOURCES = testLnp1m1.h testDoubleLnp1m1.c
+testDoubleLnp1m1_CFLAGS = $(check_INCLUDES)
+testDoubleLnp1m1_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.in b/2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.in
new file mode 100644
index 00000000..e3ddeef3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/Makefile.in
@@ -0,0 +1,743 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatLnp1m1$(EXEEXT) testDoubleLnp1m1$(EXEEXT)
+TESTS = testFloatLnp1m1$(EXEEXT) testDoubleLnp1m1$(EXEEXT)
+subdir = src/c/elementaryFunctions/lnp1m1
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLnp1m1_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libLnp1m1_la-slnp1m1s.lo libLnp1m1_la-dlnp1m1s.lo
+am_libLnp1m1_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libLnp1m1_la_OBJECTS = $(am_libLnp1m1_la_OBJECTS)
+libLnp1m1_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLnp1m1_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLnp1m1_OBJECTS = \
+ testDoubleLnp1m1-testDoubleLnp1m1.$(OBJEXT)
+testDoubleLnp1m1_OBJECTS = $(am_testDoubleLnp1m1_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleLnp1m1_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLnp1m1_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLnp1m1_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLnp1m1_OBJECTS = \
+ testFloatLnp1m1-testFloatLnp1m1.$(OBJEXT)
+testFloatLnp1m1_OBJECTS = $(am_testFloatLnp1m1_OBJECTS)
+testFloatLnp1m1_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLnp1m1_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLnp1m1_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLnp1m1_la_SOURCES) $(testDoubleLnp1m1_SOURCES) \
+ $(testFloatLnp1m1_SOURCES)
+DIST_SOURCES = $(libLnp1m1_la_SOURCES) $(testDoubleLnp1m1_SOURCES) \
+ $(testFloatLnp1m1_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLnp1m1_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLnp1m1.la
+libLnp1m1_la_SOURCES = $(HEAD) $(SRC)
+SRC = slnp1m1s.c \
+ dlnp1m1s.c
+
+HEAD = $(top_builddir)/src/c/elementaryFunctions/includes/lnp1m1.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+testFloatLnp1m1_SOURCES = testLnp1m1.h testFloatLnp1m1.c
+testFloatLnp1m1_CFLAGS = $(check_INCLUDES)
+testFloatLnp1m1_LDADD = $(check_LDADD)
+testDoubleLnp1m1_SOURCES = testLnp1m1.h testDoubleLnp1m1.c
+testDoubleLnp1m1_CFLAGS = $(check_INCLUDES)
+testDoubleLnp1m1_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/lnp1m1/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/lnp1m1/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLnp1m1.la: $(libLnp1m1_la_OBJECTS) $(libLnp1m1_la_DEPENDENCIES)
+ $(libLnp1m1_la_LINK) -rpath $(pkglibdir) $(libLnp1m1_la_OBJECTS) $(libLnp1m1_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLnp1m1$(EXEEXT): $(testDoubleLnp1m1_OBJECTS) $(testDoubleLnp1m1_DEPENDENCIES)
+ @rm -f testDoubleLnp1m1$(EXEEXT)
+ $(testDoubleLnp1m1_LINK) $(testDoubleLnp1m1_OBJECTS) $(testDoubleLnp1m1_LDADD) $(LIBS)
+testFloatLnp1m1$(EXEEXT): $(testFloatLnp1m1_OBJECTS) $(testFloatLnp1m1_DEPENDENCIES)
+ @rm -f testFloatLnp1m1$(EXEEXT)
+ $(testFloatLnp1m1_LINK) $(testFloatLnp1m1_OBJECTS) $(testFloatLnp1m1_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLnp1m1_la-dlnp1m1s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLnp1m1_la-slnp1m1s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLnp1m1_la-slnp1m1s.lo: slnp1m1s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLnp1m1_la_CFLAGS) $(CFLAGS) -MT libLnp1m1_la-slnp1m1s.lo -MD -MP -MF $(DEPDIR)/libLnp1m1_la-slnp1m1s.Tpo -c -o libLnp1m1_la-slnp1m1s.lo `test -f 'slnp1m1s.c' || echo '$(srcdir)/'`slnp1m1s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLnp1m1_la-slnp1m1s.Tpo $(DEPDIR)/libLnp1m1_la-slnp1m1s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slnp1m1s.c' object='libLnp1m1_la-slnp1m1s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLnp1m1_la_CFLAGS) $(CFLAGS) -c -o libLnp1m1_la-slnp1m1s.lo `test -f 'slnp1m1s.c' || echo '$(srcdir)/'`slnp1m1s.c
+
+libLnp1m1_la-dlnp1m1s.lo: dlnp1m1s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLnp1m1_la_CFLAGS) $(CFLAGS) -MT libLnp1m1_la-dlnp1m1s.lo -MD -MP -MF $(DEPDIR)/libLnp1m1_la-dlnp1m1s.Tpo -c -o libLnp1m1_la-dlnp1m1s.lo `test -f 'dlnp1m1s.c' || echo '$(srcdir)/'`dlnp1m1s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLnp1m1_la-dlnp1m1s.Tpo $(DEPDIR)/libLnp1m1_la-dlnp1m1s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlnp1m1s.c' object='libLnp1m1_la-dlnp1m1s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLnp1m1_la_CFLAGS) $(CFLAGS) -c -o libLnp1m1_la-dlnp1m1s.lo `test -f 'dlnp1m1s.c' || echo '$(srcdir)/'`dlnp1m1s.c
+
+testDoubleLnp1m1-testDoubleLnp1m1.o: testDoubleLnp1m1.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLnp1m1_CFLAGS) $(CFLAGS) -MT testDoubleLnp1m1-testDoubleLnp1m1.o -MD -MP -MF $(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Tpo -c -o testDoubleLnp1m1-testDoubleLnp1m1.o `test -f 'testDoubleLnp1m1.c' || echo '$(srcdir)/'`testDoubleLnp1m1.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Tpo $(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLnp1m1.c' object='testDoubleLnp1m1-testDoubleLnp1m1.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLnp1m1_CFLAGS) $(CFLAGS) -c -o testDoubleLnp1m1-testDoubleLnp1m1.o `test -f 'testDoubleLnp1m1.c' || echo '$(srcdir)/'`testDoubleLnp1m1.c
+
+testDoubleLnp1m1-testDoubleLnp1m1.obj: testDoubleLnp1m1.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLnp1m1_CFLAGS) $(CFLAGS) -MT testDoubleLnp1m1-testDoubleLnp1m1.obj -MD -MP -MF $(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Tpo -c -o testDoubleLnp1m1-testDoubleLnp1m1.obj `if test -f 'testDoubleLnp1m1.c'; then $(CYGPATH_W) 'testDoubleLnp1m1.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLnp1m1.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Tpo $(DEPDIR)/testDoubleLnp1m1-testDoubleLnp1m1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLnp1m1.c' object='testDoubleLnp1m1-testDoubleLnp1m1.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLnp1m1_CFLAGS) $(CFLAGS) -c -o testDoubleLnp1m1-testDoubleLnp1m1.obj `if test -f 'testDoubleLnp1m1.c'; then $(CYGPATH_W) 'testDoubleLnp1m1.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLnp1m1.c'; fi`
+
+testFloatLnp1m1-testFloatLnp1m1.o: testFloatLnp1m1.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLnp1m1_CFLAGS) $(CFLAGS) -MT testFloatLnp1m1-testFloatLnp1m1.o -MD -MP -MF $(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Tpo -c -o testFloatLnp1m1-testFloatLnp1m1.o `test -f 'testFloatLnp1m1.c' || echo '$(srcdir)/'`testFloatLnp1m1.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Tpo $(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLnp1m1.c' object='testFloatLnp1m1-testFloatLnp1m1.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLnp1m1_CFLAGS) $(CFLAGS) -c -o testFloatLnp1m1-testFloatLnp1m1.o `test -f 'testFloatLnp1m1.c' || echo '$(srcdir)/'`testFloatLnp1m1.c
+
+testFloatLnp1m1-testFloatLnp1m1.obj: testFloatLnp1m1.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLnp1m1_CFLAGS) $(CFLAGS) -MT testFloatLnp1m1-testFloatLnp1m1.obj -MD -MP -MF $(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Tpo -c -o testFloatLnp1m1-testFloatLnp1m1.obj `if test -f 'testFloatLnp1m1.c'; then $(CYGPATH_W) 'testFloatLnp1m1.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLnp1m1.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Tpo $(DEPDIR)/testFloatLnp1m1-testFloatLnp1m1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLnp1m1.c' object='testFloatLnp1m1-testFloatLnp1m1.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLnp1m1_CFLAGS) $(CFLAGS) -c -o testFloatLnp1m1-testFloatLnp1m1.obj `if test -f 'testFloatLnp1m1.c'; then $(CYGPATH_W) 'testFloatLnp1m1.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLnp1m1.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/dlnp1m1s.c b/2.3-1/src/c/elementaryFunctions/lnp1m1/dlnp1m1s.c
new file mode 100644
index 00000000..7e1759be
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/dlnp1m1s.c
@@ -0,0 +1,77 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 "lnp1m1.h"
+#include "abs.h"
+
+/*
+ PURPOSE : Compute v = log ( (1 + s)/(1 - s) )
+ for small s, this is for |s| < SLIM = 0.20
+
+ ALGORITHM :
+ 1/ if |s| is "very small" we use a truncated
+ taylor dvp (by keeping 3 terms) from :
+ 2 4 6
+ t = 2 * s * ( 1 + 1/3 s + 1/5 s + [ 1/7 s + ....] )
+ 2 4
+ t = 2 * s * ( 1 + 1/3 s + 1/5 s + er)
+
+ The limit E until we use this formula may be simply
+ gotten so that the negliged part er is such that :
+ 2 4
+ (#) er <= epsm * ( 1 + 1/3 s + 1/5 s ) for all |s|<= E
+
+ As er = 1/7 s^6 + 1/9 s^8 + ...
+ er <= 1/7 * s^6 ( 1 + s^2 + s^4 + ...) = 1/7 s^6/(1-s^2)
+
+ the inequality (#) is forced if :
+
+ 1/7 s^6 / (1-s^2) <= epsm * ( 1 + 1/3 s^2 + 1/5 s^4 )
+
+ s^6 <= 7 epsm * (1 - 2/3 s^2 - 3/15 s^4 - 1/5 s^6)
+
+ So that E is very near (7 epsm)^(1/6) (approximately 3.032d-3):
+
+ 2/ For larger |s| we used a minimax polynome :
+
+ yi = s * (2 + d3 s^3 + d5 s^5 .... + d13 s^13 + d15 s^15)
+
+ This polynome was computed (by some remes algorithm) following
+ (*) the sin(x) example (p 39) of the book :
+
+ "ELEMENTARY FUNCTIONS"
+ "Algorithms and implementation"
+ J.M. Muller (Birkhauser)
+
+ (*) without the additionnal raffinement to get the first coefs
+ very near floating point numbers)
+*/
+double dlnp1m1s(double Var)
+{
+ static double D3 = 0.66666666666672679472;
+ static double D5 = 0.39999999996176889299;
+ static double D7 = 0.28571429392829380980;
+ static double D9 = 0.22222138684562683797;
+ static double D11 = 0.18186349187499222459;
+ static double D13 = 0.15250315884469364710;
+ static double D15 = 0.15367270224757008114;
+ static double E = 3.032E-3;
+ static double C3 = 2.0/3.0;
+ static double C5 = 2.0/5.0;
+
+ double S2 = Var * Var;
+ if( dabss(Var) <= E)
+ return Var * (2 + S2 * (C3 + C5 * S2));
+ else
+ return Var * (2 + S2 * (D3 + S2 * (D5 + S2 * (D7 + S2 * (D9 + S2 * (D11 + S2 * (D13 + S2 * D15)))))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/slnp1m1s.c b/2.3-1/src/c/elementaryFunctions/lnp1m1/slnp1m1s.c
new file mode 100644
index 00000000..9940810c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/slnp1m1s.c
@@ -0,0 +1,77 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 "lnp1m1.h"
+#include "abs.h"
+
+/*
+ PURPOSE : Compute v = log ( (1 + s)/(1 - s) )
+ for small s, this is for |s| < SLIM = 0.20
+
+ ALGORITHM :
+ 1/ if |s| is "very small" we use a truncated
+ taylor dvp (by keeping 3 terms) from :
+ 2 4 6
+ t = 2 * s * ( 1 + 1/3 s + 1/5 s + [ 1/7 s + ....] )
+ 2 4
+ t = 2 * s * ( 1 + 1/3 s + 1/5 s + er)
+
+ The limit E until we use this formula may be simply
+ gotten so that the negliged part er is such that :
+ 2 4
+ (#) er <= epsm * ( 1 + 1/3 s + 1/5 s ) for all |s|<= E
+
+ As er = 1/7 s^6 + 1/9 s^8 + ...
+ er <= 1/7 * s^6 ( 1 + s^2 + s^4 + ...) = 1/7 s^6/(1-s^2)
+
+ the inequality (#) is forced if :
+
+ 1/7 s^6 / (1-s^2) <= epsm * ( 1 + 1/3 s^2 + 1/5 s^4 )
+
+ s^6 <= 7 epsm * (1 - 2/3 s^2 - 3/15 s^4 - 1/5 s^6)
+
+ So that E is very near (7 epsm)^(1/6) (approximately 3.032d-3):
+
+ 2/ For larger |s| we used a minimax polynome :
+
+ yi = s * (2 + d3 s^3 + d5 s^5 .... + d13 s^13 + d15 s^15)
+
+ This polynome was computed (by some remes algorithm) following
+ (*) the sin(x) example (p 39) of the book :
+
+ "ELEMENTARY FUNCTIONS"
+ "Algorithms and implementation"
+ J.M. Muller (Birkhauser)
+
+ (*) without the additionnal raffinement to get the first coefs
+ very near floating point numbers)
+*/
+float slnp1m1s(float Var)
+{
+ static float D3 = 0.66666666666672679472f;
+ static float D5 = 0.39999999996176889299f;
+ static float D7 = 0.28571429392829380980f;
+ static float D9 = 0.22222138684562683797f;
+ static float D11 = 0.18186349187499222459f;
+ static float D13 = 0.15250315884469364710f;
+ static float D15 = 0.15367270224757008114f;
+ static float E = 3.032E-3f;
+ static float C3 = 2.0f/3.0f;
+ static float C5 = 2.0f/5.0f;
+
+ float S2 = Var * Var;
+ if( sabss(Var) <= E)
+ return Var * (2 + S2 * (C3 + C5 * S2));
+ else
+ return Var * (2 + S2 * (D3 + S2 * (D5 + S2 * (D7 + S2 * (D9 + S2 * (D11 + S2 * (D13 + S2 * D15)))))));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/testDoubleLnp1m1.c b/2.3-1/src/c/elementaryFunctions/lnp1m1/testDoubleLnp1m1.c
new file mode 100644
index 00000000..701d986c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/testDoubleLnp1m1.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testLnp1m1.h"
+
+void dlnp1m1sTest(void) {
+ double value = 0;
+ double maxValue = 1;
+ double increment = 1e-3;
+ printf(">> Double scalar\n");
+ while (value <= maxValue)
+ {
+ printf("dlnp1m1s(%e) = %e\n", value, dlnp1m1s(value));
+ value += increment;
+ }
+}
+
+int testLnp1m1(void) {
+ printf("\n>>>> Double Lnp1m1 Tests\n");
+ dlnp1m1sTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLnp1m1() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/testFloatLnp1m1.c b/2.3-1/src/c/elementaryFunctions/lnp1m1/testFloatLnp1m1.c
new file mode 100644
index 00000000..d144c1bf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/testFloatLnp1m1.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testLnp1m1.h"
+
+void slnp1m1sTest(void) {
+ float value = 0.0f;
+ float maxValue = 1.0f;
+ float increment = 1e-3f;
+ printf(">> Float scalar\n");
+ while (value <= maxValue)
+ {
+ printf("slnp1m1s(%e) = %e\n", value, slnp1m1s(value));
+ value += increment;
+ }
+}
+
+int testLnp1m1(void) {
+ printf("\n>>>> Float Lnp1m1 Tests\n");
+ slnp1m1sTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLnp1m1() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/lnp1m1/testLnp1m1.h b/2.3-1/src/c/elementaryFunctions/lnp1m1/testLnp1m1.h
new file mode 100644
index 00000000..888a9238
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/lnp1m1/testLnp1m1.h
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTLNP1M1_H_
+#define _TESTLNP1M1_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include "lnp1m1.h"
+
+void slnp1m1sTest(void);
+
+void dlnp1m1sTest(void);
+
+int testLnp1m1(void);
+
+#endif /* ! _TESTLNP1M1_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/log/Makefile.am b/2.3-1/src/c/elementaryFunctions/log/Makefile.am
new file mode 100644
index 00000000..6fd45c8b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/Makefile.am
@@ -0,0 +1,65 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libLog_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libLog.la
+
+libLog_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = slogs.c \
+ dlogs.c \
+ clogs.c \
+ zlogs.c \
+ sloga.c \
+ dloga.c \
+ cloga.c \
+ zloga.c
+
+HEAD = $(top_builddir)/elementaryFunctions/includes/log.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatLog testDoubleLog
+
+TESTS = testFloatLog testDoubleLog
+
+testFloatLog_SOURCES = testLog.h testFloatLog.c
+testFloatLog_CFLAGS = $(check_INCLUDES)
+testFloatLog_LDADD = $(check_LDADD)
+
+testDoubleLog_SOURCES = testLog.h testDoubleLog.c
+testDoubleLog_CFLAGS = $(check_INCLUDES)
+testDoubleLog_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/log/Makefile.in b/2.3-1/src/c/elementaryFunctions/log/Makefile.in
new file mode 100644
index 00000000..e5cfa60c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/Makefile.in
@@ -0,0 +1,802 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatLog$(EXEEXT) testDoubleLog$(EXEEXT)
+TESTS = testFloatLog$(EXEEXT) testDoubleLog$(EXEEXT)
+subdir = src/c/elementaryFunctions/log
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLog_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libLog_la-slogs.lo libLog_la-dlogs.lo \
+ libLog_la-clogs.lo libLog_la-zlogs.lo libLog_la-sloga.lo \
+ libLog_la-dloga.lo libLog_la-cloga.lo libLog_la-zloga.lo
+am_libLog_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libLog_la_OBJECTS = $(am_libLog_la_OBJECTS)
+libLog_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLog_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLog_OBJECTS = testDoubleLog-testDoubleLog.$(OBJEXT)
+testDoubleLog_OBJECTS = $(am_testDoubleLog_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleLog_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLog_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLog_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLog_OBJECTS = testFloatLog-testFloatLog.$(OBJEXT)
+testFloatLog_OBJECTS = $(am_testFloatLog_OBJECTS)
+testFloatLog_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLog_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLog_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLog_la_SOURCES) $(testDoubleLog_SOURCES) \
+ $(testFloatLog_SOURCES)
+DIST_SOURCES = $(libLog_la_SOURCES) $(testDoubleLog_SOURCES) \
+ $(testFloatLog_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLog_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLog.la
+libLog_la_SOURCES = $(HEAD) $(SRC)
+SRC = slogs.c \
+ dlogs.c \
+ clogs.c \
+ zlogs.c \
+ sloga.c \
+ dloga.c \
+ cloga.c \
+ zloga.c
+
+HEAD = $(top_builddir)/elementaryFunctions/includes/log.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+testFloatLog_SOURCES = testLog.h testFloatLog.c
+testFloatLog_CFLAGS = $(check_INCLUDES)
+testFloatLog_LDADD = $(check_LDADD)
+testDoubleLog_SOURCES = testLog.h testDoubleLog.c
+testDoubleLog_CFLAGS = $(check_INCLUDES)
+testDoubleLog_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/log/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/log/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLog.la: $(libLog_la_OBJECTS) $(libLog_la_DEPENDENCIES)
+ $(libLog_la_LINK) -rpath $(pkglibdir) $(libLog_la_OBJECTS) $(libLog_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLog$(EXEEXT): $(testDoubleLog_OBJECTS) $(testDoubleLog_DEPENDENCIES)
+ @rm -f testDoubleLog$(EXEEXT)
+ $(testDoubleLog_LINK) $(testDoubleLog_OBJECTS) $(testDoubleLog_LDADD) $(LIBS)
+testFloatLog$(EXEEXT): $(testFloatLog_OBJECTS) $(testFloatLog_DEPENDENCIES)
+ @rm -f testFloatLog$(EXEEXT)
+ $(testFloatLog_LINK) $(testFloatLog_OBJECTS) $(testFloatLog_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-cloga.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-clogs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-dloga.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-dlogs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-sloga.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-slogs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-zloga.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog_la-zlogs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLog-testDoubleLog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLog-testFloatLog.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLog_la-slogs.lo: slogs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-slogs.lo -MD -MP -MF $(DEPDIR)/libLog_la-slogs.Tpo -c -o libLog_la-slogs.lo `test -f 'slogs.c' || echo '$(srcdir)/'`slogs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-slogs.Tpo $(DEPDIR)/libLog_la-slogs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slogs.c' object='libLog_la-slogs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-slogs.lo `test -f 'slogs.c' || echo '$(srcdir)/'`slogs.c
+
+libLog_la-dlogs.lo: dlogs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-dlogs.lo -MD -MP -MF $(DEPDIR)/libLog_la-dlogs.Tpo -c -o libLog_la-dlogs.lo `test -f 'dlogs.c' || echo '$(srcdir)/'`dlogs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-dlogs.Tpo $(DEPDIR)/libLog_la-dlogs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlogs.c' object='libLog_la-dlogs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-dlogs.lo `test -f 'dlogs.c' || echo '$(srcdir)/'`dlogs.c
+
+libLog_la-clogs.lo: clogs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-clogs.lo -MD -MP -MF $(DEPDIR)/libLog_la-clogs.Tpo -c -o libLog_la-clogs.lo `test -f 'clogs.c' || echo '$(srcdir)/'`clogs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-clogs.Tpo $(DEPDIR)/libLog_la-clogs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clogs.c' object='libLog_la-clogs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-clogs.lo `test -f 'clogs.c' || echo '$(srcdir)/'`clogs.c
+
+libLog_la-zlogs.lo: zlogs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-zlogs.lo -MD -MP -MF $(DEPDIR)/libLog_la-zlogs.Tpo -c -o libLog_la-zlogs.lo `test -f 'zlogs.c' || echo '$(srcdir)/'`zlogs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-zlogs.Tpo $(DEPDIR)/libLog_la-zlogs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlogs.c' object='libLog_la-zlogs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-zlogs.lo `test -f 'zlogs.c' || echo '$(srcdir)/'`zlogs.c
+
+libLog_la-sloga.lo: sloga.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-sloga.lo -MD -MP -MF $(DEPDIR)/libLog_la-sloga.Tpo -c -o libLog_la-sloga.lo `test -f 'sloga.c' || echo '$(srcdir)/'`sloga.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-sloga.Tpo $(DEPDIR)/libLog_la-sloga.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sloga.c' object='libLog_la-sloga.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-sloga.lo `test -f 'sloga.c' || echo '$(srcdir)/'`sloga.c
+
+libLog_la-dloga.lo: dloga.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-dloga.lo -MD -MP -MF $(DEPDIR)/libLog_la-dloga.Tpo -c -o libLog_la-dloga.lo `test -f 'dloga.c' || echo '$(srcdir)/'`dloga.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-dloga.Tpo $(DEPDIR)/libLog_la-dloga.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dloga.c' object='libLog_la-dloga.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-dloga.lo `test -f 'dloga.c' || echo '$(srcdir)/'`dloga.c
+
+libLog_la-cloga.lo: cloga.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-cloga.lo -MD -MP -MF $(DEPDIR)/libLog_la-cloga.Tpo -c -o libLog_la-cloga.lo `test -f 'cloga.c' || echo '$(srcdir)/'`cloga.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-cloga.Tpo $(DEPDIR)/libLog_la-cloga.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cloga.c' object='libLog_la-cloga.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-cloga.lo `test -f 'cloga.c' || echo '$(srcdir)/'`cloga.c
+
+libLog_la-zloga.lo: zloga.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -MT libLog_la-zloga.lo -MD -MP -MF $(DEPDIR)/libLog_la-zloga.Tpo -c -o libLog_la-zloga.lo `test -f 'zloga.c' || echo '$(srcdir)/'`zloga.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog_la-zloga.Tpo $(DEPDIR)/libLog_la-zloga.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zloga.c' object='libLog_la-zloga.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog_la_CFLAGS) $(CFLAGS) -c -o libLog_la-zloga.lo `test -f 'zloga.c' || echo '$(srcdir)/'`zloga.c
+
+testDoubleLog-testDoubleLog.o: testDoubleLog.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog_CFLAGS) $(CFLAGS) -MT testDoubleLog-testDoubleLog.o -MD -MP -MF $(DEPDIR)/testDoubleLog-testDoubleLog.Tpo -c -o testDoubleLog-testDoubleLog.o `test -f 'testDoubleLog.c' || echo '$(srcdir)/'`testDoubleLog.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLog-testDoubleLog.Tpo $(DEPDIR)/testDoubleLog-testDoubleLog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLog.c' object='testDoubleLog-testDoubleLog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog_CFLAGS) $(CFLAGS) -c -o testDoubleLog-testDoubleLog.o `test -f 'testDoubleLog.c' || echo '$(srcdir)/'`testDoubleLog.c
+
+testDoubleLog-testDoubleLog.obj: testDoubleLog.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog_CFLAGS) $(CFLAGS) -MT testDoubleLog-testDoubleLog.obj -MD -MP -MF $(DEPDIR)/testDoubleLog-testDoubleLog.Tpo -c -o testDoubleLog-testDoubleLog.obj `if test -f 'testDoubleLog.c'; then $(CYGPATH_W) 'testDoubleLog.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLog.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLog-testDoubleLog.Tpo $(DEPDIR)/testDoubleLog-testDoubleLog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLog.c' object='testDoubleLog-testDoubleLog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog_CFLAGS) $(CFLAGS) -c -o testDoubleLog-testDoubleLog.obj `if test -f 'testDoubleLog.c'; then $(CYGPATH_W) 'testDoubleLog.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLog.c'; fi`
+
+testFloatLog-testFloatLog.o: testFloatLog.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog_CFLAGS) $(CFLAGS) -MT testFloatLog-testFloatLog.o -MD -MP -MF $(DEPDIR)/testFloatLog-testFloatLog.Tpo -c -o testFloatLog-testFloatLog.o `test -f 'testFloatLog.c' || echo '$(srcdir)/'`testFloatLog.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLog-testFloatLog.Tpo $(DEPDIR)/testFloatLog-testFloatLog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLog.c' object='testFloatLog-testFloatLog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog_CFLAGS) $(CFLAGS) -c -o testFloatLog-testFloatLog.o `test -f 'testFloatLog.c' || echo '$(srcdir)/'`testFloatLog.c
+
+testFloatLog-testFloatLog.obj: testFloatLog.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog_CFLAGS) $(CFLAGS) -MT testFloatLog-testFloatLog.obj -MD -MP -MF $(DEPDIR)/testFloatLog-testFloatLog.Tpo -c -o testFloatLog-testFloatLog.obj `if test -f 'testFloatLog.c'; then $(CYGPATH_W) 'testFloatLog.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLog.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLog-testFloatLog.Tpo $(DEPDIR)/testFloatLog-testFloatLog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLog.c' object='testFloatLog-testFloatLog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog_CFLAGS) $(CFLAGS) -c -o testFloatLog-testFloatLog.obj `if test -f 'testFloatLog.c'; then $(CYGPATH_W) 'testFloatLog.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLog.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/log/cloga.c b/2.3-1/src/c/elementaryFunctions/log/cloga.c
new file mode 100644
index 00000000..6edf1dd0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/cloga.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+
+void cloga(floatComplex* in, int size, floatComplex* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = clogs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/clogs.c b/2.3-1/src/c/elementaryFunctions/log/clogs.c
new file mode 100644
index 00000000..3b9f6911
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/clogs.c
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 "log.h"
+#include "lapack.h"
+#include "log1p.h"
+#include "pythag.h"
+
+floatComplex clogs(floatComplex in) {
+ static float sR2 = 1.41421356237309504f;
+
+ float _RealIn = creals(in);
+ float _ImgIn = cimags(in);
+
+ float _RealOut = 0;
+ float _ImgOut = 0;
+
+ float RMax = (float) getOverflowThreshold();
+ float LInf = sqrtf((float) getUnderflowThreshold());
+ float LSup = sqrtf(0.5f * RMax);
+
+ float AbsReal = fabsf(_RealIn);
+ float AbsImg = fabsf(_ImgIn);
+
+ _ImgOut = atan2f(_ImgIn, _RealIn);
+
+ if(_ImgIn > _RealIn)
+ {/* switch Real part and Imaginary part */
+ float Temp = AbsReal;
+ AbsReal = AbsImg;
+ AbsImg = Temp;
+ }
+
+ if((0.5 <= AbsReal) && (AbsReal <= sR2))
+ _RealOut = 0.5f * slog1ps((AbsReal - 1.0f) * (AbsReal + 1.0f) + AbsImg * AbsImg);
+ else if(LInf < AbsImg && AbsReal < LSup)
+ _RealOut = 0.5f * slogs(AbsReal * AbsReal + AbsImg * AbsImg);
+ else if(AbsReal > RMax)
+ _RealOut = AbsReal;
+ else
+ {
+ float Temp = spythags(AbsReal, AbsImg);
+ if(Temp <= RMax)
+ {
+ _RealOut = slogs(Temp);
+ }
+ else /* handle rare spurious overflow with : */
+ {
+ float Temp2 = AbsImg/AbsReal;
+ _RealOut = slogs(AbsReal) + 0.5f * slog1ps(Temp2 * Temp2);
+ }
+ }
+ return FloatComplex(_RealOut, _ImgOut);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/dloga.c b/2.3-1/src/c/elementaryFunctions/log/dloga.c
new file mode 100644
index 00000000..e5f7490d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/dloga.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+
+void dloga(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dlogs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/dlogs.c b/2.3-1/src/c/elementaryFunctions/log/dlogs.c
new file mode 100644
index 00000000..c75bef21
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/dlogs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+
+double dlogs(double in) {
+ return (log(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/sloga.c b/2.3-1/src/c/elementaryFunctions/log/sloga.c
new file mode 100644
index 00000000..e6fab861
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/sloga.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+
+void sloga(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = slogs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/slogs.c b/2.3-1/src/c/elementaryFunctions/log/slogs.c
new file mode 100644
index 00000000..f8e7b61b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/slogs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+
+float slogs(float in) {
+ return (logf(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/testDoubleLog.c b/2.3-1/src/c/elementaryFunctions/log/testDoubleLog.c
new file mode 100644
index 00000000..89924830
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/testDoubleLog.c
@@ -0,0 +1,956 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testLog.h"
+
+#define SOURCE {0.3628176329657435417175,0.924179898109287023544,0.5243524145334959030151,\
+0.7886543427594006061554,0.6525151440873742103577,0.2477638195268809795380,\
+0.2364655844867229461670,0.7240293831564486026764,0.8278210600838065147400,\
+0.4287728047929704189301,0.4858888480812311172485,0.5923984018154442310333,\
+0.0949383648112416267395,0.1356843891553580760956,0.9917455688118934631348,\
+0.7212927364744246006012,0.0115638775750994682312,0.0211908905766904354095,\
+0.1524727698415517807007,0.9165380974300205707550,0.4467271203175187110901,\
+0.5868234331719577312469,0.1882771886885166168213,0.4196520284749567508698,\
+0.2730510598048567771912,0.7565603456459939479828,0.9378882069140672683716,\
+0.0586007428355515003204,0.5101847248151898384094,0.5031699347309768199921,\
+0.7783576548099517822266,0.6856653341092169284821,0.1381576983258128166199,\
+0.371037633623927831650,0.6366564910858869552612,0.4961673622019588947296,\
+0.2994064847007393836975,0.2392275254242122173309,0.5618183575570583343506,\
+0.3218038142658770084381,0.1082227518782019615173,0.1685282415710389614105,\
+0.8263800088316202163696,0.4923414406366646289825,0.7863734485581517219543,\
+0.6762332352809607982635,0.0258686169981956481934,0.3594204657711088657379,\
+0.3436427963897585868835,0.2824054299853742122650,0.1450859513133764266968,\
+0.0762176741845905780792,0.5220461571589112281799,0.6713762427680194377899,\
+0.0599394328892230987549,0.7267188713885843753815,0.2224657749757170677185,\
+0.3122289828024804592133,0.4435700643807649612427,0.3983507198281586170197,\
+0.1324583934620022773743,0.8820166247896850109100,0.5455272346735000610352,\
+0.2917219498194754123688,0.7739847479388117790222,0.3354639573954045772552,\
+0.8127403985708951950073,0.4612239454872906208038,0.6898109326139092445374,\
+0.9649041066877543926239,0.8210376314818859100342,0.2802407057024538516998,\
+0.9873316427692770957947,0.294199434574693441391,0.4859610591083765029907,\
+0.2247181800194084644318,0.9585652919486165046692,0.1503968122415244579315,\
+0.0216291621327400207520,0.0688429796136915683746,0.9950710041448473930359,\
+0.7568672685883939266205,0.6163959559053182601929,0.0865804632194340229034,\
+0.5165374809876084327698,0.1916800136677920818329,0.2940570451319217681885,\
+0.3528221980668604373932,0.1317937439307570457458,0.0549608371220529079437,\
+0.929352553561329841614,0.737892795819789171219,0.7509917514398694038391,\
+0.6889848816208541393280,0.8865169286727905273438,0.6891661235131323337555,\
+0.8677108911797404289246,0.7947537912987172603607,0.2496256213635206222534,\
+0.3935408894903957843781,0.7297343472018837928772,0.7888072351925075054169,\
+0.113488640636205673218,0.4145256043411791324615,0.6172473421320319175720,\
+0.7440188056789338588715,0.9038409832864999771118,0.3976829168386757373810,\
+0.9472072543576359748840,0.2581262919120490550995,0.1955799385905265808105,\
+0.9381833248771727085114,0.4226356102153658866882,0.0937463282607495784760,\
+0.9977992679923772811890,0.2042182614095509052277,0.9455819511786103248596,\
+0.9336234177462756633759,0.9743702597916126251221,0.4100225553847849369049,\
+0.5125095760449767112732,0.0948633304797112941742,0.5688196588307619094849,\
+0.7322562676854431629181,0.8108531581237912178040,0.5459008770994842052460,\
+0.5022544711828231811523,0.7634959020651876926422,0.7354982374235987663269,\
+0.0699520572088658809662,0.6130836438387632369995,0.0965849910862743854523,\
+0.5439325878396630287170,0.9187005828134715557098,0.5072866193950176239014,\
+0.1335940570570528507233,0.8688194593414664268494,0.7999687767587602138519,\
+0.9879787657409906387329,0.7131399479694664478302,0.3067426951602101325989,\
+0.5431228461675345897675,0.7330236807465553283691,0.6498145484365522861481,\
+0.8018737239763140678406,0.2859625308774411678314,0.1894423719495534896851,\
+0.7794728656299412250519,0.5433104271069169044495,0.5268451268784701824188,\
+0.1533693112432956695557,0.6041304902173578739166,0.5948378806933760643005,\
+0.8857938847504556179047,0.0043053645640611648560,0.1302204323001205921173,\
+0.9758609728887677192688,0.9183407831005752086639,0.0624175965785980224609,\
+0.9939593323506414890289,0.4122588960453867912292,0.8258536770008504390717,\
+0.0376359503716230392456,0.4675730471499264240265,0.4759115139022469520569,\
+0.4060978214256465435028,0.0392968021333217620850,0.4401316107250750064850,\
+0.3316476037725806236267,0.0877817696891725063324,0.1150833908468484878540,\
+0.9667435702867805957794,0.8103649737313389778137,0.3928376468829810619354,\
+0.7880131229758262634277,0.4798596971668303012848,0.0270724548026919364929,\
+0.6701857983134686946869,0.5602217521518468856812,0.2564360727556049823761,\
+0.2626037681475281715393,0.4447338129393756389618,0.8522944338619709014893,\
+0.2347065494395792484283,0.3277532672509551048279,0.2253599218092858791351,\
+0.3468936551362276077271,0.7743145865388214588165,0.1285835551097989082336,\
+0.1156307714991271495819,0.2054340392351150512695,0.4535544612444937229156,\
+0.6516549764201045036316,0.0710035725496709346771,0.1265540253371000289917,\
+0.4974718545563519001007,0.0879269847646355628967,0.1462626229040324687958,\
+0.715134423226118087769,0.9305738122202455997467}
+
+#define RESULT {-1.0138549594808059506335,-0.0788485313675790222554,-0.6455912738997077182646,\
+-0.2374271494900490608870,-0.4269209307253117313685,-1.3952793271990111545477,\
+-1.4419526017799386696794,-0.3229233029497151630238,-0.1889582589621221220266,\
+-0.8468280928949678543205,-0.7217753888910144466351,-0.5235758944053595653756,\
+-2.354527389398466841186,-1.9974237581445692946147,-0.0082886876471943305572,\
+-0.3267102095711482134810,-4.459869041610169837497,-3.8541838794260296907623,\
+-1.8807692572941765440930,-0.0871516441756800402940,-0.8058073398690168698266,\
+-0.5330312996797691438289,-1.6698399941066854879068,-0.8683294147345963498452,\
+-1.2980964690333058886296,-0.2789729794097077220094,-0.0641245194730828693697,\
+-2.8370079061049158219987,-0.6729824133243695882811,-0.6868273235307851276588,\
+-0.2505691498856313370602,-0.3773656214470872405364,-1.9793595047655996310709,\
+-0.9914517831797942104544,-0.4515250293249062352174,-0.7008419853775434971155,\
+-1.205953148244055972427,-1.4303401906823356437570,-0.5765766885249945516989,\
+-1.1338131915858427056776,-2.2235636585360341044293,-1.7806519374711546888079,\
+-0.1907005521377241608061,-0.7085828181522180191365,-0.240323473997209546837,\
+-0.3912172398408133022762,-3.6547247438886865111840,-1.0232623619826317629133,\
+-1.0681525436893481995071,-1.264411545554370741584,-1.93042894450046809141,\
+-2.5741618985048786427683,-0.6499992713325659643431,-0.3984255796794416437656,\
+-2.8144206784459675496635,-0.3192155730871417684824,-1.502982009541258934249,\
+-1.1640184411209602011184,-0.8128995091446955534309,-0.9204224561330225373723,\
+-2.0214866944753584476757,-0.1255443741850884864508,-0.6060025488810325544620,\
+-1.231954157015291428934,-0.2562031110919770759971,-1.092240757863258915350,\
+-0.2073435333764902521736,-0.7738715719712579987899,-0.3713377296431035756719,\
+-0.0357265538888332026546,-0.1971863344268207918208,-1.2721063818886333418590,\
+-0.0127492850765575892191,-1.223497392724554932997,-0.7216267835832522736794,\
+-1.4929081951001816896962,-0.0423175999341945593968,-1.8944780628936490618486,\
+-3.8337127761178795282149,-2.6759270254015836698613,-0.0049411834200203501311,\
+-0.2785673796390666367984,-0.483865736386189515539,-2.446681086792801718133,\
+-0.6606074257995434573232,-1.651927892749795789840,-1.2239814994040887352611,\
+-1.0417910371382139711471,-2.026517124423018234580,-2.9011343997056400212387,\
+-0.0732671142462539837226,-0.3039567280501898061118,-0.2863606107139139989037,\
+-0.3725359507043504159185,-0.1204550575726043570857,-0.3722729288835950889336,\
+-0.1418966944811957953121,-0.2297229087732643171282,-1.3877929980613914473508,\
+-0.9325703042223095762253,-0.3150747190128889152483,-0.2372333033314831252092,\
+-2.1760525295696577785520,-0.8806205346832632896437,-0.4824854567490562962107,\
+-0.2956889680183093505050,-0.1011018375069230867958,-0.9221002825850308504130,\
+-0.0542373561426655603768,-1.3543063102932182406590,-1.6317860900845253535607,\
+-0.0638099067725128449302,-0.8612449127611128130155,-2.3671627801172654415041,\
+-0.0022031571770593774348,-1.5885659482121525787335,-0.0559547196755256631695,\
+-0.0686821150485829451382,-0.0259639040526286474231,-0.8915431076633286711086,\
+-0.6684358831783273613425,-2.3553180497276513527538,-0.5641918391516044239964,\
+-0.3116247338224413798713,-0.2096683039932461523058,-0.6053178634921361211951,\
+-0.6886483730214458809371,-0.2698475216395072595610,-0.3072071353764207479742,\
+-2.659945168598087494871,-0.4892539023727084379622,-2.3373319216128076725170,\
+-0.6089299592172232600262,-0.0847950173155939540548,-0.6786791108759814283857,\
+-2.0129495019748864237386,-0.1406199321004115432299,-0.2231825811274127380202,\
+-0.0120940736302183569906,-0.3380775973662459854552,-1.181746009333312530387,\
+-0.6104197485997391314783,-0.3105772710053884000381,-0.4310682668987352861301,\
+-0.2208041349135003439397,-1.25189448766300226445,-1.6636704065163092636226,\
+-0.2491374010581904052675,-0.6100744334370675758805,-0.6408486505219985751580,\
+-1.8749064671471911136535,-0.5039650609751163967687,-0.5194663799859419173188,\
+-0.1212709911627764675091,-5.4478934608177302933996,-2.038526631411456513376,\
+-0.0244351485261014196582,-0.0851867338269072515988,-2.7739080469083896574034,\
+-0.0060589862906551463645,-0.8861037385262900967220,-0.1913376676415258770270,\
+-3.2797955584796012473703,-0.7601996918711692030612,-0.7425233371947113081291,\
+-0.9011612089296217043000,-3.2366121340710831688625,-0.8206814815116268979622,\
+-1.1036823082060371881141,-2.4329014344197728014763,-2.1620982756055884266289,\
+-0.0338219993709664781822,-0.2102705479450195091840,-0.9343588647242980771424,\
+-0.2382405357403041268327,-0.7342615153765646995865,-3.609238495954611991579,\
+-0.4002002941250653034189,-0.5794225876492602456125,-1.36087587445700952671,\
+-1.337108967835097139698,-0.8102793489627861944768,-0.1598232322015146200656,\
+-1.449419270934711789778,-1.1154941876589379301521,-1.4900565023732303959747,\
+-1.05873701535465292167,-0.2557770454111949476328,-2.0511763516400991491651,\
+-2.1573531687271665369110,-1.5826302735280548539265,-0.7906399256902217898002,\
+-0.4282400343889684046772,-2.6450250856057104797969,-2.0670859842226763092299,\
+-0.6982162977399214431884,-2.4312485274946018520836,-1.9223514861397812403254,\
+-0.3352847494467096622905,-0.0719538807151878373469}
+
+
+#define SOURCE2 {2.6395560009405016899109,4.1481037065386772155762,2.8064980218186974525452,\
+1.2800584640353918075562,7.7831285959109663963318,2.1190304495394229888916,\
+1.121354666538536548615,6.8568959552794694900513,1.5312166837975382804871,\
+6.970850601792335510254,8.4155184263363480567932,4.0620247554033994674683,\
+4.09482547547668218613,8.7841258011758327484131,1.1383596854284405708313,\
+1.9983377400785684585571,5.6186607433483004570007,5.8961773291230201721,\
+6.8539796629920601844788,8.9062247332185506820679,5.0422128057107329368591,\
+3.493615407496690750122,3.8737787725403904914856,9.2228986788541078567505,\
+9.4881842611357569694519,3.4353372454643249511719,3.7601187312975525856018,\
+7.3409405630081892013550,2.6157614728435873985291,4.99349383637309074402,\
+2.6385784195736050605774,5.25356308557093143463,5.3762298030778765678406,\
+1.1999255046248435974121,2.2563034901395440101624,6.2740930821746587753296,\
+7.6084325974807143211365,0.4855662025511264801025,6.7239497276023030281067,\
+2.017172696068882942200,3.911573919467628002167,8.3003165572881698608398,\
+5.8787201577797532081604,4.8291792999953031539917,2.2328650346025824546814,\
+8.4008856676518917083740,1.2059959070757031440735,2.8553641680628061294556,\
+8.6075146449729800224304,8.494101651012897491455,5.2570608118548989295959,\
+9.9312098976224660873413,6.4885628735646605491638,9.923190940171480178833,\
+0.5004197778180241584778,7.4855065811425447463989,4.1040589986369013786316,\
+6.0845263302326202392578,8.5442108893766999244690,0.6426467280834913253784,\
+8.279082938097417354584,9.2623437754809856414795,5.6672112690284848213196,\
+5.711638936772942543030,8.1601104838773608207703,0.5689279362559318542481,\
+5.5959366867318749427795,1.2493403162807226181030,7.279222286306321620941,\
+2.6777664758265018463135,5.4653349192813038825989,9.885407658293843269348,\
+7.3956565884873270988464,0.0371731072664260864258,5.9005728596821427345276,\
+3.096467358991503715515,2.5522057106718420982361,6.2518793903291225433350,\
+1.1574173765257000923157,6.1170040909200906753540,6.7839562846347689628601,\
+3.3200952783226966857910,0.2587099233642220497131,5.1744682248681783676147,\
+3.9168732380494475364685,2.4135384149849414825439,5.064434898085892200470,\
+4.2361020017415285110474,2.8937275288626551628113,0.8879321813583374023438,\
+6.2128817522898316383362,3.4549844544380903244019,7.0648676296696066856384,\
+5.2114724926650524139404,2.8704008506610989570618,6.502795079723000526428,\
+0.8813347620889544487000,4.498763345181941986084,7.2272530803456902503967,\
+8.9767962601035833358765,2.4278218811377882957458,4.3377211131155490875244,\
+9.6770532103255391120911,5.0685344357043504714966,5.2329764096066355705261,\
+5.5969475954771041870117,5.6173070007935166358948,4.68176002614200115204,\
+7.794546722434461116791,7.9010718129575252532959,9.8085420625284314155579,\
+8.1870661024004220962524,4.2568723810836672782898,2.4615605548024177551270,\
+9.2295324662700295448303,1.000745808705687522888,4.6782181179150938987732,\
+3.9504976756870746612549,0.3661171020939946174622,5.175368534401059150696,\
+8.3254515705630183219910,6.1048321425914764404297,1.8711117887869477272034,\
+0.1895748358219861984253,8.4335647663101553916931,0.7485948316752910614014,\
+8.5328151332214474678040,0.1245901081711053848267,1.8675393564626574516296,\
+4.920584075152873992920,7.4896081397309899330,9.414957007393240928650,\
+2.1240556007251143455505,5.7950199581682682037354,2.628147569485008716583,\
+4.3609866220504045486450,9.1105451015755534172058,8.0826673656702041625977,\
+8.1026530498638749122620,2.5904283951967954635620,4.1390872886404395103455,\
+3.599927779287099838257,6.91278793383389711380,7.6568587962538003921509,\
+3.572649653069674968720,7.6933998242020606994629,5.4776339093223214149475,\
+0.9622887428849935531616,9.5611717319115996360779,2.2074085660278797149658,\
+0.1432593585923314094544,8.1914897728711366653442,1.3049928424879908561707,\
+9.6820035576820373535156,6.5613814676180481910706,2.4455389659851789474487,\
+5.2831235667690634727478,8.4689256362617015838623,7.8766220854595303535461,\
+1.262082615867257118225,7.8838609857484698295593,3.4530424699187278747559,\
+2.6598573336377739906311,9.7098186518996953964233,8.8752476638182997703552,\
+2.066752854734659194946,8.5251609655097126960754,6.7446978110820055007935,\
+9.152874383144080638886,0.2848597615957260131836,2.367841475643217563629,\
+7.0153435599058866500854,1.2025266280397772789001,8.2874121330678462982178,\
+3.1610729591920971870422,5.30519076623022556305,5.715174819342792034149,\
+0.4780154302716255187988,8.2486197212710976600647,5.7988431211560964584351,\
+2.7918082987889647483826,9.5451109297573566436768,9.0711546363309025764465,\
+3.3601493109017610549927,1.1756130633875727653503,9.2537237703800201416016,\
+7.2636712575331330299377,9.0094979386776685714722,3.9489932497963309288025,\
+5.6551797501742839813232,7.0614896761253476142883,6.7878311965614557266235,\
+4.1329363686963915824890,1.402290873229503631592,4.9523561308160424232483,\
+4.1948772873729467391968,8.6262222891673445701599,2.8575096465647220611572,\
+2.5121363671496510505676,3.389101596549153327942}
+
+
+#define RESULT2 {0.9706107215522056241852,1.4226512916310911638362,1.0319374505428213772973,\
+0.246905751916103338717,2.0519583905069445073366,0.7509586489514044060911,\
+0.1145374781176292794394,1.9252548546825831721208,0.4260626375542267973984,\
+1.9417372548863311987333,2.1300774331528766758481,1.4016815575274605976119,\
+1.4097240974656071177407,2.1729462062921069964716,0.1295883538042104654586,\
+0.6923157050192292327751,1.7260933336118711167728,1.7743042306089458204355,\
+1.9248294562744026059420,2.1867504404929474226549,1.6178450344817050243762,\
+1.2509371333857781660726,1.3542304576599399901227,2.2216893784894660157647,\
+2.2500472625069045662372,1.2341151000295289552611,1.3244505343759986892849,\
+1.993466976516135025221,0.9615552493321314342367,1.6081358323702796830901,\
+0.9702402946929443716684,1.658906529368289861637,1.6819873484154954645931,\
+0.1822594753876470019538,0.8137278503591067746470,1.8364289458354570161447,\
+2.0292571844941731384893,-0.7224396410182910566178,1.9056757389571916672,\
+0.7016968755690818904114,1.3639398299492546673406,2.1162936535075722588317,\
+1.7713390779775688432807,1.5746765360416834500512,0.8032855297427843321856,\
+2.1283371369164427733267,0.1873057044979935803486,1.0491993894614395355092,\
+2.1526356176491328042744,2.1393719992097341986437,1.659572089557145968541,\
+2.2956823132957397959331,1.870041069148148160650,2.294874536928924957380,\
+-0.6923079771535994852982,2.012968695092798743218,1.4119764836513208905444,\
+1.8057488812128539290569,2.1452539646586252786165,-0.4421601177273855043381,\
+2.1137322059948120411832,2.225957124135133913256,1.7346971570693363595694,\
+1.7425060116900870088585,2.0992577085752079923964,-0.5640015026903990591478,\
+1.7220407427170496550417,0.2226156650313379503636,1.9850240276979147502345,\
+0.9849830425057782834486,1.6984254041571493765161,2.2910596958626552321903,\
+2.0008928803872945145770,-3.2921697020833700086939,1.7750494410596528993551,\
+1.1302619000814182470549,0.9369579698639551867956,1.83288212099904845864,\
+0.146191123459191885114,1.8110724490390321950173,1.9145604545765595450035,\
+1.1999934808065779723307,-1.3520478319474638073672,1.6437365753918393718180,\
+1.3652936921609135634270,0.8810938927039604351421,1.62224256150308399071,\
+1.4436435071804869512135,1.0625454734184220928483,-0.1188599112506976002157,\
+1.8266248385955683453119,1.2398179577704631082469,1.9551342798915567477991,\
+1.6508624439841452780087,1.0544516892385875639349,1.8722320967378904832401,\
+-0.1263177455503078638888,1.5038025468266962292319,1.9778590304154859413899,\
+2.194643054750437638489,0.8869945101840888135314,1.4673491210608482493427,\
+2.2697574345222681913015,1.6230517098794554620156,1.6549802193742981781810,\
+1.7222213768989977911161,1.7258523677080592761968,1.5436741131934335058418,\
+2.0534243510350704831069,2.0669984227965598755361,2.2832536450533371663596,\
+2.1025556044304130054456,1.4485347077928583114925,0.9007955206863934582984,\
+2.2224083935232625819367,0.0007455307285780288533,1.5429172933929051758639,\
+1.3738415648213015973766,-1.0048020456777133624371,1.6439105509928255699492,\
+2.1193172771056971726011,1.8090806121136604467381,0.6265327936561931876369,\
+-1.6629714204274992361832,2.1322195493342954719651,-0.2895573875226954974060,\
+2.1439193343978621975054,-2.0827260644551484070064,0.62462171221383455677,\
+1.5934272379201788183423,2.0135164783675794097917,2.24229959570391956802,\
+0.7533272804029441660489,1.7569989208182723583462,0.9662792518179295075953,\
+1.4726983212224467045814,2.209432545000515446532,2.089721937569185339356,\
+2.09219154507008475719,0.951823265584673561257,1.4204753018509210793496,\
+1.2809137839516946399954,1.9333730200617991190626,2.0356018208291457582959,\
+1.273307520236932832702,2.0403627955950214278857,1.700673239349282273025,\
+-0.0384407248228896478159,2.257710285652239079468,0.7918192329452391486910,\
+-1.943098595033752262751,2.1030957827723826270017,0.2661975560760838632746,\
+2.2702688589706512267696,1.8812011703610473922765,0.8942655346201515698112,\
+1.6645175074163265360738,2.136403657202092354339,2.0638991426068855616904,\
+0.2327632262134610163784,2.0648177566830252516183,1.2392557177584351268962,\
+0.9782724873844932389488,2.273137605702431063293,2.183266240754464071472,\
+0.7259787064172199544387,2.1430219045760425800040,1.9087566867408878312773,\
+2.2140679701900434217521,-1.255758284393388990452,0.8619787703734573813819,\
+1.9480996873952269865526,0.1844248666526293323198,2.114737753111020968078,\
+1.1509115140149177580753,1.668685731123507043350,1.7431248863402162285752,\
+-0.7381122661087159420035,2.1100458798366994450646,1.7576584357875708608532,\
+1.0266895216506544131,2.2560290788762715763482,2.205099558817555038814,\
+1.2119854107561658373982,0.1617897676032789000544,2.2250260402856771868585,\
+1.9828853838780200469216,2.1982793473903963210603,1.373460672957984574083,\
+1.73257189512379894403,1.9546560315313432631967,1.9151314791431239825670,\
+1.4189881394992434060498,0.3381072372999247011016,1.5998634493586285643119,\
+1.4338640873752146465137,2.15480666756291494579,1.0499504925567986202140,\
+0.9211335334181942613441,1.2205648705022635880368}
+
+
+#define ZSOURCER {0.3140813848003745079041,0.5769402063451707363129,0.1306138429790735244751,\
+0.0478980806656181812286,0.4500174494460225105286,0.0384718659333884716034,\
+0.483350999653339385986,0.2981918179430067539215,0.7112689120694994926453,\
+0.9268360524438321590424,0.9477838929742574691772,0.1729496796615421772003,\
+0.2750928336754441261292,0.0044281478039920330048,0.0611358620226383209229,\
+0.1950612799264490604401,0.3789803450927138328552,0.2549188635312020778656,\
+0.1764185149222612380981,0.6008180272765457630157,0.3703392641618847846985,\
+0.2908470141701400279999,0.5384815335273742675781,0.8090293356217443943024,\
+0.9260985879227519035339,0.1576966657303273677826,0.9518593531101942062378,\
+0.2709982101805508136749,0.1609848598018288612366,0.8782086591236293315887,\
+0.5091647170484066009521,0.7951062084175646305084,0.8432204117998480796814,\
+0.5806765086017549037933,0.3487791065126657485962,0.9397577759809792041779,\
+0.4363934816792607307434,0.5549766751937568187714,0.9105900451540946960449,\
+0.5684339576400816440582,0.1862502051517367362976,0.0800832151435315608978,\
+0.6585252787917852401733,0.1606054832227528095245,0.9711584830656647682190,\
+0.3668168033473193645477,0.7386338301002979278564,0.9722552285529673099518,\
+0.1349937235936522483826,0.4595781317912042140961,0.5414639282971620559692,\
+0.6397600513882935047150,0.0211964594200253486633,0.4408156829886138439178,\
+0.6374878138303756713867,0.3208820023573935031891,0.4267518399283289909363,\
+0.7819778784178197383881,0.0543234180659055709839,0.9666189108975231647491,\
+0.6948409983888268470764,0.1846996019594371318817,0.3645029179751873016357,\
+0.8176643461920320987701,0.664914294146001338959,0.7559730983339250087738,\
+0.5525381658226251602173,0.7192269531078636646271,0.1989364298060536384583,\
+0.8610532465390861034393,0.1300329938530921936035,0.347959163133054971695,\
+0.5025534434244036674500,0.4978472082875669002533,0.4675923939794301986694,\
+0.9447452803142368793488,0.9599315756931900978088,0.5365384514443576335907,\
+0.8122785724699497222900,0.6470989421941339969635,0.7010180121287703514099,\
+0.6681951484642922878265,0.9593638796359300613403,0.0149199557490646839142,\
+0.6199735002592206001282,0.4061129498295485973358,0.0471306145191192626953,\
+0.8433605083264410495758,0.0635268418118357658386,0.9836421324871480464935,\
+0.4434677045792341232300,0.8565507535822689533234,0.9080012599006295204163,\
+0.4922491232864558696747,0.1930142603814601898193,0.3759337724186480045319,\
+0.2437626412138342857361,0.1035623974166810512543,0.9936000052839517593384,\
+0.5569599089212715625763,0.3858396532014012336731,0.7191527518443763256073,\
+0.1707325801253318786621,0.2878904812969267368317,0.4294657362625002861023,\
+0.8917979537509381771088,0.6188817229121923446655,0.3444608678109943866730,\
+0.0692929709330201148987,0.3619817639701068401337,0.1783103235065937042236,\
+0.8941529677249491214752,0.9010278200730681419373,0.0533773354254662990570,\
+0.4162023533135652542114,0.9438270372338593006134,0.9242387460544705390930,\
+0.8710649865679442882538,0.2808376699686050415039,0.8244629004038870334625,\
+0.4650857029482722282410,0.1462343498133122920990,0.5975636970251798629761,\
+0.3067605351097881793976,0.2377215037122368812561,0.0711208949796855449677,\
+0.8753139786422252655029,0.4413500339724123477936,0.7631150623783469200134,\
+0.9679268277250230312347,0.3924236092716455459595,0.717360940296202898026,\
+0.8640465112403035163879,0.7354763629846274852753,0.0304915383458137512207,\
+0.6331009590066969394684,0.4550241930410265922546,0.3173553734086453914642,\
+0.8250397499650716781616,0.2725940425880253314972,0.3458735281601548194885,\
+0.5352854127995669841766,0.7017193175852298736572,0.9817278520204126834869,\
+0.2777477568015456199646,0.1314821145497262477875,0.366813333705067634583,\
+0.7377605927176773548126,0.9103105561807751655579,0.3637479650788009166718,\
+0.8207867145538330078125,0.3059372254647314548492,0.9788405327126383781433,\
+0.9970494522713124752045,0.4636328797787427902222,0.7769650523550808429718,\
+0.3400075891986489295959,0.0353285889141261577606,0.2607673071324825286865,\
+0.5790986777283251285553,0.1250711670145392417908,0.0372988111339509487152,\
+0.9382179621607065200806,0.5585843441076576709747,0.7192503632977604866028,\
+0.3599752518348395824432,0.6758626028895378112793,0.2222136431373655796051,\
+0.7860159231349825859070,0.1736893891356885433197,0.2674629595130681991577,\
+0.7357366015203297138214,0.0550541067495942115784,0.5923380698077380657196,\
+0.2162457890808582305908,0.7718841419555246829987,0.0926524316892027854919,\
+0.7626169077120721340179,0.7347808051854372024536,0.8017499190755188465118,\
+0.7732572900131344795227,0.2559880572371184825897,0.1179054826498031616,\
+0.9232815303839743137360,0.6709534404799342155457,0.6071323617361485958099,\
+0.4574467372149229049683,0.8206311021931469440460,0.0896153757348656654358,\
+0.3426358769647777080536,0.1674894802272319793701,0.9481152505613863468170,\
+0.9504805644974112510681,0.3436607695184648036957,0.2889420483261346817017,\
+0.5325344172306358814240,0.2558945687487721443176,0.8863505902700126171112,\
+0.0421485081315040588379,0.4876015805639326572418}
+
+#define ZSOURCEI {0.347978035919368267059,0.2037199228070676326752,0.5962978359311819076538,\
+0.8342303414829075336456,0.6809655660763382911682,0.9127784068696200847626,\
+0.5243799723684787750244,0.7204323844052851200104,0.3259664541110396385193,\
+0.1506391367875039577484,0.9124387521296739578247,0.6345743131823837757111,\
+0.9268973069265484809875,0.7633614349178969860077,0.5918717086315155029297,\
+0.9057438620366156101227,0.3263365356251597404480,0.3912780000828206539154,\
+0.4635267537087202072144,0.0849754814989864826202,0.5800507226958870887756,\
+0.7945564310066401958466,0.3823457323014736175537,0.3010852993465960025787,\
+0.5789428642019629478455,0.2627451247535645961761,0.5713048521429300308228,\
+0.1848654565401375293732,0.9971724869683384895325,0.4520535501651465892792,\
+0.0334019884467124938965,0.4553878181613981723785,0.7851976407691836357117,\
+0.4941168962977826595306,0.9304408635944128036499,0.7621670593507587909698,\
+0.9264887655153870582581,0.7199950958602130413055,0.3973621018230915069580,\
+0.8769331262446939945221,0.6766644334420561790466,0.8431562236510217189789,\
+0.7608711589127779006958,0.8287630719132721424103,0.0037989662960171699524,\
+0.9451942699961364269257,0.6311131268739700317383,0.0763222672976553440094,\
+0.4486519275233149528503,0.1080312891863286495209,0.8351444136351346969604,\
+0.3109649871475994586945,0.1235694894567131996155,0.0363539229147136211395,\
+0.6609512977302074432373,0.9844443709589540958405,0.0688076755031943321228,\
+0.5140342987142503261566,0.3807653579860925674438,0.1549817589111626148224,\
+0.6850274773314595222473,0.0382853033952414989471,0.5224257782101631164551,\
+0.7454454028047621250153,0.4607118470594286918640,0.4753002314828336238861,\
+0.8575385268777608871460,0.8073885519988834857941,0.7132545644417405128479,\
+0.0811268086545169353485,0.5751824118196964263916,0.884696914348751306534,\
+0.5624709790572524070740,0.7315255901776254177094,0.6099120099097490310669,\
+0.0705954921431839466095,0.8552806274965405464172,0.7045627343468368053436,\
+0.5928074717521667480469,0.8517647930420935153961,0.2603117255493998527527,\
+0.8596871509216725826263,0.3943212013691663742065,0.3333164160139858722687,\
+0.2511775353923439979553,0.5570420245639979839325,0.7276714108884334564209,\
+0.9383780122734606266022,0.1971746077761054039001,0.1607607132755219936371,\
+0.7815325502306222915649,0.1760376212187111377716,0.2801528992131352424622,\
+0.4699970218352973461151,0.3507726117968559265137,0.5713973813690245151520,\
+0.4563077641651034355164,0.9214398502372205257416,0.4339873101562261581421,\
+0.3514866163022816181183,0.1816438222303986549377,0.9070622171275317668915,\
+0.7665811367332935333252,0.9807842955924570560455,0.1198607003316283226013,\
+0.0508546582423150539398,0.2581452894955873489380,0.1401008707471191883087,\
+0.5514106499031186103821,0.7882929998449981212616,0.8028824776411056518555,\
+0.2425694861449301242828,0.7024780390784144401550,0.0922905071638524532318,\
+0.4318286012858152389526,0.0804965649731457233429,0.7126307198777794837952,\
+0.6893844078294932842255,0.2756213061511516571045,0.6968217701651155948639,\
+0.4598932703956961631775,0.6099067903123795986176,0.3065654132515192031860,\
+0.0749373403377830982208,0.9619921119883656501770,0.4158898773603141307831,\
+0.3287452235817909240723,0.7406168007291853427887,0.5725225014612078666687,\
+0.9504556744359433650970,0.1849336978048086166382,0.8698030491359531879425,\
+0.6907873982563614845276,0.9524399931542575359344,0.6490485109388828277588,\
+0.9960058168508112430573,0.2040582066401839256287,0.3800008497200906276703,\
+0.9729049820452928543091,0.9110585046000778675079,0.3810073928907513618469,\
+0.7869612383656203746796,0.5560158789157867431641,0.8529843934811651706696,\
+0.4350629774853587150574,0.5956362797878682613373,0.7071880977600812911987,\
+0.5747222309000790119171,0.4764349022880196571350,0.6098947445861995220184,\
+0.9666662178933620452881,0.3874611915089190006256,0.0715632727369666099548,\
+0.6122049516998231410980,0.9575729314237833023071,0.7723352131433784961700,\
+0.1287384750321507453918,0.3884150418452918529510,0.2353963479399681091309,\
+0.6542267077602446079254,0.3286431683227419853210,0.024017625954002141953,\
+0.1042741741985082626343,0.9314296473748981952667,0.8185661518946290016174,\
+0.8156488086096942424774,0.8688247688114643096924,0.3549220249988138675690,\
+0.3890381073579192161560,0.6415715864859521389008,0.4902750719338655471802,\
+0.3509976905770599842072,0.8516392158344388008118,0.1348936217837035655975,\
+0.1156354099512100219727,0.8810075619257986545563,0.8367286501452326774597,\
+0.5032693906687200069427,0.4486711751669645309448,0.9319602106697857379913,\
+0.7298459419980645179749,0.3388367067091166973114,0.4314213804900646209717,\
+0.7317318231798708438873,0.9655342241749167442322,0.2621376193128526210785,\
+0.2050140891224145889282,0.2826355365104973316193,0.3973353477194905281067,\
+0.7437736871652305126190,0.8185287192463874816895,0.3071001493372023105621,\
+0.9627068741247057914734,0.9475456266663968563080,0.6546552237123250961304,\
+0.1992082078941166400909,0.3616109425202012062073,0.9388273353688418865204,\
+0.0409001447260379791260,0.0758434669114649295807}
+
+#define ZRESULTR {-0.7576646139762764908809,-0.4912662732014974609207,-0.4935831983604013761813,\
+-0.1796001444111503253520,-0.2030603062114124668369,-0.0903746939402042676059,\
+-0.3380442117380291211504,-0.2488385719103628768156,-0.2453827611475934422636,\
+-0.0629419446509737884332,0.2743030686751847802007,-0.4189753318430110562431,\
+-0.0337034837449739430038,-0.2700068328094388236948,-0.5191589716059612502619,\
+-0.0763304013057857499991,-0.6929039668216129266298,-0.7614418400301237177530,\
+-0.7012514181881327468560,-0.4995602487864141960650,-0.3736855282655331400576,\
+-0.1670990767606896909570,-0.4148838171877601843640,-0.1470641870540525808497,\
+0.0881657571965975273010,-1.1827451998005302780115,0.1044920740886167709327,\
+-1.1145963776166571967963,0.0100332050022288142566,-0.0123498399546466911675,\
+-0.6728365416861274983518,-0.0874315516128119363248,0.1416698281269971604335,\
+-0.2712125731855208887744,-0.0063567040970050154788,0.1906009971260032298535,\
+0.0238331967155752874610,-0.0953429917974444041118,-0.0065067191893498198957,\
+0.0440644425532304637172,-0.3540655459766552382028,-0.1661126167793314234444,\
+0.0062509933701612868662,-0.1693877982336349785619,-0.0292579566847096204929,\
+0.0137816953226981269570,-0.0288761524361324552201,-0.0250652390791611112686,\
+-0.7581745137578204118967,-0.7505545612383084375097,-0.0046973071232757198853,\
+-0.3406170651999906873186,-2.0764518222153585114143,-0.8157393323281721952966,\
+-0.0852474852363154095292,0.0348077956215509243254,-0.8387202021909221372198,\
+-0.0663540586103768398329,-0.9554969196553003696337,-0.0212599130834864695483,\
+-0.0245601140031842454792,-1.6679899099681032570430,-0.4509584277017124609443,\
+0.1011698547763601602201,-0.2120439010955574854478,-0.1131958883879479044188,\
+0.0199327284817682297280,0.0781443465987670671247,-0.3004592565973881468366,\
+-0.1451799924584522560878,-0.5281452333714923286223,-0.0505933914241510074294,\
+-0.2819958038859460280889,-0.122323084811984963971,-0.2632782651610236501760,\
+-0.0540558326414990047981,0.2512879183645665981395,-0.1214932149359973512226,\
+0.0055773659320434761794,0.0673704632706614986448,-0.2906343733694730646633,\
+0.0851020319327377705587,0.0365640112295984101576,-1.0976622196833336619903,\
+-0.4020870876485082012763,-0.3719849821436939651953,-0.3158125612041708385469,\
+0.2324359424588408329360,-1.5742845766045041600023,-0.0033130260706617652329,\
+-0.1069329039454427060507,-0.1341564770393289252048,-0.0510429776001832605226,\
+-0.3847912680433241972011,-0.9153668051115183557087,-0.3798345871473772783489,\
+-0.6590618454479428844905,-0.0755413642077243097095,0.0808833545731707098669,\
+-0.417646722764209388234,-0.8522405945532404158982,0.1463133685463073596633,\
+-0.2416082657366604991012,0.0219217192558878656850,-0.8077093656959043466159,\
+-0.1128924015633438332484,-0.3996389102953575300781,-0.9892317511551623754329,\
+-0.5874413267393940873973,-0.1422192352759769073955,-0.1954743580270074387872,\
+-0.0763719684521397823573,0.1332266112260754309382,-2.2385346085566988350024,\
+-0.5112419918132667939759,-0.0541885453710462053345,0.1544990573544810508189,\
+0.1051325180789595692410,-0.9326914829433226028499,0.0764891336322670034598,\
+-0.4245421077023512346216,-0.4665013282915527192962,-0.3980722181205589849107,\
+-1.152706389176620049852,-0.0091123646200983177135,-0.8629224644504486230190,\
+-0.0671956049468366567456,-0.1483256896732535745631,-0.0470857769330114903084,\
+0.3049502630226416100001,-0.8351336293434713509143,0.1199665328310368234144,\
+0.100965515388687754328,0.1851149271955789266109,-0.4311455286578065315695,\
+0.1656739977240755667953,-0.6957805672270640506838,-0.7030137346248552798755,\
+0.2434410334133135511703,-0.0502776447144934607314,-0.6643994214275527054880,\
+-0.0494471424057717073852,-0.1105954430789197057150,0.2627700024490645658304,\
+-0.6613338575819812659162,-0.4943364682181946023753,-0.2273273919604619497381,\
+-0.0669964153308245241591,0.0270809622513717325465,-0.3423076587443550367063,\
+0.2375373770411028651051,-0.7058599113455784612725,-0.0187211007688289424178,\
+0.1570046667576522059218,0.0619494218295955287323,0.0912342621811634557627,\
+-1.0118000314587793919685,-0.9415613562651380386015,-1.04611739737066766764,\
+-0.1350076179226963601909,-1.045153664947628735504,-3.1153566294303054462489,\
+-0.0576346967934074291828,0.0825782285147220879162,0.0858710750707356584854,\
+-0.1147913938093602786994,0.0959901869720326261781,-0.8704897942843184965866,\
+-0.1312205414500346722928,-0.4084692473683823599195,-0.5825265796688483543875,\
+-0.2043543873503067542785,-0.1585071715930248537063,-0.4983971045262390875408,\
+-1.405591688480441803222,0.1581272765392360557524,-0.1721619754559372272862,\
+-0.0902428450071243726249,-0.1497365537505691013287,0.2065025609822116192671,\
+0.0613750886386554700413,-0.8564551079948240497330,-0.804653684520539647096,\
+0.1638887899169061412863,0.1619231669215081825808,-0.4135383706484943022730,\
+-0.6905772083929240245936,-0.1416337472709212619293,-0.8981660716461068449945,\
+-0.1997922350746098307805,-0.1797380100619248022298,-0.0033949848444226812805,\
+0.3022174959979692654422,0.0079098230306947625579,-0.3346557902575436060921,\
+-0.5646231542298842942529,-0.8141969637368523526888,0.2555170413707821830407,\
+-2.8347892907784113525338,-0.7063037006217763869032}
+
+#define ZRESULTI {0.8365523024247201178127,0.3394374381847692356828,1.355160662925530390410,\
+1.5134434006476746858993,0.9868300791435297147913,1.528673168936313331301,\
+0.8260899014265745687879,1.1783591647662248202977,0.4297253343366602140740,\
+0.1611216299891750081130,0.7663999599077054858398,1.3047144916618338417180,\
+1.2822880914611145541926,1.5649955384218765530591,1.4678689248356304730692,\
+1.3586758006659467312716,0.7108977814935093508808,0.9933651109027943348906,\
+1.2071246910756632253481,0.1405010934420483359464,1.0025763105214653414521,\
+1.21989563358396813086,0.6174353300937470701015,0.3562751652356153653223,\
+0.5587012199090121145062,1.0302380576516638743811,0.5405656721364887618009,\
+0.5986555168040823549092,1.4107360213988626718162,0.4753739371565622318094,\
+0.0655076733245526648952,0.5201329289544929235234,0.7497818580560413614933,\
+0.7050355621930805005704,1.2121540141336599738509,0.6814274485183255958276,\
+1.1306014284455374596661,0.9141116926495304051414,0.4114688990228685949724,\
+0.9956827833608694611200,1.3022000158632660582469,1.4761001233596913184698,\
+0.8573788009054216230354,1.379379585022410426021,0.0039117682490215858332,\
+1.2006025140002900553071,0.7070620318380608226860,0.0783395850399789817065,\
+1.2785255791075276210478,0.2308747034561683952880,0.9955835564035591112031,\
+0.4524376138027601523817,1.4009149235535949262754,0.0822834615192538504358,\
+0.8034667275967887212218,1.2557032585647818212493,0.1598599852603853899158,\
+0.5815258576469973794687,1.4290836436420499833133,0.1589807896730044689537,\
+0.7782863583371778526399,0.2043896563749957318024,0.9616073478994561218869,\
+0.7392289023091881405847,0.6059375681629087795343,0.5612744745893767372991,\
+0.9984170767670760282542,0.8430838000818645650014,1.29879528501095431459,\
+0.0939407915654127262384,1.3484611857054962236191,1.1960714214373144859138,\
+0.8415982269448546437829,0.9732366936364994502995,0.9167206383382787704406,\
+0.0745857498941502189416,0.7278097264573785141195,0.9199632393837048338625,\
+0.6304525502744320331061,0.9211062195464506663356,0.3555526540057888373880,\
+0.9100796877015666641597,0.3899732161636976779384,1.5260640477653748536824,\
+0.3849315818496458763143,0.9408368768631211187525,1.5061175798419510485360,\
+0.838676229611447277001,1.2591119550131308901797,0.1620018843959732390836,\
+1.0546671087981356329522,0.2026968016035011754816,0.299271305708051660321,\
+0.7622771187183752239491,1.067757629024185028754,0.9888735682758375000745,\
+1.0801593307389727449674,1.4588740911245949849473,0.4118082358815949306496,\
+0.5629599662610861310341,0.4399958138718327860239,0.9004381750108224613527,\
+1.3516535386697041687398,1.2852850170743990165789,0.2721670546404741375390,\
+0.0569631738604013462823,0.3951736758236387148102,0.3862903740059538404417,\
+1.4457867030840705346861,1.1403205655573340759901,1.3522555755333163229892,\
+0.264908300074692404369,0.6622029195378335009181,1.0464389789763977045567,\
+0.8038225849224520658254,0.0850815175089563863198,0.6568351393392068970911,\
+0.669491640154789569017,0.7760242270392859742500,0.7016907095208140265896,\
+0.7797846541592131641707,1.335473484345777617222,0.4740136251481967821775,\
+0.2395937042296285568455,1.3285359486862795552753,1.401425714315664317056,\
+0.3592738595863486095183,1.0333805631652628331807,0.6436572543635337151358,\
+0.7762911838119904706090,0.4403927201098556398762,0.8811512979588507210593,\
+0.674423430961778702653,0.9132365009577151360176,1.5238520140402758151765,\
+1.00458246450610100275,0.4215689680173497211335,0.874990498737184374534,\
+0.8674547514202983755638,1.2800682610709759323697,0.8336956783393613124034,\
+0.9734878037135866746254,0.6700663792657182149526,0.7153420705223627606983,\
+1.0026132338500262086711,1.3535381134312993722801,1.0923065980664201646277,\
+0.6618099327465949421878,0.4821732258146940175436,1.033019939116806895640,\
+0.8668307442664776596430,0.9024324853624734465996,0.0729804020494689703602,\
+0.5506621520352920073904,1.1198886719657494825952,0.7824098301910974440077,\
+0.3619529370272654977825,1.4800901440707066036850,0.7343084050589578914980,\
+0.8462379976616437593506,1.2071528313995831815930,0.5720924999360996743292,\
+0.1106864208392598775132,1.0305927183418297499173,0.8498909387724447039858,\
+1.15517062965696792887,0.9096742728488710350021,1.01141253782177353848,\
+0.4595989696224830889371,1.3064089912173471041967,1.071386424855859109684,\
+0.4451357270611538408112,1.5062412806888749727818,0.2239121309027737871666,\
+0.4910523338147070870896,0.8513221989625705532490,1.460513851259993778342,\
+0.5833202395880134893957,0.5481910770820362932554,0.8603624185522980027940,\
+0.7565250407629732221082,0.9237902776741101495972,1.3040155501467787235725,\
+0.6701717740731456540715,0.9634987985586029868301,0.4075854524817449364704,\
+0.4213313914917447000619,0.3316883655770838101873,1.3489670985956061510791,\
+1.1391029061589752480188,1.3689599297259111843061,0.3132420296422914196555,\
+0.7917886209906572769768,1.2228656637749606428400,1.1551462426298317875961,\
+0.3579601167993540777879,0.9549534865181378284760,0.8141418225805733266398,\
+0.7703675837106083168493,0.1543074266086776613616}
+
+
+#define ZSOURCE2R {3.9219759730622172355652,4.6815521270036697387695,3.361602746881544589996,\
+5.3368766140192747116089,2.03906395938247442245,1.5899897180497646331787,\
+0.1818151073530316352844,4.0983706060796976089478,0.1058345986530184745789,\
+1.9653097167611122131348,2.7255953708663582801819,3.4376550372689962387085,\
+2.0337020372971892356873,3.0119446106255054473877,2.7625959040597081184387,\
+2.9445307422429323196411,5.7180739520117640495300,2.141770124435424804688,\
+6.8954616272822022438049,5.8555728476494550704956,4.2041230341419577598572,\
+4.2775720171630382537842,3.1845858739688992500305,5.7618944440037012100220,\
+4.2549022240564227104187,9.7619816288352012634277,2.518960000015795230866,\
+4.3911290075629949569702,0.7593036955222487449646,2.5593801774084568023682,\
+0.6706167431548237800598,7.6511315722018480300903,0.4173615900799632072449,\
+3.438271805644035339356,1.9701673323288559913635,2.1228986512869596481323,\
+3.1403985014185309410095,7.8216253779828548431396,0.5409323470667004585266,\
+9.1902069095522165298462,4.6035157097503542900085,2.9926850274205207824707,\
+0.0291663268581032752991,8.9934705849736928939819,8.3879271661862730979919,\
+4.3437494523823261260986,7.7678761305287480354309,1.3953176606446504592896,\
+1.1506372271105647087097,5.3554199635982513427734,4.3117330456152558326721,\
+6.145384786650538444519,9.2589621385559439659119,0.9938172809779644012451,\
+4.2805786477401852607727,9.431830951943993568420,0.3273952705785632133484,\
+9.2132670804858207702637,9.4490244099870324134827,9.007069906219840049744,\
+8.0943161016330122947693,0.2519542910158634185791,0.0196450622752308845520,\
+5.0752213317900896072388,4.0760429529473185539246,8.4080461412668228149414,\
+5.017265700735151767731,9.1287807654589414596558,4.4357294728979468345642,\
+5.9837839566171169281006,7.7418426470831036567688,7.9220082703977823257446,\
+5.5046048713847994804382,4.0850437059998512268066,7.2174380579963326454163,\
+4.768535858020186424255,6.3930579042062163352966,9.963865298777818679810,\
+1.5747882844880223274231,5.3506936598569154739380,2.1290646074339747428894,\
+5.59145063161849975586,4.304965981282293796539,0.2280548494309186935425,\
+5.7614597817882895469666,7.1491303853690624237061,9.3216359661892056465149,\
+1.2326993141323328018188,2.8655522270128130912781,0.1247995719313621520996,\
+5.7694048294797539710999,3.9386960770934820175171,6.8885837262496352195740,\
+9.7023218311369419097900,8.51576429326087236404,3.3933044690638780593872,\
+8.7725317804142832756042,1.1314024776220321655273,5.2641283208504319190979,\
+5.297394050285220146179,9.2917560925707221031189,9.7654302977025508880615,\
+6.2254639761522412300110,9.822583282366394996643,7.5429888023063540458679,\
+5.4547880962491035461426,7.2860160330310463905334,0.2525969501584768295288,\
+4.0251684701070189476013,0.9831319935619831085205,2.6086253346875309944153,\
+3.6363423336297273635864,1.7466178117319941520691,9.2341394722461700439453,\
+7.6051409030333161354065,5.6402041297405958175659,3.7970651825889945030212,\
+8.7762261740863323211670,8.21742579806596040726,6.787058124318718910217,\
+0.8220098121091723442078,2.5527314469218254089355,7.4444567272439599037170,\
+2.2695036139339208602905,6.836930788122117519379,9.3650726415216922760010,\
+5.0530174048617482185364,2.5248145777732133865356,6.8188397912308573722839,\
+2.8363681584596633911133,1.409485661424696445465,6.7591095995157957077026,\
+4.5126775791868567466736,7.5430292449891567230225,1.3702143030241131782532,\
+6.6082405392080545425415,3.8900542212650179862976,7.001820541918277740479,\
+9.168005720712244510651,2.1228999551385641098022,2.6978330826386809349060,\
+3.1998893804848194122314,0.2321802498772740364075,7.26544727571308612823,\
+1.5340585587546229362488,2.3552638292312622070312,0.8797382796183228492737,\
+7.1059537213295698165894,6.8887275597080588340759,6.5953194908797740936279,\
+1.8151161121204495429993,3.9049659762531518936157,1.5869047446176409721375,\
+6.2407150492072105407715,6.3760355720296502113342,4.2704886104911565780640,\
+1.0716815060004591941833,2.3822965659201145172119,9.4629473658278584480286,\
+4.5766852516680955886841,8.9644787041470408439636,4.4384705275297164916992,\
+8.08956819120794534683,6.8317985069006681442261,0.3401931514963507652283,\
+2.3805456422269344329834,9.4920115964487195014954,2.1827886346727609634399,\
+6.1546878470107913017273,8.3135433867573738098145,7.7340125897899270057678,\
+4.2441909667104482650757,7.262125960551202297211,7.0999773032963275909424,\
+4.7457459988072514533997,9.4386920798569917678833,1.4596485672518610954285,\
+0.7141010463237762451172,6.7337385797873139381409,6.536924717947840690613,\
+1.996896131895482540131,6.01412517949938774109,1.8993748771026730537415,\
+2.5839814636856317520142,0.9878737432882189750671,0.6199027225375175476074,\
+0.4034968325868248939514,7.4001471605151891708374,6.1626600986346602439880,\
+6.5835834480822086334229,2.5145971449092030525208,3.8433500844985246658325,\
+4.3964602379128336906433,6.5407369285821914672852,5.878106378950178623200,\
+6.0208318661898374557495,0.4535020282492041587830,2.0294443331658840179443,\
+7.844273825176060199738,2.6375361625105142593384}
+
+
+#define ZSOURCE2I {4.3832763982936739921570,8.6648589745163917541504,3.7921421090140938758850,\
+7.6687160786241292953491,6.0066213225945830345154,7.85673560574650764465,\
+7.3871155502274632453918,5.5442603398114442825317,9.9291495559737086296082,\
+9.757428467273712158203,3.709622272290289402008,3.0322382133454084396362,\
+9.5195201179012656211853,7.1278580836951732635498,1.192370061762630939484,\
+5.0091631803661584854126,3.2900535268709063529968,4.8089468106627464294434,\
+3.3036959776654839515686,6.3044753577560186386108,2.1171907847747206687927,\
+4.4860231317579746246338,5.9145097108557820320129,6.8067426700145006179810,\
+0.7392961112782359123230,9.4336947053670883178711,1.2863306934013962745667,\
+2.0190807711333036422729,1.9693034281954169273376,8.9286901615560054779053,\
+4.6179189579561352729797,6.2512917164713144302368,7.0597065938636660575867,\
+7.0181696489453315734863,4.0879997471347451210022,0.6362213846296072006226,\
+0.6573933875188231468201,5.3310041315853595733643,0.3315818728879094123840,\
+3.157835649326443672180,3.785823243670165538788,4.6195234358310699462891,\
+6.2873698258772492408752,2.8785153012722730636597,3.2920487364754080772400,\
+4.7192330472171306610107,3.3537696348503232002258,5.5530697200447320938110,\
+1.196080814115703105927,7.6139996573328971862793,4.7909884760156273841858,\
+2.8169692959636449813843,2.380097783170640468597,3.2942054606974124908447,\
+2.3067280324175953865051,2.1362966019660234451294,4.0549980429932475090027,\
+3.0953712016344070434570,6.762971603311598300934,9.7069163154810667037964,\
+5.4417965700849890708923,0.2047479711472988128662,8.9413649635389447212219,\
+3.4903638903051614761353,1.1053651524707674980164,2.0233777537941932678223,\
+1.3046909729018807411194,8.573952978476881980896,6.3780163740739226341248,\
+4.0711227245628833770752,6.6919379355385899543762,2.042601602151989936829,\
+8.3104313490912318229675,0.1221632957458496093750,4.8844617092981934547424,\
+9.549877075478434562683,0.5874312063679099082947,8.2584649138152599334717,\
+2.9807415651157498359680,0.7757596764713525772095,5.8460923237726092338562,\
+7.528713606297969818115,0.5172297963872551918030,5.9586250688880681991577,\
+3.8337053125724196434021,4.9002202786505222320557,5.2727950783446431159973,\
+0.6889454741030931472778,8.843077751807868480682,7.1912937611341476440430,\
+0.6942595774307847023010,1.1522095929831266403198,4.862680672667920589447,\
+7.6715826056897640228271,0.8805298106744885444641,7.0085612777620553970337,\
+1.879138792864978313446,2.0178856328129768371582,4.0628212550655007362366,\
+4.0966569539159536361694,1.769564501009881496429,3.31293122842907905579,\
+0.5184767069295048713684,4.1492417920380830764771,7.2212355909869074821472,\
+0.7746253907680511474609,5.8558783913031220436096,3.7079446297138929367065,\
+2.1161167463287711143494,1.903268527239561080933,5.607953821308910846710,\
+9.4247916433960199356079,6.8177247745916247367859,2.7342410013079643249512,\
+2.0717754075303673744202,1.9379387702792882919312,6.797837591730058193207,\
+5.88365742936730384827,9.331753817386925220490,5.509122880175709724426,\
+8.0405469564720988273621,1.074489727616310119629,7.4039250845089554786682,\
+5.6103316973894834518433,7.6611549546942114830017,7.8306589089334011077881,\
+1.4388314681127667427063,1.6471924725919961929321,3.1774142337962985038757,\
+5.0265956297516822814941,6.9204960623756051064,7.0065794046968221664429,\
+8.8706119870766997337341,6.9797694869339466094971,6.7989911558106541633606,\
+3.6159398127347230911255,2.6739976881071925163269,0.7736870646476745605469,\
+1.494100340642035007477,3.2018390577286481857300,2.0260545751079916954041,\
+4.4988587312400341033936,7.7075743721798062324524,2.4352242145687341690063,\
+2.1261148853227496147156,1.0992341861128807067871,6.9814807781949639320374,\
+4.1509064938873052597046,5.0298188393935561180115,7.51160675659775733948,\
+9.9401472182944416999817,1.82876241393387317657,3.021917375735938549042,\
+3.7854864448308944702148,7.1531985932961106300354,9.5241537224501371383667,\
+4.7039186349138617515564,1.8709417246282100677490,2.55718790460377931595,\
+4.4350660685449838638306,7.2340781940147280693054,8.7619100883603096008301,\
+0.3733208635821938514710,4.2934664245694875717163,3.1572330510243773460388,\
+3.682477343827486038208,1.4587742509320378303528,6.7683792579919099807739,\
+5.2619793592020869255066,4.003625661134719848633,0.0291080260649323463440,\
+3.0681814532727003097534,7.9026939114555716514587,9.5779503695666790008545,\
+6.6892711864784359931946,2.9296159837394952774048,8.2238993747159838676453,\
+0.1798455044627189636231,8.7107013771310448646545,3.1810243334621191024780,\
+5.7244732743129134178162,5.7386581040918827056885,3.4920182498171925544739,\
+7.06729766912758350372,3.5992007283493876457214,4.0523112565279006958008,\
+6.1408105725422501564026,6.5240467619150876998901,0.2951709320768713951111,\
+5.6688958965241909027100,7.1140170888975262641907,4.5884906593710184097290,\
+4.7205173922702670097351,0.6237313523888587951660,0.8544011274352669715881,\
+0.1345641072839498519898,3.5430019116029143333435,6.7193946428596973419189,\
+1.3606189610436558723450,2.1197437215596437454224}
+
+
+#define ZRESULT2R {1.7718546901199148102535,2.2873385372432406548171,1.6228701567171754938101,\
+2.2346263074245684698838,1.8473969837167181218263,2.0814403666906242662549,\
+2.000040135761198101250,1.930738025076279118508,2.2955316341715112926636,\
+2.2979125914561788768253,1.52676863913911398107,1.5225454413433419098567,\
+2.2756589535249842626285,2.0461560089912054216654,1.10158579014350732628,\
+1.7596676151017560663092,1.886619744318301705732,1.6609534913253483079387,\
+2.0341867590624715944614,2.1522631887405574424577,1.5490800609419352884544,\
+1.8243154431583954444562,1.9046961835587756795007,2.1880745312667504443027,\
+1.462943224821960486182,2.6082576924848916988253,1.0397086540972344526068,\
+1.5754847768676314423431,0.746979645400304148595,2.2287521705924668857790,\
+1.5403790183895167409389,2.29053332003721576982,1.9561479629741382879615,\
+2.056062919004959077540,1.5124829204355532130677,0.7957872878063905197621,\
+1.1657936572577645151227,2.247663310479210085902,-0.4549625893688244437918,\
+2.273939094117130466088,1.7851157264602297569667,1.705510493291471751931,\
+1.838553591041654167171,2.2452631537104275061267,2.1984262619387999748710,\
+1.858482175867823826820,2.1354614286115483068329,1.7449625890299069741474,\
+0.5066316450005309279803,2.2309587833094872699746,1.8633839241242127204856,\
+1.9110608576794807511590,2.2575857867741544460216,1.23571911173189863398,\
+1.581562045830424700910,2.2691047577207688057399,1.4031989962500943658341,\
+2.2741179432518765501925,2.4527182982567738989133,2.5833963585371355620168,\
+2.2776279862384747332271,-1.1249835300913728630690,2.1906906716320380112961,\
+1.8180097251363194210683,1.440608273684235829393,2.157337396250079031290,\
+1.6456014738468727198750,2.5276363856092047832647,2.0501201476301127435420,\
+1.9792596577711849548109,2.325636279713856779949,2.1018269082301319627959,\
+2.2993946557097193483798,1.407779382548410174181,2.1650335217497893580685,\
+2.3678319878208848869861,1.8594164774388513006187,2.56043452139564964298,\
+1.2152594801616827258073,1.6876273083151080989239,1.8280452566376663714465,\
+2.2383606348726785562064,1.4669353168458199032642,1.7855716392006990567154,\
+1.9344712649878033072781,2.1595582205209731263551,2.3711393709457433409682,\
+0.3451198452895575252697,2.2295598849908442318224,1.9730216569827605521681,\
+1.7597572254564382010500,1.4119056335367026200345,2.1320313551579719302254,\
+2.5151804905590435801344,2.1472364706413502588589,2.052431577045615185284,\
+2.1940570121896025845842,0.8387289948467516742525,1.8945610375322186058611,\
+1.901605848224737327357,2.2469410116186243620007,2.3333167208432867845147,\
+1.8321040495156570848678,2.3667788410376999763685,2.345870799293293007537,\
+1.7064766326923879180555,2.2351179984798275057756,1.3127927306468758494873,\
+1.5145818637157286712380,0.7618288453812751548355,1.8221250086585414340590,\
+2.3127298919002594601579,1.9513099157402993277799,2.2649290827240116108499,\
+2.0646178740610454660498,1.7857162805439725783430,2.0523808897592226152540,\
+2.357637781206334715023,2.5204455223537904906550,2.1680868421848340510394,\
+2.08969579055791898625,1.0187212773133276222381,2.351321025745570558740,\
+1.8003855797977157404688,2.3290564194645368978343,2.5020530275623595883872,\
+1.6589662323678027178175,1.1034736729371952268508,2.0179385634489594991692,\
+1.7529535621370035958222,1.9548092141654069830992,2.2757671672542376661852,\
+2.2978225629400212959297,2.329897705001075625120,1.9366802551403343723990,\
+2.0192737614105338295190,1.5519072144028889237433,1.9522381258437428996899,\
+2.228825942499146339770,1.3459088341323246496017,1.2160693133443531976923,\
+1.708519320712721833999,2.042657041378174831436,2.0363649964518035773153,\
+0.9638512795498686003270,0.9551846741593900125267,1.951137961258366582129,\
+2.107724763084950492242,2.1435395035941335883933,2.30219731892690226971,\
+2.3129821080069814520641,1.4613961122338947618005,1.2276638750511146280786,\
+1.98774702803650615834,2.2599263943254159769936,2.3454288218721179859472,\
+1.5736974684351636710744,1.1082826047896976451312,2.2826248447267389884985,\
+1.852079302129498561413,2.4440219801181322090144,2.2846216839061130876587,\
+2.0916390604994830049179,2.0880185293365247645170,1.1554676622252344486697,\
+1.4781743340729813773748,2.2621227047071905680298,1.9617338719614783038026,\
+2.0915485321054503309313,2.222172100020261886755,2.0456349034700243016971,\
+1.6557620395745074048932,2.3732960033711649749932,2.4784302018604411621538,\
+2.1043456955600268187823,2.2908052004546388680239,2.1225525715426596384816,\
+-0.3059820602804464440006,2.398801697565509982724,1.9837316998415748248163,\
+1.8021669050328577021958,2.1177911026101683411582,1.3800624471185749531088,\
+2.0182134290564768264176,1.3170274339145702224840,1.4108532825842892144408,\
+1.817110834423457665920,2.2890298175330245911141,1.8196542505912531861867,\
+2.1619335403208914669904,2.0209326327770549269758,1.7893311710629888899859,\
+1.8641960608110765829082,1.882576152038281991352,1.7816883851861540222217,\
+1.7954751269073565556056,1.2730999018963571334240,1.9486466131391497746961,\
+2.074605067637334876451,1.2189909546635331327735}
+
+
+#define ZRESULT2I {0.8408843669071919268987,1.0754371807248737091811,0.8455094310786673839075,\
+0.962808271271232585242,1.2435335418309885202603,1.371120256581034091425,\
+1.5461888319559713433904,0.9342369007616236897817,1.56013775123029430070,\
+1.3720388608498168547811,0.9371355532144381994542,0.7228179279461685036168,\
+1.360325287393417292847,1.1709945644102059958414,0.4074578726347549695319,\
+1.0393742565506918218432,0.5221182542768327827787,1.1517977305599864656926,\
+0.4467977216337457035955,0.8222975857540034683169,0.4665224019878621564139,\
+0.8091797065019556978172,1.0768746352304479074746,0.8683388375483406251831,\
+0.1720341159830799382391,0.7682977019562435838651,0.4721387487057847609506,\
+0.4309811115589534114001,1.20279143843462255070,1.2916347740244560338141,\
+1.4265839008392693365579,0.6850460436644268957807,1.5117462274209296779759,\
+1.1152532149987959275705,1.1217014706271768442747,0.2911766403909815670303,\
+0.2063546073155473614680,0.5982511040925977408023,0.5499105526382754849379,\
+0.3309697617869979402450,0.6882370204600587459964,0.9959451809388051302108,\
+1.5661574844082004620560,0.3097639368523368297304,0.3740022155825183380884,\
+0.8268049495959598482742,0.407572856709710940049,1.3246230944084764757918,\
+0.8047604843662868878695,0.9578156211088914018248,0.8379992820836518196970,\
+0.4298072736875270249968,0.2516111351341220880862,1.2777930133692467773443,\
+0.4942674920588698839197,0.2227403824735175175142,1.4902323819071812138759,\
+0.3241206854947055737704,0.6212066791677098853697,0.8227777158663325263177,\
+0.5918914368525474145599,0.6824004867135488039409,1.5685992315253338702519,\
+0.602441091725517741118,0.2648167750385964080984,0.2361574036342227733698,\
+0.2544057494452062195833,0.7540670573431564882583,0.9631160038064509043565,\
+0.5974222702744066415548,0.7127866343417466055143,0.2523427003112133637508,\
+0.9857721947818851582213,0.0298961055939373325507,0.5949566736712420533806,\
+1.1076852186579833059454,0.0916284996635063769821,0.6920814866116709040966,\
+1.0847494758718594365376,0.1439797822740493671301,1.2215400197911927548944,\
+0.9319943094964961982640,0.1195740768674621451462,1.5325419323859537090726,\
+0.5871287736405550461427,0.6008795873685909283424,0.5147800680430554276512,\
+0.5096442477271476700906,1.2574287319730830247977,1.55344381002968989769,\
+0.1197588579388608048815,0.2845949117488152935174,0.6146775806026560928785,\
+0.6690416852557365956,0.1030338183393550155476,1.1198962694059428901738,\
+0.2110181909408466172096,1.0597850788835401214527,0.6573038229366630069706,\
+0.6582686240328038396186,0.1881909924839933190288,0.3270668956957688000564,\
+0.0830914673081940696742,0.3996821407672082604456,0.763608851537480148863,\
+0.1410651270101331844487,0.677001919140020169685,1.5027782434779339837405,\
+0.4840122714003086690227,1.0939971143713191903402,1.1354027775868176242113,\
+1.2025671422981056846169,1.3200023979900399329068,0.2878762084297626921980,\
+0.2659639364881328793544,0.3309563133803885004447,1.0613976119428301103653,\
+0.5905886949329369750572,0.84881047253311037171,0.6818405058224251691357,\
+1.4689172047242584628890,0.3984077871527766379067,0.7826684691736193189016,\
+1.1863976071520063726439,0.8421875864316380466690,0.6964016273061860440308,\
+0.2774051332309265816001,0.5780614975169666713839,0.4360596809152573194446,\
+1.0570616474517706695480,1.3698760574306645398934,0.8033735187122362786383,\
+1.100195299896877587642,0.7466330742895204153342,1.3719281224888897341430,\
+0.5006805450256617273652,0.6022149721715611692119,0.1100515320096066840261,\
+0.1615487638997855912582,0.9853189831543425203364,0.6441365190650450989196,\
+0.9525486295501676137221,1.540681786544560338825,0.3234105928346787672822,\
+0.9457654725170446807780,0.4366658824494836776964,1.4454467286135332937391,\
+0.5286797419321711544171,0.6306769685466229180548,0.8502600566998695930110,\
+1.3901817278534140953639,0.4379816003966337523146,1.0872460520812594619855,\
+0.5452429334871597976786,0.8427783441184910628863,1.1492861648773524674283,\
+1.346792368827264718689,0.665745289338786183642,0.2639277343938546960267,\
+0.7696845111061191291313,0.6789773815510785626159,1.1019111077295657974418,\
+0.0461157104075398602272,0.5610787453255564605215,1.4634600366382779501606,\
+0.9969191986962234741654,0.1524913254966685227654,1.2588290814744897971877,\
+0.7073635046287626293449,0.4488022872724745648831,0.0037636205385015429094,\
+0.6259389684526723840463,0.8276134607557569244918,0.9328971084913546540918,\
+0.9537519653655091023126,0.3009556732582234217510,1.3951370123387065724785,\
+0.2467179687642131191705,0.9127106501576134345299,0.4528896475979662383793,\
+1.2351598243895067774645,0.7619639996129009551495,1.0726338584530288322583,\
+1.220269965181696392165,1.3029226301867964377124,1.4189980227900089726489,\
+1.5051832236136615250643,0.7225617055791342391302,0.0478600995604049964105,\
+0.710883123025403795836,1.2310328539390928970221,0.8735414139313334436210,\
+0.8209275679220129351421,0.0950735258592600440686,0.1443422571457730618771,\
+0.0223460331642115414552,1.443489200421151252840,1.2774801572114198311425,\
+0.1717450012966928174496,0.6769828145758884918593}
+
+
+
+
+ /* in is between 0 and 1
+ in2 between 0 and 10 */
+
+void dlogsTest(void) {
+
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ double in2[]=SOURCE2;
+ double res2[]=RESULT2;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dlogs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+
+ for (i=0;i<200;i++){
+ out=dlogs(in2[i]);
+ assert(( (fabs(out-res2[i]))/(fabs(out)) )<1e-16);
+ }
+}
+
+
+/* FIXME : assert à 10^-14 */
+void zlogsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ double in2R[]=ZSOURCE2R;
+ double in2I[]=ZSOURCE2I;
+ double res2R[]=ZRESULT2R;
+ double res2I[]=ZRESULT2I;
+ doubleComplex in,in2,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zlogs(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-14);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-14);
+ }
+
+
+ for (i=0;i<200;i++){
+ in2=DoubleComplex(in2R[i],in2I[i]);
+ out=zlogs(in2);
+ assert(( (fabs(zreals(out)-res2R[i]))/(fabs(zreals(out))) )<3e-14);
+ assert(( (fabs(zimags(out)-res2I[i]))/(fabs(zimags(out))) )<1e-14);
+ }
+}
+
+void dlogaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ double in2[]=SOURCE2;
+ double res2[]=RESULT2;
+ int i;
+
+ dloga(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+
+ dloga(in2,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res2[i]))/(fabs(out[i])) )<1e-16);
+ }
+}
+
+void zlogaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ double in2R[]=ZSOURCE2R;
+ double in2I[]=ZSOURCE2I;
+ double res2R[]=ZRESULT2R;
+ double res2I[]=ZRESULT2I;
+ doubleComplex *in,*in2,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ zloga(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-14);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-14);
+ }
+
+ in2=DoubleComplexMatrix(in2R,in2I,200);
+ zloga(in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-res2R[i]))/(fabs(zreals(out[i]))) )<3e-14);
+ assert(( (fabs(zimags(out[i])-res2I[i]))/(fabs(zimags(out[i]))) )<1e-14);
+ }
+
+
+}
+int testLog(void) {
+ printf("\n>>>> Double Logarithm Tests\n");
+ dlogsTest();
+ zlogsTest();
+ dlogaTest();
+ zlogaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLog() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/testFloatLog.c b/2.3-1/src/c/elementaryFunctions/log/testFloatLog.c
new file mode 100644
index 00000000..1966acf1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/testFloatLog.c
@@ -0,0 +1,958 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testLog.h"
+
+#define SOURCE {0.3628176329657435417175f,0.924179898109287023544f,0.5243524145334959030151f,\
+0.7886543427594006061554f,0.6525151440873742103577f,0.2477638195268809795380f,\
+0.2364655844867229461670f,0.7240293831564486026764f,0.8278210600838065147400f,\
+0.4287728047929704189301f,0.4858888480812311172485f,0.5923984018154442310333f,\
+0.0949383648112416267395f,0.1356843891553580760956f,0.9917455688118934631348f,\
+0.7212927364744246006012f,0.0115638775750994682312f,0.0211908905766904354095f,\
+0.1524727698415517807007f,0.9165380974300205707550f,0.4467271203175187110901f,\
+0.5868234331719577312469f,0.1882771886885166168213f,0.4196520284749567508698f,\
+0.2730510598048567771912f,0.7565603456459939479828f,0.9378882069140672683716f,\
+0.0586007428355515003204f,0.5101847248151898384094f,0.5031699347309768199921f,\
+0.7783576548099517822266f,0.6856653341092169284821f,0.1381576983258128166199f,\
+0.371037633623927831650f,0.6366564910858869552612f,0.4961673622019588947296f,\
+0.2994064847007393836975f,0.2392275254242122173309f,0.5618183575570583343506f,\
+0.3218038142658770084381f,0.1082227518782019615173f,0.1685282415710389614105f,\
+0.8263800088316202163696f,0.4923414406366646289825f,0.7863734485581517219543f,\
+0.6762332352809607982635f,0.0258686169981956481934f,0.3594204657711088657379f,\
+0.3436427963897585868835f,0.2824054299853742122650f,0.1450859513133764266968f,\
+0.0762176741845905780792f,0.5220461571589112281799f,0.6713762427680194377899f,\
+0.0599394328892230987549f,0.7267188713885843753815f,0.2224657749757170677185f,\
+0.3122289828024804592133f,0.4435700643807649612427f,0.3983507198281586170197f,\
+0.1324583934620022773743f,0.8820166247896850109100f,0.5455272346735000610352f,\
+0.2917219498194754123688f,0.7739847479388117790222f,0.3354639573954045772552f,\
+0.8127403985708951950073f,0.4612239454872906208038f,0.6898109326139092445374f,\
+0.9649041066877543926239f,0.8210376314818859100342f,0.2802407057024538516998f,\
+0.9873316427692770957947f,0.294199434574693441391f,0.4859610591083765029907f,\
+0.2247181800194084644318f,0.9585652919486165046692f,0.1503968122415244579315f,\
+0.0216291621327400207520f,0.0688429796136915683746f,0.9950710041448473930359f,\
+0.7568672685883939266205f,0.6163959559053182601929f,0.0865804632194340229034f,\
+0.5165374809876084327698f,0.1916800136677920818329f,0.2940570451319217681885f,\
+0.3528221980668604373932f,0.1317937439307570457458f,0.0549608371220529079437f,\
+0.929352553561329841614f,0.737892795819789171219f,0.7509917514398694038391f,\
+0.6889848816208541393280f,0.8865169286727905273438f,0.6891661235131323337555f,\
+0.8677108911797404289246f,0.7947537912987172603607f,0.2496256213635206222534f,\
+0.3935408894903957843781f,0.7297343472018837928772f,0.7888072351925075054169f,\
+0.113488640636205673218f,0.4145256043411791324615f,0.6172473421320319175720f,\
+0.7440188056789338588715f,0.9038409832864999771118f,0.3976829168386757373810f,\
+0.9472072543576359748840f,0.2581262919120490550995f,0.1955799385905265808105f,\
+0.9381833248771727085114f,0.4226356102153658866882f,0.0937463282607495784760f,\
+0.9977992679923772811890f,0.2042182614095509052277f,0.9455819511786103248596f,\
+0.9336234177462756633759f,0.9743702597916126251221f,0.4100225553847849369049f,\
+0.5125095760449767112732f,0.0948633304797112941742f,0.5688196588307619094849f,\
+0.7322562676854431629181f,0.8108531581237912178040f,0.5459008770994842052460f,\
+0.5022544711828231811523f,0.7634959020651876926422f,0.7354982374235987663269f,\
+0.0699520572088658809662f,0.6130836438387632369995f,0.0965849910862743854523f,\
+0.5439325878396630287170f,0.9187005828134715557098f,0.5072866193950176239014f,\
+0.1335940570570528507233f,0.8688194593414664268494f,0.7999687767587602138519f,\
+0.9879787657409906387329f,0.7131399479694664478302f,0.3067426951602101325989f,\
+0.5431228461675345897675f,0.7330236807465553283691f,0.6498145484365522861481f,\
+0.8018737239763140678406f,0.2859625308774411678314f,0.1894423719495534896851f,\
+0.7794728656299412250519f,0.5433104271069169044495f,0.5268451268784701824188f,\
+0.1533693112432956695557f,0.6041304902173578739166f,0.5948378806933760643005f,\
+0.8857938847504556179047f,0.0043053645640611648560f,0.1302204323001205921173f,\
+0.9758609728887677192688f,0.9183407831005752086639f,0.0624175965785980224609f,\
+0.9939593323506414890289f,0.4122588960453867912292f,0.8258536770008504390717f,\
+0.0376359503716230392456f,0.4675730471499264240265f,0.4759115139022469520569f,\
+0.4060978214256465435028f,0.0392968021333217620850f,0.4401316107250750064850f,\
+0.3316476037725806236267f,0.0877817696891725063324f,0.1150833908468484878540f,\
+0.9667435702867805957794f,0.8103649737313389778137f,0.3928376468829810619354f,\
+0.7880131229758262634277f,0.4798596971668303012848f,0.0270724548026919364929f,\
+0.6701857983134686946869f,0.5602217521518468856812f,0.2564360727556049823761f,\
+0.2626037681475281715393f,0.4447338129393756389618f,0.8522944338619709014893f,\
+0.2347065494395792484283f,0.3277532672509551048279f,0.2253599218092858791351f,\
+0.3468936551362276077271f,0.7743145865388214588165f,0.1285835551097989082336f,\
+0.1156307714991271495819f,0.2054340392351150512695f,0.4535544612444937229156f,\
+0.6516549764201045036316f,0.0710035725496709346771f,0.1265540253371000289917f,\
+0.4974718545563519001007f,0.0879269847646355628967f,0.1462626229040324687958f,\
+0.715134423226118087769f,0.9305738122202455997467f}
+
+#define RESULT {-1.0138549594808059506335f,-0.0788485313675790222554f,-0.6455912738997077182646f,\
+-0.2374271494900490608870f,-0.4269209307253117313685f,-1.3952793271990111545477f,\
+-1.4419526017799386696794f,-0.3229233029497151630238f,-0.1889582589621221220266f,\
+-0.8468280928949678543205f,-0.7217753888910144466351f,-0.5235758944053595653756f,\
+-2.354527389398466841186f,-1.9974237581445692946147f,-0.0082886876471943305572f,\
+-0.3267102095711482134810f,-4.459869041610169837497f,-3.8541838794260296907623f,\
+-1.8807692572941765440930f,-0.0871516441756800402940f,-0.8058073398690168698266f,\
+-0.5330312996797691438289f,-1.6698399941066854879068f,-0.8683294147345963498452f,\
+-1.2980964690333058886296f,-0.2789729794097077220094f,-0.0641245194730828693697f,\
+-2.8370079061049158219987f,-0.6729824133243695882811f,-0.6868273235307851276588f,\
+-0.2505691498856313370602f,-0.3773656214470872405364f,-1.9793595047655996310709f,\
+-0.9914517831797942104544f,-0.4515250293249062352174f,-0.7008419853775434971155f,\
+-1.205953148244055972427f,-1.4303401906823356437570f,-0.5765766885249945516989f,\
+-1.1338131915858427056776f,-2.2235636585360341044293f,-1.7806519374711546888079f,\
+-0.1907005521377241608061f,-0.7085828181522180191365f,-0.240323473997209546837f,\
+-0.3912172398408133022762f,-3.6547247438886865111840f,-1.0232623619826317629133f,\
+-1.0681525436893481995071f,-1.264411545554370741584f,-1.93042894450046809141f,\
+-2.5741618985048786427683f,-0.6499992713325659643431f,-0.3984255796794416437656f,\
+-2.8144206784459675496635f,-0.3192155730871417684824f,-1.502982009541258934249f,\
+-1.1640184411209602011184f,-0.8128995091446955534309f,-0.9204224561330225373723f,\
+-2.0214866944753584476757f,-0.1255443741850884864508f,-0.6060025488810325544620f,\
+-1.231954157015291428934f,-0.2562031110919770759971f,-1.092240757863258915350f,\
+-0.2073435333764902521736f,-0.7738715719712579987899f,-0.3713377296431035756719f,\
+-0.0357265538888332026546f,-0.1971863344268207918208f,-1.2721063818886333418590f,\
+-0.0127492850765575892191f,-1.223497392724554932997f,-0.7216267835832522736794f,\
+-1.4929081951001816896962f,-0.0423175999341945593968f,-1.8944780628936490618486f,\
+-3.8337127761178795282149f,-2.6759270254015836698613f,-0.0049411834200203501311f,\
+-0.2785673796390666367984f,-0.483865736386189515539f,-2.446681086792801718133f,\
+-0.6606074257995434573232f,-1.651927892749795789840f,-1.2239814994040887352611f,\
+-1.0417910371382139711471f,-2.026517124423018234580f,-2.9011343997056400212387f,\
+-0.0732671142462539837226f,-0.3039567280501898061118f,-0.2863606107139139989037f,\
+-0.3725359507043504159185f,-0.1204550575726043570857f,-0.3722729288835950889336f,\
+-0.1418966944811957953121f,-0.2297229087732643171282f,-1.3877929980613914473508f,\
+-0.9325703042223095762253f,-0.3150747190128889152483f,-0.2372333033314831252092f,\
+-2.1760525295696577785520f,-0.8806205346832632896437f,-0.4824854567490562962107f,\
+-0.2956889680183093505050f,-0.1011018375069230867958f,-0.9221002825850308504130f,\
+-0.0542373561426655603768f,-1.3543063102932182406590f,-1.6317860900845253535607f,\
+-0.0638099067725128449302f,-0.8612449127611128130155f,-2.3671627801172654415041f,\
+-0.0022031571770593774348f,-1.5885659482121525787335f,-0.0559547196755256631695f,\
+-0.0686821150485829451382f,-0.0259639040526286474231f,-0.8915431076633286711086f,\
+-0.6684358831783273613425f,-2.3553180497276513527538f,-0.5641918391516044239964f,\
+-0.3116247338224413798713f,-0.2096683039932461523058f,-0.6053178634921361211951f,\
+-0.6886483730214458809371f,-0.2698475216395072595610f,-0.3072071353764207479742f,\
+-2.659945168598087494871f,-0.4892539023727084379622f,-2.3373319216128076725170f,\
+-0.6089299592172232600262f,-0.0847950173155939540548f,-0.6786791108759814283857f,\
+-2.0129495019748864237386f,-0.1406199321004115432299f,-0.2231825811274127380202f,\
+-0.0120940736302183569906f,-0.3380775973662459854552f,-1.181746009333312530387f,\
+-0.6104197485997391314783f,-0.3105772710053884000381f,-0.4310682668987352861301f,\
+-0.2208041349135003439397f,-1.25189448766300226445f,-1.6636704065163092636226f,\
+-0.2491374010581904052675f,-0.6100744334370675758805f,-0.6408486505219985751580f,\
+-1.8749064671471911136535f,-0.5039650609751163967687f,-0.5194663799859419173188f,\
+-0.1212709911627764675091f,-5.4478934608177302933996f,-2.038526631411456513376f,\
+-0.0244351485261014196582f,-0.0851867338269072515988f,-2.7739080469083896574034f,\
+-0.0060589862906551463645f,-0.8861037385262900967220f,-0.1913376676415258770270f,\
+-3.2797955584796012473703f,-0.7601996918711692030612f,-0.7425233371947113081291f,\
+-0.9011612089296217043000f,-3.2366121340710831688625f,-0.8206814815116268979622f,\
+-1.1036823082060371881141f,-2.4329014344197728014763f,-2.1620982756055884266289f,\
+-0.0338219993709664781822f,-0.2102705479450195091840f,-0.9343588647242980771424f,\
+-0.2382405357403041268327f,-0.7342615153765646995865f,-3.609238495954611991579f,\
+-0.4002002941250653034189f,-0.5794225876492602456125f,-1.36087587445700952671f,\
+-1.337108967835097139698f,-0.8102793489627861944768f,-0.1598232322015146200656f,\
+-1.449419270934711789778f,-1.1154941876589379301521f,-1.4900565023732303959747f,\
+-1.05873701535465292167f,-0.2557770454111949476328f,-2.0511763516400991491651f,\
+-2.1573531687271665369110f,-1.5826302735280548539265f,-0.7906399256902217898002f,\
+-0.4282400343889684046772f,-2.6450250856057104797969f,-2.0670859842226763092299f,\
+-0.6982162977399214431884f,-2.4312485274946018520836f,-1.9223514861397812403254f,\
+-0.3352847494467096622905f,-0.0719538807151878373469f}
+
+
+#define SOURCE2 {2.6395560009405016899109f,4.1481037065386772155762f,2.8064980218186974525452f,\
+1.2800584640353918075562f,7.7831285959109663963318f,2.1190304495394229888916f,\
+1.121354666538536548615f,6.8568959552794694900513f,1.5312166837975382804871f,\
+6.970850601792335510254f,8.4155184263363480567932f,4.0620247554033994674683f,\
+4.09482547547668218613f,8.7841258011758327484131f,1.1383596854284405708313f,\
+1.9983377400785684585571f,5.6186607433483004570007f,5.8961773291230201721f,\
+6.8539796629920601844788f,8.9062247332185506820679f,5.0422128057107329368591f,\
+3.493615407496690750122f,3.8737787725403904914856f,9.2228986788541078567505f,\
+9.4881842611357569694519f,3.4353372454643249511719f,3.7601187312975525856018f,\
+7.3409405630081892013550f,2.6157614728435873985291f,4.99349383637309074402f,\
+2.6385784195736050605774f,5.25356308557093143463f,5.3762298030778765678406f,\
+1.1999255046248435974121f,2.2563034901395440101624f,6.2740930821746587753296f,\
+7.6084325974807143211365f,0.4855662025511264801025f,6.7239497276023030281067f,\
+2.017172696068882942200f,3.911573919467628002167f,8.3003165572881698608398f,\
+5.8787201577797532081604f,4.8291792999953031539917f,2.2328650346025824546814f,\
+8.4008856676518917083740f,1.2059959070757031440735f,2.8553641680628061294556f,\
+8.6075146449729800224304f,8.494101651012897491455f,5.2570608118548989295959f,\
+9.9312098976224660873413f,6.4885628735646605491638f,9.923190940171480178833f,\
+0.5004197778180241584778f,7.4855065811425447463989f,4.1040589986369013786316f,\
+6.0845263302326202392578f,8.5442108893766999244690f,0.6426467280834913253784f,\
+8.279082938097417354584f,9.2623437754809856414795f,5.6672112690284848213196f,\
+5.711638936772942543030f,8.1601104838773608207703f,0.5689279362559318542481f,\
+5.5959366867318749427795f,1.2493403162807226181030f,7.279222286306321620941f,\
+2.6777664758265018463135f,5.4653349192813038825989f,9.885407658293843269348f,\
+7.3956565884873270988464f,0.0371731072664260864258f,5.9005728596821427345276f,\
+3.096467358991503715515f,2.5522057106718420982361f,6.2518793903291225433350f,\
+1.1574173765257000923157f,6.1170040909200906753540f,6.7839562846347689628601f,\
+3.3200952783226966857910f,0.2587099233642220497131f,5.1744682248681783676147f,\
+3.9168732380494475364685f,2.4135384149849414825439f,5.064434898085892200470f,\
+4.2361020017415285110474f,2.8937275288626551628113f,0.8879321813583374023438f,\
+6.2128817522898316383362f,3.4549844544380903244019f,7.0648676296696066856384f,\
+5.2114724926650524139404f,2.8704008506610989570618f,6.502795079723000526428f,\
+0.8813347620889544487000f,4.498763345181941986084f,7.2272530803456902503967f,\
+8.9767962601035833358765f,2.4278218811377882957458f,4.3377211131155490875244f,\
+9.6770532103255391120911f,5.0685344357043504714966f,5.2329764096066355705261f,\
+5.5969475954771041870117f,5.6173070007935166358948f,4.68176002614200115204f,\
+7.794546722434461116791f,7.9010718129575252532959f,9.8085420625284314155579f,\
+8.1870661024004220962524f,4.2568723810836672782898f,2.4615605548024177551270f,\
+9.2295324662700295448303f,1.000745808705687522888f,4.6782181179150938987732f,\
+3.9504976756870746612549f,0.3661171020939946174622f,5.175368534401059150696f,\
+8.3254515705630183219910f,6.1048321425914764404297f,1.8711117887869477272034f,\
+0.1895748358219861984253f,8.4335647663101553916931f,0.7485948316752910614014f,\
+8.5328151332214474678040f,0.1245901081711053848267f,1.8675393564626574516296f,\
+4.920584075152873992920f,7.4896081397309899330f,9.414957007393240928650f,\
+2.1240556007251143455505f,5.7950199581682682037354f,2.628147569485008716583f,\
+4.3609866220504045486450f,9.1105451015755534172058f,8.0826673656702041625977f,\
+8.1026530498638749122620f,2.5904283951967954635620f,4.1390872886404395103455f,\
+3.599927779287099838257f,6.91278793383389711380f,7.6568587962538003921509f,\
+3.572649653069674968720f,7.6933998242020606994629f,5.4776339093223214149475f,\
+0.9622887428849935531616f,9.5611717319115996360779f,2.2074085660278797149658f,\
+0.1432593585923314094544f,8.1914897728711366653442f,1.3049928424879908561707f,\
+9.6820035576820373535156f,6.5613814676180481910706f,2.4455389659851789474487f,\
+5.2831235667690634727478f,8.4689256362617015838623f,7.8766220854595303535461f,\
+1.262082615867257118225f,7.8838609857484698295593f,3.4530424699187278747559f,\
+2.6598573336377739906311f,9.7098186518996953964233f,8.8752476638182997703552f,\
+2.066752854734659194946f,8.5251609655097126960754f,6.7446978110820055007935f,\
+9.152874383144080638886f,0.2848597615957260131836f,2.367841475643217563629f,\
+7.0153435599058866500854f,1.2025266280397772789001f,8.2874121330678462982178f,\
+3.1610729591920971870422f,5.30519076623022556305f,5.715174819342792034149f,\
+0.4780154302716255187988f,8.2486197212710976600647f,5.7988431211560964584351f,\
+2.7918082987889647483826f,9.5451109297573566436768f,9.0711546363309025764465f,\
+3.3601493109017610549927f,1.1756130633875727653503f,9.2537237703800201416016f,\
+7.2636712575331330299377f,9.0094979386776685714722f,3.9489932497963309288025f,\
+5.6551797501742839813232f,7.0614896761253476142883f,6.7878311965614557266235f,\
+4.1329363686963915824890f,1.402290873229503631592f,4.9523561308160424232483f,\
+4.1948772873729467391968f,8.6262222891673445701599f,2.8575096465647220611572f,\
+2.5121363671496510505676f,3.389101596549153327942f}
+
+
+#define RESULT2 {0.9706107215522056241852f,1.4226512916310911638362f,1.0319374505428213772973f,\
+0.246905751916103338717f,2.0519583905069445073366f,0.7509586489514044060911f,\
+0.1145374781176292794394f,1.9252548546825831721208f,0.4260626375542267973984f,\
+1.9417372548863311987333f,2.1300774331528766758481f,1.4016815575274605976119f,\
+1.4097240974656071177407f,2.1729462062921069964716f,0.1295883538042104654586f,\
+0.6923157050192292327751f,1.7260933336118711167728f,1.7743042306089458204355f,\
+1.9248294562744026059420f,2.1867504404929474226549f,1.6178450344817050243762f,\
+1.2509371333857781660726f,1.3542304576599399901227f,2.2216893784894660157647f,\
+2.2500472625069045662372f,1.2341151000295289552611f,1.3244505343759986892849f,\
+1.993466976516135025221f,0.9615552493321314342367f,1.6081358323702796830901f,\
+0.9702402946929443716684f,1.658906529368289861637f,1.6819873484154954645931f,\
+0.1822594753876470019538f,0.8137278503591067746470f,1.8364289458354570161447f,\
+2.0292571844941731384893f,-0.7224396410182910566178f,1.9056757389571916672f,\
+0.7016968755690818904114f,1.3639398299492546673406f,2.1162936535075722588317f,\
+1.7713390779775688432807f,1.5746765360416834500512f,0.8032855297427843321856f,\
+2.1283371369164427733267f,0.1873057044979935803486f,1.0491993894614395355092f,\
+2.1526356176491328042744f,2.1393719992097341986437f,1.659572089557145968541f,\
+2.2956823132957397959331f,1.870041069148148160650f,2.294874536928924957380f,\
+-0.6923079771535994852982f,2.012968695092798743218f,1.4119764836513208905444f,\
+1.8057488812128539290569f,2.1452539646586252786165f,-0.4421601177273855043381f,\
+2.1137322059948120411832f,2.225957124135133913256f,1.7346971570693363595694f,\
+1.7425060116900870088585f,2.0992577085752079923964f,-0.5640015026903990591478f,\
+1.7220407427170496550417f,0.2226156650313379503636f,1.9850240276979147502345f,\
+0.9849830425057782834486f,1.6984254041571493765161f,2.2910596958626552321903f,\
+2.0008928803872945145770f,-3.2921697020833700086939f,1.7750494410596528993551f,\
+1.1302619000814182470549f,0.9369579698639551867956f,1.83288212099904845864f,\
+0.146191123459191885114f,1.8110724490390321950173f,1.9145604545765595450035f,\
+1.1999934808065779723307f,-1.3520478319474638073672f,1.6437365753918393718180f,\
+1.3652936921609135634270f,0.8810938927039604351421f,1.62224256150308399071f,\
+1.4436435071804869512135f,1.0625454734184220928483f,-0.1188599112506976002157f,\
+1.8266248385955683453119f,1.2398179577704631082469f,1.9551342798915567477991f,\
+1.6508624439841452780087f,1.0544516892385875639349f,1.8722320967378904832401f,\
+-0.1263177455503078638888f,1.5038025468266962292319f,1.9778590304154859413899f,\
+2.194643054750437638489f,0.8869945101840888135314f,1.4673491210608482493427f,\
+2.2697574345222681913015f,1.6230517098794554620156f,1.6549802193742981781810f,\
+1.7222213768989977911161f,1.7258523677080592761968f,1.5436741131934335058418f,\
+2.0534243510350704831069f,2.0669984227965598755361f,2.2832536450533371663596f,\
+2.1025556044304130054456f,1.4485347077928583114925f,0.9007955206863934582984f,\
+2.2224083935232625819367f,0.0007455307285780288533f,1.5429172933929051758639f,\
+1.3738415648213015973766f,-1.0048020456777133624371f,1.6439105509928255699492f,\
+2.1193172771056971726011f,1.8090806121136604467381f,0.6265327936561931876369f,\
+-1.6629714204274992361832f,2.1322195493342954719651f,-0.2895573875226954974060f,\
+2.1439193343978621975054f,-2.0827260644551484070064f,0.62462171221383455677f,\
+1.5934272379201788183423f,2.0135164783675794097917f,2.24229959570391956802f,\
+0.7533272804029441660489f,1.7569989208182723583462f,0.9662792518179295075953f,\
+1.4726983212224467045814f,2.209432545000515446532f,2.089721937569185339356f,\
+2.09219154507008475719f,0.951823265584673561257f,1.4204753018509210793496f,\
+1.2809137839516946399954f,1.9333730200617991190626f,2.0356018208291457582959f,\
+1.273307520236932832702f,2.0403627955950214278857f,1.700673239349282273025f,\
+-0.0384407248228896478159f,2.257710285652239079468f,0.7918192329452391486910f,\
+-1.943098595033752262751f,2.1030957827723826270017f,0.2661975560760838632746f,\
+2.2702688589706512267696f,1.8812011703610473922765f,0.8942655346201515698112f,\
+1.6645175074163265360738f,2.136403657202092354339f,2.0638991426068855616904f,\
+0.2327632262134610163784f,2.0648177566830252516183f,1.2392557177584351268962f,\
+0.9782724873844932389488f,2.273137605702431063293f,2.183266240754464071472f,\
+0.7259787064172199544387f,2.1430219045760425800040f,1.9087566867408878312773f,\
+2.2140679701900434217521f,-1.255758284393388990452f,0.8619787703734573813819f,\
+1.9480996873952269865526f,0.1844248666526293323198f,2.114737753111020968078f,\
+1.1509115140149177580753f,1.668685731123507043350f,1.7431248863402162285752f,\
+-0.7381122661087159420035f,2.1100458798366994450646f,1.7576584357875708608532f,\
+1.0266895216506544131f,2.2560290788762715763482f,2.205099558817555038814f,\
+1.2119854107561658373982f,0.1617897676032789000544f,2.2250260402856771868585f,\
+1.9828853838780200469216f,2.1982793473903963210603f,1.373460672957984574083f,\
+1.73257189512379894403f,1.9546560315313432631967f,1.9151314791431239825670f,\
+1.4189881394992434060498f,0.3381072372999247011016f,1.5998634493586285643119f,\
+1.4338640873752146465137f,2.15480666756291494579f,1.0499504925567986202140f,\
+0.9211335334181942613441f,1.2205648705022635880368f}
+
+
+
+
+
+
+
+
+#define CSOURCER {0.3140813848003745079041f,0.5769402063451707363129f,0.1306138429790735244751f,\
+0.0478980806656181812286f,0.4500174494460225105286f,0.0384718659333884716034f,\
+0.483350999653339385986f,0.2981918179430067539215f,0.7112689120694994926453f,\
+0.9268360524438321590424f,0.9477838929742574691772f,0.1729496796615421772003f,\
+0.2750928336754441261292f,0.0044281478039920330048f,0.0611358620226383209229f,\
+0.1950612799264490604401f,0.3789803450927138328552f,0.2549188635312020778656f,\
+0.1764185149222612380981f,0.6008180272765457630157f,0.3703392641618847846985f,\
+0.2908470141701400279999f,0.5384815335273742675781f,0.8090293356217443943024f,\
+0.9260985879227519035339f,0.1576966657303273677826f,0.9518593531101942062378f,\
+0.2709982101805508136749f,0.1609848598018288612366f,0.8782086591236293315887f,\
+0.5091647170484066009521f,0.7951062084175646305084f,0.8432204117998480796814f,\
+0.5806765086017549037933f,0.3487791065126657485962f,0.9397577759809792041779f,\
+0.4363934816792607307434f,0.5549766751937568187714f,0.9105900451540946960449f,\
+0.5684339576400816440582f,0.1862502051517367362976f,0.0800832151435315608978f,\
+0.6585252787917852401733f,0.1606054832227528095245f,0.9711584830656647682190f,\
+0.3668168033473193645477f,0.7386338301002979278564f,0.9722552285529673099518f,\
+0.1349937235936522483826f,0.4595781317912042140961f,0.5414639282971620559692f,\
+0.6397600513882935047150f,0.0211964594200253486633f,0.4408156829886138439178f,\
+0.6374878138303756713867f,0.3208820023573935031891f,0.4267518399283289909363f,\
+0.7819778784178197383881f,0.0543234180659055709839f,0.9666189108975231647491f,\
+0.6948409983888268470764f,0.1846996019594371318817f,0.3645029179751873016357f,\
+0.8176643461920320987701f,0.664914294146001338959f,0.7559730983339250087738f,\
+0.5525381658226251602173f,0.7192269531078636646271f,0.1989364298060536384583f,\
+0.8610532465390861034393f,0.1300329938530921936035f,0.347959163133054971695f,\
+0.5025534434244036674500f,0.4978472082875669002533f,0.4675923939794301986694f,\
+0.9447452803142368793488f,0.9599315756931900978088f,0.5365384514443576335907f,\
+0.8122785724699497222900f,0.6470989421941339969635f,0.7010180121287703514099f,\
+0.6681951484642922878265f,0.9593638796359300613403f,0.0149199557490646839142f,\
+0.6199735002592206001282f,0.4061129498295485973358f,0.0471306145191192626953f,\
+0.8433605083264410495758f,0.0635268418118357658386f,0.9836421324871480464935f,\
+0.4434677045792341232300f,0.8565507535822689533234f,0.9080012599006295204163f,\
+0.4922491232864558696747f,0.1930142603814601898193f,0.3759337724186480045319f,\
+0.2437626412138342857361f,0.1035623974166810512543f,0.9936000052839517593384f,\
+0.5569599089212715625763f,0.3858396532014012336731f,0.7191527518443763256073f,\
+0.1707325801253318786621f,0.2878904812969267368317f,0.4294657362625002861023f,\
+0.8917979537509381771088f,0.6188817229121923446655f,0.3444608678109943866730f,\
+0.0692929709330201148987f,0.3619817639701068401337f,0.1783103235065937042236f,\
+0.8941529677249491214752f,0.9010278200730681419373f,0.0533773354254662990570f,\
+0.4162023533135652542114f,0.9438270372338593006134f,0.9242387460544705390930f,\
+0.8710649865679442882538f,0.2808376699686050415039f,0.8244629004038870334625f,\
+0.4650857029482722282410f,0.1462343498133122920990f,0.5975636970251798629761f,\
+0.3067605351097881793976f,0.2377215037122368812561f,0.0711208949796855449677f,\
+0.8753139786422252655029f,0.4413500339724123477936f,0.7631150623783469200134f,\
+0.9679268277250230312347f,0.3924236092716455459595f,0.717360940296202898026f,\
+0.8640465112403035163879f,0.7354763629846274852753f,0.0304915383458137512207f,\
+0.6331009590066969394684f,0.4550241930410265922546f,0.3173553734086453914642f,\
+0.8250397499650716781616f,0.2725940425880253314972f,0.3458735281601548194885f,\
+0.5352854127995669841766f,0.7017193175852298736572f,0.9817278520204126834869f,\
+0.2777477568015456199646f,0.1314821145497262477875f,0.366813333705067634583f,\
+0.7377605927176773548126f,0.9103105561807751655579f,0.3637479650788009166718f,\
+0.8207867145538330078125f,0.3059372254647314548492f,0.9788405327126383781433f,\
+0.9970494522713124752045f,0.4636328797787427902222f,0.7769650523550808429718f,\
+0.3400075891986489295959f,0.0353285889141261577606f,0.2607673071324825286865f,\
+0.5790986777283251285553f,0.1250711670145392417908f,0.0372988111339509487152f,\
+0.9382179621607065200806f,0.5585843441076576709747f,0.7192503632977604866028f,\
+0.3599752518348395824432f,0.6758626028895378112793f,0.2222136431373655796051f,\
+0.7860159231349825859070f,0.1736893891356885433197f,0.2674629595130681991577f,\
+0.7357366015203297138214f,0.0550541067495942115784f,0.5923380698077380657196f,\
+0.2162457890808582305908f,0.7718841419555246829987f,0.0926524316892027854919f,\
+0.7626169077120721340179f,0.7347808051854372024536f,0.8017499190755188465118f,\
+0.7732572900131344795227f,0.2559880572371184825897f,0.1179054826498031616f,\
+0.9232815303839743137360f,0.6709534404799342155457f,0.6071323617361485958099f,\
+0.4574467372149229049683f,0.8206311021931469440460f,0.0896153757348656654358f,\
+0.3426358769647777080536f,0.1674894802272319793701f,0.9481152505613863468170f,\
+0.9504805644974112510681f,0.3436607695184648036957f,0.2889420483261346817017f,\
+0.5325344172306358814240f,0.2558945687487721443176f,0.8863505902700126171112f,\
+0.0421485081315040588379f,0.4876015805639326572418f}
+
+#define CSOURCEI {0.347978035919368267059f,0.2037199228070676326752f,0.5962978359311819076538f,\
+0.8342303414829075336456f,0.6809655660763382911682f,0.9127784068696200847626f,\
+0.5243799723684787750244f,0.7204323844052851200104f,0.3259664541110396385193f,\
+0.1506391367875039577484f,0.9124387521296739578247f,0.6345743131823837757111f,\
+0.9268973069265484809875f,0.7633614349178969860077f,0.5918717086315155029297f,\
+0.9057438620366156101227f,0.3263365356251597404480f,0.3912780000828206539154f,\
+0.4635267537087202072144f,0.0849754814989864826202f,0.5800507226958870887756f,\
+0.7945564310066401958466f,0.3823457323014736175537f,0.3010852993465960025787f,\
+0.5789428642019629478455f,0.2627451247535645961761f,0.5713048521429300308228f,\
+0.1848654565401375293732f,0.9971724869683384895325f,0.4520535501651465892792f,\
+0.0334019884467124938965f,0.4553878181613981723785f,0.7851976407691836357117f,\
+0.4941168962977826595306f,0.9304408635944128036499f,0.7621670593507587909698f,\
+0.9264887655153870582581f,0.7199950958602130413055f,0.3973621018230915069580f,\
+0.8769331262446939945221f,0.6766644334420561790466f,0.8431562236510217189789f,\
+0.7608711589127779006958f,0.8287630719132721424103f,0.0037989662960171699524f,\
+0.9451942699961364269257f,0.6311131268739700317383f,0.0763222672976553440094f,\
+0.4486519275233149528503f,0.1080312891863286495209f,0.8351444136351346969604f,\
+0.3109649871475994586945f,0.1235694894567131996155f,0.0363539229147136211395f,\
+0.6609512977302074432373f,0.9844443709589540958405f,0.0688076755031943321228f,\
+0.5140342987142503261566f,0.3807653579860925674438f,0.1549817589111626148224f,\
+0.6850274773314595222473f,0.0382853033952414989471f,0.5224257782101631164551f,\
+0.7454454028047621250153f,0.4607118470594286918640f,0.4753002314828336238861f,\
+0.8575385268777608871460f,0.8073885519988834857941f,0.7132545644417405128479f,\
+0.0811268086545169353485f,0.5751824118196964263916f,0.884696914348751306534f,\
+0.5624709790572524070740f,0.7315255901776254177094f,0.6099120099097490310669f,\
+0.0705954921431839466095f,0.8552806274965405464172f,0.7045627343468368053436f,\
+0.5928074717521667480469f,0.8517647930420935153961f,0.2603117255493998527527f,\
+0.8596871509216725826263f,0.3943212013691663742065f,0.3333164160139858722687f,\
+0.2511775353923439979553f,0.5570420245639979839325f,0.7276714108884334564209f,\
+0.9383780122734606266022f,0.1971746077761054039001f,0.1607607132755219936371f,\
+0.7815325502306222915649f,0.1760376212187111377716f,0.2801528992131352424622f,\
+0.4699970218352973461151f,0.3507726117968559265137f,0.5713973813690245151520f,\
+0.4563077641651034355164f,0.9214398502372205257416f,0.4339873101562261581421f,\
+0.3514866163022816181183f,0.1816438222303986549377f,0.9070622171275317668915f,\
+0.7665811367332935333252f,0.9807842955924570560455f,0.1198607003316283226013f,\
+0.0508546582423150539398f,0.2581452894955873489380f,0.1401008707471191883087f,\
+0.5514106499031186103821f,0.7882929998449981212616f,0.8028824776411056518555f,\
+0.2425694861449301242828f,0.7024780390784144401550f,0.0922905071638524532318f,\
+0.4318286012858152389526f,0.0804965649731457233429f,0.7126307198777794837952f,\
+0.6893844078294932842255f,0.2756213061511516571045f,0.6968217701651155948639f,\
+0.4598932703956961631775f,0.6099067903123795986176f,0.3065654132515192031860f,\
+0.0749373403377830982208f,0.9619921119883656501770f,0.4158898773603141307831f,\
+0.3287452235817909240723f,0.7406168007291853427887f,0.5725225014612078666687f,\
+0.9504556744359433650970f,0.1849336978048086166382f,0.8698030491359531879425f,\
+0.6907873982563614845276f,0.9524399931542575359344f,0.6490485109388828277588f,\
+0.9960058168508112430573f,0.2040582066401839256287f,0.3800008497200906276703f,\
+0.9729049820452928543091f,0.9110585046000778675079f,0.3810073928907513618469f,\
+0.7869612383656203746796f,0.5560158789157867431641f,0.8529843934811651706696f,\
+0.4350629774853587150574f,0.5956362797878682613373f,0.7071880977600812911987f,\
+0.5747222309000790119171f,0.4764349022880196571350f,0.6098947445861995220184f,\
+0.9666662178933620452881f,0.3874611915089190006256f,0.0715632727369666099548f,\
+0.6122049516998231410980f,0.9575729314237833023071f,0.7723352131433784961700f,\
+0.1287384750321507453918f,0.3884150418452918529510f,0.2353963479399681091309f,\
+0.6542267077602446079254f,0.3286431683227419853210f,0.024017625954002141953f,\
+0.1042741741985082626343f,0.9314296473748981952667f,0.8185661518946290016174f,\
+0.8156488086096942424774f,0.8688247688114643096924f,0.3549220249988138675690f,\
+0.3890381073579192161560f,0.6415715864859521389008f,0.4902750719338655471802f,\
+0.3509976905770599842072f,0.8516392158344388008118f,0.1348936217837035655975f,\
+0.1156354099512100219727f,0.8810075619257986545563f,0.8367286501452326774597f,\
+0.5032693906687200069427f,0.4486711751669645309448f,0.9319602106697857379913f,\
+0.7298459419980645179749f,0.3388367067091166973114f,0.4314213804900646209717f,\
+0.7317318231798708438873f,0.9655342241749167442322f,0.2621376193128526210785f,\
+0.2050140891224145889282f,0.2826355365104973316193f,0.3973353477194905281067f,\
+0.7437736871652305126190f,0.8185287192463874816895f,0.3071001493372023105621f,\
+0.9627068741247057914734f,0.9475456266663968563080f,0.6546552237123250961304f,\
+0.1992082078941166400909f,0.3616109425202012062073f,0.9388273353688418865204f,\
+0.0409001447260379791260f,0.0758434669114649295807f}
+
+#define CRESULTR {-0.7576646139762764908809f,-0.4912662732014974609207f,-0.4935831983604013761813f,\
+-0.1796001444111503253520f,-0.2030603062114124668369f,-0.0903746939402042676059f,\
+-0.3380442117380291211504f,-0.2488385719103628768156f,-0.2453827611475934422636f,\
+-0.0629419446509737884332f,0.2743030686751847802007f,-0.4189753318430110562431f,\
+-0.0337034837449739430038f,-0.2700068328094388236948f,-0.5191589716059612502619f,\
+-0.0763304013057857499991f,-0.6929039668216129266298f,-0.7614418400301237177530f,\
+-0.7012514181881327468560f,-0.4995602487864141960650f,-0.3736855282655331400576f,\
+-0.1670990767606896909570f,-0.4148838171877601843640f,-0.1470641870540525808497f,\
+0.0881657571965975273010f,-1.1827451998005302780115f,0.1044920740886167709327f,\
+-1.1145963776166571967963f,0.0100332050022288142566f,-0.0123498399546466911675f,\
+-0.6728365416861274983518f,-0.0874315516128119363248f,0.1416698281269971604335f,\
+-0.2712125731855208887744f,-0.0063567040970050154788f,0.1906009971260032298535f,\
+0.0238331967155752874610f,-0.0953429917974444041118f,-0.0065067191893498198957f,\
+0.0440644425532304637172f,-0.3540655459766552382028f,-0.1661126167793314234444f,\
+0.0062509933701612868662f,-0.1693877982336349785619f,-0.0292579566847096204929f,\
+0.0137816953226981269570f,-0.0288761524361324552201f,-0.0250652390791611112686f,\
+-0.7581745137578204118967f,-0.7505545612383084375097f,-0.0046973071232757198853f,\
+-0.3406170651999906873186f,-2.0764518222153585114143f,-0.8157393323281721952966f,\
+-0.0852474852363154095292f,0.0348077956215509243254f,-0.8387202021909221372198f,\
+-0.0663540586103768398329f,-0.9554969196553003696337f,-0.0212599130834864695483f,\
+-0.0245601140031842454792f,-1.6679899099681032570430f,-0.4509584277017124609443f,\
+0.1011698547763601602201f,-0.2120439010955574854478f,-0.1131958883879479044188f,\
+0.0199327284817682297280f,0.0781443465987670671247f,-0.3004592565973881468366f,\
+-0.1451799924584522560878f,-0.5281452333714923286223f,-0.0505933914241510074294f,\
+-0.2819958038859460280889f,-0.122323084811984963971f,-0.2632782651610236501760f,\
+-0.0540558326414990047981f,0.2512879183645665981395f,-0.1214932149359973512226f,\
+0.0055773659320434761794f,0.0673704632706614986448f,-0.2906343733694730646633f,\
+0.0851020319327377705587f,0.0365640112295984101576f,-1.0976622196833336619903f,\
+-0.4020870876485082012763f,-0.3719849821436939651953f,-0.3158125612041708385469f,\
+0.2324359424588408329360f,-1.5742845766045041600023f,-0.0033130260706617652329f,\
+-0.1069329039454427060507f,-0.1341564770393289252048f,-0.0510429776001832605226f,\
+-0.3847912680433241972011f,-0.9153668051115183557087f,-0.3798345871473772783489f,\
+-0.6590618454479428844905f,-0.0755413642077243097095f,0.0808833545731707098669f,\
+-0.417646722764209388234f,-0.8522405945532404158982f,0.1463133685463073596633f,\
+-0.2416082657366604991012f,0.0219217192558878656850f,-0.8077093656959043466159f,\
+-0.1128924015633438332484f,-0.3996389102953575300781f,-0.9892317511551623754329f,\
+-0.5874413267393940873973f,-0.1422192352759769073955f,-0.1954743580270074387872f,\
+-0.0763719684521397823573f,0.1332266112260754309382f,-2.2385346085566988350024f,\
+-0.5112419918132667939759f,-0.0541885453710462053345f,0.1544990573544810508189f,\
+0.1051325180789595692410f,-0.9326914829433226028499f,0.0764891336322670034598f,\
+-0.4245421077023512346216f,-0.4665013282915527192962f,-0.3980722181205589849107f,\
+-1.152706389176620049852f,-0.0091123646200983177135f,-0.8629224644504486230190f,\
+-0.0671956049468366567456f,-0.1483256896732535745631f,-0.0470857769330114903084f,\
+0.3049502630226416100001f,-0.8351336293434713509143f,0.1199665328310368234144f,\
+0.100965515388687754328f,0.1851149271955789266109f,-0.4311455286578065315695f,\
+0.1656739977240755667953f,-0.6957805672270640506838f,-0.7030137346248552798755f,\
+0.2434410334133135511703f,-0.0502776447144934607314f,-0.6643994214275527054880f,\
+-0.0494471424057717073852f,-0.1105954430789197057150f,0.2627700024490645658304f,\
+-0.6613338575819812659162f,-0.4943364682181946023753f,-0.2273273919604619497381f,\
+-0.0669964153308245241591f,0.0270809622513717325465f,-0.3423076587443550367063f,\
+0.2375373770411028651051f,-0.7058599113455784612725f,-0.0187211007688289424178f,\
+0.1570046667576522059218f,0.0619494218295955287323f,0.0912342621811634557627f,\
+-1.0118000314587793919685f,-0.9415613562651380386015f,-1.04611739737066766764f,\
+-0.1350076179226963601909f,-1.045153664947628735504f,-3.1153566294303054462489f,\
+-0.0576346967934074291828f,0.0825782285147220879162f,0.0858710750707356584854f,\
+-0.1147913938093602786994f,0.0959901869720326261781f,-0.8704897942843184965866f,\
+-0.1312205414500346722928f,-0.4084692473683823599195f,-0.5825265796688483543875f,\
+-0.2043543873503067542785f,-0.1585071715930248537063f,-0.4983971045262390875408f,\
+-1.405591688480441803222f,0.1581272765392360557524f,-0.1721619754559372272862f,\
+-0.0902428450071243726249f,-0.1497365537505691013287f,0.2065025609822116192671f,\
+0.0613750886386554700413f,-0.8564551079948240497330f,-0.804653684520539647096f,\
+0.1638887899169061412863f,0.1619231669215081825808f,-0.4135383706484943022730f,\
+-0.6905772083929240245936f,-0.1416337472709212619293f,-0.8981660716461068449945f,\
+-0.1997922350746098307805f,-0.1797380100619248022298f,-0.0033949848444226812805f,\
+0.3022174959979692654422f,0.0079098230306947625579f,-0.3346557902575436060921f,\
+-0.5646231542298842942529f,-0.8141969637368523526888f,0.2555170413707821830407f,\
+-2.8347892907784113525338f,-0.7063037006217763869032f}
+
+#define CRESULTI {0.8365523024247201178127f,0.3394374381847692356828f,1.355160662925530390410f,\
+1.5134434006476746858993f,0.9868300791435297147913f,1.528673168936313331301f,\
+0.8260899014265745687879f,1.1783591647662248202977f,0.4297253343366602140740f,\
+0.1611216299891750081130f,0.7663999599077054858398f,1.3047144916618338417180f,\
+1.2822880914611145541926f,1.5649955384218765530591f,1.4678689248356304730692f,\
+1.3586758006659467312716f,0.7108977814935093508808f,0.9933651109027943348906f,\
+1.2071246910756632253481f,0.1405010934420483359464f,1.0025763105214653414521f,\
+1.21989563358396813086f,0.6174353300937470701015f,0.3562751652356153653223f,\
+0.5587012199090121145062f,1.0302380576516638743811f,0.5405656721364887618009f,\
+0.5986555168040823549092f,1.4107360213988626718162f,0.4753739371565622318094f,\
+0.0655076733245526648952f,0.5201329289544929235234f,0.7497818580560413614933f,\
+0.7050355621930805005704f,1.2121540141336599738509f,0.6814274485183255958276f,\
+1.1306014284455374596661f,0.9141116926495304051414f,0.4114688990228685949724f,\
+0.9956827833608694611200f,1.3022000158632660582469f,1.4761001233596913184698f,\
+0.8573788009054216230354f,1.379379585022410426021f,0.0039117682490215858332f,\
+1.2006025140002900553071f,0.7070620318380608226860f,0.0783395850399789817065f,\
+1.2785255791075276210478f,0.2308747034561683952880f,0.9955835564035591112031f,\
+0.4524376138027601523817f,1.4009149235535949262754f,0.0822834615192538504358f,\
+0.8034667275967887212218f,1.2557032585647818212493f,0.1598599852603853899158f,\
+0.5815258576469973794687f,1.4290836436420499833133f,0.1589807896730044689537f,\
+0.7782863583371778526399f,0.2043896563749957318024f,0.9616073478994561218869f,\
+0.7392289023091881405847f,0.6059375681629087795343f,0.5612744745893767372991f,\
+0.9984170767670760282542f,0.8430838000818645650014f,1.29879528501095431459f,\
+0.0939407915654127262384f,1.3484611857054962236191f,1.1960714214373144859138f,\
+0.8415982269448546437829f,0.9732366936364994502995f,0.9167206383382787704406f,\
+0.0745857498941502189416f,0.7278097264573785141195f,0.9199632393837048338625f,\
+0.6304525502744320331061f,0.9211062195464506663356f,0.3555526540057888373880f,\
+0.9100796877015666641597f,0.3899732161636976779384f,1.5260640477653748536824f,\
+0.3849315818496458763143f,0.9408368768631211187525f,1.5061175798419510485360f,\
+0.838676229611447277001f,1.2591119550131308901797f,0.1620018843959732390836f,\
+1.0546671087981356329522f,0.2026968016035011754816f,0.299271305708051660321f,\
+0.7622771187183752239491f,1.067757629024185028754f,0.9888735682758375000745f,\
+1.0801593307389727449674f,1.4588740911245949849473f,0.4118082358815949306496f,\
+0.5629599662610861310341f,0.4399958138718327860239f,0.9004381750108224613527f,\
+1.3516535386697041687398f,1.2852850170743990165789f,0.2721670546404741375390f,\
+0.0569631738604013462823f,0.3951736758236387148102f,0.3862903740059538404417f,\
+1.4457867030840705346861f,1.1403205655573340759901f,1.3522555755333163229892f,\
+0.264908300074692404369f,0.6622029195378335009181f,1.0464389789763977045567f,\
+0.8038225849224520658254f,0.0850815175089563863198f,0.6568351393392068970911f,\
+0.669491640154789569017f,0.7760242270392859742500f,0.7016907095208140265896f,\
+0.7797846541592131641707f,1.335473484345777617222f,0.4740136251481967821775f,\
+0.2395937042296285568455f,1.3285359486862795552753f,1.401425714315664317056f,\
+0.3592738595863486095183f,1.0333805631652628331807f,0.6436572543635337151358f,\
+0.7762911838119904706090f,0.4403927201098556398762f,0.8811512979588507210593f,\
+0.674423430961778702653f,0.9132365009577151360176f,1.5238520140402758151765f,\
+1.00458246450610100275f,0.4215689680173497211335f,0.874990498737184374534f,\
+0.8674547514202983755638f,1.2800682610709759323697f,0.8336956783393613124034f,\
+0.9734878037135866746254f,0.6700663792657182149526f,0.7153420705223627606983f,\
+1.0026132338500262086711f,1.3535381134312993722801f,1.0923065980664201646277f,\
+0.6618099327465949421878f,0.4821732258146940175436f,1.033019939116806895640f,\
+0.8668307442664776596430f,0.9024324853624734465996f,0.0729804020494689703602f,\
+0.5506621520352920073904f,1.1198886719657494825952f,0.7824098301910974440077f,\
+0.3619529370272654977825f,1.4800901440707066036850f,0.7343084050589578914980f,\
+0.8462379976616437593506f,1.2071528313995831815930f,0.5720924999360996743292f,\
+0.1106864208392598775132f,1.0305927183418297499173f,0.8498909387724447039858f,\
+1.15517062965696792887f,0.9096742728488710350021f,1.01141253782177353848f,\
+0.4595989696224830889371f,1.3064089912173471041967f,1.071386424855859109684f,\
+0.4451357270611538408112f,1.5062412806888749727818f,0.2239121309027737871666f,\
+0.4910523338147070870896f,0.8513221989625705532490f,1.460513851259993778342f,\
+0.5833202395880134893957f,0.5481910770820362932554f,0.8603624185522980027940f,\
+0.7565250407629732221082f,0.9237902776741101495972f,1.3040155501467787235725f,\
+0.6701717740731456540715f,0.9634987985586029868301f,0.4075854524817449364704f,\
+0.4213313914917447000619f,0.3316883655770838101873f,1.3489670985956061510791f,\
+1.1391029061589752480188f,1.3689599297259111843061f,0.3132420296422914196555f,\
+0.7917886209906572769768f,1.2228656637749606428400f,1.1551462426298317875961f,\
+0.3579601167993540777879f,0.9549534865181378284760f,0.8141418225805733266398f,\
+0.7703675837106083168493f,0.1543074266086776613616f}
+
+#define CSOURCE2R {3.9219759730622172355652f,4.6815521270036697387695f,3.361602746881544589996f,\
+5.3368766140192747116089f,2.03906395938247442245f,1.5899897180497646331787f,\
+0.1818151073530316352844f,4.0983706060796976089478f,0.1058345986530184745789f,\
+1.9653097167611122131348f,2.7255953708663582801819f,3.4376550372689962387085f,\
+2.0337020372971892356873f,3.0119446106255054473877f,2.7625959040597081184387f,\
+2.9445307422429323196411f,5.7180739520117640495300f,2.141770124435424804688f,\
+6.8954616272822022438049f,5.8555728476494550704956f,4.2041230341419577598572f,\
+4.2775720171630382537842f,3.1845858739688992500305f,5.7618944440037012100220f,\
+4.2549022240564227104187f,9.7619816288352012634277f,2.518960000015795230866f,\
+4.3911290075629949569702f,0.7593036955222487449646f,2.5593801774084568023682f,\
+0.6706167431548237800598f,7.6511315722018480300903f,0.4173615900799632072449f,\
+3.438271805644035339356f,1.9701673323288559913635f,2.1228986512869596481323f,\
+3.1403985014185309410095f,7.8216253779828548431396f,0.5409323470667004585266f,\
+9.1902069095522165298462f,4.6035157097503542900085f,2.9926850274205207824707f,\
+0.0291663268581032752991f,8.9934705849736928939819f,8.3879271661862730979919f,\
+4.3437494523823261260986f,7.7678761305287480354309f,1.3953176606446504592896f,\
+1.1506372271105647087097f,5.3554199635982513427734f,4.3117330456152558326721f,\
+6.145384786650538444519f,9.2589621385559439659119f,0.9938172809779644012451f,\
+4.2805786477401852607727f,9.431830951943993568420f,0.3273952705785632133484f,\
+9.2132670804858207702637f,9.4490244099870324134827f,9.007069906219840049744f,\
+8.0943161016330122947693f,0.2519542910158634185791f,0.0196450622752308845520f,\
+5.0752213317900896072388f,4.0760429529473185539246f,8.4080461412668228149414f,\
+5.017265700735151767731f,9.1287807654589414596558f,4.4357294728979468345642f,\
+5.9837839566171169281006f,7.7418426470831036567688f,7.9220082703977823257446f,\
+5.5046048713847994804382f,4.0850437059998512268066f,7.2174380579963326454163f,\
+4.768535858020186424255f,6.3930579042062163352966f,9.963865298777818679810f,\
+1.5747882844880223274231f,5.3506936598569154739380f,2.1290646074339747428894f,\
+5.59145063161849975586f,4.304965981282293796539f,0.2280548494309186935425f,\
+5.7614597817882895469666f,7.1491303853690624237061f,9.3216359661892056465149f,\
+1.2326993141323328018188f,2.8655522270128130912781f,0.1247995719313621520996f,\
+5.7694048294797539710999f,3.9386960770934820175171f,6.8885837262496352195740f,\
+9.7023218311369419097900f,8.51576429326087236404f,3.3933044690638780593872f,\
+8.7725317804142832756042f,1.1314024776220321655273f,5.2641283208504319190979f,\
+5.297394050285220146179f,9.2917560925707221031189f,9.7654302977025508880615f,\
+6.2254639761522412300110f,9.822583282366394996643f,7.5429888023063540458679f,\
+5.4547880962491035461426f,7.2860160330310463905334f,0.2525969501584768295288f,\
+4.0251684701070189476013f,0.9831319935619831085205f,2.6086253346875309944153f,\
+3.6363423336297273635864f,1.7466178117319941520691f,9.2341394722461700439453f,\
+7.6051409030333161354065f,5.6402041297405958175659f,3.7970651825889945030212f,\
+8.7762261740863323211670f,8.21742579806596040726f,6.787058124318718910217f,\
+0.8220098121091723442078f,2.5527314469218254089355f,7.4444567272439599037170f,\
+2.2695036139339208602905f,6.836930788122117519379f,9.3650726415216922760010f,\
+5.0530174048617482185364f,2.5248145777732133865356f,6.8188397912308573722839f,\
+2.8363681584596633911133f,1.409485661424696445465f,6.7591095995157957077026f,\
+4.5126775791868567466736f,7.5430292449891567230225f,1.3702143030241131782532f,\
+6.6082405392080545425415f,3.8900542212650179862976f,7.001820541918277740479f,\
+9.168005720712244510651f,2.1228999551385641098022f,2.6978330826386809349060f,\
+3.1998893804848194122314f,0.2321802498772740364075f,7.26544727571308612823f,\
+1.5340585587546229362488f,2.3552638292312622070312f,0.8797382796183228492737f,\
+7.1059537213295698165894f,6.8887275597080588340759f,6.5953194908797740936279f,\
+1.8151161121204495429993f,3.9049659762531518936157f,1.5869047446176409721375f,\
+6.2407150492072105407715f,6.3760355720296502113342f,4.2704886104911565780640f,\
+1.0716815060004591941833f,2.3822965659201145172119f,9.4629473658278584480286f,\
+4.5766852516680955886841f,8.9644787041470408439636f,4.4384705275297164916992f,\
+8.08956819120794534683f,6.8317985069006681442261f,0.3401931514963507652283f,\
+2.3805456422269344329834f,9.4920115964487195014954f,2.1827886346727609634399f,\
+6.1546878470107913017273f,8.3135433867573738098145f,7.7340125897899270057678f,\
+4.2441909667104482650757f,7.262125960551202297211f,7.0999773032963275909424f,\
+4.7457459988072514533997f,9.4386920798569917678833f,1.4596485672518610954285f,\
+0.7141010463237762451172f,6.7337385797873139381409f,6.536924717947840690613f,\
+1.996896131895482540131f,6.01412517949938774109f,1.8993748771026730537415f,\
+2.5839814636856317520142f,0.9878737432882189750671f,0.6199027225375175476074f,\
+0.4034968325868248939514f,7.4001471605151891708374f,6.1626600986346602439880f,\
+6.5835834480822086334229f,2.5145971449092030525208f,3.8433500844985246658325f,\
+4.3964602379128336906433f,6.5407369285821914672852f,5.878106378950178623200f,\
+6.0208318661898374557495f,0.4535020282492041587830f,2.0294443331658840179443f,\
+7.844273825176060199738f,2.6375361625105142593384f}
+
+#define CSOURCE2I {4.3832763982936739921570f,8.6648589745163917541504f,3.7921421090140938758850f,\
+7.6687160786241292953491f,6.0066213225945830345154f,7.85673560574650764465f,\
+7.3871155502274632453918f,5.5442603398114442825317f,9.9291495559737086296082f,\
+9.757428467273712158203f,3.709622272290289402008f,3.0322382133454084396362f,\
+9.5195201179012656211853f,7.1278580836951732635498f,1.192370061762630939484f,\
+5.0091631803661584854126f,3.2900535268709063529968f,4.8089468106627464294434f,\
+3.3036959776654839515686f,6.3044753577560186386108f,2.1171907847747206687927f,\
+4.4860231317579746246338f,5.9145097108557820320129f,6.8067426700145006179810f,\
+0.7392961112782359123230f,9.4336947053670883178711f,1.2863306934013962745667f,\
+2.0190807711333036422729f,1.9693034281954169273376f,8.9286901615560054779053f,\
+4.6179189579561352729797f,6.2512917164713144302368f,7.0597065938636660575867f,\
+7.0181696489453315734863f,4.0879997471347451210022f,0.6362213846296072006226f,\
+0.6573933875188231468201f,5.3310041315853595733643f,0.3315818728879094123840f,\
+3.157835649326443672180f,3.785823243670165538788f,4.6195234358310699462891f,\
+6.2873698258772492408752f,2.8785153012722730636597f,3.2920487364754080772400f,\
+4.7192330472171306610107f,3.3537696348503232002258f,5.5530697200447320938110f,\
+1.196080814115703105927f,7.6139996573328971862793f,4.7909884760156273841858f,\
+2.8169692959636449813843f,2.380097783170640468597f,3.2942054606974124908447f,\
+2.3067280324175953865051f,2.1362966019660234451294f,4.0549980429932475090027f,\
+3.0953712016344070434570f,6.762971603311598300934f,9.7069163154810667037964f,\
+5.4417965700849890708923f,0.2047479711472988128662f,8.9413649635389447212219f,\
+3.4903638903051614761353f,1.1053651524707674980164f,2.0233777537941932678223f,\
+1.3046909729018807411194f,8.573952978476881980896f,6.3780163740739226341248f,\
+4.0711227245628833770752f,6.6919379355385899543762f,2.042601602151989936829f,\
+8.3104313490912318229675f,0.1221632957458496093750f,4.8844617092981934547424f,\
+9.549877075478434562683f,0.5874312063679099082947f,8.2584649138152599334717f,\
+2.9807415651157498359680f,0.7757596764713525772095f,5.8460923237726092338562f,\
+7.528713606297969818115f,0.5172297963872551918030f,5.9586250688880681991577f,\
+3.8337053125724196434021f,4.9002202786505222320557f,5.2727950783446431159973f,\
+0.6889454741030931472778f,8.843077751807868480682f,7.1912937611341476440430f,\
+0.6942595774307847023010f,1.1522095929831266403198f,4.862680672667920589447f,\
+7.6715826056897640228271f,0.8805298106744885444641f,7.0085612777620553970337f,\
+1.879138792864978313446f,2.0178856328129768371582f,4.0628212550655007362366f,\
+4.0966569539159536361694f,1.769564501009881496429f,3.31293122842907905579f,\
+0.5184767069295048713684f,4.1492417920380830764771f,7.2212355909869074821472f,\
+0.7746253907680511474609f,5.8558783913031220436096f,3.7079446297138929367065f,\
+2.1161167463287711143494f,1.903268527239561080933f,5.607953821308910846710f,\
+9.4247916433960199356079f,6.8177247745916247367859f,2.7342410013079643249512f,\
+2.0717754075303673744202f,1.9379387702792882919312f,6.797837591730058193207f,\
+5.88365742936730384827f,9.331753817386925220490f,5.509122880175709724426f,\
+8.0405469564720988273621f,1.074489727616310119629f,7.4039250845089554786682f,\
+5.6103316973894834518433f,7.6611549546942114830017f,7.8306589089334011077881f,\
+1.4388314681127667427063f,1.6471924725919961929321f,3.1774142337962985038757f,\
+5.0265956297516822814941f,6.9204960623756051064f,7.0065794046968221664429f,\
+8.8706119870766997337341f,6.9797694869339466094971f,6.7989911558106541633606f,\
+3.6159398127347230911255f,2.6739976881071925163269f,0.7736870646476745605469f,\
+1.494100340642035007477f,3.2018390577286481857300f,2.0260545751079916954041f,\
+4.4988587312400341033936f,7.7075743721798062324524f,2.4352242145687341690063f,\
+2.1261148853227496147156f,1.0992341861128807067871f,6.9814807781949639320374f,\
+4.1509064938873052597046f,5.0298188393935561180115f,7.51160675659775733948f,\
+9.9401472182944416999817f,1.82876241393387317657f,3.021917375735938549042f,\
+3.7854864448308944702148f,7.1531985932961106300354f,9.5241537224501371383667f,\
+4.7039186349138617515564f,1.8709417246282100677490f,2.55718790460377931595f,\
+4.4350660685449838638306f,7.2340781940147280693054f,8.7619100883603096008301f,\
+0.3733208635821938514710f,4.2934664245694875717163f,3.1572330510243773460388f,\
+3.682477343827486038208f,1.4587742509320378303528f,6.7683792579919099807739f,\
+5.2619793592020869255066f,4.003625661134719848633f,0.0291080260649323463440f,\
+3.0681814532727003097534f,7.9026939114555716514587f,9.5779503695666790008545f,\
+6.6892711864784359931946f,2.9296159837394952774048f,8.2238993747159838676453f,\
+0.1798455044627189636231f,8.7107013771310448646545f,3.1810243334621191024780f,\
+5.7244732743129134178162f,5.7386581040918827056885f,3.4920182498171925544739f,\
+7.06729766912758350372f,3.5992007283493876457214f,4.0523112565279006958008f,\
+6.1408105725422501564026f,6.5240467619150876998901f,0.2951709320768713951111f,\
+5.6688958965241909027100f,7.1140170888975262641907f,4.5884906593710184097290f,\
+4.7205173922702670097351f,0.6237313523888587951660f,0.8544011274352669715881f,\
+0.1345641072839498519898f,3.5430019116029143333435f,6.7193946428596973419189f,\
+1.3606189610436558723450f,2.1197437215596437454224f}
+
+#define CRESULT2R {1.7718546901199148102535f,2.2873385372432406548171f,1.6228701567171754938101f,\
+2.2346263074245684698838f,1.8473969837167181218263f,2.0814403666906242662549f,\
+2.000040135761198101250f,1.930738025076279118508f,2.2955316341715112926636f,\
+2.2979125914561788768253f,1.52676863913911398107f,1.5225454413433419098567f,\
+2.2756589535249842626285f,2.0461560089912054216654f,1.10158579014350732628f,\
+1.7596676151017560663092f,1.886619744318301705732f,1.6609534913253483079387f,\
+2.0341867590624715944614f,2.1522631887405574424577f,1.5490800609419352884544f,\
+1.8243154431583954444562f,1.9046961835587756795007f,2.1880745312667504443027f,\
+1.462943224821960486182f,2.6082576924848916988253f,1.0397086540972344526068f,\
+1.5754847768676314423431f,0.746979645400304148595f,2.2287521705924668857790f,\
+1.5403790183895167409389f,2.29053332003721576982f,1.9561479629741382879615f,\
+2.056062919004959077540f,1.5124829204355532130677f,0.7957872878063905197621f,\
+1.1657936572577645151227f,2.247663310479210085902f,-0.4549625893688244437918f,\
+2.273939094117130466088f,1.7851157264602297569667f,1.705510493291471751931f,\
+1.838553591041654167171f,2.2452631537104275061267f,2.1984262619387999748710f,\
+1.858482175867823826820f,2.1354614286115483068329f,1.7449625890299069741474f,\
+0.5066316450005309279803f,2.2309587833094872699746f,1.8633839241242127204856f,\
+1.9110608576794807511590f,2.2575857867741544460216f,1.23571911173189863398f,\
+1.581562045830424700910f,2.2691047577207688057399f,1.4031989962500943658341f,\
+2.2741179432518765501925f,2.4527182982567738989133f,2.5833963585371355620168f,\
+2.2776279862384747332271f,-1.1249835300913728630690f,2.1906906716320380112961f,\
+1.8180097251363194210683f,1.440608273684235829393f,2.157337396250079031290f,\
+1.6456014738468727198750f,2.5276363856092047832647f,2.0501201476301127435420f,\
+1.9792596577711849548109f,2.325636279713856779949f,2.1018269082301319627959f,\
+2.2993946557097193483798f,1.407779382548410174181f,2.1650335217497893580685f,\
+2.3678319878208848869861f,1.8594164774388513006187f,2.56043452139564964298f,\
+1.2152594801616827258073f,1.6876273083151080989239f,1.8280452566376663714465f,\
+2.2383606348726785562064f,1.4669353168458199032642f,1.7855716392006990567154f,\
+1.9344712649878033072781f,2.1595582205209731263551f,2.3711393709457433409682f,\
+0.3451198452895575252697f,2.2295598849908442318224f,1.9730216569827605521681f,\
+1.7597572254564382010500f,1.4119056335367026200345f,2.1320313551579719302254f,\
+2.5151804905590435801344f,2.1472364706413502588589f,2.052431577045615185284f,\
+2.1940570121896025845842f,0.8387289948467516742525f,1.8945610375322186058611f,\
+1.901605848224737327357f,2.2469410116186243620007f,2.3333167208432867845147f,\
+1.8321040495156570848678f,2.3667788410376999763685f,2.345870799293293007537f,\
+1.7064766326923879180555f,2.2351179984798275057756f,1.3127927306468758494873f,\
+1.5145818637157286712380f,0.7618288453812751548355f,1.8221250086585414340590f,\
+2.3127298919002594601579f,1.9513099157402993277799f,2.2649290827240116108499f,\
+2.0646178740610454660498f,1.7857162805439725783430f,2.0523808897592226152540f,\
+2.357637781206334715023f,2.5204455223537904906550f,2.1680868421848340510394f,\
+2.08969579055791898625f,1.0187212773133276222381f,2.351321025745570558740f,\
+1.8003855797977157404688f,2.3290564194645368978343f,2.5020530275623595883872f,\
+1.6589662323678027178175f,1.1034736729371952268508f,2.0179385634489594991692f,\
+1.7529535621370035958222f,1.9548092141654069830992f,2.2757671672542376661852f,\
+2.2978225629400212959297f,2.329897705001075625120f,1.9366802551403343723990f,\
+2.0192737614105338295190f,1.5519072144028889237433f,1.9522381258437428996899f,\
+2.228825942499146339770f,1.3459088341323246496017f,1.2160693133443531976923f,\
+1.708519320712721833999f,2.042657041378174831436f,2.0363649964518035773153f,\
+0.9638512795498686003270f,0.9551846741593900125267f,1.951137961258366582129f,\
+2.107724763084950492242f,2.1435395035941335883933f,2.30219731892690226971f,\
+2.3129821080069814520641f,1.4613961122338947618005f,1.2276638750511146280786f,\
+1.98774702803650615834f,2.2599263943254159769936f,2.3454288218721179859472f,\
+1.5736974684351636710744f,1.1082826047896976451312f,2.2826248447267389884985f,\
+1.852079302129498561413f,2.4440219801181322090144f,2.2846216839061130876587f,\
+2.0916390604994830049179f,2.0880185293365247645170f,1.1554676622252344486697f,\
+1.4781743340729813773748f,2.2621227047071905680298f,1.9617338719614783038026f,\
+2.0915485321054503309313f,2.222172100020261886755f,2.0456349034700243016971f,\
+1.6557620395745074048932f,2.3732960033711649749932f,2.4784302018604411621538f,\
+2.1043456955600268187823f,2.2908052004546388680239f,2.1225525715426596384816f,\
+-0.3059820602804464440006f,2.398801697565509982724f,1.9837316998415748248163f,\
+1.8021669050328577021958f,2.1177911026101683411582f,1.3800624471185749531088f,\
+2.0182134290564768264176f,1.3170274339145702224840f,1.4108532825842892144408f,\
+1.817110834423457665920f,2.2890298175330245911141f,1.8196542505912531861867f,\
+2.1619335403208914669904f,2.0209326327770549269758f,1.7893311710629888899859f,\
+1.8641960608110765829082f,1.882576152038281991352f,1.7816883851861540222217f,\
+1.7954751269073565556056f,1.2730999018963571334240f,1.9486466131391497746961f,\
+2.074605067637334876451f,1.2189909546635331327735f}
+
+#define CRESULT2I {0.8408843669071919268987f,1.0754371807248737091811f,0.8455094310786673839075f,\
+0.962808271271232585242f,1.2435335418309885202603f,1.371120256581034091425f,\
+1.5461888319559713433904f,0.9342369007616236897817f,1.56013775123029430070f,\
+1.3720388608498168547811f,0.9371355532144381994542f,0.7228179279461685036168f,\
+1.360325287393417292847f,1.1709945644102059958414f,0.4074578726347549695319f,\
+1.0393742565506918218432f,0.5221182542768327827787f,1.1517977305599864656926f,\
+0.4467977216337457035955f,0.8222975857540034683169f,0.4665224019878621564139f,\
+0.8091797065019556978172f,1.0768746352304479074746f,0.8683388375483406251831f,\
+0.1720341159830799382391f,0.7682977019562435838651f,0.4721387487057847609506f,\
+0.4309811115589534114001f,1.20279143843462255070f,1.2916347740244560338141f,\
+1.4265839008392693365579f,0.6850460436644268957807f,1.5117462274209296779759f,\
+1.1152532149987959275705f,1.1217014706271768442747f,0.2911766403909815670303f,\
+0.2063546073155473614680f,0.5982511040925977408023f,0.5499105526382754849379f,\
+0.3309697617869979402450f,0.6882370204600587459964f,0.9959451809388051302108f,\
+1.5661574844082004620560f,0.3097639368523368297304f,0.3740022155825183380884f,\
+0.8268049495959598482742f,0.407572856709710940049f,1.3246230944084764757918f,\
+0.8047604843662868878695f,0.9578156211088914018248f,0.8379992820836518196970f,\
+0.4298072736875270249968f,0.2516111351341220880862f,1.2777930133692467773443f,\
+0.4942674920588698839197f,0.2227403824735175175142f,1.4902323819071812138759f,\
+0.3241206854947055737704f,0.6212066791677098853697f,0.8227777158663325263177f,\
+0.5918914368525474145599f,0.6824004867135488039409f,1.5685992315253338702519f,\
+0.602441091725517741118f,0.2648167750385964080984f,0.2361574036342227733698f,\
+0.2544057494452062195833f,0.7540670573431564882583f,0.9631160038064509043565f,\
+0.5974222702744066415548f,0.7127866343417466055143f,0.2523427003112133637508f,\
+0.9857721947818851582213f,0.0298961055939373325507f,0.5949566736712420533806f,\
+1.1076852186579833059454f,0.0916284996635063769821f,0.6920814866116709040966f,\
+1.0847494758718594365376f,0.1439797822740493671301f,1.2215400197911927548944f,\
+0.9319943094964961982640f,0.1195740768674621451462f,1.5325419323859537090726f,\
+0.5871287736405550461427f,0.6008795873685909283424f,0.5147800680430554276512f,\
+0.5096442477271476700906f,1.2574287319730830247977f,1.55344381002968989769f,\
+0.1197588579388608048815f,0.2845949117488152935174f,0.6146775806026560928785f,\
+0.6690416852557365956f,0.1030338183393550155476f,1.1198962694059428901738f,\
+0.2110181909408466172096f,1.0597850788835401214527f,0.6573038229366630069706f,\
+0.6582686240328038396186f,0.1881909924839933190288f,0.3270668956957688000564f,\
+0.0830914673081940696742f,0.3996821407672082604456f,0.763608851537480148863f,\
+0.1410651270101331844487f,0.677001919140020169685f,1.5027782434779339837405f,\
+0.4840122714003086690227f,1.0939971143713191903402f,1.1354027775868176242113f,\
+1.2025671422981056846169f,1.3200023979900399329068f,0.2878762084297626921980f,\
+0.2659639364881328793544f,0.3309563133803885004447f,1.0613976119428301103653f,\
+0.5905886949329369750572f,0.84881047253311037171f,0.6818405058224251691357f,\
+1.4689172047242584628890f,0.3984077871527766379067f,0.7826684691736193189016f,\
+1.1863976071520063726439f,0.8421875864316380466690f,0.6964016273061860440308f,\
+0.2774051332309265816001f,0.5780614975169666713839f,0.4360596809152573194446f,\
+1.0570616474517706695480f,1.3698760574306645398934f,0.8033735187122362786383f,\
+1.100195299896877587642f,0.7466330742895204153342f,1.3719281224888897341430f,\
+0.5006805450256617273652f,0.6022149721715611692119f,0.1100515320096066840261f,\
+0.1615487638997855912582f,0.9853189831543425203364f,0.6441365190650450989196f,\
+0.9525486295501676137221f,1.540681786544560338825f,0.3234105928346787672822f,\
+0.9457654725170446807780f,0.4366658824494836776964f,1.4454467286135332937391f,\
+0.5286797419321711544171f,0.6306769685466229180548f,0.8502600566998695930110f,\
+1.3901817278534140953639f,0.4379816003966337523146f,1.0872460520812594619855f,\
+0.5452429334871597976786f,0.8427783441184910628863f,1.1492861648773524674283f,\
+1.346792368827264718689f,0.665745289338786183642f,0.2639277343938546960267f,\
+0.7696845111061191291313f,0.6789773815510785626159f,1.1019111077295657974418f,\
+0.0461157104075398602272f,0.5610787453255564605215f,1.4634600366382779501606f,\
+0.9969191986962234741654f,0.1524913254966685227654f,1.2588290814744897971877f,\
+0.7073635046287626293449f,0.4488022872724745648831f,0.0037636205385015429094f,\
+0.6259389684526723840463f,0.8276134607557569244918f,0.9328971084913546540918f,\
+0.9537519653655091023126f,0.3009556732582234217510f,1.3951370123387065724785f,\
+0.2467179687642131191705f,0.9127106501576134345299f,0.4528896475979662383793f,\
+1.2351598243895067774645f,0.7619639996129009551495f,1.0726338584530288322583f,\
+1.220269965181696392165f,1.3029226301867964377124f,1.4189980227900089726489f,\
+1.5051832236136615250643f,0.7225617055791342391302f,0.0478600995604049964105f,\
+0.710883123025403795836f,1.2310328539390928970221f,0.8735414139313334436210f,\
+0.8209275679220129351421f,0.0950735258592600440686f,0.1443422571457730618771f,\
+0.0223460331642115414552f,1.443489200421151252840f,1.2774801572114198311425f,\
+0.1717450012966928174496f,0.6769828145758884918593f}
+
+
+/* in is between 0 and 1
+ in2 is between 0 and 10 */
+
+
+/* FIXME : Tests à 10^-4
+in the slogsTest with these values
+in : 1.00074577 --- out : 0.00074550 --- result : 0.00074553
+ */
+
+void slogsTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ float in2[]=SOURCE2;
+ float res2[]=RESULT2;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=slogs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<8e-6);
+ }
+
+ for (i=0;i<200;i++){
+ out=slogs(in2[i]);
+ assert( ( (fabs(out-res2[i]) ) / (fabs(out)) )<3e-4);
+ }
+}
+
+void clogsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ float in2R[]=CSOURCE2R;
+ float in2I[]=CSOURCE2I;
+ float res2R[]=CRESULT2R;
+ float res2I[]=CRESULT2I;
+ floatComplex in,in2,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=clogs(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<3e-5);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+
+ for (i=0;i<200;i++){
+ in2=FloatComplex(in2R[i],in2I[i]);
+ out=clogs(in2);
+ assert(( (fabs(creals(out)-res2R[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-res2I[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void slogaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ float in2[]=SOURCE2;
+ float res2[]=RESULT2;
+ int i;
+
+ sloga(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-5);
+ }
+
+ sloga(in2,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res2[i]))/(fabs(out[i])) )<3e-4);
+ }
+}
+
+void clogaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ float in2R[]=CSOURCE2R;
+ float in2I[]=CSOURCE2I;
+ float res2R[]=CRESULT2R;
+ float res2I[]=CRESULT2I;
+ floatComplex *in,*in2,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ cloga(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<3e-5);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+
+
+ in2=FloatComplexMatrix(in2R,in2I,200);
+ cloga(in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-res2R[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-res2I[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+
+int testLog(void) {
+ printf("\n>>>> Float Logarithm Tests\n");
+ slogsTest();
+ clogsTest();
+ slogaTest();
+ clogaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLog() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/testLog.h b/2.3-1/src/c/elementaryFunctions/log/testLog.h
new file mode 100644
index 00000000..b0f3bacb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/testLog.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTLOG_H_
+#define _TESTLOG_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "log.h"
+
+void slogsTest(void);
+
+void dlogsTest(void);
+
+void clogsTest(void);
+
+void zlogsTest(void);
+
+void slogaTest(void);
+
+void dlogaTest(void);
+
+void clogaTest(void);
+
+void zlogaTest(void);
+
+int testLog(void);
+
+#endif /* ! _TESTLOG_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/log/zloga.c b/2.3-1/src/c/elementaryFunctions/log/zloga.c
new file mode 100644
index 00000000..d4f083d7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/zloga.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+
+void zloga(doubleComplex* in, int size, doubleComplex* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = zlogs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log/zlogs.c b/2.3-1/src/c/elementaryFunctions/log/zlogs.c
new file mode 100644
index 00000000..e5e9ded1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log/zlogs.c
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 "log.h"
+#include "lapack.h"
+#include "log1p.h"
+#include "pythag.h"
+
+doubleComplex zlogs(doubleComplex in) {
+ static double sR2 = 1.41421356237309504;
+
+ double _RealIn = zreals(in);
+ double _ImgIn = zimags(in);
+
+ double _RealOut = 0;
+ double _ImgOut = 0;
+
+ double RMax = getOverflowThreshold();
+ double LInf = sqrt(getUnderflowThreshold());
+ double LSup = sqrt(0.5 * RMax);
+
+ double AbsReal = fabs(_RealIn);
+ double AbsImg = fabs(_ImgIn);
+
+ _ImgOut = atan2(_ImgIn, _RealIn);
+
+ if(_ImgIn > _RealIn)
+ {/* switch Real part and Imaginary part */
+ double Temp = AbsReal;
+ AbsReal = AbsImg;
+ AbsImg = Temp;
+ }
+
+ if((0.5 <= AbsReal) && (AbsReal <= sR2))
+ _RealOut = 0.5 * dlog1ps((AbsReal - 1) * (AbsReal + 1) + AbsImg * AbsImg);
+ else if(LInf < AbsImg && AbsReal < LSup)
+ _RealOut = 0.5 * dlogs(AbsReal * AbsReal + AbsImg * AbsImg);
+ else if(AbsReal > RMax)
+ _RealOut = AbsReal;
+ else
+ {
+ double Temp = dpythags(AbsReal, AbsImg);
+ if(Temp <= RMax)
+ {
+ _RealOut = dlogs(Temp);
+ }
+ else /* handle rare spurious overflow with : */
+ {
+ double Temp2 = AbsImg/AbsReal;
+ _RealOut = dlogs(AbsReal) + 0.5 * dlog1ps(Temp2 * Temp2);
+ }
+ }
+ return DoubleComplex(_RealOut, _ImgOut);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/Makefile.am b/2.3-1/src/c/elementaryFunctions/log10/Makefile.am
new file mode 100644
index 00000000..6e5e0908
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/Makefile.am
@@ -0,0 +1,67 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libLog10_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libLog10.la
+
+libLog10_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = slog10s.c \
+ dlog10s.c \
+ clog10s.c \
+ zlog10s.c \
+ slog10a.c \
+ dlog10a.c \
+ clog10a.c \
+ zlog10a.c
+
+HEAD = ../includes/log10.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log10/libLog10.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatLog10 testDoubleLog10
+
+TESTS = testFloatLog10 testDoubleLog10
+
+#
+# -*- 10-Base Logarithm Tests -*-
+#
+testFloatLog10_SOURCES = testLog10.h testFloatLog10.c
+testFloatLog10_CFLAGS = $(check_INCLUDES)
+testFloatLog10_LDADD = $(check_LDADD)
+
+testDoubleLog10_SOURCES = testLog10.h testDoubleLog10.c
+testDoubleLog10_CFLAGS = $(check_INCLUDES)
+testDoubleLog10_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/log10/Makefile.in b/2.3-1/src/c/elementaryFunctions/log10/Makefile.in
new file mode 100644
index 00000000..fdfaa1e1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/Makefile.in
@@ -0,0 +1,808 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatLog10$(EXEEXT) testDoubleLog10$(EXEEXT)
+TESTS = testFloatLog10$(EXEEXT) testDoubleLog10$(EXEEXT)
+subdir = src/c/elementaryFunctions/log10
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLog10_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libLog10_la-slog10s.lo libLog10_la-dlog10s.lo \
+ libLog10_la-clog10s.lo libLog10_la-zlog10s.lo \
+ libLog10_la-slog10a.lo libLog10_la-dlog10a.lo \
+ libLog10_la-clog10a.lo libLog10_la-zlog10a.lo
+am_libLog10_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libLog10_la_OBJECTS = $(am_libLog10_la_OBJECTS)
+libLog10_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLog10_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLog10_OBJECTS = \
+ testDoubleLog10-testDoubleLog10.$(OBJEXT)
+testDoubleLog10_OBJECTS = $(am_testDoubleLog10_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log10/libLog10.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleLog10_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLog10_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLog10_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLog10_OBJECTS = testFloatLog10-testFloatLog10.$(OBJEXT)
+testFloatLog10_OBJECTS = $(am_testFloatLog10_OBJECTS)
+testFloatLog10_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLog10_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLog10_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLog10_la_SOURCES) $(testDoubleLog10_SOURCES) \
+ $(testFloatLog10_SOURCES)
+DIST_SOURCES = $(libLog10_la_SOURCES) $(testDoubleLog10_SOURCES) \
+ $(testFloatLog10_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLog10_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLog10.la
+libLog10_la_SOURCES = $(HEAD) $(SRC)
+SRC = slog10s.c \
+ dlog10s.c \
+ clog10s.c \
+ zlog10s.c \
+ slog10a.c \
+ dlog10a.c \
+ clog10a.c \
+ zlog10a.c
+
+HEAD = ../includes/log10.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log10/libLog10.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- 10-Base Logarithm Tests -*-
+#
+testFloatLog10_SOURCES = testLog10.h testFloatLog10.c
+testFloatLog10_CFLAGS = $(check_INCLUDES)
+testFloatLog10_LDADD = $(check_LDADD)
+testDoubleLog10_SOURCES = testLog10.h testDoubleLog10.c
+testDoubleLog10_CFLAGS = $(check_INCLUDES)
+testDoubleLog10_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/log10/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/log10/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLog10.la: $(libLog10_la_OBJECTS) $(libLog10_la_DEPENDENCIES)
+ $(libLog10_la_LINK) -rpath $(pkglibdir) $(libLog10_la_OBJECTS) $(libLog10_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLog10$(EXEEXT): $(testDoubleLog10_OBJECTS) $(testDoubleLog10_DEPENDENCIES)
+ @rm -f testDoubleLog10$(EXEEXT)
+ $(testDoubleLog10_LINK) $(testDoubleLog10_OBJECTS) $(testDoubleLog10_LDADD) $(LIBS)
+testFloatLog10$(EXEEXT): $(testFloatLog10_OBJECTS) $(testFloatLog10_DEPENDENCIES)
+ @rm -f testFloatLog10$(EXEEXT)
+ $(testFloatLog10_LINK) $(testFloatLog10_OBJECTS) $(testFloatLog10_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-clog10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-clog10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-dlog10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-dlog10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-slog10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-slog10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-zlog10a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog10_la-zlog10s.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLog10-testDoubleLog10.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLog10-testFloatLog10.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLog10_la-slog10s.lo: slog10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-slog10s.lo -MD -MP -MF $(DEPDIR)/libLog10_la-slog10s.Tpo -c -o libLog10_la-slog10s.lo `test -f 'slog10s.c' || echo '$(srcdir)/'`slog10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-slog10s.Tpo $(DEPDIR)/libLog10_la-slog10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slog10s.c' object='libLog10_la-slog10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-slog10s.lo `test -f 'slog10s.c' || echo '$(srcdir)/'`slog10s.c
+
+libLog10_la-dlog10s.lo: dlog10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-dlog10s.lo -MD -MP -MF $(DEPDIR)/libLog10_la-dlog10s.Tpo -c -o libLog10_la-dlog10s.lo `test -f 'dlog10s.c' || echo '$(srcdir)/'`dlog10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-dlog10s.Tpo $(DEPDIR)/libLog10_la-dlog10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlog10s.c' object='libLog10_la-dlog10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-dlog10s.lo `test -f 'dlog10s.c' || echo '$(srcdir)/'`dlog10s.c
+
+libLog10_la-clog10s.lo: clog10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-clog10s.lo -MD -MP -MF $(DEPDIR)/libLog10_la-clog10s.Tpo -c -o libLog10_la-clog10s.lo `test -f 'clog10s.c' || echo '$(srcdir)/'`clog10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-clog10s.Tpo $(DEPDIR)/libLog10_la-clog10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clog10s.c' object='libLog10_la-clog10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-clog10s.lo `test -f 'clog10s.c' || echo '$(srcdir)/'`clog10s.c
+
+libLog10_la-zlog10s.lo: zlog10s.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-zlog10s.lo -MD -MP -MF $(DEPDIR)/libLog10_la-zlog10s.Tpo -c -o libLog10_la-zlog10s.lo `test -f 'zlog10s.c' || echo '$(srcdir)/'`zlog10s.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-zlog10s.Tpo $(DEPDIR)/libLog10_la-zlog10s.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlog10s.c' object='libLog10_la-zlog10s.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-zlog10s.lo `test -f 'zlog10s.c' || echo '$(srcdir)/'`zlog10s.c
+
+libLog10_la-slog10a.lo: slog10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-slog10a.lo -MD -MP -MF $(DEPDIR)/libLog10_la-slog10a.Tpo -c -o libLog10_la-slog10a.lo `test -f 'slog10a.c' || echo '$(srcdir)/'`slog10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-slog10a.Tpo $(DEPDIR)/libLog10_la-slog10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slog10a.c' object='libLog10_la-slog10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-slog10a.lo `test -f 'slog10a.c' || echo '$(srcdir)/'`slog10a.c
+
+libLog10_la-dlog10a.lo: dlog10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-dlog10a.lo -MD -MP -MF $(DEPDIR)/libLog10_la-dlog10a.Tpo -c -o libLog10_la-dlog10a.lo `test -f 'dlog10a.c' || echo '$(srcdir)/'`dlog10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-dlog10a.Tpo $(DEPDIR)/libLog10_la-dlog10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlog10a.c' object='libLog10_la-dlog10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-dlog10a.lo `test -f 'dlog10a.c' || echo '$(srcdir)/'`dlog10a.c
+
+libLog10_la-clog10a.lo: clog10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-clog10a.lo -MD -MP -MF $(DEPDIR)/libLog10_la-clog10a.Tpo -c -o libLog10_la-clog10a.lo `test -f 'clog10a.c' || echo '$(srcdir)/'`clog10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-clog10a.Tpo $(DEPDIR)/libLog10_la-clog10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clog10a.c' object='libLog10_la-clog10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-clog10a.lo `test -f 'clog10a.c' || echo '$(srcdir)/'`clog10a.c
+
+libLog10_la-zlog10a.lo: zlog10a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -MT libLog10_la-zlog10a.lo -MD -MP -MF $(DEPDIR)/libLog10_la-zlog10a.Tpo -c -o libLog10_la-zlog10a.lo `test -f 'zlog10a.c' || echo '$(srcdir)/'`zlog10a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog10_la-zlog10a.Tpo $(DEPDIR)/libLog10_la-zlog10a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlog10a.c' object='libLog10_la-zlog10a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog10_la_CFLAGS) $(CFLAGS) -c -o libLog10_la-zlog10a.lo `test -f 'zlog10a.c' || echo '$(srcdir)/'`zlog10a.c
+
+testDoubleLog10-testDoubleLog10.o: testDoubleLog10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog10_CFLAGS) $(CFLAGS) -MT testDoubleLog10-testDoubleLog10.o -MD -MP -MF $(DEPDIR)/testDoubleLog10-testDoubleLog10.Tpo -c -o testDoubleLog10-testDoubleLog10.o `test -f 'testDoubleLog10.c' || echo '$(srcdir)/'`testDoubleLog10.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLog10-testDoubleLog10.Tpo $(DEPDIR)/testDoubleLog10-testDoubleLog10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLog10.c' object='testDoubleLog10-testDoubleLog10.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog10_CFLAGS) $(CFLAGS) -c -o testDoubleLog10-testDoubleLog10.o `test -f 'testDoubleLog10.c' || echo '$(srcdir)/'`testDoubleLog10.c
+
+testDoubleLog10-testDoubleLog10.obj: testDoubleLog10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog10_CFLAGS) $(CFLAGS) -MT testDoubleLog10-testDoubleLog10.obj -MD -MP -MF $(DEPDIR)/testDoubleLog10-testDoubleLog10.Tpo -c -o testDoubleLog10-testDoubleLog10.obj `if test -f 'testDoubleLog10.c'; then $(CYGPATH_W) 'testDoubleLog10.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLog10.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLog10-testDoubleLog10.Tpo $(DEPDIR)/testDoubleLog10-testDoubleLog10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLog10.c' object='testDoubleLog10-testDoubleLog10.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog10_CFLAGS) $(CFLAGS) -c -o testDoubleLog10-testDoubleLog10.obj `if test -f 'testDoubleLog10.c'; then $(CYGPATH_W) 'testDoubleLog10.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLog10.c'; fi`
+
+testFloatLog10-testFloatLog10.o: testFloatLog10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog10_CFLAGS) $(CFLAGS) -MT testFloatLog10-testFloatLog10.o -MD -MP -MF $(DEPDIR)/testFloatLog10-testFloatLog10.Tpo -c -o testFloatLog10-testFloatLog10.o `test -f 'testFloatLog10.c' || echo '$(srcdir)/'`testFloatLog10.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLog10-testFloatLog10.Tpo $(DEPDIR)/testFloatLog10-testFloatLog10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLog10.c' object='testFloatLog10-testFloatLog10.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog10_CFLAGS) $(CFLAGS) -c -o testFloatLog10-testFloatLog10.o `test -f 'testFloatLog10.c' || echo '$(srcdir)/'`testFloatLog10.c
+
+testFloatLog10-testFloatLog10.obj: testFloatLog10.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog10_CFLAGS) $(CFLAGS) -MT testFloatLog10-testFloatLog10.obj -MD -MP -MF $(DEPDIR)/testFloatLog10-testFloatLog10.Tpo -c -o testFloatLog10-testFloatLog10.obj `if test -f 'testFloatLog10.c'; then $(CYGPATH_W) 'testFloatLog10.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLog10.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLog10-testFloatLog10.Tpo $(DEPDIR)/testFloatLog10-testFloatLog10.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLog10.c' object='testFloatLog10-testFloatLog10.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog10_CFLAGS) $(CFLAGS) -c -o testFloatLog10-testFloatLog10.obj `if test -f 'testFloatLog10.c'; then $(CYGPATH_W) 'testFloatLog10.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLog10.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/log10/clog10a.c b/2.3-1/src/c/elementaryFunctions/log10/clog10a.c
new file mode 100644
index 00000000..6f8d1905
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/clog10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+
+void clog10a(floatComplex* in, int size, floatComplex* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = clog10s(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/clog10s.c b/2.3-1/src/c/elementaryFunctions/log10/clog10s.c
new file mode 100644
index 00000000..7d35ab1b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/clog10s.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+#include "log.h"
+
+floatComplex clog10s(floatComplex in) {
+ floatComplex log_z = clogs(in);
+ return FloatComplex(creals(log_z) / slogs(10.0f), cimags(log_z) / slogs(10.0f));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/dlog10a.c b/2.3-1/src/c/elementaryFunctions/log10/dlog10a.c
new file mode 100644
index 00000000..fcfeb486
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/dlog10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+
+void dlog10a(double* in, int size, double* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = dlog10s(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/dlog10s.c b/2.3-1/src/c/elementaryFunctions/log10/dlog10s.c
new file mode 100644
index 00000000..14bc739b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/dlog10s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+
+double dlog10s(double in) {
+ return (log10(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/slog10a.c b/2.3-1/src/c/elementaryFunctions/log10/slog10a.c
new file mode 100644
index 00000000..b5f65405
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/slog10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+
+void slog10a(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = slog10s(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/slog10s.c b/2.3-1/src/c/elementaryFunctions/log10/slog10s.c
new file mode 100644
index 00000000..cd1ed8e8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/slog10s.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+
+float slog10s(float in) {
+ return (log10f(in));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/testDoubleLog10.c b/2.3-1/src/c/elementaryFunctions/log10/testDoubleLog10.c
new file mode 100644
index 00000000..2ac56920
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/testDoubleLog10.c
@@ -0,0 +1,495 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testLog10.h"
+
+#define SOURCE {0.3628176329657435417175,0.924179898109287023544,0.5243524145334959030151,\
+0.7886543427594006061554,0.6525151440873742103577,0.2477638195268809795380,\
+0.2364655844867229461670,0.7240293831564486026764,0.8278210600838065147400,\
+0.4287728047929704189301,0.4858888480812311172485,0.5923984018154442310333,\
+0.0949383648112416267395,0.1356843891553580760956,0.9917455688118934631348,\
+0.7212927364744246006012,0.0115638775750994682312,0.0211908905766904354095,\
+0.1524727698415517807007,0.9165380974300205707550,0.4467271203175187110901,\
+0.5868234331719577312469,0.1882771886885166168213,0.4196520284749567508698,\
+0.2730510598048567771912,0.7565603456459939479828,0.9378882069140672683716,\
+0.0586007428355515003204,0.5101847248151898384094,0.5031699347309768199921,\
+0.7783576548099517822266,0.6856653341092169284821,0.1381576983258128166199,\
+0.371037633623927831650,0.6366564910858869552612,0.4961673622019588947296,\
+0.2994064847007393836975,0.2392275254242122173309,0.5618183575570583343506,\
+0.3218038142658770084381,0.1082227518782019615173,0.1685282415710389614105,\
+0.8263800088316202163696,0.4923414406366646289825,0.7863734485581517219543,\
+0.6762332352809607982635,0.0258686169981956481934,0.3594204657711088657379,\
+0.3436427963897585868835,0.2824054299853742122650,0.1450859513133764266968,\
+0.0762176741845905780792,0.5220461571589112281799,0.6713762427680194377899,\
+0.0599394328892230987549,0.7267188713885843753815,0.2224657749757170677185,\
+0.3122289828024804592133,0.4435700643807649612427,0.3983507198281586170197,\
+0.1324583934620022773743,0.8820166247896850109100,0.5455272346735000610352,\
+0.2917219498194754123688,0.7739847479388117790222,0.3354639573954045772552,\
+0.8127403985708951950073,0.4612239454872906208038,0.6898109326139092445374,\
+0.9649041066877543926239,0.8210376314818859100342,0.2802407057024538516998,\
+0.9873316427692770957947,0.294199434574693441391,0.4859610591083765029907,\
+0.2247181800194084644318,0.9585652919486165046692,0.1503968122415244579315,\
+0.0216291621327400207520,0.0688429796136915683746,0.9950710041448473930359,\
+0.7568672685883939266205,0.6163959559053182601929,0.0865804632194340229034,\
+0.5165374809876084327698,0.1916800136677920818329,0.2940570451319217681885,\
+0.3528221980668604373932,0.1317937439307570457458,0.0549608371220529079437,\
+0.929352553561329841614,0.737892795819789171219,0.7509917514398694038391,\
+0.6889848816208541393280,0.8865169286727905273438,0.6891661235131323337555,\
+0.8677108911797404289246,0.7947537912987172603607,0.2496256213635206222534,\
+0.3935408894903957843781,0.7297343472018837928772,0.7888072351925075054169,\
+0.113488640636205673218,0.4145256043411791324615,0.6172473421320319175720,\
+0.7440188056789338588715,0.9038409832864999771118,0.3976829168386757373810,\
+0.9472072543576359748840,0.2581262919120490550995,0.1955799385905265808105,\
+0.9381833248771727085114,0.4226356102153658866882,0.0937463282607495784760,\
+0.9977992679923772811890,0.2042182614095509052277,0.9455819511786103248596,\
+0.9336234177462756633759,0.9743702597916126251221,0.4100225553847849369049,\
+0.5125095760449767112732,0.0948633304797112941742,0.5688196588307619094849,\
+0.7322562676854431629181,0.8108531581237912178040,0.5459008770994842052460,\
+0.5022544711828231811523,0.7634959020651876926422,0.7354982374235987663269,\
+0.0699520572088658809662,0.6130836438387632369995,0.0965849910862743854523,\
+0.5439325878396630287170,0.9187005828134715557098,0.5072866193950176239014,\
+0.1335940570570528507233,0.8688194593414664268494,0.7999687767587602138519,\
+0.9879787657409906387329,0.7131399479694664478302,0.3067426951602101325989,\
+0.5431228461675345897675,0.7330236807465553283691,0.6498145484365522861481,\
+0.8018737239763140678406,0.2859625308774411678314,0.1894423719495534896851,\
+0.7794728656299412250519,0.5433104271069169044495,0.5268451268784701824188,\
+0.1533693112432956695557,0.6041304902173578739166,0.5948378806933760643005,\
+0.8857938847504556179047,0.0043053645640611648560,0.1302204323001205921173,\
+0.9758609728887677192688,0.9183407831005752086639,0.0624175965785980224609,\
+0.9939593323506414890289,0.4122588960453867912292,0.8258536770008504390717,\
+0.0376359503716230392456,0.4675730471499264240265,0.4759115139022469520569,\
+0.4060978214256465435028,0.0392968021333217620850,0.4401316107250750064850,\
+0.3316476037725806236267,0.0877817696891725063324,0.1150833908468484878540,\
+0.9667435702867805957794,0.8103649737313389778137,0.3928376468829810619354,\
+0.7880131229758262634277,0.4798596971668303012848,0.0270724548026919364929,\
+0.6701857983134686946869,0.5602217521518468856812,0.2564360727556049823761,\
+0.2626037681475281715393,0.4447338129393756389618,0.8522944338619709014893,\
+0.2347065494395792484283,0.3277532672509551048279,0.2253599218092858791351,\
+0.3468936551362276077271,0.7743145865388214588165,0.1285835551097989082336,\
+0.1156307714991271495819,0.2054340392351150512695,0.4535544612444937229156,\
+0.6516549764201045036316,0.0710035725496709346771,0.1265540253371000289917,\
+0.4974718545563519001007,0.0879269847646355628967,0.1462626229040324687958,\
+0.715134423226118087769,0.9305738122202455997467}
+
+#define RESULT {-0.4403116143527589509965,-0.0342434820791150257291,-0.2803767278195338774616,\
+-0.1031133008775467624352,-0.1854094044230032989340,-0.6059621125162122368124,\
+-0.6262320581190643498104,-0.1402438085490333719019,-0.0820635291772953134881,\
+-0.36777276786493884320,-0.3134630685689411833117,-0.2273861217978072890578,\
+-1.0225582527058232340522,-0.8674701161846418706602,-0.0035997313073961446743,\
+-0.1418884411982046234169,-1.9368965147824408479238,-1.67385079107519252339,\
+-0.8168077101761380687250,-0.0378494781542935143648,-0.3499576811822522337536,\
+-0.2314925521326422763746,-0.7252022951018919361132,-0.3771106732935153860176,\
+-0.563756133479260124197,-0.1211564255577455423429,-0.0278489249618575039624,\
+-1.232096878737263700998,-0.2922725485247071319783,-0.2982853166297994018663,\
+-0.1088207991305185085018,-0.1638878070544614040660,-0.8596249106224531644216,\
+-0.4305820385081238765856,-0.1960948286770107240606,-0.3043718069355866306935,\
+-0.5237387977162476504489,-0.6211888520577832917269,-0.2504040742204550751282,\
+-0.4924088126148459254594,-0.9656814270628060192792,-0.7733273106340565750116,\
+-0.0828201974893169740044,-0.3077336078949636233304,-0.1043711586288077197704,\
+-0.169903488488286208424,-1.5872267891461315780788,-0.444397197348344763501,\
+-0.4638927555552059822652,-0.5491269570890252582629,-0.8383746383028719550978,\
+-1.1179443080462672099884,-0.2822910967808678894819,-0.1730340307038858715938,\
+-1.222287370403489781268,-0.1386335619293298515586,-0.6527367931436293124747,\
+-0.5055267858124582458501,-0.3530377711634032356081,-0.3997343937184095197246,\
+-0.8779205166514928437849,-0.0545232289425809854566,-0.2631835629983380608898,\
+-0.535030892349513287343,-0.1112675973936914503026,-0.4743541340498391156721,\
+-0.0900481524037324287946,-0.3360881534089125155518,-0.1612699269064814533436,\
+-0.0155158452113394202537,-0.0856369369482974790442,-0.5524687820481442024345,\
+-0.0055369441569604379433,-0.5313581662832899121796,-0.3133985301037985338191,\
+-0.6483617911201521311071,-0.0183783001388101094320,-0.8227613688014733250853,\
+-1.664960303869991609105,-1.1621403411076904887977,-0.0021459286933866758389,\
+-0.1209802758154948920666,-0.2101402192945755753595,-1.0625800949711647902518,\
+-0.2868981597290535812128,-0.7174231683233029954749,-0.5315684111428640168384,\
+-0.4524440987253919854716,-0.8801052046193623690229,-1.259946661051862371039,\
+-0.0318195034221232311844,-0.1320067297295647867905,-0.1243648330674980567734,\
+-0.1617903077014812007750,-0.05231296682112057672,-0.1616760787761070405910,\
+-0.0616249514134949369359,-0.0997673916469928034889,-0.6027108410820325445911,\
+-0.4050101371105858660826,-0.1368352118545152207307,-0.1030291145605434360855,\
+-0.9450476059237150616710,-0.3824486388636323952461,-0.2095407714646851937701,\
+-0.1284160871700188444322,-0.0439079701395359081606,-0.4004630644881080336894,\
+-0.0235549844857810899978,-0.5881677573670978098619,-0.7086756945701918608549,\
+-0.0277122904020632616906,-0.3740339131793987692554,-1.0280457331716890134743,\
+-0.0009568190047624330983,-0.6899054254479447534365,-0.0243008259915241074667,\
+-0.0298282635710438621957,-0.0112759802587220972492,-0.38719225203706036931,\
+-0.2902980155704742437628,-1.0229016321238477704725,-0.2450254024783888040506,\
+-0.1353369023236559165468,-0.0910577874542803367142,-0.2628862079121005446147,\
+-0.2990761883748661031923,-0.1171932896033063276064,-0.1334183636952847862300,\
+-1.1551995088873641126526,-0.2124802700500995344957,-1.0150903559327661973555,\
+-0.2644549211536121879895,-0.0368260081130531435889,-0.2947465928364439435860,\
+-0.8742128610575919944736,-0.0610704605568186745246,-0.0969269634405601765437,\
+-0.0052523894413354609012,-0.1468252349912699539214,-0.5132257708646462690538,\
+-0.2651019284616369375840,-0.1348819950022109859233,-0.1872105696377188988055,\
+-0.0958940173743543372575,-0.5436908679171403857566,-0.7225228772557727996428,\
+-0.1081989985152894545584,-0.2649519599919711310143,-0.2783170326568494279407,\
+-0.8142615327667455105143,-0.2188692450535288658298,-0.2256013823621523806118,\
+-0.0526673222769318341574,-2.3659900680299497111037,-0.8853208672348196195401,\
+-0.0106120501693722224523,-0.0369961284323869002422,-1.2046929580793401814987,\
+-0.0026313843119589821508,-0.3848299640358096573856,-0.0830968932369530594029,\
+-1.424397112818484689711,-0.3301505313242010797303,-0.3224737880280506563402,\
+-0.3913693403433980977368,-1.4056427898881791449526,-0.3564174388206851062932,\
+-0.4793231362281260010683,-1.0565956679830132980413,-0.9389873504280431548707,\
+-0.0146887076937459951781,-0.0913193386792951061759,-0.4057868990671495423861,\
+-0.1034665500376885233225,-0.3188857244019617231956,-1.5674723626658799702227,\
+-0.1738047793945742269806,-0.2516400325061770026913,-0.5910208828319416518582,\
+-0.5806990464341352797817,-0.3518998500546973717817,-0.0694103478250598926458,\
+-0.6294747913311795617375,-0.4844529702954271654924,-0.6471233167047535372873,\
+-0.4598036435552441125729,-0.1110825594195994081570,-0.8908145709277390800196,\
+-0.9369265766947033613476,-0.6873275946862682506122,-0.3433705568996603396670,\
+-0.1859822838651877530136,-1.1487197991742361669054,-0.8977240365674604705148,\
+-0.3032314852833657981002,-1.055877819626311886481,-0.8348666427090224440022,\
+-0.1456123165510203598672,-0.0312491733461308825170}
+
+#define ZSOURCER {0.3140813848003745079041,0.5769402063451707363129,0.1306138429790735244751,\
+0.0478980806656181812286,0.4500174494460225105286,0.0384718659333884716034,\
+0.483350999653339385986,0.2981918179430067539215,0.7112689120694994926453,\
+0.9268360524438321590424,0.9477838929742574691772,0.1729496796615421772003,\
+0.2750928336754441261292,0.0044281478039920330048,0.0611358620226383209229,\
+0.1950612799264490604401,0.3789803450927138328552,0.2549188635312020778656,\
+0.1764185149222612380981,0.6008180272765457630157,0.3703392641618847846985,\
+0.2908470141701400279999,0.5384815335273742675781,0.8090293356217443943024,\
+0.9260985879227519035339,0.1576966657303273677826,0.9518593531101942062378,\
+0.2709982101805508136749,0.1609848598018288612366,0.8782086591236293315887,\
+0.5091647170484066009521,0.7951062084175646305084,0.8432204117998480796814,\
+0.5806765086017549037933,0.3487791065126657485962,0.9397577759809792041779,\
+0.4363934816792607307434,0.5549766751937568187714,0.9105900451540946960449,\
+0.5684339576400816440582,0.1862502051517367362976,0.0800832151435315608978,\
+0.6585252787917852401733,0.1606054832227528095245,0.9711584830656647682190,\
+0.3668168033473193645477,0.7386338301002979278564,0.9722552285529673099518,\
+0.1349937235936522483826,0.4595781317912042140961,0.5414639282971620559692,\
+0.6397600513882935047150,0.0211964594200253486633,0.4408156829886138439178,\
+0.6374878138303756713867,0.3208820023573935031891,0.4267518399283289909363,\
+0.7819778784178197383881,0.0543234180659055709839,0.9666189108975231647491,\
+0.6948409983888268470764,0.1846996019594371318817,0.3645029179751873016357,\
+0.8176643461920320987701,0.664914294146001338959,0.7559730983339250087738,\
+0.5525381658226251602173,0.7192269531078636646271,0.1989364298060536384583,\
+0.8610532465390861034393,0.1300329938530921936035,0.347959163133054971695,\
+0.5025534434244036674500,0.4978472082875669002533,0.4675923939794301986694,\
+0.9447452803142368793488,0.9599315756931900978088,0.5365384514443576335907,\
+0.8122785724699497222900,0.6470989421941339969635,0.7010180121287703514099,\
+0.6681951484642922878265,0.9593638796359300613403,0.0149199557490646839142,\
+0.6199735002592206001282,0.4061129498295485973358,0.0471306145191192626953,\
+0.8433605083264410495758,0.0635268418118357658386,0.9836421324871480464935,\
+0.4434677045792341232300,0.8565507535822689533234,0.9080012599006295204163,\
+0.4922491232864558696747,0.1930142603814601898193,0.3759337724186480045319,\
+0.2437626412138342857361,0.1035623974166810512543,0.9936000052839517593384,\
+0.5569599089212715625763,0.3858396532014012336731,0.7191527518443763256073,\
+0.1707325801253318786621,0.2878904812969267368317,0.4294657362625002861023,\
+0.8917979537509381771088,0.6188817229121923446655,0.3444608678109943866730,\
+0.0692929709330201148987,0.3619817639701068401337,0.1783103235065937042236,\
+0.8941529677249491214752,0.9010278200730681419373,0.0533773354254662990570,\
+0.4162023533135652542114,0.9438270372338593006134,0.9242387460544705390930,\
+0.8710649865679442882538,0.2808376699686050415039,0.8244629004038870334625,\
+0.4650857029482722282410,0.1462343498133122920990,0.5975636970251798629761,\
+0.3067605351097881793976,0.2377215037122368812561,0.0711208949796855449677,\
+0.8753139786422252655029,0.4413500339724123477936,0.7631150623783469200134,\
+0.9679268277250230312347,0.3924236092716455459595,0.717360940296202898026,\
+0.8640465112403035163879,0.7354763629846274852753,0.0304915383458137512207,\
+0.6331009590066969394684,0.4550241930410265922546,0.3173553734086453914642,\
+0.8250397499650716781616,0.2725940425880253314972,0.3458735281601548194885,\
+0.5352854127995669841766,0.7017193175852298736572,0.9817278520204126834869,\
+0.2777477568015456199646,0.1314821145497262477875,0.366813333705067634583,\
+0.7377605927176773548126,0.9103105561807751655579,0.3637479650788009166718,\
+0.8207867145538330078125,0.3059372254647314548492,0.9788405327126383781433,\
+0.9970494522713124752045,0.4636328797787427902222,0.7769650523550808429718,\
+0.3400075891986489295959,0.0353285889141261577606,0.2607673071324825286865,\
+0.5790986777283251285553,0.1250711670145392417908,0.0372988111339509487152,\
+0.9382179621607065200806,0.5585843441076576709747,0.7192503632977604866028,\
+0.3599752518348395824432,0.6758626028895378112793,0.2222136431373655796051,\
+0.7860159231349825859070,0.1736893891356885433197,0.2674629595130681991577,\
+0.7357366015203297138214,0.0550541067495942115784,0.5923380698077380657196,\
+0.2162457890808582305908,0.7718841419555246829987,0.0926524316892027854919,\
+0.7626169077120721340179,0.7347808051854372024536,0.8017499190755188465118,\
+0.7732572900131344795227,0.2559880572371184825897,0.1179054826498031616,\
+0.9232815303839743137360,0.6709534404799342155457,0.6071323617361485958099,\
+0.4574467372149229049683,0.8206311021931469440460,0.0896153757348656654358,\
+0.3426358769647777080536,0.1674894802272319793701,0.9481152505613863468170,\
+0.9504805644974112510681,0.3436607695184648036957,0.2889420483261346817017,\
+0.5325344172306358814240,0.2558945687487721443176,0.8863505902700126171112,\
+0.0421485081315040588379,0.4876015805639326572418}
+
+#define ZSOURCEI {0.347978035919368267059,0.2037199228070676326752,0.5962978359311819076538,\
+0.8342303414829075336456,0.6809655660763382911682,0.9127784068696200847626,\
+0.5243799723684787750244,0.7204323844052851200104,0.3259664541110396385193,\
+0.1506391367875039577484,0.9124387521296739578247,0.6345743131823837757111,\
+0.9268973069265484809875,0.7633614349178969860077,0.5918717086315155029297,\
+0.9057438620366156101227,0.3263365356251597404480,0.3912780000828206539154,\
+0.4635267537087202072144,0.0849754814989864826202,0.5800507226958870887756,\
+0.7945564310066401958466,0.3823457323014736175537,0.3010852993465960025787,\
+0.5789428642019629478455,0.2627451247535645961761,0.5713048521429300308228,\
+0.1848654565401375293732,0.9971724869683384895325,0.4520535501651465892792,\
+0.0334019884467124938965,0.4553878181613981723785,0.7851976407691836357117,\
+0.4941168962977826595306,0.9304408635944128036499,0.7621670593507587909698,\
+0.9264887655153870582581,0.7199950958602130413055,0.3973621018230915069580,\
+0.8769331262446939945221,0.6766644334420561790466,0.8431562236510217189789,\
+0.7608711589127779006958,0.8287630719132721424103,0.0037989662960171699524,\
+0.9451942699961364269257,0.6311131268739700317383,0.0763222672976553440094,\
+0.4486519275233149528503,0.1080312891863286495209,0.8351444136351346969604,\
+0.3109649871475994586945,0.1235694894567131996155,0.0363539229147136211395,\
+0.6609512977302074432373,0.9844443709589540958405,0.0688076755031943321228,\
+0.5140342987142503261566,0.3807653579860925674438,0.1549817589111626148224,\
+0.6850274773314595222473,0.0382853033952414989471,0.5224257782101631164551,\
+0.7454454028047621250153,0.4607118470594286918640,0.4753002314828336238861,\
+0.8575385268777608871460,0.8073885519988834857941,0.7132545644417405128479,\
+0.0811268086545169353485,0.5751824118196964263916,0.884696914348751306534,\
+0.5624709790572524070740,0.7315255901776254177094,0.6099120099097490310669,\
+0.0705954921431839466095,0.8552806274965405464172,0.7045627343468368053436,\
+0.5928074717521667480469,0.8517647930420935153961,0.2603117255493998527527,\
+0.8596871509216725826263,0.3943212013691663742065,0.3333164160139858722687,\
+0.2511775353923439979553,0.5570420245639979839325,0.7276714108884334564209,\
+0.9383780122734606266022,0.1971746077761054039001,0.1607607132755219936371,\
+0.7815325502306222915649,0.1760376212187111377716,0.2801528992131352424622,\
+0.4699970218352973461151,0.3507726117968559265137,0.5713973813690245151520,\
+0.4563077641651034355164,0.9214398502372205257416,0.4339873101562261581421,\
+0.3514866163022816181183,0.1816438222303986549377,0.9070622171275317668915,\
+0.7665811367332935333252,0.9807842955924570560455,0.1198607003316283226013,\
+0.0508546582423150539398,0.2581452894955873489380,0.1401008707471191883087,\
+0.5514106499031186103821,0.7882929998449981212616,0.8028824776411056518555,\
+0.2425694861449301242828,0.7024780390784144401550,0.0922905071638524532318,\
+0.4318286012858152389526,0.0804965649731457233429,0.7126307198777794837952,\
+0.6893844078294932842255,0.2756213061511516571045,0.6968217701651155948639,\
+0.4598932703956961631775,0.6099067903123795986176,0.3065654132515192031860,\
+0.0749373403377830982208,0.9619921119883656501770,0.4158898773603141307831,\
+0.3287452235817909240723,0.7406168007291853427887,0.5725225014612078666687,\
+0.9504556744359433650970,0.1849336978048086166382,0.8698030491359531879425,\
+0.6907873982563614845276,0.9524399931542575359344,0.6490485109388828277588,\
+0.9960058168508112430573,0.2040582066401839256287,0.3800008497200906276703,\
+0.9729049820452928543091,0.9110585046000778675079,0.3810073928907513618469,\
+0.7869612383656203746796,0.5560158789157867431641,0.8529843934811651706696,\
+0.4350629774853587150574,0.5956362797878682613373,0.7071880977600812911987,\
+0.5747222309000790119171,0.4764349022880196571350,0.6098947445861995220184,\
+0.9666662178933620452881,0.3874611915089190006256,0.0715632727369666099548,\
+0.6122049516998231410980,0.9575729314237833023071,0.7723352131433784961700,\
+0.1287384750321507453918,0.3884150418452918529510,0.2353963479399681091309,\
+0.6542267077602446079254,0.3286431683227419853210,0.024017625954002141953,\
+0.1042741741985082626343,0.9314296473748981952667,0.8185661518946290016174,\
+0.8156488086096942424774,0.8688247688114643096924,0.3549220249988138675690,\
+0.3890381073579192161560,0.6415715864859521389008,0.4902750719338655471802,\
+0.3509976905770599842072,0.8516392158344388008118,0.1348936217837035655975,\
+0.1156354099512100219727,0.8810075619257986545563,0.8367286501452326774597,\
+0.5032693906687200069427,0.4486711751669645309448,0.9319602106697857379913,\
+0.7298459419980645179749,0.3388367067091166973114,0.4314213804900646209717,\
+0.7317318231798708438873,0.9655342241749167442322,0.2621376193128526210785,\
+0.2050140891224145889282,0.2826355365104973316193,0.3973353477194905281067,\
+0.7437736871652305126190,0.8185287192463874816895,0.3071001493372023105621,\
+0.9627068741247057914734,0.9475456266663968563080,0.6546552237123250961304,\
+0.1992082078941166400909,0.3616109425202012062073,0.9388273353688418865204,\
+0.0409001447260379791260,0.0758434669114649295807}
+#define ZRESULTR {-0.3290495609832542744932,-0.2133542315965856750459,-0.2143604594080804615075,\
+-0.0779993516667897290873,-0.0881879704812010417614,-0.0392492308819259588804,\
+-0.1468107357971605020364,-0.1080692186653561120968,-0.1065683791205834785032,\
+-0.0273353392421778126908,0.1191283090947614642374,-0.1819586746730034731989,\
+-0.0146372370113581271034,-0.1172624775653131612430,-0.2254678765990359434745,\
+-0.0331498720885635145272,-0.3009243692795003366491,-0.3306899894153413344000,\
+-0.3045496213459356615871,-0.2169562594261553178931,-0.1622895628928226752219,\
+-0.0725702069682954281626,-0.1801817524356017496956,-0.0638691649231626773497,\
+0.0382899018433042123699,-0.5136597137709293381391,0.0453803311793120195405,\
+-0.4840630563482673509590,0.0043573655682720771609,-0.0053634673446913633602,\
+-0.2922091972771523882280,-0.0379710404096835762999,0.0615264246077369611476,\
+-0.1177861239572535467790,-0.0027606815124210713590,0.0827769612970807588948,\
+0.0103506258196890514600,-0.0414069352257771042258,-0.0028258322392286264017,\
+0.0191369442490108253307,-0.1537687128497234601010,-0.0721417928417731474378,\
+0.0027147719270748577915,-0.0735641860746090447964,-0.0127065691399337477724,\
+0.0059853142299196512854,-0.0125407536616094668347,-0.0108856950196654141821,\
+-0.3292710076447024625246,-0.3259617043131136093770,-0.0020400145634434829929,\
+-0.1479281118584361010004,-0.9017915683260822046208,-0.3542710907015680921184,\
+-0.0370225124342607042616,0.0151168335656557354524,-0.3642515556722971115100,\
+-0.0288172015063716119299,-0.4149670396818516682202,-0.0092330629379009203361,\
+-0.0106663219864977006773,-0.7243988137694490347940,-0.1958487567186202316094,\
+0.0439375096643265586338,-0.0920894961670395001407,-0.0491603497010221490715,\
+0.0086566739889077232162,0.0339376585197796801219,-0.1304877971769988764805,\
+-0.0630508696074615210270,-0.2293705604967442579500,-0.0219724307162800849835,\
+-0.1224692215475379208911,-0.0531242407432285373980,-0.1143402977644937118518,\
+-0.0234761498308886963626,0.1091329563146860859302,-0.0527638328353893792944,\
+0.0024222192478416683901,0.0292586204417139908451,-0.1262209046057715389200,\
+0.0369593428671423362974,0.0158795483132631205792,-0.4767086450021467136651,\
+-0.1746242034102962470410,-0.1615510250958859250758,-0.1371556526467043735096,\
+0.100945647205856317563,-0.6837031045647332661019,-0.0014388289408900174424,\
+-0.0464403701173962263349,-0.0582634176897608505041,-0.0221676835116708763340,\
+-0.1671127243957707675381,-0.3975387523773417086659,-0.1649600652341057516193,\
+-0.2862269227110153524407,-0.0328071976308584797866,0.0351271945689521844503,\
+-0.1813816670814733522654,-0.3701233874684188296378,0.0635430885883380841550,\
+-0.1049291365916461549190,0.0095204817066643597501,-0.3507837205033069172266,\
+-0.0490285470477662618793,-0.1735609734951024107907,-0.4296178908501777637952,\
+-0.2551225266448440276434,-0.0617650291008570578866,-0.0848934350447099472792,\
+-0.0331679244708535381214,0.0578595820981543801365,-0.9721832280456300656724,\
+-0.2220295759617292030708,-0.0235337862370093645059,0.0670980880683051256197,\
+0.0456584724702859962031,-0.4050627643604459149351,0.0332188086620539904659,\
+-0.1843762947107071559216,-0.2025989526775586746510,-0.1728805677287464093173,\
+-0.5006140240740283298138,-0.0039574496715991209703,-0.3747624646211847876387,\
+-0.0291826804365620078030,-0.0644170285495881678184,-0.020449093098134307755,\
+0.1324382164856784949158,-0.3626939268757052303727,0.0521008032215845851010,\
+0.0438487661958249438920,0.0803943913989621228300,-0.1872441239933456957889,\
+0.0719513030064179159861,-0.3021736609622284186472,-0.30531498564977166410,\
+0.1057250974802272092123,-0.0218353036625967035500,-0.2885450025056992551242,\
+-0.0214746210927109354438,-0.0480309906528200089570,0.1141195620733326948626,\
+-0.2872136450436454380153,-0.2146876003507041108520,-0.0987270319138862650910,\
+-0.0290961734854755134372,0.0117611124704010052561,-0.1486623273058947924952,\
+0.1031611720947231414236,-0.3065510644941032425415,-0.0081304707590571338727,\
+0.0681862604059072646701,0.0269042920576901857521,0.0396225366257938194092,\
+-0.4394191704520844510284,-0.4089149013992912085058,-0.4543230131010723149565,\
+-0.0586330634787295829069,-0.4539044694277152292017,-1.3529821933222951901854,\
+-0.0250304307835438853702,0.0358632689692895620381,0.0372933340583203806751,\
+-0.0498532689013882687745,0.0416880085188151769393,-0.3780489142107763544942,\
+-0.0569883570641069869822,-0.1773959401592627993516,-0.2529880791121558170076,\
+-0.0887499827789579032178,-0.0688387899649425538673,-0.2164511122923038211052,\
+-0.6104407141161303229637,0.0686738036393797490753,-0.0747689959340766124862,\
+-0.0391919696178445325918,-0.0650297590330818214843,0.0896829227334642459235,\
+0.0266548623220910323173,-0.3719537274000056514822,-0.3494566550303903618158,\
+0.0711759971067136287814,0.0703223378863101489245,-0.1795974324279027423135,\
+-0.2999138709331988783546,-0.0615107548910408530318,-0.3900685687486248887090,\
+-0.0867686652200203717422,-0.0780592259581650849132,-0.0014744231840779402701,\
+0.1312513908465361422984,0.0034351924950619906404,-0.1453391630458231997824,\
+-0.2452127202368474256922,-0.3536012485332969967899,0.1109696410995756055140,\
+-1.2311333463434968038541,-0.3067437997278838479609}
+
+#define ZRESULTI {0.3633100487665162359185,0.1474158063550214115001,0.5885387980009104680335,\
+0.6572801175741773693773,0.4285748579481841735728,0.6638943219025983388804,\
+0.3587662857455625187164,0.5117548829580961244901,0.1866273414364414962030,\
+0.0699742348195561969515,0.3328432735187898949825,0.5666303041879406920955,\
+0.5568906423318142895340,0.6796689265398294654830,0.6374873742133734255688,\
+0.5900654029247031084893,0.3087389836998947201252,0.4314129861802953325167,\
+0.5242475923033280693630,0.0610188495832547500575,0.4354133593463934692736,\
+0.5297939421633884871099,0.2681487567918271475165,0.1547283383009969981448,\
+0.2426408568390991671304,0.4474267034848418145287,0.2347646885151994655683,\
+0.2599927875089523832131,0.6126748695156737367640,0.2064522777477181547656,\
+0.0284496210471740680614,0.2258908609011123780341,0.3256261235849059465508,\
+0.3061930542060117277359,0.5264317995551247575392,0.2959401807089209746060,\
+0.4910139616058311062829,0.3969936639609323303368,0.1786986723204381510843,\
+0.4324195385396965018998,0.5655382812237433887148,0.6410621383118232374798,\
+0.3723548821340513237388,0.5990569422252302045351,0.0016988593650344200551,\
+0.5214150467894975715666,0.3070731387905711318176,0.0340224494974534080738,\
+0.5552566039785586937683,0.1002676097220635414997,0.4323764448196805720848,\
+0.1964911590800132445978,0.6084096209152420886568,0.0357352532897105071297,\
+0.3489411661881484660874,0.5453449961026168857359,0.0694263094757205379004,\
+0.2525534710601468613156,0.6206431406119353733075,0.0690444796836073154678,\
+0.3380054707664132407352,0.0887652999217624361084,0.4176207649503542729263,\
+0.3210430331362784106553,0.2631553422310267675854,0.2437584071473132274477,\
+0.4336070270779164292918,0.3661466421575780838538,0.5640596254022186561983,\
+0.0407979674024822880352,0.5856292520126130662916,0.5194472182924043668351,\
+0.3655014659417109568196,0.4226713256320973055580,0.3981267146771410581074,\
+0.0323921796076454895918,0.3160837480759546291864,0.3995349584181833169083,\
+0.273802063686018282151,0.4000313483957886884212,0.1544145556607701974539,\
+0.3952425864610250583198,0.1693632158699578948990,0.6627611949754427245196,\
+0.167173661907591114550,0.4086002639927426849376,0.6540985540228395622719,\
+0.3642324586236761474467,0.5468253741606181606016,0.0703565244510996889993,\
+0.4580361055958868110594,0.0880301024358387529389,0.1299718766609879727625,\
+0.3310527463405003034680,0.4637212462953029801227,0.4294623340021747059936,\
+0.4691072369162453403746,0.6335809675670333040998,0.1788460444456893838616,\
+0.2444904068796305007805,0.1910877540250672246280,0.3910553307022346936073,\
+0.5870156732892560791370,0.5581921905883382439839,0.1182006499862187365313,\
+0.0247387920792678586701,0.1716217468036307647328,0.1677637778431290971337,\
+0.6278971871585069530752,0.4952349292223454657602,0.5872771345770251283369,\
+0.1150482129328096875254,0.2875910738555041423758,0.4544626742179224132556,\
+0.3490957130610289338435,0.0369504335660946620079,0.2852598765351710419225,\
+0.2907565249995825995555,0.3370230396263981242910,0.3047404031476670938083,\
+0.33865617237418182972,0.5799887649794799315828,0.2058615017488183152050,\
+0.1040542236456874769512,0.5769758315245528956794,0.6086314545246159779524,\
+0.1560306547104348962041,0.4487914762887483810516,0.2795367938070804081363,\
+0.3371389774796904048593,0.1912601282140735381443,0.3826791464254168939618,\
+0.2928983745329591936724,0.396613573038569422469,0.6618005209348483131038,\
+0.4362846209517689533008,0.1830850765515834310815,0.3800035453193333911948,\
+0.376730811842592550054,0.5559265822426159298075,0.3620694326893729719785,\
+0.4227803813529266152571,0.2910061310239929199817,0.3106691139011089619615,\
+0.435429394944240932830,0.5878341337089509899272,0.4743827280867594087255,\
+0.2874204018606083543830,0.2094051712928121644630,0.4486348592544623370415,\
+0.3764598089790200385885,0.3919214486831592569871,0.0316949858971651426964,\
+0.2391495340218968146395,0.486361470580685850695,0.3397962718388538583270,\
+0.1571941632596165761004,0.6427949822892967679522,0.3189060883322832884446,\
+0.3675164927613087662017,0.5242598134907254792125,0.2484566158604845087510,\
+0.0480705017921116625756,0.4475807306655288364539,0.3691029449284471408710,\
+0.5016842301167260265160,0.3950665170276177473596,0.4392508841037601752255,\
+0.1996012963954646446396,0.5673662159944875549300,0.4652972123009525562409,\
+0.1933199899606511118488,0.6541522766180654091528,0.0972438028822732308809,\
+0.2132613189014408716648,0.3697245333311866000159,0.6342931063454819717862,\
+0.2533327612355570357394,0.2380763598053285134970,0.3736506508141989035821,\
+0.3285546506249918952136,0.4011970200297387822985,0.5663267577447791412126,\
+0.2910519034072798771895,0.4184422115344140213899,0.1770121129168618634431,\
+0.1829818983774834095790,0.1440504268816359956240,0.5858489671891115024849,\
+0.4947061064648006212252,0.5945317434266266243270,0.1360392849738219778200,\
+0.3438694289300276984989,0.5310838098864226752838,0.5016736389654107286518,\
+0.1554601034674029658156,0.4147310296690985831347,0.3535773010333992383281,\
+0.3345663906426585842979,0.0670148638928397127890}
+
+
+/* FIXME : assert à 1e-14 */
+
+void dlog10sTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dlog10s(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zlog10sTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zlog10s(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dlog10aTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dlog10a(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+}
+
+void zlog10aTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ zlog10a(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+int testLog10(void) {
+ printf("\n>>>> Double 10-Based Logarithm Tests\n");
+ dlog10sTest();
+ zlog10sTest();
+ dlog10aTest();
+ zlog10aTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLog10() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/testFloatLog10.c b/2.3-1/src/c/elementaryFunctions/log10/testFloatLog10.c
new file mode 100644
index 00000000..be214484
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/testFloatLog10.c
@@ -0,0 +1,495 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testLog10.h"
+
+#define SOURCE {0.3628176329657435417175f,0.924179898109287023544f,0.5243524145334959030151f,\
+0.7886543427594006061554f,0.6525151440873742103577f,0.2477638195268809795380f,\
+0.2364655844867229461670f,0.7240293831564486026764f,0.8278210600838065147400f,\
+0.4287728047929704189301f,0.4858888480812311172485f,0.5923984018154442310333f,\
+0.0949383648112416267395f,0.1356843891553580760956f,0.9917455688118934631348f,\
+0.7212927364744246006012f,0.0115638775750994682312f,0.0211908905766904354095f,\
+0.1524727698415517807007f,0.9165380974300205707550f,0.4467271203175187110901f,\
+0.5868234331719577312469f,0.1882771886885166168213f,0.4196520284749567508698f,\
+0.2730510598048567771912f,0.7565603456459939479828f,0.9378882069140672683716f,\
+0.0586007428355515003204f,0.5101847248151898384094f,0.5031699347309768199921f,\
+0.7783576548099517822266f,0.6856653341092169284821f,0.1381576983258128166199f,\
+0.371037633623927831650f,0.6366564910858869552612f,0.4961673622019588947296f,\
+0.2994064847007393836975f,0.2392275254242122173309f,0.5618183575570583343506f,\
+0.3218038142658770084381f,0.1082227518782019615173f,0.1685282415710389614105f,\
+0.8263800088316202163696f,0.4923414406366646289825f,0.7863734485581517219543f,\
+0.6762332352809607982635f,0.0258686169981956481934f,0.3594204657711088657379f,\
+0.3436427963897585868835f,0.2824054299853742122650f,0.1450859513133764266968f,\
+0.0762176741845905780792f,0.5220461571589112281799f,0.6713762427680194377899f,\
+0.0599394328892230987549f,0.7267188713885843753815f,0.2224657749757170677185f,\
+0.3122289828024804592133f,0.4435700643807649612427f,0.3983507198281586170197f,\
+0.1324583934620022773743f,0.8820166247896850109100f,0.5455272346735000610352f,\
+0.2917219498194754123688f,0.7739847479388117790222f,0.3354639573954045772552f,\
+0.8127403985708951950073f,0.4612239454872906208038f,0.6898109326139092445374f,\
+0.9649041066877543926239f,0.8210376314818859100342f,0.2802407057024538516998f,\
+0.9873316427692770957947f,0.294199434574693441391f,0.4859610591083765029907f,\
+0.2247181800194084644318f,0.9585652919486165046692f,0.1503968122415244579315f,\
+0.0216291621327400207520f,0.0688429796136915683746f,0.9950710041448473930359f,\
+0.7568672685883939266205f,0.6163959559053182601929f,0.0865804632194340229034f,\
+0.5165374809876084327698f,0.1916800136677920818329f,0.2940570451319217681885f,\
+0.3528221980668604373932f,0.1317937439307570457458f,0.0549608371220529079437f,\
+0.929352553561329841614f,0.737892795819789171219f,0.7509917514398694038391f,\
+0.6889848816208541393280f,0.8865169286727905273438f,0.6891661235131323337555f,\
+0.8677108911797404289246f,0.7947537912987172603607f,0.2496256213635206222534f,\
+0.3935408894903957843781f,0.7297343472018837928772f,0.7888072351925075054169f,\
+0.113488640636205673218f,0.4145256043411791324615f,0.6172473421320319175720f,\
+0.7440188056789338588715f,0.9038409832864999771118f,0.3976829168386757373810f,\
+0.9472072543576359748840f,0.2581262919120490550995f,0.1955799385905265808105f,\
+0.9381833248771727085114f,0.4226356102153658866882f,0.0937463282607495784760f,\
+0.9977992679923772811890f,0.2042182614095509052277f,0.9455819511786103248596f,\
+0.9336234177462756633759f,0.9743702597916126251221f,0.4100225553847849369049f,\
+0.5125095760449767112732f,0.0948633304797112941742f,0.5688196588307619094849f,\
+0.7322562676854431629181f,0.8108531581237912178040f,0.5459008770994842052460f,\
+0.5022544711828231811523f,0.7634959020651876926422f,0.7354982374235987663269f,\
+0.0699520572088658809662f,0.6130836438387632369995f,0.0965849910862743854523f,\
+0.5439325878396630287170f,0.9187005828134715557098f,0.5072866193950176239014f,\
+0.1335940570570528507233f,0.8688194593414664268494f,0.7999687767587602138519f,\
+0.9879787657409906387329f,0.7131399479694664478302f,0.3067426951602101325989f,\
+0.5431228461675345897675f,0.7330236807465553283691f,0.6498145484365522861481f,\
+0.8018737239763140678406f,0.2859625308774411678314f,0.1894423719495534896851f,\
+0.7794728656299412250519f,0.5433104271069169044495f,0.5268451268784701824188f,\
+0.1533693112432956695557f,0.6041304902173578739166f,0.5948378806933760643005f,\
+0.8857938847504556179047f,0.0043053645640611648560f,0.1302204323001205921173f,\
+0.9758609728887677192688f,0.9183407831005752086639f,0.0624175965785980224609f,\
+0.9939593323506414890289f,0.4122588960453867912292f,0.8258536770008504390717f,\
+0.0376359503716230392456f,0.4675730471499264240265f,0.4759115139022469520569f,\
+0.4060978214256465435028f,0.0392968021333217620850f,0.4401316107250750064850f,\
+0.3316476037725806236267f,0.0877817696891725063324f,0.1150833908468484878540f,\
+0.9667435702867805957794f,0.8103649737313389778137f,0.3928376468829810619354f,\
+0.7880131229758262634277f,0.4798596971668303012848f,0.0270724548026919364929f,\
+0.6701857983134686946869f,0.5602217521518468856812f,0.2564360727556049823761f,\
+0.2626037681475281715393f,0.4447338129393756389618f,0.8522944338619709014893f,\
+0.2347065494395792484283f,0.3277532672509551048279f,0.2253599218092858791351f,\
+0.3468936551362276077271f,0.7743145865388214588165f,0.1285835551097989082336f,\
+0.1156307714991271495819f,0.2054340392351150512695f,0.4535544612444937229156f,\
+0.6516549764201045036316f,0.0710035725496709346771f,0.1265540253371000289917f,\
+0.4974718545563519001007f,0.0879269847646355628967f,0.1462626229040324687958f,\
+0.715134423226118087769f,0.9305738122202455997467f}
+
+#define RESULT {-0.4403116143527589509965f,-0.0342434820791150257291f,-0.2803767278195338774616f,\
+-0.1031133008775467624352f,-0.1854094044230032989340f,-0.6059621125162122368124f,\
+-0.6262320581190643498104f,-0.1402438085490333719019f,-0.0820635291772953134881f,\
+-0.36777276786493884320f,-0.3134630685689411833117f,-0.2273861217978072890578f,\
+-1.0225582527058232340522f,-0.8674701161846418706602f,-0.0035997313073961446743f,\
+-0.1418884411982046234169f,-1.9368965147824408479238f,-1.67385079107519252339f,\
+-0.8168077101761380687250f,-0.0378494781542935143648f,-0.3499576811822522337536f,\
+-0.2314925521326422763746f,-0.7252022951018919361132f,-0.3771106732935153860176f,\
+-0.563756133479260124197f,-0.1211564255577455423429f,-0.0278489249618575039624f,\
+-1.232096878737263700998f,-0.2922725485247071319783f,-0.2982853166297994018663f,\
+-0.1088207991305185085018f,-0.1638878070544614040660f,-0.8596249106224531644216f,\
+-0.4305820385081238765856f,-0.1960948286770107240606f,-0.3043718069355866306935f,\
+-0.5237387977162476504489f,-0.6211888520577832917269f,-0.2504040742204550751282f,\
+-0.4924088126148459254594f,-0.9656814270628060192792f,-0.7733273106340565750116f,\
+-0.0828201974893169740044f,-0.3077336078949636233304f,-0.1043711586288077197704f,\
+-0.169903488488286208424f,-1.5872267891461315780788f,-0.444397197348344763501f,\
+-0.4638927555552059822652f,-0.5491269570890252582629f,-0.8383746383028719550978f,\
+-1.1179443080462672099884f,-0.2822910967808678894819f,-0.1730340307038858715938f,\
+-1.222287370403489781268f,-0.1386335619293298515586f,-0.6527367931436293124747f,\
+-0.5055267858124582458501f,-0.3530377711634032356081f,-0.3997343937184095197246f,\
+-0.8779205166514928437849f,-0.0545232289425809854566f,-0.2631835629983380608898f,\
+-0.535030892349513287343f,-0.1112675973936914503026f,-0.4743541340498391156721f,\
+-0.0900481524037324287946f,-0.3360881534089125155518f,-0.1612699269064814533436f,\
+-0.0155158452113394202537f,-0.0856369369482974790442f,-0.5524687820481442024345f,\
+-0.0055369441569604379433f,-0.5313581662832899121796f,-0.3133985301037985338191f,\
+-0.6483617911201521311071f,-0.0183783001388101094320f,-0.8227613688014733250853f,\
+-1.664960303869991609105f,-1.1621403411076904887977f,-0.0021459286933866758389f,\
+-0.1209802758154948920666f,-0.2101402192945755753595f,-1.0625800949711647902518f,\
+-0.2868981597290535812128f,-0.7174231683233029954749f,-0.5315684111428640168384f,\
+-0.4524440987253919854716f,-0.8801052046193623690229f,-1.259946661051862371039f,\
+-0.0318195034221232311844f,-0.1320067297295647867905f,-0.1243648330674980567734f,\
+-0.1617903077014812007750f,-0.05231296682112057672f,-0.1616760787761070405910f,\
+-0.0616249514134949369359f,-0.0997673916469928034889f,-0.6027108410820325445911f,\
+-0.4050101371105858660826f,-0.1368352118545152207307f,-0.1030291145605434360855f,\
+-0.9450476059237150616710f,-0.3824486388636323952461f,-0.2095407714646851937701f,\
+-0.1284160871700188444322f,-0.0439079701395359081606f,-0.4004630644881080336894f,\
+-0.0235549844857810899978f,-0.5881677573670978098619f,-0.7086756945701918608549f,\
+-0.0277122904020632616906f,-0.3740339131793987692554f,-1.0280457331716890134743f,\
+-0.0009568190047624330983f,-0.6899054254479447534365f,-0.0243008259915241074667f,\
+-0.0298282635710438621957f,-0.0112759802587220972492f,-0.38719225203706036931f,\
+-0.2902980155704742437628f,-1.0229016321238477704725f,-0.2450254024783888040506f,\
+-0.1353369023236559165468f,-0.0910577874542803367142f,-0.2628862079121005446147f,\
+-0.2990761883748661031923f,-0.1171932896033063276064f,-0.1334183636952847862300f,\
+-1.1551995088873641126526f,-0.2124802700500995344957f,-1.0150903559327661973555f,\
+-0.2644549211536121879895f,-0.0368260081130531435889f,-0.2947465928364439435860f,\
+-0.8742128610575919944736f,-0.0610704605568186745246f,-0.0969269634405601765437f,\
+-0.0052523894413354609012f,-0.1468252349912699539214f,-0.5132257708646462690538f,\
+-0.2651019284616369375840f,-0.1348819950022109859233f,-0.1872105696377188988055f,\
+-0.0958940173743543372575f,-0.5436908679171403857566f,-0.7225228772557727996428f,\
+-0.1081989985152894545584f,-0.2649519599919711310143f,-0.2783170326568494279407f,\
+-0.8142615327667455105143f,-0.2188692450535288658298f,-0.2256013823621523806118f,\
+-0.0526673222769318341574f,-2.3659900680299497111037f,-0.8853208672348196195401f,\
+-0.0106120501693722224523f,-0.0369961284323869002422f,-1.2046929580793401814987f,\
+-0.0026313843119589821508f,-0.3848299640358096573856f,-0.0830968932369530594029f,\
+-1.424397112818484689711f,-0.3301505313242010797303f,-0.3224737880280506563402f,\
+-0.3913693403433980977368f,-1.4056427898881791449526f,-0.3564174388206851062932f,\
+-0.4793231362281260010683f,-1.0565956679830132980413f,-0.9389873504280431548707f,\
+-0.0146887076937459951781f,-0.0913193386792951061759f,-0.4057868990671495423861f,\
+-0.1034665500376885233225f,-0.3188857244019617231956f,-1.5674723626658799702227f,\
+-0.1738047793945742269806f,-0.2516400325061770026913f,-0.5910208828319416518582f,\
+-0.5806990464341352797817f,-0.3518998500546973717817f,-0.0694103478250598926458f,\
+-0.6294747913311795617375f,-0.4844529702954271654924f,-0.6471233167047535372873f,\
+-0.4598036435552441125729f,-0.1110825594195994081570f,-0.8908145709277390800196f,\
+-0.9369265766947033613476f,-0.6873275946862682506122f,-0.3433705568996603396670f,\
+-0.1859822838651877530136f,-1.1487197991742361669054f,-0.8977240365674604705148f,\
+-0.3032314852833657981002f,-1.055877819626311886481f,-0.8348666427090224440022f,\
+-0.1456123165510203598672f,-0.0312491733461308825170f}
+
+#define CSOURCER {0.3140813848003745079041f,0.5769402063451707363129f,0.1306138429790735244751f,\
+0.0478980806656181812286f,0.4500174494460225105286f,0.0384718659333884716034f,\
+0.483350999653339385986f,0.2981918179430067539215f,0.7112689120694994926453f,\
+0.9268360524438321590424f,0.9477838929742574691772f,0.1729496796615421772003f,\
+0.2750928336754441261292f,0.0044281478039920330048f,0.0611358620226383209229f,\
+0.1950612799264490604401f,0.3789803450927138328552f,0.2549188635312020778656f,\
+0.1764185149222612380981f,0.6008180272765457630157f,0.3703392641618847846985f,\
+0.2908470141701400279999f,0.5384815335273742675781f,0.8090293356217443943024f,\
+0.9260985879227519035339f,0.1576966657303273677826f,0.9518593531101942062378f,\
+0.2709982101805508136749f,0.1609848598018288612366f,0.8782086591236293315887f,\
+0.5091647170484066009521f,0.7951062084175646305084f,0.8432204117998480796814f,\
+0.5806765086017549037933f,0.3487791065126657485962f,0.9397577759809792041779f,\
+0.4363934816792607307434f,0.5549766751937568187714f,0.9105900451540946960449f,\
+0.5684339576400816440582f,0.1862502051517367362976f,0.0800832151435315608978f,\
+0.6585252787917852401733f,0.1606054832227528095245f,0.9711584830656647682190f,\
+0.3668168033473193645477f,0.7386338301002979278564f,0.9722552285529673099518f,\
+0.1349937235936522483826f,0.4595781317912042140961f,0.5414639282971620559692f,\
+0.6397600513882935047150f,0.0211964594200253486633f,0.4408156829886138439178f,\
+0.6374878138303756713867f,0.3208820023573935031891f,0.4267518399283289909363f,\
+0.7819778784178197383881f,0.0543234180659055709839f,0.9666189108975231647491f,\
+0.6948409983888268470764f,0.1846996019594371318817f,0.3645029179751873016357f,\
+0.8176643461920320987701f,0.664914294146001338959f,0.7559730983339250087738f,\
+0.5525381658226251602173f,0.7192269531078636646271f,0.1989364298060536384583f,\
+0.8610532465390861034393f,0.1300329938530921936035f,0.347959163133054971695f,\
+0.5025534434244036674500f,0.4978472082875669002533f,0.4675923939794301986694f,\
+0.9447452803142368793488f,0.9599315756931900978088f,0.5365384514443576335907f,\
+0.8122785724699497222900f,0.6470989421941339969635f,0.7010180121287703514099f,\
+0.6681951484642922878265f,0.9593638796359300613403f,0.0149199557490646839142f,\
+0.6199735002592206001282f,0.4061129498295485973358f,0.0471306145191192626953f,\
+0.8433605083264410495758f,0.0635268418118357658386f,0.9836421324871480464935f,\
+0.4434677045792341232300f,0.8565507535822689533234f,0.9080012599006295204163f,\
+0.4922491232864558696747f,0.1930142603814601898193f,0.3759337724186480045319f,\
+0.2437626412138342857361f,0.1035623974166810512543f,0.9936000052839517593384f,\
+0.5569599089212715625763f,0.3858396532014012336731f,0.7191527518443763256073f,\
+0.1707325801253318786621f,0.2878904812969267368317f,0.4294657362625002861023f,\
+0.8917979537509381771088f,0.6188817229121923446655f,0.3444608678109943866730f,\
+0.0692929709330201148987f,0.3619817639701068401337f,0.1783103235065937042236f,\
+0.8941529677249491214752f,0.9010278200730681419373f,0.0533773354254662990570f,\
+0.4162023533135652542114f,0.9438270372338593006134f,0.9242387460544705390930f,\
+0.8710649865679442882538f,0.2808376699686050415039f,0.8244629004038870334625f,\
+0.4650857029482722282410f,0.1462343498133122920990f,0.5975636970251798629761f,\
+0.3067605351097881793976f,0.2377215037122368812561f,0.0711208949796855449677f,\
+0.8753139786422252655029f,0.4413500339724123477936f,0.7631150623783469200134f,\
+0.9679268277250230312347f,0.3924236092716455459595f,0.717360940296202898026f,\
+0.8640465112403035163879f,0.7354763629846274852753f,0.0304915383458137512207f,\
+0.6331009590066969394684f,0.4550241930410265922546f,0.3173553734086453914642f,\
+0.8250397499650716781616f,0.2725940425880253314972f,0.3458735281601548194885f,\
+0.5352854127995669841766f,0.7017193175852298736572f,0.9817278520204126834869f,\
+0.2777477568015456199646f,0.1314821145497262477875f,0.366813333705067634583f,\
+0.7377605927176773548126f,0.9103105561807751655579f,0.3637479650788009166718f,\
+0.8207867145538330078125f,0.3059372254647314548492f,0.9788405327126383781433f,\
+0.9970494522713124752045f,0.4636328797787427902222f,0.7769650523550808429718f,\
+0.3400075891986489295959f,0.0353285889141261577606f,0.2607673071324825286865f,\
+0.5790986777283251285553f,0.1250711670145392417908f,0.0372988111339509487152f,\
+0.9382179621607065200806f,0.5585843441076576709747f,0.7192503632977604866028f,\
+0.3599752518348395824432f,0.6758626028895378112793f,0.2222136431373655796051f,\
+0.7860159231349825859070f,0.1736893891356885433197f,0.2674629595130681991577f,\
+0.7357366015203297138214f,0.0550541067495942115784f,0.5923380698077380657196f,\
+0.2162457890808582305908f,0.7718841419555246829987f,0.0926524316892027854919f,\
+0.7626169077120721340179f,0.7347808051854372024536f,0.8017499190755188465118f,\
+0.7732572900131344795227f,0.2559880572371184825897f,0.1179054826498031616f,\
+0.9232815303839743137360f,0.6709534404799342155457f,0.6071323617361485958099f,\
+0.4574467372149229049683f,0.8206311021931469440460f,0.0896153757348656654358f,\
+0.3426358769647777080536f,0.1674894802272319793701f,0.9481152505613863468170f,\
+0.9504805644974112510681f,0.3436607695184648036957f,0.2889420483261346817017f,\
+0.5325344172306358814240f,0.2558945687487721443176f,0.8863505902700126171112f,\
+0.0421485081315040588379f,0.4876015805639326572418f}
+
+#define CSOURCEI {0.347978035919368267059f,0.2037199228070676326752f,0.5962978359311819076538f,\
+0.8342303414829075336456f,0.6809655660763382911682f,0.9127784068696200847626f,\
+0.5243799723684787750244f,0.7204323844052851200104f,0.3259664541110396385193f,\
+0.1506391367875039577484f,0.9124387521296739578247f,0.6345743131823837757111f,\
+0.9268973069265484809875f,0.7633614349178969860077f,0.5918717086315155029297f,\
+0.9057438620366156101227f,0.3263365356251597404480f,0.3912780000828206539154f,\
+0.4635267537087202072144f,0.0849754814989864826202f,0.5800507226958870887756f,\
+0.7945564310066401958466f,0.3823457323014736175537f,0.3010852993465960025787f,\
+0.5789428642019629478455f,0.2627451247535645961761f,0.5713048521429300308228f,\
+0.1848654565401375293732f,0.9971724869683384895325f,0.4520535501651465892792f,\
+0.0334019884467124938965f,0.4553878181613981723785f,0.7851976407691836357117f,\
+0.4941168962977826595306f,0.9304408635944128036499f,0.7621670593507587909698f,\
+0.9264887655153870582581f,0.7199950958602130413055f,0.3973621018230915069580f,\
+0.8769331262446939945221f,0.6766644334420561790466f,0.8431562236510217189789f,\
+0.7608711589127779006958f,0.8287630719132721424103f,0.0037989662960171699524f,\
+0.9451942699961364269257f,0.6311131268739700317383f,0.0763222672976553440094f,\
+0.4486519275233149528503f,0.1080312891863286495209f,0.8351444136351346969604f,\
+0.3109649871475994586945f,0.1235694894567131996155f,0.0363539229147136211395f,\
+0.6609512977302074432373f,0.9844443709589540958405f,0.0688076755031943321228f,\
+0.5140342987142503261566f,0.3807653579860925674438f,0.1549817589111626148224f,\
+0.6850274773314595222473f,0.0382853033952414989471f,0.5224257782101631164551f,\
+0.7454454028047621250153f,0.4607118470594286918640f,0.4753002314828336238861f,\
+0.8575385268777608871460f,0.8073885519988834857941f,0.7132545644417405128479f,\
+0.0811268086545169353485f,0.5751824118196964263916f,0.884696914348751306534f,\
+0.5624709790572524070740f,0.7315255901776254177094f,0.6099120099097490310669f,\
+0.0705954921431839466095f,0.8552806274965405464172f,0.7045627343468368053436f,\
+0.5928074717521667480469f,0.8517647930420935153961f,0.2603117255493998527527f,\
+0.8596871509216725826263f,0.3943212013691663742065f,0.3333164160139858722687f,\
+0.2511775353923439979553f,0.5570420245639979839325f,0.7276714108884334564209f,\
+0.9383780122734606266022f,0.1971746077761054039001f,0.1607607132755219936371f,\
+0.7815325502306222915649f,0.1760376212187111377716f,0.2801528992131352424622f,\
+0.4699970218352973461151f,0.3507726117968559265137f,0.5713973813690245151520f,\
+0.4563077641651034355164f,0.9214398502372205257416f,0.4339873101562261581421f,\
+0.3514866163022816181183f,0.1816438222303986549377f,0.9070622171275317668915f,\
+0.7665811367332935333252f,0.9807842955924570560455f,0.1198607003316283226013f,\
+0.0508546582423150539398f,0.2581452894955873489380f,0.1401008707471191883087f,\
+0.5514106499031186103821f,0.7882929998449981212616f,0.8028824776411056518555f,\
+0.2425694861449301242828f,0.7024780390784144401550f,0.0922905071638524532318f,\
+0.4318286012858152389526f,0.0804965649731457233429f,0.7126307198777794837952f,\
+0.6893844078294932842255f,0.2756213061511516571045f,0.6968217701651155948639f,\
+0.4598932703956961631775f,0.6099067903123795986176f,0.3065654132515192031860f,\
+0.0749373403377830982208f,0.9619921119883656501770f,0.4158898773603141307831f,\
+0.3287452235817909240723f,0.7406168007291853427887f,0.5725225014612078666687f,\
+0.9504556744359433650970f,0.1849336978048086166382f,0.8698030491359531879425f,\
+0.6907873982563614845276f,0.9524399931542575359344f,0.6490485109388828277588f,\
+0.9960058168508112430573f,0.2040582066401839256287f,0.3800008497200906276703f,\
+0.9729049820452928543091f,0.9110585046000778675079f,0.3810073928907513618469f,\
+0.7869612383656203746796f,0.5560158789157867431641f,0.8529843934811651706696f,\
+0.4350629774853587150574f,0.5956362797878682613373f,0.7071880977600812911987f,\
+0.5747222309000790119171f,0.4764349022880196571350f,0.6098947445861995220184f,\
+0.9666662178933620452881f,0.3874611915089190006256f,0.0715632727369666099548f,\
+0.6122049516998231410980f,0.9575729314237833023071f,0.7723352131433784961700f,\
+0.1287384750321507453918f,0.3884150418452918529510f,0.2353963479399681091309f,\
+0.6542267077602446079254f,0.3286431683227419853210f,0.024017625954002141953f,\
+0.1042741741985082626343f,0.9314296473748981952667f,0.8185661518946290016174f,\
+0.8156488086096942424774f,0.8688247688114643096924f,0.3549220249988138675690f,\
+0.3890381073579192161560f,0.6415715864859521389008f,0.4902750719338655471802f,\
+0.3509976905770599842072f,0.8516392158344388008118f,0.1348936217837035655975f,\
+0.1156354099512100219727f,0.8810075619257986545563f,0.8367286501452326774597f,\
+0.5032693906687200069427f,0.4486711751669645309448f,0.9319602106697857379913f,\
+0.7298459419980645179749f,0.3388367067091166973114f,0.4314213804900646209717f,\
+0.7317318231798708438873f,0.9655342241749167442322f,0.2621376193128526210785f,\
+0.2050140891224145889282f,0.2826355365104973316193f,0.3973353477194905281067f,\
+0.7437736871652305126190f,0.8185287192463874816895f,0.3071001493372023105621f,\
+0.9627068741247057914734f,0.9475456266663968563080f,0.6546552237123250961304f,\
+0.1992082078941166400909f,0.3616109425202012062073f,0.9388273353688418865204f,\
+0.0409001447260379791260f,0.0758434669114649295807f}
+
+#define CRESULTR {-0.3290495609832542744932f,-0.2133542315965856750459f,-0.2143604594080804615075f,\
+-0.0779993516667897290873f,-0.0881879704812010417614f,-0.0392492308819259588804f,\
+-0.1468107357971605020364f,-0.1080692186653561120968f,-0.1065683791205834785032f,\
+-0.0273353392421778126908f,0.1191283090947614642374f,-0.1819586746730034731989f,\
+-0.0146372370113581271034f,-0.1172624775653131612430f,-0.2254678765990359434745f,\
+-0.0331498720885635145272f,-0.3009243692795003366491f,-0.3306899894153413344000f,\
+-0.3045496213459356615871f,-0.2169562594261553178931f,-0.1622895628928226752219f,\
+-0.0725702069682954281626f,-0.1801817524356017496956f,-0.0638691649231626773497f,\
+0.0382899018433042123699f,-0.5136597137709293381391f,0.0453803311793120195405f,\
+-0.4840630563482673509590f,0.0043573655682720771609f,-0.0053634673446913633602f,\
+-0.2922091972771523882280f,-0.0379710404096835762999f,0.0615264246077369611476f,\
+-0.1177861239572535467790f,-0.0027606815124210713590f,0.0827769612970807588948f,\
+0.0103506258196890514600f,-0.0414069352257771042258f,-0.0028258322392286264017f,\
+0.0191369442490108253307f,-0.1537687128497234601010f,-0.0721417928417731474378f,\
+0.0027147719270748577915f,-0.0735641860746090447964f,-0.0127065691399337477724f,\
+0.0059853142299196512854f,-0.0125407536616094668347f,-0.0108856950196654141821f,\
+-0.3292710076447024625246f,-0.3259617043131136093770f,-0.0020400145634434829929f,\
+-0.1479281118584361010004f,-0.9017915683260822046208f,-0.3542710907015680921184f,\
+-0.0370225124342607042616f,0.0151168335656557354524f,-0.3642515556722971115100f,\
+-0.0288172015063716119299f,-0.4149670396818516682202f,-0.0092330629379009203361f,\
+-0.0106663219864977006773f,-0.7243988137694490347940f,-0.1958487567186202316094f,\
+0.0439375096643265586338f,-0.0920894961670395001407f,-0.0491603497010221490715f,\
+0.0086566739889077232162f,0.0339376585197796801219f,-0.1304877971769988764805f,\
+-0.0630508696074615210270f,-0.2293705604967442579500f,-0.0219724307162800849835f,\
+-0.1224692215475379208911f,-0.0531242407432285373980f,-0.1143402977644937118518f,\
+-0.0234761498308886963626f,0.1091329563146860859302f,-0.0527638328353893792944f,\
+0.0024222192478416683901f,0.0292586204417139908451f,-0.1262209046057715389200f,\
+0.0369593428671423362974f,0.0158795483132631205792f,-0.4767086450021467136651f,\
+-0.1746242034102962470410f,-0.1615510250958859250758f,-0.1371556526467043735096f,\
+0.100945647205856317563f,-0.6837031045647332661019f,-0.0014388289408900174424f,\
+-0.0464403701173962263349f,-0.0582634176897608505041f,-0.0221676835116708763340f,\
+-0.1671127243957707675381f,-0.3975387523773417086659f,-0.1649600652341057516193f,\
+-0.2862269227110153524407f,-0.0328071976308584797866f,0.0351271945689521844503f,\
+-0.1813816670814733522654f,-0.3701233874684188296378f,0.0635430885883380841550f,\
+-0.1049291365916461549190f,0.0095204817066643597501f,-0.3507837205033069172266f,\
+-0.0490285470477662618793f,-0.1735609734951024107907f,-0.4296178908501777637952f,\
+-0.2551225266448440276434f,-0.0617650291008570578866f,-0.0848934350447099472792f,\
+-0.0331679244708535381214f,0.0578595820981543801365f,-0.9721832280456300656724f,\
+-0.2220295759617292030708f,-0.0235337862370093645059f,0.0670980880683051256197f,\
+0.0456584724702859962031f,-0.4050627643604459149351f,0.0332188086620539904659f,\
+-0.1843762947107071559216f,-0.2025989526775586746510f,-0.1728805677287464093173f,\
+-0.5006140240740283298138f,-0.0039574496715991209703f,-0.3747624646211847876387f,\
+-0.0291826804365620078030f,-0.0644170285495881678184f,-0.020449093098134307755f,\
+0.1324382164856784949158f,-0.3626939268757052303727f,0.0521008032215845851010f,\
+0.0438487661958249438920f,0.0803943913989621228300f,-0.1872441239933456957889f,\
+0.0719513030064179159861f,-0.3021736609622284186472f,-0.30531498564977166410f,\
+0.1057250974802272092123f,-0.0218353036625967035500f,-0.2885450025056992551242f,\
+-0.0214746210927109354438f,-0.0480309906528200089570f,0.1141195620733326948626f,\
+-0.2872136450436454380153f,-0.2146876003507041108520f,-0.0987270319138862650910f,\
+-0.0290961734854755134372f,0.0117611124704010052561f,-0.1486623273058947924952f,\
+0.1031611720947231414236f,-0.3065510644941032425415f,-0.0081304707590571338727f,\
+0.0681862604059072646701f,0.0269042920576901857521f,0.0396225366257938194092f,\
+-0.4394191704520844510284f,-0.4089149013992912085058f,-0.4543230131010723149565f,\
+-0.0586330634787295829069f,-0.4539044694277152292017f,-1.3529821933222951901854f,\
+-0.0250304307835438853702f,0.0358632689692895620381f,0.0372933340583203806751f,\
+-0.0498532689013882687745f,0.0416880085188151769393f,-0.3780489142107763544942f,\
+-0.0569883570641069869822f,-0.1773959401592627993516f,-0.2529880791121558170076f,\
+-0.0887499827789579032178f,-0.0688387899649425538673f,-0.2164511122923038211052f,\
+-0.6104407141161303229637f,0.0686738036393797490753f,-0.0747689959340766124862f,\
+-0.0391919696178445325918f,-0.0650297590330818214843f,0.0896829227334642459235f,\
+0.0266548623220910323173f,-0.3719537274000056514822f,-0.3494566550303903618158f,\
+0.0711759971067136287814f,0.0703223378863101489245f,-0.1795974324279027423135f,\
+-0.2999138709331988783546f,-0.0615107548910408530318f,-0.3900685687486248887090f,\
+-0.0867686652200203717422f,-0.0780592259581650849132f,-0.0014744231840779402701f,\
+0.1312513908465361422984f,0.0034351924950619906404f,-0.1453391630458231997824f,\
+-0.2452127202368474256922f,-0.3536012485332969967899f,0.1109696410995756055140f,\
+-1.2311333463434968038541f,-0.3067437997278838479609f}
+
+#define CRESULTI {0.3633100487665162359185f,0.1474158063550214115001f,0.5885387980009104680335f,\
+0.6572801175741773693773f,0.4285748579481841735728f,0.6638943219025983388804f,\
+0.3587662857455625187164f,0.5117548829580961244901f,0.1866273414364414962030f,\
+0.0699742348195561969515f,0.3328432735187898949825f,0.5666303041879406920955f,\
+0.5568906423318142895340f,0.6796689265398294654830f,0.6374873742133734255688f,\
+0.5900654029247031084893f,0.3087389836998947201252f,0.4314129861802953325167f,\
+0.5242475923033280693630f,0.0610188495832547500575f,0.4354133593463934692736f,\
+0.5297939421633884871099f,0.2681487567918271475165f,0.1547283383009969981448f,\
+0.2426408568390991671304f,0.4474267034848418145287f,0.2347646885151994655683f,\
+0.2599927875089523832131f,0.6126748695156737367640f,0.2064522777477181547656f,\
+0.0284496210471740680614f,0.2258908609011123780341f,0.3256261235849059465508f,\
+0.3061930542060117277359f,0.5264317995551247575392f,0.2959401807089209746060f,\
+0.4910139616058311062829f,0.3969936639609323303368f,0.1786986723204381510843f,\
+0.4324195385396965018998f,0.5655382812237433887148f,0.6410621383118232374798f,\
+0.3723548821340513237388f,0.5990569422252302045351f,0.0016988593650344200551f,\
+0.5214150467894975715666f,0.3070731387905711318176f,0.0340224494974534080738f,\
+0.5552566039785586937683f,0.1002676097220635414997f,0.4323764448196805720848f,\
+0.1964911590800132445978f,0.6084096209152420886568f,0.0357352532897105071297f,\
+0.3489411661881484660874f,0.5453449961026168857359f,0.0694263094757205379004f,\
+0.2525534710601468613156f,0.6206431406119353733075f,0.0690444796836073154678f,\
+0.3380054707664132407352f,0.0887652999217624361084f,0.4176207649503542729263f,\
+0.3210430331362784106553f,0.2631553422310267675854f,0.2437584071473132274477f,\
+0.4336070270779164292918f,0.3661466421575780838538f,0.5640596254022186561983f,\
+0.0407979674024822880352f,0.5856292520126130662916f,0.5194472182924043668351f,\
+0.3655014659417109568196f,0.4226713256320973055580f,0.3981267146771410581074f,\
+0.0323921796076454895918f,0.3160837480759546291864f,0.3995349584181833169083f,\
+0.273802063686018282151f,0.4000313483957886884212f,0.1544145556607701974539f,\
+0.3952425864610250583198f,0.1693632158699578948990f,0.6627611949754427245196f,\
+0.167173661907591114550f,0.4086002639927426849376f,0.6540985540228395622719f,\
+0.3642324586236761474467f,0.5468253741606181606016f,0.0703565244510996889993f,\
+0.4580361055958868110594f,0.0880301024358387529389f,0.1299718766609879727625f,\
+0.3310527463405003034680f,0.4637212462953029801227f,0.4294623340021747059936f,\
+0.4691072369162453403746f,0.6335809675670333040998f,0.1788460444456893838616f,\
+0.2444904068796305007805f,0.1910877540250672246280f,0.3910553307022346936073f,\
+0.5870156732892560791370f,0.5581921905883382439839f,0.1182006499862187365313f,\
+0.0247387920792678586701f,0.1716217468036307647328f,0.1677637778431290971337f,\
+0.6278971871585069530752f,0.4952349292223454657602f,0.5872771345770251283369f,\
+0.1150482129328096875254f,0.2875910738555041423758f,0.4544626742179224132556f,\
+0.3490957130610289338435f,0.0369504335660946620079f,0.2852598765351710419225f,\
+0.2907565249995825995555f,0.3370230396263981242910f,0.3047404031476670938083f,\
+0.33865617237418182972f,0.5799887649794799315828f,0.2058615017488183152050f,\
+0.1040542236456874769512f,0.5769758315245528956794f,0.6086314545246159779524f,\
+0.1560306547104348962041f,0.4487914762887483810516f,0.2795367938070804081363f,\
+0.3371389774796904048593f,0.1912601282140735381443f,0.3826791464254168939618f,\
+0.2928983745329591936724f,0.396613573038569422469f,0.6618005209348483131038f,\
+0.4362846209517689533008f,0.1830850765515834310815f,0.3800035453193333911948f,\
+0.376730811842592550054f,0.5559265822426159298075f,0.3620694326893729719785f,\
+0.4227803813529266152571f,0.2910061310239929199817f,0.3106691139011089619615f,\
+0.435429394944240932830f,0.5878341337089509899272f,0.4743827280867594087255f,\
+0.2874204018606083543830f,0.2094051712928121644630f,0.4486348592544623370415f,\
+0.3764598089790200385885f,0.3919214486831592569871f,0.0316949858971651426964f,\
+0.2391495340218968146395f,0.486361470580685850695f,0.3397962718388538583270f,\
+0.1571941632596165761004f,0.6427949822892967679522f,0.3189060883322832884446f,\
+0.3675164927613087662017f,0.5242598134907254792125f,0.2484566158604845087510f,\
+0.0480705017921116625756f,0.4475807306655288364539f,0.3691029449284471408710f,\
+0.5016842301167260265160f,0.3950665170276177473596f,0.4392508841037601752255f,\
+0.1996012963954646446396f,0.5673662159944875549300f,0.4652972123009525562409f,\
+0.1933199899606511118488f,0.6541522766180654091528f,0.0972438028822732308809f,\
+0.2132613189014408716648f,0.3697245333311866000159f,0.6342931063454819717862f,\
+0.2533327612355570357394f,0.2380763598053285134970f,0.3736506508141989035821f,\
+0.3285546506249918952136f,0.4011970200297387822985f,0.5663267577447791412126f,\
+0.2910519034072798771895f,0.4184422115344140213899f,0.1770121129168618634431f,\
+0.1829818983774834095790f,0.1440504268816359956240f,0.5858489671891115024849f,\
+0.4947061064648006212252f,0.5945317434266266243270f,0.1360392849738219778200f,\
+0.3438694289300276984989f,0.5310838098864226752838f,0.5016736389654107286518f,\
+0.1554601034674029658156f,0.4147310296690985831347f,0.3535773010333992383281f,\
+0.3345663906426585842979f,0.0670148638928397127890f}
+
+
+
+
+void slog10sTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=slog10s(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-5);
+ }
+}
+
+void clog10sTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=clog10s(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<3e-5);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void slog10aTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ j=1;
+ slog10a(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-5);
+ }
+}
+
+void clog10aTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ clog10a(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<3e-5);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testLog10(void) {
+ printf("\n>>>> 10-Based Logarithm Tests\n");
+ slog10sTest();
+ clog10sTest();
+ slog10aTest();
+ clog10aTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLog10() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/testLog10.h b/2.3-1/src/c/elementaryFunctions/log10/testLog10.h
new file mode 100644
index 00000000..5d0ed0a4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/testLog10.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTLOG10_H_
+#define _TESTLOG10_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "log10.h"
+
+void slog10sTest(void);
+
+void dlog10sTest(void);
+
+void clog10sTest(void);
+
+void zlog10sTest(void);
+
+void slog10aTest(void);
+
+void dlog10aTest(void);
+
+void clog10aTest(void);
+
+void zlog10aTest(void);
+
+int testLog10(void);
+
+#endif /* ! _TESTLOG10_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/log10/zlog10a.c b/2.3-1/src/c/elementaryFunctions/log10/zlog10a.c
new file mode 100644
index 00000000..dd25f7a5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/zlog10a.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+
+void zlog10a(doubleComplex* in, int size, doubleComplex* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = zlog10s(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log10/zlog10s.c b/2.3-1/src/c/elementaryFunctions/log10/zlog10s.c
new file mode 100644
index 00000000..5403162f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log10/zlog10s.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log10.h"
+#include "log.h"
+
+doubleComplex zlog10s(doubleComplex in) {
+ doubleComplex log_z = zlogs(in);
+ return DoubleComplex(zreals(log_z) / dlogs(10.0), zimags(log_z) / dlogs(10.0));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/Makefile.am b/2.3-1/src/c/elementaryFunctions/log1p/Makefile.am
new file mode 100644
index 00000000..d62c071e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/Makefile.am
@@ -0,0 +1,66 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libLog1p_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libLog1p.la
+
+libLog1p_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = slog1ps.c \
+ dlog1ps.c \
+ clog1ps.c \
+ zlog1ps.c \
+ slog1pa.c \
+ dlog1pa.c \
+ clog1pa.c \
+ zlog1pa.c
+
+HEAD = ../includes/log1p.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatLog1p testDoubleLog1p
+
+TESTS = testFloatLog1p testDoubleLog1p
+
+#
+# -*- Log1p Tests -*-
+#
+testFloatLog1p_SOURCES = testLog1p.h testFloatLog1p.c
+testFloatLog1p_CFLAGS = $(check_INCLUDES)
+testFloatLog1p_LDADD = $(check_LDADD)
+
+testDoubleLog1p_SOURCES = testLog1p.h testDoubleLog1p.c
+testDoubleLog1p_CFLAGS = $(check_INCLUDES)
+testDoubleLog1p_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/Makefile.in b/2.3-1/src/c/elementaryFunctions/log1p/Makefile.in
new file mode 100644
index 00000000..fea47126
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/Makefile.in
@@ -0,0 +1,806 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatLog1p$(EXEEXT) testDoubleLog1p$(EXEEXT)
+TESTS = testFloatLog1p$(EXEEXT) testDoubleLog1p$(EXEEXT)
+subdir = src/c/elementaryFunctions/log1p
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLog1p_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libLog1p_la-slog1ps.lo libLog1p_la-dlog1ps.lo \
+ libLog1p_la-clog1ps.lo libLog1p_la-zlog1ps.lo \
+ libLog1p_la-slog1pa.lo libLog1p_la-dlog1pa.lo \
+ libLog1p_la-clog1pa.lo libLog1p_la-zlog1pa.lo
+am_libLog1p_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libLog1p_la_OBJECTS = $(am_libLog1p_la_OBJECTS)
+libLog1p_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLog1p_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLog1p_OBJECTS = \
+ testDoubleLog1p-testDoubleLog1p.$(OBJEXT)
+testDoubleLog1p_OBJECTS = $(am_testDoubleLog1p_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleLog1p_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLog1p_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLog1p_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLog1p_OBJECTS = testFloatLog1p-testFloatLog1p.$(OBJEXT)
+testFloatLog1p_OBJECTS = $(am_testFloatLog1p_OBJECTS)
+testFloatLog1p_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLog1p_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLog1p_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLog1p_la_SOURCES) $(testDoubleLog1p_SOURCES) \
+ $(testFloatLog1p_SOURCES)
+DIST_SOURCES = $(libLog1p_la_SOURCES) $(testDoubleLog1p_SOURCES) \
+ $(testFloatLog1p_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLog1p_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLog1p.la
+libLog1p_la_SOURCES = $(HEAD) $(SRC)
+SRC = slog1ps.c \
+ dlog1ps.c \
+ clog1ps.c \
+ zlog1ps.c \
+ slog1pa.c \
+ dlog1pa.c \
+ clog1pa.c \
+ zlog1pa.c
+
+HEAD = ../includes/log1p.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Log1p Tests -*-
+#
+testFloatLog1p_SOURCES = testLog1p.h testFloatLog1p.c
+testFloatLog1p_CFLAGS = $(check_INCLUDES)
+testFloatLog1p_LDADD = $(check_LDADD)
+testDoubleLog1p_SOURCES = testLog1p.h testDoubleLog1p.c
+testDoubleLog1p_CFLAGS = $(check_INCLUDES)
+testDoubleLog1p_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/log1p/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/log1p/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLog1p.la: $(libLog1p_la_OBJECTS) $(libLog1p_la_DEPENDENCIES)
+ $(libLog1p_la_LINK) -rpath $(pkglibdir) $(libLog1p_la_OBJECTS) $(libLog1p_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLog1p$(EXEEXT): $(testDoubleLog1p_OBJECTS) $(testDoubleLog1p_DEPENDENCIES)
+ @rm -f testDoubleLog1p$(EXEEXT)
+ $(testDoubleLog1p_LINK) $(testDoubleLog1p_OBJECTS) $(testDoubleLog1p_LDADD) $(LIBS)
+testFloatLog1p$(EXEEXT): $(testFloatLog1p_OBJECTS) $(testFloatLog1p_DEPENDENCIES)
+ @rm -f testFloatLog1p$(EXEEXT)
+ $(testFloatLog1p_LINK) $(testFloatLog1p_OBJECTS) $(testFloatLog1p_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-clog1pa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-clog1ps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-dlog1pa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-dlog1ps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-slog1pa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-slog1ps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-zlog1pa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLog1p_la-zlog1ps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLog1p-testFloatLog1p.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLog1p_la-slog1ps.lo: slog1ps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-slog1ps.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-slog1ps.Tpo -c -o libLog1p_la-slog1ps.lo `test -f 'slog1ps.c' || echo '$(srcdir)/'`slog1ps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-slog1ps.Tpo $(DEPDIR)/libLog1p_la-slog1ps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slog1ps.c' object='libLog1p_la-slog1ps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-slog1ps.lo `test -f 'slog1ps.c' || echo '$(srcdir)/'`slog1ps.c
+
+libLog1p_la-dlog1ps.lo: dlog1ps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-dlog1ps.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-dlog1ps.Tpo -c -o libLog1p_la-dlog1ps.lo `test -f 'dlog1ps.c' || echo '$(srcdir)/'`dlog1ps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-dlog1ps.Tpo $(DEPDIR)/libLog1p_la-dlog1ps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlog1ps.c' object='libLog1p_la-dlog1ps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-dlog1ps.lo `test -f 'dlog1ps.c' || echo '$(srcdir)/'`dlog1ps.c
+
+libLog1p_la-clog1ps.lo: clog1ps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-clog1ps.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-clog1ps.Tpo -c -o libLog1p_la-clog1ps.lo `test -f 'clog1ps.c' || echo '$(srcdir)/'`clog1ps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-clog1ps.Tpo $(DEPDIR)/libLog1p_la-clog1ps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clog1ps.c' object='libLog1p_la-clog1ps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-clog1ps.lo `test -f 'clog1ps.c' || echo '$(srcdir)/'`clog1ps.c
+
+libLog1p_la-zlog1ps.lo: zlog1ps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-zlog1ps.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-zlog1ps.Tpo -c -o libLog1p_la-zlog1ps.lo `test -f 'zlog1ps.c' || echo '$(srcdir)/'`zlog1ps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-zlog1ps.Tpo $(DEPDIR)/libLog1p_la-zlog1ps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlog1ps.c' object='libLog1p_la-zlog1ps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-zlog1ps.lo `test -f 'zlog1ps.c' || echo '$(srcdir)/'`zlog1ps.c
+
+libLog1p_la-slog1pa.lo: slog1pa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-slog1pa.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-slog1pa.Tpo -c -o libLog1p_la-slog1pa.lo `test -f 'slog1pa.c' || echo '$(srcdir)/'`slog1pa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-slog1pa.Tpo $(DEPDIR)/libLog1p_la-slog1pa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slog1pa.c' object='libLog1p_la-slog1pa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-slog1pa.lo `test -f 'slog1pa.c' || echo '$(srcdir)/'`slog1pa.c
+
+libLog1p_la-dlog1pa.lo: dlog1pa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-dlog1pa.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-dlog1pa.Tpo -c -o libLog1p_la-dlog1pa.lo `test -f 'dlog1pa.c' || echo '$(srcdir)/'`dlog1pa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-dlog1pa.Tpo $(DEPDIR)/libLog1p_la-dlog1pa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlog1pa.c' object='libLog1p_la-dlog1pa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-dlog1pa.lo `test -f 'dlog1pa.c' || echo '$(srcdir)/'`dlog1pa.c
+
+libLog1p_la-clog1pa.lo: clog1pa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-clog1pa.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-clog1pa.Tpo -c -o libLog1p_la-clog1pa.lo `test -f 'clog1pa.c' || echo '$(srcdir)/'`clog1pa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-clog1pa.Tpo $(DEPDIR)/libLog1p_la-clog1pa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clog1pa.c' object='libLog1p_la-clog1pa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-clog1pa.lo `test -f 'clog1pa.c' || echo '$(srcdir)/'`clog1pa.c
+
+libLog1p_la-zlog1pa.lo: zlog1pa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -MT libLog1p_la-zlog1pa.lo -MD -MP -MF $(DEPDIR)/libLog1p_la-zlog1pa.Tpo -c -o libLog1p_la-zlog1pa.lo `test -f 'zlog1pa.c' || echo '$(srcdir)/'`zlog1pa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLog1p_la-zlog1pa.Tpo $(DEPDIR)/libLog1p_la-zlog1pa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlog1pa.c' object='libLog1p_la-zlog1pa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLog1p_la_CFLAGS) $(CFLAGS) -c -o libLog1p_la-zlog1pa.lo `test -f 'zlog1pa.c' || echo '$(srcdir)/'`zlog1pa.c
+
+testDoubleLog1p-testDoubleLog1p.o: testDoubleLog1p.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog1p_CFLAGS) $(CFLAGS) -MT testDoubleLog1p-testDoubleLog1p.o -MD -MP -MF $(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Tpo -c -o testDoubleLog1p-testDoubleLog1p.o `test -f 'testDoubleLog1p.c' || echo '$(srcdir)/'`testDoubleLog1p.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Tpo $(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLog1p.c' object='testDoubleLog1p-testDoubleLog1p.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog1p_CFLAGS) $(CFLAGS) -c -o testDoubleLog1p-testDoubleLog1p.o `test -f 'testDoubleLog1p.c' || echo '$(srcdir)/'`testDoubleLog1p.c
+
+testDoubleLog1p-testDoubleLog1p.obj: testDoubleLog1p.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog1p_CFLAGS) $(CFLAGS) -MT testDoubleLog1p-testDoubleLog1p.obj -MD -MP -MF $(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Tpo -c -o testDoubleLog1p-testDoubleLog1p.obj `if test -f 'testDoubleLog1p.c'; then $(CYGPATH_W) 'testDoubleLog1p.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLog1p.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Tpo $(DEPDIR)/testDoubleLog1p-testDoubleLog1p.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLog1p.c' object='testDoubleLog1p-testDoubleLog1p.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLog1p_CFLAGS) $(CFLAGS) -c -o testDoubleLog1p-testDoubleLog1p.obj `if test -f 'testDoubleLog1p.c'; then $(CYGPATH_W) 'testDoubleLog1p.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLog1p.c'; fi`
+
+testFloatLog1p-testFloatLog1p.o: testFloatLog1p.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog1p_CFLAGS) $(CFLAGS) -MT testFloatLog1p-testFloatLog1p.o -MD -MP -MF $(DEPDIR)/testFloatLog1p-testFloatLog1p.Tpo -c -o testFloatLog1p-testFloatLog1p.o `test -f 'testFloatLog1p.c' || echo '$(srcdir)/'`testFloatLog1p.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLog1p-testFloatLog1p.Tpo $(DEPDIR)/testFloatLog1p-testFloatLog1p.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLog1p.c' object='testFloatLog1p-testFloatLog1p.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog1p_CFLAGS) $(CFLAGS) -c -o testFloatLog1p-testFloatLog1p.o `test -f 'testFloatLog1p.c' || echo '$(srcdir)/'`testFloatLog1p.c
+
+testFloatLog1p-testFloatLog1p.obj: testFloatLog1p.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog1p_CFLAGS) $(CFLAGS) -MT testFloatLog1p-testFloatLog1p.obj -MD -MP -MF $(DEPDIR)/testFloatLog1p-testFloatLog1p.Tpo -c -o testFloatLog1p-testFloatLog1p.obj `if test -f 'testFloatLog1p.c'; then $(CYGPATH_W) 'testFloatLog1p.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLog1p.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLog1p-testFloatLog1p.Tpo $(DEPDIR)/testFloatLog1p-testFloatLog1p.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLog1p.c' object='testFloatLog1p-testFloatLog1p.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLog1p_CFLAGS) $(CFLAGS) -c -o testFloatLog1p-testFloatLog1p.obj `if test -f 'testFloatLog1p.c'; then $(CYGPATH_W) 'testFloatLog1p.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLog1p.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/clog1pa.c b/2.3-1/src/c/elementaryFunctions/log1p/clog1pa.c
new file mode 100644
index 00000000..76c78a94
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/clog1pa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log1p.h"
+
+void clog1pa(floatComplex* in, int size, floatComplex* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = clog1ps(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/clog1ps.c b/2.3-1/src/c/elementaryFunctions/log1p/clog1ps.c
new file mode 100644
index 00000000..1cf6c555
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/clog1ps.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log1p.h"
+#include "log.h"
+
+floatComplex clog1ps(floatComplex in) {
+ return clogs(FloatComplex(creals(in) + 1, cimags(in)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/dlog1pa.c b/2.3-1/src/c/elementaryFunctions/log1p/dlog1pa.c
new file mode 100644
index 00000000..c1bf85ba
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/dlog1pa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log1p.h"
+
+void dlog1pa(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dlog1ps(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/dlog1ps.c b/2.3-1/src/c/elementaryFunctions/log1p/dlog1ps.c
new file mode 100644
index 00000000..e75a05fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/dlog1ps.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 "log1p.h"
+#include "log.h"
+#include "lnp1m1.h"
+
+double dlog1ps(double in) {
+ static double A = -1.0/3.0;
+ static double B = 0.5;
+
+ if(in < -1)
+ {/* got NaN */
+ return (in - in) / (in - in); /* NaN */
+ }
+ else if(A <= in && in <= B)
+ {/* use the function log((1+g)/(1-g)) with g = x/(x + 2) */
+ return dlnp1m1s(in / (in + 2));
+ }
+ else
+ {/* use the standard formula */
+ return dlogs(in + 1);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/slog1pa.c b/2.3-1/src/c/elementaryFunctions/log1p/slog1pa.c
new file mode 100644
index 00000000..05334841
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/slog1pa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log1p.h"
+
+void slog1pa(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = slog1ps(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/slog1ps.c b/2.3-1/src/c/elementaryFunctions/log1p/slog1ps.c
new file mode 100644
index 00000000..04786524
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/slog1ps.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+
+ *
+ * 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 "log1p.h"
+#include "log.h"
+#include "lnp1m1.h"
+
+float slog1ps(float in) {
+ static double A = -1.0/3.0;
+ static double B = 0.5;
+
+ if(in < -1)
+ {/* got NaN */
+ return (in - in) / (in - in); /* NaN */
+ }
+ else if(A <= in && in <= B)
+ {/* use the function log((1+g)/(1-g)) with g = x/(x + 2) */
+ return slnp1m1s(in / (in + 2));
+ }
+ else
+ {/* use the standard formula */
+ return slogs(in + 1);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/testDoubleLog1p.c b/2.3-1/src/c/elementaryFunctions/log1p/testDoubleLog1p.c
new file mode 100644
index 00000000..2faacfaa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/testDoubleLog1p.c
@@ -0,0 +1,1255 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "testLog1p.h"
+#include "math.h"
+
+#define SOURCE {0.3628176329657435417175,0.924179898109287023544,0.5243524145334959030151,\
+0.7886543427594006061554,0.6525151440873742103577,0.2477638195268809795380,\
+0.2364655844867229461670,0.7240293831564486026764,0.8278210600838065147400,\
+0.4287728047929704189301,0.4858888480812311172485,0.5923984018154442310333,\
+0.0949383648112416267395,0.1356843891553580760956,0.9917455688118934631348,\
+0.7212927364744246006012,0.0115638775750994682312,0.0211908905766904354095,\
+0.1524727698415517807007,0.9165380974300205707550,0.4467271203175187110901,\
+0.5868234331719577312469,0.1882771886885166168213,0.4196520284749567508698,\
+0.2730510598048567771912,0.7565603456459939479828,0.9378882069140672683716,\
+0.0586007428355515003204,0.5101847248151898384094,0.5031699347309768199921,\
+0.7783576548099517822266,0.6856653341092169284821,0.1381576983258128166199,\
+0.371037633623927831650,0.6366564910858869552612,0.4961673622019588947296,\
+0.2994064847007393836975,0.2392275254242122173309,0.5618183575570583343506,\
+0.3218038142658770084381,0.1082227518782019615173,0.1685282415710389614105,\
+0.8263800088316202163696,0.4923414406366646289825,0.7863734485581517219543,\
+0.6762332352809607982635,0.0258686169981956481934,0.3594204657711088657379,\
+0.3436427963897585868835,0.2824054299853742122650,0.1450859513133764266968,\
+0.0762176741845905780792,0.5220461571589112281799,0.6713762427680194377899,\
+0.0599394328892230987549,0.7267188713885843753815,0.2224657749757170677185,\
+0.3122289828024804592133,0.4435700643807649612427,0.3983507198281586170197,\
+0.1324583934620022773743,0.8820166247896850109100,0.5455272346735000610352,\
+0.2917219498194754123688,0.7739847479388117790222,0.3354639573954045772552,\
+0.8127403985708951950073,0.4612239454872906208038,0.6898109326139092445374,\
+0.9649041066877543926239,0.8210376314818859100342,0.2802407057024538516998,\
+0.9873316427692770957947,0.294199434574693441391,0.4859610591083765029907,\
+0.2247181800194084644318,0.9585652919486165046692,0.1503968122415244579315,\
+0.0216291621327400207520,0.0688429796136915683746,0.9950710041448473930359,\
+0.7568672685883939266205,0.6163959559053182601929,0.0865804632194340229034,\
+0.5165374809876084327698,0.1916800136677920818329,0.2940570451319217681885,\
+0.3528221980668604373932,0.1317937439307570457458,0.0549608371220529079437,\
+0.929352553561329841614,0.737892795819789171219,0.7509917514398694038391,\
+0.6889848816208541393280,0.8865169286727905273438,0.6891661235131323337555,\
+0.8677108911797404289246,0.7947537912987172603607,0.2496256213635206222534,\
+0.3935408894903957843781,0.7297343472018837928772,0.7888072351925075054169,\
+0.113488640636205673218,0.4145256043411791324615,0.6172473421320319175720,\
+0.7440188056789338588715,0.9038409832864999771118,0.3976829168386757373810,\
+0.9472072543576359748840,0.2581262919120490550995,0.1955799385905265808105,\
+0.9381833248771727085114,0.4226356102153658866882,0.0937463282607495784760,\
+0.9977992679923772811890,0.2042182614095509052277,0.9455819511786103248596,\
+0.9336234177462756633759,0.9743702597916126251221,0.4100225553847849369049,\
+0.5125095760449767112732,0.0948633304797112941742,0.5688196588307619094849,\
+0.7322562676854431629181,0.8108531581237912178040,0.5459008770994842052460,\
+0.5022544711828231811523,0.7634959020651876926422,0.7354982374235987663269,\
+0.0699520572088658809662,0.6130836438387632369995,0.0965849910862743854523,\
+0.5439325878396630287170,0.9187005828134715557098,0.5072866193950176239014,\
+0.1335940570570528507233,0.8688194593414664268494,0.7999687767587602138519,\
+0.9879787657409906387329,0.7131399479694664478302,0.3067426951602101325989,\
+0.5431228461675345897675,0.7330236807465553283691,0.6498145484365522861481,\
+0.8018737239763140678406,0.2859625308774411678314,0.1894423719495534896851,\
+0.7794728656299412250519,0.5433104271069169044495,0.5268451268784701824188,\
+0.1533693112432956695557,0.6041304902173578739166,0.5948378806933760643005,\
+0.8857938847504556179047,0.0043053645640611648560,0.1302204323001205921173,\
+0.9758609728887677192688,0.9183407831005752086639,0.0624175965785980224609,\
+0.9939593323506414890289,0.4122588960453867912292,0.8258536770008504390717,\
+0.0376359503716230392456,0.4675730471499264240265,0.4759115139022469520569,\
+0.4060978214256465435028,0.0392968021333217620850,0.4401316107250750064850,\
+0.3316476037725806236267,0.0877817696891725063324,0.1150833908468484878540,\
+0.9667435702867805957794,0.8103649737313389778137,0.3928376468829810619354,\
+0.7880131229758262634277,0.4798596971668303012848,0.0270724548026919364929,\
+0.6701857983134686946869,0.5602217521518468856812,0.2564360727556049823761,\
+0.2626037681475281715393,0.4447338129393756389618,0.8522944338619709014893,\
+0.2347065494395792484283,0.3277532672509551048279,0.2253599218092858791351,\
+0.3468936551362276077271,0.7743145865388214588165,0.1285835551097989082336,\
+0.1156307714991271495819,0.2054340392351150512695,0.4535544612444937229156,\
+0.6516549764201045036316,0.0710035725496709346771,0.1265540253371000289917,\
+0.4974718545563519001007,0.0879269847646355628967,0.1462626229040324687958,\
+0.715134423226118087769,0.9305738122202455997467}
+
+#define RESULT {-1.0138549594808059506335,-0.0788485313675790222554,-0.6455912738997077182646,\
+-0.2374271494900490608870,-0.4269209307253117313685,-1.3952793271990111545477,\
+-1.4419526017799386696794,-0.3229233029497151630238,-0.1889582589621221220266,\
+-0.8468280928949678543205,-0.7217753888910144466351,-0.5235758944053595653756,\
+-2.354527389398466841186,-1.9974237581445692946147,-0.0082886876471943305572,\
+-0.3267102095711482134810,-4.459869041610169837497,-3.8541838794260296907623,\
+-1.8807692572941765440930,-0.0871516441756800402940,-0.8058073398690168698266,\
+-0.5330312996797691438289,-1.6698399941066854879068,-0.8683294147345963498452,\
+-1.2980964690333058886296,-0.2789729794097077220094,-0.0641245194730828693697,\
+-2.8370079061049158219987,-0.6729824133243695882811,-0.6868273235307851276588,\
+-0.2505691498856313370602,-0.3773656214470872405364,-1.9793595047655996310709,\
+-0.9914517831797942104544,-0.4515250293249062352174,-0.7008419853775434971155,\
+-1.205953148244055972427,-1.4303401906823356437570,-0.5765766885249945516989,\
+-1.1338131915858427056776,-2.2235636585360341044293,-1.7806519374711546888079,\
+-0.1907005521377241608061,-0.7085828181522180191365,-0.240323473997209546837,\
+-0.3912172398408133022762,-3.6547247438886865111840,-1.0232623619826317629133,\
+-1.0681525436893481995071,-1.264411545554370741584,-1.93042894450046809141,\
+-2.5741618985048786427683,-0.6499992713325659643431,-0.3984255796794416437656,\
+-2.8144206784459675496635,-0.3192155730871417684824,-1.502982009541258934249,\
+-1.1640184411209602011184,-0.8128995091446955534309,-0.9204224561330225373723,\
+-2.0214866944753584476757,-0.1255443741850884864508,-0.6060025488810325544620,\
+-1.231954157015291428934,-0.2562031110919770759971,-1.092240757863258915350,\
+-0.2073435333764902521736,-0.7738715719712579987899,-0.3713377296431035756719,\
+-0.0357265538888332026546,-0.1971863344268207918208,-1.2721063818886333418590,\
+-0.0127492850765575892191,-1.223497392724554932997,-0.7216267835832522736794,\
+-1.4929081951001816896962,-0.0423175999341945593968,-1.8944780628936490618486,\
+-3.8337127761178795282149,-2.6759270254015836698613,-0.0049411834200203501311,\
+-0.2785673796390666367984,-0.483865736386189515539,-2.446681086792801718133,\
+-0.6606074257995434573232,-1.651927892749795789840,-1.2239814994040887352611,\
+-1.0417910371382139711471,-2.026517124423018234580,-2.9011343997056400212387,\
+-0.0732671142462539837226,-0.3039567280501898061118,-0.2863606107139139989037,\
+-0.3725359507043504159185,-0.1204550575726043570857,-0.3722729288835950889336,\
+-0.1418966944811957953121,-0.2297229087732643171282,-1.3877929980613914473508,\
+-0.9325703042223095762253,-0.3150747190128889152483,-0.2372333033314831252092,\
+-2.1760525295696577785520,-0.8806205346832632896437,-0.4824854567490562962107,\
+-0.2956889680183093505050,-0.1011018375069230867958,-0.9221002825850308504130,\
+-0.0542373561426655603768,-1.3543063102932182406590,-1.6317860900845253535607,\
+-0.0638099067725128449302,-0.8612449127611128130155,-2.3671627801172654415041,\
+-0.0022031571770593774348,-1.5885659482121525787335,-0.0559547196755256631695,\
+-0.0686821150485829451382,-0.0259639040526286474231,-0.8915431076633286711086,\
+-0.6684358831783273613425,-2.3553180497276513527538,-0.5641918391516044239964,\
+-0.3116247338224413798713,-0.2096683039932461523058,-0.6053178634921361211951,\
+-0.6886483730214458809371,-0.2698475216395072595610,-0.3072071353764207479742,\
+-2.659945168598087494871,-0.4892539023727084379622,-2.3373319216128076725170,\
+-0.6089299592172232600262,-0.0847950173155939540548,-0.6786791108759814283857,\
+-2.0129495019748864237386,-0.1406199321004115432299,-0.2231825811274127380202,\
+-0.0120940736302183569906,-0.3380775973662459854552,-1.181746009333312530387,\
+-0.6104197485997391314783,-0.3105772710053884000381,-0.4310682668987352861301,\
+-0.2208041349135003439397,-1.25189448766300226445,-1.6636704065163092636226,\
+-0.2491374010581904052675,-0.6100744334370675758805,-0.6408486505219985751580,\
+-1.8749064671471911136535,-0.5039650609751163967687,-0.5194663799859419173188,\
+-0.1212709911627764675091,-5.4478934608177302933996,-2.038526631411456513376,\
+-0.0244351485261014196582,-0.0851867338269072515988,-2.7739080469083896574034,\
+-0.0060589862906551463645,-0.8861037385262900967220,-0.1913376676415258770270,\
+-3.2797955584796012473703,-0.7601996918711692030612,-0.7425233371947113081291,\
+-0.9011612089296217043000,-3.2366121340710831688625,-0.8206814815116268979622,\
+-1.1036823082060371881141,-2.4329014344197728014763,-2.1620982756055884266289,\
+-0.0338219993709664781822,-0.2102705479450195091840,-0.9343588647242980771424,\
+-0.2382405357403041268327,-0.7342615153765646995865,-3.609238495954611991579,\
+-0.4002002941250653034189,-0.5794225876492602456125,-1.36087587445700952671,\
+-1.337108967835097139698,-0.8102793489627861944768,-0.1598232322015146200656,\
+-1.449419270934711789778,-1.1154941876589379301521,-1.4900565023732303959747,\
+-1.05873701535465292167,-0.2557770454111949476328,-2.0511763516400991491651,\
+-2.1573531687271665369110,-1.5826302735280548539265,-0.7906399256902217898002,\
+-0.4282400343889684046772,-2.6450250856057104797969,-2.0670859842226763092299,\
+-0.6982162977399214431884,-2.4312485274946018520836,-1.9223514861397812403254,\
+-0.3352847494467096622905,-0.0719538807151878373469}
+
+#define ZSOURCER {0.3140813848003745079041,0.5769402063451707363129,0.1306138429790735244751,\
+0.0478980806656181812286,0.4500174494460225105286,0.0384718659333884716034,\
+0.483350999653339385986,0.2981918179430067539215,0.7112689120694994926453,\
+0.9268360524438321590424,0.9477838929742574691772,0.1729496796615421772003,\
+0.2750928336754441261292,0.0044281478039920330048,0.0611358620226383209229,\
+0.1950612799264490604401,0.3789803450927138328552,0.2549188635312020778656,\
+0.1764185149222612380981,0.6008180272765457630157,0.3703392641618847846985,\
+0.2908470141701400279999,0.5384815335273742675781,0.8090293356217443943024,\
+0.9260985879227519035339,0.1576966657303273677826,0.9518593531101942062378,\
+0.2709982101805508136749,0.1609848598018288612366,0.8782086591236293315887,\
+0.5091647170484066009521,0.7951062084175646305084,0.8432204117998480796814,\
+0.5806765086017549037933,0.3487791065126657485962,0.9397577759809792041779,\
+0.4363934816792607307434,0.5549766751937568187714,0.9105900451540946960449,\
+0.5684339576400816440582,0.1862502051517367362976,0.0800832151435315608978,\
+0.6585252787917852401733,0.1606054832227528095245,0.9711584830656647682190,\
+0.3668168033473193645477,0.7386338301002979278564,0.9722552285529673099518,\
+0.1349937235936522483826,0.4595781317912042140961,0.5414639282971620559692,\
+0.6397600513882935047150,0.0211964594200253486633,0.4408156829886138439178,\
+0.6374878138303756713867,0.3208820023573935031891,0.4267518399283289909363,\
+0.7819778784178197383881,0.0543234180659055709839,0.9666189108975231647491,\
+0.6948409983888268470764,0.1846996019594371318817,0.3645029179751873016357,\
+0.8176643461920320987701,0.664914294146001338959,0.7559730983339250087738,\
+0.5525381658226251602173,0.7192269531078636646271,0.1989364298060536384583,\
+0.8610532465390861034393,0.1300329938530921936035,0.347959163133054971695,\
+0.5025534434244036674500,0.4978472082875669002533,0.4675923939794301986694,\
+0.9447452803142368793488,0.9599315756931900978088,0.5365384514443576335907,\
+0.8122785724699497222900,0.6470989421941339969635,0.7010180121287703514099,\
+0.6681951484642922878265,0.9593638796359300613403,0.0149199557490646839142,\
+0.6199735002592206001282,0.4061129498295485973358,0.0471306145191192626953,\
+0.8433605083264410495758,0.0635268418118357658386,0.9836421324871480464935,\
+0.4434677045792341232300,0.8565507535822689533234,0.9080012599006295204163,\
+0.4922491232864558696747,0.1930142603814601898193,0.3759337724186480045319,\
+0.2437626412138342857361,0.1035623974166810512543,0.9936000052839517593384,\
+0.5569599089212715625763,0.3858396532014012336731,0.7191527518443763256073,\
+0.1707325801253318786621,0.2878904812969267368317,0.4294657362625002861023,\
+0.8917979537509381771088,0.6188817229121923446655,0.3444608678109943866730,\
+0.0692929709330201148987,0.3619817639701068401337,0.1783103235065937042236,\
+0.8941529677249491214752,0.9010278200730681419373,0.0533773354254662990570,\
+0.4162023533135652542114,0.9438270372338593006134,0.9242387460544705390930,\
+0.8710649865679442882538,0.2808376699686050415039,0.8244629004038870334625,\
+0.4650857029482722282410,0.1462343498133122920990,0.5975636970251798629761,\
+0.3067605351097881793976,0.2377215037122368812561,0.0711208949796855449677,\
+0.8753139786422252655029,0.4413500339724123477936,0.7631150623783469200134,\
+0.9679268277250230312347,0.3924236092716455459595,0.717360940296202898026,\
+0.8640465112403035163879,0.7354763629846274852753,0.0304915383458137512207,\
+0.6331009590066969394684,0.4550241930410265922546,0.3173553734086453914642,\
+0.8250397499650716781616,0.2725940425880253314972,0.3458735281601548194885,\
+0.5352854127995669841766,0.7017193175852298736572,0.9817278520204126834869,\
+0.2777477568015456199646,0.1314821145497262477875,0.366813333705067634583,\
+0.7377605927176773548126,0.9103105561807751655579,0.3637479650788009166718,\
+0.8207867145538330078125,0.3059372254647314548492,0.9788405327126383781433,\
+0.9970494522713124752045,0.4636328797787427902222,0.7769650523550808429718,\
+0.3400075891986489295959,0.0353285889141261577606,0.2607673071324825286865,\
+0.5790986777283251285553,0.1250711670145392417908,0.0372988111339509487152,\
+0.9382179621607065200806,0.5585843441076576709747,0.7192503632977604866028,\
+0.3599752518348395824432,0.6758626028895378112793,0.2222136431373655796051,\
+0.7860159231349825859070,0.1736893891356885433197,0.2674629595130681991577,\
+0.7357366015203297138214,0.0550541067495942115784,0.5923380698077380657196,\
+0.2162457890808582305908,0.7718841419555246829987,0.0926524316892027854919,\
+0.7626169077120721340179,0.7347808051854372024536,0.8017499190755188465118,\
+0.7732572900131344795227,0.2559880572371184825897,0.1179054826498031616,\
+0.9232815303839743137360,0.6709534404799342155457,0.6071323617361485958099,\
+0.4574467372149229049683,0.8206311021931469440460,0.0896153757348656654358,\
+0.3426358769647777080536,0.1674894802272319793701,0.9481152505613863468170,\
+0.9504805644974112510681,0.3436607695184648036957,0.2889420483261346817017,\
+0.5325344172306358814240,0.2558945687487721443176,0.8863505902700126171112,\
+0.0421485081315040588379,0.4876015805639326572418}
+
+#define ZSOURCEI {0.347978035919368267059,0.2037199228070676326752,0.5962978359311819076538,\
+0.8342303414829075336456,0.6809655660763382911682,0.9127784068696200847626,\
+0.5243799723684787750244,0.7204323844052851200104,0.3259664541110396385193,\
+0.1506391367875039577484,0.9124387521296739578247,0.6345743131823837757111,\
+0.9268973069265484809875,0.7633614349178969860077,0.5918717086315155029297,\
+0.9057438620366156101227,0.3263365356251597404480,0.3912780000828206539154,\
+0.4635267537087202072144,0.0849754814989864826202,0.5800507226958870887756,\
+0.7945564310066401958466,0.3823457323014736175537,0.3010852993465960025787,\
+0.5789428642019629478455,0.2627451247535645961761,0.5713048521429300308228,\
+0.1848654565401375293732,0.9971724869683384895325,0.4520535501651465892792,\
+0.0334019884467124938965,0.4553878181613981723785,0.7851976407691836357117,\
+0.4941168962977826595306,0.9304408635944128036499,0.7621670593507587909698,\
+0.9264887655153870582581,0.7199950958602130413055,0.3973621018230915069580,\
+0.8769331262446939945221,0.6766644334420561790466,0.8431562236510217189789,\
+0.7608711589127779006958,0.8287630719132721424103,0.0037989662960171699524,\
+0.9451942699961364269257,0.6311131268739700317383,0.0763222672976553440094,\
+0.4486519275233149528503,0.1080312891863286495209,0.8351444136351346969604,\
+0.3109649871475994586945,0.1235694894567131996155,0.0363539229147136211395,\
+0.6609512977302074432373,0.9844443709589540958405,0.0688076755031943321228,\
+0.5140342987142503261566,0.3807653579860925674438,0.1549817589111626148224,\
+0.6850274773314595222473,0.0382853033952414989471,0.5224257782101631164551,\
+0.7454454028047621250153,0.4607118470594286918640,0.4753002314828336238861,\
+0.8575385268777608871460,0.8073885519988834857941,0.7132545644417405128479,\
+0.0811268086545169353485,0.5751824118196964263916,0.884696914348751306534,\
+0.5624709790572524070740,0.7315255901776254177094,0.6099120099097490310669,\
+0.0705954921431839466095,0.8552806274965405464172,0.7045627343468368053436,\
+0.5928074717521667480469,0.8517647930420935153961,0.2603117255493998527527,\
+0.8596871509216725826263,0.3943212013691663742065,0.3333164160139858722687,\
+0.2511775353923439979553,0.5570420245639979839325,0.7276714108884334564209,\
+0.9383780122734606266022,0.1971746077761054039001,0.1607607132755219936371,\
+0.7815325502306222915649,0.1760376212187111377716,0.2801528992131352424622,\
+0.4699970218352973461151,0.3507726117968559265137,0.5713973813690245151520,\
+0.4563077641651034355164,0.9214398502372205257416,0.4339873101562261581421,\
+0.3514866163022816181183,0.1816438222303986549377,0.9070622171275317668915,\
+0.7665811367332935333252,0.9807842955924570560455,0.1198607003316283226013,\
+0.0508546582423150539398,0.2581452894955873489380,0.1401008707471191883087,\
+0.5514106499031186103821,0.7882929998449981212616,0.8028824776411056518555,\
+0.2425694861449301242828,0.7024780390784144401550,0.0922905071638524532318,\
+0.4318286012858152389526,0.0804965649731457233429,0.7126307198777794837952,\
+0.6893844078294932842255,0.2756213061511516571045,0.6968217701651155948639,\
+0.4598932703956961631775,0.6099067903123795986176,0.3065654132515192031860,\
+0.0749373403377830982208,0.9619921119883656501770,0.4158898773603141307831,\
+0.3287452235817909240723,0.7406168007291853427887,0.5725225014612078666687,\
+0.9504556744359433650970,0.1849336978048086166382,0.8698030491359531879425,\
+0.6907873982563614845276,0.9524399931542575359344,0.6490485109388828277588,\
+0.9960058168508112430573,0.2040582066401839256287,0.3800008497200906276703,\
+0.9729049820452928543091,0.9110585046000778675079,0.3810073928907513618469,\
+0.7869612383656203746796,0.5560158789157867431641,0.8529843934811651706696,\
+0.4350629774853587150574,0.5956362797878682613373,0.7071880977600812911987,\
+0.5747222309000790119171,0.4764349022880196571350,0.6098947445861995220184,\
+0.9666662178933620452881,0.3874611915089190006256,0.0715632727369666099548,\
+0.6122049516998231410980,0.9575729314237833023071,0.7723352131433784961700,\
+0.1287384750321507453918,0.3884150418452918529510,0.2353963479399681091309,\
+0.6542267077602446079254,0.3286431683227419853210,0.024017625954002141953,\
+0.1042741741985082626343,0.9314296473748981952667,0.8185661518946290016174,\
+0.8156488086096942424774,0.8688247688114643096924,0.3549220249988138675690,\
+0.3890381073579192161560,0.6415715864859521389008,0.4902750719338655471802,\
+0.3509976905770599842072,0.8516392158344388008118,0.1348936217837035655975,\
+0.1156354099512100219727,0.8810075619257986545563,0.8367286501452326774597,\
+0.5032693906687200069427,0.4486711751669645309448,0.9319602106697857379913,\
+0.7298459419980645179749,0.3388367067091166973114,0.4314213804900646209717,\
+0.7317318231798708438873,0.9655342241749167442322,0.2621376193128526210785,\
+0.2050140891224145889282,0.2826355365104973316193,0.3973353477194905281067,\
+0.7437736871652305126190,0.8185287192463874816895,0.3071001493372023105621,\
+0.9627068741247057914734,0.9475456266663968563080,0.6546552237123250961304,\
+0.1992082078941166400909,0.3616109425202012062073,0.9388273353688418865204,\
+0.0409001447260379791260,0.0758434669114649295807}
+
+#define ZRESULTR {-0.7576646139762764908809,-0.4912662732014974609207,-0.4935831983604013761813,\
+-0.1796001444111503253520,-0.2030603062114124668369,-0.0903746939402042676059,\
+-0.3380442117380291211504,-0.2488385719103628768156,-0.2453827611475934422636,\
+-0.0629419446509737884332,0.2743030686751847802007,-0.4189753318430110562431,\
+-0.0337034837449739430038,-0.2700068328094388236948,-0.5191589716059612502619,\
+-0.0763304013057857499991,-0.6929039668216129266298,-0.7614418400301237177530,\
+-0.7012514181881327468560,-0.4995602487864141960650,-0.3736855282655331400576,\
+-0.1670990767606896909570,-0.4148838171877601843640,-0.1470641870540525808497,\
+0.0881657571965975273010,-1.1827451998005302780115,0.1044920740886167709327,\
+-1.1145963776166571967963,0.0100332050022288142566,-0.0123498399546466911675,\
+-0.6728365416861274983518,-0.0874315516128119363248,0.1416698281269971604335,\
+-0.2712125731855208887744,-0.0063567040970050154788,0.1906009971260032298535,\
+0.0238331967155752874610,-0.0953429917974444041118,-0.0065067191893498198957,\
+0.0440644425532304637172,-0.3540655459766552382028,-0.1661126167793314234444,\
+0.0062509933701612868662,-0.1693877982336349785619,-0.0292579566847096204929,\
+0.0137816953226981269570,-0.0288761524361324552201,-0.0250652390791611112686,\
+-0.7581745137578204118967,-0.7505545612383084375097,-0.0046973071232757198853,\
+-0.3406170651999906873186,-2.0764518222153585114143,-0.8157393323281721952966,\
+-0.0852474852363154095292,0.0348077956215509243254,-0.8387202021909221372198,\
+-0.0663540586103768398329,-0.9554969196553003696337,-0.0212599130834864695483,\
+-0.0245601140031842454792,-1.6679899099681032570430,-0.4509584277017124609443,\
+0.1011698547763601602201,-0.2120439010955574854478,-0.1131958883879479044188,\
+0.0199327284817682297280,0.0781443465987670671247,-0.3004592565973881468366,\
+-0.1451799924584522560878,-0.5281452333714923286223,-0.0505933914241510074294,\
+-0.2819958038859460280889,-0.122323084811984963971,-0.2632782651610236501760,\
+-0.0540558326414990047981,0.2512879183645665981395,-0.1214932149359973512226,\
+0.0055773659320434761794,0.0673704632706614986448,-0.2906343733694730646633,\
+0.0851020319327377705587,0.0365640112295984101576,-1.0976622196833336619903,\
+-0.4020870876485082012763,-0.3719849821436939651953,-0.3158125612041708385469,\
+0.2324359424588408329360,-1.5742845766045041600023,-0.0033130260706617652329,\
+-0.1069329039454427060507,-0.1341564770393289252048,-0.0510429776001832605226,\
+-0.3847912680433241972011,-0.9153668051115183557087,-0.3798345871473772783489,\
+-0.6590618454479428844905,-0.0755413642077243097095,0.0808833545731707098669,\
+-0.417646722764209388234,-0.8522405945532404158982,0.1463133685463073596633,\
+-0.2416082657366604991012,0.0219217192558878656850,-0.8077093656959043466159,\
+-0.1128924015633438332484,-0.3996389102953575300781,-0.9892317511551623754329,\
+-0.5874413267393940873973,-0.1422192352759769073955,-0.1954743580270074387872,\
+-0.0763719684521397823573,0.1332266112260754309382,-2.2385346085566988350024,\
+-0.5112419918132667939759,-0.0541885453710462053345,0.1544990573544810508189,\
+0.1051325180789595692410,-0.9326914829433226028499,0.0764891336322670034598,\
+-0.4245421077023512346216,-0.4665013282915527192962,-0.3980722181205589849107,\
+-1.152706389176620049852,-0.0091123646200983177135,-0.8629224644504486230190,\
+-0.0671956049468366567456,-0.1483256896732535745631,-0.0470857769330114903084,\
+0.3049502630226416100001,-0.8351336293434713509143,0.1199665328310368234144,\
+0.100965515388687754328,0.1851149271955789266109,-0.4311455286578065315695,\
+0.1656739977240755667953,-0.6957805672270640506838,-0.7030137346248552798755,\
+0.2434410334133135511703,-0.0502776447144934607314,-0.6643994214275527054880,\
+-0.0494471424057717073852,-0.1105954430789197057150,0.2627700024490645658304,\
+-0.6613338575819812659162,-0.4943364682181946023753,-0.2273273919604619497381,\
+-0.0669964153308245241591,0.0270809622513717325465,-0.3423076587443550367063,\
+0.2375373770411028651051,-0.7058599113455784612725,-0.0187211007688289424178,\
+0.1570046667576522059218,0.0619494218295955287323,0.0912342621811634557627,\
+-1.0118000314587793919685,-0.9415613562651380386015,-1.04611739737066766764,\
+-0.1350076179226963601909,-1.045153664947628735504,-3.1153566294303054462489,\
+-0.0576346967934074291828,0.0825782285147220879162,0.0858710750707356584854,\
+-0.1147913938093602786994,0.0959901869720326261781,-0.8704897942843184965866,\
+-0.1312205414500346722928,-0.4084692473683823599195,-0.5825265796688483543875,\
+-0.2043543873503067542785,-0.1585071715930248537063,-0.4983971045262390875408,\
+-1.405591688480441803222,0.1581272765392360557524,-0.1721619754559372272862,\
+-0.0902428450071243726249,-0.1497365537505691013287,0.2065025609822116192671,\
+0.0613750886386554700413,-0.8564551079948240497330,-0.804653684520539647096,\
+0.1638887899169061412863,0.1619231669215081825808,-0.4135383706484943022730,\
+-0.6905772083929240245936,-0.1416337472709212619293,-0.8981660716461068449945,\
+-0.1997922350746098307805,-0.1797380100619248022298,-0.0033949848444226812805,\
+0.3022174959979692654422,0.0079098230306947625579,-0.3346557902575436060921,\
+-0.5646231542298842942529,-0.8141969637368523526888,0.2555170413707821830407,\
+-2.8347892907784113525338,-0.7063037006217763869032}
+
+#define ZRESULTI {0.8365523024247201178127,0.3394374381847692356828,1.355160662925530390410,\
+1.5134434006476746858993,0.9868300791435297147913,1.528673168936313331301,\
+0.8260899014265745687879,1.1783591647662248202977,0.4297253343366602140740,\
+0.1611216299891750081130,0.7663999599077054858398,1.3047144916618338417180,\
+1.2822880914611145541926,1.5649955384218765530591,1.4678689248356304730692,\
+1.3586758006659467312716,0.7108977814935093508808,0.9933651109027943348906,\
+1.2071246910756632253481,0.1405010934420483359464,1.0025763105214653414521,\
+1.21989563358396813086,0.6174353300937470701015,0.3562751652356153653223,\
+0.5587012199090121145062,1.0302380576516638743811,0.5405656721364887618009,\
+0.5986555168040823549092,1.4107360213988626718162,0.4753739371565622318094,\
+0.0655076733245526648952,0.5201329289544929235234,0.7497818580560413614933,\
+0.7050355621930805005704,1.2121540141336599738509,0.6814274485183255958276,\
+1.1306014284455374596661,0.9141116926495304051414,0.4114688990228685949724,\
+0.9956827833608694611200,1.3022000158632660582469,1.4761001233596913184698,\
+0.8573788009054216230354,1.379379585022410426021,0.0039117682490215858332,\
+1.2006025140002900553071,0.7070620318380608226860,0.0783395850399789817065,\
+1.2785255791075276210478,0.2308747034561683952880,0.9955835564035591112031,\
+0.4524376138027601523817,1.4009149235535949262754,0.0822834615192538504358,\
+0.8034667275967887212218,1.2557032585647818212493,0.1598599852603853899158,\
+0.5815258576469973794687,1.4290836436420499833133,0.1589807896730044689537,\
+0.7782863583371778526399,0.2043896563749957318024,0.9616073478994561218869,\
+0.7392289023091881405847,0.6059375681629087795343,0.5612744745893767372991,\
+0.9984170767670760282542,0.8430838000818645650014,1.29879528501095431459,\
+0.0939407915654127262384,1.3484611857054962236191,1.1960714214373144859138,\
+0.8415982269448546437829,0.9732366936364994502995,0.9167206383382787704406,\
+0.0745857498941502189416,0.7278097264573785141195,0.9199632393837048338625,\
+0.6304525502744320331061,0.9211062195464506663356,0.3555526540057888373880,\
+0.9100796877015666641597,0.3899732161636976779384,1.5260640477653748536824,\
+0.3849315818496458763143,0.9408368768631211187525,1.5061175798419510485360,\
+0.838676229611447277001,1.2591119550131308901797,0.1620018843959732390836,\
+1.0546671087981356329522,0.2026968016035011754816,0.299271305708051660321,\
+0.7622771187183752239491,1.067757629024185028754,0.9888735682758375000745,\
+1.0801593307389727449674,1.4588740911245949849473,0.4118082358815949306496,\
+0.5629599662610861310341,0.4399958138718327860239,0.9004381750108224613527,\
+1.3516535386697041687398,1.2852850170743990165789,0.2721670546404741375390,\
+0.0569631738604013462823,0.3951736758236387148102,0.3862903740059538404417,\
+1.4457867030840705346861,1.1403205655573340759901,1.3522555755333163229892,\
+0.264908300074692404369,0.6622029195378335009181,1.0464389789763977045567,\
+0.8038225849224520658254,0.0850815175089563863198,0.6568351393392068970911,\
+0.669491640154789569017,0.7760242270392859742500,0.7016907095208140265896,\
+0.7797846541592131641707,1.335473484345777617222,0.4740136251481967821775,\
+0.2395937042296285568455,1.3285359486862795552753,1.401425714315664317056,\
+0.3592738595863486095183,1.0333805631652628331807,0.6436572543635337151358,\
+0.7762911838119904706090,0.4403927201098556398762,0.8811512979588507210593,\
+0.674423430961778702653,0.9132365009577151360176,1.5238520140402758151765,\
+1.00458246450610100275,0.4215689680173497211335,0.874990498737184374534,\
+0.8674547514202983755638,1.2800682610709759323697,0.8336956783393613124034,\
+0.9734878037135866746254,0.6700663792657182149526,0.7153420705223627606983,\
+1.0026132338500262086711,1.3535381134312993722801,1.0923065980664201646277,\
+0.6618099327465949421878,0.4821732258146940175436,1.033019939116806895640,\
+0.8668307442664776596430,0.9024324853624734465996,0.0729804020494689703602,\
+0.5506621520352920073904,1.1198886719657494825952,0.7824098301910974440077,\
+0.3619529370272654977825,1.4800901440707066036850,0.7343084050589578914980,\
+0.8462379976616437593506,1.2071528313995831815930,0.5720924999360996743292,\
+0.1106864208392598775132,1.0305927183418297499173,0.8498909387724447039858,\
+1.15517062965696792887,0.9096742728488710350021,1.01141253782177353848,\
+0.4595989696224830889371,1.3064089912173471041967,1.071386424855859109684,\
+0.4451357270611538408112,1.5062412806888749727818,0.2239121309027737871666,\
+0.4910523338147070870896,0.8513221989625705532490,1.460513851259993778342,\
+0.5833202395880134893957,0.5481910770820362932554,0.8603624185522980027940,\
+0.7565250407629732221082,0.9237902776741101495972,1.3040155501467787235725,\
+0.6701717740731456540715,0.9634987985586029868301,0.4075854524817449364704,\
+0.4213313914917447000619,0.3316883655770838101873,1.3489670985956061510791,\
+1.1391029061589752480188,1.3689599297259111843061,0.3132420296422914196555,\
+0.7917886209906572769768,1.2228656637749606428400,1.1551462426298317875961,\
+0.3579601167993540777879,0.9549534865181378284760,0.8141418225805733266398,\
+0.7703675837106083168493,0.1543074266086776613616}
+
+
+
+
+#define SOURCE2 {2.6395560009405016899109,4.1481037065386772155762,2.8064980218186974525452,\
+1.2800584640353918075562,7.7831285959109663963318,2.1190304495394229888916,\
+1.121354666538536548615,6.8568959552794694900513,1.5312166837975382804871,\
+6.970850601792335510254,8.4155184263363480567932,4.0620247554033994674683,\
+4.09482547547668218613,8.7841258011758327484131,1.1383596854284405708313,\
+1.9983377400785684585571,5.6186607433483004570007,5.8961773291230201721,\
+6.8539796629920601844788,8.9062247332185506820679,5.0422128057107329368591,\
+3.493615407496690750122,3.8737787725403904914856,9.2228986788541078567505,\
+9.4881842611357569694519,3.4353372454643249511719,3.7601187312975525856018,\
+7.3409405630081892013550,2.6157614728435873985291,4.99349383637309074402,\
+2.6385784195736050605774,5.25356308557093143463,5.3762298030778765678406,\
+1.1999255046248435974121,2.2563034901395440101624,6.2740930821746587753296,\
+7.6084325974807143211365,0.4855662025511264801025,6.7239497276023030281067,\
+2.017172696068882942200,3.911573919467628002167,8.3003165572881698608398,\
+5.8787201577797532081604,4.8291792999953031539917,2.2328650346025824546814,\
+8.4008856676518917083740,1.2059959070757031440735,2.8553641680628061294556,\
+8.6075146449729800224304,8.494101651012897491455,5.2570608118548989295959,\
+9.9312098976224660873413,6.4885628735646605491638,9.923190940171480178833,\
+0.5004197778180241584778,7.4855065811425447463989,4.1040589986369013786316,\
+6.0845263302326202392578,8.5442108893766999244690,0.6426467280834913253784,\
+8.279082938097417354584,9.2623437754809856414795,5.6672112690284848213196,\
+5.711638936772942543030,8.1601104838773608207703,0.5689279362559318542481,\
+5.5959366867318749427795,1.2493403162807226181030,7.279222286306321620941,\
+2.6777664758265018463135,5.4653349192813038825989,9.885407658293843269348,\
+7.3956565884873270988464,0.0371731072664260864258,5.9005728596821427345276,\
+3.096467358991503715515,2.5522057106718420982361,6.2518793903291225433350,\
+1.1574173765257000923157,6.1170040909200906753540,6.7839562846347689628601,\
+3.3200952783226966857910,0.2587099233642220497131,5.1744682248681783676147,\
+3.9168732380494475364685,2.4135384149849414825439,5.064434898085892200470,\
+4.2361020017415285110474,2.8937275288626551628113,0.8879321813583374023438,\
+6.2128817522898316383362,3.4549844544380903244019,7.0648676296696066856384,\
+5.2114724926650524139404,2.8704008506610989570618,6.502795079723000526428,\
+0.8813347620889544487000,4.498763345181941986084,7.2272530803456902503967,\
+8.9767962601035833358765,2.4278218811377882957458,4.3377211131155490875244,\
+9.6770532103255391120911,5.0685344357043504714966,5.2329764096066355705261,\
+5.5969475954771041870117,5.6173070007935166358948,4.68176002614200115204,\
+7.794546722434461116791,7.9010718129575252532959,9.8085420625284314155579,\
+8.1870661024004220962524,4.2568723810836672782898,2.4615605548024177551270,\
+9.2295324662700295448303,1.000745808705687522888,4.6782181179150938987732,\
+3.9504976756870746612549,0.3661171020939946174622,5.175368534401059150696,\
+8.3254515705630183219910,6.1048321425914764404297,1.8711117887869477272034,\
+0.1895748358219861984253,8.4335647663101553916931,0.7485948316752910614014,\
+8.5328151332214474678040,0.1245901081711053848267,1.8675393564626574516296,\
+4.920584075152873992920,7.4896081397309899330,9.414957007393240928650,\
+2.1240556007251143455505,5.7950199581682682037354,2.628147569485008716583,\
+4.3609866220504045486450,9.1105451015755534172058,8.0826673656702041625977,\
+8.1026530498638749122620,2.5904283951967954635620,4.1390872886404395103455,\
+3.599927779287099838257,6.91278793383389711380,7.6568587962538003921509,\
+3.572649653069674968720,7.6933998242020606994629,5.4776339093223214149475,\
+0.9622887428849935531616,9.5611717319115996360779,2.2074085660278797149658,\
+0.1432593585923314094544,8.1914897728711366653442,1.3049928424879908561707,\
+9.6820035576820373535156,6.5613814676180481910706,2.4455389659851789474487,\
+5.2831235667690634727478,8.4689256362617015838623,7.8766220854595303535461,\
+1.262082615867257118225,7.8838609857484698295593,3.4530424699187278747559,\
+2.6598573336377739906311,9.7098186518996953964233,8.8752476638182997703552,\
+2.066752854734659194946,8.5251609655097126960754,6.7446978110820055007935,\
+9.152874383144080638886,0.2848597615957260131836,2.367841475643217563629,\
+7.0153435599058866500854,1.2025266280397772789001,8.2874121330678462982178,\
+3.1610729591920971870422,5.30519076623022556305,5.715174819342792034149,\
+0.4780154302716255187988,8.2486197212710976600647,5.7988431211560964584351,\
+2.7918082987889647483826,9.5451109297573566436768,9.0711546363309025764465,\
+3.3601493109017610549927,1.1756130633875727653503,9.2537237703800201416016,\
+7.2636712575331330299377,9.0094979386776685714722,3.9489932497963309288025,\
+5.6551797501742839813232,7.0614896761253476142883,6.7878311965614557266235,\
+4.1329363686963915824890,1.402290873229503631592,4.9523561308160424232483,\
+4.1948772873729467391968,8.6262222891673445701599,2.8575096465647220611572,\
+2.5121363671496510505676,3.389101596549153327942}
+
+
+#define RESULT2 {0.9706107215522056241852,1.4226512916310911638362,1.0319374505428213772973,\
+0.246905751916103338717,2.0519583905069445073366,0.7509586489514044060911,\
+0.1145374781176292794394,1.9252548546825831721208,0.4260626375542267973984,\
+1.9417372548863311987333,2.1300774331528766758481,1.4016815575274605976119,\
+1.4097240974656071177407,2.1729462062921069964716,0.1295883538042104654586,\
+0.6923157050192292327751,1.7260933336118711167728,1.7743042306089458204355,\
+1.9248294562744026059420,2.1867504404929474226549,1.6178450344817050243762,\
+1.2509371333857781660726,1.3542304576599399901227,2.2216893784894660157647,\
+2.2500472625069045662372,1.2341151000295289552611,1.3244505343759986892849,\
+1.993466976516135025221,0.9615552493321314342367,1.6081358323702796830901,\
+0.9702402946929443716684,1.658906529368289861637,1.6819873484154954645931,\
+0.1822594753876470019538,0.8137278503591067746470,1.8364289458354570161447,\
+2.0292571844941731384893,-0.7224396410182910566178,1.9056757389571916672,\
+0.7016968755690818904114,1.3639398299492546673406,2.1162936535075722588317,\
+1.7713390779775688432807,1.5746765360416834500512,0.8032855297427843321856,\
+2.1283371369164427733267,0.1873057044979935803486,1.0491993894614395355092,\
+2.1526356176491328042744,2.1393719992097341986437,1.659572089557145968541,\
+2.2956823132957397959331,1.870041069148148160650,2.294874536928924957380,\
+-0.6923079771535994852982,2.012968695092798743218,1.4119764836513208905444,\
+1.8057488812128539290569,2.1452539646586252786165,-0.4421601177273855043381,\
+2.1137322059948120411832,2.225957124135133913256,1.7346971570693363595694,\
+1.7425060116900870088585,2.0992577085752079923964,-0.5640015026903990591478,\
+1.7220407427170496550417,0.2226156650313379503636,1.9850240276979147502345,\
+0.9849830425057782834486,1.6984254041571493765161,2.2910596958626552321903,\
+2.0008928803872945145770,-3.2921697020833700086939,1.7750494410596528993551,\
+1.1302619000814182470549,0.9369579698639551867956,1.83288212099904845864,\
+0.146191123459191885114,1.8110724490390321950173,1.9145604545765595450035,\
+1.1999934808065779723307,-1.3520478319474638073672,1.6437365753918393718180,\
+1.3652936921609135634270,0.8810938927039604351421,1.62224256150308399071,\
+1.4436435071804869512135,1.0625454734184220928483,-0.1188599112506976002157,\
+1.8266248385955683453119,1.2398179577704631082469,1.9551342798915567477991,\
+1.6508624439841452780087,1.0544516892385875639349,1.8722320967378904832401,\
+-0.1263177455503078638888,1.5038025468266962292319,1.9778590304154859413899,\
+2.194643054750437638489,0.8869945101840888135314,1.4673491210608482493427,\
+2.2697574345222681913015,1.6230517098794554620156,1.6549802193742981781810,\
+1.7222213768989977911161,1.7258523677080592761968,1.5436741131934335058418,\
+2.0534243510350704831069,2.0669984227965598755361,2.2832536450533371663596,\
+2.1025556044304130054456,1.4485347077928583114925,0.9007955206863934582984,\
+2.2224083935232625819367,0.0007455307285780288533,1.5429172933929051758639,\
+1.3738415648213015973766,-1.0048020456777133624371,1.6439105509928255699492,\
+2.1193172771056971726011,1.8090806121136604467381,0.6265327936561931876369,\
+-1.6629714204274992361832,2.1322195493342954719651,-0.2895573875226954974060,\
+2.1439193343978621975054,-2.0827260644551484070064,0.62462171221383455677,\
+1.5934272379201788183423,2.0135164783675794097917,2.24229959570391956802,\
+0.7533272804029441660489,1.7569989208182723583462,0.9662792518179295075953,\
+1.4726983212224467045814,2.209432545000515446532,2.089721937569185339356,\
+2.09219154507008475719,0.951823265584673561257,1.4204753018509210793496,\
+1.2809137839516946399954,1.9333730200617991190626,2.0356018208291457582959,\
+1.273307520236932832702,2.0403627955950214278857,1.700673239349282273025,\
+-0.0384407248228896478159,2.257710285652239079468,0.7918192329452391486910,\
+-1.943098595033752262751,2.1030957827723826270017,0.2661975560760838632746,\
+2.2702688589706512267696,1.8812011703610473922765,0.8942655346201515698112,\
+1.6645175074163265360738,2.136403657202092354339,2.0638991426068855616904,\
+0.2327632262134610163784,2.0648177566830252516183,1.2392557177584351268962,\
+0.9782724873844932389488,2.273137605702431063293,2.183266240754464071472,\
+0.7259787064172199544387,2.1430219045760425800040,1.9087566867408878312773,\
+2.2140679701900434217521,-1.255758284393388990452,0.8619787703734573813819,\
+1.9480996873952269865526,0.1844248666526293323198,2.114737753111020968078,\
+1.1509115140149177580753,1.668685731123507043350,1.7431248863402162285752,\
+-0.7381122661087159420035,2.1100458798366994450646,1.7576584357875708608532,\
+1.0266895216506544131,2.2560290788762715763482,2.205099558817555038814,\
+1.2119854107561658373982,0.1617897676032789000544,2.2250260402856771868585,\
+1.9828853838780200469216,2.1982793473903963210603,1.373460672957984574083,\
+1.73257189512379894403,1.9546560315313432631967,1.9151314791431239825670,\
+1.4189881394992434060498,0.3381072372999247011016,1.5998634493586285643119,\
+1.4338640873752146465137,2.15480666756291494579,1.0499504925567986202140,\
+0.9211335334181942613441,1.2205648705022635880368}
+
+
+
+#define ZSOURCER {0.3140813848003745079041,0.5769402063451707363129,0.1306138429790735244751,\
+0.0478980806656181812286,0.4500174494460225105286,0.0384718659333884716034,\
+0.483350999653339385986,0.2981918179430067539215,0.7112689120694994926453,\
+0.9268360524438321590424,0.9477838929742574691772,0.1729496796615421772003,\
+0.2750928336754441261292,0.0044281478039920330048,0.0611358620226383209229,\
+0.1950612799264490604401,0.3789803450927138328552,0.2549188635312020778656,\
+0.1764185149222612380981,0.6008180272765457630157,0.3703392641618847846985,\
+0.2908470141701400279999,0.5384815335273742675781,0.8090293356217443943024,\
+0.9260985879227519035339,0.1576966657303273677826,0.9518593531101942062378,\
+0.2709982101805508136749,0.1609848598018288612366,0.8782086591236293315887,\
+0.5091647170484066009521,0.7951062084175646305084,0.8432204117998480796814,\
+0.5806765086017549037933,0.3487791065126657485962,0.9397577759809792041779,\
+0.4363934816792607307434,0.5549766751937568187714,0.9105900451540946960449,\
+0.5684339576400816440582,0.1862502051517367362976,0.0800832151435315608978,\
+0.6585252787917852401733,0.1606054832227528095245,0.9711584830656647682190,\
+0.3668168033473193645477,0.7386338301002979278564,0.9722552285529673099518,\
+0.1349937235936522483826,0.4595781317912042140961,0.5414639282971620559692,\
+0.6397600513882935047150,0.0211964594200253486633,0.4408156829886138439178,\
+0.6374878138303756713867,0.3208820023573935031891,0.4267518399283289909363,\
+0.7819778784178197383881,0.0543234180659055709839,0.9666189108975231647491,\
+0.6948409983888268470764,0.1846996019594371318817,0.3645029179751873016357,\
+0.8176643461920320987701,0.664914294146001338959,0.7559730983339250087738,\
+0.5525381658226251602173,0.7192269531078636646271,0.1989364298060536384583,\
+0.8610532465390861034393,0.1300329938530921936035,0.347959163133054971695,\
+0.5025534434244036674500,0.4978472082875669002533,0.4675923939794301986694,\
+0.9447452803142368793488,0.9599315756931900978088,0.5365384514443576335907,\
+0.8122785724699497222900,0.6470989421941339969635,0.7010180121287703514099,\
+0.6681951484642922878265,0.9593638796359300613403,0.0149199557490646839142,\
+0.6199735002592206001282,0.4061129498295485973358,0.0471306145191192626953,\
+0.8433605083264410495758,0.0635268418118357658386,0.9836421324871480464935,\
+0.4434677045792341232300,0.8565507535822689533234,0.9080012599006295204163,\
+0.4922491232864558696747,0.1930142603814601898193,0.3759337724186480045319,\
+0.2437626412138342857361,0.1035623974166810512543,0.9936000052839517593384,\
+0.5569599089212715625763,0.3858396532014012336731,0.7191527518443763256073,\
+0.1707325801253318786621,0.2878904812969267368317,0.4294657362625002861023,\
+0.8917979537509381771088,0.6188817229121923446655,0.3444608678109943866730,\
+0.0692929709330201148987,0.3619817639701068401337,0.1783103235065937042236,\
+0.8941529677249491214752,0.9010278200730681419373,0.0533773354254662990570,\
+0.4162023533135652542114,0.9438270372338593006134,0.9242387460544705390930,\
+0.8710649865679442882538,0.2808376699686050415039,0.8244629004038870334625,\
+0.4650857029482722282410,0.1462343498133122920990,0.5975636970251798629761,\
+0.3067605351097881793976,0.2377215037122368812561,0.0711208949796855449677,\
+0.8753139786422252655029,0.4413500339724123477936,0.7631150623783469200134,\
+0.9679268277250230312347,0.3924236092716455459595,0.717360940296202898026,\
+0.8640465112403035163879,0.7354763629846274852753,0.0304915383458137512207,\
+0.6331009590066969394684,0.4550241930410265922546,0.3173553734086453914642,\
+0.8250397499650716781616,0.2725940425880253314972,0.3458735281601548194885,\
+0.5352854127995669841766,0.7017193175852298736572,0.9817278520204126834869,\
+0.2777477568015456199646,0.1314821145497262477875,0.366813333705067634583,\
+0.7377605927176773548126,0.9103105561807751655579,0.3637479650788009166718,\
+0.8207867145538330078125,0.3059372254647314548492,0.9788405327126383781433,\
+0.9970494522713124752045,0.4636328797787427902222,0.7769650523550808429718,\
+0.3400075891986489295959,0.0353285889141261577606,0.2607673071324825286865,\
+0.5790986777283251285553,0.1250711670145392417908,0.0372988111339509487152,\
+0.9382179621607065200806,0.5585843441076576709747,0.7192503632977604866028,\
+0.3599752518348395824432,0.6758626028895378112793,0.2222136431373655796051,\
+0.7860159231349825859070,0.1736893891356885433197,0.2674629595130681991577,\
+0.7357366015203297138214,0.0550541067495942115784,0.5923380698077380657196,\
+0.2162457890808582305908,0.7718841419555246829987,0.0926524316892027854919,\
+0.7626169077120721340179,0.7347808051854372024536,0.8017499190755188465118,\
+0.7732572900131344795227,0.2559880572371184825897,0.1179054826498031616,\
+0.9232815303839743137360,0.6709534404799342155457,0.6071323617361485958099,\
+0.4574467372149229049683,0.8206311021931469440460,0.0896153757348656654358,\
+0.3426358769647777080536,0.1674894802272319793701,0.9481152505613863468170,\
+0.9504805644974112510681,0.3436607695184648036957,0.2889420483261346817017,\
+0.5325344172306358814240,0.2558945687487721443176,0.8863505902700126171112,\
+0.0421485081315040588379,0.4876015805639326572418}
+
+#define ZSOURCEI {0.347978035919368267059,0.2037199228070676326752,0.5962978359311819076538,\
+0.8342303414829075336456,0.6809655660763382911682,0.9127784068696200847626,\
+0.5243799723684787750244,0.7204323844052851200104,0.3259664541110396385193,\
+0.1506391367875039577484,0.9124387521296739578247,0.6345743131823837757111,\
+0.9268973069265484809875,0.7633614349178969860077,0.5918717086315155029297,\
+0.9057438620366156101227,0.3263365356251597404480,0.3912780000828206539154,\
+0.4635267537087202072144,0.0849754814989864826202,0.5800507226958870887756,\
+0.7945564310066401958466,0.3823457323014736175537,0.3010852993465960025787,\
+0.5789428642019629478455,0.2627451247535645961761,0.5713048521429300308228,\
+0.1848654565401375293732,0.9971724869683384895325,0.4520535501651465892792,\
+0.0334019884467124938965,0.4553878181613981723785,0.7851976407691836357117,\
+0.4941168962977826595306,0.9304408635944128036499,0.7621670593507587909698,\
+0.9264887655153870582581,0.7199950958602130413055,0.3973621018230915069580,\
+0.8769331262446939945221,0.6766644334420561790466,0.8431562236510217189789,\
+0.7608711589127779006958,0.8287630719132721424103,0.0037989662960171699524,\
+0.9451942699961364269257,0.6311131268739700317383,0.0763222672976553440094,\
+0.4486519275233149528503,0.1080312891863286495209,0.8351444136351346969604,\
+0.3109649871475994586945,0.1235694894567131996155,0.0363539229147136211395,\
+0.6609512977302074432373,0.9844443709589540958405,0.0688076755031943321228,\
+0.5140342987142503261566,0.3807653579860925674438,0.1549817589111626148224,\
+0.6850274773314595222473,0.0382853033952414989471,0.5224257782101631164551,\
+0.7454454028047621250153,0.4607118470594286918640,0.4753002314828336238861,\
+0.8575385268777608871460,0.8073885519988834857941,0.7132545644417405128479,\
+0.0811268086545169353485,0.5751824118196964263916,0.884696914348751306534,\
+0.5624709790572524070740,0.7315255901776254177094,0.6099120099097490310669,\
+0.0705954921431839466095,0.8552806274965405464172,0.7045627343468368053436,\
+0.5928074717521667480469,0.8517647930420935153961,0.2603117255493998527527,\
+0.8596871509216725826263,0.3943212013691663742065,0.3333164160139858722687,\
+0.2511775353923439979553,0.5570420245639979839325,0.7276714108884334564209,\
+0.9383780122734606266022,0.1971746077761054039001,0.1607607132755219936371,\
+0.7815325502306222915649,0.1760376212187111377716,0.2801528992131352424622,\
+0.4699970218352973461151,0.3507726117968559265137,0.5713973813690245151520,\
+0.4563077641651034355164,0.9214398502372205257416,0.4339873101562261581421,\
+0.3514866163022816181183,0.1816438222303986549377,0.9070622171275317668915,\
+0.7665811367332935333252,0.9807842955924570560455,0.1198607003316283226013,\
+0.0508546582423150539398,0.2581452894955873489380,0.1401008707471191883087,\
+0.5514106499031186103821,0.7882929998449981212616,0.8028824776411056518555,\
+0.2425694861449301242828,0.7024780390784144401550,0.0922905071638524532318,\
+0.4318286012858152389526,0.0804965649731457233429,0.7126307198777794837952,\
+0.6893844078294932842255,0.2756213061511516571045,0.6968217701651155948639,\
+0.4598932703956961631775,0.6099067903123795986176,0.3065654132515192031860,\
+0.0749373403377830982208,0.9619921119883656501770,0.4158898773603141307831,\
+0.3287452235817909240723,0.7406168007291853427887,0.5725225014612078666687,\
+0.9504556744359433650970,0.1849336978048086166382,0.8698030491359531879425,\
+0.6907873982563614845276,0.9524399931542575359344,0.6490485109388828277588,\
+0.9960058168508112430573,0.2040582066401839256287,0.3800008497200906276703,\
+0.9729049820452928543091,0.9110585046000778675079,0.3810073928907513618469,\
+0.7869612383656203746796,0.5560158789157867431641,0.8529843934811651706696,\
+0.4350629774853587150574,0.5956362797878682613373,0.7071880977600812911987,\
+0.5747222309000790119171,0.4764349022880196571350,0.6098947445861995220184,\
+0.9666662178933620452881,0.3874611915089190006256,0.0715632727369666099548,\
+0.6122049516998231410980,0.9575729314237833023071,0.7723352131433784961700,\
+0.1287384750321507453918,0.3884150418452918529510,0.2353963479399681091309,\
+0.6542267077602446079254,0.3286431683227419853210,0.024017625954002141953,\
+0.1042741741985082626343,0.9314296473748981952667,0.8185661518946290016174,\
+0.8156488086096942424774,0.8688247688114643096924,0.3549220249988138675690,\
+0.3890381073579192161560,0.6415715864859521389008,0.4902750719338655471802,\
+0.3509976905770599842072,0.8516392158344388008118,0.1348936217837035655975,\
+0.1156354099512100219727,0.8810075619257986545563,0.8367286501452326774597,\
+0.5032693906687200069427,0.4486711751669645309448,0.9319602106697857379913,\
+0.7298459419980645179749,0.3388367067091166973114,0.4314213804900646209717,\
+0.7317318231798708438873,0.9655342241749167442322,0.2621376193128526210785,\
+0.2050140891224145889282,0.2826355365104973316193,0.3973353477194905281067,\
+0.7437736871652305126190,0.8185287192463874816895,0.3071001493372023105621,\
+0.9627068741247057914734,0.9475456266663968563080,0.6546552237123250961304,\
+0.1992082078941166400909,0.3616109425202012062073,0.9388273353688418865204,\
+0.0409001447260379791260,0.0758434669114649295807}
+
+#define ZRESULTR {-0.7576646139762764908809,-0.4912662732014974609207,-0.4935831983604013761813,\
+-0.1796001444111503253520,-0.2030603062114124668369,-0.0903746939402042676059,\
+-0.3380442117380291211504,-0.2488385719103628768156,-0.2453827611475934422636,\
+-0.0629419446509737884332,0.2743030686751847802007,-0.4189753318430110562431,\
+-0.0337034837449739430038,-0.2700068328094388236948,-0.5191589716059612502619,\
+-0.0763304013057857499991,-0.6929039668216129266298,-0.7614418400301237177530,\
+-0.7012514181881327468560,-0.4995602487864141960650,-0.3736855282655331400576,\
+-0.1670990767606896909570,-0.4148838171877601843640,-0.1470641870540525808497,\
+0.0881657571965975273010,-1.1827451998005302780115,0.1044920740886167709327,\
+-1.1145963776166571967963,0.0100332050022288142566,-0.0123498399546466911675,\
+-0.6728365416861274983518,-0.0874315516128119363248,0.1416698281269971604335,\
+-0.2712125731855208887744,-0.0063567040970050154788,0.1906009971260032298535,\
+0.0238331967155752874610,-0.0953429917974444041118,-0.0065067191893498198957,\
+0.0440644425532304637172,-0.3540655459766552382028,-0.1661126167793314234444,\
+0.0062509933701612868662,-0.1693877982336349785619,-0.0292579566847096204929,\
+0.0137816953226981269570,-0.0288761524361324552201,-0.0250652390791611112686,\
+-0.7581745137578204118967,-0.7505545612383084375097,-0.0046973071232757198853,\
+-0.3406170651999906873186,-2.0764518222153585114143,-0.8157393323281721952966,\
+-0.0852474852363154095292,0.0348077956215509243254,-0.8387202021909221372198,\
+-0.0663540586103768398329,-0.9554969196553003696337,-0.0212599130834864695483,\
+-0.0245601140031842454792,-1.6679899099681032570430,-0.4509584277017124609443,\
+0.1011698547763601602201,-0.2120439010955574854478,-0.1131958883879479044188,\
+0.0199327284817682297280,0.0781443465987670671247,-0.3004592565973881468366,\
+-0.1451799924584522560878,-0.5281452333714923286223,-0.0505933914241510074294,\
+-0.2819958038859460280889,-0.122323084811984963971,-0.2632782651610236501760,\
+-0.0540558326414990047981,0.2512879183645665981395,-0.1214932149359973512226,\
+0.0055773659320434761794,0.0673704632706614986448,-0.2906343733694730646633,\
+0.0851020319327377705587,0.0365640112295984101576,-1.0976622196833336619903,\
+-0.4020870876485082012763,-0.3719849821436939651953,-0.3158125612041708385469,\
+0.2324359424588408329360,-1.5742845766045041600023,-0.0033130260706617652329,\
+-0.1069329039454427060507,-0.1341564770393289252048,-0.0510429776001832605226,\
+-0.3847912680433241972011,-0.9153668051115183557087,-0.3798345871473772783489,\
+-0.6590618454479428844905,-0.0755413642077243097095,0.0808833545731707098669,\
+-0.417646722764209388234,-0.8522405945532404158982,0.1463133685463073596633,\
+-0.2416082657366604991012,0.0219217192558878656850,-0.8077093656959043466159,\
+-0.1128924015633438332484,-0.3996389102953575300781,-0.9892317511551623754329,\
+-0.5874413267393940873973,-0.1422192352759769073955,-0.1954743580270074387872,\
+-0.0763719684521397823573,0.1332266112260754309382,-2.2385346085566988350024,\
+-0.5112419918132667939759,-0.0541885453710462053345,0.1544990573544810508189,\
+0.1051325180789595692410,-0.9326914829433226028499,0.0764891336322670034598,\
+-0.4245421077023512346216,-0.4665013282915527192962,-0.3980722181205589849107,\
+-1.152706389176620049852,-0.0091123646200983177135,-0.8629224644504486230190,\
+-0.0671956049468366567456,-0.1483256896732535745631,-0.0470857769330114903084,\
+0.3049502630226416100001,-0.8351336293434713509143,0.1199665328310368234144,\
+0.100965515388687754328,0.1851149271955789266109,-0.4311455286578065315695,\
+0.1656739977240755667953,-0.6957805672270640506838,-0.7030137346248552798755,\
+0.2434410334133135511703,-0.0502776447144934607314,-0.6643994214275527054880,\
+-0.0494471424057717073852,-0.1105954430789197057150,0.2627700024490645658304,\
+-0.6613338575819812659162,-0.4943364682181946023753,-0.2273273919604619497381,\
+-0.0669964153308245241591,0.0270809622513717325465,-0.3423076587443550367063,\
+0.2375373770411028651051,-0.7058599113455784612725,-0.0187211007688289424178,\
+0.1570046667576522059218,0.0619494218295955287323,0.0912342621811634557627,\
+-1.0118000314587793919685,-0.9415613562651380386015,-1.04611739737066766764,\
+-0.1350076179226963601909,-1.045153664947628735504,-3.1153566294303054462489,\
+-0.0576346967934074291828,0.0825782285147220879162,0.0858710750707356584854,\
+-0.1147913938093602786994,0.0959901869720326261781,-0.8704897942843184965866,\
+-0.1312205414500346722928,-0.4084692473683823599195,-0.5825265796688483543875,\
+-0.2043543873503067542785,-0.1585071715930248537063,-0.4983971045262390875408,\
+-1.405591688480441803222,0.1581272765392360557524,-0.1721619754559372272862,\
+-0.0902428450071243726249,-0.1497365537505691013287,0.2065025609822116192671,\
+0.0613750886386554700413,-0.8564551079948240497330,-0.804653684520539647096,\
+0.1638887899169061412863,0.1619231669215081825808,-0.4135383706484943022730,\
+-0.6905772083929240245936,-0.1416337472709212619293,-0.8981660716461068449945,\
+-0.1997922350746098307805,-0.1797380100619248022298,-0.0033949848444226812805,\
+0.3022174959979692654422,0.0079098230306947625579,-0.3346557902575436060921,\
+-0.5646231542298842942529,-0.8141969637368523526888,0.2555170413707821830407,\
+-2.8347892907784113525338,-0.7063037006217763869032}
+
+#define ZRESULTI {0.8365523024247201178127,0.3394374381847692356828,1.355160662925530390410,\
+1.5134434006476746858993,0.9868300791435297147913,1.528673168936313331301,\
+0.8260899014265745687879,1.1783591647662248202977,0.4297253343366602140740,\
+0.1611216299891750081130,0.7663999599077054858398,1.3047144916618338417180,\
+1.2822880914611145541926,1.5649955384218765530591,1.4678689248356304730692,\
+1.3586758006659467312716,0.7108977814935093508808,0.9933651109027943348906,\
+1.2071246910756632253481,0.1405010934420483359464,1.0025763105214653414521,\
+1.21989563358396813086,0.6174353300937470701015,0.3562751652356153653223,\
+0.5587012199090121145062,1.0302380576516638743811,0.5405656721364887618009,\
+0.5986555168040823549092,1.4107360213988626718162,0.4753739371565622318094,\
+0.0655076733245526648952,0.5201329289544929235234,0.7497818580560413614933,\
+0.7050355621930805005704,1.2121540141336599738509,0.6814274485183255958276,\
+1.1306014284455374596661,0.9141116926495304051414,0.4114688990228685949724,\
+0.9956827833608694611200,1.3022000158632660582469,1.4761001233596913184698,\
+0.8573788009054216230354,1.379379585022410426021,0.0039117682490215858332,\
+1.2006025140002900553071,0.7070620318380608226860,0.0783395850399789817065,\
+1.2785255791075276210478,0.2308747034561683952880,0.9955835564035591112031,\
+0.4524376138027601523817,1.4009149235535949262754,0.0822834615192538504358,\
+0.8034667275967887212218,1.2557032585647818212493,0.1598599852603853899158,\
+0.5815258576469973794687,1.4290836436420499833133,0.1589807896730044689537,\
+0.7782863583371778526399,0.2043896563749957318024,0.9616073478994561218869,\
+0.7392289023091881405847,0.6059375681629087795343,0.5612744745893767372991,\
+0.9984170767670760282542,0.8430838000818645650014,1.29879528501095431459,\
+0.0939407915654127262384,1.3484611857054962236191,1.1960714214373144859138,\
+0.8415982269448546437829,0.9732366936364994502995,0.9167206383382787704406,\
+0.0745857498941502189416,0.7278097264573785141195,0.9199632393837048338625,\
+0.6304525502744320331061,0.9211062195464506663356,0.3555526540057888373880,\
+0.9100796877015666641597,0.3899732161636976779384,1.5260640477653748536824,\
+0.3849315818496458763143,0.9408368768631211187525,1.5061175798419510485360,\
+0.838676229611447277001,1.2591119550131308901797,0.1620018843959732390836,\
+1.0546671087981356329522,0.2026968016035011754816,0.299271305708051660321,\
+0.7622771187183752239491,1.067757629024185028754,0.9888735682758375000745,\
+1.0801593307389727449674,1.4588740911245949849473,0.4118082358815949306496,\
+0.5629599662610861310341,0.4399958138718327860239,0.9004381750108224613527,\
+1.3516535386697041687398,1.2852850170743990165789,0.2721670546404741375390,\
+0.0569631738604013462823,0.3951736758236387148102,0.3862903740059538404417,\
+1.4457867030840705346861,1.1403205655573340759901,1.3522555755333163229892,\
+0.264908300074692404369,0.6622029195378335009181,1.0464389789763977045567,\
+0.8038225849224520658254,0.0850815175089563863198,0.6568351393392068970911,\
+0.669491640154789569017,0.7760242270392859742500,0.7016907095208140265896,\
+0.7797846541592131641707,1.335473484345777617222,0.4740136251481967821775,\
+0.2395937042296285568455,1.3285359486862795552753,1.401425714315664317056,\
+0.3592738595863486095183,1.0333805631652628331807,0.6436572543635337151358,\
+0.7762911838119904706090,0.4403927201098556398762,0.8811512979588507210593,\
+0.674423430961778702653,0.9132365009577151360176,1.5238520140402758151765,\
+1.00458246450610100275,0.4215689680173497211335,0.874990498737184374534,\
+0.8674547514202983755638,1.2800682610709759323697,0.8336956783393613124034,\
+0.9734878037135866746254,0.6700663792657182149526,0.7153420705223627606983,\
+1.0026132338500262086711,1.3535381134312993722801,1.0923065980664201646277,\
+0.6618099327465949421878,0.4821732258146940175436,1.033019939116806895640,\
+0.8668307442664776596430,0.9024324853624734465996,0.0729804020494689703602,\
+0.5506621520352920073904,1.1198886719657494825952,0.7824098301910974440077,\
+0.3619529370272654977825,1.4800901440707066036850,0.7343084050589578914980,\
+0.8462379976616437593506,1.2071528313995831815930,0.5720924999360996743292,\
+0.1106864208392598775132,1.0305927183418297499173,0.8498909387724447039858,\
+1.15517062965696792887,0.9096742728488710350021,1.01141253782177353848,\
+0.4595989696224830889371,1.3064089912173471041967,1.071386424855859109684,\
+0.4451357270611538408112,1.5062412806888749727818,0.2239121309027737871666,\
+0.4910523338147070870896,0.8513221989625705532490,1.460513851259993778342,\
+0.5833202395880134893957,0.5481910770820362932554,0.8603624185522980027940,\
+0.7565250407629732221082,0.9237902776741101495972,1.3040155501467787235725,\
+0.6701717740731456540715,0.9634987985586029868301,0.4075854524817449364704,\
+0.4213313914917447000619,0.3316883655770838101873,1.3489670985956061510791,\
+1.1391029061589752480188,1.3689599297259111843061,0.3132420296422914196555,\
+0.7917886209906572769768,1.2228656637749606428400,1.1551462426298317875961,\
+0.3579601167993540777879,0.9549534865181378284760,0.8141418225805733266398,\
+0.7703675837106083168493,0.1543074266086776613616}
+
+
+
+#define ZSOURCE2R {3.9219759730622172355652,4.6815521270036697387695,3.361602746881544589996,\
+5.3368766140192747116089,2.03906395938247442245,1.5899897180497646331787,\
+0.1818151073530316352844,4.0983706060796976089478,0.1058345986530184745789,\
+1.9653097167611122131348,2.7255953708663582801819,3.4376550372689962387085,\
+2.0337020372971892356873,3.0119446106255054473877,2.7625959040597081184387,\
+2.9445307422429323196411,5.7180739520117640495300,2.141770124435424804688,\
+6.8954616272822022438049,5.8555728476494550704956,4.2041230341419577598572,\
+4.2775720171630382537842,3.1845858739688992500305,5.7618944440037012100220,\
+4.2549022240564227104187,9.7619816288352012634277,2.518960000015795230866,\
+4.3911290075629949569702,0.7593036955222487449646,2.5593801774084568023682,\
+0.6706167431548237800598,7.6511315722018480300903,0.4173615900799632072449,\
+3.438271805644035339356,1.9701673323288559913635,2.1228986512869596481323,\
+3.1403985014185309410095,7.8216253779828548431396,0.5409323470667004585266,\
+9.1902069095522165298462,4.6035157097503542900085,2.9926850274205207824707,\
+0.0291663268581032752991,8.9934705849736928939819,8.3879271661862730979919,\
+4.3437494523823261260986,7.7678761305287480354309,1.3953176606446504592896,\
+1.1506372271105647087097,5.3554199635982513427734,4.3117330456152558326721,\
+6.145384786650538444519,9.2589621385559439659119,0.9938172809779644012451,\
+4.2805786477401852607727,9.431830951943993568420,0.3273952705785632133484,\
+9.2132670804858207702637,9.4490244099870324134827,9.007069906219840049744,\
+8.0943161016330122947693,0.2519542910158634185791,0.0196450622752308845520,\
+5.0752213317900896072388,4.0760429529473185539246,8.4080461412668228149414,\
+5.017265700735151767731,9.1287807654589414596558,4.4357294728979468345642,\
+5.9837839566171169281006,7.7418426470831036567688,7.9220082703977823257446,\
+5.5046048713847994804382,4.0850437059998512268066,7.2174380579963326454163,\
+4.768535858020186424255,6.3930579042062163352966,9.963865298777818679810,\
+1.5747882844880223274231,5.3506936598569154739380,2.1290646074339747428894,\
+5.59145063161849975586,4.304965981282293796539,0.2280548494309186935425,\
+5.7614597817882895469666,7.1491303853690624237061,9.3216359661892056465149,\
+1.2326993141323328018188,2.8655522270128130912781,0.1247995719313621520996,\
+5.7694048294797539710999,3.9386960770934820175171,6.8885837262496352195740,\
+9.7023218311369419097900,8.51576429326087236404,3.3933044690638780593872,\
+8.7725317804142832756042,1.1314024776220321655273,5.2641283208504319190979,\
+5.297394050285220146179,9.2917560925707221031189,9.7654302977025508880615,\
+6.2254639761522412300110,9.822583282366394996643,7.5429888023063540458679,\
+5.4547880962491035461426,7.2860160330310463905334,0.2525969501584768295288,\
+4.0251684701070189476013,0.9831319935619831085205,2.6086253346875309944153,\
+3.6363423336297273635864,1.7466178117319941520691,9.2341394722461700439453,\
+7.6051409030333161354065,5.6402041297405958175659,3.7970651825889945030212,\
+8.7762261740863323211670,8.21742579806596040726,6.787058124318718910217,\
+0.8220098121091723442078,2.5527314469218254089355,7.4444567272439599037170,\
+2.2695036139339208602905,6.836930788122117519379,9.3650726415216922760010,\
+5.0530174048617482185364,2.5248145777732133865356,6.8188397912308573722839,\
+2.8363681584596633911133,1.409485661424696445465,6.7591095995157957077026,\
+4.5126775791868567466736,7.5430292449891567230225,1.3702143030241131782532,\
+6.6082405392080545425415,3.8900542212650179862976,7.001820541918277740479,\
+9.168005720712244510651,2.1228999551385641098022,2.6978330826386809349060,\
+3.1998893804848194122314,0.2321802498772740364075,7.26544727571308612823,\
+1.5340585587546229362488,2.3552638292312622070312,0.8797382796183228492737,\
+7.1059537213295698165894,6.8887275597080588340759,6.5953194908797740936279,\
+1.8151161121204495429993,3.9049659762531518936157,1.5869047446176409721375,\
+6.2407150492072105407715,6.3760355720296502113342,4.2704886104911565780640,\
+1.0716815060004591941833,2.3822965659201145172119,9.4629473658278584480286,\
+4.5766852516680955886841,8.9644787041470408439636,4.4384705275297164916992,\
+8.08956819120794534683,6.8317985069006681442261,0.3401931514963507652283,\
+2.3805456422269344329834,9.4920115964487195014954,2.1827886346727609634399,\
+6.1546878470107913017273,8.3135433867573738098145,7.7340125897899270057678,\
+4.2441909667104482650757,7.262125960551202297211,7.0999773032963275909424,\
+4.7457459988072514533997,9.4386920798569917678833,1.4596485672518610954285,\
+0.7141010463237762451172,6.7337385797873139381409,6.536924717947840690613,\
+1.996896131895482540131,6.01412517949938774109,1.8993748771026730537415,\
+2.5839814636856317520142,0.9878737432882189750671,0.6199027225375175476074,\
+0.4034968325868248939514,7.4001471605151891708374,6.1626600986346602439880,\
+6.5835834480822086334229,2.5145971449092030525208,3.8433500844985246658325,\
+4.3964602379128336906433,6.5407369285821914672852,5.878106378950178623200,\
+6.0208318661898374557495,0.4535020282492041587830,2.0294443331658840179443,\
+7.844273825176060199738,2.6375361625105142593384}
+
+
+#define ZSOURCE2I {4.3832763982936739921570,8.6648589745163917541504,3.7921421090140938758850,\
+7.6687160786241292953491,6.0066213225945830345154,7.85673560574650764465,\
+7.3871155502274632453918,5.5442603398114442825317,9.9291495559737086296082,\
+9.757428467273712158203,3.709622272290289402008,3.0322382133454084396362,\
+9.5195201179012656211853,7.1278580836951732635498,1.192370061762630939484,\
+5.0091631803661584854126,3.2900535268709063529968,4.8089468106627464294434,\
+3.3036959776654839515686,6.3044753577560186386108,2.1171907847747206687927,\
+4.4860231317579746246338,5.9145097108557820320129,6.8067426700145006179810,\
+0.7392961112782359123230,9.4336947053670883178711,1.2863306934013962745667,\
+2.0190807711333036422729,1.9693034281954169273376,8.9286901615560054779053,\
+4.6179189579561352729797,6.2512917164713144302368,7.0597065938636660575867,\
+7.0181696489453315734863,4.0879997471347451210022,0.6362213846296072006226,\
+0.6573933875188231468201,5.3310041315853595733643,0.3315818728879094123840,\
+3.157835649326443672180,3.785823243670165538788,4.6195234358310699462891,\
+6.2873698258772492408752,2.8785153012722730636597,3.2920487364754080772400,\
+4.7192330472171306610107,3.3537696348503232002258,5.5530697200447320938110,\
+1.196080814115703105927,7.6139996573328971862793,4.7909884760156273841858,\
+2.8169692959636449813843,2.380097783170640468597,3.2942054606974124908447,\
+2.3067280324175953865051,2.1362966019660234451294,4.0549980429932475090027,\
+3.0953712016344070434570,6.762971603311598300934,9.7069163154810667037964,\
+5.4417965700849890708923,0.2047479711472988128662,8.9413649635389447212219,\
+3.4903638903051614761353,1.1053651524707674980164,2.0233777537941932678223,\
+1.3046909729018807411194,8.573952978476881980896,6.3780163740739226341248,\
+4.0711227245628833770752,6.6919379355385899543762,2.042601602151989936829,\
+8.3104313490912318229675,0.1221632957458496093750,4.8844617092981934547424,\
+9.549877075478434562683,0.5874312063679099082947,8.2584649138152599334717,\
+2.9807415651157498359680,0.7757596764713525772095,5.8460923237726092338562,\
+7.528713606297969818115,0.5172297963872551918030,5.9586250688880681991577,\
+3.8337053125724196434021,4.9002202786505222320557,5.2727950783446431159973,\
+0.6889454741030931472778,8.843077751807868480682,7.1912937611341476440430,\
+0.6942595774307847023010,1.1522095929831266403198,4.862680672667920589447,\
+7.6715826056897640228271,0.8805298106744885444641,7.0085612777620553970337,\
+1.879138792864978313446,2.0178856328129768371582,4.0628212550655007362366,\
+4.0966569539159536361694,1.769564501009881496429,3.31293122842907905579,\
+0.5184767069295048713684,4.1492417920380830764771,7.2212355909869074821472,\
+0.7746253907680511474609,5.8558783913031220436096,3.7079446297138929367065,\
+2.1161167463287711143494,1.903268527239561080933,5.607953821308910846710,\
+9.4247916433960199356079,6.8177247745916247367859,2.7342410013079643249512,\
+2.0717754075303673744202,1.9379387702792882919312,6.797837591730058193207,\
+5.88365742936730384827,9.331753817386925220490,5.509122880175709724426,\
+8.0405469564720988273621,1.074489727616310119629,7.4039250845089554786682,\
+5.6103316973894834518433,7.6611549546942114830017,7.8306589089334011077881,\
+1.4388314681127667427063,1.6471924725919961929321,3.1774142337962985038757,\
+5.0265956297516822814941,6.9204960623756051064,7.0065794046968221664429,\
+8.8706119870766997337341,6.9797694869339466094971,6.7989911558106541633606,\
+3.6159398127347230911255,2.6739976881071925163269,0.7736870646476745605469,\
+1.494100340642035007477,3.2018390577286481857300,2.0260545751079916954041,\
+4.4988587312400341033936,7.7075743721798062324524,2.4352242145687341690063,\
+2.1261148853227496147156,1.0992341861128807067871,6.9814807781949639320374,\
+4.1509064938873052597046,5.0298188393935561180115,7.51160675659775733948,\
+9.9401472182944416999817,1.82876241393387317657,3.021917375735938549042,\
+3.7854864448308944702148,7.1531985932961106300354,9.5241537224501371383667,\
+4.7039186349138617515564,1.8709417246282100677490,2.55718790460377931595,\
+4.4350660685449838638306,7.2340781940147280693054,8.7619100883603096008301,\
+0.3733208635821938514710,4.2934664245694875717163,3.1572330510243773460388,\
+3.682477343827486038208,1.4587742509320378303528,6.7683792579919099807739,\
+5.2619793592020869255066,4.003625661134719848633,0.0291080260649323463440,\
+3.0681814532727003097534,7.9026939114555716514587,9.5779503695666790008545,\
+6.6892711864784359931946,2.9296159837394952774048,8.2238993747159838676453,\
+0.1798455044627189636231,8.7107013771310448646545,3.1810243334621191024780,\
+5.7244732743129134178162,5.7386581040918827056885,3.4920182498171925544739,\
+7.06729766912758350372,3.5992007283493876457214,4.0523112565279006958008,\
+6.1408105725422501564026,6.5240467619150876998901,0.2951709320768713951111,\
+5.6688958965241909027100,7.1140170888975262641907,4.5884906593710184097290,\
+4.7205173922702670097351,0.6237313523888587951660,0.8544011274352669715881,\
+0.1345641072839498519898,3.5430019116029143333435,6.7193946428596973419189,\
+1.3606189610436558723450,2.1197437215596437454224}
+
+
+#define ZRESULT2R {1.7718546901199148102535,2.2873385372432406548171,1.6228701567171754938101,\
+2.2346263074245684698838,1.8473969837167181218263,2.0814403666906242662549,\
+2.000040135761198101250,1.930738025076279118508,2.2955316341715112926636,\
+2.2979125914561788768253,1.52676863913911398107,1.5225454413433419098567,\
+2.2756589535249842626285,2.0461560089912054216654,1.10158579014350732628,\
+1.7596676151017560663092,1.886619744318301705732,1.6609534913253483079387,\
+2.0341867590624715944614,2.1522631887405574424577,1.5490800609419352884544,\
+1.8243154431583954444562,1.9046961835587756795007,2.1880745312667504443027,\
+1.462943224821960486182,2.6082576924848916988253,1.0397086540972344526068,\
+1.5754847768676314423431,0.746979645400304148595,2.2287521705924668857790,\
+1.5403790183895167409389,2.29053332003721576982,1.9561479629741382879615,\
+2.056062919004959077540,1.5124829204355532130677,0.7957872878063905197621,\
+1.1657936572577645151227,2.247663310479210085902,-0.4549625893688244437918,\
+2.273939094117130466088,1.7851157264602297569667,1.705510493291471751931,\
+1.838553591041654167171,2.2452631537104275061267,2.1984262619387999748710,\
+1.858482175867823826820,2.1354614286115483068329,1.7449625890299069741474,\
+0.5066316450005309279803,2.2309587833094872699746,1.8633839241242127204856,\
+1.9110608576794807511590,2.2575857867741544460216,1.23571911173189863398,\
+1.581562045830424700910,2.2691047577207688057399,1.4031989962500943658341,\
+2.2741179432518765501925,2.4527182982567738989133,2.5833963585371355620168,\
+2.2776279862384747332271,-1.1249835300913728630690,2.1906906716320380112961,\
+1.8180097251363194210683,1.440608273684235829393,2.157337396250079031290,\
+1.6456014738468727198750,2.5276363856092047832647,2.0501201476301127435420,\
+1.9792596577711849548109,2.325636279713856779949,2.1018269082301319627959,\
+2.2993946557097193483798,1.407779382548410174181,2.1650335217497893580685,\
+2.3678319878208848869861,1.8594164774388513006187,2.56043452139564964298,\
+1.2152594801616827258073,1.6876273083151080989239,1.8280452566376663714465,\
+2.2383606348726785562064,1.4669353168458199032642,1.7855716392006990567154,\
+1.9344712649878033072781,2.1595582205209731263551,2.3711393709457433409682,\
+0.3451198452895575252697,2.2295598849908442318224,1.9730216569827605521681,\
+1.7597572254564382010500,1.4119056335367026200345,2.1320313551579719302254,\
+2.5151804905590435801344,2.1472364706413502588589,2.052431577045615185284,\
+2.1940570121896025845842,0.8387289948467516742525,1.8945610375322186058611,\
+1.901605848224737327357,2.2469410116186243620007,2.3333167208432867845147,\
+1.8321040495156570848678,2.3667788410376999763685,2.345870799293293007537,\
+1.7064766326923879180555,2.2351179984798275057756,1.3127927306468758494873,\
+1.5145818637157286712380,0.7618288453812751548355,1.8221250086585414340590,\
+2.3127298919002594601579,1.9513099157402993277799,2.2649290827240116108499,\
+2.0646178740610454660498,1.7857162805439725783430,2.0523808897592226152540,\
+2.357637781206334715023,2.5204455223537904906550,2.1680868421848340510394,\
+2.08969579055791898625,1.0187212773133276222381,2.351321025745570558740,\
+1.8003855797977157404688,2.3290564194645368978343,2.5020530275623595883872,\
+1.6589662323678027178175,1.1034736729371952268508,2.0179385634489594991692,\
+1.7529535621370035958222,1.9548092141654069830992,2.2757671672542376661852,\
+2.2978225629400212959297,2.329897705001075625120,1.9366802551403343723990,\
+2.0192737614105338295190,1.5519072144028889237433,1.9522381258437428996899,\
+2.228825942499146339770,1.3459088341323246496017,1.2160693133443531976923,\
+1.708519320712721833999,2.042657041378174831436,2.0363649964518035773153,\
+0.9638512795498686003270,0.9551846741593900125267,1.951137961258366582129,\
+2.107724763084950492242,2.1435395035941335883933,2.30219731892690226971,\
+2.3129821080069814520641,1.4613961122338947618005,1.2276638750511146280786,\
+1.98774702803650615834,2.2599263943254159769936,2.3454288218721179859472,\
+1.5736974684351636710744,1.1082826047896976451312,2.2826248447267389884985,\
+1.852079302129498561413,2.4440219801181322090144,2.2846216839061130876587,\
+2.0916390604994830049179,2.0880185293365247645170,1.1554676622252344486697,\
+1.4781743340729813773748,2.2621227047071905680298,1.9617338719614783038026,\
+2.0915485321054503309313,2.222172100020261886755,2.0456349034700243016971,\
+1.6557620395745074048932,2.3732960033711649749932,2.4784302018604411621538,\
+2.1043456955600268187823,2.2908052004546388680239,2.1225525715426596384816,\
+-0.3059820602804464440006,2.398801697565509982724,1.9837316998415748248163,\
+1.8021669050328577021958,2.1177911026101683411582,1.3800624471185749531088,\
+2.0182134290564768264176,1.3170274339145702224840,1.4108532825842892144408,\
+1.817110834423457665920,2.2890298175330245911141,1.8196542505912531861867,\
+2.1619335403208914669904,2.0209326327770549269758,1.7893311710629888899859,\
+1.8641960608110765829082,1.882576152038281991352,1.7816883851861540222217,\
+1.7954751269073565556056,1.2730999018963571334240,1.9486466131391497746961,\
+2.074605067637334876451,1.2189909546635331327735}
+
+
+#define ZRESULT2I {0.8408843669071919268987,1.0754371807248737091811,0.8455094310786673839075,\
+0.962808271271232585242,1.2435335418309885202603,1.371120256581034091425,\
+1.5461888319559713433904,0.9342369007616236897817,1.56013775123029430070,\
+1.3720388608498168547811,0.9371355532144381994542,0.7228179279461685036168,\
+1.360325287393417292847,1.1709945644102059958414,0.4074578726347549695319,\
+1.0393742565506918218432,0.5221182542768327827787,1.1517977305599864656926,\
+0.4467977216337457035955,0.8222975857540034683169,0.4665224019878621564139,\
+0.8091797065019556978172,1.0768746352304479074746,0.8683388375483406251831,\
+0.1720341159830799382391,0.7682977019562435838651,0.4721387487057847609506,\
+0.4309811115589534114001,1.20279143843462255070,1.2916347740244560338141,\
+1.4265839008392693365579,0.6850460436644268957807,1.5117462274209296779759,\
+1.1152532149987959275705,1.1217014706271768442747,0.2911766403909815670303,\
+0.2063546073155473614680,0.5982511040925977408023,0.5499105526382754849379,\
+0.3309697617869979402450,0.6882370204600587459964,0.9959451809388051302108,\
+1.5661574844082004620560,0.3097639368523368297304,0.3740022155825183380884,\
+0.8268049495959598482742,0.407572856709710940049,1.3246230944084764757918,\
+0.8047604843662868878695,0.9578156211088914018248,0.8379992820836518196970,\
+0.4298072736875270249968,0.2516111351341220880862,1.2777930133692467773443,\
+0.4942674920588698839197,0.2227403824735175175142,1.4902323819071812138759,\
+0.3241206854947055737704,0.6212066791677098853697,0.8227777158663325263177,\
+0.5918914368525474145599,0.6824004867135488039409,1.5685992315253338702519,\
+0.602441091725517741118,0.2648167750385964080984,0.2361574036342227733698,\
+0.2544057494452062195833,0.7540670573431564882583,0.9631160038064509043565,\
+0.5974222702744066415548,0.7127866343417466055143,0.2523427003112133637508,\
+0.9857721947818851582213,0.0298961055939373325507,0.5949566736712420533806,\
+1.1076852186579833059454,0.0916284996635063769821,0.6920814866116709040966,\
+1.0847494758718594365376,0.1439797822740493671301,1.2215400197911927548944,\
+0.9319943094964961982640,0.1195740768674621451462,1.5325419323859537090726,\
+0.5871287736405550461427,0.6008795873685909283424,0.5147800680430554276512,\
+0.5096442477271476700906,1.2574287319730830247977,1.55344381002968989769,\
+0.1197588579388608048815,0.2845949117488152935174,0.6146775806026560928785,\
+0.6690416852557365956,0.1030338183393550155476,1.1198962694059428901738,\
+0.2110181909408466172096,1.0597850788835401214527,0.6573038229366630069706,\
+0.6582686240328038396186,0.1881909924839933190288,0.3270668956957688000564,\
+0.0830914673081940696742,0.3996821407672082604456,0.763608851537480148863,\
+0.1410651270101331844487,0.677001919140020169685,1.5027782434779339837405,\
+0.4840122714003086690227,1.0939971143713191903402,1.1354027775868176242113,\
+1.2025671422981056846169,1.3200023979900399329068,0.2878762084297626921980,\
+0.2659639364881328793544,0.3309563133803885004447,1.0613976119428301103653,\
+0.5905886949329369750572,0.84881047253311037171,0.6818405058224251691357,\
+1.4689172047242584628890,0.3984077871527766379067,0.7826684691736193189016,\
+1.1863976071520063726439,0.8421875864316380466690,0.6964016273061860440308,\
+0.2774051332309265816001,0.5780614975169666713839,0.4360596809152573194446,\
+1.0570616474517706695480,1.3698760574306645398934,0.8033735187122362786383,\
+1.100195299896877587642,0.7466330742895204153342,1.3719281224888897341430,\
+0.5006805450256617273652,0.6022149721715611692119,0.1100515320096066840261,\
+0.1615487638997855912582,0.9853189831543425203364,0.6441365190650450989196,\
+0.9525486295501676137221,1.540681786544560338825,0.3234105928346787672822,\
+0.9457654725170446807780,0.4366658824494836776964,1.4454467286135332937391,\
+0.5286797419321711544171,0.6306769685466229180548,0.8502600566998695930110,\
+1.3901817278534140953639,0.4379816003966337523146,1.0872460520812594619855,\
+0.5452429334871597976786,0.8427783441184910628863,1.1492861648773524674283,\
+1.346792368827264718689,0.665745289338786183642,0.2639277343938546960267,\
+0.7696845111061191291313,0.6789773815510785626159,1.1019111077295657974418,\
+0.0461157104075398602272,0.5610787453255564605215,1.4634600366382779501606,\
+0.9969191986962234741654,0.1524913254966685227654,1.2588290814744897971877,\
+0.7073635046287626293449,0.4488022872724745648831,0.0037636205385015429094,\
+0.6259389684526723840463,0.8276134607557569244918,0.9328971084913546540918,\
+0.9537519653655091023126,0.3009556732582234217510,1.3951370123387065724785,\
+0.2467179687642131191705,0.9127106501576134345299,0.4528896475979662383793,\
+1.2351598243895067774645,0.7619639996129009551495,1.0726338584530288322583,\
+1.220269965181696392165,1.3029226301867964377124,1.4189980227900089726489,\
+1.5051832236136615250643,0.7225617055791342391302,0.0478600995604049964105,\
+0.710883123025403795836,1.2310328539390928970221,0.8735414139313334436210,\
+0.8209275679220129351421,0.0950735258592600440686,0.1443422571457730618771,\
+0.0223460331642115414552,1.443489200421151252840,1.2774801572114198311425,\
+0.1717450012966928174496,0.6769828145758884918593}
+
+
+
+
+ /* in is between 0 and 1
+ in2 between 0 and 10 */
+
+
+
+void dlog1psTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ double in2[]=SOURCE2;
+ double res2[]=RESULT2;
+ int i;
+
+ for (i=0;i<200;i++) {
+ in[i]=in[i]-1;
+ in2[i]=in2[i]-1;
+ }
+
+ for (i=0;i<200;i++){
+ out=dlog1ps(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+
+
+ for (i=0;i<200;i++){
+ out=dlog1ps(in2[i]);
+ assert(( (fabs(out-res2[i]))/(fabs(out)) )<3e-16);
+ }
+
+}
+
+
+void zlog1psTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ double in2R[]=ZSOURCE2R;
+ double in2I[]=ZSOURCE2I;
+ double res2R[]=ZRESULT2R;
+ double res2I[]=ZRESULT2I;
+ doubleComplex in,in2,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i]-1,inI[i]);
+ out=zlog1ps(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+
+ for (i=0;i<200;i++){
+ in2=DoubleComplex(in2R[i]-1,in2I[i]);
+ out=zlog1ps(in2);
+ assert(( (fabs(zreals(out)-res2R[i]))/(fabs(zreals(out))) )<3e-16);
+ assert(( (fabs(zimags(out)-res2I[i]))/(fabs(zimags(out))) )<1e-16);
+ }
+
+}
+
+void dlog1paTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ double in2[]=SOURCE2;
+ double res2[]=RESULT2;
+ int i;
+
+ for (i=0;i<200;i++) {
+ in[i]=in[i]-1;
+ in2[i]=in2[i]-1;
+ }
+
+ dlog1pa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+
+ dlog1pa(in2,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res2[i]))/(fabs(out[i])) )<3e-16);
+ }
+}
+
+void zlog1paTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ double in2R[]=ZSOURCE2R;
+ double in2I[]=ZSOURCE2I;
+ double res2R[]=ZRESULT2R;
+ double res2I[]=ZRESULT2I;
+ doubleComplex *in,*in2,out[200];
+ int i;
+
+
+ for (i=0;i<200;i++) {
+ inR[i]=inR[i]-1;
+ in2R[i]=in2R[i]-1;
+ }
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ zlog1pa(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+
+ in2=DoubleComplexMatrix(in2R,in2I,200);
+ zlog1pa(in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-res2R[i]))/(fabs(zreals(out[i]))) )<3e-16);
+ assert(( (fabs(zimags(out[i])-res2I[i]))/(fabs(zimags(out[i]))) )<1e-16);
+ }
+
+}
+
+
+
+
+
+int testLog1p(void) {
+ printf("\n>>>> Double Logarithm x + 1 Tests\n");
+ dlog1psTest();
+ zlog1psTest();
+ dlog1paTest();
+ zlog1paTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testLog1p() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/testFloatLog1p.c b/2.3-1/src/c/elementaryFunctions/log1p/testFloatLog1p.c
new file mode 100644
index 00000000..5704838c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/testFloatLog1p.c
@@ -0,0 +1,966 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testLog1p.h"
+#include "math.h"
+
+#define SOURCE {0.3628176329657435417175f,0.924179898109287023544f,0.5243524145334959030151f,\
+0.7886543427594006061554f,0.6525151440873742103577f,0.2477638195268809795380f,\
+0.2364655844867229461670f,0.7240293831564486026764f,0.8278210600838065147400f,\
+0.4287728047929704189301f,0.4858888480812311172485f,0.5923984018154442310333f,\
+0.0949383648112416267395f,0.1356843891553580760956f,0.9917455688118934631348f,\
+0.7212927364744246006012f,0.0115638775750994682312f,0.0211908905766904354095f,\
+0.1524727698415517807007f,0.9165380974300205707550f,0.4467271203175187110901f,\
+0.5868234331719577312469f,0.1882771886885166168213f,0.4196520284749567508698f,\
+0.2730510598048567771912f,0.7565603456459939479828f,0.9378882069140672683716f,\
+0.0586007428355515003204f,0.5101847248151898384094f,0.5031699347309768199921f,\
+0.7783576548099517822266f,0.6856653341092169284821f,0.1381576983258128166199f,\
+0.371037633623927831650f,0.6366564910858869552612f,0.4961673622019588947296f,\
+0.2994064847007393836975f,0.2392275254242122173309f,0.5618183575570583343506f,\
+0.3218038142658770084381f,0.1082227518782019615173f,0.1685282415710389614105f,\
+0.8263800088316202163696f,0.4923414406366646289825f,0.7863734485581517219543f,\
+0.6762332352809607982635f,0.0258686169981956481934f,0.3594204657711088657379f,\
+0.3436427963897585868835f,0.2824054299853742122650f,0.1450859513133764266968f,\
+0.0762176741845905780792f,0.5220461571589112281799f,0.6713762427680194377899f,\
+0.0599394328892230987549f,0.7267188713885843753815f,0.2224657749757170677185f,\
+0.3122289828024804592133f,0.4435700643807649612427f,0.3983507198281586170197f,\
+0.1324583934620022773743f,0.8820166247896850109100f,0.5455272346735000610352f,\
+0.2917219498194754123688f,0.7739847479388117790222f,0.3354639573954045772552f,\
+0.8127403985708951950073f,0.4612239454872906208038f,0.6898109326139092445374f,\
+0.9649041066877543926239f,0.8210376314818859100342f,0.2802407057024538516998f,\
+0.9873316427692770957947f,0.294199434574693441391f,0.4859610591083765029907f,\
+0.2247181800194084644318f,0.9585652919486165046692f,0.1503968122415244579315f,\
+0.0216291621327400207520f,0.0688429796136915683746f,0.9950710041448473930359f,\
+0.7568672685883939266205f,0.6163959559053182601929f,0.0865804632194340229034f,\
+0.5165374809876084327698f,0.1916800136677920818329f,0.2940570451319217681885f,\
+0.3528221980668604373932f,0.1317937439307570457458f,0.0549608371220529079437f,\
+0.929352553561329841614f,0.737892795819789171219f,0.7509917514398694038391f,\
+0.6889848816208541393280f,0.8865169286727905273438f,0.6891661235131323337555f,\
+0.8677108911797404289246f,0.7947537912987172603607f,0.2496256213635206222534f,\
+0.3935408894903957843781f,0.7297343472018837928772f,0.7888072351925075054169f,\
+0.113488640636205673218f,0.4145256043411791324615f,0.6172473421320319175720f,\
+0.7440188056789338588715f,0.9038409832864999771118f,0.3976829168386757373810f,\
+0.9472072543576359748840f,0.2581262919120490550995f,0.1955799385905265808105f,\
+0.9381833248771727085114f,0.4226356102153658866882f,0.0937463282607495784760f,\
+0.9977992679923772811890f,0.2042182614095509052277f,0.9455819511786103248596f,\
+0.9336234177462756633759f,0.9743702597916126251221f,0.4100225553847849369049f,\
+0.5125095760449767112732f,0.0948633304797112941742f,0.5688196588307619094849f,\
+0.7322562676854431629181f,0.8108531581237912178040f,0.5459008770994842052460f,\
+0.5022544711828231811523f,0.7634959020651876926422f,0.7354982374235987663269f,\
+0.0699520572088658809662f,0.6130836438387632369995f,0.0965849910862743854523f,\
+0.5439325878396630287170f,0.9187005828134715557098f,0.5072866193950176239014f,\
+0.1335940570570528507233f,0.8688194593414664268494f,0.7999687767587602138519f,\
+0.9879787657409906387329f,0.7131399479694664478302f,0.3067426951602101325989f,\
+0.5431228461675345897675f,0.7330236807465553283691f,0.6498145484365522861481f,\
+0.8018737239763140678406f,0.2859625308774411678314f,0.1894423719495534896851f,\
+0.7794728656299412250519f,0.5433104271069169044495f,0.5268451268784701824188f,\
+0.1533693112432956695557f,0.6041304902173578739166f,0.5948378806933760643005f,\
+0.8857938847504556179047f,0.0043053645640611648560f,0.1302204323001205921173f,\
+0.9758609728887677192688f,0.9183407831005752086639f,0.0624175965785980224609f,\
+0.9939593323506414890289f,0.4122588960453867912292f,0.8258536770008504390717f,\
+0.0376359503716230392456f,0.4675730471499264240265f,0.4759115139022469520569f,\
+0.4060978214256465435028f,0.0392968021333217620850f,0.4401316107250750064850f,\
+0.3316476037725806236267f,0.0877817696891725063324f,0.1150833908468484878540f,\
+0.9667435702867805957794f,0.8103649737313389778137f,0.3928376468829810619354f,\
+0.7880131229758262634277f,0.4798596971668303012848f,0.0270724548026919364929f,\
+0.6701857983134686946869f,0.5602217521518468856812f,0.2564360727556049823761f,\
+0.2626037681475281715393f,0.4447338129393756389618f,0.8522944338619709014893f,\
+0.2347065494395792484283f,0.3277532672509551048279f,0.2253599218092858791351f,\
+0.3468936551362276077271f,0.7743145865388214588165f,0.1285835551097989082336f,\
+0.1156307714991271495819f,0.2054340392351150512695f,0.4535544612444937229156f,\
+0.6516549764201045036316f,0.0710035725496709346771f,0.1265540253371000289917f,\
+0.4974718545563519001007f,0.0879269847646355628967f,0.1462626229040324687958f,\
+0.715134423226118087769f,0.9305738122202455997467f}
+
+#define RESULT {-1.0138549594808059506335f,-0.0788485313675790222554f,-0.6455912738997077182646f,\
+-0.2374271494900490608870f,-0.4269209307253117313685f,-1.3952793271990111545477f,\
+-1.4419526017799386696794f,-0.3229233029497151630238f,-0.1889582589621221220266f,\
+-0.8468280928949678543205f,-0.7217753888910144466351f,-0.5235758944053595653756f,\
+-2.354527389398466841186f,-1.9974237581445692946147f,-0.0082886876471943305572f,\
+-0.3267102095711482134810f,-4.459869041610169837497f,-3.8541838794260296907623f,\
+-1.8807692572941765440930f,-0.0871516441756800402940f,-0.8058073398690168698266f,\
+-0.5330312996797691438289f,-1.6698399941066854879068f,-0.8683294147345963498452f,\
+-1.2980964690333058886296f,-0.2789729794097077220094f,-0.0641245194730828693697f,\
+-2.8370079061049158219987f,-0.6729824133243695882811f,-0.6868273235307851276588f,\
+-0.2505691498856313370602f,-0.3773656214470872405364f,-1.9793595047655996310709f,\
+-0.9914517831797942104544f,-0.4515250293249062352174f,-0.7008419853775434971155f,\
+-1.205953148244055972427f,-1.4303401906823356437570f,-0.5765766885249945516989f,\
+-1.1338131915858427056776f,-2.2235636585360341044293f,-1.7806519374711546888079f,\
+-0.1907005521377241608061f,-0.7085828181522180191365f,-0.240323473997209546837f,\
+-0.3912172398408133022762f,-3.6547247438886865111840f,-1.0232623619826317629133f,\
+-1.0681525436893481995071f,-1.264411545554370741584f,-1.93042894450046809141f,\
+-2.5741618985048786427683f,-0.6499992713325659643431f,-0.3984255796794416437656f,\
+-2.8144206784459675496635f,-0.3192155730871417684824f,-1.502982009541258934249f,\
+-1.1640184411209602011184f,-0.8128995091446955534309f,-0.9204224561330225373723f,\
+-2.0214866944753584476757f,-0.1255443741850884864508f,-0.6060025488810325544620f,\
+-1.231954157015291428934f,-0.2562031110919770759971f,-1.092240757863258915350f,\
+-0.2073435333764902521736f,-0.7738715719712579987899f,-0.3713377296431035756719f,\
+-0.0357265538888332026546f,-0.1971863344268207918208f,-1.2721063818886333418590f,\
+-0.0127492850765575892191f,-1.223497392724554932997f,-0.7216267835832522736794f,\
+-1.4929081951001816896962f,-0.0423175999341945593968f,-1.8944780628936490618486f,\
+-3.8337127761178795282149f,-2.6759270254015836698613f,-0.0049411834200203501311f,\
+-0.2785673796390666367984f,-0.483865736386189515539f,-2.446681086792801718133f,\
+-0.6606074257995434573232f,-1.651927892749795789840f,-1.2239814994040887352611f,\
+-1.0417910371382139711471f,-2.026517124423018234580f,-2.9011343997056400212387f,\
+-0.0732671142462539837226f,-0.3039567280501898061118f,-0.2863606107139139989037f,\
+-0.3725359507043504159185f,-0.1204550575726043570857f,-0.3722729288835950889336f,\
+-0.1418966944811957953121f,-0.2297229087732643171282f,-1.3877929980613914473508f,\
+-0.9325703042223095762253f,-0.3150747190128889152483f,-0.2372333033314831252092f,\
+-2.1760525295696577785520f,-0.8806205346832632896437f,-0.4824854567490562962107f,\
+-0.2956889680183093505050f,-0.1011018375069230867958f,-0.9221002825850308504130f,\
+-0.0542373561426655603768f,-1.3543063102932182406590f,-1.6317860900845253535607f,\
+-0.0638099067725128449302f,-0.8612449127611128130155f,-2.3671627801172654415041f,\
+-0.0022031571770593774348f,-1.5885659482121525787335f,-0.0559547196755256631695f,\
+-0.0686821150485829451382f,-0.0259639040526286474231f,-0.8915431076633286711086f,\
+-0.6684358831783273613425f,-2.3553180497276513527538f,-0.5641918391516044239964f,\
+-0.3116247338224413798713f,-0.2096683039932461523058f,-0.6053178634921361211951f,\
+-0.6886483730214458809371f,-0.2698475216395072595610f,-0.3072071353764207479742f,\
+-2.659945168598087494871f,-0.4892539023727084379622f,-2.3373319216128076725170f,\
+-0.6089299592172232600262f,-0.0847950173155939540548f,-0.6786791108759814283857f,\
+-2.0129495019748864237386f,-0.1406199321004115432299f,-0.2231825811274127380202f,\
+-0.0120940736302183569906f,-0.3380775973662459854552f,-1.181746009333312530387f,\
+-0.6104197485997391314783f,-0.3105772710053884000381f,-0.4310682668987352861301f,\
+-0.2208041349135003439397f,-1.25189448766300226445f,-1.6636704065163092636226f,\
+-0.2491374010581904052675f,-0.6100744334370675758805f,-0.6408486505219985751580f,\
+-1.8749064671471911136535f,-0.5039650609751163967687f,-0.5194663799859419173188f,\
+-0.1212709911627764675091f,-5.4478934608177302933996f,-2.038526631411456513376f,\
+-0.0244351485261014196582f,-0.0851867338269072515988f,-2.7739080469083896574034f,\
+-0.0060589862906551463645f,-0.8861037385262900967220f,-0.1913376676415258770270f,\
+-3.2797955584796012473703f,-0.7601996918711692030612f,-0.7425233371947113081291f,\
+-0.9011612089296217043000f,-3.2366121340710831688625f,-0.8206814815116268979622f,\
+-1.1036823082060371881141f,-2.4329014344197728014763f,-2.1620982756055884266289f,\
+-0.0338219993709664781822f,-0.2102705479450195091840f,-0.9343588647242980771424f,\
+-0.2382405357403041268327f,-0.7342615153765646995865f,-3.609238495954611991579f,\
+-0.4002002941250653034189f,-0.5794225876492602456125f,-1.36087587445700952671f,\
+-1.337108967835097139698f,-0.8102793489627861944768f,-0.1598232322015146200656f,\
+-1.449419270934711789778f,-1.1154941876589379301521f,-1.4900565023732303959747f,\
+-1.05873701535465292167f,-0.2557770454111949476328f,-2.0511763516400991491651f,\
+-2.1573531687271665369110f,-1.5826302735280548539265f,-0.7906399256902217898002f,\
+-0.4282400343889684046772f,-2.6450250856057104797969f,-2.0670859842226763092299f,\
+-0.6982162977399214431884f,-2.4312485274946018520836f,-1.9223514861397812403254f,\
+-0.3352847494467096622905f,-0.0719538807151878373469f}
+
+
+#define SOURCE2 {2.6395560009405016899109f,4.1481037065386772155762f,2.8064980218186974525452f,\
+1.2800584640353918075562f,7.7831285959109663963318f,2.1190304495394229888916f,\
+1.121354666538536548615f,6.8568959552794694900513f,1.5312166837975382804871f,\
+6.970850601792335510254f,8.4155184263363480567932f,4.0620247554033994674683f,\
+4.09482547547668218613f,8.7841258011758327484131f,1.1383596854284405708313f,\
+1.9983377400785684585571f,5.6186607433483004570007f,5.8961773291230201721f,\
+6.8539796629920601844788f,8.9062247332185506820679f,5.0422128057107329368591f,\
+3.493615407496690750122f,3.8737787725403904914856f,9.2228986788541078567505f,\
+9.4881842611357569694519f,3.4353372454643249511719f,3.7601187312975525856018f,\
+7.3409405630081892013550f,2.6157614728435873985291f,4.99349383637309074402f,\
+2.6385784195736050605774f,5.25356308557093143463f,5.3762298030778765678406f,\
+1.1999255046248435974121f,2.2563034901395440101624f,6.2740930821746587753296f,\
+7.6084325974807143211365f,0.4855662025511264801025f,6.7239497276023030281067f,\
+2.017172696068882942200f,3.911573919467628002167f,8.3003165572881698608398f,\
+5.8787201577797532081604f,4.8291792999953031539917f,2.2328650346025824546814f,\
+8.4008856676518917083740f,1.2059959070757031440735f,2.8553641680628061294556f,\
+8.6075146449729800224304f,8.494101651012897491455f,5.2570608118548989295959f,\
+9.9312098976224660873413f,6.4885628735646605491638f,9.923190940171480178833f,\
+0.5004197778180241584778f,7.4855065811425447463989f,4.1040589986369013786316f,\
+6.0845263302326202392578f,8.5442108893766999244690f,0.6426467280834913253784f,\
+8.279082938097417354584f,9.2623437754809856414795f,5.6672112690284848213196f,\
+5.711638936772942543030f,8.1601104838773608207703f,0.5689279362559318542481f,\
+5.5959366867318749427795f,1.2493403162807226181030f,7.279222286306321620941f,\
+2.6777664758265018463135f,5.4653349192813038825989f,9.885407658293843269348f,\
+7.3956565884873270988464f,0.0371731072664260864258f,5.9005728596821427345276f,\
+3.096467358991503715515f,2.5522057106718420982361f,6.2518793903291225433350f,\
+1.1574173765257000923157f,6.1170040909200906753540f,6.7839562846347689628601f,\
+3.3200952783226966857910f,0.2587099233642220497131f,5.1744682248681783676147f,\
+3.9168732380494475364685f,2.4135384149849414825439f,5.064434898085892200470f,\
+4.2361020017415285110474f,2.8937275288626551628113f,0.8879321813583374023438f,\
+6.2128817522898316383362f,3.4549844544380903244019f,7.0648676296696066856384f,\
+5.2114724926650524139404f,2.8704008506610989570618f,6.502795079723000526428f,\
+0.8813347620889544487000f,4.498763345181941986084f,7.2272530803456902503967f,\
+8.9767962601035833358765f,2.4278218811377882957458f,4.3377211131155490875244f,\
+9.6770532103255391120911f,5.0685344357043504714966f,5.2329764096066355705261f,\
+5.5969475954771041870117f,5.6173070007935166358948f,4.68176002614200115204f,\
+7.794546722434461116791f,7.9010718129575252532959f,9.8085420625284314155579f,\
+8.1870661024004220962524f,4.2568723810836672782898f,2.4615605548024177551270f,\
+9.2295324662700295448303f,1.000745808705687522888f,4.6782181179150938987732f,\
+3.9504976756870746612549f,0.3661171020939946174622f,5.175368534401059150696f,\
+8.3254515705630183219910f,6.1048321425914764404297f,1.8711117887869477272034f,\
+0.1895748358219861984253f,8.4335647663101553916931f,0.7485948316752910614014f,\
+8.5328151332214474678040f,0.1245901081711053848267f,1.8675393564626574516296f,\
+4.920584075152873992920f,7.4896081397309899330f,9.414957007393240928650f,\
+2.1240556007251143455505f,5.7950199581682682037354f,2.628147569485008716583f,\
+4.3609866220504045486450f,9.1105451015755534172058f,8.0826673656702041625977f,\
+8.1026530498638749122620f,2.5904283951967954635620f,4.1390872886404395103455f,\
+3.599927779287099838257f,6.91278793383389711380f,7.6568587962538003921509f,\
+3.572649653069674968720f,7.6933998242020606994629f,5.4776339093223214149475f,\
+0.9622887428849935531616f,9.5611717319115996360779f,2.2074085660278797149658f,\
+0.1432593585923314094544f,8.1914897728711366653442f,1.3049928424879908561707f,\
+9.6820035576820373535156f,6.5613814676180481910706f,2.4455389659851789474487f,\
+5.2831235667690634727478f,8.4689256362617015838623f,7.8766220854595303535461f,\
+1.262082615867257118225f,7.8838609857484698295593f,3.4530424699187278747559f,\
+2.6598573336377739906311f,9.7098186518996953964233f,8.8752476638182997703552f,\
+2.066752854734659194946f,8.5251609655097126960754f,6.7446978110820055007935f,\
+9.152874383144080638886f,0.2848597615957260131836f,2.367841475643217563629f,\
+7.0153435599058866500854f,1.2025266280397772789001f,8.2874121330678462982178f,\
+3.1610729591920971870422f,5.30519076623022556305f,5.715174819342792034149f,\
+0.4780154302716255187988f,8.2486197212710976600647f,5.7988431211560964584351f,\
+2.7918082987889647483826f,9.5451109297573566436768f,9.0711546363309025764465f,\
+3.3601493109017610549927f,1.1756130633875727653503f,9.2537237703800201416016f,\
+7.2636712575331330299377f,9.0094979386776685714722f,3.9489932497963309288025f,\
+5.6551797501742839813232f,7.0614896761253476142883f,6.7878311965614557266235f,\
+4.1329363686963915824890f,1.402290873229503631592f,4.9523561308160424232483f,\
+4.1948772873729467391968f,8.6262222891673445701599f,2.8575096465647220611572f,\
+2.5121363671496510505676f,3.389101596549153327942f}
+
+
+#define RESULT2 {0.9706107215522056241852f,1.4226512916310911638362f,1.0319374505428213772973f,\
+0.246905751916103338717f,2.0519583905069445073366f,0.7509586489514044060911f,\
+0.1145374781176292794394f,1.9252548546825831721208f,0.4260626375542267973984f,\
+1.9417372548863311987333f,2.1300774331528766758481f,1.4016815575274605976119f,\
+1.4097240974656071177407f,2.1729462062921069964716f,0.1295883538042104654586f,\
+0.6923157050192292327751f,1.7260933336118711167728f,1.7743042306089458204355f,\
+1.9248294562744026059420f,2.1867504404929474226549f,1.6178450344817050243762f,\
+1.2509371333857781660726f,1.3542304576599399901227f,2.2216893784894660157647f,\
+2.2500472625069045662372f,1.2341151000295289552611f,1.3244505343759986892849f,\
+1.993466976516135025221f,0.9615552493321314342367f,1.6081358323702796830901f,\
+0.9702402946929443716684f,1.658906529368289861637f,1.6819873484154954645931f,\
+0.1822594753876470019538f,0.8137278503591067746470f,1.8364289458354570161447f,\
+2.0292571844941731384893f,-0.7224396410182910566178f,1.9056757389571916672f,\
+0.7016968755690818904114f,1.3639398299492546673406f,2.1162936535075722588317f,\
+1.7713390779775688432807f,1.5746765360416834500512f,0.8032855297427843321856f,\
+2.1283371369164427733267f,0.1873057044979935803486f,1.0491993894614395355092f,\
+2.1526356176491328042744f,2.1393719992097341986437f,1.659572089557145968541f,\
+2.2956823132957397959331f,1.870041069148148160650f,2.294874536928924957380f,\
+-0.6923079771535994852982f,2.012968695092798743218f,1.4119764836513208905444f,\
+1.8057488812128539290569f,2.1452539646586252786165f,-0.4421601177273855043381f,\
+2.1137322059948120411832f,2.225957124135133913256f,1.7346971570693363595694f,\
+1.7425060116900870088585f,2.0992577085752079923964f,-0.5640015026903990591478f,\
+1.7220407427170496550417f,0.2226156650313379503636f,1.9850240276979147502345f,\
+0.9849830425057782834486f,1.6984254041571493765161f,2.2910596958626552321903f,\
+2.0008928803872945145770f,-3.2921697020833700086939f,1.7750494410596528993551f,\
+1.1302619000814182470549f,0.9369579698639551867956f,1.83288212099904845864f,\
+0.146191123459191885114f,1.8110724490390321950173f,1.9145604545765595450035f,\
+1.1999934808065779723307f,-1.3520478319474638073672f,1.6437365753918393718180f,\
+1.3652936921609135634270f,0.8810938927039604351421f,1.62224256150308399071f,\
+1.4436435071804869512135f,1.0625454734184220928483f,-0.1188599112506976002157f,\
+1.8266248385955683453119f,1.2398179577704631082469f,1.9551342798915567477991f,\
+1.6508624439841452780087f,1.0544516892385875639349f,1.8722320967378904832401f,\
+-0.1263177455503078638888f,1.5038025468266962292319f,1.9778590304154859413899f,\
+2.194643054750437638489f,0.8869945101840888135314f,1.4673491210608482493427f,\
+2.2697574345222681913015f,1.6230517098794554620156f,1.6549802193742981781810f,\
+1.7222213768989977911161f,1.7258523677080592761968f,1.5436741131934335058418f,\
+2.0534243510350704831069f,2.0669984227965598755361f,2.2832536450533371663596f,\
+2.1025556044304130054456f,1.4485347077928583114925f,0.9007955206863934582984f,\
+2.2224083935232625819367f,0.0007455307285780288533f,1.5429172933929051758639f,\
+1.3738415648213015973766f,-1.0048020456777133624371f,1.6439105509928255699492f,\
+2.1193172771056971726011f,1.8090806121136604467381f,0.6265327936561931876369f,\
+-1.6629714204274992361832f,2.1322195493342954719651f,-0.2895573875226954974060f,\
+2.1439193343978621975054f,-2.0827260644551484070064f,0.62462171221383455677f,\
+1.5934272379201788183423f,2.0135164783675794097917f,2.24229959570391956802f,\
+0.7533272804029441660489f,1.7569989208182723583462f,0.9662792518179295075953f,\
+1.4726983212224467045814f,2.209432545000515446532f,2.089721937569185339356f,\
+2.09219154507008475719f,0.951823265584673561257f,1.4204753018509210793496f,\
+1.2809137839516946399954f,1.9333730200617991190626f,2.0356018208291457582959f,\
+1.273307520236932832702f,2.0403627955950214278857f,1.700673239349282273025f,\
+-0.0384407248228896478159f,2.257710285652239079468f,0.7918192329452391486910f,\
+-1.943098595033752262751f,2.1030957827723826270017f,0.2661975560760838632746f,\
+2.2702688589706512267696f,1.8812011703610473922765f,0.8942655346201515698112f,\
+1.6645175074163265360738f,2.136403657202092354339f,2.0638991426068855616904f,\
+0.2327632262134610163784f,2.0648177566830252516183f,1.2392557177584351268962f,\
+0.9782724873844932389488f,2.273137605702431063293f,2.183266240754464071472f,\
+0.7259787064172199544387f,2.1430219045760425800040f,1.9087566867408878312773f,\
+2.2140679701900434217521f,-1.255758284393388990452f,0.8619787703734573813819f,\
+1.9480996873952269865526f,0.1844248666526293323198f,2.114737753111020968078f,\
+1.1509115140149177580753f,1.668685731123507043350f,1.7431248863402162285752f,\
+-0.7381122661087159420035f,2.1100458798366994450646f,1.7576584357875708608532f,\
+1.0266895216506544131f,2.2560290788762715763482f,2.205099558817555038814f,\
+1.2119854107561658373982f,0.1617897676032789000544f,2.2250260402856771868585f,\
+1.9828853838780200469216f,2.1982793473903963210603f,1.373460672957984574083f,\
+1.73257189512379894403f,1.9546560315313432631967f,1.9151314791431239825670f,\
+1.4189881394992434060498f,0.3381072372999247011016f,1.5998634493586285643119f,\
+1.4338640873752146465137f,2.15480666756291494579f,1.0499504925567986202140f,\
+0.9211335334181942613441f,1.2205648705022635880368f}
+
+
+
+
+
+
+
+
+#define CSOURCER {0.3140813848003745079041f,0.5769402063451707363129f,0.1306138429790735244751f,\
+0.0478980806656181812286f,0.4500174494460225105286f,0.0384718659333884716034f,\
+0.483350999653339385986f,0.2981918179430067539215f,0.7112689120694994926453f,\
+0.9268360524438321590424f,0.9477838929742574691772f,0.1729496796615421772003f,\
+0.2750928336754441261292f,0.0044281478039920330048f,0.0611358620226383209229f,\
+0.1950612799264490604401f,0.3789803450927138328552f,0.2549188635312020778656f,\
+0.1764185149222612380981f,0.6008180272765457630157f,0.3703392641618847846985f,\
+0.2908470141701400279999f,0.5384815335273742675781f,0.8090293356217443943024f,\
+0.9260985879227519035339f,0.1576966657303273677826f,0.9518593531101942062378f,\
+0.2709982101805508136749f,0.1609848598018288612366f,0.8782086591236293315887f,\
+0.5091647170484066009521f,0.7951062084175646305084f,0.8432204117998480796814f,\
+0.5806765086017549037933f,0.3487791065126657485962f,0.9397577759809792041779f,\
+0.4363934816792607307434f,0.5549766751937568187714f,0.9105900451540946960449f,\
+0.5684339576400816440582f,0.1862502051517367362976f,0.0800832151435315608978f,\
+0.6585252787917852401733f,0.1606054832227528095245f,0.9711584830656647682190f,\
+0.3668168033473193645477f,0.7386338301002979278564f,0.9722552285529673099518f,\
+0.1349937235936522483826f,0.4595781317912042140961f,0.5414639282971620559692f,\
+0.6397600513882935047150f,0.0211964594200253486633f,0.4408156829886138439178f,\
+0.6374878138303756713867f,0.3208820023573935031891f,0.4267518399283289909363f,\
+0.7819778784178197383881f,0.0543234180659055709839f,0.9666189108975231647491f,\
+0.6948409983888268470764f,0.1846996019594371318817f,0.3645029179751873016357f,\
+0.8176643461920320987701f,0.664914294146001338959f,0.7559730983339250087738f,\
+0.5525381658226251602173f,0.7192269531078636646271f,0.1989364298060536384583f,\
+0.8610532465390861034393f,0.1300329938530921936035f,0.347959163133054971695f,\
+0.5025534434244036674500f,0.4978472082875669002533f,0.4675923939794301986694f,\
+0.9447452803142368793488f,0.9599315756931900978088f,0.5365384514443576335907f,\
+0.8122785724699497222900f,0.6470989421941339969635f,0.7010180121287703514099f,\
+0.6681951484642922878265f,0.9593638796359300613403f,0.0149199557490646839142f,\
+0.6199735002592206001282f,0.4061129498295485973358f,0.0471306145191192626953f,\
+0.8433605083264410495758f,0.0635268418118357658386f,0.9836421324871480464935f,\
+0.4434677045792341232300f,0.8565507535822689533234f,0.9080012599006295204163f,\
+0.4922491232864558696747f,0.1930142603814601898193f,0.3759337724186480045319f,\
+0.2437626412138342857361f,0.1035623974166810512543f,0.9936000052839517593384f,\
+0.5569599089212715625763f,0.3858396532014012336731f,0.7191527518443763256073f,\
+0.1707325801253318786621f,0.2878904812969267368317f,0.4294657362625002861023f,\
+0.8917979537509381771088f,0.6188817229121923446655f,0.3444608678109943866730f,\
+0.0692929709330201148987f,0.3619817639701068401337f,0.1783103235065937042236f,\
+0.8941529677249491214752f,0.9010278200730681419373f,0.0533773354254662990570f,\
+0.4162023533135652542114f,0.9438270372338593006134f,0.9242387460544705390930f,\
+0.8710649865679442882538f,0.2808376699686050415039f,0.8244629004038870334625f,\
+0.4650857029482722282410f,0.1462343498133122920990f,0.5975636970251798629761f,\
+0.3067605351097881793976f,0.2377215037122368812561f,0.0711208949796855449677f,\
+0.8753139786422252655029f,0.4413500339724123477936f,0.7631150623783469200134f,\
+0.9679268277250230312347f,0.3924236092716455459595f,0.717360940296202898026f,\
+0.8640465112403035163879f,0.7354763629846274852753f,0.0304915383458137512207f,\
+0.6331009590066969394684f,0.4550241930410265922546f,0.3173553734086453914642f,\
+0.8250397499650716781616f,0.2725940425880253314972f,0.3458735281601548194885f,\
+0.5352854127995669841766f,0.7017193175852298736572f,0.9817278520204126834869f,\
+0.2777477568015456199646f,0.1314821145497262477875f,0.366813333705067634583f,\
+0.7377605927176773548126f,0.9103105561807751655579f,0.3637479650788009166718f,\
+0.8207867145538330078125f,0.3059372254647314548492f,0.9788405327126383781433f,\
+0.9970494522713124752045f,0.4636328797787427902222f,0.7769650523550808429718f,\
+0.3400075891986489295959f,0.0353285889141261577606f,0.2607673071324825286865f,\
+0.5790986777283251285553f,0.1250711670145392417908f,0.0372988111339509487152f,\
+0.9382179621607065200806f,0.5585843441076576709747f,0.7192503632977604866028f,\
+0.3599752518348395824432f,0.6758626028895378112793f,0.2222136431373655796051f,\
+0.7860159231349825859070f,0.1736893891356885433197f,0.2674629595130681991577f,\
+0.7357366015203297138214f,0.0550541067495942115784f,0.5923380698077380657196f,\
+0.2162457890808582305908f,0.7718841419555246829987f,0.0926524316892027854919f,\
+0.7626169077120721340179f,0.7347808051854372024536f,0.8017499190755188465118f,\
+0.7732572900131344795227f,0.2559880572371184825897f,0.1179054826498031616f,\
+0.9232815303839743137360f,0.6709534404799342155457f,0.6071323617361485958099f,\
+0.4574467372149229049683f,0.8206311021931469440460f,0.0896153757348656654358f,\
+0.3426358769647777080536f,0.1674894802272319793701f,0.9481152505613863468170f,\
+0.9504805644974112510681f,0.3436607695184648036957f,0.2889420483261346817017f,\
+0.5325344172306358814240f,0.2558945687487721443176f,0.8863505902700126171112f,\
+0.0421485081315040588379f,0.4876015805639326572418f}
+
+#define CSOURCEI {0.347978035919368267059f,0.2037199228070676326752f,0.5962978359311819076538f,\
+0.8342303414829075336456f,0.6809655660763382911682f,0.9127784068696200847626f,\
+0.5243799723684787750244f,0.7204323844052851200104f,0.3259664541110396385193f,\
+0.1506391367875039577484f,0.9124387521296739578247f,0.6345743131823837757111f,\
+0.9268973069265484809875f,0.7633614349178969860077f,0.5918717086315155029297f,\
+0.9057438620366156101227f,0.3263365356251597404480f,0.3912780000828206539154f,\
+0.4635267537087202072144f,0.0849754814989864826202f,0.5800507226958870887756f,\
+0.7945564310066401958466f,0.3823457323014736175537f,0.3010852993465960025787f,\
+0.5789428642019629478455f,0.2627451247535645961761f,0.5713048521429300308228f,\
+0.1848654565401375293732f,0.9971724869683384895325f,0.4520535501651465892792f,\
+0.0334019884467124938965f,0.4553878181613981723785f,0.7851976407691836357117f,\
+0.4941168962977826595306f,0.9304408635944128036499f,0.7621670593507587909698f,\
+0.9264887655153870582581f,0.7199950958602130413055f,0.3973621018230915069580f,\
+0.8769331262446939945221f,0.6766644334420561790466f,0.8431562236510217189789f,\
+0.7608711589127779006958f,0.8287630719132721424103f,0.0037989662960171699524f,\
+0.9451942699961364269257f,0.6311131268739700317383f,0.0763222672976553440094f,\
+0.4486519275233149528503f,0.1080312891863286495209f,0.8351444136351346969604f,\
+0.3109649871475994586945f,0.1235694894567131996155f,0.0363539229147136211395f,\
+0.6609512977302074432373f,0.9844443709589540958405f,0.0688076755031943321228f,\
+0.5140342987142503261566f,0.3807653579860925674438f,0.1549817589111626148224f,\
+0.6850274773314595222473f,0.0382853033952414989471f,0.5224257782101631164551f,\
+0.7454454028047621250153f,0.4607118470594286918640f,0.4753002314828336238861f,\
+0.8575385268777608871460f,0.8073885519988834857941f,0.7132545644417405128479f,\
+0.0811268086545169353485f,0.5751824118196964263916f,0.884696914348751306534f,\
+0.5624709790572524070740f,0.7315255901776254177094f,0.6099120099097490310669f,\
+0.0705954921431839466095f,0.8552806274965405464172f,0.7045627343468368053436f,\
+0.5928074717521667480469f,0.8517647930420935153961f,0.2603117255493998527527f,\
+0.8596871509216725826263f,0.3943212013691663742065f,0.3333164160139858722687f,\
+0.2511775353923439979553f,0.5570420245639979839325f,0.7276714108884334564209f,\
+0.9383780122734606266022f,0.1971746077761054039001f,0.1607607132755219936371f,\
+0.7815325502306222915649f,0.1760376212187111377716f,0.2801528992131352424622f,\
+0.4699970218352973461151f,0.3507726117968559265137f,0.5713973813690245151520f,\
+0.4563077641651034355164f,0.9214398502372205257416f,0.4339873101562261581421f,\
+0.3514866163022816181183f,0.1816438222303986549377f,0.9070622171275317668915f,\
+0.7665811367332935333252f,0.9807842955924570560455f,0.1198607003316283226013f,\
+0.0508546582423150539398f,0.2581452894955873489380f,0.1401008707471191883087f,\
+0.5514106499031186103821f,0.7882929998449981212616f,0.8028824776411056518555f,\
+0.2425694861449301242828f,0.7024780390784144401550f,0.0922905071638524532318f,\
+0.4318286012858152389526f,0.0804965649731457233429f,0.7126307198777794837952f,\
+0.6893844078294932842255f,0.2756213061511516571045f,0.6968217701651155948639f,\
+0.4598932703956961631775f,0.6099067903123795986176f,0.3065654132515192031860f,\
+0.0749373403377830982208f,0.9619921119883656501770f,0.4158898773603141307831f,\
+0.3287452235817909240723f,0.7406168007291853427887f,0.5725225014612078666687f,\
+0.9504556744359433650970f,0.1849336978048086166382f,0.8698030491359531879425f,\
+0.6907873982563614845276f,0.9524399931542575359344f,0.6490485109388828277588f,\
+0.9960058168508112430573f,0.2040582066401839256287f,0.3800008497200906276703f,\
+0.9729049820452928543091f,0.9110585046000778675079f,0.3810073928907513618469f,\
+0.7869612383656203746796f,0.5560158789157867431641f,0.8529843934811651706696f,\
+0.4350629774853587150574f,0.5956362797878682613373f,0.7071880977600812911987f,\
+0.5747222309000790119171f,0.4764349022880196571350f,0.6098947445861995220184f,\
+0.9666662178933620452881f,0.3874611915089190006256f,0.0715632727369666099548f,\
+0.6122049516998231410980f,0.9575729314237833023071f,0.7723352131433784961700f,\
+0.1287384750321507453918f,0.3884150418452918529510f,0.2353963479399681091309f,\
+0.6542267077602446079254f,0.3286431683227419853210f,0.024017625954002141953f,\
+0.1042741741985082626343f,0.9314296473748981952667f,0.8185661518946290016174f,\
+0.8156488086096942424774f,0.8688247688114643096924f,0.3549220249988138675690f,\
+0.3890381073579192161560f,0.6415715864859521389008f,0.4902750719338655471802f,\
+0.3509976905770599842072f,0.8516392158344388008118f,0.1348936217837035655975f,\
+0.1156354099512100219727f,0.8810075619257986545563f,0.8367286501452326774597f,\
+0.5032693906687200069427f,0.4486711751669645309448f,0.9319602106697857379913f,\
+0.7298459419980645179749f,0.3388367067091166973114f,0.4314213804900646209717f,\
+0.7317318231798708438873f,0.9655342241749167442322f,0.2621376193128526210785f,\
+0.2050140891224145889282f,0.2826355365104973316193f,0.3973353477194905281067f,\
+0.7437736871652305126190f,0.8185287192463874816895f,0.3071001493372023105621f,\
+0.9627068741247057914734f,0.9475456266663968563080f,0.6546552237123250961304f,\
+0.1992082078941166400909f,0.3616109425202012062073f,0.9388273353688418865204f,\
+0.0409001447260379791260f,0.0758434669114649295807f}
+
+#define CRESULTR {-0.7576646139762764908809f,-0.4912662732014974609207f,-0.4935831983604013761813f,\
+-0.1796001444111503253520f,-0.2030603062114124668369f,-0.0903746939402042676059f,\
+-0.3380442117380291211504f,-0.2488385719103628768156f,-0.2453827611475934422636f,\
+-0.0629419446509737884332f,0.2743030686751847802007f,-0.4189753318430110562431f,\
+-0.0337034837449739430038f,-0.2700068328094388236948f,-0.5191589716059612502619f,\
+-0.0763304013057857499991f,-0.6929039668216129266298f,-0.7614418400301237177530f,\
+-0.7012514181881327468560f,-0.4995602487864141960650f,-0.3736855282655331400576f,\
+-0.1670990767606896909570f,-0.4148838171877601843640f,-0.1470641870540525808497f,\
+0.0881657571965975273010f,-1.1827451998005302780115f,0.1044920740886167709327f,\
+-1.1145963776166571967963f,0.0100332050022288142566f,-0.0123498399546466911675f,\
+-0.6728365416861274983518f,-0.0874315516128119363248f,0.1416698281269971604335f,\
+-0.2712125731855208887744f,-0.0063567040970050154788f,0.1906009971260032298535f,\
+0.0238331967155752874610f,-0.0953429917974444041118f,-0.0065067191893498198957f,\
+0.0440644425532304637172f,-0.3540655459766552382028f,-0.1661126167793314234444f,\
+0.0062509933701612868662f,-0.1693877982336349785619f,-0.0292579566847096204929f,\
+0.0137816953226981269570f,-0.0288761524361324552201f,-0.0250652390791611112686f,\
+-0.7581745137578204118967f,-0.7505545612383084375097f,-0.0046973071232757198853f,\
+-0.3406170651999906873186f,-2.0764518222153585114143f,-0.8157393323281721952966f,\
+-0.0852474852363154095292f,0.0348077956215509243254f,-0.8387202021909221372198f,\
+-0.0663540586103768398329f,-0.9554969196553003696337f,-0.0212599130834864695483f,\
+-0.0245601140031842454792f,-1.6679899099681032570430f,-0.4509584277017124609443f,\
+0.1011698547763601602201f,-0.2120439010955574854478f,-0.1131958883879479044188f,\
+0.0199327284817682297280f,0.0781443465987670671247f,-0.3004592565973881468366f,\
+-0.1451799924584522560878f,-0.5281452333714923286223f,-0.0505933914241510074294f,\
+-0.2819958038859460280889f,-0.122323084811984963971f,-0.2632782651610236501760f,\
+-0.0540558326414990047981f,0.2512879183645665981395f,-0.1214932149359973512226f,\
+0.0055773659320434761794f,0.0673704632706614986448f,-0.2906343733694730646633f,\
+0.0851020319327377705587f,0.0365640112295984101576f,-1.0976622196833336619903f,\
+-0.4020870876485082012763f,-0.3719849821436939651953f,-0.3158125612041708385469f,\
+0.2324359424588408329360f,-1.5742845766045041600023f,-0.0033130260706617652329f,\
+-0.1069329039454427060507f,-0.1341564770393289252048f,-0.0510429776001832605226f,\
+-0.3847912680433241972011f,-0.9153668051115183557087f,-0.3798345871473772783489f,\
+-0.6590618454479428844905f,-0.0755413642077243097095f,0.0808833545731707098669f,\
+-0.417646722764209388234f,-0.8522405945532404158982f,0.1463133685463073596633f,\
+-0.2416082657366604991012f,0.0219217192558878656850f,-0.8077093656959043466159f,\
+-0.1128924015633438332484f,-0.3996389102953575300781f,-0.9892317511551623754329f,\
+-0.5874413267393940873973f,-0.1422192352759769073955f,-0.1954743580270074387872f,\
+-0.0763719684521397823573f,0.1332266112260754309382f,-2.2385346085566988350024f,\
+-0.5112419918132667939759f,-0.0541885453710462053345f,0.1544990573544810508189f,\
+0.1051325180789595692410f,-0.9326914829433226028499f,0.0764891336322670034598f,\
+-0.4245421077023512346216f,-0.4665013282915527192962f,-0.3980722181205589849107f,\
+-1.152706389176620049852f,-0.0091123646200983177135f,-0.8629224644504486230190f,\
+-0.0671956049468366567456f,-0.1483256896732535745631f,-0.0470857769330114903084f,\
+0.3049502630226416100001f,-0.8351336293434713509143f,0.1199665328310368234144f,\
+0.100965515388687754328f,0.1851149271955789266109f,-0.4311455286578065315695f,\
+0.1656739977240755667953f,-0.6957805672270640506838f,-0.7030137346248552798755f,\
+0.2434410334133135511703f,-0.0502776447144934607314f,-0.6643994214275527054880f,\
+-0.0494471424057717073852f,-0.1105954430789197057150f,0.2627700024490645658304f,\
+-0.6613338575819812659162f,-0.4943364682181946023753f,-0.2273273919604619497381f,\
+-0.0669964153308245241591f,0.0270809622513717325465f,-0.3423076587443550367063f,\
+0.2375373770411028651051f,-0.7058599113455784612725f,-0.0187211007688289424178f,\
+0.1570046667576522059218f,0.0619494218295955287323f,0.0912342621811634557627f,\
+-1.0118000314587793919685f,-0.9415613562651380386015f,-1.04611739737066766764f,\
+-0.1350076179226963601909f,-1.045153664947628735504f,-3.1153566294303054462489f,\
+-0.0576346967934074291828f,0.0825782285147220879162f,0.0858710750707356584854f,\
+-0.1147913938093602786994f,0.0959901869720326261781f,-0.8704897942843184965866f,\
+-0.1312205414500346722928f,-0.4084692473683823599195f,-0.5825265796688483543875f,\
+-0.2043543873503067542785f,-0.1585071715930248537063f,-0.4983971045262390875408f,\
+-1.405591688480441803222f,0.1581272765392360557524f,-0.1721619754559372272862f,\
+-0.0902428450071243726249f,-0.1497365537505691013287f,0.2065025609822116192671f,\
+0.0613750886386554700413f,-0.8564551079948240497330f,-0.804653684520539647096f,\
+0.1638887899169061412863f,0.1619231669215081825808f,-0.4135383706484943022730f,\
+-0.6905772083929240245936f,-0.1416337472709212619293f,-0.8981660716461068449945f,\
+-0.1997922350746098307805f,-0.1797380100619248022298f,-0.0033949848444226812805f,\
+0.3022174959979692654422f,0.0079098230306947625579f,-0.3346557902575436060921f,\
+-0.5646231542298842942529f,-0.8141969637368523526888f,0.2555170413707821830407f,\
+-2.8347892907784113525338f,-0.7063037006217763869032f}
+
+#define CRESULTI {0.8365523024247201178127f,0.3394374381847692356828f,1.355160662925530390410f,\
+1.5134434006476746858993f,0.9868300791435297147913f,1.528673168936313331301f,\
+0.8260899014265745687879f,1.1783591647662248202977f,0.4297253343366602140740f,\
+0.1611216299891750081130f,0.7663999599077054858398f,1.3047144916618338417180f,\
+1.2822880914611145541926f,1.5649955384218765530591f,1.4678689248356304730692f,\
+1.3586758006659467312716f,0.7108977814935093508808f,0.9933651109027943348906f,\
+1.2071246910756632253481f,0.1405010934420483359464f,1.0025763105214653414521f,\
+1.21989563358396813086f,0.6174353300937470701015f,0.3562751652356153653223f,\
+0.5587012199090121145062f,1.0302380576516638743811f,0.5405656721364887618009f,\
+0.5986555168040823549092f,1.4107360213988626718162f,0.4753739371565622318094f,\
+0.0655076733245526648952f,0.5201329289544929235234f,0.7497818580560413614933f,\
+0.7050355621930805005704f,1.2121540141336599738509f,0.6814274485183255958276f,\
+1.1306014284455374596661f,0.9141116926495304051414f,0.4114688990228685949724f,\
+0.9956827833608694611200f,1.3022000158632660582469f,1.4761001233596913184698f,\
+0.8573788009054216230354f,1.379379585022410426021f,0.0039117682490215858332f,\
+1.2006025140002900553071f,0.7070620318380608226860f,0.0783395850399789817065f,\
+1.2785255791075276210478f,0.2308747034561683952880f,0.9955835564035591112031f,\
+0.4524376138027601523817f,1.4009149235535949262754f,0.0822834615192538504358f,\
+0.8034667275967887212218f,1.2557032585647818212493f,0.1598599852603853899158f,\
+0.5815258576469973794687f,1.4290836436420499833133f,0.1589807896730044689537f,\
+0.7782863583371778526399f,0.2043896563749957318024f,0.9616073478994561218869f,\
+0.7392289023091881405847f,0.6059375681629087795343f,0.5612744745893767372991f,\
+0.9984170767670760282542f,0.8430838000818645650014f,1.29879528501095431459f,\
+0.0939407915654127262384f,1.3484611857054962236191f,1.1960714214373144859138f,\
+0.8415982269448546437829f,0.9732366936364994502995f,0.9167206383382787704406f,\
+0.0745857498941502189416f,0.7278097264573785141195f,0.9199632393837048338625f,\
+0.6304525502744320331061f,0.9211062195464506663356f,0.3555526540057888373880f,\
+0.9100796877015666641597f,0.3899732161636976779384f,1.5260640477653748536824f,\
+0.3849315818496458763143f,0.9408368768631211187525f,1.5061175798419510485360f,\
+0.838676229611447277001f,1.2591119550131308901797f,0.1620018843959732390836f,\
+1.0546671087981356329522f,0.2026968016035011754816f,0.299271305708051660321f,\
+0.7622771187183752239491f,1.067757629024185028754f,0.9888735682758375000745f,\
+1.0801593307389727449674f,1.4588740911245949849473f,0.4118082358815949306496f,\
+0.5629599662610861310341f,0.4399958138718327860239f,0.9004381750108224613527f,\
+1.3516535386697041687398f,1.2852850170743990165789f,0.2721670546404741375390f,\
+0.0569631738604013462823f,0.3951736758236387148102f,0.3862903740059538404417f,\
+1.4457867030840705346861f,1.1403205655573340759901f,1.3522555755333163229892f,\
+0.264908300074692404369f,0.6622029195378335009181f,1.0464389789763977045567f,\
+0.8038225849224520658254f,0.0850815175089563863198f,0.6568351393392068970911f,\
+0.669491640154789569017f,0.7760242270392859742500f,0.7016907095208140265896f,\
+0.7797846541592131641707f,1.335473484345777617222f,0.4740136251481967821775f,\
+0.2395937042296285568455f,1.3285359486862795552753f,1.401425714315664317056f,\
+0.3592738595863486095183f,1.0333805631652628331807f,0.6436572543635337151358f,\
+0.7762911838119904706090f,0.4403927201098556398762f,0.8811512979588507210593f,\
+0.674423430961778702653f,0.9132365009577151360176f,1.5238520140402758151765f,\
+1.00458246450610100275f,0.4215689680173497211335f,0.874990498737184374534f,\
+0.8674547514202983755638f,1.2800682610709759323697f,0.8336956783393613124034f,\
+0.9734878037135866746254f,0.6700663792657182149526f,0.7153420705223627606983f,\
+1.0026132338500262086711f,1.3535381134312993722801f,1.0923065980664201646277f,\
+0.6618099327465949421878f,0.4821732258146940175436f,1.033019939116806895640f,\
+0.8668307442664776596430f,0.9024324853624734465996f,0.0729804020494689703602f,\
+0.5506621520352920073904f,1.1198886719657494825952f,0.7824098301910974440077f,\
+0.3619529370272654977825f,1.4800901440707066036850f,0.7343084050589578914980f,\
+0.8462379976616437593506f,1.2071528313995831815930f,0.5720924999360996743292f,\
+0.1106864208392598775132f,1.0305927183418297499173f,0.8498909387724447039858f,\
+1.15517062965696792887f,0.9096742728488710350021f,1.01141253782177353848f,\
+0.4595989696224830889371f,1.3064089912173471041967f,1.071386424855859109684f,\
+0.4451357270611538408112f,1.5062412806888749727818f,0.2239121309027737871666f,\
+0.4910523338147070870896f,0.8513221989625705532490f,1.460513851259993778342f,\
+0.5833202395880134893957f,0.5481910770820362932554f,0.8603624185522980027940f,\
+0.7565250407629732221082f,0.9237902776741101495972f,1.3040155501467787235725f,\
+0.6701717740731456540715f,0.9634987985586029868301f,0.4075854524817449364704f,\
+0.4213313914917447000619f,0.3316883655770838101873f,1.3489670985956061510791f,\
+1.1391029061589752480188f,1.3689599297259111843061f,0.3132420296422914196555f,\
+0.7917886209906572769768f,1.2228656637749606428400f,1.1551462426298317875961f,\
+0.3579601167993540777879f,0.9549534865181378284760f,0.8141418225805733266398f,\
+0.7703675837106083168493f,0.1543074266086776613616f}
+
+#define CSOURCE2R {3.9219759730622172355652f,4.6815521270036697387695f,3.361602746881544589996f,\
+5.3368766140192747116089f,2.03906395938247442245f,1.5899897180497646331787f,\
+0.1818151073530316352844f,4.0983706060796976089478f,0.1058345986530184745789f,\
+1.9653097167611122131348f,2.7255953708663582801819f,3.4376550372689962387085f,\
+2.0337020372971892356873f,3.0119446106255054473877f,2.7625959040597081184387f,\
+2.9445307422429323196411f,5.7180739520117640495300f,2.141770124435424804688f,\
+6.8954616272822022438049f,5.8555728476494550704956f,4.2041230341419577598572f,\
+4.2775720171630382537842f,3.1845858739688992500305f,5.7618944440037012100220f,\
+4.2549022240564227104187f,9.7619816288352012634277f,2.518960000015795230866f,\
+4.3911290075629949569702f,0.7593036955222487449646f,2.5593801774084568023682f,\
+0.6706167431548237800598f,7.6511315722018480300903f,0.4173615900799632072449f,\
+3.438271805644035339356f,1.9701673323288559913635f,2.1228986512869596481323f,\
+3.1403985014185309410095f,7.8216253779828548431396f,0.5409323470667004585266f,\
+9.1902069095522165298462f,4.6035157097503542900085f,2.9926850274205207824707f,\
+0.0291663268581032752991f,8.9934705849736928939819f,8.3879271661862730979919f,\
+4.3437494523823261260986f,7.7678761305287480354309f,1.3953176606446504592896f,\
+1.1506372271105647087097f,5.3554199635982513427734f,4.3117330456152558326721f,\
+6.145384786650538444519f,9.2589621385559439659119f,0.9938172809779644012451f,\
+4.2805786477401852607727f,9.431830951943993568420f,0.3273952705785632133484f,\
+9.2132670804858207702637f,9.4490244099870324134827f,9.007069906219840049744f,\
+8.0943161016330122947693f,0.2519542910158634185791f,0.0196450622752308845520f,\
+5.0752213317900896072388f,4.0760429529473185539246f,8.4080461412668228149414f,\
+5.017265700735151767731f,9.1287807654589414596558f,4.4357294728979468345642f,\
+5.9837839566171169281006f,7.7418426470831036567688f,7.9220082703977823257446f,\
+5.5046048713847994804382f,4.0850437059998512268066f,7.2174380579963326454163f,\
+4.768535858020186424255f,6.3930579042062163352966f,9.963865298777818679810f,\
+1.5747882844880223274231f,5.3506936598569154739380f,2.1290646074339747428894f,\
+5.59145063161849975586f,4.304965981282293796539f,0.2280548494309186935425f,\
+5.7614597817882895469666f,7.1491303853690624237061f,9.3216359661892056465149f,\
+1.2326993141323328018188f,2.8655522270128130912781f,0.1247995719313621520996f,\
+5.7694048294797539710999f,3.9386960770934820175171f,6.8885837262496352195740f,\
+9.7023218311369419097900f,8.51576429326087236404f,3.3933044690638780593872f,\
+8.7725317804142832756042f,1.1314024776220321655273f,5.2641283208504319190979f,\
+5.297394050285220146179f,9.2917560925707221031189f,9.7654302977025508880615f,\
+6.2254639761522412300110f,9.822583282366394996643f,7.5429888023063540458679f,\
+5.4547880962491035461426f,7.2860160330310463905334f,0.2525969501584768295288f,\
+4.0251684701070189476013f,0.9831319935619831085205f,2.6086253346875309944153f,\
+3.6363423336297273635864f,1.7466178117319941520691f,9.2341394722461700439453f,\
+7.6051409030333161354065f,5.6402041297405958175659f,3.7970651825889945030212f,\
+8.7762261740863323211670f,8.21742579806596040726f,6.787058124318718910217f,\
+0.8220098121091723442078f,2.5527314469218254089355f,7.4444567272439599037170f,\
+2.2695036139339208602905f,6.836930788122117519379f,9.3650726415216922760010f,\
+5.0530174048617482185364f,2.5248145777732133865356f,6.8188397912308573722839f,\
+2.8363681584596633911133f,1.409485661424696445465f,6.7591095995157957077026f,\
+4.5126775791868567466736f,7.5430292449891567230225f,1.3702143030241131782532f,\
+6.6082405392080545425415f,3.8900542212650179862976f,7.001820541918277740479f,\
+9.168005720712244510651f,2.1228999551385641098022f,2.6978330826386809349060f,\
+3.1998893804848194122314f,0.2321802498772740364075f,7.26544727571308612823f,\
+1.5340585587546229362488f,2.3552638292312622070312f,0.8797382796183228492737f,\
+7.1059537213295698165894f,6.8887275597080588340759f,6.5953194908797740936279f,\
+1.8151161121204495429993f,3.9049659762531518936157f,1.5869047446176409721375f,\
+6.2407150492072105407715f,6.3760355720296502113342f,4.2704886104911565780640f,\
+1.0716815060004591941833f,2.3822965659201145172119f,9.4629473658278584480286f,\
+4.5766852516680955886841f,8.9644787041470408439636f,4.4384705275297164916992f,\
+8.08956819120794534683f,6.8317985069006681442261f,0.3401931514963507652283f,\
+2.3805456422269344329834f,9.4920115964487195014954f,2.1827886346727609634399f,\
+6.1546878470107913017273f,8.3135433867573738098145f,7.7340125897899270057678f,\
+4.2441909667104482650757f,7.262125960551202297211f,7.0999773032963275909424f,\
+4.7457459988072514533997f,9.4386920798569917678833f,1.4596485672518610954285f,\
+0.7141010463237762451172f,6.7337385797873139381409f,6.536924717947840690613f,\
+1.996896131895482540131f,6.01412517949938774109f,1.8993748771026730537415f,\
+2.5839814636856317520142f,0.9878737432882189750671f,0.6199027225375175476074f,\
+0.4034968325868248939514f,7.4001471605151891708374f,6.1626600986346602439880f,\
+6.5835834480822086334229f,2.5145971449092030525208f,3.8433500844985246658325f,\
+4.3964602379128336906433f,6.5407369285821914672852f,5.878106378950178623200f,\
+6.0208318661898374557495f,0.4535020282492041587830f,2.0294443331658840179443f,\
+7.844273825176060199738f,2.6375361625105142593384f}
+
+#define CSOURCE2I {4.3832763982936739921570f,8.6648589745163917541504f,3.7921421090140938758850f,\
+7.6687160786241292953491f,6.0066213225945830345154f,7.85673560574650764465f,\
+7.3871155502274632453918f,5.5442603398114442825317f,9.9291495559737086296082f,\
+9.757428467273712158203f,3.709622272290289402008f,3.0322382133454084396362f,\
+9.5195201179012656211853f,7.1278580836951732635498f,1.192370061762630939484f,\
+5.0091631803661584854126f,3.2900535268709063529968f,4.8089468106627464294434f,\
+3.3036959776654839515686f,6.3044753577560186386108f,2.1171907847747206687927f,\
+4.4860231317579746246338f,5.9145097108557820320129f,6.8067426700145006179810f,\
+0.7392961112782359123230f,9.4336947053670883178711f,1.2863306934013962745667f,\
+2.0190807711333036422729f,1.9693034281954169273376f,8.9286901615560054779053f,\
+4.6179189579561352729797f,6.2512917164713144302368f,7.0597065938636660575867f,\
+7.0181696489453315734863f,4.0879997471347451210022f,0.6362213846296072006226f,\
+0.6573933875188231468201f,5.3310041315853595733643f,0.3315818728879094123840f,\
+3.157835649326443672180f,3.785823243670165538788f,4.6195234358310699462891f,\
+6.2873698258772492408752f,2.8785153012722730636597f,3.2920487364754080772400f,\
+4.7192330472171306610107f,3.3537696348503232002258f,5.5530697200447320938110f,\
+1.196080814115703105927f,7.6139996573328971862793f,4.7909884760156273841858f,\
+2.8169692959636449813843f,2.380097783170640468597f,3.2942054606974124908447f,\
+2.3067280324175953865051f,2.1362966019660234451294f,4.0549980429932475090027f,\
+3.0953712016344070434570f,6.762971603311598300934f,9.7069163154810667037964f,\
+5.4417965700849890708923f,0.2047479711472988128662f,8.9413649635389447212219f,\
+3.4903638903051614761353f,1.1053651524707674980164f,2.0233777537941932678223f,\
+1.3046909729018807411194f,8.573952978476881980896f,6.3780163740739226341248f,\
+4.0711227245628833770752f,6.6919379355385899543762f,2.042601602151989936829f,\
+8.3104313490912318229675f,0.1221632957458496093750f,4.8844617092981934547424f,\
+9.549877075478434562683f,0.5874312063679099082947f,8.2584649138152599334717f,\
+2.9807415651157498359680f,0.7757596764713525772095f,5.8460923237726092338562f,\
+7.528713606297969818115f,0.5172297963872551918030f,5.9586250688880681991577f,\
+3.8337053125724196434021f,4.9002202786505222320557f,5.2727950783446431159973f,\
+0.6889454741030931472778f,8.843077751807868480682f,7.1912937611341476440430f,\
+0.6942595774307847023010f,1.1522095929831266403198f,4.862680672667920589447f,\
+7.6715826056897640228271f,0.8805298106744885444641f,7.0085612777620553970337f,\
+1.879138792864978313446f,2.0178856328129768371582f,4.0628212550655007362366f,\
+4.0966569539159536361694f,1.769564501009881496429f,3.31293122842907905579f,\
+0.5184767069295048713684f,4.1492417920380830764771f,7.2212355909869074821472f,\
+0.7746253907680511474609f,5.8558783913031220436096f,3.7079446297138929367065f,\
+2.1161167463287711143494f,1.903268527239561080933f,5.607953821308910846710f,\
+9.4247916433960199356079f,6.8177247745916247367859f,2.7342410013079643249512f,\
+2.0717754075303673744202f,1.9379387702792882919312f,6.797837591730058193207f,\
+5.88365742936730384827f,9.331753817386925220490f,5.509122880175709724426f,\
+8.0405469564720988273621f,1.074489727616310119629f,7.4039250845089554786682f,\
+5.6103316973894834518433f,7.6611549546942114830017f,7.8306589089334011077881f,\
+1.4388314681127667427063f,1.6471924725919961929321f,3.1774142337962985038757f,\
+5.0265956297516822814941f,6.9204960623756051064f,7.0065794046968221664429f,\
+8.8706119870766997337341f,6.9797694869339466094971f,6.7989911558106541633606f,\
+3.6159398127347230911255f,2.6739976881071925163269f,0.7736870646476745605469f,\
+1.494100340642035007477f,3.2018390577286481857300f,2.0260545751079916954041f,\
+4.4988587312400341033936f,7.7075743721798062324524f,2.4352242145687341690063f,\
+2.1261148853227496147156f,1.0992341861128807067871f,6.9814807781949639320374f,\
+4.1509064938873052597046f,5.0298188393935561180115f,7.51160675659775733948f,\
+9.9401472182944416999817f,1.82876241393387317657f,3.021917375735938549042f,\
+3.7854864448308944702148f,7.1531985932961106300354f,9.5241537224501371383667f,\
+4.7039186349138617515564f,1.8709417246282100677490f,2.55718790460377931595f,\
+4.4350660685449838638306f,7.2340781940147280693054f,8.7619100883603096008301f,\
+0.3733208635821938514710f,4.2934664245694875717163f,3.1572330510243773460388f,\
+3.682477343827486038208f,1.4587742509320378303528f,6.7683792579919099807739f,\
+5.2619793592020869255066f,4.003625661134719848633f,0.0291080260649323463440f,\
+3.0681814532727003097534f,7.9026939114555716514587f,9.5779503695666790008545f,\
+6.6892711864784359931946f,2.9296159837394952774048f,8.2238993747159838676453f,\
+0.1798455044627189636231f,8.7107013771310448646545f,3.1810243334621191024780f,\
+5.7244732743129134178162f,5.7386581040918827056885f,3.4920182498171925544739f,\
+7.06729766912758350372f,3.5992007283493876457214f,4.0523112565279006958008f,\
+6.1408105725422501564026f,6.5240467619150876998901f,0.2951709320768713951111f,\
+5.6688958965241909027100f,7.1140170888975262641907f,4.5884906593710184097290f,\
+4.7205173922702670097351f,0.6237313523888587951660f,0.8544011274352669715881f,\
+0.1345641072839498519898f,3.5430019116029143333435f,6.7193946428596973419189f,\
+1.3606189610436558723450f,2.1197437215596437454224f}
+
+#define CRESULT2R {1.7718546901199148102535f,2.2873385372432406548171f,1.6228701567171754938101f,\
+2.2346263074245684698838f,1.8473969837167181218263f,2.0814403666906242662549f,\
+2.000040135761198101250f,1.930738025076279118508f,2.2955316341715112926636f,\
+2.2979125914561788768253f,1.52676863913911398107f,1.5225454413433419098567f,\
+2.2756589535249842626285f,2.0461560089912054216654f,1.10158579014350732628f,\
+1.7596676151017560663092f,1.886619744318301705732f,1.6609534913253483079387f,\
+2.0341867590624715944614f,2.1522631887405574424577f,1.5490800609419352884544f,\
+1.8243154431583954444562f,1.9046961835587756795007f,2.1880745312667504443027f,\
+1.462943224821960486182f,2.6082576924848916988253f,1.0397086540972344526068f,\
+1.5754847768676314423431f,0.746979645400304148595f,2.2287521705924668857790f,\
+1.5403790183895167409389f,2.29053332003721576982f,1.9561479629741382879615f,\
+2.056062919004959077540f,1.5124829204355532130677f,0.7957872878063905197621f,\
+1.1657936572577645151227f,2.247663310479210085902f,-0.4549625893688244437918f,\
+2.273939094117130466088f,1.7851157264602297569667f,1.705510493291471751931f,\
+1.838553591041654167171f,2.2452631537104275061267f,2.1984262619387999748710f,\
+1.858482175867823826820f,2.1354614286115483068329f,1.7449625890299069741474f,\
+0.5066316450005309279803f,2.2309587833094872699746f,1.8633839241242127204856f,\
+1.9110608576794807511590f,2.2575857867741544460216f,1.23571911173189863398f,\
+1.581562045830424700910f,2.2691047577207688057399f,1.4031989962500943658341f,\
+2.2741179432518765501925f,2.4527182982567738989133f,2.5833963585371355620168f,\
+2.2776279862384747332271f,-1.1249835300913728630690f,2.1906906716320380112961f,\
+1.8180097251363194210683f,1.440608273684235829393f,2.157337396250079031290f,\
+1.6456014738468727198750f,2.5276363856092047832647f,2.0501201476301127435420f,\
+1.9792596577711849548109f,2.325636279713856779949f,2.1018269082301319627959f,\
+2.2993946557097193483798f,1.407779382548410174181f,2.1650335217497893580685f,\
+2.3678319878208848869861f,1.8594164774388513006187f,2.56043452139564964298f,\
+1.2152594801616827258073f,1.6876273083151080989239f,1.8280452566376663714465f,\
+2.2383606348726785562064f,1.4669353168458199032642f,1.7855716392006990567154f,\
+1.9344712649878033072781f,2.1595582205209731263551f,2.3711393709457433409682f,\
+0.3451198452895575252697f,2.2295598849908442318224f,1.9730216569827605521681f,\
+1.7597572254564382010500f,1.4119056335367026200345f,2.1320313551579719302254f,\
+2.5151804905590435801344f,2.1472364706413502588589f,2.052431577045615185284f,\
+2.1940570121896025845842f,0.8387289948467516742525f,1.8945610375322186058611f,\
+1.901605848224737327357f,2.2469410116186243620007f,2.3333167208432867845147f,\
+1.8321040495156570848678f,2.3667788410376999763685f,2.345870799293293007537f,\
+1.7064766326923879180555f,2.2351179984798275057756f,1.3127927306468758494873f,\
+1.5145818637157286712380f,0.7618288453812751548355f,1.8221250086585414340590f,\
+2.3127298919002594601579f,1.9513099157402993277799f,2.2649290827240116108499f,\
+2.0646178740610454660498f,1.7857162805439725783430f,2.0523808897592226152540f,\
+2.357637781206334715023f,2.5204455223537904906550f,2.1680868421848340510394f,\
+2.08969579055791898625f,1.0187212773133276222381f,2.351321025745570558740f,\
+1.8003855797977157404688f,2.3290564194645368978343f,2.5020530275623595883872f,\
+1.6589662323678027178175f,1.1034736729371952268508f,2.0179385634489594991692f,\
+1.7529535621370035958222f,1.9548092141654069830992f,2.2757671672542376661852f,\
+2.2978225629400212959297f,2.329897705001075625120f,1.9366802551403343723990f,\
+2.0192737614105338295190f,1.5519072144028889237433f,1.9522381258437428996899f,\
+2.228825942499146339770f,1.3459088341323246496017f,1.2160693133443531976923f,\
+1.708519320712721833999f,2.042657041378174831436f,2.0363649964518035773153f,\
+0.9638512795498686003270f,0.9551846741593900125267f,1.951137961258366582129f,\
+2.107724763084950492242f,2.1435395035941335883933f,2.30219731892690226971f,\
+2.3129821080069814520641f,1.4613961122338947618005f,1.2276638750511146280786f,\
+1.98774702803650615834f,2.2599263943254159769936f,2.3454288218721179859472f,\
+1.5736974684351636710744f,1.1082826047896976451312f,2.2826248447267389884985f,\
+1.852079302129498561413f,2.4440219801181322090144f,2.2846216839061130876587f,\
+2.0916390604994830049179f,2.0880185293365247645170f,1.1554676622252344486697f,\
+1.4781743340729813773748f,2.2621227047071905680298f,1.9617338719614783038026f,\
+2.0915485321054503309313f,2.222172100020261886755f,2.0456349034700243016971f,\
+1.6557620395745074048932f,2.3732960033711649749932f,2.4784302018604411621538f,\
+2.1043456955600268187823f,2.2908052004546388680239f,2.1225525715426596384816f,\
+-0.3059820602804464440006f,2.398801697565509982724f,1.9837316998415748248163f,\
+1.8021669050328577021958f,2.1177911026101683411582f,1.3800624471185749531088f,\
+2.0182134290564768264176f,1.3170274339145702224840f,1.4108532825842892144408f,\
+1.817110834423457665920f,2.2890298175330245911141f,1.8196542505912531861867f,\
+2.1619335403208914669904f,2.0209326327770549269758f,1.7893311710629888899859f,\
+1.8641960608110765829082f,1.882576152038281991352f,1.7816883851861540222217f,\
+1.7954751269073565556056f,1.2730999018963571334240f,1.9486466131391497746961f,\
+2.074605067637334876451f,1.2189909546635331327735f}
+
+#define CRESULT2I {0.8408843669071919268987f,1.0754371807248737091811f,0.8455094310786673839075f,\
+0.962808271271232585242f,1.2435335418309885202603f,1.371120256581034091425f,\
+1.5461888319559713433904f,0.9342369007616236897817f,1.56013775123029430070f,\
+1.3720388608498168547811f,0.9371355532144381994542f,0.7228179279461685036168f,\
+1.360325287393417292847f,1.1709945644102059958414f,0.4074578726347549695319f,\
+1.0393742565506918218432f,0.5221182542768327827787f,1.1517977305599864656926f,\
+0.4467977216337457035955f,0.8222975857540034683169f,0.4665224019878621564139f,\
+0.8091797065019556978172f,1.0768746352304479074746f,0.8683388375483406251831f,\
+0.1720341159830799382391f,0.7682977019562435838651f,0.4721387487057847609506f,\
+0.4309811115589534114001f,1.20279143843462255070f,1.2916347740244560338141f,\
+1.4265839008392693365579f,0.6850460436644268957807f,1.5117462274209296779759f,\
+1.1152532149987959275705f,1.1217014706271768442747f,0.2911766403909815670303f,\
+0.2063546073155473614680f,0.5982511040925977408023f,0.5499105526382754849379f,\
+0.3309697617869979402450f,0.6882370204600587459964f,0.9959451809388051302108f,\
+1.5661574844082004620560f,0.3097639368523368297304f,0.3740022155825183380884f,\
+0.8268049495959598482742f,0.407572856709710940049f,1.3246230944084764757918f,\
+0.8047604843662868878695f,0.9578156211088914018248f,0.8379992820836518196970f,\
+0.4298072736875270249968f,0.2516111351341220880862f,1.2777930133692467773443f,\
+0.4942674920588698839197f,0.2227403824735175175142f,1.4902323819071812138759f,\
+0.3241206854947055737704f,0.6212066791677098853697f,0.8227777158663325263177f,\
+0.5918914368525474145599f,0.6824004867135488039409f,1.5685992315253338702519f,\
+0.602441091725517741118f,0.2648167750385964080984f,0.2361574036342227733698f,\
+0.2544057494452062195833f,0.7540670573431564882583f,0.9631160038064509043565f,\
+0.5974222702744066415548f,0.7127866343417466055143f,0.2523427003112133637508f,\
+0.9857721947818851582213f,0.0298961055939373325507f,0.5949566736712420533806f,\
+1.1076852186579833059454f,0.0916284996635063769821f,0.6920814866116709040966f,\
+1.0847494758718594365376f,0.1439797822740493671301f,1.2215400197911927548944f,\
+0.9319943094964961982640f,0.1195740768674621451462f,1.5325419323859537090726f,\
+0.5871287736405550461427f,0.6008795873685909283424f,0.5147800680430554276512f,\
+0.5096442477271476700906f,1.2574287319730830247977f,1.55344381002968989769f,\
+0.1197588579388608048815f,0.2845949117488152935174f,0.6146775806026560928785f,\
+0.6690416852557365956f,0.1030338183393550155476f,1.1198962694059428901738f,\
+0.2110181909408466172096f,1.0597850788835401214527f,0.6573038229366630069706f,\
+0.6582686240328038396186f,0.1881909924839933190288f,0.3270668956957688000564f,\
+0.0830914673081940696742f,0.3996821407672082604456f,0.763608851537480148863f,\
+0.1410651270101331844487f,0.677001919140020169685f,1.5027782434779339837405f,\
+0.4840122714003086690227f,1.0939971143713191903402f,1.1354027775868176242113f,\
+1.2025671422981056846169f,1.3200023979900399329068f,0.2878762084297626921980f,\
+0.2659639364881328793544f,0.3309563133803885004447f,1.0613976119428301103653f,\
+0.5905886949329369750572f,0.84881047253311037171f,0.6818405058224251691357f,\
+1.4689172047242584628890f,0.3984077871527766379067f,0.7826684691736193189016f,\
+1.1863976071520063726439f,0.8421875864316380466690f,0.6964016273061860440308f,\
+0.2774051332309265816001f,0.5780614975169666713839f,0.4360596809152573194446f,\
+1.0570616474517706695480f,1.3698760574306645398934f,0.8033735187122362786383f,\
+1.100195299896877587642f,0.7466330742895204153342f,1.3719281224888897341430f,\
+0.5006805450256617273652f,0.6022149721715611692119f,0.1100515320096066840261f,\
+0.1615487638997855912582f,0.9853189831543425203364f,0.6441365190650450989196f,\
+0.9525486295501676137221f,1.540681786544560338825f,0.3234105928346787672822f,\
+0.9457654725170446807780f,0.4366658824494836776964f,1.4454467286135332937391f,\
+0.5286797419321711544171f,0.6306769685466229180548f,0.8502600566998695930110f,\
+1.3901817278534140953639f,0.4379816003966337523146f,1.0872460520812594619855f,\
+0.5452429334871597976786f,0.8427783441184910628863f,1.1492861648773524674283f,\
+1.346792368827264718689f,0.665745289338786183642f,0.2639277343938546960267f,\
+0.7696845111061191291313f,0.6789773815510785626159f,1.1019111077295657974418f,\
+0.0461157104075398602272f,0.5610787453255564605215f,1.4634600366382779501606f,\
+0.9969191986962234741654f,0.1524913254966685227654f,1.2588290814744897971877f,\
+0.7073635046287626293449f,0.4488022872724745648831f,0.0037636205385015429094f,\
+0.6259389684526723840463f,0.8276134607557569244918f,0.9328971084913546540918f,\
+0.9537519653655091023126f,0.3009556732582234217510f,1.3951370123387065724785f,\
+0.2467179687642131191705f,0.9127106501576134345299f,0.4528896475979662383793f,\
+1.2351598243895067774645f,0.7619639996129009551495f,1.0726338584530288322583f,\
+1.220269965181696392165f,1.3029226301867964377124f,1.4189980227900089726489f,\
+1.5051832236136615250643f,0.7225617055791342391302f,0.0478600995604049964105f,\
+0.710883123025403795836f,1.2310328539390928970221f,0.8735414139313334436210f,\
+0.8209275679220129351421f,0.0950735258592600440686f,0.1443422571457730618771f,\
+0.0223460331642115414552f,1.443489200421151252840f,1.2774801572114198311425f,\
+0.1717450012966928174496f,0.6769828145758884918593f}
+
+
+/* in is between 0 and 1
+ in2 is between 0 and 10 */
+
+
+/* FIXME : Tests à 10^-4 cf testFloatLog.c */
+
+void slog1psTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ float in2[]=SOURCE2;
+ float res2[]=RESULT2;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=slog1ps(in[i]-1);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-5);
+ }
+
+ for (i=0;i<200;i++){
+ out=slog1ps(in2[i]-1);
+ assert(( (fabs(out-res2[i]))/(fabs(out)) )<3e-4);
+ }
+}
+
+void clog1psTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ float in2R[]=CSOURCE2R;
+ float in2I[]=CSOURCE2I;
+ float res2R[]=CRESULT2R;
+ float res2I[]=CRESULT2I;
+ floatComplex in,in2,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i]-1,inI[i]);
+ out=clog1ps(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<3e-5);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+
+ for (i=0;i<200;i++){
+ in2=FloatComplex(in2R[i]-1,in2I[i]);
+ out=clog1ps(in2);
+ assert(( (fabs(creals(out)-res2R[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-res2I[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void slog1paTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ float in2[]=SOURCE2;
+ float res2[]=RESULT2;
+ int i;
+
+ for (i=0;i<200;i++){
+ in[i]=in[i]-1;
+ in2[i]=in2[i]-1;
+ }
+
+ slog1pa(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-5);
+ }
+
+ slog1pa(in2,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res2[i]))/(fabs(out[i])) )<3e-4);
+ }
+}
+
+void clog1paTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ float in2R[]=CSOURCE2R;
+ float in2I[]=CSOURCE2I;
+ float res2R[]=CRESULT2R;
+ float res2I[]=CRESULT2I;
+ floatComplex *in,*in2,out[200];
+ int i;
+
+ for (i=0;i<200;i++){
+ inR[i]=inR[i]-1;
+ in2R[i]=in2R[i]-1;
+ }
+
+ in=FloatComplexMatrix(inR,inI,200);
+ clog1pa(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<3e-5);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+
+
+ in2=FloatComplexMatrix(in2R,in2I,200);
+ clog1pa(in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-res2R[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-res2I[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+
+int testLog1p(void) {
+ printf("\n>>>> Float Logarithm 1+x Tests\n");
+ slog1psTest();
+ clog1psTest();
+ slog1paTest();
+ clog1paTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testLog1p() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/testLog1p.h b/2.3-1/src/c/elementaryFunctions/log1p/testLog1p.h
new file mode 100644
index 00000000..e9f613aa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/testLog1p.h
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTLOG1P_H_
+#define _TESTLOG1P_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include "log1p.h"
+
+void slog1psTest(void);
+
+void dlog1psTest(void);
+
+void clog1psTest(void);
+
+void zlog1psTest(void);
+
+void slog1paTest(void);
+
+void dlog1paTest(void);
+
+void clog1paTest(void);
+
+void zlog1paTest(void);
+
+int testLog1p(void);
+
+#endif /* ! _TESTLOG1P_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/zlog1pa.c b/2.3-1/src/c/elementaryFunctions/log1p/zlog1pa.c
new file mode 100644
index 00000000..0b6b35ae
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/zlog1pa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log1p.h"
+
+void zlog1pa(doubleComplex* in, int size, doubleComplex* out) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = zlog1ps(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/log1p/zlog1ps.c b/2.3-1/src/c/elementaryFunctions/log1p/zlog1ps.c
new file mode 100644
index 00000000..8b0aeb67
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/log1p/zlog1ps.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "log.h"
+#include "log1p.h"
+
+doubleComplex zlog1ps(doubleComplex in) {
+ return zlogs(DoubleComplex(zreals(in) + 1, zimags(in)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/logspace/dlogspacea.c b/2.3-1/src/c/elementaryFunctions/logspace/dlogspacea.c
new file mode 100644
index 00000000..62802f77
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/logspace/dlogspacea.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <math.h>
+#include <stdlib.h>
+#include "logspace.h"
+
+void dlogspacea(double *low_limit,int _row,double *up_limit,double range_num,double *out)
+{
+ int i,j,k;
+ double temp;
+ double *step_iterate; /* for each row the spacing between two values is different.*/
+ step_iterate = (double*) malloc((double)_row*sizeof(double));
+ for(i=0;i<_row;i++)
+ {
+ step_iterate[i] = pow(10,((up_limit[i]-low_limit[i])/(range_num-1)));
+
+
+ }
+ for(j=0;j < _row;j++)
+ {
+ out[j] = pow(10,low_limit[j]); /* For every row first element is equal to 10 raise to the first value of low_limit array*/
+ temp = out[j];
+ for(k=1;k < (double)range_num;k++ )
+ {
+ out[(_row*k)+j] = temp*step_iterate[j]; /* Output matrix positions for 3 X 5 matrix are [0 3 6 9 12;1 4 7 10 13;2 5 8 11 14] so (_row*k)+j) used*/
+ temp = out[(_row*k)+j];
+ if(k == (double)range_num-1 )
+ {
+ out[(_row*k)+j] = pow(10,((double)up_limit[j])); /* For every row Last value of output is equal to 10 raise to first value of up_limit array*/
+ }
+
+ }
+
+
+ }
+
+
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/logspace/dlogspaces.c b/2.3-1/src/c/elementaryFunctions/logspace/dlogspaces.c
new file mode 100644
index 00000000..df9c94f0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/logspace/dlogspaces.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "logspace.h"
+#include<math.h>
+void dlogspaces(double low_limit,double up_limit,double range_num,double *out)
+{
+ int j;
+ double temp = pow(10,low_limit);
+ double step_iterate = pow(10,((up_limit-low_limit)/(range_num-1)));
+ out[0] = pow(10,low_limit); /*First value of output is equal to low_limit value*/
+ for(j=1; j<(double)range_num; j++)
+ {
+ out[j] = temp*step_iterate;
+ temp = out[j];
+ if(j == (double)range_num-1 )
+ {
+ out[j] = pow(10,((double)up_limit)); /* Last value of output is equal to up_limit value*/
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/nthroot/dnthroot.c b/2.3-1/src/c/elementaryFunctions/nthroot/dnthroot.c
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/nthroot/dnthroot.c
diff --git a/2.3-1/src/c/elementaryFunctions/pow/Makefile.am b/2.3-1/src/c/elementaryFunctions/pow/Makefile.am
new file mode 100644
index 00000000..9b564f92
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/Makefile.am
@@ -0,0 +1,71 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libPow_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libPow.la
+
+libPow_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = spows.c \
+ dpows.c \
+ cpows.c \
+ zpows.c \
+ spowa.c \
+ dpowa.c \
+ cpowa.c \
+ zpowa.c
+
+HEAD = ../includes/pow.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatPow testDoublePow
+
+TESTS = testFloatPow testDoublePow
+
+testFloatPow_SOURCES = testPow.h testFloatPow.c
+testFloatPow_CFLAGS = $(check_INCLUDES)
+testFloatPow_LDADD = $(check_LDADD)
+
+testDoublePow_SOURCES = testPow.h testDoublePow.c
+testDoublePow_CFLAGS = $(check_INCLUDES)
+testDoublePow_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/pow/Makefile.in b/2.3-1/src/c/elementaryFunctions/pow/Makefile.in
new file mode 100644
index 00000000..e47a2d15
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/Makefile.in
@@ -0,0 +1,815 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatPow$(EXEEXT) testDoublePow$(EXEEXT)
+TESTS = testFloatPow$(EXEEXT) testDoublePow$(EXEEXT)
+subdir = src/c/elementaryFunctions/pow
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libPow_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libPow_la-spows.lo libPow_la-dpows.lo \
+ libPow_la-cpows.lo libPow_la-zpows.lo libPow_la-spowa.lo \
+ libPow_la-dpowa.lo libPow_la-cpowa.lo libPow_la-zpowa.lo
+am_libPow_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libPow_la_OBJECTS = $(am_libPow_la_OBJECTS)
+libPow_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libPow_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoublePow_OBJECTS = testDoublePow-testDoublePow.$(OBJEXT)
+testDoublePow_OBJECTS = $(am_testDoublePow_OBJECTS)
+am__DEPENDENCIES_1 = \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la
+testDoublePow_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoublePow_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoublePow_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatPow_OBJECTS = testFloatPow-testFloatPow.$(OBJEXT)
+testFloatPow_OBJECTS = $(am_testFloatPow_OBJECTS)
+testFloatPow_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatPow_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatPow_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libPow_la_SOURCES) $(testDoublePow_SOURCES) \
+ $(testFloatPow_SOURCES)
+DIST_SOURCES = $(libPow_la_SOURCES) $(testDoublePow_SOURCES) \
+ $(testFloatPow_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libPow_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libPow.la
+libPow_la_SOURCES = $(HEAD) $(SRC)
+SRC = spows.c \
+ dpows.c \
+ cpows.c \
+ zpows.c \
+ spowa.c \
+ dpowa.c \
+ cpowa.c \
+ zpowa.c
+
+HEAD = ../includes/pow.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ @LIBMATH@
+
+testFloatPow_SOURCES = testPow.h testFloatPow.c
+testFloatPow_CFLAGS = $(check_INCLUDES)
+testFloatPow_LDADD = $(check_LDADD)
+testDoublePow_SOURCES = testPow.h testDoublePow.c
+testDoublePow_CFLAGS = $(check_INCLUDES)
+testDoublePow_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/pow/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/pow/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libPow.la: $(libPow_la_OBJECTS) $(libPow_la_DEPENDENCIES)
+ $(libPow_la_LINK) -rpath $(pkglibdir) $(libPow_la_OBJECTS) $(libPow_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoublePow$(EXEEXT): $(testDoublePow_OBJECTS) $(testDoublePow_DEPENDENCIES)
+ @rm -f testDoublePow$(EXEEXT)
+ $(testDoublePow_LINK) $(testDoublePow_OBJECTS) $(testDoublePow_LDADD) $(LIBS)
+testFloatPow$(EXEEXT): $(testFloatPow_OBJECTS) $(testFloatPow_DEPENDENCIES)
+ @rm -f testFloatPow$(EXEEXT)
+ $(testFloatPow_LINK) $(testFloatPow_OBJECTS) $(testFloatPow_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-cpowa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-cpows.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-dpowa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-dpows.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-spowa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-spows.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-zpowa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libPow_la-zpows.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoublePow-testDoublePow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatPow-testFloatPow.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libPow_la-spows.lo: spows.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-spows.lo -MD -MP -MF $(DEPDIR)/libPow_la-spows.Tpo -c -o libPow_la-spows.lo `test -f 'spows.c' || echo '$(srcdir)/'`spows.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-spows.Tpo $(DEPDIR)/libPow_la-spows.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spows.c' object='libPow_la-spows.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-spows.lo `test -f 'spows.c' || echo '$(srcdir)/'`spows.c
+
+libPow_la-dpows.lo: dpows.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-dpows.lo -MD -MP -MF $(DEPDIR)/libPow_la-dpows.Tpo -c -o libPow_la-dpows.lo `test -f 'dpows.c' || echo '$(srcdir)/'`dpows.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-dpows.Tpo $(DEPDIR)/libPow_la-dpows.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dpows.c' object='libPow_la-dpows.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-dpows.lo `test -f 'dpows.c' || echo '$(srcdir)/'`dpows.c
+
+libPow_la-cpows.lo: cpows.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-cpows.lo -MD -MP -MF $(DEPDIR)/libPow_la-cpows.Tpo -c -o libPow_la-cpows.lo `test -f 'cpows.c' || echo '$(srcdir)/'`cpows.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-cpows.Tpo $(DEPDIR)/libPow_la-cpows.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cpows.c' object='libPow_la-cpows.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-cpows.lo `test -f 'cpows.c' || echo '$(srcdir)/'`cpows.c
+
+libPow_la-zpows.lo: zpows.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-zpows.lo -MD -MP -MF $(DEPDIR)/libPow_la-zpows.Tpo -c -o libPow_la-zpows.lo `test -f 'zpows.c' || echo '$(srcdir)/'`zpows.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-zpows.Tpo $(DEPDIR)/libPow_la-zpows.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zpows.c' object='libPow_la-zpows.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-zpows.lo `test -f 'zpows.c' || echo '$(srcdir)/'`zpows.c
+
+libPow_la-spowa.lo: spowa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-spowa.lo -MD -MP -MF $(DEPDIR)/libPow_la-spowa.Tpo -c -o libPow_la-spowa.lo `test -f 'spowa.c' || echo '$(srcdir)/'`spowa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-spowa.Tpo $(DEPDIR)/libPow_la-spowa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spowa.c' object='libPow_la-spowa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-spowa.lo `test -f 'spowa.c' || echo '$(srcdir)/'`spowa.c
+
+libPow_la-dpowa.lo: dpowa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-dpowa.lo -MD -MP -MF $(DEPDIR)/libPow_la-dpowa.Tpo -c -o libPow_la-dpowa.lo `test -f 'dpowa.c' || echo '$(srcdir)/'`dpowa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-dpowa.Tpo $(DEPDIR)/libPow_la-dpowa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dpowa.c' object='libPow_la-dpowa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-dpowa.lo `test -f 'dpowa.c' || echo '$(srcdir)/'`dpowa.c
+
+libPow_la-cpowa.lo: cpowa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-cpowa.lo -MD -MP -MF $(DEPDIR)/libPow_la-cpowa.Tpo -c -o libPow_la-cpowa.lo `test -f 'cpowa.c' || echo '$(srcdir)/'`cpowa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-cpowa.Tpo $(DEPDIR)/libPow_la-cpowa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cpowa.c' object='libPow_la-cpowa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-cpowa.lo `test -f 'cpowa.c' || echo '$(srcdir)/'`cpowa.c
+
+libPow_la-zpowa.lo: zpowa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -MT libPow_la-zpowa.lo -MD -MP -MF $(DEPDIR)/libPow_la-zpowa.Tpo -c -o libPow_la-zpowa.lo `test -f 'zpowa.c' || echo '$(srcdir)/'`zpowa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libPow_la-zpowa.Tpo $(DEPDIR)/libPow_la-zpowa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zpowa.c' object='libPow_la-zpowa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libPow_la_CFLAGS) $(CFLAGS) -c -o libPow_la-zpowa.lo `test -f 'zpowa.c' || echo '$(srcdir)/'`zpowa.c
+
+testDoublePow-testDoublePow.o: testDoublePow.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoublePow_CFLAGS) $(CFLAGS) -MT testDoublePow-testDoublePow.o -MD -MP -MF $(DEPDIR)/testDoublePow-testDoublePow.Tpo -c -o testDoublePow-testDoublePow.o `test -f 'testDoublePow.c' || echo '$(srcdir)/'`testDoublePow.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoublePow-testDoublePow.Tpo $(DEPDIR)/testDoublePow-testDoublePow.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoublePow.c' object='testDoublePow-testDoublePow.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoublePow_CFLAGS) $(CFLAGS) -c -o testDoublePow-testDoublePow.o `test -f 'testDoublePow.c' || echo '$(srcdir)/'`testDoublePow.c
+
+testDoublePow-testDoublePow.obj: testDoublePow.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoublePow_CFLAGS) $(CFLAGS) -MT testDoublePow-testDoublePow.obj -MD -MP -MF $(DEPDIR)/testDoublePow-testDoublePow.Tpo -c -o testDoublePow-testDoublePow.obj `if test -f 'testDoublePow.c'; then $(CYGPATH_W) 'testDoublePow.c'; else $(CYGPATH_W) '$(srcdir)/testDoublePow.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoublePow-testDoublePow.Tpo $(DEPDIR)/testDoublePow-testDoublePow.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoublePow.c' object='testDoublePow-testDoublePow.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoublePow_CFLAGS) $(CFLAGS) -c -o testDoublePow-testDoublePow.obj `if test -f 'testDoublePow.c'; then $(CYGPATH_W) 'testDoublePow.c'; else $(CYGPATH_W) '$(srcdir)/testDoublePow.c'; fi`
+
+testFloatPow-testFloatPow.o: testFloatPow.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatPow_CFLAGS) $(CFLAGS) -MT testFloatPow-testFloatPow.o -MD -MP -MF $(DEPDIR)/testFloatPow-testFloatPow.Tpo -c -o testFloatPow-testFloatPow.o `test -f 'testFloatPow.c' || echo '$(srcdir)/'`testFloatPow.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatPow-testFloatPow.Tpo $(DEPDIR)/testFloatPow-testFloatPow.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatPow.c' object='testFloatPow-testFloatPow.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatPow_CFLAGS) $(CFLAGS) -c -o testFloatPow-testFloatPow.o `test -f 'testFloatPow.c' || echo '$(srcdir)/'`testFloatPow.c
+
+testFloatPow-testFloatPow.obj: testFloatPow.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatPow_CFLAGS) $(CFLAGS) -MT testFloatPow-testFloatPow.obj -MD -MP -MF $(DEPDIR)/testFloatPow-testFloatPow.Tpo -c -o testFloatPow-testFloatPow.obj `if test -f 'testFloatPow.c'; then $(CYGPATH_W) 'testFloatPow.c'; else $(CYGPATH_W) '$(srcdir)/testFloatPow.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatPow-testFloatPow.Tpo $(DEPDIR)/testFloatPow-testFloatPow.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatPow.c' object='testFloatPow-testFloatPow.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatPow_CFLAGS) $(CFLAGS) -c -o testFloatPow-testFloatPow.obj `if test -f 'testFloatPow.c'; then $(CYGPATH_W) 'testFloatPow.c'; else $(CYGPATH_W) '$(srcdir)/testFloatPow.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/pow/cpowa.c b/2.3-1/src/c/elementaryFunctions/pow/cpowa.c
new file mode 100644
index 00000000..c5a87327
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/cpowa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+
+void cpowa(floatComplex* x, int size, floatComplex* power, floatComplex *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = cpows(x[i], power[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/cpows.c b/2.3-1/src/c/elementaryFunctions/pow/cpows.c
new file mode 100644
index 00000000..5848c4b5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/cpows.c
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+#include "exp.h"
+#include "log.h"
+
+floatComplex cpows(floatComplex z, floatComplex power) {
+ /*Cas z=0 */
+ if ( (creals(z)==0) && (cimags(z)==0) ){
+ /* Cas 0^0 */
+ if ( (creals(power)==0) && (cimags(power)==0) ) return FloatComplex(1,0);
+ /* Cas 0^x, x!=0 */
+ return FloatComplex(0,0);
+ }
+
+ /* Cas z!=0 */
+ return cexps(cmuls(clogs(z), power));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/dpowa.c b/2.3-1/src/c/elementaryFunctions/pow/dpowa.c
new file mode 100644
index 00000000..64e0ca9e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/dpowa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+
+void dpowa(double* x, int size, double* power, double *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = dpows(x[i], power[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/dpows.c b/2.3-1/src/c/elementaryFunctions/pow/dpows.c
new file mode 100644
index 00000000..cce89196
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/dpows.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+
+double dpows(double x, double p)
+{
+ return pow(x, p);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/i16powa.c b/2.3-1/src/c/elementaryFunctions/pow/i16powa.c
new file mode 100644
index 00000000..eecce15f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/i16powa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "pow.h"
+
+void i16powa(int16* x, int size, int16* power, int16 *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = i16pows(x[i], power[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/i16pows.c b/2.3-1/src/c/elementaryFunctions/pow/i16pows.c
new file mode 100644
index 00000000..63f92d92
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/i16pows.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "pow.h"
+
+int16 i16pows(int16 x, int16 p) {
+ return pow(x, p);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/i8powa.c b/2.3-1/src/c/elementaryFunctions/pow/i8powa.c
new file mode 100644
index 00000000..bf948223
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/i8powa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "pow.h"
+
+void i8powa(int8* x, int size, int8* power, int8 *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = i8pows(x[i], power[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/i8pows.c b/2.3-1/src/c/elementaryFunctions/pow/i8pows.c
new file mode 100644
index 00000000..125ef8c2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/i8pows.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "pow.h"
+
+int8 i8pows(int8 x, int8 p) {
+ return pow(x, p);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/spowa.c b/2.3-1/src/c/elementaryFunctions/pow/spowa.c
new file mode 100644
index 00000000..3ff43ecf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/spowa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+
+void spowa(float* x, int size, float* y, float *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = spows(x[i], y[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/spows.c b/2.3-1/src/c/elementaryFunctions/pow/spows.c
new file mode 100644
index 00000000..b218763e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/spows.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+
+float spows(float x, float p) {
+ return powf(x, p);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/testDoublePow.c b/2.3-1/src/c/elementaryFunctions/pow/testDoublePow.c
new file mode 100644
index 00000000..5d0e9389
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/testDoublePow.c
@@ -0,0 +1,519 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testPow.h"
+
+#define SOURCE {0.4672355107031762599945,0.9742379654198884963989,0.6003209394402801990509,\
+0.8107941793277859687805,0.8507457631640136241913,0.2203239351511001586914,\
+0.9582479097880423069000,0.0577683029696345329285,0.6003680988214910030365,\
+0.0178048145025968551636,0.878713116515427827835,0.9244096884503960609436,\
+0.1339239249937236309052,0.4019813351333141326904,0.9738700897432863712311,\
+0.5752419373020529747009,0.6085763848386704921722,0.5994307789951562881470,\
+0.2787468102760612964630,0.7734748693183064460754,0.1174856307916343212128,\
+0.6118692830204963684082,0.5719244205392897129059,0.4209215147420763969421,\
+0.9079484730027616024017,0.5168110188096761703491,0.7020753105171024799347,\
+0.1115869814530014991760,0.9647724027745425701141,0.9537742473185062408447,\
+0.0141105786897242069244,0.9176791971549391746521,0.8026339909993112087250,\
+0.7647842485457658767700,0.4686868679709732532501,0.1267915265634655952454,\
+0.8111716615967452526093,0.2579231262207031250000,0.5488225766457617282867,\
+0.1490072635933756828308,0.9965628399513661861420,0.0626764874905347824097,\
+0.5473734443075954914093,0.3126759985461831092835,0.4633354763500392436981,\
+0.0458269976079463958740,0.3291175127960741519928,0.7676118602976202964783,\
+0.4801639444194734096527,0.2566448096185922622681,0.1611994621343910694122,\
+0.2144636334851384162903,0.4733993145637214183807,0.370124869048595428467,\
+0.7056843214668333530426,0.6790067506954073905945,0.7920840024016797542572,\
+0.5970210935920476913452,0.7679705549962818622589,0.0501071596518158912659,\
+0.5882007922045886516571,0.5294274277985095977783,0.8948125229217112064362,\
+0.6001070654019713401794,0.6559062353335320949554,0.89065577276051044464,\
+0.4157023173756897449493,0.2063825475051999092102,0.5734984236769378185272,\
+0.6581607908010482788086,0.0213609733618795871735,0.4928230522200465202332,\
+0.9918691380880773067474,0.5282615851610898971558,0.4730890546925365924835,\
+0.6099827596917748451233,0.4131903718225657939911,0.1914102546870708465576,\
+0.5367266149260103702545,0.8726538261398673057556,0.3035852289758622646332,\
+0.3867573235183954238892,0.7349725333042442798615,0.9736115010455250740051,\
+0.8835331979207694530487,0.2047640457749366760254,0.0118132256902754306793,\
+0.9922811193391680717468,0.4397597997449338436127,0.6066115852445363998413,\
+0.9028107305057346820831,0.9170769685879349708557,0.5023606116883456707001,\
+0.6291570700705051422119,0.3050001696683466434479,0.9001630311831831932,\
+0.7309096655808389186859,0.2441865224391222000122,0.4401465845294296741486,\
+0.9633856015279889106751,0.8533022212795913219452,0.3407146632671356201172,\
+0.1051111468113958835602,0.3741277782246470451355,0.5010819151066243648529,\
+0.7990815918892621994019,0.8030767445452511310577,0.4098358312621712684631,\
+0.2850022832863032817841,0.1255963407456874847412,0.8493829430080950260162,\
+0.7299674442037940025330,0.9545726603828370571137,0.6164773050695657730103,\
+0.0457203206606209278107,0.0741118313744664192200,0.9853384527377784252167,\
+0.5198395475745201110840,0.0164341800846159458160,0.505031730048358440399,\
+0.4376457869075238704681,0.1644789781421422958374,0.8006876339204609394074,\
+0.9153772676363587379456,0.4306405331008136272430,0.5242034085094928741455,\
+0.7942340658046305179596,0.0168217038735747337341,0.0752517036162316799164,\
+0.186460481956601142883,0.6345489663071930408478,0.5303690480068325996399,\
+0.2099092262797057628632,0.1940124779939651489258,0.1230711438693106174469,\
+0.7965835509821772575378,0.7827460928820073604584,0.7284079920500516891480,\
+0.7783033107407391071320,0.5244910726323723793030,0.2240348826162517070770,\
+0.10400049015879631042,0.1135220439173281192780,0.8979023238644003868103,\
+0.6526086605153977870941,0.0412637386471033096313,0.2328471210785210132599,\
+0.7579079838469624519348,0.2600162508897483348846,0.6881541088223457336426,\
+0.8394202315248548984528,0.0802956921979784965515,0.7161618857644498348236,\
+0.3582697566598653793335,0.2494430621154606342316,0.4666389161720871925354,\
+0.9401792283169925212860,0.4545566774904727935791,0.5058247582055628299713,\
+0.8678076928481459617615,0.0802897713147103786469,0.5473116356879472732544,\
+0.1851887595839798450470,0.258651246316730976105,0.0463956105522811412811,\
+0.0752319693565368652344,0.9919890114106237888336,0.4826024798676371574402,\
+0.4391565932892262935638,0.6382622700184583663940,0.7334855501540005207062,\
+0.9849543431773781776428,0.2193018416874110698700,0.3509879373013973236084,\
+0.7693294645287096500397,0.6535580744966864585877,0.9609256512485444545746,\
+0.2253256086260080337524,0.5295072314329445362091,0.4856933178380131721497,\
+0.0325177642516791820526,0.0512604638934135437012,0.1943944268859922885895,\
+0.2998601151630282402039,0.549478018190711736679,0.7443804051727056503296,\
+0.1306688119657337665558,0.2112427735701203346252,0.4418653692118823528290,\
+0.6289571113884449005127,0.1768327937461435794830,0.0895956074818968772888,\
+0.481131290551275014877,0.6253239680081605911255,0.3720952612347900867462,\
+0.7183005558326840400696,0.6095875459723174571991,0.8103008717298507690430,\
+0.2223627963103353977203,0.8733466742560267448425}
+
+#define EXPAND 0.4163583382032811641693
+
+#define RESULT {0.7284646681346131913415,0.989192008106873243989,0.8085895400964338008976,\
+0.9163769951101256028281,0.9349137762043832067249,0.5326945489743132311489,\
+0.9823995642201152067585,0.305083797583213633953,0.8086159867079506513576,\
+0.1868945690068203879797,0.9475895783496315338823,0.9678039608420992978566,\
+0.4329723055503270634503,0.68423899539773069822,0.9890364718108022312748,\
+0.7943497624629932696294,0.8132007898688196068093,0.808090117466149226999,\
+0.5875008761072864071906,0.8985735866087510848033,0.4099967340694569695181,\
+0.8150299171646913087841,0.7924391432248698574625,0.6974820008616173794280,\
+0.9605908201300753512797,0.7597020352483303540225,0.8630591732121281056678,\
+0.4012970358491440014959,0.9851790447321197019548,0.9804873634101264334717,\
+0.1696475368521674076394,0.9648638597435894581622,0.9125256586220036325585,\
+0.8943560812692227246501,0.7294059529194845126199,0.4232180082272890553341,\
+0.916554605507083564042,0.5688124226892673496181,0.7789513375488348323472,\
+0.4526453084551937400271,0.9985674717102872577357,0.3156199821647662773216,\
+0.7780943221002011300769,0.6162804684283178513482,0.7259267967438961521864,\
+0.2770427140579521108066,0.6295715021115366738513,0.8957313597799472226768,\
+0.7367902678841352637207,0.5676369465830355398595,0.4677127626898579526582,\
+0.5267487587241619362288,0.7324505569224598611200,0.6611168125785117366533,\
+0.8649036030014317644188,0.8511368159883252459963,0.9075123889490784856449,\
+0.8067359928657767964566,0.8959056083070979781269,0.2875361378747636753595,\
+0.8017520221011086301033,0.7673694529244873274720,0.9547798347087154136048,\
+0.8084695859896496861197,0.8389586175592145256275,0.9529306420557314138975,\
+0.6938680535086353406982,0.5183921020261006429308,0.793346444899387437388,\
+0.8401580945174779158080,0.2016154416018380302056,0.7448165896518380568736,\
+0.9966065805762621687691,0.7666654335848160917166,0.732250650546897197124,\
+0.8139827028709292200404,0.6921192559761130125295,0.5023891186631103122906,\
+0.7717567966494431885849,0.9448634993544591242909,0.6087559602629232236026,\
+0.6733278820109139806149,0.8796721878469864197569,0.9889271210673219458798,\
+0.9497503111327298963573,0.5166955674002130516342,0.157548601510365510192,\
+0.9967789108028516364968,0.7103130756882061191959,0.812106637266760356120,\
+0.9583239035572395092544,0.9646001738095134614426,0.7507845794857243015841,\
+0.8245398795703052785555,0.6099356789350187657561,0.9571527235790283638650,\
+0.8776442633914852686772,0.5559974763067492276036,0.7105731272697249911730,\
+0.9845891777882239681574,0.9360824607784468120997,0.6387148606873016554175,\
+0.3914310831295715331635,0.6640844299927105565118,0.7499883148290458212415,\
+0.9108419054310594731305,0.9127352082795270327154,0.6897741461687679764836,\
+0.5929547610295462511942,0.4215523895030350853830,0.934289925422809419686,\
+0.8771730273596389793056,0.9808290164206334704744,0.8175799454103661600968,\
+0.2767740197567316595695,0.3384295343168625125330,0.9938692202734674685516,\
+0.7615524516687232070566,0.1807639486854548671602,0.7524441192146538170960,\
+0.7088893722374375316875,0.4716512920271773157133,0.9116036713239157318611,\
+0.9638554137274480959619,0.7041427136462521385596,0.7642077184686376645217,\
+0.9085372292434992225196,0.1825266043999770881889,0.3405871110552653457937,\
+0.4969386012149143438954,0.8274746814049287468862,0.7679374104413381196821,\
+0.5220621091101612654128,0.5052216371459599120186,0.4180025804993992566416,\
+0.9096552753365539922825,0.9030424754444578150370,0.8763923131750169792653,\
+0.9009048556663895590546,0.7643822986790410611846,0.5364120201901159123992,\
+0.3897036620350837199389,0.4041799474476096554199,0.956151132910635803697,\
+0.8371998878550279687971,0.2652042210750701900501,0.5450981151899623178281,\
+0.8909992090057128333314,0.5707298363723116718660,0.8558922439179788010932,\
+0.9297114995403523707296,0.3499125215193959470561,0.8702273048082653783553,\
+0.6522163450193463329896,0.560949837269416606844,0.7280772489811332404130,\
+0.9746440403672457231110,0.7201681760891580630357,0.7529358332138126330690,\
+0.9426752591053616514571,0.3499017784013320198078,0.7780577391146925592125,\
+0.4955246248432562672370,0.5694804460964003611778,0.2784687951398606142739,\
+0.3405499204525159195889,0.9966567274503397300123,0.7383459049553654507392,\
+0.7099072481980015503211,0.8294873733988427089159,0.8789307415943956591775,\
+0.9937078900984196438984,0.5316642496139925011534,0.6466638927283177018524,\
+0.8965653157624376978774,0.8377067792805890089625,0.9835416334061796161947,\
+0.5376965838311716927578,0.7674176109757441244241,0.7403110930323951732746,\
+0.2401646248105218373059,0.2902733727718892486891,0.5056355181408417331923,\
+0.6056346866145997376307,0.7793385312672220788244,0.8843430174683920563794,\
+0.4285591961287324447305,0.5234404705944887270519,0.7117271278107557552772,\
+0.8244307605644806136169,0.4860897924292185146022,0.3662484869284197697148,\
+0.7374079263129095229701,0.8224445894290783876102,0.6625799211503411445534,\
+0.8713083765590698970271,0.8137630792596124429394,0.9161448146036499373679,\
+0.5347414781155725993500,0.9451757704519925251674}
+
+#define ZSOURCER {0.6045256052166223526001,0.9455216196365654468536,0.4476299257948994636536,\
+0.8624908211641013622284,0.1751048639416694641113,0.2067177616991102695465,\
+0.6848411662504076957703,0.1348653226159512996674,0.0069159921258687973022,\
+0.1496290047653019428253,0.5665438110008835792542,0.4359452719800174236298,\
+0.6547604538500308990479,0.3381605879403650760651,0.4259321158751845359802,\
+0.3060420057736337184906,0.7704779822379350662231,0.7058695447631180286408,\
+0.2373670237138867378235,0.8205849635414779186249,0.6789963841438293457031,\
+0.5250809141434729099274,0.3359806565567851066589,0.8941988362930715084076,\
+0.5461782198399305343628,0.7568633262999355792999,0.0259526828303933143616,\
+0.3250150899402797222138,0.6072143577039241791,0.8756139636971056461334,\
+0.2962085595354437828064,0.4229678637348115444183,0.4243144039064645767212,\
+0.7620028969831764698029,0.3622896494343876838684,0.5658242437057197093964,\
+0.6424440070986747741699,0.7580267959274351596832,0.2531452132388949394226,\
+0.5266989110969007015228,0.2118590380996465682983,0.4779220153577625751495,\
+0.1615962767973542213440,0.9168031658045947551727,0.5461866445839405059815,\
+0.4686870560981333255768,0.7772213732823729515076,0.5871783248148858547211,\
+0.5848031807690858840942,0.3139644009061157703400,0.3204141603782773017883,\
+0.3331634956412017345429,0.2282590121030807495117,0.2750317254103720188141,\
+0.4963629124686121940613,0.7453477247618138790131,0.1155001949518918991089,\
+0.0626524840481579303741,0.0877018878236413002014,0.5507565210573375225067,\
+0.2116370312869548797607,0.8335358710028231143951,0.4045845707878470420837,\
+0.2880227542482316493988,0.1750094983726739883423,0.0051561561413109302521,\
+0.3109287889674305915833,0.6602919283322989940643,0.9722995534539222717285,\
+0.9826813959516584873200,0.0455837054178118705750,0.4096118300221860408783,\
+0.7104403134435415267944,0.3917615194804966449738,0.5571686858311295509338,\
+0.0565565521828830242157,0.1540721096098423004150,0.9109257892705500125885,\
+0.5713340407237410545349,0.3488348922692239284515,0.8972954172641038894653,\
+0.2973396372981369495392,0.1091936426237225532532,0.7626331257633864879608,\
+0.6584706604480743408203,0.6996708759106695652008,0.6756794182583689689636,\
+0.9004421546123921871185,0.6668148916214704513550,0.8518152837641537189484,\
+0.8365677157416939735413,0.1291190306656062602997,0.6095453463494777679443,\
+0.2412315667606890201569,0.4029275467619299888611,0.3019328541122376918793,\
+0.1083198729902505874634,0.8456356939859688282013,0.9417407037690281867981,\
+0.9083450469188392162323,0.1937242373824119567871,0.5318046086467802524567,\
+0.8314437521621584892273,0.4952740012668073177338,0.7465563025325536727905,\
+0.7102393140085041522980,0.5811418974772095680237,0.7035941029898822307587,\
+0.3746570833027362823486,0.3394373343326151371002,0.6322447275742888450623,\
+0.7636191300116479396820,0.6940386760979890823364,0.8735245508141815662384,\
+0.3612738298252224922180,0.7933200257830321788788,0.4830590635538101196289,\
+0.2469964125193655490875,0.5025922833010554313660,0.7430270477198064327240,\
+0.6783937942236661911011,0.4903185223229229450226,0.709806025959551334381,\
+0.3303662906400859355927,0.6815545372664928436279,0.0701365978457033634186,\
+0.4745870968326926231384,0.8091805852018296718597,0.9447045121341943740845,\
+0.5478458073921501636505,0.1216687532141804695129,0.9161847713403403759003,\
+0.3045207932591438293457,0.6502694808878004550934,0.0987624628469347953796,\
+0.8391053467057645320892,0.0328534897416830062866,0.3461971958167850971222,\
+0.2801467711105942726135,0.5500544901005923748016,0.0729318000376224517822,\
+0.0225322381593286991119,0.50267804320901632309,0.3478884599171578884125,\
+0.4298669416457414627075,0.3537984383292496204376,0.0529730813577771186829,\
+0.9533003675751388072968,0.1842019557952880859375,0.958756382111459970474,\
+0.3245136169716715812683,0.0003973259590566158295,0.0972583871334791183472,\
+0.4378789965994656086,0.3634226778522133827210,0.2685119728557765483856,\
+0.2770298384130001068115,0.8854365111328661441803,0.5216628303751349449158,\
+0.4979983693920075893,0.8733724001795053482056,0.4699407932348549365997,\
+0.9364062966778874397278,0.1337622734718024730682,0.2712419554591178894043,\
+0.1766990595497190952301,0.0543269468471407890320,0.8402757882140576839447,\
+0.7507283594459295272827,0.3062269617803394794464,0.9195641661062836647034,\
+0.1318263853900134563446,0.0826364941895008087158,0.8222710476256906986237,\
+0.4441085970029234886169,0.9617503038607537746429,0.0283641982823610305786,\
+0.1431905967183411121368,0.3793597565963864326477,0.6144003230147063732147,\
+0.2128270715475082397461,0.4704488315619528293610,0.2076055286452174186707,\
+0.7435979112051427364349,0.3391801547259092330933,0.2479635034687817096710,\
+0.6721735307946801185608,0.9013197491876780986786,0.2140864841639995574951,\
+0.8460668534971773624420,0.1650043567642569541931,0.4003686285577714443207,\
+0.5522825215011835098267,0.0638249483890831470490,0.6903966935351490974426,\
+0.8547787251882255077362,0.0291904583573341369629,0.5434663915075361728668,\
+0.6236743135377764701843,0.2417052476666867733002}
+
+#define ZSOURCEI {0.5503273960202932357788,0.6906704087741672992706,0.9835249418392777442932,\
+0.8285484607331454753876,0.2062614001333713531494,0.1944643096067011356354,\
+0.4367609983310103416443,0.8090620837174355983734,0.8818644303828477859497,\
+0.7404803228564560413361,0.7542522149160504341126,0.9921960639767348766327,\
+0.9886121451854705810547,0.0113218077458441257477,0.9367801276966929435730,\
+0.3874237253330647945404,0.2886805813759565353394,0.567788839805871248245,\
+0.7295644441619515419006,0.0303032915107905864716,0.2795897088944911956787,\
+0.7047131718136370182037,0.7442112853750586509705,0.8920237845741212368012,\
+0.1081438604742288589478,0.8751525697298347949982,0.9068333031609654426575,\
+0.2166852983646094799042,0.4824190363287925720215,0.7766945236362516880035,\
+0.4510916722938418388367,0.1300636469386518001556,0.5505470838397741317749,\
+0.6936193336732685565949,0.1749099576845765113831,0.8636093880049884319305,\
+0.2150467522442340850830,0.1886725709773600101471,0.1796098565682768821716,\
+0.4374312213622033596039,0.8514516223222017288208,0.7381969136185944080353,\
+0.8102188156917691230774,0.1460137623362243175507,0.8999849110841751098633,\
+0.4043733575381338596344,0.0156995235010981559753,0.6904196902178227901459,\
+0.2990311514586210250855,0.1383218024857342243195,0.8478512773290276527405,\
+0.3007262717001140117645,0.229154746979475021362,0.8078110129572451114655,\
+0.3176332255825400352478,0.6924462593160569667816,0.1364154014736413955689,\
+0.5433279541321098804474,0.3276594849303364753723,0.2006831648759543895721,\
+0.5037304237484931945801,0.4962565028108656406403,0.8996161324903368949890,\
+0.9357709079049527645111,0.3390339072793722152710,0.6029155333526432514191,\
+0.4153500730171799659729,0.3041478390805423259735,0.8489827848970890045166,\
+0.4482063786126673221588,0.0903797810897231101990,0.7382151386700570583344,\
+0.2669597584754228591919,0.8226196658797562122345,0.3985779182985424995422,\
+0.9789295899681746959686,0.3041231036186218261719,0.0663515278138220310211,\
+0.6667758254334330558777,0.7548807277344167232513,0.1922533493489027023315,\
+0.7942791883833706378937,0.5580398896709084510803,0.2016023616306483745575,\
+0.787146832793951034546,0.0955459238030016422272,0.6623697867617011070252,\
+0.864868474658578634262,0.7013061288744211196899,0.8015053984709084033966,\
+0.9135685982182621955872,0.6317234965972602367401,0.9346773549914360046387,\
+0.9157753759063780307770,0.0510348035022616386414,0.4329969524405896663666,\
+0.9721843507140874862671,0.8001508046872913837433,0.8452261472120881080627,\
+0.0610524858348071575165,0.8168097324669361114502,0.2101262793876230716705,\
+0.3055453812703490257263,0.9465212575159966945648,0.9269728232175111770630,\
+0.7737778765149414539337,0.5893978821113705635071,0.2377697187475860118866,\
+0.5269544571638107299805,0.0077543654479086399078,0.8311711428686976432800,\
+0.0268517597578465938568,0.2591186594218015670776,0.4641277943737804889679,\
+0.6098861405625939369202,0.0656952331773936748505,0.6466812007129192352295,\
+0.1018534512259066104889,0.2742705782875418663025,0.8162728524766862392426,\
+0.3357750270515680313110,0.4765891996212303638458,0.8440040023997426033020,\
+0.1785074654035270214081,0.5855625644326210021973,0.8426241897977888584137,\
+0.7058847947046160697937,0.7396617024205625057221,0.9751448985189199447632,\
+0.7606669445522129535675,0.8236690396443009376526,0.8889620001427829265595,\
+0.7960178293287754058838,0.3052428201772272586823,0.6803312664851546287537,\
+0.6412069997750222682953,0.0988248009234666824341,0.4654508423991501331329,\
+0.6714970665052533149719,0.5131103205494582653046,0.8631567060947418212891,\
+0.8328299173153936862946,0.1687975851818919181824,0.2961277081631124019623,\
+0.2591485660523176193237,0.1700844173319637775421,0.9718958893790841102600,\
+0.0695185582153499126434,0.4696230851113796234131,0.9544191421009600162506,\
+0.3679352095350623130798,0.2973918146453797817230,0.0415310803800821304321,\
+0.4892336544580757617950,0.5171590568497776985169,0.3534862431697547435761,\
+0.2354387864470481872559,0.6779259913600981235504,0.3834532154724001884460,\
+0.3174350797198712825775,0.3418120350688695907593,0.0535557498224079608917,\
+0.9285596096888184547424,0.3862650538794696331024,0.4328473098576068878174,\
+0.1581165478564798831940,0.7887120461091399192810,0.7448797873221337795258,\
+0.5185996759682893753052,0.8651678604073822498322,0.1524438308551907539368,\
+0.2392775672487914562225,0.5761575847864151000977,0.7395762302912771701813,\
+0.0583172617480158805847,0.6962534948252141475678,0.4206145536154508590698,\
+0.0281158541329205036163,0.8313249954953789710999,0.2333360086195170879364,\
+0.8865877203643321990967,0.3746785433031618595123,0.87671328987926244736,\
+0.4027077830396592617035,0.2890332732349634170532,0.8538430598564445972443,\
+0.5499771209433674812317,0.5128610017709434032440,0.6321087554097175598145,\
+0.4165538274683058261871,0.3217771751806139945984,0.9717370062135159969330,\
+0.5348322447389364242554,0.3416590173728764057159,0.9565287167206406593323,\
+0.9951003189198672771454,0.3422884084284305572510,0.7870580093003809452057,\
+0.9234123295173048973084,0.5238970420323312282562}
+
+#define ZEXPAND DoubleComplex(0.3911314327269792556763,0.0342082274146378040314)
+
+#define ZRESULTR {0.8655722944852924927162,1.0080311239181567461998,0.8925609142479407065451,\
+0.9964280419988468251447,0.5571485762795388430035,0.5766215951761861635561,\
+0.8833535690601446166426,0.7551084203039666320478,0.7412402656397241162978,\
+0.7391120775302850720578,0.8861033666941620090540,0.8909045287065679996630,\
+0.9553114711351453625099,0.6535792477810216105638,0.8762967780815824614393,\
+0.6963121473209069600685,0.9071008437483685238334,0.9080649209860272019768,\
+0.7651103758972559454321,0.9246247726026085578255,0.8656267259726894147676,\
+0.8620727374643903928586,0.8030427255614291937036,1.014256580496504245303,\
+0.7887395917701954806134,0.9690769811804932354349,0.75373087988847220497,\
+0.665324036040102595457,0.8564304632009258622105,0.9943426065332526819773,\
+0.7091702303650339045404,0.7167445282856460542220,0.7911175844993063588362,\
+0.9453949687634901621891,0.6824619663334378083519,0.9058411269303636714767,\
+0.8438785717448686884978,0.8969692115256107101118,0.6070703034893107918890,\
+0.8141804062940767305889,0.7904108638330922254056,0.8517415416153172325053,\
+0.7635694344691914547951,0.9644146393547212703368,0.9063017724357406157409,\
+0.7813949726703418585672,0.9055722155740445478145,0.8821341574516833317077,\
+0.8226826712356364312839,0.6436863850966426658928,0.8232923424855791427746,\
+0.6889381687909778007040,0.6034207402867282077352,0.7986983615906712019594,\
+0.7808389246254876514541,0.9393662483390998740873,0.4756496767288962979059,\
+0.6410331785900358347874,0.5570736776954752222935,0.7962089930094966572227,\
+0.6867653317367202747690,0.9490886605505213236000,0.8617186127290810127022,\
+0.8347121855317853889034,0.6099049384775118154423,0.6446553539303585544928,\
+0.7064095183446724712795,0.8589826028412402836310,1.0333280419860488841266,\
+1.0009679370157384958873,0.3688473932823669865222,0.8275000335386157868101,\
+0.8791435711677849651480,0.8404774761127835613905,0.8221259638143403325472,\
+0.7823902259896605704270,0.5836984889260519171472,0.9624591212353429403592,\
+0.87214445216994962440,0.8101176247061679935868,0.9569519742645639093226,\
+0.8025144823533889582023,0.6640375158107885145142,0.8994725858878525048823,\
+0.9233788797234009360082,0.8679958766637961842250,0.9100186689417938401547,\
+1.0128641777475222429672,0.9127218133217330775509,0.9896138009394465084867,\
+0.9993082101967839525614,0.6972926524978265705457,0.9323806069591931144913,\
+0.8160101391916357860268,0.6998385921148442267992,0.7068441167224135401881,\
+0.7938968406481717865475,0.9874359653522727375830,1.0234238356749769671694,\
+0.9614819054159017275296,0.7753407410455703807628,0.7868519463954313231113,\
+0.9338642936617034262525,0.8994361995251628494330,0.9734883682358368428567,\
+0.9388466429512447586347,0.8625681777851778031518,0.8742421714653901831937,\
+0.7644849876693550205786,0.6546359139100853541393,0.9218660826188850299090,\
+0.8990166027048773766950,0.8711301239674282825831,0.9615090167391108222361,\
+0.7791813215771166145629,0.9117874338036765502480,0.8349616312306362697626,\
+0.5854098493033248473694,0.7781598635219196813395,0.9560498319869397132464,\
+0.8700533052058453398203,0.8046824930853576640644,0.9493290716357183356422,\
+0.6616981690563410456463,0.9011123668510968576229,0.7463274688937293621649,\
+0.8438944808683609410949,0.967670917420046960977,1.0395767162530316074509,\
+0.8807547325114291059123,0.7554892774648256370540,1.0206386037631571817030,\
+0.8053238451013553511615,0.8544388176999402340073,0.7032843861931318274472,\
+0.9661800692102989751575,0.3625289807733498292919,0.7365208997706992333221,\
+0.7641887204486981222118,0.8370383509177440339855,0.7532858906222718031742,\
+0.7301419617080030510792,0.7674102539899976260784,0.6963774291087447831927,\
+0.7363495079699874379386,0.6761329476101115565356,0.7795085331527642491523,\
+0.9796876475370105419316,0.6630224685689680708123,1.0412428453447015730404,\
+0.7007987051265935907196,0.4957725828833144943175,0.4082730584143764995808,\
+0.7838070894699612489731,0.7572068286455557739600,0.6666425764079034754772,\
+0.6381705607729424301056,0.9863693130746217230254,0.8032162659781901803413,\
+0.7816455003905713461165,0.9529341373635599188319,0.7431207805833531798712,\
+1.0315213570726253777821,0.6072910725514631957722,0.6918695596662881586170,\
+0.5400639166795813128630,0.7250562108574124531302,0.9788012629543616505146,\
+0.9194404507581022123475,0.8230461548879194344508,0.9655761323394732587033,\
+0.5404820390080352643381,0.6609198489663343778489,0.9720869068178448202389,\
+0.7269646989456197694324,1.0139914787794561679135,0.5745919175986482496654,\
+0.4679101548416189637614,0.8383907049310611592219,0.8313089288905458618117,\
+0.8000776949896156731157,0.7769598400111837888105,0.7959059962591698011991,\
+0.9044673697739834539178,0.6897306414144260822141,0.8021024469389655964235,\
+0.8925260669951027292512,0.9759461964985622905999,0.7283675470231352200301,\
+0.9471290701945646040016,0.5973840169182614845411,0.8760985519463477810831,\
+0.8416576754202981236475,0.5517569581734146355601,0.9608393360039786390558,\
+1.0156994041747668955367,0.5352727784981988756741,0.8841861277509572847322,\
+0.9348154737561720217798,0.7061621510971951565239}
+
+#define ZRESULTI {0.2507352759957017229731,0.2597077035238002373774,0.4311375801547998043439,\
+0.3142096700904059569659,0.1689085837110216592460,0.1485678383570865346286,\
+0.1928467320522971317764,0.4557228688087557322284,0.5147867499839029470365,\
+0.4298954588594036674287,0.3339518115646432083743,0.4361032888669963969441,\
+0.3942661152625340226230,-0.0156759414692011767034,0.4216342190154458435814,\
+0.2375262387333460234462,0.1218623208365654658758,0.2430961140393538000293,\
+0.4005557344949497444731,0.0071165503832518592006,0.1239424146890654998554,\
+0.3239999103802678193098,0.3796166421020668590991,0.3301654490061948776791,\
+0.0445509799759439481526,0.3433255246943433536266,0.5155063670908992534692,\
+0.1333705576653928526199,0.2222401853006255867395,0.2958473844131312979755,\
+0.2718238835045109769162,0.0638111633635406738652,0.2844115395647432431581,\
+0.2819711640048214729148,0.0995008638276371482068,0.3708897696809553279351,\
+0.0957826319358946326465,0.0782020197404261763197,0.1239058544887542273605,\
+0.2149541532842871305320,0.4468354605467026452459,0.3454060748345405551518,\
+0.4482667635221281310365,0.0571905015324990773085,0.3861704363530624739553,\
+0.2095642888443723650394,-0.0006474107340685887483,0.3074538897511936430540,\
+0.1416418035595575219965,0.0813510707235199914678,0.4178944079756690133110,\
+0.18311799903417008695,0.1665779146084863104882,0.4164312720201777673346,\
+0.1619976176982119708825,0.2837987818207240997559,0.1371322947622884147467,\
+0.3919995308417341117746,0.286564517326931111896,0.0947138076393856248592,\
+0.3217566148347950072406,0.2012986727837245137796,0.4147875243243727139131,\
+0.4526264616938408535951,0.2543075867710146709122,0.4351291297892320164564,\
+0.25036019692983552121,0.1367950667990639190830,0.3077766302819374688582,\
+0.1718309573016958136105,0.1360328259424684049783,0.3601092291418593882568,\
+0.115968588156260335453,0.3929767663484189932355,0.1924420270514885511481,\
+0.5251513760714544565289,0.2427797113296941700078,0.0243927289528858663725,\
+0.3014989005539743804896,0.3801688209308042853962,0.0763497789484379602021,\
+0.4062860677618788662890,0.3797590074517701586032,0.0838649495994110844022,\
+0.3295489656272450607055,0.0357665894585867810695,0.2829096131593998308951,\
+0.3209960925989643332201,0.2983490076404094470952,0.3068339844593696019715,\
+0.3442039183940806545969,0.3997229201738806136923,0.3855619142782349961784,\
+0.4583545007457388020811,0.0129171956556070680056,0.2615205358423942638702,\
+0.5091243033451308130921,0.3071680827115451650755,0.3100250105838900926969,\
+0.0221547458511593270414,0.4411750253003750010805,0.1013179671536272169474,\
+0.1255083141058383477962,0.4104233196300889341401,0.3610487505240286831842,\
+0.3169796206475462563290,0.2701202532733757433192,0.1030111453872422366818,\
+0.2857724100202110317781,-0.0183464877937233594718,0.3485944785418330638116,\
+0.0040848531118679188429,0.1134446524724902760628,0.1855694326698145713017,\
+0.3234291264874709082022,0.0223549106164038433042,0.3105918323857878027283,\
+0.0633707862092978274626,0.1386383792252010582757,0.3263302138383256667531,\
+0.1495653713305781229437,0.238933687038423103743,0.3403467519630717363910,\
+0.1069587420575875136297,0.2532367083846476796261,0.4848918076968742330024,\
+0.3344586340162984394731,0.2917134330674172049136,0.3489590836696481734869,\
+0.3396338202076644718908,0.4639844509888130796860,0.3265435199559258427904,\
+0.4050419249651691089298,0.1381892282967451812681,0.4265392723554026210842,\
+0.2540046810921274267336,0.1582030803668608431867,0.2652048658869911035296,\
+0.3681251025496489193145,0.2442033766470435018903,0.4897753247400377096810,\
+0.4969094538937048333160,0.0808848883024730763713,0.177092893746416069067,\
+0.1405588477423546367451,0.0975493235811483866415,0.5243731122097079477840,\
+0.0263866256125966647250,0.3160166163140329387282,0.3411837870670260119965,\
+0.2224220694199508796540,0.319442449785955595587,0.0331421867036013270691,\
+0.2549221660285751478448,0.2842420144041926111100,0.2302184532629851232422,\
+0.1567850704050047783156,0.2616647545633992155700,0.1906579007076603937687,\
+0.1616590279518919370805,0.1379022630075907862590,0.0139510212573068798775,\
+0.3361354155389051356906,0.2959004712785165969180,0.2703106383010808189127,\
+0.1300325021070959929936,0.4744646613374619570358,0.2895824249534337813117,\
+0.2184961358962822230989,0.426807187423937750559,0.0597990003127331498645,\
+0.2115261803479235591663,0.3963149188292993674310,0.2900288348173129526764,\
+0.0171555875146988598412,0.259954574571872487621,0.3590435173524976764092,\
+0.0046771943868099191341,0.3986564841709960838045,0.1066577525426010836229,\
+0.4571171140442078506538,0.1948069655442623004937,0.4555736953569811120701,\
+0.172447721502373058078,0.1749336453691343052,0.4380034702144764424681,\
+0.2406770716320568714863,0.2014785207952041745649,0.3725791699557115532748,\
+0.169353818078211759701,0.2485400584530522705151,0.4375888098622027211349,\
+0.2529242309847982150828,0.3057408437536958678571,0.3787762920334192262573,\
+0.3662661014371520473709,0.3241866507622078730222,0.3495665845168827723377,\
+0.3796220139680390737169,0.3208771087739308858211}
+
+
+
+void dpowsTest(void) {
+ double in1[]=SOURCE;
+ double in2=EXPAND;
+ double res[]=RESULT;
+ double out1,out2,out3;
+ int i;
+
+ for (i=0;i<200;i++){
+ out1=dpows(in1[i],in2);
+ out2=dpows(in1[i],0);
+ out3=dpows(in1[i],1);
+
+ assert(( (fabs(out1-res[i]))/(fabs(out1)) )<3e-16);
+ assert(( (fabs(out2-1))/(fabs(out2)) )<1e-16);
+ assert(( (fabs(out3-in1[i]))/(fabs(out3)) )<1e-16);
+ }
+}
+
+void zpowsTest(void) {
+ double in1R[]=ZSOURCER;
+ double in1I[]=ZSOURCEI;
+ doubleComplex in2=ZEXPAND;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in1,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in1=DoubleComplex(in1R[i],in1I[i]);
+ out=zpows(in1,in2);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dpowaTest(void) {
+ double in1[]=SOURCE;
+ double in2[200];
+ double ZERO[200]={0};
+ double ONE[200];
+ double res[]=RESULT;
+ double out1[200],out2[200],out3[200];
+ int i;
+
+ for (i=0;i<200;i++) {
+ in2[i]=EXPAND;
+ ONE[i]=1;
+ }
+ dpowa(in1,200,in2,out1);
+ dpowa(in1,200,ZERO,out2);
+ dpowa(in1,200,ONE,out3);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out1[i]-res[i]))/(fabs(out1[i])) )<3e-16);
+ assert(( (fabs(out2[i]-1))/(fabs(out2[i])) )<1e-16);
+ assert(( (fabs(out3[i]-in1[i]))/(fabs(out3[i])) )<1e-16);
+ }
+}
+
+void zpowaTest(void) {
+ double in1R[]=ZSOURCER;
+ double in1I[]=ZSOURCEI;
+ doubleComplex in2[200];
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in1,out[200];
+ int i;
+
+ for (i=0;i<200;i++) in2[i]=ZEXPAND;
+ in1=DoubleComplexMatrix(in1R,in1I,200);
+ zpowa(in1,200,in2,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+int testPow(void) {
+ printf("\n>>>> Double Powonential Tests\n");
+ dpowsTest();
+ zpowsTest();
+ dpowaTest();
+ zpowaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testPow() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/testFloatPow.c b/2.3-1/src/c/elementaryFunctions/pow/testFloatPow.c
new file mode 100644
index 00000000..18a5e849
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/testFloatPow.c
@@ -0,0 +1,521 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testPow.h"
+
+#define SOURCE {0.4672355107031762599945f,0.9742379654198884963989f,0.6003209394402801990509f,\
+0.8107941793277859687805f,0.8507457631640136241913f,0.2203239351511001586914f,\
+0.9582479097880423069000f,0.0577683029696345329285f,0.6003680988214910030365f,\
+0.0178048145025968551636f,0.878713116515427827835f,0.9244096884503960609436f,\
+0.1339239249937236309052f,0.4019813351333141326904f,0.9738700897432863712311f,\
+0.5752419373020529747009f,0.6085763848386704921722f,0.5994307789951562881470f,\
+0.2787468102760612964630f,0.7734748693183064460754f,0.1174856307916343212128f,\
+0.6118692830204963684082f,0.5719244205392897129059f,0.4209215147420763969421f,\
+0.9079484730027616024017f,0.5168110188096761703491f,0.7020753105171024799347f,\
+0.1115869814530014991760f,0.9647724027745425701141f,0.9537742473185062408447f,\
+0.0141105786897242069244f,0.9176791971549391746521f,0.8026339909993112087250f,\
+0.7647842485457658767700f,0.4686868679709732532501f,0.1267915265634655952454f,\
+0.8111716615967452526093f,0.2579231262207031250000f,0.5488225766457617282867f,\
+0.1490072635933756828308f,0.9965628399513661861420f,0.0626764874905347824097f,\
+0.5473734443075954914093f,0.3126759985461831092835f,0.4633354763500392436981f,\
+0.0458269976079463958740f,0.3291175127960741519928f,0.7676118602976202964783f,\
+0.4801639444194734096527f,0.2566448096185922622681f,0.1611994621343910694122f,\
+0.2144636334851384162903f,0.4733993145637214183807f,0.370124869048595428467f,\
+0.7056843214668333530426f,0.6790067506954073905945f,0.7920840024016797542572f,\
+0.5970210935920476913452f,0.7679705549962818622589f,0.0501071596518158912659f,\
+0.5882007922045886516571f,0.5294274277985095977783f,0.8948125229217112064362f,\
+0.6001070654019713401794f,0.6559062353335320949554f,0.89065577276051044464f,\
+0.4157023173756897449493f,0.2063825475051999092102f,0.5734984236769378185272f,\
+0.6581607908010482788086f,0.0213609733618795871735f,0.4928230522200465202332f,\
+0.9918691380880773067474f,0.5282615851610898971558f,0.4730890546925365924835f,\
+0.6099827596917748451233f,0.4131903718225657939911f,0.1914102546870708465576f,\
+0.5367266149260103702545f,0.8726538261398673057556f,0.3035852289758622646332f,\
+0.3867573235183954238892f,0.7349725333042442798615f,0.9736115010455250740051f,\
+0.8835331979207694530487f,0.2047640457749366760254f,0.0118132256902754306793f,\
+0.9922811193391680717468f,0.4397597997449338436127f,0.6066115852445363998413f,\
+0.9028107305057346820831f,0.9170769685879349708557f,0.5023606116883456707001f,\
+0.6291570700705051422119f,0.3050001696683466434479f,0.9001630311831831932f,\
+0.7309096655808389186859f,0.2441865224391222000122f,0.4401465845294296741486f,\
+0.9633856015279889106751f,0.8533022212795913219452f,0.3407146632671356201172f,\
+0.1051111468113958835602f,0.3741277782246470451355f,0.5010819151066243648529f,\
+0.7990815918892621994019f,0.8030767445452511310577f,0.4098358312621712684631f,\
+0.2850022832863032817841f,0.1255963407456874847412f,0.8493829430080950260162f,\
+0.7299674442037940025330f,0.9545726603828370571137f,0.6164773050695657730103f,\
+0.0457203206606209278107f,0.0741118313744664192200f,0.9853384527377784252167f,\
+0.5198395475745201110840f,0.0164341800846159458160f,0.505031730048358440399f,\
+0.4376457869075238704681f,0.1644789781421422958374f,0.8006876339204609394074f,\
+0.9153772676363587379456f,0.4306405331008136272430f,0.5242034085094928741455f,\
+0.7942340658046305179596f,0.0168217038735747337341f,0.0752517036162316799164f,\
+0.186460481956601142883f,0.6345489663071930408478f,0.5303690480068325996399f,\
+0.2099092262797057628632f,0.1940124779939651489258f,0.1230711438693106174469f,\
+0.7965835509821772575378f,0.7827460928820073604584f,0.7284079920500516891480f,\
+0.7783033107407391071320f,0.5244910726323723793030f,0.2240348826162517070770f,\
+0.10400049015879631042f,0.1135220439173281192780f,0.8979023238644003868103f,\
+0.6526086605153977870941f,0.0412637386471033096313f,0.2328471210785210132599f,\
+0.7579079838469624519348f,0.2600162508897483348846f,0.6881541088223457336426f,\
+0.8394202315248548984528f,0.0802956921979784965515f,0.7161618857644498348236f,\
+0.3582697566598653793335f,0.2494430621154606342316f,0.4666389161720871925354f,\
+0.9401792283169925212860f,0.4545566774904727935791f,0.5058247582055628299713f,\
+0.8678076928481459617615f,0.0802897713147103786469f,0.5473116356879472732544f,\
+0.1851887595839798450470f,0.258651246316730976105f,0.0463956105522811412811f,\
+0.0752319693565368652344f,0.9919890114106237888336f,0.4826024798676371574402f,\
+0.4391565932892262935638f,0.6382622700184583663940f,0.7334855501540005207062f,\
+0.9849543431773781776428f,0.2193018416874110698700f,0.3509879373013973236084f,\
+0.7693294645287096500397f,0.6535580744966864585877f,0.9609256512485444545746f,\
+0.2253256086260080337524f,0.5295072314329445362091f,0.4856933178380131721497f,\
+0.0325177642516791820526f,0.0512604638934135437012f,0.1943944268859922885895f,\
+0.2998601151630282402039f,0.549478018190711736679f,0.7443804051727056503296f,\
+0.1306688119657337665558f,0.2112427735701203346252f,0.4418653692118823528290f,\
+0.6289571113884449005127f,0.1768327937461435794830f,0.0895956074818968772888f,\
+0.481131290551275014877f,0.6253239680081605911255f,0.3720952612347900867462f,\
+0.7183005558326840400696f,0.6095875459723174571991f,0.8103008717298507690430f,\
+0.2223627963103353977203f,0.8733466742560267448425f}
+
+#define EXPAND 0.4163583382032811641693f
+
+#define RESULT {0.7284646681346131913415f,0.989192008106873243989f,0.8085895400964338008976f,\
+0.9163769951101256028281f,0.9349137762043832067249f,0.5326945489743132311489f,\
+0.9823995642201152067585f,0.305083797583213633953f,0.8086159867079506513576f,\
+0.1868945690068203879797f,0.9475895783496315338823f,0.9678039608420992978566f,\
+0.4329723055503270634503f,0.68423899539773069822f,0.9890364718108022312748f,\
+0.7943497624629932696294f,0.8132007898688196068093f,0.808090117466149226999f,\
+0.5875008761072864071906f,0.8985735866087510848033f,0.4099967340694569695181f,\
+0.8150299171646913087841f,0.7924391432248698574625f,0.6974820008616173794280f,\
+0.9605908201300753512797f,0.7597020352483303540225f,0.8630591732121281056678f,\
+0.4012970358491440014959f,0.9851790447321197019548f,0.9804873634101264334717f,\
+0.1696475368521674076394f,0.9648638597435894581622f,0.9125256586220036325585f,\
+0.8943560812692227246501f,0.7294059529194845126199f,0.4232180082272890553341f,\
+0.916554605507083564042f,0.5688124226892673496181f,0.7789513375488348323472f,\
+0.4526453084551937400271f,0.9985674717102872577357f,0.3156199821647662773216f,\
+0.7780943221002011300769f,0.6162804684283178513482f,0.7259267967438961521864f,\
+0.2770427140579521108066f,0.6295715021115366738513f,0.8957313597799472226768f,\
+0.7367902678841352637207f,0.5676369465830355398595f,0.4677127626898579526582f,\
+0.5267487587241619362288f,0.7324505569224598611200f,0.6611168125785117366533f,\
+0.8649036030014317644188f,0.8511368159883252459963f,0.9075123889490784856449f,\
+0.8067359928657767964566f,0.8959056083070979781269f,0.2875361378747636753595f,\
+0.8017520221011086301033f,0.7673694529244873274720f,0.9547798347087154136048f,\
+0.8084695859896496861197f,0.8389586175592145256275f,0.9529306420557314138975f,\
+0.6938680535086353406982f,0.5183921020261006429308f,0.793346444899387437388f,\
+0.8401580945174779158080f,0.2016154416018380302056f,0.7448165896518380568736f,\
+0.9966065805762621687691f,0.7666654335848160917166f,0.732250650546897197124f,\
+0.8139827028709292200404f,0.6921192559761130125295f,0.5023891186631103122906f,\
+0.7717567966494431885849f,0.9448634993544591242909f,0.6087559602629232236026f,\
+0.6733278820109139806149f,0.8796721878469864197569f,0.9889271210673219458798f,\
+0.9497503111327298963573f,0.5166955674002130516342f,0.157548601510365510192f,\
+0.9967789108028516364968f,0.7103130756882061191959f,0.812106637266760356120f,\
+0.9583239035572395092544f,0.9646001738095134614426f,0.7507845794857243015841f,\
+0.8245398795703052785555f,0.6099356789350187657561f,0.9571527235790283638650f,\
+0.8776442633914852686772f,0.5559974763067492276036f,0.7105731272697249911730f,\
+0.9845891777882239681574f,0.9360824607784468120997f,0.6387148606873016554175f,\
+0.3914310831295715331635f,0.6640844299927105565118f,0.7499883148290458212415f,\
+0.9108419054310594731305f,0.9127352082795270327154f,0.6897741461687679764836f,\
+0.5929547610295462511942f,0.4215523895030350853830f,0.934289925422809419686f,\
+0.8771730273596389793056f,0.9808290164206334704744f,0.8175799454103661600968f,\
+0.2767740197567316595695f,0.3384295343168625125330f,0.9938692202734674685516f,\
+0.7615524516687232070566f,0.1807639486854548671602f,0.7524441192146538170960f,\
+0.7088893722374375316875f,0.4716512920271773157133f,0.9116036713239157318611f,\
+0.9638554137274480959619f,0.7041427136462521385596f,0.7642077184686376645217f,\
+0.9085372292434992225196f,0.1825266043999770881889f,0.3405871110552653457937f,\
+0.4969386012149143438954f,0.8274746814049287468862f,0.7679374104413381196821f,\
+0.5220621091101612654128f,0.5052216371459599120186f,0.4180025804993992566416f,\
+0.9096552753365539922825f,0.9030424754444578150370f,0.8763923131750169792653f,\
+0.9009048556663895590546f,0.7643822986790410611846f,0.5364120201901159123992f,\
+0.3897036620350837199389f,0.4041799474476096554199f,0.956151132910635803697f,\
+0.8371998878550279687971f,0.2652042210750701900501f,0.5450981151899623178281f,\
+0.8909992090057128333314f,0.5707298363723116718660f,0.8558922439179788010932f,\
+0.9297114995403523707296f,0.3499125215193959470561f,0.8702273048082653783553f,\
+0.6522163450193463329896f,0.560949837269416606844f,0.7280772489811332404130f,\
+0.9746440403672457231110f,0.7201681760891580630357f,0.7529358332138126330690f,\
+0.9426752591053616514571f,0.3499017784013320198078f,0.7780577391146925592125f,\
+0.4955246248432562672370f,0.5694804460964003611778f,0.2784687951398606142739f,\
+0.3405499204525159195889f,0.9966567274503397300123f,0.7383459049553654507392f,\
+0.7099072481980015503211f,0.8294873733988427089159f,0.8789307415943956591775f,\
+0.9937078900984196438984f,0.5316642496139925011534f,0.6466638927283177018524f,\
+0.8965653157624376978774f,0.8377067792805890089625f,0.9835416334061796161947f,\
+0.5376965838311716927578f,0.7674176109757441244241f,0.7403110930323951732746f,\
+0.2401646248105218373059f,0.2902733727718892486891f,0.5056355181408417331923f,\
+0.6056346866145997376307f,0.7793385312672220788244f,0.8843430174683920563794f,\
+0.4285591961287324447305f,0.5234404705944887270519f,0.7117271278107557552772f,\
+0.8244307605644806136169f,0.4860897924292185146022f,0.3662484869284197697148f,\
+0.7374079263129095229701f,0.8224445894290783876102f,0.6625799211503411445534f,\
+0.8713083765590698970271f,0.8137630792596124429394f,0.9161448146036499373679f,\
+0.5347414781155725993500f,0.9451757704519925251674f}
+
+#define CSOURCER {0.6045256052166223526001f,0.9455216196365654468536f,0.4476299257948994636536f,\
+0.8624908211641013622284f,0.1751048639416694641113f,0.2067177616991102695465f,\
+0.6848411662504076957703f,0.1348653226159512996674f,0.0069159921258687973022f,\
+0.1496290047653019428253f,0.5665438110008835792542f,0.4359452719800174236298f,\
+0.6547604538500308990479f,0.3381605879403650760651f,0.4259321158751845359802f,\
+0.3060420057736337184906f,0.7704779822379350662231f,0.7058695447631180286408f,\
+0.2373670237138867378235f,0.8205849635414779186249f,0.6789963841438293457031f,\
+0.5250809141434729099274f,0.3359806565567851066589f,0.8941988362930715084076f,\
+0.5461782198399305343628f,0.7568633262999355792999f,0.0259526828303933143616f,\
+0.3250150899402797222138f,0.6072143577039241791f,0.8756139636971056461334f,\
+0.2962085595354437828064f,0.4229678637348115444183f,0.4243144039064645767212f,\
+0.7620028969831764698029f,0.3622896494343876838684f,0.5658242437057197093964f,\
+0.6424440070986747741699f,0.7580267959274351596832f,0.2531452132388949394226f,\
+0.5266989110969007015228f,0.2118590380996465682983f,0.4779220153577625751495f,\
+0.1615962767973542213440f,0.9168031658045947551727f,0.5461866445839405059815f,\
+0.4686870560981333255768f,0.7772213732823729515076f,0.5871783248148858547211f,\
+0.5848031807690858840942f,0.3139644009061157703400f,0.3204141603782773017883f,\
+0.3331634956412017345429f,0.2282590121030807495117f,0.2750317254103720188141f,\
+0.4963629124686121940613f,0.7453477247618138790131f,0.1155001949518918991089f,\
+0.0626524840481579303741f,0.0877018878236413002014f,0.5507565210573375225067f,\
+0.2116370312869548797607f,0.8335358710028231143951f,0.4045845707878470420837f,\
+0.2880227542482316493988f,0.1750094983726739883423f,0.0051561561413109302521f,\
+0.3109287889674305915833f,0.6602919283322989940643f,0.9722995534539222717285f,\
+0.9826813959516584873200f,0.0455837054178118705750f,0.4096118300221860408783f,\
+0.7104403134435415267944f,0.3917615194804966449738f,0.5571686858311295509338f,\
+0.0565565521828830242157f,0.1540721096098423004150f,0.9109257892705500125885f,\
+0.5713340407237410545349f,0.3488348922692239284515f,0.8972954172641038894653f,\
+0.2973396372981369495392f,0.1091936426237225532532f,0.7626331257633864879608f,\
+0.6584706604480743408203f,0.6996708759106695652008f,0.6756794182583689689636f,\
+0.9004421546123921871185f,0.6668148916214704513550f,0.8518152837641537189484f,\
+0.8365677157416939735413f,0.1291190306656062602997f,0.6095453463494777679443f,\
+0.2412315667606890201569f,0.4029275467619299888611f,0.3019328541122376918793f,\
+0.1083198729902505874634f,0.8456356939859688282013f,0.9417407037690281867981f,\
+0.9083450469188392162323f,0.1937242373824119567871f,0.5318046086467802524567f,\
+0.8314437521621584892273f,0.4952740012668073177338f,0.7465563025325536727905f,\
+0.7102393140085041522980f,0.5811418974772095680237f,0.7035941029898822307587f,\
+0.3746570833027362823486f,0.3394373343326151371002f,0.6322447275742888450623f,\
+0.7636191300116479396820f,0.6940386760979890823364f,0.8735245508141815662384f,\
+0.3612738298252224922180f,0.7933200257830321788788f,0.4830590635538101196289f,\
+0.2469964125193655490875f,0.5025922833010554313660f,0.7430270477198064327240f,\
+0.6783937942236661911011f,0.4903185223229229450226f,0.709806025959551334381f,\
+0.3303662906400859355927f,0.6815545372664928436279f,0.0701365978457033634186f,\
+0.4745870968326926231384f,0.8091805852018296718597f,0.9447045121341943740845f,\
+0.5478458073921501636505f,0.1216687532141804695129f,0.9161847713403403759003f,\
+0.3045207932591438293457f,0.6502694808878004550934f,0.0987624628469347953796f,\
+0.8391053467057645320892f,0.0328534897416830062866f,0.3461971958167850971222f,\
+0.2801467711105942726135f,0.5500544901005923748016f,0.0729318000376224517822f,\
+0.0225322381593286991119f,0.50267804320901632309f,0.3478884599171578884125f,\
+0.4298669416457414627075f,0.3537984383292496204376f,0.0529730813577771186829f,\
+0.9533003675751388072968f,0.1842019557952880859375f,0.958756382111459970474f,\
+0.3245136169716715812683f,0.0003973259590566158295f,0.0972583871334791183472f,\
+0.4378789965994656086f,0.3634226778522133827210f,0.2685119728557765483856f,\
+0.2770298384130001068115f,0.8854365111328661441803f,0.5216628303751349449158f,\
+0.4979983693920075893f,0.8733724001795053482056f,0.4699407932348549365997f,\
+0.9364062966778874397278f,0.1337622734718024730682f,0.2712419554591178894043f,\
+0.1766990595497190952301f,0.0543269468471407890320f,0.8402757882140576839447f,\
+0.7507283594459295272827f,0.3062269617803394794464f,0.9195641661062836647034f,\
+0.1318263853900134563446f,0.0826364941895008087158f,0.8222710476256906986237f,\
+0.4441085970029234886169f,0.9617503038607537746429f,0.0283641982823610305786f,\
+0.1431905967183411121368f,0.3793597565963864326477f,0.6144003230147063732147f,\
+0.2128270715475082397461f,0.4704488315619528293610f,0.2076055286452174186707f,\
+0.7435979112051427364349f,0.3391801547259092330933f,0.2479635034687817096710f,\
+0.6721735307946801185608f,0.9013197491876780986786f,0.2140864841639995574951f,\
+0.8460668534971773624420f,0.1650043567642569541931f,0.4003686285577714443207f,\
+0.5522825215011835098267f,0.0638249483890831470490f,0.6903966935351490974426f,\
+0.8547787251882255077362f,0.0291904583573341369629f,0.5434663915075361728668f,\
+0.6236743135377764701843f,0.2417052476666867733002f}
+
+#define CSOURCEI {0.5503273960202932357788f,0.6906704087741672992706f,0.9835249418392777442932f,\
+0.8285484607331454753876f,0.2062614001333713531494f,0.1944643096067011356354f,\
+0.4367609983310103416443f,0.8090620837174355983734f,0.8818644303828477859497f,\
+0.7404803228564560413361f,0.7542522149160504341126f,0.9921960639767348766327f,\
+0.9886121451854705810547f,0.0113218077458441257477f,0.9367801276966929435730f,\
+0.3874237253330647945404f,0.2886805813759565353394f,0.567788839805871248245f,\
+0.7295644441619515419006f,0.0303032915107905864716f,0.2795897088944911956787f,\
+0.7047131718136370182037f,0.7442112853750586509705f,0.8920237845741212368012f,\
+0.1081438604742288589478f,0.8751525697298347949982f,0.9068333031609654426575f,\
+0.2166852983646094799042f,0.4824190363287925720215f,0.7766945236362516880035f,\
+0.4510916722938418388367f,0.1300636469386518001556f,0.5505470838397741317749f,\
+0.6936193336732685565949f,0.1749099576845765113831f,0.8636093880049884319305f,\
+0.2150467522442340850830f,0.1886725709773600101471f,0.1796098565682768821716f,\
+0.4374312213622033596039f,0.8514516223222017288208f,0.7381969136185944080353f,\
+0.8102188156917691230774f,0.1460137623362243175507f,0.8999849110841751098633f,\
+0.4043733575381338596344f,0.0156995235010981559753f,0.6904196902178227901459f,\
+0.2990311514586210250855f,0.1383218024857342243195f,0.8478512773290276527405f,\
+0.3007262717001140117645f,0.229154746979475021362f,0.8078110129572451114655f,\
+0.3176332255825400352478f,0.6924462593160569667816f,0.1364154014736413955689f,\
+0.5433279541321098804474f,0.3276594849303364753723f,0.2006831648759543895721f,\
+0.5037304237484931945801f,0.4962565028108656406403f,0.8996161324903368949890f,\
+0.9357709079049527645111f,0.3390339072793722152710f,0.6029155333526432514191f,\
+0.4153500730171799659729f,0.3041478390805423259735f,0.8489827848970890045166f,\
+0.4482063786126673221588f,0.0903797810897231101990f,0.7382151386700570583344f,\
+0.2669597584754228591919f,0.8226196658797562122345f,0.3985779182985424995422f,\
+0.9789295899681746959686f,0.3041231036186218261719f,0.0663515278138220310211f,\
+0.6667758254334330558777f,0.7548807277344167232513f,0.1922533493489027023315f,\
+0.7942791883833706378937f,0.5580398896709084510803f,0.2016023616306483745575f,\
+0.787146832793951034546f,0.0955459238030016422272f,0.6623697867617011070252f,\
+0.864868474658578634262f,0.7013061288744211196899f,0.8015053984709084033966f,\
+0.9135685982182621955872f,0.6317234965972602367401f,0.9346773549914360046387f,\
+0.9157753759063780307770f,0.0510348035022616386414f,0.4329969524405896663666f,\
+0.9721843507140874862671f,0.8001508046872913837433f,0.8452261472120881080627f,\
+0.0610524858348071575165f,0.8168097324669361114502f,0.2101262793876230716705f,\
+0.3055453812703490257263f,0.9465212575159966945648f,0.9269728232175111770630f,\
+0.7737778765149414539337f,0.5893978821113705635071f,0.2377697187475860118866f,\
+0.5269544571638107299805f,0.0077543654479086399078f,0.8311711428686976432800f,\
+0.0268517597578465938568f,0.2591186594218015670776f,0.4641277943737804889679f,\
+0.6098861405625939369202f,0.0656952331773936748505f,0.6466812007129192352295f,\
+0.1018534512259066104889f,0.2742705782875418663025f,0.8162728524766862392426f,\
+0.3357750270515680313110f,0.4765891996212303638458f,0.8440040023997426033020f,\
+0.1785074654035270214081f,0.5855625644326210021973f,0.8426241897977888584137f,\
+0.7058847947046160697937f,0.7396617024205625057221f,0.9751448985189199447632f,\
+0.7606669445522129535675f,0.8236690396443009376526f,0.8889620001427829265595f,\
+0.7960178293287754058838f,0.3052428201772272586823f,0.6803312664851546287537f,\
+0.6412069997750222682953f,0.0988248009234666824341f,0.4654508423991501331329f,\
+0.6714970665052533149719f,0.5131103205494582653046f,0.8631567060947418212891f,\
+0.8328299173153936862946f,0.1687975851818919181824f,0.2961277081631124019623f,\
+0.2591485660523176193237f,0.1700844173319637775421f,0.9718958893790841102600f,\
+0.0695185582153499126434f,0.4696230851113796234131f,0.9544191421009600162506f,\
+0.3679352095350623130798f,0.2973918146453797817230f,0.0415310803800821304321f,\
+0.4892336544580757617950f,0.5171590568497776985169f,0.3534862431697547435761f,\
+0.2354387864470481872559f,0.6779259913600981235504f,0.3834532154724001884460f,\
+0.3174350797198712825775f,0.3418120350688695907593f,0.0535557498224079608917f,\
+0.9285596096888184547424f,0.3862650538794696331024f,0.4328473098576068878174f,\
+0.1581165478564798831940f,0.7887120461091399192810f,0.7448797873221337795258f,\
+0.5185996759682893753052f,0.8651678604073822498322f,0.1524438308551907539368f,\
+0.2392775672487914562225f,0.5761575847864151000977f,0.7395762302912771701813f,\
+0.0583172617480158805847f,0.6962534948252141475678f,0.4206145536154508590698f,\
+0.0281158541329205036163f,0.8313249954953789710999f,0.2333360086195170879364f,\
+0.8865877203643321990967f,0.3746785433031618595123f,0.87671328987926244736f,\
+0.4027077830396592617035f,0.2890332732349634170532f,0.8538430598564445972443f,\
+0.5499771209433674812317f,0.5128610017709434032440f,0.6321087554097175598145f,\
+0.4165538274683058261871f,0.3217771751806139945984f,0.9717370062135159969330f,\
+0.5348322447389364242554f,0.3416590173728764057159f,0.9565287167206406593323f,\
+0.9951003189198672771454f,0.3422884084284305572510f,0.7870580093003809452057f,\
+0.9234123295173048973084f,0.5238970420323312282562f}
+
+#define CEXPAND FloatComplex(0.3911314327269792556763f,0.0342082274146378040314f)
+
+#define CRESULTR {0.8655722944852924927162f,1.0080311239181567461998f,0.8925609142479407065451f,\
+0.9964280419988468251447f,0.5571485762795388430035f,0.5766215951761861635561f,\
+0.8833535690601446166426f,0.7551084203039666320478f,0.7412402656397241162978f,\
+0.7391120775302850720578f,0.8861033666941620090540f,0.8909045287065679996630f,\
+0.9553114711351453625099f,0.6535792477810216105638f,0.8762967780815824614393f,\
+0.6963121473209069600685f,0.9071008437483685238334f,0.9080649209860272019768f,\
+0.7651103758972559454321f,0.9246247726026085578255f,0.8656267259726894147676f,\
+0.8620727374643903928586f,0.8030427255614291937036f,1.014256580496504245303f,\
+0.7887395917701954806134f,0.9690769811804932354349f,0.75373087988847220497f,\
+0.665324036040102595457f,0.8564304632009258622105f,0.9943426065332526819773f,\
+0.7091702303650339045404f,0.7167445282856460542220f,0.7911175844993063588362f,\
+0.9453949687634901621891f,0.6824619663334378083519f,0.9058411269303636714767f,\
+0.8438785717448686884978f,0.8969692115256107101118f,0.6070703034893107918890f,\
+0.8141804062940767305889f,0.7904108638330922254056f,0.8517415416153172325053f,\
+0.7635694344691914547951f,0.9644146393547212703368f,0.9063017724357406157409f,\
+0.7813949726703418585672f,0.9055722155740445478145f,0.8821341574516833317077f,\
+0.8226826712356364312839f,0.6436863850966426658928f,0.8232923424855791427746f,\
+0.6889381687909778007040f,0.6034207402867282077352f,0.7986983615906712019594f,\
+0.7808389246254876514541f,0.9393662483390998740873f,0.4756496767288962979059f,\
+0.6410331785900358347874f,0.5570736776954752222935f,0.7962089930094966572227f,\
+0.6867653317367202747690f,0.9490886605505213236000f,0.8617186127290810127022f,\
+0.8347121855317853889034f,0.6099049384775118154423f,0.6446553539303585544928f,\
+0.7064095183446724712795f,0.8589826028412402836310f,1.0333280419860488841266f,\
+1.0009679370157384958873f,0.3688473932823669865222f,0.8275000335386157868101f,\
+0.8791435711677849651480f,0.8404774761127835613905f,0.8221259638143403325472f,\
+0.7823902259896605704270f,0.5836984889260519171472f,0.9624591212353429403592f,\
+0.87214445216994962440f,0.8101176247061679935868f,0.9569519742645639093226f,\
+0.8025144823533889582023f,0.6640375158107885145142f,0.8994725858878525048823f,\
+0.9233788797234009360082f,0.8679958766637961842250f,0.9100186689417938401547f,\
+1.0128641777475222429672f,0.9127218133217330775509f,0.9896138009394465084867f,\
+0.9993082101967839525614f,0.6972926524978265705457f,0.9323806069591931144913f,\
+0.8160101391916357860268f,0.6998385921148442267992f,0.7068441167224135401881f,\
+0.7938968406481717865475f,0.9874359653522727375830f,1.0234238356749769671694f,\
+0.9614819054159017275296f,0.7753407410455703807628f,0.7868519463954313231113f,\
+0.9338642936617034262525f,0.8994361995251628494330f,0.9734883682358368428567f,\
+0.9388466429512447586347f,0.8625681777851778031518f,0.8742421714653901831937f,\
+0.7644849876693550205786f,0.6546359139100853541393f,0.9218660826188850299090f,\
+0.8990166027048773766950f,0.8711301239674282825831f,0.9615090167391108222361f,\
+0.7791813215771166145629f,0.9117874338036765502480f,0.8349616312306362697626f,\
+0.5854098493033248473694f,0.7781598635219196813395f,0.9560498319869397132464f,\
+0.8700533052058453398203f,0.8046824930853576640644f,0.9493290716357183356422f,\
+0.6616981690563410456463f,0.9011123668510968576229f,0.7463274688937293621649f,\
+0.8438944808683609410949f,0.967670917420046960977f,1.0395767162530316074509f,\
+0.8807547325114291059123f,0.7554892774648256370540f,1.0206386037631571817030f,\
+0.8053238451013553511615f,0.8544388176999402340073f,0.7032843861931318274472f,\
+0.9661800692102989751575f,0.3625289807733498292919f,0.7365208997706992333221f,\
+0.7641887204486981222118f,0.8370383509177440339855f,0.7532858906222718031742f,\
+0.7301419617080030510792f,0.7674102539899976260784f,0.6963774291087447831927f,\
+0.7363495079699874379386f,0.6761329476101115565356f,0.7795085331527642491523f,\
+0.9796876475370105419316f,0.6630224685689680708123f,1.0412428453447015730404f,\
+0.7007987051265935907196f,0.4957725828833144943175f,0.4082730584143764995808f,\
+0.7838070894699612489731f,0.7572068286455557739600f,0.6666425764079034754772f,\
+0.6381705607729424301056f,0.9863693130746217230254f,0.8032162659781901803413f,\
+0.7816455003905713461165f,0.9529341373635599188319f,0.7431207805833531798712f,\
+1.0315213570726253777821f,0.6072910725514631957722f,0.6918695596662881586170f,\
+0.5400639166795813128630f,0.7250562108574124531302f,0.9788012629543616505146f,\
+0.9194404507581022123475f,0.8230461548879194344508f,0.9655761323394732587033f,\
+0.5404820390080352643381f,0.6609198489663343778489f,0.9720869068178448202389f,\
+0.7269646989456197694324f,1.0139914787794561679135f,0.5745919175986482496654f,\
+0.4679101548416189637614f,0.8383907049310611592219f,0.8313089288905458618117f,\
+0.8000776949896156731157f,0.7769598400111837888105f,0.7959059962591698011991f,\
+0.9044673697739834539178f,0.6897306414144260822141f,0.8021024469389655964235f,\
+0.8925260669951027292512f,0.9759461964985622905999f,0.7283675470231352200301f,\
+0.9471290701945646040016f,0.5973840169182614845411f,0.8760985519463477810831f,\
+0.8416576754202981236475f,0.5517569581734146355601f,0.9608393360039786390558f,\
+1.0156994041747668955367f,0.5352727784981988756741f,0.8841861277509572847322f,\
+0.9348154737561720217798f,0.7061621510971951565239f}
+
+#define CRESULTI {0.2507352759957017229731f,0.2597077035238002373774f,0.4311375801547998043439f,\
+0.3142096700904059569659f,0.1689085837110216592460f,0.1485678383570865346286f,\
+0.1928467320522971317764f,0.4557228688087557322284f,0.5147867499839029470365f,\
+0.4298954588594036674287f,0.3339518115646432083743f,0.4361032888669963969441f,\
+0.3942661152625340226230f,-0.0156759414692011767034f,0.4216342190154458435814f,\
+0.2375262387333460234462f,0.1218623208365654658758f,0.2430961140393538000293f,\
+0.4005557344949497444731f,0.0071165503832518592006f,0.1239424146890654998554f,\
+0.3239999103802678193098f,0.3796166421020668590991f,0.3301654490061948776791f,\
+0.0445509799759439481526f,0.3433255246943433536266f,0.5155063670908992534692f,\
+0.1333705576653928526199f,0.2222401853006255867395f,0.2958473844131312979755f,\
+0.2718238835045109769162f,0.0638111633635406738652f,0.2844115395647432431581f,\
+0.2819711640048214729148f,0.0995008638276371482068f,0.3708897696809553279351f,\
+0.0957826319358946326465f,0.0782020197404261763197f,0.1239058544887542273605f,\
+0.2149541532842871305320f,0.4468354605467026452459f,0.3454060748345405551518f,\
+0.4482667635221281310365f,0.0571905015324990773085f,0.3861704363530624739553f,\
+0.2095642888443723650394f,-0.0006474107340685887483f,0.3074538897511936430540f,\
+0.1416418035595575219965f,0.0813510707235199914678f,0.4178944079756690133110f,\
+0.18311799903417008695f,0.1665779146084863104882f,0.4164312720201777673346f,\
+0.1619976176982119708825f,0.2837987818207240997559f,0.1371322947622884147467f,\
+0.3919995308417341117746f,0.286564517326931111896f,0.0947138076393856248592f,\
+0.3217566148347950072406f,0.2012986727837245137796f,0.4147875243243727139131f,\
+0.4526264616938408535951f,0.2543075867710146709122f,0.4351291297892320164564f,\
+0.25036019692983552121f,0.1367950667990639190830f,0.3077766302819374688582f,\
+0.1718309573016958136105f,0.1360328259424684049783f,0.3601092291418593882568f,\
+0.115968588156260335453f,0.3929767663484189932355f,0.1924420270514885511481f,\
+0.5251513760714544565289f,0.2427797113296941700078f,0.0243927289528858663725f,\
+0.3014989005539743804896f,0.3801688209308042853962f,0.0763497789484379602021f,\
+0.4062860677618788662890f,0.3797590074517701586032f,0.0838649495994110844022f,\
+0.3295489656272450607055f,0.0357665894585867810695f,0.2829096131593998308951f,\
+0.3209960925989643332201f,0.2983490076404094470952f,0.3068339844593696019715f,\
+0.3442039183940806545969f,0.3997229201738806136923f,0.3855619142782349961784f,\
+0.4583545007457388020811f,0.0129171956556070680056f,0.2615205358423942638702f,\
+0.5091243033451308130921f,0.3071680827115451650755f,0.3100250105838900926969f,\
+0.0221547458511593270414f,0.4411750253003750010805f,0.1013179671536272169474f,\
+0.1255083141058383477962f,0.4104233196300889341401f,0.3610487505240286831842f,\
+0.3169796206475462563290f,0.2701202532733757433192f,0.1030111453872422366818f,\
+0.2857724100202110317781f,-0.0183464877937233594718f,0.3485944785418330638116f,\
+0.0040848531118679188429f,0.1134446524724902760628f,0.1855694326698145713017f,\
+0.3234291264874709082022f,0.0223549106164038433042f,0.3105918323857878027283f,\
+0.0633707862092978274626f,0.1386383792252010582757f,0.3263302138383256667531f,\
+0.1495653713305781229437f,0.238933687038423103743f,0.3403467519630717363910f,\
+0.1069587420575875136297f,0.2532367083846476796261f,0.4848918076968742330024f,\
+0.3344586340162984394731f,0.2917134330674172049136f,0.3489590836696481734869f,\
+0.3396338202076644718908f,0.4639844509888130796860f,0.3265435199559258427904f,\
+0.4050419249651691089298f,0.1381892282967451812681f,0.4265392723554026210842f,\
+0.2540046810921274267336f,0.1582030803668608431867f,0.2652048658869911035296f,\
+0.3681251025496489193145f,0.2442033766470435018903f,0.4897753247400377096810f,\
+0.4969094538937048333160f,0.0808848883024730763713f,0.177092893746416069067f,\
+0.1405588477423546367451f,0.0975493235811483866415f,0.5243731122097079477840f,\
+0.0263866256125966647250f,0.3160166163140329387282f,0.3411837870670260119965f,\
+0.2224220694199508796540f,0.319442449785955595587f,0.0331421867036013270691f,\
+0.2549221660285751478448f,0.2842420144041926111100f,0.2302184532629851232422f,\
+0.1567850704050047783156f,0.2616647545633992155700f,0.1906579007076603937687f,\
+0.1616590279518919370805f,0.1379022630075907862590f,0.0139510212573068798775f,\
+0.3361354155389051356906f,0.2959004712785165969180f,0.2703106383010808189127f,\
+0.1300325021070959929936f,0.4744646613374619570358f,0.2895824249534337813117f,\
+0.2184961358962822230989f,0.426807187423937750559f,0.0597990003127331498645f,\
+0.2115261803479235591663f,0.3963149188292993674310f,0.2900288348173129526764f,\
+0.0171555875146988598412f,0.259954574571872487621f,0.3590435173524976764092f,\
+0.0046771943868099191341f,0.3986564841709960838045f,0.1066577525426010836229f,\
+0.4571171140442078506538f,0.1948069655442623004937f,0.4555736953569811120701f,\
+0.172447721502373058078f,0.1749336453691343052f,0.4380034702144764424681f,\
+0.2406770716320568714863f,0.2014785207952041745649f,0.3725791699557115532748f,\
+0.169353818078211759701f,0.2485400584530522705151f,0.4375888098622027211349f,\
+0.2529242309847982150828f,0.3057408437536958678571f,0.3787762920334192262573f,\
+0.3662661014371520473709f,0.3241866507622078730222f,0.3495665845168827723377f,\
+0.3796220139680390737169f,0.3208771087739308858211f}
+
+
+
+void spowsTest(void) {
+ float in1[]=SOURCE;
+ float in2=EXPAND;
+ float res[]=RESULT;
+ float out1,out2,out3;
+ int i;
+
+ for (i=0;i<200;i++){
+ out1=spows(in1[i],in2);
+ out2=spows(in1[i],0);
+ out3=spows(in1[i],1);
+
+ assert(( (fabs(out1-res[i]))/(fabs(out1)) )<1e-6);
+ assert(( (fabs(out2-1))/(fabs(out2)) )<1e-16);
+ assert(( (fabs(out3-in1[i]))/(fabs(out3)) )<1e-16);
+ }
+}
+
+
+void cpowsTest(void) {
+ float in1R[]=CSOURCER;
+ float in1I[]=CSOURCEI;
+ floatComplex in2=CEXPAND;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in1,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in1=FloatComplex(in1R[i],in1I[i]);
+ out=cpows(in1,in2);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<1e-5);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-5);
+ }
+}
+
+void spowaTest(void) {
+ float in1[]=SOURCE;
+ float in2[200];
+ float ZERO[200]={0};
+ float ONE[200];
+ float res[]=RESULT;
+ float out1[200],out2[200],out3[200];
+ int i;
+
+ for (i=0;i<200;i++) {
+ in2[i]=EXPAND;
+ ONE[i]=1;
+ }
+ spowa(in1,200,in2,out1);
+ spowa(in1,200,ZERO,out2);
+ spowa(in1,200,ONE,out3);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out1[i]-res[i]))/(fabs(out1[i])) )<1e-6);
+ assert(( (fabs(out2[i]-1))/(fabs(out2[i])) )<1e-16);
+ assert(( (fabs(out3[i]-in1[i]))/(fabs(out3[i])) )<1e-16);
+ }
+}
+
+void cpowaTest(void) {
+ float in1R[]=CSOURCER;
+ float in1I[]=CSOURCEI;
+ floatComplex in2[200];
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in1, out[200];
+ int i;
+
+ for (i=0;i<200;i++) in2[i]=CEXPAND;
+ in1=FloatComplexMatrix(in1R,in1I,200);
+ cpowa(in1,200,in2,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testPow(void) {
+ printf("\n>>>> Powonential Tests\n");
+ spowsTest();
+
+ cpowsTest();
+ spowaTest();
+ cpowaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testPow() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/testPow.h b/2.3-1/src/c/elementaryFunctions/pow/testPow.h
new file mode 100644
index 00000000..700909f0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/testPow.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTPOW_H_
+#define _TESTPOW_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "pow.h"
+#include "constant.h"
+
+
+void spowsTest(void);
+
+void dpowsTest(void);
+
+void cpowsTest(void);
+
+void zpowsTest(void);
+
+void spowaTest(void);
+
+void dpowaTest(void);
+
+void cpowaTest(void);
+
+void zpowaTest(void);
+
+int testPow(void);
+
+#endif /* ! _TESTPOW_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/pow/u16powa.c b/2.3-1/src/c/elementaryFunctions/pow/u16powa.c
new file mode 100644
index 00000000..df34972d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/u16powa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "pow.h"
+
+void u16powa(uint16* x, int size, uint16* power, uint16 *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = u16pows(x[i], power[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/u16pows.c b/2.3-1/src/c/elementaryFunctions/pow/u16pows.c
new file mode 100644
index 00000000..49dd654c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/u16pows.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "pow.h"
+
+uint16 u16pows(uint16 x, uint16 p) {
+ return pow(x, p);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/u8powa.c b/2.3-1/src/c/elementaryFunctions/pow/u8powa.c
new file mode 100644
index 00000000..90bcc642
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/u8powa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "pow.h"
+
+void u8powa(uint8* x, int size, uint8* power, uint8 *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = u8pows(x[i], power[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/u8pows.c b/2.3-1/src/c/elementaryFunctions/pow/u8pows.c
new file mode 100644
index 00000000..cfcd4c69
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/u8pows.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "pow.h"
+
+uint8 u8pows(uint8 x, uint8 p)
+{
+ return pow(x, p);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/zpowa.c b/2.3-1/src/c/elementaryFunctions/pow/zpowa.c
new file mode 100644
index 00000000..ace264de
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/zpowa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+
+void zpowa(doubleComplex* x, int size, doubleComplex* y, doubleComplex *out) {
+ /*
+ Computes Scilab x.^power
+ Computes power element by element
+ x and power must have same size
+ */
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ out[i] = zpows(x[i], y[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/pow/zpows.c b/2.3-1/src/c/elementaryFunctions/pow/zpows.c
new file mode 100644
index 00000000..4fe771ab
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/pow/zpows.c
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "pow.h"
+#include "log.h"
+#include "exp.h"
+
+doubleComplex zpows(doubleComplex z, doubleComplex power) {
+ /*Cas z=0 */
+ if ( (zreals(z)==0) && (zimags(z)==0) ){
+ /* Cas 0^0 */
+ if ( (zreals(power)==0) && (zimags(power)==0) ) return DoubleComplex(1,0);
+ /* Cas 0^x, x!=0 */
+ return DoubleComplex(0,0);
+ }
+
+ /* Cas z!=0 */
+ return zexps(zmuls(zlogs(z), power));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/dbase2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/dbase2decs.c
new file mode 100644
index 00000000..a92fc76f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/dbase2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "base2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+double dbase2decs(double in,int base)
+{
+ int n=0,rem=0, base1=1;
+ double out=0.0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base1);
+ n = n / 10 ;
+ base1 = base1 * base;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/gbase2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/gbase2decs.c
new file mode 100644
index 00000000..811a4116
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/base2dec/gbase2decs.c
@@ -0,0 +1,166 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <stdio.h>
+#include <math.h>
+#include "base2dec.h"
+#include <string.h>
+
+double gbase2decs(char* in,int size,int base)
+{
+ size-=2;
+ int i=0,val=0,j=0;
+ double o=0.0;
+ for(i=0; in[i]!='\0'; i++)
+ {
+ //printf("%c \n",in[i]);
+ switch(in[i])
+ {
+ case '0':
+ val = 0;
+ break;
+ case '1':
+ val = 1;
+ break;
+ case '2':
+ val = 2;
+ break;
+ case '3':
+ val = 3;
+ break;
+ case '4':
+ val = 4;
+ break;
+ case '5':
+ val = 5;
+ break;
+ case '6':
+ val = 6;
+ break;
+ case '7':
+ val = 7;
+ break;
+ case '8':
+ val = 8;
+ break;
+ case '9':
+ val = 9;
+ break;
+ case 'a':
+ case 'A':
+ val = 10;
+ break;
+ case 'b':
+ case 'B':
+ val = 11;
+ break;
+ case 'c':
+ case 'C':
+ val = 12;
+ break;
+ case 'd':
+ case 'D':
+ val = 13;
+ break;
+ case 'e':
+ case 'E':
+ val = 14;
+ break;
+ case 'f':
+ case 'F':
+ val = 15;
+ break;
+ case 'g':
+ case 'G':
+ val = 16;
+ break;
+ case 'h':
+ case 'H':
+ val = 17;
+ break;
+ case 'i':
+ case 'I':
+ val = 18;
+ break;
+ case 'j':
+ case 'J':
+ val = 19;
+ break;
+ case 'k':
+ case 'K':
+ val = 20;
+ break;
+ case 'l':
+ case 'L':
+ val = 21;
+ break;
+ case 'm':
+ case 'M':
+ val = 22;
+ break;
+ case 'n':
+ case 'N':
+ val = 23;
+ break;
+ case 'o':
+ case 'O':
+ val = 24;
+ break;
+ case 'p':
+ case 'P':
+ val = 25;
+ break;
+ case 'q':
+ case 'Q':
+ val = 26;
+ break;
+ case 'r':
+ case 'R':
+ val = 27;
+ break;
+ case 's':
+ case 'S':
+ val = 28;
+ break;
+ case 't':
+ case 'T':
+ val = 29;
+ break;
+ case 'u':
+ case 'U':
+ val = 30;
+ break;
+ case 'v':
+ case 'V':
+ val = 31;
+ break;
+ case 'w':
+ case 'W':
+ val = 32;
+ break;
+ case 'x':
+ case 'X':
+ val = 33;
+ break;
+ case 'y':
+ case 'Y':
+ val = 34;
+ break;
+ case 'z':
+ case 'Z':
+ val = 35;
+ break;
+ }
+ o = o + (val * (int)pow((double)base, size));
+ size--;
+ }
+ return o;
+ }
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2deca.c
new file mode 100644
index 00000000..96fccc5f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "bin2dec.h"
+
+void dbin2deca(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=dbin2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2decs.c
new file mode 100644
index 00000000..ff363c37
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/dbin2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "bin2dec.h"
+#include <stdlib.h>
+#include <stdio.h>
+long double dbin2decs(long double in)
+{
+ int base=1, rem=0;
+ long double out=0.0;
+ int in1;
+ in1=(int)in;
+ while (in1 != 0)
+ {
+ rem = in1 % 10;
+ out = out + (rem * base);
+ in1 = in1 / 10 ;
+ base = base * 2;
+ }
+ return out;
+ // printf("Decimal equivalent is: %f \n",out);
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2deca.c
new file mode 100644
index 00000000..8511df92
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "bin2dec.h"
+
+void i16bin2deca(int16* in,int size,int16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=i16bin2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2decs.c
new file mode 100644
index 00000000..9aa3be9b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i16bin2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "bin2dec.h"
+#include <stdlib.h>
+#include <stdio.h>
+int16 i16bin2decs(int16 in)
+{
+ int base=1, rem=0;
+ int16 out=0;
+ int in1;
+ in1=(int)in;
+ while (in1 != 0)
+ {
+ rem = in1 % 10;
+ out = out + (rem * base);
+ in1 = in1 / 10 ;
+ base = base * 2;
+ }
+ return out;
+ // printf("Decimal equivalent is: %f \n",out);
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2deca.c
new file mode 100644
index 00000000..c923ffb0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "bin2dec.h"
+
+void i8bin2deca(int8* in,int size,int8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=i8bin2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2decs.c
new file mode 100644
index 00000000..abd3b894
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/i8bin2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "bin2dec.h"
+#include <stdlib.h>
+#include <stdio.h>
+int8 i8bin2decs(int8 in)
+{
+ int base=1, rem=0;
+ int8 out=0;
+ int in1;
+ in1=(int)in;
+ while (in1 != 0)
+ {
+ rem = in1 % 10;
+ out = out + (rem * base);
+ in1 = in1 / 10 ;
+ base = base * 2;
+ }
+ return out;
+ // printf("Decimal equivalent is: %f \n",out);
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2deca.c
new file mode 100644
index 00000000..b6b75d71
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "bin2dec.h"
+
+void u16bin2deca(uint16* in,int size,uint16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=u16bin2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2decs.c
new file mode 100644
index 00000000..cb45a201
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u16bin2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "bin2dec.h"
+#include <stdlib.h>
+#include <stdio.h>
+uint16 u16bin2decs(uint16 in)
+{
+ int base=1, rem=0;
+ uint16 out=0;
+ int in1;
+ in1=(int)in;
+ while (in1 != 0)
+ {
+ rem = in1 % 10;
+ out = out + (rem * base);
+ in1 = in1 / 10 ;
+ base = base * 2;
+ }
+ return out;
+ // printf("Decimal equivalent is: %f \n",out);
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2deca.c
new file mode 100644
index 00000000..10461cad
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "bin2dec.h"
+
+void u8bin2deca(uint8* in,int size,uint8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=u8bin2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2decs.c
new file mode 100644
index 00000000..0a0f5c40
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/bin2dec/u8bin2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "bin2dec.h"
+#include <stdlib.h>
+#include <stdio.h>
+uint8 u8bin2decs(uint8 in)
+{
+ int base=1, rem=0;
+ uint8 out=0;
+ int in1;
+ in1=(int)in;
+ while (in1 != 0)
+ {
+ rem = in1 % 10;
+ out = out + (rem * base);
+ in1 = in1 / 10 ;
+ base = base * 2;
+ }
+ return out;
+ // printf("Decimal equivalent is: %f \n",out);
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2basea.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2basea.c
new file mode 100644
index 00000000..4de34f00
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2basea.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2base.h"
+
+void ddec2basea(double* in,int size,int base,int n,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ ddec2bases(in[i],base,n,&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2bases.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2bases.c
new file mode 100644
index 00000000..dae7bdcc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/ddec2bases.c
@@ -0,0 +1,71 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2base.h"
+#include <stdio.h>
+
+void ddec2bases(double in,int base,int n,char* out)
+{
+ int quot;
+ //printf("%d\n",n);
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ //printf("%d",quot);
+ while(quot!=0)
+ {
+ temp=quot%base;
+ //printf("%d\n",temp);
+ if(temp < 10)
+ { temp = temp + 48;
+ //printf("%d\n",temp);
+ }
+ else
+ {
+ temp = temp + 55;
+ //printf("%d\n",temp);
+ }
+ out[i++]=temp;
+ //printf("%c\n",out[i-1]);
+ quot = quot/base;
+ }
+//printf("%d\n",i);
+ if(n>i-1)
+ {
+ for(j=i;j<=n;j++)
+ { out[j]='0';
+ //printf(" %c %c \n",out[j],out[i]);
+ }
+ }
+ if(n==0)
+ {
+ j=i-1;
+ n=i;
+ }
+ else
+ j=n-1;
+
+ out[n]='\0';
+ //for(k=0;k<=n;k++)
+ //printf("%c\n",out[k]);
+ i=0;
+ while(i<j)
+ {
+ tmp=out[i];
+ //printf("%c\n",out[i]);
+ out[i]=out[j];
+ out[j]=tmp;
+ //printf("%c\n",out[j]);
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2basea.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2basea.c
new file mode 100644
index 00000000..dc4d8590
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2basea.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2base.h"
+
+void sdec2basea(float* in,int size,int base,int n,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ sdec2bases(in[i],base,n,&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2bases.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2bases.c
new file mode 100644
index 00000000..a627c052
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2base/sdec2bases.c
@@ -0,0 +1,45 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2base.h"
+#include <stdio.h>
+
+void sdec2bases(float in,int base,int n,char* out)
+{
+ int quot;
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ while(quot!=0)
+ {
+ temp=quot%base;
+ if(temp < 10)
+ temp = temp + 48;
+ else
+ temp = temp + 55;
+ out[i++]=temp;
+ quot = quot/base;
+ }
+ out[i]='\0';
+ j=i-1;
+ i=0;
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bina.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bina.c
new file mode 100644
index 00000000..c69b7823
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bina.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2bin.h"
+
+void ddec2bina(double* in,int size,int n,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ ddec2bins(in[i],n,&(out[i*15]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bins.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bins.c
new file mode 100644
index 00000000..f5db16c8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/ddec2bins.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "dec2bin.h"
+#include <stdio.h>
+void ddec2bins(double in,int n,double* out)
+{
+ int quotient,i=0,j=0,tmp=0;
+ quotient=(int)in;
+ for(i=0;i<n;i++)
+ {
+ out[i]=0.0;
+ }
+ i=0;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%2;
+ quotient=quotient/2;
+ }
+ if(n>i-1)
+ {
+ for(j=i;j<=n;j++)
+ out[j]=0.0;
+ }
+ if(n==0)
+ j=i-1;
+ else
+ j=n-1;
+
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ //printf("%f",tmp);
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bina.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bina.c
new file mode 100644
index 00000000..93d1fdda
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bina.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2bin.h"
+
+void i16dec2bina(int16* in,int size,int n,int16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ i16dec2bins(in[i],n,&(out[i*15]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bins.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bins.c
new file mode 100644
index 00000000..5df0fe8d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i16dec2bins.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "dec2bin.h"
+#include <stdio.h>
+void i16dec2bins(int16 in,int n,int16* out)
+{
+ int quotient,i=0,j=0,tmp=0;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%2;
+ quotient=quotient/2;
+ }
+ if(n>i-1)
+ {
+ for(j=i;j<=n;j++)
+ out[j]=0.0;
+ }
+ if(n==0)
+ j=i-1;
+ else
+ j=n-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bina.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bina.c
new file mode 100644
index 00000000..90062f9c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bina.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2bin.h"
+
+void i8dec2bina(int8* in,int size,int n,int8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ i8dec2bins(in[i],n,&(out[i*15]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bins.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bins.c
new file mode 100644
index 00000000..ea689857
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/i8dec2bins.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "dec2bin.h"
+#include <stdio.h>
+void i8dec2bins(int8 in,int n,int8* out)
+{
+ int quotient,i=0,j=0,tmp=0;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%2;
+ quotient=quotient/2;
+ }
+ if(n>i-1)
+ {
+ for(j=i;j<=n;j++)
+ out[j]=0.0;
+ }
+ if(n==0)
+ j=i-1;
+ else
+ j=n-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bina.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bina.c
new file mode 100644
index 00000000..165485e0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bina.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2bin.h"
+
+void u16dec2bina(uint16* in,int size,int n,uint16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ u16dec2bins(in[i],n,&(out[i*15]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bins.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bins.c
new file mode 100644
index 00000000..ea998897
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u16dec2bins.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "dec2bin.h"
+#include <stdio.h>
+void u16dec2bins(uint16 in,int n,uint16* out)
+{
+ int quotient,i=0,j=0,tmp=0;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%2;
+ quotient=quotient/2;
+ }
+ if(n>i-1)
+ {
+ for(j=i;j<=n;j++)
+ out[j]=0.0;
+ }
+ if(n==0)
+ j=i-1;
+ else
+ j=n-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bina.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bina.c
new file mode 100644
index 00000000..4ebdc634
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bina.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2bin.h"
+
+void u8dec2bina(uint8* in,int size,int n,uint8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ u8dec2bins(in[i],n,&(out[i*15]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bins.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bins.c
new file mode 100644
index 00000000..af56d92f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2bin/u8dec2bins.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "dec2bin.h"
+#include <stdio.h>
+void u8dec2bins(uint8 in,int n,uint8* out)
+{
+ int quotient,i=0,j=0,tmp=0;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%2;
+ quotient=quotient/2;
+ }
+ if(n>i-1)
+ {
+ for(j=i;j<=n;j++)
+ out[j]=0.0;
+ }
+ if(n==0)
+ j=i-1;
+ else
+ j=n-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexa.c
new file mode 100644
index 00000000..f2fda27a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2hex.h"
+
+void ddec2hexa(double* in,int size,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ ddec2hexs(in[i],&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexs.c
new file mode 100644
index 00000000..bcbb2667
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/ddec2hexs.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2hex.h"
+#include <stdio.h>
+
+void ddec2hexs(double in,char* out)
+{
+ int quot;
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ while(quot!=0)
+ {
+ temp=quot%16;
+ //To convert integer into character
+ if(temp < 10)
+ temp = temp + 48;
+ else
+ temp = temp + 55;
+
+ out[i++]=temp;
+ quot = quot/16;
+ //printf("%c ",out[i-1]);
+ }
+ out[i]='\0';
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+ //out[i+1]=' ';
+
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexa.c
new file mode 100644
index 00000000..e00eec42
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2hex.h"
+
+void i16dec2hexa(int16* in,int size,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ i16dec2hexs(in[i],&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexs.c
new file mode 100644
index 00000000..f4a15ee2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i16dec2hexs.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2hex.h"
+#include <stdio.h>
+
+void i16dec2hexs(int16 in,char* out)
+{
+ int quot;
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ while(quot!=0)
+ {
+ temp=quot%16;
+ //To convert integer into character
+ if(temp < 10)
+ temp = temp + 48;
+ else
+ temp = temp + 55;
+
+ out[i++]=temp;
+ quot = quot/16;
+ //printf("%c ",out[i-1]);
+ }
+ out[i]='\0';
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+ out[i+1]=' ';
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexa.c
new file mode 100644
index 00000000..be659d47
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2hex.h"
+
+void i8dec2hexa(int8* in,int size,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ i8dec2hexs(in[i],&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexs.c
new file mode 100644
index 00000000..290335f9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/i8dec2hexs.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2hex.h"
+#include <stdio.h>
+
+void i8dec2hexs(int8 in,char* out)
+{
+ int quot;
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ while(quot!=0)
+ {
+ temp=quot%16;
+ //To convert integer into character
+ if(temp < 10)
+ temp = temp + 48;
+ else
+ temp = temp + 55;
+
+ out[i++]=temp;
+ quot = quot/16;
+ //printf("%c ",out[i-1]);
+ }
+ out[i]='\0';
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+ out[i+1]=' ';
+
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexa.c
new file mode 100644
index 00000000..abfe5aa1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2hex.h"
+
+void u16dec2hexa(uint16* in,int size,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ u16dec2hexs(in[i],&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexs.c
new file mode 100644
index 00000000..b7c3c98a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u16dec2hexs.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2hex.h"
+#include <stdio.h>
+
+void u16dec2hexs(uint16 in,char* out)
+{
+ int quot;
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ while(quot!=0)
+ {
+ temp=quot%16;
+ //To convert integer into character
+ if(temp < 10)
+ temp = temp + 48;
+ else
+ temp = temp + 55;
+
+ out[i++]=temp;
+ quot = quot/16;
+ //printf("%c ",out[i-1]);
+ }
+ out[i]='\0';
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+ out[i+1]=' ';
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexa.c
new file mode 100644
index 00000000..8fe0526a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2hex.h"
+
+void u8dec2hexa(uint8* in,int size,char* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ u8dec2hexs(in[i],&(out[i*3]));
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexs.c
new file mode 100644
index 00000000..acf236e6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2hex/u8dec2hexs.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2hex.h"
+#include <stdio.h>
+
+void u8dec2hexs(uint8 in,char* out)
+{
+ int quot;
+ int i=0,j=0,k=0,tmp,temp;
+ quot=(int)in;
+ while(quot!=0)
+ {
+ temp=quot%16;
+ //To convert integer into character
+ if(temp < 10)
+ temp = temp + 48;
+ else
+ temp = temp + 55;
+
+ out[i++]=temp;
+ quot = quot/16;
+ //printf("%c ",out[i-1]);
+ }
+ out[i]='\0';
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+ out[i+1]=' ';
+
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octa.c
new file mode 100644
index 00000000..f6cbcfef
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2oct.h"
+
+void ddec2octa(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ { ddec2octs(in[i],&(out[i*15]));
+}
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octs.c
new file mode 100644
index 00000000..702f1862
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/ddec2octs.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2oct.h"
+#include <stdio.h>
+
+void ddec2octs(double in,double* out)
+{
+ int i=0,j=0,tmp=0;
+ int quotient;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%8;
+ quotient=quotient/8;
+ }
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octa.c
new file mode 100644
index 00000000..fec152c8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octa.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2oct.h"
+
+void i16dec2octa(int16* in,int size,int16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+i16dec2octs(in[i],&(out[i*15]));
+}
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octs.c
new file mode 100644
index 00000000..340958fa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i16dec2octs.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2oct.h"
+#include <stdio.h>
+
+void i16dec2octs(int16 in,int16* out)
+{
+ int i=0,j=0,tmp=0;
+ int quotient;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%8;
+ quotient=quotient/8;
+ }
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octa.c
new file mode 100644
index 00000000..0c96f01b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2oct.h"
+
+void i8dec2octa(int8* in,int size,int8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ { i8dec2octs(in[i],&(out[i*15]));
+}
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octs.c
new file mode 100644
index 00000000..0a35f94f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/i8dec2octs.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2oct.h"
+#include <stdio.h>
+
+void i8dec2octs(int8 in,int8* out)
+{
+ int i=0,j=0,tmp=0;
+ int quotient;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%8;
+ quotient=quotient/8;
+ }
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octa.c
new file mode 100644
index 00000000..7a3e60e4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2oct.h"
+
+void u16dec2octa(uint16* in,int size,uint16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ { u16dec2octs(in[i],&(out[i*15]));
+}
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octs.c
new file mode 100644
index 00000000..99936b4b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u16dec2octs.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2oct.h"
+#include <stdio.h>
+
+void u16dec2octs(uint16 in,uint16* out)
+{
+ int i=0,j=0,tmp=0;
+ int quotient;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%8;
+ quotient=quotient/8;
+ }
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octa.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octa.c
new file mode 100644
index 00000000..1a4e0267
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "dec2oct.h"
+
+void u8dec2octa(uint8* in,int size,uint8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ { u8dec2octs(in[i],&(out[i*15]));
+}
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octs.c
new file mode 100644
index 00000000..fbfc1048
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/dec2oct/u8dec2octs.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include <math.h>
+#include "dec2oct.h"
+#include <stdio.h>
+
+void u8dec2octs(uint8 in,uint8* out)
+{
+ int i=0,j=0,tmp=0;
+ int quotient;
+ quotient=(int)in;
+ while(quotient!=0)
+ {
+ out[i++]= quotient%8;
+ quotient=quotient/8;
+ }
+ j=i-1;
+ i=0;
+
+ while(i<j)
+ {
+ tmp=out[i];
+ out[i]=out[j];
+ out[j]=tmp;
+ i++;
+ j--;
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/dhex2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/dhex2decs.c
new file mode 100644
index 00000000..42975737
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/dhex2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "hex2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+double dhex2decs(double in)
+{
+ int n=0,rem=0, base=1;
+ double out=0.0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base);
+ n = n / 10 ;
+ base = base * 16;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/ghex2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/ghex2decs.c
new file mode 100644
index 00000000..eb42a7a7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/hex2dec/ghex2decs.c
@@ -0,0 +1,87 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "hex2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+double ghex2decs(char* in,int size)
+{
+ size-=2;
+ int i=0,val=0,j=0;
+ double o=0.0;
+ for(i=0; in[i]!='\0'; i++)
+ {
+/* Finds the decimal equivalent of each hexadecimal digit
+*/
+ switch(in[i])
+ {
+ case '0':
+ val = 0;
+ break;
+ case '1':
+ val = 1;
+ break;
+ case '2':
+ val = 2;
+ break;
+ case '3':
+ val = 3;
+ break;
+ case '4':
+ val = 4;
+ break;
+ case '5':
+ val = 5;
+ break;
+ case '6':
+ val = 6;
+ break;
+ case '7':
+ val = 7;
+ break;
+ case '8':
+ val = 8;
+ break;
+ case '9':
+ val = 9;
+ break;
+ case 'a':
+ case 'A':
+ val = 10;
+ break;
+ case 'b':
+ case 'B':
+ val = 11;
+ break;
+ case 'c':
+ case 'C':
+ val = 12;
+ break;
+ case 'd':
+ case 'D':
+ val = 13;
+ break;
+ case 'e':
+ case 'E':
+ val = 14;
+ break;
+ case 'f':
+ case 'F':
+ val = 15;
+ break;
+ }
+ o = o + (val * (int)pow((double)16, size));
+ size--;
+ }
+ return o;
+ }
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2deca.c
new file mode 100644
index 00000000..e3619eb3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "oct2dec.h"
+
+void doct2deca(double* in,int size,double* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=doct2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2decs.c
new file mode 100644
index 00000000..b126c619
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/doct2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "oct2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+double doct2decs(double in)
+{
+ int n=0,rem=0, base=1;
+ double out=0.0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base);
+ n = n / 10 ;
+ base = base * 8;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2deca.c
new file mode 100644
index 00000000..9db3e2e1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "oct2dec.h"
+
+void i16oct2deca(int16* in,int size,int16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=i16oct2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2decs.c
new file mode 100644
index 00000000..928c3a2a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i16oct2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "oct2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+int16 i16oct2decs(int16 in) /* Function to convert octal to decimal */
+{
+ int n=0,rem=0, base=1;
+ int16 out=0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base);
+ n = n / 10 ;
+ base = base * 8;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2deca.c
new file mode 100644
index 00000000..de57a0ea
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "oct2dec.h"
+
+void i8oct2deca(int8* in,int size,int8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=i8oct2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2decs.c
new file mode 100644
index 00000000..b95a0426
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/i8oct2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "oct2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+int8 i8oct2decs(int8 in) /* Function to convert octal to decimal */
+{
+ int n=0,rem=0, base=1;
+ int8 out=0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base);
+ n = n / 10 ;
+ base = base * 8;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2deca.c
new file mode 100644
index 00000000..7778ee96
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "oct2dec.h"
+
+void u16oct2deca(uint16* in,int size,uint16* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=u16oct2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2decs.c
new file mode 100644
index 00000000..4b30443e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u16oct2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "oct2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+uint16 u16oct2decs(uint16 in) /* Function to convert octal to decimal */
+{
+ int n=0,rem=0, base=1;
+ uint16 out=0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base);
+ n = n / 10 ;
+ base = base * 8;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2deca.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2deca.c
new file mode 100644
index 00000000..d1880203
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2deca.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include "oct2dec.h"
+
+void u8oct2deca(uint8* in,int size,uint8* out)
+{
+ int i=0;
+ for(i=0;i<size;i++)
+ {
+ out[i]=u8oct2decs(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2decs.c b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2decs.c
new file mode 100644
index 00000000..f804f7fd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/radix_conversions/oct2dec/u8oct2decs.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <string.h>
+#include "oct2dec.h"
+#include <stdio.h>
+#include <math.h>
+
+uint8 u8oct2decs(uint8 in) /* Function to convert octal to decimal */
+{
+ int n=0,rem=0, base=1;
+ uint8 out=0;
+ n=(int)in;
+ while (n!=0)
+ {
+ rem = n%10;
+ out = out + (rem * base);
+ n = n / 10 ;
+ base = base * 8;
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/elementaryFunctions/round/Makefile.am b/2.3-1/src/c/elementaryFunctions/round/Makefile.am
new file mode 100644
index 00000000..12ee342a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/Makefile.am
@@ -0,0 +1,59 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libRound_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libRound.la
+
+libRound_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/round.h
+
+SRC = srounds.c \
+ drounds.c \
+ crounds.c \
+ zrounds.c \
+ srounda.c \
+ drounda.c \
+ crounda.c \
+ zrounda.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/round/libRound.la
+
+check_PROGRAMS = testFloatRound testDoubleRound
+
+TESTS = testFloatRound testDoubleRound
+
+#
+# -*- Round Tests -*-
+#
+testFloatRound_SOURCES = testFloatRound.c
+testFloatRound_CFLAGS = $(check_INCLUDES)
+testFloatRound_LDADD = $(check_LDADD)
+
+testDoubleRound_SOURCES = testDoubleRound.c
+testDoubleRound_CFLAGS = $(check_INCLUDES)
+testDoubleRound_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/round/Makefile.in b/2.3-1/src/c/elementaryFunctions/round/Makefile.in
new file mode 100644
index 00000000..f81b1ff8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/Makefile.in
@@ -0,0 +1,786 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatRound$(EXEEXT) testDoubleRound$(EXEEXT)
+TESTS = testFloatRound$(EXEEXT) testDoubleRound$(EXEEXT)
+subdir = src/c/elementaryFunctions/round
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libRound_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libRound_la-srounds.lo libRound_la-drounds.lo \
+ libRound_la-crounds.lo libRound_la-zrounds.lo \
+ libRound_la-srounda.lo libRound_la-drounda.lo \
+ libRound_la-crounda.lo libRound_la-zrounda.lo
+am_libRound_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libRound_la_OBJECTS = $(am_libRound_la_OBJECTS)
+libRound_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libRound_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleRound_OBJECTS = \
+ testDoubleRound-testDoubleRound.$(OBJEXT)
+testDoubleRound_OBJECTS = $(am_testDoubleRound_OBJECTS)
+testDoubleRound_DEPENDENCIES = $(check_LDADD)
+testDoubleRound_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleRound_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatRound_OBJECTS = testFloatRound-testFloatRound.$(OBJEXT)
+testFloatRound_OBJECTS = $(am_testFloatRound_OBJECTS)
+testFloatRound_DEPENDENCIES = $(check_LDADD)
+testFloatRound_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatRound_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libRound_la_SOURCES) $(testDoubleRound_SOURCES) \
+ $(testFloatRound_SOURCES)
+DIST_SOURCES = $(libRound_la_SOURCES) $(testDoubleRound_SOURCES) \
+ $(testFloatRound_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libRound_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libRound.la
+libRound_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/round.h
+SRC = srounds.c \
+ drounds.c \
+ crounds.c \
+ zrounds.c \
+ srounda.c \
+ drounda.c \
+ crounda.c \
+ zrounda.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/round/libRound.la
+
+
+#
+# -*- Round Tests -*-
+#
+testFloatRound_SOURCES = testFloatRound.c
+testFloatRound_CFLAGS = $(check_INCLUDES)
+testFloatRound_LDADD = $(check_LDADD)
+testDoubleRound_SOURCES = testDoubleRound.c
+testDoubleRound_CFLAGS = $(check_INCLUDES)
+testDoubleRound_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/round/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/round/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libRound.la: $(libRound_la_OBJECTS) $(libRound_la_DEPENDENCIES)
+ $(libRound_la_LINK) -rpath $(pkglibdir) $(libRound_la_OBJECTS) $(libRound_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleRound$(EXEEXT): $(testDoubleRound_OBJECTS) $(testDoubleRound_DEPENDENCIES)
+ @rm -f testDoubleRound$(EXEEXT)
+ $(testDoubleRound_LINK) $(testDoubleRound_OBJECTS) $(testDoubleRound_LDADD) $(LIBS)
+testFloatRound$(EXEEXT): $(testFloatRound_OBJECTS) $(testFloatRound_DEPENDENCIES)
+ @rm -f testFloatRound$(EXEEXT)
+ $(testFloatRound_LINK) $(testFloatRound_OBJECTS) $(testFloatRound_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-crounda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-crounds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-drounda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-drounds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-srounda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-srounds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-zrounda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libRound_la-zrounds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleRound-testDoubleRound.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatRound-testFloatRound.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libRound_la-srounds.lo: srounds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-srounds.lo -MD -MP -MF $(DEPDIR)/libRound_la-srounds.Tpo -c -o libRound_la-srounds.lo `test -f 'srounds.c' || echo '$(srcdir)/'`srounds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-srounds.Tpo $(DEPDIR)/libRound_la-srounds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srounds.c' object='libRound_la-srounds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-srounds.lo `test -f 'srounds.c' || echo '$(srcdir)/'`srounds.c
+
+libRound_la-drounds.lo: drounds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-drounds.lo -MD -MP -MF $(DEPDIR)/libRound_la-drounds.Tpo -c -o libRound_la-drounds.lo `test -f 'drounds.c' || echo '$(srcdir)/'`drounds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-drounds.Tpo $(DEPDIR)/libRound_la-drounds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drounds.c' object='libRound_la-drounds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-drounds.lo `test -f 'drounds.c' || echo '$(srcdir)/'`drounds.c
+
+libRound_la-crounds.lo: crounds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-crounds.lo -MD -MP -MF $(DEPDIR)/libRound_la-crounds.Tpo -c -o libRound_la-crounds.lo `test -f 'crounds.c' || echo '$(srcdir)/'`crounds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-crounds.Tpo $(DEPDIR)/libRound_la-crounds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crounds.c' object='libRound_la-crounds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-crounds.lo `test -f 'crounds.c' || echo '$(srcdir)/'`crounds.c
+
+libRound_la-zrounds.lo: zrounds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-zrounds.lo -MD -MP -MF $(DEPDIR)/libRound_la-zrounds.Tpo -c -o libRound_la-zrounds.lo `test -f 'zrounds.c' || echo '$(srcdir)/'`zrounds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-zrounds.Tpo $(DEPDIR)/libRound_la-zrounds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrounds.c' object='libRound_la-zrounds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-zrounds.lo `test -f 'zrounds.c' || echo '$(srcdir)/'`zrounds.c
+
+libRound_la-srounda.lo: srounda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-srounda.lo -MD -MP -MF $(DEPDIR)/libRound_la-srounda.Tpo -c -o libRound_la-srounda.lo `test -f 'srounda.c' || echo '$(srcdir)/'`srounda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-srounda.Tpo $(DEPDIR)/libRound_la-srounda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srounda.c' object='libRound_la-srounda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-srounda.lo `test -f 'srounda.c' || echo '$(srcdir)/'`srounda.c
+
+libRound_la-drounda.lo: drounda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-drounda.lo -MD -MP -MF $(DEPDIR)/libRound_la-drounda.Tpo -c -o libRound_la-drounda.lo `test -f 'drounda.c' || echo '$(srcdir)/'`drounda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-drounda.Tpo $(DEPDIR)/libRound_la-drounda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drounda.c' object='libRound_la-drounda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-drounda.lo `test -f 'drounda.c' || echo '$(srcdir)/'`drounda.c
+
+libRound_la-crounda.lo: crounda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-crounda.lo -MD -MP -MF $(DEPDIR)/libRound_la-crounda.Tpo -c -o libRound_la-crounda.lo `test -f 'crounda.c' || echo '$(srcdir)/'`crounda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-crounda.Tpo $(DEPDIR)/libRound_la-crounda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crounda.c' object='libRound_la-crounda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-crounda.lo `test -f 'crounda.c' || echo '$(srcdir)/'`crounda.c
+
+libRound_la-zrounda.lo: zrounda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -MT libRound_la-zrounda.lo -MD -MP -MF $(DEPDIR)/libRound_la-zrounda.Tpo -c -o libRound_la-zrounda.lo `test -f 'zrounda.c' || echo '$(srcdir)/'`zrounda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libRound_la-zrounda.Tpo $(DEPDIR)/libRound_la-zrounda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrounda.c' object='libRound_la-zrounda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libRound_la_CFLAGS) $(CFLAGS) -c -o libRound_la-zrounda.lo `test -f 'zrounda.c' || echo '$(srcdir)/'`zrounda.c
+
+testDoubleRound-testDoubleRound.o: testDoubleRound.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleRound_CFLAGS) $(CFLAGS) -MT testDoubleRound-testDoubleRound.o -MD -MP -MF $(DEPDIR)/testDoubleRound-testDoubleRound.Tpo -c -o testDoubleRound-testDoubleRound.o `test -f 'testDoubleRound.c' || echo '$(srcdir)/'`testDoubleRound.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleRound-testDoubleRound.Tpo $(DEPDIR)/testDoubleRound-testDoubleRound.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleRound.c' object='testDoubleRound-testDoubleRound.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleRound_CFLAGS) $(CFLAGS) -c -o testDoubleRound-testDoubleRound.o `test -f 'testDoubleRound.c' || echo '$(srcdir)/'`testDoubleRound.c
+
+testDoubleRound-testDoubleRound.obj: testDoubleRound.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleRound_CFLAGS) $(CFLAGS) -MT testDoubleRound-testDoubleRound.obj -MD -MP -MF $(DEPDIR)/testDoubleRound-testDoubleRound.Tpo -c -o testDoubleRound-testDoubleRound.obj `if test -f 'testDoubleRound.c'; then $(CYGPATH_W) 'testDoubleRound.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleRound.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleRound-testDoubleRound.Tpo $(DEPDIR)/testDoubleRound-testDoubleRound.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleRound.c' object='testDoubleRound-testDoubleRound.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleRound_CFLAGS) $(CFLAGS) -c -o testDoubleRound-testDoubleRound.obj `if test -f 'testDoubleRound.c'; then $(CYGPATH_W) 'testDoubleRound.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleRound.c'; fi`
+
+testFloatRound-testFloatRound.o: testFloatRound.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatRound_CFLAGS) $(CFLAGS) -MT testFloatRound-testFloatRound.o -MD -MP -MF $(DEPDIR)/testFloatRound-testFloatRound.Tpo -c -o testFloatRound-testFloatRound.o `test -f 'testFloatRound.c' || echo '$(srcdir)/'`testFloatRound.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatRound-testFloatRound.Tpo $(DEPDIR)/testFloatRound-testFloatRound.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatRound.c' object='testFloatRound-testFloatRound.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatRound_CFLAGS) $(CFLAGS) -c -o testFloatRound-testFloatRound.o `test -f 'testFloatRound.c' || echo '$(srcdir)/'`testFloatRound.c
+
+testFloatRound-testFloatRound.obj: testFloatRound.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatRound_CFLAGS) $(CFLAGS) -MT testFloatRound-testFloatRound.obj -MD -MP -MF $(DEPDIR)/testFloatRound-testFloatRound.Tpo -c -o testFloatRound-testFloatRound.obj `if test -f 'testFloatRound.c'; then $(CYGPATH_W) 'testFloatRound.c'; else $(CYGPATH_W) '$(srcdir)/testFloatRound.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatRound-testFloatRound.Tpo $(DEPDIR)/testFloatRound-testFloatRound.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatRound.c' object='testFloatRound-testFloatRound.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatRound_CFLAGS) $(CFLAGS) -c -o testFloatRound-testFloatRound.obj `if test -f 'testFloatRound.c'; then $(CYGPATH_W) 'testFloatRound.c'; else $(CYGPATH_W) '$(srcdir)/testFloatRound.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/round/crounda.c b/2.3-1/src/c/elementaryFunctions/round/crounda.c
new file mode 100644
index 00000000..3dbc18c8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/crounda.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+void crounda(floatComplex* x, int size, floatComplex* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=crounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/crounds.c b/2.3-1/src/c/elementaryFunctions/round/crounds.c
new file mode 100644
index 00000000..598fd16b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/crounds.c
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+floatComplex crounds(floatComplex x) {
+ int roundReal;
+ int roundImag;
+
+ if (creals(x)>=0) roundReal = (int)(creals(x)+0.5);
+ else roundReal = (int)(creals(x)-0.5);
+
+
+
+ if (cimags(x)>=0) roundImag = (int)(cimags(x)+0.5);
+ else roundImag = (int)(cimags(x)-0.5);
+
+ return FloatComplex((float)roundReal, (float)roundImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/drounda.c b/2.3-1/src/c/elementaryFunctions/round/drounda.c
new file mode 100644
index 00000000..e3440969
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/drounda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+void drounda(double* x, int size, double* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=drounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/drounds.c b/2.3-1/src/c/elementaryFunctions/round/drounds.c
new file mode 100644
index 00000000..5cc46429
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/drounds.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+double drounds(double x) {
+ int result;
+ if(x>=0) result = (int)(x+0.5);
+ else result = (int)(x-0.5);
+
+ return (double)result;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/i16rounda.c b/2.3-1/src/c/elementaryFunctions/round/i16rounda.c
new file mode 100644
index 00000000..26ed262a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/i16rounda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+void i16rounda(int16* x, int size, int16* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=i16rounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/i16rounds.c b/2.3-1/src/c/elementaryFunctions/round/i16rounds.c
new file mode 100644
index 00000000..68bd7a4c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/i16rounds.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+int16 i16rounds(int16 x) {
+ int result;
+
+ if(x>=0) result = (int16)((float)x+0.5);
+ else result = (int16)((float)x-0.5);
+
+ return (int16)result;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/i8rounda.c b/2.3-1/src/c/elementaryFunctions/round/i8rounda.c
new file mode 100644
index 00000000..bb0b0c90
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/i8rounda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+void i8rounda(int8* x, int size, int8* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=i8rounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/i8rounds.c b/2.3-1/src/c/elementaryFunctions/round/i8rounds.c
new file mode 100644
index 00000000..bb737241
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/i8rounds.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+int8 i8rounds(int8 x) {
+ int result;
+
+ if(x>=0) result = (int8)((float)x+0.5);
+ else result = (int8)((float)x-0.5);
+
+ return (int8)result;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/srounda.c b/2.3-1/src/c/elementaryFunctions/round/srounda.c
new file mode 100644
index 00000000..785c7c9d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/srounda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+void srounda(float* x, int size, float* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=srounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/srounds.c b/2.3-1/src/c/elementaryFunctions/round/srounds.c
new file mode 100644
index 00000000..17ae537d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/srounds.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+float srounds(float x) {
+ int result;
+
+ if(x>=0) result = (int)(x+0.5);
+ else result = (int)(x-0.5);
+
+ return (float)result;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/testDoubleRound.c b/2.3-1/src/c/elementaryFunctions/round/testDoubleRound.c
new file mode 100644
index 00000000..5844a39b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/testDoubleRound.c
@@ -0,0 +1,152 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "round.h"
+
+static void droundsTest(void) {
+ assert ((fabs( drounds(-2) - (-2))/fabs(drounds(-2)))<1e-16);
+ assert ((fabs( drounds(-1.9) - (-2))/fabs(drounds(-1.9)))<1e-16);
+ assert ((fabs( drounds(-1.8) - (-2))/fabs(drounds(-1.8)))<1e-16);
+ assert ((fabs( drounds(-1.7) - (-2))/fabs(drounds(-1.7)))<1e-16);
+ assert ((fabs( drounds(-1.6) - (-2))/fabs(drounds(-1.6)))<1e-16);
+ assert ((fabs( drounds(-1.5) - (-2))/fabs(drounds(-1.5)))<1e-16);
+ assert ((fabs( drounds(-1.4) - (-1))/fabs(drounds(-1.4)))<1e-16);
+ assert ((fabs( drounds(-1.3) - (-1))/fabs(drounds(-1.3)))<1e-16);
+ assert ((fabs( drounds(-1.2) - (-1))/fabs(drounds(-1.2)))<1e-16);
+ assert ((fabs( drounds(-1.1) - (-1))/fabs(drounds(-1.1)))<1e-16);
+ assert ((fabs( drounds(-1.0) - (-1))/fabs(drounds(-1.0)))<1e-16);
+ assert ((fabs( drounds(-0.9) - (-1))/fabs(drounds(-0.9)))<1e-16);
+ assert ((fabs( drounds(1.0) - (1))/fabs(drounds(1.0)))<1e-16);
+ assert ((fabs( drounds(1.1) - (1))/fabs(drounds(1.1)))<1e-16);
+ assert ((fabs( drounds(1.2) - (1))/fabs(drounds(1.2)))<1e-16);
+ assert ((fabs( drounds(1.3) - (1))/fabs(drounds(1.3)))<1e-16);
+ assert ((fabs( drounds(1.4) - (1))/fabs(drounds(1.4)))<1e-16);
+ assert ((fabs( drounds(1.5) - (2))/fabs(drounds(1.5)))<1e-16);
+ assert ((fabs( drounds(1.6) - (2))/fabs(drounds(1.6)))<1e-16);
+ assert ((fabs( drounds(1.7) - (2))/fabs(drounds(1.7)))<1e-16);
+ assert ((fabs( drounds(1.8) - (2))/fabs(drounds(1.8)))<1e-16);
+ assert ((fabs( drounds(1.9) - (2))/fabs(drounds(1.9)))<1e-16);
+ assert ((fabs( drounds(2.0) - (2))/fabs(drounds(2.0)))<1e-16);
+
+}
+
+static void zroundsTest(void) {
+ doubleComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=DoubleComplex(-2,1);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.9,1.1);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.8,1.2);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.7,1.3);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.6,1.4);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.5,1.5);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-2))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.4,1.6);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.3,1.7);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.2,1.8);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.1,1.9);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-1.0,2.0);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (2))/fabs(zimags(out)))<1e-16);
+ in=DoubleComplex(-.9,.9);
+ out = zrounds(in);
+ assert ((fabs( zreals(out) - (-1))/fabs(zreals(out)))<1e-16);
+ assert ((fabs( zimags(out) - (1))/fabs(zimags(out)))<1e-16);
+
+}
+
+static void droundaTest(void) {
+ int i;
+ double in[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double res[10]={1,2,-2,-3,-5,6,4,5,-1,1};
+ double out[10];
+
+ drounda(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+
+}
+
+static void zroundaTest(void) {
+ int i;
+ double inR[10]={1.2, 2.0,-2.0,-3.1,-4.5,6.1,4.1,4.9,-0.7, 0.5};
+ double inI[10]={5.4,1.8,1.4,-4.0,-2.7,-0.3,1.5,1.4,7.3,-4.6};
+ double resR[10]={1,2,-2,-3,-5,6,4,5,-1,1};
+ double resI[10]={5,2,1,-4,-3,0,2,1,7,-5};
+ doubleComplex out[10],*in;
+
+ in=DoubleComplexMatrix(inR,inI,10);
+ zrounda(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (zreals(out[i])!=0) assert(fabs(zreals(out[i])-resR[i])/fabs(zreals(out[i])) <1e-16);
+ else assert(fabs(zreals(out[i])-resR[i]) <1e-16);
+ if (zimags(out[i])!=0) assert(fabs(zimags(out[i])-resI[i])/fabs(zimags(out[i])) <1e-16);
+ else assert(fabs(zimags(out[i])-resI[i]) <1e-16);
+ }
+
+}
+
+
+static int testRound() {
+ printf("\n>>>> Double Round Tests\n");
+ droundsTest();
+ zroundsTest();
+ droundaTest();
+ zroundaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testRound() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/testFloatRound.c b/2.3-1/src/c/elementaryFunctions/round/testFloatRound.c
new file mode 100644
index 00000000..faac7665
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/testFloatRound.c
@@ -0,0 +1,148 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "round.h"
+
+static void sroundsTest(void) {
+
+ assert ((fabs( srounds(-2) - (-2))/fabs(srounds(-2)))<1e-16);
+ assert ((fabs( srounds(-1.9f) - (-2))/fabs(srounds(-1.9f)))<1e-16);
+ assert ((fabs( srounds(-1.8f) - (-2))/fabs(srounds(-1.8f)))<1e-16);
+ assert ((fabs( srounds(-1.7f) - (-2))/fabs(srounds(-1.7f)))<1e-16);
+ assert ((fabs( srounds(-1.6f) - (-2))/fabs(srounds(-1.6f)))<1e-16);
+ assert ((fabs( srounds(-1.5f) - (-2))/fabs(srounds(-1.5f)))<1e-16);
+ assert ((fabs( srounds(-1.4f) - (-1))/fabs(srounds(-1.4f)))<1e-16);
+ assert ((fabs( srounds(-1.3f) - (-1))/fabs(srounds(-1.3f)))<1e-16);
+ assert ((fabs( srounds(-1.2f) - (-1))/fabs(srounds(-1.2f)))<1e-16);
+ assert ((fabs( srounds(-1.1f) - (-1))/fabs(srounds(-1.1f)))<1e-16);
+ assert ((fabs( srounds(-1.0f) - (-1))/fabs(srounds(-1.0f)))<1e-16);
+ assert ((fabs( srounds(-0.9f) - (-1))/fabs(srounds(-0.9f)))<1e-16);
+ assert ((fabs( srounds(1.0f) - (1))/fabs(srounds(1.0f)))<1e-16);
+ assert ((fabs( srounds(1.1f) - (1))/fabs(srounds(1.1f)))<1e-16);
+ assert ((fabs( srounds(1.2f) - (1))/fabs(srounds(1.2f)))<1e-16);
+ assert ((fabs( srounds(1.3f) - (1))/fabs(srounds(1.3f)))<1e-16);
+ assert ((fabs( srounds(1.4f) - (1))/fabs(srounds(1.4f)))<1e-16);
+ assert ((fabs( srounds(1.5f) - (2))/fabs(srounds(1.5f)))<1e-16);
+ assert ((fabs( srounds(1.6f) - (2))/fabs(srounds(1.6f)))<1e-16);
+ assert ((fabs( srounds(1.7f) - (2))/fabs(srounds(1.7f)))<1e-16);
+ assert ((fabs( srounds(1.8f) - (2))/fabs(srounds(1.8f)))<1e-16);
+ assert ((fabs( srounds(1.9f) - (2))/fabs(srounds(1.9f)))<1e-16);
+ assert ((fabs( srounds(2.0f) - (2))/fabs(srounds(2.0f)))<1e-16);
+}
+
+static void croundsTest(void) {
+ floatComplex in, out;
+
+
+ /* tests allant de -2 + i a -1 + 2*i, les reels décroissants de 0.1, les imaginaires croissant de 0.1
+ + 1 test supplementaire : -0.9 + 0.9*i*/
+
+ in=FloatComplex(-2,1);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.9f,1.1f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.8f,1.2f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.7f,1.3f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.6f,1.4f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.5f,1.5f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-2))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.4f,1.6f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.3f,1.7f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.2f,1.8f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.1f,1.9f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-1.0f,2.0f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (2))/fabs(cimags(out)))<1e-16);
+ in=FloatComplex(-.9f,.9f);
+ out = crounds(in);
+ assert ((fabs( creals(out) - (-1))/fabs(creals(out)))<1e-16);
+ assert ((fabs( cimags(out) - (1))/fabs(cimags(out)))<1e-16);
+}
+
+static void sroundaTest(void) {
+ int i;
+ float in[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float res[10]={1,2,-2,-3,-5,6,4,5,-1,1};
+ float out[10];
+
+ srounda(in,10,out);
+
+ for (i=0;i<10;i++)
+ if (out[i]!=0) assert(fabs(out[i]-res[i])/fabs(out[i]) <1e-16);
+ else assert(fabs(out[i]-res[i]) <1e-16);
+}
+
+static void croundaTest(void) {
+ int i;
+ float inR[10]={1.2f, 2.0f,-2.0f,-3.1f,-4.5f,6.1f,4.1f,4.9f,-0.7f, 0.5f};
+ float inI[10]={5.4f,1.8f,1.4f,-4.0f,-2.7f,-0.3f,1.5f,1.4f,7.3f,-4.6f};
+ float resR[10]={1,2,-2,-3,-5,6,4,5,-1,1};
+ float resI[10]={5,2,1,-4,-3,0,2,1,7,-5};
+ floatComplex out[10],*in;
+
+ in=FloatComplexMatrix(inR,inI,10);
+ crounda(in,10,out);
+
+ for (i=0;i<10;i++){
+ if (creals(out[i])!=0) assert(fabs(creals(out[i])-resR[i])/fabs(creals(out[i])) <1e-16);
+ else assert(fabs(creals(out[i])-resR[i]) <1e-16);
+ if (cimags(out[i])!=0) assert(fabs(cimags(out[i])-resI[i])/fabs(cimags(out[i])) <1e-16);
+ else assert(fabs(cimags(out[i])-resI[i]) <1e-16);
+ }
+}
+
+static int testRound() {
+ printf("\n>>>> Float Round Tests\n");
+ sroundsTest();
+ croundsTest();
+ sroundaTest();
+ croundaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testRound() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/u16rounda.c b/2.3-1/src/c/elementaryFunctions/round/u16rounda.c
new file mode 100644
index 00000000..1b0b1edc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/u16rounda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+void u16rounda(uint16* x, int size, uint16* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=u16rounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/u16rounds.c b/2.3-1/src/c/elementaryFunctions/round/u16rounds.c
new file mode 100644
index 00000000..f8a4ad49
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/u16rounds.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+uint16 u16rounds(uint16 x) {
+ int result;
+
+ if(x>=0) result = (uint16)((float)x+0.5);
+ else result = (uint16)((float)x-0.5);
+
+ return (uint16)result;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/u8rounda.c b/2.3-1/src/c/elementaryFunctions/round/u8rounda.c
new file mode 100644
index 00000000..b58a6d20
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/u8rounda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+void u8rounda(uint8* x, int size, uint8* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=u8rounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/u8rounds.c b/2.3-1/src/c/elementaryFunctions/round/u8rounds.c
new file mode 100644
index 00000000..e27cc2ca
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/u8rounds.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "round.h"
+
+uint8 u8rounds(uint8 x) {
+ int result;
+
+ if(x>=0) result = (uint8)((float)x+0.5);
+ else result = (uint8)((float)x-0.5);
+
+ return (uint8)result;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/zrounda.c b/2.3-1/src/c/elementaryFunctions/round/zrounda.c
new file mode 100644
index 00000000..1356e459
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/zrounda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "fix.h"
+#include "round.h"
+
+void zrounda(doubleComplex* x, int size, doubleComplex* out) {
+ int i=0;
+
+ for (i=0;i<size;i++) out[i]=zrounds(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/round/zrounds.c b/2.3-1/src/c/elementaryFunctions/round/zrounds.c
new file mode 100644
index 00000000..3f723adf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/round/zrounds.c
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "round.h"
+
+doubleComplex zrounds(doubleComplex x) {
+ int roundReal;
+ int roundImag;
+
+ if (zreals(x)>=0) roundReal = (int)(zreals(x)+0.5);
+ else roundReal = (int)(zreals(x)-0.5);
+
+
+
+ if (zimags(x)>=0) roundImag = (int)(zimags(x)+0.5);
+ else roundImag = (int)(zimags(x)-0.5);
+
+ return DoubleComplex((double)roundReal, (double)roundImag);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/Makefile.am b/2.3-1/src/c/elementaryFunctions/sin/Makefile.am
new file mode 100644
index 00000000..4f58c56e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/Makefile.am
@@ -0,0 +1,68 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSin_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSin.la
+
+libSin_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = ssins.c \
+ dsins.c \
+ csins.c \
+ zsins.c \
+ ssina.c \
+ dsina.c \
+ csina.c \
+ zsina.c
+
+HEAD = ../includes/sin.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatSin testDoubleSin
+
+TESTS = testFloatSin testDoubleSin
+
+#
+# -*- Sine Tests -*-
+#
+testFloatSin_SOURCES = testSin.h testFloatSin.c
+testFloatSin_CFLAGS = $(check_INCLUDES)
+testFloatSin_LDADD = $(check_LDADD)
+
+testDoubleSin_SOURCES = testSin.h testDoubleSin.c
+testDoubleSin_CFLAGS = $(check_INCLUDES)
+testDoubleSin_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/sin/Makefile.in b/2.3-1/src/c/elementaryFunctions/sin/Makefile.in
new file mode 100644
index 00000000..4b7729a3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/Makefile.in
@@ -0,0 +1,808 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatSin$(EXEEXT) testDoubleSin$(EXEEXT)
+TESTS = testFloatSin$(EXEEXT) testDoubleSin$(EXEEXT)
+subdir = src/c/elementaryFunctions/sin
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSin_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libSin_la-ssins.lo libSin_la-dsins.lo \
+ libSin_la-csins.lo libSin_la-zsins.lo libSin_la-ssina.lo \
+ libSin_la-dsina.lo libSin_la-csina.lo libSin_la-zsina.lo
+am_libSin_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libSin_la_OBJECTS = $(am_libSin_la_OBJECTS)
+libSin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSin_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleSin_OBJECTS = testDoubleSin-testDoubleSin.$(OBJEXT)
+testDoubleSin_OBJECTS = $(am_testDoubleSin_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleSin_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleSin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleSin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatSin_OBJECTS = testFloatSin-testFloatSin.$(OBJEXT)
+testFloatSin_OBJECTS = $(am_testFloatSin_OBJECTS)
+testFloatSin_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatSin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatSin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSin_la_SOURCES) $(testDoubleSin_SOURCES) \
+ $(testFloatSin_SOURCES)
+DIST_SOURCES = $(libSin_la_SOURCES) $(testDoubleSin_SOURCES) \
+ $(testFloatSin_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSin_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSin.la
+libSin_la_SOURCES = $(HEAD) $(SRC)
+SRC = ssins.c \
+ dsins.c \
+ csins.c \
+ zsins.c \
+ ssina.c \
+ dsina.c \
+ csina.c \
+ zsina.c
+
+HEAD = ../includes/sin.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Sine Tests -*-
+#
+testFloatSin_SOURCES = testSin.h testFloatSin.c
+testFloatSin_CFLAGS = $(check_INCLUDES)
+testFloatSin_LDADD = $(check_LDADD)
+testDoubleSin_SOURCES = testSin.h testDoubleSin.c
+testDoubleSin_CFLAGS = $(check_INCLUDES)
+testDoubleSin_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/sin/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/sin/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSin.la: $(libSin_la_OBJECTS) $(libSin_la_DEPENDENCIES)
+ $(libSin_la_LINK) -rpath $(pkglibdir) $(libSin_la_OBJECTS) $(libSin_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleSin$(EXEEXT): $(testDoubleSin_OBJECTS) $(testDoubleSin_DEPENDENCIES)
+ @rm -f testDoubleSin$(EXEEXT)
+ $(testDoubleSin_LINK) $(testDoubleSin_OBJECTS) $(testDoubleSin_LDADD) $(LIBS)
+testFloatSin$(EXEEXT): $(testFloatSin_OBJECTS) $(testFloatSin_DEPENDENCIES)
+ @rm -f testFloatSin$(EXEEXT)
+ $(testFloatSin_LINK) $(testFloatSin_OBJECTS) $(testFloatSin_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-csina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-csins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-dsina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-dsins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-ssina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-ssins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-zsina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSin_la-zsins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleSin-testDoubleSin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatSin-testFloatSin.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSin_la-ssins.lo: ssins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-ssins.lo -MD -MP -MF $(DEPDIR)/libSin_la-ssins.Tpo -c -o libSin_la-ssins.lo `test -f 'ssins.c' || echo '$(srcdir)/'`ssins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-ssins.Tpo $(DEPDIR)/libSin_la-ssins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssins.c' object='libSin_la-ssins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-ssins.lo `test -f 'ssins.c' || echo '$(srcdir)/'`ssins.c
+
+libSin_la-dsins.lo: dsins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-dsins.lo -MD -MP -MF $(DEPDIR)/libSin_la-dsins.Tpo -c -o libSin_la-dsins.lo `test -f 'dsins.c' || echo '$(srcdir)/'`dsins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-dsins.Tpo $(DEPDIR)/libSin_la-dsins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsins.c' object='libSin_la-dsins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-dsins.lo `test -f 'dsins.c' || echo '$(srcdir)/'`dsins.c
+
+libSin_la-csins.lo: csins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-csins.lo -MD -MP -MF $(DEPDIR)/libSin_la-csins.Tpo -c -o libSin_la-csins.lo `test -f 'csins.c' || echo '$(srcdir)/'`csins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-csins.Tpo $(DEPDIR)/libSin_la-csins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csins.c' object='libSin_la-csins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-csins.lo `test -f 'csins.c' || echo '$(srcdir)/'`csins.c
+
+libSin_la-zsins.lo: zsins.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-zsins.lo -MD -MP -MF $(DEPDIR)/libSin_la-zsins.Tpo -c -o libSin_la-zsins.lo `test -f 'zsins.c' || echo '$(srcdir)/'`zsins.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-zsins.Tpo $(DEPDIR)/libSin_la-zsins.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsins.c' object='libSin_la-zsins.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-zsins.lo `test -f 'zsins.c' || echo '$(srcdir)/'`zsins.c
+
+libSin_la-ssina.lo: ssina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-ssina.lo -MD -MP -MF $(DEPDIR)/libSin_la-ssina.Tpo -c -o libSin_la-ssina.lo `test -f 'ssina.c' || echo '$(srcdir)/'`ssina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-ssina.Tpo $(DEPDIR)/libSin_la-ssina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssina.c' object='libSin_la-ssina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-ssina.lo `test -f 'ssina.c' || echo '$(srcdir)/'`ssina.c
+
+libSin_la-dsina.lo: dsina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-dsina.lo -MD -MP -MF $(DEPDIR)/libSin_la-dsina.Tpo -c -o libSin_la-dsina.lo `test -f 'dsina.c' || echo '$(srcdir)/'`dsina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-dsina.Tpo $(DEPDIR)/libSin_la-dsina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsina.c' object='libSin_la-dsina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-dsina.lo `test -f 'dsina.c' || echo '$(srcdir)/'`dsina.c
+
+libSin_la-csina.lo: csina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-csina.lo -MD -MP -MF $(DEPDIR)/libSin_la-csina.Tpo -c -o libSin_la-csina.lo `test -f 'csina.c' || echo '$(srcdir)/'`csina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-csina.Tpo $(DEPDIR)/libSin_la-csina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csina.c' object='libSin_la-csina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-csina.lo `test -f 'csina.c' || echo '$(srcdir)/'`csina.c
+
+libSin_la-zsina.lo: zsina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -MT libSin_la-zsina.lo -MD -MP -MF $(DEPDIR)/libSin_la-zsina.Tpo -c -o libSin_la-zsina.lo `test -f 'zsina.c' || echo '$(srcdir)/'`zsina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSin_la-zsina.Tpo $(DEPDIR)/libSin_la-zsina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsina.c' object='libSin_la-zsina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSin_la_CFLAGS) $(CFLAGS) -c -o libSin_la-zsina.lo `test -f 'zsina.c' || echo '$(srcdir)/'`zsina.c
+
+testDoubleSin-testDoubleSin.o: testDoubleSin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSin_CFLAGS) $(CFLAGS) -MT testDoubleSin-testDoubleSin.o -MD -MP -MF $(DEPDIR)/testDoubleSin-testDoubleSin.Tpo -c -o testDoubleSin-testDoubleSin.o `test -f 'testDoubleSin.c' || echo '$(srcdir)/'`testDoubleSin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSin-testDoubleSin.Tpo $(DEPDIR)/testDoubleSin-testDoubleSin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSin.c' object='testDoubleSin-testDoubleSin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSin_CFLAGS) $(CFLAGS) -c -o testDoubleSin-testDoubleSin.o `test -f 'testDoubleSin.c' || echo '$(srcdir)/'`testDoubleSin.c
+
+testDoubleSin-testDoubleSin.obj: testDoubleSin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSin_CFLAGS) $(CFLAGS) -MT testDoubleSin-testDoubleSin.obj -MD -MP -MF $(DEPDIR)/testDoubleSin-testDoubleSin.Tpo -c -o testDoubleSin-testDoubleSin.obj `if test -f 'testDoubleSin.c'; then $(CYGPATH_W) 'testDoubleSin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSin-testDoubleSin.Tpo $(DEPDIR)/testDoubleSin-testDoubleSin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSin.c' object='testDoubleSin-testDoubleSin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSin_CFLAGS) $(CFLAGS) -c -o testDoubleSin-testDoubleSin.obj `if test -f 'testDoubleSin.c'; then $(CYGPATH_W) 'testDoubleSin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSin.c'; fi`
+
+testFloatSin-testFloatSin.o: testFloatSin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSin_CFLAGS) $(CFLAGS) -MT testFloatSin-testFloatSin.o -MD -MP -MF $(DEPDIR)/testFloatSin-testFloatSin.Tpo -c -o testFloatSin-testFloatSin.o `test -f 'testFloatSin.c' || echo '$(srcdir)/'`testFloatSin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSin-testFloatSin.Tpo $(DEPDIR)/testFloatSin-testFloatSin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSin.c' object='testFloatSin-testFloatSin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSin_CFLAGS) $(CFLAGS) -c -o testFloatSin-testFloatSin.o `test -f 'testFloatSin.c' || echo '$(srcdir)/'`testFloatSin.c
+
+testFloatSin-testFloatSin.obj: testFloatSin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSin_CFLAGS) $(CFLAGS) -MT testFloatSin-testFloatSin.obj -MD -MP -MF $(DEPDIR)/testFloatSin-testFloatSin.Tpo -c -o testFloatSin-testFloatSin.obj `if test -f 'testFloatSin.c'; then $(CYGPATH_W) 'testFloatSin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSin-testFloatSin.Tpo $(DEPDIR)/testFloatSin-testFloatSin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSin.c' object='testFloatSin-testFloatSin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSin_CFLAGS) $(CFLAGS) -c -o testFloatSin-testFloatSin.obj `if test -f 'testFloatSin.c'; then $(CYGPATH_W) 'testFloatSin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSin.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/sin/csina.c b/2.3-1/src/c/elementaryFunctions/sin/csina.c
new file mode 100644
index 00000000..e4fb1aae
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/csina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+
+void csina(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = csins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/csins.c b/2.3-1/src/c/elementaryFunctions/sin/csins.c
new file mode 100644
index 00000000..e48491c2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/csins.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+#include "cos.h"
+#include "sinh.h"
+#include "cosh.h"
+
+floatComplex csins(floatComplex z) {
+ float real = creals(z);
+ float imag = cimags(z);
+
+ return(FloatComplex(ssins(real) * scoshs(imag), scoss(real) * ssinhs(imag)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/dsina.c b/2.3-1/src/c/elementaryFunctions/sin/dsina.c
new file mode 100644
index 00000000..e290845e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/dsina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+
+void dsina(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dsins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/dsins.c b/2.3-1/src/c/elementaryFunctions/sin/dsins.c
new file mode 100644
index 00000000..2acd0294
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/dsins.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+
+double dsins(double x) {
+ return (sin(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/i16sina.c b/2.3-1/src/c/elementaryFunctions/sin/i16sina.c
new file mode 100644
index 00000000..4e9a3b06
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/i16sina.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sin.h"
+
+void i16sina(int16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16sins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/i16sins.c b/2.3-1/src/c/elementaryFunctions/sin/i16sins.c
new file mode 100644
index 00000000..6fcbd26f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/i16sins.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+
+float i16sins(int16 x) {
+ return (sin((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/i8sina.c b/2.3-1/src/c/elementaryFunctions/sin/i8sina.c
new file mode 100644
index 00000000..2457388f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/i8sina.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sin.h"
+
+void i8sina(int8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8sins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/i8sins.c b/2.3-1/src/c/elementaryFunctions/sin/i8sins.c
new file mode 100644
index 00000000..23823566
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/i8sins.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+
+float i8sins(int8 x) {
+ return (sin((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/ssina.c b/2.3-1/src/c/elementaryFunctions/sin/ssina.c
new file mode 100644
index 00000000..39288cc4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/ssina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+
+void ssina(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ssins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/ssins.c b/2.3-1/src/c/elementaryFunctions/sin/ssins.c
new file mode 100644
index 00000000..2bc52da8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/ssins.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+
+float ssins(float x) {
+ return (sinf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/testDoubleSin.c b/2.3-1/src/c/elementaryFunctions/sin/testDoubleSin.c
new file mode 100644
index 00000000..f5407331
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/testDoubleSin.c
@@ -0,0 +1,498 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testSin.h"
+
+
+#define SOURCE {0.7062616096809506416321,0.4090520101599395275116,0.3011248558759689331055,\
+0.1880126395262777805328,0.1796709178015589714050,0.2828889950178563594818,\
+0.7232380937784910202026,0.7360379849560558795929,0.1852612206712365150452,\
+0.7703790138475596904755,0.1914967410266399383545,0.7521587223745882511139,\
+0.6205883463844656944275,0.2807604051195085048676,0.2289868686348199844360,\
+0.5049233403988182544708,0.8354099662974476814270,0.8174716415815055370331,\
+0.0030740275979042053223,0.3677616142667829990387,0.8278525872156023979187,\
+0.72754097869619727135,0.5323124285787343978882,0.9267726917751133441925,\
+0.9542504185810685157776,0.3162104780785739421845,0.5789009965956211090088,\
+0.6881225542165338993073,0.3714061146602034568787,0.1705444059334695339203,\
+0.1954363007098436355591,0.978800852317363023758,0.9300233917310833930969,\
+0.5357720064930617809296,0.3947123587131500244141,0.1344871171750128269196,\
+0.7380615202710032463074,0.588114650454372167587,0.9113173168152570724487,\
+0.5682763461954891681671,0.1127616921439766883850,0.9478473584167659282684,\
+0.5237770043313503265381,0.8140139640308916568756,0.1400952627882361412048,\
+0.2763446993194520473480,0.9059953633695840835571,0.1379901585169136524200,\
+0.5603838684037327766419,0.3008610638789832592011,0.4767417535185813904,\
+0.8127435916103422641754,0.1988414181396365165710,0.1107953130267560482025,\
+0.2159351315349340438843,0.6467244853265583515167,0.6597879612818360328674,\
+0.0691898013465106487274,0.9164751060307025909424,0.8635670826770365238190,\
+0.5032854294404387474060,0.1832137755118310451508,0.8403698671609163284302,\
+0.9247214836068451404572,0.6229452537372708320618,0.2773811477236449718475,\
+0.2479109913110733032227,0.3891948559321463108063,0.0436578569933772087097,\
+0.8132526441477239131928,0.7686451207846403121948,0.4041520212776958942413,\
+0.8579940209165215492249,0.6993723283521831035614,0.0828925184905529022217,\
+0.9201254160143435001373,0.5200281282886862754822,0.9351884997449815273285,\
+0.8825624976307153701782,0.2245844271965324878693,0.2153332801535725593567,\
+0.4327089670114219188690,0.5800157263875007629395,0.8876141034997999668121,\
+0.5258982880041003227234,0.859640696551650762558,0.7337234076112508773804,\
+0.7134532411582767963409,0.1087165409699082374573,0.8477638359181582927704,\
+0.6594733335077762603760,0.7916418449021875858307,0.6067967480048537254334,\
+0.4102901122532784938812,0.1958728153258562088013,0.241527963895350694656,\
+0.5113455550745129585266,0.9119556057266891002655,0.0928984880447387695313,\
+0.7438839026726782321930,0.1938720373436808586121,0.4355978979729115962982,\
+0.9922429900616407394409,0.4533818070776760578156,0.8269640663638710975647,\
+0.8889675955288112163544,0.4682085178792476654053,0.3856786251999437808991,\
+0.4124865522608160972595,0.6955242282710969448090,0.0978972557932138442993,\
+0.8728604433126747608185,0.6359515609219670295715,0.4129665228538215160370,\
+0.0294486805796623229980,0.1809961968101561069489,0.7658103061839938163757,\
+0.1232470511458814144135,0.0170737411826848983765,0.8835507561452686786652,\
+0.3164170170202851295471,0.9378212536685168743134,0.3916359134018421173096,\
+0.0844073877669870853424,0.6934146797284483909607,0.4618808380328118801117,\
+0.9355291295796632766724,0.0842495900578796863556,0.5402926551178097724915,\
+0.5613215523771941661835,0.1306025832891464233398,0.5840523042716085910797,\
+0.0048661706969141960144,0.2761953338049352169037,0.7478824090212583541870,\
+0.0194325004704296588898,0.6444276878610253334045,0.2243968318216502666473,\
+0.2478402368724346160889,0.1196091384626924991608,0.1883201440796256065369,\
+0.3393343067727982997894,0.959958622232079505920,0.2847225037403404712677,\
+0.8766820700839161872864,0.2853349032811820507050,0.5103433504700660705566,\
+0.8752629184164106845856,0.5941145820543169975281,0.3945342986844480037689,\
+0.4661326166242361068726,0.0073588271625339984894,0.5170202488079667091370,\
+0.4690007264725863933563,0.6654530800879001617432,0.9476742581464350223541,\
+0.4933638339862227439880,0.2918433747254312038422,0.2016727942973375320435,\
+0.7016656589694321155548,0.8736049132421612739563,0.191055159550160169601,\
+0.5307010114192962646484,0.8889481076039373874664,0.0115523664280772209167,\
+0.4998398735187947750092,0.6700848620384931564331,0.4995208983309566974640,\
+0.1538907447829842567444,0.2571737091057002544403,0.9586529098451137542725,\
+0.6246025026775896549225,0.9371285131201148033142,0.9923511571250855922699,\
+0.3454555813223123550415,0.7558249053545296192169,0.2107181670144200325012,\
+0.9372652801685035228729,0.6767524704337120056152,0.7465373151935636997223,\
+0.4050982249900698661804,0.5101723610423505306244,0.9497965183109045028687,\
+0.0289692510850727558136,0.1634070957079529762268,0.4146909262053668498993,\
+0.0021650679409503936768,0.1810030029155313968658,0.4556188201531767845154,\
+0.1977851442061364650726,0.6053877938538789749146,0.4363054675050079822540,\
+0.8938506888225674629211,0.6104825991205871105194,0.4316215068101882934570,\
+0.2315693595446646213532,0.4675927339121699333191,0.6150764389894902706146,\
+0.8621218334883451461792,0.3846137975342571735382}
+
+#define RESULT {0.6489941700631755017170,0.3977397277804613495711,0.2965946353370927379700,\
+0.1869069269006927436205,0.1787057982923107302131,0.2791309758033572174796,\
+0.6618156282674139134770,0.6713568034120557248556,0.1842032905163836498108,\
+0.6964072867055017823645,0.1903284889107588750967,0.6832166836832923584311,\
+0.5815139023939676077291,0.2770863600724933761832,0.2269909547378782532778,\
+0.4837403483762576783533,0.7415716096535567292136,0.7294185948731235491493,\
+0.0030740227564945614772,0.3595276195652636896938,0.7364804339477919459256,\
+0.6650352209120763413708,0.5075271675293236972593,0.7996863750649069180199,\
+0.8158805463618925557512,0.3109671621400240670852,0.5471043307230858410151,\
+0.6350880886600825947497,0.3629260331962892438540,0.1697188821645874701183,\
+0.1941945483009222261916,0.8298288212470000813070,0.8016339250362096713332,\
+0.5105050203992042012757,0.3845426809733389905688,0.1340820770536885198077,\
+0.6728551393063956220786,0.5547934214048261258867,0.7903115520300768581663,\
+0.5381801020151927295032,0.1125228794588504499519,0.8121614659213718390163,\
+0.5001543426683193738214,0.7270489540313778142888,0.1396374447476722568950,\
+0.2728408635666067505454,0.787039586876701835472,0.1375526569581922986529,\
+0.5315113932434574195440,0.2963427027488344522865,0.4588866814078613742822,\
+0.7261761481530248918404,0.1975337103519642922844,0.1105687722679299794804,\
+0.2142609363196769090010,0.6025755797169196625873,0.6129493292515678648513,\
+0.0691346099927565571619,0.7934612300206389523538,0.7601650349312217835873,\
+0.4823061815340158875465,0.1821904962108664982612,0.7448899416114136418088,\
+0.7984531114259775241848,0.5834297155392762501691,0.2738378415422391687351,\
+0.2453793544289556705085,0.3794436069308826930957,0.0436439896074229186085,\
+0.7265260320935078564020,0.6951619177333813182074,0.3932392395246541161313,\
+0.756532263098035340221,0.6437374906114369244037,0.0827976230060826490220,\
+0.7956775933285428203945,0.4969045479155810296490,0.8047109984386738856799,\
+0.7723690449233312493860,0.2227012449582090047873,0.2136730232885993008285,\
+0.4193316280451939714880,0.5480370912598671040428,0.7755678252599553790248,\
+0.5019901124659599256361,0.7576080909498315030248,0.6696395939777050054786,\
+0.6544486857456611739181,0.1085025088408962251618,0.7498026974031274383137,\
+0.6127007045227848003322,0.7115079193085073194780,0.5702389863986391249640,\
+0.3988753791946258453471,0.1946227344887739574286,0.2391865177264060060569,\
+0.4893511304026755825980,0.7907024739412412683848,0.0927649247006697985629,\
+0.6771509587172231947605,0.1926598267972080835708,0.4219525417710163206486,\
+0.8372545804484667897327,0.4380081794254953031498,0.7358790955224862040396,\
+0.7764215257273850978592,0.4512883308374140978181,0.3761879989923791467454,\
+0.4008885622012666738456,0.6407879869830552799215,0.0977409582360771744813,\
+0.7661702973755802892342,0.5939433204542849953356,0.4013282299434615674194,\
+0.0294444243265947341870,0.1800095863769710646807,0.6931213117261505463063,\
+0.1229352709600845944271,0.0170729116595537758205,0.7729963838033769851776,\
+0.3111634543825066989697,0.8062711862134785967271,0.3817009768423728632847,\
+0.0843071952194427848282,0.6391670242169816829048,0.4456326503441452313581,\
+0.8049131723565879914517,0.0841499582510354254827,0.5143869824676139401731,\
+0.5323054257425473556609,0.1302316176753355037032,0.5514090290933710836185,\
+0.0048661514920936704831,0.2726971620593832135171,0.6800878151345280953066,\
+0.0194312774699979817772,0.6007410055835120665790,0.2225183567972019438308,\
+0.2453107625419813642154,0.1193241474447570282802,0.1872090036522589262535,\
+0.3328594328994332052218,0.8191678366228465346666,0.2808911379544120623386,\
+0.7686206175384947547613,0.2814788293582466960352,0.4884768753384709505383,\
+0.7677120055843160706388,0.5597752773423979588685,0.3843783063813486222671,\
+0.4494348707705640433296,0.0073587607464321675918,0.4942920505581040457876,\
+0.4519951388248303891793,0.6174156057066327862870,0.8120604613904897073340,\
+0.4735912411780784370130,0.2877181408083371860762,0.2003085018506444991981,\
+0.6454907592331077248460,0.7666485093752634094599,0.1898949607970919217781,\
+0.5061380545505530514916,0.7764092440179690690627,0.0115521094721033057429,\
+0.4792850082508480769050,0.6210525015048259378503,0.4790050323268763010631,\
+0.1532840475926474099744,0.2543482295640571710926,0.8184182421341416047156,\
+0.5847748710564846241766,0.8058612048242990155700,0.8373137227375435642784,\
+0.3386253785349607747790,0.6858891905260645627251,0.2091622355697206059322,\
+0.8059421776695899763965,0.6262645222993747928797,0.6791010706734159629860,\
+0.3941090372936942864968,0.4883276667837411211259,0.8132971260929759971248,\
+0.0289651993379718974975,0.1626808532406751051092,0.4029070726587401507501,\
+0.0021650662494845369747,0.1800162812994652028475,0.4400180916539356279493,\
+0.1964981391369581276152,0.5690809947427917236951,0.4225939313085426696226,\
+0.7794896502659051096273,0.5732629547867681418794,0.4183441479008401797657,\
+0.2295052748166268863361,0.4507387331252663553727,0.5770209539366986106757,\
+0.7592252195553320648358,0.3752011769086914250160}
+
+#define ZSOURCER {0.6045256052166223526001,0.9455216196365654468536,0.4476299257948994636536,\
+0.8624908211641013622284,0.1751048639416694641113,0.2067177616991102695465,\
+0.6848411662504076957703,0.1348653226159512996674,0.0069159921258687973022,\
+0.1496290047653019428253,0.5665438110008835792542,0.4359452719800174236298,\
+0.6547604538500308990479,0.3381605879403650760651,0.4259321158751845359802,\
+0.3060420057736337184906,0.7704779822379350662231,0.7058695447631180286408,\
+0.2373670237138867378235,0.8205849635414779186249,0.6789963841438293457031,\
+0.5250809141434729099274,0.3359806565567851066589,0.8941988362930715084076,\
+0.5461782198399305343628,0.7568633262999355792999,0.0259526828303933143616,\
+0.3250150899402797222138,0.6072143577039241791,0.8756139636971056461334,\
+0.2962085595354437828064,0.4229678637348115444183,0.4243144039064645767212,\
+0.7620028969831764698029,0.3622896494343876838684,0.5658242437057197093964,\
+0.6424440070986747741699,0.7580267959274351596832,0.2531452132388949394226,\
+0.5266989110969007015228,0.2118590380996465682983,0.4779220153577625751495,\
+0.1615962767973542213440,0.9168031658045947551727,0.5461866445839405059815,\
+0.4686870560981333255768,0.7772213732823729515076,0.5871783248148858547211,\
+0.5848031807690858840942,0.3139644009061157703400,0.3204141603782773017883,\
+0.3331634956412017345429,0.2282590121030807495117,0.2750317254103720188141,\
+0.4963629124686121940613,0.7453477247618138790131,0.1155001949518918991089,\
+0.0626524840481579303741,0.0877018878236413002014,0.5507565210573375225067,\
+0.2116370312869548797607,0.8335358710028231143951,0.4045845707878470420837,\
+0.2880227542482316493988,0.1750094983726739883423,0.0051561561413109302521,\
+0.3109287889674305915833,0.6602919283322989940643,0.9722995534539222717285,\
+0.9826813959516584873200,0.0455837054178118705750,0.4096118300221860408783,\
+0.7104403134435415267944,0.3917615194804966449738,0.5571686858311295509338,\
+0.0565565521828830242157,0.1540721096098423004150,0.9109257892705500125885,\
+0.5713340407237410545349,0.3488348922692239284515,0.8972954172641038894653,\
+0.2973396372981369495392,0.1091936426237225532532,0.7626331257633864879608,\
+0.6584706604480743408203,0.6996708759106695652008,0.6756794182583689689636,\
+0.9004421546123921871185,0.6668148916214704513550,0.8518152837641537189484,\
+0.8365677157416939735413,0.1291190306656062602997,0.6095453463494777679443,\
+0.2412315667606890201569,0.4029275467619299888611,0.3019328541122376918793,\
+0.1083198729902505874634,0.8456356939859688282013,0.9417407037690281867981,\
+0.9083450469188392162323,0.1937242373824119567871,0.5318046086467802524567,\
+0.8314437521621584892273,0.4952740012668073177338,0.7465563025325536727905,\
+0.7102393140085041522980,0.5811418974772095680237,0.7035941029898822307587,\
+0.3746570833027362823486,0.3394373343326151371002,0.6322447275742888450623,\
+0.7636191300116479396820,0.6940386760979890823364,0.8735245508141815662384,\
+0.3612738298252224922180,0.7933200257830321788788,0.4830590635538101196289,\
+0.2469964125193655490875,0.5025922833010554313660,0.7430270477198064327240,\
+0.6783937942236661911011,0.4903185223229229450226,0.709806025959551334381,\
+0.3303662906400859355927,0.6815545372664928436279,0.0701365978457033634186,\
+0.4745870968326926231384,0.8091805852018296718597,0.9447045121341943740845,\
+0.5478458073921501636505,0.1216687532141804695129,0.9161847713403403759003,\
+0.3045207932591438293457,0.6502694808878004550934,0.0987624628469347953796,\
+0.8391053467057645320892,0.0328534897416830062866,0.3461971958167850971222,\
+0.2801467711105942726135,0.5500544901005923748016,0.0729318000376224517822,\
+0.0225322381593286991119,0.50267804320901632309,0.3478884599171578884125,\
+0.4298669416457414627075,0.3537984383292496204376,0.0529730813577771186829,\
+0.9533003675751388072968,0.1842019557952880859375,0.958756382111459970474,\
+0.3245136169716715812683,0.0003973259590566158295,0.0972583871334791183472,\
+0.4378789965994656086,0.3634226778522133827210,0.2685119728557765483856,\
+0.2770298384130001068115,0.8854365111328661441803,0.5216628303751349449158,\
+0.4979983693920075893,0.8733724001795053482056,0.4699407932348549365997,\
+0.9364062966778874397278,0.1337622734718024730682,0.2712419554591178894043,\
+0.1766990595497190952301,0.0543269468471407890320,0.8402757882140576839447,\
+0.7507283594459295272827,0.3062269617803394794464,0.9195641661062836647034,\
+0.1318263853900134563446,0.0826364941895008087158,0.8222710476256906986237,\
+0.4441085970029234886169,0.9617503038607537746429,0.0283641982823610305786,\
+0.1431905967183411121368,0.3793597565963864326477,0.6144003230147063732147,\
+0.2128270715475082397461,0.4704488315619528293610,0.2076055286452174186707,\
+0.7435979112051427364349,0.3391801547259092330933,0.2479635034687817096710,\
+0.6721735307946801185608,0.9013197491876780986786,0.2140864841639995574951,\
+0.8460668534971773624420,0.1650043567642569541931,0.4003686285577714443207,\
+0.5522825215011835098267,0.0638249483890831470490,0.6903966935351490974426,\
+0.8547787251882255077362,0.0291904583573341369629,0.5434663915075361728668,\
+0.6236743135377764701843,0.2417052476666867733002}
+
+#define ZSOURCEI {0.5503273960202932357788,0.6906704087741672992706,0.9835249418392777442932,\
+0.8285484607331454753876,0.2062614001333713531494,0.1944643096067011356354,\
+0.4367609983310103416443,0.8090620837174355983734,0.8818644303828477859497,\
+0.7404803228564560413361,0.7542522149160504341126,0.9921960639767348766327,\
+0.9886121451854705810547,0.0113218077458441257477,0.9367801276966929435730,\
+0.3874237253330647945404,0.2886805813759565353394,0.567788839805871248245,\
+0.7295644441619515419006,0.0303032915107905864716,0.2795897088944911956787,\
+0.7047131718136370182037,0.7442112853750586509705,0.8920237845741212368012,\
+0.1081438604742288589478,0.8751525697298347949982,0.9068333031609654426575,\
+0.2166852983646094799042,0.4824190363287925720215,0.7766945236362516880035,\
+0.4510916722938418388367,0.1300636469386518001556,0.5505470838397741317749,\
+0.6936193336732685565949,0.1749099576845765113831,0.8636093880049884319305,\
+0.2150467522442340850830,0.1886725709773600101471,0.1796098565682768821716,\
+0.4374312213622033596039,0.8514516223222017288208,0.7381969136185944080353,\
+0.8102188156917691230774,0.1460137623362243175507,0.8999849110841751098633,\
+0.4043733575381338596344,0.0156995235010981559753,0.6904196902178227901459,\
+0.2990311514586210250855,0.1383218024857342243195,0.8478512773290276527405,\
+0.3007262717001140117645,0.229154746979475021362,0.8078110129572451114655,\
+0.3176332255825400352478,0.6924462593160569667816,0.1364154014736413955689,\
+0.5433279541321098804474,0.3276594849303364753723,0.2006831648759543895721,\
+0.5037304237484931945801,0.4962565028108656406403,0.8996161324903368949890,\
+0.9357709079049527645111,0.3390339072793722152710,0.6029155333526432514191,\
+0.4153500730171799659729,0.3041478390805423259735,0.8489827848970890045166,\
+0.4482063786126673221588,0.0903797810897231101990,0.7382151386700570583344,\
+0.2669597584754228591919,0.8226196658797562122345,0.3985779182985424995422,\
+0.9789295899681746959686,0.3041231036186218261719,0.0663515278138220310211,\
+0.6667758254334330558777,0.7548807277344167232513,0.1922533493489027023315,\
+0.7942791883833706378937,0.5580398896709084510803,0.2016023616306483745575,\
+0.787146832793951034546,0.0955459238030016422272,0.6623697867617011070252,\
+0.864868474658578634262,0.7013061288744211196899,0.8015053984709084033966,\
+0.9135685982182621955872,0.6317234965972602367401,0.9346773549914360046387,\
+0.9157753759063780307770,0.0510348035022616386414,0.4329969524405896663666,\
+0.9721843507140874862671,0.8001508046872913837433,0.8452261472120881080627,\
+0.0610524858348071575165,0.8168097324669361114502,0.2101262793876230716705,\
+0.3055453812703490257263,0.9465212575159966945648,0.9269728232175111770630,\
+0.7737778765149414539337,0.5893978821113705635071,0.2377697187475860118866,\
+0.5269544571638107299805,0.0077543654479086399078,0.8311711428686976432800,\
+0.0268517597578465938568,0.2591186594218015670776,0.4641277943737804889679,\
+0.6098861405625939369202,0.0656952331773936748505,0.6466812007129192352295,\
+0.1018534512259066104889,0.2742705782875418663025,0.8162728524766862392426,\
+0.3357750270515680313110,0.4765891996212303638458,0.8440040023997426033020,\
+0.1785074654035270214081,0.5855625644326210021973,0.8426241897977888584137,\
+0.7058847947046160697937,0.7396617024205625057221,0.9751448985189199447632,\
+0.7606669445522129535675,0.8236690396443009376526,0.8889620001427829265595,\
+0.7960178293287754058838,0.3052428201772272586823,0.6803312664851546287537,\
+0.6412069997750222682953,0.0988248009234666824341,0.4654508423991501331329,\
+0.6714970665052533149719,0.5131103205494582653046,0.8631567060947418212891,\
+0.8328299173153936862946,0.1687975851818919181824,0.2961277081631124019623,\
+0.2591485660523176193237,0.1700844173319637775421,0.9718958893790841102600,\
+0.0695185582153499126434,0.4696230851113796234131,0.9544191421009600162506,\
+0.3679352095350623130798,0.2973918146453797817230,0.0415310803800821304321,\
+0.4892336544580757617950,0.5171590568497776985169,0.3534862431697547435761,\
+0.2354387864470481872559,0.6779259913600981235504,0.3834532154724001884460,\
+0.3174350797198712825775,0.3418120350688695907593,0.0535557498224079608917,\
+0.9285596096888184547424,0.3862650538794696331024,0.4328473098576068878174,\
+0.1581165478564798831940,0.7887120461091399192810,0.7448797873221337795258,\
+0.5185996759682893753052,0.8651678604073822498322,0.1524438308551907539368,\
+0.2392775672487914562225,0.5761575847864151000977,0.7395762302912771701813,\
+0.0583172617480158805847,0.6962534948252141475678,0.4206145536154508590698,\
+0.0281158541329205036163,0.8313249954953789710999,0.2333360086195170879364,\
+0.8865877203643321990967,0.3746785433031618595123,0.87671328987926244736,\
+0.4027077830396592617035,0.2890332732349634170532,0.8538430598564445972443,\
+0.5499771209433674812317,0.5128610017709434032440,0.6321087554097175598145,\
+0.4165538274683058261871,0.3217771751806139945984,0.9717370062135159969330,\
+0.5348322447389364242554,0.3416590173728764057159,0.9565287167206406593323,\
+0.9951003189198672771454,0.3422884084284305572510,0.7870580093003809452057,\
+0.9234123295173048973084,0.5238970420323312282562}
+
+#define ZRESULTR {0.6566347140259699566300,1.0119999258966314581443,0.6596019011837132017817,\
+1.035407544941025825835,0.1779303602523068794650,0.2091417769467268095163,\
+0.6938478808740486947215,0.1809168200637071011183,0.0097840077120305499192,\
+0.1918418803766589464388,0.6967642148886226127758,0.6477398327340490036264,\
+0.9315995708552796683577,0.3317736774434180135884,0.6081114651603225507159,\
+0.3241823207263323514127,0.7257014354377283593678,0.7561000009288112444494,\
+0.3005492023050818084506,0.7318806897852137005600,0.6527186268049437467553,\
+0.6309941597264083767982,0.4252885469799541073854,1.1110399216338266992210,\
+0.5224655834751933403126,0.9668090801088078389824,0.0373711557740689717666,\
+0.3268489749847858782950,0.6382749343202905878414,1.0114485987268988509413,\
+0.3221010444660392657568,0.4139453304596071303578,0.4756810141068628650096,\
+0.8632093598097250186640,0.3598514339778784987267,0.7487720850314417697646,\
+0.6130614254242318095223,0.6997626019564747723578,0.2545007621033356648432,\
+0.5515473173800672368472,0.2912178978332317091926,0.5910474830807833646063,\
+0.2166565482354273763921,0.8021363255207357711996,0.7443835374940948046429,\
+0.4891530673136452178618,0.7013877718782099979222,0.6913869813942569164667,\
+0.5769011420640627330059,0.3117908008696873567445,0.4351103756992900639666,\
+0.3419338661078391572445,0.2322493315296763338740,0.3651122336184794425762,\
+0.5004568464347787237756,0.8474278924029616799629,0.1163175220516309976704,\
+0.0720827231471598273149,0.0923335564898466049089,0.5339057146859005342776,\
+0.2372798723378120866467,0.8333578948329619651148,0.5639606188473457182298,\
+0.4177713004682119257716,0.1842205910422827219719,0.0061220134095790416234,\
+0.3327145852908883205679,0.6419359463626251871560,1.1422474153376851457864,\
+0.9169649828841031080629,0.0457541584695274616834,0.5117881770849980194171,\
+0.6755451518212014505593,0.5184569836246168961225,0.5713468012823553765500,\
+0.0858443570774837100279,0.1606151108412635364342,0.7918113937347260877786,\
+0.6654818631286439911676,0.4439038705567253662032,0.796132686757749730155,\
+0.3903563868552101800979,0.1263898622508018709798,0.7049140832202889228597,\
+0.8114695967676066601371,0.6469075512356741164410,0.7677157469479103379939,\
+1.0953970513593642710504,0.7769182781192301989748,1.0073965025007358686793,\
+1.074286510426218699266,0.1553189729796884688273,0.8413108822720302137910,\
+0.3462739066818524835689,0.3926238690106399475965,0.3256804935966552405624,\
+0.1633497671324356526057,1.0010270500405602511762,1.115022351982163151263,\
+0.7899569005544465616353,0.2603865455411881191239,0.5183255731419573741903,\
+0.7736654652779521024186,0.7045488355155032911270,0.99239017570392618062,\
+0.8571418992433421646382,0.6471261632164159172120,0.6653365916658987577748,\
+0.4179492416945764787783,0.332966594116362202271,0.8071129279142643664358,\
+0.6917895244691119049918,0.6612409505512693019824,0.8506578773411223037826,\
+0.4212670370210502279740,0.7142246190696375229834,0.5650468142706680518828,\
+0.2457619298195089230230,0.4999304697490009052885,0.9146990697266257352993,\
+0.6632530384013611834959,0.5254071357713419043733,0.8979087718767884140902,\
+0.3295715941858761155459,0.7411311982358101957402,0.0964650394595463894776,\
+0.5756260203046842383046,0.9308880528862794045963,1.2271094550000687384284,\
+0.6789423000457328605251,0.1649198200195263752654,1.1279258179884905644030,\
+0.3999539922775662836862,0.6338241429246500580064,0.1223148225900566599123,\
+0.9023144865193905017620,0.0330081109061416202999,0.3767477211449618557104,\
+0.3412118905344592723061,0.5930700069420078435201,0.1017393430189639513817,\
+0.0308061153410014963716,0.4886538358989525598908,0.3559707023880692156048,\
+0.4308223854061962176942,0.3514869377238818426434,0.0799867738322445898103,\
+0.8173018105145738454453,0.2037338143062503714731,1.220430983869785990237,\
+0.3406746275228044185113,0.0004150259547877954485,0.0971888856349881896657,\
+0.4757842207231965381276,0.4040809859598182285367,0.2820450997896822298294,\
+0.2811152693325764118093,0.9590128703774639662427,0.5354093557700149164091,\
+0.5019368627578308927895,0.8117140104249528365088,0.4534830656186849551226,\
+1.1783423931120406980000,0.1434370411700725822524,0.2934216038065708409555,\
+0.1779829127631718521663,0.0720832823745556211525,0.9611918663155849529289,\
+0.7759794971968927423944,0.4215038017355943744668,0.8045968908805133379403,\
+0.1352257439826550500239,0.0966259862726158991197,0.9423768067086430999524,\
+0.4303839309127981405112,1.027158469056514755735,0.0309063123957022088673,\
+0.1427581856076631239283,0.5058338353137836751472,0.5922330662524728506213,\
+0.2998212988294082781415,0.4854774490519005447631,0.2905366689284186176856,\
+0.732577252768074504985,0.3467085924376158700966,0.3404646689762517719480,\
+0.7192597601031739396049,0.8895525359433824608146,0.2563314638119464916599,\
+0.8145777458167494655683,0.1728338655335915907685,0.5887205934900180404057,\
+0.6014718010439381590260,0.0675406202372636349507,0.9510839296787396701660,\
+1.1598095667324348490013,0.0309128254938883482994,0.6857099135308569737290,\
+0.8512200678266018671891,0.2729650321569278004219}
+
+#define ZRESULTI {0.4759980266175199981049,0.4371792356294723624899,1.0366401767050017479477,\
+0.6028332456001923578270,0.2045505325550055208961,0.1915259687562470281019,\
+0.3491380267554807237396,0.8920876814407183719169,1.0006703458507313353465,\
+0.8009779429459989996687,0.6984902194099197325627,1.0544026495724472258786,\
+0.9182841727572422785286,0.0106808422200693302340,0.9834445059055472171394,\
+0.3787326350421501008903,0.2100400056445083096790,0.4557093767576786413898,\
+0.7737087506882367460293,0.0206637462688268880306,0.2204234493680024276063,\
+0.6615160486898620240126,0.7692763584553293787494,0.6356101396181920160089,\
+0.0925908774129100275996,0.7206114133477932170990,1.0359844944992535609174,\
+0.2069515918997265613299,0.4117290503525293243747,0.5490423106381259188424,\
+0.4462283131040214456675,0.1189364264093275003198,0.5274577925657699672968,\
+0.5430180765717186330832,0.1643914008870697718301,0.8230721066766158999783,\
+0.1735038050714417801057,0.1378272158996049767676,0.1748220246567987745667,\
+0.3903220669843952550515,0.936703269190418574830,0.7166597754518847507299,\
+0.8900704241537943373075,0.0891449760436722887791,0.8771518805722777756273,\
+0.3706792570421439947381,0.0111920996603491820776,0.6215444290094976897976,\
+0.2530709869257740662896,0.1319801016143227201383,0.9046350616526124266414,\
+0.2884930138703660218447,0.2251695646636414915864,0.8648081988694793498240,\
+0.2840216379380148814526,0.5504953762822683005496,0.1359271700042656016993,\
+0.5693382736493431961478,0.3322720353016644923017,0.1721580834994098363477,\
+0.5135850315563981194345,0.3474773880755230304196,0.9431362964718456032287,\
+1.0340232262721140710227,0.3402877573217258366789,0.6401040473330621427550,\
+0.4069022009136239459437,0.2439407776749255851723,0.5378842266979906305835,\
+0.2570716586141951753852,0.0904088654517940515376,0.7403475521247256940782,\
+0.2047878426979200527924,0.8489939536581485590716,0.3473238625280567482001,\
+1.1411188764290771668897,0.3051746072580045487932,0.0407043050782743276450,\
+0.6033725923116708411698,0.778737542643346047910,0.1206535237380119696127,\
+0.8418336511001852651148,0.5839585555917582437857,0.1467518266954731531726,\
+0.6888901126606848945855,0.0732090771366951525989,0.5554652901202962178573,\
+0.6068461403975041745795,0.5973804827482247503667,0.5862495346519734917834,\
+0.7008734442762630800772,0.6689719175986947874435,0.8829098191147302099324,\
+1.0188712228965588479923,0.0469681660587412258545,0.4264494425604897775983,\
+1.1260897634779567511032,0.5891751058811135477455,0.5586811292942333029288,\
+0.0375737549548666310839,0.8936786828452066844264,0.1824421274677656690244,\
+0.2090978327687162685589,0.9628255596340984379111,0.7821471108810679195855,\
+0.6470050596557553879151,0.5216627363302938080736,0.1830177712067865836154,\
+0.5134143514131775942744,0.0073119913675850425894,0.7504222430574429836270,\
+0.0193983766100578602920,0.2014128332431188439511,0.3088455785813677967333,\
+0.6065483134448432789299,0.0461172484518394959485,0.6134456837548584173803,\
+0.0989331667688019139595,0.2433781622039619951803,0.6701373782390742661619,\
+0.2663685035487164953771,0.4365368071405912875349,0.7189236163164304249662,\
+0.1697526069685433847134,0.4811811372286406429666,0.9436115675726329810047,\
+0.6813279536427474525340,0.5582673535726633273768,0.6663831331574520122629,\
+0.7137987696438253815146,0.9132123041060544732517,0.6154027043735471602659,\
+0.8421707385350217789366,0.2467394118703030714279,0.730464243452961903280,\
+0.4583747264016979627854,0.0989323235351602520149,0.4538168380708768601117,\
+0.6949204434222109316721,0.4568731305870791792323,0.9718116503334458533558,\
+0.9322636874728698064274,0.1486199865445305412504,0.2824746711136658094965,\
+0.238217162606873950059,0.1603203534786354911290,1.130704398714823533112,\
+0.0402833511895827542371,0.4788366747059483730098,0.6354755115001236021044,\
+0.3566529249056448747091,0.3017948657011057522759,0.0413466935121344983384,\
+0.46096369056612357,0.5052181131344314346521,0.3479618653266752237308,\
+0.2285599720872606155364,0.462725396526868226754,0.3406579403750831791520,\
+0.2835867580422753442271,0.2238269615848648141920,0.0477728736811990767341,\
+0.6329115684248395323763,0.3924052442709091148565,0.4301664447715317640686,\
+0.1563039559206648165812,0.8717772653208039068673,0.544280842419675670030,\
+0.3964232571280063566199,0.9317498908981691752018,0.0927647199866874355711,\
+0.239471404370552171104,0.6064908073717841796579,0.5504808053886728336224,\
+0.0526899922619719976447,0.4312873750429307428966,0.4329527886793243518504,\
+0.0278317754230633894463,0.8642909834572990446233,0.1923982024967207382638,\
+0.9846585214795218199413,0.3418444780294159768275,0.9720887284222768931485,\
+0.3044849414953779143112,0.2763773261322472474255,0.9320336608375792142311,\
+0.4523656548286881795562,0.3324058771805019629753,0.6596413052835798929152,\
+0.2842028663251400799616,0.3229125187951548126009,1.0425270197833373941876,\
+0.4773378821453879150560,0.3476356752155591589570,0.8551943809979846156111,\
+0.7664315470559724952082,0.3488628182805697530711,0.7453969031814248191736,\
+0.8607289142164601392082,0.5322582746397167552388}
+
+
+
+
+
+void dsinsTest() {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dsins(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zsinsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zsins(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dsinaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dsina(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-16);
+ }
+}
+
+void zsinaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ zsina(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+int testSin() {
+ printf("\n>>>> Double Sine Tests\n");
+ dsinsTest();
+ zsinsTest();
+ dsinaTest();
+ zsinaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testSin() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/testFloatSin.c b/2.3-1/src/c/elementaryFunctions/sin/testFloatSin.c
new file mode 100644
index 00000000..dfaef72b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/testFloatSin.c
@@ -0,0 +1,494 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testSin.h"
+
+#define SOURCE {0.7062616096809506416321f,0.4090520101599395275116f,0.3011248558759689331055f,\
+0.1880126395262777805328f,0.1796709178015589714050f,0.2828889950178563594818f,\
+0.7232380937784910202026f,0.7360379849560558795929f,0.1852612206712365150452f,\
+0.7703790138475596904755f,0.1914967410266399383545f,0.7521587223745882511139f,\
+0.6205883463844656944275f,0.2807604051195085048676f,0.2289868686348199844360f,\
+0.5049233403988182544708f,0.8354099662974476814270f,0.8174716415815055370331f,\
+0.0030740275979042053223f,0.3677616142667829990387f,0.8278525872156023979187f,\
+0.72754097869619727135f,0.5323124285787343978882f,0.9267726917751133441925f,\
+0.9542504185810685157776f,0.3162104780785739421845f,0.5789009965956211090088f,\
+0.6881225542165338993073f,0.3714061146602034568787f,0.1705444059334695339203f,\
+0.1954363007098436355591f,0.978800852317363023758f,0.9300233917310833930969f,\
+0.5357720064930617809296f,0.3947123587131500244141f,0.1344871171750128269196f,\
+0.7380615202710032463074f,0.588114650454372167587f,0.9113173168152570724487f,\
+0.5682763461954891681671f,0.1127616921439766883850f,0.9478473584167659282684f,\
+0.5237770043313503265381f,0.8140139640308916568756f,0.1400952627882361412048f,\
+0.2763446993194520473480f,0.9059953633695840835571f,0.1379901585169136524200f,\
+0.5603838684037327766419f,0.3008610638789832592011f,0.4767417535185813904f,\
+0.8127435916103422641754f,0.1988414181396365165710f,0.1107953130267560482025f,\
+0.2159351315349340438843f,0.6467244853265583515167f,0.6597879612818360328674f,\
+0.0691898013465106487274f,0.9164751060307025909424f,0.8635670826770365238190f,\
+0.5032854294404387474060f,0.1832137755118310451508f,0.8403698671609163284302f,\
+0.9247214836068451404572f,0.6229452537372708320618f,0.2773811477236449718475f,\
+0.2479109913110733032227f,0.3891948559321463108063f,0.0436578569933772087097f,\
+0.8132526441477239131928f,0.7686451207846403121948f,0.4041520212776958942413f,\
+0.8579940209165215492249f,0.6993723283521831035614f,0.0828925184905529022217f,\
+0.9201254160143435001373f,0.5200281282886862754822f,0.9351884997449815273285f,\
+0.8825624976307153701782f,0.2245844271965324878693f,0.2153332801535725593567f,\
+0.4327089670114219188690f,0.5800157263875007629395f,0.8876141034997999668121f,\
+0.5258982880041003227234f,0.859640696551650762558f,0.7337234076112508773804f,\
+0.7134532411582767963409f,0.1087165409699082374573f,0.8477638359181582927704f,\
+0.6594733335077762603760f,0.7916418449021875858307f,0.6067967480048537254334f,\
+0.4102901122532784938812f,0.1958728153258562088013f,0.241527963895350694656f,\
+0.5113455550745129585266f,0.9119556057266891002655f,0.0928984880447387695313f,\
+0.7438839026726782321930f,0.1938720373436808586121f,0.4355978979729115962982f,\
+0.9922429900616407394409f,0.4533818070776760578156f,0.8269640663638710975647f,\
+0.8889675955288112163544f,0.4682085178792476654053f,0.3856786251999437808991f,\
+0.4124865522608160972595f,0.6955242282710969448090f,0.0978972557932138442993f,\
+0.8728604433126747608185f,0.6359515609219670295715f,0.4129665228538215160370f,\
+0.0294486805796623229980f,0.1809961968101561069489f,0.7658103061839938163757f,\
+0.1232470511458814144135f,0.0170737411826848983765f,0.8835507561452686786652f,\
+0.3164170170202851295471f,0.9378212536685168743134f,0.3916359134018421173096f,\
+0.0844073877669870853424f,0.6934146797284483909607f,0.4618808380328118801117f,\
+0.9355291295796632766724f,0.0842495900578796863556f,0.5402926551178097724915f,\
+0.5613215523771941661835f,0.1306025832891464233398f,0.5840523042716085910797f,\
+0.0048661706969141960144f,0.2761953338049352169037f,0.7478824090212583541870f,\
+0.0194325004704296588898f,0.6444276878610253334045f,0.2243968318216502666473f,\
+0.2478402368724346160889f,0.1196091384626924991608f,0.1883201440796256065369f,\
+0.3393343067727982997894f,0.959958622232079505920f,0.2847225037403404712677f,\
+0.8766820700839161872864f,0.2853349032811820507050f,0.5103433504700660705566f,\
+0.8752629184164106845856f,0.5941145820543169975281f,0.3945342986844480037689f,\
+0.4661326166242361068726f,0.0073588271625339984894f,0.5170202488079667091370f,\
+0.4690007264725863933563f,0.6654530800879001617432f,0.9476742581464350223541f,\
+0.4933638339862227439880f,0.2918433747254312038422f,0.2016727942973375320435f,\
+0.7016656589694321155548f,0.8736049132421612739563f,0.191055159550160169601f,\
+0.5307010114192962646484f,0.8889481076039373874664f,0.0115523664280772209167f,\
+0.4998398735187947750092f,0.6700848620384931564331f,0.4995208983309566974640f,\
+0.1538907447829842567444f,0.2571737091057002544403f,0.9586529098451137542725f,\
+0.6246025026775896549225f,0.9371285131201148033142f,0.9923511571250855922699f,\
+0.3454555813223123550415f,0.7558249053545296192169f,0.2107181670144200325012f,\
+0.9372652801685035228729f,0.6767524704337120056152f,0.7465373151935636997223f,\
+0.4050982249900698661804f,0.5101723610423505306244f,0.9497965183109045028687f,\
+0.0289692510850727558136f,0.1634070957079529762268f,0.4146909262053668498993f,\
+0.0021650679409503936768f,0.1810030029155313968658f,0.4556188201531767845154f,\
+0.1977851442061364650726f,0.6053877938538789749146f,0.4363054675050079822540f,\
+0.8938506888225674629211f,0.6104825991205871105194f,0.4316215068101882934570f,\
+0.2315693595446646213532f,0.4675927339121699333191f,0.6150764389894902706146f,\
+0.8621218334883451461792f,0.3846137975342571735382f}
+
+#define RESULT {0.6489941700631755017170f,0.3977397277804613495711f,0.2965946353370927379700f,\
+0.1869069269006927436205f,0.1787057982923107302131f,0.2791309758033572174796f,\
+0.6618156282674139134770f,0.6713568034120557248556f,0.1842032905163836498108f,\
+0.6964072867055017823645f,0.1903284889107588750967f,0.6832166836832923584311f,\
+0.5815139023939676077291f,0.2770863600724933761832f,0.2269909547378782532778f,\
+0.4837403483762576783533f,0.7415716096535567292136f,0.7294185948731235491493f,\
+0.0030740227564945614772f,0.3595276195652636896938f,0.7364804339477919459256f,\
+0.6650352209120763413708f,0.5075271675293236972593f,0.7996863750649069180199f,\
+0.8158805463618925557512f,0.3109671621400240670852f,0.5471043307230858410151f,\
+0.6350880886600825947497f,0.3629260331962892438540f,0.1697188821645874701183f,\
+0.1941945483009222261916f,0.8298288212470000813070f,0.8016339250362096713332f,\
+0.5105050203992042012757f,0.3845426809733389905688f,0.1340820770536885198077f,\
+0.6728551393063956220786f,0.5547934214048261258867f,0.7903115520300768581663f,\
+0.5381801020151927295032f,0.1125228794588504499519f,0.8121614659213718390163f,\
+0.5001543426683193738214f,0.7270489540313778142888f,0.1396374447476722568950f,\
+0.2728408635666067505454f,0.787039586876701835472f,0.1375526569581922986529f,\
+0.5315113932434574195440f,0.2963427027488344522865f,0.4588866814078613742822f,\
+0.7261761481530248918404f,0.1975337103519642922844f,0.1105687722679299794804f,\
+0.2142609363196769090010f,0.6025755797169196625873f,0.6129493292515678648513f,\
+0.0691346099927565571619f,0.7934612300206389523538f,0.7601650349312217835873f,\
+0.4823061815340158875465f,0.1821904962108664982612f,0.7448899416114136418088f,\
+0.7984531114259775241848f,0.5834297155392762501691f,0.2738378415422391687351f,\
+0.2453793544289556705085f,0.3794436069308826930957f,0.0436439896074229186085f,\
+0.7265260320935078564020f,0.6951619177333813182074f,0.3932392395246541161313f,\
+0.756532263098035340221f,0.6437374906114369244037f,0.0827976230060826490220f,\
+0.7956775933285428203945f,0.4969045479155810296490f,0.8047109984386738856799f,\
+0.7723690449233312493860f,0.2227012449582090047873f,0.2136730232885993008285f,\
+0.4193316280451939714880f,0.5480370912598671040428f,0.7755678252599553790248f,\
+0.5019901124659599256361f,0.7576080909498315030248f,0.6696395939777050054786f,\
+0.6544486857456611739181f,0.1085025088408962251618f,0.7498026974031274383137f,\
+0.6127007045227848003322f,0.7115079193085073194780f,0.5702389863986391249640f,\
+0.3988753791946258453471f,0.1946227344887739574286f,0.2391865177264060060569f,\
+0.4893511304026755825980f,0.7907024739412412683848f,0.0927649247006697985629f,\
+0.6771509587172231947605f,0.1926598267972080835708f,0.4219525417710163206486f,\
+0.8372545804484667897327f,0.4380081794254953031498f,0.7358790955224862040396f,\
+0.7764215257273850978592f,0.4512883308374140978181f,0.3761879989923791467454f,\
+0.4008885622012666738456f,0.6407879869830552799215f,0.0977409582360771744813f,\
+0.7661702973755802892342f,0.5939433204542849953356f,0.4013282299434615674194f,\
+0.0294444243265947341870f,0.1800095863769710646807f,0.6931213117261505463063f,\
+0.1229352709600845944271f,0.0170729116595537758205f,0.7729963838033769851776f,\
+0.3111634543825066989697f,0.8062711862134785967271f,0.3817009768423728632847f,\
+0.0843071952194427848282f,0.6391670242169816829048f,0.4456326503441452313581f,\
+0.8049131723565879914517f,0.0841499582510354254827f,0.5143869824676139401731f,\
+0.5323054257425473556609f,0.1302316176753355037032f,0.5514090290933710836185f,\
+0.0048661514920936704831f,0.2726971620593832135171f,0.6800878151345280953066f,\
+0.0194312774699979817772f,0.6007410055835120665790f,0.2225183567972019438308f,\
+0.2453107625419813642154f,0.1193241474447570282802f,0.1872090036522589262535f,\
+0.3328594328994332052218f,0.8191678366228465346666f,0.2808911379544120623386f,\
+0.7686206175384947547613f,0.2814788293582466960352f,0.4884768753384709505383f,\
+0.7677120055843160706388f,0.5597752773423979588685f,0.3843783063813486222671f,\
+0.4494348707705640433296f,0.0073587607464321675918f,0.4942920505581040457876f,\
+0.4519951388248303891793f,0.6174156057066327862870f,0.8120604613904897073340f,\
+0.4735912411780784370130f,0.2877181408083371860762f,0.2003085018506444991981f,\
+0.6454907592331077248460f,0.7666485093752634094599f,0.1898949607970919217781f,\
+0.5061380545505530514916f,0.7764092440179690690627f,0.0115521094721033057429f,\
+0.4792850082508480769050f,0.6210525015048259378503f,0.4790050323268763010631f,\
+0.1532840475926474099744f,0.2543482295640571710926f,0.8184182421341416047156f,\
+0.5847748710564846241766f,0.8058612048242990155700f,0.8373137227375435642784f,\
+0.3386253785349607747790f,0.6858891905260645627251f,0.2091622355697206059322f,\
+0.8059421776695899763965f,0.6262645222993747928797f,0.6791010706734159629860f,\
+0.3941090372936942864968f,0.4883276667837411211259f,0.8132971260929759971248f,\
+0.0289651993379718974975f,0.1626808532406751051092f,0.4029070726587401507501f,\
+0.0021650662494845369747f,0.1800162812994652028475f,0.4400180916539356279493f,\
+0.1964981391369581276152f,0.5690809947427917236951f,0.4225939313085426696226f,\
+0.7794896502659051096273f,0.5732629547867681418794f,0.4183441479008401797657f,\
+0.2295052748166268863361f,0.4507387331252663553727f,0.5770209539366986106757f,\
+0.7592252195553320648358f,0.3752011769086914250160f}
+
+#define CSOURCER {0.6045256052166223526001f,0.9455216196365654468536f,0.4476299257948994636536f,\
+0.8624908211641013622284f,0.1751048639416694641113f,0.2067177616991102695465f,\
+0.6848411662504076957703f,0.1348653226159512996674f,0.0069159921258687973022f,\
+0.1496290047653019428253f,0.5665438110008835792542f,0.4359452719800174236298f,\
+0.6547604538500308990479f,0.3381605879403650760651f,0.4259321158751845359802f,\
+0.3060420057736337184906f,0.7704779822379350662231f,0.7058695447631180286408f,\
+0.2373670237138867378235f,0.8205849635414779186249f,0.6789963841438293457031f,\
+0.5250809141434729099274f,0.3359806565567851066589f,0.8941988362930715084076f,\
+0.5461782198399305343628f,0.7568633262999355792999f,0.0259526828303933143616f,\
+0.3250150899402797222138f,0.6072143577039241791f,0.8756139636971056461334f,\
+0.2962085595354437828064f,0.4229678637348115444183f,0.4243144039064645767212f,\
+0.7620028969831764698029f,0.3622896494343876838684f,0.5658242437057197093964f,\
+0.6424440070986747741699f,0.7580267959274351596832f,0.2531452132388949394226f,\
+0.5266989110969007015228f,0.2118590380996465682983f,0.4779220153577625751495f,\
+0.1615962767973542213440f,0.9168031658045947551727f,0.5461866445839405059815f,\
+0.4686870560981333255768f,0.7772213732823729515076f,0.5871783248148858547211f,\
+0.5848031807690858840942f,0.3139644009061157703400f,0.3204141603782773017883f,\
+0.3331634956412017345429f,0.2282590121030807495117f,0.2750317254103720188141f,\
+0.4963629124686121940613f,0.7453477247618138790131f,0.1155001949518918991089f,\
+0.0626524840481579303741f,0.0877018878236413002014f,0.5507565210573375225067f,\
+0.2116370312869548797607f,0.8335358710028231143951f,0.4045845707878470420837f,\
+0.2880227542482316493988f,0.1750094983726739883423f,0.0051561561413109302521f,\
+0.3109287889674305915833f,0.6602919283322989940643f,0.9722995534539222717285f,\
+0.9826813959516584873200f,0.0455837054178118705750f,0.4096118300221860408783f,\
+0.7104403134435415267944f,0.3917615194804966449738f,0.5571686858311295509338f,\
+0.0565565521828830242157f,0.1540721096098423004150f,0.9109257892705500125885f,\
+0.5713340407237410545349f,0.3488348922692239284515f,0.8972954172641038894653f,\
+0.2973396372981369495392f,0.1091936426237225532532f,0.7626331257633864879608f,\
+0.6584706604480743408203f,0.6996708759106695652008f,0.6756794182583689689636f,\
+0.9004421546123921871185f,0.6668148916214704513550f,0.8518152837641537189484f,\
+0.8365677157416939735413f,0.1291190306656062602997f,0.6095453463494777679443f,\
+0.2412315667606890201569f,0.4029275467619299888611f,0.3019328541122376918793f,\
+0.1083198729902505874634f,0.8456356939859688282013f,0.9417407037690281867981f,\
+0.9083450469188392162323f,0.1937242373824119567871f,0.5318046086467802524567f,\
+0.8314437521621584892273f,0.4952740012668073177338f,0.7465563025325536727905f,\
+0.7102393140085041522980f,0.5811418974772095680237f,0.7035941029898822307587f,\
+0.3746570833027362823486f,0.3394373343326151371002f,0.6322447275742888450623f,\
+0.7636191300116479396820f,0.6940386760979890823364f,0.8735245508141815662384f,\
+0.3612738298252224922180f,0.7933200257830321788788f,0.4830590635538101196289f,\
+0.2469964125193655490875f,0.5025922833010554313660f,0.7430270477198064327240f,\
+0.6783937942236661911011f,0.4903185223229229450226f,0.709806025959551334381f,\
+0.3303662906400859355927f,0.6815545372664928436279f,0.0701365978457033634186f,\
+0.4745870968326926231384f,0.8091805852018296718597f,0.9447045121341943740845f,\
+0.5478458073921501636505f,0.1216687532141804695129f,0.9161847713403403759003f,\
+0.3045207932591438293457f,0.6502694808878004550934f,0.0987624628469347953796f,\
+0.8391053467057645320892f,0.0328534897416830062866f,0.3461971958167850971222f,\
+0.2801467711105942726135f,0.5500544901005923748016f,0.0729318000376224517822f,\
+0.0225322381593286991119f,0.50267804320901632309f,0.3478884599171578884125f,\
+0.4298669416457414627075f,0.3537984383292496204376f,0.0529730813577771186829f,\
+0.9533003675751388072968f,0.1842019557952880859375f,0.958756382111459970474f,\
+0.3245136169716715812683f,0.0003973259590566158295f,0.0972583871334791183472f,\
+0.4378789965994656086f,0.3634226778522133827210f,0.2685119728557765483856f,\
+0.2770298384130001068115f,0.8854365111328661441803f,0.5216628303751349449158f,\
+0.4979983693920075893f,0.8733724001795053482056f,0.4699407932348549365997f,\
+0.9364062966778874397278f,0.1337622734718024730682f,0.2712419554591178894043f,\
+0.1766990595497190952301f,0.0543269468471407890320f,0.8402757882140576839447f,\
+0.7507283594459295272827f,0.3062269617803394794464f,0.9195641661062836647034f,\
+0.1318263853900134563446f,0.0826364941895008087158f,0.8222710476256906986237f,\
+0.4441085970029234886169f,0.9617503038607537746429f,0.0283641982823610305786f,\
+0.1431905967183411121368f,0.3793597565963864326477f,0.6144003230147063732147f,\
+0.2128270715475082397461f,0.4704488315619528293610f,0.2076055286452174186707f,\
+0.7435979112051427364349f,0.3391801547259092330933f,0.2479635034687817096710f,\
+0.6721735307946801185608f,0.9013197491876780986786f,0.2140864841639995574951f,\
+0.8460668534971773624420f,0.1650043567642569541931f,0.4003686285577714443207f,\
+0.5522825215011835098267f,0.0638249483890831470490f,0.6903966935351490974426f,\
+0.8547787251882255077362f,0.0291904583573341369629f,0.5434663915075361728668f,\
+0.6236743135377764701843f,0.2417052476666867733002f}
+
+#define CSOURCEI {0.5503273960202932357788f,0.6906704087741672992706f,0.9835249418392777442932f,\
+0.8285484607331454753876f,0.2062614001333713531494f,0.1944643096067011356354f,\
+0.4367609983310103416443f,0.8090620837174355983734f,0.8818644303828477859497f,\
+0.7404803228564560413361f,0.7542522149160504341126f,0.9921960639767348766327f,\
+0.9886121451854705810547f,0.0113218077458441257477f,0.9367801276966929435730f,\
+0.3874237253330647945404f,0.2886805813759565353394f,0.567788839805871248245f,\
+0.7295644441619515419006f,0.0303032915107905864716f,0.2795897088944911956787f,\
+0.7047131718136370182037f,0.7442112853750586509705f,0.8920237845741212368012f,\
+0.1081438604742288589478f,0.8751525697298347949982f,0.9068333031609654426575f,\
+0.2166852983646094799042f,0.4824190363287925720215f,0.7766945236362516880035f,\
+0.4510916722938418388367f,0.1300636469386518001556f,0.5505470838397741317749f,\
+0.6936193336732685565949f,0.1749099576845765113831f,0.8636093880049884319305f,\
+0.2150467522442340850830f,0.1886725709773600101471f,0.1796098565682768821716f,\
+0.4374312213622033596039f,0.8514516223222017288208f,0.7381969136185944080353f,\
+0.8102188156917691230774f,0.1460137623362243175507f,0.8999849110841751098633f,\
+0.4043733575381338596344f,0.0156995235010981559753f,0.6904196902178227901459f,\
+0.2990311514586210250855f,0.1383218024857342243195f,0.8478512773290276527405f,\
+0.3007262717001140117645f,0.229154746979475021362f,0.8078110129572451114655f,\
+0.3176332255825400352478f,0.6924462593160569667816f,0.1364154014736413955689f,\
+0.5433279541321098804474f,0.3276594849303364753723f,0.2006831648759543895721f,\
+0.5037304237484931945801f,0.4962565028108656406403f,0.8996161324903368949890f,\
+0.9357709079049527645111f,0.3390339072793722152710f,0.6029155333526432514191f,\
+0.4153500730171799659729f,0.3041478390805423259735f,0.8489827848970890045166f,\
+0.4482063786126673221588f,0.0903797810897231101990f,0.7382151386700570583344f,\
+0.2669597584754228591919f,0.8226196658797562122345f,0.3985779182985424995422f,\
+0.9789295899681746959686f,0.3041231036186218261719f,0.0663515278138220310211f,\
+0.6667758254334330558777f,0.7548807277344167232513f,0.1922533493489027023315f,\
+0.7942791883833706378937f,0.5580398896709084510803f,0.2016023616306483745575f,\
+0.787146832793951034546f,0.0955459238030016422272f,0.6623697867617011070252f,\
+0.864868474658578634262f,0.7013061288744211196899f,0.8015053984709084033966f,\
+0.9135685982182621955872f,0.6317234965972602367401f,0.9346773549914360046387f,\
+0.9157753759063780307770f,0.0510348035022616386414f,0.4329969524405896663666f,\
+0.9721843507140874862671f,0.8001508046872913837433f,0.8452261472120881080627f,\
+0.0610524858348071575165f,0.8168097324669361114502f,0.2101262793876230716705f,\
+0.3055453812703490257263f,0.9465212575159966945648f,0.9269728232175111770630f,\
+0.7737778765149414539337f,0.5893978821113705635071f,0.2377697187475860118866f,\
+0.5269544571638107299805f,0.0077543654479086399078f,0.8311711428686976432800f,\
+0.0268517597578465938568f,0.2591186594218015670776f,0.4641277943737804889679f,\
+0.6098861405625939369202f,0.0656952331773936748505f,0.6466812007129192352295f,\
+0.1018534512259066104889f,0.2742705782875418663025f,0.8162728524766862392426f,\
+0.3357750270515680313110f,0.4765891996212303638458f,0.8440040023997426033020f,\
+0.1785074654035270214081f,0.5855625644326210021973f,0.8426241897977888584137f,\
+0.7058847947046160697937f,0.7396617024205625057221f,0.9751448985189199447632f,\
+0.7606669445522129535675f,0.8236690396443009376526f,0.8889620001427829265595f,\
+0.7960178293287754058838f,0.3052428201772272586823f,0.6803312664851546287537f,\
+0.6412069997750222682953f,0.0988248009234666824341f,0.4654508423991501331329f,\
+0.6714970665052533149719f,0.5131103205494582653046f,0.8631567060947418212891f,\
+0.8328299173153936862946f,0.1687975851818919181824f,0.2961277081631124019623f,\
+0.2591485660523176193237f,0.1700844173319637775421f,0.9718958893790841102600f,\
+0.0695185582153499126434f,0.4696230851113796234131f,0.9544191421009600162506f,\
+0.3679352095350623130798f,0.2973918146453797817230f,0.0415310803800821304321f,\
+0.4892336544580757617950f,0.5171590568497776985169f,0.3534862431697547435761f,\
+0.2354387864470481872559f,0.6779259913600981235504f,0.3834532154724001884460f,\
+0.3174350797198712825775f,0.3418120350688695907593f,0.0535557498224079608917f,\
+0.9285596096888184547424f,0.3862650538794696331024f,0.4328473098576068878174f,\
+0.1581165478564798831940f,0.7887120461091399192810f,0.7448797873221337795258f,\
+0.5185996759682893753052f,0.8651678604073822498322f,0.1524438308551907539368f,\
+0.2392775672487914562225f,0.5761575847864151000977f,0.7395762302912771701813f,\
+0.0583172617480158805847f,0.6962534948252141475678f,0.4206145536154508590698f,\
+0.0281158541329205036163f,0.8313249954953789710999f,0.2333360086195170879364f,\
+0.8865877203643321990967f,0.3746785433031618595123f,0.87671328987926244736f,\
+0.4027077830396592617035f,0.2890332732349634170532f,0.8538430598564445972443f,\
+0.5499771209433674812317f,0.5128610017709434032440f,0.6321087554097175598145f,\
+0.4165538274683058261871f,0.3217771751806139945984f,0.9717370062135159969330f,\
+0.5348322447389364242554f,0.3416590173728764057159f,0.9565287167206406593323f,\
+0.9951003189198672771454f,0.3422884084284305572510f,0.7870580093003809452057f,\
+0.9234123295173048973084f,0.5238970420323312282562f}
+
+#define CRESULTR {0.6566347140259699566300f,1.0119999258966314581443f,0.6596019011837132017817f,\
+1.035407544941025825835f,0.1779303602523068794650f,0.2091417769467268095163f,\
+0.6938478808740486947215f,0.1809168200637071011183f,0.0097840077120305499192f,\
+0.1918418803766589464388f,0.6967642148886226127758f,0.6477398327340490036264f,\
+0.9315995708552796683577f,0.3317736774434180135884f,0.6081114651603225507159f,\
+0.3241823207263323514127f,0.7257014354377283593678f,0.7561000009288112444494f,\
+0.3005492023050818084506f,0.7318806897852137005600f,0.6527186268049437467553f,\
+0.6309941597264083767982f,0.4252885469799541073854f,1.1110399216338266992210f,\
+0.5224655834751933403126f,0.9668090801088078389824f,0.0373711557740689717666f,\
+0.3268489749847858782950f,0.6382749343202905878414f,1.0114485987268988509413f,\
+0.3221010444660392657568f,0.4139453304596071303578f,0.4756810141068628650096f,\
+0.8632093598097250186640f,0.3598514339778784987267f,0.7487720850314417697646f,\
+0.6130614254242318095223f,0.6997626019564747723578f,0.2545007621033356648432f,\
+0.5515473173800672368472f,0.2912178978332317091926f,0.5910474830807833646063f,\
+0.2166565482354273763921f,0.8021363255207357711996f,0.7443835374940948046429f,\
+0.4891530673136452178618f,0.7013877718782099979222f,0.6913869813942569164667f,\
+0.5769011420640627330059f,0.3117908008696873567445f,0.4351103756992900639666f,\
+0.3419338661078391572445f,0.2322493315296763338740f,0.3651122336184794425762f,\
+0.5004568464347787237756f,0.8474278924029616799629f,0.1163175220516309976704f,\
+0.0720827231471598273149f,0.0923335564898466049089f,0.5339057146859005342776f,\
+0.2372798723378120866467f,0.8333578948329619651148f,0.5639606188473457182298f,\
+0.4177713004682119257716f,0.1842205910422827219719f,0.0061220134095790416234f,\
+0.3327145852908883205679f,0.6419359463626251871560f,1.1422474153376851457864f,\
+0.9169649828841031080629f,0.0457541584695274616834f,0.5117881770849980194171f,\
+0.6755451518212014505593f,0.5184569836246168961225f,0.5713468012823553765500f,\
+0.0858443570774837100279f,0.1606151108412635364342f,0.7918113937347260877786f,\
+0.6654818631286439911676f,0.4439038705567253662032f,0.796132686757749730155f,\
+0.3903563868552101800979f,0.1263898622508018709798f,0.7049140832202889228597f,\
+0.8114695967676066601371f,0.6469075512356741164410f,0.7677157469479103379939f,\
+1.0953970513593642710504f,0.7769182781192301989748f,1.0073965025007358686793f,\
+1.074286510426218699266f,0.1553189729796884688273f,0.8413108822720302137910f,\
+0.3462739066818524835689f,0.3926238690106399475965f,0.3256804935966552405624f,\
+0.1633497671324356526057f,1.0010270500405602511762f,1.115022351982163151263f,\
+0.7899569005544465616353f,0.2603865455411881191239f,0.5183255731419573741903f,\
+0.7736654652779521024186f,0.7045488355155032911270f,0.99239017570392618062f,\
+0.8571418992433421646382f,0.6471261632164159172120f,0.6653365916658987577748f,\
+0.4179492416945764787783f,0.332966594116362202271f,0.8071129279142643664358f,\
+0.6917895244691119049918f,0.6612409505512693019824f,0.8506578773411223037826f,\
+0.4212670370210502279740f,0.7142246190696375229834f,0.5650468142706680518828f,\
+0.2457619298195089230230f,0.4999304697490009052885f,0.9146990697266257352993f,\
+0.6632530384013611834959f,0.5254071357713419043733f,0.8979087718767884140902f,\
+0.3295715941858761155459f,0.7411311982358101957402f,0.0964650394595463894776f,\
+0.5756260203046842383046f,0.9308880528862794045963f,1.2271094550000687384284f,\
+0.6789423000457328605251f,0.1649198200195263752654f,1.1279258179884905644030f,\
+0.3999539922775662836862f,0.6338241429246500580064f,0.1223148225900566599123f,\
+0.9023144865193905017620f,0.0330081109061416202999f,0.3767477211449618557104f,\
+0.3412118905344592723061f,0.5930700069420078435201f,0.1017393430189639513817f,\
+0.0308061153410014963716f,0.4886538358989525598908f,0.3559707023880692156048f,\
+0.4308223854061962176942f,0.3514869377238818426434f,0.0799867738322445898103f,\
+0.8173018105145738454453f,0.2037338143062503714731f,1.220430983869785990237f,\
+0.3406746275228044185113f,0.0004150259547877954485f,0.0971888856349881896657f,\
+0.4757842207231965381276f,0.4040809859598182285367f,0.2820450997896822298294f,\
+0.2811152693325764118093f,0.9590128703774639662427f,0.5354093557700149164091f,\
+0.5019368627578308927895f,0.8117140104249528365088f,0.4534830656186849551226f,\
+1.1783423931120406980000f,0.1434370411700725822524f,0.2934216038065708409555f,\
+0.1779829127631718521663f,0.0720832823745556211525f,0.9611918663155849529289f,\
+0.7759794971968927423944f,0.4215038017355943744668f,0.8045968908805133379403f,\
+0.1352257439826550500239f,0.0966259862726158991197f,0.9423768067086430999524f,\
+0.4303839309127981405112f,1.027158469056514755735f,0.0309063123957022088673f,\
+0.1427581856076631239283f,0.5058338353137836751472f,0.5922330662524728506213f,\
+0.2998212988294082781415f,0.4854774490519005447631f,0.2905366689284186176856f,\
+0.732577252768074504985f,0.3467085924376158700966f,0.3404646689762517719480f,\
+0.7192597601031739396049f,0.8895525359433824608146f,0.2563314638119464916599f,\
+0.8145777458167494655683f,0.1728338655335915907685f,0.5887205934900180404057f,\
+0.6014718010439381590260f,0.0675406202372636349507f,0.9510839296787396701660f,\
+1.1598095667324348490013f,0.0309128254938883482994f,0.6857099135308569737290f,\
+0.8512200678266018671891f,0.2729650321569278004219f}
+
+#define CRESULTI {0.4759980266175199981049f,0.4371792356294723624899f,1.0366401767050017479477f,\
+0.6028332456001923578270f,0.2045505325550055208961f,0.1915259687562470281019f,\
+0.3491380267554807237396f,0.8920876814407183719169f,1.0006703458507313353465f,\
+0.8009779429459989996687f,0.6984902194099197325627f,1.0544026495724472258786f,\
+0.9182841727572422785286f,0.0106808422200693302340f,0.9834445059055472171394f,\
+0.3787326350421501008903f,0.2100400056445083096790f,0.4557093767576786413898f,\
+0.7737087506882367460293f,0.0206637462688268880306f,0.2204234493680024276063f,\
+0.6615160486898620240126f,0.7692763584553293787494f,0.6356101396181920160089f,\
+0.0925908774129100275996f,0.7206114133477932170990f,1.0359844944992535609174f,\
+0.2069515918997265613299f,0.4117290503525293243747f,0.5490423106381259188424f,\
+0.4462283131040214456675f,0.1189364264093275003198f,0.5274577925657699672968f,\
+0.5430180765717186330832f,0.1643914008870697718301f,0.8230721066766158999783f,\
+0.1735038050714417801057f,0.1378272158996049767676f,0.1748220246567987745667f,\
+0.3903220669843952550515f,0.936703269190418574830f,0.7166597754518847507299f,\
+0.8900704241537943373075f,0.0891449760436722887791f,0.8771518805722777756273f,\
+0.3706792570421439947381f,0.0111920996603491820776f,0.6215444290094976897976f,\
+0.2530709869257740662896f,0.1319801016143227201383f,0.9046350616526124266414f,\
+0.2884930138703660218447f,0.2251695646636414915864f,0.8648081988694793498240f,\
+0.2840216379380148814526f,0.5504953762822683005496f,0.1359271700042656016993f,\
+0.5693382736493431961478f,0.3322720353016644923017f,0.1721580834994098363477f,\
+0.5135850315563981194345f,0.3474773880755230304196f,0.9431362964718456032287f,\
+1.0340232262721140710227f,0.3402877573217258366789f,0.6401040473330621427550f,\
+0.4069022009136239459437f,0.2439407776749255851723f,0.5378842266979906305835f,\
+0.2570716586141951753852f,0.0904088654517940515376f,0.7403475521247256940782f,\
+0.2047878426979200527924f,0.8489939536581485590716f,0.3473238625280567482001f,\
+1.1411188764290771668897f,0.3051746072580045487932f,0.0407043050782743276450f,\
+0.6033725923116708411698f,0.778737542643346047910f,0.1206535237380119696127f,\
+0.8418336511001852651148f,0.5839585555917582437857f,0.1467518266954731531726f,\
+0.6888901126606848945855f,0.0732090771366951525989f,0.5554652901202962178573f,\
+0.6068461403975041745795f,0.5973804827482247503667f,0.5862495346519734917834f,\
+0.7008734442762630800772f,0.6689719175986947874435f,0.8829098191147302099324f,\
+1.0188712228965588479923f,0.0469681660587412258545f,0.4264494425604897775983f,\
+1.1260897634779567511032f,0.5891751058811135477455f,0.5586811292942333029288f,\
+0.0375737549548666310839f,0.8936786828452066844264f,0.1824421274677656690244f,\
+0.2090978327687162685589f,0.9628255596340984379111f,0.7821471108810679195855f,\
+0.6470050596557553879151f,0.5216627363302938080736f,0.1830177712067865836154f,\
+0.5134143514131775942744f,0.0073119913675850425894f,0.7504222430574429836270f,\
+0.0193983766100578602920f,0.2014128332431188439511f,0.3088455785813677967333f,\
+0.6065483134448432789299f,0.0461172484518394959485f,0.6134456837548584173803f,\
+0.0989331667688019139595f,0.2433781622039619951803f,0.6701373782390742661619f,\
+0.2663685035487164953771f,0.4365368071405912875349f,0.7189236163164304249662f,\
+0.1697526069685433847134f,0.4811811372286406429666f,0.9436115675726329810047f,\
+0.6813279536427474525340f,0.5582673535726633273768f,0.6663831331574520122629f,\
+0.7137987696438253815146f,0.9132123041060544732517f,0.6154027043735471602659f,\
+0.8421707385350217789366f,0.2467394118703030714279f,0.730464243452961903280f,\
+0.4583747264016979627854f,0.0989323235351602520149f,0.4538168380708768601117f,\
+0.6949204434222109316721f,0.4568731305870791792323f,0.9718116503334458533558f,\
+0.9322636874728698064274f,0.1486199865445305412504f,0.2824746711136658094965f,\
+0.238217162606873950059f,0.1603203534786354911290f,1.130704398714823533112f,\
+0.0402833511895827542371f,0.4788366747059483730098f,0.6354755115001236021044f,\
+0.3566529249056448747091f,0.3017948657011057522759f,0.0413466935121344983384f,\
+0.46096369056612357f,0.5052181131344314346521f,0.3479618653266752237308f,\
+0.2285599720872606155364f,0.462725396526868226754f,0.3406579403750831791520f,\
+0.2835867580422753442271f,0.2238269615848648141920f,0.0477728736811990767341f,\
+0.6329115684248395323763f,0.3924052442709091148565f,0.4301664447715317640686f,\
+0.1563039559206648165812f,0.8717772653208039068673f,0.544280842419675670030f,\
+0.3964232571280063566199f,0.9317498908981691752018f,0.0927647199866874355711f,\
+0.239471404370552171104f,0.6064908073717841796579f,0.5504808053886728336224f,\
+0.0526899922619719976447f,0.4312873750429307428966f,0.4329527886793243518504f,\
+0.0278317754230633894463f,0.8642909834572990446233f,0.1923982024967207382638f,\
+0.9846585214795218199413f,0.3418444780294159768275f,0.9720887284222768931485f,\
+0.3044849414953779143112f,0.2763773261322472474255f,0.9320336608375792142311f,\
+0.4523656548286881795562f,0.3324058771805019629753f,0.6596413052835798929152f,\
+0.2842028663251400799616f,0.3229125187951548126009f,1.0425270197833373941876f,\
+0.4773378821453879150560f,0.3476356752155591589570f,0.8551943809979846156111f,\
+0.7664315470559724952082f,0.3488628182805697530711f,0.7453969031814248191736f,\
+0.8607289142164601392082f,0.5322582746397167552388f}
+
+
+void ssinsTest() {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=ssins(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-6);
+ }
+}
+
+void csinsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=csins(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void ssinaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ j=1;
+ ssina(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void csinaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ csina(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testSin() {
+ printf("\n>>>> Float Sine Tests\n");
+ ssinsTest();
+ csinsTest();
+ ssinaTest();
+ csinaTest();
+ return 0;
+}
+
+int main(void) {
+ assert(testSin() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/testSin.h b/2.3-1/src/c/elementaryFunctions/sin/testSin.h
new file mode 100644
index 00000000..d443985f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/testSin.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTSIN_H_
+#define _TESTSIN_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "sin.h"
+#include "constant.h"
+
+void ssinsTest(void);
+
+void dsinsTest(void);
+
+void csinsTest(void);
+
+void zsinsTest(void);
+
+void ssinaTest(void);
+
+void dsinaTest(void);
+
+void csinaTest(void);
+
+void zsinaTest(void);
+
+int testSin(void);
+
+#endif /* !_TESTSIN_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/sin/u16sina.c b/2.3-1/src/c/elementaryFunctions/sin/u16sina.c
new file mode 100644
index 00000000..03054c20
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/u16sina.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sin.h"
+
+void u16sina(uint16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16sins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/u16sins.c b/2.3-1/src/c/elementaryFunctions/sin/u16sins.c
new file mode 100644
index 00000000..651b8e1a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/u16sins.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+
+float u16sins(uint16 x) {
+ return (sin((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/u8sina.c b/2.3-1/src/c/elementaryFunctions/sin/u8sina.c
new file mode 100644
index 00000000..271d6451
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/u8sina.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sin.h"
+
+void u8sina(uint8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8sins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/u8sins.c b/2.3-1/src/c/elementaryFunctions/sin/u8sins.c
new file mode 100644
index 00000000..f7c982f2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/u8sins.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sin.h"
+
+float u8sins(uint8 x) {
+ return (sin((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/zsina.c b/2.3-1/src/c/elementaryFunctions/sin/zsina.c
new file mode 100644
index 00000000..ed417ea8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/zsina.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+
+void zsina(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zsins(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sin/zsins.c b/2.3-1/src/c/elementaryFunctions/sin/zsins.c
new file mode 100644
index 00000000..163cfcc9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sin/zsins.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sin.h"
+#include "cos.h"
+#include "sinh.h"
+#include "cosh.h"
+
+doubleComplex zsins(doubleComplex z) {
+ double real = zreals(z);
+ double imag = zimags(z);
+
+ return(DoubleComplex(dsins(real) * dcoshs(imag), dcoss(real) * dsinhs(imag)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/Makefile.am b/2.3-1/src/c/elementaryFunctions/sinh/Makefile.am
new file mode 100644
index 00000000..edcba921
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/Makefile.am
@@ -0,0 +1,68 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSinh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSinh.la
+
+libSinh_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = ssinhs.c \
+ dsinhs.c \
+ csinhs.c \
+ zsinhs.c \
+ ssinha.c \
+ dsinha.c \
+ csinha.c \
+ zsinha.c
+
+HEAD = ../includes/sinh.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatSinh testDoubleSinh
+
+TESTS = testFloatSinh testDoubleSinh
+
+#
+# -*- Hyperbolic Sine Tests -*-
+#
+testFloatSinh_SOURCES = testSinh.h testFloatSinh.c
+testFloatSinh_CFLAGS = $(check_INCLUDES)
+testFloatSinh_LDADD = $(check_LDADD)
+
+testDoubleSinh_SOURCES = testSinh.h testDoubleSinh.c
+testDoubleSinh_CFLAGS = $(check_INCLUDES)
+testDoubleSinh_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/Makefile.in b/2.3-1/src/c/elementaryFunctions/sinh/Makefile.in
new file mode 100644
index 00000000..0faaa296
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/Makefile.in
@@ -0,0 +1,808 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatSinh$(EXEEXT) testDoubleSinh$(EXEEXT)
+TESTS = testFloatSinh$(EXEEXT) testDoubleSinh$(EXEEXT)
+subdir = src/c/elementaryFunctions/sinh
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSinh_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libSinh_la-ssinhs.lo libSinh_la-dsinhs.lo \
+ libSinh_la-csinhs.lo libSinh_la-zsinhs.lo libSinh_la-ssinha.lo \
+ libSinh_la-dsinha.lo libSinh_la-csinha.lo libSinh_la-zsinha.lo
+am_libSinh_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libSinh_la_OBJECTS = $(am_libSinh_la_OBJECTS)
+libSinh_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSinh_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleSinh_OBJECTS = testDoubleSinh-testDoubleSinh.$(OBJEXT)
+testDoubleSinh_OBJECTS = $(am_testDoubleSinh_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleSinh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleSinh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleSinh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatSinh_OBJECTS = testFloatSinh-testFloatSinh.$(OBJEXT)
+testFloatSinh_OBJECTS = $(am_testFloatSinh_OBJECTS)
+testFloatSinh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatSinh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatSinh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSinh_la_SOURCES) $(testDoubleSinh_SOURCES) \
+ $(testFloatSinh_SOURCES)
+DIST_SOURCES = $(libSinh_la_SOURCES) $(testDoubleSinh_SOURCES) \
+ $(testFloatSinh_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSinh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSinh.la
+libSinh_la_SOURCES = $(HEAD) $(SRC)
+SRC = ssinhs.c \
+ dsinhs.c \
+ csinhs.c \
+ zsinhs.c \
+ ssinha.c \
+ dsinha.c \
+ csinha.c \
+ zsinha.c
+
+HEAD = ../includes/sinh.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Hyperbolic Sine Tests -*-
+#
+testFloatSinh_SOURCES = testSinh.h testFloatSinh.c
+testFloatSinh_CFLAGS = $(check_INCLUDES)
+testFloatSinh_LDADD = $(check_LDADD)
+testDoubleSinh_SOURCES = testSinh.h testDoubleSinh.c
+testDoubleSinh_CFLAGS = $(check_INCLUDES)
+testDoubleSinh_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/sinh/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/sinh/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSinh.la: $(libSinh_la_OBJECTS) $(libSinh_la_DEPENDENCIES)
+ $(libSinh_la_LINK) -rpath $(pkglibdir) $(libSinh_la_OBJECTS) $(libSinh_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleSinh$(EXEEXT): $(testDoubleSinh_OBJECTS) $(testDoubleSinh_DEPENDENCIES)
+ @rm -f testDoubleSinh$(EXEEXT)
+ $(testDoubleSinh_LINK) $(testDoubleSinh_OBJECTS) $(testDoubleSinh_LDADD) $(LIBS)
+testFloatSinh$(EXEEXT): $(testFloatSinh_OBJECTS) $(testFloatSinh_DEPENDENCIES)
+ @rm -f testFloatSinh$(EXEEXT)
+ $(testFloatSinh_LINK) $(testFloatSinh_OBJECTS) $(testFloatSinh_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-csinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-csinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-dsinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-dsinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-ssinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-ssinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-zsinha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSinh_la-zsinhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleSinh-testDoubleSinh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatSinh-testFloatSinh.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSinh_la-ssinhs.lo: ssinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-ssinhs.lo -MD -MP -MF $(DEPDIR)/libSinh_la-ssinhs.Tpo -c -o libSinh_la-ssinhs.lo `test -f 'ssinhs.c' || echo '$(srcdir)/'`ssinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-ssinhs.Tpo $(DEPDIR)/libSinh_la-ssinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssinhs.c' object='libSinh_la-ssinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-ssinhs.lo `test -f 'ssinhs.c' || echo '$(srcdir)/'`ssinhs.c
+
+libSinh_la-dsinhs.lo: dsinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-dsinhs.lo -MD -MP -MF $(DEPDIR)/libSinh_la-dsinhs.Tpo -c -o libSinh_la-dsinhs.lo `test -f 'dsinhs.c' || echo '$(srcdir)/'`dsinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-dsinhs.Tpo $(DEPDIR)/libSinh_la-dsinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsinhs.c' object='libSinh_la-dsinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-dsinhs.lo `test -f 'dsinhs.c' || echo '$(srcdir)/'`dsinhs.c
+
+libSinh_la-csinhs.lo: csinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-csinhs.lo -MD -MP -MF $(DEPDIR)/libSinh_la-csinhs.Tpo -c -o libSinh_la-csinhs.lo `test -f 'csinhs.c' || echo '$(srcdir)/'`csinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-csinhs.Tpo $(DEPDIR)/libSinh_la-csinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csinhs.c' object='libSinh_la-csinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-csinhs.lo `test -f 'csinhs.c' || echo '$(srcdir)/'`csinhs.c
+
+libSinh_la-zsinhs.lo: zsinhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-zsinhs.lo -MD -MP -MF $(DEPDIR)/libSinh_la-zsinhs.Tpo -c -o libSinh_la-zsinhs.lo `test -f 'zsinhs.c' || echo '$(srcdir)/'`zsinhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-zsinhs.Tpo $(DEPDIR)/libSinh_la-zsinhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsinhs.c' object='libSinh_la-zsinhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-zsinhs.lo `test -f 'zsinhs.c' || echo '$(srcdir)/'`zsinhs.c
+
+libSinh_la-ssinha.lo: ssinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-ssinha.lo -MD -MP -MF $(DEPDIR)/libSinh_la-ssinha.Tpo -c -o libSinh_la-ssinha.lo `test -f 'ssinha.c' || echo '$(srcdir)/'`ssinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-ssinha.Tpo $(DEPDIR)/libSinh_la-ssinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssinha.c' object='libSinh_la-ssinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-ssinha.lo `test -f 'ssinha.c' || echo '$(srcdir)/'`ssinha.c
+
+libSinh_la-dsinha.lo: dsinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-dsinha.lo -MD -MP -MF $(DEPDIR)/libSinh_la-dsinha.Tpo -c -o libSinh_la-dsinha.lo `test -f 'dsinha.c' || echo '$(srcdir)/'`dsinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-dsinha.Tpo $(DEPDIR)/libSinh_la-dsinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsinha.c' object='libSinh_la-dsinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-dsinha.lo `test -f 'dsinha.c' || echo '$(srcdir)/'`dsinha.c
+
+libSinh_la-csinha.lo: csinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-csinha.lo -MD -MP -MF $(DEPDIR)/libSinh_la-csinha.Tpo -c -o libSinh_la-csinha.lo `test -f 'csinha.c' || echo '$(srcdir)/'`csinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-csinha.Tpo $(DEPDIR)/libSinh_la-csinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csinha.c' object='libSinh_la-csinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-csinha.lo `test -f 'csinha.c' || echo '$(srcdir)/'`csinha.c
+
+libSinh_la-zsinha.lo: zsinha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -MT libSinh_la-zsinha.lo -MD -MP -MF $(DEPDIR)/libSinh_la-zsinha.Tpo -c -o libSinh_la-zsinha.lo `test -f 'zsinha.c' || echo '$(srcdir)/'`zsinha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSinh_la-zsinha.Tpo $(DEPDIR)/libSinh_la-zsinha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsinha.c' object='libSinh_la-zsinha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSinh_la_CFLAGS) $(CFLAGS) -c -o libSinh_la-zsinha.lo `test -f 'zsinha.c' || echo '$(srcdir)/'`zsinha.c
+
+testDoubleSinh-testDoubleSinh.o: testDoubleSinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSinh_CFLAGS) $(CFLAGS) -MT testDoubleSinh-testDoubleSinh.o -MD -MP -MF $(DEPDIR)/testDoubleSinh-testDoubleSinh.Tpo -c -o testDoubleSinh-testDoubleSinh.o `test -f 'testDoubleSinh.c' || echo '$(srcdir)/'`testDoubleSinh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSinh-testDoubleSinh.Tpo $(DEPDIR)/testDoubleSinh-testDoubleSinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSinh.c' object='testDoubleSinh-testDoubleSinh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSinh_CFLAGS) $(CFLAGS) -c -o testDoubleSinh-testDoubleSinh.o `test -f 'testDoubleSinh.c' || echo '$(srcdir)/'`testDoubleSinh.c
+
+testDoubleSinh-testDoubleSinh.obj: testDoubleSinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSinh_CFLAGS) $(CFLAGS) -MT testDoubleSinh-testDoubleSinh.obj -MD -MP -MF $(DEPDIR)/testDoubleSinh-testDoubleSinh.Tpo -c -o testDoubleSinh-testDoubleSinh.obj `if test -f 'testDoubleSinh.c'; then $(CYGPATH_W) 'testDoubleSinh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSinh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSinh-testDoubleSinh.Tpo $(DEPDIR)/testDoubleSinh-testDoubleSinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSinh.c' object='testDoubleSinh-testDoubleSinh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSinh_CFLAGS) $(CFLAGS) -c -o testDoubleSinh-testDoubleSinh.obj `if test -f 'testDoubleSinh.c'; then $(CYGPATH_W) 'testDoubleSinh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSinh.c'; fi`
+
+testFloatSinh-testFloatSinh.o: testFloatSinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSinh_CFLAGS) $(CFLAGS) -MT testFloatSinh-testFloatSinh.o -MD -MP -MF $(DEPDIR)/testFloatSinh-testFloatSinh.Tpo -c -o testFloatSinh-testFloatSinh.o `test -f 'testFloatSinh.c' || echo '$(srcdir)/'`testFloatSinh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSinh-testFloatSinh.Tpo $(DEPDIR)/testFloatSinh-testFloatSinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSinh.c' object='testFloatSinh-testFloatSinh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSinh_CFLAGS) $(CFLAGS) -c -o testFloatSinh-testFloatSinh.o `test -f 'testFloatSinh.c' || echo '$(srcdir)/'`testFloatSinh.c
+
+testFloatSinh-testFloatSinh.obj: testFloatSinh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSinh_CFLAGS) $(CFLAGS) -MT testFloatSinh-testFloatSinh.obj -MD -MP -MF $(DEPDIR)/testFloatSinh-testFloatSinh.Tpo -c -o testFloatSinh-testFloatSinh.obj `if test -f 'testFloatSinh.c'; then $(CYGPATH_W) 'testFloatSinh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSinh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSinh-testFloatSinh.Tpo $(DEPDIR)/testFloatSinh-testFloatSinh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSinh.c' object='testFloatSinh-testFloatSinh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSinh_CFLAGS) $(CFLAGS) -c -o testFloatSinh-testFloatSinh.obj `if test -f 'testFloatSinh.c'; then $(CYGPATH_W) 'testFloatSinh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSinh.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/csinha.c b/2.3-1/src/c/elementaryFunctions/sinh/csinha.c
new file mode 100644
index 00000000..fdce6c58
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/csinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+
+void csinha(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = csinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/csinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/csinhs.c
new file mode 100644
index 00000000..d4e7e7d9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/csinhs.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+#include "sin.h"
+
+floatComplex csinhs(floatComplex z) {
+ float real = creals(z);
+ float imag = cimags(z);
+
+ floatComplex result = csins(FloatComplex(-imag, real));
+ return (FloatComplex(cimags(result), -creals(result)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/dsinha.c b/2.3-1/src/c/elementaryFunctions/sinh/dsinha.c
new file mode 100644
index 00000000..df28279f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/dsinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+
+void dsinha(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dsinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/dsinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/dsinhs.c
new file mode 100644
index 00000000..558bea06
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/dsinhs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+
+double dsinhs(double x) {
+ return (sinh(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/i16sinha.c b/2.3-1/src/c/elementaryFunctions/sinh/i16sinha.c
new file mode 100644
index 00000000..71ad70b2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/i16sinha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sinh.h"
+
+void i16sinha(int16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16sinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/i16sinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/i16sinhs.c
new file mode 100644
index 00000000..a7ab3d51
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/i16sinhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sinh.h"
+
+float i16sinhs(int16 x) {
+ return (sinh((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/i8sinha.c b/2.3-1/src/c/elementaryFunctions/sinh/i8sinha.c
new file mode 100644
index 00000000..50025748
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/i8sinha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sinh.h"
+
+void i8sinha(int8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8sinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/i8sinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/i8sinhs.c
new file mode 100644
index 00000000..ddc052aa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/i8sinhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sinh.h"
+
+float i8sinhs(int8 x) {
+ return (sinh((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/ssinha.c b/2.3-1/src/c/elementaryFunctions/sinh/ssinha.c
new file mode 100644
index 00000000..a095dbe2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/ssinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+
+void ssinha(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ssinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/ssinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/ssinhs.c
new file mode 100644
index 00000000..326b5804
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/ssinhs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+
+float ssinhs(float x) {
+ return (sinhf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/testDoubleSinh.c b/2.3-1/src/c/elementaryFunctions/sinh/testDoubleSinh.c
new file mode 100644
index 00000000..d4223852
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/testDoubleSinh.c
@@ -0,0 +1,511 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testSinh.h"
+
+#define SOURCE {0.7062616096809506416321,0.4090520101599395275116,0.3011248558759689331055,\
+0.1880126395262777805328,0.1796709178015589714050,0.2828889950178563594818,\
+0.7232380937784910202026,0.7360379849560558795929,0.1852612206712365150452,\
+0.7703790138475596904755,0.1914967410266399383545,0.7521587223745882511139,\
+0.6205883463844656944275,0.2807604051195085048676,0.2289868686348199844360,\
+0.5049233403988182544708,0.8354099662974476814270,0.8174716415815055370331,\
+0.0030740275979042053223,0.3677616142667829990387,0.8278525872156023979187,\
+0.72754097869619727135,0.5323124285787343978882,0.9267726917751133441925,\
+0.9542504185810685157776,0.3162104780785739421845,0.5789009965956211090088,\
+0.6881225542165338993073,0.3714061146602034568787,0.1705444059334695339203,\
+0.1954363007098436355591,0.978800852317363023758,0.9300233917310833930969,\
+0.5357720064930617809296,0.3947123587131500244141,0.1344871171750128269196,\
+0.7380615202710032463074,0.588114650454372167587,0.9113173168152570724487,\
+0.5682763461954891681671,0.1127616921439766883850,0.9478473584167659282684,\
+0.5237770043313503265381,0.8140139640308916568756,0.1400952627882361412048,\
+0.2763446993194520473480,0.9059953633695840835571,0.1379901585169136524200,\
+0.5603838684037327766419,0.3008610638789832592011,0.4767417535185813904,\
+0.8127435916103422641754,0.1988414181396365165710,0.1107953130267560482025,\
+0.2159351315349340438843,0.6467244853265583515167,0.6597879612818360328674,\
+0.0691898013465106487274,0.9164751060307025909424,0.8635670826770365238190,\
+0.5032854294404387474060,0.1832137755118310451508,0.8403698671609163284302,\
+0.9247214836068451404572,0.6229452537372708320618,0.2773811477236449718475,\
+0.2479109913110733032227,0.3891948559321463108063,0.0436578569933772087097,\
+0.8132526441477239131928,0.7686451207846403121948,0.4041520212776958942413,\
+0.8579940209165215492249,0.6993723283521831035614,0.0828925184905529022217,\
+0.9201254160143435001373,0.5200281282886862754822,0.9351884997449815273285,\
+0.8825624976307153701782,0.2245844271965324878693,0.2153332801535725593567,\
+0.4327089670114219188690,0.5800157263875007629395,0.8876141034997999668121,\
+0.5258982880041003227234,0.859640696551650762558,0.7337234076112508773804,\
+0.7134532411582767963409,0.1087165409699082374573,0.8477638359181582927704,\
+0.6594733335077762603760,0.7916418449021875858307,0.6067967480048537254334,\
+0.4102901122532784938812,0.1958728153258562088013,0.241527963895350694656,\
+0.5113455550745129585266,0.9119556057266891002655,0.0928984880447387695313,\
+0.7438839026726782321930,0.1938720373436808586121,0.4355978979729115962982,\
+0.9922429900616407394409,0.4533818070776760578156,0.8269640663638710975647,\
+0.8889675955288112163544,0.4682085178792476654053,0.3856786251999437808991,\
+0.4124865522608160972595,0.6955242282710969448090,0.0978972557932138442993,\
+0.8728604433126747608185,0.6359515609219670295715,0.4129665228538215160370,\
+0.0294486805796623229980,0.1809961968101561069489,0.7658103061839938163757,\
+0.1232470511458814144135,0.0170737411826848983765,0.8835507561452686786652,\
+0.3164170170202851295471,0.9378212536685168743134,0.3916359134018421173096,\
+0.0844073877669870853424,0.6934146797284483909607,0.4618808380328118801117,\
+0.9355291295796632766724,0.0842495900578796863556,0.5402926551178097724915,\
+0.5613215523771941661835,0.1306025832891464233398,0.5840523042716085910797,\
+0.0048661706969141960144,0.2761953338049352169037,0.7478824090212583541870,\
+0.0194325004704296588898,0.6444276878610253334045,0.2243968318216502666473,\
+0.2478402368724346160889,0.1196091384626924991608,0.1883201440796256065369,\
+0.3393343067727982997894,0.959958622232079505920,0.2847225037403404712677,\
+0.8766820700839161872864,0.2853349032811820507050,0.5103433504700660705566,\
+0.8752629184164106845856,0.5941145820543169975281,0.3945342986844480037689,\
+0.4661326166242361068726,0.0073588271625339984894,0.5170202488079667091370,\
+0.4690007264725863933563,0.6654530800879001617432,0.9476742581464350223541,\
+0.4933638339862227439880,0.2918433747254312038422,0.2016727942973375320435,\
+0.7016656589694321155548,0.8736049132421612739563,0.191055159550160169601,\
+0.5307010114192962646484,0.8889481076039373874664,0.0115523664280772209167,\
+0.4998398735187947750092,0.6700848620384931564331,0.4995208983309566974640,\
+0.1538907447829842567444,0.2571737091057002544403,0.9586529098451137542725,\
+0.6246025026775896549225,0.9371285131201148033142,0.9923511571250855922699,\
+0.3454555813223123550415,0.7558249053545296192169,0.2107181670144200325012,\
+0.9372652801685035228729,0.6767524704337120056152,0.7465373151935636997223,\
+0.4050982249900698661804,0.5101723610423505306244,0.9497965183109045028687,\
+0.0289692510850727558136,0.1634070957079529762268,0.4146909262053668498993,\
+0.0021650679409503936768,0.1810030029155313968658,0.4556188201531767845154,\
+0.1977851442061364650726,0.6053877938538789749146,0.4363054675050079822540,\
+0.8938506888225674629211,0.6104825991205871105194,0.4316215068101882934570,\
+0.2315693595446646213532,0.4675927339121699333191,0.6150764389894902706146,\
+0.8621218334883451461792,0.3846137975342571735382}
+
+#define RESULT {0.7664580028254754928696,0.4205551659468407255105,0.3056963415200024125618,\
+0.1891222676242167166638,0.1806391579088424403921,0.2866772088777344573707,\
+0.7879588923423612722985,0.8043199087726096152551,0.1863227880624591659142,\
+0.8488736885251115804607,0.1926692851046332977116,0.8251135119137460449679,\
+0.6611970121102711539507,0.2844635257838270536723,0.2309932755888478017603,\
+0.5266533298916223904129,0.9360312470542428986420,0.9116099093552539889274,\
+0.0030740324393184245005,0.3761077290387422333851,0.9257063259676088229355,\
+0.7934443680694276412879,0.5578100394371053871723,1.0652568032347091708800,\
+1.1058113484469005438626,0.3215064844139553512648,0.6117813058051149166516,\
+0.7437286582384788902189,0.3800039829530417190284,0.1713723342659267123711,\
+0.1966828051044853253870,1.1427508290431065418602,1.0700119918415624820085,\
+0.5617747940982125154363,0.4050417184145185811595,0.1348928905465842098543,\
+0.8069184166073162245425,0.6226085497916535871354,1.0428015042623968167135,\
+0.599360373550158476164,0.1130008086773218733967,1.0962875524202524424311,\
+0.5480567058218726028684,0.9069365704321199483928,0.1405539802560804574227,\
+0.2798753950272672152977,1.0351270996105206290139,0.1384284939283927651221,\
+0.5901774101693750829156,0.3054205096845967748465,0.4950072868345940513279,\
+0.9052222830609093495724,0.2001543065651501807079,0.1110221320487437962621,\
+0.2176171514122479666575,0.6927590813444466366633,0.7087105942005499370495,\
+0.0692450191279527643706,1.0502673603752690212332,0.9749750092666438217037,\
+0.5248028600685283873162,0.1842404954551666029783,0.9428365029551442066946,\
+1.0622620507764020114649,0.6640243707694319930113,0.2809518213531947417039,\
+0.2504582355084098987952,0.3990949339123049943723,0.0436717270227189244269,\
+0.9059090417535855532805,0.8466005962798425210636,0.4152445147326426222456,\
+0.9672066028315211561051,0.7577960172200091104600,0.0829874792017267076671,\
+1.0555680256611981171488,0.5437855687819154182350,1.0775908909563920446,\
+1.0016820806611792527008,0.2264771318543304656767,0.2170012532427569029725,\
+0.4463391386879682620759,0.6130884787237118604963,1.0088449524118139333240,\
+0.5504769168224112885213,0.9694988006053883999869,0.8013516989017863689782,\
+0.7755389514921953164617,0.1089308262191755055648,0.9530245458199384511744,\
+0.7083249989659490264415,0.8769583844905950442694,0.6447256579530228348673,\
+0.4218986249201953087074,0.1971277014550009420990,0.2438831089846125732557,\
+0.533922660930493120368,1.0437239139050094038907,0.0930321667054502116079,\
+0.8144136536953445748566,0.1950888127224135459858,0.4495046404602288658836,\
+1.1632667385972190743360,0.4690747173387543877965,0.9244959100750387293033,\
+1.0107684876711933164017,0.4855037229984789926007,0.3953114776639800043157,\
+0.4242835646837694318911,0.7529734313215303842526,0.0980537032157421939438,\
+0.9879966883143458389327,0.6796935751591178798137,0.4248049987494686430267,\
+0.0294529372018587365378,0.1819860446417611021808,0.8428897015241260115559,\
+0.1235593052805215308343,0.0170745707299980210847,1.00308135457124825152,\
+0.3217234423590110692359,1.0814650488452381971172,0.4017244052147506683248,\
+0.0845076517232198759499,0.7503344007980436991545,0.4784793780524976836155,\
+1.0780917143422910076112,0.0843492926084187938374,0.5669657003997248256866,\
+0.5912664777040658181662,0.1309741822002446487439,0.6178283036240778125503,\
+0.0048661899017801981890,0.2797202929941594029550,0.8195769639564471908955,\
+0.0194337235170454029898,0.6899668115272159507612,0.2262847895615458237995,\
+0.2503852962589531161441,0.1198945374904236832458,0.1894352321040725928292,\
+0.3458841682539985917799,1.114339839966214773526,0.2885850554536735224076,\
+0.9933761739682215319292,0.2892224999614779745727,0.5327868189334407089675,\
+0.9913768259985344943885,0.6296876098817790756712,0.4048496130982584539915,\
+0.4831971402378967828106,0.0073588935789954878705,0.5403641862154227037962,\
+0.4863845156450118945024,0.7156655787491872366957,1.0960307119322381108617,\
+0.5136236116845008803367,0.2960038943626104313012,0.2030426468819693797130,\
+0.7606754386337204465463,0.9890435019692191964680,0.1922196010078167094370,\
+0.5559656008212838784743,1.0107407789878923853877,0.0115526233874804207247,\
+0.5209147493956211016908,0.72136900661981750993,0.5205551177967873144326,\
+0.1544988804781949887079,0.2600179378248433925691,1.112385813317804839073,\
+0.6660146232231449747729,1.080444939603935505801,1.163432674859314452931,\
+0.3523677837341518959136,0.8298721326257240127333,0.212281022488974985274,\
+1.0806462976206427928361,0.729606491474904528260,0.8178385727082368994445,\
+0.4162692379888194293969,0.5325930826611361412759,1.099181921047706733674,\
+0.0289733031722175932154,0.1641352799703627574068,0.4266791772900341284114,\
+0.0021650696324170431474,0.1819929625387523564051,0.4715467862637556795136,\
+0.1990771937658423751394,0.6430498957811131566231,0.4502805198476966808130,\
+1.0177235844677285925286,0.6491155460121008635710,0.4451485373036410675418,\
+0.2336445425260662012157,0.4848192931203018085640,0.6545992099992568036271,\
+0.9729575479551634265008,0.394166691840286298465}
+
+#define ZSOURCER {0.6045256052166223526001,0.9455216196365654468536,0.4476299257948994636536,\
+0.8624908211641013622284,0.1751048639416694641113,0.2067177616991102695465,\
+0.6848411662504076957703,0.1348653226159512996674,0.0069159921258687973022,\
+0.1496290047653019428253,0.5665438110008835792542,0.4359452719800174236298,\
+0.6547604538500308990479,0.3381605879403650760651,0.4259321158751845359802,\
+0.3060420057736337184906,0.7704779822379350662231,0.7058695447631180286408,\
+0.2373670237138867378235,0.8205849635414779186249,0.6789963841438293457031,\
+0.5250809141434729099274,0.3359806565567851066589,0.8941988362930715084076,\
+0.5461782198399305343628,0.7568633262999355792999,0.0259526828303933143616,\
+0.3250150899402797222138,0.6072143577039241791,0.8756139636971056461334,\
+0.2962085595354437828064,0.4229678637348115444183,0.4243144039064645767212,\
+0.7620028969831764698029,0.3622896494343876838684,0.5658242437057197093964,\
+0.6424440070986747741699,0.7580267959274351596832,0.2531452132388949394226,\
+0.5266989110969007015228,0.2118590380996465682983,0.4779220153577625751495,\
+0.1615962767973542213440,0.9168031658045947551727,0.5461866445839405059815,\
+0.4686870560981333255768,0.7772213732823729515076,0.5871783248148858547211,\
+0.5848031807690858840942,0.3139644009061157703400,0.3204141603782773017883,\
+0.3331634956412017345429,0.2282590121030807495117,0.2750317254103720188141,\
+0.4963629124686121940613,0.7453477247618138790131,0.1155001949518918991089,\
+0.0626524840481579303741,0.0877018878236413002014,0.5507565210573375225067,\
+0.2116370312869548797607,0.8335358710028231143951,0.4045845707878470420837,\
+0.2880227542482316493988,0.1750094983726739883423,0.0051561561413109302521,\
+0.3109287889674305915833,0.6602919283322989940643,0.9722995534539222717285,\
+0.9826813959516584873200,0.0455837054178118705750,0.4096118300221860408783,\
+0.7104403134435415267944,0.3917615194804966449738,0.5571686858311295509338,\
+0.0565565521828830242157,0.1540721096098423004150,0.9109257892705500125885,\
+0.5713340407237410545349,0.3488348922692239284515,0.8972954172641038894653,\
+0.2973396372981369495392,0.1091936426237225532532,0.7626331257633864879608,\
+0.6584706604480743408203,0.6996708759106695652008,0.6756794182583689689636,\
+0.9004421546123921871185,0.6668148916214704513550,0.8518152837641537189484,\
+0.8365677157416939735413,0.1291190306656062602997,0.6095453463494777679443,\
+0.2412315667606890201569,0.4029275467619299888611,0.3019328541122376918793,\
+0.1083198729902505874634,0.8456356939859688282013,0.9417407037690281867981,\
+0.9083450469188392162323,0.1937242373824119567871,0.5318046086467802524567,\
+0.8314437521621584892273,0.4952740012668073177338,0.7465563025325536727905,\
+0.7102393140085041522980,0.5811418974772095680237,0.7035941029898822307587,\
+0.3746570833027362823486,0.3394373343326151371002,0.6322447275742888450623,\
+0.7636191300116479396820,0.6940386760979890823364,0.8735245508141815662384,\
+0.3612738298252224922180,0.7933200257830321788788,0.4830590635538101196289,\
+0.2469964125193655490875,0.5025922833010554313660,0.7430270477198064327240,\
+0.6783937942236661911011,0.4903185223229229450226,0.709806025959551334381,\
+0.3303662906400859355927,0.6815545372664928436279,0.0701365978457033634186,\
+0.4745870968326926231384,0.8091805852018296718597,0.9447045121341943740845,\
+0.5478458073921501636505,0.1216687532141804695129,0.9161847713403403759003,\
+0.3045207932591438293457,0.6502694808878004550934,0.0987624628469347953796,\
+0.8391053467057645320892,0.0328534897416830062866,0.3461971958167850971222,\
+0.2801467711105942726135,0.5500544901005923748016,0.0729318000376224517822,\
+0.0225322381593286991119,0.50267804320901632309,0.3478884599171578884125,\
+0.4298669416457414627075,0.3537984383292496204376,0.0529730813577771186829,\
+0.9533003675751388072968,0.1842019557952880859375,0.958756382111459970474,\
+0.3245136169716715812683,0.0003973259590566158295,0.0972583871334791183472,\
+0.4378789965994656086,0.3634226778522133827210,0.2685119728557765483856,\
+0.2770298384130001068115,0.8854365111328661441803,0.5216628303751349449158,\
+0.4979983693920075893,0.8733724001795053482056,0.4699407932348549365997,\
+0.9364062966778874397278,0.1337622734718024730682,0.2712419554591178894043,\
+0.1766990595497190952301,0.0543269468471407890320,0.8402757882140576839447,\
+0.7507283594459295272827,0.3062269617803394794464,0.9195641661062836647034,\
+0.1318263853900134563446,0.0826364941895008087158,0.8222710476256906986237,\
+0.4441085970029234886169,0.9617503038607537746429,0.0283641982823610305786,\
+0.1431905967183411121368,0.3793597565963864326477,0.6144003230147063732147,\
+0.2128270715475082397461,0.4704488315619528293610,0.2076055286452174186707,\
+0.7435979112051427364349,0.3391801547259092330933,0.2479635034687817096710,\
+0.6721735307946801185608,0.9013197491876780986786,0.2140864841639995574951,\
+0.8460668534971773624420,0.1650043567642569541931,0.4003686285577714443207,\
+0.5522825215011835098267,0.0638249483890831470490,0.6903966935351490974426,\
+0.8547787251882255077362,0.0291904583573341369629,0.5434663915075361728668,\
+0.6236743135377764701843,0.2417052476666867733002}
+
+#define ZSOURCEI {0.5503273960202932357788,0.6906704087741672992706,0.9835249418392777442932,\
+0.8285484607331454753876,0.2062614001333713531494,0.1944643096067011356354,\
+0.4367609983310103416443,0.8090620837174355983734,0.8818644303828477859497,\
+0.7404803228564560413361,0.7542522149160504341126,0.9921960639767348766327,\
+0.9886121451854705810547,0.0113218077458441257477,0.9367801276966929435730,\
+0.3874237253330647945404,0.2886805813759565353394,0.567788839805871248245,\
+0.7295644441619515419006,0.0303032915107905864716,0.2795897088944911956787,\
+0.7047131718136370182037,0.7442112853750586509705,0.8920237845741212368012,\
+0.1081438604742288589478,0.8751525697298347949982,0.9068333031609654426575,\
+0.2166852983646094799042,0.4824190363287925720215,0.7766945236362516880035,\
+0.4510916722938418388367,0.1300636469386518001556,0.5505470838397741317749,\
+0.6936193336732685565949,0.1749099576845765113831,0.8636093880049884319305,\
+0.2150467522442340850830,0.1886725709773600101471,0.1796098565682768821716,\
+0.4374312213622033596039,0.8514516223222017288208,0.7381969136185944080353,\
+0.8102188156917691230774,0.1460137623362243175507,0.8999849110841751098633,\
+0.4043733575381338596344,0.0156995235010981559753,0.6904196902178227901459,\
+0.2990311514586210250855,0.1383218024857342243195,0.8478512773290276527405,\
+0.3007262717001140117645,0.229154746979475021362,0.8078110129572451114655,\
+0.3176332255825400352478,0.6924462593160569667816,0.1364154014736413955689,\
+0.5433279541321098804474,0.3276594849303364753723,0.2006831648759543895721,\
+0.5037304237484931945801,0.4962565028108656406403,0.8996161324903368949890,\
+0.9357709079049527645111,0.3390339072793722152710,0.6029155333526432514191,\
+0.4153500730171799659729,0.3041478390805423259735,0.8489827848970890045166,\
+0.4482063786126673221588,0.0903797810897231101990,0.7382151386700570583344,\
+0.2669597584754228591919,0.8226196658797562122345,0.3985779182985424995422,\
+0.9789295899681746959686,0.3041231036186218261719,0.0663515278138220310211,\
+0.6667758254334330558777,0.7548807277344167232513,0.1922533493489027023315,\
+0.7942791883833706378937,0.5580398896709084510803,0.2016023616306483745575,\
+0.787146832793951034546,0.0955459238030016422272,0.6623697867617011070252,\
+0.864868474658578634262,0.7013061288744211196899,0.8015053984709084033966,\
+0.9135685982182621955872,0.6317234965972602367401,0.9346773549914360046387,\
+0.9157753759063780307770,0.0510348035022616386414,0.4329969524405896663666,\
+0.9721843507140874862671,0.8001508046872913837433,0.8452261472120881080627,\
+0.0610524858348071575165,0.8168097324669361114502,0.2101262793876230716705,\
+0.3055453812703490257263,0.9465212575159966945648,0.9269728232175111770630,\
+0.7737778765149414539337,0.5893978821113705635071,0.2377697187475860118866,\
+0.5269544571638107299805,0.0077543654479086399078,0.8311711428686976432800,\
+0.0268517597578465938568,0.2591186594218015670776,0.4641277943737804889679,\
+0.6098861405625939369202,0.0656952331773936748505,0.6466812007129192352295,\
+0.1018534512259066104889,0.2742705782875418663025,0.8162728524766862392426,\
+0.3357750270515680313110,0.4765891996212303638458,0.8440040023997426033020,\
+0.1785074654035270214081,0.5855625644326210021973,0.8426241897977888584137,\
+0.7058847947046160697937,0.7396617024205625057221,0.9751448985189199447632,\
+0.7606669445522129535675,0.8236690396443009376526,0.8889620001427829265595,\
+0.7960178293287754058838,0.3052428201772272586823,0.6803312664851546287537,\
+0.6412069997750222682953,0.0988248009234666824341,0.4654508423991501331329,\
+0.6714970665052533149719,0.5131103205494582653046,0.8631567060947418212891,\
+0.8328299173153936862946,0.1687975851818919181824,0.2961277081631124019623,\
+0.2591485660523176193237,0.1700844173319637775421,0.9718958893790841102600,\
+0.0695185582153499126434,0.4696230851113796234131,0.9544191421009600162506,\
+0.3679352095350623130798,0.2973918146453797817230,0.0415310803800821304321,\
+0.4892336544580757617950,0.5171590568497776985169,0.3534862431697547435761,\
+0.2354387864470481872559,0.6779259913600981235504,0.3834532154724001884460,\
+0.3174350797198712825775,0.3418120350688695907593,0.0535557498224079608917,\
+0.9285596096888184547424,0.3862650538794696331024,0.4328473098576068878174,\
+0.1581165478564798831940,0.7887120461091399192810,0.7448797873221337795258,\
+0.5185996759682893753052,0.8651678604073822498322,0.1524438308551907539368,\
+0.2392775672487914562225,0.5761575847864151000977,0.7395762302912771701813,\
+0.0583172617480158805847,0.6962534948252141475678,0.4206145536154508590698,\
+0.0281158541329205036163,0.8313249954953789710999,0.2333360086195170879364,\
+0.8865877203643321990967,0.3746785433031618595123,0.87671328987926244736,\
+0.4027077830396592617035,0.2890332732349634170532,0.8538430598564445972443,\
+0.5499771209433674812317,0.5128610017709434032440,0.6321087554097175598145,\
+0.4165538274683058261871,0.3217771751806139945984,0.9717370062135159969330,\
+0.5348322447389364242554,0.3416590173728764057159,0.9565287167206406593323,\
+0.9951003189198672771454,0.3422884084284305572510,0.7870580093003809452057,\
+0.9234123295173048973084,0.5238970420323312282562}
+
+#define ZRESULTR {0.5472322176851935893183,0.8423815144738766580446,0.2563943802472780086887,\
+0.6580149781735437075625,0.172270452907771959294,0.2042689977544929758047,\
+0.6702103597375301813344,0.0933634309412847973597,0.0043966214876582573878,\
+0.1108604362841248136551,0.4353327109259368388194,0.2460210551978029014375,\
+0.3863009441992301673530,0.3446203724316067584788,0.2600144972151141042893,\
+0.2878039319893796466054,0.8138720272443707992593,0.6457782886418844681131,\
+0.1786150863987957249091,0.9154066811177691276313,0.7039465385045338141623,\
+0.4186412388856993738173,0.251831143580886374078,0.6392775639808577770040,\
+0.5703895608242733894,0.5327133470263697434532,0.0159949490007091424393,\
+0.3230326909984754801819,0.5715867388279289862396,0.70743658734176706471,\
+0.2704947225723857706647,0.4320127595486245031253,0.3725662344034775808055,\
+0.6443049465819230547936,0.3646176810862393202761,0.3875469668337525042112,\
+0.6717212085417494371598,0.8179578243363959666468,0.2517417237838881494128,\
+0.4994735839970788071618,0.1406387935502509678454,0.3671229322416942886243,\
+0.1118802149170177451243,1.0395621212598731286647,0.3566561127022580546253,\
+0.4468365274738785863917,0.8577631106167230568005,0.4791678319520160100886,\
+0.5912541631998992075481,0.3160997340804129196457,0.2156306076938400706489,\
+0.3241312167359722828941,0.2242273866635746126796,0.1924748395730505323709,\
+0.4911358423279918450355,0.6282969869096745041404,0.1146817647308075033275,\
+0.0536651752624737465869,0.0831424755428421952130,0.5674049454933377534260,\
+0.1867359129769284864508,0.8208629596874984502009,0.2585362736705908437429,\
+0.1732265992600796333800,0.16589114027651630234,0.0042470718039759334031,\
+0.2890982749320905043078,0.6767719859275036498048,0.7485620199211779901560,\
+1.0351949282063730439774,0.0454133801589929955722,0.3115216746749414067352,\
+0.7443929466921332949170,0.2733866129562390612229,0.5404777583133708596108,\
+0.0315703580162773125850,0.147584010699447737425,1.039942513447497107748,\
+0.4737927564457495854811,0.2592593650600479859847,1.0038035523317359043460,\
+0.2114594061381599998661,0.0928125663229541070232,0.8217516921908377680595,\
+0.4991177362348290791339,0.7547125896791468946390,0.5742746733474036746614,\
+0.6663538162766660111203,0.5480484998281744957183,0.6668472960736752108701,\
+0.5728135406334763368719,0.1044902427136027156518,0.3849616107773408679726,\
+0.1483818586286529961349,0.4133800608325002845511,0.2782513626438464227064,\
+0.0611572839884242727693,0.6618291251618653170397,0.7214555888399967198410,\
+1.0365769046431902999927,0.1334450193993464428566,0.5449721531302730292978,\
+0.8875031186053717879858,0.3014734616304127201580,0.4909287752495701262490,\
+0.5518178196952380210050,0.5107438627596426750088,0.7416305403413676611280,\
+0.3314614008027890745822,0.3459827842193233804480,0.4551032028697677422890,\
+0.8397231818014913029558,0.7260395894674003258729,0.8843138378471343541420,\
+0.3026251045027910646645,0.8772951459166481447127,0.4006929045316259263565,\
+0.2482223780387364797662,0.5044338903508289728705,0.5570690492655497871866,\
+0.6907809922454775097833,0.4533479549350135084929,0.5122634930781091444629,\
+0.3310630379415674395816,0.613016054683563793581,0.0467146352521808638780,\
+0.3748904897125588941975,0.6651387060224456249102,0.6124566220104487035414,\
+0.4169978608497757477380,0.0828821922879106609550,0.6616323773282192233225,\
+0.2163376802382008246006,0.6648529631046872223621,0.0768992913125638027916,\
+0.7541728606139842527867,0.0326990726296657319150,0.3155854015657582611887,\
+0.2222045454294520605565,0.5037531760449395212831,0.0474507678257595696958,\
+0.0151606295675061168715,0.5166679862331013950438,0.3394987264597518761278,\
+0.4284286045731299230610,0.3560134790628905476773,0.0298767286161388812005,\
+1.1017278018047820253855,0.1651905315864863887931,0.6431406060888099629480,\
+0.3081371323272805162752,0.0003798849528566614498,0.0973277933130341499357,\
+0.3989833287694000141244,0.3228967085282569149385,0.2549483000782091224323,\
+0.2728461176861247117209,0.7833569024666595659312,0.5060212064439562063001,\
+0.4929175980688511038430,0.9315180933744126035023,0.4867312349946628091679,\
+0.6465368595829137365882,0.1242768439875277936002,0.2492570609243859591775,\
+0.1754042926970652005458,0.0383062756502238338507,0.6930494891633879328552,\
+0.7150128880873719561251,0.2017103771899077802043,1.0425200734321566908847,\
+0.1284418402888304333587,0.0693747355415850891491,0.6782611829725390117929,\
+0.4580719788105512280119,0.8570372579890597197760,0.0258953949937216834631,\
+0.1436236317560128927795,0.2618257507714434328960,0.6360738131964667196883,\
+0.1355372871482912744412,0.4541408129960864403785,0.1337573051159255954623,\
+0.7489238330244115671164,0.3313805035932426146239,0.1646094396781437041444,\
+0.6171903594464053233182,0.8960982240646825358610,0.1740438285898232018134,\
+0.8693877096502734547201,0.1572467731529608725438,0.2318339325462937250411,\
+0.4996847882291703402125,0.0601767100407825661357,0.4302901718551004339730,\
+0.5241328386970756092467,0.0275009970661485095289,0.4028168044525495261610,\
+0.4010021931852675303176,0.2113305958381946625391}
+
+#define ZRESULTI {0.6214715223992962611632,0.9436786189504819954976,0.9172582471851381535899,\
+1.0284753878837631368981,0.2079498059841204116172,0.1973845021659479948006,\
+0.5261415139330058998723,0.7302311658604533350925,0.7719439236164448159272,\
+0.6822088697503370102737,0.7976066327178688020183,0.9180538587851772014403,\
+1.0207957462450507613028,0.0119750831911820069392,0.879846633700931413102,\
+0.3956357637150365591516,0.3734519291784937355949,0.6773972534299040892947,\
+0.6854109454702602688414,0.0410850121880191737622,0.3420572770093958103743,\
+0.7391907226260076013702,0.7159858470768458715838,1.1108178290074384175767,\
+0.1244362063872984924817,0.9982082241998391225479,0.7878214785460178060106,\
+0.2264493394334471387808,0.552110320407191546010,0.9872379452017052692270,\
+0.4552134557945506365684,0.1414727851379618539518,0.5709593924198277381521,\
+0.8340926447704026802654,0.1855652888756788854163,0.8851645482631337324975,\
+0.2589660662395600887464,0.2440703736645542243355,0.1844003846229365917164,\
+0.4837426621723381336970,0.7691827103731639914130,0.7512840132775820967126,\
+0.7339173856842455823113,0.2110467570718085883463,0.9030907830676864200825,\
+0.4374528982447763447716,0.0206840630038046084660,0.7498395827082200426617,\
+0.3464215069230207055817,0.1447328712349580659424,0.7886833031982384278891,\
+0.312806155477839797907,0.2330978063822336521227,0.7502851663968435058649,\
+0.3515894758711366474557,0.8241207799426445435032,0.1369007991441129890031,\
+0.5180025607419450617286,0.3230663992238576032179,0.2303438195780269093227,\
+0.4935463909681327976387,0.6513439726551492059414,0.8480586102235279089001,\
+0.8386806876018545464646,0.3376822861028858646648,0.5670539014238122899059,\
+0.4231729333084569000256,0.3671714099084233406956,1.13425596729819333497,\
+0.6599735877547936446774,0.0903505740838268234238,0.7302185329365624699705,\
+0.3332210660971928195551,0.7898975683733762132022,0.4499243250096228718959,\
+0.8312282843326663783756,0.303017954499597730322,0.0957670218140728168876,\
+0.7221703011467139887714,0.7273159314358644822463,0.2732920828342843555525,\
+0.7451259889709352934872,0.5326844296662366362583,0.2613476456913891299294,\
+0.8675343198300645708443,0.1197200851202140647889,0.7607940863441885470664,\
+1.090938503691738947765,0.7940557967113777149137,0.9951827798045931317006,\
+1.0852570666616287997641,0.595465988685999203511,0.9585290107353723332295,\
+0.8162216959679288175167,0.0552099482904373911607,0.4388645680780451363567,\
+0.8309698024824113682385,0.9896452984090404747519,1.1051208602025746063902,\
+0.0879648640386297558935,0.7426871822259456523696,0.2387805138959819828415,\
+0.4109188911191957171987,0.9129531289726338094681,1.033237369823349904863,\
+0.8826396237315312642835,0.6523964780046094258381,0.2962811673651402077923,\
+0.538613833971326338990,0.0082053089862361757584,0.8913512641166435601647,\
+0.0350642631947976693,0.3204573641970900332865,0.6295687491907059341045,\
+0.6105613490275437760246,0.0874124111159134270510,0.6742190253215021300548,\
+0.104794765122307897975,0.3057785774947048840211,0.9391488111872891009213,\
+0.4082750199603700225204,0.5150095094925122296559,0.9436041246896892387142,\
+0.1873390728066921528949,0.686076538028982052531,0.7482286603321709472780,\
+0.7231441171996566552593,0.9070157682190420622703,1.2254699773201918056031,\
+0.7954755918374329937137,0.7390808722803764441167,1.1257197223371009364712,\
+0.7479651939595457488252,0.3663340286526505784615,0.6321209550080593153609,\
+0.8213953702909778664676,0.0987172713829019138343,0.4759918803039691614920,\
+0.6467330123916542605755,0.5670425014955073894640,0.7619202005568085356302,\
+0.7400260728625026596106,0.1896730654043395358777,0.3096563558430623364082,\
+0.2803008416090244647734,0.1799702823909465065899,0.8271151236999281231022,\
+0.1034896632231103036359,0.4602495369086131438152,1.2206297477145873209281,\
+0.3787956849306995388282,0.2930275328196350614896,0.0417156660446471733161,\
+0.5157276686593796899416,0.5274236913745330435077,0.3587249786695337894216,\
+0.2422782860407424743165,0.8895205282611465813503,0.4261958074481287384039,\
+0.3516419517981719256028,0.4713702889404160489839,0.0595506543369787033626,\
+1.1782482373185512170011,0.3801066173107530143938,0.4349822461068365009318,\
+0.1599230612164924403285,0.7104933564880103746830,0.9316143186085994454260,\
+0.6420254878605806680980,0.7971748574811535759110,0.2207115251543733114303,\
+0.2390631455930626592110,0.5466671036053578625058,0.9149528397614811181526,\
+0.0641270748267019075062,0.9615389273937551273264,0.4084857821404656030850,\
+0.0284008421665001876966,0.7926291386522584803132,0.2762568577554586624068,\
+0.792535972676840283491,0.407224868689896601914,0.785264393436451157982,\
+0.5053477011274932761964,0.3015786475260285870448,0.7771045707144023095836,\
+0.6452560689270674387785,0.7038409533210520097057,0.6044393344259090250503,\
+0.5582751049083489736091,0.3205680190439157417615,0.8929464541247862374718,\
+0.5894255515487558660936,0.3357333458035489104354,1.0198128299863529200309,\
+1.1643703264707510047771,0.3357866330198117088557,0.8154766229713432679205,\
+0.9578920067258681614320,0.5149424663113579825335}
+
+
+
+void dsinhsTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dsinhs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zsinhsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zsinhs(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dsinhaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dsinha(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-16);
+ }
+}
+
+void zsinhaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+ double mon_testR[9]={1,8,3,2,8,4,3,4,5};
+ double mon_testI[9]={0,0,4,0,-1,0,3,0,0};
+ double mon_resR[9]={1.1752011936438013783857,1490.4788257895500009909,- 6.548120040911003414408,
+ 3.6268604078470190188455,805.30914642173127049318,27.289917197127749659558,
+ - 9.9176210100175374861919,27.289917197127749659558,74.203210577788766499907};
+ double mon_resI[9]={0,0,- 7.6192317203214106058340,
+ 0,- 1254.1949676545177680964,0,
+ 1.4207485419881773491824,0,0};
+ doubleComplex* mon_test;
+ doubleComplex mon_out[9];
+
+mon_test=DoubleComplexMatrix(mon_testR,mon_testI,9);
+ in=DoubleComplexMatrix(inR,inI,200);
+ zsinha(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+ zsinha(mon_test,9,mon_out);
+ for (i=0;i<9;i++){
+ printf("%f + %f*i\n",zreals(mon_out[i]),zimags(mon_out[i]));
+ assert(( (fabs(zreals(mon_out[i])-mon_resR[i]))/(fabs(zreals(mon_out[i]))) )<3e-16);
+ if (zimags(mon_out[i])!=0) assert(( (fabs(zimags(mon_out[i])-mon_resI[i]))/(fabs(zimags(mon_out[i]))) )<3e-16);
+ }
+}
+
+int testSinh() {
+ printf("\n>>>> Double Hyperbolic Sine Tests\n");
+ dsinhsTest();
+ zsinhsTest();
+ dsinhaTest();
+ zsinhaTest();
+ return 0;
+}
+
+int main() {
+ assert(testSinh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/testFloatSinh.c b/2.3-1/src/c/elementaryFunctions/sinh/testFloatSinh.c
new file mode 100644
index 00000000..90cbf188
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/testFloatSinh.c
@@ -0,0 +1,495 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testSinh.h"
+
+#define SOURCE {0.7062616096809506416321f,0.4090520101599395275116f,0.3011248558759689331055f,\
+0.1880126395262777805328f,0.1796709178015589714050f,0.2828889950178563594818f,\
+0.7232380937784910202026f,0.7360379849560558795929f,0.1852612206712365150452f,\
+0.7703790138475596904755f,0.1914967410266399383545f,0.7521587223745882511139f,\
+0.6205883463844656944275f,0.2807604051195085048676f,0.2289868686348199844360f,\
+0.5049233403988182544708f,0.8354099662974476814270f,0.8174716415815055370331f,\
+0.0030740275979042053223f,0.3677616142667829990387f,0.8278525872156023979187f,\
+0.72754097869619727135f,0.5323124285787343978882f,0.9267726917751133441925f,\
+0.9542504185810685157776f,0.3162104780785739421845f,0.5789009965956211090088f,\
+0.6881225542165338993073f,0.3714061146602034568787f,0.1705444059334695339203f,\
+0.1954363007098436355591f,0.978800852317363023758f,0.9300233917310833930969f,\
+0.5357720064930617809296f,0.3947123587131500244141f,0.1344871171750128269196f,\
+0.7380615202710032463074f,0.588114650454372167587f,0.9113173168152570724487f,\
+0.5682763461954891681671f,0.1127616921439766883850f,0.9478473584167659282684f,\
+0.5237770043313503265381f,0.8140139640308916568756f,0.1400952627882361412048f,\
+0.2763446993194520473480f,0.9059953633695840835571f,0.1379901585169136524200f,\
+0.5603838684037327766419f,0.3008610638789832592011f,0.4767417535185813904f,\
+0.8127435916103422641754f,0.1988414181396365165710f,0.1107953130267560482025f,\
+0.2159351315349340438843f,0.6467244853265583515167f,0.6597879612818360328674f,\
+0.0691898013465106487274f,0.9164751060307025909424f,0.8635670826770365238190f,\
+0.5032854294404387474060f,0.1832137755118310451508f,0.8403698671609163284302f,\
+0.9247214836068451404572f,0.6229452537372708320618f,0.2773811477236449718475f,\
+0.2479109913110733032227f,0.3891948559321463108063f,0.0436578569933772087097f,\
+0.8132526441477239131928f,0.7686451207846403121948f,0.4041520212776958942413f,\
+0.8579940209165215492249f,0.6993723283521831035614f,0.0828925184905529022217f,\
+0.9201254160143435001373f,0.5200281282886862754822f,0.9351884997449815273285f,\
+0.8825624976307153701782f,0.2245844271965324878693f,0.2153332801535725593567f,\
+0.4327089670114219188690f,0.5800157263875007629395f,0.8876141034997999668121f,\
+0.5258982880041003227234f,0.859640696551650762558f,0.7337234076112508773804f,\
+0.7134532411582767963409f,0.1087165409699082374573f,0.8477638359181582927704f,\
+0.6594733335077762603760f,0.7916418449021875858307f,0.6067967480048537254334f,\
+0.4102901122532784938812f,0.1958728153258562088013f,0.241527963895350694656f,\
+0.5113455550745129585266f,0.9119556057266891002655f,0.0928984880447387695313f,\
+0.7438839026726782321930f,0.1938720373436808586121f,0.4355978979729115962982f,\
+0.9922429900616407394409f,0.4533818070776760578156f,0.8269640663638710975647f,\
+0.8889675955288112163544f,0.4682085178792476654053f,0.3856786251999437808991f,\
+0.4124865522608160972595f,0.6955242282710969448090f,0.0978972557932138442993f,\
+0.8728604433126747608185f,0.6359515609219670295715f,0.4129665228538215160370f,\
+0.0294486805796623229980f,0.1809961968101561069489f,0.7658103061839938163757f,\
+0.1232470511458814144135f,0.0170737411826848983765f,0.8835507561452686786652f,\
+0.3164170170202851295471f,0.9378212536685168743134f,0.3916359134018421173096f,\
+0.0844073877669870853424f,0.6934146797284483909607f,0.4618808380328118801117f,\
+0.9355291295796632766724f,0.0842495900578796863556f,0.5402926551178097724915f,\
+0.5613215523771941661835f,0.1306025832891464233398f,0.5840523042716085910797f,\
+0.0048661706969141960144f,0.2761953338049352169037f,0.7478824090212583541870f,\
+0.0194325004704296588898f,0.6444276878610253334045f,0.2243968318216502666473f,\
+0.2478402368724346160889f,0.1196091384626924991608f,0.1883201440796256065369f,\
+0.3393343067727982997894f,0.959958622232079505920f,0.2847225037403404712677f,\
+0.8766820700839161872864f,0.2853349032811820507050f,0.5103433504700660705566f,\
+0.8752629184164106845856f,0.5941145820543169975281f,0.3945342986844480037689f,\
+0.4661326166242361068726f,0.0073588271625339984894f,0.5170202488079667091370f,\
+0.4690007264725863933563f,0.6654530800879001617432f,0.9476742581464350223541f,\
+0.4933638339862227439880f,0.2918433747254312038422f,0.2016727942973375320435f,\
+0.7016656589694321155548f,0.8736049132421612739563f,0.191055159550160169601f,\
+0.5307010114192962646484f,0.8889481076039373874664f,0.0115523664280772209167f,\
+0.4998398735187947750092f,0.6700848620384931564331f,0.4995208983309566974640f,\
+0.1538907447829842567444f,0.2571737091057002544403f,0.9586529098451137542725f,\
+0.6246025026775896549225f,0.9371285131201148033142f,0.9923511571250855922699f,\
+0.3454555813223123550415f,0.7558249053545296192169f,0.2107181670144200325012f,\
+0.9372652801685035228729f,0.6767524704337120056152f,0.7465373151935636997223f,\
+0.4050982249900698661804f,0.5101723610423505306244f,0.9497965183109045028687f,\
+0.0289692510850727558136f,0.1634070957079529762268f,0.4146909262053668498993f,\
+0.0021650679409503936768f,0.1810030029155313968658f,0.4556188201531767845154f,\
+0.1977851442061364650726f,0.6053877938538789749146f,0.4363054675050079822540f,\
+0.8938506888225674629211f,0.6104825991205871105194f,0.4316215068101882934570f,\
+0.2315693595446646213532f,0.4675927339121699333191f,0.6150764389894902706146f,\
+0.8621218334883451461792f,0.3846137975342571735382f}
+
+#define RESULT {0.7664580028254754928696f,0.4205551659468407255105f,0.3056963415200024125618f,\
+0.1891222676242167166638f,0.1806391579088424403921f,0.2866772088777344573707f,\
+0.7879588923423612722985f,0.8043199087726096152551f,0.1863227880624591659142f,\
+0.8488736885251115804607f,0.1926692851046332977116f,0.8251135119137460449679f,\
+0.6611970121102711539507f,0.2844635257838270536723f,0.2309932755888478017603f,\
+0.5266533298916223904129f,0.9360312470542428986420f,0.9116099093552539889274f,\
+0.0030740324393184245005f,0.3761077290387422333851f,0.9257063259676088229355f,\
+0.7934443680694276412879f,0.5578100394371053871723f,1.0652568032347091708800f,\
+1.1058113484469005438626f,0.3215064844139553512648f,0.6117813058051149166516f,\
+0.7437286582384788902189f,0.3800039829530417190284f,0.1713723342659267123711f,\
+0.1966828051044853253870f,1.1427508290431065418602f,1.0700119918415624820085f,\
+0.5617747940982125154363f,0.4050417184145185811595f,0.1348928905465842098543f,\
+0.8069184166073162245425f,0.6226085497916535871354f,1.0428015042623968167135f,\
+0.599360373550158476164f,0.1130008086773218733967f,1.0962875524202524424311f,\
+0.5480567058218726028684f,0.9069365704321199483928f,0.1405539802560804574227f,\
+0.2798753950272672152977f,1.0351270996105206290139f,0.1384284939283927651221f,\
+0.5901774101693750829156f,0.3054205096845967748465f,0.4950072868345940513279f,\
+0.9052222830609093495724f,0.2001543065651501807079f,0.1110221320487437962621f,\
+0.2176171514122479666575f,0.6927590813444466366633f,0.7087105942005499370495f,\
+0.0692450191279527643706f,1.0502673603752690212332f,0.9749750092666438217037f,\
+0.5248028600685283873162f,0.1842404954551666029783f,0.9428365029551442066946f,\
+1.0622620507764020114649f,0.6640243707694319930113f,0.2809518213531947417039f,\
+0.2504582355084098987952f,0.3990949339123049943723f,0.0436717270227189244269f,\
+0.9059090417535855532805f,0.8466005962798425210636f,0.4152445147326426222456f,\
+0.9672066028315211561051f,0.7577960172200091104600f,0.0829874792017267076671f,\
+1.0555680256611981171488f,0.5437855687819154182350f,1.0775908909563920446f,\
+1.0016820806611792527008f,0.2264771318543304656767f,0.2170012532427569029725f,\
+0.4463391386879682620759f,0.6130884787237118604963f,1.0088449524118139333240f,\
+0.5504769168224112885213f,0.9694988006053883999869f,0.8013516989017863689782f,\
+0.7755389514921953164617f,0.1089308262191755055648f,0.9530245458199384511744f,\
+0.7083249989659490264415f,0.8769583844905950442694f,0.6447256579530228348673f,\
+0.4218986249201953087074f,0.1971277014550009420990f,0.2438831089846125732557f,\
+0.533922660930493120368f,1.0437239139050094038907f,0.0930321667054502116079f,\
+0.8144136536953445748566f,0.1950888127224135459858f,0.4495046404602288658836f,\
+1.1632667385972190743360f,0.4690747173387543877965f,0.9244959100750387293033f,\
+1.0107684876711933164017f,0.4855037229984789926007f,0.3953114776639800043157f,\
+0.4242835646837694318911f,0.7529734313215303842526f,0.0980537032157421939438f,\
+0.9879966883143458389327f,0.6796935751591178798137f,0.4248049987494686430267f,\
+0.0294529372018587365378f,0.1819860446417611021808f,0.8428897015241260115559f,\
+0.1235593052805215308343f,0.0170745707299980210847f,1.00308135457124825152f,\
+0.3217234423590110692359f,1.0814650488452381971172f,0.4017244052147506683248f,\
+0.0845076517232198759499f,0.7503344007980436991545f,0.4784793780524976836155f,\
+1.0780917143422910076112f,0.0843492926084187938374f,0.5669657003997248256866f,\
+0.5912664777040658181662f,0.1309741822002446487439f,0.6178283036240778125503f,\
+0.0048661899017801981890f,0.2797202929941594029550f,0.8195769639564471908955f,\
+0.0194337235170454029898f,0.6899668115272159507612f,0.2262847895615458237995f,\
+0.2503852962589531161441f,0.1198945374904236832458f,0.1894352321040725928292f,\
+0.3458841682539985917799f,1.114339839966214773526f,0.2885850554536735224076f,\
+0.9933761739682215319292f,0.2892224999614779745727f,0.5327868189334407089675f,\
+0.9913768259985344943885f,0.6296876098817790756712f,0.4048496130982584539915f,\
+0.4831971402378967828106f,0.0073588935789954878705f,0.5403641862154227037962f,\
+0.4863845156450118945024f,0.7156655787491872366957f,1.0960307119322381108617f,\
+0.5136236116845008803367f,0.2960038943626104313012f,0.2030426468819693797130f,\
+0.7606754386337204465463f,0.9890435019692191964680f,0.1922196010078167094370f,\
+0.5559656008212838784743f,1.0107407789878923853877f,0.0115526233874804207247f,\
+0.5209147493956211016908f,0.72136900661981750993f,0.5205551177967873144326f,\
+0.1544988804781949887079f,0.2600179378248433925691f,1.112385813317804839073f,\
+0.6660146232231449747729f,1.080444939603935505801f,1.163432674859314452931f,\
+0.3523677837341518959136f,0.8298721326257240127333f,0.212281022488974985274f,\
+1.0806462976206427928361f,0.729606491474904528260f,0.8178385727082368994445f,\
+0.4162692379888194293969f,0.5325930826611361412759f,1.099181921047706733674f,\
+0.0289733031722175932154f,0.1641352799703627574068f,0.4266791772900341284114f,\
+0.0021650696324170431474f,0.1819929625387523564051f,0.4715467862637556795136f,\
+0.1990771937658423751394f,0.6430498957811131566231f,0.4502805198476966808130f,\
+1.0177235844677285925286f,0.6491155460121008635710f,0.4451485373036410675418f,\
+0.2336445425260662012157f,0.4848192931203018085640f,0.6545992099992568036271f,\
+0.9729575479551634265008f,0.394166691840286298465f}
+
+#define CSOURCER {0.6045256052166223526001f,0.9455216196365654468536f,0.4476299257948994636536f,\
+0.8624908211641013622284f,0.1751048639416694641113f,0.2067177616991102695465f,\
+0.6848411662504076957703f,0.1348653226159512996674f,0.0069159921258687973022f,\
+0.1496290047653019428253f,0.5665438110008835792542f,0.4359452719800174236298f,\
+0.6547604538500308990479f,0.3381605879403650760651f,0.4259321158751845359802f,\
+0.3060420057736337184906f,0.7704779822379350662231f,0.7058695447631180286408f,\
+0.2373670237138867378235f,0.8205849635414779186249f,0.6789963841438293457031f,\
+0.5250809141434729099274f,0.3359806565567851066589f,0.8941988362930715084076f,\
+0.5461782198399305343628f,0.7568633262999355792999f,0.0259526828303933143616f,\
+0.3250150899402797222138f,0.6072143577039241791f,0.8756139636971056461334f,\
+0.2962085595354437828064f,0.4229678637348115444183f,0.4243144039064645767212f,\
+0.7620028969831764698029f,0.3622896494343876838684f,0.5658242437057197093964f,\
+0.6424440070986747741699f,0.7580267959274351596832f,0.2531452132388949394226f,\
+0.5266989110969007015228f,0.2118590380996465682983f,0.4779220153577625751495f,\
+0.1615962767973542213440f,0.9168031658045947551727f,0.5461866445839405059815f,\
+0.4686870560981333255768f,0.7772213732823729515076f,0.5871783248148858547211f,\
+0.5848031807690858840942f,0.3139644009061157703400f,0.3204141603782773017883f,\
+0.3331634956412017345429f,0.2282590121030807495117f,0.2750317254103720188141f,\
+0.4963629124686121940613f,0.7453477247618138790131f,0.1155001949518918991089f,\
+0.0626524840481579303741f,0.0877018878236413002014f,0.5507565210573375225067f,\
+0.2116370312869548797607f,0.8335358710028231143951f,0.4045845707878470420837f,\
+0.2880227542482316493988f,0.1750094983726739883423f,0.0051561561413109302521f,\
+0.3109287889674305915833f,0.6602919283322989940643f,0.9722995534539222717285f,\
+0.9826813959516584873200f,0.0455837054178118705750f,0.4096118300221860408783f,\
+0.7104403134435415267944f,0.3917615194804966449738f,0.5571686858311295509338f,\
+0.0565565521828830242157f,0.1540721096098423004150f,0.9109257892705500125885f,\
+0.5713340407237410545349f,0.3488348922692239284515f,0.8972954172641038894653f,\
+0.2973396372981369495392f,0.1091936426237225532532f,0.7626331257633864879608f,\
+0.6584706604480743408203f,0.6996708759106695652008f,0.6756794182583689689636f,\
+0.9004421546123921871185f,0.6668148916214704513550f,0.8518152837641537189484f,\
+0.8365677157416939735413f,0.1291190306656062602997f,0.6095453463494777679443f,\
+0.2412315667606890201569f,0.4029275467619299888611f,0.3019328541122376918793f,\
+0.1083198729902505874634f,0.8456356939859688282013f,0.9417407037690281867981f,\
+0.9083450469188392162323f,0.1937242373824119567871f,0.5318046086467802524567f,\
+0.8314437521621584892273f,0.4952740012668073177338f,0.7465563025325536727905f,\
+0.7102393140085041522980f,0.5811418974772095680237f,0.7035941029898822307587f,\
+0.3746570833027362823486f,0.3394373343326151371002f,0.6322447275742888450623f,\
+0.7636191300116479396820f,0.6940386760979890823364f,0.8735245508141815662384f,\
+0.3612738298252224922180f,0.7933200257830321788788f,0.4830590635538101196289f,\
+0.2469964125193655490875f,0.5025922833010554313660f,0.7430270477198064327240f,\
+0.6783937942236661911011f,0.4903185223229229450226f,0.709806025959551334381f,\
+0.3303662906400859355927f,0.6815545372664928436279f,0.0701365978457033634186f,\
+0.4745870968326926231384f,0.8091805852018296718597f,0.9447045121341943740845f,\
+0.5478458073921501636505f,0.1216687532141804695129f,0.9161847713403403759003f,\
+0.3045207932591438293457f,0.6502694808878004550934f,0.0987624628469347953796f,\
+0.8391053467057645320892f,0.0328534897416830062866f,0.3461971958167850971222f,\
+0.2801467711105942726135f,0.5500544901005923748016f,0.0729318000376224517822f,\
+0.0225322381593286991119f,0.50267804320901632309f,0.3478884599171578884125f,\
+0.4298669416457414627075f,0.3537984383292496204376f,0.0529730813577771186829f,\
+0.9533003675751388072968f,0.1842019557952880859375f,0.958756382111459970474f,\
+0.3245136169716715812683f,0.0003973259590566158295f,0.0972583871334791183472f,\
+0.4378789965994656086f,0.3634226778522133827210f,0.2685119728557765483856f,\
+0.2770298384130001068115f,0.8854365111328661441803f,0.5216628303751349449158f,\
+0.4979983693920075893f,0.8733724001795053482056f,0.4699407932348549365997f,\
+0.9364062966778874397278f,0.1337622734718024730682f,0.2712419554591178894043f,\
+0.1766990595497190952301f,0.0543269468471407890320f,0.8402757882140576839447f,\
+0.7507283594459295272827f,0.3062269617803394794464f,0.9195641661062836647034f,\
+0.1318263853900134563446f,0.0826364941895008087158f,0.8222710476256906986237f,\
+0.4441085970029234886169f,0.9617503038607537746429f,0.0283641982823610305786f,\
+0.1431905967183411121368f,0.3793597565963864326477f,0.6144003230147063732147f,\
+0.2128270715475082397461f,0.4704488315619528293610f,0.2076055286452174186707f,\
+0.7435979112051427364349f,0.3391801547259092330933f,0.2479635034687817096710f,\
+0.6721735307946801185608f,0.9013197491876780986786f,0.2140864841639995574951f,\
+0.8460668534971773624420f,0.1650043567642569541931f,0.4003686285577714443207f,\
+0.5522825215011835098267f,0.0638249483890831470490f,0.6903966935351490974426f,\
+0.8547787251882255077362f,0.0291904583573341369629f,0.5434663915075361728668f,\
+0.6236743135377764701843f,0.2417052476666867733002f}
+
+#define CSOURCEI {0.5503273960202932357788f,0.6906704087741672992706f,0.9835249418392777442932f,\
+0.8285484607331454753876f,0.2062614001333713531494f,0.1944643096067011356354f,\
+0.4367609983310103416443f,0.8090620837174355983734f,0.8818644303828477859497f,\
+0.7404803228564560413361f,0.7542522149160504341126f,0.9921960639767348766327f,\
+0.9886121451854705810547f,0.0113218077458441257477f,0.9367801276966929435730f,\
+0.3874237253330647945404f,0.2886805813759565353394f,0.567788839805871248245f,\
+0.7295644441619515419006f,0.0303032915107905864716f,0.2795897088944911956787f,\
+0.7047131718136370182037f,0.7442112853750586509705f,0.8920237845741212368012f,\
+0.1081438604742288589478f,0.8751525697298347949982f,0.9068333031609654426575f,\
+0.2166852983646094799042f,0.4824190363287925720215f,0.7766945236362516880035f,\
+0.4510916722938418388367f,0.1300636469386518001556f,0.5505470838397741317749f,\
+0.6936193336732685565949f,0.1749099576845765113831f,0.8636093880049884319305f,\
+0.2150467522442340850830f,0.1886725709773600101471f,0.1796098565682768821716f,\
+0.4374312213622033596039f,0.8514516223222017288208f,0.7381969136185944080353f,\
+0.8102188156917691230774f,0.1460137623362243175507f,0.8999849110841751098633f,\
+0.4043733575381338596344f,0.0156995235010981559753f,0.6904196902178227901459f,\
+0.2990311514586210250855f,0.1383218024857342243195f,0.8478512773290276527405f,\
+0.3007262717001140117645f,0.229154746979475021362f,0.8078110129572451114655f,\
+0.3176332255825400352478f,0.6924462593160569667816f,0.1364154014736413955689f,\
+0.5433279541321098804474f,0.3276594849303364753723f,0.2006831648759543895721f,\
+0.5037304237484931945801f,0.4962565028108656406403f,0.8996161324903368949890f,\
+0.9357709079049527645111f,0.3390339072793722152710f,0.6029155333526432514191f,\
+0.4153500730171799659729f,0.3041478390805423259735f,0.8489827848970890045166f,\
+0.4482063786126673221588f,0.0903797810897231101990f,0.7382151386700570583344f,\
+0.2669597584754228591919f,0.8226196658797562122345f,0.3985779182985424995422f,\
+0.9789295899681746959686f,0.3041231036186218261719f,0.0663515278138220310211f,\
+0.6667758254334330558777f,0.7548807277344167232513f,0.1922533493489027023315f,\
+0.7942791883833706378937f,0.5580398896709084510803f,0.2016023616306483745575f,\
+0.787146832793951034546f,0.0955459238030016422272f,0.6623697867617011070252f,\
+0.864868474658578634262f,0.7013061288744211196899f,0.8015053984709084033966f,\
+0.9135685982182621955872f,0.6317234965972602367401f,0.9346773549914360046387f,\
+0.9157753759063780307770f,0.0510348035022616386414f,0.4329969524405896663666f,\
+0.9721843507140874862671f,0.8001508046872913837433f,0.8452261472120881080627f,\
+0.0610524858348071575165f,0.8168097324669361114502f,0.2101262793876230716705f,\
+0.3055453812703490257263f,0.9465212575159966945648f,0.9269728232175111770630f,\
+0.7737778765149414539337f,0.5893978821113705635071f,0.2377697187475860118866f,\
+0.5269544571638107299805f,0.0077543654479086399078f,0.8311711428686976432800f,\
+0.0268517597578465938568f,0.2591186594218015670776f,0.4641277943737804889679f,\
+0.6098861405625939369202f,0.0656952331773936748505f,0.6466812007129192352295f,\
+0.1018534512259066104889f,0.2742705782875418663025f,0.8162728524766862392426f,\
+0.3357750270515680313110f,0.4765891996212303638458f,0.8440040023997426033020f,\
+0.1785074654035270214081f,0.5855625644326210021973f,0.8426241897977888584137f,\
+0.7058847947046160697937f,0.7396617024205625057221f,0.9751448985189199447632f,\
+0.7606669445522129535675f,0.8236690396443009376526f,0.8889620001427829265595f,\
+0.7960178293287754058838f,0.3052428201772272586823f,0.6803312664851546287537f,\
+0.6412069997750222682953f,0.0988248009234666824341f,0.4654508423991501331329f,\
+0.6714970665052533149719f,0.5131103205494582653046f,0.8631567060947418212891f,\
+0.8328299173153936862946f,0.1687975851818919181824f,0.2961277081631124019623f,\
+0.2591485660523176193237f,0.1700844173319637775421f,0.9718958893790841102600f,\
+0.0695185582153499126434f,0.4696230851113796234131f,0.9544191421009600162506f,\
+0.3679352095350623130798f,0.2973918146453797817230f,0.0415310803800821304321f,\
+0.4892336544580757617950f,0.5171590568497776985169f,0.3534862431697547435761f,\
+0.2354387864470481872559f,0.6779259913600981235504f,0.3834532154724001884460f,\
+0.3174350797198712825775f,0.3418120350688695907593f,0.0535557498224079608917f,\
+0.9285596096888184547424f,0.3862650538794696331024f,0.4328473098576068878174f,\
+0.1581165478564798831940f,0.7887120461091399192810f,0.7448797873221337795258f,\
+0.5185996759682893753052f,0.8651678604073822498322f,0.1524438308551907539368f,\
+0.2392775672487914562225f,0.5761575847864151000977f,0.7395762302912771701813f,\
+0.0583172617480158805847f,0.6962534948252141475678f,0.4206145536154508590698f,\
+0.0281158541329205036163f,0.8313249954953789710999f,0.2333360086195170879364f,\
+0.8865877203643321990967f,0.3746785433031618595123f,0.87671328987926244736f,\
+0.4027077830396592617035f,0.2890332732349634170532f,0.8538430598564445972443f,\
+0.5499771209433674812317f,0.5128610017709434032440f,0.6321087554097175598145f,\
+0.4165538274683058261871f,0.3217771751806139945984f,0.9717370062135159969330f,\
+0.5348322447389364242554f,0.3416590173728764057159f,0.9565287167206406593323f,\
+0.9951003189198672771454f,0.3422884084284305572510f,0.7870580093003809452057f,\
+0.9234123295173048973084f,0.5238970420323312282562f}
+
+#define CRESULTR {0.5472322176851935893183f,0.8423815144738766580446f,0.2563943802472780086887f,\
+0.6580149781735437075625f,0.172270452907771959294f,0.2042689977544929758047f,\
+0.6702103597375301813344f,0.0933634309412847973597f,0.0043966214876582573878f,\
+0.1108604362841248136551f,0.4353327109259368388194f,0.2460210551978029014375f,\
+0.3863009441992301673530f,0.3446203724316067584788f,0.2600144972151141042893f,\
+0.2878039319893796466054f,0.8138720272443707992593f,0.6457782886418844681131f,\
+0.1786150863987957249091f,0.9154066811177691276313f,0.7039465385045338141623f,\
+0.4186412388856993738173f,0.251831143580886374078f,0.6392775639808577770040f,\
+0.5703895608242733894f,0.5327133470263697434532f,0.0159949490007091424393f,\
+0.3230326909984754801819f,0.5715867388279289862396f,0.70743658734176706471f,\
+0.2704947225723857706647f,0.4320127595486245031253f,0.3725662344034775808055f,\
+0.6443049465819230547936f,0.3646176810862393202761f,0.3875469668337525042112f,\
+0.6717212085417494371598f,0.8179578243363959666468f,0.2517417237838881494128f,\
+0.4994735839970788071618f,0.1406387935502509678454f,0.3671229322416942886243f,\
+0.1118802149170177451243f,1.0395621212598731286647f,0.3566561127022580546253f,\
+0.4468365274738785863917f,0.8577631106167230568005f,0.4791678319520160100886f,\
+0.5912541631998992075481f,0.3160997340804129196457f,0.2156306076938400706489f,\
+0.3241312167359722828941f,0.2242273866635746126796f,0.1924748395730505323709f,\
+0.4911358423279918450355f,0.6282969869096745041404f,0.1146817647308075033275f,\
+0.0536651752624737465869f,0.0831424755428421952130f,0.5674049454933377534260f,\
+0.1867359129769284864508f,0.8208629596874984502009f,0.2585362736705908437429f,\
+0.1732265992600796333800f,0.16589114027651630234f,0.0042470718039759334031f,\
+0.2890982749320905043078f,0.6767719859275036498048f,0.7485620199211779901560f,\
+1.0351949282063730439774f,0.0454133801589929955722f,0.3115216746749414067352f,\
+0.7443929466921332949170f,0.2733866129562390612229f,0.5404777583133708596108f,\
+0.0315703580162773125850f,0.147584010699447737425f,1.039942513447497107748f,\
+0.4737927564457495854811f,0.2592593650600479859847f,1.0038035523317359043460f,\
+0.2114594061381599998661f,0.0928125663229541070232f,0.8217516921908377680595f,\
+0.4991177362348290791339f,0.7547125896791468946390f,0.5742746733474036746614f,\
+0.6663538162766660111203f,0.5480484998281744957183f,0.6668472960736752108701f,\
+0.5728135406334763368719f,0.1044902427136027156518f,0.3849616107773408679726f,\
+0.1483818586286529961349f,0.4133800608325002845511f,0.2782513626438464227064f,\
+0.0611572839884242727693f,0.6618291251618653170397f,0.7214555888399967198410f,\
+1.0365769046431902999927f,0.1334450193993464428566f,0.5449721531302730292978f,\
+0.8875031186053717879858f,0.3014734616304127201580f,0.4909287752495701262490f,\
+0.5518178196952380210050f,0.5107438627596426750088f,0.7416305403413676611280f,\
+0.3314614008027890745822f,0.3459827842193233804480f,0.4551032028697677422890f,\
+0.8397231818014913029558f,0.7260395894674003258729f,0.8843138378471343541420f,\
+0.3026251045027910646645f,0.8772951459166481447127f,0.4006929045316259263565f,\
+0.2482223780387364797662f,0.5044338903508289728705f,0.5570690492655497871866f,\
+0.6907809922454775097833f,0.4533479549350135084929f,0.5122634930781091444629f,\
+0.3310630379415674395816f,0.613016054683563793581f,0.0467146352521808638780f,\
+0.3748904897125588941975f,0.6651387060224456249102f,0.6124566220104487035414f,\
+0.4169978608497757477380f,0.0828821922879106609550f,0.6616323773282192233225f,\
+0.2163376802382008246006f,0.6648529631046872223621f,0.0768992913125638027916f,\
+0.7541728606139842527867f,0.0326990726296657319150f,0.3155854015657582611887f,\
+0.2222045454294520605565f,0.5037531760449395212831f,0.0474507678257595696958f,\
+0.0151606295675061168715f,0.5166679862331013950438f,0.3394987264597518761278f,\
+0.4284286045731299230610f,0.3560134790628905476773f,0.0298767286161388812005f,\
+1.1017278018047820253855f,0.1651905315864863887931f,0.6431406060888099629480f,\
+0.3081371323272805162752f,0.0003798849528566614498f,0.0973277933130341499357f,\
+0.3989833287694000141244f,0.3228967085282569149385f,0.2549483000782091224323f,\
+0.2728461176861247117209f,0.7833569024666595659312f,0.5060212064439562063001f,\
+0.4929175980688511038430f,0.9315180933744126035023f,0.4867312349946628091679f,\
+0.6465368595829137365882f,0.1242768439875277936002f,0.2492570609243859591775f,\
+0.1754042926970652005458f,0.0383062756502238338507f,0.6930494891633879328552f,\
+0.7150128880873719561251f,0.2017103771899077802043f,1.0425200734321566908847f,\
+0.1284418402888304333587f,0.0693747355415850891491f,0.6782611829725390117929f,\
+0.4580719788105512280119f,0.8570372579890597197760f,0.0258953949937216834631f,\
+0.1436236317560128927795f,0.2618257507714434328960f,0.6360738131964667196883f,\
+0.1355372871482912744412f,0.4541408129960864403785f,0.1337573051159255954623f,\
+0.7489238330244115671164f,0.3313805035932426146239f,0.1646094396781437041444f,\
+0.6171903594464053233182f,0.8960982240646825358610f,0.1740438285898232018134f,\
+0.8693877096502734547201f,0.1572467731529608725438f,0.2318339325462937250411f,\
+0.4996847882291703402125f,0.0601767100407825661357f,0.4302901718551004339730f,\
+0.5241328386970756092467f,0.0275009970661485095289f,0.4028168044525495261610f,\
+0.4010021931852675303176f,0.2113305958381946625391f}
+
+#define CRESULTI {0.6214715223992962611632f,0.9436786189504819954976f,0.9172582471851381535899f,\
+1.0284753878837631368981f,0.2079498059841204116172f,0.1973845021659479948006f,\
+0.5261415139330058998723f,0.7302311658604533350925f,0.7719439236164448159272f,\
+0.6822088697503370102737f,0.7976066327178688020183f,0.9180538587851772014403f,\
+1.0207957462450507613028f,0.0119750831911820069392f,0.879846633700931413102f,\
+0.3956357637150365591516f,0.3734519291784937355949f,0.6773972534299040892947f,\
+0.6854109454702602688414f,0.0410850121880191737622f,0.3420572770093958103743f,\
+0.7391907226260076013702f,0.7159858470768458715838f,1.1108178290074384175767f,\
+0.1244362063872984924817f,0.9982082241998391225479f,0.7878214785460178060106f,\
+0.2264493394334471387808f,0.552110320407191546010f,0.9872379452017052692270f,\
+0.4552134557945506365684f,0.1414727851379618539518f,0.5709593924198277381521f,\
+0.8340926447704026802654f,0.1855652888756788854163f,0.8851645482631337324975f,\
+0.2589660662395600887464f,0.2440703736645542243355f,0.1844003846229365917164f,\
+0.4837426621723381336970f,0.7691827103731639914130f,0.7512840132775820967126f,\
+0.7339173856842455823113f,0.2110467570718085883463f,0.9030907830676864200825f,\
+0.4374528982447763447716f,0.0206840630038046084660f,0.7498395827082200426617f,\
+0.3464215069230207055817f,0.1447328712349580659424f,0.7886833031982384278891f,\
+0.312806155477839797907f,0.2330978063822336521227f,0.7502851663968435058649f,\
+0.3515894758711366474557f,0.8241207799426445435032f,0.1369007991441129890031f,\
+0.5180025607419450617286f,0.3230663992238576032179f,0.2303438195780269093227f,\
+0.4935463909681327976387f,0.6513439726551492059414f,0.8480586102235279089001f,\
+0.8386806876018545464646f,0.3376822861028858646648f,0.5670539014238122899059f,\
+0.4231729333084569000256f,0.3671714099084233406956f,1.13425596729819333497f,\
+0.6599735877547936446774f,0.0903505740838268234238f,0.7302185329365624699705f,\
+0.3332210660971928195551f,0.7898975683733762132022f,0.4499243250096228718959f,\
+0.8312282843326663783756f,0.303017954499597730322f,0.0957670218140728168876f,\
+0.7221703011467139887714f,0.7273159314358644822463f,0.2732920828342843555525f,\
+0.7451259889709352934872f,0.5326844296662366362583f,0.2613476456913891299294f,\
+0.8675343198300645708443f,0.1197200851202140647889f,0.7607940863441885470664f,\
+1.090938503691738947765f,0.7940557967113777149137f,0.9951827798045931317006f,\
+1.0852570666616287997641f,0.595465988685999203511f,0.9585290107353723332295f,\
+0.8162216959679288175167f,0.0552099482904373911607f,0.4388645680780451363567f,\
+0.8309698024824113682385f,0.9896452984090404747519f,1.1051208602025746063902f,\
+0.0879648640386297558935f,0.7426871822259456523696f,0.2387805138959819828415f,\
+0.4109188911191957171987f,0.9129531289726338094681f,1.033237369823349904863f,\
+0.8826396237315312642835f,0.6523964780046094258381f,0.2962811673651402077923f,\
+0.538613833971326338990f,0.0082053089862361757584f,0.8913512641166435601647f,\
+0.0350642631947976693f,0.3204573641970900332865f,0.6295687491907059341045f,\
+0.6105613490275437760246f,0.0874124111159134270510f,0.6742190253215021300548f,\
+0.104794765122307897975f,0.3057785774947048840211f,0.9391488111872891009213f,\
+0.4082750199603700225204f,0.5150095094925122296559f,0.9436041246896892387142f,\
+0.1873390728066921528949f,0.686076538028982052531f,0.7482286603321709472780f,\
+0.7231441171996566552593f,0.9070157682190420622703f,1.2254699773201918056031f,\
+0.7954755918374329937137f,0.7390808722803764441167f,1.1257197223371009364712f,\
+0.7479651939595457488252f,0.3663340286526505784615f,0.6321209550080593153609f,\
+0.8213953702909778664676f,0.0987172713829019138343f,0.4759918803039691614920f,\
+0.6467330123916542605755f,0.5670425014955073894640f,0.7619202005568085356302f,\
+0.7400260728625026596106f,0.1896730654043395358777f,0.3096563558430623364082f,\
+0.2803008416090244647734f,0.1799702823909465065899f,0.8271151236999281231022f,\
+0.1034896632231103036359f,0.4602495369086131438152f,1.2206297477145873209281f,\
+0.3787956849306995388282f,0.2930275328196350614896f,0.0417156660446471733161f,\
+0.5157276686593796899416f,0.5274236913745330435077f,0.3587249786695337894216f,\
+0.2422782860407424743165f,0.8895205282611465813503f,0.4261958074481287384039f,\
+0.3516419517981719256028f,0.4713702889404160489839f,0.0595506543369787033626f,\
+1.1782482373185512170011f,0.3801066173107530143938f,0.4349822461068365009318f,\
+0.1599230612164924403285f,0.7104933564880103746830f,0.9316143186085994454260f,\
+0.6420254878605806680980f,0.7971748574811535759110f,0.2207115251543733114303f,\
+0.2390631455930626592110f,0.5466671036053578625058f,0.9149528397614811181526f,\
+0.0641270748267019075062f,0.9615389273937551273264f,0.4084857821404656030850f,\
+0.0284008421665001876966f,0.7926291386522584803132f,0.2762568577554586624068f,\
+0.792535972676840283491f,0.407224868689896601914f,0.785264393436451157982f,\
+0.5053477011274932761964f,0.3015786475260285870448f,0.7771045707144023095836f,\
+0.6452560689270674387785f,0.7038409533210520097057f,0.6044393344259090250503f,\
+0.5582751049083489736091f,0.3205680190439157417615f,0.8929464541247862374718f,\
+0.5894255515487558660936f,0.3357333458035489104354f,1.0198128299863529200309f,\
+1.1643703264707510047771f,0.3357866330198117088557f,0.8154766229713432679205f,\
+0.9578920067258681614320f,0.5149424663113579825335f}
+
+
+
+
+void ssinhsTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=ssinhs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-6);
+ }
+}
+
+void csinhsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=csinhs(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void ssinhaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ j=1;
+ ssinha(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void csinhaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ csinha(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testSinh() {
+ printf("\n>>>> Hyperbolic Sine Tests\n");
+ ssinhsTest();
+ csinhsTest();
+ ssinhaTest();
+ csinhaTest();
+ return 0;
+}
+
+int main() {
+ assert(testSinh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/testSinh.h b/2.3-1/src/c/elementaryFunctions/sinh/testSinh.h
new file mode 100644
index 00000000..cdb432eb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/testSinh.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTSINH_H_
+#define _TESTSINH_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "sinh.h"
+#include "constant.h"
+
+void ssinhsTest(void);
+
+void dsinhsTest(void);
+
+void csinhsTest(void);
+
+void zsinhsTest(void);
+
+void ssinhaTest(void);
+
+void dsinhaTest(void);
+
+void csinhaTest(void);
+
+void zsinhaTest(void);
+
+int testSinh(void);
+
+#endif /* !_TESTSINH_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/u16sinha.c b/2.3-1/src/c/elementaryFunctions/sinh/u16sinha.c
new file mode 100644
index 00000000..279ed488
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/u16sinha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sinh.h"
+
+void u16sinha(uint16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16sinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/u16sinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/u16sinhs.c
new file mode 100644
index 00000000..5f828cd7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/u16sinhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sinh.h"
+
+float u16sinhs(uint16 x) {
+ return (sinh((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/u8sinha.c b/2.3-1/src/c/elementaryFunctions/sinh/u8sinha.c
new file mode 100644
index 00000000..66a51e81
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/u8sinha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sinh.h"
+
+void u8sinha(uint8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8sinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/u8sinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/u8sinhs.c
new file mode 100644
index 00000000..9f49d7b6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/u8sinhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "sinh.h"
+
+float u8sinhs(uint8 x) {
+ return (sinh((double)x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/zsinha.c b/2.3-1/src/c/elementaryFunctions/sinh/zsinha.c
new file mode 100644
index 00000000..59d18d47
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/zsinha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+
+void zsinha(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = zsinhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sinh/zsinhs.c b/2.3-1/src/c/elementaryFunctions/sinh/zsinhs.c
new file mode 100644
index 00000000..3ea4e71c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sinh/zsinhs.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sinh.h"
+#include "sin.h"
+
+doubleComplex zsinhs(doubleComplex z) {
+ double real = zreals(z);
+ double imag = zimags(z);
+
+ doubleComplex result = zsins(DoubleComplex(-imag, real));
+ return (DoubleComplex(zimags(result), -zreals(result)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/Makefile.am b/2.3-1/src/c/elementaryFunctions/sqrt/Makefile.am
new file mode 100644
index 00000000..6cde141a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/Makefile.am
@@ -0,0 +1,65 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSqrt_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSqrt.la
+
+libSqrt_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = ssqrts.c \
+ dsqrts.c \
+ csqrts.c \
+ zsqrts.c \
+ ssqrta.c \
+ dsqrta.c \
+ csqrta.c \
+ zsqrta.c
+
+HEAD = ../includes/sqrt.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatSqrt testDoubleSqrt
+
+TESTS = testFloatSqrt testDoubleSqrt
+
+#
+# -*- Square Root Tests -*-
+#
+testFloatSqrt_SOURCES = testSqrt.h testFloatSqrt.c
+testFloatSqrt_CFLAGS = $(check_INCLUDES)
+testFloatSqrt_LDADD = $(check_LDADD)
+
+testDoubleSqrt_SOURCES = testSqrt.h testDoubleSqrt.c
+testDoubleSqrt_CFLAGS = $(check_INCLUDES)
+testDoubleSqrt_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/Makefile.in b/2.3-1/src/c/elementaryFunctions/sqrt/Makefile.in
new file mode 100644
index 00000000..574f1e0a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/Makefile.in
@@ -0,0 +1,800 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatSqrt$(EXEEXT) testDoubleSqrt$(EXEEXT)
+TESTS = testFloatSqrt$(EXEEXT) testDoubleSqrt$(EXEEXT)
+subdir = src/c/elementaryFunctions/sqrt
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSqrt_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libSqrt_la-ssqrts.lo libSqrt_la-dsqrts.lo \
+ libSqrt_la-csqrts.lo libSqrt_la-zsqrts.lo libSqrt_la-ssqrta.lo \
+ libSqrt_la-dsqrta.lo libSqrt_la-csqrta.lo libSqrt_la-zsqrta.lo
+am_libSqrt_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libSqrt_la_OBJECTS = $(am_libSqrt_la_OBJECTS)
+libSqrt_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSqrt_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleSqrt_OBJECTS = testDoubleSqrt-testDoubleSqrt.$(OBJEXT)
+testDoubleSqrt_OBJECTS = $(am_testDoubleSqrt_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleSqrt_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleSqrt_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleSqrt_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatSqrt_OBJECTS = testFloatSqrt-testFloatSqrt.$(OBJEXT)
+testFloatSqrt_OBJECTS = $(am_testFloatSqrt_OBJECTS)
+testFloatSqrt_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatSqrt_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatSqrt_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSqrt_la_SOURCES) $(testDoubleSqrt_SOURCES) \
+ $(testFloatSqrt_SOURCES)
+DIST_SOURCES = $(libSqrt_la_SOURCES) $(testDoubleSqrt_SOURCES) \
+ $(testFloatSqrt_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSqrt_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSqrt.la
+libSqrt_la_SOURCES = $(HEAD) $(SRC)
+SRC = ssqrts.c \
+ dsqrts.c \
+ csqrts.c \
+ zsqrts.c \
+ ssqrta.c \
+ dsqrta.c \
+ csqrta.c \
+ zsqrta.c
+
+HEAD = ../includes/sqrt.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Square Root Tests -*-
+#
+testFloatSqrt_SOURCES = testSqrt.h testFloatSqrt.c
+testFloatSqrt_CFLAGS = $(check_INCLUDES)
+testFloatSqrt_LDADD = $(check_LDADD)
+testDoubleSqrt_SOURCES = testSqrt.h testDoubleSqrt.c
+testDoubleSqrt_CFLAGS = $(check_INCLUDES)
+testDoubleSqrt_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/sqrt/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/sqrt/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSqrt.la: $(libSqrt_la_OBJECTS) $(libSqrt_la_DEPENDENCIES)
+ $(libSqrt_la_LINK) -rpath $(pkglibdir) $(libSqrt_la_OBJECTS) $(libSqrt_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleSqrt$(EXEEXT): $(testDoubleSqrt_OBJECTS) $(testDoubleSqrt_DEPENDENCIES)
+ @rm -f testDoubleSqrt$(EXEEXT)
+ $(testDoubleSqrt_LINK) $(testDoubleSqrt_OBJECTS) $(testDoubleSqrt_LDADD) $(LIBS)
+testFloatSqrt$(EXEEXT): $(testFloatSqrt_OBJECTS) $(testFloatSqrt_DEPENDENCIES)
+ @rm -f testFloatSqrt$(EXEEXT)
+ $(testFloatSqrt_LINK) $(testFloatSqrt_OBJECTS) $(testFloatSqrt_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-csqrta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-csqrts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-dsqrta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-dsqrts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-ssqrta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-ssqrts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-zsqrta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSqrt_la-zsqrts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatSqrt-testFloatSqrt.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSqrt_la-ssqrts.lo: ssqrts.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-ssqrts.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-ssqrts.Tpo -c -o libSqrt_la-ssqrts.lo `test -f 'ssqrts.c' || echo '$(srcdir)/'`ssqrts.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-ssqrts.Tpo $(DEPDIR)/libSqrt_la-ssqrts.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssqrts.c' object='libSqrt_la-ssqrts.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-ssqrts.lo `test -f 'ssqrts.c' || echo '$(srcdir)/'`ssqrts.c
+
+libSqrt_la-dsqrts.lo: dsqrts.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-dsqrts.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-dsqrts.Tpo -c -o libSqrt_la-dsqrts.lo `test -f 'dsqrts.c' || echo '$(srcdir)/'`dsqrts.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-dsqrts.Tpo $(DEPDIR)/libSqrt_la-dsqrts.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsqrts.c' object='libSqrt_la-dsqrts.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-dsqrts.lo `test -f 'dsqrts.c' || echo '$(srcdir)/'`dsqrts.c
+
+libSqrt_la-csqrts.lo: csqrts.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-csqrts.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-csqrts.Tpo -c -o libSqrt_la-csqrts.lo `test -f 'csqrts.c' || echo '$(srcdir)/'`csqrts.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-csqrts.Tpo $(DEPDIR)/libSqrt_la-csqrts.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csqrts.c' object='libSqrt_la-csqrts.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-csqrts.lo `test -f 'csqrts.c' || echo '$(srcdir)/'`csqrts.c
+
+libSqrt_la-zsqrts.lo: zsqrts.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-zsqrts.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-zsqrts.Tpo -c -o libSqrt_la-zsqrts.lo `test -f 'zsqrts.c' || echo '$(srcdir)/'`zsqrts.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-zsqrts.Tpo $(DEPDIR)/libSqrt_la-zsqrts.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsqrts.c' object='libSqrt_la-zsqrts.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-zsqrts.lo `test -f 'zsqrts.c' || echo '$(srcdir)/'`zsqrts.c
+
+libSqrt_la-ssqrta.lo: ssqrta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-ssqrta.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-ssqrta.Tpo -c -o libSqrt_la-ssqrta.lo `test -f 'ssqrta.c' || echo '$(srcdir)/'`ssqrta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-ssqrta.Tpo $(DEPDIR)/libSqrt_la-ssqrta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssqrta.c' object='libSqrt_la-ssqrta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-ssqrta.lo `test -f 'ssqrta.c' || echo '$(srcdir)/'`ssqrta.c
+
+libSqrt_la-dsqrta.lo: dsqrta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-dsqrta.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-dsqrta.Tpo -c -o libSqrt_la-dsqrta.lo `test -f 'dsqrta.c' || echo '$(srcdir)/'`dsqrta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-dsqrta.Tpo $(DEPDIR)/libSqrt_la-dsqrta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsqrta.c' object='libSqrt_la-dsqrta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-dsqrta.lo `test -f 'dsqrta.c' || echo '$(srcdir)/'`dsqrta.c
+
+libSqrt_la-csqrta.lo: csqrta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-csqrta.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-csqrta.Tpo -c -o libSqrt_la-csqrta.lo `test -f 'csqrta.c' || echo '$(srcdir)/'`csqrta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-csqrta.Tpo $(DEPDIR)/libSqrt_la-csqrta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csqrta.c' object='libSqrt_la-csqrta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-csqrta.lo `test -f 'csqrta.c' || echo '$(srcdir)/'`csqrta.c
+
+libSqrt_la-zsqrta.lo: zsqrta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -MT libSqrt_la-zsqrta.lo -MD -MP -MF $(DEPDIR)/libSqrt_la-zsqrta.Tpo -c -o libSqrt_la-zsqrta.lo `test -f 'zsqrta.c' || echo '$(srcdir)/'`zsqrta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSqrt_la-zsqrta.Tpo $(DEPDIR)/libSqrt_la-zsqrta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsqrta.c' object='libSqrt_la-zsqrta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSqrt_la_CFLAGS) $(CFLAGS) -c -o libSqrt_la-zsqrta.lo `test -f 'zsqrta.c' || echo '$(srcdir)/'`zsqrta.c
+
+testDoubleSqrt-testDoubleSqrt.o: testDoubleSqrt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSqrt_CFLAGS) $(CFLAGS) -MT testDoubleSqrt-testDoubleSqrt.o -MD -MP -MF $(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Tpo -c -o testDoubleSqrt-testDoubleSqrt.o `test -f 'testDoubleSqrt.c' || echo '$(srcdir)/'`testDoubleSqrt.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Tpo $(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSqrt.c' object='testDoubleSqrt-testDoubleSqrt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSqrt_CFLAGS) $(CFLAGS) -c -o testDoubleSqrt-testDoubleSqrt.o `test -f 'testDoubleSqrt.c' || echo '$(srcdir)/'`testDoubleSqrt.c
+
+testDoubleSqrt-testDoubleSqrt.obj: testDoubleSqrt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSqrt_CFLAGS) $(CFLAGS) -MT testDoubleSqrt-testDoubleSqrt.obj -MD -MP -MF $(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Tpo -c -o testDoubleSqrt-testDoubleSqrt.obj `if test -f 'testDoubleSqrt.c'; then $(CYGPATH_W) 'testDoubleSqrt.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSqrt.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Tpo $(DEPDIR)/testDoubleSqrt-testDoubleSqrt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSqrt.c' object='testDoubleSqrt-testDoubleSqrt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSqrt_CFLAGS) $(CFLAGS) -c -o testDoubleSqrt-testDoubleSqrt.obj `if test -f 'testDoubleSqrt.c'; then $(CYGPATH_W) 'testDoubleSqrt.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSqrt.c'; fi`
+
+testFloatSqrt-testFloatSqrt.o: testFloatSqrt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSqrt_CFLAGS) $(CFLAGS) -MT testFloatSqrt-testFloatSqrt.o -MD -MP -MF $(DEPDIR)/testFloatSqrt-testFloatSqrt.Tpo -c -o testFloatSqrt-testFloatSqrt.o `test -f 'testFloatSqrt.c' || echo '$(srcdir)/'`testFloatSqrt.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSqrt-testFloatSqrt.Tpo $(DEPDIR)/testFloatSqrt-testFloatSqrt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSqrt.c' object='testFloatSqrt-testFloatSqrt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSqrt_CFLAGS) $(CFLAGS) -c -o testFloatSqrt-testFloatSqrt.o `test -f 'testFloatSqrt.c' || echo '$(srcdir)/'`testFloatSqrt.c
+
+testFloatSqrt-testFloatSqrt.obj: testFloatSqrt.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSqrt_CFLAGS) $(CFLAGS) -MT testFloatSqrt-testFloatSqrt.obj -MD -MP -MF $(DEPDIR)/testFloatSqrt-testFloatSqrt.Tpo -c -o testFloatSqrt-testFloatSqrt.obj `if test -f 'testFloatSqrt.c'; then $(CYGPATH_W) 'testFloatSqrt.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSqrt.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSqrt-testFloatSqrt.Tpo $(DEPDIR)/testFloatSqrt-testFloatSqrt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSqrt.c' object='testFloatSqrt-testFloatSqrt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSqrt_CFLAGS) $(CFLAGS) -c -o testFloatSqrt-testFloatSqrt.obj `if test -f 'testFloatSqrt.c'; then $(CYGPATH_W) 'testFloatSqrt.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSqrt.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/csqrta.c b/2.3-1/src/c/elementaryFunctions/sqrt/csqrta.c
new file mode 100644
index 00000000..fc9d36cd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/csqrta.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sqrt.h"
+
+void csqrta(floatComplex* in, int size, floatComplex* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = csqrts(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/csqrts.c b/2.3-1/src/c/elementaryFunctions/sqrt/csqrts.c
new file mode 100644
index 00000000..a24f9558
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/csqrts.c
@@ -0,0 +1,111 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 "sqrt.h"
+#include "lapack.h"
+#include "abs.h"
+#include "sign.h"
+#include "pythag.h"
+
+#ifdef _MSC_VER
+#include <float.h>
+#define isnan(x) _isnan((double)x)
+#endif
+
+#define _sign(a, b) b >=0 ? a : -a
+
+floatComplex csqrts(floatComplex in) {
+ float RMax = (float) getOverflowThreshold();
+ float BRMin = 2.0f * (float) getUnderflowThreshold();
+
+ float RealIn = creals(in);
+ float ImgIn = cimags(in);
+
+ float RealOut = 0;
+ float ImgOut = 0;
+
+ if(RealIn == 0)
+ {/* pure imaginary case */
+ if(dabss(ImgIn >= BRMin))
+ RealOut = ssqrts(0.5f * sabss(ImgIn));
+ else
+ RealOut = ssqrts(sabss(ImgIn)) * ssqrts(0.5);
+
+ ImgOut = _sign(1, ImgIn) * RealOut;
+ }
+ else if( sabss(RealIn) <= RMax && sabss(ImgIn) <= RMax)
+ {/* standard case : a (not zero) and b are finite */
+ float Temp = ssqrts(2.0f * (sabss(RealIn) + spythags(RealIn, ImgIn)));
+ /* overflow test */
+ if(Temp > RMax)
+ {/* handle (spurious) overflow by scaling a and b */
+ float RealTemp = RealIn / 16.0f;
+ float ImgTemp = ImgIn / 16.0f;
+ Temp = ssqrts(2.0f * (sabss(RealIn) + spythags(RealIn, ImgTemp)));
+ if(RealTemp >= 0)
+ {
+ RealOut = 2 * Temp;
+ ImgOut = 4 * ImgTemp / Temp;
+ }
+ else
+ {
+ RealOut = 4 * sabss(ImgIn) / Temp;
+ ImgOut = _sign(2, ImgIn) * Temp;
+ }
+ }
+ else if(RealIn >= 0) /* classic switch to get the stable formulas */
+ {
+ RealOut = 0.5f * Temp;
+ ImgOut = ImgIn / Temp;
+ }
+ else
+ {
+ RealOut = sabss(ImgIn) / Temp;
+ ImgOut = (_sign(0.5f, ImgIn)) * Temp;
+ }
+ }
+ else
+ {
+ /*
+ //Here we treat the special cases where a and b are +- 00 or NaN.
+ //The following is the treatment recommended by the C99 standard
+ //with the simplification of returning NaN + i NaN if the
+ //the real part or the imaginary part is NaN (C99 recommends
+ //something more complicated)
+ */
+
+ if(isnan(RealIn) == 1 || isnan(ImgIn) == 1)
+ {/* got NaN + i NaN */
+ RealOut = RealIn + ImgIn;
+ ImgOut = RealOut;
+ }
+ else if( dabss(ImgIn) > RMax)
+ {/* case a +- i oo -> result must be +oo +- i oo for all a (finite or not) */
+ RealOut = sabss(ImgIn);
+ ImgOut = ImgIn;
+ }
+ else if(RealIn < -RMax)
+ {/* here a is -Inf and b is finite */
+ RealOut = 0;
+ ImgOut = _sign(1, ImgIn) * sabss(RealIn);
+ }
+ else
+ {/* here a is +Inf and b is finite */
+ RealOut = RealIn;
+ ImgOut = 0;
+ }
+ }
+
+ return FloatComplex(RealOut, ImgOut);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/dsqrta.c b/2.3-1/src/c/elementaryFunctions/sqrt/dsqrta.c
new file mode 100644
index 00000000..b87800f4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/dsqrta.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sqrt.h"
+
+void dsqrta(double* in, int size, double* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = dsqrts(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/dsqrts.c b/2.3-1/src/c/elementaryFunctions/sqrt/dsqrts.c
new file mode 100644
index 00000000..8e664495
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/dsqrts.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sqrt.h"
+
+double dsqrts(double in){
+ return sqrt(in);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/ssqrta.c b/2.3-1/src/c/elementaryFunctions/sqrt/ssqrta.c
new file mode 100644
index 00000000..9c379751
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/ssqrta.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sqrt.h"
+
+void ssqrta(float* in, int size, float* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = ssqrts(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/ssqrts.c b/2.3-1/src/c/elementaryFunctions/sqrt/ssqrts.c
new file mode 100644
index 00000000..541fea2f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/ssqrts.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sqrt.h"
+
+float ssqrts(float in) {
+ return (float) sqrt((float) in);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/testDoubleSqrt.c b/2.3-1/src/c/elementaryFunctions/sqrt/testDoubleSqrt.c
new file mode 100644
index 00000000..08b74137
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/testDoubleSqrt.c
@@ -0,0 +1,497 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testSqrt.h"
+
+#define SOURCE {0.7062616096809506416321,0.4090520101599395275116,0.3011248558759689331055,\
+0.1880126395262777805328,0.1796709178015589714050,0.2828889950178563594818,\
+0.7232380937784910202026,0.7360379849560558795929,0.1852612206712365150452,\
+0.7703790138475596904755,0.1914967410266399383545,0.7521587223745882511139,\
+0.6205883463844656944275,0.2807604051195085048676,0.2289868686348199844360,\
+0.5049233403988182544708,0.8354099662974476814270,0.8174716415815055370331,\
+0.0030740275979042053223,0.3677616142667829990387,0.8278525872156023979187,\
+0.72754097869619727135,0.5323124285787343978882,0.9267726917751133441925,\
+0.9542504185810685157776,0.3162104780785739421845,0.5789009965956211090088,\
+0.6881225542165338993073,0.3714061146602034568787,0.1705444059334695339203,\
+0.1954363007098436355591,0.978800852317363023758,0.9300233917310833930969,\
+0.5357720064930617809296,0.3947123587131500244141,0.1344871171750128269196,\
+0.7380615202710032463074,0.588114650454372167587,0.9113173168152570724487,\
+0.5682763461954891681671,0.1127616921439766883850,0.9478473584167659282684,\
+0.5237770043313503265381,0.8140139640308916568756,0.1400952627882361412048,\
+0.2763446993194520473480,0.9059953633695840835571,0.1379901585169136524200,\
+0.5603838684037327766419,0.3008610638789832592011,0.4767417535185813904,\
+0.8127435916103422641754,0.1988414181396365165710,0.1107953130267560482025,\
+0.2159351315349340438843,0.6467244853265583515167,0.6597879612818360328674,\
+0.0691898013465106487274,0.9164751060307025909424,0.8635670826770365238190,\
+0.5032854294404387474060,0.1832137755118310451508,0.8403698671609163284302,\
+0.9247214836068451404572,0.6229452537372708320618,0.2773811477236449718475,\
+0.2479109913110733032227,0.3891948559321463108063,0.0436578569933772087097,\
+0.8132526441477239131928,0.7686451207846403121948,0.4041520212776958942413,\
+0.8579940209165215492249,0.6993723283521831035614,0.0828925184905529022217,\
+0.9201254160143435001373,0.5200281282886862754822,0.9351884997449815273285,\
+0.8825624976307153701782,0.2245844271965324878693,0.2153332801535725593567,\
+0.4327089670114219188690,0.5800157263875007629395,0.8876141034997999668121,\
+0.5258982880041003227234,0.859640696551650762558,0.7337234076112508773804,\
+0.7134532411582767963409,0.1087165409699082374573,0.8477638359181582927704,\
+0.6594733335077762603760,0.7916418449021875858307,0.6067967480048537254334,\
+0.4102901122532784938812,0.1958728153258562088013,0.241527963895350694656,\
+0.5113455550745129585266,0.9119556057266891002655,0.0928984880447387695313,\
+0.7438839026726782321930,0.1938720373436808586121,0.4355978979729115962982,\
+0.9922429900616407394409,0.4533818070776760578156,0.8269640663638710975647,\
+0.8889675955288112163544,0.4682085178792476654053,0.3856786251999437808991,\
+0.4124865522608160972595,0.6955242282710969448090,0.0978972557932138442993,\
+0.8728604433126747608185,0.6359515609219670295715,0.4129665228538215160370,\
+0.0294486805796623229980,0.1809961968101561069489,0.7658103061839938163757,\
+0.1232470511458814144135,0.0170737411826848983765,0.8835507561452686786652,\
+0.3164170170202851295471,0.9378212536685168743134,0.3916359134018421173096,\
+0.0844073877669870853424,0.6934146797284483909607,0.4618808380328118801117,\
+0.9355291295796632766724,0.0842495900578796863556,0.5402926551178097724915,\
+0.5613215523771941661835,0.1306025832891464233398,0.5840523042716085910797,\
+0.0048661706969141960144,0.2761953338049352169037,0.7478824090212583541870,\
+0.0194325004704296588898,0.6444276878610253334045,0.2243968318216502666473,\
+0.2478402368724346160889,0.1196091384626924991608,0.1883201440796256065369,\
+0.3393343067727982997894,0.959958622232079505920,0.2847225037403404712677,\
+0.8766820700839161872864,0.2853349032811820507050,0.5103433504700660705566,\
+0.8752629184164106845856,0.5941145820543169975281,0.3945342986844480037689,\
+0.4661326166242361068726,0.0073588271625339984894,0.5170202488079667091370,\
+0.4690007264725863933563,0.6654530800879001617432,0.9476742581464350223541,\
+0.4933638339862227439880,0.2918433747254312038422,0.2016727942973375320435,\
+0.7016656589694321155548,0.8736049132421612739563,0.191055159550160169601,\
+0.5307010114192962646484,0.8889481076039373874664,0.0115523664280772209167,\
+0.4998398735187947750092,0.6700848620384931564331,0.4995208983309566974640,\
+0.1538907447829842567444,0.2571737091057002544403,0.9586529098451137542725,\
+0.6246025026775896549225,0.9371285131201148033142,0.9923511571250855922699,\
+0.3454555813223123550415,0.7558249053545296192169,0.2107181670144200325012,\
+0.9372652801685035228729,0.6767524704337120056152,0.7465373151935636997223,\
+0.4050982249900698661804,0.5101723610423505306244,0.9497965183109045028687,\
+0.0289692510850727558136,0.1634070957079529762268,0.4146909262053668498993,\
+0.0021650679409503936768,0.1810030029155313968658,0.4556188201531767845154,\
+0.1977851442061364650726,0.6053877938538789749146,0.4363054675050079822540,\
+0.8938506888225674629211,0.6104825991205871105194,0.4316215068101882934570,\
+0.2315693595446646213532,0.4675927339121699333191,0.6150764389894902706146,\
+0.8621218334883451461792,0.3846137975342571735382}
+
+#define RESULT {0.8403937230137732417035,0.6395717396507912821946,0.5487484449872901404177,\
+0.4336042429754092819572,0.4238760641998542411102,0.5318731004834296172135,\
+0.8504340619815806689985,0.8579265615168094605281,0.4304198190967006287799,\
+0.8777123753528599525708,0.4376034060957934568314,0.8672708471836166888025,\
+0.7877742991393319460514,0.5298682903510159025728,0.4785257241098120895018,\
+0.7105795806233234923610,0.9140076401745489409478,0.9041413836239913237591,\
+0.0554439139843518405404,0.6064335200718896645711,0.9098640487543193655640,\
+0.8529601272604701023283,0.7295974428263399813588,0.9626903405431641580492,\
+0.9768574197809363202083,0.5623259535879292503324,0.7608554373832265849131,\
+0.8295315269575556094139,0.6094309761246169410143,0.4129702240276767466476,\
+0.4420817805676271472493,0.9893436472315183527471,0.9643772040706288795064,\
+0.7319644844478875311822,0.6282613777029032453569,0.3667248521371476721598,\
+0.8591050694012946076228,0.7668863347683098075081,0.9546294133407251525370,\
+0.7538410616273759634609,0.3358000776414095667199,0.9735745263803721183393,\
+0.7237243980489743711004,0.9022272241685526106281,0.3742930172849022740778,\
+0.5256849810670379818944,0.9518378871265757990017,0.3714702659930047001780,\
+0.7485879162822044463610,0.5485080344707662369785,0.6904648821761910637562,\
+0.9015229290541324491670,0.4459163802100529760963,0.3328592991441819970433,\
+0.4646882089476060961886,0.8041918212258555298533,0.8122733291705668268179,\
+0.2630395433133783655855,0.9573270632499127907877,0.9292831014696417701870,\
+0.709426126838051174239,0.4280347830630485406189,0.9167168958631211062027,\
+0.9616243984045148573969,0.7892688095555726590646,0.5266698659726460896025,\
+0.4979066090253003729060,0.6238548356245596782088,0.2089446266200143398351,\
+0.9018052140832431007311,0.8767240847522328461849,0.6357295189604584839671,\
+0.9262796666863207795117,0.8362848368541564436640,0.2879106085064475628599,\
+0.9592316800514584240744,0.7211297582881227574703,0.9670514462762472840396,\
+0.9394479749463060525017,0.4739033943711866703197,0.4640401708403837921502,\
+0.6578061773892229791017,0.7615876353956259059430,0.9421327419741869491077,\
+0.7251884499935863370723,0.9271681058749005055475,0.8565765626091171869305,\
+0.8446616134040167978014,0.3297219146036675652134,0.9207409168263124277232,\
+0.8120796349544644465723,0.8897425722658142133170,0.7789715964044220397611,\
+0.6405389232929397103078,0.4425752086661161044390,0.4914549459465747394127,\
+0.7150842992784227636349,0.9549636672285962690765,0.3047925327903207581848,\
+0.8624870449303445596456,0.4403090248265198458633,0.6599984075533149585624,\
+0.9961139443164325202318,0.6733363253810654702747,0.9093756464541323802919,\
+0.9428507811572365282515,0.6842576399860272884368,0.6210302933029465677350,\
+0.6422511597971747310254,0.8339809519833752959883,0.3128853716510470728274,\
+0.9342700055726260721656,0.7974657114396624946195,0.6426247138523553115164,\
+0.1716061787339323019275,0.4254364779966053888849,0.8751058828416100610070,\
+0.351065593793925379007,0.1306665266343484677059,0.939973806095291464224,\
+0.5625095706032787745698,0.9684117170235585492222,0.6258082081611283653544,\
+0.2905294955197958439719,0.8327152452840337337747,0.6796181560500071938691,\
+0.967227547984270019654,0.2902577993058579330921,0.7350460224488054583603,\
+0.7492139563417076209,0.3613897941131520297198,0.7642331478492728757956,\
+0.0697579436115643852778,0.5255428943530063845557,0.8648019478593109710118,\
+0.1394005038385071892915,0.8027625351628122629677,0.4737054272664081300270,\
+0.4978355520374520559734,0.3458455413370143394225,0.4339586893698818559351,\
+0.5825240825689512735863,0.9797747813819661644175,0.5335939502471336304268,\
+0.9363130192857067601864,0.5341674861700046461621,0.7143831958200487219912,\
+0.9355548719430681892106,0.7707882861423861475814,0.628119653158892954359,\
+0.6827390545620164452600,0.0857836066071717417980,0.7190412010503756112811,\
+0.6848362771294949080669,0.8157530754388242488773,0.9734856229788064752029,\
+0.7023986289751872336140,0.5402252999679219014340,0.4490799419895499244859,\
+0.8376548567097501507561,0.9346683439820572258938,0.4370985696043401258493,\
+0.7284922864514739027086,0.9428404465252524513375,0.1074819353569576446672,\
+0.7069935455991057660086,0.8185871132863582477768,0.7067679239545019420632,\
+0.3922891086723976905581,0.5071229723703120084721,0.9791082217227642381374,\
+0.7903179756766194330453,0.9680539825444213208883,0.9961682373600784234924,\
+0.5877546948534841941836,0.8693819099535771144360,0.4590404851583572698459,\
+0.9681246201644205795489,0.8226496644585178374953,0.8640239089247262471716,\
+0.6364732712298842853826,0.7142635095273666134830,0.9745750449867390807768,\
+0.1702035577920530950991,0.4042364354037782381290,0.643965003866954543987,\
+0.0465302905745321321307,0.4254444768892075012801,0.6749954223201641845265,\
+0.444730417450995230144,0.7780667027022033499506,0.6605342288670648098758,\
+0.9454367714567524227931,0.7813338589364902109224,0.6569790763869031158251,\
+0.4812165412209607473493,0.6838075269490457852584,0.7842680912733159814820,\
+0.9285051607225159875370,0.6201723933990106463199}
+
+#define ZSOURCER {0.6045256052166223526001,0.9455216196365654468536,0.4476299257948994636536,\
+0.8624908211641013622284,0.1751048639416694641113,0.2067177616991102695465,\
+0.6848411662504076957703,0.1348653226159512996674,0.0069159921258687973022,\
+0.1496290047653019428253,0.5665438110008835792542,0.4359452719800174236298,\
+0.6547604538500308990479,0.3381605879403650760651,0.4259321158751845359802,\
+0.3060420057736337184906,0.7704779822379350662231,0.7058695447631180286408,\
+0.2373670237138867378235,0.8205849635414779186249,0.6789963841438293457031,\
+0.5250809141434729099274,0.3359806565567851066589,0.8941988362930715084076,\
+0.5461782198399305343628,0.7568633262999355792999,0.0259526828303933143616,\
+0.3250150899402797222138,0.6072143577039241791,0.8756139636971056461334,\
+0.2962085595354437828064,0.4229678637348115444183,0.4243144039064645767212,\
+0.7620028969831764698029,0.3622896494343876838684,0.5658242437057197093964,\
+0.6424440070986747741699,0.7580267959274351596832,0.2531452132388949394226,\
+0.5266989110969007015228,0.2118590380996465682983,0.4779220153577625751495,\
+0.1615962767973542213440,0.9168031658045947551727,0.5461866445839405059815,\
+0.4686870560981333255768,0.7772213732823729515076,0.5871783248148858547211,\
+0.5848031807690858840942,0.3139644009061157703400,0.3204141603782773017883,\
+0.3331634956412017345429,0.2282590121030807495117,0.2750317254103720188141,\
+0.4963629124686121940613,0.7453477247618138790131,0.1155001949518918991089,\
+0.0626524840481579303741,0.0877018878236413002014,0.5507565210573375225067,\
+0.2116370312869548797607,0.8335358710028231143951,0.4045845707878470420837,\
+0.2880227542482316493988,0.1750094983726739883423,0.0051561561413109302521,\
+0.3109287889674305915833,0.6602919283322989940643,0.9722995534539222717285,\
+0.9826813959516584873200,0.0455837054178118705750,0.4096118300221860408783,\
+0.7104403134435415267944,0.3917615194804966449738,0.5571686858311295509338,\
+0.0565565521828830242157,0.1540721096098423004150,0.9109257892705500125885,\
+0.5713340407237410545349,0.3488348922692239284515,0.8972954172641038894653,\
+0.2973396372981369495392,0.1091936426237225532532,0.7626331257633864879608,\
+0.6584706604480743408203,0.6996708759106695652008,0.6756794182583689689636,\
+0.9004421546123921871185,0.6668148916214704513550,0.8518152837641537189484,\
+0.8365677157416939735413,0.1291190306656062602997,0.6095453463494777679443,\
+0.2412315667606890201569,0.4029275467619299888611,0.3019328541122376918793,\
+0.1083198729902505874634,0.8456356939859688282013,0.9417407037690281867981,\
+0.9083450469188392162323,0.1937242373824119567871,0.5318046086467802524567,\
+0.8314437521621584892273,0.4952740012668073177338,0.7465563025325536727905,\
+0.7102393140085041522980,0.5811418974772095680237,0.7035941029898822307587,\
+0.3746570833027362823486,0.3394373343326151371002,0.6322447275742888450623,\
+0.7636191300116479396820,0.6940386760979890823364,0.8735245508141815662384,\
+0.3612738298252224922180,0.7933200257830321788788,0.4830590635538101196289,\
+0.2469964125193655490875,0.5025922833010554313660,0.7430270477198064327240,\
+0.6783937942236661911011,0.4903185223229229450226,0.709806025959551334381,\
+0.3303662906400859355927,0.6815545372664928436279,0.0701365978457033634186,\
+0.4745870968326926231384,0.8091805852018296718597,0.9447045121341943740845,\
+0.5478458073921501636505,0.1216687532141804695129,0.9161847713403403759003,\
+0.3045207932591438293457,0.6502694808878004550934,0.0987624628469347953796,\
+0.8391053467057645320892,0.0328534897416830062866,0.3461971958167850971222,\
+0.2801467711105942726135,0.5500544901005923748016,0.0729318000376224517822,\
+0.0225322381593286991119,0.50267804320901632309,0.3478884599171578884125,\
+0.4298669416457414627075,0.3537984383292496204376,0.0529730813577771186829,\
+0.9533003675751388072968,0.1842019557952880859375,0.958756382111459970474,\
+0.3245136169716715812683,0.0003973259590566158295,0.0972583871334791183472,\
+0.4378789965994656086,0.3634226778522133827210,0.2685119728557765483856,\
+0.2770298384130001068115,0.8854365111328661441803,0.5216628303751349449158,\
+0.4979983693920075893,0.8733724001795053482056,0.4699407932348549365997,\
+0.9364062966778874397278,0.1337622734718024730682,0.2712419554591178894043,\
+0.1766990595497190952301,0.0543269468471407890320,0.8402757882140576839447,\
+0.7507283594459295272827,0.3062269617803394794464,0.9195641661062836647034,\
+0.1318263853900134563446,0.0826364941895008087158,0.8222710476256906986237,\
+0.4441085970029234886169,0.9617503038607537746429,0.0283641982823610305786,\
+0.1431905967183411121368,0.3793597565963864326477,0.6144003230147063732147,\
+0.2128270715475082397461,0.4704488315619528293610,0.2076055286452174186707,\
+0.7435979112051427364349,0.3391801547259092330933,0.2479635034687817096710,\
+0.6721735307946801185608,0.9013197491876780986786,0.2140864841639995574951,\
+0.8460668534971773624420,0.1650043567642569541931,0.4003686285577714443207,\
+0.5522825215011835098267,0.0638249483890831470490,0.6903966935351490974426,\
+0.8547787251882255077362,0.0291904583573341369629,0.5434663915075361728668,\
+0.6236743135377764701843,0.2417052476666867733002}
+#define ZSOURCEI {0.5503273960202932357788,0.6906704087741672992706,0.9835249418392777442932,\
+0.8285484607331454753876,0.2062614001333713531494,0.1944643096067011356354,\
+0.4367609983310103416443,0.8090620837174355983734,0.8818644303828477859497,\
+0.7404803228564560413361,0.7542522149160504341126,0.9921960639767348766327,\
+0.9886121451854705810547,0.0113218077458441257477,0.9367801276966929435730,\
+0.3874237253330647945404,0.2886805813759565353394,0.567788839805871248245,\
+0.7295644441619515419006,0.0303032915107905864716,0.2795897088944911956787,\
+0.7047131718136370182037,0.7442112853750586509705,0.8920237845741212368012,\
+0.1081438604742288589478,0.8751525697298347949982,0.9068333031609654426575,\
+0.2166852983646094799042,0.4824190363287925720215,0.7766945236362516880035,\
+0.4510916722938418388367,0.1300636469386518001556,0.5505470838397741317749,\
+0.6936193336732685565949,0.1749099576845765113831,0.8636093880049884319305,\
+0.2150467522442340850830,0.1886725709773600101471,0.1796098565682768821716,\
+0.4374312213622033596039,0.8514516223222017288208,0.7381969136185944080353,\
+0.8102188156917691230774,0.1460137623362243175507,0.8999849110841751098633,\
+0.4043733575381338596344,0.0156995235010981559753,0.6904196902178227901459,\
+0.2990311514586210250855,0.1383218024857342243195,0.8478512773290276527405,\
+0.3007262717001140117645,0.229154746979475021362,0.8078110129572451114655,\
+0.3176332255825400352478,0.6924462593160569667816,0.1364154014736413955689,\
+0.5433279541321098804474,0.3276594849303364753723,0.2006831648759543895721,\
+0.5037304237484931945801,0.4962565028108656406403,0.8996161324903368949890,\
+0.9357709079049527645111,0.3390339072793722152710,0.6029155333526432514191,\
+0.4153500730171799659729,0.3041478390805423259735,0.8489827848970890045166,\
+0.4482063786126673221588,0.0903797810897231101990,0.7382151386700570583344,\
+0.2669597584754228591919,0.8226196658797562122345,0.3985779182985424995422,\
+0.9789295899681746959686,0.3041231036186218261719,0.0663515278138220310211,\
+0.6667758254334330558777,0.7548807277344167232513,0.1922533493489027023315,\
+0.7942791883833706378937,0.5580398896709084510803,0.2016023616306483745575,\
+0.787146832793951034546,0.0955459238030016422272,0.6623697867617011070252,\
+0.864868474658578634262,0.7013061288744211196899,0.8015053984709084033966,\
+0.9135685982182621955872,0.6317234965972602367401,0.9346773549914360046387,\
+0.9157753759063780307770,0.0510348035022616386414,0.4329969524405896663666,\
+0.9721843507140874862671,0.8001508046872913837433,0.8452261472120881080627,\
+0.0610524858348071575165,0.8168097324669361114502,0.2101262793876230716705,\
+0.3055453812703490257263,0.9465212575159966945648,0.9269728232175111770630,\
+0.7737778765149414539337,0.5893978821113705635071,0.2377697187475860118866,\
+0.5269544571638107299805,0.0077543654479086399078,0.8311711428686976432800,\
+0.0268517597578465938568,0.2591186594218015670776,0.4641277943737804889679,\
+0.6098861405625939369202,0.0656952331773936748505,0.6466812007129192352295,\
+0.1018534512259066104889,0.2742705782875418663025,0.8162728524766862392426,\
+0.3357750270515680313110,0.4765891996212303638458,0.8440040023997426033020,\
+0.1785074654035270214081,0.5855625644326210021973,0.8426241897977888584137,\
+0.7058847947046160697937,0.7396617024205625057221,0.9751448985189199447632,\
+0.7606669445522129535675,0.8236690396443009376526,0.8889620001427829265595,\
+0.7960178293287754058838,0.3052428201772272586823,0.6803312664851546287537,\
+0.6412069997750222682953,0.0988248009234666824341,0.4654508423991501331329,\
+0.6714970665052533149719,0.5131103205494582653046,0.8631567060947418212891,\
+0.8328299173153936862946,0.1687975851818919181824,0.2961277081631124019623,\
+0.2591485660523176193237,0.1700844173319637775421,0.9718958893790841102600,\
+0.0695185582153499126434,0.4696230851113796234131,0.9544191421009600162506,\
+0.3679352095350623130798,0.2973918146453797817230,0.0415310803800821304321,\
+0.4892336544580757617950,0.5171590568497776985169,0.3534862431697547435761,\
+0.2354387864470481872559,0.6779259913600981235504,0.3834532154724001884460,\
+0.3174350797198712825775,0.3418120350688695907593,0.0535557498224079608917,\
+0.9285596096888184547424,0.3862650538794696331024,0.4328473098576068878174,\
+0.1581165478564798831940,0.7887120461091399192810,0.7448797873221337795258,\
+0.5185996759682893753052,0.8651678604073822498322,0.1524438308551907539368,\
+0.2392775672487914562225,0.5761575847864151000977,0.7395762302912771701813,\
+0.0583172617480158805847,0.6962534948252141475678,0.4206145536154508590698,\
+0.0281158541329205036163,0.8313249954953789710999,0.2333360086195170879364,\
+0.8865877203643321990967,0.3746785433031618595123,0.87671328987926244736,\
+0.4027077830396592617035,0.2890332732349634170532,0.8538430598564445972443,\
+0.5499771209433674812317,0.5128610017709434032440,0.6321087554097175598145,\
+0.4165538274683058261871,0.3217771751806139945984,0.9717370062135159969330,\
+0.5348322447389364242554,0.3416590173728764057159,0.9565287167206406593323,\
+0.9951003189198672771454,0.3422884084284305572510,0.7870580093003809452057,\
+0.9234123295173048973084,0.5238970420323312282562}
+
+#define ZRESULTR {0.8432166939003225003546,1.028696846310626300536,0.8741363651656853805960,\
+1.0145139259460289604675,0.4720540083473970804917,0.4952416659876168192334,\
+0.8651884064428800868996,0.6910466586042781633736,0.6666361606264414874090,\
+0.6727093940540614935841,0.8688705649614124615354,0.8716907101266159196840,\
+0.959306172735902795701,0.5815972201878681913101,0.8529353171823288448650,\
+0.6323612148789939935156,0.8925417496893577329331,0.8977079570170535260942,\
+0.7087222819700315090685,0.9060158028150111508836,0.8406257183559593393341,\
+0.8378258601984284181796,0.7591172919619637582400,1.0385687027372507706957,\
+0.7426169311676505957465,0.9782382399865202637912,0.6830656191716251157686,\
+0.5981803109332550771882,0.8314861127635455595453,1.011450539647472002258,\
+0.6464748892519300849102,0.6578303557631125508820,0.7481312014375646191056,\
+0.9466832738110327882808,0.6183009489366241284714,0.8939481166511646925699,\
+0.8123805134131761862548,0.8772630865325246052322,0.5308180535125875953995,\
+0.7782537556049359261934,0.7379946979653042582470,0.8238088030668070382845,\
+0.7027705686531833251252,0.9605105126328297160399,0.8941312697312054913468,\
+0.7374641482216017784879,0.8816465539160547315589,0.8641531635219484863697,\
+0.7879164327234249309839,0.5731702653710250006114,0.7831953532687397911971,\
+0.6252910190572938953224,0.5252142434850843866201,0.7511253936013374543634,\
+0.7367688115224660938551,0.9388049677540464266201,0.3835650562588603929015,\
+0.5520782622396902539208,0.4620041004215187374626,0.753968196415999991622,\
+0.6156379639362553612969,0.9496353272389349564620,0.8339637612267859489990,\
+0.7959636817154828181131,0.5275172507857687209665,0.5514044508846071002139,\
+0.6441142487726253529345,0.8328463321559912424519,1.0637408773050947008443,\
+1.0155667426713801404503,0.2709318224164963262446,0.7917869572241151843173,\
+0.8571412685012261833961,0.8071256937996567071281,0.7881067116954072471202,\
+0.7201105910271731191941,0.4974916923152819525633,0.9550562531126176590846,\
+0.8512952675658871370956,0.7682506551752034118508,0.9526163214553304836585,\
+0.756785792150606484441,0.5821581994240766499971,0.8807562498788572558084,\
+0.9178011959841433364815,0.8384018774833429388238,0.9005192643641398708709,\
+1.0365709563884744071061,0.9040270806600297914812,1.0053433947417824700921,\
+1.0186506185399304413863,0.6220542372412505294221,0.9288207542994831866778,\
+0.7707938959111726440199,0.63603233719709606486,0.6441295538205468185211,\
+0.7370617546735380720691,1.0024537010421461502574,1.0505138587196660715506,\
+0.953608813532313304151,0.7187463572209089601728,0.7428380749761755996730,\
+0.9266208094400342210051,0.8841784551932333480195,0.9840672842877067338918,\
+0.9382321956452510658409,0.8393030146072417707615,0.8503757458476615127552,\
+0.7145712412765103938028,0.5826505086380492359766,0.9155742917376128442442,\
+0.8739880489156448550858,0.8470155698847267045082,0.9650636753683585755681,\
+0.7314820521682621201620,0.8914470068047345430173,0.8031939281911506522960,\
+0.5070351579739499348065,0.7331953647718203459505,0.9609459795569127438242,\
+0.847153172323739211969,0.7661900708888577105071,0.9519994233321562582262,\
+0.5940854373891888418058,0.8888500969738630796968,0.6766367900740852814323,\
+0.8139959478095014633325,0.9760840415848224260742,1.0729430743093604228022,\
+0.8617604247210989276695,0.6907515785500089045002,1.0470820008330794514961,\
+0.7605256422767727730872,0.8272295000550387022997,0.6269868176753693456149,\
+0.9734363297756469801669,0.2617213661737881613689,0.6805441931353264362059,\
+0.709837674958288866733,0.8069322418000910435154,0.6852606023040614946496,\
+0.6540897892889659948068,0.7186585042731442607433,0.6343284289266235553839,\
+0.6825711485307393022737,0.610883282746898181870,0.7163489185444231743816,\
+0.9770189769897136278232,0.5867956626396594321804,1.0750765659376522176416,\
+0.6384005820717564283484,0.3858687639762184984349,0.3186007968636310749844,\
+0.7397471191545493818254,0.7055161810773808994668,0.5968318319385850223569,\
+0.5659466952073320955563,1.0001490762521170196919,0.7645570771657418385203,\
+0.7377545989844320750706,0.9516433749813681952645,0.6866306949128065939547,\
+1.0618728756326238915619,0.5208322311777507929165,0.6253215357738258761700,\
+0.4548702015131091402900,0.6499645432009629741899,0.9907517258725765385563,\
+0.9119111641770327736367,0.7823013339720715775272,0.9622054437069111898495,\
+0.4500082630180006204590,0.5764937377448445809947,0.9818886833563331695274,\
+0.6678434466414240322507,1.0365982590716655842300,0.4743068831608843738401,\
+0.3802074434441635730764,0.8040992937118037753308,0.7973759350671048018455,\
+0.7498672536100723373664,0.7320754444197923316295,0.7445011903920762952325,\
+0.8914147503382092718738,0.6264212402370327170686,0.7540169824914779717062,\
+0.8776882812655947274649,0.9844634271419567816963,0.6638769890354155878143,\
+0.9458113966252766902088,0.5131381594621587938221,0.8518664381177757372043,\
+0.812738510298055549796,0.4535385196962208320670,0.9669683162928227604382,\
+1.040816644093084830658,0.4316950876741513232204,0.8660041994184899394327,\
+0.9321942634710010944232,0.6397933456564963705660}
+
+#define ZRESULTI {0.3263261982366231217512,0.3357016264078308553920,0.5625695149136477057894,\
+0.4083475049199193351868,0.2184722473340149073717,0.1963327431456096394680,\
+0.2524080275917597870894,0.5853888978723345015709,0.6614285891378552939557,\
+0.5503716236174250875379,0.4340417579628489397337,0.5691216233293430182272,\
+0.5152745668080026542057,0.0097333750513688352402,0.5491507438051371758903,\
+0.3063310306018693363050,0.1617182509817773616856,0.3162436265422815528936,\
+0.5147040404416135528365,0.0167233791158154128376,0.1662985694996903240917,\
+0.4205606470816827258119,0.4901820135407665146587,0.4294486162653968763792,\
+0.0728126817040040535955,0.4473105496989639440209,0.6637966234200971538115,\
+0.1811203866159907804878,0.2900944639504645650163,0.3839508177567231839156,\
+0.3488856874362309956617,0.0988580458466166156484,0.36794821735938526563,\
+0.3663418129703439607425,0.1414440314101028384197,0.4830310461641617592044,\
+0.1323559272370566086696,0.1075347714236491863948,0.1691821287725076283781,\
+0.2810338004872128814249,0.5768683871779194394236,0.4480389811753019424501,\
+0.5764461773381487352808,0.0760084144919923321293,0.5032733679892044120763,\
+0.2741647566958217985267,0.0089035245651246392590,0.3994776154055512673580,\
+0.1897607024294587774183,0.1206637982137782894032,0.5412770094909528095784,\
+0.2404690476392074838241,0.2181535914362372208242,0.5377337924125580315149,\
+0.2155582732432577419690,0.3687913267931641758679,0.1778256377212544814270,\
+0.4920751198642726587096,0.3546066849097115891709,0.1330846352869425042176,\
+0.4091125411822805202355,0.2612879326286920989020,0.5393616451432939884469,\
+0.5878226164089255245671,0.3213486447830481429477,0.5467089832022555828672,\
+0.3224195659455129092663,0.1825954124653428600755,0.3990552600779624370375,\
+0.2206681056892876025000,0.1667943253834255346035,0.4661703075143642238665,\
+0.1557268144037805002178,0.5095982399018667008406,0.2528705265313027639174,\
+0.6797078130539779827757,0.3056564645363825660773,0.0347369736586594715644,\
+0.3916242993690946527785,0.4912984601114738780758,0.1009080702371304705256,\
+0.5247714720741629701450,0.4792854332576366727,0.1144484422667324668987,\
+0.4288220783749939757357,0.0569809815370433195292,0.36777102554791152311,\
+0.4171776516254488420543,0.3878789385171945158781,0.3986227007920866149959,\
+0.4484209706404114204048,0.5077720388168175391641,0.5031527077021280547342,\
+0.5940468527088033079409,0.0401196609964555792049,0.3361101426509159328937,\
+0.6594999296529031607150,0.3990961397296745039043,0.4022917642620268408038,\
+0.0320112843801534235899,0.5682183459163515637513,0.1414347799783703119037,\
+0.1648707746240843652341,0.5352546490793753664050,0.470990570471244762718,\
+0.4123594778064457178068,0.3511234154134331153507,0.1398027400878979753518,\
+0.3687207284066310042370,0.0066543882936226537647,0.4539069906010949617681,\
+0.0153616286808277956177,0.1529597971009351853322,0.2404648554390081682808,\
+0.4168838721023755411466,0.0368475258068726510552,0.4025685317176705413367,\
+0.1004402255189763004672,0.1870378561196294198155,0.4247235900050622126045,\
+0.1981784628926891167478,0.3110123830424602608957,0.4432796815388754252396,\
+0.1502372000465193591090,0.3293933175156303350128,0.6226562035634579661547,\
+0.4335923272125510874453,0.3788924267318253269465,0.4544252728163645227433,\
+0.4413447883722416142938,0.5962122022024949341557,0.4244949294494160807467,\
+0.5233339844701030418861,0.1844970592543655196760,0.5425403272492764772395,\
+0.3293523059298621991076,0.1887977324286261304742,0.3419695936679567616068,\
+0.4729933970782203567218,0.3179389135603382654516,0.6298017886863316316948,\
+0.6366327153805051430879,0.1174393569255921254690,0.2334182851178558948391,\
+0.1898326398721546515169,0.1392118774041107009953,0.6783676670817878617825,\
+0.0355768720222523482377,0.4001589607861217867679,0.4438842647772449079291,\
+0.2881695442233370707541,0.3853535740764292283345,0.0651773014834273051177,\
+0.330676282333628224208,0.3665111238554681349910,0.2961355479495680342872,\
+0.2080043831343482141350,0.3389124718789456314205,0.2507682074527933790975,\
+0.2151359545279972751430,0.1795904033249649811577,0.0389989482113152971521,\
+0.4372272948094740319114,0.3708152364207700224519,0.3460997943417740696503,\
+0.1738040295127169787559,0.6067346706520863053314,0.3759164722454063634061,\
+0.2843476954448227456140,0.5529633038042787163136,0.0792158430677229186134,\
+0.2658590818355930918138,0.4997084504683915184842,0.3766089999954101985580,\
+0.0436608774416314404654,0.3358357438535300443228,0.4433991668140928599229,\
+0.0369743604678396259322,0.5169293158173903224295,0.1463149302341813229322,\
+0.5911631132684145306655,0.2559015919459735610708,0.5887924030165481159571,\
+0.2258812650827625445604,0.2307020058304501131108,0.5661961730855942231955,\
+0.3133100513489369687292,0.2604774274143707435414,0.4760737048049700770314,\
+0.2202097738273190163927,0.3135385365979036498274,0.5703576069745146526202,\
+0.3290309478154280209417,0.3766593161719967164380,0.4946018916047810187742,\
+0.4780382426469301782035,0.3964469578199069088598,0.4544192798538850830425,\
+0.4952896438554572622337,0.4094267669310915347403}
+
+
+
+
+void dsqrtsTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dsqrts(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void zsqrtsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=zsqrts(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-16);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-16);
+ }
+}
+
+void dsqrtaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dsqrta(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-16);
+ }
+}
+
+void zsqrtaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ zsqrta(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-16);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-16);
+ }
+}
+
+
+int testSqrt() {
+ printf("\n>>>> Double Square Root Tests\n");
+ dsqrtsTest();
+ zsqrtsTest();
+ dsqrtaTest();
+ zsqrtaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testSqrt() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/testFloatSqrt.c b/2.3-1/src/c/elementaryFunctions/sqrt/testFloatSqrt.c
new file mode 100644
index 00000000..e4c72cb0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/testFloatSqrt.c
@@ -0,0 +1,496 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testSqrt.h"
+
+#define SOURCE {0.7062616096809506416321f,0.4090520101599395275116f,0.3011248558759689331055f,\
+0.1880126395262777805328f,0.1796709178015589714050f,0.2828889950178563594818f,\
+0.7232380937784910202026f,0.7360379849560558795929f,0.1852612206712365150452f,\
+0.7703790138475596904755f,0.1914967410266399383545f,0.7521587223745882511139f,\
+0.6205883463844656944275f,0.2807604051195085048676f,0.2289868686348199844360f,\
+0.5049233403988182544708f,0.8354099662974476814270f,0.8174716415815055370331f,\
+0.0030740275979042053223f,0.3677616142667829990387f,0.8278525872156023979187f,\
+0.72754097869619727135f,0.5323124285787343978882f,0.9267726917751133441925f,\
+0.9542504185810685157776f,0.3162104780785739421845f,0.5789009965956211090088f,\
+0.6881225542165338993073f,0.3714061146602034568787f,0.1705444059334695339203f,\
+0.1954363007098436355591f,0.978800852317363023758f,0.9300233917310833930969f,\
+0.5357720064930617809296f,0.3947123587131500244141f,0.1344871171750128269196f,\
+0.7380615202710032463074f,0.588114650454372167587f,0.9113173168152570724487f,\
+0.5682763461954891681671f,0.1127616921439766883850f,0.9478473584167659282684f,\
+0.5237770043313503265381f,0.8140139640308916568756f,0.1400952627882361412048f,\
+0.2763446993194520473480f,0.9059953633695840835571f,0.1379901585169136524200f,\
+0.5603838684037327766419f,0.3008610638789832592011f,0.4767417535185813904f,\
+0.8127435916103422641754f,0.1988414181396365165710f,0.1107953130267560482025f,\
+0.2159351315349340438843f,0.6467244853265583515167f,0.6597879612818360328674f,\
+0.0691898013465106487274f,0.9164751060307025909424f,0.8635670826770365238190f,\
+0.5032854294404387474060f,0.1832137755118310451508f,0.8403698671609163284302f,\
+0.9247214836068451404572f,0.6229452537372708320618f,0.2773811477236449718475f,\
+0.2479109913110733032227f,0.3891948559321463108063f,0.0436578569933772087097f,\
+0.8132526441477239131928f,0.7686451207846403121948f,0.4041520212776958942413f,\
+0.8579940209165215492249f,0.6993723283521831035614f,0.0828925184905529022217f,\
+0.9201254160143435001373f,0.5200281282886862754822f,0.9351884997449815273285f,\
+0.8825624976307153701782f,0.2245844271965324878693f,0.2153332801535725593567f,\
+0.4327089670114219188690f,0.5800157263875007629395f,0.8876141034997999668121f,\
+0.5258982880041003227234f,0.859640696551650762558f,0.7337234076112508773804f,\
+0.7134532411582767963409f,0.1087165409699082374573f,0.8477638359181582927704f,\
+0.6594733335077762603760f,0.7916418449021875858307f,0.6067967480048537254334f,\
+0.4102901122532784938812f,0.1958728153258562088013f,0.241527963895350694656f,\
+0.5113455550745129585266f,0.9119556057266891002655f,0.0928984880447387695313f,\
+0.7438839026726782321930f,0.1938720373436808586121f,0.4355978979729115962982f,\
+0.9922429900616407394409f,0.4533818070776760578156f,0.8269640663638710975647f,\
+0.8889675955288112163544f,0.4682085178792476654053f,0.3856786251999437808991f,\
+0.4124865522608160972595f,0.6955242282710969448090f,0.0978972557932138442993f,\
+0.8728604433126747608185f,0.6359515609219670295715f,0.4129665228538215160370f,\
+0.0294486805796623229980f,0.1809961968101561069489f,0.7658103061839938163757f,\
+0.1232470511458814144135f,0.0170737411826848983765f,0.8835507561452686786652f,\
+0.3164170170202851295471f,0.9378212536685168743134f,0.3916359134018421173096f,\
+0.0844073877669870853424f,0.6934146797284483909607f,0.4618808380328118801117f,\
+0.9355291295796632766724f,0.0842495900578796863556f,0.5402926551178097724915f,\
+0.5613215523771941661835f,0.1306025832891464233398f,0.5840523042716085910797f,\
+0.0048661706969141960144f,0.2761953338049352169037f,0.7478824090212583541870f,\
+0.0194325004704296588898f,0.6444276878610253334045f,0.2243968318216502666473f,\
+0.2478402368724346160889f,0.1196091384626924991608f,0.1883201440796256065369f,\
+0.3393343067727982997894f,0.959958622232079505920f,0.2847225037403404712677f,\
+0.8766820700839161872864f,0.2853349032811820507050f,0.5103433504700660705566f,\
+0.8752629184164106845856f,0.5941145820543169975281f,0.3945342986844480037689f,\
+0.4661326166242361068726f,0.0073588271625339984894f,0.5170202488079667091370f,\
+0.4690007264725863933563f,0.6654530800879001617432f,0.9476742581464350223541f,\
+0.4933638339862227439880f,0.2918433747254312038422f,0.2016727942973375320435f,\
+0.7016656589694321155548f,0.8736049132421612739563f,0.191055159550160169601f,\
+0.5307010114192962646484f,0.8889481076039373874664f,0.0115523664280772209167f,\
+0.4998398735187947750092f,0.6700848620384931564331f,0.4995208983309566974640f,\
+0.1538907447829842567444f,0.2571737091057002544403f,0.9586529098451137542725f,\
+0.6246025026775896549225f,0.9371285131201148033142f,0.9923511571250855922699f,\
+0.3454555813223123550415f,0.7558249053545296192169f,0.2107181670144200325012f,\
+0.9372652801685035228729f,0.6767524704337120056152f,0.7465373151935636997223f,\
+0.4050982249900698661804f,0.5101723610423505306244f,0.9497965183109045028687f,\
+0.0289692510850727558136f,0.1634070957079529762268f,0.4146909262053668498993f,\
+0.0021650679409503936768f,0.1810030029155313968658f,0.4556188201531767845154f,\
+0.1977851442061364650726f,0.6053877938538789749146f,0.4363054675050079822540f,\
+0.8938506888225674629211f,0.6104825991205871105194f,0.4316215068101882934570f,\
+0.2315693595446646213532f,0.4675927339121699333191f,0.6150764389894902706146f,\
+0.8621218334883451461792f,0.3846137975342571735382f}
+
+#define RESULT {0.8403937230137732417035f,0.6395717396507912821946f,0.5487484449872901404177f,\
+0.4336042429754092819572f,0.4238760641998542411102f,0.5318731004834296172135f,\
+0.8504340619815806689985f,0.8579265615168094605281f,0.4304198190967006287799f,\
+0.8777123753528599525708f,0.4376034060957934568314f,0.8672708471836166888025f,\
+0.7877742991393319460514f,0.5298682903510159025728f,0.4785257241098120895018f,\
+0.7105795806233234923610f,0.9140076401745489409478f,0.9041413836239913237591f,\
+0.0554439139843518405404f,0.6064335200718896645711f,0.9098640487543193655640f,\
+0.8529601272604701023283f,0.7295974428263399813588f,0.9626903405431641580492f,\
+0.9768574197809363202083f,0.5623259535879292503324f,0.7608554373832265849131f,\
+0.8295315269575556094139f,0.6094309761246169410143f,0.4129702240276767466476f,\
+0.4420817805676271472493f,0.9893436472315183527471f,0.9643772040706288795064f,\
+0.7319644844478875311822f,0.6282613777029032453569f,0.3667248521371476721598f,\
+0.8591050694012946076228f,0.7668863347683098075081f,0.9546294133407251525370f,\
+0.7538410616273759634609f,0.3358000776414095667199f,0.9735745263803721183393f,\
+0.7237243980489743711004f,0.9022272241685526106281f,0.3742930172849022740778f,\
+0.5256849810670379818944f,0.9518378871265757990017f,0.3714702659930047001780f,\
+0.7485879162822044463610f,0.5485080344707662369785f,0.6904648821761910637562f,\
+0.9015229290541324491670f,0.4459163802100529760963f,0.3328592991441819970433f,\
+0.4646882089476060961886f,0.8041918212258555298533f,0.8122733291705668268179f,\
+0.2630395433133783655855f,0.9573270632499127907877f,0.9292831014696417701870f,\
+0.709426126838051174239f,0.4280347830630485406189f,0.9167168958631211062027f,\
+0.9616243984045148573969f,0.7892688095555726590646f,0.5266698659726460896025f,\
+0.4979066090253003729060f,0.6238548356245596782088f,0.2089446266200143398351f,\
+0.9018052140832431007311f,0.8767240847522328461849f,0.6357295189604584839671f,\
+0.9262796666863207795117f,0.8362848368541564436640f,0.2879106085064475628599f,\
+0.9592316800514584240744f,0.7211297582881227574703f,0.9670514462762472840396f,\
+0.9394479749463060525017f,0.4739033943711866703197f,0.4640401708403837921502f,\
+0.6578061773892229791017f,0.7615876353956259059430f,0.9421327419741869491077f,\
+0.7251884499935863370723f,0.9271681058749005055475f,0.8565765626091171869305f,\
+0.8446616134040167978014f,0.3297219146036675652134f,0.9207409168263124277232f,\
+0.8120796349544644465723f,0.8897425722658142133170f,0.7789715964044220397611f,\
+0.6405389232929397103078f,0.4425752086661161044390f,0.4914549459465747394127f,\
+0.7150842992784227636349f,0.9549636672285962690765f,0.3047925327903207581848f,\
+0.8624870449303445596456f,0.4403090248265198458633f,0.6599984075533149585624f,\
+0.9961139443164325202318f,0.6733363253810654702747f,0.9093756464541323802919f,\
+0.9428507811572365282515f,0.6842576399860272884368f,0.6210302933029465677350f,\
+0.6422511597971747310254f,0.8339809519833752959883f,0.3128853716510470728274f,\
+0.9342700055726260721656f,0.7974657114396624946195f,0.6426247138523553115164f,\
+0.1716061787339323019275f,0.4254364779966053888849f,0.8751058828416100610070f,\
+0.351065593793925379007f,0.1306665266343484677059f,0.939973806095291464224f,\
+0.5625095706032787745698f,0.9684117170235585492222f,0.6258082081611283653544f,\
+0.2905294955197958439719f,0.8327152452840337337747f,0.6796181560500071938691f,\
+0.967227547984270019654f,0.2902577993058579330921f,0.7350460224488054583603f,\
+0.7492139563417076209f,0.3613897941131520297198f,0.7642331478492728757956f,\
+0.0697579436115643852778f,0.5255428943530063845557f,0.8648019478593109710118f,\
+0.1394005038385071892915f,0.8027625351628122629677f,0.4737054272664081300270f,\
+0.4978355520374520559734f,0.3458455413370143394225f,0.4339586893698818559351f,\
+0.5825240825689512735863f,0.9797747813819661644175f,0.5335939502471336304268f,\
+0.9363130192857067601864f,0.5341674861700046461621f,0.7143831958200487219912f,\
+0.9355548719430681892106f,0.7707882861423861475814f,0.628119653158892954359f,\
+0.6827390545620164452600f,0.0857836066071717417980f,0.7190412010503756112811f,\
+0.6848362771294949080669f,0.8157530754388242488773f,0.9734856229788064752029f,\
+0.7023986289751872336140f,0.5402252999679219014340f,0.4490799419895499244859f,\
+0.8376548567097501507561f,0.9346683439820572258938f,0.4370985696043401258493f,\
+0.7284922864514739027086f,0.9428404465252524513375f,0.1074819353569576446672f,\
+0.7069935455991057660086f,0.8185871132863582477768f,0.7067679239545019420632f,\
+0.3922891086723976905581f,0.5071229723703120084721f,0.9791082217227642381374f,\
+0.7903179756766194330453f,0.9680539825444213208883f,0.9961682373600784234924f,\
+0.5877546948534841941836f,0.8693819099535771144360f,0.4590404851583572698459f,\
+0.9681246201644205795489f,0.8226496644585178374953f,0.8640239089247262471716f,\
+0.6364732712298842853826f,0.7142635095273666134830f,0.9745750449867390807768f,\
+0.1702035577920530950991f,0.4042364354037782381290f,0.643965003866954543987f,\
+0.0465302905745321321307f,0.4254444768892075012801f,0.6749954223201641845265f,\
+0.444730417450995230144f,0.7780667027022033499506f,0.6605342288670648098758f,\
+0.9454367714567524227931f,0.7813338589364902109224f,0.6569790763869031158251f,\
+0.4812165412209607473493f,0.6838075269490457852584f,0.7842680912733159814820f,\
+0.9285051607225159875370f,0.6201723933990106463199f}
+
+#define CSOURCER {0.6045256052166223526001f,0.9455216196365654468536f,0.4476299257948994636536f,\
+0.8624908211641013622284f,0.1751048639416694641113f,0.2067177616991102695465f,\
+0.6848411662504076957703f,0.1348653226159512996674f,0.0069159921258687973022f,\
+0.1496290047653019428253f,0.5665438110008835792542f,0.4359452719800174236298f,\
+0.6547604538500308990479f,0.3381605879403650760651f,0.4259321158751845359802f,\
+0.3060420057736337184906f,0.7704779822379350662231f,0.7058695447631180286408f,\
+0.2373670237138867378235f,0.8205849635414779186249f,0.6789963841438293457031f,\
+0.5250809141434729099274f,0.3359806565567851066589f,0.8941988362930715084076f,\
+0.5461782198399305343628f,0.7568633262999355792999f,0.0259526828303933143616f,\
+0.3250150899402797222138f,0.6072143577039241791f,0.8756139636971056461334f,\
+0.2962085595354437828064f,0.4229678637348115444183f,0.4243144039064645767212f,\
+0.7620028969831764698029f,0.3622896494343876838684f,0.5658242437057197093964f,\
+0.6424440070986747741699f,0.7580267959274351596832f,0.2531452132388949394226f,\
+0.5266989110969007015228f,0.2118590380996465682983f,0.4779220153577625751495f,\
+0.1615962767973542213440f,0.9168031658045947551727f,0.5461866445839405059815f,\
+0.4686870560981333255768f,0.7772213732823729515076f,0.5871783248148858547211f,\
+0.5848031807690858840942f,0.3139644009061157703400f,0.3204141603782773017883f,\
+0.3331634956412017345429f,0.2282590121030807495117f,0.2750317254103720188141f,\
+0.4963629124686121940613f,0.7453477247618138790131f,0.1155001949518918991089f,\
+0.0626524840481579303741f,0.0877018878236413002014f,0.5507565210573375225067f,\
+0.2116370312869548797607f,0.8335358710028231143951f,0.4045845707878470420837f,\
+0.2880227542482316493988f,0.1750094983726739883423f,0.0051561561413109302521f,\
+0.3109287889674305915833f,0.6602919283322989940643f,0.9722995534539222717285f,\
+0.9826813959516584873200f,0.0455837054178118705750f,0.4096118300221860408783f,\
+0.7104403134435415267944f,0.3917615194804966449738f,0.5571686858311295509338f,\
+0.0565565521828830242157f,0.1540721096098423004150f,0.9109257892705500125885f,\
+0.5713340407237410545349f,0.3488348922692239284515f,0.8972954172641038894653f,\
+0.2973396372981369495392f,0.1091936426237225532532f,0.7626331257633864879608f,\
+0.6584706604480743408203f,0.6996708759106695652008f,0.6756794182583689689636f,\
+0.9004421546123921871185f,0.6668148916214704513550f,0.8518152837641537189484f,\
+0.8365677157416939735413f,0.1291190306656062602997f,0.6095453463494777679443f,\
+0.2412315667606890201569f,0.4029275467619299888611f,0.3019328541122376918793f,\
+0.1083198729902505874634f,0.8456356939859688282013f,0.9417407037690281867981f,\
+0.9083450469188392162323f,0.1937242373824119567871f,0.5318046086467802524567f,\
+0.8314437521621584892273f,0.4952740012668073177338f,0.7465563025325536727905f,\
+0.7102393140085041522980f,0.5811418974772095680237f,0.7035941029898822307587f,\
+0.3746570833027362823486f,0.3394373343326151371002f,0.6322447275742888450623f,\
+0.7636191300116479396820f,0.6940386760979890823364f,0.8735245508141815662384f,\
+0.3612738298252224922180f,0.7933200257830321788788f,0.4830590635538101196289f,\
+0.2469964125193655490875f,0.5025922833010554313660f,0.7430270477198064327240f,\
+0.6783937942236661911011f,0.4903185223229229450226f,0.709806025959551334381f,\
+0.3303662906400859355927f,0.6815545372664928436279f,0.0701365978457033634186f,\
+0.4745870968326926231384f,0.8091805852018296718597f,0.9447045121341943740845f,\
+0.5478458073921501636505f,0.1216687532141804695129f,0.9161847713403403759003f,\
+0.3045207932591438293457f,0.6502694808878004550934f,0.0987624628469347953796f,\
+0.8391053467057645320892f,0.0328534897416830062866f,0.3461971958167850971222f,\
+0.2801467711105942726135f,0.5500544901005923748016f,0.0729318000376224517822f,\
+0.0225322381593286991119f,0.50267804320901632309f,0.3478884599171578884125f,\
+0.4298669416457414627075f,0.3537984383292496204376f,0.0529730813577771186829f,\
+0.9533003675751388072968f,0.1842019557952880859375f,0.958756382111459970474f,\
+0.3245136169716715812683f,0.0003973259590566158295f,0.0972583871334791183472f,\
+0.4378789965994656086f,0.3634226778522133827210f,0.2685119728557765483856f,\
+0.2770298384130001068115f,0.8854365111328661441803f,0.5216628303751349449158f,\
+0.4979983693920075893f,0.8733724001795053482056f,0.4699407932348549365997f,\
+0.9364062966778874397278f,0.1337622734718024730682f,0.2712419554591178894043f,\
+0.1766990595497190952301f,0.0543269468471407890320f,0.8402757882140576839447f,\
+0.7507283594459295272827f,0.3062269617803394794464f,0.9195641661062836647034f,\
+0.1318263853900134563446f,0.0826364941895008087158f,0.8222710476256906986237f,\
+0.4441085970029234886169f,0.9617503038607537746429f,0.0283641982823610305786f,\
+0.1431905967183411121368f,0.3793597565963864326477f,0.6144003230147063732147f,\
+0.2128270715475082397461f,0.4704488315619528293610f,0.2076055286452174186707f,\
+0.7435979112051427364349f,0.3391801547259092330933f,0.2479635034687817096710f,\
+0.6721735307946801185608f,0.9013197491876780986786f,0.2140864841639995574951f,\
+0.8460668534971773624420f,0.1650043567642569541931f,0.4003686285577714443207f,\
+0.5522825215011835098267f,0.0638249483890831470490f,0.6903966935351490974426f,\
+0.8547787251882255077362f,0.0291904583573341369629f,0.5434663915075361728668f,\
+0.6236743135377764701843f,0.2417052476666867733002f}
+
+#define CSOURCEI {0.5503273960202932357788f,0.6906704087741672992706f,0.9835249418392777442932f,\
+0.8285484607331454753876f,0.2062614001333713531494f,0.1944643096067011356354f,\
+0.4367609983310103416443f,0.8090620837174355983734f,0.8818644303828477859497f,\
+0.7404803228564560413361f,0.7542522149160504341126f,0.9921960639767348766327f,\
+0.9886121451854705810547f,0.0113218077458441257477f,0.9367801276966929435730f,\
+0.3874237253330647945404f,0.2886805813759565353394f,0.567788839805871248245f,\
+0.7295644441619515419006f,0.0303032915107905864716f,0.2795897088944911956787f,\
+0.7047131718136370182037f,0.7442112853750586509705f,0.8920237845741212368012f,\
+0.1081438604742288589478f,0.8751525697298347949982f,0.9068333031609654426575f,\
+0.2166852983646094799042f,0.4824190363287925720215f,0.7766945236362516880035f,\
+0.4510916722938418388367f,0.1300636469386518001556f,0.5505470838397741317749f,\
+0.6936193336732685565949f,0.1749099576845765113831f,0.8636093880049884319305f,\
+0.2150467522442340850830f,0.1886725709773600101471f,0.1796098565682768821716f,\
+0.4374312213622033596039f,0.8514516223222017288208f,0.7381969136185944080353f,\
+0.8102188156917691230774f,0.1460137623362243175507f,0.8999849110841751098633f,\
+0.4043733575381338596344f,0.0156995235010981559753f,0.6904196902178227901459f,\
+0.2990311514586210250855f,0.1383218024857342243195f,0.8478512773290276527405f,\
+0.3007262717001140117645f,0.229154746979475021362f,0.8078110129572451114655f,\
+0.3176332255825400352478f,0.6924462593160569667816f,0.1364154014736413955689f,\
+0.5433279541321098804474f,0.3276594849303364753723f,0.2006831648759543895721f,\
+0.5037304237484931945801f,0.4962565028108656406403f,0.8996161324903368949890f,\
+0.9357709079049527645111f,0.3390339072793722152710f,0.6029155333526432514191f,\
+0.4153500730171799659729f,0.3041478390805423259735f,0.8489827848970890045166f,\
+0.4482063786126673221588f,0.0903797810897231101990f,0.7382151386700570583344f,\
+0.2669597584754228591919f,0.8226196658797562122345f,0.3985779182985424995422f,\
+0.9789295899681746959686f,0.3041231036186218261719f,0.0663515278138220310211f,\
+0.6667758254334330558777f,0.7548807277344167232513f,0.1922533493489027023315f,\
+0.7942791883833706378937f,0.5580398896709084510803f,0.2016023616306483745575f,\
+0.787146832793951034546f,0.0955459238030016422272f,0.6623697867617011070252f,\
+0.864868474658578634262f,0.7013061288744211196899f,0.8015053984709084033966f,\
+0.9135685982182621955872f,0.6317234965972602367401f,0.9346773549914360046387f,\
+0.9157753759063780307770f,0.0510348035022616386414f,0.4329969524405896663666f,\
+0.9721843507140874862671f,0.8001508046872913837433f,0.8452261472120881080627f,\
+0.0610524858348071575165f,0.8168097324669361114502f,0.2101262793876230716705f,\
+0.3055453812703490257263f,0.9465212575159966945648f,0.9269728232175111770630f,\
+0.7737778765149414539337f,0.5893978821113705635071f,0.2377697187475860118866f,\
+0.5269544571638107299805f,0.0077543654479086399078f,0.8311711428686976432800f,\
+0.0268517597578465938568f,0.2591186594218015670776f,0.4641277943737804889679f,\
+0.6098861405625939369202f,0.0656952331773936748505f,0.6466812007129192352295f,\
+0.1018534512259066104889f,0.2742705782875418663025f,0.8162728524766862392426f,\
+0.3357750270515680313110f,0.4765891996212303638458f,0.8440040023997426033020f,\
+0.1785074654035270214081f,0.5855625644326210021973f,0.8426241897977888584137f,\
+0.7058847947046160697937f,0.7396617024205625057221f,0.9751448985189199447632f,\
+0.7606669445522129535675f,0.8236690396443009376526f,0.8889620001427829265595f,\
+0.7960178293287754058838f,0.3052428201772272586823f,0.6803312664851546287537f,\
+0.6412069997750222682953f,0.0988248009234666824341f,0.4654508423991501331329f,\
+0.6714970665052533149719f,0.5131103205494582653046f,0.8631567060947418212891f,\
+0.8328299173153936862946f,0.1687975851818919181824f,0.2961277081631124019623f,\
+0.2591485660523176193237f,0.1700844173319637775421f,0.9718958893790841102600f,\
+0.0695185582153499126434f,0.4696230851113796234131f,0.9544191421009600162506f,\
+0.3679352095350623130798f,0.2973918146453797817230f,0.0415310803800821304321f,\
+0.4892336544580757617950f,0.5171590568497776985169f,0.3534862431697547435761f,\
+0.2354387864470481872559f,0.6779259913600981235504f,0.3834532154724001884460f,\
+0.3174350797198712825775f,0.3418120350688695907593f,0.0535557498224079608917f,\
+0.9285596096888184547424f,0.3862650538794696331024f,0.4328473098576068878174f,\
+0.1581165478564798831940f,0.7887120461091399192810f,0.7448797873221337795258f,\
+0.5185996759682893753052f,0.8651678604073822498322f,0.1524438308551907539368f,\
+0.2392775672487914562225f,0.5761575847864151000977f,0.7395762302912771701813f,\
+0.0583172617480158805847f,0.6962534948252141475678f,0.4206145536154508590698f,\
+0.0281158541329205036163f,0.8313249954953789710999f,0.2333360086195170879364f,\
+0.8865877203643321990967f,0.3746785433031618595123f,0.87671328987926244736f,\
+0.4027077830396592617035f,0.2890332732349634170532f,0.8538430598564445972443f,\
+0.5499771209433674812317f,0.5128610017709434032440f,0.6321087554097175598145f,\
+0.4165538274683058261871f,0.3217771751806139945984f,0.9717370062135159969330f,\
+0.5348322447389364242554f,0.3416590173728764057159f,0.9565287167206406593323f,\
+0.9951003189198672771454f,0.3422884084284305572510f,0.7870580093003809452057f,\
+0.9234123295173048973084f,0.5238970420323312282562f}
+
+#define CRESULTR {0.8432166939003225003546f,1.028696846310626300536f,0.8741363651656853805960f,\
+1.0145139259460289604675f,0.4720540083473970804917f,0.4952416659876168192334f,\
+0.8651884064428800868996f,0.6910466586042781633736f,0.6666361606264414874090f,\
+0.6727093940540614935841f,0.8688705649614124615354f,0.8716907101266159196840f,\
+0.959306172735902795701f,0.5815972201878681913101f,0.8529353171823288448650f,\
+0.6323612148789939935156f,0.8925417496893577329331f,0.8977079570170535260942f,\
+0.7087222819700315090685f,0.9060158028150111508836f,0.8406257183559593393341f,\
+0.8378258601984284181796f,0.7591172919619637582400f,1.0385687027372507706957f,\
+0.7426169311676505957465f,0.9782382399865202637912f,0.6830656191716251157686f,\
+0.5981803109332550771882f,0.8314861127635455595453f,1.011450539647472002258f,\
+0.6464748892519300849102f,0.6578303557631125508820f,0.7481312014375646191056f,\
+0.9466832738110327882808f,0.6183009489366241284714f,0.8939481166511646925699f,\
+0.8123805134131761862548f,0.8772630865325246052322f,0.5308180535125875953995f,\
+0.7782537556049359261934f,0.7379946979653042582470f,0.8238088030668070382845f,\
+0.7027705686531833251252f,0.9605105126328297160399f,0.8941312697312054913468f,\
+0.7374641482216017784879f,0.8816465539160547315589f,0.8641531635219484863697f,\
+0.7879164327234249309839f,0.5731702653710250006114f,0.7831953532687397911971f,\
+0.6252910190572938953224f,0.5252142434850843866201f,0.7511253936013374543634f,\
+0.7367688115224660938551f,0.9388049677540464266201f,0.3835650562588603929015f,\
+0.5520782622396902539208f,0.4620041004215187374626f,0.753968196415999991622f,\
+0.6156379639362553612969f,0.9496353272389349564620f,0.8339637612267859489990f,\
+0.7959636817154828181131f,0.5275172507857687209665f,0.5514044508846071002139f,\
+0.6441142487726253529345f,0.8328463321559912424519f,1.0637408773050947008443f,\
+1.0155667426713801404503f,0.2709318224164963262446f,0.7917869572241151843173f,\
+0.8571412685012261833961f,0.8071256937996567071281f,0.7881067116954072471202f,\
+0.7201105910271731191941f,0.4974916923152819525633f,0.9550562531126176590846f,\
+0.8512952675658871370956f,0.7682506551752034118508f,0.9526163214553304836585f,\
+0.756785792150606484441f,0.5821581994240766499971f,0.8807562498788572558084f,\
+0.9178011959841433364815f,0.8384018774833429388238f,0.9005192643641398708709f,\
+1.0365709563884744071061f,0.9040270806600297914812f,1.0053433947417824700921f,\
+1.0186506185399304413863f,0.6220542372412505294221f,0.9288207542994831866778f,\
+0.7707938959111726440199f,0.63603233719709606486f,0.6441295538205468185211f,\
+0.7370617546735380720691f,1.0024537010421461502574f,1.0505138587196660715506f,\
+0.953608813532313304151f,0.7187463572209089601728f,0.7428380749761755996730f,\
+0.9266208094400342210051f,0.8841784551932333480195f,0.9840672842877067338918f,\
+0.9382321956452510658409f,0.8393030146072417707615f,0.8503757458476615127552f,\
+0.7145712412765103938028f,0.5826505086380492359766f,0.9155742917376128442442f,\
+0.8739880489156448550858f,0.8470155698847267045082f,0.9650636753683585755681f,\
+0.7314820521682621201620f,0.8914470068047345430173f,0.8031939281911506522960f,\
+0.5070351579739499348065f,0.7331953647718203459505f,0.9609459795569127438242f,\
+0.847153172323739211969f,0.7661900708888577105071f,0.9519994233321562582262f,\
+0.5940854373891888418058f,0.8888500969738630796968f,0.6766367900740852814323f,\
+0.8139959478095014633325f,0.9760840415848224260742f,1.0729430743093604228022f,\
+0.8617604247210989276695f,0.6907515785500089045002f,1.0470820008330794514961f,\
+0.7605256422767727730872f,0.8272295000550387022997f,0.6269868176753693456149f,\
+0.9734363297756469801669f,0.2617213661737881613689f,0.6805441931353264362059f,\
+0.709837674958288866733f,0.8069322418000910435154f,0.6852606023040614946496f,\
+0.6540897892889659948068f,0.7186585042731442607433f,0.6343284289266235553839f,\
+0.6825711485307393022737f,0.610883282746898181870f,0.7163489185444231743816f,\
+0.9770189769897136278232f,0.5867956626396594321804f,1.0750765659376522176416f,\
+0.6384005820717564283484f,0.3858687639762184984349f,0.3186007968636310749844f,\
+0.7397471191545493818254f,0.7055161810773808994668f,0.5968318319385850223569f,\
+0.5659466952073320955563f,1.0001490762521170196919f,0.7645570771657418385203f,\
+0.7377545989844320750706f,0.9516433749813681952645f,0.6866306949128065939547f,\
+1.0618728756326238915619f,0.5208322311777507929165f,0.6253215357738258761700f,\
+0.4548702015131091402900f,0.6499645432009629741899f,0.9907517258725765385563f,\
+0.9119111641770327736367f,0.7823013339720715775272f,0.9622054437069111898495f,\
+0.4500082630180006204590f,0.5764937377448445809947f,0.9818886833563331695274f,\
+0.6678434466414240322507f,1.0365982590716655842300f,0.4743068831608843738401f,\
+0.3802074434441635730764f,0.8040992937118037753308f,0.7973759350671048018455f,\
+0.7498672536100723373664f,0.7320754444197923316295f,0.7445011903920762952325f,\
+0.8914147503382092718738f,0.6264212402370327170686f,0.7540169824914779717062f,\
+0.8776882812655947274649f,0.9844634271419567816963f,0.6638769890354155878143f,\
+0.9458113966252766902088f,0.5131381594621587938221f,0.8518664381177757372043f,\
+0.812738510298055549796f,0.4535385196962208320670f,0.9669683162928227604382f,\
+1.040816644093084830658f,0.4316950876741513232204f,0.8660041994184899394327f,\
+0.9321942634710010944232f,0.6397933456564963705660f}
+
+#define CRESULTI {0.3263261982366231217512f,0.3357016264078308553920f,0.5625695149136477057894f,\
+0.4083475049199193351868f,0.2184722473340149073717f,0.1963327431456096394680f,\
+0.2524080275917597870894f,0.5853888978723345015709f,0.6614285891378552939557f,\
+0.5503716236174250875379f,0.4340417579628489397337f,0.5691216233293430182272f,\
+0.5152745668080026542057f,0.0097333750513688352402f,0.5491507438051371758903f,\
+0.3063310306018693363050f,0.1617182509817773616856f,0.3162436265422815528936f,\
+0.5147040404416135528365f,0.0167233791158154128376f,0.1662985694996903240917f,\
+0.4205606470816827258119f,0.4901820135407665146587f,0.4294486162653968763792f,\
+0.0728126817040040535955f,0.4473105496989639440209f,0.6637966234200971538115f,\
+0.1811203866159907804878f,0.2900944639504645650163f,0.3839508177567231839156f,\
+0.3488856874362309956617f,0.0988580458466166156484f,0.36794821735938526563f,\
+0.3663418129703439607425f,0.1414440314101028384197f,0.4830310461641617592044f,\
+0.1323559272370566086696f,0.1075347714236491863948f,0.1691821287725076283781f,\
+0.2810338004872128814249f,0.5768683871779194394236f,0.4480389811753019424501f,\
+0.5764461773381487352808f,0.0760084144919923321293f,0.5032733679892044120763f,\
+0.2741647566958217985267f,0.0089035245651246392590f,0.3994776154055512673580f,\
+0.1897607024294587774183f,0.1206637982137782894032f,0.5412770094909528095784f,\
+0.2404690476392074838241f,0.2181535914362372208242f,0.5377337924125580315149f,\
+0.2155582732432577419690f,0.3687913267931641758679f,0.1778256377212544814270f,\
+0.4920751198642726587096f,0.3546066849097115891709f,0.1330846352869425042176f,\
+0.4091125411822805202355f,0.2612879326286920989020f,0.5393616451432939884469f,\
+0.5878226164089255245671f,0.3213486447830481429477f,0.5467089832022555828672f,\
+0.3224195659455129092663f,0.1825954124653428600755f,0.3990552600779624370375f,\
+0.2206681056892876025000f,0.1667943253834255346035f,0.4661703075143642238665f,\
+0.1557268144037805002178f,0.5095982399018667008406f,0.2528705265313027639174f,\
+0.6797078130539779827757f,0.3056564645363825660773f,0.0347369736586594715644f,\
+0.3916242993690946527785f,0.4912984601114738780758f,0.1009080702371304705256f,\
+0.5247714720741629701450f,0.4792854332576366727f,0.1144484422667324668987f,\
+0.4288220783749939757357f,0.0569809815370433195292f,0.36777102554791152311f,\
+0.4171776516254488420543f,0.3878789385171945158781f,0.3986227007920866149959f,\
+0.4484209706404114204048f,0.5077720388168175391641f,0.5031527077021280547342f,\
+0.5940468527088033079409f,0.0401196609964555792049f,0.3361101426509159328937f,\
+0.6594999296529031607150f,0.3990961397296745039043f,0.4022917642620268408038f,\
+0.0320112843801534235899f,0.5682183459163515637513f,0.1414347799783703119037f,\
+0.1648707746240843652341f,0.5352546490793753664050f,0.470990570471244762718f,\
+0.4123594778064457178068f,0.3511234154134331153507f,0.1398027400878979753518f,\
+0.3687207284066310042370f,0.0066543882936226537647f,0.4539069906010949617681f,\
+0.0153616286808277956177f,0.1529597971009351853322f,0.2404648554390081682808f,\
+0.4168838721023755411466f,0.0368475258068726510552f,0.4025685317176705413367f,\
+0.1004402255189763004672f,0.1870378561196294198155f,0.4247235900050622126045f,\
+0.1981784628926891167478f,0.3110123830424602608957f,0.4432796815388754252396f,\
+0.1502372000465193591090f,0.3293933175156303350128f,0.6226562035634579661547f,\
+0.4335923272125510874453f,0.3788924267318253269465f,0.4544252728163645227433f,\
+0.4413447883722416142938f,0.5962122022024949341557f,0.4244949294494160807467f,\
+0.5233339844701030418861f,0.1844970592543655196760f,0.5425403272492764772395f,\
+0.3293523059298621991076f,0.1887977324286261304742f,0.3419695936679567616068f,\
+0.4729933970782203567218f,0.3179389135603382654516f,0.6298017886863316316948f,\
+0.6366327153805051430879f,0.1174393569255921254690f,0.2334182851178558948391f,\
+0.1898326398721546515169f,0.1392118774041107009953f,0.6783676670817878617825f,\
+0.0355768720222523482377f,0.4001589607861217867679f,0.4438842647772449079291f,\
+0.2881695442233370707541f,0.3853535740764292283345f,0.0651773014834273051177f,\
+0.330676282333628224208f,0.3665111238554681349910f,0.2961355479495680342872f,\
+0.2080043831343482141350f,0.3389124718789456314205f,0.2507682074527933790975f,\
+0.2151359545279972751430f,0.1795904033249649811577f,0.0389989482113152971521f,\
+0.4372272948094740319114f,0.3708152364207700224519f,0.3460997943417740696503f,\
+0.1738040295127169787559f,0.6067346706520863053314f,0.3759164722454063634061f,\
+0.2843476954448227456140f,0.5529633038042787163136f,0.0792158430677229186134f,\
+0.2658590818355930918138f,0.4997084504683915184842f,0.3766089999954101985580f,\
+0.0436608774416314404654f,0.3358357438535300443228f,0.4433991668140928599229f,\
+0.0369743604678396259322f,0.5169293158173903224295f,0.1463149302341813229322f,\
+0.5911631132684145306655f,0.2559015919459735610708f,0.5887924030165481159571f,\
+0.2258812650827625445604f,0.2307020058304501131108f,0.5661961730855942231955f,\
+0.3133100513489369687292f,0.2604774274143707435414f,0.4760737048049700770314f,\
+0.2202097738273190163927f,0.3135385365979036498274f,0.5703576069745146526202f,\
+0.3290309478154280209417f,0.3766593161719967164380f,0.4946018916047810187742f,\
+0.4780382426469301782035f,0.3964469578199069088598f,0.4544192798538850830425f,\
+0.4952896438554572622337f,0.4094267669310915347403f}
+
+
+
+
+void ssqrtsTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=ssqrts(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-7);
+ }
+}
+
+void csqrtsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=csqrts(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void ssqrtaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i,j;
+ j=1;
+ ssqrta(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void csqrtaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ csqrta(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testSqrt() {
+ printf("\n>>>> Float Square Root Tests\n");
+ ssqrtsTest();
+ csqrtsTest();
+ ssqrtaTest();
+ csqrtaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testSqrt() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/testSqrt.h b/2.3-1/src/c/elementaryFunctions/sqrt/testSqrt.h
new file mode 100644
index 00000000..8262de7c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/testSqrt.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTSQRT_H_
+#define _TESTSQRT_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "sqrt.h"
+#include "constant.h"
+
+void ssqrtsTest(void);
+
+void ssqrtaTest(void);
+
+void dsqrtsTest(void);
+
+void dsqrtaTest(void);
+
+void csqrtsTest(void);
+
+void csqrtaTest(void);
+
+void zsqrtsTest(void);
+
+void zsqrtaTest(void);
+
+int testSqrt(void);
+
+#endif /* !_TESTSQRT_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/zsqrta.c b/2.3-1/src/c/elementaryFunctions/sqrt/zsqrta.c
new file mode 100644
index 00000000..b6472951
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/zsqrta.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sqrt.h"
+
+void zsqrta(doubleComplex* in, int size, doubleComplex* out) {
+ int i = 0;
+ for (i = 0 ; i < size ; ++i) {
+ out[i] = zsqrts(in[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/sqrt/zsqrts.c b/2.3-1/src/c/elementaryFunctions/sqrt/zsqrts.c
new file mode 100644
index 00000000..3637ddd6
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/sqrt/zsqrts.c
@@ -0,0 +1,111 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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 <stdio.h>
+#include <math.h>
+#include "sqrt.h"
+#include "lapack.h"
+#include "abs.h"
+#include "sign.h"
+#include "pythag.h"
+
+#ifdef _MSC_VER
+#include <float.h>
+#define isnan(x) _isnan((double)x)
+#endif
+
+#define _sign(a, b) b >=0 ? a : -a
+
+doubleComplex zsqrts(doubleComplex in) {
+ double RMax = getOverflowThreshold();
+ double BRMin = 2 * getUnderflowThreshold();
+
+ double RealIn = zreals(in);
+ double ImgIn = zimags(in);
+
+ double RealOut = 0;
+ double ImgOut = 0;
+
+ if(RealIn == 0)
+ {/* pure imaginary case */
+ if(dabss(ImgIn >= BRMin))
+ RealOut = dsqrts(0.5 * dabss(ImgIn));
+ else
+ RealOut = dsqrts(dabss(ImgIn)) * dsqrts(0.5);
+
+ ImgOut = _sign(1, ImgIn) * RealOut;
+ }
+ else if( dabss(RealIn) <= RMax && dabss(ImgIn) <= RMax)
+ {/* standard case : a (not zero) and b are finite */
+ double Temp = dsqrts(2 * (dabss(RealIn) + dpythags(RealIn, ImgIn)));
+ /* overflow test */
+ if(Temp > RMax)
+ {/* handle (spurious) overflow by scaling a and b */
+ double RealTemp = RealIn / 16;
+ double ImgTemp = ImgIn / 16;
+ Temp = dsqrts(2 * (dabss(RealIn) + dpythags(RealIn, ImgTemp)));
+ if(RealTemp >= 0)
+ {
+ RealOut = 2 * Temp;
+ ImgOut = 4 * ImgTemp / Temp;
+ }
+ else
+ {
+ RealOut = 4 * dabss(ImgIn) / Temp;
+ ImgOut = _sign(2, ImgIn) * Temp;
+ }
+ }
+ else if(RealIn >= 0) /* classic switch to get the stable formulas */
+ {
+ RealOut = 0.5 * Temp;
+ ImgOut = ImgIn / Temp;
+ }
+ else
+ {
+ RealOut = dabss(ImgIn) / Temp;
+ ImgOut = (_sign(0.5, ImgIn)) * Temp;
+ }
+ }
+ else
+ {
+ /*
+ //Here we treat the special cases where a and b are +- 00 or NaN.
+ //The following is the treatment recommended by the C99 standard
+ //with the simplification of returning NaN + i NaN if the
+ //the real part or the imaginary part is NaN (C99 recommends
+ //something more complicated)
+ */
+
+ if(isnan(RealIn) == 1 || isnan(ImgIn) == 1)
+ {/* got NaN + i NaN */
+ RealOut = RealIn + ImgIn;
+ ImgOut = RealOut;
+ }
+ else if( dabss(ImgIn) > RMax)
+ {/* case a +- i oo -> result must be +oo +- i oo for all a (finite or not) */
+ RealOut = dabss(ImgIn);
+ ImgOut = ImgIn;
+ }
+ else if(RealIn < -RMax)
+ {/* here a is -Inf and b is finite */
+ RealOut = 0;
+ ImgOut = _sign(1, ImgIn) * dabss(RealIn);
+ }
+ else
+ {/* here a is +Inf and b is finite */
+ RealOut = RealIn;
+ ImgOut = 0;
+ }
+ }
+
+ return DoubleComplex(RealOut, ImgOut);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/Makefile.am b/2.3-1/src/c/elementaryFunctions/tan/Makefile.am
new file mode 100644
index 00000000..71fc0112
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/Makefile.am
@@ -0,0 +1,73 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libTan_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libTan.la
+
+libTan_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = stans.c \
+ dtans.c \
+ ctans.c \
+ ztans.c \
+ stana.c \
+ dtana.c \
+ ctana.c \
+ ztana.c
+
+HEAD = ../includes/tan.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/tan/libTan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatTan testDoubleTan
+
+TESTS = testFloatTan testDoubleTan
+
+#
+# -*- Tangeant Tests -*-
+#
+testFloatTan_SOURCES = testTan.h testFloatTan.c
+testFloatTan_CFLAGS = $(check_INCLUDES) -g
+testFloatTan_LDADD = $(check_LDADD)
+
+testDoubleTan_SOURCES = testTan.h testDoubleTan.c
+testDoubleTan_CFLAGS = $(check_INCLUDES) -g
+testDoubleTan_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/tan/Makefile.in b/2.3-1/src/c/elementaryFunctions/tan/Makefile.in
new file mode 100644
index 00000000..01d6aecf
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/Makefile.in
@@ -0,0 +1,818 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatTan$(EXEEXT) testDoubleTan$(EXEEXT)
+TESTS = testFloatTan$(EXEEXT) testDoubleTan$(EXEEXT)
+subdir = src/c/elementaryFunctions/tan
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libTan_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libTan_la-stans.lo libTan_la-dtans.lo \
+ libTan_la-ctans.lo libTan_la-ztans.lo libTan_la-stana.lo \
+ libTan_la-dtana.lo libTan_la-ctana.lo libTan_la-ztana.lo
+am_libTan_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libTan_la_OBJECTS = $(am_libTan_la_OBJECTS)
+libTan_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libTan_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleTan_OBJECTS = testDoubleTan-testDoubleTan.$(OBJEXT)
+testDoubleTan_OBJECTS = $(am_testDoubleTan_OBJECTS)
+am__DEPENDENCIES_1 = \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/tan/libTan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleTan_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleTan_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleTan_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatTan_OBJECTS = testFloatTan-testFloatTan.$(OBJEXT)
+testFloatTan_OBJECTS = $(am_testFloatTan_OBJECTS)
+testFloatTan_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatTan_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatTan_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libTan_la_SOURCES) $(testDoubleTan_SOURCES) \
+ $(testFloatTan_SOURCES)
+DIST_SOURCES = $(libTan_la_SOURCES) $(testDoubleTan_SOURCES) \
+ $(testFloatTan_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libTan_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libTan.la
+libTan_la_SOURCES = $(HEAD) $(SRC)
+SRC = stans.c \
+ dtans.c \
+ ctans.c \
+ ztans.c \
+ stana.c \
+ dtana.c \
+ ctana.c \
+ ztana.c
+
+HEAD = ../includes/tan.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/tan/libTan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Tangeant Tests -*-
+#
+testFloatTan_SOURCES = testTan.h testFloatTan.c
+testFloatTan_CFLAGS = $(check_INCLUDES) -g
+testFloatTan_LDADD = $(check_LDADD)
+testDoubleTan_SOURCES = testTan.h testDoubleTan.c
+testDoubleTan_CFLAGS = $(check_INCLUDES) -g
+testDoubleTan_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/tan/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/tan/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libTan.la: $(libTan_la_OBJECTS) $(libTan_la_DEPENDENCIES)
+ $(libTan_la_LINK) -rpath $(pkglibdir) $(libTan_la_OBJECTS) $(libTan_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleTan$(EXEEXT): $(testDoubleTan_OBJECTS) $(testDoubleTan_DEPENDENCIES)
+ @rm -f testDoubleTan$(EXEEXT)
+ $(testDoubleTan_LINK) $(testDoubleTan_OBJECTS) $(testDoubleTan_LDADD) $(LIBS)
+testFloatTan$(EXEEXT): $(testFloatTan_OBJECTS) $(testFloatTan_DEPENDENCIES)
+ @rm -f testFloatTan$(EXEEXT)
+ $(testFloatTan_LINK) $(testFloatTan_OBJECTS) $(testFloatTan_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-ctana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-ctans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-dtana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-dtans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-stana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-stans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-ztana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTan_la-ztans.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleTan-testDoubleTan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatTan-testFloatTan.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libTan_la-stans.lo: stans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-stans.lo -MD -MP -MF $(DEPDIR)/libTan_la-stans.Tpo -c -o libTan_la-stans.lo `test -f 'stans.c' || echo '$(srcdir)/'`stans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-stans.Tpo $(DEPDIR)/libTan_la-stans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stans.c' object='libTan_la-stans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-stans.lo `test -f 'stans.c' || echo '$(srcdir)/'`stans.c
+
+libTan_la-dtans.lo: dtans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-dtans.lo -MD -MP -MF $(DEPDIR)/libTan_la-dtans.Tpo -c -o libTan_la-dtans.lo `test -f 'dtans.c' || echo '$(srcdir)/'`dtans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-dtans.Tpo $(DEPDIR)/libTan_la-dtans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dtans.c' object='libTan_la-dtans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-dtans.lo `test -f 'dtans.c' || echo '$(srcdir)/'`dtans.c
+
+libTan_la-ctans.lo: ctans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-ctans.lo -MD -MP -MF $(DEPDIR)/libTan_la-ctans.Tpo -c -o libTan_la-ctans.lo `test -f 'ctans.c' || echo '$(srcdir)/'`ctans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-ctans.Tpo $(DEPDIR)/libTan_la-ctans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ctans.c' object='libTan_la-ctans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-ctans.lo `test -f 'ctans.c' || echo '$(srcdir)/'`ctans.c
+
+libTan_la-ztans.lo: ztans.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-ztans.lo -MD -MP -MF $(DEPDIR)/libTan_la-ztans.Tpo -c -o libTan_la-ztans.lo `test -f 'ztans.c' || echo '$(srcdir)/'`ztans.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-ztans.Tpo $(DEPDIR)/libTan_la-ztans.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztans.c' object='libTan_la-ztans.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-ztans.lo `test -f 'ztans.c' || echo '$(srcdir)/'`ztans.c
+
+libTan_la-stana.lo: stana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-stana.lo -MD -MP -MF $(DEPDIR)/libTan_la-stana.Tpo -c -o libTan_la-stana.lo `test -f 'stana.c' || echo '$(srcdir)/'`stana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-stana.Tpo $(DEPDIR)/libTan_la-stana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stana.c' object='libTan_la-stana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-stana.lo `test -f 'stana.c' || echo '$(srcdir)/'`stana.c
+
+libTan_la-dtana.lo: dtana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-dtana.lo -MD -MP -MF $(DEPDIR)/libTan_la-dtana.Tpo -c -o libTan_la-dtana.lo `test -f 'dtana.c' || echo '$(srcdir)/'`dtana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-dtana.Tpo $(DEPDIR)/libTan_la-dtana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dtana.c' object='libTan_la-dtana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-dtana.lo `test -f 'dtana.c' || echo '$(srcdir)/'`dtana.c
+
+libTan_la-ctana.lo: ctana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-ctana.lo -MD -MP -MF $(DEPDIR)/libTan_la-ctana.Tpo -c -o libTan_la-ctana.lo `test -f 'ctana.c' || echo '$(srcdir)/'`ctana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-ctana.Tpo $(DEPDIR)/libTan_la-ctana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ctana.c' object='libTan_la-ctana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-ctana.lo `test -f 'ctana.c' || echo '$(srcdir)/'`ctana.c
+
+libTan_la-ztana.lo: ztana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -MT libTan_la-ztana.lo -MD -MP -MF $(DEPDIR)/libTan_la-ztana.Tpo -c -o libTan_la-ztana.lo `test -f 'ztana.c' || echo '$(srcdir)/'`ztana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTan_la-ztana.Tpo $(DEPDIR)/libTan_la-ztana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztana.c' object='libTan_la-ztana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTan_la_CFLAGS) $(CFLAGS) -c -o libTan_la-ztana.lo `test -f 'ztana.c' || echo '$(srcdir)/'`ztana.c
+
+testDoubleTan-testDoubleTan.o: testDoubleTan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTan_CFLAGS) $(CFLAGS) -MT testDoubleTan-testDoubleTan.o -MD -MP -MF $(DEPDIR)/testDoubleTan-testDoubleTan.Tpo -c -o testDoubleTan-testDoubleTan.o `test -f 'testDoubleTan.c' || echo '$(srcdir)/'`testDoubleTan.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleTan-testDoubleTan.Tpo $(DEPDIR)/testDoubleTan-testDoubleTan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleTan.c' object='testDoubleTan-testDoubleTan.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTan_CFLAGS) $(CFLAGS) -c -o testDoubleTan-testDoubleTan.o `test -f 'testDoubleTan.c' || echo '$(srcdir)/'`testDoubleTan.c
+
+testDoubleTan-testDoubleTan.obj: testDoubleTan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTan_CFLAGS) $(CFLAGS) -MT testDoubleTan-testDoubleTan.obj -MD -MP -MF $(DEPDIR)/testDoubleTan-testDoubleTan.Tpo -c -o testDoubleTan-testDoubleTan.obj `if test -f 'testDoubleTan.c'; then $(CYGPATH_W) 'testDoubleTan.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleTan.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleTan-testDoubleTan.Tpo $(DEPDIR)/testDoubleTan-testDoubleTan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleTan.c' object='testDoubleTan-testDoubleTan.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTan_CFLAGS) $(CFLAGS) -c -o testDoubleTan-testDoubleTan.obj `if test -f 'testDoubleTan.c'; then $(CYGPATH_W) 'testDoubleTan.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleTan.c'; fi`
+
+testFloatTan-testFloatTan.o: testFloatTan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTan_CFLAGS) $(CFLAGS) -MT testFloatTan-testFloatTan.o -MD -MP -MF $(DEPDIR)/testFloatTan-testFloatTan.Tpo -c -o testFloatTan-testFloatTan.o `test -f 'testFloatTan.c' || echo '$(srcdir)/'`testFloatTan.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatTan-testFloatTan.Tpo $(DEPDIR)/testFloatTan-testFloatTan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatTan.c' object='testFloatTan-testFloatTan.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTan_CFLAGS) $(CFLAGS) -c -o testFloatTan-testFloatTan.o `test -f 'testFloatTan.c' || echo '$(srcdir)/'`testFloatTan.c
+
+testFloatTan-testFloatTan.obj: testFloatTan.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTan_CFLAGS) $(CFLAGS) -MT testFloatTan-testFloatTan.obj -MD -MP -MF $(DEPDIR)/testFloatTan-testFloatTan.Tpo -c -o testFloatTan-testFloatTan.obj `if test -f 'testFloatTan.c'; then $(CYGPATH_W) 'testFloatTan.c'; else $(CYGPATH_W) '$(srcdir)/testFloatTan.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatTan-testFloatTan.Tpo $(DEPDIR)/testFloatTan-testFloatTan.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatTan.c' object='testFloatTan-testFloatTan.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTan_CFLAGS) $(CFLAGS) -c -o testFloatTan-testFloatTan.obj `if test -f 'testFloatTan.c'; then $(CYGPATH_W) 'testFloatTan.c'; else $(CYGPATH_W) '$(srcdir)/testFloatTan.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/tan/ctana.c b/2.3-1/src/c/elementaryFunctions/tan/ctana.c
new file mode 100644
index 00000000..731407ee
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/ctana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tan.h"
+
+void ctana(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ctans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/ctans.c b/2.3-1/src/c/elementaryFunctions/tan/ctans.c
new file mode 100644
index 00000000..9a6bd8c1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/ctans.c
@@ -0,0 +1,45 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "lapack.h"
+#include "tan.h"
+#include "sqrt.h"
+#include "cos.h"
+#include "sinh.h"
+#include "sin.h"
+#include "log.h"
+#include "abs.h"
+
+#define localSign(x) x >= 0 ? 1.0f : -1.0f
+
+floatComplex ctans(floatComplex z) {
+ float Temp = 0.0f;
+ float Lim = 1.0f + slogs(2.0f / ssqrts((float) getRelativeMachinePrecision()));
+ float RealIn = creals(z);
+ float ImagIn = cimags(z);
+ float RealOut = 0.0f;
+ float ImagOut = 0.0f;
+
+ Temp = powf(scoss(RealIn), 2.0f) + powf(ssinhs(ImagIn), 2.0f);
+ RealOut = 0.5f * ssins(2 * RealIn) / Temp;
+ if(sabss(ImagIn) < Lim)
+ {
+ ImagOut = 0.5f * ssinhs(2.0f * ImagIn) / Temp;
+ }
+ else
+ {
+ ImagOut = localSign(ImagIn);
+ }
+
+ return FloatComplex(RealOut, ImagOut);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/dtana.c b/2.3-1/src/c/elementaryFunctions/tan/dtana.c
new file mode 100644
index 00000000..8a5f4f68
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/dtana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tan.h"
+
+void dtana(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dtans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/dtans.c b/2.3-1/src/c/elementaryFunctions/tan/dtans.c
new file mode 100644
index 00000000..888a2dae
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/dtans.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tan.h"
+
+double dtans(double x) {
+ return tan(x);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/i16tana.c b/2.3-1/src/c/elementaryFunctions/tan/i16tana.c
new file mode 100644
index 00000000..cbbe237b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/i16tana.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tan.h"
+
+void i16tana(int16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16tans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/i16tans.c b/2.3-1/src/c/elementaryFunctions/tan/i16tans.c
new file mode 100644
index 00000000..b7cc7bb7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/i16tans.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tan.h"
+
+float i16tans(int16 x) {
+ return (tanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/i8tana.c b/2.3-1/src/c/elementaryFunctions/tan/i8tana.c
new file mode 100644
index 00000000..4daeb471
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/i8tana.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tan.h"
+
+void i8tana(int8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8tans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/i8tans.c b/2.3-1/src/c/elementaryFunctions/tan/i8tans.c
new file mode 100644
index 00000000..0dc9f9a5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/i8tans.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tan.h"
+
+float i8tans(int8 x) {
+ return (tanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/stana.c b/2.3-1/src/c/elementaryFunctions/tan/stana.c
new file mode 100644
index 00000000..c228afe1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/stana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tan.h"
+
+void stana(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = stans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/stans.c b/2.3-1/src/c/elementaryFunctions/tan/stans.c
new file mode 100644
index 00000000..436c32e4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/stans.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tan.h"
+
+float stans(float x) {
+ return (tanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/testDoubleTan.c b/2.3-1/src/c/elementaryFunctions/tan/testDoubleTan.c
new file mode 100644
index 00000000..33c791d5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/testDoubleTan.c
@@ -0,0 +1,497 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testTan.h"
+
+#define SOURCE {0.7062616096809506416321,0.4090520101599395275116,0.3011248558759689331055,\
+0.1880126395262777805328,0.1796709178015589714050,0.2828889950178563594818,\
+0.7232380937784910202026,0.7360379849560558795929,0.1852612206712365150452,\
+0.7703790138475596904755,0.1914967410266399383545,0.7521587223745882511139,\
+0.6205883463844656944275,0.2807604051195085048676,0.2289868686348199844360,\
+0.5049233403988182544708,0.8354099662974476814270,0.8174716415815055370331,\
+0.0030740275979042053223,0.3677616142667829990387,0.8278525872156023979187,\
+0.72754097869619727135,0.5323124285787343978882,0.9267726917751133441925,\
+0.9542504185810685157776,0.3162104780785739421845,0.5789009965956211090088,\
+0.6881225542165338993073,0.3714061146602034568787,0.1705444059334695339203,\
+0.1954363007098436355591,0.978800852317363023758,0.9300233917310833930969,\
+0.5357720064930617809296,0.3947123587131500244141,0.1344871171750128269196,\
+0.7380615202710032463074,0.588114650454372167587,0.9113173168152570724487,\
+0.5682763461954891681671,0.1127616921439766883850,0.9478473584167659282684,\
+0.5237770043313503265381,0.8140139640308916568756,0.1400952627882361412048,\
+0.2763446993194520473480,0.9059953633695840835571,0.1379901585169136524200,\
+0.5603838684037327766419,0.3008610638789832592011,0.4767417535185813904,\
+0.8127435916103422641754,0.1988414181396365165710,0.1107953130267560482025,\
+0.2159351315349340438843,0.6467244853265583515167,0.6597879612818360328674,\
+0.0691898013465106487274,0.9164751060307025909424,0.8635670826770365238190,\
+0.5032854294404387474060,0.1832137755118310451508,0.8403698671609163284302,\
+0.9247214836068451404572,0.6229452537372708320618,0.2773811477236449718475,\
+0.2479109913110733032227,0.3891948559321463108063,0.0436578569933772087097,\
+0.8132526441477239131928,0.7686451207846403121948,0.4041520212776958942413,\
+0.8579940209165215492249,0.6993723283521831035614,0.0828925184905529022217,\
+0.9201254160143435001373,0.5200281282886862754822,0.9351884997449815273285,\
+0.8825624976307153701782,0.2245844271965324878693,0.2153332801535725593567,\
+0.4327089670114219188690,0.5800157263875007629395,0.8876141034997999668121,\
+0.5258982880041003227234,0.859640696551650762558,0.7337234076112508773804,\
+0.7134532411582767963409,0.1087165409699082374573,0.8477638359181582927704,\
+0.6594733335077762603760,0.7916418449021875858307,0.6067967480048537254334,\
+0.4102901122532784938812,0.1958728153258562088013,0.241527963895350694656,\
+0.5113455550745129585266,0.9119556057266891002655,0.0928984880447387695313,\
+0.7438839026726782321930,0.1938720373436808586121,0.4355978979729115962982,\
+0.9922429900616407394409,0.4533818070776760578156,0.8269640663638710975647,\
+0.8889675955288112163544,0.4682085178792476654053,0.3856786251999437808991,\
+0.4124865522608160972595,0.6955242282710969448090,0.0978972557932138442993,\
+0.8728604433126747608185,0.6359515609219670295715,0.4129665228538215160370,\
+0.0294486805796623229980,0.1809961968101561069489,0.7658103061839938163757,\
+0.1232470511458814144135,0.0170737411826848983765,0.8835507561452686786652,\
+0.3164170170202851295471,0.9378212536685168743134,0.3916359134018421173096,\
+0.0844073877669870853424,0.6934146797284483909607,0.4618808380328118801117,\
+0.9355291295796632766724,0.0842495900578796863556,0.5402926551178097724915,\
+0.5613215523771941661835,0.1306025832891464233398,0.5840523042716085910797,\
+0.0048661706969141960144,0.2761953338049352169037,0.7478824090212583541870,\
+0.0194325004704296588898,0.6444276878610253334045,0.2243968318216502666473,\
+0.2478402368724346160889,0.1196091384626924991608,0.1883201440796256065369,\
+0.3393343067727982997894,0.959958622232079505920,0.2847225037403404712677,\
+0.8766820700839161872864,0.2853349032811820507050,0.5103433504700660705566,\
+0.8752629184164106845856,0.5941145820543169975281,0.3945342986844480037689,\
+0.4661326166242361068726,0.0073588271625339984894,0.5170202488079667091370,\
+0.4690007264725863933563,0.6654530800879001617432,0.9476742581464350223541,\
+0.4933638339862227439880,0.2918433747254312038422,0.2016727942973375320435,\
+0.7016656589694321155548,0.8736049132421612739563,0.191055159550160169601,\
+0.5307010114192962646484,0.8889481076039373874664,0.0115523664280772209167,\
+0.4998398735187947750092,0.6700848620384931564331,0.4995208983309566974640,\
+0.1538907447829842567444,0.2571737091057002544403,0.9586529098451137542725,\
+0.6246025026775896549225,0.9371285131201148033142,0.9923511571250855922699,\
+0.3454555813223123550415,0.7558249053545296192169,0.2107181670144200325012,\
+0.9372652801685035228729,0.6767524704337120056152,0.7465373151935636997223,\
+0.4050982249900698661804,0.5101723610423505306244,0.9497965183109045028687,\
+0.0289692510850727558136,0.1634070957079529762268,0.4146909262053668498993,\
+0.0021650679409503936768,0.1810030029155313968658,0.4556188201531767845154,\
+0.1977851442061364650726,0.6053877938538789749146,0.4363054675050079822540,\
+0.8938506888225674629211,0.6104825991205871105194,0.4316215068101882934570,\
+0.2315693595446646213532,0.4675927339121699333191,0.6150764389894902706146,\
+0.8621218334883451461792,0.3846137975342571735382}
+
+#define RESULT {0.8530491813252144561730,0.4335045992710032103368,0.3105691712500722179158,\
+0.1902597554084684006170,0.1816295703181560194928,0.2906848138476661458363,\
+0.8828132281173867168533,0.9058504084575731418738,0.1874102230574337113467,\
+0.9704039825071290037428,0.193872386487773856745,0.9356368085981127125095,\
+0.7147975865621483126944,0.2883777870673323029394,0.233074941053011769343,\
+0.5527124758136455762170,1.1053818146408691536209,1.0662960354617996294735,\
+0.0030740372807646679752,0.3852902674825339213172,1.0887291048642380175693,\
+0.8904988483295813717078,0.589027514944382324380,1.3318828819928720808008,\
+1.4110197782284186196478,0.3271889768526293207351,0.6535988324182537834162,\
+0.8221846610900451768345,0.3894816929387301396304,0.1722173220386573888607,\
+0.1979631660252146874157,1.4871003608159341080608,1.3409392796872054987034,\
+0.5936969391438152721108,0.4165742349308056979851,0.1353038396146245825324,\
+0.9095411562053630216695,0.666828524289825752547,1.2898724607003566600127,\
+0.6385394321030002373618,0.1132420646312260748001,1.3920395973271377787484,\
+0.5775879319584731330650,1.058934135979150648055,0.141019050913288951365,\
+0.2836009152345423944830,1.2757925164705434806223,0.1388727177433937698403,\
+0.6274844177211460483079,0.3102799593553379198241,0.5164764951302321938087,\
+1.0562428612021228513385,0.2015041286208432702587,0.1112509099475587071026,\
+0.2193551393571971375174,0.7550487488328985197228,0.7757652108685924030596,\
+0.0693004223106622879724,1.3037037706937266712259,1.1699705921283873877314,\
+0.550576129776577216646,0.1852916762694652719201,1.1164629082914852009623,\
+1.3262085052804502005586,0.7183647379901514362643,0.2847210542962326229599,\
+0.2531178933037822043062,0.4101140401836267934677,0.0436856155719798008863,\
+1.0573204171612526902635,0.9670429620877326604145,0.4276960657258361830913,\
+1.156854335998896532445,0.8412159741625684361566,0.0830828979444599852178,\
+1.3136054718047147638060,0.5725991803557812787062,1.355492790615370424234,\
+1.2159959299593459114419,0.2284380696339281535678,0.2187244120791704826701,\
+0.4619038629088654257515,0.6551909258647544698206,1.228594570395200147317,\
+0.5804203670779729540286,1.1607121297665823345113,0.9016453790519162181383,\
+0.8655510240366158791758,0.1091468929729377396187,1.133211951033040509884,\
+0.7752613593928633362040,1.0125659843026109108166,0.6941614960626277808231,\
+0.4349761638068749824981,0.1984168266250701806452,0.2463367776963759914199,\
+0.5611266025781723732,1.2915741173940875619053,0.0931666557927946503703,\
+0.9202369550199469561136,0.1963381019951347117303,0.4654138557801037467954,\
+1.531152598161082067918,0.4872328317068129743817,1.0867892686527245160732,\
+1.231996743210198141938,0.5057142067082607272965,0.4060123002390389479466,\
+0.4375906817398340642455,0.8346659585500807443381,0.0982112043307575288686,\
+1.1922276352973026902760,0.7382700256000707117465,0.4381626799731911381386,\
+0.0294571964089862109448,0.1829988997674065476229,0.9615720911131384607273,\
+0.1238749003414561927761,0.0170754004466078072866,1.2184484210758381728112,\
+0.3274176417863428056876,1.3629896342945482246023,0.4129685310508503515159,\
+0.0846084171803287293789,0.8310930423770829245100,0.4977934831990530883950,\
+1.3564597268158093967827,0.0844494919835185042789,0.5998275037194918946071,\
+0.6287920720664262885791,0.1313502491565903540494,0.6609756367352789263592,\
+0.0048662091069645377339,0.2834395431640467921675,0.9276488528261589427970,\
+0.0194349468870056892034,0.7514487870197579244547,0.2282406932471093830017,\
+0.2530426070707028074480,0.1201828114589197499251,0.1905784099029704803385,\
+0.352988062986135442411,1.428231701456014857143,0.2926743123472941854324,\
+1.2015237487616485800856,0.2933392882321691486069,0.5598095809652490206787,\
+1.1980617264883439698764,0.6755313107918682336006,0.4163652909127465440164,\
+0.5031101302799753094419,0.0073589599979746594949,0.5686119631638693050491,\
+0.5067094190821778143530,0.7848798186452353720100,1.391531190313842980544,\
+0.5377167840923406938458,0.3004214213647905529214,0.2044521595617958820146,\
+0.8451397437154636316237,1.1940319015577840477960,0.1934142466999154985619,\
+0.5868590674474564172769,1.2319476773796440571829,0.0115528803708900857511,\
+0.5460945923736312268559,0.792392311128046200608,0.5456805647330320585553,\
+0.1551171962759635702955,0.2629975069837691137309,1.4242699230594764170377,\
+0.7208802037485926295091,1.3610118285291581408103,1.5315144150725372718114,\
+0.3598870449025589057790,0.9425361247426047306419,0.2138933525822492576207,\
+1.3614020090881830959972,0.8033042279594378998198,0.925149379458894971506,\
+0.4288158062140490778269,0.5595850272060393093554,1.397781375537582970736,\
+0.0289773576405878592610,0.1648772252909011803990,0.4402197018088547242343,\
+0.0021650713238892428658,0.1830059338084651376910,0.4900039273308094966986,\
+0.2004051993228692374327,0.6920756616600035604492,0.4662749757103929471036,\
+1.244365984627544330365,0.6996374475054760733173,0.4605850493651166277509,\
+0.2357993689411847226811,0.5049411785573922895054,0.7065020490746397596737,\
+1.16655281751026174142,0.4047724755535024310227}
+
+#define ZSOURCER {0.6045256052166223526001,0.9455216196365654468536,0.4476299257948994636536,\
+0.8624908211641013622284,0.1751048639416694641113,0.2067177616991102695465,\
+0.6848411662504076957703,0.1348653226159512996674,0.0069159921258687973022,\
+0.1496290047653019428253,0.5665438110008835792542,0.4359452719800174236298,\
+0.6547604538500308990479,0.3381605879403650760651,0.4259321158751845359802,\
+0.3060420057736337184906,0.7704779822379350662231,0.7058695447631180286408,\
+0.2373670237138867378235,0.8205849635414779186249,0.6789963841438293457031,\
+0.5250809141434729099274,0.3359806565567851066589,0.8941988362930715084076,\
+0.5461782198399305343628,0.7568633262999355792999,0.0259526828303933143616,\
+0.3250150899402797222138,0.6072143577039241791,0.8756139636971056461334,\
+0.2962085595354437828064,0.4229678637348115444183,0.4243144039064645767212,\
+0.7620028969831764698029,0.3622896494343876838684,0.5658242437057197093964,\
+0.6424440070986747741699,0.7580267959274351596832,0.2531452132388949394226,\
+0.5266989110969007015228,0.2118590380996465682983,0.4779220153577625751495,\
+0.1615962767973542213440,0.9168031658045947551727,0.5461866445839405059815,\
+0.4686870560981333255768,0.7772213732823729515076,0.5871783248148858547211,\
+0.5848031807690858840942,0.3139644009061157703400,0.3204141603782773017883,\
+0.3331634956412017345429,0.2282590121030807495117,0.2750317254103720188141,\
+0.4963629124686121940613,0.7453477247618138790131,0.1155001949518918991089,\
+0.0626524840481579303741,0.0877018878236413002014,0.5507565210573375225067,\
+0.2116370312869548797607,0.8335358710028231143951,0.4045845707878470420837,\
+0.2880227542482316493988,0.1750094983726739883423,0.0051561561413109302521,\
+0.3109287889674305915833,0.6602919283322989940643,0.9722995534539222717285,\
+0.9826813959516584873200,0.0455837054178118705750,0.4096118300221860408783,\
+0.7104403134435415267944,0.3917615194804966449738,0.5571686858311295509338,\
+0.0565565521828830242157,0.1540721096098423004150,0.9109257892705500125885,\
+0.5713340407237410545349,0.3488348922692239284515,0.8972954172641038894653,\
+0.2973396372981369495392,0.1091936426237225532532,0.7626331257633864879608,\
+0.6584706604480743408203,0.6996708759106695652008,0.6756794182583689689636,\
+0.9004421546123921871185,0.6668148916214704513550,0.8518152837641537189484,\
+0.8365677157416939735413,0.1291190306656062602997,0.6095453463494777679443,\
+0.2412315667606890201569,0.4029275467619299888611,0.3019328541122376918793,\
+0.1083198729902505874634,0.8456356939859688282013,0.9417407037690281867981,\
+0.9083450469188392162323,0.1937242373824119567871,0.5318046086467802524567,\
+0.8314437521621584892273,0.4952740012668073177338,0.7465563025325536727905,\
+0.7102393140085041522980,0.5811418974772095680237,0.7035941029898822307587,\
+0.3746570833027362823486,0.3394373343326151371002,0.6322447275742888450623,\
+0.7636191300116479396820,0.6940386760979890823364,0.8735245508141815662384,\
+0.3612738298252224922180,0.7933200257830321788788,0.4830590635538101196289,\
+0.2469964125193655490875,0.5025922833010554313660,0.7430270477198064327240,\
+0.6783937942236661911011,0.4903185223229229450226,0.709806025959551334381,\
+0.3303662906400859355927,0.6815545372664928436279,0.0701365978457033634186,\
+0.4745870968326926231384,0.8091805852018296718597,0.9447045121341943740845,\
+0.5478458073921501636505,0.1216687532141804695129,0.9161847713403403759003,\
+0.3045207932591438293457,0.6502694808878004550934,0.0987624628469347953796,\
+0.8391053467057645320892,0.0328534897416830062866,0.3461971958167850971222,\
+0.2801467711105942726135,0.5500544901005923748016,0.0729318000376224517822,\
+0.0225322381593286991119,0.50267804320901632309,0.3478884599171578884125,\
+0.4298669416457414627075,0.3537984383292496204376,0.0529730813577771186829,\
+0.9533003675751388072968,0.1842019557952880859375,0.958756382111459970474,\
+0.3245136169716715812683,0.0003973259590566158295,0.0972583871334791183472,\
+0.4378789965994656086,0.3634226778522133827210,0.2685119728557765483856,\
+0.2770298384130001068115,0.8854365111328661441803,0.5216628303751349449158,\
+0.4979983693920075893,0.8733724001795053482056,0.4699407932348549365997,\
+0.9364062966778874397278,0.1337622734718024730682,0.2712419554591178894043,\
+0.1766990595497190952301,0.0543269468471407890320,0.8402757882140576839447,\
+0.7507283594459295272827,0.3062269617803394794464,0.9195641661062836647034,\
+0.1318263853900134563446,0.0826364941895008087158,0.8222710476256906986237,\
+0.4441085970029234886169,0.9617503038607537746429,0.0283641982823610305786,\
+0.1431905967183411121368,0.3793597565963864326477,0.6144003230147063732147,\
+0.2128270715475082397461,0.4704488315619528293610,0.2076055286452174186707,\
+0.7435979112051427364349,0.3391801547259092330933,0.2479635034687817096710,\
+0.6721735307946801185608,0.9013197491876780986786,0.2140864841639995574951,\
+0.8460668534971773624420,0.1650043567642569541931,0.4003686285577714443207,\
+0.5522825215011835098267,0.0638249483890831470490,0.6903966935351490974426,\
+0.8547787251882255077362,0.0291904583573341369629,0.5434663915075361728668,\
+0.6236743135377764701843,0.2417052476666867733002}
+
+#define ZSOURCEI {0.5503273960202932357788,0.6906704087741672992706,0.9835249418392777442932,\
+0.8285484607331454753876,0.2062614001333713531494,0.1944643096067011356354,\
+0.4367609983310103416443,0.8090620837174355983734,0.8818644303828477859497,\
+0.7404803228564560413361,0.7542522149160504341126,0.9921960639767348766327,\
+0.9886121451854705810547,0.0113218077458441257477,0.9367801276966929435730,\
+0.3874237253330647945404,0.2886805813759565353394,0.567788839805871248245,\
+0.7295644441619515419006,0.0303032915107905864716,0.2795897088944911956787,\
+0.7047131718136370182037,0.7442112853750586509705,0.8920237845741212368012,\
+0.1081438604742288589478,0.8751525697298347949982,0.9068333031609654426575,\
+0.2166852983646094799042,0.4824190363287925720215,0.7766945236362516880035,\
+0.4510916722938418388367,0.1300636469386518001556,0.5505470838397741317749,\
+0.6936193336732685565949,0.1749099576845765113831,0.8636093880049884319305,\
+0.2150467522442340850830,0.1886725709773600101471,0.1796098565682768821716,\
+0.4374312213622033596039,0.8514516223222017288208,0.7381969136185944080353,\
+0.8102188156917691230774,0.1460137623362243175507,0.8999849110841751098633,\
+0.4043733575381338596344,0.0156995235010981559753,0.6904196902178227901459,\
+0.2990311514586210250855,0.1383218024857342243195,0.8478512773290276527405,\
+0.3007262717001140117645,0.229154746979475021362,0.8078110129572451114655,\
+0.3176332255825400352478,0.6924462593160569667816,0.1364154014736413955689,\
+0.5433279541321098804474,0.3276594849303364753723,0.2006831648759543895721,\
+0.5037304237484931945801,0.4962565028108656406403,0.8996161324903368949890,\
+0.9357709079049527645111,0.3390339072793722152710,0.6029155333526432514191,\
+0.4153500730171799659729,0.3041478390805423259735,0.8489827848970890045166,\
+0.4482063786126673221588,0.0903797810897231101990,0.7382151386700570583344,\
+0.2669597584754228591919,0.8226196658797562122345,0.3985779182985424995422,\
+0.9789295899681746959686,0.3041231036186218261719,0.0663515278138220310211,\
+0.6667758254334330558777,0.7548807277344167232513,0.1922533493489027023315,\
+0.7942791883833706378937,0.5580398896709084510803,0.2016023616306483745575,\
+0.787146832793951034546,0.0955459238030016422272,0.6623697867617011070252,\
+0.864868474658578634262,0.7013061288744211196899,0.8015053984709084033966,\
+0.9135685982182621955872,0.6317234965972602367401,0.9346773549914360046387,\
+0.9157753759063780307770,0.0510348035022616386414,0.4329969524405896663666,\
+0.9721843507140874862671,0.8001508046872913837433,0.8452261472120881080627,\
+0.0610524858348071575165,0.8168097324669361114502,0.2101262793876230716705,\
+0.3055453812703490257263,0.9465212575159966945648,0.9269728232175111770630,\
+0.7737778765149414539337,0.5893978821113705635071,0.2377697187475860118866,\
+0.5269544571638107299805,0.0077543654479086399078,0.8311711428686976432800,\
+0.0268517597578465938568,0.2591186594218015670776,0.4641277943737804889679,\
+0.6098861405625939369202,0.0656952331773936748505,0.6466812007129192352295,\
+0.1018534512259066104889,0.2742705782875418663025,0.8162728524766862392426,\
+0.3357750270515680313110,0.4765891996212303638458,0.8440040023997426033020,\
+0.1785074654035270214081,0.5855625644326210021973,0.8426241897977888584137,\
+0.7058847947046160697937,0.7396617024205625057221,0.9751448985189199447632,\
+0.7606669445522129535675,0.8236690396443009376526,0.8889620001427829265595,\
+0.7960178293287754058838,0.3052428201772272586823,0.6803312664851546287537,\
+0.6412069997750222682953,0.0988248009234666824341,0.4654508423991501331329,\
+0.6714970665052533149719,0.5131103205494582653046,0.8631567060947418212891,\
+0.8328299173153936862946,0.1687975851818919181824,0.2961277081631124019623,\
+0.2591485660523176193237,0.1700844173319637775421,0.9718958893790841102600,\
+0.0695185582153499126434,0.4696230851113796234131,0.9544191421009600162506,\
+0.3679352095350623130798,0.2973918146453797817230,0.0415310803800821304321,\
+0.4892336544580757617950,0.5171590568497776985169,0.3534862431697547435761,\
+0.2354387864470481872559,0.6779259913600981235504,0.3834532154724001884460,\
+0.3174350797198712825775,0.3418120350688695907593,0.0535557498224079608917,\
+0.9285596096888184547424,0.3862650538794696331024,0.4328473098576068878174,\
+0.1581165478564798831940,0.7887120461091399192810,0.7448797873221337795258,\
+0.5185996759682893753052,0.8651678604073822498322,0.1524438308551907539368,\
+0.2392775672487914562225,0.5761575847864151000977,0.7395762302912771701813,\
+0.0583172617480158805847,0.6962534948252141475678,0.4206145536154508590698,\
+0.0281158541329205036163,0.8313249954953789710999,0.2333360086195170879364,\
+0.8865877203643321990967,0.3746785433031618595123,0.87671328987926244736,\
+0.4027077830396592617035,0.2890332732349634170532,0.8538430598564445972443,\
+0.5499771209433674812317,0.5128610017709434032440,0.6321087554097175598145,\
+0.4165538274683058261871,0.3217771751806139945984,0.9717370062135159969330,\
+0.5348322447389364242554,0.3416590173728764057159,0.9565287167206406593323,\
+0.9951003189198672771454,0.3422884084284305572510,0.7870580093003809452057,\
+0.9234123295173048973084,0.5238970420323312282562}
+
+#define ZRESULTR {0.4622549506274005182149,0.52703543104286754151,0.1827556517526441881572,\
+0.3854184255425531224759,0.1693791983359425601385,0.2016515153621968869935,\
+0.6100517388487384229379,0.0743340542544716487150,0.0034555684806514769605,\
+0.0902156984479902251950,0.3241135973562218053345,0.1760110212342378688266,\
+0.2452633832131958513401,0.3516179963878625636120,0.1885474403955421374146,\
+0.2692513911062309750477,0.8321367071581778906975,0.5264631357733180472280,\
+0.1448019483693787634593,1.0708552390146606203558,0.7125992289896019293849,\
+0.3253494174977278885486,0.2001345889867806593365,0.343199696050296210181,\
+0.5982400693418048476246,0.3303593637710269814711,0.0125118697596118978038,\
+0.3199717638395740970658,0.5061472843217617034739,0.4295842023027047207329,\
+0.2465282516242081889413,0.441112206343829249544,0.3219119603275076846316,\
+0.4595743499683106469966,0.3660794615870797685808,0.2720878846188879984780,\
+0.6972660654407580871350,0.8861718442431221198774,0.2499974132956042649489,\
+0.4568598941148580561134,0.1097116340955419794279,0.2836394335106861008811,\
+0.0888432657814137161090,1.2330526748467487418992,0.2488174581727523593244,\
+0.4160762578947443945943,0.9833017375902159962209,0.3688379479484371614717,\
+0.5845995722843282393910,0.3179368621558099627933,0.1652197278936747004696,\
+0.3133619394599517771205,0.2199213980004723900663,0.150759611907827051347,\
+0.4771998617931776376366,0.4525965638532219448287,0.1138559184839921800680,\
+0.0472861014102091622990,0.0790630167394415495075,0.5814611436078345185763,\
+0.1667238962880819019841,0.6920944670661310915705,0.1906861485587098559158,\
+0.1307919466930784202496,0.1574308648240616004266,0.0036575163164140646332,\
+0.2674520780172894851567,0.6735689731298903915047,0.378774827327838792268,\
+0.8834054385824835486929,0.0452439501756518244746,0.2447083220521515389834,\
+0.7633578523125562620422,0.2078243181020067997800,0.5055052026142557997090,\
+0.0245040445592060660007,0.1414831146311008314154,1.2738839652002900137973,\
+0.3722074374977639710238,0.2046196449929307825677,1.143222534499549469800,\
+0.1658122283683383380026,0.0812521009905448621247,0.8856778536505196530726,\
+0.3496455120553698669994,0.8287603905975037266174,0.4374379182437952429119,\
+0.3632754548631693114480,0.4065565887334736672187,0.4042071334744706256892,\
+0.3223163664494689273354,0.0887658719864259648791,0.2562423384997916109285,\
+0.1135016065651749256338,0.4249393631867034448746,0.2555315607462380622650,\
+0.0473167224981555015195,0.4038863981107233547263,0.3812800945055046519805,\
+1.2694612396144742128001,0.1054006198029389801407,0.5548755616229488207836,\
+0.9047138472187979951755,0.2120875774680325287491,0.2977497737582537329359,\
+0.3793852632159244175902,0.4216852391721442327999,0.7719661269702553507699,\
+0.2909766448133100369411,0.3530800537032807717708,0.3144419867733496687379,\
+0.9560423318471079623393,0.7455173297127551945707,0.7647697575929581770282,\
+0.2552307563419532465687,1.0071246904841177904899,0.3254058309317561237251,\
+0.2493837937457981657197,0.4995060266703120754883,0.3635478722517977989703,\
+0.6755663854502449439110,0.4060422219779377672744,0.3354119513743121228089,\
+0.3310200365444659897918,0.4956952069626366363941,0.0369899619573449203735,\
+0.2949888674609426608697,0.4417162785414836534415,0.2901327037722924995222,\
+0.3113814080983853260776,0.0657705595388366343057,0.3468932593605689174154,\
+0.1693138876335541220808,0.6604383641650866110240,0.0641696842881706724926,\
+0.5420718455446384975716,0.0325460783396350344931,0.2856018727381676169941,\
+0.1837045440337584378820,0.4394912998560263073244,0.0373805900188774464787,\
+0.0120513737523088183129,0.5299342664002043568061,0.3290248923514364487453,\
+0.4232813397541956845771,0.3574733895472496092438,0.0231976592717455104564,\
+1.388138041383984555566,0.1495922092250967505578,0.3027074594945061147833,\
+0.2906013786665496145822,0.0003641583735012103801,0.0973965246964013098285,\
+0.3558085542679609303285,0.2850038039654740895657,0.2413433027684695197923,\
+0.2679865438260303767137,0.5240490385593890021454,0.4768351880953459742685,\
+0.479037567928660701355,0.9219838892273597430460,0.5060637477109658499686,\
+0.3200337217432840941633,0.1160441175011530240413,0.2289284118436291093346,\
+0.1740340532494602521219,0.0308192365918868102503,0.4474996159504823212139,\
+0.601992209828681956729,0.1542000078067730650666,1.2334589409579821417395,\
+0.1251630868814269104128,0.0603288006292757861271,0.4462414520672394746548,\
+0.4738309669088760500699,0.5239025685810345667193,0.0238870191275340100490,\
+0.1440610501660575526461,0.1990046768508525187880,0.6514000598731057856128,\
+0.1047897932784156715957,0.429099188123020058860,0.1037294840964696623908,\
+0.6989271583573236634734,0.3217396834648525993927,0.1276324483471362458698,\
+0.51478179757014652651,0.7241126844123151329313,0.1471790945486320945079,\
+0.7963244963417922539506,0.1499982428024713432269,0.1685430842340138735125,\
+0.4298103979039861188838,0.0569704807929593617932,0.2690745622378380996764,\
+0.2759880123858853839813,0.0260258640811948625815,0.2968457197721043328009,\
+0.2658449701658989750008,0.1869340145100120420540}
+
+#define ZRESULTI {0.6606731609576530495076,1.0352924413907944600766,0.8208009210718538728457,\
+0.9855228198847613141354,0.2094799364238341676803,0.2001711092576675676824,\
+0.6157063400955946619320,0.6758210089185754387842,0.7073690227519786599686,\
+0.6379959312114483749312,0.7691489792855270568595,0.8204717538076390370705,\
+0.8992691795054111869590,0.0127212399656787735619,0.7965072880961274748302,\
+0.4005414846539865347808,0.5078102333041875082742,0.7442675929748912011519,\
+0.6446164613619681515999,0.0651017559751383007027,0.4292463160345246220295,\
+0.7218268661973539224164,0.675831849442214971369,1.016847265460205207432,\
+0.1468976923106849463707,0.923642083424730087060,0.7198425877508842773977,\
+0.2363604106893440193193,0.6057859843456331327971,0.9859934125773722746189,\
+0.4546059235344489524167,0.1550160776744255175519,0.5737784438019621902072,\
+0.8635696530908816281880,0.1971722712896061546761,0.8187472766310414096225,\
+0.3223047939566238695441,0.3428986541358745587793,0.1891956718334251719149,\
+0.5208354545548833369750,0.7081524694874962166935,0.7203267007574796210179,\
+0.6794103936977667901331,0.3782115660166653348107,0.8246286245352181243362,\
+0.4645139855543011786487,0.0308839406628786498910,0.7450942218464524646748,\
+0.4028312748892641792509,0.1516356705950959171680,0.7277735925258916882541,\
+0.3236400086381776008970,0.2367328033923032648556,0.6968150511733807173087,\
+0.3868027398676305850245,0.8499965389936866566600,0.1373663005352325217068,\
+0.4969728656393965771088,0.3186158192908606912042,0.2687494032146487410451,\
+0.4817044586911616854685,0.8091241454316642212064,0.7745837276131475324092,\
+0.7616864033669616951272,0.3357065002058312042088,0.5391311137157557276112,\
+0.4267832806356777752832,0.4494653959304828472199,1.07409232431056356205,\
+0.9773946189840253540027,0.0903205143448218145119,0.6947943813727951445358,\
+0.4320600869989819070582,0.7345738223824911372617,0.4980076917918512258154,\
+0.753646277499480543582,0.3015650137112788620186,0.1750320030662110004638,\
+0.7223173121894863601966,0.6855367528648522723600,0.4620100861135144620917,\
+0.6944021533252422440086,0.5110335784375538148439,0.3672451576697671193905,\
+0.8344551064956932107108,0.16170594539219715347,0.7832786921268890534265,\
+1.0189285776822756268700,0.7988551639208606447440,0.9719247807905779801274,\
+0.9809763387972041392970,0.5656833224514162816732,0.8638733429144607178785,\
+0.7441066604777042403640,0.0602264440127683667314,0.4402801210484636462716,\
+0.7535199884397705272221,0.9667811691361050119298,1.0493588871220529412653,\
+0.1602121578348635611011,0.6872528304663769738170,0.2746926003887739664577,\
+0.5904217499472341756928,0.8227770718789775283852,0.9300490141104427177510,\
+0.8608967966610167055208,0.6761042332942854837796,0.3862514929365022942065,\
+0.5383206023328632738867,0.0087209580621782408633,0.8379947814437334052684,\
+0.0514162894427564812205,0.4107196425718538934646,0.8291800128662117908007,\
+0.5965153474380232578866,0.1327243053149035900695,0.6666204349503430659496,\
+0.1078852700862242136592,0.3410661266092010479589,0.8978136284012265821986,\
+0.4999590426790496699994,0.5396356462900459005638,0.8861720904164178680418,\
+0.1966865820582558155305,0.7384948934734244518907,0.6889822634082830576929,\
+0.7002461629632836803694,0.9202927678328401972507,1.0522470356995357043672,\
+0.7633410819201092989417,0.6825068129840573538658,1.032180426666563732852,\
+0.6970224139462883883311,0.4448502829538992786596,0.5954971038562514307202,\
+0.9072269118636318019355,0.0986096977623509007849,0.4792818549998886235031,\
+0.6169344532127701841162,0.5996614784596430158814,0.6997864810760641152143,\
+0.6821778350957495851148,0.2159298191152681511973,0.3221001280586711645881,\
+0.3026923795099815683862,0.1907050596442291245936,0.7504581695080775327611,\
+0.2050797642560421019109,0.4500993401191650811200,1.0616552076870116039231,\
+0.3866139253948813192530,0.2889239979563678062391,0.0419016457354280461023,\
+0.5291730503201013124937,0.5270449613735276317428,0.3620065401137618765759,\
+0.2487989439191494456249,0.9684607851607960338214,0.4659312790851565244665,\
+0.3871941948924775833696,0.6912156199525602007228,0.0672566496597855195683,\
+1.0473726182255131966770,0.3738845568372618499708,0.4336537904037139901092,\
+0.1616849585723995341713,0.6587810404999043800700,0.9478245114156004236250,\
+0.7443033774708265326581,0.7329852502477968156924,0.3960943016785423709258,\
+0.2387102372514374737378,0.5224647164810142241365,0.9310236182750510902650,\
+0.0713841738247450452448,1.0541437904171060413461,0.3977173917051313734028,\
+0.0286922698814963753056,0.7352303476692350070465,0.3345177682401353491670,\
+0.7257755336052617023412,0.4362132495206523241649,0.7201678840265979264501,\
+0.6279860575277228518232,0.3131701555376726897606,0.7154672057942548235587,\
+0.7055403294219286802758,0.90419581128384973745,0.5774063124958943582499,\
+0.748377680093745611956,0.3188837788675313866804,0.8029276503063254022408,\
+0.6186055293635583929301,0.3301554535865592887589,0.907799805701633655275,\
+1.0004593122932974313954,0.3297692664500386783288,0.774518614973831232007,\
+0.8666563831612021928663,0.5028547740750087813311}
+
+
+
+
+void dtansTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dtans(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void ztansTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=ztans(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dtanaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dtana(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-16);
+ }
+}
+
+void ztanaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ ztana(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+int testTan() {
+ printf("\n>>>> Double Tangeant Tests\n");
+ dtansTest();
+ ztansTest();
+ dtanaTest();
+ ztanaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testTan() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/testFloatTan.c b/2.3-1/src/c/elementaryFunctions/tan/testFloatTan.c
new file mode 100644
index 00000000..4b487887
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/testFloatTan.c
@@ -0,0 +1,495 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testTan.h"
+
+#define SOURCE {0.7062616096809506416321f,0.4090520101599395275116f,0.3011248558759689331055f,\
+0.1880126395262777805328f,0.1796709178015589714050f,0.2828889950178563594818f,\
+0.7232380937784910202026f,0.7360379849560558795929f,0.1852612206712365150452f,\
+0.7703790138475596904755f,0.1914967410266399383545f,0.7521587223745882511139f,\
+0.6205883463844656944275f,0.2807604051195085048676f,0.2289868686348199844360f,\
+0.5049233403988182544708f,0.8354099662974476814270f,0.8174716415815055370331f,\
+0.0030740275979042053223f,0.3677616142667829990387f,0.8278525872156023979187f,\
+0.72754097869619727135f,0.5323124285787343978882f,0.9267726917751133441925f,\
+0.9542504185810685157776f,0.3162104780785739421845f,0.5789009965956211090088f,\
+0.6881225542165338993073f,0.3714061146602034568787f,0.1705444059334695339203f,\
+0.1954363007098436355591f,0.978800852317363023758f,0.9300233917310833930969f,\
+0.5357720064930617809296f,0.3947123587131500244141f,0.1344871171750128269196f,\
+0.7380615202710032463074f,0.588114650454372167587f,0.9113173168152570724487f,\
+0.5682763461954891681671f,0.1127616921439766883850f,0.9478473584167659282684f,\
+0.5237770043313503265381f,0.8140139640308916568756f,0.1400952627882361412048f,\
+0.2763446993194520473480f,0.9059953633695840835571f,0.1379901585169136524200f,\
+0.5603838684037327766419f,0.3008610638789832592011f,0.4767417535185813904f,\
+0.8127435916103422641754f,0.1988414181396365165710f,0.1107953130267560482025f,\
+0.2159351315349340438843f,0.6467244853265583515167f,0.6597879612818360328674f,\
+0.0691898013465106487274f,0.9164751060307025909424f,0.8635670826770365238190f,\
+0.5032854294404387474060f,0.1832137755118310451508f,0.8403698671609163284302f,\
+0.9247214836068451404572f,0.6229452537372708320618f,0.2773811477236449718475f,\
+0.2479109913110733032227f,0.3891948559321463108063f,0.0436578569933772087097f,\
+0.8132526441477239131928f,0.7686451207846403121948f,0.4041520212776958942413f,\
+0.8579940209165215492249f,0.6993723283521831035614f,0.0828925184905529022217f,\
+0.9201254160143435001373f,0.5200281282886862754822f,0.9351884997449815273285f,\
+0.8825624976307153701782f,0.2245844271965324878693f,0.2153332801535725593567f,\
+0.4327089670114219188690f,0.5800157263875007629395f,0.8876141034997999668121f,\
+0.5258982880041003227234f,0.859640696551650762558f,0.7337234076112508773804f,\
+0.7134532411582767963409f,0.1087165409699082374573f,0.8477638359181582927704f,\
+0.6594733335077762603760f,0.7916418449021875858307f,0.6067967480048537254334f,\
+0.4102901122532784938812f,0.1958728153258562088013f,0.241527963895350694656f,\
+0.5113455550745129585266f,0.9119556057266891002655f,0.0928984880447387695313f,\
+0.7438839026726782321930f,0.1938720373436808586121f,0.4355978979729115962982f,\
+0.9922429900616407394409f,0.4533818070776760578156f,0.8269640663638710975647f,\
+0.8889675955288112163544f,0.4682085178792476654053f,0.3856786251999437808991f,\
+0.4124865522608160972595f,0.6955242282710969448090f,0.0978972557932138442993f,\
+0.8728604433126747608185f,0.6359515609219670295715f,0.4129665228538215160370f,\
+0.0294486805796623229980f,0.1809961968101561069489f,0.7658103061839938163757f,\
+0.1232470511458814144135f,0.0170737411826848983765f,0.8835507561452686786652f,\
+0.3164170170202851295471f,0.9378212536685168743134f,0.3916359134018421173096f,\
+0.0844073877669870853424f,0.6934146797284483909607f,0.4618808380328118801117f,\
+0.9355291295796632766724f,0.0842495900578796863556f,0.5402926551178097724915f,\
+0.5613215523771941661835f,0.1306025832891464233398f,0.5840523042716085910797f,\
+0.0048661706969141960144f,0.2761953338049352169037f,0.7478824090212583541870f,\
+0.0194325004704296588898f,0.6444276878610253334045f,0.2243968318216502666473f,\
+0.2478402368724346160889f,0.1196091384626924991608f,0.1883201440796256065369f,\
+0.3393343067727982997894f,0.959958622232079505920f,0.2847225037403404712677f,\
+0.8766820700839161872864f,0.2853349032811820507050f,0.5103433504700660705566f,\
+0.8752629184164106845856f,0.5941145820543169975281f,0.3945342986844480037689f,\
+0.4661326166242361068726f,0.0073588271625339984894f,0.5170202488079667091370f,\
+0.4690007264725863933563f,0.6654530800879001617432f,0.9476742581464350223541f,\
+0.4933638339862227439880f,0.2918433747254312038422f,0.2016727942973375320435f,\
+0.7016656589694321155548f,0.8736049132421612739563f,0.191055159550160169601f,\
+0.5307010114192962646484f,0.8889481076039373874664f,0.0115523664280772209167f,\
+0.4998398735187947750092f,0.6700848620384931564331f,0.4995208983309566974640f,\
+0.1538907447829842567444f,0.2571737091057002544403f,0.9586529098451137542725f,\
+0.6246025026775896549225f,0.9371285131201148033142f,0.9923511571250855922699f,\
+0.3454555813223123550415f,0.7558249053545296192169f,0.2107181670144200325012f,\
+0.9372652801685035228729f,0.6767524704337120056152f,0.7465373151935636997223f,\
+0.4050982249900698661804f,0.5101723610423505306244f,0.9497965183109045028687f,\
+0.0289692510850727558136f,0.1634070957079529762268f,0.4146909262053668498993f,\
+0.0021650679409503936768f,0.1810030029155313968658f,0.4556188201531767845154f,\
+0.1977851442061364650726f,0.6053877938538789749146f,0.4363054675050079822540f,\
+0.8938506888225674629211f,0.6104825991205871105194f,0.4316215068101882934570f,\
+0.2315693595446646213532f,0.4675927339121699333191f,0.6150764389894902706146f,\
+0.8621218334883451461792f,0.3846137975342571735382f}
+
+#define RESULT {0.8530491813252144561730f,0.4335045992710032103368f,0.3105691712500722179158f,\
+0.1902597554084684006170f,0.1816295703181560194928f,0.2906848138476661458363f,\
+0.8828132281173867168533f,0.9058504084575731418738f,0.1874102230574337113467f,\
+0.9704039825071290037428f,0.193872386487773856745f,0.9356368085981127125095f,\
+0.7147975865621483126944f,0.2883777870673323029394f,0.233074941053011769343f,\
+0.5527124758136455762170f,1.1053818146408691536209f,1.0662960354617996294735f,\
+0.0030740372807646679752f,0.3852902674825339213172f,1.0887291048642380175693f,\
+0.8904988483295813717078f,0.589027514944382324380f,1.3318828819928720808008f,\
+1.4110197782284186196478f,0.3271889768526293207351f,0.6535988324182537834162f,\
+0.8221846610900451768345f,0.3894816929387301396304f,0.1722173220386573888607f,\
+0.1979631660252146874157f,1.4871003608159341080608f,1.3409392796872054987034f,\
+0.5936969391438152721108f,0.4165742349308056979851f,0.1353038396146245825324f,\
+0.9095411562053630216695f,0.666828524289825752547f,1.2898724607003566600127f,\
+0.6385394321030002373618f,0.1132420646312260748001f,1.3920395973271377787484f,\
+0.5775879319584731330650f,1.058934135979150648055f,0.141019050913288951365f,\
+0.2836009152345423944830f,1.2757925164705434806223f,0.1388727177433937698403f,\
+0.6274844177211460483079f,0.3102799593553379198241f,0.5164764951302321938087f,\
+1.0562428612021228513385f,0.2015041286208432702587f,0.1112509099475587071026f,\
+0.2193551393571971375174f,0.7550487488328985197228f,0.7757652108685924030596f,\
+0.0693004223106622879724f,1.3037037706937266712259f,1.1699705921283873877314f,\
+0.550576129776577216646f,0.1852916762694652719201f,1.1164629082914852009623f,\
+1.3262085052804502005586f,0.7183647379901514362643f,0.2847210542962326229599f,\
+0.2531178933037822043062f,0.4101140401836267934677f,0.0436856155719798008863f,\
+1.0573204171612526902635f,0.9670429620877326604145f,0.4276960657258361830913f,\
+1.156854335998896532445f,0.8412159741625684361566f,0.0830828979444599852178f,\
+1.3136054718047147638060f,0.5725991803557812787062f,1.355492790615370424234f,\
+1.2159959299593459114419f,0.2284380696339281535678f,0.2187244120791704826701f,\
+0.4619038629088654257515f,0.6551909258647544698206f,1.228594570395200147317f,\
+0.5804203670779729540286f,1.1607121297665823345113f,0.9016453790519162181383f,\
+0.8655510240366158791758f,0.1091468929729377396187f,1.133211951033040509884f,\
+0.7752613593928633362040f,1.0125659843026109108166f,0.6941614960626277808231f,\
+0.4349761638068749824981f,0.1984168266250701806452f,0.2463367776963759914199f,\
+0.5611266025781723732f,1.2915741173940875619053f,0.0931666557927946503703f,\
+0.9202369550199469561136f,0.1963381019951347117303f,0.4654138557801037467954f,\
+1.531152598161082067918f,0.4872328317068129743817f,1.0867892686527245160732f,\
+1.231996743210198141938f,0.5057142067082607272965f,0.4060123002390389479466f,\
+0.4375906817398340642455f,0.8346659585500807443381f,0.0982112043307575288686f,\
+1.1922276352973026902760f,0.7382700256000707117465f,0.4381626799731911381386f,\
+0.0294571964089862109448f,0.1829988997674065476229f,0.9615720911131384607273f,\
+0.1238749003414561927761f,0.0170754004466078072866f,1.2184484210758381728112f,\
+0.3274176417863428056876f,1.3629896342945482246023f,0.4129685310508503515159f,\
+0.0846084171803287293789f,0.8310930423770829245100f,0.4977934831990530883950f,\
+1.3564597268158093967827f,0.0844494919835185042789f,0.5998275037194918946071f,\
+0.6287920720664262885791f,0.1313502491565903540494f,0.6609756367352789263592f,\
+0.0048662091069645377339f,0.2834395431640467921675f,0.9276488528261589427970f,\
+0.0194349468870056892034f,0.7514487870197579244547f,0.2282406932471093830017f,\
+0.2530426070707028074480f,0.1201828114589197499251f,0.1905784099029704803385f,\
+0.352988062986135442411f,1.428231701456014857143f,0.2926743123472941854324f,\
+1.2015237487616485800856f,0.2933392882321691486069f,0.5598095809652490206787f,\
+1.1980617264883439698764f,0.6755313107918682336006f,0.4163652909127465440164f,\
+0.5031101302799753094419f,0.0073589599979746594949f,0.5686119631638693050491f,\
+0.5067094190821778143530f,0.7848798186452353720100f,1.391531190313842980544f,\
+0.5377167840923406938458f,0.3004214213647905529214f,0.2044521595617958820146f,\
+0.8451397437154636316237f,1.1940319015577840477960f,0.1934142466999154985619f,\
+0.5868590674474564172769f,1.2319476773796440571829f,0.0115528803708900857511f,\
+0.5460945923736312268559f,0.792392311128046200608f,0.5456805647330320585553f,\
+0.1551171962759635702955f,0.2629975069837691137309f,1.4242699230594764170377f,\
+0.7208802037485926295091f,1.3610118285291581408103f,1.5315144150725372718114f,\
+0.3598870449025589057790f,0.9425361247426047306419f,0.2138933525822492576207f,\
+1.3614020090881830959972f,0.8033042279594378998198f,0.925149379458894971506f,\
+0.4288158062140490778269f,0.5595850272060393093554f,1.397781375537582970736f,\
+0.0289773576405878592610f,0.1648772252909011803990f,0.4402197018088547242343f,\
+0.0021650713238892428658f,0.1830059338084651376910f,0.4900039273308094966986f,\
+0.2004051993228692374327f,0.6920756616600035604492f,0.4662749757103929471036f,\
+1.244365984627544330365f,0.6996374475054760733173f,0.4605850493651166277509f,\
+0.2357993689411847226811f,0.5049411785573922895054f,0.7065020490746397596737f,\
+1.16655281751026174142f,0.4047724755535024310227f}
+
+#define CSOURCER {0.6045256052166223526001f,0.9455216196365654468536f,0.4476299257948994636536f,\
+0.8624908211641013622284f,0.1751048639416694641113f,0.2067177616991102695465f,\
+0.6848411662504076957703f,0.1348653226159512996674f,0.0069159921258687973022f,\
+0.1496290047653019428253f,0.5665438110008835792542f,0.4359452719800174236298f,\
+0.6547604538500308990479f,0.3381605879403650760651f,0.4259321158751845359802f,\
+0.3060420057736337184906f,0.7704779822379350662231f,0.7058695447631180286408f,\
+0.2373670237138867378235f,0.8205849635414779186249f,0.6789963841438293457031f,\
+0.5250809141434729099274f,0.3359806565567851066589f,0.8941988362930715084076f,\
+0.5461782198399305343628f,0.7568633262999355792999f,0.0259526828303933143616f,\
+0.3250150899402797222138f,0.6072143577039241791f,0.8756139636971056461334f,\
+0.2962085595354437828064f,0.4229678637348115444183f,0.4243144039064645767212f,\
+0.7620028969831764698029f,0.3622896494343876838684f,0.5658242437057197093964f,\
+0.6424440070986747741699f,0.7580267959274351596832f,0.2531452132388949394226f,\
+0.5266989110969007015228f,0.2118590380996465682983f,0.4779220153577625751495f,\
+0.1615962767973542213440f,0.9168031658045947551727f,0.5461866445839405059815f,\
+0.4686870560981333255768f,0.7772213732823729515076f,0.5871783248148858547211f,\
+0.5848031807690858840942f,0.3139644009061157703400f,0.3204141603782773017883f,\
+0.3331634956412017345429f,0.2282590121030807495117f,0.2750317254103720188141f,\
+0.4963629124686121940613f,0.7453477247618138790131f,0.1155001949518918991089f,\
+0.0626524840481579303741f,0.0877018878236413002014f,0.5507565210573375225067f,\
+0.2116370312869548797607f,0.8335358710028231143951f,0.4045845707878470420837f,\
+0.2880227542482316493988f,0.1750094983726739883423f,0.0051561561413109302521f,\
+0.3109287889674305915833f,0.6602919283322989940643f,0.9722995534539222717285f,\
+0.9826813959516584873200f,0.0455837054178118705750f,0.4096118300221860408783f,\
+0.7104403134435415267944f,0.3917615194804966449738f,0.5571686858311295509338f,\
+0.0565565521828830242157f,0.1540721096098423004150f,0.9109257892705500125885f,\
+0.5713340407237410545349f,0.3488348922692239284515f,0.8972954172641038894653f,\
+0.2973396372981369495392f,0.1091936426237225532532f,0.7626331257633864879608f,\
+0.6584706604480743408203f,0.6996708759106695652008f,0.6756794182583689689636f,\
+0.9004421546123921871185f,0.6668148916214704513550f,0.8518152837641537189484f,\
+0.8365677157416939735413f,0.1291190306656062602997f,0.6095453463494777679443f,\
+0.2412315667606890201569f,0.4029275467619299888611f,0.3019328541122376918793f,\
+0.1083198729902505874634f,0.8456356939859688282013f,0.9417407037690281867981f,\
+0.9083450469188392162323f,0.1937242373824119567871f,0.5318046086467802524567f,\
+0.8314437521621584892273f,0.4952740012668073177338f,0.7465563025325536727905f,\
+0.7102393140085041522980f,0.5811418974772095680237f,0.7035941029898822307587f,\
+0.3746570833027362823486f,0.3394373343326151371002f,0.6322447275742888450623f,\
+0.7636191300116479396820f,0.6940386760979890823364f,0.8735245508141815662384f,\
+0.3612738298252224922180f,0.7933200257830321788788f,0.4830590635538101196289f,\
+0.2469964125193655490875f,0.5025922833010554313660f,0.7430270477198064327240f,\
+0.6783937942236661911011f,0.4903185223229229450226f,0.709806025959551334381f,\
+0.3303662906400859355927f,0.6815545372664928436279f,0.0701365978457033634186f,\
+0.4745870968326926231384f,0.8091805852018296718597f,0.9447045121341943740845f,\
+0.5478458073921501636505f,0.1216687532141804695129f,0.9161847713403403759003f,\
+0.3045207932591438293457f,0.6502694808878004550934f,0.0987624628469347953796f,\
+0.8391053467057645320892f,0.0328534897416830062866f,0.3461971958167850971222f,\
+0.2801467711105942726135f,0.5500544901005923748016f,0.0729318000376224517822f,\
+0.0225322381593286991119f,0.50267804320901632309f,0.3478884599171578884125f,\
+0.4298669416457414627075f,0.3537984383292496204376f,0.0529730813577771186829f,\
+0.9533003675751388072968f,0.1842019557952880859375f,0.958756382111459970474f,\
+0.3245136169716715812683f,0.0003973259590566158295f,0.0972583871334791183472f,\
+0.4378789965994656086f,0.3634226778522133827210f,0.2685119728557765483856f,\
+0.2770298384130001068115f,0.8854365111328661441803f,0.5216628303751349449158f,\
+0.4979983693920075893f,0.8733724001795053482056f,0.4699407932348549365997f,\
+0.9364062966778874397278f,0.1337622734718024730682f,0.2712419554591178894043f,\
+0.1766990595497190952301f,0.0543269468471407890320f,0.8402757882140576839447f,\
+0.7507283594459295272827f,0.3062269617803394794464f,0.9195641661062836647034f,\
+0.1318263853900134563446f,0.0826364941895008087158f,0.8222710476256906986237f,\
+0.4441085970029234886169f,0.9617503038607537746429f,0.0283641982823610305786f,\
+0.1431905967183411121368f,0.3793597565963864326477f,0.6144003230147063732147f,\
+0.2128270715475082397461f,0.4704488315619528293610f,0.2076055286452174186707f,\
+0.7435979112051427364349f,0.3391801547259092330933f,0.2479635034687817096710f,\
+0.6721735307946801185608f,0.9013197491876780986786f,0.2140864841639995574951f,\
+0.8460668534971773624420f,0.1650043567642569541931f,0.4003686285577714443207f,\
+0.5522825215011835098267f,0.0638249483890831470490f,0.6903966935351490974426f,\
+0.8547787251882255077362f,0.0291904583573341369629f,0.5434663915075361728668f,\
+0.6236743135377764701843f,0.2417052476666867733002f}
+
+#define CSOURCEI {0.5503273960202932357788f,0.6906704087741672992706f,0.9835249418392777442932f,\
+0.8285484607331454753876f,0.2062614001333713531494f,0.1944643096067011356354f,\
+0.4367609983310103416443f,0.8090620837174355983734f,0.8818644303828477859497f,\
+0.7404803228564560413361f,0.7542522149160504341126f,0.9921960639767348766327f,\
+0.9886121451854705810547f,0.0113218077458441257477f,0.9367801276966929435730f,\
+0.3874237253330647945404f,0.2886805813759565353394f,0.567788839805871248245f,\
+0.7295644441619515419006f,0.0303032915107905864716f,0.2795897088944911956787f,\
+0.7047131718136370182037f,0.7442112853750586509705f,0.8920237845741212368012f,\
+0.1081438604742288589478f,0.8751525697298347949982f,0.9068333031609654426575f,\
+0.2166852983646094799042f,0.4824190363287925720215f,0.7766945236362516880035f,\
+0.4510916722938418388367f,0.1300636469386518001556f,0.5505470838397741317749f,\
+0.6936193336732685565949f,0.1749099576845765113831f,0.8636093880049884319305f,\
+0.2150467522442340850830f,0.1886725709773600101471f,0.1796098565682768821716f,\
+0.4374312213622033596039f,0.8514516223222017288208f,0.7381969136185944080353f,\
+0.8102188156917691230774f,0.1460137623362243175507f,0.8999849110841751098633f,\
+0.4043733575381338596344f,0.0156995235010981559753f,0.6904196902178227901459f,\
+0.2990311514586210250855f,0.1383218024857342243195f,0.8478512773290276527405f,\
+0.3007262717001140117645f,0.229154746979475021362f,0.8078110129572451114655f,\
+0.3176332255825400352478f,0.6924462593160569667816f,0.1364154014736413955689f,\
+0.5433279541321098804474f,0.3276594849303364753723f,0.2006831648759543895721f,\
+0.5037304237484931945801f,0.4962565028108656406403f,0.8996161324903368949890f,\
+0.9357709079049527645111f,0.3390339072793722152710f,0.6029155333526432514191f,\
+0.4153500730171799659729f,0.3041478390805423259735f,0.8489827848970890045166f,\
+0.4482063786126673221588f,0.0903797810897231101990f,0.7382151386700570583344f,\
+0.2669597584754228591919f,0.8226196658797562122345f,0.3985779182985424995422f,\
+0.9789295899681746959686f,0.3041231036186218261719f,0.0663515278138220310211f,\
+0.6667758254334330558777f,0.7548807277344167232513f,0.1922533493489027023315f,\
+0.7942791883833706378937f,0.5580398896709084510803f,0.2016023616306483745575f,\
+0.787146832793951034546f,0.0955459238030016422272f,0.6623697867617011070252f,\
+0.864868474658578634262f,0.7013061288744211196899f,0.8015053984709084033966f,\
+0.9135685982182621955872f,0.6317234965972602367401f,0.9346773549914360046387f,\
+0.9157753759063780307770f,0.0510348035022616386414f,0.4329969524405896663666f,\
+0.9721843507140874862671f,0.8001508046872913837433f,0.8452261472120881080627f,\
+0.0610524858348071575165f,0.8168097324669361114502f,0.2101262793876230716705f,\
+0.3055453812703490257263f,0.9465212575159966945648f,0.9269728232175111770630f,\
+0.7737778765149414539337f,0.5893978821113705635071f,0.2377697187475860118866f,\
+0.5269544571638107299805f,0.0077543654479086399078f,0.8311711428686976432800f,\
+0.0268517597578465938568f,0.2591186594218015670776f,0.4641277943737804889679f,\
+0.6098861405625939369202f,0.0656952331773936748505f,0.6466812007129192352295f,\
+0.1018534512259066104889f,0.2742705782875418663025f,0.8162728524766862392426f,\
+0.3357750270515680313110f,0.4765891996212303638458f,0.8440040023997426033020f,\
+0.1785074654035270214081f,0.5855625644326210021973f,0.8426241897977888584137f,\
+0.7058847947046160697937f,0.7396617024205625057221f,0.9751448985189199447632f,\
+0.7606669445522129535675f,0.8236690396443009376526f,0.8889620001427829265595f,\
+0.7960178293287754058838f,0.3052428201772272586823f,0.6803312664851546287537f,\
+0.6412069997750222682953f,0.0988248009234666824341f,0.4654508423991501331329f,\
+0.6714970665052533149719f,0.5131103205494582653046f,0.8631567060947418212891f,\
+0.8328299173153936862946f,0.1687975851818919181824f,0.2961277081631124019623f,\
+0.2591485660523176193237f,0.1700844173319637775421f,0.9718958893790841102600f,\
+0.0695185582153499126434f,0.4696230851113796234131f,0.9544191421009600162506f,\
+0.3679352095350623130798f,0.2973918146453797817230f,0.0415310803800821304321f,\
+0.4892336544580757617950f,0.5171590568497776985169f,0.3534862431697547435761f,\
+0.2354387864470481872559f,0.6779259913600981235504f,0.3834532154724001884460f,\
+0.3174350797198712825775f,0.3418120350688695907593f,0.0535557498224079608917f,\
+0.9285596096888184547424f,0.3862650538794696331024f,0.4328473098576068878174f,\
+0.1581165478564798831940f,0.7887120461091399192810f,0.7448797873221337795258f,\
+0.5185996759682893753052f,0.8651678604073822498322f,0.1524438308551907539368f,\
+0.2392775672487914562225f,0.5761575847864151000977f,0.7395762302912771701813f,\
+0.0583172617480158805847f,0.6962534948252141475678f,0.4206145536154508590698f,\
+0.0281158541329205036163f,0.8313249954953789710999f,0.2333360086195170879364f,\
+0.8865877203643321990967f,0.3746785433031618595123f,0.87671328987926244736f,\
+0.4027077830396592617035f,0.2890332732349634170532f,0.8538430598564445972443f,\
+0.5499771209433674812317f,0.5128610017709434032440f,0.6321087554097175598145f,\
+0.4165538274683058261871f,0.3217771751806139945984f,0.9717370062135159969330f,\
+0.5348322447389364242554f,0.3416590173728764057159f,0.9565287167206406593323f,\
+0.9951003189198672771454f,0.3422884084284305572510f,0.7870580093003809452057f,\
+0.9234123295173048973084f,0.5238970420323312282562f}
+
+#define CRESULTR {0.4622549506274005182149f,0.52703543104286754151f,0.1827556517526441881572f,\
+0.3854184255425531224759f,0.1693791983359425601385f,0.2016515153621968869935f,\
+0.6100517388487384229379f,0.0743340542544716487150f,0.0034555684806514769605f,\
+0.0902156984479902251950f,0.3241135973562218053345f,0.1760110212342378688266f,\
+0.2452633832131958513401f,0.3516179963878625636120f,0.1885474403955421374146f,\
+0.2692513911062309750477f,0.8321367071581778906975f,0.5264631357733180472280f,\
+0.1448019483693787634593f,1.0708552390146606203558f,0.7125992289896019293849f,\
+0.3253494174977278885486f,0.2001345889867806593365f,0.343199696050296210181f,\
+0.5982400693418048476246f,0.3303593637710269814711f,0.0125118697596118978038f,\
+0.3199717638395740970658f,0.5061472843217617034739f,0.4295842023027047207329f,\
+0.2465282516242081889413f,0.441112206343829249544f,0.3219119603275076846316f,\
+0.4595743499683106469966f,0.3660794615870797685808f,0.2720878846188879984780f,\
+0.6972660654407580871350f,0.8861718442431221198774f,0.2499974132956042649489f,\
+0.4568598941148580561134f,0.1097116340955419794279f,0.2836394335106861008811f,\
+0.0888432657814137161090f,1.2330526748467487418992f,0.2488174581727523593244f,\
+0.4160762578947443945943f,0.9833017375902159962209f,0.3688379479484371614717f,\
+0.5845995722843282393910f,0.3179368621558099627933f,0.1652197278936747004696f,\
+0.3133619394599517771205f,0.2199213980004723900663f,0.150759611907827051347f,\
+0.4771998617931776376366f,0.4525965638532219448287f,0.1138559184839921800680f,\
+0.0472861014102091622990f,0.0790630167394415495075f,0.5814611436078345185763f,\
+0.1667238962880819019841f,0.6920944670661310915705f,0.1906861485587098559158f,\
+0.1307919466930784202496f,0.1574308648240616004266f,0.0036575163164140646332f,\
+0.2674520780172894851567f,0.6735689731298903915047f,0.378774827327838792268f,\
+0.8834054385824835486929f,0.0452439501756518244746f,0.2447083220521515389834f,\
+0.7633578523125562620422f,0.2078243181020067997800f,0.5055052026142557997090f,\
+0.0245040445592060660007f,0.1414831146311008314154f,1.2738839652002900137973f,\
+0.3722074374977639710238f,0.2046196449929307825677f,1.143222534499549469800f,\
+0.1658122283683383380026f,0.0812521009905448621247f,0.8856778536505196530726f,\
+0.3496455120553698669994f,0.8287603905975037266174f,0.4374379182437952429119f,\
+0.3632754548631693114480f,0.4065565887334736672187f,0.4042071334744706256892f,\
+0.3223163664494689273354f,0.0887658719864259648791f,0.2562423384997916109285f,\
+0.1135016065651749256338f,0.4249393631867034448746f,0.2555315607462380622650f,\
+0.0473167224981555015195f,0.4038863981107233547263f,0.3812800945055046519805f,\
+1.2694612396144742128001f,0.1054006198029389801407f,0.5548755616229488207836f,\
+0.9047138472187979951755f,0.2120875774680325287491f,0.2977497737582537329359f,\
+0.3793852632159244175902f,0.4216852391721442327999f,0.7719661269702553507699f,\
+0.2909766448133100369411f,0.3530800537032807717708f,0.3144419867733496687379f,\
+0.9560423318471079623393f,0.7455173297127551945707f,0.7647697575929581770282f,\
+0.2552307563419532465687f,1.0071246904841177904899f,0.3254058309317561237251f,\
+0.2493837937457981657197f,0.4995060266703120754883f,0.3635478722517977989703f,\
+0.6755663854502449439110f,0.4060422219779377672744f,0.3354119513743121228089f,\
+0.3310200365444659897918f,0.4956952069626366363941f,0.0369899619573449203735f,\
+0.2949888674609426608697f,0.4417162785414836534415f,0.2901327037722924995222f,\
+0.3113814080983853260776f,0.0657705595388366343057f,0.3468932593605689174154f,\
+0.1693138876335541220808f,0.6604383641650866110240f,0.0641696842881706724926f,\
+0.5420718455446384975716f,0.0325460783396350344931f,0.2856018727381676169941f,\
+0.1837045440337584378820f,0.4394912998560263073244f,0.0373805900188774464787f,\
+0.0120513737523088183129f,0.5299342664002043568061f,0.3290248923514364487453f,\
+0.4232813397541956845771f,0.3574733895472496092438f,0.0231976592717455104564f,\
+1.388138041383984555566f,0.1495922092250967505578f,0.3027074594945061147833f,\
+0.2906013786665496145822f,0.0003641583735012103801f,0.0973965246964013098285f,\
+0.3558085542679609303285f,0.2850038039654740895657f,0.2413433027684695197923f,\
+0.2679865438260303767137f,0.5240490385593890021454f,0.4768351880953459742685f,\
+0.479037567928660701355f,0.9219838892273597430460f,0.5060637477109658499686f,\
+0.3200337217432840941633f,0.1160441175011530240413f,0.2289284118436291093346f,\
+0.1740340532494602521219f,0.0308192365918868102503f,0.4474996159504823212139f,\
+0.601992209828681956729f,0.1542000078067730650666f,1.2334589409579821417395f,\
+0.1251630868814269104128f,0.0603288006292757861271f,0.4462414520672394746548f,\
+0.4738309669088760500699f,0.5239025685810345667193f,0.0238870191275340100490f,\
+0.1440610501660575526461f,0.1990046768508525187880f,0.6514000598731057856128f,\
+0.1047897932784156715957f,0.429099188123020058860f,0.1037294840964696623908f,\
+0.6989271583573236634734f,0.3217396834648525993927f,0.1276324483471362458698f,\
+0.51478179757014652651f,0.7241126844123151329313f,0.1471790945486320945079f,\
+0.7963244963417922539506f,0.1499982428024713432269f,0.1685430842340138735125f,\
+0.4298103979039861188838f,0.0569704807929593617932f,0.2690745622378380996764f,\
+0.2759880123858853839813f,0.0260258640811948625815f,0.2968457197721043328009f,\
+0.2658449701658989750008f,0.1869340145100120420540f}
+
+#define CRESULTI {0.6606731609576530495076f,1.0352924413907944600766f,0.8208009210718538728457f,\
+0.9855228198847613141354f,0.2094799364238341676803f,0.2001711092576675676824f,\
+0.6157063400955946619320f,0.6758210089185754387842f,0.7073690227519786599686f,\
+0.6379959312114483749312f,0.7691489792855270568595f,0.8204717538076390370705f,\
+0.8992691795054111869590f,0.0127212399656787735619f,0.7965072880961274748302f,\
+0.4005414846539865347808f,0.5078102333041875082742f,0.7442675929748912011519f,\
+0.6446164613619681515999f,0.0651017559751383007027f,0.4292463160345246220295f,\
+0.7218268661973539224164f,0.675831849442214971369f,1.016847265460205207432f,\
+0.1468976923106849463707f,0.923642083424730087060f,0.7198425877508842773977f,\
+0.2363604106893440193193f,0.6057859843456331327971f,0.9859934125773722746189f,\
+0.4546059235344489524167f,0.1550160776744255175519f,0.5737784438019621902072f,\
+0.8635696530908816281880f,0.1971722712896061546761f,0.8187472766310414096225f,\
+0.3223047939566238695441f,0.3428986541358745587793f,0.1891956718334251719149f,\
+0.5208354545548833369750f,0.7081524694874962166935f,0.7203267007574796210179f,\
+0.6794103936977667901331f,0.3782115660166653348107f,0.8246286245352181243362f,\
+0.4645139855543011786487f,0.0308839406628786498910f,0.7450942218464524646748f,\
+0.4028312748892641792509f,0.1516356705950959171680f,0.7277735925258916882541f,\
+0.3236400086381776008970f,0.2367328033923032648556f,0.6968150511733807173087f,\
+0.3868027398676305850245f,0.8499965389936866566600f,0.1373663005352325217068f,\
+0.4969728656393965771088f,0.3186158192908606912042f,0.2687494032146487410451f,\
+0.4817044586911616854685f,0.8091241454316642212064f,0.7745837276131475324092f,\
+0.7616864033669616951272f,0.3357065002058312042088f,0.5391311137157557276112f,\
+0.4267832806356777752832f,0.4494653959304828472199f,1.07409232431056356205f,\
+0.9773946189840253540027f,0.0903205143448218145119f,0.6947943813727951445358f,\
+0.4320600869989819070582f,0.7345738223824911372617f,0.4980076917918512258154f,\
+0.753646277499480543582f,0.3015650137112788620186f,0.1750320030662110004638f,\
+0.7223173121894863601966f,0.6855367528648522723600f,0.4620100861135144620917f,\
+0.6944021533252422440086f,0.5110335784375538148439f,0.3672451576697671193905f,\
+0.8344551064956932107108f,0.16170594539219715347f,0.7832786921268890534265f,\
+1.0189285776822756268700f,0.7988551639208606447440f,0.9719247807905779801274f,\
+0.9809763387972041392970f,0.5656833224514162816732f,0.8638733429144607178785f,\
+0.7441066604777042403640f,0.0602264440127683667314f,0.4402801210484636462716f,\
+0.7535199884397705272221f,0.9667811691361050119298f,1.0493588871220529412653f,\
+0.1602121578348635611011f,0.6872528304663769738170f,0.2746926003887739664577f,\
+0.5904217499472341756928f,0.8227770718789775283852f,0.9300490141104427177510f,\
+0.8608967966610167055208f,0.6761042332942854837796f,0.3862514929365022942065f,\
+0.5383206023328632738867f,0.0087209580621782408633f,0.8379947814437334052684f,\
+0.0514162894427564812205f,0.4107196425718538934646f,0.8291800128662117908007f,\
+0.5965153474380232578866f,0.1327243053149035900695f,0.6666204349503430659496f,\
+0.1078852700862242136592f,0.3410661266092010479589f,0.8978136284012265821986f,\
+0.4999590426790496699994f,0.5396356462900459005638f,0.8861720904164178680418f,\
+0.1966865820582558155305f,0.7384948934734244518907f,0.6889822634082830576929f,\
+0.7002461629632836803694f,0.9202927678328401972507f,1.0522470356995357043672f,\
+0.7633410819201092989417f,0.6825068129840573538658f,1.032180426666563732852f,\
+0.6970224139462883883311f,0.4448502829538992786596f,0.5954971038562514307202f,\
+0.9072269118636318019355f,0.0986096977623509007849f,0.4792818549998886235031f,\
+0.6169344532127701841162f,0.5996614784596430158814f,0.6997864810760641152143f,\
+0.6821778350957495851148f,0.2159298191152681511973f,0.3221001280586711645881f,\
+0.3026923795099815683862f,0.1907050596442291245936f,0.7504581695080775327611f,\
+0.2050797642560421019109f,0.4500993401191650811200f,1.0616552076870116039231f,\
+0.3866139253948813192530f,0.2889239979563678062391f,0.0419016457354280461023f,\
+0.5291730503201013124937f,0.5270449613735276317428f,0.3620065401137618765759f,\
+0.2487989439191494456249f,0.9684607851607960338214f,0.4659312790851565244665f,\
+0.3871941948924775833696f,0.6912156199525602007228f,0.0672566496597855195683f,\
+1.0473726182255131966770f,0.3738845568372618499708f,0.4336537904037139901092f,\
+0.1616849585723995341713f,0.6587810404999043800700f,0.9478245114156004236250f,\
+0.7443033774708265326581f,0.7329852502477968156924f,0.3960943016785423709258f,\
+0.2387102372514374737378f,0.5224647164810142241365f,0.9310236182750510902650f,\
+0.0713841738247450452448f,1.0541437904171060413461f,0.3977173917051313734028f,\
+0.0286922698814963753056f,0.7352303476692350070465f,0.3345177682401353491670f,\
+0.7257755336052617023412f,0.4362132495206523241649f,0.7201678840265979264501f,\
+0.6279860575277228518232f,0.3131701555376726897606f,0.7154672057942548235587f,\
+0.7055403294219286802758f,0.90419581128384973745f,0.5774063124958943582499f,\
+0.748377680093745611956f,0.3188837788675313866804f,0.8029276503063254022408f,\
+0.6186055293635583929301f,0.3301554535865592887589f,0.907799805701633655275f,\
+1.0004593122932974313954f,0.3297692664500386783288f,0.774518614973831232007f,\
+0.8666563831612021928663f,0.5028547740750087813311f}
+
+
+
+
+void stansTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=stans(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-7);
+ }
+}
+
+void ctansTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=ctans(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void stanaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i;
+
+ stana(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void ctanaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ ctana(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+int testTan() {
+ printf("\n>>>> Float Tangeant Tests\n");
+ stansTest();
+ ctansTest();
+ stanaTest();
+ ctanaTest();
+
+ return 0;
+}
+
+int main() {
+ assert(testTan() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/testTan.h b/2.3-1/src/c/elementaryFunctions/tan/testTan.h
new file mode 100644
index 00000000..b9adf6f7
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/testTan.h
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTTAN_H_
+#define _TESTTAN_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "tan.h"
+#include "constant.h"
+
+void stansTest(void);
+void stanaTest(void);
+
+void dtansTest(void);
+void dtanaTest(void);
+
+void ctansTest(void);
+void ctanaTest(void);
+
+void ztansTest(void);
+void ztanaTest(void);
+
+int testTan(void);
+
+#endif /* !_TESTTAN_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/tan/u16tana.c b/2.3-1/src/c/elementaryFunctions/tan/u16tana.c
new file mode 100644
index 00000000..12df0ee9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/u16tana.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tan.h"
+
+void u16tana(uint16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16tans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/u16tans.c b/2.3-1/src/c/elementaryFunctions/tan/u16tans.c
new file mode 100644
index 00000000..f184a674
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/u16tans.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tan.h"
+
+float u16tans(uint16 x) {
+ return (tanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/u8tana.c b/2.3-1/src/c/elementaryFunctions/tan/u8tana.c
new file mode 100644
index 00000000..d541b20f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/u8tana.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tan.h"
+
+void u8tana(uint8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8tans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/u8tans.c b/2.3-1/src/c/elementaryFunctions/tan/u8tans.c
new file mode 100644
index 00000000..74b5fb9d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/u8tans.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tan.h"
+
+float u8tans(uint8 x) {
+ return (tanf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/ztana.c b/2.3-1/src/c/elementaryFunctions/tan/ztana.c
new file mode 100644
index 00000000..6634d422
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/ztana.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tan.h"
+
+void ztana(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ztans(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tan/ztans.c b/2.3-1/src/c/elementaryFunctions/tan/ztans.c
new file mode 100644
index 00000000..761da36b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tan/ztans.c
@@ -0,0 +1,104 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) Bruno Pincon
+ *
+ * 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
+ *
+ */
+
+/*
+ ALGORITHM
+ based on the formula :
+
+ 0.5 sin(2 xr) + i 0.5 sinh(2 xi)
+ tan(xr + i xi) = ---------------------------------
+ cos(xr)^2 + sinh(xi)^2
+
+ noting d = cos(xr)^2 + sinh(xi)^2, we have :
+
+ yr = 0.5 * sin(2 * xr) / d (1)
+
+ yi = 0.5 * sinh(2 * xi) / d (2)
+
+ to avoid spurious overflows in computing yi with
+ formula (2) (which results in NaN for yi)
+ we use also the following formula :
+
+ yi = sign(xi) when |xi| > LIM (3)
+
+ Explanations for (3) :
+
+ we have d = sinh(xi)^2 ( 1 + (cos(xr)/sinh(xi))^2 ),
+ so when :
+
+ (cos(xr)/sinh(xi))^2 < epsm ( epsm = max relative error
+ for coding a real in a f.p.
+ number set F(b,p,emin,emax)
+ epsm = 0.5 b^(1-p) )
+ which is forced when :
+
+ 1/sinh(xi)^2 < epsm (4)
+ <=> |xi| > asinh(1/sqrt(epsm)) (= 19.06... in ieee 754 double)
+
+ sinh(xi)^2 is a good approximation for d (relative to the f.p.
+ arithmetic used) and then yr may be approximate with :
+
+ yr = cosh(xi)/sinh(xi)
+ = sign(xi) (1 + exp(-2 |xi|))/(1 - exp(-2|xi|))
+ = sign(xi) (1 + 2 u + 2 u^2 + 2 u^3 + ...)
+
+ with u = exp(-2 |xi|)). Now when :
+
+ 2 exp(-2|xi|) < epsm (2)
+ <=> |xi| > 0.5 * log(2/epsm) (= 18.71... in ieee 754 double)
+
+ sign(xi) is a good approximation for yr.
+
+ Constraint (1) is stronger than (2) and we take finaly
+
+ LIM = 1 + log(2/sqrt(epsm))
+
+ (log(2/sqrt(epsm)) being very near asinh(1/sqrt(epsm))
+
+AUTHOR
+ Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>
+*/
+
+#include <math.h>
+#include "lapack.h"
+#include "tan.h"
+#include "sqrt.h"
+#include "cos.h"
+#include "sinh.h"
+#include "sin.h"
+#include "log.h"
+#include "abs.h"
+
+#define localSign(x) x >= 0 ? 1.0 : -1.0
+
+doubleComplex ztans(doubleComplex z) {
+ double Temp = 0;
+ double Lim = 1 + dlogs(2.0 / dsqrts( getRelativeMachinePrecision()));
+ double RealIn = zreals(z);
+ double ImagIn = zimags(z);
+ double RealOut = 0;
+ double ImagOut = 0;
+
+ Temp = pow(dcoss(RealIn), 2) + pow(dsinhs(ImagIn), 2);
+ RealOut = 0.5 * dsins(2 * RealIn) / Temp;
+ if(dabss(ImagIn) < Lim)
+ {
+ ImagOut = 0.5 * dsinhs(2 * ImagIn) / Temp;
+ }
+ else
+ {
+ ImagOut = localSign(ImagIn);
+ }
+
+ return DoubleComplex(RealOut, ImagOut);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/Makefile.am b/2.3-1/src/c/elementaryFunctions/tanh/Makefile.am
new file mode 100644
index 00000000..714eec18
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/Makefile.am
@@ -0,0 +1,73 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libTanh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libTanh.la
+
+libTanh_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = stanhs.c \
+ dtanhs.c \
+ ctanhs.c \
+ ztanhs.c \
+ stanha.c \
+ dtanha.c \
+ ctanha.c \
+ ztanha.c
+
+HEAD = ../includes/tanh.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/tan/libTan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/tanh/libTanh.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatTanh testDoubleTanh
+
+TESTS = testFloatTanh testDoubleTanh
+
+#
+# -*- Hyperbolic Tangeant Tests -*-
+#
+testFloatTanh_SOURCES = testTanh.h testFloatTanh.c
+testFloatTanh_CFLAGS = $(check_INCLUDES)
+testFloatTanh_LDADD = $(check_LDADD)
+
+testDoubleTanh_SOURCES = testTanh.h testDoubleTanh.c
+testDoubleTanh_CFLAGS = $(check_INCLUDES)
+testDoubleTanh_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/Makefile.in b/2.3-1/src/c/elementaryFunctions/tanh/Makefile.in
new file mode 100644
index 00000000..e93fe6a9
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/Makefile.in
@@ -0,0 +1,819 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatTanh$(EXEEXT) testDoubleTanh$(EXEEXT)
+TESTS = testFloatTanh$(EXEEXT) testDoubleTanh$(EXEEXT)
+subdir = src/c/elementaryFunctions/tanh
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libTanh_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libTanh_la-stanhs.lo libTanh_la-dtanhs.lo \
+ libTanh_la-ctanhs.lo libTanh_la-ztanhs.lo libTanh_la-stanha.lo \
+ libTanh_la-dtanha.lo libTanh_la-ctanha.lo libTanh_la-ztanha.lo
+am_libTanh_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libTanh_la_OBJECTS = $(am_libTanh_la_OBJECTS)
+libTanh_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libTanh_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleTanh_OBJECTS = testDoubleTanh-testDoubleTanh.$(OBJEXT)
+testDoubleTanh_OBJECTS = $(am_testDoubleTanh_OBJECTS)
+am__DEPENDENCIES_1 = \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/tan/libTan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/tanh/libTanh.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la
+testDoubleTanh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleTanh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleTanh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatTanh_OBJECTS = testFloatTanh-testFloatTanh.$(OBJEXT)
+testFloatTanh_OBJECTS = $(am_testFloatTanh_OBJECTS)
+testFloatTanh_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatTanh_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatTanh_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libTanh_la_SOURCES) $(testDoubleTanh_SOURCES) \
+ $(testFloatTanh_SOURCES)
+DIST_SOURCES = $(libTanh_la_SOURCES) $(testDoubleTanh_SOURCES) \
+ $(testFloatTanh_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libTanh_la_CFLAGS = -I ../../type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libTanh.la
+libTanh_la_SOURCES = $(HEAD) $(SRC)
+SRC = stanhs.c \
+ dtanhs.c \
+ ctanhs.c \
+ ztanhs.c \
+ stanha.c \
+ dtanha.c \
+ ctanha.c \
+ ztanha.c
+
+HEAD = ../includes/tanh.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/tan/libTan.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/elementaryFunctions/tanh/libTanh.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ @LIBMATH@
+
+
+#
+# -*- Hyperbolic Tangeant Tests -*-
+#
+testFloatTanh_SOURCES = testTanh.h testFloatTanh.c
+testFloatTanh_CFLAGS = $(check_INCLUDES)
+testFloatTanh_LDADD = $(check_LDADD)
+testDoubleTanh_SOURCES = testTanh.h testDoubleTanh.c
+testDoubleTanh_CFLAGS = $(check_INCLUDES)
+testDoubleTanh_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/elementaryFunctions/tanh/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/elementaryFunctions/tanh/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libTanh.la: $(libTanh_la_OBJECTS) $(libTanh_la_DEPENDENCIES)
+ $(libTanh_la_LINK) -rpath $(pkglibdir) $(libTanh_la_OBJECTS) $(libTanh_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleTanh$(EXEEXT): $(testDoubleTanh_OBJECTS) $(testDoubleTanh_DEPENDENCIES)
+ @rm -f testDoubleTanh$(EXEEXT)
+ $(testDoubleTanh_LINK) $(testDoubleTanh_OBJECTS) $(testDoubleTanh_LDADD) $(LIBS)
+testFloatTanh$(EXEEXT): $(testFloatTanh_OBJECTS) $(testFloatTanh_DEPENDENCIES)
+ @rm -f testFloatTanh$(EXEEXT)
+ $(testFloatTanh_LINK) $(testFloatTanh_OBJECTS) $(testFloatTanh_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-ctanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-ctanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-dtanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-dtanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-stanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-stanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-ztanha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libTanh_la-ztanhs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleTanh-testDoubleTanh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatTanh-testFloatTanh.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libTanh_la-stanhs.lo: stanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-stanhs.lo -MD -MP -MF $(DEPDIR)/libTanh_la-stanhs.Tpo -c -o libTanh_la-stanhs.lo `test -f 'stanhs.c' || echo '$(srcdir)/'`stanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-stanhs.Tpo $(DEPDIR)/libTanh_la-stanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stanhs.c' object='libTanh_la-stanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-stanhs.lo `test -f 'stanhs.c' || echo '$(srcdir)/'`stanhs.c
+
+libTanh_la-dtanhs.lo: dtanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-dtanhs.lo -MD -MP -MF $(DEPDIR)/libTanh_la-dtanhs.Tpo -c -o libTanh_la-dtanhs.lo `test -f 'dtanhs.c' || echo '$(srcdir)/'`dtanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-dtanhs.Tpo $(DEPDIR)/libTanh_la-dtanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dtanhs.c' object='libTanh_la-dtanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-dtanhs.lo `test -f 'dtanhs.c' || echo '$(srcdir)/'`dtanhs.c
+
+libTanh_la-ctanhs.lo: ctanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-ctanhs.lo -MD -MP -MF $(DEPDIR)/libTanh_la-ctanhs.Tpo -c -o libTanh_la-ctanhs.lo `test -f 'ctanhs.c' || echo '$(srcdir)/'`ctanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-ctanhs.Tpo $(DEPDIR)/libTanh_la-ctanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ctanhs.c' object='libTanh_la-ctanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-ctanhs.lo `test -f 'ctanhs.c' || echo '$(srcdir)/'`ctanhs.c
+
+libTanh_la-ztanhs.lo: ztanhs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-ztanhs.lo -MD -MP -MF $(DEPDIR)/libTanh_la-ztanhs.Tpo -c -o libTanh_la-ztanhs.lo `test -f 'ztanhs.c' || echo '$(srcdir)/'`ztanhs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-ztanhs.Tpo $(DEPDIR)/libTanh_la-ztanhs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztanhs.c' object='libTanh_la-ztanhs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-ztanhs.lo `test -f 'ztanhs.c' || echo '$(srcdir)/'`ztanhs.c
+
+libTanh_la-stanha.lo: stanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-stanha.lo -MD -MP -MF $(DEPDIR)/libTanh_la-stanha.Tpo -c -o libTanh_la-stanha.lo `test -f 'stanha.c' || echo '$(srcdir)/'`stanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-stanha.Tpo $(DEPDIR)/libTanh_la-stanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stanha.c' object='libTanh_la-stanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-stanha.lo `test -f 'stanha.c' || echo '$(srcdir)/'`stanha.c
+
+libTanh_la-dtanha.lo: dtanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-dtanha.lo -MD -MP -MF $(DEPDIR)/libTanh_la-dtanha.Tpo -c -o libTanh_la-dtanha.lo `test -f 'dtanha.c' || echo '$(srcdir)/'`dtanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-dtanha.Tpo $(DEPDIR)/libTanh_la-dtanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dtanha.c' object='libTanh_la-dtanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-dtanha.lo `test -f 'dtanha.c' || echo '$(srcdir)/'`dtanha.c
+
+libTanh_la-ctanha.lo: ctanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-ctanha.lo -MD -MP -MF $(DEPDIR)/libTanh_la-ctanha.Tpo -c -o libTanh_la-ctanha.lo `test -f 'ctanha.c' || echo '$(srcdir)/'`ctanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-ctanha.Tpo $(DEPDIR)/libTanh_la-ctanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ctanha.c' object='libTanh_la-ctanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-ctanha.lo `test -f 'ctanha.c' || echo '$(srcdir)/'`ctanha.c
+
+libTanh_la-ztanha.lo: ztanha.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -MT libTanh_la-ztanha.lo -MD -MP -MF $(DEPDIR)/libTanh_la-ztanha.Tpo -c -o libTanh_la-ztanha.lo `test -f 'ztanha.c' || echo '$(srcdir)/'`ztanha.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libTanh_la-ztanha.Tpo $(DEPDIR)/libTanh_la-ztanha.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztanha.c' object='libTanh_la-ztanha.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libTanh_la_CFLAGS) $(CFLAGS) -c -o libTanh_la-ztanha.lo `test -f 'ztanha.c' || echo '$(srcdir)/'`ztanha.c
+
+testDoubleTanh-testDoubleTanh.o: testDoubleTanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTanh_CFLAGS) $(CFLAGS) -MT testDoubleTanh-testDoubleTanh.o -MD -MP -MF $(DEPDIR)/testDoubleTanh-testDoubleTanh.Tpo -c -o testDoubleTanh-testDoubleTanh.o `test -f 'testDoubleTanh.c' || echo '$(srcdir)/'`testDoubleTanh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleTanh-testDoubleTanh.Tpo $(DEPDIR)/testDoubleTanh-testDoubleTanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleTanh.c' object='testDoubleTanh-testDoubleTanh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTanh_CFLAGS) $(CFLAGS) -c -o testDoubleTanh-testDoubleTanh.o `test -f 'testDoubleTanh.c' || echo '$(srcdir)/'`testDoubleTanh.c
+
+testDoubleTanh-testDoubleTanh.obj: testDoubleTanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTanh_CFLAGS) $(CFLAGS) -MT testDoubleTanh-testDoubleTanh.obj -MD -MP -MF $(DEPDIR)/testDoubleTanh-testDoubleTanh.Tpo -c -o testDoubleTanh-testDoubleTanh.obj `if test -f 'testDoubleTanh.c'; then $(CYGPATH_W) 'testDoubleTanh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleTanh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleTanh-testDoubleTanh.Tpo $(DEPDIR)/testDoubleTanh-testDoubleTanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleTanh.c' object='testDoubleTanh-testDoubleTanh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleTanh_CFLAGS) $(CFLAGS) -c -o testDoubleTanh-testDoubleTanh.obj `if test -f 'testDoubleTanh.c'; then $(CYGPATH_W) 'testDoubleTanh.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleTanh.c'; fi`
+
+testFloatTanh-testFloatTanh.o: testFloatTanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTanh_CFLAGS) $(CFLAGS) -MT testFloatTanh-testFloatTanh.o -MD -MP -MF $(DEPDIR)/testFloatTanh-testFloatTanh.Tpo -c -o testFloatTanh-testFloatTanh.o `test -f 'testFloatTanh.c' || echo '$(srcdir)/'`testFloatTanh.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatTanh-testFloatTanh.Tpo $(DEPDIR)/testFloatTanh-testFloatTanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatTanh.c' object='testFloatTanh-testFloatTanh.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTanh_CFLAGS) $(CFLAGS) -c -o testFloatTanh-testFloatTanh.o `test -f 'testFloatTanh.c' || echo '$(srcdir)/'`testFloatTanh.c
+
+testFloatTanh-testFloatTanh.obj: testFloatTanh.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTanh_CFLAGS) $(CFLAGS) -MT testFloatTanh-testFloatTanh.obj -MD -MP -MF $(DEPDIR)/testFloatTanh-testFloatTanh.Tpo -c -o testFloatTanh-testFloatTanh.obj `if test -f 'testFloatTanh.c'; then $(CYGPATH_W) 'testFloatTanh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatTanh.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatTanh-testFloatTanh.Tpo $(DEPDIR)/testFloatTanh-testFloatTanh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatTanh.c' object='testFloatTanh-testFloatTanh.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatTanh_CFLAGS) $(CFLAGS) -c -o testFloatTanh-testFloatTanh.obj `if test -f 'testFloatTanh.c'; then $(CYGPATH_W) 'testFloatTanh.c'; else $(CYGPATH_W) '$(srcdir)/testFloatTanh.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/ctanha.c b/2.3-1/src/c/elementaryFunctions/tanh/ctanha.c
new file mode 100644
index 00000000..e8f9bdf8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/ctanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+
+void ctanha(floatComplex* x, int size, floatComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ctanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/ctanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/ctanhs.c
new file mode 100644
index 00000000..24c1fa68
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/ctanhs.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+#include "tan.h"
+
+floatComplex ctanhs(floatComplex z) {
+ float real = creals(z);
+ float imag = cimags(z);
+
+ floatComplex result = ctans(FloatComplex(-imag, real));
+ return (FloatComplex(cimags(result), -creals(result)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/dtanha.c b/2.3-1/src/c/elementaryFunctions/tanh/dtanha.c
new file mode 100644
index 00000000..d7fce426
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/dtanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+
+void dtanha(double* x, int size, double* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = dtanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/dtanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/dtanhs.c
new file mode 100644
index 00000000..b968010e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/dtanhs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+
+double dtanhs(double x) {
+ return (tanh(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/i16tanha.c b/2.3-1/src/c/elementaryFunctions/tanh/i16tanha.c
new file mode 100644
index 00000000..3a4e37cd
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/i16tanha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tanh.h"
+
+void i16tanha(int16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i16tanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/i16tanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/i16tanhs.c
new file mode 100644
index 00000000..7d8b1843
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/i16tanhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tanh.h"
+
+float i16tanhs(int16 x) {
+ return (tanhf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/i8tanha.c b/2.3-1/src/c/elementaryFunctions/tanh/i8tanha.c
new file mode 100644
index 00000000..dca31761
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/i8tanha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tanh.h"
+
+void i8tanha(int8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = i8tanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/i8tanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/i8tanhs.c
new file mode 100644
index 00000000..6351e5c8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/i8tanhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tanh.h"
+
+float i8tanhs(int8 x) {
+ return (tanhf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/stanha.c b/2.3-1/src/c/elementaryFunctions/tanh/stanha.c
new file mode 100644
index 00000000..1474e467
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/stanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+
+void stanha(float* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = stanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/stanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/stanhs.c
new file mode 100644
index 00000000..80462855
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/stanhs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+
+float stanhs(float x) {
+ return (tanhf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/testDoubleTanh.c b/2.3-1/src/c/elementaryFunctions/tanh/testDoubleTanh.c
new file mode 100644
index 00000000..3aecd1f4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/testDoubleTanh.c
@@ -0,0 +1,496 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testTanh.h"
+
+#define SOURCE {0.7062616096809506416321,0.4090520101599395275116,0.3011248558759689331055,\
+0.1880126395262777805328,0.1796709178015589714050,0.2828889950178563594818,\
+0.7232380937784910202026,0.7360379849560558795929,0.1852612206712365150452,\
+0.7703790138475596904755,0.1914967410266399383545,0.7521587223745882511139,\
+0.6205883463844656944275,0.2807604051195085048676,0.2289868686348199844360,\
+0.5049233403988182544708,0.8354099662974476814270,0.8174716415815055370331,\
+0.0030740275979042053223,0.3677616142667829990387,0.8278525872156023979187,\
+0.72754097869619727135,0.5323124285787343978882,0.9267726917751133441925,\
+0.9542504185810685157776,0.3162104780785739421845,0.5789009965956211090088,\
+0.6881225542165338993073,0.3714061146602034568787,0.1705444059334695339203,\
+0.1954363007098436355591,0.978800852317363023758,0.9300233917310833930969,\
+0.5357720064930617809296,0.3947123587131500244141,0.1344871171750128269196,\
+0.7380615202710032463074,0.588114650454372167587,0.9113173168152570724487,\
+0.5682763461954891681671,0.1127616921439766883850,0.9478473584167659282684,\
+0.5237770043313503265381,0.8140139640308916568756,0.1400952627882361412048,\
+0.2763446993194520473480,0.9059953633695840835571,0.1379901585169136524200,\
+0.5603838684037327766419,0.3008610638789832592011,0.4767417535185813904,\
+0.8127435916103422641754,0.1988414181396365165710,0.1107953130267560482025,\
+0.2159351315349340438843,0.6467244853265583515167,0.6597879612818360328674,\
+0.0691898013465106487274,0.9164751060307025909424,0.8635670826770365238190,\
+0.5032854294404387474060,0.1832137755118310451508,0.8403698671609163284302,\
+0.9247214836068451404572,0.6229452537372708320618,0.2773811477236449718475,\
+0.2479109913110733032227,0.3891948559321463108063,0.0436578569933772087097,\
+0.8132526441477239131928,0.7686451207846403121948,0.4041520212776958942413,\
+0.8579940209165215492249,0.6993723283521831035614,0.0828925184905529022217,\
+0.9201254160143435001373,0.5200281282886862754822,0.9351884997449815273285,\
+0.8825624976307153701782,0.2245844271965324878693,0.2153332801535725593567,\
+0.4327089670114219188690,0.5800157263875007629395,0.8876141034997999668121,\
+0.5258982880041003227234,0.859640696551650762558,0.7337234076112508773804,\
+0.7134532411582767963409,0.1087165409699082374573,0.8477638359181582927704,\
+0.6594733335077762603760,0.7916418449021875858307,0.6067967480048537254334,\
+0.4102901122532784938812,0.1958728153258562088013,0.241527963895350694656,\
+0.5113455550745129585266,0.9119556057266891002655,0.0928984880447387695313,\
+0.7438839026726782321930,0.1938720373436808586121,0.4355978979729115962982,\
+0.9922429900616407394409,0.4533818070776760578156,0.8269640663638710975647,\
+0.8889675955288112163544,0.4682085178792476654053,0.3856786251999437808991,\
+0.4124865522608160972595,0.6955242282710969448090,0.0978972557932138442993,\
+0.8728604433126747608185,0.6359515609219670295715,0.4129665228538215160370,\
+0.0294486805796623229980,0.1809961968101561069489,0.7658103061839938163757,\
+0.1232470511458814144135,0.0170737411826848983765,0.8835507561452686786652,\
+0.3164170170202851295471,0.9378212536685168743134,0.3916359134018421173096,\
+0.0844073877669870853424,0.6934146797284483909607,0.4618808380328118801117,\
+0.9355291295796632766724,0.0842495900578796863556,0.5402926551178097724915,\
+0.5613215523771941661835,0.1306025832891464233398,0.5840523042716085910797,\
+0.0048661706969141960144,0.2761953338049352169037,0.7478824090212583541870,\
+0.0194325004704296588898,0.6444276878610253334045,0.2243968318216502666473,\
+0.2478402368724346160889,0.1196091384626924991608,0.1883201440796256065369,\
+0.3393343067727982997894,0.959958622232079505920,0.2847225037403404712677,\
+0.8766820700839161872864,0.2853349032811820507050,0.5103433504700660705566,\
+0.8752629184164106845856,0.5941145820543169975281,0.3945342986844480037689,\
+0.4661326166242361068726,0.0073588271625339984894,0.5170202488079667091370,\
+0.4690007264725863933563,0.6654530800879001617432,0.9476742581464350223541,\
+0.4933638339862227439880,0.2918433747254312038422,0.2016727942973375320435,\
+0.7016656589694321155548,0.8736049132421612739563,0.191055159550160169601,\
+0.5307010114192962646484,0.8889481076039373874664,0.0115523664280772209167,\
+0.4998398735187947750092,0.6700848620384931564331,0.4995208983309566974640,\
+0.1538907447829842567444,0.2571737091057002544403,0.9586529098451137542725,\
+0.6246025026775896549225,0.9371285131201148033142,0.9923511571250855922699,\
+0.3454555813223123550415,0.7558249053545296192169,0.2107181670144200325012,\
+0.9372652801685035228729,0.6767524704337120056152,0.7465373151935636997223,\
+0.4050982249900698661804,0.5101723610423505306244,0.9497965183109045028687,\
+0.0289692510850727558136,0.1634070957079529762268,0.4146909262053668498993,\
+0.0021650679409503936768,0.1810030029155313968658,0.4556188201531767845154,\
+0.1977851442061364650726,0.6053877938538789749146,0.4363054675050079822540,\
+0.8938506888225674629211,0.6104825991205871105194,0.4316215068101882934570,\
+0.2315693595446646213532,0.4675927339121699333191,0.6150764389894902706146,\
+0.8621218334883451461792,0.3846137975342571735382}
+
+#define RESULT {0.6083272331025194601395,0.3876674561956683362496,0.2923416719993215950879,\
+0.1858281840181150723623,0.1777622033720960281755,0.2755767974985386392639,\
+0.6189110466547474986854,0.6267454363670084127591,0.1831704252906815044710,\
+0.6471497862444923754310,0.1891897820789192330437,0.6364350501403950310930,\
+0.5515375365220808179245,0.2736087067004031037065,0.2250667607234114742099,\
+0.4659802867043164043004,0.6833702176797041838441,0.6736913883505325495449,\
+0.0030740179151169427958,0.3520322698255886617602,0.6793212620436761550735,\
+0.6215586405472446340781,0.4871467381023854570366,0.7290856689840882198794,\
+0.7417012620322497307157,0.3060764076080783047118,0.5218661923298004712279,\
+0.5967745422524275422660,0.3552210140242362257368,0.1689099681737986358154,\
+0.1929854853271556480721,0.752546334797111304837,0.7306048018962054690917,\
+0.4897808669902837253041,0.3754155858264546230529,0.1336821273676178090106,\
+0.6279725491443334250974,0.5285382896600216984240,0.7217639239261176564710,\
+0.5140922941464451945137,0.1122861813568946515174,0.7388069522259688159949,\
+0.4806098503179282999120,0.6717986111263679616101,0.1391858664071369267035,\
+0.2695186533316221155765,0.7192045990350994788543,0.1371209417264223628941,\
+0.5082621919460940107527,0.2921004060298734161805,0.4436303990482610704049,\
+0.6711009797617260019820,0.1962616190799932602840,0.1103441684263640337749,\
+0.2126403628770875964271,0.5694607822364758931144,0.5782222848708917783966,\
+0.0690796032269536119941,0.7242256121481682740182,0.69809096281132376749,\
+0.4646970495827091318652,0.1811909351875044538183,0.6860049185734097276779,\
+0.7281233753912585981993,0.5531753555435303670862,0.2704795450464865247398,\
+0.2429539608603658584762,0.3706659125047845337875,0.0436301407089985798793,\
+0.6713806714122574348380,0.6461409215061649780054,0.3834959767038711997422,\
+0.6952226974662015779316,0.6039692179338833621927,0.0827031826719682033877,\
+0.7259567403708432342668,0.4777217213658969674484,0.7330037868445029580755,\
+0.7077007368815937393691,0.2208832069439833623026,0.2120656512810102645172,\
+0.4075827434794156989284,0.5226768598581769120770,0.7102132909685879846862,\
+0.4822394836530664030683,0.6960725041612901842214,0.6253380086104668444946,\
+0.6128377044260436834477,0.1082902389835735668111,0.6898994401629748862703,\
+0.5780128119634093675217,0.6593381318630107124079,0.5418683181743142451836,\
+0.3887189835668665716106,0.1934057072291916479223,0.2369384549831176911550,\
+0.4709929270514126020686,0.7220695597477664318120,0.0926321653854568632935,\
+0.6314859919362979523427,0.1914790269022769997331,0.4099889146528875039088,\
+0.7583171167988222993728,0.4246748836724252296193,0.6788424846042582228023,\
+0.7108834330723724503898,0.4367506950167392987261,0.3676288421910962611605,\
+0.3905819425256221721909,0.6015191410314820741334,0.0975857051379892537213,\
+0.7028245349377849615635,0.5621367138424371301397,0.3909886152936559167159,\
+0.0294401706564003176614,0.1790453013287252037600,0.6444866108356477329977,\
+0.1226267854182154504183,0.0170720823056739953727,0.7081936907445306461639,\
+0.3062635855747415369876,0.7342196272687927516287,0.3727696775311670207564,\
+0.0842075009021545223264,0.6001711719907401043628,0.4316159054333421063454,\
+0.7331613587758020189611,0.0840508200406931138549,0.4932094637687579607999,\
+0.5089573121007661127280,0.1298650506608897969851,0.5256044879043626494308,\
+0.0048661322875914753833,0.2693801321981743046585,0.6338839281129466929343,\
+0.0194300547927987350694,0.5679067732631524201281,0.2207047568409323534677,\
+0.2428873816732023682707,0.1190419938419155360121,0.1861250528158440442628,\
+0.3268829619862821389553,0.7442584101595816070685,0.2772702073231406161291,\
+0.7047532323150516031518,0.2778354302962353084006,0.4702126778004429574764,\
+0.7040382261737980762462,0.5328484040985558278791,0.3752626107952297673798,\
+0.43506925228714365961,0.0073586943328478923027,0.4753969607482095849349,\
+0.4373915670200547722857,0.5819809696038570345777,0.7387283262105414083365,\
+0.4568821823646959101595,0.2838305708191527498840,0.1989824153354164404384,\
+0.6054239725907547553518,0.7032010676851431218992,0.1887639704824971842445,\
+0.4859167650222710466146,0.7108737933392066388194,0.0115518525401329084923,\
+0.461991216833716300538,0.5850357022343135593445,0.4617402854275272083839,\
+0.1526873114812071496882,0.2516501130208930181453,0.7436753924988391828421,\
+0.5543244269171754279313,0.7339001657945646295289,0.7583630791792929093376,\
+0.3323391775157006899910,0.6386111600303081559105,0.2076538016886759763224,\
+0.7339632624841636587831,0.5894041048692751916249,0.6330786187202321890766,\
+0.3843027300435838400361,0.4700794834210440531486,0.7396909169647786219670,\
+0.0289611499702619457075,0.1619680384735620870540,0.3924484198089013831101,\
+0.0021650645580242309542,0.1790518892412555074234,0.4265067109232646425099,\
+0.1952458211607971949597,0.5408723031703753791888,0.4105773773696593798022,\
+0.7132904548568874680825,0.5444667235672814298297,0.4066755344379027192758,\
+0.2275170058253208615895,0.4362522385676954606026,0.5476906607425194861705,\
+0.6973492805657204307579,0.3667075667170831554387}
+
+#define ZSOURCER {0.6045256052166223526001,0.9455216196365654468536,0.4476299257948994636536,\
+0.8624908211641013622284,0.1751048639416694641113,0.2067177616991102695465,\
+0.6848411662504076957703,0.1348653226159512996674,0.0069159921258687973022,\
+0.1496290047653019428253,0.5665438110008835792542,0.4359452719800174236298,\
+0.6547604538500308990479,0.3381605879403650760651,0.4259321158751845359802,\
+0.3060420057736337184906,0.7704779822379350662231,0.7058695447631180286408,\
+0.2373670237138867378235,0.8205849635414779186249,0.6789963841438293457031,\
+0.5250809141434729099274,0.3359806565567851066589,0.8941988362930715084076,\
+0.5461782198399305343628,0.7568633262999355792999,0.0259526828303933143616,\
+0.3250150899402797222138,0.6072143577039241791,0.8756139636971056461334,\
+0.2962085595354437828064,0.4229678637348115444183,0.4243144039064645767212,\
+0.7620028969831764698029,0.3622896494343876838684,0.5658242437057197093964,\
+0.6424440070986747741699,0.7580267959274351596832,0.2531452132388949394226,\
+0.5266989110969007015228,0.2118590380996465682983,0.4779220153577625751495,\
+0.1615962767973542213440,0.9168031658045947551727,0.5461866445839405059815,\
+0.4686870560981333255768,0.7772213732823729515076,0.5871783248148858547211,\
+0.5848031807690858840942,0.3139644009061157703400,0.3204141603782773017883,\
+0.3331634956412017345429,0.2282590121030807495117,0.2750317254103720188141,\
+0.4963629124686121940613,0.7453477247618138790131,0.1155001949518918991089,\
+0.0626524840481579303741,0.0877018878236413002014,0.5507565210573375225067,\
+0.2116370312869548797607,0.8335358710028231143951,0.4045845707878470420837,\
+0.2880227542482316493988,0.1750094983726739883423,0.0051561561413109302521,\
+0.3109287889674305915833,0.6602919283322989940643,0.9722995534539222717285,\
+0.9826813959516584873200,0.0455837054178118705750,0.4096118300221860408783,\
+0.7104403134435415267944,0.3917615194804966449738,0.5571686858311295509338,\
+0.0565565521828830242157,0.1540721096098423004150,0.9109257892705500125885,\
+0.5713340407237410545349,0.3488348922692239284515,0.8972954172641038894653,\
+0.2973396372981369495392,0.1091936426237225532532,0.7626331257633864879608,\
+0.6584706604480743408203,0.6996708759106695652008,0.6756794182583689689636,\
+0.9004421546123921871185,0.6668148916214704513550,0.8518152837641537189484,\
+0.8365677157416939735413,0.1291190306656062602997,0.6095453463494777679443,\
+0.2412315667606890201569,0.4029275467619299888611,0.3019328541122376918793,\
+0.1083198729902505874634,0.8456356939859688282013,0.9417407037690281867981,\
+0.9083450469188392162323,0.1937242373824119567871,0.5318046086467802524567,\
+0.8314437521621584892273,0.4952740012668073177338,0.7465563025325536727905,\
+0.7102393140085041522980,0.5811418974772095680237,0.7035941029898822307587,\
+0.3746570833027362823486,0.3394373343326151371002,0.6322447275742888450623,\
+0.7636191300116479396820,0.6940386760979890823364,0.8735245508141815662384,\
+0.3612738298252224922180,0.7933200257830321788788,0.4830590635538101196289,\
+0.2469964125193655490875,0.5025922833010554313660,0.7430270477198064327240,\
+0.6783937942236661911011,0.4903185223229229450226,0.709806025959551334381,\
+0.3303662906400859355927,0.6815545372664928436279,0.0701365978457033634186,\
+0.4745870968326926231384,0.8091805852018296718597,0.9447045121341943740845,\
+0.5478458073921501636505,0.1216687532141804695129,0.9161847713403403759003,\
+0.3045207932591438293457,0.6502694808878004550934,0.0987624628469347953796,\
+0.8391053467057645320892,0.0328534897416830062866,0.3461971958167850971222,\
+0.2801467711105942726135,0.5500544901005923748016,0.0729318000376224517822,\
+0.0225322381593286991119,0.50267804320901632309,0.3478884599171578884125,\
+0.4298669416457414627075,0.3537984383292496204376,0.0529730813577771186829,\
+0.9533003675751388072968,0.1842019557952880859375,0.958756382111459970474,\
+0.3245136169716715812683,0.0003973259590566158295,0.0972583871334791183472,\
+0.4378789965994656086,0.3634226778522133827210,0.2685119728557765483856,\
+0.2770298384130001068115,0.8854365111328661441803,0.5216628303751349449158,\
+0.4979983693920075893,0.8733724001795053482056,0.4699407932348549365997,\
+0.9364062966778874397278,0.1337622734718024730682,0.2712419554591178894043,\
+0.1766990595497190952301,0.0543269468471407890320,0.8402757882140576839447,\
+0.7507283594459295272827,0.3062269617803394794464,0.9195641661062836647034,\
+0.1318263853900134563446,0.0826364941895008087158,0.8222710476256906986237,\
+0.4441085970029234886169,0.9617503038607537746429,0.0283641982823610305786,\
+0.1431905967183411121368,0.3793597565963864326477,0.6144003230147063732147,\
+0.2128270715475082397461,0.4704488315619528293610,0.2076055286452174186707,\
+0.7435979112051427364349,0.3391801547259092330933,0.2479635034687817096710,\
+0.6721735307946801185608,0.9013197491876780986786,0.2140864841639995574951,\
+0.8460668534971773624420,0.1650043567642569541931,0.4003686285577714443207,\
+0.5522825215011835098267,0.0638249483890831470490,0.6903966935351490974426,\
+0.8547787251882255077362,0.0291904583573341369629,0.5434663915075361728668,\
+0.6236743135377764701843,0.2417052476666867733002}
+
+#define ZSOURCEI {0.5503273960202932357788,0.6906704087741672992706,0.9835249418392777442932,\
+0.8285484607331454753876,0.2062614001333713531494,0.1944643096067011356354,\
+0.4367609983310103416443,0.8090620837174355983734,0.8818644303828477859497,\
+0.7404803228564560413361,0.7542522149160504341126,0.9921960639767348766327,\
+0.9886121451854705810547,0.0113218077458441257477,0.9367801276966929435730,\
+0.3874237253330647945404,0.2886805813759565353394,0.567788839805871248245,\
+0.7295644441619515419006,0.0303032915107905864716,0.2795897088944911956787,\
+0.7047131718136370182037,0.7442112853750586509705,0.8920237845741212368012,\
+0.1081438604742288589478,0.8751525697298347949982,0.9068333031609654426575,\
+0.2166852983646094799042,0.4824190363287925720215,0.7766945236362516880035,\
+0.4510916722938418388367,0.1300636469386518001556,0.5505470838397741317749,\
+0.6936193336732685565949,0.1749099576845765113831,0.8636093880049884319305,\
+0.2150467522442340850830,0.1886725709773600101471,0.1796098565682768821716,\
+0.4374312213622033596039,0.8514516223222017288208,0.7381969136185944080353,\
+0.8102188156917691230774,0.1460137623362243175507,0.8999849110841751098633,\
+0.4043733575381338596344,0.0156995235010981559753,0.6904196902178227901459,\
+0.2990311514586210250855,0.1383218024857342243195,0.8478512773290276527405,\
+0.3007262717001140117645,0.229154746979475021362,0.8078110129572451114655,\
+0.3176332255825400352478,0.6924462593160569667816,0.1364154014736413955689,\
+0.5433279541321098804474,0.3276594849303364753723,0.2006831648759543895721,\
+0.5037304237484931945801,0.4962565028108656406403,0.8996161324903368949890,\
+0.9357709079049527645111,0.3390339072793722152710,0.6029155333526432514191,\
+0.4153500730171799659729,0.3041478390805423259735,0.8489827848970890045166,\
+0.4482063786126673221588,0.0903797810897231101990,0.7382151386700570583344,\
+0.2669597584754228591919,0.8226196658797562122345,0.3985779182985424995422,\
+0.9789295899681746959686,0.3041231036186218261719,0.0663515278138220310211,\
+0.6667758254334330558777,0.7548807277344167232513,0.1922533493489027023315,\
+0.7942791883833706378937,0.5580398896709084510803,0.2016023616306483745575,\
+0.787146832793951034546,0.0955459238030016422272,0.6623697867617011070252,\
+0.864868474658578634262,0.7013061288744211196899,0.8015053984709084033966,\
+0.9135685982182621955872,0.6317234965972602367401,0.9346773549914360046387,\
+0.9157753759063780307770,0.0510348035022616386414,0.4329969524405896663666,\
+0.9721843507140874862671,0.8001508046872913837433,0.8452261472120881080627,\
+0.0610524858348071575165,0.8168097324669361114502,0.2101262793876230716705,\
+0.3055453812703490257263,0.9465212575159966945648,0.9269728232175111770630,\
+0.7737778765149414539337,0.5893978821113705635071,0.2377697187475860118866,\
+0.5269544571638107299805,0.0077543654479086399078,0.8311711428686976432800,\
+0.0268517597578465938568,0.2591186594218015670776,0.4641277943737804889679,\
+0.6098861405625939369202,0.0656952331773936748505,0.6466812007129192352295,\
+0.1018534512259066104889,0.2742705782875418663025,0.8162728524766862392426,\
+0.3357750270515680313110,0.4765891996212303638458,0.8440040023997426033020,\
+0.1785074654035270214081,0.5855625644326210021973,0.8426241897977888584137,\
+0.7058847947046160697937,0.7396617024205625057221,0.9751448985189199447632,\
+0.7606669445522129535675,0.8236690396443009376526,0.8889620001427829265595,\
+0.7960178293287754058838,0.3052428201772272586823,0.6803312664851546287537,\
+0.6412069997750222682953,0.0988248009234666824341,0.4654508423991501331329,\
+0.6714970665052533149719,0.5131103205494582653046,0.8631567060947418212891,\
+0.8328299173153936862946,0.1687975851818919181824,0.2961277081631124019623,\
+0.2591485660523176193237,0.1700844173319637775421,0.9718958893790841102600,\
+0.0695185582153499126434,0.4696230851113796234131,0.9544191421009600162506,\
+0.3679352095350623130798,0.2973918146453797817230,0.0415310803800821304321,\
+0.4892336544580757617950,0.5171590568497776985169,0.3534862431697547435761,\
+0.2354387864470481872559,0.6779259913600981235504,0.3834532154724001884460,\
+0.3174350797198712825775,0.3418120350688695907593,0.0535557498224079608917,\
+0.9285596096888184547424,0.3862650538794696331024,0.4328473098576068878174,\
+0.1581165478564798831940,0.7887120461091399192810,0.7448797873221337795258,\
+0.5185996759682893753052,0.8651678604073822498322,0.1524438308551907539368,\
+0.2392775672487914562225,0.5761575847864151000977,0.7395762302912771701813,\
+0.0583172617480158805847,0.6962534948252141475678,0.4206145536154508590698,\
+0.0281158541329205036163,0.8313249954953789710999,0.2333360086195170879364,\
+0.8865877203643321990967,0.3746785433031618595123,0.87671328987926244736,\
+0.4027077830396592617035,0.2890332732349634170532,0.8538430598564445972443,\
+0.5499771209433674812317,0.5128610017709434032440,0.6321087554097175598145,\
+0.4165538274683058261871,0.3217771751806139945984,0.9717370062135159969330,\
+0.5348322447389364242554,0.3416590173728764057159,0.9565287167206406593323,\
+0.9951003189198672771454,0.3422884084284305572510,0.7870580093003809452057,\
+0.9234123295173048973084,0.5238970420323312282562}
+
+#define ZRESULTR {0.6700223015238303547747,0.9051590648529930227539,0.9783774998303537140387,\
+0.9672554578415690773596,0.1806879116022510611828,0.2113884833531175511112,\
+0.6724311908168314477763,0.2759693779071136221504,0.0171117603025009445972,\
+0.2676571377242007998554,0.7836070482910290069256,0.9837911114618788088748,\
+1.0787649507707848250959,0.3258715909732741722316,0.8818391305817397940459,\
+0.3412489698350346656319,0.6791962837910036077105,0.7436127103435716811930,\
+0.40184826884232582866,0.6757254959645757619313,0.6216816234807176488886,\
+0.7106811634553994450059,0.5496317899100798820555,1.015517869987778709628,\
+0.5020506061187628432663,0.9811456923663512963429,0.0682501782366792819623,\
+0.3276872649171290174941,0.6393144648282618192070,0.9360249253515308121010,\
+0.3486021801541281939230,0.405155698729944113712,0.5200555835311830854550,\
+0.8452234271752276928424,0.3567295147730688009702,0.8928456199942530480129,\
+0.5846382117554749235922,0.6534877266970448017602,0.2555268336748864332897,\
+0.5599022272385358878211,0.4549851524880720865518,0.6983186009546583639107,\
+0.3278445848029415965463,0.7317436304730139395858,0.9243668151604532701171,\
+0.4997101034619103598899,0.6512014053656888235011,0.7461784468374338397112,\
+0.5613804235723615088105,0.309377290465780441231,0.6302193796318024121561,\
+0.3488048678688123183100,0.2359369023748482674385,0.5207697215592063111345,\
+0.4975483327992256676886,0.8371220343907752603485,0.1171268218028372609663,\
+0.085272785233540815408,0.0974986984973703479929,0.5164560743022618138909,\
+0.2683348894394235739647,0.7764310536494951620057,0.8045234481921298419493,\
+0.6958959159533119054331,0.1940650650900959395262,0.0075996484393591736892,\
+0.3536342521606328781481,0.6152689741862609196232,0.9952856734893198442649,\
+0.8206704954595607226509,0.0459255053037718463660,0.6307753783837566352588,\
+0.6388147154641353742122,0.6937233166977520015806,0.5697295509652193779004,\
+0.1802327077236753061218,0.1675371469878289276689,0.7230999921866064772402,\
+0.7176490691010239952874,0.5749086647774364067232,0.7279693322506849417763,\
+0.5413870504782296588786,0.1504476557625347432623,0.6581157602540366191590,\
+0.8675383161064098569426,0.6076707020048850438343,0.7819483789931592765399,\
+0.9976690503006511168138,0.8038234125831255072470,0.9466047824946693944881,\
+1.0263044057305568124150,0.1954383476167207978058,0.9991226583234396052546,\
+0.5824462236684256888353,0.3833026614151368027805,0.3492943337672331227672,\
+0.3315115099350262606315,0.9442386171423264862312,0.9899258002262354416700,\
+0.7216294786971718666635,0.3920325460401206107974,0.5034740230892749135450,\
+0.715969761025848305813,0.9550125571098367904810,1.0265780142294762544708,\
+0.8803585794351714843842,0.6748726933268143213240,0.6286862272305427934427,\
+0.4593360950510761986365,0.3269925373376404986736,0.8950979801820350134634,\
+0.6434757060207739742808,0.6268824366882729259842,0.7824259493911607243888,\
+0.4869178781705328362683,0.6618946105318512795890,0.6319261919275969141552,\
+0.2444724751522657224534,0.4924981727592058766696,0.9272283746811394999909,\
+0.6354081057135144705583,0.5455716136398853777223,0.9397290975289604997300,\
+0.3281437517029104355970,0.7390025847943897385761,0.1571298352097142136952,\
+0.6681717696917298665582,0.893260926700763513431,1.0727843133940448971941,\
+0.7758756582495047737780,0.2577884404871108037227,1.0152118695965053341013,\
+0.553316515865495128779,0.6088582613070312454795,0.1618775254222162562900,\
+0.8458278989313633422498,0.0331641659985394132715,0.4056540942022494600217,\
+0.4254458405105830398618,0.6108828412056167556088,0.1710530527126769284596,\
+0.0497407205620656947542,0.4747317015892947855704,0.3618696796533303894350,\
+0.4287418625744875422257,0.3485740919790226710617,0.1655375133873851212218,\
+0.7428884062630719542497,0.2271172969578298117543,1.0587395337282918816868,\
+0.3549940948693925402147,0.0004346469449674766222,0.0971187244038783509259,\
+0.5043807505243238509252,0.4434874448032950500220,0.2951797103676901401492,\
+0.2845053188094572860223,0.8815102337365799956004,0.5368898054807562658652,\
+0.4988328370209159090543,0.745435623332440511213,0.4391683137636283595917,\
+1.0422403039497714072326,0.1545117394214212958037,0.3165746040477503964183,\
+0.1791895467797269270172,0.1089461488105609721089,0.9065124792766549033374,\
+0.7446224625751999282031,0.6296662678760955866864,0.7337000953456223051319,\
+0.1387263358911398902773,0.1169149268680415021393,0.8975235374861081361075,\
+0.4182178630757872883628,0.9119369228139623251295,0.0340248805832462572485,\
+0.1423301258754861298161,0.6888548451397347172076,0.5685106882588889520847,\
+0.4923020191500164788323,0.4917581413760083730580,0.4716616017939372351719,\
+0.6955693872489776552470,0.3523112018531558975454,0.5222250480132760719343,\
+0.7144705774015845944902,0.8119440584245034564503,0.3164274689259520823015,\
+0.7538323331802344595687,0.1811571114058267151226,0.9128449761317551924833,\
+0.6233160136433549824986,0.0717615749734574065455,1.0473491540209625139113,\
+1.0924869453095222837646,0.0328835678516360627177,0.7973589739562461087274,\
+0.9908609316019793000763,0.3104246876762664641980}
+
+#define ZRESULTI {0.3914561710408779870996,0.2745677431871340612446,0.8850988190375015385314,\
+0.3546606100359354085683,0.2026838146454169320432,0.1884673919393772267839,\
+0.2801601885873738484456,1.0096958835716720592757,1.21412343558816204769,\
+0.8776375911322839007411,0.5620073675207013508270,0.9130433942963852578245,\
+0.5770284711891953133289,0.0101200891695042028556,0.8779935002098492313749,\
+0.3667139971005198284537,0.1664312994282131086266,0.3494312783943472333625,\
+0.8104125516371111226377,0.0164786111567649697085,0.1816457336156695190343,\
+0.5593166230651334114299,0.7569161316066348454967,0.3415023725885689698245,\
+0.0814423238542508892701,0.4465689540632135634546,1.275733507144991119020,\
+0.197487841611818731868,0.3421719548772197971864,0.3349549978483222778536,\
+0.4357966181675047567801,0.1096343010109522564388,0.4859836370575167374675,\
+0.3800931088000560897910,0.1548265257107722947527,0.6348894325615116462913,\
+0.1460748031318926942745,0.1110957110750060844451,0.1700664034230296439709,\
+0.3412176537402174525404,1.0332395638414424432483,0.6273383485614248966655,\
+0.9957192459042429888427,0.0691093109901288471519,0.6804424693811944591104,\
+0.3344738416260302771299,0.0090436204351948476510,0.5006804162977720462635,\
+0.2172201211207329951680,0.1261162082552027552396,0.9120640605812813106468,\
+0.2753688308103523496584,0.2209039383694014757609,0.8997305533684579748055,\
+0.2536420004619579504634,0.3903699376999557602019,0.1354191697515705339328,\
+0.6007399379388951299319,0.3370127497194151389159,0.1507780721992685313282,\
+0.5203153088877445764382,0.254583375618394558426,0.8702994198605253917123,\
+1.0924089238964773684870,0.3407939274374255367306,0.6883985279629690756664,\
+0.3940203751449571356602,0.2021529986071308460094,0.2883410464579913012884,\
+0.1832164764792163502705,0.0904370855097187398286,0.6870692259557662495695,\
+0.1667494081756663859562,0.7986735402486416779411,0.2997470364729120650971,\
+1.4723672873315984954701,0.3058215886262277694030,0.0317778181669746695448,\
+0.4953897349233554736614,0.7593857543036769408573,0.0933417291983620195373,\
+0.8587250458616788595379,0.6140082043678934953235,0.1179425317948916696054,\
+0.5008800041022678506408,0.0606528647874819346053,0.4208891412439614287955,\
+0.3345057926491249999934,0.4488362148523600825278,0.356228513965734405744,\
+0.3862019012866550471408,0.7133939454258028112221,0.6183512140459618278143,\
+1.122372846973830329276,0.0435912326295722213354,0.4149318455829275609226,\
+1.4136182419356593253923,0.360095911709175209303,0.3059781012378688380693,\
+0.0293528815458468754496,0.9850054988638156094893,0.1610071461548980287226,\
+0.1615738175268226772818,0.7804595725744208900565,0.4664649257591839126569,\
+0.4516332153201338406312,0.4324429865103157633044,0.1499229835931424337225,\
+0.4861395789308433634801,0.0069254200843589181283,0.5470248281814621416075,\
+0.0157419761082240212968,0.1652796264802975090280,0.2251845784941430561599,\
+0.5809144105432306748327,0.0370371154221026954723,0.5409142410066014594605,\
+0.0961579912696427369090,0.2170435871168209518434,0.4413938390627674124289,\
+0.2180518991856933708196,0.3882731529916919055445,0.4793791546290147587150,\
+0.1615500633583723533171,0.3727683427019338191499,1.1092002442556854191480,\
+0.6007159335006776457178,0.3670729131136168943428,0.3082959548830728202518,\
+0.5833221942824414751883,1.0459318594890267828390,0.3263494274187709875967,\
+0.8544844347571096676575,0.2053831793406840910965,0.7963141410348304471967,\
+0.3137393761405720127300,0.0990397931617461729781,0.4344101753145302446946,\
+0.7023788886417181576150,0.3911554522022889779365,1.1544412437572197926983,\
+1.0984333102013155158971,0.1328621940810992829718,0.268167531788618462851,\
+0.2190523476868022068054,0.1514050595867235948777,1.452314392851102864412,\
+0.0312862499326923282350,0.4864975811326933685663,0.3000795354832859751504,\
+0.3425769720223186820540,0.3064807342294366687696,0.0411636957365836206324,\
+0.4217989293277185081088,0.4809545441238126106676,0.3404220390913085259044,\
+0.2214498702533347351817,0.3018772698523388142711,0.2996779751331964392058,\
+0.2530674633040843612974,0.1693130128868851891344,0.0432918302807213800643,\
+0.3147578695966239403781,0.3983398179395671312442,0.4233396532725078320603,\
+0.1544509091417925472634,1.000697611141370568788,0.3487050795605025621526,\
+0.3006071168291280515383,0.9542614300639570279472,0.0718340034799053589465,\
+0.2395154786718341477503,0.6434277607558438472069,0.3585399891990152521082,\
+0.0482004898594938432921,0.2679535503180693334357,0.4468782830994436072736,\
+0.0275539888537934679613,0.8228411197528838760817,0.1637277172538824099313,\
+1.0994704384405307173722,0.3084433992108448485681,1.0856016429316568405739,\
+0.2389273879432435854220,0.2631293443272026966184,1.0016126450700377770175,\
+0.3562135410626017795188,0.2353197404250201296705,0.6834823618792332799998,\
+0.2126404560740041416178,0.3234875849405334791165,0.9562375286253093076283,\
+0.4069690501749418376498,0.3539780611029934576095,0.5294802297322954709458,\
+0.3733196120144765539628,0.3559718013547358839155,0.6068341504607892566980,\
+0.5969952503542278465787,0.5352237566999263895795}
+
+
+
+void dtanhsTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=dtanhs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<3e-16);
+ }
+}
+
+void ztanhsTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=DoubleComplex(inR[i],inI[i]);
+ out=ztanhs(in);
+ assert(( (fabs(zreals(out)-resR[i]))/(fabs(zreals(out))) )<3e-15);
+ assert(( (fabs(zimags(out)-resI[i]))/(fabs(zimags(out))) )<3e-15);
+ }
+}
+
+void dtanhaTest(void) {
+ double in[]=SOURCE;
+ double res[]=RESULT;
+ double out[200];
+ int i;
+
+ dtanha(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<3e-15);
+ }
+}
+
+void ztanhaTest(void) {
+ double inR[]=ZSOURCER;
+ double inI[]=ZSOURCEI;
+ double resR[]=ZRESULTR;
+ double resI[]=ZRESULTI;
+ doubleComplex *in,out[200];
+ int i;
+
+
+ in=DoubleComplexMatrix(inR,inI,200);
+ ztanha(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(zreals(out[i])-resR[i]))/(fabs(zreals(out[i]))) )<3e-15);
+ assert(( (fabs(zimags(out[i])-resI[i]))/(fabs(zimags(out[i]))) )<3e-15);
+ }
+}
+
+
+int testTanh() {
+ printf("\n>>>> Double Hyperbolic Tangeant Tests\n");
+ dtanhsTest();
+ ztanhsTest();
+ dtanhaTest();
+ ztanhaTest();
+ return 0;
+}
+
+int main() {
+ assert(testTanh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/testFloatTanh.c b/2.3-1/src/c/elementaryFunctions/tanh/testFloatTanh.c
new file mode 100644
index 00000000..33b86684
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/testFloatTanh.c
@@ -0,0 +1,494 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "testTanh.h"
+
+#define SOURCE {0.7062616096809506416321f,0.4090520101599395275116f,0.3011248558759689331055f,\
+0.1880126395262777805328f,0.1796709178015589714050f,0.2828889950178563594818f,\
+0.7232380937784910202026f,0.7360379849560558795929f,0.1852612206712365150452f,\
+0.7703790138475596904755f,0.1914967410266399383545f,0.7521587223745882511139f,\
+0.6205883463844656944275f,0.2807604051195085048676f,0.2289868686348199844360f,\
+0.5049233403988182544708f,0.8354099662974476814270f,0.8174716415815055370331f,\
+0.0030740275979042053223f,0.3677616142667829990387f,0.8278525872156023979187f,\
+0.72754097869619727135f,0.5323124285787343978882f,0.9267726917751133441925f,\
+0.9542504185810685157776f,0.3162104780785739421845f,0.5789009965956211090088f,\
+0.6881225542165338993073f,0.3714061146602034568787f,0.1705444059334695339203f,\
+0.1954363007098436355591f,0.978800852317363023758f,0.9300233917310833930969f,\
+0.5357720064930617809296f,0.3947123587131500244141f,0.1344871171750128269196f,\
+0.7380615202710032463074f,0.588114650454372167587f,0.9113173168152570724487f,\
+0.5682763461954891681671f,0.1127616921439766883850f,0.9478473584167659282684f,\
+0.5237770043313503265381f,0.8140139640308916568756f,0.1400952627882361412048f,\
+0.2763446993194520473480f,0.9059953633695840835571f,0.1379901585169136524200f,\
+0.5603838684037327766419f,0.3008610638789832592011f,0.4767417535185813904f,\
+0.8127435916103422641754f,0.1988414181396365165710f,0.1107953130267560482025f,\
+0.2159351315349340438843f,0.6467244853265583515167f,0.6597879612818360328674f,\
+0.0691898013465106487274f,0.9164751060307025909424f,0.8635670826770365238190f,\
+0.5032854294404387474060f,0.1832137755118310451508f,0.8403698671609163284302f,\
+0.9247214836068451404572f,0.6229452537372708320618f,0.2773811477236449718475f,\
+0.2479109913110733032227f,0.3891948559321463108063f,0.0436578569933772087097f,\
+0.8132526441477239131928f,0.7686451207846403121948f,0.4041520212776958942413f,\
+0.8579940209165215492249f,0.6993723283521831035614f,0.0828925184905529022217f,\
+0.9201254160143435001373f,0.5200281282886862754822f,0.9351884997449815273285f,\
+0.8825624976307153701782f,0.2245844271965324878693f,0.2153332801535725593567f,\
+0.4327089670114219188690f,0.5800157263875007629395f,0.8876141034997999668121f,\
+0.5258982880041003227234f,0.859640696551650762558f,0.7337234076112508773804f,\
+0.7134532411582767963409f,0.1087165409699082374573f,0.8477638359181582927704f,\
+0.6594733335077762603760f,0.7916418449021875858307f,0.6067967480048537254334f,\
+0.4102901122532784938812f,0.1958728153258562088013f,0.241527963895350694656f,\
+0.5113455550745129585266f,0.9119556057266891002655f,0.0928984880447387695313f,\
+0.7438839026726782321930f,0.1938720373436808586121f,0.4355978979729115962982f,\
+0.9922429900616407394409f,0.4533818070776760578156f,0.8269640663638710975647f,\
+0.8889675955288112163544f,0.4682085178792476654053f,0.3856786251999437808991f,\
+0.4124865522608160972595f,0.6955242282710969448090f,0.0978972557932138442993f,\
+0.8728604433126747608185f,0.6359515609219670295715f,0.4129665228538215160370f,\
+0.0294486805796623229980f,0.1809961968101561069489f,0.7658103061839938163757f,\
+0.1232470511458814144135f,0.0170737411826848983765f,0.8835507561452686786652f,\
+0.3164170170202851295471f,0.9378212536685168743134f,0.3916359134018421173096f,\
+0.0844073877669870853424f,0.6934146797284483909607f,0.4618808380328118801117f,\
+0.9355291295796632766724f,0.0842495900578796863556f,0.5402926551178097724915f,\
+0.5613215523771941661835f,0.1306025832891464233398f,0.5840523042716085910797f,\
+0.0048661706969141960144f,0.2761953338049352169037f,0.7478824090212583541870f,\
+0.0194325004704296588898f,0.6444276878610253334045f,0.2243968318216502666473f,\
+0.2478402368724346160889f,0.1196091384626924991608f,0.1883201440796256065369f,\
+0.3393343067727982997894f,0.959958622232079505920f,0.2847225037403404712677f,\
+0.8766820700839161872864f,0.2853349032811820507050f,0.5103433504700660705566f,\
+0.8752629184164106845856f,0.5941145820543169975281f,0.3945342986844480037689f,\
+0.4661326166242361068726f,0.0073588271625339984894f,0.5170202488079667091370f,\
+0.4690007264725863933563f,0.6654530800879001617432f,0.9476742581464350223541f,\
+0.4933638339862227439880f,0.2918433747254312038422f,0.2016727942973375320435f,\
+0.7016656589694321155548f,0.8736049132421612739563f,0.191055159550160169601f,\
+0.5307010114192962646484f,0.8889481076039373874664f,0.0115523664280772209167f,\
+0.4998398735187947750092f,0.6700848620384931564331f,0.4995208983309566974640f,\
+0.1538907447829842567444f,0.2571737091057002544403f,0.9586529098451137542725f,\
+0.6246025026775896549225f,0.9371285131201148033142f,0.9923511571250855922699f,\
+0.3454555813223123550415f,0.7558249053545296192169f,0.2107181670144200325012f,\
+0.9372652801685035228729f,0.6767524704337120056152f,0.7465373151935636997223f,\
+0.4050982249900698661804f,0.5101723610423505306244f,0.9497965183109045028687f,\
+0.0289692510850727558136f,0.1634070957079529762268f,0.4146909262053668498993f,\
+0.0021650679409503936768f,0.1810030029155313968658f,0.4556188201531767845154f,\
+0.1977851442061364650726f,0.6053877938538789749146f,0.4363054675050079822540f,\
+0.8938506888225674629211f,0.6104825991205871105194f,0.4316215068101882934570f,\
+0.2315693595446646213532f,0.4675927339121699333191f,0.6150764389894902706146f,\
+0.8621218334883451461792f,0.3846137975342571735382f}
+
+#define RESULT {0.6083272331025194601395f,0.3876674561956683362496f,0.2923416719993215950879f,\
+0.1858281840181150723623f,0.1777622033720960281755f,0.2755767974985386392639f,\
+0.6189110466547474986854f,0.6267454363670084127591f,0.1831704252906815044710f,\
+0.6471497862444923754310f,0.1891897820789192330437f,0.6364350501403950310930f,\
+0.5515375365220808179245f,0.2736087067004031037065f,0.2250667607234114742099f,\
+0.4659802867043164043004f,0.6833702176797041838441f,0.6736913883505325495449f,\
+0.0030740179151169427958f,0.3520322698255886617602f,0.6793212620436761550735f,\
+0.6215586405472446340781f,0.4871467381023854570366f,0.7290856689840882198794f,\
+0.7417012620322497307157f,0.3060764076080783047118f,0.5218661923298004712279f,\
+0.5967745422524275422660f,0.3552210140242362257368f,0.1689099681737986358154f,\
+0.1929854853271556480721f,0.752546334797111304837f,0.7306048018962054690917f,\
+0.4897808669902837253041f,0.3754155858264546230529f,0.1336821273676178090106f,\
+0.6279725491443334250974f,0.5285382896600216984240f,0.7217639239261176564710f,\
+0.5140922941464451945137f,0.1122861813568946515174f,0.7388069522259688159949f,\
+0.4806098503179282999120f,0.6717986111263679616101f,0.1391858664071369267035f,\
+0.2695186533316221155765f,0.7192045990350994788543f,0.1371209417264223628941f,\
+0.5082621919460940107527f,0.2921004060298734161805f,0.4436303990482610704049f,\
+0.6711009797617260019820f,0.1962616190799932602840f,0.1103441684263640337749f,\
+0.2126403628770875964271f,0.5694607822364758931144f,0.5782222848708917783966f,\
+0.0690796032269536119941f,0.7242256121481682740182f,0.69809096281132376749f,\
+0.4646970495827091318652f,0.1811909351875044538183f,0.6860049185734097276779f,\
+0.7281233753912585981993f,0.5531753555435303670862f,0.2704795450464865247398f,\
+0.2429539608603658584762f,0.3706659125047845337875f,0.0436301407089985798793f,\
+0.6713806714122574348380f,0.6461409215061649780054f,0.3834959767038711997422f,\
+0.6952226974662015779316f,0.6039692179338833621927f,0.0827031826719682033877f,\
+0.7259567403708432342668f,0.4777217213658969674484f,0.7330037868445029580755f,\
+0.7077007368815937393691f,0.2208832069439833623026f,0.2120656512810102645172f,\
+0.4075827434794156989284f,0.5226768598581769120770f,0.7102132909685879846862f,\
+0.4822394836530664030683f,0.6960725041612901842214f,0.6253380086104668444946f,\
+0.6128377044260436834477f,0.1082902389835735668111f,0.6898994401629748862703f,\
+0.5780128119634093675217f,0.6593381318630107124079f,0.5418683181743142451836f,\
+0.3887189835668665716106f,0.1934057072291916479223f,0.2369384549831176911550f,\
+0.4709929270514126020686f,0.7220695597477664318120f,0.0926321653854568632935f,\
+0.6314859919362979523427f,0.1914790269022769997331f,0.4099889146528875039088f,\
+0.7583171167988222993728f,0.4246748836724252296193f,0.6788424846042582228023f,\
+0.7108834330723724503898f,0.4367506950167392987261f,0.3676288421910962611605f,\
+0.3905819425256221721909f,0.6015191410314820741334f,0.0975857051379892537213f,\
+0.7028245349377849615635f,0.5621367138424371301397f,0.3909886152936559167159f,\
+0.0294401706564003176614f,0.1790453013287252037600f,0.6444866108356477329977f,\
+0.1226267854182154504183f,0.0170720823056739953727f,0.7081936907445306461639f,\
+0.3062635855747415369876f,0.7342196272687927516287f,0.3727696775311670207564f,\
+0.0842075009021545223264f,0.6001711719907401043628f,0.4316159054333421063454f,\
+0.7331613587758020189611f,0.0840508200406931138549f,0.4932094637687579607999f,\
+0.5089573121007661127280f,0.1298650506608897969851f,0.5256044879043626494308f,\
+0.0048661322875914753833f,0.2693801321981743046585f,0.6338839281129466929343f,\
+0.0194300547927987350694f,0.5679067732631524201281f,0.2207047568409323534677f,\
+0.2428873816732023682707f,0.1190419938419155360121f,0.1861250528158440442628f,\
+0.3268829619862821389553f,0.7442584101595816070685f,0.2772702073231406161291f,\
+0.7047532323150516031518f,0.2778354302962353084006f,0.4702126778004429574764f,\
+0.7040382261737980762462f,0.5328484040985558278791f,0.3752626107952297673798f,\
+0.43506925228714365961f,0.0073586943328478923027f,0.4753969607482095849349f,\
+0.4373915670200547722857f,0.5819809696038570345777f,0.7387283262105414083365f,\
+0.4568821823646959101595f,0.2838305708191527498840f,0.1989824153354164404384f,\
+0.6054239725907547553518f,0.7032010676851431218992f,0.1887639704824971842445f,\
+0.4859167650222710466146f,0.7108737933392066388194f,0.0115518525401329084923f,\
+0.461991216833716300538f,0.5850357022343135593445f,0.4617402854275272083839f,\
+0.1526873114812071496882f,0.2516501130208930181453f,0.7436753924988391828421f,\
+0.5543244269171754279313f,0.7339001657945646295289f,0.7583630791792929093376f,\
+0.3323391775157006899910f,0.6386111600303081559105f,0.2076538016886759763224f,\
+0.7339632624841636587831f,0.5894041048692751916249f,0.6330786187202321890766f,\
+0.3843027300435838400361f,0.4700794834210440531486f,0.7396909169647786219670f,\
+0.0289611499702619457075f,0.1619680384735620870540f,0.3924484198089013831101f,\
+0.0021650645580242309542f,0.1790518892412555074234f,0.4265067109232646425099f,\
+0.1952458211607971949597f,0.5408723031703753791888f,0.4105773773696593798022f,\
+0.7132904548568874680825f,0.5444667235672814298297f,0.4066755344379027192758f,\
+0.2275170058253208615895f,0.4362522385676954606026f,0.5476906607425194861705f,\
+0.6973492805657204307579f,0.3667075667170831554387f}
+
+#define CSOURCER {0.6045256052166223526001f,0.9455216196365654468536f,0.4476299257948994636536f,\
+0.8624908211641013622284f,0.1751048639416694641113f,0.2067177616991102695465f,\
+0.6848411662504076957703f,0.1348653226159512996674f,0.0069159921258687973022f,\
+0.1496290047653019428253f,0.5665438110008835792542f,0.4359452719800174236298f,\
+0.6547604538500308990479f,0.3381605879403650760651f,0.4259321158751845359802f,\
+0.3060420057736337184906f,0.7704779822379350662231f,0.7058695447631180286408f,\
+0.2373670237138867378235f,0.8205849635414779186249f,0.6789963841438293457031f,\
+0.5250809141434729099274f,0.3359806565567851066589f,0.8941988362930715084076f,\
+0.5461782198399305343628f,0.7568633262999355792999f,0.0259526828303933143616f,\
+0.3250150899402797222138f,0.6072143577039241791f,0.8756139636971056461334f,\
+0.2962085595354437828064f,0.4229678637348115444183f,0.4243144039064645767212f,\
+0.7620028969831764698029f,0.3622896494343876838684f,0.5658242437057197093964f,\
+0.6424440070986747741699f,0.7580267959274351596832f,0.2531452132388949394226f,\
+0.5266989110969007015228f,0.2118590380996465682983f,0.4779220153577625751495f,\
+0.1615962767973542213440f,0.9168031658045947551727f,0.5461866445839405059815f,\
+0.4686870560981333255768f,0.7772213732823729515076f,0.5871783248148858547211f,\
+0.5848031807690858840942f,0.3139644009061157703400f,0.3204141603782773017883f,\
+0.3331634956412017345429f,0.2282590121030807495117f,0.2750317254103720188141f,\
+0.4963629124686121940613f,0.7453477247618138790131f,0.1155001949518918991089f,\
+0.0626524840481579303741f,0.0877018878236413002014f,0.5507565210573375225067f,\
+0.2116370312869548797607f,0.8335358710028231143951f,0.4045845707878470420837f,\
+0.2880227542482316493988f,0.1750094983726739883423f,0.0051561561413109302521f,\
+0.3109287889674305915833f,0.6602919283322989940643f,0.9722995534539222717285f,\
+0.9826813959516584873200f,0.0455837054178118705750f,0.4096118300221860408783f,\
+0.7104403134435415267944f,0.3917615194804966449738f,0.5571686858311295509338f,\
+0.0565565521828830242157f,0.1540721096098423004150f,0.9109257892705500125885f,\
+0.5713340407237410545349f,0.3488348922692239284515f,0.8972954172641038894653f,\
+0.2973396372981369495392f,0.1091936426237225532532f,0.7626331257633864879608f,\
+0.6584706604480743408203f,0.6996708759106695652008f,0.6756794182583689689636f,\
+0.9004421546123921871185f,0.6668148916214704513550f,0.8518152837641537189484f,\
+0.8365677157416939735413f,0.1291190306656062602997f,0.6095453463494777679443f,\
+0.2412315667606890201569f,0.4029275467619299888611f,0.3019328541122376918793f,\
+0.1083198729902505874634f,0.8456356939859688282013f,0.9417407037690281867981f,\
+0.9083450469188392162323f,0.1937242373824119567871f,0.5318046086467802524567f,\
+0.8314437521621584892273f,0.4952740012668073177338f,0.7465563025325536727905f,\
+0.7102393140085041522980f,0.5811418974772095680237f,0.7035941029898822307587f,\
+0.3746570833027362823486f,0.3394373343326151371002f,0.6322447275742888450623f,\
+0.7636191300116479396820f,0.6940386760979890823364f,0.8735245508141815662384f,\
+0.3612738298252224922180f,0.7933200257830321788788f,0.4830590635538101196289f,\
+0.2469964125193655490875f,0.5025922833010554313660f,0.7430270477198064327240f,\
+0.6783937942236661911011f,0.4903185223229229450226f,0.709806025959551334381f,\
+0.3303662906400859355927f,0.6815545372664928436279f,0.0701365978457033634186f,\
+0.4745870968326926231384f,0.8091805852018296718597f,0.9447045121341943740845f,\
+0.5478458073921501636505f,0.1216687532141804695129f,0.9161847713403403759003f,\
+0.3045207932591438293457f,0.6502694808878004550934f,0.0987624628469347953796f,\
+0.8391053467057645320892f,0.0328534897416830062866f,0.3461971958167850971222f,\
+0.2801467711105942726135f,0.5500544901005923748016f,0.0729318000376224517822f,\
+0.0225322381593286991119f,0.50267804320901632309f,0.3478884599171578884125f,\
+0.4298669416457414627075f,0.3537984383292496204376f,0.0529730813577771186829f,\
+0.9533003675751388072968f,0.1842019557952880859375f,0.958756382111459970474f,\
+0.3245136169716715812683f,0.0003973259590566158295f,0.0972583871334791183472f,\
+0.4378789965994656086f,0.3634226778522133827210f,0.2685119728557765483856f,\
+0.2770298384130001068115f,0.8854365111328661441803f,0.5216628303751349449158f,\
+0.4979983693920075893f,0.8733724001795053482056f,0.4699407932348549365997f,\
+0.9364062966778874397278f,0.1337622734718024730682f,0.2712419554591178894043f,\
+0.1766990595497190952301f,0.0543269468471407890320f,0.8402757882140576839447f,\
+0.7507283594459295272827f,0.3062269617803394794464f,0.9195641661062836647034f,\
+0.1318263853900134563446f,0.0826364941895008087158f,0.8222710476256906986237f,\
+0.4441085970029234886169f,0.9617503038607537746429f,0.0283641982823610305786f,\
+0.1431905967183411121368f,0.3793597565963864326477f,0.6144003230147063732147f,\
+0.2128270715475082397461f,0.4704488315619528293610f,0.2076055286452174186707f,\
+0.7435979112051427364349f,0.3391801547259092330933f,0.2479635034687817096710f,\
+0.6721735307946801185608f,0.9013197491876780986786f,0.2140864841639995574951f,\
+0.8460668534971773624420f,0.1650043567642569541931f,0.4003686285577714443207f,\
+0.5522825215011835098267f,0.0638249483890831470490f,0.6903966935351490974426f,\
+0.8547787251882255077362f,0.0291904583573341369629f,0.5434663915075361728668f,\
+0.6236743135377764701843f,0.2417052476666867733002f}
+
+#define CSOURCEI {0.5503273960202932357788f,0.6906704087741672992706f,0.9835249418392777442932f,\
+0.8285484607331454753876f,0.2062614001333713531494f,0.1944643096067011356354f,\
+0.4367609983310103416443f,0.8090620837174355983734f,0.8818644303828477859497f,\
+0.7404803228564560413361f,0.7542522149160504341126f,0.9921960639767348766327f,\
+0.9886121451854705810547f,0.0113218077458441257477f,0.9367801276966929435730f,\
+0.3874237253330647945404f,0.2886805813759565353394f,0.567788839805871248245f,\
+0.7295644441619515419006f,0.0303032915107905864716f,0.2795897088944911956787f,\
+0.7047131718136370182037f,0.7442112853750586509705f,0.8920237845741212368012f,\
+0.1081438604742288589478f,0.8751525697298347949982f,0.9068333031609654426575f,\
+0.2166852983646094799042f,0.4824190363287925720215f,0.7766945236362516880035f,\
+0.4510916722938418388367f,0.1300636469386518001556f,0.5505470838397741317749f,\
+0.6936193336732685565949f,0.1749099576845765113831f,0.8636093880049884319305f,\
+0.2150467522442340850830f,0.1886725709773600101471f,0.1796098565682768821716f,\
+0.4374312213622033596039f,0.8514516223222017288208f,0.7381969136185944080353f,\
+0.8102188156917691230774f,0.1460137623362243175507f,0.8999849110841751098633f,\
+0.4043733575381338596344f,0.0156995235010981559753f,0.6904196902178227901459f,\
+0.2990311514586210250855f,0.1383218024857342243195f,0.8478512773290276527405f,\
+0.3007262717001140117645f,0.229154746979475021362f,0.8078110129572451114655f,\
+0.3176332255825400352478f,0.6924462593160569667816f,0.1364154014736413955689f,\
+0.5433279541321098804474f,0.3276594849303364753723f,0.2006831648759543895721f,\
+0.5037304237484931945801f,0.4962565028108656406403f,0.8996161324903368949890f,\
+0.9357709079049527645111f,0.3390339072793722152710f,0.6029155333526432514191f,\
+0.4153500730171799659729f,0.3041478390805423259735f,0.8489827848970890045166f,\
+0.4482063786126673221588f,0.0903797810897231101990f,0.7382151386700570583344f,\
+0.2669597584754228591919f,0.8226196658797562122345f,0.3985779182985424995422f,\
+0.9789295899681746959686f,0.3041231036186218261719f,0.0663515278138220310211f,\
+0.6667758254334330558777f,0.7548807277344167232513f,0.1922533493489027023315f,\
+0.7942791883833706378937f,0.5580398896709084510803f,0.2016023616306483745575f,\
+0.787146832793951034546f,0.0955459238030016422272f,0.6623697867617011070252f,\
+0.864868474658578634262f,0.7013061288744211196899f,0.8015053984709084033966f,\
+0.9135685982182621955872f,0.6317234965972602367401f,0.9346773549914360046387f,\
+0.9157753759063780307770f,0.0510348035022616386414f,0.4329969524405896663666f,\
+0.9721843507140874862671f,0.8001508046872913837433f,0.8452261472120881080627f,\
+0.0610524858348071575165f,0.8168097324669361114502f,0.2101262793876230716705f,\
+0.3055453812703490257263f,0.9465212575159966945648f,0.9269728232175111770630f,\
+0.7737778765149414539337f,0.5893978821113705635071f,0.2377697187475860118866f,\
+0.5269544571638107299805f,0.0077543654479086399078f,0.8311711428686976432800f,\
+0.0268517597578465938568f,0.2591186594218015670776f,0.4641277943737804889679f,\
+0.6098861405625939369202f,0.0656952331773936748505f,0.6466812007129192352295f,\
+0.1018534512259066104889f,0.2742705782875418663025f,0.8162728524766862392426f,\
+0.3357750270515680313110f,0.4765891996212303638458f,0.8440040023997426033020f,\
+0.1785074654035270214081f,0.5855625644326210021973f,0.8426241897977888584137f,\
+0.7058847947046160697937f,0.7396617024205625057221f,0.9751448985189199447632f,\
+0.7606669445522129535675f,0.8236690396443009376526f,0.8889620001427829265595f,\
+0.7960178293287754058838f,0.3052428201772272586823f,0.6803312664851546287537f,\
+0.6412069997750222682953f,0.0988248009234666824341f,0.4654508423991501331329f,\
+0.6714970665052533149719f,0.5131103205494582653046f,0.8631567060947418212891f,\
+0.8328299173153936862946f,0.1687975851818919181824f,0.2961277081631124019623f,\
+0.2591485660523176193237f,0.1700844173319637775421f,0.9718958893790841102600f,\
+0.0695185582153499126434f,0.4696230851113796234131f,0.9544191421009600162506f,\
+0.3679352095350623130798f,0.2973918146453797817230f,0.0415310803800821304321f,\
+0.4892336544580757617950f,0.5171590568497776985169f,0.3534862431697547435761f,\
+0.2354387864470481872559f,0.6779259913600981235504f,0.3834532154724001884460f,\
+0.3174350797198712825775f,0.3418120350688695907593f,0.0535557498224079608917f,\
+0.9285596096888184547424f,0.3862650538794696331024f,0.4328473098576068878174f,\
+0.1581165478564798831940f,0.7887120461091399192810f,0.7448797873221337795258f,\
+0.5185996759682893753052f,0.8651678604073822498322f,0.1524438308551907539368f,\
+0.2392775672487914562225f,0.5761575847864151000977f,0.7395762302912771701813f,\
+0.0583172617480158805847f,0.6962534948252141475678f,0.4206145536154508590698f,\
+0.0281158541329205036163f,0.8313249954953789710999f,0.2333360086195170879364f,\
+0.8865877203643321990967f,0.3746785433031618595123f,0.87671328987926244736f,\
+0.4027077830396592617035f,0.2890332732349634170532f,0.8538430598564445972443f,\
+0.5499771209433674812317f,0.5128610017709434032440f,0.6321087554097175598145f,\
+0.4165538274683058261871f,0.3217771751806139945984f,0.9717370062135159969330f,\
+0.5348322447389364242554f,0.3416590173728764057159f,0.9565287167206406593323f,\
+0.9951003189198672771454f,0.3422884084284305572510f,0.7870580093003809452057f,\
+0.9234123295173048973084f,0.5238970420323312282562f}
+#define CRESULTR {0.6700223015238303547747f,0.9051590648529930227539f,0.9783774998303537140387f,\
+0.9672554578415690773596f,0.1806879116022510611828f,0.2113884833531175511112f,\
+0.6724311908168314477763f,0.2759693779071136221504f,0.0171117603025009445972f,\
+0.2676571377242007998554f,0.7836070482910290069256f,0.9837911114618788088748f,\
+1.0787649507707848250959f,0.3258715909732741722316f,0.8818391305817397940459f,\
+0.3412489698350346656319f,0.6791962837910036077105f,0.7436127103435716811930f,\
+0.40184826884232582866f,0.6757254959645757619313f,0.6216816234807176488886f,\
+0.7106811634553994450059f,0.5496317899100798820555f,1.015517869987778709628f,\
+0.5020506061187628432663f,0.9811456923663512963429f,0.0682501782366792819623f,\
+0.3276872649171290174941f,0.6393144648282618192070f,0.9360249253515308121010f,\
+0.3486021801541281939230f,0.405155698729944113712f,0.5200555835311830854550f,\
+0.8452234271752276928424f,0.3567295147730688009702f,0.8928456199942530480129f,\
+0.5846382117554749235922f,0.6534877266970448017602f,0.2555268336748864332897f,\
+0.5599022272385358878211f,0.4549851524880720865518f,0.6983186009546583639107f,\
+0.3278445848029415965463f,0.7317436304730139395858f,0.9243668151604532701171f,\
+0.4997101034619103598899f,0.6512014053656888235011f,0.7461784468374338397112f,\
+0.5613804235723615088105f,0.309377290465780441231f,0.6302193796318024121561f,\
+0.3488048678688123183100f,0.2359369023748482674385f,0.5207697215592063111345f,\
+0.4975483327992256676886f,0.8371220343907752603485f,0.1171268218028372609663f,\
+0.085272785233540815408f,0.0974986984973703479929f,0.5164560743022618138909f,\
+0.2683348894394235739647f,0.7764310536494951620057f,0.8045234481921298419493f,\
+0.6958959159533119054331f,0.1940650650900959395262f,0.0075996484393591736892f,\
+0.3536342521606328781481f,0.6152689741862609196232f,0.9952856734893198442649f,\
+0.8206704954595607226509f,0.0459255053037718463660f,0.6307753783837566352588f,\
+0.6388147154641353742122f,0.6937233166977520015806f,0.5697295509652193779004f,\
+0.1802327077236753061218f,0.1675371469878289276689f,0.7230999921866064772402f,\
+0.7176490691010239952874f,0.5749086647774364067232f,0.7279693322506849417763f,\
+0.5413870504782296588786f,0.1504476557625347432623f,0.6581157602540366191590f,\
+0.8675383161064098569426f,0.6076707020048850438343f,0.7819483789931592765399f,\
+0.9976690503006511168138f,0.8038234125831255072470f,0.9466047824946693944881f,\
+1.0263044057305568124150f,0.1954383476167207978058f,0.9991226583234396052546f,\
+0.5824462236684256888353f,0.3833026614151368027805f,0.3492943337672331227672f,\
+0.3315115099350262606315f,0.9442386171423264862312f,0.9899258002262354416700f,\
+0.7216294786971718666635f,0.3920325460401206107974f,0.5034740230892749135450f,\
+0.715969761025848305813f,0.9550125571098367904810f,1.0265780142294762544708f,\
+0.8803585794351714843842f,0.6748726933268143213240f,0.6286862272305427934427f,\
+0.4593360950510761986365f,0.3269925373376404986736f,0.8950979801820350134634f,\
+0.6434757060207739742808f,0.6268824366882729259842f,0.7824259493911607243888f,\
+0.4869178781705328362683f,0.6618946105318512795890f,0.6319261919275969141552f,\
+0.2444724751522657224534f,0.4924981727592058766696f,0.9272283746811394999909f,\
+0.6354081057135144705583f,0.5455716136398853777223f,0.9397290975289604997300f,\
+0.3281437517029104355970f,0.7390025847943897385761f,0.1571298352097142136952f,\
+0.6681717696917298665582f,0.893260926700763513431f,1.0727843133940448971941f,\
+0.7758756582495047737780f,0.2577884404871108037227f,1.0152118695965053341013f,\
+0.553316515865495128779f,0.6088582613070312454795f,0.1618775254222162562900f,\
+0.8458278989313633422498f,0.0331641659985394132715f,0.4056540942022494600217f,\
+0.4254458405105830398618f,0.6108828412056167556088f,0.1710530527126769284596f,\
+0.0497407205620656947542f,0.4747317015892947855704f,0.3618696796533303894350f,\
+0.4287418625744875422257f,0.3485740919790226710617f,0.1655375133873851212218f,\
+0.7428884062630719542497f,0.2271172969578298117543f,1.0587395337282918816868f,\
+0.3549940948693925402147f,0.0004346469449674766222f,0.0971187244038783509259f,\
+0.5043807505243238509252f,0.4434874448032950500220f,0.2951797103676901401492f,\
+0.2845053188094572860223f,0.8815102337365799956004f,0.5368898054807562658652f,\
+0.4988328370209159090543f,0.745435623332440511213f,0.4391683137636283595917f,\
+1.0422403039497714072326f,0.1545117394214212958037f,0.3165746040477503964183f,\
+0.1791895467797269270172f,0.1089461488105609721089f,0.9065124792766549033374f,\
+0.7446224625751999282031f,0.6296662678760955866864f,0.7337000953456223051319f,\
+0.1387263358911398902773f,0.1169149268680415021393f,0.8975235374861081361075f,\
+0.4182178630757872883628f,0.9119369228139623251295f,0.0340248805832462572485f,\
+0.1423301258754861298161f,0.6888548451397347172076f,0.5685106882588889520847f,\
+0.4923020191500164788323f,0.4917581413760083730580f,0.4716616017939372351719f,\
+0.6955693872489776552470f,0.3523112018531558975454f,0.5222250480132760719343f,\
+0.7144705774015845944902f,0.8119440584245034564503f,0.3164274689259520823015f,\
+0.7538323331802344595687f,0.1811571114058267151226f,0.9128449761317551924833f,\
+0.6233160136433549824986f,0.0717615749734574065455f,1.0473491540209625139113f,\
+1.0924869453095222837646f,0.0328835678516360627177f,0.7973589739562461087274f,\
+0.9908609316019793000763f,0.3104246876762664641980f}
+
+#define CRESULTI {0.3914561710408779870996f,0.2745677431871340612446f,0.8850988190375015385314f,\
+0.3546606100359354085683f,0.2026838146454169320432f,0.1884673919393772267839f,\
+0.2801601885873738484456f,1.0096958835716720592757f,1.21412343558816204769f,\
+0.8776375911322839007411f,0.5620073675207013508270f,0.9130433942963852578245f,\
+0.5770284711891953133289f,0.0101200891695042028556f,0.8779935002098492313749f,\
+0.3667139971005198284537f,0.1664312994282131086266f,0.3494312783943472333625f,\
+0.8104125516371111226377f,0.0164786111567649697085f,0.1816457336156695190343f,\
+0.5593166230651334114299f,0.7569161316066348454967f,0.3415023725885689698245f,\
+0.0814423238542508892701f,0.4465689540632135634546f,1.275733507144991119020f,\
+0.197487841611818731868f,0.3421719548772197971864f,0.3349549978483222778536f,\
+0.4357966181675047567801f,0.1096343010109522564388f,0.4859836370575167374675f,\
+0.3800931088000560897910f,0.1548265257107722947527f,0.6348894325615116462913f,\
+0.1460748031318926942745f,0.1110957110750060844451f,0.1700664034230296439709f,\
+0.3412176537402174525404f,1.0332395638414424432483f,0.6273383485614248966655f,\
+0.9957192459042429888427f,0.0691093109901288471519f,0.6804424693811944591104f,\
+0.3344738416260302771299f,0.0090436204351948476510f,0.5006804162977720462635f,\
+0.2172201211207329951680f,0.1261162082552027552396f,0.9120640605812813106468f,\
+0.2753688308103523496584f,0.2209039383694014757609f,0.8997305533684579748055f,\
+0.2536420004619579504634f,0.3903699376999557602019f,0.1354191697515705339328f,\
+0.6007399379388951299319f,0.3370127497194151389159f,0.1507780721992685313282f,\
+0.5203153088877445764382f,0.254583375618394558426f,0.8702994198605253917123f,\
+1.0924089238964773684870f,0.3407939274374255367306f,0.6883985279629690756664f,\
+0.3940203751449571356602f,0.2021529986071308460094f,0.2883410464579913012884f,\
+0.1832164764792163502705f,0.0904370855097187398286f,0.6870692259557662495695f,\
+0.1667494081756663859562f,0.7986735402486416779411f,0.2997470364729120650971f,\
+1.4723672873315984954701f,0.3058215886262277694030f,0.0317778181669746695448f,\
+0.4953897349233554736614f,0.7593857543036769408573f,0.0933417291983620195373f,\
+0.8587250458616788595379f,0.6140082043678934953235f,0.1179425317948916696054f,\
+0.5008800041022678506408f,0.0606528647874819346053f,0.4208891412439614287955f,\
+0.3345057926491249999934f,0.4488362148523600825278f,0.356228513965734405744f,\
+0.3862019012866550471408f,0.7133939454258028112221f,0.6183512140459618278143f,\
+1.122372846973830329276f,0.0435912326295722213354f,0.4149318455829275609226f,\
+1.4136182419356593253923f,0.360095911709175209303f,0.3059781012378688380693f,\
+0.0293528815458468754496f,0.9850054988638156094893f,0.1610071461548980287226f,\
+0.1615738175268226772818f,0.7804595725744208900565f,0.4664649257591839126569f,\
+0.4516332153201338406312f,0.4324429865103157633044f,0.1499229835931424337225f,\
+0.4861395789308433634801f,0.0069254200843589181283f,0.5470248281814621416075f,\
+0.0157419761082240212968f,0.1652796264802975090280f,0.2251845784941430561599f,\
+0.5809144105432306748327f,0.0370371154221026954723f,0.5409142410066014594605f,\
+0.0961579912696427369090f,0.2170435871168209518434f,0.4413938390627674124289f,\
+0.2180518991856933708196f,0.3882731529916919055445f,0.4793791546290147587150f,\
+0.1615500633583723533171f,0.3727683427019338191499f,1.1092002442556854191480f,\
+0.6007159335006776457178f,0.3670729131136168943428f,0.3082959548830728202518f,\
+0.5833221942824414751883f,1.0459318594890267828390f,0.3263494274187709875967f,\
+0.8544844347571096676575f,0.2053831793406840910965f,0.7963141410348304471967f,\
+0.3137393761405720127300f,0.0990397931617461729781f,0.4344101753145302446946f,\
+0.7023788886417181576150f,0.3911554522022889779365f,1.1544412437572197926983f,\
+1.0984333102013155158971f,0.1328621940810992829718f,0.268167531788618462851f,\
+0.2190523476868022068054f,0.1514050595867235948777f,1.452314392851102864412f,\
+0.0312862499326923282350f,0.4864975811326933685663f,0.3000795354832859751504f,\
+0.3425769720223186820540f,0.3064807342294366687696f,0.0411636957365836206324f,\
+0.4217989293277185081088f,0.4809545441238126106676f,0.3404220390913085259044f,\
+0.2214498702533347351817f,0.3018772698523388142711f,0.2996779751331964392058f,\
+0.2530674633040843612974f,0.1693130128868851891344f,0.0432918302807213800643f,\
+0.3147578695966239403781f,0.3983398179395671312442f,0.4233396532725078320603f,\
+0.1544509091417925472634f,1.000697611141370568788f,0.3487050795605025621526f,\
+0.3006071168291280515383f,0.9542614300639570279472f,0.0718340034799053589465f,\
+0.2395154786718341477503f,0.6434277607558438472069f,0.3585399891990152521082f,\
+0.0482004898594938432921f,0.2679535503180693334357f,0.4468782830994436072736f,\
+0.0275539888537934679613f,0.8228411197528838760817f,0.1637277172538824099313f,\
+1.0994704384405307173722f,0.3084433992108448485681f,1.0856016429316568405739f,\
+0.2389273879432435854220f,0.2631293443272026966184f,1.0016126450700377770175f,\
+0.3562135410626017795188f,0.2353197404250201296705f,0.6834823618792332799998f,\
+0.2126404560740041416178f,0.3234875849405334791165f,0.9562375286253093076283f,\
+0.4069690501749418376498f,0.3539780611029934576095f,0.5294802297322954709458f,\
+0.3733196120144765539628f,0.3559718013547358839155f,0.6068341504607892566980f,\
+0.5969952503542278465787f,0.5352237566999263895795f}
+
+
+
+
+void stanhsTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out;
+ int i;
+
+ for (i=0;i<200;i++){
+ out=stanhs(in[i]);
+ assert(( (fabs(out-res[i]))/(fabs(out)) )<1e-6);
+ }
+}
+
+void ctanhsTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex in,out;
+ int i;
+
+ for (i=0;i<200;i++){
+ in=FloatComplex(inR[i],inI[i]);
+ out=ctanhs(in);
+ assert(( (fabs(creals(out)-resR[i]))/(fabs(creals(out))) )<1e-6);
+ assert(( (fabs(cimags(out)-resI[i]))/(fabs(cimags(out))) )<1e-6);
+ }
+}
+
+void stanhaTest(void) {
+ float in[]=SOURCE;
+ float res[]=RESULT;
+ float out[200];
+ int i;
+
+ stanha(in,200,out);
+ for (i=0;i<200;i++){
+ assert(( (fabs(out[i]-res[i]))/(fabs(out[i])) )<1e-6);
+ }
+}
+
+void ctanhaTest(void) {
+ float inR[]=CSOURCER;
+ float inI[]=CSOURCEI;
+ float resR[]=CRESULTR;
+ float resI[]=CRESULTI;
+ floatComplex *in,out[200];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,200);
+ ctanha(in,200,out);
+
+ for (i=0;i<200;i++){
+ assert(( (fabs(creals(out[i])-resR[i]))/(fabs(creals(out[i]))) )<1e-6);
+ assert(( (fabs(cimags(out[i])-resI[i]))/(fabs(cimags(out[i]))) )<1e-6);
+ }
+}
+
+int testTanh() {
+ printf("\n>>>> Float Hyperbolic Tangeant Tests\n");
+ stanhsTest();
+ ctanhsTest();
+ stanhaTest();
+ ctanhaTest();
+ return 0;
+}
+
+int main() {
+ assert(testTanh() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/testTanh.h b/2.3-1/src/c/elementaryFunctions/tanh/testTanh.h
new file mode 100644
index 00000000..ac4c546a
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/testTanh.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef _TESTTANH_H_
+#define _TESTTANH_H_
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "tanh.h"
+#include "constant.h"
+
+void stanhsTest(void);
+
+void dtanhsTest(void);
+
+void ctanhsTest(void);
+
+void ztanhsTest(void);
+
+void stanhaTest(void);
+
+void dtanhaTest(void);
+
+void ctanhaTest(void);
+
+void ztanhaTest(void);
+
+int testTanh(void);
+
+#endif /* !_TESTTANH_H_ */
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/u16tanha.c b/2.3-1/src/c/elementaryFunctions/tanh/u16tanha.c
new file mode 100644
index 00000000..61db747b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/u16tanha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tanh.h"
+
+void u16tanha(uint16* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u16tanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/u16tanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/u16tanhs.c
new file mode 100644
index 00000000..17909e7c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/u16tanhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tanh.h"
+
+float u16tanhs(uint16 x) {
+ return (tanhf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/u8tanha.c b/2.3-1/src/c/elementaryFunctions/tanh/u8tanha.c
new file mode 100644
index 00000000..9ca20eeb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/u8tanha.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "tanh.h"
+
+void u8tanha(uint8* x, int size, float* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = u8tanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/u8tanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/u8tanhs.c
new file mode 100644
index 00000000..c6179f9d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/u8tanhs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <math.h>
+#include "tanh.h"
+
+float u8tanhs(uint8 x) {
+ return (tanhf(x));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/ztanha.c b/2.3-1/src/c/elementaryFunctions/tanh/ztanha.c
new file mode 100644
index 00000000..0419d6c8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/ztanha.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+
+void ztanha(doubleComplex* x, int size, doubleComplex* y) {
+ int i = 0;
+ for (i = 0; i < size; ++i) {
+ y[i] = ztanhs(x[i]);
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/tanh/ztanhs.c b/2.3-1/src/c/elementaryFunctions/tanh/ztanhs.c
new file mode 100644
index 00000000..c7a6c11d
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/tanh/ztanhs.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "tanh.h"
+#include "tan.h"
+
+doubleComplex ztanhs(doubleComplex z) {
+ double real = zreals(z);
+ double imag = zimags(z);
+
+ doubleComplex result = ztans(DoubleComplex(-imag, real));
+ return (DoubleComplex(zimags(result), -zreals(result)));
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/duint16a.c b/2.3-1/src/c/elementaryFunctions/uint16/duint16a.c
new file mode 100644
index 00000000..af9e2f57
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/duint16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint16.h"
+
+void duint16a(double* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = duint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/duint16s.c b/2.3-1/src/c/elementaryFunctions/uint16/duint16s.c
new file mode 100644
index 00000000..79bd75a3
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/duint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint16.h"
+
+uint16 duint16s(double x) {
+ return (uint16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/i16uint16a.c b/2.3-1/src/c/elementaryFunctions/uint16/i16uint16a.c
new file mode 100644
index 00000000..64a598d2
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/i16uint16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint16.h"
+
+void i16uint16a(int16* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16uint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/i16uint16s.c b/2.3-1/src/c/elementaryFunctions/uint16/i16uint16s.c
new file mode 100644
index 00000000..01d46ac1
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/i16uint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint16.h"
+
+uint16 i16uint16s(int16 x) {
+ return (uint16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/i8uint16a.c b/2.3-1/src/c/elementaryFunctions/uint16/i8uint16a.c
new file mode 100644
index 00000000..3cab61fa
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/i8uint16a.c
@@ -0,0 +1,17 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "uint16.h"
+
+void i8uint16a(int8* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8uint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/i8uint16s.c b/2.3-1/src/c/elementaryFunctions/uint16/i8uint16s.c
new file mode 100644
index 00000000..5527838e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/i8uint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint16.h"
+
+uint16 i8uint16s(int8 x) {
+ return (uint16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/suint16a.c b/2.3-1/src/c/elementaryFunctions/uint16/suint16a.c
new file mode 100644
index 00000000..e048922f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/suint16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint16.h"
+
+void suint16a(float* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = suint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/suint16s.c b/2.3-1/src/c/elementaryFunctions/uint16/suint16s.c
new file mode 100644
index 00000000..8d277d19
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/suint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint16.h"
+
+uint16 suint16s(float x) {
+ return (uint16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/u8uint16a.c b/2.3-1/src/c/elementaryFunctions/uint16/u8uint16a.c
new file mode 100644
index 00000000..b5ca533f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/u8uint16a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint16.h"
+
+void u8uint16a(uint8* x, int size, uint16* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u8uint16s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint16/u8uint16s.c b/2.3-1/src/c/elementaryFunctions/uint16/u8uint16s.c
new file mode 100644
index 00000000..9da480f8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint16/u8uint16s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint16.h"
+
+uint16 u8uint16s(uint8 x) {
+ return (uint16) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/duint8a.c b/2.3-1/src/c/elementaryFunctions/uint8/duint8a.c
new file mode 100644
index 00000000..02d63058
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/duint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint8.h"
+
+void duint8a(double* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = duint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/duint8s.c b/2.3-1/src/c/elementaryFunctions/uint8/duint8s.c
new file mode 100644
index 00000000..d7a7524f
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/duint8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint8.h"
+
+uint8 duint8s(double x) {
+ return (uint8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/i16uint8a.c b/2.3-1/src/c/elementaryFunctions/uint8/i16uint8a.c
new file mode 100644
index 00000000..49e31d12
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/i16uint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint8.h"
+
+void i16uint8a(int16* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i16uint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/i16uint8s.c b/2.3-1/src/c/elementaryFunctions/uint8/i16uint8s.c
new file mode 100644
index 00000000..695d7882
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/i16uint8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint8.h"
+
+uint8 i16uint8s(int16 x) {
+ return (uint8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/i8uint8a.c b/2.3-1/src/c/elementaryFunctions/uint8/i8uint8a.c
new file mode 100644
index 00000000..89574e83
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/i8uint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint8.h"
+
+void i8uint8a(int8* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = i8uint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/i8uint8s.c b/2.3-1/src/c/elementaryFunctions/uint8/i8uint8s.c
new file mode 100644
index 00000000..4c83c4e4
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/i8uint8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint8.h"
+
+uint8 i8uint8s(int8 x) {
+ return (uint8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/suint8a.c b/2.3-1/src/c/elementaryFunctions/uint8/suint8a.c
new file mode 100644
index 00000000..2e1a5ac8
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/suint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint8.h"
+
+void suint8a(float* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = suint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/suint8s.c b/2.3-1/src/c/elementaryFunctions/uint8/suint8s.c
new file mode 100644
index 00000000..ce38c1d0
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/suint8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint8.h"
+
+uint8 suint8s(float x) {
+ return (uint8) x;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/u16uint8a.c b/2.3-1/src/c/elementaryFunctions/uint8/u16uint8a.c
new file mode 100644
index 00000000..0c4246ec
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/u16uint8a.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "uint8.h"
+
+void u16uint8a(uint16* x, int size, uint8* out) {
+ int i = 0;
+ for (i=0;i<size;i++) out[i] = u16uint8s(x[i]);
+}
diff --git a/2.3-1/src/c/elementaryFunctions/uint8/u16uint8s.c b/2.3-1/src/c/elementaryFunctions/uint8/u16uint8s.c
new file mode 100644
index 00000000..32d5b718
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/uint8/u16uint8s.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "uint8.h"
+
+uint8 u16uint8s(uint16 x) {
+ return (uint8) x;
+}
diff --git a/2.3-1/src/c/hardware/avr/adc/u8AVRADCSetups.c b/2.3-1/src/c/hardware/avr/adc/u8AVRADCSetups.c
new file mode 100644
index 00000000..66f491b2
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/adc/u8AVRADCSetups.c
@@ -0,0 +1,43 @@
+// Function to initialise ADC of AVR
+//
+// Calling Sequence
+// AVRSetupADC(uint8 prescaler, uint8 adc_ref)
+//
+// Parameters
+// prescaler: prescaler to be used for generating ADC clock (0-7)
+// adc_ref : reference voltage to be used for ADC conversion
+// 0 -> Voltage on VREF pin
+// 1 -> Voltage on AVCC pin
+// 2 -> Internal 2.56 reference voltage
+//
+// Description
+// This function initialises ADc of AVR with given parameters. 'prescaler' is
+// needed for deciding ADC clock. ADC clock should be between 50KHz and 200KHz
+// and it given as (MCU clock/2^prescaler). Select appropriate prescaler depending
+// on MCU clock. 'adc_ref' selects one of the available reference voltage sources
+// available
+// Examples
+// AVRADCSetup(128,0)
+//
+// Authors
+// Siddhesh Wani
+// Ashish Kamble
+
+#include "AVRPeripheralADC.h"
+
+
+uint8 u8AVRADCSetups(uint8 prescaler, uint8 adc_ref)
+{
+/*Set the prescaler value*/
+ ADCSRA |= (prescaler & 0x07);
+
+ /*Set the adc reference voltage*/
+ ADMUX |= ((adc_ref & 0x03) << 6);
+
+ /*Enable ADC hardware. Set ADEN bit*/
+ADCSRA |= (1<<7);
+
+return 0;
+}
+
+
diff --git a/2.3-1/src/c/hardware/avr/adc/u8AVRReadADCs.c b/2.3-1/src/c/hardware/avr/adc/u8AVRReadADCs.c
new file mode 100644
index 00000000..302f8c82
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/adc/u8AVRReadADCs.c
@@ -0,0 +1,82 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+// Function to get voltage on analog pin on AVR
+//
+// Calling Sequence
+// u8AVRReadADCs(channel)
+//
+// Parameters
+// channel : Select which channel is to be read. Values from 0-7 select one
+// of the pins ADC0-ADC7. For other possible channel values refer
+// datasheet
+// Returns->
+// result : Digital value for the voltage present on channel selected
+//
+// Description
+// This function returns digital value for present on adc pins. 'channel'
+// selects which of the ADC0-ADC7 is to be used for reading analog value.
+// Apart from reading just ADC0-ADC7 other it can also read differential
+// voltages between some pins. For channel values for those options, please
+// refer datasheet.
+//
+// Examples
+// adc_result = u8AVRReadADC(0) //Read ADC0
+//
+// Authors
+// Siddhesh Wani
+// Ashish Kamble
+
+
+#include "AVRPeripheralADC.h"
+
+uint8 u8AVRReadADCs(uint8 channel)
+{
+
+uint8 i;
+
+ ADCH=0x00;
+
+ i=channel&0x07;
+ ADMUX=i|0x60; //i|0x40 for 10 bits
+ ADCSRA|=1<<ADSC;
+
+ while(ADCSRA & (1<<ADSC)); // wait for conv. to complete
+ uint8 temp=ADCH; //unsigned int temp=ADC; for 10 bits
+
+ return temp;
+
+}
+
+
+
+
+
+
+
+
+
+
+/*Set ADC conversion channel*/
+// ADMUX |= (channel & 0x1F);
+
+ /*Start ADC conversion. Set 'ADSC' bit*/
+// ADCSRA |= (1<<6);
+
+ /*Wait for conversion to complete. Check 'ADIF' bit*/
+// while(!(ADCSRA & (1<<4)));
+
+ /*Clear ADIF flag*/
+// ADCSRA |= (1<<4);
+
+ /*ADC conversion result is stored in ADCH/L registers*/
+// return (ADC);
+
+
diff --git a/2.3-1/src/c/hardware/avr/default_files/Makefile b/2.3-1/src/c/hardware/avr/default_files/Makefile
new file mode 100644
index 00000000..c388196b
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/default_files/Makefile
@@ -0,0 +1,387 @@
+
+# make all = Make software and program
+# make clean = Clean out built project files.
+# make program = Download the hex file to the device, using avrdude. Please
+# customize the avrdude settings below first!
+
+# Microcontroller Type
+MCU = atmega16
+
+# Target file name (without extension).
+TARGET = main
+
+# Programming hardware:
+AVRDUDE_PROGRAMMER = usbasp
+
+AVRDUDE_PORT = /dev/usb
+
+############# Don't need to change below here for most purposes (Elliot)
+
+# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+CSRCDIR = src/c
+HSRCDIR = includes
+ISRCDIR = interfaces
+SCI2CDIR = .
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(wildcard $(CSRCDIR)/*.c) main.c
+
+# If there is more than one source file, append them above, or modify and
+# uncomment the following:
+#SRC += foo.c bar.c
+
+# You can also wrap lines by appending a backslash to the end of the line:
+#SRC += baz.c \
+#xyzzy.c
+
+
+
+# List Assembler source files here.
+# Make them always end in a capital .S. Files ending in a lowercase .s
+# will not be considered source files but generated files (assembler
+# output from the compiler), and will be deleted upon "make clean"!
+# Even though the DOS/Win* filesystem matches both .s and .S the same,
+# it will preserve the spelling of the filenames, and gcc itself does
+# care about how the name is spelled on its command-line.
+ASRC =
+
+
+# List any extra directories to look for include files here.
+# Each directory must be seperated by a space.
+EXTRAINCDIRS = includes interfaces
+EXTRALIBDIRS = .
+
+
+# Optional compiler flags.
+# -g: generate debugging information (for GDB, or for COFF conversion)
+# -O*: optimization level
+# -f...: tuning, see gcc manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -ahlms: create assembler listing
+#CFLAGS = -g -O$(OPT) \
+#-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
+#-Wall -Wstrict-prototypes \
+#-Wa,-adhlns=$(<:.c=.lst) \
+#$(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS = -g -Wall $(patsubst %,-I%,$(EXTRAINCDIRS)) $(patsubst %,-L%,$(EXTRALIBDIRS))
+
+# Set a "language standard" compiler flag.
+# Unremark just one line below to set the language standard to use.
+# gnu99 = C99 + GNU extensions. See GCC manual for more information.
+#CFLAGS += -std=c89
+#CFLAGS += -std=gnu89
+#CFLAGS += -std=c99
+#CFLAGS += -std=gnu99
+
+
+
+# Optional assembler flags.
+# -Wa,...: tell GCC to pass this to the assembler.
+# -ahlms: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
+
+
+
+# Optional linker flags.
+# -Wl,...: tell GCC to pass this to linker.
+# -Map: create map file
+# --cref: add cross reference to map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+
+
+
+# Additional libraries
+
+# Minimalistic printf version
+#LDFLAGS += -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires -lm below)
+#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
+
+# -lm = math library
+LDFLAGS += -lc
+LDFLAGS += -lm
+
+# Programming support using avrdude. Settings and variables.
+
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+AVRDUDE_FLAGS = -p $(MCU) -c $(AVRDUDE_PROGRAMMER)
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE += -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_FLAGS += -V
+
+# Increase verbosity level. Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
+# to submit bug reports.
+#AVRDUDE_FLAGS += -v -v
+
+#Run while cable attached or don't
+AVRDUDE_FLAGS += -E reset #keep chip disabled while cable attached
+#AVRDUDE_FLAGS += -E noreset
+
+#AVRDUDE_WRITE_FLASH = -U lfuse:w:0x04:m #run with 8 Mhz clock
+
+#AVRDUDE_WRITE_FLASH = -U lfuse:w:0x21:m #run with 1 Mhz clock #default clock mode
+
+#AVRDUDE_WRITE_FLASH = -U lfuse:w:0x01:m #run with 1 Mhz clock no start up time
+
+# ---------------------------------------------------------------------------
+
+# Define directories, if needed.
+DIRAVR = /usr/lib/avr
+DIRAVRBIN = $(DIRAVR)/bin
+DIRAVRUTILS = $(DIRAVR)/utils/bin
+DIRINC = $(DIRAVR)/include
+DIRLIB = $(DIRAVR)/lib
+
+
+# Define programs and commands.
+SHELL = sh
+
+CC = avr-gcc
+
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+AR = avr-ar
+
+# Programming support using avrdude.
+AVRDUDE = avrdude
+
+
+REMOVE = rm -f
+COPY = cp
+
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) -A $(TARGET).elf
+
+
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
+
+# Define all listing files.
+LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
+
+#LOCAL_LIB
+LOCAL_LIB = main.a
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+
+# Default target: make program!
+all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \
+ $(TARGET).lss $(TARGET).sym sizeafter finished end
+# $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+ @echo
+ @echo $(MSG_BEGIN)
+
+finished:
+ @echo $(MSG_ERRORS_NONE)
+
+end:
+ @echo $(MSG_END)
+ @echo
+
+
+# Display size of file.
+sizebefore:
+ @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
+
+sizeafter:
+ @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
+
+
+
+# Display compiler version information.
+gccversion :
+ @$(CC) --version
+
+
+
+
+# Convert ELF to COFF for use in debugging / simulating in
+# AVR Studio or VMLAB.
+COFFCONVERT=$(OBJCOPY) --debugging \
+ --change-section-address .data-0x800000 \
+ --change-section-address .bss-0x800000 \
+ --change-section-address .noinit-0x800000 \
+ --change-section-address .eeprom-0x810000
+
+
+coff: $(TARGET).elf
+ @echo
+ @echo $(MSG_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+
+extcoff: $(TARGET).elf
+ @echo
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+
+
+
+# Program the device.
+program: $(TARGET).hex $(TARGET).eep
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+
+
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ @echo
+ @echo $(MSG_FLASH) $@
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
+
+%.eep: %.elf
+ @echo
+ @echo $(MSG_EEPROM) $@
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+ --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ @echo
+ @echo $(MSG_EXTENDED_LISTING) $@
+ $(OBJDUMP) -h -S $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ @echo
+ @echo $(MSG_SYMBOL_TABLE) $@
+ avr-nm -n $< > $@
+
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: %.a
+ @echo
+ @echo $(MSG_LINKING) $@
+ $(CC) $(ALL_CFLAGS) $(LOCAL_LIB) -o $@ $(LDFLAGS)
+
+$(LOCAL_LIB): $(OBJ)
+ $(AR) rcs $@ $(OBJ)
+
+# Compile: create object files from C source files.
+%.o : %.c
+ @echo
+ @echo $(MSG_COMPILING) $<
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+%.o : %.S
+ @echo
+ @echo $(MSG_ASSEMBLING) $<
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+
+
+
+
+
+# Target: clean project.
+clean: begin clean_list finished end
+
+clean_list :
+ @echo
+ @echo $(MSG_CLEANING)
+ $(REMOVE) $(TARGET).hex
+ $(REMOVE) $(TARGET).eep
+ $(REMOVE) $(TARGET).obj
+ $(REMOVE) $(TARGET).cof
+ $(REMOVE) $(TARGET).elf
+ $(REMOVE) $(TARGET).map
+ $(REMOVE) $(TARGET).obj
+ $(REMOVE) $(TARGET).a90
+ $(REMOVE) $(TARGET).sym
+ $(REMOVE) $(TARGET).lnk
+ $(REMOVE) $(TARGET).lss
+ $(REMOVE) $(OBJ)
+ $(REMOVE) $(LST)
+ $(REMOVE) $(SRC:.c=.s)
+ $(REMOVE) $(SRC:.c=.d)
+ $(REMOVE) *~
+
+# Automatically generate C source code dependencies.
+# (Code originally taken from the GNU make user manual and modified
+# (See README.txt Credits).)
+#
+# Note that this will work with sh (bash) and sed that is shipped with WinAVR
+# (see the SHELL variable defined above).
+# This may not work with other shells or other seds.
+#
+%.d: %.c
+ set -e; $(CC) -MM $(ALL_CFLAGS) $< \
+ | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \
+ [ -s $@ ] || rm -f $@
+
+
+# Remove the '-' if you want to see the dependency files generated.
+-include $(SRC:.c=.d)
+
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \
+ clean clean_list program
diff --git a/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalIns.c b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalIns.c
new file mode 100644
index 00000000..a2517b98
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalIns.c
@@ -0,0 +1,63 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+// Function to get current state (high\low) of a digital pin on AVR
+//
+// Calling Sequence
+// u8AVRDigitalIns(port,pin)
+//
+// Parameters
+// port : port of microcontroller to be used (1 for PORTA, 2 for PORTB,...)
+// pin : pin of port (mentioned above) to be used
+// Returns->
+// state : state of the pin (0 for low and 1 for high)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port is to
+// be read. Function returns current state of the pin '1' (high) or '0' (low).
+//
+//
+// Examples
+// state = u8AVRDigitalIns(1,0)
+//
+// Authors
+// Siddhesh Wani
+//
+
+
+#include "AVRPeripheralGPIO.h"
+
+uint8 u8AVRDigitalIns(uint8 port,uint8 pin)
+{
+ unsigned int state = 0;
+ if(port == PORT_A)
+ {
+ state = bit_is_clear(PINA,pin);
+ return !state;
+ }
+ if(port == PORT_B)
+ {
+ state = bit_is_clear(PINB,pin);
+ return !state;
+ }
+ if(port == PORT_C)
+ {
+ state = bit_is_clear(PINC,pin);
+ return !state;
+ }
+ if(port == PORT_D)
+ {
+ state = bit_is_clear(PIND,pin);
+ return !state;
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalOuts.c b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalOuts.c
new file mode 100644
index 00000000..8998fc91
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalOuts.c
@@ -0,0 +1,78 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+// Function to change state (high\low) of a digital output pin on AVR
+//
+// Calling Sequence
+// u8AVRDigitalOuts(port,pin,state)
+//
+// Parameters
+// port : port of microcontroller to be used (1 for PORTA, 2 for PORTB,...)
+// pin : pin of port (mentioned above) to be used
+// state : state to be outputed on pin (0 for low and 1 for high)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port as
+// digital output. Also, desired output state must be specified as
+// '1' (high) or '0' (low).
+//
+// Examples
+// u8AVRDigitalOuts(1,0,1)
+//
+// Authors
+// Siddhesh Wani
+// Ashish Kamble
+
+
+#include "AVRPeripheralGPIO.h"
+
+void u8AVRDigitalOuts(uint8 port,uint8 pin,uint8 state)
+{
+ if(state == LOW)
+ {/*Make output pin high*/
+ if(port == PORT_A)
+ {
+ PORTA = PORTA & ~(1<<pin);
+ }
+ if(port == PORT_B)
+ {
+ PORTB = PORTB & ~(1<<pin);
+ }
+ if(port == PORT_C)
+ {
+ PORTC = PORTC & ~(1<<pin);
+ }
+ if(port == PORT_D)
+ {
+ PORTD = PORTD & ~(1<<pin);
+ }
+ }
+ else
+ {/*Make output pin high*/
+ if(port == PORT_A)
+ {
+ PORTA = PORTA | (1<<pin);
+ }
+ if(port == PORT_B)
+ {
+ PORTB = PORTB | (1<<pin);
+ }
+ if(port == PORT_C)
+ {
+ PORTC = PORTC | (1<<pin);
+ }
+ if(port == PORT_D)
+ {
+ PORTD = PORTD | (1<<pin);
+ }
+ }
+}
diff --git a/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalPortSetups.c b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalPortSetups.c
new file mode 100644
index 00000000..54ec7312
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalPortSetups.c
@@ -0,0 +1,81 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+// Function to decide direction of a digital pin on AVR
+//
+// Calling Sequence
+// AVRDigitalPortSetup(port,direction)
+//
+// Parameters
+// port : port of microcontroller to be used (1 for PORTA, 2 for PORTB,...)
+// direction : direction to be set for pin (0 for input, 1 for output)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs/inputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port to be
+// used as digital output/input. Also, desired direction must be specified as
+// 'INPUT' or 'OUTPUT'.
+//
+// Examples
+// AVRDigitalPortSetup(1,0); //this function will PortA as input Port
+//
+// Authors
+// Siddhesh Wani
+// Ashish Kamble
+
+
+#include "AVRPeripheralGPIO.h"
+
+uint8 u8AVRDigitalPortSetups(uint8 port,uint8 direction)
+{
+ if(direction == INPUT)
+ {
+ /*Set port as input*/
+ if(port == PORT_A)
+ {
+ DDRA = 0x00;
+ }
+ if(port == PORT_B)
+ {
+ DDRB = 0x00;
+ }
+ if(port == PORT_C)
+ {
+ DDRC = 0x00;
+ }
+ if(port == PORT_D)
+ {
+ DDRD = 0x00;
+ }
+ }
+ else
+ {
+ /*Set port as output*/
+ if(port == PORT_A)
+ {
+ DDRA = 0xFF;
+ }
+ if(port == PORT_B)
+ {
+ DDRB = 0xFF;
+ }
+ if(port == PORT_C)
+ {
+ DDRC = 0xFF;
+ }
+ if(port == PORT_D)
+ {
+ DDRD = 0xFF;
+ }
+ }
+ return 0;
+}
+
diff --git a/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalSetups.c b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalSetups.c
new file mode 100644
index 00000000..e28c468c
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/gpio/u8AVRDigitalSetups.c
@@ -0,0 +1,70 @@
+// Function to decide direction of a digital pin on AVR
+//
+// Calling Sequence
+// AVRDigitalSetup(port,pin,direction)
+//
+// Parameters
+// port : port of microcontroller to be used (1 for PORTA, 2 for PORTB,...)
+// pin : pin of port (mentioned above) to be used
+// direction : direction to be set for pin (0 for input, 1 for output)
+//
+// Description
+// Each AVR microcontroller has pins which can be configured as digital
+// outputs/inputs. These are normally divided among some 'ports' (group of pins).
+// User has to select one of these port and which pin of that port to be
+// used as digital output/input. Also, desired direction must be specified as
+// 'INPUT' or 'OUTPUT'.
+//
+// Examples
+// AVRDigitalSetup(1,0,1)
+//
+// Authors
+// Siddhesh Wani
+//
+
+#include "AVRPeripheralGPIO.h"
+
+
+void u8AVRDigitalSetups(uint8 port,uint8 pin,uint8 direction)
+{
+
+ if (direction == INPUT)
+ {/*Set pin as input*/
+ if(port == PORT_A)
+ {
+ DDRA = DDRA & ~(1<<pin);
+ }
+ if(port == PORT_B)
+ {
+ DDRB = DDRB & ~(1<<pin);
+ }
+ if(port == PORT_C)
+ {
+ DDRC = DDRC & ~(1<<pin);
+ }
+ if(port == PORT_D)
+ {
+ DDRD = DDRD & ~(1<<pin);
+ }
+ }
+ else
+ {/*Set pin as output*/
+ if(port == PORT_A)
+ {
+ DDRA = DDRA | (1<<pin);
+ }
+ if(port == PORT_B)
+ {
+ DDRB = DDRB | (1<<pin);
+ }
+ if(port == PORT_C)
+ {
+ DDRC = DDRC | (1<<pin);
+ }
+ if(port == PORT_D)
+ {
+ DDRD = DDRD | (1<<pin);
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRPeripheralADC.h b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralADC.h
new file mode 100644
index 00000000..2a27e37d
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralADC.h
@@ -0,0 +1,27 @@
+//This file defines constants corresponding to gpios and digital input functions.
+//
+// Authors
+// Siddhesh Wani
+//
+
+#ifndef __AVRPERIPHERALADC_H__
+#define __AVRPERIPHERALADC_H__
+
+#include <avr/io.h>
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//Function prototypes
+uint8 u8AVRADCSetups(uint8 prescaler, uint8 adc_ref);
+
+uint8 u8AVRReadADCs(uint8 channel);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALGPIO_H__ */
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRPeripheralGPIO.h b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralGPIO.h
new file mode 100644
index 00000000..9a8d2d65
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralGPIO.h
@@ -0,0 +1,54 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __AVRPERIPHERALGPIO_H__
+#define __AVRPERIPHERALGPIO_H__
+
+#include <avr/io.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include <avr/io.h>
+#include "types.h"
+
+//Port definitions
+#define PORT_A 1
+#define PORT_B 2
+#define PORT_C 3
+#define PORT_D 4
+
+//Direction definitions
+#define INPUT 0
+#define OUTPUT 1
+
+//Pin state definitions
+#define LOW 0
+#define HIGH 1
+
+//Function prototypes
+void u8AVRDigitalSetups(uint8 port,uint8 pin,uint8 direction);
+
+uint8 u8AVRDigitalIns(uint8 port,uint8 pin);
+
+void u8AVRDigitalOuts(uint8 port,uint8 pin,uint8 state);
+
+uint8 u8AVRDigitalPortSetups(uint8 port,uint8 direction);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALGPIO_H__ */
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h
new file mode 100644
index 00000000..2107a5a4
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h
@@ -0,0 +1,34 @@
+//This file defines functions prototypes related to PWM.
+//
+// Authors
+// Ashish Kamble
+//
+
+#ifndef __AVRPERIPHERALPWM_H__
+#define __AVRPERIPHERALPWM_H__
+
+#include <avr/io.h>
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//Function prototypes
+uint8 u8AVRPWM0Setups(uint8 waveform_mode, uint8 output_mode);
+
+uint8 u8AVRPWM2Setups(uint8 waveform_mode, uint8 output_mode);
+
+uint8 u8AVRPWM1Setups(uint8 waveform_mode, uint8 output_mode, uint8 output_pin);
+
+uint8 u8AVRPWM0SetDutys(uint8 duty);
+
+uint8 u8AVRPWM2SetDutys(uint8 duty);
+
+uint8 u8AVRPWM1SetDutys(uint8 output_pin, uint16 duty, uint16 Top_Value);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALPWM_H__ */
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRPeripheralTimer.h b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralTimer.h
new file mode 100644
index 00000000..ab087692
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralTimer.h
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+#ifndef __AVRPERIPHERALTIMER_H__
+#define __AVRPERIPHERALTIMER_H__
+
+#include <avr/io.h>
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//Function prototypes
+
+uint16 u8AVRGetTimerValues(uint16 timer);
+
+uint8 u8AVRTimerSetups(uint8 timer, uint16 prescaler,uint8 clock_source);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALTIMER_H__ */
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRPeripheralUART.h b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralUART.h
new file mode 100644
index 00000000..09db3b03
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralUART.h
@@ -0,0 +1,59 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __AVRPERIPHERALUART_H__
+#define __AVRPERIPHERALUART_H__
+
+#include <avr/io.h>
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//Function prototypes
+uint8 u8AVRUARTSetups(uint8 mode, uint32 baudrate, uint8 stopbits, uint8 parity);
+
+uint8 u8AVRUARTTransmits(uint8 data);
+
+uint8 gAVRUARTTransmits(char* msg,int size);
+
+uint8 u16AVRUARTTransmits(uint16 data);
+
+uint8 i16AVRUARTTransmits(int16 data);
+
+uint8 i8AVRUARTTransmits(int8 data);
+
+//uint8 sAVRUARTTransmits(float data);
+
+uint8 u8AVRUARTTransmita(uint8 *x,int size);
+
+//uint8 gAVRUARTTransmita(uint8 *x,int size);
+
+uint8 u16AVRUARTTransmita(uint16 *x,int size);
+
+uint8 i16AVRUARTTransmita(int16 *x,int size);
+
+uint8 i8AVRUARTTransmita(int8 *x,int size);
+
+uint8 u8AVRUSARTReceiveCharu8();
+
+uint8 dAVRUARTTransmits(double data);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRUART_H__ */
+
+
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRUtil.h b/2.3-1/src/c/hardware/avr/includes/AVRUtil.h
new file mode 100644
index 00000000..55789bef
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRUtil.h
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Siddhesh Wani
+// Email: toolbox@scilab.in
+
+#ifndef __AVRUTIL_H__
+#define __AVRUTIL_H__
+
+#include <avr/io.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "types.h"
+#include "util/delay.h"
+
+uint8 u16AVRSleeps (uint16 delay);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRUTIL_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralADC.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralADC.h
new file mode 100644
index 00000000..5d3a48e5
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralADC.h
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Aithor: Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __INT_AVRPERIPHERALADC_H__
+#define __INT_AVRPERIPHERALADC_H__
+
+#include <avr/io.h>
+#include "AVRPeripheralADC.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AVRADCSetup(in1,in2) u8AVRADCSetups((uint8) in1,\
+ (uint8) in2);
+
+#define AVRReadADC(in1) u8AVRReadADCs((uint8) in1);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALADC_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h
new file mode 100644
index 00000000..3fcbb8f5
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h
@@ -0,0 +1,40 @@
+
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Siddhesh Wani, Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __INT_AVRPERIPHERALGPIO_H__
+#define __INT_AVRPERIPHERALGPIO_H__
+
+#include <avr/io.h>
+#include "AVRPeripheralGPIO.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AVRDigitalSetup(in1,in2,in3) u8AVRDigitalSetups((uint8) in1,\
+ (uint8) in2, (uint8) in3);
+
+#define AVRDigitalIn(in1,in2) u8AVRDigitalIns((uint8) in1, (uint8) in2);
+
+#define AVRDigitalOut(in1,in2,in3) u8AVRDigitalOuts((uint8) in1,\
+ (uint8) in2, (uint8) in3);
+
+#define AVRDigitalPortSetup(in1,in2) u8AVRDigitalPortSetups((uint8) in1,\
+ (uint8) in2);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALGPIO_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h
new file mode 100644
index 00000000..5c5950bc
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __INT_AVRPERIPHERALPWM_H__
+#define __INT_AVRPERIPHERALPWM_H__
+
+#include <avr/io.h>
+#include "AVRPeripheralPWM.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AVRPWM0Setup(in1,in2) u8AVRPWM0Setups((uint8) in1, (uint8) in2);
+
+#define AVRPWM2Setup(in1,in2) u8AVRPWM2Setups((uint8) in1, (uint8) in2);
+
+#define AVRPWM1Setup(in1,in2,in3) u8AVRPWM1Setups((uint8) in1, (uint8) in2, (uint8) in3);
+
+#define AVRPWM0SetDuty(in1) u8AVRPWM0SetDutys((uint8) in1);
+
+#define AVRPWM2SetDuty(in1) u8AVRPWM2SetDutys((uint8) in1);
+
+#define AVRPWM1SetDuty(in1,in2,in3) u8AVRPWM1SetDutys((uint8) in1,(uint16) in2,(uint16) in3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALADC_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralTimer.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralTimer.h
new file mode 100644
index 00000000..3ec6a7ec
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralTimer.h
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Siddhesh Wani, Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __INT_AVRPERIPHERALTIMER_H__
+#define __INT_AVRPERIPHERALTIMER_H__
+
+#include <avr/io.h>
+#include "AVRPeripheralTimer.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AVRGetTimerValue(in1) u8AVRGetTimerValues((uint16) in1);
+
+#define AVRTimerSetup(in1,in2,in3) u8AVRTimerSetups((uint8) in1, (uint16) in2, (uint8) in3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALADC_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralUART.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralUART.h
new file mode 100644
index 00000000..81b4af68
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralUART.h
@@ -0,0 +1,57 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Authors: Siddhesh Wani, Ashish Kamble
+// Email: toolbox@scilab.in
+
+
+#ifndef __INT_AVRPERIPHERALUART_H__
+#define __INT_AVRPERIPHERALUART_H__
+
+#include <avr/io.h>
+#include "AVRPeripheralUART.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AVRUARTSetup(in1,in2,in3,in4) u8AVRUARTSetups((uint8) in1,(uint32) in2,(uint8) in3,(uint8) in4);
+
+#define u80AVRUARTTransmitu80(in1) u8AVRUARTTransmits((uint8) in1);
+
+#define g2AVRUARTTransmitu80(in1,in2) gAVRUARTTransmits((char*) in1,in2[0]*in2[1]);
+
+#define u160AVRUARTTransmitu80(in1) u16AVRUARTTransmits((uint16) in1);
+
+#define i160AVRUARTTransmitu80(in1) i16AVRUARTTransmits((int16) in1);
+
+#define i80AVRUARTTransmitu80(in1) i8AVRUARTTransmits((int8) in1);
+
+#define u82AVRUARTTransmitu80(in1,in2) u8AVRUARTTransmita((uint8) in1,in2[0]*in2[1]);
+
+#define d0AVRUARTTransmitu80(in1) dAVRUARTTransmits((double) in1);
+
+//#define g2AVRUARTTransmitu80(in1,in2) gAVRUARTTransmita((char*) in1,in2[0]*in2[1]);
+
+#define u162AVRUARTTransmitu80(in1,in2) u16AVRUARTTransmita((uint16) in1,in2[0]*in2[1]);
+
+#define i162AVRUARTTransmitu80(in1,in2) i16AVRUARTTransmita((int16) in1,in2[0]*in2[1]);
+
+#define i82AVRUARTTransmitu80(in1,in2) i8AVRUARTTransmita((int8) in1,in2[0]*in2[1]);
+
+#define u80AVRUSARTReceiveCharu80() u8AVRUSARTReceiveCharu8();
+
+//#define s0AVRUARTTransmitu80(in1) sAVRUARTTransmits((float) in1);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALUART_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRUtil.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRUtil.h
new file mode 100644
index 00000000..51cbce58
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRUtil.h
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Author: Siddhesh Wani
+// Email: toolbox@scilab.in
+
+
+#ifndef __INT_AVRUTIL_H__
+#define __INT_AVRUTIL_H__
+
+#include <avr/io.h>
+#include "AVRUtil.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//#define d0sleepu80(in1) u16AVRSleeps ((uint16) in1);
+
+#define AVRSleep(in1) u16AVRSleeps ((uint16) in1);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALGPIO_H__ */
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0SetDutys.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0SetDutys.c
new file mode 100644
index 00000000..106a872e
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0SetDutys.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Set Duty cycle of PWM Output generated by Timer0 at OC0 pin.
+
+
+#include "AVRPeripheralPWM.h"
+
+uint8 u8AVRPWM0SetDutys(uint8 duty)
+{
+ uint8 duty_value = 0;
+ duty_value = (((uint16)(duty * 0xff))/100);
+ OCR0 = duty_value;
+ return 0;
+}
+
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0Setups.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0Setups.c
new file mode 100644
index 00000000..131ee68b
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM0Setups.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Setup PWM output for OC0 pin.
+
+
+#include "AVRPeripheralPWM.h"
+
+
+uint8 u8AVRPWM0Setups(uint8 waveform_mode, uint8 output_mode)
+{
+ switch(waveform_mode)
+ {
+ case 0:
+ TCCR0 |= (1<<WGM00);
+ break;
+
+ case 1:
+ TCCR0 |= (1<<WGM00)|(1<<WGM01);
+ break;
+
+ case 2:
+ TCCR0 |= (1<<WGM01);
+ break;
+ }
+ switch(output_mode)
+ {
+ case 0:
+ TCCR0 |= (1<<COM01);
+ break;
+
+ case 1:
+ TCCR0 |= (1<<COM00)|(1<<COM01);
+ break;
+
+ case 2:
+ TCCR0 |= (1<<COM00);
+ break;
+ }
+ return 0;
+}
+
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1SetDutys.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1SetDutys.c
new file mode 100644
index 00000000..47aad1c8
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1SetDutys.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Set Duty cycle and Top Value of PWM Output generated by Timer1 at OC1A or OC1B pin.
+
+#include "AVRPeripheralPWM.h"
+
+uint8 u8AVRPWM1SetDutys(uint8 output_pin, uint16 duty, uint16 Top_Value)
+{
+ uint16 duty_value = 0;
+ ICR1 = Top_Value;
+ if(output_pin==0)
+ {
+ duty_value = (((uint16)(duty * Top_Value))/100);
+ OCR1A = duty_value;
+ }
+ else if(output_pin==1)
+ {
+ duty_value = (((uint16)(duty * Top_Value))/100);
+ OCR1B = duty_value;
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1Setups.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1Setups.c
new file mode 100644
index 00000000..b3f2d8f4
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM1Setups.c
@@ -0,0 +1,69 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Setup PWM output for OC1A or OC1B pin.
+
+#include "AVRPeripheralPWM.h"
+
+uint8 u8AVRPWM1Setups(uint8 waveform_mode, uint8 output_mode, uint8 output_pin)
+{
+ switch(waveform_mode)
+ {
+ case 0:
+ TCCR1A |= (1<<WGM11);
+ TCCR1B |= (1<<WGM13);
+ break;
+
+ case 1:
+ TCCR1A |= (1<<WGM11);
+ TCCR1B |= (1<<WGM12)|(1<<WGM13);
+ break;
+
+ case 2:
+ TCCR1B |= (1<<WGM12)|(1<<WGM13);
+ break;
+ }
+ if(output_pin==0)
+ {
+ switch(output_mode)
+ {
+ case 0:
+ TCCR1A |= (1<<COM1A1);
+ break;
+
+ case 1:
+ TCCR1A |= (1<<COM1A0)|(1<<COM1A1);
+ break;
+
+ case 2:
+ TCCR1A |= (1<<COM1A0);
+ break;
+ }
+ }
+ else if(output_pin==1)
+ {
+ switch(output_mode==0)
+ {
+ case 0:
+ TCCR1A |= (1<<COM1B1);
+ break;
+
+ case 1:
+ TCCR1A |= (1<<COM1B0)|(1<<COM1B1);
+ break;
+
+ case 2:
+ TCCR1A |= (1<<COM1B0);
+ break;
+ }
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2SetDutys.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2SetDutys.c
new file mode 100644
index 00000000..e0b53186
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2SetDutys.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Set Duty cycle of PWM Output generated by Timer2 at OC2 pin.
+
+#include "AVRPeripheralPWM.h"
+
+uint8 u8AVRPWM2SetDutys(uint8 duty)
+{
+ uint8 duty_value = 0;
+ duty_value = (uint8)(((uint16)(duty * 0xff))/100);
+ OCR2 = duty_value;
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2Setups.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2Setups.c
new file mode 100644
index 00000000..f5f87672
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWM2Setups.c
@@ -0,0 +1,47 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Setup PWM output for OC2 pin.
+
+#include "AVRPeripheralPWM.h"
+
+uint8 u8AVRPWM2Setups(uint8 waveform_mode, uint8 output_mode)
+{
+ switch(waveform_mode)
+ {
+ case 0:
+ TCCR2 |= (1<<WGM20);
+ break;
+
+ case 1:
+ TCCR2 |= (1<<WGM20)|(1<<WGM21);
+ break;
+
+ case 2:
+ TCCR2 |= (1<<WGM21);
+ break;
+ }
+ switch(output_mode)
+ {
+ case 0:
+ TCCR2 |= (1<<COM21);
+ break;
+
+ case 1:
+ TCCR2 |= (1<<COM20)|(1<<COM21);
+ break;
+
+ case 2:
+ TCCR2 |= (1<<COM20);
+ break;
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/timer/u16AVRGetTimerValues.c b/2.3-1/src/c/hardware/avr/timer/u16AVRGetTimerValues.c
new file mode 100644
index 00000000..8ef16e8d
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/timer/u16AVRGetTimerValues.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function selects the clock source and timer with prescaler.
+
+
+#include "AVRPeripheralTimer.h"
+#include <avr/interrupt.h>
+
+
+uint16 u8AVRGetTimerValues(uint16 timer)
+{
+ uint16_t x;
+ switch(timer)
+ {
+ case 0:
+ {
+ x = TCNT0;
+ break;
+ }
+
+ case 1:
+ {
+ unsigned char sreg;
+ unsigned int val;
+ sreg = SREG;
+ cli();
+ val = TCNT1;
+ SREG = sreg;
+ sei();
+ x = val;
+ break;
+ }
+
+ case 2:
+ {
+ x = TCNT2;
+ break;
+ }
+ }
+return x;
+}
+
diff --git a/2.3-1/src/c/hardware/avr/timer/u8AVRGetTimerValues.c b/2.3-1/src/c/hardware/avr/timer/u8AVRGetTimerValues.c
new file mode 100644
index 00000000..e08bb3a6
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/timer/u8AVRGetTimerValues.c
@@ -0,0 +1,63 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// 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
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+
+// Function to get timer count
+//
+// Calling Sequence
+// u8AVRGetTimerValues(timer)
+//
+// Parameters
+// timer: timer whose current count is to be returned (0,1,2)
+// ***Refer datasheet for more description about timer
+//
+// Description
+// This function returns the count of timer specified
+//
+//
+// Authors
+// Ashish Kamble
+//
+
+
+#include "AVRPeripheralTimer.h"
+#include <avr/interrupt.h>
+
+
+uint16 u8AVRGetTimerValues(uint16 timer)
+{ uint16_t x;
+ switch(timer)
+ {
+ case 0:
+ {
+ x = TCNT0;
+ break;
+ }
+ case 1:
+ {
+ unsigned char sreg;
+ unsigned int val;
+ sreg = SREG;
+ cli();
+ val = TCNT1;
+ SREG = sreg;
+ sei();
+ x = val;
+ break;
+ }
+ case 2:
+ {
+ x = TCNT2;
+ break;
+ }
+ }
+return x;
+}
+
diff --git a/2.3-1/src/c/hardware/avr/timer/u8AVRTimerSetups.c b/2.3-1/src/c/hardware/avr/timer/u8AVRTimerSetups.c
new file mode 100644
index 00000000..6ee8d2af
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/timer/u8AVRTimerSetups.c
@@ -0,0 +1,110 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function selects the clock source and timer with prescaler.
+
+#include "AVRPeripheralTimer.h"
+
+uint8 u8AVRTimerSetups(uint8 timer,uint16 prescaler,uint8 clock_source)
+{
+
+ if(clock_source==0)
+ {
+ if(timer==0)
+ {
+ switch(prescaler)
+ {
+ case 1: TCCR0 |= (1<<CS00);
+ TCNT0 = 0x00;
+ case 8: TCCR0 |= (1<<CS01);
+ TCNT0 = 0x00;
+ case 64: TCCR0 |= (1<<CS00)|(1<<CS01);
+ TCNT0 = 0x00;
+ case 256: TCCR0 |= (1<<CS02);
+ TCNT0 = 0x00;
+ case 1024: TCCR0 |= (1<<CS00)|(1<<CS02);
+ TCNT0 = 0x00;
+ }
+ }
+ else if(timer==2)
+ {
+ switch(prescaler)
+ {
+ case 1: TCCR2 |= (1<<CS20);
+ TCNT2 = 0x00;
+ case 8: TCCR2 |= (1<<CS21);
+ TCNT2 = 0x00;
+ case 64: TCCR2 |= (1<<CS20)|(1<<CS21);
+ TCNT2 = 0x00;
+ case 256: TCCR2 |= (1<<CS22);
+ TCNT2 = 0x00;
+ case 1024: TCCR2 |= (1<<CS20)|(1<<CS22);
+ TCNT2 = 0x00;
+ }
+ }
+ else if(timer==1)
+ {
+ switch(prescaler)
+ {
+ case 1: TCCR1B |= (1<<CS10);
+ TCNT1H = 0x00;
+ TCNT1L = 0x00;
+ case 8: TCCR1B |= (1<<CS11);
+ TCNT1H = 0x00;
+ TCNT1L = 0x00;
+ case 64: TCCR1B |= (1<<CS10)|(1<<CS11);
+ TCNT1H = 0x00;
+ TCNT1L = 0x00;
+ case 256: TCCR1B |= (1<<CS12);
+ TCNT1H = 0x00;
+ TCNT1L = 0x00;
+ case 1024: TCCR1B |= (1<<CS10)|(1<<CS12);
+ TCNT1H = 0x00;
+ TCNT1L = 0x00;
+ }
+ }
+ }
+ else if(clock_source==1)
+ {
+ if(timer==0)
+ {
+ TCCR0 |= (1<<CS00)|(1<<CS01)|(1<<CS02);
+ TCNT0 = 0x00;
+ }
+ else if(timer==2)
+ {
+ TCCR2 |= (1<<CS20)|(1<<CS21)|(1<<CS22);
+ TCNT2 = 0x00;
+ }
+ else if(timer==1)
+ {
+ TCCR1B |= (1<<CS10)|(1<<CS11)|(1<<CS12);
+ TCNT1H = 0x00;
+ TCNT1L = 0x00;
+ }
+ }
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmits.c b/2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmits.c
new file mode 100644
index 00000000..ec63c4de
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmits.c
@@ -0,0 +1,88 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Not Tested//
+#include "AVRPeripheralUART.h"
+#include<math.h>
+
+
+uint8 dAVRUARTTransmits(double data)
+{
+ //Extract integer part
+ long int intpart = (long int)data;
+ //Extract double part
+ //double floatpart = data - (double)intpart;
+ char* str;
+ int i = 0;
+ while(intpart)
+ {
+ str[i] = (intpart%10) + '0';
+ intpart = intpart/10;
+ i++;
+ }
+ str[i]='\0';
+ /*
+ int j = 0;
+ int k = i-1;
+ char temp;
+ while(j<k)
+ {
+ temp = str[j];
+ str[j] = str[k];
+ str[k] = temp;
+ j++;
+ k--;
+ }
+*/
+
+
+ /*
+ char* strfloat;
+ floatpart = floatpart*1000000000;
+ int l = 0;
+ while(floatpart)
+ {
+ strfloat[l] = ((unsigned int)floatpart%10) + '0';
+ floatpart = floatpart/10;
+ l++;
+ }
+ while(*strfloat!='\0')
+ {
+ str[i+1] = strfloat[l-1];
+ i++;
+ l--;
+ }
+ */
+
+ while(*str!='\0')
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = *str; // Put data into buffer, sends the data
+ str++;
+ }
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (10); // Put data into buffer, sends the data
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (13); // Put data into buffer, sends the data
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmitu8.c b/2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmitu8.c
new file mode 100644
index 00000000..8978cc00
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/dAVRUARTTransmitu8.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Char.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 dAVRUARTTransmitu8(uint8 data)
+{
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = data; // Put data into buffer, sends the data
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmita.c b/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmita.c
new file mode 100644
index 00000000..fea9319d
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmita.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit String.
+
+
+#include "AVRPeripheralUART.h"
+
+
+uint8 gAVRUARTTransmita(uint8 *x, int size)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ gAVRUARTTransmits(x[i]);
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmits.c b/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmits.c
new file mode 100644
index 00000000..502f2727
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmits.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit String.
+
+
+#include "AVRPeripheralUART.h"
+
+
+uint8 gAVRUARTTransmits(char* msg,int size)
+{
+ while(*msg!='\0')
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = *msg; // Put data into buffer, sends the data
+ msg++;
+ }
+while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (10); // Put data into buffer, sends the data
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (13); // Put data into buffer, sends the data
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmitu8.c b/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmitu8.c
new file mode 100644
index 00000000..f3384068
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/gAVRUARTTransmitu8.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit String.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 gAVRUARTTransmitu8(uint8 *msg)
+{
+ while(*msg!='\0')
+ {
+ AVRUARTTransmitChar(*msg);
+ msg++;
+ }
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmita.c b/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmita.c
new file mode 100644
index 00000000..8d0fcd47
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmita.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Signed Integer Values.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 i16AVRUARTTransmita(int16 *x, int size)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ i16AVRUARTTransmits(x[i]);
+ }
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmits.c b/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmits.c
new file mode 100644
index 00000000..4d907762
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmits.c
@@ -0,0 +1,73 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Signed Integer Values.
+
+
+#include "AVRPeripheralUART.h"
+
+
+uint8 i16AVRUARTTransmits(int16 data)
+{
+ uint8 temp1;
+ uint8 temp2;
+ uint8 temp3;
+ uint8 temp4;
+ uint8 temp5;
+ if(data<0)
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (45); // Put data into buffer, sends the data
+ }
+ data = abs(data);
+ temp1 = data/10000;
+ if(temp1==0);
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp1); // Put data into buffer, sends the data
+ }
+ data = data % 10000;
+ temp2 = data/1000;
+ if((temp1==0)&(temp2==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp2); // Put data into buffer, sends the data
+ }
+ data = data % 1000;
+ temp3 = data/100;
+ if((temp1==0)&(temp2==0)&(temp3==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp3); // Put data into buffer, sends the data
+ }
+ data = data % 100;
+ temp4 = data/10;
+ if((temp1==0)&(temp2==0)&(temp3==0)&(temp4==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp4); // Put data into buffer, sends the data
+ }
+ temp5 = data % 10;
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp5); // Put data into buffer, sends the data
+
+
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (10); // Put data into buffer, sends the data
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (13); // Put data into buffer, sends the data
+ return 0;
+}
+
diff --git a/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmitu8.c b/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmitu8.c
new file mode 100644
index 00000000..99638c77
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/i16AVRUARTTransmitu8.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Signed Integer Values.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 i16AVRUARTTransmitu8(int16 data)
+{
+ uint16 temp1;
+ uint16 temp2;
+ temp1 = abs(data)/100;
+ if(data<0)
+ AVRUARTTransmitChar(45);
+ AVRUARTTransmitChar(48+temp1);
+ temp1 = abs(data) - temp1*100;
+ temp2 = temp1;
+ temp1 = temp1/10;
+ AVRUARTTransmitChar(48+temp1);
+ temp2 = temp2 - temp1*10;
+ AVRUARTTransmitChar(48+temp2);
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmita.c b/2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmita.c
new file mode 100644
index 00000000..10345738
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmita.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Signed Integer Values.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 i8AVRUARTTransmita(int8 *x,int size)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ i8AVRUARTTransmits(x[i]);
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmits.c b/2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmits.c
new file mode 100644
index 00000000..6b8c20fb
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/i8AVRUARTTransmits.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Signed Integer Values.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 i8AVRUARTTransmits(int8 data)
+{
+ uint8 temp1;
+ temp1 = abs(data);
+ if(data<0)
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (45); // Put data into buffer, sends the data
+ u8AVRUARTTransmits(temp1);
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmita.c b/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmita.c
new file mode 100644
index 00000000..8b8e6301
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmita.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Unsigned Integer Values.
+
+#include "AVRPeripheralUART.h"
+
+uint8 u16AVRUARTTransmita(uint16 *x, int size)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ u16AVRUARTTransmits(x[i]);
+ }
+ return 0;
+}
+
+
+
+
diff --git a/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmits.c b/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmits.c
new file mode 100644
index 00000000..3cfb4a27
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmits.c
@@ -0,0 +1,87 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Unsigned Integer Values.
+
+#include "AVRPeripheralUART.h"
+
+uint8 u16AVRUARTTransmits(uint16 data)
+{
+ uint8 temp1;
+ uint8 temp2;
+ uint8 temp3;
+ uint8 temp4;
+ uint8 temp5;
+ temp1 = data/10000;
+ if(temp1==0);
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp1); // Put data into buffer, sends the data
+ }
+ data = data % 10000;
+ temp2 = data/1000;
+ if((temp1==0)&(temp2==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp2); // Put data into buffer, sends the data
+ }
+ data = data % 1000;
+ temp3 = data/100;
+ if((temp1==0)&(temp2==0)&(temp3==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp3); // Put data into buffer, sends the data
+ }
+ data = data % 100;
+ temp4 = data/10;
+ if((temp1==0)&(temp2==0)&(temp3==0)&(temp4==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp4); // Put data into buffer, sends the data
+ }
+ temp5 = data % 10;
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp5); // Put data into buffer, sends the data
+
+
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (10); // Put data into buffer, sends the data
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (13); // Put data into buffer, sends the data
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmitu8.c b/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmitu8.c
new file mode 100644
index 00000000..a68a5aa9
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u16AVRUARTTransmitu8.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Unsigned Integer Values.
+
+#include "AVRPeripheralUART.h"
+
+uint8 u16AVRUARTTransmitu8(uint16 data)
+{
+ uint8 temp1;
+ uint8 temp2;
+ uint8 temp3;
+ uint8 temp4;
+ temp1 = data/10000;
+ dAVRUARTTransmitu8(48+temp1);
+ temp1 = data - temp1*10000;
+ temp2 = temp1;
+ temp1 = temp1/1000;
+ dAVRUARTTransmitu8(48+temp1);
+ temp1 = temp2 - temp1*1000;
+ temp3 = temp1;
+ temp1 = temp1/100;
+ dAVRUARTTransmitu8(48+temp1);
+ temp1 = temp3 - temp1*100;
+ temp4 = temp1;
+ temp1 = temp1/10;
+ dAVRUARTTransmitu8(48+temp1);
+ temp1 = temp4 - temp1*10;
+ dAVRUARTTransmitu8(48+temp1);
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/u8AVRUARTReceiveCharu8.c b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTReceiveCharu8.c
new file mode 100644
index 00000000..df0a55b7
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTReceiveCharu8.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Receive Char.
+
+#include "AVRPeripheralUART.h"
+
+uint8 u8AVRUSARTReceiveCharu8()
+{
+ while ( !(UCSRA & (1<<RXC)) ) ; // Wait for data to be received
+ return UDR; // Get and return received data from buffer
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/u8AVRUARTSetups.c b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTSetups.c
new file mode 100644
index 00000000..085ac6e3
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTSetups.c
@@ -0,0 +1,143 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Setup Serial communication for ATmega16.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 u8AVRUARTSetups(uint8 mode, uint32 baudrate, uint8 stopbits, uint8 parity)
+{
+//Enable UART and USART
+ UCSRC |= (1<<URSEL);
+ UCSRB |= (1<<TXEN)|(1<<RXEN);
+
+ switch (mode) //According to mode set bits UMSEL and U2X
+{
+ case 0: //Normal mode
+ UCSRC &= ~(1<<UMSEL); //Clear bit 6 UMSEL and U2X=0
+ UCSRA &= ~(1<<U2X);
+ UCSRC &= ~(1<<UCPOL); // Clock polarity bit
+ break;
+
+ case 1: //Double speed mode
+ UCSRC &= ~(1<<UMSEL); //Clear bit 6 UMSEL and U2X=1
+ UCSRA |= (1<<U2X);
+ UCSRC &= ~(1<<UCPOL); //Clock polarity bit
+ break;
+
+ case 2: //Synchronous mode
+ UCSRC |= (1<<UMSEL); //Set bit 6 UMSEL and set clock polarity
+ UCSRC |= (1<<UCPOL);
+ break;
+}
+
+//Set stop bits
+if(stopbits == 0)
+{
+ UCSRC &= ~(1<<USBS); // 1 stopbit
+}
+else UCSRC |= (1<<USBS); //2 stopbits
+
+//Set parity bit settings
+switch(parity)
+{
+ case 0: // Parity disabled
+ UCSRC &= ~(1<<UPM1); //UPM1:0=0
+ UCSRC &= ~(1<<UPM0);
+ break;
+
+ case 1: // Even parity
+ UCSRC |= (1<<UPM1); //UPM1:0 = 2
+ UCSRC &= ~(1<<UPM0);
+ break;
+
+ case 2: // Odd parity
+ UCSRC |= (1<<UPM1); //UPM1:1 = 3
+ UCSRC |= (1<<UPM0);
+ break;
+}
+
+//Set baudrate
+UCSRC &= ~(1<<URSEL);
+switch(baudrate)
+{
+ case 2400:
+ UBRRL = 0xA0;
+ UBRRH = 0x01;
+ break;
+
+ case 4800:
+ UBRRL = 0xCF;
+ UBRRH = 0x00;
+ break;
+
+ case 9600:
+ UBRRL = 0x67;
+ UBRRH = 0x00;
+ break;
+
+ case 14400:
+ UBRRL = 0x44;
+ UBRRH = 0x00;
+ break;
+
+ case 19200:
+ UBRRL = 0x33;
+ UBRRH = 0x00;
+ break;
+
+ case 28800:
+ UBRRL = 0x22;
+ UBRRH = 0x00;
+ break;
+
+ case 38400:
+ UBRRL = 0x19;
+ UBRRH = 0x00;
+ break;
+
+ case 57600:
+ UBRRL = 0x10;
+ UBRRH = 0x00;
+ break;
+
+ case 768000:
+ UBRRL = 0x0C;
+ UBRRH = 0x00;
+ break;
+
+ case 115200:
+ UBRRL = 0x08;
+ UBRRH = 0x00;
+ break;
+
+ case 230400:
+ UBRRL = 0x03;
+ UBRRH = 0x00;
+ break;
+
+ case 250000:
+ UBRRL = 0x03;
+ UBRRH = 0x00;
+ break;
+
+ case 1000000:
+ UBRRL = 0x00;
+ UBRRH = 0x00;
+ break;
+}
+
+//Set data format
+UCSRC|= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
+
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmita.c b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmita.c
new file mode 100644
index 00000000..14e2a0ea
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmita.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Char.
+
+
+#include "AVRPeripheralUART.h"
+
+
+uint8 u8AVRUARTTransmita(uint8* x, int size)
+{
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ u8AVRUARTTransmits(x[i]);
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmits.c b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmits.c
new file mode 100644
index 00000000..e7e5c716
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/uart/u8AVRUARTTransmits.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Ashish Kamble
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+//Function to Transmit Char.
+
+
+#include "AVRPeripheralUART.h"
+
+uint8 u8AVRUARTTransmits(uint8 data)
+{
+ uint8 temp1;
+ uint8 temp2;
+ temp1 = data;
+ data = data/100;
+ if(data==0);
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+data); // Put data into buffer, sends the data
+ }
+ temp1 = temp1 - data*100;
+ temp2 = temp1;
+ temp1 = temp1/10;
+ if((data==0)&(temp1==0));
+ else
+ {
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp1); // Put data into buffer, sends the data
+ }
+ temp2 = temp2 - temp1*10;
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (48+temp2); // Put data into buffer, sends the data
+
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (10); // Put data into buffer, sends the data
+ while ( !( UCSRA & (1<<UDRE)) ) ; // Wait for empty transmit buffer
+ UDR = (13); // Put data into buffer, sends the data
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2.3-1/src/c/hardware/avr/util/u16AVRSleeps.c b/2.3-1/src/c/hardware/avr/util/u16AVRSleeps.c
new file mode 100644
index 00000000..9fbd512d
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/util/u16AVRSleeps.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Siddhesh Wani
+ Email: toolbox@scilab.in
+*/
+//Function to introduce specific delay in milliseconds
+
+#include "AVRUtil.h"
+
+uint8 u16AVRSleeps (uint16 delay)
+{
+ _delay_ms(delay);
+
+ return 0;
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c b/2.3-1/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c
new file mode 100644
index 00000000..6e398a17
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to declare interrupt on pins and corresponding ISRs */
+
+#include "types.h"
+#include "RPIPeripheralPinISR.h"
+#include "RPIPeripheralDigital.h"
+
+int16 i16RPIPinISRs(uint8 pin, uint8 edgetype, void (*ISRFunction)(void))
+{
+ int status;
+ status = wiringPiISR((int)phy_pin[pin-1], (int) edgetype, ISRFunction);
+ return status;
+}
+
diff --git a/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c b/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c
new file mode 100644
index 00000000..7b84350f
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to read the state of the gpio pin */
+
+#include "types.h"
+#include "RPIPeripheralDigital.h"
+
+/*pin is reduced by one as array index starts from 0 and pin no starts from 1*/
+uint8 u8RPIDigitalIns(uint8 pin)
+{
+ uint8 state = 0;
+ state = digitalRead(phy_pin[pin-1]);
+ return (state);
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c b/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c
new file mode 100644
index 00000000..f828f77e
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to change the output state of the gpio pin */
+
+
+#include "types.h"
+#include "RPIPeripheralDigital.h"
+
+/*pin is reduced by one as array index starts from 0 and pin no starts from 1*/
+void u8RPIDigitalOuts(uint8 pin, uint8 state)
+{
+ if (state == 0) /*low output*/
+ digitalWrite(phy_pin[pin-1], LOW);
+ if (state == 1) /*high output*/
+ digitalWrite(phy_pin[pin-1], HIGH);
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c b/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c
new file mode 100644
index 00000000..f5fefe08
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to setup digital pins
+ direction = 1 -> output
+ direction = 0 -> input
+*/
+
+#include "types.h"
+#include "RPIPeripheralDigital.h"
+
+
+/*This array maps pin numbers on RPi board, with pin numbers corrsponding
+to WiringPi library*/
+int phy_pin[] = {17, 17, 8, 17, 9, 17, 7, 15, 17, 16, /*Pin 1 to 10*/
+ 0, 1, 2, 17, 3, 4, 17, 5, 12, 17, /*Pin 11 to 20*/
+ 13, 6, 14, 10, 17, 11, 30, 31, 21, 17, /*Pin 21 to 30*/
+ 22, 26, 23, 17, 24, 27, 25, 28, 17, 29 }; /*Pin 31 to 40*/
+
+/*pin is reduced by one as arrayiindex starts from 0 and pin no starts from 1*/
+void u8RPIDigitalSetups(uint8 pin, uint8 direction)
+{
+ if(direction == 1) /*Pin to be used as output*/
+ pinMode(phy_pin[pin-1], OUTPUT);
+ else if(direction == 2)
+ pinMode(phy_pin[pin-1], PWM_OUTPUT);
+ else
+ pinMode(phy_pin[pin-1], INPUT);
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h
new file mode 100644
index 00000000..2f40ffb2
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* This file declares functions and constants related to GPIO pins*/
+
+#ifndef __RPIPERIPHERALGPIO_H__
+#define __RPIPERIPHERALGPIO_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include "types.h"
+#include "wiringPi.h"
+
+extern int phy_pin[];
+
+void u8RPIDigitalSetups(uint8 pin, uint8 direction);
+void u8RPIDigitalOuts(uint8 pin, uint8 state);
+uint8 u8RPIDigitalIns(uint8 pin);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALGPIO_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPWM.h b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPWM.h
new file mode 100644
index 00000000..d463d9c9
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPWM.h
@@ -0,0 +1,31 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALPWM_H__
+#define __RPIPERIPHERALPWM_H__
+
+#include "types.h"
+#include "wiringPi.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8RPIHardPWMWrites(uint8 pin, uint16 value);
+void u8RPIHardPWMSetRanges(uint16 value);
+void u8RPIHardPWMSetModes(uint8 mode);
+void u8RPIHardPWMSetClocks(uint16 clk_divisor);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALPWM_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h
new file mode 100644
index 00000000..fc5a8d04
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALPINISR_H__
+#define __RPIPERIPHERALPINISR_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int16 i16RPIPinISRs(uint8 pin, uint8 edgetype, void (*ISRFunction)(void));
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALPINISR_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h
new file mode 100644
index 00000000..14df95b4
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h
@@ -0,0 +1,49 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALSERIAL_H__
+#define __RPIPERIPHERALSERIAL_H__
+
+#include "types.h"
+#include "wiringSerial.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int u8RPISerialSetups(char* port, int baudrate);
+void u8RPISerialCloses(int fd);
+
+void u8RPISerialSendChars(int fd, uint8 data);
+void u8RPISerialSendDatas(int fd, uint8 data);
+void i8RPISerialSendDatas(int fd, int8 data);
+void u16RPISerialSendDatas(int fd, uint16 data);
+void i16RPISerialSendDatas(int fd, int16 data);
+void sRPISerialSendDatas(int fd, float data);
+void dRPISerialSendDatas(int fd, double data);
+void u8RPISerialSendDataa(int fd, uint8* data, int size);
+void i8RPISerialSendDataa(int fd, int8* data, int size);
+void u16RPISerialSendDataa(int fd, uint16* data, int size);
+void i16RPISerialSendDataa(int fd, int16* data, int size);
+void sRPISerialSendDataa(int fd, float* data, int size);
+void dRPISerialSendDataa(int fd, double* data, int size);
+void gRPISerialSendDatas(int fd, uint8* data, int size);
+
+int16 i16RPISerialDataAvails(int fd);
+int16 i16RPISerialGetChars(int fd);
+
+void u8RPISerialFlushs(int fd);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALSERIAL_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h
new file mode 100644
index 00000000..a7b2adb4
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALTHREADING_H__
+#define __RPIPERIPHERALTHREADING_H__
+
+#include "types.h"
+#include "wiringPi.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint16 RPIThreadCreate(void *(*threadFunction)(void*));
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALTHREADING_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h
new file mode 100644
index 00000000..854073f3
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* This file declares functions and constants related to rasberrypi*/
+
+#ifndef __RPIPERIPHERALTIMING_H__
+#define __RPIPERIPHERALTIMING_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "types.h"
+#include "wiringPi.h"
+
+void u16RPIDelayMillis(uint16 time);
+void u16RPIDelayMicros(uint16 time);
+uint32 u32RPIGetMillis();
+uint32 u32RPIGetMicros();
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALTIMING_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralDigital.h b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralDigital.h
new file mode 100644
index 00000000..40a8e1a4
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralDigital.h
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_RPIPERIPHERALGPIO_H__
+#define __INT_RPIPERIPHERALGPIO_H__
+
+#include "types.h"
+#include "RPIPeripheralDigital.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_DigitalSetup(in1,in2) u8RPIDigitalSetups((uint8) in1, (uint8) in2);
+
+#define RPI_DigitalIn(in1) u8RPIDigitalIns((uint8) in1);
+
+#define RPI_DigitalOut(in1,in2) u8RPIDigitalOuts((uint8) in1, (uint8) in2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__RPIPERIPHERALGPIO_H__ */
diff --git a/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPWM.h b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPWM.h
new file mode 100644
index 00000000..8c8f4c62
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPWM.h
@@ -0,0 +1,30 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALPWM_H__
+#define __INT_RPIPERIPHERALPWM_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_HardPWMWrite(pin,value) u8RPIHardPWMWrites((uint8)pin,(uint16)value)
+#define RPI_HardPWMSetRange(value) u8RPIHardPWMSetRanges((uint16)value)
+#define RPI_HardPWMSetMode(mode) u8RPIHardPWMSetModes((uint8)mode)
+#define RPI_HardPWMSetClock(clk_divisor) u8RPIHardPWMSetClocks((uint16)clk_divisor)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALPWM_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h
new file mode 100644
index 00000000..b2c1ed16
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALPINISR_H__
+#define __INT_RPIPERIPHERALPINISR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_PinISR(pin,edge,funname) i16RPIPinISRs((uint8)pin,(uint8)edge,funname)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALPINISR_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h
new file mode 100644
index 00000000..5d53b98b
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h
@@ -0,0 +1,47 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALSERIAL_H__
+#define __INT_RPIPERIPHERALSERIAL_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_SerialSetup(port,size,baudrate) u16RPISerialSetups(port,baudrate)
+#define RPI_SerialClose(fd) u8RPISerialCloses(fd)
+
+#define u80u80RPI_SerialSendData(fd,data) u8RPISerialSendDatas(fd,data)
+#define u80i80RPI_SerialSendData(fd,data) i8RPISerialSendDatas(fd,data)
+#define u80u160RPI_SerialSendData(fd,data) u16RPISerialSendDatas(fd,data)
+#define u80i160RPI_SerialSendData(fd,data) i16RPISerialSendDatas(fd,data)
+#define u80s0RPI_SerialSendData(fd,data) sRPISerialSendDatas(fd,data)
+#define u80d0RPI_SerialSendData(fd,data) dRPISerialSendDatas(fd,data)
+
+#define u80u82RPI_SerialSendData(fd,data,size) u8RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80i82RPI_SerialSendData(fd,data,size) i8RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80u162RPI_SerialSendData(fd,data,size) u16RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80i162RPI_SerialSendData(fd,data,size) i16RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80s2RPI_SerialSendData(fd,data,size) sRPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80d2RPI_SerialSendData(fd,data,size) dRPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80g2RPI_SerialSendData(fd,data,size) gRPISerialSendDatas(fd,data,size[0]*size[1]);
+
+#define RPI_SerialDataAvail(fd) i16RPISerialDataAvails(fd)
+#define RPI_SerialGetChar(fd) i16RPISerialGetChars(fd)
+#define RPI_SerialFlush(fd) u8RPISerialFlushs(fd)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALSERIAL_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h
new file mode 100644
index 00000000..68ed6e0e
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALTHREADING_H__
+#define __INT_RPIPERIPHERALTHREADING_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_ThreadCreate(fn) RPIThreadCreate(fn);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALTHREADING_H__*/
diff --git a/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h
new file mode 100644
index 00000000..1a704655
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_RPIPERIPHERALTIMING_H__
+#define __INT_RPIPERIPHERALTIMING_H__
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_DelayMicro(in1) u16RPIDelayMicros((uint16) in1)
+#define RPI_DelayMilli(in1) u16RPIDelayMillis((uint16) in1)
+#define RPI_GetMicro() u32RPIGetMicros()
+#define RPI_GetMillis() u32RPIGetMillis()
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__RPIPERIPHERALTIMING_H__ */
diff --git a/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetClocks.c b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetClocks.c
new file mode 100644
index 00000000..d06b135c
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetClocks.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to set clock for pwm channel. Default clock is 19.2 MHz. 'clk_divisor'
+ along with range decides frequency for PWM
+ PWM frequency = 19.2 MHz / clk_divisor/ range
+ Range for clk_divisor = 1-2048
+ */
+
+#include "types.h"
+#include "RPIPeripheralPWM.h"
+
+void u8RPIHardPWMSetClocks(uint16 clk_divisor)
+{
+ pwmSetClock(clk_divisor);
+
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetModes.c b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetModes.c
new file mode 100644
index 00000000..0cca7a70
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetModes.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to set mode for PWM channel. Two modes are available
+ 0 --> balanced mode
+ 1 --> mark/space mode
+ */
+
+#include "types.h"
+#include "RPIPeripheralPWM.h"
+
+void u8RPIHardPWMSetModes(uint8 mode)
+{
+ if (mode == 1) /*mark/space mode*/
+ pwmSetMode(PWM_MODE_MS);
+ else
+ pwmSetMode(PWM_MODE_BAL);
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetRanges.c b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetRanges.c
new file mode 100644
index 00000000..b2489f59
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMSetRanges.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to assigne pwm duty to specified pin. PWM duty is decided by 'value'
+ and 'range' specified using corresponding function.
+ PWM duty = value/range
+ */
+
+#include "types.h"
+#include "RPIPeripheralPWM.h"
+
+void u8RPIHardPWMSetRanges(uint16 value)
+{
+ pwmSetRange(value);
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMWrites.c b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMWrites.c
new file mode 100644
index 00000000..ae02bf0d
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/pwm/u8RPIHardPWMWrites.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to set range for pwm channel. PWM duty is decided by 'range'
+ and 'value' specified using corresponding function.
+ PWM duty = value/range
+ */
+
+#include "types.h"
+#include "RPIPeripheralPWM.h"
+#include "RPIPeripheralDigital.h"
+
+void u8RPIHardPWMWrites(uint8 pin, uint16 value)
+{
+ pwmWrite((int)phy_pin[pin-1], value);
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c b/2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c
new file mode 100644
index 00000000..f9902550
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send double data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void dRPISerialSendDataa(int fd, double* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; count++)
+ {
+ dRPISerialSendDatas(fd, data[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c
new file mode 100644
index 00000000..39112fc2
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send double data on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void dRPISerialSendDatas(int fd, double data)
+{
+ uint8 count;
+
+ union double_bytes{
+ double double_data;
+ unsigned char bytes[sizeof(double)];
+ } in_data;
+
+ in_data.double_data = data;
+
+ for(count=0; count<sizeof(double); count++)
+ {
+ /*Send lsb first*/
+ serialPutchar(fd, (uint8) in_data.bytes[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c
new file mode 100644
index 00000000..f4ec8a85
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send string on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void gRPISerialSendDatas(int fd, uint8* data, int size)
+{
+ int count = 0;
+
+ while(data[count] != '\0')
+ {
+ serialPutchar(fd, data[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c
new file mode 100644
index 00000000..b56a8196
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to check for data availability at specified port. Returns no of
+ bytes to be read */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+int16 i16RPISerialDataAvails(int fd)
+{
+ int bytes = 0;
+ bytes = serialDataAvail(fd);
+
+ return bytes;
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c
new file mode 100644
index 00000000..18ca2a7a
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to read character from spcified serial port (file descriptor).
+ This function will block execution for 10 secs if no character is available,
+ and will return -1 in that case*/
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+int16 i16RPISerialGetChars(int fd)
+{
+ int data = 0;
+
+ data = serialGetchar(fd);
+
+ return data;
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c
new file mode 100644
index 00000000..24180f41
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 16-bit data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void i16RPISerialSendDataa(int fd, int16* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ i16RPISerialSendDatas(fd, data[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c
new file mode 100644
index 00000000..fe6fe6f4
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 16-bit byte on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void i16RPISerialSendDatas(int fd, int16 data)
+{
+ /*Send lsb first*/
+ serialPutchar(fd, (uint8) data);
+ serialPutchar(fd, (uint8) (data>>8));
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c b/2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c
new file mode 100644
index 00000000..c4dd199c
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 8-bit byte array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void i8RPISerialSendDataa(int fd, int8* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ i8RPISerialSendDatas(fd, data[count]);
+ }
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c
new file mode 100644
index 00000000..e637871f
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 8-bit byte on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void i8RPISerialSendDatas(int fd, int8 data)
+{
+ serialPutchar(fd, (uint8) data);
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c b/2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c
new file mode 100644
index 00000000..14c0bc70
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send float data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void sRPISerialSendDataa(int fd, float* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ sRPISerialSendDatas(fd, data[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c
new file mode 100644
index 00000000..ff78dd1f
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send float data on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void sRPISerialSendDatas(int fd, float data)
+{
+ uint8 count;
+
+ union float_bytes{
+ float float_data;
+ unsigned char bytes[sizeof(float)];
+ } in_data;
+ in_data.float_data = data;
+
+ for(count=0; count<sizeof(float); count++)
+ {
+ /*Send lsb first*/
+ serialPutchar(fd, (uint8) in_data.bytes[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c b/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c
new file mode 100644
index 00000000..b444047b
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 16-bit data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u16RPISerialSendDataa(int fd, uint16* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ u16RPISerialSendDatas(fd, data[count]);
+ }
+
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c
new file mode 100644
index 00000000..b4a90c29
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 16-bit data on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u16RPISerialSendDatas(int fd, uint16 data)
+{
+ /*Send lsb first*/
+ serialPutchar(fd, (uint8) data);
+ serialPutchar(fd, (uint8) (data>>8));
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSetups.c b/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSetups.c
new file mode 100644
index 00000000..cde4cba2
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u16RPISerialSetups.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to setup port with desired baud rate. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+int u16RPISerialSetups(char* port, int baudrate)
+{
+ int fd;
+
+ fd = serialOpen (port, baudrate);
+
+ return fd;
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c
new file mode 100644
index 00000000..5162d15e
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to close serial port opened. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u8RPISerialCloses(int fd)
+{
+ serialClose (fd);
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c
new file mode 100644
index 00000000..c80a92c5
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to discards data serial buffer (received as well as waiting to be sent */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u8RPISerialFlushs(int fd)
+{
+ serialFlush(fd);
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c
new file mode 100644
index 00000000..e3813514
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send 8-bit char on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u8RPISerialSendChars(int fd, uint8 data)
+{
+ serialPutchar(fd, data);
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c
new file mode 100644
index 00000000..9d097141
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 8-bit byte array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u8RPISerialSendDataa(int fd, uint8* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ u8RPISerialSendDatas(fd, data[count]);
+ }
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c
new file mode 100644
index 00000000..9edb439f
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 8-bit byte on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+void u8RPISerialSendDatas(int fd, uint8 data)
+{
+ serialPutchar(fd, data);
+
+}
diff --git a/2.3-1/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c b/2.3-1/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c
new file mode 100644
index 00000000..c05c959c
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to create thread for given function */
+
+#include "types.h"
+#include "RPIPeripheralThreading.h"
+
+uint16 RPIThreadCreate(void *(*threadFunction)(void*))
+{
+ int status;
+ status = piThreadCreate (threadFunction);
+ return status;
+}
+
diff --git a/2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c b/2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c
new file mode 100644
index 00000000..9aeeab7d
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to insert some delay in code execution. */
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+void u16RPIDelayMicros(uint16 time)
+{
+ delayMicroseconds(time);
+}
+
diff --git a/2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c b/2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c
new file mode 100644
index 00000000..26790861
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to insert some delay in code execution. */
+
+
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+void u16RPIDelayMillis(uint16 time)
+{
+ delay(time);
+
+}
+
diff --git a/2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c b/2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c
new file mode 100644
index 00000000..eb086a9f
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to get time in microsecond since first setup function called */
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+uint32 u32RPIGetMicros()
+{
+ return(micros());
+} \ No newline at end of file
diff --git a/2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c b/2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c
new file mode 100644
index 00000000..c1189753
--- /dev/null
+++ b/2.3-1/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to get time in millisecond since first setup function called */
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+uint32 u32RPIGetMillis()
+{
+ return(millis());
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvcore/imcvCreateImages.cpp b/2.3-1/src/c/imageProcessing/cvcore/imcvCreateImages.cpp
new file mode 100644
index 00000000..a04e836a
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvcore/imcvCreateImages.cpp
@@ -0,0 +1,46 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to create openCV image object from given specifications*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include <stdio.h>
+
+using namespace cv;
+using namespace std;
+
+Mat imcvCreateImages(int width, int height, char *bit_depth, uint8 no_of_ch)
+{
+ Mat img;
+ /*Create opencv matrix with given type*/
+ if (strcmp(bit_depth,"CV_8U") == 0)
+ img = Mat(height,width,CV_8U);
+ else if (strcmp(bit_depth,"CV_8S") == 0)
+ img = Mat(height,width,CV_8S);
+ else if (strcmp(bit_depth,"CV_16U") == 0)
+ img = Mat(height,width,CV_16U);
+ else if (strcmp(bit_depth,"CV_16S") == 0)
+ img = Mat(height,width,CV_16S);
+ else if (strcmp(bit_depth,"CV_32F") == 0)
+ img = Mat(height,width,CV_32F);
+ else if (strcmp(bit_depth,"CV_32S") == 0)
+ img = Mat(height,width,CV_32S);
+ else if (strcmp(bit_depth,"CV_64F") == 0)
+ img = Mat(height,width,CV_64F);
+
+
+ /*Change no of channels to specified input*/
+ img.reshape(no_of_ch);
+
+ return img;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvcore/imcvGetImgSizes.cpp b/2.3-1/src/c/imageProcessing/cvcore/imcvGetImgSizes.cpp
new file mode 100644
index 00000000..0c4e848f
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvcore/imcvGetImgSizes.cpp
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to convert image object to other color space*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+#include <stdio.h>
+
+using namespace cv;
+using namespace std;
+
+void imcvGetImgSizes(Mat src, double* imgsize)
+{
+ imgsize[0] = src.rows;
+ imgsize[1] = src.cols;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvhighgui/imcvLoadImages.cpp b/2.3-1/src/c/imageProcessing/cvhighgui/imcvLoadImages.cpp
new file mode 100644
index 00000000..bf7ff07e
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvhighgui/imcvLoadImages.cpp
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to load image object from given filename*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvhighgui.hpp"
+#include <stdio.h>
+
+Mat imcvLoadImages(char *filename, uint8 opentype)
+{
+ return (imread(filename,opentype));
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvhighgui/imcvShowImages.cpp b/2.3-1/src/c/imageProcessing/cvhighgui/imcvShowImages.cpp
new file mode 100644
index 00000000..6179c3dc
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvhighgui/imcvShowImages.cpp
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to create show an image */
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvhighgui.hpp"
+#include <stdio.h>
+
+using namespace cv;
+
+uint8 imcvShowImages(char *winname, Mat img)
+{
+ imshow(winname,img);
+
+ return (0);
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvAdaptThresholds.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvAdaptThresholds.cpp
new file mode 100644
index 00000000..927cfb30
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvAdaptThresholds.cpp
@@ -0,0 +1,47 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvAdaptThresholds(Mat src, double t_value, double maxvalue, char* AdaptiveMethod, \
+ char* ThreholdType, double blocksize, double cont)
+{
+
+ Mat dst(src.rows, src.cols, src.type());
+
+ if(strcmp(AdaptiveMethod,"ADAPTIVE_THRESH_MEAN_C") == 0)
+ {
+ if(strcmp(ThreholdType, "THRESH_BINARY") == 0)
+ adaptiveThreshold(src,dst,maxvalue,ADAPTIVE_THRESH_MEAN_C, \
+ THRESH_BINARY,blocksize,cont);
+ else if(strcmp(ThreholdType, "THRESH_BINARY_INV") == 0)
+ adaptiveThreshold(src,dst,maxvalue,ADAPTIVE_THRESH_MEAN_C, \
+ THRESH_BINARY_INV,blocksize,cont);
+ }
+ else if(strcmp(AdaptiveMethod,"ADAPTIVE_THRESH_GAUSSIAN_C") == 0)
+ {
+ if(strcmp(ThreholdType, "THRESH_BINARY") == 0)
+ adaptiveThreshold(src,dst,maxvalue,ADAPTIVE_THRESH_GAUSSIAN_C, \
+ THRESH_BINARY,blocksize,cont);
+ else if(strcmp(ThreholdType, "THRESH_BINARY_INV") == 0)
+ adaptiveThreshold(src,dst,maxvalue,ADAPTIVE_THRESH_GAUSSIAN_C, \
+ THRESH_BINARY_INV,blocksize,cont);
+ }
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvBlurs.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvBlurs.cpp
new file mode 100644
index 00000000..d5c06de9
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvBlurs.cpp
@@ -0,0 +1,55 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvBlurs(Mat src, double ksize_width, double ksize_height, double anchor_x, \
+ double anchor_y, char* border_type)
+{
+
+ /*Mat dst(src.rows, src.cols, src.type());*/
+ Mat dst = src.clone();
+
+ Point anchor = Point(anchor_x,anchor_y);
+ Size2f ksize = Size2f(ksize_width, ksize_height);
+
+ if(strcmp(border_type,"BORDER_REPLICATE") == 0)
+ {
+ blur(src,dst,ksize,anchor,BORDER_REPLICATE);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT"))
+ {
+ blur(src,dst,ksize,anchor,BORDER_REFLECT);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT_101"))
+ {
+ blur(src,dst,ksize,anchor,BORDER_REFLECT_101);
+ }
+ else if(strcmp(border_type,"BORDER_WRAP"))
+ {
+ blur(src,dst,ksize,anchor,BORDER_WRAP);
+ }
+ else if(strcmp(border_type,"BORDER_CONSTANT"))
+ {
+ blur(src,dst,ksize,anchor,BORDER_CONSTANT);
+ }
+
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvCanny.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvCanny.cpp
new file mode 100644
index 00000000..a81450bf
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvCanny.cpp
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to find edges in image */
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvCanny(Mat src, double threshold1, double threshold2, double \
+ aperture_size, double L2gradient)
+{
+
+ Mat dst = src.clone();
+
+ Canny(src, dst, threshold1, threshold2, aperture_size, L2gradient);
+
+ return dst;
+}
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvCornerHarris.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvCornerHarris.cpp
new file mode 100644
index 00000000..d6df1cc6
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvCornerHarris.cpp
@@ -0,0 +1,55 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to find edges using Harris algorithm*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvCornerHarris(Mat src, double blocksize, double ksize, double k, \
+ char* border_type)
+{
+
+ Mat dst(src.rows, src.cols, CV_32FC1);
+
+ if(strcmp(border_type,"BORDER_REPLICATE") == 0)
+ {
+ cornerHarris(src,dst,blocksize,ksize,k,BORDER_REPLICATE);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT"))
+ {
+ cornerHarris(src,dst,blocksize,ksize,k,BORDER_REFLECT);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT_101"))
+ {
+ cornerHarris(src,dst,blocksize,ksize,k,BORDER_REFLECT_101);
+ }
+ else if(strcmp(border_type,"BORDER_WRAP"))
+ {
+ cornerHarris(src,dst,blocksize,ksize,k,BORDER_WRAP);
+ }
+ else if(strcmp(border_type,"BORDER_CONSTANT"))
+ {
+ cornerHarris(src,dst,blocksize,ksize,k,BORDER_CONSTANT);
+ }
+ else if(strcmp(border_type,"BORDER_DEFAULT"))
+ {
+ cornerHarris(src,dst,blocksize,ksize,k,BORDER_DEFAULT);
+ }
+
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvCvtColors.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvCvtColors.cpp
new file mode 100644
index 00000000..eaad278f
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvCvtColors.cpp
@@ -0,0 +1,148 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to convert image object to other color space*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+#include <stdio.h>
+
+using namespace cv;
+
+Mat imcvCvtColors(Mat src, char* code)
+{
+ Mat dst(src.rows, src.cols, src.type());
+
+ /*RGB <--> Gray*/
+ if(strcmp(code,"CV_RGB2GRAY") == 0)
+ {cvtColor(src,dst,CV_RGB2GRAY);}
+ else if(strcmp(code,"CV_BGR2GRAY") == 0)
+ {cvtColor(src,dst,CV_BGR2GRAY);}
+ else if(strcmp(code,"CV_GRAY2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_GRAY2RGB);}
+ else if(strcmp(code,"CV_GRAY2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_GRAY2BGR);}
+
+ /*RGB <--> CIE XYZ.Rec 709 with D65 white point*/
+ else if(strcmp(code,"CV_RGB2XYZ") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_RGB2XYZ);}
+ else if(strcmp(code,"CV_BGR2XYZ") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BGR2XYZ);}
+ else if(strcmp(code,"CV_XYZ2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_XYZ2RGB);}
+ else if(strcmp(code,"CV_XYZ2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_XYZ2BGR);}
+
+ /*RGB <--> YCrCb JPEG (or YCC) */
+ else if(strcmp(code,"CV_BGR2YCrCb") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BGR2YCrCb);}
+ else if(strcmp(code,"CV_RGB2YCrCb") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_RGB2YCrCb);}
+ else if(strcmp(code,"CV_YCrCb2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_YCrCb2BGR);}
+ else if(strcmp(code,"CV_YCrCb2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_YCrCb2RGB);}
+
+ /*RGB <--> HSV */
+ else if(strcmp(code,"CV_BGR2HSV") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BGR2HSV);}
+ else if(strcmp(code,"CV_RGB2HSV") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_RGB2HSV);}
+ else if(strcmp(code,"CV_HSV2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_HSV2BGR);}
+ else if(strcmp(code,"CV_HSV2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_HSV2RGB);}
+
+ /*RGB <--> HLS */
+ else if(strcmp(code,"CV_BGR2HLS") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BGR2HLS);}
+ else if(strcmp(code,"CV_RGB2HLS") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_RGB2HLS);}
+ else if(strcmp(code,"CV_HLS2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_HLS2BGR);}
+ else if(strcmp(code,"CV_HLS2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_HLS2RGB);}
+
+ /*RGB <--> CIE L*a*b* */
+ else if(strcmp(code,"CV_BGR2Lab") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BGR2Lab);}
+ else if(strcmp(code,"CV_RGB2Lab") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_RGB2Lab);}
+ else if(strcmp(code,"CV_Lab2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_Lab2BGR);}
+ else if(strcmp(code,"CV_Lab2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_Lab2RGB);}
+
+ /*RGB <--> CIE L*u*v* */
+ else if(strcmp(code,"CV_BGR2Luv") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BGR2Luv);}
+ else if(strcmp(code,"CV_RGB2Luv") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_RGB2Luv);}
+ else if(strcmp(code,"CV_Luv2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_Luv2BGR);}
+ else if(strcmp(code,"CV_Luv2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_Luv2RGB);}
+
+ /*Bayer <--> RGB */
+ else if(strcmp(code,"CV_BayerBG2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerBG2BGR);}
+ else if(strcmp(code,"CV_BayerGB2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerGB2BGR);}
+ else if(strcmp(code,"CV_BayerRG2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerRG2BGR);}
+ else if(strcmp(code,"CV_BayerGR2BGR") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerGR2BGR);}
+ else if(strcmp(code,"CV_BayerBG2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerBG2RGB);}
+ else if(strcmp(code,"CV_BayerGB2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerGB2RGB);}
+ else if(strcmp(code,"CV_BayerRG2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerRG2RGB);}
+ else if(strcmp(code,"CV_BayerBG2RGB") == 0)
+ {dst.reshape(3);
+ cvtColor(src,dst,CV_BayerGR2RGB);}
+ return dst;
+}
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvDilate.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvDilate.cpp
new file mode 100644
index 00000000..1659cf58
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvDilate.cpp
@@ -0,0 +1,71 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvDilate(Mat src, char* dilation_type, double size, double iterations, \
+ char* border_type, double border_value)
+{
+
+ /*Mat dst(src.rows, src.cols, src.type());*/
+ Mat dst = src.clone();
+ int dilate_type =0;
+
+ if(strcmp(dilation_type,"MORPH_RECT") == 0)
+ {
+ dilate_type = MORPH_RECT;
+ }
+ else if(strcmp(dilation_type,"MORPH_CROSS") == 0)
+ {
+ dilate_type = MORPH_CROSS;
+ }
+ else if(strcmp(dilation_type,"MORPH_ELLIPSE") == 0)
+ {
+ dilate_type = MORPH_ELLIPSE;
+ }
+
+
+ Mat element = getStructuringElement(dilate_type, Size(size,size), \
+ Point((size-1)/2,(size-1)/2));
+
+ if(strcmp(border_type,"BORDER_REPLICATE") == 0)
+ {
+ dilate(src, dst, element, Point(-1,-1), iterations, BORDER_REPLICATE);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT"))
+ {
+ dilate(src, dst, element, Point(-1,-1), iterations, BORDER_REFLECT);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT_101"))
+ {
+ dilate(src, dst, element, Point(-1,-1), iterations,BORDER_REFLECT_101);
+ }
+ else if(strcmp(border_type,"BORDER_WRAP"))
+ {
+ dilate(src, dst, element, Point(-1,-1), iterations, BORDER_WRAP);
+ }
+ else if(strcmp(border_type,"BORDER_CONSTANT"))
+ {
+ dilate(src, dst, element, Point(-1,-1), iterations, BORDER_CONSTANT, \
+ Scalar(border_value));
+ }
+
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvDistanceTransforms.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvDistanceTransforms.cpp
new file mode 100644
index 00000000..e53292a5
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvDistanceTransforms.cpp
@@ -0,0 +1,41 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvDistanceTransforms(Mat src, char* distance_type, int mask_size )
+{
+
+ Mat dst(src.rows, src.cols, CV_32F);
+
+ if(strcmp(distance_type,"CV_DIST_L1") == 0)
+ {
+ distanceTransform(src,dst,CV_DIST_L1,mask_size);
+ }
+ else if(strcmp(distance_type,"CV_DIST_L2") == 0)
+ {
+ distanceTransform(src,dst,CV_DIST_L2,mask_size);
+ }
+ else if(strcmp(distance_type,"CV_DIST_C") == 0)
+ {
+ distanceTransform(src,dst,CV_DIST_C,mask_size);
+ }
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvErode.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvErode.cpp
new file mode 100644
index 00000000..64bae010
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvErode.cpp
@@ -0,0 +1,71 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvErode(Mat src, char* erosion_type, double size, double iterations, \
+ char* border_type, double border_value)
+{
+
+ /*Mat dst(src.rows, src.cols, src.type());*/
+ Mat dst = src.clone();
+ int erode_type =0;
+
+ if(strcmp(erosion_type,"MORPH_RECT") == 0)
+ {
+ erode_type = MORPH_RECT;
+ }
+ else if(strcmp(erosion_type,"MORPH_CROSS") == 0)
+ {
+ erode_type = MORPH_CROSS;
+ }
+ else if(strcmp(erosion_type,"MORPH_ELLIPSE") == 0)
+ {
+ erode_type = MORPH_ELLIPSE;
+ }
+
+
+ Mat element = getStructuringElement(erode_type, Size(size,size), \
+ Point((size-1)/2,(size-1)/2));
+
+ if(strcmp(border_type,"BORDER_REPLICATE") == 0)
+ {
+ erode(src, dst, element, Point(-1,-1), iterations, BORDER_REPLICATE);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT"))
+ {
+ erode(src, dst, element, Point(-1,-1), iterations, BORDER_REFLECT);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT_101"))
+ {
+ erode(src, dst, element, Point(-1,-1), iterations, BORDER_REFLECT_101);
+ }
+ else if(strcmp(border_type,"BORDER_WRAP"))
+ {
+ erode(src, dst, element, Point(-1,-1), iterations, BORDER_WRAP);
+ }
+ else if(strcmp(border_type,"BORDER_CONSTANT"))
+ {
+ erode(src, dst, element, Point(-1,-1), iterations, BORDER_CONSTANT, \
+ Scalar(border_value));
+ }
+
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvGaussianBlurs.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvGaussianBlurs.cpp
new file mode 100644
index 00000000..3c8c481f
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvGaussianBlurs.cpp
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvGaussianBlurs(Mat src, double ksize_width, double ksize_height,
+ double sigma_x, double sigma_y, char* border_type)
+{
+
+ /*Mat dst(src.rows, src.cols, src.type());*/
+ Mat dst = src.clone();
+
+ Size2f ksize = Size2f(ksize_width, ksize_height);
+
+ if(strcmp(border_type,"BORDER_REPLICATE") == 0)
+ {
+ GaussianBlur(src,dst,ksize,sigma_x,sigma_y,BORDER_REPLICATE);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT"))
+ {
+ GaussianBlur(src,dst,ksize,sigma_x,sigma_y,BORDER_REFLECT);
+ }
+ else if(strcmp(border_type,"BORDER_REFLECT_101"))
+ {
+ GaussianBlur(src,dst,ksize,sigma_x,sigma_y,BORDER_REFLECT_101);
+ }
+ else if(strcmp(border_type,"BORDER_WRAP"))
+ {
+ GaussianBlur(src,dst,ksize,sigma_x,sigma_y,BORDER_WRAP);
+ }
+ else if(strcmp(border_type,"BORDER_CONSTANT"))
+ {
+ GaussianBlur(src,dst,ksize,sigma_x,sigma_y,BORDER_CONSTANT);
+ }
+
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvMedianBlurs.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvMedianBlurs.cpp
new file mode 100644
index 00000000..d8e90ff9
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvMedianBlurs.cpp
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to adaptive threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+
+
+using namespace cv;
+
+Mat imcvMedianBlurs(Mat src, double ksize)
+{
+
+ /*Mat dst(src.rows, src.cols, src.type());*/
+ Mat dst = src.clone();
+
+ medianBlur(src,dst,(int)ksize);
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/cvimgproc/imcvThresholds.cpp b/2.3-1/src/c/imageProcessing/cvimgproc/imcvThresholds.cpp
new file mode 100644
index 00000000..9664a44c
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/cvimgproc/imcvThresholds.cpp
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to threshold a gray scale image*/
+
+#include "types.h"
+#include "cvcore.hpp"
+#include "cvimgproc.hpp"
+#include <stdio.h>
+
+using namespace cv;
+
+Mat imcvThresholds(Mat src, double t_value, double maxvalue, char* type)
+{
+ Mat dst(src.rows, src.cols, src.type());
+
+ if(strcmp(type,"THRESH_BINARY") == 0)
+ threshold(src,dst,t_value,maxvalue,THRESH_BINARY);
+ if(strcmp(type,"THRESH_BINARY_INV") == 0)
+ threshold(src,dst,t_value,maxvalue,THRESH_BINARY_INV);
+ if(strcmp(type,"THRESH_TRUNC") == 0)
+ threshold(src,dst,t_value,maxvalue,THRESH_TRUNC);
+ if(strcmp(type,"THRESH_TOZERO") == 0)
+ threshold(src,dst,t_value,maxvalue,THRESH_TOZERO);
+ if(strcmp(type,"THRESH_TOZERO_INV") == 0)
+ threshold(src,dst,t_value,maxvalue,THRESH_TOZERO_INV);
+
+ return dst;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/imageProcessing/includes/cvcore.hpp b/2.3-1/src/c/imageProcessing/includes/cvcore.hpp
new file mode 100644
index 00000000..78876f7a
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/includes/cvcore.hpp
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CVCORE_H__
+#define __CVCORE_H__
+
+
+#include "types.h"
+#include "opencv2/core/core.hpp"
+
+using namespace cv;
+
+Mat imcvCreateImages(int width, int height, char *bit_depth, uint8 no_of_ch);
+void imcvGetImgSizes(Mat src, double* imgsize);
+
+
+#endif /*__CVCORE_H__*/
diff --git a/2.3-1/src/c/imageProcessing/includes/cvhighgui.hpp b/2.3-1/src/c/imageProcessing/includes/cvhighgui.hpp
new file mode 100644
index 00000000..167cb63a
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/includes/cvhighgui.hpp
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CVHIGHGUI_H__
+#define __CVHIGHGUI_H__
+
+#include "types.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui.hpp"
+
+using namespace cv;
+
+Mat imcvLoadImages(char *filename, uint8 opentype);
+uint8 imcvShowImages(char *winname, Mat img);
+
+
+#endif /*__CVCORE_H__*/
diff --git a/2.3-1/src/c/imageProcessing/includes/cvimgproc.hpp b/2.3-1/src/c/imageProcessing/includes/cvimgproc.hpp
new file mode 100644
index 00000000..8fdf3e39
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/includes/cvimgproc.hpp
@@ -0,0 +1,52 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CVIMGPROC_H__
+#define __CVIMGPROC_H__
+
+#include "types.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+
+using namespace cv;
+
+Mat imcvCvtColors(Mat src, char* code);
+
+Mat imcvThresholds(Mat src, double threshold, double maxvalue, char* type);
+
+Mat imcvAdaptThresholds(Mat src, double t_value, double maxvalue, char* AdaptiveMethod, \
+ char* ThreholdType, double blocksize, double C);
+
+Mat imcvDistanceTransforms(Mat src, char* distance_type, int mask_size);
+
+
+Mat imcvBlurs(Mat src, double ksize_width, double ksize_height, double anchor_x, \
+ double anchor_y, char* border_type);
+
+Mat imcvGaussianBlurs(Mat src, double ksize_width, double ksize_height, double sigma_x, \
+ double sigma_y, char* border_type);
+
+Mat imcvMedianBlurs(Mat src, double ksize);
+
+Mat imcvErode(Mat src, char* erosion_type, double size, double iterations, \
+ char* border_type, double border_value);
+
+Mat imcvDilate(Mat src, char* dilation_type, double size, double iterations, \
+ char* border_type, double border_value);
+
+Mat imcvCanny(Mat src, double threshold1, double threshold2, double \
+ aperture_size, double L2gradient);
+
+Mat imcvCornerHarris(Mat src, double blocksize, double ksize, double k, \
+ char* border_type);
+
+#endif /*__CVIMGPROC_H__*/
diff --git a/2.3-1/src/c/imageProcessing/interfaces/int_cvcore.hpp b/2.3-1/src/c/imageProcessing/interfaces/int_cvcore.hpp
new file mode 100644
index 00000000..82c1313e
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/interfaces/int_cvcore.hpp
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CVCORE_H__
+#define __INT_CVCORE_H__
+
+
+#include "types.h"
+#include "cvcore.hpp"
+
+#define d0d0g2d0CV_CreateImagemt0(width,height,depth,depth_size,no_of_ch) \
+ imcvCreateImages(width,height,depth,no_of_ch)
+
+#define mt0CV_GetImgSized2(img,imgsize) imcvGetImgSizes(img,imgsize)
+
+
+#endif /*__INT_CVCORE_H__*/
diff --git a/2.3-1/src/c/imageProcessing/interfaces/int_cvhighgui.hpp b/2.3-1/src/c/imageProcessing/interfaces/int_cvhighgui.hpp
new file mode 100644
index 00000000..60d6ffdd
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/interfaces/int_cvhighgui.hpp
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CVHIGHGUI_H__
+#define __INT_CVHIGHGUI_H__
+
+
+#include "types.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui.hpp"
+
+//#define g2d0CV_LoadImageim0(filename,name_size,loadtype) imcvLoadImages(filename,loadtype)
+#define g2d0CV_LoadImagemt0(filename,name_size,loadtype) imread(filename,loadtype)
+#define g2mt0CV_ShowImageu80(winname,win_size,img) imshow(winname,img)
+#define mt0CV_ShowImage(img) imshow("",img)
+
+#define d0CV_WaitKey(delay) waitKey((int)delay)
+#define s80CV_WaitKey(delay) waitKey((int)delay)
+#define u80CV_WaitKey(delay) waitKey((int)delay)
+#define i80CV_WaitKey(delay) waitKey((int)delay)
+#define u160CV_WaitKey(delay) waitKey((int)delay)
+#define i160CV_WaitKey(delay) waitKey((int)delay)
+
+#define g2mt0CV_SaveImage(filename,name_size,img) imwrite(filename,img)
+
+#endif /*__INT_CVHIGHGUI_H__*/
diff --git a/2.3-1/src/c/imageProcessing/interfaces/int_cvimgproc.hpp b/2.3-1/src/c/imageProcessing/interfaces/int_cvimgproc.hpp
new file mode 100644
index 00000000..9b1a85c9
--- /dev/null
+++ b/2.3-1/src/c/imageProcessing/interfaces/int_cvimgproc.hpp
@@ -0,0 +1,71 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CVIMGPROC_H__
+#define __INT_CVIMGPROC_H__
+
+#include "types.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+
+#define mt0g2CV_CvtColormt0(src,code,code_size) imcvCvtColors(src,code)
+
+#define mt0d0d0g2CV_Thresholdmt0(src,threshold,maxvalue,thresh_type, \
+ type_size) imcvThresholds(src,threshold,maxvalue,thresh_type)
+
+#define mt0d0g2g2d0d0CV_AdaptiveThresholdmt0(src,maxvalue,adaptmethod, \
+ adapt_size,thresh_type,blocksize,C) imcvAdaaptThresholds(src, \
+ maxvalue,adaptmethod,thresh_type,blocksize,C)
+
+#define mt0g2d0CV_DistanceTransform(src,distance_type,type_size,mask_size) \
+ imcvDistanceTransform(src,distance_type,mask_size)
+
+#define mt0d0d0d0d0g2CV_Blurmt0(src,ksize_width,ksize_height,anchor_x, \
+ anchor_y,border_type,type_size) imcvBlurs(src,ksize_width, \
+ ksize_height,anchor_x,anchor_y,border_type)
+
+#define mt0d0d0d0d0g2CV_GaussianBlurmt0(src,ksize_width,ksize_height,sigma_x, \
+ sigma_y,border_type,type_size) imcvGaussianBlurs(src,ksize_width, \
+ ksize_height,sigma_x,sigma_y,border_type)
+
+#define mt0d0CV_MedianBlurmt0(src,ksize) imcvMedianBlurs(src,ksize)
+
+#define mt0g2d0CV_Erodemt0(src,erosion_type,type_size,erosion_size) \
+ imcvErode(src,erosion_type,erosion_size,1,"BORDER_CONSTANT",0)
+
+#define mt0g2d0d0g2d0CV_Erodemt0(src,erosion_type,type_size,erosion_size, \
+ iterations,border_type,bor_size,border_value) \
+ imcvErode(src,erosion_type,erosion_size,iterations,border_type, \
+ border_value)
+
+#define mt0g2d0CV_Dilatemt0(src,dilation_type,type_size,dilation_size) \
+ imcvDilate(src,dilation_type,dilation_size,1,"BORDER_CONSTANT",0)
+
+#define mt0g2d0d0g2d0CV_Dilatemt0(src,dilation_type,type_size,dilation_size, \
+ iterations,border_type,bor_size,border_value) \
+ imcvDilate(src,dilation_type,dilation_size,iterations,border_type, \
+ border_value)
+
+#define mt0d0d0d0d0CV_Cannymt0(src,threshold1,threshold2,aperture_size, \
+ L2gradient) imcvCanny(src,threshold1,threshold2,aperture_size, \
+ L2gradient)
+
+#define mt0d0d0CV_Cannymt0(src,threshold1,threshold2) imcvCanny(src, \
+ threshold1,threshold2,3,0)
+
+#define mt0d0d0d0g2CV_CornerHarrismt0(src,blocksize,ksize,k,border_type, \
+ type_size) imcvCornerHarris(src,blocksize,ksize,k,border_type)
+
+#define mt0d0d0d0CV_CornerHarrismt0(src,blocksize,ksize,k) \
+ imcvCornerHarris(src,blocksize,ksize,k,"BORDER_DEFAULT")
+
+#endif /*__INT_CVIMGPROC_H__*/
diff --git a/2.3-1/src/c/implicitList/Makefile.am b/2.3-1/src/c/implicitList/Makefile.am
new file mode 100644
index 00000000..1f534798
--- /dev/null
+++ b/2.3-1/src/c/implicitList/Makefile.am
@@ -0,0 +1,47 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libImplicitlist_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I .
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libImplicitlist.la
+
+HEAD = implicitList.h
+
+libImplicitlist_la_SOURCES = $(HEAD) \
+ simplicitLists.c \
+ dimplicitLists.c \
+ cimplicitLists.c \
+ zimplicitLists.c
+
+check_PROGRAMS = testFloatImplicitList \
+ testDoubleImplicitList
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libImplicitlist.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I .
+
+testFloatImplicitList_SOURCES = testFloatImplicitList.c
+testFloatImplicitList_LDADD = $(check_LDADD)
+testFloatImplicitList_CFLAGS = $(check_INCLUDES)
+
+testDoubleImplicitList_SOURCES = testDoubleImplicitList.c
+testDoubleImplicitList_LDADD = $(check_LDADD)
+testDoubleImplicitList_CFLAGS = $(check_INCLUDES)
+
+TESTS = testFloatImplicitList \
+ testDoubleImplicitList
diff --git a/2.3-1/src/c/implicitList/Makefile.in b/2.3-1/src/c/implicitList/Makefile.in
new file mode 100644
index 00000000..7a9519c3
--- /dev/null
+++ b/2.3-1/src/c/implicitList/Makefile.in
@@ -0,0 +1,749 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatImplicitList$(EXEEXT) \
+ testDoubleImplicitList$(EXEEXT)
+TESTS = testFloatImplicitList$(EXEEXT) testDoubleImplicitList$(EXEEXT)
+subdir = src/c/implicitList
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libImplicitlist_la_LIBADD =
+am__objects_1 =
+am_libImplicitlist_la_OBJECTS = $(am__objects_1) \
+ libImplicitlist_la-simplicitLists.lo \
+ libImplicitlist_la-dimplicitLists.lo \
+ libImplicitlist_la-cimplicitLists.lo \
+ libImplicitlist_la-zimplicitLists.lo
+libImplicitlist_la_OBJECTS = $(am_libImplicitlist_la_OBJECTS)
+libImplicitlist_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libImplicitlist_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testDoubleImplicitList_OBJECTS = \
+ testDoubleImplicitList-testDoubleImplicitList.$(OBJEXT)
+testDoubleImplicitList_OBJECTS = $(am_testDoubleImplicitList_OBJECTS)
+testDoubleImplicitList_DEPENDENCIES = $(check_LDADD)
+testDoubleImplicitList_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleImplicitList_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatImplicitList_OBJECTS = \
+ testFloatImplicitList-testFloatImplicitList.$(OBJEXT)
+testFloatImplicitList_OBJECTS = $(am_testFloatImplicitList_OBJECTS)
+testFloatImplicitList_DEPENDENCIES = $(check_LDADD)
+testFloatImplicitList_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatImplicitList_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libImplicitlist_la_SOURCES) \
+ $(testDoubleImplicitList_SOURCES) \
+ $(testFloatImplicitList_SOURCES)
+DIST_SOURCES = $(libImplicitlist_la_SOURCES) \
+ $(testDoubleImplicitList_SOURCES) \
+ $(testFloatImplicitList_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libImplicitlist_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I .
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libImplicitlist.la
+HEAD = implicitList.h
+libImplicitlist_la_SOURCES = $(HEAD) \
+ simplicitLists.c \
+ dimplicitLists.c \
+ cimplicitLists.c \
+ zimplicitLists.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libImplicitlist.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I .
+
+testFloatImplicitList_SOURCES = testFloatImplicitList.c
+testFloatImplicitList_LDADD = $(check_LDADD)
+testFloatImplicitList_CFLAGS = $(check_INCLUDES)
+testDoubleImplicitList_SOURCES = testDoubleImplicitList.c
+testDoubleImplicitList_LDADD = $(check_LDADD)
+testDoubleImplicitList_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/implicitList/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/implicitList/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libImplicitlist.la: $(libImplicitlist_la_OBJECTS) $(libImplicitlist_la_DEPENDENCIES)
+ $(libImplicitlist_la_LINK) -rpath $(pkglibdir) $(libImplicitlist_la_OBJECTS) $(libImplicitlist_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleImplicitList$(EXEEXT): $(testDoubleImplicitList_OBJECTS) $(testDoubleImplicitList_DEPENDENCIES)
+ @rm -f testDoubleImplicitList$(EXEEXT)
+ $(testDoubleImplicitList_LINK) $(testDoubleImplicitList_OBJECTS) $(testDoubleImplicitList_LDADD) $(LIBS)
+testFloatImplicitList$(EXEEXT): $(testFloatImplicitList_OBJECTS) $(testFloatImplicitList_DEPENDENCIES)
+ @rm -f testFloatImplicitList$(EXEEXT)
+ $(testFloatImplicitList_LINK) $(testFloatImplicitList_OBJECTS) $(testFloatImplicitList_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libImplicitlist_la-cimplicitLists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libImplicitlist_la-dimplicitLists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libImplicitlist_la-simplicitLists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libImplicitlist_la-zimplicitLists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libImplicitlist_la-simplicitLists.lo: simplicitLists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -MT libImplicitlist_la-simplicitLists.lo -MD -MP -MF $(DEPDIR)/libImplicitlist_la-simplicitLists.Tpo -c -o libImplicitlist_la-simplicitLists.lo `test -f 'simplicitLists.c' || echo '$(srcdir)/'`simplicitLists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libImplicitlist_la-simplicitLists.Tpo $(DEPDIR)/libImplicitlist_la-simplicitLists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='simplicitLists.c' object='libImplicitlist_la-simplicitLists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -c -o libImplicitlist_la-simplicitLists.lo `test -f 'simplicitLists.c' || echo '$(srcdir)/'`simplicitLists.c
+
+libImplicitlist_la-dimplicitLists.lo: dimplicitLists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -MT libImplicitlist_la-dimplicitLists.lo -MD -MP -MF $(DEPDIR)/libImplicitlist_la-dimplicitLists.Tpo -c -o libImplicitlist_la-dimplicitLists.lo `test -f 'dimplicitLists.c' || echo '$(srcdir)/'`dimplicitLists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libImplicitlist_la-dimplicitLists.Tpo $(DEPDIR)/libImplicitlist_la-dimplicitLists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dimplicitLists.c' object='libImplicitlist_la-dimplicitLists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -c -o libImplicitlist_la-dimplicitLists.lo `test -f 'dimplicitLists.c' || echo '$(srcdir)/'`dimplicitLists.c
+
+libImplicitlist_la-cimplicitLists.lo: cimplicitLists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -MT libImplicitlist_la-cimplicitLists.lo -MD -MP -MF $(DEPDIR)/libImplicitlist_la-cimplicitLists.Tpo -c -o libImplicitlist_la-cimplicitLists.lo `test -f 'cimplicitLists.c' || echo '$(srcdir)/'`cimplicitLists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libImplicitlist_la-cimplicitLists.Tpo $(DEPDIR)/libImplicitlist_la-cimplicitLists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cimplicitLists.c' object='libImplicitlist_la-cimplicitLists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -c -o libImplicitlist_la-cimplicitLists.lo `test -f 'cimplicitLists.c' || echo '$(srcdir)/'`cimplicitLists.c
+
+libImplicitlist_la-zimplicitLists.lo: zimplicitLists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -MT libImplicitlist_la-zimplicitLists.lo -MD -MP -MF $(DEPDIR)/libImplicitlist_la-zimplicitLists.Tpo -c -o libImplicitlist_la-zimplicitLists.lo `test -f 'zimplicitLists.c' || echo '$(srcdir)/'`zimplicitLists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libImplicitlist_la-zimplicitLists.Tpo $(DEPDIR)/libImplicitlist_la-zimplicitLists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zimplicitLists.c' object='libImplicitlist_la-zimplicitLists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libImplicitlist_la_CFLAGS) $(CFLAGS) -c -o libImplicitlist_la-zimplicitLists.lo `test -f 'zimplicitLists.c' || echo '$(srcdir)/'`zimplicitLists.c
+
+testDoubleImplicitList-testDoubleImplicitList.o: testDoubleImplicitList.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleImplicitList_CFLAGS) $(CFLAGS) -MT testDoubleImplicitList-testDoubleImplicitList.o -MD -MP -MF $(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Tpo -c -o testDoubleImplicitList-testDoubleImplicitList.o `test -f 'testDoubleImplicitList.c' || echo '$(srcdir)/'`testDoubleImplicitList.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Tpo $(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleImplicitList.c' object='testDoubleImplicitList-testDoubleImplicitList.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleImplicitList_CFLAGS) $(CFLAGS) -c -o testDoubleImplicitList-testDoubleImplicitList.o `test -f 'testDoubleImplicitList.c' || echo '$(srcdir)/'`testDoubleImplicitList.c
+
+testDoubleImplicitList-testDoubleImplicitList.obj: testDoubleImplicitList.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleImplicitList_CFLAGS) $(CFLAGS) -MT testDoubleImplicitList-testDoubleImplicitList.obj -MD -MP -MF $(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Tpo -c -o testDoubleImplicitList-testDoubleImplicitList.obj `if test -f 'testDoubleImplicitList.c'; then $(CYGPATH_W) 'testDoubleImplicitList.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleImplicitList.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Tpo $(DEPDIR)/testDoubleImplicitList-testDoubleImplicitList.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleImplicitList.c' object='testDoubleImplicitList-testDoubleImplicitList.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleImplicitList_CFLAGS) $(CFLAGS) -c -o testDoubleImplicitList-testDoubleImplicitList.obj `if test -f 'testDoubleImplicitList.c'; then $(CYGPATH_W) 'testDoubleImplicitList.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleImplicitList.c'; fi`
+
+testFloatImplicitList-testFloatImplicitList.o: testFloatImplicitList.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatImplicitList_CFLAGS) $(CFLAGS) -MT testFloatImplicitList-testFloatImplicitList.o -MD -MP -MF $(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Tpo -c -o testFloatImplicitList-testFloatImplicitList.o `test -f 'testFloatImplicitList.c' || echo '$(srcdir)/'`testFloatImplicitList.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Tpo $(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatImplicitList.c' object='testFloatImplicitList-testFloatImplicitList.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatImplicitList_CFLAGS) $(CFLAGS) -c -o testFloatImplicitList-testFloatImplicitList.o `test -f 'testFloatImplicitList.c' || echo '$(srcdir)/'`testFloatImplicitList.c
+
+testFloatImplicitList-testFloatImplicitList.obj: testFloatImplicitList.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatImplicitList_CFLAGS) $(CFLAGS) -MT testFloatImplicitList-testFloatImplicitList.obj -MD -MP -MF $(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Tpo -c -o testFloatImplicitList-testFloatImplicitList.obj `if test -f 'testFloatImplicitList.c'; then $(CYGPATH_W) 'testFloatImplicitList.c'; else $(CYGPATH_W) '$(srcdir)/testFloatImplicitList.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Tpo $(DEPDIR)/testFloatImplicitList-testFloatImplicitList.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatImplicitList.c' object='testFloatImplicitList-testFloatImplicitList.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatImplicitList_CFLAGS) $(CFLAGS) -c -o testFloatImplicitList-testFloatImplicitList.obj `if test -f 'testFloatImplicitList.c'; then $(CYGPATH_W) 'testFloatImplicitList.c'; else $(CYGPATH_W) '$(srcdir)/testFloatImplicitList.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/implicitList/cimplicitLists.c b/2.3-1/src/c/implicitList/cimplicitLists.c
new file mode 100644
index 00000000..3f5dc482
--- /dev/null
+++ b/2.3-1/src/c/implicitList/cimplicitLists.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "implicitList.h"
+
+void cimplicitLists(floatComplex start, floatComplex step,floatComplex end, float *out)
+{
+ simplicitLists(creals(start), creals(step), creals(end), out);
+}
diff --git a/2.3-1/src/c/implicitList/dimplicitLists.c b/2.3-1/src/c/implicitList/dimplicitLists.c
new file mode 100644
index 00000000..a06f91e1
--- /dev/null
+++ b/2.3-1/src/c/implicitList/dimplicitLists.c
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "implicitList.h"
+
+void dimplicitLists(double start, double step, double end, double *out)
+{
+ int i = 0;
+ int iNbElements = 0;
+ if (start <= end)
+ {
+ if (start < start + step)
+ {
+ iNbElements = (int)(floor((end - start) / step) + 1);
+ out[0] = start;
+ }
+ }
+ else
+ {
+ if (start > start + step)
+ {
+ iNbElements = (int)(floor((start - end) / step) + 1);
+ out[0] = start;
+ }
+ }
+
+ for (i = 1 ; i < iNbElements ; ++i)
+ {
+ start += step;
+ out[i] = start;
+ }
+}
diff --git a/2.3-1/src/c/implicitList/dynlib_implicitlist.h b/2.3-1/src/c/implicitList/dynlib_implicitlist.h
new file mode 100644
index 00000000..297c64b3
--- /dev/null
+++ b/2.3-1/src/c/implicitList/dynlib_implicitlist.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_IMPLICITLIST_H__
+#define __DYNLIB_IMPLICITLIST_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if IMPLICITLIST_EXPORTS
+ #define EXTERN_IMPLIST __declspec (dllexport)
+ #else
+ #define EXTERN_IMPLIST __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_IMPLIST
+#endif
+
+#endif /* __DYNLIB_IMPLICITLIST_H__ */
diff --git a/2.3-1/src/c/implicitList/implicitList.h b/2.3-1/src/c/implicitList/implicitList.h
new file mode 100644
index 00000000..9de2e0ec
--- /dev/null
+++ b/2.3-1/src/c/implicitList/implicitList.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __IMPLICITLIST_H__
+#define __IMPLICITLIST_H__
+
+#include "dynlib_implicitlist.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Create implicit Lists with scilab syntax
+** start:step:end
+** or start:end <=> start:1:end
+*/
+
+EXTERN_IMPLIST void simplicitLists(float start, float step, float end, float *out);
+
+EXTERN_IMPLIST void dimplicitLists(double start, double step, double end, double *out);
+
+EXTERN_IMPLIST void cimplicitLists(floatComplex start, floatComplex step, floatComplex end, float *out);
+
+EXTERN_IMPLIST void zimplicitLists(doubleComplex start, doubleComplex step, doubleComplex end, double *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__IMPLICITLIST_H__ */
diff --git a/2.3-1/src/c/implicitList/implicitList.vcxproj b/2.3-1/src/c/implicitList/implicitList.vcxproj
new file mode 100644
index 00000000..6b4ccc28
--- /dev/null
+++ b/2.3-1/src/c/implicitList/implicitList.vcxproj
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{4C99D2F9-1AA2-460D-B9B8-7D44A5F9E7CD}</ProjectGuid>
+ <RootNamespace>implicitList</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IMPLICITLIST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IMPLICITLIST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;IMPLICITLIST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;IMPLICITLIST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="cimplicitLists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dimplicitLists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="simplicitLists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="zimplicitLists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="dynlib_implicitlist.h" />
+ <ClInclude Include="implicitList.h" />
+ <ClInclude Include="int_OpColon.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/implicitList/implicitList.vcxproj.filters b/2.3-1/src/c/implicitList/implicitList.vcxproj.filters
new file mode 100644
index 00000000..f066cfce
--- /dev/null
+++ b/2.3-1/src/c/implicitList/implicitList.vcxproj.filters
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="cimplicitLists.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="dimplicitLists.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="simplicitLists.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="zimplicitLists.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="dynlib_implicitlist.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="implicitList.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="int_OpColon.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Makefile.am" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/implicitList/int_OpColon.h b/2.3-1/src/c/implicitList/int_OpColon.h
new file mode 100644
index 00000000..af84c2f4
--- /dev/null
+++ b/2.3-1/src/c/implicitList/int_OpColon.h
@@ -0,0 +1,101 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPCOLON_H__
+#define __INT_OPCOLON_H__
+
+#define s0s0OpColons0(in1,in2) in1
+
+#define d0d0OpColond0(in1,in2) in1
+
+#define c0c0OpColons0(in1,in2) in1
+
+#define z0z0OpColond0(in1,in2) in1
+
+
+
+#define s0s0OpColons2(in1,in2,out) simplicitLists(in1,1.0,in2,out)
+
+#define d0d0OpColond2(in1,in2,out) dimplicitLists(in1,1.0,in2,out)
+
+#define c0c0OpColons2(in1,in2,out) cimplicitLists(in1,FloatComplex(1.0f,0.0f),in2,out)
+
+#define z0z0OpColond2(in1,in2,out) zimplicitLists(in1,DoubleComplex(1.0,0.0),in2,out)
+
+/*mixed input*/
+#define s0c0OpColons0(in1,in2) in1
+
+#define d0z0OpColond0(in1,in2) in1
+
+#define c0s0OpColons0(in1,in2) in1
+
+#define z0d0OpColond0(in1,in2) in1
+
+
+
+#define s0c0OpColons2(in1,in2,out) cimplicitLists(FloatComplex(in1,0.0f),FloatComplex(1.0f,0.0f),in2,out)
+
+#define d0z0OpColond2(in1,in2,out) zimplicitLists(DoubleComplex(in1,0.0),DoubleComplex(1.0,0.0),in2,out)
+
+#define c0s0OpColons2(in1,in2,out) cimplicitLists(in1,FloatComplex(1.0f,0.0f),FloatComplex(in2,0.0f),out)
+
+#define z0d0OpColond2(in1,in2,out) zimplicitLists(in1,DoubleComplex(1.0,0.0),DoubleComplex(in2,0.0),out)
+
+
+/*three input*/
+
+#define s0s0s0OpColons0(in1,in2,in3) in1
+#define s0s0c0OpColons0(in1,in2,in3) in1
+#define s0c0s0OpColons0(in1,in2,in3) in1
+#define s0c0c0OpColons0(in1,in2,in3) in1
+
+#define d0d0d0OpColond0(in1,in2,in3) in1
+#define d0d0z0OpColond0(in1,in2,in3) in1
+#define d0z0d0OpColond0(in1,in2,in3) in1
+#define d0z0z0OpColond0(in1,in2,in3) in1
+
+#define c0c0c0OpColons0(in1,in2,in3) in1
+#define c0c0s0OpColons0(in1,in2,in3) in1
+#define c0s0c0OpColons0(in1,in2,in3) in1
+#define c0s0s0OpColons0(in1,in2,in3) in1
+
+#define z0z0z0OpColond0(in1,in2,in3) in1
+#define z0z0d0OpColond0(in1,in2,in3) in1
+#define z0d0z0OpColond0(in1,in2,in3) in1
+#define z0d0d0OpColond0(in1,in2,in3) in1
+
+
+#define s0s0s0OpColons2(in1,in2,in3,out) simplicitLists(in1,in2,in3,out)
+#define s0s0c0OpColons2(in1,in2,in3,out) cimplicitLists(FloatComplex(in1,0.0f),FloatComplex(in2,0.0f),in3,out)
+#define s0c0s0OpColons2(in1,in2,in3,out) cimplicitLists(FloatComplex(in1,0.0f),in2,FloatComplex(in3,0.0f),out)
+#define s0c0c0OpColons2(in1,in2,in3,out) cimplicitLists(FloatComplex(in1,0.0f),in2,in3,out)
+
+#define d0d0d0OpColond2(in1,in2,in3,out) dimplicitLists(in1,in2,in3,out)
+#define d0d0z0OpColond2(in1,in2,in3,out) zimplicitLists(DoubleComplex(in1,0.0),DoubleComplex(in2,0.0),in3,out)
+#define d0z0d0OpColond2(in1,in2,in3,out) zimplicitLists(DoubleComplex(in1,0.0),in2,DoubleComplex(in3,0.0),out)
+#define d0z0z0OpColond2(in1,in2,in3,out) zimplicitLists(DoubleComplex(in1,0.0),in2,in3,out)
+
+#define c0c0c0OpColons2(in1,in2,in3,out) cimplicitLists(in1,in2,in3,out)
+#define c0c0s0OpColons2(in1,in2,in3,out) cimplicitLists(in1,in2,FloatComplex(in3,0.0f),out)
+#define c0s0c0OpColons2(in1,in2,in3,out) cimplicitLists(in1,FloatComplex(in2,0.0f),in3,out)
+#define c0s0s0OpColons2(in1,in2,in3,out) cimplicitLists(in1,FloatComplex(in2,0.0f),FloatComplex(in3,0.0f),out)
+
+#define z0z0z0OpColond2(in1,in2,in3,out) zimplicitLists(in1,in2,in3,out)
+#define z0z0d0OpColond2(in1,in2,in3,out) zimplicitLists(in1,in2,DoubleComplex(in3,0.0),out)
+#define z0d0z0OpColond2(in1,in2,in3,out) zimplicitLists(in1,DoubleComplex(in2,0.0),in3,out)
+#define z0d0d0OpColond2(in1,in2,in3,out) zimplicitLists(in1,DoubleComplex(in2,0.0),DoubleComplex(in3,0.0),out)
+
+
+
+#endif /* !__INT_OPCOLON_H__ */
diff --git a/2.3-1/src/c/implicitList/simplicitLists.c b/2.3-1/src/c/implicitList/simplicitLists.c
new file mode 100644
index 00000000..d5f741ae
--- /dev/null
+++ b/2.3-1/src/c/implicitList/simplicitLists.c
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "implicitList.h"
+
+void simplicitLists(float start, float step, float end, float *out)
+{
+ int i = 0;
+ if (start <= end)
+ {
+ if (start < start + step)
+ {
+ while (start <= end)
+ {
+ out[i] = start;
+ start += step;
+ ++i;
+ }
+ }
+ }
+ else
+ {
+ if (start > start + step)
+ {
+ while (start >= end)
+ {
+ out[i] = start;
+ start += step;
+ ++i;
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/implicitList/testDoubleImplicitList.c b/2.3-1/src/c/implicitList/testDoubleImplicitList.c
new file mode 100644
index 00000000..dfcb9fb3
--- /dev/null
+++ b/2.3-1/src/c/implicitList/testDoubleImplicitList.c
@@ -0,0 +1,142 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "implicitList.h"
+
+static void testdimplicitLists(void)
+{
+ int i = 0;
+ double one_to_five[5] = {0};
+ double five_to_one[5] = {0};
+ double five_to_one_by_minus_ten[5] = {0};
+ double result[1001] = {0};
+
+ /*
+ ** 1:1:5
+ */
+ dimplicitLists(1.0, 1.0, 5.0, one_to_five);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("one_to_five[%d] = %e\n", i, one_to_five[i]);
+ assert(one_to_five[i] == (i + 1) * 1.0);
+ }
+
+ /*
+ ** 5:1:1
+ */
+ dimplicitLists(5.0, 1.0, 1.0, five_to_one);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one[%d] = %e\n", i, five_to_one[i]);
+ assert(five_to_one[i] == 0.0);
+ }
+
+ /*
+ ** 5:-10:1
+ */
+ dimplicitLists(5.0, -10.0, 1.0, five_to_one_by_minus_ten);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one_by_minus_ten[%d] = %e\n", i, five_to_one_by_minus_ten[i]);
+ }
+
+ /*
+ ** 5:-10:1
+ */
+ dimplicitLists(5.0, -10.0, 1.0, five_to_one_by_minus_ten);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one_by_minus_ten[%d] = %e\n", i, five_to_one_by_minus_ten[i]);
+ }
+
+ /*
+ ** 0:1e-03:1
+ */
+ dimplicitLists(0.0, 1e-04, 0.1, result);
+ for (i = 0 ; i < 1001 ; ++i)
+ {
+ printf("result[%d] = %e\n", i, result[i]);
+ }
+}
+
+static void testzimplicitLists(void)
+{
+ int i = 0;
+ double one_to_five[5] = {0};
+ double five_to_one[5] = {0};
+ double five_to_one_by_minus_ten[5] = {0};
+ double result[1001] = {0};
+
+ /*
+ ** 1:1:5
+ */
+ zimplicitLists(DoubleComplex(1.0, 2.0),
+ DoubleComplex(1.0, -3.0),
+ DoubleComplex(5.0, 10.0), one_to_five);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("one_to_five[%d] = %e\n", i, one_to_five[i]);
+ }
+
+ /*
+ ** 5:1:1
+ */
+ zimplicitLists(DoubleComplex(5.0, 2.0),
+ DoubleComplex(1.0, -3.0),
+ DoubleComplex(1.0, 10.0), five_to_one);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one[%d] = %e\n", i, five_to_one[i]);
+ }
+
+ /*
+ ** 5:-10:1
+ */
+ zimplicitLists(DoubleComplex(5.0, 2.0),
+ DoubleComplex(-10.0, -3.0),
+ DoubleComplex(1.0, 10.0), five_to_one_by_minus_ten);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one_by_minus_ten[%d] = %e\n", i, five_to_one_by_minus_ten[i]);
+ }
+
+ /*
+ ** 5:-10:1
+ */
+ zimplicitLists(DoubleComplex(5.0, 2.0),
+ DoubleComplex(-10.0, -3.0),
+ DoubleComplex(1.0, 10.0), five_to_one_by_minus_ten);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one_by_minus_ten[%d] = %e\n", i, five_to_one_by_minus_ten[i]);
+ }
+
+ /*
+ ** 0:1e-03:1
+ */
+ zimplicitLists(DoubleComplex(0.0, 2.0),
+ DoubleComplex(1e-04, -3.0),
+ DoubleComplex(0.1, 10.0), result);
+ for (i = 0 ; i < 1001 ; ++i)
+ {
+ printf("result[%d] = %e\n", i, result[i]);
+ }
+}
+
+int main(void)
+{
+ testdimplicitLists();
+ testzimplicitLists();
+ return 0;
+}
diff --git a/2.3-1/src/c/implicitList/testFloatImplicitList.c b/2.3-1/src/c/implicitList/testFloatImplicitList.c
new file mode 100644
index 00000000..5c021c67
--- /dev/null
+++ b/2.3-1/src/c/implicitList/testFloatImplicitList.c
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdio.h>
+#include "implicitList.h"
+
+static void testsimplicitLists(void)
+{
+ int i = 0;
+ float one_to_five[5] = {0};
+ float five_to_one[5] = {0};
+ float five_to_one_by_minus_ten[5] = {0};
+ float result[1001] = {0};
+ /*
+ ** 1:1:5
+ */
+ simplicitLists(1.0f, 1.0f, 5.0f, one_to_five);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("one_to_five[%d] = %e\n", i, one_to_five[i]);
+ }
+
+ /*
+ ** 5:1:1
+ */
+ simplicitLists(5.0f, 1.0f, 1.0f, five_to_one);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one[%d] = %e\n", i, five_to_one[i]);
+ }
+
+ /*
+ ** 5:-10:1
+ */
+ simplicitLists(5.0f, -10.0f, 1.0f, five_to_one_by_minus_ten);
+ for (i = 0 ; i < 5 ; ++i)
+ {
+ printf("five_to_one_by_minus_ten[%d] = %e\n", i, five_to_one_by_minus_ten[i]);
+ }
+
+ /*
+ ** 0:1e-03:1
+ */
+ simplicitLists(0.0f, 1e-03f, 1.0f, result);
+ for (i = 0 ; i < 1001 ; ++i)
+ {
+ printf("result[%d] = %e\n", i, result[i]);
+ }
+}
+
+
+int main(void)
+{
+ testsimplicitLists();
+ return 0;
+}
diff --git a/2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj b/2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj
new file mode 100644
index 00000000..6557823b
--- /dev/null
+++ b/2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{15D96388-C17C-4085-991F-9003E0CE9C6A}</ProjectGuid>
+ <RootNamespace>testDoubleImplicitList</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleImplicitList.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\implicitList.vcxproj">
+ <Project>{4c99d2f9-1aa2-460d-b9b8-7d44a5f9e7cd}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj.filters b/2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj.filters
new file mode 100644
index 00000000..929ee3dd
--- /dev/null
+++ b/2.3-1/src/c/implicitList/test_DoubleImplicitList/testDoubleImplicitList.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleImplicitList.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj b/2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj
new file mode 100644
index 00000000..2399ddd5
--- /dev/null
+++ b/2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{93CF027E-C286-4F61-A9D6-DE3C899C5E77}</ProjectGuid>
+ <RootNamespace>testFloatImplicitList</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatImplicitList.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\implicitList.vcxproj">
+ <Project>{4c99d2f9-1aa2-460d-b9b8-7d44a5f9e7cd}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj.filters b/2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj.filters
new file mode 100644
index 00000000..3532926b
--- /dev/null
+++ b/2.3-1/src/c/implicitList/test_FloatImplicitList/testFloatImplicitList.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatImplicitList.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/implicitList/zimplicitLists.c b/2.3-1/src/c/implicitList/zimplicitLists.c
new file mode 100644
index 00000000..56d492dc
--- /dev/null
+++ b/2.3-1/src/c/implicitList/zimplicitLists.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "implicitList.h"
+
+void zimplicitLists(doubleComplex start, doubleComplex step,doubleComplex end, double *out)
+{
+ dimplicitLists(zreals(start), zreals(step), zreals(end), out);
+}
diff --git a/2.3-1/src/c/linearAlgebra/balanc/dbalanca.c b/2.3-1/src/c/linearAlgebra/balanc/dbalanca.c
new file mode 100644
index 00000000..a86a1967
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/balanc/dbalanca.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Funtion to balance given square matrix to improve its condition number*/
+#include "balanc.h"
+#include "lapack.h"
+#include "stdlib.h"
+#include "string.h"
+#include "eye.h"
+
+void dbalanca(double* in1, int rows, double* in2, double* out1, \
+ double* out2, double* out3, double* out4)
+{
+ char JOB = 'B';
+ char RSIDE = 'R';
+ char LSIDE = 'L';
+
+ int ILO, IHI, INFO;
+ double *buf1, *buf2, *LSCALE, *RSCALE;
+ double *LWORK;
+
+
+ if(in2 == NULL)
+ {
+ /*Single input matrix*/
+ buf1 = (double*) malloc((double) rows*rows*sizeof(double));
+ LSCALE = (double*) malloc((double) rows*sizeof(double));
+
+ /*copy input to temp buf as lapack function modifies input*/
+ memcpy(buf1,in1,rows*rows*sizeof(double));
+
+ dgebal_(&JOB,&rows,buf1,&rows,&ILO,&IHI,LSCALE,&INFO);
+ deyea(out2,rows,rows);
+ dgebak_(&JOB,&RSIDE,&rows,&ILO,&IHI,LSCALE,&rows,out2,&rows,&INFO);
+
+ /*copy computed matrix to output*/
+ memcpy(out1,buf1,rows*rows*sizeof(double));
+ }
+ else
+ {
+ /*two matrices as inputs*/
+ buf1 = (double*) malloc((double) rows*rows*sizeof(double));
+ buf2 = (double*) malloc((double) rows*rows*sizeof(double));
+ LSCALE = (double*) malloc((double) rows*sizeof(double));
+ RSCALE = (double*) malloc((double) rows*sizeof(double));
+ LWORK = (double*) malloc((double) 6*rows*sizeof(double));
+
+ /*copy input to temp buf as lapack function modifies input*/
+ memcpy(buf1,in1,rows*rows*sizeof(double));
+ memcpy(buf2,in2,rows*rows*sizeof(double));
+
+ dggbal_(&JOB,&rows,buf1,&rows,buf2,&rows,&ILO,&IHI,LSCALE,RSCALE, \
+ LWORK,&INFO);
+ deyea(out3,rows,rows);
+ deyea(out4,rows,rows);
+
+ dgebak_(&JOB,&LSIDE,&rows,&ILO,&IHI,LSCALE,&rows,out3,&rows,&INFO);
+ dgebak_(&JOB,&RSIDE,&rows,&ILO,&IHI,LSCALE,&rows,out4,&rows,&INFO);
+
+ /*copy computed matrix to output*/
+ memcpy(out1,buf1,rows*rows*sizeof(double));
+ memcpy(out2,buf2,rows*rows*sizeof(double));
+
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/linearAlgebra/includes/balanc.h b/2.3-1/src/c/linearAlgebra/includes/balanc.h
new file mode 100644
index 00000000..dcc66b28
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/balanc.h
@@ -0,0 +1,27 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __BALANC_H__
+#define __BALANC_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dbalanca(double* in1, int rows, double* in2, double* out1, \
+ double* out2, double* out3, double* out4);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__BALANC_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/includes/rcond.h b/2.3-1/src/c/linearAlgebra/includes/rcond.h
new file mode 100644
index 00000000..4796f029
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/rcond.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RCOND_H__
+#define __RCOND_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double drconda(double* in1, int rows);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RCOND_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/includes/schur.h b/2.3-1/src/c/linearAlgebra/includes/schur.h
new file mode 100644
index 00000000..27b5c2aa
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/schur.h
@@ -0,0 +1,30 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __SCHUR_H__
+#define __SCHUR_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dschura(double* in1, int size, int flag, int nout, double* out1, \
+ double* out2);
+
+double dgschura(double* in1, int size, double* in2, int flag, int nout, \
+ double* out1, double* out2, double* out3, double* out4);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__SCHUR_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_balanc.h b/2.3-1/src/c/linearAlgebra/interfaces/int_balanc.h
new file mode 100644
index 00000000..a16ba8c2
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_balanc.h
@@ -0,0 +1,29 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_BALANC_H__
+#define __INT_BALANC_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2balancd2d2(in1,size1,out1,out2) dbalanca(in1,size1[0],NULL,out1, \
+ out2,NULL,NULL)
+
+#define d2d2balancd2d2d2d2(in1,size1,in2,size2,out1,out2,out3,out4) \
+ dbalanca(in1,size1[0],in2,out1,out2,out3,out4)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_BALANC_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_rcond.h b/2.3-1/src/c/linearAlgebra/interfaces/int_rcond.h
new file mode 100644
index 00000000..6e6a4454
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_rcond.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RCOND_H__
+#define __INT_RCOND_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2rcondd0(in1,size1) drconda(in1,size1[0])
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RCOND_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_schur.h b/2.3-1/src/c/linearAlgebra/interfaces/int_schur.h
new file mode 100644
index 00000000..81324e66
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_schur.h
@@ -0,0 +1,60 @@
+ /* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_SCHUR_H__
+#define __INT_SCHUR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2schurd2(in1,size1,out1) dschura(in1,size1[0],0,1,out1,NULL)
+
+#define d2schurd2d2(in1,size1,out1,out2) dschura(in1,size1[0],0,2,out1,out2)
+
+#define d2g2schurd2(in1,size1,in2,size2,out1) (in2[0]=='c')? \
+ dschura(in1,size1[0],1,1,out1,NULL): \
+ dschura(in1,size1[0],2,1,out1,NULL)
+
+#define d2g2schurd2d0(in1,size1,in2,size2,out1) (in2[0]=='c')? \
+ dschura(in1,size1[0],1,2,out1,NULL): \
+ dschura(in1,size1[0],2,2,out1,NULL)
+
+#define d2g2schurd2d0d2(in1,size1,in2,size2,out1,out2) (in2[0]=='c')? \
+ dschura(in1,size1[0],1,3,out1,out2): \
+ dschura(in1,size1[0],2,3,out1,out2)
+
+#define d2d2schurd2d2(in1,size1,in2,size2,out1,out2) dgschura(in1,size1[0], \
+ in2,0,2,out1,out2,NULL,NULL)
+
+#define d2d2schurd2d2d2d2(in1,size1,in2,size2,out1,out2,out3,out4) \
+ dgschura(in1,size1[0],in2,0,4,out1,out2,out3,out4)
+
+#define d2d2g2schurd0(in1,size1,in2,size2,in3,size3) dgschura(in1,size1[0], \
+ in2,1,1,NULL,NULL,NULL,NULL)
+
+#define d2d2g2schurd2d0(in1,size1,in2,size2,in3,size3,out1) \
+ dgschura(in1,size1[0],in2,1,2,out1,NULL,NULL,NULL)
+
+#define d2d2g2schurd2d2d0(in1,size1,in2,size2,in3,size3,out1,out2) \
+ dgschura(in1,size1[0],in2,1,3,out1,out2,NULL,NULL)
+
+#define d2d2g2schurd2d2d2d0(in1,size1,in2,size2,in3,size3,out1,out2,out3) \
+ dgschura(in1,size1[0],in2,1,4,out1,out2,out3,NULL)
+
+#define d2d2g2schurd2d2d2d2d0(in1,size1,in2,size2,in3,size3,out1,out2,out3, \
+ out4) dgschura(in1,size1[0],in2,1,5,out1,out2,out3,out4)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_SCHUR_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/rcond/drconda.c b/2.3-1/src/c/linearAlgebra/rcond/drconda.c
new file mode 100644
index 00000000..a203c1e3
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/rcond/drconda.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Funtion to find inverse condition number of square matrix*/
+
+#include "lapack.h"
+#include "stdlib.h"
+#include "string.h"
+
+double drconda(double* in1, int rows)
+{
+ double *buf, *LDWORK;
+ int INFO, *IPIV, *LIWORK;
+ char one = '1';
+ double ANORM;
+ double RCOND = 1;
+
+ buf = (double*) malloc((double) rows*rows*sizeof(double));
+ IPIV = (int*) malloc((int) rows*sizeof(int));
+ LIWORK = (int*) malloc((int) rows*sizeof(int));
+ LDWORK = (double*) malloc((double) 4*rows*sizeof(double));
+
+ /*Copy input in temp buf, as lapack modifies input*/
+ memcpy(buf,in1,rows*rows*sizeof(double));
+
+ ANORM = dlange_(&one,&rows,&rows,buf,&rows,LDWORK);
+
+ dgetrf_(&rows,&rows,buf,&rows,IPIV,&INFO);
+
+ if(INFO == 0)
+ {
+ dgecon_(&one,&rows,buf,&rows,&ANORM,&RCOND,LDWORK,LIWORK,&INFO);
+ }
+
+ return RCOND;
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/linearAlgebra/schur/dgschura.c b/2.3-1/src/c/linearAlgebra/schur/dgschura.c
new file mode 100644
index 00000000..f17da8c8
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/schur/dgschura.c
@@ -0,0 +1,161 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Fucntion to find generalised schur decomposition of given square matrices */
+#include "schur.h"
+#include "lapack.h"
+#include "stdlib.h"
+#include "string.h"
+#include <math.h>
+
+/*flag --> 0: nothing
+ --> 1: continuous
+ --> 2: discrete
+*/
+
+lapack_logical selctg21( double* in1, double* in2, double* in3);
+lapack_logical selctg22( double* in1, double* in2, double* in3);
+
+double dgschura(double* in1, int size, double* in2, int flag, int nout, \
+ double* out1, double* out2, double* out3, double* out4)
+{
+ char JOBVSL = 'N';
+ char JOBVSR = 'N';
+ char SORT = 'N';
+ int SDIM = 0;
+ int LDVSL = size, LDVSR = size;
+ int LWORK = 8*size+16, INFO;
+ double *ALPHAR, *ALPHAI, *BETA, *VSL, *VSR, *WORK;
+ int *BWORK;
+ double ret = 0;
+ double *buf1, *buf2; /*input is copied to buf, since lapack function directly
+ modifies the input variable*/
+
+ /*Used incase of flag > 0*/
+ LAPACK_D_SELECT3 selctg = &selctg21;
+
+ if(nout >= 2){
+ JOBVSL = 'V';
+ JOBVSR = 'V';
+ }
+ if(flag > 0) SORT = 'S';
+
+ buf1 = (double*) malloc((double) size*size*sizeof(double));
+ buf2 = (double*) malloc((double) size*size*sizeof(double));
+ ALPHAR = (double*) malloc((double) size*sizeof(double));
+ ALPHAI = (double*) malloc((double) size*sizeof(double));
+ BETA = (double*) malloc((double) size*sizeof(double));
+ VSL = (double*) malloc((double) LDVSL*size*sizeof(double));
+ VSR = (double*) malloc((double) LDVSR*size*sizeof(double));
+ WORK = (double*) malloc((double) LWORK*sizeof(double));
+ BWORK = (int*) malloc((double) size*sizeof(double));
+
+
+ memcpy(buf1,in1,size*size*sizeof(double));
+ memcpy(buf2,in2,size*size*sizeof(double));
+
+ dgges_(&JOBVSL,&JOBVSR,&SORT,selctg,&size,buf1,&size,buf2,&size,&SDIM, \
+ ALPHAR,ALPHAI,BETA,VSL,&LDVSL,VSR,&LDVSR,WORK,&LWORK,BWORK,&INFO);
+
+ /*if (INFO != 0)
+ {
+ out1 = NULL;
+ return 0;
+ }*/
+
+ if(nout == 1)
+ {
+ return(SDIM);
+ }
+ else if(nout == 2)
+ {
+ if(flag == 0)
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(double));
+ memcpy(out2,buf2,size*size*sizeof(double));
+ }
+ else
+ {
+ /*copy VSR to out1 and return SDIM */
+ memcpy(out1,VSR,size*size*sizeof(double));
+ ret = SDIM;
+ }
+ }
+ else if(nout == 3)
+ {
+ /*copy VSL to out1, VSR to out2, return SDIM*/
+ memcpy(out1,VSL,size*size*sizeof(double));
+ memcpy(out2,VSR,size*size*sizeof(double));
+ ret = SDIM;
+ }
+ else if(nout == 4)
+ {
+ if(flag == 0)
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(double));
+ memcpy(out2,buf2,size*size*sizeof(double));
+ /*copy VSL to out3 and VSR to out4*/
+ memcpy(out3,VSL,size*size*sizeof(double));
+ memcpy(out4,VSR,size*size*sizeof(double));
+ }
+ else
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(double));
+ memcpy(out2,buf2,size*size*sizeof(double));
+ /*copy VSR to out3 and return SDIM*/
+ memcpy(out3,VSR,size*size*sizeof(double));
+ ret = SDIM;
+ }
+ }
+ else /*nout = 5*/
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(double));
+ memcpy(out2,buf2,size*size*sizeof(double));
+ /*copy VSL to out3 and VSR to out4*/
+ memcpy(out3,VSL,size*size*sizeof(double));
+ memcpy(out4,VSR,size*size*sizeof(double));
+ /*return SDIM*/
+ ret = SDIM;
+ }
+
+ free(buf1);
+ free(buf2);
+ free(VSL);
+ free(VSR);
+ free(ALPHAR);
+ free(ALPHAI);
+ free(BETA);
+ free(WORK);
+ free(BWORK);
+
+ return ret;
+}
+
+lapack_logical selctg21(double* in1, double* in2, double* in3)
+{
+ if((sqrt(*in1**in1+*in2**in2)/ *in3) < 1)
+ return 1;
+ else
+ return 0;
+}
+
+lapack_logical selctg22(double* in1, double* in2, double* in3)
+{
+ if((sqrt(*in1**in1+*in2**in2)/ *in3) < 1)
+ return 1;
+ else
+ return 0;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/linearAlgebra/schur/dschura.c b/2.3-1/src/c/linearAlgebra/schur/dschura.c
new file mode 100644
index 00000000..802caa81
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/schur/dschura.c
@@ -0,0 +1,126 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Funtion to find schur decomposition of given square matrix */
+#include "schur.h"
+#include "lapack.h"
+#include "stdlib.h"
+#include "string.h"
+#include <math.h>
+
+/*flag --> 0: nothing
+ --> 1: continuous
+ --> 2: discrete
+*/
+
+lapack_logical selctg11( double* in1, double* in2);
+lapack_logical selctg12( double* in1, double* in2);
+
+double dschura(double* in1, int size, int flag, int nout, double* out1, \
+ double* out2)
+{
+ char JOBVS = 'N';
+ char SORT = 'N';
+ int SDIM = 0;
+ int LVDS = size;
+ int LWORK = 3*size, INFO;
+ double *WR, *WI, *VS, *WORK;
+ int *BWORK;
+ double ret = 0;
+ double *buf; /*input is copied to buf, since lapack function direclty
+ modifies the input variable*/
+
+
+ /*Used incase of flag > 0*/
+ LAPACK_D_SELECT2 selctg;
+
+ if(flag == 1 || flag == 0)
+ selctg = &selctg11;
+ else if(flag == 2)
+ selctg = &selctg12;
+
+ if(nout >= 2) JOBVS = 'V';
+ if(flag > 0) SORT = 'S';
+
+ buf = (double*) malloc((double) size*size*sizeof(double));
+ WR = (double*) malloc((double) size*sizeof(double));
+ WI = (double*) malloc((double) size*sizeof(double));
+ VS = (double*) malloc((double) LVDS*size*sizeof(double));
+ WORK = (double*) malloc((double) LWORK*sizeof(double));
+ BWORK = (int*) malloc((double) size*sizeof(double));
+
+
+ memcpy(buf,in1,size*size*sizeof(double));
+
+ dgees_(&JOBVS,&SORT,selctg,&size,buf,&size,&SDIM,WR,WI,VS,&LVDS, \
+ WORK,&LWORK,BWORK,&INFO);
+
+ /*if (INFO != 0)
+ {
+ out1 = NULL;
+ return 0;
+ } */
+
+ if(nout == 1)
+ {
+ /*Copy result in in1 to out1*/
+ memcpy(out1,buf,size*size*sizeof(double));
+ }
+ else if(nout == 2)
+ {
+ if(flag == 0)
+ {
+ /*copy in1 to out2 and VS to out1*/
+ memcpy(out2,buf,size*size*sizeof(double));
+ memcpy(out1,VS,size*size*sizeof(double));
+ }
+ else
+ {
+ /*copy VS to out1 and SDIM to out2*/
+ memcpy(out1,VS,size*size*sizeof(double));
+ ret = SDIM;
+ }
+ }
+ else
+ {
+ /*copy VS to out1, SDIM to out2, in1 to out3*/
+ memcpy(out1,VS,size*size*sizeof(double));
+ memcpy(out2,buf,size*size*sizeof(double));
+ ret = SDIM;
+ }
+
+ free(buf);
+ free(WI);
+ free(WR);
+ free(VS);
+ free(WORK);
+ free(BWORK);
+
+ return ret;
+}
+
+lapack_logical selctg11(double* in1, double* in2)
+{
+ if(*in1 <= 0)
+ return 1;
+ else
+ return 0;
+}
+
+lapack_logical selctg12(double* in1, double* in2)
+{
+
+ if(sqrt(*in1**in1+*in2**in2) < 1)
+ return 1;
+ else
+ return 0;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/Makefile.am b/2.3-1/src/c/matrixOperations/Makefile.am
new file mode 100644
index 00000000..a6ecb2c2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/Makefile.am
@@ -0,0 +1,38 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+SUBDIRS= cat \
+ division \
+ expm \
+ eye \
+ hilb \
+ infiniteNorm \
+ multiplication \
+ trace \
+ transpose \
+ ones \
+ jmat \
+ inversion\
+ chol \
+ determ \
+ dist \
+ fill \
+ magnitude \
+ squaredMagnitude\
+ logm \
+ powm \
+ zeros \
+ spec \
+ spec2
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/Makefile.in b/2.3-1/src/c/matrixOperations/Makefile.in
new file mode 100644
index 00000000..c120e1c3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/Makefile.in
@@ -0,0 +1,583 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/matrixOperations
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = cat \
+ division \
+ expm \
+ eye \
+ hilb \
+ infiniteNorm \
+ multiplication \
+ trace \
+ transpose \
+ ones \
+ jmat \
+ inversion\
+ chol \
+ determ \
+ dist \
+ fill \
+ magnitude \
+ squaredMagnitude\
+ logm \
+ powm \
+ zeros \
+ spec \
+ spec2
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/cat/Makefile.am b/2.3-1/src/c/matrixOperations/cat/Makefile.am
new file mode 100644
index 00000000..fd315ddc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/Makefile.am
@@ -0,0 +1,52 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixConcatenation_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixConcatenation.la
+
+HEAD = ../includes/cat.h
+
+libMatrixConcatenation_la_SOURCES = $(HEAD) \
+ scats.c \
+ scata.c \
+ dcats.c \
+ dcata.c \
+ ccats.c \
+ ccata.c \
+ zcats.c \
+ zcata.c
+
+check_PROGRAMS = testFloatMatrixConcatenation \
+ testDoubleMatrixConcatenation
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ libMatrixConcatenation.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleMatrixConcatenation_SOURCES = testDoubleMatrixConcatenation.c
+testDoubleMatrixConcatenation_LDADD = $(check_LDADD)
+testDoubleMatrixConcatenation_CFLAGS = $(check_INCLUDES)
+
+testFloatMatrixConcatenation_SOURCES = testFloatMatrixConcatenation.c
+testFloatMatrixConcatenation_LDADD = $(check_LDADD)
+testFloatMatrixConcatenation_CFLAGS = $(check_INCLUDES)
+
+TESTS = testFloatMatrixConcatenation \
+ testDoubleMatrixConcatenation \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cat/Makefile.in b/2.3-1/src/c/matrixOperations/cat/Makefile.in
new file mode 100644
index 00000000..3e7a8559
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/Makefile.in
@@ -0,0 +1,792 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatMatrixConcatenation$(EXEEXT) \
+ testDoubleMatrixConcatenation$(EXEEXT)
+TESTS = testFloatMatrixConcatenation$(EXEEXT) \
+ testDoubleMatrixConcatenation$(EXEEXT)
+subdir = src/c/matrixOperations/cat
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixConcatenation_la_LIBADD =
+am__objects_1 =
+am_libMatrixConcatenation_la_OBJECTS = $(am__objects_1) \
+ libMatrixConcatenation_la-scats.lo \
+ libMatrixConcatenation_la-scata.lo \
+ libMatrixConcatenation_la-dcats.lo \
+ libMatrixConcatenation_la-dcata.lo \
+ libMatrixConcatenation_la-ccats.lo \
+ libMatrixConcatenation_la-ccata.lo \
+ libMatrixConcatenation_la-zcats.lo \
+ libMatrixConcatenation_la-zcata.lo
+libMatrixConcatenation_la_OBJECTS = \
+ $(am_libMatrixConcatenation_la_OBJECTS)
+libMatrixConcatenation_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testDoubleMatrixConcatenation_OBJECTS = testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.$(OBJEXT)
+testDoubleMatrixConcatenation_OBJECTS = \
+ $(am_testDoubleMatrixConcatenation_OBJECTS)
+testDoubleMatrixConcatenation_DEPENDENCIES = $(check_LDADD)
+testDoubleMatrixConcatenation_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleMatrixConcatenation_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMatrixConcatenation_OBJECTS = testFloatMatrixConcatenation-testFloatMatrixConcatenation.$(OBJEXT)
+testFloatMatrixConcatenation_OBJECTS = \
+ $(am_testFloatMatrixConcatenation_OBJECTS)
+testFloatMatrixConcatenation_DEPENDENCIES = $(check_LDADD)
+testFloatMatrixConcatenation_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatMatrixConcatenation_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixConcatenation_la_SOURCES) \
+ $(testDoubleMatrixConcatenation_SOURCES) \
+ $(testFloatMatrixConcatenation_SOURCES)
+DIST_SOURCES = $(libMatrixConcatenation_la_SOURCES) \
+ $(testDoubleMatrixConcatenation_SOURCES) \
+ $(testFloatMatrixConcatenation_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixConcatenation_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixConcatenation.la
+HEAD = ../includes/cat.h
+libMatrixConcatenation_la_SOURCES = $(HEAD) \
+ scats.c \
+ scata.c \
+ dcats.c \
+ dcata.c \
+ ccats.c \
+ ccata.c \
+ zcats.c \
+ zcata.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ libMatrixConcatenation.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleMatrixConcatenation_SOURCES = testDoubleMatrixConcatenation.c
+testDoubleMatrixConcatenation_LDADD = $(check_LDADD)
+testDoubleMatrixConcatenation_CFLAGS = $(check_INCLUDES)
+testFloatMatrixConcatenation_SOURCES = testFloatMatrixConcatenation.c
+testFloatMatrixConcatenation_LDADD = $(check_LDADD)
+testFloatMatrixConcatenation_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/cat/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/cat/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixConcatenation.la: $(libMatrixConcatenation_la_OBJECTS) $(libMatrixConcatenation_la_DEPENDENCIES)
+ $(libMatrixConcatenation_la_LINK) -rpath $(pkglibdir) $(libMatrixConcatenation_la_OBJECTS) $(libMatrixConcatenation_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMatrixConcatenation$(EXEEXT): $(testDoubleMatrixConcatenation_OBJECTS) $(testDoubleMatrixConcatenation_DEPENDENCIES)
+ @rm -f testDoubleMatrixConcatenation$(EXEEXT)
+ $(testDoubleMatrixConcatenation_LINK) $(testDoubleMatrixConcatenation_OBJECTS) $(testDoubleMatrixConcatenation_LDADD) $(LIBS)
+testFloatMatrixConcatenation$(EXEEXT): $(testFloatMatrixConcatenation_OBJECTS) $(testFloatMatrixConcatenation_DEPENDENCIES)
+ @rm -f testFloatMatrixConcatenation$(EXEEXT)
+ $(testFloatMatrixConcatenation_LINK) $(testFloatMatrixConcatenation_OBJECTS) $(testFloatMatrixConcatenation_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-ccata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-ccats.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-dcata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-dcats.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-scata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-scats.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-zcata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixConcatenation_la-zcats.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixConcatenation_la-scats.lo: scats.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-scats.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-scats.Tpo -c -o libMatrixConcatenation_la-scats.lo `test -f 'scats.c' || echo '$(srcdir)/'`scats.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-scats.Tpo $(DEPDIR)/libMatrixConcatenation_la-scats.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scats.c' object='libMatrixConcatenation_la-scats.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-scats.lo `test -f 'scats.c' || echo '$(srcdir)/'`scats.c
+
+libMatrixConcatenation_la-scata.lo: scata.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-scata.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-scata.Tpo -c -o libMatrixConcatenation_la-scata.lo `test -f 'scata.c' || echo '$(srcdir)/'`scata.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-scata.Tpo $(DEPDIR)/libMatrixConcatenation_la-scata.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scata.c' object='libMatrixConcatenation_la-scata.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-scata.lo `test -f 'scata.c' || echo '$(srcdir)/'`scata.c
+
+libMatrixConcatenation_la-dcats.lo: dcats.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-dcats.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-dcats.Tpo -c -o libMatrixConcatenation_la-dcats.lo `test -f 'dcats.c' || echo '$(srcdir)/'`dcats.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-dcats.Tpo $(DEPDIR)/libMatrixConcatenation_la-dcats.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcats.c' object='libMatrixConcatenation_la-dcats.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-dcats.lo `test -f 'dcats.c' || echo '$(srcdir)/'`dcats.c
+
+libMatrixConcatenation_la-dcata.lo: dcata.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-dcata.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-dcata.Tpo -c -o libMatrixConcatenation_la-dcata.lo `test -f 'dcata.c' || echo '$(srcdir)/'`dcata.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-dcata.Tpo $(DEPDIR)/libMatrixConcatenation_la-dcata.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcata.c' object='libMatrixConcatenation_la-dcata.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-dcata.lo `test -f 'dcata.c' || echo '$(srcdir)/'`dcata.c
+
+libMatrixConcatenation_la-ccats.lo: ccats.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-ccats.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-ccats.Tpo -c -o libMatrixConcatenation_la-ccats.lo `test -f 'ccats.c' || echo '$(srcdir)/'`ccats.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-ccats.Tpo $(DEPDIR)/libMatrixConcatenation_la-ccats.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccats.c' object='libMatrixConcatenation_la-ccats.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-ccats.lo `test -f 'ccats.c' || echo '$(srcdir)/'`ccats.c
+
+libMatrixConcatenation_la-ccata.lo: ccata.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-ccata.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-ccata.Tpo -c -o libMatrixConcatenation_la-ccata.lo `test -f 'ccata.c' || echo '$(srcdir)/'`ccata.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-ccata.Tpo $(DEPDIR)/libMatrixConcatenation_la-ccata.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccata.c' object='libMatrixConcatenation_la-ccata.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-ccata.lo `test -f 'ccata.c' || echo '$(srcdir)/'`ccata.c
+
+libMatrixConcatenation_la-zcats.lo: zcats.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-zcats.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-zcats.Tpo -c -o libMatrixConcatenation_la-zcats.lo `test -f 'zcats.c' || echo '$(srcdir)/'`zcats.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-zcats.Tpo $(DEPDIR)/libMatrixConcatenation_la-zcats.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcats.c' object='libMatrixConcatenation_la-zcats.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-zcats.lo `test -f 'zcats.c' || echo '$(srcdir)/'`zcats.c
+
+libMatrixConcatenation_la-zcata.lo: zcata.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -MT libMatrixConcatenation_la-zcata.lo -MD -MP -MF $(DEPDIR)/libMatrixConcatenation_la-zcata.Tpo -c -o libMatrixConcatenation_la-zcata.lo `test -f 'zcata.c' || echo '$(srcdir)/'`zcata.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixConcatenation_la-zcata.Tpo $(DEPDIR)/libMatrixConcatenation_la-zcata.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcata.c' object='libMatrixConcatenation_la-zcata.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixConcatenation_la_CFLAGS) $(CFLAGS) -c -o libMatrixConcatenation_la-zcata.lo `test -f 'zcata.c' || echo '$(srcdir)/'`zcata.c
+
+testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.o: testDoubleMatrixConcatenation.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixConcatenation_CFLAGS) $(CFLAGS) -MT testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.o -MD -MP -MF $(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Tpo -c -o testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.o `test -f 'testDoubleMatrixConcatenation.c' || echo '$(srcdir)/'`testDoubleMatrixConcatenation.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Tpo $(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMatrixConcatenation.c' object='testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixConcatenation_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.o `test -f 'testDoubleMatrixConcatenation.c' || echo '$(srcdir)/'`testDoubleMatrixConcatenation.c
+
+testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.obj: testDoubleMatrixConcatenation.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixConcatenation_CFLAGS) $(CFLAGS) -MT testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.obj -MD -MP -MF $(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Tpo -c -o testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.obj `if test -f 'testDoubleMatrixConcatenation.c'; then $(CYGPATH_W) 'testDoubleMatrixConcatenation.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMatrixConcatenation.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Tpo $(DEPDIR)/testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMatrixConcatenation.c' object='testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixConcatenation_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixConcatenation-testDoubleMatrixConcatenation.obj `if test -f 'testDoubleMatrixConcatenation.c'; then $(CYGPATH_W) 'testDoubleMatrixConcatenation.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMatrixConcatenation.c'; fi`
+
+testFloatMatrixConcatenation-testFloatMatrixConcatenation.o: testFloatMatrixConcatenation.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixConcatenation_CFLAGS) $(CFLAGS) -MT testFloatMatrixConcatenation-testFloatMatrixConcatenation.o -MD -MP -MF $(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Tpo -c -o testFloatMatrixConcatenation-testFloatMatrixConcatenation.o `test -f 'testFloatMatrixConcatenation.c' || echo '$(srcdir)/'`testFloatMatrixConcatenation.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Tpo $(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMatrixConcatenation.c' object='testFloatMatrixConcatenation-testFloatMatrixConcatenation.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixConcatenation_CFLAGS) $(CFLAGS) -c -o testFloatMatrixConcatenation-testFloatMatrixConcatenation.o `test -f 'testFloatMatrixConcatenation.c' || echo '$(srcdir)/'`testFloatMatrixConcatenation.c
+
+testFloatMatrixConcatenation-testFloatMatrixConcatenation.obj: testFloatMatrixConcatenation.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixConcatenation_CFLAGS) $(CFLAGS) -MT testFloatMatrixConcatenation-testFloatMatrixConcatenation.obj -MD -MP -MF $(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Tpo -c -o testFloatMatrixConcatenation-testFloatMatrixConcatenation.obj `if test -f 'testFloatMatrixConcatenation.c'; then $(CYGPATH_W) 'testFloatMatrixConcatenation.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMatrixConcatenation.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Tpo $(DEPDIR)/testFloatMatrixConcatenation-testFloatMatrixConcatenation.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMatrixConcatenation.c' object='testFloatMatrixConcatenation-testFloatMatrixConcatenation.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixConcatenation_CFLAGS) $(CFLAGS) -c -o testFloatMatrixConcatenation-testFloatMatrixConcatenation.obj `if test -f 'testFloatMatrixConcatenation.c'; then $(CYGPATH_W) 'testFloatMatrixConcatenation.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMatrixConcatenation.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/cat/ccata.c b/2.3-1/src/c/matrixOperations/cat/ccata.c
new file mode 100644
index 00000000..a6ac6cf0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/ccata.c
@@ -0,0 +1,54 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+/*
+** Emulate Scilab (from help cat) :
+** then the concatenation is done according to the rows
+**
+** A1=[1 2 3 ; 4 5 6]; A2=[7 8 9 ; 10 11 12]; y=cat(1,A1,A2) => y=[1 2 3 ; 4 5 61 ;7 8 9; 10 11 12]
+**
+*/
+
+void crowcata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out) {
+ int i = 0;
+ int j = 0;
+ for (i = 0 ; i < columns1 && i < columns2 ; ++i)
+ {
+ for (j = 0 ; j < lines1 ; ++j)
+ {
+ /*out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];*/
+ }
+ for (j = 0 ; j < lines2 ; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+ }
+}
+
+
+/*
+** Emulate Scilab (from help cat) :
+** the concatenation is done according to the columns
+**
+** A1=[1 2 3;4 5 6]; A2=[7 8 9 ;10 11 12]; y=cat(2,A1,A2) => y=[1 2 3 7 8 9 ; 4 5 6 10 11 12]
+**
+*/
+void ccolumncata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out) {
+ int i = 0;
+ for (i = 0 ; i < lines1 * columns1 ; ++i) {
+ out[i] = in1[i];
+ }
+ for (i = 0; i < lines2 * columns2 ; ++i) {
+ out[i + lines1 * columns1] = in2[i];
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/ccats.c b/2.3-1/src/c/matrixOperations/cat/ccats.c
new file mode 100644
index 00000000..c4fab76f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/ccats.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+
+void crowcats(floatComplex in1, floatComplex in2, floatComplex *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
+
+void ccolumncats(floatComplex in1, floatComplex in2, floatComplex *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/dcata.c b/2.3-1/src/c/matrixOperations/cat/dcata.c
new file mode 100644
index 00000000..0ec7c088
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/dcata.c
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+/*
+** Emulate Scilab (from help cat) :
+** then the concatenation is done according to the rows
+**
+** A1=[1 2 3 ; 4 5 6]; A2=[7 8 9 ; 10 11 12]; y=cat(1,A1,A2) => y=[1 2 3 ; 4 5 6 ;7 8 9; 10 11 12]
+**
+*/
+
+void drowcata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out) {
+ int i = 0;
+ int j = 0;
+
+ for (i = 0 ; i < columns1 && i < columns2 ; ++i)
+ {
+ for (j = 0 ; j < lines1 ; ++j)
+ {
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
+ }
+ for (j = 0 ; j < lines2 ; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+ }
+}
+
+
+/*
+** Emulate Scilab (from help cat) :
+** the concatenation is done according to the columns
+**
+** A1=[1 2 3;4 5 6]; A2=[7 8 9 ;10 11 12]; y=cat(2,A1,A2) => y=[1 2 3 7 8 9 ; 4 5 6 10 11 12]
+**
+*/
+void dcolumncata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out) {
+ int i = 0;
+ for (i = 0 ; i < lines1 * columns1 ; ++i) {
+ out[i] = in1[i];
+ }
+ for (i = 0; i < lines2 * columns2 ; ++i) {
+ out[i + lines1 * columns1] = in2[i];
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/dcats.c b/2.3-1/src/c/matrixOperations/cat/dcats.c
new file mode 100644
index 00000000..aea63ecf
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/dcats.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+
+void drowcats(double in1, double in2, double *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
+
+void dcolumncats(double in1, double in2, double *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/i16cata.c b/2.3-1/src/c/matrixOperations/cat/i16cata.c
new file mode 100644
index 00000000..d7187b4a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/i16cata.c
@@ -0,0 +1,63 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+/* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(1,A1,A2);
+output => y = [1 2 3; 4 5 6;7 8 9;10 11 12]
+*/
+
+void i16rowcata(int16 *in1,int lines1,int columns1,int16 *in2,int lines2,int columns2,int16* out)
+{
+ int i = 0;
+ int j = 0;
+ for(i = 0;i < columns1 && i < columns2; ++i)
+ {
+ for(j = 0;j < lines1; ++j)
+ {
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
+ }
+ for(j = 0;j < lines2; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+
+ }
+}
+
+ /* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(2,A1,A2);
+output => y = [1 2 3 7 8 9; 4 5 6 10 11 12]
+*/
+
+void i16columncata(int16 *in1,int lines1,int columns1,int16 *in2,int lines2,int columns2,int16* out)
+ {
+ int i = 0;
+ for(i = 0; i < lines1 * columns1;++i)
+ {
+ out[i] = in1[i];
+
+ }
+ for(i = 0;i < lines2 * columns2;++i)
+ {
+
+ out[i + lines1 * columns2] = in2[i];
+
+ }
+
+ }
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/cat/i16cats.c b/2.3-1/src/c/matrixOperations/cat/i16cats.c
new file mode 100644
index 00000000..11b24ac6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/i16cats.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+
+void i16rowcats(int16 in1,int16 in2,int16 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
+
+void i16columncats(int16 in1,int16 in2,int16 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/i8cata.c b/2.3-1/src/c/matrixOperations/cat/i8cata.c
new file mode 100644
index 00000000..47fbfa40
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/i8cata.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+/* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(1,A1,A2);
+output => y = [1 2 3; 4 5 6;7 8 9;10 11 12]
+*/
+
+void i8rowcata(int8 *in1,int lines1,int columns1,int8 *in2,int lines2,int columns2,int8* out)
+{
+ int i = 0;
+ int j = 0;
+ for(i = 0;i < columns1 && i < columns2; ++i)
+ {
+ for(j = 0;j < lines1; ++j)
+ {
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
+ }
+ for(j = 0;j < lines2; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+
+ }
+}
+ /* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(2,A1,A2);
+output => y = [1 2 3 7 8 9; 4 5 6 10 11 12]
+*/
+
+void i8columncata(int8 *in1,int lines1,int columns1,int8 *in2,int lines2,int columns2,int8* out)
+ {
+ int i = 0;
+ for(i = 0; i < lines1 * columns1;++i)
+ {
+ out[i] = in1[i];
+
+ }
+ for(i = 0;i < lines2 * columns2;++i)
+ {
+
+ out[i + lines1 * columns2] = in2[i];
+
+ }
+
+ }
+
diff --git a/2.3-1/src/c/matrixOperations/cat/i8cats.c b/2.3-1/src/c/matrixOperations/cat/i8cats.c
new file mode 100644
index 00000000..51dadd16
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/i8cats.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+
+void i8rowcats(int8 in1,int8 in2,int8 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
+
+void i8columncats(int8 in1,uint8 in2,int8 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/scata.c b/2.3-1/src/c/matrixOperations/cat/scata.c
new file mode 100644
index 00000000..da0853c6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/scata.c
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+#include "stdio.h"
+/*
+** Emulate Scilab (from help cat) :
+** then the concatenation is done according to the rows
+**
+** A1=[1 2 3 ; 4 5 6]; A2=[7 8 9 ; 10 11 12]; y=cat(1,A1,A2) => y=[1 2 3 ; 4 5 6 ;7 8 9; 10 11 12]
+**
+*/
+
+void srowcata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out) {
+ int i = 0;
+ int j = 0;
+ for (i = 0 ; i < columns1 && i < columns2 ; ++i)
+ {
+ for (j = 0 ; j < lines1 ; ++j)
+ {
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
+ }
+ for (j = 0 ; j < lines2 ; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+ }
+}
+
+
+/*
+** Emulate Scilab (from help cat) :
+** the concatenation is done according to the columns
+**
+** A1=[1 2 3;4 5 6]; A2=[7 8 9 ;10 11 12]; y=cat(2,A1,A2) => y=[1 2 3 7 8 9 ; 4 5 6 10 11 12]
+**
+*/
+void scolumncata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out) {
+ int i = 0;
+ for (i = 0 ; i < lines1 * columns1 ; ++i) {
+ out[i] = in1[i];
+ }
+ for (i = 0; i < lines2 * columns2 ; ++i) {
+ out[i + lines1 * columns1] = in2[i];
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/scats.c b/2.3-1/src/c/matrixOperations/cat/scats.c
new file mode 100644
index 00000000..1f82f9aa
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/scats.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+
+void srowcats(float in1, float in2, float *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
+
+void scolumncats(float in1, float in2, float *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/testDoubleMatrixConcatenation.c b/2.3-1/src/c/matrixOperations/cat/testDoubleMatrixConcatenation.c
new file mode 100644
index 00000000..29ab3c65
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/testDoubleMatrixConcatenation.c
@@ -0,0 +1,342 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include "constant.h"
+#include "cat.h"
+
+static void drowcatsTest(void) {
+ int i = 0;
+ double output[2] = {0};
+
+ /*
+ ** [ 42 51 ]
+ */
+ drowcats(42.0, 51.0, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == 42.0);
+ assert(output[1] == 51.0);
+
+ /*
+ ** [ PI PI/2 ]
+ */
+ drowcats(DPI, DPI / 2, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == DPI);
+ assert(output[1] == DPI / 2);
+}
+
+static void dcolumncatsTest(void) {
+ int i = 0;
+ double output[2] = {0};
+
+ /*
+ ** [ 42 51 ]
+ */
+ dcolumncats(42.0, 51.0, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == 42.0);
+ assert(output[1] == 51.0);
+
+ /*
+ ** [ PI PI/2 ]
+ */
+ dcolumncats(DPI, DPI / 2, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == DPI);
+ assert(output[1] == DPI / 2);
+}
+
+static void dcolumncataTest(void) {
+ int i = 0;
+ double in1[12] = {0.0, 1.0, 2.0 , 3.0 , 4.0, 5.0 , 6.0 , 7.0 , 8.0 , 9.0, 10.0 , 11.0};
+ double in2_1_1[1] = {12.0};
+ double out_1_13[13] = {0};
+
+ double in2_2_2[4] = {DPI, DPI / 2, DPI / 3, DPI / 4};
+ double out_2_8[16] = {0};
+
+ /*
+ ** columncat( [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 ], [ 12.0 ] )
+ ** [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 ]
+ */
+ dcolumncata(in1, 1, 12, in2_1_1, 1, 1, out_1_13);
+ for (i = 0 ; i < 13 ; ++i) {
+ printf("out_1_13[%d] = %e\n", i, out_1_13[i]);
+ assert(out_1_13[i] == (double) i);
+ }
+
+ /*
+ ** [ 0 2 4 6 8 10 ] , [ PI PI/3 ] => [ 0 2 4 6 8 10 PI PI/3 ]
+ ** [ 1 3 5 7 9 11 ] [ PI/2 PI/4] [ 1 3 5 7 9 11 PI/2 PI/4 ]
+ */
+ dcolumncata(in1, 2, 6, in2_2_2, 2, 2, out_2_8);
+ for (i = 0 ; i < 16 ; ++i) {
+ printf("out_2_8[%d] = %e\n", i, out_2_8[i]);
+ }
+ for (i = 0 ; i < 12 ; ++i) {
+ assert(out_2_8[i] == in1[i]);
+ }
+ for (i = 0 ; i < 4 ; ++i) {
+ assert(out_2_8[i + 12] == in2_2_2[i]);
+ }
+
+}
+
+static void drowcataTest() {
+ int i = 0;
+ double in1[6] = {1.0 , 2.0, 5.0 , 6.0, 9.0 , 10.0};
+ double in2[6] = {3.0 , 4.0 , 7.0 , 8.0 , 11.0 , 12.0};
+ double out_4_3[12] = {0};
+ double out_6_2[12] = {0};
+ /*
+ ** [ 1 5 9 ] ; [ 3 7 11 ] => [ 1 5 9 ]
+ ** [ 2 6 10 ] [ 4 8 12 ] [ 2 6 10 ]
+ ** [ 3 7 11 ]
+ ** [ 4 8 12 ]
+ */
+ drowcata(in1, 2, 3, in2, 2, 3, out_4_3);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_4_3[%d] = %e\n", i, out_4_3[i]);
+ assert(out_4_3[i] == (double) i + 1.0);
+ }
+
+ /*
+ ** [ 1 6 ] ; [ 3 8 ]
+ ** [ 2 9 ] [ 4 11 ]
+ ** [ 5 10 ] [ 7 12 ]
+ */
+ drowcata(in1, 3, 2, in2, 3, 2, out_6_2);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_6_2[%d] = %e\n", i, out_6_2[i]);
+ }
+ assert(out_6_2[0] == 1.0);
+ assert(out_6_2[1] == 2.0);
+ assert(out_6_2[2] == 5.0);
+ assert(out_6_2[3] == 3.0);
+ assert(out_6_2[4] == 4.0);
+ assert(out_6_2[5] == 7.0);
+ assert(out_6_2[6] == 6.0);
+ assert(out_6_2[7] == 9.0);
+ assert(out_6_2[8] == 10.0);
+ assert(out_6_2[9] == 8.0);
+ assert(out_6_2[10] == 11.0);
+ assert(out_6_2[11] == 12.0);
+
+ drowcata(in1, 1, 6, in2, 1, 6, out_6_2);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_6_2[%d] = %e\n", i, out_6_2[i]);
+ }
+ assert(out_6_2[0] == 1.0);
+ assert(out_6_2[1] == 3.0);
+ assert(out_6_2[2] == 2.0);
+ assert(out_6_2[3] == 4.0);
+ assert(out_6_2[4] == 5.0);
+ assert(out_6_2[5] == 7.0);
+ assert(out_6_2[6] == 6.0);
+ assert(out_6_2[7] == 8.0);
+ assert(out_6_2[8] == 9.0);
+ assert(out_6_2[9] == 11.0);
+ assert(out_6_2[10] == 10.0);
+ assert(out_6_2[11] == 12.0);
+
+}
+
+static void zrowcatsTest(void) {
+ int i = 0;
+ doubleComplex output[2];
+
+ /*
+ ** [ 42+25i 51+38i ]
+ */
+ zrowcats(DoubleComplex(42.0, 25.0),
+ DoubleComplex(51.0, 38.0),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, zreals(output[i]), zimags(output[i]));
+ }
+ assert(zreals(output[0]) == 42.0);
+ assert(zimags(output[0]) == 25.0);
+ assert(zreals(output[1]) == 51.0);
+ assert(zimags(output[1]) == 38.0);
+
+ /*
+ ** [ PI+PI/2i PI/2+PIi ]
+ */
+ zrowcats(DoubleComplex(DPI, DPI/2),
+ DoubleComplex(DPI/2, DPI),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, zreals(output[i]), zimags(output[i]));
+ }
+ assert(zreals(output[0]) == DPI);
+ assert(zimags(output[0]) == DPI / 2);
+ assert(zreals(output[1]) == DPI / 2);
+ assert(zimags(output[1]) == DPI);
+}
+
+static void zcolumncatsTest(void) {
+ int i = 0;
+ doubleComplex output[2];
+ /*
+ ** [ 42+25i 51+38i ]
+ */
+ zcolumncats(DoubleComplex(42.0, 25.0),
+ DoubleComplex(51.0, 38.0),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, zreals(output[i]), zimags(output[i]));
+ }
+ assert(zreals(output[0]) == 42.0);
+ assert(zimags(output[0]) == 25.0);
+ assert(zreals(output[1]) == 51.0);
+ assert(zimags(output[1]) == 38.0);
+
+ /*
+ ** [ PI+PI/2i PI/2+PIi ]
+ */
+ zcolumncats(DoubleComplex(DPI, DPI/2),
+ DoubleComplex(DPI/2, DPI),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, zreals(output[i]), zimags(output[i]));
+ }
+ assert(zreals(output[0]) == DPI);
+ assert(zimags(output[0]) == DPI / 2);
+ assert(zreals(output[1]) == DPI / 2);
+ assert(zimags(output[1]) == DPI);
+
+}
+
+static void zcolumncataTest(void) {
+ int i = 0;
+ double in1_real[12] = {0.0 , 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 , 7.0 , 8.0 , 9.0 , 10.0 , 11.0};
+ double in1_imag[12] = {11.0 , 10.0 , 9.0 , 8.0 , 7.0 , 6.0 , 5.0 , 4.0 , 3.0 , 2.0 , 1.0 , 0.0};
+ doubleComplex *in1 = DoubleComplexMatrix(in1_real, in1_imag, 12);
+ double in2_real[1] = {12.0};
+ double in2_imag[1] = {-1.0};
+ doubleComplex *in2_1_1 = DoubleComplexMatrix(in2_real, in2_imag, 1);
+ doubleComplex out_1_13[13];
+
+ double in2_2_2_real[4] = {DPI, DPI / 2, DPI / 3, DPI / 4};
+ double in2_2_2_imag[4] = {DPI / 4, DPI / 3, DPI / 2, DPI};
+ doubleComplex *in2_2_2 = DoubleComplexMatrix(in2_2_2_real, in2_2_2_imag, 4);
+ doubleComplex out_2_8[16];
+
+ /*
+ ** columncat( [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 ], [ 12.0 ] )
+ ** [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 ]
+ */
+ zcolumncata(in1, 1, 12, in2_1_1, 1, 1, out_1_13);
+ for (i = 0 ; i < 13 ; ++i) {
+ printf("out_1_13[%d] = %e + %e i\n", i, zreals(out_1_13[i]), zimags(out_1_13[i]));
+ assert(zreals(out_1_13[i]) == (double) i);
+ assert(zimags(out_1_13[i]) == 11.0 - (double) i);
+ }
+
+ /*
+ ** [ 0 2 4 6 8 10 ] , [ PI PI/3 ] => [ 0 2 4 6 8 10 PI PI/3 ]
+ ** [ 1 3 5 7 9 11 ] [ PI/2 PI/4] [ 1 3 5 7 9 11 PI/2 PI/4 ]
+ */
+ zcolumncata(in1, 2, 6, in2_2_2, 2, 2, out_2_8);
+ for (i = 0 ; i < 16 ; ++i) {
+ printf("out_2_8[%d] = %e + %e i\n", i, zreals(out_2_8[i]), zimags(out_2_8[i]));
+ }
+ for (i = 0 ; i < 12 ; ++i) {
+ assert(zreals(out_2_8[i]) == zreals(in1[i]));
+ assert(zimags(out_2_8[i]) == zimags(in1[i]));
+ }
+ for (i = 0 ; i < 4 ; ++i) {
+ assert(zreals(out_2_8[i + 12]) == zreals(in2_2_2[i]));
+ assert(zimags(out_2_8[i + 12]) == zimags(in2_2_2[i]));
+ }
+
+}
+
+static void zrowcataTest() {
+ int i = 0;
+ double in1_real[6] = {1.0 , 2.0, 5.0 , 6.0, 9.0 , 10.0};
+ double in1_imag[6] = {1.0 , 2.0, 5.0 , 6.0, 9.0 , 10.0};
+ doubleComplex *in1 = DoubleComplexMatrix(in1_real, in1_imag, 6);
+ double in2_real[6] = {3.0 , 4.0 , 7.0 , 8.0 , 11.0 , 12.0};
+ double in2_imag[6] = {3.0 , 4.0 , 7.0 , 8.0 , 11.0 , 12.0};
+ doubleComplex *in2 = DoubleComplexMatrix(in2_real, in2_imag, 6);
+ doubleComplex out_4_3[12];
+ doubleComplex out_6_2[12];
+ /*
+ ** [ 1 5 9 ] ; [ 3 7 11 ] => [ 1 5 9 ]
+ ** [ 2 6 10 ] [ 4 8 12 ] [ 2 6 10 ]
+ ** [ 3 7 11 ]
+ ** [ 4 8 12 ]
+ */
+ zrowcata(in1, 2, 3, in2, 2, 3, out_4_3);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_4_3[%d] = %e + %e i\n", i, zreals(out_4_3[i]), zimags(out_4_3[i]));
+ assert(zreals(out_4_3[i]) == (double) i + 1.0);
+ assert(zimags(out_4_3[i]) == (double) i + 1.0);
+ }
+
+ /*
+ ** [ 1 6 ] ; [ 3 8 ]
+ ** [ 2 9 ] [ 4 11 ]
+ ** [ 5 10 ] [ 7 12 ]
+ */
+ zrowcata(in1, 3, 2, in2, 3, 2, out_6_2);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_6_2[%d] = %e + %e i\n", i, zreals(out_6_2[i]), zimags(out_6_2[i]));
+ }
+ assert(zreals(out_6_2[0]) == 1.0);
+ assert(zimags(out_6_2[0]) == 1.0);
+ assert(zreals(out_6_2[1]) == 2.0);
+ assert(zimags(out_6_2[1]) == 2.0);
+ assert(zreals(out_6_2[2]) == 5.0);
+ assert(zimags(out_6_2[2]) == 5.0);
+ assert(zreals(out_6_2[3]) == 3.0);
+ assert(zimags(out_6_2[3]) == 3.0);
+ assert(zreals(out_6_2[4]) == 4.0);
+ assert(zimags(out_6_2[4]) == 4.0);
+ assert(zreals(out_6_2[5]) == 7.0);
+ assert(zimags(out_6_2[5]) == 7.0);
+ assert(zreals(out_6_2[6]) == 6.0);
+ assert(zimags(out_6_2[6]) == 6.0);
+ assert(zreals(out_6_2[7]) == 9.0);
+ assert(zimags(out_6_2[7]) == 9.0);
+ assert(zreals(out_6_2[8]) == 10.0);
+ assert(zimags(out_6_2[8]) == 10.0);
+ assert(zreals(out_6_2[9]) == 8.0);
+ assert(zimags(out_6_2[9]) == 8.0);
+ assert(zreals(out_6_2[10]) == 11.0);
+ assert(zimags(out_6_2[10]) == 11.0);
+ assert(zreals(out_6_2[11]) == 12.0);
+ assert(zimags(out_6_2[11]) == 12.0);
+}
+
+int main(void) {
+ drowcatsTest();
+ dcolumncatsTest();
+ drowcataTest();
+ dcolumncataTest();
+ zrowcatsTest();
+ zcolumncatsTest();
+ zrowcataTest();
+ zcolumncataTest();
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/testFloatMatrixConcatenation.c b/2.3-1/src/c/matrixOperations/cat/testFloatMatrixConcatenation.c
new file mode 100644
index 00000000..b34a80f0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/testFloatMatrixConcatenation.c
@@ -0,0 +1,341 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include "constant.h"
+#include "cat.h"
+
+static void srowcatsTest(void) {
+ int i = 0;
+ float output[2] = {0};
+
+ /*
+ ** [ 42 51 ]
+ */
+ srowcats(42.0, 51.0, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == 42.0);
+ assert(output[1] == 51.0);
+
+ /*
+ ** [ PI PI/2 ]
+ */
+ srowcats(FPI, FPI / 2, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == FPI);
+ assert(output[1] == FPI / 2);
+}
+
+static void scolumncatsTest(void) {
+ int i = 0;
+ float output[2] = {0};
+
+ /*
+ ** [ 42 51 ]
+ */
+ scolumncats(42.0, 51.0, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == 42.0);
+ assert(output[1] == 51.0);
+
+ /*
+ ** [ PI PI/2 ]
+ */
+ scolumncats(FPI, FPI / 2, output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e\n", i, output[i]);
+ }
+ assert(output[0] == FPI);
+ assert(output[1] == FPI / 2);
+}
+
+static void scolumncataTest(void) {
+ int i = 0;
+ float in1[12] = {0.0, 1.0, 2.0 , 3.0 , 4.0, 5.0 , 6.0 , 7.0 , 8.0 , 9.0, 10.0 , 11.0};
+ float in2_1_1[1] = {12.0};
+ float out_1_13[13] = {0};
+ float in2_2_2[4] = {FPI, FPI / 2, FPI / 3, FPI / 4};
+ float out_2_8[16] = {0};
+
+ /*
+ ** columncat( [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 ], [ 12.0 ] )
+ ** [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 ]
+ */
+ scolumncata(in1, 1, 12, in2_1_1, 1, 1, out_1_13);
+ for (i = 0 ; i < 13 ; ++i) {
+ printf("out_1_13[%d] = %e\n", i, out_1_13[i]);
+ assert(out_1_13[i] == (float) i);
+ }
+
+ /*
+ ** [ 0 2 4 6 8 10 ] , [ PI PI/3 ] => [ 0 2 4 6 8 10 PI PI/3 ]
+ ** [ 1 3 5 7 9 11 ] [ PI/2 PI/4] [ 1 3 5 7 9 11 PI/2 PI/4 ]
+ */
+ scolumncata(in1, 2, 6, in2_2_2, 2, 2, out_2_8);
+ for (i = 0 ; i < 16 ; ++i) {
+ printf("out_2_8[%d] = %e\n", i, out_2_8[i]);
+ }
+ for (i = 0 ; i < 12 ; ++i) {
+ assert(out_2_8[i] == in1[i]);
+ }
+ for (i = 0 ; i < 4 ; ++i) {
+ assert(out_2_8[i + 12] == in2_2_2[i]);
+ }
+
+
+
+}
+
+static void srowcataTest() {
+ int i = 0;
+ float in1[6] = {1.0 , 2.0, 5.0 , 6.0, 9.0 , 10.0};
+ float in2[6] = {3.0 , 4.0 , 7.0 , 8.0 , 11.0 , 12.0};
+ float out_4_3[12] = {0};
+ float out_6_2[12] = {0};
+
+ float inNono1[6]={1.0,3.0,5.0,2.0,4.0,6.0};
+ float inNono2[2]={1.0,2.0};
+ float outNono[8]={0};
+ /*
+ ** [ 1 5 9 ] ; [ 3 7 11 ] => [ 1 5 9 ]
+ ** [ 2 6 10 ] [ 4 8 12 ] [ 2 6 10 ]
+ ** [ 3 7 11 ]
+ ** [ 4 8 12 ]
+ */
+ srowcata(in1, 2, 3, in2, 2, 3, out_4_3);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_4_3[%d] = %e\n", i, out_4_3[i]);
+ assert(out_4_3[i] == (float) i + 1.0);
+ }
+
+ /*
+ ** [ 1 6 ] ; [ 3 8 ]
+ ** [ 2 9 ] [ 4 11 ]
+ ** [ 5 10 ] [ 7 12 ]
+ */
+ srowcata(in1, 3, 2, in2, 3, 2, out_6_2);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_6_2[%d] = %e\n", i, out_6_2[i]);
+ }
+ assert(out_6_2[0] == 1.0);
+ assert(out_6_2[1] == 2.0);
+ assert(out_6_2[2] == 5.0);
+ assert(out_6_2[3] == 3.0);
+ assert(out_6_2[4] == 4.0);
+ assert(out_6_2[5] == 7.0);
+ assert(out_6_2[6] == 6.0);
+ assert(out_6_2[7] == 9.0);
+ assert(out_6_2[8] == 10.0);
+ assert(out_6_2[9] == 8.0);
+ assert(out_6_2[10] == 11.0);
+ assert(out_6_2[11] == 12.0);
+
+
+ srowcata(inNono1, 3, 2, inNono2, 1, 2, outNono);
+ assert(outNono[0] == 1.0);
+ assert(outNono[1] == 3.0);
+ assert(outNono[2] == 5.0);
+ assert(outNono[3] == 1.0);
+ assert(outNono[4] == 2.0);
+ assert(outNono[5] == 4.0);
+ assert(outNono[6] == 6.0);
+ assert(outNono[7] == 2.0);
+
+}
+
+static void crowcatsTest(void) {
+ int i = 0;
+ floatComplex output[2];
+
+ /*
+ ** [ 42+25i 51+38i ]
+ */
+ crowcats(FloatComplex(42.0, 25.0),
+ FloatComplex(51.0, 38.0),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, creals(output[i]), cimags(output[i]));
+ }
+ assert(creals(output[0]) == 42.0);
+ assert(cimags(output[0]) == 25.0);
+ assert(creals(output[1]) == 51.0);
+ assert(cimags(output[1]) == 38.0);
+
+ /*
+ ** [ PI+PI/2i PI/2+PIi ]
+ */
+ crowcats(FloatComplex(FPI, FPI/2),
+ FloatComplex(FPI/2, FPI),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, creals(output[i]), cimags(output[i]));
+ }
+ assert(creals(output[0]) == FPI);
+ assert(cimags(output[0]) == FPI / 2);
+ assert(creals(output[1]) == FPI / 2);
+ assert(cimags(output[1]) == FPI);
+}
+
+static void ccolumncatsTest(void) {
+ int i = 0;
+ floatComplex output[2];
+ /*
+ ** [ 42+25i 51+38i ]
+ */
+ ccolumncats(FloatComplex(42.0, 25.0),
+ FloatComplex(51.0, 38.0),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, creals(output[i]), cimags(output[i]));
+ }
+ assert(creals(output[0]) == 42.0);
+ assert(cimags(output[0]) == 25.0);
+ assert(creals(output[1]) == 51.0);
+ assert(cimags(output[1]) == 38.0);
+
+ /*
+ ** [ PI+PI/2i PI/2+PIi ]
+ */
+ ccolumncats(FloatComplex(FPI, FPI/2),
+ FloatComplex(FPI/2, FPI),
+ output);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("output[%d] = %e + %e i\n", i, creals(output[i]), cimags(output[i]));
+ }
+ assert(creals(output[0]) == FPI);
+ assert(cimags(output[0]) == FPI / 2);
+ assert(creals(output[1]) == FPI / 2);
+ assert(cimags(output[1]) == FPI);
+
+}
+
+static void ccolumncataTest(void) {
+ int i = 0;
+ float in1_real[12] = {0.0 , 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 , 7.0 , 8.0 , 9.0 , 10.0 , 11.0};
+ float in1_imag[12] = {11.0 , 10.0 , 9.0 , 8.0 , 7.0 , 6.0 , 5.0 , 4.0 , 3.0 , 2.0 , 1.0 , 0.0};
+ floatComplex *in1 = FloatComplexMatrix(in1_real, in1_imag, 12);
+ float in2_real[1] = {12.0};
+ float in2_imag[1] = {-1.0};
+ floatComplex *in2_1_1 = FloatComplexMatrix(in2_real, in2_imag, 1);
+ floatComplex out_1_13[13];
+
+ float in2_2_2_real[4] = {FPI, FPI / 2, FPI / 3, FPI / 4};
+ float in2_2_2_imag[4] = {FPI / 4, FPI / 3, FPI / 2, FPI};
+ floatComplex *in2_2_2 = FloatComplexMatrix(in2_2_2_real, in2_2_2_imag, 4);
+ floatComplex out_2_8[16];
+
+ /*
+ ** columncat( [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 ], [ 12.0 ] )
+ ** [ 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 ]
+ */
+ ccolumncata(in1, 1, 12, in2_1_1, 1, 1, out_1_13);
+ for (i = 0 ; i < 13 ; ++i) {
+ printf("out_1_13[%d] = %e + %e i\n", i, creals(out_1_13[i]), cimags(out_1_13[i]));
+ assert(creals(out_1_13[i]) == (float) i);
+ assert(cimags(out_1_13[i]) == 11.0 - (float) i);
+ }
+
+ /*
+ ** [ 0 2 4 6 8 10 ] , [ PI PI/3 ] => [ 0 2 4 6 8 10 PI PI/3 ]
+ ** [ 1 3 5 7 9 11 ] [ PI/2 PI/4] [ 1 3 5 7 9 11 PI/2 PI/4 ]
+ */
+ ccolumncata(in1, 2, 6, in2_2_2, 2, 2, out_2_8);
+ for (i = 0 ; i < 16 ; ++i) {
+ printf("out_2_8[%d] = %e + %e i\n", i, creals(out_2_8[i]), cimags(out_2_8[i]));
+ }
+ for (i = 0 ; i < 12 ; ++i) {
+ assert(creals(out_2_8[i]) == creals(in1[i]));
+ assert(cimags(out_2_8[i]) == cimags(in1[i]));
+ }
+ for (i = 0 ; i < 4 ; ++i) {
+ assert(creals(out_2_8[i + 12]) == creals(in2_2_2[i]));
+ assert(cimags(out_2_8[i + 12]) == cimags(in2_2_2[i]));
+ }
+
+}
+
+static void crowcataTest() {
+ int i = 0;
+ float in1_real[6] = {1.0 , 2.0, 5.0 , 6.0, 9.0 , 10.0};
+ float in1_imag[6] = {1.0 , 2.0, 5.0 , 6.0, 9.0 , 10.0};
+ floatComplex *in1 = FloatComplexMatrix(in1_real, in1_imag, 6);
+ float in2_real[6] = {3.0 , 4.0 , 7.0 , 8.0 , 11.0 , 12.0};
+ float in2_imag[6] = {3.0 , 4.0 , 7.0 , 8.0 , 11.0 , 12.0};
+ floatComplex *in2 = FloatComplexMatrix(in2_real, in2_imag, 6);
+ floatComplex out_4_3[12];
+ floatComplex out_6_2[12];
+ /*
+ ** [ 1 5 9 ] ; [ 3 7 11 ] => [ 1 5 9 ]
+ ** [ 2 6 10 ] [ 4 8 12 ] [ 2 6 10 ]
+ ** [ 3 7 11 ]
+ ** [ 4 8 12 ]
+ */
+ crowcata(in1, 2, 3, in2, 2, 3, out_4_3);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_4_3[%d] = %e + %e i\n", i, creals(out_4_3[i]), cimags(out_4_3[i]));
+ assert(creals(out_4_3[i]) == (float) i + 1.0);
+ assert(cimags(out_4_3[i]) == (float) i + 1.0);
+ }
+
+ /*
+ ** [ 1 6 ] ; [ 3 8 ]
+ ** [ 2 9 ] [ 4 11 ]
+ ** [ 5 10 ] [ 7 12 ]
+ */
+ crowcata(in1, 3, 2, in2, 3, 2, out_6_2);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("out_6_2[%d] = %e + %e i\n", i, creals(out_6_2[i]), cimags(out_6_2[i]));
+ }
+ assert(creals(out_6_2[0]) == 1.0);
+ assert(cimags(out_6_2[0]) == 1.0);
+ assert(creals(out_6_2[1]) == 2.0);
+ assert(cimags(out_6_2[1]) == 2.0);
+ assert(creals(out_6_2[2]) == 5.0);
+ assert(cimags(out_6_2[2]) == 5.0);
+ assert(creals(out_6_2[3]) == 3.0);
+ assert(cimags(out_6_2[3]) == 3.0);
+ assert(creals(out_6_2[4]) == 4.0);
+ assert(cimags(out_6_2[4]) == 4.0);
+ assert(creals(out_6_2[5]) == 7.0);
+ assert(cimags(out_6_2[5]) == 7.0);
+ assert(creals(out_6_2[6]) == 6.0);
+ assert(cimags(out_6_2[6]) == 6.0);
+ assert(creals(out_6_2[7]) == 9.0);
+ assert(cimags(out_6_2[7]) == 9.0);
+ assert(creals(out_6_2[8]) == 10.0);
+ assert(cimags(out_6_2[8]) == 10.0);
+ assert(creals(out_6_2[9]) == 8.0);
+ assert(cimags(out_6_2[9]) == 8.0);
+ assert(creals(out_6_2[10]) == 11.0);
+ assert(cimags(out_6_2[10]) == 11.0);
+ assert(creals(out_6_2[11]) == 12.0);
+ assert(cimags(out_6_2[11]) == 12.0);
+}
+
+int main(void) {
+ srowcatsTest();
+ scolumncatsTest();
+ srowcataTest();
+ scolumncataTest();
+ crowcatsTest();
+ ccolumncatsTest();
+ crowcataTest();
+ ccolumncataTest();
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj b/2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj
new file mode 100644
index 00000000..703f7465
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7F36A592-B667-43A4-B3C3-66636F2DECB8}</ProjectGuid>
+ <RootNamespace>testDoubleMatrixConcatenation</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMatrixConcatenation.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj.filters b/2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj.filters
new file mode 100644
index 00000000..cce0dbd2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/test_DoubleMatrixConcatenation/testDoubleMatrixConcatenation.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMatrixConcatenation.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj b/2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj
new file mode 100644
index 00000000..4efaa48d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B9413124-1841-4373-BFE2-AE6C78F24731}</ProjectGuid>
+ <RootNamespace>testFloatMatrixConcatenation</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMatrixConcatenation.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj.filters b/2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj.filters
new file mode 100644
index 00000000..c53933d0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/test_FloatMatrixConcatenation/testFloatMatrixConcatenation.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMatrixConcatenation.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cat/u16cata.c b/2.3-1/src/c/matrixOperations/cat/u16cata.c
new file mode 100644
index 00000000..8c33acb9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/u16cata.c
@@ -0,0 +1,63 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+/* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(1,A1,A2);
+output => y = [1 2 3; 4 5 6;7 8 9;10 11 12]
+*/
+
+void u16rowcata(uint16 *in1,int lines1,int columns1,uint16 *in2,int lines2,int columns2,uint16* out)
+{
+ int i = 0;
+ int j = 0;
+ for(i = 0;i < columns1 && i < columns2; ++i)
+ {
+ for(j = 0;j < lines1; ++j)
+ {
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
+ }
+ for(j = 0;j < lines2; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+
+ }
+}
+
+ /* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(2,A1,A2);
+output => y = [1 2 3 7 8 9; 4 5 6 10 11 12]
+*/
+
+void u16columncata(uint16 *in1,int lines1,int columns1,uint16 *in2,int lines2,int columns2,uint16* out)
+ {
+ int i = 0;
+ for(i = 0; i < lines1 * columns1;++i)
+ {
+ out[i] = in1[i];
+
+ }
+ for(i = 0;i < lines2 * columns2;++i)
+ {
+
+ out[i + lines1 * columns2] = in2[i];
+
+ }
+
+ }
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/cat/u16cats.c b/2.3-1/src/c/matrixOperations/cat/u16cats.c
new file mode 100644
index 00000000..942ed769
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/u16cats.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cat.h"
+
+void u16rowcats(uint16 in1,uint16 in2,uint16 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
+
+void u16columncats(uint16 in1,uint16 in2,uint16 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/u8cata.c b/2.3-1/src/c/matrixOperations/cat/u8cata.c
new file mode 100644
index 00000000..ab15f42f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/u8cata.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+/* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(1,A1,A2);
+output => y = [1 2 3; 4 5 6;7 8 9;10 11 12]
+*/
+
+void u8rowcata(uint8 *in1,int lines1,int columns1,uint8 *in2,int lines2,int columns2,uint8* out)
+{
+ int i = 0;
+ int j = 0;
+ for(i = 0;i < columns1 && i < columns2; ++i)
+ {
+ for(j = 0;j < lines1; ++j)
+ {
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
+ }
+ for(j = 0;j < lines2; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+
+ }
+}
+ /* From scilab help cat then the concatenation is done according to the rows
+A1 = [1 2 3;4 5 6];
+A2 = [7 8 9;10 11 12];
+y = cat(2,A1,A2);
+output => y = [1 2 3 7 8 9; 4 5 6 10 11 12]
+*/
+
+void u8columncata(uint8 *in1,int lines1,int columns1,uint8 *in2,int lines2,int columns2,uint8* out)
+ {
+ int i = 0;
+ for(i = 0; i < lines1 * columns1;++i)
+ {
+ out[i] = in1[i];
+
+ }
+ for(i = 0;i < lines2 * columns2;++i)
+ {
+
+ out[i + lines1 * columns2] = in2[i];
+
+ }
+
+ }
+
diff --git a/2.3-1/src/c/matrixOperations/cat/u8cats.c b/2.3-1/src/c/matrixOperations/cat/u8cats.c
new file mode 100644
index 00000000..92341f3b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/u8cats.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cat.h"
+
+void u8rowcats(uint8 in1,uint8 in2,uint8 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
+
+void u8columncats(uint8 in1,uint8 in2,uint8 *out)
+{
+ out[0] = in1;
+ out[1] = in2;
+
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/zcata.c b/2.3-1/src/c/matrixOperations/cat/zcata.c
new file mode 100644
index 00000000..bfb6e922
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/zcata.c
@@ -0,0 +1,54 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+/*
+** Emulate Scilab (from help cat) :
+** then the concatenation is done according to the rows
+**
+** A1=[1 2 3 ; 4 5 6]; A2=[7 8 9 ; 10 11 12]; y=cat(1,A1,A2) => y=[1 2 3 ; 4 5 61 ;7 8 9; 10 11 12]
+**
+*/
+
+void zrowcata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out) {
+ int i = 0;
+ int j = 0;
+ for (i = 0 ; i < columns1 && i < columns2 ; ++i)
+ {
+ for (j = 0 ; j < lines1 ; ++j)
+ {
+ /*out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];*/
+ }
+ for (j = 0 ; j < lines2 ; ++j)
+ {
+ out[i*(lines1 + lines2) + lines1 + j] = in2[i*lines2 + j];
+ }
+ }
+}
+
+
+/*
+** Emulate Scilab (from help cat) :
+** the concatenation is done according to the columns
+**
+** A1=[1 2 3;4 5 6]; A2=[7 8 9 ;10 11 12]; y=cat(2,A1,A2) => y=[1 2 3 7 8 9 ; 4 5 6 10 11 12]
+**
+*/
+void zcolumncata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out) {
+ int i = 0;
+ for (i = 0 ; i < lines1 * columns1 ; ++i) {
+ out[i] = in1[i];
+ }
+ for (i = 0; i < lines2 * columns2 ; ++i) {
+ out[i + lines1 * columns1] = in2[i];
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/zcats.c b/2.3-1/src/c/matrixOperations/cat/zcats.c
new file mode 100644
index 00000000..107000c9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cat/zcats.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "cat.h"
+
+void zrowcats(doubleComplex in1, doubleComplex in2, doubleComplex *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
+
+void zcolumncats(doubleComplex in1, doubleComplex in2, doubleComplex *out) {
+ out[0] = in1;
+ out[1] = in2;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/chol/Makefile.am b/2.3-1/src/c/matrixOperations/chol/Makefile.am
new file mode 100644
index 00000000..875adf20
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/Makefile.am
@@ -0,0 +1,71 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixChol_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I .\
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixChol.la
+
+HEAD = ../includes/chol.h
+
+libMatrixChol_la_SOURCES = $(HEAD) \
+ schols.c \
+ schola.c \
+ dchols.c \
+ dchola.c \
+ cchola.c \
+ zchola.c
+
+
+############
+## CHECK
+############
+
+
+check_PROGRAMS = testDoubleChol testFloatChol
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ libMatrixChol.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I .\
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleChol_SOURCES = testDoubleChol.c
+testDoubleChol_LDADD = $(check_LDADD)
+testDoubleChol_CFLAGS = $(check_INCLUDES)
+
+testFloatChol_SOURCES = testFloatChol.c
+testFloatChol_LDADD = $(check_LDADD)
+testFloatChol_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleChol testFloatChol
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/chol/Makefile.in b/2.3-1/src/c/matrixOperations/chol/Makefile.in
new file mode 100644
index 00000000..f7409811
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/Makefile.in
@@ -0,0 +1,772 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleChol$(EXEEXT) testFloatChol$(EXEEXT)
+TESTS = testDoubleChol$(EXEEXT) testFloatChol$(EXEEXT)
+subdir = src/c/matrixOperations/chol
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixChol_la_LIBADD =
+am__objects_1 =
+am_libMatrixChol_la_OBJECTS = $(am__objects_1) \
+ libMatrixChol_la-schols.lo libMatrixChol_la-schola.lo \
+ libMatrixChol_la-dchols.lo libMatrixChol_la-dchola.lo \
+ libMatrixChol_la-cchola.lo libMatrixChol_la-zchola.lo
+libMatrixChol_la_OBJECTS = $(am_libMatrixChol_la_OBJECTS)
+libMatrixChol_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMatrixChol_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleChol_OBJECTS = testDoubleChol-testDoubleChol.$(OBJEXT)
+testDoubleChol_OBJECTS = $(am_testDoubleChol_OBJECTS)
+testDoubleChol_DEPENDENCIES = $(check_LDADD)
+testDoubleChol_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleChol_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatChol_OBJECTS = testFloatChol-testFloatChol.$(OBJEXT)
+testFloatChol_OBJECTS = $(am_testFloatChol_OBJECTS)
+testFloatChol_DEPENDENCIES = $(check_LDADD)
+testFloatChol_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatChol_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixChol_la_SOURCES) $(testDoubleChol_SOURCES) \
+ $(testFloatChol_SOURCES)
+DIST_SOURCES = $(libMatrixChol_la_SOURCES) $(testDoubleChol_SOURCES) \
+ $(testFloatChol_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixChol_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I .\
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixChol.la
+HEAD = ../includes/chol.h
+libMatrixChol_la_SOURCES = $(HEAD) \
+ schols.c \
+ schola.c \
+ dchols.c \
+ dchola.c \
+ cchola.c \
+ zchola.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ libMatrixChol.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I .\
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleChol_SOURCES = testDoubleChol.c
+testDoubleChol_LDADD = $(check_LDADD)
+testDoubleChol_CFLAGS = $(check_INCLUDES)
+testFloatChol_SOURCES = testFloatChol.c
+testFloatChol_LDADD = $(check_LDADD)
+testFloatChol_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/chol/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/chol/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixChol.la: $(libMatrixChol_la_OBJECTS) $(libMatrixChol_la_DEPENDENCIES)
+ $(libMatrixChol_la_LINK) -rpath $(pkglibdir) $(libMatrixChol_la_OBJECTS) $(libMatrixChol_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleChol$(EXEEXT): $(testDoubleChol_OBJECTS) $(testDoubleChol_DEPENDENCIES)
+ @rm -f testDoubleChol$(EXEEXT)
+ $(testDoubleChol_LINK) $(testDoubleChol_OBJECTS) $(testDoubleChol_LDADD) $(LIBS)
+testFloatChol$(EXEEXT): $(testFloatChol_OBJECTS) $(testFloatChol_DEPENDENCIES)
+ @rm -f testFloatChol$(EXEEXT)
+ $(testFloatChol_LINK) $(testFloatChol_OBJECTS) $(testFloatChol_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixChol_la-cchola.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixChol_la-dchola.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixChol_la-dchols.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixChol_la-schola.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixChol_la-schols.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixChol_la-zchola.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleChol-testDoubleChol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatChol-testFloatChol.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixChol_la-schols.lo: schols.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -MT libMatrixChol_la-schols.lo -MD -MP -MF $(DEPDIR)/libMatrixChol_la-schols.Tpo -c -o libMatrixChol_la-schols.lo `test -f 'schols.c' || echo '$(srcdir)/'`schols.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixChol_la-schols.Tpo $(DEPDIR)/libMatrixChol_la-schols.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='schols.c' object='libMatrixChol_la-schols.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -c -o libMatrixChol_la-schols.lo `test -f 'schols.c' || echo '$(srcdir)/'`schols.c
+
+libMatrixChol_la-schola.lo: schola.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -MT libMatrixChol_la-schola.lo -MD -MP -MF $(DEPDIR)/libMatrixChol_la-schola.Tpo -c -o libMatrixChol_la-schola.lo `test -f 'schola.c' || echo '$(srcdir)/'`schola.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixChol_la-schola.Tpo $(DEPDIR)/libMatrixChol_la-schola.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='schola.c' object='libMatrixChol_la-schola.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -c -o libMatrixChol_la-schola.lo `test -f 'schola.c' || echo '$(srcdir)/'`schola.c
+
+libMatrixChol_la-dchols.lo: dchols.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -MT libMatrixChol_la-dchols.lo -MD -MP -MF $(DEPDIR)/libMatrixChol_la-dchols.Tpo -c -o libMatrixChol_la-dchols.lo `test -f 'dchols.c' || echo '$(srcdir)/'`dchols.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixChol_la-dchols.Tpo $(DEPDIR)/libMatrixChol_la-dchols.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dchols.c' object='libMatrixChol_la-dchols.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -c -o libMatrixChol_la-dchols.lo `test -f 'dchols.c' || echo '$(srcdir)/'`dchols.c
+
+libMatrixChol_la-dchola.lo: dchola.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -MT libMatrixChol_la-dchola.lo -MD -MP -MF $(DEPDIR)/libMatrixChol_la-dchola.Tpo -c -o libMatrixChol_la-dchola.lo `test -f 'dchola.c' || echo '$(srcdir)/'`dchola.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixChol_la-dchola.Tpo $(DEPDIR)/libMatrixChol_la-dchola.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dchola.c' object='libMatrixChol_la-dchola.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -c -o libMatrixChol_la-dchola.lo `test -f 'dchola.c' || echo '$(srcdir)/'`dchola.c
+
+libMatrixChol_la-cchola.lo: cchola.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -MT libMatrixChol_la-cchola.lo -MD -MP -MF $(DEPDIR)/libMatrixChol_la-cchola.Tpo -c -o libMatrixChol_la-cchola.lo `test -f 'cchola.c' || echo '$(srcdir)/'`cchola.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixChol_la-cchola.Tpo $(DEPDIR)/libMatrixChol_la-cchola.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cchola.c' object='libMatrixChol_la-cchola.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -c -o libMatrixChol_la-cchola.lo `test -f 'cchola.c' || echo '$(srcdir)/'`cchola.c
+
+libMatrixChol_la-zchola.lo: zchola.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -MT libMatrixChol_la-zchola.lo -MD -MP -MF $(DEPDIR)/libMatrixChol_la-zchola.Tpo -c -o libMatrixChol_la-zchola.lo `test -f 'zchola.c' || echo '$(srcdir)/'`zchola.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixChol_la-zchola.Tpo $(DEPDIR)/libMatrixChol_la-zchola.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zchola.c' object='libMatrixChol_la-zchola.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixChol_la_CFLAGS) $(CFLAGS) -c -o libMatrixChol_la-zchola.lo `test -f 'zchola.c' || echo '$(srcdir)/'`zchola.c
+
+testDoubleChol-testDoubleChol.o: testDoubleChol.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleChol_CFLAGS) $(CFLAGS) -MT testDoubleChol-testDoubleChol.o -MD -MP -MF $(DEPDIR)/testDoubleChol-testDoubleChol.Tpo -c -o testDoubleChol-testDoubleChol.o `test -f 'testDoubleChol.c' || echo '$(srcdir)/'`testDoubleChol.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleChol-testDoubleChol.Tpo $(DEPDIR)/testDoubleChol-testDoubleChol.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleChol.c' object='testDoubleChol-testDoubleChol.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleChol_CFLAGS) $(CFLAGS) -c -o testDoubleChol-testDoubleChol.o `test -f 'testDoubleChol.c' || echo '$(srcdir)/'`testDoubleChol.c
+
+testDoubleChol-testDoubleChol.obj: testDoubleChol.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleChol_CFLAGS) $(CFLAGS) -MT testDoubleChol-testDoubleChol.obj -MD -MP -MF $(DEPDIR)/testDoubleChol-testDoubleChol.Tpo -c -o testDoubleChol-testDoubleChol.obj `if test -f 'testDoubleChol.c'; then $(CYGPATH_W) 'testDoubleChol.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleChol.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleChol-testDoubleChol.Tpo $(DEPDIR)/testDoubleChol-testDoubleChol.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleChol.c' object='testDoubleChol-testDoubleChol.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleChol_CFLAGS) $(CFLAGS) -c -o testDoubleChol-testDoubleChol.obj `if test -f 'testDoubleChol.c'; then $(CYGPATH_W) 'testDoubleChol.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleChol.c'; fi`
+
+testFloatChol-testFloatChol.o: testFloatChol.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatChol_CFLAGS) $(CFLAGS) -MT testFloatChol-testFloatChol.o -MD -MP -MF $(DEPDIR)/testFloatChol-testFloatChol.Tpo -c -o testFloatChol-testFloatChol.o `test -f 'testFloatChol.c' || echo '$(srcdir)/'`testFloatChol.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatChol-testFloatChol.Tpo $(DEPDIR)/testFloatChol-testFloatChol.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatChol.c' object='testFloatChol-testFloatChol.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatChol_CFLAGS) $(CFLAGS) -c -o testFloatChol-testFloatChol.o `test -f 'testFloatChol.c' || echo '$(srcdir)/'`testFloatChol.c
+
+testFloatChol-testFloatChol.obj: testFloatChol.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatChol_CFLAGS) $(CFLAGS) -MT testFloatChol-testFloatChol.obj -MD -MP -MF $(DEPDIR)/testFloatChol-testFloatChol.Tpo -c -o testFloatChol-testFloatChol.obj `if test -f 'testFloatChol.c'; then $(CYGPATH_W) 'testFloatChol.c'; else $(CYGPATH_W) '$(srcdir)/testFloatChol.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatChol-testFloatChol.Tpo $(DEPDIR)/testFloatChol-testFloatChol.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatChol.c' object='testFloatChol-testFloatChol.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatChol_CFLAGS) $(CFLAGS) -c -o testFloatChol-testFloatChol.obj `if test -f 'testFloatChol.c'; then $(CYGPATH_W) 'testFloatChol.c'; else $(CYGPATH_W) '$(srcdir)/testFloatChol.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/chol/cchola.c b/2.3-1/src/c/matrixOperations/chol/cchola.c
new file mode 100644
index 00000000..4b657e6c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/cchola.c
@@ -0,0 +1,91 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#else
+#include "multiplication.h"
+#include "division.h"
+#include "subtraction.h"
+#include "sqrt.h"
+#endif
+#include "chol.h"
+
+
+void cchola(floatComplex * in, int size, floatComplex *out){
+ /* param in : input matrix (square matrix)
+ param size : number of rows or columns
+ param out : output upper triangular matrix
+ */
+
+ /*
+ We compute U as A=Ut*U
+ */
+
+
+#ifndef WITHOUT_LAPACK
+
+ /*We have to use a double, copy of in,
+ cause dpotrf works only with double, not with float*/
+ doubleComplex* tmp;
+ int i=0, j=0, info=0;
+
+ tmp=(doubleComplex*)malloc((unsigned int)(size*size)*sizeof(doubleComplex));
+ for(i=0;i<size*size;i++) tmp[i]=DoubleComplex((double)creals(in[i]),(double)cimags(in[i]));
+
+ zpotrf_("U", &size, tmp, &size, &info);
+
+ for(i=0;i<size*size;i++) out[i]=FloatComplex((float)zreals(tmp[i]),(float)zimags(tmp[i]));
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=FloatComplex(0,0);
+ }
+ }
+ free(tmp);
+#else
+ /* Do not use Lapack functions*/
+
+ int i=0, j=0, k=0;
+ floatComplex tmp,transposee;
+ float accu;
+
+ for (i=0;i<size;i++){
+ accu=0.0f;
+ for (j=0;j<i;j++){
+ tmp=in[i*size+j];
+ for (k=0;k<j;k++){
+ transposee=FloatComplex(creals(out[j*size+k]),-cimags(out[j*size+k]));
+ tmp = cdiffs(tmp,cmuls(out[i*size+k],transposee));
+ }
+ out[i*size+j]= crdivs(tmp,out[j*size+j]);
+ accu += creals(out[i*size+j])*creals(out[i*size+j]);
+ accu += cimags(out[i*size+j])*cimags(out[i*size+j]);
+ }
+ tmp = FloatComplex(creals(in[i*size+i])-accu,0);
+ out[i*size+i]=csqrts(tmp);
+ }
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=FloatComplex(0,0);
+ }
+ }
+
+#endif
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/chol/dchola.c b/2.3-1/src/c/matrixOperations/chol/dchola.c
new file mode 100644
index 00000000..1fe54095
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/dchola.c
@@ -0,0 +1,69 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#else
+#include "math.h"
+#endif
+
+#include "chol.h"
+#include <stdio.h>
+void dchola(double * in, int size, double *out){
+ /* param in : input matrix (square matrix)
+ param size : number of rows or columns
+ param U : output upper triangular matrix
+ */
+
+#ifndef WITHOUT_LAPACK
+ int i=0,j=0,info=0;
+
+ for (i=0;i<size*size;i++) out[i]=in[i];
+
+ C2F(dpotrf)("U", &size, out, &size, &info);
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=0;
+ }
+ }
+
+#else
+ /* Do not use Lapack functions*/
+ int i=0, j=0, k=0;
+ double tmp=0, accu=0;
+
+
+ for (i=0;i<size;i++){
+ accu=0;
+ for (j=0;j<i;j++){
+ tmp=in[i*size+j];
+ for (k=0;k<j;k++){
+ tmp-=out[i*size+k]*out[j*size+k];
+ }
+ out[i*size+j]=tmp/out[j*size+j];
+ accu+=out[i*size+j]*out[i*size+j];
+ }
+ out[i*size+i]=sqrt(in[i*size+i]-accu);
+ }
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=0;
+ }
+ }
+
+#endif
+}
diff --git a/2.3-1/src/c/matrixOperations/chol/dchols.c b/2.3-1/src/c/matrixOperations/chol/dchols.c
new file mode 100644
index 00000000..bfdb6469
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/dchols.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "chol.h"
+#include "sqrt.h"
+#include "lapack.h"
+#include <stdio.h>
+
+double dchols(double in){
+ return dsqrts(in);
+}
diff --git a/2.3-1/src/c/matrixOperations/chol/schola.c b/2.3-1/src/c/matrixOperations/chol/schola.c
new file mode 100644
index 00000000..cb394c35
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/schola.c
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#else
+#include "sqrt.h"
+#endif
+#include "chol.h"
+
+void schola(float * in, int size, float *out){
+ /* param in : input matrix (square matrix)
+ param size : number of rows or columns
+ param U : output upper triangular matrix
+ */
+
+#ifndef WITHOUT_LAPACK
+
+ /*We have to use a double, copy of in,
+ cause dpotrf works only with double, not with float*/
+ double* tmp;
+ int i=0,j=0,info=0;
+
+ tmp=(double*)malloc((unsigned int)(size*size)*sizeof(double));
+ for (i=0;i<size*size;i++) tmp[i]=(double)in[i];
+
+ C2F(dpotrf)("U", &size, tmp, &size, &info);
+
+ for (i=0;i<size*size;i++) out[i]=(float)tmp[i];
+
+ free(tmp);
+
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=0;
+ }
+ }
+
+#else
+ /* Do not use Lapack functions*/
+ int i=0, j=0, k=0;
+ float tmp=0, accu=0;
+ for (i=0;i<size;i++){
+ accu=0;
+ for (j=0;j<i;j++){
+ tmp=in[i*size+j];
+ for (k=0;k<j;k++){
+ tmp-=out[i*size+k]*out[j*size+k];
+ }
+ out[i*size+j]=tmp/out[j*size+j];
+ accu+=out[i*size+j]*out[i*size+j];
+ }
+ out[i*size+i]=ssqrts(in[i*size+i]-accu);
+ }
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=0;
+ }
+ }
+
+#endif
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/chol/schols.c b/2.3-1/src/c/matrixOperations/chol/schols.c
new file mode 100644
index 00000000..db99e3cd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/schols.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "chol.h"
+#include "sqrt.h"
+
+float schols(float in){
+ return ssqrts(in);
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/chol/testDoubleChol.c b/2.3-1/src/c/matrixOperations/chol/testDoubleChol.c
new file mode 100644
index 00000000..e4725419
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/testDoubleChol.c
@@ -0,0 +1,152 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include "chol.h"
+
+/* FIXME : assert à 1e-14 pour une valeur d'entrée de 0.003... */
+
+
+static void dcholsTest(void){
+ double in=4;
+ double out;
+ printf("\n >>> DCholS <<<\n");
+ out=dchols(in);
+ assert( (fabs(out-2) / fabs(out)) <1e-16);
+
+}
+
+static void dcholaTest(void){
+ /* in2 non viable car non définie positive, ne fonctionne pas dans Scilab */
+ double in2[49]={0.2113249,0.7560439,0.0002211,0.3303271, 0.6653811,0.6283918,0.8497452 ,\
+ 0.6857310,0.8782165,0.0683740,0.5608486,0.6623569,0.7263507,0.1985144 ,\
+ 0.5442573, 0.2320748 , 0.2312237, 0.2164633, 0.8833888, 0.6525135, 0.3076091 ,\
+ 0.9329616, 0.2146008 , 0.312642 , 0.3616361 , 0.2922267 , 0.5664249 , 0.4826472 ,\
+ 0.3321719, 0.5935095, 0.5015342 , 0.4368588 , 0.2693125 , 0.6325745 , 0.4051954 ,\
+ 0.9184708, 0.0437334, 0.4818509 , 0.2639556 , 0.4148104 , 0.2806498 , 0.1280058 ,\
+ 0.7783129, 0.2119030, 0.1121355 ,0.6856896 ,0.1531217 ,0.6970851 ,0.8415518 };
+
+
+ double in[9]= {0.722725308034569025040,0.8976796260103583335877,0.2427821881137788295746,\
+ 0.4337721113115549087524,0.9677053210325539112091,0.5068534435704350471497,\
+ 0.523297640960663557053,0.5596947595477104187012,0.5617307000793516635895};
+ double res[9]={0.8501325238070644996213,0,0,\
+ 0.5102405791617476982225,0.8410468907315681308390,0,\
+ 0.6155483131232661886401,0.2920372626834314977451,0.3123222878611475739064};
+ double out[9]={0}, out2[49]={0};
+ int size=3;
+ int i;
+
+ printf("\n >>> DCholA <<<\n");
+ dchola(in2,7,out2);
+ for (i=0;i<49;i++)printf("out2[i]= %f\n",out2[i]);
+ dchola(in,size,out);
+ for (i=0;i<9;i++){
+ if (out[i]>1e-16) assert( (fabs(out[i]-res[i]) / fabs(out[i])) <3e-16);
+ }
+}
+
+
+static void zcholsTest(void){
+ doubleComplex in;
+ doubleComplex out;
+ in=DoubleComplex(3,1);
+ printf("\n >>> ZCholS <<<\n");
+ out=zchols(in);
+ printf("result : %f\n",zreals(out));
+
+}
+
+
+
+static void zcholaTest(void){
+
+ {
+ double inR[9]= {9,4,2,4,5,1,2,1,4};
+ double inI[9]= {1,-1,2,-1,-4,1,2,1,4};
+ double resR[9]= {3,0,0,1.333333333333333259319,\
+ 1.763834207376393736766,0,0.6666666666666666296592,\
+ 0.1889822365046136265487,1.7525491637693282331867};
+ double resI[9]= {0,0,0,- 0.3333333333333333148296,\
+ 0,0,0.6666666666666666296592,- 0.0629940788348712366052,0};
+ doubleComplex *in, out[9];
+ int i;
+
+ printf("\n >>> ZCholA Test1 <<<\n");
+ in=DoubleComplexMatrix(inR,inI,9);
+
+ zchola(in,3,out);
+ for (i=0;i<9;i++) printf("indice : %d out : %f+%f *i\n",i,zreals(out[i]),zimags(out[i]));
+ for (i=0;i<9;i++){
+ if (zreals(out[i])>1e-16)
+ assert( (fabs(zreals(out[i])-resR[i]) / fabs(zreals(out[i]))) <3e-16);
+ if (zimags(out[i])>1e-16)
+ assert( (fabs(zimags(out[i])-resI[i]) / fabs(zimags(out[i]))) <3e-16);
+ }
+ free(in);
+ }
+
+
+ {
+ double inR[9]= {1.90865864663256012967,0.9230693052910239337905,1.7121882610664511670251,
+ 0.9230693052910239337905,1.6572668858351540244200,0.8330281942607563605563,
+ 1.7121882610664511670251,0.8330281942607563605563,1.6029756354175805910245};
+ double inI[9]= {0.0000000000000001301043,- 0.0097963300301950190230,- 0.2359069351837047023857,
+ 0.0097963300301950190230,0,- 0.0909413002461877950644,
+ 0.2359069351837046468745,0.0909413002461877811866,0.0000000000000000034694};
+ double resR[9]= {1.381542126260564051776 ,0,0,
+ 0.6681441613289825776079,1.1003635695246982706408 ,0,
+ 1.239331199911254843826,0.0034220321368758992685,0.1941496531533084546339 };
+ double resI[9]= {0,0,0,
+ 0.0070908659562273776769,0,0,
+ 0.1707562373231691910114,- 0.0130507331536391171789,0};
+
+ doubleComplex *in, out[9];
+ int i;
+
+ printf("\n >>> ZCholA Test2 <<<\n");
+ in=DoubleComplexMatrix(inR,inI,9);
+
+ zchola(in,3,out);
+
+ for (i=0;i<9;i++){
+ if (zreals(out[i])>1e-16)
+ assert( (fabs(zreals(out[i])-resR[i]) / fabs(zreals(out[i]))) <3e-15);
+ if (zimags(out[i])>1e-16)
+ assert( (fabs(zimags(out[i])-resI[i]) / fabs(zimags(out[i]))) <1e-15);
+ }
+ free(in);
+ }
+
+
+
+}
+
+
+static int cholTest(void){
+ printf("\n >>> Double Chol <<<\n");
+ dcholsTest();
+ dcholaTest();
+ zcholsTest();
+ zcholaTest();
+ return 0;
+}
+
+
+int main (void){
+ assert(cholTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/chol/testFloatChol.c b/2.3-1/src/c/matrixOperations/chol/testFloatChol.c
new file mode 100644
index 00000000..884d0478
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/testFloatChol.c
@@ -0,0 +1,97 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+ #include <stdio.h>
+ #include "chol.h"
+
+static void scholsTest(void){
+ float in=4;
+ float out;
+ printf("\n >>> SCholS <<<\n");
+ out=schols(in);
+ printf("result : %f\n",out);
+
+}
+
+static void scholaTest(void){
+ float in[9]= {0.722725308034569025040f,0.8976796260103583335877f,0.2427821881137788295746f,\
+0.4337721113115549087524f,0.9677053210325539112091f,0.5068534435704350471497f,\
+0.523297640960663557053f,0.5596947595477104187012f,0.5617307000793516635895f};
+ float res[9]={0.8501325238070644996213f,0.0f,0.0f,\
+0.5102405791617476982225f,0.8410468907315681308390f,0.0f,\
+0.6155483131232661886401f,0.2920372626834314977451f,0.3123222878611475739064f};
+ float out[9];
+ int size=3;
+ int i;
+ printf("\n >>> SCholA <<<\n");
+ schola(in,size,out);
+ for (i=0;i<9;i++){
+ if (out[i]>1e-16) assert( (fabs(out[i]-res[i]) / fabs(out[i])) <1e-6);
+ }
+}
+
+
+static void ccholsTest(void){
+ floatComplex in;
+ floatComplex out;
+ in=FloatComplex(3,1);
+ printf("\n >>> CCholS <<<\n");
+ out=cchols(in);
+ printf("result : %f\n",creals(out));
+
+}
+
+
+
+
+
+
+
+static void ccholaTest(void){
+ float inR[9]= {9.0f,4.0f,2.0f,4.0f,5.0f,1.0f,2.0f,1.0f,4.0f};
+ float inI[9]= {0.0f,-1.0f,2.0f,-1.0f,0.0f,1.0f,2.0f,1.0f,0.0f};
+ float resR[9]= {3.0f,0.0f,0.0f,1.333333333333333259319f,\
+ 1.763834207376393736766f,0.0f,0.6666666666666666296592f,\
+ 0.1889822365046136265487f,1.7525491637693282331867f};
+ float resI[9]= {0.0f,0.0f,0.0f,- 0.3333333333333333148296f,\
+ 0.0f,0.0f,0.6666666666666666296592f,- 0.0629940788348712366052f,0.0f};
+ floatComplex *in, out[9];
+ int i;
+
+ printf("\n >>> CCholA <<<\n");
+ in=FloatComplexMatrix(inR,inI,9);
+
+ cchola(in,3,out);
+ for (i=0;i<9;i++) printf("indice : %d out : %f+%f *i\n",i,creals(out[i]),cimags(out[i]));
+ for (i=0;i<9;i++){
+ if (creals(out[i])>1e-16)
+ assert( (fabs(creals(out[i])-resR[i]) / fabs(creals(out[i]))) <1e-8);
+ if (cimags(out[i])>1e-16)
+ assert( (fabs(cimags(out[i])-resI[i]) / fabs(cimags(out[i]))) <1e-8);
+ }
+}
+static int cholTest(void){
+ printf("\n >>> Float Chol <<<\n");
+ scholsTest();
+ scholaTest();
+ ccholsTest();
+ ccholaTest();
+ return 0;
+}
+
+
+int main (void){
+ assert(cholTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj b/2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj
new file mode 100644
index 00000000..4a973585
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{2B2D70A6-F2DB-4160-972C-9ECFA0B0699A}</ProjectGuid>
+ <RootNamespace>testDoubleChol</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleChol.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj.filters b/2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj.filters
new file mode 100644
index 00000000..bb07d366
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/test_DoubleChol/testDoubleChol.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleChol.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj b/2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj
new file mode 100644
index 00000000..ba9fabde
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C5BA0B86-B432-4EF6-95DE-75C026994F4F}</ProjectGuid>
+ <RootNamespace>testFloatChol</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatChol.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj.filters b/2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj.filters
new file mode 100644
index 00000000..ae308d52
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/test_FloatChol/testFloatChol.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatChol.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/chol/zchola.c b/2.3-1/src/c/matrixOperations/chol/zchola.c
new file mode 100644
index 00000000..730c2415
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/chol/zchola.c
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#else
+#include "multiplication.h"
+#include "division.h"
+#include "subtraction.h"
+#include "sqrt.h"
+#endif
+
+#include "chol.h"
+
+void zchola(doubleComplex * in, int size, doubleComplex *out){
+ /* param in : input matrix (square matrix)
+ param size : number of rows or columns
+ param out : output upper triangular matrix
+ */
+
+#ifndef WITHOUT_LAPACK
+ int i=0, j=0, info=0;
+
+ for(i=0;i<size*size;i++) out[i]=in[i];
+
+ C2F(zpotrf)("U", &size, out, &size, &info);
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=DoubleComplex(0,0);
+ }
+ }
+
+#else
+ /* Do not use Lapack functions*/
+
+ int i=0, j=0, k=0;
+ doubleComplex tmp,transposee;
+ double accu;
+
+ for (i=0;i<size;i++){
+ accu=0.0f;
+ for (j=0;j<i;j++){
+ tmp=in[i*size+j];
+ for (k=0;k<j;k++){
+ transposee=DoubleComplex(zreals(out[j*size+k]),-zimags(out[j*size+k]));
+ tmp = zdiffs(tmp,zmuls(out[i*size+k],transposee));
+ }
+ out[i*size+j]= zrdivs(tmp,out[j*size+j]);
+ accu += zreals(out[i*size+j])*zreals(out[i*size+j]);
+ accu += zimags(out[i*size+j])*zimags(out[i*size+j]);
+ }
+ tmp = DoubleComplex(zreals(in[i*size+i])-accu,0);
+ out[i*size+i]=zsqrts(tmp);
+ }
+
+ /*Zeros in the lower triangular part*/
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ out[j+i*size]=DoubleComplex(0,0);
+ }
+ }
+
+
+
+#endif
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/cumprod/dcolumncumproda.c b/2.3-1/src/c/matrixOperations/cumprod/dcolumncumproda.c
new file mode 100644
index 00000000..b64fac48
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/dcolumncumproda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void dcolumncumproda(double *in1, int row, int column, double *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/dcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/dcumproda.c
new file mode 100644
index 00000000..199880c6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/dcumproda.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void dcumproda(double *in1, int row, int column, double *out)
+{
+ int row_cnt, col_cnt = 0;
+ double cumprod = 1;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumprod *= in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumprod;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/drowcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/drowcumproda.c
new file mode 100644
index 00000000..21082d0c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/drowcumproda.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void drowcumproda(double *in1, int row, int column, double *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/i16columncumproda.c b/2.3-1/src/c/matrixOperations/cumprod/i16columncumproda.c
new file mode 100644
index 00000000..e5af54bb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/i16columncumproda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+ /*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void i16columncumproda(int16 *in1, int row, int column, int16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/i16cumproda.c b/2.3-1/src/c/matrixOperations/cumprod/i16cumproda.c
new file mode 100644
index 00000000..8bee315d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/i16cumproda.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void i16cumproda(int16 *in1, int row, int column, int16 *out)
+{
+ int row_cnt, col_cnt = 0;
+ int16 cumprod = 1;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumprod *= in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumprod;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/i16rowcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/i16rowcumproda.c
new file mode 100644
index 00000000..0c38b5eb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/i16rowcumproda.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void i16rowcumproda(int16 *in1, int row, int column, int16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/i8columncumproda.c b/2.3-1/src/c/matrixOperations/cumprod/i8columncumproda.c
new file mode 100644
index 00000000..cf2156dd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/i8columncumproda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void i8columncumproda(int8 *in1, int row, int column, int8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/i8cumproda.c b/2.3-1/src/c/matrixOperations/cumprod/i8cumproda.c
new file mode 100644
index 00000000..f0a54043
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/i8cumproda.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void i8cumproda(int8 *in1, int row, int column, int8 *out)
+{
+ int row_cnt, col_cnt = 0;
+ int8 cumprod = 1;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumprod *= in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumprod;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/i8rowcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/i8rowcumproda.c
new file mode 100644
index 00000000..c2ecf199
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/i8rowcumproda.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void i8rowcumproda(int8 *in1, int row, int column, int8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/scolumncumproda.c b/2.3-1/src/c/matrixOperations/cumprod/scolumncumproda.c
new file mode 100644
index 00000000..e97ca903
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/scolumncumproda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void scolumncumproda(float *in1, int row, int column, float *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/scumproda.c b/2.3-1/src/c/matrixOperations/cumprod/scumproda.c
new file mode 100644
index 00000000..fb55a31a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/scumproda.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void scumproda(float *in1, int row, int column, float *out)
+{
+ int row_cnt, col_cnt = 0;
+ float cumprod = 1;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumprod += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumprod;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/srowcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/srowcumproda.c
new file mode 100644
index 00000000..cab4e443
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/srowcumproda.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void srowcumproda(float *in1, int row, int column, float *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/u16columncumproda.c b/2.3-1/src/c/matrixOperations/cumprod/u16columncumproda.c
new file mode 100644
index 00000000..7b3c2d87
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/u16columncumproda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void u16columncumproda(uint16 *in1, int row, int column, uint16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/u16cumproda.c b/2.3-1/src/c/matrixOperations/cumprod/u16cumproda.c
new file mode 100644
index 00000000..5740e86f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/u16cumproda.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void u16cumproda(uint16 *in1, int row, int column, uint16 *out)
+{
+ int row_cnt, col_cnt = 0;
+ uint16 cumprod = 1;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumprod *= in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumprod;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/u16rowcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/u16rowcumproda.c
new file mode 100644
index 00000000..23b452c4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/u16rowcumproda.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void u16rowcumproda(uint16 *in1, int row, int column, uint16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/u8columncumproda.c b/2.3-1/src/c/matrixOperations/cumprod/u8columncumproda.c
new file mode 100644
index 00000000..3a6ee92c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/u8columncumproda.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void u8columncumproda(uint8 *in1, int row, int column, uint8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/u8cumproda.c b/2.3-1/src/c/matrixOperations/cumprod/u8cumproda.c
new file mode 100644
index 00000000..8970f193
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/u8cumproda.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void u8cumproda(uint8 *in1, int row, int column, uint8 *out)
+{
+ int row_cnt, col_cnt = 0;
+ uint8 cumprod = 1;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumprod *= in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumprod;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumprod/u8rowcumproda.c b/2.3-1/src/c/matrixOperations/cumprod/u8rowcumproda.c
new file mode 100644
index 00000000..61b214c3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumprod/u8rowcumproda.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumprod.h"
+#include "types.h"
+
+void u8rowcumproda(uint8 *in1, int row, int column, uint8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ * out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/dcolumncumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/dcolumncumsuma.c
new file mode 100644
index 00000000..daf60134
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/dcolumncumsuma.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void dcolumncumsuma(double *in1, int row, int column, double *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/dcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/dcumsuma.c
new file mode 100644
index 00000000..11b0a88f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/dcumsuma.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void dcumsuma(double *in1, int row, int column, double *out)
+{
+ int row_cnt, col_cnt = 0;
+ double cumsum = 0;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumsum += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumsum;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/drowcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/drowcumsuma.c
new file mode 100644
index 00000000..4bb3f320
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/drowcumsuma.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void drowcumsuma(double *in1, int row, int column, double *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/i16columncumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/i16columncumsuma.c
new file mode 100644
index 00000000..ae84428b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/i16columncumsuma.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void i16columncumsuma(int16 *in1, int row, int column, int16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/i16cumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/i16cumsuma.c
new file mode 100644
index 00000000..4e2fb591
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/i16cumsuma.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void i16cumsuma(int16 *in1, int row, int column, int16 *out)
+{
+ int row_cnt, col_cnt = 0;
+ int16 cumsum = 0;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumsum += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumsum;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/i16rowcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/i16rowcumsuma.c
new file mode 100644
index 00000000..67cb9c7f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/i16rowcumsuma.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void i16rowcumsuma(int16 *in1, int row, int column, int16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/i8columncumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/i8columncumsuma.c
new file mode 100644
index 00000000..67f72bcc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/i8columncumsuma.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void i8columncumsuma(int8 *in1, int row, int column, int8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/i8cumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/i8cumsuma.c
new file mode 100644
index 00000000..8aa92871
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/i8cumsuma.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void i8cumsuma(int8 *in1, int row, int column, int8 *out)
+{
+ int row_cnt, col_cnt = 0;
+ int8 cumsum = 0;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumsum += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumsum;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/i8rowcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/i8rowcumsuma.c
new file mode 100644
index 00000000..a9e7da81
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/i8rowcumsuma.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void i8rowcumsuma(int8 *in1, int row, int column, int8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/scolumncumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/scolumncumsuma.c
new file mode 100644
index 00000000..a7e8a851
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/scolumncumsuma.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void scolumncumsuma(float *in1, int row, int column, float *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/scumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/scumsuma.c
new file mode 100644
index 00000000..122e165d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/scumsuma.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void scumsuma(float *in1, int row, int column, float *out)
+{
+ int row_cnt, col_cnt = 0;
+ float cumsum = 0;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumsum += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumsum;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/srowcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/srowcumsuma.c
new file mode 100644
index 00000000..3af5d367
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/srowcumsuma.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void srowcumsuma(float *in1, int row, int column, float *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/u16columncumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/u16columncumsuma.c
new file mode 100644
index 00000000..aa16a582
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/u16columncumsuma.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void u16columncumsuma(uint16 *in1, int row, int column, uint16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/u16cumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/u16cumsuma.c
new file mode 100644
index 00000000..d403571a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/u16cumsuma.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void u16cumsuma(uint16 *in1, int row, int column, uint16 *out)
+{
+ int row_cnt, col_cnt = 0;
+ uint16 cumsum = 0;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumsum += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumsum;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/u16rowcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/u16rowcumsuma.c
new file mode 100644
index 00000000..0ef0945c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/u16rowcumsuma.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void u16rowcumsuma(uint16 *in1, int row, int column, uint16 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/u8columncumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/u8columncumsuma.c
new file mode 100644
index 00000000..890a0bee
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/u8columncumsuma.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void u8columncumsuma(uint8 *in1, int row, int column, uint8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*Assign elements in first column as it is*/
+ for(row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ out[row_cnt] = in1[row_cnt];
+ }
+
+ /*For second column onwards*/
+ for (row_cnt = 0; row_cnt < row; row_cnt++)
+ {
+ for ( col_cnt = 1; col_cnt < column; col_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[(col_cnt-1)*row+row_cnt];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/u8cumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/u8cumsuma.c
new file mode 100644
index 00000000..4f2acfe6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/u8cumsuma.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void u8cumsuma(uint8 *in1, int row, int column, uint8 *out)
+{
+ int row_cnt, col_cnt = 0;
+ uint8 cumsum = 0;
+ for (col_cnt = 0; col_cnt < row; col_cnt++)
+ {
+ for ( row_cnt = 0; row_cnt < column; row_cnt++)
+ {
+ cumsum += in1[col_cnt*column+row_cnt];
+ out[col_cnt*column+row_cnt] = cumsum;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/cumsum/u8rowcumsuma.c b/2.3-1/src/c/matrixOperations/cumsum/u8rowcumsuma.c
new file mode 100644
index 00000000..1204d83e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/cumsum/u8rowcumsuma.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function returns cumulative sum of members of array/matrix*/
+
+#include "cumsum.h"
+#include "types.h"
+
+void u8rowcumsuma(uint8 *in1, int row, int column, uint8 *out)
+{
+ int row_cnt, col_cnt = 0;
+
+ /*assign elements in first row as it is*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ out[col_cnt*row] = in1[col_cnt*row];
+ }
+ /*For second row onwards*/
+ for (col_cnt = 0; col_cnt < column; col_cnt++)
+ {
+ for ( row_cnt = 1; row_cnt < row; row_cnt++)
+ {
+
+ out[col_cnt*row+row_cnt] = in1[col_cnt*row+row_cnt] \
+ + out[col_cnt*row+row_cnt -1];
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/Makefile.am b/2.3-1/src/c/matrixOperations/determ/Makefile.am
new file mode 100644
index 00000000..5cef2282
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/Makefile.am
@@ -0,0 +1,64 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixDeterm_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixDeterm.la
+
+HEAD = ../includes/determ.h
+
+libMatrixDeterm_la_SOURCES = $(HEAD) \
+ sdeterma.c \
+ ddeterma.c \
+ cdeterma.c \
+ zdeterma.c
+
+
+############
+## CHECK
+############
+
+
+check_PROGRAMS = testDoubleDeterm testFloatDeterm
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ libMatrixDeterm.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleDeterm_SOURCES = testDoubleDeterm.c
+testDoubleDeterm_LDADD = $(check_LDADD)
+testDoubleDeterm_CFLAGS = $(check_INCLUDES)
+
+testFloatDeterm_SOURCES = testFloatDeterm.c
+testFloatDeterm_LDADD = $(check_LDADD)
+testFloatDeterm_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleDeterm testFloatDeterm
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/determ/Makefile.in b/2.3-1/src/c/matrixOperations/determ/Makefile.in
new file mode 100644
index 00000000..d3d6f51b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/Makefile.in
@@ -0,0 +1,750 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleDeterm$(EXEEXT) testFloatDeterm$(EXEEXT)
+TESTS = testDoubleDeterm$(EXEEXT) testFloatDeterm$(EXEEXT)
+subdir = src/c/matrixOperations/determ
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixDeterm_la_LIBADD =
+am__objects_1 =
+am_libMatrixDeterm_la_OBJECTS = $(am__objects_1) \
+ libMatrixDeterm_la-sdeterma.lo libMatrixDeterm_la-ddeterma.lo \
+ libMatrixDeterm_la-cdeterma.lo libMatrixDeterm_la-zdeterma.lo
+libMatrixDeterm_la_OBJECTS = $(am_libMatrixDeterm_la_OBJECTS)
+libMatrixDeterm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testDoubleDeterm_OBJECTS = \
+ testDoubleDeterm-testDoubleDeterm.$(OBJEXT)
+testDoubleDeterm_OBJECTS = $(am_testDoubleDeterm_OBJECTS)
+testDoubleDeterm_DEPENDENCIES = $(check_LDADD)
+testDoubleDeterm_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleDeterm_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatDeterm_OBJECTS = \
+ testFloatDeterm-testFloatDeterm.$(OBJEXT)
+testFloatDeterm_OBJECTS = $(am_testFloatDeterm_OBJECTS)
+testFloatDeterm_DEPENDENCIES = $(check_LDADD)
+testFloatDeterm_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatDeterm_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixDeterm_la_SOURCES) $(testDoubleDeterm_SOURCES) \
+ $(testFloatDeterm_SOURCES)
+DIST_SOURCES = $(libMatrixDeterm_la_SOURCES) \
+ $(testDoubleDeterm_SOURCES) $(testFloatDeterm_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixDeterm_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixDeterm.la
+HEAD = ../includes/determ.h
+libMatrixDeterm_la_SOURCES = $(HEAD) \
+ sdeterma.c \
+ ddeterma.c \
+ cdeterma.c \
+ zdeterma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ libMatrixDeterm.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleDeterm_SOURCES = testDoubleDeterm.c
+testDoubleDeterm_LDADD = $(check_LDADD)
+testDoubleDeterm_CFLAGS = $(check_INCLUDES)
+testFloatDeterm_SOURCES = testFloatDeterm.c
+testFloatDeterm_LDADD = $(check_LDADD)
+testFloatDeterm_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/determ/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/determ/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixDeterm.la: $(libMatrixDeterm_la_OBJECTS) $(libMatrixDeterm_la_DEPENDENCIES)
+ $(libMatrixDeterm_la_LINK) -rpath $(pkglibdir) $(libMatrixDeterm_la_OBJECTS) $(libMatrixDeterm_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleDeterm$(EXEEXT): $(testDoubleDeterm_OBJECTS) $(testDoubleDeterm_DEPENDENCIES)
+ @rm -f testDoubleDeterm$(EXEEXT)
+ $(testDoubleDeterm_LINK) $(testDoubleDeterm_OBJECTS) $(testDoubleDeterm_LDADD) $(LIBS)
+testFloatDeterm$(EXEEXT): $(testFloatDeterm_OBJECTS) $(testFloatDeterm_DEPENDENCIES)
+ @rm -f testFloatDeterm$(EXEEXT)
+ $(testFloatDeterm_LINK) $(testFloatDeterm_OBJECTS) $(testFloatDeterm_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDeterm_la-cdeterma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDeterm_la-ddeterma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDeterm_la-sdeterma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDeterm_la-zdeterma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatDeterm-testFloatDeterm.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixDeterm_la-sdeterma.lo: sdeterma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -MT libMatrixDeterm_la-sdeterma.lo -MD -MP -MF $(DEPDIR)/libMatrixDeterm_la-sdeterma.Tpo -c -o libMatrixDeterm_la-sdeterma.lo `test -f 'sdeterma.c' || echo '$(srcdir)/'`sdeterma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDeterm_la-sdeterma.Tpo $(DEPDIR)/libMatrixDeterm_la-sdeterma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdeterma.c' object='libMatrixDeterm_la-sdeterma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -c -o libMatrixDeterm_la-sdeterma.lo `test -f 'sdeterma.c' || echo '$(srcdir)/'`sdeterma.c
+
+libMatrixDeterm_la-ddeterma.lo: ddeterma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -MT libMatrixDeterm_la-ddeterma.lo -MD -MP -MF $(DEPDIR)/libMatrixDeterm_la-ddeterma.Tpo -c -o libMatrixDeterm_la-ddeterma.lo `test -f 'ddeterma.c' || echo '$(srcdir)/'`ddeterma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDeterm_la-ddeterma.Tpo $(DEPDIR)/libMatrixDeterm_la-ddeterma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddeterma.c' object='libMatrixDeterm_la-ddeterma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -c -o libMatrixDeterm_la-ddeterma.lo `test -f 'ddeterma.c' || echo '$(srcdir)/'`ddeterma.c
+
+libMatrixDeterm_la-cdeterma.lo: cdeterma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -MT libMatrixDeterm_la-cdeterma.lo -MD -MP -MF $(DEPDIR)/libMatrixDeterm_la-cdeterma.Tpo -c -o libMatrixDeterm_la-cdeterma.lo `test -f 'cdeterma.c' || echo '$(srcdir)/'`cdeterma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDeterm_la-cdeterma.Tpo $(DEPDIR)/libMatrixDeterm_la-cdeterma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdeterma.c' object='libMatrixDeterm_la-cdeterma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -c -o libMatrixDeterm_la-cdeterma.lo `test -f 'cdeterma.c' || echo '$(srcdir)/'`cdeterma.c
+
+libMatrixDeterm_la-zdeterma.lo: zdeterma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -MT libMatrixDeterm_la-zdeterma.lo -MD -MP -MF $(DEPDIR)/libMatrixDeterm_la-zdeterma.Tpo -c -o libMatrixDeterm_la-zdeterma.lo `test -f 'zdeterma.c' || echo '$(srcdir)/'`zdeterma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDeterm_la-zdeterma.Tpo $(DEPDIR)/libMatrixDeterm_la-zdeterma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdeterma.c' object='libMatrixDeterm_la-zdeterma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDeterm_la_CFLAGS) $(CFLAGS) -c -o libMatrixDeterm_la-zdeterma.lo `test -f 'zdeterma.c' || echo '$(srcdir)/'`zdeterma.c
+
+testDoubleDeterm-testDoubleDeterm.o: testDoubleDeterm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDeterm_CFLAGS) $(CFLAGS) -MT testDoubleDeterm-testDoubleDeterm.o -MD -MP -MF $(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Tpo -c -o testDoubleDeterm-testDoubleDeterm.o `test -f 'testDoubleDeterm.c' || echo '$(srcdir)/'`testDoubleDeterm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Tpo $(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleDeterm.c' object='testDoubleDeterm-testDoubleDeterm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDeterm_CFLAGS) $(CFLAGS) -c -o testDoubleDeterm-testDoubleDeterm.o `test -f 'testDoubleDeterm.c' || echo '$(srcdir)/'`testDoubleDeterm.c
+
+testDoubleDeterm-testDoubleDeterm.obj: testDoubleDeterm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDeterm_CFLAGS) $(CFLAGS) -MT testDoubleDeterm-testDoubleDeterm.obj -MD -MP -MF $(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Tpo -c -o testDoubleDeterm-testDoubleDeterm.obj `if test -f 'testDoubleDeterm.c'; then $(CYGPATH_W) 'testDoubleDeterm.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleDeterm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Tpo $(DEPDIR)/testDoubleDeterm-testDoubleDeterm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleDeterm.c' object='testDoubleDeterm-testDoubleDeterm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDeterm_CFLAGS) $(CFLAGS) -c -o testDoubleDeterm-testDoubleDeterm.obj `if test -f 'testDoubleDeterm.c'; then $(CYGPATH_W) 'testDoubleDeterm.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleDeterm.c'; fi`
+
+testFloatDeterm-testFloatDeterm.o: testFloatDeterm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDeterm_CFLAGS) $(CFLAGS) -MT testFloatDeterm-testFloatDeterm.o -MD -MP -MF $(DEPDIR)/testFloatDeterm-testFloatDeterm.Tpo -c -o testFloatDeterm-testFloatDeterm.o `test -f 'testFloatDeterm.c' || echo '$(srcdir)/'`testFloatDeterm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatDeterm-testFloatDeterm.Tpo $(DEPDIR)/testFloatDeterm-testFloatDeterm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatDeterm.c' object='testFloatDeterm-testFloatDeterm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDeterm_CFLAGS) $(CFLAGS) -c -o testFloatDeterm-testFloatDeterm.o `test -f 'testFloatDeterm.c' || echo '$(srcdir)/'`testFloatDeterm.c
+
+testFloatDeterm-testFloatDeterm.obj: testFloatDeterm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDeterm_CFLAGS) $(CFLAGS) -MT testFloatDeterm-testFloatDeterm.obj -MD -MP -MF $(DEPDIR)/testFloatDeterm-testFloatDeterm.Tpo -c -o testFloatDeterm-testFloatDeterm.obj `if test -f 'testFloatDeterm.c'; then $(CYGPATH_W) 'testFloatDeterm.c'; else $(CYGPATH_W) '$(srcdir)/testFloatDeterm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatDeterm-testFloatDeterm.Tpo $(DEPDIR)/testFloatDeterm-testFloatDeterm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatDeterm.c' object='testFloatDeterm-testFloatDeterm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDeterm_CFLAGS) $(CFLAGS) -c -o testFloatDeterm-testFloatDeterm.obj `if test -f 'testFloatDeterm.c'; then $(CYGPATH_W) 'testFloatDeterm.c'; else $(CYGPATH_W) '$(srcdir)/testFloatDeterm.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/determ/cdeterma.c b/2.3-1/src/c/matrixOperations/determ/cdeterma.c
new file mode 100644
index 00000000..6f2d1e8f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/cdeterma.c
@@ -0,0 +1,150 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#else
+#include "division.h"
+#endif
+
+#include "determ.h"
+#include "multiplication.h"
+#include "subtraction.h"
+#include "addition.h"
+
+
+
+floatComplex cdeterma(floatComplex *in, int size){
+#ifndef WITHOUT_LAPACK
+ int i=0,info=0;
+ doubleComplex *inCopy,out_tmp;
+ int *vectPivot;
+ floatComplex out, tmp1,tmp2;
+
+
+ /*Calculation of the determinant*/
+ switch(size){
+ case 2 : out = cdiffs(cmuls(in[0],in[3]),cmuls(in[1],in[2]));
+ break;
+ case 3 : /*regle de Sarrus*/
+ out=FloatComplex(0,0);
+ /*Addition part*/
+ tmp1 = cmuls(in[0],in[4]);
+ tmp2 = cmuls(tmp1,in[8]);
+ out = cadds(out,tmp2);
+ tmp1 = cmuls(in[1],in[5]);
+ tmp2 = cmuls(tmp1,in[6]);
+ out = cadds(out,tmp2);
+ tmp1 = cmuls(in[2],in[3]);
+ tmp2 = cmuls(tmp1,in[7]);
+ out = cadds(out,tmp2);
+ /*Subtraction part*/
+ tmp1 = cmuls(in[0],in[5]);
+ tmp2 = cmuls(tmp1,in[7]);
+ out = cdiffs(out,tmp2);
+ tmp1 = cmuls(in[1],in[3]);
+ tmp2 = cmuls(tmp1,in[8]);
+ out = cdiffs(out,tmp2);
+ tmp1 = cmuls(in[2],in[4]);
+ tmp2 = cmuls(tmp1,in[6]);
+ out = cdiffs(out,tmp2);
+ break;
+
+ default :
+
+
+ /*We must have a doubleComplex matrix cause
+ zgetrf accept only double parameters*/
+
+ /*Copy the input matrix*/
+ inCopy=(doubleComplex*)malloc((unsigned int)(size*size)*sizeof(doubleComplex));
+ for (i=0;i<size*size;i++){
+ inCopy[i]=DoubleComplex((double)creals(in[i]),(double)cimags(in[i]));
+ }
+
+
+
+ vectPivot=(int*)malloc((unsigned int)size*sizeof(int));
+ zgetrf_ ( &size, &size, inCopy, &size, vectPivot, &info);
+
+ out_tmp=DoubleComplex(1,0);
+ for (i=0;i<size;i++){
+ if (vectPivot[i]!=i+1) out_tmp=DoubleComplex(-zreals(out_tmp),-zimags(out_tmp));
+ out_tmp=zmuls(inCopy[i*(size+1)],out_tmp);
+ }
+ out=FloatComplex((float)zreals(out_tmp),(float)zimags(out_tmp));
+
+ free(vectPivot);
+ free(inCopy);
+ }
+#else
+ int i=0,j=0,k=0;
+ floatComplex *inCopy;
+ floatComplex tmp1,tmp2;
+ floatComplex pivot;
+ floatComplex out;
+
+
+ switch(size){
+ case 2 : out = cdiffs(cmuls(in[0],in[3]),cmuls(in[1],in[2]));
+ break;
+ case 3 : /*regle de Sarrus*/
+ out=FloatComplex(0,0);
+ /*Addition part*/
+ tmp1 = cmuls(in[0],in[4]);
+ tmp2 = cmuls(tmp1,in[8]);
+ out = cadds(out,tmp2);
+ tmp1 = cmuls(in[1],in[5]);
+ tmp2 = cmuls(tmp1,in[6]);
+ out = cadds(out,tmp2);
+ tmp1 = cmuls(in[2],in[3]);
+ tmp2 = cmuls(tmp1,in[7]);
+ out = cadds(out,tmp2);
+ /*Subtraction part*/
+ tmp1 = cmuls(in[0],in[5]);
+ tmp2 = cmuls(tmp1,in[7]);
+ out = cdiffs(out,tmp2);
+ tmp1 = cmuls(in[1],in[3]);
+ tmp2 = cmuls(tmp1,in[8]);
+ out = cdiffs(out,tmp2);
+ tmp1 = cmuls(in[2],in[4]);
+ tmp2 = cmuls(tmp1,in[6]);
+ out = cdiffs(out,tmp2);
+ break;
+
+ default :
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(floatComplex));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = crdivs(inCopy[i*size+j],inCopy[i*size+i]);
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]=cdiffs(inCopy[i*size+j+k*size],cmuls(pivot,inCopy[i*size+i+k*size]));
+ }
+ }
+ }
+ out=FloatComplex(1,0);
+ for (i=0;i<size;i++){
+ out = cmuls(out,inCopy[i*size+i]);
+ }
+ free(inCopy);
+ break;
+ }
+#endif
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/determ/ddeterma.c b/2.3-1/src/c/matrixOperations/determ/ddeterma.c
new file mode 100644
index 00000000..6894a365
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/ddeterma.c
@@ -0,0 +1,92 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#endif
+#include "determ.h"
+#include "lapack.h"
+
+double ddeterma(double * in, int size){
+#ifndef WITHOUT_LAPACK
+ int i=0, info=0;
+ double out=0;
+ double *inCopy=NULL;
+ int* tmp=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=(double*)malloc((unsigned int)(size*size)*sizeof(double));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ tmp=(int*)malloc((unsigned int)size*sizeof(int));
+ dgetrf_(&size, &size, inCopy, &size, tmp, &info);
+ out=1;
+ for (i=0;i<size;i++){
+ if (tmp[i]!=i+1) out=-out;
+ out=inCopy[i*(size+1)]*out;
+ }
+ free(tmp);
+ free(inCopy);
+ break;
+ }
+
+#else
+ int i=0, j=0, k=0;
+ double out=0, pivot=0;
+ double *inCopy=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(double));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = inCopy[i*size+j]/inCopy[i*size+i];
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]-=pivot*inCopy[i*size+i+k*size];
+ }
+ }
+ }
+ out=1;
+ for (i=0;i<size;i++){
+ out *= inCopy[i*size+i];
+ }
+ free(inCopy);
+ break;
+
+ }
+#endif
+
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/i16determa.c b/2.3-1/src/c/matrixOperations/determ/i16determa.c
new file mode 100644
index 00000000..97ec948b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/i16determa.c
@@ -0,0 +1,92 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#endif
+#include "determ.h"
+#include "lapack.h"
+
+int16 i16determa(int16 * in, int size){
+#ifndef WITHOUT_LAPACK
+ int i=0, info=0;
+ int16 out=0;
+ int16 *inCopy=NULL;
+ int* tmp=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=(int16*)malloc((unsigned int)(size*size)*sizeof(int16));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ tmp=(int*)malloc((unsigned int)size*sizeof(int));
+ dgetrf_(&size, &size, inCopy, &size, tmp, &info);
+ out=1;
+ for (i=0;i<size;i++){
+ if (tmp[i]!=i+1) out=-out;
+ out=inCopy[i*(size+1)]*out;
+ }
+ free(tmp);
+ free(inCopy);
+ break;
+ }
+
+#else
+ int i=0, j=0, k=0;
+ int16 out=0, pivot=0;
+ int16 *inCopy=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(int16));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = inCopy[i*size+j]/inCopy[i*size+i];
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]-=pivot*inCopy[i*size+i+k*size];
+ }
+ }
+ }
+ out=1;
+ for (i=0;i<size;i++){
+ out *= inCopy[i*size+i];
+ }
+ free(inCopy);
+ break;
+
+ }
+#endif
+
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/i8determa.c b/2.3-1/src/c/matrixOperations/determ/i8determa.c
new file mode 100644
index 00000000..cf436a00
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/i8determa.c
@@ -0,0 +1,92 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#endif
+#include "determ.h"
+#include "lapack.h"
+
+int8 i8determa(int8 * in, int size){
+#ifndef WITHOUT_LAPACK
+ int i=0, info=0;
+ int8 out=0;
+ int8 *inCopy=NULL;
+ int* tmp=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=(int8*)malloc((unsigned int)(size*size)*sizeof(int8));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ tmp=(int*)malloc((unsigned int)size*sizeof(int));
+ dgetrf_(&size, &size, inCopy, &size, tmp, &info);
+ out=1;
+ for (i=0;i<size;i++){
+ if (tmp[i]!=i+1) out=-out;
+ out=inCopy[i*(size+1)]*out;
+ }
+ free(tmp);
+ free(inCopy);
+ break;
+ }
+
+#else
+ int i=0, j=0, k=0;
+ int8 out=0, pivot=0;
+ int8 *inCopy=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(int8));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = inCopy[i*size+j]/inCopy[i*size+i];
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]-=pivot*inCopy[i*size+i+k*size];
+ }
+ }
+ }
+ out=1;
+ for (i=0;i<size;i++){
+ out *= inCopy[i*size+i];
+ }
+ free(inCopy);
+ break;
+
+ }
+#endif
+
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/sdeterma.c b/2.3-1/src/c/matrixOperations/determ/sdeterma.c
new file mode 100644
index 00000000..dbe36c90
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/sdeterma.c
@@ -0,0 +1,97 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#endif
+#include "determ.h"
+
+float sdeterma(float * in, int size){
+#ifndef WITHOUT_LAPACK
+ float out;
+ double *inCopy;
+ int* tmp;
+ int info=0,i=0;
+
+
+
+ /*Calculation of the determinant*/
+
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=(double*)malloc((unsigned int)(size*size)*sizeof(double));
+ tmp=(int*)malloc((unsigned int)size*sizeof(int));
+ for (i=0;i<size*size;i++) inCopy[i]=(double)in[i];
+
+ dgetrf_(&size, &size, inCopy, &size, tmp, &info);
+ out=1;
+ for (i=0;i<size;i++){
+ if (tmp[i]!=i+1) out=-out;
+ out=(float)inCopy[i*(size+1)]*out;
+ }
+ free(tmp);
+ free(inCopy);
+ break;
+ }
+#else
+ int i=0, j=0, k=0;
+ float out=0, pivot=0;
+ float *inCopy=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(float));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = inCopy[i*size+j]/inCopy[i*size+i];
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]-=pivot*inCopy[i*size+i+k*size];
+ }
+ }
+ }
+ out=1;
+ for (i=0;i<size;i++){
+ out *= inCopy[i*size+i];
+ }
+ free(inCopy);
+ break;
+
+ }
+
+
+#endif
+
+ return out;
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/determ/testDoubleDeterm.c b/2.3-1/src/c/matrixOperations/determ/testDoubleDeterm.c
new file mode 100644
index 00000000..c3e1d506
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/testDoubleDeterm.c
@@ -0,0 +1,451 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "determ.h"
+
+
+
+#define IN2 {0.1998337740078568458557,0.5618660743348300457001,\
+0.5896177329123020172119,0.6853979662992060184479f}
+
+#define RES2 -0.1943205386467572182152
+
+#define IN3 {0.8906224733218550682068,0.5042212805710732936859,0.3493615407496690750122,\
+0.3873778772540390491486,0.9222898678854107856751,0.9488184261135756969452,\
+0.3435337245464324951172,0.3760118731297552585602,0.7340940563008189201355}
+
+#define RES3 0.2464108526639412488635
+
+#define IN4 {0.2615761472843587398529,0.4993493836373090744019,0.2638578419573605060577,\
+ 0.5253563085570931434631,\
+0.5376229803077876567841,0.1199925504624843597412,0.2256303490139544010162,\
+ 0.6274093082174658775330,\
+0.7608432597480714321137,0.0485566202551126480103,0.6723949727602303028107,\
+ 0.2017172696068882942200,\
+0.3911573919467628002167,0.8300316557288169860840,0.5878720157779753208160,\
+ 0.4829179299995303153992}
+
+#define RES4 0.0079215378363537460038
+
+#define IN5 {0.2232865034602582454681,0.8400885667651891708374,0.1205995907075703144074,\
+ 0.2855364168062806129456,0.8607514644972980022430,\
+0.8494101651012897491455,0.5257060811854898929596,0.9931209897622466087341,\
+ 0.6488562873564660549164,0.9923190940171480178833,\
+0.0500419777818024158478,0.7485506581142544746399,0.4104058998636901378632,\
+ 0.6084526330232620239258,0.8544210889376699924469,\
+0.0642646728083491325378,0.8279082938097417354584,0.9262343775480985641480,\
+ 0.5667211269028484821320,0.5711638936772942543030,\
+0.8160110483877360820770,0.0568927936255931854248,0.5595936686731874942780,\
+ 0.1249340316280722618103,0.7279222286306321620941}
+
+#define RES5 0.0501241717143536200108
+
+#define IN6 {0.2677766475826501846314,0.5465334919281303882599,0.9885407658293843269348,\
+ 0.7395656588487327098846,0.0037173107266426086426,0.5900572859682142734528,\
+0.3096467358991503715515,0.2552205710671842098236,0.6251879390329122543335,\
+ 0.1157417376525700092316,0.6117004090920090675354,0.6783956284634768962860,\
+0.3320095278322696685791,0.0258709923364222049713,0.5174468224868178367615,\
+ 0.3916873238049447536469,0.2413538414984941482544,0.5064434898085892200470,\
+0.4236102001741528511047,0.2893727528862655162811,0.0887932181358337402344,\
+ 0.6212881752289831638336,0.3454984454438090324402,0.7064867629669606685638,\
+0.5211472492665052413940,0.2870400850661098957062,0.6502795079723000526428,\
+ 0.0881334762088954448700,0.4498763345181941986084,0.722725308034569025040,\
+0.8976796260103583335877,0.2427821881137788295746,0.4337721113115549087524,\
+ 0.9677053210325539112091,0.5068534435704350471497,0.523297640960663557053}
+
+#define RES6 -0.0275938917848303037761
+
+#define IN8 {0.5596947595477104187012,0.5617307000793516635895,0.468176002614200115204,\
+ 0.7794546722434461116791,0.7901071812957525253296,0.9808542062528431415558,\
+ 0.8187066102400422096252,0.4256872381083667278290,\
+0.2461560554802417755127,0.922953246627002954483,0.1000745808705687522888,\
+ 0.4678218117915093898773,0.3950497675687074661255,0.0366117102093994617462,\
+ 0.5175368534401059150696,0.8325451570563018321991,\
+0.6104832142591476440430,0.1871111788786947727203,0.0189574835821986198425,\
+ 0.8433564766310155391693,0.0748594831675291061401,0.8532815133221447467804,\
+ 0.0124590108171105384827,0.1867539356462657451630,\
+0.4920584075152873992920,0.7489608139730989933014,0.9414957007393240928650,\
+ 0.212405560072511434555,0.5795019958168268203735,0.2628147569485008716583,\
+ 0.4360986622050404548645,0.9110545101575553417206,\
+0.8082667365670204162598,0.8102653049863874912262,0.2590428395196795463562,\
+ 0.4139087288640439510346,0.3599927779287099838257,0.6912787933833897113800,\
+ 0.7656858796253800392151,0.3572649653069674968720,\
+0.7693399824202060699463,0.5477633909322321414948,0.0962288742884993553162,\
+ 0.9561171731911599636078,0.2207408566027879714966,0.0143259358592331409454,\
+ 0.8191489772871136665344,0.1304992842487990856171,\
+0.9682003557682037353516,0.6561381467618048191071,0.2445538965985178947449,\
+ 0.5283123566769063472748,0.8468925636261701583862,0.7876622085459530353546,\
+ 0.1262082615867257118225,0.7883860985748469829559,\
+0.3453042469918727874756,0.2659857333637773990631,0.9709818651899695396423,\
+ 0.8875247663818299770355,0.2066752854734659194946,0.8525160965509712696075,\
+ 0.6744697811082005500794,0.9152874383144080638886}
+
+#define RES8 0.1359018266554544440705
+
+#define IN10 {0.0284859761595726013184,0.2367841475643217563629,0.7015343559905886650085,\
+ 0.1202526628039777278900,0.8287412133067846298218,0.3161072959192097187042,\
+ 0.5305190766230225563049,0.5715174819342792034149,0.0478015430271625518799,\
+ 0.8248619721271097660065,\
+0.5798843121156096458435,0.2791808298788964748383,0.9545110929757356643677,\
+ 0.9071154636330902576447,0.3360149310901761054993,0.1175613063387572765350,\
+ 0.9253723770380020141602,0.7263671257533133029938,0.9009497938677668571472,\
+ 0.3948993249796330928803,\
+0.5655179750174283981323,0.7061489676125347614288,0.6787831196561455726624,\
+ 0.413293636869639158249,0.1402290873229503631592,0.4952356130816042423248,\
+ 0.4194877287372946739197,0.8626222289167344570160,0.2857509646564722061157,\
+ 0.2512136367149651050568,\
+0.3389101596549153327942,0.3921975973062217235565,0.4681552127003669738770,\
+ 0.3361602746881544589996,0.5336876614019274711609,0.2039063959382474422455,\
+ 0.1589989718049764633179,0.0181815107353031635284,0.4098370606079697608948,\
+ 0.0105834598653018474579,\
+0.1965309716761112213135,0.2725595370866358280182,0.3437655037268996238709,\
+ 0.2033702037297189235687,0.3011944610625505447388,0.2762595904059708118439,\
+ 0.2944530742242932319641,0.5718073952011764049530,0.2141770124435424804688,\
+ 0.6895461627282202243805,\
+0.5855572847649455070496,0.4204123034141957759857,0.4277572017163038253784,\
+ 0.318458587396889925003,0.5761894444003701210022,0.4254902224056422710419,\
+ 0.9761981628835201263428,0.2518960000015795230866,0.4391129007562994956970,\
+ 0.075930369552224874496,\
+0.2559380177408456802368,0.0670616743154823780060,0.7651131572201848030090,\
+ 0.0417361590079963207245,0.3438271805644035339356,0.1970167332328855991364,\
+ 0.2122898651286959648132,0.3140398501418530941010,0.7821625377982854843140,\
+ 0.0540932347066700458527,\
+0.9190206909552216529846,0.4603515709750354290009,0.2992685027420520782471,\
+ 0.0029166326858103275299,0.8993470584973692893982,0.8387927166186273097992,\
+ 0.4343749452382326126099,0.7767876130528748035431,0.1395317660644650459290,\
+ 0.1150637227110564708710,\
+0.5355419963598251342773,0.4311733045615255832672,0.614538478665053844452,\
+ 0.9258962138555943965912,0.0993817280977964401245,0.4280578647740185260773,\
+ 0.9431830951943993568420,0.0327395270578563213348,0.9213267080485820770264,\
+ 0.9449024409987032413483,\
+0.9007069906219840049744,0.8094316101633012294769,0.0251954291015863418579,\
+ 0.0019645062275230884552,0.5075221331790089607239,0.4076042952947318553925,\
+ 0.8408046141266822814941,0.501726570073515176773,0.9128780765458941459656,\
+ 0.4435729472897946834564}
+
+#define RES10 -0.0105698586359502730292
+
+
+
+
+#define ZINR2 {0.9625065480358898639679,0.9798011491075158119202,\
+0.0785698364488780498505,0.9150031916797161102295}
+#define ZINI2 {0.6172610134817659854889,0.9964194735512137413025,\
+0.0468598580919206142426,0.9245926234871149063110}
+#define ZRESR2 0.2796908427268796071274
+#define ZRESI2 1.3305203939304277582778
+
+#define ZINR3 {0.9689865079708397388458,0.4916289718821644783020,0.2977053108625113964081,\
+0.0603054538369178771973,0.631347181741148233414,0.0241030259057879447937,\
+0.1527438252232968807221,0.9481177683919668197632,0.2744265575893223285675}
+#define ZINI3 {0.4794727200642228126526,0.485576837789267301559,0.676400367170572280884,\
+0.8321249918080866336823,0.0125875836238265037537,0.5453779897652566432953,\
+0.8426716942340135574341,0.9029165101237595081329,0.4409482078626751899719}
+#define ZRESR3 0.3208274162176448784933
+#define ZRESI3 -0.5045627162227295237074
+
+#define ZINR4 {0.8332359003834426403046,0.7233976423740386962891,0.4377150186337530612946,\
+ 0.3080607382580637931824,\
+0.8749813153408467769623,0.5355882328003644943237,0.3085998897440731525421,\
+ 0.3354632416740059852600,\
+0.2342486302368342876434,0.2589411698281764984131,0.8521509231068193912506,\
+ 0.4821739485487341880798,\
+0.6095217890106141567230,0.9872822705656290054321,0.9811426815576851367950,\
+ 0.3303113700821995735169}
+#define ZINI4 {0.3589145573787391185761,0.2780527696013450622559,0.9583482020534574985504,\
+ 0.0156362904235720634460,\
+0.2964351712726056575775,0.4685934986919164657593,0.4262020816095173358917,\
+ 0.4217656338587403297424,\
+0.1034853602759540081024,0.4279759414494037628174,0.7860729382373392581940,\
+ 0.8568082069978117942810,\
+0.1993437460623681545258,0.7131301630288362503052,0.5208952468819916248322,\
+ 0.9311723159626126289368}
+#define ZRESR4 0.5916307061533252475982
+#define ZRESI4 -0.104762389048400544889
+
+#define ZINR5 {0.4143836158327758312225,0.5980196148157119750977,0.5549105503596365451813,\
+ 0.8552952585741877555847,0.3097750707529485225678,\
+0.9446128141134977340698,0.2442680452950298786163,0.8760446915403008460999,\
+ 0.4874215493910014629364,0.3844018988311290740967,\
+0.0922345430590212345123,0.0705418726429343223572,0.7338807261548936367035,\
+ 0.7792180571705102920532,0.7827638057060539722443,\
+0.2161567779257893562317,0.3420197847299277782440,0.430093832314014434814,\
+ 0.6261752569116652011871,0.9554250938817858695984,\
+0.45415506651625037193,0.0029223021119832992554,0.0106920679099857807159,\
+ 0.9746370846405625343323,0.7704260940663516521454}
+#define ZINI5 {0.6396631337702274322510,0.9535886184312403202057,0.4148483341559767723084,\
+ 0.4661539695225656032562,0.2238455135375261306763,\
+0.3456973326392471790314,0.2340623633936047554016,0.6619341480545699596405,\
+ 0.2691179513931274414063,0.9830248900689184665680,\
+0.7393351225182414054871,0.2902135862968862056732,0.3995949607342481613159,\
+ 0.9792278115637600421906,0.0075513580814003944397,\
+0.7021022657863795757294,0.8907506130635738372803,0.6526974202133715152741,\
+ 0.4136228552088141441345,0.8581690913997590541840,\
+0.2396089676767587661743,0.4820041772909462451935,0.9848585547879338264465,\
+ 0.4469721647910773754120,0.2329813763499259948731}
+#define ZRESR5 -0.2050520846829704535441
+#define ZRESI5 1.3442626005968567604043
+
+#define ZINR6 {0.2234513931907713413239,0.8002565456554293632507,0.7750734328292310237885,\
+ 0.4825006630271673202515,0.7844883133657276630402,0.1534679317846894264221,\
+0.7722877110354602336884,0.8952021785080432891846,0.9467325792647898197174,\
+ 0.6981825744733214378357,0.9559160820208489894867,0.0484017301350831985474,\
+0.5323520642705261707306,0.2946867095306515693665,0.6977136689238250255585,\
+ 0.9376203864812850952148,0.1075560846365988254547,0.7763424394652247428894,\
+0.6373417838476598262787,0.0663061570376157760620,0.8169459854252636432648,\
+ 0.354739100672304630280,0.5860544512979686260223,0.3461025469005107879639,\
+0.4424751014448702335358,0.8822665056213736534119,0.7643693066202104091644,\
+ 0.7764139864593744277954,0.2807680931873619556427,0.6908600600436329841614,\
+0.7174728694371879100800,0.372018136084079742432,0.9325496577657759189606,\
+ 0.2256677551195025444031,0.7521101920865476131439,0.3074750658124685287476}
+#define ZINI6 {0.5979326148517429828644,0.1923890346661210060120,0.2387088830582797527313,\
+ 0.7470833100378513336182,0.9713153676129877567291,0.4370355373248457908630,\
+0.6224875054322183132172,0.3291327971965074539185,0.3296387386508285999298,\
+ 0.2768637137487530708313,0.4872983503155410289764,0.7732046544551849365234,\
+0.9077521809376776218414,0.5012293187901377677918,0.5159545852802693843842,\
+ 0.5792678873986005783081,0.154639363754540681839,0.7611137786880135536194,\
+0.6907917778007686138153,0.2873229347169399261475,0.9642531336285173892975,\
+ 0.5660724332556128501892,0.5782137936912477016449,0.266342097893357276917,\
+0.4747098502703011035919,0.6073546530678868293762,0.0409730705432593822479,\
+ 0.501256845891475677490,0.5295930975116789340973,0.6259458316490054130554,\
+0.2219352661632001399994,0.3467419948428869247437,0.3951167692430317401886,\
+ 0.5442812526598572731018,0.1430782820098102092743,0.7165467627346515655518}
+#define ZRESR6 0.0374364367907719236550
+#define ZRESI6 0.0027318151340892903034
+
+#define ZINR8 {0.826897530350834131241,0.0803818320855498313904,0.7634756616316735744476,\
+ 0.6771226990967988967896,0.0800866526551544666290,0.5631617354229092597961,\
+ 0.8400143641047179698944,0.9142984896898269653320,\
+0.9566112258471548557282,0.1676578698679804801941,0.4345969124697148799896,\
+ 0.0417516361922025680542,0.4832747434265911579132,0.2889312515035271644592,\
+ 0.4115779171697795391083,0.2200270108878612518311,\
+0.3144670636393129825592,0.2733902474865317344666,0.7691849744878709316254,\
+ 0.0548522863537073135376,0.4532337454147636890411,0.2262856932356953620911,\
+ 0.1486739399842917919159,0.2435002401471138000488,\
+0.384454759303480386734,0.1141278846189379692078,0.3649685769341886043549,\
+ 0.9379479344934225082398,0.2138825734145939350128,0.8807754451408982276917,\
+ 0.3025345797650516033173,0.2935827709734439849854,\
+0.9067896143533289432526,0.7959460681304335594177,0.0202379724942147731781,\
+ 0.1722054202109575271606,0.2199751031585037708283,0.7548991339281201362610,\
+ 0.4089378821663558483124,0.4680796265602111816406,\
+0.420881266240030527115,0.7480402020737528800964,0.2455636872909963130951,\
+ 0.0257788877934217453003,0.3875689213164150714874,0.2191973784938454627991,\
+ 0.9874265412800014019013,0.6185800097882747650147,\
+0.1833024383522570133209,0.5313195576891303062439,0.1505152708850800991058,\
+ 0.9561535362154245376587,0.6994940754957497119904,0.2583465399220585823059,\
+ 0.6155266496352851390839,0.1903010532259941101074,\
+0.4607576900161802768707,0.5220010234043002128601,0.7053800462745130062103,\
+ 0.8874893691390752792358,0.1858218242414295673370,0.0922524714842438697815,\
+ 0.3779664481990039348602,0.9369315691292285919190}
+#define ZINI8 {0.1980521664954721927643,0.4702028548344969749451,0.3778818598948419094086,\
+ 0.3629649449139833450317,0.2793333870358765125275,0.6721442686393857002258,\
+ 0.6908950763754546642304,0.5104757994413375854492,\
+0.0610603489913046360016,0.9335384247824549674988,0.1448998316191136837006,\
+ 0.5721211265772581100464,0.5459886942990124225617,0.0516680190339684486389,\
+ 0.5011013220064342021942,0.9260971657931804656982,\
+0.8546948046423494815826,0.5857099732384085655212,0.8791871047578752040863,\
+ 0.2532048318535089492798,0.790395137388259172440,0.6329805525019764900208,\
+ 0.8602323713712394237518,0.9019620195031166076660,\
+0.3158749365247786045075,0.4001023573800921440125,0.1110895960591733455658,\
+ 0.4705127831548452377319,0.5362763185985386371613,0.2878431910648941993713,\
+ 0.8740125591866672039032,0.0740833915770053863525,\
+0.2814957336522638797760,0.7083768015727400779724,0.1652647457085549831390,\
+ 0.2667352575808763504028,0.8819408011622726917267,0.3537154989317059516907,\
+ 0.0264621186070144176483,0.0861647427082061767578,\
+0.2313965209759771823883,0.1340646473690867424011,0.6724002673290669918060,\
+ 0.1902998369187116622925,0.7307508592493832111359,0.5048490324988961219788,\
+ 0.8791159312240779399872,0.5544437132775783538818,\
+0.2063297093845903873444,0.401161103509366512299,0.4559328979812562465668,\
+ 0.6977151576429605484009,0.3965912279672920703888,0.498381090350449085236,\
+ 0.1452422770671546459198,0.9075358733534812927246,\
+0.1009295457042753696442,0.0177189959213137626648,0.7937671481631696224213,\
+ 0.4309146609157323837280,0.584337853360921144485,0.7954284632578492164612,\
+ 0.1390615846030414104462,0.1012784726917743682861}
+#define ZRESR8 -0.2866880544829432109211
+#define ZRESI8 -0.5082321435837643397449
+
+#define ZINR10 {0.3316808626987040042877,0.8344425177201628684998,0.0549940518103539943695,\
+ 0.3696003425866365432739,0.7453266424126923084259,0.0571811841800808906555,\
+ 0.5999651807360351085663,0.2085741907358169555664,0.8798878290690481662750,\
+ 0.4782809792086482048035,\
+0.7116099162958562374115,0.8585865031927824020386,0.8078222130425274372101,\
+ 0.5159962782636284828186,0.8917340408079326152802,0.8842348866164684295654,\
+ 0.70964269945397973061,0.6610225578770041465759,0.7252350724302232265472,\
+ 0.510143497958779335022,\
+0.2824866441078484058380,0.2214915128424763679504,0.5767575385980308055878,\
+ 0.7048253491520881652832,0.5607945644296705722809,0.3628880484029650688171,\
+ 0.3088326244615018367767,0.9813414867967367172241,0.7428482254035770893097,\
+ 0.1616391474381089210510,\
+0.3652521963231265544891,0.3835070468485355377197,0.1169181005097925662994,\
+ 0.8911246126517653465271,0.0634272000752389431000,0.6263941843062639236450,\
+ 0.6807702076621353626251,0.2588596837595105171204,0.4394804346375167369843,\
+ 0.8598818778991699218750,\
+0.5482823201455175876617,0.8135995296761393547058,0.4898237003944814205170,\
+ 0.0240026097744703292847,0.7369195525534451007843,0.2411156157031655311585,\
+ 0.1529693226329982280731,0.2648359201848506927490,0.4298193217255175113678,\
+ 0.7673939457163214683533,\
+0.8753260499797761440277,0.3796988371759653091431,0.3062356826849281787872,\
+ 0.3880051793530583381653,0.1047293278388679027557,0.7603831812739372253418,\
+ 0.0340930395759642124176,0.1423966242000460624695,0.5554559468291699886322,\
+ 0.8031897451728582382202,\
+0.5183992316015064716339,0.1518561029806733131409,0.5884730662219226360321,\
+ 0.2545093484222888946533,0.9992679939605295658112,0.6398976957425475120544,\
+ 0.5506716123782098293304,0.4607007671147584915161,0.5933007937856018543243,\
+ 0.6538193570449948310852,\
+0.4168340521864593029022,0.9910155385732650756836,0.3720780410803854465485,\
+ 0.7061824081465601921082,0.5780865414999425411224,0.602319641038775444031,\
+ 0.5715096746571362018585,0.0549629041925072669983,0.1205854485742747784,\
+ 0.0143620483577251434326,\
+0.0257951230742037296295,0.8411248764023184776306,0.4381882525049149990082,\
+ 0.4643401596695184707642,0.4197426405735313892365,0.8023654492571949958801,\
+ 0.5228588166646659374237,0.5095121040940284729004,0.4531980180181562900543,\
+ 0.7817818326875567436218,\
+0.776557037141174077988,0.0466059204190969467163,0.5113326688297092914581,\
+ 0.7502101892605423927307,0.6883628661744296550751,0.0167756117880344390869,\
+ 0.9345410899259150028229,0.5609863763675093650818,0.2205847105942666530609,\
+ 0.7648540753871202468872}
+#define ZINI10 {0.4816976976580917835236,0.1558785634115338325501,0.2476022052578628063202,\
+ 0.5216529071331024169922,0.0805230387486517429352,0.4409417239949107170105,\
+ 0.8911933614872395992279,0.9780590813606977462769,0.4588093762286007404327,\
+ 0.5510440031066536903381,\
+0.0960960905067622661591,0.4196785055100917816162,0.7502556503750383853912,\
+ 0.7218149593099951744080,0.2895541018806397914887,0.3907764498144388198853,\
+ 0.6686618146486580371857,0.4877656819298863410950,0.4685971769504249095917,\
+ 0.3562648519873619079590,\
+0.3442325466312468051910,0.4253307832404971122742,0.5588058172725141048431,\
+ 0.3304864969104528427124,0.4157403339631855487824,0.1595822656527161598206,\
+ 0.3883102680556476116180,0.9415460713207721710205,0.4722979352809488773346,\
+ 0.8533652639016509056091,\
+0.1207739165984094142914,0.8999380934983491897583,0.4384902161546051502228,\
+ 0.8976056622341275215149,0.4911110657267272472382,0.3402217179536819458008,\
+ 0.9966153600253164768219,0.0215395865961909294128,0.6876890822313725948334,\
+ 0.0044924151152372360229,\
+0.6397854541428387165070,0.5416147718206048011780,0.2247649203054606914520,\
+ 0.7364005260169506072998,0.4496364505030214786530,0.9678138038143515586853,\
+ 0.6489060199819505214691,0.2544666919857263565064,0.1923975017853081226349,\
+ 0.6861492367461323738098,\
+0.4231455805711448192596,0.6734441593289375305176,0.8270696722902357578278,\
+ 0.9360805852338671684265,0.8326222090981900691986,0.7424779590219259262085,\
+ 0.0194640238769352436066,0.8016031915321946144104,0.2554539437405765056610,\
+ 0.2688109613955020904541,\
+0.7558490769006311893463,0.4347589677199721336365,0.6425966522656381130219,\
+ 0.6957868058234453201294,0.6499576461501419544220,0.2303190128877758979797,\
+ 0.5504368054680526256561,0.3038997054100036621094,0.0371030517853796482086,\
+ 0.1703881053254008293152,\
+0.5698686256073415279388,0.0036411266773939132690,0.4491547052748501300812,\
+ 0.0576810697093605995178,0.4956056098453700542450,0.1888933442533016204834,\
+ 0.5641230703331530094147,0.8562210192903876304627,0.0794764286838471889496,\
+ 0.6196198705583810806274,\
+0.2241039988584816455841,0.8582094730809330940247,0.7114551994018256664276,\
+ 0.8026027604937553405762,0.6153324418701231479645,0.8958183480426669120789,\
+ 0.8721761344932019710541,0.8389767911285161972046,0.2040955354459583759308,\
+ 0.3166538262739777565002,\
+0.7006825651042163372040,0.2073105163872241973877,0.5222550616599619388580,\
+ 0.9416420971974730491638,0.52116033947095274925,0.4509841967374086380005,\
+ 0.3961292845197021961212,0.7240869747474789619446,0.6724055963568389415741,\
+ 0.2386146038770675659180}
+#define ZRESR10 -0.0701164785573487325809
+#define ZRESI10 -0.3697118554850691296565
+
+static void ddetermaTest(void){
+ double in2[]=IN2; double res2=RES2;
+ double in3[]=IN3; double res3=RES3;
+ double in4[]=IN4; double res4=RES4;
+ double in5[]=IN5; double res5=RES5;
+ double in6[]=IN6; double res6=RES6;
+ double in8[]=IN8; double res8=RES8;
+ double in10[]=IN10; double res10=RES10;
+ double out2,out3,out4,out5,out6,out8,out10;
+ printf("\n >>> DDetermA <<<\n");
+ out2=ddeterma(in2,2);
+ out3=ddeterma(in3,3);
+ out4=ddeterma(in4,4);
+ out5=ddeterma(in5,5);
+ out6=ddeterma(in6,6);
+ out8=ddeterma(in8,8);
+ out10=ddeterma(in10,10);
+
+ assert((fabs(out2-res2)/fabs(out2))<3e-8);
+ assert((fabs(out3-res3)/fabs(out3))<3e-15);
+ assert((fabs(out4-res4)/fabs(out4))<3e-15);
+ assert((fabs(out5-res5)/fabs(out5))<3e-15);
+ assert((fabs(out6-res6)/fabs(out6))<3e-15);
+ assert((fabs(out8-res8)/fabs(out8))<3e-15);
+ assert((fabs(out10-res10)/fabs(out10))<3e-15);
+}
+
+static void zdetermaTest(void){
+ double inR2[]=ZINR2; double inI2[]=ZINI2; double resR2=ZRESR2; double resI2=ZRESI2;
+ double inR3[]=ZINR3; double inI3[]=ZINI3; double resR3=ZRESR3; double resI3=ZRESI3;
+ double inR4[]=ZINR4; double inI4[]=ZINI4; double resR4=ZRESR4; double resI4=ZRESI4;
+ double inR5[]=ZINR5; double inI5[]=ZINI5; double resR5=ZRESR5; double resI5=ZRESI5;
+ double inR6[]=ZINR6; double inI6[]=ZINI6; double resR6=ZRESR6; double resI6=ZRESI6;
+ double inR8[]=ZINR8; double inI8[]=ZINI8; double resR8=ZRESR8; double resI8=ZRESI8;
+ double inR10[]=ZINR10; double inI10[]=ZINI10; double resR10=ZRESR10; double resI10=ZRESI10;
+ doubleComplex out2,out3,out4,out5,out6,out8,out10;
+ doubleComplex *in2, *in3, *in4, *in5, *in6, *in8, *in10;
+ printf("\n >>> ZDetermA <<<\n");
+ in2=DoubleComplexMatrix(inR2,inI2,4);
+ in3=DoubleComplexMatrix(inR3,inI3,9);
+ in4=DoubleComplexMatrix(inR4,inI4,16);
+ in5=DoubleComplexMatrix(inR5,inI5,25);
+ in6=DoubleComplexMatrix(inR6,inI6,36);
+ in8=DoubleComplexMatrix(inR8,inI8,64);
+ in10=DoubleComplexMatrix(inR10,inI10,100);
+
+ out2=zdeterma(in2,2);
+ out3=zdeterma(in3,3);
+ out4=zdeterma(in4,4);
+ out5=zdeterma(in5,5);
+ out6=zdeterma(in6,6);
+ out8=zdeterma(in8,8);
+ out10=zdeterma(in10,10);
+
+
+ assert((fabs(zreals(out2)-resR2)/fabs(zreals(out2)))<3e-16);
+ assert((fabs(zimags(out2)-resI2)/fabs(zimags(out2)))<3e-16);
+
+ assert((fabs(zreals(out3)-resR3)/fabs(zreals(out3)))<3e-16);
+ assert((fabs(zimags(out3)-resI3)/fabs(zimags(out3)))<1e-16);
+
+ assert((fabs(zreals(out4)-resR4)/fabs(zreals(out4)))<3e-16);
+ assert((fabs(zimags(out4)-resI4)/fabs(zimags(out4)))<3e-15);
+
+ assert((fabs(zreals(out5)-resR5)/fabs(zreals(out5)))<3e-15);
+ assert((fabs(zimags(out5)-resI5)/fabs(zimags(out5)))<3e-15);
+
+ assert((fabs(zreals(out6)-resR6)/fabs(zreals(out6)))<3e-15);
+ assert((fabs(zimags(out6)-resI6)/fabs(zimags(out6)))<3e-12);
+
+ assert((fabs(zreals(out8)-resR8)/fabs(zreals(out8)))<3e-15);
+ assert((fabs(zimags(out8)-resI8)/fabs(zimags(out8)))<3e-15);
+
+ assert((fabs(zreals(out10)-resR10)/fabs(zreals(out10)))<3e-14);
+ assert((fabs(zimags(out10)-resI10)/fabs(zimags(out10)))<3e-15);
+}
+
+static int determTest(void){
+ printf("\n >>> Double Determ <<<\n");
+ ddetermaTest();
+ zdetermaTest();
+ return 0;
+}
+
+
+int main (void){
+ assert(determTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/testFloatDeterm.c b/2.3-1/src/c/matrixOperations/determ/testFloatDeterm.c
new file mode 100644
index 00000000..d429d020
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/testFloatDeterm.c
@@ -0,0 +1,453 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "determ.h"
+
+
+
+#define IN2 {0.1998337740078568458557f,0.5618660743348300457001f,\
+0.5896177329123020172119f,0.6853979662992060184479f}
+
+#define RES2 -0.1943205386467572182152f
+
+#define IN3 {0.8906224733218550682068f,0.5042212805710732936859f,0.3493615407496690750122f,\
+0.3873778772540390491486f,0.9222898678854107856751f,0.9488184261135756969452f,\
+0.3435337245464324951172f,0.3760118731297552585602f,0.7340940563008189201355f}
+
+#define RES3 0.2464108526639412488635f
+
+#define IN4 {0.2615761472843587398529f,0.4993493836373090744019f,0.2638578419573605060577f,\
+ 0.5253563085570931434631f,\
+0.5376229803077876567841f,0.1199925504624843597412f,0.2256303490139544010162f,\
+ 0.6274093082174658775330f,\
+0.7608432597480714321137f,0.0485566202551126480103f,0.6723949727602303028107f,\
+ 0.2017172696068882942200f,\
+0.3911573919467628002167f,0.8300316557288169860840f,0.5878720157779753208160f,\
+ 0.4829179299995303153992f}
+
+#define RES4 0.0079215378363537460038f
+
+#define IN5 {0.2232865034602582454681f,0.8400885667651891708374f,0.1205995907075703144074f,\
+ 0.2855364168062806129456f,0.8607514644972980022430f,\
+0.8494101651012897491455f,0.5257060811854898929596f,0.9931209897622466087341f,\
+ 0.6488562873564660549164f,0.9923190940171480178833f,\
+0.0500419777818024158478f,0.7485506581142544746399f,0.4104058998636901378632f,\
+ 0.6084526330232620239258f,0.8544210889376699924469f,\
+0.0642646728083491325378f,0.8279082938097417354584f,0.9262343775480985641480f,\
+ 0.5667211269028484821320f,0.5711638936772942543030f,\
+0.8160110483877360820770f,0.0568927936255931854248f,0.5595936686731874942780f,\
+ 0.1249340316280722618103f,0.7279222286306321620941f}
+
+#define RES5 0.0501241717143536200108f
+
+#define IN6 {0.2677766475826501846314f,0.5465334919281303882599f,0.9885407658293843269348f,\
+ 0.7395656588487327098846f,0.0037173107266426086426f,0.5900572859682142734528f,\
+0.3096467358991503715515f,0.2552205710671842098236f,0.6251879390329122543335f,\
+ 0.1157417376525700092316f,0.6117004090920090675354f,0.6783956284634768962860f,\
+0.3320095278322696685791f,0.0258709923364222049713f,0.5174468224868178367615f,\
+ 0.3916873238049447536469f,0.2413538414984941482544f,0.5064434898085892200470f,\
+0.4236102001741528511047f,0.2893727528862655162811f,0.0887932181358337402344f,\
+ 0.6212881752289831638336f,0.3454984454438090324402f,0.7064867629669606685638f,\
+0.5211472492665052413940f,0.2870400850661098957062f,0.6502795079723000526428f,\
+ 0.0881334762088954448700f,0.4498763345181941986084f,0.722725308034569025040f,\
+0.8976796260103583335877f,0.2427821881137788295746f,0.4337721113115549087524f,\
+ 0.9677053210325539112091f,0.5068534435704350471497f,0.523297640960663557053f}
+
+#define RES6 -0.0275938917848303037761f
+
+#define IN8 {0.5596947595477104187012f,0.5617307000793516635895f,0.468176002614200115204f,\
+ 0.7794546722434461116791f,0.7901071812957525253296f,0.9808542062528431415558f,\
+ 0.8187066102400422096252f,0.4256872381083667278290f,\
+0.2461560554802417755127f,0.922953246627002954483f,0.1000745808705687522888f,\
+ 0.4678218117915093898773f,0.3950497675687074661255f,0.0366117102093994617462f,\
+ 0.5175368534401059150696f,0.8325451570563018321991f,\
+0.6104832142591476440430f,0.1871111788786947727203f,0.0189574835821986198425f,\
+ 0.8433564766310155391693f,0.0748594831675291061401f,0.8532815133221447467804f,\
+ 0.0124590108171105384827f,0.1867539356462657451630f,\
+0.4920584075152873992920f,0.7489608139730989933014f,0.9414957007393240928650f,\
+ 0.212405560072511434555f,0.5795019958168268203735f,0.2628147569485008716583f,\
+ 0.4360986622050404548645f,0.9110545101575553417206f,\
+0.8082667365670204162598f,0.8102653049863874912262f,0.2590428395196795463562f,\
+ 0.4139087288640439510346f,0.3599927779287099838257f,0.6912787933833897113800f,\
+ 0.7656858796253800392151f,0.3572649653069674968720f,\
+0.7693399824202060699463f,0.5477633909322321414948f,0.0962288742884993553162f,\
+ 0.9561171731911599636078f,0.2207408566027879714966f,0.0143259358592331409454f,\
+ 0.8191489772871136665344f,0.1304992842487990856171f,\
+0.9682003557682037353516f,0.6561381467618048191071f,0.2445538965985178947449f,\
+ 0.5283123566769063472748f,0.8468925636261701583862f,0.7876622085459530353546f,\
+ 0.1262082615867257118225f,0.7883860985748469829559f,\
+0.3453042469918727874756f,0.2659857333637773990631f,0.9709818651899695396423f,\
+ 0.8875247663818299770355f,0.2066752854734659194946f,0.8525160965509712696075f,\
+ 0.6744697811082005500794f,0.9152874383144080638886f}
+
+#define RES8 0.1359018266554544440705f
+
+#define IN10 {0.0284859761595726013184f,0.2367841475643217563629f,0.7015343559905886650085f,\
+ 0.1202526628039777278900f,0.8287412133067846298218f,0.3161072959192097187042f,\
+ 0.5305190766230225563049f,0.5715174819342792034149f,0.0478015430271625518799f,\
+ 0.8248619721271097660065f,\
+0.5798843121156096458435f,0.2791808298788964748383f,0.9545110929757356643677f,\
+ 0.9071154636330902576447f,0.3360149310901761054993f,0.1175613063387572765350f,\
+ 0.9253723770380020141602f,0.7263671257533133029938f,0.9009497938677668571472f,\
+ 0.3948993249796330928803f,\
+0.5655179750174283981323f,0.7061489676125347614288f,0.6787831196561455726624f,\
+ 0.413293636869639158249f,0.1402290873229503631592f,0.4952356130816042423248f,\
+ 0.4194877287372946739197f,0.8626222289167344570160f,0.2857509646564722061157f,\
+ 0.2512136367149651050568f,\
+0.3389101596549153327942f,0.3921975973062217235565f,0.4681552127003669738770f,\
+ 0.3361602746881544589996f,0.5336876614019274711609f,0.2039063959382474422455f,\
+ 0.1589989718049764633179f,0.0181815107353031635284f,0.4098370606079697608948f,\
+ 0.0105834598653018474579f,\
+0.1965309716761112213135f,0.2725595370866358280182f,0.3437655037268996238709f,\
+ 0.2033702037297189235687f,0.3011944610625505447388f,0.2762595904059708118439f,\
+ 0.2944530742242932319641f,0.5718073952011764049530f,0.2141770124435424804688f,\
+ 0.6895461627282202243805f,\
+0.5855572847649455070496f,0.4204123034141957759857f,0.4277572017163038253784f,\
+ 0.318458587396889925003f,0.5761894444003701210022f,0.4254902224056422710419f,\
+ 0.9761981628835201263428f,0.2518960000015795230866f,0.4391129007562994956970f,\
+ 0.075930369552224874496f,\
+0.2559380177408456802368f,0.0670616743154823780060f,0.7651131572201848030090f,\
+ 0.0417361590079963207245f,0.3438271805644035339356f,0.1970167332328855991364f,\
+ 0.2122898651286959648132f,0.3140398501418530941010f,0.7821625377982854843140f,\
+ 0.0540932347066700458527f,\
+0.9190206909552216529846f,0.4603515709750354290009f,0.2992685027420520782471f,\
+ 0.0029166326858103275299f,0.8993470584973692893982f,0.8387927166186273097992f,\
+ 0.4343749452382326126099f,0.7767876130528748035431f,0.1395317660644650459290f,\
+ 0.1150637227110564708710f,\
+0.5355419963598251342773f,0.4311733045615255832672f,0.614538478665053844452f,\
+ 0.9258962138555943965912f,0.0993817280977964401245f,0.4280578647740185260773f,\
+ 0.9431830951943993568420f,0.0327395270578563213348f,0.9213267080485820770264f,\
+ 0.9449024409987032413483f,\
+0.9007069906219840049744f,0.8094316101633012294769f,0.0251954291015863418579f,\
+ 0.0019645062275230884552f,0.5075221331790089607239f,0.4076042952947318553925f,\
+ 0.8408046141266822814941f,0.501726570073515176773f,0.9128780765458941459656f,\
+ 0.4435729472897946834564f}
+
+#define RES10 -0.0105698586359502730292f
+
+
+
+
+#define CINR2 {0.9625065480358898639679f,0.9798011491075158119202f,\
+0.0785698364488780498505f,0.9150031916797161102295f}
+#define CINI2 {0.6172610134817659854889f,0.9964194735512137413025f,\
+0.0468598580919206142426f,0.9245926234871149063110f}
+#define CRESR2 0.2796908427268796071274f
+#define CRESI2 1.3305203939304277582778f
+
+#define CINR3 {0.9689865079708397388458f,0.4916289718821644783020f,0.2977053108625113964081f,\
+0.0603054538369178771973f,0.631347181741148233414f,0.0241030259057879447937f,\
+0.1527438252232968807221f,0.9481177683919668197632f,0.2744265575893223285675f}
+#define CINI3 {0.4794727200642228126526f,0.485576837789267301559f,0.676400367170572280884f,\
+0.8321249918080866336823f,0.0125875836238265037537f,0.5453779897652566432953f,\
+0.8426716942340135574341f,0.9029165101237595081329f,0.4409482078626751899719f}
+#define CRESR3 0.3208274162176448784933f
+#define CRESI3 -0.5045627162227295237074f
+
+#define CINR4 {0.8332359003834426403046f,0.7233976423740386962891f,0.4377150186337530612946f,\
+ 0.3080607382580637931824f,\
+0.8749813153408467769623f,0.5355882328003644943237f,0.3085998897440731525421f,\
+ 0.3354632416740059852600f,\
+0.2342486302368342876434f,0.2589411698281764984131f,0.8521509231068193912506f,\
+ 0.4821739485487341880798f,\
+0.6095217890106141567230f,0.9872822705656290054321f,0.9811426815576851367950f,\
+ 0.3303113700821995735169f}
+#define CINI4 {0.3589145573787391185761f,0.2780527696013450622559f,0.9583482020534574985504f,\
+ 0.0156362904235720634460f,\
+0.2964351712726056575775f,0.4685934986919164657593f,0.4262020816095173358917f,\
+ 0.4217656338587403297424f,\
+0.1034853602759540081024f,0.4279759414494037628174f,0.7860729382373392581940f,\
+ 0.8568082069978117942810f,\
+0.1993437460623681545258f,0.7131301630288362503052f,0.5208952468819916248322f,\
+ 0.9311723159626126289368f}
+#define CRESR4 0.5916307061533252475982f
+#define CRESI4 -0.104762389048400544889f
+
+#define CINR5 {0.4143836158327758312225f,0.5980196148157119750977f,0.5549105503596365451813f,\
+ 0.8552952585741877555847f,0.3097750707529485225678f,\
+0.9446128141134977340698f,0.2442680452950298786163f,0.8760446915403008460999f,\
+ 0.4874215493910014629364f,0.3844018988311290740967f,\
+0.0922345430590212345123f,0.0705418726429343223572f,0.7338807261548936367035f,\
+ 0.7792180571705102920532f,0.7827638057060539722443f,\
+0.2161567779257893562317f,0.3420197847299277782440f,0.430093832314014434814f,\
+ 0.6261752569116652011871f,0.9554250938817858695984f,\
+0.45415506651625037193f,0.0029223021119832992554f,0.0106920679099857807159f,\
+ 0.9746370846405625343323f,0.7704260940663516521454f}
+#define CINI5 {0.6396631337702274322510f,0.9535886184312403202057f,0.4148483341559767723084f,\
+ 0.4661539695225656032562f,0.2238455135375261306763f,\
+0.3456973326392471790314f,0.2340623633936047554016f,0.6619341480545699596405f,\
+ 0.2691179513931274414063f,0.9830248900689184665680f,\
+0.7393351225182414054871f,0.2902135862968862056732f,0.3995949607342481613159f,\
+ 0.9792278115637600421906f,0.0075513580814003944397f,\
+0.7021022657863795757294f,0.8907506130635738372803f,0.6526974202133715152741f,\
+ 0.4136228552088141441345f,0.8581690913997590541840f,\
+0.2396089676767587661743f,0.4820041772909462451935f,0.9848585547879338264465f,\
+ 0.4469721647910773754120f,0.2329813763499259948731f}
+#define CRESR5 -0.2050520846829704535441f
+#define CRESI5 1.3442626005968567604043f
+
+#define CINR6 {0.2234513931907713413239f,0.8002565456554293632507f,0.7750734328292310237885f,\
+ 0.4825006630271673202515f,0.7844883133657276630402f,0.1534679317846894264221f,\
+0.7722877110354602336884f,0.8952021785080432891846f,0.9467325792647898197174f,\
+ 0.6981825744733214378357f,0.9559160820208489894867f,0.0484017301350831985474f,\
+0.5323520642705261707306f,0.2946867095306515693665f,0.6977136689238250255585f,\
+ 0.9376203864812850952148f,0.1075560846365988254547f,0.7763424394652247428894f,\
+0.6373417838476598262787f,0.0663061570376157760620f,0.8169459854252636432648f,\
+ 0.354739100672304630280f,0.5860544512979686260223f,0.3461025469005107879639f,\
+0.4424751014448702335358f,0.8822665056213736534119f,0.7643693066202104091644f,\
+ 0.7764139864593744277954f,0.2807680931873619556427f,0.6908600600436329841614f,\
+0.7174728694371879100800f,0.372018136084079742432f,0.9325496577657759189606f,\
+ 0.2256677551195025444031f,0.7521101920865476131439f,0.3074750658124685287476f}
+#define CINI6 {0.5979326148517429828644f,0.1923890346661210060120f,0.2387088830582797527313f,\
+ 0.7470833100378513336182f,0.9713153676129877567291f,0.4370355373248457908630f,\
+0.6224875054322183132172f,0.3291327971965074539185f,0.3296387386508285999298f,\
+ 0.2768637137487530708313f,0.4872983503155410289764f,0.7732046544551849365234f,\
+0.9077521809376776218414f,0.5012293187901377677918f,0.5159545852802693843842f,\
+ 0.5792678873986005783081f,0.154639363754540681839f,0.7611137786880135536194f,\
+0.6907917778007686138153f,0.2873229347169399261475f,0.9642531336285173892975f,\
+ 0.5660724332556128501892f,0.5782137936912477016449f,0.266342097893357276917f,\
+0.4747098502703011035919f,0.6073546530678868293762f,0.0409730705432593822479f,\
+ 0.501256845891475677490f,0.5295930975116789340973f,0.6259458316490054130554f,\
+0.2219352661632001399994f,0.3467419948428869247437f,0.3951167692430317401886f,\
+ 0.5442812526598572731018f,0.1430782820098102092743f,0.7165467627346515655518f}
+#define CRESR6 0.0374364367907719236550f
+#define CRESI6 0.0027318151340892903034f
+
+#define CINR8 {0.826897530350834131241f,0.0803818320855498313904f,0.7634756616316735744476f,\
+ 0.6771226990967988967896f,0.0800866526551544666290f,0.5631617354229092597961f,\
+ 0.8400143641047179698944f,0.9142984896898269653320f,\
+0.9566112258471548557282f,0.1676578698679804801941f,0.4345969124697148799896f,\
+ 0.0417516361922025680542f,0.4832747434265911579132f,0.2889312515035271644592f,\
+ 0.4115779171697795391083f,0.2200270108878612518311f,\
+0.3144670636393129825592f,0.2733902474865317344666f,0.7691849744878709316254f,\
+ 0.0548522863537073135376f,0.4532337454147636890411f,0.2262856932356953620911f,\
+ 0.1486739399842917919159f,0.2435002401471138000488f,\
+0.384454759303480386734f,0.1141278846189379692078f,0.3649685769341886043549f,\
+ 0.9379479344934225082398f,0.2138825734145939350128f,0.8807754451408982276917f,\
+ 0.3025345797650516033173f,0.2935827709734439849854f,\
+0.9067896143533289432526f,0.7959460681304335594177f,0.0202379724942147731781f,\
+ 0.1722054202109575271606f,0.2199751031585037708283f,0.7548991339281201362610f,\
+ 0.4089378821663558483124f,0.4680796265602111816406f,\
+0.420881266240030527115f,0.7480402020737528800964f,0.2455636872909963130951f,\
+ 0.0257788877934217453003f,0.3875689213164150714874f,0.2191973784938454627991f,\
+ 0.9874265412800014019013f,0.6185800097882747650147f,\
+0.1833024383522570133209f,0.5313195576891303062439f,0.1505152708850800991058f,\
+ 0.9561535362154245376587f,0.6994940754957497119904f,0.2583465399220585823059f,\
+ 0.6155266496352851390839f,0.1903010532259941101074f,\
+0.4607576900161802768707f,0.5220010234043002128601f,0.7053800462745130062103f,\
+ 0.8874893691390752792358f,0.1858218242414295673370f,0.0922524714842438697815f,\
+ 0.3779664481990039348602f,0.9369315691292285919190f}
+#define CINI8 {0.1980521664954721927643f,0.4702028548344969749451f,0.3778818598948419094086f,\
+ 0.3629649449139833450317f,0.2793333870358765125275f,0.6721442686393857002258f,\
+ 0.6908950763754546642304f,0.5104757994413375854492f,\
+0.0610603489913046360016f,0.9335384247824549674988f,0.1448998316191136837006f,\
+ 0.5721211265772581100464f,0.5459886942990124225617f,0.0516680190339684486389f,\
+ 0.5011013220064342021942f,0.9260971657931804656982f,\
+0.8546948046423494815826f,0.5857099732384085655212f,0.8791871047578752040863f,\
+ 0.2532048318535089492798f,0.790395137388259172440f,0.6329805525019764900208f,\
+ 0.8602323713712394237518f,0.9019620195031166076660f,\
+0.3158749365247786045075f,0.4001023573800921440125f,0.1110895960591733455658f,\
+ 0.4705127831548452377319f,0.5362763185985386371613f,0.2878431910648941993713f,\
+ 0.8740125591866672039032f,0.0740833915770053863525f,\
+0.2814957336522638797760f,0.7083768015727400779724f,0.1652647457085549831390f,\
+ 0.2667352575808763504028f,0.8819408011622726917267f,0.3537154989317059516907f,\
+ 0.0264621186070144176483f,0.0861647427082061767578f,\
+0.2313965209759771823883f,0.1340646473690867424011f,0.6724002673290669918060f,\
+ 0.1902998369187116622925f,0.7307508592493832111359f,0.5048490324988961219788f,\
+ 0.8791159312240779399872f,0.5544437132775783538818f,\
+0.2063297093845903873444f,0.401161103509366512299f,0.4559328979812562465668f,\
+ 0.6977151576429605484009f,0.3965912279672920703888f,0.498381090350449085236f,\
+ 0.1452422770671546459198f,0.9075358733534812927246f,\
+0.1009295457042753696442f,0.0177189959213137626648f,0.7937671481631696224213f,\
+ 0.4309146609157323837280f,0.584337853360921144485f,0.7954284632578492164612f,\
+ 0.1390615846030414104462f,0.1012784726917743682861f}
+#define CRESR8 -0.2866880544829432109211f
+#define CRESI8 -0.5082321435837643397449f
+
+#define CINR10 {0.3316808626987040042877f,0.8344425177201628684998f,0.0549940518103539943695f,\
+ 0.3696003425866365432739f,0.7453266424126923084259f,0.0571811841800808906555f,\
+ 0.5999651807360351085663f,0.2085741907358169555664f,0.8798878290690481662750f,\
+ 0.4782809792086482048035f,\
+0.7116099162958562374115f,0.8585865031927824020386f,0.8078222130425274372101f,\
+ 0.5159962782636284828186f,0.8917340408079326152802f,0.8842348866164684295654f,\
+ 0.70964269945397973061f,0.6610225578770041465759f,0.7252350724302232265472f,\
+ 0.510143497958779335022f,\
+0.2824866441078484058380f,0.2214915128424763679504f,0.5767575385980308055878f,\
+ 0.7048253491520881652832f,0.5607945644296705722809f,0.3628880484029650688171f,\
+ 0.3088326244615018367767f,0.9813414867967367172241f,0.7428482254035770893097f,\
+ 0.1616391474381089210510f,\
+0.3652521963231265544891f,0.3835070468485355377197f,0.1169181005097925662994f,\
+ 0.8911246126517653465271f,0.0634272000752389431000f,0.6263941843062639236450f,\
+ 0.6807702076621353626251f,0.2588596837595105171204f,0.4394804346375167369843f,\
+ 0.8598818778991699218750f,\
+0.5482823201455175876617f,0.8135995296761393547058f,0.4898237003944814205170f,\
+ 0.0240026097744703292847f,0.7369195525534451007843f,0.2411156157031655311585f,\
+ 0.1529693226329982280731f,0.2648359201848506927490f,0.4298193217255175113678f,\
+ 0.7673939457163214683533f,\
+0.8753260499797761440277f,0.3796988371759653091431f,0.3062356826849281787872f,\
+ 0.3880051793530583381653f,0.1047293278388679027557f,0.7603831812739372253418f,\
+ 0.0340930395759642124176f,0.1423966242000460624695f,0.5554559468291699886322f,\
+ 0.8031897451728582382202f,\
+0.5183992316015064716339f,0.1518561029806733131409f,0.5884730662219226360321f,\
+ 0.2545093484222888946533f,0.9992679939605295658112f,0.6398976957425475120544f,\
+ 0.5506716123782098293304f,0.4607007671147584915161f,0.5933007937856018543243f,\
+ 0.6538193570449948310852f,\
+0.4168340521864593029022f,0.9910155385732650756836f,0.3720780410803854465485f,\
+ 0.7061824081465601921082f,0.5780865414999425411224f,0.602319641038775444031f,\
+ 0.5715096746571362018585f,0.0549629041925072669983f,0.1205854485742747784f,\
+ 0.0143620483577251434326f,\
+0.0257951230742037296295f,0.8411248764023184776306f,0.4381882525049149990082f,\
+ 0.4643401596695184707642f,0.4197426405735313892365f,0.8023654492571949958801f,\
+ 0.5228588166646659374237f,0.5095121040940284729004f,0.4531980180181562900543f,\
+ 0.7817818326875567436218f,\
+0.776557037141174077988f,0.0466059204190969467163f,0.5113326688297092914581f,\
+ 0.7502101892605423927307f,0.6883628661744296550751f,0.0167756117880344390869f,\
+ 0.9345410899259150028229f,0.5609863763675093650818f,0.2205847105942666530609f,\
+ 0.7648540753871202468872f}
+#define CINI10 {0.4816976976580917835236f,0.1558785634115338325501f,0.2476022052578628063202f,\
+ 0.5216529071331024169922f,0.0805230387486517429352f,0.4409417239949107170105f,\
+ 0.8911933614872395992279f,0.9780590813606977462769f,0.4588093762286007404327f,\
+ 0.5510440031066536903381f,\
+0.0960960905067622661591f,0.4196785055100917816162f,0.7502556503750383853912f,\
+ 0.7218149593099951744080f,0.2895541018806397914887f,0.3907764498144388198853f,\
+ 0.6686618146486580371857f,0.4877656819298863410950f,0.4685971769504249095917f,\
+ 0.3562648519873619079590f,\
+0.3442325466312468051910f,0.4253307832404971122742f,0.5588058172725141048431f,\
+ 0.3304864969104528427124f,0.4157403339631855487824f,0.1595822656527161598206f,\
+ 0.3883102680556476116180f,0.9415460713207721710205f,0.4722979352809488773346f,\
+ 0.8533652639016509056091f,\
+0.1207739165984094142914f,0.8999380934983491897583f,0.4384902161546051502228f,\
+ 0.8976056622341275215149f,0.4911110657267272472382f,0.3402217179536819458008f,\
+ 0.9966153600253164768219f,0.0215395865961909294128f,0.6876890822313725948334f,\
+ 0.0044924151152372360229f,\
+0.6397854541428387165070f,0.5416147718206048011780f,0.2247649203054606914520f,\
+ 0.7364005260169506072998f,0.4496364505030214786530f,0.9678138038143515586853f,\
+ 0.6489060199819505214691f,0.2544666919857263565064f,0.1923975017853081226349f,\
+ 0.6861492367461323738098f,\
+0.4231455805711448192596f,0.6734441593289375305176f,0.8270696722902357578278f,\
+ 0.9360805852338671684265f,0.8326222090981900691986f,0.7424779590219259262085f,\
+ 0.0194640238769352436066f,0.8016031915321946144104f,0.2554539437405765056610f,\
+ 0.2688109613955020904541f,\
+0.7558490769006311893463f,0.4347589677199721336365f,0.6425966522656381130219f,\
+ 0.6957868058234453201294f,0.6499576461501419544220f,0.2303190128877758979797f,\
+ 0.5504368054680526256561f,0.3038997054100036621094f,0.0371030517853796482086f,\
+ 0.1703881053254008293152f,\
+0.5698686256073415279388f,0.0036411266773939132690f,0.4491547052748501300812f,\
+ 0.0576810697093605995178f,0.4956056098453700542450f,0.1888933442533016204834f,\
+ 0.5641230703331530094147f,0.8562210192903876304627f,0.0794764286838471889496f,\
+ 0.6196198705583810806274f,\
+0.2241039988584816455841f,0.8582094730809330940247f,0.7114551994018256664276f,\
+ 0.8026027604937553405762f,0.6153324418701231479645f,0.8958183480426669120789f,\
+ 0.8721761344932019710541f,0.8389767911285161972046f,0.2040955354459583759308f,\
+ 0.3166538262739777565002f,\
+0.7006825651042163372040f,0.2073105163872241973877f,0.5222550616599619388580f,\
+ 0.9416420971974730491638f,0.52116033947095274925f,0.4509841967374086380005f,\
+ 0.3961292845197021961212f,0.7240869747474789619446f,0.6724055963568389415741f,\
+ 0.2386146038770675659180f}
+#define CRESR10 -0.0701164785573487325809f
+#define CRESI10 -0.3697118554850691296565f
+
+
+static void sdetermaTest(void){
+ float in2[]=IN2; float res2=RES2;
+ float in3[]=IN3; float res3=RES3;
+ float in4[]=IN4; float res4=RES4;
+ float in5[]=IN5; float res5=RES5;
+ float in6[]=IN6; float res6=RES6;
+ float in8[]=IN8; float res8=RES8;
+ float in10[]=IN10; float res10=RES10;
+ float out2,out3,out4,out5,out6,out8,out10;
+
+ out2=sdeterma(in2,2);
+ out3=sdeterma(in3,3);
+ out4=sdeterma(in4,4);
+ out5=sdeterma(in5,5);
+ out6=sdeterma(in6,6);
+ out8=sdeterma(in8,8);
+ out10=sdeterma(in10,10);
+
+ assert((fabs(out2-res2)/fabs(out2))<1e-6);
+ assert((fabs(out3-res3)/fabs(out3))<1e-7);
+ assert((fabs(out4-res4)/fabs(out4))<3e-6);
+ assert((fabs(out5-res5)/fabs(out5))<1e-6);
+ assert((fabs(out6-res6)/fabs(out6))<1e-6);
+ assert((fabs(out8-res8)/fabs(out8))<1e-6);
+ assert((fabs(out10-res10)/fabs(out10))<3e-6);
+
+}
+
+static void cdetermaTest(void){
+ float inR2[]=CINR2; float inI2[]=CINI2; float resR2=CRESR2; float resI2=CRESI2;
+ float inR3[]=CINR3; float inI3[]=CINI3; float resR3=CRESR3; float resI3=CRESI3;
+ float inR4[]=CINR4; float inI4[]=CINI4; float resR4=CRESR4; float resI4=CRESI4;
+ float inR5[]=CINR5; float inI5[]=CINI5; float resR5=CRESR5; float resI5=CRESI5;
+ float inR6[]=CINR6; float inI6[]=CINI6; float resR6=CRESR6; float resI6=CRESI6;
+ float inR8[]=CINR8; float inI8[]=CINI8; float resR8=CRESR8; float resI8=CRESI8;
+ float inR10[]=CINR10; float inI10[]=CINI10; float resR10=CRESR10; float resI10=CRESI10;
+ floatComplex out2,out3,out4,out5,out6,out8,out10;
+ floatComplex *in2, *in3, *in4, *in5, *in6, *in8, *in10;
+
+ in2=FloatComplexMatrix(inR2,inI2,4);
+ in3=FloatComplexMatrix(inR3,inI3,9);
+ in4=FloatComplexMatrix(inR4,inI4,16);
+ in5=FloatComplexMatrix(inR5,inI5,25);
+ in6=FloatComplexMatrix(inR6,inI6,36);
+ in8=FloatComplexMatrix(inR8,inI8,64);
+ in10=FloatComplexMatrix(inR10,inI10,100);
+
+ out2=cdeterma(in2,2);
+ out3=cdeterma(in3,3);
+ out4=cdeterma(in4,4);
+ out5=cdeterma(in5,5);
+ out6=cdeterma(in6,6);
+ out8=cdeterma(in8,8);
+ out10=cdeterma(in10,10);
+
+
+ assert((fabs(creals(out2)-resR2)/fabs(creals(out2)))<1e-6);
+ assert((fabs(cimags(out2)-resI2)/fabs(cimags(out2)))<1e-6);
+
+ assert((fabs(creals(out3)-resR3)/fabs(creals(out3)))<1e-6);
+ assert((fabs(cimags(out3)-resI3)/fabs(cimags(out3)))<1e-6);
+
+ assert((fabs(creals(out4)-resR4)/fabs(creals(out4)))<1e-6);
+ assert((fabs(cimags(out4)-resI4)/fabs(cimags(out4)))<1e-6);
+
+ assert((fabs(creals(out5)-resR5)/fabs(creals(out5)))<3e-6);
+ assert((fabs(cimags(out5)-resI5)/fabs(cimags(out5)))<1e-6);
+
+ assert((fabs(creals(out6)-resR6)/fabs(creals(out6)))<1e-6);
+ assert((fabs(cimags(out6)-resI6)/fabs(cimags(out6)))<3e-6);
+
+ assert((fabs(creals(out8)-resR8)/fabs(creals(out8)))<1e-6);
+ assert((fabs(cimags(out8)-resI8)/fabs(cimags(out8)))<1e-6);
+
+ assert((fabs(creals(out10)-resR10)/fabs(creals(out10)))<3e-6);
+ assert((fabs(cimags(out10)-resI10)/fabs(cimags(out10)))<1e-6);
+}
+
+static int determTest(void){
+ printf("\n >>> Float Determ <<<\n");
+ sdetermaTest();
+ cdetermaTest();
+ return 0;
+}
+
+
+int main (void){
+ assert(determTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj b/2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj
new file mode 100644
index 00000000..5a221aba
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7F13C8AE-27AC-43B4-8C1E-263C5A4C9942}</ProjectGuid>
+ <RootNamespace>testDoubleDeterm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleDeterm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\auxiliaryFunctions\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj.filters b/2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj.filters
new file mode 100644
index 00000000..71bf090d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/test_DoubleDeterm/testDoubleDeterm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleDeterm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj b/2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj
new file mode 100644
index 00000000..8131ad90
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{3F1C1C41-424E-4E23-8990-AEB55196376D}</ProjectGuid>
+ <RootNamespace>testDoubleDist</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleDeterm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj.filters b/2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj.filters
new file mode 100644
index 00000000..71bf090d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/test_DoubleDist/testDoubleDist.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleDeterm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj b/2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj
new file mode 100644
index 00000000..e80f9c12
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{204A5126-03B1-4E9D-8CC1-CCA9F64BD081}</ProjectGuid>
+ <RootNamespace>testFloatDeterm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatDeterm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj.filters b/2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj.filters
new file mode 100644
index 00000000..df479e86
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/test_FloatDeterm/testFloatDeterm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatDeterm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/determ/u16determa.c b/2.3-1/src/c/matrixOperations/determ/u16determa.c
new file mode 100644
index 00000000..5e859d44
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/u16determa.c
@@ -0,0 +1,92 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#endif
+#include "determ.h"
+#include "lapack.h"
+
+uint16 u16determa(uint16 * in, int size){
+#ifndef WITHOUT_LAPACK
+ int i=0, info=0;
+ uint16 out=0;
+ uint16 *inCopy=NULL;
+ int* tmp=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=(uint16*)malloc((unsigned int)(size*size)*sizeof(uint16));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ tmp=(int*)malloc((unsigned int)size*sizeof(int));
+ dgetrf_(&size, &size, inCopy, &size, tmp, &info);
+ out=1;
+ for (i=0;i<size;i++){
+ if (tmp[i]!=i+1) out=-out;
+ out=inCopy[i*(size+1)]*out;
+ }
+ free(tmp);
+ free(inCopy);
+ break;
+ }
+
+#else
+ int i=0, j=0, k=0;
+ uint16 out=0, pivot=0;
+ uint16 *inCopy=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(uint16));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = inCopy[i*size+j]/inCopy[i*size+i];
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]-=pivot*inCopy[i*size+i+k*size];
+ }
+ }
+ }
+ out=1;
+ for (i=0;i<size;i++){
+ out *= inCopy[i*size+i];
+ }
+ free(inCopy);
+ break;
+
+ }
+#endif
+
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/u8determa.c b/2.3-1/src/c/matrixOperations/determ/u8determa.c
new file mode 100644
index 00000000..f226af20
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/u8determa.c
@@ -0,0 +1,92 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#endif
+#include "determ.h"
+#include "lapack.h"
+
+uint8 u8determa(uint8 * in, int size){
+#ifndef WITHOUT_LAPACK
+ int i=0, info=0;
+ uint8 out=0;
+ uint8 *inCopy=NULL;
+ int* tmp=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=(uint8*)malloc((unsigned int)(size*size)*sizeof(uint8));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ tmp=(int*)malloc((unsigned int)size*sizeof(int));
+ dgetrf_(&size, &size, inCopy, &size, tmp, &info);
+ out=1;
+ for (i=0;i<size;i++){
+ if (tmp[i]!=i+1) out=-out;
+ out=inCopy[i*(size+1)]*out;
+ }
+ free(tmp);
+ free(inCopy);
+ break;
+ }
+
+#else
+ int i=0, j=0, k=0;
+ uint8 out=0, pivot=0;
+ uint8 *inCopy=NULL;
+
+ /*Calculation of the determinant*/
+ switch (size){
+ case 2 : out = in[0]*in[3]-in[1]*in[2];
+ break;
+ case 3 : /*regle de Sarrus*/
+ out = in[0]*in[4]*in[8]+in[1]*in[5]*in[6]+in[2]*in[3]*in[7]
+ -in[0]*in[5]*in[7]-in[1]*in[3]*in[8]-in[2]*in[4]*in[6];
+ break;
+ default :
+
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(uint8));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = inCopy[i*size+j]/inCopy[i*size+i];
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]-=pivot*inCopy[i*size+i+k*size];
+ }
+ }
+ }
+ out=1;
+ for (i=0;i<size;i++){
+ out *= inCopy[i*size+i];
+ }
+ free(inCopy);
+ break;
+
+ }
+#endif
+
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/determ/zdeterma.c b/2.3-1/src/c/matrixOperations/determ/zdeterma.c
new file mode 100644
index 00000000..ea7e98d0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/determ/zdeterma.c
@@ -0,0 +1,138 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_LAPACK
+#include "lapack.h"
+#else
+#include "division.h"
+#endif
+#include "determ.h"
+#include "multiplication.h"
+#include "subtraction.h"
+#include "addition.h"
+
+
+doubleComplex zdeterma(doubleComplex * in, int size){
+#ifndef WITHOUT_LAPACK
+ doubleComplex tmp1,tmp2,out;
+ int i=0,info=0;
+ doubleComplex *inCopy;
+ int* vectPivot;
+
+ switch(size){
+ case 2 : out = zdiffs(zmuls(in[0],in[3]),zmuls(in[1],in[2]));
+ break;
+ case 3 : /*regle de Sarrus*/
+ out=DoubleComplex(0,0);
+ /*Addition Part*/
+ tmp1 = zmuls(in[0],in[4]);
+ tmp2 = zmuls(tmp1,in[8]);
+ out = zadds(out,tmp2);
+ tmp1 = zmuls(in[1],in[5]);
+ tmp2 = zmuls(tmp1,in[6]);
+ out = zadds(out,tmp2);
+ tmp1 = zmuls(in[2],in[3]);
+ tmp2 = zmuls(tmp1,in[7]);
+ out = zadds(out,tmp2);
+ /*Subtraction Part*/
+ tmp1 = zmuls(in[0],in[5]);
+ tmp2 = zmuls(tmp1,in[7]);
+ out = zdiffs(out,tmp2);
+ tmp1 = zmuls(in[1],in[3]);
+ tmp2 = zmuls(tmp1,in[8]);
+ out = zdiffs(out,tmp2);
+ tmp1 = zmuls(in[2],in[4]);
+ tmp2 = zmuls(tmp1,in[6]);
+ out = zdiffs(out,tmp2);
+ break;
+
+ default :
+ /*Allocate inCopy and Copy in in inCopy*/
+ inCopy=(doubleComplex*)malloc((unsigned int)(size*size)*sizeof(doubleComplex));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ /*Calculation of determinant*/
+ vectPivot = (int*)malloc((unsigned int)size*sizeof(int));
+ zgetrf_ ( &size, &size, inCopy, &size, vectPivot, &info);
+
+ out=DoubleComplex(1,0);
+ for (i=0;i<size;i++){
+ if (vectPivot[i]!=i+1) out=DoubleComplex(-zreals(out),-zimags(out));
+ out=zmuls(inCopy[i*(size+1)],out);
+ }
+ free(vectPivot);
+ free(inCopy);
+ break;
+ }
+
+#else
+ int i=0,j=0,k=0;
+ doubleComplex *inCopy;
+ doubleComplex tmp1,tmp2;
+ doubleComplex pivot;
+ doubleComplex out;
+
+
+ switch(size){
+ case 2 : out = zdiffs(zmuls(in[0],in[3]),zmuls(in[1],in[2]));
+ break;
+ case 3 : /*regle de Sarrus*/
+ out=DoubleComplex(0,0);
+ /*Addition Part*/
+ tmp1 = zmuls(in[0],in[4]);
+ tmp2 = zmuls(tmp1,in[8]);
+ out = zadds(out,tmp2);
+ tmp1 = zmuls(in[1],in[5]);
+ tmp2 = zmuls(tmp1,in[6]);
+ out = zadds(out,tmp2);
+ tmp1 = zmuls(in[2],in[3]);
+ tmp2 = zmuls(tmp1,in[7]);
+ out = zadds(out,tmp2);
+ /*Subtraction Part*/
+ tmp1 = zmuls(in[0],in[5]);
+ tmp2 = zmuls(tmp1,in[7]);
+ out = zdiffs(out,tmp2);
+ tmp1 = zmuls(in[1],in[3]);
+ tmp2 = zmuls(tmp1,in[8]);
+ out = zdiffs(out,tmp2);
+ tmp1 = zmuls(in[2],in[4]);
+ tmp2 = zmuls(tmp1,in[6]);
+ out = zdiffs(out,tmp2);
+ break;
+
+ default :
+ /*Copy the input matrix*/
+ inCopy=malloc((unsigned int)(size*size)*sizeof(doubleComplex));
+ for (i=0;i<size*size;i++) inCopy[i]=in[i];
+
+ for (i=0;i<size;i++){
+ for (j=i+1;j<size;j++){
+ pivot = zrdivs(inCopy[i*size+j],inCopy[i*size+i]);
+ for (k=0;k<size-i;k++){
+ inCopy[i*size+j+k*size]=zdiffs(inCopy[i*size+j+k*size],zmuls(pivot,inCopy[i*size+i+k*size]));
+ }
+ }
+ }
+ out=DoubleComplex(1,0);
+ for (i=0;i<size;i++){
+ out = zmuls(out,inCopy[i*size+i]);
+ }
+ free(inCopy);
+ break;
+ }
+#endif
+ return out;
+
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/diag/ddiaga.c b/2.3-1/src/c/matrixOperations/diag/ddiaga.c
new file mode 100644
index 00000000..983e8ff9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/ddiaga.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void ddiaga(double in, int size,int insert_post,double *out)
+{
+
+ int i;
+
+ for(i=0;i < ((size+abs(insert_post))*(size+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+
+ out[abs(insert_post)] = in;
+
+ }
+ else
+ {
+
+ out[(size + insert_post)*insert_post] = in;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/ddiagexa.c b/2.3-1/src/c/matrixOperations/diag/ddiagexa.c
new file mode 100644
index 00000000..0e6c314c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/ddiagexa.c
@@ -0,0 +1,130 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void ddiagexa(double *in, int _row,int _column,int extract_post,double *out)
+{
+
+
+ int j;
+ if(_row == _column)
+ {
+ if(extract_post <= 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+ out[j] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+ else
+ {
+ for ( j = extract_post ; j < _column ; j++ )
+ {
+
+
+ out[j-extract_post] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+
+ }
+ else if(_row > _column)
+ {
+
+ if(extract_post >=0)
+ {
+
+ for(j = extract_post; j < _column;j++)
+ {
+
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+
+ }
+ else
+ {
+
+ if((abs(extract_post) <= (_row - _column)))
+ {
+ for(j = 0; j < _column ; j++)
+ {
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+ }
+ else
+ {
+
+ for(j=0; j < (_row + extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+
+
+
+ }
+
+ }
+
+ }
+ else if (_row < _column)
+ {
+
+ if(extract_post > 0)
+ {
+ if((extract_post <= (_column - _row)))
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+ else
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+
+ }
+ else
+ {
+
+
+ for(j=0;j < (_row+extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+
+
+ }
+
+
+
+ }
+
+
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/ddiagexs.c b/2.3-1/src/c/matrixOperations/diag/ddiagexs.c
new file mode 100644
index 00000000..4e9ca5e4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/ddiagexs.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+double ddiagexs(double *in, int _row,int _column,int extract_post)
+{
+
+ if(_row == _column)
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1] ;
+ }
+ else
+ {
+
+ return in[(_row)*(_row-1)] ;
+
+ }
+ }
+
+ else
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1];
+
+ }
+ else
+ {
+ return in[(_row)*(_column-1)];
+
+ }
+
+
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/ddiagina.c b/2.3-1/src/c/matrixOperations/diag/ddiagina.c
new file mode 100644
index 00000000..243aba10
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/ddiagina.c
@@ -0,0 +1,59 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void ddiagina(double *in, int _row,int _column,int insert_post,double *out)
+{
+
+ int i, j;
+ if(_row == 1)
+ {
+ _column = _column;
+
+ }
+ else
+ {
+ _column = _row;
+
+ }
+
+ for(i=0;i < ((_column+abs(insert_post))*(_column+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+
+ out[((_column+abs(insert_post))*j)+abs(insert_post)+j] = in[j];
+ }
+
+ }
+ else
+ {
+ for ( j = insert_post ; j < _column+insert_post ; j++ )
+ {
+
+
+ out[((_column+insert_post)*j)-insert_post+j] = in[j-insert_post] ;
+
+ }
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/ddiagins.c b/2.3-1/src/c/matrixOperations/diag/ddiagins.c
new file mode 100644
index 00000000..09cc921e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/ddiagins.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void ddiagins(double *in, int size,double *out)
+{
+
+ int i, j;
+ for ( i = 0 ; i < size ; i++ )
+ {
+ for ( j = 0 ; j < size ; j++ )
+ {
+ if(i==j)
+ {
+ out[(size+1)*i] = in[i] ;
+ /* Because to replace the diagonal element with input matrix, (_coulmn+1)*i gives the diagonal postion for m*n matrix
+ i.e if 3*3 matrix then diagonal postion will be 0,4,6 and for 4*4 matrix diagonal postion will be 0,5,10,15 */
+
+
+ }
+
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/ddiags.c b/2.3-1/src/c/matrixOperations/diag/ddiags.c
new file mode 100644
index 00000000..bab21867
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/ddiags.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+double ddiags(double in)
+{
+
+ return in;
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i16diaga.c b/2.3-1/src/c/matrixOperations/diag/i16diaga.c
new file mode 100644
index 00000000..6078ada7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i16diaga.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void i16diaga(int16 in, int size,int insert_post,int16 *out)
+{
+
+ int i;
+
+ for(i=0;i < ((size+abs(insert_post))*(size+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+
+ out[abs(insert_post)] = in;
+
+ }
+ else
+ {
+
+ out[(size + insert_post)*insert_post] = in;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i16diagexa.c b/2.3-1/src/c/matrixOperations/diag/i16diagexa.c
new file mode 100644
index 00000000..b51e0ae1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i16diagexa.c
@@ -0,0 +1,130 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void i16diagexa(int16 *in, int _row,int _column,int extract_post,int16 *out)
+{
+
+
+ int j;
+ if(_row == _column)
+ {
+ if(extract_post <= 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+ out[j] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+ else
+ {
+ for ( j = extract_post ; j < _column ; j++ )
+ {
+
+
+ out[j-extract_post] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+
+ }
+ else if(_row > _column)
+ {
+
+ if(extract_post >=0)
+ {
+
+ for(j = extract_post; j < _column;j++)
+ {
+
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+
+ }
+ else
+ {
+
+ if((abs(extract_post) <= (_row - _column)))
+ {
+ for(j = 0; j < _column ; j++)
+ {
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+ }
+ else
+ {
+
+ for(j=0; j < (_row + extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+
+
+
+ }
+
+ }
+
+ }
+ else if (_row < _column)
+ {
+
+ if(extract_post > 0)
+ {
+ if((extract_post <= (_column - _row)))
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+ else
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+
+ }
+ else
+ {
+
+
+ for(j=0;j < (_row+extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+
+
+ }
+
+
+
+ }
+
+
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i16diagexs.c b/2.3-1/src/c/matrixOperations/diag/i16diagexs.c
new file mode 100644
index 00000000..1071c504
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i16diagexs.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+int16 i16diagexs(int16 *in, int _row,int _column,int extract_post)
+{
+
+ if(_row == _column)
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1] ;
+ }
+ else
+ {
+
+ return in[(_row)*(_row-1)] ;
+
+ }
+ }
+
+ else
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1];
+
+ }
+ else
+ {
+ return in[(_row)*(_column-1)];
+
+ }
+
+
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i16diagina.c b/2.3-1/src/c/matrixOperations/diag/i16diagina.c
new file mode 100644
index 00000000..a785003e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i16diagina.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void i16diagina(int16 *in, int _row,int _column,int insert_post,int16 *out)
+{
+ int i, j;
+ if(_row == 1)
+ {
+ _column = _column;
+
+ }
+ else
+ {
+ _column = _row;
+
+ }
+
+ for(i=0;i < ((_column+abs(insert_post))*(_column+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+
+ out[((_column+abs(insert_post))*j)+abs(insert_post)+j] = in[j];
+ }
+
+ }
+ else
+ {
+ for ( j = insert_post ; j < _column+insert_post ; j++ )
+ {
+
+
+ out[((_column+insert_post)*j)-insert_post+j] = in[j-insert_post] ;
+
+ }
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i16diagins.c b/2.3-1/src/c/matrixOperations/diag/i16diagins.c
new file mode 100644
index 00000000..f7f8612d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i16diagins.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void i16diagins(int16 *in, int size,int16 *out)
+{
+
+ int i, j;
+ for ( i = 0 ; i < size ; i++ )
+ {
+ for ( j = 0 ; j < size ; j++ )
+ {
+ if(i==j)
+ {
+ out[(size+1)*i] = in[i] ;
+ /* Because to replace the diagonal element with input matrix, (_coulmn+1)*i gives the diagonal postion for m*n matrix
+ i.e if 3*3 matrix then diagonal postion will be 0,4,6 and for 4*4 matrix diagonal postion will be 0,5,10,15 */
+
+
+ }
+
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i16diags.c b/2.3-1/src/c/matrixOperations/diag/i16diags.c
new file mode 100644
index 00000000..d6d89f5b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i16diags.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+int16 i16diags(int16 in)
+{
+
+ return in;
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i8diaga.c b/2.3-1/src/c/matrixOperations/diag/i8diaga.c
new file mode 100644
index 00000000..d4322278
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i8diaga.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void i8diaga(int8 in, int size,int insert_post,int8 *out)
+{
+
+ int i;
+
+ for(i=0;i < ((size+abs(insert_post))*(size+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+
+ out[abs(insert_post)] = in;
+
+ }
+ else
+ {
+
+ out[(size + insert_post)*insert_post] = in;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i8diagexa.c b/2.3-1/src/c/matrixOperations/diag/i8diagexa.c
new file mode 100644
index 00000000..8d5513b6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i8diagexa.c
@@ -0,0 +1,130 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void i8diagexa(int8 *in, int _row,int _column,int extract_post,int8 *out)
+{
+
+
+ int j;
+ if(_row == _column)
+ {
+ if(extract_post <= 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+ out[j] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+ else
+ {
+ for ( j = extract_post ; j < _column ; j++ )
+ {
+
+
+ out[j-extract_post] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+
+ }
+ else if(_row > _column)
+ {
+
+ if(extract_post >=0)
+ {
+
+ for(j = extract_post; j < _column;j++)
+ {
+
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+
+ }
+ else
+ {
+
+ if((abs(extract_post) <= (_row - _column)))
+ {
+ for(j = 0; j < _column ; j++)
+ {
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+ }
+ else
+ {
+
+ for(j=0; j < (_row + extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+
+
+
+ }
+
+ }
+
+ }
+ else if (_row < _column)
+ {
+
+ if(extract_post > 0)
+ {
+ if((extract_post <= (_column - _row)))
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+ else
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+
+ }
+ else
+ {
+
+
+ for(j=0;j < (_row+extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+
+
+ }
+
+
+
+ }
+
+
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i8diagexs.c b/2.3-1/src/c/matrixOperations/diag/i8diagexs.c
new file mode 100644
index 00000000..5d936618
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i8diagexs.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+int8 i8diagexs(int8 *in, int _row,int _column,int extract_post)
+{
+
+ if(_row == _column)
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1] ;
+ }
+ else
+ {
+
+ return in[(_row)*(_row-1)] ;
+
+ }
+ }
+
+ else
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1];
+
+ }
+ else
+ {
+ return in[(_row)*(_column-1)];
+
+ }
+
+
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i8diagina.c b/2.3-1/src/c/matrixOperations/diag/i8diagina.c
new file mode 100644
index 00000000..b1bd1bac
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i8diagina.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void i8diagina(int8 *in, int _row,int _column,int insert_post,int8 *out)
+{
+ int i, j;
+ if(_row == 1)
+ {
+ _column = _column;
+
+ }
+ else
+ {
+ _column = _row;
+
+ }
+
+ for(i=0;i < ((_column+abs(insert_post))*(_column+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+
+ out[((_column+abs(insert_post))*j)+abs(insert_post)+j] = in[j];
+ }
+
+ }
+ else
+ {
+ for ( j = insert_post ; j < _column+insert_post ; j++ )
+ {
+
+
+ out[((_column+insert_post)*j)-insert_post+j] = in[j-insert_post] ;
+
+ }
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i8diagins.c b/2.3-1/src/c/matrixOperations/diag/i8diagins.c
new file mode 100644
index 00000000..dc6df972
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i8diagins.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void i8diagins(int8 *in, int size,int8 *out)
+{
+
+ int i, j;
+ for ( i = 0 ; i < size ; i++ )
+ {
+ for ( j = 0 ; j < size ; j++ )
+ {
+ if(i==j)
+ {
+ out[(size+1)*i] = in[i] ;
+ /* Because to replace the diagonal element with input matrix, (_coulmn+1)*i gives the diagonal postion for m*n matrix
+ i.e if 3*3 matrix then diagonal postion will be 0,4,6 and for 4*4 matrix diagonal postion will be 0,5,10,15 */
+
+
+ }
+
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/i8diags.c b/2.3-1/src/c/matrixOperations/diag/i8diags.c
new file mode 100644
index 00000000..55eea1b1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/i8diags.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+int8 i8diags(int8 in)
+{
+
+ return in;
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u16diaga.c b/2.3-1/src/c/matrixOperations/diag/u16diaga.c
new file mode 100644
index 00000000..ee27e53c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u16diaga.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void u16diaga(uint16 in, int size,int insert_post,uint16 *out)
+{
+
+ int i;
+
+ for(i=0;i < ((size+abs(insert_post))*(size+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+
+ out[abs(insert_post)] = in;
+
+ }
+ else
+ {
+
+ out[(size + insert_post)*insert_post] = in;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u16diagexa.c b/2.3-1/src/c/matrixOperations/diag/u16diagexa.c
new file mode 100644
index 00000000..ac996b7b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u16diagexa.c
@@ -0,0 +1,130 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ rganization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void u16diagexa(uint16 *in, int _row,int _column,int extract_post,uint16 *out)
+{
+
+
+ int j;
+ if(_row == _column)
+ {
+ if(extract_post <= 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+ out[j] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+ else
+ {
+ for ( j = extract_post ; j < _column ; j++ )
+ {
+
+
+ out[j-extract_post] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+
+ }
+ else if(_row > _column)
+ {
+
+ if(extract_post >=0)
+ {
+
+ for(j = extract_post; j < _column;j++)
+ {
+
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+
+ }
+ else
+ {
+
+ if((abs(extract_post) <= (_row - _column)))
+ {
+ for(j = 0; j < _column ; j++)
+ {
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+ }
+ else
+ {
+
+ for(j=0; j < (_row + extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+
+
+
+ }
+
+ }
+
+ }
+ else if (_row < _column)
+ {
+
+ if(extract_post > 0)
+ {
+ if((extract_post <= (_column - _row)))
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+ else
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+
+ }
+ else
+ {
+
+
+ for(j=0;j < (_row+extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+
+
+ }
+
+
+
+ }
+
+
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u16diagexs.c b/2.3-1/src/c/matrixOperations/diag/u16diagexs.c
new file mode 100644
index 00000000..dd04c5d2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u16diagexs.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+uint16 u16diagexs(uint16 *in, int _row,int _column,int extract_post)
+{
+
+ if(_row == _column)
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1] ;
+ }
+ else
+ {
+
+ return in[(_row)*(_row-1)] ;
+
+ }
+ }
+
+ else
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1];
+
+ }
+ else
+ {
+ return in[(_row)*(_column-1)];
+
+ }
+
+
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u16diagina.c b/2.3-1/src/c/matrixOperations/diag/u16diagina.c
new file mode 100644
index 00000000..97f5139c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u16diagina.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void u16diagina(uint16 *in, int _row,int _column,int insert_post,uint16 *out)
+{
+ int i, j;
+ if(_row == 1)
+ {
+ _column = _column;
+
+ }
+ else
+ {
+ _column = _row;
+
+ }
+
+ for(i=0;i < ((_column+abs(insert_post))*(_column+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+
+ out[((_column+abs(insert_post))*j)+abs(insert_post)+j] = in[j];
+ }
+
+ }
+ else
+ {
+ for ( j = insert_post ; j < _column+insert_post ; j++ )
+ {
+
+
+ out[((_column+insert_post)*j)-insert_post+j] = in[j-insert_post] ;
+
+ }
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u16diagins.c b/2.3-1/src/c/matrixOperations/diag/u16diagins.c
new file mode 100644
index 00000000..65590bd1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u16diagins.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void u16diagins(uint16 *in, int size,uint16 *out)
+{
+
+ int i, j;
+ for ( i = 0 ; i < size ; i++ )
+ {
+ for ( j = 0 ; j < size ; j++ )
+ {
+ if(i==j)
+ {
+ out[(size+1)*i] = in[i] ;
+ /* Because to replace the diagonal element with input matrix, (_coulmn+1)*i gives the diagonal postion for m*n matrix
+ i.e if 3*3 matrix then diagonal postion will be 0,4,6 and for 4*4 matrix diagonal postion will be 0,5,10,15 */
+
+
+ }
+
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u16diags.c b/2.3-1/src/c/matrixOperations/diag/u16diags.c
new file mode 100644
index 00000000..1e9b4519
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u16diags.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+uint16 u16diags(uint16 in)
+{
+
+ return in;
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u8diaga.c b/2.3-1/src/c/matrixOperations/diag/u8diaga.c
new file mode 100644
index 00000000..e6641aff
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u8diaga.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void u8diaga(uint8 in, int size,int insert_post,uint8 *out)
+{
+
+ int i;
+
+ for(i=0;i < ((size+abs(insert_post))*(size+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+
+ out[abs(insert_post)] = in;
+
+ }
+ else
+ {
+
+ out[(size + insert_post)*insert_post] = in;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u8diagexa.c b/2.3-1/src/c/matrixOperations/diag/u8diagexa.c
new file mode 100644
index 00000000..17b873b2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u8diagexa.c
@@ -0,0 +1,130 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void u8diagexa(uint8 *in, int _row,int _column,int extract_post,uint8 *out)
+{
+
+
+ int j;
+ if(_row == _column)
+ {
+ if(extract_post <= 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+ out[j] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+ else
+ {
+ for ( j = extract_post ; j < _column ; j++ )
+ {
+
+
+ out[j-extract_post] = in[((_column+1)*j)-extract_post] ;
+
+ }
+ }
+
+ }
+ else if(_row > _column)
+ {
+
+ if(extract_post >=0)
+ {
+
+ for(j = extract_post; j < _column;j++)
+ {
+
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+
+ }
+ else
+ {
+
+ if((abs(extract_post) <= (_row - _column)))
+ {
+ for(j = 0; j < _column ; j++)
+ {
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+ }
+ else
+ {
+
+ for(j=0; j < (_row + extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+ }
+
+
+
+ }
+
+ }
+
+ }
+ else if (_row < _column)
+ {
+
+ if(extract_post > 0)
+ {
+ if((extract_post <= (_column - _row)))
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+ else
+ {
+ for(j=extract_post;j < _column;j++)
+ {
+ out[j-extract_post] = in[((_row+1)*j)-extract_post];
+ }
+
+ }
+
+ }
+ else
+ {
+
+
+ for(j=0;j < (_row+extract_post);j++)
+ {
+
+ out[j] = in[((_row+1)*j)-extract_post];
+
+
+
+ }
+
+
+
+ }
+
+
+ }
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u8diagexs.c b/2.3-1/src/c/matrixOperations/diag/u8diagexs.c
new file mode 100644
index 00000000..fb800fda
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u8diagexs.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+uint8 u8diagexs(uint8 *in, int _row,int _column,int extract_post)
+{
+
+ if(_row == _column)
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1] ;
+ }
+ else
+ {
+
+ return in[(_row)*(_row-1)] ;
+
+ }
+ }
+
+ else
+ {
+
+ if(extract_post < 0)
+ {
+
+ return in[_row-1];
+
+ }
+ else
+ {
+ return in[(_row)*(_column-1)];
+
+ }
+
+
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u8diagina.c b/2.3-1/src/c/matrixOperations/diag/u8diagina.c
new file mode 100644
index 00000000..178d0f65
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u8diagina.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+
+void u8diagina(uint8 *in, int _row,int _column,int insert_post,uint8 *out)
+{
+ int i, j;
+ if(_row == 1)
+ {
+ _column = _column;
+
+ }
+ else
+ {
+ _column = _row;
+
+ }
+
+ for(i=0;i < ((_column+abs(insert_post))*(_column+abs(insert_post)));i++)
+ {
+ out[i] = 0;
+
+ }
+
+ if(insert_post < 0)
+ {
+ for ( j = 0 ; j < _column ; j++ )
+ {
+
+
+
+ out[((_column+abs(insert_post))*j)+abs(insert_post)+j] = in[j];
+ }
+
+ }
+ else
+ {
+ for ( j = insert_post ; j < _column+insert_post ; j++ )
+ {
+
+
+ out[((_column+insert_post)*j)-insert_post+j] = in[j-insert_post] ;
+
+ }
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u8diagins.c b/2.3-1/src/c/matrixOperations/diag/u8diagins.c
new file mode 100644
index 00000000..787cd644
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u8diagins.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+void u8diagins(uint8 *in, int size,uint8 *out)
+{
+
+ int i, j;
+ for ( i = 0 ; i < size ; i++ )
+ {
+ for ( j = 0 ; j < size ; j++ )
+ {
+ if(i==j)
+ {
+ out[(size+1)*i] = in[i] ;
+ /* Because to replace the diagonal element with input matrix, (_coulmn+1)*i gives the diagonal postion for m*n matrix
+ i.e if 3*3 matrix then diagonal postion will be 0,4,6 and for 4*4 matrix diagonal postion will be 0,5,10,15 */
+
+
+ }
+
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/diag/u8diags.c b/2.3-1/src/c/matrixOperations/diag/u8diags.c
new file mode 100644
index 00000000..d3d2e468
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/diag/u8diags.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "diag.h"
+uint8 u8diags(uint8 in)
+{
+
+ return in;
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/dist/Makefile.am b/2.3-1/src/c/matrixOperations/dist/Makefile.am
new file mode 100644
index 00000000..a4a8b000
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/Makefile.am
@@ -0,0 +1,87 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libDist_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libDist.la
+
+HEAD = ../includes/dist.h
+
+libDist_la_SOURCES = $(HEAD) \
+ sdists.c \
+ sdista.c \
+ ddists.c \
+ ddista.c \
+ cdists.c \
+ cdista.c \
+ zdists.c \
+ zdista.c
+
+
+############
+## CHECK
+############
+
+
+check_PROGRAMS = testDoubleDist testFloatDist
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/spec/libSpec.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ libDist.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleDist_SOURCES = testDoubleDist.c
+testDoubleDist_LDADD = $(check_LDADD)
+testDoubleDist_CFLAGS = $(check_INCLUDES)
+
+testFloatDist_SOURCES = testFloatDist.c
+testFloatDist_LDADD = $(check_LDADD)
+testFloatDist_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleDist testFloatDist
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/dist/Makefile.in b/2.3-1/src/c/matrixOperations/dist/Makefile.in
new file mode 100644
index 00000000..cd394436
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/Makefile.in
@@ -0,0 +1,803 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleDist$(EXEEXT) testFloatDist$(EXEEXT)
+TESTS = testDoubleDist$(EXEEXT) testFloatDist$(EXEEXT)
+subdir = src/c/matrixOperations/dist
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libDist_la_LIBADD =
+am__objects_1 =
+am_libDist_la_OBJECTS = $(am__objects_1) libDist_la-sdists.lo \
+ libDist_la-sdista.lo libDist_la-ddists.lo libDist_la-ddista.lo \
+ libDist_la-cdists.lo libDist_la-cdista.lo libDist_la-zdists.lo \
+ libDist_la-zdista.lo
+libDist_la_OBJECTS = $(am_libDist_la_OBJECTS)
+libDist_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libDist_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleDist_OBJECTS = testDoubleDist-testDoubleDist.$(OBJEXT)
+testDoubleDist_OBJECTS = $(am_testDoubleDist_OBJECTS)
+testDoubleDist_DEPENDENCIES = $(check_LDADD)
+testDoubleDist_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleDist_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatDist_OBJECTS = testFloatDist-testFloatDist.$(OBJEXT)
+testFloatDist_OBJECTS = $(am_testFloatDist_OBJECTS)
+testFloatDist_DEPENDENCIES = $(check_LDADD)
+testFloatDist_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatDist_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libDist_la_SOURCES) $(testDoubleDist_SOURCES) \
+ $(testFloatDist_SOURCES)
+DIST_SOURCES = $(libDist_la_SOURCES) $(testDoubleDist_SOURCES) \
+ $(testFloatDist_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libDist_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libDist.la
+HEAD = ../includes/dist.h
+libDist_la_SOURCES = $(HEAD) \
+ sdists.c \
+ sdista.c \
+ ddists.c \
+ ddista.c \
+ cdists.c \
+ cdista.c \
+ zdists.c \
+ zdista.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/spec/libSpec.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ libDist.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleDist_SOURCES = testDoubleDist.c
+testDoubleDist_LDADD = $(check_LDADD)
+testDoubleDist_CFLAGS = $(check_INCLUDES)
+testFloatDist_SOURCES = testFloatDist.c
+testFloatDist_LDADD = $(check_LDADD)
+testFloatDist_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/dist/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/dist/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libDist.la: $(libDist_la_OBJECTS) $(libDist_la_DEPENDENCIES)
+ $(libDist_la_LINK) -rpath $(pkglibdir) $(libDist_la_OBJECTS) $(libDist_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleDist$(EXEEXT): $(testDoubleDist_OBJECTS) $(testDoubleDist_DEPENDENCIES)
+ @rm -f testDoubleDist$(EXEEXT)
+ $(testDoubleDist_LINK) $(testDoubleDist_OBJECTS) $(testDoubleDist_LDADD) $(LIBS)
+testFloatDist$(EXEEXT): $(testFloatDist_OBJECTS) $(testFloatDist_DEPENDENCIES)
+ @rm -f testFloatDist$(EXEEXT)
+ $(testFloatDist_LINK) $(testFloatDist_OBJECTS) $(testFloatDist_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-cdista.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-cdists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-ddista.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-ddists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-sdista.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-sdists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-zdista.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDist_la-zdists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleDist-testDoubleDist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatDist-testFloatDist.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libDist_la-sdists.lo: sdists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-sdists.lo -MD -MP -MF $(DEPDIR)/libDist_la-sdists.Tpo -c -o libDist_la-sdists.lo `test -f 'sdists.c' || echo '$(srcdir)/'`sdists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-sdists.Tpo $(DEPDIR)/libDist_la-sdists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdists.c' object='libDist_la-sdists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-sdists.lo `test -f 'sdists.c' || echo '$(srcdir)/'`sdists.c
+
+libDist_la-sdista.lo: sdista.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-sdista.lo -MD -MP -MF $(DEPDIR)/libDist_la-sdista.Tpo -c -o libDist_la-sdista.lo `test -f 'sdista.c' || echo '$(srcdir)/'`sdista.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-sdista.Tpo $(DEPDIR)/libDist_la-sdista.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdista.c' object='libDist_la-sdista.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-sdista.lo `test -f 'sdista.c' || echo '$(srcdir)/'`sdista.c
+
+libDist_la-ddists.lo: ddists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-ddists.lo -MD -MP -MF $(DEPDIR)/libDist_la-ddists.Tpo -c -o libDist_la-ddists.lo `test -f 'ddists.c' || echo '$(srcdir)/'`ddists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-ddists.Tpo $(DEPDIR)/libDist_la-ddists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddists.c' object='libDist_la-ddists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-ddists.lo `test -f 'ddists.c' || echo '$(srcdir)/'`ddists.c
+
+libDist_la-ddista.lo: ddista.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-ddista.lo -MD -MP -MF $(DEPDIR)/libDist_la-ddista.Tpo -c -o libDist_la-ddista.lo `test -f 'ddista.c' || echo '$(srcdir)/'`ddista.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-ddista.Tpo $(DEPDIR)/libDist_la-ddista.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddista.c' object='libDist_la-ddista.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-ddista.lo `test -f 'ddista.c' || echo '$(srcdir)/'`ddista.c
+
+libDist_la-cdists.lo: cdists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-cdists.lo -MD -MP -MF $(DEPDIR)/libDist_la-cdists.Tpo -c -o libDist_la-cdists.lo `test -f 'cdists.c' || echo '$(srcdir)/'`cdists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-cdists.Tpo $(DEPDIR)/libDist_la-cdists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdists.c' object='libDist_la-cdists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-cdists.lo `test -f 'cdists.c' || echo '$(srcdir)/'`cdists.c
+
+libDist_la-cdista.lo: cdista.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-cdista.lo -MD -MP -MF $(DEPDIR)/libDist_la-cdista.Tpo -c -o libDist_la-cdista.lo `test -f 'cdista.c' || echo '$(srcdir)/'`cdista.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-cdista.Tpo $(DEPDIR)/libDist_la-cdista.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdista.c' object='libDist_la-cdista.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-cdista.lo `test -f 'cdista.c' || echo '$(srcdir)/'`cdista.c
+
+libDist_la-zdists.lo: zdists.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-zdists.lo -MD -MP -MF $(DEPDIR)/libDist_la-zdists.Tpo -c -o libDist_la-zdists.lo `test -f 'zdists.c' || echo '$(srcdir)/'`zdists.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-zdists.Tpo $(DEPDIR)/libDist_la-zdists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdists.c' object='libDist_la-zdists.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-zdists.lo `test -f 'zdists.c' || echo '$(srcdir)/'`zdists.c
+
+libDist_la-zdista.lo: zdista.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -MT libDist_la-zdista.lo -MD -MP -MF $(DEPDIR)/libDist_la-zdista.Tpo -c -o libDist_la-zdista.lo `test -f 'zdista.c' || echo '$(srcdir)/'`zdista.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDist_la-zdista.Tpo $(DEPDIR)/libDist_la-zdista.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdista.c' object='libDist_la-zdista.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDist_la_CFLAGS) $(CFLAGS) -c -o libDist_la-zdista.lo `test -f 'zdista.c' || echo '$(srcdir)/'`zdista.c
+
+testDoubleDist-testDoubleDist.o: testDoubleDist.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDist_CFLAGS) $(CFLAGS) -MT testDoubleDist-testDoubleDist.o -MD -MP -MF $(DEPDIR)/testDoubleDist-testDoubleDist.Tpo -c -o testDoubleDist-testDoubleDist.o `test -f 'testDoubleDist.c' || echo '$(srcdir)/'`testDoubleDist.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleDist-testDoubleDist.Tpo $(DEPDIR)/testDoubleDist-testDoubleDist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleDist.c' object='testDoubleDist-testDoubleDist.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDist_CFLAGS) $(CFLAGS) -c -o testDoubleDist-testDoubleDist.o `test -f 'testDoubleDist.c' || echo '$(srcdir)/'`testDoubleDist.c
+
+testDoubleDist-testDoubleDist.obj: testDoubleDist.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDist_CFLAGS) $(CFLAGS) -MT testDoubleDist-testDoubleDist.obj -MD -MP -MF $(DEPDIR)/testDoubleDist-testDoubleDist.Tpo -c -o testDoubleDist-testDoubleDist.obj `if test -f 'testDoubleDist.c'; then $(CYGPATH_W) 'testDoubleDist.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleDist.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleDist-testDoubleDist.Tpo $(DEPDIR)/testDoubleDist-testDoubleDist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleDist.c' object='testDoubleDist-testDoubleDist.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleDist_CFLAGS) $(CFLAGS) -c -o testDoubleDist-testDoubleDist.obj `if test -f 'testDoubleDist.c'; then $(CYGPATH_W) 'testDoubleDist.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleDist.c'; fi`
+
+testFloatDist-testFloatDist.o: testFloatDist.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDist_CFLAGS) $(CFLAGS) -MT testFloatDist-testFloatDist.o -MD -MP -MF $(DEPDIR)/testFloatDist-testFloatDist.Tpo -c -o testFloatDist-testFloatDist.o `test -f 'testFloatDist.c' || echo '$(srcdir)/'`testFloatDist.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatDist-testFloatDist.Tpo $(DEPDIR)/testFloatDist-testFloatDist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatDist.c' object='testFloatDist-testFloatDist.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDist_CFLAGS) $(CFLAGS) -c -o testFloatDist-testFloatDist.o `test -f 'testFloatDist.c' || echo '$(srcdir)/'`testFloatDist.c
+
+testFloatDist-testFloatDist.obj: testFloatDist.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDist_CFLAGS) $(CFLAGS) -MT testFloatDist-testFloatDist.obj -MD -MP -MF $(DEPDIR)/testFloatDist-testFloatDist.Tpo -c -o testFloatDist-testFloatDist.obj `if test -f 'testFloatDist.c'; then $(CYGPATH_W) 'testFloatDist.c'; else $(CYGPATH_W) '$(srcdir)/testFloatDist.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatDist-testFloatDist.Tpo $(DEPDIR)/testFloatDist-testFloatDist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatDist.c' object='testFloatDist-testFloatDist.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatDist_CFLAGS) $(CFLAGS) -c -o testFloatDist-testFloatDist.obj `if test -f 'testFloatDist.c'; then $(CYGPATH_W) 'testFloatDist.c'; else $(CYGPATH_W) '$(srcdir)/testFloatDist.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/dist/cdista.c b/2.3-1/src/c/matrixOperations/dist/cdista.c
new file mode 100644
index 00000000..f9ffd17b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/cdista.c
@@ -0,0 +1,54 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "dist.h"
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+#include "spec.h"
+#include "sqrt.h"
+#include "conj.h"
+#include "subtraction.h"
+
+float cdista(floatComplex* in1,floatComplex* in2, int lines, int columns){
+ int i=0;
+ float out = 0;
+ floatComplex *a, *at, *mul;
+ floatComplex *eigenvalues;
+
+
+ /* FIXME : malloc here*/
+ a=(floatComplex*)malloc((unsigned int)(lines*columns)*sizeof(floatComplex));
+ at=(floatComplex*)malloc((unsigned int)(lines*columns)*sizeof(floatComplex));
+ mul=(floatComplex*)malloc((unsigned int)(lines*lines)*sizeof(floatComplex));
+ eigenvalues=(floatComplex*)malloc((unsigned int)(lines)*sizeof(floatComplex));
+
+ for (i=0;i<lines*columns;i++) a[i]=cdiffs(in1[i],in2[i]);
+ ctransposea(a,lines, columns,at);
+ cconja(at,lines*columns,at);
+ cmulma(a,lines,columns,at,columns,lines,mul);
+ cspeca(mul,lines,eigenvalues);
+ csqrta(eigenvalues,lines,eigenvalues);
+
+ /* Research of the higher value of eigenvalues*/
+ for (i=0;i<lines;i++){
+ if (creals(eigenvalues[i])>out) out = creals(eigenvalues[i]);
+ }
+
+
+ free(a);
+ free(at);
+ free(mul);
+ free(eigenvalues);
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/dist/cdists.c b/2.3-1/src/c/matrixOperations/dist/cdists.c
new file mode 100644
index 00000000..c949e568
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/cdists.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "dist.h"
+#include "pow.h"
+#include "sqrt.h"
+
+float cdists(floatComplex in1, floatComplex in2){
+ float out=0;
+
+ out+=spows(creals(in1)-creals(in2),2);
+ out+=spows(cimags(in1)-cimags(in2),2);
+ return ssqrts(out);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/dist/ddista.c b/2.3-1/src/c/matrixOperations/dist/ddista.c
new file mode 100644
index 00000000..bf051a60
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/ddista.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "dist.h"
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+#include "spec.h"
+#include "sqrt.h"
+
+
+double ddista(double* in1,double* in2, int lines, int columns){
+ int i=0;
+ double out=0;
+ double *a, *at, *mul;
+ doubleComplex *eigenvalues,*mulCpx;
+
+
+ /* FIXME : malloc here*/
+ a=(double*)malloc((unsigned int)(lines*columns)*sizeof(double));
+ at=(double*)malloc((unsigned int)(lines*columns)*sizeof(double));
+ mul=(double*)malloc((unsigned int)(lines*lines)*sizeof(double));
+ eigenvalues=(doubleComplex*)malloc((unsigned int)(lines)*sizeof(doubleComplex));
+ mulCpx=(doubleComplex*)malloc((unsigned int)(lines*lines)*sizeof(doubleComplex));
+
+ for (i=0;i<lines*columns;i++) a[i]=in1[i]-in2[i];
+ dtransposea(a,lines, columns,at);
+ dmulma(a,lines,columns,at,columns,lines,mul);
+ for (i=0;i<lines*lines;i++) mulCpx[i]=DoubleComplex(mul[i],0);
+ zspeca(mulCpx,lines,eigenvalues);
+ zsqrta(eigenvalues,lines,eigenvalues);
+
+ /* Research of the higher value of eigenvalues*/
+ for (i=0;i<lines;i++){
+ if (zreals(eigenvalues[i])>out) out = zreals(eigenvalues[i]);
+ }
+
+ free(a);
+ free(at);
+ free(mul);
+ free(eigenvalues);
+ free(mulCpx);
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/dist/ddists.c b/2.3-1/src/c/matrixOperations/dist/ddists.c
new file mode 100644
index 00000000..2bbd6feb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/ddists.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "dist.h"
+#include "abs.h"
+
+double ddists(double in1, double in2){
+ return dabss(in2-in1);
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/dist/sdista.c b/2.3-1/src/c/matrixOperations/dist/sdista.c
new file mode 100644
index 00000000..438c3908
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/sdista.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "dist.h"
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+#include "spec.h"
+#include "sqrt.h"
+
+
+float sdista(float* in1,float* in2, int lines, int columns){
+ int i=0;
+ float out=0;
+ float *a, *at, *mul;
+ floatComplex *eigenvalues,*mulCpx;
+
+
+ /* FIXME : malloc here*/
+ a=(float*)malloc((unsigned int)(lines*columns)*sizeof(float));
+ at=(float*)malloc((unsigned int)(lines*columns)*sizeof(float));
+ mul=(float*)malloc((unsigned int)(lines*lines)*sizeof(float));
+ eigenvalues=(floatComplex*)malloc((unsigned int)(lines)*sizeof(floatComplex));
+ mulCpx=(floatComplex*)malloc((unsigned int)(lines*lines)*sizeof(floatComplex));
+
+ for (i=0;i<lines*columns;i++) a[i]=in1[i]-in2[i];
+ stransposea(a,lines, columns,at);
+ smulma(a,lines,columns,at,columns,lines,mul);
+ for (i=0;i<lines*lines;i++) mulCpx[i]=FloatComplex(mul[i],0);
+ cspeca(mulCpx,lines,eigenvalues);
+ csqrta(eigenvalues,lines,eigenvalues);
+
+ /* Research of the higher value of eigenvalues*/
+ for (i=0;i<lines;i++){
+ if (creals(eigenvalues[i])>out) out = creals(eigenvalues[i]);
+ }
+
+ free(a);
+ free(at);
+ free(mul);
+ free(eigenvalues);
+ free(mulCpx);
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/dist/sdists.c b/2.3-1/src/c/matrixOperations/dist/sdists.c
new file mode 100644
index 00000000..beb3895a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/sdists.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "dist.h"
+#include "abs.h"
+
+float sdists(float in1, float in2){
+ return sabss(in2-in1);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/dist/testDoubleDist.c b/2.3-1/src/c/matrixOperations/dist/testDoubleDist.c
new file mode 100644
index 00000000..0ec69657
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/testDoubleDist.c
@@ -0,0 +1,116 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "dist.h"
+
+static void ddistsTest(void){
+ double in1=2,in2=1;
+ printf("%f\n",ddists(in1,in2));
+
+}
+
+static void ddistaTest(void){
+ double in1[4]={3,4,5,6};
+ double in2[4]={0};
+ double out;
+ double result=9.271109059321277712229;
+
+ double in3[6]={1,4,2,5,3,6};
+ double in4[6]={0};
+ double result2=9.5080320006957226297573;
+
+ out=ddista(in1,in2,2,2);
+ printf("%f\n",out);
+ assert(fabs(out-result) / fabs(out) <1e-16);
+
+
+ out=ddista(in3,in4,2,3);
+ printf("%f\n",out);
+ assert(fabs(out-result2) / fabs(out) <3e-16);
+}
+
+static void zdistsTest(void){
+ doubleComplex in1,in2;
+ double out;
+ in1=DoubleComplex(3,4);
+ in2=DoubleComplex(0,0);
+
+ out=zdists(in1,in2);
+ printf("%f\n",out);
+ assert(fabs(out-5) / fabs(out) <1e-16);
+
+}
+
+static void zdistaTest(void){
+ double in1[4]={3,4,5,6};
+ double in2[4]={0};
+ double out;
+ double result=9.271109059321277712229;
+
+ double in3[6]={1,4,2,5,3,6};
+ double in4[6]={0};
+ double result2=9.5080320006957226297573;
+
+
+ double in5[15]={1.9379387702792882919312, 6.797837591730058193207, 5.88365742936730384827, 9.331753817386925220490 , 5.509122880175709724426 ,
+ 8.0405469564720988273621 , 1.074489727616310119629 , 7.4039250845089554786682 , 5.6103316973894834518433 , 7.6611549546942114830017 ,
+ 7.8306589089334011077881 , 1.4388314681127667427063 , 1.6471924725919961929321 , 3.1774142337962985038757 , 5.0265956297516822814941};
+ double in6[15]={6.9204960623756051064 , 7.0065794046968221664429 , 8.8706119870766997337341 , 6.9797694869339466094971 , 6.7989911558106541633606 ,
+ 3.6159398127347230911255 , 2.6739976881071925163269 , 0.7736870646476745605469 , 1.494100340642035007477 , 3.2018390577286481857300 ,
+ 2.0260545751079916954041 , 4.4988587312400341033936 , 7.7075743721798062324524 , 2.4352242145687341690063 , 2.1261148853227496147156};
+ double in7[15]={0};
+ double result3=28.509738138317576527925;
+ doubleComplex *in1Cpx, *in2Cpx, *in3Cpx, *in4Cpx,*in5Cpx,*in6Cpx;
+
+ in1Cpx=DoubleComplexMatrix(in1,in2,4);
+ in2Cpx=DoubleComplexMatrix(in2,in2,4);
+ in3Cpx=DoubleComplexMatrix(in3,in4,6);
+ in4Cpx=DoubleComplexMatrix(in4,in4,6);
+ in5Cpx=DoubleComplexMatrix(in5,in6,15);
+ in6Cpx=DoubleComplexMatrix(in7,in7,15);
+
+
+
+ out=zdista(in1Cpx,in2Cpx,2,2);
+ printf("%f\n",out);
+ assert(fabs(out-result) / fabs(out) <1e-16);
+
+
+ out=zdista(in3Cpx,in4Cpx,2,3);
+ printf("%f\n",out);
+ assert(fabs(out-result2) / fabs(out) <3e-16);
+
+ out=zdista(in5Cpx,in6Cpx,5,3);
+ printf("%f\n",out);
+ assert(fabs(out-result3) / fabs(out) <3e-16);
+
+}
+
+static int distTest(void){
+ printf("\n>>> Double Dist Tests <<<\n");
+ printf(">>> double <<<\n");
+ ddistsTest();
+ ddistaTest();
+ printf(">>> doubleComplex <<<\n");
+ zdistsTest();
+ zdistaTest();
+ return 0;
+}
+
+int main(void){
+ assert(distTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/dist/testFloatDist.c b/2.3-1/src/c/matrixOperations/dist/testFloatDist.c
new file mode 100644
index 00000000..895767ec
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/testFloatDist.c
@@ -0,0 +1,116 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "dist.h"
+
+static void sdistsTest(void){
+ float in1=2,in2=1;
+ printf("%f\n",sdists(in1,in2));
+
+}
+
+static void sdistaTest(void){
+ float in1[4]={3,4,5,6};
+ float in2[4]={0};
+ float out;
+ float result=9.271109059321277712229f;
+
+ float in3[6]={1,4,2,5,3,6};
+ float in4[6]={0};
+ float result2=9.5080320006957226297573f;
+
+ out=sdista(in1,in2,2,2);
+ printf("%f\n",out);
+ assert(fabs(out-result) / fabs(out) <1e-16);
+
+
+ out=sdista(in3,in4,2,3);
+ printf("%f\n",out);
+ assert(fabs(out-result2) / fabs(out) <1e-15);
+}
+
+static void cdistsTest(void){
+ floatComplex in1,in2;
+ float out;
+ in1=FloatComplex(3,4);
+ in2=FloatComplex(0,0);
+
+ out=cdists(in1,in2);
+ printf("%f\n",out);
+ assert(fabs(out-5) / fabs(out) <1e-16);
+
+}
+
+static void cdistaTest(void){
+ float in1[4]={3,4,5,6};
+ float in2[4]={0};
+ float out;
+ float result=9.271109059321277712229f;
+
+ float in3[6]={1,4,2,5,3,6};
+ float in4[6]={0};
+ float result2=9.5080320006957226297573f;
+
+
+ float in5[15]={1.9379387702792882919312f, 6.797837591730058193207f, 5.88365742936730384827f, 9.331753817386925220490f , 5.509122880175709724426f ,
+ 8.0405469564720988273621f , 1.074489727616310119629f , 7.4039250845089554786682f , 5.6103316973894834518433f , 7.6611549546942114830017f ,
+ 7.8306589089334011077881f , 1.4388314681127667427063f , 1.6471924725919961929321f , 3.1774142337962985038757f , 5.0265956297516822814941f};
+ float in6[15]={6.9204960623756051064f , 7.0065794046968221664429f , 8.8706119870766997337341f , 6.9797694869339466094971f , 6.7989911558106541633606f ,
+ 3.6159398127347230911255f , 2.6739976881071925163269f , 0.7736870646476745605469f , 1.494100340642035007477f , 3.2018390577286481857300f ,
+ 2.0260545751079916954041f , 4.4988587312400341033936f , 7.7075743721798062324524f , 2.4352242145687341690063f , 2.1261148853227496147156f};
+ float in7[15]={0};
+ float result3=28.509738138317576527925f;
+ floatComplex *in1Cpx, *in2Cpx, *in3Cpx, *in4Cpx,*in5Cpx,*in6Cpx;
+
+ in1Cpx=FloatComplexMatrix(in1,in2,4);
+ in2Cpx=FloatComplexMatrix(in2,in2,4);
+ in3Cpx=FloatComplexMatrix(in3,in4,6);
+ in4Cpx=FloatComplexMatrix(in4,in4,6);
+ in5Cpx=FloatComplexMatrix(in5,in6,15);
+ in6Cpx=FloatComplexMatrix(in7,in7,15);
+
+
+
+ out=cdista(in1Cpx,in2Cpx,2,2);
+ printf("%f\n",out);
+ assert(fabs(out-result) / fabs(out) <1e-16);
+
+
+ out=cdista(in3Cpx,in4Cpx,2,3);
+ printf("%f\n",out);
+ assert(fabs(out-result2) / fabs(out) <1e-15);
+
+ out=cdista(in5Cpx,in6Cpx,5,3);
+ printf("%f\n",out);
+ assert(fabs(out-result3) / fabs(out) <1e-15);
+
+}
+
+static int distTest(void){
+ printf("\n>>> Float Dist Tests <<<\n");
+ printf(">>> float <<<\n");
+ sdistsTest();
+ sdistaTest();
+ printf(">>> floatComplex <<<\n");
+ cdistsTest();
+ cdistaTest();
+ return 0;
+}
+
+int main(void){
+ assert(distTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj b/2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj
new file mode 100644
index 00000000..b3095196
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{3902CF74-70D4-4FA4-AA53-71643B94BAB9}</ProjectGuid>
+ <RootNamespace>testFloatDist</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatDist.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj.filters b/2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj.filters
new file mode 100644
index 00000000..4bfcafe5
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/test_FloatDist/testFloatDist.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatDist.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/dist/zdista.c b/2.3-1/src/c/matrixOperations/dist/zdista.c
new file mode 100644
index 00000000..72afa184
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/zdista.c
@@ -0,0 +1,54 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "dist.h"
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+#include "spec.h"
+#include "sqrt.h"
+#include "conj.h"
+#include "subtraction.h"
+
+double zdista(doubleComplex* in1,doubleComplex* in2, int lines, int columns){
+ int i=0;
+ double out = 0;
+ doubleComplex *a, *at, *mul;
+ doubleComplex *eigenvalues;
+
+
+ /* FIXME : malloc here*/
+ a=(doubleComplex*)malloc((unsigned int)(lines*columns)*sizeof(doubleComplex));
+ at=(doubleComplex*)malloc((unsigned int)(lines*columns)*sizeof(doubleComplex));
+ mul=(doubleComplex*)malloc((unsigned int)(lines*lines)*sizeof(doubleComplex));
+ eigenvalues=(doubleComplex*)malloc((unsigned int)(lines)*sizeof(doubleComplex));
+
+ for (i=0;i<lines*columns;i++) a[i]=zdiffs(in1[i],in2[i]);
+ ztransposea(a,lines, columns,at);
+ zconja(at,lines*columns,at);
+ zmulma(a,lines,columns,at,columns,lines,mul);
+ zspeca(mul,lines,eigenvalues);
+ zsqrta(eigenvalues,lines,eigenvalues);
+
+ /* Research of the higher value of eigenvalues*/
+ for (i=0;i<lines;i++){
+ if (zreals(eigenvalues[i])>out) out = zreals(eigenvalues[i]);
+ }
+
+
+ free(a);
+ free(at);
+ free(mul);
+ free(eigenvalues);
+
+ return out;
+}
diff --git a/2.3-1/src/c/matrixOperations/dist/zdists.c b/2.3-1/src/c/matrixOperations/dist/zdists.c
new file mode 100644
index 00000000..5d257bd2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/dist/zdists.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "dist.h"
+#include "pow.h"
+#include "sqrt.h"
+
+double zdists(doubleComplex in1, doubleComplex in2){
+ double out=0;
+
+ out+=dpows(zreals(in1)-zreals(in2),2);
+ out+=dpows(zimags(in1)-zimags(in2),2);
+ return dsqrts(out);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/Makefile.am b/2.3-1/src/c/matrixOperations/division/Makefile.am
new file mode 100644
index 00000000..919ce997
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/Makefile.am
@@ -0,0 +1,73 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixDivision_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixDivision.la
+
+HEAD = ../includes/matrixDivision.h
+
+libMatrixDivision_la_SOURCES = $(HEAD) \
+ srdivma.c \
+ sldivma.c \
+ drdivma.c \
+ dldivma.c \
+ zrdivma.c \
+ zldivma.c \
+ crdivma.c \
+ cldivma.c \
+ crdivcsv.c \
+ crdivscv.c \
+ crdivv.c \
+ drdivv.c \
+ srdivv.c \
+ zrdivdzv.c \
+ zrdivv.c \
+ zrdivzdv.c
+
+check_PROGRAMS = testMatrixRDivision \
+ testMatrixLDivision
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ libMatrixDivision.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+ztestMatrixLDivision_SOURCES = testMatrixLDivision.c
+testMatrixLDivision_LDADD = $(check_LDADD)
+testMatrixLDivision_CFLAGS = $(check_INCLUDES)
+
+testMatrixRDivision_SOURCES = testMatrixRDivision.c
+testMatrixRDivision_LDADD = $(check_LDADD)
+testMatrixRDivision_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixRDivision \
+ testMatrixLDivision
diff --git a/2.3-1/src/c/matrixOperations/division/Makefile.in b/2.3-1/src/c/matrixOperations/division/Makefile.in
new file mode 100644
index 00000000..02a150dc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/Makefile.in
@@ -0,0 +1,880 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixRDivision$(EXEEXT) \
+ testMatrixLDivision$(EXEEXT)
+TESTS = testMatrixRDivision$(EXEEXT) testMatrixLDivision$(EXEEXT)
+subdir = src/c/matrixOperations/division
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixDivision_la_LIBADD =
+am__objects_1 =
+am_libMatrixDivision_la_OBJECTS = $(am__objects_1) \
+ libMatrixDivision_la-srdivma.lo \
+ libMatrixDivision_la-sldivma.lo \
+ libMatrixDivision_la-drdivma.lo \
+ libMatrixDivision_la-dldivma.lo \
+ libMatrixDivision_la-zrdivma.lo \
+ libMatrixDivision_la-zldivma.lo \
+ libMatrixDivision_la-crdivma.lo \
+ libMatrixDivision_la-cldivma.lo \
+ libMatrixDivision_la-crdivcsv.lo \
+ libMatrixDivision_la-crdivscv.lo \
+ libMatrixDivision_la-crdivv.lo libMatrixDivision_la-drdivv.lo \
+ libMatrixDivision_la-srdivv.lo \
+ libMatrixDivision_la-zrdivdzv.lo \
+ libMatrixDivision_la-zrdivv.lo \
+ libMatrixDivision_la-zrdivzdv.lo
+libMatrixDivision_la_OBJECTS = $(am_libMatrixDivision_la_OBJECTS)
+libMatrixDivision_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixDivision_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+testMatrixLDivision_SOURCES = testMatrixLDivision.c
+testMatrixLDivision_OBJECTS = \
+ testMatrixLDivision-testMatrixLDivision.$(OBJEXT)
+testMatrixLDivision_DEPENDENCIES = $(check_LDADD)
+testMatrixLDivision_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMatrixLDivision_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testMatrixRDivision_OBJECTS = \
+ testMatrixRDivision-testMatrixRDivision.$(OBJEXT)
+testMatrixRDivision_OBJECTS = $(am_testMatrixRDivision_OBJECTS)
+testMatrixRDivision_DEPENDENCIES = $(check_LDADD)
+testMatrixRDivision_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMatrixRDivision_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixDivision_la_SOURCES) testMatrixLDivision.c \
+ $(testMatrixRDivision_SOURCES)
+DIST_SOURCES = $(libMatrixDivision_la_SOURCES) testMatrixLDivision.c \
+ $(testMatrixRDivision_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixDivision_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixDivision.la
+HEAD = ../includes/matrixDivision.h
+libMatrixDivision_la_SOURCES = $(HEAD) \
+ srdivma.c \
+ sldivma.c \
+ drdivma.c \
+ dldivma.c \
+ zrdivma.c \
+ zldivma.c \
+ crdivma.c \
+ cldivma.c \
+ crdivcsv.c \
+ crdivscv.c \
+ crdivv.c \
+ drdivv.c \
+ srdivv.c \
+ zrdivdzv.c \
+ zrdivv.c \
+ zrdivzdv.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ libMatrixDivision.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+ztestMatrixLDivision_SOURCES = testMatrixLDivision.c
+testMatrixLDivision_LDADD = $(check_LDADD)
+testMatrixLDivision_CFLAGS = $(check_INCLUDES)
+testMatrixRDivision_SOURCES = testMatrixRDivision.c
+testMatrixRDivision_LDADD = $(check_LDADD)
+testMatrixRDivision_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/division/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/division/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixDivision.la: $(libMatrixDivision_la_OBJECTS) $(libMatrixDivision_la_DEPENDENCIES)
+ $(libMatrixDivision_la_LINK) -rpath $(pkglibdir) $(libMatrixDivision_la_OBJECTS) $(libMatrixDivision_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixLDivision$(EXEEXT): $(testMatrixLDivision_OBJECTS) $(testMatrixLDivision_DEPENDENCIES)
+ @rm -f testMatrixLDivision$(EXEEXT)
+ $(testMatrixLDivision_LINK) $(testMatrixLDivision_OBJECTS) $(testMatrixLDivision_LDADD) $(LIBS)
+testMatrixRDivision$(EXEEXT): $(testMatrixRDivision_OBJECTS) $(testMatrixRDivision_DEPENDENCIES)
+ @rm -f testMatrixRDivision$(EXEEXT)
+ $(testMatrixRDivision_LINK) $(testMatrixRDivision_OBJECTS) $(testMatrixRDivision_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-cldivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-crdivcsv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-crdivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-crdivscv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-crdivv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-dldivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-drdivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-drdivv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-sldivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-srdivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-srdivv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-zldivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-zrdivdzv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-zrdivma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-zrdivv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixDivision_la-zrdivzdv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixDivision_la-srdivma.lo: srdivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-srdivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-srdivma.Tpo -c -o libMatrixDivision_la-srdivma.lo `test -f 'srdivma.c' || echo '$(srcdir)/'`srdivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-srdivma.Tpo $(DEPDIR)/libMatrixDivision_la-srdivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srdivma.c' object='libMatrixDivision_la-srdivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-srdivma.lo `test -f 'srdivma.c' || echo '$(srcdir)/'`srdivma.c
+
+libMatrixDivision_la-sldivma.lo: sldivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-sldivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-sldivma.Tpo -c -o libMatrixDivision_la-sldivma.lo `test -f 'sldivma.c' || echo '$(srcdir)/'`sldivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-sldivma.Tpo $(DEPDIR)/libMatrixDivision_la-sldivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sldivma.c' object='libMatrixDivision_la-sldivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-sldivma.lo `test -f 'sldivma.c' || echo '$(srcdir)/'`sldivma.c
+
+libMatrixDivision_la-drdivma.lo: drdivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-drdivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-drdivma.Tpo -c -o libMatrixDivision_la-drdivma.lo `test -f 'drdivma.c' || echo '$(srcdir)/'`drdivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-drdivma.Tpo $(DEPDIR)/libMatrixDivision_la-drdivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drdivma.c' object='libMatrixDivision_la-drdivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-drdivma.lo `test -f 'drdivma.c' || echo '$(srcdir)/'`drdivma.c
+
+libMatrixDivision_la-dldivma.lo: dldivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-dldivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-dldivma.Tpo -c -o libMatrixDivision_la-dldivma.lo `test -f 'dldivma.c' || echo '$(srcdir)/'`dldivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-dldivma.Tpo $(DEPDIR)/libMatrixDivision_la-dldivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dldivma.c' object='libMatrixDivision_la-dldivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-dldivma.lo `test -f 'dldivma.c' || echo '$(srcdir)/'`dldivma.c
+
+libMatrixDivision_la-zrdivma.lo: zrdivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-zrdivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-zrdivma.Tpo -c -o libMatrixDivision_la-zrdivma.lo `test -f 'zrdivma.c' || echo '$(srcdir)/'`zrdivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-zrdivma.Tpo $(DEPDIR)/libMatrixDivision_la-zrdivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrdivma.c' object='libMatrixDivision_la-zrdivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-zrdivma.lo `test -f 'zrdivma.c' || echo '$(srcdir)/'`zrdivma.c
+
+libMatrixDivision_la-zldivma.lo: zldivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-zldivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-zldivma.Tpo -c -o libMatrixDivision_la-zldivma.lo `test -f 'zldivma.c' || echo '$(srcdir)/'`zldivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-zldivma.Tpo $(DEPDIR)/libMatrixDivision_la-zldivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zldivma.c' object='libMatrixDivision_la-zldivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-zldivma.lo `test -f 'zldivma.c' || echo '$(srcdir)/'`zldivma.c
+
+libMatrixDivision_la-crdivma.lo: crdivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-crdivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-crdivma.Tpo -c -o libMatrixDivision_la-crdivma.lo `test -f 'crdivma.c' || echo '$(srcdir)/'`crdivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-crdivma.Tpo $(DEPDIR)/libMatrixDivision_la-crdivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crdivma.c' object='libMatrixDivision_la-crdivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-crdivma.lo `test -f 'crdivma.c' || echo '$(srcdir)/'`crdivma.c
+
+libMatrixDivision_la-cldivma.lo: cldivma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-cldivma.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-cldivma.Tpo -c -o libMatrixDivision_la-cldivma.lo `test -f 'cldivma.c' || echo '$(srcdir)/'`cldivma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-cldivma.Tpo $(DEPDIR)/libMatrixDivision_la-cldivma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cldivma.c' object='libMatrixDivision_la-cldivma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-cldivma.lo `test -f 'cldivma.c' || echo '$(srcdir)/'`cldivma.c
+
+libMatrixDivision_la-crdivcsv.lo: crdivcsv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-crdivcsv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-crdivcsv.Tpo -c -o libMatrixDivision_la-crdivcsv.lo `test -f 'crdivcsv.c' || echo '$(srcdir)/'`crdivcsv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-crdivcsv.Tpo $(DEPDIR)/libMatrixDivision_la-crdivcsv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crdivcsv.c' object='libMatrixDivision_la-crdivcsv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-crdivcsv.lo `test -f 'crdivcsv.c' || echo '$(srcdir)/'`crdivcsv.c
+
+libMatrixDivision_la-crdivscv.lo: crdivscv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-crdivscv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-crdivscv.Tpo -c -o libMatrixDivision_la-crdivscv.lo `test -f 'crdivscv.c' || echo '$(srcdir)/'`crdivscv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-crdivscv.Tpo $(DEPDIR)/libMatrixDivision_la-crdivscv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crdivscv.c' object='libMatrixDivision_la-crdivscv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-crdivscv.lo `test -f 'crdivscv.c' || echo '$(srcdir)/'`crdivscv.c
+
+libMatrixDivision_la-crdivv.lo: crdivv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-crdivv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-crdivv.Tpo -c -o libMatrixDivision_la-crdivv.lo `test -f 'crdivv.c' || echo '$(srcdir)/'`crdivv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-crdivv.Tpo $(DEPDIR)/libMatrixDivision_la-crdivv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crdivv.c' object='libMatrixDivision_la-crdivv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-crdivv.lo `test -f 'crdivv.c' || echo '$(srcdir)/'`crdivv.c
+
+libMatrixDivision_la-drdivv.lo: drdivv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-drdivv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-drdivv.Tpo -c -o libMatrixDivision_la-drdivv.lo `test -f 'drdivv.c' || echo '$(srcdir)/'`drdivv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-drdivv.Tpo $(DEPDIR)/libMatrixDivision_la-drdivv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drdivv.c' object='libMatrixDivision_la-drdivv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-drdivv.lo `test -f 'drdivv.c' || echo '$(srcdir)/'`drdivv.c
+
+libMatrixDivision_la-srdivv.lo: srdivv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-srdivv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-srdivv.Tpo -c -o libMatrixDivision_la-srdivv.lo `test -f 'srdivv.c' || echo '$(srcdir)/'`srdivv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-srdivv.Tpo $(DEPDIR)/libMatrixDivision_la-srdivv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srdivv.c' object='libMatrixDivision_la-srdivv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-srdivv.lo `test -f 'srdivv.c' || echo '$(srcdir)/'`srdivv.c
+
+libMatrixDivision_la-zrdivdzv.lo: zrdivdzv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-zrdivdzv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-zrdivdzv.Tpo -c -o libMatrixDivision_la-zrdivdzv.lo `test -f 'zrdivdzv.c' || echo '$(srcdir)/'`zrdivdzv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-zrdivdzv.Tpo $(DEPDIR)/libMatrixDivision_la-zrdivdzv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrdivdzv.c' object='libMatrixDivision_la-zrdivdzv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-zrdivdzv.lo `test -f 'zrdivdzv.c' || echo '$(srcdir)/'`zrdivdzv.c
+
+libMatrixDivision_la-zrdivv.lo: zrdivv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-zrdivv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-zrdivv.Tpo -c -o libMatrixDivision_la-zrdivv.lo `test -f 'zrdivv.c' || echo '$(srcdir)/'`zrdivv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-zrdivv.Tpo $(DEPDIR)/libMatrixDivision_la-zrdivv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrdivv.c' object='libMatrixDivision_la-zrdivv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-zrdivv.lo `test -f 'zrdivv.c' || echo '$(srcdir)/'`zrdivv.c
+
+libMatrixDivision_la-zrdivzdv.lo: zrdivzdv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -MT libMatrixDivision_la-zrdivzdv.lo -MD -MP -MF $(DEPDIR)/libMatrixDivision_la-zrdivzdv.Tpo -c -o libMatrixDivision_la-zrdivzdv.lo `test -f 'zrdivzdv.c' || echo '$(srcdir)/'`zrdivzdv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixDivision_la-zrdivzdv.Tpo $(DEPDIR)/libMatrixDivision_la-zrdivzdv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrdivzdv.c' object='libMatrixDivision_la-zrdivzdv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixDivision_la_CFLAGS) $(CFLAGS) -c -o libMatrixDivision_la-zrdivzdv.lo `test -f 'zrdivzdv.c' || echo '$(srcdir)/'`zrdivzdv.c
+
+testMatrixLDivision-testMatrixLDivision.o: testMatrixLDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixLDivision_CFLAGS) $(CFLAGS) -MT testMatrixLDivision-testMatrixLDivision.o -MD -MP -MF $(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Tpo -c -o testMatrixLDivision-testMatrixLDivision.o `test -f 'testMatrixLDivision.c' || echo '$(srcdir)/'`testMatrixLDivision.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Tpo $(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixLDivision.c' object='testMatrixLDivision-testMatrixLDivision.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixLDivision_CFLAGS) $(CFLAGS) -c -o testMatrixLDivision-testMatrixLDivision.o `test -f 'testMatrixLDivision.c' || echo '$(srcdir)/'`testMatrixLDivision.c
+
+testMatrixLDivision-testMatrixLDivision.obj: testMatrixLDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixLDivision_CFLAGS) $(CFLAGS) -MT testMatrixLDivision-testMatrixLDivision.obj -MD -MP -MF $(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Tpo -c -o testMatrixLDivision-testMatrixLDivision.obj `if test -f 'testMatrixLDivision.c'; then $(CYGPATH_W) 'testMatrixLDivision.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixLDivision.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Tpo $(DEPDIR)/testMatrixLDivision-testMatrixLDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixLDivision.c' object='testMatrixLDivision-testMatrixLDivision.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixLDivision_CFLAGS) $(CFLAGS) -c -o testMatrixLDivision-testMatrixLDivision.obj `if test -f 'testMatrixLDivision.c'; then $(CYGPATH_W) 'testMatrixLDivision.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixLDivision.c'; fi`
+
+testMatrixRDivision-testMatrixRDivision.o: testMatrixRDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixRDivision_CFLAGS) $(CFLAGS) -MT testMatrixRDivision-testMatrixRDivision.o -MD -MP -MF $(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Tpo -c -o testMatrixRDivision-testMatrixRDivision.o `test -f 'testMatrixRDivision.c' || echo '$(srcdir)/'`testMatrixRDivision.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Tpo $(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixRDivision.c' object='testMatrixRDivision-testMatrixRDivision.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixRDivision_CFLAGS) $(CFLAGS) -c -o testMatrixRDivision-testMatrixRDivision.o `test -f 'testMatrixRDivision.c' || echo '$(srcdir)/'`testMatrixRDivision.c
+
+testMatrixRDivision-testMatrixRDivision.obj: testMatrixRDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixRDivision_CFLAGS) $(CFLAGS) -MT testMatrixRDivision-testMatrixRDivision.obj -MD -MP -MF $(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Tpo -c -o testMatrixRDivision-testMatrixRDivision.obj `if test -f 'testMatrixRDivision.c'; then $(CYGPATH_W) 'testMatrixRDivision.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixRDivision.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Tpo $(DEPDIR)/testMatrixRDivision-testMatrixRDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixRDivision.c' object='testMatrixRDivision-testMatrixRDivision.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixRDivision_CFLAGS) $(CFLAGS) -c -o testMatrixRDivision-testMatrixRDivision.obj `if test -f 'testMatrixRDivision.c'; then $(CYGPATH_W) 'testMatrixRDivision.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixRDivision.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/division/cldivma.c b/2.3-1/src/c/matrixOperations/division/cldivma.c
new file mode 100644
index 00000000..d21510cc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/cldivma.c
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+/******FIXME********/
+/**** WARNING NOT WORK AT ALL FOR THE MOMENT ***/
+/**** Because of problem of conversion float-> double ****/
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void cldivma ( floatComplex* in1, int lines1, int columns1 ,
+ floatComplex* in2, int lines2, int columns2 ,
+ floatComplex* out ){
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need doubleComplex matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ doubleComplex *dblin1 = NULL;
+ doubleComplex *dblin2 = NULL;
+ doubleComplex *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin1 = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)columns1 * (unsigned int)lines1);
+ dblin2 = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)columns2 * (unsigned int)lines2);
+ dblout = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)lines1 * (unsigned int)lines2);
+
+
+
+ /*copy and cast all the floatComplex value into doubleComplex value */
+ for ( i = 0 ; i < lines1 * columns1 ; i ++ )
+ {
+ dblin1[i] = DoubleComplex ( (double) creals( in1[i]) , (double) cimags ( in1[i])) ;
+ }
+
+ for ( i = 0 ; i < lines2 * columns2 ; i ++ )
+ {
+ dblin2[i] = DoubleComplex ( (double) creals( in2[i]) , (double) cimags ( in2[i])) ;
+ }
+
+ zldivma( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
+
+
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
+ {
+ out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
+
+ }
+
+ free ( dblin1);
+ free ( dblin2);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/division/crdivcsv.c b/2.3-1/src/c/matrixOperations/division/crdivcsv.c
new file mode 100644
index 00000000..77b7750a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/crdivcsv.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "matrixDivision.h"
+
+floatComplex crdivcsv (floatComplex* in1,float* in2, int size)
+ {
+ float* ZEROS = (float *) malloc((unsigned int)(size*sizeof(float)));
+ szerosa(ZEROS,size , 1);
+
+ return crdivv(in1 , FloatComplexMatrix(in2,ZEROS,size),size );
+ }
diff --git a/2.3-1/src/c/matrixOperations/division/crdivma.c b/2.3-1/src/c/matrixOperations/division/crdivma.c
new file mode 100644
index 00000000..ca6f3565
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/crdivma.c
@@ -0,0 +1,62 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void crdivma ( floatComplex* in1, int lines1, int columns1 ,
+ floatComplex* in2, int lines2, int columns2 ,
+ floatComplex* out ){
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need doubleComplex matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ doubleComplex *dblin1 = NULL;
+ doubleComplex *dblin2 = NULL;
+ doubleComplex *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin1 = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)columns1 * (unsigned int)lines1);
+ dblin2 = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)columns2 * (unsigned int)lines2);
+ dblout = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)lines1 * (unsigned int)lines2);
+
+
+
+ /*copy and cast all the floatComplex value into doubleComplex value */
+ for ( i = 0 ; i < lines1 * columns1 ; i ++ )
+ {
+ dblin1[i] = DoubleComplex ( (double) creals( in1[i]) , (double) cimags ( in1[i])) ;
+ }
+
+ for ( i = 0 ; i < lines2 * columns2 ; i ++ )
+ {
+ dblin2[i] = DoubleComplex ( (double) creals( in2[i]) , (double) cimags ( in2[i])) ;
+ }
+
+ zrdivma( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
+
+
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
+ {
+ out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
+
+ }
+
+ free ( dblin1);
+ free ( dblin2);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/division/crdivscv.c b/2.3-1/src/c/matrixOperations/division/crdivscv.c
new file mode 100644
index 00000000..0f4de323
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/crdivscv.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "matrixDivision.h"
+
+floatComplex crdivscv (float* in1, floatComplex* in2, int size)
+ {
+ float* ZEROS = (float *) malloc((unsigned int)(size*sizeof(float)));
+ szerosa(ZEROS,size , 1);
+
+ return crdivv(FloatComplexMatrix(in1,ZEROS,size), in2 , size );
+ }
diff --git a/2.3-1/src/c/matrixOperations/division/crdivv.c b/2.3-1/src/c/matrixOperations/division/crdivv.c
new file mode 100644
index 00000000..db7a81cb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/crdivv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 "matrixDivision.h"
+
+floatComplex crdivv(floatComplex *in1, floatComplex *in2, int size){
+
+ floatComplex out[1] ={ FloatComplex (0.0f , 0.0f)};
+ crdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/dldivma.c b/2.3-1/src/c/matrixOperations/division/dldivma.c
new file mode 100644
index 00000000..2c81d841
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/dldivma.c
@@ -0,0 +1,111 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void dldivma (double* in1, int lines1, int columns1 ,
+ double* in2, int lines2, int columns2 ,
+ double* out ){
+
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ double dblRcond = 0;
+
+ double dblEps = 0;
+ double dblAnorm = 0;
+
+ double *pAf = NULL;
+ double *pXb = NULL;
+ double *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns1, max(min(lines1, columns1) + 3 * lines1 + 1, 2 * min(lines1, columns1) + columns2));
+
+
+ lines2 = 0 ;
+
+ /* Array allocations*/
+ pAf = (double*)malloc(sizeof(double) * (unsigned int) lines1 * (unsigned int) columns1);
+ pXb = (double*)malloc(sizeof(double) * (unsigned int) max(lines1,columns1) * (unsigned int) columns2);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pJpvt = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pIwork = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+
+
+
+ cNorm = '1';
+ pDwork = (double*)malloc(sizeof(double) *(unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+
+ dblAnorm = dlange_(&cNorm, &lines1, &columns1, in1, &lines1, pDwork);
+ if(lines1 == columns1)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns1, &columns1, in1, &columns1, pAf, &columns1);
+ dgetrf_(&columns1, &columns1, pAf, &columns1, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(dgecon)(&cNorm, &columns1, pAf, &columns1, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(dgetrs)(&cNorm, &columns1, &columns2, pAf, &columns1, pIpiv, in2, &columns1, &iInfo);
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, in2, &columns1, out, &columns1);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines1, columns1);
+ C2F(dlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int) columns1);
+ C2F(dgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, pXb, &iMax, out, &columns1);
+ }
+ }
+
+ free(pAf);
+ free(pXb);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+}
diff --git a/2.3-1/src/c/matrixOperations/division/drdivma.c b/2.3-1/src/c/matrixOperations/division/drdivma.c
new file mode 100644
index 00000000..aad029a9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/drdivma.c
@@ -0,0 +1,129 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void drdivma ( double * in1, int lines1, int columns1,
+ double * in2, int lines2, int columns2,
+ double * out){
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ double dblRcond = 0;
+
+ double dblEps = 0;
+ double dblAnorm = 0;
+
+ double *pAf = NULL;
+ double *pAt = NULL;
+ double *pBt = NULL;
+ double *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns2, max(min(lines2, columns2) + 3 * lines2 + 1, 2 * min(lines2, columns2) + lines1));
+
+
+ /* Array allocations*/
+ pAf = (double*)malloc(sizeof(double) * (unsigned int)columns2 * (unsigned int)lines2);
+ pAt = (double*)malloc(sizeof(double) * (unsigned int)columns2 *(unsigned int) lines2);
+ pBt = (double*)malloc(sizeof(double) * (unsigned int)max(lines2,columns2) * (unsigned int)lines1);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+ pJpvt = (int*)malloc(sizeof(int) * (unsigned int)lines2);
+ pIwork = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+
+
+ cNorm = '1';
+ pDwork = (double*)malloc(sizeof(double) * (unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = dlange_(&cNorm, &lines2, &columns1, in2, &lines2, pDwork);
+
+ /*tranpose A and B*/
+
+ dtransposea(in2, lines2, columns2, pAt);
+ dtransposea(in1, lines1, columns2, pBt);
+
+ if(lines2 == columns2)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns2, &columns2, pAt, &columns2, pAf, &columns2);
+ dgetrf_(&columns2, &columns2, pAf, &columns2, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ dgecon_(&cNorm, &columns2, pAf, &columns2, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ dgetrs_(&cNorm, &columns2, &lines1, pAf, &columns2, pIpiv, pBt, &columns2, &iInfo);
+ dtransposea(pBt, columns2, lines1, out);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines2, columns2);
+ memset(pJpvt, 0x00, (unsigned int)sizeof(int) * (unsigned int)lines2);
+ dgelsy_(&columns2, &lines2, &lines1, pAt, &columns2, pBt, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+
+ /* TransposeRealMatrix(pBt, lines1, lines2, out, Max(lines1,columns1), lines2);*/
+
+ /*Mega caca de la mort qui tue des ours a mains nues
+ mais je ne sais pas comment le rendre "beau" :(*/
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = pBt[ji];
+ }
+ }
+ }
+ }
+ }
+
+ free(pAf);
+ free(pAt);
+ free(pBt);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/drdivv.c b/2.3-1/src/c/matrixOperations/division/drdivv.c
new file mode 100644
index 00000000..c6c2bf60
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/drdivv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 "matrixDivision.h"
+
+double drdivv(double *in1, double *in2, int size){
+
+ double out[1] = { 0.0} ;
+ drdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/i16ldivma.c b/2.3-1/src/c/matrixOperations/division/i16ldivma.c
new file mode 100644
index 00000000..decb8f39
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/i16ldivma.c
@@ -0,0 +1,111 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void i16ldivma (int16* in1, int lines1, int columns1 ,
+ int16* in2, int lines2, int columns2 ,
+ int16* out ){
+
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ int16 dblRcond = 0;
+
+ int16 dblEps = 0;
+ int16 dblAnorm = 0;
+
+ int16 *pAf = NULL;
+ int16 *pXb = NULL;
+ int16 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns1, max(min(lines1, columns1) + 3 * lines1 + 1, 2 * min(lines1, columns1) + columns2));
+
+
+ lines2 = 0 ;
+
+ /* Array allocations*/
+ pAf = (int16*)malloc(sizeof(int16) * (unsigned int) lines1 * (unsigned int) columns1);
+ pXb = (int16*)malloc(sizeof(int16) * (unsigned int) max(lines1,columns1) * (unsigned int) columns2);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pJpvt = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pIwork = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+
+
+
+ cNorm = '1';
+ pDwork = (int16*)malloc(sizeof(int16) *(unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+
+ dblAnorm = dlange_(&cNorm, &lines1, &columns1, in1, &lines1, pDwork);
+ if(lines1 == columns1)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns1, &columns1, in1, &columns1, pAf, &columns1);
+ dgetrf_(&columns1, &columns1, pAf, &columns1, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(dgecon)(&cNorm, &columns1, pAf, &columns1, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(dgetrs)(&cNorm, &columns1, &columns2, pAf, &columns1, pIpiv, in2, &columns1, &iInfo);
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, in2, &columns1, out, &columns1);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines1, columns1);
+ C2F(dlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int) columns1);
+ C2F(dgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, pXb, &iMax, out, &columns1);
+ }
+ }
+
+ free(pAf);
+ free(pXb);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+}
diff --git a/2.3-1/src/c/matrixOperations/division/i16rdivma.c b/2.3-1/src/c/matrixOperations/division/i16rdivma.c
new file mode 100644
index 00000000..7cdebe55
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/i16rdivma.c
@@ -0,0 +1,129 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void i16rdivma ( int16 * in1, int lines1, int columns1,
+ int16 * in2, int lines2, int columns2,
+ int16 * out){
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ int16 dblRcond = 0;
+
+ int16 dblEps = 0;
+ int16 dblAnorm = 0;
+
+ int16 *pAf = NULL;
+ int16 *pAt = NULL;
+ int16 *pBt = NULL;
+ int16 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns2, max(min(lines2, columns2) + 3 * lines2 + 1, 2 * min(lines2, columns2) + lines1));
+
+
+ /* Array allocations*/
+ pAf = (int16*)malloc(sizeof(int16) * (unsigned int)columns2 * (unsigned int)lines2);
+ pAt = (int16*)malloc(sizeof(int16) * (unsigned int)columns2 *(unsigned int) lines2);
+ pBt = (int16*)malloc(sizeof(int16) * (unsigned int)max(lines2,columns2) * (unsigned int)lines1);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+ pJpvt = (int*)malloc(sizeof(int) * (unsigned int)lines2);
+ pIwork = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+
+
+ cNorm = '1';
+ pDwork = (int16*)malloc(sizeof(int16) * (unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = dlange_(&cNorm, &lines2, &columns1, in2, &lines2, pDwork);
+
+ /*tranpose A and B*/
+
+ dtransposea(in2, lines2, columns2, pAt);
+ dtransposea(in1, lines1, columns2, pBt);
+
+ if(lines2 == columns2)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns2, &columns2, pAt, &columns2, pAf, &columns2);
+ dgetrf_(&columns2, &columns2, pAf, &columns2, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ dgecon_(&cNorm, &columns2, pAf, &columns2, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ dgetrs_(&cNorm, &columns2, &lines1, pAf, &columns2, pIpiv, pBt, &columns2, &iInfo);
+ dtransposea(pBt, columns2, lines1, out);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines2, columns2);
+ memset(pJpvt, 0x00, (unsigned int)sizeof(int) * (unsigned int)lines2);
+ dgelsy_(&columns2, &lines2, &lines1, pAt, &columns2, pBt, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+
+ /* TransposeRealMatrix(pBt, lines1, lines2, out, Max(lines1,columns1), lines2);*/
+
+ /*Mega caca de la mort qui tue des ours a mains nues
+ mais je ne sais pas comment le rendre "beau" :(*/
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = pBt[ji];
+ }
+ }
+ }
+ }
+ }
+
+ free(pAf);
+ free(pAt);
+ free(pBt);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/i16rdivv.c b/2.3-1/src/c/matrixOperations/division/i16rdivv.c
new file mode 100644
index 00000000..ebbdf580
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/i16rdivv.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "matrixDivision.h"
+
+int16 i16rdivv(int16 *in1, int16 *in2, int size){
+
+ int16 out[1] = { 0.0} ;
+ i16rdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/i8ldivma.c b/2.3-1/src/c/matrixOperations/division/i8ldivma.c
new file mode 100644
index 00000000..d7ca2fd0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/i8ldivma.c
@@ -0,0 +1,111 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void i8ldivma (int8* in1, int lines1, int columns1 ,
+ int8* in2, int lines2, int columns2 ,
+ int8* out ){
+
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ int8 dblRcond = 0;
+
+ int8 dblEps = 0;
+ int8 dblAnorm = 0;
+
+ int8 *pAf = NULL;
+ int8 *pXb = NULL;
+ int8 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns1, max(min(lines1, columns1) + 3 * lines1 + 1, 2 * min(lines1, columns1) + columns2));
+
+
+ lines2 = 0 ;
+
+ /* Array allocations*/
+ pAf = (int8*)malloc(sizeof(int8) * (unsigned int) lines1 * (unsigned int) columns1);
+ pXb = (int8*)malloc(sizeof(int8) * (unsigned int) max(lines1,columns1) * (unsigned int) columns2);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pJpvt = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pIwork = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+
+
+
+ cNorm = '1';
+ pDwork = (int8*)malloc(sizeof(int8) *(unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+
+ dblAnorm = dlange_(&cNorm, &lines1, &columns1, in1, &lines1, pDwork);
+ if(lines1 == columns1)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns1, &columns1, in1, &columns1, pAf, &columns1);
+ dgetrf_(&columns1, &columns1, pAf, &columns1, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(dgecon)(&cNorm, &columns1, pAf, &columns1, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(dgetrs)(&cNorm, &columns1, &columns2, pAf, &columns1, pIpiv, in2, &columns1, &iInfo);
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, in2, &columns1, out, &columns1);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines1, columns1);
+ C2F(dlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int) columns1);
+ C2F(dgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, pXb, &iMax, out, &columns1);
+ }
+ }
+
+ free(pAf);
+ free(pXb);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+}
diff --git a/2.3-1/src/c/matrixOperations/division/i8rdivma.c b/2.3-1/src/c/matrixOperations/division/i8rdivma.c
new file mode 100644
index 00000000..0048c036
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/i8rdivma.c
@@ -0,0 +1,129 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void i8rdivma ( int8 * in1, int lines1, int columns1,
+ int8 * in2, int lines2, int columns2,
+ int8 * out){
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ int8 dblRcond = 0;
+
+ int8 dblEps = 0;
+ int8 dblAnorm = 0;
+
+ int8 *pAf = NULL;
+ int8 *pAt = NULL;
+ int8 *pBt = NULL;
+ int8 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns2, max(min(lines2, columns2) + 3 * lines2 + 1, 2 * min(lines2, columns2) + lines1));
+
+
+ /* Array allocations*/
+ pAf = (int8*)malloc(sizeof(int8) * (unsigned int)columns2 * (unsigned int)lines2);
+ pAt = (int8*)malloc(sizeof(int8) * (unsigned int)columns2 *(unsigned int) lines2);
+ pBt = (int8*)malloc(sizeof(int8) * (unsigned int)max(lines2,columns2) * (unsigned int)lines1);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+ pJpvt = (int*)malloc(sizeof(int) * (unsigned int)lines2);
+ pIwork = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+
+
+ cNorm = '1';
+ pDwork = (int8*)malloc(sizeof(int8) * (unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = dlange_(&cNorm, &lines2, &columns1, in2, &lines2, pDwork);
+
+ /*tranpose A and B*/
+
+ dtransposea(in2, lines2, columns2, pAt);
+ dtransposea(in1, lines1, columns2, pBt);
+
+ if(lines2 == columns2)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns2, &columns2, pAt, &columns2, pAf, &columns2);
+ dgetrf_(&columns2, &columns2, pAf, &columns2, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ dgecon_(&cNorm, &columns2, pAf, &columns2, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ dgetrs_(&cNorm, &columns2, &lines1, pAf, &columns2, pIpiv, pBt, &columns2, &iInfo);
+ dtransposea(pBt, columns2, lines1, out);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines2, columns2);
+ memset(pJpvt, 0x00, (unsigned int)sizeof(int) * (unsigned int)lines2);
+ dgelsy_(&columns2, &lines2, &lines1, pAt, &columns2, pBt, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+
+ /* TransposeRealMatrix(pBt, lines1, lines2, out, Max(lines1,columns1), lines2);*/
+
+ /*Mega caca de la mort qui tue des ours a mains nues
+ mais je ne sais pas comment le rendre "beau" :(*/
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = pBt[ji];
+ }
+ }
+ }
+ }
+ }
+
+ free(pAf);
+ free(pAt);
+ free(pBt);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/i8rdivv.c b/2.3-1/src/c/matrixOperations/division/i8rdivv.c
new file mode 100644
index 00000000..7d262afa
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/i8rdivv.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "matrixDivision.h"
+
+int8 i8rdivv(int8 *in1, int8 *in2, int size){
+
+ int8 out[1] = { 0.0} ;
+ i8rdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/sldivma.c b/2.3-1/src/c/matrixOperations/division/sldivma.c
new file mode 100644
index 00000000..766cfffd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/sldivma.c
@@ -0,0 +1,61 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+void sldivma ( float* in1, int lines1, int columns1 ,
+ float* in2, int lines2, int columns2 ,
+ float* out ){
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin1 = NULL;
+ double *dblin2 = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin1 = (double*)malloc(sizeof(double) * (unsigned int)columns1 * (unsigned int)lines1);
+ dblin2 = (double*)malloc(sizeof(double) * (unsigned int)columns2 * (unsigned int)lines2);
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)lines1 * (unsigned int)lines2);
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < lines1 * columns1 ; i ++ )
+ {
+ dblin1[i] = (double) in1[i] ;
+ }
+
+ for ( i = 0 ; i < lines2 * columns2 ; i ++ )
+ {
+ dblin2[i] = (double) in2[i] ;
+ }
+
+ dldivma( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
+
+
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
+ {
+ out[i] = (float) dblout[i] ;
+
+ }
+
+ free ( dblin1);
+ free ( dblin2);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/division/srdivma.c b/2.3-1/src/c/matrixOperations/division/srdivma.c
new file mode 100644
index 00000000..bc1f0358
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/srdivma.c
@@ -0,0 +1,63 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+/****FIXME****/
+/**** WARNING NOT WORK AT ALL FOR THE MOMENT ***/
+/**** Because of problem of conversion float-> double ****/
+#include "matrixDivision.h"
+#include "lapack.h"
+void srdivma ( float* in1, int lines1, int columns1 ,
+ float* in2, int lines2, int columns2 ,
+ float* out ){
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin1 = NULL;
+ double *dblin2 = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin1 = (double*)malloc(sizeof(double) * (unsigned int)columns1 * (unsigned int)lines1);
+ dblin2 = (double*)malloc(sizeof(double) * (unsigned int)columns2 * (unsigned int)lines2);
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)lines1 * (unsigned int)lines2);
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < lines1 * columns1 ; i ++ )
+ {
+ dblin1[i] = (double) in1[i] ;
+ }
+
+ for ( i = 0 ; i < lines2 * columns2 ; i ++ )
+ {
+ dblin2[i] = (double) in2[i] ;
+ }
+
+ drdivma( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
+
+
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
+ {
+ out[i] = (float) dblout[i] ;
+
+ }
+
+ free ( dblin1);
+ free ( dblin2);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/division/srdivv.c b/2.3-1/src/c/matrixOperations/division/srdivv.c
new file mode 100644
index 00000000..023e06fa
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/srdivv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 "matrixDivision.h"
+
+float srdivv(float *in1, float *in2, int size){
+
+ float out[1] = {0.0f} ;
+ srdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/testMatrixLDivision.c b/2.3-1/src/c/matrixOperations/division/testMatrixLDivision.c
new file mode 100644
index 00000000..b2f83193
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/testMatrixLDivision.c
@@ -0,0 +1,456 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include "matrixDivision.h"
+
+
+#define LINES 2
+#define COLUMNS1 2
+#define COLUMNS2 2
+
+#define ZLINES 2
+#define ZCOLUMNS1 2
+#define ZCOLUMNS2 1
+
+
+static void sldivmaTest ( void ){
+ int i = 0;
+
+ float in1[] = { 4.0f , 3.0f , 8.0f , 9.0f } ;
+ float in2[] = { 1.0f , 3.0f , 2.0f , 4.0f } ;
+ float result[] = { -1.25f , 0.75f , -1.166666666666666f ,0.83333333333333333f };
+
+
+ float out [(COLUMNS2)*(LINES)] ;
+
+ sldivma( in1 , LINES , COLUMNS1 , in2 , LINES , COLUMNS2 , out ) ;
+ for ( i = 0 ; i < LINES *COLUMNS2 ; i++ )
+ {
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 1e-06 ) ;
+ }
+
+
+
+}
+
+
+static void dldivmaTest ( void )
+{
+ int i = 0 ;
+/* here the matrixes are linearized in the wrong way so need to transpose them */
+/* double in1[] =
+{0.84155184263363481,0.26385784195736051,0.52570608118548989,0.54653349192813039,
+ 0.62128817522898316,0.98085420625284314,0.74896081397309899,0.01432593585923314,
+ 0.23678414756432176,0.70614896761253476,0.27255953708663583,0.06706167431548238,
+ 0.43117330456152558,0.7741842647083104,0.57694048294797540,0.26086253346875310,
+ 0.14094856614246964,
+0.40620247554033995,0.52535630855709314,0.99312098976224661,0.98854076582938433,
+ 0.34549844544380903,0.81870661024004221,0.94149570073932409,0.81914897728711367,
+ 0.70153435599058867,0.67878311965614557,0.34376550372689962,0.76511315722018480,
+ 0.61453847866505384,0.79220082703977823,0.39386960770934820,0.36363423336297274,
+ 0.67591095995157957,
+0.40948254754766822,0.53762298030778766,0.64885628735646605,0.73956565884873271,
+ 0.70648676296696067,0.42568723810836673,0.21240556007251143,0.13049928424879909,
+ 0.12025266280397773,0.41329363686963916,0.20337020372971892,0.04173615900799632,
+ 0.92589621385559440,0.55046048713847995,0.68885837262496352,0.17466178117319942,
+ 0.45126775791868567,
+0.87841258011758327,0.11999255046248436,0.99231909401714802,0.00371731072664261,
+ 0.52114724926650524,0.24615605548024178,0.57950199581682682,0.96820035576820374,
+ 0.82874121330678463,0.14022908732295036,0.30119446106255054,0.34382718056440353,
+ 0.09938172809779644,0.40850437059998512,0.97023218311369419,0.92341394722461700,
+ 0.75430292449891567,
+0.11383596854284406,0.2256303490139544,0.05004197778180242,0.59005728596821427,
+ 0.28704008506610990,0.92295324662700295,0.26281475694850087,0.6561381467618048,
+ 0.31610729591920972,0.49523561308160424,0.27625959040597081,0.1970167332328856,
+ 0.42805786477401853,0.72174380579963326,0.85157642932608724,0.76051409030333161,
+ 0.13702143030241132,
+0.19983377400785685,0.62740930821746588,0.74855065811425447,0.3096467358991504,
+ 0.65027950797230005,0.10007458087056875,0.43609866220504045,0.24455389659851789,
+ 0.53051907662302256,0.41948772873729467,0.29445307422429323,0.21228986512869596,
+ 0.94318309519439936,0.47685358580201864,0.33933044690638781,0.56402041297405958,
+ 0.66082405392080545,
+0.56186607433483005,0.76084325974807143,0.41040589986369014,0.25522057106718421,
+ 0.08813347620889544,0.46782181179150939,0.91105451015755534,0.52831235667690635,
+ 0.57151748193427920,0.86262222891673446,0.57180739520117640,0.31403985014185309,
+ 0.03273952705785632,0.63930579042062163,0.87725317804142833,0.37970651825889945,
+ 0.38900542212650180,
+0.58961773291230202,0.04855662025511265,0.60845263302326202,0.62518793903291225,
+ 0.44987633451819420,0.39504976756870747,0.80826673656702042,0.84689256362617016,
+ 0.04780154302716255,0.28575096465647221,0.21417701244354248,0.78216253779828548,
+ 0.92132670804858208,0.99638652987778187,0.11314024776220322,0.87762261740863323,
+ 0.70018205419182777,
+0.68539796629920602,0.67239497276023030,0.85442108893766999,0.11574173765257001,
+ 0.72272530803456903,0.03661171020939946,0.81026530498638749,0.78766220854595304,
+ 0.82486197212710977,0.25121363671496511,0.68954616272822022,0.05409323470667005,
+ 0.94490244099870324,0.15747882844880223,0.5264128320850432,0.82174257980659604,
+ 0.91680057207122445,
+0.89062247332185507,0.20171726960688829,0.06426467280834913,0.61170040909200907,
+ 0.89767962601035833,0.51753685344010592,0.25904283951967955,0.12620826158672571,
+ 0.5798843121156096,0.33891015965491533,0.58555728476494551,0.91902069095522165,
+ 0.900706990621984,0.53506936598569155,0.52973940502852201,0.67870581243187189,
+ 0.21228999551385641,
+0.50422128057107329,0.39115739194676280,0.82790829380974174,0.67839562846347690,
+ 0.24278218811377883,0.83254515705630183,0.41390872886404395,0.78838609857484698,
+ 0.27918082987889647,0.39219759730622172,0.42041230341419578,0.46035157097503543,
+ 0.80943161016330123,0.21290646074339747,0.92917560925707221,0.08220098121091723,
+ 0.26978330826386809,
+0.34936154074966908,0.83003165572881699,0.92623437754809856,0.33200952783226967,
+ 0.43377211131155491,0.61048321425914764,0.35999277792870998,0.34530424699187279,
+ 0.95451109297573566,0.46815521270036697,0.42775720171630383,0.29926850274205208,
+ 0.02519542910158634,0.55914506316184998,0.97654302977025509,0.25527314469218254,
+ 0.31998893804848194,
+0.38737787725403905,0.58787201577797532,0.56672112690284848,0.02587099233642220,
+ 0.96770532103255391,0.18711117887869477,0.69127879338338971,0.26598573336377740,
+ 0.90711546363309026,0.33616027468815446,0.31845858739688993,0.00291663268581033,
+ 0.00196450622752309,0.43049659812822938,0.62254639761522412,0.74444567272439599,
+ 0.02321802498772740,
+0.92228986788541079,0.48291792999953032,0.57116389367729425,0.51744682248681784,
+ 0.50685344357043505,0.01895748358219862,0.76568587962538004,0.97098186518996954,
+ 0.33601493109017611,0.53368766140192747,0.57618944440037012,0.89934705849736929,
+ 0.50752213317900896,0.02280548494309187,0.98225832823663950,0.22695036139339209,
+ 0.72654472757130861,
+0.94881842611357570,0.22328650346025825,0.81601104838773608,0.39168732380494475,
+ 0.52329764096066356,0.84335647663101554,0.35726496530696750,0.88752476638182998,
+ 0.11756130633875728,0.20390639593824744,0.42549022240564227,0.83879271661862731,
+ 0.40760429529473186,0.57614597817882895,0.75429888023063540,0.68369307881221175,
+ 0.15340585587546229,
+0.34353372454643250,0.84008856676518917,0.05689279362559319,0.24135384149849415,
+ 0.5596947595477104,0.07485948316752911,0.76933998242020607,0.20667528547346592,
+ 0.92537237703800201,0.15899897180497646,0.97619816288352013,0.43437494523823261,
+ 0.84080461412668228,0.71491303853690624,0.54547880962491035,0.93650726415216923,
+ 0.23552638292312622,
+0.37601187312975526,0.12059959070757031,0.55959366867318749,0.50644348980858922,
+ 0.56173070007935166,0.85328151332214475,0.54776339093223214,0.85251609655097127,
+ 0.72636712575331330,0.01818151073530316,0.25189600000157952,0.77678761305287480,
+ 0.5017265700735152,0.93216359661892056,0.72860160330310464,0.50530174048617482,
+ 0.08797382796183228,
+0.73409405630081892,0.28553641680628061,0.12493403162807226,0.42361020017415285,
+ 0.46817600261420012,0.01245901081711054,0.09622887428849936,0.67446978110820055,
+ 0.90094979386776686,0.40983706060796976,0.43911290075629950,0.13953176606446505,
+ 0.91287807654589415,0.12326993141323328,0.02525969501584768,0.25248145777732134,
+ 0.71059537213295698,
+0.26157614728435874,0.86075146449729800,0.72792222863063216,0.28937275288626552,
+ 0.77945467224344611,0.18675393564626575,0.95611717319115996,0.91528743831440806,
+ 0.39489932497963309,0.01058345986530185,0.07593036955222487,0.11506372271105647,
+ 0.44357294728979468,0.28655522270128131,0.40251684701070189,0.68188397912308574,
+ 0.68887275597080588,
+0.49934938363730907,0.84941016510128975,0.26777664758265018,0.08879321813583374,
+ 0.79010718129575253,0.49205840751528740,0.22074085660278797,0.02848597615957260,
+ 0.56551797501742840,0.19653097167611122,0.25593801774084568,0.53554199635982513,
+ 0.59837839566171169,0.01247995719313622,0.09831319935619831,0.28363681584596634,
+ 0.65953194908797741};
+
+
+ double in2[] =
+{0.18151161121204495,0.77340125897899270,0.25145971449092031,0.37096222722902894,
+ 0.46179189579561353,0.47909884760156274,0.66919379355385900,0.06942595774307847,
+ 0.56079538213089108,0.69204960623756051,0.99401472182944417,0.00291080260649323,
+0.3904965976253152,0.4244190966710448,0.38433500844985247,0.30322382133454084,
+ 0.62512917164713144,0.28169692959636450,0.20426016021519899,0.11522095929831266,
+ 0.94247916433960199,0.70065794046968222,0.18287624139338732,0.30681814532727003,
+0.15869047446176410,0.72621259605512023,0.43964602379128337,0.95195201179012656,
+ 0.70597065938636661,0.23800977831706405,0.8310431349091232,0.48626806726679206,
+ 0.68177247745916247,0.88706119870766997,0.30219173757359385,0.79026939114555717,
+0.62407150492072105,0.70999773032963276,0.65407369285821915,0.71278580836951733,
+ 0.70181696489453316,0.32942054606974125,0.01221632957458496,0.76715826056897640,
+ 0.27342410013079643,0.69797694869339466,0.37854864448308945,0.95779503695666790,
+0.63760355720296502,0.47457459988072515,0.58781063789501786,0.11923700617626309,
+ 0.40879997471347451,0.23067280324175954,0.48844617092981935,0.08805298106744885,
+ 0.20717754075303674,0.67989911558106542,0.71531985932961106,0.66892711864784360,
+0.42704886104911566,0.9438692079856992,0.60208318661898375,0.50091631803661585,
+ 0.06362213846296072,0.21362966019660234,0.95498770754784346,0.70085612777620554,
+ 0.19379387702792883,0.36159398127347231,0.95241537224501371,0.29296159837394953,
+0.10716815060004592,0.14596485672518611,0.04535020282492042,0.32900535268709064,
+ 0.06573933875188231,0.40549980429932475,0.05874312063679099,0.18791387928649783,
+ 0.67978375917300582,0.26739976881071925,0.47039186349138618,0.82238993747159839,
+0.23822965659201145,0.07141010463237762,0.20294443331658840,0.48089468106627464,
+ 0.53310041315853596,0.30953712016344070,0.82584649138152599,0.20178856328129768,
+ 0.58836574293673038,0.07736870646476746,0.18709417246282101,0.01798455044627190,
+0.94629473658278584,0.67337385797873139,0.78442738251760602,0.33036959776654840,
+ 0.03315818728879094,0.67629716033115983,0.29807415651157498,0.40628212550655007,
+ 0.93317538173869252,0.14941003406420350,0.25571879046037793,0.87107013771310449,
+0.45766852516680956,0.65369247179478407,0.26375361625105143,0.63044753577560186,
+ 0.31578356493264437,0.97069163154810667,0.07757596764713526,0.40966569539159536,
+ 0.55091228801757097,0.32018390577286482,0.44350660685449839,0.31810243334621191,
+0.89644787041470408,0.19968961318954825,0.43832763982936740,0.21171907847747207,
+ 0.37858232436701655,0.54417965700849891,0.58460923237726092,0.17695645010098815,
+ 0.80405469564720988,0.20260545751079917,0.72340781940147281,0.57244732743129134,
+0.44384705275297165,0.60141251794993877,0.86648589745163918,0.44860231317579746,
+ 0.46195234358310699,0.02047479711472988,0.75287136062979698,0.33129312284290791,
+ 0.10744897276163101,0.44988587312400341,0.87619100883603096,0.57386581040918827,
+0.80895681912079453,0.18993748771026731,0.37921421090140939,0.59145097108557820,
+ 0.62873698258772492,0.89413649635389447,0.05172297963872552,0.05184767069295049,
+ 0.74039250845089555,0.77075743721798062,0.03733208635821939,0.34920182498171926,
+0.68317985069006681,0.25839814636856318,0.76687160786241293,0.68067426700145006,
+ 0.28785153012722731,0.34903638903051615,0.59586250688880682,0.41492417920380831,
+ 0.56103316973894835,0.24352242145687342,0.42934664245694876,0.7067297669127584,
+0.03401931514963508,0.09878737432882190,0.60066213225945830,0.07392961112782359,
+ 0.3292048736475408,0.11053651524707675,0.38337053125724196,0.72212355909869075,
+ 0.76611549546942115,0.21261148853227496,0.31572330510243773,0.35992007283493876,
+0.23805456422269344,0.06199027225375175,0.78567356057465076,0.94336947053670883,
+ 0.47192330472171307,0.20233777537941933,0.49002202786505222,0.07746253907680511,
+ 0.78306589089334011,0.10992341861128807,0.36824773438274860,0.40523112565279007,
+0.94920115964487195,0.04034968325868249,0.73871155502274632,0.12863306934013963,
+ 0.33537696348503232,0.13046909729018807,0.52727950783446431,0.58558783913031220,
+ 0.14388314681127667,0.69814807781949639,0.14587742509320378,0.61408105725422502,
+0.21827886346727610,0.74001471605151892,0.55442603398114443,0.20190807711333036,
+ 0.55530697200447321,0.85739529784768820,0.06889454741030931,0.37079446297138929,
+ 0.16471924725919962,0.41509064938873053,0.67683792579919100,0.65240467619150877,
+0.61546878470107913,0.61626600986346602,0.99291495559737086,0.19693034281954169,
+ 0.11960808141157031,0.63780163740739226,0.88430777518078685,0.21161167463287711,
+ 0.31774142337962985,0.50298188393935561,0.52619793592020869,0.02951709320768714,
+0.83135433867573738,0.6583583448082209,0.97574284672737122,0.89286901615560055,
+ 0.76139996573328972,0.40711227245628834,0.71912937611341476,0.19032685272395611,
+ 0.50265956297516823,0.75116067565977573,0.400362566113472,0.56688958965241909}
+;
+
+ double result[] =
+{-1.35304848520861487,0.45754085729476712,-0.6736280871889024,0.33207797896852592,
+ 0.43686665386108053,1.19699150804728482,-0.53382978138054371,0.29027772826683890,
+ -0.00827371705993142,-0.14056593966637726,0.97528495242825564,-0.50640321961329704,
+-1.02292396789679763,0.14683824772822532,0.07187827219700703,0.26493234152584039,
+ 0.19039952557132572,0.55480813680166574,0.39823783903528059,0.10487653718583664,
+ -0.01169765032881238,-0.12935543309398898,0.91373948525086457,-0.42095065668914605,
+-0.19349758378824730,-0.02882981029864774,-0.22391869192699457,-0.15720068678475169,
+ -0.07066729236062046,-0.22778476192919797,-0.07232798550562215,0.25736303036550690,
+ 0.46282933263406362,-0.30812642599955187,-0.13899968979779151,-0.29110054036689564,
+-1.03603776312515605,0.41831226411022665,-0.26815455630947649,0.32749202801394556,
+ 0.71958381253175108,0.50743495139986494,-0.77843454048260496,-0.65128619093814355,
+ 0.45389989732032809,0.25340453725266349,-0.22487431273588654,-0.69327413947497007,
+1.23257217178938916,-0.20500752874670841,1.17935058240805546,-0.07005924340124725,
+ 0.02202972751083646,-0.74349480264981749,0.78826180830363013,0.00378475165255014,
+ 0.20312102001296634,0.76317680003707100,-1.2444586343524908,0.61835799875331021,
+0.82435969088956451,0.14161838805165022,0.54413699368884894,-0.35024810526933553,
+ 0.10736628125177422,-0.30342706713796774,0.16551618468279145,-0.33044241080800685,
+ 0.26090949768379634,0.36311977822561886,-0.02216943459020578,0.28290526888357609,
+0.60758986375566237,-0.17769508155988095,-0.37428738263361294,0.06973138803028064,
+ -0.26917609149376737,0.57488494776039478,-0.16182837448139925,-0.54589681560051329,
+ 0.35855708857331126,-0.06225155630035748,-0.01420478239284544,-0.51044946988565809,
+0.30247332250465692,-0.58709398545244817,0.52755056373610110,-0.87395680874726944,
+ -0.25878588799924235,-0.14016351767195534,0.26932123245105705,0.18741971186875042,
+ -0.10443218008098379,-0.04666556894424437,-0.28998246181099013,0.39888953797173432,
+0.29894996645459254,0.44648385188893014,-0.2747623990687768,0.12767005544410789,
+ 0.31187612680253268,0.93787911555703019,-0.69506239058785912,0.05675543905552551,
+ -0.38364317006532606,0.3015716880761152,0.60874303825197718,-0.02132168933396992,
+0.28919354677500908,0.08791044194229901,-0.66719204004654808,-0.38892391716572344,
+ -0.35074795512020418,0.52079480741130679,-0.12341534994946383,0.10603293453188402,
+ 0.13292792440340936,-0.03924161719101939,0.50135087079896590,0.13741552942080246,
+0.38584460158392103,-1.05581700070645756,1.33305654920496308,-0.4661197871120432,
+ -0.29411616444505956,-2.27258047015748854,0.15783833704105082,-0.52713266629484568,
+ 1.16440529465468257,-0.45001368365485012,-2.15999736051125257,1.01319717905315843,
+0.29660053528020919,-0.30427398541498984,-0.12504282968902436,0.25589579382097077,
+ -0.08693274594974670,-0.03498727188829748,0.07574429063044799,0.24558509581470137,
+ -0.11120224069858284,-0.21580250756805028,-0.02724340730221109,-0.16362172134690667,
+0.39424507332817937,0.26915663350224511,-0.48616892178714571,0.06722217755862435,
+ -0.30789732141190385,0.93830157987553686,0.36043785223845126,0.42644383761017990,
+ -0.13641385018671429,-0.30094945006660034,1.13850388440322159,-0.12250602188987858,
+-0.66991170773376507,-0.33568935537136302,0.34616388717968199,0.16394571168478128,
+ 0.11497788571365419,-1.12355992799920523,0.90321218371657097,0.51843407168999134,
+ -0.5333460102169536,0.19508185891564755,-0.24491167665302710,0.43625522780082732,
+0.52362419925864290,0.35626701996484733,0.07409894473807596,0.6687300563276672,
+ 0.02130172947699538,0.07525160898747016,0.33548314852403621,0.36350170853544833,
+ -0.43456386741360986,0.30564069254711729,0.60413672598431878,0.62344267157598554,
+-0.55671778762503188,0.51384740986051547,-0.66364280764764905,0.20946393028509858,
+ 0.21734134196942456,1.01080770232414596,-0.81218225821401002,-0.14076620249135630,
+ 0.32963958497594853,-0.23647842638263297,0.58596014599473090,-0.68150457913031526,
+0.52872556238983059,0.57098625620273025,1.06212082783082407,0.59423966432136910,
+ 0.34731906030365728,-1.35636228486699051,0.60027136476023302,-0.01921912593105047,
+ -0.26023872041264290,0.60546432820947238,-0.64774098495099597,1.07329929083653908}
+;
+
+*/
+
+
+ double in1[] = { 4 , 3 , 8 , 9 } ;
+ double in2[] = { 1 , 3 , 2 , 4 } ;
+ double result[] = { -1.25 , 0.75 , -1.166666666666666 ,0.83333333333333333 };
+
+
+ double out [(COLUMNS2)*(LINES)] ;
+
+ dldivma( in1 , LINES , COLUMNS1 , in2 , LINES , COLUMNS2 , out ) ;
+ for ( i = 0 ; i < LINES *COLUMNS2 ; i++ )
+ {
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-15 ) ;
+ }
+
+}
+
+
+
+static void cldivmaTest (void )
+{
+ int i = 0 ;
+
+ float tin1[] = { 10.0f , 9.0f , 2.0f ,4.0f};
+ float tin2[] = { 1.0f , 2.0f};
+
+
+
+ floatComplex* in1 ;
+ floatComplex* in2 ;
+ floatComplex* out ;
+ floatComplex Result[ZLINES*ZLINES] ;
+
+ in1 = FloatComplexMatrix ( tin1 , tin1 , ZLINES*ZCOLUMNS1 );
+ in2 = FloatComplexMatrix ( tin2 , tin2 , ZLINES*ZCOLUMNS2 );
+ out = FloatComplexMatrix ( tin2 , tin2 , ZLINES*ZLINES );
+
+ Result[0] = FloatComplex ( 0 , 0 );
+ Result[1] = FloatComplex ( 0.5f , 0 );
+
+
+ cldivma ( in1 , ZLINES , ZCOLUMNS1 , in2 ,ZLINES , ZCOLUMNS2 , out) ;
+
+ for ( i = 0 ; i < (ZCOLUMNS1*ZCOLUMNS2 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e + %e * i result : %e + %e * i assert : %e + %e \n" ,
+ i ,creals(out[i]) , cimags(out[i]) , creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-06 && creals (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-16 );
+
+
+ if ( cimags(out[i]) < 1e-06 && cimags (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-16 ) ;
+}
+
+}
+
+
+
+
+
+
+
+
+
+static void zldivmaTest (void )
+{
+ int i = 0 ;
+
+ double tin1[] = { 10 , 9 , 2 ,4};
+ double tin2[] = { 1 , 2};
+/*
+ double tin1[] = { 4 , 3 , 8 , 9 } ;
+ double tin2[] = { 1 , 3 , 2 , 4 } ;
+*/
+
+
+ doubleComplex* in1 ;
+ doubleComplex* in2 ;
+ doubleComplex* out ;
+ doubleComplex Result[ZLINES*ZLINES] ;
+
+ in1 = DoubleComplexMatrix ( tin1 , tin1 , ZLINES*ZCOLUMNS1 );
+ in2 = DoubleComplexMatrix ( tin2 , tin2 , ZLINES*ZCOLUMNS2 );
+ out = DoubleComplexMatrix ( tin2 , tin2 , ZLINES*ZLINES );
+
+ Result[0] = DoubleComplex ( 0 , 0 );
+ Result[1] = DoubleComplex ( 0.5 , 0 );
+ /*
+ Result[0] = DoubleComplex ( -1.25 , 0 );
+ Result[1] = DoubleComplex ( 0.75 , 0 );
+ Result[2] = DoubleComplex ( -1.16666666 , 0 );
+ Result[3] = DoubleComplex ( 0.833333333333 , 0 ); */
+
+ zldivma ( in1 , ZLINES , ZCOLUMNS1 , in2 ,ZLINES , ZCOLUMNS2 , out) ;
+
+ for ( i = 0 ; i < (ZCOLUMNS1*ZCOLUMNS2 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e + %e * i result : %e + %e * i assert : %e + %e \n" ,
+ i ,zreals(out[i]) , zimags(out[i]) , zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+ if ( zreals(out[i]) < 1e-16 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 1e-16 );
+
+
+ if ( zimags(out[i]) < 1e-16 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-16 ) ;
+
+ }
+
+}
+
+
+
+static void mytest (void ){
+ double in1[2] = { 1 , 4 } ;
+ double in2[3] = { 1 , 2 , 3 };
+ double out[6] = { 0 , 0 , 0 , 0 ,0 , 0 } ;
+
+ int i = 0 ;
+
+ dldivma ( in1 , 1, 2, in2 , 1, 3 , out );
+
+ for ( i = 0 ; i <6; i++)
+ {
+printf ( "\t\t %d out : %20.15e\t\n" , i , out[i] ) ;
+
+ }
+
+}
+
+static int testLDivma (void) {
+ printf ("&&&& WARNING , TESTS FOR COMPLEX ARE STILL WRONG &&&&&&\n\n" ) ;
+
+ printf("\n\n\n\n*********************\n");
+ printf("***** Left Tests ****\n");
+ printf("*********************\n");
+
+
+
+ printf("\n\n\n\t>>> MY TEST Tests\n");
+ mytest () ;
+
+ printf("\n\t>>>>Float real Tests\n");
+ sldivmaTest();
+
+ printf("\n\n\n\t>>>> Double real Tests\n");
+ dldivmaTest();
+
+
+
+ printf("\n\t>>>> Double complex Tests\n");
+ zldivmaTest();
+ printf("\n\t>>>> Float complex Tests\n");
+ cldivmaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testLDivma () == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/testMatrixRDivision.c b/2.3-1/src/c/matrixOperations/division/testMatrixRDivision.c
new file mode 100644
index 00000000..9f4bf279
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/testMatrixRDivision.c
@@ -0,0 +1,504 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include "matrixDivision.h"
+
+#define LINES1 2
+#define LINES2 1
+#define COLUMNS 2
+
+#define ZLINES1 2
+#define ZLINES2 1
+#define ZCOLUMNS 2
+
+
+
+
+static void sdivmaTest ( void )
+{
+ int i = 0 ;
+/*
+ float in1[] =
+ {0.51323400903493166f,0.6807207581587136f,0.54669387824833393f,0.24904179340228438f,
+ 0.95017496403306723f,0.91187966475263238f,0.78931419923901558f,0.30985609395429492f,
+ 0.71984737459570169f,0.9819172923453152f,0.76060794852674007f,0.504620002117008f,
+ 0.06844846438616514f,0.1693508871831f,0.76318027824163437f,0.30514528928324580f,
+ 0.92679917532950640f,0.04813073994591832f,0.93056132830679417f,0.31760499393567443f,
+0.20109100220724940f,0.75775502342730761f,0.15586951794102788f,0.59756303764879704f,
+ 0.93055095290765166f,0.94091763999313116f,0.42790159443393350f,0.01439402624964714f,
+ 0.85971397114917636f,0.11901073250919580f,0.59864782588556409f,0.15444914810359478f,
+ 0.44080717256292701f,0.09636751096695662f,0.47461007768288255f,0.42803008854389191f,
+ 0.92924218205735087f,0.47864412236958742f,0.44434435339644551f,0.52509398944675922f,
+0.78608208894729614f,0.46497652260586619f,0.06789979804307222f,0.24485790403559804f,
+ 0.71605867333710194f,0.99458031123504043f,0.84305586572736502f,0.45727639505639672f,
+ 0.29075053706765175f,0.55482550663873553f,0.28596154693514109f,0.07587631093338132f,
+ 0.66903266869485378f,0.32733985921368f,0.90166416298598051f,0.83553476119413972f,
+ 0.80835641175508499f,0.73590047238394618f,0.83198319096118212f,0.93355408729985356f,
+0.78650354826822877f,0.74095427244901657f,0.95994638977572322f,0.51785656530410051f,
+ 0.78444739105179906f,0.13383972086012363f,0.43243235861882567f,0.74689115490764380f,
+ 0.96420694747939706f,0.22162469848990440f,0.41627834690734744f,0.81930211279541254f,
+ 0.21618453459814191f,0.08386900834739208f,0.48852836480364203f,0.20842899661511183f,
+ 0.22902313107624650f,0.78962677717208862f,0.25109061924740672f,0.57858273852616549f,
+0.69515300076454878f,0.48902340466156602f,0.47249071300029755f,0.59868981270119548f,
+ 0.75798543263226748f,0.80475882859900594f,0.61186199076473713f,0.6943939602933824f,
+ 0.10014689620584249f,0.01250550756230950f,0.47080435231328011f,0.58039451343938708f,
+ 0.95630660001188517f,0.32801365898922086f,0.27026554010808468f,0.52016736706718802f,
+ 0.16067446302622557f,0.04408275568857789f,0.88035558909177780f,0.92851745663210750f,
+0.42481321236118674f,0.73924016486853361f,0.16896168375387788f,0.39154956489801407f,
+ 0.97163037536665797f,0.88981838244944811f,0.90427244128659368f,0.31537816859781742f,
+ 0.06473635649308562f,0.58296835329383612f,0.14059370616450906f,0.63762421533465385f,
+ 0.67373040271922946f,0.44792105350643396f,0.60066422121599317f,0.06632651202380657f,
+ 0.66453591873869300f,0.19733488839119673f,0.45683057839050889f,0.08710412681102753f,
+0.34466254524886608f,0.09304937114939094f,0.06055234652012587f,0.10790407890453935f,
+ 0.15703585743904114f,0.72192603675648570f,0.34105927217751741f,0.62482782872393727f,
+ 0.68893781490623951f,0.03671516245231032f,0.98292266484349966f,0.73650254914537072f,
+ 0.13196587935090065f,0.18807678623124957f,0.43376339320093393f,0.47929613338783383f,
+ 0.15195304714143276f,0.18539744755253196f,0.92726647388190031f,0.80549291754141450f,
+0.64977857517078519f,0.70831089280545712f,0.90016864379867911f,0.51403949689120054f,
+ 0.49954565847292542f,0.55090149492025375f,0.92046913085505366f,0.74058383423835039f,
+ 0.82662396552041173f,0.3313873652368784f,0.68757036840543151f,0.06999884452670813f,
+ 0.41287241736426950f,0.04925781115889549f,0.85545881045982242f,0.31712341401726007f,
+ 0.03992868261411786f,0.92384314350783825f,0.74299975624307990f,0.00424729567021132f,
+0.01225362811237574f,0.3223448325879872f,0.93296645395457745f,0.08063758304342628f,
+ 0.74957344215363264f,0.82469086581841111f,0.35314525663852692f,0.44088636664673686f,
+ 0.79343967605382204f,0.06321920128539205f,0.87087013013660908f,0.05352633958682418f,
+ 0.47160778101533651f,0.38195306668058038f,0.04547535255551338f,0.02313599688932300f,
+ 0.63996278587728739f,0.36444053100422025f,0.37049167416989803f,0.76907502254471183f,
+0.89965870184823871f,0.89933154825121164f,0.64569224463775754f,0.34696785174310207f,
+ 0.39040711661800742f,0.08694788347929716f,0.22625351930037141f,0.21681279689073563f,
+ 0.33453882811591029f,0.15584628004580736f,0.95653126062825322f,0.83982629515230656f,
+ 0.50479181623086333f,0.54758223798125982f,0.83060362795367837f,0.21214072033762932f,
+ 0.02860224200412631f,0.95791505370289087f,0.91556971566751599f,0.94719038717448711f,
+0.30791273340582848f,0.81771020544692874f,0.74679336044937372f,0.87552759842947125f,
+ 0.49545058421790600f,0.48191254725679755f,0.39087839704006910f,0.88425681227818131f,
+ 0.54299664497375488f,0.20552197424694896f,0.31019500363618135f,0.57183724315837026f,
+ 0.54999292083084583f,0.12055991357192397f,0.26517685409635305f,0.29529260704293847f,
+ 0.95132300630211830f,0.57458581728860736f,0.71528563741594553f,0.91191364871338010f,
+0.18359116325154901f,0.45608301833271980f,0.17441136343404651f,0.18253823462873697f,
+ 0.77341705607250333f,0.01534702442586422f,0.27907355269417167f,0.94600243400782347f,
+ 0.39083331311121583f,0.35583620518445969f,0.58566563902422786f,0.44004907924681902f,
+ 0.79277362348511815f,0.96740394271910191f,0.06400812184438109f,0.07406814303249121f,
+ 0.03709788480773568f,0.85063817724585533f,0.10404936922714114f,0.12005183193832636f,
+0.52963322307914495f,0.42104291776195168f,0.92252827808260918f,0.17444357229396701f,
+ 0.34813721571117640f,0.98178615467622876f,0.51038642041385174f,0.35229418566450477f,
+ 0.33187932055443525f,0.12522496515884995f,0.17751775681972504f,0.30953403143212199f,
+ 0.30514361429959536f,0.69633625121787190f,0.58739017136394978f,0.95729830628260970f,
+ 0.78135449346154928f,0.41670671710744500f,0.55824907496571541f,0.17518991930410266f,
+0.11329598492011428f,0.87877958174794912f,0.81112976977601647f,0.1327551044523716f,
+ 0.88772260351106524f,0.77383322361856699f,0.39891980635002255f,0.42609489522874355f,
+ 0.29346287390217185f,0.29799025785177946f,0.62878308678045869f,0.90327445417642593f,
+ 0.88942573545500636f,0.11638559121638536f,0.92788035096600652f,0.30957929231226444f,
+ 0.2565767071209848f,0.42655616905540228f,0.26941573480144143f,0.65786541625857353f,
+0.98608913458883762f,0.04273471748456359f,0.26294819917529821f,0.66961710015311837f,
+ 0.19781696423888206f,0.62439860356971622f,0.25354105327278376f,0.55396229820325971f,
+ 0.92479544691741467f,0.09095242014154792f,0.63873832207173109f,0.97996837133541703f,
+ 0.67638632655143738f,0.89037371007725596f,0.41085386741906404f,0.07612052233889699f,
+ 0.31289586611092091f,0.62697393959388137f,0.15661530848592520f,0.28013094374909997f};
+
+float in2[] =
+ {0.56034345272928476f,0.89566554129123688f,0.53930272068828344f,0.3547350224107504f,
+ 0.80800013709813356f,0.62323769554495811f,0.58200186025351286f,0.56180121190845966f,
+ 0.23549679014831781f,0.28873602300882339f,0.43252215441316366f,0.7673156540840864f,
+ 0.06873596925288439f,0.18797885254025459f,0.86748637538403273f,0.73920361138880253f,
+ 0.97392784897238016f,0.86080306768417358f,0.39093428757041693f,0.57339327596127987f,
+0.16198171628639102f,0.66783405328169465f,0.1454864419065416f,0.32747871475294232f,
+ 0.51621831534430385f,0.79978153714910150f,0.09275748720392585f,0.14153907122090459f,
+ 0.06119967205449939f,0.32070356840267777f,0.73968251561746001f,0.37837028549984097f,
+ 0.56752133695408702f,0.11224916437640786f,0.28770424565300345f,0.00037088664248586f,
+ 0.79149663401767612f,0.58377730334177613f,0.59390504425391555f,0.02694623963907361f,
+0.76592414453625679f,0.02564378362149000f,0.74512455798685551f,0.02366107050329447f,
+ 0.06156063079833984f,0.04258572962135077f,0.63941287063062191f,0.38405111897736788f,
+ 0.14321060106158257f,0.42103306483477354f,0.05339348502457142f,0.93415357265621424f,
+ 0.59929492324590683f,0.66478141304105520f,0.14329732768237591f,0.42867958266288042f,
+ 0.10990926995873451f,0.63394964020699263f,0.05351450480520725f,0.54702291730791330f,
+0.69746216991916299f,0.03159578284248710f,0.25769635709002614f,0.59392183972522616f,
+ 0.01609914982691407f,0.86753786867484450f,0.32879876391962171f,0.22861831961199641f,
+ 0.33929981896653771f,0.75886590173467994f,0.61312689306214452f,0.48855357570573688f,
+ 0.10645245248451829f,0.14542592084035277f,0.18745915638282895f,0.87820987729355693f,
+ 0.92918653646484017f,0.92348486324772239f,0.39261205168440938f,0.68466226710006595f,
+0.08946218248456717f,0.42732305638492107f,0.77090662438422441f,0.924068246036768f,
+ 0.50982708018273115f,0.34508761204779148f,0.10317245963960886f,0.63696919381618500f,
+ 0.88041578140109777f,0.65034613572061062f,0.80938913393765688f,0.9986613355576992f,
+ 0.38141551148146391f,0.43060396797955036f,0.61948752496391535f,0.80996788293123245f,
+ 0.05324298795312643f,0.29668187908828259f,0.00448737759143114f,0.82276185229420662f,
+0.19805425917729735f,0.10866974340751767f,0.99788628844544291f,0.6723356381990016f,
+ 0.46966064115986228f,0.79823006363585591f,0.67132972134277225f,0.35570297623053193f,
+ 0.52579802041873336f,0.25843874411657453f,0.19287035940214992f,0.59324032673612237f,
+ 0.25955950608476996f,0.61404782952740788f,0.21750316722318530f,0.81994143361225724f,
+ 0.19624035572633147f,0.8358787004835904f,0.42109713284298778f,0.31491625169292092f,
+0.25988535769283772f,0.76794129703193903f,0.84549946337938309f,0.48446214850991964f,
+ 0.52822500281035900f,0.37241784948855639f,0.85067357495427132f,0.16846220474690199f,
+ 0.71482414938509464f,0.78300847951322794f,0.54156896471977234f,0.89239248540252447f,
+ 0.00643130205571651f,0.21658254135400057f,0.44520513340830803f,0.32618630956858397f,
+ 0.52326664514839649f,0.32250450644642115f,0.26230763643980026f,0.23438148852437735f,
+0.50999558391049504f,0.37397424085065722f,0.64668390387669206f,0.64172910666093230f,
+ 0.03306737588718534f,0.18668571440503001f,0.83025926211848855f,0.99121205648407340f,
+ 0.38945918949320912f,0.27384403301402926f,0.41589357936754823f,0.99599931901320815f,
+ 0.81049045221880078f,0.96830060658976436f,0.40803860733285546f,0.52525822212919593f,
+ 0.33058117749169469f,0.23706211848184466f,0.17479355866089463f,0.62723324215039611f,
+0.16741782892495394f,0.15187738463282585f,0.72003478836268187f,0.59474316425621510f,
+ 0.71126131806522608f,0.50548844784498215f,0.43874060269445181f,0.84671537391841412f,
+ 0.46396317798644304f,0.84823036566376686f,0.28646126668900251f,0.48104315437376499f,
+ 0.26604998949915171f,0.66378767788410187f,0.63686545100063086f,0.79531485401093960f,
+ 0.95694970060139894f,0.70720722898840904f,0.83713256847113371f,0.62996550090610981f,
+0.34009417472407222f,0.72199993440881371f,0.67456434061750770f,0.10675506712868810f,
+ 0.79017778439447284f,0.34282173449173570f,0.58765271818265319f,0.07389529095962644f,
+ 0.16408033994957805f,0.12704358855262399f,0.51104495069012046f,0.07703803153708577f,
+ 0.12485344661399722f,0.51966900611296296f,0.49762418633326888f,0.77279568510130048f,
+ 0.95798523304983974f,0.22388020763173699f,0.83013197174295783f,0.04275623383000493f};
+
+
+float result[] =
+{-0.13425098694507090f,0.24735018618193444f,-0.13997367470679392f,0.11987585715392905f,
+ -0.07023550140255914f,-0.32818483956327921f,0.82293845909628660f,-0.04825208923032670f,
+ 0.41107043821212774f,0.28834120500378574f,
+0.26097631689267364f,0.41112922481604613f,-0.48704150701173060f,0.16756167892414930f,
+ 0.18525816194433214f,0.24194769618197037f,0.04516579999951376f,0.08210988946198612f,
+ -0.17724539433971653f,0.21570365259908197f,
+0.46476238563747729f,0.12929328091152756f,0.03791742144738922f,0.33232469296313982f,
+ -0.14531956716307623f,-0.04355937726216118f,-0.32871318476723438f,0.16208735115250936f,
+ 0.27759742819012267f,0.20883772519304408f,
+0.60589399320385928f,0.06028369176400562f,0.33610957414517950f,-0.32741653379843827f,
+ 0.32006732568590329f,0.12357809346654614f,0.26645037101516444f,-0.15778041923768410f,
+ -0.02281069075548223f,-0.21831876232917027f,
+0.11316162639341981f,0.44869069077875356f,0.05087241573803265f,-0.07310286041500898f,
+ 0.24172631454502305f,0.20582249789901347f,-0.49030030296647070f,0.49725834464740676f,
+ -0.15098926456955386f,0.29845287904710704f,
+0.26126025652717821f,0.61602266860724408f,-0.04395376298763495f,-0.31468851985942192f,
+ -0.42610430769336133f,0.07619666627024707f,0.42141080474076514f,0.34732212135875368f,
+ 0.21966932936729675f,-0.16465486570712187f,
+0.01801836442044520f,0.13867951307716378f,-0.22823955222461578f,0.35528257041935002f,
+ 0.3416886047495104f,-0.05324845913867078f,-0.18334602929956423f,0.34486570917896908f,
+ -0.09850219178062529f,0.15717539967151753f,
+0.26027320955453370f,0.24744146889140337f,-0.164185466873868f,-0.18897859269730288f,
+ -0.10286928200189474f,0.54800666111794050f,0.32097861553203794f,0.16617893447929227f,
+ -0.03433269255504845f,-0.01421332288783149f,
+-0.24887241840873561f,0.52303584234440914f,0.02976416459895397f,-0.12264750867737524f,
+ 0.30087087321455463f,0.28120264259279731f,-0.02981261204955734f,-0.05832040687613257f,
+ 0.09480786369785668f,0.26640553810556677f,
+0.28112837735944118f,0.53844297257991636f,0.87478164836631844f,-0.1409682347398108f,
+ 0.66145942836153393f,-0.26119505204825816f,-0.34297154024663806f,-0.24798246038042729f,
+ -0.30432340939641339f,0.37887301625026215f,
+0.38327878821721156f,0.28922881585078497f,-0.34742629642806333f,-0.03677194909448467f,
+ -0.04829379940842784f,0.06878313210496664f,0.04495930782786764f,0.47892284040726463f,
+ 0.32833980213443120f,-0.23534654463679133f,
+-0.02763634740677747f,0.72078725530634646f,0.48763002329592203f,-0.57876872035917137f,
+ 0.23063708055466298f,0.04745273757978258f,-0.28751023415434818f,0.138229588096174f,
+ 0.36392895348902060f,-0.15741181362164816f,
+0.13480297497174423f,-0.06082319210597478f,-0.03346206227374363f,0.157369564795072f,
+ -0.09939329142432089f,0.50801256096451919f,-0.21552055455365590f,0.18726599728475304f,
+ -0.09981549922929681f,0.56837678961938298f,
+0.51101691288362061f,0.72117205689181529f,0.47311124338037619f,-0.59816447223287172f,
+ 0.56148184747810326f,0.06803537921378118f,-0.12236345370998958f,-0.2366952577209536f,
+ -0.10560524465448745f,-0.03700000431544657f,
+-0.07318875604760167f,0.49681103126620946f,0.16658812117729807f,0.19247716660649325f,
+ 0.17479922937365650f,0.20305642078183334f,-0.11893261285117168f,0.52167729786941019f,
+ -0.26590601210923126f,-0.17052720242327102f};
+ */
+
+ /*float in1[] = { 4.0f , 3.0f , 8.0f , 9.0f } ;
+ float in2[] = { 1.0f , 3.0f , 2.0f , 4.0f } ;
+ float result[] = { 4.0f , 7.5f , 0.0f ,-1.5f };
+float out[(COLUMNS)*(LINES2)] ;*/
+
+ float in1[] = { 1.0f ,3.0f ,2.0f ,4.0f } ;
+ float in2[] = { 1.0f , 2.0f } ;
+ float result[] = { 1.0f , 2.2f };
+ float out [(COLUMNS)*(LINES2)] ;
+
+
+
+ srdivma ( in1 , LINES1 , COLUMNS , in2 , LINES2 , COLUMNS , out) ;
+
+ for ( i = 0 ; i < LINES2 *COLUMNS ; ++i )
+ {
+ printf ( "\t\t %d out : %e result : %e assert : %e \n" ,
+ i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 1e-6 ) ;
+ }
+
+}
+
+
+
+
+
+
+
+static void drdivmaTest ( void )
+{
+ int i = 0 ;
+
+/* double in1[] = { 4 , 3 , 8 , 9 } ;
+ double in2[] = { 1 , 3 , 2 , 4 } ;
+ double result[] = { 4 , 7.5 , 0 ,-1.5 };*/
+
+
+ double in1[] = { 1 ,3 ,2 ,4 } ;
+ double in2[] = { 1 , 2 } ;
+ double result[] = { 1 , 2.2 };
+ double out [(COLUMNS)*(LINES2)] ;
+
+ drdivma ( in1 , LINES1 , COLUMNS , in2 , LINES2 , COLUMNS , out) ;
+ for ( i = 0 ; i < LINES2 *COLUMNS ; i++ )
+ {
+ printf ( "\t\t %d out : %e result : %e assert : %e \n" ,
+ i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-16 ) ;
+ }
+
+}
+
+static void crdivmaTest (void )
+{
+ int i = 0 ;
+
+ float tin1[] = { 1.0f , 3.0f , 2.0f ,4.0f};
+ float tin2[] = { 1.0f , 2.0f};
+
+
+ floatComplex* in1 ;
+ floatComplex* in2 ;
+ floatComplex out[ZLINES2*ZCOLUMNS] ;
+ floatComplex Result[ZLINES1*ZLINES2] ;
+
+ in1 = FloatComplexMatrix ( tin1 , tin1 , ZLINES1*ZCOLUMNS );
+ in2 = FloatComplexMatrix ( tin2 , tin2 , ZLINES2*ZCOLUMNS );
+
+
+ Result[0] = FloatComplex ( 1.0f , 0 );
+ Result[1] = FloatComplex ( 2.2f , 0 );
+
+ crdivma ( in1 , ZLINES1 , ZCOLUMNS , in2 ,ZLINES2 , ZCOLUMNS , out) ;
+
+ for ( i = 0 ; i < (ZLINES2*ZCOLUMNS ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e + %e * i result : %e + %e * i assert : %e + %e \n" ,
+ i ,creals(out[i]) , cimags(out[i]) , creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-06 && creals (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-16 );
+
+
+ if ( cimags(out[i]) < 1e-06 && cimags (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-16 ) ;
+
+ }
+
+}
+
+
+
+
+
+static void zrdivmaTest ( void ){
+ int i = 0 ;
+
+/* double tin1 [] =
+ {0.69949407549574971,0.25834653992205858,0.61552664963528514,0.19030105322599411,
+ 0.46075769001618028,0.52200102340430021,0.70538004627451301,0.88748936913907528,
+ 0.18582182424142957,0.09225247148424387,0.37796644819900393,0.93693156912922859,
+ 0.19805216649547219,
+0.47020285483449697,0.37788185989484191,0.36296494491398335,0.27933338703587651,
+ 0.67214426863938570,0.69089507637545466,0.5104757994413376,0.06106034899130464,
+ 0.93353842478245497,0.14489983161911368,0.57212112657725811,0.54598869429901242,
+ 0.05166801903396845,
+0.50110132200643420,0.92609716579318047,0.85469480464234948,0.58570997323840857,
+ 0.8791871047578752,0.25320483185350895,0.7903951373882592,0.63298055250197649,
+ 0.86023237137123942,0.90196201950311661,0.31587493652477860,0.40010235738009214,
+ 0.11108959605917335,
+0.47051278315484524,0.53627631859853864,0.28784319106489420,0.87401255918666720,
+ 0.07408339157700539,0.28149573365226388,0.70837680157274008,0.16526474570855498,
+ 0.26673525758087635,0.88194080116227269,0.35371549893170595,0.02646211860701442,
+ 0.08616474270820618,
+0.23139652097597718,0.13406464736908674,0.67240026732906699,0.19029983691871166,
+ 0.73075085924938321,0.50484903249889612,0.87911593122407794,0.55444371327757835,
+ 0.2063297093845904,0.40116110350936651,0.45593289798125625,0.69771515764296055,
+ 0.39659122796729207,
+0.49838109035044909,0.14524227706715465,0.90753587335348129,0.10092954570427537,
+ 0.01771899592131376,0.79376714816316962,0.43091466091573238,0.58433785336092114,
+ 0.79542846325784922,0.13906158460304141,0.10127847269177437,0.331680862698704,
+ 0.83444251772016287,
+0.05499405181035399,0.36960034258663654,0.74532664241269231,0.05718118418008089,
+ 0.59996518073603511,0.20857419073581696,0.87988782906904817,0.47828097920864820,
+ 0.71160991629585624,0.85858650319278240,0.80782221304252744,0.51599627826362848,
+ 0.89173404080793262,
+0.88423488661646843,0.70964269945397973,0.66102255787700415,0.72523507243022323,
+ 0.51014349795877934,0.28248664410784841,0.22149151284247637,0.57675753859803081,
+ 0.70482534915208817,0.56079456442967057,0.36288804840296507,0.30883262446150184,
+ 0.98134148679673672,
+0.74284822540357709,0.16163914743810892,0.36525219632312655,0.38350704684853554,
+ 0.11691810050979257,0.89112461265176535,0.06342720007523894,0.62639418430626392,
+ 0.68077020766213536,0.25885968375951052,0.43948043463751674,0.85988187789916992,
+ 0.54828232014551759,
+0.81359952967613935,0.48982370039448142,0.02400260977447033,0.73691955255344510,
+ 0.24111561570316553,0.15296932263299823,0.26483592018485069,0.42981932172551751,
+ 0.76739394571632147,0.87532604997977614,0.37969883717596531,0.30623568268492818,
+ 0.38800517935305834}
+;
+ double tin2[] =
+ {0.10472932783886790,0.76038318127393723,0.03409303957596421,0.14239662420004606,
+ 0.55545594682916999,0.80318974517285824,0.51839923160150647,
+0.15185610298067331,0.58847306622192264,0.25450934842228889,0.99926799396052957,
+ 0.63989769574254751,0.55067161237820983,0.46070076711475849,
+0.59330079378560185,0.65381935704499483,0.41683405218645930,0.99101553857326508,
+ 0.37207804108038545,0.70618240814656019,0.57808654149994254,
+0.60231964103877544,0.57150967465713620,0.05496290419250727,0.12058544857427478,
+ 0.01436204835772514,0.02579512307420373,0.84112487640231848,
+0.43818825250491500,0.46434015966951847,0.41974264057353139,0.80236544925719500,
+ 0.52285881666466594,0.50951210409402847,0.45319801801815629,
+0.78178183268755674,0.77655703714117408,0.04660592041909695,0.51133266882970929,
+ 0.75021018926054239,0.68836286617442966,0.01677561178803444,
+0.93454108992591500,0.56098637636750937,0.22058471059426665,0.76485407538712025,
+ 0.48169769765809178,0.15587856341153383,0.24760220525786281,
+0.5216529071331024,0.08052303874865174,0.44094172399491072,0.89119336148723960,
+ 0.97805908136069775,0.45880937622860074,0.55104400310665369,
+0.09609609050676227,0.41967850551009178,0.75025565037503839,0.72181495930999517,
+ 0.28955410188063979,0.39077644981443882,0.66866181464865804,
+0.48776568192988634,0.46859717695042491,0.35626485198736191,0.34423254663124681,
+ 0.42533078324049711,0.55880581727251410,0.33048649691045284};
+
+ double tresult [] =
+{0.09451169317317064,0.75015055776907902,0.36496074775718695,0.68454978838459446,
+ 0.13580235186649750,-0.73350613524989861,0.36833823393043919,0.27427787570717332,
+ 0.17435767433670571,1.27922130237729870,-0.15718152608891298,-0.66812523122285583,
+ 0.43535989166783623,
+-0.17216817930992268,-1.11920478787033972,0.09365729285784405,-0.91168598672719281,
+ -0.5256902016286176,1.47418373212534837,0.32785551967187748,0.09665910045214705,
+ 0.38963814934750451,-0.74599090807052515,0.77435560834796702,1.17862196275483577,
+ 0.41913747422722752,
+0.65168405083167491,-0.79778304970274549,-0.36689764540805470,-0.07037790812871010,
+ -0.90964747913660449,0.87009086524746737,-0.86086796711204328,0.69420170666117553,
+ 0.39900228216491013,0.01839542030829135,0.34079166496122038,0.94979559344928910,
+ 1.29342689865858507,
+-0.64010890644433138,0.43942520236508265,0.36871562427022309,-0.23543430717113373,
+ 0.9837594524525952,-0.15541789413277388,0.51832027142464965,-0.49730447418173146,
+ 0.37785363034287500,0.05031307256758123,0.14529056591993289,-0.19261761155662854,
+ -0.65165849136819898,
+0.56992829732488970,-0.67626872453203313,0.08987541550832115,-0.27809079516465274,
+ -0.52685742082861620,0.87085948155471882,-0.36015598439076552,0.24628281709439132,
+ 0.16018284982540432,-0.78765458348414275,0.4868803314915888,0.67004786693098373,
+ 1.38638653773561149,
+0.49065638508775172,1.15002211885645633,0.31098171282535453,0.772677804931936,
+ 0.77563266454559698,-0.93158860042668212,0.20092451587523308,0.56834988643083173,
+ -0.03774794264631696,0.70322729924980754,-0.84660509947179974,-0.48910607201144141,
+ -0.91999377725600595,
+0.57044463605090034,0.85729374705550832,0.03549271915962299,1.08806327983132478,
+ 0.40323683962485551,-0.27978276073461661,0.45277262688908537,0.06218152458345420,
+ -0.2153422115217984,0.68840508909853904,0.09945644614561956,-0.17861252621808085,
+ -0.44037299008464365}
+;*/
+
+ double bR[6]={1,4,2,5,3,6};
+ double bI[6]={1,0,4,0,1,2};
+ double dR[9]={4,8,3,2,8,4,3,4,5};
+ double dI[9]={0,0,4,0,-1,0,0,0,0};
+ double rR[6]={0.9845119462120300868335,1.191739704646416209144,- 0.1118981870572697823185,
+ 0.2069876335694560698375,0.0988113819185977154680,0.3193660703565854852570};
+ double rI[6]={- 1.3492616160403412273183,- 0.3196061952215153434409,0.5309160763597071674980,
+ - 0.3168447592748228625048,0.5848241085364388469614,0.8452395245527674072505};
+ doubleComplex* in1 ;
+ doubleComplex* in2 ;
+ doubleComplex* out ;
+ doubleComplex* Result ;
+
+ in1 = DoubleComplexMatrix ( bR,bI,6 );
+ in2 = DoubleComplexMatrix ( dR,dI,9 );
+ out = (doubleComplex*)malloc((unsigned int)6*sizeof(doubleComplex));
+ Result = (doubleComplex*)malloc((unsigned int)6*sizeof(doubleComplex));
+
+ Result = DoubleComplexMatrix ( rR , rI , 6 );
+
+ zrdivma ( in1 , 2 , 3 , in2 ,3 , 3 , out) ;
+
+ for ( i = 0 ; i < (6 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %1.20f + %1.20f * i result : %1.20f + %1.20f * i assert : %e + %e \n" ,
+ i ,zreals(out[i]) , zimags(out[i]) , zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+ if ( zreals(out[i]) < 1e-16 && zreals (Result[i]) < 1e-16 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-16 && zimags (Result[i]) < 1e-16 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(Result);
+ free(out);
+}
+
+
+
+static void mytest (void ){
+ double in1[16] = { 1 , 5 , 9 , 13 } ;
+ double in2[16] = { 2 , 6 , 10 } ;
+
+ double out[16] = { 0 } ;
+
+ int i = 0 ;
+
+ drdivma ( in1 , 1 , 4 , in2 ,1, 3 , out );
+
+ for ( i = 0 ; i <1; i++)
+ {
+printf ( "\t\t %d out : %20.15e\t\n" , i , out[i] ) ;
+
+ }
+
+}
+
+
+static int testRDivma (void) {
+
+ printf("\n\n\n\n**********************\n");
+ printf("***** Right Tests ****\n");
+ printf("**********************\n");
+ mytest ( );
+ printf("\n\t>>>> Float real Tests\n");
+ sdivmaTest();
+
+ printf("\n\n\n\n\t>>>> Double real Tests\n");
+ drdivmaTest();
+
+ printf("\n\t>>>> Float complex Tests\n");
+ crdivmaTest();
+
+ printf("\n\t>>>> Double complex Tests\n");
+ zrdivmaTest();
+ return 0;
+}
+
+
+int main(void) {
+ assert(testRDivma () == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj b/2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj
new file mode 100644
index 00000000..73c770d2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B1F2A8CE-764A-4D51-AABD-998D48783894}</ProjectGuid>
+ <RootNamespace>testMatrixLDivision</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixLDivision.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj.filters b/2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj.filters
new file mode 100644
index 00000000..c7100b46
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/test_MatrixLDivision/testMatrixLDivision.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixLDivision.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj b/2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj
new file mode 100644
index 00000000..5e554d6d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{33833932-6973-483B-B0D1-B3CC800BDFF5}</ProjectGuid>
+ <RootNamespace>testMatrixRDivision</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixRDivision.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj.filters b/2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj.filters
new file mode 100644
index 00000000..edfc1006
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/test_MatrixRDivision/testMatrixRDivision.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixRDivision.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/division/u16ldivma.c b/2.3-1/src/c/matrixOperations/division/u16ldivma.c
new file mode 100644
index 00000000..d7901f38
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/u16ldivma.c
@@ -0,0 +1,111 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void u16ldivma (uint16* in1, int lines1, int columns1 ,
+ uint16* in2, int lines2, int columns2 ,
+ uint16* out ){
+
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ uint16 dblRcond = 0;
+
+ uint16 dblEps = 0;
+ uint16 dblAnorm = 0;
+
+ uint16 *pAf = NULL;
+ uint16 *pXb = NULL;
+ uint16 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns1, max(min(lines1, columns1) + 3 * lines1 + 1, 2 * min(lines1, columns1) + columns2));
+
+
+ lines2 = 0 ;
+
+ /* Array allocations*/
+ pAf = (uint16*)malloc(sizeof(uint16) * (unsigned int) lines1 * (unsigned int) columns1);
+ pXb = (uint16*)malloc(sizeof(uint16) * (unsigned int) max(lines1,columns1) * (unsigned int) columns2);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pJpvt = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pIwork = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+
+
+
+ cNorm = '1';
+ pDwork = (uint16*)malloc(sizeof(uint16) *(unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+
+ dblAnorm = dlange_(&cNorm, &lines1, &columns1, in1, &lines1, pDwork);
+ if(lines1 == columns1)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns1, &columns1, in1, &columns1, pAf, &columns1);
+ dgetrf_(&columns1, &columns1, pAf, &columns1, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(dgecon)(&cNorm, &columns1, pAf, &columns1, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(dgetrs)(&cNorm, &columns1, &columns2, pAf, &columns1, pIpiv, in2, &columns1, &iInfo);
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, in2, &columns1, out, &columns1);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines1, columns1);
+ C2F(dlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int) columns1);
+ C2F(dgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, pXb, &iMax, out, &columns1);
+ }
+ }
+
+ free(pAf);
+ free(pXb);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+}
diff --git a/2.3-1/src/c/matrixOperations/division/u16rdivma.c b/2.3-1/src/c/matrixOperations/division/u16rdivma.c
new file mode 100644
index 00000000..d6642074
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/u16rdivma.c
@@ -0,0 +1,129 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void u16rdivma ( uint16 * in1, int lines1, int columns1,
+ uint16 * in2, int lines2, int columns2,
+ uint16 * out){
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ uint16 dblRcond = 0;
+
+ uint16 dblEps = 0;
+ uint16 dblAnorm = 0;
+
+ uint16 *pAf = NULL;
+ uint16 *pAt = NULL;
+ uint16 *pBt = NULL;
+ uint16 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns2, max(min(lines2, columns2) + 3 * lines2 + 1, 2 * min(lines2, columns2) + lines1));
+
+
+ /* Array allocations*/
+ pAf = (uint16*)malloc(sizeof(uint16) * (unsigned int)columns2 * (unsigned int)lines2);
+ pAt = (uint16*)malloc(sizeof(uint16) * (unsigned int)columns2 *(unsigned int) lines2);
+ pBt = (uint16*)malloc(sizeof(uint16) * (unsigned int)max(lines2,columns2) * (unsigned int)lines1);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+ pJpvt = (int*)malloc(sizeof(int) * (unsigned int)lines2);
+ pIwork = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+
+
+ cNorm = '1';
+ pDwork = (uint16*)malloc(sizeof(uint16) * (unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = dlange_(&cNorm, &lines2, &columns1, in2, &lines2, pDwork);
+
+ /*tranpose A and B*/
+
+ dtransposea(in2, lines2, columns2, pAt);
+ dtransposea(in1, lines1, columns2, pBt);
+
+ if(lines2 == columns2)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns2, &columns2, pAt, &columns2, pAf, &columns2);
+ dgetrf_(&columns2, &columns2, pAf, &columns2, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ dgecon_(&cNorm, &columns2, pAf, &columns2, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ dgetrs_(&cNorm, &columns2, &lines1, pAf, &columns2, pIpiv, pBt, &columns2, &iInfo);
+ dtransposea(pBt, columns2, lines1, out);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines2, columns2);
+ memset(pJpvt, 0x00, (unsigned int)sizeof(int) * (unsigned int)lines2);
+ dgelsy_(&columns2, &lines2, &lines1, pAt, &columns2, pBt, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+
+ /* TransposeRealMatrix(pBt, lines1, lines2, out, Max(lines1,columns1), lines2);*/
+
+ /*Mega caca de la mort qui tue des ours a mains nues
+ mais je ne sais pas comment le rendre "beau" :(*/
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = pBt[ji];
+ }
+ }
+ }
+ }
+ }
+
+ free(pAf);
+ free(pAt);
+ free(pBt);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/u16rdivv.c b/2.3-1/src/c/matrixOperations/division/u16rdivv.c
new file mode 100644
index 00000000..66dc2144
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/u16rdivv.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "matrixDivision.h"
+
+uint16 u16rdivv(uint16 *in1, uint16 *in2, int size){
+
+ uint16 out[1] = { 0.0} ;
+ u16rdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/u8ldivma.c b/2.3-1/src/c/matrixOperations/division/u8ldivma.c
new file mode 100644
index 00000000..ce491b4f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/u8ldivma.c
@@ -0,0 +1,111 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void u8ldivma (uint8* in1, int lines1, int columns1 ,
+ uint8* in2, int lines2, int columns2 ,
+ uint8* out ){
+
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ uint8 dblRcond = 0;
+
+ uint8 dblEps = 0;
+ uint8 dblAnorm = 0;
+
+ uint8 *pAf = NULL;
+ uint8 *pXb = NULL;
+ uint8 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns1, max(min(lines1, columns1) + 3 * lines1 + 1, 2 * min(lines1, columns1) + columns2));
+
+
+ lines2 = 0 ;
+
+ /* Array allocations*/
+ pAf = (uint8*)malloc(sizeof(uint8) * (unsigned int) lines1 * (unsigned int) columns1);
+ pXb = (uint8*)malloc(sizeof(uint8) * (unsigned int) max(lines1,columns1) * (unsigned int) columns2);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pJpvt = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+ pIwork = (int*)malloc(sizeof(int) *(unsigned int) columns1);
+
+
+
+ cNorm = '1';
+ pDwork = (uint8*)malloc(sizeof(uint8) *(unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+
+ dblAnorm = dlange_(&cNorm, &lines1, &columns1, in1, &lines1, pDwork);
+ if(lines1 == columns1)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns1, &columns1, in1, &columns1, pAf, &columns1);
+ dgetrf_(&columns1, &columns1, pAf, &columns1, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(dgecon)(&cNorm, &columns1, pAf, &columns1, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(dgetrs)(&cNorm, &columns1, &columns2, pAf, &columns1, pIpiv, in2, &columns1, &iInfo);
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, in2, &columns1, out, &columns1);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines1, columns1);
+ C2F(dlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int) columns1);
+ C2F(dgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+ cNorm = 'F';
+ C2F(dlacpy)(&cNorm, &columns1, &columns2, pXb, &iMax, out, &columns1);
+ }
+ }
+
+ free(pAf);
+ free(pXb);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+}
diff --git a/2.3-1/src/c/matrixOperations/division/u8rdivma.c b/2.3-1/src/c/matrixOperations/division/u8rdivma.c
new file mode 100644
index 00000000..6ff4b17a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/u8rdivma.c
@@ -0,0 +1,129 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void u8rdivma ( uint8 * in1, int lines1, int columns1,
+ uint8 * in2, int lines2, int columns2,
+ uint8 * out){
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ uint8 dblRcond = 0;
+
+ uint8 dblEps = 0;
+ uint8 dblAnorm = 0;
+
+ uint8 *pAf = NULL;
+ uint8 *pAt = NULL;
+ uint8 *pBt = NULL;
+ uint8 *pDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ int *pIwork = NULL;
+
+ iWork = max(4 * columns2, max(min(lines2, columns2) + 3 * lines2 + 1, 2 * min(lines2, columns2) + lines1));
+
+
+ /* Array allocations*/
+ pAf = (uint8*)malloc(sizeof(uint8) * (unsigned int)columns2 * (unsigned int)lines2);
+ pAt = (uint8*)malloc(sizeof(uint8) * (unsigned int)columns2 *(unsigned int) lines2);
+ pBt = (uint8*)malloc(sizeof(uint8) * (unsigned int)max(lines2,columns2) * (unsigned int)lines1);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+ pJpvt = (int*)malloc(sizeof(int) * (unsigned int)lines2);
+ pIwork = (int*)malloc(sizeof(int) * (unsigned int)columns2);
+
+
+ cNorm = '1';
+ pDwork = (uint8*)malloc(sizeof(uint8) * (unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = dlange_(&cNorm, &lines2, &columns1, in2, &lines2, pDwork);
+
+ /*tranpose A and B*/
+
+ dtransposea(in2, lines2, columns2, pAt);
+ dtransposea(in1, lines1, columns2, pBt);
+
+ if(lines2 == columns2)
+ {
+ cNorm = 'F';
+ dlacpy_(&cNorm, &columns2, &columns2, pAt, &columns2, pAf, &columns2);
+ dgetrf_(&columns2, &columns2, pAf, &columns2, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ dgecon_(&cNorm, &columns2, pAf, &columns2, &dblAnorm, &dblRcond, pDwork, pIwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ dgetrs_(&cNorm, &columns2, &lines1, pAf, &columns2, pIpiv, pBt, &columns2, &iInfo);
+ dtransposea(pBt, columns2, lines1, out);
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines2, columns2);
+ memset(pJpvt, 0x00, (unsigned int)sizeof(int) * (unsigned int)lines2);
+ dgelsy_(&columns2, &lines2, &lines1, pAt, &columns2, pBt, &iMax,
+ pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+
+ /* TransposeRealMatrix(pBt, lines1, lines2, out, Max(lines1,columns1), lines2);*/
+
+ /*Mega caca de la mort qui tue des ours a mains nues
+ mais je ne sais pas comment le rendre "beau" :(*/
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = pBt[ji];
+ }
+ }
+ }
+ }
+ }
+
+ free(pAf);
+ free(pAt);
+ free(pBt);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pIwork);
+ free(pDwork);
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/u8rdivv.c b/2.3-1/src/c/matrixOperations/division/u8rdivv.c
new file mode 100644
index 00000000..92e5762e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/u8rdivv.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "matrixDivision.h"
+
+uint8 u8rdivv(uint8 *in1, uint8 *in2, int size){
+
+ uint8 out[1] = { 0.0} ;
+ u8rdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/zldivma.c b/2.3-1/src/c/matrixOperations/division/zldivma.c
new file mode 100644
index 00000000..85577351
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/zldivma.c
@@ -0,0 +1,125 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+#include "lapack.h"
+
+void zldivma( doubleComplex* in1, int lines1, int columns1 ,
+ doubleComplex* in2, int lines2, int columns2 ,
+ doubleComplex* out )
+{
+
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ int iRank = 0;
+
+ double dblRcond = 0;
+
+ double dblEps = 0;
+ double dblAnorm = 0;
+
+ doubleComplex *pAf = NULL;
+ doubleComplex *pXb = NULL;
+ doubleComplex *pDwork = NULL;
+
+
+ double *pRwork = NULL;
+
+
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+
+ iWork = max(2*columns2, min(lines2, columns2) + max(2 * min(lines2, columns2), max(lines2 + 1, min(lines2, columns2) + lines1)));
+
+
+
+ /* Array allocations*/
+
+
+ pAf = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) lines1 *(unsigned int)columns1);
+ pXb = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) max(lines1,columns1) *(unsigned int) columns2);
+
+
+ pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns1);
+ pJpvt = (int*)malloc(sizeof(int) * (unsigned int)columns1);
+ pRwork = (double*)malloc(sizeof(double) * (unsigned int)columns1*2);
+
+
+ cNorm = '1';
+ pDwork = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = C2F(zlange)(&cNorm, &lines1, &columns1, in1, &lines1, pDwork);
+
+ if(lines1 == columns1)
+ {
+ cNorm = 'F';
+ C2F(zlacpy)(&cNorm, &columns1, &columns1, in1, &columns1, pAf, &columns1);
+
+ C2F(zlacpy)(&cNorm, &columns1, &columns2, in2, &columns1, pXb, &columns1);
+ C2F(zgetrf)(&columns1, &columns1, pAf, &columns1, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(zgecon)(&cNorm, &columns1, pAf, &columns1, &dblAnorm, &dblRcond, pDwork, pRwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(zgetrs)(&cNorm, &columns1, &columns2, pAf, &columns1, pIpiv, pXb, &columns1, &iInfo);
+ cNorm = 'F';
+ C2F(zlacpy)(&cNorm, &columns1, &columns2, pXb, &columns1, out, &columns1);
+
+ iExit = 1;
+ }
+
+ }
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines1, columns1);
+ C2F(zlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int)columns1);
+ C2F(zgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
+ pJpvt, &dblRcond, &iRank, pDwork, &iWork, pRwork, &iInfo);
+
+
+ if(iInfo == 0)
+ {
+
+ cNorm = 'F';
+ C2F(zlacpy)(&cNorm, &columns1, &columns2, pXb, &iMax, out, &columns1);
+
+ }
+ }
+
+
+
+
+
+ free(pAf);
+ free(pXb);
+ free(pIpiv);
+ free(pJpvt);
+ free(pRwork);
+ free(pDwork);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/division/zrdivdzv.c b/2.3-1/src/c/matrixOperations/division/zrdivdzv.c
new file mode 100644
index 00000000..eb17a8b9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/zrdivdzv.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "matrixDivision.h"
+
+doubleComplex zrdivdzv (double* in1, doubleComplex* in2, int size)
+ {
+ double* ZEROS = (double *) malloc((unsigned int)(size*sizeof(double)));
+ dzerosa(ZEROS,size , 1);
+
+ return zrdivv(DoubleComplexMatrix(in1,ZEROS,size), in2 , size );
+ }
diff --git a/2.3-1/src/c/matrixOperations/division/zrdivma.c b/2.3-1/src/c/matrixOperations/division/zrdivma.c
new file mode 100644
index 00000000..73e69f4c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/zrdivma.c
@@ -0,0 +1,165 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+#include "matrixDivision.h"
+
+void zrdivma( doubleComplex* in1, int lines1, int columns1 ,
+ doubleComplex* in2, int lines2, int columns2 ,
+ doubleComplex* out )
+{
+
+ char cNorm = 0;
+ int iExit = 0;
+
+ /*temporary variables*/
+ int iWork = 0;
+ int iInfo = 0;
+ int iMax = 0;
+ double dblRcond = 0;
+
+ double dblEps = 0;
+ double dblAnorm = 0;
+
+
+ doubleComplex *poAf = NULL;
+ doubleComplex *poAt = NULL;
+ doubleComplex *poBt = NULL;
+ doubleComplex *poDwork = NULL;
+
+ int *pRank = NULL;
+ int *pIpiv = NULL;
+ int *pJpvt = NULL;
+ double *pRwork = NULL;
+
+ iWork = max(2*columns2, min(lines2, columns2) + max(2 * min(lines2, columns2), max(lines2 + 1, min(lines2, columns2) + lines1)));
+
+
+
+ /* Array allocations*/
+
+
+ poAf = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) lines2 *(unsigned int) columns2);
+ poAt = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)lines2 *(unsigned int) columns2);
+ poBt = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) max(lines2, columns2) *(unsigned int) lines1);
+
+ pRank = (int*)malloc(sizeof(int));
+ pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns2);
+ pJpvt = (int*)malloc(sizeof(int) *(unsigned int) lines2);
+ pRwork = (double*)malloc(sizeof(double) * 2 *(unsigned int) lines2);
+
+
+
+ cNorm = '1';
+ poDwork = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) iWork);
+ dblEps = getRelativeMachinePrecision() ;
+ dblAnorm = C2F(zlange)(&cNorm, &lines2, &columns2, in2, &lines2, poDwork);
+
+ /* hermitian tranpose A (transpose + conjugate )*/
+
+ ztransposea(in2, lines2, columns2, poAt);
+ zconja ( poAt , lines2*columns2 , poAt );
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines1 ; j++)
+ {
+ for(i = 0 ; i < columns2 ; i++)
+ {
+ ij = i + j * max(lines2, columns2);
+ ji = j + i * lines1;
+
+ poBt[ij] = DoubleComplex (zreals ( in1[ji] ) , - zimags ( in1[ji] ) );
+ }
+ }
+ }
+
+ if(lines2 == columns2)
+ {
+ cNorm = 'F';
+ C2F(zlacpy)(&cNorm, &columns2, &columns2, poAt, &columns1, poAf, &columns2);
+ C2F(zgetrf)(&columns2, &columns2, poAf, &columns2, pIpiv, &iInfo);
+ if(iInfo == 0)
+ {
+ cNorm = '1';
+ C2F(zgecon)(&cNorm, &columns2, poAf, &columns2, &dblAnorm,
+ &dblRcond, poDwork, pRwork, &iInfo);
+ if(dblRcond > sqrt(dblEps))
+ {
+ cNorm = 'N';
+ C2F(zgetrs)(&cNorm, &columns2, &lines1, poAf, &columns2, pIpiv, poBt, &columns2, &iInfo);
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = DoubleComplex ( zreals( poBt[ji]) , -zimags ( poBt[ji]));
+
+ }
+ }
+ }
+
+ iExit = 1;
+ }
+ }
+
+ }
+
+ if(iExit == 0)
+ {
+ dblRcond = sqrt(dblEps);
+ cNorm = 'F';
+ iMax = max(lines2, columns2);
+
+ memset(pJpvt, 0x00,(unsigned int) sizeof(int) *(unsigned int) lines2);
+ C2F(zgelsy)(&columns2, &lines2, &lines1, poAt, &columns2, poBt, &iMax,
+ pJpvt, &dblRcond, &pRank[0], poDwork, &iWork, pRwork, &iInfo);
+
+ if(iInfo == 0)
+ {
+
+ /*// TransposeRealMatrix(pBt, lines1, lines2, _pdblRealOut, Max(lines1,columns1), lines2);
+
+ //Mega caca de la mort qui tue des ours a mains nues
+ //mais je ne sais pas comment le rendre "beau" :(*/
+ {
+ int i,j,ij,ji;
+ for(j = 0 ; j < lines2 ; j++)
+ {
+ for(i = 0 ; i < lines1 ; i++)
+ {
+ ij = i + j * lines1;
+ ji = j + i * max(lines2, columns2);
+ out[ij] = DoubleComplex ( zreals( poBt[ji]) , -zimags ( poBt[ji]));
+ }
+ }
+ }
+ }
+ }
+
+
+
+ free(poAf);
+ free(poAt);
+ free(poBt);
+ free(pRank);
+ free(pIpiv);
+ free(pJpvt);
+ free(pRwork);
+ free(poDwork);
+
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/division/zrdivv.c b/2.3-1/src/c/matrixOperations/division/zrdivv.c
new file mode 100644
index 00000000..f06abc4b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/zrdivv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 "division.h"
+#include "matrixDivision.h"
+
+doubleComplex zrdivv(doubleComplex *in1, doubleComplex *in2, int size){
+
+ doubleComplex out[1] ={ DoubleComplex (0.0 , 0.0) };
+ zrdivma ( in1,1 ,size ,in2 , 1 , size , out );
+
+ return out[0] ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/division/zrdivzdv.c b/2.3-1/src/c/matrixOperations/division/zrdivzdv.c
new file mode 100644
index 00000000..9a0e2838
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/division/zrdivzdv.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "matrixDivision.h"
+
+doubleComplex zrdivzdv (doubleComplex* in1,double* in2, int size)
+ {
+ double* ZEROS = (double *) malloc((unsigned int)(size*sizeof(double)));
+ dzerosa(ZEROS,size , 1);
+
+ return zrdivv(in1 , DoubleComplexMatrix(in2,ZEROS,size),size );
+ }
diff --git a/2.3-1/src/c/matrixOperations/expm/Makefile.am b/2.3-1/src/c/matrixOperations/expm/Makefile.am
new file mode 100644
index 00000000..682a2505
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/Makefile.am
@@ -0,0 +1,79 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixExponential_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixExponential.la
+
+HEAD = ../includes/matrixExponential.h
+
+libMatrixExponential_la_SOURCES = $(HEAD) \
+ dexpma.c \
+ zexpma.c \
+ sexpma.c \
+ cexpma.c
+
+
+check_PROGRAMS = testMatrixExponential
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/division/libMatrixDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la \
+ $(top_builddir)/src/c/matrixOperations/eye/libMatrixEye.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ libMatrixExponential.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+
+testMatrixExponential_SOURCES = testMatrixExponential.c
+testMatrixExponential_LDADD = $(check_LDADD)
+testMatrixExponential_CFLAGS = $(check_INCLUDES)
+
+
+TESTS = testMatrixExponential
diff --git a/2.3-1/src/c/matrixOperations/expm/Makefile.in b/2.3-1/src/c/matrixOperations/expm/Makefile.in
new file mode 100644
index 00000000..5bbe3312
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/Makefile.in
@@ -0,0 +1,753 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixExponential$(EXEEXT)
+TESTS = testMatrixExponential$(EXEEXT)
+subdir = src/c/matrixOperations/expm
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixExponential_la_LIBADD =
+am__objects_1 =
+am_libMatrixExponential_la_OBJECTS = $(am__objects_1) \
+ libMatrixExponential_la-dexpma.lo \
+ libMatrixExponential_la-zexpma.lo \
+ libMatrixExponential_la-sexpma.lo \
+ libMatrixExponential_la-cexpma.lo
+libMatrixExponential_la_OBJECTS = \
+ $(am_libMatrixExponential_la_OBJECTS)
+libMatrixExponential_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixExponential_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testMatrixExponential_OBJECTS = \
+ testMatrixExponential-testMatrixExponential.$(OBJEXT)
+testMatrixExponential_OBJECTS = $(am_testMatrixExponential_OBJECTS)
+testMatrixExponential_DEPENDENCIES = $(check_LDADD)
+testMatrixExponential_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMatrixExponential_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixExponential_la_SOURCES) \
+ $(testMatrixExponential_SOURCES)
+DIST_SOURCES = $(libMatrixExponential_la_SOURCES) \
+ $(testMatrixExponential_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixExponential_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixExponential.la
+HEAD = ../includes/matrixExponential.h
+libMatrixExponential_la_SOURCES = $(HEAD) \
+ dexpma.c \
+ zexpma.c \
+ sexpma.c \
+ cexpma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/division/libMatrixDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la \
+ $(top_builddir)/src/c/matrixOperations/eye/libMatrixEye.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ libMatrixExponential.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testMatrixExponential_SOURCES = testMatrixExponential.c
+testMatrixExponential_LDADD = $(check_LDADD)
+testMatrixExponential_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/expm/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/expm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixExponential.la: $(libMatrixExponential_la_OBJECTS) $(libMatrixExponential_la_DEPENDENCIES)
+ $(libMatrixExponential_la_LINK) -rpath $(pkglibdir) $(libMatrixExponential_la_OBJECTS) $(libMatrixExponential_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixExponential$(EXEEXT): $(testMatrixExponential_OBJECTS) $(testMatrixExponential_DEPENDENCIES)
+ @rm -f testMatrixExponential$(EXEEXT)
+ $(testMatrixExponential_LINK) $(testMatrixExponential_OBJECTS) $(testMatrixExponential_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixExponential_la-cexpma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixExponential_la-dexpma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixExponential_la-sexpma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixExponential_la-zexpma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixExponential-testMatrixExponential.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixExponential_la-dexpma.lo: dexpma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -MT libMatrixExponential_la-dexpma.lo -MD -MP -MF $(DEPDIR)/libMatrixExponential_la-dexpma.Tpo -c -o libMatrixExponential_la-dexpma.lo `test -f 'dexpma.c' || echo '$(srcdir)/'`dexpma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixExponential_la-dexpma.Tpo $(DEPDIR)/libMatrixExponential_la-dexpma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dexpma.c' object='libMatrixExponential_la-dexpma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -c -o libMatrixExponential_la-dexpma.lo `test -f 'dexpma.c' || echo '$(srcdir)/'`dexpma.c
+
+libMatrixExponential_la-zexpma.lo: zexpma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -MT libMatrixExponential_la-zexpma.lo -MD -MP -MF $(DEPDIR)/libMatrixExponential_la-zexpma.Tpo -c -o libMatrixExponential_la-zexpma.lo `test -f 'zexpma.c' || echo '$(srcdir)/'`zexpma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixExponential_la-zexpma.Tpo $(DEPDIR)/libMatrixExponential_la-zexpma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zexpma.c' object='libMatrixExponential_la-zexpma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -c -o libMatrixExponential_la-zexpma.lo `test -f 'zexpma.c' || echo '$(srcdir)/'`zexpma.c
+
+libMatrixExponential_la-sexpma.lo: sexpma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -MT libMatrixExponential_la-sexpma.lo -MD -MP -MF $(DEPDIR)/libMatrixExponential_la-sexpma.Tpo -c -o libMatrixExponential_la-sexpma.lo `test -f 'sexpma.c' || echo '$(srcdir)/'`sexpma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixExponential_la-sexpma.Tpo $(DEPDIR)/libMatrixExponential_la-sexpma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sexpma.c' object='libMatrixExponential_la-sexpma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -c -o libMatrixExponential_la-sexpma.lo `test -f 'sexpma.c' || echo '$(srcdir)/'`sexpma.c
+
+libMatrixExponential_la-cexpma.lo: cexpma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -MT libMatrixExponential_la-cexpma.lo -MD -MP -MF $(DEPDIR)/libMatrixExponential_la-cexpma.Tpo -c -o libMatrixExponential_la-cexpma.lo `test -f 'cexpma.c' || echo '$(srcdir)/'`cexpma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixExponential_la-cexpma.Tpo $(DEPDIR)/libMatrixExponential_la-cexpma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cexpma.c' object='libMatrixExponential_la-cexpma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixExponential_la_CFLAGS) $(CFLAGS) -c -o libMatrixExponential_la-cexpma.lo `test -f 'cexpma.c' || echo '$(srcdir)/'`cexpma.c
+
+testMatrixExponential-testMatrixExponential.o: testMatrixExponential.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixExponential_CFLAGS) $(CFLAGS) -MT testMatrixExponential-testMatrixExponential.o -MD -MP -MF $(DEPDIR)/testMatrixExponential-testMatrixExponential.Tpo -c -o testMatrixExponential-testMatrixExponential.o `test -f 'testMatrixExponential.c' || echo '$(srcdir)/'`testMatrixExponential.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixExponential-testMatrixExponential.Tpo $(DEPDIR)/testMatrixExponential-testMatrixExponential.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixExponential.c' object='testMatrixExponential-testMatrixExponential.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixExponential_CFLAGS) $(CFLAGS) -c -o testMatrixExponential-testMatrixExponential.o `test -f 'testMatrixExponential.c' || echo '$(srcdir)/'`testMatrixExponential.c
+
+testMatrixExponential-testMatrixExponential.obj: testMatrixExponential.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixExponential_CFLAGS) $(CFLAGS) -MT testMatrixExponential-testMatrixExponential.obj -MD -MP -MF $(DEPDIR)/testMatrixExponential-testMatrixExponential.Tpo -c -o testMatrixExponential-testMatrixExponential.obj `if test -f 'testMatrixExponential.c'; then $(CYGPATH_W) 'testMatrixExponential.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixExponential.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixExponential-testMatrixExponential.Tpo $(DEPDIR)/testMatrixExponential-testMatrixExponential.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixExponential.c' object='testMatrixExponential-testMatrixExponential.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixExponential_CFLAGS) $(CFLAGS) -c -o testMatrixExponential-testMatrixExponential.obj `if test -f 'testMatrixExponential.c'; then $(CYGPATH_W) 'testMatrixExponential.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixExponential.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/expm/cexpma.c b/2.3-1/src/c/matrixOperations/expm/cexpma.c
new file mode 100644
index 00000000..7da0fc70
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/cexpma.c
@@ -0,0 +1,173 @@
+/* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixExponential.h"
+
+void cexpma(floatComplex * in, floatComplex * out, int _iLeadDim)
+{
+ int iIndex1 = 0;
+ int iMax = 0;
+ int iFlag = 0;
+ int iLoop1 = 0;
+ int iSquare = 0;
+
+
+ float fltExp = 0;
+ float fltS = 0;
+ float fltS2 = 0;
+ double fltCst = 0.5;
+
+
+
+ floatComplex *pfltMatrixA = NULL;
+ floatComplex *pfltMatrixX = NULL;
+ floatComplex *pfltMatrixD = NULL;
+ floatComplex *pfltMatrixcX = NULL;
+ floatComplex *pfltMatrixcA = NULL;
+ floatComplex *pfltMatrixEye = NULL;
+ floatComplex *pfltMatrixTemp = NULL;
+ floatComplex *pfltMatrixTemp2 = NULL;
+
+
+
+
+ iSquare = _iLeadDim * _iLeadDim;
+
+ pfltMatrixA = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixX = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixD = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixcX = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixcA = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixEye = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixTemp = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+ pfltMatrixTemp2 = (floatComplex*)malloc(sizeof(floatComplex) * (unsigned int) iSquare);
+
+
+ /*// Scale A by power of 2 so that its norm is < 1/2 .*/
+ sfrexps( cinfnorma( in, _iLeadDim, _iLeadDim) , &fltExp);
+ fltS = max(0, fltExp + 1);
+ fltS2 = spows(2.0f, fltS);
+
+ /*A = A./2^s */
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixA[iIndex1] = crdivs ( in[iIndex1] , FloatComplex ( fltS2 , 0 ));
+
+
+ /* Pade approximation for exp(A)
+ //X = A */
+ /*C2F(zcopy)(&iSquare, pfltMatrixA, &iOne, pfltMatrixX, &iOne );*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixX[iIndex1] = pfltMatrixA[iIndex1] ;
+
+
+ ceyea(pfltMatrixEye, _iLeadDim, _iLeadDim);
+
+ /*cmulma ( & cfltCst , 1 ,1,
+ pfltMatrixA , _iLeadDim, _iLeadDim,
+ pfltMatrixcA);*/
+
+ /* cA = A * c */
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixcA[iIndex1] = cmuls ( pfltMatrixA[iIndex1] , FloatComplex((float) fltCst , 0) ) ;
+
+ /*E = Eye + cA*/
+
+ cadda (pfltMatrixEye , iSquare, pfltMatrixcA ,iSquare, out ) ;
+
+ /* D = Eye - cA */
+
+ cdiffa (pfltMatrixEye , iSquare, pfltMatrixcA ,iSquare,pfltMatrixD ) ;
+
+ iMax = 6;
+ iFlag = 1;
+
+ for(iLoop1 = 2 ; iLoop1 <= iMax ; iLoop1++)
+ {
+ fltCst = fltCst * (iMax - iLoop1 + 1 ) / (iLoop1 * (2 * iMax - iLoop1 + 1));
+
+ /*Temp = X */
+ /*C2F(zcopy)(&iSquare, pfltMatrixX, &iOne, pfltMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixTemp[iIndex1] = pfltMatrixX[iIndex1] ;
+ /* X = A * Temp; */
+
+ cmulma ( pfltMatrixA , _iLeadDim , _iLeadDim,
+ pfltMatrixTemp , _iLeadDim , _iLeadDim,
+ pfltMatrixX );
+ /* cX = c * X */
+
+ /* cmulma ( & cfltCst , 1 ,1,
+ pfltMatrixX , _iLeadDim, _iLeadDim,
+ pfltMatrixcX);*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixcX[iIndex1] = cmuls ( pfltMatrixX[iIndex1] , FloatComplex((float) fltCst , 0) ) ;
+
+ /* E = E + cX */
+
+ cadda ( out, iSquare , pfltMatrixcX , iSquare , out ) ;
+
+ if(iFlag == 1) /* D = D + cX */
+ {
+ cadda ( pfltMatrixD, iSquare , pfltMatrixcX , iSquare , pfltMatrixD ) ;
+ }
+ else /* D = D - cX */
+ {
+ cdiffa ( pfltMatrixD, iSquare , pfltMatrixcX , iSquare , pfltMatrixD );
+ }
+
+ /* Toggle iFlag */
+ iFlag = !iFlag;
+ }
+
+ /* Temp = E */
+ /*C2F(zcopy)(&iSquare, out, &iOne, pfltMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixTemp[iIndex1] = out[iIndex1] ;
+
+ /* E = D\E */
+ cldivma ( pfltMatrixD , _iLeadDim , _iLeadDim , pfltMatrixTemp , _iLeadDim , _iLeadDim , out ) ;
+
+ /*/ Undo scaling by repeated squaring */
+ for(iLoop1 = 0 ; iLoop1 < fltS ; iLoop1++)
+ {
+ /*//Temp = E */
+ /*//Temp2 = E */
+
+ /*C2F(zcopy)(&iSquare, out, &iOne, pfltMatrixTemp, &iOne);
+ C2F(zcopy)(&iSquare, out, &iOne, pfltMatrixTemp2, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ {
+ pfltMatrixTemp [iIndex1] = out[iIndex1] ;
+ pfltMatrixTemp2[iIndex1] = out[iIndex1] ;
+ }
+
+ /* E = E*E*/
+ cmulma ( pfltMatrixTemp , _iLeadDim , _iLeadDim,
+ pfltMatrixTemp2 , _iLeadDim , _iLeadDim,
+ out );
+
+ }
+
+ free(pfltMatrixA);
+ free(pfltMatrixX);
+ free(pfltMatrixD);
+ free(pfltMatrixcX);
+ free(pfltMatrixcA);
+ free(pfltMatrixEye);
+ free(pfltMatrixTemp);
+ free(pfltMatrixTemp2);
+
+
+
+ return ;
+}
diff --git a/2.3-1/src/c/matrixOperations/expm/dexpma.c b/2.3-1/src/c/matrixOperations/expm/dexpma.c
new file mode 100644
index 00000000..d9b42327
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/dexpma.c
@@ -0,0 +1,163 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixExponential.h"
+
+void dexpma (double* in, double* out, int _iLeadDim){
+
+ int iIndex1 = 0;
+ int iMax = 0;
+ int iFlag = 0;
+ int iLoop1 = 0;
+ int iSquare = 0;
+
+
+ double dblExp = 0;
+ double dblS = 0;
+ double dblS2 = 0;
+ double dblCst = 0.5;
+
+ double *pdblMatrixA = NULL;/*A'*/
+ double *pdblMatrixX = NULL;/*X*/
+ double *pdblMatrixD = NULL;/*D*/
+ double *pdblMatrixcX = NULL;/*cX*/
+ double *pdblMatrixcA = NULL;/*cX*/
+ double *pdblMatrixEye = NULL;/*Eye*/
+ double *pdblMatrixTemp = NULL;/*Temp*/
+ double *pdblMatrixTemp2 = NULL;/*Temp2*/
+
+
+
+ iSquare = _iLeadDim * _iLeadDim;
+
+ pdblMatrixA = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixX = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixD = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixcX = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixcA = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixEye = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixTemp = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+ pdblMatrixTemp2 = (double*)malloc(sizeof(double) *(unsigned int) iSquare);
+
+
+
+ /* Scale A by power of 2 so that its norm is < 1/2 .*/
+ dfrexps( dinfnorma( in, _iLeadDim, _iLeadDim), &dblExp);
+ dblS = max(0, dblExp + 1);
+ dblS2 = dpows(2, dblS);
+
+ /*A = A./2^s*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixA[iIndex1] = in[iIndex1] / dblS2 ;
+
+ /* Pade approximation for exp(A)*/
+ /*X = A */
+ /*C2F(dcopy)(&iSquare, pdblMatrixA, &iOne, pdblMatrixX, &iOne );*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixX[iIndex1] = pdblMatrixA[iIndex1] ;
+
+ deyea(pdblMatrixEye, _iLeadDim, _iLeadDim);
+
+
+ /*cA = A * c*/
+
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixcA[iIndex1] = pdblMatrixA[iIndex1] * dblCst ;
+
+
+ /*E = Eye + cA*/
+ dadda (pdblMatrixEye , iSquare, pdblMatrixcA ,iSquare, out ) ;
+
+ /*D = Eye - cA*/
+ ddiffa (pdblMatrixEye , iSquare, pdblMatrixcA ,iSquare,pdblMatrixD ) ;
+
+ iMax = 6;
+ iFlag = 1;
+
+ for(iLoop1 = 2 ; iLoop1 <= iMax ; iLoop1++)
+ {
+ dblCst = dblCst * (iMax - iLoop1 + 1 ) / (iLoop1 * (2 * iMax - iLoop1 + 1));
+
+ /*Temp = X*/
+ /*C2F(dcopy)(&iSquare, pdblMatrixX, &iOne, pdblMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixTemp[iIndex1] = pdblMatrixX[iIndex1] ;
+ /*X = A * Temp;*/
+
+ dmulma ( pdblMatrixA , _iLeadDim , _iLeadDim,
+ pdblMatrixTemp , _iLeadDim , _iLeadDim,
+ pdblMatrixX );
+
+ /*cX = c * X*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixcX[iIndex1] = pdblMatrixX[iIndex1] * dblCst ;
+
+ /*E = E + cX*/
+ dadda ( out, iSquare , pdblMatrixcX , iSquare , out ) ;
+
+ if(iFlag == 1) /*D = D + cX*/
+ {
+ dadda ( pdblMatrixD, iSquare , pdblMatrixcX , iSquare , pdblMatrixD ) ;
+ }
+ else /*D = D - cX*/
+ {
+ ddiffa ( pdblMatrixD, iSquare , pdblMatrixcX , iSquare , pdblMatrixD );
+ }
+
+ /*Toggle iFlag*/
+ iFlag = !iFlag;
+ }
+
+ /*Temp = E*/
+ /*C2F(dcopy)(&iSquare, out, &iOne, pdblMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixTemp[iIndex1] = out[iIndex1] ;
+
+ /*E = D\E*/
+ dldivma ( pdblMatrixD , _iLeadDim , _iLeadDim , pdblMatrixTemp , _iLeadDim , _iLeadDim , out );
+
+ /* Undo scaling by repeated squaring*/
+ for(iLoop1 = 0 ; iLoop1 < dblS ; iLoop1++)
+ {
+ /*Temp = E*/
+ /*Temp2 = E*/
+ /*C2F(dcopy)(&iSquare, out, &iOne, pdblMatrixTemp, &iOne);
+ C2F(dcopy)(&iSquare, out, &iOne, pdblMatrixTemp2, &iOne);*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ {
+ pdblMatrixTemp [iIndex1] = out[iIndex1] ;
+ pdblMatrixTemp2[iIndex1] = out[iIndex1] ;
+ }
+ /* E = E*E*/
+ dmulma ( pdblMatrixTemp , _iLeadDim , _iLeadDim,
+ pdblMatrixTemp2 , _iLeadDim , _iLeadDim,
+ out );
+ }
+
+ free(pdblMatrixA);
+ free(pdblMatrixX);
+ free(pdblMatrixD);
+ free(pdblMatrixcX);
+ free(pdblMatrixcA);
+ free(pdblMatrixEye);
+ free(pdblMatrixTemp);
+ free(pdblMatrixTemp2);
+
+
+
+ return ;
+}
diff --git a/2.3-1/src/c/matrixOperations/expm/sexpma.c b/2.3-1/src/c/matrixOperations/expm/sexpma.c
new file mode 100644
index 00000000..cd969981
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/sexpma.c
@@ -0,0 +1,167 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixExponential.h"
+
+void sexpma (float* in, float* out, int _iLeadDim){
+
+ int iIndex1 = 0;
+ int iMax = 0;
+ int iFlag = 0;
+ int iLoop1 = 0;
+ int iSquare = 0;
+
+
+ float fltExp = 0;
+ float fltS = 0;
+ float fltS2 = 0;
+ float fltCst = 0.5f;
+ double dblCst = 0.5;
+
+ float *pfltMatrixA = NULL;/*A'*/
+ float *pfltMatrixX = NULL;/*X*/
+ float *pfltMatrixD = NULL;/*D*/
+ float *pfltMatrixcX = NULL;/*cX*/
+ float *pfltMatrixcA = NULL;/*cX*/
+ float *pfltMatrixEye = NULL;/*Eye*/
+ float *pfltMatrixTemp = NULL;/*Temp*/
+ float *pfltMatrixTemp2 = NULL;/*Temp2*/
+
+
+
+ iSquare = _iLeadDim * _iLeadDim;
+
+ pfltMatrixA = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixX = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixD = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixcX = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixcA = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixEye = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixTemp = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+ pfltMatrixTemp2 = (float*)malloc(sizeof(float) *(unsigned int) iSquare);
+
+
+
+ /* Scale A by power of 2 so that its norm is < 1/2 .*/
+ sfrexps( sinfnorma( in, _iLeadDim, _iLeadDim), &fltExp);
+ fltS = max(0, fltExp + 1);
+ fltS2 = spows(2, fltS);
+
+ /*A = A./2^s*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixA[iIndex1] = in[iIndex1] / fltS2;
+
+ /* Pade approximation for exp(A)*/
+ /*X = A */
+ /*C2F(dcopy)(&iSquare, pfltMatrixA, &iOne, pfltMatrixX, &iOne );*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixX[iIndex1] = pfltMatrixA[iIndex1] ;
+
+ seyea(pfltMatrixEye, _iLeadDim, _iLeadDim);
+
+
+ /*cA = A * c*/
+
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixcA[iIndex1] = pfltMatrixA[iIndex1] * fltCst ;
+
+
+ /*E = Eye + cA*/
+ sadda (pfltMatrixEye , iSquare, pfltMatrixcA ,iSquare, out ) ;
+
+ /*D = Eye - cA*/
+ sdiffa (pfltMatrixEye , iSquare, pfltMatrixcA ,iSquare,pfltMatrixD ) ;
+
+ iMax = 6;
+ iFlag = 1;
+
+ for(iLoop1 = 2 ; iLoop1 <= iMax ; iLoop1++)
+ {
+
+
+ dblCst = dblCst * (iMax - iLoop1 + 1 ) / (iLoop1 * (2 * iMax - iLoop1 + 1));
+
+ dblCst += 0 ;
+ /*Temp = X*/
+ /*C2F(dcopy)(&iSquare, pfltMatrixX, &iOne, pfltMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixTemp[iIndex1] = pfltMatrixX[iIndex1] ;
+ /*X = A * Temp;*/
+
+ smulma ( pfltMatrixA , _iLeadDim , _iLeadDim,
+ pfltMatrixTemp , _iLeadDim , _iLeadDim,
+ pfltMatrixX );
+
+ /*cX = c * X*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixcX[iIndex1] = pfltMatrixX[iIndex1] * (float) dblCst ;
+
+ /*E = E + cX*/
+ sadda ( out, iSquare , pfltMatrixcX , iSquare , out ) ;
+
+ if(iFlag == 1) /*D = D + cX*/
+ {
+ sadda ( pfltMatrixD, iSquare , pfltMatrixcX , iSquare , pfltMatrixD ) ;
+ }
+ else /*D = D - cX*/
+ {
+ sdiffa ( pfltMatrixD, iSquare , pfltMatrixcX , iSquare , pfltMatrixD );
+ }
+
+ /*Toggle iFlag*/
+ iFlag = !iFlag;
+ }
+
+ /*Temp = E*/
+ /*C2F(dcopy)(&iSquare, out, &iOne, pfltMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pfltMatrixTemp[iIndex1] = out[iIndex1] ;
+
+ /*E = D\E*/
+ sldivma ( pfltMatrixD , _iLeadDim , _iLeadDim , pfltMatrixTemp , _iLeadDim , _iLeadDim , out );
+
+ /* Undo scaling by repeated squaring*/
+ for(iLoop1 = 0 ; iLoop1 < fltS ; iLoop1++)
+ {
+ /*Temp = E*/
+ /*Temp2 = E*/
+ /*C2F(dcopy)(&iSquare, out, &iOne, pfltMatrixTemp, &iOne);
+ C2F(dcopy)(&iSquare, out, &iOne, pfltMatrixTemp2, &iOne);*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ {
+ pfltMatrixTemp [iIndex1] = out[iIndex1] ;
+ pfltMatrixTemp2[iIndex1] = out[iIndex1] ;
+ }
+ /* E = E*E*/
+ smulma ( pfltMatrixTemp , _iLeadDim , _iLeadDim,
+ pfltMatrixTemp2 , _iLeadDim , _iLeadDim,
+ out );
+ }
+
+ free(pfltMatrixA);
+ free(pfltMatrixX);
+ free(pfltMatrixD);
+ free(pfltMatrixcX);
+ free(pfltMatrixcA);
+ free(pfltMatrixEye);
+ free(pfltMatrixTemp);
+ free(pfltMatrixTemp2);
+
+
+
+ return ;
+}
diff --git a/2.3-1/src/c/matrixOperations/expm/testMatrixExponential.c b/2.3-1/src/c/matrixOperations/expm/testMatrixExponential.c
new file mode 100644
index 00000000..278c36c8
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/testMatrixExponential.c
@@ -0,0 +1,570 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include "matrixExponential.h"
+
+
+#define LEADDIM 10
+
+#define DMATRIX_IN {0.15869047446176410,0.80895681912079453,0.72621259605512023,0.18993748771026731,\
+ 0.43964602379128337,0.37921421090140939,0.95195201179012656,0.59145097108557820,\
+ 0.70597065938636661,0.62873698258772492,\
+0.62407150492072105,0.68317985069006681,0.70999773032963276,0.25839814636856318,\
+ 0.65407369285821915,0.76687160786241293,0.71278580836951733,0.68067426700145006,\
+ 0.70181696489453316,0.28785153012722731,\
+0.63760355720296502,0.03401931514963508,0.47457459988072515,0.09878737432882190,\
+ 0.58781063789501786,0.60066213225945830,0.11923700617626309,0.07392961112782359,\
+ 0.40879997471347451,0.3292048736475408,\
+0.42704886104911566,0.23805456422269344,0.9438692079856992,0.06199027225375175,\
+ 0.60208318661898375,0.78567356057465076,0.50091631803661585,0.94336947053670883,\
+ 0.06362213846296072,0.47192330472171307,\
+0.10716815060004592,0.94920115964487195,0.14596485672518611,0.04034968325868249,\
+ 0.04535020282492042,0.73871155502274632,0.32900535268709064,0.12863306934013963,\
+ 0.06573933875188231,0.33537696348503232,\
+0.23822965659201145,0.21827886346727610,0.07141010463237762,0.74001471605151892,\
+ 0.20294443331658840,0.55442603398114443,0.48089468106627464,0.20190807711333036,\
+ 0.53310041315853596,0.55530697200447321,\
+0.94629473658278584,0.61546878470107913,0.67337385797873139,0.61626600986346602,\
+ 0.78442738251760602,0.99291495559737086,0.33036959776654840,0.19693034281954169,\
+ 0.03315818728879094,0.11960808141157031,\
+0.45766852516680956,0.83135433867573738,0.65369247179478407,0.6583583448082209,\
+ 0.26375361625105143,0.97574284672737122,0.63044753577560186,0.89286901615560055,\
+ 0.31578356493264437,0.76139996573328972,\
+0.89644787041470408,0.77340125897899270,0.19968961318954825,0.25145971449092031,\
+ 0.43832763982936740,0.37096222722902894,0.21171907847747207,0.46179189579561353,\
+ 0.37858232436701655,0.47909884760156274,\
+0.44384705275297165,0.4244190966710448,0.60141251794993877,0.38433500844985247,\
+ 0.86648589745163918,0.30322382133454084,0.44860231317579746,0.62512917164713144,\
+ 0.46195234358310699,0.28169692959636450}
+
+#define DMATRIX_RESULT {14.6458099031118518,15.9879935334969154,14.5023146230340352,9.79104027026660262,\
+ 13.658147977601745,18.2826677794023276,13.9913488019182726,13.0555850244756648,\
+ 11.2702097163264696,12.2080852641231488,\
+14.9576657268129818,18.0415870145381838,15.4577532112657572,10.6060207869925502,\
+ 14.6987916130120198,19.9917861348452170,14.8484467294549827,14.0994958596124,\
+ 12.1294313366477713,12.8836800651605152,\
+7.72729140087719646,8.27571528291814396,8.78222511899259928,5.22537042408334251,\
+ 7.61718988429527233,10.1106593547443495,7.22727291477849576,6.72646688774223733,\
+ 6.21430065514425589,6.69442204331610213,\
+11.8618893865302528,13.2731189359057637,12.8373872935372706,9.52692469532374631,\
+ 11.9056327368823247,16.3654355264039921,11.8674243780595265,11.7206072002431814,\
+ 9.24712051368910970,10.6966525674175159,\
+7.25089971320127891,8.98673751651268127,7.49831172728240691,5.29368504368777693,\
+ 8.12154956830077346,10.3089262075282218,7.4337348502224856,6.83888206810676191,\
+ 5.87125977419815737,6.5321378683758375,\
+9.25854069422946502,10.4059421461299539,9.47515410794143342,7.263789985253827,\
+ 9.16034813421007321,13.6353552693330933,9.3726649654333336,8.83558176180042132,\
+ 7.6055387753197277,8.4871270614444292,\
+12.6878667266786511,14.1417583108624711,13.0448499416136254,9.182764814582713,\
+ 12.4852121681423256,17.073953108953809,13.2550267101027224,11.3640159258193041,\
+ 9.6279844249894015,10.6765282334921068,\
+16.0691497196859565,18.4667994666424704,16.975871456346809,12.083598083627443,\
+ 15.7522021028722747,22.0489520587189212,16.1322911282790358,16.8044904865300744,\
+ 12.7829232118433556,14.5730443462997599,\
+11.943978463537455,13.6259118560125358,11.8068134298221956,8.21687415305816771,\
+ 11.4127920042158735,15.2296090993128281,11.3826577511842082,11.0976684273648587,\
+ 10.3857413785092909,10.2894980707345525,\
+11.5843985401712821,13.2781579371486753,12.1725305229437293,8.37850128011447204,\
+ 11.8141382209783163,15.4022074994757734,11.484608766021573,11.1535660239869383,\
+ 9.31343988645433285,11.1349864749012912}
+
+
+
+
+
+#define ZRMATRIX_IN {0.21132486546412110,0.56084860628470778,0.30760907428339124,0.50153415976092219, \
+ 0.28064980218186975,0.40948254754766822,0.38737787725403905,0.53762298030778766,\
+ 0.58787201577797532,0.64885628735646605,\
+0.75604385416954756,0.66235693730413914,0.93296162132173777,0.43685875833034515,\
+ 0.12800584640353918,0.87841258011758327,0.92228986788541079,0.11999255046248436,\
+ 0.48291792999953032,0.99231909401714802,\
+0.00022113462910056,0.72635067673400044,0.21460078610107303,0.26931248093023896,\
+ 0.77831285959109664,0.11383596854284406,0.94881842611357570,0.2256303490139544,\
+ 0.22328650346025825,0.05004197778180242,\
+0.33032709173858166,0.19851438421756029,0.31264199689030647,0.63257448654621840,\
+ 0.21190304495394230,0.19983377400785685,0.34353372454643250,0.62740930821746588,\
+ 0.84008856676518917,0.74855065811425447,\
+0.66538110421970487,0.54425731627270579,0.36163610080257058,0.40519540151581168,\
+ 0.11213546665385365,0.56186607433483005,0.37601187312975526,0.76084325974807143,\
+ 0.12059959070757031,0.41040589986369014,\
+0.62839178834110498,0.23207478970289230,0.2922266637906432,0.91847078315913677,\
+ 0.68568959552794695,0.58961773291230202,0.73409405630081892,0.04855662025511265,\
+ 0.28553641680628061,0.60845263302326202,\
+0.84974523587152362,0.23122371966019273,0.56642488157376647,0.04373343335464597,\
+ 0.15312166837975383,0.68539796629920602,0.26157614728435874,0.67239497276023030,\
+ 0.86075146449729800,0.85442108893766999,\
+0.68573101982474327,0.21646326314657927,0.48264719732105732,0.48185089323669672,\
+ 0.69708506017923355,0.89062247332185507,0.49934938363730907,0.20171726960688829,\
+ 0.84941016510128975,0.06426467280834913,\
+0.87821648130193353,0.88338878145441413,0.33217189135029912,0.26395560009405017,\
+ 0.84155184263363481,0.50422128057107329,0.26385784195736051,0.39115739194676280,\
+ 0.52570608118548989,0.82790829380974174,\
+0.06837403681129217,0.65251349471509457,0.59350947011262178,0.41481037065386772,\
+ 0.40620247554033995,0.34936154074966908,0.52535630855709314,0.83003165572881699,\
+ 0.99312098976224661,0.92623437754809856}
+
+#define ZIMATRIX_IN {0.56672112690284848,0.73956565884873271,0.02587099233642220,0.70648676296696067,\
+ 0.96770532103255391,0.42568723810836673,0.18711117887869477,0.21240556007251143,\
+ 0.69127879338338971,0.13049928424879909,\
+0.57116389367729425,0.00371731072664261,0.51744682248681784,0.52114724926650524,\
+ 0.50685344357043505,0.24615605548024178,0.01895748358219862,0.57950199581682682,\
+ 0.76568587962538004,0.96820035576820374,\
+0.81601104838773608,0.59005728596821427,0.39168732380494475,0.28704008506610990,\
+ 0.52329764096066356,0.92295324662700295,0.84335647663101554,0.26281475694850087,\
+ 0.35726496530696750,0.6561381467618048,\
+0.05689279362559319,0.3096467358991504,0.24135384149849415,0.65027950797230005,\
+ 0.5596947595477104,0.10007458087056875,0.07485948316752911,0.43609866220504045,\
+ 0.76933998242020607,0.24455389659851789,\
+0.55959366867318749,0.25522057106718421,0.50644348980858922,0.08813347620889544,\
+ 0.56173070007935166,0.46782181179150939,0.85328151332214475,0.91105451015755534,\
+ 0.54776339093223214,0.52831235667690635,\
+0.12493403162807226,0.62518793903291225,0.42361020017415285,0.44987633451819420,\
+ 0.46817600261420012,0.39504976756870747,0.01245901081711054,0.80826673656702042,\
+ 0.09622887428849936,0.84689256362617016,\
+0.72792222863063216,0.11574173765257001,0.28937275288626552,0.72272530803456903,\
+ 0.77945467224344611,0.03661171020939946,0.18675393564626575,0.81026530498638749,\
+ 0.95611717319115996,0.78766220854595304,\
+0.26777664758265018,0.61170040909200907,0.08879321813583374,0.89767962601035833,\
+ 0.79010718129575253,0.51753685344010592,0.49205840751528740,0.25904283951967955,\
+ 0.22074085660278797,0.12620826158672571,\
+0.54653349192813039,0.67839562846347690,0.62128817522898316,0.24278218811377883,\
+ 0.98085420625284314,0.83254515705630183,0.74896081397309899,0.41390872886404395,\
+ 0.01432593585923314,0.78838609857484698,\
+0.98854076582938433,0.33200952783226967,0.34549844544380903,0.43377211131155491,\
+ 0.81870661024004221,0.61048321425914764,0.94149570073932409,0.35999277792870998,\
+ 0.81914897728711367,0.34530424699187279}
+
+
+#define ZRMATRIX_RESULT {4.6052332809216896,2.16205411267794823,1.12245312965776556,4.0468190853821735,\
+ 7.29705295628955231,2.45894799152591625,2.29331674633863614,4.21571156291592253,\
+ 2.81922686558935887,2.348781949769843,\
+2.07401297354815162,1.50063692688995753,0.25219828236411757,2.7063265188290884,\
+ 6.35812780561968260,0.67264506810224134,0.79079814568186024,2.91747981321864280,\
+ 1.01032692983832129,0.75975015828076931,\
+7.04077899650083694,5.39363072316827363,4.99449464719530045,6.79878933472462954,\
+ 11.2977866849707205,5.7026161792862045,6.09443833294921244,7.35970702338152272,\
+ 6.14030297304667272,5.80227288585002476,\
+1.52422494456658053,0.15792523935350228,-0.39437456229879331,3.21063571532312331,\
+ 4.72654937095295491,0.19681048033039794,0.13926710536989889,2.4098033377935764,\
+ 1.19110231590601412,0.24431206393184518,\
+5.84910802491279558,3.67968516288822922,2.73879619563976862,5.69547375492497387,\
+ 10.2284804678743431,4.40378197582331143,3.9855513762320007,6.24858736599414133,\
+ 4.57057059205936156,4.19331143449899635,\
+2.84423960711997825,0.91341486330902766,0.32799575263405639,3.63130361353437925,\
+ 6.73358898182897025,2.44092642244158631,1.4035651670524776,3.29646069585033841,\
+ 1.63804041671370615,1.34065096546340268,\
+5.04689360696997724,2.58451417966281571,1.89915292921285772,4.62170835433455451,\
+ 9.05019265678329887,3.33670002112993291,3.66038974983755372,5.62296495186113443,\
+ 4.04432332701467434,3.48415716881126114,\
+2.99051528256943167,0.76077291642727529,0.19995186822386554,2.96972391032047955,\
+ 6.60462877127714787,1.8346028052798535,1.31621250911818244,3.73816126628208467,\
+ 1.3788533261260996,0.30973924698106181,\
+5.20595600060592734,3.44646883779368096,1.85946748567920750,5.1361216710529769,\
+ 10.0941765681228333,3.49429925842045552,3.05021742013193098,5.4348094549241184,\
+ 4.51765668386982977,3.40850797720926035,\
+4.65702831667450212,3.03706964016556746,2.06940591125521856,5.11047315752830578,\
+ 9.94379845012778674,3.3321507049026704,3.29919175160893818,5.94111235727490428,\
+ 4.22429837741492253,4.41612421969640145}
+
+#define ZIMATRIX_RESULT {-14.2670217568608670,-12.454640354285063,-11.2804810864205063,-12.2724799117031509,\
+ -14.2468231668880438,-13.7336716491454212,-13.4126704881317167,-13.2354295209306141,\
+ -15.0748008268599314,-16.4106582082002141,\
+-18.1383938627890586,-16.2500310962210612,-13.6080240801173602,-16.1094229201551187,\
+ -18.8440235801764437,-17.4411014766214336,-16.8096205594578301,-16.4844610002227725,\
+ -18.6024277051838922,-19.7565384964549153,\
+-13.6088148145822956,-12.746762149308113,-10.9388281270062464,-12.2279241359128505,\
+ -13.2072598928012983,-13.2417837783338328,-12.6472077791728861,-12.2778413042734709,\
+ -14.8521542656410972,-15.7031049148228732,\
+-13.2144981163630746,-11.2231448799035274,-9.7632306445459864,-11.1681914913523084,\
+ -13.2326349218083568,-12.3373828754640584,-11.7842111257382829,-11.8870664403988826,\
+ -13.3125999502667849,-14.6665812584015534,\
+-14.2784445192169489,-13.0211070334450945,-11.1550881344005877,-12.7744646170515193,\
+ -13.8646425595775469,-13.6955906712953759,-12.98118927813419,-12.5125330823426655,\
+ -15.2470302805889251,-16.6299797243330687,\
+-15.3135193060880574,-12.8989039623516373,-11.1097185418698405,-12.9878481756480575,\
+ -15.1819592065246791,-14.1554345301917017,-13.7019470831634962,-13.1000905274159241,\
+ -15.697504333561957,-16.4727155095115592,\
+-16.6151865381969657,-15.0301220873079888,-13.119515101239017,-14.6038902499774128,\
+ -16.5465022870658487,-16.2745681097221642,-15.5790325754692791,-14.9778105214080721,\
+ -17.5880407064706752,-18.9858728410024717,\
+-15.2244202423134851,-12.9437967685452655,-11.4320003274904263,-12.6340981883688794,\
+ -15.2648705712828949,-14.0427697860698029,-13.5757724082098221,-13.5147279252801411,\
+ -15.9307999370437052,-16.8057661616885916,\
+-18.255930649471658,-16.1956269359019345,-13.6756135725252594,-16.3611958886634667,\
+ -18.0721805983153097,-17.0517408001458151,-16.231614445430882,-16.4843630200203357,\
+ -19.7691884354979948,-20.3871124127432672,\
+-18.2105493706955421,-16.9125659016652854,-14.4302205379609418,-16.7267447227195518,\
+ -18.7135188739136353,-17.6467699531147559,-16.5820479292089722,-17.0861611432949942,\
+ -19.7638794191151916,-21.2748129090505991}
+
+#define FMATRIX_IN {0.15869047446176410f,0.80895681912079453f,0.72621259605512023f,0.18993748771026731f,\
+ 0.43964602379128337f,0.37921421090140939f,0.95195201179012656f,0.59145097108557820f,\
+ 0.70597065938636661f,0.62873698258772492f,\
+0.62407150492072105f,0.68317985069006681f,0.70999773032963276f,0.25839814636856318f,\
+ 0.65407369285821915f,0.76687160786241293f,0.71278580836951733f,0.68067426700145006f,\
+ 0.70181696489453316f,0.28785153012722731f,\
+0.63760355720296502f,0.03401931514963508f,0.47457459988072515f,0.09878737432882190f,\
+ 0.58781063789501786f,0.60066213225945830f,0.11923700617626309f,0.07392961112782359f,\
+ 0.40879997471347451f,0.3292048736475408f,\
+0.42704886104911566f,0.23805456422269344f,0.9438692079856992f,0.06199027225375175f,\
+ 0.60208318661898375f,0.78567356057465076f,0.50091631803661585f,0.94336947053670883f,\
+ 0.06362213846296072f,0.47192330472171307f,\
+0.10716815060004592f,0.94920115964487195f,0.14596485672518611f,0.04034968325868249f,\
+ 0.04535020282492042f,0.73871155502274632f,0.32900535268709064f,0.12863306934013963f,\
+ 0.06573933875188231f,0.33537696348503232f,\
+0.23822965659201145f,0.21827886346727610f,0.07141010463237762f,0.74001471605151892f,\
+ 0.20294443331658840f,0.55442603398114443f,0.48089468106627464f,0.20190807711333036f,\
+ 0.53310041315853596f,0.55530697200447321f,\
+0.94629473658278584f,0.61546878470107913f,0.67337385797873139f,0.61626600986346602f,\
+ 0.78442738251760602f,0.99291495559737086f,0.33036959776654840f,0.19693034281954169f,\
+ 0.03315818728879094f,0.11960808141157031f,\
+0.45766852516680956f,0.83135433867573738f,0.65369247179478407f,0.6583583448082209f,\
+ 0.26375361625105143f,0.97574284672737122f,0.63044753577560186f,0.89286901615560055f,\
+ 0.31578356493264437f,0.76139996573328972f,\
+0.89644787041470408f,0.77340125897899270f,0.19968961318954825f,0.25145971449092031f,\
+ 0.43832763982936740f,0.37096222722902894f,0.21171907847747207f,0.46179189579561353f,\
+ 0.37858232436701655f,0.47909884760156274f,\
+0.44384705275297165f,0.4244190966710448f,0.60141251794993877f,0.38433500844985247f,\
+ 0.86648589745163918f,0.30322382133454084f,0.44860231317579746f,0.62512917164713144f,\
+ 0.46195234358310699f,0.28169692959636450f}
+
+#define FMATRIX_RESULT {14.6458099031118518f,15.9879935334969154f,14.5023146230340352f,9.79104027026660262f,\
+ 13.658147977601745f,18.2826677794023276f,13.9913488019182726f,13.0555850244756648f,\
+ 11.2702097163264696f,12.2080852641231488f,\
+14.9576657268129818f,18.0415870145381838f,15.4577532112657572f,10.6060207869925502f,\
+ 14.6987916130120198f,19.9917861348452170f,14.8484467294549827f,14.0994958596124f,\
+ 12.1294313366477713f,12.8836800651605152f,\
+7.72729140087719646f,8.27571528291814396f,8.78222511899259928f,5.22537042408334251f,\
+ 7.61718988429527233f,10.1106593547443495f,7.22727291477849576f,6.72646688774223733f,\
+ 6.21430065514425589f,6.69442204331610213f,\
+11.8618893865302528f,13.2731189359057637f,12.8373872935372706f,9.52692469532374631f,\
+ 11.9056327368823247f,16.3654355264039921f,11.8674243780595265f,11.7206072002431814f,\
+ 9.24712051368910970f,10.6966525674175159f,\
+7.25089971320127891f,8.98673751651268127f,7.49831172728240691f,5.29368504368777693f,\
+ 8.12154956830077346f,10.3089262075282218f,7.4337348502224856f,6.83888206810676191f,\
+ 5.87125977419815737f,6.5321378683758375f,\
+9.25854069422946502f,10.4059421461299539f,9.47515410794143342f,7.263789985253827f,\
+ 9.16034813421007321f,13.6353552693330933f,9.3726649654333336f,8.83558176180042132f,\
+ 7.6055387753197277f,8.4871270614444292f,\
+12.6878667266786511f,14.1417583108624711f,13.0448499416136254f,9.182764814582713f,\
+ 12.4852121681423256f,17.073953108953809f,13.2550267101027224f,11.3640159258193041f,\
+ 9.6279844249894015f,10.6765282334921068f,\
+16.0691497196859565f,18.4667994666424704f,16.975871456346809f,12.083598083627443f,\
+ 15.7522021028722747f,22.0489520587189212f,16.1322911282790358f,16.8044904865300744f,\
+ 12.7829232118433556f,14.5730443462997599f,\
+11.943978463537455f,13.6259118560125358f,11.8068134298221956f,8.21687415305816771f,\
+ 11.4127920042158735f,15.2296090993128281f,11.3826577511842082f,11.0976684273648587f,\
+ 10.3857413785092909f,10.2894980707345525f,\
+11.5843985401712821f,13.2781579371486753f,12.1725305229437293f,8.37850128011447204f,\
+ 11.8141382209783163f,15.4022074994757734f,11.484608766021573f,11.1535660239869383f,\
+ 9.31343988645433285f,11.1349864749012912f}
+
+
+
+
+
+#define CRMATRIX_IN {0.21132486546412110f,0.56084860628470778f,0.30760907428339124f,0.50153415976092219f, \
+ 0.28064980218186975f,0.40948254754766822f,0.38737787725403905f,0.53762298030778766f,\
+ 0.58787201577797532f,0.64885628735646605f,\
+0.75604385416954756f,0.66235693730413914f,0.93296162132173777f,0.43685875833034515f,\
+ 0.12800584640353918f,0.87841258011758327f,0.92228986788541079f,0.11999255046248436f,\
+ 0.48291792999953032f,0.99231909401714802f,\
+0.00022113462910056f,0.72635067673400044f,0.21460078610107303f,0.26931248093023896f,\
+ 0.77831285959109664f,0.11383596854284406f,0.94881842611357570f,0.2256303490139544f,\
+ 0.22328650346025825f,0.05004197778180242f,\
+0.33032709173858166f,0.19851438421756029f,0.31264199689030647f,0.63257448654621840f,\
+ 0.21190304495394230f,0.19983377400785685f,0.34353372454643250f,0.62740930821746588f,\
+ 0.84008856676518917f,0.74855065811425447f,\
+0.66538110421970487f,0.54425731627270579f,0.36163610080257058f,0.40519540151581168f,\
+ 0.11213546665385365f,0.56186607433483005f,0.37601187312975526f,0.76084325974807143f,\
+ 0.12059959070757031f,0.41040589986369014f,\
+0.62839178834110498f,0.23207478970289230f,0.2922266637906432f,0.91847078315913677f,\
+ 0.68568959552794695f,0.58961773291230202f,0.73409405630081892f,0.04855662025511265f,\
+ 0.28553641680628061f,0.60845263302326202f,\
+0.84974523587152362f,0.23122371966019273f,0.56642488157376647f,0.04373343335464597f,\
+ 0.15312166837975383f,0.68539796629920602f,0.26157614728435874f,0.67239497276023030f,\
+ 0.86075146449729800f,0.85442108893766999f,\
+0.68573101982474327f,0.21646326314657927f,0.48264719732105732f,0.48185089323669672f,\
+ 0.69708506017923355f,0.89062247332185507f,0.49934938363730907f,0.20171726960688829f,\
+ 0.84941016510128975f,0.06426467280834913f,\
+0.87821648130193353f,0.88338878145441413f,0.33217189135029912f,0.26395560009405017f,\
+ 0.84155184263363481f,0.50422128057107329f,0.26385784195736051f,0.39115739194676280f,\
+ 0.52570608118548989f,0.82790829380974174f,\
+0.06837403681129217f,0.65251349471509457f,0.59350947011262178f,0.41481037065386772f,\
+ 0.40620247554033995f,0.34936154074966908f,0.52535630855709314f,0.83003165572881699f,\
+ 0.99312098976224661f,0.92623437754809856f}
+
+#define CIMATRIX_IN {0.56672112690284848f,0.73956565884873271f,0.02587099233642220f,0.70648676296696067f,\
+ 0.96770532103255391f,0.42568723810836673f,0.18711117887869477f,0.21240556007251143f,\
+ 0.69127879338338971f,0.13049928424879909f,\
+0.57116389367729425f,0.00371731072664261f,0.51744682248681784f,0.52114724926650524f,\
+ 0.50685344357043505f,0.24615605548024178f,0.01895748358219862f,0.57950199581682682f,\
+ 0.76568587962538004f,0.96820035576820374f,\
+0.81601104838773608f,0.59005728596821427f,0.39168732380494475f,0.28704008506610990f,\
+ 0.52329764096066356f,0.92295324662700295f,0.84335647663101554f,0.26281475694850087f,\
+ 0.35726496530696750f,0.6561381467618048f,\
+0.05689279362559319f,0.3096467358991504f,0.24135384149849415f,0.65027950797230005f,\
+ 0.5596947595477104f,0.10007458087056875f,0.07485948316752911f,0.43609866220504045f,\
+ 0.76933998242020607f,0.24455389659851789f,\
+0.55959366867318749f,0.25522057106718421f,0.50644348980858922f,0.08813347620889544f,\
+ 0.56173070007935166f,0.46782181179150939f,0.85328151332214475f,0.91105451015755534f,\
+ 0.54776339093223214f,0.52831235667690635f,\
+0.12493403162807226f,0.62518793903291225f,0.42361020017415285f,0.44987633451819420f,\
+ 0.46817600261420012f,0.39504976756870747f,0.01245901081711054f,0.80826673656702042f,\
+ 0.09622887428849936f,0.84689256362617016f,\
+0.72792222863063216f,0.11574173765257001f,0.28937275288626552f,0.72272530803456903f,\
+ 0.77945467224344611f,0.03661171020939946f,0.18675393564626575f,0.81026530498638749f,\
+ 0.95611717319115996f,0.78766220854595304f,\
+0.26777664758265018f,0.61170040909200907f,0.08879321813583374f,0.89767962601035833f,\
+ 0.79010718129575253f,0.51753685344010592f,0.49205840751528740f,0.25904283951967955f,\
+ 0.22074085660278797f,0.12620826158672571f,\
+0.54653349192813039f,0.67839562846347690f,0.62128817522898316f,0.24278218811377883f,\
+ 0.98085420625284314f,0.83254515705630183f,0.74896081397309899f,0.41390872886404395f,\
+ 0.01432593585923314f,0.78838609857484698f,\
+0.98854076582938433f,0.33200952783226967f,0.34549844544380903f,0.43377211131155491f,\
+ 0.81870661024004221f,0.61048321425914764f,0.94149570073932409f,0.35999277792870998f,\
+ 0.81914897728711367f,0.34530424699187279f}
+
+
+#define CRMATRIX_RESULT {4.6052332809216896f,2.16205411267794823f,1.12245312965776556f,4.0468190853821735f,\
+ 7.29705295628955231f,2.45894799152591625f,2.29331674633863614f,4.21571156291592253f,\
+ 2.81922686558935887f,2.348781949769843f,\
+2.07401297354815162f,1.50063692688995753f,0.25219828236411757f,2.7063265188290884f,\
+ 6.35812780561968260f,0.67264506810224134f,0.79079814568186024f,2.91747981321864280f,\
+ 1.01032692983832129f,0.75975015828076931f,\
+7.04077899650083694f,5.39363072316827363f,4.99449464719530045f,6.79878933472462954f,\
+ 11.2977866849707205f,5.7026161792862045f,6.09443833294921244f,7.35970702338152272f,\
+ 6.14030297304667272f,5.80227288585002476f,\
+1.52422494456658053f,0.15792523935350228f,-0.39437456229879331f,3.21063571532312331f,\
+ 4.72654937095295491f,0.19681048033039794f,0.13926710536989889f,2.4098033377935764f,\
+ 1.19110231590601412f,0.24431206393184518f,\
+5.84910802491279558f,3.67968516288822922f,2.73879619563976862f,5.69547375492497387f,\
+ 10.2284804678743431f,4.40378197582331143f,3.9855513762320007f,6.24858736599414133f,\
+ 4.57057059205936156f,4.19331143449899635f,\
+2.84423960711997825f,0.91341486330902766f,0.32799575263405639f,3.63130361353437925f,\
+ 6.73358898182897025f,2.44092642244158631f,1.4035651670524776f,3.29646069585033841f,\
+ 1.63804041671370615f,1.34065096546340268f,\
+5.04689360696997724f,2.58451417966281571f,1.89915292921285772f,4.62170835433455451f,\
+ 9.05019265678329887f,3.33670002112993291f,3.66038974983755372f,5.62296495186113443f,\
+ 4.04432332701467434f,3.48415716881126114f,\
+2.99051528256943167f,0.76077291642727529f,0.19995186822386554f,2.96972391032047955f,\
+ 6.60462877127714787f,1.8346028052798535f,1.31621250911818244f,3.73816126628208467f,\
+ 1.3788533261260996f,0.30973924698106181f,\
+5.20595600060592734f,3.44646883779368096f,1.85946748567920750f,5.1361216710529769f,\
+ 10.0941765681228333f,3.49429925842045552f,3.05021742013193098f,5.4348094549241184f,\
+ 4.51765668386982977f,3.40850797720926035f,\
+4.65702831667450212f,3.03706964016556746f,2.06940591125521856f,5.11047315752830578f,\
+ 9.94379845012778674f,3.3321507049026704f,3.29919175160893818f,5.94111235727490428f,\
+ 4.22429837741492253f,4.41612421969640145f}
+
+#define CIMATRIX_RESULT {-14.2670217568608670f,-12.454640354285063f,-11.2804810864205063f,-12.2724799117031509f,\
+ -14.2468231668880438f,-13.7336716491454212f,-13.4126704881317167f,-13.2354295209306141f,\
+ -15.0748008268599314f,-16.4106582082002141f,\
+-18.1383938627890586f,-16.2500310962210612f,-13.6080240801173602f,-16.1094229201551187f,\
+ -18.8440235801764437f,-17.4411014766214336f,-16.8096205594578301f,-16.4844610002227725f,\
+ -18.6024277051838922f,-19.7565384964549153f,\
+-13.6088148145822956f,-12.746762149308113f,-10.9388281270062464f,-12.2279241359128505f,\
+ -13.2072598928012983f,-13.2417837783338328f,-12.6472077791728861f,-12.2778413042734709f,\
+ -14.8521542656410972f,-15.7031049148228732f,\
+-13.2144981163630746f,-11.2231448799035274f,-9.7632306445459864f,-11.1681914913523084f,\
+ -13.2326349218083568f,-12.3373828754640584f,-11.7842111257382829f,-11.8870664403988826f,\
+ -13.3125999502667849f,-14.6665812584015534f,\
+-14.2784445192169489f,-13.0211070334450945f,-11.1550881344005877f,-12.7744646170515193f,\
+ -13.8646425595775469f,-13.6955906712953759f,-12.98118927813419f,-12.5125330823426655f,\
+ -15.2470302805889251f,-16.6299797243330687f,\
+-15.3135193060880574f,-12.8989039623516373f,-11.1097185418698405f,-12.9878481756480575f,\
+ -15.1819592065246791f,-14.1554345301917017f,-13.7019470831634962f,-13.1000905274159241f,\
+ -15.697504333561957f,-16.4727155095115592f,\
+-16.6151865381969657f,-15.0301220873079888f,-13.119515101239017f,-14.6038902499774128f,\
+ -16.5465022870658487f,-16.2745681097221642f,-15.5790325754692791f,-14.9778105214080721f,\
+ -17.5880407064706752f,-18.9858728410024717f,\
+-15.2244202423134851f,-12.9437967685452655f,-11.4320003274904263f,-12.6340981883688794f,\
+ -15.2648705712828949f,-14.0427697860698029f,-13.5757724082098221f,-13.5147279252801411f,\
+ -15.9307999370437052f,-16.8057661616885916f,\
+-18.255930649471658f,-16.1956269359019345f,-13.6756135725252594f,-16.3611958886634667f,\
+ -18.0721805983153097f,-17.0517408001458151f,-16.231614445430882f,-16.4843630200203357f,\
+ -19.7691884354979948f,-20.3871124127432672f,\
+-18.2105493706955421f,-16.9125659016652854f,-14.4302205379609418f,-16.7267447227195518f,\
+ -18.7135188739136353f,-17.6467699531147559f,-16.5820479292089722f,-17.0861611432949942f,\
+ -19.7638794191151916f,-21.2748129090505991f}
+
+/* FIXME: assert are 1e04 and 1e14 */
+static void sexpmaTest (void ) {
+
+ int i = 0 ;
+
+ float in[] = FMATRIX_IN ;
+
+ float result[] = FMATRIX_RESULT ;
+
+ float out[LEADDIM*LEADDIM] ;
+
+ float mon_test[9]={4,8,3,2,8,4,3,4,5};
+ float result_mon_test[9]={179660.90104359941324219f,452187.79172967246267945f,273148.88425553269917145f,
+ 163436.47016010177321732f,411353.63271151197841391f,248489.23907714022789150f,
+ 138776.82498170930193737f,349268.28353250800864771f,210989.61389596699154936f};
+ float out_mon_test[9] ;
+
+ sexpma ( in, out, LEADDIM) ;
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
+ {
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-6 ) ;
+ }
+
+ sexpma(mon_test,out_mon_test,3);
+ for ( i = 0 ; i < 9 ; i++ )
+ {
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+ assert ( fabs ( out_mon_test[i] - result_mon_test[i] ) / fabs( out_mon_test[i]) < 3e-5 ) ;
+ }
+}
+
+
+
+static void dexpmaTest (void ) {
+
+ int i = 0 ;
+
+ double in[] = DMATRIX_IN ;
+
+ double result[] = DMATRIX_RESULT ;
+
+ double out[LEADDIM*LEADDIM] ;
+
+
+ dexpma ( in, out, LEADDIM) ;
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
+ {
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-14 ) ;
+ }
+}
+
+
+static void cexpmaTest ( void) {
+
+ int i = 0 ;
+
+ float tRealIn [] = CRMATRIX_IN ;
+ float tImagIn [] = CIMATRIX_IN ;
+
+
+
+ float tRealResult [] = CRMATRIX_RESULT ;
+ float tImagResult [] = CIMATRIX_RESULT ;
+
+ floatComplex out[LEADDIM*LEADDIM ] ;
+
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , LEADDIM*LEADDIM );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,LEADDIM*LEADDIM) ;
+
+ cexpma ( in ,out , LEADDIM ) ;
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (LEADDIM*LEADDIM ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t + %e\t * i result : %e\t + %e\t * i assert : %e + %e \n" ,
+ i ,creals(out[i]) , cimags(out[i]) , creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 3e-16 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-4 );
+
+
+ if ( cimags(out[i]) < 3e-16 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+}
+
+
+
+static void zexpmaTest ( void) {
+
+ int i = 0 ;
+
+ double tRealIn [] = ZRMATRIX_IN ;
+ double tImagIn [] = ZIMATRIX_IN ;
+
+
+
+ double tRealResult [] = ZRMATRIX_RESULT ;
+ double tImagResult [] = ZIMATRIX_RESULT ;
+
+ doubleComplex out[LEADDIM*LEADDIM ] ;
+
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , LEADDIM*LEADDIM );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,LEADDIM*LEADDIM) ;
+
+ zexpma ( in ,out , LEADDIM ) ;
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (LEADDIM*LEADDIM ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t + %e\t * i result : %e\t + %e\t * i assert : %e + %e \n" ,
+ i ,zreals(out[i]) , zimags(out[i]) , zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 3e-16 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-13 );
+
+
+ if ( zimags(out[i]) < 3e-16 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-14) ;
+
+ }
+}
+
+
+static int testExponential(void) {
+
+ printf("\n>>>> Matrix Exponential Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ dexpmaTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ sexpmaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ cexpmaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zexpmaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testExponential() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj b/2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj
new file mode 100644
index 00000000..bac19e9a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{1A4DDF0E-CF14-43FF-BBA3-6928EF6D1072}</ProjectGuid>
+ <RootNamespace>testMatrixExponential</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixExponential.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj.filters b/2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj.filters
new file mode 100644
index 00000000..14a23849
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/test_MatrixExponential/testMatrixExponential.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixExponential.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/expm/zexpma.c b/2.3-1/src/c/matrixOperations/expm/zexpma.c
new file mode 100644
index 00000000..3de35e02
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/expm/zexpma.c
@@ -0,0 +1,178 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixExponential.h"
+
+void zexpma(doubleComplex * in, doubleComplex * out, int _iLeadDim)
+{
+ int iIndex1 = 0;
+ int iMax = 0;
+ int iFlag = 0;
+ int iLoop1 = 0;
+ int iSquare = 0;
+
+
+ double dblExp = 0;
+ double dblS = 0;
+ double dblS2 = 0;
+ double dblCst = 0.5;
+
+ doubleComplex zdblCst ;
+
+ doubleComplex *pdblMatrixA = NULL;
+ doubleComplex *pdblMatrixX = NULL;
+ doubleComplex *pdblMatrixD = NULL;
+ doubleComplex *pdblMatrixcX = NULL;
+ doubleComplex *pdblMatrixcA = NULL;
+ doubleComplex *pdblMatrixEye = NULL;
+ doubleComplex *pdblMatrixTemp = NULL;
+ doubleComplex *pdblMatrixTemp2 = NULL;
+
+
+
+
+ iSquare = _iLeadDim * _iLeadDim;
+
+ pdblMatrixA = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixX = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixD = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixcX = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixcA = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixEye = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixTemp = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+ pdblMatrixTemp2 = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int) iSquare);
+
+ zdblCst = DoubleComplex ( 0.5 , 0 );
+
+ /*// Scale A by power of 2 so that its norm is < 1/2 .*/
+ dfrexps( zinfnorma( in, _iLeadDim, _iLeadDim) , &dblExp);
+ dblS = max(0, dblExp + 1);
+ dblS2 = pow(2, dblS);
+
+ /*A = A./2^s */
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixA[iIndex1] = zrdivs ( in[iIndex1] , DoubleComplex ( dblS2 , 0 ));
+
+
+ /* Pade approximation for exp(A)
+ //X = A */
+ /*C2F(zcopy)(&iSquare, pdblMatrixA, &iOne, pdblMatrixX, &iOne );*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixX[iIndex1] = pdblMatrixA[iIndex1] ;
+
+
+ zeyea(pdblMatrixEye, _iLeadDim, _iLeadDim);
+
+ /* zmulma ( & zdblCst , 1 ,1,
+ pdblMatrixA , _iLeadDim, _iLeadDim,
+ pdblMatrixcA);*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixcA[iIndex1] = zmuls ( pdblMatrixA[iIndex1] , zdblCst ) ;
+
+ /* cA = A * c */
+
+
+ /*E = Eye + cA*/
+
+ zadda (pdblMatrixEye , iSquare, pdblMatrixcA ,iSquare, out ) ;
+
+ /* D = Eye - cA */
+
+ zdiffa (pdblMatrixEye , iSquare, pdblMatrixcA ,iSquare,pdblMatrixD ) ;
+
+ iMax = 6;
+ iFlag = 1;
+
+ for(iLoop1 = 2 ; iLoop1 <= iMax ; iLoop1++)
+ {
+ dblCst = dblCst * (iMax - iLoop1 + 1 ) / (iLoop1 * (2 * iMax - iLoop1 + 1));
+ zdblCst = DoubleComplex( dblCst , 0);
+
+ /*Temp = X */
+ /*C2F(zcopy)(&iSquare, pdblMatrixX, &iOne, pdblMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixTemp[iIndex1] = pdblMatrixX[iIndex1] ;
+ /* X = A * Temp; */
+
+ zmulma ( pdblMatrixA , _iLeadDim , _iLeadDim,
+ pdblMatrixTemp , _iLeadDim , _iLeadDim,
+ pdblMatrixX );
+ /* cX = c * X */
+
+ /* zmulma ( & zdblCst , 1 ,1,
+ pdblMatrixX , _iLeadDim, _iLeadDim,
+ pdblMatrixcX);*/
+
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixcX[iIndex1] = zmuls ( pdblMatrixX[iIndex1] , zdblCst ) ;
+
+ /* E = E + cX */
+
+ zadda ( out, iSquare , pdblMatrixcX , iSquare , out ) ;
+
+ if(iFlag == 1) /* D = D + cX */
+ {
+ zadda ( pdblMatrixD, iSquare , pdblMatrixcX , iSquare , pdblMatrixD ) ;
+ }
+ else /* D = D - cX */
+ {
+ zdiffa ( pdblMatrixD, iSquare , pdblMatrixcX , iSquare , pdblMatrixD );
+ }
+
+ /* Toggle iFlag */
+ iFlag = !iFlag;
+ }
+
+ /* Temp = E */
+ /*C2F(zcopy)(&iSquare, out, &iOne, pdblMatrixTemp, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ pdblMatrixTemp[iIndex1] = out[iIndex1] ;
+
+ /* E = D\E */
+ zldivma ( pdblMatrixD , _iLeadDim , _iLeadDim , pdblMatrixTemp , _iLeadDim , _iLeadDim , out ) ;
+
+ /*/ Undo scaling by repeated squaring */
+ for(iLoop1 = 0 ; iLoop1 < dblS ; iLoop1++)
+ {
+ /*//Temp = E */
+ /*//Temp2 = E */
+
+ /*C2F(zcopy)(&iSquare, out, &iOne, pdblMatrixTemp, &iOne);
+ C2F(zcopy)(&iSquare, out, &iOne, pdblMatrixTemp2, &iOne);*/
+ for ( iIndex1 = 0 ; iIndex1 < iSquare ; iIndex1++ )
+ {
+ pdblMatrixTemp [iIndex1] = out[iIndex1] ;
+ pdblMatrixTemp2[iIndex1] = out[iIndex1] ;
+ }
+
+ /* E = E*E*/
+ zmulma ( pdblMatrixTemp , _iLeadDim , _iLeadDim,
+ pdblMatrixTemp2 , _iLeadDim , _iLeadDim,
+ out );
+
+ }
+
+ free(pdblMatrixA);
+ free(pdblMatrixX);
+ free(pdblMatrixD);
+ free(pdblMatrixcX);
+ free(pdblMatrixcA);
+ free(pdblMatrixEye);
+ free(pdblMatrixTemp);
+ free(pdblMatrixTemp2);
+
+
+
+ return ;
+}
diff --git a/2.3-1/src/c/matrixOperations/eye/Makefile.am b/2.3-1/src/c/matrixOperations/eye/Makefile.am
new file mode 100644
index 00000000..706830dc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/Makefile.am
@@ -0,0 +1,46 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixEye_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixEye.la
+
+HEAD = ../includes/matrixEye.h
+
+libMatrixEye_la_SOURCES = $(HEAD) \
+ seyea.c \
+ deyea.c \
+ ceyea.c \
+ zeyea.c
+
+
+
+check_PROGRAMS = testMatrixEye
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixEye.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/includes
+
+testMatrixEye_SOURCES = testMatrixEye.c
+testMatrixEye_LDADD = $(check_LDADD)
+testMatrixEye_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixEye
diff --git a/2.3-1/src/c/matrixOperations/eye/Makefile.in b/2.3-1/src/c/matrixOperations/eye/Makefile.in
new file mode 100644
index 00000000..5a07fc0a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/Makefile.in
@@ -0,0 +1,712 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixEye$(EXEEXT)
+TESTS = testMatrixEye$(EXEEXT)
+subdir = src/c/matrixOperations/eye
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixEye_la_LIBADD =
+am__objects_1 =
+am_libMatrixEye_la_OBJECTS = $(am__objects_1) libMatrixEye_la-seyea.lo \
+ libMatrixEye_la-deyea.lo libMatrixEye_la-ceyea.lo \
+ libMatrixEye_la-zeyea.lo
+libMatrixEye_la_OBJECTS = $(am_libMatrixEye_la_OBJECTS)
+libMatrixEye_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMatrixEye_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testMatrixEye_OBJECTS = testMatrixEye-testMatrixEye.$(OBJEXT)
+testMatrixEye_OBJECTS = $(am_testMatrixEye_OBJECTS)
+testMatrixEye_DEPENDENCIES = $(check_LDADD)
+testMatrixEye_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatrixEye_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixEye_la_SOURCES) $(testMatrixEye_SOURCES)
+DIST_SOURCES = $(libMatrixEye_la_SOURCES) $(testMatrixEye_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixEye_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixEye.la
+HEAD = ../includes/matrixEye.h
+libMatrixEye_la_SOURCES = $(HEAD) \
+ seyea.c \
+ deyea.c \
+ ceyea.c \
+ zeyea.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixEye.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/includes
+
+testMatrixEye_SOURCES = testMatrixEye.c
+testMatrixEye_LDADD = $(check_LDADD)
+testMatrixEye_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/eye/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/eye/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixEye.la: $(libMatrixEye_la_OBJECTS) $(libMatrixEye_la_DEPENDENCIES)
+ $(libMatrixEye_la_LINK) -rpath $(pkglibdir) $(libMatrixEye_la_OBJECTS) $(libMatrixEye_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixEye$(EXEEXT): $(testMatrixEye_OBJECTS) $(testMatrixEye_DEPENDENCIES)
+ @rm -f testMatrixEye$(EXEEXT)
+ $(testMatrixEye_LINK) $(testMatrixEye_OBJECTS) $(testMatrixEye_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixEye_la-ceyea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixEye_la-deyea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixEye_la-seyea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixEye_la-zeyea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixEye-testMatrixEye.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixEye_la-seyea.lo: seyea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -MT libMatrixEye_la-seyea.lo -MD -MP -MF $(DEPDIR)/libMatrixEye_la-seyea.Tpo -c -o libMatrixEye_la-seyea.lo `test -f 'seyea.c' || echo '$(srcdir)/'`seyea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixEye_la-seyea.Tpo $(DEPDIR)/libMatrixEye_la-seyea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seyea.c' object='libMatrixEye_la-seyea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -c -o libMatrixEye_la-seyea.lo `test -f 'seyea.c' || echo '$(srcdir)/'`seyea.c
+
+libMatrixEye_la-deyea.lo: deyea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -MT libMatrixEye_la-deyea.lo -MD -MP -MF $(DEPDIR)/libMatrixEye_la-deyea.Tpo -c -o libMatrixEye_la-deyea.lo `test -f 'deyea.c' || echo '$(srcdir)/'`deyea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixEye_la-deyea.Tpo $(DEPDIR)/libMatrixEye_la-deyea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='deyea.c' object='libMatrixEye_la-deyea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -c -o libMatrixEye_la-deyea.lo `test -f 'deyea.c' || echo '$(srcdir)/'`deyea.c
+
+libMatrixEye_la-ceyea.lo: ceyea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -MT libMatrixEye_la-ceyea.lo -MD -MP -MF $(DEPDIR)/libMatrixEye_la-ceyea.Tpo -c -o libMatrixEye_la-ceyea.lo `test -f 'ceyea.c' || echo '$(srcdir)/'`ceyea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixEye_la-ceyea.Tpo $(DEPDIR)/libMatrixEye_la-ceyea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ceyea.c' object='libMatrixEye_la-ceyea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -c -o libMatrixEye_la-ceyea.lo `test -f 'ceyea.c' || echo '$(srcdir)/'`ceyea.c
+
+libMatrixEye_la-zeyea.lo: zeyea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -MT libMatrixEye_la-zeyea.lo -MD -MP -MF $(DEPDIR)/libMatrixEye_la-zeyea.Tpo -c -o libMatrixEye_la-zeyea.lo `test -f 'zeyea.c' || echo '$(srcdir)/'`zeyea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixEye_la-zeyea.Tpo $(DEPDIR)/libMatrixEye_la-zeyea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zeyea.c' object='libMatrixEye_la-zeyea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixEye_la_CFLAGS) $(CFLAGS) -c -o libMatrixEye_la-zeyea.lo `test -f 'zeyea.c' || echo '$(srcdir)/'`zeyea.c
+
+testMatrixEye-testMatrixEye.o: testMatrixEye.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixEye_CFLAGS) $(CFLAGS) -MT testMatrixEye-testMatrixEye.o -MD -MP -MF $(DEPDIR)/testMatrixEye-testMatrixEye.Tpo -c -o testMatrixEye-testMatrixEye.o `test -f 'testMatrixEye.c' || echo '$(srcdir)/'`testMatrixEye.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixEye-testMatrixEye.Tpo $(DEPDIR)/testMatrixEye-testMatrixEye.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixEye.c' object='testMatrixEye-testMatrixEye.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixEye_CFLAGS) $(CFLAGS) -c -o testMatrixEye-testMatrixEye.o `test -f 'testMatrixEye.c' || echo '$(srcdir)/'`testMatrixEye.c
+
+testMatrixEye-testMatrixEye.obj: testMatrixEye.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixEye_CFLAGS) $(CFLAGS) -MT testMatrixEye-testMatrixEye.obj -MD -MP -MF $(DEPDIR)/testMatrixEye-testMatrixEye.Tpo -c -o testMatrixEye-testMatrixEye.obj `if test -f 'testMatrixEye.c'; then $(CYGPATH_W) 'testMatrixEye.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixEye.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixEye-testMatrixEye.Tpo $(DEPDIR)/testMatrixEye-testMatrixEye.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixEye.c' object='testMatrixEye-testMatrixEye.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixEye_CFLAGS) $(CFLAGS) -c -o testMatrixEye-testMatrixEye.obj `if test -f 'testMatrixEye.c'; then $(CYGPATH_W) 'testMatrixEye.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixEye.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/eye/ceyea.c b/2.3-1/src/c/matrixOperations/eye/ceyea.c
new file mode 100644
index 00000000..735018c6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/ceyea.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "eye.h"
+
+void ceyea(floatComplex *in, int _iRows, int _iCols)
+{
+ int i , j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = FloatComplex ( (i == j)? 1.0f:0 , 0) ;
+
+
+}
diff --git a/2.3-1/src/c/matrixOperations/eye/deyea.c b/2.3-1/src/c/matrixOperations/eye/deyea.c
new file mode 100644
index 00000000..eed9c05d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/deyea.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "eye.h"
+
+void deyea(double *in, int _iRows, int _iCols)
+{
+ int i, j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = (i == j)?1:0 ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/eye/i16eyea.c b/2.3-1/src/c/matrixOperations/eye/i16eyea.c
new file mode 100644
index 00000000..a769061c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/i16eyea.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "eye.h"
+
+void i16eyea(int16* in, int _iRows, int _iCols)
+{
+ int i, j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = (i == j)?(int16)1:(int16)0 ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/eye/i8eyea.c b/2.3-1/src/c/matrixOperations/eye/i8eyea.c
new file mode 100644
index 00000000..d69ac052
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/i8eyea.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "eye.h"
+
+void i8eyea(int8* in, int _iRows, int _iCols)
+{
+ int i, j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = (i == j)?(int8)1:(int8)0 ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/eye/seyea.c b/2.3-1/src/c/matrixOperations/eye/seyea.c
new file mode 100644
index 00000000..2f256b86
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/seyea.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "eye.h"
+
+void seyea(float* in, int _iRows, int _iCols)
+{
+ int i, j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = (i == j)?1.0f:0 ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/eye/testMatrixEye.c b/2.3-1/src/c/matrixOperations/eye/testMatrixEye.c
new file mode 100644
index 00000000..a3682743
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/testMatrixEye.c
@@ -0,0 +1,348 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+
+#include "eye.h"
+
+#define LEADDIM 10
+#define ROWS 10
+#define COLS 5
+
+#define ROWS2 5
+#define COLS2 10
+
+static void deyeaTest ( void )
+{
+ int i, j = 0 ;
+
+ double result = 0 ;
+ double in [LEADDIM*LEADDIM] ;
+ double in2 [ROWS * COLS];
+ double in3 [ROWS2 * COLS2];
+
+ deyea ( in , LEADDIM , LEADDIM ) ;
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
+ {
+ if ( i%(LEADDIM+1) == 0 )
+ result = 1 ;
+ else
+ result = 0 ;
+
+ printf ( "\t\t %d in : %e\tresult : %e\tassert : %e \n" , i, in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+
+ if ( in[i] < 1e-14 && result < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( in[i] - result) / fabs( in[i]) < 3e-16 ) ;
+ }
+
+ deyea ( in2, ROWS, COLS );
+ for ( i = 0 ; i < ROWS ; i++ )
+ {
+ for ( j = 0 ; j < COLS ; ++j )
+ {
+ if ( i == j )
+ result = 1 ;
+ else
+ result = 0 ;
+
+ printf ( "\t\t in[%d, %d] : %e\tresult : %e\tassert : %e \n" , i, j,
+ in[i * ROWS + j] , result ,
+ fabs( in[i * ROWS + j] - result) / fabs( in[i * ROWS + j]) ) ;
+
+ if ( in[i * ROWS + j] < 1e-14 && result < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( in[i * ROWS + j] - result) / fabs( in[i * ROWS + j]) < 3e-16 ) ;
+ }
+ }
+
+ deyea ( in3, ROWS2, COLS2);
+ for ( j = 0 ; j < COLS2 ; ++j )
+ {
+ for ( i = 0 ; i < ROWS2 ; i++ )
+ {
+ if ( i == j )
+ result = 1 ;
+ else
+ result = 0 ;
+
+ printf ( "\t\t in[%d, %d] : %e\tresult : %e\tassert : %e \n" , i, j,
+ in3[j * ROWS2 + i] , result ,
+ fabs( in3[j * ROWS2 + i] - result) / fabs( in3[j * ROWS2 + i]) ) ;
+
+ if ( in3[j * ROWS2 + i] < 1e-14 && result < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( in3[j * ROWS2 + i] - result) / fabs( in3[j * ROWS2 + i]) < 3e-16 ) ;
+ }
+ }
+
+}
+
+
+static void seyeaTest ( void )
+{
+ int i, j = 0 ;
+
+ float result = 0 ;
+
+ float in[LEADDIM*LEADDIM] ;
+ float in2 [ROWS * COLS];
+ float in3 [ROWS2 * COLS2];
+ seyea ( in , LEADDIM , LEADDIM ) ;
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++)
+ {
+ if ( i%(LEADDIM+1) == 0 )
+ result = 1.0f ;
+ else
+ result = 0 ;
+
+ printf ( "\t\t %d in : %e\tresult : %e\tassert : %e \n" , i, in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+ if ( in[i] < 1e-6 && result < 1e-6 )
+ assert(1);
+ else
+ assert ( fabs ( in[i] - result) / fabs( in[i]) < 1e-6 ) ;
+ }
+
+ seyea ( in2, ROWS, COLS );
+ for ( i = 0 ; i < ROWS ; i++ )
+ {
+ for ( j = 0 ; j < COLS ; ++j )
+ {
+ if ( i == j )
+ result = 1 ;
+ else
+ result = 0 ;
+
+ printf ( "\t\t in[%d, %d] : %e\tresult : %e\tassert : %e \n" , i, j,
+ in[i * ROWS + j] , result ,
+ fabs( in[i * ROWS + j] - result) / fabs( in[i * ROWS + j]) ) ;
+
+ if ( in[i * ROWS + j] < 1e-8 && result < 1e-8 )
+ assert(1);
+ else
+ assert ( fabs ( in[i * ROWS + j] - result) / fabs( in[i * ROWS + j]) < 1e-8 ) ;
+ }
+ }
+
+ seyea ( in3, ROWS2, COLS2);
+ for ( j = 0 ; j < COLS2 ; ++j )
+ {
+ for ( i = 0 ; i < ROWS2 ; i++ )
+ {
+ if ( i == j )
+ result = 1 ;
+ else
+ result = 0 ;
+
+ printf ( "\t\t in[%d, %d] : %e\tresult : %e\tassert : %e \n" , i, j,
+ in3[j * ROWS2 + i] , result ,
+ fabs( in3[j * ROWS2 + i] - result) / fabs( in3[j * ROWS2 + i]) ) ;
+
+ if ( in3[j * ROWS2 + i] < 1e-14 && result < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( in3[j * ROWS2 + i] - result) / fabs( in3[j * ROWS2 + i]) < 1e-14 ) ;
+ }
+ }
+
+}
+
+
+static void zeyeaTest ( void )
+{
+ int i = 0 ;
+
+ doubleComplex result = DoubleComplex ( 0 , 0) ;
+
+ doubleComplex in[LEADDIM*LEADDIM] ;
+
+ zeyea ( in , LEADDIM , LEADDIM ) ;
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
+ {
+ if ( i%(LEADDIM+1) == 0 )
+ result = DoubleComplex ( 1 , 0 ) ;
+ else
+ result = DoubleComplex ( 0 , 0 ) ;
+
+ printf ( "\t\t %d in : %e\tresult : %e \n" , i, zreals( in[i]) , zreals ( result ) ) ;
+
+ if ( zreals( in[i]) < 1e-14 && zreals( result) < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( zreals(in[i]) - zreals(result)) / fabs( zreals(in[i])) < 3e-16) ;
+
+ if ( zimags ( in[i]) < 1e-14 )
+ assert (1);
+ else
+ assert (0);
+
+ }
+}
+
+
+
+
+
+static void ceyeaTest ( void )
+{
+ int i = 0 ;
+
+ floatComplex result = FloatComplex ( 0 , 0 ) ;
+
+ floatComplex in[LEADDIM*LEADDIM] ;
+
+ ceyea ( in , LEADDIM , LEADDIM ) ;
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++)
+ {
+ if ( i%(LEADDIM+1) == 0 )
+ result = FloatComplex ( 1.0f , 0 ) ;
+ else
+ result = FloatComplex ( 0 , 0 ) ;
+
+ printf ( "\t\t %d in : %e\tresult : %e \n" , i, creals( in[i]) , creals ( result ) ) ;
+ if ( creals( in[i]) < 1e-6 && creals( result) < 1e-6 )
+ assert(1);
+ else
+ assert ( fabs ( creals(in[i]) - creals(result)) / fabs( creals(in[i])) < 1e-6 ) ;
+
+ if ( cimags ( in[i]) < 1e-6 )
+ assert (1);
+ else
+ assert (0);
+
+ }
+}
+
+/* EYES TEST */
+
+static void ceyesTest ( void )
+{
+
+
+ floatComplex result = FloatComplex ( 1.0f , 0 ) ;
+
+ floatComplex in = FloatComplex ( LEADDIM, LEADDIM ) ;
+
+ in = ceyes ( in ) ;
+
+
+
+ assert ( (creals(in) - creals(result)) / fabs( creals(in)) < 1e-6 ) ;
+ assert ( cimags (in) == 0) ;
+}
+
+
+
+
+
+static void zeyesTest ( void )
+{
+
+ doubleComplex result = DoubleComplex ( 1 , 0 ) ;
+
+ doubleComplex in = DoubleComplex ( LEADDIM , LEADDIM ) ;
+
+ in = zeyes ( in ) ;
+
+
+ assert ( (zreals(in) - zreals(result)) / fabs( zreals(in)) < 1e-16 ) ;
+ assert ( zimags (in) == 0) ;
+}
+
+
+
+static void deyesTest ( void )
+{
+
+
+ double result = 1 ;
+
+ double in = LEADDIM ;
+
+ in = deyes ( in ) ;
+
+
+ assert ( (in - result) / in < 1e-16 ) ; ;
+}
+
+
+
+static void seyesTest ( void )
+{
+
+
+ float result = 1.0f ;
+
+ float in = 154.0f ;
+
+ in = seyes ( in ) ;
+
+
+ assert ( (in - result) / in < 1e-8 ) ;
+
+}
+
+
+
+static int testEye(void) {
+
+ printf("\n>>>> Matrix Eye Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ deyeaTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ seyeaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ ceyeaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zeyeaTest();
+
+
+
+
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ deyesTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ seyesTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ ceyesTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zeyesTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testEye() == 0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj b/2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj
new file mode 100644
index 00000000..de03d195
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{4F99E000-AC7D-4C3B-80C5-5A5A64D5757F}</ProjectGuid>
+ <RootNamespace>testMatrixEye</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixEye.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj.filters b/2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj.filters
new file mode 100644
index 00000000..66c22dc0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/test_MatrixEye/testMatrixEye.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixEye.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/eye/u16eyea.c b/2.3-1/src/c/matrixOperations/eye/u16eyea.c
new file mode 100644
index 00000000..bb011986
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/u16eyea.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "eye.h"
+
+void u16eyea(uint16* in, int _iRows, int _iCols)
+{
+ int i, j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = (i == j)?(uint16)1:(uint16)0 ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/eye/u8eyea.c b/2.3-1/src/c/matrixOperations/eye/u8eyea.c
new file mode 100644
index 00000000..018fc3c9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/u8eyea.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "eye.h"
+
+void u8eyea(uint8* in, int _iRows, int _iCols)
+{
+ int i, j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = (i == j)?(uint8)1:(uint8)0 ;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/eye/zeyea.c b/2.3-1/src/c/matrixOperations/eye/zeyea.c
new file mode 100644
index 00000000..622cc48e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/eye/zeyea.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "eye.h"
+
+void zeyea(doubleComplex *in, int _iRows, int _iCols)
+{
+ int i , j ;
+
+ for ( i = 0 ; i < _iCols ; i++ )
+ for ( j = 0 ; j < _iRows ; j++ )
+ in[i*_iRows + j] = DoubleComplex ( (i == j)? 1:0 , 0) ;
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/fill/Makefile.am b/2.3-1/src/c/matrixOperations/fill/Makefile.am
new file mode 100644
index 00000000..e7506e2d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/Makefile.am
@@ -0,0 +1,55 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+libMatrixFill_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixFill.la
+
+HEAD = ../includes/fill.h
+
+libMatrixFill_la_SOURCES = $(HEAD) \
+ sfilla.c \
+ dfilla.c \
+ cfilla.c \
+ zfilla.c
+
+
+############
+## CHECK
+############
+
+
+check_PROGRAMS = testDoubleFill testFloatFill
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixFill.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleFill_SOURCES = testDoubleFill.c
+testDoubleFill_LDADD = $(check_LDADD)
+testDoubleFill_CFLAGS = $(check_INCLUDES)
+
+testFloatFill_SOURCES = testFloatFill.c
+testFloatFill_LDADD = $(check_LDADD)
+testFloatFill_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleFill testFloatFill
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/fill/Makefile.in b/2.3-1/src/c/matrixOperations/fill/Makefile.in
new file mode 100644
index 00000000..a28b991d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/Makefile.in
@@ -0,0 +1,739 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleFill$(EXEEXT) testFloatFill$(EXEEXT)
+TESTS = testDoubleFill$(EXEEXT) testFloatFill$(EXEEXT)
+subdir = src/c/matrixOperations/fill
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixFill_la_LIBADD =
+am__objects_1 =
+am_libMatrixFill_la_OBJECTS = $(am__objects_1) \
+ libMatrixFill_la-sfilla.lo libMatrixFill_la-dfilla.lo \
+ libMatrixFill_la-cfilla.lo libMatrixFill_la-zfilla.lo
+libMatrixFill_la_OBJECTS = $(am_libMatrixFill_la_OBJECTS)
+libMatrixFill_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMatrixFill_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleFill_OBJECTS = testDoubleFill-testDoubleFill.$(OBJEXT)
+testDoubleFill_OBJECTS = $(am_testDoubleFill_OBJECTS)
+testDoubleFill_DEPENDENCIES = $(check_LDADD)
+testDoubleFill_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleFill_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatFill_OBJECTS = testFloatFill-testFloatFill.$(OBJEXT)
+testFloatFill_OBJECTS = $(am_testFloatFill_OBJECTS)
+testFloatFill_DEPENDENCIES = $(check_LDADD)
+testFloatFill_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatFill_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixFill_la_SOURCES) $(testDoubleFill_SOURCES) \
+ $(testFloatFill_SOURCES)
+DIST_SOURCES = $(libMatrixFill_la_SOURCES) $(testDoubleFill_SOURCES) \
+ $(testFloatFill_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixFill_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixFill.la
+HEAD = ../includes/fill.h
+libMatrixFill_la_SOURCES = $(HEAD) \
+ sfilla.c \
+ dfilla.c \
+ cfilla.c \
+ zfilla.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixFill.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleFill_SOURCES = testDoubleFill.c
+testDoubleFill_LDADD = $(check_LDADD)
+testDoubleFill_CFLAGS = $(check_INCLUDES)
+testFloatFill_SOURCES = testFloatFill.c
+testFloatFill_LDADD = $(check_LDADD)
+testFloatFill_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/fill/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/fill/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixFill.la: $(libMatrixFill_la_OBJECTS) $(libMatrixFill_la_DEPENDENCIES)
+ $(libMatrixFill_la_LINK) -rpath $(pkglibdir) $(libMatrixFill_la_OBJECTS) $(libMatrixFill_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleFill$(EXEEXT): $(testDoubleFill_OBJECTS) $(testDoubleFill_DEPENDENCIES)
+ @rm -f testDoubleFill$(EXEEXT)
+ $(testDoubleFill_LINK) $(testDoubleFill_OBJECTS) $(testDoubleFill_LDADD) $(LIBS)
+testFloatFill$(EXEEXT): $(testFloatFill_OBJECTS) $(testFloatFill_DEPENDENCIES)
+ @rm -f testFloatFill$(EXEEXT)
+ $(testFloatFill_LINK) $(testFloatFill_OBJECTS) $(testFloatFill_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixFill_la-cfilla.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixFill_la-dfilla.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixFill_la-sfilla.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixFill_la-zfilla.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleFill-testDoubleFill.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatFill-testFloatFill.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixFill_la-sfilla.lo: sfilla.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -MT libMatrixFill_la-sfilla.lo -MD -MP -MF $(DEPDIR)/libMatrixFill_la-sfilla.Tpo -c -o libMatrixFill_la-sfilla.lo `test -f 'sfilla.c' || echo '$(srcdir)/'`sfilla.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixFill_la-sfilla.Tpo $(DEPDIR)/libMatrixFill_la-sfilla.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfilla.c' object='libMatrixFill_la-sfilla.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -c -o libMatrixFill_la-sfilla.lo `test -f 'sfilla.c' || echo '$(srcdir)/'`sfilla.c
+
+libMatrixFill_la-dfilla.lo: dfilla.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -MT libMatrixFill_la-dfilla.lo -MD -MP -MF $(DEPDIR)/libMatrixFill_la-dfilla.Tpo -c -o libMatrixFill_la-dfilla.lo `test -f 'dfilla.c' || echo '$(srcdir)/'`dfilla.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixFill_la-dfilla.Tpo $(DEPDIR)/libMatrixFill_la-dfilla.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfilla.c' object='libMatrixFill_la-dfilla.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -c -o libMatrixFill_la-dfilla.lo `test -f 'dfilla.c' || echo '$(srcdir)/'`dfilla.c
+
+libMatrixFill_la-cfilla.lo: cfilla.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -MT libMatrixFill_la-cfilla.lo -MD -MP -MF $(DEPDIR)/libMatrixFill_la-cfilla.Tpo -c -o libMatrixFill_la-cfilla.lo `test -f 'cfilla.c' || echo '$(srcdir)/'`cfilla.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixFill_la-cfilla.Tpo $(DEPDIR)/libMatrixFill_la-cfilla.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfilla.c' object='libMatrixFill_la-cfilla.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -c -o libMatrixFill_la-cfilla.lo `test -f 'cfilla.c' || echo '$(srcdir)/'`cfilla.c
+
+libMatrixFill_la-zfilla.lo: zfilla.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -MT libMatrixFill_la-zfilla.lo -MD -MP -MF $(DEPDIR)/libMatrixFill_la-zfilla.Tpo -c -o libMatrixFill_la-zfilla.lo `test -f 'zfilla.c' || echo '$(srcdir)/'`zfilla.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixFill_la-zfilla.Tpo $(DEPDIR)/libMatrixFill_la-zfilla.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfilla.c' object='libMatrixFill_la-zfilla.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixFill_la_CFLAGS) $(CFLAGS) -c -o libMatrixFill_la-zfilla.lo `test -f 'zfilla.c' || echo '$(srcdir)/'`zfilla.c
+
+testDoubleFill-testDoubleFill.o: testDoubleFill.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFill_CFLAGS) $(CFLAGS) -MT testDoubleFill-testDoubleFill.o -MD -MP -MF $(DEPDIR)/testDoubleFill-testDoubleFill.Tpo -c -o testDoubleFill-testDoubleFill.o `test -f 'testDoubleFill.c' || echo '$(srcdir)/'`testDoubleFill.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFill-testDoubleFill.Tpo $(DEPDIR)/testDoubleFill-testDoubleFill.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFill.c' object='testDoubleFill-testDoubleFill.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFill_CFLAGS) $(CFLAGS) -c -o testDoubleFill-testDoubleFill.o `test -f 'testDoubleFill.c' || echo '$(srcdir)/'`testDoubleFill.c
+
+testDoubleFill-testDoubleFill.obj: testDoubleFill.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFill_CFLAGS) $(CFLAGS) -MT testDoubleFill-testDoubleFill.obj -MD -MP -MF $(DEPDIR)/testDoubleFill-testDoubleFill.Tpo -c -o testDoubleFill-testDoubleFill.obj `if test -f 'testDoubleFill.c'; then $(CYGPATH_W) 'testDoubleFill.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFill.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFill-testDoubleFill.Tpo $(DEPDIR)/testDoubleFill-testDoubleFill.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFill.c' object='testDoubleFill-testDoubleFill.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFill_CFLAGS) $(CFLAGS) -c -o testDoubleFill-testDoubleFill.obj `if test -f 'testDoubleFill.c'; then $(CYGPATH_W) 'testDoubleFill.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFill.c'; fi`
+
+testFloatFill-testFloatFill.o: testFloatFill.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFill_CFLAGS) $(CFLAGS) -MT testFloatFill-testFloatFill.o -MD -MP -MF $(DEPDIR)/testFloatFill-testFloatFill.Tpo -c -o testFloatFill-testFloatFill.o `test -f 'testFloatFill.c' || echo '$(srcdir)/'`testFloatFill.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFill-testFloatFill.Tpo $(DEPDIR)/testFloatFill-testFloatFill.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFill.c' object='testFloatFill-testFloatFill.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFill_CFLAGS) $(CFLAGS) -c -o testFloatFill-testFloatFill.o `test -f 'testFloatFill.c' || echo '$(srcdir)/'`testFloatFill.c
+
+testFloatFill-testFloatFill.obj: testFloatFill.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFill_CFLAGS) $(CFLAGS) -MT testFloatFill-testFloatFill.obj -MD -MP -MF $(DEPDIR)/testFloatFill-testFloatFill.Tpo -c -o testFloatFill-testFloatFill.obj `if test -f 'testFloatFill.c'; then $(CYGPATH_W) 'testFloatFill.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFill.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFill-testFloatFill.Tpo $(DEPDIR)/testFloatFill-testFloatFill.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFill.c' object='testFloatFill-testFloatFill.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFill_CFLAGS) $(CFLAGS) -c -o testFloatFill-testFloatFill.obj `if test -f 'testFloatFill.c'; then $(CYGPATH_W) 'testFloatFill.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFill.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/fill/cfilla.c b/2.3-1/src/c/matrixOperations/fill/cfilla.c
new file mode 100644
index 00000000..0c591047
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/cfilla.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fill.h"
+
+void cfilla (floatComplex* in, int rows, int cols, floatComplex constant){
+ int i;
+
+ for (i=0;i<rows*cols;i++) in[i]=FloatComplex(creals(constant),cimags(constant));
+}
diff --git a/2.3-1/src/c/matrixOperations/fill/dfilla.c b/2.3-1/src/c/matrixOperations/fill/dfilla.c
new file mode 100644
index 00000000..69870fd6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/dfilla.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fill.h"
+
+
+void dfilla (double* in, int rows, int cols, double constant){
+ int i;
+
+ for (i=0;i<rows*cols;i++) in[i]=constant;
+}
diff --git a/2.3-1/src/c/matrixOperations/fill/sfilla.c b/2.3-1/src/c/matrixOperations/fill/sfilla.c
new file mode 100644
index 00000000..8201e40f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/sfilla.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fill.h"
+
+
+void sfilla (float* in, int rows, int cols, float constant){
+ int i;
+
+ for (i=0;i<rows*cols;i++) in[i]=constant;
+}
diff --git a/2.3-1/src/c/matrixOperations/fill/testDoubleFill.c b/2.3-1/src/c/matrixOperations/fill/testDoubleFill.c
new file mode 100644
index 00000000..0b5a88c2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/testDoubleFill.c
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "fill.h"
+
+static void dfillaTest(){
+ double in[6];
+ double constant=7;
+ int i;
+ dfilla(in, 2,3,constant);
+ for (i=0;i<6;i++)
+ printf("indice : %d -- valeur : %f\n",i,in[i]);
+
+}
+
+static void zfillaTest(){
+ doubleComplex in[9];
+ doubleComplex constant=DoubleComplex(1,1);
+ int i;
+
+ zfilla(in, 3, 3, constant);
+ for (i=0;i<9;i++)
+ printf("indice : %d -- valeur : %f+%f *i\n",i,zreals(in[i]),zimags(in[i]));
+}
+
+
+static int fillTest(){
+ dfillaTest();
+ zfillaTest();
+ return 0;
+}
+
+int main(void){
+ assert(fillTest()==0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/fill/testFloatFill.c b/2.3-1/src/c/matrixOperations/fill/testFloatFill.c
new file mode 100644
index 00000000..cfe1e61b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/testFloatFill.c
@@ -0,0 +1,47 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "fill.h"
+
+static void sfillaTest(){
+ float in[8];
+ float constant=2;
+ int i;
+ sfilla(in, 4, 2, constant);
+ for (i=0;i<8;i++)
+ printf("indice : %d -- valeur : %f\n",i,in[i]);
+}
+
+static void cfillaTest(){
+ floatComplex in[15];
+ floatComplex constant=FloatComplex(4,0);
+ int i;
+ cfilla(in, 3, 5, constant);
+ for (i=0;i<15;i++)
+ printf("indice : %d -- valeur : %f+%f *i\n",i,creals(in[i]),cimags(in[i]));
+}
+
+
+static int fillTest(){
+ sfillaTest();
+ cfillaTest();
+ return 0;
+}
+
+int main(void){
+ assert(fillTest()==0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj b/2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj
new file mode 100644
index 00000000..69daa27f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{903B0194-F1A9-4302-AC3D-7E88E0406E26}</ProjectGuid>
+ <RootNamespace>testDoubleFill</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleFill.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj.filters b/2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj.filters
new file mode 100644
index 00000000..6bf973ff
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/test_DoubleFill/testDoubleFill.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleFill.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj b/2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj
new file mode 100644
index 00000000..e5c4f797
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{054C79A1-A607-496B-96CE-6F0BB404F754}</ProjectGuid>
+ <RootNamespace>testFloatFill</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatFill.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj.filters b/2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj.filters
new file mode 100644
index 00000000..071148d7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/test_FloatFill/testFloatFill.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatFill.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/fill/zfilla.c b/2.3-1/src/c/matrixOperations/fill/zfilla.c
new file mode 100644
index 00000000..2936cc59
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/fill/zfilla.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fill.h"
+
+
+void zfilla (doubleComplex* in, int rows, int cols, doubleComplex constant){
+ int i;
+
+ for (i=0;i<rows*cols;i++) in[i]=DoubleComplex(zreals(constant),zimags(constant));
+}
diff --git a/2.3-1/src/c/matrixOperations/flipdim/dflipdima.c b/2.3-1/src/c/matrixOperations/flipdim/dflipdima.c
new file mode 100644
index 00000000..b510c445
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/flipdim/dflipdima.c
@@ -0,0 +1,81 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function flips the input matrix along given dimension*/
+
+#include "flipdim.h"
+
+void dflipdima (double *in, int row, int col, int dim, int blk_size, double *out)
+{
+ int col_count = 0, row_count = 0, blk_count = 0, count = 0;
+ if(dim == 1) /*flip rows*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - row_count - 1)];
+ }
+ }
+ }
+ else /*block size is more than 1*/
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - blk_count*blk_size - count)];
+ if(--count == 0)
+ {
+ blk_count += 1;
+ count = blk_size;
+ }
+ }
+ }
+
+ }
+ }
+ else if(dim == 2) /*flip columns*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col- col_count - 1)*row+row_count];
+ }
+ }
+ }
+ else
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col - blk_count*blk_size - count)*row+row_count];
+ }
+ if(--count == 0)
+ {
+ count = blk_size;
+ blk_count += 1;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/flipdim/i16flipdima.c b/2.3-1/src/c/matrixOperations/flipdim/i16flipdima.c
new file mode 100644
index 00000000..eb51221f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/flipdim/i16flipdima.c
@@ -0,0 +1,81 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function flips the input matrix along given dimension*/
+
+#include "flipdim.h"
+
+void i16flipdima (int16 *in, int row, int col, int dim, int blk_size, int16 *out)
+{
+ int col_count = 0, row_count = 0, blk_count = 0, count = 0;
+ if(dim == 1) /*flip rows*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - row_count - 1)];
+ }
+ }
+ }
+ else /*block size is more than 1*/
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - blk_count*blk_size - count)];
+ if(--count == 0)
+ {
+ blk_count += 1;
+ count = blk_size;
+ }
+ }
+ }
+
+ }
+ }
+ else if(dim == 2) /*flip columns*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col- col_count - 1)*row+row_count];
+ }
+ }
+ }
+ else
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col - blk_count*blk_size - count)*row+row_count];
+ }
+ if(--count == 0)
+ {
+ count = blk_size;
+ blk_count += 1;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/flipdim/i8flipdima.c b/2.3-1/src/c/matrixOperations/flipdim/i8flipdima.c
new file mode 100644
index 00000000..1c23a5ea
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/flipdim/i8flipdima.c
@@ -0,0 +1,81 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function flips the input matrix along given dimension*/
+
+#include "flipdim.h"
+
+void i8flipdima (int8 *in, int row, int col, int dim, int blk_size, int8 *out)
+{
+ int col_count = 0, row_count = 0, blk_count = 0, count = 0;
+ if(dim == 1) /*flip rows*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - row_count - 1)];
+ }
+ }
+ }
+ else /*block size is more than 1*/
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - blk_count*blk_size - count)];
+ if(--count == 0)
+ {
+ blk_count += 1;
+ count = blk_size;
+ }
+ }
+ }
+
+ }
+ }
+ else if(dim == 2) /*flip columns*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col- col_count - 1)*row+row_count];
+ }
+ }
+ }
+ else
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col - blk_count*blk_size - count)*row+row_count];
+ }
+ if(--count == 0)
+ {
+ count = blk_size;
+ blk_count += 1;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/flipdim/sflipdima.c b/2.3-1/src/c/matrixOperations/flipdim/sflipdima.c
new file mode 100644
index 00000000..85746996
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/flipdim/sflipdima.c
@@ -0,0 +1,81 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function flips the input matrix along given dimension*/
+
+#include "flipdim.h"
+
+void sflipdima (float *in, int row, int col, int dim, int blk_size, float *out)
+{
+ int col_count = 0, row_count = 0, blk_count = 0, count = 0;
+ if(dim == 1) /*flip rows*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - row_count - 1)];
+ }
+ }
+ }
+ else /*block size is more than 1*/
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - blk_count*blk_size - count)];
+ if(--count == 0)
+ {
+ blk_count += 1;
+ count = blk_size;
+ }
+ }
+ }
+
+ }
+ }
+ else if(dim == 2) /*flip columns*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col- col_count - 1)*row+row_count];
+ }
+ }
+ }
+ else
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col - blk_count*blk_size - count)*row+row_count];
+ }
+ if(--count == 0)
+ {
+ count = blk_size;
+ blk_count += 1;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/flipdim/u16flipdima.c b/2.3-1/src/c/matrixOperations/flipdim/u16flipdima.c
new file mode 100644
index 00000000..3689b944
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/flipdim/u16flipdima.c
@@ -0,0 +1,81 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function flips the input matrix along given dimension*/
+
+#include "flipdim.h"
+
+void u16flipdima (uint16 *in, int row, int col, int dim, int blk_size, uint16 *out)
+{
+ int col_count = 0, row_count = 0, blk_count = 0, count = 0;
+ if(dim == 1) /*flip rows*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - row_count - 1)];
+ }
+ }
+ }
+ else /*block size is more than 1*/
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - blk_count*blk_size - count)];
+ if(--count == 0)
+ {
+ blk_count += 1;
+ count = blk_size;
+ }
+ }
+ }
+
+ }
+ }
+ else if(dim == 2) /*flip columns*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col- col_count - 1)*row+row_count];
+ }
+ }
+ }
+ else
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col - blk_count*blk_size - count)*row+row_count];
+ }
+ if(--count == 0)
+ {
+ count = blk_size;
+ blk_count += 1;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/flipdim/u8flipdima.c b/2.3-1/src/c/matrixOperations/flipdim/u8flipdima.c
new file mode 100644
index 00000000..bae8c12f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/flipdim/u8flipdima.c
@@ -0,0 +1,80 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+/*Function flips the input matrix along given dimension*/
+
+#include "flipdim.h"
+
+void u8flipdima (uint8 *in, int row, int col, int dim, int blk_size, uint8 *out)
+{
+ int col_count = 0, row_count = 0, blk_count = 0, count = 0;
+ if(dim == 1) /*flip rows*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - row_count - 1)];
+ }
+ }
+ }
+ else /*block size is more than 1*/
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[col_count*row+(row - blk_count*blk_size - count)];
+ if(--count == 0)
+ {
+ blk_count += 1;
+ count = blk_size;
+ }
+ }
+ }
+
+ }
+ }
+ else if(dim == 2) /*flip columns*/
+ {
+ if(blk_size == 1)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col- col_count - 1)*row+row_count];
+ }
+ }
+ }
+ else
+ {
+ count = blk_size;
+ blk_count = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ for(row_count = 0; row_count< row;row_count++)
+ {
+ out[col_count*row+row_count] = in[(col - blk_count*blk_size - count)*row+row_count];
+ }
+ if(--count == 0)
+ {
+ count = blk_size;
+ blk_count += 1;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/hilb/Makefile.am b/2.3-1/src/c/matrixOperations/hilb/Makefile.am
new file mode 100644
index 00000000..4ffb7ccb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/Makefile.am
@@ -0,0 +1,37 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libHilbert_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libHilbert.la
+
+HEAD = ../includes/hilbert.h
+
+libHilbert_la_SOURCES = $(HEAD) \
+ shilba.c \
+ dhilba.c
+
+check_PROGRAMS = testHilbert
+
+check_LDADD = libHilbert.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+testHilbert_SOURCES = testHilbert.c
+testHilbert_LDADD = $(check_LDADD)
+testHilbert_CFLAGS = $(check_INCLUDES)
+
+TESTS = testHilbert
diff --git a/2.3-1/src/c/matrixOperations/hilb/Makefile.in b/2.3-1/src/c/matrixOperations/hilb/Makefile.in
new file mode 100644
index 00000000..66c2614b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/Makefile.in
@@ -0,0 +1,688 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testHilbert$(EXEEXT)
+TESTS = testHilbert$(EXEEXT)
+subdir = src/c/matrixOperations/hilb
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libHilbert_la_LIBADD =
+am__objects_1 =
+am_libHilbert_la_OBJECTS = $(am__objects_1) libHilbert_la-shilba.lo \
+ libHilbert_la-dhilba.lo
+libHilbert_la_OBJECTS = $(am_libHilbert_la_OBJECTS)
+libHilbert_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libHilbert_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testHilbert_OBJECTS = testHilbert-testHilbert.$(OBJEXT)
+testHilbert_OBJECTS = $(am_testHilbert_OBJECTS)
+testHilbert_DEPENDENCIES = $(check_LDADD)
+testHilbert_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testHilbert_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libHilbert_la_SOURCES) $(testHilbert_SOURCES)
+DIST_SOURCES = $(libHilbert_la_SOURCES) $(testHilbert_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libHilbert_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libHilbert.la
+HEAD = ../includes/hilbert.h
+libHilbert_la_SOURCES = $(HEAD) \
+ shilba.c \
+ dhilba.c
+
+check_LDADD = libHilbert.la
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I ../includes
+
+testHilbert_SOURCES = testHilbert.c
+testHilbert_LDADD = $(check_LDADD)
+testHilbert_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/hilb/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/hilb/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libHilbert.la: $(libHilbert_la_OBJECTS) $(libHilbert_la_DEPENDENCIES)
+ $(libHilbert_la_LINK) -rpath $(pkglibdir) $(libHilbert_la_OBJECTS) $(libHilbert_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testHilbert$(EXEEXT): $(testHilbert_OBJECTS) $(testHilbert_DEPENDENCIES)
+ @rm -f testHilbert$(EXEEXT)
+ $(testHilbert_LINK) $(testHilbert_OBJECTS) $(testHilbert_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHilbert_la-dhilba.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHilbert_la-shilba.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testHilbert-testHilbert.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libHilbert_la-shilba.lo: shilba.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -MT libHilbert_la-shilba.lo -MD -MP -MF $(DEPDIR)/libHilbert_la-shilba.Tpo -c -o libHilbert_la-shilba.lo `test -f 'shilba.c' || echo '$(srcdir)/'`shilba.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libHilbert_la-shilba.Tpo $(DEPDIR)/libHilbert_la-shilba.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shilba.c' object='libHilbert_la-shilba.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -c -o libHilbert_la-shilba.lo `test -f 'shilba.c' || echo '$(srcdir)/'`shilba.c
+
+libHilbert_la-dhilba.lo: dhilba.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -MT libHilbert_la-dhilba.lo -MD -MP -MF $(DEPDIR)/libHilbert_la-dhilba.Tpo -c -o libHilbert_la-dhilba.lo `test -f 'dhilba.c' || echo '$(srcdir)/'`dhilba.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libHilbert_la-dhilba.Tpo $(DEPDIR)/libHilbert_la-dhilba.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhilba.c' object='libHilbert_la-dhilba.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -c -o libHilbert_la-dhilba.lo `test -f 'dhilba.c' || echo '$(srcdir)/'`dhilba.c
+
+testHilbert-testHilbert.o: testHilbert.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -MT testHilbert-testHilbert.o -MD -MP -MF $(DEPDIR)/testHilbert-testHilbert.Tpo -c -o testHilbert-testHilbert.o `test -f 'testHilbert.c' || echo '$(srcdir)/'`testHilbert.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testHilbert-testHilbert.Tpo $(DEPDIR)/testHilbert-testHilbert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testHilbert.c' object='testHilbert-testHilbert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -c -o testHilbert-testHilbert.o `test -f 'testHilbert.c' || echo '$(srcdir)/'`testHilbert.c
+
+testHilbert-testHilbert.obj: testHilbert.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -MT testHilbert-testHilbert.obj -MD -MP -MF $(DEPDIR)/testHilbert-testHilbert.Tpo -c -o testHilbert-testHilbert.obj `if test -f 'testHilbert.c'; then $(CYGPATH_W) 'testHilbert.c'; else $(CYGPATH_W) '$(srcdir)/testHilbert.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testHilbert-testHilbert.Tpo $(DEPDIR)/testHilbert-testHilbert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testHilbert.c' object='testHilbert-testHilbert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -c -o testHilbert-testHilbert.obj `if test -f 'testHilbert.c'; then $(CYGPATH_W) 'testHilbert.c'; else $(CYGPATH_W) '$(srcdir)/testHilbert.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/hilb/dhilba.c b/2.3-1/src/c/matrixOperations/hilb/dhilba.c
new file mode 100644
index 00000000..3a03c0fb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/dhilba.c
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "hilb.h"
+
+void dhilba ( double* out, int size ){
+
+ int iIndex1 = 0;
+ int iIndex2 = 0;
+ double dblVal = size;
+ double dblTemp = 0;
+
+ for(iIndex1 = 0 ; iIndex1 < size ; iIndex1++)
+ {
+ if(iIndex1 != 0)
+ dblVal = ((size - iIndex1) * dblVal * (size + iIndex1)) / pow((double)iIndex1,2);
+
+ dblTemp = dblVal * dblVal;
+
+ out[iIndex1 * size + iIndex1] = dblTemp / ( 2 * iIndex1 + 1);
+
+ if(iIndex1 == size - 1)
+ break;
+
+ for(iIndex2 = iIndex1 + 1 ; iIndex2 < size ; iIndex2++)
+ {
+ dblTemp = -((size - iIndex2) * dblTemp * (size + iIndex2)) / pow((double)iIndex2,2);
+ out[iIndex1 * size + iIndex2] = dblTemp / (iIndex1 + iIndex2 + 1);
+ out[iIndex2 * size + iIndex1] = out[iIndex1 * size + iIndex2];
+ }
+ }
+
+
+}
diff --git a/2.3-1/src/c/matrixOperations/hilb/shilba.c b/2.3-1/src/c/matrixOperations/hilb/shilba.c
new file mode 100644
index 00000000..25249ced
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/shilba.c
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "hilb.h"
+
+void shilba ( float* out, int size ){
+
+ int iIndex1 = 0;
+ int iIndex2 = 0;
+ float dblVal = (float) size;
+ float dblTemp = 0;
+
+ for(iIndex1 = 0 ; iIndex1 < size ; iIndex1++)
+ {
+ if(iIndex1 != 0)
+ dblVal = ((float)(size - iIndex1) * dblVal * (float)(size + iIndex1)) /(float) pow((double)iIndex1,2);
+
+ dblTemp = dblVal * dblVal;
+
+ out[iIndex1 * size + iIndex1] =(float) dblTemp /(float) ( 2 * iIndex1 + 1);
+
+ if(iIndex1 == size - 1)
+ break;
+
+ for(iIndex2 = iIndex1 + 1 ; iIndex2 < size ; iIndex2++)
+ {
+ dblTemp = -((float)(size - iIndex2) * dblTemp *(float) (size + iIndex2)) /(float) pow((double)iIndex2,2);
+ out[iIndex1 * size + iIndex2] = dblTemp /(float) (iIndex1 + iIndex2 + 1);
+ out[iIndex2 * size + iIndex1] = out[iIndex1 * size + iIndex2];
+ }
+ }
+
+
+}
diff --git a/2.3-1/src/c/matrixOperations/hilb/testHilbert.c b/2.3-1/src/c/matrixOperations/hilb/testHilbert.c
new file mode 100644
index 00000000..2dab1a01
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/testHilbert.c
@@ -0,0 +1,112 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "hilb.h"
+
+#define SIZE 6
+
+static void shilbaTest ( void ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+
+ float Result[] =
+ {36.0f,-630.0f,3360.0f,-7560.0f,7560.0f,-2772.0f,
+-630.0f,14700.0f,-88200.0f,211680.0f,-220500.0f,83160.0f,
+3360.0f,-88200.0f,564480.0f,-1411200.0f,1512000.0f,-582120.0f,
+-7560.0f,211680.0f,-1411200.0f,3628800.0f,-3969000.0f,1552320.0f,
+7560.0f,-220500.0f,1512000.0f,-3969000.0f,4410000.0f,-1746360.0f,
+-2772.0f,83160.0f,-582120.0f,1552320.0f,-1746360.0f,698544.0f};
+
+
+
+ float out[SIZE*SIZE] ;
+ shilba ( out , SIZE ) ;
+
+ for (i = 0 ; i < SIZE ; i++)
+ {
+ printf ("\n\t" ) ;
+ for ( j = 0 ; j < SIZE; j++)
+ printf ("%e\t" , out[i + j*SIZE] );
+
+ }
+
+ for ( i = 0 ; i < SIZE*SIZE ; i++ )
+ {
+ assert ( fabs ( out[i] - Result[i] ) / fabs( out[i]) < 1e-06 ) ;
+ }
+
+ printf ("\n\n" ) ;
+}
+
+static void dhilbaTest ( void ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ double Result[] =
+{36,-630,3360,-7560,7560,-2772,
+-630,14700,-88200,211680,-220500,83160,
+3360,-88200,564480,-1411200,1512000,-582120,
+-7560,211680,-1411200,3628800,-3969000,1552320,
+7560,-220500,1512000,-3969000,4410000,-1746360,
+-2772,83160,-582120,1552320,-1746360,698544}
+;
+
+
+ double out[SIZE*SIZE] ;
+
+ dhilba ( out , SIZE ) ;
+
+ for (i = 0 ; i < SIZE ; i++)
+ {
+ printf ("\n\t" ) ;
+ for ( j = 0 ; j < SIZE; j++)
+ printf ("%e\t" , out[i + j*SIZE] );
+
+ }
+
+
+ for ( i = 0 ; i < SIZE*SIZE ; i++ )
+ {
+ assert ( fabs ( out[i] - Result[i] ) / fabs( out[i]) < 1e-16 ) ;
+ }
+
+ printf ("\n\n" ) ;
+}
+
+
+
+static int testHilbert(void) {
+
+ printf("\n>>>>Hilbert's Matrix Tests\n");
+
+ printf("\n\t>>> Float Test\n");
+ shilbaTest();
+
+ printf("\n\t>>> Double Test\n");
+ dhilbaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testHilbert() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj b/2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj
new file mode 100644
index 00000000..53b805d2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F7747E9B-A57F-43D2-8C1F-1F77C670B406}</ProjectGuid>
+ <RootNamespace>testHilbert</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testHilbert.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj.filters b/2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj.filters
new file mode 100644
index 00000000..0e5affae
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/hilb/test_Hilbert/testHilbert.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testHilbert.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/includes/cat.h b/2.3-1/src/c/matrixOperations/includes/cat.h
new file mode 100644
index 00000000..dde6b9bd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/cat.h
@@ -0,0 +1,162 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __CAT_H__
+#define __CAT_H__
+#include "types.h"
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief concat 2 floats scalars
+*/
+EXTERN_MATOPS void srowcats(float in1, float in2, float *out);
+EXTERN_MATOPS void scolumncats(float in1, float in2, float *out);
+
+/*
+** \brief concat 2 double scalars
+*/
+EXTERN_MATOPS void drowcats(double in1, double in2, double *out);
+EXTERN_MATOPS void dcolumncats(double in1, double in2, double *out);
+
+/*
+** \brief concat 2 floats complex scalars
+*/
+EXTERN_MATOPS void crowcats(floatComplex in1, floatComplex in2, floatComplex *out);
+EXTERN_MATOPS void ccolumncats(floatComplex in1, floatComplex in2, floatComplex *out);
+
+/*
+** \brief concat 2 double complex scalars
+*/
+EXTERN_MATOPS void zrowcats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
+EXTERN_MATOPS void zcolumncats(doubleComplex in1, doubleComplex in2, doubleComplex *out);
+
+/*
+** \brief Concat float arrays
+** \param in1 the float array to process
+** \param lines1
+** \param columns1
+** \param in2 the float array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+EXTERN_MATOPS void srowcata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out);
+EXTERN_MATOPS void scolumncata(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float* out);
+
+/*
+** \brief Concat double arrays
+** \param in1 the double array to process
+** \param lines1
+** \param columns1
+** \param in2 the double array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+EXTERN_MATOPS void drowcata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out);
+EXTERN_MATOPS void dcolumncata(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double* out);
+
+/*
+** \brief Concat Complex float arrays
+** \param in1 the Complex float array to process
+** \param lines1
+** \param columns1
+** \param in2 the Complex float array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+EXTERN_MATOPS void crowcata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out);
+EXTERN_MATOPS void ccolumncata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex* out);
+
+/*
+** \brief Concat Complex double arrays
+** \param in1 the Complex double array to process
+** \param lines1
+** \param columns1
+** \param in2 the Complex double array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+EXTERN_MATOPS void zrowcata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out);
+EXTERN_MATOPS void zcolumncata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex* out);
+
+/*
+** \brief Concat uint8 arrays
+** \param in1 the uint8 array to process
+** \param lines1
+** \param columns1
+** \param in2 the uint8 array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+
+EXTERN_MATOPS void u8rowcata(uint8 *in1, int lines1, int columns1, uint8 *in2, int lines2, int columns2, uint8* out);
+EXTERN_MATOPS void u8columncata(uint8 *in1, int lines1, int columns1, uint8 *in2, int lines2, int columns2, uint8* out);
+
+/*
+** \brief Concat uint16 arrays
+** \param in1 the uint16 array to process
+** \param lines1
+** \param columns1
+** \param in2 the uint16 array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+
+EXTERN_MATOPS void u16rowcata(uint16 *in1, int lines1, int columns1, uint16 *in2, int lines2, int columns2, uint16* out);
+EXTERN_MATOPS void u16columncata(uint16 *in1, int lines1, int columns1, uint16 *in2, int lines2, int columns2, uint16* out);
+
+
+/*
+** \brief Concat int8 arrays
+** \param in1 the int8 array to process
+** \param lines1
+** \param columns1
+** \param in2 the int8 array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+
+EXTERN_MATOPS void i8rowcata(int8 *in1, int lines1, int columns1, int8 *in2, int lines2, int columns2, int8* out);
+EXTERN_MATOPS void i8columncata(int8 *in1, int lines1, int columns1, int8 *in2, int lines2, int columns2, int8* out);
+
+/*
+** \brief Concat int16 arrays
+** \param in1 the int16 array to process
+** \param lines1
+** \param columns1
+** \param in2 the int16 array to process to concat
+** \param lines2
+** \param columns2
+** \param out the concatenation
+*/
+
+EXTERN_MATOPS void i16rowcata(int16 *in1, int lines1, int columns1, int16 *in2, int lines2, int columns2, int16* out);
+EXTERN_MATOPS void i16columncata(int16 *in1, int lines1, int columns1, int16 *in2, int lines2, int columns2, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__CAT_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/chol.h b/2.3-1/src/c/matrixOperations/includes/chol.h
new file mode 100644
index 00000000..0a17406d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/chol.h
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __CHOL_H__
+#define __CHOL_H__
+
+#include "dynlib_matrixoperations.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS double dchols(double in);
+EXTERN_MATOPS void dchola(double *in, int size, double *out);
+
+EXTERN_MATOPS float schols(float in);
+EXTERN_MATOPS void schola(float *in, int size, float *out);
+
+#define zchols(in) DoubleComplex(dchols(zreals(in)),0)
+
+EXTERN_MATOPS void zchola (doubleComplex *in, int size, doubleComplex *out);
+
+#define cchols(in) FloatComplex(schols(creals(in)),0)
+EXTERN_MATOPS void cchola(floatComplex *in, int size, floatComplex *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CHOL_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/cumprod.h b/2.3-1/src/c/matrixOperations/includes/cumprod.h
new file mode 100644
index 00000000..f47fd77a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/cumprod.h
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CUMPROD_H__
+#define __CUMPROD_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcumproda(double *in1, int row, int column, double *out);
+void drowcumproda(double *in1, int row, int column, double *out);
+void dcolumncumproda(double *in1, int row, int column, double *out);
+
+void scumproda(float *in1, int row, int column, float *out);
+void srowcumproda(float *in1, int row, int column, float *out);
+void scolumncumproda(float *in1, int row, int column, float *out);
+
+void u8cumproda(uint8 *in1, int row, int column, uint8 *out);
+void u8rowcumproda(uint8 *in1, int row, int column, uint8 *out);
+void u8columncumproda(uint8 *in1, int row, int column, uint8 *out);
+
+void i8cumproda(int8 *in1, int row, int column, int8 *out);
+void i8rowcumproda(int8 *in1, int row, int column, int8 *out);
+void i8columncumproda(int8 *in1, int row, int column, int8 *out);
+
+void u16cumproda(uint16 *in1, int row, int column, uint16 *out);
+void u16rowcumproda(uint16 *in1, int row, int column, uint16 *out);
+void u16columncumproda(uint16 *in1, int row, int column, uint16 *out);
+
+void i16cumproda(int16 *in1, int row, int column, int16 *out);
+void i16rowcumproda(int16 *in1, int row, int column, int16 *out);
+void i16columncumproda(int16 *in1, int row, int column, int16 *out);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__CUMPROD_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/cumsum.h b/2.3-1/src/c/matrixOperations/includes/cumsum.h
new file mode 100644
index 00000000..24d81bdf
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/cumsum.h
@@ -0,0 +1,53 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CUMSUM_H__
+#define __CUMSUM_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcumsuma(double *in1, int row, int column, double *out);
+void drowcumsuma(double *in1, int row, int column, double *out);
+void dcolumncumsuma(double *in1, int row, int column, double *out);
+
+void scumsuma(float *in1, int row, int column, float *out);
+void srowcumsuma(float *in1, int row, int column, float *out);
+void scolumncumsuma(float *in1, int row, int column, float *out);
+
+void u8cumsuma(uint8 *in1, int row, int column, uint8 *out);
+void u8rowcumsuma(uint8 *in1, int row, int column, uint8 *out);
+void u8columncumsuma(uint8 *in1, int row, int column, uint8 *out);
+
+void i8cumsuma(int8 *in1, int row, int column, int8 *out);
+void i8rowcumsuma(int8 *in1, int row, int column, int8 *out);
+void i8columncumsuma(int8 *in1, int row, int column, int8 *out);
+
+void u16cumsuma(uint16 *in1, int row, int column, uint16 *out);
+void u16rowcumsuma(uint16 *in1, int row, int column, uint16 *out);
+void u16columncumsuma(uint16 *in1, int row, int column, uint16 *out);
+
+void i16cumsuma(int16 *in1, int row, int column, int16 *out);
+void i16rowcumsuma(int16 *in1, int row, int column, int16 *out);
+void i16columncumsuma(int16 *in1, int row, int column, int16 *out);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__CUMSUM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/determ.h b/2.3-1/src/c/matrixOperations/includes/determ.h
new file mode 100644
index 00000000..d915c31b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/determ.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __DETERM_H__
+#define __DETERM_H__
+
+#include "dynlib_matrixoperations.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS double ddeterma (double *in, int rows);
+
+EXTERN_MATOPS float sdeterma (float *in, int rows);
+
+EXTERN_MATOPS doubleComplex zdeterma (doubleComplex *in, int rows);
+
+EXTERN_MATOPS floatComplex cdeterma (floatComplex *in, int rows);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __DETERM_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/diag.h b/2.3-1/src/c/matrixOperations/includes/diag.h
new file mode 100644
index 00000000..5f97923d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/diag.h
@@ -0,0 +1,97 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __DIAG_H__
+#define __DIAG_H__
+
+#include "dynlib_matrixoperations.h"
+#include "types.h"
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS double ddiags(double in );
+
+EXTERN_MATOPS void ddiaga(double in, int size,int insert_post,double *out);
+
+EXTERN_MATOPS void ddiagina(double *in, int _row,int _column,int insert_post,double *out);
+
+EXTERN_MATOPS void ddiagins(double* in, int size, double* out );
+
+EXTERN_MATOPS void ddiagexa(double* in,int row,int column,int insert_pos,double* out);
+
+EXTERN_MATOPS double ddiagexs(double* in,int row,int column,int extract_pos);
+
+EXTERN_MATOPS uint8 u8diags(uint8 in );
+
+EXTERN_MATOPS void u8diaga(uint8 in, int size,int insert_post,uint8 *out);
+
+EXTERN_MATOPS void u8diagina(uint8 *in, int _row,int _column,int insert_post,uint8 *out);
+
+EXTERN_MATOPS void u8diagins(uint8* in, int size, uint8* out );
+
+EXTERN_MATOPS void u8diagexa(uint8* in,int row,int column,int insert_pos,uint8* out);
+
+EXTERN_MATOPS uint8 u8diagexs(uint8* in,int row,int column,int extract_pos);
+
+EXTERN_MATOPS uint16 u16diags(uint16 in );
+
+EXTERN_MATOPS void u16diaga(uint16 in, int size,int insert_post,uint16 *out);
+
+EXTERN_MATOPS void u16diagina(uint16 *in, int _row,int _column,int insert_post,uint16 *out);
+
+EXTERN_MATOPS void u16diagins(uint16* in, int size, uint16* out );
+
+EXTERN_MATOPS void u16diagexa(uint16* in,int row,int column,int insert_pos,uint16* out);
+
+EXTERN_MATOPS uint16 u16diagexs(uint16* in,int row,int column,int extract_pos);
+
+EXTERN_MATOPS int8 i8diags(int8 in );
+
+EXTERN_MATOPS void i8diaga(int8 in, int size,int insert_post,int8 *out);
+
+EXTERN_MATOPS void i8diagina(int8 *in, int _row,int _column,int insert_post,int8 *out);
+
+EXTERN_MATOPS void i8diagins(int8* in, int size, int8* out );
+
+EXTERN_MATOPS void i8diagexa(int8* in,int row,int column,int insert_pos,int8* out);
+
+EXTERN_MATOPS int8 i8diagexs(int8* in,int row,int column,int extract_pos);
+
+EXTERN_MATOPS int16 i16diags(int16 in );
+
+EXTERN_MATOPS void i16diaga(int16 in, int size,int insert_post,int16 *out);
+
+EXTERN_MATOPS void i16diagina(int16 *in, int _row,int _column,int insert_post,int16 *out);
+
+EXTERN_MATOPS void i16diagins(int16* in, int size, int16* out );
+
+EXTERN_MATOPS void i16diagexa(int16* in,int row,int column,int insert_pos,int16* out);
+
+EXTERN_MATOPS int16 i16diagexs(int16* in,int row,int column,int extract_pos);
+
+
+
+
+
+
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__DIAG_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/dist.h b/2.3-1/src/c/matrixOperations/includes/dist.h
new file mode 100644
index 00000000..bf45a8d7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/dist.h
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+
+
+#ifndef __DIST_H__
+#define __DIST_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+ /* Computes the euclidian distance
+ between 2 scalars/arrays.
+ We assume both arrays have the same
+ numbers of lines and columns.*/
+
+EXTERN_MATOPS float sdists( float in1, float in2);
+EXTERN_MATOPS float sdista( float* in1, float* in2, int lines, int columns);
+
+EXTERN_MATOPS double ddists( double in1, double in2);
+EXTERN_MATOPS double ddista( double* in1, double* in2, int lines, int columns);
+
+EXTERN_MATOPS float cdists( floatComplex in1, floatComplex in2);
+EXTERN_MATOPS float cdista( floatComplex* in1, floatComplex* in2, int lines, int columns);
+
+EXTERN_MATOPS double zdists( doubleComplex in1, doubleComplex in2);
+EXTERN_MATOPS double zdista( doubleComplex* in1, doubleComplex* in2, int lines, int columns);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__DIST_H__*/
+
diff --git a/2.3-1/src/c/matrixOperations/includes/dynlib_matrixoperations.h b/2.3-1/src/c/matrixOperations/includes/dynlib_matrixoperations.h
new file mode 100644
index 00000000..a0597a59
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/dynlib_matrixoperations.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_MATRIXOPERATIONS_H__
+#define __DYNLIB_MATRIXOPERATIONS_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if MATRIXOPERATIONS_EXPORTS
+ #define EXTERN_MATOPS __declspec (dllexport)
+ #else
+ #define EXTERN_MATOPS __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_MATOPS
+#endif
+
+#endif /* __DYNLIB_MATRIXOPERATIONS_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/eye.h b/2.3-1/src/c/matrixOperations/includes/eye.h
new file mode 100644
index 00000000..95bdd797
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/eye.h
@@ -0,0 +1,110 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __EYE_H__
+#define __EYE_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "ones.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief create a float Eye value
+*/
+#define seyes(in) 1.0f
+
+/*
+** \brief create a Double Eye value
+*/
+#define deyes(in) 1.0
+
+/*
+** \brief create a float complex Eye value
+*/
+#define ceyes(in) FloatComplex(1.0f, 0)
+
+/*
+** \brief create a Double complex Eye value
+*/
+#define zeyes(in) DoubleComplex(1, 0)
+
+/*
+** \brief create a Uint8 Eye value
+*/
+#define u8eyes(in) (uint8)1
+
+/*
+** \brief create a int8 Eye value
+*/
+#define i8eyes(in) (int8)1
+
+/*
+** \brief create a Uint16 Eye value
+*/
+#define u16eyes(in) (uint16)1
+
+/*
+** \brief create a int16 Eye value
+*/
+#define i16eyes(in) (int16)1
+
+/*
+** \brief create a float Eye matrix
+*/
+EXTERN_MATOPS void seyea(float* in, int _iRows, int _iCols);
+
+/*
+** \brief create a Double Eye matrix
+*/
+EXTERN_MATOPS void deyea(double* in, int _iRows, int _iCols);
+
+/*
+** \brief create a float complex Eye matrix
+*/
+EXTERN_MATOPS void ceyea(floatComplex* in, int _iRows, int _iCols);
+
+/*
+** \brief create a Double complex Eye matrix
+*/
+EXTERN_MATOPS void zeyea(doubleComplex* in, int _iRows, int _iCols);
+
+/*
+** \brief create a uint8 Eye matrix
+*/
+EXTERN_MATOPS void u8eyea(uint8* in, int _iRows, int _iCols);
+
+/*
+** \brief create a int8 Eye matrix
+*/
+EXTERN_MATOPS void i8eyea(int8* in, int _iRows, int _iCols);
+
+/*
+** \brief create a uint16 Eye matrix
+*/
+EXTERN_MATOPS void u16eyea(uint16* in, int _iRows, int _iCols);
+
+/*
+** \brief create a int16 Eye matrix
+*/
+EXTERN_MATOPS void i16eyea(int16* in, int _iRows, int _iCols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__EYE_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/fill.h b/2.3-1/src/c/matrixOperations/includes/fill.h
new file mode 100644
index 00000000..09b8d811
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/fill.h
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __FILL_H__
+#define __FILL_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*filling of a array with constant*/
+
+EXTERN_MATOPS void dfilla (double* in, int rows, int cols, double constant);
+
+EXTERN_MATOPS void sfilla (float* in, int rows, int cols, float constant);
+
+EXTERN_MATOPS void cfilla (floatComplex* in, int rows, int cols, floatComplex constant);
+
+EXTERN_MATOPS void zfilla (doubleComplex* in, int rows, int cols, doubleComplex constant);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __FILL_H__ */
+
+
diff --git a/2.3-1/src/c/matrixOperations/includes/flipdim.h b/2.3-1/src/c/matrixOperations/includes/flipdim.h
new file mode 100644
index 00000000..bdf4a688
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/flipdim.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __FLIPDIM_H__
+#define __FLIPDIM_H__
+
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dflipdima (double *in, int row, int col, int dim, int blk_size, double *out);
+
+void sflipdima (float *in, int row, int col, int dim, int blk_size, float *out);
+
+void u8flipdima (uint8 *in, int row, int col, int dim, int blk_size, uint8 *out);
+
+void i8flipdima (int8 *in, int row, int col, int dim, int blk_size, int8 *out);
+
+void u16flipdima (uint16 *in, int row, int col, int dim, int blk_size, uint16 *out);
+
+void i16flipdima (int16 *in, int row, int col, int dim, int blk_size, int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__FLIPDIM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/hilb.h b/2.3-1/src/c/matrixOperations/includes/hilb.h
new file mode 100644
index 00000000..65efd0e2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/hilb.h
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __HILB_H__
+#define __HILB_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include <math.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** generate an Hilbert's matrix
+** param out : the hilbert's matrix in float precision
+** param size: matrix's size
+*/
+
+EXTERN_MATOPS void shilba ( float* out, int size) ;
+
+/*
+** generate an Hilbert's matrix
+** param out : the hilbert's matrix in double precision
+** param size: matrix's size
+*/
+
+
+EXTERN_MATOPS void dhilba ( double* out, int size ) ;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__HILB_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/infiniteNorm.h b/2.3-1/src/c/matrixOperations/includes/infiniteNorm.h
new file mode 100644
index 00000000..130cfeaf
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/infiniteNorm.h
@@ -0,0 +1,67 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __INFINITENORM_H__
+#define __INFINITENORM_H__
+
+#include "dynlib_matrixoperations.h"
+#include "sign.h"
+#include "pythag.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief Compute the infinite norm of a given floats matrix.
+** \param in : input matrix.
+** \param _iRows : number of rows of the matrix .
+** \param _iCols : number of columns of the matrix .
+*/
+
+EXTERN_MATOPS float sinfnorma(float* in, int _iRows, int _iCols);
+
+/*
+** \brief Compute the infinite norm of a given doubles matrix.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+EXTERN_MATOPS double dinfnorma(double* in, int _iRows, int _iCols);
+
+/*
+** \brief Compute the infinite norm of a given complex floats matrix.
+** \param in : input matrix.
+** \param _iRows : number of rows of the matrix .
+** \param _iCols : number of columns of the matrix .
+*/
+
+EXTERN_MATOPS float cinfnorma(floatComplex* in, int _iRows, int _iCols);
+
+/*
+** \brief Compute the infinite norm of a given complex doubles matrix.
+** \param in : input matrix.
+** \param _iRows : number of rows of the matrix .
+** \param _iCols : number of columns of the matrix .
+*/
+
+EXTERN_MATOPS double zinfnorma(doubleComplex* in, int _iRows, int _iCols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__INFINITENORM_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/jmat.h b/2.3-1/src/c/matrixOperations/includes/jmat.h
new file mode 100644
index 00000000..38a8b1e2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/jmat.h
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __JMAT_H__
+#define __JMAT_H__
+
+#include "dynlib_matrixoperations.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS void sjmata(float in1, float in2, float* out);
+EXTERN_MATOPS void djmata(double in1, double in2, double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__JMAT_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/kron.h b/2.3-1/src/c/matrixOperations/includes/kron.h
new file mode 100644
index 00000000..e4cff2dc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/kron.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __KRON_H__
+#define __KRON_H__
+
+#include "kron.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dkrona (double *in1, int row1, int col1, double *in2, int row2, \
+ int col2, double *out);
+void skrona (float *in1, int row1, int col1, float *in2, int row2, \
+ int col2, float *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__KRON_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/logm.h b/2.3-1/src/c/matrixOperations/includes/logm.h
new file mode 100644
index 00000000..7eec569d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/logm.h
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __LOGM_H__
+#define __LOGM_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS void slogma (float* in, int size, float* out);
+
+EXTERN_MATOPS void dlogma (double* in, int size, double* out);
+
+EXTERN_MATOPS void clogma (floatComplex* in, int size, floatComplex* out);
+
+EXTERN_MATOPS void zlogma (doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __LOGM_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixDivision.h b/2.3-1/src/c/matrixOperations/includes/matrixDivision.h
new file mode 100644
index 00000000..7702313b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixDivision.h
@@ -0,0 +1,102 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __MATRIXDIVISION_H__
+#define __MATRIXDIVISION_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "lapack.h"
+#include "cat.h"
+#include "matrixTranspose.h"
+#include "conj.h"
+#include "min.h"
+#include "max.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS void srdivma ( float* in1, int lines1, int columns1 ,
+ float* in2, int lines2, int columns2 ,
+ float* out );
+
+EXTERN_MATOPS void sldivma ( float* in1, int lines1, int columns1 ,
+ float* in2, int lines2, int columns2 ,
+ float* out );
+
+
+EXTERN_MATOPS void drdivma ( double* in1, int lines1, int columns1 ,
+ double* in2, int lines2, int columns2 ,
+ double* out );
+
+
+EXTERN_MATOPS void dldivma ( double* in1, int lines1, int columns1 ,
+ double* in2, int lines2, int columns2 ,
+ double* out );
+
+EXTERN_MATOPS void zrdivma( doubleComplex* in1, int lines1, int columns1 ,
+ doubleComplex* in2, int lines2, int columns2 ,
+ doubleComplex* out );
+
+EXTERN_MATOPS void zldivma( doubleComplex* in1, int lines1, int columns1 ,
+ doubleComplex* in2, int lines2, int columns2 ,
+ doubleComplex* out );
+
+EXTERN_MATOPS void crdivma( floatComplex* in1, int lines1, int columns1 ,
+ floatComplex* in2, int lines2, int columns2 ,
+ floatComplex* out );
+
+EXTERN_MATOPS void cldivma( floatComplex* in1, int lines1, int columns1 ,
+ floatComplex* in2, int lines2, int columns2 ,
+ floatComplex* out );
+
+/*special case row vector /row vector => scalar */
+/*
+** \brief Compute a division for double.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the right division of the two vectors = in1 .* in2.
+*/
+EXTERN_MATOPS double drdivv(double *in1, double *in2, int size2);
+
+EXTERN_MATOPS doubleComplex zrdivv(doubleComplex *in1, doubleComplex *in2, int size2);
+
+EXTERN_MATOPS doubleComplex zrdivzdv(doubleComplex *in1, double *in2, int size2);
+
+EXTERN_MATOPS doubleComplex zrdivdzv(double *in1, doubleComplex *in2, int size2);
+
+/*
+** \brief Compute a division for float.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the division of the two vectors = in1 .* in2.
+*/
+EXTERN_MATOPS float srdivv(float *in1, float *in2, int size2);
+
+EXTERN_MATOPS floatComplex crdivv(floatComplex *in1, floatComplex *in2, int size2);
+
+EXTERN_MATOPS floatComplex crdivcsv(floatComplex *in1, float *in2, int size2);
+
+EXTERN_MATOPS floatComplex crdivscv(float *in1, floatComplex *in2, int size2);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MATRIXDIVISION_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixExponential.h b/2.3-1/src/c/matrixOperations/includes/matrixExponential.h
new file mode 100644
index 00000000..4b3cd8a0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixExponential.h
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __MATRIXEXPONENTIAL_H__
+#define __MATRIXEXPONENTIAL_H__
+
+#include <math.h>
+#include <stdlib.h>
+#include "dynlib_matrixoperations.h"
+#include "lapack.h"
+#include "blas.h"
+#include "abs.h"
+#include "exp.h"
+#include "max.h"
+#include "pow.h"
+#include "matrixDivision.h"
+#include "matrixMultiplication.h"
+#include "addition.h"
+#include "subtraction.h"
+#include "eye.h"
+#include "infiniteNorm.h"
+#include "frexp.h"
+#include "division.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS void sexpma (float* in, float* out, int _iLeadDim);
+
+EXTERN_MATOPS void dexpma (double* in, double* out, int _iLeadDim);
+
+EXTERN_MATOPS void cexpma(floatComplex * in, floatComplex * out, int _iLeadDim);
+
+EXTERN_MATOPS void zexpma (doubleComplex * in, doubleComplex * out, int _iLeadDim);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MATRIXEXPONENTIAL_H__ */
+
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixInversion.h b/2.3-1/src/c/matrixOperations/includes/matrixInversion.h
new file mode 100644
index 00000000..e547bb97
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixInversion.h
@@ -0,0 +1,104 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __MATRIXINVERSION_H__
+#define __MATRIXINVERSION_H__
+
+#include "abs.h"
+#include "dynlib_matrixoperations.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Compute the matrix inverse for floats.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+EXTERN_MATOPS void sinverma ( float* in, float* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for doubles.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+
+EXTERN_MATOPS void dinverma ( double* in, double* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for complex floats .
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+
+EXTERN_MATOPS void cinverma ( floatComplex* in, floatComplex* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for complex doubles.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+
+EXTERN_MATOPS void zinverma ( doubleComplex* in, doubleComplex* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for uint8.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+EXTERN_MATOPS void u8inverma ( uint8* in, float* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for int8.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+EXTERN_MATOPS void i8inverma ( int8* in, float* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for uint16.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+EXTERN_MATOPS void u16inverma ( uint16* in, float* out, int leadDimIn );
+
+/*
+** \brief Compute the matrix inverse for int16.
+** \param in : input matrix.
+** \param leadDimIn : the leading dimension of the matrix .
+** \param out : the matrix inverse of the input .
+*/
+
+EXTERN_MATOPS void i16inverma ( int16* in, float* out, int leadDimIn );
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MATRIXINVERSION_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixMagnitude.h b/2.3-1/src/c/matrixOperations/includes/matrixMagnitude.h
new file mode 100644
index 00000000..a9f4e71c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixMagnitude.h
@@ -0,0 +1,54 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __MAGNITUDE_H__
+#define __MAGNITUDE_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS float smagns(float in);
+EXTERN_MATOPS float smagna(float* in, int rows, int cols);
+
+EXTERN_MATOPS double dmagns(double in);
+EXTERN_MATOPS double dmagna(double* in, int rows, int cols);
+
+EXTERN_MATOPS float cmagns(floatComplex in);
+EXTERN_MATOPS float cmagna(floatComplex* in, int rows, int cols);
+
+EXTERN_MATOPS double zmagns(doubleComplex in);
+EXTERN_MATOPS double zmagna(doubleComplex* in, int rows, int cols);
+
+EXTERN_MATOPS uint8 u8magns(uint8 in);
+EXTERN_MATOPS uint8 u8magna(uint8* in, int rows, int cols);
+
+EXTERN_MATOPS uint16 u16magns(uint16 in);
+EXTERN_MATOPS uint16 u16magna(uint16* in, int rows, int cols);
+
+EXTERN_MATOPS int8 i8magns(int8 in);
+EXTERN_MATOPS int8 i8magna(int8* in, int rows, int cols);
+
+EXTERN_MATOPS int16 i16magns(int16 in);
+EXTERN_MATOPS int16 i16magna(int16* in, int rows, int cols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __MAGNITUDE_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixMultiplication.h b/2.3-1/src/c/matrixOperations/includes/matrixMultiplication.h
new file mode 100644
index 00000000..c2235c8b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixMultiplication.h
@@ -0,0 +1,150 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __MATRIXMULTIPLICATION_H__
+#define __MATRIXMULTIPLICATION_H__
+
+#include "dynlib_matrixoperations.h"
+#include "multiplication.h"
+#include "addition.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+**
+** WARNING WE ASSUME MATRIXES TO BE CONSCISTENT
+** columns1 = lines2;
+**
+*/
+
+/*
+** \brief Compute a multiplication for floats matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void smulma(float *in1, int lines1, int columns1,
+ float *in2, int lines2, int columns2,
+ float *out);
+
+/*
+** \brief Compute a multiplication for doubles matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void dmulma(double *in1, int lines1, int columns1,
+ double *in2, int lines2, int columns2,
+ double *out);
+
+/*
+** \brief Compute a multiplication for floats complex matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void cmulma(floatComplex *in1, int lines1, int columns1,
+ floatComplex *in2, int lines2, int columns2,
+ floatComplex *out);
+
+/*
+** \brief Compute a multiplication for doubles matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void zmulma(doubleComplex *in1, int lines1, int columns1,
+ doubleComplex *in2, int lines2, int columns2,
+ doubleComplex *out);
+
+/*
+** \brief Compute a multiplication for uint8 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void u8mulma(uint8 *in1, int lines1, int columns1,
+ uint8 *in2, int lines2, int columns2,
+ uint8 *out);
+
+/*
+** \brief Compute a multiplication for uint16 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void u16mulma(uint16 *in1, int lines1, int columns1,
+ uint16 *in2, int lines2, int columns2,
+ uint16 *out);
+
+/*
+** \brief Compute a multiplication for int8 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void i8mulma(int8 *in1, int lines1, int columns1,
+ int8 *in2, int lines2, int columns2,
+ int8 *out);
+
+/*
+** \brief Compute a multiplication for int16 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+EXTERN_MATOPS void i16mulma(int16 *in1, int lines1, int columns1,
+ int16 *in2, int lines2, int columns2,
+ int16 *out);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MATRIXMULTIPLICATION_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixPow.h b/2.3-1/src/c/matrixOperations/includes/matrixPow.h
new file mode 100644
index 00000000..d7ffab31
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixPow.h
@@ -0,0 +1,43 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __MATRIXPOW_H__
+#define __MATRIXPOW_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ powm is only working on square matrix
+ so the size is limited to rows
+*/
+EXTERN_MATOPS void spowma(float* in, int rows, float expand, float* out);
+
+EXTERN_MATOPS void dpowma(double* in, int rows, double expand, double* out);
+
+EXTERN_MATOPS void cpowma(floatComplex* in, int rows, floatComplex expand, floatComplex* out);
+
+EXTERN_MATOPS void zpowma(doubleComplex* in, int rows, doubleComplex expand, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+
+#endif/*__MATRIXPOW_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixSquaredMagnitude.h b/2.3-1/src/c/matrixOperations/includes/matrixSquaredMagnitude.h
new file mode 100644
index 00000000..9ee64c32
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixSquaredMagnitude.h
@@ -0,0 +1,41 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SQUAREDMAGNITUDE_H__
+#define __SQUAREDMAGNITUDE_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_MATOPS float ssquMagns(float in);
+EXTERN_MATOPS float ssquMagna(float* in, int rows, int cols);
+
+EXTERN_MATOPS double dsquMagns(double in);
+EXTERN_MATOPS double dsquMagna(double* in, int rows, int cols);
+
+EXTERN_MATOPS float csquMagns(floatComplex in);
+EXTERN_MATOPS float csquMagna(floatComplex* in, int rows, int cols);
+
+EXTERN_MATOPS double zsquMagns(doubleComplex in);
+EXTERN_MATOPS double zsquMagna(doubleComplex* in, int rows, int cols);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SQUAREDMAGNITUDE_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixTrace.h b/2.3-1/src/c/matrixOperations/includes/matrixTrace.h
new file mode 100644
index 00000000..80f895df
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixTrace.h
@@ -0,0 +1,109 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __MATRICXTRACE_H__
+#define __MATRICXTRACE_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+**
+** WARNING WE ASSUME MATRIXES TO BE SQUARE
+**
+*/
+
+
+/*
+** \brief Compute the trace of a float scalar matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : float scalar containing the trace.
+*/
+
+EXTERN_MATOPS float stracea ( float* in ,int lines ) ;
+
+
+/*
+** \brief Compute the trace of a double scalar matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : double scalar containing the trace.
+*/
+EXTERN_MATOPS double dtracea ( double* in ,int lines ) ;
+
+/*
+** \brief Compute the trace of a float complex matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : float complex containing the trace.
+*/
+EXTERN_MATOPS floatComplex ctracea ( floatComplex* in ,int lines ) ;
+
+
+/*
+** \brief Compute the trace of a double complex matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : double complex containing the trace.
+*/
+EXTERN_MATOPS doubleComplex ztracea ( doubleComplex* in ,int lines ) ;
+
+
+/*
+** \brief Compute the trace of a uint8 matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : uint8 containing the trace.
+*/
+EXTERN_MATOPS uint8 u8tracea ( uint8* in ,int lines ) ;
+
+
+/*
+** \brief Compute the trace of a uint16 matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : uint16 containing the trace.
+*/
+EXTERN_MATOPS uint16 u16tracea ( uint16* in ,int lines ) ;
+
+
+/*
+** \brief Compute the trace of a int8 matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : int8 containing the trace.
+*/
+EXTERN_MATOPS int8 i8tracea ( int8* in ,int lines ) ;
+
+
+/*
+** \brief Compute the trace of a int16 matrix.
+** \param in : input array.
+** \param lines : number of lines
+** \param out : int16 containing the trace.
+*/
+EXTERN_MATOPS int16 i16tracea ( int16* in ,int lines ) ;
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MATRICXTRACE_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/matrixTranspose.h b/2.3-1/src/c/matrixOperations/includes/matrixTranspose.h
new file mode 100644
index 00000000..7e2acbf1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/matrixTranspose.h
@@ -0,0 +1,101 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __MATRIXTRANSPOSE_H__
+#define __MATRIXTRANSPOSE_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+#include <math.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Compute the transpose of a float matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed float matrix.
+*/
+EXTERN_MATOPS void stransposea ( float* in , int lines1 , int column1, float* out );
+/*
+** \brief Compute the transpose of a double matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed double matrix.
+*/
+EXTERN_MATOPS void dtransposea ( double* in , int lines1 , int column1, double* out );
+/*
+** \brief Compute the transpose of a float complex matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed float complex matrix.
+*/
+EXTERN_MATOPS void ctransposea ( floatComplex* in , int lines1 , int column1, floatComplex* out );
+/*
+** \brief Compute the transpose of a double complex matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed double complex matrix.
+*/
+EXTERN_MATOPS void ztransposea ( doubleComplex* in , int lines1 , int column1, doubleComplex* out );
+
+
+/*
+** \brief Compute the transpose of a uint8 matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed uint8 matrix.
+*/
+EXTERN_MATOPS void u8transposea ( uint8* in , int lines1 , int column1, uint8* out );
+
+/*
+** \brief Compute the transpose of a uint16 matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed uint16 matrix.
+*/
+EXTERN_MATOPS void u16transposea ( uint16* in , int lines1 , int column1, uint16* out );
+
+/*
+** \brief Compute the transpose of a int8 matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed int8 matrix.
+*/
+EXTERN_MATOPS void i8transposea ( int8* in , int lines1 , int column1, int8* out );
+
+/*
+** \brief Compute the transpose of a int16 matrix.
+** \param in : input matrix.
+** \param lines1 : number of lines
+** \param column1 : number of column1
+** \param out : the transposed int16 matrix.
+*/
+EXTERN_MATOPS void i16transposea ( int16* in , int lines1 , int column1, int16* out );
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MATRIXTRANSPOSE_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/norm.h b/2.3-1/src/c/matrixOperations/includes/norm.h
new file mode 100644
index 00000000..dc9d351f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/norm.h
@@ -0,0 +1,32 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __NORM_H__
+#define __NORM_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dnormv (double *in, int size, int norm);
+
+double dnorma (double *in, int row, int col, int norm);
+
+float snormv (float *in, int size, int norm);
+
+float snorma (float *in, int row, int col, int norm);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__NORM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/ones.h b/2.3-1/src/c/matrixOperations/includes/ones.h
new file mode 100644
index 00000000..6734017d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/ones.h
@@ -0,0 +1,112 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __ONES_H__
+#define __ONES_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief create a float one value
+*/
+#define soness(in) 1.0f
+
+/*
+** \brief create a Double one value
+*/
+#define doness(in) 1.0
+
+/*
+** \brief create a float complex one value
+*/
+#define coness(in) FloatComplex(1.0f, 0)
+
+/*
+** \brief create a Double complex one value
+*/
+#define zoness(in) DoubleComplex(1, 0)
+
+/*
+** \brief create a uint8 one value
+*/
+#define u8oness(in) (uint8)1
+
+/*
+** \brief create a int8 one value
+*/
+#define i8oness(in) (int8)1
+
+/*
+** \brief create a uint16 one value
+*/
+#define u16oness(in) (uint16)1
+
+/*
+** \brief create a int16 one value
+*/
+#define i16oness(in) (int16)1
+
+
+/*
+** \brief create a float matrix full of one
+*/
+EXTERN_MATOPS void sonesa ( float* in , int rows , int cols );
+
+/*
+** \brief create a float complex matrix full of one
+*/
+EXTERN_MATOPS void conesa ( floatComplex* in , int rows ,int cols );
+
+/*
+** \brief create a double matrix full of one
+*/
+EXTERN_MATOPS void donesa ( double* in , int rows ,int cols );
+
+/*
+** \brief create a double complex matrix full of one
+*/
+EXTERN_MATOPS void zonesa ( doubleComplex* in , int rows ,int cols );
+
+/*
+** \brief create a uint8 matrix full of one
+*/
+EXTERN_MATOPS void u8onesa ( uint8* in , int rows , int cols );
+
+/*
+** \brief create a int8 matrix full of one
+*/
+EXTERN_MATOPS void i8onesa ( int8* in , int rows , int cols );
+
+/*
+** \brief create a uint16 matrix full of one
+*/
+EXTERN_MATOPS void u16onesa ( uint16* in , int rows , int cols );
+
+/*
+** \brief create a int16 matrix full of one
+*/
+EXTERN_MATOPS void i16onesa ( int16* in , int rows , int cols );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ONES_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/spec.h b/2.3-1/src/c/matrixOperations/includes/spec.h
new file mode 100644
index 00000000..b7b7d35c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/spec.h
@@ -0,0 +1,56 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __SPEC_H__
+#define __SPEC_H__
+
+#include "dynlib_matrixoperations.h"
+#include "doubleComplex.h"
+#include "floatComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* spec gives only the eigenvalues
+ If you want the eigenvalues and the eigenvectors, use spec2 */
+
+/* spec */
+#define sspecs(in) in
+#define dspecs(in) in
+#define cspecs(in) in
+#define zspecs(in) in
+
+EXTERN_MATOPS void sspeca(float* in, int rows, float* out);
+EXTERN_MATOPS void dspeca(double* in, int rows, double* out);
+EXTERN_MATOPS void cspeca(floatComplex* in, int rows, floatComplex* out);
+EXTERN_MATOPS void zspeca(doubleComplex* in, int rows,doubleComplex* out);
+
+
+
+/* spec2 */
+#define sspec2s(in,out) sspecs(1);*out=in;
+#define dspec2s(in,out) dspecs(1);*out=in;
+#define cspec2s(in,out) cspecs(FloatComplex(1,0));*out=FloatComplex(creals(in),cimags(in));
+#define zspec2s(in,out) zspecs(DoubleComplex(1,0));*out=DoubleComplex(zreals(in),zimags(in));
+
+EXTERN_MATOPS void sspec2a(float* in, int rows, float* eigenvalues,float* eigenvectors);
+EXTERN_MATOPS void dspec2a(double* in, int rows, double* eigenvalues,double* eigenvectors);
+EXTERN_MATOPS void cspec2a(floatComplex* in, int rows, floatComplex* eigenvalues,floatComplex* eigenvectors);
+EXTERN_MATOPS void zspec2a(doubleComplex* in, int rows,doubleComplex* eigenvalues,doubleComplex* eigenvectors);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SPEC_H__ */
diff --git a/2.3-1/src/c/matrixOperations/includes/tril.h b/2.3-1/src/c/matrixOperations/includes/tril.h
new file mode 100644
index 00000000..486e81f9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/tril.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __TRIL_H__
+#define __TRIL_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dtrila (double *in, int row, int column, double diag, double *out);
+void strila (float *in, int row, int column, double diag, float *out);
+void u8trila (uint8 *in, int row, int column, double diag, uint8 *out);
+void u16trila (uint16 *in, int row, int column, double diag, uint16 *out);
+void i8trila (int8 *in, int row, int column, double diag, int8 *out);
+void i16trila (int16 *in, int row, int column, double diag, int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__TRIL_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/triu.h b/2.3-1/src/c/matrixOperations/includes/triu.h
new file mode 100644
index 00000000..2b62e22b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/triu.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __TRIU_H__
+#define __TRIU_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dtriua (double *in, int row, int column, double diag, double *out);
+void striua (float *in, int row, int column, double diag, float *out);
+void u8triua (uint8 *in, int row, int column, double diag, uint8 *out);
+void u16triua (uint16 *in, int row, int column, double diag, uint16 *out);
+void i8triua (int8 *in, int row, int column, double diag, int8 *out);
+void i16triua (int16 *in, int row, int column, double diag, int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__TRIU_H__*/
diff --git a/2.3-1/src/c/matrixOperations/includes/zeros.h b/2.3-1/src/c/matrixOperations/includes/zeros.h
new file mode 100644
index 00000000..993940fc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/includes/zeros.h
@@ -0,0 +1,114 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __ZEROS_H__
+#define __ZEROS_H__
+
+#include "dynlib_matrixoperations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief create a float one value
+*/
+#define szeross(in) 0.0f
+
+/*
+** \brief create a Double one value
+*/
+#define dzeross(in) 0
+
+/*
+** \brief create a float complex one value
+*/
+#define czeross(in) FloatComplex(0.0f, 0)
+
+/*
+** \brief create a Double complex one value
+*/
+#define zzeross(in) DoubleComplex(0, 0)
+
+
+/*
+** \brief create a single uint8 zero
+*/
+#define u8zerosu8(in) (uint8)0
+
+/*
+** \brief create a single int8 zero
+*/
+#define i8zerosi8(in) (int8)0
+
+/*
+** \brief create a single uint8 zero
+*/
+#define u16zerosu16(in) (uint16)0
+
+/*
+** \brief create a single int8 zero
+*/
+#define i16zerosi16(in) (int16)0
+
+/*
+** \brief create a float matrix full of one
+*/
+EXTERN_MATOPS void szerosa ( float* in , int rows , int cols );
+/*
+** \brief create a float complex matrix full of one
+*/
+EXTERN_MATOPS void czerosa ( floatComplex* in , int rows ,int cols );
+/*
+** \brief create a double matrix full of one
+*/
+EXTERN_MATOPS void dzerosa ( double* in , int rows ,int cols );
+/*
+** \brief create a double complex matrix full of one
+*/
+EXTERN_MATOPS void zzerosa ( doubleComplex* in , int rows ,int cols );
+
+/*
+** \brief create a double complex matrix full of one
+*/
+EXTERN_MATOPS void dzerosh ( double* in , int rows ,int cols , int levels);
+
+/*
+** \brief create a uint8 matrix full of zero
+*/
+EXTERN_MATOPS void u8zerosa ( uint8* in , int rows , int cols );
+
+/*
+** \brief create a int8 matrix full of zero
+*/
+EXTERN_MATOPS void i8zerosa ( int8* in , int rows , int cols );
+
+/*
+** \brief create a uint16 matrix full of zero
+*/
+EXTERN_MATOPS void u16zerosa ( uint16* in , int rows , int cols );
+
+/*
+** \brief create a int16 matrix full of zero
+*/
+EXTERN_MATOPS void i16zerosa ( int16* in , int rows , int cols );
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ZEROS_H__ */
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.am b/2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.am
new file mode 100644
index 00000000..5cc3503c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.am
@@ -0,0 +1,58 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixInfiniteNorm_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixInfiniteNorm.la
+
+HEAD = ../includes/infiniteNorm.h
+
+libMatrixInfiniteNorm_la_SOURCES = $(HEAD) \
+ sinfnorma.c \
+ dinfnorma.c \
+ cinfnorma.c \
+ zinfnorma.c
+
+check_PROGRAMS = testMatrixInfiniteNorm
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libMatrixInfiniteNorm.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testMatrixInfiniteNorm_SOURCES = testMatrixInfiniteNorm.c
+testMatrixInfiniteNorm_LDADD = $(check_LDADD)
+testMatrixInfiniteNorm_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixInfiniteNorm
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.in b/2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.in
new file mode 100644
index 00000000..7152f5cd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/Makefile.in
@@ -0,0 +1,734 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixInfiniteNorm$(EXEEXT)
+TESTS = testMatrixInfiniteNorm$(EXEEXT)
+subdir = src/c/matrixOperations/infiniteNorm
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixInfiniteNorm_la_LIBADD =
+am__objects_1 =
+am_libMatrixInfiniteNorm_la_OBJECTS = $(am__objects_1) \
+ libMatrixInfiniteNorm_la-sinfnorma.lo \
+ libMatrixInfiniteNorm_la-dinfnorma.lo \
+ libMatrixInfiniteNorm_la-cinfnorma.lo \
+ libMatrixInfiniteNorm_la-zinfnorma.lo
+libMatrixInfiniteNorm_la_OBJECTS = \
+ $(am_libMatrixInfiniteNorm_la_OBJECTS)
+libMatrixInfiniteNorm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testMatrixInfiniteNorm_OBJECTS = \
+ testMatrixInfiniteNorm-testMatrixInfiniteNorm.$(OBJEXT)
+testMatrixInfiniteNorm_OBJECTS = $(am_testMatrixInfiniteNorm_OBJECTS)
+testMatrixInfiniteNorm_DEPENDENCIES = $(check_LDADD)
+testMatrixInfiniteNorm_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMatrixInfiniteNorm_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixInfiniteNorm_la_SOURCES) \
+ $(testMatrixInfiniteNorm_SOURCES)
+DIST_SOURCES = $(libMatrixInfiniteNorm_la_SOURCES) \
+ $(testMatrixInfiniteNorm_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixInfiniteNorm_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixInfiniteNorm.la
+HEAD = ../includes/infiniteNorm.h
+libMatrixInfiniteNorm_la_SOURCES = $(HEAD) \
+ sinfnorma.c \
+ dinfnorma.c \
+ cinfnorma.c \
+ zinfnorma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libMatrixInfiniteNorm.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testMatrixInfiniteNorm_SOURCES = testMatrixInfiniteNorm.c
+testMatrixInfiniteNorm_LDADD = $(check_LDADD)
+testMatrixInfiniteNorm_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/infiniteNorm/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/infiniteNorm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixInfiniteNorm.la: $(libMatrixInfiniteNorm_la_OBJECTS) $(libMatrixInfiniteNorm_la_DEPENDENCIES)
+ $(libMatrixInfiniteNorm_la_LINK) -rpath $(pkglibdir) $(libMatrixInfiniteNorm_la_OBJECTS) $(libMatrixInfiniteNorm_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixInfiniteNorm$(EXEEXT): $(testMatrixInfiniteNorm_OBJECTS) $(testMatrixInfiniteNorm_DEPENDENCIES)
+ @rm -f testMatrixInfiniteNorm$(EXEEXT)
+ $(testMatrixInfiniteNorm_LINK) $(testMatrixInfiniteNorm_OBJECTS) $(testMatrixInfiniteNorm_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInfiniteNorm_la-cinfnorma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInfiniteNorm_la-dinfnorma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInfiniteNorm_la-sinfnorma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInfiniteNorm_la-zinfnorma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixInfiniteNorm_la-sinfnorma.lo: sinfnorma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -MT libMatrixInfiniteNorm_la-sinfnorma.lo -MD -MP -MF $(DEPDIR)/libMatrixInfiniteNorm_la-sinfnorma.Tpo -c -o libMatrixInfiniteNorm_la-sinfnorma.lo `test -f 'sinfnorma.c' || echo '$(srcdir)/'`sinfnorma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInfiniteNorm_la-sinfnorma.Tpo $(DEPDIR)/libMatrixInfiniteNorm_la-sinfnorma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sinfnorma.c' object='libMatrixInfiniteNorm_la-sinfnorma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -c -o libMatrixInfiniteNorm_la-sinfnorma.lo `test -f 'sinfnorma.c' || echo '$(srcdir)/'`sinfnorma.c
+
+libMatrixInfiniteNorm_la-dinfnorma.lo: dinfnorma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -MT libMatrixInfiniteNorm_la-dinfnorma.lo -MD -MP -MF $(DEPDIR)/libMatrixInfiniteNorm_la-dinfnorma.Tpo -c -o libMatrixInfiniteNorm_la-dinfnorma.lo `test -f 'dinfnorma.c' || echo '$(srcdir)/'`dinfnorma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInfiniteNorm_la-dinfnorma.Tpo $(DEPDIR)/libMatrixInfiniteNorm_la-dinfnorma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dinfnorma.c' object='libMatrixInfiniteNorm_la-dinfnorma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -c -o libMatrixInfiniteNorm_la-dinfnorma.lo `test -f 'dinfnorma.c' || echo '$(srcdir)/'`dinfnorma.c
+
+libMatrixInfiniteNorm_la-cinfnorma.lo: cinfnorma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -MT libMatrixInfiniteNorm_la-cinfnorma.lo -MD -MP -MF $(DEPDIR)/libMatrixInfiniteNorm_la-cinfnorma.Tpo -c -o libMatrixInfiniteNorm_la-cinfnorma.lo `test -f 'cinfnorma.c' || echo '$(srcdir)/'`cinfnorma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInfiniteNorm_la-cinfnorma.Tpo $(DEPDIR)/libMatrixInfiniteNorm_la-cinfnorma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cinfnorma.c' object='libMatrixInfiniteNorm_la-cinfnorma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -c -o libMatrixInfiniteNorm_la-cinfnorma.lo `test -f 'cinfnorma.c' || echo '$(srcdir)/'`cinfnorma.c
+
+libMatrixInfiniteNorm_la-zinfnorma.lo: zinfnorma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -MT libMatrixInfiniteNorm_la-zinfnorma.lo -MD -MP -MF $(DEPDIR)/libMatrixInfiniteNorm_la-zinfnorma.Tpo -c -o libMatrixInfiniteNorm_la-zinfnorma.lo `test -f 'zinfnorma.c' || echo '$(srcdir)/'`zinfnorma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInfiniteNorm_la-zinfnorma.Tpo $(DEPDIR)/libMatrixInfiniteNorm_la-zinfnorma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zinfnorma.c' object='libMatrixInfiniteNorm_la-zinfnorma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInfiniteNorm_la_CFLAGS) $(CFLAGS) -c -o libMatrixInfiniteNorm_la-zinfnorma.lo `test -f 'zinfnorma.c' || echo '$(srcdir)/'`zinfnorma.c
+
+testMatrixInfiniteNorm-testMatrixInfiniteNorm.o: testMatrixInfiniteNorm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInfiniteNorm_CFLAGS) $(CFLAGS) -MT testMatrixInfiniteNorm-testMatrixInfiniteNorm.o -MD -MP -MF $(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Tpo -c -o testMatrixInfiniteNorm-testMatrixInfiniteNorm.o `test -f 'testMatrixInfiniteNorm.c' || echo '$(srcdir)/'`testMatrixInfiniteNorm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Tpo $(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixInfiniteNorm.c' object='testMatrixInfiniteNorm-testMatrixInfiniteNorm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInfiniteNorm_CFLAGS) $(CFLAGS) -c -o testMatrixInfiniteNorm-testMatrixInfiniteNorm.o `test -f 'testMatrixInfiniteNorm.c' || echo '$(srcdir)/'`testMatrixInfiniteNorm.c
+
+testMatrixInfiniteNorm-testMatrixInfiniteNorm.obj: testMatrixInfiniteNorm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInfiniteNorm_CFLAGS) $(CFLAGS) -MT testMatrixInfiniteNorm-testMatrixInfiniteNorm.obj -MD -MP -MF $(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Tpo -c -o testMatrixInfiniteNorm-testMatrixInfiniteNorm.obj `if test -f 'testMatrixInfiniteNorm.c'; then $(CYGPATH_W) 'testMatrixInfiniteNorm.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixInfiniteNorm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Tpo $(DEPDIR)/testMatrixInfiniteNorm-testMatrixInfiniteNorm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixInfiniteNorm.c' object='testMatrixInfiniteNorm-testMatrixInfiniteNorm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInfiniteNorm_CFLAGS) $(CFLAGS) -c -o testMatrixInfiniteNorm-testMatrixInfiniteNorm.obj `if test -f 'testMatrixInfiniteNorm.c'; then $(CYGPATH_W) 'testMatrixInfiniteNorm.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixInfiniteNorm.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/cinfnorma.c b/2.3-1/src/c/matrixOperations/infiniteNorm/cinfnorma.c
new file mode 100644
index 00000000..5d67aca9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/cinfnorma.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "infiniteNorm.h"
+
+float cinfnorma(floatComplex* in, int _iRows, int _iCols)
+{
+ int iIndex1 = 0, iIndex2 = 0;
+ float fltTemp = 0;
+ float fltRef = 0;
+
+ for(iIndex1 = 0 ; iIndex1 < _iRows ; iIndex1++)
+ {
+ fltTemp = 0;
+ for(iIndex2 = 0 ; iIndex2 < _iCols ; iIndex2++)
+ {
+ fltTemp += spythags( creals( in[iIndex1 + iIndex2 * _iRows]),
+ cimags( in[iIndex1 + iIndex2 * _iRows]));
+ }
+ if(fltTemp > fltRef)
+ fltRef = fltTemp;
+ }
+
+ return fltRef;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/dinfnorma.c b/2.3-1/src/c/matrixOperations/infiniteNorm/dinfnorma.c
new file mode 100644
index 00000000..ba414bba
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/dinfnorma.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "infiniteNorm.h"
+
+double dinfnorma(double* in, int _iRows, int _iCols)
+{
+ int iIndex1 = 0, iIndex2 = 0;
+ double dblTemp = 0;
+ double dblRef = 0;
+
+
+ for(iIndex1 = 0 ; iIndex1 < _iRows ; iIndex1++)
+ {
+ dblTemp = 0;
+ for(iIndex2 = 0 ; iIndex2 < _iCols ; iIndex2++)
+ {
+ dblTemp += in[iIndex1 + iIndex2 * _iRows];
+ }
+ if(dblTemp > dblRef)
+ dblRef = dblTemp;
+ }
+
+ return dblRef;
+
+}
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/sinfnorma.c b/2.3-1/src/c/matrixOperations/infiniteNorm/sinfnorma.c
new file mode 100644
index 00000000..3c614afd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/sinfnorma.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "infiniteNorm.h"
+
+float sinfnorma(float* in, int _iRows, int _iCols)
+{
+ int iIndex1 = 0, iIndex2 = 0;
+ float fltTemp = 0;
+ float fltRef = 0;
+
+
+ for(iIndex1 = 0 ; iIndex1 < _iRows ; iIndex1++)
+ {
+ fltTemp = 0;
+ for(iIndex2 = 0 ; iIndex2 < _iCols ; iIndex2++)
+ {
+ fltTemp += in[iIndex1 + iIndex2 * _iRows];
+ }
+ if(fltTemp > fltRef)
+ fltRef = fltTemp;
+ }
+
+ return fltRef;
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/testMatrixInfiniteNorm.c b/2.3-1/src/c/matrixOperations/infiniteNorm/testMatrixInfiniteNorm.c
new file mode 100644
index 00000000..8dc4c7ff
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/testMatrixInfiniteNorm.c
@@ -0,0 +1,316 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include "infiniteNorm.h"
+
+
+#define LEADDIM 10
+
+#define DMATRIX_IN {0.15869047446176410,0.80895681912079453,0.72621259605512023,0.18993748771026731,\
+ 0.43964602379128337,0.37921421090140939,0.95195201179012656,0.59145097108557820,\
+ 0.70597065938636661,0.62873698258772492,\
+0.62407150492072105,0.68317985069006681,0.70999773032963276,0.25839814636856318,\
+ 0.65407369285821915,0.76687160786241293,0.71278580836951733,0.68067426700145006,\
+ 0.70181696489453316,0.28785153012722731,\
+0.63760355720296502,0.03401931514963508,0.47457459988072515,0.09878737432882190,\
+ 0.58781063789501786,0.60066213225945830,0.11923700617626309,0.07392961112782359,\
+ 0.40879997471347451,0.3292048736475408,\
+0.42704886104911566,0.23805456422269344,0.9438692079856992,0.06199027225375175,\
+ 0.60208318661898375,0.78567356057465076,0.50091631803661585,0.94336947053670883,\
+ 0.06362213846296072,0.47192330472171307,\
+0.10716815060004592,0.94920115964487195,0.14596485672518611,0.04034968325868249,\
+ 0.04535020282492042,0.73871155502274632,0.32900535268709064,0.12863306934013963,\
+ 0.06573933875188231,0.33537696348503232,\
+0.23822965659201145,0.21827886346727610,0.07141010463237762,0.74001471605151892,\
+ 0.20294443331658840,0.55442603398114443,0.48089468106627464,0.20190807711333036,\
+ 0.53310041315853596,0.55530697200447321,\
+0.94629473658278584,0.61546878470107913,0.67337385797873139,0.61626600986346602,\
+ 0.78442738251760602,0.99291495559737086,0.33036959776654840,0.19693034281954169,\
+ 0.03315818728879094,0.11960808141157031,\
+0.45766852516680956,0.83135433867573738,0.65369247179478407,0.6583583448082209,\
+ 0.26375361625105143,0.97574284672737122,0.63044753577560186,0.89286901615560055,\
+ 0.31578356493264437,0.76139996573328972,\
+0.89644787041470408,0.77340125897899270,0.19968961318954825,0.25145971449092031,\
+ 0.43832763982936740,0.37096222722902894,0.21171907847747207,0.46179189579561353,\
+ 0.37858232436701655,0.47909884760156274,\
+0.44384705275297165,0.4244190966710448,0.60141251794993877,0.38433500844985247,\
+ 0.86648589745163918,0.30322382133454084,0.44860231317579746,0.62512917164713144,\
+ 0.46195234358310699,0.28169692959636450}
+
+#define DRESULT_OUT 6.46840295149013400
+
+#define FMATRIX_IN {0.15869047446176410f,0.80895681912079453f,0.72621259605512023f,0.18993748771026731f,\
+ 0.43964602379128337f,0.37921421090140939f,0.95195201179012656f,0.59145097108557820f,\
+ 0.70597065938636661f,0.62873698258772492f,\
+0.62407150492072105f,0.68317985069006681f,0.70999773032963276f,0.25839814636856318f,\
+ 0.65407369285821915f,0.76687160786241293f,0.71278580836951733f,0.68067426700145006f,\
+ 0.70181696489453316f,0.28785153012722731f,\
+0.63760355720296502f,0.03401931514963508f,0.47457459988072515f,0.09878737432882190f,\
+ 0.58781063789501786f,0.60066213225945830f,0.11923700617626309f,0.07392961112782359f,\
+ 0.40879997471347451f,0.3292048736475408f,\
+0.42704886104911566f,0.23805456422269344f,0.9438692079856992f,0.06199027225375175f,\
+ 0.60208318661898375f,0.78567356057465076f,0.50091631803661585f,0.94336947053670883f,\
+ 0.06362213846296072f,0.47192330472171307f,\
+0.10716815060004592f,0.94920115964487195f,0.14596485672518611f,0.04034968325868249f,\
+ 0.04535020282492042f,0.73871155502274632f,0.32900535268709064f,0.12863306934013963f,\
+ 0.06573933875188231f,0.33537696348503232f,\
+0.23822965659201145f,0.21827886346727610f,0.07141010463237762f,0.74001471605151892f,\
+ 0.20294443331658840f,0.55442603398114443f,0.48089468106627464f,0.20190807711333036f,\
+ 0.53310041315853596f,0.55530697200447321f,\
+0.94629473658278584f,0.61546878470107913f,0.67337385797873139f,0.61626600986346602f,\
+ 0.78442738251760602f,0.99291495559737086f,0.33036959776654840f,0.19693034281954169f,\
+ 0.03315818728879094f,0.11960808141157031f,\
+0.45766852516680956f,0.83135433867573738f,0.65369247179478407f,0.6583583448082209f,\
+ 0.26375361625105143f,0.97574284672737122f,0.63044753577560186f,0.89286901615560055f,\
+ 0.31578356493264437f,0.76139996573328972f,\
+0.89644787041470408f,0.77340125897899270f,0.19968961318954825f,0.25145971449092031f,\
+ 0.43832763982936740f,0.37096222722902894f,0.21171907847747207f,0.46179189579561353f,\
+ 0.37858232436701655f,0.47909884760156274f,\
+0.44384705275297165f,0.4244190966710448f,0.60141251794993877f,0.38433500844985247f,\
+ 0.86648589745163918f,0.30322382133454084f,0.44860231317579746f,0.62512917164713144f,\
+ 0.46195234358310699f,0.28169692959636450f}
+
+#define FRESULT_OUT 6.46840295149013400f
+
+
+#define ZRMATRIX_IN {0.21132486546412110,0.56084860628470778,0.30760907428339124,0.50153415976092219, \
+ 0.28064980218186975,0.40948254754766822,0.38737787725403905,0.53762298030778766,\
+ 0.58787201577797532,0.64885628735646605,\
+0.75604385416954756,0.66235693730413914,0.93296162132173777,0.43685875833034515,\
+ 0.12800584640353918,0.87841258011758327,0.92228986788541079,0.11999255046248436,\
+ 0.48291792999953032,0.99231909401714802,\
+0.00022113462910056,0.72635067673400044,0.21460078610107303,0.26931248093023896,\
+ 0.77831285959109664,0.11383596854284406,0.94881842611357570,0.2256303490139544,\
+ 0.22328650346025825,0.05004197778180242,\
+0.33032709173858166,0.19851438421756029,0.31264199689030647,0.63257448654621840,\
+ 0.21190304495394230,0.19983377400785685,0.34353372454643250,0.62740930821746588,\
+ 0.84008856676518917,0.74855065811425447,\
+0.66538110421970487,0.54425731627270579,0.36163610080257058,0.40519540151581168,\
+ 0.11213546665385365,0.56186607433483005,0.37601187312975526,0.76084325974807143,\
+ 0.12059959070757031,0.41040589986369014,\
+0.62839178834110498,0.23207478970289230,0.2922266637906432,0.91847078315913677,\
+ 0.68568959552794695,0.58961773291230202,0.73409405630081892,0.04855662025511265,\
+ 0.28553641680628061,0.60845263302326202,\
+0.84974523587152362,0.23122371966019273,0.56642488157376647,0.04373343335464597,\
+ 0.15312166837975383,0.68539796629920602,0.26157614728435874,0.67239497276023030,\
+ 0.86075146449729800,0.85442108893766999,\
+0.68573101982474327,0.21646326314657927,0.48264719732105732,0.48185089323669672,\
+ 0.69708506017923355,0.89062247332185507,0.49934938363730907,0.20171726960688829,\
+ 0.84941016510128975,0.06426467280834913,\
+0.87821648130193353,0.88338878145441413,0.33217189135029912,0.26395560009405017,\
+ 0.84155184263363481,0.50422128057107329,0.26385784195736051,0.39115739194676280,\
+ 0.52570608118548989,0.82790829380974174,\
+0.06837403681129217,0.65251349471509457,0.59350947011262178,0.41481037065386772,\
+ 0.40620247554033995,0.34936154074966908,0.52535630855709314,0.83003165572881699,\
+ 0.99312098976224661,0.92623437754809856}
+
+#define ZIMATRIX_IN {0.56672112690284848,0.73956565884873271,0.02587099233642220,0.70648676296696067,\
+ 0.96770532103255391,0.42568723810836673,0.18711117887869477,0.21240556007251143,\
+ 0.69127879338338971,0.13049928424879909,\
+0.57116389367729425,0.00371731072664261,0.51744682248681784,0.52114724926650524,\
+ 0.50685344357043505,0.24615605548024178,0.01895748358219862,0.57950199581682682,\
+ 0.76568587962538004,0.96820035576820374,\
+0.81601104838773608,0.59005728596821427,0.39168732380494475,0.28704008506610990,\
+ 0.52329764096066356,0.92295324662700295,0.84335647663101554,0.26281475694850087,\
+ 0.35726496530696750,0.6561381467618048,\
+0.05689279362559319,0.3096467358991504,0.24135384149849415,0.65027950797230005,\
+ 0.5596947595477104,0.10007458087056875,0.07485948316752911,0.43609866220504045,\
+ 0.76933998242020607,0.24455389659851789,\
+0.55959366867318749,0.25522057106718421,0.50644348980858922,0.08813347620889544,\
+ 0.56173070007935166,0.46782181179150939,0.85328151332214475,0.91105451015755534,\
+ 0.54776339093223214,0.52831235667690635,\
+0.12493403162807226,0.62518793903291225,0.42361020017415285,0.44987633451819420,\
+ 0.46817600261420012,0.39504976756870747,0.01245901081711054,0.80826673656702042,\
+ 0.09622887428849936,0.84689256362617016,\
+0.72792222863063216,0.11574173765257001,0.28937275288626552,0.72272530803456903,\
+ 0.77945467224344611,0.03661171020939946,0.18675393564626575,0.81026530498638749,\
+ 0.95611717319115996,0.78766220854595304,\
+0.26777664758265018,0.61170040909200907,0.08879321813583374,0.89767962601035833,\
+ 0.79010718129575253,0.51753685344010592,0.49205840751528740,0.25904283951967955,\
+ 0.22074085660278797,0.12620826158672571,\
+0.54653349192813039,0.67839562846347690,0.62128817522898316,0.24278218811377883,\
+ 0.98085420625284314,0.83254515705630183,0.74896081397309899,0.41390872886404395,\
+ 0.01432593585923314,0.78838609857484698,\
+0.98854076582938433,0.33200952783226967,0.34549844544380903,0.43377211131155491,\
+ 0.81870661024004221,0.61048321425914764,0.94149570073932409,0.35999277792870998,\
+ 0.81914897728711367,0.34530424699187279}
+
+#define ZRESULT_OUT 8.6410312306124072989633
+
+#define CRMATRIX_IN {0.21132486546412110f,0.56084860628470778f,0.30760907428339124f,0.50153415976092219f, \
+ 0.28064980218186975f,0.40948254754766822f,0.38737787725403905f,0.53762298030778766f,\
+ 0.58787201577797532f,0.64885628735646605f,\
+0.75604385416954756f,0.66235693730413914f,0.93296162132173777f,0.43685875833034515f,\
+ 0.12800584640353918f,0.87841258011758327f,0.92228986788541079f,0.11999255046248436f,\
+ 0.48291792999953032f,0.99231909401714802f,\
+0.00022113462910056f,0.72635067673400044f,0.21460078610107303f,0.26931248093023896f,\
+ 0.77831285959109664f,0.11383596854284406f,0.94881842611357570f,0.2256303490139544f,\
+ 0.22328650346025825f,0.05004197778180242f,\
+0.33032709173858166f,0.19851438421756029f,0.31264199689030647f,0.63257448654621840f,\
+ 0.21190304495394230f,0.19983377400785685f,0.34353372454643250f,0.62740930821746588f,\
+ 0.84008856676518917f,0.74855065811425447f,\
+0.66538110421970487f,0.54425731627270579f,0.36163610080257058f,0.40519540151581168f,\
+ 0.11213546665385365f,0.56186607433483005f,0.37601187312975526f,0.76084325974807143f,\
+ 0.12059959070757031f,0.41040589986369014f,\
+0.62839178834110498f,0.23207478970289230f,0.2922266637906432f,0.91847078315913677f,\
+ 0.68568959552794695f,0.58961773291230202f,0.73409405630081892f,0.04855662025511265f,\
+ 0.28553641680628061f,0.60845263302326202f,\
+0.84974523587152362f,0.23122371966019273f,0.56642488157376647f,0.04373343335464597f,\
+ 0.15312166837975383f,0.68539796629920602f,0.26157614728435874f,0.67239497276023030f,\
+ 0.86075146449729800f,0.85442108893766999f,\
+0.68573101982474327f,0.21646326314657927f,0.48264719732105732f,0.48185089323669672f,\
+ 0.69708506017923355f,0.89062247332185507f,0.49934938363730907f,0.20171726960688829f,\
+ 0.84941016510128975f,0.06426467280834913f,\
+0.87821648130193353f,0.88338878145441413f,0.33217189135029912f,0.26395560009405017f,\
+ 0.84155184263363481f,0.50422128057107329f,0.26385784195736051f,0.39115739194676280f,\
+ 0.52570608118548989f,0.82790829380974174f,\
+0.06837403681129217f,0.65251349471509457f,0.59350947011262178f,0.41481037065386772f,\
+ 0.40620247554033995f,0.34936154074966908f,0.52535630855709314f,0.83003165572881699f,\
+ 0.99312098976224661f,0.92623437754809856f}
+
+#define CIMATRIX_IN {0.56672112690284848f,0.73956565884873271f,0.02587099233642220f,0.70648676296696067f,\
+ 0.96770532103255391f,0.42568723810836673f,0.18711117887869477f,0.21240556007251143f,\
+ 0.69127879338338971f,0.13049928424879909f,\
+0.57116389367729425f,0.00371731072664261f,0.51744682248681784f,0.52114724926650524f,\
+ 0.50685344357043505f,0.24615605548024178f,0.01895748358219862f,0.57950199581682682f,\
+ 0.76568587962538004f,0.96820035576820374f,\
+0.81601104838773608f,0.59005728596821427f,0.39168732380494475f,0.28704008506610990f,\
+ 0.52329764096066356f,0.92295324662700295f,0.84335647663101554f,0.26281475694850087f,\
+ 0.35726496530696750f,0.6561381467618048f,\
+0.05689279362559319f,0.3096467358991504f,0.24135384149849415f,0.65027950797230005f,\
+ 0.5596947595477104f,0.10007458087056875f,0.07485948316752911f,0.43609866220504045f,\
+ 0.76933998242020607f,0.24455389659851789f,\
+0.55959366867318749f,0.25522057106718421f,0.50644348980858922f,0.08813347620889544f,\
+ 0.56173070007935166f,0.46782181179150939f,0.85328151332214475f,0.91105451015755534f,\
+ 0.54776339093223214f,0.52831235667690635f,\
+0.12493403162807226f,0.62518793903291225f,0.42361020017415285f,0.44987633451819420f,\
+ 0.46817600261420012f,0.39504976756870747f,0.01245901081711054f,0.80826673656702042f,\
+ 0.09622887428849936f,0.84689256362617016f,\
+0.72792222863063216f,0.11574173765257001f,0.28937275288626552f,0.72272530803456903f,\
+ 0.77945467224344611f,0.03661171020939946f,0.18675393564626575f,0.81026530498638749f,\
+ 0.95611717319115996f,0.78766220854595304f,\
+0.26777664758265018f,0.61170040909200907f,0.08879321813583374f,0.89767962601035833f,\
+ 0.79010718129575253f,0.51753685344010592f,0.49205840751528740f,0.25904283951967955f,\
+ 0.22074085660278797f,0.12620826158672571f,\
+0.54653349192813039f,0.67839562846347690f,0.62128817522898316f,0.24278218811377883f,\
+ 0.98085420625284314f,0.83254515705630183f,0.74896081397309899f,0.41390872886404395f,\
+ 0.01432593585923314f,0.78838609857484698f,\
+0.98854076582938433f,0.33200952783226967f,0.34549844544380903f,0.43377211131155491f,\
+ 0.81870661024004221f,0.61048321425914764f,0.94149570073932409f,0.35999277792870998f,\
+ 0.81914897728711367f,0.34530424699187279f}
+
+#define CRESULT_OUT 8.6410312306124072989633f
+
+static void sinfnormaTest(void) {
+
+ float in[] = FMATRIX_IN ;
+
+ float out = 0;
+
+ float result = FRESULT_OUT ;
+
+ out = sinfnorma ( in , LEADDIM , LEADDIM );
+
+ printf ( "\t\t out : %e\tresult : %e\tassert : %e \n" , out , result , fabs ( out - result ) / fabs( out) ) ;
+ assert ( fabs ( out - result ) / fabs( out) < 1e-6 ) ;
+
+
+
+}
+
+static void dinfnormaTest(void) {
+
+ double in[] = DMATRIX_IN ;
+
+ double out = 0;
+
+ double result = DRESULT_OUT ;
+
+ out = dinfnorma ( in , LEADDIM , LEADDIM );
+
+ printf ( "\t\t out : %.16f\tresult : %.16f\tassert : %e \n" , out , result , fabs ( out - result ) / fabs( out) ) ;
+ assert ( fabs ( out - result ) / fabs( out) < 3e-16 ) ;
+
+
+
+}
+
+static void zinfnormaTest(void) {
+
+ double Rin[] = ZRMATRIX_IN ;
+ double Iin[] = ZIMATRIX_IN ;
+
+ doubleComplex* in = DoubleComplexMatrix ( Rin , Iin , LEADDIM*LEADDIM ) ;
+
+ double out = 0;
+
+ double result = ZRESULT_OUT ;
+
+ out = zinfnorma ( in , LEADDIM , LEADDIM );
+
+ printf ( "\t\t out : %.16f\tresult : %.16f\tassert : %e \n" , out , result , fabs ( out - result ) / fabs( out) ) ;
+ assert ( fabs ( out - result ) / fabs( out) < 3e-16 ) ;
+
+
+
+}
+
+static void cinfnormaTest(void) {
+
+ float Rin[] = CRMATRIX_IN ;
+ float Iin[] = CIMATRIX_IN ;
+
+ floatComplex* in = FloatComplexMatrix ( Rin , Iin , LEADDIM*LEADDIM ) ;
+
+ float out = 0;
+
+ float result = CRESULT_OUT ;
+
+ out = cinfnorma ( in , LEADDIM , LEADDIM );
+
+ printf ( "\t\t out : %.16f\tresult : %.16f\tassert : %e \n" , out , result , fabs ( out - result ) / fabs( out) ) ;
+ assert ( fabs ( out - result ) / fabs( out) < 3e-6 ) ;
+
+
+
+}
+
+static int testInfiniteNorm(void) {
+
+ printf("\n>>>> Matrix Exponential Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ dinfnormaTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ sinfnormaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ cinfnormaTest();;
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zinfnormaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testInfiniteNorm() == 0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj b/2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj
new file mode 100644
index 00000000..2b4cd276
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{43BF5E9A-3456-45FE-9DEF-9E962B4D4E3D}</ProjectGuid>
+ <RootNamespace>testMatrixInfiniteNorm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../auxiliaryFunctions/includes;../../../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixInfiniteNorm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj.filters b/2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj.filters
new file mode 100644
index 00000000..4d00eb49
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/test_MatrixInfiniteNorm/testMatrixInfiniteNorm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixInfiniteNorm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/infiniteNorm/zinfnorma.c b/2.3-1/src/c/matrixOperations/infiniteNorm/zinfnorma.c
new file mode 100644
index 00000000..bc683903
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/infiniteNorm/zinfnorma.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "infiniteNorm.h"
+
+double zinfnorma(doubleComplex* in, int _iRows, int _iCols)
+{
+ int iIndex1 = 0, iIndex2 = 0;
+ double dblTemp = 0;
+ double dblRef = 0;
+
+ for(iIndex1 = 0 ; iIndex1 < _iRows ; iIndex1++)
+ {
+ dblTemp = 0;
+ for(iIndex2 = 0 ; iIndex2 < _iCols ; iIndex2++)
+ {
+ dblTemp += dpythags( zreals( in[iIndex1 + iIndex2 * _iRows]),
+ zimags( in[iIndex1 + iIndex2 * _iRows]));
+ }
+ if(dblTemp > dblRef)
+ dblRef = dblTemp;
+ }
+
+ return dblRef;
+}
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpApex.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpApex.h
new file mode 100644
index 00000000..4915e204
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpApex.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPAPEX_H__
+#define __INT_OPAPEX_H__
+
+#define s0OpApexs0(in) in
+
+#define d0OpApexd0(in) in
+
+#define c0OpApexc0(in) cconjs(in)
+
+#define z0OpApexz0(in) zconjs(in)
+
+#define s2OpApexs2(in,size,out) stransposea(in,size[0],size[1],out);
+
+#define d2OpApexd2(in,size,out) dtransposea(in,size[0],size[1],out);
+
+#define c2OpApexc2(in,size,out) ctransposea(in,size[0],size[1],out);cconja(out,size[0]*size[1],out);
+
+#define z2OpApexz2(in,size,out) ztransposea(in,size[0],size[1],out);zconja(out,size[0]*size[1],out);
+
+#endif /* !__INT_OPAPEX_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpBackSlash.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpBackSlash.h
new file mode 100644
index 00000000..898c37be
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpBackSlash.h
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPBACKSLASH_H__
+#define __INT_OPBACKSLASH_H__
+
+/* Matrix \ Matrix */
+
+#define s2s2OpBackSlashs2(in1,size1,in2,size2,out) sldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpBackSlashd2(in1,size1,in2,size2,out) dldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2c2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2s2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(in1,size1[0],size1[1],FloatComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define s2c2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(FloatComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2z2OpBackSlashz2(in1,size1,in2,size2,out) zldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2d2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(in1,size1[0],size1[1],DoubleComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define d2z2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(DoubleComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+
+#endif /* !__INT_OPBACKSLASH_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpCc.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpCc.h
new file mode 100644
index 00000000..2cd3d558
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpCc.h
@@ -0,0 +1,134 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPCC_H__
+#define __INT_OPCC_H__
+
+/*
+ /!\
+ / ! \ We used rowcat because disp isn't right. In the real case, it must be columncat for Cc.
+ /__!_ \
+
+*/
+
+
+/* Column Cat */
+
+/* Same input elements */
+
+#define s0s0OpCcs2(in1,in2,out) srowcats(in1,in2,out)
+
+#define d0d0OpCcd2(in1,in2,out) drowcats(in1,in2,out)
+
+#define c0c0OpCcc2(in1,in2,out) crowcats(in1,in2,out)
+
+#define z0z0OpCcz2(in1,in2,out) zrowcats(in1,in2,out)
+
+#define s2s2OpCcs2(in1,size1,in2,size2,out) srowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define d2d2OpCcd2(in1,size1,in2,size2,out) drowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define c2c2OpCcc2(in1,size1,in2,size2,out) crowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define z2z2OpCcz2(in1,size1,in2,size2,out) zrowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+/* Differents input elements */
+#define s0c0OpCcc2(in1,in2,out) c0c0OpCcc2(FloatComplex(in1,0),in2,out)
+
+#define d0z0OpCcz2(in1,in2,out) z0z0OpCcz2(DoubleComplex(in1,0),in2,out)
+
+#define c0s0OpCcc2(in1,in2,out) c0c0OpCcc2(in1,FloatComplex(in2,0),out)
+
+#define z0d0OpCcz2(in1,in2,out) z0z0OpCcz2(in1,DoubleComplex(in2,0),out)
+
+#define s2c2OpCcc2(in1,size1,in2,size2,out) sfilla((float*)out,size1[0],size1[1],0); \
+ c2c2OpCcc2(FloatComplexMatrix(in1,(float*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define d2z2OpCcz2(in1,size1,in2,size2,out) dfilla((double*)out,size1[0],size1[1],0); \
+ z2z2OpCcz2(DoubleComplexMatrix(in1,(double*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define c2s2OpCcc2(in1,size1,in2,size2,out) sfilla((float*)out,size2[0],size2[1],0); \
+ c2c2OpCcc2(in1, size1, FloatComplexMatrix(in2,(float*)out,size2[0]*size2[1]), size2, out)
+
+#define z2d2OpCcz2(in1,size1,in2,size2,out) dfilla((double*)out,size2[0],size2[1],0); \
+ z2z2OpCcz2(in1, size1, DoubleComplexMatrix(in2,(double*)out,size2[0]*size2[1]), size2, out)
+
+/* Matrix-Scalar */
+
+/* Same type */
+
+#define s2s0OpCcs2(in1,size,in2,out) { float temp=in2; \
+ srowcata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define d2d0OpCcd2(in1,size,in2,out) { double temp=in2; \
+ drowcata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define c2c0OpCcc2(in1,size,in2,out) { floatComplex temp = in2; \
+ crowcata(in1, size[0], size[1],&temp, 1, 1, out);\
+ }
+
+#define z2z0OpCcz2(in1,size,in2,out) { doubleComplex temp =in2; \
+ zrowcata(in1, size[0], size[1],&temp, 1, 1, out);\
+ }
+
+
+/* Different type */
+#define s2c0OpCcc2(in1,size,in2,out) sfilla((float *)out,size[0],size[1],0); \
+ c2c0OpCcc2(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]),size,in2,out)
+
+#define d2z0OpCcz2(in1,size,in2,out) dfilla((double *)out,size[0],size[1],0); \
+ z2z0OpCcz2(DoubleComplexMatrix(in1,(double *)out,size[0]*size[1]),size,in2,out)
+
+#define c2s0OpCcc2(in1,size,in2,out) { floatComplex temp = FloatComplex(in2, 0); c2c0OpCcc2(in1, size, temp, out)}
+
+#define z2d0OpCcz2(in1,size,in2,out) { doubleComplex temp = DoubleComplex(in2, 0); z2z0OpCcz2(in1, size, temp, out)}
+
+
+/* Scalar-Matrix */
+
+/* Same type */
+#define s0s2OpCcs2(in1,in2,size,out) { \
+ float __tmp1 = in1 ;\
+ srowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define d0d2OpCcd2(in1,in2,size,out) { \
+ double __tmp1 = in1 ;\
+ drowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define c0c2OpCcc2(in1,in2,size,out) { \
+ floatComplex __tmp1 = in1 ;\
+ crowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define z0z2OpCcz2(in1,in2,size,out) { \
+ doubleComplex __tmp1 = in1 ;\
+ zrowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+/* Different type */
+#define s0c2OpCcc2(in1,in2,size,out) c0c2OpCcc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2OpCcz2(in1,in2,size,out) z0z2OpCcz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2OpCcc2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],0); \
+ c0c2OpCcc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out)
+
+#define z0d2OpCcz2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],0); \
+ z0z2OpCcz2(in1,DoubleComplexMatrix(in2,(double*)out,size[0]*size[1]),size,out)
+
+#endif /* !__INT_OPCC_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpDotApex.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpDotApex.h
new file mode 100644
index 00000000..4978ca56
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpDotApex.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPDOTAPEX_H__
+#define __INT_OPDOTAPEX_H__
+
+#define s0OpDotApexs0(in) in
+
+#define d0OpDotApexd0(in) in
+
+#define c0OpDotApexc0(in) in
+
+#define z0OpDotApexz0(in) in
+
+#define s2OpDotApexs2(in,size,out) stransposea(in,size[0],size[1],out);
+
+#define d2OpDotApexd2(in,size,out) dtransposea(in,size[0],size[1],out);
+
+#define c2OpDotApexc2(in,size,out) ctransposea(in,size[0],size[1],out);
+
+#define z2OpDotApexz2(in,size,out) ztransposea(in,size[0],size[1],out);
+
+#endif /* !__INT_OPDOTAPEX_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpRc.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpRc.h
new file mode 100644
index 00000000..1e8f1c92
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpRc.h
@@ -0,0 +1,139 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPRC_H__
+#define __INT_OPRC_H__
+
+/*
+ /!\
+ / ! \ We used columncat because disp isn't right. In the real case, it must be rowcat for Rc.
+ /__!_ \
+
+*/
+
+
+/* Column Cat */
+
+/* Same input elements */
+
+#define s0s0OpRcs2(in1,in2,out) scolumncats(in1,in2,out)
+
+#define d0d0OpRcd2(in1,in2,out) dcolumncats(in1,in2,out)
+
+#define c0c0OpRcc2(in1,in2,out) ccolumncats(in1,in2,out)
+
+#define z0z0OpRcz2(in1,in2,out) zcolumncats(in1,in2,out)
+
+#define s2s2OpRcs2(in1,size1,in2,size2,out) scolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define d2d2OpRcd2(in1,size1,in2,size2,out) dcolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define c2c2OpRcc2(in1,size1,in2,size2,out) ccolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define z2z2OpRcz2(in1,size1,in2,size2,out) zcolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+/* Differents input elements */
+#define s0c0OpRcc2(in1,in2,out) c0c0OpRcc2(FloatComplex(in1,0),in2,out)
+
+#define d0z0OpRcz2(in1,in2,out) z0z0OpRcz2(DoubleComplex(in1,0),in2,out)
+
+#define c0s0OpRcc2(in1,in2,out) c0c0OpRcc2(in1,FloatComplex(in2,0),out)
+
+#define z0d0OpRcz2(in1,in2,out) z0z0OpRcz2(in1,DoubleComplex(in2,0),out)
+
+#define s2c2OpRcc2(in1,size1,in2,size2,out) sfilla((float*)out,size1[0],size1[1],0); \
+ c2c2OpRcc2(FloatComplexMatrix(in1,(float*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define d2z2OpRcz2(in1,size1,in2,size2,out) dfilla((double*)out,size1[0],size1[1],0); \
+ z2z2OpRcz2(DoubleComplexMatrix(in1,(double*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define c2s2OpRcc2(in1,size1,in2,size2,out) sfilla((float*)out,size2[0],size2[1],0); \
+ c2c2OpRcc2(in1, size1, FloatComplexMatrix(in2,(float*)out,size2[0]*size2[1]), size2, out)
+
+#define z2d2OpRcz2(in1,size1,in2,size2,out) dfilla((double*)out,size2[0],size2[1],0); \
+ z2z2OpRcz2(in1, size1, DoubleComplexMatrix(in2,(double*)out,size2[0]*size2[1]), size2, out)
+
+/* Matrix-Scalar */
+
+/* Same type */
+
+#define s2s0OpRcs2(in1,size,in2,out) { float temp=in2; \
+ scolumncata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define d2d0OpRcd2(in1,size,in2,out) { double temp=in2; \
+ dcolumncata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define c2c0OpRcc2(in1,size,in2,out) { floatComplex temp=in2; \
+ ccolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+#define z2z0OpRcz2(in1,size,in2,out) { doubleComplex temp=in2; \
+ zcolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+/* Different type */
+#define s2c0OpRcc2(in1,size,in2,out) { floatComplex temp=in2; \
+ sfilla((float *)out,size[0],size[1],0); \
+ scolumncata(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]), size[0], size[1], &temp , 1, 1, out); \
+ }
+
+#define d2z0OpRcz2(in1,size,in2,out) { doubleComplex temp=in2; \
+ dfilla((double *)out,size[0],size[1],0); \
+ zcolumncata(DoubleComplexMatrix(in1,(double *)out,size[0]*size[1]), size[0], size[1], &temp , 1, 1, out); \
+ }
+
+#define c2s0OpRcc2(in1,size,in2,out) { floatComplex temp = FloatComplex(in2,0); \
+ ccolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+#define z2d0OpRcz2(in1,size,in2,out) { doubleComplex temp = DoubleComplex(in2,0); \
+ zcolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+/* Scalar-Matrix */
+
+/* Same type */
+#define s0s2OpRcs2(in1,in2,size,out) { \
+ float __tmp1 = in1 ;\
+ scolumncata(&__tmp1 , 1, 1, in2, size[0], size[1], out);\
+}
+#define d0d2OpRcd2(in1,in2,size,out) {\
+ double __tmp1 = in1 ;\
+ dcolumncata(&__tmp1 , 1, 1, in2, size[0], size[1], out); \
+}
+
+#define c0c2OpRcc2(in1,in2,size,out) { \
+ floatComplex __tmp1 = in1 ;\
+ ccolumncata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define z0z2OpRcz2(in1,in2,size,out) { \
+ doubleComplex __tmp1 = in1 ;\
+ zcolumncata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+/* Different type */
+#define s0c2OpRcc2(in1,in2,size,out) c0c2OpRcc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2OpRcz2(in1,in2,size,out) z0z2OpRcz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2OpRcc2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],0); \
+ c0c2OpRcc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out)
+
+#define z0d2OpRcz2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],0); \
+ z0z2OpRcz2(in1,DoubleComplexMatrix(in2,(double*)out,size[0]*size[1]),size,out)
+
+#endif /* !__INT_OPRC_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpSlash.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpSlash.h
new file mode 100644
index 00000000..20930a0a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpSlash.h
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPSLASH_H__
+#define __INT_OPSLASH_H__
+
+
+/* Matrix / Matrix */
+
+#define s2s2OpSlashs2(in1,size1,in2,size2,out) srdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpSlashd2(in1,size1,in2,size2,out) drdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2c2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2s2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],FloatComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define s2c2OpSlashc2(in1,size1,in2,size2,out) crdivma(FloatComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2z2OpSlashz2(in1,size1,in2,size2,out) zrdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2d2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],DoubleComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define d2z2OpSlashc2(in1,size1,in2,size2,out) crdivma(DoubleComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+
+#endif /* !__INT_OPSLASH_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_OpStar.h b/2.3-1/src/c/matrixOperations/interfaces/int_OpStar.h
new file mode 100644
index 00000000..f922b319
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_OpStar.h
@@ -0,0 +1,45 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPSTAR_H__
+#define __INT_OPSTAR_H__
+
+/* Matrix * Matrix */
+
+#define s2s2OpStars2(in1,size1,in2,size2,out) smulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpStard2(in1,size1,in2,size2,out) dmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2c2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define u82u82OpStaru82(in1,size1,in2,size2,out) u8mulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define u162u162OpStaru162(in1,size1,in2,size2,out) u16mulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define i82i82OpStari82(in1,size1,in2,size2,out) i8mulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define i162i162OpStari162(in1,size1,in2,size2,out) i16mulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2s2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],FloatComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define s2c2OpStarc2(in1,size1,in2,size2,out) cmulma(FloatComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2z2OpStarz2(in1,size1,in2,size2,out) zmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2d2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],DoubleComplexMatrix(in2,0,size2[0],size2[1]),size2[0],size2[1],out)
+
+#define d2z2OpStarc2(in1,size1,in2,size2,out) cmulma(DoubleComplexMatrix(in1,0,size1[0],size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+
+#endif /* !__INT_OPSTAR_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_cat.h b/2.3-1/src/c/matrixOperations/interfaces/int_cat.h
new file mode 100644
index 00000000..db80bec9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_cat.h
@@ -0,0 +1,359 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CAT_H
+#define __INT_CAT_H
+
+/* Column Cat */
+
+/* Same input elements */
+
+#define s0s0cats2(in1,in2,out) scolumncats(in1,in2,out)
+
+#define d0d0catd2(in1,in2,out) dcolumncats(in1,in2,out)
+
+#define c0c0catc2(in1,in2,out) ccolumncats(in1,in2,out)
+
+#define z0z0catz2(in1,in2,out) zcolumncats(in1,in2,out)
+
+#define u80u80catu82(in1,in2,out) u8columncats(in1,in2,out)
+
+#define u160u160catu162(in1,in2,out) u16columncats(in1,in2,out)
+
+#define i80i80cati82(in1,in2,out) i8columnscats(in1,in2,out)
+
+#define i160i160cati162(in1,in2,out) i16columnscats(in1,in2,out)
+
+#define s2s2cats2(in1,size1,in2,size2,out) scolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define d2d2catd2(in1,size1,in2,size2,out) dcolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+/* ROW COLUMN SUPPORT for cat, If First argument in cat command is 1 then it will concatenate the element ROW WISE else COLUMN WISE */
+
+#define d0d2d2catd2(in1,in2,size2,in3,size3,out) (in1 == 1) ? drowcata(in2, size2[0], size2[1], in3, size3[0], size3[1], out) : dcolumncata(in2, size2[0],size2[1],in3,size3[0],size3[1],out)
+
+#define d0u82u82catu82(in1,in2,size2,in3,size3,out) (in1 == 1) ? u8rowcata(in2, size2[0], size2[1], in3, size3[0], size3[1], out) : u8columncata(in2, size2[0],size2[1],in3,size3[0],size3[1],out)
+
+#define d0u162u162catu162(in1,in2,size2,in3,size3,out) (in1 == 1) ? u16rowcata(in2, size2[0], size2[1], in3, size3[0], size3[1], out) : u16columncata(in2, size2[0],size2[1],in3,size3[0],size3[1],out)
+
+
+#define d0i82i82cati82(in1,in2,size2,in3,size3,out) (in1 == 1) ? i8rowcata(in2, size2[0], size2[1], in3, size3[0], size3[1], out) : i8columncata(in2, size2[0],size2[1],in3,size3[0],size3[1],out)
+
+#define d0i162i162cati162(in1,in2,size2,in3,size3,out) (in1 == 1) ? i16rowcata(in2, size2[0], size2[1], in3, size3[0], size3[1], out) : i16columncata(in2, size2[0],size2[1],in3,size3[0],size3[1],out)
+
+
+#define c2c2catc2(in1,size1,in2,size2,out) ccolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define z2z2catz2(in1,size1,in2,size2,out) zcolumncata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define u82u82catu82(in1,size1,in2,size2,out) u8columncata(in1,size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define u162u162catu162(in1,size1,in2,size2,out) u16columncata(in1,size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define i82i82cati82(in1,size1,in2,size2,out) i8columncata(in1,size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define i162i162cati162(in1,size1,in2,size2,out) i16columncata(in1,size1[0], size1[1], in2, size2[0], size2[1], out)
+
+
+
+/* Differents input elements */
+#define s0c0catc2(in1,in2,out) c0c0OpRcc2(FloatComplex(in1,0),in2,out)
+
+#define d0z0catz2(in1,in2,out) z0z0OpRcz2(DoubleComplex(in1,0),in2,out)
+
+#define c0s0catc2(in1,in2,out) c0c0OpRcc2(in1,FloatComplex(in2,0),out)
+
+#define z0d0catz2(in1,in2,out) z0z0OpRcz2(in1,DoubleComplex(in2,0),out)
+
+#define s2c2catc2(in1,size1,in2,size2,out) sfilla((float*)out,size1[0],size1[1],0); \
+ c2c2OpRcc2(FloatComplexMatrix(in1,(float*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define d2z2catz2(in1,size1,in2,size2,out) dfilla((double*)out,size1[0],size1[1],0); \
+ z2z2OpRcz2(DoubleComplexMatrix(in1,(double*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define c2s2catc2(in1,size1,in2,size2,out) sfilla((float*)out,size2[0],size2[1],0); \
+ c2c2OpRcc2(in1, size1, FloatComplexMatrix(in2,(float*)out,size2[0]*size2[1]), size2, out)
+
+#define z2d2catz2(in1,size1,in2,size2,out) dfilla((double*)out,size2[0],size2[1],0); \
+ z2z2OpRcz2(in1, size1, DoubleComplexMatrix(in2,(double*)out,size2[0]*size2[1]), size2, out)
+
+/* Matrix-Scalar */
+
+/* Same type */
+
+#define s2s0cats2(in1,size,in2,out) { float temp=in2; \
+ scolumncata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define d2d0catd2(in1,size,in2,out) { double temp=in2; \
+ dcolumncata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define c2c0catc2(in1,size,in2,out) { floatComplex temp=in2; \
+ ccolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+#define z2z0catz2(in1,size,in2,out) { doubleComplex temp=in2; \
+ zcolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+#define u82u80catu82(in1,size,in2,out) { uint8 temp=in2; \
+ u8columncata(in1,size[0],size[1],&temp,1,1,out); \
+ }
+#define u162u160catu162(in1,size,in2,out) { uint16 temp=in2; \
+ u16columncata(in1,size[0],size[1],&temp,1,1,out); \
+ }
+#define i82i80cati82(in1,size,in2,out) { int8 temp=in2; \
+ i8columncata(in1,size[0],size[1],&temp,1,1,out); \
+ }
+#define i162i160cati162(in1,size,in2,out) { int16 temp=in2; \
+ i16columncata(in1,size[0],size[1],&temp,1,1,out); \
+ }
+
+
+/* Different type */
+#define s2c0catc2(in1,size,in2,out) { floatComplex temp=in2; \
+ sfilla((float *)out,size[0],size[1],0); \
+ scolumncata(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]), size[0], size[1], &temp , 1, 1, out); \
+ }
+
+#define d2z0catz2(in1,size,in2,out) { doubleComplex temp=in2; \
+ dfilla((double *)out,size[0],size[1],0); \
+ zcolumncata(DoubleComplexMatrix(in1,(double *)out,size[0]*size[1]), size[0], size[1], &temp , 1, 1, out); \
+ }
+
+#define c2s0catc2(in1,size,in2,out) { floatComplex temp = FloatComplex(in2,0); \
+ ccolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+#define z2d0catz2(in1,size,in2,out) { doubleComplex temp = DoubleComplex(in2,0); \
+ zcolumncata(in1, size[0], size[1], &temp, 1, 1, out); \
+ }
+
+/* Scalar-Matrix */
+
+/* Same type */
+#define s0s2cats2(in1,in2,size,out) { \
+ float __tmp1 = in1 ;\
+ scolumncata(&__tmp1 , 1, 1, in2, size[0], size[1], out);\
+}
+#define d0d2catd2(in1,in2,size,out) {\
+ double __tmp1 = in1 ;\
+ dcolumncata(&__tmp1 , 1, 1, in2, size[0], size[1], out); \
+}
+
+#define c0c2catc2(in1,in2,size,out) { \
+ floatComplex __tmp1 = in1 ;\
+ ccolumncata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define z0z2catz2(in1,in2,size,out) { \
+ doubleComplex __tmp1 = in1 ;\
+ zcolumncata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define u80u82catu82(in1,in2,size,out) {\
+ uint8 __tmp1 = in1 ;\
+ u8columncata(&__tmp1,1,1,in2,size[0],size[1],out);\
+}
+
+#define u160u162catu162(in1,in2,size,out) {\
+ uint16 __tmp1 = in1 ;\
+ u16columncata(&__tmp1,1,1,in2,size[0],size[1],out);\
+}
+
+#define i80i82cati82(in1,in2,size,out) {\
+ int8 __tmp1 = in1 ;\
+ i8columncata(&__tmp1,1,1,in2,size[0],size[1],out);\
+}
+
+#define i160i162cati162(in1,in2,size,out) {\
+ int16 __tmp1 = in1 ;\
+ i16columncata(&__tmp1,1,1,in2,size[0],size[1],out);\
+}
+
+
+/* Different type */
+#define s0c2catc2(in1,in2,size,out) c0c2OpRcc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2catz2(in1,in2,size,out) z0z2OpRcz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2catc2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],0); \
+ c0c2OpRcc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out)
+
+#define z0d2catz2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],0); \
+ z0z2OpRcz2(in1,DoubleComplexMatrix(in2,(double*)out,size[0]*size[1]),size,out)
+
+
+/* Column Cat */
+
+/* Same input elements */
+
+#define s0s0cats2(in1,in2,out) srowcats(in1,in2,out)
+
+#define d0d0catd2(in1,in2,out) drowcats(in1,in2,out)
+
+#define c0c0catc2(in1,in2,out) crowcats(in1,in2,out)
+
+#define z0z0catz2(in1,in2,out) zrowcats(in1,in2,out)
+
+#define u80u80catu82(in1,in2,out) u8rowcats(in1,in2,out)
+
+#define u160u160catu162(in1,in2,out) u16rowcats(in1,in2,out)
+
+#define i80i80cati82(in1,in2,out) i8rowcats(in1,in2,out)
+
+#define i160i160cati162(in1,in2,out) i16rowcats(in1,in2,out)
+
+#define s2s2cats2(in1,size1,in2,size2,out) srowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define d2d2catd2(in1,size1,in2,size2,out) drowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define c2c2catc2(in1,size1,in2,size2,out) crowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define z2z2catz2(in1,size1,in2,size2,out) zrowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define u82u82catu82(in1,size1,in2,size2,out) u8rowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define u162u162catu162(in1,size1,in2,size2,out) u16rowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define i82i82cati82(in1,size1,in2,size2,out) i8rowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define i162i162cati162(in1,size1,in2,size2,out) i16rowcata(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+/* Differents input elements */
+#define s0c0catc2(in1,in2,out) c0c0OpCcc2(FloatComplex(in1,0),in2,out)
+
+#define d0z0catz2(in1,in2,out) z0z0OpCcz2(DoubleComplex(in1,0),in2,out)
+
+#define c0s0catc2(in1,in2,out) c0c0OpCcc2(in1,FloatComplex(in2,0),out)
+
+#define z0d0catz2(in1,in2,out) z0z0OpCcz2(in1,DoubleComplex(in2,0),out)
+
+#define s2c2catc2(in1,size1,in2,size2,out) sfilla((float*)out,size1[0],size1[1],0); \
+ c2c2OpCcc2(FloatComplexMatrix(in1,(float*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define d2z2catz2(in1,size1,in2,size2,out) dfilla((double*)out,size1[0],size1[1],0); \
+ z2z2OpCcz2(DoubleComplexMatrix(in1,(double*)out,size1[0]*size1[1]), size1, in2, size2, out)
+
+#define c2s2catc2(in1,size1,in2,size2,out) sfilla((float*)out,size2[0],size2[1],0); \
+ c2c2OpCcc2(in1, size1, FloatComplexMatrix(in2,(float*)out,size2[0]*size2[1]), size2, out)
+
+#define z2d2catz2(in1,size1,in2,size2,out) dfilla((double*)out,size2[0],size2[1],0); \
+ z2z2OpCcz2(in1, size1, DoubleComplexMatrix(in2,(double*)out,size2[0]*size2[1]), size2, out)
+
+/* Matrix-Scalar */
+
+/* Same type */
+
+#define s2s0cats2(in1,size,in2,out) { float temp=in2; \
+ srowcata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define d2d0catd2(in1,size,in2,out) { double temp=in2; \
+ drowcata(in1, size[0], size[1],&temp, 1, 1, out); \
+ }
+
+#define c2c0catc2(in1,size,in2,out) { floatComplex temp = in2; \
+ crowcata(in1, size[0], size[1],&temp, 1, 1, out);\
+ }
+
+#define z2z0catz2(in1,size,in2,out) { doubleComplex temp =in2; \
+ zrowcata(in1, size[0], size[1],&temp, 1, 1, out);\
+ }
+
+#define u82u80catu82(in1,size,in2,out) { uint8 temp=in2; \
+ u8rowcata(in1, size[0], size[1],&temp, 1,1,out);\
+ }
+#define u162u160catu162(in1,size,in2,out) { uint16 temp=in2; \
+ u16rowcata(in1, size[0], size[1],&temp, 1,1,out);\
+ }
+
+#define i82i80cati82(in1,size,in2,out) { int8 temp=in2; \
+ i8rowcata(in1, size[0], size[1],&temp, 1,1,out);\
+ }
+#define i162i160cati162(in1,size,in2,out) { int16 temp=in2; \
+ i16rowcata(in1, size[0], size[1],&temp, 1,1,out);\
+ }
+
+
+
+/* Different type */
+#define s2c0catc2(in1,size,in2,out) sfilla((float *)out,size[0],size[1],0); \
+ c2c0OpCcc2(FloatComplexMatrix(in1,(float*)out,size[0]*size[1]),size,in2,out)
+
+#define d2z0catz2(in1,size,in2,out) dfilla((double *)out,size[0],size[1],0); \
+ z2z0OpCcz2(DoubleComplexMatrix(in1,(double *)out,size[0]*size[1]),size,in2,out)
+
+#define c2s0catc2(in1,size,in2,out) { floatComplex temp = FloatComplex(in2, 0); c2c0OpCcc2(in1, size, temp, out)}
+
+#define z2d0catz2(in1,size,in2,out) { doubleComplex temp = DoubleComplex(in2, 0); z2z0OpCcz2(in1, size, temp, out)}
+
+
+/* Scalar-Matrix */
+
+/* Same type */
+#define s0s2cats2(in1,in2,size,out) { \
+ float __tmp1 = in1 ;\
+ srowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define d0d2catd2(in1,in2,size,out) { \
+ double __tmp1 = in1 ;\
+ drowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define c0c2catc2(in1,in2,size,out) { \
+ floatComplex __tmp1 = in1 ;\
+ crowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define z0z2catz2(in1,in2,size,out) { \
+ doubleComplex __tmp1 = in1 ;\
+ zrowcata(&__tmp1, 1, 1, in2, size[0], size[1], out);\
+}
+
+#define u80u82catu82(in1,in2,size,out) { \
+ uint8 __tmp1 = in1;\
+ u8rowcata(&__tmp1, 1,1, in2, size[0], size[1], out);\
+}
+
+#define u160u162catu162(in1,in2,size,out) { \
+ uint16 __tmp1 = in1;\
+ u16rowcata(&__tmp1, 1,1, in2, size[0], size[1], out);\
+}
+
+#define i80i82cati82(in1,in2,size,out) { \
+ int8 __tmp1 = in1;\
+ i8rowcata(&__tmp1, 1,1, in2, size[0], size[1], out);\
+}
+
+#define i160i162cati162(in1,in2,size,out) { \
+ int16 __tmp1 = in1;\
+ i16rowcata(&__tmp1, 1,1, in2, size[0], size[1], out);\
+}
+
+
+/* Different type */
+#define s0c2catc2(in1,in2,size,out) c0c2OpCcc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2catz2(in1,in2,size,out) z0z2OpCcz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2catc2(in1,in2,size,out) sfilla((float*)out,size[0],size[1],0); \
+ c0c2OpCcc2(in1,FloatComplexMatrix(in2,(float*)out,size[0]*size[1]),size,out)
+
+#define z0d2catz2(in1,in2,size,out) dfilla((double*)out,size[0],size[1],0); \
+ z0z2OpCcz2(in1,DoubleComplexMatrix(in2,(double*)out,size[0]*size[1]),size,out)
+
+
+#endif /* !__INT_CAT__H */
+
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_chol.h b/2.3-1/src/c/matrixOperations/interfaces/int_chol.h
new file mode 100644
index 00000000..861ad4d1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_chol.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_CHOL_H__
+#define __INT_CHOL_H__
+
+#define s0chols0(in) schols(in)
+
+#define d0chold0(in) dchols(in)
+
+#define c0cholc0(in) cchols(in)
+
+#define z0cholz0(in) zchols(in)
+
+#define s2chols2(in,size,out) schola(in, size[0], out)
+
+#define d2chold2(in,size,out) dchola(in, size[0], out)
+
+#define c2cholc2(in,size,out) cchola(in, size[0], out)
+
+#define z2cholz2(in,size,out) zchola(in, size[0], out)
+
+#endif /* !__INT_CHOL_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_cumprod.h b/2.3-1/src/c/matrixOperations/interfaces/int_cumprod.h
new file mode 100644
index 00000000..5ba3cc7a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_cumprod.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CUMPROD_H__
+#define __INT_CUMPROD_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0cumprodd0(in) in
+#define s0cumprods0(in) in
+#define u80cumprodu80(in) in
+#define u160cumprodu160(in) in
+#define i80cumprodi80(in) in
+#define i160cumprodi160(in) in
+
+#define d2cumprodd2(in1, size1, out) dcumproda(in1, size1[0], size1[1], out)
+#define s2cumprods2(in1, size1, out) scumproda(in1, size1[0], size1[1], out)
+#define u82cumprodu82(in1, size1, out) u8cumproda(in1, size1[0], size1[1], out)
+#define u162cumprodu162(in1, size1, out) u16cumproda(in1, size1[0], size1[1], out)
+#define i82cumprodi82(in1, size1, out) i8cumproda(in1, size1[0], size1[1], out)
+#define i162cumprodi162(in1, size1, out) i16cumproda(in1, size1[0], size1[1], out)
+
+#define d2g2cumprodd2(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ drowcumproda(in1,size1[0],size1[1],out) : dcolumncumproda(in1,size1[0],size1[1],out)
+#define s2g2cumprods2(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ srowcumproda(in1,size1[0],size1[1],out) : scolumncumproda(in1,size1[0],size1[1],out)
+#define u82g2cumprodu82(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ u8rowcumproda(in1,size1[0],size1[1],out) : u8columncumproda(in1,size1[0],size1[1],out)
+#define i82g2cumprodi82(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ i8rowcumproda(in1,size1[0],size1[1],out) : i8columncumproda(in1,size1[0],size1[1],out)
+#define u162g2cumprodu162(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ u16rowcumproda(in1,size1[0],size1[1],out) : u16columncumproda(in1,size1[0],size1[1],out)
+#define i162g2cumprodi162(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ i16rowcumproda(in1,size1[0],size1[1],out) : i16columncumproda(in1,size1[0],size1[1],out)
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_CUMPROD_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_cumsum.h b/2.3-1/src/c/matrixOperations/interfaces/int_cumsum.h
new file mode 100644
index 00000000..0eda0ac9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_cumsum.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CUMSUM_H__
+#define __INT_CUMSUM_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0cumsumd0(in) in
+#define s0cumsums0(in) in
+#define u80cumsumu80(in) in
+#define u160cumsumu160(in) in
+#define i80cumsumi80(in) in
+#define i160cumsumi160(in) in
+
+#define d2cumsumd2(in1, size1, out) dcumsuma(in1, size1[0], size1[1], out)
+#define s2cumsums2(in1, size1, out) scumsuma(in1, size1[0], size1[1], out)
+#define u82cumsumu82(in1, size1, out) u8cumsuma(in1, size1[0], size1[1], out)
+#define u162cumsumu162(in1, size1, out) u16cumsuma(in1, size1[0], size1[1], out)
+#define i82cumsumi82(in1, size1, out) i8cumsuma(in1, size1[0], size1[1], out)
+#define i162cumsumi162(in1, size1, out) i16cumsuma(in1, size1[0], size1[1], out)
+
+#define d2g2cumsumd2(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ drowcumsuma(in1,size1[0],size1[1],out) : dcolumncumsuma(in1,size1[0],size1[1],out)
+#define s2g2cumsums2(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ srowcumsuma(in1,size1[0],size1[1],out) : scolumncumsuma(in1,size1[0],size1[1],out)
+#define u82g2cumsumu82(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ u8rowcumsuma(in1,size1[0],size1[1],out) : u8columncumsuma(in1,size1[0],size1[1],out)
+#define i82g2cumsumi82(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ i8rowcumsuma(in1,size1[0],size1[1],out) : i8columncumsuma(in1,size1[0],size1[1],out)
+#define u162g2cumsumu162(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ u16rowcumsuma(in1,size1[0],size1[1],out) : u16columncumsuma(in1,size1[0],size1[1],out)
+#define i162g2cumsumi162(in1, size1, in2, size2, out) (in2[0]=='r') ? \
+ i16rowcumsuma(in1,size1[0],size1[1],out) : i16columncumsuma(in1,size1[0],size1[1],out)
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_CUMSUM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_det.h b/2.3-1/src/c/matrixOperations/interfaces/int_det.h
new file mode 100644
index 00000000..f7760b16
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_det.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_DETERM_H__
+#define __INT_DETERM_H__
+
+#define s0dets0(in) in
+
+#define d0detd0(in) in
+
+#define c0detc0(in) in
+
+#define z0detz0(in) in
+
+#define s2dets0(in,size) sdeterma(in, size[0])
+
+#define d2detd0(in,size) ddeterma(in, size[0])
+
+#define c2detc0(in,size) cdeterma(in, size[0])
+
+#define z2detz0(in,size) zdeterma(in, size[0])
+
+#endif /* !__INT_DETERM_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_diag.h b/2.3-1/src/c/matrixOperations/interfaces/int_diag.h
new file mode 100644
index 00000000..339831b1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_diag.h
@@ -0,0 +1,85 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_DIAG_H__
+#define __INT_DIAG_H__
+
+
+
+#define d0diagd0(in1) ddiags(in1)
+
+#define d0d0diagd0(in1,in2) ddiags(in1)
+
+#define d0d0diagd2(in1,in2,out) ddiaga(in1,1,in2,out)
+
+#define d2diagd2(in1,size,out) if(size[0] != size[1]) { (size[0]==1) ? ddiagins(in1,size[1],out) : ddiagins(in1,size[0],out); } else {ddiagexa(in1,size[0],size[1],0,out) ;}
+
+#define d2d0diagd2(in1,size,in2,out) if((size[0] != 1) && (size[1] != 1) ) { ddiagexa(in1,size[0],size[1],in2,out); } else { if(in2 != 0) {ddiagina(in1,size[0],size[1],in2,out);} else { (size[0] == 1) ? ddiagins(in1,size[1],out) : ddiagins(in1,size[0],out); };}
+
+#define d2d0diagd0(in1,size,in2) ddiagexs(in1,size[0],size[1],in2)
+
+
+
+#define u80diagu80(in1) u8diags(in1)
+
+#define u80d0diagu80(in1,in2) u8diags(in1)
+
+#define u80d0diagu82(in1,in2,out) u8diaga(in1,1,in2,out)
+
+#define u82diagu82(in1,size,out) if(size[0] != size[1]) { (size[0]==1) ? u8diagins(in1,size[1],out) : u8diagins(in1,size[0],out); } else {u8diagexa(in1,size[0],size[1],0,out) ;}
+
+#define u82d0diagu82(in1,size,in2,out) if((size[0] != 1) && (size[1] != 1) ) { u8diagexa(in1,size[0],size[1],in2,out); } else { if(in2 != 0) {u8diagina(in1,size[0],size[1],in2,out);} else { (size[0] == 1) ? u8diagins(in1,size[1],out) : u8diagins(in1,size[0],out); };}
+
+#define u82d0diagu80(in1,size,in2) u8diagexs(in1,size[0],size[1],in2)
+
+#define u160diagu160(in1) u16diags(in1)
+
+#define u160d0diagu160(in1,in2) u16diags(in1)
+
+#define u160d0diagu162(in1,in2,out) u16diaga(in1,1,in2,out)
+
+#define u162diagu162(in1,size,out) if(size[0] != size[1]) { (size[0]==1) ? u16diagins(in1,size[1],out) : u16diagins(in1,size[0],out); } else {u16diagexa(in1,size[0],size[1],0,out) ;}
+
+#define u162d0diagu162(in1,size,in2,out) if((size[0] != 1) && (size[1] != 1) ) { u16diagexa(in1,size[0],size[1],in2,out); } else { if(in2 != 0) {u16diagina(in1,size[0],size[1],in2,out);} else { (size[0] == 1) ? u16diagins(in1,size[1],out) : u16diagins(in1,size[0],out); };}
+
+#define u162d0diagu160(in1,size,in2) u16diagexs(in1,size[0],size[1],in2)
+
+
+
+#define i80diagi80(in1) i8diags(in1)
+
+#define i80d0diagi80(in1,in2) i8diags(in1)
+
+#define i80d0diagi82(in1,in2,out) i8diaga(in1,1,in2,out)
+
+#define i82diagi82(in1,size,out) if(size[0] != size[1]) { (size[0]==1) ? i8diagins(in1,size[1],out) : i8diagins(in1,size[0],out); } else {i8diagexa(in1,size[0],size[1],0,out) ;}
+
+#define i82d0diagi82(in1,size,in2,out) if((size[0] != 1) && (size[1] != 1) ) { i8diagexa(in1,size[0],size[1],in2,out); } else { if(in2 != 0) {i8diagina(in1,size[0],size[1],in2,out);} else { (size[0] == 1) ? i8diagins(in1,size[1],out) : i8diagins(in1,size[0],out); };}
+
+#define i82d0diagi80(in1,size,in2) i8diagexs(in1,size[0],size[1],in2)
+
+#define i160diagi160(in1) i16diags(in1)
+
+#define i160d0diagi160(in1,in2) i16diags(in1)
+
+#define i160d0diagi162(in1,in2,out) i16diaga(in1,1,in2,out)
+
+
+#define i162diagi162(in1,size,out) if(size[0] != size[1]) { (size[0]==1) ? i16diagins(in1,size[1],out) : i16diagins(in1,size[0],out); } else {i16diagexa(in1,size[0],size[1],0,out) ;}
+
+#define i162d0diagi162(in1,size,in2,out) if((size[0] != 1) && (size[1] != 1) ) { i16diagexa(in1,size[0],size[1],in2,out); } else { if(in2 != 0) {i16diagina(in1,size[0],size[1],in2,out);} else { (size[0] == 1) ? i16diagins(in1,size[1],out) : i16diagins(in1,size[0],out); };}
+
+#define i162d0diagi160(in1,size,in2) i16diagexs(in1,size[0],size[1],in2)
+
+
+
+#endif /* !__INT_DIAG_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_dist.h b/2.3-1/src/c/matrixOperations/interfaces/int_dist.h
new file mode 100644
index 00000000..36809c78
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_dist.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_DIST_H__
+#define __INT_DIST_H__
+
+#define s0s0dists0(in1,in2) sdists(in1,in2)
+
+#define d0d0distd0(in1,in2) ddists(in1,in2)
+
+#define c0c0dists0(in1,in2) cdists(in1,in2)
+
+#define z0z0distd0(in1,in2) zdists(in1,in2)
+
+#define s2s2dists0(in1,size1,in2,size2) sdista(in1, in2, size1[0], size2[1])
+
+#define d2d2distd0(in1,size1,in2,size2) ddista(in1, in2, size1[0], size2[1])
+
+#define c2c2dists0(in1,size1,in2,size2) cdista(in1, in2, size1[0], size2[1])
+
+#define z2z2distd0(in1,size1,in2,size2) zdista(in1, in2, size1[0], size2[1])
+
+#endif /* !__INT_DIST_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_expm.h b/2.3-1/src/c/matrixOperations/interfaces/int_expm.h
new file mode 100644
index 00000000..6e54fb32
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_expm.h
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_EXPM_H__
+#define __INT_EXPM_H__
+
+#define s2expms2(in,size,out) sexpma(in, out, size[0])
+
+#define d2expmd2(in,size,out) dexpma(in, out, size[0])
+
+#define c2expmc2(in,size,out) cexpma(in, out, size[0])
+
+#define z2expmz2(in,size,out) zexpma(in, out, size[0])
+
+#endif /* !__INT_EXPM_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_eye.h b/2.3-1/src/c/matrixOperations/interfaces/int_eye.h
new file mode 100644
index 00000000..1e10eb83
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_eye.h
@@ -0,0 +1,88 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_EYE_H__
+#define __INT_EYE_H__
+
+
+#define eyes0() 1.0f
+
+#define eyed0() 1
+
+#define eyeu80() (uint8)1
+
+#define eyei80() (int8)1
+
+#define eyeu160() (uint16)1
+
+#define eyei160() (int16)1
+
+#define s0eyes0(in) seyes(in)
+
+#define d0eyed0(in) deyes(in)
+
+#define c0eyec0(in) ceyes(in)
+
+#define z0eyez0(in) zeyes(in)
+
+#define u80eyeu80(in) u8eyes(in)
+
+#define i80eyei80(in) i8eyes(in)
+
+#define u160eyeu160(in) u16eyes(in)
+
+#define i160eyei160(in) i16eyes(in)
+
+#define s0s0eyes0(in1,in2) 1.0f
+
+#define d0d0eyed0(in,in2) 1
+
+#define u80u80eyeu80(in1,in2) (uint8)1
+
+#define i80i80eyei80(in1,in2) (int8)1
+
+#define u160u160eyeu160(in1,in2) (uint16)1
+
+#define i160i160eyei160(in1,in2) (int16)1
+
+#define s0s0eyes2(in1,in2,out) seyea(out, in1, in2)
+
+#define d0d0eyed2(in1,in2,out) deyea(out, in1, in2)
+
+#define u80u80eyeu82(in1,in2,out) u8eyea(out, in1, in2)
+
+#define i80i80eyei82(in1,in2,out) i8eyea(out, in1, in2)
+
+#define u160u160eyeu162(in1,in2,out) u16eyea(out, in1, in2)
+
+#define i160i160eyei162(in1,in2,out) i16eyea(out, in1, in2)
+
+#define s2eyes2(in,size,out) seyea(out, size[0], size[1])
+
+#define d2eyed2(in,size,out) deyea(out, size[0], size[1])
+
+#define c2eyec2(in,size,out) ceyea(out, size[0], size[1])
+
+#define z2eyez2(in,size,out) zeyea(out, size[0], size[1])
+
+#define u82eyeu82(in,size,out) u8eyea(out, size[0], size[1])
+
+#define i82eyei82(in,size,out) i8eyea(out, size[0], size[1])
+
+#define u162eyeu162(in,size,out) u16eyea(out, size[0], size[1])
+
+#define i162eyei162(in,size,out) i16eyea(out, size[0], size[1])
+
+
+#endif /* !__INT_EYE_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_fill.h b/2.3-1/src/c/matrixOperations/interfaces/int_fill.h
new file mode 100644
index 00000000..5614cb1f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_fill.h
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FILL_H__
+#define __INT_FILL_H__
+
+
+#define fills0(in) in;
+
+#define filld0(in) in;
+
+#define fillc0(in) in;
+
+#define fillz0(in) in;
+
+#define s0fills0(in,out) out=in;
+
+#define d0filld0(in,out) out=in;
+
+#define c0fillc0(in,out) out=in;
+
+#define z0fillz0(in,out) out=in;
+
+#define s2s0fills2(in1,size,in2,out) sfilla(out,size[0],size[1],in2);
+
+#define d2d0filld2(in1,size,in2,out) dfilla(out,size[0],size[1],in2);
+
+#define c2c0fillc2(in1,size,in2,out) cfilla(out,size[0],size[1],in2);
+
+#define z2z0fillz2(in1,size,in2,out) zfilla(out,size[0],size[1],in2);
+
+#define s0s0s0fills2(in1,in2,in3,out) sfilla(out,in1,in2,in3)
+
+#define d0d0d0filld2(in1,in2,in3,out) sfilla(out,in1,in2,in3)
+
+#define s0s0c0fillc2(in1,in2,in3,out) sfilla(out,in1,in2,in3)
+
+#define d0d0z0fillz2(in1,in2,in3,out) sfilla(out,in1,in2,in3)
+
+#endif /* !__INT_FILL_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_flipdim.h b/2.3-1/src/c/matrixOperations/interfaces/int_flipdim.h
new file mode 100644
index 00000000..0c27181f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_flipdim.h
@@ -0,0 +1,109 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_FLIPDIM_H__
+#define __INT_FLIPDIM_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0flipdimd0(in1, in2) in1
+#define s0s0flipdims0(in1, in2) in1
+#define u80u80flipdimu80(in1, in2) in1
+#define i80i80flipdimi80(in1, in2) in1
+#define u160u160flipdimu160(in1, in2) in1
+#define i160i160flipdimi160(in1, in2) in1
+#define u80d0flipdimu80(in1, in2) in1
+#define i80d0flipdimi80(in1, in2) in1
+#define u160d0flipdimu160(in1, in2) in1
+#define i160d0flipdimi160(in1, in2) in1
+
+#define d0d0d0flipdimd0(in1, in2, in3) in1
+#define s0s0s0flipdims0(in1, in2, in3) in1
+#define u80u80u80flipdimu80(in1, in2, in3) in1
+#define i80i80i80flipdimi80(in1, in2, in3) in1
+#define u160u160u160flipdimu160(in1, in2, in3) in1
+#define i160i160i160flipdimi160(in1, in2, in3) in1
+#define u80d0d0flipdimu80(in1, in2, in3) in1
+#define i80d0d0flipdimi80(in1, in2, in3) in1
+#define u160d0d0flipdimu160(in1, in2, in3) in1
+#define i160d0d0flipdimi160(in1, in2, in3) in1
+
+
+#define d2d0flipdimd2(in1, size1, in2, out) dflipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define s2s0flipdims2(in1, size1, in2, out) sflipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define u82u80flipdimu82(in1, size1, in2, out) u8flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define i82i80flipdimi82(in1, size1, in2, out) i8flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define u162u160flipdimu162(in1, size1, in2, out) u16flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define i162i160flipdimi162(in1, size1, in2, out) i16flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define u82d0flipdimu82(in1, size1, in2, out) u8flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define i82d0flipdimi82(in1, size1, in2, out) i8flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define u162d0flipdimu162(in1, size1, in2, out) u16flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define i162d0flipdimi162(in1, size1, in2, out) i16flipdima (in1, size1[0], size1[1], \
+ in2, 1, out);
+
+#define d2d0d0flipdimd2(in1, size1, in2, in3, out) dflipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define s2s0s0flipdims2(in1, size1, in2, in3, out) sflipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define u82u80u80flipdimu82(in1, size1, in2, in3, out) u8flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define i82i80i80flipdimi82(in1, size1, in2, in3, out) i8flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define u162u160u160flipdimu162(in1, size1, in2, in3, out) u16flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define i162i160i160flipdimi162(in1, size1, in2, in3, out) i16flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define u82d0d0flipdimu82(in1, size1, in2, in3, out) u8flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define i82d0d0flipdimi82(in1, size1, in2, in3, out) i8flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define u162d0d0flipdimu162(in1, size1, in2, in3, out) u16flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+#define i162d0d0flipdimi162(in1, size1, in2, in3, out) i16flipdima(in1, size1[0], size1[1], \
+ in2, in3, out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_FLIPDIM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_invert.h b/2.3-1/src/c/matrixOperations/interfaces/int_invert.h
new file mode 100644
index 00000000..285a0f4a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_invert.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_INV_H__
+#define __INT_INV_H__
+
+#define s0invs0(in) 1.0f/in
+
+#define d0invd0(in) 1.0/in
+
+#define c0invc0(in) crdivs(FloatComplex(1,0),in)
+
+#define z0invz0(in) zrdivs(DoubleComplex(1,0),in)
+
+#define u80invs0(in) 1.0f/(float)in
+
+#define i80invs0(in) 1.0f/(float)in
+
+#define u160invs0(in) 1.0f/(float)in
+
+#define i160invs0(in) 1.0f/(float)in
+
+#define s2invs2(in,size,out) sinverma(in, out, size[0])
+
+#define d2invd2(in,size,out) dinverma(in, out, size[0])
+
+#define c2invc2(in,size,out) cinverma(in, out, size[0])
+
+#define z2invz2(in,size,out) zinverma(in, out, size[0])
+
+#define u82invs2(in,size,out) u8inverma(in, out, size[0])
+
+#define i82invs2(in,size,out) i8inverma(in, out, size[0])
+
+#define u162invs2(in,size,out) u16inverma(in, out, size[0])
+
+#define i162invs2(in,size,out) i16inverma(in, out, size[0])
+
+#endif /* !__INT_INV_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_kron.h b/2.3-1/src/c/matrixOperations/interfaces/int_kron.h
new file mode 100644
index 00000000..a6fbaab1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_kron.h
@@ -0,0 +1,43 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_KRON_H__
+#define __INT_KRON_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0krond0(in1, in2) in1*in2
+#define s0s0krons0(in1, in2) in1*in2
+
+#define d0d2krond2(in1, in2, size2, out) {int i; \
+ for(i=0;i < size2[0]*size2[1];i++) out[i] = in2[i]*in1;}
+#define s0s2krons2(in1, in2, size2, out) {int i; \
+ for(i=0;i < size2[0]*size2[1];i++) out[i] = in2[i]*in1;}
+
+#define d2d0krond2(in1, size1, in2, out) {int i; \
+ for(i=0;i < size1[0]*size1[1];i++) out[i] = in1[i]*in2;}
+#define s2s0krons2(in1, in2, size2, out) {int i; \
+ for(i=0;i < size2[0]*size2[1];i++) out[i] = in2[i]*in1;}
+
+#define d2d2krond2(in1, size1, in2, size2, out) dkrona(in1, size1[0], size1[1], \
+ in2, size2[0], size2[1], out);
+#define s2s2krons2(in1, size1, in2, size2, out) skrona(in1, size1[0], size1[1], \
+ in2, size2[0], size2[1], out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_KRON_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_norm.h b/2.3-1/src/c/matrixOperations/interfaces/int_norm.h
new file mode 100644
index 00000000..a42a6754
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_norm.h
@@ -0,0 +1,53 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_NORM_H__
+#define __INT_NORM_H__
+
+#include "statMax.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0normd0(in) in
+#define s0norms0(in) in
+
+#define d2normd0(in,size,out) ((size[0] == 1) || (size[1]==1))? \
+ dnormv(in, size[0]*size[1], 2): \
+ dnorma(in, size[0], size[1], 2)
+
+#define s2norms0(in,size,out) ((size[0] == 1) || (size[1]==1))? \
+ snormv(in, size[0]*size[1], 2): \
+ snorma(in, size[0], size[1], 2)
+
+#define d2d0normd0(in,size,norm) ((size[0] == 1) || (size[1]==1))? \
+ dnormv(in,size[0]*size[1],norm) : \
+ dnorma(in,size[0],size[1],norm)
+
+#define s2s0norms0(in,size,norm) ((size[0] == 1) || (size[1]==1))? \
+ snormv(in,size[0]*size[1],norm) : \
+ snorma(in,size[0],size[1],norm)
+
+#define d2g2normd0(in,size,norm,normsize) ((size[0] == 1) || (size[1]==1))? \
+ (norm[0]=='i') ? dmaxa(in,size[0]*size[1]) : dnormv(in,size[0]*size[1],2) : \
+ (norm[0]=='i') ? dnorma(in,size[0],size[1],3) : dnorma(in,size[0],size[1],4)
+
+#define s2g2norms0(in,size,norm,normsize) ((size[0] == 1) || (size[1]==1))? \
+ (norm[0]=='i') ? smaxa(in,size[0]*size[1]) : snormv(in,size[0]*size[1],2) : \
+ (norm[0]=='i') ? snorma(in,size[0],size[1],3) : snorma(in,size[0],size[1],4)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_NORM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_ones.h b/2.3-1/src/c/matrixOperations/interfaces/int_ones.h
new file mode 100644
index 00000000..e266ee52
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_ones.h
@@ -0,0 +1,87 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ONES_H__
+#define __INT_ONES_H__
+
+
+#define oness0() 1.0f
+
+#define onesd0() 1
+
+#define onesu80() (uint8)1
+
+#define onesi80() (int8)1
+
+#define onesu160() (uint16)1
+
+#define onesi160() (int16)1
+
+#define s0oness0(in) soness(in)
+
+#define d0onesd0(in) doness(in)
+
+#define c0onesc0(in) coness(in)
+
+#define z0onesz0(in) zoness(in)
+
+#define u80onesu80(in) u8oness(in)
+
+#define i80onesi80(in) i8oness(in)
+
+#define u160onesu160(in) u16oness(in)
+
+#define i160onesi160(in) i16oness(in)
+
+#define s0s0oness0(in1,in2) 1.0f
+
+#define d0d0onesd0(in,in2) 1
+
+#define u80u80onesu80(in1,in2) (uint8)1
+
+#define i80i80onesi80(in1,in2) (int8)1
+
+#define u160u160onesu160(in1,in2) (uint16)1
+
+#define i160i160onesi160(in1,in2) (int16)1
+
+#define s0s0oness2(in1,in2,out) sonesa(out, in1, in2)
+
+#define d0d0onesd2(in1,in2,out) donesa(out, in1, in2)
+
+#define u80u80onesu82(in1,in2,out) u8onesa(out, in1, in2)
+
+#define i80i80onesi82(in1,in2,out) i8onesa(out, in1, in2)
+
+#define u160u160onesu162(in1,in2,out) u16onesa(out, in1, in2)
+
+#define i160i160onesi162(in1,in2,out) i16onesa(out, in1, in2)
+
+#define s2oness2(in,size,out) sonesa(out, size[0], size[1])
+
+#define d2onesd2(in,size,out) donesa(out, size[0], size[1])
+
+#define c2onesc2(in,size,out) conesa(out, size[0], size[1])
+
+#define z2onesz2(in,size,out) zonesa(out, size[0], size[1])
+
+#define u82onesu82(in,size,out) u8onesa(out, size[0], size[1])
+
+#define i82onesi82(in,size,out) i8onesa(out, size[0], size[1])
+
+#define u162onesu162(in,size,out) u16onesa(out, size[0], size[1])
+
+#define i162onesi162(in,size,out) i16onesa(out, size[0], size[1])
+
+#endif /* !__INT_ONES_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_permute.h b/2.3-1/src/c/matrixOperations/interfaces/int_permute.h
new file mode 100644
index 00000000..66049aca
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_permute.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_PERMUTE_H__
+#define __INT_PERMUTE_H__
+
+
+#ifdef __cplusplus
+#extern "C" {
+#endif
+
+#define d2d2permuted2(in1, size1, in2, size2, out) (if(in2[0]==1)?in1: \
+ dtransposea(in1, size1[0],size1[1],out))
+
+#ifdef __cplusplus
+#} /* extern "C" */
+#endif
+
+#endif /*__INT_FLIPDIM_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_spec.h b/2.3-1/src/c/matrixOperations/interfaces/int_spec.h
new file mode 100644
index 00000000..77ab55e7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_spec.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_SPEC_H__
+#define __INT_SPEC_H__
+
+/* Only eigenvalues */
+
+#define s0specc0(in) FloatComplex (sspecs(in) , 0)
+
+#define d0specz0(in) DoubleComplex ( dspecs(in) , 0)
+
+#define c0specc0(in) cspecs(in)
+
+#define z0specz0(in) zspecs(in)
+
+#define s2specc2(in,size,out) {float* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(float)));\
+ szerosa(ZEROS,size[0],size[0]);\
+ cspeca(FloatComplexMatrix(in,ZEROS,size[0]*size[0]), size[0], out);\
+ }
+
+#define d2specz2(in,size,out) {double* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(double)));\
+ dzerosa(ZEROS,size[0],size[0]);\
+ zspeca(DoubleComplexMatrix(in,ZEROS,size[0]*size[0]), size[0] , out);\
+ }
+
+#define c2specc2(in,size,out) cspeca(in, size[0], out)
+
+#define z2specz2(in,size,out) zspeca(in, size[0], out)
+
+/* Eigenvalues and eigenvectors */
+
+#define s0specc0c0(in,out) cspec2s(FloatComplex( in,0) ,out)
+
+#define d0specz0z0(in,out) zspec2s(DoubleComplex(in,0) ,out)
+
+#define c0specc0c0(in,out) cspec2s(in,out)
+
+#define z0specz0z0(in,out) zspec2s(in,out)
+
+#define s2specc2c2(in,size,out1,out2) {float* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(float)));\
+ szerosa(ZEROS,size[0],size[0]);\
+ cspec2a(FloatComplexMatrix(in,ZEROS,size[0]*size[0]), size[0] , out1 , out2 );\
+ }
+
+#define d2specz2z2(in,size,out1,out2) {double* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[0]*sizeof(double)));\
+ dzerosa(ZEROS,size[0],size[0]);\
+ zspec2a(DoubleComplexMatrix(in,ZEROS,size[0]*size[0]), size[0] , out1 , out2 );\
+ }
+
+
+#define c2specc2c2(in,size,out1,out2) cspec2a(in, size[0], out2, out1)
+
+#define z2specz2z2(in,size,out1,out2) zspec2a(in, size[0], out2, out1)
+
+#endif /* !__INT_SPEC_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_trace.h b/2.3-1/src/c/matrixOperations/interfaces/int_trace.h
new file mode 100644
index 00000000..58c42991
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_trace.h
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_TRACE_H__
+#define __INT_TRACE_H__
+
+#define s0traces0(in) in
+
+#define d0traced0(in) in
+
+#define c0tracec0(in) in
+
+#define u80traceu80(in) (uint8)in
+
+#define u160traceu160(in) (uint16)in
+
+#define i80tracei80(in) (int8)in
+
+#define i160tracei160(in) (int16)in
+
+#define s2traces0(in,size) stracea(in, size[0])
+
+#define d2traced0(in,size) dtracea(in, size[0])
+
+#define c2tracec0(in,size) ctracea(in, size[0])
+
+#define z2tracez0(in,size) ztracea(in, size[0])
+
+#define u82traceu80(in,size) u8tracea(in, size[0])
+
+#define u162traceu160(in,size) u16tracea(in, size[0])
+
+#define i82tracei80(in,size) i8tracea(in, size[0])
+
+#define i162tracei160(in,size) i16trace(in,size[0])
+
+#endif /* !__INT_TRACE_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_transpose.h b/2.3-1/src/c/matrixOperations/interfaces/int_transpose.h
new file mode 100644
index 00000000..3fd328f6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_transpose.h
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_TRANSPOSE_H__
+#define __INT_TRANSPOSE_H__
+
+#define s0transposes0(in) in
+
+#define d0transposed0(in) in
+
+#define c0transposec0(in) in
+
+#define z0transposez0(in) in
+
+#define u80transposeu80(in) (uint8)in
+
+#define u160transposeu160(in) (uint16)in
+
+#define i80transposei80(in) (int8)in
+
+#define i160transposei160(in) (int16)in
+
+#define s2transposes2(in,size,out) stransposea(in, size[0], size[1], out)
+
+#define d2transposed2(in,size,out) dtransposea(in, size[0], size[1], out)
+
+#define c2transposec2(in,size,out) ctransposea(in, size[0], size[1], out)
+
+#define z2transposez2(in,size,out) ztransposea(in, size[0], size[1], out)
+
+
+#define u82transposeu82(in,size,out) u8transposea(in, size[0], size[1], out)
+
+#define u162transposeu162(in,size,out) u16transposea(in, size[0], size[1], out)
+
+#define i82transposei82(in,size,out) i8transposea(in, size[0], size[1], out)
+
+#define i162transposei162(in,size,out) i16transposea(in, size[0], size[1], out)
+
+#endif /* !__INT_TRANSPOSE_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_tril.h b/2.3-1/src/c/matrixOperations/interfaces/int_tril.h
new file mode 100644
index 00000000..6d694519
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_tril.h
@@ -0,0 +1,62 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_TRIL_H__
+#define __INT_TRIL_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0trild0(in) in
+#define s0trils0(in) in
+#define u80trilu80(in) in
+#define u160trilu160(in) in
+#define i80trili80(in) in
+#define i160trili160(in) in
+
+#define d0d0trild0(in1, in2) (in2 == 0 ? in1 : 0)
+#define s0s0trils0(in1, in2) (in2 == 0 ? in1 : 0)
+#define u80u80trilu80(in1, in2) (in2 == 0 ? in1 : 0)
+#define i80i80trili80(in1, in2) (in2 == 0 ? in1 : 0)
+#define u160u160trilu160(in1, in2) (in2 == 0 ? in1 : 0)
+#define i160i160trili160(in1, in2) (in2 == 0 ? in1 : 0)
+#define u80d0trilu80(in1, in2) (in2 == 0 ? in1 : 0)
+#define i80d0trili80(in1, in2) (in2 == 0 ? in1 : 0)
+#define u160d0trilu160(in1, in2) (in2 == 0 ? in1 : 0)
+#define i160d0trili160(in1, in2) (in2 == 0 ? in1 : 0)
+
+#define d2trild2(in, size, out) dtrila(in, size[0], size[1], 0, out);
+#define s2trils2(in, size, out) strila(in, size[0], size[1], 0, out);
+#define u82trilu82(in, size, out) u8trila(in, size[0], size[1], 0, out);
+#define u162trilu162(in, size, out) u16trila(in, size[0], size[1], 0, out);
+#define i82trili82(in, size, out) i8trila(in, size[0], size[1], 0, out);
+#define i162trili162(in, size, out) i16trila(in, size[0], size[1], 0, out);
+
+#define d2d0trild2(in1, size1, in2, out) dtrila(in1, size1[0], size1[1], in2, out);
+#define s2s0trils2(in1, size1, in2, out) strila(in1, size1[0], size1[1], in2, out);
+#define u82u80trilu82(in1, size1, in2, out) u8trila(in1, size1[0], size1[1], (double)in2, out);
+#define i82i80trili82(in1, size1, in2, out) i8trila(in1, size1[0], size1[1], (double)in2, out);
+#define u162u160trilu162(in1, size1, in2, out) u16trila(in1, size1[0], size1[1], (double)in2, out);
+#define i162i160trili162(in1, size1, in2, out) i16trila(in1, size1[0], size1[1], (double)in2, out);
+#define u82d0trilu82(in1, size1, in2, out) u8trila(in1, size1[0], size1[1], in2, out);
+#define i82d0trili82(in1, size1, in2, out) i8trila(in1, size1[0], size1[1], in2, out);
+#define u162d0trilu162(in1, size1, in2, out) u16trila(in1, size1[0], size1[1], in2, out);
+#define i162d0trili162(in1, size1, in2, out) i16trila(in1, size1[0], size1[1], in2, out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_TRIL_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_triu.h b/2.3-1/src/c/matrixOperations/interfaces/int_triu.h
new file mode 100644
index 00000000..1aef3115
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_triu.h
@@ -0,0 +1,62 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_TRIU_H__
+#define __INT_TRIU_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0triud0(in) in
+#define s0trius0(in) in
+#define u80triuu80(in) in
+#define u160triuu160(in) in
+#define i80triui80(in) in
+#define i160triui160(in) in
+
+#define d0d0triud0(in1, in2) (in2 == 0 ? in1 : 0)
+#define s0s0trius0(in1, in2) (in2 == 0 ? in1 : 0)
+#define u80u80triuu80(in1, in2) (in2 == 0 ? in1 : 0)
+#define i80i80triui80(in1, in2) (in2 == 0 ? in1 : 0)
+#define u160u160triuu160(in1, in2) (in2 == 0 ? in1 : 0)
+#define i160i160triui160(in1, in2) (in2 == 0 ? in1 : 0)
+#define u80d0triuu80(in1, in2) (in2 == 0 ? in1 : 0)
+#define i80d0triui80(in1, in2) (in2 == 0 ? in1 : 0)
+#define u160d0triuu160(in1, in2) (in2 == 0 ? in1 : 0)
+#define i160d0triui160(in1, in2) (in2 == 0 ? in1 : 0)
+
+#define d2triud2(in, size, out) dtriua(in, size[0], size[1], 0, out);
+#define s2trius2(in, size, out) striua(in, size[0], size[1], 0, out);
+#define u82triuu82(in, size, out) u8triua(in, size[0], size[1], 0, out);
+#define u162triuu162(in, size, out) u16triua(in, size[0], size[1], 0, out);
+#define i82triui82(in, size, out) i8triua(in, size[0], size[1], 0, out);
+#define i162triui162(in, size, out) i16triua(in, size[0], size[1], 0, out);
+
+#define d2d0triud2(in1, size1, in2, out) dtriua(in1, size1[0], size1[1], in2, out);
+#define s2s0trius2(in1, size1, in2, out) striua(in1, size1[0], size1[1], in2, out);
+#define u82u80triuu82(in1, size1, in2, out) u8triua(in1, size1[0], size1[1], (double)in2, out);
+#define i82i80triui82(in1, size1, in2, out) i8triua(in1, size1[0], size1[1], (double)in2, out);
+#define u162u160triuu162(in1, size1, in2, out) u16triua(in1, size1[0], size1[1], (double)in2, out);
+#define i162i160triui162(in1, size1, in2, out) i16triua(in1, size1[0], size1[1], (double)in2, out);
+#define u82d0triuu82(in1, size1, in2, out) u8triua(in1, size1[0], size1[1], in2, out);
+#define i82d0triui82(in1, size1, in2, out) i8triua(in1, size1[0], size1[1], in2, out);
+#define u162d0triuu162(in1, size1, in2, out) u16triua(in1, size1[0], size1[1], in2, out);
+#define i162d0triui162(in1, size1, in2, out) i16triua(in1, size1[0], size1[1], in2, out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_TRIU_H__*/
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_v2magn.h b/2.3-1/src/c/matrixOperations/interfaces/int_v2magn.h
new file mode 100644
index 00000000..759cecf1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_v2magn.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_V2MAGN_H__
+#define __INT_V2MAGN_H__
+
+#define s0v2magns0(in) ssquMagns(in)
+
+#define d0v2magnd0(in) dsquMagns(in)
+
+#define c0v2magnc0(in) csquMagns(in)
+
+#define z0v2magnz0(in) zsquMagns(in)
+
+#define s2v2magns2(in,size) ssquMagna(in, size[0], size[1])
+
+#define d2v2magnd2(in,size) dsquMagna(in, size[0], size[1])
+
+#define c2v2magnc2(in,size) csquMagna(in, size[0], size[1])
+
+#define z2v2magnz2(in,size) zsquMagna(in, size[0], size[1])
+
+#endif /* !__INT_V2MAGN_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_vmagn.h b/2.3-1/src/c/matrixOperations/interfaces/int_vmagn.h
new file mode 100644
index 00000000..a8647aa2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_vmagn.h
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_VMAGN_H__
+#define __INT_VMAGN_H__
+
+
+#define s0vmagns0(in) smagns(in)
+
+#define d0vmagnd0(in) dmagns(in)
+
+#define c0vmagnc0(in) cmagns(in)
+
+#define z0vmagnz0(in) zmagns(in)
+
+#define u80vmagnu80(in) u8magns(in)
+
+#define u160vmagnu160(in) u16magns(in)
+
+#define i80vmagni80(in) i8magns(in)
+
+#define i160vmagni160(in) i16magns(in)
+
+#define s2vmagns2(in,size) smagna(in, size[0], size[1])
+
+#define d2vmagnd2(in,size) dmagna(in, size[0], size[1])
+
+#define c2vmagnc2(in,size) cmagna(in, size[0], size[1])
+
+#define z2vmagnz2(in,size) zmagna(in, size[0], size[1])
+
+#define u82vmagnu82(in,size) u8magna(in, size[0], size[1])
+
+#define u162vmagnu162(in,size) u16magna(in, size[0], size[1])
+
+#define i82vmagni82(in,size) i8magna(in, size[0], size[1])
+
+#define i162vmagni162(in,size) i16magna(in, size[0], size[1])
+
+#endif /* !__INT_VMAGN_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/int_zeros.h b/2.3-1/src/c/matrixOperations/interfaces/int_zeros.h
new file mode 100644
index 00000000..ac7e020e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/int_zeros.h
@@ -0,0 +1,89 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_ZEROS_H__
+#define __INT_ZEROS_H__
+
+
+#define zeross0() 0.0f
+
+#define zerosd0() 0
+
+#define zerosu80() (uint8)0
+
+#define zerosi80() (int8)0
+
+#define zerosu160() (uint16)0
+
+#define zerosi160() (int16)0
+
+#define s0zeross0(in) szeross(in)
+
+#define d0zerosd0(in) dzeross(in)
+
+#define c0zerosc0(in) czeross(in)
+
+#define z0zerosz0(in) zzeross(in)
+
+#define u80zerosu80(in) u8zeross(in)
+
+#define i80zerosi80(in) i8zeross(in)
+
+#define u160zerosu160(in) u16zeross(in)
+
+#define i160zerosi160(in) i16zeross(in)
+
+#define s0s0zeross0(in1,in2) 0.0f
+
+#define d0d0zerosd0(in1,in2) 0
+
+#define u80u80zerosu80(in1,in2) (uint8)0
+
+#define i80i80zerosi80(in1,in2) (int8)0
+
+#define u160u160zerosu160(in1,in2) (uint16)0
+
+#define i160i160zerosi160(in1,in2) (int16)0
+
+#define s0s0zeross2(in1,in2,out) szerosa(out, in1, in2)
+
+#define d0d0zerosd2(in1,in2,out) dzerosa(out, in1, in2)
+
+#define u80u80zerosu82(in1,in2,out) u8zerosa(out, in1, in2)
+
+#define i80i80zerosi82(in1,in2,out) i8zerosa(out, in1, in2)
+
+#define u160u160zerosu162(in1,in2,out) u16zerosa(out, in1, in2)
+
+#define i160i160zerosi162(in1,in2,out) i16zerosa(out, in1, in2)
+
+#define s2zeross2(in,size,out) szerosa(out, size[0], size[1])
+
+#define d2zerosd2(in,size,out) dzerosa(out, size[0], size[1])
+
+#define c2zerosc2(in,size,out) czerosa(out, size[0], size[1])
+
+#define z2zerosz2(in,size,out) zzerosa(out, size[0], size[1])
+
+#define u82zerosu82(in,size,out) u8zerosa(out, size[0], size[1])
+
+#define i82zerosi82(in,size,out) i8zerosa(out, size[0], size[1])
+
+#define u162zerosu162(in,size,out) u16zerosa(out, size[0], size[1])
+
+#define i162zerosi162(in,size,out) i16zerosa(out, size[0], size[1])
+
+#define d0d0d0zerosd3(in1, in2, in3, out) dzerosh(out, in1, in2, in3);
+#endif /* !__INT_ZEROS_H__ */
diff --git a/2.3-1/src/c/matrixOperations/interfaces/interface.sh b/2.3-1/src/c/matrixOperations/interfaces/interface.sh
new file mode 100644
index 00000000..8c7f073b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/interfaces/interface.sh
@@ -0,0 +1,6 @@
+for i in $@; do
+
+./generateInterfaces.pl --function-name $i --header-file int_$i.h
+
+done
+
diff --git a/2.3-1/src/c/matrixOperations/inversion/Makefile.am b/2.3-1/src/c/matrixOperations/inversion/Makefile.am
new file mode 100644
index 00000000..aa5890e3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/Makefile.am
@@ -0,0 +1,56 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixInversion_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixInversion.la
+
+HEAD = ../includes/matrixInversion.h
+
+libMatrixInversion_la_SOURCES = $(HEAD) \
+ sinverma.c \
+ dinverma.c \
+ cinverma.c \
+ zinverma.c
+
+check_PROGRAMS = testMatrixInversion
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libMatrixInversion.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testMatrixInversion_SOURCES = testMatrixInversion.c
+testMatrixInversion_LDADD = $(check_LDADD)
+testMatrixInversion_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixInversion
diff --git a/2.3-1/src/c/matrixOperations/inversion/Makefile.in b/2.3-1/src/c/matrixOperations/inversion/Makefile.in
new file mode 100644
index 00000000..5ce88abc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/Makefile.in
@@ -0,0 +1,731 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixInversion$(EXEEXT)
+TESTS = testMatrixInversion$(EXEEXT)
+subdir = src/c/matrixOperations/inversion
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixInversion_la_LIBADD =
+am__objects_1 =
+am_libMatrixInversion_la_OBJECTS = $(am__objects_1) \
+ libMatrixInversion_la-sinverma.lo \
+ libMatrixInversion_la-dinverma.lo \
+ libMatrixInversion_la-cinverma.lo \
+ libMatrixInversion_la-zinverma.lo
+libMatrixInversion_la_OBJECTS = $(am_libMatrixInversion_la_OBJECTS)
+libMatrixInversion_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixInversion_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testMatrixInversion_OBJECTS = \
+ testMatrixInversion-testMatrixInversion.$(OBJEXT)
+testMatrixInversion_OBJECTS = $(am_testMatrixInversion_OBJECTS)
+testMatrixInversion_DEPENDENCIES = $(check_LDADD)
+testMatrixInversion_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMatrixInversion_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixInversion_la_SOURCES) \
+ $(testMatrixInversion_SOURCES)
+DIST_SOURCES = $(libMatrixInversion_la_SOURCES) \
+ $(testMatrixInversion_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixInversion_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixInversion.la
+HEAD = ../includes/matrixInversion.h
+libMatrixInversion_la_SOURCES = $(HEAD) \
+ sinverma.c \
+ dinverma.c \
+ cinverma.c \
+ zinverma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libMatrixInversion.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testMatrixInversion_SOURCES = testMatrixInversion.c
+testMatrixInversion_LDADD = $(check_LDADD)
+testMatrixInversion_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/inversion/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/inversion/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixInversion.la: $(libMatrixInversion_la_OBJECTS) $(libMatrixInversion_la_DEPENDENCIES)
+ $(libMatrixInversion_la_LINK) -rpath $(pkglibdir) $(libMatrixInversion_la_OBJECTS) $(libMatrixInversion_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixInversion$(EXEEXT): $(testMatrixInversion_OBJECTS) $(testMatrixInversion_DEPENDENCIES)
+ @rm -f testMatrixInversion$(EXEEXT)
+ $(testMatrixInversion_LINK) $(testMatrixInversion_OBJECTS) $(testMatrixInversion_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInversion_la-cinverma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInversion_la-dinverma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInversion_la-sinverma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixInversion_la-zinverma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixInversion-testMatrixInversion.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixInversion_la-sinverma.lo: sinverma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -MT libMatrixInversion_la-sinverma.lo -MD -MP -MF $(DEPDIR)/libMatrixInversion_la-sinverma.Tpo -c -o libMatrixInversion_la-sinverma.lo `test -f 'sinverma.c' || echo '$(srcdir)/'`sinverma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInversion_la-sinverma.Tpo $(DEPDIR)/libMatrixInversion_la-sinverma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sinverma.c' object='libMatrixInversion_la-sinverma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -c -o libMatrixInversion_la-sinverma.lo `test -f 'sinverma.c' || echo '$(srcdir)/'`sinverma.c
+
+libMatrixInversion_la-dinverma.lo: dinverma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -MT libMatrixInversion_la-dinverma.lo -MD -MP -MF $(DEPDIR)/libMatrixInversion_la-dinverma.Tpo -c -o libMatrixInversion_la-dinverma.lo `test -f 'dinverma.c' || echo '$(srcdir)/'`dinverma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInversion_la-dinverma.Tpo $(DEPDIR)/libMatrixInversion_la-dinverma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dinverma.c' object='libMatrixInversion_la-dinverma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -c -o libMatrixInversion_la-dinverma.lo `test -f 'dinverma.c' || echo '$(srcdir)/'`dinverma.c
+
+libMatrixInversion_la-cinverma.lo: cinverma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -MT libMatrixInversion_la-cinverma.lo -MD -MP -MF $(DEPDIR)/libMatrixInversion_la-cinverma.Tpo -c -o libMatrixInversion_la-cinverma.lo `test -f 'cinverma.c' || echo '$(srcdir)/'`cinverma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInversion_la-cinverma.Tpo $(DEPDIR)/libMatrixInversion_la-cinverma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cinverma.c' object='libMatrixInversion_la-cinverma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -c -o libMatrixInversion_la-cinverma.lo `test -f 'cinverma.c' || echo '$(srcdir)/'`cinverma.c
+
+libMatrixInversion_la-zinverma.lo: zinverma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -MT libMatrixInversion_la-zinverma.lo -MD -MP -MF $(DEPDIR)/libMatrixInversion_la-zinverma.Tpo -c -o libMatrixInversion_la-zinverma.lo `test -f 'zinverma.c' || echo '$(srcdir)/'`zinverma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixInversion_la-zinverma.Tpo $(DEPDIR)/libMatrixInversion_la-zinverma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zinverma.c' object='libMatrixInversion_la-zinverma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixInversion_la_CFLAGS) $(CFLAGS) -c -o libMatrixInversion_la-zinverma.lo `test -f 'zinverma.c' || echo '$(srcdir)/'`zinverma.c
+
+testMatrixInversion-testMatrixInversion.o: testMatrixInversion.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInversion_CFLAGS) $(CFLAGS) -MT testMatrixInversion-testMatrixInversion.o -MD -MP -MF $(DEPDIR)/testMatrixInversion-testMatrixInversion.Tpo -c -o testMatrixInversion-testMatrixInversion.o `test -f 'testMatrixInversion.c' || echo '$(srcdir)/'`testMatrixInversion.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixInversion-testMatrixInversion.Tpo $(DEPDIR)/testMatrixInversion-testMatrixInversion.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixInversion.c' object='testMatrixInversion-testMatrixInversion.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInversion_CFLAGS) $(CFLAGS) -c -o testMatrixInversion-testMatrixInversion.o `test -f 'testMatrixInversion.c' || echo '$(srcdir)/'`testMatrixInversion.c
+
+testMatrixInversion-testMatrixInversion.obj: testMatrixInversion.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInversion_CFLAGS) $(CFLAGS) -MT testMatrixInversion-testMatrixInversion.obj -MD -MP -MF $(DEPDIR)/testMatrixInversion-testMatrixInversion.Tpo -c -o testMatrixInversion-testMatrixInversion.obj `if test -f 'testMatrixInversion.c'; then $(CYGPATH_W) 'testMatrixInversion.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixInversion.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixInversion-testMatrixInversion.Tpo $(DEPDIR)/testMatrixInversion-testMatrixInversion.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixInversion.c' object='testMatrixInversion-testMatrixInversion.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixInversion_CFLAGS) $(CFLAGS) -c -o testMatrixInversion-testMatrixInversion.obj `if test -f 'testMatrixInversion.c'; then $(CYGPATH_W) 'testMatrixInversion.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixInversion.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/inversion/cinverma.c b/2.3-1/src/c/matrixOperations/inversion/cinverma.c
new file mode 100644
index 00000000..069fb399
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/cinverma.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void cinverma ( floatComplex* in, floatComplex* out, int leadDimIn )
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need doubleComplex matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ doubleComplex *dblin = NULL;
+ doubleComplex *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(leadDimIn * leadDimIn));
+ dblout = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(leadDimIn * leadDimIn));
+
+
+
+ /*copy and cast all the floatComplex value into doubleComplex value */
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i ++ )
+ {
+ dblin[i] = DoubleComplex ( (double) creals( in[i]) , (double) cimags ( in[i])) ;
+ }
+
+ zinverma ( dblin, dblout, leadDimIn );
+
+
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i++ )
+ {
+ out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/inversion/dinverma.c b/2.3-1/src/c/matrixOperations/inversion/dinverma.c
new file mode 100644
index 00000000..91130f36
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/dinverma.c
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void dinverma ( double* in, double* out, int leadDimIn )
+{
+ int info = 0 ;
+ int* vectPivot = (int*) malloc ( sizeof(int) * (unsigned int)( leadDimIn*leadDimIn) );
+ double* work = (double*) malloc ( sizeof(double) * (unsigned int) (leadDimIn*leadDimIn) );
+
+ int i = 0 ;
+
+ for ( i = 0 ; i < leadDimIn*leadDimIn ; i ++)
+ {
+ out[i] = in[i] ;
+ }
+
+ dgetrf_ ( &leadDimIn, &leadDimIn, out, &leadDimIn, vectPivot, &info );
+ dgetri_ ( &leadDimIn, out, &leadDimIn , vectPivot, work , &leadDimIn , &info );
+
+ free(vectPivot);
+ free(work);
+
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/inversion/i16inverma.c b/2.3-1/src/c/matrixOperations/inversion/i16inverma.c
new file mode 100644
index 00000000..0dd18509
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/i16inverma.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void i16inverma ( int16* in, float* out, int leadDimIn )
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i ++ )
+ {
+ dblin[i] = (double) in[i] ;
+ }
+
+ dinverma ( dblin, dblout, leadDimIn );
+
+
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i++ )
+ {
+ out[i] =(float) dblout[i] ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/inversion/i8inverma.c b/2.3-1/src/c/matrixOperations/inversion/i8inverma.c
new file mode 100644
index 00000000..66c66e2f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/i8inverma.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void i8inverma ( int8* in, float* out, int leadDimIn )
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i ++ )
+ {
+ dblin[i] = (double) in[i] ;
+ }
+
+ dinverma ( dblin, dblout, leadDimIn );
+
+
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i++ )
+ {
+ out[i] =(float) dblout[i] ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/inversion/sinverma.c b/2.3-1/src/c/matrixOperations/inversion/sinverma.c
new file mode 100644
index 00000000..f02a0e8b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/sinverma.c
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void sinverma ( float* in, float* out, int leadDimIn )
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i ++ )
+ {
+ dblin[i] = (double) in[i] ;
+ }
+
+ dinverma ( dblin, dblout, leadDimIn );
+
+
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i++ )
+ {
+ out[i] =(float) dblout[i] ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/inversion/testMatrixInversion.c b/2.3-1/src/c/matrixOperations/inversion/testMatrixInversion.c
new file mode 100644
index 00000000..2a0e0058
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/testMatrixInversion.c
@@ -0,0 +1,581 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixInversion.h"
+#include <math.h>
+#include <stdio.h>
+#include <assert.h>
+
+#define LEADDIM 10
+
+#define SMATRIX_IN {0.56672112690284848f,0.57116389367729425f,0.81601104838773608f,0.05689279362559319f,\
+ 0.55959366867318749f,0.12493403162807226f,0.72792222863063216f,0.26777664758265018f,\
+ 0.54653349192813039f,0.98854076582938433f,\
+0.73956565884873271f,0.00371731072664261f,0.59005728596821427f,0.3096467358991504f,\
+ 0.25522057106718421f,0.62518793903291225f,0.11574173765257001f,0.61170040909200907f,\
+ 0.67839562846347690f,0.33200952783226967f,\
+0.02587099233642220f,0.51744682248681784f,0.39168732380494475f,0.24135384149849415f,\
+ 0.50644348980858922f,0.42361020017415285f,0.28937275288626552f,0.08879321813583374f,\
+ 0.62128817522898316f,0.34549844544380903f,\
+0.70648676296696067f,0.52114724926650524f,0.28704008506610990f,0.65027950797230005f,\
+ 0.08813347620889544f,0.44987633451819420f,0.72272530803456903f,0.89767962601035833f,\
+ 0.24278218811377883f,0.43377211131155491f,\
+0.96770532103255391f,0.50685344357043505f,0.52329764096066356f,0.5596947595477104f,\
+ 0.56173070007935166f,0.46817600261420012f,0.77945467224344611f,0.79010718129575253f,\
+ 0.98085420625284314f,0.81870661024004221f,\
+0.42568723810836673f,0.24615605548024178f,0.92295324662700295f,0.10007458087056875f,\
+ 0.46782181179150939f,0.39504976756870747f,0.03661171020939946f,0.51753685344010592f,\
+ 0.83254515705630183f,0.61048321425914764f,\
+0.18711117887869477f,0.01895748358219862f,0.84335647663101554f,0.07485948316752911f,\
+ 0.85328151332214475f,0.01245901081711054f,0.18675393564626575f,0.49205840751528740f,\
+ 0.74896081397309899f,0.94149570073932409f,\
+0.21240556007251143f,0.57950199581682682f,0.26281475694850087f,0.43609866220504045f,\
+ 0.91105451015755534f,0.80826673656702042f,0.81026530498638749f,0.25904283951967955f,\
+ 0.41390872886404395f,0.35999277792870998f,\
+0.69127879338338971f,0.76568587962538004f,0.35726496530696750f,0.76933998242020607f,\
+ 0.54776339093223214f,0.09622887428849936f,0.95611717319115996f,0.22074085660278797f,\
+ 0.01432593585923314f,0.81914897728711367f,\
+0.13049928424879909f,0.96820035576820374f,0.6561381467618048f,0.24455389659851789f,\
+ 0.52831235667690635f,0.84689256362617016f,0.78766220854595304f,0.12620826158672571f,\
+ 0.78838609857484698f,0.34530424699187279f}
+
+#define SMATRIX_TEST {-0.52918209318099763f,-1.4122060840199684f,-2.81447731203224061f,-1.55267562705322471f,\
+ 1.7795249093271313f,3.41331242497436538f,-1.88904543501184552f,1.12197724430279377f,\
+ 0.72267367241531266f,-0.34793324767314804f,\
+-0.04291642356311276f,-3.42251783874691506f,0.02468613395048536f,0.08908661449574046f,\
+ 0.97788374996171823f,4.61261377725807620f,-2.59399616857143833f,1.20317500146072143f,\
+ -0.02166245003208622f,-1.3267013649317376f,\
+-2.67087412768695565f,-0.22033432555244847f,-5.29579931307827412f,-1.14315667195430248f,\
+ 0.09168583909366912f,1.5851803683202144f,1.66558750370151065f,-0.86555486622239652f,\
+ 1.8195567574793376f,3.61754347340892135f,\
+-1.89697408392725020f,1.8626200864938904f,0.79417407448685418f,-0.05121347333860876f,\
+ -0.58894433303940863f,-2.25150397211694164f,1.83391219779456915f,-1.71612581802446540f,\
+ 1.573412079629398f,1.342726670155854f,\
+-2.25362434223770558f,-3.27855988666729736f,-4.38426363396032048f,-1.74427000048068570f,\
+ 2.03129249683994884f,4.82780099711724908f,-0.73809777439724900f,2.2509436506925824f,\
+ 0.94584198058114821f,0.25243671945739055f,\
+3.84378244490602494f,3.72355620392145159f,6.53582696174593814f,1.94952916234761564f,\
+ -3.13395988068588593f,-4.02699662712894213f,-0.76253598522946087f,0.23575927310254180f,\
+ -1.8359327702678865f,-2.83401823371425543f,\
+-1.18180799907519307f,0.63788382527496235f,-3.78074265572599399f,-0.54137361290359209f,\
+ 0.70395890323932231f,-2.37398893454907611f,2.2701087812490388f,-0.86112335471809098f,\
+ 0.47829335155324559f,3.33447092282135671f,\
+-0.74596393761410851f,-2.37451784604461391f,-1.71445760029220273f,1.04267932396181950f,\
+ 0.72418115460071419f,2.59078382027510390f,-0.24977554095572621f,1.00522161428916723f,\
+ -0.63851725590828357f,-0.32538135452852734f,\
+-1.03321944290699186f,0.06105622131119152f,-0.23434658474553238f,-0.78361018751135569f,\
+ 1.52101204019895975f,-0.98475391631291920f,0.82324943504312742f,-1.09543520381998416f,\
+ -0.06310749918170644f,1.29987814669920709f,\
+6.08715177443300171f,4.38684491456130132f,10.9588676689371631f,3.07570017972914656f,\
+ -3.9362327692213568f,-6.43408376602510224f,-0.44360914322700107f,-0.86171558904483270f,\
+ -2.44206676099519093f,-4.96806164188692279f}
+
+#define DMATRIX_IN {0.56672112690284848,0.57116389367729425,0.81601104838773608,0.05689279362559319,\
+ 0.55959366867318749,0.12493403162807226,0.72792222863063216,0.26777664758265018,\
+ 0.54653349192813039,0.98854076582938433,\
+0.73956565884873271,0.00371731072664261,0.59005728596821427,0.3096467358991504,\
+ 0.25522057106718421,0.62518793903291225,0.11574173765257001,0.61170040909200907,\
+ 0.67839562846347690,0.33200952783226967,\
+0.02587099233642220,0.51744682248681784,0.39168732380494475,0.24135384149849415,\
+ 0.50644348980858922,0.42361020017415285,0.28937275288626552,0.08879321813583374,\
+ 0.62128817522898316,0.34549844544380903,\
+0.70648676296696067,0.52114724926650524,0.28704008506610990,0.65027950797230005,\
+ 0.08813347620889544,0.44987633451819420,0.72272530803456903,0.89767962601035833,\
+ 0.24278218811377883,0.43377211131155491,\
+0.96770532103255391,0.50685344357043505,0.52329764096066356,0.5596947595477104,\
+ 0.56173070007935166,0.46817600261420012,0.77945467224344611,0.79010718129575253,\
+ 0.98085420625284314,0.81870661024004221,\
+0.42568723810836673,0.24615605548024178,0.92295324662700295,0.10007458087056875,\
+ 0.46782181179150939,0.39504976756870747,0.03661171020939946,0.51753685344010592,\
+ 0.83254515705630183,0.61048321425914764,\
+0.18711117887869477,0.01895748358219862,0.84335647663101554,0.07485948316752911,\
+ 0.85328151332214475,0.01245901081711054,0.18675393564626575,0.49205840751528740,\
+ 0.74896081397309899,0.94149570073932409,\
+0.21240556007251143,0.57950199581682682,0.26281475694850087,0.43609866220504045,\
+ 0.91105451015755534,0.80826673656702042,0.81026530498638749,0.25904283951967955,\
+ 0.41390872886404395,0.35999277792870998,\
+0.69127879338338971,0.76568587962538004,0.35726496530696750,0.76933998242020607,\
+ 0.54776339093223214,0.09622887428849936,0.95611717319115996,0.22074085660278797,\
+ 0.01432593585923314,0.81914897728711367,\
+0.13049928424879909,0.96820035576820374,0.6561381467618048,0.24455389659851789,\
+ 0.52831235667690635,0.84689256362617016,0.78766220854595304,0.12620826158672571,\
+ 0.78838609857484698,0.34530424699187279}
+
+#define DMATRIX_TEST {-0.52918209318099763,-1.4122060840199684,-2.81447731203224061,-1.55267562705322471,\
+ 1.7795249093271313,3.41331242497436538,-1.88904543501184552,1.12197724430279377,\
+ 0.72267367241531266,-0.34793324767314804,\
+-0.04291642356311276,-3.42251783874691506,0.02468613395048536,0.08908661449574046,\
+ 0.97788374996171823,4.61261377725807620,-2.59399616857143833,1.20317500146072143,\
+ -0.02166245003208622,-1.3267013649317376,\
+-2.67087412768695565,-0.22033432555244847,-5.29579931307827412,-1.14315667195430248,\
+ 0.09168583909366912,1.5851803683202144,1.66558750370151065,-0.86555486622239652,\
+ 1.8195567574793376,3.61754347340892135,\
+-1.89697408392725020,1.8626200864938904,0.79417407448685418,-0.05121347333860876,\
+ -0.58894433303940863,-2.25150397211694164,1.83391219779456915,-1.71612581802446540,\
+ 1.573412079629398,1.342726670155854,\
+-2.25362434223770558,-3.27855988666729736,-4.38426363396032048,-1.74427000048068570,\
+ 2.03129249683994884,4.82780099711724908,-0.73809777439724900,2.2509436506925824,\
+ 0.94584198058114821,0.25243671945739055,\
+3.84378244490602494,3.72355620392145159,6.53582696174593814,1.94952916234761564,\
+ -3.13395988068588593,-4.02699662712894213,-0.76253598522946087,0.23575927310254180,\
+ -1.8359327702678865,-2.83401823371425543,\
+-1.18180799907519307,0.63788382527496235,-3.78074265572599399,-0.54137361290359209,\
+ 0.70395890323932231,-2.37398893454907611,2.2701087812490388,-0.86112335471809098,\
+ 0.47829335155324559,3.33447092282135671,\
+-0.74596393761410851,-2.37451784604461391,-1.71445760029220273,1.04267932396181950,\
+ 0.72418115460071419,2.59078382027510390,-0.24977554095572621,1.00522161428916723,\
+ -0.63851725590828357,-0.32538135452852734,\
+-1.03321944290699186,0.06105622131119152,-0.23434658474553238,-0.78361018751135569,\
+ 1.52101204019895975,-0.98475391631291920,0.82324943504312742,-1.09543520381998416,\
+ -0.06310749918170644,1.29987814669920709,\
+6.08715177443300171,4.38684491456130132,10.9588676689371631,3.07570017972914656,\
+ -3.9362327692213568,-6.43408376602510224,-0.44360914322700107,-0.86171558904483270,\
+ -2.44206676099519093,-4.96806164188692279}
+
+#define CRMATRIX_IN {0.56672112690284848f,0.57116389367729425f,0.81601104838773608f,0.05689279362559319f,\
+ 0.55959366867318749f,0.12493403162807226f,0.72792222863063216f,0.26777664758265018f,\
+ 0.54653349192813039f,0.98854076582938433f,\
+0.73956565884873271f,0.00371731072664261f,0.59005728596821427f,0.3096467358991504f,\
+ 0.25522057106718421f,0.62518793903291225f,0.11574173765257001f,0.61170040909200907f,\
+ 0.67839562846347690f,0.33200952783226967f,\
+0.02587099233642220f,0.51744682248681784f,0.39168732380494475f,0.24135384149849415f,\
+ 0.50644348980858922f,0.42361020017415285f,0.28937275288626552f,0.08879321813583374f,\
+ 0.62128817522898316f,0.34549844544380903f,\
+0.70648676296696067f,0.52114724926650524f,0.28704008506610990f,0.65027950797230005f,\
+ 0.08813347620889544f,0.44987633451819420f,0.72272530803456903f,0.89767962601035833f,\
+ 0.24278218811377883f,0.43377211131155491f,\
+0.96770532103255391f,0.50685344357043505f,0.52329764096066356f,0.5596947595477104f,\
+ 0.56173070007935166f,0.46817600261420012f,0.77945467224344611f,0.79010718129575253f,\
+ 0.98085420625284314f,0.81870661024004221f,\
+0.42568723810836673f,0.24615605548024178f,0.92295324662700295f,0.10007458087056875f,\
+ 0.46782181179150939f,0.39504976756870747f,0.03661171020939946f,0.51753685344010592f,\
+ 0.83254515705630183f,0.61048321425914764f,\
+0.18711117887869477f,0.01895748358219862f,0.84335647663101554f,0.07485948316752911f,\
+ 0.85328151332214475f,0.01245901081711054f,0.18675393564626575f,0.49205840751528740f,\
+ 0.74896081397309899f,0.94149570073932409f,\
+0.21240556007251143f,0.57950199581682682f,0.26281475694850087f,0.43609866220504045f,\
+ 0.91105451015755534f,0.80826673656702042f,0.81026530498638749f,0.25904283951967955f,\
+ 0.41390872886404395f,0.35999277792870998f,\
+0.69127879338338971f,0.76568587962538004f,0.35726496530696750f,0.76933998242020607f,\
+ 0.54776339093223214f,0.09622887428849936f,0.95611717319115996f,0.22074085660278797f,\
+ 0.01432593585923314f,0.81914897728711367f,\
+0.13049928424879909f,0.96820035576820374f,0.6561381467618048f,0.24455389659851789f,\
+ 0.52831235667690635f,0.84689256362617016f,0.78766220854595304f,0.12620826158672571f,\
+ 0.78838609857484698f,0.34530424699187279f}
+
+#define CIMATRIX_IN {0.26598573336377740f,0.12025266280397773f,0.90711546363309026f,0.41329363686963916f,\
+ 0.33616027468815446f,0.20337020372971892f,0.31845858739688993f,0.04173615900799632f,\
+ 0.00291663268581033f,0.92589621385559440f,\
+0.97098186518996954f,0.82874121330678463f,0.33601493109017611f,0.14022908732295036f,\
+ 0.53368766140192747f,0.30119446106255054f,0.57618944440037012f,0.34382718056440353f,\
+ 0.89934705849736929f,0.09938172809779644f,\
+0.88752476638182998f,0.31610729591920972f,0.11756130633875728f,0.49523561308160424f,\
+ 0.20390639593824744f,0.27625959040597081f,0.42549022240564227f,0.1970167332328856f,\
+ 0.83879271661862731f,0.42805786477401853f,\
+0.20667528547346592f,0.53051907662302256f,0.92537237703800201f,0.41948772873729467f,\
+ 0.15899897180497646f,0.29445307422429323f,0.97619816288352013f,0.21228986512869596f,\
+ 0.43437494523823261f,0.94318309519439936f,\
+0.85251609655097127f,0.57151748193427920f,0.72636712575331330f,0.86262222891673446f,\
+ 0.01818151073530316f,0.57180739520117640f,0.25189600000157952f,0.31403985014185309f,\
+ 0.77678761305287480f,0.03273952705785632f,\
+0.67446978110820055f,0.04780154302716255f,0.90094979386776686f,0.28575096465647221f,\
+ 0.40983706060796976f,0.21417701244354248f,0.43911290075629950f,0.78216253779828548f,\
+ 0.13953176606446505f,0.92132670804858208f,\
+0.91528743831440806f,0.82486197212710977f,0.39489932497963309f,0.25121363671496511f,\
+ 0.01058345986530185f,0.68954616272822022f,0.07593036955222487f,0.05409323470667005f,\
+ 0.11506372271105647f,0.94490244099870324f,\
+0.02848597615957260f,0.5798843121156096f,0.56551797501742840f,0.33891015965491533f,\
+ 0.19653097167611122f,0.58555728476494551f,0.25593801774084568f,0.91902069095522165f,\
+ 0.53554199635982513f,0.900706990621984f,\
+0.23678414756432176f,0.27918082987889647f,0.70614896761253476f,0.39219759730622172f,\
+ 0.27255953708663583f,0.42041230341419578f,0.06706167431548238f,0.46035157097503543f,\
+ 0.43117330456152558f,0.80943161016330123f,\
+0.70153435599058867f,0.95451109297573566f,0.67878311965614557f,0.46815521270036697f,\
+ 0.34376550372689962f,0.42775720171630383f,0.76511315722018480f,0.29926850274205208f,\
+ 0.61453847866505384f,0.02519542910158634f}
+
+#define CRMATRIX_RESULT {1.13334136062879454f,1.00204710284162091f,-0.36268445209785111f,0.44135219666801256f,\
+ -0.28889550886983612f,-0.83933700493692454f,0.02619582683916769f,-0.03686600548096228f,\
+ -0.3105979269805872f,-0.41314497983816856f,\
+-1.35807279244359291f,-0.95351719301170645f,0.24508427491574258f,-0.29038757219777517f,\
+ 0.37390577835866062f,1.1835902691419622f,-0.05725271188164360f,-0.45507733751420543f,\
+ 0.89349083196709700f,0.22599186865989143f,\
+0.04475841273073522f,0.65452526617183937f,-0.45264724847008608f,1.48730985056287901f,\
+ -0.62424039568072809f,-0.07013705727696817f,0.66279285096827567f,-0.49314454581179629f,\
+ -0.75846179749076570f,0.03847068162421585f,\
+-0.28834686632766587f,-0.12621821344664338f,0.66167042153468991f,-0.30750952923310820f,\
+ -0.38799028698820520f,-0.06244610332663336f,-0.16699468178690519f,-0.25703548004808097f,\
+ 1.05027930016160997f,0.31201179786307248f,\
+3.09851038226275932f,0.68543010150986716f,0.67201299485007393f,-1.36595464827487545f,\
+ -0.97056467795873491f,-2.43637154663396904f,-0.44698290573897426f,0.25335968244039719f,\
+ 0.52656196888052886f,0.8186504936893056f,\
+1.61532430192389009f,0.61052036715893920f,0.37049911672435160f,-0.89240571480272601f,\
+ -0.10120030002332725f,-0.89781867625900547f,-0.69692694811392220f,1.15675538992405480f,\
+ -0.60391534256305657f,-0.22021828342698485f,\
+-0.3741129583278592f,-0.04777966095669883f,-0.71234429260192467f,0.67967568250401755f,\
+ 0.25551727122371526f,-0.21501817490214456f,0.33990052672394827f,0.26217278721004078f,\
+ -0.62229775428125067f,0.12867275098729825f,\
+-1.29410590757942501f,-0.90500447621878899f,-0.02669409932542677f,-0.65737384875432148f,\
+ 1.06680350537307067f,1.0309312701659521f,-0.17448425396711695f,0.10358425160515741f,\
+ 0.48518012284543799f,-0.12380980760248197f,\
+-1.74148559631895505f,-0.80563620794306168f,0.09831541569063014f,0.29858001971458137f,\
+ 0.71315790168444038f,1.51589578494898358f,0.26752178758245609f,-0.07814488857312252f,\
+ -0.33226019516643074f,-0.25594588429781640f,\
+-0.55157638336116810f,-0.32553554473562663f,0.18945085905693287f,-0.49018398019943904f,\
+ 0.22032383413091419f,0.80929284051108974f,-0.26930477901947342f,0.01565276572275408f,\
+ 0.50897245662655299f,-0.2000796589321248f}
+
+#define CIMATRIX_RESULT {-0.72071682835421724f,-0.27956750077582515f,-0.12213482023956473f,0.66199681493358187f,\
+ 0.19294748584842841f,0.71511499705121806f,-0.07262892107788382f,0.16934235088255833f,\
+ -0.28481834522168847f,-0.4356262417043216f,\
+0.89322305892893428f,-0.47480723687179577f,0.74313808566553685f,-0.47801173363000360f,\
+ 0.13877492668810687f,-0.24397029588270253f,-0.56410605487977428f,0.13174383488792796f,\
+ -0.11275208753659083f,-0.02853860897251614f,\
+-2.35574562422712885f,-0.66252937112300103f,0.41163350762074485f,0.21189678704881354f,\
+ 0.57210153384651341f,1.59871861336304111f,0.24013928122080053f,0.1908634439410304f,\
+ 0.04233444329438218f,-0.74974593479018292f,\
+0.21852271998327827f,0.46641793006923571f,-0.50775725878230649f,0.36932403849454087f,\
+ -0.97035140329820424f,-0.59905481375287661f,0.47057866052210873f,-0.27484558236611223f,\
+ 0.14983776443256616f,0.65314738162484509f,\
+1.21784046668363755f,0.89544041489161419f,-0.55385999040744260f,2.3960585010456512f,\
+ -1.08813967734866801f,-1.76566044616615891f,1.01831164014477937f,-0.39749297613335716f,\
+ -1.42421433146953369f,0.1681331405197976f,\
+1.2139424005771302f,1.25657353572343178f,-0.00767306183273730f,0.23949549471191356f,\
+ -0.93651648982768132f,-0.892557290343648f,-0.31803824197434533f,-0.30269705651930523f,\
+ 0.06480270543120303f,0.04863444130781940f,\
+-0.4833117651305104f,0.0427206592410736f,-0.32334126501314669f,-0.77563551313076551f,\
+ 0.77531171370204577f,0.4186703610529936f,0.06140053814127502f,0.40102788900264252f,\
+ 0.23384530409440230f,-0.64994440926481989f,\
+1.96328712223105617f,0.26113952707794202f,0.7924550400337056f,-0.65512478202793500f,\
+ -0.18012047754401772f,-1.54644464183129848f,-0.24103692367484025f,0.06994604293168416f,\
+ -0.14071021436989639f,0.02396061029170871f,\
+-0.38634718234016863f,-0.79360643330422442f,-0.24953759611467596f,-1.18124389108964234f,\
+ 0.36517943778230522f,0.69540420551183901f,-0.15267947346137922f,0.23673803504827576f,\
+ 0.58370191145957184f,0.41325242999322420f,\
+0.27463944706760368f,-0.07374243215114486f,-0.23939703640616677f,-0.68898202198243763f,\
+ 0.18544512532830235f,-0.26697093307764330f,-0.38327334858322648f,-0.29893133575699177f,\
+ 0.40729781218472505f,0.82660964787147106f}
+
+
+
+#define ZRMATRIX_IN {0.56672112690284848,0.57116389367729425,0.81601104838773608,0.05689279362559319,\
+ 0.55959366867318749,0.12493403162807226,0.72792222863063216,0.26777664758265018,\
+ 0.54653349192813039,0.98854076582938433,\
+0.73956565884873271,0.00371731072664261,0.59005728596821427,0.3096467358991504,\
+ 0.25522057106718421,0.62518793903291225,0.11574173765257001,0.61170040909200907,\
+ 0.67839562846347690,0.33200952783226967,\
+0.02587099233642220,0.51744682248681784,0.39168732380494475,0.24135384149849415,\
+ 0.50644348980858922,0.42361020017415285,0.28937275288626552,0.08879321813583374,\
+ 0.62128817522898316,0.34549844544380903,\
+0.70648676296696067,0.52114724926650524,0.28704008506610990,0.65027950797230005,\
+ 0.08813347620889544,0.44987633451819420,0.72272530803456903,0.89767962601035833,\
+ 0.24278218811377883,0.43377211131155491,\
+0.96770532103255391,0.50685344357043505,0.52329764096066356,0.5596947595477104,\
+ 0.56173070007935166,0.46817600261420012,0.77945467224344611,0.79010718129575253,\
+ 0.98085420625284314,0.81870661024004221,\
+0.42568723810836673,0.24615605548024178,0.92295324662700295,0.10007458087056875,\
+ 0.46782181179150939,0.39504976756870747,0.03661171020939946,0.51753685344010592,\
+ 0.83254515705630183,0.61048321425914764,\
+0.18711117887869477,0.01895748358219862,0.84335647663101554,0.07485948316752911,\
+ 0.85328151332214475,0.01245901081711054,0.18675393564626575,0.49205840751528740,\
+ 0.74896081397309899,0.94149570073932409,\
+0.21240556007251143,0.57950199581682682,0.26281475694850087,0.43609866220504045,\
+ 0.91105451015755534,0.80826673656702042,0.81026530498638749,0.25904283951967955,\
+ 0.41390872886404395,0.35999277792870998,\
+0.69127879338338971,0.76568587962538004,0.35726496530696750,0.76933998242020607,\
+ 0.54776339093223214,0.09622887428849936,0.95611717319115996,0.22074085660278797,\
+ 0.01432593585923314,0.81914897728711367,\
+0.13049928424879909,0.96820035576820374,0.6561381467618048,0.24455389659851789,\
+ 0.52831235667690635,0.84689256362617016,0.78766220854595304,0.12620826158672571,\
+ 0.78838609857484698,0.34530424699187279}
+
+#define ZIMATRIX_IN {0.26598573336377740,0.12025266280397773,0.90711546363309026,0.41329363686963916,\
+ 0.33616027468815446,0.20337020372971892,0.31845858739688993,0.04173615900799632,\
+ 0.00291663268581033,0.92589621385559440,\
+0.97098186518996954,0.82874121330678463,0.33601493109017611,0.14022908732295036,\
+ 0.53368766140192747,0.30119446106255054,0.57618944440037012,0.34382718056440353,\
+ 0.89934705849736929,0.09938172809779644,\
+0.88752476638182998,0.31610729591920972,0.11756130633875728,0.49523561308160424,\
+ 0.20390639593824744,0.27625959040597081,0.42549022240564227,0.1970167332328856,\
+ 0.83879271661862731,0.42805786477401853,\
+0.20667528547346592,0.53051907662302256,0.92537237703800201,0.41948772873729467,\
+ 0.15899897180497646,0.29445307422429323,0.97619816288352013,0.21228986512869596,\
+ 0.43437494523823261,0.94318309519439936,\
+0.85251609655097127,0.57151748193427920,0.72636712575331330,0.86262222891673446,\
+ 0.01818151073530316,0.57180739520117640,0.25189600000157952,0.31403985014185309,\
+ 0.77678761305287480,0.03273952705785632,\
+0.67446978110820055,0.04780154302716255,0.90094979386776686,0.28575096465647221,\
+ 0.40983706060796976,0.21417701244354248,0.43911290075629950,0.78216253779828548,\
+ 0.13953176606446505,0.92132670804858208,\
+0.91528743831440806,0.82486197212710977,0.39489932497963309,0.25121363671496511,\
+ 0.01058345986530185,0.68954616272822022,0.07593036955222487,0.05409323470667005,\
+ 0.11506372271105647,0.94490244099870324,\
+0.02848597615957260,0.5798843121156096,0.56551797501742840,0.33891015965491533,\
+ 0.19653097167611122,0.58555728476494551,0.25593801774084568,0.91902069095522165,\
+ 0.53554199635982513,0.900706990621984,\
+0.23678414756432176,0.27918082987889647,0.70614896761253476,0.39219759730622172,\
+ 0.27255953708663583,0.42041230341419578,0.06706167431548238,0.46035157097503543,\
+ 0.43117330456152558,0.80943161016330123,\
+0.70153435599058867,0.95451109297573566,0.67878311965614557,0.46815521270036697,\
+ 0.34376550372689962,0.42775720171630383,0.76511315722018480,0.29926850274205208,\
+ 0.61453847866505384,0.02519542910158634}
+
+#define ZRMATRIX_RESULT {1.13334136062879454,1.00204710284162091,-0.36268445209785111,0.44135219666801256,\
+ -0.28889550886983612,-0.83933700493692454,0.02619582683916769,-0.03686600548096228,\
+ -0.3105979269805872,-0.41314497983816856,\
+-1.35807279244359291,-0.95351719301170645,0.24508427491574258,-0.29038757219777517,\
+ 0.37390577835866062,1.1835902691419622,-0.05725271188164360,-0.45507733751420543,\
+ 0.89349083196709700,0.22599186865989143,\
+0.04475841273073522,0.65452526617183937,-0.45264724847008608,1.48730985056287901,\
+ -0.62424039568072809,-0.07013705727696817,0.66279285096827567,-0.49314454581179629,\
+ -0.75846179749076570,0.03847068162421585,\
+-0.28834686632766587,-0.12621821344664338,0.66167042153468991,-0.30750952923310820,\
+ -0.38799028698820520,-0.06244610332663336,-0.16699468178690519,-0.25703548004808097,\
+ 1.05027930016160997,0.31201179786307248,\
+3.09851038226275932,0.68543010150986716,0.67201299485007393,-1.36595464827487545,\
+ -0.97056467795873491,-2.43637154663396904,-0.44698290573897426,0.25335968244039719,\
+ 0.52656196888052886,0.8186504936893056,\
+1.61532430192389009,0.61052036715893920,0.37049911672435160,-0.89240571480272601,\
+ -0.10120030002332725,-0.89781867625900547,-0.69692694811392220,1.15675538992405480,\
+ -0.60391534256305657,-0.22021828342698485,\
+-0.3741129583278592,-0.04777966095669883,-0.71234429260192467,0.67967568250401755,\
+ 0.25551727122371526,-0.21501817490214456,0.33990052672394827,0.26217278721004078,\
+ -0.62229775428125067,0.12867275098729825,\
+-1.29410590757942501,-0.90500447621878899,-0.02669409932542677,-0.65737384875432148,\
+ 1.06680350537307067,1.0309312701659521,-0.17448425396711695,0.10358425160515741,\
+ 0.48518012284543799,-0.12380980760248197,\
+-1.74148559631895505,-0.80563620794306168,0.09831541569063014,0.29858001971458137,\
+ 0.71315790168444038,1.51589578494898358,0.26752178758245609,-0.07814488857312252,\
+ -0.33226019516643074,-0.25594588429781640,\
+-0.55157638336116810,-0.32553554473562663,0.18945085905693287,-0.49018398019943904,\
+ 0.22032383413091419,0.80929284051108974,-0.26930477901947342,0.01565276572275408,\
+ 0.50897245662655299,-0.2000796589321248}
+
+#define ZIMATRIX_RESULT {-0.72071682835421724,-0.27956750077582515,-0.12213482023956473,0.66199681493358187,\
+ 0.19294748584842841,0.71511499705121806,-0.07262892107788382,0.16934235088255833,\
+ -0.28481834522168847,-0.4356262417043216,\
+0.89322305892893428,-0.47480723687179577,0.74313808566553685,-0.47801173363000360,\
+ 0.13877492668810687,-0.24397029588270253,-0.56410605487977428,0.13174383488792796,\
+ -0.11275208753659083,-0.02853860897251614,\
+-2.35574562422712885,-0.66252937112300103,0.41163350762074485,0.21189678704881354,\
+ 0.57210153384651341,1.59871861336304111,0.24013928122080053,0.1908634439410304,\
+ 0.04233444329438218,-0.74974593479018292,\
+0.21852271998327827,0.46641793006923571,-0.50775725878230649,0.36932403849454087,\
+ -0.97035140329820424,-0.59905481375287661,0.47057866052210873,-0.27484558236611223,\
+ 0.14983776443256616,0.65314738162484509,\
+1.21784046668363755,0.89544041489161419,-0.55385999040744260,2.3960585010456512,\
+ -1.08813967734866801,-1.76566044616615891,1.01831164014477937,-0.39749297613335716,\
+ -1.42421433146953369,0.1681331405197976,\
+1.2139424005771302,1.25657353572343178,-0.00767306183273730,0.23949549471191356,\
+ -0.93651648982768132,-0.892557290343648,-0.31803824197434533,-0.30269705651930523,\
+ 0.06480270543120303,0.04863444130781940,\
+-0.4833117651305104,0.0427206592410736,-0.32334126501314669,-0.77563551313076551,\
+ 0.77531171370204577,0.4186703610529936,0.06140053814127502,0.40102788900264252,\
+ 0.23384530409440230,-0.64994440926481989,\
+1.96328712223105617,0.26113952707794202,0.7924550400337056,-0.65512478202793500,\
+ -0.18012047754401772,-1.54644464183129848,-0.24103692367484025,0.06994604293168416,\
+ -0.14071021436989639,0.02396061029170871,\
+-0.38634718234016863,-0.79360643330422442,-0.24953759611467596,-1.18124389108964234,\
+ 0.36517943778230522,0.69540420551183901,-0.15267947346137922,0.23673803504827576,\
+ 0.58370191145957184,0.41325242999322420,\
+0.27463944706760368,-0.07374243215114486,-0.23939703640616677,-0.68898202198243763,\
+ 0.18544512532830235,-0.26697093307764330,-0.38327334858322648,-0.29893133575699177,\
+ 0.40729781218472505,0.82660964787147106}
+
+
+static void sinvermaTest (void)
+{
+ int i ;
+
+ float in[] = SMATRIX_IN ;
+
+ float result[] = SMATRIX_TEST ;
+
+ float out[LEADDIM*LEADDIM];
+
+
+ sinverma (in, out, LEADDIM);
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
+ {
+
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-4 ) ;
+ }
+
+
+
+}
+
+static void dinvermaTest (void)
+{
+ int i ;
+
+ double in[] = DMATRIX_IN ;
+
+ double result[] = DMATRIX_TEST ;
+
+ double out[LEADDIM*LEADDIM];
+
+
+ dinverma (in, out, LEADDIM);
+
+ for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
+ {
+
+ printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-14 ) ;
+ }
+
+
+
+}
+
+static void cinvermaTest (void)
+{
+ int i = 0 ;
+
+ float tRealIn [] = CRMATRIX_IN ;
+ float tImagIn [] = CIMATRIX_IN ;
+
+
+
+ float tRealResult [] = CRMATRIX_RESULT ;
+ float tImagResult [] = CIMATRIX_RESULT ;
+
+ floatComplex out[LEADDIM*LEADDIM ] ;
+
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , LEADDIM*LEADDIM );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,LEADDIM*LEADDIM) ;
+
+
+ cinverma( in ,out , LEADDIM ) ;
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (LEADDIM*LEADDIM ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t +%e\t * i assert : %e + %e \n" ,
+ i ,creals(out[i]) , cimags(out[i]) , creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-6 && creals (Result[i]) < 1e-6 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-5 );
+
+
+ if ( cimags(out[i]) < 1e-6 && cimags (Result[i]) < 1e-6 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-5) ;
+
+ }
+}
+
+
+static void zinvermaTest (void)
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZRMATRIX_IN ;
+ double tImagIn [] = ZIMATRIX_IN ;
+
+
+
+ double tRealResult [] = ZRMATRIX_RESULT ;
+ double tImagResult [] = ZIMATRIX_RESULT ;
+
+ doubleComplex out[LEADDIM*LEADDIM ] ;
+
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , LEADDIM*LEADDIM );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,LEADDIM*LEADDIM) ;
+
+
+ zinverma( in ,out , LEADDIM ) ;
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (LEADDIM*LEADDIM ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t +%e\t * i assert : %e + %e \n" ,
+ i ,zreals(out[i]) , zimags(out[i]) , zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-13 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-13 ) ;
+
+ }
+}
+
+static void mytest (void ){
+ double in1[16] = { 1 , 5 , 9 ,13 ,
+ 2 , 6 , 10 , 14 ,
+ 3 , 7 , 11 , 15 ,
+ 4 , 8 , 12 , 16 } ;
+
+ double out[16] = { 0 } ;
+
+ int i = 0 ;
+
+ dinverma ( in1 , out , 4 );
+
+ for ( i = 0 ; i <16; i++)
+ {
+printf ( "\t\t %d out : %20.15e\t\n" , i , out[i] ) ;
+
+ }
+
+}
+
+static int testMatrixInversion(void) {
+
+ printf("\n\n\n\t>>> MY TEST Tests\n");
+ mytest () ;
+
+
+ printf("\n>>>> Matrix Inversion Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ dinvermaTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ sinvermaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ cinvermaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zinvermaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+
+ assert(testMatrixInversion() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj b/2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj
new file mode 100644
index 00000000..e874edfc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{44D3EFB8-A861-41C4-BBCD-18470FA0D5AC}</ProjectGuid>
+ <RootNamespace>testMatrixInversion</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../elementaryFunctions/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../elementaryFunctions/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../elementaryFunctions/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;../../../elementaryFunctions/includes;../../../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixInversion.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj.filters b/2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj.filters
new file mode 100644
index 00000000..8daf0ce4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/test_MatrixInversion/testMatrixInversion.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixInversion.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/inversion/u16inverma.c b/2.3-1/src/c/matrixOperations/inversion/u16inverma.c
new file mode 100644
index 00000000..917c9af8
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/u16inverma.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void u16inverma ( uint16* in, float* out, int leadDimIn )
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i ++ )
+ {
+ dblin[i] = (double) in[i] ;
+ }
+
+ dinverma ( dblin, dblout, leadDimIn );
+
+
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i++ )
+ {
+ out[i] =(float) dblout[i] ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/inversion/u8inverma.c b/2.3-1/src/c/matrixOperations/inversion/u8inverma.c
new file mode 100644
index 00000000..2fab6597
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/u8inverma.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void u8inverma ( uint8* in, float* out, int leadDimIn )
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need double matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ double *dblin = NULL;
+ double *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+ dblout = (double*)malloc(sizeof(double) * (unsigned int)(leadDimIn * leadDimIn));
+
+
+
+ /*copy and cast all the float value into double value */
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i ++ )
+ {
+ dblin[i] = (double) in[i] ;
+ }
+
+ dinverma ( dblin, dblout, leadDimIn );
+
+
+ for ( i = 0 ; i < (leadDimIn * leadDimIn) ; i++ )
+ {
+ out[i] =(float) dblout[i] ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/inversion/zinverma.c b/2.3-1/src/c/matrixOperations/inversion/zinverma.c
new file mode 100644
index 00000000..7948445e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/inversion/zinverma.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "matrixInversion.h"
+#include "lapack.h"
+
+void zinverma ( doubleComplex* in, doubleComplex* out, int leadDimIn )
+{
+ int info = 0 ;
+ int* vectPivot = (int*) malloc ( sizeof(int) * (unsigned int)( leadDimIn) );
+ doubleComplex* work = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (leadDimIn*leadDimIn) );
+
+ int i = 0 ;
+
+ for ( i = 0 ; i < leadDimIn*leadDimIn ; i ++)
+ {
+ out[i] = in[i] ;
+ }
+
+ zgetrf_ ( &leadDimIn, &leadDimIn, out, &leadDimIn, vectPivot, &info );
+ zgetri_ ( &leadDimIn, out, &leadDimIn , vectPivot, work , &leadDimIn , &info );
+
+ free(vectPivot);
+ free(work);
+}
+
diff --git a/2.3-1/src/c/matrixOperations/jmat/Makefile.am b/2.3-1/src/c/matrixOperations/jmat/Makefile.am
new file mode 100644
index 00000000..08afef59
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/Makefile.am
@@ -0,0 +1,35 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+libJmat_la_CFLAGS= -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libJmat.la
+
+HEAD = ../includes/jmat.h
+
+libJmat_la_SOURCES = $(HEAD) \
+ sjmata.c \
+ djmata.c
+
+check_PROGRAMS = testJmat
+
+check_LDADD = libJmat.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/matrixOperations/includes
+
+testJmat_SOURCES = testJmat.c
+testJmat_LDADD = $(check_LDADD)
+testJmat_CFLAGS = $(check_INCLUDES)
+
+TESTS = testJmat
diff --git a/2.3-1/src/c/matrixOperations/jmat/Makefile.in b/2.3-1/src/c/matrixOperations/jmat/Makefile.in
new file mode 100644
index 00000000..e8831170
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/Makefile.in
@@ -0,0 +1,684 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testJmat$(EXEEXT)
+TESTS = testJmat$(EXEEXT)
+subdir = src/c/matrixOperations/jmat
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libJmat_la_LIBADD =
+am__objects_1 =
+am_libJmat_la_OBJECTS = $(am__objects_1) libJmat_la-sjmata.lo \
+ libJmat_la-djmata.lo
+libJmat_la_OBJECTS = $(am_libJmat_la_OBJECTS)
+libJmat_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libJmat_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testJmat_OBJECTS = testJmat-testJmat.$(OBJEXT)
+testJmat_OBJECTS = $(am_testJmat_OBJECTS)
+testJmat_DEPENDENCIES = $(check_LDADD)
+testJmat_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testJmat_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libJmat_la_SOURCES) $(testJmat_SOURCES)
+DIST_SOURCES = $(libJmat_la_SOURCES) $(testJmat_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libJmat_la_CFLAGS = -I $(top_builddir)/src/c/matrixOperations/includes
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libJmat.la
+HEAD = ../includes/jmat.h
+libJmat_la_SOURCES = $(HEAD) \
+ sjmata.c \
+ djmata.c
+
+check_LDADD = libJmat.la
+check_INCLUDES = -I $(top_builddir)/src/c/matrixOperations/includes
+testJmat_SOURCES = testJmat.c
+testJmat_LDADD = $(check_LDADD)
+testJmat_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/jmat/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/jmat/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libJmat.la: $(libJmat_la_OBJECTS) $(libJmat_la_DEPENDENCIES)
+ $(libJmat_la_LINK) -rpath $(pkglibdir) $(libJmat_la_OBJECTS) $(libJmat_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testJmat$(EXEEXT): $(testJmat_OBJECTS) $(testJmat_DEPENDENCIES)
+ @rm -f testJmat$(EXEEXT)
+ $(testJmat_LINK) $(testJmat_OBJECTS) $(testJmat_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libJmat_la-djmata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libJmat_la-sjmata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testJmat-testJmat.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libJmat_la-sjmata.lo: sjmata.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libJmat_la_CFLAGS) $(CFLAGS) -MT libJmat_la-sjmata.lo -MD -MP -MF $(DEPDIR)/libJmat_la-sjmata.Tpo -c -o libJmat_la-sjmata.lo `test -f 'sjmata.c' || echo '$(srcdir)/'`sjmata.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libJmat_la-sjmata.Tpo $(DEPDIR)/libJmat_la-sjmata.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sjmata.c' object='libJmat_la-sjmata.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libJmat_la_CFLAGS) $(CFLAGS) -c -o libJmat_la-sjmata.lo `test -f 'sjmata.c' || echo '$(srcdir)/'`sjmata.c
+
+libJmat_la-djmata.lo: djmata.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libJmat_la_CFLAGS) $(CFLAGS) -MT libJmat_la-djmata.lo -MD -MP -MF $(DEPDIR)/libJmat_la-djmata.Tpo -c -o libJmat_la-djmata.lo `test -f 'djmata.c' || echo '$(srcdir)/'`djmata.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libJmat_la-djmata.Tpo $(DEPDIR)/libJmat_la-djmata.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='djmata.c' object='libJmat_la-djmata.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libJmat_la_CFLAGS) $(CFLAGS) -c -o libJmat_la-djmata.lo `test -f 'djmata.c' || echo '$(srcdir)/'`djmata.c
+
+testJmat-testJmat.o: testJmat.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testJmat_CFLAGS) $(CFLAGS) -MT testJmat-testJmat.o -MD -MP -MF $(DEPDIR)/testJmat-testJmat.Tpo -c -o testJmat-testJmat.o `test -f 'testJmat.c' || echo '$(srcdir)/'`testJmat.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testJmat-testJmat.Tpo $(DEPDIR)/testJmat-testJmat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testJmat.c' object='testJmat-testJmat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testJmat_CFLAGS) $(CFLAGS) -c -o testJmat-testJmat.o `test -f 'testJmat.c' || echo '$(srcdir)/'`testJmat.c
+
+testJmat-testJmat.obj: testJmat.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testJmat_CFLAGS) $(CFLAGS) -MT testJmat-testJmat.obj -MD -MP -MF $(DEPDIR)/testJmat-testJmat.Tpo -c -o testJmat-testJmat.obj `if test -f 'testJmat.c'; then $(CYGPATH_W) 'testJmat.c'; else $(CYGPATH_W) '$(srcdir)/testJmat.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testJmat-testJmat.Tpo $(DEPDIR)/testJmat-testJmat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testJmat.c' object='testJmat-testJmat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testJmat_CFLAGS) $(CFLAGS) -c -o testJmat-testJmat.obj `if test -f 'testJmat.c'; then $(CYGPATH_W) 'testJmat.c'; else $(CYGPATH_W) '$(srcdir)/testJmat.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/jmat/djmata.c b/2.3-1/src/c/matrixOperations/jmat/djmata.c
new file mode 100644
index 00000000..6ccff61d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/djmata.c
@@ -0,0 +1,22 @@
+#include <jmat.h>
+
+void djmata(double n, double m, double *out){
+ int i,nn,mm,j;
+ mm=(int) m;
+ nn=(int) n;
+
+
+ for (i=0;i<n;i++){/*We work by blocs*/
+ for(j=0;j<m;j++){/*then by column*/
+ /*
+ * i*mm*nn : advance to the good column
+ * mm*(nn-(i+1)) : take the first element of the column to be 1, when j=0
+ * j*(mm*nn+1) : advance to the next which must be 1
+ * */
+ out[i*mm*mm*nn+(mm*(nn-(i+1))+j*(mm*nn+1))]=1;
+ }
+ }
+
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/jmat/sjmata.c b/2.3-1/src/c/matrixOperations/jmat/sjmata.c
new file mode 100644
index 00000000..b969fd7a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/sjmata.c
@@ -0,0 +1,22 @@
+#include <jmat.h>
+
+void sjmata(float n, float m, float *out){
+ int i,nn,mm,j;
+ mm=(int) m;
+ nn=(int) n;
+
+
+ for (i=0;i<n;i++){/*We work by blocs*/
+ for(j=0;j<m;j++){/*then by column*/
+ /*
+ * i*mm*nn : advance to the good column
+ * mm*(nn-(i+1)) : take the first element of the column to be 1, when j=0
+ * j*(mm*nn+1) : advance to the next to be 1
+ * */
+ out[i*mm*mm*nn+(mm*(nn-(i+1))+j*(mm*nn+1))]=1;
+ }
+ }
+
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/jmat/testJmat.c b/2.3-1/src/c/matrixOperations/jmat/testJmat.c
new file mode 100644
index 00000000..853f5236
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/testJmat.c
@@ -0,0 +1,20 @@
+#include <assert.h>
+#include <stdio.h>
+#include "jmat.h"
+
+static void sjmataTest(void){
+
+}
+
+
+static void djmataTest(void){
+
+}
+
+
+
+int main(void){
+ sjmataTest();
+ djmataTest();
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj b/2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj
new file mode 100644
index 00000000..cd31d61f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{04980E4A-FD92-4D44-8EB6-6F643A4ED9B3}</ProjectGuid>
+ <RootNamespace>testJmat</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testJmat.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj.filters b/2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj.filters
new file mode 100644
index 00000000..bb1a6733
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/jmat/test_Jmat/testJmat.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testJmat.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/kron/dkrona.c b/2.3-1/src/c/matrixOperations/kron/dkrona.c
new file mode 100644
index 00000000..31e0a52e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/kron/dkrona.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for kroneker product of two matrices*/
+
+#include "kron.h"
+
+void dkrona (double *in1, int row1, int col1, double *in2, int row2, \
+ int col2, double *out)
+{
+ int row1_count, col1_count,row2_count, col2_count;
+ int row = row1*row2;
+ int temp = 0;
+
+ for(col1_count = 0;col1_count < col1; col1_count++)
+ {
+ for(row1_count = 0;row1_count < row1; row1_count++)
+ {
+ for(col2_count = 0;col2_count < col2; col2_count++)
+ {
+ for(row2_count = 0;row2_count < row2; row2_count++)
+ {
+ temp = (col1_count*col2+col2_count)*row+(row1_count*row2+row2_count);
+ out[temp] = in1[col1_count*row1+row1_count]*in2[col2_count*row2+row2_count];
+ }
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/kron/skrona.c b/2.3-1/src/c/matrixOperations/kron/skrona.c
new file mode 100644
index 00000000..1e0daaf1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/kron/skrona.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function for kroneker product of two matrices*/
+
+#include "kron.h"
+
+void skrona (float *in1, int row1, int col1, float *in2, int row2, \
+ int col2, float *out)
+{
+ int row1_count, col1_count,row2_count, col2_count;
+ int row = row1*row2;
+ int temp = 0;
+
+ for(col1_count = 0;col1_count < col1; col1_count++)
+ {
+ for(row1_count = 0;row1_count < row1; row1_count++)
+ {
+ for(col2_count = 0;col2_count < col2; col2_count++)
+ {
+ for(row2_count = 0;row2_count < row2; row2_count++)
+ {
+ temp = (col1_count*col2+col2_count)*row+(row1_count*row2+row2_count);
+ out[temp] = in1[col1_count*row1+row1_count]*in2[col2_count*row2+row2_count];
+ }
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/logm/Makefile.am b/2.3-1/src/c/matrixOperations/logm/Makefile.am
new file mode 100644
index 00000000..f21ded7d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/Makefile.am
@@ -0,0 +1,81 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libLogm_la_CFLAGS = -I ./includes \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libLogm.la
+
+HEAD = ../includes/logm.h
+
+
+libLogm_la_SOURCES = $(HEAD) \
+ zlogma.c \
+ clogma.c \
+ slogma.c \
+ dlogma.c
+
+#############
+## CHECK ##
+#############
+
+check_PROGRAMS = testDoubleLogm testFloatLogm
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la
+
+
+check_INCLUDES = -I ./includes \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleLogm_SOURCES = testDoubleLogm.c
+testDoubleLogm_LDADD = $(check_LDADD)
+testDoubleLogm_CFLAGS = $(check_INCLUDES)
+
+testFloatLogm_SOURCES = testFloatLogm.c
+testFloatLogm_LDADD = $(check_LDADD)
+testFloatLogm_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleLogm testFloatLogm
diff --git a/2.3-1/src/c/matrixOperations/logm/Makefile.in b/2.3-1/src/c/matrixOperations/logm/Makefile.in
new file mode 100644
index 00000000..d4923eb3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/Makefile.in
@@ -0,0 +1,763 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleLogm$(EXEEXT) testFloatLogm$(EXEEXT)
+TESTS = testDoubleLogm$(EXEEXT) testFloatLogm$(EXEEXT)
+subdir = src/c/matrixOperations/logm
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLogm_la_LIBADD =
+am__objects_1 =
+am_libLogm_la_OBJECTS = $(am__objects_1) libLogm_la-zlogma.lo \
+ libLogm_la-clogma.lo libLogm_la-slogma.lo libLogm_la-dlogma.lo
+libLogm_la_OBJECTS = $(am_libLogm_la_OBJECTS)
+libLogm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLogm_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLogm_OBJECTS = testDoubleLogm-testDoubleLogm.$(OBJEXT)
+testDoubleLogm_OBJECTS = $(am_testDoubleLogm_OBJECTS)
+testDoubleLogm_DEPENDENCIES = $(check_LDADD)
+testDoubleLogm_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLogm_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLogm_OBJECTS = testFloatLogm-testFloatLogm.$(OBJEXT)
+testFloatLogm_OBJECTS = $(am_testFloatLogm_OBJECTS)
+testFloatLogm_DEPENDENCIES = $(check_LDADD)
+testFloatLogm_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLogm_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLogm_la_SOURCES) $(testDoubleLogm_SOURCES) \
+ $(testFloatLogm_SOURCES)
+DIST_SOURCES = $(libLogm_la_SOURCES) $(testDoubleLogm_SOURCES) \
+ $(testFloatLogm_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLogm_la_CFLAGS = -I ./includes \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLogm.la
+HEAD = ../includes/logm.h
+libLogm_la_SOURCES = $(HEAD) \
+ zlogma.c \
+ clogma.c \
+ slogma.c \
+ dlogma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la
+
+check_INCLUDES = -I ./includes \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleLogm_SOURCES = testDoubleLogm.c
+testDoubleLogm_LDADD = $(check_LDADD)
+testDoubleLogm_CFLAGS = $(check_INCLUDES)
+testFloatLogm_SOURCES = testFloatLogm.c
+testFloatLogm_LDADD = $(check_LDADD)
+testFloatLogm_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/logm/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/logm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLogm.la: $(libLogm_la_OBJECTS) $(libLogm_la_DEPENDENCIES)
+ $(libLogm_la_LINK) -rpath $(pkglibdir) $(libLogm_la_OBJECTS) $(libLogm_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLogm$(EXEEXT): $(testDoubleLogm_OBJECTS) $(testDoubleLogm_DEPENDENCIES)
+ @rm -f testDoubleLogm$(EXEEXT)
+ $(testDoubleLogm_LINK) $(testDoubleLogm_OBJECTS) $(testDoubleLogm_LDADD) $(LIBS)
+testFloatLogm$(EXEEXT): $(testFloatLogm_OBJECTS) $(testFloatLogm_DEPENDENCIES)
+ @rm -f testFloatLogm$(EXEEXT)
+ $(testFloatLogm_LINK) $(testFloatLogm_OBJECTS) $(testFloatLogm_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-clogma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-dlogma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-slogma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-zlogma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLogm-testDoubleLogm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLogm-testFloatLogm.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLogm_la-zlogma.lo: zlogma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-zlogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-zlogma.Tpo -c -o libLogm_la-zlogma.lo `test -f 'zlogma.c' || echo '$(srcdir)/'`zlogma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLogm_la-zlogma.Tpo $(DEPDIR)/libLogm_la-zlogma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlogma.c' object='libLogm_la-zlogma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-zlogma.lo `test -f 'zlogma.c' || echo '$(srcdir)/'`zlogma.c
+
+libLogm_la-clogma.lo: clogma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-clogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-clogma.Tpo -c -o libLogm_la-clogma.lo `test -f 'clogma.c' || echo '$(srcdir)/'`clogma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLogm_la-clogma.Tpo $(DEPDIR)/libLogm_la-clogma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clogma.c' object='libLogm_la-clogma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-clogma.lo `test -f 'clogma.c' || echo '$(srcdir)/'`clogma.c
+
+libLogm_la-slogma.lo: slogma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-slogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-slogma.Tpo -c -o libLogm_la-slogma.lo `test -f 'slogma.c' || echo '$(srcdir)/'`slogma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLogm_la-slogma.Tpo $(DEPDIR)/libLogm_la-slogma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slogma.c' object='libLogm_la-slogma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-slogma.lo `test -f 'slogma.c' || echo '$(srcdir)/'`slogma.c
+
+libLogm_la-dlogma.lo: dlogma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-dlogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-dlogma.Tpo -c -o libLogm_la-dlogma.lo `test -f 'dlogma.c' || echo '$(srcdir)/'`dlogma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLogm_la-dlogma.Tpo $(DEPDIR)/libLogm_la-dlogma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlogma.c' object='libLogm_la-dlogma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-dlogma.lo `test -f 'dlogma.c' || echo '$(srcdir)/'`dlogma.c
+
+testDoubleLogm-testDoubleLogm.o: testDoubleLogm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLogm_CFLAGS) $(CFLAGS) -MT testDoubleLogm-testDoubleLogm.o -MD -MP -MF $(DEPDIR)/testDoubleLogm-testDoubleLogm.Tpo -c -o testDoubleLogm-testDoubleLogm.o `test -f 'testDoubleLogm.c' || echo '$(srcdir)/'`testDoubleLogm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLogm-testDoubleLogm.Tpo $(DEPDIR)/testDoubleLogm-testDoubleLogm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLogm.c' object='testDoubleLogm-testDoubleLogm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLogm_CFLAGS) $(CFLAGS) -c -o testDoubleLogm-testDoubleLogm.o `test -f 'testDoubleLogm.c' || echo '$(srcdir)/'`testDoubleLogm.c
+
+testDoubleLogm-testDoubleLogm.obj: testDoubleLogm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLogm_CFLAGS) $(CFLAGS) -MT testDoubleLogm-testDoubleLogm.obj -MD -MP -MF $(DEPDIR)/testDoubleLogm-testDoubleLogm.Tpo -c -o testDoubleLogm-testDoubleLogm.obj `if test -f 'testDoubleLogm.c'; then $(CYGPATH_W) 'testDoubleLogm.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLogm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLogm-testDoubleLogm.Tpo $(DEPDIR)/testDoubleLogm-testDoubleLogm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLogm.c' object='testDoubleLogm-testDoubleLogm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLogm_CFLAGS) $(CFLAGS) -c -o testDoubleLogm-testDoubleLogm.obj `if test -f 'testDoubleLogm.c'; then $(CYGPATH_W) 'testDoubleLogm.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLogm.c'; fi`
+
+testFloatLogm-testFloatLogm.o: testFloatLogm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLogm_CFLAGS) $(CFLAGS) -MT testFloatLogm-testFloatLogm.o -MD -MP -MF $(DEPDIR)/testFloatLogm-testFloatLogm.Tpo -c -o testFloatLogm-testFloatLogm.o `test -f 'testFloatLogm.c' || echo '$(srcdir)/'`testFloatLogm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLogm-testFloatLogm.Tpo $(DEPDIR)/testFloatLogm-testFloatLogm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLogm.c' object='testFloatLogm-testFloatLogm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLogm_CFLAGS) $(CFLAGS) -c -o testFloatLogm-testFloatLogm.o `test -f 'testFloatLogm.c' || echo '$(srcdir)/'`testFloatLogm.c
+
+testFloatLogm-testFloatLogm.obj: testFloatLogm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLogm_CFLAGS) $(CFLAGS) -MT testFloatLogm-testFloatLogm.obj -MD -MP -MF $(DEPDIR)/testFloatLogm-testFloatLogm.Tpo -c -o testFloatLogm-testFloatLogm.obj `if test -f 'testFloatLogm.c'; then $(CYGPATH_W) 'testFloatLogm.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLogm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLogm-testFloatLogm.Tpo $(DEPDIR)/testFloatLogm-testFloatLogm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLogm.c' object='testFloatLogm-testFloatLogm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLogm_CFLAGS) $(CFLAGS) -c -o testFloatLogm-testFloatLogm.obj `if test -f 'testFloatLogm.c'; then $(CYGPATH_W) 'testFloatLogm.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLogm.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/logm/clogma.c b/2.3-1/src/c/matrixOperations/logm/clogma.c
new file mode 100644
index 00000000..16c1bb4b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/clogma.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "logm.h"
+
+void clogma (floatComplex* in, int rows, floatComplex* out){
+ doubleComplex *inCopy, *outCopy;
+ int i=0;
+
+ inCopy = (doubleComplex *)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ outCopy = (doubleComplex *)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+
+ for(i=0;i<rows*rows;i++)
+ inCopy[i]=DoubleComplex ((double)creals(in[i]), (double)cimags(in[i]));
+
+
+ zlogma(inCopy,rows,outCopy);
+
+ for(i=0;i<rows*rows;i++)
+ out[i]=FloatComplex( (float)zreals(outCopy[i]),(float)zimags(outCopy[i]));
+
+
+ free(inCopy);
+ free(outCopy);
+
+
+}
diff --git a/2.3-1/src/c/matrixOperations/logm/dlogma.c b/2.3-1/src/c/matrixOperations/logm/dlogma.c
new file mode 100644
index 00000000..2184c377
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/dlogma.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "logm.h"
+
+void dlogma (double* in, int rows, double* out){
+ doubleComplex *inCpx,*outCpx;
+ int i;
+
+ inCpx=(doubleComplex *)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ outCpx=(doubleComplex *)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+
+ for (i=0;i<rows*rows;i++) inCpx[i] = DoubleComplex(in[i],0);
+
+ zlogma(inCpx, rows, outCpx);
+
+ for (i=0;i<rows*rows;i++) out[i]=zreals(outCpx[i]);
+
+ free(inCpx);
+ free(outCpx);
+}
diff --git a/2.3-1/src/c/matrixOperations/logm/slogma.c b/2.3-1/src/c/matrixOperations/logm/slogma.c
new file mode 100644
index 00000000..8b3120df
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/slogma.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "logm.h"
+
+void slogma (float* in, int rows, float* out){
+ doubleComplex *inCpx, *outCopy;
+ int i;
+
+ inCpx=(doubleComplex *)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ outCopy=(doubleComplex *)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+
+ for (i=0;i<rows*rows;i++) inCpx[i] = DoubleComplex(in[i],0);
+
+ zlogma(inCpx, rows, outCopy);
+
+ for(i=0;i<rows*rows;i++)
+ out[i]=(float)zreals(outCopy[i]);
+
+ free(inCpx);
+ free(outCopy);
+}
diff --git a/2.3-1/src/c/matrixOperations/logm/testDoubleLogm.c b/2.3-1/src/c/matrixOperations/logm/testDoubleLogm.c
new file mode 100644
index 00000000..039c6e81
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/testDoubleLogm.c
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "logm.h"
+
+
+/* FIXME : Untested*/
+
+static void dlogmaTest(void){
+ int i=0;
+
+ double in4[4] = {0.0683740368112921714783,0.5608486062847077846527,
+ 0.6623569373041391372681,0.7263506767340004444122 };
+ double in9[9] = {0.1985143842175602912903,0.5442573162727057933807,0.2320747897028923034668,
+ 0.2312237196601927280426,0.2164632631465792655945,0.8833887814544141292572,
+ 0.6525134947150945663452,0.3076090742833912372589,0.9329616213217377662659};
+ double in16[16] = {2.1460078610107302665710,3.126419968903064727783,3.6163610080257058143616,2.922266637906432151794,
+ 5.664248815737664699554,4.8264719732105731964111,3.3217189135029911994934,5.9350947011262178421021,
+ 5.0153415976092219352722,4.3685875833034515380859,2.6931248093023896217346,6.3257448654621839523315,
+ 4.051954015158116817474,9.1847078315913677215576,0.4373343335464596748352,4.818508932366967201233};
+ double inHer[16] = {2,3,4,5,3,1,7,9,4,7,2,4,5,9,4,7};
+
+ double result4R[4]={- 0.8770746698483730119378,0.5288031941140065583795,
+ 0.6245116064569415925689,- 0.2566930821175439358939};
+
+ double result9R[9]={- 0.8537183024765053751537,1.9622873186332121520081,- 0.8931518563294031931577,
+ - 0.6983367178614473536,- 1.1199049557115796638129,1.539392415892589571769,
+ 1.0815849580686147657,- 0.4078285487954845245362,0.1789837218054647349774,};
+
+ double result16R[16]={1.4069394184534917968676,- 1.7915236034592834091228,2.3099248310776610004780,0.5320777350783232328979,
+ 0.6986579270151970222358,0.9874373592109859654187,0.8902400742596190408307,0.6067035092100719895214,
+ 0.0466142343271527676007,0.3821963653954382200695,1.129789301050062144682,1.2310339071369393870725,
+ 0.424502387440284123521,3.4580528009566289249221,- 2.1337657344549150195689,1.0826836628584670663145};
+
+ double resultHerR[16]={- 0.0707459665791660696765,0.9744491331561414559914,0.0316695005563280007621,0.9186825501429138896015,
+ 0.9744491331561416780360,1.9318283614573175110962,- 0.0664515082056250649956,0.3546926741474874522631,
+ 0.0316695005563280562733,- 0.0664515082056250649956,0.3206743709780528472919,1.82590946141052867802,
+ 0.9186825501429141116461,0.3546926741474875632854,1.82590946141052867802,0.9537374500729456361370};
+
+
+ double out4[4],out9[9],out16[16],outHer[16];
+
+
+ dlogma(in4,2,out4);
+ dlogma(in9,3,out9);
+ dlogma(in16,4,out16);
+ dlogma(inHer,4,outHer);
+
+ for(i=0;i<4;i++) {
+ assert( (fabs(out4[i]-result4R[i]) / fabs(out4[i])) <3e-15);
+ }
+
+ for(i=0;i<9;i++) {
+ assert( (fabs(out9[i]-result9R[i]) / fabs(out9[i])) <3e-14);
+ }
+
+ for(i=0;i<16;i++) {
+
+ assert( (fabs(out16[i]-result16R[i]) / fabs(out16[i])) <3e-14);
+ }
+
+ for(i=0;i<16;i++) {
+ assert( (fabs(outHer[i]-resultHerR[i]) / fabs(outHer[i])) <3e-13);
+ }
+}
+
+
+static void zlogmaTest(void){
+ int i;
+
+
+ double in4D[4] = {0.0683740368112921714783,0.5608486062847077846527,
+ 0.6623569373041391372681,0.7263506767340004444122 };
+ double in9D[9] = {0.1985143842175602912903,0.5442573162727057933807,0.2320747897028923034668,
+ 0.2312237196601927280426,0.2164632631465792655945,0.8833887814544141292572,
+ 0.6525134947150945663452,0.3076090742833912372589,0.9329616213217377662659};
+ double in16D[16] = {2.1460078610107302665710,3.126419968903064727783,3.6163610080257058143616,2.922266637906432151794,
+ 5.664248815737664699554,4.8264719732105731964111,3.3217189135029911994934,5.9350947011262178421021,
+ 5.0153415976092219352722,4.3685875833034515380859,2.6931248093023896217346,6.3257448654621839523315,
+ 4.051954015158116817474,9.1847078315913677215576,0.4373343335464596748352,4.818508932366967201233};
+ double inHerD[16] = {2,3,4,5,3,1,7,9,4,7,2,4,5,9,4,7};
+
+
+ double result4R[4]={- 0.8770746698483730119378,0.5288031941140065583795,
+ 0.6245116064569415925689,- 0.2566930821175439358939};
+ double result4I[4]={2.3169161534469857599561,- 1.2719608554746495432397,
+ - 1.5021738258100643115256,0.8246765001428078001311};
+ double result9R[9]={- 0.8537183024765053751537,1.9622873186332121520081,- 0.8931518563294031931577,
+ - 0.6983367178614473536,- 1.1199049557115796638129,1.539392415892589571769,
+ 1.0815849580686147657,- 0.4078285487954845245362,0.1789837218054647349774,};
+ double result9I[9]={+ 0.0000000000000006661338,-0.0000000000000005551115,+0.0000000000000001110223,
+ -0.0000000000000002844947,+0.0000000000000004163336,+ 0.0000000000000008743006,
+ -0.0000000000000001665335,+ 0.0000000000000004996004,-0.0000000000000003330669};
+ double result16R[16]={1.4069394184534917968676,- 1.7915236034592834091228,2.3099248310776610004780,0.5320777350783232328979,
+ 0.6986579270151970222358,0.9874373592109859654187,0.8902400742596190408307,0.6067035092100719895214,
+ 0.0466142343271527676007,0.3821963653954382200695,1.129789301050062144682,1.2310339071369393870725,
+ 0.424502387440284123521,3.4580528009566289249221,- 2.1337657344549150195689,1.0826836628584670663145};
+ double result16I[16]={-1.4875734535892033427729,+ 1.8146634352088595321106,-0.0551064758054355952055,-0.8617364610492967980093,
+ + 1.0892397305420760122985,-1.3287434690517783142383,+ 0.0403503858667347281575,+ 0.6309857092212021179023,
+ + 1.3838992102024216813,-1.6881931367553519862668,+ 0.0512659110447117594145,+ 0.8016790061501579689463,
+ -0.6500053973791579675634,+ 0.7929296025459252605927,-0.0240791515993044047406,-0.3765416419935233571792};
+
+
+ doubleComplex out4[4],out9[9],out16[16],outHer[16];
+ doubleComplex in4[4],in9[9],in16[16],inHer[16];
+
+
+ for(i=0;i<4;i++) in4[i]=DoubleComplex(in4D[i],0);
+ for(i=0;i<9;i++) in9[i]=DoubleComplex(in9D[i],0);
+ for(i=0;i<16;i++) in16[i]=DoubleComplex(in16D[i],0);
+ for(i=0;i<16;i++) inHer[i]=DoubleComplex(inHerD[i],0);
+
+
+ zlogma(in4,2,out4);
+ zlogma(in9,3,out9);
+ zlogma(in16,4,out16);
+ zlogma(inHer,4,outHer);
+
+
+
+
+ for(i=0;i<4;i++) {
+ assert( fabs(zreals(out4[i])-result4R[i]) / fabs(zreals(out4[i])) <3e-15);
+ assert( fabs(zimags(out4[i])-result4I[i]) / fabs(zimags(out4[i])) <3e-15);
+ }
+
+ for(i=0;i<9;i++) {
+ assert( fabs(zreals(out9[i])-result9R[i]) / fabs(zreals(out9[i])) <3e-14);
+ if (zimags(out9[i])>3e-16) assert( fabs(zimags(out9[i])-result9I[i]) / fabs(zimags(out9[i])) <1e-16);
+ else assert(1);
+ }
+
+ /* FIXME : sign pb with the imaginary part below : it's due to the reals eigenvalues which are
+ stored like that : eigenvalues + (-0)*i instead of eigenvalues + 0 *i
+ When we do operations with eigenvalues the sign isn't good
+ */
+
+ for(i=0;i<16;i++) {
+ printf("out[%d] = %f + %f *i ---result = %f + %f *i --- assert : %f + %f*i\n",
+ i,
+ zreals(out16[i]),
+ zimags(out16[i]),
+ result16R[i],
+ result16I[i],
+ fabs(zreals(out16[i])-result16R[i]) / fabs(zreals(out16[i])),
+ fabs(zimags(out16[i])-result16I[i]) / fabs(zimags(out16[i])));
+
+ assert( fabs(zreals(out16[i])-result16R[i]) / fabs(zreals(out16[i])) <3e-13);
+ assert( fabs(zimags(out16[i])-result16I[i]) / fabs(zimags(out16[i])) <3e-13);
+ }
+
+
+}
+
+static int logmTest(void){
+ dlogmaTest();
+ zlogmaTest();
+ return 0;
+}
+
+int main (void){
+ assert(logmTest()==0);
+ return 0;
+}
+
+
+
+
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/logm/testFloatLogm.c b/2.3-1/src/c/matrixOperations/logm/testFloatLogm.c
new file mode 100644
index 00000000..3ddd4b06
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/testFloatLogm.c
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "logm.h"
+
+
+static void slogmaTest(void){
+ int i=0;
+
+ float in4[4] = {0.0683740368112921714783f,0.5608486062847077846527f,
+ 0.6623569373041391372681f,0.7263506767340004444122f };
+ float in9[9] = {0.1985143842175602912903f,0.5442573162727057933807f,0.2320747897028923034668f,
+ 0.2312237196601927280426f,0.2164632631465792655945f,0.8833887814544141292572f,
+ 0.6525134947150945663452f,0.3076090742833912372589f,0.9329616213217377662659f};
+ float in16[16] = {2.1460078610107302665710f,3.126419968903064727783f,3.6163610080257058143616f,2.922266637906432151794f,
+ 5.664248815737664699554f,4.8264719732105731964111f,3.3217189135029911994934f,5.9350947011262178421021f,
+ 5.0153415976092219352722f,4.3685875833034515380859f,2.6931248093023896217346f,6.3257448654621839523315f,
+ 4.051954015158116817474f,9.1847078315913677215576f,0.4373343335464596748352f,4.818508932366967201233f};
+ float inHer[16] = {2.0f,3.0f,4.0f,5.0f,3.0f,1.0f,7.0f,9.0f,4.0f,7.0f,2.0f,4.0f,5.0f,9.0f,4.0f,7.0f};
+
+ float result4R[4]={- 0.8770746698483730119378f,0.5288031941140065583795f,
+ 0.6245116064569415925689f,- 0.2566930821175439358939f};
+
+ float result9R[9]={- 0.8537183024765053751537f,1.9622873186332121520081f,- 0.8931518563294031931577f,
+ - 0.6983367178614473536f,- 1.1199049557115796638129f,1.539392415892589571769f,
+ 1.0815849580686147657f,- 0.4078285487954845245362f,0.1789837218054647349774f};
+
+ float result16R[16]={1.4069394184534917968676f,- 1.7915236034592834091228f,2.3099248310776610004780f,0.5320777350783232328979f,
+ 0.6986579270151970222358f,0.9874373592109859654187f,0.8902400742596190408307f,0.6067035092100719895214f,
+ 0.0466142343271527676007f,0.3821963653954382200695f,1.129789301050062144682f,1.2310339071369393870725f,
+ 0.424502387440284123521f,3.4580528009566289249221f,- 2.1337657344549150195689f,1.0826836628584670663145f};
+
+ float resultHerR[16]={- 0.0707459665791660696765f,0.9744491331561414559914f,0.0316695005563280007621f,0.9186825501429138896015f,
+ 0.9744491331561416780360f,1.9318283614573175110962f,- 0.0664515082056250649956f,0.3546926741474874522631f,
+ 0.0316695005563280562733f,- 0.0664515082056250649956f,0.3206743709780528472919f,1.82590946141052867802f,
+ 0.9186825501429141116461f,0.3546926741474875632854f,1.82590946141052867802f,0.9537374500729456361370f};
+
+
+ float out4[4],out9[9],out16[16],outHer[16];
+
+
+ slogma(in4,2,out4);
+ slogma(in9,3,out9);
+ slogma(in16,4,out16);
+ slogma(inHer,4,outHer);
+
+ for(i=0;i<4;i++) {
+ assert( (fabs(out4[i]-result4R[i]) / fabs(out4[i])) <1e-6);
+ }
+
+ for(i=0;i<9;i++) {
+ assert( (fabs(out9[i]-result9R[i]) / fabs(out9[i])) <1e-6);
+ }
+
+ for(i=0;i<16;i++) {
+ assert( (fabs(out16[i]-result16R[i]) / fabs(out16[i])) <1e-6);
+ }
+
+ for(i=0;i<16;i++) {
+ assert( (fabs(outHer[i]-resultHerR[i]) / fabs(outHer[i])) <1e-7);
+ }
+}
+
+
+static void clogmaTest(void){
+ int i;
+
+ float in4D[4] = {0.0683740368112921714783f,0.5608486062847077846527f,
+ 0.6623569373041391372681f,0.7263506767340004444122f };
+ float in9D[9] = {0.1985143842175602912903f,0.5442573162727057933807f,0.2320747897028923034668f,
+ 0.2312237196601927280426f,0.2164632631465792655945f,0.8833887814544141292572f,
+ 0.6525134947150945663452f,0.3076090742833912372589f,0.9329616213217377662659f};
+ float in16D[16] = {2.1460078610107302665710f,3.126419968903064727783f,3.6163610080257058143616f,2.922266637906432151794f,
+ 5.664248815737664699554f,4.8264719732105731964111f,3.3217189135029911994934f,5.9350947011262178421021f,
+ 5.0153415976092219352722f,4.3685875833034515380859f,2.6931248093023896217346f,6.3257448654621839523315f,
+ 4.051954015158116817474f,9.1847078315913677215576f,0.4373343335464596748352f,4.818508932366967201233f};
+ float inHerD[16] = {2.0f,3.0f,4.0f,5.0f,3.0f,1.0f,7.0f,9.0f,4.0f,7.0f,2.0f,4.0f,5.0f,9.0f,4.0f,7.0f};
+
+
+ float result4R[4]={- 0.8770746698483730119378f,0.5288031941140065583795f,
+ 0.6245116064569415925689f,- 0.2566930821175439358939f};
+ float result4I[4]={2.3169161534469857599561f,- 1.2719608554746495432397f,
+ - 1.5021738258100643115256f,0.8246765001428078001311f};
+ float result9R[9]={- 0.8537183024765053751537f,1.9622873186332121520081f,- 0.8931518563294031931577f,
+ - 0.6983367178614473536f,- 1.1199049557115796638129f,1.539392415892589571769f,
+ 1.0815849580686147657f,- 0.4078285487954845245362f,0.1789837218054647349774f};
+ float result9I[9]={- 0.0000000000000006661338f,0.0000000000000005551115f,0.0000000000000001110223f,
+ 0.0000000000000002844947f,0.0000000000000004163336f,- 0.0000000000000008743006f,
+ 0.0000000000000001665335f,- 0.0000000000000004996004f,0.0000000000000003330669f};
+ float result16R[16]={1.4069394184534917968676f,- 1.7915236034592834091228f,2.3099248310776610004780f,0.5320777350783232328979f,
+ 0.6986579270151970222358f,0.9874373592109859654187f,0.8902400742596190408307f,0.6067035092100719895214f,
+ 0.0466142343271527676007f,0.3821963653954382200695f,1.129789301050062144682f,1.2310339071369393870725f,
+ 0.424502387440284123521f,3.4580528009566289249221f,- 2.1337657344549150195689f,1.0826836628584670663145f};
+ float result16I[16]={-1.4875734535892033427729f,+ 1.8146634352088595321106f,-0.0551064758054355952055f,-0.8617364610492967980093f,
+ + 1.0892397305420760122985f,-1.3287434690517783142383f,+ 0.0403503858667347281575f,+ 0.6309857092212021179023f,
+ + 1.3838992102024216813f,-1.6881931367553519862668f,+ 0.0512659110447117594145f,+ 0.8016790061501579689463f,
+ -0.6500053973791579675634f,+ 0.7929296025459252605927f,-0.0240791515993044047406f,-0.3765416419935233571792f};
+ float resultHerR[16]={- 0.0707459665791660696765f,0.9744491331561414559914f,0.0316695005563280007621f,0.9186825501429138896015f,
+ 0.9744491331561416780360f,1.9318283614573175110962f,- 0.0664515082056250649956f,0.3546926741474874522631f,
+ 0.0316695005563280562733f,- 0.0664515082056250649956f,0.3206743709780528472919f,1.82590946141052867802f,
+ 0.9186825501429141116461f,0.3546926741474875632854f,1.82590946141052867802f,0.9537374500729456361370f};
+ float resultHerI[16]={2.1383917599789858954296f,- 0.5351429414718615884539f,- 1.3567950682942089279948f,0.1340361867044403687554f,
+ - 0.5351429414718615884539f,2.2766753224580762449136f,- 0.6151069729626167381653f,- 1.1421039303668867326280f,
+ - 1.3567950682942089279948f,- 0.6151069729626165161207f,1.2861990290089324595613f,0.4088471998565592624431f,
+ 0.1340361867044403965110f,- 1.1421039303668867326280f,0.4088471998565592624431f,0.5819191957335942966267f};
+
+ floatComplex out4[4],out9[9],out16[16],outHer[16];
+ floatComplex in4[4],in9[9],in16[16],inHer[16];
+
+
+ for(i=0;i<4;i++) in4[i]=FloatComplex(in4D[i],0);
+ for(i=0;i<9;i++) in9[i]=FloatComplex(in9D[i],0);
+ for(i=0;i<16;i++) in16[i]=FloatComplex(in16D[i],0);
+ for(i=0;i<16;i++) inHer[i]=FloatComplex(inHerD[i],0);
+
+
+ clogma(in4,2,out4);
+ clogma(in9,3,out9);
+ clogma(in16,4,out16);
+ clogma(inHer,4,outHer);
+
+
+
+
+ for(i=0;i<4;i++) {
+ assert( fabs(creals(out4[i])-result4R[i]) / fabs(creals(out4[i])) <1e-6);
+ assert( fabs(cimags(out4[i])-result4I[i]) / fabs(cimags(out4[i])) <1e-6);
+ }
+
+ for(i=0;i<9;i++) {
+ assert( fabs(creals(out9[i])-result9R[i]) / fabs(creals(out9[i])) <1e-6);
+ if (cimags(out9[i])>1e-15) assert( fabs(cimags(out9[i])-result9I[i]) / fabs(cimags(out9[i])) <1e-7);
+ else assert(1);
+ }
+
+ /* FIXME : sign pb with the imaginary part below : it's due to the reals eigenvalues which are
+ stored like that : eigenvalues + (-0)*i instead of eigenvalues + 0 *i
+ When we do operations with eigenvalues the sign isn't good
+ */
+
+ for(i=0;i<16;i++) {
+ printf("out[%d] = %f + %f *i ---result = %f + %f *i --- assert : %f + %f*i\n",
+ i,
+ creals(out16[i]),
+ cimags(out16[i]),
+ result16R[i],
+ result16I[i],
+ fabs(creals(out16[i])-result16R[i]) / fabs(creals(out16[i])),
+ fabs(cimags(out16[i])-result16I[i]) / fabs(cimags(out16[i])));
+
+ assert( fabs(creals(out16[i])-result16R[i]) / fabs(creals(out16[i])) <1e-6);
+ assert( fabs(cimags(out16[i])-result16I[i]) / fabs(cimags(out16[i])) <3e-6);
+
+ }
+
+ for(i=0;i<16;i++) {
+ assert( fabs(creals(outHer[i])-resultHerR[i]) / fabs(creals(outHer[i])) <1e-7);
+ assert( fabs(cimags(outHer[i])-resultHerI[i]) / fabs(cimags(outHer[i])) <1e-7);
+ }
+}
+
+static int logmTest(void){
+ slogmaTest();
+ clogmaTest();
+ return 0;
+}
+
+int main (void){
+ assert(logmTest()==0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj b/2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj
new file mode 100644
index 00000000..7b57b301
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{DF3336E6-F783-4577-B014-75D0E0377B3E}</ProjectGuid>
+ <RootNamespace>testDoubleLogm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLogm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj.filters b/2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj.filters
new file mode 100644
index 00000000..44276aae
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/test_DoubleLogm/testDoubleLogm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLogm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj b/2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj
new file mode 100644
index 00000000..91169df2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{BAFD5FA4-3D99-48FF-BBFD-5017207870E7}</ProjectGuid>
+ <RootNamespace>testFloatLogm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLogm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj.filters b/2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj.filters
new file mode 100644
index 00000000..e96ff69e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/test_FloatLogm/testFloatLogm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLogm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/logm/zlogma.c b/2.3-1/src/c/matrixOperations/logm/zlogma.c
new file mode 100644
index 00000000..3fb7b274
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/logm/zlogma.c
@@ -0,0 +1,100 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "lapack.h"
+#include "logm.h"
+#include "log.h"
+#include "matrixMultiplication.h"
+#include "matrixTranspose.h"
+#include "matrixInversion.h"
+#include "max.h"
+#include "conj.h"
+#include "spec.h"
+
+void zlogma (doubleComplex* in, int rows, doubleComplex* out){
+
+ /* Algo : */
+ /* find eigenvalues and eigenvectors */
+ /* use formula
+ * logm = Vp * diag(log(diag(vp)) * inv(Vp) */
+
+
+ int i = 0,j = 0;
+ doubleComplex *eigenvalues, *eigenvectors, *tmp, *tmp2;
+ int hermitienne = 0;
+
+
+ /* Data initialization */
+ eigenvalues = (doubleComplex*) malloc( (unsigned int) (rows*rows)*sizeof(doubleComplex));
+ eigenvectors = (doubleComplex*) malloc( (unsigned int) (rows*rows)*sizeof(doubleComplex));
+ tmp = (doubleComplex*) malloc( (unsigned int) (rows*rows)*sizeof(doubleComplex));
+ tmp2 = (doubleComplex*) malloc( (unsigned int) (rows*rows)*sizeof(doubleComplex));
+
+
+
+
+
+ /* hermitian test */
+ for (i=0;i<rows;i++){
+ for(j=0;j<rows;j++)
+ if ( (zreals(in[i+j*rows])!=zreals(in[j+i*rows])) ||
+ (zimags(in[i+j*rows])!=zimags(in[j+i*rows])) ) break;
+ if (j!=rows) break;
+ }
+ if ((i==rows) && (j==rows)) {
+ hermitienne=0;
+ }
+
+ /* find eigenvalues and eigenvectors */
+ zspec2a(in,rows,eigenvalues,eigenvectors);
+
+
+ /* make operation on eigenvalues and eigenvectors */
+ /*
+ for (i=0;i < rows;i++) {
+ eigenvalues[i+i*rows] = zlogs(eigenvalues[i+i*rows]);
+ }
+ */
+
+ for (i=0;i < rows*rows;i++) {
+ if (zreals(eigenvalues[i]) == 0 && zimags(eigenvalues[i]) == 0) {
+ eigenvalues[i]=DoubleComplex(-0.0, 0.0);
+ }
+ else {
+ eigenvalues[i]=zlogs(eigenvalues[i]);
+ }
+
+ }
+ /*
+ zloga(eigenvalues, rows*rows, eigenvalues);
+ */
+
+ zmulma(eigenvectors, rows, rows, eigenvalues, rows, rows, tmp);
+
+ if (hermitienne) {
+ /* we use eigenvalues as a temporary matrix cause it's useless now*/
+ ztransposea(eigenvectors,rows,rows,eigenvalues);
+ zconja(eigenvalues,rows*rows,tmp2);
+ }
+ else {
+ zinverma(eigenvectors, tmp2, rows);
+ }
+
+ zmulma(tmp, rows, rows, tmp2, rows, rows, out);
+
+
+ free(eigenvalues);
+ free(eigenvectors);
+ free(tmp);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/magnitude/Makefile.am b/2.3-1/src/c/matrixOperations/magnitude/Makefile.am
new file mode 100644
index 00000000..98749646
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/Makefile.am
@@ -0,0 +1,66 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixMagnitude_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixMagnitude.la
+
+HEAD = ../includes/matrixMagnitude.h
+
+libMatrixMagnitude_la_SOURCES = $(HEAD) \
+ smagns.c \
+ smagna.c \
+ dmagns.c \
+ dmagna.c \
+ cmagns.c \
+ cmagna.c \
+ zmagns.c \
+ zmagna.c
+
+#############
+## CHECK ##
+#############
+
+check_PROGRAMS = testDoubleMatrixMagnitude testFloatMatrixMagnitude
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ libMatrixMagnitude.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleMatrixMagnitude_SOURCES = testDoubleMagnitude.c
+testDoubleMatrixMagnitude_LDADD = $(check_LDADD)
+testDoubleMatrixMagnitude_CFLAGS = $(check_INCLUDES)
+
+testFloatMatrixMagnitude_SOURCES = testFloatMagnitude.c
+testFloatMatrixMagnitude_LDADD = $(check_LDADD)
+testFloatMatrixMagnitude_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleMatrixMagnitude testFloatMatrixMagnitude
diff --git a/2.3-1/src/c/matrixOperations/magnitude/Makefile.in b/2.3-1/src/c/matrixOperations/magnitude/Makefile.in
new file mode 100644
index 00000000..4b0f4ee2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/Makefile.in
@@ -0,0 +1,805 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleMatrixMagnitude$(EXEEXT) \
+ testFloatMatrixMagnitude$(EXEEXT)
+TESTS = testDoubleMatrixMagnitude$(EXEEXT) \
+ testFloatMatrixMagnitude$(EXEEXT)
+subdir = src/c/matrixOperations/magnitude
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixMagnitude_la_LIBADD =
+am__objects_1 =
+am_libMatrixMagnitude_la_OBJECTS = $(am__objects_1) \
+ libMatrixMagnitude_la-smagns.lo \
+ libMatrixMagnitude_la-smagna.lo \
+ libMatrixMagnitude_la-dmagns.lo \
+ libMatrixMagnitude_la-dmagna.lo \
+ libMatrixMagnitude_la-cmagns.lo \
+ libMatrixMagnitude_la-cmagna.lo \
+ libMatrixMagnitude_la-zmagns.lo \
+ libMatrixMagnitude_la-zmagna.lo
+libMatrixMagnitude_la_OBJECTS = $(am_libMatrixMagnitude_la_OBJECTS)
+libMatrixMagnitude_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testDoubleMatrixMagnitude_OBJECTS = \
+ testDoubleMatrixMagnitude-testDoubleMagnitude.$(OBJEXT)
+testDoubleMatrixMagnitude_OBJECTS = \
+ $(am_testDoubleMatrixMagnitude_OBJECTS)
+testDoubleMatrixMagnitude_DEPENDENCIES = $(check_LDADD)
+testDoubleMatrixMagnitude_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleMatrixMagnitude_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatMatrixMagnitude_OBJECTS = \
+ testFloatMatrixMagnitude-testFloatMagnitude.$(OBJEXT)
+testFloatMatrixMagnitude_OBJECTS = \
+ $(am_testFloatMatrixMagnitude_OBJECTS)
+testFloatMatrixMagnitude_DEPENDENCIES = $(check_LDADD)
+testFloatMatrixMagnitude_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatMatrixMagnitude_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixMagnitude_la_SOURCES) \
+ $(testDoubleMatrixMagnitude_SOURCES) \
+ $(testFloatMatrixMagnitude_SOURCES)
+DIST_SOURCES = $(libMatrixMagnitude_la_SOURCES) \
+ $(testDoubleMatrixMagnitude_SOURCES) \
+ $(testFloatMatrixMagnitude_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixMagnitude_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixMagnitude.la
+HEAD = ../includes/matrixMagnitude.h
+libMatrixMagnitude_la_SOURCES = $(HEAD) \
+ smagns.c \
+ smagna.c \
+ dmagns.c \
+ dmagna.c \
+ cmagns.c \
+ cmagna.c \
+ zmagns.c \
+ zmagna.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ libMatrixMagnitude.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleMatrixMagnitude_SOURCES = testDoubleMagnitude.c
+testDoubleMatrixMagnitude_LDADD = $(check_LDADD)
+testDoubleMatrixMagnitude_CFLAGS = $(check_INCLUDES)
+testFloatMatrixMagnitude_SOURCES = testFloatMagnitude.c
+testFloatMatrixMagnitude_LDADD = $(check_LDADD)
+testFloatMatrixMagnitude_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/magnitude/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/magnitude/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixMagnitude.la: $(libMatrixMagnitude_la_OBJECTS) $(libMatrixMagnitude_la_DEPENDENCIES)
+ $(libMatrixMagnitude_la_LINK) -rpath $(pkglibdir) $(libMatrixMagnitude_la_OBJECTS) $(libMatrixMagnitude_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMatrixMagnitude$(EXEEXT): $(testDoubleMatrixMagnitude_OBJECTS) $(testDoubleMatrixMagnitude_DEPENDENCIES)
+ @rm -f testDoubleMatrixMagnitude$(EXEEXT)
+ $(testDoubleMatrixMagnitude_LINK) $(testDoubleMatrixMagnitude_OBJECTS) $(testDoubleMatrixMagnitude_LDADD) $(LIBS)
+testFloatMatrixMagnitude$(EXEEXT): $(testFloatMatrixMagnitude_OBJECTS) $(testFloatMatrixMagnitude_DEPENDENCIES)
+ @rm -f testFloatMatrixMagnitude$(EXEEXT)
+ $(testFloatMatrixMagnitude_LINK) $(testFloatMatrixMagnitude_OBJECTS) $(testFloatMatrixMagnitude_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-cmagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-cmagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-dmagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-dmagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-smagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-smagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-zmagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMagnitude_la-zmagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixMagnitude_la-smagns.lo: smagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-smagns.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-smagns.Tpo -c -o libMatrixMagnitude_la-smagns.lo `test -f 'smagns.c' || echo '$(srcdir)/'`smagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-smagns.Tpo $(DEPDIR)/libMatrixMagnitude_la-smagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smagns.c' object='libMatrixMagnitude_la-smagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-smagns.lo `test -f 'smagns.c' || echo '$(srcdir)/'`smagns.c
+
+libMatrixMagnitude_la-smagna.lo: smagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-smagna.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-smagna.Tpo -c -o libMatrixMagnitude_la-smagna.lo `test -f 'smagna.c' || echo '$(srcdir)/'`smagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-smagna.Tpo $(DEPDIR)/libMatrixMagnitude_la-smagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smagna.c' object='libMatrixMagnitude_la-smagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-smagna.lo `test -f 'smagna.c' || echo '$(srcdir)/'`smagna.c
+
+libMatrixMagnitude_la-dmagns.lo: dmagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-dmagns.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-dmagns.Tpo -c -o libMatrixMagnitude_la-dmagns.lo `test -f 'dmagns.c' || echo '$(srcdir)/'`dmagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-dmagns.Tpo $(DEPDIR)/libMatrixMagnitude_la-dmagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmagns.c' object='libMatrixMagnitude_la-dmagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-dmagns.lo `test -f 'dmagns.c' || echo '$(srcdir)/'`dmagns.c
+
+libMatrixMagnitude_la-dmagna.lo: dmagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-dmagna.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-dmagna.Tpo -c -o libMatrixMagnitude_la-dmagna.lo `test -f 'dmagna.c' || echo '$(srcdir)/'`dmagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-dmagna.Tpo $(DEPDIR)/libMatrixMagnitude_la-dmagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmagna.c' object='libMatrixMagnitude_la-dmagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-dmagna.lo `test -f 'dmagna.c' || echo '$(srcdir)/'`dmagna.c
+
+libMatrixMagnitude_la-cmagns.lo: cmagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-cmagns.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-cmagns.Tpo -c -o libMatrixMagnitude_la-cmagns.lo `test -f 'cmagns.c' || echo '$(srcdir)/'`cmagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-cmagns.Tpo $(DEPDIR)/libMatrixMagnitude_la-cmagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmagns.c' object='libMatrixMagnitude_la-cmagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-cmagns.lo `test -f 'cmagns.c' || echo '$(srcdir)/'`cmagns.c
+
+libMatrixMagnitude_la-cmagna.lo: cmagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-cmagna.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-cmagna.Tpo -c -o libMatrixMagnitude_la-cmagna.lo `test -f 'cmagna.c' || echo '$(srcdir)/'`cmagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-cmagna.Tpo $(DEPDIR)/libMatrixMagnitude_la-cmagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmagna.c' object='libMatrixMagnitude_la-cmagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-cmagna.lo `test -f 'cmagna.c' || echo '$(srcdir)/'`cmagna.c
+
+libMatrixMagnitude_la-zmagns.lo: zmagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-zmagns.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-zmagns.Tpo -c -o libMatrixMagnitude_la-zmagns.lo `test -f 'zmagns.c' || echo '$(srcdir)/'`zmagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-zmagns.Tpo $(DEPDIR)/libMatrixMagnitude_la-zmagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmagns.c' object='libMatrixMagnitude_la-zmagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-zmagns.lo `test -f 'zmagns.c' || echo '$(srcdir)/'`zmagns.c
+
+libMatrixMagnitude_la-zmagna.lo: zmagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixMagnitude_la-zmagna.lo -MD -MP -MF $(DEPDIR)/libMatrixMagnitude_la-zmagna.Tpo -c -o libMatrixMagnitude_la-zmagna.lo `test -f 'zmagna.c' || echo '$(srcdir)/'`zmagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMagnitude_la-zmagna.Tpo $(DEPDIR)/libMatrixMagnitude_la-zmagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmagna.c' object='libMatrixMagnitude_la-zmagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixMagnitude_la-zmagna.lo `test -f 'zmagna.c' || echo '$(srcdir)/'`zmagna.c
+
+testDoubleMatrixMagnitude-testDoubleMagnitude.o: testDoubleMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMagnitude_CFLAGS) $(CFLAGS) -MT testDoubleMatrixMagnitude-testDoubleMagnitude.o -MD -MP -MF $(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Tpo -c -o testDoubleMatrixMagnitude-testDoubleMagnitude.o `test -f 'testDoubleMagnitude.c' || echo '$(srcdir)/'`testDoubleMagnitude.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Tpo $(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMagnitude.c' object='testDoubleMatrixMagnitude-testDoubleMagnitude.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMagnitude_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixMagnitude-testDoubleMagnitude.o `test -f 'testDoubleMagnitude.c' || echo '$(srcdir)/'`testDoubleMagnitude.c
+
+testDoubleMatrixMagnitude-testDoubleMagnitude.obj: testDoubleMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMagnitude_CFLAGS) $(CFLAGS) -MT testDoubleMatrixMagnitude-testDoubleMagnitude.obj -MD -MP -MF $(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Tpo -c -o testDoubleMatrixMagnitude-testDoubleMagnitude.obj `if test -f 'testDoubleMagnitude.c'; then $(CYGPATH_W) 'testDoubleMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMagnitude.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Tpo $(DEPDIR)/testDoubleMatrixMagnitude-testDoubleMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMagnitude.c' object='testDoubleMatrixMagnitude-testDoubleMagnitude.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMagnitude_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixMagnitude-testDoubleMagnitude.obj `if test -f 'testDoubleMagnitude.c'; then $(CYGPATH_W) 'testDoubleMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMagnitude.c'; fi`
+
+testFloatMatrixMagnitude-testFloatMagnitude.o: testFloatMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMagnitude_CFLAGS) $(CFLAGS) -MT testFloatMatrixMagnitude-testFloatMagnitude.o -MD -MP -MF $(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Tpo -c -o testFloatMatrixMagnitude-testFloatMagnitude.o `test -f 'testFloatMagnitude.c' || echo '$(srcdir)/'`testFloatMagnitude.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Tpo $(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMagnitude.c' object='testFloatMatrixMagnitude-testFloatMagnitude.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMagnitude_CFLAGS) $(CFLAGS) -c -o testFloatMatrixMagnitude-testFloatMagnitude.o `test -f 'testFloatMagnitude.c' || echo '$(srcdir)/'`testFloatMagnitude.c
+
+testFloatMatrixMagnitude-testFloatMagnitude.obj: testFloatMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMagnitude_CFLAGS) $(CFLAGS) -MT testFloatMatrixMagnitude-testFloatMagnitude.obj -MD -MP -MF $(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Tpo -c -o testFloatMatrixMagnitude-testFloatMagnitude.obj `if test -f 'testFloatMagnitude.c'; then $(CYGPATH_W) 'testFloatMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMagnitude.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Tpo $(DEPDIR)/testFloatMatrixMagnitude-testFloatMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMagnitude.c' object='testFloatMatrixMagnitude-testFloatMagnitude.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMagnitude_CFLAGS) $(CFLAGS) -c -o testFloatMatrixMagnitude-testFloatMagnitude.obj `if test -f 'testFloatMagnitude.c'; then $(CYGPATH_W) 'testFloatMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMagnitude.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/magnitude/cmagna.c b/2.3-1/src/c/matrixOperations/magnitude/cmagna.c
new file mode 100644
index 00000000..bf505b10
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/cmagna.c
@@ -0,0 +1,44 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+
+float cmagna(floatComplex* in, int rows, int cols){
+ int i=0,j=0;
+ float out=0, colSum=0;
+
+ /* Other method :
+ crowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += cmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += cmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/cmagns.c b/2.3-1/src/c/matrixOperations/magnitude/cmagns.c
new file mode 100644
index 00000000..78d773b7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/cmagns.c
@@ -0,0 +1,23 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+#include "abs.h"
+
+float cmagns(floatComplex in){
+ return cabss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/dmagna.c b/2.3-1/src/c/matrixOperations/magnitude/dmagna.c
new file mode 100644
index 00000000..21e4d9eb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/dmagna.c
@@ -0,0 +1,43 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+
+double dmagna(double* in, int rows, int cols){
+ int i=0,j=0;
+ double out=0, colSum=0;
+
+ /* Other method :
+ drowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += dmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += dmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/dmagns.c b/2.3-1/src/c/matrixOperations/magnitude/dmagns.c
new file mode 100644
index 00000000..d651cacf
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/dmagns.c
@@ -0,0 +1,23 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+#include "abs.h"
+
+double dmagns(double in){
+ return dabss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/i16magna.c b/2.3-1/src/c/matrixOperations/magnitude/i16magna.c
new file mode 100644
index 00000000..193d2377
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/i16magna.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#include "matrixMagnitude.h"
+
+int16 i16magna(int16* in, int rows, int cols){
+ int i=0,j=0;
+ int16 out=0, colSum=0;
+
+ /* Other method :
+ drowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += dmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += dmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/i16magns.c b/2.3-1/src/c/matrixOperations/magnitude/i16magns.c
new file mode 100644
index 00000000..44800ca6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/i16magns.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#include "matrixMagnitude.h"
+#include "abs.h"
+
+int16 i16magns(int16 in){
+ return i16abss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/i8magna.c b/2.3-1/src/c/matrixOperations/magnitude/i8magna.c
new file mode 100644
index 00000000..8de96b74
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/i8magna.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#include "matrixMagnitude.h"
+
+int8 i8magna(int8* in, int rows, int cols){
+ int i=0,j=0;
+ int8 out=0, colSum=0;
+
+ /* Other method :
+ drowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += dmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += dmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/i8magns.c b/2.3-1/src/c/matrixOperations/magnitude/i8magns.c
new file mode 100644
index 00000000..a13ae3d6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/i8magns.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#include "matrixMagnitude.h"
+#include "abs.h"
+
+int8 i8magns(int8 in){
+ return i8abss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/smagna.c b/2.3-1/src/c/matrixOperations/magnitude/smagna.c
new file mode 100644
index 00000000..761baf8e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/smagna.c
@@ -0,0 +1,45 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+
+float smagna(float* in, int rows, int cols){
+ int i=0,j=0;
+ float out=0, colSum=0;
+
+
+ /* Other method :
+ srowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += smagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += smagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/smagns.c b/2.3-1/src/c/matrixOperations/magnitude/smagns.c
new file mode 100644
index 00000000..3ccf383a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/smagns.c
@@ -0,0 +1,23 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+#include "abs.h"
+
+float smagns(float in){
+ return sabss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/testDoubleMagnitude.c b/2.3-1/src/c/matrixOperations/magnitude/testDoubleMagnitude.c
new file mode 100644
index 00000000..14189d2b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/testDoubleMagnitude.c
@@ -0,0 +1,192 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include "matrixMagnitude.h"
+#include <stdio.h>
+static void dmagnsTest(void){
+ double in[11]={-5,-4,-3,-2,-1,0,1,2,3,4,5};
+ double res[11]={5,4,3,2,1,0,1,2,3,4,5};
+ double out;
+ int i;
+
+ for (i=0;i<11;i++) {
+ out=dmagns(in[i]);
+ if (out==0) assert( fabs(out-res[i])==0);
+ else assert( fabs(out-res[i])/fabs(out)==0);
+ }
+}
+
+
+static void zmagnsTest(void){
+ double inR[8] = {0.3493615407496690750122,0.9222898678854107856751,- 0.8906224733218550682068,- 0.3435337245464324951172, \
+ 0.5896177329123020172119,0.5896177329123020172119,- 0.5896177329123020172119,- 0.5896177329123020172119};
+ double inI[8] = { 0.3873778772540390491486,0.9488184261135756969452,0.5042212805710732936859,- 0.3760118731297552585602, \
+ 0.6853979662992060184479,- 0.6853979662992060184479,0.6853979662992060184479,- 0.6853979662992060184479};
+ double res[8] = {0.5216465335270885628205,1.3232063354355325657252,1.0234488212737711254618, 0.5093136053899318671512, \
+ 0.9041125168759308605715,0.9041125168759308605715,0.9041125168759308605715,0.9041125168759308605715};
+ int i;
+ double out;
+ doubleComplex in;
+
+ for (i=0;i<8;i++) {
+ in = DoubleComplex(inR[i],inI[i]);
+ out=zmagns(in);
+ assert( fabs(out-res[i])/fabs(out)<3e-16);
+ }
+}
+
+
+static void dmagnaTest(void){
+ double in1[12] = {0.2017172696068882942200,0.3911573919467628002167,0.8300316557288169860840,\
+ 0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+ 0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+ 0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
+ double in2[12] = {0.2017172696068882942200,0.8400885667651891708374,0.3911573919467628002167,\
+ 0.1205995907075703144074,0.8300316557288169860840,0.2855364168062806129456,\
+ 0.5878720157779753208160,0.8607514644972980022430,0.4829179299995303153992,\
+ 0.8494101651012897491455,0.2232865034602582454681,0.5257060811854898929596};
+ double in3[12] = {0.2017172696068882942200,0.4829179299995303153992,0.2855364168062806129456,\
+ 0.3911573919467628002167,0.2232865034602582454681,0.8607514644972980022430,\
+ 0.8300316557288169860840,0.8400885667651891708374,0.8494101651012897491455,\
+ 0.5878720157779753208160,0.1205995907075703144074,0.5257060811854898929596};
+ double in4[12] = {0.2017172696068882942200,0.5878720157779753208160,0.8400885667651891708374,\
+ 0.8607514644972980022430,0.3911573919467628002167,0.4829179299995303153992,\
+ 0.1205995907075703144074,0.8494101651012897491455,0.8300316557288169860840,\
+ 0.2232865034602582454681,0.2855364168062806129456,0.5257060811854898929596};
+ double in5[12] = {0.2017172696068882942200,0.8300316557288169860840,0.4829179299995303153992,\
+ 0.8400885667651891708374,0.2855364168062806129456,0.8494101651012897491455,\
+ 0.3911573919467628002167,0.5878720157779753208160,0.2232865034602582454681,\
+ 0.1205995907075703144074,0.8607514644972980022430,0.5257060811854898929596};
+ double in6[12] = {0.2017172696068882942200,0.3911573919467628002167,0.8300316557288169860840,\
+0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
+ double res[6] = {6.1990750515833497047424,1.448623480275273323059,2.5195303875952959060669,\
+ 2.4904293166473507881165,3.4897020040079951286316,6.1990750515833497047424};
+ double out1,out2,out3,out4,out5,out6;
+
+ out1=dmagna(in1,1,12);
+ out2=dmagna(in2,2,6);
+ out3=dmagna(in3,3,4);
+ out4=dmagna(in4,4,3);
+ out5=dmagna(in5,6,2);
+ out6=dmagna(in6,12,1);
+
+
+ assert( fabs(out1-res[0])/fabs(out1)<1e-16);
+ assert( fabs(out2-res[1])/fabs(out2)<1e-16);
+ assert( fabs(out3-res[2])/fabs(out3)<1e-16);
+ assert( fabs(out4-res[3])/fabs(out4)<1e-16);
+ assert( fabs(out5-res[4])/fabs(out5)<1e-16);
+ assert( fabs(out6-res[5])/fabs(out6)<1e-16);
+
+}
+
+
+static void zmagnaTest(void){
+ double inr1[12] = {0.2017172696068882942200,0.3911573919467628002167,0.8300316557288169860840,\
+ 0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+ 0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+ 0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
+
+ double inr2[12] = {0.2017172696068882942200,0.8400885667651891708374,0.3911573919467628002167,\
+ 0.1205995907075703144074,0.8300316557288169860840,0.2855364168062806129456,\
+ 0.5878720157779753208160,0.8607514644972980022430,0.4829179299995303153992,\
+ 0.8494101651012897491455,0.2232865034602582454681,0.5257060811854898929596};
+
+ double inr3[12] = {0.2017172696068882942200,0.4829179299995303153992,0.2855364168062806129456,\
+ 0.3911573919467628002167,0.2232865034602582454681,0.8607514644972980022430,\
+ 0.8300316557288169860840,0.8400885667651891708374,0.8494101651012897491455,\
+ 0.5878720157779753208160,0.1205995907075703144074,0.5257060811854898929596};
+
+ double inr4[12] = {0.2017172696068882942200,0.5878720157779753208160,0.8400885667651891708374,\
+ 0.8607514644972980022430,0.3911573919467628002167,0.4829179299995303153992,\
+ 0.1205995907075703144074,0.8494101651012897491455,0.8300316557288169860840,\
+ 0.2232865034602582454681,0.2855364168062806129456,0.5257060811854898929596};
+
+ double inr5[12] = {0.2017172696068882942200,0.8300316557288169860840,0.4829179299995303153992,\
+ 0.8400885667651891708374,0.2855364168062806129456,0.8494101651012897491455,\
+ 0.3911573919467628002167,0.5878720157779753208160,0.2232865034602582454681,\
+ 0.1205995907075703144074,0.8607514644972980022430,0.5257060811854898929596};
+
+ double inr6[12] = {0.2017172696068882942200,0.3911573919467628002167,0.8300316557288169860840,\
+ 0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+ 0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+ 0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
+
+ double in7[12]={0};
+
+ double res[6] = {6.1990750515833497047424,1.448623480275273323059,2.5195303875952959060669,\
+ 2.4904293166473507881165,3.4897020040079951286316,6.1990750515833497047424};
+
+ double inR[12] = {0.9931209897622466087341,0.6488562873564660549164,0.9923190940171480178833,\
+ 0.0500419777818024158478,\
+ 0.7485506581142544746399,0.4104058998636901378632,0.6084526330232620239258,\
+ 0.8544210889376699924469,\
+ 0.0642646728083491325378,0.8279082938097417354584,0.9262343775480985641480,\
+ 0.5667211269028484821320};
+ double inI[12] = {0.5711638936772942543030,0.8160110483877360820770,0.0568927936255931854248,\
+ 0.5595936686731874942780,\
+ 0.1249340316280722618103,0.7279222286306321620941,0.2677766475826501846314,\
+ 0.5465334919281303882599,\
+ 0.9885407658293843269348,0.7395656588487327098846,0.0037173107266426086426,\
+ 0.5900572859682142734528};
+ double result = 3.8451319979533651327586;
+
+ double out1,out2,out3,out4,out5,out6;
+ double out;
+ doubleComplex* in,*in1,*in2,*in3,*in4,*in5,*in6;
+
+ in=DoubleComplexMatrix(inR,inI,12);
+ out = zmagna(in, 4,3);
+ assert(fabs(out-result)/fabs(out) <1e-16);
+
+
+ in1=DoubleComplexMatrix(inr1,in7,12);
+ in2=DoubleComplexMatrix(inr2,in7,12);
+ in3=DoubleComplexMatrix(inr3,in7,12);
+ in4=DoubleComplexMatrix(inr4,in7,12);
+ in5=DoubleComplexMatrix(inr5,in7,12);
+ in6=DoubleComplexMatrix(inr6,in7,12);
+
+ out1=zmagna(in1,1,12);
+ out2=zmagna(in2,2,6);
+ out3=zmagna(in3,3,4);
+ out4=zmagna(in4,4,3);
+ out5=zmagna(in5,6,2);
+ out6=zmagna(in6,12,1);
+
+ assert( fabs(out1-res[0])/fabs(out1)<1e-16);
+ assert( fabs(out2-res[1])/fabs(out2)<1e-16);
+ assert( fabs(out3-res[2])/fabs(out3)<1e-16);
+ assert( fabs(out4-res[3])/fabs(out4)<1e-16);
+ assert( fabs(out5-res[4])/fabs(out5)<1e-16);
+ assert( fabs(out6-res[5])/fabs(out6)<1e-16);
+}
+
+
+static int magnTest(void){
+ printf("\n >>> Double Magnitude Tests <<< \n");
+ dmagnsTest();
+ dmagnaTest();
+ zmagnsTest();
+ zmagnaTest();
+ return 0;
+}
+
+int main (void){
+ assert (magnTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/magnitude/testFloatMagnitude.c b/2.3-1/src/c/matrixOperations/magnitude/testFloatMagnitude.c
new file mode 100644
index 00000000..441d2600
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/testFloatMagnitude.c
@@ -0,0 +1,183 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include "matrixMagnitude.h"
+#include <stdio.h>
+
+static void smagnsTest(void){
+ float in[11]={-5.0f,-4.0f,-3.0f,-2.0f,-1.0f,0.0f,1.0f,2.0f,3.0f,4.0f,5.0f};
+ float res[11]={5.0f,4.0f,3.0f,2.0f,1.0f,0.0f,1.0f,2.0f,3.0f,4.0f,5.0f};
+ float out;
+ int i;
+
+ for (i=0;i<11;i++) {
+ out=smagns(in[i]);
+ if (out==0) assert( fabs(out-res[i])==0);
+ else assert( fabs(out-res[i])/fabs(out)==0);
+ }
+}
+
+
+static void cmagnsTest(void){
+ float inR[8] = {0.3493615407496690750122f,0.9222898678854107856751f,- 0.8906224733218550682068f,- 0.3435337245464324951172f, \
+ 0.5896177329123020172119f,0.5896177329123020172119f,- 0.5896177329123020172119f,- 0.5896177329123020172119f};
+ float inI[8] = { 0.3873778772540390491486f,0.9488184261135756969452f,0.5042212805710732936859f,- 0.3760118731297552585602f, \
+ 0.6853979662992060184479f,- 0.6853979662992060184479f,0.6853979662992060184479f,- 0.6853979662992060184479f};
+ float res[8] = {0.5216465335270885628205f,1.3232063354355325657252f,1.0234488212737711254618f, 0.5093136053899318671512f, \
+ 0.9041125168759308605715f,0.9041125168759308605715f,0.9041125168759308605715f,0.9041125168759308605715f};
+ int i;
+ float out;
+ floatComplex in;
+
+ for (i=0;i<8;i++) {
+ in = FloatComplex(inR[i],inI[i]);
+ out=cmagns(in);
+ assert( fabs(out-res[i])/fabs(out)<1e-6);
+ }
+}
+
+
+static void smagnaTest(void){
+ float in1[12] = {0.2017172696068882942200f,0.3911573919467628002167f,0.8300316557288169860840f,\
+ 0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+ 0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+ 0.8607514644972980022430f,0.8494101651012897491455f,0.5257060811854898929596f};
+ float in2[12] = {0.2017172696068882942200f,0.8400885667651891708374f,0.3911573919467628002167f,\
+ 0.1205995907075703144074f,0.8300316557288169860840f,0.2855364168062806129456f,\
+ 0.5878720157779753208160f,0.8607514644972980022430f,0.4829179299995303153992f,\
+ 0.8494101651012897491455f,0.2232865034602582454681f,0.5257060811854898929596f};
+ float in3[12] = {0.2017172696068882942200f,0.4829179299995303153992f,0.2855364168062806129456f,\
+ 0.3911573919467628002167f,0.2232865034602582454681f,0.8607514644972980022430f,\
+ 0.8300316557288169860840f,0.8400885667651891708374f,0.8494101651012897491455f,\
+ 0.5878720157779753208160f,0.1205995907075703144074f,0.5257060811854898929596f};
+ float in4[12] = {0.2017172696068882942200f,0.5878720157779753208160f,0.8400885667651891708374f,\
+ 0.8607514644972980022430f,0.3911573919467628002167f,0.4829179299995303153992f,\
+ 0.1205995907075703144074f,0.8494101651012897491455f,0.8300316557288169860840f,\
+ 0.2232865034602582454681f,0.2855364168062806129456f,0.5257060811854898929596f};
+ float in5[12] = {0.2017172696068882942200f,0.8300316557288169860840f,0.4829179299995303153992f,\
+ 0.8400885667651891708374f,0.2855364168062806129456f,0.8494101651012897491455f,\
+ 0.3911573919467628002167f,0.5878720157779753208160f,0.2232865034602582454681f,\
+ 0.1205995907075703144074f,0.8607514644972980022430f,0.5257060811854898929596f};
+ float in6[12] = {0.2017172696068882942200f,0.3911573919467628002167f,0.8300316557288169860840f,\
+0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+0.8607514644972980022430f,0.8494101651012897491455f,0.5257060811854898929596f};
+ float res[6] = {6.1990750515833497047424f,1.448623480275273323059f,2.5195303875952959060669f,\
+ 2.4904293166473507881165f,3.4897020040079951286316f,6.1990750515833497047424f};
+ float out1,out2,out3,out4,out5,out6;
+
+ out1=smagna(in1,1,12);
+ out2=smagna(in2,2,6);
+ out3=smagna(in3,3,4);
+ out4=smagna(in4,4,3);
+ out5=smagna(in5,6,2);
+ out6=smagna(in6,12,1);
+
+ assert( fabs(out1-res[0])/fabs(out1)<1e-6);
+ assert( fabs(out2-res[1])/fabs(out2)<1e-6);
+ assert( fabs(out3-res[2])/fabs(out3)<1e-6);
+ assert( fabs(out4-res[3])/fabs(out4)<1e-6);
+ assert( fabs(out5-res[4])/fabs(out5)<1e-6);
+ assert( fabs(out6-res[5])/fabs(out6)<1e-6);
+}
+
+
+static void cmagnaTest(void){
+ float inR[12] = {0.9931209897622466087341f,0.6488562873564660549164f,0.9923190940171480178833f, \
+ 0.0500419777818024158478f,\
+0.7485506581142544746399f,0.4104058998636901378632f,0.6084526330232620239258f,\
+ 0.8544210889376699924469f,\
+0.0642646728083491325378f,0.8279082938097417354584f,0.9262343775480985641480f,\
+ 0.5667211269028484821320f};
+ float inI[12] = {0.5711638936772942543030f,0.8160110483877360820770f,0.0568927936255931854248f, \
+ 0.5595936686731874942780f,\
+0.1249340316280722618103f,0.7279222286306321620941f,0.2677766475826501846314f,\
+ 0.5465334919281303882599f,\
+0.9885407658293843269348f,0.7395656588487327098846f,0.0037173107266426086426f,\
+ 0.5900572859682142734528f};
+ float result = 3.8451319979533651327586f;
+
+ float in1[12] = {0.2017172696068882942200f,0.3911573919467628002167f,0.8300316557288169860840f,\
+ 0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+ 0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+ 0.8607514644972980022430f,0.8494101651012897491455f,0.5257060811854898929596f};
+ float in2[12] = {0.2017172696068882942200f,0.8400885667651891708374f,0.3911573919467628002167f,\
+ 0.1205995907075703144074f,0.8300316557288169860840f,0.2855364168062806129456f,\
+ 0.5878720157779753208160f,0.8607514644972980022430f,0.4829179299995303153992f,\
+ 0.8494101651012897491455f,0.2232865034602582454681f,0.5257060811854898929596f};
+ float in3[12] = {0.2017172696068882942200f,0.4829179299995303153992f,0.2855364168062806129456f,\
+ 0.3911573919467628002167f,0.2232865034602582454681f,0.8607514644972980022430f,\
+ 0.8300316557288169860840f,0.8400885667651891708374f,0.8494101651012897491455f,\
+ 0.5878720157779753208160f,0.1205995907075703144074f,0.5257060811854898929596f};
+ float in4[12] = {0.2017172696068882942200f,0.5878720157779753208160f,0.8400885667651891708374f,\
+ 0.8607514644972980022430f,0.3911573919467628002167f,0.4829179299995303153992f,\
+ 0.1205995907075703144074f,0.8494101651012897491455f,0.8300316557288169860840f,\
+ 0.2232865034602582454681f,0.2855364168062806129456f,0.5257060811854898929596f};
+ float in5[12] = {0.2017172696068882942200f,0.8300316557288169860840f,0.4829179299995303153992f,\
+ 0.8400885667651891708374f,0.2855364168062806129456f,0.8494101651012897491455f,\
+ 0.3911573919467628002167f,0.5878720157779753208160f,0.2232865034602582454681f,\
+ 0.1205995907075703144074f,0.8607514644972980022430f,0.5257060811854898929596f};
+ float in6[12] = {0.2017172696068882942200f,0.3911573919467628002167f,0.8300316557288169860840f,\
+ 0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+ 0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+ 0.8607514644972980022430f,0.8494101651012897491455f,0.5257060811854898929596f};
+ float in7[12] = {0};
+ float res[6] = {6.1990750515833497047424f,1.448623480275273323059f,2.5195303875952959060669f,\
+ 2.4904293166473507881165f,3.4897020040079951286316f,6.1990750515833497047424f};
+ float out;
+ floatComplex *in;
+ floatComplex *In1,*In2,*In3,*In4,*In5,*In6;
+ float out1,out2,out3,out4,out5,out6;
+
+ in=FloatComplexMatrix(inR,inI,12);
+ out = cmagna(in, 4,3);
+ assert(fabs(out-result)/fabs(out) <1e-6);
+
+
+ In1=FloatComplexMatrix(in1,in7,12);
+ In2=FloatComplexMatrix(in2,in7,12);
+ In3=FloatComplexMatrix(in3,in7,12);
+ In4=FloatComplexMatrix(in4,in7,12);
+ In5=FloatComplexMatrix(in5,in7,12);
+ In6=FloatComplexMatrix(in6,in7,12);
+ out1=cmagna(In1,1,12);
+ out2=cmagna(In2,2,6);
+ out3=cmagna(In3,3,4);
+ out4=cmagna(In4,4,3);
+ out5=cmagna(In5,6,2);
+ out6=cmagna(In6,12,1);
+ assert( fabs(out1-res[0])/fabs(out1)<1e-6);
+ assert( fabs(out2-res[1])/fabs(out2)<1e-6);
+ assert( fabs(out3-res[2])/fabs(out3)<1e-6);
+ assert( fabs(out4-res[3])/fabs(out4)<1e-6);
+ assert( fabs(out5-res[4])/fabs(out5)<1e-6);
+ assert( fabs(out6-res[5])/fabs(out6)<1e-6);
+}
+
+
+
+static int magnTest(void){
+ printf("\n >>> Float Magnitude Tests <<< \n");
+ smagnsTest();
+ smagnaTest();
+ cmagnsTest();
+ cmagnaTest();
+ return 0;
+}
+
+int main (void){
+ assert (magnTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj b/2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj
new file mode 100644
index 00000000..ae847606
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{818553D4-0DEF-4BBE-A43A-45611DD84580}</ProjectGuid>
+ <RootNamespace>testDoubleMagnitude</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMagnitude.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj.filters b/2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj.filters
new file mode 100644
index 00000000..2fa7f702
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/test_DoubleMagnitude/testDoubleMagnitude.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMagnitude.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj b/2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj
new file mode 100644
index 00000000..710b616e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{1E12C5A2-EDF1-47BB-A2EF-60A288DC278D}</ProjectGuid>
+ <RootNamespace>testFloatMagnitude</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMagnitude.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj.filters b/2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj.filters
new file mode 100644
index 00000000..4ec3a5f9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/test_FloatMagnitude/testFloatMagnitude.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMagnitude.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/magnitude/u16magna.c b/2.3-1/src/c/matrixOperations/magnitude/u16magna.c
new file mode 100644
index 00000000..10680c77
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/u16magna.c
@@ -0,0 +1,33 @@
+/* SCilab2C FOSSEE IIT BOMBAY */
+
+
+
+#include "matrixMagnitude.h"
+
+uint16 u16magna(uint16* in, int rows, int cols){
+ int i=0,j=0;
+ uint16 out=0, colSum=0;
+
+ /* Other method :
+ drowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += dmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += dmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/u16magns.c b/2.3-1/src/c/matrixOperations/magnitude/u16magns.c
new file mode 100644
index 00000000..78853edc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/u16magns.c
@@ -0,0 +1,13 @@
+
+/* SCilab2C FOSSEE IIT BOMBAY */
+
+
+
+#include "matrixMagnitude.h"
+#include "abs.h"
+
+uint16 u16magns(uint16 in){
+ return u16abss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/u8magna.c b/2.3-1/src/c/matrixOperations/magnitude/u8magna.c
new file mode 100644
index 00000000..7f5df582
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/u8magna.c
@@ -0,0 +1,33 @@
+/* SCilab2C FOSSEE IIT BOMBAY */
+
+
+
+#include "matrixMagnitude.h"
+
+uint8 u8magna(uint8* in, int rows, int cols){
+ int i=0,j=0;
+ uint8 out=0, colSum=0;
+
+ /* Other method :
+ drowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += dmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += dmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/u8magns.c b/2.3-1/src/c/matrixOperations/magnitude/u8magns.c
new file mode 100644
index 00000000..e6d789ca
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/u8magns.c
@@ -0,0 +1,13 @@
+
+/* SCilab2C FOSSEE IIT BOMBAY */
+
+
+
+#include "matrixMagnitude.h"
+#include "abs.h"
+
+uint8 u8magns(uint8 in){
+ return u8abss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/zmagna.c b/2.3-1/src/c/matrixOperations/magnitude/zmagna.c
new file mode 100644
index 00000000..8982da1f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/zmagna.c
@@ -0,0 +1,46 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+
+double zmagna(doubleComplex* in, int rows, int cols){
+ int i=0,j=0;
+ double out=0, colSum=0;
+
+
+ /* Other method :
+ zrowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+
+
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += zmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += zmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
+ }
+ }
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/magnitude/zmagns.c b/2.3-1/src/c/matrixOperations/magnitude/zmagns.c
new file mode 100644
index 00000000..5f132aa0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/magnitude/zmagns.c
@@ -0,0 +1,23 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixMagnitude.h"
+#include "abs.h"
+
+double zmagns(doubleComplex in){
+ return zabss(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/matrixOperations.vcxproj b/2.3-1/src/c/matrixOperations/matrixOperations.vcxproj
new file mode 100644
index 00000000..db4a828d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/matrixOperations.vcxproj
@@ -0,0 +1,934 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FD335544-52BF-4736-A34E-77F591D158D5}</ProjectGuid>
+ <RootNamespace>matrixOperations</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../../../includes;../type;../elementaryFunctions/includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MATRIXOPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../../../includes;../type;../elementaryFunctions/includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MATRIXOPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../../../includes;../type;../elementaryFunctions/includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MATRIXOPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../../../includes;../type;../elementaryFunctions/includes;../operations/includes;../auxiliaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MATRIXOPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="cat\ccata.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\ccats.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\dcata.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\dcats.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\scata.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\scats.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\zcata.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="cat\zcats.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="chol\cchola.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="chol\dchola.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="chol\dchols.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="chol\schola.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="chol\schols.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="chol\zchola.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="determ\cdeterma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="determ\ddeterma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="determ\sdeterma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="determ\zdeterma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\cldivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\crdivcsv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\crdivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\crdivscv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\crdivv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\dldivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\drdivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\drdivv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\sldivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\srdivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\srdivv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zldivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zrdivdzv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zrdivma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zrdivv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zrdivzdv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="expm\cexpma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="expm\dexpma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="expm\sexpma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="expm\zexpma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="eye\ceyea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="eye\deyea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="eye\seyea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="eye\zeyea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fill\cfilla.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fill\dfilla.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fill\sfilla.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fill\zfilla.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="hilb\dhilba.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="hilb\shilba.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\cinfnorma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\dinfnorma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\sinfnorma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\zinfnorma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="inversion\cinverma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="inversion\dinverma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="inversion\sinverma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="inversion\zinverma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="jmat\djmata.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="jmat\sjmata.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="logm\clogma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="logm\dlogma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="logm\slogma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="logm\zlogma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\cmagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\cmagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\dmagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\dmagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\smagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\smagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\zmagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="magnitude\zmagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmulma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\smulma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmulma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ones\conesa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ones\donesa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ones\sonesa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ones\zonesa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="powm\cpowma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="powm\dpowma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="powm\spowma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="powm\zpowma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec\cspeca.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec\dspeca.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec\sspeca.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec\zspeca.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec2\cspec2a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec2\dspec2a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec2\sspec2a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="spec2\zspec2a.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\csquMagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\csquMagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\dsquMagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\dsquMagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\ssquMagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\ssquMagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\zsquMagna.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\zsquMagns.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="trace\ctracea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="trace\dtracea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="trace\stracea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="trace\ztracea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="transpose\ctransposea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="transpose\dtransposea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="transpose\stransposea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="transpose\ztransposea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="zeros\czerosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="zeros\dzerosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="zeros\szerosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="zeros\zzerosa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\cdista.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\cdists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\ddista.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\ddists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\sdista.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\sdists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\zdista.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="dist\zdists.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="cat\Makefile.am" />
+ <None Include="chol\Makefile.am" />
+ <None Include="determ\Makefile.am" />
+ <None Include="expm\Makefile.am" />
+ <None Include="eye\Makefile.am" />
+ <None Include="fill\Makefile.am" />
+ <None Include="infiniteNorm\Makefile.am" />
+ <None Include="inversion\Makefile.am" />
+ <None Include="jmat\Makefile.am" />
+ <None Include="logm\Makefile.am" />
+ <None Include="magnitude\Makefile.am" />
+ <None Include="ones\Makefile.am" />
+ <None Include="powm\Makefile.am" />
+ <None Include="spec\Makefile.am" />
+ <None Include="spec2\Makefile.am" />
+ <None Include="squaredMagnitude\Makefile.am" />
+ <None Include="trace\Makefile.am" />
+ <None Include="transpose\Makefile.am" />
+ <None Include="zeros\Makefile.am" />
+ <None Include="dist\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\cat.h" />
+ <ClInclude Include="includes\chol.h" />
+ <ClInclude Include="includes\determ.h" />
+ <ClInclude Include="includes\dist.h" />
+ <ClInclude Include="includes\dynlib_matrixoperations.h" />
+ <ClInclude Include="includes\eye.h" />
+ <ClInclude Include="includes\fill.h" />
+ <ClInclude Include="includes\infiniteNorm.h" />
+ <ClInclude Include="includes\jmat.h" />
+ <ClInclude Include="includes\logm.h" />
+ <ClInclude Include="includes\matrixDivision.h" />
+ <ClInclude Include="includes\matrixExponential.h" />
+ <ClInclude Include="includes\matrixInversion.h" />
+ <ClInclude Include="includes\matrixMagnitude.h" />
+ <ClInclude Include="includes\matrixMultiplication.h" />
+ <ClInclude Include="includes\matrixPow.h" />
+ <ClInclude Include="includes\matrixSquaredMagnitude.h" />
+ <ClInclude Include="includes\matrixTrace.h" />
+ <ClInclude Include="includes\matrixTranspose.h" />
+ <ClInclude Include="includes\ones.h" />
+ <ClInclude Include="includes\spec.h" />
+ <ClInclude Include="includes\zeros.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\bin\blasplus.lib" />
+ <Library Include="..\..\..\bin\lapack.lib" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\auxiliaryFunctions\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\operations\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/matrixOperations.vcxproj.filters b/2.3-1/src/c/matrixOperations/matrixOperations.vcxproj.filters
new file mode 100644
index 00000000..18b2850f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/matrixOperations.vcxproj.filters
@@ -0,0 +1,576 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\cat">
+ <UniqueIdentifier>{50669223-b754-4e72-9393-58022d4f7620}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\chol">
+ <UniqueIdentifier>{ff7a57b0-c6bc-43c3-8d86-36786e8fe9d5}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\determ">
+ <UniqueIdentifier>{dd4e5fd5-24a0-440a-bdf0-b6578a4b9be2}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\division">
+ <UniqueIdentifier>{0c8faacf-3f59-484b-9bd3-d9ec25039ca0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\expm">
+ <UniqueIdentifier>{d27faf2b-2d32-434c-b4db-80c4090d283d}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\eye">
+ <UniqueIdentifier>{75693e96-1cec-40f8-b111-eba4dfbbe311}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\fill">
+ <UniqueIdentifier>{da1a0d02-b218-44ad-898e-7b971205770d}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\hilb">
+ <UniqueIdentifier>{6bb535d0-7b17-4940-bdfb-ff142424a6fc}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\infiniteNorm">
+ <UniqueIdentifier>{4eed3cb8-2d46-495f-bf5a-12a2c7f48361}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\inversion">
+ <UniqueIdentifier>{3216afe8-00b8-4910-99e1-885cebf71f18}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\jmat">
+ <UniqueIdentifier>{bbed4850-0b3c-4f03-8a72-de19980d8bab}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\logm">
+ <UniqueIdentifier>{6d360e1d-6db1-4a93-bbfe-38a15bcbcd75}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\magnitude">
+ <UniqueIdentifier>{280aa00d-6dd5-4468-a6ab-88643dcbe4f7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\multiplication">
+ <UniqueIdentifier>{0166b150-dcc9-40ac-b233-993d67fca2d7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\ones">
+ <UniqueIdentifier>{ff21e2a8-d2a4-4a19-b1ea-b7d1d3a8d2d8}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\pown">
+ <UniqueIdentifier>{78c5b505-dff8-483f-84ae-2a14c3cb4fe0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\spec">
+ <UniqueIdentifier>{6429efdd-0d73-49a9-8b3b-3ca1463bebde}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\spec2">
+ <UniqueIdentifier>{0880c91a-9165-4b91-8457-9d008eed7217}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\squaredMagnitude">
+ <UniqueIdentifier>{a5b7de6e-4acf-4d8f-b93b-5c71afb35071}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\trace">
+ <UniqueIdentifier>{24575c01-f16e-4bdb-9cd0-febf8695e09a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\transpose">
+ <UniqueIdentifier>{c292263c-96bf-4106-92a6-d8de899c2bb6}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\zeros">
+ <UniqueIdentifier>{7155bd34-e1bf-4931-914c-7076b45a976e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\dist">
+ <UniqueIdentifier>{873959cb-ab2f-47b4-aaf1-61e0804f3922}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="cat\ccata.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\ccats.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\dcata.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\dcats.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\scata.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\scats.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\zcata.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="cat\zcats.c">
+ <Filter>Source Files\cat</Filter>
+ </ClCompile>
+ <ClCompile Include="chol\cchola.c">
+ <Filter>Source Files\chol</Filter>
+ </ClCompile>
+ <ClCompile Include="chol\dchola.c">
+ <Filter>Source Files\chol</Filter>
+ </ClCompile>
+ <ClCompile Include="chol\dchols.c">
+ <Filter>Source Files\chol</Filter>
+ </ClCompile>
+ <ClCompile Include="chol\schola.c">
+ <Filter>Source Files\chol</Filter>
+ </ClCompile>
+ <ClCompile Include="chol\schols.c">
+ <Filter>Source Files\chol</Filter>
+ </ClCompile>
+ <ClCompile Include="chol\zchola.c">
+ <Filter>Source Files\chol</Filter>
+ </ClCompile>
+ <ClCompile Include="determ\cdeterma.c">
+ <Filter>Source Files\determ</Filter>
+ </ClCompile>
+ <ClCompile Include="determ\ddeterma.c">
+ <Filter>Source Files\determ</Filter>
+ </ClCompile>
+ <ClCompile Include="determ\sdeterma.c">
+ <Filter>Source Files\determ</Filter>
+ </ClCompile>
+ <ClCompile Include="determ\zdeterma.c">
+ <Filter>Source Files\determ</Filter>
+ </ClCompile>
+ <ClCompile Include="division\cldivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\crdivcsv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\crdivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\crdivscv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\crdivv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\dldivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\drdivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\drdivv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\sldivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\srdivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\srdivv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zldivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zrdivdzv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zrdivma.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zrdivv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zrdivzdv.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="expm\cexpma.c">
+ <Filter>Source Files\expm</Filter>
+ </ClCompile>
+ <ClCompile Include="expm\dexpma.c">
+ <Filter>Source Files\expm</Filter>
+ </ClCompile>
+ <ClCompile Include="expm\sexpma.c">
+ <Filter>Source Files\expm</Filter>
+ </ClCompile>
+ <ClCompile Include="expm\zexpma.c">
+ <Filter>Source Files\expm</Filter>
+ </ClCompile>
+ <ClCompile Include="eye\ceyea.c">
+ <Filter>Source Files\eye</Filter>
+ </ClCompile>
+ <ClCompile Include="eye\deyea.c">
+ <Filter>Source Files\eye</Filter>
+ </ClCompile>
+ <ClCompile Include="eye\seyea.c">
+ <Filter>Source Files\eye</Filter>
+ </ClCompile>
+ <ClCompile Include="eye\zeyea.c">
+ <Filter>Source Files\eye</Filter>
+ </ClCompile>
+ <ClCompile Include="fill\cfilla.c">
+ <Filter>Source Files\fill</Filter>
+ </ClCompile>
+ <ClCompile Include="fill\dfilla.c">
+ <Filter>Source Files\fill</Filter>
+ </ClCompile>
+ <ClCompile Include="fill\sfilla.c">
+ <Filter>Source Files\fill</Filter>
+ </ClCompile>
+ <ClCompile Include="fill\zfilla.c">
+ <Filter>Source Files\fill</Filter>
+ </ClCompile>
+ <ClCompile Include="hilb\dhilba.c">
+ <Filter>Source Files\hilb</Filter>
+ </ClCompile>
+ <ClCompile Include="hilb\shilba.c">
+ <Filter>Source Files\hilb</Filter>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\cinfnorma.c">
+ <Filter>Source Files\infiniteNorm</Filter>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\dinfnorma.c">
+ <Filter>Source Files\infiniteNorm</Filter>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\sinfnorma.c">
+ <Filter>Source Files\infiniteNorm</Filter>
+ </ClCompile>
+ <ClCompile Include="infiniteNorm\zinfnorma.c">
+ <Filter>Source Files\infiniteNorm</Filter>
+ </ClCompile>
+ <ClCompile Include="inversion\cinverma.c">
+ <Filter>Source Files\inversion</Filter>
+ </ClCompile>
+ <ClCompile Include="inversion\dinverma.c">
+ <Filter>Source Files\inversion</Filter>
+ </ClCompile>
+ <ClCompile Include="inversion\sinverma.c">
+ <Filter>Source Files\inversion</Filter>
+ </ClCompile>
+ <ClCompile Include="inversion\zinverma.c">
+ <Filter>Source Files\inversion</Filter>
+ </ClCompile>
+ <ClCompile Include="jmat\djmata.c">
+ <Filter>Source Files\jmat</Filter>
+ </ClCompile>
+ <ClCompile Include="jmat\sjmata.c">
+ <Filter>Source Files\jmat</Filter>
+ </ClCompile>
+ <ClCompile Include="logm\clogma.c">
+ <Filter>Source Files\logm</Filter>
+ </ClCompile>
+ <ClCompile Include="logm\dlogma.c">
+ <Filter>Source Files\logm</Filter>
+ </ClCompile>
+ <ClCompile Include="logm\slogma.c">
+ <Filter>Source Files\logm</Filter>
+ </ClCompile>
+ <ClCompile Include="logm\zlogma.c">
+ <Filter>Source Files\logm</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\cmagna.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\cmagns.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\dmagna.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\dmagns.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\smagna.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\smagns.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\zmagna.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="magnitude\zmagns.c">
+ <Filter>Source Files\magnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulma.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmulma.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\smulma.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmulma.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="ones\conesa.c">
+ <Filter>Source Files\ones</Filter>
+ </ClCompile>
+ <ClCompile Include="ones\donesa.c">
+ <Filter>Source Files\ones</Filter>
+ </ClCompile>
+ <ClCompile Include="ones\sonesa.c">
+ <Filter>Source Files\ones</Filter>
+ </ClCompile>
+ <ClCompile Include="ones\zonesa.c">
+ <Filter>Source Files\ones</Filter>
+ </ClCompile>
+ <ClCompile Include="powm\cpowma.c">
+ <Filter>Source Files\pown</Filter>
+ </ClCompile>
+ <ClCompile Include="powm\dpowma.c">
+ <Filter>Source Files\pown</Filter>
+ </ClCompile>
+ <ClCompile Include="powm\spowma.c">
+ <Filter>Source Files\pown</Filter>
+ </ClCompile>
+ <ClCompile Include="powm\zpowma.c">
+ <Filter>Source Files\pown</Filter>
+ </ClCompile>
+ <ClCompile Include="spec\cspeca.c">
+ <Filter>Source Files\spec</Filter>
+ </ClCompile>
+ <ClCompile Include="spec\dspeca.c">
+ <Filter>Source Files\spec</Filter>
+ </ClCompile>
+ <ClCompile Include="spec\sspeca.c">
+ <Filter>Source Files\spec</Filter>
+ </ClCompile>
+ <ClCompile Include="spec\zspeca.c">
+ <Filter>Source Files\spec</Filter>
+ </ClCompile>
+ <ClCompile Include="spec2\cspec2a.c">
+ <Filter>Source Files\spec2</Filter>
+ </ClCompile>
+ <ClCompile Include="spec2\dspec2a.c">
+ <Filter>Source Files\spec2</Filter>
+ </ClCompile>
+ <ClCompile Include="spec2\sspec2a.c">
+ <Filter>Source Files\spec2</Filter>
+ </ClCompile>
+ <ClCompile Include="spec2\zspec2a.c">
+ <Filter>Source Files\spec2</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\csquMagna.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\csquMagns.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\dsquMagna.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\dsquMagns.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\ssquMagna.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\ssquMagns.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\zsquMagna.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="squaredMagnitude\zsquMagns.c">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </ClCompile>
+ <ClCompile Include="trace\ctracea.c">
+ <Filter>Source Files\trace</Filter>
+ </ClCompile>
+ <ClCompile Include="trace\dtracea.c">
+ <Filter>Source Files\trace</Filter>
+ </ClCompile>
+ <ClCompile Include="trace\stracea.c">
+ <Filter>Source Files\trace</Filter>
+ </ClCompile>
+ <ClCompile Include="trace\ztracea.c">
+ <Filter>Source Files\trace</Filter>
+ </ClCompile>
+ <ClCompile Include="transpose\ctransposea.c">
+ <Filter>Source Files\transpose</Filter>
+ </ClCompile>
+ <ClCompile Include="transpose\dtransposea.c">
+ <Filter>Source Files\transpose</Filter>
+ </ClCompile>
+ <ClCompile Include="transpose\stransposea.c">
+ <Filter>Source Files\transpose</Filter>
+ </ClCompile>
+ <ClCompile Include="transpose\ztransposea.c">
+ <Filter>Source Files\transpose</Filter>
+ </ClCompile>
+ <ClCompile Include="zeros\czerosa.c">
+ <Filter>Source Files\zeros</Filter>
+ </ClCompile>
+ <ClCompile Include="zeros\dzerosa.c">
+ <Filter>Source Files\zeros</Filter>
+ </ClCompile>
+ <ClCompile Include="zeros\szerosa.c">
+ <Filter>Source Files\zeros</Filter>
+ </ClCompile>
+ <ClCompile Include="zeros\zzerosa.c">
+ <Filter>Source Files\zeros</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\cdista.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\cdists.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\ddista.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\ddists.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\sdista.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\sdists.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\zdista.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ <ClCompile Include="dist\zdists.c">
+ <Filter>Source Files\dist</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="cat\Makefile.am">
+ <Filter>Source Files\cat</Filter>
+ </None>
+ <None Include="chol\Makefile.am">
+ <Filter>Source Files\chol</Filter>
+ </None>
+ <None Include="determ\Makefile.am">
+ <Filter>Source Files\determ</Filter>
+ </None>
+ <None Include="expm\Makefile.am">
+ <Filter>Source Files\expm</Filter>
+ </None>
+ <None Include="eye\Makefile.am">
+ <Filter>Source Files\eye</Filter>
+ </None>
+ <None Include="fill\Makefile.am">
+ <Filter>Source Files\fill</Filter>
+ </None>
+ <None Include="infiniteNorm\Makefile.am">
+ <Filter>Source Files\infiniteNorm</Filter>
+ </None>
+ <None Include="inversion\Makefile.am">
+ <Filter>Source Files\inversion</Filter>
+ </None>
+ <None Include="jmat\Makefile.am">
+ <Filter>Source Files\jmat</Filter>
+ </None>
+ <None Include="logm\Makefile.am">
+ <Filter>Source Files\logm</Filter>
+ </None>
+ <None Include="magnitude\Makefile.am">
+ <Filter>Source Files\magnitude</Filter>
+ </None>
+ <None Include="ones\Makefile.am">
+ <Filter>Source Files\ones</Filter>
+ </None>
+ <None Include="powm\Makefile.am">
+ <Filter>Source Files\pown</Filter>
+ </None>
+ <None Include="spec\Makefile.am">
+ <Filter>Source Files\spec</Filter>
+ </None>
+ <None Include="spec2\Makefile.am">
+ <Filter>Source Files\spec2</Filter>
+ </None>
+ <None Include="squaredMagnitude\Makefile.am">
+ <Filter>Source Files\squaredMagnitude</Filter>
+ </None>
+ <None Include="trace\Makefile.am">
+ <Filter>Source Files\trace</Filter>
+ </None>
+ <None Include="transpose\Makefile.am">
+ <Filter>Source Files\transpose</Filter>
+ </None>
+ <None Include="zeros\Makefile.am">
+ <Filter>Source Files\zeros</Filter>
+ </None>
+ <None Include="dist\Makefile.am">
+ <Filter>Source Files\dist</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\cat.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\chol.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\determ.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dist.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_matrixoperations.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\eye.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\fill.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\infiniteNorm.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jmat.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\logm.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixDivision.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixExponential.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixInversion.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixMagnitude.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixMultiplication.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixPow.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixSquaredMagnitude.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixTrace.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\matrixTranspose.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\ones.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\spec.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\zeros.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\bin\lapack.lib" />
+ <Library Include="..\..\..\bin\blasplus.lib" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/multiplication/Makefile.am b/2.3-1/src/c/matrixOperations/multiplication/Makefile.am
new file mode 100644
index 00000000..f281aadb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/Makefile.am
@@ -0,0 +1,49 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixMultiplication_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixMultiplication.la
+
+HEAD = ../includes/matrixMultiplication.h
+
+libMatrixMultiplication_la_SOURCES = $(HEAD) \
+ smulma.c \
+ dmulma.c \
+ cmulma.c \
+ zmulma.c
+
+check_PROGRAMS = testFloatMatrixMultiplication testDoubleMatrixMultiplication
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libMatrixMultiplication.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testFloatMatrixMultiplication_SOURCES = testFloatMatrixMultiplication.c
+testFloatMatrixMultiplication_LDADD = $(check_LDADD)
+testFloatMatrixMultiplication_CFLAGS = $(check_INCLUDES)
+
+testDoubleMatrixMultiplication_SOURCES = testDoubleMatrixMultiplication.c
+testDoubleMatrixMultiplication_LDADD = $(check_LDADD)
+testDoubleMatrixMultiplication_CFLAGS = $(check_INCLUDES)
+TESTS = testFloatMatrixMultiplication testDoubleMatrixMultiplication
diff --git a/2.3-1/src/c/matrixOperations/multiplication/Makefile.in b/2.3-1/src/c/matrixOperations/multiplication/Makefile.in
new file mode 100644
index 00000000..7bc3f740
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/Makefile.in
@@ -0,0 +1,756 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatMatrixMultiplication$(EXEEXT) \
+ testDoubleMatrixMultiplication$(EXEEXT)
+TESTS = testFloatMatrixMultiplication$(EXEEXT) \
+ testDoubleMatrixMultiplication$(EXEEXT)
+subdir = src/c/matrixOperations/multiplication
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixMultiplication_la_LIBADD =
+am__objects_1 =
+am_libMatrixMultiplication_la_OBJECTS = $(am__objects_1) \
+ libMatrixMultiplication_la-smulma.lo \
+ libMatrixMultiplication_la-dmulma.lo \
+ libMatrixMultiplication_la-cmulma.lo \
+ libMatrixMultiplication_la-zmulma.lo
+libMatrixMultiplication_la_OBJECTS = \
+ $(am_libMatrixMultiplication_la_OBJECTS)
+libMatrixMultiplication_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testDoubleMatrixMultiplication_OBJECTS = testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.$(OBJEXT)
+testDoubleMatrixMultiplication_OBJECTS = \
+ $(am_testDoubleMatrixMultiplication_OBJECTS)
+testDoubleMatrixMultiplication_DEPENDENCIES = $(check_LDADD)
+testDoubleMatrixMultiplication_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleMatrixMultiplication_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMatrixMultiplication_OBJECTS = testFloatMatrixMultiplication-testFloatMatrixMultiplication.$(OBJEXT)
+testFloatMatrixMultiplication_OBJECTS = \
+ $(am_testFloatMatrixMultiplication_OBJECTS)
+testFloatMatrixMultiplication_DEPENDENCIES = $(check_LDADD)
+testFloatMatrixMultiplication_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatMatrixMultiplication_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixMultiplication_la_SOURCES) \
+ $(testDoubleMatrixMultiplication_SOURCES) \
+ $(testFloatMatrixMultiplication_SOURCES)
+DIST_SOURCES = $(libMatrixMultiplication_la_SOURCES) \
+ $(testDoubleMatrixMultiplication_SOURCES) \
+ $(testFloatMatrixMultiplication_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixMultiplication_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixMultiplication.la
+HEAD = ../includes/matrixMultiplication.h
+libMatrixMultiplication_la_SOURCES = $(HEAD) \
+ smulma.c \
+ dmulma.c \
+ cmulma.c \
+ zmulma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ libMatrixMultiplication.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testFloatMatrixMultiplication_SOURCES = testFloatMatrixMultiplication.c
+testFloatMatrixMultiplication_LDADD = $(check_LDADD)
+testFloatMatrixMultiplication_CFLAGS = $(check_INCLUDES)
+testDoubleMatrixMultiplication_SOURCES = testDoubleMatrixMultiplication.c
+testDoubleMatrixMultiplication_LDADD = $(check_LDADD)
+testDoubleMatrixMultiplication_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/multiplication/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/multiplication/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixMultiplication.la: $(libMatrixMultiplication_la_OBJECTS) $(libMatrixMultiplication_la_DEPENDENCIES)
+ $(libMatrixMultiplication_la_LINK) -rpath $(pkglibdir) $(libMatrixMultiplication_la_OBJECTS) $(libMatrixMultiplication_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMatrixMultiplication$(EXEEXT): $(testDoubleMatrixMultiplication_OBJECTS) $(testDoubleMatrixMultiplication_DEPENDENCIES)
+ @rm -f testDoubleMatrixMultiplication$(EXEEXT)
+ $(testDoubleMatrixMultiplication_LINK) $(testDoubleMatrixMultiplication_OBJECTS) $(testDoubleMatrixMultiplication_LDADD) $(LIBS)
+testFloatMatrixMultiplication$(EXEEXT): $(testFloatMatrixMultiplication_OBJECTS) $(testFloatMatrixMultiplication_DEPENDENCIES)
+ @rm -f testFloatMatrixMultiplication$(EXEEXT)
+ $(testFloatMatrixMultiplication_LINK) $(testFloatMatrixMultiplication_OBJECTS) $(testFloatMatrixMultiplication_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMultiplication_la-cmulma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMultiplication_la-dmulma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMultiplication_la-smulma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixMultiplication_la-zmulma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixMultiplication_la-smulma.lo: smulma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -MT libMatrixMultiplication_la-smulma.lo -MD -MP -MF $(DEPDIR)/libMatrixMultiplication_la-smulma.Tpo -c -o libMatrixMultiplication_la-smulma.lo `test -f 'smulma.c' || echo '$(srcdir)/'`smulma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMultiplication_la-smulma.Tpo $(DEPDIR)/libMatrixMultiplication_la-smulma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smulma.c' object='libMatrixMultiplication_la-smulma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMatrixMultiplication_la-smulma.lo `test -f 'smulma.c' || echo '$(srcdir)/'`smulma.c
+
+libMatrixMultiplication_la-dmulma.lo: dmulma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -MT libMatrixMultiplication_la-dmulma.lo -MD -MP -MF $(DEPDIR)/libMatrixMultiplication_la-dmulma.Tpo -c -o libMatrixMultiplication_la-dmulma.lo `test -f 'dmulma.c' || echo '$(srcdir)/'`dmulma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMultiplication_la-dmulma.Tpo $(DEPDIR)/libMatrixMultiplication_la-dmulma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmulma.c' object='libMatrixMultiplication_la-dmulma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMatrixMultiplication_la-dmulma.lo `test -f 'dmulma.c' || echo '$(srcdir)/'`dmulma.c
+
+libMatrixMultiplication_la-cmulma.lo: cmulma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -MT libMatrixMultiplication_la-cmulma.lo -MD -MP -MF $(DEPDIR)/libMatrixMultiplication_la-cmulma.Tpo -c -o libMatrixMultiplication_la-cmulma.lo `test -f 'cmulma.c' || echo '$(srcdir)/'`cmulma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMultiplication_la-cmulma.Tpo $(DEPDIR)/libMatrixMultiplication_la-cmulma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmulma.c' object='libMatrixMultiplication_la-cmulma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMatrixMultiplication_la-cmulma.lo `test -f 'cmulma.c' || echo '$(srcdir)/'`cmulma.c
+
+libMatrixMultiplication_la-zmulma.lo: zmulma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -MT libMatrixMultiplication_la-zmulma.lo -MD -MP -MF $(DEPDIR)/libMatrixMultiplication_la-zmulma.Tpo -c -o libMatrixMultiplication_la-zmulma.lo `test -f 'zmulma.c' || echo '$(srcdir)/'`zmulma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixMultiplication_la-zmulma.Tpo $(DEPDIR)/libMatrixMultiplication_la-zmulma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmulma.c' object='libMatrixMultiplication_la-zmulma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMatrixMultiplication_la-zmulma.lo `test -f 'zmulma.c' || echo '$(srcdir)/'`zmulma.c
+
+testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.o: testDoubleMatrixMultiplication.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMultiplication_CFLAGS) $(CFLAGS) -MT testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.o -MD -MP -MF $(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Tpo -c -o testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.o `test -f 'testDoubleMatrixMultiplication.c' || echo '$(srcdir)/'`testDoubleMatrixMultiplication.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Tpo $(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMatrixMultiplication.c' object='testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMultiplication_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.o `test -f 'testDoubleMatrixMultiplication.c' || echo '$(srcdir)/'`testDoubleMatrixMultiplication.c
+
+testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.obj: testDoubleMatrixMultiplication.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMultiplication_CFLAGS) $(CFLAGS) -MT testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.obj -MD -MP -MF $(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Tpo -c -o testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.obj `if test -f 'testDoubleMatrixMultiplication.c'; then $(CYGPATH_W) 'testDoubleMatrixMultiplication.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMatrixMultiplication.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Tpo $(DEPDIR)/testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMatrixMultiplication.c' object='testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixMultiplication_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixMultiplication-testDoubleMatrixMultiplication.obj `if test -f 'testDoubleMatrixMultiplication.c'; then $(CYGPATH_W) 'testDoubleMatrixMultiplication.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMatrixMultiplication.c'; fi`
+
+testFloatMatrixMultiplication-testFloatMatrixMultiplication.o: testFloatMatrixMultiplication.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMultiplication_CFLAGS) $(CFLAGS) -MT testFloatMatrixMultiplication-testFloatMatrixMultiplication.o -MD -MP -MF $(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Tpo -c -o testFloatMatrixMultiplication-testFloatMatrixMultiplication.o `test -f 'testFloatMatrixMultiplication.c' || echo '$(srcdir)/'`testFloatMatrixMultiplication.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Tpo $(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMatrixMultiplication.c' object='testFloatMatrixMultiplication-testFloatMatrixMultiplication.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMultiplication_CFLAGS) $(CFLAGS) -c -o testFloatMatrixMultiplication-testFloatMatrixMultiplication.o `test -f 'testFloatMatrixMultiplication.c' || echo '$(srcdir)/'`testFloatMatrixMultiplication.c
+
+testFloatMatrixMultiplication-testFloatMatrixMultiplication.obj: testFloatMatrixMultiplication.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMultiplication_CFLAGS) $(CFLAGS) -MT testFloatMatrixMultiplication-testFloatMatrixMultiplication.obj -MD -MP -MF $(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Tpo -c -o testFloatMatrixMultiplication-testFloatMatrixMultiplication.obj `if test -f 'testFloatMatrixMultiplication.c'; then $(CYGPATH_W) 'testFloatMatrixMultiplication.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMatrixMultiplication.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Tpo $(DEPDIR)/testFloatMatrixMultiplication-testFloatMatrixMultiplication.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMatrixMultiplication.c' object='testFloatMatrixMultiplication-testFloatMatrixMultiplication.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixMultiplication_CFLAGS) $(CFLAGS) -c -o testFloatMatrixMultiplication-testFloatMatrixMultiplication.obj `if test -f 'testFloatMatrixMultiplication.c'; then $(CYGPATH_W) 'testFloatMatrixMultiplication.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMatrixMultiplication.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/multiplication/cmulma.c b/2.3-1/src/c/matrixOperations/multiplication/cmulma.c
new file mode 100644
index 00000000..33eab648
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/cmulma.c
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "matrixMultiplication.h"
+
+/*
+** \brief Compute a multiplication for floats complex matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+void cmulma(floatComplex *in1, int lines1, int columns1,
+ floatComplex *in2, int lines2, int columns2,
+ floatComplex *out)
+{
+ int i = 0;
+ int k = 0;
+ floatComplex accu = FloatComplex(0, 0);
+
+ for (i = 0 ; i < lines1 * columns2 ; ++i)
+ {
+ accu = FloatComplex(0,0);
+ for (k = 0; k < columns1 ; ++k)
+ {
+ accu = cadds(accu,
+ cmuls(in1[i % lines1 + k *lines1] ,
+ in2[k + (i / lines1) *lines2] ));
+ }
+ out[i] = accu;
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/dmulma.c b/2.3-1/src/c/matrixOperations/multiplication/dmulma.c
new file mode 100644
index 00000000..8edd3112
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/dmulma.c
@@ -0,0 +1,67 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef WITHOUT_BLAS
+#include "lapack.h"
+#endif
+#include "matrixMultiplication.h"
+
+/*
+** \brief Compute a multiplication for doubles matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+void dmulma(double *in1, int lines1, int columns1,
+ double *in2, int lines2, int columns2,
+ double *out)
+{
+#ifndef WITHOUT_BLAS
+ /*
+ ** USES BLAS DGEMM FUNCTION.
+ */
+ double One = 1;
+ double Zero = 0;
+
+ /* Cr <- 1*Ar*Br + 0*Cr */
+ dgemm_("N","N", &lines1, &columns2, &columns1, &One,
+ in1 , &lines1, in2, &lines2, &Zero, out, &lines1);
+#else
+ /*
+ ** DO NOT USE ANY BLAS FUNCTION.
+ */
+ int i = 0;
+ int k = 0;
+ double accu = 0;
+
+ /*
+ ** How to convert 2 index matrixes to one.
+ ** #define in1(a, b) in1[a+b*lines1]
+ ** #define in2(c, d) in2[c+d*lines2]
+ */
+
+ for (i = 0 ; i < lines1 * columns2 ; ++i)
+ {
+ accu = 0;
+ for (k = 0; k < columns1 ; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1]
+ * in2[k + (i / lines1) * lines2];
+ }
+ out[i] = accu;
+ }
+#endif
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/i16mulma.c b/2.3-1/src/c/matrixOperations/multiplication/i16mulma.c
new file mode 100644
index 00000000..ba46e8e6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/i16mulma.c
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+** \brief Compute a multiplication for int16 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+
+/* dgemm function of lapack library does not support uint8,uint16,int8 and int16 datatype so removed*/
+
+#include "matrixMultiplication.h"
+
+void i16mulma(int16 *in1,int lines1,int columns1,
+ int16 *in2,int lines2,int columns2,
+ int16 *out)
+{
+
+ /* Do Not Use Any BLAS Function*/
+ int i = 0;
+ int k = 0;
+ int16 accu = 0;
+
+ /* How to convert 2 index matrixes to one.
+ ** #define in1(a,b) in1[a+b*lines1]
+ ** #define in2(c,d) in2[c+d*lines2]
+ */
+ for(i=0;i < lines1 * columns2; ++i)
+ {
+ accu = 0;
+ for(k=0;k < columns1; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1] * in2[k + (i / lines1) * lines2];
+
+ }
+ out[i] = accu;
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/i8mulma.c b/2.3-1/src/c/matrixOperations/multiplication/i8mulma.c
new file mode 100644
index 00000000..88f192d7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/i8mulma.c
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+** \brief Compute a multiplication for int8 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+
+/* dgemm function of lapack library does not support uint8,uint16,int8 and int16 datatype so removed*/
+
+#include "matrixMultiplication.h"
+
+void i8mulma(int8 *in1,int lines1,int columns1,
+ int8 *in2,int lines2,int columns2,
+ int8 *out)
+{
+
+ /* Do Not Use Any BLAS Function*/
+ int i = 0;
+ int k = 0;
+ int8 accu = 0;
+
+ /* How to convert 2 index matrixes to one.
+ ** #define in1(a,b) in1[a+b*lines1]
+ ** #define in2(c,d) in2[c+d*lines2]
+ */
+ for(i=0;i < lines1 * columns2; ++i)
+ {
+ accu = 0;
+ for(k=0;k < columns1; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1] * in2[k + (i / lines1) * lines2];
+
+ }
+ out[i] = accu;
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/smulma.c b/2.3-1/src/c/matrixOperations/multiplication/smulma.c
new file mode 100644
index 00000000..edf10a01
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/smulma.c
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "matrixMultiplication.h"
+
+/*
+** \brief Compute a multiplication for floats matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+void smulma(float *in1, int lines1, int columns1,
+ float *in2, int lines2, int columns2,
+ float *out)
+{
+ int i = 0;
+ int k = 0;
+ float accu = 0;
+
+ /*
+ ** How to convert 2 index matrixes to one.
+ ** #define in1(a, b) in1[a+b*lines1]
+ ** #define in2(c, d) in2[c+d*lines2]
+ */
+
+ for (i = 0 ; i < lines1 * columns2 ; ++i)
+ {
+ accu = 0;
+ for (k = 0; k < columns1 ; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1]
+ * in2[k + (i / lines1) * lines2];
+ }
+ out[i] = accu;
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/testDoubleMatrixMultiplication.c b/2.3-1/src/c/matrixOperations/multiplication/testDoubleMatrixMultiplication.c
new file mode 100644
index 00000000..01d2a371
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/testDoubleMatrixMultiplication.c
@@ -0,0 +1,354 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "matrixMultiplication.h"
+
+int testFloatMultiplication(void);
+
+static void zmulmaTest(void) {
+ double realM1[4] = {1.0, 2.0, 3.0, 4.0};
+ double imagM1[4] = {1.0, 2.0, 3.0, 4.0};
+ double realM3[6] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
+ double imagM3[6] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
+
+ doubleComplex *M1;
+ doubleComplex *M2;
+ doubleComplex M1_mul_M2[4];
+ doubleComplex *M3;
+ doubleComplex *M4;
+ doubleComplex M3_mul_M4[4];
+ doubleComplex miscM3_mul_M4[9];
+
+ int i = 0;
+
+ printf("\n>>>> Matrix Complex Double Multiplication Tests\n");
+
+ M1 = DoubleComplexMatrix(realM1, imagM1, 4);
+ M2 = DoubleComplexMatrix(realM1, imagM1, 4);
+
+ /*
+ [ 1+1.%i 3+3.%i] * [ 1+1.%i 3+3.%i] = [ 14.%i 30.%i ]
+ [ 2+2.%i 4+4.%i] [ 2+2.%i 4+4.%i] [ 20.%i 44.%i ]
+ */
+ zmulma(M1, 2, 2, M2, 2, 2, M1_mul_M2);
+ for (i = 0; i < 4; ++i)
+ {
+ printf("M1_mul_M2[%d] = %e + %e i\n", i, zreals(M1_mul_M2[i]), zimags(M1_mul_M2[i]));
+ }
+ for (i = 0; i < 4; ++i)
+ {
+ assert(zreals(M1_mul_M2[i]) == 0.0);
+ }
+ assert(zimags(M1_mul_M2[0]) == 14.0);
+ assert(zimags(M1_mul_M2[1]) == 20.0);
+ assert(zimags(M1_mul_M2[2]) == 30.0);
+ assert(zimags(M1_mul_M2[3]) == 44.0);
+
+ M3 = DoubleComplexMatrix(realM3, imagM3, 6);
+ M4 = DoubleComplexMatrix(realM3, imagM3, 6);
+
+ /*
+ [ 1+1.%i 3+3.%i 5+5.%i ] * [ 1+1.%i 4+4.%i ] = [ 44.%i 98.%i ]
+ [ 2+2.%i 4+4.%i 6+6.%i ] [ 2+2.%i 5+5.%i ] [ 56.%i 128.%i ]
+ [ 3+3.%i 6+6.%i ]
+ */
+ zmulma(M3, 2, 3, M4, 3, 2, M3_mul_M4);
+ for (i = 0; i < 4; ++i)
+ {
+ printf("M3_mul_M4[%d] = %e + %e i\n", i, zreals(M3_mul_M4[i]), zimags(M3_mul_M4[i]));
+ }
+ for (i = 0; i < 4; ++i)
+ {
+ assert(zreals(M3_mul_M4[i]) == 0.0);
+ }
+ assert(zimags(M3_mul_M4[0]) == 44.0);
+ assert(zimags(M3_mul_M4[1]) == 56.0);
+ assert(zimags(M3_mul_M4[2]) == 98.0);
+ assert(zimags(M3_mul_M4[3]) == 128.0);
+
+ /*
+ [ 1+1.%i 4+4.%i ] * [ 1+1.%i 3+3.%i 5+5.%i ] = [ 18.%i 38.%i 58.%i ]
+ [ 2+2.%i 5+5.%i ] [ 2+2.%i 4+4.%i 6+6.%i ] [ 24.%i 52.%i 80.%i ]
+ [ 3+3.%i 6+6.%i ] [ 30.%i 66.%i 102.%i ]
+ */
+ zmulma(M3, 3, 2, M4, 2, 3, miscM3_mul_M4);
+ for (i = 0; i < 9; ++i)
+ {
+ printf("miscM3_mul_M4[%d] = %e + %e i\n", i, zreals(miscM3_mul_M4[i]), zimags(miscM3_mul_M4[i]));
+ }
+ for (i = 0; i < 9; ++i)
+ {
+ assert(zreals(miscM3_mul_M4[i]) == 0.0);
+ }
+ assert(zimags(miscM3_mul_M4[0]) == 18.0);
+ assert(zimags(miscM3_mul_M4[1]) == 24.0);
+ assert(zimags(miscM3_mul_M4[2]) == 30.0);
+ assert(zimags(miscM3_mul_M4[3]) == 38.0);
+ assert(zimags(miscM3_mul_M4[4]) == 52.0);
+ assert(zimags(miscM3_mul_M4[5]) == 66.0);
+ assert(zimags(miscM3_mul_M4[6]) == 58.0);
+ assert(zimags(miscM3_mul_M4[7]) == 80.0);
+ assert(zimags(miscM3_mul_M4[8]) == 102.0);
+}
+
+static void dmulmaTest(void) {
+ double M1[4] = {1.0, 2.0, 3.0, 4.0};
+ double M2[4] = {1.0, 2.0, 3.0, 4.0};
+ double M1_by_M2[4];
+ double M3[4] = {1.0, 0.0, 1.0, 0.0};
+ double M4[4] = {0.0, 1.0, 0.0, 1.0};
+ double M3_by_M4[4];
+ double M5[4] = {1.0, 0.0, 0.0, 1.0};
+ double M6[4] = {42.0, 51.0, 69.0, 1664.0};
+ double M5_by_M6[4];
+ double M7[6] = {1.0, 4.0, 2.0, 5.0, 3.0, 6.0};
+ double M8[6] = {1.0, 3.0, 5.0, 2.0, 4.0, 6.0};
+ double M7_by_M8[4];
+ double miscM7_by_M8[9];
+ double M9[6] = {1, 4, 2, 5, 3, 6};
+ double M10[9] = {4, 8, 3, 2, 8, 4, 3, 4, 5};
+ double M9_by_M10[6];
+
+ int i = 0;
+
+ printf("\n>>>> Matrix Real Double Multiplication Tests\n");
+ /*
+ [ 1 3 ] * [ 1 3 ] = [ 7 15 ]
+ [ 2 4 ] [ 2 4 ] [10 22 ]
+ */
+ dmulma(M1, 2, 2, M2, 2, 2, M1_by_M2);
+ for (i = 0; i < 4; ++i) {
+ printf("M1_by_M2[%d] = %e\n", i, M1_by_M2[i]);
+ }
+ assert(M1_by_M2[0] == 7.0);
+ assert(M1_by_M2[1] == 10.0);
+ assert(M1_by_M2[2] == 15.0);
+ assert(M1_by_M2[3] == 22.0);
+ /*
+ [ 1 1 ] * [ 0 0 ] = [ 1 1 ]
+ [ 0 0 ] [ 1 1 ] [ 0 0 ]
+ */
+ dmulma(M3, 2, 2, M4, 2, 2, M3_by_M4);
+ for (i = 0; i < 4; ++i) {
+ printf("M3_by_M4[%d] = %e\n", i, M3_by_M4[i]);
+ }
+ assert(M3_by_M4[0] == 1.0);
+ assert(M3_by_M4[1] == 0.0);
+ assert(M3_by_M4[2] == 1.0);
+ assert(M3_by_M4[3] == 0.0);
+
+ /*
+ [ 1 0 ] * [ 42 69 ] = [ 42 69 ]
+ [ 0 1 ] [ 51 1664 ] [ 51 1664 ]
+ */
+ dmulma(M5, 2, 2, M6, 2, 2, M5_by_M6);
+ for (i = 0; i < 4; ++i) {
+ printf("M5_by_M6[%d] = %e\n", i, M5_by_M6[i]);
+ }
+ assert(M5_by_M6[0] == 42.0);
+ assert(M5_by_M6[1] == 51.0);
+ assert(M5_by_M6[2] == 69.0);
+ assert(M5_by_M6[3] == 1664.0);
+
+ /*
+ [ 1 2 3 ] * [ 1 2 ] = [ 22 28 ]
+ [ 4 5 6 ] [ 3 4 ] [ 49 64 ]
+ [ 5 6 ]
+ */
+ dmulma(M7, 2, 3, M8, 3, 2, M7_by_M8);
+ for (i = 0; i < 4; ++i) {
+ printf("M7_by_M8[%d] = %e\n", i, M7_by_M8[i]);
+ }
+ assert(M7_by_M8[0] == 22.0);
+ assert(M7_by_M8[1] == 49.0);
+ assert(M7_by_M8[2] == 28.0);
+ assert(M7_by_M8[3] == 64.0);
+
+ /*
+ [ 1 5 ] * [ 1 5 4 ] = [ 16 15 34 ]
+ [ 4 3 ] [ 3 2 6 ] [ 13 26 34 ]
+ [ 2 6 ] [ 20 22 44 ]
+ */
+ dmulma(M7, 3, 2, M8, 2, 3, miscM7_by_M8);
+ for (i = 0; i < 9; ++i) {
+ printf("miscM7_by_M8[%d] = %e\n", i, miscM7_by_M8[i]);
+ }
+ assert(miscM7_by_M8[0] == 16.0);
+ assert(miscM7_by_M8[1] == 13.0);
+ assert(miscM7_by_M8[2] == 20.0);
+ assert(miscM7_by_M8[3] == 15.0);
+ assert(miscM7_by_M8[4] == 26.0);
+ assert(miscM7_by_M8[5] == 22.0);
+ assert(miscM7_by_M8[6] == 34.0);
+ assert(miscM7_by_M8[7] == 34.0);
+ assert(miscM7_by_M8[8] == 44.0);
+
+ /*
+ [ 1 2 3 ] * [ 4 2 3 ] = [ 29 30 26 ]
+ [ 4 5 6 ] [ 8 8 4 ] [ 74 72 62 ]
+ [ 3 4 5 ]
+ */
+ dmulma(M9, 2, 3, M10, 3, 3, M9_by_M10);
+ for (i = 0; i < 6; ++i) {
+ printf("M9_by_M10[%d] = %e\n", i, M9_by_M10[i]);
+ }
+ assert(M9_by_M10[0] == 29.0);
+ assert(M9_by_M10[1] == 74.0);
+ assert(M9_by_M10[2] == 30.0);
+ assert(M9_by_M10[3] == 72.0);
+ assert(M9_by_M10[4] == 26.0);
+ assert(M9_by_M10[5] == 62.0);
+
+}
+
+
+
+
+static void dmulma2Test(void){
+ int i=0;
+ double in1[16]={0.2164632631465792655945 , 0.8833887814544141292572 , 0.6525134947150945663452 , 0.3076090742833912372589, 0.9329616213217377662659,
+ 0.2146007861010730266571 , 0.3126419968903064727783 , 0.3616361008025705814362 , 0.2922266637906432151794 , 0.5664248815737664699554 ,
+ 0.4826471973210573196411 , 0.3321718913502991199493 , 0.5935094701126217842102 , 0.5015341597609221935272 , 0.4368587583303451538086 ,
+ 0.2693124809302389621735 };
+ double in2[16]={ 0.6325744865462183952332 , 0.4051954015158116817474 , 0.9184707831591367721558 , 0.0437334333546459674835 , 0.4818508932366967201233 ,
+ 0.2639556000940501689911 , 0.4148103706538677215576 , 0.2806498021818697452545 , 0.1280058464035391807556 , 0.7783128595910966396332 ,
+ 0.2119030449539422988892 , 0.1121354666538536548615 , 0.6856895955279469490051 , 0.1531216683797538280487 , 0.6970850601792335510254 ,
+ 0.8415518426336348056793 };
+ double result1[1]={3.4777275993941634268936};
+ double result2[4]={1.9089008209228131018875 , 1.5406061588610213686223 ,
+ 1.8239702765316110344429, 1.4540285665075025622883};
+ double result4[16]={0.8093187558996659536348 , 1.1879429718699099360890 , 1.0018471710504197602631 , 0.6579870739173818705581,
+ 0.6383504274229201413959 , 0.8580211304925904336471 , 0.7197492031038768001139 , 0.4570484210841743166753 ,
+ 0.8823217718625468997118 , 0.4563724043650834172325 , 0.4781206002867167681458 , 0.4214295036121353255076 ,
+ 0.9944590770529683210199 , 1.4555038456021862636192 , 1.199379422070573131265 , 0.7244911422701945102887};
+ double result8[64]={0.2553380379093421193026,0.7883219621670439769545,0.6083298137928665472174,0.3291801751097247485944,0.83065502662064605310 ,
+ 0.3389703173185232287779,0.3747825106430331398855,0.3378859496255101069195,
+ 0.211595258152759591042, 0.8361384907451508974319,0.6204223995507252009674,0.2970569646365784355346,0.8828541978493160691244 ,
+ 0.2190383628278015915036,0.3062578731251097141630,0.3439301521590905075243,
+ 0.1814378811044508321704,0.5751726929430913681784,0.4418116408800580319216,0.2359003381269093035932,0.6062085389345149843976 ,
+ 0.2357883305794587769366,0.2659581411763266567405,0.2453412157151133865529 ,
+ 0.1718045618038900324009,0.5254058588311405486593,0.406124205051207498585, 0.2208234097178256027938,0.5535704713264770759906 ,
+ 0.2297740943495505672178,0.2522914667188620452265,0.2255928995139138970583 ,
+ 0.255152333558011423786, 0.5539346979946898619218,0.4591760625013173724440,0.2979094145476890442836,0.5813605948770583786711 ,
+ 0.4178206413298739541062,0.3800327928667431298671,0.2559009023296956453208 ,
+ 0.0786381978942892051476,0.2507090910879711254111,0.1923914651044380252909,0.1024315495419729910021,0.2642508697778033210923 ,
+ 0.1017143270719664260859,0.1152371518487332324732,0.1068312716501549353154 ,
+ 0.1931728416583101681781,0.6924624191277827245372,0.5213254583603328384811,0.2617870559185208612085,0.7306012370300282166014 ,
+ 0.2239452735136546190908,0.2812679063146140134855,0.2892076880831473406630 ,
+ 0.3968171941968219318397,1.09247302468375151463, 0.8610300469787290911228,0.4939695572954598823401,1.149822596137767938274 ,
+ 0.5716619981842931963456,0.5855773582603787108525,0.4787315376620214779635 };
+ double result16[256]={0.1369291375410663369472,0.5588092048492155905493,0.4127633888838795339638,0.1945856522217737638592,0.5901677185749256704384 ,
+ 0.1357509820803011191259,0.1977693506556700286936,0.2287617707817625745115,0.1848551318024805323326,0.3583059286285278921547 ,
+ 0.3053103030283391694510,0.2101234636160017044126,0.3754389483168098506916,0.3172577135961544003706,0.2763457047440365799140 ,
+ 0.1703602043449341518766 ,
+ 0.0877099188241009936062,0.3579450719959849647189,0.2643954674855681918899,0.1246417823641658567668,0.3780317587503042031649 ,
+ 0.0869552516898331046002,0.1266810994606728801859,0.1465332850673101428018,0.1184089003682757823555,0.2295127573178283864053 ,
+ 0.1955664249089870132536,0.1345945228879510124909,0.2404873080457204104210,0.203219335238222109652, 0.1770131599873631389475 ,
+ 0.1091241788437475462859 ,
+ 0.1988151828274209720338,0.8113667859364313006410,0.5993145805128781145044,0.2825299473639234504319,0.8568979909927945115555 ,
+ 0.1971045520768189285299,0.287152539732276168571, 0.3321521927227535364580,0.2684016527517738559538,0.5202447045798785918436 ,
+ 0.4432973493130339392998,0.30509017719196090956, 0.5451211078267039766843,0.4606444724966738402117,0.4012420058936001510119 ,
+ 0.2473556452745266642790 ,
+ 0.0094666816925501173080,0.0386336243999785347580,0.0285366554341297228026,0.0134528009494570312266,0.0408016148885166698990 ,
+ 0.0093852291768059120658,0.0136729079348656499399,0.0158155883130832522476,0.0127800753253386294162,0.0247717048087195516881 ,
+ 0.0211078190378471211575,0.0145270172726550076542,0.0259562068565215887939,0.0219338107509826525654,0.0191053333928335386527 ,
+ 0.0117779594363369693316 ,
+ 0.1043030167001093577728,0.4256616734190865058984,0.3144142102774669100818,0.1482217072111654543321,0.4495483905894361309485 ,
+ 0.1034055804720993287926,0.1506468254648987425970,0.174254678198354717722, 0.1408096789751012989367,0.272932335137809511938 ,
+ 0.2325639831473396978989,0.1600573225552646139391,0.2859830683182053578939,0.2416646828695165061252,0.210500782919751050493 ,
+ 0.1297684594960265003216 ,
+ 0.0571366905221716223084,0.2331754159251516189677,0.1722345910669886293043,0.0811951377968477827629,0.2462604446206972941269 ,
+ 0.0566450792759636348461,0.0825236059037830066432,0.0954558740030149316391,0.0771348644043414743976,0.1495110195240048345244 ,
+ 0.1273974306025911218399,0.0876786309157438353834,0.1566601483450788256935,0.1323827501073594481440,0.1153113157114278863880 ,
+ 0.0710865375167586688310 ,
+ 0.0897912064187782466007,0.3664388278665740572571,0.2706693645994189267867,0.1275994341199866433101,0.3870021559463034388493 ,
+ 0.08901863162519749184, 0.1296871426120334014343,0.1500104050157337609583,0.121218650721939893988, 0.2349589150731871967093 ,
+ 0.2002070628157982257189,0.1377883453718138639932,0.2461938832839972723932,0.2080415707060042362908,0.1812135434663988964310 ,
+ 0.1117136100363851081152 ,
+ 0.0607503719817294868255,0.2479228867648642919974,0.1831277832127918003824,0.0863304258469818203148,0.2618354944672221518154 ,
+ 0.0602276681673398900374,0.0877429145810092459001,0.1014931001520641418168,0.0820133553851117719224,0.1589670309645665469134 ,
+ 0.1354548404517885995535,0.0932239755978389733615,0.1665683153801736371413,0.1407554627243530753766,0.1226043241068286160367 ,
+ 0.0755824944981801360999 ,
+ 0.0277085632143499079050,0.1130789286734633775078,0.0835255421807369752285,0.0393757599150546533373,0.1194245419993072432341 ,
+ 0.0274701552637327192641,0.0400200034332363480116,0.0462915351733086607999,0.0374067214402037592769,0.0725056963898744188946 ,
+ 0.0617816630073779321508,0.0425199441037594910719,0.0759726820702821964426,0.0641993046204846901093,0.0559204751188750043278 ,
+ 0.0344735720685122454254 ,
+ 0.1684761413360341408829,0.6875528486244794068583,0.5078596439934851547449,0.2394160982416763117087,0.7261360273796675368629 ,
+ 0.1670265515008234058492,0.2433332866279651618413,0.2814660277470227844887,0.2274437703436615054731,0.440855769321226442781 ,
+ 0.3756505203205803833377,0.2585336546326343909463,0.4619360528777511909482,0.3903504860661412556588,0.3400127894335067679776 ,
+ 0.209609367156386977582 ,
+ 0.0458692245814266291726,0.1871927726683430270871,0.1382695964036666780306,0.0651832994961140249623,0.1976974083832430950647 ,
+ 0.0454745600243270306495,0.0662497911215368939786,0.0766317909253355217247,0.0619237198739692532024,0.1200271571431572731337 ,
+ 0.1022744107508182648259,0.0703882352252384740909,0.1257664639258653793696,0.1062766156017563717873,0.0925717011049985438742 ,
+ 0.0570681347532181540427 ,
+ 0.0242732090263575867040,0.0990592132451698637041,0.0731699052278139971950,0.0344938870917280079875,0.1046180867770489658630 ,
+ 0.0240643592937276537547,0.0350582562168871778030,0.0405522329223763147721,0.0327689733128625759750,0.0635163184196280983240 ,
+ 0.0541218687007713472603,0.0372482500458589660397,0.066553461394560253783, 0.0562397670476394023753,0.0489873607271963315557 ,
+ 0.0301994807248194101212 ,
+ 0.1484266073536374686004,0.6057304962494031164155,0.4474217142677203162826,0.2109243417261047193190,0.6397220767671999430704 ,
+ 0.1471495262216242216891,0.2143753643927638896649,0.247970111687618482987, 0.2003767828970874909089,0.3883916479432811819095 ,
+ 0.3309461615137729850744,0.2277668098257397411022,0.4069632685035297625653,0.3438967551499154673422,0.2995495053023755072097 ,
+ 0.1846647661196834933062 ,
+ 0.0331452159959298997549,0.1352659640442576416408,0.0999139549510789648501,0.0471016146630244963989,0.1428566399910645989824 ,
+ 0.0328600304034029899736,0.0478722641694215370056,0.0553743231012384373724,0.0447462343046726856999,0.0867319228783796081217 ,
+ 0.0739037440926125499541,0.0508627141924161210729,0.0908791602628282874088,0.0767957472920304112796,0.0668925419218501238205 ,
+ 0.0412375763955288299201 ,
+ 0.1508933068171264824109,0.6157971218818100167525,0.4548574087312337033140,0.2144296900585161147479,0.6503536079439788952783 ,
+ 0.1495950018937773073890,0.2179380652168350362974,0.2520911230909432809710,0.2037068415144771826864,0.3948463226588642127624 ,
+ 0.3364461505898876381160,0.2315520628717731010937,0.4137265846904019661601,0.3496119699388837709364,0.3045277138405338979155 ,
+ 0.1877337069762743115842 ,
+ 0.1821650579634931654827,0.7434174567948435008447,0.5491239338208003806230,0.2588689832740145302381,0.7851355715297718695922 ,
+ 0.1805976869739845391827,0.2631044485676965472010,0.3043355269932461748539,0.2459238873796954771844,0.4766759028019415533883 ,
+ 0.4061726382474953322976,0.2795398672369437398366,0.4994689881937890429953,0.4220669962905158612010,0.3676392930435437023107 ,
+ 0.2266404145710782247480 };
+ double out1[1],out2[4],out4[16],out8[64],out16[256];
+
+
+ dmulma(in1, 1, 16, in2, 16, 1, out1);
+ dmulma(in1, 2, 8, in2, 8, 2, out2);
+ dmulma(in1, 4, 4, in2, 4, 4, out4);
+ dmulma(in1, 8, 2, in2, 2, 8, out8);
+ dmulma(in1, 16, 1, in2, 1, 16, out16);
+
+
+ assert( (fabs(out1[0]-result1[0]) / fabs(out1[0])) <1e-16);
+ for (i=0;i<4;i++) assert( (fabs(out2[i]-result2[i]) / fabs(out2[i])) <3e-16);
+ for (i=0;i<16;i++) assert( (fabs(out4[i]-result4[i]) / fabs(out4[i])) <3e-16);
+ for (i=0;i<64;i++) assert( (fabs(out8[i]-result8[i]) / fabs(out8[i])) <3e-16);
+ for (i=0;i<256;i++) assert( (fabs(out16[i]-result16[i]) / fabs(out16[i])) <1e-16);
+}
+
+
+
+
+
+
+static int testDoubleMultiplication(void) {
+
+ printf("\n>>>> Matrix Double Multiplication Tests\n");
+ dmulmaTest();
+ dmulma2Test();
+ zmulmaTest();
+ return 0;
+}
+
+
+
+int main(void) {
+
+ assert(testDoubleMultiplication() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/testFloatMatrixMultiplication.c b/2.3-1/src/c/matrixOperations/multiplication/testFloatMatrixMultiplication.c
new file mode 100644
index 00000000..f8ba0cde
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/testFloatMatrixMultiplication.c
@@ -0,0 +1,213 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "matrixMultiplication.h"
+
+int testFloatMultiplication(void);
+
+static void cmulmaTest(void) {
+ float realM1[4] = {1.0f, 2.0f, 3.0f, 4.0f};
+ float imagM1[4] = {1.0f, 2.0f, 3.0f, 4.0f};
+ float realM3[6] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
+ float imagM3[6] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
+
+ floatComplex *M1;
+ floatComplex *M2;
+ floatComplex M1_mul_M2[4];
+ floatComplex *M3;
+ floatComplex *M4;
+ floatComplex M3_mul_M4[4];
+ floatComplex miscM3_mul_M4[9];
+
+ int i = 0;
+
+ printf("\n>>>> Matrix Complex Float Multiplication Tests\n");
+
+ M1 = FloatComplexMatrix(realM1, imagM1, 4);
+ M2 = FloatComplexMatrix(realM1, imagM1, 4);
+
+ /*
+ [ 1+1.%i 3+3.%i] * [ 1+1.%i 3+3.%i] = [ 14.%i 30.%i ]
+ [ 2+2.%i 3+3.%i] [ 2+2.%i 3+3.%i] [ 20.%i 44.%i ]
+ */
+ cmulma(M1, 2, 2, M2, 2, 2, M1_mul_M2);
+ for (i = 0; i < 4; ++i)
+ {
+ printf("M1_mul_M2[%d] = %e + %e i\n", i, creals(M1_mul_M2[i]), cimags(M1_mul_M2[i]));
+ }
+ for (i = 0; i < 4; ++i)
+ {
+ assert(creals(M1_mul_M2[i]) == 0.0f);
+ }
+ assert(cimags(M1_mul_M2[0]) == 14.0f);
+ assert(cimags(M1_mul_M2[1]) == 20.0f);
+ assert(cimags(M1_mul_M2[2]) == 30.0f);
+ assert(cimags(M1_mul_M2[3]) == 44.0f);
+
+ M3 = FloatComplexMatrix(realM3, imagM3, 6);
+ M4 = FloatComplexMatrix(realM3, imagM3, 6);
+
+ /*
+ [ 1+1.%i 3+3.%i 5+5.%i ] * [ 1+1.%i 4+4.%i ] = [ 44.%i 98.%i ]
+ [ 2+2.%i 4+4.%i 6+6.%i ] [ 2+2.%i 5+5.%i ] [ 56.%i 128.%i ]
+ [ 3+3.%i 6+6.%i ]
+ */
+ cmulma(M3, 2, 3, M4, 3, 2, M3_mul_M4);
+ for (i = 0; i < 4; ++i)
+ {
+ printf("M3_mul_M4[%d] = %e + %e i\n", i, creals(M3_mul_M4[i]), cimags(M3_mul_M4[i]));
+ }
+ for (i = 0; i < 4; ++i)
+ {
+ assert(creals(M3_mul_M4[i]) == 0.0f);
+ }
+ assert(cimags(M3_mul_M4[0]) == 44.0f);
+ assert(cimags(M3_mul_M4[1]) == 56.0f);
+ assert(cimags(M3_mul_M4[2]) == 98.0f);
+ assert(cimags(M3_mul_M4[3]) == 128.0f);
+
+ /*
+ [ 1+1.%i 4+4.%i ] * [ 1+1.%i 3+3.%i 5+5.%i ] = [ 18.%i 38.%i 58.%i ]
+ [ 2+2.%i 5+5.%i ] [ 2+2.%i 4+4.%i 6+6.%i ] [ 24.%i 52.%i 80.%i ]
+ [ 3+3.%i 6+6.%i ] [ 30.%i 66.%i 102.%i ]
+ */
+ cmulma(M3, 3, 2, M4, 2, 3, miscM3_mul_M4);
+ for (i = 0; i < 9; ++i)
+ {
+ printf("miscM3_mul_M4[%d] = %e + %e i\n", i, creals(miscM3_mul_M4[i]), cimags(miscM3_mul_M4[i]));
+ }
+ for (i = 0; i < 9; ++i)
+ {
+ assert(creals(miscM3_mul_M4[i]) == 0.0);
+ }
+ assert(cimags(miscM3_mul_M4[0]) == 18.0);
+ assert(cimags(miscM3_mul_M4[1]) == 24.0);
+ assert(cimags(miscM3_mul_M4[2]) == 30.0);
+ assert(cimags(miscM3_mul_M4[3]) == 38.0);
+ assert(cimags(miscM3_mul_M4[4]) == 52.0);
+ assert(cimags(miscM3_mul_M4[5]) == 66.0);
+ assert(cimags(miscM3_mul_M4[6]) == 58.0);
+ assert(cimags(miscM3_mul_M4[7]) == 80.0);
+ assert(cimags(miscM3_mul_M4[8]) == 102.0);
+
+}
+
+static void smulmaTest(void) {
+ float M1[4] = {1.0f, 2.0f, 3.0f, 4.0f};
+ float M2[4] = {1.0f, 2.0f, 3.0f, 4.0f};
+ float M1_by_M2[4];
+ float M3[4] = {1.0f, 0.0f, 1.0f, 0.0f};
+ float M4[4] = {0.0f, 1.0f, 0.0f, 1.0f};
+ float M3_by_M4[4];
+ float M5[4] = {1.0f, 0.0f, 0.0f, 1.0f};
+ float M6[4] = {42.0f, 51.0f, 69.0f, 1664.0f};
+ float M5_by_M6[4];
+ float M7[6] = {1.0f, 4.0f, 2.0f, 5.0f, 3.0f, 6.0f};
+ float M8[6] = {1.0f, 3.0f, 5.0f, 2.0f, 4.0f, 6.0f};
+ float M7_by_M8[4];
+ float miscM7_by_M8[9];
+
+ int i = 0;
+
+ printf("\n>>>> Matrix Float Multiplication Tests\n");
+ /*
+ [ 1 3 ] * [ 1 3 ] = [ 7 15 ]
+ [ 2 4 ] [ 2 4 ] [10 22 ]
+ */
+ smulma(M1, 2, 2, M2, 2, 2, M1_by_M2);
+ for (i = 0; i < 4; ++i) {
+ printf("M1_by_M2[%d] = %e\n", i, M1_by_M2[i]);
+ }
+ assert(M1_by_M2[0] == 7.0f);
+ assert(M1_by_M2[1] == 10.0f);
+ assert(M1_by_M2[2] == 15.0f);
+ assert(M1_by_M2[3] == 22.0f);
+ /*
+ [ 1 1 ] * [ 0 0 ] = [ 1 1 ]
+ [ 0 0 ] [ 1 1 ] [ 0 0 ]
+ */
+ smulma(M3, 2, 2, M4, 2, 2, M3_by_M4);
+ for (i = 0; i < 4; ++i) {
+ printf("M3_by_M4[%d] = %e\n", i, M3_by_M4[i]);
+ }
+ assert(M3_by_M4[0] == 1.0f);
+ assert(M3_by_M4[1] == 0.0f);
+ assert(M3_by_M4[2] == 1.0f);
+ assert(M3_by_M4[3] == 0.0f);
+
+ /*
+ [ 1 0 ] * [ 42 69 ] = [ 42 69 ]
+ [ 0 1 ] [ 51 1664 ] [ 51 1664 ]
+ */
+ smulma(M5, 2, 2, M6, 2, 2, M5_by_M6);
+ for (i = 0; i < 4; ++i) {
+ printf("M5_by_M6[%d] = %e\n", i, M5_by_M6[i]);
+ }
+ assert(M5_by_M6[0] == 42.0f);
+ assert(M5_by_M6[1] == 51.0f);
+ assert(M5_by_M6[2] == 69.0f);
+ assert(M5_by_M6[3] == 1664.0f);
+
+ /*
+ [ 1 2 3 ] * [ 1 2 ] = [ 22 28 ]
+ [ 4 5 6 ] [ 3 4 ] [ 49 64 ]
+ [ 5 6 ]
+ */
+ smulma(M7, 2, 3, M8, 3, 2, M7_by_M8);
+ for (i = 0; i < 4; ++i) {
+ printf("M7_by_M8[%d] = %e\n", i, M7_by_M8[i]);
+ }
+ assert(M7_by_M8[0] == 22.0f);
+ assert(M7_by_M8[1] == 49.0f);
+ assert(M7_by_M8[2] == 28.0f);
+ assert(M7_by_M8[3] == 64.0f);
+
+ /*
+ [ 1 5 ] * [ 1 5 4 ] = [ 16 15 34 ]
+ [ 4 3 ] [ 3 2 6 ] [ 13 26 34 ]
+ [ 2 6 ] [ 20 22 44 ]
+ */
+ smulma(M7, 3, 2, M8, 2, 3, miscM7_by_M8);
+ for (i = 0; i < 9; ++i) {
+ printf("miscM7_by_M8[%d] = %e\n", i, miscM7_by_M8[i]);
+ }
+ assert(miscM7_by_M8[0] == 16.0f);
+ assert(miscM7_by_M8[1] == 13.0f);
+ assert(miscM7_by_M8[2] == 20.0f);
+ assert(miscM7_by_M8[3] == 15.0f);
+ assert(miscM7_by_M8[4] == 26.0f);
+ assert(miscM7_by_M8[5] == 22.0f);
+ assert(miscM7_by_M8[6] == 34.0f);
+ assert(miscM7_by_M8[7] == 34.0f);
+ assert(miscM7_by_M8[8] == 44.0f);
+
+
+
+}
+
+int testFloatMultiplication(void) {
+
+ printf("\n>>>> Matrix Multiplication Tests\n");
+ smulmaTest();
+ cmulmaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testFloatMultiplication() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj b/2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj
new file mode 100644
index 00000000..57565ddc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C4FBEB3F-D766-4C74-9377-7D4434A2FC6C}</ProjectGuid>
+ <RootNamespace>testDoubleMatrixMultiplication</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMatrixMultiplication.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj.filters b/2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj.filters
new file mode 100644
index 00000000..91469343
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/test_DoubleMatrixMultiplication/testDoubleMatrixMultiplication.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMatrixMultiplication.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj b/2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj
new file mode 100644
index 00000000..12758bf1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{4CE33021-55F3-46CC-A548-A151D07B24CF}</ProjectGuid>
+ <RootNamespace>testFloatMatrixMultiplication</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMatrixMultiplication.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj.filters b/2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj.filters
new file mode 100644
index 00000000..3f7d25f1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/test_FloatMatrixMultiplication/testFloatMatrixMultiplication.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMatrixMultiplication.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/multiplication/u16mulma.c b/2.3-1/src/c/matrixOperations/multiplication/u16mulma.c
new file mode 100644
index 00000000..b15d8441
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/u16mulma.c
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+** \brief Compute a multiplication for uint16 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+
+/* dgemm function of lapack library does not support uint8,uint16,int8 and int16 datatype so removed*/
+
+#include "matrixMultiplication.h"
+
+void u16mulma(uint16 *in1,int lines1,int columns1,
+ uint16 *in2,int lines2,int columns2,
+ uint16 *out)
+{
+
+ /* Do Not Use Any BLAS Function*/
+ int i = 0;
+ int k = 0;
+ uint16 accu = 0;
+
+ /* How to convert 2 index matrixes to one.
+ ** #define in1(a,b) in1[a+b*lines1]
+ ** #define in2(c,d) in2[c+d*lines2]
+ */
+ for(i=0;i < lines1 * columns2; ++i)
+ {
+ accu = 0;
+ for(k=0;k < columns1; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1] * in2[k + (i / lines1) * lines2];
+
+ }
+ out[i] = accu;
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/u8mulma.c b/2.3-1/src/c/matrixOperations/multiplication/u8mulma.c
new file mode 100644
index 00000000..fa4f8518
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/u8mulma.c
@@ -0,0 +1,54 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*
+** \brief Compute a multiplication for uint8 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+
+
+/* dgemm function of lapack library does not support uint8,uint16,int8 and int16 datatype so removed*/
+
+#include "matrixMultiplication.h"
+
+void u8mulma(uint8 *in1,int lines1,int columns1,
+ uint8 *in2,int lines2,int columns2,
+ uint8 *out)
+{
+
+ int i = 0;
+ int k = 0;
+ uint8 accu = 0;
+
+ /* How to convert 2 index matrixes to one.
+ ** #define in1(a,b) in1[a+b*lines1]
+ ** #define in2(c,d) in2[c+d*lines2]
+ */
+ for(i=0;i < lines1 * columns2; ++i)
+ {
+ accu = 0;
+ for(k=0;k < columns1; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1] * in2[k + (i / lines1) * lines2];
+
+ }
+ out[i] = accu;
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/multiplication/zmulma.c b/2.3-1/src/c/matrixOperations/multiplication/zmulma.c
new file mode 100644
index 00000000..6a38e7da
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/multiplication/zmulma.c
@@ -0,0 +1,103 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#ifndef WITHOUT_BLAS
+#include "lapack.h"
+#endif
+#include "matrixMultiplication.h"
+
+/*
+** \brief Compute a multiplication for doubles matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+void zmulma(doubleComplex *in1, int lines1, int columns1,
+ doubleComplex *in2, int lines2, int columns2,
+ doubleComplex *out)
+{
+#ifndef WITHOUT_BLAS
+ /*
+ ** USES BLAS DGEMM FUNCTION.
+ */
+ int i = 0;
+ double One = 1;
+ double MinusOne = -1;
+ double Zero = 0;
+
+ double *in1Real = (double*)malloc((unsigned int) lines1 * (unsigned int) columns1 * sizeof(double));
+ double *in1Imag = (double*)malloc((unsigned int) lines1 * (unsigned int) columns1 * sizeof(double));
+ double *in2Real = (double*)malloc((unsigned int) lines2 * (unsigned int) columns2 * sizeof(double));
+ double *in2Imag = (double*)malloc((unsigned int) lines2 * (unsigned int) columns2 * sizeof(double));
+
+ double *RealOut = (double*)malloc((unsigned int) lines1 * (unsigned int) columns2 * sizeof(double));
+ double *ImagOut = (double*)malloc((unsigned int) lines1 * (unsigned int) columns2 * sizeof(double));
+
+ zreala(in1, lines1 * columns1, in1Real);
+ zreala(in2, lines2 * columns2, in2Real);
+ zimaga(in1, lines1 * columns1, in1Imag);
+ zimaga(in2, lines2 * columns2, in2Imag);
+
+ /* Cr <- 1*Ar*Br + 0*Cr */
+ dgemm_("N","N", &lines1, &columns2, &columns1, &One,
+ in1Real, &lines1, in2Real, &lines2, &Zero, RealOut, &lines1);
+
+
+ /* Cr <- -1*Ai*Bi + 1*Cr */
+ dgemm_("N","N", &lines1, &columns2, &columns1, &MinusOne,
+ in1Imag, &lines1, in2Imag, &lines2, &One, RealOut, &lines1);
+
+ /* Ci <- 1*Ar*Bi + 0*Ci */
+ dgemm_("N","N", &lines1, &columns2, &columns1, &One,
+ in1Real, &lines1, in2Imag, &lines2, &Zero, ImagOut, &lines1);
+
+ /* Ci <- 1*Ai*Br + 1*Ci */
+ dgemm_("N","N", &lines1, &columns2, &columns1, &One,
+ in1Imag, &lines1, in2Real, &lines2, &One, ImagOut, &lines1);
+
+ /* Now fill output matrix */
+ for(i = 0 ; i < lines1 * columns2 ; ++i)
+ {
+ out[i] = DoubleComplex(RealOut[i], ImagOut[i]);
+ }
+ /* FREE allocated variguru_dim_structables */
+ free(in1Real);
+ free(in2Real);
+ free(in1Imag);
+ free(in2Imag);
+ free(RealOut);
+ free(ImagOut);
+#else
+ /*
+ ** DO NOT USE ANY BLAS FUNCTION.
+ */
+ int i = 0;
+ int k = 0;
+ doubleComplex accu = DoubleComplex(0, 0);
+
+ for (i = 0 ; i < lines1 * columns2 ; ++i)
+ {
+ accu = DoubleComplex(0,0);
+ for (k = 0; k < columns1 ; ++k)
+ {
+ accu = zadds(accu,
+ zmuls(in1[i % lines1 + k *lines1] ,
+ in2[k + (i / lines1) *lines2] ));
+ }
+ out[i] = accu;
+ }
+#endif
+}
diff --git a/2.3-1/src/c/matrixOperations/norm/dnorma.c b/2.3-1/src/c/matrixOperations/norm/dnorma.c
new file mode 100644
index 00000000..c912f857
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/norm/dnorma.c
@@ -0,0 +1,72 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+ /*This function calculates norms for matrices*/
+ /*Acceptable norms are: 1, 2, 'inf', 'fro', */
+
+#include "norm.h"
+#include <math.h>
+
+double dnorma (double *in, int row, int col, int norm)
+{
+ double res = 0, sum = 0;
+ int col_count, row_count;
+
+ switch (norm)
+ {
+ case 1: /*largest column sum*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ sum = 0;
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ sum += in[col_count*row+row_count];
+ }
+ if (sum >= res)
+ res = sum;
+ }
+ break;
+
+ case 2: /*Largest singular value of the matrix*/
+ break;
+
+ case 3: /*inf: largest row sum*/
+
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ sum = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ sum += in[col_count*row + row_count];
+ }
+ if(sum >= res)
+ res = sum;
+ }
+ break;
+
+ case 4: /*Frobenius norm*/
+
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ sum += in[col_count*row + row_count] * in[col_count*row + row_count];
+ }
+ }
+ res = sqrt(sum);
+
+ break;
+ }
+
+
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/norm/dnormv.c b/2.3-1/src/c/matrixOperations/norm/dnormv.c
new file mode 100644
index 00000000..5d20d606
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/norm/dnormv.c
@@ -0,0 +1,60 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+ /*This function calculates norms for vectors (row or column)*/
+
+#include "norm.h"
+#include <math.h>
+
+double dnormv (double *in, int size, int norm)
+{
+ double sum = 0;
+ double res = 0;
+ int counter = 0;
+
+ switch (norm)
+ {
+ case 0:
+ res = INFINITY;
+ break;
+ case 1: /*Addition of all elements*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += in[counter];
+ }
+ res = sum;
+ break;
+ case 2: /*Square root of addition of squares of all elements*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += in[counter]*in[counter];
+ }
+ res = sqrt(sum);
+ break;
+ case 3: /*Cube root of addition of cubes of all elements*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += pow(in[counter],3);
+ }
+ res = cbrt(sum);
+ break;
+ default : /*Nth root of addition of all elements raised to n*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += pow(in[counter],norm);
+ }
+ res = pow(sum, 1./norm);
+ break;
+ }
+
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/norm/snorma.c b/2.3-1/src/c/matrixOperations/norm/snorma.c
new file mode 100644
index 00000000..4bf2ccda
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/norm/snorma.c
@@ -0,0 +1,72 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+ /*This function calculates norms for matrices*/
+ /*Acceptable norms are: 1, 2, 'inf', 'fro', */
+
+#include "norm.h"
+#include <math.h>
+
+float dnorma (float *in, int row, int col, int norm)
+{
+ float res = 0, sum = 0;
+ int col_count, row_count;
+
+ switch (norm)
+ {
+ case 1: /*largest column sum*/
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ sum = 0;
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ sum += in[col_count*row+row_count];
+ }
+ if (sum >= res)
+ res = sum;
+ }
+ break;
+
+ case 2: /*Largest singular value of the matrix*/
+ break;
+
+ case 3: /*inf: largest row sum*/
+
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ sum = 0;
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ sum += in[col_count*row + row_count];
+ }
+ if(sum >= res)
+ res = sum;
+ }
+ break;
+
+ case 4: /*Frobenius norm*/
+
+ for(row_count = 0; row_count < row; row_count++)
+ {
+ for(col_count = 0; col_count < col; col_count++)
+ {
+ sum += in[col_count*row + row_count] * in[col_count*row + row_count];
+ }
+ }
+ res = sqrt(sum);
+
+ break;
+ }
+
+
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/norm/snormv.c b/2.3-1/src/c/matrixOperations/norm/snormv.c
new file mode 100644
index 00000000..03e9ed66
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/norm/snormv.c
@@ -0,0 +1,60 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+ /*This function calculates norms for vectors (row or column)*/
+
+#include "norm.h"
+#include <math.h>
+
+float dnormv (float *in, int size, int norm)
+{
+ float sum = 0;
+ float res = 0;
+ int counter = 0;
+
+ switch (norm)
+ {
+ case 0:
+ res = INFINITY;
+ break;
+ case 1: /*Addition of all elements*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += in[counter];
+ }
+ res = sum;
+ break;
+ case 2: /*Square root of addition of squares of all elements*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += in[counter]*in[counter];
+ }
+ res = sqrt(sum);
+ break;
+ case 3: /*Cube root of addition of cubes of all elements*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += pow(in[counter],3);
+ }
+ res = cbrt(sum);
+ break;
+ default : /*Nth root of addition of all elements raised to n*/
+ for (counter=0; counter < size; counter++)
+ {
+ sum += pow(in[counter],norm);
+ }
+ res = pow(sum, 1./norm);
+ break;
+ }
+
+ return res;
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/ones/Makefile.am b/2.3-1/src/c/matrixOperations/ones/Makefile.am
new file mode 100644
index 00000000..8f1419c8
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/Makefile.am
@@ -0,0 +1,42 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixOnes_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixOnes.la
+
+HEAD = ../includes/matrixOnes.h
+
+libMatrixOnes_la_SOURCES = $(HEAD) \
+ sonesa.c \
+ donesa.c \
+ conesa.c \
+ zonesa.c
+
+check_PROGRAMS = testMatrixOnes
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixOnes.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixOnes_SOURCES = testMatrixOnes.c
+testMatrixOnes_LDADD = $(check_LDADD)
+testMatrixOnes_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixOnes
diff --git a/2.3-1/src/c/matrixOperations/ones/Makefile.in b/2.3-1/src/c/matrixOperations/ones/Makefile.in
new file mode 100644
index 00000000..b5a9bf34
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/Makefile.in
@@ -0,0 +1,710 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixOnes$(EXEEXT)
+TESTS = testMatrixOnes$(EXEEXT)
+subdir = src/c/matrixOperations/ones
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixOnes_la_LIBADD =
+am__objects_1 =
+am_libMatrixOnes_la_OBJECTS = $(am__objects_1) \
+ libMatrixOnes_la-sonesa.lo libMatrixOnes_la-donesa.lo \
+ libMatrixOnes_la-conesa.lo libMatrixOnes_la-zonesa.lo
+libMatrixOnes_la_OBJECTS = $(am_libMatrixOnes_la_OBJECTS)
+libMatrixOnes_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMatrixOnes_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testMatrixOnes_OBJECTS = testMatrixOnes-testMatrixOnes.$(OBJEXT)
+testMatrixOnes_OBJECTS = $(am_testMatrixOnes_OBJECTS)
+testMatrixOnes_DEPENDENCIES = $(check_LDADD)
+testMatrixOnes_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatrixOnes_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixOnes_la_SOURCES) $(testMatrixOnes_SOURCES)
+DIST_SOURCES = $(libMatrixOnes_la_SOURCES) $(testMatrixOnes_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixOnes_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixOnes.la
+HEAD = ../includes/matrixOnes.h
+libMatrixOnes_la_SOURCES = $(HEAD) \
+ sonesa.c \
+ donesa.c \
+ conesa.c \
+ zonesa.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixOnes.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixOnes_SOURCES = testMatrixOnes.c
+testMatrixOnes_LDADD = $(check_LDADD)
+testMatrixOnes_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/ones/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/ones/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixOnes.la: $(libMatrixOnes_la_OBJECTS) $(libMatrixOnes_la_DEPENDENCIES)
+ $(libMatrixOnes_la_LINK) -rpath $(pkglibdir) $(libMatrixOnes_la_OBJECTS) $(libMatrixOnes_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixOnes$(EXEEXT): $(testMatrixOnes_OBJECTS) $(testMatrixOnes_DEPENDENCIES)
+ @rm -f testMatrixOnes$(EXEEXT)
+ $(testMatrixOnes_LINK) $(testMatrixOnes_OBJECTS) $(testMatrixOnes_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixOnes_la-conesa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixOnes_la-donesa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixOnes_la-sonesa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixOnes_la-zonesa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixOnes-testMatrixOnes.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixOnes_la-sonesa.lo: sonesa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -MT libMatrixOnes_la-sonesa.lo -MD -MP -MF $(DEPDIR)/libMatrixOnes_la-sonesa.Tpo -c -o libMatrixOnes_la-sonesa.lo `test -f 'sonesa.c' || echo '$(srcdir)/'`sonesa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixOnes_la-sonesa.Tpo $(DEPDIR)/libMatrixOnes_la-sonesa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sonesa.c' object='libMatrixOnes_la-sonesa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -c -o libMatrixOnes_la-sonesa.lo `test -f 'sonesa.c' || echo '$(srcdir)/'`sonesa.c
+
+libMatrixOnes_la-donesa.lo: donesa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -MT libMatrixOnes_la-donesa.lo -MD -MP -MF $(DEPDIR)/libMatrixOnes_la-donesa.Tpo -c -o libMatrixOnes_la-donesa.lo `test -f 'donesa.c' || echo '$(srcdir)/'`donesa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixOnes_la-donesa.Tpo $(DEPDIR)/libMatrixOnes_la-donesa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='donesa.c' object='libMatrixOnes_la-donesa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -c -o libMatrixOnes_la-donesa.lo `test -f 'donesa.c' || echo '$(srcdir)/'`donesa.c
+
+libMatrixOnes_la-conesa.lo: conesa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -MT libMatrixOnes_la-conesa.lo -MD -MP -MF $(DEPDIR)/libMatrixOnes_la-conesa.Tpo -c -o libMatrixOnes_la-conesa.lo `test -f 'conesa.c' || echo '$(srcdir)/'`conesa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixOnes_la-conesa.Tpo $(DEPDIR)/libMatrixOnes_la-conesa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='conesa.c' object='libMatrixOnes_la-conesa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -c -o libMatrixOnes_la-conesa.lo `test -f 'conesa.c' || echo '$(srcdir)/'`conesa.c
+
+libMatrixOnes_la-zonesa.lo: zonesa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -MT libMatrixOnes_la-zonesa.lo -MD -MP -MF $(DEPDIR)/libMatrixOnes_la-zonesa.Tpo -c -o libMatrixOnes_la-zonesa.lo `test -f 'zonesa.c' || echo '$(srcdir)/'`zonesa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixOnes_la-zonesa.Tpo $(DEPDIR)/libMatrixOnes_la-zonesa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zonesa.c' object='libMatrixOnes_la-zonesa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixOnes_la_CFLAGS) $(CFLAGS) -c -o libMatrixOnes_la-zonesa.lo `test -f 'zonesa.c' || echo '$(srcdir)/'`zonesa.c
+
+testMatrixOnes-testMatrixOnes.o: testMatrixOnes.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixOnes_CFLAGS) $(CFLAGS) -MT testMatrixOnes-testMatrixOnes.o -MD -MP -MF $(DEPDIR)/testMatrixOnes-testMatrixOnes.Tpo -c -o testMatrixOnes-testMatrixOnes.o `test -f 'testMatrixOnes.c' || echo '$(srcdir)/'`testMatrixOnes.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixOnes-testMatrixOnes.Tpo $(DEPDIR)/testMatrixOnes-testMatrixOnes.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixOnes.c' object='testMatrixOnes-testMatrixOnes.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixOnes_CFLAGS) $(CFLAGS) -c -o testMatrixOnes-testMatrixOnes.o `test -f 'testMatrixOnes.c' || echo '$(srcdir)/'`testMatrixOnes.c
+
+testMatrixOnes-testMatrixOnes.obj: testMatrixOnes.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixOnes_CFLAGS) $(CFLAGS) -MT testMatrixOnes-testMatrixOnes.obj -MD -MP -MF $(DEPDIR)/testMatrixOnes-testMatrixOnes.Tpo -c -o testMatrixOnes-testMatrixOnes.obj `if test -f 'testMatrixOnes.c'; then $(CYGPATH_W) 'testMatrixOnes.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixOnes.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixOnes-testMatrixOnes.Tpo $(DEPDIR)/testMatrixOnes-testMatrixOnes.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixOnes.c' object='testMatrixOnes-testMatrixOnes.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixOnes_CFLAGS) $(CFLAGS) -c -o testMatrixOnes-testMatrixOnes.obj `if test -f 'testMatrixOnes.c'; then $(CYGPATH_W) 'testMatrixOnes.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixOnes.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/ones/conesa.c b/2.3-1/src/c/matrixOperations/ones/conesa.c
new file mode 100644
index 00000000..f1cf2d8b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/conesa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ones.h"
+
+void conesa ( floatComplex* in , int rows ,int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = FloatComplex ( 1.0f , 0);
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/ones/donesa.c b/2.3-1/src/c/matrixOperations/ones/donesa.c
new file mode 100644
index 00000000..5380755d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/donesa.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ones.h"
+
+void donesa ( double* in , int rows ,int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = 1 ;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/ones/i16onesa.c b/2.3-1/src/c/matrixOperations/ones/i16onesa.c
new file mode 100644
index 00000000..d8dee192
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/i16onesa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "ones.h"
+
+void i16onesa ( int16* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (int16)1 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/ones/i8onesa.c b/2.3-1/src/c/matrixOperations/ones/i8onesa.c
new file mode 100644
index 00000000..11b48bf2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/i8onesa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "ones.h"
+
+void i8onesa ( int8* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (int8)1 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/ones/sonesa.c b/2.3-1/src/c/matrixOperations/ones/sonesa.c
new file mode 100644
index 00000000..fef8aa0f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/sonesa.c
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ones.h"
+
+void sonesa ( float* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = 1.0f ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/ones/testMatrixOnes.c b/2.3-1/src/c/matrixOperations/ones/testMatrixOnes.c
new file mode 100644
index 00000000..7668f30b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/testMatrixOnes.c
@@ -0,0 +1,160 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+
+#include "ones.h"
+
+#define ROWS 20
+#define COLS 50
+
+static void donesaTest ( void )
+{
+ int i = 0 ;
+
+ double result = 0 ;
+
+ double in [ROWS*COLS] ;
+
+ donesa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++ )
+ {
+ result = 1 ;
+
+ printf ( "\t\t %d in : %e\tresult : %e\tassert : %e \n" , i, in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+
+ if ( in[i] < 1e-14 && result < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( in[i] - result) / fabs( in[i]) < 3e-16 ) ;
+ }
+}
+
+
+static void sonesaTest ( void )
+{
+ int i = 0 ;
+
+ float result = 0 ;
+
+ float in[ROWS*COLS] ;
+
+ sonesa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++)
+ {
+ result = 1.0f ;
+
+ printf ( "\t\t %d in : %e\tresult : %e\tassert : %e \n" , i, in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+ if ( in[i] < 1e-6 && result < 1e-6 )
+ assert(1);
+ else
+ assert ( fabs ( in[i] - result) / fabs( in[i]) < 1e-6 ) ;
+ }
+}
+
+
+static void zonesaTest ( void )
+{
+ int i = 0 ;
+
+ doubleComplex result = DoubleComplex ( 0 , 0) ;
+
+ doubleComplex in[ROWS*COLS] ;
+
+ zonesa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++ )
+ {
+ result = DoubleComplex ( 1 , 0 ) ;
+
+
+ printf ( "\t\t %d in : %e %e*i\tresult : %e %e*i\n" , i, zreals( in[i]) , zimags(in[i]), zreals ( result ),zimags(result) ) ;
+
+ if ( zreals( in[i]) < 1e-14 && zreals( result) < 1e-14 )
+ assert(1);
+ else
+ assert ( fabs ( zreals(in[i]) - zreals(result)) / fabs( zreals(in[i])) < 1e-16 ) ;
+
+ if ( zimags ( in[i]) < 1e-14 )
+ assert (1);
+ else
+ assert (0);
+
+ }
+}
+
+
+
+
+
+static void conesaTest ( void )
+{
+ int i = 0 ;
+
+ floatComplex result = FloatComplex ( 0 , 0 ) ;
+
+ floatComplex in[ROWS*COLS] ;
+
+ conesa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++)
+ {
+ result = FloatComplex ( 1.0f , 0 ) ;
+
+
+ printf ( "\t\t %d in : %e %e*i\tresult : %e %e*i\n" , i, creals( in[i]) , cimags(in[i]), creals ( result ),cimags(result) ) ;
+ if ( creals( in[i]) < 1e-6 && creals( result) < 1e-6 )
+ assert(1);
+ else
+ assert ( fabs ( creals(in[i]) - creals(result)) / fabs( creals(in[i])) < 1e-6 ) ;
+
+ if ( cimags ( in[i]) < 1e-6 )
+ assert (1);
+ else
+ assert (0);
+
+ }
+}
+
+
+
+static int testEye(void) {
+
+ printf("\n>>>> Matrix ONES Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ donesaTest();
+
+ printf("\n\n\t>>>> Matrix Float Realt Tests\n");
+ sonesaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ conesaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zonesaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testEye() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj b/2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj
new file mode 100644
index 00000000..b37976e9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D21BD764-EEC6-4474-9D4B-808EF2217CC4}</ProjectGuid>
+ <RootNamespace>testMatrixOnes</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixOnes.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj.filters b/2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj.filters
new file mode 100644
index 00000000..56b655d4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/test_MatrixOnes/testMatrixOnes.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixOnes.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/ones/u16onesa.c b/2.3-1/src/c/matrixOperations/ones/u16onesa.c
new file mode 100644
index 00000000..e91b5a72
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/u16onesa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "ones.h"
+
+void u16onesa ( uint16* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (uint16)1 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/ones/u8onesa.c b/2.3-1/src/c/matrixOperations/ones/u8onesa.c
new file mode 100644
index 00000000..be9a1bf3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/u8onesa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "ones.h"
+
+void u8onesa ( uint8* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (uint8)1 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/ones/zonesa.c b/2.3-1/src/c/matrixOperations/ones/zonesa.c
new file mode 100644
index 00000000..a6364c02
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/ones/zonesa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ones.h"
+
+void zonesa ( doubleComplex* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = DoubleComplex ( 1 , 0);
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/powm/Makefile.am b/2.3-1/src/c/matrixOperations/powm/Makefile.am
new file mode 100644
index 00000000..5f6ef268
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/Makefile.am
@@ -0,0 +1,86 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+libMatrixPow_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/operations/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes\
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixPow.la
+
+HEAD = ../includes/matrixPow.h
+
+libMatrixPow_la_SOURCES = $(HEAD) \
+ spowma.c\
+ dpowma.c\
+ cpowma.c\
+ zpowma.c
+
+check_PROGRAMS = testDoubleMatrixPow testFloatMatrixPow
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/src/c/matrixOperations/expm/libMatrixExponential.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la \
+ $(top_builddir)/src/c/matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la \
+ $(top_builddir)/src/c/matrixOperations/eye/libMatrixEye.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/division/libMatrixDivision.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ libMatrixPow.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes\
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/operations/includes\
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleMatrixPow_SOURCES = testDoublePowm.c
+testDoubleMatrixPow_LDADD = $(check_LDADD)
+testDoubleMatrixPow_CFLAGS = $(check_INCLUDES)
+
+testFloatMatrixPow_SOURCES = testFloatPowm.c
+testFloatMatrixPow_LDADD = $(check_LDADD)
+testFloatMatrixPow_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleMatrixPow testFloatMatrixPow
diff --git a/2.3-1/src/c/matrixOperations/powm/Makefile.in b/2.3-1/src/c/matrixOperations/powm/Makefile.in
new file mode 100644
index 00000000..20e16602
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/Makefile.in
@@ -0,0 +1,784 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleMatrixPow$(EXEEXT) \
+ testFloatMatrixPow$(EXEEXT)
+TESTS = testDoubleMatrixPow$(EXEEXT) testFloatMatrixPow$(EXEEXT)
+subdir = src/c/matrixOperations/powm
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixPow_la_LIBADD =
+am__objects_1 =
+am_libMatrixPow_la_OBJECTS = $(am__objects_1) \
+ libMatrixPow_la-spowma.lo libMatrixPow_la-dpowma.lo \
+ libMatrixPow_la-cpowma.lo libMatrixPow_la-zpowma.lo
+libMatrixPow_la_OBJECTS = $(am_libMatrixPow_la_OBJECTS)
+libMatrixPow_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMatrixPow_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleMatrixPow_OBJECTS = \
+ testDoubleMatrixPow-testDoublePowm.$(OBJEXT)
+testDoubleMatrixPow_OBJECTS = $(am_testDoubleMatrixPow_OBJECTS)
+testDoubleMatrixPow_DEPENDENCIES = $(check_LDADD)
+testDoubleMatrixPow_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleMatrixPow_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatMatrixPow_OBJECTS = \
+ testFloatMatrixPow-testFloatPowm.$(OBJEXT)
+testFloatMatrixPow_OBJECTS = $(am_testFloatMatrixPow_OBJECTS)
+testFloatMatrixPow_DEPENDENCIES = $(check_LDADD)
+testFloatMatrixPow_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatMatrixPow_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixPow_la_SOURCES) $(testDoubleMatrixPow_SOURCES) \
+ $(testFloatMatrixPow_SOURCES)
+DIST_SOURCES = $(libMatrixPow_la_SOURCES) \
+ $(testDoubleMatrixPow_SOURCES) $(testFloatMatrixPow_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixPow_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/includes \
+ -I $(top_builddir)/src/c/operations/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes\
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixPow.la
+HEAD = ../includes/matrixPow.h
+libMatrixPow_la_SOURCES = $(HEAD) \
+ spowma.c\
+ dpowma.c\
+ cpowma.c\
+ zpowma.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/src/c/matrixOperations/expm/libMatrixExponential.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la \
+ $(top_builddir)/src/c/matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la \
+ $(top_builddir)/src/c/matrixOperations/eye/libMatrixEye.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/division/libMatrixDivision.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ libMatrixPow.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes\
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/operations/includes\
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testDoubleMatrixPow_SOURCES = testDoublePowm.c
+testDoubleMatrixPow_LDADD = $(check_LDADD)
+testDoubleMatrixPow_CFLAGS = $(check_INCLUDES)
+testFloatMatrixPow_SOURCES = testFloatPowm.c
+testFloatMatrixPow_LDADD = $(check_LDADD)
+testFloatMatrixPow_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/powm/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/powm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixPow.la: $(libMatrixPow_la_OBJECTS) $(libMatrixPow_la_DEPENDENCIES)
+ $(libMatrixPow_la_LINK) -rpath $(pkglibdir) $(libMatrixPow_la_OBJECTS) $(libMatrixPow_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMatrixPow$(EXEEXT): $(testDoubleMatrixPow_OBJECTS) $(testDoubleMatrixPow_DEPENDENCIES)
+ @rm -f testDoubleMatrixPow$(EXEEXT)
+ $(testDoubleMatrixPow_LINK) $(testDoubleMatrixPow_OBJECTS) $(testDoubleMatrixPow_LDADD) $(LIBS)
+testFloatMatrixPow$(EXEEXT): $(testFloatMatrixPow_OBJECTS) $(testFloatMatrixPow_DEPENDENCIES)
+ @rm -f testFloatMatrixPow$(EXEEXT)
+ $(testFloatMatrixPow_LINK) $(testFloatMatrixPow_OBJECTS) $(testFloatMatrixPow_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-cpowma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-dpowma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-spowma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-zpowma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMatrixPow-testFloatPowm.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixPow_la-spowma.lo: spowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-spowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-spowma.Tpo -c -o libMatrixPow_la-spowma.lo `test -f 'spowma.c' || echo '$(srcdir)/'`spowma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixPow_la-spowma.Tpo $(DEPDIR)/libMatrixPow_la-spowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spowma.c' object='libMatrixPow_la-spowma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-spowma.lo `test -f 'spowma.c' || echo '$(srcdir)/'`spowma.c
+
+libMatrixPow_la-dpowma.lo: dpowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-dpowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-dpowma.Tpo -c -o libMatrixPow_la-dpowma.lo `test -f 'dpowma.c' || echo '$(srcdir)/'`dpowma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixPow_la-dpowma.Tpo $(DEPDIR)/libMatrixPow_la-dpowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dpowma.c' object='libMatrixPow_la-dpowma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-dpowma.lo `test -f 'dpowma.c' || echo '$(srcdir)/'`dpowma.c
+
+libMatrixPow_la-cpowma.lo: cpowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-cpowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-cpowma.Tpo -c -o libMatrixPow_la-cpowma.lo `test -f 'cpowma.c' || echo '$(srcdir)/'`cpowma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixPow_la-cpowma.Tpo $(DEPDIR)/libMatrixPow_la-cpowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cpowma.c' object='libMatrixPow_la-cpowma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-cpowma.lo `test -f 'cpowma.c' || echo '$(srcdir)/'`cpowma.c
+
+libMatrixPow_la-zpowma.lo: zpowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-zpowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-zpowma.Tpo -c -o libMatrixPow_la-zpowma.lo `test -f 'zpowma.c' || echo '$(srcdir)/'`zpowma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixPow_la-zpowma.Tpo $(DEPDIR)/libMatrixPow_la-zpowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zpowma.c' object='libMatrixPow_la-zpowma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-zpowma.lo `test -f 'zpowma.c' || echo '$(srcdir)/'`zpowma.c
+
+testDoubleMatrixPow-testDoublePowm.o: testDoublePowm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixPow_CFLAGS) $(CFLAGS) -MT testDoubleMatrixPow-testDoublePowm.o -MD -MP -MF $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Tpo -c -o testDoubleMatrixPow-testDoublePowm.o `test -f 'testDoublePowm.c' || echo '$(srcdir)/'`testDoublePowm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Tpo $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoublePowm.c' object='testDoubleMatrixPow-testDoublePowm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixPow_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixPow-testDoublePowm.o `test -f 'testDoublePowm.c' || echo '$(srcdir)/'`testDoublePowm.c
+
+testDoubleMatrixPow-testDoublePowm.obj: testDoublePowm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixPow_CFLAGS) $(CFLAGS) -MT testDoubleMatrixPow-testDoublePowm.obj -MD -MP -MF $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Tpo -c -o testDoubleMatrixPow-testDoublePowm.obj `if test -f 'testDoublePowm.c'; then $(CYGPATH_W) 'testDoublePowm.c'; else $(CYGPATH_W) '$(srcdir)/testDoublePowm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Tpo $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoublePowm.c' object='testDoubleMatrixPow-testDoublePowm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixPow_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixPow-testDoublePowm.obj `if test -f 'testDoublePowm.c'; then $(CYGPATH_W) 'testDoublePowm.c'; else $(CYGPATH_W) '$(srcdir)/testDoublePowm.c'; fi`
+
+testFloatMatrixPow-testFloatPowm.o: testFloatPowm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixPow_CFLAGS) $(CFLAGS) -MT testFloatMatrixPow-testFloatPowm.o -MD -MP -MF $(DEPDIR)/testFloatMatrixPow-testFloatPowm.Tpo -c -o testFloatMatrixPow-testFloatPowm.o `test -f 'testFloatPowm.c' || echo '$(srcdir)/'`testFloatPowm.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixPow-testFloatPowm.Tpo $(DEPDIR)/testFloatMatrixPow-testFloatPowm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatPowm.c' object='testFloatMatrixPow-testFloatPowm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixPow_CFLAGS) $(CFLAGS) -c -o testFloatMatrixPow-testFloatPowm.o `test -f 'testFloatPowm.c' || echo '$(srcdir)/'`testFloatPowm.c
+
+testFloatMatrixPow-testFloatPowm.obj: testFloatPowm.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixPow_CFLAGS) $(CFLAGS) -MT testFloatMatrixPow-testFloatPowm.obj -MD -MP -MF $(DEPDIR)/testFloatMatrixPow-testFloatPowm.Tpo -c -o testFloatMatrixPow-testFloatPowm.obj `if test -f 'testFloatPowm.c'; then $(CYGPATH_W) 'testFloatPowm.c'; else $(CYGPATH_W) '$(srcdir)/testFloatPowm.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixPow-testFloatPowm.Tpo $(DEPDIR)/testFloatMatrixPow-testFloatPowm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatPowm.c' object='testFloatMatrixPow-testFloatPowm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixPow_CFLAGS) $(CFLAGS) -c -o testFloatMatrixPow-testFloatPowm.obj `if test -f 'testFloatPowm.c'; then $(CYGPATH_W) 'testFloatPowm.c'; else $(CYGPATH_W) '$(srcdir)/testFloatPowm.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/powm/cpowma.c b/2.3-1/src/c/matrixOperations/powm/cpowma.c
new file mode 100644
index 00000000..d023a7aa
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/cpowma.c
@@ -0,0 +1,64 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "matrixPow.h"
+#include "spec.h"
+#include "pow.h"
+#include "matrixTranspose.h"
+#include "conj.h"
+#include "matrixInversion.h"
+#include "matrixMultiplication.h"
+
+void cpowma(floatComplex* in, int rows, floatComplex power, floatComplex* out){
+ int i=0, j=0;
+ int hermitian=0;
+ floatComplex *eigenvalues,*eigenvectors,*tmp;
+
+ /* Data initialization */
+ eigenvalues = (floatComplex*)malloc((unsigned int)(rows*rows)*sizeof(floatComplex));
+ eigenvectors = (floatComplex*)malloc((unsigned int)(rows*rows)*sizeof(floatComplex));
+ tmp = (floatComplex*)malloc((unsigned int)(rows*rows)*sizeof(floatComplex));
+
+ /* symmetric test*/
+ for(i=0;i<rows;i++) {
+ for (j=0;j<rows;j++)
+ if ((creals(in[i*rows+j])!=creals(in[j*rows+i])) || (cimags(in[i*rows+j])!=-cimags(in[j*rows+i]))) break;
+
+ if (j!=rows) break;
+ }
+
+ if ((i==rows)&&(j==rows)) hermitian=1;
+
+
+ /* find eigenvalues and eigenvectors */
+ cspec2a(in, rows, eigenvalues,eigenvectors);
+
+ /* make operation on eigenvalues and eigenvectors */
+ for (i=0;i<rows;i++)
+ eigenvalues[i+i*rows]=cpows(eigenvalues[i+i*rows],power);
+
+ cmulma(eigenvectors, rows, rows, eigenvalues, rows, rows, tmp);
+
+ if (hermitian){
+ ctransposea(eigenvectors, rows,rows, eigenvalues);
+ cconja(eigenvalues, rows*rows, eigenvalues);
+ }
+ else cinverma(eigenvectors, eigenvalues, rows);
+
+ cmulma(tmp, rows, rows, eigenvalues, rows, rows, out);
+
+ free(eigenvalues);
+ free(eigenvectors);
+ free(tmp);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/powm/dpowma.c b/2.3-1/src/c/matrixOperations/powm/dpowma.c
new file mode 100644
index 00000000..b38f9735
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/dpowma.c
@@ -0,0 +1,72 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "matrixPow.h"
+#include "spec.h"
+#include "pow.h"
+#include "matrixTranspose.h"
+#include "conj.h"
+#include "zeros.h"
+#include "matrixInversion.h"
+#include "matrixMultiplication.h"
+
+void dpowma(double* in, int rows, double power, double* out){
+ int i=0, j=0;
+ int symmetric=0;
+ doubleComplex *eigenvalues,*eigenvectors,*tmp;
+ double* ZEROS;
+
+ /* Data initialization */
+ eigenvalues = (doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ eigenvectors = (doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ tmp = (doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ ZEROS=(double*)malloc((unsigned int)(rows*rows)*sizeof(double));
+
+ /* symmetric test*/
+ for(i=0;i<rows;i++) {
+ for (j=0;j<rows;j++)
+ if (in[i*rows+j]!=in[j*rows+i]) break;
+
+ if (j!=rows) break;
+ }
+
+ if ((i==rows)&&(j==rows)) symmetric=1;
+
+
+
+ dzerosa(ZEROS,rows,rows);
+ tmp = DoubleComplexMatrix(in,ZEROS,rows*rows);
+ /* find eigenvalues and eigenvectors */
+ zspec2a(tmp, rows, eigenvalues,eigenvectors);
+/* for (i=0;i<rows*rows;i++) printf("%f+%f*i\n",zreals(eigenvalues[i]),zimags(eigenvalues[i])); */
+ /* make operation on eigenvalues and eigenvectors */
+ for (i=0;i<rows;i++)
+ eigenvalues[i+i*rows]=zpows(eigenvalues[i+i*rows],DoubleComplex(power,0));
+
+ zmulma(eigenvectors, rows, rows, eigenvalues, rows, rows, tmp);
+
+ if (symmetric){
+ ztransposea(eigenvectors, rows,rows, eigenvalues);
+ zconja(eigenvalues, rows*rows, eigenvalues);
+ }
+ else zinverma(eigenvectors, eigenvalues, rows);
+
+ zmulma(tmp, rows, rows, eigenvalues, rows, rows, eigenvectors);
+
+ for (i=0;i<rows*rows;i++) out[i]=zreals(eigenvectors[i]);
+
+ free(eigenvalues);
+ free(eigenvectors);
+ free(tmp);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/powm/spowma.c b/2.3-1/src/c/matrixOperations/powm/spowma.c
new file mode 100644
index 00000000..b416656a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/spowma.c
@@ -0,0 +1,72 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "matrixPow.h"
+#include "spec.h"
+#include "pow.h"
+#include "matrixTranspose.h"
+#include "conj.h"
+#include "zeros.h"
+#include "matrixInversion.h"
+#include "matrixMultiplication.h"
+
+void spowma(float* in, int rows, float power, float* out){
+ int i=0, j=0;
+ int symmetric=0;
+ floatComplex *eigenvalues,*eigenvectors,*tmp;
+ float* ZEROS;
+
+ /* Data initialization */
+ eigenvalues = (floatComplex*)malloc((unsigned int)(rows*rows)*sizeof(floatComplex));
+ eigenvectors = (floatComplex*)malloc((unsigned int)(rows*rows)*sizeof(floatComplex));
+ tmp = (floatComplex*)malloc((unsigned int)(rows*rows)*sizeof(floatComplex));
+ ZEROS = (float*)malloc((unsigned int)(rows*rows)*sizeof(float));
+
+ /* symmetric test*/
+ for(i=0;i<rows;i++) {
+ for (j=0;j<rows;j++)
+ if (in[i*rows+j]!=in[j*rows+i]) break;
+
+ if (j!=rows) break;
+ }
+
+ if ((i==rows)&&(j==rows)) symmetric=1;
+
+ szerosa(ZEROS,rows,rows);
+ tmp = FloatComplexMatrix(in,ZEROS,rows*rows);
+
+ /* find eigenvalues and eigenvectors */
+ cspec2a(tmp, rows, eigenvalues,eigenvectors);
+
+ /* make operation on eigenvalues and eigenvectors */
+ for (i=0;i<rows;i++)
+ eigenvalues[i+i*rows]=cpows(eigenvalues[i+i*rows],FloatComplex(power,0));
+
+ cmulma(eigenvectors, rows, rows, eigenvalues, rows, rows, tmp);
+
+ if (symmetric){
+ ctransposea(eigenvectors, rows,rows, eigenvalues);
+ cconja(eigenvalues, rows*rows, eigenvalues);
+ }
+ else cinverma(eigenvectors, eigenvalues, rows);
+
+ cmulma(tmp, rows, rows, eigenvalues, rows, rows, eigenvectors);
+
+ for (i=0;i<rows*rows;i++) out[i]=creals(eigenvectors[i]);
+
+
+ free(eigenvalues);
+ free(eigenvectors);
+ free(tmp);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/powm/testDoublePowm.c b/2.3-1/src/c/matrixOperations/powm/testDoublePowm.c
new file mode 100644
index 00000000..b948b540
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/testDoublePowm.c
@@ -0,0 +1,138 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixPow.h"
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+
+
+static void dpowmaTest(void){
+ double in1[4]={1,5,4,2};
+ double expand1=2.2;
+ double result1R[4]={ 27.93459280052221771484 , 23.580294119266994812278 ,
+ 18.864235295413593007652 , 32.650651624375619519469 };
+ double out1[4];
+ int i;
+
+ double in2[16]={ 2.5358983855694532394409 , 9.0725262500345706939697, 0.0026536155492067337036, 3.9639251008629798889160 ,
+ 7.9845732506364583969116, 7.5407014600932598114014, 10.196942830458283424377 , 8.2287722378969192504883 ,
+ 10.538597775623202323914, 0.8204884417355060577393, 6.7301832754164934158325, 7.9482832476496696472168,
+ 8.7162081208080053329468 , 2.3821726106107234954834 , 6.5310877952724695205688, 2.784897476434707641602 };
+ double expand2 = 3.4683557949028909206390;
+ double result2R[16]={13801.893971410685480805 , 9622.6108799100766191259 , 10325.586569611912636901, 10694.791005280343597406 ,
+ 24728.411825244897045195 , 18392.823733925368287601 , 18631.05868385956637212 , 19357.84707477861229563 ,
+ 16169.682243927050876664 , 12258.542785024719705689 , 12630.164466338968850323 , 12827.915677254180991440 ,
+ 13742.841851328515986097 , 10198.0420642120679986 , 10658.784670951883526868 , 10839.51135004585739807 };
+ double out2[16];
+
+
+ dpowma(in1, 2, expand1, out1);
+ dpowma(in2, 4, expand2, out2);
+
+ for (i=0;i<4;i++) {
+ assert( fabs(out1[i]-result1R[i]) / fabs(out1[i]) <3e-15);
+ }
+
+ for (i=0;i<16;i++) {
+ assert( fabs(out2[i]-result2R[i]) / fabs(out2[i]) <3e-14);
+ }
+
+}
+
+/* FIXME : assert 1e-14 */
+static void zpowmaTest(void){
+ /* Tests 1 */
+ {
+ double inR[9]={1,2,3,4,5,6,7,8,9};
+ double inI[9]={1,2,3,4,5,6,7,8,9};
+ double resultR[9]={- 4.7115011361608578610571,- 2.0782061409646632732517,0.5550888542315330909105,
+ - 2.3202132490900626571317,- 2.4412168031527574640904,- 2.5622203572154611528333,
+ 0.0710746379807356554181,- 2.80422746534086453352,- 5.6795295686624518438634};
+ double resultI[9]={- 12.188702380084603049681,- 4.0827818504168584823333,4.0231386792508754268738,
+ - 3.0919079733956360556135,- 2.5964710348850239540752,- 2.1010340963744131848046,
+ 6.0048864332933264975622,- 1.1101602193531934226201,- 8.2252068719997026846613};
+ doubleComplex *in,out[9];
+ int i;
+
+ in=DoubleComplexMatrix(inR,inI,9);
+
+ zpowma(in, 3, DoubleComplex(1,1), out);
+
+ for (i=0;i<9;i++) printf("out[%d] = %f+%f*i\n",i,zreals(out[i]),zimags(out[i]));
+
+ for (i=0;i<9;i++){
+ assert( (fabs(zreals(out[i])-resultR[i])/ fabs(zreals(out[i])) ) <3e-13);
+ assert( (fabs(zimags(out[i])-resultI[i])/ fabs(zimags(out[i])) ) <3e-13);
+ }
+ }
+
+ /* Tests 2 and 3 */
+ {
+ double in1R[4]={1,5,4,2};
+ double in1I[4]={0};
+ double expand1=2.2;
+ double result1R[4]={ 27.93459280052221771484 , 23.580294119266994812278 ,
+ 18.864235295413593007652 , 32.650651624375619519469 };
+ double result1I[4]={ 3.6611113731522362257920 , - 3.6611113731522362257920 ,
+ - 2.9288890985217883589087 , 2.9288890985217883589087 };
+ doubleComplex out1[4];
+ int i;
+
+ double in2R[16]={ 2.5358983855694532394409 , 9.0725262500345706939697, 0.0026536155492067337036, 3.9639251008629798889160 ,
+ 7.9845732506364583969116, 7.5407014600932598114014, 10.196942830458283424377 , 8.2287722378969192504883 ,
+ 10.538597775623202323914, 0.8204884417355060577393, 6.7301832754164934158325, 7.9482832476496696472168,
+ 8.7162081208080053329468 , 2.3821726106107234954834 , 6.5310877952724695205688, 2.784897476434707641602 };
+ double in2I[16]={0};
+ double expand2 = 3.4683557949028909206390;
+ double result2R[16]={13801.893971410685480805 , 9622.6108799100766191259 , 10325.586569611912636901, 10694.791005280343597406 ,
+ 24728.411825244897045195 , 18392.823733925368287601 , 18631.05868385956637212 , 19357.84707477861229563 ,
+ 16169.682243927050876664 , 12258.542785024719705689 , 12630.164466338968850323 , 12827.915677254180991440 ,
+ 13742.841851328515986097 , 10198.0420642120679986 , 10658.784670951883526868 , 10839.51135004585739807 };
+ double result2I[16]={ - 7.1981835972120027378196 , 1.9386514637886893552832, - 17.692616672339234185074 , 24.561537532538231687340 ,
+ - 2.2418859631076406557781 , 0.6037961445855435371755, - 5.5103941755046683681485, 7.649730724813480264857 ,
+ - 4.865855522250573272913 , 1.310496989059492634056 , - 11.95992230200565309417 , 16.603201547139228466676 ,
+ 16.00935601900000193609 , - 4.3117212921047043394651 , 39.34984366402868971591 , - 54.626892107189902958453 };
+ doubleComplex out2[16];
+ doubleComplex *in1,*in2;
+
+
+ in1=DoubleComplexMatrix(in1R,in1I,4);
+ in2=DoubleComplexMatrix(in2R,in2I,16);
+
+ zpowma(in1, 2, DoubleComplex(expand1,0), out1);
+ zpowma(in2, 4, DoubleComplex(expand2,0), out2);
+
+ for (i=0;i<4;i++) {
+ assert( fabs(zreals(out1[i])-result1R[i]) / fabs(zreals(out1[i])) <3e-15);
+ assert( fabs(zimags(out1[i])-result1I[i]) / fabs(zimags(out1[i])) <3e-15);
+ }
+
+ /*
+ FIXME : assert 1e-11 maybe due to spec2
+ */
+ for (i=0;i<16;i++) {
+ printf("out[%d] = %1.16f+%1.16f*i --- result = %1.16f+%1.16f*i\n",i,zreals(out2[i]),zimags(out2[i]),result2R[i],result2I[i]);
+ assert( fabs(zreals(out2[i])-result2R[i]) / fabs(zreals(out2[i])) <3e-11);
+ assert( fabs(zimags(out2[i])-result2I[i]) / fabs(zimags(out2[i])) <3e-11);
+ }
+ }
+
+}
+
+
+int main(void){
+ dpowmaTest();
+ zpowmaTest();
+ return 0;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/powm/testFloatPowm.c b/2.3-1/src/c/matrixOperations/powm/testFloatPowm.c
new file mode 100644
index 00000000..4b4b0166
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/testFloatPowm.c
@@ -0,0 +1,136 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixPow.h"
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+
+
+static void spowmaTest(void){
+ float in1[4]={1,5,4,2};
+ float expand1=2.2f;
+ float result1R[4]={ 27.93459280052221771484f , 23.580294119266994812278f ,
+ 18.864235295413593007652f , 32.650651624375619519469f };
+ float out1[4];
+ int i;
+
+ float in2[16]={ 2.5358983855694532394409f , 9.0725262500345706939697f, 0.0026536155492067337036f, 3.9639251008629798889160f ,
+ 7.9845732506364583969116f, 7.5407014600932598114014f, 10.196942830458283424377f , 8.2287722378969192504883f ,
+ 10.538597775623202323914f, 0.8204884417355060577393f, 6.7301832754164934158325f, 7.9482832476496696472168f,
+ 8.7162081208080053329468f , 2.3821726106107234954834f , 6.5310877952724695205688f, 2.784897476434707641602f };
+ float expand2 = 3.4683557949028909206390f;
+ float result2R[16]={13801.893971410685480805f , 9622.6108799100766191259f , 10325.586569611912636901f, 10694.791005280343597406f ,
+ 24728.411825244897045195f , 18392.823733925368287601f , 18631.05868385956637212f , 19357.84707477861229563f ,
+ 16169.682243927050876664f , 12258.542785024719705689f , 12630.164466338968850323f , 12827.915677254180991440f ,
+ 13742.841851328515986097f , 10198.0420642120679986f , 10658.784670951883526868f , 10839.51135004585739807f };
+ float out2[16];
+
+
+ spowma(in1, 2, expand1, out1);
+ spowma(in2, 4, expand2, out2);
+
+ for (i=0;i<4;i++) {
+ assert( fabs(out1[i]-result1R[i]) / fabs(out1[i]) <1e-6);
+ }
+
+
+ for (i=0;i<16;i++) {
+
+ assert( fabs(out2[i]-result2R[i]) / fabs(out2[i]) <1e-6);
+ }
+
+}
+
+static void cpowmaTest(void){
+
+
+ {
+ float inR[9]={1,2,3,4,5,6,7,8,9};
+ float inI[9]={1,2,3,4,5,6,7,8,9};
+ float resultR[9]={- 4.7115011361608578610571f,- 2.0782061409646632732517f,0.5550888542315330909105f,
+ - 2.3202132490900626571317f,- 2.4412168031527574640904f,- 2.5622203572154611528333f,
+ 0.0710746379807356554181f,- 2.80422746534086453352f,- 5.6795295686624518438634f};
+ float resultI[9]={- 12.188702380084603049681f,- 4.0827818504168584823333f,4.0231386792508754268738f,
+ - 3.0919079733956360556135f,- 2.5964710348850239540752f,- 2.1010340963744131848046f,
+ 6.0048864332933264975622f,- 1.1101602193531934226201f,- 8.2252068719997026846613f};
+ floatComplex *in,out[9];
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,9);
+
+ cpowma(in, 3, FloatComplex(1,1), out);
+
+ for (i=0;i<9;i++) printf("out[%d] = %f+%f*i\n",i,creals(out[i]),cimags(out[i]));
+
+ for (i=0;i<9;i++){
+ assert( (fabs(creals(out[i])-resultR[i])/ fabs(creals(out[i])) ) <3e-5);
+ assert( (fabs(cimags(out[i])-resultI[i])/ fabs(cimags(out[i])) ) <1e-6);
+ }
+ }
+
+
+ {
+
+ float in1R[4]={1,5,4,2};
+ float in1I[4]={0};
+ float expand1=2.2f;
+ float result1R[4]={ 27.93459280052221771484f , 23.580294119266994812278f ,
+ 18.864235295413593007652f , 32.650651624375619519469f };
+ float result1I[4]={ 3.6611113731522362257920f , - 3.6611113731522362257920f ,
+ - 2.9288890985217883589087f , 2.9288890985217883589087f };
+ floatComplex out1[4];
+ int i;
+
+ float in2R[16]={ 2.5358983855694532394409f , 9.0725262500345706939697f, 0.0026536155492067337036f, 3.9639251008629798889160f ,
+ 7.9845732506364583969116f, 7.5407014600932598114014f, 10.196942830458283424377f , 8.2287722378969192504883f ,
+ 10.538597775623202323914f, 0.8204884417355060577393f, 6.7301832754164934158325f, 7.9482832476496696472168f,
+ 8.7162081208080053329468f , 2.3821726106107234954834f , 6.5310877952724695205688f, 2.784897476434707641602f };
+ float in2I[16]={0};
+ float expand2 = 3.4683557949028909206390f;
+ float result2R[16]={13801.893971410685480805f , 9622.6108799100766191259f , 10325.586569611912636901f, 10694.791005280343597406f ,
+ 24728.411825244897045195f , 18392.823733925368287601f , 18631.05868385956637212f , 19357.84707477861229563f ,
+ 16169.682243927050876664f , 12258.542785024719705689f , 12630.164466338968850323f , 12827.915677254180991440f ,
+ 13742.841851328515986097f , 10198.0420642120679986f , 10658.784670951883526868f , 10839.51135004585739807f };
+ float result2I[16]={ - 7.1981835972120027378196f , 1.9386514637886893552832f, - 17.692616672339234185074f , 24.561537532538231687340f ,
+ - 2.2418859631076406557781f , 0.6037961445855435371755f, - 5.5103941755046683681485f, 7.649730724813480264857f ,
+ - 4.865855522250573272913f , 1.310496989059492634056f , - 11.95992230200565309417f , 16.603201547139228466676f ,
+ 16.00935601900000193609f , - 4.3117212921047043394651f , 39.34984366402868971591f , - 54.626892107189902958453f };
+ floatComplex out2[16];
+ floatComplex *in1,*in2;
+
+ in1=FloatComplexMatrix(in1R,in1I,4);
+ in2=FloatComplexMatrix(in2R,in2I,16);
+
+
+ cpowma(in1, 2, FloatComplex(expand1,0), out1);
+ cpowma(in2, 4, FloatComplex(expand2,0), out2);
+
+ for (i=0;i<4;i++) {
+ assert( fabs(creals(out1[i])-result1R[i]) / fabs(creals(out1[i])) <1e-6);
+ assert( fabs(cimags(out1[i])-result1I[i]) / fabs(cimags(out1[i])) <1e-6);
+ }
+
+
+ for (i=0;i<16;i++) {
+ assert( fabs(creals(out2[i])-result2R[i]) / fabs(creals(out2[i])) <1e-6);
+ assert( fabs(cimags(out2[i])-result2I[i]) / fabs(cimags(out2[i])) <1e-6);
+ }
+ }
+}
+
+
+int main(void){
+ spowmaTest();
+ cpowmaTest();
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj b/2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj
new file mode 100644
index 00000000..354d9902
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D83A0994-57A0-4C17-89DF-EDE84450C202}</ProjectGuid>
+ <RootNamespace>testDoublePowm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoublePowm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj.filters b/2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj.filters
new file mode 100644
index 00000000..9f939c42
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/test_DoublePowm/testDoublePowm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoublePowm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj b/2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj
new file mode 100644
index 00000000..38e46376
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8594ACB2-D3C8-4D3A-B905-794354A8A0CC}</ProjectGuid>
+ <RootNamespace>testFloatPowm</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatPowm.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj.filters b/2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj.filters
new file mode 100644
index 00000000..d06b1ae6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/test_FloatPowm/testFloatPowm.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatPowm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/powm/zpowma.c b/2.3-1/src/c/matrixOperations/powm/zpowma.c
new file mode 100644
index 00000000..0de56475
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/powm/zpowma.c
@@ -0,0 +1,64 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "matrixPow.h"
+#include "spec.h"
+#include "pow.h"
+#include "matrixTranspose.h"
+#include "conj.h"
+#include "matrixInversion.h"
+#include "matrixMultiplication.h"
+
+void zpowma(doubleComplex* in, int rows, doubleComplex power, doubleComplex* out){
+ int i=0, j=0;
+ int hermitian=0;
+ doubleComplex *eigenvalues,*eigenvectors,*tmp;
+
+ /* Data initialization */
+ eigenvalues = (doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ eigenvectors = (doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ tmp = (doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+
+ /* hermitian test*/
+ for(i=0;i<rows;i++) {
+ for (j=0;j<rows;j++)
+ if ((zreals(in[i*rows+j])!=zreals(in[j*rows+i])) || (zimags(in[i*rows+j])!=-zimags(in[j*rows+i]))) break;
+
+ if (j!=rows) break;
+ }
+
+ if ((i==rows)&&(j==rows)) hermitian=1;
+
+
+ /* find eigenvalues and eigenvectors */
+ zspec2a(in, rows, eigenvalues,eigenvectors);
+
+ /* make operation on eigenvalues and eigenvectors */
+ for (i=0;i<rows;i++)
+ eigenvalues[i+i*rows]=zpows(eigenvalues[i+i*rows],power);
+
+ zmulma(eigenvectors, rows, rows, eigenvalues, rows, rows, tmp);
+
+ if (hermitian){
+ ztransposea(eigenvectors, rows,rows, eigenvalues);
+ zconja(eigenvalues, rows*rows, eigenvalues);
+ }
+ else zinverma(eigenvectors, eigenvalues, rows);
+
+ zmulma(tmp, rows, rows, eigenvalues, rows, rows, out);
+
+ free(eigenvalues);
+ free(eigenvectors);
+ free(tmp);
+
+}
diff --git a/2.3-1/src/c/matrixOperations/spec/Makefile.am b/2.3-1/src/c/matrixOperations/spec/Makefile.am
new file mode 100644
index 00000000..90dbd0aa
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/Makefile.am
@@ -0,0 +1,70 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSpec_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSpec.la
+
+HEAD = ../includes/spec.h
+
+libSpec_la_SOURCES = $(HEAD) \
+ sspeca.c \
+ dspeca.c \
+ cspeca.c \
+ zspeca.c
+
+
+############
+## CHECK
+############
+
+
+check_PROGRAMS = testDoubleSpec testFloatSpec
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la\
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la\
+ libSpec.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleSpec_SOURCES = testDoubleSpec.c
+testDoubleSpec_LDADD = $(check_LDADD)
+testDoubleSpec_CFLAGS = $(check_INCLUDES)
+
+testFloatSpec_SOURCES = testFloatSpec.c
+testFloatSpec_LDADD = $(check_LDADD)
+testFloatSpec_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleSpec testFloatSpec
+
diff --git a/2.3-1/src/c/matrixOperations/spec/Makefile.in b/2.3-1/src/c/matrixOperations/spec/Makefile.in
new file mode 100644
index 00000000..9c34c9e6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/Makefile.in
@@ -0,0 +1,755 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleSpec$(EXEEXT) testFloatSpec$(EXEEXT)
+TESTS = testDoubleSpec$(EXEEXT) testFloatSpec$(EXEEXT)
+subdir = src/c/matrixOperations/spec
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSpec_la_LIBADD =
+am__objects_1 =
+am_libSpec_la_OBJECTS = $(am__objects_1) libSpec_la-sspeca.lo \
+ libSpec_la-dspeca.lo libSpec_la-cspeca.lo libSpec_la-zspeca.lo
+libSpec_la_OBJECTS = $(am_libSpec_la_OBJECTS)
+libSpec_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSpec_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleSpec_OBJECTS = testDoubleSpec-testDoubleSpec.$(OBJEXT)
+testDoubleSpec_OBJECTS = $(am_testDoubleSpec_OBJECTS)
+testDoubleSpec_DEPENDENCIES = $(check_LDADD)
+testDoubleSpec_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleSpec_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatSpec_OBJECTS = testFloatSpec-testFloatSpec.$(OBJEXT)
+testFloatSpec_OBJECTS = $(am_testFloatSpec_OBJECTS)
+testFloatSpec_DEPENDENCIES = $(check_LDADD)
+testFloatSpec_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatSpec_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSpec_la_SOURCES) $(testDoubleSpec_SOURCES) \
+ $(testFloatSpec_SOURCES)
+DIST_SOURCES = $(libSpec_la_SOURCES) $(testDoubleSpec_SOURCES) \
+ $(testFloatSpec_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSpec_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSpec.la
+HEAD = ../includes/spec.h
+libSpec_la_SOURCES = $(HEAD) \
+ sspeca.c \
+ dspeca.c \
+ cspeca.c \
+ zspeca.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la\
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la\
+ libSpec.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleSpec_SOURCES = testDoubleSpec.c
+testDoubleSpec_LDADD = $(check_LDADD)
+testDoubleSpec_CFLAGS = $(check_INCLUDES)
+testFloatSpec_SOURCES = testFloatSpec.c
+testFloatSpec_LDADD = $(check_LDADD)
+testFloatSpec_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/spec/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/spec/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSpec.la: $(libSpec_la_OBJECTS) $(libSpec_la_DEPENDENCIES)
+ $(libSpec_la_LINK) -rpath $(pkglibdir) $(libSpec_la_OBJECTS) $(libSpec_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleSpec$(EXEEXT): $(testDoubleSpec_OBJECTS) $(testDoubleSpec_DEPENDENCIES)
+ @rm -f testDoubleSpec$(EXEEXT)
+ $(testDoubleSpec_LINK) $(testDoubleSpec_OBJECTS) $(testDoubleSpec_LDADD) $(LIBS)
+testFloatSpec$(EXEEXT): $(testFloatSpec_OBJECTS) $(testFloatSpec_DEPENDENCIES)
+ @rm -f testFloatSpec$(EXEEXT)
+ $(testFloatSpec_LINK) $(testFloatSpec_OBJECTS) $(testFloatSpec_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec_la-cspeca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec_la-dspeca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec_la-sspeca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec_la-zspeca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleSpec-testDoubleSpec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatSpec-testFloatSpec.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSpec_la-sspeca.lo: sspeca.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -MT libSpec_la-sspeca.lo -MD -MP -MF $(DEPDIR)/libSpec_la-sspeca.Tpo -c -o libSpec_la-sspeca.lo `test -f 'sspeca.c' || echo '$(srcdir)/'`sspeca.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec_la-sspeca.Tpo $(DEPDIR)/libSpec_la-sspeca.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sspeca.c' object='libSpec_la-sspeca.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -c -o libSpec_la-sspeca.lo `test -f 'sspeca.c' || echo '$(srcdir)/'`sspeca.c
+
+libSpec_la-dspeca.lo: dspeca.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -MT libSpec_la-dspeca.lo -MD -MP -MF $(DEPDIR)/libSpec_la-dspeca.Tpo -c -o libSpec_la-dspeca.lo `test -f 'dspeca.c' || echo '$(srcdir)/'`dspeca.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec_la-dspeca.Tpo $(DEPDIR)/libSpec_la-dspeca.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dspeca.c' object='libSpec_la-dspeca.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -c -o libSpec_la-dspeca.lo `test -f 'dspeca.c' || echo '$(srcdir)/'`dspeca.c
+
+libSpec_la-cspeca.lo: cspeca.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -MT libSpec_la-cspeca.lo -MD -MP -MF $(DEPDIR)/libSpec_la-cspeca.Tpo -c -o libSpec_la-cspeca.lo `test -f 'cspeca.c' || echo '$(srcdir)/'`cspeca.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec_la-cspeca.Tpo $(DEPDIR)/libSpec_la-cspeca.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cspeca.c' object='libSpec_la-cspeca.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -c -o libSpec_la-cspeca.lo `test -f 'cspeca.c' || echo '$(srcdir)/'`cspeca.c
+
+libSpec_la-zspeca.lo: zspeca.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -MT libSpec_la-zspeca.lo -MD -MP -MF $(DEPDIR)/libSpec_la-zspeca.Tpo -c -o libSpec_la-zspeca.lo `test -f 'zspeca.c' || echo '$(srcdir)/'`zspeca.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec_la-zspeca.Tpo $(DEPDIR)/libSpec_la-zspeca.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zspeca.c' object='libSpec_la-zspeca.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec_la_CFLAGS) $(CFLAGS) -c -o libSpec_la-zspeca.lo `test -f 'zspeca.c' || echo '$(srcdir)/'`zspeca.c
+
+testDoubleSpec-testDoubleSpec.o: testDoubleSpec.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec_CFLAGS) $(CFLAGS) -MT testDoubleSpec-testDoubleSpec.o -MD -MP -MF $(DEPDIR)/testDoubleSpec-testDoubleSpec.Tpo -c -o testDoubleSpec-testDoubleSpec.o `test -f 'testDoubleSpec.c' || echo '$(srcdir)/'`testDoubleSpec.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSpec-testDoubleSpec.Tpo $(DEPDIR)/testDoubleSpec-testDoubleSpec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSpec.c' object='testDoubleSpec-testDoubleSpec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec_CFLAGS) $(CFLAGS) -c -o testDoubleSpec-testDoubleSpec.o `test -f 'testDoubleSpec.c' || echo '$(srcdir)/'`testDoubleSpec.c
+
+testDoubleSpec-testDoubleSpec.obj: testDoubleSpec.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec_CFLAGS) $(CFLAGS) -MT testDoubleSpec-testDoubleSpec.obj -MD -MP -MF $(DEPDIR)/testDoubleSpec-testDoubleSpec.Tpo -c -o testDoubleSpec-testDoubleSpec.obj `if test -f 'testDoubleSpec.c'; then $(CYGPATH_W) 'testDoubleSpec.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSpec.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSpec-testDoubleSpec.Tpo $(DEPDIR)/testDoubleSpec-testDoubleSpec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSpec.c' object='testDoubleSpec-testDoubleSpec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec_CFLAGS) $(CFLAGS) -c -o testDoubleSpec-testDoubleSpec.obj `if test -f 'testDoubleSpec.c'; then $(CYGPATH_W) 'testDoubleSpec.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSpec.c'; fi`
+
+testFloatSpec-testFloatSpec.o: testFloatSpec.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec_CFLAGS) $(CFLAGS) -MT testFloatSpec-testFloatSpec.o -MD -MP -MF $(DEPDIR)/testFloatSpec-testFloatSpec.Tpo -c -o testFloatSpec-testFloatSpec.o `test -f 'testFloatSpec.c' || echo '$(srcdir)/'`testFloatSpec.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSpec-testFloatSpec.Tpo $(DEPDIR)/testFloatSpec-testFloatSpec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSpec.c' object='testFloatSpec-testFloatSpec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec_CFLAGS) $(CFLAGS) -c -o testFloatSpec-testFloatSpec.o `test -f 'testFloatSpec.c' || echo '$(srcdir)/'`testFloatSpec.c
+
+testFloatSpec-testFloatSpec.obj: testFloatSpec.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec_CFLAGS) $(CFLAGS) -MT testFloatSpec-testFloatSpec.obj -MD -MP -MF $(DEPDIR)/testFloatSpec-testFloatSpec.Tpo -c -o testFloatSpec-testFloatSpec.obj `if test -f 'testFloatSpec.c'; then $(CYGPATH_W) 'testFloatSpec.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSpec.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSpec-testFloatSpec.Tpo $(DEPDIR)/testFloatSpec-testFloatSpec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSpec.c' object='testFloatSpec-testFloatSpec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec_CFLAGS) $(CFLAGS) -c -o testFloatSpec-testFloatSpec.obj `if test -f 'testFloatSpec.c'; then $(CYGPATH_W) 'testFloatSpec.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSpec.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/spec/cspeca.c b/2.3-1/src/c/matrixOperations/spec/cspeca.c
new file mode 100644
index 00000000..a2b6548b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/cspeca.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+
+
+
+void cspeca(floatComplex* in, int rows, floatComplex* out){
+ /* As we use Lapack to find the eigenvalues, we must cast the floatComplex input into doubleComplex
+ and the doubleComplex output of dspeca into floatComplex*/
+
+ int i;
+ doubleComplex* dblin;
+ doubleComplex* dblout;
+
+ dblin=(doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ dblout=(doubleComplex*)malloc((unsigned int)rows*sizeof(doubleComplex));
+
+ for (i=0;i<rows*rows;i++) dblin[i]=DoubleComplex((double)creals(in[i]),(double)cimags(in[i]));
+
+ zspeca(dblin,rows,dblout);
+
+ for (i=0;i<rows;i++) out[i]=FloatComplex((float)zreals(dblout[i]),(float)zimags(dblout[i]));
+}
diff --git a/2.3-1/src/c/matrixOperations/spec/dspeca.c b/2.3-1/src/c/matrixOperations/spec/dspeca.c
new file mode 100644
index 00000000..1131ecf2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/dspeca.c
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+#include "lapack.h"
+#include "zeros.h"
+#include "max.h"
+
+void dspeca(double* in, int rows,double* out){
+ int i=0, j=0;
+ int symmetric=0;
+ int INFO=0;
+ int iWorkSize = 0;
+ double* pdblWork;
+ double* outReal;
+ double* outImag;
+ double* pdblLeftvectors;
+ double* pdblRightvectors;
+ double* inCopy;
+
+ inCopy = (double*)malloc((unsigned int)(rows*rows) * sizeof(double));
+ outReal = (double*)malloc((unsigned int)rows * sizeof(double));
+ outImag = (double*)malloc((unsigned int)rows * sizeof(double));
+ pdblLeftvectors=NULL;
+ pdblRightvectors=NULL;
+
+
+ iWorkSize = 3*rows;
+ pdblWork = (double*)malloc((unsigned int)iWorkSize * sizeof(double));
+
+ for(i=0;i<rows*rows;i++) inCopy[i]=in[i];
+ /* look if the matrix is symmetric */
+ for (i=0;i<rows;i++)
+ for (j=0;j<rows;j++)
+ if (in[i*rows+j]!=in[i+j*rows]) break;
+
+ /* the matrix is symmetric if the 2 loops goes to end i.e
+ i==rows and j==rows */
+ if ((i==rows)&&(j==rows)) symmetric=1;
+
+
+ /* apply lapack function according to symmetry */
+ if(symmetric){
+ C2F(dsyev)( "N", "U", &rows, in, &rows, outReal, pdblWork, &iWorkSize, &INFO );
+ }
+ else {
+ C2F(dgeev)( "N", "N", &rows, inCopy, &rows, outReal, outImag,
+ pdblLeftvectors, &rows, pdblRightvectors, &rows, pdblWork, &iWorkSize, &INFO );
+ }
+
+ for (i=0;i<rows;i++) out[i]=outReal[i];
+
+
+ free(inCopy);
+ free(outReal);
+ free(outImag);
+ free(pdblWork);
+ free(pdblLeftvectors);
+ free(pdblRightvectors);
+}
+
diff --git a/2.3-1/src/c/matrixOperations/spec/sspeca.c b/2.3-1/src/c/matrixOperations/spec/sspeca.c
new file mode 100644
index 00000000..50751a29
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/sspeca.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+
+
+
+void sspeca(float* in, int rows, float* out){
+ /* As we use Lapack to find the eigenvalues, we must cast the float input into double
+ and the doubleComplex output of dspeca into floatComplex*/
+
+ int i;
+ double* dblin;
+ double* dblout;
+
+ dblin=(double*)malloc((unsigned int)(rows*rows)*sizeof(double));
+ dblout=(double*)malloc((unsigned int)rows*sizeof(double));
+
+ for (i=0;i<rows*rows;i++) dblin[i]=(double)in[i];
+
+ dspeca(dblin,rows,dblout);
+
+ for (i=0;i<rows;i++) out[i]=(float)dblout[i];
+}
diff --git a/2.3-1/src/c/matrixOperations/spec/testDoubleSpec.c b/2.3-1/src/c/matrixOperations/spec/testDoubleSpec.c
new file mode 100644
index 00000000..25c88065
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/testDoubleSpec.c
@@ -0,0 +1,116 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+#include "stdio.h"
+#include "assert.h"
+#include "math.h"
+
+static void dspecaTest(void){
+ double in[4]={1,1,1,3};
+ double resultR[2]={0.5857864376269050765700,3.4142135623730949234300};
+
+
+ double *out;
+
+ int i;
+
+ out=(double*)malloc((unsigned int)2*sizeof(double));
+
+ dspeca(in,2,out);
+ for(i=0;i<2;i++){
+ if (out[i]>1e-16) assert( fabs(out[i]-resultR[i]) / fabs(out[i]) <3e-16);
+ else assert(1);
+ }
+
+}
+
+
+
+
+static void zspecaTest(void){
+ double inR[4]={1,1,1,3};
+ double inI[4]={0,0,0,0};
+ double resultR[2]={0.5857864376269050765700,3.4142135623730949234300};
+ double resultI[2]={0,0};
+
+ double in2R[4]={1,1,-2,3};
+ double in2I[4]={0,0,0,0};
+ double result2R[2]={1.9999999999999997779554,1.9999999999999997779554};
+ double result2I[2]={0.9999999999999997779554,-0.9999999999999997779554};
+
+ double in3R[16]={0.0603054538369178771973,0.631347181741148233414 ,0.0241030259057879447937,0.1527438252232968807221,
+ 0.9481177683919668197632,0.2744265575893223285675,0.4794727200642228126526,0.485576837789267301559,
+ 0.676400367170572280884,0.8321249918080866336823,0.0125875836238265037537,0.5453779897652566432953,
+ 0.8426716942340135574341,0.9029165101237595081329,0.4409482078626751899719,0.8332359003834426403046 };
+ double in3I[16]={0.7233976423740386962891,0.4377150186337530612946,0.3080607382580637931824,0.8749813153408467769623,
+ 0.5355882328003644943237 ,0.3085998897440731525421,0.3354632416740059852600,0.2342486302368342876434,
+ 0.2589411698281764984131,0.8521509231068193912506,0.4821739485487341880798,0.6095217890106141567230,
+ 0.9872822705656290054321,0.9811426815576851367950,0.3303113700821995735169,0.3589145573787391185761};
+ double result3R[4]={1.9486046375762748894545,0.2315060459861970343365,- 0.7694743345806510648188,- 0.2300808535483104266817};
+ double result3I[4]={2.1242015857341254303492,- 0.4115101262891645017561,- 0.1980716835789462781925,0.3584662621795701720195};
+
+ doubleComplex *in,*in2,*in3,out[2],out2[4];
+
+ int i;
+
+ in=DoubleComplexMatrix(inR,inI,4);
+ in2=DoubleComplexMatrix(in2R,in2I,4);
+ in3=DoubleComplexMatrix(in3R,in3I,16);
+
+ zspeca(in,2,out);
+ for(i=0;i<2;i++){
+ if (zreals(out[i])>1e-16) assert( fabs(zreals(out[i])-resultR[i]) / fabs(zreals(out[i])) <3e-16);
+ else assert(1);
+ if (zimags(out[i])>1e-16) assert( fabs(zimags(out[i])-resultI[i]) / fabs(zimags(out[i])) <1e-16);
+ else assert(1);
+ }
+
+
+ zspeca(in2,2,out);
+ for(i=0;i<2;i++){
+ if (zreals(out[i])>1e-16) assert( fabs(zreals(out[i])-result2R[i]) / fabs(zreals(out[i])) <3e-16);
+ else assert(1);
+ if (zimags(out[i])>1e-16) assert( fabs(zimags(out[i])-result2I[i]) / fabs(zimags(out[i])) <3e-15);
+ else assert(1);
+ }
+
+
+ zspeca(in3,4,out2);
+ for(i=0;i<4;i++){
+ if (zreals(out2[i])>1e-16) assert( fabs(zreals(out2[i])-result3R[i]) / fabs(zreals(out2[i])) <3e-15);
+ else assert(1);
+ if (zimags(out2[i])>1e-16) assert( fabs(zimags(out2[i])-result3I[i]) / fabs(zimags(out2[i])) <3e-15);
+ else assert(1);
+ }
+
+
+}
+
+
+static int testSpec(void){
+ printf(">>> Double Spec Tests <<<\n");
+ printf(">>> Double <<<\n");
+ dspecaTest();
+ printf(">>> DoubleComplex <<<\n");
+ zspecaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert (testSpec()==0);
+
+
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/spec/testFloatSpec.c b/2.3-1/src/c/matrixOperations/spec/testFloatSpec.c
new file mode 100644
index 00000000..9bd46adc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/testFloatSpec.c
@@ -0,0 +1,110 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+#include "stdio.h"
+#include "assert.h"
+#include "math.h"
+
+static void sspecaTest(void){
+ float in[4]={1.0f,1.0f,1.0f,3.0f};
+ float resultR[2]={0.5857864376269050765700f,3.4142135623730949234300f};
+
+ float in1[4]={0.0f,4.0f,1.0f,0.0f};
+ float result[2]={2.0f,-2.0f};
+
+ float in2[4]={1.0f,1.0f,-2.0f,3.0f};
+
+ float *out;
+
+ int i;
+
+ out=(float *)malloc((unsigned int)2*sizeof(float));
+
+ sspeca(in,2,out);
+ for (i=0;i<2;i++) printf("%f\n",out[i]);
+ for(i=0;i<2;i++){
+ if (out[i]>1e-16) assert( fabs(out[i]-resultR[i]) / fabs(out[i]) <1e-16);
+ else assert(1);
+ }
+
+
+ sspeca(in1,2,out);
+ for (i=0;i<2;i++) printf("%f\n",out[i]);
+ for(i=0;i<2;i++){
+ if (out[i]>1e-16) assert( fabs(out[i]-result[i]) / fabs(out[i]) <1e-16);
+ else assert(1);
+ }
+
+ sspeca(in2,2,out);
+ for (i=0;i<2;i++) printf("%f\n",out[i]);
+
+}
+
+
+static void cspecaTest(void){
+ float inR[4]={1.0f,1.0f,1.0f,3.0f};
+ float inI[4]={0.0f,0.0f,0.0f,0.0f};
+ float resultR[2]={0.5857864376269050765700f,3.4142135623730949234300f};
+ float resultI[2]={0,0};
+
+ float in2R[4]={1.0f,1.0f,-2.0f,3.0f};
+ float in2I[4]={0.0f,0.0f,0.0f,0.0f};
+ float result2R[2]={1.9999999999999997779554f,1.9999999999999997779554f};
+ float result2I[2]={0.9999999999999997779554f,-0.9999999999999997779554f};
+
+ floatComplex *in,*in2,out[4];
+
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,4);
+ in2=FloatComplexMatrix(in2R,in2I,4);
+
+ cspeca(in,2,out);
+ for(i=0;i<2;i++){
+ if (creals(out[i])>1e-16) assert( fabs(creals(out[i])-resultR[i]) / fabs(creals(out[i])) <1e-15);
+ else assert(1);
+ if (cimags(out[i])>1e-16) assert( fabs(cimags(out[i])-resultI[i]) / fabs(cimags(out[i])) <1e-16);
+ else assert(1);
+ }
+
+
+ cspeca(in2,2,out);
+ for(i=0;i<2;i++){
+ if (creals(out[i])>1e-16) assert( fabs(creals(out[i])-result2R[i]) / fabs(creals(out[i])) <1e-15);
+ else assert(1);
+ if (cimags(out[i])>1e-16) assert( fabs(cimags(out[i])-result2I[i]) / fabs(cimags(out[i])) <1e-15);
+ else assert(1);
+ }
+
+}
+
+
+
+
+static int testSpec(void){
+ printf(">>> Float Spec Tests <<<\n");
+ printf(">>> Float <<<\n");
+ sspecaTest();
+ printf(">>> FloatComplex <<<\n");
+ cspecaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert (testSpec()==0);
+
+
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj b/2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj
new file mode 100644
index 00000000..f696bff4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{651B0E61-1047-4575-BE31-D9CB28062CBA}</ProjectGuid>
+ <RootNamespace>testDoubleSpec</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSpec.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters b/2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters
new file mode 100644
index 00000000..dcdaea5c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSpec.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj b/2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj
new file mode 100644
index 00000000..0631bb40
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B7BEF8A2-3E42-4FA3-94A7-22618594057D}</ProjectGuid>
+ <RootNamespace>testFloatSpec</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSpec.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj.filters b/2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj.filters
new file mode 100644
index 00000000..2ba2e59f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/test_FloatSpec/testFloatSpec.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSpec.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec/zspeca.c b/2.3-1/src/c/matrixOperations/spec/zspeca.c
new file mode 100644
index 00000000..a2b1c25a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec/zspeca.c
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+#include "lapack.h"
+#include "zeros.h"
+#include "conj.h"
+
+void zspeca(doubleComplex* in, int rows,doubleComplex* out){
+ int i = 0, j = 0;
+ int hermitian = 0;
+ int INFO = 0;
+ int iWorkSize = 0;
+ doubleComplex* pdblWork;
+ doubleComplex* pdblLeftvectors;
+ doubleComplex* pdblRightvectors;
+ doubleComplex* pdblRWork;
+ double* outReal;
+ double* outImag;
+ doubleComplex* inCopy;
+
+ inCopy = (doubleComplex*)malloc((unsigned int)(rows*rows) * sizeof(doubleComplex));
+ outReal = (double*)malloc((unsigned int)rows * sizeof(double));
+ outImag = (double*)malloc((unsigned int)rows * sizeof(double));
+ pdblLeftvectors=NULL;
+ pdblRightvectors=NULL;
+
+ iWorkSize = 2*rows;
+ pdblWork = (doubleComplex*)malloc((unsigned int)iWorkSize * sizeof(doubleComplex));
+ pdblRWork = (doubleComplex*)malloc((unsigned int)(3*rows) * sizeof(doubleComplex));
+
+ for(i=0;i<rows*rows;i++) inCopy[i]=DoubleComplex(zreals(in[i]),zimags(in[i]));
+
+ /* look if the matrix is symmetric */
+ for (i=0;i<rows;i++){
+ for (j=0;j<rows;j++)
+ if ( (zreals(in[i*rows+j])!=zreals(zconjs(in[i+j*rows]))) ||
+ (zimags(in[i*rows+j])!=zimags(zconjs(in[i+j*rows]))) )
+ break;
+ if (j!=rows) break;
+ }
+
+
+ /* the matrix is symmetric if the 2 loops goes to end i.e
+ i==rows and j==rows */
+ if ((i==rows)&&(j==rows)) hermitian=1;
+
+
+ /* apply lapack function according to symmetry */
+ if(hermitian){
+ C2F(zheev)( "N", "U", &rows, inCopy, &rows, outReal, pdblWork, &iWorkSize, outImag, &INFO );
+ dzerosa(outImag,1,rows);
+ for (i=0;i<rows;i++) out[i]=DoubleComplex(outReal[i],outImag[i]);
+ }
+ else {
+ C2F(zgeev)( "N", "N", &rows, inCopy, &rows, out,
+ pdblLeftvectors, &rows, pdblRightvectors, &rows, pdblWork, &iWorkSize,
+ pdblRWork, &INFO );
+ }
+
+
+
+ free(inCopy);
+ free(outReal);
+ free(outImag);
+ free(pdblWork);
+ free(pdblRWork);
+ free(pdblLeftvectors);
+ free(pdblRightvectors);
+}
diff --git a/2.3-1/src/c/matrixOperations/spec2/Makefile.am b/2.3-1/src/c/matrixOperations/spec2/Makefile.am
new file mode 100644
index 00000000..5a357fa5
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/Makefile.am
@@ -0,0 +1,70 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSpec2_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSpec2.la
+
+HEAD = ../includes/spec.h
+
+libSpec2_la_SOURCES = $(HEAD) \
+ sspec2a.c \
+ dspec2a.c \
+ cspec2a.c \
+ zspec2a.c
+
+
+############
+## CHECK
+############
+
+
+check_PROGRAMS = testDoubleSpec2 testFloatSpec2
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la\
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la\
+ libSpec2.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleSpec2_SOURCES = testDoubleSpec2.c
+testDoubleSpec2_LDADD = $(check_LDADD)
+testDoubleSpec2_CFLAGS = $(check_INCLUDES)
+
+testFloatSpec2_SOURCES = testFloatSpec2.c
+testFloatSpec2_LDADD = $(check_LDADD)
+testFloatSpec2_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleSpec2 testFloatSpec2
+
diff --git a/2.3-1/src/c/matrixOperations/spec2/Makefile.in b/2.3-1/src/c/matrixOperations/spec2/Makefile.in
new file mode 100644
index 00000000..6e46c059
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/Makefile.in
@@ -0,0 +1,757 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleSpec2$(EXEEXT) testFloatSpec2$(EXEEXT)
+TESTS = testDoubleSpec2$(EXEEXT) testFloatSpec2$(EXEEXT)
+subdir = src/c/matrixOperations/spec2
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSpec2_la_LIBADD =
+am__objects_1 =
+am_libSpec2_la_OBJECTS = $(am__objects_1) libSpec2_la-sspec2a.lo \
+ libSpec2_la-dspec2a.lo libSpec2_la-cspec2a.lo \
+ libSpec2_la-zspec2a.lo
+libSpec2_la_OBJECTS = $(am_libSpec2_la_OBJECTS)
+libSpec2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSpec2_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleSpec2_OBJECTS = \
+ testDoubleSpec2-testDoubleSpec2.$(OBJEXT)
+testDoubleSpec2_OBJECTS = $(am_testDoubleSpec2_OBJECTS)
+testDoubleSpec2_DEPENDENCIES = $(check_LDADD)
+testDoubleSpec2_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleSpec2_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatSpec2_OBJECTS = testFloatSpec2-testFloatSpec2.$(OBJEXT)
+testFloatSpec2_OBJECTS = $(am_testFloatSpec2_OBJECTS)
+testFloatSpec2_DEPENDENCIES = $(check_LDADD)
+testFloatSpec2_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatSpec2_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSpec2_la_SOURCES) $(testDoubleSpec2_SOURCES) \
+ $(testFloatSpec2_SOURCES)
+DIST_SOURCES = $(libSpec2_la_SOURCES) $(testDoubleSpec2_SOURCES) \
+ $(testFloatSpec2_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSpec2_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSpec2.la
+HEAD = ../includes/spec.h
+libSpec2_la_SOURCES = $(HEAD) \
+ sspec2a.c \
+ dspec2a.c \
+ cspec2a.c \
+ zspec2a.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la\
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la\
+ libSpec2.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes\
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleSpec2_SOURCES = testDoubleSpec2.c
+testDoubleSpec2_LDADD = $(check_LDADD)
+testDoubleSpec2_CFLAGS = $(check_INCLUDES)
+testFloatSpec2_SOURCES = testFloatSpec2.c
+testFloatSpec2_LDADD = $(check_LDADD)
+testFloatSpec2_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/spec2/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/spec2/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSpec2.la: $(libSpec2_la_OBJECTS) $(libSpec2_la_DEPENDENCIES)
+ $(libSpec2_la_LINK) -rpath $(pkglibdir) $(libSpec2_la_OBJECTS) $(libSpec2_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleSpec2$(EXEEXT): $(testDoubleSpec2_OBJECTS) $(testDoubleSpec2_DEPENDENCIES)
+ @rm -f testDoubleSpec2$(EXEEXT)
+ $(testDoubleSpec2_LINK) $(testDoubleSpec2_OBJECTS) $(testDoubleSpec2_LDADD) $(LIBS)
+testFloatSpec2$(EXEEXT): $(testFloatSpec2_OBJECTS) $(testFloatSpec2_DEPENDENCIES)
+ @rm -f testFloatSpec2$(EXEEXT)
+ $(testFloatSpec2_LINK) $(testFloatSpec2_OBJECTS) $(testFloatSpec2_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec2_la-cspec2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec2_la-dspec2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec2_la-sspec2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSpec2_la-zspec2a.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatSpec2-testFloatSpec2.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSpec2_la-sspec2a.lo: sspec2a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -MT libSpec2_la-sspec2a.lo -MD -MP -MF $(DEPDIR)/libSpec2_la-sspec2a.Tpo -c -o libSpec2_la-sspec2a.lo `test -f 'sspec2a.c' || echo '$(srcdir)/'`sspec2a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec2_la-sspec2a.Tpo $(DEPDIR)/libSpec2_la-sspec2a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sspec2a.c' object='libSpec2_la-sspec2a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -c -o libSpec2_la-sspec2a.lo `test -f 'sspec2a.c' || echo '$(srcdir)/'`sspec2a.c
+
+libSpec2_la-dspec2a.lo: dspec2a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -MT libSpec2_la-dspec2a.lo -MD -MP -MF $(DEPDIR)/libSpec2_la-dspec2a.Tpo -c -o libSpec2_la-dspec2a.lo `test -f 'dspec2a.c' || echo '$(srcdir)/'`dspec2a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec2_la-dspec2a.Tpo $(DEPDIR)/libSpec2_la-dspec2a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dspec2a.c' object='libSpec2_la-dspec2a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -c -o libSpec2_la-dspec2a.lo `test -f 'dspec2a.c' || echo '$(srcdir)/'`dspec2a.c
+
+libSpec2_la-cspec2a.lo: cspec2a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -MT libSpec2_la-cspec2a.lo -MD -MP -MF $(DEPDIR)/libSpec2_la-cspec2a.Tpo -c -o libSpec2_la-cspec2a.lo `test -f 'cspec2a.c' || echo '$(srcdir)/'`cspec2a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec2_la-cspec2a.Tpo $(DEPDIR)/libSpec2_la-cspec2a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cspec2a.c' object='libSpec2_la-cspec2a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -c -o libSpec2_la-cspec2a.lo `test -f 'cspec2a.c' || echo '$(srcdir)/'`cspec2a.c
+
+libSpec2_la-zspec2a.lo: zspec2a.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -MT libSpec2_la-zspec2a.lo -MD -MP -MF $(DEPDIR)/libSpec2_la-zspec2a.Tpo -c -o libSpec2_la-zspec2a.lo `test -f 'zspec2a.c' || echo '$(srcdir)/'`zspec2a.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSpec2_la-zspec2a.Tpo $(DEPDIR)/libSpec2_la-zspec2a.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zspec2a.c' object='libSpec2_la-zspec2a.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSpec2_la_CFLAGS) $(CFLAGS) -c -o libSpec2_la-zspec2a.lo `test -f 'zspec2a.c' || echo '$(srcdir)/'`zspec2a.c
+
+testDoubleSpec2-testDoubleSpec2.o: testDoubleSpec2.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec2_CFLAGS) $(CFLAGS) -MT testDoubleSpec2-testDoubleSpec2.o -MD -MP -MF $(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Tpo -c -o testDoubleSpec2-testDoubleSpec2.o `test -f 'testDoubleSpec2.c' || echo '$(srcdir)/'`testDoubleSpec2.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Tpo $(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSpec2.c' object='testDoubleSpec2-testDoubleSpec2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec2_CFLAGS) $(CFLAGS) -c -o testDoubleSpec2-testDoubleSpec2.o `test -f 'testDoubleSpec2.c' || echo '$(srcdir)/'`testDoubleSpec2.c
+
+testDoubleSpec2-testDoubleSpec2.obj: testDoubleSpec2.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec2_CFLAGS) $(CFLAGS) -MT testDoubleSpec2-testDoubleSpec2.obj -MD -MP -MF $(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Tpo -c -o testDoubleSpec2-testDoubleSpec2.obj `if test -f 'testDoubleSpec2.c'; then $(CYGPATH_W) 'testDoubleSpec2.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSpec2.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Tpo $(DEPDIR)/testDoubleSpec2-testDoubleSpec2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSpec2.c' object='testDoubleSpec2-testDoubleSpec2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSpec2_CFLAGS) $(CFLAGS) -c -o testDoubleSpec2-testDoubleSpec2.obj `if test -f 'testDoubleSpec2.c'; then $(CYGPATH_W) 'testDoubleSpec2.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSpec2.c'; fi`
+
+testFloatSpec2-testFloatSpec2.o: testFloatSpec2.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec2_CFLAGS) $(CFLAGS) -MT testFloatSpec2-testFloatSpec2.o -MD -MP -MF $(DEPDIR)/testFloatSpec2-testFloatSpec2.Tpo -c -o testFloatSpec2-testFloatSpec2.o `test -f 'testFloatSpec2.c' || echo '$(srcdir)/'`testFloatSpec2.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSpec2-testFloatSpec2.Tpo $(DEPDIR)/testFloatSpec2-testFloatSpec2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSpec2.c' object='testFloatSpec2-testFloatSpec2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec2_CFLAGS) $(CFLAGS) -c -o testFloatSpec2-testFloatSpec2.o `test -f 'testFloatSpec2.c' || echo '$(srcdir)/'`testFloatSpec2.c
+
+testFloatSpec2-testFloatSpec2.obj: testFloatSpec2.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec2_CFLAGS) $(CFLAGS) -MT testFloatSpec2-testFloatSpec2.obj -MD -MP -MF $(DEPDIR)/testFloatSpec2-testFloatSpec2.Tpo -c -o testFloatSpec2-testFloatSpec2.obj `if test -f 'testFloatSpec2.c'; then $(CYGPATH_W) 'testFloatSpec2.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSpec2.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSpec2-testFloatSpec2.Tpo $(DEPDIR)/testFloatSpec2-testFloatSpec2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSpec2.c' object='testFloatSpec2-testFloatSpec2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSpec2_CFLAGS) $(CFLAGS) -c -o testFloatSpec2-testFloatSpec2.obj `if test -f 'testFloatSpec2.c'; then $(CYGPATH_W) 'testFloatSpec2.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSpec2.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/spec2/cspec2a.c b/2.3-1/src/c/matrixOperations/spec2/cspec2a.c
new file mode 100644
index 00000000..d3a4312f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/cspec2a.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+
+
+
+void cspec2a(floatComplex* in, int rows, floatComplex* eigenvalues,floatComplex* eigenvectors){
+ /* As we use Lapack to find the eigenvalues, we must cast the floatComplex input into doubleComplex
+ and the doubleComplex outputs of dspeca into floatComplex*/
+
+ int i;
+ doubleComplex* dblin;
+ doubleComplex* dbleigenvalues,*dbleigenvectors;
+
+ dblin=(doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ dbleigenvalues=(doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+ dbleigenvectors=(doubleComplex*)malloc((unsigned int)(rows*rows)*sizeof(doubleComplex));
+
+ for (i=0;i<rows*rows;i++) dblin[i]=DoubleComplex((double)creals(in[i]),(double)cimags(in[i]));
+
+ zspec2a(dblin,rows,dbleigenvalues,dbleigenvectors);
+
+ for (i=0;i<rows*rows;i++) eigenvalues[i]=FloatComplex((float)zreals(dbleigenvalues[i]),(float)zimags(dbleigenvalues[i]));
+ for (i=0;i<rows*rows;i++) eigenvectors[i]=FloatComplex((float)zreals(dbleigenvectors[i]),(float)zimags(dbleigenvectors[i]));
+}
diff --git a/2.3-1/src/c/matrixOperations/spec2/dspec2a.c b/2.3-1/src/c/matrixOperations/spec2/dspec2a.c
new file mode 100644
index 00000000..98b2c5ad
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/dspec2a.c
@@ -0,0 +1,113 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+#include "lapack.h"
+#include "zeros.h"
+#include "max.h"
+
+void dspec2a(double* in, int rows,double* eigenvalues,double* eigenvectors){
+ int i=0, j=0, ij=0, ij1=0;
+ int symmetric=0;
+ int INFO=0;
+ int iWorkSize = 0;
+ double* pdblWork;
+ double* outReal;
+ double* outImag;
+ double* pdblLeftvectors;
+ double* pdblRightvectors;
+ double* inCopy;
+
+ /* FIXME : malloc here */
+ inCopy = (double*)malloc((unsigned int)(rows*rows) * sizeof(double));
+ outReal = (double*)malloc((unsigned int)rows * sizeof(double));
+ outImag = NULL;
+ pdblLeftvectors=NULL;
+ pdblRightvectors=NULL;
+
+
+ iWorkSize = 4*rows;
+ pdblWork = (double*)malloc((unsigned int)iWorkSize * sizeof(double));
+
+ for(i=0;i<rows*rows;i++) inCopy[i]=in[i];
+
+
+
+ /* look if the matrix is symmetric */
+ for (i=0;i<rows;i++){
+ for (j=0;j<rows;j++)
+ if (in[i*rows+j]!=in[i+j*rows]) break;
+ if (j!=rows) break;
+
+ }
+
+ /* the matrix is symmetric if the 2 loops goes to end i.e
+ i==rows and j==rows */
+ if ((i==rows)&&(j==rows)) symmetric=1;
+
+ /* apply lapack function according to symmetry */
+ if(symmetric){
+ C2F(dsyev)( "V", "U", &rows, inCopy, &rows, outReal, pdblWork, &iWorkSize, &INFO );
+
+ /* Computation of eigenvectors */
+ for (i=0;i<rows*rows;i++) eigenvectors[i] = inCopy[i];
+ }
+ else {
+ pdblRightvectors=(double*)malloc((unsigned int)(rows*rows) * sizeof(double));
+ outImag = (double*)malloc((unsigned int)rows * sizeof(double));
+ C2F(dgeev)( "N", "V", &rows, inCopy, &rows, outReal, outImag,
+ pdblLeftvectors, &rows, pdblRightvectors, &rows, pdblWork, &iWorkSize, &INFO );
+
+ /* Computation of eigenvectors */
+ j=0;
+ while (j<rows)
+ {
+ if (outImag[j]==0)
+ {
+ for(i = 0 ; i < rows ; i++)
+ {
+ ij = i + j * rows;
+ eigenvectors[ij] = pdblRightvectors[ij];
+ }
+ j = j + 1;
+ }
+ else
+ {
+ for(i = 0 ; i < rows ; i++)
+ {
+ ij = i + j * rows;
+ ij1 = i + (j + 1) * rows;
+ eigenvectors[ij] = pdblRightvectors[ij];
+ eigenvectors[ij1] = pdblRightvectors[ij];
+ }
+ j = j + 2;
+ }
+ }
+ }
+
+ /* Computation of eigenvalues */
+ dzerosa(eigenvalues,1,rows*rows);
+ for (i=0;i<rows;i++) eigenvalues[i+i*rows]=outReal[i];
+
+
+
+
+ free(inCopy);
+ free(outReal);
+ free(outImag);
+ free(pdblLeftvectors);
+ free(pdblRightvectors);
+ free(pdblWork);
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/spec2/sspec2a.c b/2.3-1/src/c/matrixOperations/spec2/sspec2a.c
new file mode 100644
index 00000000..d3ab00d5
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/sspec2a.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+
+
+
+void sspec2a(float* in, int rows, float* eigenvalues,float* eigenvectors){
+ /* As we use Lapack to find the eigenvalues, we must cast the float input into double
+ and the doubleComplex outputs of dspec2a into floatComplex*/
+
+ int i;
+ double* dblin;
+ double *dbleigenvalues,*dbleigenvectors;
+
+ dblin=(double*)malloc((unsigned int)(rows*rows)*sizeof(double));
+ dbleigenvalues = (double*)malloc((unsigned int)(rows*rows)*sizeof(double));
+ dbleigenvectors = (double*)malloc((unsigned int)(rows*rows)*sizeof(double));
+
+ for (i=0;i<rows*rows;i++) dblin[i]=(double)in[i];
+
+ dspec2a(dblin,rows,dbleigenvalues,dbleigenvectors);
+
+ for (i=0;i<rows*rows;i++) eigenvalues[i]=(float)dbleigenvalues[i];
+ for (i=0;i<rows*rows;i++) eigenvectors[i]=(float)dbleigenvectors[i];
+}
diff --git a/2.3-1/src/c/matrixOperations/spec2/testDoubleSpec2.c b/2.3-1/src/c/matrixOperations/spec2/testDoubleSpec2.c
new file mode 100644
index 00000000..a090f028
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/testDoubleSpec2.c
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "spec.h"
+#include "stdio.h"
+#include "assert.h"
+#include "math.h"
+
+static void dspec2aTest(void){
+ double in[4]={1,1,1,3};
+ double resultValuesR[4]={0.5857864376269050765700,0,0,3.4142135623730949234300};
+ double resultVectorsR[4]={- 0.9238795325112867384831,0.3826834323650897817792,
+ 0.3826834323650897817792,0.9238795325112867384831};
+
+
+ double in2[4]={1,1,-2,3};
+ double resultValues2R[4]={1.9999999999999997779554,0,0,1.9999999999999997779554};
+ double resultVectors2R[4]={0.8164965809277261454824,- 0.4082482904638631282523,
+ 0.8164965809277261454824,- 0.4082482904638631282523};
+
+ double in3[9]={0,-1,0,1,0,0,0,0,0};
+ double resultValues3R[9]={0};
+ double resultVectors3R[9]={0.7071067811865474617150,0,0,0.7071067811865474617150,0,0,0,0,1};
+
+
+ double out1[4],out2[4],out3[9],out4[9];
+
+ int i;
+ dspec2a(in3,3,out3,out4);
+ for(i=0;i<9;i++){
+ if (out3[i]>1e-16) assert( fabs(out3[i]-resultValues3R[i]) / fabs(out3[i]) <3e-16);
+ else assert(1);
+ }
+ for(i=0;i<9;i++){
+ if (out4[i]>1e-16) assert( fabs(out4[i]-resultVectors3R[i]) / fabs(out4[i]) <3e-16);
+ else assert(1);
+ }
+
+
+ dspec2a(in,2,out1,out2);
+ for(i=0;i<4;i++) printf("%f\n",out1[i]);
+ for(i=0;i<4;i++){
+ if (out1[i]>1e-16) assert( fabs(out1[i]-resultValuesR[i]) / fabs(out1[i]) <3e-16);
+ else assert(1);
+ }
+ for(i=0;i<4;i++){
+ if (out2[i]>1e-16) assert( fabs(out2[i]-resultVectorsR[i]) / fabs(out2[i]) <3e-16);
+ else assert(1);
+ }
+
+
+ dspec2a(in2,2,out1,out2);
+
+ for(i=0;i<4;i++){
+ if (out1[i]>1e-16) assert( fabs(out1[i]-resultValues2R[i]) / fabs(out1[i]) <1e-16);
+ else assert(1);
+ }
+ for(i=0;i<4;i++){
+ if (out2[i]>1e-16) assert( fabs(out2[i]-resultVectors2R[i]) / fabs(out2[i]) <3e-16);
+ else assert(1);
+ }
+
+}
+
+
+
+
+static void zspec2aTest(void){
+ double inR[4]={1,1,1,3};
+ double inI[4]={0,0,0,0};
+ double resultValuesR[4]={0.5857864376269050765700,0,0,3.4142135623730949234300};
+ double resultValuesI[4]={0,0,0,0};
+ double resultVectorsR[4]={- 0.9238795325112867384831,0.3826834323650897817792,
+ 0.3826834323650897817792,0.9238795325112867384831};
+ double resultVectorsI[4]={0,0,0,0};
+
+ double in2R[4]={1,1,-2,3};
+ double in2I[4]={0,0,0,0};
+ double resultValues2R[4]={1.9999999999999997779554,0,0,1.9999999999999997779554};
+ double resultValues2I[4]={0.9999999999999997779554,0,0,-0.9999999999999997779554};
+ double resultVectors2R[4]={0.8164965809277261454824,- 0.4082482904638631282523,
+ 0.8164965809277261454824,- 0.4082482904638631282523};
+ double resultVectors2I[4]={0,- 0.4082482904638629062077,0,0.4082482904638629062077};
+
+
+ double in3R[16]={ 0.4685934986919164657593, 0.4262020816095173358917, 0.4217656338587403297424, 0.1034853602759540081024 ,
+ 0.4279759414494037628174, 0.7860729382373392581940, 0.8568082069978117942810, 0.1993437460623681545258 ,
+ 0.7131301630288362503052, 0.5208952468819916248322, 0.9311723159626126289368, 0.4143836158327758312225,
+ 0.5980196148157119750977, 0.5549105503596365451813, 0.8552952585741877555847, 0.3097750707529485225678};
+ double in3I[16]={0.9446128141134977340698, 0.2442680452950298786163, 0.8760446915403008460999, 0.4874215493910014629364,
+ 0.3844018988311290740967, 0.0922345430590212345123, 0.0705418726429343223572, 0.7338807261548936367035,
+ 0.7792180571705102920532, 0.7827638057060539722443, 0.2161567779257893562317, 0.3420197847299277782440,
+ 0.430093832314014434814 , 0.6261752569116652011871, 0.9554250938817858695984, 0.45415506651625037193 };
+ double resultValues3R[16]={2.0556597713281337114211 , 0. , 0. , 0. ,
+ 0. , - 0.3025728286579054682193 , 0. , 0. ,
+ 0. , 0. , 0.1432776981289703988054 , 0. ,
+ 0. , 0. , 0. , 0.59924918284561956571821};
+ double resultValues3I[16]={2.0772175543447914947137 , 0. , 0. , 0. ,
+ 0. , - 0.5223086999196728807959 , 0. , 0. ,
+ 0. , 0. , 0.3871735516160564882782 , 0. ,
+ 0. , 0. , 0. , - 0.2349232044266161556489 };
+ double resultVectors3R[16]={ 0.5762578366606958546470 , 0.4529873647084416976583 , 0.5438116534400605495137 , 0.3599855200589946457868 ,
+ - 0.3285074902800487195442, - 0.0923654569732548225147, 0.6473744750124794666846, - 0.1812302216765642182139 ,
+ 0.7395301236826927748780, - 0.4588526195219964631811, 0.0997916953568371567496, - 0.3603263850824164338249 ,
+ 0.0717862182160008133192, 0.6967198304315765922112, - 0.1153149977500917411355 , - 0.3232658081022470875077 };
+ double resultVectors3I[16]={ 0. , - 0.1082260232744242933745, - 0.1403164362264210929254 , 0.0775054168635924967123 ,
+ 0.0347047096401541868560, - 0.4780157518240965019984, 0. , 0.4493438228998393735303,
+ 0. , - 0.0484367977162360741072 , 0.0664282497469102783949 , - 0.3098340648435350952461 ,
+ 0.1768623397230159322024, 0. , - 0.4621680558325051979551 , 0.3830799998945915163517};
+
+
+ double in4R[49]={0.0292230211198329925537, 0.1069206790998578071594, 9.7463708464056253433228, 7.7042609406635165214539 , 6.3966313377022743225098, 9.5358861843124032020569, 4.1484833415597677230835,
+ 4.6615396952256560325623, 2.2384551353752613067627, 3.4569733263924717903137, 2.3406236339360475540161, 6.6193414805456995964050,2.6911795139312744140625,9.8302489006891846656799 ,
+ 7.3933512251824140548706, 2.9021358629688620567322 , 3.9959496073424816131592 , 9.792278115637600421906 , 0.0755135808140039443970, 7.0210226578637957572937 , 8.9075061306357383728027 ,
+ 6.5269742021337151527405 , 4.136228552088141441345 , 8.5816909139975905418396 , 2.3960896767675876617432 , 4.8200417729094624519348, 9.848585547879338264465 , 4.4697216479107737541199,
+ 2.3298137634992599487305, 2.2345139319077134132385, 8.0025654565542936325073, 7.7507343282923102378845, 4.8250066302716732025146, 7.8448831336572766304016 , 1.5346793178468942642212 ,
+ 7.7228771103546023368835 , 8.9520217850804328918457, 9.4673257926478981971741, 6.9818257447332143783569, 9.5591608202084898948669, 0.4840173013508319854736, 5.3235206427052617073059,
+ 2.9468670953065156936646, 6.9771366892382502555847 , 9.3762038648128509521484 , 1.0755608463659882545471 , 7.7634243946522474288940, 6.3734178384765982627869 , 0.6630615703761577606201 };
+ double in4I[49]={8.1694598542526364326477, 3.5473910067230463027954, 5.860544512979686260223, 3.4610254690051078796387, 4.4247510144487023353577, 8.8226650562137365341187, 7.6436930662021040916443 ,
+ 7.764139864593744277954, 2.8076809318736195564270, 6.9086006004363298416138, 7.1747286943718791007996, 3.7201813608407974243164 , 9.3254965776577591896057, 2.2566775511950254440308,
+ 7.5211019208654761314392 , 3.0747506581246852874756 , 5.9793261485174298286438, 1.9238903466612100601196, 2.3870888305827975273132 , 7.4708331003785133361816, 9.7131536761298775672913,
+ 4.3703553732484579086304, 6.2248750543221831321716, 3.2913279719650745391846, 3.2963873865082859992981, 2.7686371374875307083130 , 4.8729835031554102897644, 7.7320465445518493652344 ,
+ 9.0775218093767762184143, 5.0122931879013776779175, 5.1595458528026938438416, 5.79267887398600578308 , 1.5463936375454068183899 , 7.6111377868801355361938, 6.9079177780076861381531 ,
+ 2.8732293471693992614746, 9.64253133628517389297 , 5.6607243325561285018921, 5.7821379369124770164490, 2.6634209789335727691650 , 4.7470985027030110359192, 6.0735465306788682937622,
+ 0.4097307054325938224793, 5.0125684589147567749023 , 5.2959309751167893409729, 6.2594583164900541305542, 2.2193526616320013999939 , 3.467419948428869247437, 3.9511676924303174018860 };
+ double resultValues4R[49]={39.018457752476393807228 ,0,0,0,0,0,0,
+ 0,2.2455352415739073812517,0,0,0,0,0,
+ 0,0,- 8.4848591657394489828903,0,0,0,0,
+ 0,0,0,- 9.617033196016185669919,0,0,0,
+ 0,0,0,0,- 3.7815852014367528077798,0,0,
+ 0,0,0,0,0,- 4.44858427601393291440,0,
+ 0,0,0,0,0,0,- 0.3001282122401837670900};
+ double resultValues4I[49]={36.525725390582877594170,0,0,0,0,0,0,
+ 0,- 5.9058762755733944516123,0,0,0,0,0,
+ 0,0,- 3.5959527108686115681735,0,0,0,0,
+ 0,0,0,1.8928051444081777088257,0,0,0,
+ 0,0,0,0,- 3.1889864758923365251064,0,0,
+ 0,0,0,0,0,3.2418188738592150777151,0,
+ 0,0,0,0,0,0,1.5279802073147508156836};
+
+ double resultVectors4R[49]={ 0.3499995148567048852684, 0.3131141942665225941234, 0.4518966551544936205431, 0.3429358568207974133912, 0.3073919828504245721490, 0.4236868694783915145763, 0.3928739146959387973368 ,
+ 0.2654822689469810148566 , - 0.3607918093136298631762, 0.0473515544359270068586 , 0.5097969509656486986060 , -0.3771134435310480315096 , 0.2011534205484152293408, - 0.4415200724898113993078,
+ 0.5454886553461798515130, - 0.2173248800239625522224, - 0.2171708216301463378883 , - 0.2460117034233289534662 , -0.3694743444265859433351 , 0.3601018742104445391483, 0.1530612374027510713681,
+ 0.6385835932752577104310, - 0.0013906755423099548263, - 0.3368505708673739662551 , 0.1394203608831885433 , -0.2292783363046769218308 , -0.2740379414191142504187, 0.1926279946047058377889 ,
+ - 0.6106238336849327819067, 0.0128604884735820379493, 0.2248434453925002574071, - 0.0955950290268089419854 , 0.6322383898844411431739 , - 0.1362122761803175874373, - 0.0030545591332723984190,
+ 0.5431360047322275619308, 0.1304324282476526930541, - 0.3713242513274904177401, - 0.2693820083406764376299 , - 0.1431429883314006001882 , 0.0533021313694299267438, 0.0071247423818797811501 ,
+ - 0.156705245229635081738, 0.0034676864415526253982 , - 0.3351413975178426096768 , 0.2927797449896782921996 , 0.5714932440406852443005 , 0.0738366305178744797288, - 0.4509415569247051669422 };
+ double resultVectors4I[49]={ 0.0720991445669864616796 , 0.0844739028302603361942 , 0. , 0.0173431366502564965337, -0.0428710162141596462515, 0.0695226101295536302871, 0.0999385617869267273150,
+ 0.2510960793336660668018 , - 0.1123901435582568414384, 0.0091069807153507792430, 0. , - 0.2545493692188907641771, 0.1149714203529902251111, 0.0762796210842419941667,
+ 0. , 0.0611827470444509316505, 0.2295643426501567385678, - 0.2950878328821502361024, 0.198556748820033573955, 0.0646801132828138114483, - 0.2660572521172601678785,
+ 0. , 0.2688905463703794573860, 0.2230635356255223633593 , - 0.2013432448241845862391, - 0.0386922946770884290668, 0.0358963301038670995480, - 0.3593711366897305303780 ,
+ - 0.1386717901043315326337, 0.0600994116374372472356, - 0.1167558596038882207102 , 0.317965599565130263571, 0. , -0.0642522754144960878131, - 0.0853665514099945371695,
+ 0. , 0.2715431731544318272320, - 0.1184277560110737481658 , 0.3655618467608299226868, - 0.4598766797780974302512 , 0.0188698345957667955319, - 0.1446429340244405892246,
+ 0.346095581161616094867 , 0.0750882555805542639682, - 0.2494867985551498246188, - 0.2328934592128872882455, 0. , -0.0047307828167728396829, - 0.0078254955461786041004};
+
+
+
+
+ doubleComplex *in,*in2,*in3,*in4,out1[4],out2[4],out3[16],out4[16],out5[49],out6[49];
+
+ int i;
+
+ in=DoubleComplexMatrix(inR,inI,4);
+ in2=DoubleComplexMatrix(in2R,in2I,4);
+ in3=DoubleComplexMatrix(in3R,in3I,16);
+ in4=DoubleComplexMatrix(in4R,in4I,49);
+ zspec2a(in,2,out1,out2);
+
+
+ for(i=0;i<4;i++){
+ if (zreals(out1[i])>1e-16) assert( fabs(zreals(out1[i])-resultValuesR[i]) / fabs(zreals(out1[i])) <3e-16);
+ else assert(1);
+ if (zimags(out1[i])>1e-16) assert( fabs(zimags(out1[i])-resultValuesI[i]) / fabs(zimags(out1[i])) <1e-16);
+ else assert(1);
+ }
+
+ for(i=0;i<4;i++){
+ if (zreals(out2[i])>1e-16) assert( fabs(zreals(out2[i])-resultVectorsR[i]) / fabs(zreals(out2[i])) <3e-16);
+ else assert(1);
+ if (zimags(out2[i])>1e-16) assert( fabs(zimags(out2[i])-resultVectorsI[i]) / fabs(zimags(out2[i])) <1e-16);
+ else assert(1);
+ }
+
+
+ zspec2a(in2,2,out1,out2);
+ for(i=0;i<4;i++){
+ if (zreals(out1[i])>1e-16) assert( fabs(zreals(out1[i])-resultValues2R[i]) / fabs(zreals(out1[i])) <3e-16);
+ else assert(1);
+ if (zimags(out1[i])>1e-16) assert( fabs(zimags(out1[i])-resultValues2I[i]) / fabs(zimags(out1[i])) <3e-15);
+ else assert(1);
+ }
+
+ for(i=0;i<4;i++){
+ if (zreals(out2[i])>1e-16) assert( fabs(zreals(out2[i])-resultVectors2R[i]) / fabs(zreals(out2[i])) <3e-16);
+ else assert(1);
+ if (zimags(out2[i])>1e-16) assert( fabs(zimags(out2[i])-resultVectors2I[i]) / fabs(zimags(out2[i])) <3e-15);
+ else assert(1);
+ }
+
+
+
+ zspec2a(in3,4,out3,out4);
+ for(i=0;i<16;i++){
+ if (zreals(out3[i])>1e-16) assert( fabs(zreals(out3[i])-resultValues3R[i]) / fabs(zreals(out3[i])) <3e-15);
+ else assert(1);
+ if (zimags(out3[i])>1e-16) assert( fabs(zimags(out3[i])-resultValues3I[i]) / fabs(zimags(out3[i])) <3e-15);
+ else assert(1);
+ }
+ for(i=0;i<16;i++){
+ if (zreals(out4[i])>1e-16) assert( fabs(zreals(out4[i])-resultVectors3R[i]) / fabs(zreals(out4[i])) <3e-15);
+ else assert(1);
+ if (zimags(out4[i])>1e-16) assert( fabs(zimags(out4[i])-resultVectors3I[i]) / fabs(zimags(out4[i])) <3e-14);
+ else assert(1);
+ }
+
+ /* FIXME : assert : 3e-16 maybe du to little values like 0.001... */
+ zspec2a(in4,7,out5,out6);
+
+ for(i=0;i<49;i++){
+ if (zreals(out5[i])>1e-16) assert( fabs(zreals(out5[i])-resultValues4R[i]) / fabs(zreals(out5[i])) <3e-15);
+ else assert(1);
+ if (zimags(out5[i])>1e-16) assert( fabs(zimags(out5[i])-resultValues4I[i]) / fabs(zimags(out5[i])) <3e-14);
+ else assert(1);
+ }
+ for(i=0;i<49;i++){
+ if (zreals(out6[i])>1e-16) assert( fabs(zreals(out6[i])-resultVectors4R[i]) / fabs(zreals(out6[i])) <3e-14);
+ else assert(1);
+ if (zimags(out6[i])>1e-16) assert( fabs(zimags(out6[i])-resultVectors4I[i]) / fabs(zimags(out6[i])) <3e-13);
+ else assert(1);
+ }
+
+
+
+}
+
+
+static int testSpec2(void){
+ printf(">>> Double Spec2 Tests <<<\n");
+ printf(">>> Double <<<\n");
+ dspec2aTest();
+ printf(">>> DoubleComplex <<<\n");
+ zspec2aTest();
+ return 0;
+}
+
+
+int main(void){
+ assert (testSpec2()==0);
+
+
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/spec2/testFloatSpec2.c b/2.3-1/src/c/matrixOperations/spec2/testFloatSpec2.c
new file mode 100644
index 00000000..fb2bc255
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/testFloatSpec2.c
@@ -0,0 +1,134 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "spec.h"
+#include "stdio.h"
+#include "assert.h"
+#include "math.h"
+
+static void sspec2aTest(void){
+ float in[4]={1.0f,1.0f,1.0f,3.0f};
+ float resultValuesR[4]={0.5857864376269050765700f,0,0,3.4142135623730949234300f};
+ float resultVectorsR[4]={- 0.9238795325112867384831f,0.3826834323650897817792f,
+ 0.3826834323650897817792f,0.9238795325112867384831f};
+
+ float in2[4]={1.0f,1.0f,-2.0f,3.0f};
+ float resultValues2R[4]={1.9999999999999997779554f,0,0,1.9999999999999997779554f};
+ float resultVectors2R[4]={0.8164965809277261454824f,- 0.4082482904638631282523f,
+ 0.8164965809277261454824f,- 0.4082482904638631282523f};
+ float eigenvalues[4],eigenvectors[4];
+
+ int i;
+
+ sspec2a(in,2,eigenvalues,eigenvectors);
+
+ for(i=0;i<4;i++){
+ if (eigenvalues[i]>1e-6) assert( fabs(eigenvalues[i]-resultValuesR[i]) / fabs(eigenvalues[i]) <1e-16);
+ else assert(1);
+ }
+ for(i=0;i<4;i++){
+ if (eigenvectors[i]>1e-6) assert( fabs(eigenvectors[i]-resultVectorsR[i]) / fabs(eigenvectors[i]) <1e-16);
+ else assert(1);
+ }
+
+
+ sspec2a(in2,2,eigenvalues,eigenvectors);
+
+
+
+ for(i=0;i<4;i++){
+ if (eigenvalues[i]>1e-6) assert( fabs(eigenvalues[i]-resultValues2R[i]) / fabs(eigenvalues[i]) <1e-16);
+ else assert(1);
+ }
+ for(i=0;i<4;i++){
+ if (eigenvectors[i]>1e-6) assert( fabs(eigenvectors[i]-resultVectors2R[i]) / fabs(eigenvectors[i]) <1e-16);
+ else assert(1);
+ }
+}
+
+
+
+
+static void cspec2aTest(void){
+ float inR[4]={1.0f,1.0f,1.0f,3.0f};
+ float inI[4]={0.0f,0.0f,0.0f,0.0f};
+ float resultValuesR[4]={0.5857864376269050765700f,0,0,3.4142135623730949234300f};
+ float resultValuesI[4]={0,0,0,0};
+ float resultVectorsR[4]={- 0.9238795325112867384831f,0.3826834323650897817792f,
+ 0.3826834323650897817792f,0.9238795325112867384831f};
+ float resultVectorsI[4]={0,0,0,0};
+
+ float in2R[4]={1.0f,1.0f,-2.0f,3.0f};
+ float in2I[4]={0.0f,0.0f,0.0f,0.0f};
+ float resultValues2R[4]={1.9999999999999997779554f,0,0,1.9999999999999997779554f};
+ float resultValues2I[4]={0.9999999999999997779554f,0,0,-0.9999999999999997779554f};
+ float resultVectors2R[4]={0.8164965809277261454824f,- 0.4082482904638631282523f,
+ 0.8164965809277261454824f,- 0.4082482904638631282523f};
+ float resultVectors2I[4]={0,- 0.4082482904638629062077f,0,0.4082482904638629062077f};
+
+ floatComplex *in,*in2,out1[4],out2[4];
+
+ int i;
+
+ in=FloatComplexMatrix(inR,inI,4);
+ in2=FloatComplexMatrix(in2R,in2I,4);
+
+ cspec2a(in,2,out1,out2);
+ for(i=0;i<4;i++){
+ if (creals(out1[i])>1e-16) assert( fabs(creals(out1[i])-resultValuesR[i]) / fabs(creals(out1[i])) <1e-15);
+ else assert(1);
+ if (cimags(out1[i])>1e-16) assert( fabs(cimags(out1[i])-resultValuesI[i]) / fabs(cimags(out1[i])) <1e-16);
+ else assert(1);
+ }
+ for(i=0;i<4;i++){
+ if (creals(out2[i])>1e-16) assert( fabs(creals(out2[i])-resultVectorsR[i]) / fabs(creals(out2[i])) <1e-15);
+ else assert(1);
+ if (cimags(out2[i])>1e-16) assert( fabs(cimags(out2[i])-resultVectorsI[i]) / fabs(cimags(out2[i])) <1e-16);
+ else assert(1);
+ }
+
+
+ cspec2a(in2,2,out1,out2);
+ for(i=0;i<4;i++){
+ if (creals(out1[i])>1e-16) assert( fabs(creals(out1[i])-resultValues2R[i]) / fabs(creals(out1[i])) <1e-15);
+ else assert(1);
+ if (cimags(out1[i])>1e-16) assert( fabs(cimags(out1[i])-resultValues2I[i]) / fabs(cimags(out1[i])) <1e-15);
+ else assert(1);
+ }
+ for(i=0;i<4;i++){
+ if (creals(out2[i])>1e-16) assert( fabs(creals(out2[i])-resultVectors2R[i]) / fabs(creals(out2[i])) <1e-15);
+ else assert(1);
+ if (cimags(out2[i])>1e-16) assert( fabs(cimags(out2[i])-resultVectors2I[i]) / fabs(cimags(out2[i])) <1e-16);
+ else assert(1);
+ }
+}
+
+
+
+
+static int testSpec2(void){
+ printf(">>> Float Spec2 Tests <<<\n");
+ printf(">>> Float <<<\n");
+ sspec2aTest();
+ printf(">>> FloatComplex <<<\n");
+ cspec2aTest();
+ return 0;
+}
+
+
+int main(void){
+ assert (testSpec2()==0);
+
+
+ return 0;
+}
diff --git a/2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj b/2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj
new file mode 100644
index 00000000..7c36943b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FD0A4495-C372-41EF-B8EF-0A0939DA6C1E}</ProjectGuid>
+ <RootNamespace>testDoubleSpec2</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSpec2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters b/2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters
new file mode 100644
index 00000000..04f409dc
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSpec2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj b/2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj
new file mode 100644
index 00000000..f4154eb1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E20D0BC2-B28A-412C-9715-5B93B319A4A3}</ProjectGuid>
+ <RootNamespace>testFloatSpec2</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSpec2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters b/2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters
new file mode 100644
index 00000000..0c38d2f2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSpec2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/spec2/zspec2a.c b/2.3-1/src/c/matrixOperations/spec2/zspec2a.c
new file mode 100644
index 00000000..e33ed897
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/spec2/zspec2a.c
@@ -0,0 +1,96 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "spec.h"
+#include "lapack.h"
+#include "zeros.h"
+#include "stdio.h"
+#include "conj.h"
+
+void zspec2a(doubleComplex* in, int rows,doubleComplex* eigenvalues, doubleComplex* eigenvectors){
+ int i = 0, j = 0;
+ int hermitian = 0;
+ int INFO = 0;
+ int iWorkSize = 0;
+ doubleComplex* pdblWork;
+ doubleComplex* pdblLeftvectors;
+ doubleComplex* pdblRightvectors;
+ doubleComplex* pdblRWork;
+ double* pdblRWork2;
+ double* outReal;
+ double* outImag;
+ doubleComplex* inCopy;
+
+ inCopy = (doubleComplex*)malloc((unsigned int)(rows*rows) * sizeof(doubleComplex));
+ outReal = (double*)malloc((unsigned int)rows * sizeof(double));
+ outImag = (double*)malloc((unsigned int)rows * sizeof(double));
+ pdblLeftvectors=NULL;
+ pdblRightvectors=NULL;
+
+ iWorkSize = 2*rows;
+ pdblWork = (doubleComplex*)malloc((unsigned int)iWorkSize * sizeof(doubleComplex));
+ pdblRWork = NULL;
+ pdblRWork2 = NULL;
+
+ for(i=0;i<rows*rows;i++) {
+ inCopy[i]=DoubleComplex(zreals(in[i]),zimags(in[i]));
+ eigenvectors[i]=DoubleComplex(zreals(in[i]),zimags(in[i]));
+ }
+ zzerosa(eigenvalues,1,rows*rows);
+
+
+ /* look if the matrix is symmetric */
+ for (i=0;i<rows;i++){
+ for (j=0;j<rows;j++)
+ if ( (zreals(in[i*rows+j])!=zreals(zconjs(in[i+j*rows]))) ||
+ (zimags(in[i*rows+j])!=zimags(zconjs(in[i+j*rows]))) )
+ break;
+ if (j!=rows) break;
+ }
+
+
+ /* the matrix is symmetric if the 2 loops goes to end i.e
+ i==rows and j==rows */
+ if ((i==rows)&&(j==rows)) hermitian=1;
+
+
+ /* apply lapack function according to symmetry */
+ if(hermitian){
+ pdblRWork2 = (double*)malloc((unsigned int)(3*rows) * sizeof(double));
+ C2F(zheev)( "V", "U", &rows, eigenvectors, &rows, outReal, pdblWork, &iWorkSize, pdblRWork2, &INFO );
+ dzerosa(outImag,1,rows);
+ for (i=0;i<rows;i++) eigenvalues[i+i*rows]=DoubleComplex(outReal[i],outImag[i]);
+ }
+ else {
+ pdblRWork = (doubleComplex*)malloc((unsigned int)(3*rows) * sizeof(doubleComplex));
+ C2F(zgeev)( "N", "V", &rows, inCopy, &rows, eigenvalues,
+ pdblLeftvectors, &rows, eigenvectors, &rows, pdblWork, &iWorkSize,
+ pdblRWork, &INFO );
+ for (i=1;i<rows;i++) {
+ eigenvalues[i+i*rows]=DoubleComplex(zreals(eigenvalues[i]),zimags(eigenvalues[i]));
+ eigenvalues[i]=DoubleComplex(0,0);
+ }
+ }
+
+
+
+
+ free(inCopy);
+ free(outReal);
+ free(outImag);
+ free(pdblWork);
+ free(pdblRWork);
+ free(pdblRWork2);
+ free(pdblLeftvectors);
+ free(pdblRightvectors);
+}
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.am b/2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.am
new file mode 100644
index 00000000..0430097f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.am
@@ -0,0 +1,61 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixSquaredMagnitude_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixSquaredMagnitude.la
+
+HEAD = ../includes/matrixSquaredMagnitude.h
+
+libMatrixSquaredMagnitude_la_SOURCES = $(HEAD) \
+ ssquMagns.c \
+ ssquMagna.c \
+ dsquMagns.c \
+ dsquMagna.c \
+ csquMagns.c \
+ csquMagna.c \
+ zsquMagns.c \
+ zsquMagna.c
+
+#############
+## CHECK ##
+#############
+
+check_PROGRAMS = testDoubleMatrixSquaredMagnitude testFloatMatrixSquaredMagnitude
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/magnitude/libMatrixMagnitude.la \
+ libMatrixSquaredMagnitude.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleMatrixSquaredMagnitude_SOURCES = testDoubleSquaredMagnitude.c
+testDoubleMatrixSquaredMagnitude_LDADD = $(check_LDADD)
+testDoubleMatrixSquaredMagnitude_CFLAGS = $(check_INCLUDES)
+
+testFloatMatrixSquaredMagnitude_SOURCES = testFloatSquaredMagnitude.c
+testFloatMatrixSquaredMagnitude_LDADD = $(check_LDADD)
+testFloatMatrixSquaredMagnitude_CFLAGS = $(check_INCLUDES)
+
+TESTS = testDoubleMatrixSquaredMagnitude testFloatMatrixSquaredMagnitude
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.in b/2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.in
new file mode 100644
index 00000000..3824afd3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/Makefile.in
@@ -0,0 +1,799 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleMatrixSquaredMagnitude$(EXEEXT) \
+ testFloatMatrixSquaredMagnitude$(EXEEXT)
+TESTS = testDoubleMatrixSquaredMagnitude$(EXEEXT) \
+ testFloatMatrixSquaredMagnitude$(EXEEXT)
+subdir = src/c/matrixOperations/squaredMagnitude
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixSquaredMagnitude_la_LIBADD =
+am__objects_1 =
+am_libMatrixSquaredMagnitude_la_OBJECTS = $(am__objects_1) \
+ libMatrixSquaredMagnitude_la-ssquMagns.lo \
+ libMatrixSquaredMagnitude_la-ssquMagna.lo \
+ libMatrixSquaredMagnitude_la-dsquMagns.lo \
+ libMatrixSquaredMagnitude_la-dsquMagna.lo \
+ libMatrixSquaredMagnitude_la-csquMagns.lo \
+ libMatrixSquaredMagnitude_la-csquMagna.lo \
+ libMatrixSquaredMagnitude_la-zsquMagns.lo \
+ libMatrixSquaredMagnitude_la-zsquMagna.lo
+libMatrixSquaredMagnitude_la_OBJECTS = \
+ $(am_libMatrixSquaredMagnitude_la_OBJECTS)
+libMatrixSquaredMagnitude_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testDoubleMatrixSquaredMagnitude_OBJECTS = testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.$(OBJEXT)
+testDoubleMatrixSquaredMagnitude_OBJECTS = \
+ $(am_testDoubleMatrixSquaredMagnitude_OBJECTS)
+testDoubleMatrixSquaredMagnitude_DEPENDENCIES = $(check_LDADD)
+testDoubleMatrixSquaredMagnitude_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMatrixSquaredMagnitude_OBJECTS = testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.$(OBJEXT)
+testFloatMatrixSquaredMagnitude_OBJECTS = \
+ $(am_testFloatMatrixSquaredMagnitude_OBJECTS)
+testFloatMatrixSquaredMagnitude_DEPENDENCIES = $(check_LDADD)
+testFloatMatrixSquaredMagnitude_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixSquaredMagnitude_la_SOURCES) \
+ $(testDoubleMatrixSquaredMagnitude_SOURCES) \
+ $(testFloatMatrixSquaredMagnitude_SOURCES)
+DIST_SOURCES = $(libMatrixSquaredMagnitude_la_SOURCES) \
+ $(testDoubleMatrixSquaredMagnitude_SOURCES) \
+ $(testFloatMatrixSquaredMagnitude_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixSquaredMagnitude_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixSquaredMagnitude.la
+HEAD = ../includes/matrixSquaredMagnitude.h
+libMatrixSquaredMagnitude_la_SOURCES = $(HEAD) \
+ ssquMagns.c \
+ ssquMagna.c \
+ dsquMagns.c \
+ dsquMagna.c \
+ csquMagns.c \
+ csquMagna.c \
+ zsquMagns.c \
+ zsquMagna.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/magnitude/libMatrixMagnitude.la \
+ libMatrixSquaredMagnitude.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes
+
+testDoubleMatrixSquaredMagnitude_SOURCES = testDoubleSquaredMagnitude.c
+testDoubleMatrixSquaredMagnitude_LDADD = $(check_LDADD)
+testDoubleMatrixSquaredMagnitude_CFLAGS = $(check_INCLUDES)
+testFloatMatrixSquaredMagnitude_SOURCES = testFloatSquaredMagnitude.c
+testFloatMatrixSquaredMagnitude_LDADD = $(check_LDADD)
+testFloatMatrixSquaredMagnitude_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/squaredMagnitude/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/squaredMagnitude/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixSquaredMagnitude.la: $(libMatrixSquaredMagnitude_la_OBJECTS) $(libMatrixSquaredMagnitude_la_DEPENDENCIES)
+ $(libMatrixSquaredMagnitude_la_LINK) -rpath $(pkglibdir) $(libMatrixSquaredMagnitude_la_OBJECTS) $(libMatrixSquaredMagnitude_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMatrixSquaredMagnitude$(EXEEXT): $(testDoubleMatrixSquaredMagnitude_OBJECTS) $(testDoubleMatrixSquaredMagnitude_DEPENDENCIES)
+ @rm -f testDoubleMatrixSquaredMagnitude$(EXEEXT)
+ $(testDoubleMatrixSquaredMagnitude_LINK) $(testDoubleMatrixSquaredMagnitude_OBJECTS) $(testDoubleMatrixSquaredMagnitude_LDADD) $(LIBS)
+testFloatMatrixSquaredMagnitude$(EXEEXT): $(testFloatMatrixSquaredMagnitude_OBJECTS) $(testFloatMatrixSquaredMagnitude_DEPENDENCIES)
+ @rm -f testFloatMatrixSquaredMagnitude$(EXEEXT)
+ $(testFloatMatrixSquaredMagnitude_LINK) $(testFloatMatrixSquaredMagnitude_OBJECTS) $(testFloatMatrixSquaredMagnitude_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixSquaredMagnitude_la-ssquMagns.lo: ssquMagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-ssquMagns.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagns.Tpo -c -o libMatrixSquaredMagnitude_la-ssquMagns.lo `test -f 'ssquMagns.c' || echo '$(srcdir)/'`ssquMagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagns.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssquMagns.c' object='libMatrixSquaredMagnitude_la-ssquMagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-ssquMagns.lo `test -f 'ssquMagns.c' || echo '$(srcdir)/'`ssquMagns.c
+
+libMatrixSquaredMagnitude_la-ssquMagna.lo: ssquMagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-ssquMagna.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagna.Tpo -c -o libMatrixSquaredMagnitude_la-ssquMagna.lo `test -f 'ssquMagna.c' || echo '$(srcdir)/'`ssquMagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagna.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-ssquMagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssquMagna.c' object='libMatrixSquaredMagnitude_la-ssquMagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-ssquMagna.lo `test -f 'ssquMagna.c' || echo '$(srcdir)/'`ssquMagna.c
+
+libMatrixSquaredMagnitude_la-dsquMagns.lo: dsquMagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-dsquMagns.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagns.Tpo -c -o libMatrixSquaredMagnitude_la-dsquMagns.lo `test -f 'dsquMagns.c' || echo '$(srcdir)/'`dsquMagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagns.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsquMagns.c' object='libMatrixSquaredMagnitude_la-dsquMagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-dsquMagns.lo `test -f 'dsquMagns.c' || echo '$(srcdir)/'`dsquMagns.c
+
+libMatrixSquaredMagnitude_la-dsquMagna.lo: dsquMagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-dsquMagna.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagna.Tpo -c -o libMatrixSquaredMagnitude_la-dsquMagna.lo `test -f 'dsquMagna.c' || echo '$(srcdir)/'`dsquMagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagna.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-dsquMagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsquMagna.c' object='libMatrixSquaredMagnitude_la-dsquMagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-dsquMagna.lo `test -f 'dsquMagna.c' || echo '$(srcdir)/'`dsquMagna.c
+
+libMatrixSquaredMagnitude_la-csquMagns.lo: csquMagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-csquMagns.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagns.Tpo -c -o libMatrixSquaredMagnitude_la-csquMagns.lo `test -f 'csquMagns.c' || echo '$(srcdir)/'`csquMagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagns.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csquMagns.c' object='libMatrixSquaredMagnitude_la-csquMagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-csquMagns.lo `test -f 'csquMagns.c' || echo '$(srcdir)/'`csquMagns.c
+
+libMatrixSquaredMagnitude_la-csquMagna.lo: csquMagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-csquMagna.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagna.Tpo -c -o libMatrixSquaredMagnitude_la-csquMagna.lo `test -f 'csquMagna.c' || echo '$(srcdir)/'`csquMagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagna.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-csquMagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csquMagna.c' object='libMatrixSquaredMagnitude_la-csquMagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-csquMagna.lo `test -f 'csquMagna.c' || echo '$(srcdir)/'`csquMagna.c
+
+libMatrixSquaredMagnitude_la-zsquMagns.lo: zsquMagns.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-zsquMagns.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagns.Tpo -c -o libMatrixSquaredMagnitude_la-zsquMagns.lo `test -f 'zsquMagns.c' || echo '$(srcdir)/'`zsquMagns.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagns.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagns.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsquMagns.c' object='libMatrixSquaredMagnitude_la-zsquMagns.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-zsquMagns.lo `test -f 'zsquMagns.c' || echo '$(srcdir)/'`zsquMagns.c
+
+libMatrixSquaredMagnitude_la-zsquMagna.lo: zsquMagna.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -MT libMatrixSquaredMagnitude_la-zsquMagna.lo -MD -MP -MF $(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagna.Tpo -c -o libMatrixSquaredMagnitude_la-zsquMagna.lo `test -f 'zsquMagna.c' || echo '$(srcdir)/'`zsquMagna.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagna.Tpo $(DEPDIR)/libMatrixSquaredMagnitude_la-zsquMagna.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsquMagna.c' object='libMatrixSquaredMagnitude_la-zsquMagna.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixSquaredMagnitude_la_CFLAGS) $(CFLAGS) -c -o libMatrixSquaredMagnitude_la-zsquMagna.lo `test -f 'zsquMagna.c' || echo '$(srcdir)/'`zsquMagna.c
+
+testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.o: testDoubleSquaredMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -MT testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.o -MD -MP -MF $(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Tpo -c -o testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.o `test -f 'testDoubleSquaredMagnitude.c' || echo '$(srcdir)/'`testDoubleSquaredMagnitude.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Tpo $(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSquaredMagnitude.c' object='testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.o `test -f 'testDoubleSquaredMagnitude.c' || echo '$(srcdir)/'`testDoubleSquaredMagnitude.c
+
+testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.obj: testDoubleSquaredMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -MT testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.obj -MD -MP -MF $(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Tpo -c -o testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.obj `if test -f 'testDoubleSquaredMagnitude.c'; then $(CYGPATH_W) 'testDoubleSquaredMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSquaredMagnitude.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Tpo $(DEPDIR)/testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSquaredMagnitude.c' object='testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -c -o testDoubleMatrixSquaredMagnitude-testDoubleSquaredMagnitude.obj `if test -f 'testDoubleSquaredMagnitude.c'; then $(CYGPATH_W) 'testDoubleSquaredMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSquaredMagnitude.c'; fi`
+
+testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.o: testFloatSquaredMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -MT testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.o -MD -MP -MF $(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Tpo -c -o testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.o `test -f 'testFloatSquaredMagnitude.c' || echo '$(srcdir)/'`testFloatSquaredMagnitude.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Tpo $(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSquaredMagnitude.c' object='testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -c -o testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.o `test -f 'testFloatSquaredMagnitude.c' || echo '$(srcdir)/'`testFloatSquaredMagnitude.c
+
+testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.obj: testFloatSquaredMagnitude.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -MT testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.obj -MD -MP -MF $(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Tpo -c -o testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.obj `if test -f 'testFloatSquaredMagnitude.c'; then $(CYGPATH_W) 'testFloatSquaredMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSquaredMagnitude.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Tpo $(DEPDIR)/testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSquaredMagnitude.c' object='testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMatrixSquaredMagnitude_CFLAGS) $(CFLAGS) -c -o testFloatMatrixSquaredMagnitude-testFloatSquaredMagnitude.obj `if test -f 'testFloatSquaredMagnitude.c'; then $(CYGPATH_W) 'testFloatSquaredMagnitude.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSquaredMagnitude.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagna.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagna.c
new file mode 100644
index 00000000..950dbd83
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagna.c
@@ -0,0 +1,25 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+#include "matrixMagnitude.h"
+
+float csquMagna(floatComplex* in, int rows, int cols){
+ float out;
+ out =cmagna(in,rows,cols);
+ return out*out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagns.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagns.c
new file mode 100644
index 00000000..e2535b26
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/csquMagns.c
@@ -0,0 +1,22 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+
+float csquMagns(floatComplex in){
+ return creals(in)*creals(in)+cimags(in)*cimags(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagna.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagna.c
new file mode 100644
index 00000000..6ee7c7f3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagna.c
@@ -0,0 +1,25 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+#include "matrixMagnitude.h"
+
+double dsquMagna(double* in, int rows, int cols){
+ double out;
+ out=dmagna(in,rows,cols);
+ return out*out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagns.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagns.c
new file mode 100644
index 00000000..bd4d9023
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/dsquMagns.c
@@ -0,0 +1,22 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+
+double dsquMagns(double in){
+ return in*in;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagna.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagna.c
new file mode 100644
index 00000000..468cae0d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagna.c
@@ -0,0 +1,25 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+#include "matrixMagnitude.h"
+
+float ssquMagna(float* in, int rows, int cols){
+ float out;
+ out=smagna(in,rows,cols);
+ return out*out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagns.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagns.c
new file mode 100644
index 00000000..1f8a10b3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/ssquMagns.c
@@ -0,0 +1,22 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+
+float ssquMagns(float in){
+ return in*in;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/testDoubleSquaredMagnitude.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/testDoubleSquaredMagnitude.c
new file mode 100644
index 00000000..2a44a958
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/testDoubleSquaredMagnitude.c
@@ -0,0 +1,67 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+#include <assert.h>
+#include <stdio.h>
+
+
+static void dsquMagnsTest(void){
+}
+
+
+static void dsquMagnaTest(void){
+}
+
+
+static void zsquMagnsTest(void){
+}
+
+static void zsquMagnaTest(void){
+}
+
+
+static int squMagnTest(void){
+ printf("\n >>> Squared Magnitude Double Tests<<<\n");
+ dsquMagnsTest();
+ dsquMagnaTest();
+ zsquMagnsTest();
+ zsquMagnaTest();
+ return 0;
+}
+
+int main (void){
+ assert(squMagnTest()==0);
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/testFloatSquaredMagnitude.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/testFloatSquaredMagnitude.c
new file mode 100644
index 00000000..847abebd
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/testFloatSquaredMagnitude.c
@@ -0,0 +1,52 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+#include <assert.h>
+#include <stdio.h>
+
+static void ssquMagnsTest(void){
+}
+
+
+static void ssquMagnaTest(void){
+}
+
+
+static void csquMagnsTest(void){
+}
+
+static void csquMagnaTest(void){
+}
+
+
+static int squMagnTest(void){
+ printf("\n >>> Squared Magnitude Float Tests<<<\n");
+ ssquMagnsTest();
+ ssquMagnaTest();
+ csquMagnsTest();
+ csquMagnaTest();
+ return 0;
+}
+
+int main (void){
+ assert(squMagnTest()==0);
+ return 0;
+}
+
+
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj
new file mode 100644
index 00000000..2531d8ab
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{16744340-9DDC-4CC6-AC7D-A25DE89A3F5D}</ProjectGuid>
+ <RootNamespace>testDoubleSquaredMagnitude</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSquaredMagnitude.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj.filters b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj.filters
new file mode 100644
index 00000000..17c18bd4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_DoubleSquaredMagnitude/testDoubleSquaredMagnitude.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSquaredMagnitude.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj
new file mode 100644
index 00000000..c4c4064c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{6DBADD0B-C4C1-48CF-95EA-6CF7272A0391}</ProjectGuid>
+ <RootNamespace>testFloatSquaredMagnitude</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSquaredMagnitude.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj.filters b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj.filters
new file mode 100644
index 00000000..8ee8b55e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/test_FloatSquaredMagnitude/testFloatSquaredMagnitude.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSquaredMagnitude.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagna.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagna.c
new file mode 100644
index 00000000..4d1eecb8
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagna.c
@@ -0,0 +1,25 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+#include "matrixMagnitude.h"
+
+double zsquMagna(doubleComplex* in, int rows, int cols){
+ double out;
+ out=zmagna(in,rows,cols);
+ return out*out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagns.c b/2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagns.c
new file mode 100644
index 00000000..e845357e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/squaredMagnitude/zsquMagns.c
@@ -0,0 +1,22 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "matrixSquaredMagnitude.h"
+
+double zsquMagns(doubleComplex in){
+ return zreals(in)*zreals(in)+zimags(in)*zimags(in);
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/Makefile.am b/2.3-1/src/c/matrixOperations/trace/Makefile.am
new file mode 100644
index 00000000..ddf72b80
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/Makefile.am
@@ -0,0 +1,41 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMatrixTrace_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixTrace.la
+
+HEAD = ../includes/matrixTrace.h
+
+libMatrixTrace_la_SOURCES = $(HEAD) \
+ stracea.c \
+ dtracea.c \
+ ctracea.c \
+ ztracea.c
+
+check_PROGRAMS = testMatrixTrace
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixTrace.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixTrace_SOURCES = testMatrixTrace.c
+testMatrixTrace_LDADD = $(check_LDADD)
+testMatrixTrace_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixTrace
diff --git a/2.3-1/src/c/matrixOperations/trace/Makefile.in b/2.3-1/src/c/matrixOperations/trace/Makefile.in
new file mode 100644
index 00000000..d930f1d7
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/Makefile.in
@@ -0,0 +1,712 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixTrace$(EXEEXT)
+TESTS = testMatrixTrace$(EXEEXT)
+subdir = src/c/matrixOperations/trace
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixTrace_la_LIBADD =
+am__objects_1 =
+am_libMatrixTrace_la_OBJECTS = $(am__objects_1) \
+ libMatrixTrace_la-stracea.lo libMatrixTrace_la-dtracea.lo \
+ libMatrixTrace_la-ctracea.lo libMatrixTrace_la-ztracea.lo
+libMatrixTrace_la_OBJECTS = $(am_libMatrixTrace_la_OBJECTS)
+libMatrixTrace_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixTrace_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+am_testMatrixTrace_OBJECTS = \
+ testMatrixTrace-testMatrixTrace.$(OBJEXT)
+testMatrixTrace_OBJECTS = $(am_testMatrixTrace_OBJECTS)
+testMatrixTrace_DEPENDENCIES = $(check_LDADD)
+testMatrixTrace_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatrixTrace_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixTrace_la_SOURCES) $(testMatrixTrace_SOURCES)
+DIST_SOURCES = $(libMatrixTrace_la_SOURCES) $(testMatrixTrace_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixTrace_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixTrace.la
+HEAD = ../includes/matrixTrace.h
+libMatrixTrace_la_SOURCES = $(HEAD) \
+ stracea.c \
+ dtracea.c \
+ ctracea.c \
+ ztracea.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixTrace.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixTrace_SOURCES = testMatrixTrace.c
+testMatrixTrace_LDADD = $(check_LDADD)
+testMatrixTrace_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/trace/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/trace/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixTrace.la: $(libMatrixTrace_la_OBJECTS) $(libMatrixTrace_la_DEPENDENCIES)
+ $(libMatrixTrace_la_LINK) -rpath $(pkglibdir) $(libMatrixTrace_la_OBJECTS) $(libMatrixTrace_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixTrace$(EXEEXT): $(testMatrixTrace_OBJECTS) $(testMatrixTrace_DEPENDENCIES)
+ @rm -f testMatrixTrace$(EXEEXT)
+ $(testMatrixTrace_LINK) $(testMatrixTrace_OBJECTS) $(testMatrixTrace_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTrace_la-ctracea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTrace_la-dtracea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTrace_la-stracea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTrace_la-ztracea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixTrace-testMatrixTrace.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixTrace_la-stracea.lo: stracea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -MT libMatrixTrace_la-stracea.lo -MD -MP -MF $(DEPDIR)/libMatrixTrace_la-stracea.Tpo -c -o libMatrixTrace_la-stracea.lo `test -f 'stracea.c' || echo '$(srcdir)/'`stracea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTrace_la-stracea.Tpo $(DEPDIR)/libMatrixTrace_la-stracea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stracea.c' object='libMatrixTrace_la-stracea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -c -o libMatrixTrace_la-stracea.lo `test -f 'stracea.c' || echo '$(srcdir)/'`stracea.c
+
+libMatrixTrace_la-dtracea.lo: dtracea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -MT libMatrixTrace_la-dtracea.lo -MD -MP -MF $(DEPDIR)/libMatrixTrace_la-dtracea.Tpo -c -o libMatrixTrace_la-dtracea.lo `test -f 'dtracea.c' || echo '$(srcdir)/'`dtracea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTrace_la-dtracea.Tpo $(DEPDIR)/libMatrixTrace_la-dtracea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dtracea.c' object='libMatrixTrace_la-dtracea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -c -o libMatrixTrace_la-dtracea.lo `test -f 'dtracea.c' || echo '$(srcdir)/'`dtracea.c
+
+libMatrixTrace_la-ctracea.lo: ctracea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -MT libMatrixTrace_la-ctracea.lo -MD -MP -MF $(DEPDIR)/libMatrixTrace_la-ctracea.Tpo -c -o libMatrixTrace_la-ctracea.lo `test -f 'ctracea.c' || echo '$(srcdir)/'`ctracea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTrace_la-ctracea.Tpo $(DEPDIR)/libMatrixTrace_la-ctracea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ctracea.c' object='libMatrixTrace_la-ctracea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -c -o libMatrixTrace_la-ctracea.lo `test -f 'ctracea.c' || echo '$(srcdir)/'`ctracea.c
+
+libMatrixTrace_la-ztracea.lo: ztracea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -MT libMatrixTrace_la-ztracea.lo -MD -MP -MF $(DEPDIR)/libMatrixTrace_la-ztracea.Tpo -c -o libMatrixTrace_la-ztracea.lo `test -f 'ztracea.c' || echo '$(srcdir)/'`ztracea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTrace_la-ztracea.Tpo $(DEPDIR)/libMatrixTrace_la-ztracea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztracea.c' object='libMatrixTrace_la-ztracea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTrace_la_CFLAGS) $(CFLAGS) -c -o libMatrixTrace_la-ztracea.lo `test -f 'ztracea.c' || echo '$(srcdir)/'`ztracea.c
+
+testMatrixTrace-testMatrixTrace.o: testMatrixTrace.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTrace_CFLAGS) $(CFLAGS) -MT testMatrixTrace-testMatrixTrace.o -MD -MP -MF $(DEPDIR)/testMatrixTrace-testMatrixTrace.Tpo -c -o testMatrixTrace-testMatrixTrace.o `test -f 'testMatrixTrace.c' || echo '$(srcdir)/'`testMatrixTrace.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixTrace-testMatrixTrace.Tpo $(DEPDIR)/testMatrixTrace-testMatrixTrace.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixTrace.c' object='testMatrixTrace-testMatrixTrace.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTrace_CFLAGS) $(CFLAGS) -c -o testMatrixTrace-testMatrixTrace.o `test -f 'testMatrixTrace.c' || echo '$(srcdir)/'`testMatrixTrace.c
+
+testMatrixTrace-testMatrixTrace.obj: testMatrixTrace.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTrace_CFLAGS) $(CFLAGS) -MT testMatrixTrace-testMatrixTrace.obj -MD -MP -MF $(DEPDIR)/testMatrixTrace-testMatrixTrace.Tpo -c -o testMatrixTrace-testMatrixTrace.obj `if test -f 'testMatrixTrace.c'; then $(CYGPATH_W) 'testMatrixTrace.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixTrace.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixTrace-testMatrixTrace.Tpo $(DEPDIR)/testMatrixTrace-testMatrixTrace.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixTrace.c' object='testMatrixTrace-testMatrixTrace.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTrace_CFLAGS) $(CFLAGS) -c -o testMatrixTrace-testMatrixTrace.obj `if test -f 'testMatrixTrace.c'; then $(CYGPATH_W) 'testMatrixTrace.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixTrace.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/trace/ctracea.c b/2.3-1/src/c/matrixOperations/trace/ctracea.c
new file mode 100644
index 00000000..75b0921e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/ctracea.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTrace.h"
+
+floatComplex ctracea ( floatComplex* in ,int lines ){
+
+
+ int i = 0 ;
+ float rout = 0.0f ;
+ float iout = 0.0f ;
+
+ for ( i = 0 ; i < lines ; ++i)
+ {
+ rout += creals (in[i*lines + i] ) ;
+ iout += cimags (in[i*lines + i] ) ;
+ }
+
+ return FloatComplex ( rout , iout ) ;
+
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/dtracea.c b/2.3-1/src/c/matrixOperations/trace/dtracea.c
new file mode 100644
index 00000000..4938776b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/dtracea.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTrace.h"
+
+double dtracea ( double* in ,int lines){
+
+
+ int i = 0 ;
+ double out = 0 ;
+
+ for ( i = 0 ; i < lines ; ++i)
+ out += in[i*lines + i] ;
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/i16tracea.c b/2.3-1/src/c/matrixOperations/trace/i16tracea.c
new file mode 100644
index 00000000..3aeec4e1
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/i16tracea.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTrace.h"
+
+int16 i16tracea ( int16* in ,int lines){
+
+
+ int i = 0 ;
+ //double out = 0 ;
+ int16 out = 0;
+
+ for ( i = 0 ; i < lines ; ++i)
+ out += (int16)in[i*lines + i] ;
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/i8tracea.c b/2.3-1/src/c/matrixOperations/trace/i8tracea.c
new file mode 100644
index 00000000..9158ba45
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/i8tracea.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTrace.h"
+
+int8 i8tracea ( int8* in ,int lines){
+
+
+ int i = 0 ;
+ //double out = 0 ;
+ int8 out = 0;
+
+ for ( i = 0 ; i < lines ; ++i)
+ out += (int8)in[i*lines + i] ;
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/stracea.c b/2.3-1/src/c/matrixOperations/trace/stracea.c
new file mode 100644
index 00000000..06c4a8be
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/stracea.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTrace.h"
+
+float stracea ( float* in ,int lines ){
+
+
+ int i = 0 ;
+ float out = 0 ;
+
+ for ( i = 0 ; i < lines ; ++i)
+ out += in[i*lines + i] ;
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/testMatrixTrace.c b/2.3-1/src/c/matrixOperations/trace/testMatrixTrace.c
new file mode 100644
index 00000000..0cbea97b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/testMatrixTrace.c
@@ -0,0 +1,237 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "matrixTrace.h"
+
+#define LINES 10
+static void straceaTest ( void ) {
+
+ float in[] =
+ {0.41574033396318555f,0.49111106572672725f,0.44963645050302148f,0.83262220909819007f,
+ 0.64995764615014195f,0.49560560984537005f,0.61533244187012315f,0.52116033947095275f,
+ 0.31538392649963498f,0.50222720531746745f,
+0.15958226565271616f,0.34022171795368195f,0.96781380381435156f,0.74247795902192593f,
+ 0.23031901288777590f,0.18889334425330162f,0.89581834804266691f,0.45098419673740864f,
+ 0.34899875614792109f,0.05404338985681534f,
+0.38831026805564761f,0.99661536002531648f,0.64890601998195052f,0.01946402387693524f,
+ 0.55043680546805263f,0.56412307033315301f,0.87217613449320197f,0.39612928451970220f,
+ 0.74138183100149035f,0.01639390224590898f,
+0.94154607132077217f,0.02153958659619093f,0.25446669198572636f,0.80160319153219461f,
+ 0.30389970541000366f,0.85622101929038763f,0.83897679112851620f,0.72408697474747896f,
+ 0.97027219459414482f,0.60508118104189634f,
+0.47229793528094888f,0.68768908223137259f,0.19239750178530812f,0.25545394374057651f,
+ 0.03710305178537965f,0.07947642868384719f,0.20409553544595838f,0.67240559635683894f,
+ 0.12765105674043298f,0.29538751533254981f,
+0.85336526390165091f,0.00449241511523724f,0.68614923674613237f,0.26881096139550209f,
+ 0.17038810532540083f,0.61961987055838108f,0.31665382627397776f,0.23861460387706757f,
+ 0.38288621511310339f,0.64512947760522366f,
+0.12077391659840941f,0.63978545414283872f,0.42314558057114482f,0.75584907690063119f,
+ 0.56986862560734153f,0.22410399885848165f,0.70068256510421634f,0.71248416090384126f,
+ 0.48824774986132979f,0.94497666554525495f,
+0.89993809349834919f,0.5416147718206048f,0.67344415932893753f,0.43475896771997213f,
+ 0.00364112667739391f,0.85820947308093309f,0.20731051638722420f,0.32864938955754042f,
+ 0.51919496990740299f,0.5638650292530656f,
+0.43849021615460515f,0.22476492030546069f,0.82706967229023576f,0.64259665226563811f,
+ 0.44915470527485013f,0.71145519940182567f,0.52225506165996194f,0.48377691349014640f,
+ 0.09068560274317861f,0.97863480402156711f,
+0.89760566223412752f,0.73640052601695061f,0.93608058523386717f,0.69578680582344532f,
+ 0.05768106970936060f,0.80260276049375534f,0.94164209719747305f,0.76627670042216778f,
+ 0.68338975030928850f,0.93453497067093849f}
+;
+
+ float Result = 4.9177467138506472f ;
+
+ float out = 0.0f ;
+
+ out = stracea ( in , LINES ) ;
+
+ assert(fabsf(out - Result) / fabsf( out )< 1e-07);
+
+}
+
+static void dtraceaTest ( void ) {
+
+ double in[] =
+ {0.41574033396318555,0.49111106572672725,0.44963645050302148,0.83262220909819007,
+ 0.64995764615014195,0.49560560984537005,0.61533244187012315,0.52116033947095275,
+ 0.31538392649963498,0.50222720531746745,
+0.15958226565271616,0.34022171795368195,0.96781380381435156,0.74247795902192593,
+ 0.23031901288777590,0.18889334425330162,0.89581834804266691,0.45098419673740864,
+ 0.34899875614792109,0.05404338985681534,
+0.38831026805564761,0.99661536002531648,0.64890601998195052,0.01946402387693524,
+ 0.55043680546805263,0.56412307033315301,0.87217613449320197,0.39612928451970220,
+ 0.74138183100149035,0.01639390224590898,
+0.94154607132077217,0.02153958659619093,0.25446669198572636,0.80160319153219461,
+ 0.30389970541000366,0.85622101929038763,0.83897679112851620,0.72408697474747896,
+ 0.97027219459414482,0.60508118104189634,
+0.47229793528094888,0.68768908223137259,0.19239750178530812,0.25545394374057651,
+ 0.03710305178537965,0.07947642868384719,0.20409553544595838,0.67240559635683894,
+ 0.12765105674043298,0.29538751533254981,
+0.85336526390165091,0.00449241511523724,0.68614923674613237,0.26881096139550209,
+ 0.17038810532540083,0.61961987055838108,0.31665382627397776,0.23861460387706757,
+ 0.38288621511310339,0.64512947760522366,
+0.12077391659840941,0.63978545414283872,0.42314558057114482,0.75584907690063119,
+ 0.56986862560734153,0.22410399885848165,0.70068256510421634,0.71248416090384126,
+ 0.48824774986132979,0.94497666554525495,
+0.89993809349834919,0.5416147718206048,0.67344415932893753,0.43475896771997213,
+ 0.00364112667739391,0.85820947308093309,0.20731051638722420,0.32864938955754042,
+ 0.51919496990740299,0.5638650292530656,
+0.43849021615460515,0.22476492030546069,0.82706967229023576,0.64259665226563811,
+ 0.44915470527485013,0.71145519940182567,0.52225506165996194,0.48377691349014640,
+ 0.09068560274317861,0.97863480402156711,
+0.89760566223412752,0.73640052601695061,0.93608058523386717,0.69578680582344532,
+ 0.05768106970936060,0.80260276049375534,0.94164209719747305,0.76627670042216778,
+ 0.68338975030928850,0.93453497067093849}
+;
+
+ double Result = 4.9177467138506472 ;
+
+ double out = 0 ;
+
+ out = dtracea ( in , LINES ) ;
+
+ assert(fabs(out - Result) / fabs( out )< 1e-16);
+}
+
+
+
+static void ctraceaTest ( void ) {
+ int i = 0 ;
+
+ float tin[] =
+{0.41574033396318555f,0.49111106572672725f,0.44963645050302148f,0.83262220909819007f,
+ 0.64995764615014195f,0.49560560984537005f,0.61533244187012315f,0.52116033947095275f,
+ 0.31538392649963498f,0.50222720531746745f,
+0.15958226565271616f,0.34022171795368195f,0.96781380381435156f,0.74247795902192593f,
+ 0.23031901288777590f,0.18889334425330162f,0.89581834804266691f,0.45098419673740864f,
+ 0.34899875614792109f,0.05404338985681534f,
+0.38831026805564761f,0.99661536002531648f,0.64890601998195052f,0.01946402387693524f,
+ 0.55043680546805263f,0.56412307033315301f,0.87217613449320197f,0.39612928451970220f,
+ 0.74138183100149035f,0.01639390224590898f,
+0.94154607132077217f,0.02153958659619093f,0.25446669198572636f,0.80160319153219461f,
+ 0.30389970541000366f,0.85622101929038763f,0.83897679112851620f,0.72408697474747896f,
+ 0.97027219459414482f,0.60508118104189634f,
+0.47229793528094888f,0.68768908223137259f,0.19239750178530812f,0.25545394374057651f,
+ 0.03710305178537965f,0.07947642868384719f,0.20409553544595838f,0.67240559635683894f,
+ 0.12765105674043298f,0.29538751533254981f,
+0.85336526390165091f,0.00449241511523724f,0.68614923674613237f,0.26881096139550209f,
+ 0.17038810532540083f,0.61961987055838108f,0.31665382627397776f,0.23861460387706757f,
+ 0.38288621511310339f,0.64512947760522366f,
+0.12077391659840941f,0.63978545414283872f,0.42314558057114482f,0.75584907690063119f,
+ 0.56986862560734153f,0.22410399885848165f,0.70068256510421634f,0.71248416090384126f,
+ 0.48824774986132979f,0.94497666554525495f,
+0.89993809349834919f,0.5416147718206048f,0.67344415932893753f,0.43475896771997213f,
+ 0.00364112667739391f,0.85820947308093309f,0.20731051638722420f,0.32864938955754042f,
+ 0.51919496990740299f,0.5638650292530656f,
+0.43849021615460515f,0.22476492030546069f,0.82706967229023576f,0.64259665226563811f,
+ 0.44915470527485013f,0.71145519940182567f,0.52225506165996194f,0.48377691349014640f,
+ 0.09068560274317861f,0.97863480402156711f,
+0.89760566223412752f,0.73640052601695061f,0.93608058523386717f,0.69578680582344532f,
+ 0.05768106970936060f,0.80260276049375534f,0.94164209719747305f,0.76627670042216778f,
+ 0.68338975030928850f,0.93453497067093849f}
+;
+ floatComplex in [LINES*LINES] ;
+
+ floatComplex Result = FloatComplex ( 4.9177467138506472f, 4.9177467138506472f);
+
+ floatComplex out ;
+
+ for ( i = 0 ; i < LINES*LINES ; i++ )
+ in[i] = FloatComplex ( tin[i] , tin[i] ) ;
+
+ out = ctracea ( in , LINES ) ;
+
+ assert ( fabs( creals(out) - creals (Result) )/ fabs (creals (out)) < 1e-07 );
+ assert ( fabs( cimags(out) - cimags (Result) )/ fabs (cimags (out)) < 1e-07 );
+
+}
+
+
+
+
+
+static void ztraceaTest ( void ) {
+
+ int i = 0 ;
+
+ double tin[] =
+ {0.41574033396318555,0.49111106572672725,0.44963645050302148,0.83262220909819007,
+ 0.64995764615014195,0.49560560984537005,0.61533244187012315,0.52116033947095275,
+ 0.31538392649963498,0.50222720531746745,
+0.15958226565271616,0.34022171795368195,0.96781380381435156,0.74247795902192593,
+ 0.23031901288777590,0.18889334425330162,0.89581834804266691,0.45098419673740864,
+ 0.34899875614792109,0.05404338985681534,
+0.38831026805564761,0.99661536002531648,0.64890601998195052,0.01946402387693524,
+ 0.55043680546805263,0.56412307033315301,0.87217613449320197,0.39612928451970220,
+ 0.74138183100149035,0.01639390224590898,
+0.94154607132077217,0.02153958659619093,0.25446669198572636,0.80160319153219461,
+ 0.30389970541000366,0.85622101929038763,0.83897679112851620,0.72408697474747896,
+ 0.97027219459414482,0.60508118104189634,
+0.47229793528094888,0.68768908223137259,0.19239750178530812,0.25545394374057651,
+ 0.03710305178537965,0.07947642868384719,0.20409553544595838,0.67240559635683894,
+ 0.12765105674043298,0.29538751533254981,
+0.85336526390165091,0.00449241511523724,0.68614923674613237,0.26881096139550209,
+ 0.17038810532540083,0.61961987055838108,0.31665382627397776,0.23861460387706757,
+ 0.38288621511310339,0.64512947760522366,
+0.12077391659840941,0.63978545414283872,0.42314558057114482,0.75584907690063119,
+ 0.56986862560734153,0.22410399885848165,0.70068256510421634,0.71248416090384126,
+ 0.48824774986132979,0.94497666554525495,
+0.89993809349834919,0.5416147718206048,0.67344415932893753,0.43475896771997213,
+ 0.00364112667739391,0.85820947308093309,0.20731051638722420,0.32864938955754042,
+ 0.51919496990740299,0.5638650292530656,
+0.43849021615460515,0.22476492030546069,0.82706967229023576,0.64259665226563811,
+ 0.44915470527485013,0.71145519940182567,0.52225506165996194,0.48377691349014640,
+ 0.09068560274317861,0.97863480402156711,
+0.89760566223412752,0.73640052601695061,0.93608058523386717,0.69578680582344532,
+ 0.05768106970936060,0.80260276049375534,0.94164209719747305,0.76627670042216778,
+ 0.68338975030928850,0.93453497067093849};
+
+ doubleComplex in [LINES*LINES] ;
+
+ doubleComplex Result = DoubleComplex ( 4.9177467138506472, 4.9177467138506472);
+
+ doubleComplex out ;
+
+
+
+ for ( i = 0 ; i < LINES*LINES ; i++ )
+ in[i] = DoubleComplex ( tin[i] , tin[i] ) ;
+
+ out = ztracea ( in , LINES ) ;
+
+ assert ( fabs( zreals(out) - zreals (Result) )/ fabs (zreals (out)) < 1e-16 );
+ assert ( fabs( zimags(out) - zimags (Result) )/ fabs (zimags (out)) < 1e-16 );
+
+}
+
+static int testTrace(void) {
+
+ printf("\n>>>> Matrix Trace Tests\n");
+ straceaTest();
+ dtraceaTest();
+ ctraceaTest();
+ ztraceaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testTrace() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj b/2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj
new file mode 100644
index 00000000..3f33a6c9
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{21E5E59A-7E4E-4F65-9042-9C67C713D51C}</ProjectGuid>
+ <RootNamespace>testMatrixTrace</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixTrace.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj.filters b/2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj.filters
new file mode 100644
index 00000000..e2b1b648
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/test_MatrixTrace/testMatrixTrace.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixTrace.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/trace/u16tracea.c b/2.3-1/src/c/matrixOperations/trace/u16tracea.c
new file mode 100644
index 00000000..2a85fa30
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/u16tracea.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTrace.h"
+
+uint16 u16tracea ( uint16* in ,int lines){
+
+
+ int i = 0 ;
+ //double out = 0 ;
+ uint16 out = 0;
+
+ for ( i = 0 ; i < lines ; ++i)
+ out += (uint16)in[i*lines + i] ;
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/u8tracea.c b/2.3-1/src/c/matrixOperations/trace/u8tracea.c
new file mode 100644
index 00000000..2823f6d4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/u8tracea.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTrace.h"
+
+uint8 u8tracea ( uint8* in ,int lines){
+
+
+ int i = 0 ;
+ //double out = 0 ;
+ uint8 out = 0;
+
+ for ( i = 0 ; i < lines ; ++i)
+ out += (uint8)in[i*lines + i] ;
+
+ return out;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/trace/ztracea.c b/2.3-1/src/c/matrixOperations/trace/ztracea.c
new file mode 100644
index 00000000..12154f40
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/trace/ztracea.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTrace.h"
+
+doubleComplex ztracea ( doubleComplex* in ,int lines ){
+
+
+ int i = 0 ;
+ double rout = 0 ;
+ double iout = 0 ;
+
+ for ( i = 0 ; i < lines ; ++i)
+ {
+ rout += zreals (in[i*lines + i] ) ;
+ iout += zimags (in[i*lines + i] ) ;
+ }
+
+ return DoubleComplex ( rout , iout ) ;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/transpose/Makefile.am b/2.3-1/src/c/matrixOperations/transpose/Makefile.am
new file mode 100644
index 00000000..f36910f4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/Makefile.am
@@ -0,0 +1,42 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixTranspose_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixTranspose.la
+
+HEAD = ../includes/matrixTranspose.h
+
+libMatrixTranspose_la_SOURCES = $(HEAD) \
+ stransposea.c \
+ dtransposea.c \
+ ctransposea.c \
+ ztransposea.c
+
+check_PROGRAMS = testMatrixTranspose
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ libMatrixTranspose.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixTranspose_SOURCES = testMatrixTranspose.c
+testMatrixTranspose_LDADD = $(check_LDADD)
+testMatrixTranspose_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixTranspose
diff --git a/2.3-1/src/c/matrixOperations/transpose/Makefile.in b/2.3-1/src/c/matrixOperations/transpose/Makefile.in
new file mode 100644
index 00000000..1b14f44e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/Makefile.in
@@ -0,0 +1,718 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixTranspose$(EXEEXT)
+TESTS = testMatrixTranspose$(EXEEXT)
+subdir = src/c/matrixOperations/transpose
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixTranspose_la_LIBADD =
+am__objects_1 =
+am_libMatrixTranspose_la_OBJECTS = $(am__objects_1) \
+ libMatrixTranspose_la-stransposea.lo \
+ libMatrixTranspose_la-dtransposea.lo \
+ libMatrixTranspose_la-ctransposea.lo \
+ libMatrixTranspose_la-ztransposea.lo
+libMatrixTranspose_la_OBJECTS = $(am_libMatrixTranspose_la_OBJECTS)
+libMatrixTranspose_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testMatrixTranspose_OBJECTS = \
+ testMatrixTranspose-testMatrixTranspose.$(OBJEXT)
+testMatrixTranspose_OBJECTS = $(am_testMatrixTranspose_OBJECTS)
+testMatrixTranspose_DEPENDENCIES = $(check_LDADD)
+testMatrixTranspose_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMatrixTranspose_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixTranspose_la_SOURCES) \
+ $(testMatrixTranspose_SOURCES)
+DIST_SOURCES = $(libMatrixTranspose_la_SOURCES) \
+ $(testMatrixTranspose_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixTranspose_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixTranspose.la
+HEAD = ../includes/matrixTranspose.h
+libMatrixTranspose_la_SOURCES = $(HEAD) \
+ stransposea.c \
+ dtransposea.c \
+ ctransposea.c \
+ ztransposea.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ libMatrixTranspose.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixTranspose_SOURCES = testMatrixTranspose.c
+testMatrixTranspose_LDADD = $(check_LDADD)
+testMatrixTranspose_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/transpose/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/transpose/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixTranspose.la: $(libMatrixTranspose_la_OBJECTS) $(libMatrixTranspose_la_DEPENDENCIES)
+ $(libMatrixTranspose_la_LINK) -rpath $(pkglibdir) $(libMatrixTranspose_la_OBJECTS) $(libMatrixTranspose_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixTranspose$(EXEEXT): $(testMatrixTranspose_OBJECTS) $(testMatrixTranspose_DEPENDENCIES)
+ @rm -f testMatrixTranspose$(EXEEXT)
+ $(testMatrixTranspose_LINK) $(testMatrixTranspose_OBJECTS) $(testMatrixTranspose_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTranspose_la-ctransposea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTranspose_la-dtransposea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTranspose_la-stransposea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixTranspose_la-ztransposea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixTranspose_la-stransposea.lo: stransposea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -MT libMatrixTranspose_la-stransposea.lo -MD -MP -MF $(DEPDIR)/libMatrixTranspose_la-stransposea.Tpo -c -o libMatrixTranspose_la-stransposea.lo `test -f 'stransposea.c' || echo '$(srcdir)/'`stransposea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTranspose_la-stransposea.Tpo $(DEPDIR)/libMatrixTranspose_la-stransposea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stransposea.c' object='libMatrixTranspose_la-stransposea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -c -o libMatrixTranspose_la-stransposea.lo `test -f 'stransposea.c' || echo '$(srcdir)/'`stransposea.c
+
+libMatrixTranspose_la-dtransposea.lo: dtransposea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -MT libMatrixTranspose_la-dtransposea.lo -MD -MP -MF $(DEPDIR)/libMatrixTranspose_la-dtransposea.Tpo -c -o libMatrixTranspose_la-dtransposea.lo `test -f 'dtransposea.c' || echo '$(srcdir)/'`dtransposea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTranspose_la-dtransposea.Tpo $(DEPDIR)/libMatrixTranspose_la-dtransposea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dtransposea.c' object='libMatrixTranspose_la-dtransposea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -c -o libMatrixTranspose_la-dtransposea.lo `test -f 'dtransposea.c' || echo '$(srcdir)/'`dtransposea.c
+
+libMatrixTranspose_la-ctransposea.lo: ctransposea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -MT libMatrixTranspose_la-ctransposea.lo -MD -MP -MF $(DEPDIR)/libMatrixTranspose_la-ctransposea.Tpo -c -o libMatrixTranspose_la-ctransposea.lo `test -f 'ctransposea.c' || echo '$(srcdir)/'`ctransposea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTranspose_la-ctransposea.Tpo $(DEPDIR)/libMatrixTranspose_la-ctransposea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ctransposea.c' object='libMatrixTranspose_la-ctransposea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -c -o libMatrixTranspose_la-ctransposea.lo `test -f 'ctransposea.c' || echo '$(srcdir)/'`ctransposea.c
+
+libMatrixTranspose_la-ztransposea.lo: ztransposea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -MT libMatrixTranspose_la-ztransposea.lo -MD -MP -MF $(DEPDIR)/libMatrixTranspose_la-ztransposea.Tpo -c -o libMatrixTranspose_la-ztransposea.lo `test -f 'ztransposea.c' || echo '$(srcdir)/'`ztransposea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixTranspose_la-ztransposea.Tpo $(DEPDIR)/libMatrixTranspose_la-ztransposea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztransposea.c' object='libMatrixTranspose_la-ztransposea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixTranspose_la_CFLAGS) $(CFLAGS) -c -o libMatrixTranspose_la-ztransposea.lo `test -f 'ztransposea.c' || echo '$(srcdir)/'`ztransposea.c
+
+testMatrixTranspose-testMatrixTranspose.o: testMatrixTranspose.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTranspose_CFLAGS) $(CFLAGS) -MT testMatrixTranspose-testMatrixTranspose.o -MD -MP -MF $(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Tpo -c -o testMatrixTranspose-testMatrixTranspose.o `test -f 'testMatrixTranspose.c' || echo '$(srcdir)/'`testMatrixTranspose.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Tpo $(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixTranspose.c' object='testMatrixTranspose-testMatrixTranspose.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTranspose_CFLAGS) $(CFLAGS) -c -o testMatrixTranspose-testMatrixTranspose.o `test -f 'testMatrixTranspose.c' || echo '$(srcdir)/'`testMatrixTranspose.c
+
+testMatrixTranspose-testMatrixTranspose.obj: testMatrixTranspose.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTranspose_CFLAGS) $(CFLAGS) -MT testMatrixTranspose-testMatrixTranspose.obj -MD -MP -MF $(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Tpo -c -o testMatrixTranspose-testMatrixTranspose.obj `if test -f 'testMatrixTranspose.c'; then $(CYGPATH_W) 'testMatrixTranspose.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixTranspose.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Tpo $(DEPDIR)/testMatrixTranspose-testMatrixTranspose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixTranspose.c' object='testMatrixTranspose-testMatrixTranspose.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixTranspose_CFLAGS) $(CFLAGS) -c -o testMatrixTranspose-testMatrixTranspose.obj `if test -f 'testMatrixTranspose.c'; then $(CYGPATH_W) 'testMatrixTranspose.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixTranspose.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/transpose/ctransposea.c b/2.3-1/src/c/matrixOperations/transpose/ctransposea.c
new file mode 100644
index 00000000..571d3b78
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/ctransposea.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTranspose.h"
+
+void ctransposea ( floatComplex* in , int lines , int columns, floatComplex* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/dtransposea.c b/2.3-1/src/c/matrixOperations/transpose/dtransposea.c
new file mode 100644
index 00000000..11a5fc05
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/dtransposea.c
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTranspose.h"
+
+void dtransposea ( double* in , int lines , int columns, double* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = in[i+j*lines];
+ }
+
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/i16transposea.c b/2.3-1/src/c/matrixOperations/transpose/i16transposea.c
new file mode 100644
index 00000000..e370c636
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/i16transposea.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTranspose.h"
+
+void i16transposea ( int16* in , int lines , int columns, int16* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = (int16)in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/i8transposea.c b/2.3-1/src/c/matrixOperations/transpose/i8transposea.c
new file mode 100644
index 00000000..a05ee064
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/i8transposea.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTranspose.h"
+
+void i8transposea ( int8* in , int lines , int columns, int8* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = (int8)in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/stransposea.c b/2.3-1/src/c/matrixOperations/transpose/stransposea.c
new file mode 100644
index 00000000..219f2216
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/stransposea.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTranspose.h"
+
+void stransposea ( float* in , int lines , int columns, float* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/testMatrixTranspose.c b/2.3-1/src/c/matrixOperations/transpose/testMatrixTranspose.c
new file mode 100644
index 00000000..fe2123d3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/testMatrixTranspose.c
@@ -0,0 +1,519 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTranspose.h"
+#include <assert.h>
+#include <stdio.h>
+
+#define LINE 15
+#define COLUMN 10
+
+
+
+static void stranspaTest (void ) {
+
+ int i = 0 ;
+
+
+ float in[] ={0.34382718056440353f,0.11506372271105647f,0.50752213317900896f,0.15747882844880223f,
+ 0.97023218311369419f,0.40251684701070189f,0.22695036139339209f,0.91680057207122445f,
+ 0.62407150492072105f,0.61546878470107913f,
+0.1970167332328856f,0.53554199635982513f,0.40760429529473186f,0.53506936598569155f,
+ 0.85157642932608724f,0.09831319935619831f,0.68369307881221175f,0.21228999551385641f,
+ 0.63760355720296502f,0.83135433867573738f,
+0.21228986512869596f,0.43117330456152558f,0.84080461412668228f,0.21290646074339747f,
+ 0.33933044690638781f,0.26086253346875310f,0.93650726415216923f,0.26978330826386809f,
+ 0.42704886104911566f,0.77340125897899270f,
+0.31403985014185309f,0.61453847866505384f,0.5017265700735152f,0.55914506316184998f,
+ 0.87725317804142833f,0.36363423336297274f,0.50530174048617482f,0.31998893804848194f,
+ 0.10716815060004592f,0.4244190966710448f,
+0.78216253779828548f,0.92589621385559440f,0.91287807654589415f,0.43049659812822938f,
+ 0.11314024776220322f,0.17466178117319942f,0.25248145777732134f,0.02321802498772740f,
+ 0.23822965659201145f,0.72621259605512023f,
+0.05409323470667005f,0.09938172809779644f,0.44357294728979468f,0.02280548494309187f,
+ 0.5264128320850432f,0.92341394722461700f,0.68188397912308574f,0.72654472757130861f,
+ 0.94629473658278584f,0.70999773032963276f,
+0.91902069095522165f,0.42805786477401853f,0.59837839566171169f,0.57614597817882895f,
+ 0.52973940502852201f,0.76051409030333161f,0.28363681584596634f,0.15340585587546229f,
+ 0.45766852516680956f,0.47457459988072515f,
+0.46035157097503543f,0.94318309519439936f,0.7741842647083104f,0.71491303853690624f,
+ 0.92917560925707221f,0.56402041297405958f,0.14094856614246964f,0.23552638292312622f,
+ 0.89644787041470408f,0.9438692079856992f,
+0.29926850274205208f,0.03273952705785632f,0.79220082703977823f,0.93216359661892056f,
+ 0.97654302977025509f,0.37970651825889945f,0.67591095995157957f,0.08797382796183228f,
+ 0.44384705275297165f,0.14596485672518611f,
+0.00291663268581033f,0.92132670804858208f,0.55046048713847995f,0.12326993141323328f,
+ 0.62254639761522412f,0.87762261740863323f,0.45126775791868567f,0.71059537213295698f,
+ 0.80895681912079453f,0.07141010463237762f,
+0.89934705849736929f,0.94490244099870324f,0.40850437059998512f,0.28655522270128131f,
+ 0.98225832823663950f,0.82174257980659604f,0.75430292449891567f,0.68887275597080588f,
+ 0.68317985069006681f,0.67337385797873139f,
+0.83879271661862731f,0.900706990621984f,0.72174380579963326f,0.01247995719313622f,
+ 0.75429888023063540f,0.67870581243187189f,0.13702143030241132f,0.65953194908797741f,
+ 0.03401931514963508f,0.65369247179478407f,
+0.43437494523823261f,0.80943161016330123f,0.47685358580201864f,0.57694048294797540f,
+ 0.54547880962491035f,0.08220098121091723f,0.66082405392080545f,0.18151161121204495f,
+ 0.23805456422269344f,0.19968961318954825f,
+0.77678761305287480f,0.02519542910158634f,0.63930579042062163f,0.39386960770934820f,
+ 0.72860160330310464f,0.25527314469218254f,0.38900542212650180f,0.3904965976253152f,
+ 0.94920115964487195f,0.60141251794993877f,
+0.13953176606446505f,0.00196450622752309f,0.99638652987778187f,0.68885837262496352f,
+ 0.02525969501584768f,0.74444567272439599f,0.70018205419182777f,0.15869047446176410f,
+ 0.21827886346727610f,0.18993748771026731f};
+
+
+ float out[(COLUMN+1 )*(LINE+1)] ;
+
+ float Result[(COLUMN+1)*(LINE+1)] =
+ {0.34382718056440353f,0.1970167332328856f,0.21228986512869596f,0.31403985014185309f,
+ 0.78216253779828548f,0.05409323470667005f,0.91902069095522165f,0.46035157097503543f,
+ 0.29926850274205208f,0.00291663268581033f,0.89934705849736929f,0.83879271661862731f,
+ 0.43437494523823261f,0.77678761305287480f,0.13953176606446505f,
+0.11506372271105647f,0.53554199635982513f,0.43117330456152558f,0.61453847866505384f,
+ 0.92589621385559440f,0.09938172809779644f,0.42805786477401853f,0.94318309519439936f,
+ 0.03273952705785632f,0.92132670804858208f,0.94490244099870324f,0.900706990621984f,
+ 0.80943161016330123f,0.02519542910158634f,0.00196450622752309f,
+0.50752213317900896f,0.40760429529473186f,0.84080461412668228f,0.5017265700735152f,
+ 0.91287807654589415f,0.44357294728979468f,0.59837839566171169f,0.7741842647083104f,
+ 0.79220082703977823f,0.55046048713847995f,0.40850437059998512f,0.72174380579963326f,
+ 0.47685358580201864f,0.63930579042062163f,0.99638652987778187f,
+0.15747882844880223f,0.53506936598569155f,0.21290646074339747f,0.55914506316184998f,
+ 0.43049659812822938f,0.02280548494309187f,0.57614597817882895f,0.71491303853690624f,
+ 0.93216359661892056f,0.12326993141323328f,0.28655522270128131f,0.01247995719313622f,
+ 0.57694048294797540f,0.39386960770934820f,0.68885837262496352f,
+0.97023218311369419f,0.85157642932608724f,0.33933044690638781f,0.87725317804142833f,
+ 0.11314024776220322f,0.5264128320850432f,0.52973940502852201f,0.92917560925707221f,
+ 0.97654302977025509f,0.62254639761522412f,0.98225832823663950f,0.75429888023063540f,
+ 0.54547880962491035f,0.72860160330310464f,0.02525969501584768f,
+0.40251684701070189f,0.09831319935619831f,0.26086253346875310f,0.36363423336297274f,
+ 0.17466178117319942f,0.92341394722461700f,0.76051409030333161f,0.56402041297405958f,
+ 0.37970651825889945f,0.87762261740863323f,0.82174257980659604f,0.67870581243187189f,
+ 0.08220098121091723f,0.25527314469218254f,0.74444567272439599f,
+0.22695036139339209f,0.68369307881221175f,0.93650726415216923f,0.50530174048617482f,
+ 0.25248145777732134f,0.68188397912308574f,0.28363681584596634f,0.14094856614246964f,
+ 0.67591095995157957f,0.45126775791868567f,0.75430292449891567f,0.13702143030241132f,
+ 0.66082405392080545f,0.38900542212650180f,0.70018205419182777f,
+0.91680057207122445f,0.21228999551385641f,0.26978330826386809f,0.31998893804848194f,
+ 0.02321802498772740f,0.72654472757130861f,0.15340585587546229f,0.23552638292312622f,
+ 0.08797382796183228f,0.71059537213295698f,0.68887275597080588f,0.65953194908797741f,
+ 0.18151161121204495f,0.3904965976253152f,0.15869047446176410f,
+0.62407150492072105f,0.63760355720296502f,0.42704886104911566f,0.10716815060004592f,
+ 0.23822965659201145f,0.94629473658278584f,0.45766852516680956f,0.89644787041470408f,
+ 0.44384705275297165f,0.80895681912079453f,0.68317985069006681f,0.03401931514963508f,
+ 0.23805456422269344f,0.94920115964487195f,0.21827886346727610f,
+0.61546878470107913f,0.83135433867573738f,0.77340125897899270f,0.4244190966710448f,
+ 0.72621259605512023f,0.70999773032963276f,0.47457459988072515f,0.9438692079856992f,
+ 0.14596485672518611f,0.07141010463237762f,0.67337385797873139f,0.65369247179478407f,
+ 0.19968961318954825f,0.60141251794993877f,0.18993748771026731f};
+
+ stransposea ( in , COLUMN , LINE , out );
+
+
+
+ for ( i = 0 ; i < LINE*COLUMN ; i++ )
+ {
+ assert ( fabs ( out[i] - Result[i] ) / fabs( out[i]) < 1e-6 ) ;
+ }
+
+
+
+}
+
+
+static void dtranspaTest (void ) {
+
+ int i = 0 ;
+
+
+ double in[] ={0.34382718056440353,0.11506372271105647,0.50752213317900896,0.15747882844880223,
+ 0.97023218311369419,0.40251684701070189,0.22695036139339209,0.91680057207122445,
+ 0.62407150492072105,0.61546878470107913,
+0.1970167332328856,0.53554199635982513,0.40760429529473186,0.53506936598569155,
+ 0.85157642932608724,0.09831319935619831,0.68369307881221175,0.21228999551385641,
+ 0.63760355720296502,0.83135433867573738,
+0.21228986512869596,0.43117330456152558,0.84080461412668228,0.21290646074339747,
+ 0.33933044690638781,0.26086253346875310,0.93650726415216923,0.26978330826386809,
+ 0.42704886104911566,0.77340125897899270,
+0.31403985014185309,0.61453847866505384,0.5017265700735152,0.55914506316184998,
+ 0.87725317804142833,0.36363423336297274,0.50530174048617482,0.31998893804848194,
+ 0.10716815060004592,0.4244190966710448,
+0.78216253779828548,0.92589621385559440,0.91287807654589415,0.43049659812822938,
+ 0.11314024776220322,0.17466178117319942,0.25248145777732134,0.02321802498772740,
+ 0.23822965659201145,0.72621259605512023,
+0.05409323470667005,0.09938172809779644,0.44357294728979468,0.02280548494309187,
+ 0.5264128320850432,0.92341394722461700,0.68188397912308574,0.72654472757130861,
+ 0.94629473658278584,0.70999773032963276,
+0.91902069095522165,0.42805786477401853,0.59837839566171169,0.57614597817882895,
+ 0.52973940502852201,0.76051409030333161,0.28363681584596634,0.15340585587546229,
+ 0.45766852516680956,0.47457459988072515,
+0.46035157097503543,0.94318309519439936,0.7741842647083104,0.71491303853690624,
+ 0.92917560925707221,0.56402041297405958,0.14094856614246964,0.23552638292312622,
+ 0.89644787041470408,0.9438692079856992,
+0.29926850274205208,0.03273952705785632,0.79220082703977823,0.93216359661892056,
+ 0.97654302977025509,0.37970651825889945,0.67591095995157957,0.08797382796183228,
+ 0.44384705275297165,0.14596485672518611,
+0.00291663268581033,0.92132670804858208,0.55046048713847995,0.12326993141323328,
+ 0.62254639761522412,0.87762261740863323,0.45126775791868567,0.71059537213295698,
+ 0.80895681912079453,0.07141010463237762,
+0.89934705849736929,0.94490244099870324,0.40850437059998512,0.28655522270128131,
+ 0.98225832823663950,0.82174257980659604,0.75430292449891567,0.68887275597080588,
+ 0.68317985069006681,0.67337385797873139,
+0.83879271661862731,0.900706990621984,0.72174380579963326,0.01247995719313622,
+ 0.75429888023063540,0.67870581243187189,0.13702143030241132,0.65953194908797741,
+ 0.03401931514963508,0.65369247179478407,
+0.43437494523823261,0.80943161016330123,0.47685358580201864,0.57694048294797540,
+ 0.54547880962491035,0.08220098121091723,0.66082405392080545,0.18151161121204495,
+ 0.23805456422269344,0.19968961318954825,
+0.77678761305287480,0.02519542910158634,0.63930579042062163,0.39386960770934820,
+ 0.72860160330310464,0.25527314469218254,0.38900542212650180,0.3904965976253152,
+ 0.94920115964487195,0.60141251794993877,
+0.13953176606446505,0.00196450622752309,0.99638652987778187,0.68885837262496352,
+ 0.02525969501584768,0.74444567272439599,0.70018205419182777,0.15869047446176410,
+ 0.21827886346727610,0.18993748771026731};
+
+
+ double out[(COLUMN+1 )*(LINE+1)] ;
+
+ double Result[(COLUMN+1)*(LINE+1)] =
+ {0.34382718056440353,0.1970167332328856,0.21228986512869596,0.31403985014185309,
+ 0.78216253779828548,0.05409323470667005,0.91902069095522165,0.46035157097503543,
+ 0.29926850274205208,0.00291663268581033,0.89934705849736929,0.83879271661862731,
+ 0.43437494523823261,0.77678761305287480,0.13953176606446505,
+0.11506372271105647,0.53554199635982513,0.43117330456152558,0.61453847866505384,
+ 0.92589621385559440,0.09938172809779644,0.42805786477401853,0.94318309519439936,
+ 0.03273952705785632,0.92132670804858208,0.94490244099870324,0.900706990621984,
+ 0.80943161016330123,0.02519542910158634,0.00196450622752309,
+0.50752213317900896,0.40760429529473186,0.84080461412668228,0.5017265700735152,
+ 0.91287807654589415,0.44357294728979468,0.59837839566171169,0.7741842647083104,
+ 0.79220082703977823,0.55046048713847995,0.40850437059998512,0.72174380579963326,
+ 0.47685358580201864,0.63930579042062163,0.99638652987778187,
+0.15747882844880223,0.53506936598569155,0.21290646074339747,0.55914506316184998,
+ 0.43049659812822938,0.02280548494309187,0.57614597817882895,0.71491303853690624,
+ 0.93216359661892056,0.12326993141323328,0.28655522270128131,0.01247995719313622,
+ 0.57694048294797540,0.39386960770934820,0.68885837262496352,
+0.97023218311369419,0.85157642932608724,0.33933044690638781,0.87725317804142833,
+ 0.11314024776220322,0.5264128320850432,0.52973940502852201,0.92917560925707221,
+ 0.97654302977025509,0.62254639761522412,0.98225832823663950,0.75429888023063540,
+ 0.54547880962491035,0.72860160330310464,0.02525969501584768,
+0.40251684701070189,0.09831319935619831,0.26086253346875310,0.36363423336297274,
+ 0.17466178117319942,0.92341394722461700,0.76051409030333161,0.56402041297405958,
+ 0.37970651825889945,0.87762261740863323,0.82174257980659604,0.67870581243187189,
+ 0.08220098121091723,0.25527314469218254,0.74444567272439599,
+0.22695036139339209,0.68369307881221175,0.93650726415216923,0.50530174048617482,
+ 0.25248145777732134,0.68188397912308574,0.28363681584596634,0.14094856614246964,
+ 0.67591095995157957,0.45126775791868567,0.75430292449891567,0.13702143030241132,
+ 0.66082405392080545,0.38900542212650180,0.70018205419182777,
+0.91680057207122445,0.21228999551385641,0.26978330826386809,0.31998893804848194,
+ 0.02321802498772740,0.72654472757130861,0.15340585587546229,0.23552638292312622,
+ 0.08797382796183228,0.71059537213295698,0.68887275597080588,0.65953194908797741,
+ 0.18151161121204495,0.3904965976253152,0.15869047446176410,
+0.62407150492072105,0.63760355720296502,0.42704886104911566,0.10716815060004592,
+ 0.23822965659201145,0.94629473658278584,0.45766852516680956,0.89644787041470408,
+ 0.44384705275297165,0.80895681912079453,0.68317985069006681,0.03401931514963508,
+ 0.23805456422269344,0.94920115964487195,0.21827886346727610,
+0.61546878470107913,0.83135433867573738,0.77340125897899270,0.4244190966710448,
+ 0.72621259605512023,0.70999773032963276,0.47457459988072515,0.9438692079856992,
+ 0.14596485672518611,0.07141010463237762,0.67337385797873139,0.65369247179478407,
+ 0.19968961318954825,0.60141251794993877,0.18993748771026731};
+
+ dtransposea ( in , COLUMN , LINE , out );
+
+
+ for ( i = 0 ; i < LINE*COLUMN ; i++ )
+ {
+ assert ( fabs ( out[i] - Result[i] ) / fabs( out[i]) < 1e-16 ) ;
+ }
+
+
+
+}
+
+
+
+static void ctranspaTest (void ) {
+
+ int i = 0 ;
+
+
+ float Pin[] ={0.34382718056440353f,0.11506372271105647f,0.50752213317900896f,0.15747882844880223f,
+ 0.97023218311369419f,0.40251684701070189f,0.22695036139339209f,0.91680057207122445f,
+ 0.62407150492072105f,0.61546878470107913f,
+0.1970167332328856f,0.53554199635982513f,0.40760429529473186f,0.53506936598569155f,
+ 0.85157642932608724f,0.09831319935619831f,0.68369307881221175f,0.21228999551385641f,
+ 0.63760355720296502f,0.83135433867573738f,
+0.21228986512869596f,0.43117330456152558f,0.84080461412668228f,0.21290646074339747f,
+ 0.33933044690638781f,0.26086253346875310f,0.93650726415216923f,0.26978330826386809f,
+ 0.42704886104911566f,0.77340125897899270f,
+0.31403985014185309f,0.61453847866505384f,0.5017265700735152f,0.55914506316184998f,
+ 0.87725317804142833f,0.36363423336297274f,0.50530174048617482f,0.31998893804848194f,
+ 0.10716815060004592f,0.4244190966710448f,
+0.78216253779828548f,0.92589621385559440f,0.91287807654589415f,0.43049659812822938f,
+ 0.11314024776220322f,0.17466178117319942f,0.25248145777732134f,0.02321802498772740f,
+ 0.23822965659201145f,0.72621259605512023f,
+0.05409323470667005f,0.09938172809779644f,0.44357294728979468f,0.02280548494309187f,
+ 0.5264128320850432f,0.92341394722461700f,0.68188397912308574f,0.72654472757130861f,
+ 0.94629473658278584f,0.70999773032963276f,
+0.91902069095522165f,0.42805786477401853f,0.59837839566171169f,0.57614597817882895f,
+ 0.52973940502852201f,0.76051409030333161f,0.28363681584596634f,0.15340585587546229f,
+ 0.45766852516680956f,0.47457459988072515f,
+0.46035157097503543f,0.94318309519439936f,0.7741842647083104f,0.71491303853690624f,
+ 0.92917560925707221f,0.56402041297405958f,0.14094856614246964f,0.23552638292312622f,
+ 0.89644787041470408f,0.9438692079856992f,
+0.29926850274205208f,0.03273952705785632f,0.79220082703977823f,0.93216359661892056f,
+ 0.97654302977025509f,0.37970651825889945f,0.67591095995157957f,0.08797382796183228f,
+ 0.44384705275297165f,0.14596485672518611f,
+0.00291663268581033f,0.92132670804858208f,0.55046048713847995f,0.12326993141323328f,
+ 0.62254639761522412f,0.87762261740863323f,0.45126775791868567f,0.71059537213295698f,
+ 0.80895681912079453f,0.07141010463237762f,
+0.89934705849736929f,0.94490244099870324f,0.40850437059998512f,0.28655522270128131f,
+ 0.98225832823663950f,0.82174257980659604f,0.75430292449891567f,0.68887275597080588f,
+ 0.68317985069006681f,0.67337385797873139f,
+0.83879271661862731f,0.900706990621984f,0.72174380579963326f,0.01247995719313622f,
+ 0.75429888023063540f,0.67870581243187189f,0.13702143030241132f,0.65953194908797741f,
+ 0.03401931514963508f,0.65369247179478407f,
+0.43437494523823261f,0.80943161016330123f,0.47685358580201864f,0.57694048294797540f,
+ 0.54547880962491035f,0.08220098121091723f,0.66082405392080545f,0.18151161121204495f,
+ 0.23805456422269344f,0.19968961318954825f,
+0.77678761305287480f,0.02519542910158634f,0.63930579042062163f,0.39386960770934820f,
+ 0.72860160330310464f,0.25527314469218254f,0.38900542212650180f,0.3904965976253152f,
+ 0.94920115964487195f,0.60141251794993877f,
+0.13953176606446505f,0.00196450622752309f,0.99638652987778187f,0.68885837262496352f,
+ 0.02525969501584768f,0.74444567272439599f,0.70018205419182777f,0.15869047446176410f,
+ 0.21827886346727610f,0.18993748771026731f};
+
+
+ floatComplex out[(COLUMN+1 )*(LINE+1)] ;
+ floatComplex in[(COLUMN+1 )*(LINE+1)] ;
+ floatComplex Result[(COLUMN+1 )*(LINE+1)] ;
+
+ float PResult[(COLUMN+1)*(LINE+1)] =
+ {0.34382718056440353f,0.1970167332328856f,0.21228986512869596f,0.31403985014185309f,
+ 0.78216253779828548f,0.05409323470667005f,0.91902069095522165f,0.46035157097503543f,
+ 0.29926850274205208f,0.00291663268581033f,0.89934705849736929f,0.83879271661862731f,
+ 0.43437494523823261f,0.77678761305287480f,0.13953176606446505f,
+0.11506372271105647f,0.53554199635982513f,0.43117330456152558f,0.61453847866505384f,
+ 0.92589621385559440f,0.09938172809779644f,0.42805786477401853f,0.94318309519439936f,
+ 0.03273952705785632f,0.92132670804858208f,0.94490244099870324f,0.900706990621984f,
+ 0.80943161016330123f,0.02519542910158634f,0.00196450622752309f,
+0.50752213317900896f,0.40760429529473186f,0.84080461412668228f,0.5017265700735152f,
+ 0.91287807654589415f,0.44357294728979468f,0.59837839566171169f,0.7741842647083104f,
+ 0.79220082703977823f,0.55046048713847995f,0.40850437059998512f,0.72174380579963326f,
+ 0.47685358580201864f,0.63930579042062163f,0.99638652987778187f,
+0.15747882844880223f,0.53506936598569155f,0.21290646074339747f,0.55914506316184998f,
+ 0.43049659812822938f,0.02280548494309187f,0.57614597817882895f,0.71491303853690624f,
+ 0.93216359661892056f,0.12326993141323328f,0.28655522270128131f,0.01247995719313622f,
+ 0.57694048294797540f,0.39386960770934820f,0.68885837262496352f,
+0.97023218311369419f,0.85157642932608724f,0.33933044690638781f,0.87725317804142833f,
+ 0.11314024776220322f,0.5264128320850432f,0.52973940502852201f,0.92917560925707221f,
+ 0.97654302977025509f,0.62254639761522412f,0.98225832823663950f,0.75429888023063540f,
+ 0.54547880962491035f,0.72860160330310464f,0.02525969501584768f,
+0.40251684701070189f,0.09831319935619831f,0.26086253346875310f,0.36363423336297274f,
+ 0.17466178117319942f,0.92341394722461700f,0.76051409030333161f,0.56402041297405958f,
+ 0.37970651825889945f,0.87762261740863323f,0.82174257980659604f,0.67870581243187189f,
+ 0.08220098121091723f,0.25527314469218254f,0.74444567272439599f,
+0.22695036139339209f,0.68369307881221175f,0.93650726415216923f,0.50530174048617482f,
+ 0.25248145777732134f,0.68188397912308574f,0.28363681584596634f,0.14094856614246964f,
+ 0.67591095995157957f,0.45126775791868567f,0.75430292449891567f,0.13702143030241132f,
+ 0.66082405392080545f,0.38900542212650180f,0.70018205419182777f,
+0.91680057207122445f,0.21228999551385641f,0.26978330826386809f,0.31998893804848194f,
+ 0.02321802498772740f,0.72654472757130861f,0.15340585587546229f,0.23552638292312622f,
+ 0.08797382796183228f,0.71059537213295698f,0.68887275597080588f,0.65953194908797741f,
+ 0.18151161121204495f,0.3904965976253152f,0.15869047446176410f,
+0.62407150492072105f,0.63760355720296502f,0.42704886104911566f,0.10716815060004592f,
+ 0.23822965659201145f,0.94629473658278584f,0.45766852516680956f,0.89644787041470408f,
+ 0.44384705275297165f,0.80895681912079453f,0.68317985069006681f,0.03401931514963508f,
+ 0.23805456422269344f,0.94920115964487195f,0.21827886346727610f,
+0.61546878470107913f,0.83135433867573738f,0.77340125897899270f,0.4244190966710448f,
+ 0.72621259605512023f,0.70999773032963276f,0.47457459988072515f,0.9438692079856992f,
+ 0.14596485672518611f,0.07141010463237762f,0.67337385797873139f,0.65369247179478407f,
+ 0.19968961318954825f,0.60141251794993877f,0.18993748771026731f};
+
+
+
+
+
+ for ( i = 0 ; i < LINE*COLUMN ; i++ )
+ {
+ in[i] = FloatComplex ( Pin[i] , Pin[i] ) ;
+ Result[i] = FloatComplex ( PResult[i] , PResult[i] ) ;
+ }
+
+
+ ctransposea ( in , COLUMN , LINE , out );
+
+
+
+ for ( i = 0 ; i < LINE*COLUMN ; i++ )
+ {
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-07 );
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-07 ) ;
+
+ }
+
+
+
+}
+
+
+
+
+
+
+static void ztranspaTest (void ) {
+
+ int i = 0 ;
+
+
+ double Pin[] ={0.34382718056440353f,0.11506372271105647f,0.50752213317900896f,0.15747882844880223f,
+ 0.97023218311369419f,0.40251684701070189f,0.22695036139339209f,0.91680057207122445f,
+ 0.62407150492072105f,0.61546878470107913f,
+0.1970167332328856f,0.53554199635982513f,0.40760429529473186f,0.53506936598569155f,
+ 0.85157642932608724f,0.09831319935619831f,0.68369307881221175f,0.21228999551385641f,
+ 0.63760355720296502f,0.83135433867573738f,
+0.21228986512869596f,0.43117330456152558f,0.84080461412668228f,0.21290646074339747f,
+ 0.33933044690638781f,0.26086253346875310f,0.93650726415216923f,0.26978330826386809f,
+ 0.42704886104911566f,0.77340125897899270f,
+0.31403985014185309f,0.61453847866505384f,0.5017265700735152f,0.55914506316184998f,
+ 0.87725317804142833f,0.36363423336297274f,0.50530174048617482f,0.31998893804848194f,
+ 0.10716815060004592f,0.4244190966710448f,
+0.78216253779828548f,0.92589621385559440f,0.91287807654589415f,0.43049659812822938f,
+ 0.11314024776220322f,0.17466178117319942f,0.25248145777732134f,0.02321802498772740f,
+ 0.23822965659201145f,0.72621259605512023f,
+0.05409323470667005f,0.09938172809779644f,0.44357294728979468f,0.02280548494309187f,
+ 0.5264128320850432f,0.92341394722461700f,0.68188397912308574f,0.72654472757130861f,
+ 0.94629473658278584f,0.70999773032963276f,
+0.91902069095522165f,0.42805786477401853f,0.59837839566171169f,0.57614597817882895f,
+ 0.52973940502852201f,0.76051409030333161f,0.28363681584596634f,0.15340585587546229f,
+ 0.45766852516680956f,0.47457459988072515f,
+0.46035157097503543f,0.94318309519439936f,0.7741842647083104f,0.71491303853690624f,
+ 0.92917560925707221f,0.56402041297405958f,0.14094856614246964f,0.23552638292312622f,
+ 0.89644787041470408f,0.9438692079856992f,
+0.29926850274205208f,0.03273952705785632f,0.79220082703977823f,0.93216359661892056f,
+ 0.97654302977025509f,0.37970651825889945f,0.67591095995157957f,0.08797382796183228f,
+ 0.44384705275297165f,0.14596485672518611f,
+0.00291663268581033f,0.92132670804858208f,0.55046048713847995f,0.12326993141323328f,
+ 0.62254639761522412f,0.87762261740863323f,0.45126775791868567f,0.71059537213295698f,
+ 0.80895681912079453f,0.07141010463237762f,
+0.89934705849736929f,0.94490244099870324f,0.40850437059998512f,0.28655522270128131f,
+ 0.98225832823663950f,0.82174257980659604f,0.75430292449891567f,0.68887275597080588f,
+ 0.68317985069006681f,0.67337385797873139f,
+0.83879271661862731f,0.900706990621984f,0.72174380579963326f,0.01247995719313622f,
+ 0.75429888023063540f,0.67870581243187189f,0.13702143030241132f,0.65953194908797741f,
+ 0.03401931514963508f,0.65369247179478407f,
+0.43437494523823261f,0.80943161016330123f,0.47685358580201864f,0.57694048294797540f,
+ 0.54547880962491035f,0.08220098121091723f,0.66082405392080545f,0.18151161121204495f,
+ 0.23805456422269344f,0.19968961318954825f,
+0.77678761305287480f,0.02519542910158634f,0.63930579042062163f,0.39386960770934820f,
+ 0.72860160330310464f,0.25527314469218254f,0.38900542212650180f,0.3904965976253152f,
+ 0.94920115964487195f,0.60141251794993877f,
+0.13953176606446505f,0.00196450622752309f,0.99638652987778187f,0.68885837262496352f,
+ 0.02525969501584768f,0.74444567272439599f,0.70018205419182777f,0.15869047446176410f,
+ 0.21827886346727610f,0.18993748771026731f};
+
+
+ doubleComplex out[(COLUMN+1 )*(LINE+1)] ;
+ doubleComplex in[(COLUMN+1 )*(LINE+1)] ;
+ doubleComplex Result[(COLUMN+1 )*(LINE+1)] ;
+
+ double PResult[(COLUMN+1)*(LINE+1)] =
+ {0.34382718056440353f,0.1970167332328856f,0.21228986512869596f,0.31403985014185309f,
+ 0.78216253779828548f,0.05409323470667005f,0.91902069095522165f,0.46035157097503543f,
+ 0.29926850274205208f,0.00291663268581033f,0.89934705849736929f,0.83879271661862731f,
+ 0.43437494523823261f,0.77678761305287480f,0.13953176606446505f,
+0.11506372271105647f,0.53554199635982513f,0.43117330456152558f,0.61453847866505384f,
+ 0.92589621385559440f,0.09938172809779644f,0.42805786477401853f,0.94318309519439936f,
+ 0.03273952705785632f,0.92132670804858208f,0.94490244099870324f,0.900706990621984f,
+ 0.80943161016330123f,0.02519542910158634f,0.00196450622752309f,
+0.50752213317900896f,0.40760429529473186f,0.84080461412668228f,0.5017265700735152f,
+ 0.91287807654589415f,0.44357294728979468f,0.59837839566171169f,0.7741842647083104f,
+ 0.79220082703977823f,0.55046048713847995f,0.40850437059998512f,0.72174380579963326f,
+ 0.47685358580201864f,0.63930579042062163f,0.99638652987778187f,
+0.15747882844880223f,0.53506936598569155f,0.21290646074339747f,0.55914506316184998f,
+ 0.43049659812822938f,0.02280548494309187f,0.57614597817882895f,0.71491303853690624f,
+ 0.93216359661892056f,0.12326993141323328f,0.28655522270128131f,0.01247995719313622f,
+ 0.57694048294797540f,0.39386960770934820f,0.68885837262496352f,
+0.97023218311369419f,0.85157642932608724f,0.33933044690638781f,0.87725317804142833f,
+ 0.11314024776220322f,0.5264128320850432f,0.52973940502852201f,0.92917560925707221f,
+ 0.97654302977025509f,0.62254639761522412f,0.98225832823663950f,0.75429888023063540f,
+ 0.54547880962491035f,0.72860160330310464f,0.02525969501584768f,
+0.40251684701070189f,0.09831319935619831f,0.26086253346875310f,0.36363423336297274f,
+ 0.17466178117319942f,0.92341394722461700f,0.76051409030333161f,0.56402041297405958f,
+ 0.37970651825889945f,0.87762261740863323f,0.82174257980659604f,0.67870581243187189f,
+ 0.08220098121091723f,0.25527314469218254f,0.74444567272439599f,
+0.22695036139339209f,0.68369307881221175f,0.93650726415216923f,0.50530174048617482f,
+ 0.25248145777732134f,0.68188397912308574f,0.28363681584596634f,0.14094856614246964f,
+ 0.67591095995157957f,0.45126775791868567f,0.75430292449891567f,0.13702143030241132f,
+ 0.66082405392080545f,0.38900542212650180f,0.70018205419182777f,
+0.91680057207122445f,0.21228999551385641f,0.26978330826386809f,0.31998893804848194f,
+ 0.02321802498772740f,0.72654472757130861f,0.15340585587546229f,0.23552638292312622f,
+ 0.08797382796183228f,0.71059537213295698f,0.68887275597080588f,0.65953194908797741f,
+ 0.18151161121204495f,0.3904965976253152f,0.15869047446176410f,
+0.62407150492072105f,0.63760355720296502f,0.42704886104911566f,0.10716815060004592f,
+ 0.23822965659201145f,0.94629473658278584f,0.45766852516680956f,0.89644787041470408f,
+ 0.44384705275297165f,0.80895681912079453f,0.68317985069006681f,0.03401931514963508f,
+ 0.23805456422269344f,0.94920115964487195f,0.21827886346727610f,
+0.61546878470107913f,0.83135433867573738f,0.77340125897899270f,0.4244190966710448f,
+ 0.72621259605512023f,0.70999773032963276f,0.47457459988072515f,0.9438692079856992f,
+ 0.14596485672518611f,0.07141010463237762f,0.67337385797873139f,0.65369247179478407f,
+ 0.19968961318954825f,0.60141251794993877f,0.18993748771026731f};
+
+
+
+
+
+ for ( i = 0 ; i < LINE*COLUMN ; i++ )
+ {
+ in[i] = DoubleComplex ( Pin[i] , Pin[i] ) ;
+ Result[i] = DoubleComplex ( PResult[i] , PResult[i] ) ;
+ }
+
+
+
+
+ ztransposea ( in , COLUMN , LINE, out );
+
+
+
+ for ( i = 0 ; i < LINE*COLUMN ; i++ )
+ {
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 1e-17 );
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-17 ) ;
+
+ }
+
+
+
+}
+
+
+
+
+static int testTranspa (void) {
+
+ printf("\n>>>> Float real Tests\n");
+ stranspaTest();
+printf("\t>>>> Double real Tests\n");
+ dtranspaTest();
+printf("\t>>>> Double complex Tests\n");
+ctranspaTest();
+printf("\t>>>> Float complex Tests\n");
+ztranspaTest();
+ return 0;
+}
+
+
+int main(void) {
+ assert(testTranspa() == 0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj b/2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj
new file mode 100644
index 00000000..2e6acf79
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8D483B26-A264-4BA6-BB6A-36306BCFA8E3}</ProjectGuid>
+ <RootNamespace>testMatrixTranspose</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixTranspose.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj.filters b/2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj.filters
new file mode 100644
index 00000000..a8d84ab0
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/test_MatrixTranspose/testMatrixTranspose.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixTranspose.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/transpose/u16transposea.c b/2.3-1/src/c/matrixOperations/transpose/u16transposea.c
new file mode 100644
index 00000000..8bf659df
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/u16transposea.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTranspose.h"
+
+void u16transposea ( uint16* in , int lines , int columns, uint16* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = (uint16)in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/u8transposea.c b/2.3-1/src/c/matrixOperations/transpose/u8transposea.c
new file mode 100644
index 00000000..54b53324
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/u8transposea.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "matrixTranspose.h"
+
+void u8transposea ( uint8* in , int lines , int columns, uint8* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = (uint8)in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/transpose/ztransposea.c b/2.3-1/src/c/matrixOperations/transpose/ztransposea.c
new file mode 100644
index 00000000..e42d74d2
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/transpose/ztransposea.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "matrixTranspose.h"
+
+void ztransposea ( doubleComplex* in , int lines , int columns, doubleComplex* out ){
+
+ int i = 0 ;
+ int j = 0 ;
+
+ for(i = 0 ; i < lines ; i++)
+ {
+ for(j = 0 ; j < columns ; j++)
+
+ out[j+i*columns] = in[i+j*lines];
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/tril/dtrila.c b/2.3-1/src/c/matrixOperations/tril/dtrila.c
new file mode 100644
index 00000000..b45c85fb
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/tril/dtrila.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "tril.h"
+
+void dtrila (double *in, int row, int column, double diag, double *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) >= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/tril/i16trila.c b/2.3-1/src/c/matrixOperations/tril/i16trila.c
new file mode 100644
index 00000000..98174d90
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/tril/i16trila.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "tril.h"
+
+void i16trila (int16 *in, int row, int column, double diag, int16 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) >= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/tril/i8trila.c b/2.3-1/src/c/matrixOperations/tril/i8trila.c
new file mode 100644
index 00000000..d06b2aad
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/tril/i8trila.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "tril.h"
+
+void i8trila (int8 *in, int row, int column, double diag, int8 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) >= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/tril/strila.c b/2.3-1/src/c/matrixOperations/tril/strila.c
new file mode 100644
index 00000000..bc7f1f2f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/tril/strila.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "tril.h"
+
+void strila (float *in, int row, int column, double diag, float *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) >= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/tril/u16trila.c b/2.3-1/src/c/matrixOperations/tril/u16trila.c
new file mode 100644
index 00000000..418a595e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/tril/u16trila.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "tril.h"
+
+void u16trila (uint16 *in, int row, int column, double diag, uint16 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) >= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/tril/u8trila.c b/2.3-1/src/c/matrixOperations/tril/u8trila.c
new file mode 100644
index 00000000..5c21d88e
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/tril/u8trila.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "tril.h"
+
+void u8trila (uint8 *in, int row, int column, double diag, uint8 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) >= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/triu/dtriua.c b/2.3-1/src/c/matrixOperations/triu/dtriua.c
new file mode 100644
index 00000000..80db14b3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/triu/dtriua.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "triu.h"
+
+void dtriua (double *in, int row, int column, double diag, double *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) <= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/triu/i16triua.c b/2.3-1/src/c/matrixOperations/triu/i16triua.c
new file mode 100644
index 00000000..a4a0e9f3
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/triu/i16triua.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "triu.h"
+
+void i16triua (int16 *in, int row, int column, double diag, int16 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) <= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/triu/i8triua.c b/2.3-1/src/c/matrixOperations/triu/i8triua.c
new file mode 100644
index 00000000..c5dcee5d
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/triu/i8triua.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "triu.h"
+
+void i8triua (int8 *in, int row, int column, double diag, int8 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) <= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/triu/striua.c b/2.3-1/src/c/matrixOperations/triu/striua.c
new file mode 100644
index 00000000..8ec779ea
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/triu/striua.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "triu.h"
+
+void striua (float *in, int row, int column, double diag, float *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) <= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/triu/u16triua.c b/2.3-1/src/c/matrixOperations/triu/u16triua.c
new file mode 100644
index 00000000..6341881b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/triu/u16triua.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+#include "triu.h"
+
+void u16triua (uint16 *in, int row, int column, double diag, uint16 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) <= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/triu/u8triua.c b/2.3-1/src/c/matrixOperations/triu/u8triua.c
new file mode 100644
index 00000000..4637e873
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/triu/u8triua.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/*Function to extract lower triagular entries from given matrix*/
+
+
+#include "triu.h"
+
+void u8triua (uint8 *in, int row, int column, double diag, uint8 *out)
+{
+ int row_counter, col_counter = 0;
+
+ for(row_counter=0; row_counter < row; row_counter++)
+ {
+ for(col_counter=0; col_counter < column; col_counter++)
+ {
+ if((double)(row_counter + diag) <= (double)col_counter)
+ {
+ out[col_counter*row+row_counter] = in[col_counter*row+row_counter];
+ }
+ else
+ {
+ out[col_counter*row+row_counter] = 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/zeros/Makefile.am b/2.3-1/src/c/matrixOperations/zeros/Makefile.am
new file mode 100644
index 00000000..7d310afa
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/Makefile.am
@@ -0,0 +1,42 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libMatrixZeros_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMatrixZeros.la
+
+HEAD = ../includes/matrixZeros.h
+
+libMatrixZeros_la_SOURCES = $(HEAD) \
+ szerosa.c \
+ dzerosa.c \
+ czerosa.c \
+ zzerosa.c
+
+check_PROGRAMS = testMatrixZeros
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixZeros.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixZeros_SOURCES = testMatrixZeros.c
+testMatrixZeros_LDADD = $(check_LDADD)
+testMatrixZeros_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMatrixZeros
diff --git a/2.3-1/src/c/matrixOperations/zeros/Makefile.in b/2.3-1/src/c/matrixOperations/zeros/Makefile.in
new file mode 100644
index 00000000..f5fbabce
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/Makefile.in
@@ -0,0 +1,712 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMatrixZeros$(EXEEXT)
+TESTS = testMatrixZeros$(EXEEXT)
+subdir = src/c/matrixOperations/zeros
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMatrixZeros_la_LIBADD =
+am__objects_1 =
+am_libMatrixZeros_la_OBJECTS = $(am__objects_1) \
+ libMatrixZeros_la-szerosa.lo libMatrixZeros_la-dzerosa.lo \
+ libMatrixZeros_la-czerosa.lo libMatrixZeros_la-zzerosa.lo
+libMatrixZeros_la_OBJECTS = $(am_libMatrixZeros_la_OBJECTS)
+libMatrixZeros_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMatrixZeros_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+am_testMatrixZeros_OBJECTS = \
+ testMatrixZeros-testMatrixZeros.$(OBJEXT)
+testMatrixZeros_OBJECTS = $(am_testMatrixZeros_OBJECTS)
+testMatrixZeros_DEPENDENCIES = $(check_LDADD)
+testMatrixZeros_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatrixZeros_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMatrixZeros_la_SOURCES) $(testMatrixZeros_SOURCES)
+DIST_SOURCES = $(libMatrixZeros_la_SOURCES) $(testMatrixZeros_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMatrixZeros_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMatrixZeros.la
+HEAD = ../includes/matrixZeros.h
+libMatrixZeros_la_SOURCES = $(HEAD) \
+ szerosa.c \
+ dzerosa.c \
+ czerosa.c \
+ zzerosa.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libMatrixZeros.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes
+
+testMatrixZeros_SOURCES = testMatrixZeros.c
+testMatrixZeros_LDADD = $(check_LDADD)
+testMatrixZeros_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/matrixOperations/zeros/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/matrixOperations/zeros/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMatrixZeros.la: $(libMatrixZeros_la_OBJECTS) $(libMatrixZeros_la_DEPENDENCIES)
+ $(libMatrixZeros_la_LINK) -rpath $(pkglibdir) $(libMatrixZeros_la_OBJECTS) $(libMatrixZeros_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMatrixZeros$(EXEEXT): $(testMatrixZeros_OBJECTS) $(testMatrixZeros_DEPENDENCIES)
+ @rm -f testMatrixZeros$(EXEEXT)
+ $(testMatrixZeros_LINK) $(testMatrixZeros_OBJECTS) $(testMatrixZeros_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixZeros_la-czerosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixZeros_la-dzerosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixZeros_la-szerosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixZeros_la-zzerosa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrixZeros-testMatrixZeros.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMatrixZeros_la-szerosa.lo: szerosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -MT libMatrixZeros_la-szerosa.lo -MD -MP -MF $(DEPDIR)/libMatrixZeros_la-szerosa.Tpo -c -o libMatrixZeros_la-szerosa.lo `test -f 'szerosa.c' || echo '$(srcdir)/'`szerosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixZeros_la-szerosa.Tpo $(DEPDIR)/libMatrixZeros_la-szerosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='szerosa.c' object='libMatrixZeros_la-szerosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -c -o libMatrixZeros_la-szerosa.lo `test -f 'szerosa.c' || echo '$(srcdir)/'`szerosa.c
+
+libMatrixZeros_la-dzerosa.lo: dzerosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -MT libMatrixZeros_la-dzerosa.lo -MD -MP -MF $(DEPDIR)/libMatrixZeros_la-dzerosa.Tpo -c -o libMatrixZeros_la-dzerosa.lo `test -f 'dzerosa.c' || echo '$(srcdir)/'`dzerosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixZeros_la-dzerosa.Tpo $(DEPDIR)/libMatrixZeros_la-dzerosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dzerosa.c' object='libMatrixZeros_la-dzerosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -c -o libMatrixZeros_la-dzerosa.lo `test -f 'dzerosa.c' || echo '$(srcdir)/'`dzerosa.c
+
+libMatrixZeros_la-czerosa.lo: czerosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -MT libMatrixZeros_la-czerosa.lo -MD -MP -MF $(DEPDIR)/libMatrixZeros_la-czerosa.Tpo -c -o libMatrixZeros_la-czerosa.lo `test -f 'czerosa.c' || echo '$(srcdir)/'`czerosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixZeros_la-czerosa.Tpo $(DEPDIR)/libMatrixZeros_la-czerosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='czerosa.c' object='libMatrixZeros_la-czerosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -c -o libMatrixZeros_la-czerosa.lo `test -f 'czerosa.c' || echo '$(srcdir)/'`czerosa.c
+
+libMatrixZeros_la-zzerosa.lo: zzerosa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -MT libMatrixZeros_la-zzerosa.lo -MD -MP -MF $(DEPDIR)/libMatrixZeros_la-zzerosa.Tpo -c -o libMatrixZeros_la-zzerosa.lo `test -f 'zzerosa.c' || echo '$(srcdir)/'`zzerosa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMatrixZeros_la-zzerosa.Tpo $(DEPDIR)/libMatrixZeros_la-zzerosa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zzerosa.c' object='libMatrixZeros_la-zzerosa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixZeros_la_CFLAGS) $(CFLAGS) -c -o libMatrixZeros_la-zzerosa.lo `test -f 'zzerosa.c' || echo '$(srcdir)/'`zzerosa.c
+
+testMatrixZeros-testMatrixZeros.o: testMatrixZeros.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixZeros_CFLAGS) $(CFLAGS) -MT testMatrixZeros-testMatrixZeros.o -MD -MP -MF $(DEPDIR)/testMatrixZeros-testMatrixZeros.Tpo -c -o testMatrixZeros-testMatrixZeros.o `test -f 'testMatrixZeros.c' || echo '$(srcdir)/'`testMatrixZeros.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixZeros-testMatrixZeros.Tpo $(DEPDIR)/testMatrixZeros-testMatrixZeros.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixZeros.c' object='testMatrixZeros-testMatrixZeros.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixZeros_CFLAGS) $(CFLAGS) -c -o testMatrixZeros-testMatrixZeros.o `test -f 'testMatrixZeros.c' || echo '$(srcdir)/'`testMatrixZeros.c
+
+testMatrixZeros-testMatrixZeros.obj: testMatrixZeros.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixZeros_CFLAGS) $(CFLAGS) -MT testMatrixZeros-testMatrixZeros.obj -MD -MP -MF $(DEPDIR)/testMatrixZeros-testMatrixZeros.Tpo -c -o testMatrixZeros-testMatrixZeros.obj `if test -f 'testMatrixZeros.c'; then $(CYGPATH_W) 'testMatrixZeros.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixZeros.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatrixZeros-testMatrixZeros.Tpo $(DEPDIR)/testMatrixZeros-testMatrixZeros.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatrixZeros.c' object='testMatrixZeros-testMatrixZeros.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatrixZeros_CFLAGS) $(CFLAGS) -c -o testMatrixZeros-testMatrixZeros.obj `if test -f 'testMatrixZeros.c'; then $(CYGPATH_W) 'testMatrixZeros.c'; else $(CYGPATH_W) '$(srcdir)/testMatrixZeros.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/matrixOperations/zeros/czerosa.c b/2.3-1/src/c/matrixOperations/zeros/czerosa.c
new file mode 100644
index 00000000..3a4bf0a4
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/czerosa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "zeros.h"
+
+void czerosa ( floatComplex* in , int rows ,int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = FloatComplex ( 0 , 0);
+
+ }
+
+}
diff --git a/2.3-1/src/c/matrixOperations/zeros/dzerosa.c b/2.3-1/src/c/matrixOperations/zeros/dzerosa.c
new file mode 100644
index 00000000..3d4ac5ff
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/dzerosa.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "zeros.h"
+
+void dzerosa ( double* in , int rows ,int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = 0 ;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/dzerosh.c b/2.3-1/src/c/matrixOperations/zeros/dzerosh.c
new file mode 100644
index 00000000..87e7e93c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/dzerosh.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * 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 "zeros.h"
+
+void dzerosh ( double* in , int rows ,int cols, int levels)
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols*levels ; i++)
+ {
+ in[i] = 0 ;
+
+ }
+
+}
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/i16zerosa.c b/2.3-1/src/c/matrixOperations/zeros/i16zerosa.c
new file mode 100644
index 00000000..13ff62b6
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/i16zerosa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "zeros.h"
+
+void i16zerosa ( int16* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (int16)0 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/i8zerosa.c b/2.3-1/src/c/matrixOperations/zeros/i8zerosa.c
new file mode 100644
index 00000000..f8808c0a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/i8zerosa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "zeros.h"
+
+void i8zerosa ( int8* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (int8)0 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/szerosa.c b/2.3-1/src/c/matrixOperations/zeros/szerosa.c
new file mode 100644
index 00000000..22be734c
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/szerosa.c
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "zeros.h"
+
+void szerosa ( float* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = 0.0f ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/testMatrixZeros.c b/2.3-1/src/c/matrixOperations/zeros/testMatrixZeros.c
new file mode 100644
index 00000000..b6ebe36f
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/testMatrixZeros.c
@@ -0,0 +1,137 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+
+#include "zeros.h"
+
+#define ROWS 20
+#define COLS 50
+
+static void dzerosaTest ( void )
+{
+ int i = 0 ;
+
+ double result = 0 ;
+
+ double in [ROWS*COLS] ;
+
+ dzerosa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++ )
+ {
+ result = 0 ;
+
+ printf ( "\t\t %d in : %e\tresult : %e\tassert : %e \n" , i, in[i] , result , fabs( in[i] - result) / fabs( in[i]) ) ;
+
+ assert ( fabs ( in[i] - result) == 0 ) ;
+ }
+}
+
+
+static void szerosaTest ( void )
+{
+ int i = 0 ;
+
+ float result = 0 ;
+
+ float in[ROWS*COLS] ;
+
+ szerosa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++)
+ {
+ result = 0.0f ;
+
+
+ assert ( fabs ( in[i] - result) == 0 ) ;
+ }
+}
+
+
+static void zzerosaTest ( void )
+{
+ int i = 0 ;
+
+ doubleComplex result = DoubleComplex ( 0 , 0) ;
+
+ doubleComplex in[ROWS*COLS] ;
+
+ zzerosa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++ )
+ {
+ result = DoubleComplex ( 0 , 0 ) ;
+
+
+ assert ( fabs ( zreals(in[i]) - zreals(result)) == 0 ) ;
+ assert ( fabs ( zimags(in[i]) - zimags(result)) == 0 ) ;
+
+ }
+}
+
+
+
+
+
+static void czerosaTest ( void )
+{
+ int i = 0 ;
+
+ floatComplex result = FloatComplex ( 0 , 0 ) ;
+
+ floatComplex in[ROWS*COLS] ;
+
+ czerosa ( in , ROWS , COLS ) ;
+
+ for ( i = 0 ; i < ROWS*COLS ; i++)
+ {
+ result = FloatComplex ( 0.0f , 0 ) ;
+
+
+ assert ( fabs ( creals(in[i]) - creals(result)) == 0 ) ;
+ assert ( fabs ( cimags(in[i]) - cimags(result)) == 0 ) ;
+
+ }
+}
+
+
+
+static int testZeros(void) {
+
+ printf("\n>>>> Matrix ZEROS Tests\n");
+ printf("\t>>>> Matrix Double Real Tests\n");
+ dzerosaTest();
+
+ printf("\n\n\t>>>> Matrix Float Real Tests\n");
+ szerosaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Float Complex Tests\n");
+ czerosaTest();
+
+ printf("\n\n\n");
+ printf("\t>>>> Matrix Double Complex Tests\n");
+ zzerosaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testZeros() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj b/2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj
new file mode 100644
index 00000000..6eac1a4b
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D55BC043-1853-4E4C-A8A8-2756682E4B23}</ProjectGuid>
+ <RootNamespace>testMatrixZeros</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixZeros.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj.filters b/2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj.filters
new file mode 100644
index 00000000..c99a5960
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/test_MatrixZeros/testMatrixZeros.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatrixZeros.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/matrixOperations/zeros/u16zerosa.c b/2.3-1/src/c/matrixOperations/zeros/u16zerosa.c
new file mode 100644
index 00000000..3db1ac5a
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/u16zerosa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "zeros.h"
+
+void u16zerosa ( uint16* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (uint16)0 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/u8zerosa.c b/2.3-1/src/c/matrixOperations/zeros/u8zerosa.c
new file mode 100644
index 00000000..ee239a67
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/u8zerosa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "zeros.h"
+
+void u8zerosa ( uint8* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = (uint8)0 ;
+
+ }
+
+}
+
+
+
diff --git a/2.3-1/src/c/matrixOperations/zeros/zzerosa.c b/2.3-1/src/c/matrixOperations/zeros/zzerosa.c
new file mode 100644
index 00000000..8d9de666
--- /dev/null
+++ b/2.3-1/src/c/matrixOperations/zeros/zzerosa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "zeros.h"
+
+void zzerosa ( doubleComplex* in , int rows , int cols )
+{
+ int i = 0 ;
+
+ for ( i = 0 ; i < rows*cols ; i++)
+ {
+ in[i] = DoubleComplex ( 0 , 0);
+
+ }
+
+}
diff --git a/2.3-1/src/c/operations/Makefile.am b/2.3-1/src/c/operations/Makefile.am
new file mode 100644
index 00000000..c18c67e4
--- /dev/null
+++ b/2.3-1/src/c/operations/Makefile.am
@@ -0,0 +1,18 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+dist_SUBDIRS= includes
+
+SUBDIRS= addition \
+ subtraction \
+ division \
+ multiplication
diff --git a/2.3-1/src/c/operations/Makefile.in b/2.3-1/src/c/operations/Makefile.in
new file mode 100644
index 00000000..73dcf0f9
--- /dev/null
+++ b/2.3-1/src/c/operations/Makefile.in
@@ -0,0 +1,565 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/operations
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_SUBDIRS = includes
+SUBDIRS = addition \
+ subtraction \
+ division \
+ multiplication
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/operations/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/operations/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/operations/addition/Makefile.am b/2.3-1/src/c/operations/addition/Makefile.am
new file mode 100644
index 00000000..3e138a3d
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/Makefile.am
@@ -0,0 +1,45 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libAddition_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libAddition.la
+
+HEAD = ../includes/addition.h
+
+libAddition_la_SOURCES = $(HEAD) \
+ sadds.c \
+ dadds.c \
+ cadds.c \
+ zadds.c \
+ sadda.c \
+ dadda.c \
+ cadda.c \
+ zadda.c
+
+check_PROGRAMS = testAddition
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libAddition.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+testAddition_SOURCES = testAddition.c
+testAddition_LDADD = $(check_LDADD)
+testAddition_CFLAGS = $(check_INCLUDES)
+
+TESTS = testAddition \ No newline at end of file
diff --git a/2.3-1/src/c/operations/addition/Makefile.in b/2.3-1/src/c/operations/addition/Makefile.in
new file mode 100644
index 00000000..c0b4d56f
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/Makefile.in
@@ -0,0 +1,748 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testAddition$(EXEEXT)
+TESTS = testAddition$(EXEEXT)
+subdir = src/c/operations/addition
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libAddition_la_LIBADD =
+am__objects_1 =
+am_libAddition_la_OBJECTS = $(am__objects_1) libAddition_la-sadds.lo \
+ libAddition_la-dadds.lo libAddition_la-cadds.lo \
+ libAddition_la-zadds.lo libAddition_la-sadda.lo \
+ libAddition_la-dadda.lo libAddition_la-cadda.lo \
+ libAddition_la-zadda.lo
+libAddition_la_OBJECTS = $(am_libAddition_la_OBJECTS)
+libAddition_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libAddition_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testAddition_OBJECTS = testAddition-testAddition.$(OBJEXT)
+testAddition_OBJECTS = $(am_testAddition_OBJECTS)
+testAddition_DEPENDENCIES = $(check_LDADD)
+testAddition_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testAddition_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libAddition_la_SOURCES) $(testAddition_SOURCES)
+DIST_SOURCES = $(libAddition_la_SOURCES) $(testAddition_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libAddition_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libAddition.la
+HEAD = ../includes/addition.h
+libAddition_la_SOURCES = $(HEAD) \
+ sadds.c \
+ dadds.c \
+ cadds.c \
+ zadds.c \
+ sadda.c \
+ dadda.c \
+ cadda.c \
+ zadda.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libAddition.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+testAddition_SOURCES = testAddition.c
+testAddition_LDADD = $(check_LDADD)
+testAddition_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/operations/addition/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/operations/addition/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libAddition.la: $(libAddition_la_OBJECTS) $(libAddition_la_DEPENDENCIES)
+ $(libAddition_la_LINK) -rpath $(pkglibdir) $(libAddition_la_OBJECTS) $(libAddition_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testAddition$(EXEEXT): $(testAddition_OBJECTS) $(testAddition_DEPENDENCIES)
+ @rm -f testAddition$(EXEEXT)
+ $(testAddition_LINK) $(testAddition_OBJECTS) $(testAddition_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-cadda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-cadds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-dadda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-dadds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-sadda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-sadds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-zadda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAddition_la-zadds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testAddition-testAddition.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libAddition_la-sadds.lo: sadds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-sadds.lo -MD -MP -MF $(DEPDIR)/libAddition_la-sadds.Tpo -c -o libAddition_la-sadds.lo `test -f 'sadds.c' || echo '$(srcdir)/'`sadds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-sadds.Tpo $(DEPDIR)/libAddition_la-sadds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sadds.c' object='libAddition_la-sadds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-sadds.lo `test -f 'sadds.c' || echo '$(srcdir)/'`sadds.c
+
+libAddition_la-dadds.lo: dadds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-dadds.lo -MD -MP -MF $(DEPDIR)/libAddition_la-dadds.Tpo -c -o libAddition_la-dadds.lo `test -f 'dadds.c' || echo '$(srcdir)/'`dadds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-dadds.Tpo $(DEPDIR)/libAddition_la-dadds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dadds.c' object='libAddition_la-dadds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-dadds.lo `test -f 'dadds.c' || echo '$(srcdir)/'`dadds.c
+
+libAddition_la-cadds.lo: cadds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-cadds.lo -MD -MP -MF $(DEPDIR)/libAddition_la-cadds.Tpo -c -o libAddition_la-cadds.lo `test -f 'cadds.c' || echo '$(srcdir)/'`cadds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-cadds.Tpo $(DEPDIR)/libAddition_la-cadds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cadds.c' object='libAddition_la-cadds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-cadds.lo `test -f 'cadds.c' || echo '$(srcdir)/'`cadds.c
+
+libAddition_la-zadds.lo: zadds.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-zadds.lo -MD -MP -MF $(DEPDIR)/libAddition_la-zadds.Tpo -c -o libAddition_la-zadds.lo `test -f 'zadds.c' || echo '$(srcdir)/'`zadds.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-zadds.Tpo $(DEPDIR)/libAddition_la-zadds.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zadds.c' object='libAddition_la-zadds.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-zadds.lo `test -f 'zadds.c' || echo '$(srcdir)/'`zadds.c
+
+libAddition_la-sadda.lo: sadda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-sadda.lo -MD -MP -MF $(DEPDIR)/libAddition_la-sadda.Tpo -c -o libAddition_la-sadda.lo `test -f 'sadda.c' || echo '$(srcdir)/'`sadda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-sadda.Tpo $(DEPDIR)/libAddition_la-sadda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sadda.c' object='libAddition_la-sadda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-sadda.lo `test -f 'sadda.c' || echo '$(srcdir)/'`sadda.c
+
+libAddition_la-dadda.lo: dadda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-dadda.lo -MD -MP -MF $(DEPDIR)/libAddition_la-dadda.Tpo -c -o libAddition_la-dadda.lo `test -f 'dadda.c' || echo '$(srcdir)/'`dadda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-dadda.Tpo $(DEPDIR)/libAddition_la-dadda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dadda.c' object='libAddition_la-dadda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-dadda.lo `test -f 'dadda.c' || echo '$(srcdir)/'`dadda.c
+
+libAddition_la-cadda.lo: cadda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-cadda.lo -MD -MP -MF $(DEPDIR)/libAddition_la-cadda.Tpo -c -o libAddition_la-cadda.lo `test -f 'cadda.c' || echo '$(srcdir)/'`cadda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-cadda.Tpo $(DEPDIR)/libAddition_la-cadda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cadda.c' object='libAddition_la-cadda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-cadda.lo `test -f 'cadda.c' || echo '$(srcdir)/'`cadda.c
+
+libAddition_la-zadda.lo: zadda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -MT libAddition_la-zadda.lo -MD -MP -MF $(DEPDIR)/libAddition_la-zadda.Tpo -c -o libAddition_la-zadda.lo `test -f 'zadda.c' || echo '$(srcdir)/'`zadda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libAddition_la-zadda.Tpo $(DEPDIR)/libAddition_la-zadda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zadda.c' object='libAddition_la-zadda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libAddition_la_CFLAGS) $(CFLAGS) -c -o libAddition_la-zadda.lo `test -f 'zadda.c' || echo '$(srcdir)/'`zadda.c
+
+testAddition-testAddition.o: testAddition.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAddition_CFLAGS) $(CFLAGS) -MT testAddition-testAddition.o -MD -MP -MF $(DEPDIR)/testAddition-testAddition.Tpo -c -o testAddition-testAddition.o `test -f 'testAddition.c' || echo '$(srcdir)/'`testAddition.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testAddition-testAddition.Tpo $(DEPDIR)/testAddition-testAddition.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testAddition.c' object='testAddition-testAddition.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAddition_CFLAGS) $(CFLAGS) -c -o testAddition-testAddition.o `test -f 'testAddition.c' || echo '$(srcdir)/'`testAddition.c
+
+testAddition-testAddition.obj: testAddition.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAddition_CFLAGS) $(CFLAGS) -MT testAddition-testAddition.obj -MD -MP -MF $(DEPDIR)/testAddition-testAddition.Tpo -c -o testAddition-testAddition.obj `if test -f 'testAddition.c'; then $(CYGPATH_W) 'testAddition.c'; else $(CYGPATH_W) '$(srcdir)/testAddition.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testAddition-testAddition.Tpo $(DEPDIR)/testAddition-testAddition.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testAddition.c' object='testAddition-testAddition.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testAddition_CFLAGS) $(CFLAGS) -c -o testAddition-testAddition.obj `if test -f 'testAddition.c'; then $(CYGPATH_W) 'testAddition.c'; else $(CYGPATH_W) '$(srcdir)/testAddition.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/operations/addition/cadda.c b/2.3-1/src/c/operations/addition/cadda.c
new file mode 100644
index 00000000..bf8603f4
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/cadda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+void cadda(floatComplex* in1, int size1, floatComplex* in2, int size2, floatComplex* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = cadds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/cadds.c b/2.3-1/src/c/operations/addition/cadds.c
new file mode 100644
index 00000000..a39d9185
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/cadds.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+floatComplex cadds(floatComplex z1, floatComplex z2) {
+ return FloatComplex(creals(z1) + creals(z2),
+ cimags(z1) + cimags(z2));
+}
diff --git a/2.3-1/src/c/operations/addition/dadda.c b/2.3-1/src/c/operations/addition/dadda.c
new file mode 100644
index 00000000..253ace04
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/dadda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+void dadda(double* in1, int size1, double* in2, int size2, double* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = dadds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/dadds.c b/2.3-1/src/c/operations/addition/dadds.c
new file mode 100644
index 00000000..e7ad6a56
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/dadds.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+double dadds(double in1, double in2)
+{
+ return (in1 + in2);
+}
diff --git a/2.3-1/src/c/operations/addition/i16adda.c b/2.3-1/src/c/operations/addition/i16adda.c
new file mode 100644
index 00000000..db85675a
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/i16adda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+void i16adda(int16* in1, int size1, int16* in2, int size2, int16* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = i16adds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/i16adds.c b/2.3-1/src/c/operations/addition/i16adds.c
new file mode 100644
index 00000000..88c927d4
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/i16adds.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+int16 i16adds(int16 in1, int16 in2)
+{
+ return (in1 + in2);
+}
diff --git a/2.3-1/src/c/operations/addition/i8adda.c b/2.3-1/src/c/operations/addition/i8adda.c
new file mode 100644
index 00000000..5e556d35
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/i8adda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+void i8adda(int8* in1, int size1, int8* in2, int size2, int8* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = i8adds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/i8adds.c b/2.3-1/src/c/operations/addition/i8adds.c
new file mode 100644
index 00000000..0520912b
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/i8adds.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+int8 i8adds(int8 in1, int8 in2)
+{
+ return (in1 + in2);
+}
diff --git a/2.3-1/src/c/operations/addition/sadda.c b/2.3-1/src/c/operations/addition/sadda.c
new file mode 100644
index 00000000..a675a594
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/sadda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+void sadda(float* in1, int size1, float* in2, int size2, float* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = sadds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/sadds.c b/2.3-1/src/c/operations/addition/sadds.c
new file mode 100644
index 00000000..82b83e64
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/sadds.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+float sadds(float in1, float in2)
+{
+ return (in1 + in2);
+}
diff --git a/2.3-1/src/c/operations/addition/testAddition.c b/2.3-1/src/c/operations/addition/testAddition.c
new file mode 100644
index 00000000..b8538d57
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/testAddition.c
@@ -0,0 +1,128 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "addition.h"
+
+#define SIZE 10000
+
+/* #define LOCAL_DEBUG */
+
+static void zaddaTest(void) {
+ doubleComplex M1[SIZE];
+ doubleComplex M2[SIZE];
+ doubleComplex M1_and_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = DoubleComplex((double) rand(), (double) rand());
+ M2[i] = DoubleComplex((double) rand(), (double) rand());
+ }
+ zadda(M1, SIZE, M2, SIZE, M1_and_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_and_M2 = %e + %e i\n", zreals(M1_and_M2[i]), zimags(M1_and_M2[i]));
+#endif
+ assert(zreals(M1_and_M2[i]) - (zreals(M1[i]) + zreals(M2[i])) == 0);
+ assert(zimags(M1_and_M2[i]) - (zimags(M1[i]) + zimags(M2[i])) == 0);
+ }
+}
+
+static void caddaTest(void) {
+ floatComplex M1[SIZE];
+ floatComplex M2[SIZE];
+ floatComplex M1_and_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = FloatComplex((float) rand(), (float) rand());
+ M2[i] = FloatComplex((float) rand(), (float) rand());
+ }
+ cadda(M1, SIZE, M2, SIZE, M1_and_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_and_M2 = %e + %e i\n", creals(M1_and_M2[i]), cimags(M1_and_M2[i]));
+#endif
+ assert(fabsf(creals(M1_and_M2[i]) - (creals(M1[i]) + creals(M2[i]))) / creals(M1_and_M2[i]) < 1e-07);
+ assert(fabsf(cimags(M1_and_M2[i]) - (cimags(M1[i]) + cimags(M2[i]))) / cimags(M1_and_M2[i]) < 1e-07);
+ }
+}
+
+static void saddaTest(void) {
+ float M1[SIZE];
+ float M2[SIZE];
+ float M1_and_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = (float) rand();
+ M2[i] = (float) rand();
+ }
+ sadda(M1, SIZE, M2, SIZE, M1_and_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_and_M2 = %e\n", M1_and_M2[i]);
+ printf("M1[i] + M2[i] = %e\n", (M1[i] + M2[i]));
+ printf("Error = %e\n",(float) fabsf(M1_and_M2[i] - (M1[i] + M2[i])) / M1_and_M2[i]);
+#endif
+ assert(fabsf(M1_and_M2[i] - (M1[i] + M2[i])) / M1_and_M2[i] < 1e-07);
+ }
+}
+
+static void daddaTest(void) {
+ double M1[SIZE];
+ double M2[SIZE];
+ double M1_and_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = (double) rand();
+ M2[i] = (double) rand();
+ }
+ dadda(M1, SIZE, M2, SIZE, M1_and_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_and_M2 = %e\n", M1_and_M2[i]);
+#endif
+ assert(fabs(M1_and_M2[i] - (M1[i] + M2[i])) == 0);
+ }
+
+}
+
+static int testAddition(void) {
+
+ printf("\n>>>> Addition Tests\n");
+ saddaTest();
+ daddaTest();
+ caddaTest();
+ zaddaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testAddition() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj b/2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj
new file mode 100644
index 00000000..09dc859d
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{59F5B75C-7FCC-4B07-A5D0-C39D5757204B}</ProjectGuid>
+ <RootNamespace>testAddition</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testAddition.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj.filters b/2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj.filters
new file mode 100644
index 00000000..ce68739c
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/test_Addition/testAddition.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testAddition.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/addition/u16adda.c b/2.3-1/src/c/operations/addition/u16adda.c
new file mode 100644
index 00000000..3884aa3c
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/u16adda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+void u16adda(uint16* in1, int size1, uint16* in2, int size2, uint16* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = u16adds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/u16adds.c b/2.3-1/src/c/operations/addition/u16adds.c
new file mode 100644
index 00000000..2d49e905
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/u16adds.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+uint16 u16adds(uint16 in1, uint16 in2)
+{
+ return (in1 + in2);
+}
diff --git a/2.3-1/src/c/operations/addition/u8adda.c b/2.3-1/src/c/operations/addition/u8adda.c
new file mode 100644
index 00000000..01c7608b
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/u8adda.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+void u8adda(uint8* in1, int size1, uint8* in2, int size2, uint8* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = u8adds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/u8adds.c b/2.3-1/src/c/operations/addition/u8adds.c
new file mode 100644
index 00000000..ad258232
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/u8adds.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "addition.h"
+
+uint8 u8adds(uint8 in1, uint8 in2)
+{
+ return (in1 + in2);
+}
diff --git a/2.3-1/src/c/operations/addition/zadda.c b/2.3-1/src/c/operations/addition/zadda.c
new file mode 100644
index 00000000..bf87e13e
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/zadda.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+void zadda(doubleComplex* in1, int size1, doubleComplex* in2, int size2, doubleComplex* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = zadds(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/addition/zadds.c b/2.3-1/src/c/operations/addition/zadds.c
new file mode 100644
index 00000000..d4a94dc5
--- /dev/null
+++ b/2.3-1/src/c/operations/addition/zadds.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "addition.h"
+
+doubleComplex zadds(doubleComplex z1, doubleComplex z2) {
+ return DoubleComplex(zreals(z1) + zreals(z2),
+ zimags(z1) + zimags(z2));
+}
diff --git a/2.3-1/src/c/operations/auxiliaryFunctions_Import.def b/2.3-1/src/c/operations/auxiliaryFunctions_Import.def
new file mode 100644
index 00000000..8e9b2502
--- /dev/null
+++ b/2.3-1/src/c/operations/auxiliaryFunctions_Import.def
@@ -0,0 +1,6 @@
+LIBRARY auxiliaryFunctions.dll
+
+
+EXPORTS
+cconjs
+zconjs
diff --git a/2.3-1/src/c/operations/division/Makefile.am b/2.3-1/src/c/operations/division/Makefile.am
new file mode 100644
index 00000000..2704a7b3
--- /dev/null
+++ b/2.3-1/src/c/operations/division/Makefile.am
@@ -0,0 +1,66 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libDivision_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libDivision.la
+
+HEAD = ../includes/division.h
+
+libDivision_la_SOURCES = $(HEAD) \
+ srdivs.c \
+ drdivs.c \
+ crdivs.c \
+ zrdivs.c \
+ sldivs.c \
+ dldivs.c \
+ cldivs.c \
+ zldivs.c \
+ srdiva.c \
+ drdiva.c \
+ crdiva.c \
+ zrdiva.c \
+ sldiva.c \
+ dldiva.c \
+ cldiva.c \
+ zldiva.c
+
+check_PROGRAMS = testLDivision \
+ testRDivision
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ libDivision.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+
+testLDivision_SOURCES = testLDivision.c
+testLDivision_LDADD = $(check_LDADD)
+testLDivision_CFLAGS = $(check_INCLUDES)
+
+
+testRDivision_SOURCES = testRDivision.c
+testRDivision_LDADD = $(check_LDADD)
+testRDivision_CFLAGS = $(check_INCLUDES)
+
+TESTS = testLDivision \
+ testRDivision
diff --git a/2.3-1/src/c/operations/division/Makefile.in b/2.3-1/src/c/operations/division/Makefile.in
new file mode 100644
index 00000000..17be57a1
--- /dev/null
+++ b/2.3-1/src/c/operations/division/Makefile.in
@@ -0,0 +1,858 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testLDivision$(EXEEXT) testRDivision$(EXEEXT)
+TESTS = testLDivision$(EXEEXT) testRDivision$(EXEEXT)
+subdir = src/c/operations/division
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libDivision_la_LIBADD =
+am__objects_1 =
+am_libDivision_la_OBJECTS = $(am__objects_1) libDivision_la-srdivs.lo \
+ libDivision_la-drdivs.lo libDivision_la-crdivs.lo \
+ libDivision_la-zrdivs.lo libDivision_la-sldivs.lo \
+ libDivision_la-dldivs.lo libDivision_la-cldivs.lo \
+ libDivision_la-zldivs.lo libDivision_la-srdiva.lo \
+ libDivision_la-drdiva.lo libDivision_la-crdiva.lo \
+ libDivision_la-zrdiva.lo libDivision_la-sldiva.lo \
+ libDivision_la-dldiva.lo libDivision_la-cldiva.lo \
+ libDivision_la-zldiva.lo
+libDivision_la_OBJECTS = $(am_libDivision_la_OBJECTS)
+libDivision_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libDivision_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testLDivision_OBJECTS = testLDivision-testLDivision.$(OBJEXT)
+testLDivision_OBJECTS = $(am_testLDivision_OBJECTS)
+testLDivision_DEPENDENCIES = $(check_LDADD)
+testLDivision_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testLDivision_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testRDivision_OBJECTS = testRDivision-testRDivision.$(OBJEXT)
+testRDivision_OBJECTS = $(am_testRDivision_OBJECTS)
+testRDivision_DEPENDENCIES = $(check_LDADD)
+testRDivision_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testRDivision_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libDivision_la_SOURCES) $(testLDivision_SOURCES) \
+ $(testRDivision_SOURCES)
+DIST_SOURCES = $(libDivision_la_SOURCES) $(testLDivision_SOURCES) \
+ $(testRDivision_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libDivision_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libDivision.la
+HEAD = ../includes/division.h
+libDivision_la_SOURCES = $(HEAD) \
+ srdivs.c \
+ drdivs.c \
+ crdivs.c \
+ zrdivs.c \
+ sldivs.c \
+ dldivs.c \
+ cldivs.c \
+ zldivs.c \
+ srdiva.c \
+ drdiva.c \
+ crdiva.c \
+ zrdiva.c \
+ sldiva.c \
+ dldiva.c \
+ cldiva.c \
+ zldiva.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ libDivision.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+testLDivision_SOURCES = testLDivision.c
+testLDivision_LDADD = $(check_LDADD)
+testLDivision_CFLAGS = $(check_INCLUDES)
+testRDivision_SOURCES = testRDivision.c
+testRDivision_LDADD = $(check_LDADD)
+testRDivision_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/operations/division/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/operations/division/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libDivision.la: $(libDivision_la_OBJECTS) $(libDivision_la_DEPENDENCIES)
+ $(libDivision_la_LINK) -rpath $(pkglibdir) $(libDivision_la_OBJECTS) $(libDivision_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testLDivision$(EXEEXT): $(testLDivision_OBJECTS) $(testLDivision_DEPENDENCIES)
+ @rm -f testLDivision$(EXEEXT)
+ $(testLDivision_LINK) $(testLDivision_OBJECTS) $(testLDivision_LDADD) $(LIBS)
+testRDivision$(EXEEXT): $(testRDivision_OBJECTS) $(testRDivision_DEPENDENCIES)
+ @rm -f testRDivision$(EXEEXT)
+ $(testRDivision_LINK) $(testRDivision_OBJECTS) $(testRDivision_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-cldiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-cldivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-crdiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-crdivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-dldiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-dldivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-drdiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-drdivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-sldiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-sldivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-srdiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-srdivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-zldiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-zldivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-zrdiva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDivision_la-zrdivs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLDivision-testLDivision.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRDivision-testRDivision.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libDivision_la-srdivs.lo: srdivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-srdivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-srdivs.Tpo -c -o libDivision_la-srdivs.lo `test -f 'srdivs.c' || echo '$(srcdir)/'`srdivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-srdivs.Tpo $(DEPDIR)/libDivision_la-srdivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srdivs.c' object='libDivision_la-srdivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-srdivs.lo `test -f 'srdivs.c' || echo '$(srcdir)/'`srdivs.c
+
+libDivision_la-drdivs.lo: drdivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-drdivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-drdivs.Tpo -c -o libDivision_la-drdivs.lo `test -f 'drdivs.c' || echo '$(srcdir)/'`drdivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-drdivs.Tpo $(DEPDIR)/libDivision_la-drdivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drdivs.c' object='libDivision_la-drdivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-drdivs.lo `test -f 'drdivs.c' || echo '$(srcdir)/'`drdivs.c
+
+libDivision_la-crdivs.lo: crdivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-crdivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-crdivs.Tpo -c -o libDivision_la-crdivs.lo `test -f 'crdivs.c' || echo '$(srcdir)/'`crdivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-crdivs.Tpo $(DEPDIR)/libDivision_la-crdivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crdivs.c' object='libDivision_la-crdivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-crdivs.lo `test -f 'crdivs.c' || echo '$(srcdir)/'`crdivs.c
+
+libDivision_la-zrdivs.lo: zrdivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-zrdivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-zrdivs.Tpo -c -o libDivision_la-zrdivs.lo `test -f 'zrdivs.c' || echo '$(srcdir)/'`zrdivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-zrdivs.Tpo $(DEPDIR)/libDivision_la-zrdivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrdivs.c' object='libDivision_la-zrdivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-zrdivs.lo `test -f 'zrdivs.c' || echo '$(srcdir)/'`zrdivs.c
+
+libDivision_la-sldivs.lo: sldivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-sldivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-sldivs.Tpo -c -o libDivision_la-sldivs.lo `test -f 'sldivs.c' || echo '$(srcdir)/'`sldivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-sldivs.Tpo $(DEPDIR)/libDivision_la-sldivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sldivs.c' object='libDivision_la-sldivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-sldivs.lo `test -f 'sldivs.c' || echo '$(srcdir)/'`sldivs.c
+
+libDivision_la-dldivs.lo: dldivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-dldivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-dldivs.Tpo -c -o libDivision_la-dldivs.lo `test -f 'dldivs.c' || echo '$(srcdir)/'`dldivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-dldivs.Tpo $(DEPDIR)/libDivision_la-dldivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dldivs.c' object='libDivision_la-dldivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-dldivs.lo `test -f 'dldivs.c' || echo '$(srcdir)/'`dldivs.c
+
+libDivision_la-cldivs.lo: cldivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-cldivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-cldivs.Tpo -c -o libDivision_la-cldivs.lo `test -f 'cldivs.c' || echo '$(srcdir)/'`cldivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-cldivs.Tpo $(DEPDIR)/libDivision_la-cldivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cldivs.c' object='libDivision_la-cldivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-cldivs.lo `test -f 'cldivs.c' || echo '$(srcdir)/'`cldivs.c
+
+libDivision_la-zldivs.lo: zldivs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-zldivs.lo -MD -MP -MF $(DEPDIR)/libDivision_la-zldivs.Tpo -c -o libDivision_la-zldivs.lo `test -f 'zldivs.c' || echo '$(srcdir)/'`zldivs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-zldivs.Tpo $(DEPDIR)/libDivision_la-zldivs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zldivs.c' object='libDivision_la-zldivs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-zldivs.lo `test -f 'zldivs.c' || echo '$(srcdir)/'`zldivs.c
+
+libDivision_la-srdiva.lo: srdiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-srdiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-srdiva.Tpo -c -o libDivision_la-srdiva.lo `test -f 'srdiva.c' || echo '$(srcdir)/'`srdiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-srdiva.Tpo $(DEPDIR)/libDivision_la-srdiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srdiva.c' object='libDivision_la-srdiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-srdiva.lo `test -f 'srdiva.c' || echo '$(srcdir)/'`srdiva.c
+
+libDivision_la-drdiva.lo: drdiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-drdiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-drdiva.Tpo -c -o libDivision_la-drdiva.lo `test -f 'drdiva.c' || echo '$(srcdir)/'`drdiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-drdiva.Tpo $(DEPDIR)/libDivision_la-drdiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drdiva.c' object='libDivision_la-drdiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-drdiva.lo `test -f 'drdiva.c' || echo '$(srcdir)/'`drdiva.c
+
+libDivision_la-crdiva.lo: crdiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-crdiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-crdiva.Tpo -c -o libDivision_la-crdiva.lo `test -f 'crdiva.c' || echo '$(srcdir)/'`crdiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-crdiva.Tpo $(DEPDIR)/libDivision_la-crdiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crdiva.c' object='libDivision_la-crdiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-crdiva.lo `test -f 'crdiva.c' || echo '$(srcdir)/'`crdiva.c
+
+libDivision_la-zrdiva.lo: zrdiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-zrdiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-zrdiva.Tpo -c -o libDivision_la-zrdiva.lo `test -f 'zrdiva.c' || echo '$(srcdir)/'`zrdiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-zrdiva.Tpo $(DEPDIR)/libDivision_la-zrdiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrdiva.c' object='libDivision_la-zrdiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-zrdiva.lo `test -f 'zrdiva.c' || echo '$(srcdir)/'`zrdiva.c
+
+libDivision_la-sldiva.lo: sldiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-sldiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-sldiva.Tpo -c -o libDivision_la-sldiva.lo `test -f 'sldiva.c' || echo '$(srcdir)/'`sldiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-sldiva.Tpo $(DEPDIR)/libDivision_la-sldiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sldiva.c' object='libDivision_la-sldiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-sldiva.lo `test -f 'sldiva.c' || echo '$(srcdir)/'`sldiva.c
+
+libDivision_la-dldiva.lo: dldiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-dldiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-dldiva.Tpo -c -o libDivision_la-dldiva.lo `test -f 'dldiva.c' || echo '$(srcdir)/'`dldiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-dldiva.Tpo $(DEPDIR)/libDivision_la-dldiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dldiva.c' object='libDivision_la-dldiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-dldiva.lo `test -f 'dldiva.c' || echo '$(srcdir)/'`dldiva.c
+
+libDivision_la-cldiva.lo: cldiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-cldiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-cldiva.Tpo -c -o libDivision_la-cldiva.lo `test -f 'cldiva.c' || echo '$(srcdir)/'`cldiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-cldiva.Tpo $(DEPDIR)/libDivision_la-cldiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cldiva.c' object='libDivision_la-cldiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-cldiva.lo `test -f 'cldiva.c' || echo '$(srcdir)/'`cldiva.c
+
+libDivision_la-zldiva.lo: zldiva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -MT libDivision_la-zldiva.lo -MD -MP -MF $(DEPDIR)/libDivision_la-zldiva.Tpo -c -o libDivision_la-zldiva.lo `test -f 'zldiva.c' || echo '$(srcdir)/'`zldiva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDivision_la-zldiva.Tpo $(DEPDIR)/libDivision_la-zldiva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zldiva.c' object='libDivision_la-zldiva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDivision_la_CFLAGS) $(CFLAGS) -c -o libDivision_la-zldiva.lo `test -f 'zldiva.c' || echo '$(srcdir)/'`zldiva.c
+
+testLDivision-testLDivision.o: testLDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLDivision_CFLAGS) $(CFLAGS) -MT testLDivision-testLDivision.o -MD -MP -MF $(DEPDIR)/testLDivision-testLDivision.Tpo -c -o testLDivision-testLDivision.o `test -f 'testLDivision.c' || echo '$(srcdir)/'`testLDivision.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testLDivision-testLDivision.Tpo $(DEPDIR)/testLDivision-testLDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testLDivision.c' object='testLDivision-testLDivision.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLDivision_CFLAGS) $(CFLAGS) -c -o testLDivision-testLDivision.o `test -f 'testLDivision.c' || echo '$(srcdir)/'`testLDivision.c
+
+testLDivision-testLDivision.obj: testLDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLDivision_CFLAGS) $(CFLAGS) -MT testLDivision-testLDivision.obj -MD -MP -MF $(DEPDIR)/testLDivision-testLDivision.Tpo -c -o testLDivision-testLDivision.obj `if test -f 'testLDivision.c'; then $(CYGPATH_W) 'testLDivision.c'; else $(CYGPATH_W) '$(srcdir)/testLDivision.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testLDivision-testLDivision.Tpo $(DEPDIR)/testLDivision-testLDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testLDivision.c' object='testLDivision-testLDivision.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testLDivision_CFLAGS) $(CFLAGS) -c -o testLDivision-testLDivision.obj `if test -f 'testLDivision.c'; then $(CYGPATH_W) 'testLDivision.c'; else $(CYGPATH_W) '$(srcdir)/testLDivision.c'; fi`
+
+testRDivision-testRDivision.o: testRDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRDivision_CFLAGS) $(CFLAGS) -MT testRDivision-testRDivision.o -MD -MP -MF $(DEPDIR)/testRDivision-testRDivision.Tpo -c -o testRDivision-testRDivision.o `test -f 'testRDivision.c' || echo '$(srcdir)/'`testRDivision.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testRDivision-testRDivision.Tpo $(DEPDIR)/testRDivision-testRDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testRDivision.c' object='testRDivision-testRDivision.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRDivision_CFLAGS) $(CFLAGS) -c -o testRDivision-testRDivision.o `test -f 'testRDivision.c' || echo '$(srcdir)/'`testRDivision.c
+
+testRDivision-testRDivision.obj: testRDivision.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRDivision_CFLAGS) $(CFLAGS) -MT testRDivision-testRDivision.obj -MD -MP -MF $(DEPDIR)/testRDivision-testRDivision.Tpo -c -o testRDivision-testRDivision.obj `if test -f 'testRDivision.c'; then $(CYGPATH_W) 'testRDivision.c'; else $(CYGPATH_W) '$(srcdir)/testRDivision.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testRDivision-testRDivision.Tpo $(DEPDIR)/testRDivision-testRDivision.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testRDivision.c' object='testRDivision-testRDivision.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testRDivision_CFLAGS) $(CFLAGS) -c -o testRDivision-testRDivision.obj `if test -f 'testRDivision.c'; then $(CYGPATH_W) 'testRDivision.c'; else $(CYGPATH_W) '$(srcdir)/testRDivision.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/operations/division/cldiva.c b/2.3-1/src/c/operations/division/cldiva.c
new file mode 100644
index 00000000..73b94f28
--- /dev/null
+++ b/2.3-1/src/c/operations/division/cldiva.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void cldiva (floatComplex* in1, floatComplex* in2, int size, floatComplex* out ){
+ int i=0;
+ for (i=0;i<size;i++)
+ {
+ out[i]=cldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/cldivs.c b/2.3-1/src/c/operations/division/cldivs.c
new file mode 100644
index 00000000..8ada5da4
--- /dev/null
+++ b/2.3-1/src/c/operations/division/cldivs.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+#include "conj.h"
+#include "multiplication.h"
+/*
+ A\B = B*A^-1 = B*conj(A)/|A|^2
+ |A|^2 = Re(A)^2 + Im(A)^2
+ */
+
+floatComplex cldivs (floatComplex in1, floatComplex in2){
+ floatComplex fC1, fC2;
+ fC1 = cmuls(in2,cconjs(in1));
+ fC2 = FloatComplex(creals(in1)*creals(in1)+cimags(in1)*cimags(in1),0);
+ return crdivs(fC1,fC2);
+}
diff --git a/2.3-1/src/c/operations/division/crdiva.c b/2.3-1/src/c/operations/division/crdiva.c
new file mode 100644
index 00000000..ea9781e8
--- /dev/null
+++ b/2.3-1/src/c/operations/division/crdiva.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void crdiva (floatComplex* in1, floatComplex* in2, int size, floatComplex* out ){
+ int i=0;
+ for (i=0;i<size;i++)
+ {
+ out[i]=crdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/crdivs.c b/2.3-1/src/c/operations/division/crdivs.c
new file mode 100644
index 00000000..f0d5c9bc
--- /dev/null
+++ b/2.3-1/src/c/operations/division/crdivs.c
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#include "division.h"
+
+/*
+** \function cdivides
+** \brief Divide 2 Complex numbers.
+*/
+floatComplex crdivs(floatComplex z1, floatComplex z2) {
+#ifndef STDC99
+ return FloatComplex((z1.real*z2.real + z1.imag*z2.imag) / (z2.real*z2.real + z2.imag* z2.imag),
+ (z1.imag*z2.real - z1.real*z2.imag) / (z2.real*z2.real + z2.imag* z2.imag));
+#else
+ return z1 / z2;
+#endif
+}
+
diff --git a/2.3-1/src/c/operations/division/dldiva.c b/2.3-1/src/c/operations/division/dldiva.c
new file mode 100644
index 00000000..3910c61e
--- /dev/null
+++ b/2.3-1/src/c/operations/division/dldiva.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void dldiva (double* in1, double* in2, int size, double* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=dldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/dldivs.c b/2.3-1/src/c/operations/division/dldivs.c
new file mode 100644
index 00000000..5eefec62
--- /dev/null
+++ b/2.3-1/src/c/operations/division/dldivs.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+
+double dldivs (double in1, double in2){
+ return in2/in1;
+}
diff --git a/2.3-1/src/c/operations/division/drdiva.c b/2.3-1/src/c/operations/division/drdiva.c
new file mode 100644
index 00000000..c9127981
--- /dev/null
+++ b/2.3-1/src/c/operations/division/drdiva.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void drdiva (double* in1, double* in2, int size, double* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=drdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/drdivs.c b/2.3-1/src/c/operations/division/drdivs.c
new file mode 100644
index 00000000..47bf7e0d
--- /dev/null
+++ b/2.3-1/src/c/operations/division/drdivs.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+
+double drdivs (double in1, double in2){
+ return in1/in2;
+}
diff --git a/2.3-1/src/c/operations/division/i16ldiva.c b/2.3-1/src/c/operations/division/i16ldiva.c
new file mode 100644
index 00000000..4106acf1
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i16ldiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void i16ldiva (int16* in1, int16* in2, int size, int16* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=i16ldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/i16ldivs.c b/2.3-1/src/c/operations/division/i16ldivs.c
new file mode 100644
index 00000000..d807e491
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i16ldivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+int16 i16ldivs (int16 in1, int16 in2){
+ return in2/in1;
+}
diff --git a/2.3-1/src/c/operations/division/i16rdiva.c b/2.3-1/src/c/operations/division/i16rdiva.c
new file mode 100644
index 00000000..149e8efb
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i16rdiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void i16rdiva (int16* in1, int16* in2, int size, int16* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=i16rdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/i16rdivs.c b/2.3-1/src/c/operations/division/i16rdivs.c
new file mode 100644
index 00000000..418e5704
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i16rdivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+int16 i16rdivs (int16 in1, int16 in2){
+ return in1/in2;
+}
diff --git a/2.3-1/src/c/operations/division/i8ldiva.c b/2.3-1/src/c/operations/division/i8ldiva.c
new file mode 100644
index 00000000..b7e0a7b9
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i8ldiva.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "division.h"
+
+void i8ldiva (int8* in1, int8* in2, int size, int8* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=i8ldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/i8ldivs.c b/2.3-1/src/c/operations/division/i8ldivs.c
new file mode 100644
index 00000000..65b2ff89
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i8ldivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+int8 i8ldivs (int8 in1, int8 in2){
+ return in2/in1;
+}
diff --git a/2.3-1/src/c/operations/division/i8rdiva.c b/2.3-1/src/c/operations/division/i8rdiva.c
new file mode 100644
index 00000000..f3be2a03
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i8rdiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void i8rdiva (int8* in1, int8* in2, int size, int8* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=i8rdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/i8rdivs.c b/2.3-1/src/c/operations/division/i8rdivs.c
new file mode 100644
index 00000000..54e39554
--- /dev/null
+++ b/2.3-1/src/c/operations/division/i8rdivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+int8 i8rdivs (int8 in1, int8 in2){
+ return in1/in2;
+}
diff --git a/2.3-1/src/c/operations/division/sldiva.c b/2.3-1/src/c/operations/division/sldiva.c
new file mode 100644
index 00000000..d8f9435c
--- /dev/null
+++ b/2.3-1/src/c/operations/division/sldiva.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void sldiva (float* in1, float* in2, int size, float* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=sldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/sldivs.c b/2.3-1/src/c/operations/division/sldivs.c
new file mode 100644
index 00000000..cc935b1a
--- /dev/null
+++ b/2.3-1/src/c/operations/division/sldivs.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+
+float sldivs (float in1, float in2){
+ return in2/in1;
+}
diff --git a/2.3-1/src/c/operations/division/srdiva.c b/2.3-1/src/c/operations/division/srdiva.c
new file mode 100644
index 00000000..55eacccd
--- /dev/null
+++ b/2.3-1/src/c/operations/division/srdiva.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+
+void srdiva (float* in1, float* in2, int size, float* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=srdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/srdivs.c b/2.3-1/src/c/operations/division/srdivs.c
new file mode 100644
index 00000000..c4feaa84
--- /dev/null
+++ b/2.3-1/src/c/operations/division/srdivs.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+
+float srdivs (float in1, float in2){
+ return in1/in2;
+}
diff --git a/2.3-1/src/c/operations/division/testLDivision.c b/2.3-1/src/c/operations/division/testLDivision.c
new file mode 100644
index 00000000..10f069ad
--- /dev/null
+++ b/2.3-1/src/c/operations/division/testLDivision.c
@@ -0,0 +1,1440 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "division.h"
+/*
+#define LOCAL_DEBUG
+*/
+
+#define numF {0.4863167726434767246246f,0.7351270420476794242859f,0.4931047945283353328705f, \
+0.4674215372651815414429f,0.9385177572257816791534f,0.1922166878357529640198f, \
+0.5954132671467959880829f,0.8327809907495975494385f,0.6687640086747705936432f, \
+0.2286918228492140769958f,0.0092464587651193141937f,0.2995736915618181228638f, \
+0.2700363886542618274689f,0.7742356555536389350891f,0.4557857620529830455780f, \
+0.7828153371810913085938f,0.4748650141991674900055f,0.6544588236138224601746f, \
+0.0774390711449086666107f,0.7298626285046339035034f,0.3178048436529934406281f, \
+0.7616757610812783241272f,0.7946523050777614116669f,0.4113068245351314544678f, \
+0.7725206376053392887115f,0.3331029405817389488220f,0.2467053062282502651215f, \
+0.2411641720682382583618f,0.4572312948293983936310f,0.0552289905026555061340f, \
+0.6602421137504279613495f,0.5951132103800773620605f,0.5022635632194578647614f, \
+0.2131066871806979179382f,0.4892856120131909847260f,0.0955289509147405624390f, \
+0.1734651257283985614777f,0.6033168220892548561096f,0.1704865540377795696259f, \
+0.8320639319717884063721f,0.3452270613051950931549f,0.4293539440259337425232f, \
+0.8373569599352777004242f,0.4865261483937501907349f,0.4168656808324158191681f, \
+0.8981839763000607490540f,0.3372378903441131114960f,0.8308038562536239624023f, \
+0.7661137380637228488922f,0.7367237089201807975769f,0.3947515948675572872162f, \
+0.5665872525423765182495f,0.3334710155613720417023f,0.3469921657815575599670f, \
+0.2654880355112254619598f,0.9756370298564434051514f,0.4311642856337130069733f, \
+0.818683846853673458099f,0.7236757851205766201019f,0.3493498060852289199829f, \
+0.3704666462726891040802f,0.5179138453677296638489f,0.7275873008184134960175f, \
+0.6663704290986061096191f,0.0011262320913374423981f,0.4708848400041460990906f, \
+0.6064285724423825740814f,0.4870011564344167709351f,0.7566543002612888813019f, \
+0.2612259620800614356995f,0.1124631459824740886688f,0.5331577099859714508057f, \
+0.2992226914502680301666f,0.6597535377368330955505f,0.1821205220185220241547f, \
+0.9226222056895494461060f,0.3579206657595932483673f,0.70540370512753725052f, \
+0.7498389291577041149139f,0.5263429582118988037109f,0.8541211136616766452789f, \
+0.4560869066044688224792f,0.4583924724720418453217f,0.4175311606377363204956f, \
+0.9077061419375240802765f,0.1282142559066414833069f,0.6094526569359004497528f, \
+0.8813044391572475433350f,0.8179020346142351627350f,0.8436457803472876548767f, \
+0.1981342858634889125824f,0.9536272827535867691040f,0.6124735889025032520294f, \
+0.7028105380013585090637f,0.3752757343463599681854f,0.9582983478903770446777f, \
+0.2590278261341154575348f,0.4027486098930239677429f,0.1812035976909101009369f, \
+0.0107346381992101669312f,0.1321770776994526386261f,0.1188249671831727027893f, \
+0.8947317148558795452118f,0.9573025591671466827393f,0.8303114459849894046783f, \
+0.8688652133569121360779f,0.8411445668898522853851f,0.7189458478242158889771f, \
+0.9357306403107941150665f,0.0784632014110684394836f,0.0029150503687560558319f, \
+0.5078603774309158325195f,0.8118851878680288791656f,0.5662105260416865348816f, \
+0.2769066258333623409271f,0.8859658371657133102417f,0.0314770196564495563507f, \
+0.6675978908315300941467f,0.7218098412267863750458f,0.1339242868125438690186f, \
+0.5291694314219057559967f,0.7163383504375815391541f,0.6395632303319871425629f, \
+0.8994555864483118057251f,0.0726564195938408374786f,0.6018624277785420417786f, \
+0.8345085862092673778534f,0.5936997011303901672363f,0.1458413922227919101715f, \
+0.6217351062223315238953f,0.8940306096337735652924f,0.5043758805841207504272f, \
+0.8378752549178898334503f,0.3477446967735886573792f,0.8344309325329959392548f, \
+0.0944887138903141021729f,0.8318038717843592166901f,0.7244135802611708641052f, \
+0.9557865164242684841156f,0.4553310591727495193481f,0.0865749013610184192657f, \
+0.1186808245256543159485f,0.2495424258522689342499f,0.3825338482856750488281f, \
+0.3061540075577795505524f,0.5395066766068339347839f,0.2025889768265187740326f, \
+0.0439127665013074874878f,0.7895004455931484699249f,0.7461489299312233924866f, \
+0.3415732602588832378387f,0.7078618071973323822021f,0.7551520229317247867584f, \
+0.4638611664995551109314f,0.3611950404010713100433f,0.5010437015444040298462f, \
+0.7341694352217018604279f,0.4257628740742802619934f,0.1802370282821357250214f, \
+0.6641272231936454772949f,0.1251899772323668003082f,0.4596314383670687675476f, \
+0.7690795301459729671478f,0.2743213679641485214233f,0.5053406287916004657745f, \
+0.3383660102263092994690f,0.0924494708888232707977f,0.9034564085304737091064f, \
+0.7907605157233774662018f,0.6128732478246092796326f,0.0111537924967706203461f, \
+0.1803618241101503372192f,0.8404827457852661609650f,0.1461249338462948799133f, \
+0.4865472274832427501678f,0.726291105151176452637f,0.5974256196059286594391f, \
+0.5671374676749110221863f,0.931484447326511144638f,0.4321434330195188522339f, \
+0.3602432166226208209991f,0.3636232325807213783264f,0.0515065859071910381317f, \
+0.546232234686613082886f,0.2797853560186922550201f,0.8320638379082083702087f, \
+0.0200121379457414150238f,0.5413506124168634414673f,0.6739169326610863208771f, \
+0.6039552362635731697083f,0.3311622324399650096893f,0.2298836484551429748535f, \
+0.2544466280378401279449f,0.9669747157022356987000f,0.1742702811025083065033f, \
+0.0957175847142934799194f,0.8599149961955845355988f,0.6998197669163346290588f, \
+0.6734260017983615398407f,0.3116958774626255035400f}
+
+
+#define denF {0.5382980355061590671539f,0.2007744638249278068542f,0.2641933872364461421967f, \
+0.8457476180046796798706f,0.1300224070437252521515f,0.3342894474044442176819f, \
+0.0829705516807734966278f,0.4690896831452846527100f,0.1495246351696550846100f, \
+0.1354982545599341392517f,0.9212783402763307094574f,0.6837693993002176284790f, \
+0.138241392094641923904f,0.5700643183663487434387f,0.6155020031146705150604f, \
+0.4131947979331016540527f,0.7962015741504728794098f,0.0440120948478579521179f, \
+0.8602650105021893978119f,0.9661422576755285263062f,0.9491893877275288105011f, \
+0.7854409301653504371643f,0.0574280763976275920868f,0.4760875590145587921143f, \
+0.8655168102122843265533f,0.7086608028039336204529f,0.6240725568495690822601f, \
+0.7448338139802217483521f,0.5161554259248077869415f,0.4794999407604336738586f, \
+0.1032182234339416027069f,0.9591862708330154418945f,0.8719776370562613010406f, \
+0.0005343137308955192566f,0.921025411691516637802f,0.2494239937514066696167f, \
+0.8318572496064007282257f,0.0349890002980828285217f,0.1342315445654094219208f, \
+0.5583184175193309783936f,0.8753794343210756778717f,0.1880614301189780235291f, \
+0.0115720308385789394379f,0.7894487772136926651001f,0.0339100626297295093536f, \
+0.9644165011122822761536f,0.7929355385713279247284f,0.7035644128918647766113f, \
+0.2737744175828993320465f,0.1206035716459155082703f,0.4700036435388028621674f, \
+0.5317439492791891098022f,0.8852952797897160053253f,0.0311453277245163917542f, \
+0.9321248526684939861298f,0.7741013504564762115479f,0.9714403883554041385651f, \
+0.2870485251769423484802f,0.321173002477735280991f,0.1527888495475053787231f, \
+0.6298292768187820911407f,0.2454866068437695503235f,0.9391400325112044811249f, \
+0.1880467534065246582031f,0.9218494840897619724274f,0.7494041947647929191589f, \
+0.5522131337784230709076f,0.3660501223057508468628f,0.2226321403868496417999f, \
+0.7357934573665261268616f,0.4350862721912562847137f,0.3673023246228694915771f, \
+0.0456369281746447086334f,0.9513923516497015953064f,0.9992560870014131069183f, \
+0.3243254665285348892212f,0.935596418101340532303f,0.4945547403767704963684f, \
+0.3490521642379462718964f,0.5773976966738700866699f,0.5235697799362242221832f, \
+0.4020423842594027519226f,0.6091516851447522640228f,0.8970873858779668807983f, \
+0.3378558685071766376495f,0.999488809145987033844f,0.3673284496180713176727f, \
+0.6423341818153858184814f,0.4645156846381723880768f,0.2342850482091307640076f, \
+0.0761862746439874172211f,0.8228269387036561965942f,0.6512542110867798328400f, \
+0.7096372591331601142883f,0.7576267677359282970428f,0.5344285219907760620117f, \
+0.9484116234816610813141f,0.6385462163016200065613f,0.8538014753721654415131f, \
+0.7363974880427122116089f,0.4808138762600719928741f,0.4364586779847741127014f, \
+0.568298406433314085007f,0.8391566388309001922607f,0.4442326636053621768951f, \
+0.1713406285271048545837f,0.5413129306398332118988f,0.0713584516197443008423f, \
+0.9202047553844749927521f,0.5899223955348134040833f,0.2025530519895255565643f, \
+0.0949973836541175842285f,0.6029607080854475498199f,0.9388656420633196830750f, \
+0.6456290571950376033783f,0.8373190518468618392944f,0.0322129507549107074738f, \
+0.2996022338047623634338f,0.3676775391213595867157f,0.0082762874662876129150f, \
+0.4255532459355890750885f,0.6555949812754988670349f,0.7179697952233254909515f, \
+0.2722820658236742019653f,0.7042095256038010120392f,0.4107702570036053657532f, \
+0.3992546009831130504608f,0.5430093109607696533203f,0.8059121021069586277008f, \
+0.5778724877163767814636f,0.8655853583477437496185f,0.3699875753372907638550f, \
+0.8786192541010677814484f,0.3554905215278267860413f,0.9603816191665828227997f, \
+0.8857465945184230804443f,0.4488521874882280826569f,0.3125058701261878013611f, \
+0.6384749836288392543793f,0.2822567168623208999634f,0.1583893713541328907013f, \
+0.8987128259614109992981f,0.1158893737010657787323f,0.2854162082076072692871f, \
+0.1630702489055693149567f,0.5003604544326663017273f,0.2911056815646588802338f, \
+0.5963354315608739852905f,0.7874583234079182147980f,0.7593664610758423805237f, \
+0.7815607930533587932587f,0.7681679017841815948486f,0.5291136191226541996002f, \
+0.3749529337510466575623f,0.4191309860907495021820f,0.4872382152825593948364f, \
+0.0062245172448456287384f,0.1064539598301053047180f,0.5483497041277587413788f, \
+0.7272168546915054321289f,0.9423489668406546115875f,0.1960451183840632438660f, \
+0.9711097045801579952240f,0.7450918685644865036011f,0.7820150707848370075226f, \
+0.9301448473706841468811f,0.8815995822660624980927f,0.3876874260604381561279f, \
+0.0309310466982424259186f,0.5582376858219504356384f,0.6352246678434312343597f, \
+0.6774792466312646865845f,0.9145545628853142261505f,0.2878693910315632820129f, \
+0.6952623012475669384003f,0.1464569047093391418457f,0.4487714492715895175934f, \
+0.5745639307424426078796f,0.6010014801286160945892f,0.8867830093950033187866f, \
+0.5164337833411991596222f,0.4254123503342270851135f,0.3011168832890689373016f, \
+0.786999259144067764282f,0.0435073510743677616119f,0.9350835150107741355896f, \
+0.6960272691212594509125f,0.9225293714553117752075f,0.8685784828849136829376f, \
+0.7730067269876599311829f,0.7329882490448653697968f,0.5692288875579833984375f, \
+0.3994702645577490329742f,0.8404762176796793937683f,0.8976694359444081783295f, \
+0.8087318520992994308472f,0.6507181231863796710968f,0.8164275148883461952209f, \
+0.4459659676067531108856f,0.1943443678319454193115f}
+
+
+#define resF {1.1068876620893153273073f,0.2731153288357821562471f,0.5357753365370385711941f, \
+1.8093894923050217737881f,0.1385401672399528272273f,1.7391281223724490700988f, \
+0.1393495178203974227404f,0.5632809686530556581019f,0.2235835559780715298128f, \
+0.5924927829591603023474f,99.635802600634079340125f,2.2824747918797778645228f, \
+0.5119361608395592844190f,0.7362930320726552846367f,1.3504195487421153387686f, \
+0.5278317609629509243874f,1.6766903232347427632476f,0.0672496011358359180310f, \
+11.108927286749212370864f,1.32373164475483817704f,2.986705227073049417896f, \
+1.0312011623559280693030f,0.0722681807259187569681f,1.1574997802495594623196f, \
+1.1203801789622278572978f,2.1274528575650260009411f,2.5296276208675498864409f, \
+3.0884928204404604734634f,1.128871605600388905444f,8.682033410286187802285f, \
+0.156333898253812636492f,1.6117710951508164018975f,1.7360957491460742296852f, \
+0.0025072593355198783370f,1.8823880961917311971376f,2.610978047628903286892f, \
+4.79553020304999844114f,0.0579944052892769276730f,0.7873438777797333587571f, \
+0.6710042294421446618102f,2.5356628504484581831946f,0.4380102540938083932609f, \
+0.0138197105801489764088f,1.6226235317876158692485f,0.0813452970319274021316f, \
+1.073740488095831890902f,2.351264674803376752976f,0.8468477939720634450893f, \
+0.3573547947003760105744f,0.1637025796586412118572f,1.1906313987065544335309f, \
+0.9385031994510300012990f,2.6547892874569369858762f,0.0897580141452627294774f, \
+3.5109862893579681930589f,0.7934317033562969800897f,2.2530632075140655246059f, \
+0.3506219479963034180159f,0.4438078613121239635042f,0.4373520376600132930633f, \
+1.700097115774314993075f,0.4739912034393846673730f,1.2907592414749813336527f, \
+0.2821955254840674554018f,818.52532100646453727677f,1.5914808273678857641897f, \
+0.9105988056505853744937f,0.7516411767598049076256f,0.2942323070257712447351f, \
+2.8166934538498038520515f,3.8687008832125218127374f,0.6889187153132119156851f, \
+0.1525182731077390219099f,1.4420420615147946374890f,5.486784662849729876655f, \
+0.3515257540177461059727f,2.6139770837645857071152f,0.7010946168582355975119f, \
+0.4655028575670743240522f,1.096998995931123044301f,0.6129924334637322225205f, \
+0.8815038941866950583659f,1.3288867547490224030327f,2.1485519416269607262393f, \
+0.3722084195508624238080f,7.795457705372165868596f,0.6027185958378803443125f, \
+0.7288448273670578014816f,0.5679356022842784179616f,0.2777054703132481594530f, \
+0.3845183801075117147050f,0.8628391338886128858476f,1.0633180318089598959119f, \
+1.0097134586957323687528f,2.0188536012207980441246f,0.5576849038373914435596f, \
+3.66142756798108282013f,1.5854709379908906718981f,4.7118351194579819463115f, \
+68.6001218091257953802f,3.6376494671289218985066f,3.6731226469598623474155f, \
+0.6351606822441224764475f,0.8765845560477416587020f,0.5350193180564598582905f, \
+0.1972004700995223513971f,0.6435432765634424567835f,0.0992542787967969769580f, \
+0.9834077412265110895717f,7.5184594169719387579676f,69.4852665876786659283f, \
+0.1870541351043674693777f,0.7426674572901041937456f,1.6581564610372447887698f, \
+2.3315767734050760751074f,0.9450918045841619763436f,1.0233799484987251560142f, \
+0.4487764834481295372903f,0.5093828292732275331289f,0.0617982567857320377880f, \
+0.8041909087456269311645f,0.9152029636205054607956f,1.1225939221844238868897f, \
+0.3027187444561179607838f,9.6923235350768326412663f,0.6824985877914779841547f, \
+0.4784307885874682919614f,0.9146194783775245529256f,5.5259490452190824782974f, \
+0.9294512758456500156612f,0.9681831349178503520747f,0.7335552503200706286890f, \
+1.0486277628370475056840f,1.0222744583198670742519f,1.1509420153580014467565f, \
+9.3740993823519449534842f,0.5396130057983075101191f,0.4313915125852843535093f, \
+0.6680100343091925907402f,0.6198933966312950571975f,1.8295068069860944692806f, \
+7.5725192300727837135810f,0.4644074982651374416953f,0.7461201393986430785432f, \
+0.5326412357179206580327f,0.9274407085740377088001f,1.4369275472176299413007f, \
+13.580001422664143007069f,0.9974133995786461648336f,1.0177143337132941169898f, \
+2.2881205409961036245647f,1.0851947286513756729676f,0.7006716569048940801423f, \
+0.8083300798395380848405f,1.1604007231808777245163f,0.9724465426482939989228f, \
+0.0084783116079546021193f,0.2500311002023462569888f,3.042380965521659597073f, \
+1.0949963038624970224078f,7.5273515314372811957355f,0.4265267821551810278891f, \
+1.2626908746301428454473f,2.7161277085125345998051f,1.5475008859961179030762f, \
+2.7489310960890414037f,9.536015444871994262144f,0.4291158072485590224687f, \
+0.0391155679668035854979f,0.9108534069702217683684f,56.951451089604645972031f, \
+3.7562230808750052268863f,1.0881300865145571155068f,1.9700223873795954521171f, \
+1.4289718694810824572983f,0.2016504176777083601202f,0.7511754343036146641666f, \
+1.0130946436989567427389f,0.6452082821710799498405f,2.0520571218652525757875f, \
+1.4335697648463940900854f,1.1699262099260641090126f,5.8461821529318021006816f, \
+1.4407777666134784499974f,0.1555026027575977520812f,1.1238122273905750692080f, \
+34.780255413408944775711f,1.7041254785630945978170f,1.2888509559407714810675f, \
+1.279907318578674679799f,2.2133811686323432432744f,2.4761608378120754103691f, \
+1.5699569989913235712464f,0.8691811730250974532552f,5.1510184654857242847470f, \
+8.4491460426344389134101f,0.7567237762630856234836f,1.1666253991164448056139f, \
+0.6622345534859300775210f,0.6235063787625765296951f}
+
+
+#define numD {0.4863167726434767246246,0.7351270420476794242859,0.4931047945283353328705, \
+0.4674215372651815414429,0.9385177572257816791534,0.1922166878357529640198, \
+0.5954132671467959880829,0.8327809907495975494385,0.6687640086747705936432, \
+0.2286918228492140769958,0.0092464587651193141937,0.2995736915618181228638, \
+0.2700363886542618274689,0.7742356555536389350891,0.4557857620529830455780, \
+0.7828153371810913085938,0.4748650141991674900055,0.6544588236138224601746, \
+0.0774390711449086666107,0.7298626285046339035034,0.3178048436529934406281, \
+0.7616757610812783241272,0.7946523050777614116669,0.4113068245351314544678, \
+0.7725206376053392887115,0.3331029405817389488220,0.2467053062282502651215, \
+0.2411641720682382583618,0.4572312948293983936310,0.0552289905026555061340, \
+0.6602421137504279613495,0.5951132103800773620605,0.5022635632194578647614, \
+0.2131066871806979179382,0.4892856120131909847260,0.0955289509147405624390, \
+0.1734651257283985614777,0.6033168220892548561096,0.1704865540377795696259, \
+0.8320639319717884063721,0.3452270613051950931549,0.4293539440259337425232, \
+0.8373569599352777004242,0.4865261483937501907349,0.4168656808324158191681, \
+0.8981839763000607490540,0.3372378903441131114960,0.8308038562536239624023, \
+0.7661137380637228488922,0.7367237089201807975769,0.3947515948675572872162, \
+0.5665872525423765182495,0.3334710155613720417023,0.3469921657815575599670, \
+0.2654880355112254619598,0.9756370298564434051514,0.4311642856337130069733, \
+0.818683846853673458099,0.7236757851205766201019,0.3493498060852289199829, \
+0.3704666462726891040802,0.5179138453677296638489,0.7275873008184134960175, \
+0.6663704290986061096191,0.0011262320913374423981,0.4708848400041460990906, \
+0.6064285724423825740814,0.4870011564344167709351,0.7566543002612888813019, \
+0.2612259620800614356995,0.1124631459824740886688,0.5331577099859714508057, \
+0.2992226914502680301666,0.6597535377368330955505,0.1821205220185220241547, \
+0.9226222056895494461060,0.3579206657595932483673,0.70540370512753725052, \
+0.7498389291577041149139,0.5263429582118988037109,0.8541211136616766452789, \
+0.4560869066044688224792,0.4583924724720418453217,0.4175311606377363204956, \
+0.9077061419375240802765,0.1282142559066414833069,0.6094526569359004497528, \
+0.8813044391572475433350,0.8179020346142351627350,0.8436457803472876548767, \
+0.1981342858634889125824,0.9536272827535867691040,0.6124735889025032520294, \
+0.7028105380013585090637,0.3752757343463599681854,0.9582983478903770446777, \
+0.2590278261341154575348,0.4027486098930239677429,0.1812035976909101009369, \
+0.0107346381992101669312,0.1321770776994526386261,0.1188249671831727027893, \
+0.8947317148558795452118,0.9573025591671466827393,0.8303114459849894046783, \
+0.8688652133569121360779,0.8411445668898522853851,0.7189458478242158889771, \
+0.9357306403107941150665,0.0784632014110684394836,0.0029150503687560558319, \
+0.5078603774309158325195,0.8118851878680288791656,0.5662105260416865348816, \
+0.2769066258333623409271,0.8859658371657133102417,0.0314770196564495563507, \
+0.6675978908315300941467,0.7218098412267863750458,0.1339242868125438690186, \
+0.5291694314219057559967,0.7163383504375815391541,0.6395632303319871425629, \
+0.8994555864483118057251,0.0726564195938408374786,0.6018624277785420417786, \
+0.8345085862092673778534,0.5936997011303901672363,0.1458413922227919101715, \
+0.6217351062223315238953,0.8940306096337735652924,0.5043758805841207504272, \
+0.8378752549178898334503,0.3477446967735886573792,0.8344309325329959392548, \
+0.0944887138903141021729,0.8318038717843592166901,0.7244135802611708641052, \
+0.9557865164242684841156,0.4553310591727495193481,0.0865749013610184192657, \
+0.1186808245256543159485,0.2495424258522689342499,0.3825338482856750488281, \
+0.3061540075577795505524,0.5395066766068339347839,0.2025889768265187740326, \
+0.0439127665013074874878,0.7895004455931484699249,0.7461489299312233924866, \
+0.3415732602588832378387,0.7078618071973323822021,0.7551520229317247867584, \
+0.4638611664995551109314,0.3611950404010713100433,0.5010437015444040298462, \
+0.7341694352217018604279,0.4257628740742802619934,0.1802370282821357250214, \
+0.6641272231936454772949,0.1251899772323668003082,0.4596314383670687675476, \
+0.7690795301459729671478,0.2743213679641485214233,0.5053406287916004657745, \
+0.3383660102263092994690,0.0924494708888232707977,0.9034564085304737091064, \
+0.7907605157233774662018,0.6128732478246092796326,0.0111537924967706203461, \
+0.1803618241101503372192,0.8404827457852661609650,0.1461249338462948799133, \
+0.4865472274832427501678,0.726291105151176452637,0.5974256196059286594391, \
+0.5671374676749110221863,0.931484447326511144638,0.4321434330195188522339, \
+0.3602432166226208209991,0.3636232325807213783264,0.0515065859071910381317, \
+0.546232234686613082886,0.2797853560186922550201,0.8320638379082083702087, \
+0.0200121379457414150238,0.5413506124168634414673,0.6739169326610863208771, \
+0.6039552362635731697083,0.3311622324399650096893,0.2298836484551429748535, \
+0.2544466280378401279449,0.9669747157022356987000,0.1742702811025083065033, \
+0.0957175847142934799194,0.8599149961955845355988,0.6998197669163346290588, \
+0.6734260017983615398407,0.3116958774626255035400}
+
+
+#define denD {0.5382980355061590671539,0.2007744638249278068542,0.2641933872364461421967, \
+0.8457476180046796798706,0.1300224070437252521515,0.3342894474044442176819, \
+0.0829705516807734966278,0.4690896831452846527100,0.1495246351696550846100, \
+0.1354982545599341392517,0.9212783402763307094574,0.6837693993002176284790, \
+0.138241392094641923904,0.5700643183663487434387,0.6155020031146705150604, \
+0.4131947979331016540527,0.7962015741504728794098,0.0440120948478579521179, \
+0.8602650105021893978119,0.9661422576755285263062,0.9491893877275288105011, \
+0.7854409301653504371643,0.0574280763976275920868,0.4760875590145587921143, \
+0.8655168102122843265533,0.7086608028039336204529,0.6240725568495690822601, \
+0.7448338139802217483521,0.5161554259248077869415,0.4794999407604336738586, \
+0.1032182234339416027069,0.9591862708330154418945,0.8719776370562613010406, \
+0.0005343137308955192566,0.921025411691516637802,0.2494239937514066696167, \
+0.8318572496064007282257,0.0349890002980828285217,0.1342315445654094219208, \
+0.5583184175193309783936,0.8753794343210756778717,0.1880614301189780235291, \
+0.0115720308385789394379,0.7894487772136926651001,0.0339100626297295093536, \
+0.9644165011122822761536,0.7929355385713279247284,0.7035644128918647766113, \
+0.2737744175828993320465,0.1206035716459155082703,0.4700036435388028621674, \
+0.5317439492791891098022,0.8852952797897160053253,0.0311453277245163917542, \
+0.9321248526684939861298,0.7741013504564762115479,0.9714403883554041385651, \
+0.2870485251769423484802,0.321173002477735280991,0.1527888495475053787231, \
+0.6298292768187820911407,0.2454866068437695503235,0.9391400325112044811249, \
+0.1880467534065246582031,0.9218494840897619724274,0.7494041947647929191589, \
+0.5522131337784230709076,0.3660501223057508468628,0.2226321403868496417999, \
+0.7357934573665261268616,0.4350862721912562847137,0.3673023246228694915771, \
+0.0456369281746447086334,0.9513923516497015953064,0.9992560870014131069183, \
+0.3243254665285348892212,0.935596418101340532303,0.4945547403767704963684, \
+0.3490521642379462718964,0.5773976966738700866699,0.5235697799362242221832, \
+0.4020423842594027519226,0.6091516851447522640228,0.8970873858779668807983, \
+0.3378558685071766376495,0.999488809145987033844,0.3673284496180713176727, \
+0.6423341818153858184814,0.4645156846381723880768,0.2342850482091307640076, \
+0.0761862746439874172211,0.8228269387036561965942,0.6512542110867798328400, \
+0.7096372591331601142883,0.7576267677359282970428,0.5344285219907760620117, \
+0.9484116234816610813141,0.6385462163016200065613,0.8538014753721654415131, \
+0.7363974880427122116089,0.4808138762600719928741,0.4364586779847741127014, \
+0.568298406433314085007,0.8391566388309001922607,0.4442326636053621768951, \
+0.1713406285271048545837,0.5413129306398332118988,0.0713584516197443008423, \
+0.9202047553844749927521,0.5899223955348134040833,0.2025530519895255565643, \
+0.0949973836541175842285,0.6029607080854475498199,0.9388656420633196830750, \
+0.6456290571950376033783,0.8373190518468618392944,0.0322129507549107074738, \
+0.2996022338047623634338,0.3676775391213595867157,0.0082762874662876129150, \
+0.4255532459355890750885,0.6555949812754988670349,0.7179697952233254909515, \
+0.2722820658236742019653,0.7042095256038010120392,0.4107702570036053657532, \
+0.3992546009831130504608,0.5430093109607696533203,0.8059121021069586277008, \
+0.5778724877163767814636,0.8655853583477437496185,0.3699875753372907638550, \
+0.8786192541010677814484,0.3554905215278267860413,0.9603816191665828227997, \
+0.8857465945184230804443,0.4488521874882280826569,0.3125058701261878013611, \
+0.6384749836288392543793,0.2822567168623208999634,0.1583893713541328907013, \
+0.8987128259614109992981,0.1158893737010657787323,0.2854162082076072692871, \
+0.1630702489055693149567,0.5003604544326663017273,0.2911056815646588802338, \
+0.5963354315608739852905,0.7874583234079182147980,0.7593664610758423805237, \
+0.7815607930533587932587,0.7681679017841815948486,0.5291136191226541996002, \
+0.3749529337510466575623,0.4191309860907495021820,0.4872382152825593948364, \
+0.0062245172448456287384,0.1064539598301053047180,0.5483497041277587413788, \
+0.7272168546915054321289,0.9423489668406546115875,0.1960451183840632438660, \
+0.9711097045801579952240,0.7450918685644865036011,0.7820150707848370075226, \
+0.9301448473706841468811,0.8815995822660624980927,0.3876874260604381561279, \
+0.0309310466982424259186,0.5582376858219504356384,0.6352246678434312343597, \
+0.6774792466312646865845,0.9145545628853142261505,0.2878693910315632820129, \
+0.6952623012475669384003,0.1464569047093391418457,0.4487714492715895175934, \
+0.5745639307424426078796,0.6010014801286160945892,0.8867830093950033187866, \
+0.5164337833411991596222,0.4254123503342270851135,0.3011168832890689373016, \
+0.786999259144067764282,0.0435073510743677616119,0.9350835150107741355896, \
+0.6960272691212594509125,0.9225293714553117752075,0.8685784828849136829376, \
+0.7730067269876599311829,0.7329882490448653697968,0.5692288875579833984375, \
+0.3994702645577490329742,0.8404762176796793937683,0.8976694359444081783295, \
+0.8087318520992994308472,0.6507181231863796710968,0.8164275148883461952209, \
+0.4459659676067531108856,0.1943443678319454193115}
+
+
+#define resD {1.1068876620893153273073,0.2731153288357821562471,0.5357753365370385711941, \
+1.8093894923050217737881,0.1385401672399528272273,1.7391281223724490700988, \
+0.1393495178203974227404,0.5632809686530556581019,0.2235835559780715298128, \
+0.5924927829591603023474,99.635802600634079340125,2.2824747918797778645228, \
+0.5119361608395592844190,0.7362930320726552846367,1.3504195487421153387686, \
+0.5278317609629509243874,1.6766903232347427632476,0.0672496011358359180310, \
+11.108927286749212370864,1.32373164475483817704,2.986705227073049417896, \
+1.0312011623559280693030,0.0722681807259187569681,1.1574997802495594623196, \
+1.1203801789622278572978,2.1274528575650260009411,2.5296276208675498864409, \
+3.0884928204404604734634,1.128871605600388905444,8.682033410286187802285, \
+0.156333898253812636492,1.6117710951508164018975,1.7360957491460742296852, \
+0.0025072593355198783370,1.8823880961917311971376,2.610978047628903286892, \
+4.79553020304999844114,0.0579944052892769276730,0.7873438777797333587571, \
+0.6710042294421446618102,2.5356628504484581831946,0.4380102540938083932609, \
+0.0138197105801489764088,1.6226235317876158692485,0.0813452970319274021316, \
+1.073740488095831890902,2.351264674803376752976,0.8468477939720634450893, \
+0.3573547947003760105744,0.1637025796586412118572,1.1906313987065544335309, \
+0.9385031994510300012990,2.6547892874569369858762,0.0897580141452627294774, \
+3.5109862893579681930589,0.7934317033562969800897,2.2530632075140655246059, \
+0.3506219479963034180159,0.4438078613121239635042,0.4373520376600132930633, \
+1.700097115774314993075,0.4739912034393846673730,1.2907592414749813336527, \
+0.2821955254840674554018,818.52532100646453727677,1.5914808273678857641897, \
+0.9105988056505853744937,0.7516411767598049076256,0.2942323070257712447351, \
+2.8166934538498038520515,3.8687008832125218127374,0.6889187153132119156851, \
+0.1525182731077390219099,1.4420420615147946374890,5.486784662849729876655, \
+0.3515257540177461059727,2.6139770837645857071152,0.7010946168582355975119, \
+0.4655028575670743240522,1.096998995931123044301,0.6129924334637322225205, \
+0.8815038941866950583659,1.3288867547490224030327,2.1485519416269607262393, \
+0.3722084195508624238080,7.795457705372165868596,0.6027185958378803443125, \
+0.7288448273670578014816,0.5679356022842784179616,0.2777054703132481594530, \
+0.3845183801075117147050,0.8628391338886128858476,1.0633180318089598959119, \
+1.0097134586957323687528,2.0188536012207980441246,0.5576849038373914435596, \
+3.66142756798108282013,1.5854709379908906718981,4.7118351194579819463115, \
+68.6001218091257953802,3.6376494671289218985066,3.6731226469598623474155, \
+0.6351606822441224764475,0.8765845560477416587020,0.5350193180564598582905, \
+0.1972004700995223513971,0.6435432765634424567835,0.0992542787967969769580, \
+0.9834077412265110895717,7.5184594169719387579676,69.4852665876786659283, \
+0.1870541351043674693777,0.7426674572901041937456,1.6581564610372447887698, \
+2.3315767734050760751074,0.9450918045841619763436,1.0233799484987251560142, \
+0.4487764834481295372903,0.5093828292732275331289,0.0617982567857320377880, \
+0.8041909087456269311645,0.9152029636205054607956,1.1225939221844238868897, \
+0.3027187444561179607838,9.6923235350768326412663,0.6824985877914779841547, \
+0.4784307885874682919614,0.9146194783775245529256,5.5259490452190824782974, \
+0.9294512758456500156612,0.9681831349178503520747,0.7335552503200706286890, \
+1.0486277628370475056840,1.0222744583198670742519,1.1509420153580014467565, \
+9.3740993823519449534842,0.5396130057983075101191,0.4313915125852843535093, \
+0.6680100343091925907402,0.6198933966312950571975,1.8295068069860944692806, \
+7.5725192300727837135810,0.4644074982651374416953,0.7461201393986430785432, \
+0.5326412357179206580327,0.9274407085740377088001,1.4369275472176299413007, \
+13.580001422664143007069,0.9974133995786461648336,1.0177143337132941169898, \
+2.2881205409961036245647,1.0851947286513756729676,0.7006716569048940801423, \
+0.8083300798395380848405,1.1604007231808777245163,0.9724465426482939989228, \
+0.0084783116079546021193,0.2500311002023462569888,3.042380965521659597073, \
+1.0949963038624970224078,7.5273515314372811957355,0.4265267821551810278891, \
+1.2626908746301428454473,2.7161277085125345998051,1.5475008859961179030762, \
+2.7489310960890414037,9.536015444871994262144,0.4291158072485590224687, \
+0.0391155679668035854979,0.9108534069702217683684,56.951451089604645972031, \
+3.7562230808750052268863,1.0881300865145571155068,1.9700223873795954521171, \
+1.4289718694810824572983,0.2016504176777083601202,0.7511754343036146641666, \
+1.0130946436989567427389,0.6452082821710799498405,2.0520571218652525757875, \
+1.4335697648463940900854,1.1699262099260641090126,5.8461821529318021006816, \
+1.4407777666134784499974,0.1555026027575977520812,1.1238122273905750692080, \
+34.780255413408944775711,1.7041254785630945978170,1.2888509559407714810675, \
+1.279907318578674679799,2.2133811686323432432744,2.4761608378120754103691, \
+1.5699569989913235712464,0.8691811730250974532552,5.1510184654857242847470, \
+8.4491460426344389134101,0.7567237762630856234836,1.1666253991164448056139, \
+0.6622345534859300775210,0.6235063787625765296951}
+
+
+#define CnumR {0.9886911348439753055573f,0.1642041569575667381287f,0.0116174421273171901703f, \
+0.8040989059954881668091f,0.3511620354838669300079f,0.3538791732862591743469f, \
+0.0420214342884719371796f,0.2273282110691070556641f,0.9304475435055792331696f, \
+0.0305238692089915275574f,0.7304877354763448238373f,0.3167633693665266036987f, \
+0.0185489063151180744171f,0.5621606865897774696350f,0.4824476162903010845184f, \
+0.6829614602029323577881f,0.0907177985645830631256f,0.8980422308668494224548f, \
+0.3069318956695497035980f,0.1443576756864786148071f,0.4171506580896675586700f, \
+0.4542713882401585578918f,0.8413512143306434154510f,0.5767526254057884216309f, \
+0.3367923968471586704254f,0.5443433178588747978210f,0.6477606832049787044525f, \
+0.7295965161174535751343f,0.7869994868524372577667f,0.0733593190088868141174f, \
+0.1243589068762958049774f,0.4778202064335346221924f,0.1828124211169779300690f, \
+0.7146625733003020286560f,0.8759713820181787014008f,0.4779631365090608596802f, \
+0.2395875495858490467072f,0.2876457618549466133118f,0.8872682708315551280975f, \
+0.6973481327295303344727f,0.832738290075212717056f,0.5554805574938654899597f, \
+0.3424665494821965694427f,0.7850530873984098434448f,0.4883357142098248004913f, \
+0.1615189919248223304749f,0.4352665315382182598114f,0.7534295134246349334717f, \
+0.5983185083605349063873f,0.9231166979297995567322f,0.0127727664075791835785f, \
+0.9389179740101099014282f,0.9540623095817863941193f,0.2016280265524983406067f, \
+0.3971493127755820751190f,0.710910387337207794189f,0.6920584165491163730621f, \
+0.5673230392858386039734f,0.2287593870423734188080f,0.897409206256270408630f, \
+0.2454518754966557025909f,0.4779763752594590187073f,0.6745393867604434490204f, \
+0.3962334729731082916260f,0.3951889411546289920807f,0.1898779934272170066833f, \
+0.8453572890721261501312f,0.9405217487365007400513f,0.0145239126868546009064f, \
+0.6200157897546887397766f,0.7661054241470992565155f,0.4872819185256958007812f, \
+0.6006353446282446384430f,0.3781800894066691398621f,0.7422776236198842525482f, \
+0.197737870737910270691f,0.1871016328223049640656f,0.6877400139346718788147f, \
+0.4667807440273463726044f,0.4782230518758296966553f,0.7309859753586351871490f, \
+0.413841723464429378510f,0.7107305652461946010590f,0.0503708962351083755493f, \
+0.5682807085104286670685f,0.9177785338833928108215f,0.9419820639304816722870f, \
+0.5193521305918693542480f,0.0314610176719725131989f,0.9562829090282320976257f, \
+0.7151440619491040706635f,0.4089089538902044296265f,0.8228980232961475849152f, \
+0.3444903278723359107971f,0.1768282498233020305634f,0.1319360919296741485596f, \
+0.2378812418319284915924f,0.6013250267133116722107f,0.5298825851641595363617f, \
+0.8653587270528078079224f,0.8310004216618835926056f,0.2960576163604855537415f, \
+0.8003590661101043224335f,0.7980573028326034545898f,0.6196367540396749973297f, \
+0.3147845743224024772644f,0.7509658797644078731537f,0.7205892037600278854370f, \
+0.4183134590275585651398f,0.7655796119943261146545f,0.2847539256326854228973f, \
+0.4254573099315166473389f,0.3976557464338839054108f,0.7410669168457388877869f, \
+0.1827877140603959560394f,0.8866754267364740371704f,0.461710151750594377518f, \
+0.657166269607841968536f,0.5195506396703422069550f,0.6873805895447731018066f, \
+0.537373247090727090836f,0.3867600364610552787781f,0.5998346298001706600189f, \
+0.6642422433942556381226f,0.369679727125912904739f,0.9070320362225174903870f, \
+0.7608641679398715496063f,0.2374182976782321929932f,0.9166998700238764286041f, \
+0.6792282825335860252380f,0.8834046921692788600922f,0.3948080558329820632935f, \
+0.9377963733859360218048f,0.4795896010473370552063f,0.9556053685955703258514f, \
+0.7993520200252532958984f,0.8689905651845037937164f,0.9002061216160655021667f, \
+0.5333262397907674312592f,0.9881285708397626876831f,0.5791879897005856037140f, \
+0.2385436454787850379944f,0.4406997482292354106903f,0.1319975219666957855225f, \
+0.1010133684612810611725f,0.9943918874487280845642f,0.5546766347251832485199f, \
+0.3245405498892068862915f,0.9300049361772835254669f,0.6929845931008458137512f, \
+0.0173062118701636791229f,0.8690484985709190368652f,0.9859181516803801059723f, \
+0.2530415309593081474304f,0.7195010124705731868744f,0.5323055591434240341187f, \
+0.8298887838609516620636f,0.6184823596850037574768f,0.4000358129851520061493f, \
+0.2339203245937824249268f,0.2312053726054728031158f,0.8725623702630400657654f, \
+0.2035310319624841213226f,0.1399537194520235061646f,0.6774410647340118885040f, \
+0.553180103190243244171f,0.0411705034784972667694f,0.6295938044786453247070f, \
+0.9216948249377310276031f,0.3881068406626582145691f,0.5979036255739629268646f, \
+0.1036274563521146774292f,0.1606920217163860797882f,0.1688879737630486488342f, \
+0.3298818836919963359833f,0.1034589223563671112061f,0.9374943883158266544342f, \
+0.9821662446483969688416f,0.2958797491155564785004f,0.7094252500683069229126f, \
+0.3625693586654961109161f,0.5171768637374043464661f,0.1664499524049460887909f, \
+0.6871585920453071594238f,0.7469687783159315586090f,0.6681645018979907035828f, \
+0.2545631318353116512299f,0.3507453855127096176147f,0.2413669903762638568878f, \
+0.1504721576347947120667f,0.9114818568341434001923f,0.6114324070513248443604f, \
+0.5747082964517176151276f,0.3490518992766737937927f,0.1316190264187753200531f, \
+0.1806297022849321365356f,0.4862137925811111927032f,0.1181474821642041206360f, \
+0.7101306426338851451874f,0.3959603905677795410156f}
+
+
+#define CnumI {0.9444975801743566989899f,0.7508988408371806144714f,0.7969929589889943599701f, \
+0.6391073446720838546753f,0.7475423519499599933624f,0.8376184562221169471741f, \
+0.1913140038959681987762f,0.8142067454755306243896f,0.5972843528725206851959f, \
+0.2314895978197455406189f,0.2196294791065156459808f,0.8555385116487741470337f, \
+0.2425577160902321338654f,0.8404364408925175666809f,0.5419330331496894359589f, \
+0.7332636043429374694824f,0.7841481738723814487457f,0.463916058652102947235f, \
+0.7291909097693860530853f,0.9259582068771123886108f,0.7357061435468494892120f, \
+0.3933822894468903541565f,0.9560909713618457317352f,0.8286947794258594512939f, \
+0.9342691884376108646393f,0.9951714789494872093201f,0.6527760974131524562836f, \
+0.0654199887067079544067f,0.8941438538022339344025f,0.9945600973442196846008f, \
+0.4593119579367339611053f,0.1743795126676559448242f,0.6978968777693808078766f, \
+0.6797442315146327018738f,0.3266391619108617305756f,0.6353397201746702194214f, \
+0.0182057772763073444366f,0.7444909522309899330139f,0.1077597807161509990692f, \
+0.7073562256991863250732f,0.3643188090063631534576f,0.9882115563377737998962f, \
+0.4829082465730607509613f,0.0458393190056085586548f,0.1468743053264915943146f, \
+0.5922066839411854743958f,0.5624566259793937206268f,0.5676662698388099670410f, \
+0.6548293852247297763824f,0.1908333105966448783875f,0.0113042681477963924408f, \
+0.5330905076116323471069f,0.5382480402477085590363f,0.4563436144962906837463f, \
+0.0385018284432590007782f,0.3131976760923862457275f,0.8906985954381525516510f, \
+0.4161457186564803123474f,0.0958596668206155300140f,0.8116585630923509597778f, \
+0.5250105452723801136017f,0.2212363081052899360657f,0.6292906212620437145233f, \
+0.0095289051532745361328f,0.5361407645978033542633f,0.5845551220700144767761f, \
+0.7266371562145650386810f,0.6018460672348737716675f,0.7448990945704281330109f, \
+0.6080113211646676063538f,0.0057328860275447368622f,0.1947725974023342132568f, \
+0.1162833035923540592194f,0.2169317295774817466736f,0.58644847339019179344f, \
+0.0320366565138101577759f,0.7461734232492744922638f,0.9206809522584080696106f, \
+0.4904719027690589427948f,0.7194193229079246520996f,0.5101354592479765415192f, \
+0.118203367106616497040f,0.3125731288455426692963f,0.9160387720912694931030f, \
+0.9680844773538410663605f,0.6672369921579957008362f,0.5071030999533832073212f, \
+0.4611813314259052276611f,0.6185570643283426761627f,0.9359492277726531028748f, \
+0.1334771565161645412445f,0.9054294098168611526489f,0.0963431638665497303009f, \
+0.0557444738224148750305f,0.4043928044848144054413f,0.9148363023996353149414f, \
+0.4072272875346243381500f,0.5939936218783259391785f,0.8805318637751042842865f, \
+0.5168978702276945114136f,0.7935891007073223590851f,0.3654354223981499671936f, \
+0.6554969917051494121552f,0.6570710949599742889404f,0.3246133835054934024811f, \
+0.6009997269138693809509f,0.3747325814329087734222f,0.0345895085483789443970f, \
+0.8048593667335808277130f,0.1928026052191853523254f,0.4321800353936851024628f, \
+0.6863254979252815246582f,0.0949394428171217441559f,0.2340633375570178031921f, \
+0.1884174137376248836517f,0.2874494846910238265991f,0.4380572517402470111847f, \
+0.5726932818070054054260f,0.5540334577672183513641f,0.6376359798014163970947f, \
+0.8861551419831812381744f,0.5973066156730055809021f,0.7819859883747994899750f, \
+0.3015665132552385330200f,0.4194210064597427845001f,0.9744029538705945014954f, \
+0.8126946794800460338593f,0.8724794387817382812500f,0.8529044934548437595367f, \
+0.5554718403145670890808f,0.0156182064674794673920f,0.8275166135281324386597f, \
+0.123992592561990022659f,0.1727691153064370155334f,0.6710657696239650249481f, \
+0.4436169527471065521240f,0.0544945956207811832428f,0.5425151577219367027283f, \
+0.0359929925762116909027f,0.7427068594843149185181f,0.1810864326544106006622f, \
+0.9942650021985173225403f,0.3375321957282721996307f,0.9349375292658805847168f, \
+0.7478643828071653842926f,0.2452003313228487968445f,0.5380070446990430355072f, \
+0.3287191297858953475952f,0.45475816028192639351f,0.9380933428183197975159f, \
+0.2151815737597644329071f,0.1763018555939197540283f,0.0555533752776682376862f, \
+0.1616924917325377464294f,0.4014935842715203762054f,0.4236538577824831008911f, \
+0.3992733699269592761993f,0.6722801076248288154602f,0.7260224181227385997772f, \
+0.8333860486745834350586f,0.0086704292334616184235f,0.0351518867537379264832f, \
+0.7029411061666905879974f,0.4494737815111875534058f,0.7895763670094311237335f, \
+0.4047682592645287513733f,0.5102028916589915752411f,0.8725254051387310028076f, \
+0.9648624868132174015045f,0.1623276313766837120056f,0.1022121286951005458832f, \
+0.3143476936966180801392f,0.8267589178867638111115f,0.1295115025714039802551f, \
+0.0002295556478202342987f,0.9005581513047218322754f,0.4012833260931074619293f, \
+0.5771514577791094779968f,0.6042619436047971248627f,0.1899941917508840560913f, \
+0.6185289998538792133331f,0.7475680345669388771057f,0.3701861198060214519501f, \
+0.3796691931784152984619f,0.0825623110868036746979f,0.1093314653262495994568f, \
+0.6958573660813271999359f,0.1640254277735948562622f,0.0346795511431992053986f, \
+0.0631942944601178169250f,0.8599521922878921031952f,0.7172338664531707763672f, \
+0.6037731417454779148102f,0.3179458705708384513855f,0.8572954847477376461029f, \
+0.7672908585518598556519f,0.9375572209246456623077f,0.6549387136474251747131f, \
+0.4744220296852290630341f,0.2306616865098476409912f}
+
+
+#define CdenR {0.0319890365935862064362f,0.1597689306363463401794f,0.7430339208804070949554f, \
+0.9168703723698854446411f,0.8414530497975647449493f,0.9393842564895749092102f, \
+0.8984190779738128185272f,0.0725589841604232788086f,0.8528734245337545871735f, \
+0.6726021049544215202332f,0.8592702611349523067474f,0.0417808722704648971558f, \
+0.7025507246144115924835f,0.8849766561761498451233f,0.0027594636194407939911f, \
+0.8899881355464458465576f,0.0313250035978853702545f,0.2663000663742423057556f, \
+0.6700097895227372646332f,0.7313312981277704238892f,0.2368951407261192798615f, \
+0.884347585029900074005f,0.956500727217644453049f,0.0312716141343116760254f, \
+0.1382475518621504306793f,0.1935445470735430717468f,0.0239577977918088436127f, \
+0.1259902473539113998413f,0.1459442754276096820831f,0.5573052400723099708557f, \
+0.2774765784852206707001f,0.4273443259298801422119f,0.0320204333402216434479f, \
+0.5027936464175581932068f,0.2516311011277139186859f,0.2821198720484972000122f, \
+0.8932410669513046741486f,0.4268560605123639106750f,0.5493166255764663219452f, \
+0.9543316066265106201172f,0.4014673479832708835602f,0.9718755809590220451355f, \
+0.6770767881534993648529f,0.6993196289986371994019f,0.9348821644671261310577f, \
+0.7902984777465462684631f,0.1206651250831782817841f,0.3983929716050624847412f, \
+0.6838250816799700260162f,0.9165824344381690025330f,0.5045909709297120571136f, \
+0.7227700296789407730103f,0.3249866780824959278107f,0.4653166653588414192200f, \
+0.1793997320346534252167f,0.2955658659338951110840f,0.3577122562564909458160f, \
+0.8742639077827334403992f,0.0804375349543988704681f,0.8205763902515172958374f, \
+0.6961649288423359394073f,0.4110742891207337379456f,0.2018502498976886272430f, \
+0.6466094143688678741455f,0.6110980794765055179596f,0.1624210691079497337341f, \
+0.5295668891631066799164f,0.7361125815659761428833f,0.6149871987290680408478f, \
+0.2243082569912075996399f,0.7770173805765807628632f,0.5068481713533401489258f, \
+0.3842710950411856174469f,0.3123001037165522575378f,0.7673347159288823604584f, \
+0.5153647791594266891479f,0.3124524806626141071320f,0.5104224691167473793030f, \
+0.8057914744131267070770f,0.4510158710181713104248f,0.7878079325892031192780f, \
+0.3774860640987753868103f,0.8862207210622727870941f,0.4092752132564783096313f, \
+0.7894572285003960132599f,0.1295815678313374519348f,0.0751712801866233348846f, \
+0.9130991771817207336426f,0.8955420576967298984528f,0.1174966199323534965515f, \
+0.9175473838113248348236f,0.6510859187692403793335f,0.2972641070373356342316f, \
+0.3178046876564621925354f,0.2074826951138675212860f,0.4011814333498477935791f, \
+0.9125325218774378299713f,0.0563758080825209617615f,0.9681987068615853786469f, \
+0.1086824852973222732544f,0.1929707420058548450470f,0.6830592053011059761047f, \
+0.9845975148491561412811f,0.587286412715911865234f,0.7180327125824987888336f, \
+0.4162877826020121574402f,0.7323389663361012935638f,0.8119378071278333663940f, \
+0.1699784700758755207062f,0.0763544896617531776428f,0.0471521834842860698700f, \
+0.2722220681607723236084f,0.7834591032005846500397f,0.9261105647310614585876f, \
+0.3781314617954194545746f,0.3550558332353830337524f,0.8634610888548195362091f, \
+0.3378356518223881721497f,0.9687665435485541820526f,0.2254242822527885437012f, \
+0.4653600030578672885895f,0.5050297928974032402039f,0.8094572662375867366791f, \
+0.1739153172820806503296f,0.8308336068876087665558f,0.9178772950544953346252f, \
+0.7052625860087573528290f,0.8998006172478199005127f,0.6733843074180185794830f, \
+0.8211324727162718772888f,0.3026339760981500148773f,0.6984135676175355911255f, \
+0.9072209936566650867462f,0.3731772648170590400696f,0.4188832002691924571991f, \
+0.0215740650892257690430f,0.9132502474822103977203f,0.7250007269904017448425f, \
+0.5181344612501561641693f,0.3798101972788572311401f,0.9359269295819103717804f, \
+0.7378503987565636634827f,0.6775109241716563701630f,0.0551267974078655242920f, \
+0.7047141403891146183014f,0.5583055457100272178650f,0.8873056150041520595551f, \
+0.5930708739906549453735f,0.8739025560207664966583f,0.7695222767069935798645f, \
+0.0288866939954459667206f,0.5428439155220985412598f,0.374539139214903116226f, \
+0.3374005360528826713562f,0.3740871041081845760345f,0.4142110701650381088257f, \
+0.2722152252681553363800f,0.0704229706898331642151f,0.9498285944573581218719f, \
+0.3199572004377841949463f,0.2244639829732477664948f,0.8119156723842024803162f, \
+0.6117301187478005886078f,0.2726398129016160964966f,0.1315172505564987659454f, \
+0.0834807949140667915344f,0.1704506087116897106171f,0.6043888628482818603516f, \
+0.0741717466153204441071f,0.3983510462567210197449f,0.4145161225460469722748f, \
+0.4785034339874982833862f,0.1325146560557186603546f,0.9634160557761788368225f, \
+0.3733813683502376079559f,0.9615952931344509124756f,0.1792585910297930240631f, \
+0.9886706164106726646423f,0.6644756025634706020355f,0.6250293198972940444946f, \
+0.2414359268732368946075f,0.3228348018601536750793f,0.2679829034022986888885f, \
+0.1444108113646507263184f,0.5242025130428373813629f,0.6338959587737917900085f, \
+0.5731068192981183528900f,0.8658696617931127548218f,0.6905007590539753437042f, \
+0.8533225739374756813049f,0.0395693923346698284149f,0.8078914172947406768799f, \
+0.4903320954181253910065f,0.1027000164613127708435f,0.3180945566855370998383f, \
+0.0674452055245637893677f,0.3333888095803558826447f,0.8215381549671292304993f, \
+0.1736259120516479015350f,0.0991585403680801391602f}
+
+
+#define CdenI {0.8987952568568289279938f,0.315000849775969982147f,0.0550288720987737178802f, \
+0.8362890016287565231323f,0.3757084463723003864288f,0.4403073200955986976624f, \
+0.6550271878950297832489f,0.1222427897155284881592f,0.4285280019976198673248f, \
+0.6505553862079977989197f,0.304123846348375082016f,0.4213901553303003311157f, \
+0.4804654982872307300568f,0.1147165866568684577942f,0.5422563436441123485565f, \
+0.2779277041554450988770f,0.4092231714166700839996f,0.1325531704351305961609f, \
+0.7119363336823880672455f,0.4915375765413045883179f,0.2485320051200687885284f, \
+0.5632069641724228858948f,0.9166236515156924724579f,0.4785935021936893463135f, \
+0.9892991916276514530182f,0.4862101143226027488708f,0.1880847117863595485687f, \
+0.7876637298613786697388f,0.0741149676032364368439f,0.8136677043512463569641f, \
+0.2064852821640670299530f,0.2380608320236206054688f,0.6788688250817358493805f, \
+0.0723622469231486320496f,0.4169676317833364009857f,0.6501883845776319503784f, \
+0.3752250974066555500031f,0.0745300510898232460022f,0.8864620546810328960419f, \
+0.6364345215260982513428f,0.2677079201675951480865f,0.6960594644770026206970f, \
+0.7444827682338654994965f,0.4213623646646738052368f,0.1991455671377480030060f, \
+0.4808609904721379280090f,0.5516581865958869457245f,0.1599473282694816589355f, \
+0.1182241612114012241364f,0.2901592804118990898132f,0.4397455691359937191010f, \
+0.7226112987846136093140f,0.202900760341435670853f,0.7154570007696747779846f, \
+0.3668800438754260540009f,0.4158036895096302032471f,0.8334258184768259525299f, \
+0.4739205753430724143982f,0.3318080059252679347992f,0.6068793702870607376099f, \
+0.0087250215001404285431f,0.5049378024414181709290f,0.8908548909239470958710f, \
+0.7220234721899032592773f,0.2998904981650412082672f,0.986597347073256969452f, \
+0.8213773234747350215912f,0.5859730672091245651245f,0.9345314060337841510773f, \
+0.9908401081338524818420f,0.2754496405832469463348f,0.5722857229411602020264f, \
+0.1057338924147188663483f,0.9960324605926871299744f,0.2675347900949418544769f, \
+0.5329049322754144668579f,0.0993804302997887134552f,0.9757113726809620857239f, \
+0.8398896041326224803925f,0.9757724180817604064941f,0.3335785293020308017731f, \
+0.2822513980790972709656f,0.7494544475339353084564f,0.4592373128980398178101f, \
+0.9039488215930759906769f,0.0442035431042313575745f,0.0199772412888705730438f, \
+0.6720122136175632476807f,0.7285225228406488895416f,0.2960560088977217674255f, \
+0.2031218609772622585297f,0.1674261111766099929810f,0.8859982681460678577423f, \
+0.5591668086126446723938f,0.6923109102062880992889f,0.2207241952419281005859f, \
+0.241108322981745004654f,0.0926182596012949943542f,0.9330528690479695796967f, \
+0.7781645338982343673706f,0.9508441691286861896515f,0.5327433506026864051819f, \
+0.8735036174766719341278f,0.9666616283357143402100f,0.9452914656139910221100f, \
+0.1400739839300513267517f,0.4990123338066041469574f,0.1327268425375223159790f, \
+0.9768243846483528614044f,0.3724610926583409309387f,0.7944017681293189525604f, \
+0.8794557079672813415527f,0.3314093225635588169098f,0.0031166328117251396179f, \
+0.9777328907512128353119f,0.0703121032565832138062f,0.7957679857499897480011f, \
+0.5023274505510926246643f,0.3493039156310260295868f,0.2684593088924884796143f, \
+0.9741498515941202640533f,0.9015910243615508079529f,0.5996336988173425197601f, \
+0.5803879369050264358521f,0.5484640044160187244415f,0.8589230822399258613586f, \
+0.9201795118860900402069f,0.3725907355546951293945f,0.5755203464068472385406f, \
+0.1440870938822627067566f,0.7605391903780400753021f,0.8300342690199613571167f, \
+0.4151301835663616657257f,0.2624956378713250160217f,0.5758876572363078594208f, \
+0.8251774720847606658936f,0.3828161866404116153717f,0.4365336438640952110291f, \
+0.4083978212438523769379f,0.0662870798259973526001f,0.7208817270584404468536f, \
+0.6630535097792744636536f,0.6463958504609763622284f,0.993799932301044464111f, \
+0.9815895878709852695465f,0.0657920939847826957703f,0.8050008206628262996674f, \
+0.3934821542352437973022f,0.4162000496871769428253f,0.2614595824852585792542f, \
+0.6719987387768924236298f,0.1951352097094058990479f,0.4636183516122400760651f, \
+0.9582502311095595359802f,0.6627009413205087184906f,0.4255988318473100662231f, \
+0.9324015271849930286407f,0.5055249826982617378235f,0.7275368678383529186249f, \
+0.7848008275032043457031f,0.9698746153153479099274f,0.6134159592911601066589f, \
+0.6561312093399465084076f,0.8136037569493055343628f,0.4121062462218105792999f, \
+0.9611028293147683143616f,0.1216154317371547222137f,0.1221984885632991790771f, \
+0.6084936023689806461334f,0.9125110497698187828064f,0.3089236742816865444183f, \
+0.6477946285158395767212f,0.3147067544050514698029f,0.0581819834187626838684f, \
+0.4708230230025947093964f,0.4103578254580497741699f,0.7477423720993101596832f, \
+0.8020648909732699394226f,0.2554281591437757015228f,0.7351439502090215682983f, \
+0.3968368102796375751495f,0.7119807982817292213440f,0.1489503826014697551727f, \
+0.4107801504433155059814f,0.6839885697700083255768f,0.8525082385167479515076f, \
+0.8774310103617608547211f,0.7516427803784608840942f,0.0678401333279907703400f, \
+0.819040869362652301788f,0.1112091499380767345428f,0.0332822054624557495117f, \
+0.6846691765822470188141f,0.6917669652029871940613f,0.3158738478086888790131f, \
+0.2696444820612668991089f,0.1202391539700329303741f,0.6283207843080163002014f, \
+0.0934506128542125225067f,0.8008399121463298797607f}
+
+
+#define CresR {0.4709798307531771199841f,0.4447581675093783548647f,0.0826177744953439652242f, \
+1.205396046252330988224f,0.8449132450069640754009f,0.8480990000672121720271f, \
+4.2502508379938888083416f,0.1623619707288032898429f,0.8585056587355431867437f, \
+3.1388466849496672317343f,1.1935750070427169067244f,0.4490650157900041850034f, \
+2.1895212424748247137529f,0.5809227845299023140768f,0.56073613731694649243f, \
+0.8082982497300479352020f,0.51953770817366529133f,0.2942574640122151419241f, \
+1.15793914287644739147f,0.6384564385907467443104f,0.3937873213744618183796f, \
+1.726027502041532768473f,1.036465781498592919618f,0.4067614434439539849997f, \
+0.9843295698061713672189f,0.4579374729893078699305f,0.1635265468643208597310f, \
+0.2673377630487006051396f,0.1276569435289993670324f,0.8547995406383729344313f, \
+0.5712421096762160255267f,0.9496998303500763238816f,0.9215219933031827403980f, \
+0.4199401716102647008633f,0.4080227083004296928515f,0.8668387814340499097909f, \
+3.8251647868179174949432f,0.2798561459758153735500f,0.7296876114375909772036f, \
+1.1307863949434504569069f,0.5227040207487291256783f,0.9553281397768573768303f, \
+1.6873623484630664304262f,0.9189993233013992179892f,1.8680916744683291330631f, \
+1.0945340632725206742037f,0.7172695872712858689013f,0.4393272001105434365620f, \
+0.6184165841783031414280f,1.0145435197072958377618f,39.23975822857007500488f, \
+0.9125771040829241398384f,0.34940616662082130128f,1.6886679318634245650088f, \
+0.5362354768077970401663f,0.5639723020956257659719f,0.7780379364916976125954f, \
+1.4003319167235890319034f,0.8161232260004956939881f,0.8393853039143751582074f, \
+0.5223720004390856042065f,1.110983008842490127321f,0.818747739732451629280f, \
+1.6747433378619311916680f,0.9068157856691638762925f,1.60833170305877803941f, \
+0.8405688656523967461354f,0.8381421282255379079373f,1.2701889799735286423754f, \
+0.9833168993944022551190f,1.0168770046728485834109f,1.3016322293958613176557f, \
+0.6495107529989713190943f,1.7580887380148670917634f,0.811791795379815717126f, \
+2.965105145965179822554f,0.2240951065290753552173f,0.9460239544777007125731f, \
+1.718999756730102967950f,1.2296973389194514325595f,0.9389212198179804902409f, \
+1.0234593559016138542006f,1.4334211779050687329828f,0.5243120860846904873753f, \
+1.0504722453285446626126f,0.1152767460270415350587f,0.0707222953082139449421f, \
+1.6254463990050433963575f,1.2481859371318786422478f,0.2175136535151512284791f, \
+1.2910615615872327310854f,0.4233268477489937620106f,0.4807068388081991994198f, \
+1.1549507985792513142798f,1.6255209179331293611881f,0.2983110082899964599079f, \
+1.4173997951417944829444f,0.1244573410110787203831f,1.2637054783806833668791f, \
+0.4884514729189023962697f,0.6929538011049971579780f,1.7943962247548823629728f, \
+1.2713004857643259715161f,1.032953859535653995394f,1.536353015508226782515f, \
+0.4675865183692056170628f,1.0462587829225313829085f,1.1330002369245864013436f, \
+1.041962113643855936118f,0.2090005572387043097926f,1.3318357299932417348032f, \
+1.1032964509750491366447f,2.0521925485676613121200f,1.1375468051162005434f, \
+3.6762531852618991479176f,0.38561527164112474608f,1.8447673546930116739162f, \
+0.6707863887229996713302f,1.2079499357804526216142f,0.3709954307004496576461f, \
+1.0365712069816981344417f,1.4492727922264592166357f,0.9826439254861862870882f, \
+0.5459775284828356500810f,1.7185510325107367091135f,0.9420557659158521612852f, \
+1.0363462766733533282348f,0.6588978871971996609247f,0.7068286721825971508082f, \
+0.8283838180602889345039f,0.3576856814045822896553f,1.1450642560827664073742f, \
+1.0082980823395675251675f,0.8632613198241941843136f,0.5769998142575105681829f, \
+0.4586342340414231721901f,1.0743331202123964640549f,0.8051789964613165206941f, \
+1.0185550907048162017077f,0.2778337479551458155669f,1.8265245559079639203759f, \
+0.7989360256028138485007f,1.677001282149952920975f,1.0503469849633222388263f, \
+1.4140028143314165021138f,0.5446523200971284950356f,1.5495499943879871285191f, \
+1.5081843822248834907640f,0.9349545726381919275028f,0.5723524546761384890203f, \
+3.1135949451595807957460f,0.6437016396093410142143f,0.4050990487720780852676f, \
+2.6650358323492571166469f,0.7883973138104276578986f,0.8659591728844833191658f, \
+0.7053024953584487999336f,0.4594589542097845535906f,1.321677134779998041836f, \
+0.9728202285898922552221f,1.1265695509413868879989f,0.9572634127807582160585f, \
+1.0936914939126565204930f,1.8223172561248370815434f,0.3829461524867902033620f, \
+0.9262699522472612745361f,0.2636089879247657252748f,0.4207872701626157452282f, \
+0.3681456734997125557207f,1.7105511789891454377255f,0.7594157400395155077533f, \
+2.311379502472121316714f,0.3968136705033024624889f,3.7584600137181558565658f, \
+1.1328564511602001729784f,0.5708065143880640679441f,0.4501390996974691804944f, \
+1.1049485918178350019048f,0.7752771634215889218211f,1.0810236263550128121835f, \
+0.6478013413788724639275f,0.8461714840132198434119f,0.6054575539721791521686f, \
+0.4140498893464432672573f,0.7932920209693627988656f,1.1273035377738909179612f, \
+1.3778348488206868527328f,2.8479811305391047326907f,2.8424954426663924245133f, \
+6.763933435362530666168f,0.0838692695945179311767f,0.5829756521091847831784f, \
+1.0005053747332974811712f,1.1474263302846201550977f,0.4156230215198345456784f, \
+0.3525774504986416424401f,0.2463914637535300489191f,1.148273196579604027434f, \
+0.2298339614166822753027f,1.0666533246089620057262f}
+
+
+#define CresI {0.4591483936701460932817f,-0.1155119517747187490864f,-0.9310924334988598394247f, \
+0.0819694377628846782002f,-0.7287233873139877804448f,-0.763187199054947806864f, \
+-3.762492170029271498777f,-0.0437843680454512648725f,-0.0905413694792896739383f, \
+-2.4916556281940294148569f,0.0574678906137320935632f,0.1174306870209648884229f, \
+-2.7289896643260878050796f,-0.6644222901331670039227f,0.4940949025393515658955f, \
+-0.4608868906485130145789f,0.0201573045574557213611f,-0.0044069113482103575846f, \
+-0.4314389127933472845022f,-0.6902743621457737566161f,-0.0987167242035817960044f, \
+-0.2548733845587528579202f,-0.0883482700619244720741f,0.2453606820435244861844f, \
+0.2068645371508029129348f,0.0560010586358397413620f,0.1255687367414367316965f, \
+1.0556170148952166432110f,-0.0508624268720807917732f,-0.4973030078350189620018f, \
+-0.4494495094173277527361f,0.1516315916553793996524f,0.1955091614740893934954f, \
+-0.2981682129038163431289f,0.3238592517142263038643f,0.20807310888270824645f, \
+1.2754627683321149156370f,-0.4652261053750170738397f,0.9104699268960899649628f, \
+-0.2343654011567836148444f,0.0927986797131679780337f,-0.4464725902632422083194f, \
+-0.2054461228467904798656f,0.4830705943398990731552f,-0.1540520130863628767148f, \
+-1.0359735137341328226057f,0.3405388282389278931106f,-0.1187156901372778405879f, \
+-0.4792316908339305792097f,0.1045919568114299369466f,-0.2999491114304728145434f, \
+0.2514864063426180407212f,0.0155478062159446952378f,-0.2735523819973274539663f, \
+0.8717980527838158355536f,0.3364261929110925475328f,0.2029142596752248339786f, \
+-0.1918158596845628005578f,1.1084778145052667230885f,-0.0829219255275467775901f, \
+-1.081783493192439049579f,0.5421774728023454059667f,0.5568609105760318200851f, \
+1.781941834619454212429f,-0.4713958087204941915793f,0.2445718496622908411098f, \
+0.2491121281579287416452f,0.0866971164274075029033f,-0.8008320713990698669349f, \
+0.6338101504882612813319f,0.3519358982630789167700f,0.6541663473243117810085f, \
+0.0502911402190908199406f,1.6252765471306449551747f,-0.2809451105359275779882f, \
+2.2146130913244452820265f,-0.3625483190563351110214f,0.1522743119365968789136f, \
+-0.0069229021370069455943f,0.1905060635979277938734f,-0.1989073433264569867873f, \
+0.3897022628957311773945f,0.4240784338552809340506f,-0.4179573564331034440933f, \
+-0.1988402057439373205039f,-0.0356440742214715750036f,-0.0168647095375222925984f, \
+-0.1494425771365865129869f,-1.3843069738448403604991f,0.0967017939849821872578f, \
+0.0430607432652793456485f,-0.5279083881307125025728f,1.0204003735962423604633f, \
+1.4362803365510681263828f,0.1977169795522846496016f,-0.3955062165628914772064f, \
+-1.4128711804163340826079f,0.0310836769042206473301f,-0.3390941241024513219671f, \
+0.6074764041812149573119f,0.4824589432533142319137f,-0.4154346483371720855082f, \
+0.0501899399979248012071f,0.3607980326544134586086f,0.7206975894822468253764f, \
+-0.4477518830833556728876f,0.1424100376820599533900f,0.1298061651063174004594f, \
+0.3303537448252925612380f,0.4338741987461899873857f,0.7684141832850970299518f, \
+0.2873031419117236806571f,0.3434511048158676582709f,-0.3550844910755488470500f, \
+1.5595291773563670911784f,-0.0457132414448809254459f,-0.0267391386135805188273f, \
+0.1798214510802064736161f,-0.6158028489814036943173f,0.0464070042435799218206f, \
+0.1034419684949273582353f,0.0929020432890966946227f,-0.2813776899321288604838f, \
+0.6258852119978557393409f,-0.4661667563754944287879f,-0.0650680862663896020237f, \
+0.102444575548549118849f,-0.8520157260825024225781f,-0.0298211062249834936433f, \
+-0.4653174759501645385562f,0.8545944890801387971990f,-0.2976773769162330829374f, \
+0.3093514738325885415904f,0.2363494602874922356772f,0.1974484855458788490346f, \
+0.7777794203036600961809f,0.3731580648675694722449f,-0.0003201115706582268751f, \
+0.6970160995106667867205f,-0.1417446622937881539617f,0.6735687169118647066313f, \
+-0.5504259784814062861358f,0.1823325876192195271752f,0.0893283232282492400955f, \
+-0.7513139628213129084244f,-0.0681389663512164817094f,-0.0516841536789755529036f, \
+-0.315174493545774980774f,-0.0096538968382749029695f,-0.3974986568742733816784f, \
+0.1161709126231448979683f,0.0939526577995318662451f,0.4474141503322081603322f, \
+2.0839818065490263165884f,0.481117429953414110777f,0.1103349130284882323449f, \
+0.7841930577945639413429f,0.3179393307402755275426f,-0.5800239728555655061015f, \
+-0.1108667189012625814426f,4.1526144610214457131292f,0.6644411493894925024861f, \
+-0.5535740575269347818477f,-0.0391563103551154784165f,0.1619934487203539552613f, \
+1.0596515488428814855126f,-0.3128122097434946624617f,-0.3890589346180040597467f, \
+0.2748020770797242051664f,1.635738569956616927925f,0.3868552807413435101758f, \
+-0.7602443417718864893118f,-0.0831558796771991737273f,-2.537669265389609574157f, \
+1.426458962036896371828f,-1.0022009849938886549836f,0.6049199483603766580586f, \
+0.1673262559470924115690f,-0.7200301037654435187818f,0.7467393358286636972920f, \
+-0.0106106746626293529240f,0.153545238852170945476f,-0.451676909031678563977f, \
+0.3690242193796505754122f,0.8280032112539841282484f,1.091435550366606888062f, \
+-0.3195494879686350264691f,0.8111338563578870397563f,-0.1273427352363078746134f, \
+2.602467288932953426439f,0.0428813666356926206924f,-0.6294198199336996646380f, \
+0.1402292321928536034115f,0.9366730345322898942939f,-0.3072343945837653356179f, \
+-0.0048993749459086879255f,-0.2278153021086992413569f,-1.0472316778083061716842f, \
+-0.0219504421804297446263f,1.4011599912181635918529f}
+
+
+#define ZnumR {0.9886911348439753055573,0.1642041569575667381287,0.0116174421273171901703, \
+0.8040989059954881668091,0.3511620354838669300079,0.3538791732862591743469, \
+0.0420214342884719371796,0.2273282110691070556641,0.9304475435055792331696, \
+0.0305238692089915275574,0.7304877354763448238373,0.3167633693665266036987, \
+0.0185489063151180744171,0.5621606865897774696350,0.4824476162903010845184, \
+0.6829614602029323577881,0.0907177985645830631256,0.8980422308668494224548, \
+0.3069318956695497035980,0.1443576756864786148071,0.4171506580896675586700, \
+0.4542713882401585578918,0.8413512143306434154510,0.5767526254057884216309, \
+0.3367923968471586704254,0.5443433178588747978210,0.6477606832049787044525, \
+0.7295965161174535751343,0.7869994868524372577667,0.0733593190088868141174, \
+0.1243589068762958049774,0.4778202064335346221924,0.1828124211169779300690, \
+0.7146625733003020286560,0.8759713820181787014008,0.4779631365090608596802, \
+0.2395875495858490467072,0.2876457618549466133118,0.8872682708315551280975, \
+0.6973481327295303344727,0.832738290075212717056,0.5554805574938654899597, \
+0.3424665494821965694427,0.7850530873984098434448,0.4883357142098248004913, \
+0.1615189919248223304749,0.4352665315382182598114,0.7534295134246349334717, \
+0.5983185083605349063873,0.9231166979297995567322,0.0127727664075791835785, \
+0.9389179740101099014282,0.9540623095817863941193,0.2016280265524983406067, \
+0.3971493127755820751190,0.710910387337207794189,0.6920584165491163730621, \
+0.5673230392858386039734,0.2287593870423734188080,0.897409206256270408630, \
+0.2454518754966557025909,0.4779763752594590187073,0.6745393867604434490204, \
+0.3962334729731082916260,0.3951889411546289920807,0.1898779934272170066833, \
+0.8453572890721261501312,0.9405217487365007400513,0.0145239126868546009064, \
+0.6200157897546887397766,0.7661054241470992565155,0.4872819185256958007812, \
+0.6006353446282446384430,0.3781800894066691398621,0.7422776236198842525482, \
+0.197737870737910270691,0.1871016328223049640656,0.6877400139346718788147, \
+0.4667807440273463726044,0.4782230518758296966553,0.7309859753586351871490, \
+0.413841723464429378510,0.7107305652461946010590,0.0503708962351083755493, \
+0.5682807085104286670685,0.9177785338833928108215,0.9419820639304816722870, \
+0.5193521305918693542480,0.0314610176719725131989,0.9562829090282320976257, \
+0.7151440619491040706635,0.4089089538902044296265,0.8228980232961475849152, \
+0.3444903278723359107971,0.1768282498233020305634,0.1319360919296741485596, \
+0.2378812418319284915924,0.6013250267133116722107,0.5298825851641595363617, \
+0.8653587270528078079224,0.8310004216618835926056,0.2960576163604855537415, \
+0.8003590661101043224335,0.7980573028326034545898,0.6196367540396749973297, \
+0.3147845743224024772644,0.7509658797644078731537,0.7205892037600278854370, \
+0.4183134590275585651398,0.7655796119943261146545,0.2847539256326854228973, \
+0.4254573099315166473389,0.3976557464338839054108,0.7410669168457388877869, \
+0.1827877140603959560394,0.8866754267364740371704,0.461710151750594377518, \
+0.657166269607841968536,0.5195506396703422069550,0.6873805895447731018066, \
+0.537373247090727090836,0.3867600364610552787781,0.5998346298001706600189, \
+0.6642422433942556381226,0.369679727125912904739,0.9070320362225174903870, \
+0.7608641679398715496063,0.2374182976782321929932,0.9166998700238764286041, \
+0.6792282825335860252380,0.8834046921692788600922,0.3948080558329820632935, \
+0.9377963733859360218048,0.4795896010473370552063,0.9556053685955703258514, \
+0.7993520200252532958984,0.8689905651845037937164,0.9002061216160655021667, \
+0.5333262397907674312592,0.9881285708397626876831,0.5791879897005856037140, \
+0.2385436454787850379944,0.4406997482292354106903,0.1319975219666957855225, \
+0.1010133684612810611725,0.9943918874487280845642,0.5546766347251832485199, \
+0.3245405498892068862915,0.9300049361772835254669,0.6929845931008458137512, \
+0.0173062118701636791229,0.8690484985709190368652,0.9859181516803801059723, \
+0.2530415309593081474304,0.7195010124705731868744,0.5323055591434240341187, \
+0.8298887838609516620636,0.6184823596850037574768,0.4000358129851520061493, \
+0.2339203245937824249268,0.2312053726054728031158,0.8725623702630400657654, \
+0.2035310319624841213226,0.1399537194520235061646,0.6774410647340118885040, \
+0.553180103190243244171,0.0411705034784972667694,0.6295938044786453247070, \
+0.9216948249377310276031,0.3881068406626582145691,0.5979036255739629268646, \
+0.1036274563521146774292,0.1606920217163860797882,0.1688879737630486488342, \
+0.3298818836919963359833,0.1034589223563671112061,0.9374943883158266544342, \
+0.9821662446483969688416,0.2958797491155564785004,0.7094252500683069229126, \
+0.3625693586654961109161,0.5171768637374043464661,0.1664499524049460887909, \
+0.6871585920453071594238,0.7469687783159315586090,0.6681645018979907035828, \
+0.2545631318353116512299,0.3507453855127096176147,0.2413669903762638568878, \
+0.1504721576347947120667,0.9114818568341434001923,0.6114324070513248443604, \
+0.5747082964517176151276,0.3490518992766737937927,0.1316190264187753200531, \
+0.1806297022849321365356,0.4862137925811111927032,0.1181474821642041206360, \
+0.7101306426338851451874,0.3959603905677795410156}
+
+
+#define ZnumI {0.9444975801743566989899,0.7508988408371806144714,0.7969929589889943599701, \
+0.6391073446720838546753,0.7475423519499599933624,0.8376184562221169471741, \
+0.1913140038959681987762,0.8142067454755306243896,0.5972843528725206851959, \
+0.2314895978197455406189,0.2196294791065156459808,0.8555385116487741470337, \
+0.2425577160902321338654,0.8404364408925175666809,0.5419330331496894359589, \
+0.7332636043429374694824,0.7841481738723814487457,0.463916058652102947235, \
+0.7291909097693860530853,0.9259582068771123886108,0.7357061435468494892120, \
+0.3933822894468903541565,0.9560909713618457317352,0.8286947794258594512939, \
+0.9342691884376108646393,0.9951714789494872093201,0.6527760974131524562836, \
+0.0654199887067079544067,0.8941438538022339344025,0.9945600973442196846008, \
+0.4593119579367339611053,0.1743795126676559448242,0.6978968777693808078766, \
+0.6797442315146327018738,0.3266391619108617305756,0.6353397201746702194214, \
+0.0182057772763073444366,0.7444909522309899330139,0.1077597807161509990692, \
+0.7073562256991863250732,0.3643188090063631534576,0.9882115563377737998962, \
+0.4829082465730607509613,0.0458393190056085586548,0.1468743053264915943146, \
+0.5922066839411854743958,0.5624566259793937206268,0.5676662698388099670410, \
+0.6548293852247297763824,0.1908333105966448783875,0.0113042681477963924408, \
+0.5330905076116323471069,0.5382480402477085590363,0.4563436144962906837463, \
+0.0385018284432590007782,0.3131976760923862457275,0.8906985954381525516510, \
+0.4161457186564803123474,0.0958596668206155300140,0.8116585630923509597778, \
+0.5250105452723801136017,0.2212363081052899360657,0.6292906212620437145233, \
+0.0095289051532745361328,0.5361407645978033542633,0.5845551220700144767761, \
+0.7266371562145650386810,0.6018460672348737716675,0.7448990945704281330109, \
+0.6080113211646676063538,0.0057328860275447368622,0.1947725974023342132568, \
+0.1162833035923540592194,0.2169317295774817466736,0.58644847339019179344, \
+0.0320366565138101577759,0.7461734232492744922638,0.9206809522584080696106, \
+0.4904719027690589427948,0.7194193229079246520996,0.5101354592479765415192, \
+0.118203367106616497040,0.3125731288455426692963,0.9160387720912694931030, \
+0.9680844773538410663605,0.6672369921579957008362,0.5071030999533832073212, \
+0.4611813314259052276611,0.6185570643283426761627,0.9359492277726531028748, \
+0.1334771565161645412445,0.9054294098168611526489,0.0963431638665497303009, \
+0.0557444738224148750305,0.4043928044848144054413,0.9148363023996353149414, \
+0.4072272875346243381500,0.5939936218783259391785,0.8805318637751042842865, \
+0.5168978702276945114136,0.7935891007073223590851,0.3654354223981499671936, \
+0.6554969917051494121552,0.6570710949599742889404,0.3246133835054934024811, \
+0.6009997269138693809509,0.3747325814329087734222,0.0345895085483789443970, \
+0.8048593667335808277130,0.1928026052191853523254,0.4321800353936851024628, \
+0.6863254979252815246582,0.0949394428171217441559,0.2340633375570178031921, \
+0.1884174137376248836517,0.2874494846910238265991,0.4380572517402470111847, \
+0.5726932818070054054260,0.5540334577672183513641,0.6376359798014163970947, \
+0.8861551419831812381744,0.5973066156730055809021,0.7819859883747994899750, \
+0.3015665132552385330200,0.4194210064597427845001,0.9744029538705945014954, \
+0.8126946794800460338593,0.8724794387817382812500,0.8529044934548437595367, \
+0.5554718403145670890808,0.0156182064674794673920,0.8275166135281324386597, \
+0.123992592561990022659,0.1727691153064370155334,0.6710657696239650249481, \
+0.4436169527471065521240,0.0544945956207811832428,0.5425151577219367027283, \
+0.0359929925762116909027,0.7427068594843149185181,0.1810864326544106006622, \
+0.9942650021985173225403,0.3375321957282721996307,0.9349375292658805847168, \
+0.7478643828071653842926,0.2452003313228487968445,0.5380070446990430355072, \
+0.3287191297858953475952,0.45475816028192639351,0.9380933428183197975159, \
+0.2151815737597644329071,0.1763018555939197540283,0.0555533752776682376862, \
+0.1616924917325377464294,0.4014935842715203762054,0.4236538577824831008911, \
+0.3992733699269592761993,0.6722801076248288154602,0.7260224181227385997772, \
+0.8333860486745834350586,0.0086704292334616184235,0.0351518867537379264832, \
+0.7029411061666905879974,0.4494737815111875534058,0.7895763670094311237335, \
+0.4047682592645287513733,0.5102028916589915752411,0.8725254051387310028076, \
+0.9648624868132174015045,0.1623276313766837120056,0.1022121286951005458832, \
+0.3143476936966180801392,0.8267589178867638111115,0.1295115025714039802551, \
+0.0002295556478202342987,0.9005581513047218322754,0.4012833260931074619293, \
+0.5771514577791094779968,0.6042619436047971248627,0.1899941917508840560913, \
+0.6185289998538792133331,0.7475680345669388771057,0.3701861198060214519501, \
+0.3796691931784152984619,0.0825623110868036746979,0.1093314653262495994568, \
+0.6958573660813271999359,0.1640254277735948562622,0.0346795511431992053986, \
+0.0631942944601178169250,0.8599521922878921031952,0.7172338664531707763672, \
+0.6037731417454779148102,0.3179458705708384513855,0.8572954847477376461029, \
+0.7672908585518598556519,0.9375572209246456623077,0.6549387136474251747131, \
+0.4744220296852290630341,0.2306616865098476409912}
+
+
+#define ZdenR {0.0319890365935862064362,0.1597689306363463401794,0.7430339208804070949554, \
+0.9168703723698854446411,0.8414530497975647449493,0.9393842564895749092102, \
+0.8984190779738128185272,0.0725589841604232788086,0.8528734245337545871735, \
+0.6726021049544215202332,0.8592702611349523067474,0.0417808722704648971558, \
+0.7025507246144115924835,0.8849766561761498451233,0.0027594636194407939911, \
+0.8899881355464458465576,0.0313250035978853702545,0.2663000663742423057556, \
+0.6700097895227372646332,0.7313312981277704238892,0.2368951407261192798615, \
+0.884347585029900074005,0.956500727217644453049,0.0312716141343116760254, \
+0.1382475518621504306793,0.1935445470735430717468,0.0239577977918088436127, \
+0.1259902473539113998413,0.1459442754276096820831,0.5573052400723099708557, \
+0.2774765784852206707001,0.4273443259298801422119,0.0320204333402216434479, \
+0.5027936464175581932068,0.2516311011277139186859,0.2821198720484972000122, \
+0.8932410669513046741486,0.4268560605123639106750,0.5493166255764663219452, \
+0.9543316066265106201172,0.4014673479832708835602,0.9718755809590220451355, \
+0.6770767881534993648529,0.6993196289986371994019,0.9348821644671261310577, \
+0.7902984777465462684631,0.1206651250831782817841,0.3983929716050624847412, \
+0.6838250816799700260162,0.9165824344381690025330,0.5045909709297120571136, \
+0.7227700296789407730103,0.3249866780824959278107,0.4653166653588414192200, \
+0.1793997320346534252167,0.2955658659338951110840,0.3577122562564909458160, \
+0.8742639077827334403992,0.0804375349543988704681,0.8205763902515172958374, \
+0.6961649288423359394073,0.4110742891207337379456,0.2018502498976886272430, \
+0.6466094143688678741455,0.6110980794765055179596,0.1624210691079497337341, \
+0.5295668891631066799164,0.7361125815659761428833,0.6149871987290680408478, \
+0.2243082569912075996399,0.7770173805765807628632,0.5068481713533401489258, \
+0.3842710950411856174469,0.3123001037165522575378,0.7673347159288823604584, \
+0.5153647791594266891479,0.3124524806626141071320,0.5104224691167473793030, \
+0.8057914744131267070770,0.4510158710181713104248,0.7878079325892031192780, \
+0.3774860640987753868103,0.8862207210622727870941,0.4092752132564783096313, \
+0.7894572285003960132599,0.1295815678313374519348,0.0751712801866233348846, \
+0.9130991771817207336426,0.8955420576967298984528,0.1174966199323534965515, \
+0.9175473838113248348236,0.6510859187692403793335,0.2972641070373356342316, \
+0.3178046876564621925354,0.2074826951138675212860,0.4011814333498477935791, \
+0.9125325218774378299713,0.0563758080825209617615,0.9681987068615853786469, \
+0.1086824852973222732544,0.1929707420058548450470,0.6830592053011059761047, \
+0.9845975148491561412811,0.587286412715911865234,0.7180327125824987888336, \
+0.4162877826020121574402,0.7323389663361012935638,0.8119378071278333663940, \
+0.1699784700758755207062,0.0763544896617531776428,0.0471521834842860698700, \
+0.2722220681607723236084,0.7834591032005846500397,0.9261105647310614585876, \
+0.3781314617954194545746,0.3550558332353830337524,0.8634610888548195362091, \
+0.3378356518223881721497,0.9687665435485541820526,0.2254242822527885437012, \
+0.4653600030578672885895,0.5050297928974032402039,0.8094572662375867366791, \
+0.1739153172820806503296,0.8308336068876087665558,0.9178772950544953346252, \
+0.7052625860087573528290,0.8998006172478199005127,0.6733843074180185794830, \
+0.8211324727162718772888,0.3026339760981500148773,0.6984135676175355911255, \
+0.9072209936566650867462,0.3731772648170590400696,0.4188832002691924571991, \
+0.0215740650892257690430,0.9132502474822103977203,0.7250007269904017448425, \
+0.5181344612501561641693,0.3798101972788572311401,0.9359269295819103717804, \
+0.7378503987565636634827,0.6775109241716563701630,0.0551267974078655242920, \
+0.7047141403891146183014,0.5583055457100272178650,0.8873056150041520595551, \
+0.5930708739906549453735,0.8739025560207664966583,0.7695222767069935798645, \
+0.0288866939954459667206,0.5428439155220985412598,0.374539139214903116226, \
+0.3374005360528826713562,0.3740871041081845760345,0.4142110701650381088257, \
+0.2722152252681553363800,0.0704229706898331642151,0.9498285944573581218719, \
+0.3199572004377841949463,0.2244639829732477664948,0.8119156723842024803162, \
+0.6117301187478005886078,0.2726398129016160964966,0.1315172505564987659454, \
+0.0834807949140667915344,0.1704506087116897106171,0.6043888628482818603516, \
+0.0741717466153204441071,0.3983510462567210197449,0.4145161225460469722748, \
+0.4785034339874982833862,0.1325146560557186603546,0.9634160557761788368225, \
+0.3733813683502376079559,0.9615952931344509124756,0.1792585910297930240631, \
+0.9886706164106726646423,0.6644756025634706020355,0.6250293198972940444946, \
+0.2414359268732368946075,0.3228348018601536750793,0.2679829034022986888885, \
+0.1444108113646507263184,0.5242025130428373813629,0.6338959587737917900085, \
+0.5731068192981183528900,0.8658696617931127548218,0.6905007590539753437042, \
+0.8533225739374756813049,0.0395693923346698284149,0.8078914172947406768799, \
+0.4903320954181253910065,0.1027000164613127708435,0.3180945566855370998383, \
+0.0674452055245637893677,0.3333888095803558826447,0.8215381549671292304993, \
+0.1736259120516479015350,0.0991585403680801391602}
+
+
+#define ZdenI {0.8987952568568289279938,0.315000849775969982147,0.0550288720987737178802, \
+0.8362890016287565231323,0.3757084463723003864288,0.4403073200955986976624, \
+0.6550271878950297832489,0.1222427897155284881592,0.4285280019976198673248, \
+0.6505553862079977989197,0.304123846348375082016,0.4213901553303003311157, \
+0.4804654982872307300568,0.1147165866568684577942,0.5422563436441123485565, \
+0.2779277041554450988770,0.4092231714166700839996,0.1325531704351305961609, \
+0.7119363336823880672455,0.4915375765413045883179,0.2485320051200687885284, \
+0.5632069641724228858948,0.9166236515156924724579,0.4785935021936893463135, \
+0.9892991916276514530182,0.4862101143226027488708,0.1880847117863595485687, \
+0.7876637298613786697388,0.0741149676032364368439,0.8136677043512463569641, \
+0.2064852821640670299530,0.2380608320236206054688,0.6788688250817358493805, \
+0.0723622469231486320496,0.4169676317833364009857,0.6501883845776319503784, \
+0.3752250974066555500031,0.0745300510898232460022,0.8864620546810328960419, \
+0.6364345215260982513428,0.2677079201675951480865,0.6960594644770026206970, \
+0.7444827682338654994965,0.4213623646646738052368,0.1991455671377480030060, \
+0.4808609904721379280090,0.5516581865958869457245,0.1599473282694816589355, \
+0.1182241612114012241364,0.2901592804118990898132,0.4397455691359937191010, \
+0.7226112987846136093140,0.202900760341435670853,0.7154570007696747779846, \
+0.3668800438754260540009,0.4158036895096302032471,0.8334258184768259525299, \
+0.4739205753430724143982,0.3318080059252679347992,0.6068793702870607376099, \
+0.0087250215001404285431,0.5049378024414181709290,0.8908548909239470958710, \
+0.7220234721899032592773,0.2998904981650412082672,0.986597347073256969452, \
+0.8213773234747350215912,0.5859730672091245651245,0.9345314060337841510773, \
+0.9908401081338524818420,0.2754496405832469463348,0.5722857229411602020264, \
+0.1057338924147188663483,0.9960324605926871299744,0.2675347900949418544769, \
+0.5329049322754144668579,0.0993804302997887134552,0.9757113726809620857239, \
+0.8398896041326224803925,0.9757724180817604064941,0.3335785293020308017731, \
+0.2822513980790972709656,0.7494544475339353084564,0.4592373128980398178101, \
+0.9039488215930759906769,0.0442035431042313575745,0.0199772412888705730438, \
+0.6720122136175632476807,0.7285225228406488895416,0.2960560088977217674255, \
+0.2031218609772622585297,0.1674261111766099929810,0.8859982681460678577423, \
+0.5591668086126446723938,0.6923109102062880992889,0.2207241952419281005859, \
+0.241108322981745004654,0.0926182596012949943542,0.9330528690479695796967, \
+0.7781645338982343673706,0.9508441691286861896515,0.5327433506026864051819, \
+0.8735036174766719341278,0.9666616283357143402100,0.9452914656139910221100, \
+0.1400739839300513267517,0.4990123338066041469574,0.1327268425375223159790, \
+0.9768243846483528614044,0.3724610926583409309387,0.7944017681293189525604, \
+0.8794557079672813415527,0.3314093225635588169098,0.0031166328117251396179, \
+0.9777328907512128353119,0.0703121032565832138062,0.7957679857499897480011, \
+0.5023274505510926246643,0.3493039156310260295868,0.2684593088924884796143, \
+0.9741498515941202640533,0.9015910243615508079529,0.5996336988173425197601, \
+0.5803879369050264358521,0.5484640044160187244415,0.8589230822399258613586, \
+0.9201795118860900402069,0.3725907355546951293945,0.5755203464068472385406, \
+0.1440870938822627067566,0.7605391903780400753021,0.8300342690199613571167, \
+0.4151301835663616657257,0.2624956378713250160217,0.5758876572363078594208, \
+0.8251774720847606658936,0.3828161866404116153717,0.4365336438640952110291, \
+0.4083978212438523769379,0.0662870798259973526001,0.7208817270584404468536, \
+0.6630535097792744636536,0.6463958504609763622284,0.993799932301044464111, \
+0.9815895878709852695465,0.0657920939847826957703,0.8050008206628262996674, \
+0.3934821542352437973022,0.4162000496871769428253,0.2614595824852585792542, \
+0.6719987387768924236298,0.1951352097094058990479,0.4636183516122400760651, \
+0.9582502311095595359802,0.6627009413205087184906,0.4255988318473100662231, \
+0.9324015271849930286407,0.5055249826982617378235,0.7275368678383529186249, \
+0.7848008275032043457031,0.9698746153153479099274,0.6134159592911601066589, \
+0.6561312093399465084076,0.8136037569493055343628,0.4121062462218105792999, \
+0.9611028293147683143616,0.1216154317371547222137,0.1221984885632991790771, \
+0.6084936023689806461334,0.9125110497698187828064,0.3089236742816865444183, \
+0.6477946285158395767212,0.3147067544050514698029,0.0581819834187626838684, \
+0.4708230230025947093964,0.4103578254580497741699,0.7477423720993101596832, \
+0.8020648909732699394226,0.2554281591437757015228,0.7351439502090215682983, \
+0.3968368102796375751495,0.7119807982817292213440,0.1489503826014697551727, \
+0.4107801504433155059814,0.6839885697700083255768,0.8525082385167479515076, \
+0.8774310103617608547211,0.7516427803784608840942,0.0678401333279907703400, \
+0.819040869362652301788,0.1112091499380767345428,0.0332822054624557495117, \
+0.6846691765822470188141,0.6917669652029871940613,0.3158738478086888790131, \
+0.2696444820612668991089,0.1202391539700329303741,0.6283207843080163002014, \
+0.0934506128542125225067,0.8008399121463298797607}
+
+
+#define ZresR {0.4709798307531771199841,0.4447581675093783548647,0.0826177744953439652242, \
+1.205396046252330988224,0.8449132450069640754009,0.8480990000672121720271, \
+4.2502508379938888083416,0.1623619707288032898429,0.8585056587355431867437, \
+3.1388466849496672317343,1.1935750070427169067244,0.4490650157900041850034, \
+2.1895212424748247137529,0.5809227845299023140768,0.56073613731694649243, \
+0.8082982497300479352020,0.51953770817366529133,0.2942574640122151419241, \
+1.15793914287644739147,0.6384564385907467443104,0.3937873213744618183796, \
+1.726027502041532768473,1.036465781498592919618,0.4067614434439539849997, \
+0.9843295698061713672189,0.4579374729893078699305,0.1635265468643208597310, \
+0.2673377630487006051396,0.1276569435289993670324,0.8547995406383729344313, \
+0.5712421096762160255267,0.9496998303500763238816,0.9215219933031827403980, \
+0.4199401716102647008633,0.4080227083004296928515,0.8668387814340499097909, \
+3.8251647868179174949432,0.2798561459758153735500,0.7296876114375909772036, \
+1.1307863949434504569069,0.5227040207487291256783,0.9553281397768573768303, \
+1.6873623484630664304262,0.9189993233013992179892,1.8680916744683291330631, \
+1.0945340632725206742037,0.7172695872712858689013,0.4393272001105434365620, \
+0.6184165841783031414280,1.0145435197072958377618,39.23975822857007500488, \
+0.9125771040829241398384,0.34940616662082130128,1.6886679318634245650088, \
+0.5362354768077970401663,0.5639723020956257659719,0.7780379364916976125954, \
+1.4003319167235890319034,0.8161232260004956939881,0.8393853039143751582074, \
+0.5223720004390856042065,1.110983008842490127321,0.818747739732451629280, \
+1.6747433378619311916680,0.9068157856691638762925,1.60833170305877803941, \
+0.8405688656523967461354,0.8381421282255379079373,1.2701889799735286423754, \
+0.9833168993944022551190,1.0168770046728485834109,1.3016322293958613176557, \
+0.6495107529989713190943,1.7580887380148670917634,0.811791795379815717126, \
+2.965105145965179822554,0.2240951065290753552173,0.9460239544777007125731, \
+1.718999756730102967950,1.2296973389194514325595,0.9389212198179804902409, \
+1.0234593559016138542006,1.4334211779050687329828,0.5243120860846904873753, \
+1.0504722453285446626126,0.1152767460270415350587,0.0707222953082139449421, \
+1.6254463990050433963575,1.2481859371318786422478,0.2175136535151512284791, \
+1.2910615615872327310854,0.4233268477489937620106,0.4807068388081991994198, \
+1.1549507985792513142798,1.6255209179331293611881,0.2983110082899964599079, \
+1.4173997951417944829444,0.1244573410110787203831,1.2637054783806833668791, \
+0.4884514729189023962697,0.6929538011049971579780,1.7943962247548823629728, \
+1.2713004857643259715161,1.032953859535653995394,1.536353015508226782515, \
+0.4675865183692056170628,1.0462587829225313829085,1.1330002369245864013436, \
+1.041962113643855936118,0.2090005572387043097926,1.3318357299932417348032, \
+1.1032964509750491366447,2.0521925485676613121200,1.1375468051162005434, \
+3.6762531852618991479176,0.38561527164112474608,1.8447673546930116739162, \
+0.6707863887229996713302,1.2079499357804526216142,0.3709954307004496576461, \
+1.0365712069816981344417,1.4492727922264592166357,0.9826439254861862870882, \
+0.5459775284828356500810,1.7185510325107367091135,0.9420557659158521612852, \
+1.0363462766733533282348,0.6588978871971996609247,0.7068286721825971508082, \
+0.8283838180602889345039,0.3576856814045822896553,1.1450642560827664073742, \
+1.0082980823395675251675,0.8632613198241941843136,0.5769998142575105681829, \
+0.4586342340414231721901,1.0743331202123964640549,0.8051789964613165206941, \
+1.0185550907048162017077,0.2778337479551458155669,1.8265245559079639203759, \
+0.7989360256028138485007,1.677001282149952920975,1.0503469849633222388263, \
+1.4140028143314165021138,0.5446523200971284950356,1.5495499943879871285191, \
+1.5081843822248834907640,0.9349545726381919275028,0.5723524546761384890203, \
+3.1135949451595807957460,0.6437016396093410142143,0.4050990487720780852676, \
+2.6650358323492571166469,0.7883973138104276578986,0.8659591728844833191658, \
+0.7053024953584487999336,0.4594589542097845535906,1.321677134779998041836, \
+0.9728202285898922552221,1.1265695509413868879989,0.9572634127807582160585, \
+1.0936914939126565204930,1.8223172561248370815434,0.3829461524867902033620, \
+0.9262699522472612745361,0.2636089879247657252748,0.4207872701626157452282, \
+0.3681456734997125557207,1.7105511789891454377255,0.7594157400395155077533, \
+2.311379502472121316714,0.3968136705033024624889,3.7584600137181558565658, \
+1.1328564511602001729784,0.5708065143880640679441,0.4501390996974691804944, \
+1.1049485918178350019048,0.7752771634215889218211,1.0810236263550128121835, \
+0.6478013413788724639275,0.8461714840132198434119,0.6054575539721791521686, \
+0.4140498893464432672573,0.7932920209693627988656,1.1273035377738909179612, \
+1.3778348488206868527328,2.8479811305391047326907,2.8424954426663924245133, \
+6.763933435362530666168,0.0838692695945179311767,0.5829756521091847831784, \
+1.0005053747332974811712,1.1474263302846201550977,0.4156230215198345456784, \
+0.3525774504986416424401,0.2463914637535300489191,1.148273196579604027434, \
+0.2298339614166822753027,1.0666533246089620057262}
+
+
+#define ZresI {0.4591483936701460932817,-0.1155119517747187490864,-0.9310924334988598394247, \
+0.0819694377628846782002,-0.7287233873139877804448,-0.763187199054947806864, \
+-3.762492170029271498777,-0.0437843680454512648725,-0.0905413694792896739383, \
+-2.4916556281940294148569,0.0574678906137320935632,0.1174306870209648884229, \
+-2.7289896643260878050796,-0.6644222901331670039227,0.4940949025393515658955, \
+-0.4608868906485130145789,0.0201573045574557213611,-0.0044069113482103575846, \
+-0.4314389127933472845022,-0.6902743621457737566161,-0.0987167242035817960044, \
+-0.2548733845587528579202,-0.0883482700619244720741,0.2453606820435244861844, \
+0.2068645371508029129348,0.0560010586358397413620,0.1255687367414367316965, \
+1.0556170148952166432110,-0.0508624268720807917732,-0.4973030078350189620018, \
+-0.4494495094173277527361,0.1516315916553793996524,0.1955091614740893934954, \
+-0.2981682129038163431289,0.3238592517142263038643,0.20807310888270824645, \
+1.2754627683321149156370,-0.4652261053750170738397,0.9104699268960899649628, \
+-0.2343654011567836148444,0.0927986797131679780337,-0.4464725902632422083194, \
+-0.2054461228467904798656,0.4830705943398990731552,-0.1540520130863628767148, \
+-1.0359735137341328226057,0.3405388282389278931106,-0.1187156901372778405879, \
+-0.4792316908339305792097,0.1045919568114299369466,-0.2999491114304728145434, \
+0.2514864063426180407212,0.0155478062159446952378,-0.2735523819973274539663, \
+0.8717980527838158355536,0.3364261929110925475328,0.2029142596752248339786, \
+-0.1918158596845628005578,1.1084778145052667230885,-0.0829219255275467775901, \
+-1.081783493192439049579,0.5421774728023454059667,0.5568609105760318200851, \
+1.781941834619454212429,-0.4713958087204941915793,0.2445718496622908411098, \
+0.2491121281579287416452,0.0866971164274075029033,-0.8008320713990698669349, \
+0.6338101504882612813319,0.3519358982630789167700,0.6541663473243117810085, \
+0.0502911402190908199406,1.6252765471306449551747,-0.2809451105359275779882, \
+2.2146130913244452820265,-0.3625483190563351110214,0.1522743119365968789136, \
+-0.0069229021370069455943,0.1905060635979277938734,-0.1989073433264569867873, \
+0.3897022628957311773945,0.4240784338552809340506,-0.4179573564331034440933, \
+-0.1988402057439373205039,-0.0356440742214715750036,-0.0168647095375222925984, \
+-0.1494425771365865129869,-1.3843069738448403604991,0.0967017939849821872578, \
+0.0430607432652793456485,-0.5279083881307125025728,1.0204003735962423604633, \
+1.4362803365510681263828,0.1977169795522846496016,-0.3955062165628914772064, \
+-1.4128711804163340826079,0.0310836769042206473301,-0.3390941241024513219671, \
+0.6074764041812149573119,0.4824589432533142319137,-0.4154346483371720855082, \
+0.0501899399979248012071,0.3607980326544134586086,0.7206975894822468253764, \
+-0.4477518830833556728876,0.1424100376820599533900,0.1298061651063174004594, \
+0.3303537448252925612380,0.4338741987461899873857,0.7684141832850970299518, \
+0.2873031419117236806571,0.3434511048158676582709,-0.3550844910755488470500, \
+1.5595291773563670911784,-0.0457132414448809254459,-0.0267391386135805188273, \
+0.1798214510802064736161,-0.6158028489814036943173,0.0464070042435799218206, \
+0.1034419684949273582353,0.0929020432890966946227,-0.2813776899321288604838, \
+0.6258852119978557393409,-0.4661667563754944287879,-0.0650680862663896020237, \
+0.102444575548549118849,-0.8520157260825024225781,-0.0298211062249834936433, \
+-0.4653174759501645385562,0.8545944890801387971990,-0.2976773769162330829374, \
+0.3093514738325885415904,0.2363494602874922356772,0.1974484855458788490346, \
+0.7777794203036600961809,0.3731580648675694722449,-0.0003201115706582268751, \
+0.6970160995106667867205,-0.1417446622937881539617,0.6735687169118647066313, \
+-0.5504259784814062861358,0.1823325876192195271752,0.0893283232282492400955, \
+-0.7513139628213129084244,-0.0681389663512164817094,-0.0516841536789755529036, \
+-0.315174493545774980774,-0.0096538968382749029695,-0.3974986568742733816784, \
+0.1161709126231448979683,0.0939526577995318662451,0.4474141503322081603322, \
+2.0839818065490263165884,0.481117429953414110777,0.1103349130284882323449, \
+0.7841930577945639413429,0.3179393307402755275426,-0.5800239728555655061015, \
+-0.1108667189012625814426,4.1526144610214457131292,0.6644411493894925024861, \
+-0.5535740575269347818477,-0.0391563103551154784165,0.1619934487203539552613, \
+1.0596515488428814855126,-0.3128122097434946624617,-0.3890589346180040597467, \
+0.2748020770797242051664,1.635738569956616927925,0.3868552807413435101758, \
+-0.7602443417718864893118,-0.0831558796771991737273,-2.537669265389609574157, \
+1.426458962036896371828,-1.0022009849938886549836,0.6049199483603766580586, \
+0.1673262559470924115690,-0.7200301037654435187818,0.7467393358286636972920, \
+-0.0106106746626293529240,0.153545238852170945476,-0.451676909031678563977, \
+0.3690242193796505754122,0.8280032112539841282484,1.091435550366606888062, \
+-0.3195494879686350264691,0.8111338563578870397563,-0.1273427352363078746134, \
+2.602467288932953426439,0.0428813666356926206924,-0.6294198199336996646380, \
+0.1402292321928536034115,0.9366730345322898942939,-0.3072343945837653356179, \
+-0.0048993749459086879255,-0.2278153021086992413569,-1.0472316778083061716842, \
+-0.0219504421804297446263,1.4011599912181635918529}
+
+
+
+
+static void sldivsTest()
+{
+ float M1[]=numF;
+ float M2[]=denF;
+ float Res[]=resF;
+ int i=0;
+
+ for (i=0;i<200;i++){
+ assert( ( fabs(sldivs(M1[i],M2[i])-Res[i]) / fabs(sldivs(M1[i],M2[i])) ) <1e-6);
+ }
+
+}
+
+
+static void dldivsTest()
+{
+ double M1[]=numD;
+ double M2[]=denD;
+ double Res[]=resD;
+ int i=0;
+
+
+ for (i=0;i<200;i++){
+ assert( ( fabs(dldivs(M1[i],M2[i])-Res[i]) / fabs(dldivs(M1[i],M2[i])) ) <1e-16);
+ }
+
+}
+
+
+static void cldivsTest()
+{
+ float DR[]=CdenR;
+ float DI[]=CdenI;
+ float NR[]=CnumR;
+ float NI[]=CnumI;
+ float RR[]=CresR;
+ float RI[]=CresI;
+ int i=0;
+ floatComplex in1,in2,out;
+
+ for (i=0;i<200;i++){
+ in1 = FloatComplex(NR[i],NI[i]);
+ in2 = FloatComplex(DR[i],DI[i]);
+ out = cldivs(in1,in2);
+ assert( fabs(creals(out)-RR[i]) < 1e-6);
+ assert( fabs(cimags(out)-RI[i]) < 1e-6);
+ }
+}
+
+
+static void zldivsTest()
+{
+ double DR[]=ZdenR;
+ double DI[]=ZdenI;
+ double NR[]=ZnumR;
+ double NI[]=ZnumI;
+ double RR[]=ZresR;
+ double RI[]=ZresI;
+ int i=0;
+ doubleComplex in1,in2,out;
+
+ for (i=0;i<200;i++){
+ in1 = DoubleComplex(NR[i],NI[i]);
+ in2 = DoubleComplex(DR[i],DI[i]);
+ out = zldivs(in1,in2);
+ assert( fabs(zreals(out)-RR[i]) < 1e-14);
+ assert( fabs(zimags(out)-RI[i]) < 1e-14);
+ }
+
+}
+
+
+
+static void sldivaTest()
+{
+ float M1[]=numF;
+ float M2[]=denF;
+ float Res[]=resF;
+ float out[200];
+ int i=0;
+
+ sldiva(M1,M2,200,out);
+
+ for (i=0;i<200;i++){
+ assert( ( fabs(out[i]-Res[i]) / fabs(out[i]) ) <1e-6);
+ }
+}
+
+
+static void dldivaTest()
+{
+ double M1[]=numD;
+ double M2[]=denD;
+ double Res[]=resD;
+ double out[200];
+ int i=0;
+
+ dldiva(M1,M2,200,out);
+
+ for (i=0;i<200;i++){
+ assert( ( fabs(out[i]-Res[i]) / fabs(out[i]) ) <1e-16);
+ }
+
+}
+
+
+static void cldivaTest()
+{
+ float DR[]=CdenR;
+ float DI[]=CdenI;
+ float NR[]=CnumR;
+ float NI[]=CnumI;
+ float RR[]=CresR;
+ float RI[]=CresI;
+ int i=0;
+ floatComplex in1[200],in2[200],out[200];
+
+ for (i=0;i<200;i++){
+ in1[i] = FloatComplex(NR[i],NI[i]);
+ in2[i] = FloatComplex(DR[i],DI[i]);
+ }
+
+ cldiva(in1,in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert( fabs(creals(out[i])-RR[i]) < 1e-6);
+ assert( fabs(cimags(out[i])-RI[i]) < 1e-6);
+ }
+}
+
+
+static void zldivaTest()
+{
+ double DR[]=ZdenR;
+ double DI[]=ZdenI;
+ double NR[]=ZnumR;
+ double NI[]=ZnumI;
+ double RR[]=ZresR;
+ double RI[]=ZresI;
+ int i=0;
+ doubleComplex in1[200],in2[200],out[200];
+
+ for (i=0;i<200;i++){
+ in1[i] = DoubleComplex(NR[i],NI[i]);
+ in2[i] = DoubleComplex(DR[i],DI[i]);
+ }
+
+ zldiva(in1,in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert( fabs(zreals(out[i])-RR[i]) < 5e-15);
+ assert( fabs(zimags(out[i])-RI[i]) < 5e-15);
+ }
+}
+
+
+static int testLDivision(void) {
+ printf(">>>SCALAIRES<<<\n");printf("\n");printf("\n");
+ sldivsTest();
+ dldivsTest();
+ cldivsTest();
+ zldivsTest();
+ printf(">>>ARRAYS<<<\n");printf("\n");printf("\n");
+ sldivaTest();
+ dldivaTest();
+ cldivaTest();
+ zldivaTest();
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testLDivision() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/operations/division/testRDivision.c b/2.3-1/src/c/operations/division/testRDivision.c
new file mode 100644
index 00000000..f4dc2228
--- /dev/null
+++ b/2.3-1/src/c/operations/division/testRDivision.c
@@ -0,0 +1,1434 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "division.h"
+
+#define numD {0.8930737324990332126617,0.7964982418343424797058,0.3105977787636220455170,\
+0.8362775426357984542847,0.8366548125632107257843,0.1730499723926186561584,\
+0.6256599049083888530731,0.9524160288274288177490,0.1760999918915331363678,\
+0.3954342594370245933533,0.7430971986614167690277,0.0099669340997934341431,\
+0.8562883255071938037872,0.4123467626050114631653,0.0013701054267585277557,\
+0.478847078979015350342,0.0607692175544798374176,0.4663597894832491874695,\
+0.2553804158233106136322,0.0834822561591863632202,0.4601755072362720966339,\
+0.1318861627951264381409,0.2567202891223132610321,0.1483882851898670196533,\
+0.3102459297515451908112,0.3355649625882506370544,0.9929056516848504543304,\
+0.8480489421635866165161,0.9932069522328674793243,0.0778191434219479560852,\
+0.3293439703993499279022,0.8298407644033432006836,0.0962639846839010715485,\
+0.0743350265547633171082,0.797786401119083166122,0.1787547301501035690308,\
+0.6209519659169018268585,0.0362136671319603919983,0.8750143120996654033661,\
+0.1926648132503032684326,0.4170953244902193546295,0.8075440963730216026306,\
+0.5955101824365556240082,0.9368934128433465957642,0.4351273146457970142365,\
+0.0791484387591481208801,0.8418628755025565624237,0.0468236580491065979004,\
+0.8905187272466719150543,0.8972489042207598686218,0.1566572873853147029877,\
+0.7473085876554250717163,0.9340659757144749164581,0.6858066553249955177307,\
+0.4195983703248202800751,0.5576272048056125640869,0.9217885569669306278229,\
+0.0012825494632124900818,0.2336195311509072780609,0.6507374066859483718872,\
+0.8781858873553574085236,0.7385697560384869575500,0.3637254047207534313202,\
+0.3355757892131805419922,0.2466035136021673679352,0.0068482486531138420105,\
+0.0723190023563802242279,0.6311543267220258712769,0.5204586987383663654327,\
+0.3941111722961068153381,0.6947632352821528911591,0.4012039266526699066162,\
+0.849075383041054010391,0.8391130855306982994080,0.2989268130622804164886,\
+0.0181148592382669448853,0.2118785199709236621857,0.8294900776818394660950,\
+0.7724645170383155345917,0.0249240621924400329590,0.2546977871097624301910,\
+0.1448017610237002372742,0.18158184876665472984,0.7640993203967809677124,\
+0.3819306720979511737823,0.8632451379671692848206,0.7450340534560382366180,\
+0.4418703205883502960205,0.1983149335719645023346,0.8507903432473540306091,\
+0.2671095184050500392914,0.5968565810471773147583,0.8940604371018707752228,\
+0.4514882611110806465149,0.3733475464396178722382,0.4417422562837600708008,\
+0.6670903661288321018219,0.5977000175043940544128,0.3927405043505132198334,\
+0.0467478167265653610229,0.7761418079026043415070,0.0589983472600579261780,\
+0.2301703463308513164520,0.8336486034095287322998,0.3184757144190371036530,\
+0.0484908362850546836853,0.0728295124135911464691,0.3490902576595544815063,\
+0.3259462383575737476349,0.9053150387480854988098,0.2743762019090354442596,\
+0.7859510257840156555176,0.2731794440187513828278,0.0720554692670702934265,\
+0.2605740218423306941986,0.2215009387582540512085,0.5916113932617008686066,\
+0.0858324700966477394104,0.8001660103909671306610,0.0411078669130802154541,\
+0.2831356064416468143463,0.8018129533156752586365,0.4847330353222787380219,\
+0.5162404496222734451294,0.2271098983474075794220,0.5678930180147290229797,\
+0.7612865674309432506561,0.0055178999900817871094,0.2744725891388952732086,\
+0.5693024424836039543152,0.3613458289764821529388,0.7475566845387220382690,\
+0.7227180902846157550812,0.0618810513988137245178,0.4702493171207606792450,\
+0.7143640778958797454834,0.2654818654991686344147,0.7127769580110907554626,\
+0.4804507023654878139496,0.4940285924822092056274,0.0104847666807472705841,\
+0.7673166813328862190247,0.6725491019897162914276,0.6714572831988334655762,\
+0.6595867448486387729645,0.2607971383258700370789,0.6678037284873425960541,\
+0.6759099271148443222046,0.4446999360807240009308,0.9939495110884308815002,\
+0.9958829130046069622040,0.5640800781548023223877,0.9133111224509775638580,\
+0.4908249890431761741638,0.6215975037775933742523,0.7074729967862367630005,\
+0.1573635679669678211212,0.6578523861244320869446,0.7743686395697295665741,\
+0.8528304547071456909180,0.5792482295073568820953,0.3628176329657435417175,\
+0.924179898109287023544,0.5243524145334959030151,0.7886543427594006061554,\
+0.6525151440873742103577,0.2477638195268809795380,0.2364655844867229461670,\
+0.7240293831564486026764,0.8278210600838065147400,0.4287728047929704189301,\
+0.4858888480812311172485,0.5923984018154442310333,0.0949383648112416267395,\
+0.1356843891553580760956,0.9917455688118934631348,0.7212927364744246006012,\
+0.0115638775750994682312,0.0211908905766904354095,0.1524727698415517807007,\
+0.9165380974300205707550,0.4467271203175187110901,0.5868234331719577312469,\
+0.1882771886885166168213,0.4196520284749567508698,0.2730510598048567771912,\
+0.7565603456459939479828,0.9378882069140672683716,0.0586007428355515003204,\
+0.5101847248151898384094,0.5031699347309768199921,0.7783576548099517822266,\
+0.6856653341092169284821,0.1381576983258128166199,0.371037633623927831650,\
+0.6366564910858869552612,0.4961673622019588947296,0.2994064847007393836975,\
+0.2392275254242122173309,0.5618183575570583343506}
+
+#define denD {0.3218038142658770084381,0.1082227518782019615173,0.1685282415710389614105,\
+0.8263800088316202163696,0.4923414406366646289825,0.7863734485581517219543,\
+0.6762332352809607982635,0.0258686169981956481934,0.3594204657711088657379,\
+0.3436427963897585868835,0.2824054299853742122650,0.1450859513133764266968,\
+0.0762176741845905780792,0.5220461571589112281799,0.6713762427680194377899,\
+0.0599394328892230987549,0.7267188713885843753815,0.2224657749757170677185,\
+0.3122289828024804592133,0.4435700643807649612427,0.3983507198281586170197,\
+0.1324583934620022773743,0.8820166247896850109100,0.5455272346735000610352,\
+0.2917219498194754123688,0.7739847479388117790222,0.3354639573954045772552,\
+0.8127403985708951950073,0.4612239454872906208038,0.6898109326139092445374,\
+0.9649041066877543926239,0.8210376314818859100342,0.2802407057024538516998,\
+0.9873316427692770957947,0.294199434574693441391,0.4859610591083765029907,\
+0.2247181800194084644318,0.9585652919486165046692,0.1503968122415244579315,\
+0.0216291621327400207520,0.0688429796136915683746,0.9950710041448473930359,\
+0.7568672685883939266205,0.6163959559053182601929,0.0865804632194340229034,\
+0.5165374809876084327698,0.1916800136677920818329,0.2940570451319217681885,\
+0.3528221980668604373932,0.1317937439307570457458,0.0549608371220529079437,\
+0.929352553561329841614,0.737892795819789171219,0.7509917514398694038391,\
+0.6889848816208541393280,0.8865169286727905273438,0.6891661235131323337555,\
+0.8677108911797404289246,0.7947537912987172603607,0.2496256213635206222534,\
+0.3935408894903957843781,0.7297343472018837928772,0.7888072351925075054169,\
+0.113488640636205673218,0.4145256043411791324615,0.6172473421320319175720,\
+0.7440188056789338588715,0.9038409832864999771118,0.3976829168386757373810,\
+0.9472072543576359748840,0.2581262919120490550995,0.1955799385905265808105,\
+0.9381833248771727085114,0.4226356102153658866882,0.0937463282607495784760,\
+0.9977992679923772811890,0.2042182614095509052277,0.9455819511786103248596,\
+0.9336234177462756633759,0.9743702597916126251221,0.4100225553847849369049,\
+0.5125095760449767112732,0.0948633304797112941742,0.5688196588307619094849,\
+0.7322562676854431629181,0.8108531581237912178040,0.5459008770994842052460,\
+0.5022544711828231811523,0.7634959020651876926422,0.7354982374235987663269,\
+0.0699520572088658809662,0.6130836438387632369995,0.0965849910862743854523,\
+0.5439325878396630287170,0.9187005828134715557098,0.5072866193950176239014,\
+0.1335940570570528507233,0.8688194593414664268494,0.7999687767587602138519,\
+0.9879787657409906387329,0.7131399479694664478302,0.3067426951602101325989,\
+0.5431228461675345897675,0.7330236807465553283691,0.6498145484365522861481,\
+0.8018737239763140678406,0.2859625308774411678314,0.1894423719495534896851,\
+0.7794728656299412250519,0.5433104271069169044495,0.5268451268784701824188,\
+0.1533693112432956695557,0.6041304902173578739166,0.5948378806933760643005,\
+0.8857938847504556179047,0.0043053645640611648560,0.1302204323001205921173,\
+0.9758609728887677192688,0.9183407831005752086639,0.0624175965785980224609,\
+0.9939593323506414890289,0.4122588960453867912292,0.8258536770008504390717,\
+0.0376359503716230392456,0.4675730471499264240265,0.4759115139022469520569,\
+0.4060978214256465435028,0.0392968021333217620850,0.4401316107250750064850,\
+0.3316476037725806236267,0.0877817696891725063324,0.1150833908468484878540,\
+0.9667435702867805957794,0.8103649737313389778137,0.3928376468829810619354,\
+0.7880131229758262634277,0.4798596971668303012848,0.0270724548026919364929,\
+0.6701857983134686946869,0.5602217521518468856812,0.2564360727556049823761,\
+0.2626037681475281715393,0.4447338129393756389618,0.8522944338619709014893,\
+0.2347065494395792484283,0.3277532672509551048279,0.2253599218092858791351,\
+0.3468936551362276077271,0.7743145865388214588165,0.1285835551097989082336,\
+0.1156307714991271495819,0.2054340392351150512695,0.4535544612444937229156,\
+0.6516549764201045036316,0.0710035725496709346771,0.1265540253371000289917,\
+0.4974718545563519001007,0.0879269847646355628967,0.1462626229040324687958,\
+0.715134423226118087769,0.9305738122202455997467,0.3140813848003745079041,\
+0.5769402063451707363129,0.1306138429790735244751,0.0478980806656181812286,\
+0.4500174494460225105286,0.0384718659333884716034,0.483350999653339385986,\
+0.2981918179430067539215,0.7112689120694994926453,0.9268360524438321590424,\
+0.9477838929742574691772,0.1729496796615421772003,0.2750928336754441261292,\
+0.0044281478039920330048,0.0611358620226383209229,0.1950612799264490604401,\
+0.3789803450927138328552,0.2549188635312020778656,0.1764185149222612380981,\
+0.6008180272765457630157,0.3703392641618847846985,0.2908470141701400279999,\
+0.5384815335273742675781,0.8090293356217443943024,0.9260985879227519035339,\
+0.1576966657303273677826,0.9518593531101942062378,0.2709982101805508136749,\
+0.1609848598018288612366,0.8782086591236293315887,0.5091647170484066009521,\
+0.7951062084175646305084,0.8432204117998480796814,0.5806765086017549037933,\
+0.3487791065126657485962,0.9397577759809792041779,0.4363934816792607307434,\
+0.5549766751937568187714,0.9105900451540946960449}
+
+#define resD {2.7752117685005690539413,7.3598039969520661074398,1.8430013620755494319070,\
+1.0119769763285682007137,1.6993385961606277678726,0.2200608028029340801357,\
+0.9252131842476511991435,36.817431287256695782162,0.4899553827958132434794,\
+1.1507130764601400940705,2.6313134230453778528158,0.0686967553341225334318,\
+11.2347737538324832229,0.789866483931406127006,0.0020407415983468750811,\
+7.9888490080310781138451,0.0836213561350959977414,2.0963215107319497221283,\
+0.8179266816651262761440,0.1882053431079252492353,1.155201897048870884888,\
+0.9956799214310265710992,0.2910606012483354931852,0.2720089406327768632998,\
+1.063498752642826117309,0.4335550067128443041398,2.9597983026073131362921,\
+1.0434438150912359599687,2.1534158448419846720867,0.1128122790502419231506,\
+0.3413230062103223549919,1.0107219603388561957047,0.3435046469876847918812,\
+0.0752888121222041739600,2.7117196954249602747211,0.3678375598202789920066,\
+2.7632475746433664554047,0.0377790302195727817347,5.8180376236596496042353,\
+8.9076410851193781326174,6.0586471827734049711012,0.811544194343212454967,\
+0.7868092691433471452811,1.519953860611081841725,5.025698621442897362499,\
+0.1532288394790210228624,4.3920222009250329264773,0.1592332468283501334394,\
+2.5239872437899073531753,6.8079779620811464724284,2.8503439101086094353832,\
+0.8041174307766172368872,1.2658559359923549081373,0.9132013154739780924629,\
+0.6090095465341773817158,0.6290090880051657507011,1.3375418865163728465717,\
+0.0014780838597850658872,0.2939520813976195801054,2.6068534276708055230642,\
+2.2314984562151556346521,1.0121077058665004511084,0.4611080990300331916565,\
+2.9569108179636049982264,0.5949053834541859764329,0.0110948208046701829455,\
+0.0972005032727465967390,0.6983023987549834554756,1.3087278248602665087219,\
+0.4160770206129594250832,2.6915632271929834651303,2.0513552133414121314559,\
+0.9050207571662129968360,1.9854292095810492924102,3.1886775579181523276873,\
+0.0181548131165850216984,1.0375101546183984613236,0.8772270628134669623321,\
+0.8273833992971273421091,0.0255796622915918127339,0.6211799418467155442514,\
+0.2825347423576584082738,1.9141416166649365404595,1.343306808290392950767,\
+0.5215806118057263462973,1.0646134004886980140014,1.364779000566185729326,\
+0.8797737918544228374884,0.2597459043795002364696,1.156753748625715116916,\
+3.8184655185694236223526,0.9735320572410287587317,9.2567222613630804062268,\
+0.8300445150827541196392,0.4063865348776212749193,0.8707942204558346555032,\
+4.9934134857806107277156,0.6879450167442484609381,0.4909447915477189172684,\
+0.0473166209108797850003,1.0883443146222897546238,0.1923382306765068772147,\
+0.4237905806301724420670,1.1372737679640729790975,0.4901024687509485389114,\
+0.0604719107699394076150,0.2546820109268255194479,1.8427253315457512439224,\
+0.4181623924703986028284,1.666294246493322805946,0.5207910027273101594147,\
+5.1245651389620645588252,0.4521861558758028531990,0.1211346345042424582639,\
+0.2941700392476057634994,51.447661507511597278608,4.5431533501455980683659,\
+0.0879556335187422766442,0.8713170808873182959786,0.6585941972519883114146,\
+0.2848563288520584713126,1.944925776028375352666,0.5869478441781880162509,\
+13.71668430117580506078,0.4857206798632796584947,1.1932743827907790201692,\
+1.874638393179189010951,0.1404160056424255120788,0.6236148062319990525992,\
+1.716588439077007199884,4.1164108476734497799043,6.4957825715577062197781,\
+0.7475799296707237306947,0.0763619522125708327653,1.1970576670846393430026,\
+0.9065383012889166591819,0.5532489331081913430666,26.328493784768131291685,\
+0.7168917986244236484339,0.8818447169975360822036,0.0408864734515713840191,\
+2.9219560966155495584928,1.5122508845114404074650,0.7878231471679140174302,\
+2.8102613515624832452033,0.7957117880572708301656,2.9632763586618620088586,\
+1.9484643697199064416026,0.5743142952640584164570,7.7299893461468416333560,\
+8.6126115055119605301570,2.745796559591685781498,2.0136746531937359527831,\
+0.7531976380193472486724,8.7544539162835999235313,5.590284425183250860414,\
+0.316326575113089591973,7.4818030879300874147475,5.2943713451509566425557,\
+1.1925456627578525647948,0.6224634971462769117423,1.1551707631330812020565,\
+1.6018642624403442997760,4.0145240548316589723754,16.46525981416842299154,\
+1.449977428410007318504,6.4401300408945045816722,0.4892212587877478036091,\
+2.4280658944667354859348,1.1638650952354832046609,0.4626199031235405656481,\
+0.5126578449824196193063,3.4252645218814619099135,0.3451139149747912693300,\
+30.641341518238579766376,16.221993703869831193742,3.6977750620030764849844,\
+0.0305131327385077949499,0.0831279815198794347353,0.8642673922787461604500,\
+1.5254836836115013287696,1.206264535110818991726,2.0176360924533236484990,\
+0.3496446525383871128945,0.518710521358847098661,0.2948401642824150514777,\
+4.7975671656860932046129,0.98532225779945714628,0.2162403316114491491629,\
+3.169147244301254939813,0.5729503228003851589278,1.5286951918468318911692,\
+0.8623569113789728568520,0.1638452964283871882145,0.6389747615541933045691,\
+1.8253859798300935413096,0.5279736703258748331535,0.6860929350929130254855,\
+0.4310587023151768448770,0.6169827580994304838669}
+
+#define numF {0.8930737324990332126617f,0.7964982418343424797058f,0.3105977787636220455170f,\
+0.8362775426357984542847f,0.8366548125632107257843f,0.1730499723926186561584f,\
+0.6256599049083888530731f,0.9524160288274288177490f,0.1760999918915331363678f,\
+0.3954342594370245933533f,0.7430971986614167690277f,0.0099669340997934341431f,\
+0.8562883255071938037872f,0.4123467626050114631653f,0.0013701054267585277557f,\
+0.478847078979015350342f,0.0607692175544798374176f,0.4663597894832491874695f,\
+0.2553804158233106136322f,0.0834822561591863632202f,0.4601755072362720966339f,\
+0.1318861627951264381409f,0.2567202891223132610321f,0.1483882851898670196533f,\
+0.3102459297515451908112f,0.3355649625882506370544f,0.9929056516848504543304f,\
+0.8480489421635866165161f,0.9932069522328674793243f,0.0778191434219479560852f,\
+0.3293439703993499279022f,0.8298407644033432006836f,0.0962639846839010715485f,\
+0.0743350265547633171082f,0.797786401119083166122f,0.1787547301501035690308f,\
+0.6209519659169018268585f,0.0362136671319603919983f,0.8750143120996654033661f,\
+0.1926648132503032684326f,0.4170953244902193546295f,0.8075440963730216026306f,\
+0.5955101824365556240082f,0.9368934128433465957642f,0.4351273146457970142365f,\
+0.0791484387591481208801f,0.8418628755025565624237f,0.0468236580491065979004f,\
+0.8905187272466719150543f,0.8972489042207598686218f,0.1566572873853147029877f,\
+0.7473085876554250717163f,0.9340659757144749164581f,0.6858066553249955177307f,\
+0.4195983703248202800751f,0.5576272048056125640869f,0.9217885569669306278229f,\
+0.0012825494632124900818f,0.2336195311509072780609f,0.6507374066859483718872f,\
+0.8781858873553574085236f,0.7385697560384869575500f,0.3637254047207534313202f,\
+0.3355757892131805419922f,0.2466035136021673679352f,0.0068482486531138420105f,\
+0.0723190023563802242279f,0.6311543267220258712769f,0.5204586987383663654327f,\
+0.3941111722961068153381f,0.6947632352821528911591f,0.4012039266526699066162f,\
+0.849075383041054010391f,0.8391130855306982994080f,0.2989268130622804164886f,\
+0.0181148592382669448853f,0.2118785199709236621857f,0.8294900776818394660950f,\
+0.7724645170383155345917f,0.0249240621924400329590f,0.2546977871097624301910f,\
+0.1448017610237002372742f,0.18158184876665472984f,0.7640993203967809677124f,\
+0.3819306720979511737823f,0.8632451379671692848206f,0.7450340534560382366180f,\
+0.4418703205883502960205f,0.1983149335719645023346f,0.8507903432473540306091f,\
+0.2671095184050500392914f,0.5968565810471773147583f,0.8940604371018707752228f,\
+0.4514882611110806465149f,0.3733475464396178722382f,0.4417422562837600708008f,\
+0.6670903661288321018219f,0.5977000175043940544128f,0.3927405043505132198334f,\
+0.0467478167265653610229f,0.7761418079026043415070f,0.0589983472600579261780f,\
+0.2301703463308513164520f,0.8336486034095287322998f,0.3184757144190371036530f,\
+0.0484908362850546836853f,0.0728295124135911464691f,0.3490902576595544815063f,\
+0.3259462383575737476349f,0.9053150387480854988098f,0.2743762019090354442596f,\
+0.7859510257840156555176f,0.2731794440187513828278f,0.0720554692670702934265f,\
+0.2605740218423306941986f,0.2215009387582540512085f,0.5916113932617008686066f,\
+0.0858324700966477394104f,0.8001660103909671306610f,0.0411078669130802154541f,\
+0.2831356064416468143463f,0.8018129533156752586365f,0.4847330353222787380219f,\
+0.5162404496222734451294f,0.2271098983474075794220f,0.5678930180147290229797f,\
+0.7612865674309432506561f,0.0055178999900817871094f,0.2744725891388952732086f,\
+0.5693024424836039543152f,0.3613458289764821529388f,0.7475566845387220382690f,\
+0.7227180902846157550812f,0.0618810513988137245178f,0.4702493171207606792450f,\
+0.7143640778958797454834f,0.2654818654991686344147f,0.7127769580110907554626f,\
+0.4804507023654878139496f,0.4940285924822092056274f,0.0104847666807472705841f,\
+0.7673166813328862190247f,0.6725491019897162914276f,0.6714572831988334655762f,\
+0.6595867448486387729645f,0.2607971383258700370789f,0.6678037284873425960541f,\
+0.6759099271148443222046f,0.4446999360807240009308f,0.9939495110884308815002f,\
+0.9958829130046069622040f,0.5640800781548023223877f,0.9133111224509775638580f,\
+0.4908249890431761741638f,0.6215975037775933742523f,0.7074729967862367630005f,\
+0.1573635679669678211212f,0.6578523861244320869446f,0.7743686395697295665741f,\
+0.8528304547071456909180f,0.5792482295073568820953f,0.3628176329657435417175f,\
+0.924179898109287023544f,0.5243524145334959030151f,0.7886543427594006061554f,\
+0.6525151440873742103577f,0.2477638195268809795380f,0.2364655844867229461670f,\
+0.7240293831564486026764f,0.8278210600838065147400f,0.4287728047929704189301f,\
+0.4858888480812311172485f,0.5923984018154442310333f,0.0949383648112416267395f,\
+0.1356843891553580760956f,0.9917455688118934631348f,0.7212927364744246006012f,\
+0.0115638775750994682312f,0.0211908905766904354095f,0.1524727698415517807007f,\
+0.9165380974300205707550f,0.4467271203175187110901f,0.5868234331719577312469f,\
+0.1882771886885166168213f,0.4196520284749567508698f,0.2730510598048567771912f,\
+0.7565603456459939479828f,0.9378882069140672683716f,0.0586007428355515003204f,\
+0.5101847248151898384094f,0.5031699347309768199921f,0.7783576548099517822266f,\
+0.6856653341092169284821f,0.1381576983258128166199f,0.371037633623927831650f,\
+0.6366564910858869552612f,0.4961673622019588947296f,0.2994064847007393836975f,\
+0.2392275254242122173309f,0.5618183575570583343506f}
+
+#define denF {0.3218038142658770084381f,0.1082227518782019615173f,0.1685282415710389614105f,\
+0.8263800088316202163696f,0.4923414406366646289825f,0.7863734485581517219543f,\
+0.6762332352809607982635f,0.0258686169981956481934f,0.3594204657711088657379f,\
+0.3436427963897585868835f,0.2824054299853742122650f,0.1450859513133764266968f,\
+0.0762176741845905780792f,0.5220461571589112281799f,0.6713762427680194377899f,\
+0.0599394328892230987549f,0.7267188713885843753815f,0.2224657749757170677185f,\
+0.3122289828024804592133f,0.4435700643807649612427f,0.3983507198281586170197f,\
+0.1324583934620022773743f,0.8820166247896850109100f,0.5455272346735000610352f,\
+0.2917219498194754123688f,0.7739847479388117790222f,0.3354639573954045772552f,\
+0.8127403985708951950073f,0.4612239454872906208038f,0.6898109326139092445374f,\
+0.9649041066877543926239f,0.8210376314818859100342f,0.2802407057024538516998f,\
+0.9873316427692770957947f,0.294199434574693441391f,0.4859610591083765029907f,\
+0.2247181800194084644318f,0.9585652919486165046692f,0.1503968122415244579315f,\
+0.0216291621327400207520f,0.0688429796136915683746f,0.9950710041448473930359f,\
+0.7568672685883939266205f,0.6163959559053182601929f,0.0865804632194340229034f,\
+0.5165374809876084327698f,0.1916800136677920818329f,0.2940570451319217681885f,\
+0.3528221980668604373932f,0.1317937439307570457458f,0.0549608371220529079437f,\
+0.929352553561329841614f,0.737892795819789171219f,0.7509917514398694038391f,\
+0.6889848816208541393280f,0.8865169286727905273438f,0.6891661235131323337555f,\
+0.8677108911797404289246f,0.7947537912987172603607f,0.2496256213635206222534f,\
+0.3935408894903957843781f,0.7297343472018837928772f,0.7888072351925075054169f,\
+0.113488640636205673218f,0.4145256043411791324615f,0.6172473421320319175720f,\
+0.7440188056789338588715f,0.9038409832864999771118f,0.3976829168386757373810f,\
+0.9472072543576359748840f,0.2581262919120490550995f,0.1955799385905265808105f,\
+0.9381833248771727085114f,0.4226356102153658866882f,0.0937463282607495784760f,\
+0.9977992679923772811890f,0.2042182614095509052277f,0.9455819511786103248596f,\
+0.9336234177462756633759f,0.9743702597916126251221f,0.4100225553847849369049f,\
+0.5125095760449767112732f,0.0948633304797112941742f,0.5688196588307619094849f,\
+0.7322562676854431629181f,0.8108531581237912178040f,0.5459008770994842052460f,\
+0.5022544711828231811523f,0.7634959020651876926422f,0.7354982374235987663269f,\
+0.0699520572088658809662f,0.6130836438387632369995f,0.0965849910862743854523f,\
+0.5439325878396630287170f,0.9187005828134715557098f,0.5072866193950176239014f,\
+0.1335940570570528507233f,0.8688194593414664268494f,0.7999687767587602138519f,\
+0.9879787657409906387329f,0.7131399479694664478302f,0.3067426951602101325989f,\
+0.5431228461675345897675f,0.7330236807465553283691f,0.6498145484365522861481f,\
+0.8018737239763140678406f,0.2859625308774411678314f,0.1894423719495534896851f,\
+0.7794728656299412250519f,0.5433104271069169044495f,0.5268451268784701824188f,\
+0.1533693112432956695557f,0.6041304902173578739166f,0.5948378806933760643005f,\
+0.8857938847504556179047f,0.0043053645640611648560f,0.1302204323001205921173f,\
+0.9758609728887677192688f,0.9183407831005752086639f,0.0624175965785980224609f,\
+0.9939593323506414890289f,0.4122588960453867912292f,0.8258536770008504390717f,\
+0.0376359503716230392456f,0.4675730471499264240265f,0.4759115139022469520569f,\
+0.4060978214256465435028f,0.0392968021333217620850f,0.4401316107250750064850f,\
+0.3316476037725806236267f,0.0877817696891725063324f,0.1150833908468484878540f,\
+0.9667435702867805957794f,0.8103649737313389778137f,0.3928376468829810619354f,\
+0.7880131229758262634277f,0.4798596971668303012848f,0.0270724548026919364929f,\
+0.6701857983134686946869f,0.5602217521518468856812f,0.2564360727556049823761f,\
+0.2626037681475281715393f,0.4447338129393756389618f,0.8522944338619709014893f,\
+0.2347065494395792484283f,0.3277532672509551048279f,0.2253599218092858791351f,\
+0.3468936551362276077271f,0.7743145865388214588165f,0.1285835551097989082336f,\
+0.1156307714991271495819f,0.2054340392351150512695f,0.4535544612444937229156f,\
+0.6516549764201045036316f,0.0710035725496709346771f,0.1265540253371000289917f,\
+0.4974718545563519001007f,0.0879269847646355628967f,0.1462626229040324687958f,\
+0.715134423226118087769f,0.9305738122202455997467f,0.3140813848003745079041f,\
+0.5769402063451707363129f,0.1306138429790735244751f,0.0478980806656181812286f,\
+0.4500174494460225105286f,0.0384718659333884716034f,0.483350999653339385986f,\
+0.2981918179430067539215f,0.7112689120694994926453f,0.9268360524438321590424f,\
+0.9477838929742574691772f,0.1729496796615421772003f,0.2750928336754441261292f,\
+0.0044281478039920330048f,0.0611358620226383209229f,0.1950612799264490604401f,\
+0.3789803450927138328552f,0.2549188635312020778656f,0.1764185149222612380981f,\
+0.6008180272765457630157f,0.3703392641618847846985f,0.2908470141701400279999f,\
+0.5384815335273742675781f,0.8090293356217443943024f,0.9260985879227519035339f,\
+0.1576966657303273677826f,0.9518593531101942062378f,0.2709982101805508136749f,\
+0.1609848598018288612366f,0.8782086591236293315887f,0.5091647170484066009521f,\
+0.7951062084175646305084f,0.8432204117998480796814f,0.5806765086017549037933f,\
+0.3487791065126657485962f,0.9397577759809792041779f,0.4363934816792607307434f,\
+0.5549766751937568187714f,0.9105900451540946960449f}
+
+#define resF {2.7752117685005690539413f,7.3598039969520661074398f,1.8430013620755494319070f,\
+1.0119769763285682007137f,1.6993385961606277678726f,0.2200608028029340801357f,\
+0.9252131842476511991435f,36.817431287256695782162f,0.4899553827958132434794f,\
+1.1507130764601400940705f,2.6313134230453778528158f,0.0686967553341225334318f,\
+11.2347737538324832229f,0.789866483931406127006f,0.0020407415983468750811f,\
+7.9888490080310781138451f,0.0836213561350959977414f,2.0963215107319497221283f,\
+0.8179266816651262761440f,0.1882053431079252492353f,1.155201897048870884888f,\
+0.9956799214310265710992f,0.2910606012483354931852f,0.2720089406327768632998f,\
+1.063498752642826117309f,0.4335550067128443041398f,2.9597983026073131362921f,\
+1.0434438150912359599687f,2.1534158448419846720867f,0.1128122790502419231506f,\
+0.3413230062103223549919f,1.0107219603388561957047f,0.3435046469876847918812f,\
+0.0752888121222041739600f,2.7117196954249602747211f,0.3678375598202789920066f,\
+2.7632475746433664554047f,0.0377790302195727817347f,5.8180376236596496042353f,\
+8.9076410851193781326174f,6.0586471827734049711012f,0.811544194343212454967f,\
+0.7868092691433471452811f,1.519953860611081841725f,5.025698621442897362499f,\
+0.1532288394790210228624f,4.3920222009250329264773f,0.1592332468283501334394f,\
+2.5239872437899073531753f,6.8079779620811464724284f,2.8503439101086094353832f,\
+0.8041174307766172368872f,1.2658559359923549081373f,0.9132013154739780924629f,\
+0.6090095465341773817158f,0.6290090880051657507011f,1.3375418865163728465717f,\
+0.0014780838597850658872f,0.2939520813976195801054f,2.6068534276708055230642f,\
+2.2314984562151556346521f,1.0121077058665004511084f,0.4611080990300331916565f,\
+2.9569108179636049982264f,0.5949053834541859764329f,0.0110948208046701829455f,\
+0.0972005032727465967390f,0.6983023987549834554756f,1.3087278248602665087219f,\
+0.4160770206129594250832f,2.6915632271929834651303f,2.0513552133414121314559f,\
+0.9050207571662129968360f,1.9854292095810492924102f,3.1886775579181523276873f,\
+0.0181548131165850216984f,1.0375101546183984613236f,0.8772270628134669623321f,\
+0.8273833992971273421091f,0.0255796622915918127339f,0.6211799418467155442514f,\
+0.2825347423576584082738f,1.9141416166649365404595f,1.343306808290392950767f,\
+0.5215806118057263462973f,1.0646134004886980140014f,1.364779000566185729326f,\
+0.8797737918544228374884f,0.2597459043795002364696f,1.156753748625715116916f,\
+3.8184655185694236223526f,0.9735320572410287587317f,9.2567222613630804062268f,\
+0.8300445150827541196392f,0.4063865348776212749193f,0.8707942204558346555032f,\
+4.9934134857806107277156f,0.6879450167442484609381f,0.4909447915477189172684f,\
+0.0473166209108797850003f,1.0883443146222897546238f,0.1923382306765068772147f,\
+0.4237905806301724420670f,1.1372737679640729790975f,0.4901024687509485389114f,\
+0.0604719107699394076150f,0.2546820109268255194479f,1.8427253315457512439224f,\
+0.4181623924703986028284f,1.666294246493322805946f,0.5207910027273101594147f,\
+5.1245651389620645588252f,0.4521861558758028531990f,0.1211346345042424582639f,\
+0.2941700392476057634994f,51.447661507511597278608f,4.5431533501455980683659f,\
+0.0879556335187422766442f,0.8713170808873182959786f,0.6585941972519883114146f,\
+0.2848563288520584713126f,1.944925776028375352666f,0.5869478441781880162509f,\
+13.71668430117580506078f,0.4857206798632796584947f,1.1932743827907790201692f,\
+1.874638393179189010951f,0.1404160056424255120788f,0.6236148062319990525992f,\
+1.716588439077007199884f,4.1164108476734497799043f,6.4957825715577062197781f,\
+0.7475799296707237306947f,0.0763619522125708327653f,1.1970576670846393430026f,\
+0.9065383012889166591819f,0.5532489331081913430666f,26.328493784768131291685f,\
+0.7168917986244236484339f,0.8818447169975360822036f,0.0408864734515713840191f,\
+2.9219560966155495584928f,1.5122508845114404074650f,0.7878231471679140174302f,\
+2.8102613515624832452033f,0.7957117880572708301656f,2.9632763586618620088586f,\
+1.9484643697199064416026f,0.5743142952640584164570f,7.7299893461468416333560f,\
+8.6126115055119605301570f,2.745796559591685781498f,2.0136746531937359527831f,\
+0.7531976380193472486724f,8.7544539162835999235313f,5.590284425183250860414f,\
+0.316326575113089591973f,7.4818030879300874147475f,5.2943713451509566425557f,\
+1.1925456627578525647948f,0.6224634971462769117423f,1.1551707631330812020565f,\
+1.6018642624403442997760f,4.0145240548316589723754f,16.46525981416842299154f,\
+1.449977428410007318504f,6.4401300408945045816722f,0.4892212587877478036091f,\
+2.4280658944667354859348f,1.1638650952354832046609f,0.4626199031235405656481f,\
+0.5126578449824196193063f,3.4252645218814619099135f,0.3451139149747912693300f,\
+30.641341518238579766376f,16.221993703869831193742f,3.6977750620030764849844f,\
+0.0305131327385077949499f,0.0831279815198794347353f,0.8642673922787461604500f,\
+1.5254836836115013287696f,1.206264535110818991726f,2.0176360924533236484990f,\
+0.3496446525383871128945f,0.518710521358847098661f,0.2948401642824150514777f,\
+4.7975671656860932046129f,0.98532225779945714628f,0.2162403316114491491629f,\
+3.169147244301254939813f,0.5729503228003851589278f,1.5286951918468318911692f,\
+0.8623569113789728568520f,0.1638452964283871882145f,0.6389747615541933045691f,\
+1.8253859798300935413096f,0.5279736703258748331535f,0.6860929350929130254855f,\
+0.4310587023151768448770f,0.6169827580994304838669f}
+
+
+#define CnumR {0.3053411715663969516754f,0.8684180630370974540710f,0.3313439427874982357025f,\
+0.2663558926433324813843f,0.7923677195794880390167f,0.5093877995386719703674f,\
+0.5743758822791278362274f,0.5372999198734760284424f,0.4547364399768412113190f,\
+0.8820295548066496849060f,0.6209865263663232326508f,0.3768135774880647659302f,\
+0.9335849327035248279572f,0.9658922599628567695618f,0.1628772872500121593475f,\
+0.0686259418725967407227f,0.842607865575700998306f,0.2468038378283381462097f,\
+0.4037963910959661006927f,0.6407211553305387496948f,0.2586575602181255817413f,\
+0.653272570110857486725f,0.8694754014723002910614f,0.5468569807708263397217f,\
+0.9369539530016481876373f,0.8503103395923972129822f,0.0515501177869737148285f,\
+0.6273802313953638076782f,0.8446539309807121753693f,0.6094277473166584968567f,\
+0.2292158487252891063690f,0.8180890753865242004395f,0.1065300428308546543121f,\
+0.4735511047765612602234f,0.3123670606873929500580f,0.5758922155946493148804f,\
+0.9565085847862064838409f,0.4356113011017441749573f,0.0499714012257754802704f,\
+0.4900149442255496978760f,0.7888170615769922733307f,0.8495545452460646629333f,\
+0.4474280974827706813812f,0.0475020725280046463013f,0.9024910223670303821564f,\
+0.2925249831750988960266f,0.7366607296280562877655f,0.0217677354812622070312f,\
+0.0329902716912329196930f,0.5969691900536417961121f,0.7426943792961537837982f,\
+0.4529420714825391769409f,0.2646744553931057453156f,0.7714125374332070350647f,\
+0.9904671530239284038544f,0.6887647770345211029053f,0.4178880215622484683990f,\
+0.0286574354395270347595f,0.3956260806880891323090f,0.4547755364328622817993f,\
+0.5044045564718544483185f,0.640153449960052967072f,0.8830573889426887035370f,\
+0.4225513264536857604980f,0.3449804955162107944489f,0.8352892948314547538757f,\
+0.7769011496566236019135f,0.2447405960410833358765f,0.9427682091481983661652f,\
+0.4643566990271210670471f,0.3058003033511340618134f,0.5256443209946155548096f,\
+0.7063384638167917728424f,0.6439361488446593284607f,0.0671340576373040676117f,\
+0.6960939336568117141724f,0.1160622579045593738556f,0.1034545050933957099915f,\
+0.7939856606535613536835f,0.2613761276006698608398f,0.9276020326651632785797f,\
+0.4516644952818751335144f,0.2685945495031774044037f,0.3909545373171567916870f,\
+0.5062622581608593463898f,0.0817960808053612709045f,0.7260428736917674541473f,\
+0.3187382929027080535889f,0.3859493941999971866608f,0.9341296991333365440369f,\
+0.5919263935647904872894f,0.5226474497467279434204f,0.6464912262745201587677f,\
+0.8347413809970021247864f,0.8977597537450492382050f,0.1522252932190895080566f,\
+0.2030655764974653720856f,0.6291697425767779350281f,0.2178661315701901912689f,\
+0.6730475183576345443726f,0.6014883895404636859894f,0.8297548526898026466370f,\
+0.4715012605302035808563f,0.1966782845556735992432f,0.413111193571239709854f,\
+0.9953989749774336814880f,0.4339618287049233913422f,0.4649231452494859695435f,\
+0.8230779361911118030548f,0.5624991850927472114563f,0.3004282522015273571014f,\
+0.9571288526058197021484f,0.5056911953724920749664f,0.3458018628880381584167f,\
+0.1462918235920369625092f,0.0892800372093915939331f,0.3806377653963863849640f,\
+0.4279290596023201942444f,0.6277162353508174419403f,0.973642762750387191772f,\
+0.3438236177898943424225f,0.6563267400488257408142f,0.7661834782920777797699f,\
+0.7077049557119607925415f,0.566568237263709306717f,0.4663848998025059700012f,\
+0.1607741150073707103729f,0.6611637100577354431152f,0.4569083326496183872223f,\
+0.2494795573875308036804f,0.4719319283030927181244f,0.7297094669193029403687f,\
+0.8767609228380024433136f,0.9846866214647889137268f,0.5204629446379840373993f,\
+0.0243570692837238311768f,0.7086957977153360843658f,0.3529176330193877220154f,\
+0.845518832560628652573f,0.9650736916810274124146f,0.3660673541016876697540f,\
+0.0522273825481534004211f,0.0653146761469542980194f,0.2474536448717117309570f,\
+0.3402558066882193088531f,0.5330434022471308708191f,0.8843311234377324581146f,\
+0.6511900555342435836792f,0.3787677739746868610382f,0.8720673331990838050842f,\
+0.0907509098760783672333f,0.159093420952558517456f,0.3879462392069399356842f,\
+0.0035981675609946250916f,0.3878797567449510097504f,0.355407038703560829163f,\
+0.6540398863144218921661f,0.0270273657515645027161f,0.4033016446046531200409f,\
+0.5721693113446235656738f,0.4763818108476698398590f,0.8092558486387133598328f,\
+0.7195184617303311824799f,0.7523729261010885238647f,0.8064276059158146381378f,\
+0.6007828647270798683167f,0.2698240275494754314423f,0.4986709095537662506104f,\
+0.9864028231240808963776f,0.8842167323455214500427f,0.9431624910794198513031f,\
+0.2763795573264360427856f,0.1813098085112869739532f,0.173957456834614276886f,\
+0.7417211043648421764374f,0.2395282387733459472656f,0.5980439134873449802399f,\
+0.9858012227341532707214f,0.3350073709152638912201f,0.6487060766667127609253f,\
+0.0853690807707607746124f,0.6952167609706521034241f,0.35416056914255023003f,\
+0.3494555018842220306396f,0.2085028053261339664459f,0.503043591044843196869f,\
+0.2702476507984101772308f,0.2799626830965280532837f,0.3920604703016579151154f,\
+0.2273621382191777229309f,0.2002935144118964672089f,0.4767948314547538757324f,\
+0.2251090579666197299957f,0.1402857257053256034851f,0.4847956537269055843353f,\
+0.5474343802779912948608f,0.5220802356489002704620f,0.5684244418516755104065f,\
+0.3804731811396777629852f,0.0783600397408008575439f}
+
+#define CnumI {0.2332928166724741458893f,0.4757708823308348655701f,0.7120002261362969875336f,\
+0.9474247265607118606567f,0.7988345962949097156525f,0.7477577673271298408508f,\
+0.8264737087301909923553f,0.0092803686857223510742f,0.0395535626448690891266f,\
+0.3952374337241053581238f,0.6943654878996312618256f,0.1225995849817991256714f,\
+0.1789084826596081256866f,0.397133202292025089264f,0.5007088850252330303192f,\
+0.9878442399203777313232f,0.0894288630224764347076f,0.4005126198753714561462f,\
+0.5702695823274552822113f,0.7643308732658624649048f,0.3575342861004173755646f,\
+0.9968325765803456306458f,0.9704508963041007518768f,0.9353430047631263732910f,\
+0.2604631208814680576324f,0.7931062979623675346375f,0.6356834261678159236908f,\
+0.3900403138250112533569f,0.2490606089122593402863f,0.9967422122135758399963f,\
+0.3570490772835910320282f,0.1909146942198276519775f,0.0301763252355158329010f,\
+0.7328046923503279685974f,0.4808894596062600612640f,0.9955431837588548660278f,\
+0.8424210143275558948517f,0.8124466734007000923157f,0.6601486611180007457733f,\
+0.6013877689838409423828f,0.0190328010357916355133f,0.1712641445919871330261f,\
+0.5022003962658345699310f,0.5823920648545026779175f,0.4316027765162289142609f,\
+0.6963225165382027626038f,0.4569095293991267681122f,0.4861248694360256195068f,\
+0.9084099591709673404694f,0.6606048634275794029236f,0.7886779732070863246918f,\
+0.5602205935865640640259f,0.2211156305857002735138f,0.4836320402100682258606f,\
+0.9762249621562659740448f,0.4768665656447410583496f,0.7335670464672148227692f,\
+0.0370046747848391532898f,0.383851700928062200546f,0.0240872111171483993530f,\
+0.3064605225808918476105f,0.2136170351877808570862f,0.5479403878562152385712f,\
+0.2325751073658466339111f,0.5516138956882059574127f,0.9792927717790007591248f,\
+0.9224376133643090724945f,0.9068189132958650588989f,0.0295983594842255115509f,\
+0.6255925344303250312805f,0.4270721334032714366913f,0.0292781740427017211914f,\
+0.4844796755351126194000f,0.4425434647127985954285f,0.6420570178888738155365f,\
+0.0063550006598234176636f,0.7094187592156231403351f,0.530040563084185123444f,\
+0.9930261741392314434052f,0.2249126248061656951904f,0.1368816406466066837311f,\
+0.9666699310764670372009f,0.7699552453123033046722f,0.8880908284336328506470f,\
+0.7472088006325066089630f,0.0547038884833455085754f,0.3238168838433921337128f,\
+0.5991682484745979309082f,0.3892938815988600254059f,0.8600179655477404594421f,\
+0.2847203998826444149017f,0.6622215565294027328491f,0.1071217735297977924347f,\
+0.7656797701492905616760f,0.1452857847325503826141f,0.5683315135538578033447f,\
+0.5659160749055445194244f,0.2579597299918532371521f,0.0530021092854440212250f,\
+0.6360858995467424392700f,0.1716459286399185657501f,0.6635137097910046577454f,\
+0.1553202974610030651f,0.2751293182373046875000f,0.9776422330178320407867f,\
+0.0564875034615397453308f,0.3412302746437489986420f,0.8415098767727613449097f,\
+0.9720732276327908039093f,0.0542932013049721717834f,0.7230724911205470561981f,\
+0.5535727404057979583740f,0.840029454324394464493f,0.7208074321970343589783f,\
+0.7023338205181062221527f,0.4371505621820688247681f,0.7939680931158363819122f,\
+0.2957414807751774787903f,0.9631778332404792308807f,0.7688007876276969909668f,\
+0.5662666731514036655426f,0.9689332796260714530945f,0.2374594449065625667572f,\
+0.9858398344367742538452f,0.1576361586339771747589f,0.4183112764731049537659f,\
+0.1849739397875964641571f,0.5319241471588611602783f,0.4351434097625315189362f,\
+0.3302801763638854026794f,0.2326903692446649074554f,0.6069281268864870071411f,\
+0.1735930186696350574493f,0.6212785588577389717102f,0.7167193251661956310272f,\
+0.2898689359426498413086f,0.6340185203589498996735f,0.5792583702132105827332f,\
+0.1707650884054601192474f,0.0036281775683164596558f,0.2730329786427319049835f,\
+0.6438362905755639076233f,0.1048121522180736064911f,0.7902204506099224090576f,\
+0.6767889470793306827545f,0.0438669761642813682556f,0.1177961206994950771332f,\
+0.3653587792068719863892f,0.3132978049106895923615f,0.011188176460564136505f,\
+0.6880089822225272655487f,0.4210669174790382385254f,0.1968584679998457431793f,\
+0.7892877263948321342468f,0.484988757874816656113f,0.1450885292142629623413f,\
+0.0583454747684299945831f,0.1556424135342240333557f,0.5466435248963534832001f,\
+0.4258432425558567047119f,0.1151064471341669559479f,0.6764787202700972557068f,\
+0.1653598151169717311859f,0.7116795796900987625122f,0.0342189264483749866486f,\
+0.4127054410055279731750f,0.8268453883938491344452f,0.9931747615337371826172f,\
+0.1828565844334661960602f,0.2957681743428111076355f,0.0454563810490071773529f,\
+0.8772313874214887619019f,0.7595148091204464435577f,0.8921756902709603309631f,\
+0.4397588293068110942841f,0.2217209897935390472412f,0.8998456657864153385162f,\
+0.7754481723532080650330f,0.8920745677314698696136f,0.2994244638830423355103f,\
+0.3508522328920662403107f,0.2242373349145054817200f,0.1357615026645362377167f,\
+0.9600193724036216735840f,0.8071923130191862583160f,0.4653684152290225028992f,\
+0.6139782606624066829681f,0.7588641252368688583374f,0.503341518808156251907f,\
+0.1805540407076478004456f,0.953683211933821439743f,0.5213290341198444366455f,\
+0.1553657338954508304596f,0.4955299710854887962341f,0.8986178687773644924164f,\
+0.3114242423325777053833f,0.8460529488511383533478f,0.1703627156093716621399f,\
+0.0450246590189635753632f,0.2734745293855667114258f}
+
+#define CdenR {0.9344860189594328403473f,0.3965423358604311943054f,0.0580797134898602962494f,\
+0.7199462261050939559937f,0.8066167463548481464386f,0.5438358867540955543518f,\
+0.4561666990630328655243f,0.6244952566921710968018f,0.8038424537517130374908f,\
+0.3628496741876006126404f,0.7627365640364587306976f,0.6913486588746309280396f,\
+0.3727206629700958728790f,0.2957791136577725410461f,0.3323325174860656261444f,\
+0.0008663684129714965820f,0.5690847137011587619781f,0.4434423623606562614441f,\
+0.3870133324526250362396f,0.8737571369856595993042f,0.7361443494446575641632f,\
+0.9391816863790154457092f,0.5137898693792521953583f,0.4900970868766307830811f,\
+0.9071956784464418888092f,0.6801867028698325157166f,0.9960459745489060878754f,\
+0.7876451406627893447876f,0.5266905096359550952911f,0.1349894972518086433411f,\
+0.3226937535218894481659f,0.1082053259015083312988f,0.5834150635637342929840f,\
+0.4458816153928637504578f,0.7188132195733487606049f,0.5607859548181295394897f,\
+0.7495280583389103412628f,0.5450029307976365089417f,0.0415263171307742595673f,\
+0.5703056789934635162354f,0.6192081705667078495026f,0.5028523867949843406677f,\
+0.8848553202114999294281f,0.5805964190512895584106f,0.6406608712859451770782f,\
+0.8279706137254834175110f,0.2373156058602035045624f,0.3804531693458557128906f,\
+0.8352346369065344333649f,0.9365444211289286613464f,0.5359928025864064693451f,\
+0.0214806776493787765503f,0.8973965351469814777374f,0.5106831649318337440491f,\
+0.4608543138019740581512f,0.7964869998395442962646f,0.7693171859718859195709f,\
+0.9641169896349310874939f,0.3130452162586152553558f,0.2471739295870065689087f,\
+0.2838150975294411182404f,0.7340669455006718635559f,0.3209185334853827953339f,\
+0.6698743030428886413574f,0.9694103770889341831207f,0.6180369807407259941101f,\
+0.7175498842261731624603f,0.0880861785262823104858f,0.6112378169782459735870f,\
+0.8742778087034821510315f,0.9334865058772265911102f,0.1605538912117481231689f,\
+0.6615693555213510990143f,0.3046726500615477561951f,0.7484806529246270656586f,\
+0.9936459828168153762817f,0.0936959129758179187775f,0.0387948499992489814758f,\
+0.7459573703818023204803f,0.3267800062894821166992f,0.7929186024703085422516f,\
+0.2378873704001307487488f,0.9139666422270238399506f,0.0596442054957151412964f,\
+0.0783993159420788288116f,0.4375141570344567298889f,0.7363699148409068584442f,\
+0.5899660699069499969482f,0.4496206850744783878326f,0.7476333817467093467712f,\
+0.6180109954439103603363f,0.9305777642875909805298f,0.1512054172344505786896f,\
+0.6288425596430897712708f,0.9876213255338370800018f,0.0745284333825111389160f,\
+0.6498450064100325107574f,0.4635455412790179252625f,0.9222096293233335018158f,\
+0.5769933816045522689819f,0.6170878191478550434113f,0.6407913798466324806213f,\
+0.6366859371773898601532f,0.8227301277220249176025f,0.5117365554906427860260f,\
+0.3735350733622908592224f,0.6824699840508401393890f,0.9478313345462083816528f,\
+0.3556050849147140979767f,0.9670701818540692329407f,0.1988339829258620738983f,\
+0.8845246136188507080078f,0.7963846572674810886383f,0.7573833195492625236511f,\
+0.0607297732494771480560f,0.4977692048996686935425f,0.0513694887049496173859f,\
+0.4381805220618844032288f,0.2668503443710505962372f,0.2823995314538478851318f,\
+0.8257917226292192935944f,0.9953354885801672935486f,0.4116757339797914028168f,\
+0.5895656291395425796509f,0.7995157656259834766388f,0.9675096990540623664856f,\
+0.5852533015422523021698f,0.8512204512953758239746f,0.7758419984020292758942f,\
+0.251694406382739543915f,0.5444623767398297786713f,0.7714040484279394149780f,\
+0.0861698617227375507355f,0.1724245036020874977112f,0.4995132829062640666962f,\
+0.9530746228992938995361f,0.3442703173495829105377f,0.0334142660722136497498f,\
+0.3594307354651391506195f,0.9292364586144685745239f,0.1439176839776337146759f,\
+0.8703649686649441719055f,0.7802716153673827648163f,0.0671147257089614868164f,\
+0.7936308481730520725250f,0.6236943779513239860535f,0.8598271175287663936615f,\
+0.3141271602362394332886f,0.6822738503105938434601f,0.4499381193891167640686f,\
+0.8225592742674052715302f,0.2544026188552379608154f,0.3692658455111086368561f,\
+0.3905729195103049278259f,0.5385218537412583827972f,0.4445965085178613662720f,\
+0.9931504395790398120880f,0.1170117231085896492004f,0.2200156333856284618378f,\
+0.4977530911564826965332f,0.0922743999399244785309f,0.9705206854268908500671f,\
+0.1397280483506619930267f,0.8839646633714437484741f,0.4313257415778934955597f,\
+0.0158080393448472023010f,0.714107214938849210739f,0.9165776111185550689697f,\
+0.9274811879731714725494f,0.3270348375663161277771f,0.7957203290425240993500f,\
+0.8926953393965959548950f,0.2699130070395767688751f,0.2249975698068737983704f,\
+0.5183464395813643932343f,0.8567280769348144531250f,0.3264052220620214939117f,\
+0.6842326549813151359558f,0.5385535969398915767670f,0.9557395558804273605347f,\
+0.9308291976340115070343f,0.6287928083911538124084f,0.0175103764049708843231f,\
+0.8553405664861202239990f,0.1452286005951464176178f,0.3354452839121222496033f,\
+0.1867817766033113002777f,0.1848793867975473403931f,0.5902637359686195850372f,\
+0.6630419911816716194153f,0.8418594929389655590057f,0.4806790873408317565918f,\
+0.9377652578987181186676f,0.3268114877864718437195f,0.6071765660308301448822f,\
+0.5960717108100652694702f,0.1591472555883228778839f,0.9363228464499115943909f,\
+0.3163564051501452922821f,0.0469793267548084259033f}
+
+#define CdenI {0.6234297142364084720612f,0.0158713972195982933044f,0.3514461866579949855804f,\
+0.2617919612675905227661f,0.6386203509755432605743f,0.7260363446548581123352f,\
+0.2848846274428069591522f,0.2042924016714096069336f,0.5302058258093893527985f,\
+0.5051602600142359733582f,0.6679541333578526973724f,0.3383778762072324752808f,\
+0.850502327550202608109f,0.3495004484429955482483f,0.3094673226587474346161f,\
+0.4033286087214946746826f,0.8126155347563326358795f,0.9508021911606192588806f,\
+0.8884379244409501552582f,0.9683732483536005020142f,0.5427599516697227954865f,\
+0.4100438626483082771301f,0.2444860520772635936737f,0.2353011742234230041504f,\
+0.2446876191534101963043f,0.7461039228364825248718f,0.1897278516553342342377f,\
+0.0578716751188039779663f,0.8699762006290256977081f,0.9180997842922806739807f,\
+0.1858995254151523113251f,0.6467700041830539703369f,0.3879264430142939090729f,\
+0.5801485544070601463318f,0.730465730186551809311f,0.9288603086024522781372f,\
+0.2488190126605331897736f,0.2872996525838971138000f,0.7954623508267104625702f,\
+0.0294854342937469482422f,0.1342807062901556491852f,0.3713893024250864982605f,\
+0.1628236486576497554779f,0.8465636055916547775269f,0.5885100369341671466827f,\
+0.2055668989196419715881f,0.9999437849037349224091f,0.1852319799363613128662f,\
+0.6241121948696672916412f,0.0762432506307959556580f,0.5192227191291749477386f,\
+0.4217870775610208511353f,0.896293383557349443f,0.3812106968834996223450f,\
+0.0653464826755225658417f,0.1656720861792564392090f,0.5391645305790007114410f,\
+0.37268509995192289352f,0.4740518270991742610931f,0.8882610406726598739624f,\
+0.2579043735750019550323f,0.1640197122469544410706f,0.0461252476088702678680f,\
+0.9871898777782917022705f,0.7705319211818277835846f,0.2188409185037016868591f,\
+0.980386381503194570541f,0.2549843657761812210083f,0.1930382889695465564728f,\
+0.0413558529689908027649f,0.6094057816080749034882f,0.2207349091768264770508f,\
+0.461627910379320383072f,0.2865818915888667106628f,0.2817070647142827510834f,\
+0.3335682284086942672729f,0.3858191226609051227570f,0.0092480191960930824280f,\
+0.2342034350149333477020f,0.4566659145057201385498f,0.4261541278101503849030f,\
+0.270118071697652339935f,0.2986185825429856777191f,0.6405798587948083877563f,\
+0.7902683285064995288849f,0.8184858532622456550598f,0.7856419566087424755096f,\
+0.6445945575833320617676f,0.9410690390504896640778f,0.0695921285077929496765f,\
+0.390568414237350225449f,0.1748862918466329574585f,0.1107735713012516498566f,\
+0.0957134896889328956604f,0.4641722436062991619110f,0.3082291819155216217041f,\
+0.9145566956140100955963f,0.8496730988845229148865f,0.4925655624829232692719f,\
+0.0699981171637773513794f,0.6575574767775833606720f,0.3395233051851391792297f,\
+0.1297910916619002819061f,0.6352185606956481933594f,0.4289954849518835544586f,\
+0.9731501368805766105652f,0.6268993034027516841888f,0.1214132290333509445190f,\
+0.5771463816054165363312f,0.7915496686473488807678f,0.0012599448673427104950f,\
+0.4419956468045711517334f,0.6589268804527819156647f,0.8095262637361884117126f,\
+0.7898579365573823451996f,0.188960576429963111877f,0.4578390833921730518341f,\
+0.1825626911595463752747f,0.7303236457519233226776f,0.0136213228106498718262f,\
+0.1640241914428770542145f,0.4186121178790926933289f,0.2134475349448621273041f,\
+0.4741439130157232284546f,0.3101755906827747821808f,0.3535619759932160377502f,\
+0.8509291852824389934540f,0.8186281509697437286377f,0.5570613131858408451080f,\
+0.1091197049245238304138f,0.0021106950007379055023f,0.672485547140240669250f,\
+0.9224058729596436023712f,0.7518703686073422431946f,0.6034444528631865978241f,\
+0.0988641232252120971680f,0.5468814768828451633453f,0.8722561476752161979675f,\
+0.1444452865980565547943f,0.0008700918406248092651f,0.5909586106427013874054f,\
+0.8022277066484093666077f,0.1338769863359630107880f,0.3343364112079143524170f,\
+0.3563659996725618839264f,0.6903174361214041709900f,0.8999232030473649501801f,\
+0.0998882148414850234985f,0.2259099450893700122833f,0.1528845699504017829895f,\
+0.0680927219800651073456f,0.583055116236209869385f,0.5154030346311628818512f,\
+0.7202821774408221244812f,0.5606091110967099666595f,0.8111803885549306869507f,\
+0.8314522285945713520050f,0.7966960305348038673401f,0.461034744512289762497f,\
+0.6958770193159580230713f,0.0288563207723200321198f,0.3524053459987044334412f,\
+0.5878792009316384792328f,0.8297806400805711746216f,0.3613627743907272815704f,\
+0.0672154026105999946594f,0.1209420370869338512421f,0.4063493311405181884766f,\
+0.9195339330472052097321f,0.1438120333477854728699f,0.1241399361751973628998f,\
+0.2314603012055158615112f,0.9494726066477596759796f,0.5097879925742745399475f,\
+0.3085682312957942485809f,0.2955534420907497406006f,0.1461570323444902896881f,\
+0.6270911982282996177673f,0.8795468038879334926605f,0.8750717584043741226196f,\
+0.5151352104730904102325f,0.6276448490098118782043f,0.8114003571681678295135f,\
+0.6319486722350120544434f,0.8963286154903471469879f,0.993889416567981243134f,\
+0.3937230645678937435150f,0.6798922028392553329468f,0.7436952819116413593292f,\
+0.5029965126886963844299f,0.3928775931708514690399f,0.0862160213291645050049f,\
+0.2545022652484476566315f,0.6535046314820647239685f,0.6724785021506249904633f,\
+0.7779673803597688674927f,0.4419574779458343982697f,0.2931267665699124336243f,\
+0.6166100162081420421600f,0.3211019188165664672852f}
+
+#define CresR {0.3413653404019424408844f,2.2344175132148005324950f,2.1237218282923966405917f,\
+0.7493983164371829097661f,1.0858058063650062319f,0.9963985742180326843354f,\
+1.7198459262738128305870f,0.7815935562983117312896f,0.4168186594367536690342f,\
+1.3434321178932697726793f,0.911981962098162846075f,0.5097276544552961086154f,\
+0.5800104757173830671846f,2.0248874122369300287971f,1.0139055454283181223474f,\
+2.4495834700657685978342f,0.5610503386826638516638f,0.4454135788712355603636f,\
+0.7059129145012976724871f,0.7641626882509497953322f,0.4596127107989450566450f,\
+0.9734226406968744527148f,2.11268587616383074490f,1.6514323746615073851274f,\
+1.0349501481365763755349f,1.1479258233356381957435f,0.1672526298534715016864f,\
+0.8284385303102398401265f,0.6396332288988267888996f,1.1582175459339878464959f,\
+1.0119106336592462724866f,0.4929993395227346142384f,0.1504653403320495019813f,\
+1.1884643322263739317890f,0.5482451200711300209889f,1.0598086350679480904802f,\
+1.4855469245373162934243f,1.2404193423039560073562f,0.830908077323986193896f,\
+0.9112975150307812688411f,1.2230604711603207945814f,1.2559316454335625046212f,\
+0.5901059335842906428127f,0.4940502601806018856401f,1.09963502912498500841f,\
+0.5294677251535109263614f,0.5980886022378320010517f,0.5491452413615373062683f,\
+0.5468552505333802438159f,0.6902652211980354612919f,1.4501824712567750186309f,\
+1.3793191693357471638848f,0.2708476457471271636734f,1.4239995156368174811234f,\
+2.4012806448426622374370f,0.9482606453144745151107f,0.8124230280115316560341f,\
+0.0387678777428724016807f,0.9476082607188328621461f,0.1573979226170175715893f,\
+1.5108565390498809311026f,0.8925265062168799001796f,2.9364002910736672902203f,\
+0.3601917477926637189967f,0.4952564150219139760267f,1.6995003182761128091016f,\
+0.9903629069483265157103f,3.4734281760775056469015f,1.4164126838708399613864f,\
+0.5637181281840756286172f,0.4391155260043713703944f,1.219532688839149781046f,\
+1.0617216756450393866373f,1.8462770813715381201803f,0.3613617707295509462462f,\
+0.6315225765784978628758f,1.8053180173336429437114f,5.605127943643565480158f,\
+1.349328766634644738431f,0.5965910648384068482031f,0.9796604801276147522771f,\
+2.8448353799993113533162f,0.5142295803637606521619f,1.4308076569382042197986f,\
+0.9992318982023101758827f,0.0935304462073433817704f,0.6805157366122644990725f,\
+0.7520873083410550830052f,0.4963212817230637230459f,1.3448718058840083422467f,\
+0.8924911603158937056790f,0.6716532521789868592776f,3.1200451601260867917631f,\
+1.478499310078411177471f,0.8011780670061466880227f,1.8548329051165655112499f,\
+0.5160221223573354665248f,0.5452818070700454766708f,0.2076910047948466175871f,\
+1.2813550735284107151557f,0.5952417563705699743437f,1.4394238409977426762509f,\
+0.7587547408032722096038f,0.3115367449470753391516f,1.414649105208534374256f,\
+0.3927913048603896561950f,0.5939705886124994060893f,0.5944847773666142032312f,\
+1.8577169333514007565356f,0.3758234853000304576121f,1.5339323343426742862761f,\
+1.116121226627056151059f,0.8950120949596866992692f,0.6879113661687396019673f,\
+0.8981211671217470549067f,0.4481619497382871020186f,1.8047253449076017250974f,\
+1.0717620357356092419820f,1.4405626096661212631744f,3.570753936008602469343f,\
+0.5315872522905110697522f,0.9081793608312455079457f,1.7025195075778205566763f,\
+1.5455421881448592191788f,0.6824200177072907713693f,0.5646419316678596977965f,\
+0.2357892895516306430714f,0.7157266029643406524130f,0.6543068980500212905582f,\
+1.3132657769450220008878f,0.8684289380809445679787f,0.9271940107372679262809f,\
+0.2745953215375174782942f,1.0703580135019064023538f,1.1284422825202322648863f,\
+0.0564974518240219866771f,1.4145448514301877107613f,0.6785956954965183252071f,\
+2.1896764463982005821663f,1.038569068022475949675f,0.5785592848631732065812f,\
+0.4010837209168781058999f,0.1037023542206769177731f,2.4148146045420944005855f,\
+0.6754632195277164852243f,0.4190924885379074260605f,0.5592558922536016163818f,\
+2.2185337467253001264567f,0.6373271305375159956341f,1.7451524244169134281179f,\
+0.1783458684376775515990f,0.7066899058816989986909f,0.6087518348022638026151f,\
+0.8489046778360708200850f,0.7955983798271689666493f,0.3222066680434101937358f,\
+0.4160981511553115685942f,0.1961119885990144917631f,1.3057726707544050626097f,\
+0.7938951027372486146660f,5.0581062357227910553092f,0.9603173499915351740697f,\
+0.5415899445306877613149f,0.8541967975696214132597f,1.1376185966292806650557f,\
+7.8101696249237857472281f,0.5579431766320509522572f,0.8561650695644498210157f,\
+0.6349136758399940294595f,2.5988805040218991848633f,1.1658310378368867965548f,\
+0.5288397109111128147063f,0.7903478048871180883239f,1.5908154714750957214875f,\
+1.4294252157474178765995f,0.3296353175046571881701f,2.5544776256060197638931f,\
+1.3475391966885494898776f,0.9072979951101491913334f,0.5252607760481237120231f,\
+0.2298981251807218351146f,0.7321363209598960031244f,0.1766547027080781206987f,\
+0.8007189844811546386438f,0.9142431669921511350196f,0.5737031361189844913540f,\
+1.5387393815389021067830f,1.1435666477442363309081f,0.6719421582664103498317f,\
+0.3487701038639369754968f,0.6294893055431936002009f,1.1494708028880735728450f,\
+0.2654596481228954640841f,0.6924444380609823257444f,1.0947349491748781247225f,\
+0.5919494967059079071348f,2.071145426993481919453f,0.6047707100555417270016f,\
+0.3084136738554988932393f,0.8687822411868708627480f}
+
+#define CresI {0.0219109966763084765273f,1.1103670771212392764937f,-0.5918368028005515091294f,\
+1.0434644203834322340185f,0.1306902089737067562680f,0.0447491408259363745992f,\
+0.7377040968923224140141f,-0.2408236963367206551201f,-0.2257234835603764977474f,\
+-0.7810702459548169995784f,0.1117074633441673542356f,-0.0721502465312851976043f,\
+-0.8435050915509633151501f,-1.049992518033896704566f,0.5625036390262730945366f,\
+-0.1648871384055887456821f,-0.6439978954764388197063f,-0.0518389509872686157776f,\
+-0.1469980941163145371497f,0.0278523259422256141971f,0.1468121211307574225380f,\
+0.6363908130534828844205f,0.8834908864782332615917f,1.1156137069476812495594f,\
+0.0079625965633239471214f,-0.0931592189119542501974f,0.6063484612701055542772f,\
+0.4343290787716013179320f,-0.5836541037614180194026f,-0.493498147842463708024f,\
+0.5235160857005297652123f,-1.1824047439401572656692f,-0.0483243591007337727761f,\
+0.0971532051319880102236f,0.1118721601976361557096f,0.0198453756455191573926f,\
+0.6307818500498493241579f,0.8368296783852913200974f,-0.0194438478253851909638f,\
+1.0073856655194393106001f,-0.2344940357203251779517f,-0.5870021518253613068694f,\
+0.4589645174626295065501f,0.2827215082048526451075f,-0.3364392688062524672254f,\
+0.7095438756660266133025f,-0.5947584050308961645115f,1.0103887681286427557836f,\
+0.6789839686067032920036f,0.6491702747352749991450f,0.0666245648735558637643f,\
+-1.0036186112629006395025f,-0.0241179026237156347856f,-0.1159462687897936661319f,\
+1.7778063339362362160756f,0.4014707664509557516475f,0.3841554190219366171632f,\
+0.0233959826824065887652f,-0.2087996335518906843021f,-0.4681854256220141508038f,\
+-0.2931344646872880987942f,0.0915789695713074419769f,1.2853673263170140028677f,\
+-0.1836203292999986358414f,0.1753674426864008650817f,0.9827446901351732932994f,\
+-0.0675920858186050965699f,0.2400947924345945561075f,-0.3989012373127470145739f,\
+0.6888879992257213036311f,0.1708354561724222675512f,-1.4942974066568359692297f,\
+-0.0085262156571510854669f,-0.2841282722500402813104f,0.7218073734380161532442f,\
+-0.2056072987186062794862f,0.1375998721241953604011f,12.326487466095862544080f,\
+0.9075702833828449556108f,-0.1454500841220424389721f,-0.3538884268045125458535f,\
+0.8332871291164858362777f,0.6744192932692324449206f,-0.4770914152325650969821f,\
+-0.5414909663443179255182f,-0.0499400036212993420071f,-0.2863028848988973251721f,\
+0.1938702385181169662864f,-0.1729873927835128832875f,1.0251354376600190221325f,\
+-0.1033289986643653041165f,0.5853982662761465505241f,-1.5773030876847142778274f,\
+0.9925655191551649991766f,-0.2294389866838563163398f,-0.0453802022491614914790f,\
+0.1446261599175696077602f,-0.4430018940967428986433f,-0.0534578318707713412428f,\
+0.9469665933810936797599f,-0.3561239290952777913901f,0.2727810879337961291746f,\
+0.0892758706129039708577f,0.0938769505403498488727f,0.7245215338127788395894f,\
+-0.8720932299519229546902f,-0.0456129563594555031969f,0.8116755927992604924270f,\
+-0.2814959142726781715638f,-0.2514706362757610502712f,3.626843914392277934411f,\
+0.0681179652920591155452f,0.3142726625144375840470f,0.2164361294071718844201f,\
+-0.1161590262194092948445f,0.7080904530777263339303f,-0.6288889647478734801211f,\
+0.2283938107922484916923f,-0.3331421737315601871998f,2.550154357127961901597f,\
+0.5801384184232324381369f,0.5915175342680475401025f,-0.3059183157675403053055f,\
+0.4291810802949616032720f,-0.0675832494807970945994f,0.2260187774838739449557f,\
+-0.0267679793135976069884f,-0.0634263407834385756212f,0.0910679623605792354368f,\
+0.7428730935396401502402f,0.4240097947794032040569f,-0.0215145937633346648332f,\
+-0.924863020672384794629f,-1.0641870004695814788676f,0.0716038804713836907201f,\
+0.2982802795008926421971f,-0.4054077568543104082011f,-0.3786076564490707396793f,\
+-0.4048717571779728574555f,0.0029320062413039386581f,-0.4785486439953212656206f,\
+0.3700468522583569841444f,0.1165347960482350370137f,-0.2553835663348579809728f,\
+0.5494706041406317575948f,-0.393525875328799512598f,-0.448335747177200538705f,\
+0.4576280623833377525500f,0.2481690713632272726752f,-0.5681196823051390953907f,\
+0.8216610616768642572083f,0.0354860822693221777957f,-0.3165580473134032568616f,\
+0.4553229569175886171095f,0.0723630008683885939114f,-0.261538718222994404083f,\
+-0.2896039198710382289725f,-0.0051211050224549813786f,-0.2516323222313812113526f,\
+-0.2543632926363337265485f,-0.3343493853594096121284f,0.3483261689873968225406f,\
+-1.0951963511455886646218f,0.0032621374671314572365f,-0.8737574633254471256905f,\
+-7.1013395362907472119218f,1.0633789830820299382452f,0.7040022037881576988383f,\
+-0.4323193723566287616222f,-0.2384520130907536727971f,-0.124754648028884251865f,\
+0.8455583392591451419307f,0.0337190814024200535837f,0.3608797400846083802683f,\
+-0.0025395781382081018818f,0.1450823667587325949135f,1.6129974683352308328921f,\
+-0.1016931838187624531633f,0.1746595259838300551181f,-0.1676360531992882596519f,\
+0.2496952334332681877616f,-0.3741840755319263966960f,-0.4326683809083690657182f,\
+0.53078982935711849223f,-0.0844874840225433576535f,-0.3125071808699463327130f,\
+0.0435860282499331078143f,-0.1008112495086985055393f,0.0061350643233381426875f,\
+0.0077278585702864046811f,0.8390604068373108681556f,0.8783952661568765751809f,\
+0.0936328696083998102129f,0.1316181510631146966972f,0.2675204528497137079768f,\
+-0.2501262083422521320664f,-0.4354788291243042452905f,-0.0073818204603310075620f,\
+-0.4588062674027434395541f,-0.1169262242084459640923f}
+
+
+#define ZnumR {0.3053411715663969516754,0.8684180630370974540710,0.3313439427874982357025,\
+0.2663558926433324813843,0.7923677195794880390167,0.5093877995386719703674,\
+0.5743758822791278362274,0.5372999198734760284424,0.4547364399768412113190,\
+0.8820295548066496849060,0.6209865263663232326508,0.3768135774880647659302,\
+0.9335849327035248279572,0.9658922599628567695618,0.1628772872500121593475,\
+0.0686259418725967407227,0.842607865575700998306,0.2468038378283381462097,\
+0.4037963910959661006927,0.6407211553305387496948,0.2586575602181255817413,\
+0.653272570110857486725,0.8694754014723002910614,0.5468569807708263397217,\
+0.9369539530016481876373,0.8503103395923972129822,0.0515501177869737148285,\
+0.6273802313953638076782,0.8446539309807121753693,0.6094277473166584968567,\
+0.2292158487252891063690,0.8180890753865242004395,0.1065300428308546543121,\
+0.4735511047765612602234,0.3123670606873929500580,0.5758922155946493148804,\
+0.9565085847862064838409,0.4356113011017441749573,0.0499714012257754802704,\
+0.4900149442255496978760,0.7888170615769922733307,0.8495545452460646629333,\
+0.4474280974827706813812,0.0475020725280046463013,0.9024910223670303821564,\
+0.2925249831750988960266,0.7366607296280562877655,0.0217677354812622070312,\
+0.0329902716912329196930,0.5969691900536417961121,0.7426943792961537837982,\
+0.4529420714825391769409,0.2646744553931057453156,0.7714125374332070350647,\
+0.9904671530239284038544,0.6887647770345211029053,0.4178880215622484683990,\
+0.0286574354395270347595,0.3956260806880891323090,0.4547755364328622817993,\
+0.5044045564718544483185,0.640153449960052967072,0.8830573889426887035370,\
+0.4225513264536857604980,0.3449804955162107944489,0.8352892948314547538757,\
+0.7769011496566236019135,0.2447405960410833358765,0.9427682091481983661652,\
+0.4643566990271210670471,0.3058003033511340618134,0.5256443209946155548096,\
+0.7063384638167917728424,0.6439361488446593284607,0.0671340576373040676117,\
+0.6960939336568117141724,0.1160622579045593738556,0.1034545050933957099915,\
+0.7939856606535613536835,0.2613761276006698608398,0.9276020326651632785797,\
+0.4516644952818751335144,0.2685945495031774044037,0.3909545373171567916870,\
+0.5062622581608593463898,0.0817960808053612709045,0.7260428736917674541473,\
+0.3187382929027080535889,0.3859493941999971866608,0.9341296991333365440369,\
+0.5919263935647904872894,0.5226474497467279434204,0.6464912262745201587677,\
+0.8347413809970021247864,0.8977597537450492382050,0.1522252932190895080566,\
+0.2030655764974653720856,0.6291697425767779350281,0.2178661315701901912689,\
+0.6730475183576345443726,0.6014883895404636859894,0.8297548526898026466370,\
+0.4715012605302035808563,0.1966782845556735992432,0.413111193571239709854,\
+0.9953989749774336814880,0.4339618287049233913422,0.4649231452494859695435,\
+0.8230779361911118030548,0.5624991850927472114563,0.3004282522015273571014,\
+0.9571288526058197021484,0.5056911953724920749664,0.3458018628880381584167,\
+0.1462918235920369625092,0.0892800372093915939331,0.3806377653963863849640,\
+0.4279290596023201942444,0.6277162353508174419403,0.973642762750387191772,\
+0.3438236177898943424225,0.6563267400488257408142,0.7661834782920777797699,\
+0.7077049557119607925415,0.566568237263709306717,0.4663848998025059700012,\
+0.1607741150073707103729,0.6611637100577354431152,0.4569083326496183872223,\
+0.2494795573875308036804,0.4719319283030927181244,0.7297094669193029403687,\
+0.8767609228380024433136,0.9846866214647889137268,0.5204629446379840373993,\
+0.0243570692837238311768,0.7086957977153360843658,0.3529176330193877220154,\
+0.845518832560628652573,0.9650736916810274124146,0.3660673541016876697540,\
+0.0522273825481534004211,0.0653146761469542980194,0.2474536448717117309570,\
+0.3402558066882193088531,0.5330434022471308708191,0.8843311234377324581146,\
+0.6511900555342435836792,0.3787677739746868610382,0.8720673331990838050842,\
+0.0907509098760783672333,0.159093420952558517456,0.3879462392069399356842,\
+0.0035981675609946250916,0.3878797567449510097504,0.355407038703560829163,\
+0.6540398863144218921661,0.0270273657515645027161,0.4033016446046531200409,\
+0.5721693113446235656738,0.4763818108476698398590,0.8092558486387133598328,\
+0.7195184617303311824799,0.7523729261010885238647,0.8064276059158146381378,\
+0.6007828647270798683167,0.2698240275494754314423,0.4986709095537662506104,\
+0.9864028231240808963776,0.8842167323455214500427,0.9431624910794198513031,\
+0.2763795573264360427856,0.1813098085112869739532,0.173957456834614276886,\
+0.7417211043648421764374,0.2395282387733459472656,0.5980439134873449802399,\
+0.9858012227341532707214,0.3350073709152638912201,0.6487060766667127609253,\
+0.0853690807707607746124,0.6952167609706521034241,0.35416056914255023003,\
+0.3494555018842220306396,0.2085028053261339664459,0.503043591044843196869,\
+0.2702476507984101772308,0.2799626830965280532837,0.3920604703016579151154,\
+0.2273621382191777229309,0.2002935144118964672089,0.4767948314547538757324,\
+0.2251090579666197299957,0.1402857257053256034851,0.4847956537269055843353,\
+0.5474343802779912948608,0.5220802356489002704620,0.5684244418516755104065,\
+0.3804731811396777629852,0.0783600397408008575439}
+
+#define ZnumI {0.2332928166724741458893,0.4757708823308348655701,0.7120002261362969875336,\
+0.9474247265607118606567,0.7988345962949097156525,0.7477577673271298408508,\
+0.8264737087301909923553,0.0092803686857223510742,0.0395535626448690891266,\
+0.3952374337241053581238,0.6943654878996312618256,0.1225995849817991256714,\
+0.1789084826596081256866,0.397133202292025089264,0.5007088850252330303192,\
+0.9878442399203777313232,0.0894288630224764347076,0.4005126198753714561462,\
+0.5702695823274552822113,0.7643308732658624649048,0.3575342861004173755646,\
+0.9968325765803456306458,0.9704508963041007518768,0.9353430047631263732910,\
+0.2604631208814680576324,0.7931062979623675346375,0.6356834261678159236908,\
+0.3900403138250112533569,0.2490606089122593402863,0.9967422122135758399963,\
+0.3570490772835910320282,0.1909146942198276519775,0.0301763252355158329010,\
+0.7328046923503279685974,0.4808894596062600612640,0.9955431837588548660278,\
+0.8424210143275558948517,0.8124466734007000923157,0.6601486611180007457733,\
+0.6013877689838409423828,0.0190328010357916355133,0.1712641445919871330261,\
+0.5022003962658345699310,0.5823920648545026779175,0.4316027765162289142609,\
+0.6963225165382027626038,0.4569095293991267681122,0.4861248694360256195068,\
+0.9084099591709673404694,0.6606048634275794029236,0.7886779732070863246918,\
+0.5602205935865640640259,0.2211156305857002735138,0.4836320402100682258606,\
+0.9762249621562659740448,0.4768665656447410583496,0.7335670464672148227692,\
+0.0370046747848391532898,0.383851700928062200546,0.0240872111171483993530,\
+0.3064605225808918476105,0.2136170351877808570862,0.5479403878562152385712,\
+0.2325751073658466339111,0.5516138956882059574127,0.9792927717790007591248,\
+0.9224376133643090724945,0.9068189132958650588989,0.0295983594842255115509,\
+0.6255925344303250312805,0.4270721334032714366913,0.0292781740427017211914,\
+0.4844796755351126194000,0.4425434647127985954285,0.6420570178888738155365,\
+0.0063550006598234176636,0.7094187592156231403351,0.530040563084185123444,\
+0.9930261741392314434052,0.2249126248061656951904,0.1368816406466066837311,\
+0.9666699310764670372009,0.7699552453123033046722,0.8880908284336328506470,\
+0.7472088006325066089630,0.0547038884833455085754,0.3238168838433921337128,\
+0.5991682484745979309082,0.3892938815988600254059,0.8600179655477404594421,\
+0.2847203998826444149017,0.6622215565294027328491,0.1071217735297977924347,\
+0.7656797701492905616760,0.1452857847325503826141,0.5683315135538578033447,\
+0.5659160749055445194244,0.2579597299918532371521,0.0530021092854440212250,\
+0.6360858995467424392700,0.1716459286399185657501,0.6635137097910046577454,\
+0.1553202974610030651,0.2751293182373046875000,0.9776422330178320407867,\
+0.0564875034615397453308,0.3412302746437489986420,0.8415098767727613449097,\
+0.9720732276327908039093,0.0542932013049721717834,0.7230724911205470561981,\
+0.5535727404057979583740,0.840029454324394464493,0.7208074321970343589783,\
+0.7023338205181062221527,0.4371505621820688247681,0.7939680931158363819122,\
+0.2957414807751774787903,0.9631778332404792308807,0.7688007876276969909668,\
+0.5662666731514036655426,0.9689332796260714530945,0.2374594449065625667572,\
+0.9858398344367742538452,0.1576361586339771747589,0.4183112764731049537659,\
+0.1849739397875964641571,0.5319241471588611602783,0.4351434097625315189362,\
+0.3302801763638854026794,0.2326903692446649074554,0.6069281268864870071411,\
+0.1735930186696350574493,0.6212785588577389717102,0.7167193251661956310272,\
+0.2898689359426498413086,0.6340185203589498996735,0.5792583702132105827332,\
+0.1707650884054601192474,0.0036281775683164596558,0.2730329786427319049835,\
+0.6438362905755639076233,0.1048121522180736064911,0.7902204506099224090576,\
+0.6767889470793306827545,0.0438669761642813682556,0.1177961206994950771332,\
+0.3653587792068719863892,0.3132978049106895923615,0.011188176460564136505,\
+0.6880089822225272655487,0.4210669174790382385254,0.1968584679998457431793,\
+0.7892877263948321342468,0.484988757874816656113,0.1450885292142629623413,\
+0.0583454747684299945831,0.1556424135342240333557,0.5466435248963534832001,\
+0.4258432425558567047119,0.1151064471341669559479,0.6764787202700972557068,\
+0.1653598151169717311859,0.7116795796900987625122,0.0342189264483749866486,\
+0.4127054410055279731750,0.8268453883938491344452,0.9931747615337371826172,\
+0.1828565844334661960602,0.2957681743428111076355,0.0454563810490071773529,\
+0.8772313874214887619019,0.7595148091204464435577,0.8921756902709603309631,\
+0.4397588293068110942841,0.2217209897935390472412,0.8998456657864153385162,\
+0.7754481723532080650330,0.8920745677314698696136,0.2994244638830423355103,\
+0.3508522328920662403107,0.2242373349145054817200,0.1357615026645362377167,\
+0.9600193724036216735840,0.8071923130191862583160,0.4653684152290225028992,\
+0.6139782606624066829681,0.7588641252368688583374,0.503341518808156251907,\
+0.1805540407076478004456,0.953683211933821439743,0.5213290341198444366455,\
+0.1553657338954508304596,0.4955299710854887962341,0.8986178687773644924164,\
+0.3114242423325777053833,0.8460529488511383533478,0.1703627156093716621399,\
+0.0450246590189635753632,0.2734745293855667114258}
+
+#define ZdenR {0.9344860189594328403473,0.3965423358604311943054,0.0580797134898602962494,\
+0.7199462261050939559937,0.8066167463548481464386,0.5438358867540955543518,\
+0.4561666990630328655243,0.6244952566921710968018,0.8038424537517130374908,\
+0.3628496741876006126404,0.7627365640364587306976,0.6913486588746309280396,\
+0.3727206629700958728790,0.2957791136577725410461,0.3323325174860656261444,\
+0.0008663684129714965820,0.5690847137011587619781,0.4434423623606562614441,\
+0.3870133324526250362396,0.8737571369856595993042,0.7361443494446575641632,\
+0.9391816863790154457092,0.5137898693792521953583,0.4900970868766307830811,\
+0.9071956784464418888092,0.6801867028698325157166,0.9960459745489060878754,\
+0.7876451406627893447876,0.5266905096359550952911,0.1349894972518086433411,\
+0.3226937535218894481659,0.1082053259015083312988,0.5834150635637342929840,\
+0.4458816153928637504578,0.7188132195733487606049,0.5607859548181295394897,\
+0.7495280583389103412628,0.5450029307976365089417,0.0415263171307742595673,\
+0.5703056789934635162354,0.6192081705667078495026,0.5028523867949843406677,\
+0.8848553202114999294281,0.5805964190512895584106,0.6406608712859451770782,\
+0.8279706137254834175110,0.2373156058602035045624,0.3804531693458557128906,\
+0.8352346369065344333649,0.9365444211289286613464,0.5359928025864064693451,\
+0.0214806776493787765503,0.8973965351469814777374,0.5106831649318337440491,\
+0.4608543138019740581512,0.7964869998395442962646,0.7693171859718859195709,\
+0.9641169896349310874939,0.3130452162586152553558,0.2471739295870065689087,\
+0.2838150975294411182404,0.7340669455006718635559,0.3209185334853827953339,\
+0.6698743030428886413574,0.9694103770889341831207,0.6180369807407259941101,\
+0.7175498842261731624603,0.0880861785262823104858,0.6112378169782459735870,\
+0.8742778087034821510315,0.9334865058772265911102,0.1605538912117481231689,\
+0.6615693555213510990143,0.3046726500615477561951,0.7484806529246270656586,\
+0.9936459828168153762817,0.0936959129758179187775,0.0387948499992489814758,\
+0.7459573703818023204803,0.3267800062894821166992,0.7929186024703085422516,\
+0.2378873704001307487488,0.9139666422270238399506,0.0596442054957151412964,\
+0.0783993159420788288116,0.4375141570344567298889,0.7363699148409068584442,\
+0.5899660699069499969482,0.4496206850744783878326,0.7476333817467093467712,\
+0.6180109954439103603363,0.9305777642875909805298,0.1512054172344505786896,\
+0.6288425596430897712708,0.9876213255338370800018,0.0745284333825111389160,\
+0.6498450064100325107574,0.4635455412790179252625,0.9222096293233335018158,\
+0.5769933816045522689819,0.6170878191478550434113,0.6407913798466324806213,\
+0.6366859371773898601532,0.8227301277220249176025,0.5117365554906427860260,\
+0.3735350733622908592224,0.6824699840508401393890,0.9478313345462083816528,\
+0.3556050849147140979767,0.9670701818540692329407,0.1988339829258620738983,\
+0.8845246136188507080078,0.7963846572674810886383,0.7573833195492625236511,\
+0.0607297732494771480560,0.4977692048996686935425,0.0513694887049496173859,\
+0.4381805220618844032288,0.2668503443710505962372,0.2823995314538478851318,\
+0.8257917226292192935944,0.9953354885801672935486,0.4116757339797914028168,\
+0.5895656291395425796509,0.7995157656259834766388,0.9675096990540623664856,\
+0.5852533015422523021698,0.8512204512953758239746,0.7758419984020292758942,\
+0.251694406382739543915,0.5444623767398297786713,0.7714040484279394149780,\
+0.0861698617227375507355,0.1724245036020874977112,0.4995132829062640666962,\
+0.9530746228992938995361,0.3442703173495829105377,0.0334142660722136497498,\
+0.3594307354651391506195,0.9292364586144685745239,0.1439176839776337146759,\
+0.8703649686649441719055,0.7802716153673827648163,0.0671147257089614868164,\
+0.7936308481730520725250,0.6236943779513239860535,0.8598271175287663936615,\
+0.3141271602362394332886,0.6822738503105938434601,0.4499381193891167640686,\
+0.8225592742674052715302,0.2544026188552379608154,0.3692658455111086368561,\
+0.3905729195103049278259,0.5385218537412583827972,0.4445965085178613662720,\
+0.9931504395790398120880,0.1170117231085896492004,0.2200156333856284618378,\
+0.4977530911564826965332,0.0922743999399244785309,0.9705206854268908500671,\
+0.1397280483506619930267,0.8839646633714437484741,0.4313257415778934955597,\
+0.0158080393448472023010,0.714107214938849210739,0.9165776111185550689697,\
+0.9274811879731714725494,0.3270348375663161277771,0.7957203290425240993500,\
+0.8926953393965959548950,0.2699130070395767688751,0.2249975698068737983704,\
+0.5183464395813643932343,0.8567280769348144531250,0.3264052220620214939117,\
+0.6842326549813151359558,0.5385535969398915767670,0.9557395558804273605347,\
+0.9308291976340115070343,0.6287928083911538124084,0.0175103764049708843231,\
+0.8553405664861202239990,0.1452286005951464176178,0.3354452839121222496033,\
+0.1867817766033113002777,0.1848793867975473403931,0.5902637359686195850372,\
+0.6630419911816716194153,0.8418594929389655590057,0.4806790873408317565918,\
+0.9377652578987181186676,0.3268114877864718437195,0.6071765660308301448822,\
+0.5960717108100652694702,0.1591472555883228778839,0.9363228464499115943909,\
+0.3163564051501452922821,0.0469793267548084259033}
+
+#define ZdenI {0.6234297142364084720612,0.0158713972195982933044,0.3514461866579949855804,\
+0.2617919612675905227661,0.6386203509755432605743,0.7260363446548581123352,\
+0.2848846274428069591522,0.2042924016714096069336,0.5302058258093893527985,\
+0.5051602600142359733582,0.6679541333578526973724,0.3383778762072324752808,\
+0.850502327550202608109,0.3495004484429955482483,0.3094673226587474346161,\
+0.4033286087214946746826,0.8126155347563326358795,0.9508021911606192588806,\
+0.8884379244409501552582,0.9683732483536005020142,0.5427599516697227954865,\
+0.4100438626483082771301,0.2444860520772635936737,0.2353011742234230041504,\
+0.2446876191534101963043,0.7461039228364825248718,0.1897278516553342342377,\
+0.0578716751188039779663,0.8699762006290256977081,0.9180997842922806739807,\
+0.1858995254151523113251,0.6467700041830539703369,0.3879264430142939090729,\
+0.5801485544070601463318,0.730465730186551809311,0.9288603086024522781372,\
+0.2488190126605331897736,0.2872996525838971138000,0.7954623508267104625702,\
+0.0294854342937469482422,0.1342807062901556491852,0.3713893024250864982605,\
+0.1628236486576497554779,0.8465636055916547775269,0.5885100369341671466827,\
+0.2055668989196419715881,0.9999437849037349224091,0.1852319799363613128662,\
+0.6241121948696672916412,0.0762432506307959556580,0.5192227191291749477386,\
+0.4217870775610208511353,0.896293383557349443,0.3812106968834996223450,\
+0.0653464826755225658417,0.1656720861792564392090,0.5391645305790007114410,\
+0.37268509995192289352,0.4740518270991742610931,0.8882610406726598739624,\
+0.2579043735750019550323,0.1640197122469544410706,0.0461252476088702678680,\
+0.9871898777782917022705,0.7705319211818277835846,0.2188409185037016868591,\
+0.980386381503194570541,0.2549843657761812210083,0.1930382889695465564728,\
+0.0413558529689908027649,0.6094057816080749034882,0.2207349091768264770508,\
+0.461627910379320383072,0.2865818915888667106628,0.2817070647142827510834,\
+0.3335682284086942672729,0.3858191226609051227570,0.0092480191960930824280,\
+0.2342034350149333477020,0.4566659145057201385498,0.4261541278101503849030,\
+0.270118071697652339935,0.2986185825429856777191,0.6405798587948083877563,\
+0.7902683285064995288849,0.8184858532622456550598,0.7856419566087424755096,\
+0.6445945575833320617676,0.9410690390504896640778,0.0695921285077929496765,\
+0.390568414237350225449,0.1748862918466329574585,0.1107735713012516498566,\
+0.0957134896889328956604,0.4641722436062991619110,0.3082291819155216217041,\
+0.9145566956140100955963,0.8496730988845229148865,0.4925655624829232692719,\
+0.0699981171637773513794,0.6575574767775833606720,0.3395233051851391792297,\
+0.1297910916619002819061,0.6352185606956481933594,0.4289954849518835544586,\
+0.9731501368805766105652,0.6268993034027516841888,0.1214132290333509445190,\
+0.5771463816054165363312,0.7915496686473488807678,0.0012599448673427104950,\
+0.4419956468045711517334,0.6589268804527819156647,0.8095262637361884117126,\
+0.7898579365573823451996,0.188960576429963111877,0.4578390833921730518341,\
+0.1825626911595463752747,0.7303236457519233226776,0.0136213228106498718262,\
+0.1640241914428770542145,0.4186121178790926933289,0.2134475349448621273041,\
+0.4741439130157232284546,0.3101755906827747821808,0.3535619759932160377502,\
+0.8509291852824389934540,0.8186281509697437286377,0.5570613131858408451080,\
+0.1091197049245238304138,0.0021106950007379055023,0.672485547140240669250,\
+0.9224058729596436023712,0.7518703686073422431946,0.6034444528631865978241,\
+0.0988641232252120971680,0.5468814768828451633453,0.8722561476752161979675,\
+0.1444452865980565547943,0.0008700918406248092651,0.5909586106427013874054,\
+0.8022277066484093666077,0.1338769863359630107880,0.3343364112079143524170,\
+0.3563659996725618839264,0.6903174361214041709900,0.8999232030473649501801,\
+0.0998882148414850234985,0.2259099450893700122833,0.1528845699504017829895,\
+0.0680927219800651073456,0.583055116236209869385,0.5154030346311628818512,\
+0.7202821774408221244812,0.5606091110967099666595,0.8111803885549306869507,\
+0.8314522285945713520050,0.7966960305348038673401,0.461034744512289762497,\
+0.6958770193159580230713,0.0288563207723200321198,0.3524053459987044334412,\
+0.5878792009316384792328,0.8297806400805711746216,0.3613627743907272815704,\
+0.0672154026105999946594,0.1209420370869338512421,0.4063493311405181884766,\
+0.9195339330472052097321,0.1438120333477854728699,0.1241399361751973628998,\
+0.2314603012055158615112,0.9494726066477596759796,0.5097879925742745399475,\
+0.3085682312957942485809,0.2955534420907497406006,0.1461570323444902896881,\
+0.6270911982282996177673,0.8795468038879334926605,0.8750717584043741226196,\
+0.5151352104730904102325,0.6276448490098118782043,0.8114003571681678295135,\
+0.6319486722350120544434,0.8963286154903471469879,0.993889416567981243134,\
+0.3937230645678937435150,0.6798922028392553329468,0.7436952819116413593292,\
+0.5029965126886963844299,0.3928775931708514690399,0.0862160213291645050049,\
+0.2545022652484476566315,0.6535046314820647239685,0.6724785021506249904633,\
+0.7779673803597688674927,0.4419574779458343982697,0.2931267665699124336243,\
+0.6166100162081420421600,0.3211019188165664672852}
+
+#define ZresR {0.3413653404019424408844,2.2344175132148005324950,2.1237218282923966405917,\
+0.7493983164371829097661,1.0858058063650062319,0.9963985742180326843354,\
+1.7198459262738128305870,0.7815935562983117312896,0.4168186594367536690342,\
+1.3434321178932697726793,0.911981962098162846075,0.5097276544552961086154,\
+0.5800104757173830671846,2.0248874122369300287971,1.0139055454283181223474,\
+2.4495834700657685978342,0.5610503386826638516638,0.4454135788712355603636,\
+0.7059129145012976724871,0.7641626882509497953322,0.4596127107989450566450,\
+0.9734226406968744527148,2.11268587616383074490,1.6514323746615073851274,\
+1.0349501481365763755349,1.1479258233356381957435,0.1672526298534715016864,\
+0.8284385303102398401265,0.6396332288988267888996,1.1582175459339878464959,\
+1.0119106336592462724866,0.4929993395227346142384,0.1504653403320495019813,\
+1.1884643322263739317890,0.5482451200711300209889,1.0598086350679480904802,\
+1.4855469245373162934243,1.2404193423039560073562,0.830908077323986193896,\
+0.9112975150307812688411,1.2230604711603207945814,1.2559316454335625046212,\
+0.5901059335842906428127,0.4940502601806018856401,1.09963502912498500841,\
+0.5294677251535109263614,0.5980886022378320010517,0.5491452413615373062683,\
+0.5468552505333802438159,0.6902652211980354612919,1.4501824712567750186309,\
+1.3793191693357471638848,0.2708476457471271636734,1.4239995156368174811234,\
+2.4012806448426622374370,0.9482606453144745151107,0.8124230280115316560341,\
+0.0387678777428724016807,0.9476082607188328621461,0.1573979226170175715893,\
+1.5108565390498809311026,0.8925265062168799001796,2.9364002910736672902203,\
+0.3601917477926637189967,0.4952564150219139760267,1.6995003182761128091016,\
+0.9903629069483265157103,3.4734281760775056469015,1.4164126838708399613864,\
+0.5637181281840756286172,0.4391155260043713703944,1.219532688839149781046,\
+1.0617216756450393866373,1.8462770813715381201803,0.3613617707295509462462,\
+0.6315225765784978628758,1.8053180173336429437114,5.605127943643565480158,\
+1.349328766634644738431,0.5965910648384068482031,0.9796604801276147522771,\
+2.8448353799993113533162,0.5142295803637606521619,1.4308076569382042197986,\
+0.9992318982023101758827,0.0935304462073433817704,0.6805157366122644990725,\
+0.7520873083410550830052,0.4963212817230637230459,1.3448718058840083422467,\
+0.8924911603158937056790,0.6716532521789868592776,3.1200451601260867917631,\
+1.478499310078411177471,0.8011780670061466880227,1.8548329051165655112499,\
+0.5160221223573354665248,0.5452818070700454766708,0.2076910047948466175871,\
+1.2813550735284107151557,0.5952417563705699743437,1.4394238409977426762509,\
+0.7587547408032722096038,0.3115367449470753391516,1.414649105208534374256,\
+0.3927913048603896561950,0.5939705886124994060893,0.5944847773666142032312,\
+1.8577169333514007565356,0.3758234853000304576121,1.5339323343426742862761,\
+1.116121226627056151059,0.8950120949596866992692,0.6879113661687396019673,\
+0.8981211671217470549067,0.4481619497382871020186,1.8047253449076017250974,\
+1.0717620357356092419820,1.4405626096661212631744,3.570753936008602469343,\
+0.5315872522905110697522,0.9081793608312455079457,1.7025195075778205566763,\
+1.5455421881448592191788,0.6824200177072907713693,0.5646419316678596977965,\
+0.2357892895516306430714,0.7157266029643406524130,0.6543068980500212905582,\
+1.3132657769450220008878,0.8684289380809445679787,0.9271940107372679262809,\
+0.2745953215375174782942,1.0703580135019064023538,1.1284422825202322648863,\
+0.0564974518240219866771,1.4145448514301877107613,0.6785956954965183252071,\
+2.1896764463982005821663,1.038569068022475949675,0.5785592848631732065812,\
+0.4010837209168781058999,0.1037023542206769177731,2.4148146045420944005855,\
+0.6754632195277164852243,0.4190924885379074260605,0.5592558922536016163818,\
+2.2185337467253001264567,0.6373271305375159956341,1.7451524244169134281179,\
+0.1783458684376775515990,0.7066899058816989986909,0.6087518348022638026151,\
+0.8489046778360708200850,0.7955983798271689666493,0.3222066680434101937358,\
+0.4160981511553115685942,0.1961119885990144917631,1.3057726707544050626097,\
+0.7938951027372486146660,5.0581062357227910553092,0.9603173499915351740697,\
+0.5415899445306877613149,0.8541967975696214132597,1.1376185966292806650557,\
+7.8101696249237857472281,0.5579431766320509522572,0.8561650695644498210157,\
+0.6349136758399940294595,2.5988805040218991848633,1.1658310378368867965548,\
+0.5288397109111128147063,0.7903478048871180883239,1.5908154714750957214875,\
+1.4294252157474178765995,0.3296353175046571881701,2.5544776256060197638931,\
+1.3475391966885494898776,0.9072979951101491913334,0.5252607760481237120231,\
+0.2298981251807218351146,0.7321363209598960031244,0.1766547027080781206987,\
+0.8007189844811546386438,0.9142431669921511350196,0.5737031361189844913540,\
+1.5387393815389021067830,1.1435666477442363309081,0.6719421582664103498317,\
+0.3487701038639369754968,0.6294893055431936002009,1.1494708028880735728450,\
+0.2654596481228954640841,0.6924444380609823257444,1.0947349491748781247225,\
+0.5919494967059079071348,2.071145426993481919453,0.6047707100555417270016,\
+0.3084136738554988932393,0.8687822411868708627480}
+
+#define ZresI {0.0219109966763084765273,1.1103670771212392764937,-0.5918368028005515091294,\
+1.0434644203834322340185,0.1306902089737067562680,0.0447491408259363745992,\
+0.7377040968923224140141,-0.2408236963367206551201,-0.2257234835603764977474,\
+-0.7810702459548169995784,0.1117074633441673542356,-0.0721502465312851976043,\
+-0.8435050915509633151501,-1.049992518033896704566,0.5625036390262730945366,\
+-0.1648871384055887456821,-0.6439978954764388197063,-0.0518389509872686157776,\
+-0.1469980941163145371497,0.0278523259422256141971,0.1468121211307574225380,\
+0.6363908130534828844205,0.8834908864782332615917,1.1156137069476812495594,\
+0.0079625965633239471214,-0.0931592189119542501974,0.6063484612701055542772,\
+0.4343290787716013179320,-0.5836541037614180194026,-0.493498147842463708024,\
+0.5235160857005297652123,-1.1824047439401572656692,-0.0483243591007337727761,\
+0.0971532051319880102236,0.1118721601976361557096,0.0198453756455191573926,\
+0.6307818500498493241579,0.8368296783852913200974,-0.0194438478253851909638,\
+1.0073856655194393106001,-0.2344940357203251779517,-0.5870021518253613068694,\
+0.4589645174626295065501,0.2827215082048526451075,-0.3364392688062524672254,\
+0.7095438756660266133025,-0.5947584050308961645115,1.0103887681286427557836,\
+0.6789839686067032920036,0.6491702747352749991450,0.0666245648735558637643,\
+-1.0036186112629006395025,-0.0241179026237156347856,-0.1159462687897936661319,\
+1.7778063339362362160756,0.4014707664509557516475,0.3841554190219366171632,\
+0.0233959826824065887652,-0.2087996335518906843021,-0.4681854256220141508038,\
+-0.2931344646872880987942,0.0915789695713074419769,1.2853673263170140028677,\
+-0.1836203292999986358414,0.1753674426864008650817,0.9827446901351732932994,\
+-0.0675920858186050965699,0.2400947924345945561075,-0.3989012373127470145739,\
+0.6888879992257213036311,0.1708354561724222675512,-1.4942974066568359692297,\
+-0.0085262156571510854669,-0.2841282722500402813104,0.7218073734380161532442,\
+-0.2056072987186062794862,0.1375998721241953604011,12.326487466095862544080,\
+0.9075702833828449556108,-0.1454500841220424389721,-0.3538884268045125458535,\
+0.8332871291164858362777,0.6744192932692324449206,-0.4770914152325650969821,\
+-0.5414909663443179255182,-0.0499400036212993420071,-0.2863028848988973251721,\
+0.1938702385181169662864,-0.1729873927835128832875,1.0251354376600190221325,\
+-0.1033289986643653041165,0.5853982662761465505241,-1.5773030876847142778274,\
+0.9925655191551649991766,-0.2294389866838563163398,-0.0453802022491614914790,\
+0.1446261599175696077602,-0.4430018940967428986433,-0.0534578318707713412428,\
+0.9469665933810936797599,-0.3561239290952777913901,0.2727810879337961291746,\
+0.0892758706129039708577,0.0938769505403498488727,0.7245215338127788395894,\
+-0.8720932299519229546902,-0.0456129563594555031969,0.8116755927992604924270,\
+-0.2814959142726781715638,-0.2514706362757610502712,3.626843914392277934411,\
+0.0681179652920591155452,0.3142726625144375840470,0.2164361294071718844201,\
+-0.1161590262194092948445,0.7080904530777263339303,-0.6288889647478734801211,\
+0.2283938107922484916923,-0.3331421737315601871998,2.550154357127961901597,\
+0.5801384184232324381369,0.5915175342680475401025,-0.3059183157675403053055,\
+0.4291810802949616032720,-0.0675832494807970945994,0.2260187774838739449557,\
+-0.0267679793135976069884,-0.0634263407834385756212,0.0910679623605792354368,\
+0.7428730935396401502402,0.4240097947794032040569,-0.0215145937633346648332,\
+-0.924863020672384794629,-1.0641870004695814788676,0.0716038804713836907201,\
+0.2982802795008926421971,-0.4054077568543104082011,-0.3786076564490707396793,\
+-0.4048717571779728574555,0.0029320062413039386581,-0.4785486439953212656206,\
+0.3700468522583569841444,0.1165347960482350370137,-0.2553835663348579809728,\
+0.5494706041406317575948,-0.393525875328799512598,-0.448335747177200538705,\
+0.4576280623833377525500,0.2481690713632272726752,-0.5681196823051390953907,\
+0.8216610616768642572083,0.0354860822693221777957,-0.3165580473134032568616,\
+0.4553229569175886171095,0.0723630008683885939114,-0.261538718222994404083,\
+-0.2896039198710382289725,-0.0051211050224549813786,-0.2516323222313812113526,\
+-0.2543632926363337265485,-0.3343493853594096121284,0.3483261689873968225406,\
+-1.0951963511455886646218,0.0032621374671314572365,-0.8737574633254471256905,\
+-7.1013395362907472119218,1.0633789830820299382452,0.7040022037881576988383,\
+-0.4323193723566287616222,-0.2384520130907536727971,-0.124754648028884251865,\
+0.8455583392591451419307,0.0337190814024200535837,0.3608797400846083802683,\
+-0.0025395781382081018818,0.1450823667587325949135,1.6129974683352308328921,\
+-0.1016931838187624531633,0.1746595259838300551181,-0.1676360531992882596519,\
+0.2496952334332681877616,-0.3741840755319263966960,-0.4326683809083690657182,\
+0.53078982935711849223,-0.0844874840225433576535,-0.3125071808699463327130,\
+0.0435860282499331078143,-0.1008112495086985055393,0.0061350643233381426875,\
+0.0077278585702864046811,0.8390604068373108681556,0.8783952661568765751809,\
+0.0936328696083998102129,0.1316181510631146966972,0.2675204528497137079768,\
+-0.2501262083422521320664,-0.4354788291243042452905,-0.0073818204603310075620,\
+-0.4588062674027434395541,-0.1169262242084459640923}
+
+
+
+
+
+
+
+
+
+static void srdivsTest()
+{
+ float tIn1[]=numF;
+ float tIn2[]=denF;
+ float tRes[]=resF;
+ int i =0;
+ float out=0;
+
+ for(i=0;i<200;i++){
+ out=srdivs(tIn1[i],tIn2[i]);
+ assert( (fabs(out-tRes[i]) / fabs(out) ) <1e-6);
+ }
+}
+
+
+static void drdivsTest()
+{
+ double tIn1[]=numD;
+ double tIn2[]=denD;
+ double tRes[]=resD;
+ int i =0;
+ double out=0;
+
+ for(i=0;i<200;i++){
+ out=drdivs(tIn1[i],tIn2[i]);
+ /*
+printf("%d : %f ; num = %f;erreur = %1.25f\n",i,out,tIn1[i],fabs(out-tRes[i]) / fabs(out));
+ */
+ assert( (fabs(out-tRes[i]) / fabs(out) ) <3e-16);
+ }
+}
+
+
+static void crdivsTest()
+{
+ float NR[]=CnumR;
+ float NI[]=CnumI;
+ float DR[]=CdenR;
+ float DI[]=CdenI;
+ float RR[]=CresR;
+ float RI[]=CresI;
+ int i=0;
+ floatComplex in1,in2,out;
+
+ for (i=0;i<200;i++){
+ in1 = FloatComplex(NR[i],NI[i]);
+ in2 = FloatComplex(DR[i],DI[i]);
+ out = crdivs(in1,in2);
+ assert( ( fabs(creals(out)-RR[i]) / fabs(creals(out)) ) < 1e-6);
+ if (( fabs(cimags(out)-RI[i]) / fabs(cimags(out)) ) >= 1e-5 )
+ {
+ printf("%d : %1.25f ; num = %1.25f;erreur = %1.25f\n",i,cimags(out),RI[i], fabs(cimags(out)-RI[i]) / fabs(cimags(out)));
+ }
+ assert( ( fabs(cimags(out)-RI[i]) / fabs(cimags(out)) ) < 1e-5);
+ }
+}
+
+
+static void zrdivsTest()
+{
+ double NR[]=ZnumR;
+ double NI[]=ZnumI;
+ double DR[]=ZdenR;
+ double DI[]=ZdenI;
+ double RR[]=ZresR;
+ double RI[]=ZresI;
+ int i=0;
+ doubleComplex in1,in2,out;
+
+ for (i=0;i<200;i++){
+ in1 = DoubleComplex(NR[i],NI[i]);
+ in2 = DoubleComplex(DR[i],DI[i]);
+ out = zrdivs(in1,in2);
+ printf("%d : %1.25f ; num = %1.25f;erreur = %1.25f\n",i,zreals(out),RR[i], fabs(zreals(out)-RR[i]) );
+ assert( ( fabs(zreals(out)-RR[i]) ) < 1e-14);
+ printf("%d : %1.25f ; num = %1.25f;erreur = %1.25f\n",i,zimags(out),RI[i], fabs(zimags(out)-RI[i]) );
+ assert( ( fabs(zimags(out)-RI[i]) ) < 1e-14);
+ }
+}
+
+
+
+static void srdivaTest()
+{
+ float tIn1[]=numF;
+ float tIn2[]=denF;
+ float tRes[]=resF;
+ int i =0;
+ float out[200];
+
+ srdiva(tIn1,tIn2,200,out);
+ for(i=0;i<200;i++){
+ assert( (fabs(out[i]-tRes[i]) / fabs(out[i]) ) <1e-6);
+ }
+}
+
+
+static void drdivaTest()
+{
+ double tIn1[]=numD;
+ double tIn2[]=denD;
+ double tRes[]=resD;
+ int i =0;
+ double out[200];
+
+ drdiva(tIn1,tIn2,200,out);
+ for(i=0;i<200;i++){
+ printf("%d : %f ; num = %f;erreur = %1.25f\n",i,out[i],tIn1[i],fabs(out[i]-tRes[i]) / fabs(out[i]));
+ assert( (fabs(out[i]-tRes[i]) / fabs(out[i]) ) <1e-16);
+ }
+}
+
+
+static void crdivaTest()
+{
+ float NR[]=CnumR;
+ float NI[]=CnumI;
+ float DR[]=CdenR;
+ float DI[]=CdenI;
+ float RR[]=CresR;
+ float RI[]=CresI;
+ int i=0;
+ floatComplex in1[200],in2[200],out[200];
+
+ for (i=0;i<200;i++){
+ in1[i] = FloatComplex(NR[i],NI[i]);
+ in2[i] = FloatComplex(DR[i],DI[i]);
+ }
+
+ crdiva(in1,in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert( ( fabs(creals(out[i])-RR[i]) ) < 1e-6);
+ assert( ( fabs(cimags(out[i])-RI[i]) ) < 3e-6);
+ }
+}
+
+
+static void zrdivaTest()
+{
+ double NR[]=ZnumR;
+ double NI[]=ZnumI;
+ double DR[]=ZdenR;
+ double DI[]=ZdenI;
+ double RR[]=ZresR;
+ double RI[]=ZresI;
+ int i=0;
+ doubleComplex in1[200],in2[200],out[200];
+
+ for (i=0;i<200;i++){
+ in1[i] = DoubleComplex(NR[i],NI[i]);
+ in2[i] = DoubleComplex(DR[i],DI[i]);
+ }
+
+ zrdiva(in1,in2,200,out);
+
+ for (i=0;i<200;i++){
+ assert( ( fabs(zreals(out[i])-RR[i]) ) < 1e-14);
+ assert( ( fabs(zimags(out[i])-RI[i]) ) < 1e-14);
+ }
+}
+
+
+static int testRDivision(void) {
+ printf(">>>SCALAIRES<<<\n");printf("\n");printf("\n");
+ srdivsTest();
+ drdivsTest();
+ crdivsTest();
+ zrdivsTest();
+ printf(">>>ARRAYS<<<\n");printf("\n");printf("\n");
+ srdivaTest();
+ drdivaTest();
+ crdivaTest();
+ zrdivaTest();
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testRDivision() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj b/2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj
new file mode 100644
index 00000000..2152b84a
--- /dev/null
+++ b/2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7A424759-5962-4AE5-ABB6-0B94DDD21F61}</ProjectGuid>
+ <RootNamespace>testLDivision</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testLDivision.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj.filters b/2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj.filters
new file mode 100644
index 00000000..52f6e131
--- /dev/null
+++ b/2.3-1/src/c/operations/division/test_LDivision/testLDivision.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testLDivision.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj b/2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj
new file mode 100644
index 00000000..68f805b1
--- /dev/null
+++ b/2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{BF995E6F-88C9-4175-9EE3-ECB3D270AEA6}</ProjectGuid>
+ <RootNamespace>testRDivision</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testRDivision.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj.filters b/2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj.filters
new file mode 100644
index 00000000..44c67e7a
--- /dev/null
+++ b/2.3-1/src/c/operations/division/test_RDivision/testRDivision.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testRDivision.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/division/u16ldiva.c b/2.3-1/src/c/operations/division/u16ldiva.c
new file mode 100644
index 00000000..bc24ab05
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u16ldiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void u16ldiva (uint16* in1, uint16* in2, int size, uint16* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=u16ldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/u16ldivs.c b/2.3-1/src/c/operations/division/u16ldivs.c
new file mode 100644
index 00000000..b1d85182
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u16ldivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+uint16 u16ldivs (uint16 in1, uint16 in2){
+ return in2/in1;
+}
diff --git a/2.3-1/src/c/operations/division/u16rdiva.c b/2.3-1/src/c/operations/division/u16rdiva.c
new file mode 100644
index 00000000..a13deccb
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u16rdiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void u16rdiva (uint16* in1, uint16* in2, int size, uint16* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=u16rdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/u16rdivs.c b/2.3-1/src/c/operations/division/u16rdivs.c
new file mode 100644
index 00000000..d55c07f4
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u16rdivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+uint16 u16rdivs (uint16 in1, uint16 in2){
+ return in1/in2;
+}
diff --git a/2.3-1/src/c/operations/division/u8ldiva.c b/2.3-1/src/c/operations/division/u8ldiva.c
new file mode 100644
index 00000000..8dc948f9
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u8ldiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void u8ldiva (uint8* in1, uint8* in2, int size, uint8* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=u8ldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/u8ldivs.c b/2.3-1/src/c/operations/division/u8ldivs.c
new file mode 100644
index 00000000..bf16943f
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u8ldivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+uint8 u8ldivs (uint8 in1, uint8 in2){
+ return in2/in1;
+}
diff --git a/2.3-1/src/c/operations/division/u8rdiva.c b/2.3-1/src/c/operations/division/u8rdiva.c
new file mode 100644
index 00000000..7ed7f9cc
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u8rdiva.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+void u8rdiva (uint8* in1, uint8* in2, int size, uint8* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=u8rdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/u8rdivs.c b/2.3-1/src/c/operations/division/u8rdivs.c
new file mode 100644
index 00000000..9d04ebfa
--- /dev/null
+++ b/2.3-1/src/c/operations/division/u8rdivs.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "division.h"
+
+
+uint8 u8rdivs (uint8 in1, uint8 in2){
+ return in1/in2;
+}
diff --git a/2.3-1/src/c/operations/division/zldiva.c b/2.3-1/src/c/operations/division/zldiva.c
new file mode 100644
index 00000000..b6e3dbae
--- /dev/null
+++ b/2.3-1/src/c/operations/division/zldiva.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void zldiva (doubleComplex* in1, doubleComplex* in2, int size, doubleComplex* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=zldivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/zldivs.c b/2.3-1/src/c/operations/division/zldivs.c
new file mode 100644
index 00000000..be28a568
--- /dev/null
+++ b/2.3-1/src/c/operations/division/zldivs.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+#include "conj.h"
+#include "multiplication.h"
+/*
+ A\B = B*A^-1 = B*conj(A)/|A|^2
+ |A|^2 = Re(A)^2 + Im(A)^2
+ */
+
+doubleComplex zldivs (doubleComplex in1, doubleComplex in2){
+ doubleComplex zC1, zC2;
+ zC1 = zmuls(in2,zconjs(in1));
+ zC2 = DoubleComplex(zreals(in1)*zreals(in1)+zimags(in1)*zimags(in1),0);
+ return zrdivs(zC1,zC2);
+}
diff --git a/2.3-1/src/c/operations/division/zrdiva.c b/2.3-1/src/c/operations/division/zrdiva.c
new file mode 100644
index 00000000..2dcd8afb
--- /dev/null
+++ b/2.3-1/src/c/operations/division/zrdiva.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "division.h"
+
+void zrdiva (doubleComplex* in1, doubleComplex* in2, int size, doubleComplex* out ){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=zrdivs(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/division/zrdivs.c b/2.3-1/src/c/operations/division/zrdivs.c
new file mode 100644
index 00000000..eca3a986
--- /dev/null
+++ b/2.3-1/src/c/operations/division/zrdivs.c
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+
+#include "doubleComplex.h"
+#include "division.h"
+
+/*
+** \function zdivides
+** \brief Divide 2 Complex numbers.
+*/
+doubleComplex zrdivs(doubleComplex z1, doubleComplex z2) {
+#ifndef STDC99
+ return DoubleComplex((z1.real*z2.real + z1.imag*z2.imag) / (z2.real*z2.real + z2.imag* z2.imag),
+ (z1.imag*z2.real - z1.real*z2.imag) / (z2.real*z2.real + z2.imag* z2.imag));
+#else
+ return z1 / z2;
+#endif
+}
diff --git a/2.3-1/src/c/operations/includes/addition.h b/2.3-1/src/c/operations/includes/addition.h
new file mode 100644
index 00000000..fbf0177b
--- /dev/null
+++ b/2.3-1/src/c/operations/includes/addition.h
@@ -0,0 +1,196 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __ADDITION_H__
+#define __ADDITION_H__
+
+#include "dynlib_operations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+**
+** WARNING WE ASSUME MATRIXES TO BE CONSCISTENT
+** size1 = size2;
+**
+*/
+
+/*
+** \brief Compute an addition with floats.
+** \param in1 : input float.
+** \param in2 : input float.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS float sadds(float in1, float in2);
+
+/*
+** \brief Compute an addition element ways for floats.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void sadda(float *in1, int size1,
+ float *in2, int size2,
+ float *out);
+
+/*
+** \brief Compute an addition with double.
+** \param in1 : input double.
+** \param in2 : input double.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS double dadds(double in1, double in2);
+
+/*
+** \brief Compute an addition element ways for double.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void dadda(double *in1, int size1,
+ double *in2, int size2,
+ double * out);
+
+/*
+** \brief Compute an addition with floats Complex.
+** \param in1 : input float complex.
+** \param in2 : input float complex.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS floatComplex cadds(floatComplex in1, floatComplex in2);
+
+/*
+** \brief Compute an addition element ways for complex single precision.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void cadda(floatComplex *in1, int size1,
+ floatComplex *in2, int size2,
+ floatComplex *out);
+
+/*
+** \brief Compute an addition with double complex.
+** \param in1 : input double complex.
+** \param in2 : input double conplex.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS doubleComplex zadds(doubleComplex in1, doubleComplex in2);
+
+/*
+** \brief Compute an addition element ways for complex double precision.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void zadda(doubleComplex *in1, int size1,
+ doubleComplex *in2, int size2,
+ doubleComplex *out);
+
+/*
+** \brief Compute an addition with uint8.
+** \param in1 : input uint8.
+** \param in2 : input uint8.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS uint8 u8adds(uint8 in1, uint8 in2);
+
+/*
+** \brief Compute an addition element wise for uint8.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void u8adda(uint8 *in1, int size1,
+ uint8 *in2, int size2,
+ uint8 *out);
+
+/*
+** \brief Compute an addition with int8.
+** \param in1 : input int8.
+** \param in2 : input int8.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS int8 i8adds(int8 in1, int8 in2);
+
+/*
+** \brief Compute an addition element wise for int8.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void i8adda(int8 *in1, int size1,
+ int8 *in2, int size2,
+ int8 *out);
+
+/*
+** \brief Compute an addition with uint16.
+** \param in1 : input uint16.
+** \param in2 : input uint16.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS uint16 u16adds(uint16 in1, uint16 in2);
+
+/*
+** \brief Compute an addition element wise for uint16.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void u16adda(uint16 *in1, int size1,
+ uint16 *in2, int size2,
+ uint16 *out);
+
+/*
+** \brief Compute an addition with int16.
+** \param in1 : input int16.
+** \param in2 : input int16.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS int16 i16adds(int16 in1, int16 in2);
+
+/*
+** \brief Compute an addition element wise for int16.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the addition in1 + in2.
+*/
+EXTERN_OPERATIONS void i16adda(int16 *in1, int size1,
+ int16 *in2, int size2,
+ int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__ADDITION_H__ */
diff --git a/2.3-1/src/c/operations/includes/division.h b/2.3-1/src/c/operations/includes/division.h
new file mode 100644
index 00000000..ac2d1482
--- /dev/null
+++ b/2.3-1/src/c/operations/includes/division.h
@@ -0,0 +1,328 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __DIVISION_H__
+#define __DIVISION_H__
+
+#include "dynlib_operations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+**
+** WARNING WE ASSUME MATRIXES TO BE CONSCISTENT
+** size1 = size2;
+**
+*/
+
+
+/*
+** RIGHT DIVISION
+*/
+
+/*
+** \brief Compute a right division for floats.
+** \param in1 : input float.
+** \param in2 : input float.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS float srdivs (float in1, float in2);
+
+/*
+** \brief Compute a right division element ways for floats.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void srdiva (float* in1, float* in2, int size, float* out );
+
+/*
+** \brief Compute a right division for double.
+** \param in1 : input double.
+** \param in2 : input double.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS double drdivs (double in1, double in2);
+
+/*
+** \brief Compute a right division element ways for double.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void drdiva (double* in1, double* in2, int size, double* out );
+
+/*
+** \brief Compute a right division for floats complex.
+** \param in1 : input float complex.
+** \param in2 : input float complex.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS floatComplex crdivs (floatComplex in1, floatComplex in2);
+
+/*
+** \brief Compute a right division element ways for float complex.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void crdiva(floatComplex* in1, floatComplex* in2, int size, floatComplex* out );
+
+/*
+** \brief Compute a right division for double complex.
+** \param in1 : input double complex.
+** \param in2 : input double complex.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS doubleComplex zrdivs (doubleComplex in1, doubleComplex in2);
+
+/*
+** \brief Compute a right division element ways for double complex.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void zrdiva(doubleComplex* in1, doubleComplex* in2, int size, doubleComplex* out );
+
+
+/*
+** \brief Compute a right division element ways for uint8.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void u8rdiva (uint8* in1, uint8* in2, int size, uint8* out );
+
+
+
+/*
+** \brief Compute a right division for uint8.
+** \param in1 : input uint8.
+** \param in2 : input uint8.
+** \return in1 / in2 = in1 ./ in2.
+*/
+
+EXTERN_OPERATIONS uint8 u8rdivs (uint8 in1, uint8 in2);
+
+/*
+** \brief Compute a right division element ways for uint16.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void u16rdiva (uint16* in1, uint16* in2, int size, uint16* out );
+
+
+/*
+** \brief Compute a right division element ways for int8.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void i8rdiva (int8* in1, int8* in2, int size, int8* out );
+
+/*
+** \brief Compute a right division for int8.
+** \param in1 : input int8.
+** \param in2 : input int8.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS int8 i8rdivs (int8 in1, int8 in2);
+
+/*
+** \brief Compute a right division for uint16.
+** \param in1 : input uint16.
+** \param in2 : input uint16.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS uint16 u16rdivs (uint16 in1, uint16 in2);
+
+/*
+** \brief Compute a right division for int16.
+** \param in1 : input int16.
+** \param in2 : input int16.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS int16 i16rdivs (int16 in1, int16 in2);
+
+/*
+** \brief Compute a right division element ways for int16.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 ./ in2.
+*/
+EXTERN_OPERATIONS void i16rdiva (int16* in1, int16* in2, int size, int16* out );
+
+
+/*
+** LEFT DIVISION
+*/
+
+/*
+** \brief Compute a left division for floats.
+** \param in1 : input float.
+** \param in2 : input float.
+** \return in1 \ in2 = in1 .\ in2.
+*/
+EXTERN_OPERATIONS float sldivs (float in1, float in2);
+
+/*
+** \brief Compute a left division element ways for floats.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void sldiva (float* in1, float* in2, int size, float* out );
+
+/*
+** \brief Compute a left division for double.
+** \param in1 : input double.
+** \param in2 : input double.
+** \return in1 \ in2 = in1 .\ in2.
+*/
+EXTERN_OPERATIONS double dldivs (double in1, double in2);
+
+/*
+** \brief Compute a left division element ways for double.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void dldiva (double* in1, double* in2, int size, double* out );
+
+/*
+** \brief Compute a left division for floats complex.
+** \param in1 : input float complex.
+** \param in2 : input float complex.
+** \return in1 \ in2 = in1 .\ in2.
+*/
+EXTERN_OPERATIONS floatComplex cldivs (floatComplex in1, floatComplex in2);
+
+/*
+** \brief Compute a left division element ways for float complex.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void cldiva(floatComplex* in1, floatComplex* in2, int size, floatComplex* out );
+
+/*
+** \brief Compute a left division for double complex.
+** \param in1 : input double complex.
+** \param in2 : input double complex.
+** \return in1 \ in2 = in1 .\ in2.
+*/
+EXTERN_OPERATIONS doubleComplex zldivs (doubleComplex in1, doubleComplex in2);
+
+/*
+** \brief Compute a left division element ways for double complex.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void zldiva(doubleComplex* in1, doubleComplex* in2, int size, doubleComplex* out );
+
+/*
+** \brief Compute a left division element ways for uint8.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void u8ldiva (uint8* in1, uint8* in2, int size, uint8* out );
+
+/*
+** \brief Compute a right division for uint8.
+** \param in1 : input uint8.
+** \param in2 : input uint8.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS uint8 u8ldivs (uint8 in1, uint8 in2);
+
+/*
+** \brief Compute a left division element ways for int8.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void i8ldiva (int8* in1, int8* in2, int size, int8* out );
+
+/*
+** \brief Compute a right division for int8.
+** \param in1 : input int8.
+** \param in2 : input int8.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS int8 i8ldivs (int8 in1, int8 in2);
+
+/*
+** \brief Compute a left division element ways for uint16.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void u16ldiva (uint16* in1, uint16* in2, int size, uint16* out );
+
+
+/*
+** \brief Compute a right division for uint16.
+** \param in1 : input uint16.
+** \param in2 : input uint16.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS uint16 u16ldivs (uint16 in1, uint16 in2);
+
+/*
+** \brief Compute a left division element ways for int16.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array = rows*columns.
+** \param out : array that contains the division in1 .\ in2.
+*/
+EXTERN_OPERATIONS void i16ldiva (int16* in1, int16* in2, int size, int16* out );
+
+
+/*
+** \brief Compute a right division for int16.
+** \param in1 : input int16.
+** \param in2 : input int16.
+** \return in1 / in2 = in1 ./ in2.
+*/
+EXTERN_OPERATIONS int16 i16ldivs (int16 in1, int16 in2);
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__DIVISION_H__ */
diff --git a/2.3-1/src/c/operations/includes/dynlib_operations.h b/2.3-1/src/c/operations/includes/dynlib_operations.h
new file mode 100644
index 00000000..e91f6322
--- /dev/null
+++ b/2.3-1/src/c/operations/includes/dynlib_operations.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_OPERATIONS_H__
+#define __DYNLIB_OPERATIONS_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if OPERATIONS_EXPORTS
+ #define EXTERN_OPERATIONS __declspec (dllexport)
+ #else
+ #define EXTERN_OPERATIONS __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_OPERATIONS
+#endif
+
+#endif /* __DYNLIB_OPERATIONS_H__ */
diff --git a/2.3-1/src/c/operations/includes/multiplication.h b/2.3-1/src/c/operations/includes/multiplication.h
new file mode 100644
index 00000000..32ea932b
--- /dev/null
+++ b/2.3-1/src/c/operations/includes/multiplication.h
@@ -0,0 +1,253 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __MULTIPLICATION_H__
+#define __MULTIPLICATION_H__
+
+#include "dynlib_operations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+**
+** WARNING WE ASSUME MATRIXES TO BE CONSCISTENT
+** size1 = size2;
+**
+*/
+
+/*
+** \brief Compute a multiplication with floats.
+** \param in1 : input float.
+** \param in2 : input float.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS float smuls(float in1, float in2);
+
+/*
+** \brief Compute a multiplication element ways for floats.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void smula(float *in1, float *in2, int size2, float *out);
+
+/*
+** \brief Compute a multiplication for floats.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS float smulv(float *in1, float *in2, int size2);
+
+/*
+** \brief Compute a multiplication with double.
+** \param in1 : input double.
+** \param in2 : input double.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS double dmuls(double in1, double in2);
+
+/*
+** \brief Compute a multiplication element ways for double.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void dmula(double *in1, double *in2, int size,double * out);
+
+/*
+** \brief Compute a multiplication for floats.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS double dmulv(double *in1, double *in2, int size2);
+
+/*
+** \brief Compute a multiplication with floats Complex.
+** \param in1 : input float complex.
+** \param in2 : input float complex.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS floatComplex cmuls(floatComplex in1, floatComplex in2);
+
+/*
+** \brief Compute a multiplication element ways for complex single precision.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void cmula(floatComplex *in1, floatComplex *in2, int size, floatComplex *out);
+
+/*
+** \brief Compute a multiplication for floats.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS floatComplex cmulv(floatComplex *in1, floatComplex *in2, int size2);
+
+EXTERN_OPERATIONS floatComplex cmulcsv(floatComplex *in1, float *in2, int size2);
+
+EXTERN_OPERATIONS floatComplex cmulscv(float *in1, floatComplex *in2, int size2);
+
+
+/*
+** \brief Compute a multiplication with double complex.
+** \param in1 : input double complex.
+** \param in2 : input double conplex.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS doubleComplex zmuls(doubleComplex in1, doubleComplex in2);
+
+/*
+** \brief Compute a multiplication element ways for complex double precision.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size: size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void zmula(doubleComplex *in1, doubleComplex *in2, int size, doubleComplex *out);
+
+/*
+** \brief Compute a multiplication for double.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS doubleComplex zmulv(doubleComplex *in1, doubleComplex *in2, int size2);
+
+EXTERN_OPERATIONS doubleComplex zmulzdv(doubleComplex *in1, double *in2, int size2);
+
+EXTERN_OPERATIONS doubleComplex zmuldzv(double *in1, doubleComplex *in2, int size2);
+
+/*
+** \brief Compute a multiplication element ways for uint8.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void u8mula(uint8 *in1, uint8 *in2, int size,uint8 * out);
+
+/*
+** \brief Compute a multiplication with uint8.
+** \param in1 : input uint8.
+** \param in2 : input uint8.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS uint8 u8muls(uint8 in1, uint8 in2);
+
+/*
+** \brief Compute a multiplication for uint8 arrays.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS uint8 u8mulv(uint8 *in1, uint8 *in2, int size2);
+
+/*
+** \brief Compute a multiplication element ways for int8.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void i8mula(int8 *in1, int8 *in2, int size,int8 * out);
+
+/*
+** \brief Compute a multiplication with int8.
+** \param in1 : input int8.
+** \param in2 : input int8.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS int8 i8muls(int8 in1, int8 in2);
+
+/*
+** \brief Compute a multiplication for int8 arrays.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS int8 i8mulv(int8 *in1, int8 *in2, int size2);
+
+/*
+** \brief Compute a multiplication element ways for uint16.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void u16mula(uint16 *in1, uint16 *in2, int size,uint16 * out);
+
+/*
+** \brief Compute a multiplication with uint16.
+** \param in1 : input uint16.
+** \param in2 : input uint16.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS uint16 u16muls(uint16 in1, uint16 in2);
+
+/*
+** \brief Compute a multiplication for uint16 arrays.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS uint16 u16mulv(uint16 *in1, uint16 *in2, int size2);
+
+/*
+** \brief Compute a multiplication element ways for int16.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \param out : array that contains the multiplication = in1 .* in2.
+*/
+EXTERN_OPERATIONS void i16mula(int16 *in1, int16 *in2, int size,int16 * out);
+
+/*
+** \brief Compute a multiplication with int16.
+** \param in1 : input int16.
+** \param in2 : input int16.
+** \return : in1 * in 2 = in1 .* in2.
+*/
+EXTERN_OPERATIONS int16 i16muls(int16 in1, int16 in2);
+
+/*
+** \brief Compute a multiplication for int16 arrays.
+** \param in1 : input array.
+** \param in2 : input array.
+** \param size : size of in2 array.
+** \return : scalar that contains the multiplication of the two vectors = in1 .* in2.
+*/
+EXTERN_OPERATIONS int16 i16mulv(int16 *in1, int16 *in2, int size2);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MULTIPLICATION_H__ */
diff --git a/2.3-1/src/c/operations/includes/subtraction.h b/2.3-1/src/c/operations/includes/subtraction.h
new file mode 100644
index 00000000..798df2bf
--- /dev/null
+++ b/2.3-1/src/c/operations/includes/subtraction.h
@@ -0,0 +1,197 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SUBTRACTION_H__
+#define __SUBTRACTION_H__
+
+#include "dynlib_operations.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+**
+** WARNING WE ASSUME MATRIXES TO BE CONSCISTENT
+** size1 = size2;
+**
+*/
+
+/*
+** \brief Compute a subtraction with floats.
+** \param in1 : input float.
+** \param in2 : input float.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS float sdiffs(float in1, float in2);
+
+/*
+** \brief Compute a subtraction element ways for floats.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void sdiffa(float *in1, int size1,
+ float *in2, int size2,
+ float *out);
+
+/*
+** \brief Compute a subtraction with double.
+** \param in1 : input double.
+** \param in2 : input double.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS double ddiffs(double in1, double in2);
+
+/*
+** \brief Compute a subtraction element ways for double.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void ddiffa(double *in1, int size1,
+ double *in2, int size2,
+ double * out);
+
+/*
+** \brief Compute a subtraction with floats Complex.
+** \param in1 : input float complex.
+** \param in2 : input float complex.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS floatComplex cdiffs(floatComplex in1, floatComplex in2);
+
+/*
+** \brief Compute a subtraction element ways for complex single precision.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void cdiffa(floatComplex *in1, int size1,
+ floatComplex *in2, int size2,
+ floatComplex *out);
+
+/*
+** \brief Compute a subtraction with double complex.
+** \param in1 : input double complex.
+** \param in2 : input double conplex.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS doubleComplex zdiffs(doubleComplex in1, doubleComplex in2);
+
+/*
+** \brief Compute a subtraction element ways for complex double precision.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void zdiffa(doubleComplex *in1, int size1,
+ doubleComplex *in2, int size2,
+ doubleComplex *out);
+
+
+/*
+** \brief Compute a subtraction with uint8.
+** \param in1 : input uint8.
+** \param in2 : input uint8.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS uint8 u8diffs(uint8 in1, uint8 in2);
+
+/*
+** \brief Compute a subtraction element wise for uint8.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void u8diffa(uint8 *in1, int size1,
+ uint8 *in2, int size2,
+ uint8 *out);
+
+/*
+** \brief Compute a subtraction with int8.
+** \param in1 : input int8.
+** \param in2 : input int8.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS int8 i8diffs(int8 in1, int8 in2);
+
+/*
+** \brief Compute a subtraction element wise for int8.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void i8diffa(int8 *in1, int size1,
+ int8 *in2, int size2,
+ int8 *out);
+
+
+/*
+** \brief Compute a subtraction with uint16.
+** \param in1 : input uint16.
+** \param in2 : input uint16.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS uint16 u16diffs(uint16 in1, uint16 in2);
+
+/*
+** \brief Compute a subtraction element wise for uint16.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void u16diffa(uint16 *in1, int size1,
+ uint16 *in2, int size2,
+ uint16 *out);
+
+/*
+** \brief Compute a subtraction with int16.
+** \param in1 : input int16.
+** \param in2 : input int16.
+** \return : in1 + in2
+*/
+EXTERN_OPERATIONS int16 i16diffs(int16 in1, int16 in2);
+
+/*
+** \brief Compute a subtraction element wise for int16.
+** \param in1 : input array.
+** \param size1 : size of in1 array.
+** \param in2 : input arry.
+** \param size2 : size of in2 array.
+** \param out : array that contains the subtraction in1 + in2.
+*/
+EXTERN_OPERATIONS void i16diffa(int16 *in1, int size1,
+ int16 *in2, int size2,
+ int16 *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__SUBTRACTION_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpBackSlash.h b/2.3-1/src/c/operations/interfaces/int_OpBackSlash.h
new file mode 100644
index 00000000..8a733f28
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpBackSlash.h
@@ -0,0 +1,109 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPBACKSLASH_H__
+#define __INT_OPBACKSLASH_H__
+
+/* Scalar \ Scalar */
+
+#define s0s0OpBackSlashs0(in1,in2) sldivs(in1,in2)
+
+#define d0d0OpBackSlashd0(in1,in2) dldivs(in1,in2)
+
+#define c0c0OpBackSlashc0(in1,in2) cldivs(in1,in2)
+
+#define z0z0OpBackSlashz0(in1,in2) zldivs(in1,in2)
+
+#define s0c0OpBackSlashc0(in1,in2) cldivs(FloatComplex(in1,0),in2)
+
+#define c0s0OpBackSlashc0(in1,in2) cldivs(in1,FloatComplex(in2,0))
+
+#define d0z0OpBackSlashz0(in1,in2) zldivs(DoubleComplex(in1,0),in2)
+
+#define z0d0OpBackSlashz0(in1,in2) zldivs(in1,DoubleComplex(in2,0))
+
+
+/* Scalar \ Matrix */
+
+#define s0s2OpBackSlashs2(in1,in2,size,out) {int i;\
+ for( i=0;i<size[0]*size[1];i++) out[i]= sldivs(in1,in2[i]);}
+
+#define d0d2OpBackSlashd2(in1,in2,size,out) {int i;\
+ for( i=0;i<size[0]*size[1];i++) out[i]= dldivs(in1,in2[i]);}
+
+#define c0c2OpBackSlashc2(in1,in2,size,out) {int i;\
+ for( i=0;i<size[0]*size[1];i++) out[i]= cldivs(in1,in2[i]);}
+
+#define z0z2OpBackSlashz2(in1,in2,size,out) {int i;\
+ for( i=0;i<size[0]*size[1];i++) out[i]= zldivs(in1,in2[i]);}
+
+#define s0c2OpBackSlashc2(in1,in2,size,out) c0c2OpBackSlashc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2OpBackSlashz2(in1,in2,size,out) z0z2OpBackSlashz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2OpBackSlashc2(in1,in2,size,out) {int i;\
+ for ( i=0;i<size[0]*size[1];i++) out[i]= cldivs(in1,FloatComplex(in2[i],0));}
+
+#define z0d2OpBackSlashz2(in1,in2,size,out) {int i;\
+ for ( i=0;i<size[0]*size[1];i++) out[i]= zldivs(in1,DoubleComplex(in2[i],0));}
+
+
+/* Matrix \ Scalar */
+
+#define s2s0OpBackSlashs2(in1,size,in2,out) {float temp[1] = {in2};\
+ sldivma(in1,size[0],size[1],temp,1,1,out);}
+
+#define d2d0OpBackSlashd2(in1,size,in2,out) {double temp[1] = {in2};\
+ dldivma(in1,size[0],size[1],temp,1,1,out);}
+
+#define c2c0OpBackSlashc2(in1,size,in2,out) {int i;\
+ for ( i=0;i<size[0]*size[1];i++) out[i]= cldivs(in1[i],in2);}
+
+#define z2z0OpBackSlashz2(in1,size,in2,out) {int i;\
+ for ( i=0;i<size[0]*size[1];i++) out[i]= zldivs(in1[i],in2);}
+
+#define s2c0OpBackSlashc2(in1,size,in2,out) {int i;\
+ for ( i=0;i<size[0]*size[1];i++) out[i]= cldivs(FloatComplex(in1[i],0),in2);}
+
+#define d2z0OpBackSlashz2(in1,size,in2,out) {int i;\
+ for ( i=0;i<size[0]*size[1];i++) out[i]= zldivs(DoubleComplex(in1[i],0),in2);}
+
+#define c2s0OpBackSlashc2(in1,size,in2,out) c2c0OpBackSlashc2(in1,size,FloatComplex(in2,0),out)
+
+#define z2d0OpBackSlashz2(in1,size,in2,out) z2z0OpBackSlashz2(in1,size,DoubleComplex(in2,0),out)
+
+
+
+/* Matrix \ Matrix */
+
+#define s2s2OpBackSlashs2(in1,size1,in2,size2,out) sldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpBackSlashd2(in1,size1,in2,size2,out) dldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2c2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2s2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(in1,size1[0],size1[1],FloatComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define s2c2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(FloatComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2z2OpBackSlashz2(in1,size1,in2,size2,out) zldivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2d2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(in1,size1[0],size1[1],DoubleComplexMatrix(in2,0,size2[0]*size2[1]),size2[0],size2[1],out)
+
+#define d2z2OpBackSlashc2(in1,size1,in2,size2,out) cldivma(DoubleComplexMatrix(in1,0,size1[0]*size1[1]),size1[0],size1[1],in2,size2[0],size2[1],out)
+
+
+
+
+#endif /* !__INT_OPBACKSLASH_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpDotBackSlash.h b/2.3-1/src/c/operations/interfaces/int_OpDotBackSlash.h
new file mode 100644
index 00000000..220da8db
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpDotBackSlash.h
@@ -0,0 +1,153 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPDOTBACKSLASH_H__
+#define __INT_OPDOTBACKSLASH_H__
+
+/* Scalar .\ Scalar */
+
+#define s0s0OpDotBackSlashs0(in1,in2) sldivs(in1,in2)
+
+#define d0d0OpDotBackSlashd0(in1,in2) dldivs(in1,in2)
+
+#define c0c0OpDotBackSlashc0(in1,in2) cldivs(in1,in2)
+
+#define z0z0OpDotBackSlashz0(in1,in2) zldivs(in1,in2)
+
+#define u80u80OpDotBackSlashu80(in1,in2) u8ldivs(in1,in2)
+
+#define u160u160OpDotBackSlashu160(in1,in2) u16ldivs(in1,in2)
+
+#define i80i80OpDotBackSlashi80(in1,in2) i8ldivs(in1,in2)
+
+#define i160i160OpDotBackSlashi160(in1,in2) i16ldivs(in1,in2)
+
+#define s0c0OpDotBackSlashc0(in1,in2) cldivs(FloatComplex(in1,0),in2)
+
+#define c0s0OpDotBackSlashc0(in1,in2) cldivs(in1,FloatComplex(in2,0))
+
+#define d0z0OpDotBackSlashz0(in1,in2) zldivs(DoubleComplex(in1,0),in2)
+
+#define z0d0OpDotBackSlashz0(in1,in2) zldivs(in1,DoubleComplex(in2,0))
+
+
+/* Scalar \ Matrix */
+
+#define s0s2OpDotBackSlashs2(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= sldivs(in1,in2[i]);}
+
+#define d0d2OpDotBackSlashd2(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= dldivs(in1,in2[i]);}
+
+#define c0c2OpDotBackSlashc2(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cldivs(in1,in2[i]);}
+
+#define z0z2OpDotBackSlashz2(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zldivs(in1,in2[i]);}
+
+#define u80u82OpDotBackSlashu82(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= u8ldivs(in1,in2[i]);}
+
+#define u160u162OpDotBackSlashu162(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= u16ldivs(in1,in2[i]);}
+
+#define i80i82OpDotBackSlashi82(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= i8ldivs(in1,in2[i]);}
+
+#define i160i162OpDotBackSlashi162(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= i16ldivs(in1,in2[i]);}
+
+
+#define s0c2OpDotBackSlashc2(in1,in2,size,out) c0c2OpDotBackSlashc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2OpDotBackSlashz2(in1,in2,size,out) z0z2OpDotBackSlashz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2OpDotBackSlashc2(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cldivs(in1,FloatComplex(in2[i],0));}
+
+#define z0d2OpDotBackSlashz2(in1,in2,size,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zldivs(in1,DoubleComplex(in2[i],0));}
+
+
+/* Matrix \ Scalar */
+
+#define s2s0OpDotBackSlashs2(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= sldivs(in1[i],in2);}
+
+#define d2d0OpDotBackSlashd2(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= dldivs(in1[i],in2);}
+
+#define c2c0OpDotBackSlashc2(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cldivs(in1[i],in2);}
+
+#define z2z0OpDotBackSlashz2(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zldivs(in1[i],in2);}
+
+#define u82u80OpDotBackSlashu82(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= u8ldivs(in1[i],in2);}
+
+#define u162u160OpDotBackSlashu162(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= u16ldivs(in1[i],in2);}
+
+#define i82i80OpDotBackSlashi82(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= i8ldivs(in1[i],in2);}
+
+#define i162i160OpDotBackSlashi162(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= i16ldivs(in1[i],in2);}
+
+
+
+#define s2c0OpDotBackSlashc2(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cldivs(FloatComplex(in1[i],0),in2);}
+
+#define d2z0OpDotBackSlashz2(in1,size,in2,out) {int i;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zldivs(DoubleComplex(in1[i],0),in2);}
+
+#define c2s0OpDotBackSlashc2(in1,size,in2,out) c2c0OpDotBackSlashc2(in1,size,FloatComplex(in2,0),out)
+
+#define z2d0OpDotBackSlashz2(in1,size,in2,out) z2z0OpDotBackSlashz2(in1,size,DoubleComplex(in2,0),out)
+
+/* Matrix .\ Matrix */
+
+#define s2s2OpDotBackSlashs2(in1,size1,in2,size2,out) sldiva(in1,in2,size2[0]*size2[1],out)
+
+#define d2d2OpDotBackSlashd2(in1,size1,in2,size2,out) dldiva(in1,in2,size2[0]*size2[1],out)
+
+#define c2c2OpDotBackSlashc2(in1,size1,in2,size2,out) cldiva(in1,in2,size2[0]*size2[1],out)
+
+#define u82u82OpDotBackSlashu82(in1,size1,in2,size2,out) u8ldiva(in1,in2,size2[0]*size2[1],out)
+
+#define u162u162OpDotBackSlashu162(in1,size1,in2,size2,out) u16ldiva(in1,in2,size2[0]*size2[1],out)
+
+#define i82i82OpDotBackSlashi82(in1,size1,in2,size2,out) i8ldiva(in1,in2,size2[0]*size2[1],out)
+
+#define i162i162OpDotBackSlashi162(in1,size1,in2,size2,out) i16ldiva(in1,in2,size2[0]*size2[1],out)
+
+
+#define c2s2OpDotBackSlashc2(in1,size1,in2,size2,out) {int i;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= cldivs(in1[i],FloatComplex(in2[i], 0));}
+
+#define s2c2OpDotBackSlashc2(in1,size1,in2,size2,out) {int i; \
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= cldivs(FloatComplex(in1[i], 0),in2[i]);}
+
+#define z2z2OpDotBackSlashz2(in1,size1,in2,size2,out) zldiva(in1,in2,size2[0]*size2[1],out)
+
+#define z2d2OpDotBackSlashz2(in1,size1,in2,size2,out) {int i;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= zldivs(in1[i],DoubleComplex(in2[i], 0));}
+
+#define d2z2OpDotBackSlashz2(in1,size1,in2,size2,out) {int i;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= zldivs(DoubleComplex(in1[i], 0),in2[i]);}
+
+
+#endif /* !__INT_OPDOTBACKSLASH_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpDotSlash.h b/2.3-1/src/c/operations/interfaces/int_OpDotSlash.h
new file mode 100644
index 00000000..54f0c3a2
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpDotSlash.h
@@ -0,0 +1,176 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPDOTSLASH_H__
+#define __INT_OPDOTSLASH_H__
+
+/* Scalar ./ Scalar */
+
+#define s0s0OpDotSlashs0(in1,in2) srdivs(in1,in2)
+
+#define d0d0OpDotSlashd0(in1,in2) drdivs(in1,in2)
+
+#define c0c0OpDotSlashc0(in1,in2) crdivs(in1,in2)
+
+#define z0z0OpDotSlashz0(in1,in2) zrdivs(in1,in2)
+
+#define u80u80OpDotSlashu80(in1,in2) u8rdivs(in1,in2)
+
+#define u160u160OpDotSlashu160(in1,in2) u16rdivs(in1,in2)
+
+#define i80i80OpDotSlashi80(in1,in2) i8rdivs(in1,in2)
+
+#define i160i60OpDotSlashi60(in1,in2) i16divs(in1,in2)
+
+#define s0c0OpDotSlashc0(in1,in2) crdivs(FloatComplex(in1,0),in2)
+
+#define c0s0OpDotSlashc0(in1,in2) crdivs(in1,FloatComplex(in2,0))
+
+#define d0z0OpDotSlashz0(in1,in2) zrdivs(DoubleComplex(in1,0),in2)
+
+#define z0d0OpDotSlashz0(in1,in2) zrdivs(in1,DoubleComplex(in2,0))
+
+
+/* Scalar / Matrix */
+
+
+#define s0s2OpDotSlashs2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+
+#define d0d2OpDotSlashd2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+
+#define c0c2OpDotSlashc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1,in2[i]);}
+
+
+#define z0z2OpDotSlashz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1,in2[i]);}
+
+#define u80u82OpDotSlashu82(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+#define u160u162OpDotSlashu162(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+#define i80i82OpDotSlashi82(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+#define i160i162OpDotSlashi162(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+
+#define s0c2OpDotSlashc2(in1,in2,size,out) c0c2OpDotSlashc2(FloatComplex(in1,0),in2,size,out)
+
+
+#define d0z2OpDotSlashz2(in1,in2,size,out) z0z2OpDotSlashz2(DoubleComplex(in1,0),in2,size,out)
+
+
+#define c0s2OpDotSlashc2(in1,in2,size,out) {int i=0;\
+ float* temp = malloc((uint)(size[0]*size[1])*sizeof(float));\
+ sinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(temp[i],0));}
+
+#define z0d2OpDotSlashz2(in1,in2,size,out) {int i=0;\
+ double* temp = malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(temp[i],0));}
+
+
+/* Matrix / Scalar */
+
+
+#define s2s0OpDotSlashs2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+
+#define d2d0OpDotSlashd2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+
+#define c2c0OpDotSlashc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1[i],in2);}
+
+
+#define z2z0OpDotSlashz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1[i],in2);}
+
+#define u82u80OpDotSlashu82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++ out[i]=in[i]/in2);}
+
+#define u162u160OpDotSlashu162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++ out[i]=in[i]/in2);}
+
+#define i82i80OpDotSlashi82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++ out[i]=in[i]/in2);}
+
+#define i162i160OpDotSlashi162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++ out[i]=in[i]/in2);}
+
+
+
+#define s2c0OpDotSlashc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(FloatComplex(in1[i],0),in2);}
+
+
+#define d2z0OpDotSlashz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(DoubleComplex(in1[i],0),in2);}
+
+
+#define c2s0OpDotSlashc2(in1,size,in2,out) c2c0OpDotSlashc2(in1,size,FloatComplex(in2,0),out)
+
+
+#define z2d0OpDotSlashz2(in1,size,in2,out) z2z0OpDotSlashz2(in1,size,DoubleComplex(in2,0),out)
+
+
+
+/* Matrix ./ Matrix */
+
+#define s2s2OpDotSlashs2(in1,size1,in2,size2,out) srdiva(in1,in2,size2[0]*size2[1],out)
+
+#define d2d2OpDotSlashd2(in1,size1,in2,size2,out) drdiva(in1,in2,size2[0]*size2[1],out)
+
+#define c2c2OpDotSlashc2(in1,size1,in2,size2,out) crdiva(in1,in2,size2[0]*size2[1],out)
+
+#define z2z2OpDotSlashz2(in1,size1,in2,size2,out) zrdiva(in1,in2,size2[0]*size2[1],out)
+
+#define u82u82OpDotSlashu82(in1,size1,in2,size2,out) u8rdiva(in1,in2,size2[0]*size2[1],out)
+
+#define u162u162OpDotSlashu162(in1,size1,in2,size2,out) u16rdiva(in1,in2,size2[0]*size2[1],out)
+
+#define i82i82OpDotSlashi82(in1,size1,in2,size2,out) i8rdiva(in1,in2,size2[0]*size2[1],out)
+
+#define i162i162OpDotSlashi162(in1,size1,in2,size2,out) i16rdiva(in1,in2,size2[0]*size2[1],out)
+
+
+
+
+
+#define c2s2OpDotSlashc2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=crdivs(in1[i],FloatComplex(in2[i],0));}
+
+#define s2c2OpDotSlashc2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=crdivs(FloatComplex(in1[i],0),in2[i]);}
+
+#define z2d2OpDotSlashz2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zrdivs(in1[i],DoubleComplex(in2[i],0));}
+
+#define d2z2OpDotSlashz2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zrdivs(DoubleComplex(in1[i],0),in2[i]);}
+
+
+
+#endif /* !__INT_OPDOTSLASH_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpDotStar.h b/2.3-1/src/c/operations/interfaces/int_OpDotStar.h
new file mode 100644
index 00000000..4586e0c6
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpDotStar.h
@@ -0,0 +1,151 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPDOTSTAR_H__
+#define __INT_OPDOTSTAR_H__
+
+/* Scalar .* Scalar */
+
+#define s0s0OpDotStars0(in1,in2) smuls(in1,in2)
+
+#define d0d0OpDotStard0(in1,in2) dmuls(in1,in2)
+
+#define c0c0OpDotStarc0(in1,in2) cmuls(in1,in2)
+
+#define z0z0OpDotStarz0(in1,in2) zmuls(in1,in2)
+
+#define u80u80OpDotStaru80(in1,in2) u8muls(in1,in2)
+
+#define u160u160OpDotStaru160(in1,in2) u16muls(in1,in2)
+
+#define i80i80OpDotStari80(in1,in2) i8muls(in1,in2)
+
+#define i160i60OpDotStari60(in1,in2) i16muls(in1,in2)
+
+#define s0c0OpDotStarc0(in1,in2) cmuls(FloatComplex(in1,0),in2)
+
+#define c0s0OpDotStarc0(in1,in2) cmuls(in1,FloatComplex(in2,0))
+
+#define d0z0OpDotStarz0(in1,in2) zmuls(DoubleComplex(in1,0),in2)
+
+#define z0d0OpDotStarz0(in1,in2) zmuls(in1,DoubleComplex(in2,0))
+
+
+/* Scalar .* Matrix */
+
+#define s0s2OpDotStars2(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= smuls(in1,in2[i]);}
+
+#define d0d2OpDotStard2(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= dmuls(in1,in2[i]);}
+
+#define c0c2OpDotStarc2(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cmuls(in1,in2[i]);}
+
+#define z0z2OpDotStarz2(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zmuls(in1,in2[i]);}
+
+#define u80u82OpDotStaru80(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = u8muls(in1,in2[i]);}
+
+#define u160u162OpDotStaru160(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = u16muls(in1,in2[i]);}
+
+#define i80i82OpDotStari80(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = i8muls(in1,in2[i]);}
+
+#define i160i162OpDotStari160(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = i16muls(in1,in2[i]);}
+
+#define s0c2OpDotStarc2(in1,in2,size,out) c0c2OpDotStarc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2OpDotStarz2(in1,in2,size,out) z0z2OpDotStarz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2OpDotStarc2(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cmuls(in1,FloatComplex(in2[i],0));}
+
+#define z0d2OpDotStarz2(in1,in2,size,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zmuls(in1,DoubleComplex(in2[i],0));}
+
+
+/* Matrix .* Scalar */
+
+#define s2s0OpDotStars2(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= smuls(in1[i],in2);}
+
+#define d2d0OpDotStard2(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= dmuls(in1[i],in2);}
+
+#define c2c0OpDotStarc2(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cmuls(in1[i],in2);}
+
+#define z2z0OpDotStarz2(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zmuls(in1[i],in2);}
+
+#define u82u80OpDotStaru82(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = u8muls(in[i],in2);}
+
+#define u162u160OpDotStaru162(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = u16muls(in[i],in2);}
+
+#define i82i80OpDotStari82(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = i8muls(in[i],in2);}
+
+#define i162i160OpDotStari162(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i] = i16muls(in[i],in2);}
+
+#define s2c0OpDotStarc2(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= cmuls(FloatComplex(in1[i],0),in2);}
+
+#define d2z0OpDotStarz2(in1,size,in2,out) {int i=0;\
+ for(i=0;i<size[0]*size[1];i++) out[i]= zmuls(DoubleComplex(in1[i],0),in2);}
+
+#define c2s0OpDotStarc2(in1,size,in2,out) c2c0OpDotStarc2(in1,size,FloatComplex(in2,0),out)
+
+#define z2d0OpDotStarz2(in1,size,in2,out) z2z0OpDotStarz2(in1,size,DoubleComplex(in2,0),out)
+
+/* Matrix .* Matrix */
+
+#define s2s2OpDotStars2(in1,size1,in2,size2,out) smula(in1,in2,size1[0]*size2[1],out)
+
+#define d2d2OpDotStard2(in1,size1,in2,size2,out) dmula(in1,in2,size1[0]*size2[1],out)
+
+#define c2c2OpDotStarc2(in1,size1,in2,size2,out) cmula(in1,in2,size1[0]*size2[1],out)
+
+#define z2z2OpDotStarz2(in1,size1,in2,size2,out) zmula(in1,in2,size1[0]*size2[1],out)
+
+#define u82u82OpDotStaru82(in1,size1,in2,size2,out) u8mula(in1,in2,size1[0]*size2[1],out)
+
+#define u162u162OpDotStaru162(in1,size1,in2,size2,out) u16mula(in1,in2,size1[0]*size2[1],out)
+
+#define i82i82OpDotStari82(in1,size1,in2,size2,out) i8mula(in1,in2,size1[0]*size2[1],out)
+
+#define i162i61OpDotStari162(in1,size1,in2,size2,out) i16mula(in1,in2,size1[0]*size2[1],out)
+
+
+#define c2s2OpDotStarc2(in1,size1,in2,size2,out) {int i=0;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= cmuls(in1[i],FloatComplex(in2[i],0));}
+
+#define s2c2OpDotStarc2(in1,size1,in2,size2,out) {int i=0;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= cmuls(FloatComplex(in1[i],0),in2[i]);}
+
+
+#define z2d2OpDotStarz2(in1,size1,in2,size2,out) {int i=0;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= zmuls(in1[i],DoubleComplex(in2[i],0));}
+
+#define d2z2OpDotStarz2(in1,size1,in2,size2,out) {int i=0;\
+ for(i=0;i<size1[0]*size2[1];i++) out[i]= zmuls(DoubleComplex(in1[i],0),in2[i]);}
+
+
+#endif /* !__INT_OPDOTSTAR_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpEqual.h b/2.3-1/src/c/operations/interfaces/int_OpEqual.h
new file mode 100644
index 00000000..869b28dc
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpEqual.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPEQUAL_H__
+#define __INT_OPEQUAL_H__
+
+
+#define s0OpEquals0(in) in
+
+#define d0OpEquald0(in) in
+
+#define c0OpEqualc0(in) in
+
+#define z0OpEqualz0(in) in
+
+#define s2OpEquals2(in1,size,out) {int i=0; \
+ for (i = 0 ; i<size[0] * size[1] ; i++) out[i]=in1[i]; \
+ }
+
+#define d2OpEquald2(in1,size,out) {int i=0; \
+ for (i = 0 ; i<size[0] * size[1] ; i++) out[i]=in1[i]; \
+ }
+
+#define g2OpEqualg2(in1,size,out) {int i=0; \
+ for (i = 0 ; i<size[0] * size[1] ; i++) out[i]=in1[i]; \
+ }
+
+#endif /* !__INT_OPEQUAL_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpExt.h b/2.3-1/src/c/operations/interfaces/int_OpExt.h
new file mode 100644
index 00000000..7f11ede2
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpExt.h
@@ -0,0 +1,109 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) 2009-2010 - DIGITEO - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPEXT_H__
+#define __INT_OPEXT_H__
+
+#define s2s0OpExts0(in1,size,in2) in1[((int)in2)-1];
+#define d2d0OpExtd0(in1,size,in2) in1[((int)in2)-1];
+#define c2s0OpExtc0(in1,size,in2) in1[((int)in2)-1];
+#define z2d0OpExtz0(in1,size,in2) in1[((int)in2)-1];
+
+#define s3s0OpExts0(in1,size,in2) in1[((int)in2)-1];
+#define d3d0OpExtd0(in1,size,in2) in1[((int)in2)-1];
+
+#define s2s0s0OpExts0(in1,size,row,col) in1[(((int) col)-1)*size[0]+((int) row)-1];
+#define d2d0d0OpExtd0(in1,size,row,col) in1[(((int) col)-1)*size[0]+((int) row)-1];
+#define c2s0s0OpExtc0(in1,size,row,col) in1[(((int) col)-1)*size[0]+((int) row)-1];
+#define z2d0d0OpExtz0(in1,size,row,col) in1[(((int) col)-1)*size[0]+((int) row)-1];
+
+
+#define s2s2OpExts2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1]; \
+ }
+
+#define d2d2OpExtd2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1]; \
+ }
+
+#define c2s2OpExtc2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1]; \
+ }
+
+#define z2d2OpExtz2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1]; \
+ }
+
+
+#define s2s2s0OpExts2(in1,size1,rows,size2,col,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=s2s0s0OpExts0(in1,size1,(int)rows[i],((int) col)); \
+ }
+
+#define d2d2d0OpExtd2(in1,size1,rows,size2,col,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=d2d0d0OpExtd0(in1,size1,(int)rows[i],((int) col)); \
+ }
+
+#define c2s2s0OpExtc2(in1,size1,rows,size2,col,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=c2s0s0OpExtc0(in1,size1,(int)rows[i],((int) col)); \
+ }
+
+#define z2d2d0OpExtz2(in1,size1,rows,size2,col,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=z2d0d0OpExtz0(in1,size1,(int)rows[i],((int) col)); \
+ }
+
+#define s2s0s2OpExts2(in1,size1,row,cols,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=s2s0s0OpExts0(in1,size1,((int) row),(int)cols[i]); \
+ }
+
+#define d2d0d2OpExtd2(in1,size1,row,cols,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=d2d0d0OpExtd0(in1,size1,((int) row),(int)cols[i]); \
+ }
+
+#define c2s0s2OpExtc2(in1,size1,row,cols,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=c2s0s0OpExtc0(in1,size1,((int) row),(int)cols[i]); \
+ }
+
+#define z2d0d2OpExtz2(in1,size1,row,cols,size2,out) {int i; \
+ for (i=0;i<size2[0]*size2[1];i++) out[i]=z2d0d0OpExtz0(in1,size1,((int) row),(int)cols[i]); \
+ }
+
+
+#define s2s2s2OpExts2(in1,size1,rows,size2,cols,size3,out) {int i,j; \
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1]; \
+ }
+
+#define d2d2d2OpExtd2(in1,size1,rows,size2,cols,size3,out) {int i,j; \
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1]; \
+ }
+
+#define c2s2s2OpExtc2(in1,size1,rows,size2,cols,size3,out) {int i,j; \
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1]; \
+ }
+
+#define z2d2d2OpExtz2(in1,size1,rows,size2,cols,size3,out) {int i,j; \
+ for (i=0;i<size2[0]*size2[1];i++) \
+ for (j=0;j<size3[0]*size3[1];j++) \
+ out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1]; \
+ }
+
+#define d3d0d0d0OpExtd0(in, size, row, col, level) in[(int) ((row - 1)+ (col -1) * size[0] + (level - 1) * size[0] * size[1])];
+
+#endif /* !__INT_OPEXT_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpIns.h b/2.3-1/src/c/operations/interfaces/int_OpIns.h
new file mode 100644
index 00000000..d15876ba
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpIns.h
@@ -0,0 +1,364 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - POLIBA - Raffaele NUTRICATO
+ * Copyright (C) 2009 - INRIA - Arnaud TORSET
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __OPINS_H__
+#define __OPINS_H__
+
+
+/* a(3)=2 */
+#define s2s0s0OpIns(in,size,indice,newVal) in[(int) indice-1]=newVal;
+
+#define d2d0d0OpIns(in,size,indice,newVal) in[(int) indice-1]=newVal;
+
+#define c2s0c0OpIns(in,size,indice,newVal) in[(int) indice-1]=newVal;
+
+#define z2d0z0OpIns(in,size,indice,newVal) in[(int) indice-1]=newVal;
+
+#define s3s0s0OpIns(in,size,indice,newVal) in[(int) indice-1]=newVal;
+
+#define d3d0d0OpIns(in,size,indice,newVal) in[(int) indice-1]=newVal;
+
+/* a([1 2])=2 */
+#define s2s2s0OpIns(in,size1,indices,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)indices[i]-1]=newVal;\
+ }
+
+
+#define d2d2d0OpIns(in,size1,indices,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)indices[i]-1]=newVal;\
+ }
+
+#define c2s2c0OpIns(in,size1,indices,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)indices[i]-1]=newVal;\
+ }
+
+#define z2d2z0OpIns(in,size1,indices,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)indices[i]-1]=newVal;\
+ }
+/* a([1 2])=[3,1] */
+#define s2s2s2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=newVals[i];\
+ }
+
+
+#define d2d2d2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=newVals[i];\
+ }
+
+#define c2s2c2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=newVals[i];\
+ }
+
+#define z2d2z2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=newVals[i];\
+ }
+
+
+/* a(1,3)=2 */
+#define s2s0s0s0OpIns(in,size,row,col,newVal) in[(int)(col-1)*size[0]+(int)row-1]=newVal;
+
+#define d2d0d0d0OpIns(in,size,row,col,newVal) in[(int)(col-1)*size[0]+(int)row-1]=newVal;
+
+#define c2s0s0c0OpIns(in,size,row,col,newVal) in[(int)(col-1)*size[0]+(int)row-1]=newVal;
+
+#define z2d0d0z0OpIns(in,size,row,col,newVal) in[(int)(col-1)*size[0]+(int)row-1]=newVal;
+
+
+/* a(1,[3,1])=2 */
+#define s2s0s2s0OpIns(in,size1,row,cols,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVal;\
+ }
+
+#define d2d0d2d0OpIns(in,size1,row,cols,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVal;\
+ }
+
+#define c2s0s2c0OpIns(in,size1,row,cols,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVal;\
+ }
+
+#define z2d0d2z0OpIns(in,size1,row,cols,size2,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVal;\
+ }
+
+
+/* a([3,1],1)=2 */
+#define s2s2s0s0OpIns(in,size1,rows,size2,col,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVal;\
+ }
+
+#define d2d2d0d0OpIns(in,size1,rows,size2,col,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVal;\
+ }
+
+#define c2s2s0c0OpIns(in,size1,rows,size2,col,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVal;\
+ }
+
+#define z2d2d0z0OpIns(in,size1,rows,size2,col,newVal) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++) in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVal;\
+ }
+
+/* a([3,1],[1 2])=2 */
+#define s2s2s2s0OpIns(in,size1,rows,size2,cols,size3,newVal) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVal;\
+ }
+
+#define d2d2d2d0OpIns(in,size1,rows,size2,cols,size3,newVal) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVal;\
+ }
+
+#define c2s2s2c0OpIns(in,size1,rows,size2,cols,size3,newVal) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVal;\
+ }
+
+#define z2d2d2z0OpIns(in,size1,rows,size2,cols,size3,newVal) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVal;\
+ }
+/* a(1,[3,1])=[2,5] */
+#define s2s0s2s2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVals[i];\
+ }
+
+#define d2d0d2d2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVals[i];\
+ }
+
+#define c2s0s2c2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVals[i];\
+ }
+
+#define z2d0d2z2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=newVals[i];\
+ }
+/* a([3,1],1)=[2,5] */
+#define s2s2s0s2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVals[i];\
+ }
+
+#define d2d2d0d2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVals[i];\
+ }
+
+#define c2s2s0c2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVals[i];\
+ }
+
+#define z2d2d0z2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=newVals[i];\
+ }
+
+/* a([3,1],[1 2])=[2,1,3,5] */
+#define s2s2s2s2OpIns(in,size1,rows,size2,cols,size3,newVals,size4) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVals[i*size4[0]+j];\
+ }
+
+#define d2d2d2d2OpIns(in,size1,rows,size2,cols,size3,newVals,size4) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVals[i*size4[0]+j];\
+ }
+
+#define c2s2s2c2OpIns(in,size1,rows,size2,cols,size3,newVals,size4) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVals[i*size4[0]+j];\
+ }
+
+#define z2d2d2z2OpIns(in,size1,rows,size2,cols,size3,newVals,size4) {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=newVals[i*size4[0]+j];\
+ }
+
+
+/* Mixed types
+2 cases : we assign a real in a complex array => ok, we just have put the imaginary part to 0
+ we assign a complex in a real array => ko, we can't enlarge the input matrix. So we just replace by the real part of the complex
+*/
+
+/* a(3)=2 */
+#define s2s0c0OpIns(in,size,indice,newVal) s2s0s0OpIns(in,size,indice,creals(newVal))
+
+#define d2d0z0OpIns(in,size,indice,newVal) d2d0d0OpIns(in,size,indice,zreals(newVal))
+
+#define c2s0s0OpIns(in,size,indice,newVal) c2s0c0OpIns(in,size,indice,FloatComplex(newVal,0))
+
+#define z2d0d0OpIns(in,size,indice,newVal) z2d0z0OpIns(in,size,indice,DoubleComplex(newVal,0))
+
+
+/* a([1 2])=2 */
+#define s2s2c0OpIns(in,size1,indices,size2,newVal) s2s2s0OpIns(in,size1,indices,size2,creals(newVal))
+
+#define d2d2z0OpIns(in,size1,indices,size2,newVal) d2d2d0OpIns(in,size1,indices,size2,zreals(newVal))
+
+#define c2s2s0OpIns(in,size1,indices,size2,newVal) c2s2c0OpIns(in,size1,indices,size2,FloatComplex(newVal,0))
+
+#define z2d2d0OpIns(in,size1,indices,size2,newVal) z2d2z0OpIns(in,size1,indices,size2,DoubleComplex(newVal,0))
+
+
+/* a([1 2])=[3,1] */
+#define s2s2c2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=creals(newVals[i]);\
+ }
+
+
+#define d2d2z2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=zreals(newVals[i]);\
+ }
+
+#define c2s2s2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=FloatComplex(newVals[i],0);\
+ }
+
+#define z2d2d2OpIns(in,size1,indices,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size3[1];i++) in[(int)indices[i]-1]=DoubleComplex(newVals[i],0);\
+ }
+
+
+/* a(1,3)=2 */
+#define s2s0s0c0OpIns(in,size,row,col,newVal) s2s0s0s0OpIns(in,size,row,col,creals(newVal))
+
+#define d2d0d0z0OpIns(in,size,row,col,newVal) d2d0d0d0OpIns(in,size,row,col,zreals(newVal))
+
+#define c2s0s0s0OpIns(in,size,row,col,newVal) c2s0s0c0OpIns(in,size,row,col,FloatComplex(newVal,0))
+
+#define z2d0d0d0OpIns(in,size,row,col,newVal) z2d0d0z0OpIns(in,size,row,col,DoubleComplex(newVal,0))
+
+
+/* a(1,[3,1])=2 */
+#define s2s0s2c0OpIns(in,size1,row,cols,size2,newVal) s2s0s2s0OpIns(in,size1,row,cols,size2,creals(newVal))
+
+#define d2d0d2z0OpIns(in,size1,row,cols,size2,newVal) d2d0d2d0OpIns(in,size1,row,cols,size2,zreals(newVal))
+
+#define c2s0s2s0OpIns(in,size1,row,cols,size2,newVal) c2s0s2c0OpIns(in,size1,row,cols,size2,FloatComplex(newVal,0))
+
+#define z2d0d2d0OpIns(in,size1,row,cols,size2,newVal) z2d0d2z0OpIns(in,size1,row,cols,size2,DoubleComplex(newVal,0))
+
+
+/* a([3,1],1)=2 */
+#define s2s2s0c0OpIns(in,size1,rows,size2,col,newVal) s2s2s0s0OpIns(in,size1,rows,size2,col,creals(newVal))
+
+#define d2d2d0z0OpIns(in,size1,rows,size2,col,newVal) d2d2d0d0OpIns(in,size1,rows,size2,col,zreals(newVal))
+
+#define c2s2s0s0OpIns(in,size1,rows,size2,col,newVal) c2s2s0c0OpIns(in,size1,rows,size2,col,FloatComplex(newVal,0))
+
+#define z2d2d0d0OpIns(in,size1,rows,size2,col,newVal) z2d2d0z0OpIns(in,size1,rows,size2,col,DoubleComplex(newVal,0))
+
+/* a([3,1],[1 2])=2 */
+#define s2s2s2c0OpIns(in,size1,rows,size2,cols,size3,newVal) s2s2s2s0OpIns(in,size1,rows,size2,cols,size3,creals(newVal))
+
+#define d2d2d2z0OpIns(in,size1,rows,size2,cols,size3,newVal) d2d2d2d0OpIns(in,size1,rows,size2,cols,size3,zreals(newVal))
+
+#define c2s2s2s0OpIns(in,size1,rows,size2,cols,size3,newVal) c2s2s2c0OpIns(in,size1,rows,size2,cols,size3,FloatComplex(newVal,0))
+
+#define z2d2d2d0OpIns(in,size1,rows,size2,cols,size3,newVal) z2d2d2z0OpIns(in,size1,rows,size2,cols,size3,DoubleComplex(newVal,0))
+
+
+/* a(1,[3,1])=[2,5] */
+#define s2s0s2c2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=creals(newVals[i]);\
+ }
+
+#define d2d0d2z2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=zreals(newVals[i]);\
+ }
+
+#define c2s0s2s2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=FloatComplex(newVals[i],0);\
+ }
+
+#define z2d0d2d2OpIns(in,size1,row,cols,size2,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)row-1]=DoubleComplex(newVals[i],0);\
+ }
+/* a([3,1],1)=[2,5] */
+#define s2s2s0c2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=creals(newVals[i]);\
+ }
+
+#define d2d2d0z2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=zreals(newVals[i]);\
+ }
+
+#define c2s2s0s2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=FloatComplex(newVals[i],0);\
+ }
+
+#define z2d2d0d2OpIns(in,size1,rows,size2,col,newVals,size3) {int i;\
+ for (i=0;i<size2[0]*size2[1];i++)\
+ in[(int)(col-1)*size1[0]+(int)rows[i]-1]=DoubleComplex(newVals[i],0);\
+ }
+
+/* a([3,1],[1 2])=[2,1,3,5] */
+#define s2s2s2c2OpIns(in,size1,rows,size2,cols,size3,newVals,size4)\
+ {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=creals(newVals[i*size4[0]+j]);\
+ }
+
+#define d2d2d2z2OpIns(in,size1,rows,size2,cols,size3,newVals,size4)\
+ {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=zreals(newVals[i*size4[0]+j]);\
+ }
+
+#define c2s2s2s2OpIns(in,size1,rows,size2,cols,size3,newVals,size4)\
+ {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=FloatComplex(newVals[i*size4[0]+j],0);\
+ }
+
+#define z2d2d2d2OpIns(in,size1,rows,size2,cols,size3,newVals,size4)\
+ {int i,j;\
+ for (i=0;i<size3[0]*size3[1];i++)\
+ for (j=0;j<size2[0]*size2[1];j++)\
+ in[(int)(cols[i]-1)*size1[0]+(int)rows[j]-1]=DoubleComplex(newVals[i*size4[0]+j],0);\
+ }
+
+/* a(x,y,z) = b */
+
+#define s3s0s0s0s0OpIns(in, size1, row, col, level, newVal) \
+ in[(int) ((row - 1) + (col - 1) * size1[0] + (level - 1) * size1[0] * size1[1])] = newVal;
+
+#define d3d0d0d0d0OpIns(in, size1, row, col, level, newVal) \
+ in[(int) ((row - 1) + (col - 1) * size1[0] + (level - 1) * size1[0] * size1[1])] = newVal;
+#endif /* !__OPINS_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogAnd.h b/2.3-1/src/c/operations/interfaces/int_OpLogAnd.h
new file mode 100644
index 00000000..50a31894
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogAnd.h
@@ -0,0 +1,179 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPLOGAND_H__
+#define __INT_OPLOGAND_H__
+
+#define Bool2Float(in) ((in) ? 1.0f : 0.0f)
+
+#define Bool2Double(in) ((in) ? 1.0 : 0.0)
+
+#define Bool2Uint8(in) ((in) ? (uint8)1 : (uint8)0)
+
+#define Bool2Int8(in) ((in) ? (int8)1 : (int8)0)
+
+#define Bool2Uint16(in) ((in) ? (uint16)1 : (uint16)0)
+
+#define Bool2Int16(in) ((in) ? (int16)1 : (int16)0)
+
+/*scalar and scalar*/
+
+#define s0s0OpLogAnds0(in1, in2) Bool2Float(in1 != 0.0 && in2 != 0.0)
+
+#define s0c0OpLogAnds0(in1, in2) Bool2Float(in1 != 0.0 && (creals(in2) != 0.0 || cimags(in2)))
+
+#define c0s0OpLogAnds0(in1, in2) Bool2Float((creals(in1) != 0.0 || cimags(in1) != 0.0) && in2 != 0.0)
+
+#define c0c0OpLogAnds0(in1, in2) Bool2Float((creals(in1) != 0.0 || cimags(in1) != 0.0) && (creals(in2) != 0.0 || cimags(in2)))
+
+
+#define d0d0OpLogAndd0(in1, in2) Bool2Double(in1 != 0.0 && in2 != 0.0)
+
+#define z0z0OpLogAndd0(in1, in2) Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && (zreals(in2) != 0.0 || zimags(in2)))
+
+#define d0z0OpLogAndd0(in1, in2) Bool2Double(in1 != 0.0 && (zreals(in2) != 0.0 || zimags(in2)))
+
+#define z0d0OpLogAndd0(in1, in2) Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && in2 != 0.0)
+
+#define u80u80OpLogAndu80(in1, in2) Bool2Uint8(in1 != 0 && in2 != 0)
+
+#define i80i80OpLogAndi80(in1, in2) Bool2Int8(in1 != 0 && in2 != 0)
+
+#define u160u160OpLogAndu160(in1, in2) Bool2Uint16(in1 != 0 && in2 != 0)
+
+#define i160i160OpLogAndi160(in1, in2) Bool2Int16(in1 != 0 && in2 != 0)
+
+
+/*matrix and scalar*/
+
+#define s2s0OpLogAnds2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0 && in2 != 0.0);}
+
+#define s2c0OpLogAnds2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0 && (creals(in2) != 0.0 || cimags(in2)));}
+
+#define c2s0OpLogAnds2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0 || cimags(in1[i]) != 0.0) && in2 != 0.0);}
+
+#define c2c0OpLogAnds2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0 || cimags(in1[i]) != 0.0) && (creals(in2) != 0.0 || cimags(in2)));}
+
+
+#define d2d0OpLogAndd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 && in2 != 0.0);}
+
+#define z2z0OpLogAndd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && (zreals(in2) != 0.0 || zimags(in2)));}
+
+#define d2z0OpLogAndd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 && (zreals(in2) != 0.0 || zimags(in2)));}
+
+#define z2d0OpLogAndd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && in2 != 0.0);}
+
+#define u82u80OpLogAndu82(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Uint8(in1[i] != 0 && in2 != 0);}
+
+#define i82i80OpLogAndi82(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Int8(in1[i] != 0 && in2 != 0);}
+
+#define u82u80OpLogAndu82(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Uint8(in1[i] != 0 && in2 != 0);}
+
+#define u162u160OpLogAndu162(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Uint16(in1[i] != 0 && in2 != 0);}
+
+#define i162i160OpLogAndi162(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Int16(in1[i] != 0 && in2 != 0);}
+
+/*scalar and matrix*/
+
+#define s0s2OpLogAnds2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1 != 0.0 && in2[i] != 0.0);}
+
+#define s0c2OpLogAnds2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1 != 0.0 && (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+#define c0s2OpLogAnds2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1) != 0.0 || cimags(in1) != 0.0) && in2[i] != 0.0);}
+
+#define c0c2OpLogAnds2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1) != 0.0 || cimags(in1) != 0.0) && (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+
+#define d0d2OpLogAndd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1 != 0.0 && in2[i] != 0.0);}
+
+#define z0z2OpLogAndd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define d0z2OpLogAndd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1 != 0.0 && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define z0d2OpLogAndd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && in2[i] != 0.0);}
+
+#define u80u82OpLogAndu82(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint8(in1 != 0 && in2[i] != 0);}
+
+#define i80i82OpLogAndi82(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int8(in1 != 0 && in2[i] != 0);}
+
+#define u160u162OpLogAndu162(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint16(in1 != 0 && in2[i] != 0);}
+
+#define i160i162OpLogAndi162(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int16(in1 != 0 && in2[i] != 0);}
+
+/*TODO matrix and matrix*/
+
+#define s2s2OpLogAnds2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0 && in2[i] != 0.0);}
+
+#define s2c2OpLogAnds2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0 && (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+#define c2s2OpLogAnds2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0 || cimags(in1[i]) != 0.0) && in2[i] != 0.0);}
+
+#define c2c2OpLogAnds2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0 || cimags(in1[i]) != 0.0) && (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+
+#define d2d2OpLogAndd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 && in2[i] != 0.0);}
+
+#define z2z2OpLogAndd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define d2z2OpLogAndd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define z2d2OpLogAndd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && in2[i] != 0.0;)}
+
+
+#define u82u82OpLogAndu82(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint8(in1[i] != 0 && in2[i] != 0);}
+
+#define i82i82OpLogAndi82(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int8(in1[i] != 0 && in2[i] != 0);}
+
+#define u162u162OpLogAndu162(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint16(in1[i] != 0 && in2[i] != 0);}
+
+#define i162i162OpLogAndi162(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int16(in1[i] != 0 && in2[i] != 0);}
+
+#endif /* !__INT_OPLOGAND_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogEq.h b/2.3-1/src/c/operations/interfaces/int_OpLogEq.h
new file mode 100644
index 00000000..b693db65
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogEq.h
@@ -0,0 +1,145 @@
+/*
+** -*- C -*-
+**
+**
+** Made by Raffaele.Nutricato@tiscali.it
+**
+** Copyright Raffaele Nutricato
+*/
+/* Modified by Arnaud Torset */
+
+
+#ifndef __OPLOGEQ_H__
+#define __OPLOGEQ_H__
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#define s0s0OpLogEqs0(in1,in2) (float) (in1 == in2)
+#define d0d0OpLogEqd0(in1,in2) (double) (in1 == in2)
+#define c0c0OpLogEqs0(in1,in2) (float) ((creals(in1) == creals(in2)) && (cimags(in1) == cimags(in2)))
+#define z0z0OpLogEqd0(in1,in2) (double) ((zreals(in1) == zreals(in2)) && (zimags(in1) == zimags(in2)))
+#define u80u80OpLogEqu80(in1,in2) (uint8) (in1 == in2)
+#define i80i80OpLogEqi80(in1,in2) (int8) (in1 == in2)
+#define u160u160OpLogEqu160(in1,in2) (uint16) (in1 == in2)
+#define i160i160OpLogEqi160(in1,in2) (int16) (in1 == in2)
+
+
+#define s0c0OpLogEqs0(in1,in2) (float) ((in1==creals(in2)) && (0==cimags(in2)))
+#define d0z0OpLogEqd0(in1,in2) (double) ((in1==zreals(in2)) && (0==zimags(in2)))
+#define c0s0OpLogEqs0(in1,in2) s0c0OpLogEqs0(in2,in1)
+#define z0d0OpLogEqd0(in1,in2) d0z0OpLogEqd0(in2,in1)
+
+#define u80d0OpLogEqu80(in1,in2) (uint8) (in1 == (uint8)in2)
+#define i80d0OpLogEqi80(in1,in2) (int8) (in1 == (int8)in2)
+#define u160d0OpLogEqu160(in1,in2) (uint16) (in1 == (uint16)in2)
+#define i160d0OpLogEqi160(in1,in2) (int16) (in1 == (int16)in2)
+
+#define d0u80OpLogEqu80(in1,in2) (uint8) ((uint8)in1 == in2)
+#define d0i80OpLogEqi80(in1,in2) (int8) ((int8)in1 == in2)
+#define d0u160OpLogEqu160(in1,in2) (uint16) ((uint16)in1 == in2)
+#define d0i160OpLogEqi160(in1,in2) (int16) ((int16)in1 == in2)
+
+
+#define s2s0OpLogEqs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(float)(in1[i]==in2);\
+ }
+#define d2d0OpLogEqd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(double)(in1[i]==in2);\
+ }
+#define c2c0OpLogEqs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(float)((creals(in1[i])==creals(in2))&&(cimags(in1[i])==cimags(in2)));\
+ }
+#define z2z0OpLogEqd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(double)((zreals(in1[i])==zreals(in2))&&(zimags(in1[i])==zimags(in2)));\
+ }
+
+
+#define c2s0OpLogEqs2(in1,size,in2,out) c2c0OpLogEqs2(in1,size,FloatComplex(in2,0),out)
+#define z2d0OpLogEqd2(in1,size,in2,out) z2z0OpLogEqd2(in1,size,DoubleComplex(in2,0),out)
+
+#define s2c0OpLogEqs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(float)((in1[i]==creals(in2))&&(cimags(in2)==0));\
+ }
+
+#define d2z0OpLogEqd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(double)((in1[i]==zreals(in2))&&(zimags(in2)==0));\
+ }
+#define u82u80OpLogEqu82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(uint8)(in1[i]==in2);\
+ }
+
+#define i82i80OpLogEqi82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(int8)(in1[i]==in2);\
+ }
+
+#define u162u160OpLogEqu162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(uint16)(in1[i]==in2);\
+ }
+
+#define i162i160OpLogEqi162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(int16)(in1[i]==in2);\
+ }
+
+#define s0s2OpLogEqs2(in1,in2,inSize,out) s2s0OpLogEqs2(in2,inSize,in1,out)
+#define c0s2OpLogEqs2(in1,in2,inSize,out) s2c0OpLogEqs2(in2,inSize,in1,out)
+#define d0d2OpLogEqd2(in1,in2,inSize,out) d2d0OpLogEqd2(in2,inSize,in1,out)
+#define z0d2OpLogEqd2(in1,in2,inSize,out) d2z0OpLogEqd2(in2,inSize,in1,out)
+#define s0c2OpLogEqs2(in1,in2,inSize,out) c2s0OpLogEqs2(in2,inSize,in1,out)
+#define c0c2OpLogEqs2(in1,in2,inSize,out) c2c0OpLogEqs2(in2,inSize,in1,out)
+#define d0z2OpLogEqd2(in1,in2,inSize,out) z2d0OpLogEqd2(in2,inSize,in1,out)
+#define z0z2OpLogEqd2(in1,in2,inSize,out) z2z0OpLogEqd2(in2,inSize,in1,out)
+#define u80u82OpLogEqu82(in1,in2,inSize,out) u82u80OpLogEqu82(in2,inSize,in1,out)
+#define i80i82OpLogEqi82(in1,in2,inSize,out) i82i80OpLogEqi82(in2,inSize,in1,out)
+#define u160u162OpLogEqu162(in1,in2,inSize,out) u162u160OpLogEq162(in2,inSize,in1,out)
+#define i160i162OpLogEqi162(in1,in2,inSize,out) i162i160OpLogEqi162(in2,inSize,in1,out)
+
+
+/* we must have size1=size2 */
+
+#define s2s2OpLogEqs2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(float)(in1[i]==in2[i]);\
+ }
+#define d2d2OpLogEqd2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(double)(in1[i]==in2[i]);\
+ }
+#define c2c2OpLogEqs2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(float)((creals(in1[i])==creals(in2[i]))&&(cimags(in1[i])==cimags(in2[i])));\
+ }
+#define z2z2OpLogEqd2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(double)((zreals(in1[i])==zreals(in2[i]))&&(zimags(in1[i])==zimags(in2[i])));\
+ }
+
+#define s2c2OpLogEqs2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(float)((in1[i]==creals(in2[i]))&&(0==cimags(in2[i])));\
+ }
+#define d2z2OpLogEqd2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(double)((in1[i]==zreals(in2[i]))&&(0==zimags(in2[i])));\
+ }
+
+#define c2s2OpLogEqs2(in1,size1,in2,size2,out) s2c2OpLogEqs2(in2,size2,in1,size1,out)
+#define z2d2OpLogEqd2(in1,size1,in2,size2,out) d2z2OpLogEqd2(in2,size2,in1,size1,out)
+
+#define u82u82OpLogEqu82(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(uint8)(in1[i]==in2[i]);\
+ }
+
+#define i82i82OpLogEqi82(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(int8)(in1[i]==in2[i]);\
+ }
+
+#define u162u162OpLogEqu162(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(uint16)(in1[i]==in2[i]);\
+ }
+
+#define i162i162OpLogEqi162(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(int16)(in1[i]==in2[i]);\
+ }
+
+
+#endif /* !__OPLOGEQ_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogGe.h b/2.3-1/src/c/operations/interfaces/int_OpLogGe.h
new file mode 100644
index 00000000..edbdc071
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogGe.h
@@ -0,0 +1,110 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2007 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+
+#ifndef __OPLOGGE_H__
+#define __OPLOGGE_H__
+
+
+#define s0s0OpLogGes0(in1,in2) (float) (in1 >= in2)
+#define d0d0OpLogGed0(in1,in2) (double) (in1 >= in2)
+
+#define u80u80OpLogGeu80(in1,in2) (uint8) (in1 >= in2)
+
+#define i80i80OpLogGei80(in1,in2) (int8) (in1 >= in2)
+
+#define u160u160OpLogGeu160(in1,in2) (uint16) (in1 >= in2)
+
+#define i160i160OpLogGei160(in1,in2) (int16) (in1 >= in2)
+
+
+#define s2s0OpLogGes2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogGes0(in1[i],in2);\
+ }
+
+
+#define u82u80OpLogGeu82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogGeu80(in1[i],in2);\
+ }
+
+#define i82i80OpLogGei82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogGei80(in1[i],in2);\
+ }
+
+#define u82u80OpLogGeu82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogGeu80(in1[i],in2);\
+ }
+
+#define u162u160OpLogGeu162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogGeu160(in1[i],in2);\
+ }
+
+#define i162i160OpLogGei162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogGei160(in1[i],in2);\
+ }
+
+#define s0s2OpLogGes2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = s0s0OpLogGes0(in1,in2[i]);\
+ }
+
+#define u80u82OpLogGeu82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u80u80OpLogGeu80(in1,in2[i]);\
+ }
+
+#define u160u162OpLogGeu162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u160u160OpLogGeu160(in1,in2[i]);\
+ }
+
+
+#define i160i162OpLogGei162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i160i160OpLogGei160(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define s2s2OpLogGes2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogGes0(in1[i],in2[i]);\
+ }
+
+#define d2d0OpLogGed2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogGed0(in1[i],in2);\
+ }
+
+#define d0d2OpLogGed2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = d0d0OpLogGed0(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define d2d2OpLogGed2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogGed0(in1[i],in2[i]);\
+ }
+
+#define u82u82OpLogGeu82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogGeu80(in1[i],in2[i]);\
+ }
+
+#define i82i82OpLogGei82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogGei80(in1[i],in2[i]);\
+ }
+
+#define u162u162OpLogGeu162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogGeu160(in1[i],in2[i]);\
+ }
+
+#define i162i162OpLogGei162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogGei160(in1[i],in2[i]);\
+ }
+
+
+#endif /* !__OPLOGGE_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogGt.h b/2.3-1/src/c/operations/interfaces/int_OpLogGt.h
new file mode 100644
index 00000000..38c76cfb
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogGt.h
@@ -0,0 +1,103 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2007 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+
+#ifndef __OPLOGGT_H__
+#define __OPLOGGT_H__
+
+
+#define s0s0OpLogGts0(in1,in2) (float) (in1 > in2)
+#define d0d0OpLogGtd0(in1,in2) (double) (in1 > in2)
+
+#define u80u80OpLogGtu80(in1,in2) (uint8) (in1 > in2)
+#define i80i80OpLogGti80(in1,in2) (int8) (in1 > in2)
+#define u160u160OpLogGtu160(in1,in2) (uint16) (in1 > in2)
+#define i160i160OpLogGti160(in1,in2) (int16) (in1 > in2)
+
+#define s2s0OpLogGts2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogGts0(in1[i],in2);\
+ }
+
+#define u82u80OpLogGtu82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogGtu80(in1[i],in2);\
+ }
+
+#define i82i80OpLogGti82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogGti80(in1[i],in2);\
+ }
+
+#define u162u160OpLogGtu162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogGtu160(in1[i],in2);\
+ }
+
+#define i162i160OpLogGti162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogGti160(in1[i],in2);\
+ }
+
+#define s0s2OpLogGts2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = s0s0OpLogGts0(in1,in2[i]);\
+ }
+
+#define u80u82OpLogGtu82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u80u80OpLogGtu80(in1,in2[i]);\
+ }
+
+#define i80i82OpLogGti82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i80i80OpLogGti80(in1,in2[i]);\
+ }
+
+#define u160u162OpLogGtu162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u160u160OpLogGtu160(in1,in2[i]);\
+ }
+
+#define i160i162OpLogGti162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i160i160OpLogGti160(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define s2s2OpLogGts2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogGts0(in1[i],in2[i]);\
+ }
+
+#define d2d0OpLogGtd2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogGtd0(in1[i],in2);\
+ }
+
+#define d0d2OpLogGtd2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = d0d0OpLogGtd0(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define d2d2OpLogGtd2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogGtd0(in1[i],in2[i]);\
+ }
+
+#define u82u82OpLogGtu82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogGtu80(in1[i],in2[i]);\
+ }
+
+#define i82i82OpLogGti82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogGti80(in1[i],in2[i]);\
+ }
+
+#define u162u162OpLogGtu162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogGt160(in1[i],in2[i]);\
+ }
+
+#define i162i162OpLogGti162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogGti160(in1[i],in2[i]);\
+ }
+
+#endif /* !__OPLOGGT_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogLe.h b/2.3-1/src/c/operations/interfaces/int_OpLogLe.h
new file mode 100644
index 00000000..8dbd1aac
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogLe.h
@@ -0,0 +1,102 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2007 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+
+#ifndef __OPLOGLE_H__
+#define __OPLOGLE_H__
+
+
+#define s0s0OpLogLes0(in1,in2) (float) (in1 <= in2)
+#define d0d0OpLogLed0(in1,in2) (double) (in1 <= in2)
+#define u80u80OpLogLeu80(in1,in2) (uint8) (in1 <= in2)
+#define i80i80OpLogLei80(in1,in2) (int8) (in1 <= in2)
+#define u160u160OpLogLeu160(in1,in2) (uint16) (in1 <= in2)
+#define i160i160OpLogLei160(in1,in2) (int16) (in1 <= in2)
+
+#define s2s0OpLogLes2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogLes0(in1[i],in2);\
+ }
+
+#define u82u80OpLogLeu82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogLeu80(in1[i],in2);\
+ }
+
+#define i82i80OpLogLei82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogLei80(in1[i],in2);\
+ }
+
+#define u162u160OpLogLeu162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogLeu160(in1[i],in2);\
+ }
+
+#define i162i160OpLogLei162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogLei160(in1[i],in2);\
+ }
+
+#define s0s2OpLogLes2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = s0s0OpLogLes0(in1,in2[i]);\
+ }
+
+#define u80u82OpLogLeu82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u80u80OpLogLeu80(in1,in2[i]);\
+ }
+
+#define i80i82OpLogLei82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i80i80OpLogLei80(in1,in2[i]);\
+ }
+
+#define u160u162OpLogLeu162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u160u160OpLogLeu160(in1,in2[i]);\
+ }
+
+#define i160i162OpLogLei162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i160i160OpLogLei160(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define s2s2OpLogLes2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogLes0(in1[i],in2[i]);\
+ }
+
+#define d2d0OpLogLed2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogLed0(in1[i],in2);\
+ }
+
+#define d0d2OpLogLed2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = d0d0OpLogLed0(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define d2d2OpLogLed2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogLed0(in1[i],in2[i]);\
+ }
+
+#define u82u82OpLogLeu82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogLeu80(in1[i],in2[i]);\
+ }
+
+#define i82i82OpLogLei82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogLei80(in1[i],in2[i]);\
+ }
+
+#define u162u162OpLogLeu162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogLeu160(in1[i],in2[i]);\
+ }
+
+#define i162i162OpLogLei162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogLei160(in1[i],in2[i]);\
+ }
+
+#endif /* !__OPLOGLE_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogLt.h b/2.3-1/src/c/operations/interfaces/int_OpLogLt.h
new file mode 100644
index 00000000..8974b156
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogLt.h
@@ -0,0 +1,102 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2007 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/*
+ Update 23/02/09 by Arnaud Torset : Add matrix comparaison, remove include(floatComplex and doubleComplex)
+*/
+
+#ifndef __OPLOGLT_H__
+#define __OPLOGLT_H__
+
+
+#define s0s0OpLogLts0(in1,in2) (float) (in1 < in2)
+#define d0d0OpLogLtd0(in1,in2) (double) (in1 < in2)
+#define u80u80OpLogLtu80(in1,in2) (uint8) (in1 < in2)
+#define i80i80OpLogLti80(in1,in2) (int8) (in1 < in2)
+#define u160u160OpLogLtu160(in1,in2) (uint16) (in1 < in2)
+#define i160i160OpLogLti160(in1,in2) (int16) (in1 < in2)
+
+#define s2s0OpLogLts2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogLts0(in1[i],in2);\
+ }
+
+#define u82u80OpLogLtu82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogLtu80(in1[i],in2);\
+ }
+
+#define i82i80OpLogLti82(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogLti80(in1[i],in2);\
+ }
+
+#define u162u160OpLogLtu162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogLtu160(in1[i],in2);\
+ }
+
+#define i162i160OpLogLti162(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogLti160(in1[i],in2);\
+ }
+
+#define s0s2OpLogLts2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = s0s0OpLogLts0(in1,in2[i]);\
+ }
+
+#define u80u82OpLogLtu82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u80u80OpLogLtu80(in1,in2[i]);\
+ }
+
+#define i80i82OpLogLti82(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i80i80OpLogLti80(in1,in2[i]);\
+ }
+
+#define u160u162OpLogLtu162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = u160u160OpLogLtu160(in1,in2[i]);\
+ }
+
+#define i160i162OpLogLti162(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = i160i160OpLogLti160(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define s2s2OpLogLts2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = s0s0OpLogLts0(in1[i],in2[i]);\
+ }
+
+#define d2d0OpLogLtd2(in1, size1, in2, out) {int i;\
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogLtd0(in1[i],in2);\
+ }
+
+#define d0d2OpLogLtd2(in1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size2[0] * size2[1] ; ++i) out[i] = d0d0OpLogLtd0(in1,in2[i]);\
+ }
+
+/* we must have size1=size2 */
+#define d2d2OpLogLtd2(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = d0d0OpLogLtd0(in1[i],in2[i]);\
+ }
+
+#define u82u82OpLogLtu82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u80u80OpLogLtu80(in1[i],in2[i]);\
+ }
+
+#define i82i82OpLogLti82(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i80i80OpLogLti80(in1[i],in2[i]);\
+ }
+
+#define u162u162OpLogLtu162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = u160u160OpLogLtu160(in1[i],in2[i]);\
+ }
+
+#define i162i162OpLogLti162(in1, size1, in2, size2, out) {int i; \
+ for(i = 0 ; i < size1[0] * size1[1] ; ++i) out[i] = i160i160OpLogLti160(in1[i],in2[i]);\
+ }
+
+#endif /* !__OPLOGLT_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogNe.h b/2.3-1/src/c/operations/interfaces/int_OpLogNe.h
new file mode 100644
index 00000000..56cafefa
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogNe.h
@@ -0,0 +1,136 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Aranud Torset
+ *
+ * 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
+ *
+ */
+
+/* Idem that OpLogEq with a !(negation) behind*/
+
+#ifndef __OPLOGNE_H__
+#define __OPLOGNE_H__
+
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#define s0s0OpLogNes0(in1,in2) (float) !(in1 == in2)
+#define d0d0OpLogNed0(in1,in2) (double) !(in1 == in2)
+#define c0c0OpLogNes0(in1,in2) (float) !((creals(in1) == creals(in2)) && (cimags(in1) == cimags(in2)))
+#define z0z0OpLogNed0(in1,in2) (double) !((zreals(in1) == zreals(in2)) && (zimags(in1) == zimags(in2)))
+#define u80u80OpLogNeu80(in1,in2) (uint8) !(in1 == in2)
+#define i80i80OpLogNei80(in1,in2) (int8) !(in1 == in2)
+#define u160u160OpLogNeu160(in1,in2) (uint16) !(in1 == in2)
+#define i160i160OpLogNei160(in1,in2) (int16) !(in1 == in2)
+
+#define s0c0OpLogNes0(in1,in2) (float) !((in1==creals(in2)) && (0==cimags(in2)))
+#define d0z0OpLogNed0(in1,in2) (double) !((in1==zreals(in2)) && (0==zimags(in2)))
+#define c0s0OpLogNes0(in1,in2) s0c0OpLogNes0(in2,in1)
+#define z0d0OpLogNed0(in1,in2) d0z0OpLogNed0(in2,in1)
+
+
+
+#define s2s0OpLogNes2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(float)!(in1[i]==in2);\
+ }
+#define d2d0OpLogNed2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(double)!(in1[i]==in2);\
+ }
+#define c2c0OpLogNes2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(float)!((creals(in1[i])==creals(in2))&&(cimags(in1[i])==cimags(in2)));\
+ }
+#define z2z0OpLogNed2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(double)!((zreals(in1[i])==zreals(in2))&&(zimags(in1[i])==zimags(in2)));\
+ }
+
+
+#define c2s0OpLogNes2(in1,size,in2,out) c2c0OpLogNes2(in1,size,FloatComplex(in2,0),out)
+#define z2d0OpLogNed2(in1,size,in2,out) z2z0OpLogNed2(in1,size,DoubleComplex(in2,0),out)
+
+#define s2c0OpLogNes2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(float)!((in1[i]==creals(in2))&&(cimags(in2)==0));\
+ }
+
+#define d2z0OpLogNed2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(double)!((in1[i]==zreals(in2))&&(zimags(in2)==0));\
+ }
+
+#define u82u80OpLogNeu82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(uint8)!(in1[i]==in2);\
+ }
+
+#define i82i80OpLogNei82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(int8)!(in1[i]==in2);\
+ }
+
+#define u162u160OpLogNeu162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(uint16)!(in1[i]==in2);\
+ }
+
+#define i162i160OpLogNei162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=(int16)!(in1[i]==in2);\
+ }
+
+#define s0s2OpLogNes2(in1,in2,inSize,out) s2s0OpLogNes2(in2,inSize,in1,out)
+#define c0s2OpLogNes2(in1,in2,inSize,out) s2c0OpLogNes2(in2,inSize,in1,out)
+#define d0d2OpLogNed2(in1,in2,inSize,out) d2d0OpLogNed2(in2,inSize,in1,out)
+#define z0d2OpLogNed2(in1,in2,inSize,out) d2z0OpLogNed2(in2,inSize,in1,out)
+#define s0c2OpLogNes2(in1,in2,inSize,out) c2s0OpLogNes2(in2,inSize,in1,out)
+#define c0c2OpLogNes2(in1,in2,inSize,out) c2c0OpLogNes2(in2,inSize,in1,out)
+#define d0z2OpLogNed2(in1,in2,inSize,out) z2d0OpLogNed2(in2,inSize,in1,out)
+#define z0z2OpLogNed2(in1,in2,inSize,out) z2z0OpLogNed2(in2,inSize,in1,out)
+#define u80u82OpLogNeu82(in1,in2,inSize,out) u82u80OpLogNeu82(in2,inSize,in1,out)
+#define i80i82OpLogNei82(in1,in2,inSize,out) i82i80OpLogNei82(in2,inSize,in1,out)
+#define u160u162OpLogNeu162(in1,in2,inSize,out) u162u160OpLogNeu162(in2,inSize,in1,out)
+#define i160i162OpLogNei162(in1,in2,inSize,out) i162i160OpLogNei162(in2,inSize,in1,out)
+
+/* we must have size1=size2 */
+
+#define s2s2OpLogNes2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(float)!(in1[i]==in2[i]);\
+ }
+#define d2d2OpLogNed2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(double)!(in1[i]==in2[i]);\
+ }
+#define c2c2OpLogNes2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(float)!((creals(in1[i])==creals(in2[i]))&&(cimags(in1[i])==cimags(in2[i])));\
+ }
+#define z2z2OpLogNed2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(double)!((zreals(in1[i])==zreals(in2[i]))&&(zimags(in1[i])==zimags(in2[i])));\
+ }
+
+#define s2c2OpLogNes2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(float)!((in1[i]==creals(in2[i]))&&(0==cimags(in2[i])));\
+ }
+#define d2z2OpLogNed2(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) \
+ out[i]=(double)!((in1[i]==zreals(in2[i]))&&(0==zimags(in2[i])));\
+ }
+
+#define c2s2OpLogNes2(in1,size1,in2,size2,out) s2c2OpLogNes2(in2,size2,in1,size1,out)
+#define z2d2OpLogNed2(in1,size1,in2,size2,out) d2z2OpLogNed2(in2,size2,in1,size1,out)
+
+#define u82u82OpLogNeu82(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(uint8)!(in1[i]==in2[i]);\
+ }
+
+#define i82i82OpLogNei82(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(int8)!(in1[i]==in2[i]);\
+ }
+
+#define u162u162OpLogNeu162(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(uint16)!(in1[i]==in2[i]);\
+ }
+
+#define i162i162OpLogNei162(in1,size1,in2,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=(int16)!(in1[i]==in2[i]);\
+ }
+
+#endif /* !__OPLOGNE_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogNot.h b/2.3-1/src/c/operations/interfaces/int_OpLogNot.h
new file mode 100644
index 00000000..852cd1c7
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogNot.h
@@ -0,0 +1,67 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPLOGNOT_H__
+#define __INT_OPLOGNOT_H__
+
+#define s0OpLogNots0(in) (in==0) ? (float)1 : (float)0
+
+#define d0OpLogNotd0(in) (in==0) ? (double)1 : (double)0
+
+#define c0OpLogNotc0(in) (creals(in)==0) ? FloatComplex(1,0) : FloatComplex(0,0)
+
+#define z0OpLogNotz0(in) (zreals(in)==0) ? DoubleComplex(1,0) : DoubleComplex(0,0)
+
+#define u8OpLogNotu80(in) (in==0) ? (uint8)1 : (uint8)0
+
+#define i8OpLogNoti80(in) (in==0) ? (int8)1 : (int8)0
+
+#define u16OpLogNotu160(in) (in==0) ? (uint16)1 : (uint16)0
+
+#define i16OpLogNoti160(in) (in==0) ? (int16)1 : (int16)0
+
+#define s2OpLogNots2(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=s0OpLogNots0(in[i]);\
+ }
+
+#define d2OpLogNotd2(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=d0OpLogNotd0(in[i]);\
+ }
+
+#define c2OpLogNotc2(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=c0OpLogNotc0(in[i]);\
+ }
+
+#define z2OpLogNotz2(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=z0OpLogNotz0(in[i]);\
+ }
+
+#define u82OpLogNotu82(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u80OpLogNotu80(in[i]);\
+ }
+
+#define i82OpLogNoti82(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i80OpLogNoti80(in[i]);\
+ }
+
+#define u162OpLogNotu162(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=u160OpLogNoti160(in[i]);\
+ }
+
+#define i162OpLogNoti162(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=i160OpLogNotu160(in[i]);\
+ }
+
+
+#endif /* !__INT_OPLOGNOT_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpLogOr.h b/2.3-1/src/c/operations/interfaces/int_OpLogOr.h
new file mode 100644
index 00000000..c7acb51d
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpLogOr.h
@@ -0,0 +1,171 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPLOGOR_H__
+#define __INT_OPLOGOR_H__
+
+#define Bool2Float(in) ((in) ? 1.0f : 0.0f)
+
+#define Bool2Double(in) ((in) ? 1.0 : 0.0)
+
+#define Bool2Uint8(in) ((in) ? (uint8)1 : (uint8)0)
+
+#define Bool2Int8(in) ((in) ? (int8)1 : (int8)0)
+
+#define Bool2Uint16(in) ((in) ? (uint16)1 : (uint16)0)
+
+#define Bool2Int16(in) ((in) ? (int16)1 : (int16)0)
+
+/*scalar or scalar */
+
+#define s0s0OpLogOrs0(in1, in2) Bool2Float(in1 != 0.0f || in2 != 0.0f)
+
+#define d0d0OpLogOrd0(in1, in2) Bool2Double(in1 != 0.0 || in2 != 0.0)
+
+#define c0c0OpLogOrs0(in1, in2) Bool2Float((creals(in1) != 0.0f || cimags(in1) != 0.0f) || (creals(in2) != 0.0f || cimags(in2)))
+
+#define s0c0OpLogOrs0(in1, in2) Bool2Float(in1 != 0.0f && (creals(in2) != 0.0f || cimags(in2)))
+
+#define c0s0OpLogOrs0(in1, in2) Bool2Float((creals(in1) != 0.0f || cimags(in1) != 0.0f) && in2 != 0.0f)
+
+#define z0z0OpLogOrd0(in1, in2) Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && (zreals(in2) != 0.0 || zimags(in2)))
+
+#define d0z0OpLogOrd0(in1, in2) Bool2Double(in1 != 0.0 && (zreals(in2) != 0.0 || zimags(in2)))
+
+#define z0d0OpLogOrd0(in1, in2) Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && in2 != 0.0)
+
+#define u80u80OpLogOru80(in1, in2) Bool2Uint8(in1 != 0 || in2 != 0)
+
+#define i80i80OpLogOri80(in1, in2) Bool2Int8(in1 != 0 || in2 != 0)
+
+#define u160u160OpLogOru160(in1, in2) Bool2Uint16(in1 != 0 || in2 != 0)
+
+#define i160i160OpLogOri160(in1, in2) Bool2Int16(in1 != 0 || in2 != 0)
+
+/*matrix or scalar */
+
+#define s2s0OpLogOrs2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0f || in2 != 0.0f);}
+
+#define d2d0OpLogOrd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 || in2 != 0.0);}
+
+#define c2c0OpLogOrs2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0f || cimags(in1[i]) != 0.0f) || (creals(in2) != 0.0f || cimags(in2)));}
+
+#define s2c0OpLogOrs2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0f && (creals(in2) != 0.0f || cimags(in2)));}
+
+#define c2s0OpLogOrs2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0f || cimags(in1[i]) != 0.0f) && in2 != 0.0f);}
+
+#define z2z0OpLogOrd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && (zreals(in2) != 0.0 || zimags(in2)));}
+
+#define d2z0OpLogOrd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 && (zreals(in2) != 0.0 || zimags(in2)));}
+
+#define z2d0OpLogOrd2(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && in2 != 0.0);}
+
+#define i82i80OpLogOri82(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Int8(in1[i] != 0 || in2 != 0);}
+
+#define u82u80OpLogOru82(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Uint8(in1[i] != 0 || in2 != 0);}
+
+#define u162u160OpLogOru162(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Uint16(in1[i] != 0 || in2 != 0);}
+
+#define i162i160OpLogOri162(in1, size1, in2, out) {int i = 0 ;\
+ for (i = 0 ; i < size1[0]*size1[1] ; i++ ) out[i] = Bool2Int16(in1[i] != 0 || in2 != 0);}
+
+
+/*scalar or matrix */
+
+#define s0s2OpLogOrs2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1 != 0.0 || in2[i] != 0.0);}
+
+#define d0d2OpLogOrd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1 != 0.0 || in2[i] != 0.0);}
+
+#define c0c2OpLogOrs2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1) != 0.0 || cimags(in1) != 0.0) || (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+#define s0c2OpLogOrs2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1 != 0.0 && (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+#define c0s2OpLogOrs2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1) != 0.0 || cimags(in1) != 0.0) && in2[i] != 0.0);}
+
+#define z0z2OpLogOrd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define d0z2OpLogOrd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1 != 0.0 && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define z0d2OpLogOrd2(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1) != 0.0 || zimags(in1) != 0.0) && in2[i] != 0.0);}
+
+#define u80u82OpLogOru82(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint8(in1 != 0 || in2[i] != 0);}
+
+#define i80i82OpLogOri82(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int8(in1 != 0 || in2[i] != 0);}
+
+#define u160u162OpLogOru162(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint16(in1 != 0 || in2[i] != 0);}
+
+#define i160i162OpLogOri162(in1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int16(in1 != 0 || in2[i] != 0);}
+
+/*matrix or matrix */
+
+#define s2s2OpLogOrs2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0 || in2[i] != 0.0);}
+
+#define d2d2OpLogOrd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 || in2[i] != 0.0);}
+
+#define c2c2OpLogOrs2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0 || cimags(in1[i]) != 0.0) || (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+#define s2c2OpLogOrs2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float(in1[i] != 0.0 && (creals(in2[i]) != 0.0 || cimags(in2[i])));}
+
+#define c2s2OpLogOrs2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Float((creals(in1[i]) != 0.0 || cimags(in1[i]) != 0.0) && in2[i] != 0.0);}
+
+#define z2z2OpLogOrd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define d2z2OpLogOrd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double(in1[i] != 0.0 && (zreals(in2[i]) != 0.0 || zimags(in2[i])));}
+
+#define z2d2OpLogOrd2(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Double((zreals(in1[i]) != 0.0 || zimags(in1[i]) != 0.0) && in2[i] != 0.0);}
+
+#define u82u82OpLogOru82(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint8(in1[i] != 0 || in2[i] != 0);}
+
+#define i82i82OpLogOri82(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int8(in1[i] != 0 || in2[i] != 0);}
+
+#define u162u162OpLogOru162(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Uint16(in1[i] != 0 || in2[i] != 0);}
+
+#define i162i162OpLogOri162(in1, size1, in2, size2, out) {int i = 0 ;\
+ for (i = 0 ; i < size2[0]*size2[1] ; i++ ) out[i] = Bool2Int16(in1[i] != 0 || in2[i] != 0);}
+
+#endif /* !__INT_OPLOGOR_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpMinus.h b/2.3-1/src/c/operations/interfaces/int_OpMinus.h
new file mode 100644
index 00000000..2ea8a521
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpMinus.h
@@ -0,0 +1,248 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPMINUS_H__
+#define __INT_OPMINUS_H__
+
+/* - Scalar */
+
+#define s0OpMinuss0(in) -in
+
+#define d0OpMinusd0(in) -in
+
+#define c0OpMinusc0(in) FloatComplex(-creals(in), -cimags(in))
+
+#define z0OpMinusz0(in) DoubleComplex(-zreals(in), -zimags(in))
+
+#define u80OpMinusu80(in) -(int8)in
+
+#define i80OpMinusi80(in) -in
+
+#define u160OpMinusu160(in) -(int16)in
+
+#define i160OpMinusi160(in) -in
+
+/* - Matrix */
+
+#define s2OpMinuss2(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = -in[i]; \
+ }
+
+#define d2OpMinusd2(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = -in[i]; \
+ }
+
+#define c2OpMinusc2(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = FloatComplex(-creals(in[i]), -cimags(in[i])); \
+ }
+
+#define z2OpMinusz2(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = DoubleComplex(-zreals(in[i]), -zimags(in[i])); \
+ }
+
+#define u82OpMinusu82(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = -(int8)in[i]; \
+ }
+
+
+#define i82OpMinusi82(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = -in[i]; \
+ }
+
+
+#define u162OpMinusu162(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = -(int16)in[i]; \
+ }
+
+
+#define i162OpMinui162(in, size, out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i] = -(int16)in[i]; \
+ }
+
+
+/* Scalar - Scalar */
+
+#define s0s0OpMinuss0(in1,in2) sdiffs(in1,in2)
+
+#define d0d0OpMinusd0(in1,in2) ddiffs(in1,in2)
+
+#define c0c0OpMinusc0(in1,in2) cdiffs(in1,in2)
+
+#define z0z0OpMinusz0(in1,in2) zdiffs(in1,in2)
+
+#define s0c0OpMinusc0(in1,in2) cdiffs(FloatComplex(in1,0),in2)
+
+#define c0s0OpMinusc0(in1,in2) cdiffs(in1,FloatComplex(in2,0))
+
+#define d0z0OpMinusz0(in1,in2) zdiffs(DoubleComplex(in1,0),in2)
+
+#define z0d0OpMinusz0(in1,in2) zdiffs(in1,DoubleComplex(in2,0))
+
+#define u80u80OpMinusu80(in1,in2) u8diffs(in1,in2)
+
+#define i80i80OpMinusi80(in1,in2) i8diffs(in1,in2)
+
+#define u160u160OpMinusu160(in1,in2) u16diffs(in1,in2)
+
+#define i160i160OpMinusi160(in1,in2) i16diffs(in1,in2)
+
+/* Matrix - Scalar */
+
+
+#define s2s0OpMinuss2(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]-in2; \
+ }
+
+
+#define d2d0OpMinusd2(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]-in2; \
+ }
+
+
+#define c2c0OpMinusc2(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=cdiffs(in1[i],in2); \
+ }
+
+#define c2s0OpMinusc2(in1,size,in2,out) c2c0OpMinusc2(in1,size,FloatComplex(in2,0),out)
+
+
+#define s2c0OpMinusc2(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=cdiffs(FloatComplex(in1[i],0),in2); \
+ }
+
+
+#define z2z0OpMinusz2(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=zdiffs(in1[i],in2); \
+ }
+
+#define z2d0OpMinusz2(in1,size,in2,out) z2z0OpMinusz2(in1,size,DoubleComplex(in2,0),out)
+
+
+#define d2z0OpMinusz2(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=zdiffs(DoubleComplex(in1[i],0),in2); \
+ }
+
+
+#define u82u80OpMinusu82(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]-in2; \
+ }
+
+
+#define i82i80OpMinusi82(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]-in2; \
+ }
+
+
+#define u162u160OpMinusu162(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]-in2; \
+ }
+
+
+#define i162i160OpMinusi162(in1,size,in2,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]-in2; \
+ }
+
+/* Scalar - Matrix */
+
+
+#define s0s2OpMinuss2(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1-in2[i]; \
+ }
+
+
+#define d0d2OpMinusd2(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1-in2[i]; \
+ }
+
+
+#define c0c2OpMinusc2(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=cdiffs(in1,in2[i]); \
+ }
+
+#define s0c2OpMinusc2(in1,in2,size,out) c0c2OpMinusc2(FloatComplex(in1,0),in2,size,out)
+
+
+#define c0s2OpMinusc2(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=cdiffs(in1,FloatComplex(in2[i],0)); \
+ }
+
+
+#define z0z2OpMinusz2(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=zdiffs(in1,in2[i]); \
+ }
+
+#define d0z2OpMinusz2(in1,in2,size,out) z0z2OpMinusz2(DoubleComplex(in1,0),in2,size,out)
+
+
+#define z0d2OpMinusz2(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=zdiffs(in1,DoubleComplex(in2[i],0)); \
+ }
+
+
+#define u80u82OpMinusu82(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1-in2[i]; \
+ }
+
+
+#define i80i82OpMinusi82(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1-in2[i]; \
+ }
+
+#define u160u162OpMinusu162(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1-in2[i]; \
+ }
+
+#define i160i162OpMinusi162(in1,in2,size,out) {int i=0; \
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1-in2[i]; \
+ }
+
+/* Matrix - Matrix */
+
+#define s2s2OpMinuss2(in1,size1,in2,size2,out) sdiffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define d2d2OpMinusd2(in1,size1,in2,size2,out) ddiffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define c2c2OpMinusc2(in1,size1,in2,size2,out) cdiffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+
+#define s2c2OpMinusc2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cdiffs(FloatComplex(in1[i],0),in2[i]); \
+ }
+
+
+#define c2s2OpMinusc2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cdiffs(in1[i],FloatComplex(in2[i],0));\
+ }
+
+#define z2z2OpMinusz2(in1,size1,in2,size2,out) zdiffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+
+#define d2z2OpMinusz2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zdiffs(DoubleComplex(in1[i],0),in2[i]); \
+ }
+
+
+#define z2d2OpMinusz2(in1,size1,in2,size2,out) {int i; \
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zdiffs(in1[i],DoubleComplex(in2[i],0)); \
+ }
+
+#define u82u82OpMinusu82(in1,size1,in2,size2,out) u8diffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define i82i82OpMinusi82(in1,size1,in2,size2,out) i8diffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define u162u162OpMinusu162(in1,size1,in2,size2,out) u16diffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define i162i162OpMinusi162(in1,size1,in2,size2,out) i16diffa(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#endif /* !__INT_OPMINUS_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpPlus.h b/2.3-1/src/c/operations/interfaces/int_OpPlus.h
new file mode 100644
index 00000000..a5731d43
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpPlus.h
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPPLUS_H__
+#define __INT_OPPLUS_H__
+
+
+/* Scalar + Scalar */
+
+#define s0s0OpPluss0(in1,in2) sadds(in1,in2)
+
+#define d0d0OpPlusd0(in1,in2) dadds(in1,in2)
+
+#define c0c0OpPlusc0(in1,in2) cadds(in1,in2)
+
+#define z0z0OpPlusz0(in1,in2) zadds(in1,in2)
+
+#define s0c0OpPlusc0(in1,in2) cadds(FloatComplex(in1,0),in2)
+
+#define c0s0OpPlusc0(in1,in2) cadds(in1,FloatComplex(in2,0))
+
+#define d0z0OpPlusz0(in1,in2) zadds(DoubleComplex(in1,0),in2)
+
+#define z0d0OpPlusz0(in1,in2) zadds(in1,DoubleComplex(in2,0))
+
+#define u80u80OpPlusu80(in1,in2) u8adds(in1,in2)
+
+#define i80i80OpPlusi80(in1,in2) i8adds(in1,in2)
+
+#define u160u160OpPlusu160(in1,in2) u16adds(in1,in2)
+
+#define i160i160OpPlusi160(in1,in2) i16adds(in1,in2)
+
+/* Matrix + Scalar */
+
+#define s2s0OpPluss2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]+in2;\
+ }
+
+#define d2d0OpPlusd2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]+in2;\
+ }
+
+#define c2c0OpPlusc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cadds(in1[i],in2);\
+ }
+
+/*On transforme le scalaire float en scalaire floatComplex pour pouvoir utiliser c2c0...c2*/
+#define c2s0OpPlusc2(in1,size,in2,out) c2c0OpPlusc2(in1,size,FloatComplex(in2,0),out)
+
+#define s2c0OpPlusc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cadds(FloatComplex(in1[i],0),in2);\
+ }
+
+#define z2z0OpPlusz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zadds(in1[i],in2);\
+ }
+
+/*On transforme le scalaire double en scalaire doubleComplex pour pouvoir utiliser z2z0...z2*/
+#define z2d0OpPlusz2(in1,size,in2,out) z2z0OpPlusz2(in1,size,DoubleComplex(in2,0),out)
+
+#define d2z0OpPlusz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zadds(DoubleComplex(in1[i],0),in2);\
+ }
+
+#define u82u80OpPlusu82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]+in2;\
+ }
+
+#define i82i80OpPlusi82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]+in2;\
+ }
+
+#define u162u160OpPlusu162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]+in2;\
+ }
+
+#define i162i160OpPlusi162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]+in2;\
+ }
+
+/* Scalar + Matrix */
+
+#define s0s2OpPluss2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1+in2[i];\
+ }
+
+#define d0d2OpPlusd2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1+in2[i];\
+ }
+
+#define c0c2OpPlusc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cadds(in1,in2[i]);\
+ }
+
+/*On transforme le scalaire float en scalaire floatComplex pour pouvoir utiliser c0c2...c2*/
+#define s0c2OpPlusc2(in1,in2,size,out) c0c2OpPlusc2(FloatComplex(in1,0),in2,size,out)
+
+#define c0s2OpPlusc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cadds(in1,FloatComplex(in2[i],0));\
+ }
+
+#define z0z2OpPlusz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zadds(in1,in2[i]);\
+ }
+
+/*On transforme le scalaire double en scalaire doubleComplex pour pouvoir utiliser z0z2...z2*/
+#define d0z2OpPlusz2(in1,in2,size,out) z0z2OpPlusz2(DoubleComplex(in1,0),in2,size,out)
+
+#define z0d2OpPlusz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zadds(in1,DoubleComplex(in2[i],0));\
+ }
+
+#define u80u82OpPlusu82(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1+in2[i];\
+ }
+
+#define i80i82OpPlusi82(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1+in2[i];\
+ }
+
+#define u160u162OpPlusu162(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1+in2[i];\
+ }
+
+#define i160i162OpPlusi162(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1+in2[i];\
+ }
+
+/* Matrix + Matrix */
+
+#define s2s2OpPluss2(in1,size1,in2,size2,out) sadda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define d2d2OpPlusd2(in1,size1,in2,size2,out) dadda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define c2c2OpPlusc2(in1,size1,in2,size2,out) cadda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+
+#define s2c2OpPlusc2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cadds(FloatComplex(in1[i],0),in2[i]);\
+ }
+
+#define c2s2OpPlusc2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=cadds(in1[i],FloatComplex(in2[i],0));\
+ }
+
+#define z2z2OpPlusz2(in1,size1,in2,size2,out) zadda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+
+#define d2z2OpPlusz2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zadds(DoubleComplex(in1[i],0),in2[i]);\
+ }
+
+
+#define z2d2OpPlusz2(in1,size1,in2,size2,out) {int i=0;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=zadds(in1[i],DoubleComplex(in2[i],0));\
+ }
+
+#define u82u82OpPlusu82(in1,size1,in2,size2,out) u8adda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define i82i82OpPlusi82(in1,size1,in2,size2,out) i8adda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define u162u162OpPlusu162(in1,size1,in2,size2,out) u16adda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+
+#define i162i162OpPlusi162(in1,size1,in2,size2,out) i16adda(in1, size1[0]*size1[1], in2, size2[0]*size2[1], out)
+/* Strings */
+/* RNU: size1[1]-1 -> "-1" because '\0' of the first string must be removed. */
+#define g2g2OpPlusg2(in1,size1,in2,size2,out) {int i = 0, j = 0; \
+ for(i = 0 ; i < size1[1]-1 ; ++i, ++j) out[j] = in1[i]; \
+ for(i = 0 ; i < size2[1] ; ++i, ++j) out[j] = in2[i]; \
+ }
+
+
+#endif /* !__INT_OPPLUS_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpSlash.h b/2.3-1/src/c/operations/interfaces/int_OpSlash.h
new file mode 100644
index 00000000..635fe2bf
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpSlash.h
@@ -0,0 +1,195 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPSLASH_H__
+#define __INT_OPSLASH_H__
+
+/* Scalar / Scalar */
+
+#define s0s0OpSlashs0(in1,in2) srdivs(in1,in2)
+
+#define d0d0OpSlashd0(in1,in2) drdivs(in1,in2)
+
+#define c0c0OpSlashc0(in1,in2) crdivs(in1,in2)
+
+#define z0z0OpSlashz0(in1,in2) zrdivs(in1,in2)
+
+#define s0c0OpSlashc0(in1,in2) crdivs(FloatComplex(in1,0),in2)
+
+#define c0s0OpSlashc0(in1,in2) crdivs(in1,FloatComplex(in2,0))
+
+#define d0z0OpSlashz0(in1,in2) zrdivs(DoubleComplex(in1,0),in2)
+
+#define z0d0OpSlashz0(in1,in2) zrdivs(in1,DoubleComplex(in2,0))
+
+#define u80u80OpSlashu80(in1,in2) u8rdivs(in1,in2)
+
+#define i80i80OpSlashi80(in1,in2) i8rdivs(in1,in2)
+
+#define u160u160OpSlashu160(in1,in2) u16rdivs(in1,in2)
+
+#define i160i160OpSlashi160(in1,in2) i16rdivs(in1,in2)
+
+/* Scalar / Matrix */
+
+
+#define s0s2OpSlashs2(in1,in2,size,out) {int i=0;\
+ sinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*out[i];}
+
+
+#define d0d2OpSlashd2(in1,in2,size,out) {int i=0;\
+ dinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*out[i];}
+
+
+#define c0c2OpSlashc2(in1,in2,size,out) {int i=0;\
+ cinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,out[i]);}
+
+
+#define z0z2OpSlashz2(in1,in2,size,out) {int i=0;\
+ zinverma(in2,out,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,out[i]);}
+
+
+
+#define s0c2OpSlashc2(in1,in2,size,out) c0c2OpSlashc2(FloatComplex(in1,0),in2,size,out)
+
+
+#define d0z2OpSlashz2(in1,in2,size,out) z0z2OpSlashz2(DoubleComplex(in1,0),in2,size,out)
+
+
+/* FIXME: malloc */
+#define c0s2OpSlashc2(in1,in2,size,out) {int i=0;\
+ float* temp = malloc((uint)(size[0]*size[1])*sizeof(float));\
+ sinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(temp[i],0));}
+
+/* FIXME: malloc */
+#define z0d2OpSlashz2(in1,in2,size,out) {int i=0;\
+ double* temp = malloc((uint)(size[0]*size[1])*sizeof(double));\
+ dinverma(in2,temp,size[0]);\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(temp[i],0));}
+
+#define u80u82OpSlashu82(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+#define i80i82OpSlashi82(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+#define u160u162OpSlashu162(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+#define i160i162OpSlashi162(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1/in2[i];}
+
+/* Matrix / Scalar */
+
+
+#define s2s0OpSlashs2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+
+#define d2d0OpSlashd2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+
+#define c2c0OpSlashc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(in1[i],in2);}
+
+
+#define z2z0OpSlashz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(in1[i],in2);}
+
+
+#define s2c0OpSlashc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=crdivs(FloatComplex(in1[i],0),in2);}
+
+
+#define d2z0OpSlashz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zrdivs(DoubleComplex(in1[i],0),in2);}
+
+
+#define c2s0OpSlashc2(in1,size,in2,out) c2c0OpSlashc2(in1,size,FloatComplex(in2,0),out)
+
+
+#define z2d0OpSlashz2(in1,size,in2,out) z2z0OpSlashz2(in1,size,DoubleComplex(in2,0),out)
+
+
+#define u82u80OpSlashu82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+#define i82i80OpSlashi82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+#define u162u160OpSlashu162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+#define i162i160OpSlashi162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]/in2;}
+
+/* Matrix / Matrix */
+
+#define s2s2OpSlashs2(in1,size1,in2,size2,out) srdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpSlashd2(in1,size1,in2,size2,out) drdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2c2OpSlashc2(in1,size1,in2,size2,out) crdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2z2OpSlashz2(in1,size1,in2,size2,out) zrdivma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+/* FIXME: There is some malloc in the define below, maybe they can be remove */
+#define c2s2OpSlashc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(float));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2OpSlashc2(in1, size1, FloatComplexMatrix(in2,temp,size2[0]*size2[1]), size2, out);}
+
+#define s2c2OpSlashc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ c2c2OpSlashc2(FloatComplexMatrix(in2,temp,size1[0]*size1[1]), size1, in2, size2, out);}
+
+#define z2d2OpSlashz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size2[0],size2[1],0);\
+ z2z2OpSlashz2(in1, size1, DoubleComplexMatrix(in2,temp,size2[0]*size2[1]), size2, out);}
+
+#define d2z2OpSlashz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ z2z2OpSlashz2(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]), size1, in2, size2, out);}
+
+
+/* Vector * Vector, so there is a scalar output */
+
+#define s2s2OpSlashs0(in1, size1, in2, size2) srdivv( in1, in2, size1[1])
+
+#define c2s2OpSlashc0(in1, size1, in2, size2) crdivcsv(in1, in2, size1[1])
+
+#define s2c2OpSlashc0(in1, size1, in2, size2) crdivscv(in1, in2, size1[1])
+
+#define c2c2OpSlashc0(in1, size1, in2, size2) crdivv( in1, in2, size1[1])
+
+
+#define d2d2OpSlashd0(in1, size1, in2, size2) drdivv( in1, in2, size1[1])
+
+#define z2d2OpSlashz0(in1, size1, in2, size2) zrdivzdv(in1, in2, size1[1])
+
+#define d2z2OpSlashz0(in1, size1, in2, size2) zrdivdzv(in1, in2, size1[1])
+
+#define z2z2OpSlashz0(in1, size1, in2, size2) zrdivv( in1, in2, size1[1])
+
+
+#endif /* !__INT_OPSLASH_H__ */
diff --git a/2.3-1/src/c/operations/interfaces/int_OpStar.h b/2.3-1/src/c/operations/interfaces/int_OpStar.h
new file mode 100644
index 00000000..78697b3e
--- /dev/null
+++ b/2.3-1/src/c/operations/interfaces/int_OpStar.h
@@ -0,0 +1,223 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_OPSTAR_H__
+#define __INT_OPSTAR_H__
+
+/* Scalar * Scalar */
+
+#define s0s0OpStars0(in1,in2) smuls(in1,in2)
+
+#define d0d0OpStard0(in1,in2) dmuls(in1,in2)
+
+#define c0c0OpStarc0(in1,in2) cmuls(in1,in2)
+
+#define z0z0OpStarz0(in1,in2) zmuls(in1,in2)
+
+#define s0c0OpStarc0(in1,in2) cmuls(FloatComplex(in1,0),in2)
+
+#define c0s0OpStarc0(in1,in2) cmuls(in1,FloatComplex(in2,0))
+
+#define d0z0OpStarz0(in1,in2) zmuls(DoubleComplex(in1,0),in2)
+
+#define z0d0OpStarz0(in1,in2) zmuls(in1,DoubleComplex(in2,0))
+
+#define u80u80OpStaru80(in1,in2) u8muls(in1, in2)
+
+#define u80u80OpStaru160(in1,in2) (uint16)(in1 * in2)
+
+#define u80i80OpStari80(in1,in2) (int8)(in1 * in2)
+
+#define u80i80OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define u80u160OpStaru160(in1,in2) (uint16)(in1 * in2)
+
+#define u80i160OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i80u80OpStari80(in1,in2) (int8)(in1 * in2)
+
+#define i80u80OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i80i80OpStari80(in1,in2) (int8)(in1 , in2)
+
+#define i80i80OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i80u160OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i80i160OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define u160u80OpStaru160(in1,in2) (uint16)(in1 * in2)
+
+#define u160i80OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define u160u160OpStaru160(in1,in2) u16muls(in1 , in2)
+
+#define u160i160OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i160u80OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i160i80OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i160u160OpStari160(in1,in2) (int16)(in1 * in2)
+
+#define i160i160OpStari160(in1,in2) i16muls(in1 , in2)
+
+/* Scalar * Matrix */
+
+#define s0s2OpStars2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];}
+
+
+#define d0d2OpStard2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];}
+
+
+#define c0c2OpStarc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,in2[i]);}
+
+
+#define z0z2OpStarz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,in2[i]);}
+
+#define s0c2OpStarc2(in1,in2,size,out) c0c2OpStarc2(FloatComplex(in1,0),in2,size,out)
+
+
+#define d0z2OpStarz2(in1,in2,size,out) z0z2OpStarz2(DoubleComplex(in1,0),in2,size,out)
+
+
+#define c0s2OpStarc2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(in2[i],0));}
+
+#define z0d2OpStarz2(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(in2[i],0));}
+
+
+#define u80u82OpStaru82(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*(uint8)in2[i];}
+
+#define i80i82OpStari82(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];}
+
+#define u160u162OpStaru162(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];}
+
+#define i160i162OpStari162(in1,in2,size,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];}
+
+/* Matrix * Scalar */
+
+
+#define s2s0OpStars2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;}
+
+
+#define d2d0OpStard2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;}
+
+
+#define c2c0OpStarc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1[i],in2);}
+
+#define z2z0OpStarz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1[i],in2);}
+
+
+#define s2c0OpStarc2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(FloatComplex(in1[i],0),in2);}
+
+
+#define d2z0OpStarz2(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(DoubleComplex(in1[i],0),in2);}
+
+
+#define c2s0OpStarc2(in1,size,in2,out) c2c0OpStarc2(in1,size,FloatComplex(in2,0),out)
+
+
+#define z2d0OpStarz2(in1,size,in2,out) z2z0OpStarz2(in1,size,DoubleComplex(in2,0),out)
+
+
+#define u82u80OpStaru82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;}
+
+#define i82i80OpStari82(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;}
+
+#define u162u160OpStaru162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;}
+
+#define i162i160OpStari162(in1,size,in2,out) {int i=0;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;}
+
+
+/* Matrix * Matrix */
+
+#define s2s2OpStars2(in1,size1,in2,size2,out) smulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define d2d2OpStard2(in1,size1,in2,size2,out) dmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define c2c2OpStarc2(in1,size1,in2,size2,out) cmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+#define z2z2OpStarz2(in1,size1,in2,size2,out) zmulma(in1,size1[0],size1[1],in2,size2[0],size2[1],out)
+
+/* FIXME: There is some malloc in the define below, maybe they can be remove */
+#define c2s2OpStarc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(float));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2OpStarc2(in1, size1, FloatComplexMatrix(in2,temp,size2[0]*size2[1]), size2, out);}
+
+#define s2c2OpStarc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ c2c2OpStarc2(FloatComplexMatrix(in1,temp,size1[0]*size1[1]), size1, in2, size2, out);}
+
+#define z2d2OpStarz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size2[0],size2[1],0);\
+ z2z2OpStarz2(in1, size1, DoubleComplexMatrix(in2,temp,size2[0]*size2[1]), size2, out);}
+
+#define d2z2OpStarz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ z2z2OpStarz2(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]), size1, in2, size2, out);}
+
+/* Vector * Vector, so there is a scalar output */
+
+#define MAX(a, b) (a > b ? a : b)
+
+#define s2s2OpStars0(in1, size1, in2, size2) smulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define c2s2OpStarc0(in1, size1, in2, size2) cmulcsv(in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define s2c2OpStarc0(in1, size1, in2, size2) cmulscv(in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define c2c2OpStarc0(in1, size1, in2, size2) cmulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+
+#define d2d2OpStard0(in1, size1, in2, size2) dmulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define z2d2OpStarz0(in1, size1, in2, size2) zmulzdv(in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define d2z2OpStarz0(in1, size1, in2, size2) zmuldzv(in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define z2z2OpStarz0(in1, size1, in2, size2) zmulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define u82u82OpStaru80(in1, size1, in2, size2) u8mulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define i82i82OpStari80(in1, size1, in2, size2) i8mulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define u162u162OpStaru160(in1, size1, in2, size2) u16mulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#define i162i162OpStari160(in1, size1, in2, size2) i16mulv( in1, in2, MAX(MAX(size1[0], size1[1]), MAX(size2[0], size2[1])))
+
+#endif /* !__INT_OPSTAR_H__ */
diff --git a/2.3-1/src/c/operations/matrixOperations_Import.def b/2.3-1/src/c/operations/matrixOperations_Import.def
new file mode 100644
index 00000000..dc6ed571
--- /dev/null
+++ b/2.3-1/src/c/operations/matrixOperations_Import.def
@@ -0,0 +1,7 @@
+LIBRARY matrixOperations.dll
+
+
+EXPORTS
+szerosa
+dzerosa
+zzerosa
diff --git a/2.3-1/src/c/operations/multiplication/Makefile.am b/2.3-1/src/c/operations/multiplication/Makefile.am
new file mode 100644
index 00000000..3cc347ee
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/Makefile.am
@@ -0,0 +1,58 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMultiplication_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMultiplication.la
+
+HEAD = ../includes/multiplication.h
+
+libMultiplication_la_SOURCES = $(HEAD) \
+ smuls.c \
+ dmuls.c \
+ cmuls.c \
+ zmuls.c \
+ smula.c \
+ dmula.c \
+ cmula.c \
+ zmula.c \
+ smulv.c \
+ dmulv.c \
+ cmulv.c \
+ zmulv.c \
+ zmulzdv.c \
+ zmuldzv.c \
+ cmulcsv.c \
+ cmulscv.c
+
+
+check_PROGRAMS = testMultiplication
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ libMultiplication.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testMultiplication_SOURCES = testMultiplication.c
+testMultiplication_LDADD = $(check_LDADD)
+testMultiplication_CFLAGS = $(check_INCLUDES)
+
+TESTS = testMultiplication
diff --git a/2.3-1/src/c/operations/multiplication/Makefile.in b/2.3-1/src/c/operations/multiplication/Makefile.in
new file mode 100644
index 00000000..5d1effe5
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/Makefile.in
@@ -0,0 +1,835 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testMultiplication$(EXEEXT)
+TESTS = testMultiplication$(EXEEXT)
+subdir = src/c/operations/multiplication
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMultiplication_la_LIBADD =
+am__objects_1 =
+am_libMultiplication_la_OBJECTS = $(am__objects_1) \
+ libMultiplication_la-smuls.lo libMultiplication_la-dmuls.lo \
+ libMultiplication_la-cmuls.lo libMultiplication_la-zmuls.lo \
+ libMultiplication_la-smula.lo libMultiplication_la-dmula.lo \
+ libMultiplication_la-cmula.lo libMultiplication_la-zmula.lo \
+ libMultiplication_la-smulv.lo libMultiplication_la-dmulv.lo \
+ libMultiplication_la-cmulv.lo libMultiplication_la-zmulv.lo \
+ libMultiplication_la-zmulzdv.lo \
+ libMultiplication_la-zmuldzv.lo \
+ libMultiplication_la-cmulcsv.lo \
+ libMultiplication_la-cmulscv.lo
+libMultiplication_la_OBJECTS = $(am_libMultiplication_la_OBJECTS)
+libMultiplication_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libMultiplication_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testMultiplication_OBJECTS = \
+ testMultiplication-testMultiplication.$(OBJEXT)
+testMultiplication_OBJECTS = $(am_testMultiplication_OBJECTS)
+testMultiplication_DEPENDENCIES = $(check_LDADD)
+testMultiplication_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testMultiplication_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMultiplication_la_SOURCES) \
+ $(testMultiplication_SOURCES)
+DIST_SOURCES = $(libMultiplication_la_SOURCES) \
+ $(testMultiplication_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMultiplication_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMultiplication.la
+HEAD = ../includes/multiplication.h
+libMultiplication_la_SOURCES = $(HEAD) \
+ smuls.c \
+ dmuls.c \
+ cmuls.c \
+ zmuls.c \
+ smula.c \
+ dmula.c \
+ cmula.c \
+ zmula.c \
+ smulv.c \
+ dmulv.c \
+ cmulv.c \
+ zmulv.c \
+ zmulzdv.c \
+ zmuldzv.c \
+ cmulcsv.c \
+ cmulscv.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ libMultiplication.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes
+
+testMultiplication_SOURCES = testMultiplication.c
+testMultiplication_LDADD = $(check_LDADD)
+testMultiplication_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/operations/multiplication/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/operations/multiplication/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMultiplication.la: $(libMultiplication_la_OBJECTS) $(libMultiplication_la_DEPENDENCIES)
+ $(libMultiplication_la_LINK) -rpath $(pkglibdir) $(libMultiplication_la_OBJECTS) $(libMultiplication_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testMultiplication$(EXEEXT): $(testMultiplication_OBJECTS) $(testMultiplication_DEPENDENCIES)
+ @rm -f testMultiplication$(EXEEXT)
+ $(testMultiplication_LINK) $(testMultiplication_OBJECTS) $(testMultiplication_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-cmula.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-cmulcsv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-cmuls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-cmulscv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-cmulv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-dmula.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-dmuls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-dmulv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-smula.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-smuls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-smulv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-zmula.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-zmuldzv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-zmuls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-zmulv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMultiplication_la-zmulzdv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMultiplication-testMultiplication.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMultiplication_la-smuls.lo: smuls.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-smuls.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-smuls.Tpo -c -o libMultiplication_la-smuls.lo `test -f 'smuls.c' || echo '$(srcdir)/'`smuls.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-smuls.Tpo $(DEPDIR)/libMultiplication_la-smuls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smuls.c' object='libMultiplication_la-smuls.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-smuls.lo `test -f 'smuls.c' || echo '$(srcdir)/'`smuls.c
+
+libMultiplication_la-dmuls.lo: dmuls.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-dmuls.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-dmuls.Tpo -c -o libMultiplication_la-dmuls.lo `test -f 'dmuls.c' || echo '$(srcdir)/'`dmuls.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-dmuls.Tpo $(DEPDIR)/libMultiplication_la-dmuls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmuls.c' object='libMultiplication_la-dmuls.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-dmuls.lo `test -f 'dmuls.c' || echo '$(srcdir)/'`dmuls.c
+
+libMultiplication_la-cmuls.lo: cmuls.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-cmuls.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-cmuls.Tpo -c -o libMultiplication_la-cmuls.lo `test -f 'cmuls.c' || echo '$(srcdir)/'`cmuls.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-cmuls.Tpo $(DEPDIR)/libMultiplication_la-cmuls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmuls.c' object='libMultiplication_la-cmuls.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-cmuls.lo `test -f 'cmuls.c' || echo '$(srcdir)/'`cmuls.c
+
+libMultiplication_la-zmuls.lo: zmuls.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-zmuls.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-zmuls.Tpo -c -o libMultiplication_la-zmuls.lo `test -f 'zmuls.c' || echo '$(srcdir)/'`zmuls.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-zmuls.Tpo $(DEPDIR)/libMultiplication_la-zmuls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmuls.c' object='libMultiplication_la-zmuls.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-zmuls.lo `test -f 'zmuls.c' || echo '$(srcdir)/'`zmuls.c
+
+libMultiplication_la-smula.lo: smula.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-smula.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-smula.Tpo -c -o libMultiplication_la-smula.lo `test -f 'smula.c' || echo '$(srcdir)/'`smula.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-smula.Tpo $(DEPDIR)/libMultiplication_la-smula.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smula.c' object='libMultiplication_la-smula.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-smula.lo `test -f 'smula.c' || echo '$(srcdir)/'`smula.c
+
+libMultiplication_la-dmula.lo: dmula.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-dmula.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-dmula.Tpo -c -o libMultiplication_la-dmula.lo `test -f 'dmula.c' || echo '$(srcdir)/'`dmula.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-dmula.Tpo $(DEPDIR)/libMultiplication_la-dmula.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmula.c' object='libMultiplication_la-dmula.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-dmula.lo `test -f 'dmula.c' || echo '$(srcdir)/'`dmula.c
+
+libMultiplication_la-cmula.lo: cmula.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-cmula.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-cmula.Tpo -c -o libMultiplication_la-cmula.lo `test -f 'cmula.c' || echo '$(srcdir)/'`cmula.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-cmula.Tpo $(DEPDIR)/libMultiplication_la-cmula.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmula.c' object='libMultiplication_la-cmula.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-cmula.lo `test -f 'cmula.c' || echo '$(srcdir)/'`cmula.c
+
+libMultiplication_la-zmula.lo: zmula.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-zmula.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-zmula.Tpo -c -o libMultiplication_la-zmula.lo `test -f 'zmula.c' || echo '$(srcdir)/'`zmula.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-zmula.Tpo $(DEPDIR)/libMultiplication_la-zmula.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmula.c' object='libMultiplication_la-zmula.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-zmula.lo `test -f 'zmula.c' || echo '$(srcdir)/'`zmula.c
+
+libMultiplication_la-smulv.lo: smulv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-smulv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-smulv.Tpo -c -o libMultiplication_la-smulv.lo `test -f 'smulv.c' || echo '$(srcdir)/'`smulv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-smulv.Tpo $(DEPDIR)/libMultiplication_la-smulv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smulv.c' object='libMultiplication_la-smulv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-smulv.lo `test -f 'smulv.c' || echo '$(srcdir)/'`smulv.c
+
+libMultiplication_la-dmulv.lo: dmulv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-dmulv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-dmulv.Tpo -c -o libMultiplication_la-dmulv.lo `test -f 'dmulv.c' || echo '$(srcdir)/'`dmulv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-dmulv.Tpo $(DEPDIR)/libMultiplication_la-dmulv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmulv.c' object='libMultiplication_la-dmulv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-dmulv.lo `test -f 'dmulv.c' || echo '$(srcdir)/'`dmulv.c
+
+libMultiplication_la-cmulv.lo: cmulv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-cmulv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-cmulv.Tpo -c -o libMultiplication_la-cmulv.lo `test -f 'cmulv.c' || echo '$(srcdir)/'`cmulv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-cmulv.Tpo $(DEPDIR)/libMultiplication_la-cmulv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmulv.c' object='libMultiplication_la-cmulv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-cmulv.lo `test -f 'cmulv.c' || echo '$(srcdir)/'`cmulv.c
+
+libMultiplication_la-zmulv.lo: zmulv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-zmulv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-zmulv.Tpo -c -o libMultiplication_la-zmulv.lo `test -f 'zmulv.c' || echo '$(srcdir)/'`zmulv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-zmulv.Tpo $(DEPDIR)/libMultiplication_la-zmulv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmulv.c' object='libMultiplication_la-zmulv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-zmulv.lo `test -f 'zmulv.c' || echo '$(srcdir)/'`zmulv.c
+
+libMultiplication_la-zmulzdv.lo: zmulzdv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-zmulzdv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-zmulzdv.Tpo -c -o libMultiplication_la-zmulzdv.lo `test -f 'zmulzdv.c' || echo '$(srcdir)/'`zmulzdv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-zmulzdv.Tpo $(DEPDIR)/libMultiplication_la-zmulzdv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmulzdv.c' object='libMultiplication_la-zmulzdv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-zmulzdv.lo `test -f 'zmulzdv.c' || echo '$(srcdir)/'`zmulzdv.c
+
+libMultiplication_la-zmuldzv.lo: zmuldzv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-zmuldzv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-zmuldzv.Tpo -c -o libMultiplication_la-zmuldzv.lo `test -f 'zmuldzv.c' || echo '$(srcdir)/'`zmuldzv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-zmuldzv.Tpo $(DEPDIR)/libMultiplication_la-zmuldzv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmuldzv.c' object='libMultiplication_la-zmuldzv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-zmuldzv.lo `test -f 'zmuldzv.c' || echo '$(srcdir)/'`zmuldzv.c
+
+libMultiplication_la-cmulcsv.lo: cmulcsv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-cmulcsv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-cmulcsv.Tpo -c -o libMultiplication_la-cmulcsv.lo `test -f 'cmulcsv.c' || echo '$(srcdir)/'`cmulcsv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-cmulcsv.Tpo $(DEPDIR)/libMultiplication_la-cmulcsv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmulcsv.c' object='libMultiplication_la-cmulcsv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-cmulcsv.lo `test -f 'cmulcsv.c' || echo '$(srcdir)/'`cmulcsv.c
+
+libMultiplication_la-cmulscv.lo: cmulscv.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -MT libMultiplication_la-cmulscv.lo -MD -MP -MF $(DEPDIR)/libMultiplication_la-cmulscv.Tpo -c -o libMultiplication_la-cmulscv.lo `test -f 'cmulscv.c' || echo '$(srcdir)/'`cmulscv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMultiplication_la-cmulscv.Tpo $(DEPDIR)/libMultiplication_la-cmulscv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmulscv.c' object='libMultiplication_la-cmulscv.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMultiplication_la_CFLAGS) $(CFLAGS) -c -o libMultiplication_la-cmulscv.lo `test -f 'cmulscv.c' || echo '$(srcdir)/'`cmulscv.c
+
+testMultiplication-testMultiplication.o: testMultiplication.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMultiplication_CFLAGS) $(CFLAGS) -MT testMultiplication-testMultiplication.o -MD -MP -MF $(DEPDIR)/testMultiplication-testMultiplication.Tpo -c -o testMultiplication-testMultiplication.o `test -f 'testMultiplication.c' || echo '$(srcdir)/'`testMultiplication.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMultiplication-testMultiplication.Tpo $(DEPDIR)/testMultiplication-testMultiplication.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMultiplication.c' object='testMultiplication-testMultiplication.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMultiplication_CFLAGS) $(CFLAGS) -c -o testMultiplication-testMultiplication.o `test -f 'testMultiplication.c' || echo '$(srcdir)/'`testMultiplication.c
+
+testMultiplication-testMultiplication.obj: testMultiplication.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMultiplication_CFLAGS) $(CFLAGS) -MT testMultiplication-testMultiplication.obj -MD -MP -MF $(DEPDIR)/testMultiplication-testMultiplication.Tpo -c -o testMultiplication-testMultiplication.obj `if test -f 'testMultiplication.c'; then $(CYGPATH_W) 'testMultiplication.c'; else $(CYGPATH_W) '$(srcdir)/testMultiplication.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMultiplication-testMultiplication.Tpo $(DEPDIR)/testMultiplication-testMultiplication.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMultiplication.c' object='testMultiplication-testMultiplication.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMultiplication_CFLAGS) $(CFLAGS) -c -o testMultiplication-testMultiplication.obj `if test -f 'testMultiplication.c'; then $(CYGPATH_W) 'testMultiplication.c'; else $(CYGPATH_W) '$(srcdir)/testMultiplication.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/operations/multiplication/cmula.c b/2.3-1/src/c/operations/multiplication/cmula.c
new file mode 100644
index 00000000..2bb94002
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/cmula.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+void cmula(floatComplex* in1, floatComplex* in2, int size, floatComplex* out){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=cmuls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/cmulcsv.c b/2.3-1/src/c/operations/multiplication/cmulcsv.c
new file mode 100644
index 00000000..eec14174
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/cmulcsv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "multiplication.h"
+
+floatComplex cmulcsv (floatComplex* in1, float* in2, int size)
+ {
+ float* ZEROS = (float *) malloc((unsigned int)(size)*sizeof(float));
+ szerosa(ZEROS,size , 1);
+
+ return cmulv(in1, FloatComplexMatrix(in2,ZEROS,size), size );
+ }
diff --git a/2.3-1/src/c/operations/multiplication/cmuls.c b/2.3-1/src/c/operations/multiplication/cmuls.c
new file mode 100644
index 00000000..817f3771
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/cmuls.c
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#include "floatComplex.h"
+#include "multiplication.h"
+
+
+
+/*
+** \function cmuls
+** \brief Multiply 2 Complex numbers.
+*/
+floatComplex cmuls(floatComplex z1, floatComplex z2) {
+#ifndef STDC99
+ return FloatComplex(z1.real*z2.real - z1.imag*z2.imag,
+ z1.real*z2.imag + z2.real*z1.imag);
+#else
+ return z1 * z2;
+#endif
+}
diff --git a/2.3-1/src/c/operations/multiplication/cmulscv.c b/2.3-1/src/c/operations/multiplication/cmulscv.c
new file mode 100644
index 00000000..d3444764
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/cmulscv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "multiplication.h"
+
+floatComplex cmulscv (float* in1, floatComplex* in2, int size)
+ {
+ float* ZEROS = (float *) malloc((unsigned int)(size*sizeof(float)));
+ szerosa(ZEROS,size , 1);
+
+ return cmulv(FloatComplexMatrix(in1,ZEROS,size), in2 , size );
+ }
diff --git a/2.3-1/src/c/operations/multiplication/cmulv.c b/2.3-1/src/c/operations/multiplication/cmulv.c
new file mode 100644
index 00000000..c26372cd
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/cmulv.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "addition.h"
+#include "multiplication.h"
+
+floatComplex cmulv(floatComplex* in1, floatComplex* in2, int size)
+{
+ floatComplex out = FloatComplex(0, 0);
+ int i = 0;
+ for (i = 0 ; i < size ; ++i)
+ {
+ out = cadds(out, cmuls(in1[i], in2[i]));
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/dmula.c b/2.3-1/src/c/operations/multiplication/dmula.c
new file mode 100644
index 00000000..77c204a7
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/dmula.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+void dmula(double* in1, double* in2, int size, double* out){
+ int i=0;
+ for (i=0;i<size;i++)
+ {
+ out[i]=dmuls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/dmuls.c b/2.3-1/src/c/operations/multiplication/dmuls.c
new file mode 100644
index 00000000..ac21ace0
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/dmuls.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+double dmuls(double in1, double in2)
+{
+ return in1*in2;
+}
diff --git a/2.3-1/src/c/operations/multiplication/dmulv.c b/2.3-1/src/c/operations/multiplication/dmulv.c
new file mode 100644
index 00000000..0793ee3f
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/dmulv.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+double dmulv(double* in1, double* in2, int size)
+{
+ double dOut = 0;
+ int i = 0;
+ for ( i = 0 ; i < size ; ++i)
+ {
+ dOut += dmuls(in1[i], in2[i]);
+ }
+
+ return dOut;
+}
diff --git a/2.3-1/src/c/operations/multiplication/i16mula.c b/2.3-1/src/c/operations/multiplication/i16mula.c
new file mode 100644
index 00000000..bffa107e
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/i16mula.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+void i16mula(int16* in1, int16* in2, int size, int16* out){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=i16muls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/i16muls.c b/2.3-1/src/c/operations/multiplication/i16muls.c
new file mode 100644
index 00000000..4aaa5d11
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/i16muls.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+#include "types.h"
+
+int16 i16muls(int16 in1, int16 in2){
+ return in1*in2;
+}
diff --git a/2.3-1/src/c/operations/multiplication/i16mulv.c b/2.3-1/src/c/operations/multiplication/i16mulv.c
new file mode 100644
index 00000000..3f3cc8d1
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/i16mulv.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+int16 i16mulv(int16* in1, int16* in2, int size)
+{
+ int16 out = 0;
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out += i16muls(in1[i], in2[i]);
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/i8mula.c b/2.3-1/src/c/operations/multiplication/i8mula.c
new file mode 100644
index 00000000..c5c6114d
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/i8mula.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+void i8mula(int8* in1, int8* in2, int size, int8* out){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=i8muls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/i8muls.c b/2.3-1/src/c/operations/multiplication/i8muls.c
new file mode 100644
index 00000000..d6566208
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/i8muls.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+#include "types.h"
+
+int8 i8muls(int8 in1, int8 in2){
+ return in1*in2;
+}
diff --git a/2.3-1/src/c/operations/multiplication/i8mulv.c b/2.3-1/src/c/operations/multiplication/i8mulv.c
new file mode 100644
index 00000000..6dc1ec4e
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/i8mulv.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+int8 i8mulv(int8* in1, int8* in2, int size)
+{
+ int8 out = 0;
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out += i8muls(in1[i], in2[i]);
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/smula.c b/2.3-1/src/c/operations/multiplication/smula.c
new file mode 100644
index 00000000..00956c2f
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/smula.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+void smula(float* in1, float* in2, int size, float* out){
+ int i=0;
+
+ for (i=0;i<size;i++){
+ out[i]=smuls(in1[i],in2[i]);
+ }
+
+}
diff --git a/2.3-1/src/c/operations/multiplication/smuls.c b/2.3-1/src/c/operations/multiplication/smuls.c
new file mode 100644
index 00000000..60eddb7e
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/smuls.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+float smuls(float in1, float in2){
+ return in1*in2;
+}
diff --git a/2.3-1/src/c/operations/multiplication/smulv.c b/2.3-1/src/c/operations/multiplication/smulv.c
new file mode 100644
index 00000000..e757cb35
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/smulv.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+float smulv(float* in1, float* in2, int size)
+{
+ float out = 0;
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out += smuls(in1[i], in2[i]);
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/testMultiplication.c b/2.3-1/src/c/operations/multiplication/testMultiplication.c
new file mode 100644
index 00000000..ac022157
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/testMultiplication.c
@@ -0,0 +1,1407 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "multiplication.h"
+
+
+#define FP1 {0.3874644362367689609528f,0.3987790448591113090515f,0.9963990836404263973236f,\
+0.9320784267038106918335f,0.0681476672179996967316f,0.7187465364113450050354f,\
+0.6592897172085940837860f,0.437819693237543106079f,0.9570061699487268924713f,\
+0.3977778619155287742615f,0.5414962074719369411469f,0.1475485283881425857544f,\
+0.9197258842177689075470f,0.4185347454622387886047f,0.9044831502251327037811f,\
+0.3202747702598571777344f,0.5748232551850378513336f,0.7572625903412699699402f,\
+0.3254728927277028560638f,0.5012555103749036788940f,0.2686208193190395832062f,\
+0.1170668462291359901428f,0.3667570571415126324f,0.8753886483609676361084f,\
+0.5248321653343737125397f,0.7686112513765692710876f,0.8289924389682710170746f,\
+0.6499033216387033462524f,0.5625062701292335987091f,0.216987949796020984650f,\
+0.932231280487030744553f,0.9350972101092338562012f,0.9760812097229063510895f,\
+0.9135094834491610527039f,0.2684359191916882991791f,0.0918707158416509628296f,\
+0.1712972451932728290558f,0.7311726594343781471252f,0.8692278112284839153290f,\
+0.0148080177605152130127f,0.6507192836143076419830f,0.4225442921742796897888f,\
+0.2326209298335015773773f,0.3195550013333559036255f,0.7426187139935791492462f,\
+0.7788188206031918525696f,0.6524895387701690196991f,0.9032440632581710815430f,\
+0.8669646182097494602203f,0.7087978003546595573425f,0.6945203407667577266693f,\
+0.8467157911509275436401f,0.9322743569500744342804f,0.9565412709489464759827f,\
+0.1623990009538829326630f,0.1272875182330608367920f,0.9570735306479036808014f,\
+0.6764409979805350303650f,0.3979810453020036220551f,0.1108187530189752578735f,\
+0.5097153154201805591583f,0.5844655903056263923645f,0.2591971340589225292206f,\
+0.2918234840035438537598f,0.0603091740049421787262f,0.9043274922296404838562f,\
+0.6194427101872861385345f,0.2503793593496084213257f,0.8385089416988193988800f,\
+0.8273218506947159767151f,0.7322020228020846843719f,0.2945837415754795074463f,\
+0.2909102872945368289948f,0.7045872574672102928162f,0.3046565256081521511078f,\
+0.7573066372424364089966f,0.7318075490184128284454f,0.6905383663251996040344f,\
+0.6240276503376662731171f,0.415990501642227172852f,0.2810599454678595066071f,\
+0.0562203852459788322449f,0.5804039551876485347748f,0.0042469184845685958862f,\
+0.6828171615488827228546f,0.8913354435935616493225f,0.9298026482574641704559f,\
+0.2840001545846462249756f,0.0988543094135820865631f,0.4136908343061804771423f,\
+0.6412154859863221645355f,0.6469275895506143569946f,0.4702662643976509571075f,\
+0.6048191310837864875793f,0.6713890465907752513885f,0.7139470204710960388184f,\
+0.5412713759578764438629f,0.3905201805755496025085f,0.0110893785022199153900f,\
+0.9015008416026830673218f,0.1388745536096394062042f,0.0850749695673584938049f,\
+0.3466010238043963909149f,0.4233870990574359893799f,0.8021397278644144535065f,\
+0.3178813671693205833435f,0.1802104166708886623383f,0.6968874204903841018677f,\
+0.3548216861672699451447f,0.1612617420032620429993f,0.7534236568026244640350f,\
+0.6219418197870254516602f,0.5151072838343679904938f,0.6781924543902277946472f,\
+0.6166686578653752803802f,0.7021203767508268356323f,0.1362160299904644489288f,\
+0.6087052235379815101624f,0.1892316709272563457489f,0.4761417917907238006592f,\
+0.1716100485064089298248f,0.4137103697285056114197f,0.1531781828962266445160f,\
+0.2286888156086206436157f,0.9585634139366447925568f,0.3949919315055012702942f,\
+0.0250081899575889110565f,0.4492705538868904113770f,0.91384086245670915f,\
+0.1101246578618884086609f,0.7487958460114896297455f,0.0078816469758749008179f,\
+0.2352358778007328510284f,0.8010628754273056983948f,0.6545634861104190349579f,\
+0.5162083245813846588135f,0.7027181521989405155182f,0.0551512306556105613708f,\
+0.6256400248967111110687f,0.8431313354521989822388f,0.1729404223151504993439f,\
+0.4173073070123791694641f,0.8187537300400435924530f,0.2532757520675659179688f,\
+0.8608546801842749118805f,0.1721261171624064445496f,0.7806093706749379634857f,\
+0.1373576503247022628784f,0.0021877591498196125031f,0.0146564701572060585022f,\
+0.3046997408382594585419f,0.8030776642262935638428f,0.9905262948013842105865f,\
+0.8285992136225104331970f,0.8721015579067170619965f,0.2953114155679941177368f,\
+0.5827610609121620655060f,0.2906773509457707405090f,0.020005736034363508224f,\
+0.7143468186259269714355f,0.2666406803764402866364f,0.5199280334636569023132f,\
+0.4817320345900952816010f,0.0009182598441839218140f,0.3841847111470997333527f,\
+0.4906664276495575904846f,0.4419780815951526165009f,0.6567876525223255157471f,\
+0.10470610717311501503f,0.4278714573010802268982f,0.7510527721606194972992f,\
+0.3696223665028810501099f,0.8411930543370544910431f,0.9037434207275509834290f,\
+0.441844041924923658371f,0.0109200328588485717773f,0.2038001813925802707672f,\
+0.854183482937514781952f,0.3932710154913365840912f,0.9757302235811948776245f,\
+0.0841991459019482135773f,0.2339450428262352943420f,0.483970529865473508835f,\
+0.3329230062663555145264f,0.9645385951735079288483f,0.5292069753631949424744f,\
+0.0799680328927934169769f,0.754754373803734779358f,0.0447635021992027759552f,\
+0.8463187487795948982239f,0.2000828566960990428925f,0.6944785490632057189941f,\
+0.2820438765920698642731f,0.7954674167558550834656f,0.2028178661130368709564f,\
+0.7807571645826101303101f,0.9360628505237400531769f,0.8880164856091141700745f,\
+0.3384834821335971355438f,0.8976153172552585601807f}
+
+#define FP2 {0.4503413387574255466461f,0.7080971030518412590027f,0.2459910525940358638763f,\
+0.5369079094380140304565f,0.2288442556746304035187f,0.8762242654338479042053f,\
+0.8204974154941737651825f,0.1096532605588436126709f,0.3977028490044176578522f,\
+0.0387893309816718101501f,0.4764164215885102748871f,0.5613568071275949478149f,\
+0.9855364081449806690216f,0.2565485062077641487122f,0.0636831256560981273651f,\
+0.4720427915453910827637f,0.3494783216156065464020f,0.4271033955737948417664f,\
+0.8822676776908338069916f,0.18796317838132381439f,0.8610891629941761493683f,\
+0.0103648686781525611877f,0.9999243463389575481415f,0.3546787090599536895752f,\
+0.4418791518546640872955f,0.7364388024434447288513f,0.5289249173365533351898f,\
+0.3544368315488100051880f,0.5421899897046387195587f,0.0146836983039975166321f,\
+0.2055264669470489025116f,0.1165965050458908081055f,0.6571860709227621555328f,\
+0.2626901743933558464050f,0.1159235103987157344818f,0.2698498796671628952026f,\
+0.9737050686962902545929f,0.8739323327317833900452f,0.9124345253221690654755f,\
+0.1049908511340618133545f,0.2417178959585726261139f,0.0428410014137625694275f,\
+0.3636728501878678798676f,0.3169804904609918594360f,0.4641480413265526294708f,\
+0.1660488517954945564270f,0.5824519577436149120331f,0.9950593486428260803223f,\
+0.4988002800382673740387f,0.0385573906823992729187f,0.7751751034520566463470f,\
+0.8296566363424062728882f,0.1661487598903477191925f,0.5635758275166153907776f,\
+0.8564593489281833171844f,0.0048462785780429840088f,0.9567344621755182743073f,\
+0.1947818165645003318787f,0.7727439603768289089203f,0.7450998444110155105591f,\
+0.9319220376200973987579f,0.8297540741041302680969f,0.8786331820301711559296f,\
+0.9850863516330718994141f,0.9117660173214972019196f,0.3733268706128001213074f,\
+0.2097233845852315425873f,0.1312689464539289474487f,0.5437363986857235431671f,\
+0.6896163979545235633850f,0.9956645886413753032684f,0.3840484581887722015381f,\
+0.3460536063648760318756f,0.1614690115675330162048f,0.25720636313781142235f,\
+0.5892038289457559585571f,0.3193828281946480274200f,0.5760813476517796516418f,\
+0.8309780987910926342010f,0.0873794183135032653809f,0.2206377261318266391754f,\
+0.5555423153564333915710f,0.6657536565326154232025f,0.5303691830486059188843f,\
+0.0926435221917927265167f,0.2510469639673829078674f,0.7339503909461200237274f,\
+0.1329477317631244659424f,0.1434094593860208988190f,0.5195322250947356224060f,\
+0.4021125487051904201508f,0.3289982546120882034302f,0.5687606376595795154572f,\
+0.3014845298603177070618f,0.6041290420107543468475f,0.3006873279809951782227f,\
+0.4120792248286306858063f,0.4186693010851740837097f,0.6609355970285832881927f,\
+0.3494365941733121871948f,0.0549050425179302692413f,0.5105323204770684242249f,\
+0.0904512773267924785614f,0.5774413160979747772217f,0.4321455270983278751373f,\
+0.3280229708179831504822f,0.2514993823133409023285f,0.8484858069568872451782f,\
+0.5656450656242668628693f,0.1035893531516194343567f,0.1654627206735312938690f,\
+0.4968057349324226379395f,0.5098637067712843418121f,0.2160952789708971977234f,\
+0.3594232588075101375580f,0.7527473028749227523804f,0.3034152467735111713409f,\
+0.8694091374054551124573f,0.0745361442677676677704f,0.3539733029901981353760f,\
+0.0202146903611719608307f,0.0034146374091506004333f,0.6833881041966378688812f,\
+0.3109660465270280838013f,0.5139850866980850696564f,0.1561934249475598335266f,\
+0.6600902187637984752655f,0.2955771684646606445312f,0.9498737403191626071930f,\
+0.4961295751854777336121f,0.9468550696037709712982f,0.6213743072003126144409f,\
+0.7169277970679104328156f,0.7426859596744179725647f,0.0608082632534205913544f,\
+0.2845346592366695404053f,0.8151792050339281558990f,0.1946024885401129722595f,\
+0.7847843295894563198090f,0.0340354088693857192993f,0.3110890504904091358185f,\
+0.5842662276700139045715f,0.7858569952659308910370f,0.9398910328745841979980f,\
+0.9551012688316404819489f,0.9770033909007906913757f,0.0053538321517407894135f,\
+0.4281874801963567733765f,0.5550557305105030536652f,0.4340432072058320045471f,\
+0.1641052807681262493134f,0.2516632266342639923096f,0.1992107019759714603424f,\
+0.65790366288274526596f,0.226678048726171255112f,0.3645872045308351516724f,\
+0.9226246816106140613556f,0.3389491187408566474915f,0.1683428841643035411835f,\
+0.1706836074590682983398f,0.9106476106680929660797f,0.4218698022887110710144f,\
+0.8885267241857945919037f,0.1128535699099302291870f,0.8332714592106640338898f,\
+0.0108331749215722084045f,0.6144992182962596416473f,0.0734437219798564910889f,\
+0.4040901870466768741608f,0.1320571741089224815369f,0.6390436268411576747894f,\
+0.5538116190582513809204f,0.7576190796680748462677f,0.0725553305819630622864f,\
+0.7358620944432914257050f,0.1019380465149879455566f,0.7387234591878950595856f,\
+0.5138037605211138725281f,0.0964652984403073787689f,0.9568361993879079818726f,\
+0.6979067702777683734894f,0.1790800327435135841370f,0.1322964723221957683563f,\
+0.3785077370703220367432f,0.8862080411054193973541f,0.2132239108905196189880f,\
+0.9858398041687905788422f,0.6321957129985094070435f,0.0434587192721664905548f,\
+0.0135699706152081489563f,0.0944632100872695446014f,0.0956843793392181396484f,\
+0.2736488827504217624664f,0.7308020917698740959167f,0.6507454826496541500092f,\
+0.4583958666771650314331f,0.8011528258211910724640f,0.1584798255935311317444f,\
+0.3030378143303096294403f,0.4810337387025356292725f}
+
+#define FRes {0.1744912529357576791433f,0.2823742864225169957315f,0.2451052593884412711400f,\
+0.5004402795138161996746f,0.0155952021804655512061f,0.6297831559001532131248f,\
+0.5409455090315361536213f,0.0480083569003692950394f,0.3806040803034145825201f,\
+0.0154295371430231906262f,0.257977685467529749275f,0.0828273707923430219102f,\
+0.9064233444099463188337f,0.1073744637443841548619f,0.0576003141096106049956f,\
+0.1511833966150217811730f,0.2008882664476865365089f,0.3234294236757639939839f,\
+0.2871542132181882922559f,0.0942175789112195266606f,0.231306476470241606513f,\
+0.0012133824877304738923f,0.3667293106274266967226f,0.3104817157264057603250f,\
+0.2319123920839998853616f,0.5660351495083181250223f,0.4384747572539204885089f,\
+0.2303496741346691967234f,0.3049852688101639119900f,0.0031861855904077316173f,\
+0.1915982014560227986166f,0.1090290665768997024898f,0.6414669751193333713246f,\
+0.2399699655172445322826f,0.0311180340698064966665f,0.0247913016148056282451f,\
+0.1667929958984009919387f,0.6389954278891879502211f,0.7931134653350897512070f,\
+0.0015547063882847961258f,0.1572904960949201291776f,0.0181022206184156195241f,\
+0.0845979165659015430734f,0.1012927010519100584629f,0.3446850215525631422331f,\
+0.1293219709178812792949f,0.3800438092639132903194f,0.8987814492511753128312f,\
+0.4324421943462926076762f,0.0273293937030998496107f,0.5383748770034290087594f,\
+0.7024833752242779505437f,0.1548962282848262428381f,0.5390835383288474780272f,\
+0.1390881426235499873645f,0.0006168707728651384725f,0.9156652296068464869094f,\
+0.1317584063853521059162f,0.3075374491015804290228f,0.0825710356322612165636f,\
+0.4750149353525452977642f,0.4849627047297689896865f,0.2277392026712919681497f,\
+0.2874713311779031332804f,0.0549878553904352973536f,0.3376097526832130268915f,\
+0.1299116217371263370950f,0.0328670347156327785632f,0.4559278322250933657145f,\
+0.5705347146251601442302f,0.7290276258356205296707f,0.1131344317595426168799f,\
+0.1006705540469166465511f,0.1137690080263093483914f,0.0783595969578743251072f,\
+0.4462079703492781712626f,0.2337267646996942227489f,0.3978062726778792690396f,\
+0.5185533104706666618355f,0.0363490080574402352198f,0.0620124272747637136916f,\
+0.0312328029897817466276f,0.3864060554321692708690f,0.0022524346871346696830f,\
+0.0632585868588908389887f,0.2237670569906841377961f,0.6824290171913035552009f,\
+0.0377571763724054293432f,0.0141766430709802434412f,0.2149257196483875254067f,\
+0.2578407933391972939319f,0.2128380478225575245244f,0.2674689404085963673197f,\
+0.1823436113853212359182f,0.4056056215333987968741f,0.2146748219054467332612f,\
+0.223046689026648065068f,0.1634988110612213274564f,0.0073293650010406562884f,\
+0.3150173837340161653309f,0.0076249132705958379275f,0.0434335216277395089191f,\
+0.0313505053258816626660f,0.2444812036986294678798f,0.3466410955044766373234f,\
+0.1042723904265626388987f,0.0453228084791582885860f,0.5912990853328871088124f,\
+0.2007031359569984296787f,0.0167049995422212521623f,0.1246635280743631640776f,\
+0.3089842628645015354394f,0.2626345091206789272853f,0.1465541876274137622627f,\
+0.2216450586144267098643f,0.5285192198927095574845f,0.0413300203540647725919f,\
+0.5292138833303512424067f,0.0141045991242647154873f,0.1685414827318337249729f,\
+0.0034690439934227570301f,0.0014126709050284813954f,0.1046801480137381917812f,\
+0.0711144568747612698667f,0.4926872994178387865638f,0.0616951426084962062379f,\
+0.0165076615799914921956f,0.1327941181924368052591f,0.868033438078243735347f,\
+0.0546360997224647759740f,0.7090011428942235571782f,0.0048974529292317055262f,\
+0.1686471396630155883400f,0.5949381503962772876903f,0.0398028687794790766996f,\
+0.1468791597298964024532f,0.5728412246724432499434f,0.0107325667316315806477f,\
+0.4909924875028962021339f,0.0286963197327067993936f,0.0537998717694305322867f,\
+0.2438185660472551308242f,0.6434233461520417751700f,0.2380516082128716348620f,\
+0.8222033973236569925902f,0.1681678001302578939757f,0.0041792515466696263798f,\
+0.0588148261782265452391f,0.0012143282530841621129f,0.0063615413133502824242f,\
+0.0500028365202378755061f,0.2021051162170970916243f,0.1973234385130417933851f,\
+0.5451384577040119250313f,0.1976862794373486775790f,0.1076667634679787238783f,\
+0.5376697382791472135111f,0.0985248319409957051818f,0.0033678233038544891365f,\
+0.1219272919799819776543f,0.2428156984917200222895f,0.2193419366816712900992f,\
+0.4280317866296952655780f,0.0001036289015210918596f,0.3201301548639712835076f,\
+0.0053154752388706117197f,0.271595185644301739813f,0.0482369297516522660407f,\
+0.0423107104325134431022f,0.0565034955330471419521f,0.4799554874706279394836f,\
+0.20470116123310294620f,0.6373039076500160993177f,0.0655714026521615894749f,\
+0.3251362821081638099230f,0.0011131668175105025043f,0.1505519749814473728922f,\
+0.4388826857083177879204f,0.0379370058772945314973f,0.9336139987593442546299f,\
+0.0587631539765752775040f,0.0418948859295049033657f,0.0640275938091060398127f,\
+0.1260139337205268827979f,0.8547818589992876026074f,0.1128395809574832958644f,\
+0.0788356698867948707532f,0.4771524794855955819983f,0.0019453644757141607628f,\
+0.0114845205520388293774f,0.0189004689269446496391f,0.0664507489315135924102f,\
+0.0771809917160177494377f,0.5813292520999571166840f,0.1319828101737011150085f,\
+0.3578958571232515595284f,0.7499293978433335672307f,0.140732697763512853983f,\
+0.1025732946126776817808f,0.4317832519759596809905f}
+
+#define DP1 {0.3874644362367689609528,0.3987790448591113090515,0.9963990836404263973236,\
+0.9320784267038106918335,0.0681476672179996967316,0.7187465364113450050354,\
+0.6592897172085940837860,0.437819693237543106079,0.9570061699487268924713,\
+0.3977778619155287742615,0.5414962074719369411469,0.1475485283881425857544,\
+0.9197258842177689075470,0.4185347454622387886047,0.9044831502251327037811,\
+0.3202747702598571777344,0.5748232551850378513336,0.7572625903412699699402,\
+0.3254728927277028560638,0.5012555103749036788940,0.2686208193190395832062,\
+0.1170668462291359901428,0.3667570571415126324,0.8753886483609676361084,\
+0.5248321653343737125397,0.7686112513765692710876,0.8289924389682710170746,\
+0.6499033216387033462524,0.5625062701292335987091,0.216987949796020984650,\
+0.932231280487030744553,0.9350972101092338562012,0.9760812097229063510895,\
+0.9135094834491610527039,0.2684359191916882991791,0.0918707158416509628296,\
+0.1712972451932728290558,0.7311726594343781471252,0.8692278112284839153290,\
+0.0148080177605152130127,0.6507192836143076419830,0.4225442921742796897888,\
+0.2326209298335015773773,0.3195550013333559036255,0.7426187139935791492462,\
+0.7788188206031918525696,0.6524895387701690196991,0.9032440632581710815430,\
+0.8669646182097494602203,0.7087978003546595573425,0.6945203407667577266693,\
+0.8467157911509275436401,0.9322743569500744342804,0.9565412709489464759827,\
+0.1623990009538829326630,0.1272875182330608367920,0.9570735306479036808014,\
+0.6764409979805350303650,0.3979810453020036220551,0.1108187530189752578735,\
+0.5097153154201805591583,0.5844655903056263923645,0.2591971340589225292206,\
+0.2918234840035438537598,0.0603091740049421787262,0.9043274922296404838562,\
+0.6194427101872861385345,0.2503793593496084213257,0.8385089416988193988800,\
+0.8273218506947159767151,0.7322020228020846843719,0.2945837415754795074463,\
+0.2909102872945368289948,0.7045872574672102928162,0.3046565256081521511078,\
+0.7573066372424364089966,0.7318075490184128284454,0.6905383663251996040344,\
+0.6240276503376662731171,0.415990501642227172852,0.2810599454678595066071,\
+0.0562203852459788322449,0.5804039551876485347748,0.0042469184845685958862,\
+0.6828171615488827228546,0.8913354435935616493225,0.9298026482574641704559,\
+0.2840001545846462249756,0.0988543094135820865631,0.4136908343061804771423,\
+0.6412154859863221645355,0.6469275895506143569946,0.4702662643976509571075,\
+0.6048191310837864875793,0.6713890465907752513885,0.7139470204710960388184,\
+0.5412713759578764438629,0.3905201805755496025085,0.0110893785022199153900,\
+0.9015008416026830673218,0.1388745536096394062042,0.0850749695673584938049,\
+0.3466010238043963909149,0.4233870990574359893799,0.8021397278644144535065,\
+0.3178813671693205833435,0.1802104166708886623383,0.6968874204903841018677,\
+0.3548216861672699451447,0.1612617420032620429993,0.7534236568026244640350,\
+0.6219418197870254516602,0.5151072838343679904938,0.6781924543902277946472,\
+0.6166686578653752803802,0.7021203767508268356323,0.1362160299904644489288,\
+0.6087052235379815101624,0.1892316709272563457489,0.4761417917907238006592,\
+0.1716100485064089298248,0.4137103697285056114197,0.1531781828962266445160,\
+0.2286888156086206436157,0.9585634139366447925568,0.3949919315055012702942,\
+0.0250081899575889110565,0.4492705538868904113770,0.91384086245670915,\
+0.1101246578618884086609,0.7487958460114896297455,0.0078816469758749008179,\
+0.2352358778007328510284,0.8010628754273056983948,0.6545634861104190349579,\
+0.5162083245813846588135,0.7027181521989405155182,0.0551512306556105613708,\
+0.6256400248967111110687,0.8431313354521989822388,0.1729404223151504993439,\
+0.4173073070123791694641,0.8187537300400435924530,0.2532757520675659179688,\
+0.8608546801842749118805,0.1721261171624064445496,0.7806093706749379634857,\
+0.1373576503247022628784,0.0021877591498196125031,0.0146564701572060585022,\
+0.3046997408382594585419,0.8030776642262935638428,0.9905262948013842105865,\
+0.8285992136225104331970,0.8721015579067170619965,0.2953114155679941177368,\
+0.5827610609121620655060,0.2906773509457707405090,0.020005736034363508224,\
+0.7143468186259269714355,0.2666406803764402866364,0.5199280334636569023132,\
+0.4817320345900952816010,0.0009182598441839218140,0.3841847111470997333527,\
+0.4906664276495575904846,0.4419780815951526165009,0.6567876525223255157471,\
+0.10470610717311501503,0.4278714573010802268982,0.7510527721606194972992,\
+0.3696223665028810501099,0.8411930543370544910431,0.9037434207275509834290,\
+0.441844041924923658371,0.0109200328588485717773,0.2038001813925802707672,\
+0.854183482937514781952,0.3932710154913365840912,0.9757302235811948776245,\
+0.0841991459019482135773,0.2339450428262352943420,0.483970529865473508835,\
+0.3329230062663555145264,0.9645385951735079288483,0.5292069753631949424744,\
+0.0799680328927934169769,0.754754373803734779358,0.0447635021992027759552,\
+0.8463187487795948982239,0.2000828566960990428925,0.6944785490632057189941,\
+0.2820438765920698642731,0.7954674167558550834656,0.2028178661130368709564,\
+0.7807571645826101303101,0.9360628505237400531769,0.8880164856091141700745,\
+0.3384834821335971355438,0.8976153172552585601807}
+
+#define DP2 {0.4503413387574255466461,0.7080971030518412590027,0.2459910525940358638763,\
+0.5369079094380140304565,0.2288442556746304035187,0.8762242654338479042053,\
+0.8204974154941737651825,0.1096532605588436126709,0.3977028490044176578522,\
+0.0387893309816718101501,0.4764164215885102748871,0.5613568071275949478149,\
+0.9855364081449806690216,0.2565485062077641487122,0.0636831256560981273651,\
+0.4720427915453910827637,0.3494783216156065464020,0.4271033955737948417664,\
+0.8822676776908338069916,0.18796317838132381439,0.8610891629941761493683,\
+0.0103648686781525611877,0.9999243463389575481415,0.3546787090599536895752,\
+0.4418791518546640872955,0.7364388024434447288513,0.5289249173365533351898,\
+0.3544368315488100051880,0.5421899897046387195587,0.0146836983039975166321,\
+0.2055264669470489025116,0.1165965050458908081055,0.6571860709227621555328,\
+0.2626901743933558464050,0.1159235103987157344818,0.2698498796671628952026,\
+0.9737050686962902545929,0.8739323327317833900452,0.9124345253221690654755,\
+0.1049908511340618133545,0.2417178959585726261139,0.0428410014137625694275,\
+0.3636728501878678798676,0.3169804904609918594360,0.4641480413265526294708,\
+0.1660488517954945564270,0.5824519577436149120331,0.9950593486428260803223,\
+0.4988002800382673740387,0.0385573906823992729187,0.7751751034520566463470,\
+0.8296566363424062728882,0.1661487598903477191925,0.5635758275166153907776,\
+0.8564593489281833171844,0.0048462785780429840088,0.9567344621755182743073,\
+0.1947818165645003318787,0.7727439603768289089203,0.7450998444110155105591,\
+0.9319220376200973987579,0.8297540741041302680969,0.8786331820301711559296,\
+0.9850863516330718994141,0.9117660173214972019196,0.3733268706128001213074,\
+0.2097233845852315425873,0.1312689464539289474487,0.5437363986857235431671,\
+0.6896163979545235633850,0.9956645886413753032684,0.3840484581887722015381,\
+0.3460536063648760318756,0.1614690115675330162048,0.25720636313781142235,\
+0.5892038289457559585571,0.3193828281946480274200,0.5760813476517796516418,\
+0.8309780987910926342010,0.0873794183135032653809,0.2206377261318266391754,\
+0.5555423153564333915710,0.6657536565326154232025,0.5303691830486059188843,\
+0.0926435221917927265167,0.2510469639673829078674,0.7339503909461200237274,\
+0.1329477317631244659424,0.1434094593860208988190,0.5195322250947356224060,\
+0.4021125487051904201508,0.3289982546120882034302,0.5687606376595795154572,\
+0.3014845298603177070618,0.6041290420107543468475,0.3006873279809951782227,\
+0.4120792248286306858063,0.4186693010851740837097,0.6609355970285832881927,\
+0.3494365941733121871948,0.0549050425179302692413,0.5105323204770684242249,\
+0.0904512773267924785614,0.5774413160979747772217,0.4321455270983278751373,\
+0.3280229708179831504822,0.2514993823133409023285,0.8484858069568872451782,\
+0.5656450656242668628693,0.1035893531516194343567,0.1654627206735312938690,\
+0.4968057349324226379395,0.5098637067712843418121,0.2160952789708971977234,\
+0.3594232588075101375580,0.7527473028749227523804,0.3034152467735111713409,\
+0.8694091374054551124573,0.0745361442677676677704,0.3539733029901981353760,\
+0.0202146903611719608307,0.0034146374091506004333,0.6833881041966378688812,\
+0.3109660465270280838013,0.5139850866980850696564,0.1561934249475598335266,\
+0.6600902187637984752655,0.2955771684646606445312,0.9498737403191626071930,\
+0.4961295751854777336121,0.9468550696037709712982,0.6213743072003126144409,\
+0.7169277970679104328156,0.7426859596744179725647,0.0608082632534205913544,\
+0.2845346592366695404053,0.8151792050339281558990,0.1946024885401129722595,\
+0.7847843295894563198090,0.0340354088693857192993,0.3110890504904091358185,\
+0.5842662276700139045715,0.7858569952659308910370,0.9398910328745841979980,\
+0.9551012688316404819489,0.9770033909007906913757,0.0053538321517407894135,\
+0.4281874801963567733765,0.5550557305105030536652,0.4340432072058320045471,\
+0.1641052807681262493134,0.2516632266342639923096,0.1992107019759714603424,\
+0.65790366288274526596,0.226678048726171255112,0.3645872045308351516724,\
+0.9226246816106140613556,0.3389491187408566474915,0.1683428841643035411835,\
+0.1706836074590682983398,0.9106476106680929660797,0.4218698022887110710144,\
+0.8885267241857945919037,0.1128535699099302291870,0.8332714592106640338898,\
+0.0108331749215722084045,0.6144992182962596416473,0.0734437219798564910889,\
+0.4040901870466768741608,0.1320571741089224815369,0.6390436268411576747894,\
+0.5538116190582513809204,0.7576190796680748462677,0.0725553305819630622864,\
+0.7358620944432914257050,0.1019380465149879455566,0.7387234591878950595856,\
+0.5138037605211138725281,0.0964652984403073787689,0.9568361993879079818726,\
+0.6979067702777683734894,0.1790800327435135841370,0.1322964723221957683563,\
+0.3785077370703220367432,0.8862080411054193973541,0.2132239108905196189880,\
+0.9858398041687905788422,0.6321957129985094070435,0.0434587192721664905548,\
+0.0135699706152081489563,0.0944632100872695446014,0.0956843793392181396484,\
+0.2736488827504217624664,0.7308020917698740959167,0.6507454826496541500092,\
+0.4583958666771650314331,0.8011528258211910724640,0.1584798255935311317444,\
+0.3030378143303096294403,0.4810337387025356292725}
+
+#define DRes {0.1744912529357576791433,0.2823742864225169957315,0.2451052593884412711400,\
+0.5004402795138161996746,0.0155952021804655512061,0.6297831559001532131248,\
+0.5409455090315361536213,0.0480083569003692950394,0.3806040803034145825201,\
+0.0154295371430231906262,0.257977685467529749275,0.0828273707923430219102,\
+0.9064233444099463188337,0.1073744637443841548619,0.0576003141096106049956,\
+0.1511833966150217811730,0.2008882664476865365089,0.3234294236757639939839,\
+0.2871542132181882922559,0.0942175789112195266606,0.231306476470241606513,\
+0.0012133824877304738923,0.3667293106274266967226,0.3104817157264057603250,\
+0.2319123920839998853616,0.5660351495083181250223,0.4384747572539204885089,\
+0.2303496741346691967234,0.3049852688101639119900,0.0031861855904077316173,\
+0.1915982014560227986166,0.1090290665768997024898,0.6414669751193333713246,\
+0.2399699655172445322826,0.0311180340698064966665,0.0247913016148056282451,\
+0.1667929958984009919387,0.6389954278891879502211,0.7931134653350897512070,\
+0.0015547063882847961258,0.1572904960949201291776,0.0181022206184156195241,\
+0.0845979165659015430734,0.1012927010519100584629,0.3446850215525631422331,\
+0.1293219709178812792949,0.3800438092639132903194,0.8987814492511753128312,\
+0.4324421943462926076762,0.0273293937030998496107,0.5383748770034290087594,\
+0.7024833752242779505437,0.1548962282848262428381,0.5390835383288474780272,\
+0.1390881426235499873645,0.0006168707728651384725,0.9156652296068464869094,\
+0.1317584063853521059162,0.3075374491015804290228,0.0825710356322612165636,\
+0.4750149353525452977642,0.4849627047297689896865,0.2277392026712919681497,\
+0.2874713311779031332804,0.0549878553904352973536,0.3376097526832130268915,\
+0.1299116217371263370950,0.0328670347156327785632,0.4559278322250933657145,\
+0.5705347146251601442302,0.7290276258356205296707,0.1131344317595426168799,\
+0.1006705540469166465511,0.1137690080263093483914,0.0783595969578743251072,\
+0.4462079703492781712626,0.2337267646996942227489,0.3978062726778792690396,\
+0.5185533104706666618355,0.0363490080574402352198,0.0620124272747637136916,\
+0.0312328029897817466276,0.3864060554321692708690,0.0022524346871346696830,\
+0.0632585868588908389887,0.2237670569906841377961,0.6824290171913035552009,\
+0.0377571763724054293432,0.0141766430709802434412,0.2149257196483875254067,\
+0.2578407933391972939319,0.2128380478225575245244,0.2674689404085963673197,\
+0.1823436113853212359182,0.4056056215333987968741,0.2146748219054467332612,\
+0.223046689026648065068,0.1634988110612213274564,0.0073293650010406562884,\
+0.3150173837340161653309,0.0076249132705958379275,0.0434335216277395089191,\
+0.0313505053258816626660,0.2444812036986294678798,0.3466410955044766373234,\
+0.1042723904265626388987,0.0453228084791582885860,0.5912990853328871088124,\
+0.2007031359569984296787,0.0167049995422212521623,0.1246635280743631640776,\
+0.3089842628645015354394,0.2626345091206789272853,0.1465541876274137622627,\
+0.2216450586144267098643,0.5285192198927095574845,0.0413300203540647725919,\
+0.5292138833303512424067,0.0141045991242647154873,0.1685414827318337249729,\
+0.0034690439934227570301,0.0014126709050284813954,0.1046801480137381917812,\
+0.0711144568747612698667,0.4926872994178387865638,0.0616951426084962062379,\
+0.0165076615799914921956,0.1327941181924368052591,0.868033438078243735347,\
+0.0546360997224647759740,0.7090011428942235571782,0.0048974529292317055262,\
+0.1686471396630155883400,0.5949381503962772876903,0.0398028687794790766996,\
+0.1468791597298964024532,0.5728412246724432499434,0.0107325667316315806477,\
+0.4909924875028962021339,0.0286963197327067993936,0.0537998717694305322867,\
+0.2438185660472551308242,0.6434233461520417751700,0.2380516082128716348620,\
+0.8222033973236569925902,0.1681678001302578939757,0.0041792515466696263798,\
+0.0588148261782265452391,0.0012143282530841621129,0.0063615413133502824242,\
+0.0500028365202378755061,0.2021051162170970916243,0.1973234385130417933851,\
+0.5451384577040119250313,0.1976862794373486775790,0.1076667634679787238783,\
+0.5376697382791472135111,0.0985248319409957051818,0.0033678233038544891365,\
+0.1219272919799819776543,0.2428156984917200222895,0.2193419366816712900992,\
+0.4280317866296952655780,0.0001036289015210918596,0.3201301548639712835076,\
+0.0053154752388706117197,0.271595185644301739813,0.0482369297516522660407,\
+0.0423107104325134431022,0.0565034955330471419521,0.4799554874706279394836,\
+0.20470116123310294620,0.6373039076500160993177,0.0655714026521615894749,\
+0.3251362821081638099230,0.0011131668175105025043,0.1505519749814473728922,\
+0.4388826857083177879204,0.0379370058772945314973,0.9336139987593442546299,\
+0.0587631539765752775040,0.0418948859295049033657,0.0640275938091060398127,\
+0.1260139337205268827979,0.8547818589992876026074,0.1128395809574832958644,\
+0.0788356698867948707532,0.4771524794855955819983,0.0019453644757141607628,\
+0.0114845205520388293774,0.0189004689269446496391,0.0664507489315135924102,\
+0.0771809917160177494377,0.5813292520999571166840,0.1319828101737011150085,\
+0.3578958571232515595284,0.7499293978433335672307,0.140732697763512853983,\
+0.1025732946126776817808,0.4317832519759596809905}
+
+
+
+#define CR1 {0.4167818673886358737946f,0.7754927603527903556824f,0.6147445752285420894623f,\
+0.2206868808716535568237f,0.4781269435770809650421f,0.1743857422843575477600f,\
+0.2262396733276546001434f,0.8763213120400905609131f,0.6657514632679522037506f,\
+0.9176845839247107505798f,0.5456351465545594692230f,0.9846978131681680679321f,\
+0.6502424892969429492950f,0.6890702964738011360168f,0.5013572606258094310760f,\
+0.7673201188445091247559f,0.5771855586208403110504f,0.3508661640807986259460f,\
+0.6027267514728009700775f,0.8505915608257055282593f,0.0968277682550251483917f,\
+0.1382516110315918922424f,0.3514578486792743206024f,0.0176461227238178253174f,\
+0.7433502362109720706940f,0.3358979439362883567810f,0.1121416739188134670258f,\
+0.3644763696938753128052f,0.2574999374337494373322f,0.1557759689167141914368f,\
+0.7854640143923461437225f,0.3291082531213760375977f,0.9463309147395193576813f,\
+0.0348854837939143180847f,0.1279074712656438350677f,0.5625727903097867965698f,\
+0.6738048647530376911163f,0.0716566452756524085999f,0.0616879831068217754364f,\
+0.1104246191680431365967f,0.5760010988451540470123f,0.8197732111439108848572f,\
+0.8186757243238389492035f,0.8735574278980493545532f,0.0946858790703117847443f,\
+0.1581676574423909187317f,0.2620503786019980907440f,0.8170662596821784973145f,\
+0.4229911291040480136871f,0.4559381706640124320984f,0.2294407873414456844330f,\
+0.8959066923707723617554f,0.9569525201804935932159f,0.7509375149384140968323f,\
+0.2412989730946719646454f,0.1661008931696414947510f,0.8466569320298731327057f,\
+0.1607837742194533348083f,0.4182585380040109157562f,0.0502405483275651931763f,\
+0.2407492888160049915314f,0.2450429694727063179016f,0.9512274372391402721405f,\
+0.2260366678237915039062f,0.318048770073801279068f,0.5373335508629679679871f,\
+0.9679651274345815181732f,0.1066662650555372238159f,0.7000243966467678546906f,\
+0.9661027649417519569397f,0.1398940901271998882294f,0.3816659115254878997803f,\
+0.3378799916245043277740f,0.3828248968347907066345f,0.8728957301937043666840f,\
+0.5871221665292978286743f,0.4679985162802040576935f,0.9163713874295353889465f,\
+0.4258406492881476879120f,0.1739088818430900573730f,0.7294957810081541538239f,\
+0.3723028255626559257507f,0.8006032942794263362885f,0.0427213814109563827515f,\
+0.0376335312612354755402f,0.3958328152075409889221f,0.7473109806887805461884f,\
+0.0146575160324573516846f,0.3068419084884226322174f,0.6172137176617980003357f,\
+0.7285772911272943019867f,0.206095593050122261047f,0.6171012860722839832306f,\
+0.4982942687347531318665f,0.1864698487333953380585f,0.7766191810369491577148f,\
+0.9174334802664816379547f,0.0989990709349513053894f,0.9559624656103551387787f,\
+0.0187387894839048385620f,0.8602523361332714557648f,0.4824799606576561927795f,\
+0.1686216662637889385223f,0.2581604234874248504639f,0.8603236884810030460358f,\
+0.9776892503723502159119f,0.4902775860391557216644f,0.5333510134369134902954f,\
+0.9720846978016197681427f,0.0181248458102345466614f,0.0364292445592582225800f,\
+0.5231507197022438049316f,0.6790725612081587314606f,0.7754972381517291069031f,\
+0.8091341941617429256439f,0.6911821123212575912476f,0.1892125983722507953644f,\
+0.3070683712139725685120f,0.9991325433366000652313f,0.1158062256872653961182f,\
+0.3297157124616205692291f,0.4354123836383223533630f,0.9969553551636636257172f,\
+0.9743754882365465164185f,0.6353352260775864124298f,0.0793482260778546333313f,\
+0.4567674207501113414764f,0.1505335271358489990234f,0.7237330921925604343414f,\
+0.2547941533848643302917f,0.2566944076679646968842f,0.9333118479698896408081f,\
+0.5517054800875484943390f,0.4642940917983651161194f,0.6993843833915889263153f,\
+0.2767733894288539886475f,0.6460177362896502017975f,0.6939658811315894126892f,\
+0.7965537137351930141449f,0.5889529529958963394165f,0.9025987205095589160919f,\
+0.7366213919594883918762f,0.9812673362903296947479f,0.5188445076346397399902f,\
+0.0478445165790617465973f,0.0598085178062319755554f,0.0917034088633954524994f,\
+0.7101853694766759872437f,0.3557815183885395526886f,0.9375250423327088356018f,\
+0.9701523329131305217743f,0.9907872565090656280518f,0.7148388908244669437408f,\
+0.0643543815240263938904f,0.5210001519881188869476f,0.9661642182618379592896f,\
+0.6379804057069122791290f,0.3707732008770108222961f,0.5714463251642882823944f,\
+0.4862074404954910278320f,0.3099456527270376682281f,0.2583809075877070426941f,\
+0.3787058754824101924896f,0.9536569248884916305542f,0.2653506253845989704132f,\
+0.9738010177388787269592f,0.1274459133855998516083f,0.9431200437247753143311f,\
+0.7913976819254457950592f,0.3400043984875082969666f,0.2612065351568162441254f,\
+0.0993869695812463760376f,0.6489448812790215015411f,0.5638043852522969245911f,\
+0.9915560963563621044159f,0.7837929800152778625488f,0.2056846939958631992340f,\
+0.3382737739011645317078f,0.8287308602593839168549f,0.4373776372522115707397f,\
+0.5751820881851017475128f,0.9588336879387497901917f,0.4775090212933719158173f,\
+0.1295908428728580474854f,0.8555219904519617557526f,0.6717643206939101219177f,\
+0.9420691034756600856781f,0.2612957675009965896606f,0.0613161218352615833282f,\
+0.9738875525072216987610f,0.1835827338509261608124f,0.8908186554908752441406f,\
+0.8428192087449133396149f,0.0821714429184794425964f,0.1742917909286916255951f,\
+0.6517955046147108078003f,0.5859045688994228839874f,0.2920065978541970252991f,\
+0.6918199281208217144012f,0.7315656207501888275146f}
+
+#define CI1 {0.9866490722633898258209f,0.4429044118151068687439f,0.6974684721790254116058f,\
+0.8788620475679636001587f,0.6942774769850075244904f,0.2103671850636601448059f,\
+0.6422466966323554515839f,0.9095488712191581726074f,0.1162161403335630893707f,\
+0.4426801158115267753601f,0.54438647022470831871f,0.6791554000228643417358f,\
+0.9790061046369373798370f,0.2613751674070954322815f,0.1820912803523242473602f,\
+0.9909572191536426544189f,0.7388255582191050052643f,0.1441168105229735374451f,\
+0.2452696315012872219086f,0.408354120329022407532f,0.4353716713376343250275f,\
+0.7087596403434872627258f,0.7900028186850249767303f,0.4402949064970016479492f,\
+0.0828518071211874485016f,0.4173278687521815299988f,0.8394970758818089962006f,\
+0.0684990715235471725464f,0.1918341075070202350616f,0.9186666915193200111389f,\
+0.4752700994722545146942f,0.0852253548800945281982f,0.5157074541784822940826f,\
+0.2485155304893851280212f,0.2623219466768205165863f,0.2103371713310480117798f,\
+0.6155008045025169849396f,0.6057531507685780525208f,0.3520403089933097362518f,\
+0.4564149156212806701660f,0.3368119024671614170074f,0.9235646529123187065125f,\
+0.1065901606343686580658f,0.7106651421636343002319f,0.7925953646190464496613f,\
+0.9542803401127457618713f,0.58853778196498751640f,0.0023766197264194488525f,\
+0.9455601410008966922760f,0.0866364603862166404724f,0.759459157940000295639f,\
+0.4246732611209154129028f,0.3839263510890305042267f,0.6142078237608075141907f,\
+0.7312827515415847301483f,0.1793139278888702392578f,0.3842914947308599948883f,\
+0.6737622944638133049011f,0.9141166522167623043060f,0.7132891099900007247925f,\
+0.8553560380823910236359f,0.5722871581092476844788f,0.4043100993148982524872f,\
+0.4159644804894924163818f,0.2562583745457231998444f,0.7214373638853430747986f,\
+0.4564993805252015590668f,0.8455213252454996109009f,0.0832691607065498828888f,\
+0.8981556417420506477356f,0.3833881053142249584198f,0.9534438475966453552246f,\
+0.0185950272716581821442f,0.0502144945785403251648f,0.7270118533633649349213f,\
+0.2758033480495214462280f,0.3350416650064289569855f,0.3654300654307007789612f,\
+0.0452371980063617229462f,0.5600892789661884307861f,0.6502862856723368167877f,\
+0.823297879658639431000f,0.1572451046667993068695f,0.7963371742516756057739f,\
+0.6245094579644501209259f,0.9478004621341824531555f,0.1917487042956054210663f,\
+0.1213034540414810180664f,0.6951363184489309787750f,0.9801368294283747673035f,\
+0.2816954418085515499115f,0.5644371043890714645386f,0.4424371575005352497101f,\
+0.1901238569989800453186f,0.2492035995237529277802f,0.1043982319533824920654f,\
+0.6797373802401125431061f,0.5450195213779807090759f,0.1244831955991685390472f,\
+0.0048734936863183975220f,0.8619868424721062183380f,0.4545180173590779304504f,\
+0.8424912574701011180878f,0.8984384015202522277832f,0.9064385616220533847809f,\
+0.8106667501851916313171f,0.9610714702866971492767f,0.5872165020555257797241f,\
+0.0191868026740849018097f,0.0414552027359604835510f,0.7443282003514468669891f,\
+0.0290854312479496002197f,0.6213145391084253787994f,0.3968256777152419090271f,\
+0.4549848935566842556000f,0.4781798440963029861450f,0.9684002888388931751251f,\
+0.1858559148386120796204f,0.1994768488220870494843f,0.2484412193298339843750f,\
+0.5571343251504004001617f,0.1838635830208659172058f,0.1695283665321767330170f,\
+0.0689645390957593917847f,0.9127942626364529132843f,0.9281826475635170936584f,\
+0.6239642719738185405731f,0.4998918436467647552490f,0.8513300181366503238678f,\
+0.1213616123422980308533f,0.4545058137737214565277f,0.3776026610285043716431f,\
+0.8098081466741859912872f,0.8605336369946599006653f,0.6793009373359382152557f,\
+0.7579513117671012878418f,0.3389655523933470249176f,0.9117085291072726249695f,\
+0.7079389332793653011322f,0.3263010885566473007202f,0.3516225744970142841339f,\
+0.7477366114035248756409f,0.7216994608752429485321f,0.7431053109467029571533f,\
+0.2207054481841623783112f,0.5686944639310240745544f,0.0127859464846551418304f,\
+0.893785255029797554016f,0.3206281405873596668243f,0.0234425412490963935852f,\
+0.626293356996029615402f,0.5116549581289291381836f,0.1057835617102682590485f,\
+0.8511046646162867546082f,0.1486603482626378536224f,0.1426428984850645065f,\
+0.3198941503651440143585f,0.1612193891778588294983f,0.9863557885400950908661f,\
+0.9205605499446392059326f,0.4299718351103365421295f,0.5713132461532950401306f,\
+0.9785496569238603115082f,0.1216678116470575332642f,0.8786373701877892017365f,\
+0.9206458600237965583801f,0.6875183167867362499237f,0.9672853127121925354004f,\
+0.2485490464605391025543f,0.7788769407197833061218f,0.2105341642163693904877f,\
+0.6432035919278860092163f,0.9326907773502171039581f,0.4684051508083939552307f,\
+0.8569896514527499675751f,0.0046391524374485015869f,0.4042695597745478153229f,\
+0.8191288476809859275818f,0.5345056853257119655609f,0.9354873914271593093872f,\
+0.6799723100848495960236f,0.3743787007406353950500f,0.1877744006924331188202f,\
+0.8306224048137664794922f,0.0703320750035345554352f,0.2667721835896372795105f,\
+0.1338863088749349117279f,0.1699936669319868087769f,0.8109536175616085529327f,\
+0.4827399412170052528381f,0.6378918210975825786591f,0.6532695852220058441162f,\
+0.6683483780361711978912f,0.7344740321859717369080f,0.5723471469245851039886f,\
+0.8637779299169778823853f,0.114128809887915849686f,0.6580480458214879035950f,\
+0.5045945676974952220917f,0.9304931387305259704590f}
+
+#define CR2 {0.4259712868370115756989f,0.7602704120799899101257f,0.0969742774032056331635f,\
+0.4801846649497747421265f,0.1877757241018116474152f,0.8814185047522187232971f,\
+0.0292700375430285930634f,0.8533888049423694610596f,0.6302552805282175540924f,\
+0.5044946586713194847107f,0.1639711013995110988617f,0.7960704732686281204224f,\
+0.7220622044987976551056f,0.8315819846466183662415f,0.0036919671110808849335f,\
+0.9424226135015487670898f,0.5196401872672140598297f,0.5065894601866602897644f,\
+0.4127033217810094356537f,0.6533151101320981979370f,0.501574948895722627640f,\
+0.520403296686708927155f,0.0206185649149119853973f,0.4165633432567119598389f,\
+0.1275541991926729679108f,0.9734601816162467002869f,0.9600647068582475185394f,\
+0.0264936182647943496704f,0.2156869736500084400177f,0.4144923957064747810364f,\
+0.2820876422338187694550f,0.0115554705262184143066f,0.2319323443807661533356f,\
+0.9741948051378130912781f,0.8930417983792722225189f,0.2787308450788259506226f,\
+0.0853875060565769672394f,0.0125637287274003028870f,0.3567141587845981121063f,\
+0.4434901513159275054932f,0.5231852368451654911041f,0.4986576801165938377380f,\
+0.4054326615296304225922f,0.8140451926738023757935f,0.7187507343478500843048f,\
+0.8415299849584698677063f,0.5039089727215468883514f,0.4986489713191986083984f,\
+0.1471678265370428562164f,0.3910832731053233146667f,0.3095656349323689937592f,\
+0.6046923678368330001831f,0.3414045576937496662140f,0.3275958457961678504944f,\
+0.3730975906364619731903f,0.9983476959168910980225f,0.6231481493450701236725f,\
+0.1586699178442358971f,0.9230180806480348110199f,0.5935091320425271987915f,\
+0.4019993362016975879669f,0.5423517348244786262512f,0.0779389175586402416229f,\
+0.6387800201773643493652f,0.1367760770954191684723f,0.6551735652610659599304f,\
+0.3303351341746747493744f,0.9712570514529943466187f,0.5526766409166157245636f,\
+0.8238675678148865699768f,0.6455440069548785686493f,0.7058613188564777374268f,\
+0.2080520675517618656158f,0.6395015334710478782654f,0.0197484544478356838226f,\
+0.3289662469178438186646f,0.0045380038209259510040f,0.2727865027263760566711f,\
+0.8406948107294738292694f,0.6650723963975906372070f,0.7342959144152700901031f,\
+0.2093062577769160270691f,0.8948949738405644893646f,0.6852791439741849899292f,\
+0.2581136678345501422882f,0.1234186897054314613342f,0.3650629292242228984833f,\
+0.6263032369315624237061f,0.4081154973246157169342f,0.1095790406689047813416f,\
+0.6615356481634080410004f,0.3887942228466272354126f,0.2088313368149101734161f,\
+0.9898350210860371589661f,0.4314283612184226512909f,0.6836967542767524719238f,\
+0.5103755318559706211090f,0.9162438018247485160828f,0.5892742066644132137299f,\
+0.8954097684472799301147f,0.6274849255569279193878f,0.9869608813896775245667f,\
+0.7128982539288699626923f,0.1304925419390201568604f,0.0781663195230066776276f,\
+0.0947508281096816062927f,0.6482759020291268825531f,0.4206676203757524490356f,\
+0.0157033097930252552032f,0.7266698973253369331360f,0.6671256530098617076874f,\
+0.5488706231117248535156f,0.4477724977768957614899f,0.9336705235764384269714f,\
+0.0209862603805959224701f,0.4670969229191541671753f,0.8364190761931240558624f,\
+0.1888776877894997596741f,0.2355282525531947612762f,0.7747952006757259368896f,\
+0.1726417900063097476959f,0.3532871594652533531189f,0.9888498312793672084808f,\
+0.2265578750520944595337f,0.1193372723646461963654f,0.467635613866150379181f,\
+0.9175071450881659984589f,0.7378584071993827819824f,0.3163537555374205112457f,\
+0.5891926242038607597351f,0.1940289377234876155853f,0.8575854804366827011108f,\
+0.441404156852513551712f,0.3922245288267731666565f,0.2196655715815722942352f,\
+0.1761240549385547637939f,0.1205885396338999271393f,0.7508801734074950218201f,\
+0.2761224261485040187836f,0.6377332974225282669067f,0.2822759491391479969025f,\
+0.0232485281303524971008f,0.4800276714377105236053f,0.2259713858366012573242f,\
+0.0480956234969198703766f,0.255338179878890514374f,0.8838844164274632930756f,\
+0.9909171890467405319214f,0.7547875796444714069366f,0.0237286994233727455139f,\
+0.0672572324983775615692f,0.8869388215243816375732f,0.2006625742651522159576f,\
+0.1356438836082816123962f,0.0619430518709123134613f,0.3897590730339288711548f,\
+0.7104214397259056568146f,0.9051968725398182868958f,0.9548764410428702831268f,\
+0.3615677133202552795410f,0.1120837950147688388824f,0.2245571417734026908875f,\
+0.0125192492268979549408f,0.1329306717962026596069f,0.2197761316783726215363f,\
+0.1487893695011734962463f,0.6704846317879855632782f,0.2702460922300815582275f,\
+0.916129274759441614151f,0.2131141787394881248474f,0.2321454486809670925140f,\
+0.9974972624331712722778f,0.4280352187342941761017f,0.2013407545164227485657f,\
+0.6199770378880202770233f,0.7410524189472198486328f,0.8895133384503424167633f,\
+0.5842213360592722892761f,0.0233843638561666011810f,0.7662614267319440841675f,\
+0.7854359750635921955109f,0.346477583982050418854f,0.7867635409347712993622f,\
+0.3745993338525295257568f,0.3698633969761431217194f,0.4212488224729895591736f,\
+0.3815477318130433559418f,0.630106801167130470276f,0.6527381357736885547638f,\
+0.4507121564820408821106f,0.8059874209575355052948f,0.0838774070143699645996f,\
+0.0486886971630156040192f,0.091624463908374309540f,0.2564150630496442317963f,\
+0.4653418269008398056030f,0.2816926469095051288605f,0.5845362627878785133362f,\
+0.4137441064231097698212f,0.8090988881886005401611f}
+
+#define CI2 {0.6393490717746317386627f,0.805427453480660915375f,0.1889523915015161037445f,\
+0.9860434997826814651489f,0.1705104154534637928009f,0.5185149358585476875305f,\
+0.2712999242357909679413f,0.1075414568185806274414f,0.9200236895121634006500f,\
+0.0489821014925837516785f,0.3230310245417058467865f,0.7714011203497648239136f,\
+0.7943310593254864215851f,0.0943802008405327796936f,0.1643108497373759746552f,\
+0.6183919720351696014404f,0.1516798050142824649811f,0.8934515854343771934509f,\
+0.7921462929807603359222f,0.1680600438266992568970f,0.7106916573829948902130f,\
+0.4711248250678181648254f,0.5770412567071616649628f,0.4025902226567268371582f,\
+0.8710415088571608066559f,0.1784316999837756156921f,0.481136301066726446152f,\
+0.0674654301255941390991f,0.0399954994209110736847f,0.2460960680618882179260f,\
+0.6415826673619449138641f,0.1576726771891117095947f,0.0585584775544703006744f,\
+0.5705446070060133934021f,0.1629006764851510524750f,0.5582059938460588455200f,\
+0.3209808361716568470001f,0.4510894315317273139954f,0.4620725023560225963593f,\
+0.3076162338256835937500f,0.6813747235573828220367f,0.4970325855538249015808f,\
+0.0101193203590810298920f,0.4533577542752027511597f,0.7411896293051540851593f,\
+0.4234424093738198280334f,0.8139128307811915874481f,0.9676819704473018646240f,\
+0.6112973452545702457428f,0.9543517818674445152283f,0.4819711572490632534027f,\
+0.6928277853876352310181f,0.7424363014288246631622f,0.5521282376721501350403f,\
+0.217989120166748762131f,0.7842588946223258972168f,0.9177652769722044467926f,\
+0.1917659593746066093445f,0.5858528851531445980072f,0.6206979658454656600952f,\
+0.0012764860875904560089f,0.8988496446982026100159f,0.3898889864794909954071f,\
+0.6497076936066150665283f,0.5358180389739573001862f,0.2699402486905455589294f,\
+0.514097725506871938705f,0.1375687289983034133911f,0.7844757777638733386993f,\
+0.6941326009109616279602f,0.0641209441237151622772f,0.2922044843435287475586f,\
+0.3090644874610006809235f,0.4945348976179957389832f,0.6556941731832921504974f,\
+0.7279028128832578659058f,0.6794784818775951862335f,0.7084200689569115638733f,\
+0.1933331559412181377411f,0.7405845634639263153076f,0.4076515645720064640045f,\
+0.7247990211471915245056f,0.9830047464929521083832f,0.3623690102249383926392f,\
+0.6998763647861778736115f,0.4981657536700367927551f,0.5225321832112967967987f,\
+0.6641861572861671447754f,0.1212330483831465244293f,0.5571643514558672904968f,\
+0.8134847371838986873627f,0.275185918435454368591f,0.7658774037845432758331f,\
+0.5269278520718216896057f,0.5383017356507480144501f,0.5876941718161106109619f,\
+0.0269383029080927371979f,0.3838389879092574119568f,0.9464009604416787624359f,\
+0.6164656896144151687622f,0.5597745371051132678986f,0.1614628033712506294250f,\
+0.7930214214138686656952f,0.9809839427471160888672f,0.5323410280980169773102f,\
+0.3264011470600962638855f,0.1745505048893392086029f,0.9795577805489301681519f,\
+0.7564144139178097248077f,0.5428190389648079872131f,0.6040854970924556255341f,\
+0.2239649854600429534912f,0.7934280098415911197662f,0.0443929126486182212830f,\
+0.1709794825874269008636f,0.8033927027136087417603f,0.6286661443300545215607f,\
+0.3324307324364781379700f,0.1281216177158057689667f,0.4464247450232505798340f,\
+0.0075678699649870395660f,0.4189139856025576591492f,0.7507017790339887142181f,\
+0.64982577227056026459f,0.0278900493867695331573f,0.3332115495577454566956f,\
+0.8102095867507159709930f,0.2428723461925983428955f,0.0814798162318766117096f,\
+0.1112154340371489524841f,0.5074178031645715236664f,0.3559808600693941116333f,\
+0.7394064110703766345978f,0.9856483982875943183899f,0.2081001061014831066132f,\
+0.2623823434114456176758f,0.6742023923434317111969f,0.9962934432551264762878f,\
+0.8252332373522222042084f,0.0615941416472196578979f,0.2129642223007977008820f,\
+0.7388951787725090980530f,0.1914335261099040508270f,0.6734384708106517791748f,\
+0.6150622279383242130280f,0.4714830657467246055603f,0.2653777874074876308441f,\
+0.1113578472286462783813f,0.6682099369354546070099f,0.2968665333464741706848f,\
+0.5159585955552756786346f,0.5037773922085762023926f,0.6966427885927259922028f,\
+0.6400519711896777153015f,0.3279239325784146785736f,0.8322640117257833480835f,\
+0.5751562197692692279816f,0.7393315965309739112854f,0.7727512116543948650360f,\
+0.8552324511110782623291f,0.8427531258203089237213f,0.3697941964492201805115f,\
+0.5885056755505502223969f,0.185948224738240242004f,0.5096506965346634387970f,\
+0.5180077450349926948547f,0.7124331700615584850311f,0.9935774207115173339844f,\
+0.6513966270722448825836f,0.2266238955780863761902f,0.2100372924469411373138f,\
+0.296033380553126335144f,0.3838447039015591144562f,0.3276543477550148963928f,\
+0.9443909148685634136200f,0.3133702538907527923584f,0.3127397657372057437897f,\
+0.2831690898165106773376f,0.8294320828281342983246f,0.8504734281450510025024f,\
+0.0516620394773781299591f,0.8521665157750248908997f,0.0109942886047065258026f,\
+0.1777968332171440124512f,0.9020808511413633823395f,0.8023654175922274589539f,\
+0.8193211196921765804291f,0.3788971211761236190796f,0.2892677118070423603058f,\
+0.3856688523665070533752f,0.8368152822367846965790f,0.6335147209465503692627f,\
+0.0478187785483896732330f,0.7960498845204710960388f,0.9247719994746148586273f,\
+0.4049517679959535598755f,0.1505366903729736804962f,0.3286092029884457588196f,\
+0.5528467851690948009491f,0.0004969090223312377930f}
+
+#define CResR {-0.4532760601370298680912f,0.2328568279348733338630f,-0.0721739248448070302988f,\
+-0.7606257532599224324699f,-0.0286009079979238634017f,0.0446282927443572285942f,\
+-0.1676194364050221097262f,0.6500285865688182340705f,0.3126717730334664935299f,\
+0.4412835685735998492163f,-0.0863853232804955989410f,0.2599876176861364296400f,\
+-0.3081394309018399835232f,0.5483498039081077246593f,-0.0280685784873250555871f,\
+0.1103398428388524532551f,0.1878638951594227557429f,0.0489837078099595035763f,\
+0.0544579030846000788912f,0.4870763078789703826033f,-0.2608486317663467612959f,\
+-0.2619676674188661236187f,-0.4486176628283578549095f,-0.1699076965638988134799f,\
+0.0226500810131932545088f,0.2525187524366853675239f,-0.2962492545486477002470f,\
+0.0050349784816676457222f,0.0478668812844439128806f,-0.161512306092542023972f,\
+-0.0833553662573387199597f,-0.0096347091494573405823f,0.1892857042353479901653f,\
+-0.1078039385912064745954f,0.0714942955946598623918f,0.0393949194957836229536f,\
+-0.1400294459234943666992f,-0.2723485697759917556482f,-0.1406631695056576036862f,\
+-0.0914284063414464026609f,0.0718601543879791859748f,-0.0502555196723774022516f,\
+0.3308392578597269539920f,0.3889296718119258922108f,-0.5194079193768161850642f,\
+-0.2709799400469976582428f,-0.3469689150581814485186f,0.4051294378302779941592f,\
+-0.5157677188576927918007f,0.0956281317726613566688f,-0.2950104262230037743819f,\
+0.2475225041547986504220f,0.0416670917625362458026f,-0.0931174729511790588710f,\
+-0.0693836181169946164538f,0.0251979011091364446528f,0.1749033102248601090345f,\
+-0.1036931245422025305025f,-0.1494776851046086263430f,-0.4129188753992821814265f,\
+0.0956892042125161157440f,-0.381500629131777346803f,-0.0834984180348100207825f,\
+-0.1258676160077962236095f,-0.0938063966240257895990f,0.1573017568314179215339f,\
+0.0850675970242064927174f,-0.0127169319676398440144f,0.3215644924894006106975f,\
+0.1725016235865347580258f,0.0657245842114690947966f,-0.0091973641655471172207f,\
+0.0645495682688117383696f,0.2199842886414065112888f,-0.4594590945201037501811f,\
+-0.0076146572424504455068f,-0.2255298228492429168934f,-0.0089042461759258062504f,\
+0.3492561737977078473172f,-0.2991314773617905764524f,0.2705755498034173589517f,\
+-0.5188001861108486600926f,0.5618831798406120903167f,-0.2592918419562091347785f,\
+-0.4273656804273420206641f,-0.4233085641525572428989f,0.1726206665681528085177f,\
+-0.0713880252688461475197f,0.0409534431553852107388f,-0.4784636138374023794917f,\
+0.2528249080775029078438f,-0.0751963670383180432522f,-0.2099825350036476079296f,\
+0.3930475624040330462350f,-0.0536983488983542034401f,0.4696177809171224182272f,\
+0.4499246289866181136574f,-0.1184924563459542473653f,0.4455130076495959490224f,\
+0.0137745535065977864342f,0.0572770873632376664730f,0.4028010939579977911507f,\
+-0.5479035230736655215367f,-0.8476656355498256578684f,-0.4152860994745538603112f,\
+-0.1719656910372130420583f,0.1500796339609139773419f,-0.3508489918077146718645f,\
+0.0007517730549635760762f,-0.0093318934652646470806f,-0.4253349873439855599599f,\
+0.2806279433177717441694f,-0.1888983413465122329633f,0.7064426647296654371289f,\
+-0.0608123808038953800326f,-0.0613171594896803062724f,-0.4505394490178394883984f,\
+-0.0037858539492685930328f,0.2097666454331615359941f,-0.0211842001217234093824f,\
+0.0527063906668108692055f,0.0768025778411403764467f,0.8585738883942192201104f,\
+0.1759375052405339756589f,0.0503612958523844411740f,-0.2721751218561426211018f,\
+-0.0864544627613991201187f,-0.0103374763464706836968f,0.1595894682913722162354f,\
+0.1366255514725323583214f,-0.1808181983112125135182f,0.6659753695010871554771f,\
+-0.3552522431189574225741f,-0.6660760695837163458677f,0.0122680731984931845613f,\
+-0.1501265897279337457881f,-0.1506290509488406037519f,-0.3872440085463784154030f,\
+-0.3642683937636469471144f,0.3554966732726081435345f,0.1798988824024553845327f,\
+-0.5353736140053680925277f,0.3328780019103673160075f,-0.3831916918313129638562f,\
+-0.1334464728224985796690f,-0.2528584112494918212377f,0.0776621078396230318797f,\
+0.6042048881391237635796f,0.0542925615451090859409f,0.0152869439779466861906f,\
+-0.2578916798676885169250f,0.6210074811527457327998f,0.0697480566005716229316f,\
+-0.5360219400392558508628f,-0.0164769465814076573884f,0.2578547191709110730784f,\
+0.2692458480889036165351f,0.2164281534628332004377f,-0.2165469974967820787626f,\
+-0.6114963430660671495076f,-0.3276202230479545729480f,-0.1532470446853400614096f,\
+-0.5711409136688807564042f,0.1041463421049710486033f,-0.3894804137321275505634f,\
+-0.3320104464777595687508f,-0.4043603275945338859643f,-0.7061983397762294778488f,\
+0.563118573862244065076f,-0.104052368330380548556f,0.0164178824827940009201f,\
+-0.0912715036235035442891f,-0.0802371510589425240845f,-0.0399581838468483496740f,\
+-0.1945912294495280026041f,0.5793779114170104493908f,0.0565281114058220068852f,\
+-0.0343252140979214692695f,-0.4239568198880452332133f,-0.4604615564320009846178f,\
+0.4166399479456509569175f,0.0131813866470892881999f,0.3736222424672819841796f,\
+-0.0991373897615358684599f,0.2529810514946274069281f,0.0689311545837876515908f,\
+0.2497484491434210918115f,0.1002341291998606193081f,-0.1945593262740688278445f,\
+0.2527651998409092271025f,-0.3858322501194685338888f,-0.3391363400421857909883f,\
+0.0090761661352664196878f,-0.5771490540989443474018f,-0.4845995748950238657393f,\
+-0.0464806889926007715808f,0.1478644355329177817460f,-0.0455521984464080931243f,\
+0.0072729334007000101536f,0.5914465599501286252604f}
+
+#define CResI {0.6867532750160018073515f,0.9613302788463532477792f,0.1837939587530955376504f,\
+0.6396229422193046021405f,0.2118940797572615719613f,0.2758431416829634774679f,\
+0.0801773911552379342504f,0.8704396947843597853733f,0.6857529536617394949616f,\
+0.2682798733548960590234f,0.265520729527220722410f,1.3002525570030343260441f,\
+1.22341111147360948053f,0.2823894734241773618599f,0.0830507125337052176661f,\
+1.4084050938175196598934f,0.4714708444194484759926f,0.3864899878199242189147f,\
+0.578671353512100639094f,0.4097343720866399863212f,0.2871862109036796839590f,\
+0.4339746194558397052177f,0.2190944030815045462379f,0.1905148747457021396468f,\
+0.6580570072675409054597f,0.4661869040666266617023f,0.8599269442495538484650f,\
+0.0264043433044500661100f,0.0516749566895557260748f,0.4191162112725183019890f,\
+0.6380079192550233146974f,0.0528761984310826271827f,0.1750249364921274419782f,\
+0.262006263440240305673f,0.2551006766112977608429f,0.3726589610422177956117f,\
+0.2688345275772468512265f,0.0399340736448891148180f,0.1540820834002836481336f,\
+0.2363839254618368690419f,0.5686876044589181944389f,0.8679966059615636941871f,\
+0.0514995744434985636140f,0.9745475763214328512873f,0.6398586919691986452108f,\
+0.87003041421366145158f,0.5098556345730298478003f,0.7918453871370533247998f,\
+0.3977293850986994838692f,0.4690074760926845609532f,0.3456862982279912954731f,\
+0.8775057294133996599328f,0.8415504958063240170674f,0.6158257382443957927975f,\
+0.3254403835162152369698f,0.3092837496266652719257f,1.016502867475419513710f,\
+0.1377386626241807465743f,1.0887841690471091737891f,0.4545278067154325807309f,\
+0.3441598726430060706249f,0.5306377190646557329146f,0.4023845929152815026342f,\
+0.4125675613624649740174f,0.2054662834722358610851f,0.6177146421590287150849f,\
+0.6484264545005361535246f,0.8358924918092586198171f,0.5951731030444011860681f,\
+1.4105647290575316077366f,0.2564640348596678998128f,0.7845236225889706815906f,\
+0.1082954403048045077806f,0.2214325174472631663214f,0.5867100045537700925280f,\
+0.5180978688180153390874f,0.3195153417190086386768f,0.7488602710128838824133f,\
+0.1203597942708250490007f,0.5012941523009060151850f,0.7748826592461299789250f,\
+0.4421661217651661757166f,0.9277146921619219277488f,0.5611941617833399176263f,\
+0.1875332458457515116823f,0.3141666438540002825874f,0.4604943819421867812203f,\
+0.0857080651661168146926f,0.3208952842499418478539f,0.4512919342037237102616f,\
+0.7790380828723415529424f,0.2761644904057471983094f,0.5650186739065693464212f,\
+0.4507563807256466659190f,0.2078905437719839599531f,0.5277912987547750400807f,\
+0.3716354279518757630640f,0.5373704615276944096536f,0.9780785319295863811107f,\
+0.0159155946349303842324f,1.0224311029322552535348f,0.5264940700384401761625f,\
+0.7343311398624580155214f,0.3704907408839669402667f,0.5288385630587791874646f,\
+0.3959302386908920556863f,0.7086176744936288907084f,0.7694711035408567934013f,\
+0.7356001732724122277318f,0.0399627592998382727418f,0.5185668150213963434325f,\
+0.1331315821040593705415f,0.8170027538591018156922f,0.4049310194334793111537f,\
+0.1478937773069877170684f,0.7786469990644202532337f,0.9289400296531356016061f,\
+0.1371829990074564797897f,0.1749929113926765866793f,0.2441898291613232296893f,\
+0.0986799128052451290927f,0.2473569799851849937422f,0.9160542553812340837993f,\
+0.6487987635563003951944f,0.1266499083655910351531f,0.4604910075393342516747f,\
+0.9425690210228523380209f,0.4054098304412955267040f,0.3282910877920472980662f,\
+0.0998424092123958162315f,0.2184385926591740634262f,0.656067713825576603881f,\
+0.7653872511944090906155f,0.7951531282252717325321f,0.2947609930653066756534f,\
+0.2061139089866899365422f,0.4764220642520822779353f,1.3759775156473299518f,\
+0.8528204157327108347886f,0.2443691207681686350384f,0.2914758305179087627401f,\
+0.5616697707438699227467f,0.5342831779243247813938f,0.5173303887471423223587f,\
+0.0400423211013342383868f,0.1734081126603988776136f,0.0356373465889542606622f,\
+0.9647518864037544217283f,0.4797428841650468456237f,0.2788760702578375605398f,\
+0.5426811930882043943924f,0.9529428659076060181832f,0.519214160106206801260f,\
+0.1566372908148228326741f,0.1800568943774761565546f,0.8597000721649141752323f,\
+0.5941980612955533036512f,0.4200596294318775236754f,1.3834337451293550191878f,\
+0.7486653540997223466036f,0.3094005426987578855069f,0.2238402297126847184661f,\
+0.2351212641216636478614f,0.1935041961305615509925f,0.3283396534211000528103f,\
+0.6414187863585038007486f,0.5517671615629442527506f,1.1984678562974182547407f,\
+0.7432168383550731283194f,0.2430428408595447509200f,0.1037376614284659104293f,\
+0.6710156827233160203861f,0.6483185566975374625187f,0.2790420045943993176962f,\
+1.4677304745898491766809f,0.2490552602808134563528f,0.4239289487649033905114f,\
+0.5743412264612666184860f,0.6998750389577383934636f,1.0888059617925907041069f,\
+0.5637897941342366880946f,0.9467997907854363015545f,0.1529839243771335122180f,\
+0.3341914410029577231498f,0.7977632654942472534287f,0.6513779279028111268701f,\
+0.8229411301591347260853f,0.2061183797708181497654f,0.5470771267862610809374f,\
+0.5931748546354166373717f,0.6677576209776094895432f,0.6191412908370578227490f,\
+0.0728435968768978286958f,0.1327083570997977524097f,0.3079385977540891605742f,\
+0.6658977419097338312781f,0.1203493812224817605117f,0.4806090008275944458482f,\
+0.5912434516954661045673f,0.7532244855713678965969f}
+
+#define ZR1 {0.4167818673886358737946,0.7754927603527903556824,0.6147445752285420894623,\
+0.2206868808716535568237,0.4781269435770809650421,0.1743857422843575477600,\
+0.2262396733276546001434,0.8763213120400905609131,0.6657514632679522037506,\
+0.9176845839247107505798,0.5456351465545594692230,0.9846978131681680679321,\
+0.6502424892969429492950,0.6890702964738011360168,0.5013572606258094310760,\
+0.7673201188445091247559,0.5771855586208403110504,0.3508661640807986259460,\
+0.6027267514728009700775,0.8505915608257055282593,0.0968277682550251483917,\
+0.1382516110315918922424,0.3514578486792743206024,0.0176461227238178253174,\
+0.7433502362109720706940,0.3358979439362883567810,0.1121416739188134670258,\
+0.3644763696938753128052,0.2574999374337494373322,0.1557759689167141914368,\
+0.7854640143923461437225,0.3291082531213760375977,0.9463309147395193576813,\
+0.0348854837939143180847,0.1279074712656438350677,0.5625727903097867965698,\
+0.6738048647530376911163,0.0716566452756524085999,0.0616879831068217754364,\
+0.1104246191680431365967,0.5760010988451540470123,0.8197732111439108848572,\
+0.8186757243238389492035,0.8735574278980493545532,0.0946858790703117847443,\
+0.1581676574423909187317,0.2620503786019980907440,0.8170662596821784973145,\
+0.4229911291040480136871,0.4559381706640124320984,0.2294407873414456844330,\
+0.8959066923707723617554,0.9569525201804935932159,0.7509375149384140968323,\
+0.2412989730946719646454,0.1661008931696414947510,0.8466569320298731327057,\
+0.1607837742194533348083,0.4182585380040109157562,0.0502405483275651931763,\
+0.2407492888160049915314,0.2450429694727063179016,0.9512274372391402721405,\
+0.2260366678237915039062,0.318048770073801279068,0.5373335508629679679871,\
+0.9679651274345815181732,0.1066662650555372238159,0.7000243966467678546906,\
+0.9661027649417519569397,0.1398940901271998882294,0.3816659115254878997803,\
+0.3378799916245043277740,0.3828248968347907066345,0.8728957301937043666840,\
+0.5871221665292978286743,0.4679985162802040576935,0.9163713874295353889465,\
+0.4258406492881476879120,0.1739088818430900573730,0.7294957810081541538239,\
+0.3723028255626559257507,0.8006032942794263362885,0.0427213814109563827515,\
+0.0376335312612354755402,0.3958328152075409889221,0.7473109806887805461884,\
+0.0146575160324573516846,0.3068419084884226322174,0.6172137176617980003357,\
+0.7285772911272943019867,0.206095593050122261047,0.6171012860722839832306,\
+0.4982942687347531318665,0.1864698487333953380585,0.7766191810369491577148,\
+0.9174334802664816379547,0.0989990709349513053894,0.9559624656103551387787,\
+0.0187387894839048385620,0.8602523361332714557648,0.4824799606576561927795,\
+0.1686216662637889385223,0.2581604234874248504639,0.8603236884810030460358,\
+0.9776892503723502159119,0.4902775860391557216644,0.5333510134369134902954,\
+0.9720846978016197681427,0.0181248458102345466614,0.0364292445592582225800,\
+0.5231507197022438049316,0.6790725612081587314606,0.7754972381517291069031,\
+0.8091341941617429256439,0.6911821123212575912476,0.1892125983722507953644,\
+0.3070683712139725685120,0.9991325433366000652313,0.1158062256872653961182,\
+0.3297157124616205692291,0.4354123836383223533630,0.9969553551636636257172,\
+0.9743754882365465164185,0.6353352260775864124298,0.0793482260778546333313,\
+0.4567674207501113414764,0.1505335271358489990234,0.7237330921925604343414,\
+0.2547941533848643302917,0.2566944076679646968842,0.9333118479698896408081,\
+0.5517054800875484943390,0.4642940917983651161194,0.6993843833915889263153,\
+0.2767733894288539886475,0.6460177362896502017975,0.6939658811315894126892,\
+0.7965537137351930141449,0.5889529529958963394165,0.9025987205095589160919,\
+0.7366213919594883918762,0.9812673362903296947479,0.5188445076346397399902,\
+0.0478445165790617465973,0.0598085178062319755554,0.0917034088633954524994,\
+0.7101853694766759872437,0.3557815183885395526886,0.9375250423327088356018,\
+0.9701523329131305217743,0.9907872565090656280518,0.7148388908244669437408,\
+0.0643543815240263938904,0.5210001519881188869476,0.9661642182618379592896,\
+0.6379804057069122791290,0.3707732008770108222961,0.5714463251642882823944,\
+0.4862074404954910278320,0.3099456527270376682281,0.2583809075877070426941,\
+0.3787058754824101924896,0.9536569248884916305542,0.2653506253845989704132,\
+0.9738010177388787269592,0.1274459133855998516083,0.9431200437247753143311,\
+0.7913976819254457950592,0.3400043984875082969666,0.2612065351568162441254,\
+0.0993869695812463760376,0.6489448812790215015411,0.5638043852522969245911,\
+0.9915560963563621044159,0.7837929800152778625488,0.2056846939958631992340,\
+0.3382737739011645317078,0.8287308602593839168549,0.4373776372522115707397,\
+0.5751820881851017475128,0.9588336879387497901917,0.4775090212933719158173,\
+0.1295908428728580474854,0.8555219904519617557526,0.6717643206939101219177,\
+0.9420691034756600856781,0.2612957675009965896606,0.0613161218352615833282,\
+0.9738875525072216987610,0.1835827338509261608124,0.8908186554908752441406,\
+0.8428192087449133396149,0.0821714429184794425964,0.1742917909286916255951,\
+0.6517955046147108078003,0.5859045688994228839874,0.2920065978541970252991,\
+0.6918199281208217144012,0.7315656207501888275146}
+
+#define ZI1 {0.9866490722633898258209,0.4429044118151068687439,0.6974684721790254116058,\
+0.8788620475679636001587,0.6942774769850075244904,0.2103671850636601448059,\
+0.6422466966323554515839,0.9095488712191581726074,0.1162161403335630893707,\
+0.4426801158115267753601,0.54438647022470831871,0.6791554000228643417358,\
+0.9790061046369373798370,0.2613751674070954322815,0.1820912803523242473602,\
+0.9909572191536426544189,0.7388255582191050052643,0.1441168105229735374451,\
+0.2452696315012872219086,0.408354120329022407532,0.4353716713376343250275,\
+0.7087596403434872627258,0.7900028186850249767303,0.4402949064970016479492,\
+0.0828518071211874485016,0.4173278687521815299988,0.8394970758818089962006,\
+0.0684990715235471725464,0.1918341075070202350616,0.9186666915193200111389,\
+0.4752700994722545146942,0.0852253548800945281982,0.5157074541784822940826,\
+0.2485155304893851280212,0.2623219466768205165863,0.2103371713310480117798,\
+0.6155008045025169849396,0.6057531507685780525208,0.3520403089933097362518,\
+0.4564149156212806701660,0.3368119024671614170074,0.9235646529123187065125,\
+0.1065901606343686580658,0.7106651421636343002319,0.7925953646190464496613,\
+0.9542803401127457618713,0.58853778196498751640,0.0023766197264194488525,\
+0.9455601410008966922760,0.0866364603862166404724,0.759459157940000295639,\
+0.4246732611209154129028,0.3839263510890305042267,0.6142078237608075141907,\
+0.7312827515415847301483,0.1793139278888702392578,0.3842914947308599948883,\
+0.6737622944638133049011,0.9141166522167623043060,0.7132891099900007247925,\
+0.8553560380823910236359,0.5722871581092476844788,0.4043100993148982524872,\
+0.4159644804894924163818,0.2562583745457231998444,0.7214373638853430747986,\
+0.4564993805252015590668,0.8455213252454996109009,0.0832691607065498828888,\
+0.8981556417420506477356,0.3833881053142249584198,0.9534438475966453552246,\
+0.0185950272716581821442,0.0502144945785403251648,0.7270118533633649349213,\
+0.2758033480495214462280,0.3350416650064289569855,0.3654300654307007789612,\
+0.0452371980063617229462,0.5600892789661884307861,0.6502862856723368167877,\
+0.823297879658639431000,0.1572451046667993068695,0.7963371742516756057739,\
+0.6245094579644501209259,0.9478004621341824531555,0.1917487042956054210663,\
+0.1213034540414810180664,0.6951363184489309787750,0.9801368294283747673035,\
+0.2816954418085515499115,0.5644371043890714645386,0.4424371575005352497101,\
+0.1901238569989800453186,0.2492035995237529277802,0.1043982319533824920654,\
+0.6797373802401125431061,0.5450195213779807090759,0.1244831955991685390472,\
+0.0048734936863183975220,0.8619868424721062183380,0.4545180173590779304504,\
+0.8424912574701011180878,0.8984384015202522277832,0.9064385616220533847809,\
+0.8106667501851916313171,0.9610714702866971492767,0.5872165020555257797241,\
+0.0191868026740849018097,0.0414552027359604835510,0.7443282003514468669891,\
+0.0290854312479496002197,0.6213145391084253787994,0.3968256777152419090271,\
+0.4549848935566842556000,0.4781798440963029861450,0.9684002888388931751251,\
+0.1858559148386120796204,0.1994768488220870494843,0.2484412193298339843750,\
+0.5571343251504004001617,0.1838635830208659172058,0.1695283665321767330170,\
+0.0689645390957593917847,0.9127942626364529132843,0.9281826475635170936584,\
+0.6239642719738185405731,0.4998918436467647552490,0.8513300181366503238678,\
+0.1213616123422980308533,0.4545058137737214565277,0.3776026610285043716431,\
+0.8098081466741859912872,0.8605336369946599006653,0.6793009373359382152557,\
+0.7579513117671012878418,0.3389655523933470249176,0.9117085291072726249695,\
+0.7079389332793653011322,0.3263010885566473007202,0.3516225744970142841339,\
+0.7477366114035248756409,0.7216994608752429485321,0.7431053109467029571533,\
+0.2207054481841623783112,0.5686944639310240745544,0.0127859464846551418304,\
+0.893785255029797554016,0.3206281405873596668243,0.0234425412490963935852,\
+0.626293356996029615402,0.5116549581289291381836,0.1057835617102682590485,\
+0.8511046646162867546082,0.1486603482626378536224,0.1426428984850645065,\
+0.3198941503651440143585,0.1612193891778588294983,0.9863557885400950908661,\
+0.9205605499446392059326,0.4299718351103365421295,0.5713132461532950401306,\
+0.9785496569238603115082,0.1216678116470575332642,0.8786373701877892017365,\
+0.9206458600237965583801,0.6875183167867362499237,0.9672853127121925354004,\
+0.2485490464605391025543,0.7788769407197833061218,0.2105341642163693904877,\
+0.6432035919278860092163,0.9326907773502171039581,0.4684051508083939552307,\
+0.8569896514527499675751,0.0046391524374485015869,0.4042695597745478153229,\
+0.8191288476809859275818,0.5345056853257119655609,0.9354873914271593093872,\
+0.6799723100848495960236,0.3743787007406353950500,0.1877744006924331188202,\
+0.8306224048137664794922,0.0703320750035345554352,0.2667721835896372795105,\
+0.1338863088749349117279,0.1699936669319868087769,0.8109536175616085529327,\
+0.4827399412170052528381,0.6378918210975825786591,0.6532695852220058441162,\
+0.6683483780361711978912,0.7344740321859717369080,0.5723471469245851039886,\
+0.8637779299169778823853,0.114128809887915849686,0.6580480458214879035950,\
+0.5045945676974952220917,0.9304931387305259704590}
+
+#define ZR2 {0.4259712868370115756989,0.7602704120799899101257,0.0969742774032056331635,\
+0.4801846649497747421265,0.1877757241018116474152,0.8814185047522187232971,\
+0.0292700375430285930634,0.8533888049423694610596,0.6302552805282175540924,\
+0.5044946586713194847107,0.1639711013995110988617,0.7960704732686281204224,\
+0.7220622044987976551056,0.8315819846466183662415,0.0036919671110808849335,\
+0.9424226135015487670898,0.5196401872672140598297,0.5065894601866602897644,\
+0.4127033217810094356537,0.6533151101320981979370,0.501574948895722627640,\
+0.520403296686708927155,0.0206185649149119853973,0.4165633432567119598389,\
+0.1275541991926729679108,0.9734601816162467002869,0.9600647068582475185394,\
+0.0264936182647943496704,0.2156869736500084400177,0.4144923957064747810364,\
+0.2820876422338187694550,0.0115554705262184143066,0.2319323443807661533356,\
+0.9741948051378130912781,0.8930417983792722225189,0.2787308450788259506226,\
+0.0853875060565769672394,0.0125637287274003028870,0.3567141587845981121063,\
+0.4434901513159275054932,0.5231852368451654911041,0.4986576801165938377380,\
+0.4054326615296304225922,0.8140451926738023757935,0.7187507343478500843048,\
+0.8415299849584698677063,0.5039089727215468883514,0.4986489713191986083984,\
+0.1471678265370428562164,0.3910832731053233146667,0.3095656349323689937592,\
+0.6046923678368330001831,0.3414045576937496662140,0.3275958457961678504944,\
+0.3730975906364619731903,0.9983476959168910980225,0.6231481493450701236725,\
+0.1586699178442358971,0.9230180806480348110199,0.5935091320425271987915,\
+0.4019993362016975879669,0.5423517348244786262512,0.0779389175586402416229,\
+0.6387800201773643493652,0.1367760770954191684723,0.6551735652610659599304,\
+0.3303351341746747493744,0.9712570514529943466187,0.5526766409166157245636,\
+0.8238675678148865699768,0.6455440069548785686493,0.7058613188564777374268,\
+0.2080520675517618656158,0.6395015334710478782654,0.0197484544478356838226,\
+0.3289662469178438186646,0.0045380038209259510040,0.2727865027263760566711,\
+0.8406948107294738292694,0.6650723963975906372070,0.7342959144152700901031,\
+0.2093062577769160270691,0.8948949738405644893646,0.6852791439741849899292,\
+0.2581136678345501422882,0.1234186897054314613342,0.3650629292242228984833,\
+0.6263032369315624237061,0.4081154973246157169342,0.1095790406689047813416,\
+0.6615356481634080410004,0.3887942228466272354126,0.2088313368149101734161,\
+0.9898350210860371589661,0.4314283612184226512909,0.6836967542767524719238,\
+0.5103755318559706211090,0.9162438018247485160828,0.5892742066644132137299,\
+0.8954097684472799301147,0.6274849255569279193878,0.9869608813896775245667,\
+0.7128982539288699626923,0.1304925419390201568604,0.0781663195230066776276,\
+0.0947508281096816062927,0.6482759020291268825531,0.4206676203757524490356,\
+0.0157033097930252552032,0.7266698973253369331360,0.6671256530098617076874,\
+0.5488706231117248535156,0.4477724977768957614899,0.9336705235764384269714,\
+0.0209862603805959224701,0.4670969229191541671753,0.8364190761931240558624,\
+0.1888776877894997596741,0.2355282525531947612762,0.7747952006757259368896,\
+0.1726417900063097476959,0.3532871594652533531189,0.9888498312793672084808,\
+0.2265578750520944595337,0.1193372723646461963654,0.467635613866150379181,\
+0.9175071450881659984589,0.7378584071993827819824,0.3163537555374205112457,\
+0.5891926242038607597351,0.1940289377234876155853,0.8575854804366827011108,\
+0.441404156852513551712,0.3922245288267731666565,0.2196655715815722942352,\
+0.1761240549385547637939,0.1205885396338999271393,0.7508801734074950218201,\
+0.2761224261485040187836,0.6377332974225282669067,0.2822759491391479969025,\
+0.0232485281303524971008,0.4800276714377105236053,0.2259713858366012573242,\
+0.0480956234969198703766,0.255338179878890514374,0.8838844164274632930756,\
+0.9909171890467405319214,0.7547875796444714069366,0.0237286994233727455139,\
+0.0672572324983775615692,0.8869388215243816375732,0.2006625742651522159576,\
+0.1356438836082816123962,0.0619430518709123134613,0.3897590730339288711548,\
+0.7104214397259056568146,0.9051968725398182868958,0.9548764410428702831268,\
+0.3615677133202552795410,0.1120837950147688388824,0.2245571417734026908875,\
+0.0125192492268979549408,0.1329306717962026596069,0.2197761316783726215363,\
+0.1487893695011734962463,0.6704846317879855632782,0.2702460922300815582275,\
+0.916129274759441614151,0.2131141787394881248474,0.2321454486809670925140,\
+0.9974972624331712722778,0.4280352187342941761017,0.2013407545164227485657,\
+0.6199770378880202770233,0.7410524189472198486328,0.8895133384503424167633,\
+0.5842213360592722892761,0.0233843638561666011810,0.7662614267319440841675,\
+0.7854359750635921955109,0.346477583982050418854,0.7867635409347712993622,\
+0.3745993338525295257568,0.3698633969761431217194,0.4212488224729895591736,\
+0.3815477318130433559418,0.630106801167130470276,0.6527381357736885547638,\
+0.4507121564820408821106,0.8059874209575355052948,0.0838774070143699645996,\
+0.0486886971630156040192,0.091624463908374309540,0.2564150630496442317963,\
+0.4653418269008398056030,0.2816926469095051288605,0.5845362627878785133362,\
+0.4137441064231097698212,0.8090988881886005401611}
+
+#define ZI2 {0.6393490717746317386627,0.805427453480660915375,0.1889523915015161037445,\
+0.9860434997826814651489,0.1705104154534637928009,0.5185149358585476875305,\
+0.2712999242357909679413,0.1075414568185806274414,0.9200236895121634006500,\
+0.0489821014925837516785,0.3230310245417058467865,0.7714011203497648239136,\
+0.7943310593254864215851,0.0943802008405327796936,0.1643108497373759746552,\
+0.6183919720351696014404,0.1516798050142824649811,0.8934515854343771934509,\
+0.7921462929807603359222,0.1680600438266992568970,0.7106916573829948902130,\
+0.4711248250678181648254,0.5770412567071616649628,0.4025902226567268371582,\
+0.8710415088571608066559,0.1784316999837756156921,0.481136301066726446152,\
+0.0674654301255941390991,0.0399954994209110736847,0.2460960680618882179260,\
+0.6415826673619449138641,0.1576726771891117095947,0.0585584775544703006744,\
+0.5705446070060133934021,0.1629006764851510524750,0.5582059938460588455200,\
+0.3209808361716568470001,0.4510894315317273139954,0.4620725023560225963593,\
+0.3076162338256835937500,0.6813747235573828220367,0.4970325855538249015808,\
+0.0101193203590810298920,0.4533577542752027511597,0.7411896293051540851593,\
+0.4234424093738198280334,0.8139128307811915874481,0.9676819704473018646240,\
+0.6112973452545702457428,0.9543517818674445152283,0.4819711572490632534027,\
+0.6928277853876352310181,0.7424363014288246631622,0.5521282376721501350403,\
+0.217989120166748762131,0.7842588946223258972168,0.9177652769722044467926,\
+0.1917659593746066093445,0.5858528851531445980072,0.6206979658454656600952,\
+0.0012764860875904560089,0.8988496446982026100159,0.3898889864794909954071,\
+0.6497076936066150665283,0.5358180389739573001862,0.2699402486905455589294,\
+0.514097725506871938705,0.1375687289983034133911,0.7844757777638733386993,\
+0.6941326009109616279602,0.0641209441237151622772,0.2922044843435287475586,\
+0.3090644874610006809235,0.4945348976179957389832,0.6556941731832921504974,\
+0.7279028128832578659058,0.6794784818775951862335,0.7084200689569115638733,\
+0.1933331559412181377411,0.7405845634639263153076,0.4076515645720064640045,\
+0.7247990211471915245056,0.9830047464929521083832,0.3623690102249383926392,\
+0.6998763647861778736115,0.4981657536700367927551,0.5225321832112967967987,\
+0.6641861572861671447754,0.1212330483831465244293,0.5571643514558672904968,\
+0.8134847371838986873627,0.275185918435454368591,0.7658774037845432758331,\
+0.5269278520718216896057,0.5383017356507480144501,0.5876941718161106109619,\
+0.0269383029080927371979,0.3838389879092574119568,0.9464009604416787624359,\
+0.6164656896144151687622,0.5597745371051132678986,0.1614628033712506294250,\
+0.7930214214138686656952,0.9809839427471160888672,0.5323410280980169773102,\
+0.3264011470600962638855,0.1745505048893392086029,0.9795577805489301681519,\
+0.7564144139178097248077,0.5428190389648079872131,0.6040854970924556255341,\
+0.2239649854600429534912,0.7934280098415911197662,0.0443929126486182212830,\
+0.1709794825874269008636,0.8033927027136087417603,0.6286661443300545215607,\
+0.3324307324364781379700,0.1281216177158057689667,0.4464247450232505798340,\
+0.0075678699649870395660,0.4189139856025576591492,0.7507017790339887142181,\
+0.64982577227056026459,0.0278900493867695331573,0.3332115495577454566956,\
+0.8102095867507159709930,0.2428723461925983428955,0.0814798162318766117096,\
+0.1112154340371489524841,0.5074178031645715236664,0.3559808600693941116333,\
+0.7394064110703766345978,0.9856483982875943183899,0.2081001061014831066132,\
+0.2623823434114456176758,0.6742023923434317111969,0.9962934432551264762878,\
+0.8252332373522222042084,0.0615941416472196578979,0.2129642223007977008820,\
+0.7388951787725090980530,0.1914335261099040508270,0.6734384708106517791748,\
+0.6150622279383242130280,0.4714830657467246055603,0.2653777874074876308441,\
+0.1113578472286462783813,0.6682099369354546070099,0.2968665333464741706848,\
+0.5159585955552756786346,0.5037773922085762023926,0.6966427885927259922028,\
+0.6400519711896777153015,0.3279239325784146785736,0.8322640117257833480835,\
+0.5751562197692692279816,0.7393315965309739112854,0.7727512116543948650360,\
+0.8552324511110782623291,0.8427531258203089237213,0.3697941964492201805115,\
+0.5885056755505502223969,0.185948224738240242004,0.5096506965346634387970,\
+0.5180077450349926948547,0.7124331700615584850311,0.9935774207115173339844,\
+0.6513966270722448825836,0.2266238955780863761902,0.2100372924469411373138,\
+0.296033380553126335144,0.3838447039015591144562,0.3276543477550148963928,\
+0.9443909148685634136200,0.3133702538907527923584,0.3127397657372057437897,\
+0.2831690898165106773376,0.8294320828281342983246,0.8504734281450510025024,\
+0.0516620394773781299591,0.8521665157750248908997,0.0109942886047065258026,\
+0.1777968332171440124512,0.9020808511413633823395,0.8023654175922274589539,\
+0.8193211196921765804291,0.3788971211761236190796,0.2892677118070423603058,\
+0.3856688523665070533752,0.8368152822367846965790,0.6335147209465503692627,\
+0.0478187785483896732330,0.7960498845204710960388,0.9247719994746148586273,\
+0.4049517679959535598755,0.1505366903729736804962,0.3286092029884457588196,\
+0.5528467851690948009491,0.0004969090223312377930}
+
+#define ZResR {-0.4532760601370298680912,0.2328568279348733338630,-0.0721739248448070302988,\
+-0.7606257532599224324699,-0.0286009079979238634017,0.0446282927443572285942,\
+-0.1676194364050221097262,0.6500285865688182340705,0.3126717730334664935299,\
+0.4412835685735998492163,-0.0863853232804955989410,0.2599876176861364296400,\
+-0.3081394309018399835232,0.5483498039081077246593,-0.0280685784873250555871,\
+0.1103398428388524532551,0.1878638951594227557429,0.0489837078099595035763,\
+0.0544579030846000788912,0.4870763078789703826033,-0.2608486317663467612959,\
+-0.2619676674188661236187,-0.4486176628283578549095,-0.1699076965638988134799,\
+0.0226500810131932545088,0.2525187524366853675239,-0.2962492545486477002470,\
+0.0050349784816676457222,0.0478668812844439128806,-0.161512306092542023972,\
+-0.0833553662573387199597,-0.0096347091494573405823,0.1892857042353479901653,\
+-0.1078039385912064745954,0.0714942955946598623918,0.0393949194957836229536,\
+-0.1400294459234943666992,-0.2723485697759917556482,-0.1406631695056576036862,\
+-0.0914284063414464026609,0.0718601543879791859748,-0.0502555196723774022516,\
+0.3308392578597269539920,0.3889296718119258922108,-0.5194079193768161850642,\
+-0.2709799400469976582428,-0.3469689150581814485186,0.4051294378302779941592,\
+-0.5157677188576927918007,0.0956281317726613566688,-0.2950104262230037743819,\
+0.2475225041547986504220,0.0416670917625362458026,-0.0931174729511790588710,\
+-0.0693836181169946164538,0.0251979011091364446528,0.1749033102248601090345,\
+-0.1036931245422025305025,-0.1494776851046086263430,-0.4129188753992821814265,\
+0.0956892042125161157440,-0.381500629131777346803,-0.0834984180348100207825,\
+-0.1258676160077962236095,-0.0938063966240257895990,0.1573017568314179215339,\
+0.0850675970242064927174,-0.0127169319676398440144,0.3215644924894006106975,\
+0.1725016235865347580258,0.0657245842114690947966,-0.0091973641655471172207,\
+0.0645495682688117383696,0.2199842886414065112888,-0.4594590945201037501811,\
+-0.0076146572424504455068,-0.2255298228492429168934,-0.0089042461759258062504,\
+0.3492561737977078473172,-0.2991314773617905764524,0.2705755498034173589517,\
+-0.5188001861108486600926,0.5618831798406120903167,-0.2592918419562091347785,\
+-0.4273656804273420206641,-0.4233085641525572428989,0.1726206665681528085177,\
+-0.0713880252688461475197,0.0409534431553852107388,-0.4784636138374023794917,\
+0.2528249080775029078438,-0.0751963670383180432522,-0.2099825350036476079296,\
+0.3930475624040330462350,-0.0536983488983542034401,0.4696177809171224182272,\
+0.4499246289866181136574,-0.1184924563459542473653,0.4455130076495959490224,\
+0.0137745535065977864342,0.0572770873632376664730,0.4028010939579977911507,\
+-0.5479035230736655215367,-0.8476656355498256578684,-0.4152860994745538603112,\
+-0.1719656910372130420583,0.1500796339609139773419,-0.3508489918077146718645,\
+0.0007517730549635760762,-0.0093318934652646470806,-0.4253349873439855599599,\
+0.2806279433177717441694,-0.1888983413465122329633,0.7064426647296654371289,\
+-0.0608123808038953800326,-0.0613171594896803062724,-0.4505394490178394883984,\
+-0.0037858539492685930328,0.2097666454331615359941,-0.0211842001217234093824,\
+0.0527063906668108692055,0.0768025778411403764467,0.8585738883942192201104,\
+0.1759375052405339756589,0.0503612958523844411740,-0.2721751218561426211018,\
+-0.0864544627613991201187,-0.0103374763464706836968,0.1595894682913722162354,\
+0.1366255514725323583214,-0.1808181983112125135182,0.6659753695010871554771,\
+-0.3552522431189574225741,-0.6660760695837163458677,0.0122680731984931845613,\
+-0.1501265897279337457881,-0.1506290509488406037519,-0.3872440085463784154030,\
+-0.3642683937636469471144,0.3554966732726081435345,0.1798988824024553845327,\
+-0.5353736140053680925277,0.3328780019103673160075,-0.3831916918313129638562,\
+-0.1334464728224985796690,-0.2528584112494918212377,0.0776621078396230318797,\
+0.6042048881391237635796,0.0542925615451090859409,0.0152869439779466861906,\
+-0.2578916798676885169250,0.6210074811527457327998,0.0697480566005716229316,\
+-0.5360219400392558508628,-0.0164769465814076573884,0.2578547191709110730784,\
+0.2692458480889036165351,0.2164281534628332004377,-0.2165469974967820787626,\
+-0.6114963430660671495076,-0.3276202230479545729480,-0.1532470446853400614096,\
+-0.5711409136688807564042,0.1041463421049710486033,-0.3894804137321275505634,\
+-0.3320104464777595687508,-0.4043603275945338859643,-0.7061983397762294778488,\
+0.563118573862244065076,-0.104052368330380548556,0.0164178824827940009201,\
+-0.0912715036235035442891,-0.0802371510589425240845,-0.0399581838468483496740,\
+-0.1945912294495280026041,0.5793779114170104493908,0.0565281114058220068852,\
+-0.0343252140979214692695,-0.4239568198880452332133,-0.4604615564320009846178,\
+0.4166399479456509569175,0.0131813866470892881999,0.3736222424672819841796,\
+-0.0991373897615358684599,0.2529810514946274069281,0.0689311545837876515908,\
+0.2497484491434210918115,0.1002341291998606193081,-0.1945593262740688278445,\
+0.2527651998409092271025,-0.3858322501194685338888,-0.3391363400421857909883,\
+0.0090761661352664196878,-0.5771490540989443474018,-0.4845995748950238657393,\
+-0.0464806889926007715808,0.1478644355329177817460,-0.0455521984464080931243,\
+0.0072729334007000101536,0.5914465599501286252604}
+
+#define ZResI {0.6867532750160018073515,0.9613302788463532477792,0.1837939587530955376504,\
+0.6396229422193046021405,0.2118940797572615719613,0.2758431416829634774679,\
+0.0801773911552379342504,0.8704396947843597853733,0.6857529536617394949616,\
+0.2682798733548960590234,0.265520729527220722410,1.3002525570030343260441,\
+1.22341111147360948053,0.2823894734241773618599,0.0830507125337052176661,\
+1.4084050938175196598934,0.4714708444194484759926,0.3864899878199242189147,\
+0.578671353512100639094,0.4097343720866399863212,0.2871862109036796839590,\
+0.4339746194558397052177,0.2190944030815045462379,0.1905148747457021396468,\
+0.6580570072675409054597,0.4661869040666266617023,0.8599269442495538484650,\
+0.0264043433044500661100,0.0516749566895557260748,0.4191162112725183019890,\
+0.6380079192550233146974,0.0528761984310826271827,0.1750249364921274419782,\
+0.262006263440240305673,0.2551006766112977608429,0.3726589610422177956117,\
+0.2688345275772468512265,0.0399340736448891148180,0.1540820834002836481336,\
+0.2363839254618368690419,0.5686876044589181944389,0.8679966059615636941871,\
+0.0514995744434985636140,0.9745475763214328512873,0.6398586919691986452108,\
+0.87003041421366145158,0.5098556345730298478003,0.7918453871370533247998,\
+0.3977293850986994838692,0.4690074760926845609532,0.3456862982279912954731,\
+0.8775057294133996599328,0.8415504958063240170674,0.6158257382443957927975,\
+0.3254403835162152369698,0.3092837496266652719257,1.016502867475419513710,\
+0.1377386626241807465743,1.0887841690471091737891,0.4545278067154325807309,\
+0.3441598726430060706249,0.5306377190646557329146,0.4023845929152815026342,\
+0.4125675613624649740174,0.2054662834722358610851,0.6177146421590287150849,\
+0.6484264545005361535246,0.8358924918092586198171,0.5951731030444011860681,\
+1.4105647290575316077366,0.2564640348596678998128,0.7845236225889706815906,\
+0.1082954403048045077806,0.2214325174472631663214,0.5867100045537700925280,\
+0.5180978688180153390874,0.3195153417190086386768,0.7488602710128838824133,\
+0.1203597942708250490007,0.5012941523009060151850,0.7748826592461299789250,\
+0.4421661217651661757166,0.9277146921619219277488,0.5611941617833399176263,\
+0.1875332458457515116823,0.3141666438540002825874,0.4604943819421867812203,\
+0.0857080651661168146926,0.3208952842499418478539,0.4512919342037237102616,\
+0.7790380828723415529424,0.2761644904057471983094,0.5650186739065693464212,\
+0.4507563807256466659190,0.2078905437719839599531,0.5277912987547750400807,\
+0.3716354279518757630640,0.5373704615276944096536,0.9780785319295863811107,\
+0.0159155946349303842324,1.0224311029322552535348,0.5264940700384401761625,\
+0.7343311398624580155214,0.3704907408839669402667,0.5288385630587791874646,\
+0.3959302386908920556863,0.7086176744936288907084,0.7694711035408567934013,\
+0.7356001732724122277318,0.0399627592998382727418,0.5185668150213963434325,\
+0.1331315821040593705415,0.8170027538591018156922,0.4049310194334793111537,\
+0.1478937773069877170684,0.7786469990644202532337,0.9289400296531356016061,\
+0.1371829990074564797897,0.1749929113926765866793,0.2441898291613232296893,\
+0.0986799128052451290927,0.2473569799851849937422,0.9160542553812340837993,\
+0.6487987635563003951944,0.1266499083655910351531,0.4604910075393342516747,\
+0.9425690210228523380209,0.4054098304412955267040,0.3282910877920472980662,\
+0.0998424092123958162315,0.2184385926591740634262,0.656067713825576603881,\
+0.7653872511944090906155,0.7951531282252717325321,0.2947609930653066756534,\
+0.2061139089866899365422,0.4764220642520822779353,1.3759775156473299518,\
+0.8528204157327108347886,0.2443691207681686350384,0.2914758305179087627401,\
+0.5616697707438699227467,0.5342831779243247813938,0.5173303887471423223587,\
+0.0400423211013342383868,0.1734081126603988776136,0.0356373465889542606622,\
+0.9647518864037544217283,0.4797428841650468456237,0.2788760702578375605398,\
+0.5426811930882043943924,0.9529428659076060181832,0.519214160106206801260,\
+0.1566372908148228326741,0.1800568943774761565546,0.8597000721649141752323,\
+0.5941980612955533036512,0.4200596294318775236754,1.3834337451293550191878,\
+0.7486653540997223466036,0.3094005426987578855069,0.2238402297126847184661,\
+0.2351212641216636478614,0.1935041961305615509925,0.3283396534211000528103,\
+0.6414187863585038007486,0.5517671615629442527506,1.1984678562974182547407,\
+0.7432168383550731283194,0.2430428408595447509200,0.1037376614284659104293,\
+0.6710156827233160203861,0.6483185566975374625187,0.2790420045943993176962,\
+1.4677304745898491766809,0.2490552602808134563528,0.4239289487649033905114,\
+0.5743412264612666184860,0.6998750389577383934636,1.0888059617925907041069,\
+0.5637897941342366880946,0.9467997907854363015545,0.1529839243771335122180,\
+0.3341914410029577231498,0.7977632654942472534287,0.6513779279028111268701,\
+0.8229411301591347260853,0.2061183797708181497654,0.5470771267862610809374,\
+0.5931748546354166373717,0.6677576209776094895432,0.6191412908370578227490,\
+0.0728435968768978286958,0.1327083570997977524097,0.3079385977540891605742,\
+0.6658977419097338312781,0.1203493812224817605117,0.4806090008275944458482,\
+0.5912434516954661045673,0.7532244855713678965969}
+
+
+
+static void smulsTest(void){
+ float P1[]=FP1;
+ float P2[]=FP2;
+ float Res[]=FRes;
+ int i=0;
+ float out;
+
+ for (i=0;i<200;i++){
+ out = smuls(P1[i],P2[i]);
+ assert( ( fabs(out-Res[i]) / fabs(out) ) <1e-6);
+ }
+}
+
+
+static void dmulsTest(void){
+ double P1[]=DP1;
+ double P2[]=DP2;
+ double Res[]=DRes;
+ int i=0;
+ double out;
+
+ for (i=0;i<200;i++){
+ out = dmuls(P1[i],P2[i]);
+ assert( ( fabs(out-Res[i]) / fabs(out) ) <3e-16);
+ }
+}
+
+
+static void cmulsTest(void){
+ float P1_R[] = CR1;
+ float P1_I[] = CI1;
+ float P2_R[] = CR2;
+ float P2_I[] = CI2;
+ float Res_R[] = CResR;
+ float Res_I[] = CResI;
+ int i=0;
+ floatComplex in1,in2,out;
+
+ for (i=0;i<200;i++){
+ in1=FloatComplex(P1_R[i],P1_I[i]);
+ in2=FloatComplex(P2_R[i],P2_I[i]);
+ out=cmuls(in1,in2);
+ assert( ( fabs(creals(out)-Res_R[i]) / fabs(creals(out)) ) <3e-6);
+ assert( ( fabs(cimags(out)-Res_I[i]) / fabs(cimags(out)) ) <1e-6);
+ }
+}
+
+
+static void zmulsTest(void){
+ double P1_R[] = ZR1;
+ double P1_I[] = ZI1;
+ double P2_R[] = ZR2;
+ double P2_I[] = ZI2;
+ double Res_R[] = ZResR;
+ double Res_I[] = ZResI;
+ int i=0;
+ doubleComplex in1,in2,out;
+
+ for (i=0;i<200;i++){
+ in1=DoubleComplex(P1_R[i],P1_I[i]);
+ in2=DoubleComplex(P2_R[i],P2_I[i]);
+ out=zmuls(in1,in2);
+ assert( ( fabs(zreals(out)-Res_R[i]) / fabs(zreals(out)) ) <3e-15);
+ assert( ( fabs(zimags(out)-Res_I[i]) / fabs(zimags(out)) ) <3e-15);
+ }
+}
+
+
+static void smulaTest(void){
+ float P1[]=FP1;
+ float P2[]=FP2;
+ float Res[]=FRes;
+ int i=0;
+ float out[200];
+
+ smula(P1,P2,200,out);
+ for(i=0;i<200;i++){
+ assert( ( fabs(out[i]-Res[i]) / fabs(out[i]) ) <1e-6);
+ }
+}
+
+
+static void dmulaTest(void){
+ double P1[]=DP1;
+ double P2[]=DP2;
+ double Res[]=DRes;
+ int i=0;
+ double out[200];
+
+ dmula(P1,P2,200,out);
+ for(i=0;i<200;i++){
+ assert( ( fabs(out[i]-Res[i]) / fabs(out[i]) ) <1e-16);
+ }
+}
+
+
+static void cmulaTest(void){
+ float P1_R[] = CR1;
+ float P1_I[] = CI1;
+ float P2_R[] = CR2;
+ float P2_I[] = CI2;
+ float Res_R[] = CResR;
+ float Res_I[] = CResI;
+ int i=0;
+ floatComplex in1[200],in2[200],out[200];
+
+ for (i=0;i<200;i++){
+ in1[i]=FloatComplex(P1_R[i],P1_I[i]);
+ in2[i]=FloatComplex(P2_R[i],P2_I[i]);
+ }
+
+ cmula(in1,in2,200,out);
+ for (i=0;i<200;i++){
+ assert( ( fabs(creals(out[i])-Res_R[i]) / fabs(creals(out[i])) ) <3e-6);
+ assert( ( fabs(cimags(out[i])-Res_I[i]) / fabs(cimags(out[i])) ) <1e-6);
+ }
+}
+
+
+static void zmulaTest(void){
+ double P1_R[] = ZR1;
+ double P1_I[] = ZI1;
+ double P2_R[] = ZR2;
+ double P2_I[] = ZI2;
+ double Res_R[] = ZResR;
+ double Res_I[] = ZResI;
+ int i=0;
+ doubleComplex in1[200],in2[200],out[200];
+
+ for (i=0;i<200;i++){
+ in1[i]=DoubleComplex(P1_R[i],P1_I[i]);
+ in2[i]=DoubleComplex(P2_R[i],P2_I[i]);
+ }
+
+ zmula(in1,in2,200,out);
+ for (i=0;i<200;i++){
+ assert( ( fabs(zreals(out[i])-Res_R[i]) / fabs(zreals(out[i])) ) <3e-15);
+ assert( ( fabs(zimags(out[i])-Res_I[i]) / fabs(zimags(out[i])) ) <3e-15);
+ }
+}
+
+
+
+static int testMult(void) {
+ smulsTest();
+ dmulsTest();
+ cmulsTest();
+ zmulsTest();
+ smulaTest();
+ dmulaTest();
+ cmulaTest();
+ zmulaTest();
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testMult() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj b/2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj
new file mode 100644
index 00000000..d79a4c5c
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{769E26C1-E337-4878-B604-8BE33323F5FF}</ProjectGuid>
+ <RootNamespace>testMultiplication</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMultiplication.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj.filters b/2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj.filters
new file mode 100644
index 00000000..1a9d783a
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/test_Multiplication/testMultiplication.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMultiplication.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/multiplication/u16mula.c b/2.3-1/src/c/operations/multiplication/u16mula.c
new file mode 100644
index 00000000..5be6e64e
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/u16mula.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+void u16mula(uint16* in1, uint16* in2, int size, uint16* out){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=u16muls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/u16muls.c b/2.3-1/src/c/operations/multiplication/u16muls.c
new file mode 100644
index 00000000..10380c0d
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/u16muls.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+#include "types.h"
+
+uint16 u16muls(uint16 in1, uint16 in2){
+ return in1*in2;
+}
diff --git a/2.3-1/src/c/operations/multiplication/u16mulv.c b/2.3-1/src/c/operations/multiplication/u16mulv.c
new file mode 100644
index 00000000..5cd9805c
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/u16mulv.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+uint16 u16mulv(uint16* in1, uint16* in2, int size)
+{
+ uint16 out = 0;
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out += u16muls(in1[i], in2[i]);
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/u8mula.c b/2.3-1/src/c/operations/multiplication/u8mula.c
new file mode 100644
index 00000000..7ff2dd0b
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/u8mula.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+
+void u8mula(uint8* in1, uint8* in2, int size, uint8* out){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=u8muls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/u8muls.c b/2.3-1/src/c/operations/multiplication/u8muls.c
new file mode 100644
index 00000000..7acf5b58
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/u8muls.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "multiplication.h"
+#include "types.h"
+
+uint8 u8muls(uint8 in1, uint8 in2){
+ return in1*in2;
+}
diff --git a/2.3-1/src/c/operations/multiplication/u8mulv.c b/2.3-1/src/c/operations/multiplication/u8mulv.c
new file mode 100644
index 00000000..9ae063e8
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/u8mulv.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "multiplication.h"
+
+uint8 u8mulv(uint8* in1, uint8* in2, int size)
+{
+ uint8 out = 0;
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out += u8muls(in1[i], in2[i]);
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/zmula.c b/2.3-1/src/c/operations/multiplication/zmula.c
new file mode 100644
index 00000000..875e2592
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/zmula.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "multiplication.h"
+
+void zmula(doubleComplex* in1, doubleComplex* in2, int size, doubleComplex* out){
+ int i=0;
+ for (i=0;i<size;i++){
+ out[i]=zmuls(in1[i],in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/multiplication/zmuldzv.c b/2.3-1/src/c/operations/multiplication/zmuldzv.c
new file mode 100644
index 00000000..717b2d45
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/zmuldzv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "multiplication.h"
+
+doubleComplex zmuldzv (double* in1, doubleComplex* in2, int size)
+ {
+ double* ZEROS = (double *) malloc((unsigned int)(size*sizeof(double)));
+ dzerosa(ZEROS,size , 1);
+
+ return zmulv(DoubleComplexMatrix(in1,ZEROS,size), in2 , size );
+ }
diff --git a/2.3-1/src/c/operations/multiplication/zmuls.c b/2.3-1/src/c/operations/multiplication/zmuls.c
new file mode 100644
index 00000000..eacbc135
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/zmuls.c
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#include "doubleComplex.h"
+#include "multiplication.h"
+
+
+/*
+** \function zmuls
+** \brief Multiply 2 Complex numbers.
+*/
+doubleComplex zmuls(doubleComplex z1, doubleComplex z2) {
+#ifndef STDC99
+ return DoubleComplex(z1.real*z2.real - z1.imag*z2.imag,
+ z1.real*z2.imag + z2.real*z1.imag);
+#else
+ return z1 * z2;
+#endif
+}
diff --git a/2.3-1/src/c/operations/multiplication/zmulv.c b/2.3-1/src/c/operations/multiplication/zmulv.c
new file mode 100644
index 00000000..1ac27f53
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/zmulv.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "addition.h"
+#include "multiplication.h"
+
+doubleComplex zmulv(doubleComplex* in1, doubleComplex* in2, int size)
+{
+ int i = 0;
+ doubleComplex out = DoubleComplex(0, 0);
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out = zadds(out, zmuls(in1[i],in2[i]));
+ }
+
+ return out;
+}
diff --git a/2.3-1/src/c/operations/multiplication/zmulzdv.c b/2.3-1/src/c/operations/multiplication/zmulzdv.c
new file mode 100644
index 00000000..59beabe7
--- /dev/null
+++ b/2.3-1/src/c/operations/multiplication/zmulzdv.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "zeros.h"
+#include "multiplication.h"
+
+doubleComplex zmulzdv (doubleComplex* in1, double* in2, int size)
+ {
+ double* ZEROS = (double *) malloc((unsigned int)(size*sizeof(double)));
+ dzerosa(ZEROS,size , 1);
+
+ return zmulv(in1, DoubleComplexMatrix(in2,ZEROS,size), size );
+ }
diff --git a/2.3-1/src/c/operations/operations.vcxproj b/2.3-1/src/c/operations/operations.vcxproj
new file mode 100644
index 00000000..5fdaecf2
--- /dev/null
+++ b/2.3-1/src/c/operations/operations.vcxproj
@@ -0,0 +1,495 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{9B622A66-546A-4B33-B947-0A189D259D37}</ProjectGuid>
+ <RootNamespace>operations</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)matrixOperations_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)matrixOperations.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../auxiliaryFunctions/includes;../matrixOperations/includes;</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;OPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;matrixOperations.lib</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)matrixOperations_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)matrixOperations.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../auxiliaryFunctions/includes;../matrixOperations/includes;</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;OPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;matrixOperations.lib</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)matrixOperations_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)matrixOperations.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../auxiliaryFunctions/includes;../matrixOperations/includes;</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;OPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;matrixOperations.lib</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>lib /DEF:"$(ProjectDir)auxiliaryFunctions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)auxiliaryFunctions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)matrixOperations_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(PlatformShortName) /OUT:"$(ProjectDir)matrixOperations.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../auxiliaryFunctions/includes;../matrixOperations/includes;</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;OPERATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>auxiliaryFunctions.lib;matrixOperations.lib</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="addition\cadda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\cadds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\dadda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\dadds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\sadda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\sadds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\zadda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="addition\zadds.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\cldiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\cldivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\crdiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\crdivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\dldiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\dldivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\drdiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\drdivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\sldiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\sldivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\srdiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\srdivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zldiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zldivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zrdiva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="division\zrdivs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmula.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulcsv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmuls.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulscv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmula.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmuls.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmulv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\smula.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\smuls.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\smulv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmula.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmuldzv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmuls.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmulv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmulzdv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\cdiffa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\cdiffs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\ddiffa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\ddiffs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\sdiffa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\sdiffs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\zdiffa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="subtraction\zdiffs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="addition\Makefile.am" />
+ <None Include="division\Makefile.am" />
+ <None Include="subtraction\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\addition.h" />
+ <ClInclude Include="includes\division.h" />
+ <ClInclude Include="includes\dynlib_operations.h" />
+ <ClInclude Include="includes\multiplication.h" />
+ <ClInclude Include="includes\subtraction.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/operations.vcxproj.filters b/2.3-1/src/c/operations/operations.vcxproj.filters
new file mode 100644
index 00000000..4b34b74b
--- /dev/null
+++ b/2.3-1/src/c/operations/operations.vcxproj.filters
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\addition">
+ <UniqueIdentifier>{5bf6d8f9-a891-4633-ab01-1917a8568b07}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\division">
+ <UniqueIdentifier>{e2c901d3-8372-4f6e-995c-7f2b8575b714}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\multiplication">
+ <UniqueIdentifier>{de7eeee0-7229-49fd-8574-2a884714f7e1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\subtraction">
+ <UniqueIdentifier>{4d5826f7-7eae-49c0-bd15-419c2c8a1cef}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="addition\cadda.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\cadds.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\dadda.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\dadds.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\sadda.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\sadds.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\zadda.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="addition\zadds.c">
+ <Filter>Source Files\addition</Filter>
+ </ClCompile>
+ <ClCompile Include="division\cldiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\cldivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\crdiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\crdivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\dldiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\dldivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\drdiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\drdivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\sldiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\sldivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\srdiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\srdivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zldiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zldivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zrdiva.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="division\zrdivs.c">
+ <Filter>Source Files\division</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmula.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulcsv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmuls.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulscv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\cmulv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmula.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmuls.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\dmulv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\smula.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\smuls.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\smulv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmula.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmuldzv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmuls.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmulv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="multiplication\zmulzdv.c">
+ <Filter>Source Files\multiplication</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\cdiffa.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\cdiffs.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\ddiffa.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\ddiffs.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\sdiffa.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\sdiffs.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\zdiffa.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ <ClCompile Include="subtraction\zdiffs.c">
+ <Filter>Source Files\subtraction</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="addition\Makefile.am">
+ <Filter>Source Files\addition</Filter>
+ </None>
+ <None Include="division\Makefile.am">
+ <Filter>Source Files\division</Filter>
+ </None>
+ <None Include="subtraction\Makefile.am">
+ <Filter>Source Files\subtraction</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\addition.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\division.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_operations.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\multiplication.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\subtraction.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/subtraction/Makefile.am b/2.3-1/src/c/operations/subtraction/Makefile.am
new file mode 100644
index 00000000..724bbe32
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/Makefile.am
@@ -0,0 +1,45 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSubtraction_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSubtraction.la
+
+HEAD = ../includes/subtraction.h
+
+libSubtraction_la_SOURCES = $(HEAD) \
+ sdiffs.c \
+ ddiffs.c \
+ cdiffs.c \
+ zdiffs.c \
+ sdiffa.c \
+ ddiffa.c \
+ cdiffa.c \
+ zdiffa.c
+
+check_PROGRAMS = testSubtraction
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libSubtraction.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+testSubtraction_SOURCES = testSubtraction.c
+testSubtraction_LDADD = $(check_LDADD)
+testSubtraction_CFLAGS = $(check_INCLUDES)
+
+TESTS = testSubtraction \ No newline at end of file
diff --git a/2.3-1/src/c/operations/subtraction/Makefile.in b/2.3-1/src/c/operations/subtraction/Makefile.in
new file mode 100644
index 00000000..de5b5929
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/Makefile.in
@@ -0,0 +1,750 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testSubtraction$(EXEEXT)
+TESTS = testSubtraction$(EXEEXT)
+subdir = src/c/operations/subtraction
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSubtraction_la_LIBADD =
+am__objects_1 =
+am_libSubtraction_la_OBJECTS = $(am__objects_1) \
+ libSubtraction_la-sdiffs.lo libSubtraction_la-ddiffs.lo \
+ libSubtraction_la-cdiffs.lo libSubtraction_la-zdiffs.lo \
+ libSubtraction_la-sdiffa.lo libSubtraction_la-ddiffa.lo \
+ libSubtraction_la-cdiffa.lo libSubtraction_la-zdiffa.lo
+libSubtraction_la_OBJECTS = $(am_libSubtraction_la_OBJECTS)
+libSubtraction_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libSubtraction_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+am_testSubtraction_OBJECTS = \
+ testSubtraction-testSubtraction.$(OBJEXT)
+testSubtraction_OBJECTS = $(am_testSubtraction_OBJECTS)
+testSubtraction_DEPENDENCIES = $(check_LDADD)
+testSubtraction_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testSubtraction_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSubtraction_la_SOURCES) $(testSubtraction_SOURCES)
+DIST_SOURCES = $(libSubtraction_la_SOURCES) $(testSubtraction_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSubtraction_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSubtraction.la
+HEAD = ../includes/subtraction.h
+libSubtraction_la_SOURCES = $(HEAD) \
+ sdiffs.c \
+ ddiffs.c \
+ cdiffs.c \
+ zdiffs.c \
+ sdiffa.c \
+ ddiffa.c \
+ cdiffa.c \
+ zdiffa.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libSubtraction.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes
+
+testSubtraction_SOURCES = testSubtraction.c
+testSubtraction_LDADD = $(check_LDADD)
+testSubtraction_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/operations/subtraction/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/operations/subtraction/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSubtraction.la: $(libSubtraction_la_OBJECTS) $(libSubtraction_la_DEPENDENCIES)
+ $(libSubtraction_la_LINK) -rpath $(pkglibdir) $(libSubtraction_la_OBJECTS) $(libSubtraction_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testSubtraction$(EXEEXT): $(testSubtraction_OBJECTS) $(testSubtraction_DEPENDENCIES)
+ @rm -f testSubtraction$(EXEEXT)
+ $(testSubtraction_LINK) $(testSubtraction_OBJECTS) $(testSubtraction_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-cdiffa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-cdiffs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-ddiffa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-ddiffs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-sdiffa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-sdiffs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-zdiffa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSubtraction_la-zdiffs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSubtraction-testSubtraction.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSubtraction_la-sdiffs.lo: sdiffs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-sdiffs.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-sdiffs.Tpo -c -o libSubtraction_la-sdiffs.lo `test -f 'sdiffs.c' || echo '$(srcdir)/'`sdiffs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-sdiffs.Tpo $(DEPDIR)/libSubtraction_la-sdiffs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdiffs.c' object='libSubtraction_la-sdiffs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-sdiffs.lo `test -f 'sdiffs.c' || echo '$(srcdir)/'`sdiffs.c
+
+libSubtraction_la-ddiffs.lo: ddiffs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-ddiffs.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-ddiffs.Tpo -c -o libSubtraction_la-ddiffs.lo `test -f 'ddiffs.c' || echo '$(srcdir)/'`ddiffs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-ddiffs.Tpo $(DEPDIR)/libSubtraction_la-ddiffs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddiffs.c' object='libSubtraction_la-ddiffs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-ddiffs.lo `test -f 'ddiffs.c' || echo '$(srcdir)/'`ddiffs.c
+
+libSubtraction_la-cdiffs.lo: cdiffs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-cdiffs.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-cdiffs.Tpo -c -o libSubtraction_la-cdiffs.lo `test -f 'cdiffs.c' || echo '$(srcdir)/'`cdiffs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-cdiffs.Tpo $(DEPDIR)/libSubtraction_la-cdiffs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdiffs.c' object='libSubtraction_la-cdiffs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-cdiffs.lo `test -f 'cdiffs.c' || echo '$(srcdir)/'`cdiffs.c
+
+libSubtraction_la-zdiffs.lo: zdiffs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-zdiffs.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-zdiffs.Tpo -c -o libSubtraction_la-zdiffs.lo `test -f 'zdiffs.c' || echo '$(srcdir)/'`zdiffs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-zdiffs.Tpo $(DEPDIR)/libSubtraction_la-zdiffs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdiffs.c' object='libSubtraction_la-zdiffs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-zdiffs.lo `test -f 'zdiffs.c' || echo '$(srcdir)/'`zdiffs.c
+
+libSubtraction_la-sdiffa.lo: sdiffa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-sdiffa.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-sdiffa.Tpo -c -o libSubtraction_la-sdiffa.lo `test -f 'sdiffa.c' || echo '$(srcdir)/'`sdiffa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-sdiffa.Tpo $(DEPDIR)/libSubtraction_la-sdiffa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdiffa.c' object='libSubtraction_la-sdiffa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-sdiffa.lo `test -f 'sdiffa.c' || echo '$(srcdir)/'`sdiffa.c
+
+libSubtraction_la-ddiffa.lo: ddiffa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-ddiffa.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-ddiffa.Tpo -c -o libSubtraction_la-ddiffa.lo `test -f 'ddiffa.c' || echo '$(srcdir)/'`ddiffa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-ddiffa.Tpo $(DEPDIR)/libSubtraction_la-ddiffa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddiffa.c' object='libSubtraction_la-ddiffa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-ddiffa.lo `test -f 'ddiffa.c' || echo '$(srcdir)/'`ddiffa.c
+
+libSubtraction_la-cdiffa.lo: cdiffa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-cdiffa.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-cdiffa.Tpo -c -o libSubtraction_la-cdiffa.lo `test -f 'cdiffa.c' || echo '$(srcdir)/'`cdiffa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-cdiffa.Tpo $(DEPDIR)/libSubtraction_la-cdiffa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdiffa.c' object='libSubtraction_la-cdiffa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-cdiffa.lo `test -f 'cdiffa.c' || echo '$(srcdir)/'`cdiffa.c
+
+libSubtraction_la-zdiffa.lo: zdiffa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -MT libSubtraction_la-zdiffa.lo -MD -MP -MF $(DEPDIR)/libSubtraction_la-zdiffa.Tpo -c -o libSubtraction_la-zdiffa.lo `test -f 'zdiffa.c' || echo '$(srcdir)/'`zdiffa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSubtraction_la-zdiffa.Tpo $(DEPDIR)/libSubtraction_la-zdiffa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdiffa.c' object='libSubtraction_la-zdiffa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSubtraction_la_CFLAGS) $(CFLAGS) -c -o libSubtraction_la-zdiffa.lo `test -f 'zdiffa.c' || echo '$(srcdir)/'`zdiffa.c
+
+testSubtraction-testSubtraction.o: testSubtraction.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSubtraction_CFLAGS) $(CFLAGS) -MT testSubtraction-testSubtraction.o -MD -MP -MF $(DEPDIR)/testSubtraction-testSubtraction.Tpo -c -o testSubtraction-testSubtraction.o `test -f 'testSubtraction.c' || echo '$(srcdir)/'`testSubtraction.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testSubtraction-testSubtraction.Tpo $(DEPDIR)/testSubtraction-testSubtraction.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testSubtraction.c' object='testSubtraction-testSubtraction.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSubtraction_CFLAGS) $(CFLAGS) -c -o testSubtraction-testSubtraction.o `test -f 'testSubtraction.c' || echo '$(srcdir)/'`testSubtraction.c
+
+testSubtraction-testSubtraction.obj: testSubtraction.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSubtraction_CFLAGS) $(CFLAGS) -MT testSubtraction-testSubtraction.obj -MD -MP -MF $(DEPDIR)/testSubtraction-testSubtraction.Tpo -c -o testSubtraction-testSubtraction.obj `if test -f 'testSubtraction.c'; then $(CYGPATH_W) 'testSubtraction.c'; else $(CYGPATH_W) '$(srcdir)/testSubtraction.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testSubtraction-testSubtraction.Tpo $(DEPDIR)/testSubtraction-testSubtraction.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testSubtraction.c' object='testSubtraction-testSubtraction.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testSubtraction_CFLAGS) $(CFLAGS) -c -o testSubtraction-testSubtraction.obj `if test -f 'testSubtraction.c'; then $(CYGPATH_W) 'testSubtraction.c'; else $(CYGPATH_W) '$(srcdir)/testSubtraction.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/operations/subtraction/cdiffa.c b/2.3-1/src/c/operations/subtraction/cdiffa.c
new file mode 100644
index 00000000..fe310430
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/cdiffa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+void cdiffa(floatComplex* in1, int size1, floatComplex* in2, int size2, floatComplex* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = cdiffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/cdiffs.c b/2.3-1/src/c/operations/subtraction/cdiffs.c
new file mode 100644
index 00000000..b5201b4d
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/cdiffs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+floatComplex cdiffs(floatComplex z1, floatComplex z2) {
+ return FloatComplex(creals(z1) - creals(z2),
+ cimags(z1) - cimags(z2));
+}
diff --git a/2.3-1/src/c/operations/subtraction/ddiffa.c b/2.3-1/src/c/operations/subtraction/ddiffa.c
new file mode 100644
index 00000000..3159f36a
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/ddiffa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+void ddiffa(double* in1, int size1, double* in2, int size2, double* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = ddiffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/ddiffs.c b/2.3-1/src/c/operations/subtraction/ddiffs.c
new file mode 100644
index 00000000..829feadf
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/ddiffs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+double ddiffs(double in1, double in2)
+{
+ return (in1 - in2);
+}
diff --git a/2.3-1/src/c/operations/subtraction/i16diffa.c b/2.3-1/src/c/operations/subtraction/i16diffa.c
new file mode 100644
index 00000000..5a3c78c7
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/i16diffa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+void i16diffa(int16* in1, int size1, int16* in2, int size2, int16* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = i16diffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/i16diffs.c b/2.3-1/src/c/operations/subtraction/i16diffs.c
new file mode 100644
index 00000000..c73bab0b
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/i16diffs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+int16 i16diffs(int16 in1, int16 in2)
+{
+ return (in1 - in2);
+}
diff --git a/2.3-1/src/c/operations/subtraction/i8diffa.c b/2.3-1/src/c/operations/subtraction/i8diffa.c
new file mode 100644
index 00000000..8eae7597
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/i8diffa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+void i8diffa(int8* in1, int size1, int8* in2, int size2, int8* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = i8diffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/i8diffs.c b/2.3-1/src/c/operations/subtraction/i8diffs.c
new file mode 100644
index 00000000..88eaf4d1
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/i8diffs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+int8 i8diffs(int8 in1, int8 in2)
+{
+ return (in1 - in2);
+}
diff --git a/2.3-1/src/c/operations/subtraction/sdiffa.c b/2.3-1/src/c/operations/subtraction/sdiffa.c
new file mode 100644
index 00000000..ea5ef1fa
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/sdiffa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+void sdiffa(float* in1, int size1, float* in2, int size2, float* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = sdiffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/sdiffs.c b/2.3-1/src/c/operations/subtraction/sdiffs.c
new file mode 100644
index 00000000..0d5f4c35
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/sdiffs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+float sdiffs(float in1, float in2)
+{
+ return (in1 - in2);
+}
diff --git a/2.3-1/src/c/operations/subtraction/testSubtraction.c b/2.3-1/src/c/operations/subtraction/testSubtraction.c
new file mode 100644
index 00000000..ce29e2a3
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/testSubtraction.c
@@ -0,0 +1,132 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "subtraction.h"
+
+#define SIZE 10000
+
+/* #define LOCAL_DEBUG */
+
+static void zdiffaTest(void) {
+ doubleComplex M1[SIZE];
+ doubleComplex M2[SIZE];
+ doubleComplex M1_but_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = DoubleComplex((double) rand(), (double) rand());
+ M2[i] = DoubleComplex((double) rand(), (double) rand());
+ }
+ zdiffa(M1, SIZE, M2, SIZE, M1_but_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_but_M2 = %e + %e i\n", zreals(M1_but_M2[i]), zimags(M1_but_M2[i]));
+#endif
+ assert(zreals(M1_but_M2[i]) - (zreals(M1[i]) - zreals(M2[i])) == 0);
+ assert(zimags(M1_but_M2[i]) - (zimags(M1[i]) - zimags(M2[i])) == 0);
+ }
+}
+
+static void cdiffaTest(void) {
+ floatComplex M1[SIZE];
+ floatComplex M2[SIZE];
+ floatComplex M1_but_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = FloatComplex((float) rand(), (float) rand());
+ M2[i] = FloatComplex((float) rand(), (float) rand());
+ }
+ cdiffa(M1, SIZE, M2, SIZE, M1_but_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_but_M2 = %e + %e i\n", creals(M1_but_M2[i]), cimags(M1_but_M2[i]));
+#endif
+ assert(fabsf(creals(M1_but_M2[i]) - (creals(M1[i]) - creals(M2[i]))) / creals(M1_but_M2[i]) < 1e-07);
+ assert(fabsf(cimags(M1_but_M2[i]) - (cimags(M1[i]) - cimags(M2[i]))) / cimags(M1_but_M2[i]) < 1e-07);
+ }
+}
+
+static void sdiffaTest(void) {
+ float M1[SIZE];
+ float M2[SIZE];
+ float M1_but_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = (float) rand();
+ M2[i] = (float) rand();
+ }
+ sdiffa(M1, SIZE, M2, SIZE, M1_but_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_but_M2 = %e\n", M1_but_M2[i]);
+ printf("M1[i] - M2[i] = %e\n", (M1[i] - M2[i]));
+ printf("Error = %e\n",(float) fabsf(M1_but_M2[i] - (M1[i] - M2[i])) / M1_but_M2[i]);
+#endif
+ assert(fabsf(M1_but_M2[i] - (M1[i] - M2[i])) / M1_but_M2[i] < 1e-07);
+ }
+}
+
+static void ddiffaTest(void) {
+ double M1[SIZE];
+ double M2[SIZE];
+ double M1_but_M2[SIZE];
+
+ int i = 0;
+
+ srand(1);
+ for (i = 0; i < SIZE; ++i) {
+ M1[i] = (double) rand();
+ M2[i] = (double) rand();
+ }
+ ddiffa(M1, SIZE, M2, SIZE, M1_but_M2);
+ for (i = 0; i < SIZE; ++i) {
+#ifdef LOCAL_DEBUG
+ printf("M1_but_M2 = %e\n", M1_but_M2[i]);
+ printf("M1[i] = %e\n", M1[i]);
+ printf("M2[i] = %e\n", M2[i]);
+ printf("M1[i] - M2[i] = %e\n", (M1[i] - M2[i]));
+ printf("Error = %e\n", fabs(M1_but_M2[i] - (M1[i] - M2[i])));
+#endif
+ assert(fabs(M1_but_M2[i] - (M1[i] - M2[i])) == 0);
+ }
+
+}
+
+static int testSubtraction(void) {
+
+ printf("\n>>>> Subtraction Tests\n");
+ sdiffaTest();
+ ddiffaTest();
+ cdiffaTest();
+ zdiffaTest();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testSubtraction() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj b/2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj
new file mode 100644
index 00000000..72e2dfd7
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F0DA7501-84CB-4641-9DDA-DA084736B7D4}</ProjectGuid>
+ <RootNamespace>testSubtraction</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testSubtraction.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj.filters b/2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj.filters
new file mode 100644
index 00000000..bdff4681
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/test_Subtraction/testSubtraction.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testSubtraction.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/operations/subtraction/u16diffa.c b/2.3-1/src/c/operations/subtraction/u16diffa.c
new file mode 100644
index 00000000..e9a30499
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/u16diffa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+void u16diffa(uint16* in1, int size1, uint16* in2, int size2, uint16* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = u16diffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/u16diffs.c b/2.3-1/src/c/operations/subtraction/u16diffs.c
new file mode 100644
index 00000000..baf4e078
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/u16diffs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+uint16 u16diffs(uint16 in1, uint16 in2)
+{
+ return (in1 - in2);
+}
diff --git a/2.3-1/src/c/operations/subtraction/u8diffa.c b/2.3-1/src/c/operations/subtraction/u8diffa.c
new file mode 100644
index 00000000..c1512e91
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/u8diffa.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+void u8diffa(uint8* in1, int size1, uint8* in2, int size2, uint8* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = u8diffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/u8diffs.c b/2.3-1/src/c/operations/subtraction/u8diffs.c
new file mode 100644
index 00000000..f71192ac
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/u8diffs.c
@@ -0,0 +1,18 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "subtraction.h"
+
+uint8 u8diffs(uint8 in1, uint8 in2)
+{
+ return (in1 - in2);
+}
diff --git a/2.3-1/src/c/operations/subtraction/zdiffa.c b/2.3-1/src/c/operations/subtraction/zdiffa.c
new file mode 100644
index 00000000..cd856d30
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/zdiffa.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+void zdiffa(doubleComplex* in1, int size1, doubleComplex* in2, int size2, doubleComplex* out) {
+ int i = 0;
+ for (i = 0; i < size1 && i < size2; ++i) {
+ out[i] = zdiffs(in1[i], in2[i]);
+ }
+}
diff --git a/2.3-1/src/c/operations/subtraction/zdiffs.c b/2.3-1/src/c/operations/subtraction/zdiffs.c
new file mode 100644
index 00000000..dc162e4a
--- /dev/null
+++ b/2.3-1/src/c/operations/subtraction/zdiffs.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "subtraction.h"
+
+doubleComplex zdiffs(doubleComplex z1, doubleComplex z2) {
+ return DoubleComplex(zreals(z1) - zreals(z2),
+ zimags(z1) - zimags(z2));
+}
diff --git a/2.3-1/src/c/scilab-arduino/cmd_analog_in/u8cmd_analog_ins.c b/2.3-1/src/c/scilab-arduino/cmd_analog_in/u8cmd_analog_ins.c
new file mode 100644
index 00000000..42005d1c
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_analog_in/u8cmd_analog_ins.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_analog_in.h"
+#include "Arduino.h"
+
+uint16 u8cmd_analog_ins(uint8 board_no, uint8 pin)
+{
+ return((uint16)analogRead(pin));
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_analog_in_volt/u8cmd_analog_in_volts.c b/2.3-1/src/c/scilab-arduino/cmd_analog_in_volt/u8cmd_analog_in_volts.c
new file mode 100644
index 00000000..f961719d
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_analog_in_volt/u8cmd_analog_in_volts.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_analog_in_volt.h"
+#include "Arduino.h"
+
+float u8cmd_analog_in_volts(uint8 board_no, uint8 pin)
+{
+ float a; //declaration of variable
+ a = ((5*(float)analogRead(pin))/1023); //recieved 10 bit input from analog pin is convert to voltage(0 - 50
+ return(a);
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_analog_out/u8cmd_analog_outs.c b/2.3-1/src/c/scilab-arduino/cmd_analog_out/u8cmd_analog_outs.c
new file mode 100644
index 00000000..a5b8513e
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_analog_out/u8cmd_analog_outs.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_analog_out.h"
+#include "Arduino.h"
+
+void u8cmd_analog_outs(uint8 board_no, uint8 pin, uint8 value)
+{
+ analogWrite(pin,value);
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_analog_out_volt/u8cmd_analog_out_volts.c b/2.3-1/src/c/scilab-arduino/cmd_analog_out_volt/u8cmd_analog_out_volts.c
new file mode 100644
index 00000000..1d76b601
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_analog_out_volt/u8cmd_analog_out_volts.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_analog_out_volt.h"
+#include "Arduino.h"
+
+void u8cmd_analog_out_volts(uint8 board_no, uint8 pin, float value)
+{
+ int a; //declaring variable
+ a = ((value*255)/5); //converting given voltage to duty cycle value (0 - 255)
+ analogWrite(pin,a); //passing pin no. and duty cycle value
+
+}
diff --git a/2.3-1/src/c/scilab-arduino/cmd_dcmotor_release/u8cmd_dcmotor_releases.c b/2.3-1/src/c/scilab-arduino/cmd_dcmotor_release/u8cmd_dcmotor_releases.c
new file mode 100644
index 00000000..d56d12d7
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_dcmotor_release/u8cmd_dcmotor_releases.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_dcmotor_release.h"
+#include "Arduino.h"
+
+void u8cmd_dcmotor_releases(uint8 board_no, uint8 motor_no)
+{
+ if (dcm_mode[motor_no] == 3) //for IC accepting analog value
+ {
+ analogWrite(dcm_pin_1[motor_no],0); //passing LOW to IC pins to stop the motor
+ analogWrite(dcm_pin_2[motor_no],0);
+ }
+
+ else //for IC accepting digital value
+ {
+ digitalWrite(dcm_pin_1[motor_no],LOW);
+ digitalWrite(dcm_pin_2[motor_no],LOW); //passing LOW to IC pins to stop the motor
+ }
+}
diff --git a/2.3-1/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c b/2.3-1/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c
new file mode 100644
index 00000000..e8fa8b3c
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Revised by: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_dcmotor_run.h"
+#include "Arduino.h"
+
+void u8cmd_dcmotor_runs(uint8 board_no, uint8 motor_no, int16 duty)
+{
+ uint8 direction = 1;
+ if(duty >= 0)
+ {
+ direction = 1;
+ }
+ else
+ {
+ direction = 0;
+ duty = -duty;
+ }
+
+ if(duty > 255) duty = 255;
+
+ if (dcm_mode[motor_no] == 3) //L293
+ {
+ if(direction == 1)
+ {
+ analogWrite(dcm_pin_1[motor_no],duty);
+ analogWrite(dcm_pin_2[motor_no],0);
+ }
+ else
+ {
+ analogWrite(dcm_pin_2[motor_no],duty);
+ analogWrite(dcm_pin_1[motor_no],0);
+ }
+ }
+ else
+ {
+ if(direction == 1)
+ {
+ digitalWrite(dcm_pin_1[motor_no],HIGH);
+ digitalWrite(dcm_pin_2[motor_no],LOW);
+ }
+ else
+ {
+ digitalWrite(dcm_pin_2[motor_no],HIGH);
+ digitalWrite(dcm_pin_1[motor_no],LOW);
+ }
+ }
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c b/2.3-1/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c
new file mode 100644
index 00000000..0d04e748
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Revised by: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_dcmotor_setup.h"
+#include "Arduino.h"
+
+uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+void u8cmd_dcmotor_setups(uint8 board_no, uint8 driver_type, uint8 motor_no,\
+ uint8 pin_1, uint8 pin_2)
+{
+ dcm_pin_1[motor_no] = pin_1;
+ dcm_pin_2[motor_no] = pin_2;
+ dcm_mode[motor_no] = driver_type;
+
+ //Initialise pins
+ pinMode(pin_1,OUTPUT);
+ pinMode(pin_2,OUTPUT);
+
+ //Set output to low.
+ if(driver_type == 3)
+ {
+ analogWrite(pin_1,0);
+ analogWrite(pin_2,0);
+ }
+ else
+ {
+ digitalWrite(pin_1,LOW);
+ digitalWrite(pin_2,LOW);
+ }
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_digital_in/u8cmd_digital_ins.c b/2.3-1/src/c/scilab-arduino/cmd_digital_in/u8cmd_digital_ins.c
new file mode 100644
index 00000000..da5ca78d
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_digital_in/u8cmd_digital_ins.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_digital_in.h"
+#include "Arduino.h"
+
+uint8 u8cmd_digital_ins(uint8 board_no, uint8 pin)
+{
+ return((uint8)digitalRead(pin));
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_digital_out/u8cmd_digital_outs.c b/2.3-1/src/c/scilab-arduino/cmd_digital_out/u8cmd_digital_outs.c
new file mode 100644
index 00000000..64af7b5c
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_digital_out/u8cmd_digital_outs.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_digital_out.h"
+#include "Arduino.h"
+
+
+void u8cmd_digital_outs(uint8 board_no, uint8 pin, uint8 value)
+{
+ digitalWrite(pin,value);
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp b/2.3-1/src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp
new file mode 100644
index 00000000..eb9ec102
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp
@@ -0,0 +1,23 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+//This function establishes I2C communication between arduino and given device
+
+#include "cmd_i2c_dev.h"
+#include "Arduino.h"
+#include "Wire.h"
+
+uint8 u8cmd_i2c_devs(uint8 address)
+{
+ Wire.begin(); //To initiate connection
+ return((uint8)address); //Returns address to create a device object
+}
diff --git a/2.3-1/src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp b/2.3-1/src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp
new file mode 100644
index 00000000..24d36dea
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+//This function reads data from I2C bus.
+#include "cmd_i2c_read.h"
+#include "Arduino.h"
+#include "Wire.h"
+
+float u8cmd_i2c_reads(uint8 address, uint8 bytes)
+{
+
+ float c; //variable declaration to save received data
+
+ // request reading from sensor
+ Wire.requestFrom(address, bytes); // request no. of bytes(given) from slave device with address
+
+ // receive reading from sensor
+ while (Wire.available()) //If data is received
+ c = Wire.read(); //Save received data in variable
+ return(c);
+
+}
diff --git a/2.3-1/src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp b/2.3-1/src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp
new file mode 100644
index 00000000..fd07eb6b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp
@@ -0,0 +1,40 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+//this function reads data from the device register with given address
+#include "cmd_i2c_read_register.h"
+#include "Arduino.h"
+#include "Wire.h"
+
+uint16 u8cmd_i2c_read_registers(uint8 address, uint8 reg_adrs)
+{
+ long int reading;
+
+ Wire.beginTransmission(address); // transmit to device address
+ Wire.write(reg_adrs); // sets register pointer to reg_adrs position
+ Wire.endTransmission(); // stop transmitting
+
+ // request reading from sensor
+ Wire.requestFrom(address, 2); // request 2 bytes from slave device with address
+
+ // receive reading from sensor
+ if (2 <= Wire.available()) // if two bytes were received
+ {
+ reading = Wire.read(); // receive high byte (overwrites previous reading)
+ reading = reading << 8; // shift high byte to be high 8 bits
+ reading |= Wire.read(); // receive low byte as lower 8 bits
+ }
+
+ return(reading);
+
+}
diff --git a/2.3-1/src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp b/2.3-1/src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp
new file mode 100644
index 00000000..b7772255
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp
@@ -0,0 +1,26 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+//This function writes data to the connected device
+#include "cmd_i2c_write.h"
+#include "Arduino.h"
+#include "Wire.h"
+
+void u8cmd_i2c_writes(uint8 address, uint8 data)
+{
+
+ Wire.beginTransmission(address); //Begins transmission to the device connected to given address
+ Wire.write(data); //sends data to slave device
+ Wire.endTransmission(); //Transmission ends
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp b/2.3-1/src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp
new file mode 100644
index 00000000..9e3c11c5
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp
@@ -0,0 +1,30 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+//This function writes to the register of the device
+#include "cmd_i2c_write_register.h"
+#include "Arduino.h"
+#include "Wire.h"
+
+void u8cmd_i2c_write_registers(uint8 address, uint8 reg_adrs, uint8 data)
+{
+
+
+ Wire.beginTransmission(address); //Begins transmission to the device connected to given address
+ Wire.write(reg_adrs); //sets register pointer to reg_adrs position
+ Wire.write(data); //writes given data on reg_adrs position
+ Wire.endTransmission(); //Transmission ends
+
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_servo_attach/u8cmd_servo_attachs.cpp b/2.3-1/src/c/scilab-arduino/cmd_servo_attach/u8cmd_servo_attachs.cpp
new file mode 100644
index 00000000..b4322c7f
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_servo_attach/u8cmd_servo_attachs.cpp
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "cmd_servo_attach.h"
+#include "Arduino.h"
+#include<Servo.h>
+Servo servo1,servo2;
+void u8cmd_servo_attach(uint8 h,uint8 servo_no)
+{
+ // h -> Board no. reserve for future use
+ // servo_no -> pin no.(9 and 10).
+ if(servo_no == 1)
+ {
+ servo1.attach(9);
+ servo1.write(0);
+ }
+ else
+ {
+ servo2.attach(10);
+ servo2.write(0);
+ }
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_servo_detach/u8cmd_servo_detachs.cpp b/2.3-1/src/c/scilab-arduino/cmd_servo_detach/u8cmd_servo_detachs.cpp
new file mode 100644
index 00000000..08ea03f4
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_servo_detach/u8cmd_servo_detachs.cpp
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_servo_detach.h"
+#include "Arduino.h"
+#include<Servo.h>
+Servo servo1,servo2;
+void u8cmd_servo_detach(uint8 h,uint8 servo_no)
+{
+ // h -> Board no. reserve for future use
+ // servo_no -> pin no.(9 and 10).
+ if(servo_no == 1)
+ {
+ servo1.detach();
+ }
+
+ else
+ {
+ servo2.detach();
+ }
+
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/cmd_servo_move/u8cmd_servo_moves.cpp b/2.3-1/src/c/scilab-arduino/cmd_servo_move/u8cmd_servo_moves.cpp
new file mode 100644
index 00000000..c7c6fa7d
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_servo_move/u8cmd_servo_moves.cpp
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "cmd_servo_move.h"
+#include "Arduino.h"
+#include<Servo.h>
+Servo servo1,servo2;
+void u8cmd_servo_move(uint8 h,uint8 servo_no,uint8 val)
+{
+ // h -> Board no. reserve for future use
+ // servo_no -> pin no.(9 and 10).
+ //val -> 0 to 180 angle of rotation
+ if (val>=0 && val<=180)
+ {
+ if (servo_no==1)
+ {
+ servo1.write(val);
+ }
+ else if (servo_no==2)
+ {
+ servo2.write(val);
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/scilab-arduino/default_files/Makefile b/2.3-1/src/c/scilab-arduino/default_files/Makefile
new file mode 100644
index 00000000..5432fcfd
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/default_files/Makefile
@@ -0,0 +1,10 @@
+# Arduino Make file. Refer to https://github.com/sudar/Arduino-Makefile
+
+ARDUINO_DIR = /usr/share/arduino
+ARDMK_DIR = /usr/share/arduino
+AVR_TOOLS_DIR = /usr
+BOARD_TAG = uno
+USER_LIB_PATH = ../
+ARDUINO_LIBS = ../src/c ../includes ../interfaces ../
+ARDUINO_PORT = /dev/ttyACM0
+include /usr/share/arduino/Arduino.mk
diff --git a/2.3-1/src/c/scilab-arduino/default_files/sci2c_arduino.ino b/2.3-1/src/c/scilab-arduino/default_files/sci2c_arduino.ino
new file mode 100644
index 00000000..1d4465b7
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/default_files/sci2c_arduino.ino
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "Arduino.h"
+#include "loop_arduino.h"
+#include "setup_arduino.h"
+
+void setup()
+{
+ //Please write appropriate setup functions here.
+ setup_arduino();
+}
+
+void loop()
+{
+ loop_arduino();
+}
diff --git a/2.3-1/src/c/scilab-arduino/default_files/setup_arduino.h b/2.3-1/src/c/scilab-arduino/default_files/setup_arduino.h
new file mode 100644
index 00000000..acbf8e21
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/default_files/setup_arduino.h
@@ -0,0 +1,65 @@
+/*
+** ************************************************
+** This file has been generated using
+** Scilab2C (Version 2.3)
+**
+** Please visit following links for more informations:
+** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c
+** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/
+** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/
+** ************************************************
+*/
+
+
+#ifndef setup_arduino_h
+#define setup_arduino_h
+/*
+** -------------------
+** ----- Target ------
+** -------------------
+*/
+# define Arduino1 1
+/*
+** -----------------------
+** --- SCI2C Includes. ---
+** -----------------------
+*/
+#include "Arduino.h"
+#include "sci2clib.h"
+/*
+** ---------------------------
+** --- End SCI2C Includes. ---
+** ---------------------------
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** -------------------
+** --- Prototypes. ---
+** -------------------
+*/
+int setup_arduino();
+/*
+** -----------------------
+** --- End Prototypes. ---
+** -----------------------
+*/
+
+
+/*
+** ------------------------
+** --- USER2C Includes. ---
+** ------------------------
+*/
+/*
+** ----------------------------
+** --- End USER2C Includes. ---
+** ----------------------------
+*/
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+#endif
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_analog_in.h b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_in.h
new file mode 100644
index 00000000..0c186569
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_in.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_ANALOG_IN_H__
+#define __CMD_ANALOG_IN_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint16 u8cmd_analog_ins(uint8 board_no, uint8 pin);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_ANALOG_IN_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_analog_in_volt.h b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_in_volt.h
new file mode 100644
index 00000000..ec471426
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_in_volt.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_ANALOG_IN_VOLT_H__
+#define __CMD_ANALOG_IN_VOLT_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+float u8cmd_analog_in_volts(uint8 board_no, uint8 pin);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_ANALOG_IN_VOLT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_analog_out.h b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_out.h
new file mode 100644
index 00000000..54e51f59
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_out.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_ANALOG_OUT_H__
+#define __CMD_ANALOG_OUT_H__
+
+#include "types.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8cmd_analog_outs(uint8 board_no, uint8 pin, uint8 value);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_ANALOG_OUT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_analog_out_volt.h b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_out_volt.h
new file mode 100644
index 00000000..51580fbb
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_analog_out_volt.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_ANALOG_OUT_VOLT_H__
+#define __CMD_ANALOG_OUT_VOLT_H__
+
+#include "types.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8cmd_analog_out_volts(uint8 board_no, uint8 pin, float value);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_ANALOG_OUT_VOLT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_release.h b/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_release.h
new file mode 100644
index 00000000..d185fb5e
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_release.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_DCMOTOR_RELEASE_H__
+#define __CMD_DCMOTOR_RELEASE_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+void u8cmd_dcmotor_releases(uint8 board_no, uint8 motor_no);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_RELEASE_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_run.h b/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_run.h
new file mode 100644
index 00000000..1b5d41c1
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_run.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_DCMOTOR_RUN_H__
+#define __CMD_DCMOTOR_RUN_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+void u8cmd_dcmotor_runs(uint8 board_no, uint8 motor_no, int16 duty);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h b/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h
new file mode 100644
index 00000000..45854ffb
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_DCMOTOR_SETUP_H__
+#define __CMD_DCMOTOR_SETUP_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+void u8cmd_dcmotor_setups(uint8 board_no, uint8 driver_type, uint8 motor_no,\
+ uint8 pin_1, uint8 pin_2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_digital_in.h b/2.3-1/src/c/scilab-arduino/includes/cmd_digital_in.h
new file mode 100644
index 00000000..51226a6f
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_digital_in.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_DIGITAL_IN_H__
+#define __CMD_DIGITAL_IN_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint8 u8cmd_digital_ins(uint8 board_no, uint8 pin);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DIGITAL_IN_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_digital_out.h b/2.3-1/src/c/scilab-arduino/includes/cmd_digital_out.h
new file mode 100644
index 00000000..1e837e53
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_digital_out.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_DIGITAL_OUT_H__
+#define __CMD_DIGITAL_OUT_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8cmd_digital_outs(uint8 board_no, uint8 pin, uint8 value);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DIGITAL_OUT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_dev.h b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_dev.h
new file mode 100644
index 00000000..382c2b3e
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_dev.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_I2C_DEV_H__
+#define __CMD_I2C_DEV_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint8 u8cmd_i2c_devs(uint8 address);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_I2C_DEV_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read.h b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read.h
new file mode 100644
index 00000000..e33ede3c
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_I2C_READ_H__
+#define __CMD_I2C_READ_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+float u8cmd_i2c_reads(uint8 address, uint8 bytes);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_I2C_READ_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read_register.h b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read_register.h
new file mode 100644
index 00000000..50fba935
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read_register.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_I2C_READ_REGISTER_H__
+#define __CMD_I2C_READ_REGISTER_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint16 u8cmd_i2c_read_registers(uint8 address, uint8 reg_adrs);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_I2C_READ_REGISTER_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write.h b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write.h
new file mode 100644
index 00000000..128f1af8
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_I2C_WRITE_H__
+#define __CMD_I2C_WRITE_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8cmd_i2c_writes(uint8 address, uint8 data);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_I2C_WRITE_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write_register.h b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write_register.h
new file mode 100644
index 00000000..7fac4cbb
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write_register.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __CMD_I2C_WRITE_REGISTER_H__
+#define __CMD_I2C_WRITE_REGISTER_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8cmd_i2c_write_registers(uint8 address, uint8 reg_adrs, uint8 data);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_I2C_WRITE_REGISTER_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_servo_attach.h b/2.3-1/src/c/scilab-arduino/includes/cmd_servo_attach.h
new file mode 100644
index 00000000..12c2c013
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_servo_attach.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_SERVO_ATTACH_H__
+#define __CMD_SERVO_ATTACH_H__
+
+#include "types.h"
+//#include <Servo.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern Servo servo1,servo2;
+
+void u8cmd_servo_attach(uint8 h, uint8 servo_no );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_servo_detach.h b/2.3-1/src/c/scilab-arduino/includes/cmd_servo_detach.h
new file mode 100644
index 00000000..daa5fd2b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_servo_detach.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_SERVO_DETACH_H__
+#define __CMD_SERVO_DETACH_H__
+
+#include "types.h"
+//#include<Servo.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern Servo servo1,servo2;
+
+void u8cmd_servo_detach(uint8 h, uint8 servo_no );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/cmd_servo_move.h b/2.3-1/src/c/scilab-arduino/includes/cmd_servo_move.h
new file mode 100644
index 00000000..79c16b46
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_servo_move.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __CMD_SERVO_MOVE_H__
+#define __CMD_SERVO_MOVE_H__
+
+#include "types.h"
+//#include<Servo.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern Servo servo1,servo2;
+
+void u8cmd_servo_move(uint8 h, uint8 servo_no,uint8 val);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/includes/sleep.h b/2.3-1/src/c/scilab-arduino/includes/sleep.h
new file mode 100644
index 00000000..8763f5f4
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/sleep.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __SLEEP_H__
+#define __SLEEP_H__
+
+#include "types.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u16sleeps(uint16 delay_ms);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DIGITAL_OUT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in.h
new file mode 100644
index 00000000..7358509b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_ANALOG_IN_H__
+#define __INT_CMD_ANALOG_IN_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0cmd_analog_inu160(in1,in2) u8cmd_analog_ins((uint8)in1,\
+ (uint8)in2)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_ANALOG_IN_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in_volt.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in_volt.h
new file mode 100644
index 00000000..e8fe65d7
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_in_volt.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_ANALOG_IN_VOLT_H__
+#define __INT_CMD_ANALOG_IN_VOLT_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0cmd_analog_in_volts0(in1,in2) u8cmd_analog_in_volts((uint8)in1,(uint8)in2)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_ANALOG_IN_VOLT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out.h
new file mode 100644
index 00000000..80ed7ab9
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out.h
@@ -0,0 +1,33 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_ANALOG_OUT_H__
+#define __INT_CMD_ANALOG_OUT_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0cmd_analog_out(in1,in2,in3) u8cmd_analog_outs((uint8)in1,\
+ (uint8)in2,(uint8)in3)
+
+#define d0d0u80cmd_analog_out(in1,in2,in3) u8cmd_analog_outs((uint8)in1,\
+ (uint8)in2,(uint8)in3)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_DIGITAL_OUT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out_volt.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out_volt.h
new file mode 100644
index 00000000..283f8fa0
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_analog_out_volt.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CMD_ANALOG_OUT_VOLT_H__
+#define __INT_CMD_ANALOG_OUT_VOLT_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0cmd_analog_out_volt(in1,in2,in3) u8cmd_analog_out_volts((uint8)in1,(uint8)in2,(float)in3)
+
+#define d0d0s0cmd_analog_out_volt(in1,in2,in3) u8cmd_analog_out_volts((uint8)in1,(uint8)in2,(float)in3)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_ANALOG_OUT_VOLT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h
new file mode 100644
index 00000000..d465ff6f
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Revised by: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_DCMOTOR_H__
+#define __INT_CMD_DCMOTOR_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0d0d0cmd_dcmotor_setup(in1,in2,in3,in4,in5) u8cmd_dcmotor_setups((uint8)in1,(uint8)in2,(uint8)in3,(uint8)in4,(uint8)in5)
+
+#define d0d0d0cmd_dcmotor_run(in1,in2,in3) u8cmd_dcmotor_runs((uint8)in1,\
+ (uint8)in2, (int16)in3);
+
+
+#define d0d0u160cmd_dcmotor_run(in1,in2,in3) u8cmd_dcmotor_runs((uint8)in1,\
+ (uint8)in2, (int16)in3);
+
+#define d0d0cmd_dcmotor_release(in1,in2) u8cmd_dcmotor_releases((uint8)in1,(uint8)in2)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_DCMOTOR_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_in.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_in.h
new file mode 100644
index 00000000..4e5e575d
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_in.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_DIGITAL_IN_H__
+#define __INT_CMD_DIGITAL_IN_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0cmd_digital_inu80(in1,in2) u8cmd_digital_ins((uint8)in1,\
+ (uint8)in2)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_DIGITAL_IN_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_out.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_out.h
new file mode 100644
index 00000000..92a92c68
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_digital_out.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_DIGITAL_OUT_H__
+#define __INT_CMD_DIGITAL_OUT_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0cmd_digital_out(in1,in2,in3) u8cmd_digital_outs((uint8)in1,\
+ (uint8)in2,(uint8)in3)
+
+//Required when input from one pin is directed to other output pin.
+#define d0d0u80cmd_digital_out(in1,in2,in3) u8cmd_digital_outs((uint8)in1,\
+ (uint8)in2, (uint8)in3)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_DIGITAL_OUT_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h
new file mode 100644
index 00000000..85f3e3cb
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CMD_I2C_DEV_H__
+#define __INT_CMD_I2C_DEV_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0cmd_i2c_devu80(in1) u8cmd_i2c_devs((uint8)in1)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_I2C_DEV_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h
new file mode 100644
index 00000000..6ffd7ec7
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CMD_I2C_READ_H__
+#define __INT_CMD_I2C_READ_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0cmd_i2c_reads0(in1, in2) u8cmd_i2c_reads((uint8)in1, (uint8)in2)
+
+#define u80d0cmd_i2c_reads0(in1, in2) u8cmd_i2c_reads((uint8)in1, (uint8)in2)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_I2C_READ_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h
new file mode 100644
index 00000000..e848b69b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CMD_I2C_READ_REGISTER_H__
+#define __INT_CMD_I2C_READ_REGISTER_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0cmd_i2c_read_registeru160(in1, in2) u8cmd_i2c_read_registers((uint8)in1, (uint8)in2)
+
+#define u80d0cmd_i2c_read_registeru160(in1, in2) u8cmd_i2c_read_registers((uint8)in1, (uint8)in2)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_I2C_READ_REGISTER_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h
new file mode 100644
index 00000000..3a015933
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CMD_I2C_WRITE_H__
+#define __INT_CMD_I2C_WRITE_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0cmd_i2c_write(in1, in2) u8cmd_i2c_writes((uint8)in1, (uint8)in2)
+
+#define u80d0cmd_i2c_write(in1, in2) u8cmd_i2c_writes((uint8)in1, (uint8)in2)
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_I2C_WRITE_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h
new file mode 100644
index 00000000..78a3382b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INT_CMD_I2C_WRITE_REGISTER_H__
+#define __INT_CMD_I2C_WRITE_REGISTER_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0cmd_i2c_write_register(in1, in2, in3) u8cmd_i2c_write_registers((uint8)in1, (uint8)in2, (uint8)in3)
+
+#define u80d0d0cmd_i2c_write_register(in1, in2, in3) u8cmd_i2c_write_registers((uint8)in1, (uint8)in2, (uint8)in3)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_I2C_WRITE_REGISTER_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_servo.h b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_servo.h
new file mode 100644
index 00000000..a431fe14
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_servo.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_CMD_SERVO_H__
+#define __INT_CMD_SERVO_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define d0d0cmd_servo_attach(in1,in2) u8cmd_servo_attach((uint8)in1,(uint8)in2);
+
+#define d0d0cmd_servo_detach(in1,in2) u8cmd_servo_detach((uint8)in1,(uint8)in2);
+
+#define d0d0d0cmd_servo_move(in1,in2,in3) u8cmd_servo_move((uint8)in1,(uint8)in2,(uint8)in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_DCMOTOR_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/interfaces/int_sleep.h b/2.3-1/src/c/scilab-arduino/interfaces/int_sleep.h
new file mode 100644
index 00000000..f3a697f4
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_sleep.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __INT_SLEEP_H__
+#define __INT_sLEEP_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0sleep(in1) u16sleeps((uint16)in1)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_SLEEP_H__ */
diff --git a/2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c b/2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c
new file mode 100644
index 00000000..30459782
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Revised by: Yash Pratap Singh Tomar
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sleep.h"
+#include "Arduino.h"
+
+void u16sleeps(uint16 delay_ms)
+{
+ delay(delay_ms);
+}
+
diff --git a/2.3-1/src/c/signalProcessing/Makefile.am b/2.3-1/src/c/signalProcessing/Makefile.am
new file mode 100644
index 00000000..8148f2a4
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/Makefile.am
@@ -0,0 +1,22 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+SUBDIRS= fft \
+ ifft \
+ levin \
+ conv \
+ conv2d \
+ hilbert \
+ crossCorr \
+ lpc2cep \
+ lev\
+ fftshift
diff --git a/2.3-1/src/c/signalProcessing/Makefile.in b/2.3-1/src/c/signalProcessing/Makefile.in
new file mode 100644
index 00000000..c9f22e02
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/Makefile.in
@@ -0,0 +1,570 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/signalProcessing
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = fft \
+ ifft \
+ levin \
+ conv \
+ conv2d \
+ hilbert \
+ crossCorr \
+ lpc2cep \
+ lev\
+ fftshift
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/conv/Makefile.am b/2.3-1/src/c/signalProcessing/conv/Makefile.am
new file mode 100644
index 00000000..1e61c4a6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/Makefile.am
@@ -0,0 +1,74 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libConv_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libConv.la
+
+HEAD = ../includes/conv.h
+
+
+
+libConv_la_SOURCES = $(HEAD) \
+ sconva.c \
+ dconva.c \
+ cconva.c \
+ zconva.c
+
+
+###############
+#### Check ####
+###############
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ libConv.la
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/fft \
+ -I $(top_builddir)/src/c/signalProcessing/ifft \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+check_PROGRAMS = testFloatConv testDoubleConv
+
+TESTS = testFloatConv testDoubleConv
+
+
+testDoubleConv_SOURCES = testDoubleConv.c
+testDoubleConv_LDADD = $(check_LDADD)
+testDoubleConv_CFLAGS = $(check_INCLUDES)
+
+testFloatConv_SOURCES = testFloatConv.c
+testFloatConv_LDADD = $(check_LDADD)
+testFloatConv_CFLAGS = $(check_INCLUDES)
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv/Makefile.in b/2.3-1/src/c/signalProcessing/conv/Makefile.in
new file mode 100644
index 00000000..1d56f43f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/Makefile.in
@@ -0,0 +1,754 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatConv$(EXEEXT) testDoubleConv$(EXEEXT)
+TESTS = testFloatConv$(EXEEXT) testDoubleConv$(EXEEXT)
+subdir = src/c/signalProcessing/conv
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libConv_la_LIBADD =
+am__objects_1 =
+am_libConv_la_OBJECTS = $(am__objects_1) libConv_la-sconva.lo \
+ libConv_la-dconva.lo libConv_la-cconva.lo libConv_la-zconva.lo
+libConv_la_OBJECTS = $(am_libConv_la_OBJECTS)
+libConv_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libConv_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleConv_OBJECTS = testDoubleConv-testDoubleConv.$(OBJEXT)
+testDoubleConv_OBJECTS = $(am_testDoubleConv_OBJECTS)
+testDoubleConv_DEPENDENCIES = $(check_LDADD)
+testDoubleConv_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleConv_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatConv_OBJECTS = testFloatConv-testFloatConv.$(OBJEXT)
+testFloatConv_OBJECTS = $(am_testFloatConv_OBJECTS)
+testFloatConv_DEPENDENCIES = $(check_LDADD)
+testFloatConv_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatConv_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libConv_la_SOURCES) $(testDoubleConv_SOURCES) \
+ $(testFloatConv_SOURCES)
+DIST_SOURCES = $(libConv_la_SOURCES) $(testDoubleConv_SOURCES) \
+ $(testFloatConv_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libConv_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libConv.la
+HEAD = ../includes/conv.h
+libConv_la_SOURCES = $(HEAD) \
+ sconva.c \
+ dconva.c \
+ cconva.c \
+ zconva.c
+
+
+###############
+#### Check ####
+###############
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ libConv.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/fft \
+ -I $(top_builddir)/src/c/signalProcessing/ifft \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+testDoubleConv_SOURCES = testDoubleConv.c
+testDoubleConv_LDADD = $(check_LDADD)
+testDoubleConv_CFLAGS = $(check_INCLUDES)
+testFloatConv_SOURCES = testFloatConv.c
+testFloatConv_LDADD = $(check_LDADD)
+testFloatConv_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/conv/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/conv/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libConv.la: $(libConv_la_OBJECTS) $(libConv_la_DEPENDENCIES)
+ $(libConv_la_LINK) -rpath $(pkglibdir) $(libConv_la_OBJECTS) $(libConv_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleConv$(EXEEXT): $(testDoubleConv_OBJECTS) $(testDoubleConv_DEPENDENCIES)
+ @rm -f testDoubleConv$(EXEEXT)
+ $(testDoubleConv_LINK) $(testDoubleConv_OBJECTS) $(testDoubleConv_LDADD) $(LIBS)
+testFloatConv$(EXEEXT): $(testFloatConv_OBJECTS) $(testFloatConv_DEPENDENCIES)
+ @rm -f testFloatConv$(EXEEXT)
+ $(testFloatConv_LINK) $(testFloatConv_OBJECTS) $(testFloatConv_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv_la-cconva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv_la-dconva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv_la-sconva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv_la-zconva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleConv-testDoubleConv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatConv-testFloatConv.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libConv_la-sconva.lo: sconva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -MT libConv_la-sconva.lo -MD -MP -MF $(DEPDIR)/libConv_la-sconva.Tpo -c -o libConv_la-sconva.lo `test -f 'sconva.c' || echo '$(srcdir)/'`sconva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv_la-sconva.Tpo $(DEPDIR)/libConv_la-sconva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sconva.c' object='libConv_la-sconva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -c -o libConv_la-sconva.lo `test -f 'sconva.c' || echo '$(srcdir)/'`sconva.c
+
+libConv_la-dconva.lo: dconva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -MT libConv_la-dconva.lo -MD -MP -MF $(DEPDIR)/libConv_la-dconva.Tpo -c -o libConv_la-dconva.lo `test -f 'dconva.c' || echo '$(srcdir)/'`dconva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv_la-dconva.Tpo $(DEPDIR)/libConv_la-dconva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dconva.c' object='libConv_la-dconva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -c -o libConv_la-dconva.lo `test -f 'dconva.c' || echo '$(srcdir)/'`dconva.c
+
+libConv_la-cconva.lo: cconva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -MT libConv_la-cconva.lo -MD -MP -MF $(DEPDIR)/libConv_la-cconva.Tpo -c -o libConv_la-cconva.lo `test -f 'cconva.c' || echo '$(srcdir)/'`cconva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv_la-cconva.Tpo $(DEPDIR)/libConv_la-cconva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cconva.c' object='libConv_la-cconva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -c -o libConv_la-cconva.lo `test -f 'cconva.c' || echo '$(srcdir)/'`cconva.c
+
+libConv_la-zconva.lo: zconva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -MT libConv_la-zconva.lo -MD -MP -MF $(DEPDIR)/libConv_la-zconva.Tpo -c -o libConv_la-zconva.lo `test -f 'zconva.c' || echo '$(srcdir)/'`zconva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv_la-zconva.Tpo $(DEPDIR)/libConv_la-zconva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zconva.c' object='libConv_la-zconva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv_la_CFLAGS) $(CFLAGS) -c -o libConv_la-zconva.lo `test -f 'zconva.c' || echo '$(srcdir)/'`zconva.c
+
+testDoubleConv-testDoubleConv.o: testDoubleConv.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv_CFLAGS) $(CFLAGS) -MT testDoubleConv-testDoubleConv.o -MD -MP -MF $(DEPDIR)/testDoubleConv-testDoubleConv.Tpo -c -o testDoubleConv-testDoubleConv.o `test -f 'testDoubleConv.c' || echo '$(srcdir)/'`testDoubleConv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleConv-testDoubleConv.Tpo $(DEPDIR)/testDoubleConv-testDoubleConv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleConv.c' object='testDoubleConv-testDoubleConv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv_CFLAGS) $(CFLAGS) -c -o testDoubleConv-testDoubleConv.o `test -f 'testDoubleConv.c' || echo '$(srcdir)/'`testDoubleConv.c
+
+testDoubleConv-testDoubleConv.obj: testDoubleConv.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv_CFLAGS) $(CFLAGS) -MT testDoubleConv-testDoubleConv.obj -MD -MP -MF $(DEPDIR)/testDoubleConv-testDoubleConv.Tpo -c -o testDoubleConv-testDoubleConv.obj `if test -f 'testDoubleConv.c'; then $(CYGPATH_W) 'testDoubleConv.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleConv.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleConv-testDoubleConv.Tpo $(DEPDIR)/testDoubleConv-testDoubleConv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleConv.c' object='testDoubleConv-testDoubleConv.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv_CFLAGS) $(CFLAGS) -c -o testDoubleConv-testDoubleConv.obj `if test -f 'testDoubleConv.c'; then $(CYGPATH_W) 'testDoubleConv.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleConv.c'; fi`
+
+testFloatConv-testFloatConv.o: testFloatConv.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv_CFLAGS) $(CFLAGS) -MT testFloatConv-testFloatConv.o -MD -MP -MF $(DEPDIR)/testFloatConv-testFloatConv.Tpo -c -o testFloatConv-testFloatConv.o `test -f 'testFloatConv.c' || echo '$(srcdir)/'`testFloatConv.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatConv-testFloatConv.Tpo $(DEPDIR)/testFloatConv-testFloatConv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatConv.c' object='testFloatConv-testFloatConv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv_CFLAGS) $(CFLAGS) -c -o testFloatConv-testFloatConv.o `test -f 'testFloatConv.c' || echo '$(srcdir)/'`testFloatConv.c
+
+testFloatConv-testFloatConv.obj: testFloatConv.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv_CFLAGS) $(CFLAGS) -MT testFloatConv-testFloatConv.obj -MD -MP -MF $(DEPDIR)/testFloatConv-testFloatConv.Tpo -c -o testFloatConv-testFloatConv.obj `if test -f 'testFloatConv.c'; then $(CYGPATH_W) 'testFloatConv.c'; else $(CYGPATH_W) '$(srcdir)/testFloatConv.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatConv-testFloatConv.Tpo $(DEPDIR)/testFloatConv-testFloatConv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatConv.c' object='testFloatConv-testFloatConv.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv_CFLAGS) $(CFLAGS) -c -o testFloatConv-testFloatConv.obj `if test -f 'testFloatConv.c'; then $(CYGPATH_W) 'testFloatConv.c'; else $(CYGPATH_W) '$(srcdir)/testFloatConv.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/conv/cconva.c b/2.3-1/src/c/signalProcessing/conv/cconva.c
new file mode 100644
index 00000000..c523bbee
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/cconva.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv.h"
+#include <stdio.h>
+void cconva(floatComplex *in1, int size1, floatComplex *in2,int size2, floatComplex *out){
+ int m1,i;
+ floatComplex *in1b, *in2b, *result;
+
+
+ m1=(int)floor( log(size1+size2-1.0) / log(2.0) + 1 );
+ m1=(int)pow(2.0, m1);
+
+ in1b=(floatComplex *)malloc((unsigned int)(2*m1)*sizeof(float));
+ for(i=0;i<m1;i++){
+ if (i<size1) in1b[i]=in1[i];
+ else in1b[i]=FloatComplex(0,0);
+ }
+
+ in2b=(floatComplex *)malloc((unsigned int)(2*m1)*sizeof(float));
+ for(i=0;i<m1;i++){
+ if (i<size2) in2b[i]=in2[i];
+ else in2b[i]=FloatComplex(0,0);
+ }
+
+
+
+ cfftma(in1b,m1,1,in1b);
+
+ cfftma(in2b,m1,1,in2b);
+ result=(floatComplex *)malloc((unsigned int)(2*m1)*sizeof(float));
+ cmula(in1b,in2b,m1,result);
+ cifftma(result,m1,1,result);
+
+ for (i=0;i<size1+size2-1;i++){
+ out[i]=result[i];
+ }
+
+ free(in1b);
+ free(in2b);
+ free(result);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv/dconva.c b/2.3-1/src/c/signalProcessing/conv/dconva.c
new file mode 100644
index 00000000..975a5b19
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/dconva.c
@@ -0,0 +1,39 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv.h"
+
+void dconva(double *in1, int size1, double *in2,int size2, double *out){
+ int i;
+ doubleComplex *in1Cpx, *in2Cpx, *result;
+
+ in1Cpx=(doubleComplex*)malloc(2*(unsigned int)size1*sizeof(double));
+ in2Cpx=(doubleComplex*)malloc(2*(unsigned int)size2*sizeof(double));
+ for (i=0;i<size1;i++){
+ in1Cpx[i]=DoubleComplex(in1[i],0);
+ }
+ for (i=0;i<size2;i++){
+ in2Cpx[i]=DoubleComplex(in2[i],0);
+ }
+ result=(doubleComplex*)malloc(2*(unsigned int)(size1+size2-1)*sizeof(double));
+
+ zconva(in1Cpx,size1,in2Cpx,size2,result);
+ zreala(result,size1+size2-1,out);
+
+ free(result);
+ free(in2Cpx);
+ free(in1Cpx);
+
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv/sconva.c b/2.3-1/src/c/signalProcessing/conv/sconva.c
new file mode 100644
index 00000000..0c1ee5a4
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/sconva.c
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv.h"
+#include <stdio.h>
+
+void sconva(float *in1, int size1, float *in2,int size2, float *out){
+ int i;
+ floatComplex *in1Cpx, *in2Cpx, *result;
+
+ in1Cpx=(floatComplex *)malloc(2*(unsigned int)size1*sizeof(float));
+ in2Cpx=(floatComplex *)malloc(2*(unsigned int)size2*sizeof(float));
+
+ for (i=0;i<size1;i++){
+ in1Cpx[i]=FloatComplex(in1[i],0);
+ }
+
+ for (i=0;i<size2;i++){
+ in2Cpx[i]=FloatComplex(in2[i],0);
+ }
+
+ result=(floatComplex *)malloc(2*(unsigned int)(size1+size2-1)*sizeof(float));
+
+ cconva(in1Cpx,size1,in2Cpx,size2,result);
+
+ creala(result,size1+size2-1,out);
+
+ free(result);
+ free(in1Cpx);
+ free(in2Cpx);
+}
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv/testDoubleConv.c b/2.3-1/src/c/signalProcessing/conv/testDoubleConv.c
new file mode 100644
index 00000000..f25e05f9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/testDoubleConv.c
@@ -0,0 +1,135 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv.h"
+#include <stdio.h>
+#include <assert.h>
+
+
+
+static void dconvaTest(void){
+ int i;
+ double x1[2]={0.5253563085570931434631,0.5376229803077876567841};
+ double h1[1]={0.2256303490139544010162};
+ double conv1[2]={0.1185363272564196462922,0.1213040606847684693692};
+ double out1[2];
+
+ double x2[8]={0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+0.8607514644972980022430,0.8494101651012897491455};
+ double h2[5]={0.9931209897622466087341,0.6488562873564660549164,0.9923190940171480178833,\
+0.0500419777818024158478,0.7485506581142544746399};
+ double conv2[12]={0.5838280381629499249385,0.8610403862135279640100,1.1184514745692031301161,\
+1.4878174016996970063786,1.3506563468112671166921,1.568122169583095804057,\
+1.3689566747706436444787,2.3202981934690010135114,1.5098489496125344633271,\
+1.099698103860223152850,0.6868222398318966082087,0.6358265380955081536030};
+ double out2[12];
+
+ dconva(x1,2,h1,1,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(out1[i]-conv1[i]) / fabs(out1[i]) ) <3e-16);
+ }
+
+ dconva(h1,1,x1,2,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(out1[i]-conv1[i]) / fabs(out1[i]) ) <3e-16);
+ }
+
+ dconva(x2,8,h2,5,out2);
+ for (i=0;i<12;i++){
+ assert( ( fabs(out2[i]-conv2[i]) / fabs(out2[i]) ) <3e-15);
+ }
+
+ dconva(h2,5,x2,8,out2);
+ for (i=0;i<12;i++){
+ assert( ( fabs(out2[i]-conv2[i]) / fabs(out2[i]) ) <3e-15);
+ }
+}
+
+
+static void zconvaTest(void){
+ int i;
+ double rx1[2]={0.6274093082174658775330,0.7608432597480714321137};
+ double ix1[2]={0.0485566202551126480103,0.6723949727602303028107};
+ double rh1[1]={0.2017172696068882942200};
+ double ih1[1]={0.3911573919467628002167};
+ double rconv1[2]={0.1075660116388346271288,-0.1095370389478208250633};
+ double iconv1[2]={0.2552104975446664592020,0.4332431431659207188289};
+ doubleComplex *x1, *h1, out1[2];
+
+ double rx2[4]={0.9262343775480985641480,0.5667211269028484821320,0.5711638936772942543030,\
+0.8160110483877360820770};
+ double ix2[4]={0.0568927936255931854248,0.5595936686731874942780,0.1249340316280722618103,\
+0.7279222286306321620941};
+ double rh2[7]={0.6783956284634768962860,0.3320095278322696685791,0.0258709923364222049713,\
+0.5174468224868178367615,0.3916873238049447536469,0.2413538414984941482544,\
+0.5064434898085892200470};
+ double ih2[7]={0.4236102001741528511047,0.2893727528862655162811,0.0887932181358337402344,\
+0.6212881752289831638336,0.3454984454438090324402,0.7064867629669606685638,\
+0.5211472492665052413940};
+ double rconv2[10]={0.6042529849650153384033,0.4384669630868825995762,0.3796883200627478305300,\
+0.8076061278620030314812,0.3526828755641281398781,0.3863983221928849465243,\
+0.3314166433494881713884,0.113095069738258141578,-0.0931668091195109737690,\
+0.0339088159370524999670};
+ double iconv2[10]={0.4309581525680090119401,0.9066106897516487128641,0.7602048387189073164194,\
+1.7159441161321140612017,1.5157099506355884432907,1.5938830446486993430710,\
+2.1768689123487110492761,1.5794692240126795290678,1.1131203493567218831828,\
+0.7939133870152889072003};
+ doubleComplex *x2, *h2, out2[10];
+
+ x1=DoubleComplexMatrix(rx1,ix1,2);
+ h1=DoubleComplexMatrix(rh1,ih1,1);
+ x2=DoubleComplexMatrix(rx2,ix2,4);
+ h2=DoubleComplexMatrix(rh2,ih2,7);
+
+ zconva(x1,2,h1,1,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(zreals(out1[i])-rconv1[i]) / fabs(zreals(out1[i])) ) <3e-16);
+ assert( ( fabs(zimags(out1[i])-iconv1[i]) / fabs(zimags(out1[i])) ) <3e-16);
+ }
+
+ zconva(h1,1,x1,2,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(zreals(out1[i])-rconv1[i]) / fabs(zreals(out1[i])) ) <3e-16);
+ assert( ( fabs(zimags(out1[i])-iconv1[i]) / fabs(zimags(out1[i])) ) <3e-16);
+ }
+
+ zconva(x2,4,h2,7,out2);
+ for (i=0;i<7;i++){
+ assert( ( fabs(zreals(out2[i])-rconv2[i]) / fabs(zreals(out2[i])) ) <3e-15);
+ assert( ( fabs(zimags(out2[i])-iconv2[i]) / fabs(zimags(out2[i])) ) <3e-15);
+ }
+
+ zconva(h2,7,x2,4,out2);
+ for (i=0;i<10;i++){
+ assert( ( fabs(zreals(out2[i])-rconv2[i]) / fabs(zreals(out2[i])) ) <3e-14);
+ assert( ( fabs(zimags(out2[i])-iconv2[i]) / fabs(zimags(out2[i])) ) <3e-15);
+ }
+}
+
+
+
+static int convTest(void){
+ printf("\n>>>> Conv Double Tests\n");
+ dconvaTest();
+ zconvaTest();
+ return 0;
+}
+
+int main (void){
+ assert(convTest()==0);
+ return 0;
+}
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv/testFloatConv.c b/2.3-1/src/c/signalProcessing/conv/testFloatConv.c
new file mode 100644
index 00000000..932f3752
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/testFloatConv.c
@@ -0,0 +1,134 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv.h"
+#include <stdio.h>
+#include <assert.h>
+
+static void sconvaTest(void){
+ int i;
+ float x1[2]={0.5253563085570931434631f,0.5376229803077876567841f};
+ float h1[1]={0.2256303490139544010162f};
+ float conv1[2]={0.1185363272564196462922f,0.1213040606847684693692f};
+ float out1[2];
+
+ float x2[8]={0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+0.8607514644972980022430f,0.8494101651012897491455f};
+ float h2[5]={0.9931209897622466087341f,0.6488562873564660549164f,0.9923190940171480178833f,\
+0.0500419777818024158478f,0.7485506581142544746399f};
+ float conv2[12]={0.5838280381629499249385f,0.8610403862135279640100f,1.1184514745692031301161f,\
+1.4878174016996970063786f,1.3506563468112671166921f,1.568122169583095804057f,\
+1.3689566747706436444787f,2.3202981934690010135114f,1.5098489496125344633271f,\
+1.099698103860223152850f,0.6868222398318966082087f,0.6358265380955081536030f};
+ float out2[12];
+
+ sconva(x1,2,h1,1,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(out1[i]-conv1[i]) / fabs(out1[i]) ) <1e-7);
+ }
+
+ sconva(h1,1,x1,2,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(out1[i]-conv1[i]) / fabs(out1[i]) ) <1e-7);
+ }
+
+
+ sconva(x2,8,h2,5,out2);
+ for (i=0;i<12;i++){
+ assert( ( fabs(out2[i]-conv2[i]) / fabs(out2[i]) ) <1e-6);
+ }
+
+ sconva(h2,5,x2,8,out2);
+ for (i=0;i<12;i++){
+ assert( ( fabs(out2[i]-conv2[i]) / fabs(out2[i]) ) <1e-6);
+ }
+}
+
+
+static void cconvaTest(void){
+ int i;
+ float rx1[2]={0.6274093082174658775330f,0.7608432597480714321137f};
+ float ix1[2]={0.0485566202551126480103f,0.6723949727602303028107f};
+ float rh1[1]={0.2017172696068882942200f};
+ float ih1[1]={0.3911573919467628002167f};
+ float rconv1[2]={0.1075660116388346271288f,-0.1095370389478208250633f};
+ float iconv1[2]={0.2552104975446664592020f,0.4332431431659207188289f};
+ floatComplex *x1, *h1, out1[2];
+
+ float rx2[4]={0.9262343775480985641480f,0.5667211269028484821320f,0.5711638936772942543030f,\
+0.8160110483877360820770f};
+ float ix2[4]={0.0568927936255931854248f,0.5595936686731874942780f,0.1249340316280722618103f,\
+0.7279222286306321620941f};
+ float rh2[7]={0.6783956284634768962860f,0.3320095278322696685791f,0.0258709923364222049713f,\
+0.5174468224868178367615f,0.3916873238049447536469f,0.2413538414984941482544f,\
+0.5064434898085892200470f};
+ float ih2[7]={0.4236102001741528511047f,0.2893727528862655162811f,0.0887932181358337402344f,\
+0.6212881752289831638336f,0.3454984454438090324402f,0.7064867629669606685638f,\
+0.5211472492665052413940f};
+ float rconv2[10]={0.6042529849650153384033f,0.4384669630868825995762f,0.3796883200627478305300f,\
+0.8076061278620030314812f,0.3526828755641281398781f,0.3863983221928849465243f,\
+0.3314166433494881713884f,0.113095069738258141578f,-0.0931668091195109737690f,\
+0.0339088159370524999670f};
+ float iconv2[10]={0.4309581525680090119401f,0.9066106897516487128641f,0.7602048387189073164194f,\
+1.7159441161321140612017f,1.5157099506355884432907f,1.5938830446486993430710f,\
+2.1768689123487110492761f,1.5794692240126795290678f,1.1131203493567218831828f,\
+0.7939133870152889072003f};
+ floatComplex *x2, *h2, out2[10];
+
+
+ x1=FloatComplexMatrix(rx1,ix1,2);
+ h1=FloatComplexMatrix(rh1,ih1,1);
+ x2=FloatComplexMatrix(rx2,ix2,4);
+ h2=FloatComplexMatrix(rh2,ih2,7);
+
+
+ cconva(x1,2,h1,1,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(creals(out1[i])-rconv1[i]) / fabs(creals(out1[i])) ) <1e-6);
+ assert( ( fabs(cimags(out1[i])-iconv1[i]) / fabs(cimags(out1[i])) ) <1e-6);
+ }
+
+ cconva(h1,1,x1,2,out1);
+ for (i=0;i<2;i++){
+ assert( ( fabs(creals(out1[i])-rconv1[i]) / fabs(creals(out1[i])) ) <1e-6);
+ assert( ( fabs(cimags(out1[i])-iconv1[i]) / fabs(cimags(out1[i])) ) <1e-6);
+ }
+
+ cconva(x2,4,h2,7,out2);
+ for (i=0;i<10;i++){
+ assert( ( fabs(creals(out2[i])-rconv2[i]) / fabs(creals(out2[i])) ) <3e-6);
+ assert( ( fabs(cimags(out2[i])-iconv2[i]) / fabs(cimags(out2[i])) ) <1e-6);
+ }
+
+ cconva(h2,7,x2,4,out2);
+ for (i=0;i<10;i++){
+ assert( ( fabs(creals(out2[i])-rconv2[i]) / fabs(creals(out2[i])) ) <3e-6);
+ assert( ( fabs(cimags(out2[i])-iconv2[i]) / fabs(cimags(out2[i])) ) <1e-6);
+ }
+
+}
+
+
+
+static int convTest(void){
+ printf("\n>>>> Conv Float Tests\n");
+ sconvaTest();
+ cconvaTest();
+ return 0;
+}
+
+int main (void){
+ assert(convTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj b/2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj
new file mode 100644
index 00000000..49cacdfe
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0ED6E2D7-B50D-4A17-A34B-440A7307E747}</ProjectGuid>
+ <RootNamespace>testDoubleConv</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleConv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj.filters b/2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj.filters
new file mode 100644
index 00000000..0b5ec663
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/test_DoubleConv/testDoubleConv.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleConv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj b/2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj
new file mode 100644
index 00000000..cd908e0b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5A0D9A72-FA85-41F8-A605-A2B31961B01C}</ProjectGuid>
+ <RootNamespace>testFloatConv</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatConv.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj.filters b/2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj.filters
new file mode 100644
index 00000000..4da2dd92
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/test_FloatConv/testFloatConv.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatConv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv/zconva.c b/2.3-1/src/c/signalProcessing/conv/zconva.c
new file mode 100644
index 00000000..7f773fac
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv/zconva.c
@@ -0,0 +1,51 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv.h"
+
+void zconva(doubleComplex *in1, int size1, doubleComplex *in2,int size2, doubleComplex *out){
+ int m1,i;
+ doubleComplex *in1b, *in2b, *result;
+
+
+ m1=(int) floor(log(size1+size2-1.0) / log(2.0) + 1.0);
+ m1=(int) pow(2.0, m1);
+
+ in1b=(doubleComplex *)malloc(2*(unsigned int)m1*sizeof(double));
+ for(i=0;i<m1;i++){
+ if (i<size1) in1b[i]=in1[i];
+ else in1b[i]=DoubleComplex(0,0);
+ }
+
+ in2b=(doubleComplex *)malloc(2*(unsigned int)m1*sizeof(double));
+ for(i=0;i<m1;i++){
+ if (i<size2) in2b[i]=in2[i];
+ else in2b[i]=DoubleComplex(0,0);
+ }
+
+
+ zfftma(in1b,m1,1,in1b);
+ zfftma(in2b,m1,1,in2b);
+
+ result=(doubleComplex *)malloc(2*(unsigned int)m1*sizeof(double));
+ zmula(in1b,in2b,m1,result);
+ zifftma(result,m1,1,result);
+
+ for (i=0;i<size1+size2-1;i++){
+ out[i]=result[i];
+ }
+
+ free(result);
+ free(in2b);
+ free(in1b);
+}
diff --git a/2.3-1/src/c/signalProcessing/conv2d/Makefile.am b/2.3-1/src/c/signalProcessing/conv2d/Makefile.am
new file mode 100644
index 00000000..ac53db68
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/Makefile.am
@@ -0,0 +1,64 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libConv2d_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libConv2d.la
+
+HEAD = ../includes/conv2d.h
+
+libConv2d_la_SOURCES = $(HEAD) \
+ sconv2da.c \
+ dconv2da.c \
+ cconv2da.c \
+ zconv2da.c
+
+
+###############
+#### Check ####
+###############
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ libConv2d.la
+
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+check_PROGRAMS = testFloatConv2d testDoubleConv2d
+
+TESTS = testFloatConv2d testDoubleConv2d
+
+testDoubleConv2d_SOURCES = testDoubleConv2d.c
+testDoubleConv2d_LDADD = $(check_LDADD)
+testDoubleConv2d_CFLAGS = $(check_INCLUDES)
+
+testFloatConv2d_SOURCES = testFloatConv2d.c
+testFloatConv2d_LDADD = $(check_LDADD)
+testFloatConv2d_CFLAGS = $(check_INCLUDES)
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv2d/Makefile.in b/2.3-1/src/c/signalProcessing/conv2d/Makefile.in
new file mode 100644
index 00000000..d1a0ba8b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/Makefile.in
@@ -0,0 +1,749 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatConv2d$(EXEEXT) testDoubleConv2d$(EXEEXT)
+TESTS = testFloatConv2d$(EXEEXT) testDoubleConv2d$(EXEEXT)
+subdir = src/c/signalProcessing/conv2d
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libConv2d_la_LIBADD =
+am__objects_1 =
+am_libConv2d_la_OBJECTS = $(am__objects_1) libConv2d_la-sconv2da.lo \
+ libConv2d_la-dconv2da.lo libConv2d_la-cconv2da.lo \
+ libConv2d_la-zconv2da.lo
+libConv2d_la_OBJECTS = $(am_libConv2d_la_OBJECTS)
+libConv2d_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libConv2d_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleConv2d_OBJECTS = \
+ testDoubleConv2d-testDoubleConv2d.$(OBJEXT)
+testDoubleConv2d_OBJECTS = $(am_testDoubleConv2d_OBJECTS)
+testDoubleConv2d_DEPENDENCIES = $(check_LDADD)
+testDoubleConv2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleConv2d_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatConv2d_OBJECTS = \
+ testFloatConv2d-testFloatConv2d.$(OBJEXT)
+testFloatConv2d_OBJECTS = $(am_testFloatConv2d_OBJECTS)
+testFloatConv2d_DEPENDENCIES = $(check_LDADD)
+testFloatConv2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatConv2d_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libConv2d_la_SOURCES) $(testDoubleConv2d_SOURCES) \
+ $(testFloatConv2d_SOURCES)
+DIST_SOURCES = $(libConv2d_la_SOURCES) $(testDoubleConv2d_SOURCES) \
+ $(testFloatConv2d_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libConv2d_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libConv2d.la
+HEAD = ../includes/conv2d.h
+libConv2d_la_SOURCES = $(HEAD) \
+ sconv2da.c \
+ dconv2da.c \
+ cconv2da.c \
+ zconv2da.c
+
+
+###############
+#### Check ####
+###############
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ libConv2d.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+testDoubleConv2d_SOURCES = testDoubleConv2d.c
+testDoubleConv2d_LDADD = $(check_LDADD)
+testDoubleConv2d_CFLAGS = $(check_INCLUDES)
+testFloatConv2d_SOURCES = testFloatConv2d.c
+testFloatConv2d_LDADD = $(check_LDADD)
+testFloatConv2d_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/conv2d/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/conv2d/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libConv2d.la: $(libConv2d_la_OBJECTS) $(libConv2d_la_DEPENDENCIES)
+ $(libConv2d_la_LINK) -rpath $(pkglibdir) $(libConv2d_la_OBJECTS) $(libConv2d_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleConv2d$(EXEEXT): $(testDoubleConv2d_OBJECTS) $(testDoubleConv2d_DEPENDENCIES)
+ @rm -f testDoubleConv2d$(EXEEXT)
+ $(testDoubleConv2d_LINK) $(testDoubleConv2d_OBJECTS) $(testDoubleConv2d_LDADD) $(LIBS)
+testFloatConv2d$(EXEEXT): $(testFloatConv2d_OBJECTS) $(testFloatConv2d_DEPENDENCIES)
+ @rm -f testFloatConv2d$(EXEEXT)
+ $(testFloatConv2d_LINK) $(testFloatConv2d_OBJECTS) $(testFloatConv2d_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv2d_la-cconv2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv2d_la-dconv2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv2d_la-sconv2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libConv2d_la-zconv2da.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatConv2d-testFloatConv2d.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libConv2d_la-sconv2da.lo: sconv2da.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -MT libConv2d_la-sconv2da.lo -MD -MP -MF $(DEPDIR)/libConv2d_la-sconv2da.Tpo -c -o libConv2d_la-sconv2da.lo `test -f 'sconv2da.c' || echo '$(srcdir)/'`sconv2da.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv2d_la-sconv2da.Tpo $(DEPDIR)/libConv2d_la-sconv2da.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sconv2da.c' object='libConv2d_la-sconv2da.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -c -o libConv2d_la-sconv2da.lo `test -f 'sconv2da.c' || echo '$(srcdir)/'`sconv2da.c
+
+libConv2d_la-dconv2da.lo: dconv2da.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -MT libConv2d_la-dconv2da.lo -MD -MP -MF $(DEPDIR)/libConv2d_la-dconv2da.Tpo -c -o libConv2d_la-dconv2da.lo `test -f 'dconv2da.c' || echo '$(srcdir)/'`dconv2da.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv2d_la-dconv2da.Tpo $(DEPDIR)/libConv2d_la-dconv2da.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dconv2da.c' object='libConv2d_la-dconv2da.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -c -o libConv2d_la-dconv2da.lo `test -f 'dconv2da.c' || echo '$(srcdir)/'`dconv2da.c
+
+libConv2d_la-cconv2da.lo: cconv2da.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -MT libConv2d_la-cconv2da.lo -MD -MP -MF $(DEPDIR)/libConv2d_la-cconv2da.Tpo -c -o libConv2d_la-cconv2da.lo `test -f 'cconv2da.c' || echo '$(srcdir)/'`cconv2da.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv2d_la-cconv2da.Tpo $(DEPDIR)/libConv2d_la-cconv2da.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cconv2da.c' object='libConv2d_la-cconv2da.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -c -o libConv2d_la-cconv2da.lo `test -f 'cconv2da.c' || echo '$(srcdir)/'`cconv2da.c
+
+libConv2d_la-zconv2da.lo: zconv2da.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -MT libConv2d_la-zconv2da.lo -MD -MP -MF $(DEPDIR)/libConv2d_la-zconv2da.Tpo -c -o libConv2d_la-zconv2da.lo `test -f 'zconv2da.c' || echo '$(srcdir)/'`zconv2da.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libConv2d_la-zconv2da.Tpo $(DEPDIR)/libConv2d_la-zconv2da.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zconv2da.c' object='libConv2d_la-zconv2da.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libConv2d_la_CFLAGS) $(CFLAGS) -c -o libConv2d_la-zconv2da.lo `test -f 'zconv2da.c' || echo '$(srcdir)/'`zconv2da.c
+
+testDoubleConv2d-testDoubleConv2d.o: testDoubleConv2d.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv2d_CFLAGS) $(CFLAGS) -MT testDoubleConv2d-testDoubleConv2d.o -MD -MP -MF $(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Tpo -c -o testDoubleConv2d-testDoubleConv2d.o `test -f 'testDoubleConv2d.c' || echo '$(srcdir)/'`testDoubleConv2d.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Tpo $(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleConv2d.c' object='testDoubleConv2d-testDoubleConv2d.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv2d_CFLAGS) $(CFLAGS) -c -o testDoubleConv2d-testDoubleConv2d.o `test -f 'testDoubleConv2d.c' || echo '$(srcdir)/'`testDoubleConv2d.c
+
+testDoubleConv2d-testDoubleConv2d.obj: testDoubleConv2d.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv2d_CFLAGS) $(CFLAGS) -MT testDoubleConv2d-testDoubleConv2d.obj -MD -MP -MF $(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Tpo -c -o testDoubleConv2d-testDoubleConv2d.obj `if test -f 'testDoubleConv2d.c'; then $(CYGPATH_W) 'testDoubleConv2d.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleConv2d.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Tpo $(DEPDIR)/testDoubleConv2d-testDoubleConv2d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleConv2d.c' object='testDoubleConv2d-testDoubleConv2d.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleConv2d_CFLAGS) $(CFLAGS) -c -o testDoubleConv2d-testDoubleConv2d.obj `if test -f 'testDoubleConv2d.c'; then $(CYGPATH_W) 'testDoubleConv2d.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleConv2d.c'; fi`
+
+testFloatConv2d-testFloatConv2d.o: testFloatConv2d.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv2d_CFLAGS) $(CFLAGS) -MT testFloatConv2d-testFloatConv2d.o -MD -MP -MF $(DEPDIR)/testFloatConv2d-testFloatConv2d.Tpo -c -o testFloatConv2d-testFloatConv2d.o `test -f 'testFloatConv2d.c' || echo '$(srcdir)/'`testFloatConv2d.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatConv2d-testFloatConv2d.Tpo $(DEPDIR)/testFloatConv2d-testFloatConv2d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatConv2d.c' object='testFloatConv2d-testFloatConv2d.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv2d_CFLAGS) $(CFLAGS) -c -o testFloatConv2d-testFloatConv2d.o `test -f 'testFloatConv2d.c' || echo '$(srcdir)/'`testFloatConv2d.c
+
+testFloatConv2d-testFloatConv2d.obj: testFloatConv2d.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv2d_CFLAGS) $(CFLAGS) -MT testFloatConv2d-testFloatConv2d.obj -MD -MP -MF $(DEPDIR)/testFloatConv2d-testFloatConv2d.Tpo -c -o testFloatConv2d-testFloatConv2d.obj `if test -f 'testFloatConv2d.c'; then $(CYGPATH_W) 'testFloatConv2d.c'; else $(CYGPATH_W) '$(srcdir)/testFloatConv2d.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatConv2d-testFloatConv2d.Tpo $(DEPDIR)/testFloatConv2d-testFloatConv2d.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatConv2d.c' object='testFloatConv2d-testFloatConv2d.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatConv2d_CFLAGS) $(CFLAGS) -c -o testFloatConv2d-testFloatConv2d.obj `if test -f 'testFloatConv2d.c'; then $(CYGPATH_W) 'testFloatConv2d.c'; else $(CYGPATH_W) '$(srcdir)/testFloatConv2d.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/conv2d/cconv2da.c b/2.3-1/src/c/signalProcessing/conv2d/cconv2da.c
new file mode 100644
index 00000000..fe855ee2
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/cconv2da.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv2d.h"
+#include "multiplication.h"
+#include "addition.h"
+
+void cconv2da(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex *out){
+ int i,j,k1,k2;
+ floatComplex accu;
+
+ for (i=0;i<lines1+lines2-1;i++){
+ for (j=0;j<columns1+columns2-1;j++){
+ accu=FloatComplex(0,0);
+ for (k1=0;k1<i+1;k1++){
+ if ( (k1<lines1)&&((i-k1)<lines2) ){
+ for(k2=0;k2<j+1;k2++){
+ if ( (k2<columns1)&&((j-k2)<columns2) )
+ accu = cadds(accu , cmuls(in1[k1+k2*lines1],in2[i-k1+(j-k2)*lines2]));
+ }
+ }
+ }
+ out[i+j*(lines1+lines2-1)]=accu;
+ }
+ }
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv2d/dconv2da.c b/2.3-1/src/c/signalProcessing/conv2d/dconv2da.c
new file mode 100644
index 00000000..6606e81d
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/dconv2da.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv2d.h"
+
+
+void dconv2da(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double *out){
+ int i,j,k1,k2;
+ double accu;
+
+ for (i=0;i<lines1+lines2-1;i++){
+ for (j=0;j<columns1+columns2-1;j++){
+ accu=0;
+ for (k1=0;k1<i+1;k1++){
+ if ((k1<lines1)&&((i-k1)<lines2)){
+ for(k2=0;k2<j+1;k2++){
+ if ((k2<columns1)&&((j-k2)<columns2))
+ accu += in1[k1+k2*lines1]*in2[i-k1+(j-k2)*lines2];
+ }
+ }
+ }
+ out[i+j*(lines1+lines2-1)]=accu;
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/conv2d/sconv2da.c b/2.3-1/src/c/signalProcessing/conv2d/sconv2da.c
new file mode 100644
index 00000000..5403eef5
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/sconv2da.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv2d.h"
+
+
+void sconv2da(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float *out){
+ int i,j,k1,k2;
+ float accu;
+
+ for (i=0;i<lines1+lines2-1;i++){
+ for (j=0;j<columns1+columns2-1;j++){
+ accu=0;
+ for (k1=0;k1<i+1;k1++){
+ if ((k1<lines1)&&((i-k1)<lines2)){
+ for(k2=0;k2<j+1;k2++){
+ if ((k2<columns1)&&((j-k2)<columns2))
+ accu += in1[k1+k2*lines1]*in2[i-k1+(j-k2)*lines2];
+ }
+ }
+ }
+ out[i+j*(lines1+lines2-1)]=accu;
+ }
+ }
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/conv2d/testDoubleConv2d.c b/2.3-1/src/c/signalProcessing/conv2d/testDoubleConv2d.c
new file mode 100644
index 00000000..e6feae28
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/testDoubleConv2d.c
@@ -0,0 +1,119 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include "conv2d.h"
+#include <stdio.h>
+#define SOURCE1 {0.27602507699857836698,0.67970267685367480315,0.65509800397384065906,\
+0.16261173519463056891,0.11899768155837664452,0.49836405198214295265,\
+0.95974395851608107488,0.34038572666613320372,0.58526775097977734585}
+
+#define SOURCE2 {0.22381193949113697972,0.75126705930565285119,0.25509511545926910614,0.50595705166514237661,\
+0.69907672265668596712,0.89090325253579849551,0.95929142520544430361,0.54721552996380307121,\
+0.13862444282867913969,0.14929400555905747439,0.25750825412373645751,0.84071725598366253696,\
+0.25428217897153104765,0.81428482606881635864,0.24352496872498929914,0.92926362318722777189}
+
+#define RESULT {0.06177770783124224979,0.35949412227527688390,0.72766963495480452284,0.80519921797623728033,0.51101266335063399993,0.33145145464232411703,\
+0.22935715403715500882,0.86987390060810976244,1.57072190340944928266,1.87374187807601977340,1.18771170991100438741,0.61063060781955358358,\
+0.36674405818143579472,1.16069853832181757447,1.50530552987165244794,2.16413391928651943630,1.60484415693162763006,1.11958509084199531181,\
+0.76366488032771995265,1.53136700662003777396,2.54906722776044070145,2.57034999375695782931,1.76723864513866257830,1.34800960550190063181,\
+0.17439323785911495235,0.35314105985283195110,0.64231507683460742353,1.56780077060808920031,0.66882373773691206065,0.95515628223064197311,\
+0.24404578502623180958,0.86805896659833670093,0.65971570871717122309,1.45132222047376413521,0.45883538439608340109,0.54386803081010803851}
+
+
+#define REAL1 {0.66538110421970486641,0.62839178834110498428, 0.84974523587152361870,0.68573101982474327087 }
+
+#define IMAG1 {-0.87821648130193352699,-0.06837403681129217148,\
+-0.56084860628470778465,-0.66235693730413913727}
+
+#define REAL2 {0.33217189135029911995,0.59350947011262178421,0.50153415976092219353,0.43685875833034515381,\
+0.26931248093023896217,0.63257448654621839523,0.40519540151581168175,0.91847078315913677216,\
+0.04373343335464596748,0.48185089323669672012,0.26395560009405016899,0.41481037065386772156,\
+0.28064980218186974525,0.12800584640353918076,0.77831285959109663963,0.21190304495394229889}
+
+#define IMAG2 {-0.11213546665385365486,-0.68568959552794694901,-0.15312166837975382805,-0.69708506017923355103,\
+-0.84155184263363480568,-0.40620247554033994675,-0.40948254754766821861,-0.87841258011758327484,\
+-0.11383596854284405708,-0.19983377400785684586,-0.56186607433483004570,-0.58961773291230201721,\
+-0.68539796629920601845,-0.89062247332185506821,-0.50422128057107329369,-0.34936154074966907501}
+
+#define REALRES {0.12254168490351219356,-0.00620698294409172124,0.52531049188577938480,-0.01682362473694332117,0.22685593683438345924,\
+-0.34049880015190781002,0.44913351267544954215,0.57284073382943700992,0.28907598257968836197,0.35494736024841355704,\
+-0.31400940398865162528,0.10179275637972534652,0.25069879068018435797,0.18008660250348096366,0.26835012662172041953,\
+-0.44187118264088443009,-0.31552872228703227053,0.20183362693927198173,0.11943448752613922137,0.00318181727621991151,\
+-0.14592366179695342998,-0.65225983747193394535,-0.12355655213817345883,0.18386347752483947482,-0.08609354902257074227}
+
+#define IMAGRES {-0.36633165023340091837,-1.07065163823997133719,-1.01380217936246941335,-0.97799610277246618040,-0.46791232441530977715,\
+-1.07805207455505658309,-2.58549659104333517945,-2.20153008389715321158,-2.95066686999604854691,-1.38215608568270642564,\
+-0.98029992300656176862,-2.08606516328413960082,-2.03693007812789206312,-2.93846237331332016396,-1.60958345050271689480,\
+-0.82378154448145179956,-1.70198901954439785200,-2.66911026836615317137,-2.08241271540499273129,-0.91309628593039071642,\
+-0.73981570694656195730,-1.48448309406143419409,-1.56048833083614346684,-1.27699492716519591440,-0.37992349748692871847}
+
+static void dconv2daTest(void){
+ int i;
+ double in1[] = SOURCE1;
+ double in2[] = SOURCE2;
+ double res[] = RESULT;
+ double out[36],outTest[9],outTest2[12*16];
+ double test1[] = {1,2,3};
+ double resTest[] ={1,2,3,2,4,6,3,6,9};
+ double inTest1[] = {1,2,3,4,5,6,7,8,9,10,11,12};
+ double inTest2[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+ dconv2da(in1,3,3,in2,4,4,out);
+ for (i=0;i<36;i++){
+ assert( ( fabs(out[i]-res[i]) / fabs(out[i]) ) <3e-16);
+ }
+
+ dconv2da(test1,1,3,test1,3,1,outTest);
+ for (i=0;i<9;i++){
+ assert( ( fabs(outTest[i]-resTest[i]) / fabs(outTest[i]) ) <3e-16);
+ }
+
+ dconv2da(inTest1,12,1,inTest2,1,16,outTest2);
+ for (i=0;i<12*16;i++){
+ printf("out[%d] : %f\n",i,outTest2[i]);
+ }
+
+}
+
+
+static void zconv2daTest(void){
+ int i;
+ double rin1[] = REAL1;
+ double iin1[] = IMAG1;
+ double rin2[] = REAL2;
+ double iin2[] = IMAG2;
+ double rres[] = REALRES;
+ double ires[] = IMAGRES;
+ doubleComplex *in1, *in2,out[25];
+
+ in1=DoubleComplexMatrix(rin1,iin1,4);
+ in2=DoubleComplexMatrix(rin2,iin2,16);
+ zconv2da(in1,2,2,in2,4,4,out);
+ for (i=0;i<25;i++){
+ assert( ( fabs(zreals(out[i])-rres[i]) / fabs(zreals(out[i])) ) <3e-14);
+ assert( ( fabs(zimags(out[i])-ires[i]) / fabs(zimags(out[i])) ) <3e-14);
+ }
+}
+
+
+static int conv2dTest(void){
+ dconv2daTest();
+ zconv2daTest();
+ return 0;
+}
+
+int main (void){
+ assert(conv2dTest()==0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/conv2d/testFloatConv2d.c b/2.3-1/src/c/signalProcessing/conv2d/testFloatConv2d.c
new file mode 100644
index 00000000..0166804a
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/testFloatConv2d.c
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "conv2d.h"
+
+#define SOURCE1 {0.27602507699857836698f,0.67970267685367480315f,0.65509800397384065906f,\
+0.16261173519463056891f,0.11899768155837664452f,0.49836405198214295265f,\
+0.95974395851608107488f,0.34038572666613320372f,0.58526775097977734585f}
+
+#define SOURCE2 {0.22381193949113697972f,0.75126705930565285119f,0.25509511545926910614f,0.50595705166514237661f,\
+0.69907672265668596712f,0.89090325253579849551f,0.95929142520544430361f,0.54721552996380307121f,\
+0.13862444282867913969f,0.14929400555905747439f,0.25750825412373645751f,0.84071725598366253696f,\
+0.25428217897153104765f,0.81428482606881635864f,0.24352496872498929914f,0.92926362318722777189f}
+
+#define RESULT {0.06177770783124224979f,0.35949412227527688390f,0.72766963495480452284f,0.80519921797623728033f,0.51101266335063399993f,0.33145145464232411703f,\
+0.22935715403715500882f,0.86987390060810976244f,1.57072190340944928266f,1.87374187807601977340f,1.18771170991100438741f,0.61063060781955358358f,\
+0.36674405818143579472f,1.16069853832181757447f,1.50530552987165244794f,2.16413391928651943630f,1.60484415693162763006f,1.11958509084199531181f,\
+0.76366488032771995265f,1.53136700662003777396f,2.54906722776044070145f,2.57034999375695782931f,1.76723864513866257830f,1.34800960550190063181f,\
+0.17439323785911495235f,0.35314105985283195110f,0.64231507683460742353f,1.56780077060808920031f,0.66882373773691206065f,0.95515628223064197311f,\
+0.24404578502623180958f,0.86805896659833670093f,0.65971570871717122309f,1.45132222047376413521f,0.45883538439608340109f,0.54386803081010803851f}
+
+
+#define REAL1 {0.66538110421970486641f,0.62839178834110498428f, 0.84974523587152361870f,0.68573101982474327087f }
+
+#define IMAG1 {-0.87821648130193352699f,-0.06837403681129217148f,\
+-0.56084860628470778465f,-0.66235693730413913727f}
+
+#define REAL2 {0.33217189135029911995f,0.59350947011262178421f,0.50153415976092219353f,0.43685875833034515381f,\
+0.26931248093023896217f,0.63257448654621839523f,0.40519540151581168175f,0.91847078315913677216f,\
+0.04373343335464596748f,0.48185089323669672012f,0.26395560009405016899f,0.41481037065386772156f,\
+0.28064980218186974525f,0.12800584640353918076f,0.77831285959109663963f,0.21190304495394229889f}
+
+#define IMAG2 {-0.11213546665385365486f,-0.68568959552794694901f,-0.15312166837975382805f,-0.69708506017923355103f,\
+-0.84155184263363480568f,-0.40620247554033994675f,-0.40948254754766821861f,-0.87841258011758327484f,\
+-0.11383596854284405708f,-0.19983377400785684586f,-0.56186607433483004570f,-0.58961773291230201721f,\
+-0.68539796629920601845f,-0.89062247332185506821f,-0.50422128057107329369f,-0.34936154074966907501f}
+
+#define REALRES {0.12254168490351219356f,-0.00620698294409172124f,0.52531049188577938480f,-0.01682362473694332117f,0.22685593683438345924f,\
+-0.34049880015190781002f,0.44913351267544954215f,0.57284073382943700992f,0.28907598257968836197f,0.35494736024841355704f,\
+-0.31400940398865162528f,0.10179275637972534652f,0.25069879068018435797f,0.18008660250348096366f,0.26835012662172041953f,\
+-0.44187118264088443009f,-0.31552872228703227053f,0.20183362693927198173f,0.11943448752613922137f,0.00318181727621991151f,\
+-0.14592366179695342998f,-0.65225983747193394535f,-0.12355655213817345883f,0.18386347752483947482f,-0.08609354902257074227f}
+
+#define IMAGRES {-0.36633165023340091837f,-1.07065163823997133719f,-1.01380217936246941335f,-0.97799610277246618040f,-0.46791232441530977715f,\
+-1.07805207455505658309f,-2.58549659104333517945f,-2.20153008389715321158f,-2.95066686999604854691f,-1.38215608568270642564f,\
+-0.98029992300656176862f,-2.08606516328413960082f,-2.03693007812789206312f,-2.93846237331332016396f,-1.60958345050271689480f,\
+-0.82378154448145179956f,-1.70198901954439785200f,-2.66911026836615317137f,-2.08241271540499273129f,-0.91309628593039071642f,\
+-0.73981570694656195730f,-1.48448309406143419409f,-1.56048833083614346684f,-1.27699492716519591440f,-0.37992349748692871847f}
+
+
+static void sconv2daTest(void){
+ int i;
+ float in1[] = SOURCE1;
+ float in2[] = SOURCE2;
+ float res[] = RESULT;
+ float out[36];
+
+ sconv2da(in1,3,3,in2,4,4,out);
+ for (i=0;i<36;i++){
+ assert( ( fabs(out[i]-res[i]) / fabs(out[i]) ) <1e-6);
+ }
+}
+
+
+static void cconv2daTest(void){
+ int i;
+ float rin1[] = REAL1;
+ float iin1[] = IMAG1;
+ float rin2[] = REAL2;
+ float iin2[] = IMAG2;
+ float rres[] = REALRES;
+ float ires[] = IMAGRES;
+ floatComplex *in1, *in2,out[25];
+
+ in1=FloatComplexMatrix(rin1,iin1,4);
+ in2=FloatComplexMatrix(rin2,iin2,16);
+ cconv2da(in1,2,2,in2,4,4,out);
+ for (i=0;i<25;i++){
+ assert( ( fabs(creals(out[i])-rres[i]) / fabs(creals(out[i])) ) <3e-5);
+ assert( ( fabs(cimags(out[i])-ires[i]) / fabs(cimags(out[i])) ) <1e-5);
+ }
+}
+
+
+static int conv2dTest(void){
+ sconv2daTest();
+ cconv2daTest();
+ return 0;
+}
+
+int main (void){
+ assert(conv2dTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj b/2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj
new file mode 100644
index 00000000..f9172238
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C46C7CDE-9D38-42E5-9DBA-3E7306033450}</ProjectGuid>
+ <RootNamespace>testDoubleConv2d</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleConv2d.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj.filters b/2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj.filters
new file mode 100644
index 00000000..2e9c4cf3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/test_DoubleConv2d/testDoubleConv2d.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleConv2d.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj b/2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj
new file mode 100644
index 00000000..f6c8d3f5
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{26170083-8042-4E04-BFE3-B553A5A8D481}</ProjectGuid>
+ <RootNamespace>testFloatConv2d</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatConv2d.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj.filters b/2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj.filters
new file mode 100644
index 00000000..e0a0b996
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/test_FloatConv2d/testFloatConv2d.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatConv2d.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/conv2d/zconv2da.c b/2.3-1/src/c/signalProcessing/conv2d/zconv2da.c
new file mode 100644
index 00000000..9fe9b3f6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/conv2d/zconv2da.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "conv2d.h"
+#include "multiplication.h"
+#include "addition.h"
+
+void zconv2da(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex *out){
+ int i,j,k1,k2;
+ doubleComplex accu;
+
+ for (i=0;i<lines1+lines2-1;i++){
+ for (j=0;j<columns1+columns2-1;j++){
+ accu=DoubleComplex(0,0);
+ for (k1=0;k1<i+1;k1++){
+ if ( (k1<lines1)&&((i-k1)<lines2) ){
+ for(k2=0;k2<j+1;k2++){
+ if ( (k2<columns1)&&((j-k2)<columns2) )
+ accu = zadds(accu,zmuls(in1[k1+k2*lines1],in2[i-k1+(j-k2)*lines2]));
+ }
+ }
+ }
+ out[i+j*(lines1+lines2-1)]=accu;
+ }
+ }
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/Makefile.am b/2.3-1/src/c/signalProcessing/crossCorr/Makefile.am
new file mode 100644
index 00000000..d9521e94
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/Makefile.am
@@ -0,0 +1,66 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libCrossCorr_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libCrossCorr.la
+
+HEAD = ../includes/crossCorr.h
+
+libCrossCorr_la_SOURCES = $(HEAD) \
+ scrossCorra.c \
+ dcrossCorra.c \
+ ccrossCorra.c \
+ zcrossCorra.c
+
+
+###############
+#### Check ####
+###############
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/signalProcessing/conv2d/libConv2d.la \
+ libCrossCorr.la
+
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+check_PROGRAMS = testFloatCrossCorr testDoubleCrossCorr
+
+TESTS = testFloatCrossCorr testDoubleCrossCorr
+
+testDoubleCrossCorr_SOURCES = testDoubleCrossCorr.c
+testDoubleCrossCorr_LDADD = $(check_LDADD)
+testDoubleCrossCorr_CFLAGS = $(check_INCLUDES)
+
+testFloatCrossCorr_SOURCES = testFloatCrossCorr.c
+testFloatCrossCorr_LDADD = $(check_LDADD)
+testFloatCrossCorr_CFLAGS = $(check_INCLUDES)
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/Makefile.in b/2.3-1/src/c/signalProcessing/crossCorr/Makefile.in
new file mode 100644
index 00000000..b5fa2025
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/Makefile.in
@@ -0,0 +1,754 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatCrossCorr$(EXEEXT) \
+ testDoubleCrossCorr$(EXEEXT)
+TESTS = testFloatCrossCorr$(EXEEXT) testDoubleCrossCorr$(EXEEXT)
+subdir = src/c/signalProcessing/crossCorr
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libCrossCorr_la_LIBADD =
+am__objects_1 =
+am_libCrossCorr_la_OBJECTS = $(am__objects_1) \
+ libCrossCorr_la-scrossCorra.lo libCrossCorr_la-dcrossCorra.lo \
+ libCrossCorr_la-ccrossCorra.lo libCrossCorr_la-zcrossCorra.lo
+libCrossCorr_la_OBJECTS = $(am_libCrossCorr_la_OBJECTS)
+libCrossCorr_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libCrossCorr_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleCrossCorr_OBJECTS = \
+ testDoubleCrossCorr-testDoubleCrossCorr.$(OBJEXT)
+testDoubleCrossCorr_OBJECTS = $(am_testDoubleCrossCorr_OBJECTS)
+testDoubleCrossCorr_DEPENDENCIES = $(check_LDADD)
+testDoubleCrossCorr_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleCrossCorr_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatCrossCorr_OBJECTS = \
+ testFloatCrossCorr-testFloatCrossCorr.$(OBJEXT)
+testFloatCrossCorr_OBJECTS = $(am_testFloatCrossCorr_OBJECTS)
+testFloatCrossCorr_DEPENDENCIES = $(check_LDADD)
+testFloatCrossCorr_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatCrossCorr_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libCrossCorr_la_SOURCES) $(testDoubleCrossCorr_SOURCES) \
+ $(testFloatCrossCorr_SOURCES)
+DIST_SOURCES = $(libCrossCorr_la_SOURCES) \
+ $(testDoubleCrossCorr_SOURCES) $(testFloatCrossCorr_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libCrossCorr_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libCrossCorr.la
+HEAD = ../includes/crossCorr.h
+libCrossCorr_la_SOURCES = $(HEAD) \
+ scrossCorra.c \
+ dcrossCorra.c \
+ ccrossCorra.c \
+ zcrossCorra.c
+
+
+###############
+#### Check ####
+###############
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/signalProcessing/conv2d/libConv2d.la \
+ libCrossCorr.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+testDoubleCrossCorr_SOURCES = testDoubleCrossCorr.c
+testDoubleCrossCorr_LDADD = $(check_LDADD)
+testDoubleCrossCorr_CFLAGS = $(check_INCLUDES)
+testFloatCrossCorr_SOURCES = testFloatCrossCorr.c
+testFloatCrossCorr_LDADD = $(check_LDADD)
+testFloatCrossCorr_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/crossCorr/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/crossCorr/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libCrossCorr.la: $(libCrossCorr_la_OBJECTS) $(libCrossCorr_la_DEPENDENCIES)
+ $(libCrossCorr_la_LINK) -rpath $(pkglibdir) $(libCrossCorr_la_OBJECTS) $(libCrossCorr_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleCrossCorr$(EXEEXT): $(testDoubleCrossCorr_OBJECTS) $(testDoubleCrossCorr_DEPENDENCIES)
+ @rm -f testDoubleCrossCorr$(EXEEXT)
+ $(testDoubleCrossCorr_LINK) $(testDoubleCrossCorr_OBJECTS) $(testDoubleCrossCorr_LDADD) $(LIBS)
+testFloatCrossCorr$(EXEEXT): $(testFloatCrossCorr_OBJECTS) $(testFloatCrossCorr_DEPENDENCIES)
+ @rm -f testFloatCrossCorr$(EXEEXT)
+ $(testFloatCrossCorr_LINK) $(testFloatCrossCorr_OBJECTS) $(testFloatCrossCorr_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCrossCorr_la-ccrossCorra.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCrossCorr_la-dcrossCorra.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCrossCorr_la-scrossCorra.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libCrossCorr_la-zcrossCorra.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libCrossCorr_la-scrossCorra.lo: scrossCorra.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -MT libCrossCorr_la-scrossCorra.lo -MD -MP -MF $(DEPDIR)/libCrossCorr_la-scrossCorra.Tpo -c -o libCrossCorr_la-scrossCorra.lo `test -f 'scrossCorra.c' || echo '$(srcdir)/'`scrossCorra.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCrossCorr_la-scrossCorra.Tpo $(DEPDIR)/libCrossCorr_la-scrossCorra.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scrossCorra.c' object='libCrossCorr_la-scrossCorra.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -c -o libCrossCorr_la-scrossCorra.lo `test -f 'scrossCorra.c' || echo '$(srcdir)/'`scrossCorra.c
+
+libCrossCorr_la-dcrossCorra.lo: dcrossCorra.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -MT libCrossCorr_la-dcrossCorra.lo -MD -MP -MF $(DEPDIR)/libCrossCorr_la-dcrossCorra.Tpo -c -o libCrossCorr_la-dcrossCorra.lo `test -f 'dcrossCorra.c' || echo '$(srcdir)/'`dcrossCorra.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCrossCorr_la-dcrossCorra.Tpo $(DEPDIR)/libCrossCorr_la-dcrossCorra.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcrossCorra.c' object='libCrossCorr_la-dcrossCorra.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -c -o libCrossCorr_la-dcrossCorra.lo `test -f 'dcrossCorra.c' || echo '$(srcdir)/'`dcrossCorra.c
+
+libCrossCorr_la-ccrossCorra.lo: ccrossCorra.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -MT libCrossCorr_la-ccrossCorra.lo -MD -MP -MF $(DEPDIR)/libCrossCorr_la-ccrossCorra.Tpo -c -o libCrossCorr_la-ccrossCorra.lo `test -f 'ccrossCorra.c' || echo '$(srcdir)/'`ccrossCorra.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCrossCorr_la-ccrossCorra.Tpo $(DEPDIR)/libCrossCorr_la-ccrossCorra.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccrossCorra.c' object='libCrossCorr_la-ccrossCorra.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -c -o libCrossCorr_la-ccrossCorra.lo `test -f 'ccrossCorra.c' || echo '$(srcdir)/'`ccrossCorra.c
+
+libCrossCorr_la-zcrossCorra.lo: zcrossCorra.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -MT libCrossCorr_la-zcrossCorra.lo -MD -MP -MF $(DEPDIR)/libCrossCorr_la-zcrossCorra.Tpo -c -o libCrossCorr_la-zcrossCorra.lo `test -f 'zcrossCorra.c' || echo '$(srcdir)/'`zcrossCorra.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libCrossCorr_la-zcrossCorra.Tpo $(DEPDIR)/libCrossCorr_la-zcrossCorra.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcrossCorra.c' object='libCrossCorr_la-zcrossCorra.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libCrossCorr_la_CFLAGS) $(CFLAGS) -c -o libCrossCorr_la-zcrossCorra.lo `test -f 'zcrossCorra.c' || echo '$(srcdir)/'`zcrossCorra.c
+
+testDoubleCrossCorr-testDoubleCrossCorr.o: testDoubleCrossCorr.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCrossCorr_CFLAGS) $(CFLAGS) -MT testDoubleCrossCorr-testDoubleCrossCorr.o -MD -MP -MF $(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Tpo -c -o testDoubleCrossCorr-testDoubleCrossCorr.o `test -f 'testDoubleCrossCorr.c' || echo '$(srcdir)/'`testDoubleCrossCorr.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Tpo $(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCrossCorr.c' object='testDoubleCrossCorr-testDoubleCrossCorr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCrossCorr_CFLAGS) $(CFLAGS) -c -o testDoubleCrossCorr-testDoubleCrossCorr.o `test -f 'testDoubleCrossCorr.c' || echo '$(srcdir)/'`testDoubleCrossCorr.c
+
+testDoubleCrossCorr-testDoubleCrossCorr.obj: testDoubleCrossCorr.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCrossCorr_CFLAGS) $(CFLAGS) -MT testDoubleCrossCorr-testDoubleCrossCorr.obj -MD -MP -MF $(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Tpo -c -o testDoubleCrossCorr-testDoubleCrossCorr.obj `if test -f 'testDoubleCrossCorr.c'; then $(CYGPATH_W) 'testDoubleCrossCorr.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCrossCorr.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Tpo $(DEPDIR)/testDoubleCrossCorr-testDoubleCrossCorr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleCrossCorr.c' object='testDoubleCrossCorr-testDoubleCrossCorr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleCrossCorr_CFLAGS) $(CFLAGS) -c -o testDoubleCrossCorr-testDoubleCrossCorr.obj `if test -f 'testDoubleCrossCorr.c'; then $(CYGPATH_W) 'testDoubleCrossCorr.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleCrossCorr.c'; fi`
+
+testFloatCrossCorr-testFloatCrossCorr.o: testFloatCrossCorr.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCrossCorr_CFLAGS) $(CFLAGS) -MT testFloatCrossCorr-testFloatCrossCorr.o -MD -MP -MF $(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Tpo -c -o testFloatCrossCorr-testFloatCrossCorr.o `test -f 'testFloatCrossCorr.c' || echo '$(srcdir)/'`testFloatCrossCorr.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Tpo $(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCrossCorr.c' object='testFloatCrossCorr-testFloatCrossCorr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCrossCorr_CFLAGS) $(CFLAGS) -c -o testFloatCrossCorr-testFloatCrossCorr.o `test -f 'testFloatCrossCorr.c' || echo '$(srcdir)/'`testFloatCrossCorr.c
+
+testFloatCrossCorr-testFloatCrossCorr.obj: testFloatCrossCorr.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCrossCorr_CFLAGS) $(CFLAGS) -MT testFloatCrossCorr-testFloatCrossCorr.obj -MD -MP -MF $(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Tpo -c -o testFloatCrossCorr-testFloatCrossCorr.obj `if test -f 'testFloatCrossCorr.c'; then $(CYGPATH_W) 'testFloatCrossCorr.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCrossCorr.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Tpo $(DEPDIR)/testFloatCrossCorr-testFloatCrossCorr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatCrossCorr.c' object='testFloatCrossCorr-testFloatCrossCorr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatCrossCorr_CFLAGS) $(CFLAGS) -c -o testFloatCrossCorr-testFloatCrossCorr.obj `if test -f 'testFloatCrossCorr.c'; then $(CYGPATH_W) 'testFloatCrossCorr.c'; else $(CYGPATH_W) '$(srcdir)/testFloatCrossCorr.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/ccrossCorra.c b/2.3-1/src/c/signalProcessing/crossCorr/ccrossCorra.c
new file mode 100644
index 00000000..e2c66412
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/ccrossCorra.c
@@ -0,0 +1,33 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "crossCorr.h"
+#include "conv2d.h"
+#include "conj.h"
+
+void ccrossCorra(floatComplex* in1, int rows1, int cols1, floatComplex* in2, int rows2, int cols2, floatComplex* out){
+ floatComplex *in2Copy;
+ int i;
+
+ in2Copy=(floatComplex *)malloc((unsigned int)rows2*sizeof(floatComplex));
+
+ /* We change in2 to be in appropriate form in in2Copy*/
+ for (i=0;i<(rows2*cols2);i++) in2Copy[i]=cconjs(in2[rows2*cols2-1-i]);
+
+ cconv2da(in1, rows1, cols1, in2Copy, rows2, cols2, out);
+
+ free(in2Copy);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/dcrossCorra.c b/2.3-1/src/c/signalProcessing/crossCorr/dcrossCorra.c
new file mode 100644
index 00000000..b02298fd
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/dcrossCorra.c
@@ -0,0 +1,37 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "crossCorr.h"
+#include "conv2d.h"
+
+void dcrossCorra(double* in1, int rows1, int cols1, double* in2, int rows2, int cols2, double* out){
+ double *in2Copy;
+ int i;
+
+ in2Copy=(double*)malloc((unsigned int)(rows2*cols2)*sizeof(double));
+
+ /* We change in2 to be in appropriate form in in2Copy*/
+ for (i=0;i<(rows2*cols2);i++)
+ {
+ in2Copy[i]=in2[rows2*cols2-1-i];
+ }
+
+ dconv2da(in1, rows1, cols1, in2Copy, rows2, cols2, out);
+
+ free(in2Copy);
+}
+
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/scrossCorra.c b/2.3-1/src/c/signalProcessing/crossCorr/scrossCorra.c
new file mode 100644
index 00000000..ddc9df76
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/scrossCorra.c
@@ -0,0 +1,31 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "crossCorr.h"
+#include "conv2d.h"
+
+void scrossCorra(float* in1, int rows1, int cols1, float* in2, int rows2, int cols2, float* out){
+ float *in2Copy;
+ int i;
+
+ in2Copy=(float*)malloc((unsigned int)(rows2*cols2)*sizeof(float));
+
+ /* We change in2 to be in appropriate form in in2Copy*/
+ for (i=0;i<(rows2*cols2);i++) in2Copy[i]=in2[rows2*cols2-1-i];
+
+ sconv2da(in1, rows1, cols1, in2Copy, rows2, cols2, out);
+
+ free(in2Copy);
+
+}
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/testDoubleCrossCorr.c b/2.3-1/src/c/signalProcessing/crossCorr/testDoubleCrossCorr.c
new file mode 100644
index 00000000..96f00530
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/testDoubleCrossCorr.c
@@ -0,0 +1,62 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include "crossCorr.h"
+#include <stdio.h>
+
+
+static void dcrossCorraTest(void){
+ int i;
+ double in1[] = {1,2,3,4,5,6,7,8,9,10,11,12};
+ double in2[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+ double inV1[]={0.8812593049369752407074,0.459206754341721534729,0.4192749080248177051544,0.9930617930367588996887,0.1705299648456275463104,0.8114501461386680603027, 0.4106854074634611606598};
+ double inV2[]={0.5211019767448306083679, 0.2967169224284589290619, 0.4054284896701574325562, 0.6229536165483295917511};
+ double out[42],outV1[10],outV[12*16];
+
+ /* Test Matrice-Matrice */
+ dcrossCorra(in1,4,3,in2,4,4,out);
+ for (i=0;i<42;i++){
+ printf("out[%d] : %f\n",i,out[i]);
+ }
+
+ /* Test VecteuLigne-VecteurColonne */
+ dcrossCorra(in1,12,1,in2,1,16,outV);
+ for (i=0;i<12*16;i++){
+ printf("out[%d] : %f\n",i,outV[i]);
+ }
+
+ /* Test VecteurLigne-VecteurLigne */
+ dcrossCorra(inV1,1,7,inV2,1,4,outV1);
+ for (i=0;i<10;i++){
+ printf("out[%d] : %f\n",i,outV1[i]);
+ }
+}
+
+/*FIXME : aucun test pour les complexes*/
+static void zcrossCorraTest(void){
+
+}
+
+
+static int crossCorraTest(void){
+ dcrossCorraTest();
+ zcrossCorraTest();
+ return 0;
+}
+
+int main (void){
+ assert(crossCorraTest()==0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/testFloatCrossCorr.c b/2.3-1/src/c/signalProcessing/crossCorr/testFloatCrossCorr.c
new file mode 100644
index 00000000..aace4b9e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/testFloatCrossCorr.c
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include "crossCorr.h"
+#include <stdio.h>
+
+
+static void scrossCorraTest(void){
+ int i;
+ float in1[] = {1.0f,2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f};
+ float in2[] = {1.0f,2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f,13.0f,14.0f,15.0f,16.0f};
+
+ float out[42];
+
+ scrossCorra(in1,4,3,in2,4,4,out);
+ for (i=0;i<42;i++){
+ printf("out[%d] : %f\n",i,out[i]);
+ }
+}
+
+/*FIXME : aucun test pour les complexes*/
+static void ccrossCorraTest(void){
+
+}
+
+
+static int crossCorraTest(void){
+ scrossCorraTest();
+ ccrossCorraTest();
+ return 0;
+}
+
+int main (void){
+ assert(crossCorraTest()==0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj b/2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj
new file mode 100644
index 00000000..a3159a95
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{9CF61EF1-2FF6-4DC2-A6EE-00C2288732BD}</ProjectGuid>
+ <RootNamespace>testDoubleCrossCorr</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleCrossCorr.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj.filters b/2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj.filters
new file mode 100644
index 00000000..1f2dabb6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/test_DoubleCrossCorr/testDoubleCrossCorr.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleCrossCorr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj b/2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj
new file mode 100644
index 00000000..943d8aab
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0F19A6A2-2EE2-4E39-8A4C-2F898D4186CF}</ProjectGuid>
+ <RootNamespace>testFloatCrossCorr</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatCrossCorr.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj.filters b/2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj.filters
new file mode 100644
index 00000000..194ad9f5
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/test_FloatCrossCorr/testFloatCrossCorr.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatCrossCorr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/crossCorr/zcrossCorra.c b/2.3-1/src/c/signalProcessing/crossCorr/zcrossCorra.c
new file mode 100644
index 00000000..f5659a36
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/crossCorr/zcrossCorra.c
@@ -0,0 +1,34 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "crossCorr.h"
+#include "conv2d.h"
+#include "conj.h"
+
+void zcrossCorra(doubleComplex* in1, int rows1, int cols1, doubleComplex* in2, int rows2, int cols2, doubleComplex* out){
+ doubleComplex *in2Copy;
+ int i;
+
+ in2Copy=(doubleComplex *)malloc((unsigned int)(rows2*cols2)*sizeof(doubleComplex));
+
+ /* We change in2 to be in appropriate form in in2Copy*/
+ for (i=0;i<(rows2*cols2);i++) in2Copy[i]=zconjs(in2[rows2*cols2-1-i]);
+
+ zconv2da(in1, rows1, cols1, in2Copy, rows2, cols2, out);
+
+ free(in2Copy);
+
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/fft/Makefile.am b/2.3-1/src/c/signalProcessing/fft/Makefile.am
new file mode 100644
index 00000000..07b10b4f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/Makefile.am
@@ -0,0 +1,83 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libFft_la_CFLAGS = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libFft.la
+
+libFft_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/fft.h \
+ fft_internal.h
+
+SRC = zfftma.c \
+ cfftma.c \
+ dfft2.c \
+ dfftbi.c \
+ dfftmx.c \
+ fft842.c \
+ r2tx.c \
+ r4tx.c \
+ r8tx.c \
+ dfftma.c \
+ sfftma.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatFft testDoubleFft testMatFft
+
+TESTS = testFloatFft testDoubleFft testMatFft
+
+#
+# -*- Fftine Tests -*-
+#
+testFloatFft_SOURCES = testFloatFft.c
+testFloatFft_CFLAGS = $(check_INCLUDES)
+testFloatFft_LDADD = $(check_LDADD)
+
+testDoubleFft_SOURCES = testDoubleFft.c
+testDoubleFft_CFLAGS = $(check_INCLUDES)
+testDoubleFft_LDADD = $(check_LDADD)
+
+
+testMatFft_SOURCES = testMatFft.c
+testMatFft_CFLAGS = $(check_INCLUDES)
+testMatFft_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/signalProcessing/fft/Makefile.in b/2.3-1/src/c/signalProcessing/fft/Makefile.in
new file mode 100644
index 00000000..117cae37
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/Makefile.in
@@ -0,0 +1,865 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatFft$(EXEEXT) testDoubleFft$(EXEEXT) \
+ testMatFft$(EXEEXT)
+TESTS = testFloatFft$(EXEEXT) testDoubleFft$(EXEEXT) \
+ testMatFft$(EXEEXT)
+subdir = src/c/signalProcessing/fft
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFft_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libFft_la-zfftma.lo libFft_la-cfftma.lo \
+ libFft_la-dfft2.lo libFft_la-dfftbi.lo libFft_la-dfftmx.lo \
+ libFft_la-fft842.lo libFft_la-r2tx.lo libFft_la-r4tx.lo \
+ libFft_la-r8tx.lo libFft_la-dfftma.lo libFft_la-sfftma.lo
+am_libFft_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libFft_la_OBJECTS = $(am_libFft_la_OBJECTS)
+libFft_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libFft_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleFft_OBJECTS = testDoubleFft-testDoubleFft.$(OBJEXT)
+testDoubleFft_OBJECTS = $(am_testDoubleFft_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la
+testDoubleFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleFft_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatFft_OBJECTS = testFloatFft-testFloatFft.$(OBJEXT)
+testFloatFft_OBJECTS = $(am_testFloatFft_OBJECTS)
+testFloatFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatFft_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testMatFft_OBJECTS = testMatFft-testMatFft.$(OBJEXT)
+testMatFft_OBJECTS = $(am_testMatFft_OBJECTS)
+testMatFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testMatFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatFft_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFft_la_SOURCES) $(testDoubleFft_SOURCES) \
+ $(testFloatFft_SOURCES) $(testMatFft_SOURCES)
+DIST_SOURCES = $(libFft_la_SOURCES) $(testDoubleFft_SOURCES) \
+ $(testFloatFft_SOURCES) $(testMatFft_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libFft_la_CFLAGS = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFft.la
+libFft_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/fft.h \
+ fft_internal.h
+
+SRC = zfftma.c \
+ cfftma.c \
+ dfft2.c \
+ dfftbi.c \
+ dfftmx.c \
+ fft842.c \
+ r2tx.c \
+ r4tx.c \
+ r8tx.c \
+ dfftma.c \
+ sfftma.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ @LIBMATH@
+
+
+#
+# -*- Fftine Tests -*-
+#
+testFloatFft_SOURCES = testFloatFft.c
+testFloatFft_CFLAGS = $(check_INCLUDES)
+testFloatFft_LDADD = $(check_LDADD)
+testDoubleFft_SOURCES = testDoubleFft.c
+testDoubleFft_CFLAGS = $(check_INCLUDES)
+testDoubleFft_LDADD = $(check_LDADD)
+testMatFft_SOURCES = testMatFft.c
+testMatFft_CFLAGS = $(check_INCLUDES)
+testMatFft_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/fft/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/fft/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFft.la: $(libFft_la_OBJECTS) $(libFft_la_DEPENDENCIES)
+ $(libFft_la_LINK) -rpath $(pkglibdir) $(libFft_la_OBJECTS) $(libFft_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleFft$(EXEEXT): $(testDoubleFft_OBJECTS) $(testDoubleFft_DEPENDENCIES)
+ @rm -f testDoubleFft$(EXEEXT)
+ $(testDoubleFft_LINK) $(testDoubleFft_OBJECTS) $(testDoubleFft_LDADD) $(LIBS)
+testFloatFft$(EXEEXT): $(testFloatFft_OBJECTS) $(testFloatFft_DEPENDENCIES)
+ @rm -f testFloatFft$(EXEEXT)
+ $(testFloatFft_LINK) $(testFloatFft_OBJECTS) $(testFloatFft_LDADD) $(LIBS)
+testMatFft$(EXEEXT): $(testMatFft_OBJECTS) $(testMatFft_DEPENDENCIES)
+ @rm -f testMatFft$(EXEEXT)
+ $(testMatFft_LINK) $(testMatFft_OBJECTS) $(testMatFft_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-cfftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfft2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfftbi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfftmx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-fft842.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-r2tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-r4tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-r8tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-sfftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-zfftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleFft-testDoubleFft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatFft-testFloatFft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatFft-testMatFft.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libFft_la-zfftma.lo: zfftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-zfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-zfftma.Tpo -c -o libFft_la-zfftma.lo `test -f 'zfftma.c' || echo '$(srcdir)/'`zfftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-zfftma.Tpo $(DEPDIR)/libFft_la-zfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfftma.c' object='libFft_la-zfftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-zfftma.lo `test -f 'zfftma.c' || echo '$(srcdir)/'`zfftma.c
+
+libFft_la-cfftma.lo: cfftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-cfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-cfftma.Tpo -c -o libFft_la-cfftma.lo `test -f 'cfftma.c' || echo '$(srcdir)/'`cfftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-cfftma.Tpo $(DEPDIR)/libFft_la-cfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfftma.c' object='libFft_la-cfftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-cfftma.lo `test -f 'cfftma.c' || echo '$(srcdir)/'`cfftma.c
+
+libFft_la-dfft2.lo: dfft2.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-dfft2.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfft2.Tpo -c -o libFft_la-dfft2.lo `test -f 'dfft2.c' || echo '$(srcdir)/'`dfft2.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-dfft2.Tpo $(DEPDIR)/libFft_la-dfft2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfft2.c' object='libFft_la-dfft2.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-dfft2.lo `test -f 'dfft2.c' || echo '$(srcdir)/'`dfft2.c
+
+libFft_la-dfftbi.lo: dfftbi.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-dfftbi.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfftbi.Tpo -c -o libFft_la-dfftbi.lo `test -f 'dfftbi.c' || echo '$(srcdir)/'`dfftbi.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-dfftbi.Tpo $(DEPDIR)/libFft_la-dfftbi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfftbi.c' object='libFft_la-dfftbi.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-dfftbi.lo `test -f 'dfftbi.c' || echo '$(srcdir)/'`dfftbi.c
+
+libFft_la-dfftmx.lo: dfftmx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-dfftmx.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfftmx.Tpo -c -o libFft_la-dfftmx.lo `test -f 'dfftmx.c' || echo '$(srcdir)/'`dfftmx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-dfftmx.Tpo $(DEPDIR)/libFft_la-dfftmx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfftmx.c' object='libFft_la-dfftmx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-dfftmx.lo `test -f 'dfftmx.c' || echo '$(srcdir)/'`dfftmx.c
+
+libFft_la-fft842.lo: fft842.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-fft842.lo -MD -MP -MF $(DEPDIR)/libFft_la-fft842.Tpo -c -o libFft_la-fft842.lo `test -f 'fft842.c' || echo '$(srcdir)/'`fft842.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-fft842.Tpo $(DEPDIR)/libFft_la-fft842.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fft842.c' object='libFft_la-fft842.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-fft842.lo `test -f 'fft842.c' || echo '$(srcdir)/'`fft842.c
+
+libFft_la-r2tx.lo: r2tx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-r2tx.lo -MD -MP -MF $(DEPDIR)/libFft_la-r2tx.Tpo -c -o libFft_la-r2tx.lo `test -f 'r2tx.c' || echo '$(srcdir)/'`r2tx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-r2tx.Tpo $(DEPDIR)/libFft_la-r2tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='r2tx.c' object='libFft_la-r2tx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-r2tx.lo `test -f 'r2tx.c' || echo '$(srcdir)/'`r2tx.c
+
+libFft_la-r4tx.lo: r4tx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-r4tx.lo -MD -MP -MF $(DEPDIR)/libFft_la-r4tx.Tpo -c -o libFft_la-r4tx.lo `test -f 'r4tx.c' || echo '$(srcdir)/'`r4tx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-r4tx.Tpo $(DEPDIR)/libFft_la-r4tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='r4tx.c' object='libFft_la-r4tx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-r4tx.lo `test -f 'r4tx.c' || echo '$(srcdir)/'`r4tx.c
+
+libFft_la-r8tx.lo: r8tx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-r8tx.lo -MD -MP -MF $(DEPDIR)/libFft_la-r8tx.Tpo -c -o libFft_la-r8tx.lo `test -f 'r8tx.c' || echo '$(srcdir)/'`r8tx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-r8tx.Tpo $(DEPDIR)/libFft_la-r8tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='r8tx.c' object='libFft_la-r8tx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-r8tx.lo `test -f 'r8tx.c' || echo '$(srcdir)/'`r8tx.c
+
+libFft_la-dfftma.lo: dfftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-dfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfftma.Tpo -c -o libFft_la-dfftma.lo `test -f 'dfftma.c' || echo '$(srcdir)/'`dfftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-dfftma.Tpo $(DEPDIR)/libFft_la-dfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfftma.c' object='libFft_la-dfftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-dfftma.lo `test -f 'dfftma.c' || echo '$(srcdir)/'`dfftma.c
+
+libFft_la-sfftma.lo: sfftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-sfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-sfftma.Tpo -c -o libFft_la-sfftma.lo `test -f 'sfftma.c' || echo '$(srcdir)/'`sfftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFft_la-sfftma.Tpo $(DEPDIR)/libFft_la-sfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfftma.c' object='libFft_la-sfftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-sfftma.lo `test -f 'sfftma.c' || echo '$(srcdir)/'`sfftma.c
+
+testDoubleFft-testDoubleFft.o: testDoubleFft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -MT testDoubleFft-testDoubleFft.o -MD -MP -MF $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo -c -o testDoubleFft-testDoubleFft.o `test -f 'testDoubleFft.c' || echo '$(srcdir)/'`testDoubleFft.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo $(DEPDIR)/testDoubleFft-testDoubleFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFft.c' object='testDoubleFft-testDoubleFft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -c -o testDoubleFft-testDoubleFft.o `test -f 'testDoubleFft.c' || echo '$(srcdir)/'`testDoubleFft.c
+
+testDoubleFft-testDoubleFft.obj: testDoubleFft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -MT testDoubleFft-testDoubleFft.obj -MD -MP -MF $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo -c -o testDoubleFft-testDoubleFft.obj `if test -f 'testDoubleFft.c'; then $(CYGPATH_W) 'testDoubleFft.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFft.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo $(DEPDIR)/testDoubleFft-testDoubleFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFft.c' object='testDoubleFft-testDoubleFft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -c -o testDoubleFft-testDoubleFft.obj `if test -f 'testDoubleFft.c'; then $(CYGPATH_W) 'testDoubleFft.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFft.c'; fi`
+
+testFloatFft-testFloatFft.o: testFloatFft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -MT testFloatFft-testFloatFft.o -MD -MP -MF $(DEPDIR)/testFloatFft-testFloatFft.Tpo -c -o testFloatFft-testFloatFft.o `test -f 'testFloatFft.c' || echo '$(srcdir)/'`testFloatFft.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFft-testFloatFft.Tpo $(DEPDIR)/testFloatFft-testFloatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFft.c' object='testFloatFft-testFloatFft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -c -o testFloatFft-testFloatFft.o `test -f 'testFloatFft.c' || echo '$(srcdir)/'`testFloatFft.c
+
+testFloatFft-testFloatFft.obj: testFloatFft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -MT testFloatFft-testFloatFft.obj -MD -MP -MF $(DEPDIR)/testFloatFft-testFloatFft.Tpo -c -o testFloatFft-testFloatFft.obj `if test -f 'testFloatFft.c'; then $(CYGPATH_W) 'testFloatFft.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFft.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFft-testFloatFft.Tpo $(DEPDIR)/testFloatFft-testFloatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFft.c' object='testFloatFft-testFloatFft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -c -o testFloatFft-testFloatFft.obj `if test -f 'testFloatFft.c'; then $(CYGPATH_W) 'testFloatFft.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFft.c'; fi`
+
+testMatFft-testMatFft.o: testMatFft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -MT testMatFft-testMatFft.o -MD -MP -MF $(DEPDIR)/testMatFft-testMatFft.Tpo -c -o testMatFft-testMatFft.o `test -f 'testMatFft.c' || echo '$(srcdir)/'`testMatFft.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatFft-testMatFft.Tpo $(DEPDIR)/testMatFft-testMatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatFft.c' object='testMatFft-testMatFft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -c -o testMatFft-testMatFft.o `test -f 'testMatFft.c' || echo '$(srcdir)/'`testMatFft.c
+
+testMatFft-testMatFft.obj: testMatFft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -MT testMatFft-testMatFft.obj -MD -MP -MF $(DEPDIR)/testMatFft-testMatFft.Tpo -c -o testMatFft-testMatFft.obj `if test -f 'testMatFft.c'; then $(CYGPATH_W) 'testMatFft.c'; else $(CYGPATH_W) '$(srcdir)/testMatFft.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatFft-testMatFft.Tpo $(DEPDIR)/testMatFft-testMatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatFft.c' object='testMatFft-testMatFft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -c -o testMatFft-testMatFft.obj `if test -f 'testMatFft.c'; then $(CYGPATH_W) 'testMatFft.c'; else $(CYGPATH_W) '$(srcdir)/testMatFft.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/fft/cfftma.c b/2.3-1/src/c/signalProcessing/fft/cfftma.c
new file mode 100644
index 00000000..6bd2f744
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/cfftma.c
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "fft.h"
+
+void cfftma ( floatComplex* in , int rows, int cols, floatComplex* out)
+{
+
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need doubleComplex matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ doubleComplex *dblin = NULL;
+ doubleComplex *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(rows * cols));
+ dblout = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(rows * cols));
+
+
+
+ /*copy and cast all the floatComplex value into doubleComplex value */
+ for ( i = 0 ; i < (rows * cols) ; i ++ )
+ {
+ dblin[i] = DoubleComplex ( (double) creals( in[i]) , (double) cimags ( in[i])) ;
+ }
+
+ zfftma ( dblin, rows , cols , dblout );
+
+
+ for ( i = 0 ; i < (rows * cols) ; i++ )
+ {
+ out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/dfft2.c b/2.3-1/src/c/signalProcessing/fft/dfft2.c
new file mode 100644
index 00000000..9aa0bd53
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/dfft2.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "fft_internal.h"
+
+void dfft2 ( double* a , double* b , int nseg , int n , int nspn , int isn , int ierr )
+{
+
+
+ dfftbi ( a , b , nseg , n , nspn , isn , ierr );
+
+
+
+ return ;
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/dfftbi.c b/2.3-1/src/c/signalProcessing/fft/dfftbi.c
new file mode 100644
index 00000000..8ddef44f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/dfftbi.c
@@ -0,0 +1,322 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include "max.h"
+#include "fft_internal.h"
+
+/*
+c arrays a and b originally hold the real and imaginary
+c components of the data, and return the real and
+c imaginary components of the resulting fourier coefficients.
+c multivariate data is indexed according to the fortran
+c array element successor function, without limit
+c on the number of implied multiple subscripts.
+c the subroutine is called once for each variate.
+c the calls for a multivariate transform may be in any order.
+c
+c n is the dimension of the current variable.
+c nspn is the spacing of consecutive data values
+c while indexing the current variable.
+c nseg*n*nspn is the total number of complex data values.
+c the sign of isn determines the sign of the complex
+c exponential, and the magnitude of isn is normally one.
+c the magnitude of isn determines the indexing increment for a&b.
+c
+c if fft is called twice, with opposite signs on isn, an
+c identity transformation is done...calls can be in either order.
+c the results are scaled by 1/n when the sign of isn is positive.
+c
+c a tri-variate transform with a(n1,n2,n3), b(n1,n2,n3)
+c is computed by
+c call fft(a,b,n2*n3,n1,1,-1)
+c call fft(a,b,n3,n2,n1,-1)
+c call fft(a,b,1,n3,n1*n2,-1)
+c
+c a single-variate transform of n complex data values is computed by
+c call fft(a,b,1,n,1,-1)
+c
+c the data may alternatively be stored in a single complex
+c array a, then the magnitude of isn changed to two to
+c give the correct indexing increment and a(2) used to
+c pass the initial address for the sequence of imaginary
+c values, e.g.
+c
+c
+c array nfac is working storage for factoring n. the smallest
+c number exceeding the 15 locations provided is 12,754,584.
+c!
+*/
+void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr)
+{
+
+ double* rstak ;
+ int* istak ;
+
+ int lout = 0 ;
+ int lnow = 10;
+ int lused= 10;
+
+ int lbook = 10 ;
+
+
+ int nfac[15] ;
+ int i ;
+ int in ;
+ int j = 3 ;
+ int j2 = 3 ;
+ int j3 = 3 ;
+ int jj = 9;
+ int m = 0 ;
+ int k ;
+ int kt ;
+ int kkk ;
+ int nspan ;
+ int nitems ;
+ int ntot ;
+ int maxp = 0;
+ int maxf ;
+ int itype;
+ int istkgt ;
+
+
+ int nf = abs ( n ) ;
+
+ ierr = 0 ;
+
+ /*determine the factors of n */
+
+
+ if ( nf == 1)
+ return ;
+
+ k = nf ;
+
+ nspan = abs ( nf*nspn ) ;
+ ntot = abs ( nspan*nseg) ;
+
+
+ if ( isn*ntot == 0 )
+ {
+ ierr = 1 ;
+ return ;
+ }
+
+
+/* we search as much 4 in the factor of vector's length as we can */
+
+ while ( (k- (int)(k/16)*16 ) == 0 )
+ {
+ m++;
+ nfac[m-1] = 4 ;
+ k = k >> 4 ;
+ }
+
+
+/* we search all square factor */
+
+ do
+ {
+ while ( k%jj == 0 )
+ {
+ m++;
+ nfac[m-1] = j ;
+ k /= jj ;
+
+ }
+
+ j+=2;
+ jj= j*j ;
+
+ }while ( jj <= k);
+
+
+
+
+/* if the remaining size after all the previous division is less than 4
+ then it's the last factor */
+ if ( k <= 4)
+ {
+
+ kt = m;
+ nfac[m] = k;
+ if ( k != 1 )
+ m++;
+ }
+ else
+ {
+ if ( (k & 3) == 0 )
+ {
+ m++;
+ nfac[m-1] = 2 ;
+ k = k >> 2 ;
+ }
+
+ /*all square factor out now but k >= 5 still */
+ kt = m ;
+ maxp = max ( (kt+1)*2 , k-1);
+ j=2;
+
+ do
+ {
+ if ( k%j == 0 )
+ {
+
+ m++;
+ nfac[m-1] = j ;
+ k /= j ;
+ }
+
+ j = (j+1) | 1 ;
+
+ }while ( j <= k );
+
+ }
+
+
+
+ if ( m <= ( kt+1) )
+ maxp = m + kt + 1 ;
+
+
+
+ if ( m + kt > 15)
+ {
+ ierr = 2 ;
+
+ return ;
+ }
+
+
+ if ( kt != 0 )
+ {
+ j = kt ;
+
+ do{
+ m++;
+
+ nfac[m-1] = nfac[j-1];
+ j--;
+ }while ( j != 0) ;
+ }
+
+
+ maxf = nfac[m-kt-1] ;
+
+ if ( kt > 0 )
+ maxf = max ( nfac[kt-1] , maxf );
+
+
+
+
+ for ( kkk = 1 ; kkk <= m ; kkk++ )
+ {
+ maxf = max ( maxf , nfac[kkk-1]);
+
+ }
+
+
+
+
+
+
+
+ nitems = maxf * 4 ;
+ itype = 4 ;
+
+
+ istkgt = 2 + ((lnow-1)/2) ;/*lnow = 10*/
+ istkgt = 6;
+
+ /*i = ( (istkgt - 1 + nitems) * isize[3] -1) + 3 ;*/
+ i = 12 + nitems*2;
+
+/* this part is mainly to allocate size for workspace */
+
+ istak = (int*) malloc ( sizeof (int) * (unsigned int) i);
+
+ istak[i-2] = itype ;
+ istak[i-1] = lnow ;
+ lout ++ ;
+ lnow = i ;
+ lused = max ( lused , lnow );
+
+ j = istkgt ;
+ jj = j + maxf ;
+ j2 = jj+ maxf ;
+ j3 = j2+ maxf ;
+
+ nitems = maxp ;
+ itype = 2 ;
+
+ /*istkgt = ( lnow*isize[1] -1)/isize[1] + 2;*/
+ istkgt = lnow + 1 ;
+ /*i = ( (istkgt - 1 + nitems) * isize[1] -1) / isize[1] + 3 ;*/
+ i = lnow + nitems + 2 ;
+ istak = (int*) realloc ( istak ,sizeof (int) * (unsigned int) i);
+ rstak = (double*) malloc ( sizeof (double) * (unsigned int) i);
+
+
+
+
+
+
+ istak[i-2] = itype ;
+ istak[i-1] = lnow ;
+ lout ++ ;
+ lnow = i ;
+ lused = max ( lused , lnow );
+
+ k = istkgt ;
+
+/*
+c la carte suivante est a supprimer si simple precision
+c next instruction commented by FD&MG (simulog residue?)
+c ********************************************
+c k=2*k-1
+c *********************************************
+*/
+
+
+
+ dfftmx( a , b , ntot , nf , nspan ,
+ isn , m , kt , &rstak[j-1] , &rstak[jj-1] ,
+ &rstak[j2-1] , &rstak[j3-1] , &istak[k-1] , nfac);
+
+ k =2 ;
+
+ in = 2 ;
+/*
+ if (!( lbook <= lnow && lnow <= lused ))
+ {
+ ierr = 3 ;
+ return ;
+ }
+*/
+ while ( in > 0)
+ {
+ if ( lbook > istak[lnow-1] || istak[lnow-1] >= lnow-1)
+ {
+ ierr = 4 ;
+ }
+
+ lout-- ;
+ lnow = istak[lnow-1] ;
+ in-- ;
+ }
+ free(istak);
+ free(rstak);
+
+ return ;
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/dfftma.c b/2.3-1/src/c/signalProcessing/fft/dfftma.c
new file mode 100644
index 00000000..cf584623
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/dfftma.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * 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 <stdlib.h>
+#include "fft.h"
+#include "zeros.h"
+
+void dfftma ( double* in , int rows, int cols, double* out){
+ double* ZEROS;
+ doubleComplex* inCpx;
+ doubleComplex* outCpx;
+
+ ZEROS = (double*) malloc((unsigned int)(rows*cols)*sizeof(double));
+ outCpx = (doubleComplex*) malloc((unsigned int)(rows*cols)*sizeof(doubleComplex));
+
+ dzerosa(ZEROS,rows,cols);
+ inCpx=DoubleComplexMatrix(in,ZEROS,rows*cols);
+
+ zfftma(inCpx,rows,cols,outCpx);
+
+ zreala(outCpx, rows*cols, out);
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/dfftmx.c b/2.3-1/src/c/signalProcessing/fft/dfftmx.c
new file mode 100644
index 00000000..f7d6ce30
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/dfftmx.c
@@ -0,0 +1,1211 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <math.h>
+#include "max.h"
+#include "min.h"
+#include "fft_internal.h"
+
+
+/*c'est moche je sais */
+
+static double* a ;
+static double* b ;
+static int ntot ;
+static int n ;
+static int nspan ;
+static int isn ;
+static int m ;
+static int kt ;
+static double* wt ;
+static double* ck ;
+static double* bt ;
+static double* sk ;
+static int* np ;
+static int* nfac ;
+static int inc ;
+static int nt ;
+static int ks ;
+
+static double rad ;
+static double c72 ;
+static double s72 ;
+static double s120 ;
+
+static double aa ;
+static double ak ;
+static double akm ;
+static double akp ;
+static double aj ;
+static double ajp ;
+static double ajm ;
+
+static double bb ;
+static double bk ;
+static double bkm ;
+static double bkp ;
+static double bj ;
+static double bjp ;
+static double bjm ;
+static double dr ;
+
+static double cd ;
+static double c1 ;
+static double c2 ;
+static double c3 ;
+
+static double sd ;
+static double s1 ;
+static double s2 ;
+static double s3 ;
+
+static int kspan ;
+static int nn ;
+static int jc ;
+static int klim ;
+static int jf ;
+static int maxf ;
+static int kk ;
+static int k ;
+static int k1 ;
+static int k2 ;
+static int k3 ;
+static int k4 ;
+static int mm ;
+static int kspnn ;
+static int i ;
+static int j ;
+static int jj;
+
+/* Prototypes */
+
+static void preliminaryWork (void);
+static void permute_stage1 (void);
+static void permute_stage2 (void);
+static void f4t_150 (void);
+static void factorOf3Transform (void) ;
+static void factorOf5Transform (void) ;
+static void preFOtherTransform (void);
+static void factorOfOtherTransform (void);
+static void pre_sqFactor2NormlOrder (void);
+static void nonSqFactor2NormOrder (void) ;
+static void detPermutCycles (void);
+static void reorderMatrix (void ) ;
+
+static int f4t_170 (void);
+static int factorTransform (void);
+static int pre_fOf2Trans (void);
+static int factorOf2Transform (void);
+static int factorOf4Transform (void);
+static int mulByRotationFactor (void );
+static int post_sqFactor2NormlOrder (void);
+static void single_sqFactor2NormlOrder (void);
+static int multi_sqFactor2NormlOrder (void);
+
+/* End Prototypes */
+
+/*note on this code all numbers alone in comment is
+ a reference to the corresponding goto in the original fotran code */
+
+int dfftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan,
+ int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
+ double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac)
+{
+ int retVal = 0 ;
+ a = _pdblA ;
+ b = _pdblB ;
+
+ ntot = _iNtot ;
+ n = _iN ;
+ nspan= _iNspan ;
+ isn = _iIsn;
+ m = _iM ;
+ kt = _iKt ;
+ wt = _pdblWt ;
+ ck = _pdblCk;
+ bt = _pdblBt;
+ sk = _pdblSk;
+ np = _piNp;
+ nfac = _piNfac;
+
+ inc = abs ( isn ) ;
+ nt = inc*ntot ;
+ ks = inc*nspan;
+ rad = atan((double)1);
+ c72 = cos (rad/0.6250);
+ s72 = sin (rad/0.6250);
+ s120= sqrt(0.750);
+
+
+
+ preliminaryWork() ;
+
+
+ while ( retVal == 0 ) retVal = factorTransform ( ) ;
+
+ np[0] = ks ;
+
+ if ( kt != 0) permute_stage1 ( ) ;
+
+
+ if ( 2*kt + 1 < m ) permute_stage2 ( ) ;
+
+ _pdblA = a ;
+ _pdblB = b ;
+
+ return 0 ;
+}
+
+/** **************************************
+Sous-Fonctions
+******************************************/
+
+
+
+/* this function only set the value of variable */
+static void preliminaryWork (void)
+{
+ s72 = -s72 ;
+ s120= -s120;
+ rad = -rad ;
+
+ kspan = ks ;
+ nn = nt -inc ;
+ jc = ks/n ;
+
+ /* sin , cos values are re-initialized each lim steps */
+
+ klim = 32*jc ;
+ i = 0;
+ jf = 0 ;
+
+ if ( kt > 0 ) maxf = max ( nfac[kt-1] , nfac[m-kt-1] );
+ else maxf = nfac[m-kt-1] ;
+
+}
+
+
+
+/*40*/
+/* this function is call as many time as dfftbi has determined factor for the size of the input vector
+ each time we call a transform function for each kind of factor , we begin by the smallest
+ factor are stored in nfac
+ */
+
+static int factorTransform (void)
+{
+
+ int retVal = 42;
+
+ dr = 8 * (double)jc/(double)kspan ;
+ cd = 2 * sin(0.5*dr*rad)*sin(0.5*dr*rad);
+ sd = sin(dr*rad) ;
+ kk = 1 ;
+ i++ ;
+
+
+
+
+switch ( nfac[i-1] )
+ {
+ case 2 :
+ /*transform for factor of 2 (including rotation factor)*/
+
+ retVal = pre_fOf2Trans() ;
+ if ( retVal == 0 ) factorOf2Transform () ;
+
+ break ;
+
+ case 4 :
+
+ kspnn = kspan ;
+ kspan = kspan >> 2 ; /*kspan /= 4 */
+
+ retVal = factorOf4Transform () ;
+ break ;
+
+ case 3 :
+
+ k = nfac[i-1] ;
+ kspnn = kspan ;
+ kspan = kspan / k ;
+
+ factorOf3Transform ( ) ;
+ break ;
+
+ case 5 :
+
+ k = nfac[i-1] ;
+ kspnn = kspan ;
+ kspan = kspan / k ;
+
+ factorOf5Transform ( ) ;
+ break ;
+
+ default :
+
+ k = nfac[i-1] ;
+ kspnn = kspan ;
+ kspan = kspan / k ;
+
+ if ( nfac[i-1] != jf) preFOtherTransform ( ) ;
+
+ factorOfOtherTransform ( ) ;
+ break ;
+ }
+
+
+
+ if ( retVal == 42 )
+ {
+ if ( i != m) retVal = mulByRotationFactor ( ) ;
+ else retVal = 1 ;
+ }
+
+ if ( retVal == 1 ) return 1 ; /*goto permute */
+ else return 0 ; /*goto factor_transform => once again*/
+
+}
+
+/* permutation for square factor of n */
+static void permute_stage1 (void)
+{
+
+ int retVal = 1 ;
+
+ pre_sqFactor2NormlOrder () ;
+
+ if ( n == ntot )
+ /*permutation for single-variate transform (optional code)*/
+ while ( retVal == 1)
+ {
+ single_sqFactor2NormlOrder () ;
+ retVal = post_sqFactor2NormlOrder () ;
+ }
+ else
+ /*permutation for multivariate transform*/
+ while ( retVal == 1) retVal = multi_sqFactor2NormlOrder ();
+
+}
+
+static void permute_stage2 (void)
+{
+ kspnn = np[kt] ;
+
+ /*permutation for square-free facotrs of n */
+ nonSqFactor2NormOrder () ;
+
+ /*determine the permutation cycles of length greater than 1*/
+ detPermutCycles ();
+
+ j = k3 + 1;
+ nt -= kspnn ;
+ i = nt - inc + 1 ;
+ while ( nt >= 0 )
+ {
+ reorderMatrix ( ) ;
+
+ j = k3 + 1 ;
+ nt -= kspnn ;
+ i = nt - inc + 1 ;
+ }
+}
+
+/*****************************************
+Sous-Sous-Fonctions
+******************************************/
+
+
+
+
+
+static int pre_fOf2Trans (void)
+{
+ kspan /= 2;
+ k1 = kspan + 2 ;
+ /*50*/
+ do{
+ do{
+ k2 = kk + kspan ;
+ ak = a[k2-1] ;
+ bk = b[k2-1] ;
+
+ a[k2-1] = a[kk-1] - ak;
+ b[k2-1] = b[kk-1] - bk;
+
+ a[kk-1] = a[kk-1] + ak;
+ b[kk-1] = b[kk-1] + bk;
+
+ kk = k2 + kspan ;
+ }while (kk <= nn);
+
+ kk -= nn ;
+ }while (kk <= jc);
+
+
+ if ( kk > kspan ) return 1 ; /*goto350*/
+ else return 0 ; /*goto60*/
+
+
+}
+
+
+
+static int factorOf2Transform (void)
+{
+ do /*60*/ {/*while ( kk <= jc*2 )*/
+ c1 = 1 - cd ;
+ s1 = sd ;
+ mm = min( k1/2 , klim);
+
+ do/* do 80 */ {/*while ( kk <= mm || ( kk > mm && kk < k2 ))*/
+ do {/*while(kk > k2) */
+ do { /*while ( kk < nt )*/
+ k2 = kk + kspan;
+
+ ak = a[kk-1] - a[k2-1];
+ bk = b[kk-1] - b[k2-1];
+
+ a[kk-1] = a[kk-1] + a[k2-1];
+ b[kk-1] = b[kk-1] + b[k2-1];
+
+ a[k2-1] = c1*ak - s1*bk;
+ b[k2-1] = s1*ak + c1*bk;
+
+ kk = k2 + kspan;
+ }while ( kk < nt );
+
+ k2 = kk - nt;
+ c1 = -c1;
+ kk = k1 - k2;
+
+
+ }while (kk > k2);
+
+ kk += jc;
+
+ if ( kk <= mm ) /* 70 */
+ {
+ ak = c1 - ( cd*c1+sd*s1) ;
+ s1 += (sd*c1-cd*s1) ;
+ /*c the following three statements compensate for truncation
+ c error. if rounded arithmetic is used, substitute
+ c c1=ak*/
+ c1 = 0.5/(ak*ak+s1*s1) + 0.5 ;
+ s1 *= c1 ;
+ c1 *= ak ;
+ }
+ else {
+ if ( kk < k2 ) /*90*/ {
+ s1 = dr*rad*((double)(kk-1)/(double)jc);
+ c1 = cos(s1) ;
+ s1 = sin(s1) ;
+ mm = min(k1/2,mm+klim);
+ }
+ }
+
+ } while ( kk <= mm || ( kk > mm && kk < k2 ));
+
+ k1 += (inc+inc) ;
+ kk = (k1-kspan)/2 + jc;
+
+ } while ( kk <= jc*2 );
+
+
+ return 0 ; /*goto40*/
+}
+
+
+/* this one is just an optimisation of the factor of 2 transform , we compute more things each turn */
+
+static int factorOf4Transform (void)
+{
+ int return_value = 0 ;
+
+ /*120*/
+ do
+ {
+ c1 = 1 ;
+ s1 = 0 ;
+
+ mm = min ( kspan , klim ) ;
+
+ do
+ {
+ f4t_150 () ;
+ return_value = f4t_170 () ;
+ } while ( return_value == 0 );
+
+ kk += ( inc - kspan ) ;
+ } while ( kk <= jc ) ;
+
+
+
+ if ( kspan == jc )
+ return 1 ; /*goto350*/
+ else
+ return 0 ;/*goto40*/
+
+
+}
+
+/*this function and the following are just here for conveniance , they just do fourier transformation for factor of 4
+ but as the code was a bit long in factorof4transform , we've created two sub-functions */
+
+static void f4t_150 (void)
+{
+
+ do{
+ k1 = kk + kspan ;
+ k2 = k1 + kspan ;
+ k3 = k2 + kspan ;
+
+ akp = a[kk-1] + a[k2-1] ;
+ akm = a[kk-1] - a[k2-1] ;
+
+ ajp = a[k1-1] + a[k3-1] ;
+ ajm = a[k1-1] - a[k3-1] ;
+
+ a[kk-1] = akp + ajp ;
+ ajp = akp - ajp ;
+
+ bkp = b[kk-1] + b[k2-1] ;
+ bkm = b[kk-1] - b[k2-1] ;
+
+ bjp = b[k1-1] + b[k3-1] ;
+ bjm = b[k1-1] - b[k3-1] ;
+
+ b[kk-1] = bkp + bjp ;
+ bjp = bkp - bjp ;
+
+ akp = akm + bjm ;
+ akm = akm - bjm ;
+
+ bkp = bkm - ajm ;
+ bkm = bkm + ajm ;
+
+ if ( s1 == 0 )/*190*/
+ {
+ a[k1-1] = akp ;
+ a[k2-1] = ajp ;
+ a[k3-1] = akm ;
+
+ b[k1-1] = bkp ;
+ b[k2-1] = bjp ;
+ b[k3-1] = bkm ;
+
+
+ }
+ else /*160*/
+ {
+
+ a[k1-1] = akp*c1 - bkp*s1 ;
+ a[k2-1] = ajp*c2 - bjp*s2 ;
+ a[k3-1] = akm*c3 - bkm*s3 ;
+
+ a[k1-1] = bkp*c1 + akp*s1 ;
+ a[k2-1] = bjp*c2 + ajp*s2 ;
+ a[k3-1] = bkm*c3 + akm*s3 ;
+ }
+ kk=k3+kspan;
+ }while ( kk <= nt ) ;
+
+
+}
+
+static int f4t_170 (void)
+{
+ kk += ( jc - nt ) ;
+
+ if ( kk <= mm )
+ {
+ c2 = c1 - (cd*c1 + sd*s1);
+ s1 = s1 + (sd*c1 - cd*s1);
+
+ /*
+ the following three statements compensate for truncation
+ error. if rounded arithmetic is used, substitute
+ c1=c2
+ */
+
+ c1 = 0.5/(c2*c2+s1*s1) + 0.5 ;
+ s1 *= c1 ;
+ c1 *= c2 ;
+
+ /*140*/
+
+ c2 = c1*c1 - s1*s1 ;
+ s2 = c1*s1*2 ;
+ c3 = c2*c1 - s2*s1 ;
+ s3 = c2*s1 + s2*c1 ;
+
+
+ return 0 ;
+
+ }
+ else
+ {
+ if ( kk <= kspan )
+ {
+ s1 = dr*rad * (kk-1)/jc ;
+ c1 = cos (s1) ;
+ s1 = sin (s1) ;
+ mm = min ( kspan , mm + klim );
+
+ /*140*/
+
+ c2 = c1*c1 - s1*s1 ;
+ s2 = c1*s1*2 ;
+ c3 = c2*c1 - s2*s1 ;
+ s3 = c2*s1 + s2*c1 ;
+
+ return 0 ;
+ }
+ }
+
+ return 1 ;
+}
+
+
+
+
+static void factorOf3Transform (void)
+{
+ do{
+ do{
+ k1 = kk + kspan ;
+ k2 = k1 + kspan ;
+
+ ak = a[kk-1] ;
+ bk = b[kk-1] ;
+
+ aj = a[k1-1] + a[k2-1] ;
+ bj = b[k1-1] + b[k2-1] ;
+
+ a[kk-1] = ak + aj ;
+ b[kk-1] = bk + bj ;
+
+ ak = -0.5*aj + ak ;
+ bk = -0.5*bj + bk ;
+
+ aj = (a[k1-1] - a[k2-1])*s120 ;
+ bj = (b[k1-1] - b[k2-1])*s120 ;
+
+ a[k1-1] = ak - bj ;
+ b[k1-1] = bk + aj ;
+ a[k2-1] = ak + bj ;
+ b[k2-1] = bk - aj ;
+
+ kk = k2 + kspan ;
+ } while (kk < nn);
+
+ kk -= nn ;
+ }while (kk <= kspan);
+
+}
+
+static void factorOf5Transform (void)
+{
+ c2 = c72*c72 - s72 *s72 ;
+ s2 = 2 * c72*s72;
+
+ do{
+ do{
+ k1 = kk + kspan ;
+ k2 = k1 + kspan ;
+ k3 = k2 + kspan ;
+ k4 = k3 + kspan ;
+
+
+
+ akp = a[k1-1] + a[k4-1] ;
+ akm = a[k1-1] - a[k4-1] ;
+
+ bkp = b[k1-1] + b[k4-1] ;
+ bkm = b[k1-1] - b[k4-1] ;
+
+ ajp = a[k2-1] + a[k3-1] ;
+ ajm = a[k2-1] - a[k3-1] ;
+
+ bjp = b[k2-1] + b[k3-1] ;
+ bjm = b[k2-1] - b[k3-1] ;
+
+ aa = a[kk-1] ;
+ bb = b[kk-1] ;
+
+ a[kk-1] = aa + akp + ajp;
+ b[kk-1] = bb + bkp + bjp;
+
+ ak = akp*c72 + ajp*c2 + aa ;
+ bk = bkp*c72 + bjp*c2 + bb ;
+
+ aj = akm*s72 + ajm*s2 ;
+ bj = bkm*s72 + bjm*s2 ;
+
+ a[k1-1] = ak - bj ;
+ a[k4-1] = ak + bj ;
+ b[k1-1] = bk + aj ;
+ b[k4-1] = bk - aj ;
+
+ ak = akp*c2 + ajp*c72 + aa ;
+ bk = bkp*c2 + bjp*c72 + bb ;
+
+ aj = akm*s2 - ajm*s72 ;
+
+ bj = bkm*s2 - bjm*s72 ;
+
+ a[k2-1] = ak - bj ;
+ a[k3-1] = ak + bj ;
+ b[k2-1] = bk + aj ;
+ b[k3-1] = bk - aj ;
+
+ kk = k4 + kspan;
+ }while (kk < nn);
+
+ kk -= nn ;
+ }while (kk <= kspan);
+}
+
+/* this function is the general case of non factor of 2 factor , the factorof3transform and factorof5trandform are just
+special case of this one */
+
+
+static void preFOtherTransform (void)
+{
+
+ jf = k ;
+ s1 = (rad*8)/k ;
+ c1 = cos (s1) ;
+ s1 = sin (s1) ;
+ ck[jf-1] = 1 ;
+ sk[jf-1] = 0 ;
+ j = 1 ;
+
+ do
+ {
+ ck[j-1] = ck[k-1] * c1 + sk[k-1]*s1 ;
+ sk[j-1] = ck[k-1] * s1 - sk[k-1]*c1 ;
+
+ k -- ;
+
+ ck[k-1] = ck[j-1] ;
+ sk[k-1] = - sk[j-1] ;
+
+ j++ ;
+
+ }while ( j < k );
+
+}
+
+static void factorOfOtherTransform (void)
+{
+int ktemp = 0 ;
+
+do
+ {
+ k1 = kk ;
+ k2 = kk + kspnn ;
+
+ aa = a[kk-1] ;
+ bb = b[kk-1] ;
+
+ ak = aa ;
+ bk = bb ;
+ j = 1 ;
+ k1 += kspan ;
+
+ do
+ {
+ k2 -= kspan ;
+ j++ ;
+
+ wt[j-1] = a[k1-1] + a[k2-1] ;
+ ak = wt[j-1] + ak ;
+
+ bt[j-1] = b[k1-1] + b[k2-1] ;
+ bk = bt[j-1] + bk ;
+ j++ ;
+
+ wt[j-1] = a[k1-1] - a[k2-1] ;
+ bt[j-1] = b[k1-1] - b[k2-1] ;
+
+ k1 += kspan;
+ }while ( k1 < k2 ) ;
+
+ a[kk-1] = ak ;
+ b[kk-1] = bk ;
+
+ k1 = kk ;
+ k2 = kk + kspnn ;
+ j = 1 ;
+
+ do
+ {
+ k1 += kspan ;
+ k2 -= kspan ;
+ jj = j ;
+ ak = aa ;
+ bk = bb ;
+ aj = 0 ;
+ bj = 0 ;
+ k = 1 ;
+
+ do
+ {
+ k++ ;
+ ak += ( wt[k-1] * ck[jj-1] ) ;
+ bk += ( bt[k-1] * ck[jj-1] ) ;
+
+ k++ ;
+ aj += (wt[k-1] * sk[jj-1]) ;
+ bj += (bt[k-1] * sk[jj-1]) ;
+ jj += j ;
+
+ if ( jj > jf )
+ jj -= jf ;
+ } while ( k < jf ) ;
+
+ k = jf - j ;
+ a[k1-1] = ak - bj ;
+ b[k1-1] = bk + aj ;
+ a[k2-1] = ak + bj ;
+ b[k2-1] = bk - aj ;
+
+ j++ ;
+
+ }while ( j < k ) ;
+
+
+
+
+
+ kk += kspnn ;
+ ktemp = kk ;
+
+ if ( kk > nn )
+ {
+ kk -= nn;
+ }
+
+}while ( ktemp <= nn || (kk <= kspan && ( ktemp > nn)) );
+}
+
+
+
+
+static int mulByRotationFactor (void )
+{
+ int ktemp = 0 ;
+
+ if ( i != m )
+ {
+ kk = jc + 1 ;
+
+ /*300*/
+ do
+ {
+ c2 = 1 - cd ;
+ s1 = sd ;
+
+ mm = min ( kspan , klim ) ;
+
+ /*320 */
+ do
+ {
+
+ c1 = c2 ;
+ s2 = s1 ;
+ kk += kspan ;
+
+ do
+ {
+
+ ak = a[kk-1] ;
+ a[kk-1] = c2*ak - s2*b[kk-1] ;
+ b[kk-1] = s2*ak + c2*b[kk-1] ;
+
+ kk += kspnn ;
+ ktemp = kk ;
+
+
+ if ( kk > nt )
+ {
+ ak = s1*s2 ;
+ s2 = s1*c2 + s2*c1 ;
+ c2 = c1*c2 - ak ;
+ kk += (kspan - nt ) ;
+
+
+
+ }
+
+ }while (ktemp <= nt || ( kk <= kspnn && ktemp > nt )) ;
+
+ kk += ( jc - kspnn );
+
+
+ if ( kk <= mm )
+ {
+
+ /* 310*/
+ c2 = c1 - ( cd*c1 + sd*s1 ) ;
+ s1 += (sd*c1 - cd*s1 ) ;
+
+ /*
+ the following three statements compensate for truncation
+ error. if rounded arithmetic is used, substitute
+ c1=c2
+ */
+
+ c1 = 0.5/(c2*c2+s1*s1) + 0.5 ;
+ s1 *= c1 ;
+ c2 *= c1 ;
+ }
+ else
+ {
+ if ( kk <= kspan )
+ {
+
+ s1 = dr*rad * (kk-1)/jc ;
+ c2 = cos (s1) ;
+ s1 = sin (s1) ;
+ mm = min ( kspan , mm + klim );
+ }
+ }
+
+ }while ( kk <= mm ||( kk <= kspan && kk > mm ) ) ;
+
+ kk += (jc + inc -kspan );
+
+
+ }while ( kk <= jc+jc);
+
+
+ return 0 ; /* goto40 */
+ }
+
+ return 1 ; /* goto350*/
+}
+
+
+
+
+static void pre_sqFactor2NormlOrder (void)
+{
+
+ k = kt + kt + 1 ;
+
+ if ( m < k )
+ k -- ;
+
+ j = 1 ;
+ np[k] = jc ;
+
+ do
+ {
+ np[j] = np[j-1]/nfac[j-1] ;
+ np[k-1] = np[k]*nfac[j-1] ;
+
+ j++ ;
+ k-- ;
+ }while ( j < k ) ;
+
+ k3 = np[k] ;
+ kspan = np[1] ;
+ kk = jc + 1 ;
+ k2 = kspan + 1 ;
+ j = 1;
+
+
+}
+
+static int post_sqFactor2NormlOrder (void)
+{
+
+ do
+ {
+ do
+ {
+ k2 -= np[j-1] ;
+ j++ ;
+ k2 += np[j] ;
+
+ } while ( k2 > np[j-1]);
+
+ j = 1 ;
+
+/* 390 */
+ do
+ {
+ if ( kk < k2 )
+ {
+
+
+ return 1 ;
+ }
+ else
+ {
+ kk += inc ;
+ k2 += kspan ;
+ }
+ }while( k2 < ks );
+
+ }while ( kk < ks ) ;
+
+ jc = k3 ;
+
+ return 0;
+}
+
+
+/* appeler cetter fonction dans un do while valeur_retour != 1)*/
+static void single_sqFactor2NormlOrder (void)
+{
+
+
+ do
+ {
+
+ ak = a[kk-1] ;
+ a[kk-1] = a[k2-1] ;
+ a[k2-1] = ak ;
+
+ bk = b[kk-1] ;
+ b[kk-1] = b[k2-1] ;
+ b[k2-1] = bk ;
+
+ kk += inc ;
+ k2 += kspan ;
+ } while ( k2 < ks );
+
+ /*380*/
+}
+
+/*idem que single_ */
+static int multi_sqFactor2NormlOrder (void)
+{
+
+
+
+ k = kk + jc ;
+
+ do /*410*/
+ {
+ ak = a[kk-1] ;
+ a[kk-1] = a[k2-1] ;
+ a[k2-1] = ak ;
+ bk = b[kk-1] ;
+ b[kk-1] = b[k2-1] ;
+ b[k2-1] = bk ;
+ kk += inc ;
+ k2 += kspan ;
+ } while ( kk < k );
+
+ kk += (ks - jc ) ;
+ k2 += (ks - jc ) ;
+
+ if ( kk < nt )
+ return 1 ;
+
+ k2 += ( kspan - nt );
+ kk += ( jc - nt );
+
+ if ( k2 < ks )
+ {
+
+ return 1 ;
+ }
+ if( post_sqFactor2NormlOrder ( ) == 1 )
+ {
+
+ return 1 ;
+ }
+ jc = k3 ;
+
+ return 0;
+
+}
+
+
+
+static void nonSqFactor2NormOrder (void)
+{
+
+ j = m - kt ;
+ nfac[j] = 1 ;
+
+
+
+ do
+ {
+ nfac[j-1] *= nfac[j] ;
+
+ j-- ;
+
+
+ }while ( j != kt ) ;
+
+ kt ++ ;
+ nn = nfac[kt-1] - 1;
+
+ jj = 0 ;
+ j = 0;
+
+ /*480*/
+
+ k2 = nfac[kt-1] ;
+ k = kt + 1 ;
+ kk = nfac[k-1] ;
+ j ++ ;
+
+ while ( j <= nn )
+ {
+ jj += kk ;
+
+
+ while ( jj >= k2 )
+ {
+ jj -= k2 ;
+ k2 = kk ;
+ k++ ;
+ kk = nfac[k-1] ;
+
+ jj += kk ;
+
+
+ }
+
+ np[j-1] = jj ;
+ k2 = nfac[kt-1] ;
+ k = kt + 1 ;
+ kk = nfac[k-1] ;
+ j ++ ;
+
+ }
+
+ j = 0 ;
+
+ return ;
+}
+
+/* here we determine how many permutation cycles we need to do */
+static void detPermutCycles (void)
+{
+
+ do
+ {
+ do
+ {
+ j++ ;
+
+ kk = np[j-1] ;
+ }while ( kk < 0 ) ;
+
+
+ if ( kk != j )
+ {
+ do
+ {
+
+ k = kk ;
+ kk = np[k-1] ;
+ np[k-1] = -kk ;
+ }while ( kk != j ) ;
+ k3 = kk ;
+ }
+ else
+ np[j-1] = -j ;
+ }while ( j != nn );
+
+ maxf *= inc ;
+
+ return ;
+}
+
+static void reorderMatrix (void)
+{
+do
+ {
+ do
+ {
+ j-- ;
+
+ }while (np[j-1] < 0 ) ;
+
+ jj = jc ;
+
+ /*520*/
+ do
+ {
+ kspan = jj ;
+
+ if ( jj > maxf )
+ kspan = maxf ;
+
+ jj -= kspan ;
+ k = np [j-1];
+ kk = jc*k + i + jj ;
+ k1 = kk + kspan ;
+ k2 = 0 ;
+
+ do /*530*/
+ {
+ k2 ++ ;
+ wt[k2-1] = a[k1-1] ;
+ bt[k2-1] = b[k1-1] ;
+ k1 -= inc ;
+
+ }while ( k1 != kk );
+
+ do
+ {
+ k1 = kk + kspan ;
+ k2 = k1 - jc * (k + np[k-1]);
+ k = -np[k-1];
+
+
+ do
+ {
+ a[k1-1] = a[k2-1] ;
+ b[k1-1] = b[k2-1] ;
+
+ k1 -= inc ;
+ k2 -= inc ;
+
+ }while ( k1 != kk ) ;
+
+ kk = k2 ;
+
+ }while ( k != j );
+
+ k1 = kk +kspan ;
+ k2 = 0 ;
+ /*560*/
+
+ do
+ {
+ k2 ++ ;
+ a[k1-1] = wt[k2-1] ;
+ b[k1-1] = bt[k2-1] ;
+ k1 -= inc ;
+
+
+ }while ( k1 != kk ) ;
+
+ } while ( jj != 0 ) ;
+}while ( j != 1 ) ;
+
+ return ;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/fft/fft842.c b/2.3-1/src/c/signalProcessing/fft/fft842.c
new file mode 100644
index 00000000..162490fe
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/fft842.c
@@ -0,0 +1,173 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "fft_internal.h"
+
+
+
+/* get binary log of integer argument; exact if n a power of 2 */
+static int fastlog2( int n)
+{
+ int log = -1;
+ while(n) {
+ log++;
+ n >>= 1;
+ }
+ return(log);
+}
+
+
+
+void fft842 (doubleComplex* b, int size , int in)
+{
+ double fn;
+ doubleComplex temp ;
+
+ int L[16],L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15;
+ int j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14;
+ int i = 0, j, ij, ji, ij1, ji1;
+ int n2pow, n8pow, nthpo, ipass, nxtlt, lengt;
+
+ n2pow = fastlog2( size );
+ nthpo = size ;
+ fn = 1.0 / (double)nthpo;
+
+
+ if(in==FORWARD)
+ /* take conjugate */
+ for(i=0;i< size ;i++)
+ {
+ b[i] = DoubleComplex ( zreals( b[i]) , - zimags (b[i]));
+ }
+
+
+
+ n8pow = n2pow/3;
+
+ if(n8pow)
+ {
+ /* if the size if a factor of a power of 8 we call r8tx */
+ /* radix 8 iterations */
+ for(ipass=1;ipass<=n8pow;ipass++)
+ {
+ nxtlt = 0x1 << (n2pow - 3*ipass);
+ lengt = 8*nxtlt;
+
+
+
+ r8tx(nxtlt,nthpo,lengt,
+ b,b+nxtlt,b+2*nxtlt,
+ b+3*nxtlt,b+4*nxtlt,b+5*nxtlt,
+ b+6*nxtlt,b+7*nxtlt);
+
+
+ }
+ }
+
+/* if the size can be written this way 2^(3*n + 1) , then we call the radix 2 function
+ if can be written this way 2^(3*n + 1) the we call the radix 4 function */
+
+ if(n2pow%3 == 1)
+ {
+ /* radix 2 iteration needed */
+ r2tx(nthpo,b,b+1);
+ }
+
+ if(n2pow%3 == 2)
+ {
+ /* radix 4 iteration needed */
+
+ r4tx(nthpo,b,b+1,b+2,b+3);
+ }
+
+
+
+ for(j=1;j<=15;j++)
+ {
+ L[j] = 1;
+ if(j-n2pow <= 0) L[j] = 0x1 << (n2pow + 1 - j);
+ }
+ /* this part can maybe be improved */
+
+ L15=L[1];L14=L[2];L13=L[3];L12=L[4];L11=L[5];L10=L[6];L9=L[7];
+ L8=L[8];L7=L[9];L6=L[10];L5=L[11];L4=L[12];L3=L[13];L2=L[14];L1=L[15];
+
+ ij = 1;
+
+/* all the following instruction is to unscramble the output */
+ for(j1=1;j1<=L1;j1++)
+ for(j2=j1;j2<=L2;j2+=L1)
+ for(j3=j2;j3<=L3;j3+=L2)
+ for(j4=j3;j4<=L4;j4+=L3)
+ for(j5=j4;j5<=L5;j5+=L4)
+ for(j6=j5;j6<=L6;j6+=L5)
+ for(j7=j6;j7<=L7;j7+=L6)
+ for(j8=j7;j8<=L8;j8+=L7)
+ for(j9=j8;j9<=L9;j9+=L8)
+ for(j10=j9;j10<=L10;j10+=L9)
+ for(j11=j10;j11<=L11;j11+=L10)
+ for(j12=j11;j12<=L12;j12+=L11)
+ for(j13=j12;j13<=L13;j13+=L12)
+ for(j14=j13;j14<=L14;j14+=L13)
+ for(ji=j14;ji<=L15;ji+=L14)
+
+ {
+ ij1 = ij-1;
+ ji1 = ji-1;
+
+ if(ij-ji<0)
+ {
+ temp = b[ij1];
+ b[ij1] = b[ji1];
+ b[ji1] = temp;
+
+ /*
+ r = b[ij1].re;
+ b[ij1].re = b[ji1].re;
+ b[ji1].re = r;
+ fi = b[ij1].im;
+ b[ij1].im = b[ji1].im;
+ b[ji1].im = fi;
+ */
+ }
+ ij++;
+ }
+
+ if(in==FORWARD) /* take conjugates & unscramble outputs */
+ for(i=0,j=size/2;j<size;i++,j++)
+ {
+ temp = DoubleComplex ( zreals ( b[j] ) ,- zimags( b[j] ));
+ b[j] = DoubleComplex ( zreals ( b[i] ) ,- zimags( b[i] ));
+ b[i] = DoubleComplex ( zreals ( temp ) , zimags( temp ));
+
+
+ /* r = b[j].re; fi = b[j].im;
+ b[j].re = b[i].re; b[j].im = -b[i].im;
+ b[i].re = r; b[i].im = -fi;
+ */
+ }
+
+
+
+/* this code is two fix a problem of result order which was different from what scilab give */
+ for ( i = 0 ; i < size /2 ; i++)
+ {
+ temp = b[i] ;
+ b[i] = b[i+(size/2)];
+ b[i+(size/2)]= temp ;
+
+
+
+ }
+
+
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/fft_internal.h b/2.3-1/src/c/signalProcessing/fft/fft_internal.h
new file mode 100644
index 00000000..70377bf4
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/fft_internal.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __FFT_INTERNAL_H__
+#define __FFT_INTERNAL_H__
+
+
+#include "addition.h"
+#include "subtraction.h"
+
+#define FORWARD 0
+#define INVERSE 1
+void dfft2 ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr);
+
+
+
+void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr );
+
+void fft842 (doubleComplex* b, int size , int in);
+
+void r2tx(int nthpo, doubleComplex* c0, doubleComplex* c1);
+void r4tx( int nthpo, doubleComplex* c0, doubleComplex* c1, doubleComplex* c2, doubleComplex* c3);
+void r8tx ( int nxtlt,int nthpo,int lengt,
+ doubleComplex* cc0,doubleComplex* cc1,doubleComplex* cc2,doubleComplex* cc3,
+ doubleComplex* cc4,doubleComplex* cc5,doubleComplex* cc6,doubleComplex* cc7);
+
+int dfftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan,
+ int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
+ double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac);
+
+#endif /* !__FFT_INTERNAL_H__ */
diff --git a/2.3-1/src/c/signalProcessing/fft/r2tx.c b/2.3-1/src/c/signalProcessing/fft/r2tx.c
new file mode 100644
index 00000000..fd459291
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/r2tx.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "fft_internal.h"
+/*
+** radix 2 iteration subroutine
+*/
+void r2tx(int nthpo, doubleComplex* c0, doubleComplex* c1)
+{
+ int kk;
+ /* double *cr0, *ci0, *cr1, *ci1, r1, fi1;*/
+ doubleComplex temp ;
+
+/* cr0 = &(c0[0].re);
+ ci0 = &(c0[0].im);
+ cr1 = &(c1[0].re);
+ ci1 = &(c1[0].im);*/
+
+ for(kk=0;kk<nthpo;kk+=2)
+ {
+
+
+ temp = zadds ( c0[kk] , c1[kk] );
+ c1[kk] = zdiffs( c0[kk] , c1[kk] );
+ c0[kk] = DoubleComplex ( zreals ( temp ) , zimags( temp ));
+/*
+ r1 = cr0[kk] + cr1[kk];
+ cr1[kk] = cr0[kk] - cr1[kk];
+ cr0[kk] = r1;
+
+
+ fi1 = ci0[kk] + ci1[kk];
+ ci1[kk] = ci0[kk] - ci1[kk];
+ ci0[kk] = fi1;
+*/
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/r4tx.c b/2.3-1/src/c/signalProcessing/fft/r4tx.c
new file mode 100644
index 00000000..a6a94110
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/r4tx.c
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "fft_internal.h"
+
+
+
+/*
+** radix 4 iteration subroutine
+*/
+/* this function do in one turn the same computation that do radix 2 in two turns */
+void r4tx( int nthpo, doubleComplex* c0, doubleComplex* c1, doubleComplex* c2, doubleComplex* c3)
+{
+ int kk;
+ doubleComplex temp1 , temp2 , temp3 , temp4 ;
+
+ for(kk=0;kk<nthpo;kk+=4)
+ {
+ /* real and imag parts alternate */
+
+ /* this first step is strictly equivalent than calling radix 2
+ except that radix would have needed 2 turns to compute what radix4 do in one */
+ temp1 = zadds ( c0[kk] , c2[kk] ) ;
+ temp2 = zdiffs( c0[kk] , c2[kk] ) ;
+ temp3 = zadds ( c1[kk] , c3[kk] ) ;
+ temp4 = zdiffs( c1[kk] , c3[kk] ) ;
+
+
+ /* strictly equivalent than calling radix2 with the temporary vector , but here also , radix4 do it in one turn
+ instead of two */
+ c0[kk] = zadds ( temp1 , temp3 );
+ c1[kk] = zdiffs( temp1 , temp3 );
+
+
+ c2[kk] = DoubleComplex ( zreals ( temp2 ) - zimags( temp4 ) , zimags ( temp2 ) + zreals( temp4 ) );
+ c3[kk] = DoubleComplex ( zreals ( temp2 ) + zimags( temp4 ) , zimags ( temp2 ) - zreals( temp4 ) );
+
+
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/r8tx.c b/2.3-1/src/c/signalProcessing/fft/r8tx.c
new file mode 100644
index 00000000..44866ce6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/r8tx.c
@@ -0,0 +1,169 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "fft_internal.h"
+#include <math.h>
+
+
+
+/*
+** radix 8 iteration subroutine
+*/
+
+/* this function do in one turn the same computation that do radix 2 in three turns */
+
+void r8tx ( int nxtlt,int nthpo,int lengt,
+ doubleComplex* cc0,doubleComplex* cc1,doubleComplex* cc2,doubleComplex* cc3,
+ doubleComplex* cc4,doubleComplex* cc5,doubleComplex* cc6,doubleComplex* cc7)
+
+{
+
+
+ int j , kk;
+ double dblP7 = 1 / sqrt(2.0) ;
+ double dblPi2 = 8 * atan(1.0);
+
+ double scale, arg;
+ double c1,c2,c3,c4,c5,c6,c7;
+ double s1,s2,s3,s4,s5,s6,s7;
+
+ doubleComplex Atemp0,Atemp1,Atemp2,Atemp3,Atemp4,Atemp5,Atemp6,Atemp7;
+ doubleComplex Btemp0,Btemp1,Btemp2,Btemp3,Btemp4,Btemp5,Btemp6,Btemp7;
+
+ doubleComplex temp ;
+
+
+ scale = dblPi2/lengt;
+
+
+ for(j=0;j<nxtlt;j++)
+ {
+
+ arg = j*scale;
+ c1 = cos(arg);
+ s1 = sin(arg);
+ c2 = c1*c1 - s1*s1;
+ s2 = c1*s1 + c1*s1;
+ c3 = c1*c2 - s1*s2;
+ s3 = c2*s1 + s2*c1;
+ c4 = c2*c2 - s2*s2;
+ s4 = c2*s2 + c2*s2;
+ c5 = c2*c3 - s2*s3;
+ s5 = c3*s2 + s3*c2;
+ c6 = c3*c3 - s3*s3;
+ s6 = c3*s3 + c3*s3;
+ c7 = c3*c4 - s3*s4;
+ s7 = c4*s3 + s4*c3;
+
+ for(kk=j;kk<nthpo;kk+=lengt)
+ {
+ /* (k-1)*2*/ /* index by twos; re & im alternate */
+
+
+ /* first turn the same as calling radix 2 with the input vector */
+ /* but radix2 will have do it in three turn , radix8 do it in one */
+ Atemp0 = zadds ( cc0[kk] , cc4[kk] ) ;
+ Atemp1 = zadds ( cc1[kk] , cc5[kk] ) ;
+ Atemp2 = zadds ( cc2[kk] , cc6[kk] ) ;
+ Atemp3 = zadds ( cc3[kk] , cc7[kk] ) ;
+
+
+ Atemp4 = zdiffs ( cc0[kk] , cc4[kk] ) ;
+ Atemp5 = zdiffs ( cc1[kk] , cc5[kk] ) ;
+ Atemp6 = zdiffs ( cc2[kk] , cc6[kk] ) ;
+ Atemp7 = zdiffs ( cc3[kk] , cc7[kk] ) ;
+
+ /* second turn the same as calling radix 2 with the vector transformed by a previous call of radix2 */
+ /* the same here , three turns in one */
+ Btemp0 = zadds ( Atemp0 , Atemp2 ) ;
+ Btemp1 = zadds ( Atemp1 , Atemp3 ) ;
+ Btemp2 = zdiffs ( Atemp0 , Atemp2 ) ;
+ Btemp3 = zdiffs ( Atemp1 , Atemp3 ) ;
+
+ Btemp4 = DoubleComplex ( zreals ( Atemp4 ) - zimags( Atemp6 ) , zimags ( Atemp4 ) + zreals( Atemp6 ) );
+ Btemp5 = DoubleComplex ( zreals ( Atemp5 ) - zimags( Atemp7 ) , zimags ( Atemp5 ) + zreals( Atemp7 ) );
+ Btemp6 = DoubleComplex ( zreals ( Atemp4 ) + zimags( Atemp6 ) , zimags ( Atemp4 ) - zreals( Atemp6 ) );
+ Btemp7 = DoubleComplex ( zreals ( Atemp5 ) + zimags( Atemp7 ) , zimags ( Atemp5 ) - zreals( Atemp7 ) );
+
+ /*third turn the same as calling radix 2 with the vector transformed by two previous call of radix2 */
+ cc0[kk] = zadds ( Btemp0 , Btemp1 );
+
+
+
+ /* if we are not in the first turn */
+
+ if(j>0)
+ {
+ cc1[kk] = DoubleComplex ( (c4 * (zreals(Btemp0) - zreals(Btemp1))) - (s4 * (zimags(Btemp0) - zimags(Btemp1))),
+ c4 * (zimags(Btemp0) - zimags(Btemp1)) + s4 * (zreals(Btemp0) - zreals(Btemp1)));
+
+ cc2[kk] = DoubleComplex ( c2 * (zreals(Btemp2) - zimags(Btemp3)) - s2 * (zimags(Btemp2) + zreals(Btemp3)) ,
+ c2 * (zimags(Btemp2) + zreals(Btemp3)) + s2 * (zreals(Btemp2) - zimags(Btemp3)));
+
+ cc3[kk] = DoubleComplex ( c6 * (zreals(Btemp2) + zimags(Btemp3)) - s6 * (zimags(Btemp2) - zreals(Btemp3)) ,
+ c6 * (zimags(Btemp2) - zreals(Btemp3)) + s6 * (zreals(Btemp2) + zimags(Btemp3)));
+
+
+ temp = DoubleComplex ( dblP7*(zreals ( Btemp5 ) - zimags( Btemp5 )) ,
+ dblP7*(zreals ( Btemp5 ) + zimags( Btemp5 )) );
+
+ cc4[kk] = DoubleComplex ( c1 * (zreals (Btemp4) + zreals(temp)) - s1 * (zimags (Btemp4) + zimags(temp)) ,
+ c1 * (zimags (Btemp4) + zimags(temp)) + s1 * (zreals (Btemp4) + zreals(temp)));
+ cc5[kk] = DoubleComplex ( c5 * (zreals (Btemp4) - zreals(temp)) - s5 * (zimags (Btemp4) - zimags(temp)) ,
+ c5 * (zimags (Btemp4) - zimags(temp)) + s5 * (zreals (Btemp4) - zreals(temp)));
+
+
+ temp = DoubleComplex ( - dblP7*(zreals ( Btemp7 ) + zimags( Btemp7 )) ,
+ dblP7*(zreals ( Btemp7 ) - zimags( Btemp7 )) );
+
+ cc6[kk] = DoubleComplex ( c3 * (zreals (Btemp6) + zreals(temp)) - s3 * (zimags (Btemp6) + zimags(temp)) ,
+ c3 * (zimags (Btemp6) + zimags(temp)) + s3 * (zreals (Btemp6) + zreals(temp)));
+ cc7[kk] = DoubleComplex ( c7 * (zreals (Btemp6) - zreals(temp)) - s7 * (zimags (Btemp6) - zimags(temp)) ,
+ c7 * (zimags (Btemp6) - zimags(temp)) + s7 * (zreals (Btemp6) - zreals(temp)));
+
+
+
+
+ }
+ else
+ {
+ cc1[kk] = zdiffs ( Btemp0 , Btemp1 );
+
+ cc2[kk] = DoubleComplex ( zreals ( Btemp2 ) - zimags( Btemp3 ) ,
+ zimags ( Btemp2 ) + zreals( Btemp3 ) );
+
+
+ cc3[kk] = DoubleComplex ( zreals ( Btemp2 ) + zimags( Btemp3 ) ,
+ zimags ( Btemp2 ) - zreals( Btemp3 ) );
+
+
+ temp = DoubleComplex ( dblP7*(zreals ( Btemp5 ) - zimags( Btemp5 )) ,
+ dblP7*(zreals ( Btemp5 ) + zimags( Btemp5 )) );
+
+ cc4[kk] = zadds ( Btemp4 , temp );
+ cc5[kk] = zdiffs ( Btemp4 , temp );
+
+ temp = DoubleComplex ( - dblP7*(zreals ( Btemp7 ) + zimags( Btemp7 )) ,
+ dblP7*(zreals ( Btemp7 ) - zimags( Btemp7 )) );
+
+ cc6[kk] = zadds ( Btemp6 , temp );
+ cc7[kk] = zdiffs ( Btemp6 , temp );
+
+
+ }
+
+ }
+ }
+
+
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/sfftma.c b/2.3-1/src/c/signalProcessing/fft/sfftma.c
new file mode 100644
index 00000000..d4e145b5
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/sfftma.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * 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 <stdlib.h>
+#include "fft.h"
+#include "zeros.h"
+
+void sfftma ( float* in , int rows, int cols, float* out){
+ float* ZEROS;
+ floatComplex* inCpx;
+ floatComplex* outCpx;
+
+ ZEROS = (float*) malloc((unsigned int)(rows*cols)*sizeof(float));
+ outCpx = (floatComplex*) malloc((unsigned int)(rows*cols)*sizeof(floatComplex));
+
+ szerosa(ZEROS,rows,cols);
+ inCpx=FloatComplexMatrix(in,ZEROS,rows*cols);
+
+ cfftma(inCpx,rows,cols,outCpx);
+
+ creala(outCpx, rows*cols, out);
+
+ free(ZEROS);
+ free(outCpx);
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/testDoubleFft.c b/2.3-1/src/c/signalProcessing/fft/testDoubleFft.c
new file mode 100644
index 00000000..68bc431b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/testDoubleFft.c
@@ -0,0 +1,470 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "fft.h"
+
+
+#define ROW 1
+#define COLS2 2
+#define COLS3 3
+#define COLS4 4
+#define COLS5 5
+#define COLS6 6
+#define COLS7 7
+#define COLS8 8
+#define COLS9 9
+#define COLS10 10
+#define COLS11 11
+#define COLS12 12
+#define COLS13 13
+#define COLS14 14
+#define COLS15 15
+#define COLS16 16
+#define COLS32 32
+
+#define ZREAL_IN2 { 0.00022113462910056 , 0.33032709173858166 }
+#define ZIMAG_IN2 { 0.66538110421970487 , 0.62839178834110498 }
+
+#define ZREAL_IN3 { 2.48206677380949259, 0.43537130765616894, 0.97385666053742170}
+#define ZIMAG_IN3 { 2.14807060454040766,- 0.78285905346274376, 0.42632796149700880}
+
+
+#define ZREAL_IN4 { 0.84974523587152362, 0.68573101982474327, 0.87821648130193353, 0.06837403681129217}
+#define ZIMAG_IN4 { 0.56084860628470778, 0.66235693730413914, 0.72635067673400044, 0.19851438421756029}
+
+#define ZREAL_IN5 { 0.84974523587152362, 0.68573101982474327, 0.87821648130193353, 0.06837403681129217,\
+ 0.65251349471509457}
+#define ZIMAG_IN5 { 0.56084860628470778, 0.66235693730413914, 0.72635067673400044, 0.19851438421756029,\
+ 0.56642488157376647}
+
+#define ZREAL_IN6 { 0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+ 0.65251349471509457, 0.30760907428339124 }
+#define ZIMAG_IN6 { 0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+ 0.56642488157376647, 0.59350947011262178 }
+
+#define ZREAL_IN7 { 0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+ 0.65251349471509457, 0.88338878145441413, 0.30760907428339124 }
+#define ZIMAG_IN7 { 0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+ 0.40948254754766822, 0.56642488157376647, 0.59350947011262178 }
+
+
+
+#define ZREAL_IN8 { 0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+ 0.88338878145441413, 0.65251349471509457, 0.30760907428339124, 0.93296162132173777 }
+#define ZIMAG_IN8 { 0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+ 0.56642488157376647, 0.48264719732105732, 0.33217189135029912, 0.59350947011262178}
+
+
+#define ZREAL_IN9 { 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+ 0.43685875833034515}
+#define ZIMAG_IN9 { 0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+ 0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+ 0.68568959552794695}
+
+
+#define ZREAL_IN10 { 0.21646326314657927, 0.65251349471509457, 0.63257448654621840, 0.31264199689030647,\
+ 0.93296162132173777, 0.31264199689030647, 0.48185089323669672, 0.48264719732105732,\
+ 0.2922266637906432 , 0.48264719732105732 }
+#define ZIMAG_IN10 { 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.11383596854284406, 0.19983377400785685, 0.56186607433483005, 0.58961773291230202,\
+ 0.23122371966019273, 0.21646326314657927}
+/*
+#define ZREAL_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+
+
+#define ZIMAG_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+*/
+
+
+
+
+#define ZREAL_IN11 {0.49934938363730907,0.26385784195736051,0.52535630855709314,0.53762298030778766,\
+ 0.11999255046248436,0.2256303490139544 ,0.62740930821746588,0.76084325974807143,\
+ 0.04855662025511265,0.67239497276023030,0.20171726960688829 }
+
+#define ZIMAG_IN11 {0.39115739194676280,0.83003165572881699,0.58787201577797532,0.48291792999953032,\
+ 0.22328650346025825,0.84008856676518917,0.12059959070757031,0.28553641680628061,\
+ 0.86075146449729800,0.84941016510128975,0.52570608118548989}
+
+
+#define ZREAL_IN12 {0.75604385416954756,0.00022113462910056,0.33032709173858166,0.66538110421970487,\
+ 0.62839178834110498,0.84974523587152362,0.68573101982474327,0.87821648130193353,\
+ 0.06837403681129217,0.56084860628470778,0.66235693730413914,0.72635067673400044}
+
+#define ZIMAG_IN12 {0.19851438421756029,0.54425731627270579,0.23207478970289230,0.23122371966019273,\
+ 0.21646326314657927,0.88338878145441413,0.65251349471509457,0.30760907428339124,\
+ 0.93296162132173777,0.21460078610107303,0.31264199689030647,0.36163610080257058}
+
+
+#define ZREAL_IN13 {0.2922266637906432 ,0.56642488157376647,0.48264719732105732,0.33217189135029912,\
+ 0.59350947011262178,0.50153415976092219,0.43685875833034515,0.26931248093023896,\
+ 0.63257448654621840,0.40519540151581168,0.91847078315913677,0.04373343335464597,\
+ 0.48185089323669672}
+
+
+
+#define ZIMAG_IN13 {0.26395560009405017,0.41481037065386772,0.28064980218186975,0.12800584640353918,\
+ 0.77831285959109664,0.21190304495394230,0.11213546665385365,0.68568959552794695,\
+ 0.15312166837975383,0.69708506017923355,0.84155184263363481,0.40620247554033995,\
+ 0.40948254754766822}
+
+
+
+#define ZREAL_IN14 {0.87841258011758327,0.11383596854284406,0.19983377400785685,0.56186607433483005,\
+ 0.58961773291230202,0.68539796629920602,0.89062247332185507,0.50422128057107329,\
+ 0.34936154074966908,0.38737787725403905,0.92228986788541079,0.94881842611357570,\
+ 0.34353372454643250,0.37601187312975526}
+
+#define ZIMAG_IN14 {0.73409405630081892,0.26157614728435874,0.49934938363730907,0.26385784195736051,\
+ 0.52535630855709314,0.53762298030778766,0.11999255046248436,0.2256303490139544 ,\
+ 0.62740930821746588,0.76084325974807143,0.04855662025511265,0.67239497276023030,\
+ 0.20171726960688829,0.39115739194676280}
+
+#define ZREAL_IN15 {0.83003165572881699,0.58787201577797532,0.48291792999953032,0.22328650346025825,\
+ 0.84008856676518917,0.12059959070757031,0.28553641680628061,0.86075146449729800,\
+ 0.84941016510128975,0.52570608118548989,0.99312098976224661,0.64885628735646605,\
+ 0.99231909401714802,0.05004197778180242,0.74855065811425447}
+
+#define ZIMAG_IN15 {0.41040589986369014,0.60845263302326202,0.85442108893766999,0.06426467280834913,\
+ 0.82790829380974174,0.92623437754809856,0.56672112690284848,0.57116389367729425,\
+ 0.81601104838773608,0.05689279362559319,0.55959366867318749,0.12493403162807226,\
+ 0.72792222863063216,0.26777664758265018,0.54653349192813039}
+
+
+
+#define ZREAL_IN16 {0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+ 0.36163610080257058, 0.2922266637906432 , 0.56642488157376647, 0.48264719732105732,\
+ 0.33217189135029912, 0.59350947011262178, 0.50153415976092219, 0.43685875833034515}
+#define ZIMAG_IN16 {0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+ 0.04373343335464597, 0.48185089323669672, 0.26395560009405017, 0.41481037065386772,\
+ 0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+ 0.11213546665385365, 0.68568959552794695, 0.15312166837975383, 0.69708506017923355}
+
+
+#define ZREAL_IN32 {0.21132486546412110,0.75604385416954756,0.00022113462910056,0.33032709173858166,\
+ 0.66538110421970487,0.62839178834110498,0.84974523587152362,0.68573101982474327,\
+ 0.87821648130193353,0.06837403681129217,0.56084860628470778,0.66235693730413914,\
+ 0.72635067673400044,0.19851438421756029,0.54425731627270579,0.23207478970289230,\
+ 0.23122371966019273,0.21646326314657927,0.88338878145441413,0.65251349471509457,\
+ 0.30760907428339124,0.93296162132173777,0.21460078610107303,0.31264199689030647,\
+ 0.36163610080257058,0.2922266637906432 ,0.56642488157376647,0.48264719732105732,\
+ 0.33217189135029912,0.59350947011262178,0.50153415976092219,0.43685875833034515}
+
+#define ZIMAG_IN32 {0.26931248093023896,0.63257448654621840,0.40519540151581168,0.91847078315913677,\
+ 0.04373343335464597,0.48185089323669672,0.26395560009405017,0.41481037065386772,\
+ 0.28064980218186975,0.12800584640353918,0.77831285959109664,0.21190304495394230,\
+ 0.11213546665385365,0.68568959552794695,0.15312166837975383,0.69708506017923355,\
+ 0.84155184263363481,0.40620247554033995,0.40948254754766822,0.87841258011758327,\
+ 0.11383596854284406,0.19983377400785685,0.56186607433483005,0.58961773291230202,\
+ 0.68539796629920602,0.89062247332185507,0.50422128057107329,0.34936154074966908,\
+ 0.38737787725403905,0.92228986788541079,0.94881842611357570,0.34353372454643250}
+
+
+
+
+#define ZREAL_RESULT2 { 0.33054822636768222,- 0.33010595710948110}
+#define ZIMAG_RESULT2 { 1.29377289256080985, 0.03698931587859988}
+
+#define ZREAL_RESULT3 { 3.8912947420030832 , 0.73026611683127762, 2.82463946259411713}
+#define ZIMAG_RESULT3 { 1.79153951257467270, 2.79267814568426775, 1.85999415536228230}
+
+#define ZREAL_RESULT4 { 2.48206677380949259, 0.43537130765616894, 0.97385666053742170, -0.49231379851698875}
+#define ZIMAG_RESULT4 { 2.14807060454040766,- 0.78285905346274376, 0.42632796149700880, 0.45185491256415844}
+
+#define ZREAL_RESULT5 { 3.13458026852458715, 0.8989689127154592 ,-0.38601946016350575, 0.50520993574533923,\
+ 0.09598652253573875}
+#define ZIMAG_RESULT5 { 2.71449548611417413,-0.31527367037930898, 0.60322341639929178,-0.89813890885693670,\
+ 0.69993670814631914}
+
+#define ZREAL_RESULT6 { 2.18414165778085589,-0.26482327553354379,-0.01687604011087318, 0.67184740351513028,\
+ 0.11489612058787246, 0.57635803139679309 }
+#define ZIMAG_RESULT6 { +2.34103989927098155,+0.34168162147929737,-0.70971181304669773,-0.05571636231616137,\
+ -0.11084573654913504,-0.51884289223184654 }
+
+
+
+
+#define ZREAL_RESULT7 { 3.06753043923527002,-0.62032167153569062,-0.13156333379499591, 0.48353341667797933,\
+ 0.63567251139259018, 0.05503001802946385, 0.31991983390432432}
+#define ZIMAG_RESULT7 { 2.75052244681864977, 0.82490994311348309,-0.93592353228518299,-0.23131444371235776,\
+ -0.12732936894919694, 0.16455873200809046,-0.94321827428597393}
+
+
+
+#define ZREAL_RESULT8 { 4.00049206055700779,-0.43357241280891956, 0.79836636409163475,-0.91119240848798977,\
+ -0.06753427721560001,-0.18576209864995416, 0.97926024347543716, 0.17400105922003017}
+#define ZIMAG_RESULT8 { 3.15585898794233799, 0.62132445165622818, 0.35205427557229996, 0.28289917172258683,\
+ -0.20619166828691959,-1.17220193335521805,-0.17761892452836037,-1.13931807191437073 }
+
+#define ZREAL_RESULT9 { 4.18826149590313435,-0.33012457237426968,-0.46815050871925312,-0.52782532864173848,\
+ 0.14402327100125287, 0.48673726656350014,-0.36542216583231485,-0.05675799381585508,\
+ -0.98972798714272159}
+#define ZIMAG_RESULT9 { 4.31011430080980062,-0.43185186999958014,-0.61788469590268758, 2.02080753944191294,\
+ -1.82700213292318292,-0.72130831941965079,-0.43263346921029644,-0.61611460931125561,\
+ 0.73968558488709069 }
+
+
+#define ZREAL_RESULT10 { 4.7991688111796975 , 0.13431735180709442, 0.69797375124916528,-0.96094309976899528,\
+ -1.299412169815219 , 0.31298504490405327,-0.70524633213128674, 0.73186521665562432,\
+ -0.84695776029792746,-0.69911818231641265}
+#define ZIMAG_RESULT10 { +3.8964297915808856 ,-0.73143162523007543,-1.16550179795884423,-0.28088284236709465,\
+ +0.91311790128897607,+0.14664673572406173,-0.38825389263472715,+0.70003588825710683,\
+ -1.10050453393604197,+0.32258157187768072}
+
+#define ZREAL_RESULT11 { 4.48273084452375770,-0.38185469421558837,-0.20352646397260507, 0.93844897170676500,\
+ -0.36107014581234886, 1.63127126429331426, 0.21051283071884830, 0.41375037345506283,\
+ -1.51895083986003510, 0.07998126975880851, 0.20154980941442344}
+
+#define ZIMAG_RESULT11 {+5.99735778197646141,+0.89612320628808262,-1.19950115725534112,+0.16831729582097132,\
+ -0.30180616479381106,-1.1576712540107854 ,+0.14605414615044232,+0.98186675096176135,\
+ -1.81578488007792282,+0.11882005651954808,+0.46895552983498812}
+
+#define ZREAL_RESULT12 { 6.81198796723037958,-0.94341279444120363, 0.80833429094732012, 0.51617261953651883,\
+ -0.2952048802069408 , 2.17160345678053313,-0.54953851085156202,-0.00060138915045171,\
+ 1.48723066647267177,-0.96738335862755753, 0.38783971037387632,-0.35450152802901336}
+
+#define ZIMAG_RESULT12 {+5.08788532856851816,-0.92793626853655098,+1.98330386259771707,+1.00984227284789085,\
+ -0.76701015963174557,-0.03923425866831987,+0.00245377141982317,-0.97965668697496155,\
+ -0.43031801485501076,-0.70842429809272289,-0.77014751450337293,-1.07858542356054099}
+
+
+#define ZREAL_RESULT13 { 5.95651050098240376,-1.05002118208049122,-0.62824400440218664, 0.73670329745244079,\
+ 1.01270235903781081,-0.97652276217739442,-0.80139420917945892,-1.08927100387059594,\
+ 1.10768757452252697,-0.90416530058905542, 0.19128270229571837,-0.36935459470156029,\
+ 0.61303325198820890}
+
+#define ZIMAG_RESULT13 {+5.38290618034079671,-0.01795106539414900,-1.0736822056133133 ,-0.38375436766279453,\
+ +0.45177555081294796,-0.42204321578379422,+1.167268002300917 ,-0.8654330910349184 ,\
+ -1.80135467250416070,+0.73358402770681042,+0.92212767526074568,-0.53962030646712056,\
+ -0.12239971073931022}
+
+#define ZREAL_RESULT14 { 7.75120115978643298,-0.78366539551591063,-0.20265674140819168, 0.04290246165533468,\
+ 2.26072777524451896, 0.41764276367067404,-0.94725360360479638, 0.59614222729578614,\
+ 1.2655897771348088 , 1.49954927048727082, 0.59161337187577756, 1.32712418977692859,\
+ -1.04078471420795249,-0.48035642054451416}
+
+
+#define ZIMAG_RESULT14 {+5.86955844005569816,+0.59116535878306964,+1.10949301280070478,-0.10194863149531888,\
+ +0.33742089533324454,+1.27136622217475770,+0.66505772083419801,-0.35660744598135352,\
+ +0.55272403261244618,+0.78239239747489764,-0.76097885152655409,+1.7013910918422144 ,\
+ -1.05520441290632339,-0.32851304179021534}
+
+#define ZREAL_RESULT15 { 9.03908939706161618, 0.83695739793685675,-0.1247585940626968 , 0.73554494173292662,\
+ 2.89255624599792061,-0.60942096648213817,-0.96289916352621108,-2.01148115975842146,\
+ 1.08671310762523987, 1.10385593717105923, 0.14097082301450437, 0.77951939204949339,\
+ -0.19682993144621974, 1.09445436001472118,-1.35379695139639411}
+
+#define ZIMAG_RESULT15 {+7.929235897026956 ,+0.93665405708769556,-0.58867096407810116,-0.08075001529554950,\
+ +0.05154837779444588,-1.64233407065738146,+2.20857407200866884,+0.92685932199933529,\
+ -1.71222943015973872,-0.79519673795720203,-0.80828166087623532,-0.07547063282874045,\
+ +0.21930651464200918,+1.00880777239444086,-1.42196400314524918}
+
+
+
+#define ZREAL_RESULT16 { 7.31841186061501503, 0.57213963313411265,-0.54757095809921363,-0.48628670926159856,\
+ -1.24745626002550125,-0.60260425121772254,-0.09566750389725764, 1.12013387649474438,\
+ -0.52123307064175606,-0.4866536676629296 , 1.98659065302356819,-0.8626986211125984 ,\
+ -0.61915938556194305,-0.27813937201980266,-1.53103677171080510,-0.01918993749322817}
+#define ZIMAG_RESULT16 { 6.47680679336190224, 0.33111151130330035,-0.19343861330849654, 0.12474172265893407,\
+ -1.0452539175748825 , 1.29632487527975693, 1.87557979276701658,-1.82623636350346352,\
+ -1.86397336795926094,-1.03154071610913434,-0.48573205481665604, 0.44539904220706855,\
+ -0.74425477534532547,-0.54299368721281471, 0.37996440777257234, 1.11249504536330601}
+
+#define ZREAL_RESULT32 { 15.3165711835026741,-1.79021577127059173,-1.66659611407065089, 0.17525916470909797,\
+ -1.16958628014871602, 0.58684741669397522, 0.03947542161511042, 0.99740008842981942,\
+ -0.46323241293430328, 2.122539701124051 ,-1.52963914564883940, 0.87990417229605744,\
+ 0.58569127383151542,-0.18198535589432135, 0.26043384746900655,-1.11204765363415392,\
+ 0.35329844802618027,-1.47568616310628631,-2.03487116744967844,-3.19495610958970166,\
+ 0.81026376203844086,-0.46366666776372734,-1.63150209835186510, 0.77334707088593369,\
+ -0.35098156332969666,-1.63498270669406387, 0.67411467120679691, 2.80538085483913147,\
+ -1.62281507315555107,-0.5600265995962992 ,-0.48984739061140237, 1.75450689143393301}
+
+
+
+#define ZIMAG_RESULT32 { 15.509232945740223 ,-0.47962381296807621, 0.21213951866464975, 0.88442937061831350,\
+ 1.52924554070524898,-0.6313403060045536 ,-2.25908603874729419,-1.3836292677373856 ,\
+ -1.18231281638145447,-2.14767090006699668, 1.5452016553381984 ,-3.15355126536920993,\
+ 2.10199273301496747, 0.67530605269461363,-2.03603600735261558, 1.2309547869577584 ,\
+ -1.9912955537438393 ,-1.9668221895811833 , 0.29575245179739662, 1.34815224953105273,\
+ 1.508921339902356 ,-0.40084285801706099, 2.96716476331614754, 1.08125713762201059,\
+ -1.39964522421360016,-1.30777696073860294,-1.13169784714423916,-2.00872755010475013,\
+ 0.53915777133569487,-2.45178696294021004 , 1.56509394479014063, 1.5558426888499468}
+
+static void zfftmaTest2 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN2;
+ double tImagIn [] = ZIMAG_IN2 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT2 ;
+ double tImagResult [] = ZIMAG_RESULT2 ;
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS2));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS2 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS2) ;
+
+
+
+ zfftma ( in , ROW , COLS2 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+ for ( i = 0 ; i < (ROW*COLS2 ) ; i++ )
+ {
+ printf ( "\t\t%d out: %e \t%e\t*i result: %e \t%e\t*i assert: %e \t%e\t*i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i]))
+ );
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-16 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void zfftmaTest3 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN3;
+ double tImagIn [] = ZIMAG_IN3 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT3 ;
+ double tImagResult [] = ZIMAG_RESULT3 ;
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS3));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS3 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS3) ;
+
+
+
+ zfftma ( in , ROW , COLS3 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+ for ( i = 0 ; i < (ROW*COLS3 ) ; i++ )
+ {
+ printf ( "\t\t%d out: %e \t%e\t*i result: %e \t%e\t*i assert: %e \t%e\t*i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i]))
+ );
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-16 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+
+static int testFft(void) {
+
+ printf("\n>>>> FFT Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ /*dfftmaTest();*/
+
+ printf("\n\n\n");
+
+ printf("\n\t>>>> Vector 2 Double Complex Tests\n");
+ zfftmaTest2();
+ printf("\n\t>>>> Vector 3 Double Complex Tests\n");
+ zfftmaTest3();
+
+/*
+ printf("\n\t>>>> Vector 4 Double Complex Tests\n");
+ zfftmaTest4();
+ printf("\n\t>>>> Vector 5 Double Complex Tests\n");
+ zfftmaTest5();
+ printf("\n\t>>>> Vector 6 Double Complex Tests\n");
+ zfftmaTest6();
+ printf("\n\t>>>> Vector 7 Double Complex Tests\n");
+ zfftmaTest7();
+ printf("\n\t>>>> Vector 8 Double Complex Tests\n");
+ zfftmaTest8();
+ printf("\n\t>>>> Vector 9 Double Complex Tests\n");
+ zfftmaTest9();
+ printf("\n\t>>>> Vector 10 Double Complex Tests\n");
+ zfftmaTest10();
+ printf("\n\t>>>> Vector 11 Double Complex Tests\n");
+ zfftmaTest11();
+ printf("\n\t>>>> Vector 12 Double Complex Tests\n");
+ zfftmaTest12();
+ printf("\n\t>>>> Vector 13 Double Complex Tests\n");
+ zfftmaTest13();
+ printf("\n\t>>>> Vector 14 Double Complex Tests\n");
+ zfftmaTest14();
+ printf("\n\t>>>> Vector 14 Double Complex Tests\n");
+ zfftmaTest15();
+ printf("\n\t>>>> Vector 16 Double Complex Tests\n");
+ zfftmaTest16();
+ printf("\n\t>>>> Vector 32 Double Complex Tests\n");
+ zfftmaTest32();
+*/
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testFft() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/testFloatFft.c b/2.3-1/src/c/signalProcessing/fft/testFloatFft.c
new file mode 100644
index 00000000..5176c348
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/testFloatFft.c
@@ -0,0 +1,1238 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "fft.h"
+
+
+#define ROW 1
+#define COLS2 2
+#define COLS3 3
+#define COLS4 4
+#define COLS5 5
+#define COLS6 6
+#define COLS7 7
+#define COLS8 8
+#define COLS9 9
+#define COLS10 10
+#define COLS11 11
+#define COLS12 12
+#define COLS13 13
+#define COLS14 14
+#define COLS15 15
+#define COLS16 16
+#define COLS32 32
+
+
+#define CREAL_IN2 { 0.00022113462910056f , 0.33032709173858166f }
+#define CIMAG_IN2 { 0.66538110421970487f , 0.62839178834110498f }
+
+#define CREAL_IN3 { 2.48206677380949259f, 0.43537130765616894f, 0.97385666053742170f}
+#define CIMAG_IN3 { 2.14807060454040766f,- 0.78285905346274376f, 0.42632796149700880f}
+
+
+#define CREAL_IN4 { 0.84974523587152362f, 0.68573101982474327f, 0.87821648130193353f, 0.06837403681129217f}
+#define CIMAG_IN4 { 0.56084860628470778f, 0.66235693730413914f, 0.72635067673400044f, 0.19851438421756029f}
+
+#define CREAL_IN5 { 0.84974523587152362f, 0.68573101982474327f, 0.87821648130193353f, 0.06837403681129217f,\
+ 0.65251349471509457f}
+#define CIMAG_IN5 { 0.56084860628470778f, 0.66235693730413914f, 0.72635067673400044f, 0.19851438421756029f,\
+ 0.56642488157376647f}
+
+#define CREAL_IN6 { 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+ 0.65251349471509457f, 0.30760907428339124f }
+#define CIMAG_IN6 { 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+ 0.56642488157376647f, 0.59350947011262178f }
+
+#define CREAL_IN7 { 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+ 0.65251349471509457f, 0.88338878145441413f, 0.30760907428339124f }
+#define CIMAG_IN7 { 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+ 0.40948254754766822f, 0.56642488157376647f, 0.59350947011262178f }
+
+
+
+#define CREAL_IN8 { 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+ 0.88338878145441413f, 0.65251349471509457f, 0.30760907428339124f, 0.93296162132173777f }
+#define CIMAG_IN8 { 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+ 0.56642488157376647f, 0.48264719732105732f, 0.33217189135029912f, 0.59350947011262178f}
+
+
+#define CREAL_IN9 { 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+ 0.43685875833034515f}
+#define CIMAG_IN9 { 0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+ 0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+ 0.68568959552794695f}
+
+
+#define CREAL_IN10 { 0.21646326314657927f, 0.65251349471509457f, 0.63257448654621840f, 0.31264199689030647f,\
+ 0.93296162132173777f, 0.31264199689030647f, 0.48185089323669672f, 0.48264719732105732f,\
+ 0.2922266637906432f , 0.48264719732105732f }
+#define CIMAG_IN10 { 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.11383596854284406f, 0.19983377400785685f, 0.56186607433483005f, 0.58961773291230202f,\
+ 0.23122371966019273f, 0.21646326314657927f}
+/*
+#define CREAL_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+
+
+#define CIMAG_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+*/
+
+
+
+
+#define CREAL_IN11 {0.49934938363730907f,0.26385784195736051f,0.52535630855709314f,0.53762298030778766f,\
+ 0.11999255046248436f,0.2256303490139544f ,0.62740930821746588f,0.76084325974807143f,\
+ 0.04855662025511265f,0.67239497276023030f,0.20171726960688829f }
+
+#define CIMAG_IN11 {0.39115739194676280f,0.83003165572881699f,0.58787201577797532f,0.48291792999953032f,\
+ 0.22328650346025825f,0.84008856676518917f,0.12059959070757031f,0.28553641680628061f,\
+ 0.86075146449729800f,0.84941016510128975f,0.52570608118548989f}
+
+
+#define CREAL_IN12 {0.75604385416954756f,0.00022113462910056f,0.33032709173858166f,0.66538110421970487f,\
+ 0.62839178834110498f,0.84974523587152362f,0.68573101982474327f,0.87821648130193353f,\
+ 0.06837403681129217f,0.56084860628470778f,0.66235693730413914f,0.72635067673400044f}
+
+#define CIMAG_IN12 {0.19851438421756029f,0.54425731627270579f,0.23207478970289230f,0.23122371966019273f,\
+ 0.21646326314657927f,0.88338878145441413f,0.65251349471509457f,0.30760907428339124f,\
+ 0.93296162132173777f,0.21460078610107303f,0.31264199689030647f,0.36163610080257058f}
+
+
+#define CREAL_IN13 {0.2922266637906432f ,0.56642488157376647f,0.48264719732105732f,0.33217189135029912f,\
+ 0.59350947011262178f,0.50153415976092219f,0.43685875833034515f,0.26931248093023896f,\
+ 0.63257448654621840f,0.40519540151581168f,0.91847078315913677f,0.04373343335464597f,\
+ 0.48185089323669672f}
+
+
+
+#define CIMAG_IN13 {0.26395560009405017f,0.41481037065386772f,0.28064980218186975f,0.12800584640353918f,\
+ 0.77831285959109664f,0.21190304495394230f,0.11213546665385365f,0.68568959552794695f,\
+ 0.15312166837975383f,0.69708506017923355f,0.84155184263363481f,0.40620247554033995f,\
+ 0.40948254754766822f}
+
+
+
+#define CREAL_IN14 {0.87841258011758327f,0.11383596854284406f,0.19983377400785685f,0.56186607433483005f,\
+ 0.58961773291230202f,0.68539796629920602f,0.89062247332185507f,0.50422128057107329f,\
+ 0.34936154074966908f,0.38737787725403905f,0.92228986788541079f,0.94881842611357570f,\
+ 0.34353372454643250f,0.37601187312975526f}
+
+#define CIMAG_IN14 {0.73409405630081892f,0.26157614728435874f,0.49934938363730907f,0.26385784195736051f,\
+ 0.52535630855709314f,0.53762298030778766f,0.11999255046248436f,0.2256303490139544f ,\
+ 0.62740930821746588f,0.76084325974807143f,0.04855662025511265f,0.67239497276023030f,\
+ 0.20171726960688829f,0.39115739194676280f}
+
+#define CREAL_IN15 {0.83003165572881699f,0.58787201577797532f,0.48291792999953032f,0.22328650346025825f,\
+ 0.84008856676518917f,0.12059959070757031f,0.28553641680628061f,0.86075146449729800f,\
+ 0.84941016510128975f,0.52570608118548989f,0.99312098976224661f,0.64885628735646605f,\
+ 0.99231909401714802f,0.05004197778180242f,0.74855065811425447f}
+
+#define CIMAG_IN15 {0.41040589986369014f,0.60845263302326202f,0.85442108893766999f,0.06426467280834913f,\
+ 0.82790829380974174f,0.92623437754809856f,0.56672112690284848f,0.57116389367729425f,\
+ 0.81601104838773608f,0.05689279362559319f,0.55959366867318749f,0.12493403162807226f,\
+ 0.72792222863063216f,0.26777664758265018f,0.54653349192813039f}
+
+
+
+#define CREAL_IN16 {0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+ 0.36163610080257058f, 0.2922266637906432f , 0.56642488157376647f, 0.48264719732105732f,\
+ 0.33217189135029912f, 0.59350947011262178f, 0.50153415976092219f, 0.43685875833034515f}
+#define CIMAG_IN16 {0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+ 0.04373343335464597f, 0.48185089323669672f, 0.26395560009405017f, 0.41481037065386772f,\
+ 0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+ 0.11213546665385365f, 0.68568959552794695f, 0.15312166837975383f, 0.69708506017923355f}
+
+
+#define CREAL_IN32 {0.21132486546412110f,0.75604385416954756f,0.00022113462910056f,0.33032709173858166f,\
+ 0.66538110421970487f,0.62839178834110498f,0.84974523587152362f,0.68573101982474327f,\
+ 0.87821648130193353f,0.06837403681129217f,0.56084860628470778f,0.66235693730413914f,\
+ 0.72635067673400044f,0.19851438421756029f,0.54425731627270579f,0.23207478970289230f,\
+ 0.23122371966019273f,0.21646326314657927f,0.88338878145441413f,0.65251349471509457f,\
+ 0.30760907428339124f,0.93296162132173777f,0.21460078610107303f,0.31264199689030647f,\
+ 0.36163610080257058f,0.2922266637906432f ,0.56642488157376647f,0.48264719732105732f,\
+ 0.33217189135029912f,0.59350947011262178f,0.50153415976092219f,0.43685875833034515f}
+
+#define CIMAG_IN32 {0.26931248093023896f,0.63257448654621840f,0.40519540151581168f,0.91847078315913677f,\
+ 0.04373343335464597f,0.48185089323669672f,0.26395560009405017f,0.41481037065386772f,\
+ 0.28064980218186975f,0.12800584640353918f,0.77831285959109664f,0.21190304495394230f,\
+ 0.11213546665385365f,0.68568959552794695f,0.15312166837975383f,0.69708506017923355f,\
+ 0.84155184263363481f,0.40620247554033995f,0.40948254754766822f,0.87841258011758327f,\
+ 0.11383596854284406f,0.19983377400785685f,0.56186607433483005f,0.58961773291230202f,\
+ 0.68539796629920602f,0.89062247332185507f,0.50422128057107329f,0.34936154074966908f,\
+ 0.38737787725403905f,0.92228986788541079f,0.94881842611357570f,0.34353372454643250f}
+
+
+
+
+#define CREAL_RESULT2 { 0.33054822636768222f,- 0.33010595710948110f}
+#define CIMAG_RESULT2 { 1.29377289256080985f, 0.03698931587859988f}
+
+#define CREAL_RESULT3 { 3.8912947420030832f , 0.73026611683127762f, 2.82463946259411713f}
+#define CIMAG_RESULT3 { 1.79153951257467270f, 2.79267814568426775f, 1.85999415536228230f}
+
+#define CREAL_RESULT4 { 2.48206677380949259f, 0.43537130765616894f, 0.97385666053742170f, -0.49231379851698875f}
+#define CIMAG_RESULT4 { 2.14807060454040766f,- 0.78285905346274376f, 0.42632796149700880f, 0.45185491256415844f}
+
+#define CREAL_RESULT5 { 3.13458026852458715f, 0.8989689127154592f ,-0.38601946016350575f, 0.50520993574533923f,\
+ 0.09598652253573875f}
+#define CIMAG_RESULT5 { 2.71449548611417413f,-0.31527367037930898f, 0.60322341639929178f,-0.89813890885693670f,\
+ 0.69993670814631914f}
+
+#define CREAL_RESULT6 { 2.18414165778085589f,-0.26482327553354379f,-0.01687604011087318f, 0.67184740351513028f,\
+ 0.11489612058787246f, 0.57635803139679309f }
+#define CIMAG_RESULT6 { +2.34103989927098155f,+0.34168162147929737f,-0.70971181304669773f,-0.05571636231616137f,\
+ -0.11084573654913504f,-0.51884289223184654f }
+
+
+
+
+#define CREAL_RESULT7 { 3.06753043923527002f,-0.62032167153569062f,-0.13156333379499591f, 0.48353341667797933f,\
+ 0.63567251139259018f, 0.05503001802946385f, 0.31991983390432432f}
+#define CIMAG_RESULT7 { 2.75052244681864977f, 0.82490994311348309f,-0.93592353228518299f,-0.23131444371235776f,\
+ -0.12732936894919694f, 0.16455873200809046f,-0.94321827428597393f}
+
+
+
+#define CREAL_RESULT8 { 4.00049206055700779f,-0.43357241280891956f, 0.79836636409163475f,-0.91119240848798977f,\
+ -0.06753427721560001f,-0.18576209864995416f, 0.97926024347543716f, 0.17400105922003017f}
+#define CIMAG_RESULT8 { 3.15585898794233799f, 0.62132445165622818f, 0.35205427557229996f, 0.28289917172258683f,\
+ -0.20619166828691959f,-1.17220193335521805f,-0.17761892452836037f,-1.13931807191437073f }
+
+#define CREAL_RESULT9 { 4.18826149590313435f,-0.33012457237426968f,-0.46815050871925312f,-0.52782532864173848f,\
+ 0.14402327100125287f, 0.48673726656350014f,-0.36542216583231485f,-0.05675799381585508f,\
+ -0.98972798714272159f}
+#define CIMAG_RESULT9 { 4.31011430080980062f,-0.43185186999958014f,-0.61788469590268758f, 2.02080753944191294f,\
+ -1.82700213292318292f,-0.72130831941965079f,-0.43263346921029644f,-0.61611460931125561f,\
+ 0.73968558488709069f }
+
+
+#define CREAL_RESULT10 { 4.7991688111796975f , 0.13431735180709442f, 0.69797375124916528f,-0.96094309976899528f,\
+ -1.299412169815219f , 0.31298504490405327f,-0.70524633213128674f, 0.73186521665562432f,\
+ -0.84695776029792746f,-0.69911818231641265f}
+#define CIMAG_RESULT10 { +3.8964297915808856f ,-0.73143162523007543f,-1.16550179795884423f,-0.28088284236709465f,\
+ +0.91311790128897607f,+0.14664673572406173f,-0.38825389263472715f,+0.70003588825710683f,\
+ -1.10050453393604197f,+0.32258157187768072f}
+
+#define CREAL_RESULT11 { 4.48273084452375770f,-0.38185469421558837f,-0.20352646397260507f, 0.93844897170676500f,\
+ -0.36107014581234886f, 1.63127126429331426f, 0.21051283071884830f, 0.41375037345506283f,\
+ -1.51895083986003510f, 0.07998126975880851f, 0.20154980941442344f}
+
+#define CIMAG_RESULT11 {+5.99735778197646141f,+0.89612320628808262f,-1.19950115725534112f,+0.16831729582097132f,\
+ -0.30180616479381106f,-1.1576712540107854f ,+0.14605414615044232f,+0.98186675096176135f,\
+ -1.81578488007792282f,+0.11882005651954808f,+0.46895552983498812f}
+
+#define CREAL_RESULT12 { 6.81198796723037958f,-0.94341279444120363f, 0.80833429094732012f, 0.51617261953651883f,\
+ -0.2952048802069408f , 2.17160345678053313f,-0.54953851085156202f,-0.00060138915045171f,\
+ 1.48723066647267177f,-0.96738335862755753f, 0.38783971037387632f,-0.35450152802901336f}
+
+#define CIMAG_RESULT12 {+5.08788532856851816f,-0.92793626853655098f,+1.98330386259771707f,+1.00984227284789085f,\
+ -0.76701015963174557f,-0.03923425866831987f,+0.00245377141982317f,-0.97965668697496155f,\
+ -0.43031801485501076f,-0.70842429809272289f,-0.77014751450337293f,-1.07858542356054099f}
+
+
+#define CREAL_RESULT13 { 5.95651050098240376f,-1.05002118208049122f,-0.62824400440218664f, 0.73670329745244079f,\
+ 1.01270235903781081f,-0.97652276217739442f,-0.80139420917945892f,-1.08927100387059594f,\
+ 1.10768757452252697f,-0.90416530058905542f, 0.19128270229571837f,-0.36935459470156029f,\
+ 0.61303325198820890f}
+
+#define CIMAG_RESULT13 {+5.38290618034079671f,-0.01795106539414900f,-1.0736822056133133f ,-0.38375436766279453f,\
+ +0.45177555081294796f,-0.42204321578379422f,+1.167268002300917f ,-0.8654330910349184f ,\
+ -1.80135467250416070f,+0.73358402770681042f,+0.92212767526074568f,-0.53962030646712056f,\
+ -0.12239971073931022f}
+
+#define CREAL_RESULT14 { 7.75120115978643298f,-0.78366539551591063f,-0.20265674140819168f, 0.04290246165533468f,\
+ 2.26072777524451896f, 0.41764276367067404f,-0.94725360360479638f, 0.59614222729578614f,\
+ 1.2655897771348088f , 1.49954927048727082f, 0.59161337187577756f, 1.32712418977692859f,\
+ -1.04078471420795249f,-0.48035642054451416f}
+
+
+#define CIMAG_RESULT14 {+5.86955844005569816f,+0.59116535878306964f,+1.10949301280070478f,-0.10194863149531888f,\
+ +0.33742089533324454f,+1.27136622217475770f,+0.66505772083419801f,-0.35660744598135352f,\
+ +0.55272403261244618f,+0.78239239747489764f,-0.76097885152655409f,+1.7013910918422144f ,\
+ -1.05520441290632339f,-0.32851304179021534f}
+
+#define CREAL_RESULT15 { 9.03908939706161618f, 0.83695739793685675f,-0.1247585940626968f , 0.73554494173292662f,\
+ 2.89255624599792061f,-0.60942096648213817f,-0.96289916352621108f,-2.01148115975842146f,\
+ 1.08671310762523987f, 1.10385593717105923f, 0.14097082301450437f, 0.77951939204949339f,\
+ -0.19682993144621974f, 1.09445436001472118f,-1.35379695139639411f}
+
+#define CIMAG_RESULT15 {+7.929235897026956f ,+0.93665405708769556f,-0.58867096407810116f,-0.08075001529554950f,\
+ +0.05154837779444588f,-1.64233407065738146f,+2.20857407200866884f,+0.92685932199933529f,\
+ -1.71222943015973872f,-0.79519673795720203f,-0.80828166087623532f,-0.07547063282874045f,\
+ +0.21930651464200918f,+1.00880777239444086f,-1.42196400314524918f}
+
+
+
+#define CREAL_RESULT16 { 7.31841186061501503f, 0.57213963313411265f,-0.54757095809921363f,-0.48628670926159856f,\
+ -1.24745626002550125f,-0.60260425121772254f,-0.09566750389725764f, 1.12013387649474438f,\
+ -0.52123307064175606f,-0.4866536676629296f , 1.98659065302356819f,-0.8626986211125984f ,\
+ -0.61915938556194305f,-0.27813937201980266f,-1.53103677171080510f,-0.01918993749322817f}
+#define CIMAG_RESULT16 { 6.47680679336190224f, 0.33111151130330035f,-0.19343861330849654f, 0.12474172265893407f,\
+ -1.0452539175748825f , 1.29632487527975693f, 1.87557979276701658f,-1.82623636350346352f,\
+ -1.86397336795926094f,-1.03154071610913434f,-0.48573205481665604f, 0.44539904220706855f,\
+ -0.74425477534532547f,-0.54299368721281471f, 0.37996440777257234f, 1.11249504536330601f}
+
+#define CREAL_RESULT32 { 15.3165711835026741f,-1.79021577127059173f,-1.66659611407065089f, 0.17525916470909797f,\
+ -1.16958628014871602f, 0.58684741669397522f, 0.03947542161511042f, 0.99740008842981942f,\
+ -0.46323241293430328f, 2.122539701124051f ,-1.52963914564883940f, 0.87990417229605744f,\
+ 0.58569127383151542f,-0.18198535589432135f, 0.26043384746900655f,-1.11204765363415392f,\
+ 0.35329844802618027f,-1.47568616310628631f,-2.03487116744967844f,-3.19495610958970166f,\
+ 0.81026376203844086f,-0.46366666776372734f,-1.63150209835186510f, 0.77334707088593369f,\
+ -0.35098156332969666f,-1.63498270669406387f, 0.67411467120679691f, 2.80538085483913147f,\
+ -1.62281507315555107f,-0.5600265995962992f ,-0.48984739061140237f, 1.75450689143393301f}
+
+
+
+#define CIMAG_RESULT32 { 15.509232945740223f ,-0.47962381296807621f, 0.21213951866464975f, 0.88442937061831350f,\
+ 1.52924554070524898f,-0.6313403060045536f ,-2.25908603874729419f,-1.3836292677373856f ,\
+ -1.18231281638145447f,-2.14767090006699668f, 1.5452016553381984f ,-3.15355126536920993f,\
+ 2.10199273301496747f, 0.67530605269461363f,-2.03603600735261558f, 1.2309547869577584f ,\
+ -1.9912955537438393f ,-1.9668221895811833f , 0.29575245179739662f, 1.34815224953105273f,\
+ 1.508921339902356f ,-0.40084285801706099f, 2.96716476331614754f, 1.08125713762201059f,\
+ -1.39964522421360016f,-1.30777696073860294f,-1.13169784714423916f,-2.00872755010475013f,\
+ 0.53915777133569487f,-2.45178696294021004f , 1.56509394479014063f, 1.5558426888499468f}
+
+static void cfftmaTest2 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN2;
+ float tImagIn [] = CIMAG_IN2 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT2 ;
+ float tImagResult [] = CIMAG_RESULT2 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS2));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS2 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS2) ;
+
+
+
+ cfftma ( in , ROW , COLS2 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS2 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+}
+
+static void cfftmaTest3 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN3;
+ float tImagIn [] = CIMAG_IN3 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT3;
+ float tImagResult [] = CIMAG_RESULT3 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS3));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS3 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS3) ;
+
+
+
+ cfftma ( in , ROW , COLS3 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS3 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+
+ free(out);
+ free(in);
+ free(Result);
+}
+
+
+static void cfftmaTest4 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN4;
+ float tImagIn [] = CIMAG_IN4 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT4 ;
+ float tImagResult [] = CIMAG_RESULT4 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS4));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS4 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS4) ;
+
+
+ cfftma ( in , ROW , COLS4 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS4 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,creals(out[i]) , cimags(out[i]), creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cfftmaTest5 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN5;
+ float tImagIn [] = CIMAG_IN5 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT5;
+ float tImagResult [] = CIMAG_RESULT5 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS5));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS5 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS5) ;
+
+
+
+ cfftma ( in , ROW , COLS5 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS5 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cfftmaTest6 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN6;
+ float tImagIn [] = CIMAG_IN6 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT6;
+ float tImagResult [] = CIMAG_RESULT6;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS6));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS6 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS6) ;
+
+
+
+ cfftma ( in , ROW , COLS6 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS6 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+
+ free(out);
+ free(in);
+ free(Result);
+}
+
+
+static void cfftmaTest7 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN7;
+ float tImagIn [] = CIMAG_IN7 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT7;
+ float tImagResult [] = CIMAG_RESULT7;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS7));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS7 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS7) ;
+
+
+
+ cfftma ( in , ROW , COLS7 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS7 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+static void cfftmaTest8 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN8;
+ float tImagIn [] = CIMAG_IN8 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT8 ;
+ float tImagResult [] = CIMAG_RESULT8 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS8));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS8 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS8) ;
+
+
+ cfftma ( in , ROW , COLS8 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS8 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,creals(out[i]) , cimags(out[i]), creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cfftmaTest9 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN9;
+ float tImagIn [] = CIMAG_IN9 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT9 ;
+ float tImagResult [] = CIMAG_RESULT9 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS9));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS9 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS9) ;
+
+
+ cfftma ( in , ROW , COLS9 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS9 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,creals(out[i]) , cimags(out[i]), creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+static void cfftmaTest10 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN10;
+ float tImagIn [] = CIMAG_IN10 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT10 ;
+ float tImagResult [] = CIMAG_RESULT10 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS10));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS10 );
+
+
+
+ cfftma ( in , ROW , COLS10 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS10 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+static void cfftmaTest11 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN11;
+ float tImagIn [] = CIMAG_IN11 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT11 ;
+ float tImagResult [] = CIMAG_RESULT11 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS11));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS11 );
+
+
+
+ cfftma ( in , ROW , COLS11 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS11 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+
+static void cfftmaTest12 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN12;
+ float tImagIn [] = CIMAG_IN12 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT12 ;
+ float tImagResult [] = CIMAG_RESULT12 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS12));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS12 );
+
+
+
+ cfftma ( in , ROW , COLS12 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS12 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-5 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+
+static void cfftmaTest13 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN13;
+ float tImagIn [] = CIMAG_IN13 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT13 ;
+ float tImagResult [] = CIMAG_RESULT13 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS13));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS13 );
+
+
+
+ cfftma ( in , ROW , COLS13 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS13 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+
+static void cfftmaTest14 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN14;
+ float tImagIn [] = CIMAG_IN14 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT14 ;
+ float tImagResult [] = CIMAG_RESULT14 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS14));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS14 );
+
+
+
+ cfftma ( in , ROW , COLS14 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS14 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+
+
+static void cfftmaTest15 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN15;
+ float tImagIn [] = CIMAG_IN15 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT15 ;
+ float tImagResult [] = CIMAG_RESULT15 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS15));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS15 );
+
+
+
+ cfftma ( in , ROW , COLS15 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS15 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+
+
+static void cfftmaTest16 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN16;
+ float tImagIn [] = CIMAG_IN16 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT16 ;
+ float tImagResult [] = CIMAG_RESULT16 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS16));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS16 );
+
+
+
+ cfftma ( in , ROW , COLS16 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS16 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+
+
+static void cfftmaTest32 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN32;
+ float tImagIn [] = CIMAG_IN32 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT32 ;
+ float tImagResult [] = CIMAG_RESULT32 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS32));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS32 );
+
+
+
+ cfftma ( in , ROW , COLS32 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS32 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-5 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+}
+
+static int testFft(void) {
+
+ printf("\n>>>> FFT Tests\n");
+ printf("\t>>>> Matrix Float Realt Tests\n");
+ /*dfftmaTest();*/
+
+ printf("\n\n\n");
+
+ printf("\n\t>>>> Vector 2 Float Complex Tests\n");
+ cfftmaTest2();
+ printf("\n\t>>>> Vector 3 Float Complex Tests\n");
+ cfftmaTest3();
+ printf("\n\t>>>> Vector 4 Float Complex Tests\n");
+ cfftmaTest4();
+ printf("\n\t>>>> Vector 5 Float Complex Tests\n");
+ cfftmaTest5();
+ printf("\n\t>>>> Vector 6 Float Complex Tests\n");
+ cfftmaTest6();
+ printf("\n\t>>>> Vector 7 Float Complex Tests\n");
+ cfftmaTest7();
+ printf("\n\t>>>> Vector 8 Float Complex Tests\n");
+ cfftmaTest8();
+ printf("\n\t>>>> Vector 9 Float Complex Tests\n");
+ cfftmaTest9();
+ printf("\n\t>>>> Vector 10 Float Complex Tests\n");
+ cfftmaTest10();
+ printf("\n\t>>>> Vector 11 Float Complex Tests\n");
+ cfftmaTest11();
+ printf("\n\t>>>> Vector 12 Float Complex Tests\n");
+ cfftmaTest12();
+ printf("\n\t>>>> Vector 13 Float Complex Tests\n");
+ cfftmaTest13();
+ printf("\n\t>>>> Vector 14 Float Complex Tests\n");
+ cfftmaTest14();
+ printf("\n\t>>>> Vector 14 Float Complex Tests\n");
+ cfftmaTest15();
+ printf("\n\t>>>> Vector 16 Float Complex Tests\n");
+ cfftmaTest16();
+ printf("\n\t>>>> Vector 32 Float Complex Tests\n");
+ cfftmaTest32();
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testFft() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/fft/testMatFft.c b/2.3-1/src/c/signalProcessing/fft/testMatFft.c
new file mode 100644
index 00000000..88631622
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/testMatFft.c
@@ -0,0 +1,297 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "fft.h"
+
+#define test1 {0.2113249000000000099586,0.3303270999999999846253,0.8497451999999999783242,0.0683740000000000042180,\
+ 0.7560438999999999909463,0.6653810999999999475918,0.6857309999999999794440,0.5608486000000000304411,\
+ 0.0002211000000000000075,0.6283917999999999448590,0.8782164999999999555058,0.6623569000000000261963}
+
+#define test2 {0.2113249000000000099586,0.6857309999999999794440,\
+ 0.3303270999999999846253,0.5608486000000000304411,\
+ 0.8497451999999999783242,0.0002211000000000000075,\
+ 0.0683740000000000042180,0.6283917999999999448590,\
+ 0.7560438999999999909463,0.8782164999999999555058,\
+ 0.6653810999999999475918,0.6623569000000000261963}
+
+#define test3 {0.2113249000000000099586,0.7560438999999999909463,0.0002211000000000000075,\
+ 0.3303270999999999846253,0.6653810999999999475918,0.6283917999999999448590,\
+ 0.8497451999999999783242,0.6857309999999999794440,0.8782164999999999555058,\
+ 0.0683740000000000042180,0.5608486000000000304411,0.6623569000000000261963}
+
+#define test4 {0.2113249000000000099586,0.0683740000000000042180,0.6857309999999999794440,0.6283917999999999448590,\
+ 0.3303270999999999846253,0.7560438999999999909463,0.5608486000000000304411,0.8782164999999999555058,\
+ 0.8497451999999999783242,0.6653810999999999475918,0.0002211000000000000075,0.6623569000000000261963}
+
+#define test6 {0.2113249000000000099586,0.8497451999999999783242,0.7560438999999999909463,0.6857309999999999794440,0.0002211000000000000075,0.8782164999999999555058,\
+ 0.3303270999999999846253,0.0683740000000000042180,0.6653810999999999475918,0.5608486000000000304411,0.6283917999999999448590,0.6623569000000000261963}
+
+#define test9 {1,2,3,4,5,6,7,8,9}
+
+#define RRESULT1 {6.2969621000000000066166,-0.1908142591446193858662,0.0676336000000001824617,\
+-1.4461027999999997994962,-0.7577484999999999359943,0.2136987591446193046618,\
+0.4656031000000000474870,0.2136987591446193046618,-0.7577484999999999359943,\
+-1.4461027999999997994962,0.0676336000000001824617,-0.1908142591446193858662}
+
+#define IRESULT1 {0,-0.0438615735192828815059,-1.0572926567728160307524,0.3325204999999997745874,\
+0.3011445725036896448046,-1.3036713264807171519521,0,1.3036713264807171519521,\
+-0.3011445725036896448046,-0.3325204999999997745874,1.0572926567728160307524,\
+0.0438615735192828815059}
+
+#define RRESULT2 {6.2969621000000000066166,-0.5345696999999998144659,\
+0.0676336000000000714394,-0.3918127000000001247670,\
+-0.7577485000000003800835,-1.2843509999999995763176,\
+0.4656030999999999364647,1.0404605000000000103455,\
+-0.7577485000000003800835,-1.2843509999999995763176,\
+0.0676336000000000714394,-0.3918127000000001247670}
+
+#define IRESULT2 {0,0,\
+-1.05729265677281625280,0.6392575178288871784460,\
+0.3011445725036897003157,-1.043770536118125757952,\
+0,0,\
+-0.3011445725036897003157,1.043770536118125757952,\
+1.05729265677281625280,-0.6392575178288871784460}
+
+#define RRESULT3 {6.2969621000000000066166,-0.9588242499999999335358,-0.9588242499999999335358,\
+-1.4461027999999997994962,-0.3545214899631756733101,-0.1146366100368243767793,\
+0.4656031000000000474870,0.7607519500000001766438,0.7607519500000001766438,\
+-1.4461027999999997994962,-0.1146366100368243767793,-0.3545214899631756733101}
+
+#define IRESULT3 {0,0.4319893196725672623870,-0.4319893196725672623870,\
+0.3325204999999997745874,1.0479284784196345459151,-0.5945896784196345041806,\
+0,0.5437395057261036335206,-0.5437395057261036335206,\
+-0.3325204999999997745874,0.5945896784196345041806,-1.0479284784196345459151}
+
+#define RRESULT4 {6.2969621000000000066166,0.1445965000000000166835,-1.0205663000000000373291,\
+ 0.1445965000000000166835,\
+-0.7577485000000003800835,-0.6754837907274804376101,0.8107183000000001138474,\
+ -0.8923310092725194042629,\
+-0.7577485000000003800835,-0.8923310092725194042629,0.8107183000000001138474,\
+ -0.6754837907274804376101}
+
+#define IRESULT4 {0,-0.6791661999999999421718,0,0.6791661999999999421718,\
+0.3011445725036897003157,-1.4357905268456061520510,-0.2297677979542606663266,\
+ -0.4349033268456063971996,\
+-0.3011445725036897003157,0.4349033268456063971996,0.2297677979542606663266,\
+ 1.4357905268456061520510}
+
+#define RRESULT6 {6.2969621000000000066166,-0.5006002499999999688640,-0.4661336499999999549715,\
+ -1.113582300000000024909,-0.4661336499999999549715,-0.5006002499999999688640,\
+0.46560309999999915931,0.5234847499999999431708,-0.2239812499999997985611,\
+ -1.7786232999999995740836,-0.2239812499999997985611,0.5234847499999999431708}
+
+#define IRESULT6 {0,0.1475342691353691004785,-1.2256565689200087376776,0,1.2256565689200087376776,\
+ -0.1475342691353691004785,\
+0,1.112275483826065114457,-0.1327806603564972709464,0,0.1327806603564972709464,\
+ -1.112275483826065114457}
+
+#define RRESULT9 {45,-4.5,-4.5,-13.5,0,0,-13.5,0,0}
+
+#define IRESULT9 {0,2.598076211353316011810,- 2.598076211353316011810,7.7942286340599471472501,0,0,- 7.7942286340599471472501,0,0}
+
+static void dfftmaTest(void){
+ int i;
+
+ double in1[]=test1;
+ double in2[]=test2;
+ double in3[]=test3;
+ double in4[]=test4;
+ double in6[]=test6;
+ double in9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resR2[]=RRESULT2;
+ double resR3[]=RRESULT3;
+ double resR4[]=RRESULT4;
+ double resR6[]=RRESULT6;
+ double resR9[]=RRESULT9;
+
+ double out1[12], out2[12], out3[12], out4[12], out6[12], out9[9];
+
+
+ printf(" >>> Matrice 1*12 <<< \n");
+ dfftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ printf("\t\n out : %e \t result : %e \t assert: %e",out1[i], resR1[i] ,(fabs(out1[i]-resR1[i]) / fabs(out1[i])) );
+ if (out1[i]>1e-16) assert( (fabs(out1[i]-resR1[i]) / fabs(out1[i])) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ dfftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ printf("\n\t out : %e \t result : %e \t assert: %e\n",out2[i], resR2[i] ,(fabs(out2[i]-resR2[i]) / fabs(out2[i])) );
+ if (out2[i]>1e-16) assert( (fabs(out2[i]-resR2[i]) / fabs(out2[i])) < 1e-13);
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ dfftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (out3[i]>1e-16) assert( (fabs(out3[i]-resR3[i]) / fabs(out3[i])) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ dfftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (out4[i]>1e-16) assert( (fabs(out4[i]-resR4[i]) / fabs(out4[i])) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ dfftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (out6[i]>1e-16) assert( (fabs(out6[i]-resR6[i]) / fabs(out6[i])) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ dfftma(in9, 3, 3, out9);
+ for (i=0;i<9;i++){
+ if (out9[i]>1e-16) assert( (fabs(out9[i]-resR9[i]) / fabs(out9[i])) < 1e-13);
+ else assert(1);
+ }
+
+
+}
+
+static void zfftmaTest(void){
+ int i;
+
+ double inR1[]=test1;
+ double inR2[]=test2;
+ double inR3[]=test3;
+ double inR4[]=test4;
+ double inR6[]=test6;
+ double inR9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resI1[]=IRESULT1;
+ double resR2[]=RRESULT2;
+ double resI2[]=IRESULT2;
+ double resR3[]=RRESULT3;
+ double resI3[]=IRESULT3;
+ double resR4[]=RRESULT4;
+ double resI4[]=IRESULT4;
+ double resR6[]=RRESULT6;
+ double resI6[]=IRESULT6;
+ double resR9[]=RRESULT9;
+ double resI9[]=IRESULT9;
+
+ doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, out1[12], out2[12], out3[12], out4[12], out6[12], out9[12];
+
+ in1=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+ in2=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+ in3=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+ in4=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+ in6=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+ in9=(doubleComplex*)malloc((unsigned int)9*sizeof(doubleComplex));
+
+
+
+ for (i=0;i<12;i++){
+ in1[i]=DoubleComplex(inR1[i],0);
+ in2[i]=DoubleComplex(inR2[i],0);
+ in3[i]=DoubleComplex(inR3[i],0);
+ in4[i]=DoubleComplex(inR4[i],0);
+ in6[i]=DoubleComplex(inR6[i],0);
+ }
+ for (i=0;i<9;i++){
+ in9[i]=DoubleComplex(inR9[i],0);
+
+ }
+
+ /* !!!!!!!!!!!!!!!!!!!!!!!
+ for the imaginary part, the assert is out + res instead of out - res
+ cause I export the transposate of the result matrix and the transposate change the sign
+ of the imaginary part.
+ And instead of change all the define, I only change the sign of the assert.*/
+ printf(" >>> Matrice 1*12 <<< \n");
+ zfftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ if (zreals(out1[i])>1e-16) assert( (fabs(zreals(out1[i])-resR1[i]) / fabs(zreals(out1[i]))) < 1e-13);
+ else assert(1);
+ if (zimags(out1[i])>1e-16) assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ zfftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ printf("\t\n outR : %e \t result : %e \t assert: %e",zreals(out2[i]), resR2[i] ,(fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) );
+ printf("\t\n outI : %e \t result : %e \t assert: %e",zimags(out2[i]), resI2[i] ,(fabs(zimags(out2[i])-resI2[i]) / fabs(zimags(out2[i]))) );
+ if (zreals(out2[i])>1e-16) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 1e-13);
+ else assert(1);
+ if (zimags(out2[i])>2e-16) assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 1e-13 );
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ zfftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (zreals(out3[i])>1e-16) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i]))) < 1e-13);
+ else assert(1);
+ if (zimags(out3[i])>1e-16) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ zfftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (zreals(out4[i])>1e-16) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i]))) < 1e-13);
+ else assert(1);
+ if (zimags(out4[i])>1e-16) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ zfftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (zreals(out6[i])>1e-16) assert( (fabs(zreals(out6[i])-resR6[i]) / fabs(zreals(out6[i]))) < 1e-13);
+ else assert(1);
+ if (zimags(out6[i])>1e-16) assert( (fabs(zimags(out6[i])+resI6[i]) / fabs(zimags(out6[i]))) < 1e-13);
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ zfftma(in9, 3, 3, out9);
+ for (i=0;i<9;i++){
+ if (zreals(out9[i])>1e-16) assert( (fabs(zreals(out9[i])-resR9[i]) / fabs(zreals(out9[i]))) < 1e-13);
+ else assert(1);
+
+ if (zimags(out9[i])>1e-16) assert( (fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i]))) < 1e-13);
+ else assert(1);
+ }
+}
+
+
+
+static int testFft(void){
+ dfftmaTest();
+ zfftmaTest();
+ return 0;
+}
+
+
+int main(void) {
+ printf(">>> Fft Matrices Double Tests <<<\n");
+ assert(testFft() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj b/2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj
new file mode 100644
index 00000000..67ae054d
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}</ProjectGuid>
+ <RootNamespace>testDoubleFft</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleFft.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters b/2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters
new file mode 100644
index 00000000..8824fe45
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleFft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj b/2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj
new file mode 100644
index 00000000..ee576dbc
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}</ProjectGuid>
+ <RootNamespace>testFloatFft</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatFft.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters b/2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters
new file mode 100644
index 00000000..0d9cec95
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatFft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj b/2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj
new file mode 100644
index 00000000..3f16af38
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A7A46527-B5F9-4B92-9C46-2416E2432314}</ProjectGuid>
+ <RootNamespace>testMatFft</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatFft.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters b/2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters
new file mode 100644
index 00000000..503e5a96
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatFft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fft/zfftma.c b/2.3-1/src/c/signalProcessing/fft/zfftma.c
new file mode 100644
index 00000000..48616eaf
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fft/zfftma.c
@@ -0,0 +1,156 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+#define FFT842 1
+#define DFFT2 0
+
+#include <stdlib.h>
+#include <math.h>
+#include "fft.h"
+#include "lapack.h"
+#include "fft_internal.h"
+
+void zfftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
+{
+
+ int choosenAlgo = DFFT2 ;
+
+ int size = rows*cols ;
+ int sizeTemp = 0;
+
+ int rowsTemp = 0 ;
+ int colsTemp = 0 ;
+
+ int ierr = 0 ;
+ int isn = -1;
+ int i = 0;
+
+ int increment=1;
+
+
+ double* realIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
+ double* imagIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
+ doubleComplex* inCopy = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size);
+
+ doubleComplex* inTemp = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size );
+
+ zimaga ( in , size , imagIn) ;
+ zreala ( in , size , realIn) ;
+ for(i=0;i<size;i++) inCopy[i]=in[i];
+
+ if ( rows == 1 || cols == 1 )
+ {
+ sizeTemp = (int) pow(2.0, (int) (log(size + 0.5) / log(2.0)));
+ if ( size == sizeTemp )
+ {
+ if ( size <= pow(2.0, 15.0))
+ {
+ fft842 ( inCopy , size , 0 );
+ choosenAlgo = FFT842 ;
+ }
+ else
+ {
+ dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr );
+ }
+ }
+ else
+ {
+ dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr );
+ }
+ }
+ else
+ {
+ rowsTemp = (int) pow(2.0, (int)(log(rows + 0.5) / log(2.0))) ;
+ colsTemp = (int) pow(2.0 ,(int)(log(cols + 0.5) / log(2.0))) ;
+
+ if ( rows == rowsTemp)
+ {
+ if ( rows <= pow(2.0, 15.0))
+ {
+ for ( i = 0 ; i < cols ; i++ )
+ {
+ fft842 ( &inCopy[ rows*i] , rows , 0);
+ /* stock new inCopy in realIn and imagIn
+ if the second call don't call fft842
+ ex : matrix 2*3 */
+ zimaga ( inCopy , size , imagIn) ;
+ zreala ( inCopy , size , realIn) ;
+ }
+ }
+ else
+ {
+ dfft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+ /* stock new realIn and imagIn in inCopy
+ if the second call call fft842
+ ex : matrix 3*2 */
+ inCopy=DoubleComplexMatrix(realIn,imagIn,size);
+ }
+ }
+ else
+ {
+ dfft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+ /* stock new realIn and imagIn in inCopy
+ if the second call call fft842
+ ex : matrix 3*2 */
+ inCopy=DoubleComplexMatrix(realIn,imagIn,size);
+ }
+ /*second call*/
+ if ( colsTemp == cols )
+ {
+ if ( cols <= pow(2.0, 15.0) )
+ {
+ /*compute the fft on each line of the matrix */
+ for (i = 0 ; i < rows ; i++ )
+ {
+ C2F(zcopy) ( &cols, inCopy + i, &rows, inTemp , &increment );
+
+ fft842( inTemp , cols , 0);
+ choosenAlgo = FFT842 ;
+ C2F(zcopy) ( &cols, inTemp , &increment, inCopy + i, &rows );
+
+ }
+ }
+ else
+ {
+ dfft2 ( realIn, imagIn, 1, cols, rows, isn, ierr);
+ }
+ }
+ else
+ {
+ dfft2 ( realIn, imagIn, 1, cols, rows, isn, ierr);
+ }
+
+ }
+
+
+
+ if ( choosenAlgo == FFT842 )
+ {
+ for ( i = 0 ; i < size ; i++)
+ {
+ out[i] = DoubleComplex ( zreals(inCopy[i]) , zimags(inCopy[i]) );
+ }
+ }
+ else
+ {
+ for ( i = 0 ; i < size ; i++)
+ {
+ out[i] = DoubleComplex ( realIn[i] , imagIn[i] );
+ }
+
+ }
+
+ free(realIn);
+ free(imagIn);
+ free(inCopy);
+ free(inTemp);
+
+}
diff --git a/2.3-1/src/c/signalProcessing/fftshift/Makefile.am b/2.3-1/src/c/signalProcessing/fftshift/Makefile.am
new file mode 100644
index 00000000..22ced909
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/Makefile.am
@@ -0,0 +1,68 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libFftShift_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libFftShift.la
+
+HEAD = ../includes/fftshift.h
+
+libFftShift_la_SOURCES = $(HEAD) \
+ sfftshifta.c \
+ dfftshifta.c \
+ cfftshifta.c \
+ zfftshifta.c \
+ srowfftshifta.c \
+ drowfftshifta.c \
+ crowfftshifta.c \
+ zrowfftshifta.c \
+ scolumnfftshifta.c \
+ dcolumnfftshifta.c \
+ ccolumnfftshifta.c \
+ zcolumnfftshifta.c
+
+
+###############
+#### Check ####
+###############
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libFftShift.la
+
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+check_PROGRAMS = testFloatFftShift testDoubleFftShift
+
+TESTS = testFloatFftShift testDoubleFftShift
+
+testDoubleFftShift_SOURCES = testDoubleFftShift.c
+testDoubleFftShift_LDADD = $(check_LDADD)
+testDoubleFftShift_CFLAGS = $(check_INCLUDES)
+
+testFloatFftShift_SOURCES = testFloatFftShift.c
+testFloatFftShift_LDADD = $(check_LDADD)
+testFloatFftShift_CFLAGS = $(check_INCLUDES)
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/Makefile.in b/2.3-1/src/c/signalProcessing/fftshift/Makefile.in
new file mode 100644
index 00000000..5d85d3d5
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/Makefile.in
@@ -0,0 +1,828 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatFftShift$(EXEEXT) \
+ testDoubleFftShift$(EXEEXT)
+TESTS = testFloatFftShift$(EXEEXT) testDoubleFftShift$(EXEEXT)
+subdir = src/c/signalProcessing/fftshift
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFftShift_la_LIBADD =
+am__objects_1 =
+am_libFftShift_la_OBJECTS = $(am__objects_1) \
+ libFftShift_la-sfftshifta.lo libFftShift_la-dfftshifta.lo \
+ libFftShift_la-cfftshifta.lo libFftShift_la-zfftshifta.lo \
+ libFftShift_la-srowfftshifta.lo \
+ libFftShift_la-drowfftshifta.lo \
+ libFftShift_la-crowfftshifta.lo \
+ libFftShift_la-zrowfftshifta.lo \
+ libFftShift_la-scolumnfftshifta.lo \
+ libFftShift_la-dcolumnfftshifta.lo \
+ libFftShift_la-ccolumnfftshifta.lo \
+ libFftShift_la-zcolumnfftshifta.lo
+libFftShift_la_OBJECTS = $(am_libFftShift_la_OBJECTS)
+libFftShift_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libFftShift_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleFftShift_OBJECTS = \
+ testDoubleFftShift-testDoubleFftShift.$(OBJEXT)
+testDoubleFftShift_OBJECTS = $(am_testDoubleFftShift_OBJECTS)
+testDoubleFftShift_DEPENDENCIES = $(check_LDADD)
+testDoubleFftShift_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleFftShift_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatFftShift_OBJECTS = \
+ testFloatFftShift-testFloatFftShift.$(OBJEXT)
+testFloatFftShift_OBJECTS = $(am_testFloatFftShift_OBJECTS)
+testFloatFftShift_DEPENDENCIES = $(check_LDADD)
+testFloatFftShift_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatFftShift_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libFftShift_la_SOURCES) $(testDoubleFftShift_SOURCES) \
+ $(testFloatFftShift_SOURCES)
+DIST_SOURCES = $(libFftShift_la_SOURCES) $(testDoubleFftShift_SOURCES) \
+ $(testFloatFftShift_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libFftShift_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFftShift.la
+HEAD = ../includes/fftshift.h
+libFftShift_la_SOURCES = $(HEAD) \
+ sfftshifta.c \
+ dfftshifta.c \
+ cfftshifta.c \
+ zfftshifta.c \
+ srowfftshifta.c \
+ drowfftshifta.c \
+ crowfftshifta.c \
+ zrowfftshifta.c \
+ scolumnfftshifta.c \
+ dcolumnfftshifta.c \
+ ccolumnfftshifta.c \
+ zcolumnfftshifta.c
+
+
+###############
+#### Check ####
+###############
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libFftShift.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+testDoubleFftShift_SOURCES = testDoubleFftShift.c
+testDoubleFftShift_LDADD = $(check_LDADD)
+testDoubleFftShift_CFLAGS = $(check_INCLUDES)
+testFloatFftShift_SOURCES = testFloatFftShift.c
+testFloatFftShift_LDADD = $(check_LDADD)
+testFloatFftShift_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/fftshift/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/fftshift/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libFftShift.la: $(libFftShift_la_OBJECTS) $(libFftShift_la_DEPENDENCIES)
+ $(libFftShift_la_LINK) -rpath $(pkglibdir) $(libFftShift_la_OBJECTS) $(libFftShift_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleFftShift$(EXEEXT): $(testDoubleFftShift_OBJECTS) $(testDoubleFftShift_DEPENDENCIES)
+ @rm -f testDoubleFftShift$(EXEEXT)
+ $(testDoubleFftShift_LINK) $(testDoubleFftShift_OBJECTS) $(testDoubleFftShift_LDADD) $(LIBS)
+testFloatFftShift$(EXEEXT): $(testFloatFftShift_OBJECTS) $(testFloatFftShift_DEPENDENCIES)
+ @rm -f testFloatFftShift$(EXEEXT)
+ $(testFloatFftShift_LINK) $(testFloatFftShift_OBJECTS) $(testFloatFftShift_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-ccolumnfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-cfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-crowfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-dcolumnfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-dfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-drowfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-scolumnfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-sfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-srowfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-zcolumnfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-zfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFftShift_la-zrowfftshifta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatFftShift-testFloatFftShift.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libFftShift_la-sfftshifta.lo: sfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-sfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-sfftshifta.Tpo -c -o libFftShift_la-sfftshifta.lo `test -f 'sfftshifta.c' || echo '$(srcdir)/'`sfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-sfftshifta.Tpo $(DEPDIR)/libFftShift_la-sfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfftshifta.c' object='libFftShift_la-sfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-sfftshifta.lo `test -f 'sfftshifta.c' || echo '$(srcdir)/'`sfftshifta.c
+
+libFftShift_la-dfftshifta.lo: dfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-dfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-dfftshifta.Tpo -c -o libFftShift_la-dfftshifta.lo `test -f 'dfftshifta.c' || echo '$(srcdir)/'`dfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-dfftshifta.Tpo $(DEPDIR)/libFftShift_la-dfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfftshifta.c' object='libFftShift_la-dfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-dfftshifta.lo `test -f 'dfftshifta.c' || echo '$(srcdir)/'`dfftshifta.c
+
+libFftShift_la-cfftshifta.lo: cfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-cfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-cfftshifta.Tpo -c -o libFftShift_la-cfftshifta.lo `test -f 'cfftshifta.c' || echo '$(srcdir)/'`cfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-cfftshifta.Tpo $(DEPDIR)/libFftShift_la-cfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cfftshifta.c' object='libFftShift_la-cfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-cfftshifta.lo `test -f 'cfftshifta.c' || echo '$(srcdir)/'`cfftshifta.c
+
+libFftShift_la-zfftshifta.lo: zfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-zfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-zfftshifta.Tpo -c -o libFftShift_la-zfftshifta.lo `test -f 'zfftshifta.c' || echo '$(srcdir)/'`zfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-zfftshifta.Tpo $(DEPDIR)/libFftShift_la-zfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfftshifta.c' object='libFftShift_la-zfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-zfftshifta.lo `test -f 'zfftshifta.c' || echo '$(srcdir)/'`zfftshifta.c
+
+libFftShift_la-srowfftshifta.lo: srowfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-srowfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-srowfftshifta.Tpo -c -o libFftShift_la-srowfftshifta.lo `test -f 'srowfftshifta.c' || echo '$(srcdir)/'`srowfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-srowfftshifta.Tpo $(DEPDIR)/libFftShift_la-srowfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowfftshifta.c' object='libFftShift_la-srowfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-srowfftshifta.lo `test -f 'srowfftshifta.c' || echo '$(srcdir)/'`srowfftshifta.c
+
+libFftShift_la-drowfftshifta.lo: drowfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-drowfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-drowfftshifta.Tpo -c -o libFftShift_la-drowfftshifta.lo `test -f 'drowfftshifta.c' || echo '$(srcdir)/'`drowfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-drowfftshifta.Tpo $(DEPDIR)/libFftShift_la-drowfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowfftshifta.c' object='libFftShift_la-drowfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-drowfftshifta.lo `test -f 'drowfftshifta.c' || echo '$(srcdir)/'`drowfftshifta.c
+
+libFftShift_la-crowfftshifta.lo: crowfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-crowfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-crowfftshifta.Tpo -c -o libFftShift_la-crowfftshifta.lo `test -f 'crowfftshifta.c' || echo '$(srcdir)/'`crowfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-crowfftshifta.Tpo $(DEPDIR)/libFftShift_la-crowfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowfftshifta.c' object='libFftShift_la-crowfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-crowfftshifta.lo `test -f 'crowfftshifta.c' || echo '$(srcdir)/'`crowfftshifta.c
+
+libFftShift_la-zrowfftshifta.lo: zrowfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-zrowfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-zrowfftshifta.Tpo -c -o libFftShift_la-zrowfftshifta.lo `test -f 'zrowfftshifta.c' || echo '$(srcdir)/'`zrowfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-zrowfftshifta.Tpo $(DEPDIR)/libFftShift_la-zrowfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowfftshifta.c' object='libFftShift_la-zrowfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-zrowfftshifta.lo `test -f 'zrowfftshifta.c' || echo '$(srcdir)/'`zrowfftshifta.c
+
+libFftShift_la-scolumnfftshifta.lo: scolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-scolumnfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-scolumnfftshifta.Tpo -c -o libFftShift_la-scolumnfftshifta.lo `test -f 'scolumnfftshifta.c' || echo '$(srcdir)/'`scolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-scolumnfftshifta.Tpo $(DEPDIR)/libFftShift_la-scolumnfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnfftshifta.c' object='libFftShift_la-scolumnfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-scolumnfftshifta.lo `test -f 'scolumnfftshifta.c' || echo '$(srcdir)/'`scolumnfftshifta.c
+
+libFftShift_la-dcolumnfftshifta.lo: dcolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-dcolumnfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-dcolumnfftshifta.Tpo -c -o libFftShift_la-dcolumnfftshifta.lo `test -f 'dcolumnfftshifta.c' || echo '$(srcdir)/'`dcolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-dcolumnfftshifta.Tpo $(DEPDIR)/libFftShift_la-dcolumnfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnfftshifta.c' object='libFftShift_la-dcolumnfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-dcolumnfftshifta.lo `test -f 'dcolumnfftshifta.c' || echo '$(srcdir)/'`dcolumnfftshifta.c
+
+libFftShift_la-ccolumnfftshifta.lo: ccolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-ccolumnfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-ccolumnfftshifta.Tpo -c -o libFftShift_la-ccolumnfftshifta.lo `test -f 'ccolumnfftshifta.c' || echo '$(srcdir)/'`ccolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-ccolumnfftshifta.Tpo $(DEPDIR)/libFftShift_la-ccolumnfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnfftshifta.c' object='libFftShift_la-ccolumnfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-ccolumnfftshifta.lo `test -f 'ccolumnfftshifta.c' || echo '$(srcdir)/'`ccolumnfftshifta.c
+
+libFftShift_la-zcolumnfftshifta.lo: zcolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -MT libFftShift_la-zcolumnfftshifta.lo -MD -MP -MF $(DEPDIR)/libFftShift_la-zcolumnfftshifta.Tpo -c -o libFftShift_la-zcolumnfftshifta.lo `test -f 'zcolumnfftshifta.c' || echo '$(srcdir)/'`zcolumnfftshifta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libFftShift_la-zcolumnfftshifta.Tpo $(DEPDIR)/libFftShift_la-zcolumnfftshifta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnfftshifta.c' object='libFftShift_la-zcolumnfftshifta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFftShift_la_CFLAGS) $(CFLAGS) -c -o libFftShift_la-zcolumnfftshifta.lo `test -f 'zcolumnfftshifta.c' || echo '$(srcdir)/'`zcolumnfftshifta.c
+
+testDoubleFftShift-testDoubleFftShift.o: testDoubleFftShift.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFftShift_CFLAGS) $(CFLAGS) -MT testDoubleFftShift-testDoubleFftShift.o -MD -MP -MF $(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Tpo -c -o testDoubleFftShift-testDoubleFftShift.o `test -f 'testDoubleFftShift.c' || echo '$(srcdir)/'`testDoubleFftShift.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Tpo $(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFftShift.c' object='testDoubleFftShift-testDoubleFftShift.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFftShift_CFLAGS) $(CFLAGS) -c -o testDoubleFftShift-testDoubleFftShift.o `test -f 'testDoubleFftShift.c' || echo '$(srcdir)/'`testDoubleFftShift.c
+
+testDoubleFftShift-testDoubleFftShift.obj: testDoubleFftShift.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFftShift_CFLAGS) $(CFLAGS) -MT testDoubleFftShift-testDoubleFftShift.obj -MD -MP -MF $(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Tpo -c -o testDoubleFftShift-testDoubleFftShift.obj `if test -f 'testDoubleFftShift.c'; then $(CYGPATH_W) 'testDoubleFftShift.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFftShift.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Tpo $(DEPDIR)/testDoubleFftShift-testDoubleFftShift.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleFftShift.c' object='testDoubleFftShift-testDoubleFftShift.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFftShift_CFLAGS) $(CFLAGS) -c -o testDoubleFftShift-testDoubleFftShift.obj `if test -f 'testDoubleFftShift.c'; then $(CYGPATH_W) 'testDoubleFftShift.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFftShift.c'; fi`
+
+testFloatFftShift-testFloatFftShift.o: testFloatFftShift.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFftShift_CFLAGS) $(CFLAGS) -MT testFloatFftShift-testFloatFftShift.o -MD -MP -MF $(DEPDIR)/testFloatFftShift-testFloatFftShift.Tpo -c -o testFloatFftShift-testFloatFftShift.o `test -f 'testFloatFftShift.c' || echo '$(srcdir)/'`testFloatFftShift.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFftShift-testFloatFftShift.Tpo $(DEPDIR)/testFloatFftShift-testFloatFftShift.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFftShift.c' object='testFloatFftShift-testFloatFftShift.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFftShift_CFLAGS) $(CFLAGS) -c -o testFloatFftShift-testFloatFftShift.o `test -f 'testFloatFftShift.c' || echo '$(srcdir)/'`testFloatFftShift.c
+
+testFloatFftShift-testFloatFftShift.obj: testFloatFftShift.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFftShift_CFLAGS) $(CFLAGS) -MT testFloatFftShift-testFloatFftShift.obj -MD -MP -MF $(DEPDIR)/testFloatFftShift-testFloatFftShift.Tpo -c -o testFloatFftShift-testFloatFftShift.obj `if test -f 'testFloatFftShift.c'; then $(CYGPATH_W) 'testFloatFftShift.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFftShift.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatFftShift-testFloatFftShift.Tpo $(DEPDIR)/testFloatFftShift-testFloatFftShift.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatFftShift.c' object='testFloatFftShift-testFloatFftShift.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFftShift_CFLAGS) $(CFLAGS) -c -o testFloatFftShift-testFloatFftShift.obj `if test -f 'testFloatFftShift.c'; then $(CYGPATH_W) 'testFloatFftShift.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFftShift.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/fftshift/ccolumnfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/ccolumnfftshifta.c
new file mode 100644
index 00000000..a388509b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/ccolumnfftshifta.c
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(floatComplex* in,int rows,int columns,floatComplex* out){
+ int i=0,j=0;
+
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+columns/2)%columns)*rows];
+}
+
+
+static void Odd(floatComplex* in,int rows,int columns,floatComplex* out){
+ int i=0,j=0;
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+(columns+1)/2)%columns)*rows];
+}
+
+
+
+
+
+
+void ccolumnfftshifta(floatComplex* in,int rows,int columns,floatComplex* out){
+ switch(columns%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/cfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/cfftshifta.c
new file mode 100644
index 00000000..9297ca3f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/cfftshifta.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "fftshift.h"
+
+void cfftshifta(floatComplex* in,int rows,int columns,floatComplex* out){
+ floatComplex* temp;
+
+ /*FIXME : malloc here*/
+ temp= (floatComplex *) malloc((unsigned int)(rows*columns)*sizeof(floatComplex));
+
+ crowfftshifta(in,rows,columns,temp);
+ ccolumnfftshifta(temp,rows,columns,out);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/crowfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/crowfftshifta.c
new file mode 100644
index 00000000..99b807ec
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/crowfftshifta.c
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(floatComplex* in,int rows,int columns,floatComplex* out){
+ int i=0,j=0;
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+((rows/2)+i)%rows];
+}
+
+
+static void Odd(floatComplex* in,int rows,int columns,floatComplex* out){
+ int i=0,j=0;
+
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+(((rows+1)/2)+i)%rows];
+}
+
+
+
+
+
+
+void crowfftshifta(floatComplex* in,int rows,int columns,floatComplex* out){
+ switch(rows%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/dcolumnfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/dcolumnfftshifta.c
new file mode 100644
index 00000000..a098a53a
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/dcolumnfftshifta.c
@@ -0,0 +1,45 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(double* in,int rows,int columns,double* out){
+ int i=0,j=0;
+
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+columns/2)%columns)*rows];
+}
+
+
+static void Odd(double* in,int rows,int columns,double* out){
+ int i=0,j=0;
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+(columns+1)/2)%columns)*rows];
+}
+
+
+
+void dcolumnfftshifta(double* in,int rows,int columns,double* out){
+ switch(columns%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/dfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/dfftshifta.c
new file mode 100644
index 00000000..ffab173b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/dfftshifta.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "fftshift.h"
+
+void dfftshifta(double* in,int rows,int columns,double* out){
+ double* temp;
+
+ /*FIXME : malloc here*/
+ temp= (double *) malloc((unsigned int)(rows*columns)*sizeof(double));
+
+ drowfftshifta(in,rows,columns,temp);
+ dcolumnfftshifta(temp,rows,columns,out);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/drowfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/drowfftshifta.c
new file mode 100644
index 00000000..522c8281
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/drowfftshifta.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(double* in,int rows,int columns,double* out){
+ int i=0,j=0;
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+((rows/2)+i)%rows];
+}
+
+
+static void Odd(double* in,int rows,int columns,double* out){
+ int i=0,j=0;
+
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+(((rows+1)/2)+i)%rows];
+}
+
+
+
+
+void drowfftshifta(double* in,int rows,int columns,double* out){
+ switch(rows%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/scolumnfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/scolumnfftshifta.c
new file mode 100644
index 00000000..f455d057
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/scolumnfftshifta.c
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(float* in,int rows,int columns,float* out){
+ int i=0,j=0;
+
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+columns/2)%columns)*rows];
+}
+
+
+static void Odd(float* in,int rows,int columns,float* out){
+ int i=0,j=0;
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+(columns+1)/2)%columns)*rows];
+}
+
+
+
+
+
+
+
+void scolumnfftshifta(float* in,int rows,int columns,float* out){
+ switch(columns%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/sfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/sfftshifta.c
new file mode 100644
index 00000000..a53734ac
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/sfftshifta.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "fftshift.h"
+
+void sfftshifta(float* in,int rows,int columns,float* out){
+ float* temp;
+
+ /*FIXME : malloc here*/
+ temp = (float *) malloc((unsigned int)(rows*columns)*sizeof(float));
+
+ srowfftshifta(in,rows,columns,temp);
+ scolumnfftshifta(temp,rows,columns,out);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/srowfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/srowfftshifta.c
new file mode 100644
index 00000000..b68c29cf
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/srowfftshifta.c
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(float* in,int rows,int columns,float* out){
+ int i=0,j=0;
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+((rows/2)+i)%rows];
+}
+
+
+static void Odd(float* in,int rows,int columns,float* out){
+ int i=0,j=0;
+
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+(((rows+1)/2)+i)%rows];
+}
+
+
+
+
+
+
+void srowfftshifta(float* in,int rows,int columns,float* out){
+ switch(rows%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/testDoubleFftShift.c b/2.3-1/src/c/signalProcessing/fftshift/testDoubleFftShift.c
new file mode 100644
index 00000000..e5d9452c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/testDoubleFftShift.c
@@ -0,0 +1,162 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+#include <assert.h>
+#include <stdio.h>
+
+#define SOURCE {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,\
+ 21,22,23,24,25,26,27,28,29,30}
+
+
+static void drowfftshiftaTest(void){
+ int i=0;
+
+ double in[]=SOURCE;
+ double result5_6[30]={4,5,1,2,3,9,10,6,7,8,14,15,11,12,13,19,20,16,17,18,24,25,21,22,23,29,30,26,27,28};
+ double result6_5[30]={4,5,6,1,2,3,10,11,12,7,8,9,16,17,18,13,14,15,22,23,24,19,20,21,28,29,30,25,26,27};
+ double out[30];
+
+ drowfftshifta(in,5,6,out);
+ for (i=0;i<30;i++) assert( out[i]-result5_6[i]==0);
+
+ drowfftshifta(in,6,5,out);
+ for (i=0;i<30;i++) assert( out[i]-result6_5[i]==0);
+
+}
+
+static void zrowfftshiftaTest(void){
+ int i=0;
+
+ double inR[]=SOURCE;
+ double result5_6[30]={4,5,1,2,3,9,10,6,7,8,14,15,11,12,13,19,20,16,17,18,24,25,21,22,23,29,30,26,27,28};
+ double result6_5[30]={4,5,6,1,2,3,10,11,12,7,8,9,16,17,18,13,14,15,22,23,24,19,20,21,28,29,30,25,26,27};
+ doubleComplex out[30];
+ double ZEROS[30]={0};
+ doubleComplex *in;
+
+ in=DoubleComplexMatrix(inR,ZEROS,30);
+
+ zrowfftshifta(in,5,6,out);
+ for (i=0;i<30;i++) {
+ assert( zreals(out[i])-result5_6[i]==0);
+ assert( zimags(out[i])==0);
+ }
+
+ zrowfftshifta(in,6,5,out);
+ for (i=0;i<30;i++) {
+ assert( zreals(out[i])-result6_5[i]==0);
+ assert( zimags(out[i])==0);
+ }
+}
+
+
+static void dcolumnfftshiftaTest(void){
+ int i=0;
+
+ double in[]=SOURCE;
+ double result5_6[30]={16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+ double result6_5[30]={19,20,21,22,23,24,25,26,27,28,29,30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};
+ double out[30];
+
+ dcolumnfftshifta(in,5,6,out);
+ for (i=0;i<30;i++) assert( out[i]-result5_6[i]==0);
+
+ dcolumnfftshifta(in,6,5,out);
+ for (i=0;i<30;i++) assert( out[i]-result6_5[i]==0);
+
+}
+
+static void zcolumnfftshiftaTest(void){
+ int i=0;
+
+ double inR[]=SOURCE;
+ double result5_6[30]={16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+ double result6_5[30]={19,20,21,22,23,24,25,26,27,28,29,30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};
+ doubleComplex out[30];
+ double ZEROS[30]={0};
+ doubleComplex *in;
+
+ in=DoubleComplexMatrix(inR,ZEROS,30);
+
+ zcolumnfftshifta(in,5,6,out);
+ for (i=0;i<30;i++) {
+ assert( zreals(out[i])-result5_6[i]==0);
+ assert( zimags(out[i])==0);
+ }
+
+ zcolumnfftshifta(in,6,5,out);
+ for (i=0;i<30;i++) {
+ assert( zreals(out[i])-result6_5[i]==0);
+ assert( zimags(out[i])==0);
+ }
+
+}
+
+static void dfttshiftaTest(void){
+ int i=0;
+
+ double in[]=SOURCE;
+ double result5_6[30]={19,20,16,17,18,24,25,21,22,23,29,30,26,27,28,4,5,1,2,3,9,10,6,7,8,14,15,11,12,13};
+ double result6_5[30]={22,23,24,19,20,21,28,29,30,25,26,27,4,5,6,1,2,3,10,11,12,7,8,9,16,17,18,13,14,15};
+ double out[30];
+
+ dfftshifta(in,5,6,out);
+ for (i=0;i<30;i++) assert( out[i]-result5_6[i]==0);
+
+ dfftshifta(in,6,5,out);
+ for (i=0;i<30;i++) assert( out[i]-result6_5[i]==0);
+
+}
+
+static void zfftshiftaTest(void){
+ int i=0;
+
+ double inR[]=SOURCE;
+ double result5_6[30]={19,20,16,17,18,24,25,21,22,23,29,30,26,27,28,4,5,1,2,3,9,10,6,7,8,14,15,11,12,13};
+ double result6_5[30]={22,23,24,19,20,21,28,29,30,25,26,27,4,5,6,1,2,3,10,11,12,7,8,9,16,17,18,13,14,15};
+ doubleComplex out[30];
+ double ZEROS[30]={0};
+ doubleComplex *in;
+
+ in=DoubleComplexMatrix(inR,ZEROS,30);
+
+ zfftshifta(in,5,6,out);
+ for (i=0;i<30;i++) {
+ assert( zreals(out[i])-result5_6[i]==0);
+ assert( zimags(out[i])==0);
+ }
+
+ zfftshifta(in,6,5,out);
+ for (i=0;i<30;i++) {
+ assert( zreals(out[i])-result6_5[i]==0);
+ assert( zimags(out[i])==0);
+ }
+
+}
+
+static int FftShiftTest(void){
+ drowfftshiftaTest();
+ zrowfftshiftaTest();
+ dcolumnfftshiftaTest();
+ zcolumnfftshiftaTest();
+ dfttshiftaTest();
+ zfftshiftaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert (FftShiftTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/fftshift/testFloatFftShift.c b/2.3-1/src/c/signalProcessing/fftshift/testFloatFftShift.c
new file mode 100644
index 00000000..19b85738
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/testFloatFftShift.c
@@ -0,0 +1,159 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+#include <assert.h>
+#define SOURCE {1,2,3,4,5,6,7,8,9,10,11,12}
+
+
+static void srowfftshiftaTest(void){
+ int i=0;
+
+ float in[]=SOURCE;
+ float result3_4[12]={3,1,2,6,4,5,9,7,8,12,10,11};
+ float result4_3[12]={3,4,1,2,7,8,5,6,11,12,9,10};
+ float out[12];
+
+ srowfftshifta(in,3,4,out);
+ for (i=0;i<12;i++) assert( out[i]-result3_4[i]==0);
+
+ srowfftshifta(in,4,3,out);
+ for (i=0;i<12;i++) assert( out[i]-result4_3[i]==0);
+
+}
+
+static void crowfftshiftaTest(void){
+ int i=0;
+
+ float inR[]=SOURCE;
+ float result3_4[12]={3,1,2,6,4,5,9,7,8,12,10,11};
+ float result4_3[12]={3,4,1,2,7,8,5,6,11,12,9,10};
+ floatComplex out[12];
+ float ZEROS[12]={0};
+ floatComplex *in;
+
+ in=FloatComplexMatrix(inR,ZEROS,12);
+
+ crowfftshifta(in,3,4,out);
+ for (i=0;i<12;i++) {
+ assert( creals(out[i])-result3_4[i]==0);
+ assert( cimags(out[i])==0);
+ }
+
+ crowfftshifta(in,4,3,out);
+ for (i=0;i<12;i++) {
+ assert( creals(out[i])-result4_3[i]==0);
+ assert( cimags(out[i])==0);
+ }
+}
+
+
+static void scolumnfftshiftaTest(void){
+ int i=0;
+
+ float in[]=SOURCE;
+ float result3_4[12]={7,8,9,10,11,12,1,2,3,4,5,6};
+ float result4_3[12]={9,10,11,12,1,2,3,4,5,6,7,8};
+ float out[12];
+
+ scolumnfftshifta(in,3,4,out);
+ for (i=0;i<12;i++) assert( out[i]-result3_4[i]==0);
+
+ scolumnfftshifta(in,4,3,out);
+ for (i=0;i<12;i++) assert( out[i]-result4_3[i]==0);
+
+}
+
+static void ccolumnfftshiftaTest(void){
+ int i=0;
+
+ float inR[]=SOURCE;
+ float result3_4[12]={7,8,9,10,11,12,1,2,3,4,5,6};
+ float result4_3[12]={9,10,11,12,1,2,3,4,5,6,7,8};
+ floatComplex out[12];
+ float ZEROS[12]={0};
+ floatComplex *in;
+
+ in=FloatComplexMatrix(inR,ZEROS,12);
+
+ ccolumnfftshifta(in,3,4,out);
+ for (i=0;i<12;i++) {
+ assert( creals(out[i])-result3_4[i]==0);
+ assert( cimags(out[i])==0);
+ }
+
+ ccolumnfftshifta(in,4,3,out);
+ for (i=0;i<12;i++) {
+ assert( creals(out[i])-result4_3[i]==0);
+ assert( cimags(out[i])==0);
+ }
+
+}
+
+static void sfftshiftaTest(void){
+ int i=0;
+
+ float in[]=SOURCE;
+ float result3_4[12]={9,7,8,12,10,11,3,1,2,6,4,5};
+ float result4_3[12]={11,12,9,10,3,4,1,2,7,8,5,6};
+ float out[12];
+
+ sfftshifta(in,3,4,out);
+ for (i=0;i<12;i++) assert( out[i]-result3_4[i]==0);
+
+ sfftshifta(in,4,3,out);
+ for (i=0;i<12;i++) assert( out[i]-result4_3[i]==0);
+
+}
+
+static void cfftshiftaTest(void){
+ int i=0;
+
+ float inR[]=SOURCE;
+ float result3_4[12]={9,7,8,12,10,11,3,1,2,6,4,5};
+ float result4_3[12]={11,12,9,10,3,4,1,2,7,8,5,6};
+ floatComplex out[12];
+ float ZEROS[12]={0};
+ floatComplex *in;
+
+ in=FloatComplexMatrix(inR,ZEROS,12);
+
+ cfftshifta(in,3,4,out);
+ for (i=0;i<12;i++) {
+ assert( creals(out[i])-result3_4[i]==0);
+ assert( cimags(out[i])==0);
+ }
+
+ cfftshifta(in,4,3,out);
+ for (i=0;i<12;i++) {
+ assert( creals(out[i])-result4_3[i]==0);
+ assert( cimags(out[i])==0);
+ }
+
+}
+
+static int FftShiftTest(void){
+ srowfftshiftaTest();
+ crowfftshiftaTest();
+ scolumnfftshiftaTest();
+ ccolumnfftshiftaTest();
+ sfftshiftaTest();
+ cfftshiftaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert (FftShiftTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj b/2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj
new file mode 100644
index 00000000..ea8aa7fd
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{1EA7E165-A87C-49EA-90CB-2AECD5FED605}</ProjectGuid>
+ <RootNamespace>testDoubleFftShift</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleFftShift.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj.filters b/2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj.filters
new file mode 100644
index 00000000..d0da7186
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/test_DoubleFftShift/testDoubleFftShift.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleFftShift.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj b/2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj
new file mode 100644
index 00000000..1b013a88
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{CF3E80F1-A0B6-465B-9285-11753E84B7F4}</ProjectGuid>
+ <RootNamespace>testFloatFftShift</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatFftShift.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj.filters b/2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj.filters
new file mode 100644
index 00000000..f9761954
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/test_FloatFftShift/testFloatFftShift.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatFftShift.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/fftshift/zcolumnfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/zcolumnfftshifta.c
new file mode 100644
index 00000000..fc36acde
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/zcolumnfftshifta.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ int i=0,j=0;
+
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+columns/2)%columns)*rows];
+}
+
+
+static void Odd(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ int i=0,j=0;
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[i+((j+(columns+1)/2)%columns)*rows];
+}
+
+
+
+
+void zcolumnfftshifta(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ switch(columns%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/zfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/zfftshifta.c
new file mode 100644
index 00000000..6cf4e25b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/zfftshifta.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "fftshift.h"
+
+void zfftshifta(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ doubleComplex* temp;
+
+ /*FIXME : malloc here*/
+ temp=(doubleComplex *) malloc((unsigned int)(rows*columns)*sizeof(doubleComplex));
+
+ zrowfftshifta(in,rows,columns,temp);
+ zcolumnfftshifta(temp,rows,columns,out);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/fftshift/zrowfftshifta.c b/2.3-1/src/c/signalProcessing/fftshift/zrowfftshifta.c
new file mode 100644
index 00000000..b5fbb699
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fftshift/zrowfftshifta.c
@@ -0,0 +1,45 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "fftshift.h"
+
+static void Pair(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ int i=0,j=0;
+
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+((rows/2)+i)%rows];
+}
+
+
+static void Odd(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ int i=0,j=0;
+
+ /*
+ same as Pair with some change in the indice
+ */
+ for (i=0;i<rows;i++)
+ for(j=0;j<columns;j++)
+ out[i+j*rows]=in[j*rows+(((rows+1)/2)+i)%rows];
+}
+
+
+
+void zrowfftshifta(doubleComplex* in,int rows,int columns,doubleComplex* out){
+ switch(rows%2){
+ case 0 : Pair(in,rows,columns,out); break;
+ case 1 : Odd(in,rows,columns,out); break;
+ default : break;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/hilbert/Makefile.am b/2.3-1/src/c/signalProcessing/hilbert/Makefile.am
new file mode 100644
index 00000000..86226104
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/Makefile.am
@@ -0,0 +1,67 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libHilbert_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libHilbert.la
+
+HEAD = ../includes/hilbert.h
+
+
+
+libHilbert_la_SOURCES = $(HEAD) \
+ shilberta.c \
+ dhilberta.c \
+ shilberts.c \
+ dhilberts.c
+
+
+###############
+#### Check ####
+###############
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran//blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/signalProcessing/hilbert/libHilbert.la
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/fft \
+ -I $(top_builddir)/src/c/signalProcessing/ifft \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+check_PROGRAMS = testHilbert
+
+TESTS = testHilbert
+
+
+testHilbert_SOURCES = testHilbert.c
+testHilbert_LDADD = $(check_LDADD)
+testHilbert_CFLAGS = $(check_INCLUDES)
diff --git a/2.3-1/src/c/signalProcessing/hilbert/Makefile.in b/2.3-1/src/c/signalProcessing/hilbert/Makefile.in
new file mode 100644
index 00000000..5b712e57
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/Makefile.in
@@ -0,0 +1,726 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testHilbert$(EXEEXT)
+TESTS = testHilbert$(EXEEXT)
+subdir = src/c/signalProcessing/hilbert
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libHilbert_la_LIBADD =
+am__objects_1 =
+am_libHilbert_la_OBJECTS = $(am__objects_1) libHilbert_la-shilberta.lo \
+ libHilbert_la-dhilberta.lo libHilbert_la-shilberts.lo \
+ libHilbert_la-dhilberts.lo
+libHilbert_la_OBJECTS = $(am_libHilbert_la_OBJECTS)
+libHilbert_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libHilbert_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testHilbert_OBJECTS = testHilbert-testHilbert.$(OBJEXT)
+testHilbert_OBJECTS = $(am_testHilbert_OBJECTS)
+testHilbert_DEPENDENCIES = $(check_LDADD)
+testHilbert_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testHilbert_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libHilbert_la_SOURCES) $(testHilbert_SOURCES)
+DIST_SOURCES = $(libHilbert_la_SOURCES) $(testHilbert_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libHilbert_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libHilbert.la
+HEAD = ../includes/hilbert.h
+libHilbert_la_SOURCES = $(HEAD) \
+ shilberta.c \
+ dhilberta.c \
+ shilberts.c \
+ dhilberts.c
+
+
+###############
+#### Check ####
+###############
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran//blas/libsciblas.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/signalProcessing/hilbert/libHilbert.la
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/fft \
+ -I $(top_builddir)/src/c/signalProcessing/ifft \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+testHilbert_SOURCES = testHilbert.c
+testHilbert_LDADD = $(check_LDADD)
+testHilbert_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/hilbert/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/hilbert/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libHilbert.la: $(libHilbert_la_OBJECTS) $(libHilbert_la_DEPENDENCIES)
+ $(libHilbert_la_LINK) -rpath $(pkglibdir) $(libHilbert_la_OBJECTS) $(libHilbert_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testHilbert$(EXEEXT): $(testHilbert_OBJECTS) $(testHilbert_DEPENDENCIES)
+ @rm -f testHilbert$(EXEEXT)
+ $(testHilbert_LINK) $(testHilbert_OBJECTS) $(testHilbert_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHilbert_la-dhilberta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHilbert_la-dhilberts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHilbert_la-shilberta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHilbert_la-shilberts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testHilbert-testHilbert.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libHilbert_la-shilberta.lo: shilberta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -MT libHilbert_la-shilberta.lo -MD -MP -MF $(DEPDIR)/libHilbert_la-shilberta.Tpo -c -o libHilbert_la-shilberta.lo `test -f 'shilberta.c' || echo '$(srcdir)/'`shilberta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libHilbert_la-shilberta.Tpo $(DEPDIR)/libHilbert_la-shilberta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shilberta.c' object='libHilbert_la-shilberta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -c -o libHilbert_la-shilberta.lo `test -f 'shilberta.c' || echo '$(srcdir)/'`shilberta.c
+
+libHilbert_la-dhilberta.lo: dhilberta.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -MT libHilbert_la-dhilberta.lo -MD -MP -MF $(DEPDIR)/libHilbert_la-dhilberta.Tpo -c -o libHilbert_la-dhilberta.lo `test -f 'dhilberta.c' || echo '$(srcdir)/'`dhilberta.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libHilbert_la-dhilberta.Tpo $(DEPDIR)/libHilbert_la-dhilberta.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhilberta.c' object='libHilbert_la-dhilberta.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -c -o libHilbert_la-dhilberta.lo `test -f 'dhilberta.c' || echo '$(srcdir)/'`dhilberta.c
+
+libHilbert_la-shilberts.lo: shilberts.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -MT libHilbert_la-shilberts.lo -MD -MP -MF $(DEPDIR)/libHilbert_la-shilberts.Tpo -c -o libHilbert_la-shilberts.lo `test -f 'shilberts.c' || echo '$(srcdir)/'`shilberts.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libHilbert_la-shilberts.Tpo $(DEPDIR)/libHilbert_la-shilberts.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shilberts.c' object='libHilbert_la-shilberts.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -c -o libHilbert_la-shilberts.lo `test -f 'shilberts.c' || echo '$(srcdir)/'`shilberts.c
+
+libHilbert_la-dhilberts.lo: dhilberts.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -MT libHilbert_la-dhilberts.lo -MD -MP -MF $(DEPDIR)/libHilbert_la-dhilberts.Tpo -c -o libHilbert_la-dhilberts.lo `test -f 'dhilberts.c' || echo '$(srcdir)/'`dhilberts.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libHilbert_la-dhilberts.Tpo $(DEPDIR)/libHilbert_la-dhilberts.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhilberts.c' object='libHilbert_la-dhilberts.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libHilbert_la_CFLAGS) $(CFLAGS) -c -o libHilbert_la-dhilberts.lo `test -f 'dhilberts.c' || echo '$(srcdir)/'`dhilberts.c
+
+testHilbert-testHilbert.o: testHilbert.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -MT testHilbert-testHilbert.o -MD -MP -MF $(DEPDIR)/testHilbert-testHilbert.Tpo -c -o testHilbert-testHilbert.o `test -f 'testHilbert.c' || echo '$(srcdir)/'`testHilbert.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testHilbert-testHilbert.Tpo $(DEPDIR)/testHilbert-testHilbert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testHilbert.c' object='testHilbert-testHilbert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -c -o testHilbert-testHilbert.o `test -f 'testHilbert.c' || echo '$(srcdir)/'`testHilbert.c
+
+testHilbert-testHilbert.obj: testHilbert.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -MT testHilbert-testHilbert.obj -MD -MP -MF $(DEPDIR)/testHilbert-testHilbert.Tpo -c -o testHilbert-testHilbert.obj `if test -f 'testHilbert.c'; then $(CYGPATH_W) 'testHilbert.c'; else $(CYGPATH_W) '$(srcdir)/testHilbert.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testHilbert-testHilbert.Tpo $(DEPDIR)/testHilbert-testHilbert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testHilbert.c' object='testHilbert-testHilbert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testHilbert_CFLAGS) $(CFLAGS) -c -o testHilbert-testHilbert.obj `if test -f 'testHilbert.c'; then $(CYGPATH_W) 'testHilbert.c'; else $(CYGPATH_W) '$(srcdir)/testHilbert.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/hilbert/dhilberta.c b/2.3-1/src/c/signalProcessing/hilbert/dhilberta.c
new file mode 100644
index 00000000..815cc7a3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/dhilberta.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "hilbert.h"
+#include "fft.h"
+#include "ifft.h"
+#include "multiplication.h"
+#include <stdio.h>
+
+void dhilberta (double* in, int rows, int cols, doubleComplex *out){
+ int i=0,size=rows*cols;
+
+
+ for (i=0;i<rows*cols;i++) out[i]=DoubleComplex(in[i],0);
+
+
+ zfftma(out, rows, cols, out);
+
+ for (i=0;i<size;i++){
+ if ((i>0)&&(i<((size+1)/2))) out[i] = zmuls(out[i],DoubleComplex(2,0));
+ if (i>(size/2)) out[i] = zmuls(out[i],DoubleComplex(0,0));
+ }
+
+ zifftma(out, rows, cols,out);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/hilbert/dhilberts.c b/2.3-1/src/c/signalProcessing/hilbert/dhilberts.c
new file mode 100644
index 00000000..87980311
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/dhilberts.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "hilbert.h"
+
+double dhilberts (double in){
+ return in;
+}
diff --git a/2.3-1/src/c/signalProcessing/hilbert/shilberta.c b/2.3-1/src/c/signalProcessing/hilbert/shilberta.c
new file mode 100644
index 00000000..c65bb564
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/shilberta.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "hilbert.h"
+#include "fft.h"
+#include "ifft.h"
+#include "multiplication.h"
+
+void shilberta (float* in, int rows, int cols, floatComplex *out){
+ int i;
+ int size=rows*cols;
+
+ for (i=0;i<rows*cols;i++) out[i]=FloatComplex(in[i],0);
+
+ cfftma(out, rows, cols, out);
+
+ for (i=0;i<size;i++){
+ if ((i>0)&&(i<(size+1)/2)) out[i] = cmuls(out[i],FloatComplex(2,0));
+ if (i>size/2) out[i] = cmuls(out[i],FloatComplex(0,0));
+ }
+
+ cifftma(out, rows, cols,out);
+}
diff --git a/2.3-1/src/c/signalProcessing/hilbert/shilberts.c b/2.3-1/src/c/signalProcessing/hilbert/shilberts.c
new file mode 100644
index 00000000..92f2c7cc
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/shilberts.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "hilbert.h"
+
+
+float shilberts (float in){
+ return in;
+}
diff --git a/2.3-1/src/c/signalProcessing/hilbert/testHilbert.c b/2.3-1/src/c/signalProcessing/hilbert/testHilbert.c
new file mode 100644
index 00000000..ad50e459
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/testHilbert.c
@@ -0,0 +1,851 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "hilbert.h"
+
+
+#define SOURCE2 {.7560438541695475578308,0.0002211346291005611420,\
+0.3303270917385816574097,0.6653811042197048664093}
+
+#define SOURCE3 {0.6283917883411049842835,0.8497452358715236186981,0.6857310198247432708740,\
+0.8782164813019335269928,0.0683740368112921714783,0.5608486062847077846527,\
+0.6623569373041391372681,0.7263506767340004444122,0.1985143842175602912903}
+
+#define SOURCE4 {0.5442573162727057933807,0.2320747897028923034668,0.2312237196601927280426,\
+ 0.2164632631465792655945,\
+0.8833887814544141292572,0.6525134947150945663452,0.3076090742833912372589,\
+ 0.9329616213217377662659,\
+0.2146007861010730266571,0.3126419968903064727783,0.3616361008025705814362,\
+ 0.2922266637906432151794,\
+0.5664248815737664699554,0.4826471973210573196411,0.3321718913502991199493,\
+ 0.5935094701126217842102}
+
+#define SOURCE5 {0.3572649653069674968720,0.7693399824202060699463,0.5477633909322321414948,\
+ 0.0962288742884993553162,0.9561171731911599636078,\
+0.2207408566027879714966,0.0143259358592331409454,0.8191489772871136665344,\
+ 0.1304992842487990856171,0.9682003557682037353516,\
+0.6561381467618048191071,0.2445538965985178947449,0.5283123566769063472748,\
+ 0.8468925636261701583862,0.7876622085459530353546,\
+0.1262082615867257118225,0.7883860985748469829559,0.3453042469918727874756,\
+ 0.2659857333637773990631,0.9709818651899695396423,\
+0.8875247663818299770355,0.2066752854734659194946,0.8525160965509712696075,\
+ 0.6744697811082005500794,0.9152874383144080638886}
+
+#define SOURCE7 {0.0284859761595726013184,0.2367841475643217563629,0.7015343559905886650085,\
+ 0.1202526628039777278900,0.8287412133067846298218,0.3161072959192097187042,\
+ 0.5305190766230225563049,\
+0.5715174819342792034149,0.0478015430271625518799,0.8248619721271097660065,\
+ 0.5798843121156096458435,0.2791808298788964748383,0.9545110929757356643677,\
+ 0.9071154636330902576447,\
+0.3360149310901761054993,0.1175613063387572765350,0.9253723770380020141602,\
+ 0.7263671257533133029938,0.9009497938677668571472,0.3948993249796330928803,\
+ 0.5655179750174283981323,\
+0.7061489676125347614288,0.6787831196561455726624,0.413293636869639158249,\
+ 0.1402290873229503631592,0.4952356130816042423248,0.4194877287372946739197,\
+ 0.8626222289167344570160,\
+0.2857509646564722061157,0.2512136367149651050568,0.3389101596549153327942,\
+ 0.3921975973062217235565,0.4681552127003669738770,0.3361602746881544589996,\
+ 0.5336876614019274711609,\
+0.2039063959382474422455,0.1589989718049764633179,0.0181815107353031635284,\
+ 0.4098370606079697608948,0.0105834598653018474579,0.1965309716761112213135,\
+ 0.2725595370866358280182,\
+0.3437655037268996238709,0.2033702037297189235687,0.3011944610625505447388,\
+ 0.2762595904059708118439,0.2944530742242932319641,0.5718073952011764049530,\
+ 0.2141770124435424804688}
+
+#define SOURCE12 {0.5595936686731874942780,0.1249340316280722618103}
+
+#define SOURCE13 {0.7279222286306321620941,0.2677766475826501846314,0.5465334919281303882599}
+
+#define SOURCE14 {0.9885407658293843269348,0.7395656588487327098846,0.0037173107266426086426,\
+0.5900572859682142734528}
+
+#define SOURCE15 {0.3096467358991503715515,0.2552205710671842098236,0.6251879390329122543335,\
+0.1157417376525700092316,0.6117004090920090675354}
+
+#define SOURCE17 {0.6783956284634768962860,0.3320095278322696685791,0.0258709923364222049713,\
+0.5174468224868178367615,0.3916873238049447536469,0.2413538414984941482544,\
+0.5064434898085892200470}
+
+#define SOURCE31 {0.4236102001741528511047,0.2893727528862655162811,0.0887932181358337402344}
+
+#define SOURCE32 {0.6212881752289831638336,0.3454984454438090324402,0.7064867629669606685638,\
+0.5211472492665052413940,0.2870400850661098957062,0.6502795079723000526428}
+
+#define SOURCE34 {0.0881334762088954448700,0.4498763345181941986084,0.722725308034569025040,\
+0.8976796260103583335877,0.2427821881137788295746,0.4337721113115549087524,\
+0.9677053210325539112091,0.5068534435704350471497,0.523297640960663557053,\
+0.5596947595477104187012,0.5617307000793516635895,0.468176002614200115204}
+
+#define SOURCE35 {0.7794546722434461116791,0.7901071812957525253296,0.9808542062528431415558,\
+0.8187066102400422096252,0.4256872381083667278290,0.2461560554802417755127,\
+0.922953246627002954483,0.1000745808705687522888,0.4678218117915093898773,\
+0.3950497675687074661255,0.0366117102093994617462,0.5175368534401059150696,\
+0.8325451570563018321991,0.6104832142591476440430,0.1871111788786947727203}
+
+#define SOURCE37 {0.0189574835821986198425,0.8433564766310155391693,0.0748594831675291061401,\
+0.8532815133221447467804,0.0124590108171105384827,0.1867539356462657451630,\
+0.4920584075152873992920,0.7489608139730989933014,0.9414957007393240928650,\
+0.212405560072511434555,0.5795019958168268203735,0.2628147569485008716583,\
+0.4360986622050404548645,0.9110545101575553417206,0.8082667365670204162598,\
+0.8102653049863874912262,0.2590428395196795463562,0.4139087288640439510346,\
+0.3599927779287099838257,0.6912787933833897113800,0.7656858796253800392151}
+
+
+#define RESULTR2 {0.5885168479289859533310,0.1677481408696621656418,\
+0.7082384515088051557541,0.2874697444494813680649}
+
+#define RESULTR3 {1.0529534542001781627363,0.7069182925236719983175,0.4039962973135212687126,\
+0.8377721576641001810515,0.3181039501602450081386,0.3515630165735879608668,\
+0.6943617464664080252135,0.5110746005860467011672,0.3817856512032448690341}
+
+#define RESULTR4 {0.6752608462702482938767,0.2057518342044204473496,-0.0427890990395098924637,\
+ 0.3857955073472112417221,\
+0.9621772530954331159592,0.6242313084658235311508,0.3033984049689024686813,\
+ 0.8866660052444785833359,\
+0.3456043160986155271530,0.2863190413918346166611,0.0876232821028679609299,\
+ 0.4615589079912751913071,\
+0.6452133532147854566574,0.454365011071786284447,0.3279612220358103513718,\
+ 0.5472138540353626012802}
+
+#define RESULTR5 {0.2962400295259193239161,0.3089018898394935153107,0.8970718315147718779912,\
+ -0.1110250488619887454522,1.3355256841208691387379,\
+0.2186875433360468412580,0.0142399996764340786015,0.5494750142671456227816,\
+ 0.1438244289733127678765,1.2266884235131985114720,\
+0.3243622761355875461220,0.146488853809641050852,0.8307917790741377039865,\
+ 0.4672829933864904861096,1.294633269803495245753,\
+0.2689630731113705763846,0.3885024240640397863444,0.3410024486082647299234,\
+ 0.3015788194209125805401,1.196819440502604692256,\
+0.5921953628411829040346,0.3931235221328068796254,0.7724433550837475070949,\
+ 0.4311855720220420518096,1.3475255557490961599854}
+
+#define RESULTR7 {0.0221790934600933908882,0.1223243807506165237165,0.8078579279308952809657,\
+ 0.0831055973421020999226,0.7234293187562024218806,0.3410300566625018015010,\
+ 0.6624983534650656924470,\
+0.4173417573555355808423,-0.1702289447306715719499,0.8932521097561832990053,\
+ 0.5795505696167876363845,0.4650900528477819317885,0.9531674534660129483044,\
+ 1.0266996973802535730869,\
+0.3592502496807103984366,-0.0602177881600134204398,1.0040005062671357727311,\
+ 0.5952560602897534192124,0.8458135965517576959627,0.4992619639538963260961,\
+ 0.7233182455018367651434,\
+0.5575694746471103746544,0.5320442416692767739761,0.5114069770070045484189,\
+ 0.2079572921340347990693,0.5832271371004160709362,0.3596406358527834412620,\
+ 0.9639546237862767208426,\
+0.2693600210346490664293,0.0082908280086841923406,0.3916743713665618020769,\
+ 0.2324071406142651508020,0.5392849148911003087648,0.4665026157423768915500,\
+ 0.6985556154653854710190,\
+0.1211347285688481462129,0.0583534009281404877911,0.1331768173348806816314,\
+ 0.4611817954035059563545,-0.0310306062323534859182,0.1483735266235425009906,\
+ 0.3794082450879812107303,\
+0.2484192180646929426491,-0.0574661602186613551524,0.3494023378688325687236,\
+ 0.1746705178068543862224,0.4728580805104006801187,0.6551060166287933084206,\
+ 0.3620372301332393516482}
+
+#define RESULTR12 {0.5595936686731874942780,0.1249340316280722618103}
+
+#define RESULTR13 {0.727922228630632051072,0.2677766475826501846314,0.5465334919281302772376}
+
+#define RESULTR14 {0.9885407658293843269348,0.7395656588487327098846,0.0037173107266426086426,\
+0.5900572859682142734528}
+
+#define RESULTR15 {0.3096467358991503715515,0.2552205710671842098236,0.6251879390329122543335,\
+0.1157417376525700092316,0.6117004090920090675354}
+
+#define RESULTR17 {0.6783956284634768962860,0.3320095278322696685791,0.0258709923364222188491,\
+0.5174468224868178367615,0.3916873238049447536469,0.2413538414984941482544,\
+0.5064434898085892200470}
+
+#define RESULTR31 {0.4236102001741528511047,0.2893727528862655162811,0.0887932181358337541122}
+
+#define RESULTR32 {0.6562798103938499716392,0.1463829164082805778246,0.8706106568376222876182,\
+0.5846776299489041539559,0.0747807359633347046302,0.7990084763926764699349}
+
+#define RESULTR34 {0.2895147710417708131203,0.324826880668600381785,0.6463934670512875291237,\
+0.8825004372435311106315,0.1780484897705416069691,0.5136849984216192988029,\
+1.1690866158654293904817,0.3818039897208412303264,0.4469657999773820611367,\
+0.5445155707808831957451,0.4969970017361144409840,0.5480888897242645052543}
+
+#define RESULTR35 {1.0992448165164583340214,0.6267460169007069703540,0.8244252263748765852114,\
+0.9107979135927461999955,0.3598763258423408051279,0.219875664393563818866,\
+1.2103192873573502819085,-0.1660945217914423510663,0.4466248737231732213182,\
+0.5941534869981266453465,-0.0029212825965045929877,0.3579661268165908460937,\
+0.9791855748989433116947,0.4046034830239924606765,0.2463504922712086431247}
+
+#define RESULTR37 {0.0033434146069818981850,0.9554376522688345918510,-0.0216076234950733081508,\
+0.7336972769716557651876,0.0730809598165483853549,0.2457162229973169909059,\
+0.5179742532819129330335,0.7909655834196462897978,0.8735750855261512626271,\
+0.0801094846848779407189,0.7065129902723632504547,0.2680998378805983239914,\
+0.4433905356823317212012,0.9035067595439678633795,0.8085226137033167947976,\
+0.7242403070946337173552,0.4089553443197004867216,0.3500212219557769510736,\
+0.3025310230791596888267,0.6920164671332854622321,0.8224099607250346943843}
+
+
+#define RESULTI2 {0,0,\
+0,0}
+
+#define RESULTI3 {0.0827980395095824772689,-0.1114116569690337538168,-0.0174490462390520933988,\
+-0.2070330189892598260482,-0.1130704082592781378747,-0.0128233225106435810847,\
+0.1242349794796773487793,0.2244820652283119055692,0.0302723687496956744836}
+
+#define RESULTI4 {0.1584819499403238296509,0.0849331486970186233521,-0.0122814085334539413452,\
+ 0.1697260756045579910278,\
+-0.1648282650858163833618,0.0402836035937070846558,0.0652061905711889266968,\
+ 0.0378817003220319747925,\
+-0.1584819499403238296509,-0.0849331486970186233521,0.0122814085334539413452,\
+ -0.1697260756045579910278,\
+0.1648282650858163833618,-0.0402836035937070846558,-0.0652061905711889266968,\
+ -0.0378817003220319747925}
+
+#define RESULTI5 {-0.2379577488223760806108,-0.1980500856853430191595,-0.2084157540378530903968,\
+ -0.2009595577277856481846,-0.0885928718752091587385,\
+0.0642786760664435519175,-0.0992997005877370997329,0.0218942281271939376275,\
+ 0.3748027917451171031615,-0.0032719016765754976861,\
+-0.0120583931462525106859,0.2181341408963820838185,-0.1102129389906743167638,\
+ 0.0183158030378510194858,-0.0201291388704768203777,\
+0.1535920604590304550108,0.1089958127617958461020,-0.0864243708530107318522,\
+ 0.0148125088838929608315,0.0167421638470533970522,\
+0.0321454054431545913073,-0.0297801673850977763336,0.3831588357543441736297,\
+ -0.2069715459390754075386,0.0952517485752080866890}
+
+#define RESULTI7 {0.1409758334471349350281,0.0314029776230078383481,0.3019335556748578008879,\
+ 0.2398099296761546650458,-0.0573140088334526676128,0.1432732614656592184943,\
+ 0.4398940061473099460976,\
+0.2162564212505879712722,-0.1637770322583952942175,0.1579264489634253088024,\
+ 0.2772819115997168237797,0.1711718089649424678900,0.1763527386616343117787,\
+ 0.0538284803848837895002,\
+0.0479617156709556957672,0.4681440954755101135909,-0.2490982322246580449310,\
+ -0.1915260827332628534858,-0.0036549673932591286718,-0.470893962786261499609,\
+ -0.0386408325310867925562,\
+0.0046438722379344987701,-0.0050534006016343113732,-0.4130897490567612129198,\
+ -0.2025604018656496918549,-0.2026110258293718491274,0.0911255775566176540181,\
+ -0.0247913383142026599870,\
+-0.3363272079021759064510,-0.2442642889954655671669,-0.2069968083137898595680,\
+ 0.0984957222872148985271,-0.3125265588587076148741,-0.2526097487856979739718,\
+ -0.4062536135232318601496,\
+0.0341324589755990226436,-0.0326770186735925727284,-0.0666918900335931735812,\
+ -0.0303613325286397894853,-0.1194235732677166039739,0.2006381933984195675702,\
+ -0.1355401977319409256850,\
+-0.1076430936800362725414,-0.0537753325694302272697,0.4760166749905191396763,\
+ -0.1911397464355340802822,0.5243583252175655351479,0.1121139404896287633529,\
+ 0.1115034955682685374745}
+
+#define RESULTI12 {0,0}
+
+#define RESULTI13 {-0.1609403391213135858795,-0.104724835963155529783,0.2656651750844691295406}
+
+#define RESULTI14 {0.0747541864402592182159,-0.4924117275513708591461,-0.0747541864402592182159,\
+0.4924117275513708591461}
+
+#define RESULTI15 {-0.2934532919715012178052,0.2662942066238083160812,-0.1297453097398825194730,\
+-0.0162106544485858539151,0.1731150495361612751122}
+
+#define RESULTI17 {-0.0718252325460487783815,-0.3822405612852492473586,0.0883019157396930931547,\
+0.2043974836060600819288,-0.143817067391037223256,0.1155937622404165643353,\
+0.1895896996361655095775}
+
+#define RESULTI31 {0.1158046483820916738861,-0.1933066747090816384080,0.0775020263269899506442}
+
+#define RESULTI32 {0,0,0,\
+0,0,0}
+
+#define RESULTI34 {0.1689924332313239296877,-0.1594742559827864170075,-0.0172019456513225893479,\
+0.4397859224118292331696,0.0284885545261204103928,-0.0997138335369527201157,\
+-0.1689924332313239296877,0.1594742559827864170075,0.0172019456513225893479,\
+-0.4397859224118292331696,-0.0284885545261204103928,0.0997138335369527201157}
+
+#define RESULTI35 {-0.1316292475222873847862,-0.0038207475230211465633,-0.0291790984031743347304,\
+0.124318851362821516937,-0.4288056400198558271164,-0.2487686861965354157000,\
+-0.1774606387906726145953,-0.1910360457356966579212,0.1689989243063947654822,\
+-0.1696542221928825366906,0.3125071348259343961828,-0.2111224267558209632956,\
+0.3544252571430209775016,0.3111552984526392839904,0.3200712870491359551828}
+
+#define RESULTI37 {0.2189793220094558567901,-0.4489603496292741136031,-0.4937799046293088744974,\
+0.2870975885300787178167,-0.0153475020886480462146,0.6805622794419772247920,\
+-0.3638091467691619285141,0.3493297478826523638773,-0.1277224814869524771588,\
+0.0075644305010185153293,0.0001438303630438494962,0.103302919046026508987,\
+0.2871483917593231072196,-0.0213705070070041927566,0.0069067656750675318622,\
+-0.0442384488081716820140,-0.2780963082978277212121,-0.0838499868835354822405,\
+-0.392742137222542697650,0.4143010887770579020462,-0.0854195911632744664388}
+
+static void double2float (double* tabdouble, float* tabfloat,int size){
+ int i;
+
+ for(i=0;i<size;i++) tabfloat[i]=(float)tabdouble[i];
+}
+
+static void dhilbertaTest(void){
+ int i;
+ double in2[]=SOURCE2;
+ double in3[]=SOURCE3;
+ double in4[]=SOURCE4;
+ double in5[]=SOURCE5;
+ double in7[]=SOURCE7;
+ double in12[]=SOURCE12;
+ double in13[]=SOURCE13;
+ double in14[]=SOURCE14;
+ double in15[]=SOURCE15;
+ double in17[]=SOURCE17;
+ double in31[]=SOURCE31;
+ double in32[]=SOURCE32;
+ double in34[]=SOURCE34;
+ double in35[]=SOURCE35;
+ double in37[]=SOURCE37;
+
+ double resR2[]=RESULTR2;
+ double resR3[]=RESULTR3;
+ double resR4[]=RESULTR4;
+ double resR5[]=RESULTR5;
+ double resR7[]=RESULTR7;
+ double resR12[]=RESULTR12;
+ double resR13[]=RESULTR13;
+ double resR14[]=RESULTR14;
+ double resR15[]=RESULTR15;
+ double resR17[]=RESULTR17;
+ double resR31[]=RESULTR31;
+ double resR32[]=RESULTR32;
+ double resR34[]=RESULTR34;
+ double resR35[]=RESULTR35;
+ double resR37[]=RESULTR37;
+
+ double resI2[]=RESULTI2;
+ double resI3[]=RESULTI3;
+ double resI4[]=RESULTI4;
+ double resI5[]=RESULTI5;
+ double resI7[]=RESULTI7;
+ double resI12[]=RESULTI12;
+ double resI13[]=RESULTI13;
+ double resI14[]=RESULTI14;
+ double resI15[]=RESULTI15;
+ double resI17[]=RESULTI17;
+ double resI31[]=RESULTI31;
+ double resI32[]=RESULTI32;
+ double resI34[]=RESULTI34;
+ double resI35[]=RESULTI35;
+ double resI37[]=RESULTI37;
+
+ doubleComplex *out2,*out3,*out4,*out5,*out7;
+ doubleComplex *out12,*out13,*out14,*out15,*out17;
+ doubleComplex *out31,*out32,*out34,*out35,*out37;
+
+ out2=(doubleComplex*)malloc((unsigned int)4*sizeof(doubleComplex));
+ out3=(doubleComplex*)malloc((unsigned int)9*sizeof(doubleComplex));
+ out4=(doubleComplex*)malloc((unsigned int)16*sizeof(doubleComplex));
+ out5=(doubleComplex*)malloc((unsigned int)25*sizeof(doubleComplex));
+ out7=(doubleComplex*)malloc((unsigned int)49*sizeof(doubleComplex));
+
+ out12=(doubleComplex*)malloc((unsigned int)2*sizeof(doubleComplex));
+ out13=(doubleComplex*)malloc((unsigned int)3*sizeof(doubleComplex));
+ out14=(doubleComplex*)malloc((unsigned int)4*sizeof(doubleComplex));
+ out15=(doubleComplex*)malloc((unsigned int)5*sizeof(doubleComplex));
+ out17=(doubleComplex*)malloc((unsigned int)7*sizeof(doubleComplex));
+
+ out31=(doubleComplex*)malloc((unsigned int)3*sizeof(doubleComplex));
+ out32=(doubleComplex*)malloc((unsigned int)6*sizeof(doubleComplex));
+ out34=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+ out35=(doubleComplex*)malloc((unsigned int)15*sizeof(doubleComplex));
+ out37=(doubleComplex*)malloc((unsigned int)21*sizeof(doubleComplex));
+
+ dhilberta(in2, 2, 2, out2);
+ dhilberta(in3, 3, 3, out3);
+ dhilberta(in4, 4, 4, out4);
+ dhilberta(in5, 5, 5, out5);
+ dhilberta(in7, 7, 7, out7);
+
+ dhilberta(in12, 1, 2, out12);
+ dhilberta(in13, 1, 3, out13);
+ dhilberta(in14, 1, 4, out14);
+ dhilberta(in15, 1, 5, out15);
+ dhilberta(in17, 1, 7, out17);
+
+ dhilberta(in31, 3, 1, out31);
+ dhilberta(in32, 3, 2, out32);
+ dhilberta(in34, 3, 4, out34);
+ dhilberta(in35, 3, 5, out35);
+ dhilberta(in37, 3, 7, out37);
+
+
+ /* Matrice 2*2 */
+ printf(">>> Matrice 2*2 <<<\n");
+ for (i=0;i<4;i++){
+ if (zreals(out2[i])>1e-16) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i])) )<1e-16);
+ else assert(1);
+ if (zimags(out2[i])>1e-16) assert( (fabs(zimags(out2[i])-resI2[i]) / fabs(zimags(out2[i])) )<1e-16);
+ else assert(1);
+ }
+
+ /* Matrice 3*3 */
+ printf(">>> Matrice 3*3 <<<\n");
+ for (i=0;i<9;i++){
+ if (zreals(out3[i])>1e-16) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i])) )<3e-15);
+ else assert(1);
+ if (zimags(out3[i])>1e-16) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i])) )<3e-15);
+ else assert(1);
+ }
+
+ /* Matrice 4*4 */
+ printf(">>> Matrice 4*4 <<<\n");
+ for (i=0;i<16;i++){
+ if (zreals(out4[i])>1e-16) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i])) )<1e-16);
+ else assert(1);
+ if (zimags(out4[i])>1e-16) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i])) )<1e-16);
+ else assert(1);
+ }
+
+ /* Matrice 5*5 */
+ printf(">>> Matrice 5*5 <<<\n");
+ for (i=0;i<25;i++){
+ if (zreals(out5[i])>1e-16) assert( (fabs(zreals(out5[i])-resR5[i]) / fabs(zreals(out5[i])) )<3e-14);
+ else assert(1);
+ if (zimags(out5[i])>1e-16) assert( (fabs(zimags(out5[i])+resI5[i]) / fabs(zimags(out5[i])) )<3e-13);
+ else assert(1);
+ }
+
+ /* Matrice 7*7 */
+ printf(">>> Matrice 7*7 <<<\n");
+ for (i=0;i<49;i++){
+ if (zreals(out7[i])>1e-16) assert( (fabs(zreals(out7[i])-resR7[i]) / fabs(zreals(out7[i])) )<3e-14);
+ else assert(1);
+ if (zimags(out7[i])>1e-16) assert( (fabs(zimags(out7[i])+resI7[i]) / fabs(zimags(out7[i])) )<3e-14);
+ else assert(1);
+ }
+
+ /* Vecteur 1*2 */
+ printf(">>> Matrice 1*2 <<<\n");
+ for (i=0;i<2;i++){
+ if (zreals(out12[i])>1e-16) assert( (fabs(zreals(out12[i])-resR12[i]) / fabs(zreals(out12[i])) )<1e-16);
+ else assert(1);
+ if (zimags(out12[i])>1e-16) assert( (fabs(zimags(out12[i])+resI12[i]) / fabs(zimags(out12[i])) )<1e-16);
+ else assert(1);
+ }
+
+ /* Vecteur 1*3 */
+ printf(">>> Matrice 1*3 <<<\n");
+ for (i=0;i<3;i++){
+ if (zreals(out13[i])>1e-16) assert( (fabs(zreals(out13[i])-resR13[i]) / fabs(zreals(out13[i])) )<3e-16);
+ else assert(1);
+ if (zimags(out13[i])>1e-16) assert( (fabs(zimags(out13[i])+resI13[i]) / fabs(zimags(out13[i])) )<1e-16);
+ else assert(1);
+ }
+
+ /* Vecteur 1*4 */
+ printf(">>> Matrice 1*4 <<<\n");
+ for (i=0;i<4;i++){
+ if (zreals(out14[i])>1e-16) assert( (fabs(zreals(out14[i])-resR14[i]) / fabs(zreals(out14[i])) )<1e-16);
+ else assert(1);
+ if (zimags(out14[i])>1e-16) assert( (fabs(zimags(out14[i])+resI14[i]) / fabs(zimags(out14[i])) )<1e-16);
+ else assert(1);
+ }
+
+ /* Vecteur 1*5 */
+ printf(">>> Matrice 1*5 <<<\n");
+ for (i=0;i<5;i++){
+ if (zreals(out15[i])>1e-16) assert( (fabs(zreals(out15[i])-resR15[i]) / fabs(zreals(out15[i])) )<3e-15);
+ else assert(1);
+ if (zimags(out15[i])>1e-16) assert( (fabs(zimags(out15[i])+resI15[i]) / fabs(zimags(out15[i])) )<3e-15);
+ else assert(1);
+ }
+
+ /* Vecteur 1*7 */
+ printf(">>> Matrice 1*7 <<<\n");
+ for (i=0;i<7;i++){
+ if (zreals(out17[i])>1e-16) assert( (fabs(zreals(out17[i])-resR17[i]) / fabs(zreals(out17[i])) )<3e-16);
+ else assert(1);
+ if (zimags(out17[i])>1e-16) assert( (fabs(zimags(out17[i])+resI17[i]) / fabs(zimags(out17[i])) )<3e-15);
+ else assert(1);
+ }
+
+ /* Matrices 3*1 */
+ printf(">>> Matrice 3*1 <<<\n");
+ for (i=0;i<3;i++){
+ if (zreals(out31[i])>1e-16) assert( (fabs(zreals(out31[i])-resR31[i]) / fabs(zreals(out31[i])) )<3e-16);
+ else assert(1);
+ if (zimags(out31[i])>1e-16) assert( (fabs(zimags(out31[i])+resI31[i]) / fabs(zimags(out31[i])) )<1e-16);
+ else assert(1);
+ }
+
+ /* Matrices 3*2 */
+ printf(">>> Matrice 3*2 <<<\n");
+ for (i=0;i<6;i++){
+ if (zreals(out32[i])>1e-16) assert( (fabs(zreals(out32[i])-resR32[i]) / fabs(zreals(out32[i])) )<3e-15);
+ else assert(1);
+ if (zimags(out32[i])>1e-16) assert( (fabs(zimags(out32[i])+resI32[i]) / fabs(zimags(out32[i])) )<1e-16);
+ else assert(1);
+ }
+
+
+ /* Matrices 3*4 */
+ printf(">>> Matrice 3*4 <<<\n");
+ for (i=0;i<12;i++){
+ if (zreals(out34[i])>1e-16) assert( (fabs(zreals(out34[i])-resR34[i]) / fabs(zreals(out34[i])) )<1e-16);
+ else assert(1);
+ if (zimags(out34[i])>1e-16) assert( (fabs(zimags(out34[i])+resI34[i]) / fabs(zimags(out34[i])) )<3e-15);
+ else assert(1);
+ }
+
+
+ /* Matrices 3*5 */
+ printf(">>> Matrice 3*5 <<<\n");
+ for (i=0;i<15;i++){
+ if (zreals(out35[i])>1e-16) assert( (fabs(zreals(out35[i])-resR35[i]) / fabs(zreals(out35[i])) )<3e-15);
+ else assert(1);
+ if (zimags(out35[i])>1e-16) assert( (fabs(zimags(out35[i])+resI35[i]) / fabs(zimags(out35[i])) )<3e-14);
+ else assert(1);
+ }
+
+
+ /* Matrices 3*7 */
+ printf(">>> Matrice 3*7 <<<\n");
+ for (i=0;i<21;i++){
+ if (zreals(out37[i])>1e-16) assert( (fabs(zreals(out37[i])-resR37[i]) / fabs(zreals(out37[i])) )<3e-13);
+ else assert(1);
+ if (zimags(out37[i])>1e-16) assert( (fabs(zimags(out37[i])+resI37[i]) / fabs(zimags(out37[i])) )<3e-14);
+ else assert(1);
+ }
+
+ free(out2);
+ free(out3);
+ free(out4);
+ free(out5);
+ free(out7);
+
+ free(out12);
+ free(out13);
+ free(out14);
+ free(out15);
+ free(out17);
+
+ free(out31);
+ free(out32);
+ free(out34);
+ free(out35);
+ free(out37);
+}
+
+static void shilbertaTest(void){
+ int i;
+ double ind2[]=SOURCE2;float in2[4];
+ double ind3[]=SOURCE3;float in3[9];
+ double ind4[]=SOURCE4;float in4[16];
+ double ind5[]=SOURCE5;float in5[25];
+ double ind7[]=SOURCE7;float in7[49];
+ double ind12[]=SOURCE12;float in12[2];
+ double ind13[]=SOURCE13;float in13[3];
+ double ind14[]=SOURCE14;float in14[4];
+ double ind15[]=SOURCE15;float in15[5];
+ double ind17[]=SOURCE17;float in17[7];
+ double ind31[]=SOURCE31;float in31[3];
+ double ind32[]=SOURCE32;float in32[6];
+ double ind34[]=SOURCE34;float in34[12];
+ double ind35[]=SOURCE35;float in35[15];
+ double ind37[]=SOURCE37;float in37[21];
+
+ double resdR2[]=RESULTR2;float resR2[4];
+ double resdR3[]=RESULTR3;float resR3[9];
+ double resdR4[]=RESULTR4;float resR4[16];
+ double resdR5[]=RESULTR5;float resR5[25];
+ double resdR7[]=RESULTR7;float resR7[49];
+ double resdR12[]=RESULTR12;float resR12[2];
+ double resdR13[]=RESULTR13;float resR13[3];
+ double resdR14[]=RESULTR14;float resR14[4];
+ double resdR15[]=RESULTR15;float resR15[5];
+ double resdR17[]=RESULTR17;float resR17[7];
+ double resdR31[]=RESULTR31;float resR31[3];
+ double resdR32[]=RESULTR32;float resR32[6];
+ double resdR34[]=RESULTR34;float resR34[12];
+ double resdR35[]=RESULTR35;float resR35[15];
+ double resdR37[]=RESULTR37;float resR37[21];
+
+ double resdI2[]=RESULTI2;float resI2[4];
+ double resdI3[]=RESULTI3;float resI3[9];
+ double resdI4[]=RESULTI4;float resI4[16];
+ double resdI5[]=RESULTI5;float resI5[25];
+ double resdI7[]=RESULTI7;float resI7[49];
+ double resdI12[]=RESULTI12;float resI12[2];
+ double resdI13[]=RESULTI13;float resI13[3];
+ double resdI14[]=RESULTI14;float resI14[4];
+ double resdI15[]=RESULTI15;float resI15[5];
+ double resdI17[]=RESULTI17;float resI17[7];
+ double resdI31[]=RESULTI31;float resI31[3];
+ double resdI32[]=RESULTI32;float resI32[6];
+ double resdI34[]=RESULTI34;float resI34[12];
+ double resdI35[]=RESULTI35;float resI35[15];
+ double resdI37[]=RESULTI37;float resI37[21];
+
+ floatComplex *out2,*out3,*out4,*out5,*out7;
+ floatComplex *out12,*out13,*out14,*out15,*out17;
+ floatComplex *out31,*out32,*out34,*out35,*out37;
+
+ out2=(floatComplex*)malloc((unsigned int)4*sizeof(floatComplex));
+ out3=(floatComplex*)malloc((unsigned int)9*sizeof(floatComplex));
+ out4=(floatComplex*)malloc((unsigned int)16*sizeof(floatComplex));
+ out5=(floatComplex*)malloc((unsigned int)25*sizeof(floatComplex));
+ out7=(floatComplex*)malloc((unsigned int)49*sizeof(floatComplex));
+
+ out12=(floatComplex*)malloc((unsigned int)2*sizeof(floatComplex));
+ out13=(floatComplex*)malloc((unsigned int)3*sizeof(floatComplex));
+ out14=(floatComplex*)malloc((unsigned int)4*sizeof(floatComplex));
+ out15=(floatComplex*)malloc((unsigned int)5*sizeof(floatComplex));
+ out17=(floatComplex*)malloc((unsigned int)7*sizeof(floatComplex));
+
+ out31=(floatComplex*)malloc((unsigned int)3*sizeof(floatComplex));
+ out32=(floatComplex*)malloc((unsigned int)6*sizeof(floatComplex));
+ out34=(floatComplex*)malloc((unsigned int)12*sizeof(floatComplex));
+ out35=(floatComplex*)malloc((unsigned int)15*sizeof(floatComplex));
+ out37=(floatComplex*)malloc((unsigned int)21*sizeof(floatComplex));
+
+ /* Mise en float */
+ double2float(ind2,in2,4);
+ double2float(ind3,in3,9);
+ double2float(ind4,in4,16);
+ double2float(ind5,in5,25);
+ double2float(ind7,in7,49);
+ double2float(ind12,in12,2);
+ double2float(ind13,in13,3);
+ double2float(ind14,in14,4);
+ double2float(ind15,in15,5);
+ double2float(ind17,in17,7);
+ double2float(ind31,in31,3);
+ double2float(ind32,in32,6);
+ double2float(ind34,in34,12);
+ double2float(ind35,in35,15);
+ double2float(ind37,in37,21);
+
+ double2float(resdR2,resR2,4);
+ double2float(resdR3,resR3,9);
+ double2float(resdR4,resR4,16);
+ double2float(resdR5,resR5,25);
+ double2float(resdR7,resR7,49);
+ double2float(resdR12,resR12,2);
+ double2float(resdR13,resR13,3);
+ double2float(resdR14,resR14,4);
+ double2float(resdR15,resR15,5);
+ double2float(resdR17,resR17,7);
+ double2float(resdR31,resR31,3);
+ double2float(resdR32,resR32,6);
+ double2float(resdR34,resR34,12);
+ double2float(resdR35,resR35,15);
+ double2float(resdR37,resR37,21);
+
+ double2float(resdI2,resI2,4);
+ double2float(resdI3,resI3,9);
+ double2float(resdI4,resI4,16);
+ double2float(resdI5,resI5,25);
+ double2float(resdI7,resI7,49);
+ double2float(resdI12,resI12,2);
+ double2float(resdI13,resI13,3);
+ double2float(resdI14,resI14,4);
+ double2float(resdI15,resI15,5);
+ double2float(resdI17,resI17,7);
+ double2float(resdI31,resI31,3);
+ double2float(resdI32,resI32,6);
+ double2float(resdI34,resI34,12);
+ double2float(resdI35,resI35,15);
+ double2float(resdI37,resI37,21);
+
+ /* Tests and assert */
+
+ /* Matrice 2*2 */
+ printf(">>> Matrice 2*2 <<<\n");
+ shilberta(in2, 2, 2, out2);
+ for (i=0;i<4;i++){
+ if (creals(out2[i])>1e-16) assert( (fabs(creals(out2[i])-resR2[i]) / fabs(creals(out2[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out2[i])>1e-16) assert( (fabs(cimags(out2[i])-resI2[i]) / fabs(cimags(out2[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Matrice 3*3 */
+ printf(">>> Matrice 3*3 <<<\n");
+ shilberta(in3, 3, 3, out3);
+ for (i=0;i<9;i++){
+ if (creals(out3[i])>1e-16) assert( (fabs(creals(out3[i])-resR3[i]) / fabs(creals(out3[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out3[i])>1e-16) assert( (fabs(cimags(out3[i])+resI3[i]) / fabs(cimags(out3[i])) )<3e-6);
+ else assert(1);
+ }
+
+ /* Matrice 4*4 */
+ printf(">>> Matrice 4*4 <<<\n");
+ shilberta(in4, 4, 4, out4);
+ for (i=0;i<16;i++){
+ if (creals(out4[i])>1e-16) assert( (fabs(creals(out4[i])-resR4[i]) / fabs(creals(out4[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out4[i])>1e-16) assert( (fabs(cimags(out4[i])+resI4[i]) / fabs(cimags(out4[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Matrice 5*5 */
+ printf(">>> Matrice 5*5 <<<\n");
+ shilberta(in5, 5, 5, out5);
+ for (i=0;i<25;i++){
+ if (creals(out5[i])>1e-16) assert( (fabs(creals(out5[i])-resR5[i]) / fabs(creals(out5[i])) )<3e-6);
+ else assert(1);
+ if (cimags(out5[i])>1e-16) assert( (fabs(cimags(out5[i])+resI5[i]) / fabs(cimags(out5[i])) )<3e-5);
+ else assert(1);
+ }
+
+ /* Matrice 7*7 */
+ printf(">>> Matrice 7*7 <<<\n");
+ shilberta(in7, 7, 7, out7);
+ for (i=0;i<49;i++){
+ if (creals(out7[i])>1e-16) assert( (fabs(creals(out7[i])-resR7[i]) / fabs(creals(out7[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out7[i])>1e-16) assert( (fabs(cimags(out7[i])+resI7[i]) / fabs(cimags(out7[i])) )<3e-6);
+ else assert(1);
+ }
+
+ /* Vecteur 1*2 */
+ printf(">>> Matrice 1*2 <<<\n");
+ shilberta(in12, 1, 2, out12);
+ for (i=0;i<2;i++){
+ if (creals(out12[i])>1e-16) assert( (fabs(creals(out12[i])-resR12[i]) / fabs(creals(out12[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out12[i])>1e-16) assert( (fabs(cimags(out12[i])+resI12[i]) / fabs(cimags(out12[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Vecteur 1*3 */
+ printf(">>> Matrice 1*3 <<<\n");
+ shilberta(in13, 1, 3, out13);
+ for (i=0;i<3;i++){
+ if (creals(out13[i])>1e-16) assert( (fabs(creals(out13[i])-resR13[i]) / fabs(creals(out13[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out13[i])>1e-16) assert( (fabs(cimags(out13[i])+resI13[i]) / fabs(cimags(out13[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Vecteur 1*4 */
+ printf(">>> Matrice 1*4 <<<\n");
+ shilberta(in14, 1, 4, out14);
+ for (i=0;i<4;i++){
+ if (creals(out14[i])>1e-16) assert( (fabs(creals(out14[i])-resR14[i]) / fabs(creals(out14[i])) )<3e-6);
+ else assert(1);
+ if (cimags(out14[i])>1e-16) assert( (fabs(cimags(out14[i])+resI14[i]) / fabs(cimags(out14[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Vecteur 1*5 */
+ printf(">>> Matrice 1*5 <<<\n");
+ shilberta(in15, 1, 5, out15);
+ for (i=0;i<5;i++){
+ if (creals(out15[i])>1e-16) assert( (fabs(creals(out15[i])-resR15[i]) / fabs(creals(out15[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out15[i])>1e-16) assert( (fabs(cimags(out15[i])+resI15[i]) / fabs(cimags(out15[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Vecteur 1*7 */
+ printf(">>> Matrice 1*7 <<<\n");
+ shilberta(in17, 1, 7, out17);
+ for (i=0;i<7;i++){
+ if (creals(out17[i])>1e-16) assert( (fabs(creals(out17[i])-resR17[i]) / fabs(creals(out17[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out17[i])>1e-16) assert( (fabs(cimags(out17[i])+resI17[i]) / fabs(cimags(out17[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Matrices 3*1 */
+ printf(">>> Matrice 3*1 <<<\n");
+ shilberta(in31, 3, 1, out31);
+ for (i=0;i<3;i++){
+ if (creals(out31[i])>1e-16) assert( (fabs(creals(out31[i])-resR31[i]) / fabs(creals(out31[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out31[i])>1e-16) assert( (fabs(cimags(out31[i])+resI31[i]) / fabs(cimags(out31[i])) )<1e-6);
+ else assert(1);
+ }
+
+ /* Matrices 3*2 */
+ printf(">>> Matrice 3*2 <<<\n");
+ shilberta(in32, 3, 2, out32);
+ for (i=0;i<6;i++){
+ if (creals(out32[i])>1e-16) assert( (fabs(creals(out32[i])-resR32[i]) / fabs(creals(out32[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out32[i])>1e-16) assert( (fabs(cimags(out32[i])+resI32[i]) / fabs(cimags(out32[i])) )<1e-6);
+ else assert(1);
+ }
+
+
+ /* Matrices 3*4 */
+ printf(">>> Matrice 3*4 <<<\n");
+ shilberta(in34, 3, 4, out34);
+ for (i=0;i<12;i++){
+ if (creals(out34[i])>1e-16) assert( (fabs(creals(out34[i])-resR34[i]) / fabs(creals(out34[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out34[i])>1e-16) assert( (fabs(cimags(out34[i])+resI34[i]) / fabs(cimags(out34[i])) )<1e-6);
+ else assert(1);
+ }
+
+
+ /* Matrices 3*5 */
+ printf(">>> Matrice 3*5 <<<\n");
+ shilberta(in35, 3, 5, out35);
+ for (i=0;i<15;i++){
+ if (creals(out35[i])>1e-16) assert( (fabs(creals(out35[i])-resR35[i]) / fabs(creals(out35[i])) )<1e-6);
+ else assert(1);
+ if (cimags(out35[i])>1e-16) assert( (fabs(cimags(out35[i])+resI35[i]) / fabs(cimags(out35[i])) )<3e-6);
+ else assert(1);
+ }
+
+
+ /* Matrices 3*7 */
+ printf(">>> Matrice 3*7 <<<\n");
+ shilberta(in37, 3, 7, out37);
+ for (i=0;i<21;i++){
+ if (creals(out37[i])>1e-16) assert( (fabs(creals(out37[i])-resR37[i]) / fabs(creals(out37[i])) )<3e-5);
+ else assert(1);
+ if (cimags(out37[i])>1e-16) assert( (fabs(cimags(out37[i])+resI37[i]) / fabs(cimags(out37[i])) )<3e-6);
+ else assert(1);
+ }
+
+ free(out2);
+ free(out3);
+ free(out4);
+ free(out5);
+ free(out7);
+
+ free(out12);
+ free(out13);
+ free(out14);
+ free(out15);
+ free(out17);
+
+ free(out31);
+ free(out32);
+ free(out34);
+ free(out35);
+ free(out37);
+
+}
+
+
+static int hilbertTest(void){
+ printf("\n >>> Double Hilbert Tests <<<\n");
+ dhilbertaTest();
+ printf("\n >>> Float Hilbert Tests <<<\n");
+ shilbertaTest();
+ return 0;
+}
+
+
+int main (void){
+ assert(hilbertTest()==0);
+ return 0;
+}
+
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj b/2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj
new file mode 100644
index 00000000..17dae405
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{AE37524C-2EBB-4EAE-93B9-AE9C89323B1E}</ProjectGuid>
+ <RootNamespace>testHilbert</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testHilbert.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj.filters b/2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj.filters
new file mode 100644
index 00000000..0e5affae
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/hilbert/test_Hilbert/testHilbert.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testHilbert.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/Makefile.am b/2.3-1/src/c/signalProcessing/ifft/Makefile.am
new file mode 100644
index 00000000..2afc2287
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/Makefile.am
@@ -0,0 +1,84 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+
+
+libIfft_la_CFLAGS = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libIfft.la
+
+libIfft_la_SOURCES = $(HEAD) $(SRC)
+
+HEAD = ../includes/ifft.h \
+ fft_internal.h
+
+SRC = zifftma.c \
+ cifftma.c \
+ difft2.c \
+ difftbi.c \
+ difftmx.c \
+ ifft842.c \
+ ir2tx.c \
+ ir4tx.c \
+ ir8tx.c\
+ difftma.c \
+ sifftma.c
+
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatIfft testDoubleIfft testMatIfft
+
+TESTS = testFloatIfft testDoubleIfft testMatIfft
+
+#
+# -*- Fftine Tests -*-
+#
+testFloatIfft_SOURCES = testFloatIfft.c
+testFloatIfft_CFLAGS = $(check_INCLUDES)
+testFloatIfft_LDADD = $(check_LDADD)
+
+testDoubleIfft_SOURCES = testDoubleIfft.c
+testDoubleIfft_CFLAGS = $(check_INCLUDES)
+testDoubleIfft_LDADD = $(check_LDADD)
+
+
+testMatIfft_SOURCES = testMatIfft.c
+testMatIfft_CFLAGS = $(check_INCLUDES)
+testMatIfft_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/signalProcessing/ifft/Makefile.in b/2.3-1/src/c/signalProcessing/ifft/Makefile.in
new file mode 100644
index 00000000..54721c8b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/Makefile.in
@@ -0,0 +1,866 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatIfft$(EXEEXT) testDoubleIfft$(EXEEXT) \
+ testMatIfft$(EXEEXT)
+TESTS = testFloatIfft$(EXEEXT) testDoubleIfft$(EXEEXT) \
+ testMatIfft$(EXEEXT)
+subdir = src/c/signalProcessing/ifft
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libIfft_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libIfft_la-zifftma.lo libIfft_la-cifftma.lo \
+ libIfft_la-difft2.lo libIfft_la-difftbi.lo \
+ libIfft_la-difftmx.lo libIfft_la-ifft842.lo \
+ libIfft_la-ir2tx.lo libIfft_la-ir4tx.lo libIfft_la-ir8tx.lo \
+ libIfft_la-difftma.lo libIfft_la-sifftma.lo
+am_libIfft_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libIfft_la_OBJECTS = $(am_libIfft_la_OBJECTS)
+libIfft_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libIfft_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleIfft_OBJECTS = testDoubleIfft-testDoubleIfft.$(OBJEXT)
+testDoubleIfft_OBJECTS = $(am_testDoubleIfft_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la
+testDoubleIfft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleIfft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleIfft_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatIfft_OBJECTS = testFloatIfft-testFloatIfft.$(OBJEXT)
+testFloatIfft_OBJECTS = $(am_testFloatIfft_OBJECTS)
+testFloatIfft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatIfft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatIfft_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testMatIfft_OBJECTS = testMatIfft-testMatIfft.$(OBJEXT)
+testMatIfft_OBJECTS = $(am_testMatIfft_OBJECTS)
+testMatIfft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testMatIfft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatIfft_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libIfft_la_SOURCES) $(testDoubleIfft_SOURCES) \
+ $(testFloatIfft_SOURCES) $(testMatIfft_SOURCES)
+DIST_SOURCES = $(libIfft_la_SOURCES) $(testDoubleIfft_SOURCES) \
+ $(testFloatIfft_SOURCES) $(testMatIfft_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libIfft_la_CFLAGS = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libIfft.la
+libIfft_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/ifft.h \
+ fft_internal.h
+
+SRC = zifftma.c \
+ cifftma.c \
+ difft2.c \
+ difftbi.c \
+ difftmx.c \
+ ifft842.c \
+ ir2tx.c \
+ ir4tx.c \
+ ir8tx.c\
+ difftma.c \
+ sifftma.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I . \
+ -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ @LIBMATH@
+
+
+#
+# -*- Fftine Tests -*-
+#
+testFloatIfft_SOURCES = testFloatIfft.c
+testFloatIfft_CFLAGS = $(check_INCLUDES)
+testFloatIfft_LDADD = $(check_LDADD)
+testDoubleIfft_SOURCES = testDoubleIfft.c
+testDoubleIfft_CFLAGS = $(check_INCLUDES)
+testDoubleIfft_LDADD = $(check_LDADD)
+testMatIfft_SOURCES = testMatIfft.c
+testMatIfft_CFLAGS = $(check_INCLUDES)
+testMatIfft_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/ifft/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/ifft/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libIfft.la: $(libIfft_la_OBJECTS) $(libIfft_la_DEPENDENCIES)
+ $(libIfft_la_LINK) -rpath $(pkglibdir) $(libIfft_la_OBJECTS) $(libIfft_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleIfft$(EXEEXT): $(testDoubleIfft_OBJECTS) $(testDoubleIfft_DEPENDENCIES)
+ @rm -f testDoubleIfft$(EXEEXT)
+ $(testDoubleIfft_LINK) $(testDoubleIfft_OBJECTS) $(testDoubleIfft_LDADD) $(LIBS)
+testFloatIfft$(EXEEXT): $(testFloatIfft_OBJECTS) $(testFloatIfft_DEPENDENCIES)
+ @rm -f testFloatIfft$(EXEEXT)
+ $(testFloatIfft_LINK) $(testFloatIfft_OBJECTS) $(testFloatIfft_LDADD) $(LIBS)
+testMatIfft$(EXEEXT): $(testMatIfft_OBJECTS) $(testMatIfft_DEPENDENCIES)
+ @rm -f testMatIfft$(EXEEXT)
+ $(testMatIfft_LINK) $(testMatIfft_OBJECTS) $(testMatIfft_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-cifftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difft2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difftbi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difftmx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ifft842.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ir2tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ir4tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ir8tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-sifftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-zifftma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleIfft-testDoubleIfft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatIfft-testFloatIfft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatIfft-testMatIfft.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libIfft_la-zifftma.lo: zifftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-zifftma.lo -MD -MP -MF $(DEPDIR)/libIfft_la-zifftma.Tpo -c -o libIfft_la-zifftma.lo `test -f 'zifftma.c' || echo '$(srcdir)/'`zifftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-zifftma.Tpo $(DEPDIR)/libIfft_la-zifftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zifftma.c' object='libIfft_la-zifftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-zifftma.lo `test -f 'zifftma.c' || echo '$(srcdir)/'`zifftma.c
+
+libIfft_la-cifftma.lo: cifftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-cifftma.lo -MD -MP -MF $(DEPDIR)/libIfft_la-cifftma.Tpo -c -o libIfft_la-cifftma.lo `test -f 'cifftma.c' || echo '$(srcdir)/'`cifftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-cifftma.Tpo $(DEPDIR)/libIfft_la-cifftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cifftma.c' object='libIfft_la-cifftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-cifftma.lo `test -f 'cifftma.c' || echo '$(srcdir)/'`cifftma.c
+
+libIfft_la-difft2.lo: difft2.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-difft2.lo -MD -MP -MF $(DEPDIR)/libIfft_la-difft2.Tpo -c -o libIfft_la-difft2.lo `test -f 'difft2.c' || echo '$(srcdir)/'`difft2.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-difft2.Tpo $(DEPDIR)/libIfft_la-difft2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='difft2.c' object='libIfft_la-difft2.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-difft2.lo `test -f 'difft2.c' || echo '$(srcdir)/'`difft2.c
+
+libIfft_la-difftbi.lo: difftbi.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-difftbi.lo -MD -MP -MF $(DEPDIR)/libIfft_la-difftbi.Tpo -c -o libIfft_la-difftbi.lo `test -f 'difftbi.c' || echo '$(srcdir)/'`difftbi.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-difftbi.Tpo $(DEPDIR)/libIfft_la-difftbi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='difftbi.c' object='libIfft_la-difftbi.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-difftbi.lo `test -f 'difftbi.c' || echo '$(srcdir)/'`difftbi.c
+
+libIfft_la-difftmx.lo: difftmx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-difftmx.lo -MD -MP -MF $(DEPDIR)/libIfft_la-difftmx.Tpo -c -o libIfft_la-difftmx.lo `test -f 'difftmx.c' || echo '$(srcdir)/'`difftmx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-difftmx.Tpo $(DEPDIR)/libIfft_la-difftmx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='difftmx.c' object='libIfft_la-difftmx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-difftmx.lo `test -f 'difftmx.c' || echo '$(srcdir)/'`difftmx.c
+
+libIfft_la-ifft842.lo: ifft842.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-ifft842.lo -MD -MP -MF $(DEPDIR)/libIfft_la-ifft842.Tpo -c -o libIfft_la-ifft842.lo `test -f 'ifft842.c' || echo '$(srcdir)/'`ifft842.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-ifft842.Tpo $(DEPDIR)/libIfft_la-ifft842.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ifft842.c' object='libIfft_la-ifft842.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-ifft842.lo `test -f 'ifft842.c' || echo '$(srcdir)/'`ifft842.c
+
+libIfft_la-ir2tx.lo: ir2tx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-ir2tx.lo -MD -MP -MF $(DEPDIR)/libIfft_la-ir2tx.Tpo -c -o libIfft_la-ir2tx.lo `test -f 'ir2tx.c' || echo '$(srcdir)/'`ir2tx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-ir2tx.Tpo $(DEPDIR)/libIfft_la-ir2tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ir2tx.c' object='libIfft_la-ir2tx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-ir2tx.lo `test -f 'ir2tx.c' || echo '$(srcdir)/'`ir2tx.c
+
+libIfft_la-ir4tx.lo: ir4tx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-ir4tx.lo -MD -MP -MF $(DEPDIR)/libIfft_la-ir4tx.Tpo -c -o libIfft_la-ir4tx.lo `test -f 'ir4tx.c' || echo '$(srcdir)/'`ir4tx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-ir4tx.Tpo $(DEPDIR)/libIfft_la-ir4tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ir4tx.c' object='libIfft_la-ir4tx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-ir4tx.lo `test -f 'ir4tx.c' || echo '$(srcdir)/'`ir4tx.c
+
+libIfft_la-ir8tx.lo: ir8tx.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-ir8tx.lo -MD -MP -MF $(DEPDIR)/libIfft_la-ir8tx.Tpo -c -o libIfft_la-ir8tx.lo `test -f 'ir8tx.c' || echo '$(srcdir)/'`ir8tx.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-ir8tx.Tpo $(DEPDIR)/libIfft_la-ir8tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ir8tx.c' object='libIfft_la-ir8tx.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-ir8tx.lo `test -f 'ir8tx.c' || echo '$(srcdir)/'`ir8tx.c
+
+libIfft_la-difftma.lo: difftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-difftma.lo -MD -MP -MF $(DEPDIR)/libIfft_la-difftma.Tpo -c -o libIfft_la-difftma.lo `test -f 'difftma.c' || echo '$(srcdir)/'`difftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-difftma.Tpo $(DEPDIR)/libIfft_la-difftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='difftma.c' object='libIfft_la-difftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-difftma.lo `test -f 'difftma.c' || echo '$(srcdir)/'`difftma.c
+
+libIfft_la-sifftma.lo: sifftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-sifftma.lo -MD -MP -MF $(DEPDIR)/libIfft_la-sifftma.Tpo -c -o libIfft_la-sifftma.lo `test -f 'sifftma.c' || echo '$(srcdir)/'`sifftma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libIfft_la-sifftma.Tpo $(DEPDIR)/libIfft_la-sifftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sifftma.c' object='libIfft_la-sifftma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-sifftma.lo `test -f 'sifftma.c' || echo '$(srcdir)/'`sifftma.c
+
+testDoubleIfft-testDoubleIfft.o: testDoubleIfft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleIfft_CFLAGS) $(CFLAGS) -MT testDoubleIfft-testDoubleIfft.o -MD -MP -MF $(DEPDIR)/testDoubleIfft-testDoubleIfft.Tpo -c -o testDoubleIfft-testDoubleIfft.o `test -f 'testDoubleIfft.c' || echo '$(srcdir)/'`testDoubleIfft.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleIfft-testDoubleIfft.Tpo $(DEPDIR)/testDoubleIfft-testDoubleIfft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleIfft.c' object='testDoubleIfft-testDoubleIfft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleIfft_CFLAGS) $(CFLAGS) -c -o testDoubleIfft-testDoubleIfft.o `test -f 'testDoubleIfft.c' || echo '$(srcdir)/'`testDoubleIfft.c
+
+testDoubleIfft-testDoubleIfft.obj: testDoubleIfft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleIfft_CFLAGS) $(CFLAGS) -MT testDoubleIfft-testDoubleIfft.obj -MD -MP -MF $(DEPDIR)/testDoubleIfft-testDoubleIfft.Tpo -c -o testDoubleIfft-testDoubleIfft.obj `if test -f 'testDoubleIfft.c'; then $(CYGPATH_W) 'testDoubleIfft.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleIfft.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleIfft-testDoubleIfft.Tpo $(DEPDIR)/testDoubleIfft-testDoubleIfft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleIfft.c' object='testDoubleIfft-testDoubleIfft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleIfft_CFLAGS) $(CFLAGS) -c -o testDoubleIfft-testDoubleIfft.obj `if test -f 'testDoubleIfft.c'; then $(CYGPATH_W) 'testDoubleIfft.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleIfft.c'; fi`
+
+testFloatIfft-testFloatIfft.o: testFloatIfft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatIfft_CFLAGS) $(CFLAGS) -MT testFloatIfft-testFloatIfft.o -MD -MP -MF $(DEPDIR)/testFloatIfft-testFloatIfft.Tpo -c -o testFloatIfft-testFloatIfft.o `test -f 'testFloatIfft.c' || echo '$(srcdir)/'`testFloatIfft.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatIfft-testFloatIfft.Tpo $(DEPDIR)/testFloatIfft-testFloatIfft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatIfft.c' object='testFloatIfft-testFloatIfft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatIfft_CFLAGS) $(CFLAGS) -c -o testFloatIfft-testFloatIfft.o `test -f 'testFloatIfft.c' || echo '$(srcdir)/'`testFloatIfft.c
+
+testFloatIfft-testFloatIfft.obj: testFloatIfft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatIfft_CFLAGS) $(CFLAGS) -MT testFloatIfft-testFloatIfft.obj -MD -MP -MF $(DEPDIR)/testFloatIfft-testFloatIfft.Tpo -c -o testFloatIfft-testFloatIfft.obj `if test -f 'testFloatIfft.c'; then $(CYGPATH_W) 'testFloatIfft.c'; else $(CYGPATH_W) '$(srcdir)/testFloatIfft.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatIfft-testFloatIfft.Tpo $(DEPDIR)/testFloatIfft-testFloatIfft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatIfft.c' object='testFloatIfft-testFloatIfft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatIfft_CFLAGS) $(CFLAGS) -c -o testFloatIfft-testFloatIfft.obj `if test -f 'testFloatIfft.c'; then $(CYGPATH_W) 'testFloatIfft.c'; else $(CYGPATH_W) '$(srcdir)/testFloatIfft.c'; fi`
+
+testMatIfft-testMatIfft.o: testMatIfft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatIfft_CFLAGS) $(CFLAGS) -MT testMatIfft-testMatIfft.o -MD -MP -MF $(DEPDIR)/testMatIfft-testMatIfft.Tpo -c -o testMatIfft-testMatIfft.o `test -f 'testMatIfft.c' || echo '$(srcdir)/'`testMatIfft.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatIfft-testMatIfft.Tpo $(DEPDIR)/testMatIfft-testMatIfft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatIfft.c' object='testMatIfft-testMatIfft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatIfft_CFLAGS) $(CFLAGS) -c -o testMatIfft-testMatIfft.o `test -f 'testMatIfft.c' || echo '$(srcdir)/'`testMatIfft.c
+
+testMatIfft-testMatIfft.obj: testMatIfft.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatIfft_CFLAGS) $(CFLAGS) -MT testMatIfft-testMatIfft.obj -MD -MP -MF $(DEPDIR)/testMatIfft-testMatIfft.Tpo -c -o testMatIfft-testMatIfft.obj `if test -f 'testMatIfft.c'; then $(CYGPATH_W) 'testMatIfft.c'; else $(CYGPATH_W) '$(srcdir)/testMatIfft.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testMatIfft-testMatIfft.Tpo $(DEPDIR)/testMatIfft-testMatIfft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testMatIfft.c' object='testMatIfft-testMatIfft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatIfft_CFLAGS) $(CFLAGS) -c -o testMatIfft-testMatIfft.obj `if test -f 'testMatIfft.c'; then $(CYGPATH_W) 'testMatIfft.c'; else $(CYGPATH_W) '$(srcdir)/testMatIfft.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/ifft/cifftma.c b/2.3-1/src/c/signalProcessing/ifft/cifftma.c
new file mode 100644
index 00000000..209cdc92
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/cifftma.c
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "ifft.h"
+
+void cifftma ( floatComplex* in , int rows, int cols, floatComplex* out)
+{
+ int i = 0 ;
+ /* these 3 variable are created to permit to use the value in the fortran functions
+ because they need doubleComplex matrix as arguments and we can't cast directly the pointers
+ without having problems , i know that's ugly */
+ doubleComplex *dblin = NULL;
+ doubleComplex *dblout = NULL;
+
+
+
+ /* Array allocations*/
+ dblin = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(rows * cols));
+ dblout = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(rows * cols));
+
+
+
+ /*copy and cast all the floatComplex value into doubleComplex value */
+ for ( i = 0 ; i < (rows * cols) ; i ++ )
+ {
+ dblin[i] = DoubleComplex ( (double) creals( in[i]) , (double) cimags ( in[i])) ;
+ }
+
+ zifftma ( dblin, rows , cols , dblout );
+
+
+ for ( i = 0 ; i < (rows * cols) ; i++ )
+ {
+ out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
+
+ }
+
+ free ( dblin);
+ free ( dblout);
+
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/diffbi_lavraie.c b/2.3-1/src/c/signalProcessing/ifft/diffbi_lavraie.c
new file mode 100644
index 00000000..d71dc8c7
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/diffbi_lavraie.c
@@ -0,0 +1,243 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include "max.h"
+#include "ifft_internal.h"
+
+void difftbi ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr , int lout , int lnow , int lused ,
+ int lmax , int lbook , double* rstak , int* istak )
+{
+
+ int nfac[15] ;
+ int i ;
+ int in ;
+ int j = 3 ;
+ int j2 = 3 ;
+ int j3 = 3 ;
+ int jj = 9;
+ int m = 0 ;
+ int k ;
+ int kt ;
+ int kkk ;
+ int nspan ;
+ int nitems ;
+ int ntot ;
+ int maxp = 0;
+ int maxf ;
+ int itype;
+ int istkgt ;
+ int isize[] = {1,1,1,2,2} ;
+
+ int nf = abs ( n ) ;
+
+ ierr = 0 ;
+ printf ( "debut de dfftbi \n" );
+ /*determine the factors of n */
+
+
+ if ( nf == 1)
+ return ;
+
+ k = nf ;
+
+ nspan = abs ( nf*nspn ) ;
+ ntot = abs ( nspan*nseg) ;
+
+ if ( isn*ntot == 0 )
+ {
+ ierr = 1 ;
+ return ;
+ }
+
+printf ("un petit test kplop %d\n" , k - (int)(k/16)*16 ) ;
+
+ while ( (k- (int)(k/16)*16 ) == 0 )
+ {
+ m++;
+ printf ("m %d ,k %d ,k2 %d\n" , m , k ,(int) (k/16)*16 );
+ nfac[m-1] = 4 ;
+ k = k >> 4 ;
+ }
+
+printf ("avant ploa k %d\n\n" , k );
+ do
+ {
+ while ( k%jj == 0 )
+ {
+ m++;
+ nfac[m-1] = j ;
+ k /= jj ;
+ printf ("\nm %d ,k %d j %f jj %d\n" , m , k ,j , jj);
+ }
+
+ j+=2;
+ jj= j*j ;
+
+ }while ( jj <= k);
+
+
+printf ( "ploa\n" );
+
+
+ if ( k <= 4)
+ {
+ kt = m;
+ nfac[m+1] = k;
+ if ( k != 1 )
+ m++;
+ }
+ else
+ {
+ if ( (k & 7) != 0 )
+ {
+ m++;
+ nfac[m-1] = 2 ;
+ k = k >> 2 ;
+ }
+
+ /*all square factor out now but k >= 5 still */
+ kt = m ;
+ maxp = max ( (kt+1)*2 , k-1);
+ j=2;
+ printf ( "plob\n" );
+ do
+ {
+ if ( k%j == 0 )
+ {
+ m++;
+ nfac[m-1] = j ;
+ k /= j ;
+ }
+
+ j = (j+1) | 1 ;
+
+ }while ( j <= k );
+
+ }
+
+ if ( m <= ( kt+1) )
+ maxp = m + kt + 1 ;
+
+ if ( m + kt > 15)
+ {
+ ierr = 2 ;
+ printf ( "argh return 5 \n" );
+ return ;
+ }
+ if ( kt != 0 )
+ {
+ j = kt ;
+
+ do{
+ m++;
+ nfac[m-1] = nfac[j-1];
+ j--;
+ }while ( j != 0) ;
+ }
+
+ maxf = nfac[m-kt-1] ;
+
+ if ( kt > 0 )
+ maxf = max ( nfac[kt-1] , maxf );
+
+ for ( kkk = 1 ; kkk < m ; kkk++ )
+ maxf = max ( maxf , nfac[kkk-1]);
+
+ nitems = maxf * 4 ;
+ itype = 4 ;
+
+ istkgt = ( lnow*isize[1] -1)/isize[itype-1] + 2;
+
+ i = ( (istkgt - 1 + nitems) * isize[itype-1] -1) / isize[1] + 3 ;
+ printf ("i %d ,\n lmax %d\n istkgt %d\n lnow %d \n", i , lmax , istkgt , lnow ) ;
+
+
+
+ if ( i > lmax )
+ {
+ ierr = -i ;
+ printf ( "argh return 4 -i %d \n" , -i );
+ return ;
+ }
+
+ istak[i-2] = itype ;
+ istak[i-1] = lnow ;
+ lout ++ ;
+ lnow = i ;
+ lused = max ( lused , lnow );
+
+ j = istkgt ;
+ jj = j + maxf ;
+ j2 = jj+ maxf ;
+ j3 = j2+ maxf ;
+
+ nitems = maxp ;
+ itype = 2 ;
+
+ istkgt = ( lnow*isize[1] -1)/isize[itype-1] + 2;
+
+ i = ( (istkgt - 1 + nitems) * isize[itype-1] -1) / isize[1] + 3 ;
+
+ if ( i > lmax )
+ {
+ ierr = -i ;
+ printf ( "argh return 4 -i %d \n" , -i );
+ return ;
+ }
+
+ istak[i-2] = itype ;
+ istak[i-1] = lnow ;
+ lout ++ ;
+ lnow = i ;
+ lused = max ( lused , lnow );
+
+ k = istkgt ;
+
+/*
+c la carte suivante est a supprimer si simple precision
+c next instruction commented by FD&MG (simulog residue?)
+c ********************************************
+c k=2*k-1
+c *********************************************
+*/
+
+ printf ( "dfftmx me voilà tayoooooooo \n" );
+ difftmx( a , b , ntot , nf , nspan , isn , m , kt , &rstak[j-1] , &rstak[jj-1] , &rstak[j2-1] , &rstak[j3-1] , &istak[k-1] , nfac);
+
+ k =2 ;
+
+ in = 2 ;
+
+ if (!( lbook <= lnow && lnow <= lused && lused <= lmax ))
+ {
+ ierr = 3 ;
+ printf ( "argh return 6 \n" );
+ return ;
+ }
+
+ while ( in > 0)
+ {
+ if ( lbook > istak[lnow-1] || istak[lnow-1] >= lnow-1)
+ {
+ ierr = 4 ;
+ }
+
+ lout-- ;
+ lnow = istak[lnow-1] ;
+ in-- ;
+ }
+ printf ( "fin de dfftbi \n" );
+ return ;
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/difft2.c b/2.3-1/src/c/signalProcessing/ifft/difft2.c
new file mode 100644
index 00000000..f8488d3b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/difft2.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ifft_internal.h"
+
+void difft2 ( double* a , double* b , int nseg , int n , int nspn , int isn , int ierr )
+{
+
+
+ difftbi ( a , b , nseg , n , nspn , isn , ierr );
+
+
+
+ return ;
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/difftbi.c b/2.3-1/src/c/signalProcessing/ifft/difftbi.c
new file mode 100644
index 00000000..2b60ef27
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/difftbi.c
@@ -0,0 +1,321 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include "max.h"
+#include "ifft_internal.h"
+
+
+/*
+c arrays a and b originally hold the real and imaginary
+c components of the data, and return the real and
+c imaginary components of the resulting fourier coefficients.
+c multivariate data is indexed according to the fortran
+c array element successor function, without limit
+c on the number of implied multiple subscripts.
+c the subroutine is called once for each variate.
+c the calls for a multivariate transform may be in any order.
+c
+c n is the dimension of the current variable.
+c nspn is the spacing of consecutive data values
+c while indexing the current variable.
+c nseg*n*nspn is the total number of complex data values.
+c the sign of isn determines the sign of the complex
+c exponential, and the magnitude of isn is normally one.
+c the magnitude of isn determines the indexing increment for a&b.
+c
+c if fft is called twice, with opposite signs on isn, an
+c identity transformation is done...calls can be in either order.
+c the results are scaled by 1/n when the sign of isn is positive.
+c
+c a tri-variate transform with a(n1,n2,n3), b(n1,n2,n3)
+c is computed by
+c call fft(a,b,n2*n3,n1,1,-1)
+c call fft(a,b,n3,n2,n1,-1)
+c call fft(a,b,1,n3,n1*n2,-1)
+c
+c a single-variate transform of n complex data values is computed by
+c call fft(a,b,1,n,1,-1)
+c
+c the data may alternatively be stored in a single complex
+c array a, then the magnitude of isn changed to two to
+c give the correct indexing increment and a(2) used to
+c pass the initial address for the sequence of imaginary
+c values, e.g.
+c
+c
+c array nfac is working storage for factoring n. the smallest
+c number exceeding the 15 locations provided is 12,754,584.
+c!
+*/
+
+void difftbi ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr)
+{
+
+ double* rstak ;
+ int* istak ;
+
+ int lout = 0 ;
+ int lnow = 10;
+ int lused= 10;
+
+ int lbook = 10 ;
+
+
+ int nfac[15] ;
+ int i ;
+ int in ;
+ int j = 3 ;
+ int j2 = 3 ;
+ int j3 = 3 ;
+ int jj = 9;
+ int m = 0 ;
+ int k ;
+ int kt ;
+ int kkk ;
+ int nspan ;
+ int nitems ;
+ int ntot ;
+ int maxp = 0;
+ int maxf ;
+ int itype;
+ int istkgt ;
+ int isize[] = {1,1,1,2,2} ;
+
+ int nf = abs ( n ) ;
+
+ ierr = 0 ;
+
+ /*determine the factors of n */
+
+
+ if ( nf == 1)
+ return ;
+
+ k = nf ;
+
+ nspan = abs ( nf*nspn ) ;
+ ntot = abs ( nspan*nseg) ;
+
+
+ if ( isn*ntot == 0 )
+ {
+ ierr = 1 ;
+ return ;
+ }
+
+
+
+
+ while ( (k- (int)(k/16)*16 ) == 0 )
+ {
+ m++;
+ nfac[m-1] = 4 ;
+ k = k >> 4 ;
+ }
+
+
+
+
+ do
+ {
+ while ( k%jj == 0 )
+ {
+ m++;
+ nfac[m-1] = j ;
+ k /= jj ;
+
+ }
+
+ j+=2;
+ jj= j*j ;
+
+ }while ( jj <= k);
+
+
+
+
+
+ if ( k <= 4)
+ {
+
+ kt = m;
+ nfac[m] = k;
+ if ( k != 1 )
+ m++;
+ }
+ else
+ {
+ if ( (k & 3) == 0 )
+ {
+ m++;
+ nfac[m-1] = 2 ;
+ k = k >> 2 ;
+ }
+
+ /*all square factor out now but k >= 5 still */
+ kt = m ;
+ maxp = max ( (kt+1)*2 , k-1);
+ j=2;
+
+ do
+ {
+ if ( k%j == 0 )
+ {
+
+ m++;
+ nfac[m-1] = j ;
+ k /= j ;
+ }
+
+ j = (j+1) | 1 ;
+
+ }while ( j <= k );
+
+ }
+
+
+
+ if ( m <= ( kt+1) )
+ maxp = m + kt + 1 ;
+
+
+
+ if ( m + kt > 15)
+ {
+ ierr = 2 ;
+
+ return ;
+ }
+
+
+ if ( kt != 0 )
+ {
+ j = kt ;
+
+ do{
+ m++;
+
+ nfac[m-1] = nfac[j-1];
+ j--;
+ }while ( j != 0) ;
+ }
+
+
+ maxf = nfac[m-kt-1] ;
+
+ if ( kt > 0 )
+ maxf = max ( nfac[kt-1] , maxf );
+
+
+
+
+ for ( kkk = 1 ; kkk <= m ; kkk++ )
+ {
+ maxf = max ( maxf , nfac[kkk-1]);
+
+ }
+
+
+
+
+
+
+
+ nitems = maxf * 4 ;
+ itype = 4 ;
+
+
+ istkgt = 2 + ((lnow-1)/2) ;/*lnow = 10*/
+ istkgt = 6;
+
+ /*i = ( (istkgt - 1 + nitems) * isize[3] -1) + 3 ;*/
+ i = 12 + nitems*2;
+
+
+
+ istak = (int*) malloc ( sizeof (int) * (unsigned int) i);
+
+ istak[i-2] = itype ;
+ istak[i-1] = lnow ;
+ lout ++ ;
+ lnow = i ;
+ lused = max ( lused , lnow );
+
+ j = istkgt ;
+ jj = j + maxf ;
+ j2 = jj+ maxf ;
+ j3 = j2+ maxf ;
+
+ nitems = maxp ;
+ itype = 2 ;
+
+ /*istkgt = ( lnow*isize[1] -1)/isize[1] + 2;*/
+ istkgt = lnow + 1 ;
+ /*i = ( (istkgt - 1 + nitems) * isize[1] -1) / isize[1] + 3 ;*/
+ i = ( ( lnow + nitems) * isize[1] -1) / isize[1] + 3 ;
+ istak = (int*) realloc ( istak ,sizeof (int) * (unsigned int) i);
+ rstak = (double*) malloc ( sizeof (double) * (unsigned int) i);
+
+
+
+
+
+
+ istak[i-2] = itype ;
+ istak[i-1] = lnow ;
+ lout ++ ;
+ lnow = i ;
+ lused = max ( lused , lnow );
+
+ k = istkgt ;
+
+/*
+c la carte suivante est a supprimer si simple precision
+c next instruction commented by FD&MG (simulog residue?)
+c ********************************************
+c k=2*k-1
+c *********************************************
+*/
+
+
+
+ difftmx( a , b , ntot , nf , nspan , isn , m , kt , &rstak[j-1] , &rstak[jj-1] , &rstak[j2-1] , &rstak[j3-1] , &istak[k-1] , nfac);
+
+ k =2 ;
+
+ in = 2 ;
+
+ if (!( lbook <= lnow && lnow <= lused ))
+ {
+ ierr = 3 ;
+ return ;
+ }
+
+ while ( in > 0)
+ {
+ if ( lbook > istak[lnow-1] || istak[lnow-1] >= lnow-1)
+ {
+ ierr = 4 ;
+ }
+
+ lout-- ;
+ lnow = istak[lnow-1] ;
+ in-- ;
+ }
+
+ free(istak);
+ free(rstak);
+ return ;
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/difftma.c b/2.3-1/src/c/signalProcessing/ifft/difftma.c
new file mode 100644
index 00000000..9b4bc6e3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/difftma.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * 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 <stdlib.h>
+#include "ifft.h"
+#include "zeros.h"
+
+
+void difftma ( double* in , int rows, int cols, double* out){
+ double* ZEROS;
+ doubleComplex* inCpx;
+ doubleComplex* outCpx;
+
+ ZEROS = (double*)malloc((unsigned int)(rows*cols)*sizeof(double));
+ outCpx = (doubleComplex*)malloc((unsigned int)(rows*cols)*sizeof(doubleComplex));
+
+ dzerosa(ZEROS,rows,cols);
+ inCpx=DoubleComplexMatrix(in,ZEROS,rows*cols);
+
+ zifftma(inCpx,rows,cols,outCpx);
+
+ zreala(outCpx, rows*cols, out);
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/difftmx.c b/2.3-1/src/c/signalProcessing/ifft/difftmx.c
new file mode 100644
index 00000000..a2cce1b6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/difftmx.c
@@ -0,0 +1,1253 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <math.h>
+#include "max.h"
+#include "min.h"
+#include "ifft_internal.h"
+
+
+/*c'est moche je sais */
+
+static double* a ;
+static double* b ;
+static int ntot ;
+static int n ;
+static int nspan ;
+static int isn ;
+static int m ;
+static int kt ;
+static double* wt ;
+static double* ck ;
+static double* bt ;
+static double* sk ;
+static int* np ;
+static int* nfac ;
+static int inc ;
+static int nt ;
+static int ks ;
+
+static double rad ;
+static double c72 ;
+static double s72 ;
+static double s120 ;
+
+static double aa ;
+static double ak ;
+static double akm ;
+static double akp ;
+static double aj ;
+static double ajp ;
+static double ajm ;
+
+static double bb ;
+static double bk ;
+static double bkm ;
+static double bkp ;
+static double bj ;
+static double bjp ;
+static double bjm ;
+static double dr ;
+
+static double cd ;
+static double c1 ;
+static double c2 ;
+static double c3 ;
+
+static double sd ;
+static double s1 ;
+static double s2 ;
+static double s3 ;
+
+static int kspan ;
+static int nn ;
+static int jc ;
+static int klim ;
+static int jf ;
+static int maxf ;
+static int kk ;
+static int k ;
+static int k1 ;
+static int k2 ;
+static int k3 ;
+static int k4 ;
+static int mm ;
+static int kspnn ;
+static int i ;
+static int j ;
+static int jj;
+
+/* Prototypes */
+
+static void preliminaryWork (void);
+static void permute_stage1 (void);
+static void permute_stage2 (void);
+static void f4t_150 (void);
+static void factorOf3Transform (void) ;
+static void factorOf5Transform (void) ;
+static void preFOtherTransform (void);
+static void factorOfOtherTransform (void);
+static void pre_sqFactor2NormlOrder (void);
+static void nonSqFactor2NormOrder (void) ;
+static void detPermutCycles (void);
+static void reorderMatrix (void ) ;
+
+static int f4t_170 (void);
+static int factorTransform (void);
+static int pre_fOf2Trans (void);
+static int factorOf2Transform (void);
+static int factorOf4Transform (void);
+static int mulByRotationFactor (void );
+static int post_sqFactor2NormlOrder (void);
+static void single_sqFactor2NormlOrder (void);
+static int multi_sqFactor2NormlOrder (void);
+
+/* End Prototypes */
+
+
+
+int difftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan,
+ int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
+ double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac)
+{
+
+ int retVal = 0 ;
+ int iii = 0 ;
+ a = _pdblA ;
+ b = _pdblB ;
+
+ ntot = _iNtot ;
+ n = _iN ;
+ nspan= _iNspan ;
+ isn = _iIsn;
+ m = _iM ;
+ kt = _iKt ;
+ wt = _pdblWt ;
+ ck = _pdblCk;
+ bt = _pdblBt;
+ sk = _pdblSk;
+ np = _piNp;
+ nfac = _piNfac;
+
+ inc = abs ( isn ) ;
+ nt = inc*ntot ;
+ ks = inc*nspan;
+ rad = atan (1.0);
+
+ c72 = cos (rad/0.6250);
+ s72 = sin (rad/0.6250);
+ s120= sqrt(0.750);
+
+
+
+
+
+
+
+ preliminaryWork () ;
+
+
+ while ( retVal == 0 )
+ {
+
+ retVal = factorTransform ( ) ;
+ }
+
+
+ np[0] = ks ;
+
+ if ( kt != 0)
+ {
+
+ permute_stage1 ( ) ;
+ }
+
+ if ( 2*kt + 1 < m )
+ {
+
+ permute_stage2 ( ) ;
+ }
+
+
+/* lines under are just for my own conveniance */
+ for ( iii = 0 ; iii < 3 ; iii++)
+ {
+
+
+
+ }
+
+ _pdblA = a ;
+ _pdblB = b ;
+
+ return 0 ;
+}
+
+/** **************************************
+Sous-Fonctions
+******************************************/
+
+
+
+
+static void preliminaryWork (void)
+{
+
+ int lim ;
+
+
+
+ ak =(double) 1/n ;
+
+ /*scale by 1/n for isn > 0 */
+ for ( j = 1 ; j <= nt ; j += inc )
+ {
+ a[j-1] *= ak ;
+ b[j-1] *= ak ;
+
+ }
+ kspan = ks ;
+ nn = nt -inc ;
+ jc = ks/n ;
+
+ /* sin , cos values are re-initialized each lim steps */
+
+ lim = 32 ;
+ klim = lim*jc ;
+ i = 0;
+ jf = 0 ;
+
+ maxf = m -kt ;
+ maxf = nfac[maxf-1] ;
+
+
+
+ if ( kt > 0 )
+ maxf = max ( nfac[kt-1] , maxf );
+
+
+}
+
+
+/*40*/
+/* this function is call as many time as dfftbi has determined factor for the size of the input vector
+ each time we call a transform function for each kind of factor , we begin by the smallest
+ factor are stored in nfac
+ */
+
+static int factorTransform (void)
+{
+
+ int retVal = 42;
+
+ dr = 8 * (double)jc/(double)kspan ;
+ cd = 2 * sin(0.5*dr*rad)*sin(0.5*dr*rad);
+ sd = sin(dr*rad) ;
+ kk = 1 ;
+ i++ ;
+
+
+
+
+switch ( nfac[i-1] )
+ {
+ case 2 :
+ /*transform for factor of 2 (including rotation factor)*/
+
+ retVal = pre_fOf2Trans() ;
+ if ( retVal == 0 ) factorOf2Transform () ;
+
+ break ;
+
+ case 4 :
+ /*transform for factor of 4 */
+ kspnn = kspan ;
+ kspan = kspan >> 2 ; /*kspan /= 4 */
+
+ retVal = factorOf4Transform () ;
+ break ;
+
+ case 3 :
+ /*transform for factor of 3 */
+ k = nfac[i-1] ;
+ kspnn = kspan ;
+ kspan = kspan / k ;
+
+ factorOf3Transform ( ) ;
+ break ;
+
+ case 5 :
+ /*transform for factor of 5 */
+ k = nfac[i-1] ;
+ kspnn = kspan ;
+ kspan = kspan / k ;
+
+ factorOf5Transform ( ) ;
+ break ;
+
+ default :
+
+ k = nfac[i-1] ;
+ kspnn = kspan ;
+ kspan = kspan / k ;
+
+ if ( nfac[i-1] != jf) preFOtherTransform ( ) ;
+
+ factorOfOtherTransform ( ) ;
+ break ;
+ }
+
+
+
+ if ( retVal == 42 )
+ {
+ if ( i != m) retVal = mulByRotationFactor ( ) ;
+ else retVal = 1 ;
+ }
+
+ if ( retVal == 1 ) return 1 ; /*goto permute */
+ else return 0 ; /*goto factor_transform => once again*/
+
+}
+
+/* permutation for square factor of n */
+static void permute_stage1 (void)
+{
+
+ int retVal = 1 ;
+
+ pre_sqFactor2NormlOrder () ;
+
+ if ( n == ntot )
+ /*permutation for single-variate transform (optional code)*/
+ while ( retVal == 1)
+ {
+ single_sqFactor2NormlOrder () ;
+ retVal = post_sqFactor2NormlOrder () ;
+ }
+ else
+ /*permutation for multivariate transform*/
+ while ( retVal == 1) retVal = multi_sqFactor2NormlOrder ();
+
+}
+
+static void permute_stage2 (void)
+{
+ kspnn = np[kt] ;
+
+ /*permutation for square-free facotrs of n */
+ nonSqFactor2NormOrder () ;
+
+ /*determine the permutation cycles of length greater than 1*/
+ detPermutCycles ();
+
+ j = k3 + 1;
+ nt -= kspnn ;
+ i = nt - inc + 1 ;
+ while ( nt >= 0 )
+ {
+ reorderMatrix ( ) ;
+
+ j = k3 + 1 ;
+ nt -= kspnn ;
+ i = nt - inc + 1 ;
+ }
+}
+
+/*****************************************
+Sous-Sous-Fonctions
+******************************************/
+
+
+
+
+
+static int pre_fOf2Trans (void)
+{
+ kspan /= 2;
+ k1 = kspan + 2 ;
+ /*50*/
+ do{
+ do{
+ k2 = kk + kspan ;
+ ak = a[k2-1] ;
+ bk = b[k2-1] ;
+
+ a[k2-1] = a[kk-1] - ak;
+ b[k2-1] = b[kk-1] - bk;
+
+ a[kk-1] = a[kk-1] + ak;
+ b[kk-1] = b[kk-1] + bk;
+
+ kk = k2 + kspan ;
+ }while (kk <= nn);
+
+ kk -= nn ;
+ }while (kk <= jc);
+
+
+ if ( kk > kspan ) return 1 ; /*goto350*/
+ else return 0 ; /*goto60*/
+
+
+}
+
+
+
+static int factorOf2Transform (void)
+{
+ do /*60*/ {/*while ( kk <= jc*2 )*/
+ c1 = 1 - cd ;
+ s1 = sd ;
+ mm = min( k1/2 , klim);
+
+ do/* do 80 */ {/*while ( kk <= mm || ( kk > mm && kk < k2 ))*/
+ do {/*while(kk > k2) */
+ do { /*while ( kk < nt )*/
+ k2 = kk + kspan;
+
+ ak = a[kk-1] - a[k2-1];
+ bk = b[kk-1] - b[k2-1];
+
+ a[kk-1] = a[kk-1] + a[k2-1];
+ b[kk-1] = b[kk-1] + b[k2-1];
+
+ a[k2-1] = c1*ak - s1*bk;
+ b[k2-1] = s1*ak + c1*bk;
+
+ kk = k2 + kspan;
+ }while ( kk < nt );
+
+ k2 = kk - nt;
+ c1 = -c1;
+ kk = k1 - k2;
+
+
+ }while (kk > k2);
+
+ kk += jc;
+
+ if ( kk <= mm ) /* 70 */
+ {
+ ak = c1 - ( cd*c1+sd*s1) ;
+ s1 += (sd*c1-cd*s1) ;
+ /*c the following three statements compensate for truncation
+ c error. if rounded arithmetic is used, substitute
+ c c1=ak*/
+ c1 = 0.5/(ak*ak+s1*s1) + 0.5 ;
+ s1 *= c1 ;
+ c1 *= ak ;
+ }
+ else {
+ if ( kk < k2 ) /*90*/ {
+ s1 = dr*rad*((double)(kk-1)/(double)jc);
+ c1 = cos(s1) ;
+ s1 = sin(s1) ;
+ mm = min(k1/2,mm+klim);
+ }
+ }
+
+ } while ( kk <= mm || ( kk > mm && kk < k2 ));
+
+ k1 += (inc+inc) ;
+ kk = (k1-kspan)/2 + jc;
+
+ } while ( kk <= jc*2 );
+
+
+ return 0 ; /*goto40*/
+}
+
+
+/* this one is just an optimisation of the factor of 2 transform , we compute more things each turn */
+
+static int factorOf4Transform (void)
+{
+ int return_value = 0 ;
+
+ /*120*/
+ do
+ {
+ c1 = 1 ;
+ s1 = 0 ;
+
+ mm = min ( kspan , klim ) ;
+
+ do
+ {
+ f4t_150 () ;
+ return_value = f4t_170 () ;
+ } while ( return_value == 0 );
+
+ kk += ( inc - kspan ) ;
+ } while ( kk <= jc ) ;
+
+
+
+ if ( kspan == jc )
+ return 1 ; /*goto350*/
+ else
+ return 0 ;/*goto40*/
+
+
+}
+
+/*this function and the following are just here for conveniance , they just do fourier transformation for factor of 4
+ but as the code was a bit long in factorof4transform , we've created two sub-functions */
+
+static void f4t_150 (void)
+{
+
+ do{
+ k1 = kk + kspan ;
+ k2 = k1 + kspan ;
+ k3 = k2 + kspan ;
+
+ akp = a[kk-1] + a[k2-1] ;
+ akm = a[kk-1] - a[k2-1] ;
+
+ ajp = a[k1-1] + a[k3-1] ;
+ ajm = a[k1-1] - a[k3-1] ;
+
+ a[kk-1] = akp + ajp ;
+ ajp = akp - ajp ;
+
+ bkp = b[kk-1] + b[k2-1] ;
+ bkm = b[kk-1] - b[k2-1] ;
+
+ bjp = b[k1-1] + b[k3-1] ;
+ bjm = b[k1-1] - b[k3-1] ;
+
+ b[kk-1] = bkp + bjp ;
+ bjp = bkp - bjp ;
+
+ akp = akm - bjm ;
+ akm = akm + bjm ;
+
+ bkp = bkm + ajm ;
+ bkm = bkm - ajm ;
+
+ if ( s1 == 0 )/*190*/
+ {
+ a[k1-1] = akp ;
+ a[k2-1] = ajp ;
+ a[k3-1] = akm ;
+
+ b[k1-1] = bkp ;
+ b[k2-1] = bjp ;
+ b[k3-1] = bkm ;
+
+
+ }
+ else /*160*/
+ {
+
+ a[k1-1] = akp*c1 - bkp*s1 ;
+ a[k2-1] = ajp*c2 - bjp*s2 ;
+ a[k3-1] = akm*c3 - bkm*s3 ;
+
+ a[k1-1] = bkp*c1 + akp*s1 ;
+ a[k2-1] = bjp*c2 + ajp*s2 ;
+ a[k3-1] = bkm*c3 + akm*s3 ;
+ }
+ kk=k3+kspan;
+ }while ( kk <= nt ) ;
+
+
+}
+
+static int f4t_170 (void)
+{
+ kk += ( jc - nt ) ;
+
+ if ( kk <= mm )
+ {
+ c2 = c1 - (cd*c1 + sd*s1);
+ s1 = s1 + (sd*c1 - cd*s1);
+
+ /*
+ the following three statements compensate for truncation
+ error. if rounded arithmetic is used, substitute
+ c1=c2
+ */
+
+ c1 = 0.5/(c2*c2+s1*s1) + 0.5 ;
+ s1 *= c1 ;
+ c1 *= c2 ;
+
+ /*140*/
+
+ c2 = c1*c1 - s1*s1 ;
+ s2 = c1*s1*2 ;
+ c3 = c2*c1 - s2*s1 ;
+ s3 = c2*s1 + s2*c1 ;
+
+
+ return 0 ;
+
+ }
+ else
+ {
+ if ( kk <= kspan )
+ {
+ s1 = dr*rad * (kk-1)/jc ;
+ c1 = cos (s1) ;
+ s1 = sin (s1) ;
+ mm = min ( kspan , mm + klim );
+
+ /*140*/
+
+ c2 = c1*c1 - s1*s1 ;
+ s2 = c1*s1*2 ;
+ c3 = c2*c1 - s2*s1 ;
+ s3 = c2*s1 + s2*c1 ;
+
+ return 0 ;
+ }
+ }
+
+ return 1 ;
+}
+
+
+
+
+static void factorOf3Transform (void)
+{
+ do{
+ do{
+ k1 = kk + kspan ;
+ k2 = k1 + kspan ;
+
+ ak = a[kk-1] ;
+ bk = b[kk-1] ;
+
+ aj = a[k1-1] + a[k2-1] ;
+ bj = b[k1-1] + b[k2-1] ;
+
+ a[kk-1] = ak + aj ;
+ b[kk-1] = bk + bj ;
+
+ ak = -0.5*aj + ak ;
+ bk = -0.5*bj + bk ;
+
+ aj = (a[k1-1] - a[k2-1])*s120 ;
+ bj = (b[k1-1] - b[k2-1])*s120 ;
+
+ a[k1-1] = ak - bj ;
+ b[k1-1] = bk + aj ;
+ a[k2-1] = ak + bj ;
+ b[k2-1] = bk - aj ;
+
+ kk = k2 + kspan ;
+ } while (kk < nn);
+
+ kk -= nn ;
+ }while (kk <= kspan);
+
+}
+
+static void factorOf5Transform (void)
+{
+ c2 = c72*c72 - s72 *s72 ;
+ s2 = 2 * c72*s72;
+
+ do{
+ do{
+ k1 = kk + kspan ;
+ k2 = k1 + kspan ;
+ k3 = k2 + kspan ;
+ k4 = k3 + kspan ;
+
+
+
+ akp = a[k1-1] + a[k4-1] ;
+ akm = a[k1-1] - a[k4-1] ;
+
+ bkp = b[k1-1] + b[k4-1] ;
+ bkm = b[k1-1] - b[k4-1] ;
+
+ ajp = a[k2-1] + a[k3-1] ;
+ ajm = a[k2-1] - a[k3-1] ;
+
+ bjp = b[k2-1] + b[k3-1] ;
+ bjm = b[k2-1] - b[k3-1] ;
+
+ aa = a[kk-1] ;
+ bb = b[kk-1] ;
+
+ a[kk-1] = aa + akp + ajp;
+ b[kk-1] = bb + bkp + bjp;
+
+ ak = akp*c72 + ajp*c2 + aa ;
+ bk = bkp*c72 + bjp*c2 + bb ;
+
+ aj = akm*s72 + ajm*s2 ;
+ bj = bkm*s72 + bjm*s2 ;
+
+ a[k1-1] = ak - bj ;
+ a[k4-1] = ak + bj ;
+ b[k1-1] = bk + aj ;
+ b[k4-1] = bk - aj ;
+
+ ak = akp*c2 + ajp*c72 + aa ;
+ bk = bkp*c2 + bjp*c72 + bb ;
+
+ aj = akm*s2 - ajm*s72 ;
+
+ bj = bkm*s2 - bjm*s72 ;
+
+ a[k2-1] = ak - bj ;
+ a[k3-1] = ak + bj ;
+ b[k2-1] = bk + aj ;
+ b[k3-1] = bk - aj ;
+
+ kk = k4 + kspan;
+ }while (kk < nn);
+
+ kk -= nn ;
+ }while (kk <= kspan);
+}
+
+/* this function is the general case of non factor of 2 factor , the factorof3transform and factorof5trandform are just
+special case of this one */
+
+
+static void preFOtherTransform (void)
+{
+ jf = k ;
+ s1 = (rad*8)/k ;
+ c1 = cos (s1) ;
+ s1 = sin (s1) ;
+ ck[jf-1] = 1 ;
+ sk[jf-1] = 0 ;
+ j = 1 ;
+
+ do
+ {
+ ck[j-1] = ck[k-1] * c1 + sk[k-1]*s1 ;
+ sk[j-1] = ck[k-1] * s1 - sk[k-1]*c1 ;
+
+ k -- ;
+
+ ck[k-1] = ck[j-1] ;
+ sk[k-1] = - sk[j-1] ;
+
+ j++ ;
+
+ }while ( j < k );
+
+}
+
+static void factorOfOtherTransform (void)
+{
+int ktemp = 0 ;
+
+do
+ {
+ k1 = kk ;
+ k2 = kk + kspnn ;
+
+ aa = a[kk-1] ;
+ bb = b[kk-1] ;
+
+ ak = aa ;
+ bk = bb ;
+ j = 1 ;
+ k1 += kspan ;
+
+ do
+ {
+ k2 -= kspan ;
+ j++ ;
+
+ wt[j-1] = a[k1-1] + a[k2-1] ;
+ ak = wt[j-1] + ak ;
+
+ bt[j-1] = b[k1-1] + b[k2-1] ;
+ bk = bt[j-1] + bk ;
+ j++ ;
+
+ wt[j-1] = a[k1-1] - a[k2-1] ;
+ bt[j-1] = b[k1-1] - b[k2-1] ;
+
+ k1 += kspan;
+ }while ( k1 < k2 ) ;
+
+ a[kk-1] = ak ;
+ b[kk-1] = bk ;
+
+ k1 = kk ;
+ k2 = kk + kspnn ;
+ j = 1 ;
+
+ do
+ {
+ k1 += kspan ;
+ k2 -= kspan ;
+ jj = j ;
+ ak = aa ;
+ bk = bb ;
+ aj = 0 ;
+ bj = 0 ;
+ k = 1 ;
+
+ do
+ {
+ k++ ;
+ ak += ( wt[k-1] * ck[jj-1] ) ;
+ bk += ( bt[k-1] * ck[jj-1] ) ;
+
+ k++ ;
+ aj += (wt[k-1] * sk[jj-1]) ;
+ bj += (bt[k-1] * sk[jj-1]) ;
+ jj += j ;
+
+ if ( jj > jf )
+ jj -= jf ;
+ } while ( k < jf ) ;
+
+ k = jf - j ;
+ a[k1-1] = ak - bj ;
+ b[k1-1] = bk + aj ;
+ a[k2-1] = ak + bj ;
+ b[k2-1] = bk - aj ;
+
+ j++ ;
+
+ }while ( j < k ) ;
+
+
+
+
+
+ kk += kspnn ;
+ ktemp = kk ;
+
+ if ( kk > nn )
+ {
+ kk -= nn;
+ }
+
+}while ( ktemp <= nn || (kk <= kspan && ( ktemp > nn)) );
+}
+
+
+
+
+static int mulByRotationFactor (void )
+{
+ int ktemp = 0 ;
+
+ if ( i != m )
+ {
+ kk = jc + 1 ;
+
+ /*300*/
+ do
+ {
+ c2 = 1 - cd ;
+ s1 = sd ;
+
+ mm = min ( kspan , klim ) ;
+
+ /*320 */
+ do
+ {
+
+ c1 = c2 ;
+ s2 = s1 ;
+ kk += kspan ;
+
+ do
+ {
+
+ ak = a[kk-1] ;
+ a[kk-1] = c2*ak - s2*b[kk-1] ;
+ b[kk-1] = s2*ak + c2*b[kk-1] ;
+
+ kk += kspnn ;
+ ktemp = kk ;
+
+
+ if ( kk > nt )
+ {
+ ak = s1*s2 ;
+ s2 = s1*c2 + s2*c1 ;
+ c2 = c1*c2 - ak ;
+ kk += (kspan - nt ) ;
+
+
+
+ }
+
+ }while (ktemp <= nt || ( kk <= kspnn && ktemp > nt )) ;
+
+ kk += ( jc - kspnn );
+
+
+ if ( kk <= mm )
+ {
+
+ /* 310*/
+ c2 = c1 - ( cd*c1 + sd*s1 ) ;
+ s1 += (sd*c1 - cd*s1 ) ;
+
+ /*
+ the following three statements compensate for truncation
+ error. if rounded arithmetic is used, substitute
+ c1=c2
+ */
+
+ c1 = 0.5/(c2*c2+s1*s1) + 0.5 ;
+ s1 *= c1 ;
+ c2 *= c1 ;
+ }
+ else
+ {
+ if ( kk <= kspan )
+ {
+
+ s1 = dr*rad * (kk-1)/jc ;
+ c2 = cos (s1) ;
+ s1 = sin (s1) ;
+ mm = min ( kspan , mm + klim );
+ }
+ }
+
+ }while ( kk <= mm ||( kk <= kspan && kk > mm ) ) ;
+
+ kk += (jc + inc -kspan );
+
+
+ }while ( kk <= jc+jc);
+
+
+ return 0 ; /* goto40 */
+ }
+
+ return 1 ; /* goto350*/
+}
+
+
+
+
+static void pre_sqFactor2NormlOrder (void)
+{
+
+ k = kt + kt + 1 ;
+
+ if ( m < k )
+ k -- ;
+
+ j = 1 ;
+ np[k] = jc ;
+
+ do
+ {
+ np[j] = np[j-1]/nfac[j-1] ;
+ np[k-1] = np[k]*nfac[j-1] ;
+
+ j++ ;
+ k-- ;
+ }while ( j < k ) ;
+
+ k3 = np[k] ;
+ kspan = np[1] ;
+ kk = jc + 1 ;
+ k2 = kspan + 1 ;
+ j = 1;
+
+
+}
+
+static int post_sqFactor2NormlOrder (void)
+{
+
+ do
+ {
+ do
+ {
+ k2 -= np[j-1] ;
+ j++ ;
+ k2 += np[j] ;
+
+ } while ( k2 > np[j-1]);
+
+ j = 1 ;
+
+/* 390 */
+ do
+ {
+ if ( kk < k2 )
+ {
+
+
+ return 1 ;
+ }
+ else
+ {
+ kk += inc ;
+ k2 += kspan ;
+ }
+ }while( k2 < ks );
+
+ }while ( kk < ks ) ;
+
+ jc = k3 ;
+
+ return 0;
+}
+
+
+/* appeler cetter fonction dans un do while valeur_retour != 1)*/
+static void single_sqFactor2NormlOrder (void)
+{
+
+
+ do
+ {
+
+ ak = a[kk-1] ;
+ a[kk-1] = a[k2-1] ;
+ a[k2-1] = ak ;
+
+ bk = b[kk-1] ;
+ b[kk-1] = b[k2-1] ;
+ b[k2-1] = bk ;
+
+ kk += inc ;
+ k2 += kspan ;
+ } while ( k2 < ks );
+
+ /*380*/
+}
+
+/*idem que single_ */
+static int multi_sqFactor2NormlOrder (void)
+{
+
+
+
+ k = kk + jc ;
+
+ do /*410*/
+ {
+ ak = a[kk-1] ;
+ a[kk-1] = a[k2-1] ;
+ a[k2-1] = ak ;
+ bk = b[kk-1] ;
+ b[kk-1] = b[k2-1] ;
+ b[k2-1] = bk ;
+ kk += inc ;
+ k2 += kspan ;
+ } while ( kk < k );
+
+ kk += (ks - jc ) ;
+ k2 += (ks - jc ) ;
+
+ if ( kk < nt )
+ return 1 ;
+
+ k2 += ( kspan - nt );
+ kk += ( jc - nt );
+
+ if ( k2 < ks )
+ {
+
+ return 1 ;
+ }
+ if( post_sqFactor2NormlOrder ( ) == 1 )
+ {
+
+ return 1 ;
+ }
+ jc = k3 ;
+
+ return 0;
+
+}
+
+
+
+static void nonSqFactor2NormOrder (void)
+{
+
+ j = m - kt ;
+ nfac[j] = 1 ;
+
+
+
+ do
+ {
+ nfac[j-1] *= nfac[j] ;
+
+ j-- ;
+
+
+ }while ( j != kt ) ;
+
+ kt ++ ;
+ nn = nfac[kt-1] - 1;
+
+ jj = 0 ;
+ j = 0;
+
+ /*480*/
+
+ k2 = nfac[kt-1] ;
+ k = kt + 1 ;
+ kk = nfac[k-1] ;
+ j ++ ;
+
+ while ( j <= nn )
+ {
+ jj += kk ;
+
+
+ while ( jj >= k2 )
+ {
+ jj -= k2 ;
+ k2 = kk ;
+ k++ ;
+ kk = nfac[k-1] ;
+
+ jj += kk ;
+
+
+ }
+
+ np[j-1] = jj ;
+ k2 = nfac[kt-1] ;
+ k = kt + 1 ;
+ kk = nfac[k-1] ;
+ j ++ ;
+
+ }
+
+ j = 0 ;
+
+ return ;
+}
+
+/* here we determine how many permutation cycles we need to do */
+static void detPermutCycles (void)
+{
+
+ do
+ {
+ do
+ {
+ j++ ;
+
+ kk = np[j-1] ;
+ }while ( kk < 0 ) ;
+
+
+ if ( kk != j )
+ {
+ do
+ {
+
+ k = kk ;
+ kk = np[k-1] ;
+ np[k-1] = -kk ;
+ }while ( kk != j ) ;
+ k3 = kk ;
+ }
+ else
+ np[j-1] = -j ;
+ }while ( j != nn );
+
+ maxf *= inc ;
+
+ return ;
+}
+
+static void reorderMatrix (void)
+{
+do
+ {
+ do
+ {
+ j-- ;
+
+ }while (np[j-1] < 0 ) ;
+
+ jj = jc ;
+
+ /*520*/
+ do
+ {
+ kspan = jj ;
+
+ if ( jj > maxf )
+ kspan = maxf ;
+
+ jj -= kspan ;
+ k = np [j-1];
+ kk = jc*k + i + jj ;
+ k1 = kk + kspan ;
+ k2 = 0 ;
+
+ do /*530*/
+ {
+ k2 ++ ;
+ wt[k2-1] = a[k1-1] ;
+ bt[k2-1] = b[k1-1] ;
+ k1 -= inc ;
+
+ }while ( k1 != kk );
+
+ do
+ {
+ k1 = kk + kspan ;
+ k2 = k1 - jc * (k + np[k-1]);
+ k = -np[k-1];
+
+
+ do
+ {
+ a[k1-1] = a[k2-1] ;
+ b[k1-1] = b[k2-1] ;
+
+ k1 -= inc ;
+ k2 -= inc ;
+
+ }while ( k1 != kk ) ;
+
+ kk = k2 ;
+
+ }while ( k != j );
+
+ k1 = kk +kspan ;
+ k2 = 0 ;
+ /*560*/
+
+ do
+ {
+ k2 ++ ;
+ a[k1-1] = wt[k2-1] ;
+ b[k1-1] = bt[k2-1] ;
+ k1 -= inc ;
+
+
+ }while ( k1 != kk ) ;
+
+ } while ( jj != 0 ) ;
+}while ( j != 1 ) ;
+
+ return ;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/ifft/ifft842.c b/2.3-1/src/c/signalProcessing/ifft/ifft842.c
new file mode 100644
index 00000000..75f6e1ca
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/ifft842.c
@@ -0,0 +1,163 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ifft_internal.h"
+
+
+
+/* get binary log of integer argument; exact if n a power of 2 */
+static int fastlog2( int n)
+{
+ int log = -1;
+ while(n) {
+ log++;
+ n >>= 1;
+ }
+ return(log);
+}
+
+/*
+ int in; FORWARD or INVERSE
+ int n; length of vector
+ DPCOMPLEX *b; input vector
+*/
+void ifft842 (doubleComplex* b, int size , int in)
+{
+ double fn;
+ doubleComplex temp ;
+
+ int L[16],L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15;
+ int j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14;
+ int i = 0, j, ij, ji, ij1, ji1;
+ int n2pow, n8pow, nthpo, ipass, nxtlt, lengt;
+
+ n2pow = fastlog2( size );
+ nthpo = size ;
+ fn = nthpo;
+
+
+ if(in==INVERSE)
+ /*scramble inputs*/
+
+ for(i=0,j=size/2;j<size;i++,j++)
+ {
+ temp = DoubleComplex ( zreals ( b[j] ) , zimags( b[j] ));
+ b[j] = DoubleComplex ( zreals ( b[i] ) , zimags( b[i] ));
+ b[i] = DoubleComplex ( zreals ( temp ) , zimags( temp ));
+
+ /*
+ r = b[j].re; fi = b[j].im;
+ b[j].re = b[i].re; b[j].im = b[i].im;
+ b[i].re = r; b[i].im = fi;
+ */
+ }
+
+ n8pow = n2pow/3;
+
+ if(n8pow)
+ {
+ /* radix 8 iterations */
+ for(ipass=1;ipass<=n8pow;ipass++)
+ {
+ nxtlt = 0x1 << (n2pow - 3*ipass);
+ lengt = 8*nxtlt;
+
+
+
+ ir8tx(nxtlt,nthpo,lengt,
+ b,b+nxtlt,b+2*nxtlt,
+ b+3*nxtlt,b+4*nxtlt,b+5*nxtlt,
+ b+6*nxtlt,b+7*nxtlt);
+
+
+ }
+ }
+
+ if(n2pow%3 == 1)
+ {
+ /* radix 2 iteration needed */
+ ir2tx(nthpo,b,b+1);
+
+
+ }
+
+
+ if(n2pow%3 == 2)
+ {
+ /* radix 4 iteration needed */
+
+ ir4tx(nthpo,b,b+1,b+2,b+3);
+ }
+
+
+
+ for(j=1;j<=15;j++)
+ {
+ L[j] = 1;
+ if(j-n2pow <= 0) L[j] = 0x1 << (n2pow + 1 - j);
+ }
+ L15=L[1];L14=L[2];L13=L[3];L12=L[4];L11=L[5];L10=L[6];L9=L[7];
+ L8=L[8];L7=L[9];L6=L[10];L5=L[11];L4=L[12];L3=L[13];L2=L[14];L1=L[15];
+
+ ij = 1;
+
+
+ for(j1=1;j1<=L1;j1++)
+ for(j2=j1;j2<=L2;j2+=L1)
+ for(j3=j2;j3<=L3;j3+=L2)
+ for(j4=j3;j4<=L4;j4+=L3)
+ for(j5=j4;j5<=L5;j5+=L4)
+ for(j6=j5;j6<=L6;j6+=L5)
+ for(j7=j6;j7<=L7;j7+=L6)
+ for(j8=j7;j8<=L8;j8+=L7)
+ for(j9=j8;j9<=L9;j9+=L8)
+ for(j10=j9;j10<=L10;j10+=L9)
+ for(j11=j10;j11<=L11;j11+=L10)
+ for(j12=j11;j12<=L12;j12+=L11)
+ for(j13=j12;j13<=L13;j13+=L12)
+ for(j14=j13;j14<=L14;j14+=L13)
+ for(ji=j14;ji<=L15;ji+=L14)
+
+ {
+ ij1 = ij-1;
+ ji1 = ji-1;
+
+ if(ij-ji<0)
+ {
+ temp = b[ij1];
+ b[ij1] = b[ji1];
+ b[ji1] = temp;
+
+ /*
+ r = b[ij1].re;
+ b[ij1].re = b[ji1].re;
+ b[ji1].re = r;
+ fi = b[ij1].im;
+ b[ij1].im = b[ji1].im;
+ b[ji1].im = fi;
+ */
+ }
+ ij++;
+ }
+
+
+
+ if(in==INVERSE) /* scale outputs */
+ {
+ for(i=0;i<nthpo;i++)
+ {
+ b[i] = DoubleComplex ( zreals( b[i] )/fn , zimags(b[i])/fn);
+ fn *= -1 ;
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/ifft_internal.h b/2.3-1/src/c/signalProcessing/ifft/ifft_internal.h
new file mode 100644
index 00000000..7b920aa6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/ifft_internal.h
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __IFFT_INTERNAL_H__
+#define __IFFT_INTERNAL_H__
+
+
+#include "addition.h"
+#include "subtraction.h"
+
+#define FORWARD 0
+#define INVERSE 1
+void difft2 ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr);
+
+
+
+void difftbi ( double* a , double* b , int nseg , int n , int nspn ,
+ int isn , int ierr );
+
+void ifft842 (doubleComplex* b, int size , int in);
+
+void ir2tx(int nthpo, doubleComplex* c0, doubleComplex* c1);
+void ir4tx( int nthpo, doubleComplex* c0, doubleComplex* c1, doubleComplex* c2, doubleComplex* c3);
+void ir8tx ( int nxtlt,int nthpo,int lengt,
+ doubleComplex* cc0,doubleComplex* cc1,doubleComplex* cc2,doubleComplex* cc3,
+ doubleComplex* cc4,doubleComplex* cc5,doubleComplex* cc6,doubleComplex* cc7);
+
+int difftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan,
+ int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
+ double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac);
+
+
+
+#endif /* !__IFFT_INTERNAL_H__ */
diff --git a/2.3-1/src/c/signalProcessing/ifft/ir2tx.c b/2.3-1/src/c/signalProcessing/ifft/ir2tx.c
new file mode 100644
index 00000000..6602f776
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/ir2tx.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ifft_internal.h"
+/*
+** radix 2 iteration subroutine
+*/
+void ir2tx(int nthpo, doubleComplex* c0, doubleComplex* c1)
+{
+ int kk;
+ /* double *cr0, *ci0, *cr1, *ci1, r1, fi1;*/
+ doubleComplex temp ;
+
+/* cr0 = &(c0[0].re);
+ ci0 = &(c0[0].im);
+ cr1 = &(c1[0].re);
+ ci1 = &(c1[0].im);*/
+
+ for(kk=0;kk<nthpo;kk+=2)
+ {
+
+
+ temp = zadds ( c0[kk] , c1[kk] );
+ c1[kk] = zdiffs( c0[kk] , c1[kk] );
+ c0[kk] = DoubleComplex ( zreals ( temp ) , zimags( temp ));
+/*
+ r1 = cr0[kk] + cr1[kk];
+ cr1[kk] = cr0[kk] - cr1[kk];
+ cr0[kk] = r1;
+
+
+ fi1 = ci0[kk] + ci1[kk];
+ ci1[kk] = ci0[kk] - ci1[kk];
+ ci0[kk] = fi1;
+*/
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/ir4tx.c b/2.3-1/src/c/signalProcessing/ifft/ir4tx.c
new file mode 100644
index 00000000..facfe98c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/ir4tx.c
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ifft_internal.h"
+
+
+
+/*
+** radix 4 iteration subroutine
+*/
+/* this function do in one turn the same computation that do radix 2 in two turns */
+void ir4tx( int nthpo, doubleComplex* c0, doubleComplex* c1, doubleComplex* c2, doubleComplex* c3)
+{
+ int kk;
+ doubleComplex temp1 , temp2 , temp3 , temp4 ;
+
+ for(kk=0;kk<nthpo;kk+=4)
+ {
+ /* real and imag parts alternate */
+
+ /* this first step is strictly equivalent than calling radix 2
+ except that radix would have needed 2 turns to compute what radix4 do in one */
+ temp1 = zadds ( c0[kk] , c2[kk] ) ;
+ temp2 = zdiffs( c0[kk] , c2[kk] ) ;
+ temp3 = zadds ( c1[kk] , c3[kk] ) ;
+ temp4 = zdiffs( c1[kk] , c3[kk] ) ;
+
+
+ /* strictly equivalent than calling radix2 with the temporary vector , but here also , radix4 do it in one turn
+ instead of two */
+ c0[kk] = zadds ( temp1 , temp3 );
+ c1[kk] = zdiffs( temp1 , temp3 );
+
+
+ c2[kk] = DoubleComplex ( zreals ( temp2 ) - zimags( temp4 ) , zimags ( temp2 ) + zreals( temp4 ) );
+ c3[kk] = DoubleComplex ( zreals ( temp2 ) + zimags( temp4 ) , zimags ( temp2 ) - zreals( temp4 ) );
+
+
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/ir8tx.c b/2.3-1/src/c/signalProcessing/ifft/ir8tx.c
new file mode 100644
index 00000000..aa770bf1
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/ir8tx.c
@@ -0,0 +1,169 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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 "ifft_internal.h"
+#include <math.h>
+
+
+
+/*
+** radix 8 iteration subroutine
+*/
+
+/* this function do in one turn the same computation that do radix 2 in three turns */
+
+void ir8tx ( int nxtlt,int nthpo,int lengt,
+ doubleComplex* cc0,doubleComplex* cc1,doubleComplex* cc2,doubleComplex* cc3,
+ doubleComplex* cc4,doubleComplex* cc5,doubleComplex* cc6,doubleComplex* cc7)
+
+{
+
+
+ int j , kk;
+ double dblP7 = 1 / sqrt(2.0) ;
+ double dblPi2 = 8 * atan(1.0);
+
+ double scale, arg;
+ double c1,c2,c3,c4,c5,c6,c7;
+ double s1,s2,s3,s4,s5,s6,s7;
+
+ doubleComplex Atemp0,Atemp1,Atemp2,Atemp3,Atemp4,Atemp5,Atemp6,Atemp7;
+ doubleComplex Btemp0,Btemp1,Btemp2,Btemp3,Btemp4,Btemp5,Btemp6,Btemp7;
+
+ doubleComplex temp ;
+
+
+ scale = dblPi2/lengt;
+
+
+ for(j=0;j<nxtlt;j++)
+ {
+
+ arg = j*scale;
+ c1 = cos(arg);
+ s1 = sin(arg);
+ c2 = c1*c1 - s1*s1;
+ s2 = c1*s1 + c1*s1;
+ c3 = c1*c2 - s1*s2;
+ s3 = c2*s1 + s2*c1;
+ c4 = c2*c2 - s2*s2;
+ s4 = c2*s2 + c2*s2;
+ c5 = c2*c3 - s2*s3;
+ s5 = c3*s2 + s3*c2;
+ c6 = c3*c3 - s3*s3;
+ s6 = c3*s3 + c3*s3;
+ c7 = c3*c4 - s3*s4;
+ s7 = c4*s3 + s4*c3;
+
+ for(kk=j;kk<nthpo;kk+=lengt)
+ {
+ /* (k-1)*2*/ /* index by twos; re & im alternate */
+
+
+ /* first turn the same as calling radix 2 with the input vector */
+ /* but radix2 will have do it in three turn , radix8 do it in one */
+ Atemp0 = zadds ( cc0[kk] , cc4[kk] ) ;
+ Atemp1 = zadds ( cc1[kk] , cc5[kk] ) ;
+ Atemp2 = zadds ( cc2[kk] , cc6[kk] ) ;
+ Atemp3 = zadds ( cc3[kk] , cc7[kk] ) ;
+
+
+ Atemp4 = zdiffs ( cc0[kk] , cc4[kk] ) ;
+ Atemp5 = zdiffs ( cc1[kk] , cc5[kk] ) ;
+ Atemp6 = zdiffs ( cc2[kk] , cc6[kk] ) ;
+ Atemp7 = zdiffs ( cc3[kk] , cc7[kk] ) ;
+
+ /* second turn the same as calling radix 2 with the vector transformed by a previous call of radix2 */
+ /* the same here , three turns in one */
+ Btemp0 = zadds ( Atemp0 , Atemp2 ) ;
+ Btemp1 = zadds ( Atemp1 , Atemp3 ) ;
+ Btemp2 = zdiffs ( Atemp0 , Atemp2 ) ;
+ Btemp3 = zdiffs ( Atemp1 , Atemp3 ) ;
+
+ Btemp4 = DoubleComplex ( zreals ( Atemp4 ) - zimags( Atemp6 ) , zimags ( Atemp4 ) + zreals( Atemp6 ) );
+ Btemp5 = DoubleComplex ( zreals ( Atemp5 ) - zimags( Atemp7 ) , zimags ( Atemp5 ) + zreals( Atemp7 ) );
+ Btemp6 = DoubleComplex ( zreals ( Atemp4 ) + zimags( Atemp6 ) , zimags ( Atemp4 ) - zreals( Atemp6 ) );
+ Btemp7 = DoubleComplex ( zreals ( Atemp5 ) + zimags( Atemp7 ) , zimags ( Atemp5 ) - zreals( Atemp7 ) );
+
+ /*third turn the same as calling radix 2 with the vector transformed by two previous call of radix2 */
+ cc0[kk] = zadds ( Btemp0 , Btemp1 );
+
+
+
+ /* if we are not in the first turn */
+
+ if(j>0)
+ {
+ cc1[kk] = DoubleComplex ( (c4 * (zreals(Btemp0) - zreals(Btemp1))) - (s4 * (zimags(Btemp0) - zimags(Btemp1))),
+ c4 * (zimags(Btemp0) - zimags(Btemp1)) + s4 * (zreals(Btemp0) - zreals(Btemp1)));
+
+ cc2[kk] = DoubleComplex ( c2 * (zreals(Btemp2) - zimags(Btemp3)) - s2 * (zimags(Btemp2) + zreals(Btemp3)) ,
+ c2 * (zimags(Btemp2) + zreals(Btemp3)) + s2 * (zreals(Btemp2) - zimags(Btemp3)));
+
+ cc3[kk] = DoubleComplex ( c6 * (zreals(Btemp2) + zimags(Btemp3)) - s6 * (zimags(Btemp2) - zreals(Btemp3)) ,
+ c6 * (zimags(Btemp2) - zreals(Btemp3)) + s6 * (zreals(Btemp2) + zimags(Btemp3)));
+
+
+ temp = DoubleComplex ( dblP7*(zreals ( Btemp5 ) - zimags( Btemp5 )) ,
+ dblP7*(zreals ( Btemp5 ) + zimags( Btemp5 )) );
+
+ cc4[kk] = DoubleComplex ( c1 * (zreals (Btemp4) + zreals(temp)) - s1 * (zimags (Btemp4) + zimags(temp)) ,
+ c1 * (zimags (Btemp4) + zimags(temp)) + s1 * (zreals (Btemp4) + zreals(temp)));
+ cc5[kk] = DoubleComplex ( c5 * (zreals (Btemp4) - zreals(temp)) - s5 * (zimags (Btemp4) - zimags(temp)) ,
+ c5 * (zimags (Btemp4) - zimags(temp)) + s5 * (zreals (Btemp4) - zreals(temp)));
+
+
+ temp = DoubleComplex ( - dblP7*(zreals ( Btemp7 ) + zimags( Btemp7 )) ,
+ dblP7*(zreals ( Btemp7 ) - zimags( Btemp7 )) );
+
+ cc6[kk] = DoubleComplex ( c3 * (zreals (Btemp6) + zreals(temp)) - s3 * (zimags (Btemp6) + zimags(temp)) ,
+ c3 * (zimags (Btemp6) + zimags(temp)) + s3 * (zreals (Btemp6) + zreals(temp)));
+ cc7[kk] = DoubleComplex ( c7 * (zreals (Btemp6) - zreals(temp)) - s7 * (zimags (Btemp6) - zimags(temp)) ,
+ c7 * (zimags (Btemp6) - zimags(temp)) + s7 * (zreals (Btemp6) - zreals(temp)));
+
+
+
+
+ }
+ else
+ {
+ cc1[kk] = zdiffs ( Btemp0 , Btemp1 );
+
+ cc2[kk] = DoubleComplex ( zreals ( Btemp2 ) - zimags( Btemp3 ) ,
+ zimags ( Btemp2 ) + zreals( Btemp3 ) );
+
+
+ cc3[kk] = DoubleComplex ( zreals ( Btemp2 ) + zimags( Btemp3 ) ,
+ zimags ( Btemp2 ) - zreals( Btemp3 ) );
+
+
+ temp = DoubleComplex ( dblP7*(zreals ( Btemp5 ) - zimags( Btemp5 )) ,
+ dblP7*(zreals ( Btemp5 ) + zimags( Btemp5 )) );
+
+ cc4[kk] = zadds ( Btemp4 , temp );
+ cc5[kk] = zdiffs ( Btemp4 , temp );
+
+ temp = DoubleComplex ( - dblP7*(zreals ( Btemp7 ) + zimags( Btemp7 )) ,
+ dblP7*(zreals ( Btemp7 ) - zimags( Btemp7 )) );
+
+ cc6[kk] = zadds ( Btemp6 , temp );
+ cc7[kk] = zdiffs ( Btemp6 , temp );
+
+
+ }
+
+ }
+ }
+
+
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/sifftma.c b/2.3-1/src/c/signalProcessing/ifft/sifftma.c
new file mode 100644
index 00000000..63661bae
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/sifftma.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * 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 <stdlib.h>
+#include "ifft.h"
+#include "zeros.h"
+
+void sifftma ( float* in , int rows, int cols, float* out){
+ float* ZEROS;
+ floatComplex* inCpx;
+ floatComplex* outCpx;
+
+ ZEROS = (float*)malloc((unsigned int)(rows*cols)*sizeof(float));
+ outCpx = (floatComplex*)malloc((unsigned int)(rows*cols)*sizeof(floatComplex));
+
+ szerosa(ZEROS,rows,cols);
+ inCpx=FloatComplexMatrix(in,ZEROS,rows*cols);
+
+ cifftma(inCpx,rows,cols,outCpx);
+
+ creala(outCpx, rows*cols, out);
+
+ free(ZEROS);
+ free(outCpx);
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/testDoubleIfft.c b/2.3-1/src/c/signalProcessing/ifft/testDoubleIfft.c
new file mode 100644
index 00000000..9c09d1b9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/testDoubleIfft.c
@@ -0,0 +1,1301 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "ifft.h"
+
+
+#define ROW 1
+#define COLS2 2
+#define COLS3 3
+#define COLS4 4
+#define COLS5 5
+#define COLS6 6
+#define COLS7 7
+#define COLS8 8
+#define COLS9 9
+#define COLS10 10
+#define COLS11 11
+#define COLS12 12
+#define COLS13 13
+#define COLS14 14
+#define COLS15 15
+#define COLS16 16
+#define COLS32 32
+
+#define ZREAL_IN2 { 0.00022113462910056 , 0.33032709173858166 }
+#define ZIMAG_IN2 { 0.66538110421970487 , 0.62839178834110498 }
+
+#define ZREAL_IN3 { 2.48206677380949259, 0.43537130765616894, 0.97385666053742170}
+#define ZIMAG_IN3 { 2.14807060454040766,- 0.78285905346274376, 0.42632796149700880}
+
+
+#define ZREAL_IN4 { 0.84974523587152362, 0.68573101982474327, 0.87821648130193353, 0.06837403681129217}
+#define ZIMAG_IN4 { 0.56084860628470778, 0.66235693730413914, 0.72635067673400044, 0.19851438421756029}
+
+#define ZREAL_IN5 { 0.84974523587152362, 0.68573101982474327, 0.87821648130193353, 0.06837403681129217,\
+ 0.65251349471509457}
+#define ZIMAG_IN5 { 0.56084860628470778, 0.66235693730413914, 0.72635067673400044, 0.19851438421756029,\
+ 0.56642488157376647}
+
+#define ZREAL_IN6 { 0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+ 0.65251349471509457, 0.30760907428339124 }
+#define ZIMAG_IN6 { 0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+ 0.56642488157376647, 0.59350947011262178 }
+
+#define ZREAL_IN7 { 0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+ 0.65251349471509457, 0.88338878145441413, 0.30760907428339124 }
+#define ZIMAG_IN7 { 0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+ 0.40948254754766822, 0.56642488157376647, 0.59350947011262178 }
+
+
+
+#define ZREAL_IN8 { 0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+ 0.88338878145441413, 0.65251349471509457, 0.30760907428339124, 0.93296162132173777 }
+#define ZIMAG_IN8 { 0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+ 0.56642488157376647, 0.48264719732105732, 0.33217189135029912, 0.59350947011262178}
+
+
+#define ZREAL_IN9 { 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+ 0.43685875833034515}
+#define ZIMAG_IN9 { 0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+ 0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+ 0.68568959552794695}
+
+
+#define ZREAL_IN10 { 0.21646326314657927, 0.65251349471509457, 0.63257448654621840, 0.31264199689030647,\
+ 0.93296162132173777, 0.31264199689030647, 0.48185089323669672, 0.48264719732105732,\
+ 0.2922266637906432 , 0.48264719732105732 }
+#define ZIMAG_IN10 { 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.11383596854284406, 0.19983377400785685, 0.56186607433483005, 0.58961773291230202,\
+ 0.23122371966019273, 0.21646326314657927}
+/*
+#define ZREAL_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+
+
+#define ZIMAG_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+*/
+
+
+
+
+#define ZREAL_IN11 {0.49934938363730907,0.26385784195736051,0.52535630855709314,0.53762298030778766,\
+ 0.11999255046248436,0.2256303490139544 ,0.62740930821746588,0.76084325974807143,\
+ 0.04855662025511265,0.67239497276023030,0.20171726960688829 }
+
+#define ZIMAG_IN11 {0.39115739194676280,0.83003165572881699,0.58787201577797532,0.48291792999953032,\
+ 0.22328650346025825,0.84008856676518917,0.12059959070757031,0.28553641680628061,\
+ 0.86075146449729800,0.84941016510128975,0.52570608118548989}
+
+
+#define ZREAL_IN12 {0.75604385416954756,0.00022113462910056,0.33032709173858166,0.66538110421970487,\
+ 0.62839178834110498,0.84974523587152362,0.68573101982474327,0.87821648130193353,\
+ 0.06837403681129217,0.56084860628470778,0.66235693730413914,0.72635067673400044}
+
+#define ZIMAG_IN12 {0.19851438421756029,0.54425731627270579,0.23207478970289230,0.23122371966019273,\
+ 0.21646326314657927,0.88338878145441413,0.65251349471509457,0.30760907428339124,\
+ 0.93296162132173777,0.21460078610107303,0.31264199689030647,0.36163610080257058}
+
+
+#define ZREAL_IN13 {0.2922266637906432 ,0.56642488157376647,0.48264719732105732,0.33217189135029912,\
+ 0.59350947011262178,0.50153415976092219,0.43685875833034515,0.26931248093023896,\
+ 0.63257448654621840,0.40519540151581168,0.91847078315913677,0.04373343335464597,\
+ 0.48185089323669672}
+
+
+
+#define ZIMAG_IN13 {0.26395560009405017,0.41481037065386772,0.28064980218186975,0.12800584640353918,\
+ 0.77831285959109664,0.21190304495394230,0.11213546665385365,0.68568959552794695,\
+ 0.15312166837975383,0.69708506017923355,0.84155184263363481,0.40620247554033995,\
+ 0.40948254754766822}
+
+
+
+#define ZREAL_IN14 {0.87841258011758327,0.11383596854284406,0.19983377400785685,0.56186607433483005,\
+ 0.58961773291230202,0.68539796629920602,0.89062247332185507,0.50422128057107329,\
+ 0.34936154074966908,0.38737787725403905,0.92228986788541079,0.94881842611357570,\
+ 0.34353372454643250,0.37601187312975526}
+
+#define ZIMAG_IN14 {0.73409405630081892,0.26157614728435874,0.49934938363730907,0.26385784195736051,\
+ 0.52535630855709314,0.53762298030778766,0.11999255046248436,0.2256303490139544 ,\
+ 0.62740930821746588,0.76084325974807143,0.04855662025511265,0.67239497276023030,\
+ 0.20171726960688829,0.39115739194676280}
+
+#define ZREAL_IN15 {0.83003165572881699,0.58787201577797532,0.48291792999953032,0.22328650346025825,\
+ 0.84008856676518917,0.12059959070757031,0.28553641680628061,0.86075146449729800,\
+ 0.84941016510128975,0.52570608118548989,0.99312098976224661,0.64885628735646605,\
+ 0.99231909401714802,0.05004197778180242,0.74855065811425447}
+
+#define ZIMAG_IN15 {0.41040589986369014,0.60845263302326202,0.85442108893766999,0.06426467280834913,\
+ 0.82790829380974174,0.92623437754809856,0.56672112690284848,0.57116389367729425,\
+ 0.81601104838773608,0.05689279362559319,0.55959366867318749,0.12493403162807226,\
+ 0.72792222863063216,0.26777664758265018,0.54653349192813039}
+
+
+
+#define ZREAL_IN16 {0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+ 0.36163610080257058, 0.2922266637906432 , 0.56642488157376647, 0.48264719732105732,\
+ 0.33217189135029912, 0.59350947011262178, 0.50153415976092219, 0.43685875833034515}
+#define ZIMAG_IN16 {0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+ 0.04373343335464597, 0.48185089323669672, 0.26395560009405017, 0.41481037065386772,\
+ 0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+ 0.11213546665385365, 0.68568959552794695, 0.15312166837975383, 0.69708506017923355}
+
+
+#define ZREAL_IN32 { 0.21132486546412110, 0.75604385416954756, 0.00022113462910056, 0.33032709173858166,\
+ 0.66538110421970487, 0.62839178834110498, 0.84974523587152362, 0.68573101982474327,\
+ 0.87821648130193353, 0.06837403681129217, 0.56084860628470778, 0.66235693730413914,\
+ 0.72635067673400044, 0.19851438421756029, 0.54425731627270579, 0.23207478970289230,\
+ 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+ 0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+ 0.36163610080257058, 0.2922266637906432 , 0.56642488157376647, 0.48264719732105732,\
+ 0.33217189135029912, 0.59350947011262178, 0.50153415976092219, 0.43685875833034515}
+
+#define ZIMAG_IN32 { 0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+ 0.04373343335464597, 0.48185089323669672, 0.26395560009405017, 0.41481037065386772,\
+ 0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+ 0.11213546665385365, 0.68568959552794695, 0.15312166837975383, 0.69708506017923355,\
+ 0.84155184263363481, 0.40620247554033995, 0.40948254754766822, 0.87841258011758327,\
+ 0.11383596854284406, 0.19983377400785685, 0.56186607433483005, 0.58961773291230202,\
+ 0.68539796629920602, 0.89062247332185507, 0.50422128057107329, 0.34936154074966908,\
+ 0.38737787725403905, 0.92228986788541079, 0.94881842611357570, 0.34353372454643250}
+
+
+
+
+#define ZREAL_RESULT2 { 0.16527411318384111 , - 0.16505297855474055 }
+
+
+#define ZIMAG_RESULT2 {+ 0.64688644628040493, + 0.01849465793929994}
+
+
+
+#define ZREAL_RESULT3 { 1.29709824733436108, 0.94154648753137238, 0.2434220389437592}
+
+#define ZIMAG_RESULT3 { +0.59717983752489090,+0.61999805178742728,+0.93089271522808925}
+
+
+
+
+
+#define ZREAL_RESULT4 { 0.62051669345237315,-0.12307844962924719, 0.24346416513435543, 0.10884282691404223}
+
+#define ZIMAG_RESULT4 { +0.53701765113510191,+0.11296372814103961,+0.10658199037425220,-0.19571476336568594}
+
+
+
+#define ZREAL_RESULT5 { 0.62691605370491743, 0.01919730450714778, 0.10104198714906780,-0.07720389203270116,\
+ 0.17979378254309186}
+
+#define ZIMAG_RESULT5 { +0.54289909722283480,+0.13998734162926388,-0.17962778177138733,+0.12064468327985833,\
+-0.06305473407586182}
+
+
+
+#define ZREAL_RESULT6 { 0.36402360963014263, 0.09605967189946550, 0.01914935343131208, 0.11197456725252172,\
+-0.00281267335181221,-0.04413721258892397}
+
+#define ZIMAG_RESULT6 { +0.39017331654516357,-0.08647381537197443,-0.01847428942485585,-0.00928606038602692,\
+-0.11828530217444963,+0.05694693691321624}
+
+
+
+
+
+#define ZREAL_RESULT7 { 0.43821863417646711, 0.04570283341490348, 0.00786143114706625, 0.09081035877037001,\
+ 0.06907620238256847,-0.01879476197071369,-0.08861738164795580}
+
+#define ZIMAG_RESULT7 { +0.39293177811694990,-0.13474546775513907,+0.02350839028687007,-0.01818990984988529,\
+-0.03304492053033681,-0.13370336175502612,+0.11784427758764042}
+
+
+
+
+#define ZREAL_RESULT8 { 0.50006150756962597, 0.02175013240250377, 0.12240753043442965,-0.02322026233124427,\
+-0.00844178465195000,-0.11389905106099872, 0.09979579551145434,-0.05419655160111495}
+
+#define ZIMAG_RESULT8 { +0.39448237349279225,-0.14241475898929634,-0.02220236556604505,-0.14652524166940226,\
+-0.02577395853586495,+0.03536239646532335,+0.04400678444653749,+0.07766555645702852}
+
+
+
+
+#define ZREAL_RESULT9 { 0.4653623884336816 ,-0.10996977634919125,-0.00630644375731721,-0.04060246287025721,\
+ 0.05408191850705556, 0.01600258566680582,-0.05864725873797094,-0.05201672319102815,\
+-0.03668050804158550}
+
+#define ZIMAG_RESULT9 { +0.47890158897886670,+0.08218728720967677,-0.06845717881236174,-0.04807038546781070,\
+-0.08014536882440566,-0.2030002369914648,+0.22453417104910142,-0.06865385510029860, \
+-0.04798354111106445}
+
+
+
+
+#define ZREAL_RESULT10 { 0.47991688111796976,-0.06991181823164128,-0.08469577602979275, 0.07318652166556244,\
+-0.07052463321312863, 0.03129850449040533,-0.12994121698152189,-0.09609430997689952,\
+ 0.06979737512491652, 0.01343173518070941}
+
+#define ZIMAG_RESULT10 { +0.38964297915808854,+0.03225815718776807,-0.11005045339360417,+0.07000358882571070,\
+-0.03882538926347270,+0.01466467357240619,+0.09131179012889759,-0.02808828423670948,\
+-0.11655017979588442,-0.07314316252300754}
+
+
+
+
+
+#define ZREAL_RESULT11 { 0.40752098586579621, 0.01832270994676578, 0.00727102452352803,-0.13808643998727593,\
+ 0.03761367031409660, 0.01913753006534984, 0.14829738766302858,-0.03282455871021355,\
+ 0.08531354288243319,-0.01850240581569137,-0.03471406311050802}
+
+#define ZIMAG_RESULT11 { +0.54521434381604206,+0.04263232089408980,+0.01080182331995891,-0.16507135273435664,\
++0.08926061372379648,+0.01327764965004020,-0.10524284127370778,-0.02743692407216465,\
++0.01530157234736101,-0.10904555975048559,+0.08146574602618931}
+
+
+
+#define ZREAL_RESULT12 { 0.56766566393586493,-0.02954179400241778, 0.03231997586448970,-0.08061527988562983,\
+ 0.12393588887272257,-0.00005011576253769,-0.04579487590429687, 0.18096695473171109,\
+-0.02460040668391173, 0.04301438496137660, 0.06736119091227670,-0.07861773287010031}
+
+#define ZIMAG_RESULT12 { +0.42399044404737651,-0.08988211863004507,-0.06417895954194777,-0.05903535817439356,\
+-0.03585983457125090,-0.08163805724791348,+0.00020448095165193,-0.00326952155569338,\
+-0.06391751330264545,+0.08415352273732421,+0.16527532188314309,-0.07732802237804590}
+
+#define ZREAL_RESULT13 { 0.45819311546018493, 0.04715640399909302,-0.02841189190012001, 0.01471405402274759,\
+-0.06955117696838889, 0.08520673650173283,-0.08379007722081511,-0.06164570839841994,\
+-0.07511713555210725, 0.07790018146444697, 0.05666948441941852,-0.04832646187709128,\
+-0.08077086016003779}
+
+#define ZIMAG_RESULT13 { +0.41406970618006128,-0.00941536236456233,-0.04150925434362464,+0.07093289809698045,\
++0.05642954059283156,-0.13856574403878158,-0.06657177623345527,+0.08978984633083976,\
+-0.03246486275259956,+0.03475196544714984,-0.02951956674329188,-0.08259093889333179,\
+-0.00138085118416531}
+
+
+
+
+#define ZREAL_RESULT14 { 0.55365722569903086,-0.03431117289603670,-0.07434176530056802, 0.09479458498406634,\
+ 0.04225809799112697, 0.10711066217766220, 0.09039926979534348, 0.04258158766398475,\
+-0.06766097168605688, 0.02983162597647674, 0.16148055537460848, 0.00306446154680962,\
+-0.01447548152915653,-0.05597609967970790}
+
+#define ZIMAG_RESULT14 { +0.41925417428969269,-0.02346521727072965,-0.07537174377902310,+0.12152793513158673,\
+-0.05435563225189670,+0.05588517124820697,+0.03948028804374615,-0.02547196042723954,\
++0.04750412291672844,+0.09081187301248270,+0.02410149252380316,-0.00728204510680848,\
++0.07924950091433607,+0.04222609705593354}
+
+
+
+
+#define ZREAL_RESULT15 { 0.60260595980410780,-0.09025313009309296, 0.07296362400098141,-0.01312199542974801,\
+ 0.05196795946996628, 0.00939805486763355, 0.07359039581140392, 0.07244754050834930,\
+-0.13409874398389474,-0.06419327756841406,-0.04062806443214259, 0.19283708306652805,\
+ 0.04903632944886174,-0.00831723960417976, 0.05579715986245712}
+
+#define ZIMAG_RESULT15 { +0.52861572646846366,-0.09479760020968324,+0.06725385149296267,+0.01462043430946725,\
+-0.00503137552191604,-0.05388544405841567,-0.05301311586381348,-0.11414862867731596,\
++0.0617906214666224 ,+0.14723827146724461,-0.10948893804382542,+0.00343655851962967,\
+-0.00538333435303664,-0.03924473093854008,+0.06244360380584638}
+
+
+
+
+#define ZREAL_RESULT16 { 0.45740074128843844,-0.00119937109332679,-0.09568979823192530,-0.01738371075123765,\
+-0.03869746159762144,-0.05391866381953740, 0.12416191581397301,-0.03041585422893309,\
+-0.03257706691510975, 0.07000836728092155,-0.00597921899357861,-0.03766276570110767,\
+-0.07796601625159383,-0.03039291932884991,-0.03422318488120085, 0.03575872707088203}
+
+#define ZIMAG_RESULT16 { +0.40480042458511889,+0.06953094033520663,+0.02374777548578576,-0.03393710545080092,\
+-0.04651592345908284,+0.02783744013794178,-0.03035825342604098,-0.06447129475682091,\
+-0.11649833549745381,-0.11413977271896644,+0.11722373704793855,+0.08102030470498481,\
+-0.06532836984843016,+0.00779635766618338,-0.01208991333178105,+0.02069446945645629}
+
+
+
+
+
+#define ZREAL_RESULT32 { 0.47864284948445857, 0.05482834035731039,-0.01530773095660632,-0.01750083123738436,\
+ -0.05071297103611097, 0.08766815171372286, 0.02106608347521239,-0.05109320958418949,\
+ -0.01096817385405302, 0.02416709596518544,-0.05098444057349576,-0.01448958336761648,\
+ 0.02532074256370129,-0.09984237842467819,-0.06358972398280244,-0.04611519259707146,\
+ 0.01104057650081813,-0.03475148917606731, 0.00813855773340646,-0.00568704237169753,\
+ 0.01830285230723486, 0.02749700538425181,-0.04780122330152622, 0.06632936566012661,\
+ -0.01447601290419698, 0.03116875276343186, 0.00123360692547217, 0.01833898177168673,\
+ -0.03654957125464739, 0.00547684889715929,-0.05208112856470785,-0.05594424285220599}
+
+
+
+#define ZIMAG_RESULT32 {+0.48466352955438197,+0.04862008402656083,+0.04890918577469192,-0.07661834259188156,\
+ +0.01684868035424048,-0.06277273594077343,-0.03536555772325747,-0.04086803002308132,\
+ -0.04373891325667500,+0.03378928555068783,+0.09272389885362962,-0.01252633931303314,\
+ +0.04715379187194862,+0.04212975779784539,+0.00924226411866865,-0.06146319342441199,\
+ -0.06222798605449498,+0.03846733709242996,-0.06362612522976926,+0.02110331414670667,\
+ +0.06568727290671772,-0.09854847704278780,+0.04828755172931871,-0.06711471562709365,\
+ -0.03694727551192045,-0.04323841461679329,-0.07059643871085296,-0.01972938456264230,\
+ +0.04778892314703904,+0.02763841783182228,+0.00662935995827029,-0.01498824415525237}
+
+static void zifftmaTest2 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN2;
+ double tImagIn [] = ZIMAG_IN2 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT2 ;
+ double tImagResult [] = ZIMAG_RESULT2 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS2));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS2 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS2) ;
+
+
+
+ zifftma ( in , ROW , COLS2 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS2 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-16 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+static void zifftmaTest3 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN3;
+ double tImagIn [] = ZIMAG_IN3 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT3;
+ double tImagResult [] = ZIMAG_RESULT3 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS3));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS3 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS3) ;
+
+
+
+ zifftma ( in , ROW , COLS3 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS3 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+
+static void zifftmaTest4 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN4;
+ double tImagIn [] = ZIMAG_IN4 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT4 ;
+ double tImagResult [] = ZIMAG_RESULT4 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS4));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS4 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS4) ;
+
+
+ zifftma ( in , ROW , COLS4 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS4 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,zreals(out[i]) , zimags(out[i]), zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-16 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+
+static void zifftmaTest5 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN5;
+ double tImagIn [] = ZIMAG_IN5 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT5;
+ double tImagResult [] = ZIMAG_RESULT5 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS5));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS5 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS5) ;
+
+
+
+ zifftma ( in , ROW , COLS5 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS5 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+
+static void zifftmaTest6 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN6;
+ double tImagIn [] = ZIMAG_IN6 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT6;
+ double tImagResult [] = ZIMAG_RESULT6;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS6));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS6 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS6) ;
+
+
+
+ zifftma ( in , ROW , COLS6 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS6 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+
+static void zifftmaTest7 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN7;
+ double tImagIn [] = ZIMAG_IN7 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT7;
+ double tImagResult [] = ZIMAG_RESULT7;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS7));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS7 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS7) ;
+
+
+
+ zifftma ( in , ROW , COLS7 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS7 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ zreals (Result[i]) ,
+ zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+static void zifftmaTest8 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN8;
+ double tImagIn [] = ZIMAG_IN8 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT8 ;
+ double tImagResult [] = ZIMAG_RESULT8 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS8));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS8 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS8) ;
+
+
+ zifftma ( in , ROW , COLS8 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS8 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,zreals(out[i]) , zimags(out[i]), zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+/*
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-16 ) ;
+*/
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+
+static void zifftmaTest9 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN9;
+ double tImagIn [] = ZIMAG_IN9 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT9 ;
+ double tImagResult [] = ZIMAG_RESULT9 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS9));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS9 );
+ doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS9) ;
+
+
+ zifftma ( in , ROW , COLS9 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS9 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,zreals(out[i]) , zimags(out[i]), zreals (Result[i]) , zimags (Result[i]),
+ fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+
+}
+
+static void zifftmaTest10 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN10;
+ double tImagIn [] = ZIMAG_IN10 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT10 ;
+ double tImagResult [] = ZIMAG_RESULT10 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS10));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS10 );
+
+
+
+ zifftma ( in , ROW , COLS10 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS10 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+static void zifftmaTest11 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN11;
+ double tImagIn [] = ZIMAG_IN11 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT11 ;
+ double tImagResult [] = ZIMAG_RESULT11 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS11));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS11 );
+
+
+
+ zifftma ( in , ROW , COLS11 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS11 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+
+static void zifftmaTest12 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN12;
+ double tImagIn [] = ZIMAG_IN12 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT12 ;
+ double tImagResult [] = ZIMAG_RESULT12 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS12));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS12 );
+
+
+
+ zifftma ( in , ROW , COLS12 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS12 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-14 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+
+static void zifftmaTest13 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN13;
+ double tImagIn [] = ZIMAG_IN13 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT13 ;
+ double tImagResult [] = ZIMAG_RESULT13 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS13));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS13 );
+
+
+
+ zifftma ( in , ROW , COLS13 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS13 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+
+static void zifftmaTest14 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN14;
+ double tImagIn [] = ZIMAG_IN14 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT14 ;
+ double tImagResult [] = ZIMAG_RESULT14 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS14));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS14 );
+
+
+
+ zifftma ( in , ROW , COLS14 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS14 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-14 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+
+
+static void zifftmaTest15 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN15;
+ double tImagIn [] = ZIMAG_IN15 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT15 ;
+ double tImagResult [] = ZIMAG_RESULT15 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS15));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS15 );
+
+
+
+ zifftma ( in , ROW , COLS15 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS15 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-15 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-14 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+
+
+static void zifftmaTest16 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN16;
+ double tImagIn [] = ZIMAG_IN16 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT16 ;
+ double tImagResult [] = ZIMAG_RESULT16 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS16));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS16 );
+
+
+
+ zifftma ( in , ROW , COLS16 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS16 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-15);
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+}
+
+
+
+static void zifftmaTest32 (void )
+{
+ int i = 0 ;
+
+ double tRealIn [] = ZREAL_IN32;
+ double tImagIn [] = ZIMAG_IN32 ;
+
+
+
+ double tRealResult [] = ZREAL_RESULT32 ;
+ double tImagResult [] = ZIMAG_RESULT32 ;
+
+
+
+ doubleComplex* out = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS32));
+ doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS32 );
+
+
+
+ zifftma ( in , ROW , COLS32 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS32 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ zreals(out[i]) ,
+ zimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) ,
+ fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])));
+
+
+ if ( zreals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - tRealResult[i] ) / fabs (zreals (out[i])) < 3e-14 );
+
+
+ if ( zimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - tImagResult[i] ) / fabs (zimags (out[i])) < 3e-15 ) ;
+
+ }
+
+ free(out);
+ free(in);
+
+
+}
+
+static int testFft(void) {
+
+ printf("\n>>>> FFT Tests\n");
+ printf("\t>>>> Matrix Double Realt Tests\n");
+ /*dfftmaTest();*/
+
+ printf("\n\n\n");
+
+ printf("\n\t>>>> Vector 2 Double Complex Tests\n");
+ zifftmaTest2();
+ printf("\n\t>>>> Vector 3 Double Complex Tests\n");
+ zifftmaTest3();
+
+ printf("\n\t>>>> Vector 4 Double Complex Tests\n");
+ zifftmaTest4();
+
+
+ printf("\n\t>>>> Vector 5 Double Complex Tests\n");
+ zifftmaTest5();
+ printf("\n\t>>>> Vector 6 Double Complex Tests\n");
+ zifftmaTest6();
+ printf("\n\t>>>> Vector 7 Double Complex Tests\n");
+ zifftmaTest7();
+
+ printf("\n\t>>>> Vector 8 Double Complex Tests\n");
+ zifftmaTest8();
+
+ printf("\n\t>>>> Vector 9 Double Complex Tests\n");
+ zifftmaTest9();
+ printf("\n\t>>>> Vector 10 Double Complex Tests\n");
+ zifftmaTest10();
+ printf("\n\t>>>> Vector 11 Double Complex Tests\n");
+ zifftmaTest11();
+ printf("\n\t>>>> Vector 12 Double Complex Tests\n");
+ zifftmaTest12();
+ printf("\n\t>>>> Vector 13 Double Complex Tests\n");
+ zifftmaTest13();
+ printf("\n\t>>>> Vector 14 Double Complex Tests\n");
+ zifftmaTest14();
+ printf("\n\t>>>> Vector 14 Double Complex Tests\n");
+ zifftmaTest15();
+ printf("\n\t>>>> Vector 16 Double Complex Tests\n");
+ zifftmaTest16();
+ printf("\n\t>>>> Vector 32 Double Complex Tests\n");
+ zifftmaTest32();
+
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testFft() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/testFloatIfft.c b/2.3-1/src/c/signalProcessing/ifft/testFloatIfft.c
new file mode 100644
index 00000000..5c2fec4b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/testFloatIfft.c
@@ -0,0 +1,1269 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "ifft.h"
+
+#define ROW 1
+#define COLS2 2
+#define COLS3 3
+#define COLS4 4
+#define COLS5 5
+#define COLS6 6
+#define COLS7 7
+#define COLS8 8
+#define COLS9 9
+#define COLS10 10
+#define COLS11 11
+#define COLS12 12
+#define COLS13 13
+#define COLS14 14
+#define COLS15 15
+#define COLS16 16
+#define COLS32 32
+
+#define CREAL_IN2 { 0.00022113462910056f , 0.33032709173858166f }
+#define CIMAG_IN2 { 0.66538110421970487f , 0.62839178834110498f }
+
+#define CREAL_IN3 { 2.48206677380949259f, 0.43537130765616894f, 0.97385666053742170f}
+#define CIMAG_IN3 { 2.14807060454040766f,- 0.78285905346274376f, 0.42632796149700880f}
+
+
+#define CREAL_IN4 { 0.84974523587152362f, 0.68573101982474327f, 0.87821648130193353f, 0.06837403681129217f}
+#define CIMAG_IN4 { 0.56084860628470778f, 0.66235693730413914f, 0.72635067673400044f, 0.19851438421756029f}
+
+#define CREAL_IN5 { 0.84974523587152362f, 0.68573101982474327f, 0.87821648130193353f, 0.06837403681129217f,\
+ 0.65251349471509457f}
+#define CIMAG_IN5 { 0.56084860628470778f, 0.66235693730413914f, 0.72635067673400044f, 0.19851438421756029f,\
+ 0.56642488157376647f}
+
+#define CREAL_IN6 { 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+ 0.65251349471509457f, 0.30760907428339124f }
+#define CIMAG_IN6 { 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+ 0.56642488157376647f, 0.59350947011262178f }
+
+#define CREAL_IN7 { 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+ 0.65251349471509457f, 0.88338878145441413f, 0.30760907428339124f }
+#define CIMAG_IN7 { 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+ 0.40948254754766822f, 0.56642488157376647f, 0.59350947011262178f }
+
+
+
+#define CREAL_IN8 { 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+ 0.88338878145441413f, 0.65251349471509457f, 0.30760907428339124f, 0.93296162132173777f }
+#define CIMAG_IN8 { 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+ 0.56642488157376647f, 0.48264719732105732f, 0.33217189135029912f, 0.59350947011262178f}
+
+
+#define CREAL_IN9 { 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+ 0.43685875833034515f}
+#define CIMAG_IN9 { 0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+ 0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+ 0.68568959552794695f}
+
+
+#define CREAL_IN10 { 0.21646326314657927f, 0.65251349471509457f, 0.63257448654621840f, 0.31264199689030647f,\
+ 0.93296162132173777f, 0.31264199689030647f, 0.48185089323669672f, 0.48264719732105732f,\
+ 0.2922266637906432f , 0.48264719732105732f }
+#define CIMAG_IN10 { 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.11383596854284406f, 0.19983377400785685f, 0.56186607433483005f, 0.58961773291230202f,\
+ 0.23122371966019273f, 0.21646326314657927f}
+/*
+#define CREAL_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+
+
+#define CIMAG_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+*/
+
+
+
+
+#define CREAL_IN11 {0.49934938363730907f, 0.26385784195736051f, 0.52535630855709314f ,0.53762298030778766f,\
+ 0.11999255046248436f, 0.2256303490139544f , 0.62740930821746588f ,0.76084325974807143f,\
+ 0.04855662025511265f, 0.67239497276023030f, 0.20171726960688829f }
+
+#define CIMAG_IN11 {0.39115739194676280f, 0.83003165572881699f,0.58787201577797532f ,0.48291792999953032f,\
+ 0.22328650346025825f, 0.84008856676518917f,0.12059959070757031f ,0.28553641680628061f,\
+ 0.86075146449729800f, 0.84941016510128975f,0.52570608118548989f }
+
+
+#define CREAL_IN12 {0.75604385416954756f, 0.00022113462910056f,0.33032709173858166f ,0.66538110421970487f,\
+ 0.62839178834110498f,0.84974523587152362f ,0.68573101982474327f ,0.87821648130193353f,\
+ 0.06837403681129217f,0.56084860628470778f ,0.66235693730413914f ,0.72635067673400044f}
+
+#define CIMAG_IN12 {0.19851438421756029f, 0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f,\
+ 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f, 0.30760907428339124f,\
+ 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f}
+
+#define CREAL_IN13 {0.2922266637906432f , 0.56642488157376647f,0.48264719732105732f,0.33217189135029912f,\
+ 0.59350947011262178f, 0.50153415976092219f,0.43685875833034515f,0.26931248093023896f,\
+ 0.63257448654621840f, 0.40519540151581168f,0.91847078315913677f,0.04373343335464597f,\
+ 0.48185089323669672f}
+
+
+
+#define CIMAG_IN13 {0.26395560009405017f,0.41481037065386772f,0.28064980218186975f,0.12800584640353918f,\
+ 0.77831285959109664f,0.21190304495394230f,0.11213546665385365f,0.68568959552794695f,\
+ 0.15312166837975383f,0.69708506017923355f,0.84155184263363481f,0.40620247554033995f,\
+ 0.40948254754766822f}
+
+
+
+#define CREAL_IN14 {0.87841258011758327f,0.11383596854284406f,0.19983377400785685f,0.56186607433483005f,\
+ 0.58961773291230202f,0.68539796629920602f,0.89062247332185507f,0.50422128057107329f,\
+ 0.34936154074966908f,0.38737787725403905f,0.92228986788541079f,0.94881842611357570f,\
+ 0.34353372454643250f,0.37601187312975526f}
+
+#define CIMAG_IN14 {0.73409405630081892f,0.26157614728435874f,0.49934938363730907f,0.26385784195736051f,\
+ 0.52535630855709314f,0.53762298030778766f,0.11999255046248436f,0.2256303490139544f ,\
+ 0.62740930821746588f,0.76084325974807143f,0.04855662025511265f,0.67239497276023030f,\
+ 0.20171726960688829f,0.39115739194676280f}
+
+#define CREAL_IN15 {0.83003165572881699f,0.58787201577797532f,0.48291792999953032f,0.22328650346025825f,\
+ 0.84008856676518917f,0.12059959070757031f,0.28553641680628061f,0.86075146449729800f,\
+ 0.84941016510128975f,0.52570608118548989f,0.99312098976224661f,0.64885628735646605f,\
+ 0.99231909401714802f,0.05004197778180242f,0.74855065811425447f}
+
+#define CIMAG_IN15 {0.41040589986369014f,0.60845263302326202f,0.85442108893766999f,0.06426467280834913f,\
+ 0.82790829380974174f,0.92623437754809856f,0.56672112690284848f,0.57116389367729425f,\
+ 0.81601104838773608f,0.05689279362559319f,0.55959366867318749f,0.12493403162807226f,\
+ 0.72792222863063216f,0.26777664758265018f,0.54653349192813039f}
+
+
+#define CREAL_IN16 {0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+ 0.36163610080257058f, 0.2922266637906432f , 0.56642488157376647f, 0.48264719732105732f,\
+ 0.33217189135029912f, 0.59350947011262178f, 0.50153415976092219f, 0.43685875833034515f}
+#define CIMAG_IN16 {0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+ 0.04373343335464597f, 0.48185089323669672f, 0.26395560009405017f, 0.41481037065386772f,\
+ 0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+ 0.11213546665385365f, 0.68568959552794695f, 0.15312166837975383f, 0.69708506017923355f}
+
+
+#define CREAL_IN32 { 0.21132486546412110f, 0.75604385416954756f, 0.00022113462910056f, 0.33032709173858166f,\
+ 0.66538110421970487f, 0.62839178834110498f, 0.84974523587152362f, 0.68573101982474327f,\
+ 0.87821648130193353f, 0.06837403681129217f, 0.56084860628470778f, 0.66235693730413914f,\
+ 0.72635067673400044f, 0.19851438421756029f, 0.54425731627270579f, 0.23207478970289230f,\
+ 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+ 0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+ 0.36163610080257058f, 0.2922266637906432f , 0.56642488157376647f, 0.48264719732105732f,\
+ 0.33217189135029912f, 0.59350947011262178f, 0.50153415976092219f, 0.43685875833034515f}
+
+#define CIMAG_IN32 { 0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+ 0.04373343335464597f, 0.48185089323669672f, 0.26395560009405017f, 0.41481037065386772f,\
+ 0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+ 0.11213546665385365f, 0.68568959552794695f, 0.15312166837975383f, 0.69708506017923355f,\
+ 0.84155184263363481f, 0.40620247554033995f, 0.40948254754766822f, 0.87841258011758327f,\
+ 0.11383596854284406f, 0.19983377400785685f, 0.56186607433483005f, 0.58961773291230202f,\
+ 0.68539796629920602f, 0.89062247332185507f, 0.50422128057107329f, 0.34936154074966908f,\
+ 0.38737787725403905f, 0.92228986788541079f, 0.94881842611357570f, 0.34353372454643250f}
+
+
+
+
+#define CREAL_RESULT2 { 0.16527411318384111f , - 0.16505297855474055f }
+
+
+#define CIMAG_RESULT2 {+ 0.64688644628040493f, + 0.01849465793929994f}
+
+
+
+#define CREAL_RESULT3 { 1.29709824733436108f, 0.94154648753137238f, 0.2434220389437592f}
+
+#define CIMAG_RESULT3 { +0.59717983752489090f,+0.61999805178742728f,+0.93089271522808925f}
+
+
+
+
+
+#define CREAL_RESULT4 { 0.62051669345237315f,-0.12307844962924719f, 0.24346416513435543f, 0.10884282691404223f}
+
+#define CIMAG_RESULT4 { +0.53701765113510191f,+0.11296372814103961f,+0.10658199037425220f,-0.19571476336568594f}
+
+
+
+#define CREAL_RESULT5 { 0.62691605370491743f, 0.01919730450714778f, 0.10104198714906780f,-0.07720389203270116f,\
+ 0.17979378254309186f}
+
+#define CIMAG_RESULT5 { +0.54289909722283480f,+0.13998734162926388f,-0.17962778177138733f,+0.12064468327985833f,\
+-0.06305473407586182f}
+
+
+
+#define CREAL_RESULT6 { 0.36402360963014263f, 0.09605967189946550f, 0.01914935343131208f, 0.11197456725252172f,\
+-0.00281267335181221f,-0.04413721258892397f}
+
+#define CIMAG_RESULT6 { +0.39017331654516357f,-0.08647381537197443f,-0.01847428942485585f,-0.00928606038602692f,\
+-0.11828530217444963f,+0.05694693691321624f}
+
+
+
+
+
+#define CREAL_RESULT7 { 0.43821863417646711f, 0.04570283341490348f, 0.00786143114706625f, 0.09081035877037001f,\
+ 0.06907620238256847f,-0.01879476197071369f,-0.08861738164795580f}
+
+#define CIMAG_RESULT7 { +0.39293177811694990f,-0.13474546775513907f,+0.02350839028687007f,-0.01818990984988529f,\
+ -0.03304492053033681f,-0.13370336175502612f,+0.11784427758764042f}
+
+
+
+
+#define CREAL_RESULT8 { 0.50006150756962597f, 0.02175013240250377f, 0.12240753043442965f,-0.02322026233124427f,\
+-0.00844178465195000f,-0.11389905106099872f, 0.09979579551145434f,-0.05419655160111495f}
+
+#define CIMAG_RESULT8 { +0.39448237349279225f,-0.14241475898929634f,-0.02220236556604505f,-0.14652524166940226f,\
+-0.02577395853586495f,+0.03536239646532335f,+0.04400678444653749f,+0.07766555645702852f}
+
+
+
+
+#define CREAL_RESULT9 { 0.4653623884336816f ,-0.10996977634919125f,-0.00630644375731721f,-0.04060246287025721f,\
+ 0.05408191850705556f, 0.01600258566680582f,-0.05864725873797094f,-0.05201672319102815f,\
+-0.03668050804158550f}
+
+#define CIMAG_RESULT9 { +0.47890158897886670f,+0.08218728720967677f,-0.06845717881236174f,-0.04807038546781070f,\
+-0.08014536882440566f,-0.2030002369914648f,+0.22453417104910142f,-0.06865385510029860f, \
+-0.04798354111106445f}
+
+
+
+
+#define CREAL_RESULT10 { 0.47991688111796976f,-0.06991181823164128f,-0.08469577602979275f, 0.07318652166556244f,\
+-0.07052463321312863f, 0.03129850449040533f,-0.12994121698152189f,-0.09609430997689952f,\
+ 0.06979737512491652f, 0.01343173518070941f}
+
+#define CIMAG_RESULT10 { +0.38964297915808854f,+0.03225815718776807f,-0.11005045339360417f,+0.07000358882571070f,\
+-0.03882538926347270f,+0.01466467357240619f,+0.09131179012889759f,-0.02808828423670948f,\
+-0.11655017979588442f,-0.07314316252300754f}
+
+
+
+
+
+#define CREAL_RESULT11 { 0.40752098586579621f, 0.01832270994676578f, 0.00727102452352803f,-0.13808643998727593f,\
+ 0.03761367031409660f, 0.01913753006534984f, 0.14829738766302858f,-0.03282455871021355f,\
+ 0.08531354288243319f,-0.01850240581569137f,-0.03471406311050802f}
+
+#define CIMAG_RESULT11 { +0.54521434381604206f,+0.04263232089408980f,+0.01080182331995891f,-0.16507135273435664f,\
++0.08926061372379648f,+0.01327764965004020f,-0.10524284127370778f,-0.02743692407216465f,\
++0.01530157234736101f,-0.10904555975048559f,+0.08146574602618931f}
+
+
+
+#define CREAL_RESULT12 { 0.56766566393586493f,-0.02954179400241778f, 0.03231997586448970f,-0.08061527988562983f,\
+ 0.12393588887272257f,-0.00005011576253769f,-0.04579487590429687f, 0.18096695473171109f,\
+-0.02460040668391173f, 0.04301438496137660f, 0.06736119091227670f,-0.07861773287010031f}
+
+#define CIMAG_RESULT12 { +0.42399044404737651f,-0.08988211863004507f,-0.06417895954194777f,-0.05903535817439356f,\
+-0.03585983457125090f,-0.08163805724791348f,+0.00020448095165193f,-0.00326952155569338f,\
+-0.06391751330264545f,+0.08415352273732421f,+0.16527532188314309f,-0.07732802237804590f}
+
+#define CREAL_RESULT13 { 0.45819311546018493f, 0.04715640399909302f,-0.02841189190012001f, 0.01471405402274759f,\
+-0.06955117696838889f, 0.08520673650173283f,-0.08379007722081511f,-0.06164570839841994f,\
+-0.07511713555210725f, 0.07790018146444697f, 0.05666948441941852f,-0.04832646187709128f,\
+-0.08077086016003779f}
+
+#define CIMAG_RESULT13 { +0.41406970618006128f,-0.00941536236456233f,-0.04150925434362464f,+0.07093289809698045f,\
++0.05642954059283156f,-0.13856574403878158f,-0.06657177623345527f,+0.08978984633083976f,\
+-0.03246486275259956f,+0.03475196544714984f,-0.02951956674329188f,-0.08259093889333179f,\
+-0.00138085118416531f}
+
+
+
+
+#define CREAL_RESULT14 { 0.55365722569903086f,-0.03431117289603670f,-0.07434176530056802f, 0.09479458498406634f,\
+ 0.04225809799112697f, 0.10711066217766220f, 0.09039926979534348f, 0.04258158766398475f,\
+-0.06766097168605688f, 0.02983162597647674f, 0.16148055537460848f, 0.00306446154680962f,\
+-0.01447548152915653f,-0.05597609967970790f}
+
+#define CIMAG_RESULT14 { +0.41925417428969269f,-0.02346521727072965f,-0.07537174377902310f,+0.12152793513158673f,\
+-0.05435563225189670f,+0.05588517124820697f,+0.03948028804374615f,-0.02547196042723954f,\
++0.04750412291672844f,+0.09081187301248270f,+0.02410149252380316f,-0.00728204510680848f,\
++0.07924950091433607f,+0.04222609705593354f}
+
+
+
+
+#define CREAL_RESULT15 { 0.60260595980410780f,-0.09025313009309296f, 0.07296362400098141f,-0.01312199542974801f,\
+ 0.05196795946996628f, 0.00939805486763355f, 0.07359039581140392f, 0.07244754050834930f,\
+-0.13409874398389474f,-0.06419327756841406f,-0.04062806443214259f, 0.19283708306652805f,\
+ 0.04903632944886174f,-0.00831723960417976f, 0.05579715986245712f}
+
+#define CIMAG_RESULT15 { +0.52861572646846366f,-0.09479760020968324f,+0.06725385149296267f,+0.01462043430946725f,\
+-0.00503137552191604f,-0.05388544405841567f,-0.05301311586381348f,-0.11414862867731596f,\
++0.0617906214666224f ,+0.14723827146724461f,-0.10948893804382542f,+0.00343655851962967f,\
+-0.00538333435303664f,-0.03924473093854008f,+0.06244360380584638f}
+
+
+
+
+#define CREAL_RESULT16 { 0.45740074128843844f,-0.00119937109332679f,-0.09568979823192530f,-0.01738371075123765f,\
+-0.03869746159762144f,-0.05391866381953740f, 0.12416191581397301f,-0.03041585422893309f,\
+-0.03257706691510975f, 0.07000836728092155f,-0.00597921899357861f,-0.03766276570110767f,\
+-0.07796601625159383f,-0.03039291932884991f,-0.03422318488120085f, 0.03575872707088203f}
+
+#define CIMAG_RESULT16 { +0.40480042458511889f,+0.06953094033520663f,+0.02374777548578576f,-0.03393710545080092f,\
+-0.04651592345908284f,+0.02783744013794178f,-0.03035825342604098f,-0.06447129475682091f,\
+-0.11649833549745381f,-0.11413977271896644f,+0.11722373704793855f,+0.08102030470498481f,\
+-0.06532836984843016f,+0.00779635766618338f,-0.01208991333178105f,+0.02069446945645629f}
+
+
+
+
+
+#define CREAL_RESULT32 { 0.47864284948445857f, 0.05482834035731039f,-0.01530773095660632f,-0.01750083123738436f,\
+ -0.05071297103611097f, 0.08766815171372286f, 0.02106608347521239f,-0.05109320958418949f,\
+ -0.01096817385405302f, 0.02416709596518544f,-0.05098444057349576f,-0.01448958336761648f,\
+ 0.02532074256370129f,-0.09984237842467819f,-0.06358972398280244f,-0.04611519259707146f,\
+ 0.01104057650081813f,-0.03475148917606731f, 0.00813855773340646f,-0.00568704237169753f,\
+ 0.01830285230723486f, 0.02749700538425181f,-0.04780122330152622f, 0.06632936566012661f,\
+ -0.01447601290419698f, 0.03116875276343186f, 0.00123360692547217f, 0.01833898177168673f,\
+ -0.03654957125464739f, 0.00547684889715929f,-0.05208112856470785f,-0.05594424285220599f}
+
+
+
+#define CIMAG_RESULT32 {+0.48466352955438197f,+0.04862008402656083f,+0.04890918577469192f,-0.07661834259188156f,\
+ +0.01684868035424048f,-0.06277273594077343f,-0.03536555772325747f,-0.04086803002308132f,\
+ -0.04373891325667500f,+0.03378928555068783f,+0.09272389885362962f,-0.01252633931303314f,\
+ +0.04715379187194862f,+0.04212975779784539f,+0.00924226411866865f,-0.06146319342441199f,\
+ -0.06222798605449498f,+0.03846733709242996f,-0.06362612522976926f,+0.02110331414670667f,\
+ +0.06568727290671772f,-0.09854847704278780f,+0.04828755172931871f,-0.06711471562709365f,\
+ -0.03694727551192045f,-0.04323841461679329f,-0.07059643871085296f,-0.01972938456264230f,\
+ +0.04778892314703904f,+0.02763841783182228f,+0.00662935995827029f,-0.01498824415525237f}
+static void cifftmaTest2 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN2;
+ float tImagIn [] = CIMAG_IN2 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT2 ;
+ float tImagResult [] = CIMAG_RESULT2 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS2));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS2 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS2) ;
+
+
+
+ cifftma ( in , ROW , COLS2 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS2 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+static void cifftmaTest3 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN3;
+ float tImagIn [] = CIMAG_IN3 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT3;
+ float tImagResult [] = CIMAG_RESULT3 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS3));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS3 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS3) ;
+
+
+
+ cifftma ( in , ROW , COLS3 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS3 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i]))
+ );
+/*
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+*/
+ }
+
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cifftmaTest4 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN4;
+ float tImagIn [] = CIMAG_IN4 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT4 ;
+ float tImagResult [] = CIMAG_RESULT4 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS4));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS4 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS4) ;
+
+
+ cifftma ( in , ROW , COLS4 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS4 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,creals(out[i]) , cimags(out[i]), creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+ }
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cifftmaTest5 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN5;
+ float tImagIn [] = CIMAG_IN5 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT5;
+ float tImagResult [] = CIMAG_RESULT5 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS5));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS5 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS5) ;
+
+
+
+ cifftma ( in , ROW , COLS5 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS5 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+/*
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+*/
+ }
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cifftmaTest6 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN6;
+ float tImagIn [] = CIMAG_IN6 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT6;
+ float tImagResult [] = CIMAG_RESULT6;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS6));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS6 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS6) ;
+
+
+
+ cifftma ( in , ROW , COLS6 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS6 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+/*
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+*/
+ }
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cifftmaTest7 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN7;
+ float tImagIn [] = CIMAG_IN7 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT7;
+ float tImagResult [] = CIMAG_RESULT7;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS7));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS7 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS7) ;
+
+
+
+ cifftma ( in , ROW , COLS7 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+
+ for ( i = 0 ; i < (ROW*COLS7 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ creals (Result[i]) ,
+ cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+/*
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+*/
+ }
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+static void cifftmaTest8 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN8;
+ float tImagIn [] = CIMAG_IN8 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT8 ;
+ float tImagResult [] = CIMAG_RESULT8 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS8));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS8 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS8) ;
+
+
+ cifftma ( in , ROW , COLS8 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS8 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,creals(out[i]) , cimags(out[i]), creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+
+static void cifftmaTest9 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN9;
+ float tImagIn [] = CIMAG_IN9 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT9 ;
+ float tImagResult [] = CIMAG_RESULT9 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS9));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS9 );
+ floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS9) ;
+
+
+ cifftma ( in , ROW , COLS9 , out ) ;
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS9 ) ; i++ )
+ {
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,creals(out[i]) , cimags(out[i]), creals (Result[i]) , cimags (Result[i]),
+ fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
+/*
+ if ( creals(out[i]) < 1e-14 && creals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && cimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-6 ) ;
+*/
+ }
+ free(out);
+ free(in);
+ free(Result);
+
+}
+
+static void cifftmaTest10 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN10;
+ float tImagIn [] = CIMAG_IN10 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT10 ;
+ float tImagResult [] = CIMAG_RESULT10 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS10));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS10 );
+
+
+
+ cifftma ( in , ROW , COLS10 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS10 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+/*
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+*/
+ }
+ free(out);
+ free(in);
+}
+
+static void cifftmaTest11 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN11;
+ float tImagIn [] = CIMAG_IN11 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT11 ;
+ float tImagResult [] = CIMAG_RESULT11 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS11));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS11 );
+
+
+
+ cifftma ( in , ROW , COLS11 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS11 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+
+static void cifftmaTest12 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN12;
+ float tImagIn [] = CIMAG_IN12 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT12 ;
+ float tImagResult [] = CIMAG_RESULT12 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS12));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS12 );
+
+
+
+ cifftma ( in , ROW , COLS12 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS12 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-5 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+
+static void cifftmaTest13 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN13;
+ float tImagIn [] = CIMAG_IN13 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT13 ;
+ float tImagResult [] = CIMAG_RESULT13 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS13));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS13 );
+
+
+
+ cifftma ( in , ROW , COLS13 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS13 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+
+static void cifftmaTest14 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN14;
+ float tImagIn [] = CIMAG_IN14 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT14 ;
+ float tImagResult [] = CIMAG_RESULT14 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS14));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS14 );
+
+
+
+ cifftma ( in , ROW , COLS14 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS14 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+
+
+static void cifftmaTest15 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN15;
+ float tImagIn [] = CIMAG_IN15 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT15 ;
+ float tImagResult [] = CIMAG_RESULT15 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS15));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS15 );
+
+
+
+ cifftma ( in , ROW , COLS15 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS15 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+
+
+static void cifftmaTest16 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN16;
+ float tImagIn [] = CIMAG_IN16 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT16 ;
+ float tImagResult [] = CIMAG_RESULT16 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS16));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS16 );
+
+
+
+ cifftma ( in , ROW , COLS16 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS16 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-6 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+
+
+static void cifftmaTest32 (void )
+{
+ int i = 0 ;
+
+ float tRealIn [] = CREAL_IN32;
+ float tImagIn [] = CIMAG_IN32 ;
+
+
+
+ float tRealResult [] = CREAL_RESULT32 ;
+ float tImagResult [] = CIMAG_RESULT32 ;
+
+
+
+ floatComplex* out = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS32));
+ floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS32 );
+
+
+
+ cifftma ( in , ROW , COLS32 , out );
+
+
+
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+ for ( i = 0 ; i < (ROW*COLS32 ) ; i++ )
+ {
+
+
+ printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i \n" ,
+ i ,
+ creals(out[i]) ,
+ cimags(out[i]),
+ tRealResult[i] ,
+ tImagResult[i],
+ fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) ,
+ fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+ if ( creals(out[i]) < 1e-14 && tRealResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - tRealResult[i] ) / fabs (creals (out[i])) < 3e-5 );
+
+
+ if ( cimags(out[i]) < 1e-14 && tImagResult[i] < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - tImagResult[i] ) / fabs (cimags (out[i])) < 3e-6 ) ;
+
+ }
+ free(out);
+ free(in);
+
+}
+
+static int testFft(void) {
+
+ printf("\n>>>> FFT Tests\n");
+ printf("\t>>>> Matrix Float Realt Tests\n");
+ /*dfftmaTest();*/
+
+ printf("\n\n\n");
+
+ printf("\n\t>>>> Vector 2 Float Complex Tests\n");
+ cifftmaTest2();
+ printf("\n\t>>>> Vector 3 Float Complex Tests\n");
+ cifftmaTest3();
+ printf("\n\t>>>> Vector 4 Float Complex Tests\n");
+ cifftmaTest4();
+ printf("\n\t>>>> Vector 5 Float Complex Tests\n");
+ cifftmaTest5();
+ printf("\n\t>>>> Vector 6 Float Complex Tests\n");
+ cifftmaTest6();
+ printf("\n\t>>>> Vector 7 Float Complex Tests\n");
+ cifftmaTest7();
+ printf("\n\t>>>> Vector 8 Float Complex Tests\n");
+ cifftmaTest8();
+ printf("\n\t>>>> Vector 9 Float Complex Tests\n");
+ cifftmaTest9();
+ printf("\n\t>>>> Vector 10 Float Complex Tests\n");
+ cifftmaTest10();
+ printf("\n\t>>>> Vector 11 Float Complex Tests\n");
+ cifftmaTest11();
+ printf("\n\t>>>> Vector 12 Float Complex Tests\n");
+ cifftmaTest12();
+ printf("\n\t>>>> Vector 13 Float Complex Tests\n");
+ cifftmaTest13();
+ printf("\n\t>>>> Vector 14 Float Complex Tests\n");
+ cifftmaTest14();
+ printf("\n\t>>>> Vector 14 Float Complex Tests\n");
+ cifftmaTest15();
+ printf("\n\t>>>> Vector 16 Float Complex Tests\n");
+ cifftmaTest16();
+ printf("\n\t>>>> Vector 32 Float Complex Tests\n");
+ cifftmaTest32();
+ return 0;
+}
+
+
+
+int main(void) {
+ assert(testFft() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/ifft/testMatIfft.c b/2.3-1/src/c/signalProcessing/ifft/testMatIfft.c
new file mode 100644
index 00000000..6acb749f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/testMatIfft.c
@@ -0,0 +1,289 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "ifft.h"
+
+#define test1 {0.2113249000000000099586,0.3303270999999999846253,0.8497451999999999783242,0.0683740000000000042180,\
+ 0.7560438999999999909463,0.6653810999999999475918,0.6857309999999999794440,0.5608486000000000304411,\
+ 0.0002211000000000000075,0.6283917999999999448590,0.8782164999999999555058,0.6623569000000000261963}
+
+#define test2 {0.2113249000000000099586,0.6857309999999999794440,\
+ 0.3303270999999999846253,0.5608486000000000304411,\
+ 0.8497451999999999783242,0.0002211000000000000075,\
+ 0.0683740000000000042180,0.6283917999999999448590,\
+ 0.7560438999999999909463,0.8782164999999999555058,\
+ 0.6653810999999999475918,0.6623569000000000261963}
+
+#define test3 {0.2113249000000000099586,0.7560438999999999909463,0.0002211000000000000075,\
+ 0.3303270999999999846253,0.6653810999999999475918,0.6283917999999999448590,\
+ 0.8497451999999999783242,0.6857309999999999794440,0.8782164999999999555058,\
+ 0.0683740000000000042180,0.5608486000000000304411,0.6623569000000000261963}
+
+#define test4 {0.2113249000000000099586,0.0683740000000000042180,0.6857309999999999794440,0.6283917999999999448590,\
+ 0.3303270999999999846253,0.7560438999999999909463,0.5608486000000000304411,0.8782164999999999555058,\
+ 0.8497451999999999783242,0.6653810999999999475918,0.0002211000000000000075,0.6623569000000000261963}
+
+#define test6 {0.2113249000000000099586,0.8497451999999999783242,0.7560438999999999909463,0.6857309999999999794440,0.0002211000000000000075,0.8782164999999999555058,\
+ 0.3303270999999999846253,0.0683740000000000042180,0.6653810999999999475918,0.5608486000000000304411,0.6283917999999999448590,0.6623569000000000261963}
+
+#define test9 {1,2,3,4,5,6,7,8,9}
+
+#define RRESULT1 {0.5247468416666665191883,-0.0159011882620516131759,0.0056361333333333485385,\
+-0.1205085666666666222024,-0.0631457083333333279995,0.0178082299287182777014,\
+0.0388002583333332817794,0.0178082299287182777014,-0.0631457083333333279995,\
+-0.1205085666666666222024,0.0056361333333333485385,-0.0159011882620516131759}
+
+#define IRESULT1 {0,0.0036551311266069114181,0.0881077213977346646034,-0.0277100416666666432564,\
+-0.0250953810419741324411,0.1086392772067264061997,0,-0.1086392772067264061997,\
+0.0250953810419741324411,0.0277100416666666432564,-0.0881077213977346646034,\
+-0.0036551311266069114181}
+
+#define RRESULT2 {0.5247468416666666302106,-0.0445474749999999961037,\
+0.0056361333333333554774,-0.0326510583333333367917,\
+-0.0631457083333333279995,-0.1070292499999999646931,\
+0.0388002583333333234128,0.0867050416666666767807,\
+-0.0631457083333333279995,-0.1070292499999999646931,\
+0.0056361333333333554774,-0.0326510583333333367917}
+
+#define IRESULT2 {0,0,\
+0.0881077213977346646034,-0.0532714598190739199723,\
+-0.0250953810419741081550,0.0869808780098438039108,\
+0,0,\
+0.0250953810419741081550,-0.0869808780098438039108,\
+-0.0881077213977346646034,0.0532714598190739199723}
+
+#define RRESULT3 {0.5247468416666665191883,-0.0799020208333333092909,-0.0799020208333333092909,\
+-0.1205085666666666222024,-0.0295434574969313107351,-0.0095530508364020244594,\
+0.0388002583333332817794,0.0633959958333333295499,0.0633959958333333295499,\
+-0.1205085666666666222024,-0.0095530508364020244594,-0.0295434574969313107351}
+
+#define IRESULT3 {0,-0.0359991099727139385323,0.0359991099727139385323,\
+-0.0277100416666666432564,-0.0873273732016361936559,0.0495491398683028591576,\
+0,-0.0453116254771752935415,0.0453116254771752935415,\
+0.0277100416666666432564,-0.0495491398683028591576,0.0873273732016361936559}
+
+#define RRESULT4 {0.5247468416666666302106,0.0120497083333333254718,-0.0850471916666666466478,\
+ 0.0120497083333333254718,\
+-0.0631457083333333279995,-0.0562903158939566938823,0.0675598583333333335688,\
+ -0.0743609174393766170219,\
+-0.0631457083333333279995,-0.0743609174393766170219,0.0675598583333333335688,\
+ -0.0562903158939566938823}
+
+#define IRESULT4 {0,0.0565971833333333285143,0,-0.0565971833333333285143,\
+-0.0250953810419741081550,0.1196492105704671793376,0.0191473164961883796087,\
+ 0.0362419439038005331000,\
+0.0250953810419741081550,-0.0362419439038005331000,-0.0191473164961883796087,\
+ -0.1196492105704671793376}
+
+#define RRESULT6 {0.5247468416666666302106,-0.0417166874999999950924,-0.0388444708333333249550,\
+ -0.0927985249999999928239,-0.0388444708333333249550,-0.0417166874999999950924,\
+0.0388002583333333372906,0.0436237291666666596179,-0.0186651041666666545060,\
+ -0.1482186083333333070922,-0.0186651041666666545060,0.0436237291666666596179}
+
+#define IRESULT6 {0,-0.0122945224279474088491,0.1021380474100006957583,0,-0.1021380474100006957583,\
+ 0.0122945224279474088491,\
+0,-0.0926896236521720928714,0.0110650550297080874085,0,-0.0110650550297080874085,\
+ 0.0926896236521720928714}
+
+#define RRESULT9 {5,-0.5000000000000002220446,-0.5000000000000002220446,\
+ -1.4999999999999997779554,- 0.0000000000000000286185, 0.0000000000000001396408,\
+ -1.4999999999999997779554,0.0000000000000001396408,- 0.0000000000000000286185}
+
+#define IRESULT9 {0,- 0.2886751345948128100183,0.2886751345948128100183,\
+ - 0.8660254037844383745437,- 0.0000000000000000138778,0.0000000000000000138778,\
+ + 0.8660254037844383745437,- 0.0000000000000000138778,+ 0.0000000000000000138778}
+
+
+static void difftmaTest(void){
+ int i;
+
+ double in1[]=test1;
+ double in2[]=test2;
+ double in3[]=test3;
+ double in4[]=test4;
+ double in6[]=test6;
+ double in9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resR2[]=RRESULT2;
+ double resR3[]=RRESULT3;
+ double resR4[]=RRESULT4;
+ double resR6[]=RRESULT6;
+ double resR9[]=RRESULT9;
+
+ double out1[12], out2[12], out3[12], out4[12], out6[12], out9[9];
+
+
+ printf(" >>> Matrice 1*12 <<< \n");
+ difftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ if (out1[i]>1e-16) assert( (fabs(out1[i]-resR1[i]) / fabs(out1[i])) < 3e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ difftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ if (out2[i]>1e-16) assert( (fabs(out2[i]-resR2[i]) / fabs(out2[i])) < 3e-15 );
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ difftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (out3[i]>1e-16) assert( (fabs(out3[i]-resR3[i]) / fabs(out3[i])) < 3e-15 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ difftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (out4[i]>1e-16) assert( (fabs(out4[i]-resR4[i]) / fabs(out4[i])) < 3e-15 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ difftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (out6[i]>1e-16) assert( (fabs(out6[i]-resR6[i]) / fabs(out6[i])) < 3e-15 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ difftma(in9, 3, 3, out9);
+ for (i=0;i<9;i++){
+ if (out9[i]>1e-16) assert( (fabs(out9[i]-resR9[i]) / fabs(out9[i])) < 3e-15 );
+ else assert(1);
+ }
+
+
+}
+
+static void zifftmaTest(void){
+ int i;
+
+ double inR1[]=test1;
+ double inR2[]=test2;
+ double inR3[]=test3;
+ double inR4[]=test4;
+ double inR6[]=test6;
+ double inR9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resI1[]=IRESULT1;
+ double resR2[]=RRESULT2;
+ double resI2[]=IRESULT2;
+ double resR3[]=RRESULT3;
+ double resI3[]=IRESULT3;
+ double resR4[]=RRESULT4;
+ double resI4[]=IRESULT4;
+ double resR6[]=RRESULT6;
+ double resI6[]=IRESULT6;
+
+
+ doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, out1[12], out2[12], out3[12], out4[12], out6[12];
+
+ in1=(doubleComplex *)malloc((unsigned int)12*sizeof(doubleComplex));
+ in2=(doubleComplex *)malloc((unsigned int)12*sizeof(doubleComplex));
+ in3=(doubleComplex *)malloc((unsigned int)12*sizeof(doubleComplex));
+ in4=(doubleComplex *)malloc((unsigned int)12*sizeof(doubleComplex));
+ in6=(doubleComplex *)malloc((unsigned int)12*sizeof(doubleComplex));
+ in9=(doubleComplex *)malloc((unsigned int)9*sizeof(doubleComplex));
+
+
+
+ for (i=0;i<12;i++){
+ in1[i]=DoubleComplex(inR1[i],0);
+ in2[i]=DoubleComplex(inR2[i],0);
+ in3[i]=DoubleComplex(inR3[i],0);
+ in4[i]=DoubleComplex(inR4[i],0);
+ in6[i]=DoubleComplex(inR6[i],0);
+ }
+ for (i=0;i<9;i++){
+ in9[i]=DoubleComplex(inR9[i],0);
+
+ }
+
+ /* !!!!!!!!!!!!!!!!!!!!!!!
+ for the imaginary part, the assert is out + res instead of out - res
+ cause I export the transposate of the result matrix and the transposate change the sign
+ of the imaginary part.
+ And instead of change all the define, I only change the sign of the assert.*/
+ printf(" >>> Matrice 1*12 <<< \n");
+ zifftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ if (zreals(out1[i])>1e-16) assert( (fabs(zreals(out1[i])-resR1[i]) / fabs(zreals(out1[i]))) < 3e-14 );
+ else assert(1);
+ if (zimags(out1[i])>1e-16) assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 3e-15 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ zifftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ if (zreals(out2[i])>1e-16) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 3e-15 );
+ else assert(1);
+ if (zimags(out2[i])>1e-16) assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 3e-13 );
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ zifftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (zreals(out3[i])>1e-16) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i]))) < 3e-15 );
+ else assert(1);
+ if (zimags(out3[i])>1e-16) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 3e-15 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ zifftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (zreals(out4[i])>1e-16) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i]))) < 3e-15 );
+ else assert(1);
+ if (zimags(out4[i])>1e-16) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 3e-15 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ zifftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (zreals(out6[i])>1e-16) assert( (fabs(zreals(out6[i])-resR6[i]) / fabs(zreals(out6[i]))) < 3e-15 );
+ else assert(1);
+ if (zimags(out6[i])>1e-16) assert( (fabs(zimags(out6[i])+resI6[i]) / fabs(zimags(out6[i]))) < 3e-15 );
+ else assert(1);
+ }
+
+
+}
+
+
+
+static int testiFft(void){
+ difftmaTest();
+ zifftmaTest();
+ return 0;
+}
+
+
+int main(void) {
+ printf(">>> Fft Matrices Double Tests <<<\n");
+ assert(testiFft() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj b/2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj
new file mode 100644
index 00000000..29ba3894
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{633B36B2-AF28-4EF8-A236-021AA1ECF18A}</ProjectGuid>
+ <RootNamespace>testDoubleIfft</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleIfft.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj.filters b/2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj.filters
new file mode 100644
index 00000000..44b31416
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/test_DoubleIfft/testDoubleIfft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleIfft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj b/2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj
new file mode 100644
index 00000000..26fee50c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{3545DD4A-7DE1-4DB8-A28F-BBCA0278BA57}</ProjectGuid>
+ <RootNamespace>testFloatIfft</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatIfft.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj.filters b/2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj.filters
new file mode 100644
index 00000000..c2fa6b73
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/test_FloatIfft/testFloatIfft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatIfft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj b/2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj
new file mode 100644
index 00000000..2cf61855
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{2F903F45-A053-47F8-BEA7-2490DEA6C9C5}</ProjectGuid>
+ <RootNamespace>testMatIfft</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatIfft.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj.filters b/2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj.filters
new file mode 100644
index 00000000..8ea762e9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/test_MatIfft/testMatIfft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testMatIfft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/ifft/zifftma.c b/2.3-1/src/c/signalProcessing/ifft/zifftma.c
new file mode 100644
index 00000000..b5a00dd1
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ifft/zifftma.c
@@ -0,0 +1,160 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#define IFFT842 1
+#define DFFT2 0
+
+#include <stdlib.h>
+#include <math.h>
+#include "ifft.h"
+#include "lapack.h"
+#include "ifft_internal.h"
+
+void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
+{
+
+ int choosenAlgo = DFFT2 ;
+
+ int size = rows*cols ;
+ int sizeTemp = 0;
+
+ int rowsTemp = 0 ;
+ int colsTemp = 0 ;
+
+ int ierr = 0 ;
+ int isn = 1;
+ int i = 0;
+
+ int increment=1;
+
+ double* realIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
+ double* imagIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
+ doubleComplex* inCopy = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size*2 );
+
+ doubleComplex* inTemp = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size*2 );
+
+
+
+ zimaga ( in , size , imagIn) ;
+ zreala ( in , size , realIn) ;
+ for (i=0;i<size;i++) inCopy[i]=in[i];
+
+ if ( rows == 1 || cols == 1 )
+ {
+ /*test if size is a power of 2*/
+ sizeTemp = (int) pow(2.0, (int) (log(size + 0.5) / log(2.0)));
+
+
+ if ( size == sizeTemp )
+ {
+ if ( size <= pow(2.0, 15.0))
+ {
+ ifft842 ( inCopy , size , 1 );
+ choosenAlgo = IFFT842 ;
+ }
+ else
+ {
+ difft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr);
+ }
+
+
+ }
+ else
+ {
+ difft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr);
+ }
+
+ }
+
+ else
+ {
+ /*test if rows and/or cols is a power of 2*/
+ rowsTemp = (int) pow(2.0, (int)(log(rows + 0.5) / log(2.0))) ;
+ colsTemp = (int) pow(2.0 ,(int)(log(cols + 0.5) / log(2.0))) ;
+
+
+ if (rows == rowsTemp)
+ {
+ if (rows <= pow(2.0, 15.0))
+ {
+ for ( i = 0 ; i < cols ; i++ )
+ {
+ ifft842 ( &inCopy[ rows*i] , rows , 1);
+ zimaga ( inCopy , size , imagIn) ;
+ zreala ( inCopy , size , realIn) ;
+ }
+ }
+ else
+ {
+ difft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+ inCopy=DoubleComplexMatrix(realIn,imagIn,size);
+ }
+ }
+ else
+ {
+ difft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+ inCopy=DoubleComplexMatrix(realIn,imagIn,size);
+ }
+
+ /*second call*/
+ if ( colsTemp == cols )
+ {
+ if ( cols <= pow(2.0, 15.0) )
+ {
+ /*compute the fft on each line of the matrix */
+ for (i = 0 ; i < rows ; i++ )
+ {
+ C2F(zcopy) ( &cols, inCopy + i, &rows, inTemp , &increment );
+
+ ifft842( inTemp , cols , 1);
+ choosenAlgo = IFFT842 ;
+ C2F(zcopy) ( &cols, inTemp , &increment, inCopy + i, &rows);
+
+ }
+ }
+ else
+ {
+ difft2 ( realIn, imagIn, 1, cols, rows, isn, ierr);
+ }
+ }
+ else
+ {
+ difft2 ( realIn, imagIn, 1, cols, rows, isn, ierr);
+ }
+
+ }
+
+
+
+ if ( choosenAlgo == IFFT842 )
+ {
+ for ( i = 0 ; i < size ; i++)
+ {
+ out[i] = DoubleComplex ( zreals(inCopy[i]) , zimags(inCopy[i]) );
+ }
+ }
+ else
+ {
+ for ( i = 0 ; i < size ; i++)
+ {
+ out[i] = DoubleComplex ( realIn[i] , imagIn[i] );
+ }
+
+ }
+
+ free(realIn);
+ free(imagIn);
+ free(inCopy);
+ free(inTemp);
+
+
+}
diff --git a/2.3-1/src/c/signalProcessing/includes/conv.h b/2.3-1/src/c/signalProcessing/includes/conv.h
new file mode 100644
index 00000000..9dd43a50
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/conv.h
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __CONV_H__
+#define __CONV_H__
+
+#include <math.h>
+#include <stdlib.h>
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "multiplication.h"
+#include "ifft.h"
+#include "fft.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* Computes the convolution between VECTORS */
+
+EXTERN_SIGPROC void sconva(float *in1, int size1, float *in2,int size2, float *out);
+
+EXTERN_SIGPROC void dconva(double *in1, int size1, double *in2,int size2, double *out);
+
+EXTERN_SIGPROC void cconva(floatComplex *in1, int size1, floatComplex *in2,int size2, floatComplex *out);
+
+EXTERN_SIGPROC void zconva(doubleComplex *in1, int size1, doubleComplex *in2,int size2, doubleComplex *out);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__CONV_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/conv2d.h b/2.3-1/src/c/signalProcessing/includes/conv2d.h
new file mode 100644
index 00000000..ed71d924
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/conv2d.h
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __CONV2D_H__
+#define __CONV2D_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Computes the convolution between MATRICES */
+
+EXTERN_SIGPROC void sconv2da(float *in1, int lines1, int columns1, float *in2, int lines2, int columns2, float *out);
+
+EXTERN_SIGPROC void dconv2da(double *in1, int lines1, int columns1, double *in2, int lines2, int columns2, double *out);
+
+EXTERN_SIGPROC void cconv2da(floatComplex *in1, int lines1, int columns1, floatComplex *in2, int lines2, int columns2, floatComplex *out);
+
+EXTERN_SIGPROC void zconv2da(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2, int lines2, int columns2, doubleComplex *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__CONV2D_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/crossCorr.h b/2.3-1/src/c/signalProcessing/includes/crossCorr.h
new file mode 100644
index 00000000..c44d6666
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/crossCorr.h
@@ -0,0 +1,37 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __CROSSCORR_H__
+#define __CROSSCORR_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_SIGPROC void scrossCorra(float* in1, int rows1, int cols1, float* in2, int rows2, int cols2, float* out);
+
+EXTERN_SIGPROC void dcrossCorra(double* in1, int rows1, int cols1, double* in2, int rows2, int cols2, double* out);
+
+EXTERN_SIGPROC void ccrossCorra(floatComplex* in1, int rows1, int cols1, floatComplex* in2, int rows2, int cols2, floatComplex* out);
+
+EXTERN_SIGPROC void zcrossCorra(doubleComplex* in1, int rows1, int cols1, doubleComplex* in2, int rows2, int cols2, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CROSSCORR_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/dynlib_signalprocessing.h b/2.3-1/src/c/signalProcessing/includes/dynlib_signalprocessing.h
new file mode 100644
index 00000000..fcbe5800
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/dynlib_signalprocessing.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_SIGNALPROCESSING_H__
+#define __DYNLIB_SIGNALPROCESSING_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if SIGNALPROCESSING_EXPORTS
+ #define EXTERN_SIGPROC __declspec (dllexport)
+ #else
+ #define EXTERN_SIGPROC __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_SIGPROC
+#endif
+
+#endif /* __DYNLIB_SIGNALPROCESSING_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/fft.h b/2.3-1/src/c/signalProcessing/includes/fft.h
new file mode 100644
index 00000000..efc85c09
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/fft.h
@@ -0,0 +1,57 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __FFT_H__
+#define __FFT_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#define sffts(in) in
+#define dffts(in) in
+#define cffts(in) in
+#define zffts(in) in
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_SIGPROC void sfftma(float* in,int rows,int columns,float* out);
+
+EXTERN_SIGPROC void dfftma(double* in,int rows,int columns,double* out);
+
+/*
+** compute the fast fourier transform of a vector
+** param in : the input matrix in complex float precision
+** param rows: number of rows of the input matrix
+** param cols: number of cols of the input matrix
+** param out : the transformed matrix in complex float precision
+*/
+
+EXTERN_SIGPROC void cfftma ( floatComplex* in , int rows, int cols, floatComplex* out);
+/*
+** compute the fast fourier transform of a vector
+** param in : the input matrix in complex double precision
+** param rows: number of rows of the input matrix
+** param cols: number of cols of the input matrix
+** param out : the transformed matrix in complex double precision
+*/
+EXTERN_SIGPROC void zfftma ( doubleComplex* in , int rows, int cols, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__FFT_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/fftshift.h b/2.3-1/src/c/signalProcessing/includes/fftshift.h
new file mode 100644
index 00000000..242e7ff7
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/fftshift.h
@@ -0,0 +1,76 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __FFTSHIFT_H__
+#define __FFTSHIFT_H__
+
+
+#include "dynlib_signalprocessing.h"
+
+/*
+ fftshift rearrange the result of fft(x)
+ it's call like that : fftshift(y), y=ff(x)
+*/
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+
+#define sfftshifts(in) in
+#define dfftshifts(in) in
+#define cfftshifts(in) in
+#define zfftshifts(in) in
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_SIGPROC void sfftshifta(float* in,int rows,int columns,float* out);
+
+EXTERN_SIGPROC void dfftshifta(double* in,int rows,int columns,double* out);
+
+EXTERN_SIGPROC void cfftshifta ( floatComplex* in , int rows, int cols, floatComplex* out);
+
+EXTERN_SIGPROC void zfftshifta ( doubleComplex* in , int rows, int cols, doubleComplex* out);
+
+
+#define srowfftshifts(in) in
+#define drowfftshifts(in) in
+#define crowfftshifts(in) in
+#define zrowfftshifts(in) in
+
+EXTERN_SIGPROC void srowfftshifta(float* in,int rows,int columns,float* out);
+
+EXTERN_SIGPROC void drowfftshifta(double* in,int rows,int columns,double* out);
+
+EXTERN_SIGPROC void crowfftshifta ( floatComplex* in , int rows, int cols, floatComplex* out);
+
+EXTERN_SIGPROC void zrowfftshifta ( doubleComplex* in , int rows, int cols, doubleComplex* out);
+
+#define scolumnfftshifts(in) in
+#define dcolumnfftshifts(in) in
+#define ccolumnfftshifts(in) in
+#define zcolumnfftshifts(in) in
+
+EXTERN_SIGPROC void scolumnfftshifta(float* in,int rows,int columns,float* out);
+
+EXTERN_SIGPROC void dcolumnfftshifta(double* in,int rows,int columns,double* out);
+
+EXTERN_SIGPROC void ccolumnfftshifta ( floatComplex* in , int rows, int cols, floatComplex* out);
+
+EXTERN_SIGPROC void zcolumnfftshifta ( doubleComplex* in , int rows, int cols, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__FFTSHIFT_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/hilbert.h b/2.3-1/src/c/signalProcessing/includes/hilbert.h
new file mode 100644
index 00000000..38264e3b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/hilbert.h
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+#ifndef __HILBERT_H__
+#define __HILBERT_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FIXME : input : real
+ output : complex
+ Is this true all time?
+ Or must we do input : real, output :real?
+*/
+
+EXTERN_SIGPROC float shilberts(float in);
+
+EXTERN_SIGPROC void shilberta (float* in, int rows, int cols, floatComplex *out);
+
+EXTERN_SIGPROC double dhilberts(double in);
+
+EXTERN_SIGPROC void dhilberta (double* in, int rows, int cols, doubleComplex *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __HILBERT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/ifft.h b/2.3-1/src/c/signalProcessing/includes/ifft.h
new file mode 100644
index 00000000..6954c7f9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/ifft.h
@@ -0,0 +1,59 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __IFFT_H__
+#define __IFFT_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#define siffts(in) in
+#define diffts(in) in
+#define ciffts(in) in
+#define ziffts(in) in
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_SIGPROC void sifftma ( float* in , int rows, int cols, float* out);
+
+EXTERN_SIGPROC void difftma ( double* in , int rows, int cols, double* out);
+
+/*
+** compute the inverse fast fourier transform of a vector
+** param in : the input matrix in complex double precision
+** param rows: number of rows of the input matrix
+** param cols: number of cols of the input matrix
+** param out : the transformed matrix in complex double precision
+*/
+
+
+EXTERN_SIGPROC void zifftma ( doubleComplex* in , int rows, int cols, doubleComplex* out);
+/*
+** compute the inverse fast fourier transform of a vector
+** param in : the input matrix in complex float precision
+** param rows: number of rows of the input matrix
+** param cols: number of cols of the input matrix
+** param out : the transformed matrix in complex float precision
+*/
+
+EXTERN_SIGPROC void cifftma ( floatComplex* in , int rows, int cols, floatComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__IFFT_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/lev.h b/2.3-1/src/c/signalProcessing/includes/lev.h
new file mode 100644
index 00000000..32a81782
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/lev.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LEV_H__
+#define __LEV_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ function Scilab :
+ [out1,y,out3]=lev(in)
+ y : result of the function
+*/
+EXTERN_SIGPROC float sleva (float* in,int size, float* out1, float* out3);
+EXTERN_SIGPROC double dleva (double* in, int size, double* out1, double* out3);
+EXTERN_SIGPROC floatComplex cleva (floatComplex* in,int size, floatComplex* out1, floatComplex* out3);
+EXTERN_SIGPROC doubleComplex zleva (doubleComplex* in,int size, doubleComplex* out1, doubleComplex* out3);
+
+
+/*
+ function Scilab :
+ [out1,y]=lev(in)
+ y : result of the function
+*/
+EXTERN_SIGPROC float sleva2 (float* in,int size, float* out1);
+EXTERN_SIGPROC double dleva2 (double* in, int size, double* out1);
+EXTERN_SIGPROC floatComplex cleva2 (floatComplex* in,int size, floatComplex* out1);
+EXTERN_SIGPROC doubleComplex zleva2 (doubleComplex* in,int size, doubleComplex* out1);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__LEV_H__*/
+
diff --git a/2.3-1/src/c/signalProcessing/includes/levin.h b/2.3-1/src/c/signalProcessing/includes/levin.h
new file mode 100644
index 00000000..864fb076
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/levin.h
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LEVIN_H__
+#define __LEVIN_H__
+
+#include "dynlib_signalprocessing.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_SIGPROC void dlevina (int n, double* cov, int lCov, int cCov, double* la, double* sig, double* lb);
+
+EXTERN_SIGPROC void slevina (int n, float* cov, int lCov, int cCov, float* la, float* sig, float* lb);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__LEVIN_H__*/
+
diff --git a/2.3-1/src/c/signalProcessing/includes/lpc2cep.h b/2.3-1/src/c/signalProcessing/includes/lpc2cep.h
new file mode 100644
index 00000000..bfb3a357
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/lpc2cep.h
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+#ifndef __LPC2CEP_H__
+#define __LPC2CEP_H__
+
+#include "dynlib_signalprocessing.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+/* Matrices on input are squared because matricial logarithm
+ works only with squared matrices (and logm is used in lcp2cep)
+ So we just have to pass one parametre on input for the size of
+ the input matrix, this parametre is size and it's the numbers of
+ rows(or columns)
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_SIGPROC void slpc2cepa(float* in, int size, float* out);
+
+EXTERN_SIGPROC void dlpc2cepa(double* in, int size, double* out);
+
+EXTERN_SIGPROC void clpc2cepa(floatComplex* in, int size, floatComplex* out);
+
+EXTERN_SIGPROC void zlpc2cepa(doubleComplex* in, int size, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__LPC2CEP_H__*/
+
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_cepstrum.h b/2.3-1/src/c/signalProcessing/interfaces/int_cepstrum.h
new file mode 100644
index 00000000..af1991ba
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_cepstrum.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_CEPSTRUM_H__
+#define __INT_CEPSTRUM_H__
+
+#define s0cepstrums0(in) scepstrums(in)
+
+#define d0cepstrumd0(in) dcepstrums(in)
+
+#define c0cepstrumc0(in) ccepstrums(in)
+
+#define z0cepstrumz0(in) zcepstrums(in)
+
+#define s2cepstrums2(in,size,out) scepstruma(in, size[0]*size[1], out)
+
+#define d2cepstrumd2(in,size,out) dcepstruma(in, size[0]*size[1], out)
+
+#define c2cepstrumc2(in,size,out) ccepstruma(in, size[0]*size[1], out)
+
+#define z2cepstrumz2(in,size,out) zcepstruma(in, size[0]*size[1], out)
+
+#endif /* !__INT_CEPSTRUM_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_convol.h b/2.3-1/src/c/signalProcessing/interfaces/int_convol.h
new file mode 100644
index 00000000..80ec65b1
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_convol.h
@@ -0,0 +1,153 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_CONVOL_H__
+#define __INT_CONVOL_H__
+
+
+/* Scalar - Scalar */
+
+#define s0s0convols0(in1,in2) in1*in2
+
+#define d0d0convold0(in1,in2) in1*in2
+
+#define c0c0convolc0(in1,in2) cmuls(in1,in2)
+
+#define z0z0convolz0(in1,in2) zmuls(in1,in2)
+
+#define s0c0convolc0(in1,in2) cmuls(FloatComplex(in1,0),in2)
+
+#define d0z0convolz0(in1,in2) zmuls(DoubleComplex(in1,0),in2)
+
+#define c0s0convolc0(in1,in2) cmuls(in1,FloatComplex(in2,0))
+
+#define z0d0convolz0(in1,in2) zmuls(in1,DoubleComplex(in2,0))
+
+/* Scalar - Matrix */
+
+#define s0s2convols2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];\
+ }
+
+#define d0d2convold2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1*in2[i];\
+ }
+
+#define c0c2convolc2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,in2[i]);\
+ }
+
+#define z0z2convolz2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,in2[i]);\
+ }
+
+#define s0c2convolc2(in1,in2,size,out) c0c2convolc2(FloatComplex(in1,0),in2,size,out)
+
+#define d0z2convolz2(in1,in2,size,out) z0z2convolz2(DoubleComplex(in1,0),in2,size,out)
+
+#define c0s2convolc2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1,FloatComplex(in2[i],0));\
+ }
+
+#define z0d2convolz2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1,DoubleComplex(in2[i],0));\
+ }
+
+/* Matrix - Scalar */
+
+#define s2s0convols2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define d2d0convold2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define c2c0convolc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1[i],in2);\
+ }
+
+#define z2z0convolz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1[i],in2);\
+ }
+
+#define s2c0convolc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(FloatComplex(in1[i],0),in2);\
+ }
+
+#define d2z0convolz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(DoubleComplex(in1[i],0),in2);\
+ }
+
+#define c2s0convolc2(in1,size,in2,out) c2c0convolc2(in1,size,FloatComplex(in2,0),out)
+
+#define z2d0convolz2(in1,size,in2,out) z2z0convolz2(in1,size,DoubleComplex(in2,0),out)
+
+
+/* Matrix - Matrix */
+
+#define s2s2convols2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ sconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ sconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define d2d2convold2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ dconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ dconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define c2c2convolc2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ cconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ cconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define z2z2convolz2(in1,size1,in2,size2,out) if(((size1[0]==1)||(size1[1]==1))&&((size2[0]==1)||(size2[1]==1))){\
+ zconva(in1,size1[0]*size1[1],in2,size2[0]*size2[1],out);\
+ }else{\
+ zconv2da(in1,size1[0],size1[1],in2,size2[0],size2[1],out);\
+ }
+
+#define s2c2convolc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ c2c2convolc2(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1,in2,size2,out);\
+ free(temp);\
+ }
+
+#define d2z2convolz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ z2z2convolz2(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1,in2,size2,out);\
+ free(temp);\
+ }
+
+#define c2s2convolc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(float));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2convolc2(in1,size1,FloatComplexMatrix(in2,temp,size2[0]*size2[1]),size2,out);\
+ free(temp);\
+ }
+
+
+#define z2d2convolz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ dfilla(temp,size2[0],size2[1],0);\
+ z2z2convolz2(in1,size1,DoubleComplexMatrix(in2,temp,size2[0]*size2[1]),size2,out);\
+ free(temp);\
+ }
+
+#endif /* !__INT_CONVOL_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_fft.h b/2.3-1/src/c/signalProcessing/interfaces/int_fft.h
new file mode 100644
index 00000000..ea2c69b9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_fft.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FFT_H__
+#define __INT_FFT_H__
+
+#define s0ffts0(in) sffts(in)
+
+#define d0fftd0(in) dffts(in)
+
+#define c0fftc0(in) cffts(in)
+
+#define z0fftz0(in) zffts(in)
+
+
+#define s2ffts2(in,size,out) sfftma(in, size[0], size[1], out)
+
+#define d2fftd2(in,size,out) dfftma(in, size[0], size[1], out)
+
+#define c2fftc2(in,size,out) cfftma(in, size[0], size[1], out)
+
+#define z2fftz2(in,size,out) zfftma(in, size[0], size[1], out)
+
+/* FIXME : malloc here */
+#define s2fftc2(in,size,out) {float* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[1]*sizeof(float));\
+ szerosa(ZEROS,size[0],size[1]);\
+ cfftma(FloatComplexMatrix(in,ZEROS,size[0]*size[1]), size[0], size[1], out);\
+ }
+/* FIXME : malloc here */
+#define d2fftz2(in,size,out) {double* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[1]*sizeof(double));\
+ dzerosa(ZEROS,size[0],size[1]);\
+ zfftma(DoubleComplexMatrix(in,ZEROS,size[0]*size[1]), size[0], size[1], out);\
+ }
+
+
+
+#define s0s0ffts0(in1,in2) (in2==-1.0f) ? s0ffts0(in1) : s0iffts0(in1)
+
+#define d0d0fftd0(in1,in2) (in2==-1.0) ? d0fftd0(in1) : d0ifftd0(in1)
+
+#define c0s0fftc0(in1,in2) (in2==-1.0f) ? c0fftc0(in1) : c0ifftc0(in1)
+
+#define z0d0fftz0(in1,in2) (in2==-1.0) ? z0fftz0(in1) : z0ifftz0(in1)
+
+#define s2s0ffts2(in1,size,in2,out) (in2==-1.0f) ? s2ffts2(in1,size,out) : s2iffts2(in1,size,out)
+
+#define d2d0fftd2(in1,size,in2,out) (in2==-1.0) ? d2fftd2(in1,size,out) : d2ifftd2(in1,size,out)
+
+#define c2s0fftc2(in1,size,in2,out) (in2==-1.0f) ? c2fftc2(in1,size,out) : c2ifftc2(in1,size,out)
+
+#define z2d0fftz2(in1,size,in2,out) (in2==-1.0) ? z2fftz2(in1,size,out) : z2ifftz2(in1,size,out)
+
+#define s2s0fftc2(in1,size,in2,out) (in2==-1.0f) ? s2fftc2(in1,size,out) : s2ifftc2(in1,size,out)
+
+#define d2d0fftz2(in1,size,in2,out) (in2==-1.0) ? d2fftz2(in1,size,out) : d2ifftz2(in1,size,out)
+
+
+#endif /* !__INT_FFT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_fftshift.h b/2.3-1/src/c/signalProcessing/interfaces/int_fftshift.h
new file mode 100644
index 00000000..d490657e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_fftshift.h
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_FFTSHIFT_H__
+#define __INT_FFTSHIFT_H__
+
+#define s0fftshifts0(in) sfftshifts(in)
+
+#define d0fftshiftd0(in) dfftshifts(in)
+
+#define c0fftshiftc0(in) cfftshifts(in)
+
+#define z0fftshiftz0(in) zfftshifts(in)
+
+#define s2fftshifts2(in,size,out) sfftshifta(in, size[0], size[1], out)
+
+#define d2fftshiftd2(in,size,out) dfftshifta(in, size[0], size[1], out)
+
+#define c2fftshiftc2(in,size,out) cfftshifta(in, size[0], size[1], out)
+
+#define z2fftshiftz2(in,size,out) zfftshifta(in, size[0], size[1], out)
+
+
+#define s0s0fftshifts0(in1,in2) sfftshifts(in1)
+
+#define d0d0fftshiftd0(in1,in2) dfftshifts(in1)
+
+#define c0s0fftshiftc0(in1,in2) cfftshifts(in1)
+
+#define z0d0fftshiftz0(in1,in2) zfftshifts(in1)
+
+#define s2s0fftshifts2(in,size,in2,out) (in2==1) ? srowfftshifta(in, size[0], size[1], out) : scolumnfftshifta(in, size[0], size[1], out)
+
+#define d2d0fftshiftd2(in,size,in2,out) (in2==1) ? drowfftshifta(in, size[0], size[1], out) : dcolumnfftshifta(in, size[0], size[1], out)
+
+#define c2s0fftshiftc2(in,size,in2,out) (in2==1) ? crowfftshifta(in, size[0], size[1], out) : ccolumnfftshifta(in, size[0], size[1], out)
+
+#define z2d0fftshiftz2(in,size,in2,out) (in2==1) ? zrowfftshifta(in, size[0], size[1], out) : zcolumnfftshifta(in, size[0], size[1], out)
+
+#endif /* !__INT_FFTSHIFT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_hilbert.h b/2.3-1/src/c/signalProcessing/interfaces/int_hilbert.h
new file mode 100644
index 00000000..c4c9c7e9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_hilbert.h
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_HILBERT_H__
+#define __INT_HILBERT_H__
+
+#define s0hilberts0(in) shilberts(in)
+
+#define d0hilbertd0(in) dhilberts(in)
+
+#define s2hilbertc2(in,size,out) shilberta(in, size[0], size[1], out)
+
+#define d2hilbertz2(in,size,out) dhilberta(in, size[0], size[1], out)
+
+#endif /* !__INT_HILBERT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_ifft.h b/2.3-1/src/c/signalProcessing/interfaces/int_ifft.h
new file mode 100644
index 00000000..78e63753
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_ifft.h
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_IFFT_H__
+#define __INT_IFFT_H__
+
+
+#define s0iffts0(in) siffts(in)
+
+#define d0ifftd0(in) diffts(in)
+
+#define s0ifftc0(in) FloatComplex(siffts(in),0)
+
+#define d0ifftz0(in) DoubleComplex(diffts(in),0)
+
+#define c0ifftc0(in) ciffts(in)
+
+#define z0ifftz0(in) ziffts(in)
+
+#define s2iffts2(in,size,out) sifftma(in, size[0], size[1], out)
+
+#define d2ifftd2(in,size,out) difftma(in, size[0], size[1], out)
+
+#define c2ifftc2(in,size,out) cifftma(in, size[0], size[1], out)
+
+#define z2ifftz2(in,size,out) zifftma(in, size[0], size[1], out)
+
+/* FIXME : malloc here */
+#define s2ifftc2(in,size,out) {float* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[1]*sizeof(float)));\
+ szerosa(ZEROS,size[0],size[1]);\
+ cifftma(FloatComplexMatrix(in,ZEROS,size[0]*size[1]), size[0], size[1], out);\
+ }
+/* FIXME : malloc here */
+#define d2ifftz2(in,size,out) {double* ZEROS;\
+ ZEROS=malloc((uint)(size[0]*size[1]*sizeof(double)));\
+ dzerosa(ZEROS,size[0],size[1]);\
+ zifftma(DoubleComplexMatrix(in,ZEROS,size[0]*size[1]), size[0], size[1], out);\
+ }
+
+#endif /* !__INT_IFFT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_lev.h b/2.3-1/src/c/signalProcessing/interfaces/int_lev.h
new file mode 100644
index 00000000..f15f9ea0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_lev.h
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LEV_H__
+#define __INT_LEV_H__
+
+#define s2levs2(in,size,out) {float sigma2;\
+ sigma2=sleva2(in,size[0]*size[1],out);\
+ }
+
+#define s2levs2s0(in,size,out) sleva2(in,size[0]*size[1],out);
+
+#define s2levs2s0s2(in,size,out1,out2) sleva(in,size[0]*size[1],out1,out2);
+
+
+#define d2levd2(in,size,out) {double sigma2;\
+ sigma2=dleva2(in,size[0]*size[1],out);\
+ }
+
+#define d2levd2d0(in,size,out) dleva2(in,size[0]*size[1],out);
+
+#define d2levd2d0d2(in,size,out1,out2) dleva(in,size[0]*size[1],out1,out2);
+
+
+#define c2levc2(in,size,out) {floatComplex sigma2;\
+ sigma2=cleva2(in,size[0]*size[1],out);\
+ }
+
+#define c2levc2c0(in,size,out) cleva2(in,size[0]*size[1],out);
+
+#define c2levc2c0c2(in,size,out1,out2) cleva(in,size[0]*size[1],out1,out2);
+
+
+#define z2levz2(in,size,out) {doubleComplex sigma2;\
+ sigma2=zleva2(in,size[0]*size[1],out);\
+ }
+
+#define z2levz2z0(in,size,out) zleva2(in,size[0]*size[1],out);
+
+#define z2levz2z0z2(in,size,out1,out2) zleva(in,size[0]*size[1],out1,out2);
+
+#endif /* !__INT_LEV_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_levin.h b/2.3-1/src/c/signalProcessing/interfaces/int_levin.h
new file mode 100644
index 00000000..b48b5785
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_levin.h
@@ -0,0 +1,60 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LEVIN_H__
+#define __INT_LEVIN_H__
+
+/* FIXME : many malloc here */
+
+#define s0s2levins2(in1,in2,size,out1,out2) {float* out2;\
+ float* out3;\
+ out2 = malloc((uint)*(size[1]*size[1]*in1)*sizeof(float));\
+ out3 = malloc((uint)*(size[1]*size[1]*in1*(in1+1))*sizeof(float));\
+ slevina (in1, in2, size[0], size[1], out1, out2, out3);\
+ free(out3);\
+ free(out2);\
+ }
+
+
+#define s0s2levins2(in1,in2,size,out1,out2) {double* out2;\
+ double* out3;\
+ out2 = malloc((uint)*(size[1]*size[1]*in1)*sizeof(double));\
+ out3 = malloc((uint)*(size[1]*size[1]*in1*(in1+1))*sizeof(double));\
+ slevina (in1, in2, size[0], size[1], out1, out2, out3);\
+ free(out3);\
+ free(out2);\
+ }
+
+
+
+#define s0s2levins2s2(in1,in2,size,out1,out2) {float* out3;\
+ out3 = malloc((uint)*(size[1]*size[1]*in1*(in1+1))*sizeof(float));\
+ slevina (in1, in2, size[0], size[1], out1, out2, out3);\
+ free(out3);\
+ }
+
+#define d0d2levind2d2(in1,in2,size,out1,out2) {double* out3;\
+ out3 = malloc((uint)*(size[1]*size[1]*in1*(in1+1))*sizeof(double));\
+ dlevina (in1, in2, size[0], size[1], out1, out2, out3);\
+ free(out3);\
+ }
+
+
+
+#define s0s2levins2s2s2(in1,in2,size,out1,out2,out3) slevina (in1, in2, size[0], size[1], out1, out2, out3);
+
+#define d0d2levind2d2d2(in1,in2,size,out1,out2,out3) dlevina (in1, in2, size[0], size[1], out1, out2, out3);
+
+
+#endif /* !__INT_LEVIN_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_lpc2cep.h b/2.3-1/src/c/signalProcessing/interfaces/int_lpc2cep.h
new file mode 100644
index 00000000..6e6e719f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_lpc2cep.h
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_LPC2CEP_H__
+#define __INT_LPC2CEP_H__
+
+
+#define s2lpc2ceps2(in,size,out) slpc2cepa(in, size[0]*size[1], out)
+
+#define d2lpc2cepd2(in,size,out) dlpc2cepa(in, size[0]*size[1], out)
+
+#define c2lpc2cepc2(in,size,out) clpc2cepa(in, size[0]*size[1], out)
+
+#define z2lpc2cepz2(in,size,out) zlpc2cepa(in, size[0]*size[1], out)
+
+#endif /* !__INT_LPC2CEP_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_xcorr.h b/2.3-1/src/c/signalProcessing/interfaces/int_xcorr.h
new file mode 100644
index 00000000..50a99d74
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_xcorr.h
@@ -0,0 +1,176 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_XCORR_H__
+#define __INT_XCORR_H__
+
+#define s0xcorrs0(in) in*in
+
+#define d0xcorrd0(in) in*in
+
+#define c0xcorrc0(in) cmuls(in,cconjs(in))
+
+#define z0xcorrz0(in) zmuls(in,zconjs(in))
+
+#define s2xcorrs2(in,size) s2s2xcorrs2(in,size,in,size,out)
+
+#define d2xcorrd2(in,size) d2d2xcorrd2(in,size,in,size,out)
+
+#define c2xcorrc2(in,size) c2c2xcorrc2(in,size,in,size,out)
+
+#define z2xcorrz2(in,size) z2z2xcorrz2(in,size,in,size,out)
+
+
+/* Scalar - Scalar */
+
+#define s0s0xcorrs0(in1,in2) in1*in2
+
+#define d0d0xcorrd0(in1,in2) in1*in2
+
+#define c0c0xcorrc0(in1,in2) cmuls(in1,cconjs(in2))
+
+#define z0z0xcorrz0(in1,in2) zmuls(in1,zconjs(in2))
+
+#define s0c0xcorrs0(in1,in2) cmuls(FloatComplex(in1,0),cconjs(in2))
+
+#define d0z0xcorrd0(in1,in2) zmuls(DoubleComplex(in1,0),zconjs(in2))
+
+#define c0s0xcorrc0(in1,in2) cmuls(in1,FloatComplex(in2,0))
+
+#define z0d0xcorrz0(in1,in2) zmuls(in1,DoubleComplex(in2,0))
+
+/* Scalar - Scalar*/
+
+#define s0s2xcorrs2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=in1*in2[mn-i];\
+ }
+
+#define d0d2xcorrd2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=in1*in2[mn-i];\
+ }
+
+#define c0c2xcorrc2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=cmuls(in1,cconjs(in2[mn-i]));\
+ }
+
+#define z0z2xcorrz2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=zmuls(in1,zconjs(in2[mn-i]));\
+ }
+
+#define s0c2xcorrs2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=cmuls(FloatComplex(in1,0),cconjs(in2[mn-i]));\
+ }
+
+#define d0z2xcorrd2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=zmuls(DoubleComplex(in1,0),zconjs(in2[mn-i]));\
+ }
+
+#define c0s2xcorrc2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=cmuls(in1,FloatComplex(in2[mn-i],0));\
+ }
+
+#define z0d2xcorrz2(in1,in2,size,out) {int i;\
+ int mn=size[0]*size[1];\
+ for (i=1;i<=mn;i++) out[i]=zmuls(in1,DoubleComplex(in2[mn-i],0)));\
+ }
+
+
+
+
+
+/* Matrix - Scalar*/
+
+#define s2s0xcorrs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define d2d0xcorrd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define c2c0xcorrc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1[i],cconjs(in2));\
+ }
+
+#define z2z0xcorrz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1[i],zconjs(in2));\
+ }
+
+#define s2c0xcorrc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define d2z0xcorrz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in1[i]*in2;\
+ }
+
+#define c2s0xcorrc2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=cmuls(in1[i],FloatComplex(in2,0));\
+ }
+
+#define z2d0xcorrz2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=zmuls(in1[i],DoubleComplex(in2,0));\
+ }
+
+
+
+/* Matrix - Matrix */
+
+#define s2s2xcorrs2(in1,size1,in2,size2,out) scrossCorra(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define d2d2xcorrd2(in1,size1,in2,size2,out) dcrossCorra(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define c2c2xcorrc2(in1,size1,in2,size2,out) ccrossCorra(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+#define z2z2xcorrz2(in1,size1,in2,size2,out) zcrossCorra(in1, size1[0], size1[1], in2, size2[0], size2[1], out)
+
+
+/*FIXME : malloc here*/
+#define s2c2xcorrc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ c2c2xcorrc2(FloatComplex(in1,0,size1[0]*size1[1]),size1,in2,size2,out);\
+ free(temp);\
+ }
+
+#define d2z2xcorrz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size[0],size[1],0);\
+ z2z2xcorrz2(DoubleComplex(in1,0,size1[0]*size1[1]),size1,in2,size2,out);\
+ free(temp);\
+ }
+
+
+#define c2s2xcorrc2(in1,size1,in2,size2,out) {float* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(float));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2xcorrc2(in1,size1,FloatComplex(in2,0,size2[0]*size2[1]),size2,out);\
+ free(temp);\
+ }
+
+#define z2d2xcorrz2(in1,size1,in2,size2,out) {double* temp;\
+ temp=malloc((uint)(size2[0]*size2[1])*sizeof(double));\
+ sfilla(temp,size2[0],size2[1],0);\
+ c2c2xcorrc2(in1,size1,DoubleComplex(in2,0,size2[0]*size2[1]),size2,out);\
+ free(temp);\
+ }
+
+#endif /* !__INT_XCORR_H__ */
diff --git a/2.3-1/src/c/signalProcessing/lev/Makefile.am b/2.3-1/src/c/signalProcessing/lev/Makefile.am
new file mode 100644
index 00000000..69157125
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/Makefile.am
@@ -0,0 +1,76 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libLev_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libLev.la
+
+HEAD = ../includes/lev.h
+
+
+libLev_la_SOURCES = $(HEAD) \
+ dleva.c\
+ sleva.c\
+ zleva.c\
+ cleva.c\
+ dleva2.c
+
+
+###############
+#### Check ####
+###############
+check_PROGRAMS = testDoubleLev testFloatLev
+
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/signalProcessing/lev/libLev.la \
+ @LIBMATH@
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+
+testDoubleLev_SOURCES = testDoubleLev.c
+testDoubleLev_LDADD = $(check_LDADD)
+testDoubleLev_CFLAGS = $(check_INCLUDES)
+
+testFloatLev_SOURCES = testFloatLev.c
+testFloatLev_LDADD = $(check_LDADD)
+testFloatLev_CFLAGS = $(check_INCLUDES)
+
+
+TESTS = testDoubleLev testFloatLev
diff --git a/2.3-1/src/c/signalProcessing/lev/Makefile.in b/2.3-1/src/c/signalProcessing/lev/Makefile.in
new file mode 100644
index 00000000..38280030
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/Makefile.in
@@ -0,0 +1,773 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleLev$(EXEEXT) testFloatLev$(EXEEXT)
+TESTS = testDoubleLev$(EXEEXT) testFloatLev$(EXEEXT)
+subdir = src/c/signalProcessing/lev
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLev_la_LIBADD =
+am__objects_1 =
+am_libLev_la_OBJECTS = $(am__objects_1) libLev_la-dleva.lo \
+ libLev_la-sleva.lo libLev_la-zleva.lo libLev_la-cleva.lo \
+ libLev_la-dleva2.lo
+libLev_la_OBJECTS = $(am_libLev_la_OBJECTS)
+libLev_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLev_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLev_OBJECTS = testDoubleLev-testDoubleLev.$(OBJEXT)
+testDoubleLev_OBJECTS = $(am_testDoubleLev_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/signalProcessing/lev/libLev.la
+testDoubleLev_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLev_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLev_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLev_OBJECTS = testFloatLev-testFloatLev.$(OBJEXT)
+testFloatLev_OBJECTS = $(am_testFloatLev_OBJECTS)
+testFloatLev_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLev_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLev_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLev_la_SOURCES) $(testDoubleLev_SOURCES) \
+ $(testFloatLev_SOURCES)
+DIST_SOURCES = $(libLev_la_SOURCES) $(testDoubleLev_SOURCES) \
+ $(testFloatLev_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLev_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLev.la
+HEAD = ../includes/lev.h
+libLev_la_SOURCES = $(HEAD) \
+ dleva.c\
+ sleva.c\
+ zleva.c\
+ cleva.c\
+ dleva2.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/signalProcessing/lev/libLev.la \
+ @LIBMATH@
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+testDoubleLev_SOURCES = testDoubleLev.c
+testDoubleLev_LDADD = $(check_LDADD)
+testDoubleLev_CFLAGS = $(check_INCLUDES)
+testFloatLev_SOURCES = testFloatLev.c
+testFloatLev_LDADD = $(check_LDADD)
+testFloatLev_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/lev/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/lev/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLev.la: $(libLev_la_OBJECTS) $(libLev_la_DEPENDENCIES)
+ $(libLev_la_LINK) -rpath $(pkglibdir) $(libLev_la_OBJECTS) $(libLev_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLev$(EXEEXT): $(testDoubleLev_OBJECTS) $(testDoubleLev_DEPENDENCIES)
+ @rm -f testDoubleLev$(EXEEXT)
+ $(testDoubleLev_LINK) $(testDoubleLev_OBJECTS) $(testDoubleLev_LDADD) $(LIBS)
+testFloatLev$(EXEEXT): $(testFloatLev_OBJECTS) $(testFloatLev_DEPENDENCIES)
+ @rm -f testFloatLev$(EXEEXT)
+ $(testFloatLev_LINK) $(testFloatLev_OBJECTS) $(testFloatLev_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLev_la-cleva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLev_la-dleva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLev_la-dleva2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLev_la-sleva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLev_la-zleva.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLev-testDoubleLev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLev-testFloatLev.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLev_la-dleva.lo: dleva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -MT libLev_la-dleva.lo -MD -MP -MF $(DEPDIR)/libLev_la-dleva.Tpo -c -o libLev_la-dleva.lo `test -f 'dleva.c' || echo '$(srcdir)/'`dleva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLev_la-dleva.Tpo $(DEPDIR)/libLev_la-dleva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dleva.c' object='libLev_la-dleva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -c -o libLev_la-dleva.lo `test -f 'dleva.c' || echo '$(srcdir)/'`dleva.c
+
+libLev_la-sleva.lo: sleva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -MT libLev_la-sleva.lo -MD -MP -MF $(DEPDIR)/libLev_la-sleva.Tpo -c -o libLev_la-sleva.lo `test -f 'sleva.c' || echo '$(srcdir)/'`sleva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLev_la-sleva.Tpo $(DEPDIR)/libLev_la-sleva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sleva.c' object='libLev_la-sleva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -c -o libLev_la-sleva.lo `test -f 'sleva.c' || echo '$(srcdir)/'`sleva.c
+
+libLev_la-zleva.lo: zleva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -MT libLev_la-zleva.lo -MD -MP -MF $(DEPDIR)/libLev_la-zleva.Tpo -c -o libLev_la-zleva.lo `test -f 'zleva.c' || echo '$(srcdir)/'`zleva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLev_la-zleva.Tpo $(DEPDIR)/libLev_la-zleva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zleva.c' object='libLev_la-zleva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -c -o libLev_la-zleva.lo `test -f 'zleva.c' || echo '$(srcdir)/'`zleva.c
+
+libLev_la-cleva.lo: cleva.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -MT libLev_la-cleva.lo -MD -MP -MF $(DEPDIR)/libLev_la-cleva.Tpo -c -o libLev_la-cleva.lo `test -f 'cleva.c' || echo '$(srcdir)/'`cleva.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLev_la-cleva.Tpo $(DEPDIR)/libLev_la-cleva.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cleva.c' object='libLev_la-cleva.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -c -o libLev_la-cleva.lo `test -f 'cleva.c' || echo '$(srcdir)/'`cleva.c
+
+libLev_la-dleva2.lo: dleva2.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -MT libLev_la-dleva2.lo -MD -MP -MF $(DEPDIR)/libLev_la-dleva2.Tpo -c -o libLev_la-dleva2.lo `test -f 'dleva2.c' || echo '$(srcdir)/'`dleva2.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLev_la-dleva2.Tpo $(DEPDIR)/libLev_la-dleva2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dleva2.c' object='libLev_la-dleva2.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLev_la_CFLAGS) $(CFLAGS) -c -o libLev_la-dleva2.lo `test -f 'dleva2.c' || echo '$(srcdir)/'`dleva2.c
+
+testDoubleLev-testDoubleLev.o: testDoubleLev.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLev_CFLAGS) $(CFLAGS) -MT testDoubleLev-testDoubleLev.o -MD -MP -MF $(DEPDIR)/testDoubleLev-testDoubleLev.Tpo -c -o testDoubleLev-testDoubleLev.o `test -f 'testDoubleLev.c' || echo '$(srcdir)/'`testDoubleLev.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLev-testDoubleLev.Tpo $(DEPDIR)/testDoubleLev-testDoubleLev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLev.c' object='testDoubleLev-testDoubleLev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLev_CFLAGS) $(CFLAGS) -c -o testDoubleLev-testDoubleLev.o `test -f 'testDoubleLev.c' || echo '$(srcdir)/'`testDoubleLev.c
+
+testDoubleLev-testDoubleLev.obj: testDoubleLev.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLev_CFLAGS) $(CFLAGS) -MT testDoubleLev-testDoubleLev.obj -MD -MP -MF $(DEPDIR)/testDoubleLev-testDoubleLev.Tpo -c -o testDoubleLev-testDoubleLev.obj `if test -f 'testDoubleLev.c'; then $(CYGPATH_W) 'testDoubleLev.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLev.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLev-testDoubleLev.Tpo $(DEPDIR)/testDoubleLev-testDoubleLev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLev.c' object='testDoubleLev-testDoubleLev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLev_CFLAGS) $(CFLAGS) -c -o testDoubleLev-testDoubleLev.obj `if test -f 'testDoubleLev.c'; then $(CYGPATH_W) 'testDoubleLev.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLev.c'; fi`
+
+testFloatLev-testFloatLev.o: testFloatLev.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLev_CFLAGS) $(CFLAGS) -MT testFloatLev-testFloatLev.o -MD -MP -MF $(DEPDIR)/testFloatLev-testFloatLev.Tpo -c -o testFloatLev-testFloatLev.o `test -f 'testFloatLev.c' || echo '$(srcdir)/'`testFloatLev.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLev-testFloatLev.Tpo $(DEPDIR)/testFloatLev-testFloatLev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLev.c' object='testFloatLev-testFloatLev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLev_CFLAGS) $(CFLAGS) -c -o testFloatLev-testFloatLev.o `test -f 'testFloatLev.c' || echo '$(srcdir)/'`testFloatLev.c
+
+testFloatLev-testFloatLev.obj: testFloatLev.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLev_CFLAGS) $(CFLAGS) -MT testFloatLev-testFloatLev.obj -MD -MP -MF $(DEPDIR)/testFloatLev-testFloatLev.Tpo -c -o testFloatLev-testFloatLev.obj `if test -f 'testFloatLev.c'; then $(CYGPATH_W) 'testFloatLev.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLev.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLev-testFloatLev.Tpo $(DEPDIR)/testFloatLev-testFloatLev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLev.c' object='testFloatLev-testFloatLev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLev_CFLAGS) $(CFLAGS) -c -o testFloatLev-testFloatLev.obj `if test -f 'testFloatLev.c'; then $(CYGPATH_W) 'testFloatLev.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLev.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/lev/cleva.c b/2.3-1/src/c/signalProcessing/lev/cleva.c
new file mode 100644
index 00000000..5d4b9642
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/cleva.c
@@ -0,0 +1,85 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+#include "conj.h"
+#include "multiplication.h"
+#include "addition.h"
+#include "division.h"
+#include "subtraction.h"
+
+
+floatComplex cleva(floatComplex* in,int size, floatComplex* ar, floatComplex* rc){
+ int i=0, j=0;
+ floatComplex accu=FloatComplex(0,0);
+ floatComplex* ak1;
+ floatComplex temp;
+ floatComplex sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(floatComplex*)malloc((unsigned int)size*sizeof(floatComplex));
+
+ /* initialize levinson's algorithm */
+ temp=crdivs(in[1],in[0]);
+ ar[0]=FloatComplex(-creals(temp),-cimags(temp));
+
+ rc[0]=ar[0];
+
+ temp = cmuls(ar[0],cconjs(ar[0]));
+ sigma2=cmuls(cdiffs(FloatComplex(1,0), temp), in[0]);
+
+ ak1[0]=FloatComplex(0,0);
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=FloatComplex(0,0);
+ for (j=0;j<i;j++){
+ temp = cmuls(cconjs(ar[j]),cconjs(in[i-j]));
+ accu=cadds(accu, temp);
+ }
+ temp = cadds(in[i+1],accu);
+ temp = crdivs(temp,sigma2);
+ ak1[i]=FloatComplex(-creals(temp),-cimags(temp));
+
+ rc[i]=FloatComplex(creals(ak1[i]),cimags(ak1[i]));
+ for (j=0;j<i;j++){
+ temp = cmuls(ak1[i], cconjs(ar[i-1-j]));
+ ak1[j] = cadds(ar[j],temp);
+ }
+
+ temp = cmuls(ak1[i], cconjs(ak1[i]));
+ temp = cdiffs(FloatComplex(1,0),temp);
+ sigma2 = cmuls(temp,sigma2);
+ for (j=0;j<=i;j++){
+ ar[j]=FloatComplex(creals(ak1[j]),cimags(ak1[j]));
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
diff --git a/2.3-1/src/c/signalProcessing/lev/cleva2.c b/2.3-1/src/c/signalProcessing/lev/cleva2.c
new file mode 100644
index 00000000..0c14def1
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/cleva2.c
@@ -0,0 +1,83 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+#include "conj.h"
+#include "multiplication.h"
+#include "addition.h"
+#include "division.h"
+#include "subtraction.h"
+
+
+floatComplex cleva2(floatComplex* in,int size, floatComplex* ar){
+ int i=0, j=0;
+ floatComplex accu=FloatComplex(0,0);
+ floatComplex* ak1;
+ floatComplex temp;
+ floatComplex sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(floatComplex*)malloc((unsigned int)size*sizeof(floatComplex));
+
+ /* initialize levinson's algorithm */
+ temp=crdivs(in[1],in[0]);
+ ar[0]=FloatComplex(-creals(temp),-cimags(temp));
+
+ temp = cmuls(ar[0],cconjs(ar[0]));
+ sigma2=cmuls(cdiffs(FloatComplex(1,0), temp), in[0]);
+
+ ak1[0]=FloatComplex(0,0);
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=FloatComplex(0,0);
+ for (j=0;j<i;j++){
+ temp = cmuls(cconjs(ar[j]),cconjs(in[i-j]));
+ accu=cadds(accu, temp);
+ }
+ temp = cadds(in[i+1],accu);
+ temp = crdivs(temp,sigma2);
+ ak1[i]=FloatComplex(-creals(temp),-cimags(temp));
+
+
+ for (j=0;j<i;j++){
+ temp = cmuls(ak1[i], cconjs(ar[i-1-j]));
+ ak1[j] = cadds(ar[j],temp);
+ }
+
+ temp = cmuls(ak1[i], cconjs(ak1[i]));
+ temp = cdiffs(FloatComplex(1,0),temp);
+ sigma2 = cmuls(temp,sigma2);
+ for (j=0;j<=i;j++){
+ ar[j]=FloatComplex(creals(ak1[j]),cimags(ak1[j]));
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
diff --git a/2.3-1/src/c/signalProcessing/lev/dleva.c b/2.3-1/src/c/signalProcessing/lev/dleva.c
new file mode 100644
index 00000000..2565f60f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/dleva.c
@@ -0,0 +1,67 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+
+double dleva(double* in,int size, double* ar, double* rc){
+ int i=0, j=0;
+ double accu=0;
+ double* ak1;
+ double sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(double*)malloc((unsigned int)size*sizeof(double));
+
+ /* initialize levinson's algorithm */
+ ar[0]=-in[1]/in[0];
+ rc[0]=ar[0];
+ sigma2=(1-ar[0]*ar[0])*in[0];
+ ak1[0]=0;
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=0;
+ for (j=0;j<i;j++){
+ accu+=ar[j]*in[i-j];
+ }
+ ak1[i]=-(in[i+1]+accu)/(sigma2);
+ rc[i]=ak1[i];
+ for (j=0;j<i;j++){
+ ak1[j] = ar[j]+ak1[i]*ar[i-1-j];
+ }
+ sigma2=(1-ak1[i]*ak1[i])*(sigma2);
+ for (j=0;j<=i;j++){
+ ar[j]=ak1[j];
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/lev/dleva2.c b/2.3-1/src/c/signalProcessing/lev/dleva2.c
new file mode 100644
index 00000000..c75f9d50
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/dleva2.c
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+
+double dleva2(double* in,int size, double* ar){
+ int i=0, j=0;
+ double accu=0;
+ double* ak1;
+ double sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(double*)malloc((unsigned int)size*sizeof(double));
+
+ /* initialize levinson's algorithm */
+ ar[0]=-in[1]/in[0];
+ sigma2=(1-ar[0]*ar[0])*in[0];
+ ak1[0]=0;
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=0;
+ for (j=0;j<i;j++){
+ accu+=ar[j]*in[i-j];
+ }
+ ak1[i]=-(in[i+1]+accu)/(sigma2);
+ for (j=0;j<i;j++){
+ ak1[j] = ar[j]+ak1[i]*ar[i-1-j];
+ }
+ sigma2=(1-ak1[i]*ak1[i])*(sigma2);
+ for (j=0;j<=i;j++){
+ ar[j]=ak1[j];
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/lev/sleva.c b/2.3-1/src/c/signalProcessing/lev/sleva.c
new file mode 100644
index 00000000..87c24660
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/sleva.c
@@ -0,0 +1,66 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+
+float sleva(float* in,int size, float* ar, float* rc){
+ int i=0, j=0;
+ float accu=0;
+ float* ak1;
+ float sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(float*)malloc((unsigned int)size*sizeof(float));
+
+ /* initialize levinson's algorithm */
+ ar[0]=-in[1]/in[0];
+ rc[0]=ar[0];
+ sigma2=(1-ar[0]*ar[0])*in[0];
+ ak1[0]=0;
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=0;
+ for (j=0;j<i;j++){
+ accu+=ar[j]*in[i-j];
+ }
+ ak1[i]=-(in[i+1]+accu)/sigma2;
+ rc[i]=ak1[i];
+ for (j=0;j<i;j++){
+ ak1[j] = ar[j]+ak1[i]*ar[i-1-j];
+ }
+ sigma2=(1-ak1[i]*ak1[i])*sigma2;
+ for (j=0;j<=i;j++){
+ ar[j]=ak1[j];
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/lev/sleva2.c b/2.3-1/src/c/signalProcessing/lev/sleva2.c
new file mode 100644
index 00000000..44d7974b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/sleva2.c
@@ -0,0 +1,64 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+
+float sleva2(float* in,int size, float* ar){
+ int i=0, j=0;
+ float accu=0;
+ float* ak1;
+ float sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(float*)malloc((unsigned int)size*sizeof(float));
+
+ /* initialize levinson's algorithm */
+ ar[0]=-in[1]/in[0];
+ sigma2=(1-ar[0]*ar[0])*in[0];
+ ak1[0]=0;
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=0;
+ for (j=0;j<i;j++){
+ accu+=ar[j]*in[i-j];
+ }
+ ak1[i]=-(in[i+1]+accu)/sigma2;
+ for (j=0;j<i;j++){
+ ak1[j] = ar[j]+ak1[i]*ar[i-1-j];
+ }
+ sigma2=(1-ak1[i]*ak1[i])*sigma2;
+ for (j=0;j<=i;j++){
+ ar[j]=ak1[j];
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
+
diff --git a/2.3-1/src/c/signalProcessing/lev/testDoubleLev.c b/2.3-1/src/c/signalProcessing/lev/testDoubleLev.c
new file mode 100644
index 00000000..e06f9ae0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/testDoubleLev.c
@@ -0,0 +1,199 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "lev.h"
+#include <math.h>
+
+
+static void dlevaTest(void) {
+
+ printf(" \n -------Double Test------- \n");
+ /* TEST 1 */
+ {
+ double in[4]={1,2,3,4};
+ double result1[3]={ - 1.25 , 0.0000000000000002220446 , - 0.2500000000000001110223 };
+ double result2 = -2.5;
+ double result3[3]={- 2.,- 0.3333333333333333148296, - 0.2500000000000001110223 };
+ double out1[3]={0}, out2=0, out3[3]={0};
+ int i;
+
+ out2 = dleva(in,4,out1,out3);
+
+ ;
+ for (i=0;i<3;i++) {
+ printf ("assert : %e \n" , (fabs(out1[i]-result1[i]) )/ fabs (out1[i])) ;
+ if (out1[i]>1e-15) assert((fabs(out1[i]-result1[i]) / fabs (out1[i]))<3e-15);
+ else assert(1);
+ }
+
+ if (out2>1e-16) assert((fabs(out2-result2) / fabs (out2))<1e-16);
+ else assert (1);
+
+ for (i=0;i<3;i++) {
+ if (out3[i]>1e-16) assert((fabs(out3[i]-result3[i]) / fabs (out3[i]))<1e-14);
+ else assert(1);
+ }
+
+ }
+
+ /* TEST 2 */
+ {
+ double in[8]= {0.9475104575976729393005,0.0563528141938149929047,0.8801407832652330398560,0.5110759926028549671173,0.8736385302618145942688, 0.9233113336376845836639,0.1977134644985198974609,0.0427226074971258640289};
+ double result1[7]= { - 1.4145989907356759651691 ,
+ - 0.1879185484276382211988 ,
+ 1.9546862646288580833698 ,
+ 0.0431855597974486471458 ,
+ - 0.6934494907248942574540 ,
+ 0.3355525090987989678126 ,
+ - 0.7681883584831936673254};
+ double result2 = 1.132375302303337161192;
+ double result3[7]= {- 0.0594746092161267045362 ,
+ - 0.9286458300417500533186 ,
+ - 3.5018950960448012033 ,
+ 1.0467634735526456513099 ,
+ 3.0600285663270052616269 ,
+ - 1.8325211983274933835730 ,
+ - 0.7681883584831936673254 };
+ double out1[7]={0}, out2=0, out3[7]={0};
+ int i;
+
+ out2 = dleva(in,8,out1,out3);
+ /*FIXME : Assert à 10^-13*/
+ for (i=0;i<7;i++) {
+ if (out1[i]>1e-16) assert((fabs(out1[i]-result1[i]) / fabs (out1[i]))<1e-13);
+ else assert(1);
+ }
+
+ if (out2>1e-16) assert((fabs(out2-result2) / fabs (out2))<3e-16);
+
+
+ for (i=0;i<7;i++) {
+ if (out3[i]>1e-15) assert((fabs(out3[i]-result3[i]) / fabs (out3[i]))<3e-14);
+ else assert(1);
+ }
+
+ }
+}
+
+
+static void zlevaTest(void) {
+
+ /* TEST 1 */
+ {
+ double inR[4]={1,2,3,4};
+ double inI[4]={1,1,1,1};
+ double result1R[3]={ 0.6666666666666662965923 ,- 4.6666666666666687390830 , 2.0000000000000004440892 };
+ double result1I[3]={ - 1.1666666666666669627261 , - 2.1666666666666665186369 , 2.5 };
+ double result2R = 6.1666666666666678509046;
+ double result2I = 6.1666666666666678509046;
+ double result3R[3]={- 1.5,0.3333333333333333148, 2.0000000000000004440 };
+ double result3I[3]={ + 0.5000000000000000000000 , + 0.6666666666666666296592 , 2.5 };
+ doubleComplex out1[3], out2=DoubleComplex(0,0), out3[3];
+ doubleComplex *in;
+ int i;
+
+ printf(" \n -------DoubleComplex Test------- \n");
+
+ in=DoubleComplexMatrix(inR,inI,4);
+
+ out2 = zleva(in,4,out1,out3);
+
+ for (i=0;i<3;i++){
+ if (zreals(out1[i])>1e-16) assert((fabs(zreals(out1[i])-result1R[i]) / fabs(zreals(out1[i]))) <3e-15);
+ else assert(1);
+ if (zimags(out1[i])>1e-16) assert((fabs(zimags(out1[i])-result1I[i]) / fabs(zimags(out1[i]))) <1e-16);
+ else assert(1);
+ }
+
+ if (zreals(out2)>1e-16) assert((fabs(zreals(out2)-result2R) / fabs(zreals(out2))) <3e-15);
+ else assert(1);
+ if (zimags(out2)>1e-16) assert((fabs(zimags(out2)-result2I) / fabs(zimags(out2))) <3e-15);
+ else assert(1);
+
+ for (i=0;i<3;i++){
+ if (zreals(out3[i])>1e-16) assert((fabs(zreals(out3[i])-result3R[i]) / fabs(zreals(out3[i]))) <3e-15);
+ else assert(1);
+ if (zimags(out3[i])>1e-16) assert((fabs(zimags(out3[i])-result3I[i]) / fabs(zimags(out3[i]))) <1e-16);
+ else assert(1);
+ }
+ }
+
+
+
+ /* TEST 2 */
+
+ {
+ double inR[6]={0.0143211213871836662292,0.7033217861317098140717,0.5212594550102949142456,0.0582674746401607990265,
+ 0.488313094712793827057,0.8035244266502559185028};
+ double inI[6]={0.3819901309907436370850,0.4311556280590593814850,0.7573182275518774986267,0.0120028085075318813324,
+ 0.9994637314230203628540,0.9508706149645149707794};
+ double result1R[5]={- 3.6095794839789050456602,- 22.476200430215509840082,- 8.9817944433992220609753,
+ 12.625498164379671095503, 3.5273512791323136106314};
+ double result1I[5]={9.8938676519388195629290,- 11.160861495580743252276,- 12.396447957003889683847,
+ - 20.810995133509468502098,3.8571422461904862899473};
+ double result2R = 1.2259658790319762911025;
+ double result2I = 32.700432742697543631039;
+ double result3R[5]={ - 1.1960559267342236733356,- 0.0224784059157190282963,- 2.232787465146694128038,
+ 0.4864901943454941202205,3.5273512791323136106314};
+ double result3I[5]={1.7963629642455771762144,0.7825308030566066053169,1.4948702216638325435127,
+ - 1.0642505925602050442791,3.8571422461904862899473};
+ doubleComplex out1[5], out2=DoubleComplex(0,0), out3[5];
+ doubleComplex *in;
+ int i;
+
+ printf(" \n -------DoubleComplex Test------- \n");
+
+ in=DoubleComplexMatrix(inR,inI,6);
+
+ out2 = zleva(in,6,out1,out3);
+
+ /*FIXME : Assert à 10^-14*/
+
+ for (i=0;i<5;i++) printf("out : %1.20f+%1.20f\n",zreals(out1[i]),zimags(out1[i]));
+ for (i=0;i<5;i++){
+ if (zreals(out1[i])>1e-16) assert((fabs(zreals(out1[i])-result1R[i]) / fabs(zreals(out1[i]))) <3e-14);
+ else assert(1);
+ if (zimags(out1[i])>1e-16) assert((fabs(zimags(out1[i])-result1I[i]) / fabs(zimags(out1[i]))) <3e-15);
+ else assert(1);
+ }
+
+ if (zreals(out2)>1e-16) assert((fabs(zreals(out2)-result2R) / fabs(zreals(out2))) <3e-15);
+ else assert(1);
+ if (zimags(out2)>1e-16) assert((fabs(zimags(out2)-result2I) / fabs(zimags(out2))) <3e-15);
+ else assert(1);
+
+ for (i=0;i<5;i++){
+ if (zreals(out3[i])>1e-16) assert((fabs(zreals(out3[i])-result3R[i]) / fabs(zreals(out3[i]))) <3e-15);
+ else assert(1);
+ if (zimags(out3[i])>1e-16) assert((fabs(zimags(out3[i])-result3I[i]) / fabs(zimags(out3[i]))) <3e-15);
+ else assert(1);
+ }
+ }
+}
+
+
+
+
+static int levTest(void) {
+ printf("\n>>>> Lev Tests\n");
+ dlevaTest();
+ zlevaTest();
+ return 0;
+}
+
+int main(void) {
+ assert( levTest()== 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/lev/testFloatLev.c b/2.3-1/src/c/signalProcessing/lev/testFloatLev.c
new file mode 100644
index 00000000..2aa1808c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/testFloatLev.c
@@ -0,0 +1,198 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "lev.h"
+#include <math.h>
+
+
+static void slevaTest(void) {
+
+ printf(" \n -------Float Test------- \n");
+ /* TEST 1 */
+ {
+ float in[4]={1.0f,2.0f,3.0f,4.0f};
+ float result1[3]={ - 1.25f , 0.0000000000000002220446f , - 0.2500000000000001110223f };
+ float result2 = -2.5;
+ float result3[3]={- 2.0f,- 0.3333333333333333148296f, - 0.2500000000000001110223f };
+ float out1[3]={0.0f}, out2=0.0f, out3[3]={0.0f};
+ int i;
+
+ out2 = sleva(in,4,out1,out3);
+
+ ;
+ for (i=0;i<3;i++) {
+ if (out1[i]>1e-6) assert( (fabs(out1[i]-result1[i]) / fabs (out1[i]) )<1e-8);
+ else assert(1);
+ }
+
+ if (out2>1e-6) assert((fabs(out2-result2) / fabs (out2))<1e-8);
+ else assert (1);
+
+ for (i=0;i<3;i++) {
+ if (out3[i]>1e-6) assert((fabs(out3[i]-result3[i]) / fabs (out3[i]))<1e-8);
+ else assert(1);
+ }
+
+ }
+
+ /* TEST 2 */
+ {
+ float in[8]= {0.9475104575976729393005f,0.0563528141938149929047f,0.8801407832652330398560f,0.5110759926028549671173f,0.8736385302618145942688f, 0.9233113336376845836639f,0.1977134644985198974609f,0.0427226074971258640289f};
+ float result1[7]= { - 1.4145989907356759651691f ,
+ - 0.1879185484276382211988f ,
+ 1.9546862646288580833698f ,
+ 0.0431855597974486471458f ,
+ - 0.6934494907248942574540f ,
+ 0.3355525090987989678126f ,
+ - 0.7681883584831936673254f};
+ float result2 = 1.132375302303337161192f;
+ float result3[7]= {- 0.0594746092161267045362f ,
+ - 0.9286458300417500533186f ,
+ - 3.5018950960448012033f ,
+ 1.0467634735526456513099f ,
+ 3.0600285663270052616269f ,
+ - 1.8325211983274933835730f ,
+ - 0.7681883584831936673254f };
+ float out1[7]={0.0f}, out2=0.0f, out3[7]={0.0f};
+ int i;
+
+ out2 = sleva(in,8,out1,out3);
+ /*FIXME : Assert à 10^-4*/
+ for (i=0;i<7;i++) {
+ if (out1[i]>1e-6) assert((fabs(out1[i]-result1[i]) / fabs (out1[i]))<3e-5);
+ else assert(1);
+ }
+
+ if (out2>1e-6) assert((fabs(out2-result2) / fabs (out2))<1e-6);
+
+
+ for (i=0;i<7;i++) {
+ if (out3[i]>1e-6) assert((fabs(out3[i]-result3[i]) / fabs (out3[i]))<1e-6);
+ else assert(1);
+ }
+
+ }
+}
+
+
+static void clevaTest(void) {
+
+ /* TEST 1 */
+ {
+ float inR[4]={1.0f,2.0f,3.0f,4.0f};
+ float inI[4]={1.0f,1.0f,1.0f,1.0f};
+ float result1R[3]={ 0.6666666666666662965923f ,- 4.6666666666666687390830f , 2.0000000000000004440892f };
+ float result1I[3]={ - 1.1666666666666669627261f , - 2.1666666666666665186369f , 2.5f };
+ float result2R = 6.1666666666666678509046f;
+ float result2I = 6.1666666666666678509046f;
+ float result3R[3]={- 1.5f,0.3333333333333333148f, 2.0000000000000004440f };
+ float result3I[3]={ + 0.5000000000000000000000f , + 0.6666666666666666296592f , 2.5f };
+ floatComplex out1[3], out2=FloatComplex(0,0), out3[3];
+ floatComplex *in;
+ int i;
+
+ printf(" \n -------FloatComplex Test------- \n");
+
+ in=FloatComplexMatrix(inR,inI,4);
+
+ out2 = cleva(in,4,out1,out3);
+
+ for (i=0;i<3;i++){
+ if (creals(out1[i])>1e-6) assert((fabs(creals(out1[i])-result1R[i]) / fabs(creals(out1[i]))) <1e-6);
+ else assert(1);
+ if (cimags(out1[i])>1e-6) assert((fabs(cimags(out1[i])-result1I[i]) / fabs(cimags(out1[i]))) <1e-7);
+ else assert(1);
+ }
+
+ if (creals(out2)>1e-6) assert((fabs(creals(out2)-result2R) / fabs(creals(out2))) <1e-6);
+ else assert(1);
+ if (cimags(out2)>1e-6) assert((fabs(cimags(out2)-result2I) / fabs(cimags(out2))) <1e-6);
+ else assert(1);
+
+ for (i=0;i<3;i++){
+ if (creals(out3[i])>1e-6) assert((fabs(creals(out3[i])-result3R[i]) / fabs(creals(out3[i]))) <1e-6);
+ else assert(1);
+ if (cimags(out3[i])>1e-6) assert((fabs(cimags(out3[i])-result3I[i]) / fabs(cimags(out3[i]))) <1e-8);
+ else assert(1);
+ }
+ }
+
+
+
+ /* TEST 2 */
+
+ {
+ float inR[6]={0.0143211213871836662292f,0.7033217861317098140717f,0.5212594550102949142456f,0.0582674746401607990265f,
+ 0.488313094712793827057f,0.8035244266502559185028f};
+ float inI[6]={0.3819901309907436370850f,0.4311556280590593814850f,0.7573182275518774986267f,0.0120028085075318813324f,
+ 0.9994637314230203628540f,0.9508706149645149707794f};
+ float result1R[5]={- 3.6095794839789050456602f,- 22.476200430215509840082f,- 8.9817944433992220609753f,
+ 12.625498164379671095503f, 3.5273512791323136106314f};
+ float result1I[5]={9.8938676519388195629290f,- 11.160861495580743252276f,- 12.396447957003889683847f,
+ - 20.810995133509468502098f,3.8571422461904862899473f};
+ float result2R = 1.2259658790319762911025f;
+ float result2I = 32.700432742697543631039f;
+ float result3R[5]={ - 1.1960559267342236733356f,- 0.0224784059157190282963f,- 2.232787465146694128038f,
+ 0.4864901943454941202205f,3.5273512791323136106314f};
+ float result3I[5]={1.7963629642455771762144f,0.7825308030566066053169f,1.4948702216638325435127f,
+ - 1.0642505925602050442791f,3.8571422461904862899473f};
+ floatComplex out1[5], out2=FloatComplex(0,0), out3[5];
+ floatComplex *in;
+ int i;
+
+ printf(" \n -------FloatComplex Test------- \n");
+
+ in=FloatComplexMatrix(inR,inI,6);
+
+ out2 = cleva(in,6,out1,out3);
+
+
+
+ for (i=0;i<5;i++) printf("out : %1.20f+%1.20f\n",creals(out1[i]),cimags(out1[i]));
+ for (i=0;i<5;i++){
+ if (creals(out1[i])>1e-6) assert((fabs(creals(out1[i])-result1R[i]) / fabs(creals(out1[i]))) <1e-6);
+ else assert(1);
+ if (cimags(out1[i])>1e-6) assert((fabs(cimags(out1[i])-result1I[i]) / fabs(cimags(out1[i]))) <1e-6);
+ else assert(1);
+ }
+
+ if (creals(out2)>1e-6) assert((fabs(creals(out2)-result2R) / fabs(creals(out2))) <1e-8);
+ else assert(1);
+ if (cimags(out2)>1e-6) assert((fabs(cimags(out2)-result2I) / fabs(cimags(out2))) <1e-8);
+ else assert(1);
+
+ for (i=0;i<5;i++){
+ if (creals(out3[i])>1e-6) assert((fabs(creals(out3[i])-result3R[i]) / fabs(creals(out3[i]))) <1e-7);
+ else assert(1);
+ if (cimags(out3[i])>1e-6) assert((fabs(cimags(out3[i])-result3I[i]) / fabs(cimags(out3[i]))) <1e-6);
+ else assert(1);
+ }
+ }
+}
+
+
+
+
+static int levTest(void) {
+ printf("\n>>>> Lev Tests\n");
+ slevaTest();
+ clevaTest();
+ return 0;
+}
+
+int main(void) {
+ assert( levTest()== 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj b/2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj
new file mode 100644
index 00000000..4dbf3d95
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{BD0B9C19-FDC9-46AB-BCDB-384B4967B7A2}</ProjectGuid>
+ <RootNamespace>testDoubleLev</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLev.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj.filters b/2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj.filters
new file mode 100644
index 00000000..d8f474c6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/test_DoubleLev/testDoubleLev.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj b/2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj
new file mode 100644
index 00000000..1acabea3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{81145727-FB2B-4CD6-B5AC-3F2146F93D5F}</ProjectGuid>
+ <RootNamespace>testFloatLev</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLev.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj.filters b/2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj.filters
new file mode 100644
index 00000000..915db23e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/test_FloatLev/testFloatLev.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lev/zleva.c b/2.3-1/src/c/signalProcessing/lev/zleva.c
new file mode 100644
index 00000000..c2b9b1b0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/zleva.c
@@ -0,0 +1,86 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+#include "conj.h"
+#include "multiplication.h"
+#include "addition.h"
+#include "division.h"
+#include "subtraction.h"
+
+doubleComplex zleva(doubleComplex* in,int size, doubleComplex* ar, doubleComplex* rc){
+ int i=0, j=0;
+ doubleComplex accu=DoubleComplex(0,0);
+ doubleComplex* ak1;
+ doubleComplex temp;
+ doubleComplex sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(doubleComplex*)malloc((unsigned int)size*sizeof(doubleComplex));
+
+ /* initialize levinson's algorithm */
+ temp=zrdivs(in[1],in[0]);
+ ar[0]=DoubleComplex(-zreals(temp),-zimags(temp));
+
+ rc[0]=ar[0];
+
+ temp = zmuls(ar[0],zconjs(ar[0]));
+ sigma2=zmuls(zdiffs(DoubleComplex(1,0), temp), in[0]);
+
+ ak1[0]=DoubleComplex(0,0);
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=DoubleComplex(0,0);
+ for (j=0;j<i;j++){
+ temp = zmuls(zconjs(ar[j]),zconjs(in[i-j]));
+ accu=zadds(accu, temp);
+ }
+ temp = zadds(in[i+1],accu);
+ temp = zrdivs(temp,sigma2);
+ ak1[i]=DoubleComplex(-zreals(temp),-zimags(temp));
+
+ rc[i]=DoubleComplex(zreals(ak1[i]),zimags(ak1[i]));
+ for (j=0;j<i;j++){
+ temp = zmuls(ak1[i], zconjs(ar[i-1-j]));
+ ak1[j] = zadds(ar[j],temp);
+ }
+
+ temp = zmuls(ak1[i], zconjs(ak1[i]));
+ temp = zdiffs(DoubleComplex(1,0),temp);
+ sigma2 = zmuls(temp,sigma2);
+ for (j=0;j<=i;j++){
+ ar[j]=DoubleComplex(zreals(ak1[j]),zimags(ak1[j]));
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/lev/zleva2.c b/2.3-1/src/c/signalProcessing/lev/zleva2.c
new file mode 100644
index 00000000..02253950
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lev/zleva2.c
@@ -0,0 +1,83 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+/*Resolve the Yule-Walker equations:
+
+ |r(0) r(1) ... r(N-1)|| a(1) | |sigma2|
+ |r(1) r(0) ... r(n-1)|| a(2) | | 0 |
+ | : : ... : || : |=| 0 |
+ | : : ... : || : | | 0 |
+ |r(N-1) r(N-2) ... r(0) ||a(N-1)| | 0 |
+
+ using Levinson's algorithm.
+ r :Correlation coefficients
+ ar :Auto-Regressive model parameters
+ sigma2 :Scale constant
+ rc :Reflection coefficients
+*/
+
+#include <stdlib.h>
+#include "lev.h"
+#include "conj.h"
+#include "multiplication.h"
+#include "addition.h"
+#include "division.h"
+#include "subtraction.h"
+
+doubleComplex zleva2(doubleComplex* in,int size, doubleComplex* ar){
+ int i=0, j=0;
+ doubleComplex accu=DoubleComplex(0,0);
+ doubleComplex* ak1;
+ doubleComplex temp;
+ doubleComplex sigma2;
+
+ /* FIXME : malloc here */
+ ak1=(doubleComplex*)malloc((unsigned int)size*sizeof(doubleComplex));
+
+ /* initialize levinson's algorithm */
+ temp=zrdivs(in[1],in[0]);
+ ar[0]=DoubleComplex(-zreals(temp),-zimags(temp));
+
+ temp = zmuls(ar[0],zconjs(ar[0]));
+ sigma2=zmuls(zdiffs(DoubleComplex(1,0), temp), in[0]);
+
+ ak1[0]=DoubleComplex(0,0);
+
+ /* iterative solution to yule-walker equations */
+ for (i=1;i<size-1;i++){
+ accu=DoubleComplex(0,0);
+ for (j=0;j<i;j++){
+ temp = zmuls(zconjs(ar[j]),zconjs(in[i-j]));
+ accu=zadds(accu, temp);
+ }
+ temp = zadds(in[i+1],accu);
+ temp = zrdivs(temp,sigma2);
+ ak1[i]=DoubleComplex(-zreals(temp),-zimags(temp));
+
+ for (j=0;j<i;j++){
+ temp = zmuls(ak1[i], zconjs(ar[i-1-j]));
+ ak1[j] = zadds(ar[j],temp);
+ }
+
+ temp = zmuls(ak1[i], zconjs(ak1[i]));
+ temp = zdiffs(DoubleComplex(1,0),temp);
+ sigma2 = zmuls(temp,sigma2);
+ for (j=0;j<=i;j++){
+ ar[j]=DoubleComplex(zreals(ak1[j]),zimags(ak1[j]));
+ }
+ }
+ free(ak1);
+ return sigma2;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/levin/Makefile.am b/2.3-1/src/c/signalProcessing/levin/Makefile.am
new file mode 100644
index 00000000..3e6de02f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/Makefile.am
@@ -0,0 +1,76 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libLevin_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/signalProcessing/levin
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libLevin.la
+
+HEAD = ../includes/levin.h
+
+
+libLevin_la_SOURCES = $(HEAD) \
+ levinUtils.c \
+ slevina.c \
+ dlevina.c
+
+
+###############
+#### Check ####
+###############
+check_PROGRAMS = testDoubleLevin testFloatLevin
+
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/signalProcessing/levin/libLevin.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ @LIBMATH@
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/signalProcessing/levin
+
+
+testDoubleLevin_SOURCES = testDoubleLevin.c
+testDoubleLevin_LDADD = $(check_LDADD)
+testDoubleLevin_CFLAGS = $(check_INCLUDES)
+
+testFloatLevin_SOURCES = testFloatLevin.c
+testFloatLevin_LDADD = $(check_LDADD)
+testFloatLevin_CFLAGS = $(check_INCLUDES)
+
+
+TESTS = testDoubleLevin testFloatLevin
diff --git a/2.3-1/src/c/signalProcessing/levin/Makefile.in b/2.3-1/src/c/signalProcessing/levin/Makefile.in
new file mode 100644
index 00000000..ebe824e0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/Makefile.in
@@ -0,0 +1,759 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleLevin$(EXEEXT) testFloatLevin$(EXEEXT)
+TESTS = testDoubleLevin$(EXEEXT) testFloatLevin$(EXEEXT)
+subdir = src/c/signalProcessing/levin
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLevin_la_LIBADD =
+am__objects_1 =
+am_libLevin_la_OBJECTS = $(am__objects_1) libLevin_la-levinUtils.lo \
+ libLevin_la-slevina.lo libLevin_la-dlevina.lo
+libLevin_la_OBJECTS = $(am_libLevin_la_OBJECTS)
+libLevin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLevin_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLevin_OBJECTS = \
+ testDoubleLevin-testDoubleLevin.$(OBJEXT)
+testDoubleLevin_OBJECTS = $(am_testDoubleLevin_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/signalProcessing/levin/libLevin.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la
+testDoubleLevin_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLevin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleLevin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatLevin_OBJECTS = testFloatLevin-testFloatLevin.$(OBJEXT)
+testFloatLevin_OBJECTS = $(am_testFloatLevin_OBJECTS)
+testFloatLevin_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLevin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLevin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLevin_la_SOURCES) $(testDoubleLevin_SOURCES) \
+ $(testFloatLevin_SOURCES)
+DIST_SOURCES = $(libLevin_la_SOURCES) $(testDoubleLevin_SOURCES) \
+ $(testFloatLevin_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLevin_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/signalProcessing/levin
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLevin.la
+HEAD = ../includes/levin.h
+libLevin_la_SOURCES = $(HEAD) \
+ levinUtils.c \
+ slevina.c \
+ dlevina.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/signalProcessing/levin/libLevin.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ @LIBMATH@
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes \
+ -I $(top_builddir)/src/c/signalProcessing/levin
+
+testDoubleLevin_SOURCES = testDoubleLevin.c
+testDoubleLevin_LDADD = $(check_LDADD)
+testDoubleLevin_CFLAGS = $(check_INCLUDES)
+testFloatLevin_SOURCES = testFloatLevin.c
+testFloatLevin_LDADD = $(check_LDADD)
+testFloatLevin_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/levin/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/levin/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLevin.la: $(libLevin_la_OBJECTS) $(libLevin_la_DEPENDENCIES)
+ $(libLevin_la_LINK) -rpath $(pkglibdir) $(libLevin_la_OBJECTS) $(libLevin_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLevin$(EXEEXT): $(testDoubleLevin_OBJECTS) $(testDoubleLevin_DEPENDENCIES)
+ @rm -f testDoubleLevin$(EXEEXT)
+ $(testDoubleLevin_LINK) $(testDoubleLevin_OBJECTS) $(testDoubleLevin_LDADD) $(LIBS)
+testFloatLevin$(EXEEXT): $(testFloatLevin_OBJECTS) $(testFloatLevin_DEPENDENCIES)
+ @rm -f testFloatLevin$(EXEEXT)
+ $(testFloatLevin_LINK) $(testFloatLevin_OBJECTS) $(testFloatLevin_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLevin_la-dlevina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLevin_la-levinUtils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLevin_la-slevina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLevin-testDoubleLevin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLevin-testFloatLevin.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLevin_la-levinUtils.lo: levinUtils.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLevin_la_CFLAGS) $(CFLAGS) -MT libLevin_la-levinUtils.lo -MD -MP -MF $(DEPDIR)/libLevin_la-levinUtils.Tpo -c -o libLevin_la-levinUtils.lo `test -f 'levinUtils.c' || echo '$(srcdir)/'`levinUtils.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLevin_la-levinUtils.Tpo $(DEPDIR)/libLevin_la-levinUtils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='levinUtils.c' object='libLevin_la-levinUtils.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLevin_la_CFLAGS) $(CFLAGS) -c -o libLevin_la-levinUtils.lo `test -f 'levinUtils.c' || echo '$(srcdir)/'`levinUtils.c
+
+libLevin_la-slevina.lo: slevina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLevin_la_CFLAGS) $(CFLAGS) -MT libLevin_la-slevina.lo -MD -MP -MF $(DEPDIR)/libLevin_la-slevina.Tpo -c -o libLevin_la-slevina.lo `test -f 'slevina.c' || echo '$(srcdir)/'`slevina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLevin_la-slevina.Tpo $(DEPDIR)/libLevin_la-slevina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slevina.c' object='libLevin_la-slevina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLevin_la_CFLAGS) $(CFLAGS) -c -o libLevin_la-slevina.lo `test -f 'slevina.c' || echo '$(srcdir)/'`slevina.c
+
+libLevin_la-dlevina.lo: dlevina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLevin_la_CFLAGS) $(CFLAGS) -MT libLevin_la-dlevina.lo -MD -MP -MF $(DEPDIR)/libLevin_la-dlevina.Tpo -c -o libLevin_la-dlevina.lo `test -f 'dlevina.c' || echo '$(srcdir)/'`dlevina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLevin_la-dlevina.Tpo $(DEPDIR)/libLevin_la-dlevina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlevina.c' object='libLevin_la-dlevina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLevin_la_CFLAGS) $(CFLAGS) -c -o libLevin_la-dlevina.lo `test -f 'dlevina.c' || echo '$(srcdir)/'`dlevina.c
+
+testDoubleLevin-testDoubleLevin.o: testDoubleLevin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLevin_CFLAGS) $(CFLAGS) -MT testDoubleLevin-testDoubleLevin.o -MD -MP -MF $(DEPDIR)/testDoubleLevin-testDoubleLevin.Tpo -c -o testDoubleLevin-testDoubleLevin.o `test -f 'testDoubleLevin.c' || echo '$(srcdir)/'`testDoubleLevin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLevin-testDoubleLevin.Tpo $(DEPDIR)/testDoubleLevin-testDoubleLevin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLevin.c' object='testDoubleLevin-testDoubleLevin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLevin_CFLAGS) $(CFLAGS) -c -o testDoubleLevin-testDoubleLevin.o `test -f 'testDoubleLevin.c' || echo '$(srcdir)/'`testDoubleLevin.c
+
+testDoubleLevin-testDoubleLevin.obj: testDoubleLevin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLevin_CFLAGS) $(CFLAGS) -MT testDoubleLevin-testDoubleLevin.obj -MD -MP -MF $(DEPDIR)/testDoubleLevin-testDoubleLevin.Tpo -c -o testDoubleLevin-testDoubleLevin.obj `if test -f 'testDoubleLevin.c'; then $(CYGPATH_W) 'testDoubleLevin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLevin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLevin-testDoubleLevin.Tpo $(DEPDIR)/testDoubleLevin-testDoubleLevin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLevin.c' object='testDoubleLevin-testDoubleLevin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLevin_CFLAGS) $(CFLAGS) -c -o testDoubleLevin-testDoubleLevin.obj `if test -f 'testDoubleLevin.c'; then $(CYGPATH_W) 'testDoubleLevin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLevin.c'; fi`
+
+testFloatLevin-testFloatLevin.o: testFloatLevin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLevin_CFLAGS) $(CFLAGS) -MT testFloatLevin-testFloatLevin.o -MD -MP -MF $(DEPDIR)/testFloatLevin-testFloatLevin.Tpo -c -o testFloatLevin-testFloatLevin.o `test -f 'testFloatLevin.c' || echo '$(srcdir)/'`testFloatLevin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLevin-testFloatLevin.Tpo $(DEPDIR)/testFloatLevin-testFloatLevin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLevin.c' object='testFloatLevin-testFloatLevin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLevin_CFLAGS) $(CFLAGS) -c -o testFloatLevin-testFloatLevin.o `test -f 'testFloatLevin.c' || echo '$(srcdir)/'`testFloatLevin.c
+
+testFloatLevin-testFloatLevin.obj: testFloatLevin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLevin_CFLAGS) $(CFLAGS) -MT testFloatLevin-testFloatLevin.obj -MD -MP -MF $(DEPDIR)/testFloatLevin-testFloatLevin.Tpo -c -o testFloatLevin-testFloatLevin.obj `if test -f 'testFloatLevin.c'; then $(CYGPATH_W) 'testFloatLevin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLevin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLevin-testFloatLevin.Tpo $(DEPDIR)/testFloatLevin-testFloatLevin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLevin.c' object='testFloatLevin-testFloatLevin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLevin_CFLAGS) $(CFLAGS) -c -o testFloatLevin-testFloatLevin.obj `if test -f 'testFloatLevin.c'; then $(CYGPATH_W) 'testFloatLevin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLevin.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/levin/dlevina.c b/2.3-1/src/c/signalProcessing/levin/dlevina.c
new file mode 100644
index 00000000..29ee6223
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/dlevina.c
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "levin.h"
+#include "levinUtils.h"
+#include "matrixInversion.h"
+#include "matrixMultiplication.h"
+#include "zeros.h"
+
+void dlevina (int n, double* cov, int lCov, int cCov, double* la, double* sig, double* lb){
+/*
+ [la and lb]
+ In Scilab, the return value la is a list of n elements. Each element is a matrix cCov*cCov,
+ and each element of the matrix is a polynome whose degree is n, so the polynome got n+1 elements.
+ The greatest size of a element of the list is : (n+1)*cCov*cCov.
+
+ Here, la is a matrix which contain all elements of the list, its size is n*(n+1)*cCov*cCov. We take the
+ maximum size for all elements.
+ The first element of the list is the first (n+1)*cCov*cCov elements of la, namely la[0] to la[(n+1)*cCov*cCov-1].
+ The second element of the list is the elements of la between (n+1)*cCov*cCov and 2*(n+1)*cCov*cCov,namely la[(n+1)*cCov*cCov]
+ to la[2*(n+1)*cCov*cCov-1],...
+
+ Enter now in a element of the list. Take the first for example.
+ This is, like said before, a cCov*cCov matrix. In la, it contains (n+1)*cCov*cCov. Each element of the matrix contains (n+1)
+ elements. As it's stocked by columns, if we represent a matrix like [a c], for example, the elements 0 to n of la represent
+ [b d]
+ a, the elements (n+1) to 2(n+1)-1 represent b,...
+
+ To finish, look at the elements of the matrix, the polynomes. The coefficients of the polynomes are stocked in increasing order.
+
+ For example, if la in Scilab is : list( [3+2x 5-2x ])
+ ( [-5+x -2+4x])
+ ([3+x-x^2 -1+2x ])
+ ([1+6x+3x^2 -2x-x^2 ])
+ the result in dlevin will be :
+ -la is a table of 2*3*2*2 elements(n=2,cCov=2);
+ -la[]={3,2,0, -5,1,0, 5,-2,0, -2,4,0, 3,1,-1, 1,6,3 -1,2,0, 0,-2,-1}.
+
+ It's the same for lb.
+
+ [sig]
+ In Scilab, the return value sig is a list of n elements. Each element is a matrix cCov*cCov,
+ and each element of the matrix is a scalar, so 1 element.
+ The greatest size of a element of the list is : cCov*cCov.
+
+ Let see an example so know how it's stocked.
+ In Scilab, if sig is : list( [1 3])
+ ( [2 4])
+ ( [5 7])
+ ( [6 8])
+ the result in dlevin will be :
+ -sig={1,2, 5,6, 3,4, 7,8}.
+ It's as if we put the matrix the ones under the others and we take the first column, the second,...
+
+ >>>CAREFUL<<<
+ la/lb and sig are stored differently
+
+
+*/
+
+
+ int i=0;
+
+
+/*version ISO C99
+ double tmp1[n*cCov*cCov], tmp2[n*cCov*cCov];
+ double sig1[cCov], gam[cCov];
+ double R1[n*cCov],R2[n*cCov],R3[n*cCov],R4[n*cCov];
+*/
+/*version pas ISO C99 */
+ double *tmp1, *tmp2;
+ double *sig1, *gam;
+ double *R1,*R2,*R3,*R4;
+
+ /* FIXME : malloc here */
+
+ tmp1=(double *)malloc((unsigned int)((n+1)*cCov*cCov)*sizeof(double));
+ tmp2=(double *)malloc((unsigned int)((n+1)*cCov*cCov)*sizeof(double));
+ sig1=(double *)malloc((unsigned int)(cCov*cCov)*sizeof(double));
+ gam=(double *)malloc((unsigned int)(cCov*cCov)*sizeof(double));
+ R1=(double *)malloc((unsigned int)(n*cCov*cCov)*sizeof(double));
+ R2=(double *)malloc((unsigned int)(n*cCov*cCov)*sizeof(double));
+ R3=(double *)malloc((unsigned int)(n*cCov*cCov)*sizeof(double));
+ R4=(double *)malloc((unsigned int)(n*cCov*cCov)*sizeof(double));
+
+
+
+ /*
+ * Initializations
+ * */
+ dzerosa(sig,n*cCov*cCov,1);
+ dzerosa(la,n*(n+1)*cCov*cCov,1);
+ dzerosa(lb,n*(n+1)*cCov*cCov,1);
+
+ /*equal to eye(la) and eye(lb)
+ but we can't use eye cause to the indexation*/
+ for (i=0;i<cCov;i++){
+ la[i*((n+1)*(cCov+1))]=1;
+ lb[i*((n+1)*(cCov+1))]=1;
+ }
+
+ dr1(cov,lCov,cCov,n,R1);
+ dr2(cov,lCov,cCov,n,R2);
+ dr3(cov,lCov,cCov,n,R3);
+ dr4(cov,lCov,cCov,n,R4);
+
+/* case i=0 */
+
+
+ /*computation of sig */
+ dlevinmul(la,R4,n,cCov,0,sig,n*cCov,0,'d');
+ /*computation of gam1 */
+ dlevinmul(lb,R2,n,cCov,0,gam,cCov,0,'u');
+ /*computation of c1*r1 */
+ dlevinmul(la,R1,n,cCov,0,tmp1,cCov,0,'u');
+ /*computation of inv(gam1) */
+ dinverma(gam,sig1,cCov);
+ /*computation of k1 = c1*r1*inv(gam1) */
+ dmulma(tmp1,cCov,cCov,sig1,cCov,cCov,tmp2);
+ /*computation of k1*lb */
+ dlevinmul2(tmp2,lb,0,n,cCov,tmp1);
+ /*computation of k1*lb*z */
+ ddecalage(tmp1,0,n,cCov,tmp1);
+ /*computation of la */
+ dlevinsub(la,tmp1,n,cCov,0,0,la);
+
+ /*computation of sig1 (we extract the value if sig at time 0)*/
+ dlevinsig(sig,0,cCov,n*cCov,sig1);
+ /*computation of c2*r3 */
+ dlevinmul(lb,R3,n,cCov,0,tmp1,cCov,0,'d');
+ /*computation of inv(sig1)*/
+ dinverma(sig1,gam,cCov);
+ /*computation of k2 = c2*r3*inv(sig1) */
+ dmulma(tmp1,cCov,cCov,gam,cCov,cCov,tmp2);
+ /*computation of k2*la (here it's lb cause la have been modified
+ and the precedent values hadn't been saved)*/
+ dlevinmul2(tmp2,lb,0,n,cCov,tmp1);
+ /*computation of lb*z */
+ ddecalage(lb,0,n,cCov,lb);
+ /*computation of lb */
+ dlevinsub(lb,tmp1,n,cCov,0,0,lb);
+
+
+ for (i=1;i<n;i++){
+ dlevinmul(la,R4,n,cCov,i,sig,n*cCov,1,'d');
+ dlevinmul(lb,R2,n,cCov,i,gam,cCov,0,'u');
+ dlevinmul(la,R1,n,cCov,i,tmp1,cCov,0,'u');
+ dinverma(gam,sig1,cCov);
+ dmulma(tmp1,cCov,cCov,sig1,cCov,cCov,tmp2);
+
+ dlevinmul2(tmp2,lb,i-1,n,cCov,tmp1);
+ ddecalage(tmp1,0,n,cCov,tmp1);
+ dlevinsub(la,tmp1,n,cCov,i,i,la);/*a*/
+
+ /*computation of sig1 (we extract the value if sig at time i)*/
+ dlevinsig(sig,i,cCov,n*cCov,sig1);
+ dlevinmul(lb,R3,n,cCov,i,tmp1,cCov,0,'d');
+ dinverma(sig1,gam,cCov);
+ dmulma(tmp1,cCov,cCov,gam,cCov,cCov,tmp2);
+ /*computation of k2*la (now it's la at time (i-1))*/
+ dlevinmul2(tmp2,la,i-1,n,cCov,tmp1);
+ ddecalage(lb,(i-1)*(n+1)*cCov*cCov,n,cCov,tmp2);
+ dlevinsub(tmp2,tmp1,n,cCov,0,i,lb);
+ }
+
+
+ free(R4);
+ free(R3);
+ free(R2);
+ free(R1);
+ free(gam);
+ free(sig1);
+ free(tmp2);
+ free(tmp1);
+}
diff --git a/2.3-1/src/c/signalProcessing/levin/levinUtils.c b/2.3-1/src/c/signalProcessing/levin/levinUtils.c
new file mode 100644
index 00000000..0048c860
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/levinUtils.c
@@ -0,0 +1,270 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "levinUtils.h"
+#include "stdio.h"
+/* Double Functions */
+void dr1(double *in,int lines, int columns, int n, double * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ out[i+j*n*columns]=in[(n-i/columns)*columns + i%columns + j*lines];
+ }
+ }
+}
+
+void dr2(double *in,int lines, int columns, int n, double * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ out[i+j*n*columns]=in[(n-1-i/columns)*columns + i%columns + j*lines];
+ }
+ }
+}
+
+
+void dr3(double *in,int lines, int columns, int n, double * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ out[i+j*n*columns]=in[(i/columns+1)*columns + j%columns + (i%columns)*lines];
+ }
+ }
+}
+
+
+void dr4(double *in,int lines, int columns, int n, double * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ if ( (j*n*columns-1<i+j*n*columns) && (i+j*n*columns<j*n*columns+columns) )
+ out[i+j*n*columns]=in[i+j*lines];
+ else out[i+j*n*columns]=in[i + j%columns + (i%columns)*(lines-1)];
+ }
+ }
+}
+
+
+
+void dlevinmul(double* in1, double* in2, int n, int columns, int ind_boucle, double* out, int lines, int deb_out,char choix){
+ int i=0, j=0, debut=0,start_out=0;
+ double accu;
+
+ if (ind_boucle==0) debut=0;
+ else debut = (ind_boucle-1)*(n+1)*columns*columns;
+
+ start_out = deb_out*ind_boucle*columns;
+
+ switch(choix){
+ case 'u' :
+ for (i=0;i<columns*columns;i++){
+ accu=0;
+ for(j=0;j<ind_boucle*columns+columns;j++){
+ accu += in1[debut+i%columns*(n+1) + (columns*(n+1))*(j%columns)+j/columns] * in2[n*columns-((ind_boucle+1)*columns)+j+(i/columns)*n*columns];
+ }
+ out[start_out+i%columns+(i/columns)*lines] = accu;
+ }
+ break;
+ case 'd' :
+ for (i=0;i<columns*columns;i++){
+ accu=0;
+ for(j=0;j<ind_boucle*columns+columns;j++){
+ accu+=in1[debut+i%columns*(n+1) + (columns*(n+1))*(j%columns)+j/columns]*in2[j+(i/columns)*n*columns];
+ }
+ out[start_out+i%columns+(i/columns)*lines] = accu;
+ }
+ break;
+ default : break;
+ }
+}
+
+
+
+void dlevinsig(double *sig,int n, int columns, int lines, double *sig1){
+ int i=0;
+ for (i=0;i<columns*columns;i++){
+ sig1[i]=sig[n*columns + i%columns +(i/columns)*lines];
+ }
+}
+
+
+void dlevinmul2(double* in1, double *in2,int ind_boucle,int n,int columns,double* out){
+ int i=0,j=0, debut;
+ double accu;
+ debut = ind_boucle*(n+1)*columns*columns;
+ for(i=0;i<(n+1)*columns*columns;i++){
+ accu=0;
+ for (j=0;j<columns;j++){
+ accu += in1[(i/(n+1))%columns+j*columns]*in2[debut+i%(n+1)+(i/((n+1)*columns))*(n+1)*columns+j*(n+1)];
+ }
+ out[i]=accu;
+ }
+}
+
+
+void dlevinsub(double* in1, double* in2, int n, int columns, int deb_in, int ind_boucle, double* out){
+ int i=0;
+ int deb_out= ind_boucle*(n+1)*columns*columns;
+ int deb_in1;
+
+ if (deb_in==0) deb_in1=0;
+ else deb_in1=(deb_in-1)*(n+1)*columns*columns;
+
+ for (i=0;i<(n+1)*columns*columns;i++){
+ out[deb_out + i] = in1[deb_in1+i]-in2[i];
+ }
+}
+
+
+
+void ddecalage(double* in, int deb_in,int n,int columns,double *out){
+ int i=0,j=0;
+
+ for (i=0;i<columns*columns;i++){
+ for(j=n;j>0;j--) {out[i*(n+1)+j]=in[i*(n+1)+deb_in+j-1];}
+ out[i*(n+1)]=0;
+ }
+
+}
+
+
+
+
+
+/* Float Functions */
+
+void sr1(float *in,int lines, int columns, int n, float * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ out[i+j*n*columns]=in[(n-i/columns)*columns + i%columns + j*lines];
+ }
+ }
+}
+
+void sr2(float *in,int lines, int columns, int n, float * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ out[i+j*n*columns]=in[(n-1-i/columns)*columns + i%columns + j*lines];
+ }
+ }
+}
+
+
+void sr3(float *in,int lines, int columns, int n, float * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ out[i+j*n*columns]=in[(i/columns+1)*columns + j%columns + (i%columns)*lines];
+ }
+ }
+}
+
+
+void sr4(float *in,int lines, int columns, int n, float * out){
+ int i,j;
+ for (i=0;i<n*columns;i++) {
+ for (j=0;j<columns;j++){
+ if ( (j*n*columns-1<i+j*n*columns) && (i+j*n*columns<j*n*columns+columns) )
+ out[i+j*n*columns]=in[i+j*lines];
+ else out[i+j*n*columns]=in[i + j%columns + (i%columns)*(lines-1)];
+ }
+ }
+}
+
+
+
+void slevinmul(float* in1, float* in2, int n, int columns, int ind_boucle, float* out, int lines, int deb_out,char choix){
+ int i=0, j=0, debut=0,start_out=0;
+ float accu;
+
+ if (ind_boucle==0) debut=0;
+ else debut = (ind_boucle-1)*(n+1)*columns*columns;
+
+ start_out = deb_out*ind_boucle*columns;
+
+ switch(choix){
+ case 'u' :
+ for (i=0;i<columns*columns;i++){
+ accu=0;
+ for(j=0;j<ind_boucle*columns+columns;j++){
+ accu += in1[debut+i%columns*(n+1) + (columns*(n+1))*(j%columns)+j/columns] * in2[n*columns-((ind_boucle+1)*columns)+j+(i/columns)*n*columns];
+ }
+ out[start_out+i%columns+(i/columns)*lines] = accu;
+ }
+ break;
+ case 'd' :
+ for (i=0;i<columns*columns;i++){
+ accu=0;
+ for(j=0;j<ind_boucle*columns+columns;j++){
+ accu+=in1[debut+i%columns*(n+1) + (columns*(n+1))*(j%columns)+j/columns]*in2[j+(i/columns)*n*columns];
+ }
+ out[start_out+i%columns+(i/columns)*lines] = accu;
+ }
+ break;
+ default : break;
+ }
+}
+
+
+
+void slevinsig(float *sig,int n, int columns, int lines, float *sig1){
+ int i=0;
+ for (i=0;i<columns*columns;i++){
+ sig1[i]=sig[n*columns + i%columns +(i/columns)*lines];
+ }
+}
+
+
+void slevinmul2(float* in1, float *in2,int ind_boucle,int n,int columns,float* out){
+ int i=0,j=0, debut;
+ float accu;
+ debut = ind_boucle*(n+1)*columns*columns;
+ for(i=0;i<(n+1)*columns*columns;i++){
+ accu=0;
+ for (j=0;j<columns;j++){
+ accu += in1[(i/(n+1))%columns+j*columns]*in2[debut+i%(n+1)+(i/((n+1)*columns))*(n+1)*columns+j*(n+1)];
+ }
+ out[i]=accu;
+ }
+}
+
+
+void slevinsub(float* in1, float* in2, int n, int columns, int deb_in, int ind_boucle, float* out){
+ int i=0;
+ int deb_out= ind_boucle*(n+1)*columns*columns;
+ int deb_in1;
+
+ if (deb_in==0) deb_in1=0;
+ else deb_in1=(deb_in-1)*(n+1)*columns*columns;
+
+ for (i=0;i<(n+1)*columns*columns;i++){
+ out[deb_out + i] = in1[deb_in1+i]-in2[i];
+ }
+}
+
+
+void sdecalage(float* in, int deb_in,int n,int columns,float *out){
+ int i=0,j=0;
+
+ for (i=0;i<columns*columns;i++){
+ for(j=n;j>0;j--) {out[i*(n+1)+j]=in[i*(n+1)+deb_in+j-1];}
+ out[i*(n+1)]=0;
+ }
+
+}
+
diff --git a/2.3-1/src/c/signalProcessing/levin/levinUtils.h b/2.3-1/src/c/signalProcessing/levin/levinUtils.h
new file mode 100644
index 00000000..62df88f2
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/levinUtils.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+
+
+
+
+/* creation of arrays used in levin */
+
+void dr1(double *in,int lines,int columns, int n, double * out);
+void dr2(double *in,int lines,int columns, int n, double * out);
+void dr3(double *in,int lines,int columns, int n, double * out);
+void dr4(double *in,int lines,int columns, int n, double * out);
+void sr1(float *in,int lines,int columns, int n, float * out);
+void sr2(float *in,int lines,int columns, int n, float * out);
+void sr3(float *in,int lines,int columns, int n, float * out);
+void sr4(float *in,int lines,int columns, int n, float * out);
+
+
+
+/*multiplications used in levin program, differents from the classic multiplication*/
+/*
+ in1,in2 : matrices to multiply
+ n :
+ columns : number of columns of in2
+ ind_boucle : indice of the loop
+ out : result matrix
+ lines : number of lines of the result
+ deb_out : 0 if the result start to the indice 0, 1 otherwise
+ choix : 'u' or 'd', depends of in2. We take either the k first elements of in2 ('u') or the k last ('d'),
+ k is a nomber which depends of the indice of loop, the columns ...
+ */
+void dlevinmul(double* in1, double* in2, int n, int columns, int ind_boucle, double* out, int lines, int deb_out,char choix);
+void dlevinmul2(double* in1, double *in2,int ind_boucle,int n,int columns,double* out);
+void slevinmul(float* in1, float* in2, int n, int columns, int ind_boucle, float* out, int lines, int deb_out,char choix);
+void slevinmul2(float* in1, float *in2,int ind_boucle,int n,int columns,float* out);
+
+
+/*take the values of sig wanted*/
+void dlevinsig(double *sig,int n, int columns, int lines, double *sig1);
+void slevinsig(float *sig,int n, int columns, int lines, float *sig1);
+
+/*a subtraction used in levin program, is different from the classic subtraction cause of the indices*/
+/*
+ in1,in2 : matrices to subtract
+ n :
+ columns : number of columns of in2
+ deb_in : place of the first element of in1
+ ind_boucle : indice of the loop
+ out : result matrix
+ */
+void dlevinsub(double* in1, double* in2, int n, int columns, int deb_in, int ind_boucle, double* out);
+void slevinsub(float* in1, float* in2, int n, int columns, int deb_in, int ind_boucle, float* out);
+
+
+/*used for the multiplication by z which is equal to step forward*/
+void ddecalage(double* in, int deb_in,int n,int columns,double * out);
+void sdecalage(float* in, int deb_in,int n,int columns,float * out);
+
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/levin/slevina.c b/2.3-1/src/c/signalProcessing/levin/slevina.c
new file mode 100644
index 00000000..e0e30a84
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/slevina.c
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "levin.h"
+#include "levinUtils.h"
+#include "matrixInversion.h"
+#include "matrixMultiplication.h"
+#include "zeros.h"
+
+void slevina (int n, float* cov, int lCov, int cCov, float* la, float* sig, float* lb){
+/*
+ [la and lb]
+ In Scilab, the return value la is a list of n elements. Each element is a matrix cCov*cCov,
+ and each element of the matrix is a polynome whose degree is n, so the polynome got n+1 elements.
+ The greatest size of a element of the list is : (n+1)*cCov*cCov.
+
+ Here, la is a matrix which contain all elements of the list, its size is n*(n+1)*cCov*cCov. We take the
+ maximum size for all elements.
+ The first element of the list is the first (n+1)*cCov*cCov elements of la, namely la[0] to la[(n+1)*cCov*cCov-1].
+ The second element of the list is the elements of la between (n+1)*cCov*cCov and 2*(n+1)*cCov*cCov,namely la[(n+1)*cCov*cCov]
+ to la[2*(n+1)*cCov*cCov-1],...
+
+ Enter now in a element of the list. Take the first for example.
+ This is, like said before, a cCov*cCov matrix. In la, it contains (n+1)*cCov*cCov. Each element of the matrix contains (n+1)
+ elements. As it's stocked by columns, if we represent a matrix like [a c], for example, the elements 0 to n of la represent
+ [b d]
+ a, the elements (n+1) to 2(n+1)-1 represent b,...
+
+ To finish, look at the elements of the matrix, the polynomes. The coefficients of the polynomes are stocked in increasing order.
+
+ For example, if la in Scilab is : list( [3+2x 5-2x ])
+ ( [-5+x -2+4x])
+ ([3+x-x^2 -1+2x ])
+ ([1+6x+3x^2 -2x-x^2 ])
+ the result in dlevin will be :
+ -la is a table of 2*3*2*2 elements(n=2,cCov=2);
+ -la[]={3,2,0, -5,1,0, 5,-2,0, -2,4,0, 3,1,-1, 1,6,3 -1,2,0, 0,-2,-1}.
+
+ It's the same for lb.
+
+ [sig]
+ In Scilab, the return value sig is a list of n elements. Each element is a matrix cCov*cCov,
+ and each element of the matrix is a scalar, so 1 element.
+ The greatest size of a element of the list is : cCov*cCov.
+
+ Let see an example so know how it's stocked.
+ In Scilab, if sig is : list( [1 3])
+ ( [2 4])
+ ( [5 7])
+ ( [6 8])
+ the result in dlevin will be :
+ -sig={1,2, 5,6, 3,4, 7,8}.
+ It's as if we put the matrix the ones under the others and we take the first column, the second,...
+
+
+ >>>CAREFUL<<<
+ la/lb and sig are stored differently
+
+*/
+
+
+ int i=0;
+
+
+/*version ISO C99
+ double tmp1[n*cCov*cCov], tmp2[n*cCov*cCov];
+ double sig1[cCov], gam[cCov];
+ double R1[n*cCov],R2[n*cCov],R3[n*cCov],R4[n*cCov];
+*/
+/*version pas ISO C99 */
+ float *tmp1, *tmp2;
+ float *sig1, *gam;
+ float *R1,*R2,*R3,*R4;
+
+ /* FIXME : malloc here */
+
+ tmp1=(float*)malloc((unsigned int)((n+1)*cCov*cCov)*sizeof(float));
+ tmp2=(float*)malloc((unsigned int)((n+1)*cCov*cCov)*sizeof(float));
+ sig1=(float*)malloc((unsigned int)(cCov*cCov)*sizeof(float));
+ gam=(float*)malloc((unsigned int)(cCov*cCov)*sizeof(float));
+ R1=(float*)malloc((unsigned int)(n*cCov*cCov)*sizeof(float));
+ R2=(float*)malloc((unsigned int)(n*cCov*cCov)*sizeof(float));
+ R3=(float*)malloc((unsigned int)(n*cCov*cCov)*sizeof(float));
+ R4=(float*)malloc((unsigned int)(n*cCov*cCov)*sizeof(float));
+
+
+
+ /*
+ * Initializations
+ * */
+ szerosa(sig,n*cCov*cCov,1);
+ szerosa(la,n*(n+1)*cCov*cCov,1);
+ szerosa(lb,n*(n+1)*cCov*cCov,1);
+
+ /*equal to eye(la) and eye(lb)
+ but we can't use eye cause to the indexation*/
+ for (i=0;i<cCov;i++){
+ la[i*((n+1)*(cCov+1))]=1;
+ lb[i*((n+1)*(cCov+1))]=1;
+ }
+
+ sr1(cov,lCov,cCov,n,R1);
+ sr2(cov,lCov,cCov,n,R2);
+ sr3(cov,lCov,cCov,n,R3);
+ sr4(cov,lCov,cCov,n,R4);
+
+/* case i=0 */
+
+
+ /*computation of sig */
+ slevinmul(la,R4,n,cCov,0,sig,n*cCov,0,'d');
+ /*computation of gam1 */
+ slevinmul(lb,R2,n,cCov,0,gam,cCov,0,'u');
+ /*computation of c1*r1 */
+ slevinmul(la,R1,n,cCov,0,tmp1,cCov,0,'u');
+ /*computation of inv(gam1) */
+ sinverma(gam,sig1,cCov);
+ /*computation of k1 = c1*r1*inv(gam1) */
+ smulma(tmp1,cCov,cCov,sig1,cCov,cCov,tmp2);
+ /*computation of k1*lb */
+ slevinmul2(tmp2,lb,0,n,cCov,tmp1);
+ /*computation of k1*lb*z */
+ sdecalage(tmp1,0,n,cCov,tmp1);
+ /*computation of la */
+ slevinsub(la,tmp1,n,cCov,0,0,la);
+
+ /*computation of sig1 (we extract the value if sig at time 0)*/
+ slevinsig(sig,0,cCov,n*cCov,sig1);
+ /*computation of c2*r3 */
+ slevinmul(lb,R3,n,cCov,0,tmp1,cCov,0,'d');
+ /*computation of inv(sig1)*/
+ sinverma(sig1,gam,cCov);
+ /*computation of k2 = c2*r3*inv(sig1) */
+ smulma(tmp1,cCov,cCov,gam,cCov,cCov,tmp2);
+ /*computation of k2*la (here it's lb cause la have been modified
+ and the precedent values hadn't been saved)*/
+ slevinmul2(tmp2,lb,0,n,cCov,tmp1);
+ /*computation of lb*z */
+ sdecalage(lb,0,n,cCov,lb);
+ /*computation of lb */
+ slevinsub(lb,tmp1,n,cCov,0,0,lb);
+
+
+ for (i=1;i<n;i++){
+ slevinmul(la,R4,n,cCov,i,sig,n*cCov,1,'d');
+ slevinmul(lb,R2,n,cCov,i,gam,cCov,0,'u');
+ slevinmul(la,R1,n,cCov,i,tmp1,cCov,0,'u');
+ sinverma(gam,sig1,cCov);
+ smulma(tmp1,cCov,cCov,sig1,cCov,cCov,tmp2);
+
+ slevinmul2(tmp2,lb,i-1,n,cCov,tmp1);
+ sdecalage(tmp1,0,n,cCov,tmp1);
+ slevinsub(la,tmp1,n,cCov,i,i,la);/*a*/
+
+ /*computation of sig1 (we extract the value if sig at time i)*/
+ slevinsig(sig,i,cCov,n*cCov,sig1);
+ slevinmul(lb,R3,n,cCov,i,tmp1,cCov,0,'d');
+ sinverma(sig1,gam,cCov);
+ smulma(tmp1,cCov,cCov,gam,cCov,cCov,tmp2);
+ /*computation of k2*la (now it's la at time (i-1))*/
+ slevinmul2(tmp2,la,i-1,n,cCov,tmp1);
+ sdecalage(lb,(i-1)*(n+1)*cCov*cCov,n,cCov,tmp2);
+ slevinsub(tmp2,tmp1,n,cCov,0,i,lb);
+ }
+
+
+ free(R4);
+ free(R3);
+ free(R2);
+ free(R1);
+ free(gam);
+ free(sig1);
+ free(tmp2);
+ free(tmp1);
+}
diff --git a/2.3-1/src/c/signalProcessing/levin/testDoubleLevin.c b/2.3-1/src/c/signalProcessing/levin/testDoubleLevin.c
new file mode 100644
index 00000000..5cbd66c1
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/testDoubleLevin.c
@@ -0,0 +1,103 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "levin.h"
+
+
+
+static void dlevinaTest(void) {
+
+ int i=0;
+
+ double in[20]={0.9932627780362963676453,0.8074779896996915340424,0.8554796632379293441773,
+ 0.5031460602767765522003,0.0963323051109910011292,0.7058098311536014080048,0.8630577065050601959229,
+ 0.0076185003854334354401,0.8048951094970107078552,0.5963762304745614528656,0.1176836211234331130981,
+ 0.8010095250792801380158,0.5132340090349316596985,0.2010910022072494029999,0.7860820889472961425781,
+ 0.7865035482682287693024,0.6951530007645487785339,0.4248132123611867427826,0.3446625452488660812378,
+ 0.6497785751707851886749};
+
+ double result_la[48]={1,-0.3865652298877474413175,0,0,
+ 0,- 0.3434956227371184778185,0,0,
+ 0,- 0.5839401384584462784133,0,0,
+ 1, - 0.2005808775714553182645,0,0,
+ 1, - 0.9800896173744618744550, 1.690821697485581420750,0,
+ 0,- 0.0829753946826485844213, 0.1706850739778944525682,0,
+ 0,- 1.5024216979529190219012, - 0.2246231721723708774086,0,
+ 1, - 0.1137930279260921523354, - 0.9252347371003220022345,0,
+ 1, 0.9890664402902992202726, 0.5787159455904740124055,1.2930051366411721147642,
+ 0,- 0.8505434486601569643582,0.6053315910573954239382, - 0.5028225952598519565839,
+ 0,2.1236994816779066752588, - 2.0487578989503822946006, - 3.9701563399198689374714,
+ 1, - 1.4716550983021570164766, - 0.2144135496153387610008, 1.4891952441184541644503};
+
+ double result_sig[12]={0.9932627780362963676453, 0.8074779896996915340424,0.3628661470549920387008,0.4106795421050958294629,
+ - 0.6299693698364057237171,- 0.0327761932052800242232,0.1176836211234331130981,0.8010095250792801380158,
+ - 0.1942402590062223821654, 0.5878460460823274891240, 0.3391635613203383137204,0.1291488276492920306282};
+
+ double result_lb[48]={- 0.3981923483861428136876,1,0,0,
+ - 0.3550295998674473652024,0,0,0,
+ - 0.5696378489005990974903,0,0,0,
+ - 0.1988863157065166586968,1,0,0,
+ 1.62419596196504145702, - 0.9819754657045941526050,1,0,
+ 0.0329804805798983302623, - 0.0396945499933941681192,0,0,
+ - 0.1283118770193089619447, - 1.492334154918740996010,0,0,
+ - 0.9551334433810730883963, - 0.0265634378315470209841,1,0,
+ 1.1913835764722526810999,0.0301096362936850159286, 1.909619275538441574014,1,
+ 0.4767865147665533709365 ,- 0.2016469880890300325760,0.2878592385656049135179,0,
+ 5.1391578635011887499218, - 2.5030727471739586675881, - 6.5148738878935787965929,0,
+ - 2.8040366068494293472213 ,- 1.3523880325486907771904, 2.4607313355305917568217,1};
+
+ double la[48],lb[48],sig[12];
+
+ dlevina(3,in,10,2,la,sig,lb);
+
+ /* FIXME : assert à 10^-13 */
+ /* FIXME : sig est rangé différemment qu'à l'habitude */
+
+ for (i=0;i<48;i++){
+ if (la[i]!=0)
+ assert( (fabs(la[i]-result_la[i]) / fabs(la[i]) ) <3e-15);
+ else
+ assert( fabs(la[i]-result_la[i]) == 0);
+ }
+
+ for (i=0;i<12;i++){
+ if (sig[i]!=0)
+ assert( (fabs(sig[i]-result_sig[i]) / fabs(sig[i]) ) <3e-15);
+ else
+ assert( fabs(sig[i]-result_sig[i]) == 0);
+ }
+
+
+ for (i=0;i<48;i++){
+ if (lb[i]!=0)
+ assert( (fabs(lb[i]-result_lb[i]) / fabs(lb[i]) ) <3e-13);
+ else
+ assert( fabs(lb[i]-result_lb[i]) == 0);
+ }
+
+}
+
+
+
+static int levinTest(void) {
+ printf("\n>>>> Levin Tests\n");
+ dlevinaTest();
+ return 0;
+}
+
+int main(void) {
+ assert( levinTest()== 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/levin/testFloatLevin.c b/2.3-1/src/c/signalProcessing/levin/testFloatLevin.c
new file mode 100644
index 00000000..e692f3b7
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/testFloatLevin.c
@@ -0,0 +1,103 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "levin.h"
+
+
+
+static void dlevinaTest(void) {
+
+ int i=0;
+
+ float in[20]={0.9932627780362963676453f,0.8074779896996915340424f,0.8554796632379293441773f,
+ 0.5031460602767765522003f,0.0963323051109910011292f,0.7058098311536014080048f,0.8630577065050601959229f,
+ 0.0076185003854334354401f,0.8048951094970107078552f,0.5963762304745614528656f,0.1176836211234331130981f,
+ 0.8010095250792801380158f,0.5132340090349316596985f,0.2010910022072494029999f,0.7860820889472961425781f,
+ 0.7865035482682287693024f,0.6951530007645487785339f,0.4248132123611867427826f,0.3446625452488660812378f,
+ 0.6497785751707851886749f};
+
+ float result_la[48]={1.0f,-0.3865652298877474413175f,0.0f,0.0f,
+ 0.0f,- 0.3434956227371184778185f,0.0f,0.0f,
+ 0.0f,- 0.5839401384584462784133f,0.0f,0.0f,
+ 1.0f, - 0.2005808775714553182645f,0.0f,0.0f,
+ 1.0f, - 0.9800896173744618744550f, 1.690821697485581420750f,0.0f,
+ 0.0f,- 0.0829753946826485844213f, 0.1706850739778944525682f,0.0f,
+ 0.0f,- 1.5024216979529190219012f, - 0.2246231721723708774086f,0.0f,
+ 1.0f, - 0.1137930279260921523354f, - 0.9252347371003220022345f,0.0f,
+ 1.0f, 0.9890664402902992202726f, 0.5787159455904740124055f,1.2930051366411721147642f,
+ 0.0f,- 0.8505434486601569643582f,0.6053315910573954239382f, - 0.5028225952598519565839f,
+ 0.0f,2.1236994816779066752588f, - 2.0487578989503822946006f, - 3.9701563399198689374714f,
+ 1.0f, - 1.4716550983021570164766f, - 0.2144135496153387610008f, 1.4891952441184541644503f};
+
+ float result_sig[12]={0.9932627780362963676453f, 0.8074779896996915340424f,0.3628661470549920387008f,0.4106795421050958294629f,
+ - 0.6299693698364057237171f,- 0.0327761932052800242232f,0.1176836211234331130981f,0.8010095250792801380158f,
+ - 0.1942402590062223821654f, 0.5878460460823274891240f, 0.3391635613203383137204f,0.1291488276492920306282f};
+
+ float result_lb[48]={- 0.3981923483861428136876f,1.0f,0.0f,0.0f,
+ - 0.3550295998674473652024f,0.0f,0.0f,0.0f,
+ - 0.5696378489005990974903f,0.0f,0.0f,0.0f,
+ - 0.1988863157065166586968f,1.0f,0.0f,0.0f,
+ 1.62419596196504145702f, - 0.9819754657045941526050f,1.0f,0.0f,
+ 0.0329804805798983302623f, - 0.0396945499933941681192f,0.0f,0.0f,
+ - 0.1283118770193089619447f, - 1.492334154918740996010f,0.0f,0.0f,
+ - 0.9551334433810730883963f, - 0.0265634378315470209841f,1.0f,0.0f,
+ 1.1913835764722526810999f,0.0301096362936850159286f, 1.909619275538441574014f,1.0f,
+ 0.4767865147665533709365f ,- 0.2016469880890300325760f,0.2878592385656049135179f,0.0f,
+ 5.1391578635011887499218f, - 2.5030727471739586675881f, - 6.5148738878935787965929f,0.0f,
+ - 2.8040366068494293472213f ,- 1.3523880325486907771904f, 2.4607313355305917568217f,1.0f};
+
+ float la[48],lb[48],sig[12];
+
+ slevina(3,in,10,2,la,sig,lb);
+
+ /* FIXME : assert à 10^-5 */
+ /* FIXME : sig est rangé différemment qu'à l'habitude */
+
+ for (i=0;i<48;i++){
+ if (la[i]!=0)
+ assert( (fabs(la[i]-result_la[i]) / fabs(la[i]) ) <3e-6);
+ else
+ assert( fabs(la[i]-result_la[i]) == 0);
+ }
+
+ for (i=0;i<12;i++){
+ if (sig[i]!=0)
+ assert( (fabs(sig[i]-result_sig[i]) / fabs(sig[i]) ) <3e-6);
+ else
+ assert( fabs(sig[i]-result_sig[i]) == 0);
+ }
+
+
+ for (i=0;i<48;i++){
+ if (lb[i]!=0)
+ assert( (fabs(lb[i]-result_lb[i]) / fabs(lb[i]) ) <3e-5);
+ else
+ assert( fabs(lb[i]-result_lb[i]) == 0);
+ }
+
+}
+
+
+
+static int levinTest(void) {
+ printf("\n>>>> Levin Tests\n");
+ dlevinaTest();
+ return 0;
+}
+
+int main(void) {
+ assert( levinTest()== 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj b/2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj
new file mode 100644
index 00000000..4c0136fd
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{CAA51066-E3AC-4FE7-A330-D946A7AD6026}</ProjectGuid>
+ <RootNamespace>testDoubleLevin</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLevin.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj.filters b/2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj.filters
new file mode 100644
index 00000000..41c38c97
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/test_DoubleLevin/testDoubleLevin.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLevin.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj b/2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj
new file mode 100644
index 00000000..ca18bbcd
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FCD4F6F6-B226-4CC8-A9BD-432C36DEF855}</ProjectGuid>
+ <RootNamespace>testFloatLevin</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLevin.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj.filters b/2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj.filters
new file mode 100644
index 00000000..15bf5e2a
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/levin/test_FloatLevin/testFloatLevin.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLevin.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/Makefile.am b/2.3-1/src/c/signalProcessing/lpc2cep/Makefile.am
new file mode 100644
index 00000000..c5c8dd1e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/Makefile.am
@@ -0,0 +1,89 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008 - INRIA - Arnaud TORSET
+##
+## 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
+##
+##
+
+
+
+
+libLpc2cep_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+instdir = $(top_builddir)/lib
+
+
+pkglib_LTLIBRARIES = libLpc2cep.la
+
+HEAD = ../includes/lpc2cep.h
+
+
+libLpc2cep_la_SOURCES = $(HEAD) \
+ slpc2cepa.c \
+ dlpc2cepa.c \
+ clpc2cepa.c \
+ zlpc2cepa.c
+
+
+###############
+#### Check ####
+###############
+check_PROGRAMS = testDoubleLpc2cep testFloatLpc2cep
+
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la\
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la\
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la\
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/lpc2cep/libLpc2cep.la \
+ @LIBMATH@
+
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+
+testDoubleLpc2cep_SOURCES = testDoubleLpc2cep.c
+testDoubleLpc2cep_LDADD = $(check_LDADD)
+testDoubleLpc2cep_CFLAGS = $(check_INCLUDES)
+
+testFloatLpc2cep_SOURCES = testFloatLpc2cep.c
+testFloatLpc2cep_LDADD = $(check_LDADD)
+testFloatLpc2cep_CFLAGS = $(check_INCLUDES)
+
+
+TESTS = testDoubleLpc2cep testFloatLpc2cep
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/Makefile.in b/2.3-1/src/c/signalProcessing/lpc2cep/Makefile.in
new file mode 100644
index 00000000..da5771eb
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/Makefile.in
@@ -0,0 +1,796 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleLpc2cep$(EXEEXT) testFloatLpc2cep$(EXEEXT)
+TESTS = testDoubleLpc2cep$(EXEEXT) testFloatLpc2cep$(EXEEXT)
+subdir = src/c/signalProcessing/lpc2cep
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libLpc2cep_la_LIBADD =
+am__objects_1 =
+am_libLpc2cep_la_OBJECTS = $(am__objects_1) libLpc2cep_la-slpc2cepa.lo \
+ libLpc2cep_la-dlpc2cepa.lo libLpc2cep_la-clpc2cepa.lo \
+ libLpc2cep_la-zlpc2cepa.lo
+libLpc2cep_la_OBJECTS = $(am_libLpc2cep_la_OBJECTS)
+libLpc2cep_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLpc2cep_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleLpc2cep_OBJECTS = \
+ testDoubleLpc2cep-testDoubleLpc2cep.$(OBJEXT)
+testDoubleLpc2cep_OBJECTS = $(am_testDoubleLpc2cep_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la \
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la \
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/lpc2cep/libLpc2cep.la
+testDoubleLpc2cep_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleLpc2cep_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleLpc2cep_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+am_testFloatLpc2cep_OBJECTS = \
+ testFloatLpc2cep-testFloatLpc2cep.$(OBJEXT)
+testFloatLpc2cep_OBJECTS = $(am_testFloatLpc2cep_OBJECTS)
+testFloatLpc2cep_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatLpc2cep_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatLpc2cep_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libLpc2cep_la_SOURCES) $(testDoubleLpc2cep_SOURCES) \
+ $(testFloatLpc2cep_SOURCES)
+DIST_SOURCES = $(libLpc2cep_la_SOURCES) $(testDoubleLpc2cep_SOURCES) \
+ $(testFloatLpc2cep_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libLpc2cep_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libLpc2cep.la
+HEAD = ../includes/lpc2cep.h
+libLpc2cep_la_SOURCES = $(HEAD) \
+ slpc2cepa.c \
+ dlpc2cepa.c \
+ clpc2cepa.c \
+ zlpc2cepa.c
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/matrixOperations/inversion/libMatrixInversion.la \
+ $(top_builddir)/src/c/matrixOperations/logm/libLogm.la\
+ $(top_builddir)/src/c/matrixOperations/spec2/libSpec2.la\
+ $(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la\
+ $(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+ $(top_builddir)/src/c/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/src/c/signalProcessing/lpc2cep/libLpc2cep.la \
+ @LIBMATH@
+
+check_INCLUDES = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/signalProcessing/includes
+
+testDoubleLpc2cep_SOURCES = testDoubleLpc2cep.c
+testDoubleLpc2cep_LDADD = $(check_LDADD)
+testDoubleLpc2cep_CFLAGS = $(check_INCLUDES)
+testFloatLpc2cep_SOURCES = testFloatLpc2cep.c
+testFloatLpc2cep_LDADD = $(check_LDADD)
+testFloatLpc2cep_CFLAGS = $(check_INCLUDES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/lpc2cep/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/signalProcessing/lpc2cep/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libLpc2cep.la: $(libLpc2cep_la_OBJECTS) $(libLpc2cep_la_DEPENDENCIES)
+ $(libLpc2cep_la_LINK) -rpath $(pkglibdir) $(libLpc2cep_la_OBJECTS) $(libLpc2cep_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleLpc2cep$(EXEEXT): $(testDoubleLpc2cep_OBJECTS) $(testDoubleLpc2cep_DEPENDENCIES)
+ @rm -f testDoubleLpc2cep$(EXEEXT)
+ $(testDoubleLpc2cep_LINK) $(testDoubleLpc2cep_OBJECTS) $(testDoubleLpc2cep_LDADD) $(LIBS)
+testFloatLpc2cep$(EXEEXT): $(testFloatLpc2cep_OBJECTS) $(testFloatLpc2cep_DEPENDENCIES)
+ @rm -f testFloatLpc2cep$(EXEEXT)
+ $(testFloatLpc2cep_LINK) $(testFloatLpc2cep_OBJECTS) $(testFloatLpc2cep_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLpc2cep_la-clpc2cepa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLpc2cep_la-dlpc2cepa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLpc2cep_la-slpc2cepa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLpc2cep_la-zlpc2cepa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libLpc2cep_la-slpc2cepa.lo: slpc2cepa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -MT libLpc2cep_la-slpc2cepa.lo -MD -MP -MF $(DEPDIR)/libLpc2cep_la-slpc2cepa.Tpo -c -o libLpc2cep_la-slpc2cepa.lo `test -f 'slpc2cepa.c' || echo '$(srcdir)/'`slpc2cepa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLpc2cep_la-slpc2cepa.Tpo $(DEPDIR)/libLpc2cep_la-slpc2cepa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slpc2cepa.c' object='libLpc2cep_la-slpc2cepa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -c -o libLpc2cep_la-slpc2cepa.lo `test -f 'slpc2cepa.c' || echo '$(srcdir)/'`slpc2cepa.c
+
+libLpc2cep_la-dlpc2cepa.lo: dlpc2cepa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -MT libLpc2cep_la-dlpc2cepa.lo -MD -MP -MF $(DEPDIR)/libLpc2cep_la-dlpc2cepa.Tpo -c -o libLpc2cep_la-dlpc2cepa.lo `test -f 'dlpc2cepa.c' || echo '$(srcdir)/'`dlpc2cepa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLpc2cep_la-dlpc2cepa.Tpo $(DEPDIR)/libLpc2cep_la-dlpc2cepa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlpc2cepa.c' object='libLpc2cep_la-dlpc2cepa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -c -o libLpc2cep_la-dlpc2cepa.lo `test -f 'dlpc2cepa.c' || echo '$(srcdir)/'`dlpc2cepa.c
+
+libLpc2cep_la-clpc2cepa.lo: clpc2cepa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -MT libLpc2cep_la-clpc2cepa.lo -MD -MP -MF $(DEPDIR)/libLpc2cep_la-clpc2cepa.Tpo -c -o libLpc2cep_la-clpc2cepa.lo `test -f 'clpc2cepa.c' || echo '$(srcdir)/'`clpc2cepa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLpc2cep_la-clpc2cepa.Tpo $(DEPDIR)/libLpc2cep_la-clpc2cepa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clpc2cepa.c' object='libLpc2cep_la-clpc2cepa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -c -o libLpc2cep_la-clpc2cepa.lo `test -f 'clpc2cepa.c' || echo '$(srcdir)/'`clpc2cepa.c
+
+libLpc2cep_la-zlpc2cepa.lo: zlpc2cepa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -MT libLpc2cep_la-zlpc2cepa.lo -MD -MP -MF $(DEPDIR)/libLpc2cep_la-zlpc2cepa.Tpo -c -o libLpc2cep_la-zlpc2cepa.lo `test -f 'zlpc2cepa.c' || echo '$(srcdir)/'`zlpc2cepa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libLpc2cep_la-zlpc2cepa.Tpo $(DEPDIR)/libLpc2cep_la-zlpc2cepa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zlpc2cepa.c' object='libLpc2cep_la-zlpc2cepa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLpc2cep_la_CFLAGS) $(CFLAGS) -c -o libLpc2cep_la-zlpc2cepa.lo `test -f 'zlpc2cepa.c' || echo '$(srcdir)/'`zlpc2cepa.c
+
+testDoubleLpc2cep-testDoubleLpc2cep.o: testDoubleLpc2cep.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLpc2cep_CFLAGS) $(CFLAGS) -MT testDoubleLpc2cep-testDoubleLpc2cep.o -MD -MP -MF $(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Tpo -c -o testDoubleLpc2cep-testDoubleLpc2cep.o `test -f 'testDoubleLpc2cep.c' || echo '$(srcdir)/'`testDoubleLpc2cep.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Tpo $(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLpc2cep.c' object='testDoubleLpc2cep-testDoubleLpc2cep.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLpc2cep_CFLAGS) $(CFLAGS) -c -o testDoubleLpc2cep-testDoubleLpc2cep.o `test -f 'testDoubleLpc2cep.c' || echo '$(srcdir)/'`testDoubleLpc2cep.c
+
+testDoubleLpc2cep-testDoubleLpc2cep.obj: testDoubleLpc2cep.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLpc2cep_CFLAGS) $(CFLAGS) -MT testDoubleLpc2cep-testDoubleLpc2cep.obj -MD -MP -MF $(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Tpo -c -o testDoubleLpc2cep-testDoubleLpc2cep.obj `if test -f 'testDoubleLpc2cep.c'; then $(CYGPATH_W) 'testDoubleLpc2cep.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLpc2cep.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Tpo $(DEPDIR)/testDoubleLpc2cep-testDoubleLpc2cep.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleLpc2cep.c' object='testDoubleLpc2cep-testDoubleLpc2cep.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLpc2cep_CFLAGS) $(CFLAGS) -c -o testDoubleLpc2cep-testDoubleLpc2cep.obj `if test -f 'testDoubleLpc2cep.c'; then $(CYGPATH_W) 'testDoubleLpc2cep.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleLpc2cep.c'; fi`
+
+testFloatLpc2cep-testFloatLpc2cep.o: testFloatLpc2cep.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLpc2cep_CFLAGS) $(CFLAGS) -MT testFloatLpc2cep-testFloatLpc2cep.o -MD -MP -MF $(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Tpo -c -o testFloatLpc2cep-testFloatLpc2cep.o `test -f 'testFloatLpc2cep.c' || echo '$(srcdir)/'`testFloatLpc2cep.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Tpo $(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLpc2cep.c' object='testFloatLpc2cep-testFloatLpc2cep.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLpc2cep_CFLAGS) $(CFLAGS) -c -o testFloatLpc2cep-testFloatLpc2cep.o `test -f 'testFloatLpc2cep.c' || echo '$(srcdir)/'`testFloatLpc2cep.c
+
+testFloatLpc2cep-testFloatLpc2cep.obj: testFloatLpc2cep.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLpc2cep_CFLAGS) $(CFLAGS) -MT testFloatLpc2cep-testFloatLpc2cep.obj -MD -MP -MF $(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Tpo -c -o testFloatLpc2cep-testFloatLpc2cep.obj `if test -f 'testFloatLpc2cep.c'; then $(CYGPATH_W) 'testFloatLpc2cep.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLpc2cep.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Tpo $(DEPDIR)/testFloatLpc2cep-testFloatLpc2cep.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatLpc2cep.c' object='testFloatLpc2cep-testFloatLpc2cep.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatLpc2cep_CFLAGS) $(CFLAGS) -c -o testFloatLpc2cep-testFloatLpc2cep.obj `if test -f 'testFloatLpc2cep.c'; then $(CYGPATH_W) 'testFloatLpc2cep.c'; else $(CYGPATH_W) '$(srcdir)/testFloatLpc2cep.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/clpc2cepa.c b/2.3-1/src/c/signalProcessing/lpc2cep/clpc2cepa.c
new file mode 100644
index 00000000..34b04c0c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/clpc2cepa.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "lpc2cep.h"
+#include "fft.h"
+#include "ifft.h"
+#include "logm.h"
+
+void clpc2cepa(floatComplex *in, int size, floatComplex*out){
+ int i;
+
+ for (i=0;i<size*size;i++)
+ out[i]=in[i];
+
+ cfftma(out,size,size,out);
+ clogma(out,size,out);
+ cifftma(out,size,size,out);
+
+}
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/dlpc2cepa.c b/2.3-1/src/c/signalProcessing/lpc2cep/dlpc2cepa.c
new file mode 100644
index 00000000..f79b258f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/dlpc2cepa.c
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "lpc2cep.h"
+#include "fft.h"
+#include "logm.h"
+#include "ifft.h"
+
+void dlpc2cepa(double* in, int size, double* out){
+ int i;
+ doubleComplex *inCpx;
+
+ inCpx = (doubleComplex *) malloc ((unsigned int)(size*size)*sizeof(doubleComplex));
+
+ for (i=0;i<size*size;i++)
+ {
+ inCpx[i]=DoubleComplex(in[i],0);
+ }
+
+ zfftma(inCpx,size, size, inCpx);
+ zlogma(inCpx,size,inCpx);
+ zifftma(inCpx,size, size, inCpx);
+
+ zreala(inCpx,size*size,out);
+
+ free(inCpx);
+}
+
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/slpc2cepa.c b/2.3-1/src/c/signalProcessing/lpc2cep/slpc2cepa.c
new file mode 100644
index 00000000..23857198
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/slpc2cepa.c
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <stdlib.h>
+#include "lpc2cep.h"
+#include "fft.h"
+#include "ifft.h"
+#include "logm.h"
+
+void slpc2cepa(float *in, int size, float*out){
+ int i;
+ floatComplex* inCpx;
+
+ /* Copy in in a FloatComplex*/
+ inCpx=(floatComplex*)malloc((unsigned int)(size*size)*sizeof(floatComplex));
+ for (i=0;i<size*size;i++)
+ {
+ inCpx[i]=FloatComplex(in[i],0);
+ }
+
+ cfftma(inCpx,size,size,inCpx);
+ clogma(inCpx,size,inCpx);
+ cifftma(inCpx,size,size,inCpx);
+
+ creala(inCpx,size*size,out);
+
+ free(inCpx);
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/testDoubleLpc2cep.c b/2.3-1/src/c/signalProcessing/lpc2cep/testDoubleLpc2cep.c
new file mode 100644
index 00000000..29c38598
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/testDoubleLpc2cep.c
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "lpc2cep.h"
+
+static void dlpc2cepaTest(void){
+
+}
+
+static void zlpc2cepaTest(void){
+
+}
+
+static int lpc2cepTest(void){
+ dlpc2cepaTest();
+ zlpc2cepaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert(lpc2cepTest()==0);
+ return 0;
+}
+
+
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/testFloatLpc2cep.c b/2.3-1/src/c/signalProcessing/lpc2cep/testFloatLpc2cep.c
new file mode 100644
index 00000000..72d07268
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/testFloatLpc2cep.c
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include "lpc2cep.h"
+
+static void slpc2cepaTest(void){
+
+}
+
+static void clpc2cepaTest(void){
+
+}
+
+static int lpc2cepTest(void){
+ slpc2cepaTest();
+ clpc2cepaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert(lpc2cepTest()==0);
+ return 0;
+}
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj b/2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj
new file mode 100644
index 00000000..a0e86cdd
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{EDF4F58C-2776-49A0-9F2D-CAE9A8979CE1}</ProjectGuid>
+ <RootNamespace>testDoubleLpc2cep</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLpc2cep.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj.filters b/2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj.filters
new file mode 100644
index 00000000..24f567ed
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/test_DoubleLpc2cep/testDoubleLpc2cep.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleLpc2cep.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj b/2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj
new file mode 100644
index 00000000..e02f20f2
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F37FAC6D-8C48-4F25-8E8D-AB0BF1A8641F}</ProjectGuid>
+ <RootNamespace>testFloatLpc2cep</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLpc2cep.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\signalProcessing.vcxproj">
+ <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj.filters b/2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj.filters
new file mode 100644
index 00000000..a3e40f98
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/test_FloatLpc2cep/testFloatLpc2cep.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatLpc2cep.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/lpc2cep/zlpc2cepa.c b/2.3-1/src/c/signalProcessing/lpc2cep/zlpc2cepa.c
new file mode 100644
index 00000000..8c5640d8
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/lpc2cep/zlpc2cepa.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "lpc2cep.h"
+#include "fft.h"
+#include "ifft.h"
+#include "logm.h"
+
+void zlpc2cepa(doubleComplex* in, int size, doubleComplex* out){
+ int i;
+
+ for (i=0;i<size*size;i++)
+ out[i]=in[i];
+
+
+ zfftma(out,size, size, out);
+ zlogma(out,size,out);
+ zifftma(out,size, size, out);
+
+}
+
+
+
+
diff --git a/2.3-1/src/c/signalProcessing/signalProcessing.vcxproj b/2.3-1/src/c/signalProcessing/signalProcessing.vcxproj
new file mode 100644
index 00000000..c2d22c16
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/signalProcessing.vcxproj
@@ -0,0 +1,607 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F7E8DF1B-CC81-4B2A-B5F0-1A247BE59CC4}</ProjectGuid>
+ <RootNamespace>signalProcessing</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../matrixOperations/includes;../auxiliaryFunctions/includes;../../../includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SIGNALPROCESSING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../matrixOperations/includes;../auxiliaryFunctions/includes;../../../includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SIGNALPROCESSING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../matrixOperations/includes;../auxiliaryFunctions/includes;../../../includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SIGNALPROCESSING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../matrixOperations/includes;../auxiliaryFunctions/includes;../../../includes;../elementaryFunctions/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SIGNALPROCESSING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="conv\cconva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv\dconva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv\sconva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv\zconva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv2d\cconv2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv2d\dconv2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv2d\sconv2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="conv2d\zconv2da.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="crossCorr\ccrossCorra.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="crossCorr\dcrossCorra.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="crossCorr\scrossCorra.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="crossCorr\zcrossCorra.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\cfftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\dfft2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\dfftbi.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\dfftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\dfftmx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\fft842.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\r2tx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\r4tx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\r8tx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\sfftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fft\zfftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\ccolumnfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\cfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\crowfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\dcolumnfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\dfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\drowfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\scolumnfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\sfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\srowfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\zcolumnfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\zfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="fftshift\zrowfftshifta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="hilbert\dhilberta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="hilbert\dhilberts.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="hilbert\shilberta.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="hilbert\shilberts.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\cifftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\diffbi_lavraie.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\difft2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\difftbi.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\difftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\difftmx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\ifft842.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\ir2tx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\ir4tx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\ir8tx.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\sifftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="ifft\zifftma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\cleva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\cleva2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\dleva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\dleva2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\sleva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\sleva2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\zleva.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lev\zleva2.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\clpc2cepa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\dlpc2cepa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\slpc2cepa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\zlpc2cepa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="levin\dlevina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="levin\levinUtils.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="levin\slevina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="conv\Makefile.am" />
+ <None Include="conv2d\Makefile.am" />
+ <None Include="crossCorr\Makefile.am" />
+ <None Include="fft\Makefile.am" />
+ <None Include="fftshift\Makefile.am" />
+ <None Include="hilbert\Makefile.am" />
+ <None Include="ifft\Makefile.am" />
+ <None Include="lev\Makefile.am" />
+ <None Include="lpc2cep\Makefile.am" />
+ <None Include="levin\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\conv.h" />
+ <ClInclude Include="includes\conv2d.h" />
+ <ClInclude Include="includes\crossCorr.h" />
+ <ClInclude Include="includes\dynlib_signalprocessing.h" />
+ <ClInclude Include="includes\fft.h" />
+ <ClInclude Include="includes\fftshift.h" />
+ <ClInclude Include="includes\hilbert.h" />
+ <ClInclude Include="includes\ifft.h" />
+ <ClInclude Include="includes\lev.h" />
+ <ClInclude Include="includes\levin.h" />
+ <ClInclude Include="includes\lpc2cep.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\bin\blasplus.lib" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\auxiliaryFunctions\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\matrixOperations\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\operations\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/signalProcessing/signalProcessing.vcxproj.filters b/2.3-1/src/c/signalProcessing/signalProcessing.vcxproj.filters
new file mode 100644
index 00000000..6ed93df8
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/signalProcessing.vcxproj.filters
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\cepstrum">
+ <UniqueIdentifier>{ebc6c365-0c2d-4024-b959-0b6fa64246cb}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\conv">
+ <UniqueIdentifier>{00836675-12ac-47b7-9ac6-0196bb33333c}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\conv2d">
+ <UniqueIdentifier>{4f72c2fb-c271-459e-8502-da2f7c962c68}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\crossCorr">
+ <UniqueIdentifier>{1338e5a6-e007-4d3b-828b-b25eff140442}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\fft">
+ <UniqueIdentifier>{48ddaeb8-14d4-4c8e-868d-7e52f145304a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\fftshift">
+ <UniqueIdentifier>{97133a42-f4a2-47de-a3bf-e764b23ec51d}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\hilbert">
+ <UniqueIdentifier>{116e0cb5-bcb1-4a9d-bd89-7b5098f5b149}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\ifft">
+ <UniqueIdentifier>{1756fe63-6e90-4f05-88fa-f6fbb81d2ef1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\lev">
+ <UniqueIdentifier>{3c3ce86a-8e15-4f1b-bc56-80a84d2d5c44}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\lpc2cep">
+ <UniqueIdentifier>{4c335f24-03ef-4a1f-b409-c18af44c5a53}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\levin">
+ <UniqueIdentifier>{f54c4b75-354f-422d-ab7c-57697189b855}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="conv\cconva.c">
+ <Filter>Source Files\conv</Filter>
+ </ClCompile>
+ <ClCompile Include="conv\dconva.c">
+ <Filter>Source Files\conv</Filter>
+ </ClCompile>
+ <ClCompile Include="conv\sconva.c">
+ <Filter>Source Files\conv</Filter>
+ </ClCompile>
+ <ClCompile Include="conv\zconva.c">
+ <Filter>Source Files\conv</Filter>
+ </ClCompile>
+ <ClCompile Include="conv2d\cconv2da.c">
+ <Filter>Source Files\conv2d</Filter>
+ </ClCompile>
+ <ClCompile Include="conv2d\dconv2da.c">
+ <Filter>Source Files\conv2d</Filter>
+ </ClCompile>
+ <ClCompile Include="conv2d\sconv2da.c">
+ <Filter>Source Files\conv2d</Filter>
+ </ClCompile>
+ <ClCompile Include="conv2d\zconv2da.c">
+ <Filter>Source Files\conv2d</Filter>
+ </ClCompile>
+ <ClCompile Include="crossCorr\ccrossCorra.c">
+ <Filter>Source Files\crossCorr</Filter>
+ </ClCompile>
+ <ClCompile Include="crossCorr\dcrossCorra.c">
+ <Filter>Source Files\crossCorr</Filter>
+ </ClCompile>
+ <ClCompile Include="crossCorr\scrossCorra.c">
+ <Filter>Source Files\crossCorr</Filter>
+ </ClCompile>
+ <ClCompile Include="crossCorr\zcrossCorra.c">
+ <Filter>Source Files\crossCorr</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\cfftma.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\dfft2.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\dfftbi.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\dfftma.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\dfftmx.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\fft842.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\r2tx.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\r4tx.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\r8tx.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\sfftma.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fft\zfftma.c">
+ <Filter>Source Files\fft</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\ccolumnfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\cfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\crowfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\dcolumnfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\dfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\drowfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\scolumnfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\sfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\srowfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\zcolumnfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\zfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="fftshift\zrowfftshifta.c">
+ <Filter>Source Files\fftshift</Filter>
+ </ClCompile>
+ <ClCompile Include="hilbert\dhilberta.c">
+ <Filter>Source Files\hilbert</Filter>
+ </ClCompile>
+ <ClCompile Include="hilbert\dhilberts.c">
+ <Filter>Source Files\hilbert</Filter>
+ </ClCompile>
+ <ClCompile Include="hilbert\shilberta.c">
+ <Filter>Source Files\hilbert</Filter>
+ </ClCompile>
+ <ClCompile Include="hilbert\shilberts.c">
+ <Filter>Source Files\hilbert</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\cifftma.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\diffbi_lavraie.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\difft2.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\difftbi.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\difftma.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\difftmx.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\ifft842.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\ir2tx.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\ir4tx.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\ir8tx.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\sifftma.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="ifft\zifftma.c">
+ <Filter>Source Files\ifft</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\cleva.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\cleva2.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\dleva.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\dleva2.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\sleva.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\sleva2.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\zleva.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lev\zleva2.c">
+ <Filter>Source Files\lev</Filter>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\clpc2cepa.c">
+ <Filter>Source Files\lpc2cep</Filter>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\dlpc2cepa.c">
+ <Filter>Source Files\lpc2cep</Filter>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\slpc2cepa.c">
+ <Filter>Source Files\lpc2cep</Filter>
+ </ClCompile>
+ <ClCompile Include="lpc2cep\zlpc2cepa.c">
+ <Filter>Source Files\lpc2cep</Filter>
+ </ClCompile>
+ <ClCompile Include="levin\dlevina.c">
+ <Filter>Source Files\levin</Filter>
+ </ClCompile>
+ <ClCompile Include="levin\levinUtils.c">
+ <Filter>Source Files\levin</Filter>
+ </ClCompile>
+ <ClCompile Include="levin\slevina.c">
+ <Filter>Source Files\levin</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="conv\Makefile.am">
+ <Filter>Source Files\conv</Filter>
+ </None>
+ <None Include="conv2d\Makefile.am">
+ <Filter>Source Files\conv2d</Filter>
+ </None>
+ <None Include="crossCorr\Makefile.am">
+ <Filter>Source Files\crossCorr</Filter>
+ </None>
+ <None Include="fft\Makefile.am">
+ <Filter>Source Files\fft</Filter>
+ </None>
+ <None Include="fftshift\Makefile.am">
+ <Filter>Source Files\fftshift</Filter>
+ </None>
+ <None Include="hilbert\Makefile.am">
+ <Filter>Source Files\hilbert</Filter>
+ </None>
+ <None Include="ifft\Makefile.am">
+ <Filter>Source Files\ifft</Filter>
+ </None>
+ <None Include="lev\Makefile.am">
+ <Filter>Source Files\lev</Filter>
+ </None>
+ <None Include="lpc2cep\Makefile.am">
+ <Filter>Source Files\lpc2cep</Filter>
+ </None>
+ <None Include="levin\Makefile.am">
+ <Filter>Source Files\levin</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\conv.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\conv2d.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\crossCorr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_signalprocessing.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\fft.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\fftshift.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\hilbert.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\ifft.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\lev.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\levin.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\lpc2cep.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\bin\blasplus.lib" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/Makefile.am b/2.3-1/src/c/statisticsFunctions/Makefile.am
new file mode 100644
index 00000000..e87f3868
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/Makefile.am
@@ -0,0 +1,21 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+SUBDIRS= mean \
+ sum\
+ variance\
+ prod\
+ min\
+ max\
+ meanf\
+ variancef\
+ stdevf
diff --git a/2.3-1/src/c/statisticsFunctions/Makefile.in b/2.3-1/src/c/statisticsFunctions/Makefile.in
new file mode 100644
index 00000000..6df9918c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/Makefile.in
@@ -0,0 +1,569 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/statisticsFunctions
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = mean \
+ sum\
+ variance\
+ prod\
+ min\
+ max\
+ meanf\
+ variancef\
+ stdevf
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/includes/dynlib_statisticsfunctions.h b/2.3-1/src/c/statisticsFunctions/includes/dynlib_statisticsfunctions.h
new file mode 100644
index 00000000..b6dab50f
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/dynlib_statisticsfunctions.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_STATISTICSFUNCTIONS_H__
+#define __DYNLIB_STATISTICSFUNCTIONS_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if STATISTICSFUNCTIONS_EXPORTS
+ #define EXTERN_STATFUNC __declspec (dllexport)
+ #else
+ #define EXTERN_STATFUNC __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_STATFUNC
+#endif
+
+#endif /* __DYNLIB_STATISTICSFUNCTIONS_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/mean.h b/2.3-1/src/c/statisticsFunctions/includes/mean.h
new file mode 100644
index 00000000..d87c4ca5
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/mean.h
@@ -0,0 +1,99 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __MEAN_H__
+#define __MEAN_H__
+
+#include "dynlib_statisticsfunctions.h"
+#include "division.h"
+#include "addition.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Mean of a scalar element, just returns it
+*/
+#define smeans(in) in
+#define srowmeans(in) in
+#define scolumnmeans(in) in
+#define smatlabmeans(in) in
+
+/*
+** \brief Mean of a scalar element, just returns it
+*/
+#define dmeans(in) in
+#define drowmeans(in) in
+#define dcolumnmeans(in) in
+#define dmatlabmeans(in) in
+
+/*
+** \brief Mean of a scalar element, just returns it
+*/
+#define cmeans(in) in
+#define crowmeans(in) in
+#define ccolumnmeans(in) in
+#define cmatlabmeans(in) in
+
+/*
+** \brief Mean of a scalar element, just returns it
+*/
+#define zmeans(in) in
+#define zrowmeans(in) in
+#define zcolumnmeans(in) in
+#define zmatlabmeans(in) in
+
+/*
+** \brief Mean of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the mean.
+*/
+EXTERN_STATFUNC float smeana(float *in, int size);
+EXTERN_STATFUNC void srowmeana(float *in, int lines, int columns, float* out);
+EXTERN_STATFUNC void scolumnmeana(float *in, int lines, int columns, float* out);
+
+/*
+** \brief Mean of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the mean.
+*/
+EXTERN_STATFUNC double dmeana(double *in, int size);
+EXTERN_STATFUNC void drowmeana(double *in, int lines, int columns, double* out);
+EXTERN_STATFUNC void dcolumnmeana(double *in, int lines, int columns, double* out);
+
+/*
+** \brief Mean of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the mean.
+*/
+EXTERN_STATFUNC floatComplex cmeana(floatComplex *in, int size);
+EXTERN_STATFUNC void crowmeana(floatComplex *in, int lines, int columns, floatComplex* out);
+EXTERN_STATFUNC void ccolumnmeana(floatComplex *in, int lines, int columns, floatComplex* out);
+
+/*
+** \brief Mean of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the mean.
+*/
+EXTERN_STATFUNC doubleComplex zmeana(doubleComplex *in, int size);
+EXTERN_STATFUNC void zrowmeana(doubleComplex *in, int lines, int columns, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnmeana(doubleComplex *in, int lines, int columns, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MEAN_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/meanf.h b/2.3-1/src/c/statisticsFunctions/includes/meanf.h
new file mode 100644
index 00000000..c0d687c6
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/meanf.h
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2009 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __MEANF_H__
+#define __MEANF_H__
+
+#include "dynlib_statisticsfunctions.h"
+#include "division.h"
+#include "addition.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Meanf of a scalar element, just returns it
+*/
+#define smeanfs(in1,in2) in1
+#define srowmeanfs(in1,in2) in1
+#define scolumnmeanfs(in1,in2) in1
+#define smatlabmeanfs(in1,in2) in1
+
+/*
+** \brief Meanf of a scalar element, just returns it
+*/
+#define dmeanfs(in1,in2) in1
+#define drowmeanfs(in1,in2) in1
+#define dcolumnmeanfs(in1,in2) in1
+#define dmatlabmeanfs(in1,in2) in1
+
+/*
+** \brief Meanf of a scalar element, just returns it
+*/
+#define cmeanfs(in1,in2) in1
+#define crowmeanfs(in1,in2) in1
+#define ccolumnmeanfs(in1,in2) in1
+#define cmatlabmeanfs(in1,in2) in1
+
+/*
+** \brief Meanf of a scalar element, just returns it
+*/
+#define zmeanfs(in1,in2) in1
+#define zrowmeanfs(in1,in2) in1
+#define zcolumnmeanfs(in1,in2) in1
+#define zmatlabmeanfs(in1,in2) in1
+
+/*
+** \brief Meanf of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the meanf.
+*/
+EXTERN_STATFUNC float smeanfa(float *in1, int size, float *in2);
+EXTERN_STATFUNC void srowmeanfa(float *in1, int lines, int columns, float *in2, float* out);
+EXTERN_STATFUNC void scolumnmeanfa(float *in1, int lines, int columns, float *in2, float* out);
+
+/*
+** \brief Meanf of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the meanf.
+*/
+EXTERN_STATFUNC double dmeanfa(double *in1, int size, double *in2);
+EXTERN_STATFUNC void drowmeanfa(double *in1, int lines, int columns, double *in2, double* out);
+EXTERN_STATFUNC void dcolumnmeanfa(double *in1, int lines, int columns, double *in2, double* out);
+
+/*
+** \brief Meanf of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the meanf.
+*/
+EXTERN_STATFUNC floatComplex cmeanfa(floatComplex *in1, int size, floatComplex *in2);
+EXTERN_STATFUNC void crowmeanfa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex* out);
+EXTERN_STATFUNC void ccolumnmeanfa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex* out);
+
+/*
+** \brief Meanf of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the meanf.
+*/
+EXTERN_STATFUNC doubleComplex zmeanfa(doubleComplex *in1, int size, doubleComplex *in2);
+EXTERN_STATFUNC void zrowmeanfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnmeanfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex* out);
+
+/* for convenience with interface */
+doubleComplex zmeanfzd (doubleComplex* in1 ,int lines , int columns , double* in2);
+doubleComplex zmeanfdz (double* in1 ,int lines , int columns , doubleComplex* in2);
+
+floatComplex cmeanfcs (floatComplex* in1 ,int lines , int columns , float* in2);
+floatComplex cmeanfsc (float* in1 ,int lines , int columns , floatComplex* in2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__MEAN_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/prod.h b/2.3-1/src/c/statisticsFunctions/includes/prod.h
new file mode 100644
index 00000000..a5fde84c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/prod.h
@@ -0,0 +1,100 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __PROD_H__
+#define __PROD_H__
+
+#include "dynlib_statisticsfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define sprods(in) in
+#define srowprods(in) in
+#define scolumnprods(in) in
+#define smatlabprods(in) in
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define dprods(in) in
+#define drowprods(in) in
+#define dcolumnprods(in) in
+#define dmatlabprods(in) in
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define cprods(in) in
+#define crowprods(in) in
+#define ccolumnprods(in) in
+#define cmatlabprods(in) in
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define zprods(in) in
+#define zrowprods(in) in
+#define zcolumnprods(in) in
+#define zmatlabprods(in) in
+
+/*
+** \brief Sum of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the prod.
+*/
+EXTERN_STATFUNC float sproda(float *in, int size);
+EXTERN_STATFUNC void srowproda(float *in, int lines, int columns, float* out);
+EXTERN_STATFUNC void scolumnproda(float *in, int lines, int columns, float* out);
+
+/*
+** \brief Sum of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the prod.
+*/
+EXTERN_STATFUNC double dproda(double *in, int size);
+EXTERN_STATFUNC void drowproda(double *in, int lines, int columns, double* out);
+EXTERN_STATFUNC void dcolumnproda(double *in, int lines, int columns, double* out);
+
+/*
+** \brief Sum of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the prod.
+*/
+EXTERN_STATFUNC floatComplex cproda(floatComplex *in, int size);
+EXTERN_STATFUNC void crowproda(floatComplex *in, int lines, int columns, floatComplex* out);
+EXTERN_STATFUNC void ccolumnproda(floatComplex *in, int lines, int columns, floatComplex* out);
+
+/*
+** \brief Sum of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the prod.
+*/
+EXTERN_STATFUNC doubleComplex zproda(doubleComplex *in, int size);
+EXTERN_STATFUNC void zrowproda(doubleComplex *in, int lines, int columns, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnproda(doubleComplex *in, int lines, int columns, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__PROD_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/statMax.h b/2.3-1/src/c/statisticsFunctions/includes/statMax.h
new file mode 100644
index 00000000..8e5d12b9
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/statMax.h
@@ -0,0 +1,130 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __STAT_MAX_H__
+#define __STAT_MAX_H__
+
+#include "dynlib_statisticsfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//#define max(a,b) (a>=b?a:b)
+
+#define maxa(a,size1,b,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=max(a[i],b[i]);\
+ }
+
+/*
+** \brief max of a scalar element, just returns it
+*/
+#define smaxs(in) in
+#define srowmaxs(in) in
+#define scolumnmaxs(in) in
+#define smatlabmaxs(in) in
+
+/*
+** \brief max of a scalar element, just returns it
+*/
+#define dmaxs(in) in
+#define drowmaxs(in) in
+#define dcolumnmaxs(in) in
+#define dmatlabmaxs(in) in
+
+/*
+** \brief max of a scalar element, just returns it
+*/
+#define u8maxs(in) (uint8)in
+#define u8rowmaxs(in) (uint8)in
+#define u8columnmaxs(in) (uint8)in
+#define u8matlabmaxs(in) (uint8)in
+#define u16maxs(in) (uint16)in
+#define u16rowmaxs(in) (uint16)in
+#define u16columnmaxs(in) (uint16)in
+#define u16matlabmaxs(in) (uint16)in
+#define i8maxs(in) (int8)in
+#define i8rowmaxs(in) (int8)in
+#define i8columnmaxs(in) (int8)in
+#define i8matlabmaxs(in) (int8)in
+#define i16maxs(in) (int16)in
+#define i16rowmaxs(in) (int16)in
+#define i16columnmaxs(in) (int16)in
+#define i16matlabmaxs(in) (int16)in
+
+
+
+/*
+** \brief Sum of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC float smaxa(float *in, int size);
+EXTERN_STATFUNC void srowmaxa(float *in, int lines, int columns, float* out);
+EXTERN_STATFUNC void scolumnmaxa(float *in, int lines, int columns, float* out);
+
+/*
+** \brief Sum of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC double dmaxa(double *in, int size);
+EXTERN_STATFUNC void drowmaxa(double *in, int lines, int columns, double* out);
+EXTERN_STATFUNC void dcolumnmaxa(double *in, int lines, int columns, double* out);
+
+/*
+** \brief Sum of a uint8 array
+** \param in the uint8 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC uint8 u8maxa(uint8 *in, int size);
+EXTERN_STATFUNC void u8rowmaxa(uint8 *in, int lines, int columns, uint8* out);
+EXTERN_STATFUNC void u8columnmaxa(uint8 *in, int lines, int columns, uint8* out);
+
+/*
+** \brief Sum of a uint16 array
+** \param in the uint16 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC uint16 u16maxa(uint16 *in, int size);
+EXTERN_STATFUNC void u16rowmaxa(uint16 *in, int lines, int columns, uint16* out);
+EXTERN_STATFUNC void u16columnmaxa(uint16 *in, int lines, int columns, uint16* out);
+
+/*
+** \brief Sum of a int8 array
+** \param in the int8 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC int8 i8maxa(int8 *in, int size);
+EXTERN_STATFUNC void i8rowmaxa(int8 *in, int lines, int columns, int8* out);
+EXTERN_STATFUNC void i8columnmaxa(int8 *in, int lines, int columns, int8* out);
+
+/*
+** \brief Sum of a int16 array
+** \param in the int16 array to process
+** \param size, the size of the array
+** \returns the max.
+*/
+EXTERN_STATFUNC int16 i16maxa(int16 *in, int size);
+EXTERN_STATFUNC void i16rowmaxa(int16 *in, int lines, int columns, int16* out);
+EXTERN_STATFUNC void i16columnmaxa(int16 *in, int lines, int columns, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+#endif /* !__STAT_MAX_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/statMin.h b/2.3-1/src/c/statisticsFunctions/includes/statMin.h
new file mode 100644
index 00000000..f3b8268a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/statMin.h
@@ -0,0 +1,130 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __STAT_MIN_H__
+#define __STAT_MIN_H__
+
+#include "dynlib_statisticsfunctions.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//#define min(a,b) (a<=b?a:b)
+
+#define mina(a,size1,b,size2,out) {int i;\
+ for (i=0;i<size1[0]*size2[1];i++) out[i]=min(a[i],b[i]);\
+ }
+
+/*
+** \brief min of a scalar element, just returns it
+*/
+#define smins(in) in
+#define srowmins(in) in
+#define scolumnmins(in) in
+#define smatlabmins(in) in
+
+/*
+** \brief min of a scalar element, just returns it
+*/
+#define dmins(in) in
+#define drowmins(in) in
+#define dcolumnmins(in) in
+#define dmatlabmins(in) in
+
+/*
+** \brief min of a scalar element, just returns it
+*/
+#define u8mins(in) (uint8)in
+#define u8rowmins(in) (uint8)in
+#define u8columnmins(in) (uint8)in
+#define u8matlabmins(in) (uint8)in
+#define u16mins(in) (uint16)in
+#define u16rowmins(in) (uint16)in
+#define u16columnmins(in) (uint16)in
+#define u16matlabmins(in) (uint16)in
+#define i8mins(in) (int8)in
+#define i8rowmins(in) (int8)in
+#define i8columnmins(in) (int8)in
+#define i8matlabmins(in) (int8)in
+#define i16mins(in) (int16)in
+#define i16rowmins(in) (int16)in
+#define i16columnmins(in) (int16)in
+#define i16matlabmins(in) (int16)in
+
+
+
+/*
+** \brief Sum of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC float smina(float *in, int size);
+EXTERN_STATFUNC void srowmina(float *in, int lines, int columns, float* out);
+EXTERN_STATFUNC void scolumnmina(float *in, int lines, int columns, float* out);
+
+/*
+** \brief Sum of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC double dmina(double *in, int size);
+EXTERN_STATFUNC void drowmina(double *in, int lines, int columns, double* out);
+EXTERN_STATFUNC void dcolumnmina(double *in, int lines, int columns, double* out);
+
+/*
+** \brief Sum of a uint8 array
+** \param in the uint8 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC uint8 u8mina(uint8 *in, int size);
+EXTERN_STATFUNC void u8rowmina(uint8 *in, int lines, int columns, uint8* out);
+EXTERN_STATFUNC void u8columnmina(uint8 *in, int lines, int columns, uint8* out);
+
+/*
+** \brief Sum of a uint16 array
+** \param in the uint16 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC uint16 u16mina(uint16 *in, int size);
+EXTERN_STATFUNC void u16rowmina(uint16 *in, int lines, int columns, uint16* out);
+EXTERN_STATFUNC void u16columnmina(uint16 *in, int lines, int columns, uint16* out);
+
+/*
+** \brief Sum of a int8 array
+** \param in the int8 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC int8 i8mina(int8 *in, int size);
+EXTERN_STATFUNC void i8rowmina(int8 *in, int lines, int columns, int8* out);
+EXTERN_STATFUNC void i8columnmina(int8 *in, int lines, int columns, int8* out);
+
+/*
+** \brief Sum of a int16 array
+** \param in the int16 array to process
+** \param size, the size of the array
+** \returns the min.
+*/
+EXTERN_STATFUNC int16 i16mina(int16 *in, int size);
+EXTERN_STATFUNC void i16rowmina(int16 *in, int lines, int columns, int16* out);
+EXTERN_STATFUNC void i16columnmina(int16 *in, int lines, int columns, int16* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+#endif /* !__STAT_MIN_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/stdevf.h b/2.3-1/src/c/statisticsFunctions/includes/stdevf.h
new file mode 100644
index 00000000..c9e48599
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/stdevf.h
@@ -0,0 +1,129 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __STDEVF_H__
+#define __STDEVF_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#include "dynlib_statisticsfunctions.h"
+#include "subtraction.h"
+#include "division.h"
+
+
+#include "pow.h"
+#include "sum.h"
+#include "size.h"
+#include "sqrt.h"
+#include "meanf.h"
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+
+/*
+** \brief Standard deviation of a scalar element, just returns it
+*/
+#define sstdevfs(in1,in2) 0.0f
+#define srowstdevfs(in1,in2) 0.0f
+#define scolumnstdevfs(in1,in2) 0.0f
+
+
+/*
+** \brief Standard deviation of a scalar element, just returns it
+*/
+#define dstdevfs(in1,in2) 0.0
+#define drowstdevfs(in1,in2) 0.0
+#define dcolumnstdevfs(in1,in2) 0.0
+
+
+/*
+** \brief Standard deviation of a scalar element, just returns it
+*/
+#define cstdevfs(in1,in2) FloatComplex(0.0f , 0.0f)
+#define crowstdevfs(in1,in2) FloatComplex(0.0f , 0.0f)
+#define ccolumnstdevfs(in1,in2) FloatComplex(0.0f , 0.0f)
+
+
+/*
+** \brief Standard deviation of a scalar element, just returns it
+*/
+#define zstdevfs(in1,in2) DoubleComplex(0.0 , 0.0)
+#define zrowstdevfs(in1,in2) DoubleComplex(0.0 , 0.0)
+#define zcolumnstdevfs(in1,in2) DoubleComplex(0.0 , 0.0)
+
+
+/*
+** \brief Standard deviation of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the stdevf.
+*/
+EXTERN_STATFUNC float sstdevfa(float *in1, int lines, int columns, float *in2);
+EXTERN_STATFUNC void srowstdevfa(float *in1, int lines, int columns, float *in2, float* out);
+EXTERN_STATFUNC void scolumnstdevfa(float *in1, int lines, int columns, float *in2, float* out);
+
+/*
+** \brief Standard deviation of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the stdevf.
+*/
+EXTERN_STATFUNC double dstdevfa(double *in1, int lines, int columns, double *in2);
+EXTERN_STATFUNC void drowstdevfa(double *in1, int lines, int columns, double *in2, double* out);
+EXTERN_STATFUNC void dcolumnstdevfa(double *in1, int lines, int columns, double *in2, double* out);
+
+/*
+** \brief Standard deviation of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the stdevf.
+*/
+EXTERN_STATFUNC floatComplex cstdevfa(floatComplex *in1, int lines, int columns, floatComplex *in2);
+EXTERN_STATFUNC void crowstdevfa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex* out);
+EXTERN_STATFUNC void ccolumnstdevfa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex* out);
+
+/*
+** \brief Standard deviation of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the stdevf.
+*/
+EXTERN_STATFUNC doubleComplex zstdevfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2);
+EXTERN_STATFUNC void zrowstdevfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnstdevfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex* out);
+
+/*
+** convenience functions
+*/
+
+EXTERN_STATFUNC floatComplex cstdevfcs(floatComplex *in1, int lines, int columns, float *in2);
+EXTERN_STATFUNC floatComplex cstdevfsc(float *in1, int lines, int columns, floatComplex *in2);
+
+EXTERN_STATFUNC doubleComplex zstdevfzd(doubleComplex *in1, int lines, int columns, double *in2);
+EXTERN_STATFUNC doubleComplex zstdevfdz(double *in1, int lines, int columns, doubleComplex *in2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__STDEVF_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/sum.h b/2.3-1/src/c/statisticsFunctions/includes/sum.h
new file mode 100644
index 00000000..2910792e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/sum.h
@@ -0,0 +1,102 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __SUM_H__
+#define __SUM_H__
+
+#include "dynlib_statisticsfunctions.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "addition.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define ssums(in) in
+#define srowsums(in) in
+#define scolumnsums(in) in
+#define smatlabsums(in) in
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define dsums(in) in
+#define drowsums(in) in
+#define dcolumnsums(in) in
+#define dmatlabsums(in) in
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define csums(in) in
+#define crowsums(in) in
+#define ccolumnsums(in) in
+#define cmatlabsums(in) in
+
+/*
+** \brief Sum of a scalar element, just returns it
+*/
+#define zsums(in) in
+#define zrowsums(in) in
+#define zcolumnsums(in) in
+#define zmatlabsums(in) in
+
+/*
+** \brief Sum of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the sum.
+*/
+EXTERN_STATFUNC float ssuma(float *in, int size);
+EXTERN_STATFUNC void srowsuma(float *in, int lines, int columns, float* out);
+EXTERN_STATFUNC void scolumnsuma(float *in, int lines, int columns, float* out);
+
+/*
+** \brief Sum of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the sum.
+*/
+EXTERN_STATFUNC double dsuma(double *in, int size);
+EXTERN_STATFUNC void drowsuma(double *in, int lines, int columns, double* out);
+EXTERN_STATFUNC void dcolumnsuma(double *in, int lines, int columns, double* out);
+
+/*
+** \brief Sum of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the sum.
+*/
+EXTERN_STATFUNC floatComplex csuma(floatComplex *in, int size);
+EXTERN_STATFUNC void crowsuma(floatComplex *in, int lines, int columns, floatComplex* out);
+EXTERN_STATFUNC void ccolumnsuma(floatComplex *in, int lines, int columns, floatComplex* out);
+
+/*
+** \brief Sum of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the sum.
+*/
+EXTERN_STATFUNC doubleComplex zsuma(doubleComplex *in, int size);
+EXTERN_STATFUNC void zrowsuma(doubleComplex *in, int lines, int columns, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnsuma(doubleComplex *in, int lines, int columns, doubleComplex* out);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__SUM_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/variance.h b/2.3-1/src/c/statisticsFunctions/includes/variance.h
new file mode 100644
index 00000000..a058bb75
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/variance.h
@@ -0,0 +1,117 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __VARIANCE_H__
+#define __VARIANCE_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#include "dynlib_statisticsfunctions.h"
+#include "subtraction.h"
+#include "division.h"
+
+#include "pow.h"
+#include "sum.h"
+
+#include "mean.h"
+#include "matrixTranspose.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define svariances(in) in
+#define srowvariances(in) in
+#define scolumnvariances(in) in
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define dvariances(in) in
+#define drowvariances(in) in
+#define dcolumnvariances(in) in
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define cvariances(in) in
+#define crowvariances(in) in
+#define ccolumnvariances(in) in
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define zvariances(in) in
+#define zrowvariances(in) in
+#define zcolumnvariances(in) in
+
+
+/*
+** \brief Variance of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the variance.
+*/
+EXTERN_STATFUNC float svariancea(float *in, int size);
+EXTERN_STATFUNC void srowvariancea(float *in, int lines, int columns, float* out);
+EXTERN_STATFUNC void scolumnvariancea(float *in, int lines, int columns, float* out);
+
+/*
+** \brief Variance of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the variance.
+*/
+EXTERN_STATFUNC double dvariancea(double *in, int size);
+EXTERN_STATFUNC void drowvariancea(double *in, int lines, int columns, double* out);
+EXTERN_STATFUNC void dcolumnvariancea(double *in, int lines, int columns, double* out);
+
+/*
+** \brief Variance of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the variance.
+*/
+EXTERN_STATFUNC floatComplex cvariancea(floatComplex *in, int size);
+EXTERN_STATFUNC void crowvariancea(floatComplex *in, int lines, int columns, floatComplex* out);
+EXTERN_STATFUNC void ccolumnvariancea(floatComplex *in, int lines, int columns, floatComplex* out);
+
+/*
+** \brief Variance of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the variance.
+*/
+EXTERN_STATFUNC doubleComplex zvariancea(doubleComplex *in, int size);
+EXTERN_STATFUNC void zrowvariancea(doubleComplex *in, int lines, int columns, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnvariancea(doubleComplex *in, int lines, int columns, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__VARIANCE_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/includes/variancef.h b/2.3-1/src/c/statisticsFunctions/includes/variancef.h
new file mode 100644
index 00000000..e682a187
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/includes/variancef.h
@@ -0,0 +1,117 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+#ifndef __VARIANCEF_H__
+#define __VARIANCEF_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#include "dynlib_statisticsfunctions.h"
+#include "subtraction.h"
+#include "division.h"
+
+
+#include "pow.h"
+#include "sum.h"
+
+#include "meanf.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define svariancefs(in1,in2) 0.0f
+#define srowvariancefs(in1,in2) 0.0f
+#define scolumnvariancefs(in1,in2) 0.0f
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define dvariancefs(in1,in2) 0.0
+#define drowvariancefs(in1,in2) 0.0
+#define dcolumnvariancefs(in1,in2) 0.0
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define cvariancefs(in1,in2) FloatComplex(0.0f , 0.0f)
+#define crowvariancefs(in1,in2) FloatComplex(0.0f , 0.0f)
+#define ccolumnvariancefs(in1,in2) FloatComplex(0.0f , 0.0f)
+
+
+/*
+** \brief Variance of a scalar element, just returns it
+*/
+#define zvariancefs(in1,in2) DoubleComplex(0.0 , 0.0)
+#define zrowvariancefs(in1,in2) DoubleComplex(0.0 , 0.0)
+#define zcolumnvariancefs(in1,in2) DoubleComplex(0.0 , 0.0)
+
+
+/*
+** \brief Variance of a float array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the variancef.
+*/
+EXTERN_STATFUNC float svariancefa(float *in1, int size, float *in2);
+EXTERN_STATFUNC void srowvariancefa(float *in1, int lines, int columns, float *in2, float* out);
+EXTERN_STATFUNC void scolumnvariancefa(float *in1, int lines, int columns, float *in2, float* out);
+
+/*
+** \brief Variance of a double array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the variancef.
+*/
+EXTERN_STATFUNC double dvariancefa(double *in1, int size, double *in2);
+EXTERN_STATFUNC void drowvariancefa(double *in1, int lines, int columns, double *in2, double* out);
+EXTERN_STATFUNC void dcolumnvariancefa(double *in1, int lines, int columns, double *in2, double* out);
+
+/*
+** \brief Variance of a float complex array
+** \param in the float array to process
+** \param size, the size of the array
+** \returns the variancef.
+*/
+EXTERN_STATFUNC floatComplex cvariancefa(floatComplex *in1, int size, floatComplex *in2);
+EXTERN_STATFUNC void crowvariancefa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex* out);
+EXTERN_STATFUNC void ccolumnvariancefa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex* out);
+
+/*
+** \brief Variance of a double complex array
+** \param in the double array to process
+** \param size, the size of the array
+** \returns the variancef.
+*/
+EXTERN_STATFUNC doubleComplex zvariancefa(doubleComplex *in1, int size, doubleComplex *in2);
+EXTERN_STATFUNC void zrowvariancefa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex* out);
+EXTERN_STATFUNC void zcolumnvariancefa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__VARIANCEF_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_mean.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_mean.h
new file mode 100644
index 00000000..d1d301cd
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_mean.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_MEAN_H__
+#define __INT_MEAN_H__
+
+#define s0means0(in) smeans(in)
+
+#define d0meand0(in) dmeans(in)
+
+#define c0meanc0(in) cmeans(in)
+
+#define z0meanz0(in) zmeans(in)
+
+#define s2means0(in,size) smeana(in, size[0]*size[1])
+
+#define d2meand0(in,size) dmeana(in, size[0]*size[1])
+
+#define c2meanc0(in,size) cmeana(in, size[0]*size[1])
+
+#define z2meanz0(in,size) zmeana(in, size[0]*size[1])
+
+
+#define s0s0means0(in1,in2) (in2==1) ? srowmeans(in1) : scolumnmeans(in1)
+
+#define d0d0meand0(in1,in2) (in2==1) ? drowmeans(in1) : dcolumnmeans(in1)
+
+#define c0s0meanc0(in1,in2) (in2==1) ? crowmeans(in1) : ccolumnmeans(in1)
+
+#define z0d0meanz0(in1,in2) (in2==1) ? zrowmeans(in1) : zcolumnmeans(in1)
+
+#define s2s0means2(in1,size,in2,out) (in2==1) ? srowmeana(in1,size[0],size[1],out) : scolumnmeana(in1,size[0],size[1],out)
+
+#define d2d0meand2(in1,size,in2,out) (in2==1) ? drowmeana(in1,size[0],size[1],out) : dcolumnmeana(in1,size[0],size[1],out)
+
+#define c2s0meanc2(in1,size,in2,out) (in2==1) ? crowmeana(in1,size[0],size[1],out) : ccolumnmeana(in1,size[0],size[1],out)
+
+#define z2d0meanz2(in1,size,in2,out) (in2==1) ? zrowmeana(in1,size[0],size[1],out) : zcolumnmeana(in1,size[0],size[1],out)
+
+ /*'r' and 'c' case */
+#define s0g2means0(in1,in2,size2) (in2[0]=='r') ? srowmeans(in1) : scolumnmeans(in1)
+
+#define d0g2meand0(in1,in2,size2) (in2[0]=='r') ? drowmeans(in1) : dcolumnmeans(in1)
+
+#define c0g2meanc0(in1,in2,size2) (in2[0]=='r') ? crowmeans(in1) : ccolumnmeans(in1)
+
+#define z0g2meanz0(in1,in2,size2) (in2[0]=='r') ? zrowmeans(in1) : zcolumnmeans(in1)
+
+#define s2g2means2(in1,size,in2,size2,out) (in2[0]=='r') ? srowmeana(in1,size[0],size[1],out) : scolumnmeana(in1,size[0],size[1],out)
+
+#define d2g2meand2(in1,size,in2,size2,out) (in2[0]=='r') ? drowmeana(in1,size[0],size[1],out) : dcolumnmeana(in1,size[0],size[1],out)
+
+#define c2g2meanc2(in1,size,in2,size2,out) (in2[0]=='r') ? crowmeana(in1,size[0],size[1],out) : ccolumnmeana(in1,size[0],size[1],out)
+
+#define z2g2meanz2(in1,size,in2,size2,out) (in2[0]=='r') ? zrowmeana(in1,size[0],size[1],out) : zcolumnmeana(in1,size[0],size[1],out)
+
+
+
+
+#endif /* !__INT_MEAN_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_meanf.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_meanf.h
new file mode 100644
index 00000000..c7fb4da9
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_meanf.h
@@ -0,0 +1,183 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_MEANF_H__
+#define __INT_MEANF_H__
+
+#define s0s0meanfs0(in1,in2) smeanfs(in1,in2)
+
+#define d0d0meanfd0(in1,in2) dmeanfs(in1,in2)
+
+#define c0s0meanfc0(in1,in2) cmeanfs(in1,FloatComplex(in2 , 0.0f))
+
+#define z0d0meanfz0(in1,in2) zmeanfs(in1,DoubleComplex(in2, 0.0))
+
+#define s2s2meanfs0(in1, size1, in2, size2) smeanfa(in1, size1[0]*size1[1], in2)
+
+#define d2d2meanfd0(in1, size1, in2, size2) dmeanfa(in1, size1[0]*size1[1], in2)
+
+#define c2s2meanfc0(in1, size1, in2, size2) cmeanfcs(in1, size1[0], size1[1], in2)
+
+#define z2d2meanfz0(in1, size1, in2, size2) zmeanfzd(in1, size1[0], size1[1], in2)
+
+
+/*by rows or columns */
+
+#define s0s0s0meanfs0(in1,in2,in3) (in3==1) ? srowmeanfs(in1,in2) : scolumnmeanfs(in1,in2)
+
+#define d0d0d0meanfd0(in1,in2,in3) (in3==1) ? drowmeanfs(in1,in2) : dcolumnmeanfs(in1,in2)
+
+#define c0s0s0meanfc0(in1,in2,in3) (in3==1) ? crowmeanfs(in1,FloatComplex(in2 , 0.0f)) : ccolumnmeanfs(in1,FloatComplex(in2 , 0.0f))
+
+#define z0d0d0meanfz0(in1,in2,in3) (in3==1) ? zrowmeanfs(in1,DoubleComplex(in2, 0.0)) : zcolumnmeanfs(in1,DoubleComplex(in2, 0.0))
+
+
+#define s2s2s0meanfs2(in1, size1, in2, size2,in3,out) (in3==1) ? srowmeanfa(in1,size1[0],size1[1],in2,out) : scolumnmeanfa(in1,size1[0],size1[1],in2,out)
+
+#define d2d2d0meanfd2(in1, size1, in2, size2,in3,out) (in3==1) ? drowmeanfa(in1,size1[0],size1[1],in2,out) : dcolumnmeanfa(in1,size1[0],size1[1],in2,out)
+
+
+
+
+
+#define c2s2s0meanfc2(in1, size1, in2, size2,in3,out) if (in3==1) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ crowmeanfa(in1,size1[0],size1[1],FloatComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }\
+ else\
+ {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ ccolumnmeanfa(in1,size1[0],size1[1],FloatComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }
+
+#define z2d2d0meanfz2(in1, size1, in2, size2,in3,out) if (in3==1) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zrowmeanfa(in1,size1[0],size1[1],DoubleComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }\
+ else\
+ {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zcolumnmeanfa(in1,size1[0],size1[1],DoubleComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }
+
+
+/**/
+
+
+#define s0c0meanfs0(in1,in2) creals (cmeanfs(FloatComplex(in1 , 0.0f),in2))
+#define s0c0meanfc0(in1,in2) cmeanfs(FloatComplex(in1 , 0.0f),in2)
+
+#define d0z0meanfd0(in1,in2) zreals(zmeanfs(DoubleComplex(in1, 0.0 ),in2))
+#define d0z0meanfz0(in1,in2) zmeanfs(DoubleComplex(in1, 0.0 ),in2)
+
+#define c0c0meanfc0(in1,in2) cmeanfs(in1,in2)
+
+#define z0z0meanfz0(in1,in2) zmeanfs(in1,in2)
+
+
+#define s2c2meanfs0(in1, size1, in2, size2) creals (cmeanfsc(in1, size1[0],size1[1], in2))
+#define s2c2meanfc0(in1, size1, in2, size2) cmeanfsc(in1, size1[0],size1[1], in2)
+
+#define d2z2meanfd0(in1, size1, in2, size2) zreals(zmeanfdz(in1, size1[0],size1[1], in2))
+#define d2z2meanfz0(in1, size1, in2, size2) zmeanfdz(in1, size1[0],size1[1], in2)
+
+#define c2c2meanfc0(in1, size1, in2, size2) cmeanfa(in1, size1[0]* size1[1], in2)
+
+#define z2z2meanfz0(in1, size1, in2, size2) zmeanfa(in1, size1[0]* size1[1], in2)
+
+
+/*by rows or columns */
+
+#define s0c0s0meanfs0(in1,in2,in3) (in3==1) ? crowmeanfs(FloatComplex(in1, 0.0f),in2) : ccolumnmeanfs(FloatComplex(in1, 0.0f),in2)
+
+#define d0z0d0meanfd0(in1,in2,in3) (in3==1) ? zrowmeanfs(DoubleComplex(in1, 0.0),in2) : zcolumnmeanfs(DoubleComplex(in1, 0.0),in2)
+
+#define c0c0s0meanfc0(in1,in2,in3) (in3==1) ? crowmeanfs(in1,in2) : ccolumnmeanfs(in1,in2)
+
+#define z0z0d0meanfz0(in1,in2,in3) (in3==1) ? zrowmeanfs(in1,in2) : zcolumnmeanfs(in1,in2)
+
+
+#define s2c2s0meanfs2(in1, size1, in2, size2,in3,out) if (in3==1) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ crowmeanfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }\
+ else\
+ {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ ccolumnmeanfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }
+
+#define d2z2d0meanfd2(in1, size1, in2, size2,in3,out) if (in3==1) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zrowmeanfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }\
+ else\
+ {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zcolumnmeanfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }
+
+/*complex output*/
+#define s2c2s0meanfc2(in1, size1, in2, size2,in3,out) if (in3==1) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ crowmeanfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }\
+ else\
+ {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ ccolumnmeanfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }
+
+#define d2z2d0meanfz2(in1, size1, in2, size2,in3,out) if (in3==1) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zrowmeanfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }\
+ else\
+ {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zcolumnmeanfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }
+
+
+
+#define c2c2s0meanfc2(in1, size1, in2, size2,in3,out) (in3==1) ? crowmeanfa(in1,size1[0],size1[1],in2,out) : ccolumnmeanfa(in1,size1[0],size1[1],in2,out)
+
+#define z2z2d0meanfz2(in1, size1, in2, size2,in3,out) (in3==1) ? zrowmeanfa(in1,size1[0],size1[1],in2,out) : zcolumnmeanfa(in1,size1[0],size1[1],in2,out)
+
+
+#endif /* !__INT_MEANF_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_prod.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_prod.h
new file mode 100644
index 00000000..dfec8548
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_prod.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_PROD_H__
+#define __INT_PROD_H__
+
+#define s0prods0(in) sprods(in)
+
+#define d0prodd0(in) dprods(in)
+
+#define c0prodc0(in) cprods(in)
+
+#define z0prodz0(in) zprods(in)
+
+#define s2prods0(in,size) sproda(in, size[0]*size[1])
+
+#define d2prodd0(in,size) dproda(in, size[0]*size[1])
+
+#define c2prodc0(in,size) cproda(in, size[0]*size[1])
+
+#define z2prodz0(in,size) zproda(in, size[0]*size[1])
+
+
+#define s0s0prods0(in1,in2) (in2==1) ? srowprods(in1) : scolumnprods(in1)
+
+#define d0d0prodd0(in1,in2) (in2==1) ? drowprods(in1) : dcolumnprods(in1)
+
+#define c0s0prodc0(in1,in2) (in2==1) ? crowprods(in1) : ccolumnprods(in1)
+
+#define z0d0prodz0(in1,in2) (in2==1) ? zrowprods(in1) : zcolumnprods(in1)
+
+#define s2s0prods2(in1,size,in2,out) (in2==1) ? srowproda(in1,size[0],size[1],out) : scolumnproda(in1,size[0],size[1],out)
+
+#define d2d0prodd2(in1,size,in2,out) (in2==1) ? drowproda(in1,size[0],size[1],out) : dcolumnproda(in1,size[0],size[1],out)
+
+#define c2s0prodc2(in1,size,in2,out) (in2==1) ? crowproda(in1,size[0],size[1],out) : ccolumnproda(in1,size[0],size[1],out)
+
+#define z2d0prodz2(in1,size,in2,out) (in2==1) ? zrowproda(in1,size[0],size[1],out) : zcolumnproda(in1,size[0],size[1],out)
+
+ /*'r' and 'c' case */
+#define s0g2prods0(in1,in2,size2) (in2[0]=='r') ? srowprods(in1) : scolumnprods(in1)
+
+#define d0g2prodd0(in1,in2,size2) (in2[0]=='r') ? drowprods(in1) : dcolumnprods(in1)
+
+#define c0g2prodc0(in1,in2,size2) (in2[0]=='r') ? crowprods(in1) : ccolumnprods(in1)
+
+#define z0g2prodz0(in1,in2,size2) (in2[0]=='r') ? zrowprods(in1) : zcolumnprods(in1)
+
+#define s2g2prods2(in1,size,in2,size2,out) (in2[0]=='r') ? srowproda(in1,size[0],size[1],out) : scolumnproda(in1,size[0],size[1],out)
+
+#define d2g2prodd2(in1,size,in2,size2,out) (in2[0]=='r') ? drowproda(in1,size[0],size[1],out) : dcolumnproda(in1,size[0],size[1],out)
+
+#define c2g2prodc2(in1,size,in2,size2,out) (in2[0]=='r') ? crowproda(in1,size[0],size[1],out) : ccolumnproda(in1,size[0],size[1],out)
+
+#define z2g2prodz2(in1,size,in2,size2,out) (in2[0]=='r') ? zrowproda(in1,size[0],size[1],out) : zcolumnproda(in1,size[0],size[1],out)
+
+
+
+
+#endif /* !__INT_PROD_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_statMax.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_statMax.h
new file mode 100644
index 00000000..6d28186b
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_statMax.h
@@ -0,0 +1,161 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_STATMAX_H__
+#define __INT_STATMAX_H__
+//#ifndef __INT_MAX_H__
+//#define __INT_MAX_H__
+
+#define s0maxs0(in) in
+
+#define d0maxd0(in) in
+
+#define u80maxu80(in) (uint8)in
+
+#define u160maxu160(in) (uint16)in
+
+#define i80maxi80(in) (int8)in
+
+#define i160maxi160(in) (int16)in
+
+#define s2maxs0(in,size) smaxa(in, size[0]*size[1])
+
+#define d2maxd0(in,size) dmaxa(in, size[0]*size[1])
+
+#define c2maxc0(in,size) cmaxa(in, size[0]*size[1])
+
+#define z2maxz0(in,size) zmaxa(in, size[0]*size[1])
+
+#define u82maxu80(in,size) u8maxa(in, size[0]*size[1])
+
+#define u162maxu160(in,size) u16maxa(in, size[0]*size[1])
+
+#define i82maxi80(in,size) i8maxa(in, size[0]*size[1])
+
+#define i162maxi160(in,size) i16maxa(in, size[0]*size[1])
+
+
+
+#define s0s0maxs0(in1,in2) max(in1,in2)
+
+#define d0d0maxd0(in1,in2) max(in1,in2)
+
+#define u80u80maxu80(in1,in2) max(in1,in2)
+
+#define u160u160maxu160(in1,in2) max(in1,in2)
+
+#define i80i80maxi80(in1,in2) max(in1,in2)
+
+#define i160i160maxi160(in1,in2) max(in1,in2)
+
+#define s2s2maxs2(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define d2d2maxd2(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define u82u82maxu82(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define u162u162maxu162(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define i82i82maxi82(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+#define i162i162maxi162(in1,size1,in2,size2,out) maxa(in1, size1, in2, size2, out)
+
+
+#define s2s0maxs2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define d2d0maxd2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define u82u80maxu82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define u162u160maxu162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define i82i80maxi82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define i162i160maxi162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1[i],in2);\
+ }
+
+#define s0s2maxs2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define d0d2maxd2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define u80u82maxu82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define u160u162maxu162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define i80i82maxi82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+#define i160i162maxi162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=max(in1,in2[i]);\
+ }
+
+/*'r' and 'c' case */
+#define s0g2maxs0(in1,in2,size2) (in2[0]=='r') ? srowmaxs(in1) : scolumnmaxs(in1)
+
+#define d0g2maxd0(in1,in2,size2) (in2[0]=='r') ? drowmaxs(in1) : dcolumnmaxs(in1)
+
+#define c0g2maxc0(in1,in2,size2) (in2[0]=='r') ? crowmaxs(in1) : ccolumnmaxs(in1)
+
+#define z0g2maxz0(in1,in2,size2) (in2[0]=='r') ? zrowmaxs(in1) : zcolumnmaxs(in1)
+
+#define u80g2maxu80(in1,in2,size2) (in2[0]=='r') ? u8rowmaxs(in1) : u8columnmaxs(in1)
+
+#define u160g2maxu160(in1,in2,size2) (in2[0]=='r') ? u16rowmaxs(in1) : u16columnmaxs(in1)
+
+#define i80g2maxi80(in1,in2,size2) (in2[0]=='r') ? i8rowmaxs(in1) : i8columnmaxs(in1)
+
+#define i160g2maxi160(in1,in2,size2) (in2[0]=='r') ? i16rowmaxs(in1) : i16columnmaxs(in1)
+
+
+#define s2g2maxs2(in1,size1,in2,size2,out) (in2[0]=='r') ? srowmaxa(in1,size1[0],size1[1],out) : scolumnmaxa(in1,size1[0],size1[1],out)
+
+#define d2g2maxd2(in1,size1,in2,size2,out) (in2[0]=='r') ? drowmaxa(in1,size1[0],size1[1],out) : dcolumnmaxa(in1,size1[0],size1[1],out)
+
+#define c2g2maxc2(in1,size1,in2,size2,out) (in2[0]=='r') ? crowmaxa(in1,size1[0],size1[1],out) : ccolumnmaxa(in1,size1[0],size1[1],out)
+
+#define z2g2maxz2(in1,size1,in2,size2,out) (in2[0]=='r') ? zrowmaxa(in1,size1[0],size1[1],out) : zcolumnmaxa(in1,size1[0],size1[1],out)
+
+#define u82g2maxu82(in1,size1,in2,size2,out) (in2[0]=='r') ? u8rowmaxa(in1,size1[0],size1[1],out) : u8columnmaxa(in1,size1[0],size1[1],out)
+
+#define u162g2maxu162(in1,size1,in2,size2,out) (in2[0]=='r') ? u16rowmaxa(in1,size1[0],size1[1],out) : u16columnmaxa(in1,size1[0],size1[1],out)
+
+#define i82g2maxi82(in1,size1,in2,size2,out) (in2[0]=='r') ? i8rowmaxa(in1,size1[0],size1[1],out) : i8columnmaxa(in1,size1[0],size1[1],out)
+
+#define i162g2maxi162(in1,size1,in2,size2,out) (in2[0]=='r') ? i16rowmaxa(in1,size1[0],size1[1],out) : i16columnmaxa(in1,size1[0],size1[1],out)
+
+
+
+
+
+#endif /* !__INT_STATMAX_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_statMin.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_statMin.h
new file mode 100644
index 00000000..39187efe
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_statMin.h
@@ -0,0 +1,162 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_STATMIN_H__
+#define __INT_STATMIN_H__
+//#ifndef __INT_MIN_H__
+//#define __INT_MIN_H__
+
+#define s0mins0(in) in
+
+#define d0mind0(in) in
+
+#define u80minu80(in) (uint8)in
+
+#define u160minu160(in) (uint16)in
+
+#define i80mini80(in) (int8)in
+
+#define i160mini160(in) (int16)in
+
+#define s2mins0(in,size) smina(in, size[0]*size[1])
+
+#define d2mind0(in,size) dmina(in, size[0]*size[1])
+
+#define c2minc0(in,size) cmina(in, size[0]*size[1])
+
+#define z2minz0(in,size) zmina(in, size[0]*size[1])
+
+#define u82minu80(in,size) u8mina(in, size[0]*size[1])
+
+#define u162minu160(in,size) u16mina(in, size[0]*size[1])
+
+#define i82mini80(in,size) i8mina(in, size[0]*size[1])
+
+#define i162mini160(in,size) i16mina(in, size[0]*size[1])
+
+
+
+#define s0s0mins0(in1,in2) min(in1,in2)
+
+#define d0d0mind0(in1,in2) min(in1,in2)
+
+#define u80u80minu80(in1,in2) min(in1,in2)
+
+#define u160u160minu160(in1,in2) min(in1,in2)
+
+#define i80i80mini80(in1,in2) min(in1,in2)
+
+#define i160i160mini160(in1,in2) min(in1,in2)
+
+#define s2s2mins2(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define d2d2mind2(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define u82u82minu82(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define u162u162minu162(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define i82i82mini82(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+#define i162i162mini162(in1,size1,in2,size2,out) mina(in1, size1, in2, size2, out)
+
+
+#define s2s0mins2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define d2d0mind2(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define u82u80minu82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define u162u160minu162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define i82i80mini82(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define i162i160mini162(in1,size,in2,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1[i],in2);\
+ }
+
+#define s0s2mins2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define d0d2mind2(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define u80u82minu82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define u160u162minu162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define i80i82mini82(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+#define i160i162mini162(in1,in2,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=min(in1,in2[i]);\
+ }
+
+
+/*'r' and 'c' case */
+#define s0g2mins0(in1,in2,size2) (in2[0]=='r') ? srowmins(in1) : scolumnmins(in1)
+
+#define d0g2mind0(in1,in2,size2) (in2[0]=='r') ? drowmins(in1) : dcolumnmins(in1)
+
+#define c0g2minc0(in1,in2,size2) (in2[0]=='r') ? crowmins(in1) : ccolumnmins(in1)
+
+#define z0g2minz0(in1,in2,size2) (in2[0]=='r') ? zrowmins(in1) : zcolumnmins(in1)
+
+#define u80g2minu80(in1,in2,size2) (in2[0]=='r') ? u8rowmins(in1) : u8columnmins(in1)
+
+#define u160g2minu160(in1,in2,size2) (in2[0]=='r') ? u16rowmins(in1) : u16columnmins(in1)
+
+#define i80g2mini80(in1,in2,size2) (in2[0]=='r') ? i8rowmins(in1) : i8columnmins(in1)
+
+#define i160g2mini160(in1,in2,size2) (in2[0]=='r') ? i16rowmins(in1) : i16columnmins(in1)
+
+
+#define s2g2mins2(in1,size,in2,size2,out) (in2[0]=='r') ? srowmina(in1,size[0],size[1],out) : scolumnmina(in1,size[0],size[1],out)
+
+#define d2g2mind2(in1,size,in2,size2,out) (in2[0]=='r') ? drowmina(in1,size[0],size[1],out) : dcolumnmina(in1,size[0],size[1],out)
+
+#define c2g2minc2(in1,size,in2,size2,out) (in2[0]=='r') ? crowmina(in1,size[0],size[1],out) : ccolumnmina(in1,size[0],size[1],out)
+
+#define z2g2minz2(in1,size,in2,size2,out) (in2[0]=='r') ? zrowmina(in1,size[0],size[1],out) : zcolumnmina(in1,size[0],size[1],out)
+
+#define u82g2minu82(in1,size,in2,size2,out) (in2[0]=='r') ? u8rowmina(in1,size[0],size[1],out) : u8columnmina(in1,size[0],size[1],out)
+
+#define u162g2minu162(in1,size,in2,size2,out) (in2[0]=='r') ? u16rowmina(in1,size[0],size[1],out) : u16columnmina(in1,size[0],size[1],out)
+
+#define i82g2mini82(in1,size,in2,size2,out) (in2[0]=='r') ? i8rowmina(in1,size[0],size[1],out) : i8columnmina(in1,size[0],size[1],out)
+
+#define i162g2mini162(in1,size,in2,size2,out) (in2[0]=='r') ? i16rowmina(in1,size[0],size[1],out) : i16columnmina(in1,size[0],size[1],out)
+
+
+
+
+
+#endif /* !__INT_STATMIN_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_stdevf.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_stdevf.h
new file mode 100644
index 00000000..940b415d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_stdevf.h
@@ -0,0 +1,188 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_STDEVF_H__
+#define __INT_STDEVF_H__
+
+#define s0s0stdevfs0(in1,in2) sstdevfs(in1,in2)
+
+#define d0d0stdevfd0(in1,in2) dstdevfs(in1,in2)
+
+#define c0s0stdevfc0(in1,in2) cstdevfs(in1,FloatComplex(in2 , 0.0f))
+
+#define z0d0stdevfz0(in1,in2) zstdevfs(in1,DoubleComplex(in2, 0.0))
+
+#define s2s2stdevfs0(in1, size1, in2, size2) sstdevfa(in1, size1[0],size1[1], in2)
+
+#define d2d2stdevfd0(in1, size1, in2, size2) dstdevfa(in1, size1[0],size1[1], in2)
+
+#define c2s2stdevfc0(in1, size1, in2, size2) cstdevfcs(in1, size1[0], size1[1], in2)
+
+#define z2d2stdevfz0(in1, size1, in2, size2) zstdevfzd(in1, size1[0], size1[1], in2)
+
+
+/*by rows or columns */
+
+#define s0s0s0stdevfs0(in1,in2,in3) (in3==1) ? srowstdevfs(in1,in2) : scolumnstdevfs(in1,in2)
+
+#define d0d0d0stdevfd0(in1,in2,in3) (in3==1) ? drowstdevfs(in1,in2) : dcolumnstdevfs(in1,in2)
+
+#define c0s0s0stdevfc0(in1,in2,in3) (in3==1) ? crowstdevfs(in1,FloatComplex(in2 , 0.0f)) : ccolumnstdevfs(in1,FloatComplex(in2 , 0.0f))
+
+#define z0d0d0stdevfz0(in1,in2,in3) (in3==1) ? zrowstdevfs(in1,DoubleComplex(in2, 0.0)) : zcolumnstdevfs(in1,DoubleComplex(in2, 0.0))
+
+
+#define s2s2s0stdevfs2(in1, size1, in2, size2,in3,out) (in3==1) ? srowstdevfa(in1,size1[0],size1[1],in2,out) : scolumnstdevfa(in1,size1[0],size1[1],in2,out)
+
+#define d2d2d0stdevfd2(in1, size1, in2, size2,in3,out) (in3==1) ? drowstdevfa(in1,size1[0],size1[1],in2,out) : dcolumnstdevfa(in1,size1[0],size1[1],in2,out)
+
+
+
+
+
+#define c2s2s0stdevfc2(in1, size1, in2, size2,in3,out) if (in3 == 1) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ crowstdevfa(in1,size1[0],size1[1],FloatComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }\
+ else\
+ {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ ccolumnstdevfa(in1,size1[0],size1[1],FloatComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }
+
+#define z2d2d0stdevfz2(in1, size1, in2, size2,in3,out) if (in3 == 1) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zrowstdevfa(in1,size1[0],size1[1],DoubleComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }\
+ else\
+ {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zcolumnstdevfa(in1,size1[0],size1[1],DoubleComplexMatrix(in2,temp,size1[0]*size1[1]),out);\
+ free(temp);\
+ }
+
+
+/**/
+
+
+#define s0c0stdevfs0(in1,in2) creals (cstdevfs(FloatComplex(in1 , 0.0f),in2))
+#define s0c0stdevfc0(in1,in2) cstdevfs(FloatComplex(in1 , 0.0f),in2)
+
+#define d0z0stdevfd0(in1,in2) zreals(zstdevfs(DoubleComplex(in1, 0.0 ),in2)
+#define d0z0stdevfz0(in1,in2) zstdevfs(DoubleComplex(in1, 0.0 ),in2)
+
+
+#define c0c0stdevfc0(in1,in2) cstdevfs(in1,in2)
+
+#define z0z0stdevfz0(in1,in2) zstdevfs(in1,in2)
+
+
+#define s2c2stdevfs0(in1, size1, in2, size2) creals(cstdevfsc(in1, size1[0],size1[1], in2))
+#define s2c2stdevfc0(in1, size1, in2, size2) cstdevfsc(in1, size1[0],size1[1], in2)
+
+#define d2z2stdevfd0(in1, size1, in2, size2) zreals(zstdevfdz(in1, size1[0],size1[1], in2))
+#define d2z2stdevfz0(in1, size1, in2, size2) zstdevfdz(in1, size1[0],size1[1], in2)
+
+#define c2c2stdevfc0(in1, size1, in2, size2) cstdevfa(in1, size1[0], size1[1], in2)
+
+#define z2z2stdevfz0(in1, size1, in2, size2) zstdevfa(in1, size1[0], size1[1], in2)
+
+
+/*by rows or columns */
+
+#define s0c0s0stdevfs0(in1,in2,in3) (in3==1) ? creals(crowstdevfs(FloatComplex(in1, 0.0f),in2)) : creals(ccolumnstdevfs(FloatComplex(in1, 0.0f),in2))
+
+#define d0z0d0stdevfd0(in1,in2,in3) (in3==1) ? zreals(zrowstdevfs(DoubleComplex(in1, 0.0),in2)) : zreals(zcolumnstdevfs(DoubleComplex(in1, 0.0),in2))
+
+#define c0c0s0stdevfc0(in1,in2,in3) (in3==1) ? crowstdevfs(in1,in2) : ccolumnstdevfs(in1,in2)
+
+#define z0z0d0stdevfz0(in1,in2,in3) (in3==1) ? zrowstdevfs(in1,in2) : zcolumnstdevfs(in1,in2)
+
+
+#define s2c2s0stdevfs2(in1, size1, in2, size2,in3,out) if (in3 == 1) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ crowstdevfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,FloatComplexMatrix(out,temp,size1[0]*size1[1]));\
+ free(temp);\
+ }\
+ else\
+ {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ ccolumnstdevfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,FloatComplexMatrix(out,temp,size1[0]*size1[1]));\
+ free(temp);\
+ }
+
+#define d2z2d0stdevfd2(in1, size1, in2, size2,in3,out) if (in3 == 1) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zrowstdevfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,DoubleComplexMatrix(out,temp,size1[0]));\
+ free(temp);\
+ }\
+ else\
+ {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zcolumnstdevfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,DoubleComplexMatrix(out,temp,size1[0]));\
+ free(temp);\
+ }
+
+
+/*complex output*/
+
+#define s2c2s0stdevfc2(in1, size1, in2, size2,in3,out) if (in3 == 1) {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ crowstdevfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }\
+ else\
+ {float* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(float));\
+ sfilla(temp,size1[0],size1[1],0);\
+ ccolumnstdevfa(FloatComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }
+
+#define d2z2d0stdevfz2(in1, size1, in2, size2,in3,out) if (in3 == 1) {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zrowstdevfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }\
+ else\
+ {double* temp;\
+ temp=malloc((uint)(size1[0]*size1[1])*sizeof(double));\
+ dfilla(temp,size1[0],size1[1],0);\
+ zcolumnstdevfa(DoubleComplexMatrix(in1,temp,size1[0]*size1[1]),size1[0],size1[1],in2,out);\
+ free(temp);\
+ }
+
+
+
+#define c2c2s0stdevfc2(in1, size1, in2, size2,in3,out) (in3==1) ? crowstdevfa(in1,size1[0],size1[1],in2,out) : ccolumnstdevfa(in1,size1[0],size1[1],in2,out)
+
+#define z2z2d0stdevfz2(in1, size1, in2, size2,in3,out) (in3==1) ? zrowstdevfa(in1,size1[0],size1[1],in2,out) : zcolumnstdevfa(in1,size1[0],size1[1],in2,out)
+
+
+/**/
+
+#endif /* !__INT_STDEVF_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_sum.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_sum.h
new file mode 100644
index 00000000..08f01fee
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_sum.h
@@ -0,0 +1,70 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_SUM_H__
+#define __INT_SUM_H__
+
+#define s0sums0(in) ssums(in)
+
+#define d0sumd0(in) dsums(in)
+
+#define c0sumc0(in) csums(in)
+
+#define z0sumz0(in) zsums(in)
+
+#define s2sums0(in,size) ssuma(in, size[0]*size[1])
+
+#define d2sumd0(in,size) dsuma(in, size[0]*size[1])
+
+#define c2sumc0(in,size) csuma(in, size[0]*size[1])
+
+#define z2sumz0(in,size) zsuma(in, size[0]*size[1])
+
+
+#define s0s0sums0(in1,in2) (in2==1) ? srowsums(in1) : scolumnsums(in1)
+
+#define d0d0sumd0(in1,in2) (in2==1) ? drowsums(in1) : dcolumnsums(in1)
+
+#define c0s0sumc0(in1,in2) (in2==1) ? crowsums(in1) : ccolumnsums(in1)
+
+#define z0d0sumz0(in1,in2) (in2==1) ? zrowsums(in1) : zcolumnsums(in1)
+
+#define s2s0sums2(in1,size,in2,out) (in2==1) ? srowsuma(in1,size[0],size[1],out) : scolumnsuma(in1,size[0],size[1],out)
+
+#define d2d0sumd2(in1,size,in2,out) (in2==1) ? drowsuma(in1,size[0],size[1],out) : dcolumnsuma(in1,size[0],size[1],out)
+
+#define c2s0sumc2(in1,size,in2,out) (in2==1) ? crowsuma(in1,size[0],size[1],out) : ccolumnsuma(in1,size[0],size[1],out)
+
+#define z2d0sumz2(in1,size,in2,out) (in2==1) ? zrowsuma(in1,size[0],size[1],out) : zcolumnsuma(in1,size[0],size[1],out)
+
+
+/*'r' and 'c' case */
+#define s0g2sums0(in1,in2,size2) (in2[0]=='r') ? srowsums(in1) : scolumnsums(in1)
+
+#define d0g2sumd0(in1,in2,size2) (in2[0]=='r') ? drowsums(in1) : dcolumnsums(in1)
+
+#define c0g2sumc0(in1,in2,size2) (in2[0]=='r') ? crowsums(in1) : ccolumnsums(in1)
+
+#define z0g2sumz0(in1,in2,size2) (in2[0]=='r') ? zrowsums(in1) : zcolumnsums(in1)
+
+#define s2g2sums2(in1,size,in2,size2,out) (in2[0]=='r') ? srowsuma(in1,size[0],size[1],out) : scolumnsuma(in1,size[0],size[1],out)
+
+#define d2g2sumd2(in1,size,in2,size2,out) (in2[0]=='r') ? drowsuma(in1,size[0],size[1],out) : dcolumnsuma(in1,size[0],size[1],out)
+
+#define c2g2sumc2(in1,size,in2,size2,out) (in2[0]=='r') ? crowsuma(in1,size[0],size[1],out) : ccolumnsuma(in1,size[0],size[1],out)
+
+#define z2g2sumz2(in1,size,in2,size2,out) (in2[0]=='r') ? zrowsuma(in1,size[0],size[1],out) : zcolumnsuma(in1,size[0],size[1],out)
+
+
+#endif /* !__INT_SUM_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_variance.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_variance.h
new file mode 100644
index 00000000..dfc191ca
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_variance.h
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_VARIANCE_H__
+#define __INT_VARIANCE_H__
+
+#define s0variances0(in) svariances(in)
+
+#define d0varianced0(in) dvariances(in)
+
+#define c0variancec0(in) cvariances(in)
+
+#define z0variancez0(in) zvariances(in)
+
+#define s2variances0(in,size) svariancea(in, size[0]*size[1])
+
+#define d2varianced0(in,size) dvariancea(in, size[0]*size[1])
+
+#define c2variancec0(in,size) cvariancea(in, size[0]*size[1])
+
+#define z2variancez0(in,size) zvariancea(in, size[0]*size[1])
+
+
+#define s0s0variances0(in1,in2) (in2==1) ? srowvariances(in1) : scolumnvariances(in1)
+
+#define d0d0varianced0(in1,in2) (in2==1) ? drowvariances(in1) : dcolumnvariances(in1)
+
+#define c0s0variancec0(in1,in2) (in2==1) ? crowvariances(in1) : ccolumnvariances(in1)
+
+#define z0d0variancez0(in1,in2) (in2==1) ? zrowvariances(in1) : zcolumnvariances(in1)
+
+#define s2s0variances2(in1,size,in2,out) (in2==1) ? srowvariancea(in1,size[0],size[1],out) : scolumnvariancea(in1,size[0],size[1],out)
+
+#define d2d0varianced2(in1,size,in2,out) (in2==1) ? drowvariancea(in1,size[0],size[1],out) : dcolumnvariancea(in1,size[0],size[1],out)
+
+#define c2s0variancec2(in1,size,in2,out) (in2==1) ? crowvariancea(in1,size[0],size[1],out) : ccolumnvariancea(in1,size[0],size[1],out)
+
+#define z2d0variancez2(in1,size,in2,out) (in2==1) ? zrowvariancea(in1,size[0],size[1],out) : zcolumnvariancea(in1,size[0],size[1],out)
+
+
+ /*'r' and 'c' case */
+#define s0g2variances0(in1,in2,size2) (in2[0]=='r') ? srowvariances(in1) : scolumnvariances(in1)
+
+#define d0g2varianced0(in1,in2,size2) (in2[0]=='r') ? drowvariances(in1) : dcolumnvariances(in1)
+
+#define c0g2variancec0(in1,in2,size2) (in2[0]=='r') ? crowvariances(in1) : ccolumnvariances(in1)
+
+#define z0g2variancez0(in1,in2,size2) (in2[0]=='r') ? zrowvariances(in1) : zcolumnvariances(in1)
+
+#define s2g2variances2(in1,size,in2,size2,out) (in2[0]=='r') ? srowvariancea(in1,size[0],size[1],out) : scolumnvariancea(in1,size[0],size[1],out)
+
+#define d2g2varianced2(in1,size,in2,size2,out) (in2[0]=='r') ? drowvariancea(in1,size[0],size[1],out) : dcolumnvariancea(in1,size[0],size[1],out)
+
+#define c2g2variancec2(in1,size,in2,size2,out) (in2[0]=='r') ? crowvariancea(in1,size[0],size[1],out) : ccolumnvariancea(in1,size[0],size[1],out)
+
+#define z2g2variancez2(in1,size,in2,size2,out) (in2[0]=='r') ? zrowvariancea(in1,size[0],size[1],out) : zcolumnvariancea(in1,size[0],size[1],out)
+
+
+
+#endif /* !__INT_VARIANCE_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/interfaces/int_variancef.h b/2.3-1/src/c/statisticsFunctions/interfaces/int_variancef.h
new file mode 100644
index 00000000..dfac1a35
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/interfaces/int_variancef.h
@@ -0,0 +1,58 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_VARIANCEF_H__
+#define __INT_VARIANCEF_H__
+
+#define s0s0variancefs0(in1,in2) svariancefs(in1,in2)
+
+#define d0d0variancefd0(in1,in2) dvariancefs(in1,in2)
+
+#define c0s0variancefc0(in1,in2) cvariancefs(in1,in2)
+
+#define z0d0variancefz0(in1,in2) zvariancefs(in1,in2)
+
+#define s2s2variancefs0(in1, size1, in2, size2) svariancefa(in1, size1[0]*size1[1], in2)
+
+#define d2d2variancefd0(in1, size1, in2, size2) dvariancefa(in1, size1[0]*size1[1], in2)
+
+#define c2s2variancefc0(in1, size1, in2, size2) cvariancefv(in1, size1[0], size1[1], in2)
+
+#define z2d2variancefz0(in1, size1, in2, size2) zvariancefv(in1, size1[0], size1[1], in2)
+
+
+/*by rows or columns */
+
+#define s0s0s0variancefs0(in1,in2,in3) (in3==1) ? srowvariancefs(in1,in2) : scolumnvariancefs(in1,in2)
+
+#define d0d0d0variancefd0(in1,in2,in3) (in3==1) ? drowvariancefs(in1,in2) : dcolumnvariancefs(in1,in2)
+
+#define c0s0s0variancefc0(in1,in2,in3) (in3==1) ? crowvariancefs(in1,in2) : ccolumnvariancefs(in1,in2)
+
+#define z0d0d0variancefz0(in1,in2,in3) (in3==1) ? zrowvariancefs(in1,in2) : zcolumnvariancefs(in1,in2)
+
+#define s2s2s0variancefs2(in1, size1, in2, size2,in3,out) (in3==1) ? srowvariancefa(in1,size1[0],size1[1],in2,out) : scolumnvariancefa(in1,size1[0],size1[1],in2,out)
+
+#define d2d2d0variancefd2(in1, size1, in2, size2,in3,out) (in3==1) ? drowvariancefa(in1,size1[0],size1[1],in2,out) : dcolumnvariancefa(in1,size1[0],size1[1],in2,out)
+
+#define c2s2s0variancefc2(in1, size1, in2, size2,in3,out) (in3==1) ? crowvariancefa(in1,size1[0],size1[1],in2,out) : ccolumnvariancefa(in1,size1[0],size1[1],in2,out)
+
+#define z2d2d0variancefz2(in1, size1, in2, size2,in3,out) (in3==1) ? zrowvariancefa(in1,size1[0],size1[1],in2,out) : zcolumnvariancefa(in1,size1[0],size1[1],in2,out)
+
+/*
+#define d2d2d0variancefd2(in1,size1,in2,size2 ,in3 ,out) (in3==1) ? drowvariancefa(in1,size1[0],size1[1],in2 ,out) : dcolumnvariancefa(in1,size1[0],size1[1], in2,out)
+*/
+
+
+#endif /* !__INT_VARIANCEF_H__ */
diff --git a/2.3-1/src/c/statisticsFunctions/max/Makefile.am b/2.3-1/src/c/statisticsFunctions/max/Makefile.am
new file mode 100644
index 00000000..8c122565
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/Makefile.am
@@ -0,0 +1,51 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMax_la_CFLAGS = -I $(top_builddir)/src/c/statisticsFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMax.la
+
+libMax_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = smaxa.c \
+ srowmaxa.c \
+ scolumnmaxa.c \
+ dmaxa.c \
+ drowmaxa.c \
+ dcolumnmaxa.c
+
+HEAD = ../includes/statMax.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes
+
+check_LDADD = $(top_builddir)/src/c/statisticsFunctions/max/libMax.la
+
+check_PROGRAMS = testFloatMax testDoubleMax
+
+TESTS = testFloatMax testDoubleMax
+
+#
+# -*- Max Tests -*-
+#
+testFloatMax_SOURCES = testFloatMax.c
+testFloatMax_CFLAGS = $(check_INCLUDES)
+testFloatMax_LDADD = $(check_LDADD)
+
+testDoubleMax_SOURCES =testDoubleMax.c
+testDoubleMax_CFLAGS = $(check_INCLUDES)
+testDoubleMax_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/max/Makefile.in b/2.3-1/src/c/statisticsFunctions/max/Makefile.in
new file mode 100644
index 00000000..5298c5a4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/Makefile.in
@@ -0,0 +1,759 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatMax$(EXEEXT) testDoubleMax$(EXEEXT)
+TESTS = testFloatMax$(EXEEXT) testDoubleMax$(EXEEXT)
+subdir = src/c/statisticsFunctions/max
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMax_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libMax_la-smaxa.lo libMax_la-srowmaxa.lo \
+ libMax_la-scolumnmaxa.lo libMax_la-dmaxa.lo \
+ libMax_la-drowmaxa.lo libMax_la-dcolumnmaxa.lo
+am_libMax_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libMax_la_OBJECTS = $(am_libMax_la_OBJECTS)
+libMax_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMax_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleMax_OBJECTS = testDoubleMax-testDoubleMax.$(OBJEXT)
+testDoubleMax_OBJECTS = $(am_testDoubleMax_OBJECTS)
+testDoubleMax_DEPENDENCIES = $(check_LDADD)
+testDoubleMax_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleMax_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMax_OBJECTS = testFloatMax-testFloatMax.$(OBJEXT)
+testFloatMax_OBJECTS = $(am_testFloatMax_OBJECTS)
+testFloatMax_DEPENDENCIES = $(check_LDADD)
+testFloatMax_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatMax_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMax_la_SOURCES) $(testDoubleMax_SOURCES) \
+ $(testFloatMax_SOURCES)
+DIST_SOURCES = $(libMax_la_SOURCES) $(testDoubleMax_SOURCES) \
+ $(testFloatMax_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMax_la_CFLAGS = -I $(top_builddir)/src/c/statisticsFunctions/includes
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMax.la
+libMax_la_SOURCES = $(HEAD) $(SRC)
+SRC = smaxa.c \
+ srowmaxa.c \
+ scolumnmaxa.c \
+ dmaxa.c \
+ drowmaxa.c \
+ dcolumnmaxa.c
+
+HEAD = ../includes/statMax.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes
+check_LDADD = $(top_builddir)/src/c/statisticsFunctions/max/libMax.la
+
+#
+# -*- Max Tests -*-
+#
+testFloatMax_SOURCES = testFloatMax.c
+testFloatMax_CFLAGS = $(check_INCLUDES)
+testFloatMax_LDADD = $(check_LDADD)
+testDoubleMax_SOURCES = testDoubleMax.c
+testDoubleMax_CFLAGS = $(check_INCLUDES)
+testDoubleMax_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/max/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/max/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMax.la: $(libMax_la_OBJECTS) $(libMax_la_DEPENDENCIES)
+ $(libMax_la_LINK) -rpath $(pkglibdir) $(libMax_la_OBJECTS) $(libMax_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMax$(EXEEXT): $(testDoubleMax_OBJECTS) $(testDoubleMax_DEPENDENCIES)
+ @rm -f testDoubleMax$(EXEEXT)
+ $(testDoubleMax_LINK) $(testDoubleMax_OBJECTS) $(testDoubleMax_LDADD) $(LIBS)
+testFloatMax$(EXEEXT): $(testFloatMax_OBJECTS) $(testFloatMax_DEPENDENCIES)
+ @rm -f testFloatMax$(EXEEXT)
+ $(testFloatMax_LINK) $(testFloatMax_OBJECTS) $(testFloatMax_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMax_la-dcolumnmaxa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMax_la-dmaxa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMax_la-drowmaxa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMax_la-scolumnmaxa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMax_la-smaxa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMax_la-srowmaxa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMax-testDoubleMax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMax-testFloatMax.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMax_la-smaxa.lo: smaxa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -MT libMax_la-smaxa.lo -MD -MP -MF $(DEPDIR)/libMax_la-smaxa.Tpo -c -o libMax_la-smaxa.lo `test -f 'smaxa.c' || echo '$(srcdir)/'`smaxa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMax_la-smaxa.Tpo $(DEPDIR)/libMax_la-smaxa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smaxa.c' object='libMax_la-smaxa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -c -o libMax_la-smaxa.lo `test -f 'smaxa.c' || echo '$(srcdir)/'`smaxa.c
+
+libMax_la-srowmaxa.lo: srowmaxa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -MT libMax_la-srowmaxa.lo -MD -MP -MF $(DEPDIR)/libMax_la-srowmaxa.Tpo -c -o libMax_la-srowmaxa.lo `test -f 'srowmaxa.c' || echo '$(srcdir)/'`srowmaxa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMax_la-srowmaxa.Tpo $(DEPDIR)/libMax_la-srowmaxa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowmaxa.c' object='libMax_la-srowmaxa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -c -o libMax_la-srowmaxa.lo `test -f 'srowmaxa.c' || echo '$(srcdir)/'`srowmaxa.c
+
+libMax_la-scolumnmaxa.lo: scolumnmaxa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -MT libMax_la-scolumnmaxa.lo -MD -MP -MF $(DEPDIR)/libMax_la-scolumnmaxa.Tpo -c -o libMax_la-scolumnmaxa.lo `test -f 'scolumnmaxa.c' || echo '$(srcdir)/'`scolumnmaxa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMax_la-scolumnmaxa.Tpo $(DEPDIR)/libMax_la-scolumnmaxa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnmaxa.c' object='libMax_la-scolumnmaxa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -c -o libMax_la-scolumnmaxa.lo `test -f 'scolumnmaxa.c' || echo '$(srcdir)/'`scolumnmaxa.c
+
+libMax_la-dmaxa.lo: dmaxa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -MT libMax_la-dmaxa.lo -MD -MP -MF $(DEPDIR)/libMax_la-dmaxa.Tpo -c -o libMax_la-dmaxa.lo `test -f 'dmaxa.c' || echo '$(srcdir)/'`dmaxa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMax_la-dmaxa.Tpo $(DEPDIR)/libMax_la-dmaxa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmaxa.c' object='libMax_la-dmaxa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -c -o libMax_la-dmaxa.lo `test -f 'dmaxa.c' || echo '$(srcdir)/'`dmaxa.c
+
+libMax_la-drowmaxa.lo: drowmaxa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -MT libMax_la-drowmaxa.lo -MD -MP -MF $(DEPDIR)/libMax_la-drowmaxa.Tpo -c -o libMax_la-drowmaxa.lo `test -f 'drowmaxa.c' || echo '$(srcdir)/'`drowmaxa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMax_la-drowmaxa.Tpo $(DEPDIR)/libMax_la-drowmaxa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowmaxa.c' object='libMax_la-drowmaxa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -c -o libMax_la-drowmaxa.lo `test -f 'drowmaxa.c' || echo '$(srcdir)/'`drowmaxa.c
+
+libMax_la-dcolumnmaxa.lo: dcolumnmaxa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -MT libMax_la-dcolumnmaxa.lo -MD -MP -MF $(DEPDIR)/libMax_la-dcolumnmaxa.Tpo -c -o libMax_la-dcolumnmaxa.lo `test -f 'dcolumnmaxa.c' || echo '$(srcdir)/'`dcolumnmaxa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMax_la-dcolumnmaxa.Tpo $(DEPDIR)/libMax_la-dcolumnmaxa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnmaxa.c' object='libMax_la-dcolumnmaxa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMax_la_CFLAGS) $(CFLAGS) -c -o libMax_la-dcolumnmaxa.lo `test -f 'dcolumnmaxa.c' || echo '$(srcdir)/'`dcolumnmaxa.c
+
+testDoubleMax-testDoubleMax.o: testDoubleMax.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMax_CFLAGS) $(CFLAGS) -MT testDoubleMax-testDoubleMax.o -MD -MP -MF $(DEPDIR)/testDoubleMax-testDoubleMax.Tpo -c -o testDoubleMax-testDoubleMax.o `test -f 'testDoubleMax.c' || echo '$(srcdir)/'`testDoubleMax.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMax-testDoubleMax.Tpo $(DEPDIR)/testDoubleMax-testDoubleMax.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMax.c' object='testDoubleMax-testDoubleMax.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMax_CFLAGS) $(CFLAGS) -c -o testDoubleMax-testDoubleMax.o `test -f 'testDoubleMax.c' || echo '$(srcdir)/'`testDoubleMax.c
+
+testDoubleMax-testDoubleMax.obj: testDoubleMax.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMax_CFLAGS) $(CFLAGS) -MT testDoubleMax-testDoubleMax.obj -MD -MP -MF $(DEPDIR)/testDoubleMax-testDoubleMax.Tpo -c -o testDoubleMax-testDoubleMax.obj `if test -f 'testDoubleMax.c'; then $(CYGPATH_W) 'testDoubleMax.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMax.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMax-testDoubleMax.Tpo $(DEPDIR)/testDoubleMax-testDoubleMax.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMax.c' object='testDoubleMax-testDoubleMax.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMax_CFLAGS) $(CFLAGS) -c -o testDoubleMax-testDoubleMax.obj `if test -f 'testDoubleMax.c'; then $(CYGPATH_W) 'testDoubleMax.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMax.c'; fi`
+
+testFloatMax-testFloatMax.o: testFloatMax.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMax_CFLAGS) $(CFLAGS) -MT testFloatMax-testFloatMax.o -MD -MP -MF $(DEPDIR)/testFloatMax-testFloatMax.Tpo -c -o testFloatMax-testFloatMax.o `test -f 'testFloatMax.c' || echo '$(srcdir)/'`testFloatMax.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMax-testFloatMax.Tpo $(DEPDIR)/testFloatMax-testFloatMax.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMax.c' object='testFloatMax-testFloatMax.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMax_CFLAGS) $(CFLAGS) -c -o testFloatMax-testFloatMax.o `test -f 'testFloatMax.c' || echo '$(srcdir)/'`testFloatMax.c
+
+testFloatMax-testFloatMax.obj: testFloatMax.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMax_CFLAGS) $(CFLAGS) -MT testFloatMax-testFloatMax.obj -MD -MP -MF $(DEPDIR)/testFloatMax-testFloatMax.Tpo -c -o testFloatMax-testFloatMax.obj `if test -f 'testFloatMax.c'; then $(CYGPATH_W) 'testFloatMax.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMax.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMax-testFloatMax.Tpo $(DEPDIR)/testFloatMax-testFloatMax.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMax.c' object='testFloatMax-testFloatMax.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMax_CFLAGS) $(CFLAGS) -c -o testFloatMax-testFloatMax.obj `if test -f 'testFloatMax.c'; then $(CYGPATH_W) 'testFloatMax.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMax.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/max/dcolumnmaxa.c b/2.3-1/src/c/statisticsFunctions/max/dcolumnmaxa.c
new file mode 100644
index 00000000..ec717778
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/dcolumnmaxa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMax.h"
+
+void dcolumnmaxa(double *in, int rows, int columns, double* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/dmaxa.c b/2.3-1/src/c/statisticsFunctions/max/dmaxa.c
new file mode 100644
index 00000000..7292f3cd
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/dmaxa.c
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMax.h"
+
+double dmaxa(double *in, int size) {
+ double out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/drowmaxa.c b/2.3-1/src/c/statisticsFunctions/max/drowmaxa.c
new file mode 100644
index 00000000..596c535f
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/drowmaxa.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMax.h"
+
+void drowmaxa(double *in, int rows, int columns, double* out) {
+ int i = 0, j = 0;
+ for (i = 0; i < columns; i++)
+ {
+ out[i]=in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]>out[i])
+ out[i] = in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/i16columnmaxa.c b/2.3-1/src/c/statisticsFunctions/max/i16columnmaxa.c
new file mode 100644
index 00000000..87cc579c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/i16columnmaxa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i16columnmaxa(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int16)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = (int16)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/i16maxa.c b/2.3-1/src/c/statisticsFunctions/max/i16maxa.c
new file mode 100644
index 00000000..b2eab344
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/i16maxa.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+int16 i16maxa(int16 *in, int size) {
+ int16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (int16)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/i16rowmaxa.c b/2.3-1/src/c/statisticsFunctions/max/i16rowmaxa.c
new file mode 100644
index 00000000..46c4ae29
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/i16rowmaxa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i16rowmaxa(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int16)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]>out[i])
+ out[i] = (int16)in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/i8columnmaxa.c b/2.3-1/src/c/statisticsFunctions/max/i8columnmaxa.c
new file mode 100644
index 00000000..6c7ea25c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/i8columnmaxa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i8columnmaxa(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int8)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = (int8)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/i8maxa.c b/2.3-1/src/c/statisticsFunctions/max/i8maxa.c
new file mode 100644
index 00000000..d57b9957
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/i8maxa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+int8 i8maxa(int8 *in, int size) {
+ int8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (int8)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/i8rowmaxa.c b/2.3-1/src/c/statisticsFunctions/max/i8rowmaxa.c
new file mode 100644
index 00000000..677c61c7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/i8rowmaxa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void i8rowmaxa(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int8)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]>out[i])
+ out[i] = (int8)in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/scolumnmaxa.c b/2.3-1/src/c/statisticsFunctions/max/scolumnmaxa.c
new file mode 100644
index 00000000..185ab985
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/scolumnmaxa.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMax.h"
+
+void scolumnmaxa(float *in, int rows, int columns, float* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i]) out[i] = in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/smaxa.c b/2.3-1/src/c/statisticsFunctions/max/smaxa.c
new file mode 100644
index 00000000..3410faea
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/smaxa.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMax.h"
+
+
+float smaxa(float *in, int size) {
+ float out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out) out = in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/srowmaxa.c b/2.3-1/src/c/statisticsFunctions/max/srowmaxa.c
new file mode 100644
index 00000000..8f3b30ee
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/srowmaxa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMax.h"
+
+
+void srowmaxa(float *in, int rows, int columns, float* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]>out[i]) out[i] = in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/testDoubleMax.c b/2.3-1/src/c/statisticsFunctions/max/testDoubleMax.c
new file mode 100644
index 00000000..883b427f
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/testDoubleMax.c
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "statMax.h"
+//#include "max.h"
+#include "assert.h"
+#include "stdio.h"
+
+
+static void dmaxaTest(void){
+ double in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ double out;
+
+ out = dmaxa(in,12);
+ assert(out-7==0);
+
+}
+
+
+static void drowmaxaTest(void){
+ double in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ double result2[2]={7,5};
+ double result3[3]={7,6,5};
+ double result4[4]={7,6,4,5};
+ double result6[6]={5,7,6,4,5,4};
+ double out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ int i;
+
+
+ drowmaxa(in,12,1,out1);
+ drowmaxa(in,6,2,out2);
+ drowmaxa(in,4,3,out3);
+ drowmaxa(in,3,4,out4);
+ drowmaxa(in,2,6,out6);
+ drowmaxa(in,1,12,out12);
+
+ assert(out1[0]-7==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+
+static void dcolumnmaxaTest(void){
+ double in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ double out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ double result2[2]={7,6};
+ double result3[3]={5,5,7};
+ double result4[4]={4,6,7,3};
+ double result6[6]={4,5,7,5,4,6};
+ int i;
+
+
+
+ dcolumnmaxa(in,12,1,out12);
+ dcolumnmaxa(in,6,2,out6);
+ dcolumnmaxa(in,4,3,out4);
+ dcolumnmaxa(in,3,4,out3);
+ dcolumnmaxa(in,2,6,out2);
+ dcolumnmaxa(in,1,12,out1);
+
+ assert(out1[0]-7==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+static int maxTest(void){
+ dmaxaTest();
+ drowmaxaTest();
+ dcolumnmaxaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert(maxTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/testFloatMax.c b/2.3-1/src/c/statisticsFunctions/max/testFloatMax.c
new file mode 100644
index 00000000..cb572f7e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/testFloatMax.c
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "statMax.h"
+//#include "max.h"
+#include "assert.h"
+#include "stdio.h"
+
+static void smaxaTest(void){
+ float in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ float out;
+
+ out = smaxa(in,12);
+ assert(out-7==0);
+
+}
+
+
+static void srowmaxaTest(void){
+ float in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ float out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ float result2[2]={7,5};
+ float result3[3]={7,6,5};
+ float result4[4]={7,6,4,5};
+ float result6[6]={5,7,6,4,5,4};
+ int i;
+
+
+ srowmaxa(in,12,1,out1);
+ srowmaxa(in,6,2,out2);
+ srowmaxa(in,4,3,out3);
+ srowmaxa(in,3,4,out4);
+ srowmaxa(in,2,6,out6);
+ srowmaxa(in,1,12,out12);
+
+ assert(out1[0]-7==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+
+static void scolumnmaxaTest(void){
+ float in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ float out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ float result2[2]={7,6};
+ float result3[3]={5,5,7};
+ float result4[4]={4,6,7,3};
+ float result6[6]={4,5,7,5,4,6};
+ int i;
+
+
+
+ scolumnmaxa(in,12,1,out12);
+ scolumnmaxa(in,6,2,out6);
+ scolumnmaxa(in,4,3,out4);
+ scolumnmaxa(in,3,4,out3);
+ scolumnmaxa(in,2,6,out2);
+ scolumnmaxa(in,1,12,out1);
+
+ assert(out1[0]-7==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+static int maxTest(void){
+ smaxaTest();
+ srowmaxaTest();
+ scolumnmaxaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert(maxTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj b/2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj
new file mode 100644
index 00000000..e9414862
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{020991C0-9640-4097-B697-D514F08AA74C}</ProjectGuid>
+ <RootNamespace>testDoubleMax</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMax.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj.filters
new file mode 100644
index 00000000..73fb0a8e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/test_DoubleMax/testDoubleMax.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMax.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj b/2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj
new file mode 100644
index 00000000..da865fa2
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0E4EC2A2-BADC-48C8-AF56-D1437094887A}</ProjectGuid>
+ <RootNamespace>testFloatMax</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMax.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj.filters
new file mode 100644
index 00000000..c529a673
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/test_FloatMax/testFloatMax.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMax.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/max/u16columnmaxa.c b/2.3-1/src/c/statisticsFunctions/max/u16columnmaxa.c
new file mode 100644
index 00000000..5b4f4236
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/u16columnmaxa.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+void u16columnmaxa(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(uint16)in[i];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]>out[i])
+ out[i] = (uint16)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/u16maxa.c b/2.3-1/src/c/statisticsFunctions/max/u16maxa.c
new file mode 100644
index 00000000..7c9078d5
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/u16maxa.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+uint16 u16maxa(uint16 *in, int size) {
+ uint16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (uint16)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/u16rowmaxa.c b/2.3-1/src/c/statisticsFunctions/max/u16rowmaxa.c
new file mode 100644
index 00000000..eacbe848
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/u16rowmaxa.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+void u16rowmaxa(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+ //out = malloc(columns*sizeof(uint16));
+ for (i = 0; i < columns; i++)
+ {
+ out[i]=(uint16)in[i];
+ for (j = 1 ; j < rows ; j++)
+ {
+ if (in[j*columns+i]>out[i])
+ out[i] = (uint16)in[j*columns+i];
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/u8columnmaxa.c b/2.3-1/src/c/statisticsFunctions/max/u8columnmaxa.c
new file mode 100644
index 00000000..ac9bc086
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/u8columnmaxa.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+
+void u8columnmaxa(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++)
+{
+ out[i]=(uint8)in[0];
+ for (j=0;j<columns;j++)
+ if (in[j]>out[i])
+ out[i] = (uint8)in[j];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/u8maxa.c b/2.3-1/src/c/statisticsFunctions/max/u8maxa.c
new file mode 100644
index 00000000..3f84af41
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/u8maxa.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMax.h"
+
+uint8 u8maxa(uint8 *in, int size) {
+ uint8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]>out)
+ out = (uint8)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/max/u8rowmaxa.c b/2.3-1/src/c/statisticsFunctions/max/u8rowmaxa.c
new file mode 100644
index 00000000..0ddae26d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/max/u8rowmaxa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include "statMax.h"
+
+
+void u8rowmaxa(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+
+ for (i = 0; i < columns; i++)
+ {
+ out[i]=(uint8)in[0];
+ for (j = 0 ; j < rows ; j++)
+ {
+ if (in[j]>out[i])
+ out[i] = (uint8)in[j];
+ }
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/Makefile.am b/2.3-1/src/c/statisticsFunctions/mean/Makefile.am
new file mode 100644
index 00000000..2969a734
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/Makefile.am
@@ -0,0 +1,69 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMean_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMean.la
+
+libMean_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = smeana.c \
+ srowmeana.c \
+ scolumnmeana.c \
+ dmeana.c \
+ drowmeana.c \
+ dcolumnmeana.c \
+ cmeana.c \
+ crowmeana.c \
+ ccolumnmeana.c \
+ zmeana.c \
+ zrowmeana.c \
+ zcolumnmeana.c
+
+HEAD = ../includes/mean.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/mean/libMean.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatMean testDoubleMean
+
+TESTS = testFloatMean testDoubleMean
+
+#
+# -*- Mean Tests -*-
+#
+testFloatMean_SOURCES = testFloatMean.c
+testFloatMean_CFLAGS = $(check_INCLUDES)
+testFloatMean_LDADD = $(check_LDADD)
+
+testDoubleMean_SOURCES =testDoubleMean.c
+testDoubleMean_CFLAGS = $(check_INCLUDES)
+testDoubleMean_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/mean/Makefile.in b/2.3-1/src/c/statisticsFunctions/mean/Makefile.in
new file mode 100644
index 00000000..0a057450
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/Makefile.in
@@ -0,0 +1,839 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatMean$(EXEEXT) testDoubleMean$(EXEEXT)
+TESTS = testFloatMean$(EXEEXT) testDoubleMean$(EXEEXT)
+subdir = src/c/statisticsFunctions/mean
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMean_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libMean_la-smeana.lo libMean_la-srowmeana.lo \
+ libMean_la-scolumnmeana.lo libMean_la-dmeana.lo \
+ libMean_la-drowmeana.lo libMean_la-dcolumnmeana.lo \
+ libMean_la-cmeana.lo libMean_la-crowmeana.lo \
+ libMean_la-ccolumnmeana.lo libMean_la-zmeana.lo \
+ libMean_la-zrowmeana.lo libMean_la-zcolumnmeana.lo
+am_libMean_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libMean_la_OBJECTS = $(am_libMean_la_OBJECTS)
+libMean_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMean_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleMean_OBJECTS = testDoubleMean-testDoubleMean.$(OBJEXT)
+testDoubleMean_OBJECTS = $(am_testDoubleMean_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/mean/libMean.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la
+testDoubleMean_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleMean_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleMean_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMean_OBJECTS = testFloatMean-testFloatMean.$(OBJEXT)
+testFloatMean_OBJECTS = $(am_testFloatMean_OBJECTS)
+testFloatMean_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatMean_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatMean_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMean_la_SOURCES) $(testDoubleMean_SOURCES) \
+ $(testFloatMean_SOURCES)
+DIST_SOURCES = $(libMean_la_SOURCES) $(testDoubleMean_SOURCES) \
+ $(testFloatMean_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMean_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMean.la
+libMean_la_SOURCES = $(HEAD) $(SRC)
+SRC = smeana.c \
+ srowmeana.c \
+ scolumnmeana.c \
+ dmeana.c \
+ drowmeana.c \
+ dcolumnmeana.c \
+ cmeana.c \
+ crowmeana.c \
+ ccolumnmeana.c \
+ zmeana.c \
+ zrowmeana.c \
+ zcolumnmeana.c
+
+HEAD = ../includes/mean.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/mean/libMean.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+
+#
+# -*- Mean Tests -*-
+#
+testFloatMean_SOURCES = testFloatMean.c
+testFloatMean_CFLAGS = $(check_INCLUDES)
+testFloatMean_LDADD = $(check_LDADD)
+testDoubleMean_SOURCES = testDoubleMean.c
+testDoubleMean_CFLAGS = $(check_INCLUDES)
+testDoubleMean_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/mean/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/mean/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMean.la: $(libMean_la_OBJECTS) $(libMean_la_DEPENDENCIES)
+ $(libMean_la_LINK) -rpath $(pkglibdir) $(libMean_la_OBJECTS) $(libMean_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMean$(EXEEXT): $(testDoubleMean_OBJECTS) $(testDoubleMean_DEPENDENCIES)
+ @rm -f testDoubleMean$(EXEEXT)
+ $(testDoubleMean_LINK) $(testDoubleMean_OBJECTS) $(testDoubleMean_LDADD) $(LIBS)
+testFloatMean$(EXEEXT): $(testFloatMean_OBJECTS) $(testFloatMean_DEPENDENCIES)
+ @rm -f testFloatMean$(EXEEXT)
+ $(testFloatMean_LINK) $(testFloatMean_OBJECTS) $(testFloatMean_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-ccolumnmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-cmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-crowmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-dcolumnmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-dmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-drowmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-scolumnmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-smeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-srowmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-zcolumnmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-zmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMean_la-zrowmeana.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMean-testDoubleMean.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMean-testFloatMean.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMean_la-smeana.lo: smeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-smeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-smeana.Tpo -c -o libMean_la-smeana.lo `test -f 'smeana.c' || echo '$(srcdir)/'`smeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-smeana.Tpo $(DEPDIR)/libMean_la-smeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smeana.c' object='libMean_la-smeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-smeana.lo `test -f 'smeana.c' || echo '$(srcdir)/'`smeana.c
+
+libMean_la-srowmeana.lo: srowmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-srowmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-srowmeana.Tpo -c -o libMean_la-srowmeana.lo `test -f 'srowmeana.c' || echo '$(srcdir)/'`srowmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-srowmeana.Tpo $(DEPDIR)/libMean_la-srowmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowmeana.c' object='libMean_la-srowmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-srowmeana.lo `test -f 'srowmeana.c' || echo '$(srcdir)/'`srowmeana.c
+
+libMean_la-scolumnmeana.lo: scolumnmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-scolumnmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-scolumnmeana.Tpo -c -o libMean_la-scolumnmeana.lo `test -f 'scolumnmeana.c' || echo '$(srcdir)/'`scolumnmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-scolumnmeana.Tpo $(DEPDIR)/libMean_la-scolumnmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnmeana.c' object='libMean_la-scolumnmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-scolumnmeana.lo `test -f 'scolumnmeana.c' || echo '$(srcdir)/'`scolumnmeana.c
+
+libMean_la-dmeana.lo: dmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-dmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-dmeana.Tpo -c -o libMean_la-dmeana.lo `test -f 'dmeana.c' || echo '$(srcdir)/'`dmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-dmeana.Tpo $(DEPDIR)/libMean_la-dmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmeana.c' object='libMean_la-dmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-dmeana.lo `test -f 'dmeana.c' || echo '$(srcdir)/'`dmeana.c
+
+libMean_la-drowmeana.lo: drowmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-drowmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-drowmeana.Tpo -c -o libMean_la-drowmeana.lo `test -f 'drowmeana.c' || echo '$(srcdir)/'`drowmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-drowmeana.Tpo $(DEPDIR)/libMean_la-drowmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowmeana.c' object='libMean_la-drowmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-drowmeana.lo `test -f 'drowmeana.c' || echo '$(srcdir)/'`drowmeana.c
+
+libMean_la-dcolumnmeana.lo: dcolumnmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-dcolumnmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-dcolumnmeana.Tpo -c -o libMean_la-dcolumnmeana.lo `test -f 'dcolumnmeana.c' || echo '$(srcdir)/'`dcolumnmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-dcolumnmeana.Tpo $(DEPDIR)/libMean_la-dcolumnmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnmeana.c' object='libMean_la-dcolumnmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-dcolumnmeana.lo `test -f 'dcolumnmeana.c' || echo '$(srcdir)/'`dcolumnmeana.c
+
+libMean_la-cmeana.lo: cmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-cmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-cmeana.Tpo -c -o libMean_la-cmeana.lo `test -f 'cmeana.c' || echo '$(srcdir)/'`cmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-cmeana.Tpo $(DEPDIR)/libMean_la-cmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmeana.c' object='libMean_la-cmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-cmeana.lo `test -f 'cmeana.c' || echo '$(srcdir)/'`cmeana.c
+
+libMean_la-crowmeana.lo: crowmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-crowmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-crowmeana.Tpo -c -o libMean_la-crowmeana.lo `test -f 'crowmeana.c' || echo '$(srcdir)/'`crowmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-crowmeana.Tpo $(DEPDIR)/libMean_la-crowmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowmeana.c' object='libMean_la-crowmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-crowmeana.lo `test -f 'crowmeana.c' || echo '$(srcdir)/'`crowmeana.c
+
+libMean_la-ccolumnmeana.lo: ccolumnmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-ccolumnmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-ccolumnmeana.Tpo -c -o libMean_la-ccolumnmeana.lo `test -f 'ccolumnmeana.c' || echo '$(srcdir)/'`ccolumnmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-ccolumnmeana.Tpo $(DEPDIR)/libMean_la-ccolumnmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnmeana.c' object='libMean_la-ccolumnmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-ccolumnmeana.lo `test -f 'ccolumnmeana.c' || echo '$(srcdir)/'`ccolumnmeana.c
+
+libMean_la-zmeana.lo: zmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-zmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-zmeana.Tpo -c -o libMean_la-zmeana.lo `test -f 'zmeana.c' || echo '$(srcdir)/'`zmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-zmeana.Tpo $(DEPDIR)/libMean_la-zmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmeana.c' object='libMean_la-zmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-zmeana.lo `test -f 'zmeana.c' || echo '$(srcdir)/'`zmeana.c
+
+libMean_la-zrowmeana.lo: zrowmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-zrowmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-zrowmeana.Tpo -c -o libMean_la-zrowmeana.lo `test -f 'zrowmeana.c' || echo '$(srcdir)/'`zrowmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-zrowmeana.Tpo $(DEPDIR)/libMean_la-zrowmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowmeana.c' object='libMean_la-zrowmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-zrowmeana.lo `test -f 'zrowmeana.c' || echo '$(srcdir)/'`zrowmeana.c
+
+libMean_la-zcolumnmeana.lo: zcolumnmeana.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -MT libMean_la-zcolumnmeana.lo -MD -MP -MF $(DEPDIR)/libMean_la-zcolumnmeana.Tpo -c -o libMean_la-zcolumnmeana.lo `test -f 'zcolumnmeana.c' || echo '$(srcdir)/'`zcolumnmeana.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMean_la-zcolumnmeana.Tpo $(DEPDIR)/libMean_la-zcolumnmeana.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnmeana.c' object='libMean_la-zcolumnmeana.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMean_la_CFLAGS) $(CFLAGS) -c -o libMean_la-zcolumnmeana.lo `test -f 'zcolumnmeana.c' || echo '$(srcdir)/'`zcolumnmeana.c
+
+testDoubleMean-testDoubleMean.o: testDoubleMean.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMean_CFLAGS) $(CFLAGS) -MT testDoubleMean-testDoubleMean.o -MD -MP -MF $(DEPDIR)/testDoubleMean-testDoubleMean.Tpo -c -o testDoubleMean-testDoubleMean.o `test -f 'testDoubleMean.c' || echo '$(srcdir)/'`testDoubleMean.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMean-testDoubleMean.Tpo $(DEPDIR)/testDoubleMean-testDoubleMean.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMean.c' object='testDoubleMean-testDoubleMean.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMean_CFLAGS) $(CFLAGS) -c -o testDoubleMean-testDoubleMean.o `test -f 'testDoubleMean.c' || echo '$(srcdir)/'`testDoubleMean.c
+
+testDoubleMean-testDoubleMean.obj: testDoubleMean.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMean_CFLAGS) $(CFLAGS) -MT testDoubleMean-testDoubleMean.obj -MD -MP -MF $(DEPDIR)/testDoubleMean-testDoubleMean.Tpo -c -o testDoubleMean-testDoubleMean.obj `if test -f 'testDoubleMean.c'; then $(CYGPATH_W) 'testDoubleMean.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMean.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMean-testDoubleMean.Tpo $(DEPDIR)/testDoubleMean-testDoubleMean.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMean.c' object='testDoubleMean-testDoubleMean.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMean_CFLAGS) $(CFLAGS) -c -o testDoubleMean-testDoubleMean.obj `if test -f 'testDoubleMean.c'; then $(CYGPATH_W) 'testDoubleMean.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMean.c'; fi`
+
+testFloatMean-testFloatMean.o: testFloatMean.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMean_CFLAGS) $(CFLAGS) -MT testFloatMean-testFloatMean.o -MD -MP -MF $(DEPDIR)/testFloatMean-testFloatMean.Tpo -c -o testFloatMean-testFloatMean.o `test -f 'testFloatMean.c' || echo '$(srcdir)/'`testFloatMean.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMean-testFloatMean.Tpo $(DEPDIR)/testFloatMean-testFloatMean.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMean.c' object='testFloatMean-testFloatMean.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMean_CFLAGS) $(CFLAGS) -c -o testFloatMean-testFloatMean.o `test -f 'testFloatMean.c' || echo '$(srcdir)/'`testFloatMean.c
+
+testFloatMean-testFloatMean.obj: testFloatMean.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMean_CFLAGS) $(CFLAGS) -MT testFloatMean-testFloatMean.obj -MD -MP -MF $(DEPDIR)/testFloatMean-testFloatMean.Tpo -c -o testFloatMean-testFloatMean.obj `if test -f 'testFloatMean.c'; then $(CYGPATH_W) 'testFloatMean.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMean.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMean-testFloatMean.Tpo $(DEPDIR)/testFloatMean-testFloatMean.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMean.c' object='testFloatMean-testFloatMean.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMean_CFLAGS) $(CFLAGS) -c -o testFloatMean-testFloatMean.obj `if test -f 'testFloatMean.c'; then $(CYGPATH_W) 'testFloatMean.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMean.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/mean/ccolumnmeana.c b/2.3-1/src/c/statisticsFunctions/mean/ccolumnmeana.c
new file mode 100644
index 00000000..c0254c44
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/ccolumnmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void ccolumnmeana(floatComplex *in, int lines, int columns, floatComplex *out) {
+ int i = 0;
+
+ ccolumnsuma(in, lines, columns, out);
+ for (i = 0; i < lines; ++i)
+ {
+ out[i] = crdivs(out[i] , FloatComplex((float) columns, 0.0f));
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/cmeana.c b/2.3-1/src/c/statisticsFunctions/mean/cmeana.c
new file mode 100644
index 00000000..ad2a66fc
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/cmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+
+floatComplex cmeana(floatComplex *in, int size) {
+ floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = cadds(accumulate, in[i]);
+ }
+ return FloatComplex(creals(accumulate) / (float) size, cimags(accumulate) / (float) size);
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/crowmeana.c b/2.3-1/src/c/statisticsFunctions/mean/crowmeana.c
new file mode 100644
index 00000000..0b073c41
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/crowmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void crowmeana(floatComplex *in, int lines, int columns, floatComplex *out) {
+ int i = 0;
+
+ crowsuma(in, lines, columns, out);
+ for (i = 0; i < columns; ++i)
+ {
+ out[i] = crdivs(out[i], FloatComplex((float)lines, 0.0f));
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/dcolumnmeana.c b/2.3-1/src/c/statisticsFunctions/mean/dcolumnmeana.c
new file mode 100644
index 00000000..90d7863b
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/dcolumnmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void dcolumnmeana(double *in, int lines, int columns, double *out) {
+ int i = 0;
+
+ dcolumnsuma(in, lines, columns, out);
+ for (i = 0; i < lines; ++i)
+ {
+ out[i] /= (double) columns;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/dmeana.c b/2.3-1/src/c/statisticsFunctions/mean/dmeana.c
new file mode 100644
index 00000000..db11766a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/dmeana.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+
+double dmeana(double *in, int size) {
+ double accumulate = 0.0;
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate += in[i];
+ }
+ return accumulate / (double) size;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/drowmeana.c b/2.3-1/src/c/statisticsFunctions/mean/drowmeana.c
new file mode 100644
index 00000000..aec1b31a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/drowmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void drowmeana(double *in, int lines, int columns, double *out) {
+ int i = 0;
+
+ drowsuma(in, lines, columns, out);
+ for (i = 0; i < columns; ++i)
+ {
+ out[i] /= (double) lines;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/scolumnmeana.c b/2.3-1/src/c/statisticsFunctions/mean/scolumnmeana.c
new file mode 100644
index 00000000..59985d5e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/scolumnmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void scolumnmeana(float *in, int lines, int columns, float *out) {
+ int i = 0;
+
+ scolumnsuma(in, lines, columns, out);
+ for (i = 0; i < lines; ++i)
+ {
+ out[i] /= (float) columns;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/smeana.c b/2.3-1/src/c/statisticsFunctions/mean/smeana.c
new file mode 100644
index 00000000..f4b1cd10
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/smeana.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+
+float smeana(float *in, int size) {
+ float accumulate = 0.0f;
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate += in[i];
+ }
+ return accumulate / (float) size;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/srowmeana.c b/2.3-1/src/c/statisticsFunctions/mean/srowmeana.c
new file mode 100644
index 00000000..3fb799f0
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/srowmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void srowmeana(float *in, int lines, int columns, float *out) {
+ int i = 0;
+
+ srowsuma(in, lines, columns, out);
+ for (i = 0; i < columns; ++i)
+ {
+ out[i] /= (float) lines;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/testDoubleMean.c b/2.3-1/src/c/statisticsFunctions/mean/testDoubleMean.c
new file mode 100644
index 00000000..b0eeffca
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/testDoubleMean.c
@@ -0,0 +1,498 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "mean.h"
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int dmeansTest(void) {
+ double value1 = 3.0;
+ double value2 = 1.123456789;
+
+ printf("\n>>>> Mean Double Scalar Test\n");
+ assert( ( fabs(dmeans(value1) ) - ( 3.0 ) ) / fabs ( dmeans(value1) ) < 3e-16 );
+ assert( ( fabs(dmeans(value2) ) - ( 1.123456789 ) ) / fabs ( dmeans(value2) ) < 3e-16 );
+
+ return 0;
+}
+
+static int dmeanaTest(void) {
+ double table1[3] = {3.0, 3.0, 3.0};
+ double table2[5] = {9.186784563,
+ 9.186784563,
+ 9.186784563,
+ 9.186784563,
+ 9.186784563};
+
+ printf("\n>>>> Mean Double Array Test\n");
+ assert( ( fabs(dmeana(table1, 3) ) - ( 9.0 / 3.0 ) ) / fabs ( dmeana(table1, 3) ) < 3e-16 );
+ assert(( ( fabs(dmeana(table2, 5) ) - ( (9.186784563 + 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563) / 5.0) ) ) / fabs ( dmeana(table2, 5) ) < 3e-16 );
+ return 0;
+}
+
+static int dcolumnmeanaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double columnMeanmedTable1_3_3[3] = {0};
+ double columnMeanmedTable1_1_9[1] = {0};
+ double columnMeanmedTable1_9_1[9] = {0};
+ double columnMeanmedTable2_2_5[2] = {0};
+ double columnMeanmedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Mean Double Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 6 15 24 ]
+ [ 7 8 9 ]
+ */
+ dcolumnmeana(table1, 3, 3,columnMeanmedTable1_3_3);
+ assert( ( fabs(columnMeanmedTable1_3_3[0] ) - ( 6.0 / 3.0 ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable1_3_3[1] ) - ( 15.0 / 3.0 ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable1_3_3[2] ) - ( 24.0 / 3.0 ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 3e-16 );
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ dcolumnmeana(table1, 1, 9,columnMeanmedTable1_1_9);
+ assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 45.0 / 9.0 ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 3e-16 );
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ dcolumnmeana(table1, 9, 1,columnMeanmedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnMeanmedTable1_9_1[%d] = %e\n", i, columnMeanmedTable1_9_1[i]);
+ assert(columnMeanmedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 25 30 ]
+ */
+ dcolumnmeana(table2, 2, 5,columnMeanmedTable2_2_5);
+ assert( ( fabs(columnMeanmedTable2_2_5[0] ) - ( 25.0 / 5.0 ) ) / fabs ( columnMeanmedTable2_2_5[0] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_2_5[1] ) - ( 30.0 / 5.0 ) ) / fabs ( columnMeanmedTable2_2_5[1] ) < 3e-16 );
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedTable2_2_5[%d] = %e\n", i, columnMeanmedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 7 9 11 13 15 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ dcolumnmeana(table2, 5, 2,columnMeanmedTable2_5_2);
+ assert( ( fabs(columnMeanmedTable2_5_2[0] ) - ( 7.0 / 2.0 ) ) / fabs ( columnMeanmedTable2_5_2[0] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[1] ) - ( 9.0 / 2.0 ) ) / fabs ( columnMeanmedTable2_5_2[1] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[2] ) - ( 11.0 / 2.0 ) ) / fabs ( columnMeanmedTable2_5_2[2] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[3] ) - ( 13.0 / 2.0 ) ) / fabs ( columnMeanmedTable2_5_2[3] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[4] ) - ( 15.0 / 2.0 ) ) / fabs ( columnMeanmedTable2_5_2[4] ) < 3e-16 );
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int drowmeanaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double rowMeanmedTable1_3_3[3] = {0};
+ double rowMeanmedTable1_1_9[9] = {0};
+ double rowMeanmedTable1_9_1[1] = {0};
+ double rowMeanmedTable2_2_5[5] = {0};
+ double rowMeanmedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Mean Double Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 12 15 18 ]
+ [ 7 8 9 ]
+ */
+ drowmeana(table1, 3, 3,rowMeanmedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedTable1_3_3[%d] = %e\n", i, rowMeanmedTable1_3_3[i]);
+ }
+ assert( ( fabs(rowMeanmedTable1_3_3[0] ) - ( 12.0 / 3.0 ) ) / fabs ( rowMeanmedTable1_3_3[0] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable1_3_3[1] ) - ( 15.0 / 3.0 ) ) / fabs ( rowMeanmedTable1_3_3[1] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable1_3_3[2] ) - ( 18.0 / 3.0 ) ) / fabs ( rowMeanmedTable1_3_3[2] ) < 3e-16 );
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ drowmeana(table1, 1, 9,rowMeanmedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowMeanmedTable1_1_9[%d] = %e\n", i, rowMeanmedTable1_1_9[i]);
+ assert(rowMeanmedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ drowmeana(table1, 9, 1,rowMeanmedTable1_9_1);
+ assert( ( fabs(rowMeanmedTable1_9_1[0] ) - ( 45.0 / 9.0 ) ) / fabs ( rowMeanmedTable1_9_1[0] ) < 3e-16 );
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 3 7 11 15 19 ]
+ */
+ drowmeana(table2, 2, 5,rowMeanmedTable2_2_5);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowMeanmedTable2_2_5[%d] = %e\n", i, rowMeanmedTable2_2_5[i]);
+ }
+ assert( ( fabs(rowMeanmedTable2_2_5[0] ) - ( 3.0 / 2.0 ) ) / fabs ( rowMeanmedTable2_2_5[0] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[1] ) - ( 7.0 / 2.0 ) ) / fabs ( rowMeanmedTable2_2_5[1] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[2] ) - ( 11.0 / 2.0 ) ) / fabs ( rowMeanmedTable2_2_5[2] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[3] ) - ( 15.0 / 2.0 ) ) / fabs ( rowMeanmedTable2_2_5[3] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[4] ) - ( 19.0 / 2.0 ) ) / fabs ( rowMeanmedTable2_2_5[4] ) < 3e-16 );
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 15 40 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ drowmeana(table2, 5, 2,rowMeanmedTable2_5_2);
+ assert( ( fabs(rowMeanmedTable2_5_2[0] ) - ( 15.0 / 5.0 ) ) / fabs ( rowMeanmedTable2_5_2[0] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_5_2[1] ) - ( 40.0 / 5.0 ) ) / fabs ( rowMeanmedTable2_5_2[1] ) < 3e-16 );
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("rowMeanmedTable2_5_2[%d] = %e\n", i, rowMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int zmeansTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex value2 = DoubleComplex(1.123456789, 1.123456789);
+
+ printf("\n>>>> Mean Double Complex Scalar Test\n");
+ assert( ( fabs(zreals(zmeans(value1)) ) - ( 3.0 ) ) / fabs ( zreals(zmeans(value1)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeans(value1)) ) - ( 3.0 ) ) / fabs ( zimags(zmeans(value1)) ) < 3e-16 );
+ assert( ( fabs(zreals(zmeans(value2)) ) - ( 1.123456789 ) ) / fabs ( zreals(zmeans(value2)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeans(value2)) ) - ( 1.123456789 ) ) / fabs ( zimags(zmeans(value2)) ) < 3e-16 );
+ return 0;
+}
+
+static int zmeanaTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex table1[3];
+ doubleComplex value2 = DoubleComplex(9.186784563,9.186784563);
+ doubleComplex table2[5];
+
+ printf("\n>>>> Mean Double Complex Array Test\n");
+ table1[0] = value1;
+ table1[1] = value1;
+ table1[2] = value1;
+
+ table2[0] = value2;
+ table2[1] = value2;
+ table2[2] = value2;
+ table2[3] = value2;
+ table2[4] = value2;
+
+#ifdef LOCAL_DEBUG
+ printf("--------\n");
+ printf("%e\n", zimags(zmeana(table1, 3)));
+ printf("%e\n", zreals(zmeana(table2, 5)));
+ printf("%e\n", zimags(zmeana(table2, 5)));
+ printf("%e\n", zreals(zmeana(table2, 5)));
+ printf("%e\n", zimags(zmeana(table2, 5)));
+ printf("--------\n");
+#endif
+ assert( ( fabs(zreals(zmeana(table1, 3)) ) - ( 9.0 / 3.0 ) ) / fabs ( zreals(zmeana(table1, 3)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeana(table1, 3)) ) - ( 9.0 / 3.0 ) ) / fabs ( zimags(zmeana(table1, 3)) ) < 3e-16 );
+ assert( ( fabs(zreals(zmeana(table2, 5)) ) - ( (9.186784563 + 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563) / 5.0 ) ) / fabs ( zreals(zmeana(table2, 5)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeana(table2, 5)) ) - ( (9.186784563 + 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563) / 5.0 ) ) / fabs ( zimags(zmeana(table2, 5)) ) < 3e-16 );
+
+ return 0;
+}
+
+static int zrowmeanaTest(void) {
+ int i = 0;
+ doubleComplex in[12];
+ doubleComplex rowMeanmedIn_4_3[3];
+ doubleComplex rowMeanmedIn_3_4[4];
+ doubleComplex rowMeanmedIn_6_2[2];
+ doubleComplex rowMeanmedIn_2_6[6];
+ doubleComplex rowMeanmedIn_1_12[12];
+ doubleComplex rowMeanmedIn_12_1[1];
+
+ printf("\n>>>> Row Mean Double Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = DoubleComplex((double) i / 10.0, (11.0 - (double) i) / 10.0);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 0.6+3.8i 2.2+2.2i 3.8+0.6i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ zrowmeana(in, 4, 3, rowMeanmedIn_4_3);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedIn_4_3[%d] = %e + %ei\n", i, zreals(rowMeanmedIn_4_3[i]), zimags(rowMeanmedIn_4_3[i]));
+ }
+ assert(fabs(zreals(rowMeanmedIn_4_3[0]) - 0.6 / 4.0) < 1e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_4_3[0]) ) - ( 3.8 / 4.0 ) ) / fabs ( zimags(rowMeanmedIn_4_3[0]) ) < 3e-16 );
+ assert( ( fabs(zreals(rowMeanmedIn_4_3[1]) ) - ( 2.2 / 4.0 ) ) / fabs ( zreals(rowMeanmedIn_4_3[1]) ) < 3e-16 );
+ assert(fabs(zimags(rowMeanmedIn_4_3[1]) - 2.2 / 4.0) < 3e-16);
+ assert(fabs(zreals(rowMeanmedIn_4_3[2]) - 3.8 / 4.0) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_4_3[2]) ) - ( 0.6 / 4.0 ) ) / fabs ( zimags(rowMeanmedIn_4_3[2]) ) < 3e-16 );
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 0.3+3.i 1.2+2.1i 2.1+1.2i 3.+0.3i]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ zrowmeana(in, 3, 4, rowMeanmedIn_3_4);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("rowMeanmedIn_3_4[%d] = %e + %ei\n", i, zreals(rowMeanmedIn_3_4[i]), zimags(rowMeanmedIn_3_4[i]));
+ }
+ assert(fabs(zreals(rowMeanmedIn_3_4[0]) - 0.3 / 3.0) < 1e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_3_4[0]) ) - ( 3.0 / 3.0 ) ) / fabs ( zimags(rowMeanmedIn_3_4[0]) ) < 3e-16 );
+ assert(zreals(rowMeanmedIn_3_4[1]) == 1.2 / 3.0 && zimags(rowMeanmedIn_3_4[1]) == 2.1 / 3.0);
+ assert(fabs(zreals(rowMeanmedIn_3_4[2]) - 2.1 / 3.0) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_3_4[2]) ) - ( 1.2 / 3.0 ) ) / fabs ( zimags(rowMeanmedIn_3_4[2]) ) < 3e-16 );
+ assert( ( fabs(zreals(rowMeanmedIn_3_4[3]) ) - ( 3.0 / 3.0 ) ) / fabs ( zreals(rowMeanmedIn_3_4[3]) ) < 3e-16 );
+ assert(fabs(zimags(rowMeanmedIn_3_4[3]) - 0.3 / 3.0) < 1e-16);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 1.5+5.1i 5.1+1.5i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ zrowmeana(in, 6, 2, rowMeanmedIn_6_2);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("rowMeanmedIn_6_2[%d] = %e + %ei\n", i, zreals(rowMeanmedIn_6_2[i]), zimags(rowMeanmedIn_6_2[i]));
+ }
+ assert(zreals(rowMeanmedIn_6_2[0]) == 1.5 / 6.0 && zimags(rowMeanmedIn_6_2[0]) == 5.1 / 6.0);
+ assert(zreals(rowMeanmedIn_6_2[1]) == 5.1 / 6.0 && zimags(rowMeanmedIn_6_2[1]) == 1.5 / 6.0);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 0.1+2.1i 0.5+1.7i 0.9+1.3i 1.3+0.9i 1.7+0.5i 2.1+0.1i ]
+ */
+ zrowmeana(in, 2, 6, rowMeanmedIn_2_6);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("rowMeanmedIn_2_6[%d] = %e + %ei\n", i, zreals(rowMeanmedIn_2_6[i]), zimags(rowMeanmedIn_2_6[i]));
+ }
+ assert(zreals(rowMeanmedIn_2_6[0]) == 0.1 / 2.0 && zimags(rowMeanmedIn_2_6[0]) == 2.1 / 2.0);
+ assert( ( fabs(zreals(rowMeanmedIn_2_6[1]) ) - ( 0.5 / 2.0 ) ) / fabs(zreals(rowMeanmedIn_2_6[1])) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_2_6[1]) ) - ( 1.7 / 2.0 ) ) / fabs(zimags(rowMeanmedIn_2_6[1])) < 3e-16);
+ assert( ( fabs(zreals(rowMeanmedIn_2_6[2]) ) - ( 0.9 / 2.0 ) ) / fabs(zreals(rowMeanmedIn_2_6[2])) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_2_6[2]) ) - ( 1.3 / 2.0 ) ) / fabs(zimags(rowMeanmedIn_2_6[2])) < 3e-16);
+ assert( ( fabs(zreals(rowMeanmedIn_2_6[3]) ) - ( 1.3 / 2.0 ) ) / fabs(zreals(rowMeanmedIn_2_6[3])) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_2_6[3]) ) - ( 0.9 / 2.0 ) ) / fabs(zimags(rowMeanmedIn_2_6[3])) < 3e-16);
+ assert( ( fabs(zreals(rowMeanmedIn_2_6[4]) ) - ( 1.7 / 2.0 ) ) / fabs(zreals(rowMeanmedIn_2_6[4])) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_2_6[4]) ) - ( 0.5 / 2.0 ) ) / fabs(zimags(rowMeanmedIn_2_6[4])) < 3e-16);
+ assert( ( fabs(zreals(rowMeanmedIn_2_6[5]) ) - ( 2.1 / 2.0 ) ) / fabs(zreals(rowMeanmedIn_2_6[5])) < 3e-16);
+ assert( ( fabs(zimags(rowMeanmedIn_2_6[5]) ) - ( 0.1 / 2.0 ) ) / fabs(zimags(rowMeanmedIn_2_6[5])) < 3e-16);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ */
+ zrowmeana(in, 1, 12, rowMeanmedIn_1_12);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("rowMeanmedIn_1_12[%d] = %e + %ei\n", i, zreals(rowMeanmedIn_1_12[i]), zimags(rowMeanmedIn_1_12[i]));
+ assert(zreals(rowMeanmedIn_1_12[i]) == zreals(in[i]) && zimags(rowMeanmedIn_1_12[i]) == zimags(in[i]));
+ }
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 6.6+6.6i ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ zrowmeana(in, 12, 1, rowMeanmedIn_12_1);
+ printf("rowMeanmedIn_12_1[%d] = %e + %ei\n", 0, zreals(rowMeanmedIn_12_1[0]), zimags(rowMeanmedIn_12_1[0]));
+ assert(zreals(rowMeanmedIn_12_1[0]) == 6.6 / 12.0 && zimags(rowMeanmedIn_12_1[0]) == 6.6 / 12.0);
+
+ return 0;
+}
+
+static int zcolumnmeanaTest(void) {
+ int i = 0;
+ doubleComplex in[12];
+ doubleComplex columnMeanmedIn_4_3[4];
+ doubleComplex columnMeanmedIn_3_4[3];
+ doubleComplex columnMeanmedIn_6_2[6];
+ doubleComplex columnMeanmedIn_2_6[2];
+ doubleComplex columnMeanmedIn_1_12[1];
+ doubleComplex columnMeanmedIn_12_1[12];
+
+ printf("\n>>>> ColumnMean Double Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = DoubleComplex((double) i / 10.0, (11.0 - (double) i) / 10.0);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 1.2+2.1i 1.5+1.8i 1.8+1.5i 2.1+1.2i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ zcolumnmeana(in, 4, 3, columnMeanmedIn_4_3);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("columnMeanmedIn_4_3[%d] = %e + %ei\n", i, zreals(columnMeanmedIn_4_3[i]), zimags(columnMeanmedIn_4_3[i]));
+ }
+ assert(fabs(zreals(columnMeanmedIn_4_3[0]) - 1.2 / 3.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_4_3[0]) - 2.1 / 3.0) < 3e-16);
+ assert(fabs(zreals(columnMeanmedIn_4_3[1]) - 1.5 / 3.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_4_3[1]) - 1.8 / 3.0) < 3e-16);
+ assert(fabs(zreals(columnMeanmedIn_4_3[2]) - 1.8 / 3.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_4_3[2]) - 1.5 / 3.0) < 3e-16);
+ assert(fabs(zreals(columnMeanmedIn_4_3[3]) - 2.1 / 3.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_4_3[3]) - 1.2 / 3.0) < 3e-16);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 1.8+2.6i 2.2+2.2i 2.6+1.8i ]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ zcolumnmeana(in, 3, 4, columnMeanmedIn_3_4);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("columnMeanmedIn_3_4[%d] = %e + %ei\n", i, zreals(columnMeanmedIn_3_4[i]), zimags(columnMeanmedIn_3_4[i]));
+ }
+ assert(fabs(zreals(columnMeanmedIn_3_4[0]) - 1.8 / 4.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_3_4[0]) - 2.6 / 4.0) < 3e-16);
+ assert(zreals(columnMeanmedIn_3_4[1]) == 2.2 / 4.0 && zimags(columnMeanmedIn_3_4[1]) == 2.2 / 4.0);
+ assert(zreals(columnMeanmedIn_3_4[2]) == 2.6 / 4.0 && zimags(columnMeanmedIn_3_4[2]) == 1.8 / 4.0);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 0.6+1.6i 0.8+1.4i 1+1.2i 1.2+i 1.4+0.8i 1.6+0.6i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ zcolumnmeana(in, 6, 2, columnMeanmedIn_6_2);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("columnMeanmedIn_6_2[%d] = %e + %ei\n", i, zreals(columnMeanmedIn_6_2[i]), zimags(columnMeanmedIn_6_2[i]));
+ }
+ assert(zreals(columnMeanmedIn_6_2[0]) == 0.6 / 2.0 && zimags(columnMeanmedIn_6_2[0]) == 1.6 / 2.0);
+ assert(fabs(zreals(columnMeanmedIn_6_2[1]) - 0.8 / 2.0) < 3e-16);
+ assert(zimags(columnMeanmedIn_6_2[1]) == 1.4 / 2.0);
+ assert(zreals(columnMeanmedIn_6_2[2]) == 1.0 / 2.0 && zimags(columnMeanmedIn_6_2[2]) == 1.2 / 2.0);
+ assert(zreals(columnMeanmedIn_6_2[3]) == 1.2 / 2.0 && zimags(columnMeanmedIn_6_2[3]) == 1.0 / 2.0);
+ assert(zreals(columnMeanmedIn_6_2[4]) == 1.4 / 2.0);
+ assert(fabs(zimags(columnMeanmedIn_6_2[4]) - 0.8 / 2.0) < 3e-16);
+ assert(zreals(columnMeanmedIn_6_2[5]) == 1.6 / 2.0 && zimags(columnMeanmedIn_6_2[5]) == 0.6 / 2.0);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 3+3.6i 3.6+3i ]
+ */
+ zcolumnmeana(in, 2, 6, columnMeanmedIn_2_6);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedIn_2_6[%d] = %e + %ei\n", i, zreals(columnMeanmedIn_2_6[i]), zimags(columnMeanmedIn_2_6[i]));
+ }
+ assert(fabs(zreals(columnMeanmedIn_2_6[0]) - 3.0 / 6.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_2_6[0]) - 3.6 / 6.0) < 3e-16);
+ assert(fabs(zreals(columnMeanmedIn_2_6[1]) - 3.6 / 6.0) < 3e-16);
+ assert(fabs(zimags(columnMeanmedIn_2_6[1]) - 3.0 / 6.0) < 3e-16);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 6.6+6.6i ]
+ */
+ zcolumnmeana(in, 1, 12, columnMeanmedIn_1_12);
+ printf("columnMeanmedIn_1_12[%d] = %e + %ei\n", 0, zreals(columnMeanmedIn_1_12[0]), zimags(columnMeanmedIn_1_12[0]));
+ assert(zreals(columnMeanmedIn_1_12[0]) == 6.6 / 12.0 && zimags(columnMeanmedIn_1_12[0]) == 6.6 / 12.0);
+
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ zcolumnmeana(in, 12, 1, columnMeanmedIn_12_1);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("columnMeanmedIn_12_1[%d] = %e + %ei\n", i, zreals(columnMeanmedIn_12_1[i]), zimags(columnMeanmedIn_12_1[i]));
+ assert(zreals(columnMeanmedIn_12_1[i]) == zreals(in[i]) && zimags(columnMeanmedIn_12_1[i]) == zimags(in[i]));
+ }
+
+ return 0;
+}
+
+static int testMean(void) {
+
+ dmeansTest();
+ dmeanaTest();
+ drowmeanaTest();
+ dcolumnmeanaTest();
+ zmeansTest();
+ zmeanaTest();
+ zrowmeanaTest();
+ zcolumnmeanaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testMean() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/testFloatMean.c b/2.3-1/src/c/statisticsFunctions/mean/testFloatMean.c
new file mode 100644
index 00000000..e5c6d9d8
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/testFloatMean.c
@@ -0,0 +1,481 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "mean.h"
+
+/* #define LOCAL_DEBUG */
+
+static int smeansTest(void) {
+ float value1 = 3.0f;
+ float value2 = 1.123456789f;
+
+ printf("\n>>>> Mean Float Scalar Test\n");
+ assert(smeans(value1) == 3.0f);
+ assert(smeans(value2) == 1.123456789f);
+
+ return 0;
+}
+
+static int smeanaTest(void) {
+ float table1[3] = {3.0f, 3.0f, 3.0f};
+ float table2[5] = {9.186784563f,
+ 9.186784563f,
+ 9.186784563f,
+ 9.186784563f,
+ 9.186784563f};
+
+ printf("\n>>>> Mean Float Array Test\n");
+ assert(smeana(table1, 3) == 9.0f / 3.0f);
+ assert((smeana(table2, 5) - (9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f) / 5.0f) / smeana(table2, 5) < 1e-6);
+ return 0;
+}
+
+static int scolumnmeanaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float columnMeanmedTable1_3_3[3] = {0};
+ float columnMeanmedTable1_1_9[1] = {0};
+ float columnMeanmedTable1_9_1[9] = {0};
+ float columnMeanmedTable2_2_5[2] = {0};
+ float columnMeanmedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Mean Float Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 6 15 24 ]
+ [ 7 8 9 ]
+ */
+ scolumnmeana(table1, 3, 3,columnMeanmedTable1_3_3);
+ assert(columnMeanmedTable1_3_3[0] == 6.0f / 3.0f);
+ assert(columnMeanmedTable1_3_3[1] == 15.0f / 3.0f);
+ assert(columnMeanmedTable1_3_3[2] == 24.0f / 3.0f);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ scolumnmeana(table1, 1, 9,columnMeanmedTable1_1_9);
+ assert(columnMeanmedTable1_1_9[0] == 45.0f / 9.0f);
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ scolumnmeana(table1, 9, 1,columnMeanmedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnMeanmedTable1_9_1[%d] = %e\n", i, columnMeanmedTable1_9_1[i]);
+ assert(columnMeanmedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 25 30 ]
+ */
+ scolumnmeana(table2, 2, 5,columnMeanmedTable2_2_5);
+ assert(columnMeanmedTable2_2_5[0] == 25.0f / 5.0f);
+ assert(columnMeanmedTable2_2_5[1] == 30.0f / 5.0f);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedTable2_2_5[%d] = %e\n", i, columnMeanmedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 7 9 11 13 15 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ scolumnmeana(table2, 5, 2,columnMeanmedTable2_5_2);
+ assert(columnMeanmedTable2_5_2[0] == 7.0f / 2.0f);
+ assert(columnMeanmedTable2_5_2[1] == 9.0f / 2.0f);
+ assert(columnMeanmedTable2_5_2[2] == 11.0f / 2.0f);
+ assert(columnMeanmedTable2_5_2[3] == 13.0f / 2.0f);
+ assert(columnMeanmedTable2_5_2[4] == 15.0f / 2.0f);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int srowmeanaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float rowMeanmedTable1_3_3[3] = {0};
+ float rowMeanmedTable1_1_9[9] = {0};
+ float rowMeanmedTable1_9_1[1] = {0};
+ float rowMeanmedTable2_2_5[5] = {0};
+ float rowMeanmedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Mean Float Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 12 15 18 ]
+ [ 7 8 9 ]
+ */
+ srowmeana(table1, 3, 3,rowMeanmedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedTable1_3_3[%d] = %e\n", i, rowMeanmedTable1_3_3[i]);
+ }
+ assert(rowMeanmedTable1_3_3[0] == 12.0f / 3.0f);
+ assert(rowMeanmedTable1_3_3[1] == 15.0f / 3.0f);
+ assert(rowMeanmedTable1_3_3[2] == 18.0f / 3.0f);
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ srowmeana(table1, 1, 9,rowMeanmedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowMeanmedTable1_1_9[%d] = %e\n", i, rowMeanmedTable1_1_9[i]);
+ assert(rowMeanmedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ srowmeana(table1, 9, 1,rowMeanmedTable1_9_1);
+ assert(rowMeanmedTable1_9_1[0] == 45.0f / 9.0f);
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 3 7 11 15 19 ]
+ */
+ srowmeana(table2, 2, 5,rowMeanmedTable2_2_5);
+ assert(rowMeanmedTable2_2_5[0] == 3.0f / 2.0f);
+ assert(rowMeanmedTable2_2_5[1] == 7.0f / 2.0f);
+ assert(rowMeanmedTable2_2_5[2] == 11.0f / 2.0f);
+ assert(rowMeanmedTable2_2_5[3] == 15.0f / 2.0f);
+ assert(rowMeanmedTable2_2_5[4] == 19.0f / 2.0f);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowMeanmedTable2_2_5[%d] = %e\n", i, rowMeanmedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 15 40 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ srowmeana(table2, 5, 2,rowMeanmedTable2_5_2);
+ assert(rowMeanmedTable2_5_2[0] == 15.0f / 5.0f);
+ assert(rowMeanmedTable2_5_2[1] == 40.0f / 5.0f);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("rowMeanmedTable2_5_2[%d] = %e\n", i, rowMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int cmeansTest(void) {
+ floatComplex value1 = FloatComplex(3.0f, 3.0f);
+ floatComplex value2 = FloatComplex(1.123456789f, 1.123456789f);
+
+ printf("\n>>>> Mean Float Complex Scalar Test\n");
+ assert(creals(cmeans(value1)) == 3.0f);
+ assert(cimags(cmeans(value1)) == 3.0f);
+ assert(creals(cmeans(value2)) == 1.123456789f);
+ assert(cimags(cmeans(value2)) == 1.123456789f);
+ return 0;
+}
+
+static int cmeanaTest(void) {
+ floatComplex value1 = FloatComplex(3.0f, 3.0f);
+ floatComplex table1[3];
+ floatComplex value2 = FloatComplex(9.186784563f,9.186784563f);
+ floatComplex table2[5];
+
+ printf("\n>>>> Mean Float Complex Array Test\n");
+ table1[0] = value1;
+ table1[1] = value1;
+ table1[2] = value1;
+
+ table2[0] = value2;
+ table2[1] = value2;
+ table2[2] = value2;
+ table2[3] = value2;
+ table2[4] = value2;
+
+#ifdef LOCAL_DEBUG
+ printf("--------\n");
+ printf("%e\n", cimags(cmeana(table1, 3)));
+ printf("%e\n", creals(cmeana(table2, 5)));
+ printf("%e\n", cimags(cmeana(table2, 5)));
+ printf("%e\n", creals(cmeana(table2, 5)));
+ printf("%e\n", cimags(cmeana(table2, 5)));
+ printf("--------\n");
+#endif
+ assert(creals(cmeana(table1, 3)) == 9.0f / 3.0f);
+ assert(cimags(cmeana(table1, 3)) == 9.0f / 3.0f);
+ assert(creals(cmeana(table2, 5)) == (9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f) / 5.0f);
+ assert(cimags(cmeana(table2, 5)) == (9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f) / 5.0f);
+
+ return 0;
+}
+
+static int crowmeanaTest(void) {
+ int i = 0;
+ floatComplex in[12];
+ floatComplex rowMeanmedIn_4_3[3];
+ floatComplex rowMeanmedIn_3_4[4];
+ floatComplex rowMeanmedIn_6_2[2];
+ floatComplex rowMeanmedIn_2_6[6];
+ floatComplex rowMeanmedIn_1_12[12];
+ floatComplex rowMeanmedIn_12_1[1];
+
+ printf("\n>>>> Row Mean Float Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = FloatComplex((float) i / 10.0f, (11.0f - (float) i) / 10.0f);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 0.6+3.8i 2.2+2.2i 3.8+0.6i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ crowmeana(in, 4, 3, rowMeanmedIn_4_3);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedIn_4_3[%d] = %e + %ei\n", i, creals(rowMeanmedIn_4_3[i]), cimags(rowMeanmedIn_4_3[i]));
+ }
+ assert(creals(rowMeanmedIn_4_3[0]) == 0.6f / 4.0f && cimags(rowMeanmedIn_4_3[0]) == 3.8f / 4.0f);
+ assert(creals(rowMeanmedIn_4_3[1]) == 2.2f / 4.0f && cimags(rowMeanmedIn_4_3[1]) == 2.2f / 4.0f);
+ assert(fabs(creals(rowMeanmedIn_4_3[2]) - 3.8f / 4.0f) < 1e-06);
+ assert(cimags(rowMeanmedIn_4_3[2]) == 0.6f / 4.0f);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 0.3+3.i 1.2+2.1i 2.1+1.2i 3.+0.3i]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ crowmeana(in, 3, 4, rowMeanmedIn_3_4);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("rowMeanmedIn_3_4[%d] = %e + %ei\n", i, creals(rowMeanmedIn_3_4[i]), cimags(rowMeanmedIn_3_4[i]));
+ }
+ assert(creals(rowMeanmedIn_3_4[0]) == 0.3f / 3.0f && cimags(rowMeanmedIn_3_4[0]) == 3.0f / 3.0f);
+ assert(creals(rowMeanmedIn_3_4[1]) == 1.2f / 3.0f && cimags(rowMeanmedIn_3_4[1]) == 2.1f / 3.0f);
+ assert(creals(rowMeanmedIn_3_4[2]) == 2.1f / 3.0f && cimags(rowMeanmedIn_3_4[2]) == 1.2f / 3.0f);
+ assert(creals(rowMeanmedIn_3_4[3]) == 3.0f / 3.0f && cimags(rowMeanmedIn_3_4[3]) == 0.3f / 3.0f);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 1.5+5.1i 5.1+1.5i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ crowmeana(in, 6, 2, rowMeanmedIn_6_2);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("rowMeanmedIn_6_2[%d] = %e + %ei\n", i, creals(rowMeanmedIn_6_2[i]), cimags(rowMeanmedIn_6_2[i]));
+ }
+ assert(creals(rowMeanmedIn_6_2[0]) == 1.5f / 6.0f && cimags(rowMeanmedIn_6_2[0]) == 5.1f / 6.0f);
+ assert(creals(rowMeanmedIn_6_2[1]) == 5.1f / 6.0f);
+ assert(fabs(cimags(rowMeanmedIn_6_2[1]) - 1.5f / 6.0f) < 1e-06);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 0.1+2.1i 0.5+1.7i 0.9+1.3i 1.3+0.9i 1.7+0.5i 2.1+0.1i ]
+ */
+ crowmeana(in, 2, 6, rowMeanmedIn_2_6);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("rowMeanmedIn_2_6[%d] = %e + %ei\n", i, creals(rowMeanmedIn_2_6[i]), cimags(rowMeanmedIn_2_6[i]));
+ }
+ assert(creals(rowMeanmedIn_2_6[0]) == 0.1f / 2.0f && cimags(rowMeanmedIn_2_6[0]) == 2.1f / 2.0f);
+ assert(creals(rowMeanmedIn_2_6[1]) == 0.5f / 2.0f && cimags(rowMeanmedIn_2_6[1]) == 1.7f / 2.0f);
+ assert(creals(rowMeanmedIn_2_6[2]) == 0.9f / 2.0f && cimags(rowMeanmedIn_2_6[2]) == 1.3f / 2.0f);
+ assert(creals(rowMeanmedIn_2_6[3]) == 1.3f / 2.0f && cimags(rowMeanmedIn_2_6[3]) == 0.9f / 2.0f);
+ assert(creals(rowMeanmedIn_2_6[4]) == 1.7f / 2.0f && cimags(rowMeanmedIn_2_6[4]) == 0.5f / 2.0f);
+ assert(creals(rowMeanmedIn_2_6[5]) == 2.1f / 2.0f && cimags(rowMeanmedIn_2_6[5]) == 0.1f / 2.0f);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ */
+ crowmeana(in, 1, 12, rowMeanmedIn_1_12);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("rowMeanmedIn_1_12[%d] = %e + %ei\n", i, creals(rowMeanmedIn_1_12[i]), cimags(rowMeanmedIn_1_12[i]));
+ assert(creals(rowMeanmedIn_1_12[i]) == creals(in[i]) && cimags(rowMeanmedIn_1_12[i]) == cimags(in[i]));
+ }
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 6.6+6.6i ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ crowmeana(in, 12, 1, rowMeanmedIn_12_1);
+ printf("rowMeanmedIn_12_1[%d] = %e + %ei\n", 0, creals(rowMeanmedIn_12_1[0]), cimags(rowMeanmedIn_12_1[0]));
+ assert(creals(rowMeanmedIn_12_1[0]) == 6.6f / 12.0f && cimags(rowMeanmedIn_12_1[0]) == 6.6f / 12.0f);
+
+ return 0;
+}
+
+static int ccolumnmeanaTest(void) {
+ int i = 0;
+ floatComplex in[12];
+ floatComplex columnMeanmedIn_4_3[4];
+ floatComplex columnMeanmedIn_3_4[3];
+ floatComplex columnMeanmedIn_6_2[6];
+ floatComplex columnMeanmedIn_2_6[2];
+ floatComplex columnMeanmedIn_1_12[1];
+ floatComplex columnMeanmedIn_12_1[12];
+
+ printf("\n>>>> ColumnMean Float Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = FloatComplex((float) i / 10.0f, (11.0f - (float) i) / 10.0f);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 1.2+2.1i 1.5+1.8i 1.8+1.5i 2.1+1.2i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ ccolumnmeana(in, 4, 3, columnMeanmedIn_4_3);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("columnMeanmedIn_4_3[%d] = %e + %ei\n", i, creals(columnMeanmedIn_4_3[i]), cimags(columnMeanmedIn_4_3[i]));
+ }
+ assert(creals(columnMeanmedIn_4_3[0]) == 1.2f / 3.0f && cimags(columnMeanmedIn_4_3[0]) == 2.1f / 3.0f);
+ assert(creals(columnMeanmedIn_4_3[1]) == 1.5f / 3.0f);
+ assert(fabs(cimags(columnMeanmedIn_4_3[1]) - 1.8f / 3.0f) < 1e-06);
+ assert(creals(columnMeanmedIn_4_3[2]) == 1.8f / 3.0f && cimags(columnMeanmedIn_4_3[2]) == 1.5f / 3.0f);
+ assert(creals(columnMeanmedIn_4_3[3]) == 2.1f / 3.0f && cimags(columnMeanmedIn_4_3[3]) == 1.2f / 3.0f);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 1.8+2.6i 2.2+2.2i 2.6+1.8i ]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ ccolumnmeana(in, 3, 4, columnMeanmedIn_3_4);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("columnMeanmedIn_3_4[%d] = %e + %ei\n", i, creals(columnMeanmedIn_3_4[i]), cimags(columnMeanmedIn_3_4[i]));
+ }
+ assert(creals(columnMeanmedIn_3_4[0]) == 1.8f / 4.0f);
+ assert(fabs(cimags(columnMeanmedIn_3_4[0]) - 2.6f / 4.0f) < 1e-06);
+ assert(creals(columnMeanmedIn_3_4[1]) == 2.2f / 4.0f && cimags(columnMeanmedIn_3_4[1]) == 2.2f / 4.0f);
+ assert(creals(columnMeanmedIn_3_4[2]) == 2.6f / 4.0f && cimags(columnMeanmedIn_3_4[2]) == 1.8f / 4.0f);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 0.6+1.6i 0.8+1.4i 1+1.2i 1.2+i 1.4+0.8i 1.6+0.6i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ ccolumnmeana(in, 6, 2, columnMeanmedIn_6_2);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("columnMeanmedIn_6_2[%d] = %e + %ei\n", i, creals(columnMeanmedIn_6_2[i]), cimags(columnMeanmedIn_6_2[i]));
+ }
+ assert(creals(columnMeanmedIn_6_2[0]) == 0.6f / 2.0f && cimags(columnMeanmedIn_6_2[0]) == 1.6f / 2.0f);
+ assert(creals(columnMeanmedIn_6_2[1]) == 0.8f / 2.0f && cimags(columnMeanmedIn_6_2[1]) == 1.4f / 2.0f);
+ assert(creals(columnMeanmedIn_6_2[2]) == 1.0f / 2.0f && cimags(columnMeanmedIn_6_2[2]) == 1.2f / 2.0f);
+ assert(creals(columnMeanmedIn_6_2[3]) == 1.2f / 2.0f && cimags(columnMeanmedIn_6_2[3]) == 1.0f / 2.0f);
+ assert(creals(columnMeanmedIn_6_2[4]) == 1.4f / 2.0f && cimags(columnMeanmedIn_6_2[4]) == 0.8f / 2.0f);
+ assert(creals(columnMeanmedIn_6_2[5]) == 1.6f / 2.0f && cimags(columnMeanmedIn_6_2[5]) == 0.6f / 2.0f);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 3+3.6i 3.6+3i ]
+ */
+ ccolumnmeana(in, 2, 6, columnMeanmedIn_2_6);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedIn_2_6[%d] = %e + %ei\n", i, creals(columnMeanmedIn_2_6[i]), cimags(columnMeanmedIn_2_6[i]));
+ }
+ assert(creals(columnMeanmedIn_2_6[0]) == 3.0f / 6.0f && cimags(columnMeanmedIn_2_6[0]) == 3.6f / 6.0f);
+ assert(creals(columnMeanmedIn_2_6[1]) == 3.6f / 6.0f);
+ assert(fabs(cimags(columnMeanmedIn_2_6[1]) -3.0f / 6.0f) < 1e-06);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 6.6+6.6i ]
+ */
+ ccolumnmeana(in, 1, 12, columnMeanmedIn_1_12);
+ printf("columnMeanmedIn_1_12[%d] = %e + %ei\n", 0, creals(columnMeanmedIn_1_12[0]), cimags(columnMeanmedIn_1_12[0]));
+ assert(creals(columnMeanmedIn_1_12[0]) == 6.6f / 12.0f && cimags(columnMeanmedIn_1_12[0]) == 6.6f / 12.0f);
+
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ ccolumnmeana(in, 12, 1, columnMeanmedIn_12_1);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("columnMeanmedIn_12_1[%d] = %e + %ei\n", i, creals(columnMeanmedIn_12_1[i]), cimags(columnMeanmedIn_12_1[i]));
+ assert(creals(columnMeanmedIn_12_1[i]) == creals(in[i]) && cimags(columnMeanmedIn_12_1[i]) == cimags(in[i]));
+ }
+
+ return 0;
+}
+
+static int testMean(void) {
+
+ smeansTest();
+ smeanaTest();
+ srowmeanaTest();
+ scolumnmeanaTest();
+ cmeansTest();
+ cmeanaTest();
+ crowmeanaTest();
+ ccolumnmeanaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testMean() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj b/2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj
new file mode 100644
index 00000000..161eef21
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{3C4D1EB3-7D2A-4AAE-9B4C-3A0C18CBA156}</ProjectGuid>
+ <RootNamespace>testDoubleMean</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMean.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj.filters
new file mode 100644
index 00000000..fba0c339
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/test_DoubleMean/testDoubleMean.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMean.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj b/2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj
new file mode 100644
index 00000000..b4c331c4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{ACF6BDB6-C931-400D-A1ED-0B053A19F7EE}</ProjectGuid>
+ <RootNamespace>testFloatMean</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMean.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj.filters
new file mode 100644
index 00000000..91061adc
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/test_FloatMean/testFloatMean.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMean.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/mean/zcolumnmeana.c b/2.3-1/src/c/statisticsFunctions/mean/zcolumnmeana.c
new file mode 100644
index 00000000..8cc38fc7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/zcolumnmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void zcolumnmeana(doubleComplex *in, int lines, int columns, doubleComplex *out) {
+ int i = 0;
+
+ zcolumnsuma(in, lines, columns, out);
+ for (i = 0; i < lines; ++i)
+ {
+ out[i] = zrdivs(out[i] , DoubleComplex((double) columns, 0.0f));
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/zmeana.c b/2.3-1/src/c/statisticsFunctions/mean/zmeana.c
new file mode 100644
index 00000000..aae80ffc
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/zmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+
+doubleComplex zmeana(doubleComplex *in, int size) {
+ doubleComplex accumulate = DoubleComplex(0.0f, 0.0f);
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = zadds(accumulate, in[i]);
+ }
+ return DoubleComplex(zreals(accumulate) / (double) size, zimags(accumulate) / (double) size);
+}
diff --git a/2.3-1/src/c/statisticsFunctions/mean/zrowmeana.c b/2.3-1/src/c/statisticsFunctions/mean/zrowmeana.c
new file mode 100644
index 00000000..8e19bf9e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/mean/zrowmeana.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "mean.h"
+#include "sum.h"
+
+void zrowmeana(doubleComplex *in, int lines, int columns, doubleComplex *out) {
+ int i = 0;
+
+ zrowsuma(in, lines, columns, out);
+ for (i = 0; i < columns; ++i)
+ {
+ out[i] = zrdivs(out[i], DoubleComplex((double)lines, 0.0f));
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/Makefile.am b/2.3-1/src/c/statisticsFunctions/meanf/Makefile.am
new file mode 100644
index 00000000..789caac8
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/Makefile.am
@@ -0,0 +1,74 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMeanf_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMeanf.la
+
+libMeanf_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = smeanfa.c \
+ srowmeanfa.c \
+ scolumnmeanfa.c \
+ dmeanfa.c \
+ drowmeanfa.c \
+ dcolumnmeanfa.c \
+ cmeanfa.c \
+ crowmeanfa.c \
+ ccolumnmeanfa.c \
+ zmeanfa.c \
+ zrowmeanfa.c \
+ zcolumnmeanfa.c \
+ cmeanfcs.c \
+ cmeanfsc.c \
+ zmeanfdz.c \
+ zmeanfzd.c
+
+HEAD = ../includes/meanf.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatMeanf testDoubleMeanf
+
+TESTS = testFloatMeanf testDoubleMeanf
+
+#
+# -*- Meanf Tests -*-
+#
+testFloatMeanf_SOURCES = testFloatMeanf.c
+testFloatMeanf_CFLAGS = $(check_INCLUDES)
+testFloatMeanf_LDADD = $(check_LDADD)
+
+testDoubleMeanf_SOURCES =testDoubleMeanf.c
+testDoubleMeanf_CFLAGS = $(check_INCLUDES)
+testDoubleMeanf_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/Makefile.in b/2.3-1/src/c/statisticsFunctions/meanf/Makefile.in
new file mode 100644
index 00000000..97e65efc
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/Makefile.in
@@ -0,0 +1,879 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatMeanf$(EXEEXT) testDoubleMeanf$(EXEEXT)
+TESTS = testFloatMeanf$(EXEEXT) testDoubleMeanf$(EXEEXT)
+subdir = src/c/statisticsFunctions/meanf
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMeanf_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libMeanf_la-smeanfa.lo libMeanf_la-srowmeanfa.lo \
+ libMeanf_la-scolumnmeanfa.lo libMeanf_la-dmeanfa.lo \
+ libMeanf_la-drowmeanfa.lo libMeanf_la-dcolumnmeanfa.lo \
+ libMeanf_la-cmeanfa.lo libMeanf_la-crowmeanfa.lo \
+ libMeanf_la-ccolumnmeanfa.lo libMeanf_la-zmeanfa.lo \
+ libMeanf_la-zrowmeanfa.lo libMeanf_la-zcolumnmeanfa.lo \
+ libMeanf_la-cmeanfcs.lo libMeanf_la-cmeanfsc.lo \
+ libMeanf_la-zmeanfdz.lo libMeanf_la-zmeanfzd.lo
+am_libMeanf_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libMeanf_la_OBJECTS = $(am_libMeanf_la_OBJECTS)
+libMeanf_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMeanf_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleMeanf_OBJECTS = \
+ testDoubleMeanf-testDoubleMeanf.$(OBJEXT)
+testDoubleMeanf_OBJECTS = $(am_testDoubleMeanf_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la
+testDoubleMeanf_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleMeanf_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleMeanf_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMeanf_OBJECTS = testFloatMeanf-testFloatMeanf.$(OBJEXT)
+testFloatMeanf_OBJECTS = $(am_testFloatMeanf_OBJECTS)
+testFloatMeanf_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatMeanf_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatMeanf_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMeanf_la_SOURCES) $(testDoubleMeanf_SOURCES) \
+ $(testFloatMeanf_SOURCES)
+DIST_SOURCES = $(libMeanf_la_SOURCES) $(testDoubleMeanf_SOURCES) \
+ $(testFloatMeanf_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMeanf_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMeanf.la
+libMeanf_la_SOURCES = $(HEAD) $(SRC)
+SRC = smeanfa.c \
+ srowmeanfa.c \
+ scolumnmeanfa.c \
+ dmeanfa.c \
+ drowmeanfa.c \
+ dcolumnmeanfa.c \
+ cmeanfa.c \
+ crowmeanfa.c \
+ ccolumnmeanfa.c \
+ zmeanfa.c \
+ zrowmeanfa.c \
+ zcolumnmeanfa.c \
+ cmeanfcs.c \
+ cmeanfsc.c \
+ zmeanfdz.c \
+ zmeanfzd.c
+
+HEAD = ../includes/meanf.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+
+#
+# -*- Meanf Tests -*-
+#
+testFloatMeanf_SOURCES = testFloatMeanf.c
+testFloatMeanf_CFLAGS = $(check_INCLUDES)
+testFloatMeanf_LDADD = $(check_LDADD)
+testDoubleMeanf_SOURCES = testDoubleMeanf.c
+testDoubleMeanf_CFLAGS = $(check_INCLUDES)
+testDoubleMeanf_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/meanf/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/meanf/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMeanf.la: $(libMeanf_la_OBJECTS) $(libMeanf_la_DEPENDENCIES)
+ $(libMeanf_la_LINK) -rpath $(pkglibdir) $(libMeanf_la_OBJECTS) $(libMeanf_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMeanf$(EXEEXT): $(testDoubleMeanf_OBJECTS) $(testDoubleMeanf_DEPENDENCIES)
+ @rm -f testDoubleMeanf$(EXEEXT)
+ $(testDoubleMeanf_LINK) $(testDoubleMeanf_OBJECTS) $(testDoubleMeanf_LDADD) $(LIBS)
+testFloatMeanf$(EXEEXT): $(testFloatMeanf_OBJECTS) $(testFloatMeanf_DEPENDENCIES)
+ @rm -f testFloatMeanf$(EXEEXT)
+ $(testFloatMeanf_LINK) $(testFloatMeanf_OBJECTS) $(testFloatMeanf_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-ccolumnmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-cmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-cmeanfcs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-cmeanfsc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-crowmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-dcolumnmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-dmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-drowmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-scolumnmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-smeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-srowmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-zcolumnmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-zmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-zmeanfdz.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-zmeanfzd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMeanf_la-zrowmeanfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMeanf-testFloatMeanf.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMeanf_la-smeanfa.lo: smeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-smeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-smeanfa.Tpo -c -o libMeanf_la-smeanfa.lo `test -f 'smeanfa.c' || echo '$(srcdir)/'`smeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-smeanfa.Tpo $(DEPDIR)/libMeanf_la-smeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smeanfa.c' object='libMeanf_la-smeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-smeanfa.lo `test -f 'smeanfa.c' || echo '$(srcdir)/'`smeanfa.c
+
+libMeanf_la-srowmeanfa.lo: srowmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-srowmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-srowmeanfa.Tpo -c -o libMeanf_la-srowmeanfa.lo `test -f 'srowmeanfa.c' || echo '$(srcdir)/'`srowmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-srowmeanfa.Tpo $(DEPDIR)/libMeanf_la-srowmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowmeanfa.c' object='libMeanf_la-srowmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-srowmeanfa.lo `test -f 'srowmeanfa.c' || echo '$(srcdir)/'`srowmeanfa.c
+
+libMeanf_la-scolumnmeanfa.lo: scolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-scolumnmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-scolumnmeanfa.Tpo -c -o libMeanf_la-scolumnmeanfa.lo `test -f 'scolumnmeanfa.c' || echo '$(srcdir)/'`scolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-scolumnmeanfa.Tpo $(DEPDIR)/libMeanf_la-scolumnmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnmeanfa.c' object='libMeanf_la-scolumnmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-scolumnmeanfa.lo `test -f 'scolumnmeanfa.c' || echo '$(srcdir)/'`scolumnmeanfa.c
+
+libMeanf_la-dmeanfa.lo: dmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-dmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-dmeanfa.Tpo -c -o libMeanf_la-dmeanfa.lo `test -f 'dmeanfa.c' || echo '$(srcdir)/'`dmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-dmeanfa.Tpo $(DEPDIR)/libMeanf_la-dmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmeanfa.c' object='libMeanf_la-dmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-dmeanfa.lo `test -f 'dmeanfa.c' || echo '$(srcdir)/'`dmeanfa.c
+
+libMeanf_la-drowmeanfa.lo: drowmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-drowmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-drowmeanfa.Tpo -c -o libMeanf_la-drowmeanfa.lo `test -f 'drowmeanfa.c' || echo '$(srcdir)/'`drowmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-drowmeanfa.Tpo $(DEPDIR)/libMeanf_la-drowmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowmeanfa.c' object='libMeanf_la-drowmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-drowmeanfa.lo `test -f 'drowmeanfa.c' || echo '$(srcdir)/'`drowmeanfa.c
+
+libMeanf_la-dcolumnmeanfa.lo: dcolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-dcolumnmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-dcolumnmeanfa.Tpo -c -o libMeanf_la-dcolumnmeanfa.lo `test -f 'dcolumnmeanfa.c' || echo '$(srcdir)/'`dcolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-dcolumnmeanfa.Tpo $(DEPDIR)/libMeanf_la-dcolumnmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnmeanfa.c' object='libMeanf_la-dcolumnmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-dcolumnmeanfa.lo `test -f 'dcolumnmeanfa.c' || echo '$(srcdir)/'`dcolumnmeanfa.c
+
+libMeanf_la-cmeanfa.lo: cmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-cmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-cmeanfa.Tpo -c -o libMeanf_la-cmeanfa.lo `test -f 'cmeanfa.c' || echo '$(srcdir)/'`cmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-cmeanfa.Tpo $(DEPDIR)/libMeanf_la-cmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmeanfa.c' object='libMeanf_la-cmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-cmeanfa.lo `test -f 'cmeanfa.c' || echo '$(srcdir)/'`cmeanfa.c
+
+libMeanf_la-crowmeanfa.lo: crowmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-crowmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-crowmeanfa.Tpo -c -o libMeanf_la-crowmeanfa.lo `test -f 'crowmeanfa.c' || echo '$(srcdir)/'`crowmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-crowmeanfa.Tpo $(DEPDIR)/libMeanf_la-crowmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowmeanfa.c' object='libMeanf_la-crowmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-crowmeanfa.lo `test -f 'crowmeanfa.c' || echo '$(srcdir)/'`crowmeanfa.c
+
+libMeanf_la-ccolumnmeanfa.lo: ccolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-ccolumnmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-ccolumnmeanfa.Tpo -c -o libMeanf_la-ccolumnmeanfa.lo `test -f 'ccolumnmeanfa.c' || echo '$(srcdir)/'`ccolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-ccolumnmeanfa.Tpo $(DEPDIR)/libMeanf_la-ccolumnmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnmeanfa.c' object='libMeanf_la-ccolumnmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-ccolumnmeanfa.lo `test -f 'ccolumnmeanfa.c' || echo '$(srcdir)/'`ccolumnmeanfa.c
+
+libMeanf_la-zmeanfa.lo: zmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-zmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-zmeanfa.Tpo -c -o libMeanf_la-zmeanfa.lo `test -f 'zmeanfa.c' || echo '$(srcdir)/'`zmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-zmeanfa.Tpo $(DEPDIR)/libMeanf_la-zmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmeanfa.c' object='libMeanf_la-zmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-zmeanfa.lo `test -f 'zmeanfa.c' || echo '$(srcdir)/'`zmeanfa.c
+
+libMeanf_la-zrowmeanfa.lo: zrowmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-zrowmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-zrowmeanfa.Tpo -c -o libMeanf_la-zrowmeanfa.lo `test -f 'zrowmeanfa.c' || echo '$(srcdir)/'`zrowmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-zrowmeanfa.Tpo $(DEPDIR)/libMeanf_la-zrowmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowmeanfa.c' object='libMeanf_la-zrowmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-zrowmeanfa.lo `test -f 'zrowmeanfa.c' || echo '$(srcdir)/'`zrowmeanfa.c
+
+libMeanf_la-zcolumnmeanfa.lo: zcolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-zcolumnmeanfa.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-zcolumnmeanfa.Tpo -c -o libMeanf_la-zcolumnmeanfa.lo `test -f 'zcolumnmeanfa.c' || echo '$(srcdir)/'`zcolumnmeanfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-zcolumnmeanfa.Tpo $(DEPDIR)/libMeanf_la-zcolumnmeanfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnmeanfa.c' object='libMeanf_la-zcolumnmeanfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-zcolumnmeanfa.lo `test -f 'zcolumnmeanfa.c' || echo '$(srcdir)/'`zcolumnmeanfa.c
+
+libMeanf_la-cmeanfcs.lo: cmeanfcs.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-cmeanfcs.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-cmeanfcs.Tpo -c -o libMeanf_la-cmeanfcs.lo `test -f 'cmeanfcs.c' || echo '$(srcdir)/'`cmeanfcs.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-cmeanfcs.Tpo $(DEPDIR)/libMeanf_la-cmeanfcs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmeanfcs.c' object='libMeanf_la-cmeanfcs.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-cmeanfcs.lo `test -f 'cmeanfcs.c' || echo '$(srcdir)/'`cmeanfcs.c
+
+libMeanf_la-cmeanfsc.lo: cmeanfsc.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-cmeanfsc.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-cmeanfsc.Tpo -c -o libMeanf_la-cmeanfsc.lo `test -f 'cmeanfsc.c' || echo '$(srcdir)/'`cmeanfsc.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-cmeanfsc.Tpo $(DEPDIR)/libMeanf_la-cmeanfsc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmeanfsc.c' object='libMeanf_la-cmeanfsc.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-cmeanfsc.lo `test -f 'cmeanfsc.c' || echo '$(srcdir)/'`cmeanfsc.c
+
+libMeanf_la-zmeanfdz.lo: zmeanfdz.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-zmeanfdz.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-zmeanfdz.Tpo -c -o libMeanf_la-zmeanfdz.lo `test -f 'zmeanfdz.c' || echo '$(srcdir)/'`zmeanfdz.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-zmeanfdz.Tpo $(DEPDIR)/libMeanf_la-zmeanfdz.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmeanfdz.c' object='libMeanf_la-zmeanfdz.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-zmeanfdz.lo `test -f 'zmeanfdz.c' || echo '$(srcdir)/'`zmeanfdz.c
+
+libMeanf_la-zmeanfzd.lo: zmeanfzd.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -MT libMeanf_la-zmeanfzd.lo -MD -MP -MF $(DEPDIR)/libMeanf_la-zmeanfzd.Tpo -c -o libMeanf_la-zmeanfzd.lo `test -f 'zmeanfzd.c' || echo '$(srcdir)/'`zmeanfzd.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMeanf_la-zmeanfzd.Tpo $(DEPDIR)/libMeanf_la-zmeanfzd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zmeanfzd.c' object='libMeanf_la-zmeanfzd.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMeanf_la_CFLAGS) $(CFLAGS) -c -o libMeanf_la-zmeanfzd.lo `test -f 'zmeanfzd.c' || echo '$(srcdir)/'`zmeanfzd.c
+
+testDoubleMeanf-testDoubleMeanf.o: testDoubleMeanf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMeanf_CFLAGS) $(CFLAGS) -MT testDoubleMeanf-testDoubleMeanf.o -MD -MP -MF $(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Tpo -c -o testDoubleMeanf-testDoubleMeanf.o `test -f 'testDoubleMeanf.c' || echo '$(srcdir)/'`testDoubleMeanf.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Tpo $(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMeanf.c' object='testDoubleMeanf-testDoubleMeanf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMeanf_CFLAGS) $(CFLAGS) -c -o testDoubleMeanf-testDoubleMeanf.o `test -f 'testDoubleMeanf.c' || echo '$(srcdir)/'`testDoubleMeanf.c
+
+testDoubleMeanf-testDoubleMeanf.obj: testDoubleMeanf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMeanf_CFLAGS) $(CFLAGS) -MT testDoubleMeanf-testDoubleMeanf.obj -MD -MP -MF $(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Tpo -c -o testDoubleMeanf-testDoubleMeanf.obj `if test -f 'testDoubleMeanf.c'; then $(CYGPATH_W) 'testDoubleMeanf.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMeanf.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Tpo $(DEPDIR)/testDoubleMeanf-testDoubleMeanf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMeanf.c' object='testDoubleMeanf-testDoubleMeanf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMeanf_CFLAGS) $(CFLAGS) -c -o testDoubleMeanf-testDoubleMeanf.obj `if test -f 'testDoubleMeanf.c'; then $(CYGPATH_W) 'testDoubleMeanf.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMeanf.c'; fi`
+
+testFloatMeanf-testFloatMeanf.o: testFloatMeanf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMeanf_CFLAGS) $(CFLAGS) -MT testFloatMeanf-testFloatMeanf.o -MD -MP -MF $(DEPDIR)/testFloatMeanf-testFloatMeanf.Tpo -c -o testFloatMeanf-testFloatMeanf.o `test -f 'testFloatMeanf.c' || echo '$(srcdir)/'`testFloatMeanf.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMeanf-testFloatMeanf.Tpo $(DEPDIR)/testFloatMeanf-testFloatMeanf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMeanf.c' object='testFloatMeanf-testFloatMeanf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMeanf_CFLAGS) $(CFLAGS) -c -o testFloatMeanf-testFloatMeanf.o `test -f 'testFloatMeanf.c' || echo '$(srcdir)/'`testFloatMeanf.c
+
+testFloatMeanf-testFloatMeanf.obj: testFloatMeanf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMeanf_CFLAGS) $(CFLAGS) -MT testFloatMeanf-testFloatMeanf.obj -MD -MP -MF $(DEPDIR)/testFloatMeanf-testFloatMeanf.Tpo -c -o testFloatMeanf-testFloatMeanf.obj `if test -f 'testFloatMeanf.c'; then $(CYGPATH_W) 'testFloatMeanf.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMeanf.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMeanf-testFloatMeanf.Tpo $(DEPDIR)/testFloatMeanf-testFloatMeanf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMeanf.c' object='testFloatMeanf-testFloatMeanf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMeanf_CFLAGS) $(CFLAGS) -c -o testFloatMeanf-testFloatMeanf.obj `if test -f 'testFloatMeanf.c'; then $(CYGPATH_W) 'testFloatMeanf.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMeanf.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/ccolumnmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/ccolumnmeanfa.c
new file mode 100644
index 00000000..90dbb8b7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/ccolumnmeanfa.c
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "meanf.h"
+#include "sum.h"
+#include "multiplication.h"
+
+void ccolumnmeanfa(floatComplex *in1, int lines, int columns,floatComplex *in2, floatComplex *out) {
+ int i = 0;
+ int j = 0;
+ floatComplex tempCoefSum = FloatComplex(0.0f,0.0f);
+ floatComplex tempMul = FloatComplex(0.0f,0.0f);
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < lines ; ++j)
+ {
+ tempCoefSum = FloatComplex(0.0f,0.0f);
+ out[j]= FloatComplex(0.0f,0.0f);
+ for ( i = 0 ; i < columns; ++i )
+ {
+
+ tempMul = cmuls ( in1[lines*i + j] , in2[lines*i + j]); /* we times by the coefficient*/
+ tempCoefSum = cadds ( in2[lines*i + j] ,tempCoefSum ) ;
+ out[j] = cadds (tempMul, out[j]) ;
+ }
+
+ out[j] = crdivs(out[j] ,tempCoefSum);
+ }
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/cmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/cmeanfa.c
new file mode 100644
index 00000000..1aeef53d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/cmeanfa.c
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+#include "multiplication.h"
+#include "division.h"
+
+floatComplex cmeanfa(floatComplex *in1, int size, floatComplex *in2 ) {
+ floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ floatComplex freAccumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = cadds(accumulate, cmuls (in1[i] , in2[i]));
+ freAccumulate = cadds(in2[i],freAccumulate);
+ }
+ return crdivs(accumulate ,freAccumulate) ;
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/cmeanfcs.c b/2.3-1/src/c/statisticsFunctions/meanf/cmeanfcs.c
new file mode 100644
index 00000000..e0c769a3
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/cmeanfcs.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "meanf.h"
+#include "zeros.h"
+
+floatComplex cmeanfcs (floatComplex* in1 ,int lines , int columns , float* in2)
+ {
+ float* ZEROS = (float *) malloc((unsigned int)(lines*columns*sizeof(float)));
+ szerosa(ZEROS,lines,columns);
+
+ return cmeanfa(in1, lines*columns , FloatComplexMatrix(in2,ZEROS,lines*columns));
+ }
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/cmeanfsc.c b/2.3-1/src/c/statisticsFunctions/meanf/cmeanfsc.c
new file mode 100644
index 00000000..03c7d421
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/cmeanfsc.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "meanf.h"
+#include "zeros.h"
+
+floatComplex cmeanfsc (float* in1 ,int lines , int columns , floatComplex* in2)
+ {
+ float* ZEROS = (float*) malloc((unsigned int)(lines*columns*sizeof(float)));
+ szerosa(ZEROS,lines,columns);
+
+ return cmeanfa(FloatComplexMatrix(in1,ZEROS,lines*columns), lines*columns , in2);
+ }
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/crowmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/crowmeanfa.c
new file mode 100644
index 00000000..14dc3271
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/crowmeanfa.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "meanf.h"
+#include "sum.h"
+#include "multiplication.h"
+void crowmeanfa(floatComplex *in1, int lines, int columns, floatComplex *in2, floatComplex *out) {
+ int i = 0;
+ int j = 0;
+ floatComplex tempCoefSum = FloatComplex(0.0f,0.0f);
+ floatComplex tempMul = FloatComplex(0.0f,0.0f);
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ tempCoefSum = FloatComplex(0.0f,0.0f);
+ out[j]= FloatComplex(0.0f,0.0f);
+ for ( i = 0 ; i < lines; ++i )
+ {
+
+ tempMul = cmuls ( in1[lines*j + i] , in2[lines*j + i]); /* we times by the coefficient*/
+ tempCoefSum = cadds ( in2[lines*j + i] ,tempCoefSum ) ;
+ out[j] = cadds (tempMul, out[j]) ;
+ }
+
+ out[j] = crdivs(out[j] ,tempCoefSum);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/dcolumnmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/dcolumnmeanfa.c
new file mode 100644
index 00000000..e8d25a33
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/dcolumnmeanfa.c
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+
+void dcolumnmeanfa(double *in1, int lines , int columns, double *in2, double *out) {
+ int i = 0;
+ int j = 0;
+ double tempCoefSum = 0.0;
+ double tempMul = 0.0 ;
+
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+for (j = 0; j < lines; ++j)
+ {
+ tempCoefSum = 0.0;
+ out[j]= 0.0;
+ for ( i = 0 ; i < columns; ++i )
+ {
+
+ tempMul = in1[lines*i + j] * in2[lines*i + j]; /* we times by the coefficient*/
+ tempCoefSum +=in2[lines*i + j];
+ out[j] +=tempMul ;
+ }
+
+ out[j] /= tempCoefSum ;
+ }
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/dmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/dmeanfa.c
new file mode 100644
index 00000000..be3bb375
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/dmeanfa.c
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+
+double dmeanfa(double *in1, int size, double *in2) {
+ double accumulate = 0.0;
+ double freAccumulate = 0.0;
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate += (in1[i] * in2[i]) ;
+ freAccumulate += in2[i] ;
+ }
+ return accumulate / freAccumulate;
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/drowmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/drowmeanfa.c
new file mode 100644
index 00000000..ce3523cb
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/drowmeanfa.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "meanf.h"
+#include "sum.h"
+
+void drowmeanfa(double *in1, int lines, int columns, double *in2, double *out) {
+ int i = 0;
+ int j = 0;
+ double tempCoefSum = 0.0;
+ double tempMul = 0.0;
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ tempCoefSum = 0.0;
+ out[j]= 0.0;
+ for ( i = 0 ; i < lines; ++i )
+ {
+
+ tempMul = in1[lines*j + i] * in2[lines*j + i]; /* we times by the coefficient*/
+ tempCoefSum +=in2[lines*j + i];
+ out[j] +=tempMul ;
+ }
+
+ out[j] /= tempCoefSum ;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/scolumnmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/scolumnmeanfa.c
new file mode 100644
index 00000000..bb3ffca8
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/scolumnmeanfa.c
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+
+void scolumnmeanfa(float *in1, int lines, int columns, float *in2, float *out) {
+ int i = 0;
+ int j = 0;
+ float tempCoefSum = 0.0f;
+ float tempMul = 0.0f ;
+
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+for (j = 0; j < lines; ++j)
+ {
+ tempCoefSum = 0.0f;
+ out[j]= 0.0f;
+ for ( i = 0 ; i < columns; ++i )
+ {
+
+ tempMul = in1[lines*i + j] * in2[lines*i + j]; /* we times by the coefficient*/
+ tempCoefSum +=in2[lines*i + j];
+ out[j] +=tempMul ;
+ }
+
+ out[j] /= tempCoefSum ;
+ }
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/smeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/smeanfa.c
new file mode 100644
index 00000000..64985e78
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/smeanfa.c
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+
+float smeanfa(float *in1, int size, float *in2) {
+ float accumulate = 0.0f;
+ float freAccumulate = 0.0f;
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate += (in1[i] * in2[i]) ;
+ freAccumulate += in2[i] ;
+ }
+ return accumulate / freAccumulate;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/srowmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/srowmeanfa.c
new file mode 100644
index 00000000..3cdacb82
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/srowmeanfa.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "meanf.h"
+#include "sum.h"
+
+
+void srowmeanfa(float *in1, int lines, int columns, float *in2, float *out) {
+ int i = 0;
+ int j = 0;
+ float tempCoefSum = 0.0f;
+ float tempMul = 0.0f;
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ tempCoefSum = 0.0f;
+ out[j]= 0.0f;
+ for ( i = 0 ; i < lines; ++i )
+ {
+
+ tempMul = in1[lines*j + i] * in2[lines*j + i]; /* we times by the coefficient*/
+ tempCoefSum +=in2[lines*j + i];
+ out[j] +=tempMul ;
+ }
+
+ out[j] /= tempCoefSum ;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/testDoubleMeanf.c b/2.3-1/src/c/statisticsFunctions/meanf/testDoubleMeanf.c
new file mode 100644
index 00000000..f528f1df
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/testDoubleMeanf.c
@@ -0,0 +1,409 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "meanf.h"
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int dmeanfsTest(void) {
+ double value1 = 3.0;
+ double value2 = 1.123456789;
+ double coef1 = 56 ;
+ double coef2 = 2 ;
+
+ coef1 = 56 ;
+ coef2 = 2 ;
+
+ printf("\n>>>> Meanf Double Scalar Test\n");
+ assert( ( fabs(dmeanfs(value1,coef1) ) - ( 3.0 ) ) / fabs ( dmeanfs(value1,coef1) ) < 3e-16 );
+ assert( ( fabs(dmeanfs(value2,coef2) ) - ( 1.123456789 ) ) / fabs ( dmeanfs(value2,coef2) ) < 3e-16 );
+
+ return 0;
+}
+
+static int dmeanfaTest(void) {
+ double table1[3] = {3.0, 3.0, 3.0};
+ double coef1[3] = {10.0, 2.0, 6.0};
+
+ double table2[5] = {3.186784563,
+ 4.186784563,
+ 5.186784563,
+ 6.186784563,
+ 7.186784563};
+
+ double coef2[5] = {3.0,
+ 4.0,
+ 5.0,
+ 6.0,
+ 7.0};
+
+ printf("\n>>>> Meanf Float Array Test\n");
+ assert(dmeanfa(table1, 3, coef1) == 54.0 / 18.0);
+ assert((dmeanfa(table2, 5, coef2) - (3.186784563*3.0 + 4.186784563*4.0 + 5.186784563*5.0 + 6.186784563*6.0 + 7.186784563*7.0) / 25.0) / dmeanfa(table2, 5 ,coef2) < 3e-16);
+ return 0;
+}
+
+
+static int dcolumnmeanfaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double coef2[10] = {11.0, 12.0, 13.0, 14.0 , 15.0, 16.0, 17.0, 18.0, 19.0, 20.0};
+ double columnMeanmedTable1_3_3[3] = {0};
+ double columnMeanmedTable1_1_9[1] = {0};
+ double columnMeanmedTable1_9_1[9] = {0};
+ double columnMeanmedTable2_2_5[2] = {0};
+ double columnMeanmedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Mean Double Array Test\n");
+ /*
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 68 32 146 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+ */
+ dcolumnmeanfa(table1, 3, 3, coef1 ,columnMeanmedTable1_3_3);
+ assert( ( fabs(columnMeanmedTable1_3_3[0] ) - ( 68.0 / 33.0 ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable1_3_3[1] ) - ( 32.0 / 6.0 ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable1_3_3[2] ) - ( 146.0 / 18.0 ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 3e-16 );
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ dcolumnmeanfa(table1, 1, 9, coef1 ,columnMeanmedTable1_1_9);
+ assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 246.0 / 57.0 ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 3e-16 );
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ dcolumnmeanfa(table1, 9, 1, coef1, columnMeanmedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnMeanmedTable1_9_1[%d] = %e\n", i, columnMeanmedTable1_9_1[i]);
+ assert(columnMeanmedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ]=> [ 415 520 ]
+ */
+ dcolumnmeanfa(table2, 2, 5, coef2 , columnMeanmedTable2_2_5);
+ assert( ( fabs(columnMeanmedTable2_2_5[0] ) - ( 415.0 / 75.0 ) ) / fabs ( columnMeanmedTable2_2_5[0] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_2_5[1] ) - ( 520.0 / 80.0 ) ) / fabs ( columnMeanmedTable2_2_5[1] ) < 3e-16 );
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedTable2_2_5[%d] = %e\n", i, columnMeanmedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ] [ 11 16 ]
+ [ 2 7 ] [ 12 17 ] => [ 107 143 183 227 275 ]
+ [ 3 8 ].*[ 13 18 ]
+ [ 4 9 ] [ 14 19 ]
+ [ 5 10 ] [ 15 20 ]
+ */
+ dcolumnmeanfa(table2, 5, 2, coef2 ,columnMeanmedTable2_5_2);
+ assert( ( fabs(columnMeanmedTable2_5_2[0] ) - ( 107.0 / 27.0 ) ) / fabs ( columnMeanmedTable2_5_2[0] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[1] ) - ( 143.0 / 29.0 ) ) / fabs ( columnMeanmedTable2_5_2[1] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[2] ) - ( 183.0 / 31.0 ) ) / fabs ( columnMeanmedTable2_5_2[2] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[3] ) - ( 227.0 / 33.0 ) ) / fabs ( columnMeanmedTable2_5_2[3] ) < 3e-16 );
+ assert( ( fabs(columnMeanmedTable2_5_2[4] ) - ( 275.0 / 35.0 ) ) / fabs ( columnMeanmedTable2_5_2[4] ) < 3e-16 );
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+
+static int drowmeanfaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double coef2[10] = {11.0, 12.0, 13.0, 14.0 , 15.0, 16.0, 17.0, 18.0, 19.0, 20.0};
+ double rowMeanmedTable1_3_3[3] = {0};
+ double rowMeanmedTable1_1_9[9] = {0};
+ double rowMeanmedTable1_9_1[1] = {0};
+ double rowMeanmedTable2_2_5[5] = {0};
+
+
+ printf("\n>>>> Row Mean Double Array Test\n");
+ /*
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 49 80 117 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+ */
+ drowmeanfa(table1, 3, 3, coef1 , rowMeanmedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedTable1_3_3[%d] = %e\n", i, rowMeanmedTable1_3_3[i]);
+ }
+ assert( ( fabs(rowMeanmedTable1_3_3[0] ) - ( 49.0 / 16.0 ) ) / fabs ( rowMeanmedTable1_3_3[0] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable1_3_3[1] ) - ( 80.0 / 19.0 ) ) / fabs ( rowMeanmedTable1_3_3[1] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable1_3_3[2] ) - ( 117.0 / 22.0 ) ) / fabs ( rowMeanmedTable1_3_3[2] ) < 3e-16 );
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ drowmeanfa(table1, 1, 9, coef1, rowMeanmedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowMeanmedTable1_1_9[%d] = %e\n", i, rowMeanmedTable1_1_9[i]);
+ assert(rowMeanmedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 246 ]
+ */
+ drowmeanfa(table1, 9, 1, coef1, rowMeanmedTable1_9_1);
+ assert( ( fabs(rowMeanmedTable1_9_1[0] ) - ( 246.0 / 57.0 ) ) / fabs ( rowMeanmedTable1_9_1[0] ) < 3e-16 );
+
+ /*
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ] => [ 3 7 11 15 19 ]
+ */
+ drowmeanfa(table2, 2, 5, coef2, rowMeanmedTable2_2_5);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowMeanmedTable2_2_5[%d] = %e\n", i, rowMeanmedTable2_2_5[i]);
+ }
+ assert( ( fabs(rowMeanmedTable2_2_5[0] ) - ( 35.0 / 23.0 ) ) / fabs ( rowMeanmedTable2_2_5[0] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[1] ) - ( 95.0 / 27.0 ) ) / fabs ( rowMeanmedTable2_2_5[1] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[2] ) - ( 171.0 / 31.0 ) ) / fabs ( rowMeanmedTable2_2_5[2] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[3] ) - ( 263.0 / 35.0 ) ) / fabs ( rowMeanmedTable2_2_5[3] ) < 3e-16 );
+ assert( ( fabs(rowMeanmedTable2_2_5[4] ) - ( 371.0 / 39.0 ) ) / fabs ( rowMeanmedTable2_2_5[4] ) < 3e-16 );
+
+
+ return 0;
+}
+
+static int zmeanfsTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex coef1 = DoubleComplex(3.0, 0.0);
+ doubleComplex value2 = DoubleComplex(1.123456789, 1.123456789);
+ doubleComplex coef2 = DoubleComplex(9.0, 0.0);
+
+ coef1 = DoubleComplex(3.0, 0.0);
+ coef2 = DoubleComplex(9.0, 0.0);
+
+ printf("\n>>>> Mean Double Complex Scalar Test\n");
+ assert( ( fabs(zreals(zmeanfs(value1,coef1)) ) - ( 3.0 ) ) / fabs ( zreals(zmeanfs(value1,coef1)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeanfs(value1,coef1)) ) - ( 3.0 ) ) / fabs ( zimags(zmeanfs(value1,coef1)) ) < 3e-16 );
+ assert( ( fabs(zreals(zmeanfs(value2,coef1)) ) - ( 1.123456789 ) ) / fabs ( zreals(zmeanfs(value2,coef1)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeanfs(value2,coef1)) ) - ( 1.123456789 ) ) / fabs ( zimags(zmeanfs(value2,coef1)) ) < 3e-16 );
+ return 0;
+}
+
+
+
+static int zmeanfaTest(void) {
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+
+ printf("\n>>>> Mean Double Complex Array Test\n");
+
+
+ assert( ( fabs(zreals(zmeanfa(table1, 3, coef1)) ) - ( 246.0 / 57.0 ) ) / fabs ( zreals(zmeanfa(table1, 3, coef1)) ) < 3e-16 );
+ assert( ( fabs(zimags(zmeanfa(table1, 3, coef1)) ) - ( 288.0 / 57.0 ) ) / fabs ( zimags(zmeanfa(table1, 3, coef1)) ) < 3e-16 );/*
+*/
+ return 0;
+}
+
+static int zrowmeanfaTest(void) {
+
+ int i = 0 ;
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0};
+ double coefR2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0};
+ double coefI2[10] ={10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 10);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 10);
+
+ doubleComplex rowMeanmedTable1_3_3[3];
+ doubleComplex rowMeanmedTable2_2_5[5];
+
+ rowMeanmedTable1_3_3[0] = DoubleComplex(0.0, 0.0);
+ rowMeanmedTable1_3_3[1] = DoubleComplex(0.0, 0.0);
+ rowMeanmedTable1_3_3[2] = DoubleComplex(0.0, 0.0);
+
+ rowMeanmedTable2_2_5[0] = DoubleComplex(0.0, 0.0);
+ rowMeanmedTable2_2_5[1] = DoubleComplex(0.0, 0.0);
+ rowMeanmedTable2_2_5[2] = DoubleComplex(0.0, 0.0);
+ rowMeanmedTable2_2_5[3] = DoubleComplex(0.0, 0.0);
+ rowMeanmedTable2_2_5[4] = DoubleComplex(0.0, 0.0);
+
+ /*
+ doubleComplex rowMeanmedTable1_1_9[9] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable1_9_1[1] = {DoubleComplex(0.0, 0.0)};
+
+ doubleComplex rowMeanmedTable2_5_2[2] = {DoubleComplex(0.0, 0.0)};
+*/
+
+ printf("\n>>>> Row Meanf Double Complex Array Test\n");
+
+ /**/
+
+ zrowmeanfa(table1 , 3 , 3 , coef1 , rowMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+
+ printf("rowMeanmedTable_3_3[%d] = %e + %ei\n", i, zreals(rowMeanmedTable1_3_3[i]), zimags(rowMeanmedTable1_3_3[i]));
+ }
+ assert( fabs(zimags(rowMeanmedTable1_3_3[0]) - ( 27.0 / 16.0 ) ) / fabs ( zimags(rowMeanmedTable1_3_3[0]) ) < 3e-16 );
+ assert( fabs(zreals(rowMeanmedTable1_3_3[0]) - ( 49.0 / 16.0 ) ) / fabs ( zreals(rowMeanmedTable1_3_3[0]) ) < 3e-16 );
+
+ assert( fabs(zimags(rowMeanmedTable1_3_3[1]) - ( 90.0 / 19.0 ) ) / fabs ( zimags(rowMeanmedTable1_3_3[1]) ) < 3e-16 );
+ assert( fabs(zreals(rowMeanmedTable1_3_3[1]) - ( 80.0 / 19.0 ) ) / fabs ( zreals(rowMeanmedTable1_3_3[1]) ) < 3e-16 );
+
+ assert( fabs(zimags(rowMeanmedTable1_3_3[2]) - (171.0 / 22.0 ) ) / fabs ( zimags(rowMeanmedTable1_3_3[2]) ) < 3e-16 );
+ assert( fabs(zreals(rowMeanmedTable1_3_3[2]) - (117.0 / 22.0 ) ) / fabs ( zreals(rowMeanmedTable1_3_3[2]) ) < 3e-16 );
+/**/
+
+ printf("\n\n");
+ zrowmeanfa(table2 , 2 , 5 , coef2 , rowMeanmedTable2_2_5);
+
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowMeanmedTable_2_5[%d] = %e + %ei\n", i, zreals(rowMeanmedTable2_2_5[i]), zimags(rowMeanmedTable2_2_5[i]));
+ }
+ assert( fabs(zreals(rowMeanmedTable2_2_5[0]) - 1.2727273 ) / fabs ( zreals(rowMeanmedTable2_2_5[0]) ) < 1e-6 );
+ assert( zimags(rowMeanmedTable2_2_5[0]) == 0);
+
+ assert( fabs(zreals(rowMeanmedTable2_2_5[1]) - 3.5625000 ) / fabs ( zreals(rowMeanmedTable2_2_5[1]) ) < 1e-6 );
+ assert( zimags(rowMeanmedTable2_2_5[1]) == 0);
+
+ assert( fabs(zreals(rowMeanmedTable2_2_5[2]) - 7.2500000 ) / fabs ( zreals(rowMeanmedTable2_2_5[2]) ) < 1e-6 );
+ assert( zimags(rowMeanmedTable2_2_5[2]) == 0);
+
+ assert( fabs(zreals(rowMeanmedTable2_2_5[3]) - 3.6000000 ) / fabs ( zreals(rowMeanmedTable2_2_5[3]) ) < 1e-6 );
+ assert( zimags(rowMeanmedTable2_2_5[3]) == 0);
+
+ assert( fabs(zreals(rowMeanmedTable2_2_5[4]) - 9.7307692 ) / fabs ( zreals(rowMeanmedTable2_2_5[4]) ) < 1e-6 );
+ assert( zimags(rowMeanmedTable2_2_5[4]) == 0);
+
+
+ return 0;
+}
+
+
+static int zcolumnmeanfaTest(void) {
+
+ int i = 0 ;
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+/*
+ double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0};
+ double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+ double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+*/
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+/*
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 9);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 9);
+*/
+ doubleComplex columnMeanmedTable1_3_3[3] ;
+ /*
+ doubleComplex rowMeanmedTable1_1_9[9] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable1_9_1[1] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable2_2_5[5] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable2_5_2[2] = {DoubleComplex(0.0, 0.0)};
+*/
+
+ columnMeanmedTable1_3_3[0] = DoubleComplex(0.0, 0.0);
+ columnMeanmedTable1_3_3[1] = DoubleComplex(0.0, 0.0);
+ columnMeanmedTable1_3_3[2] = DoubleComplex(0.0, 0.0);
+
+ printf("\n>>>> Column Meanf Double Complex Array Test\n");
+
+ /**/
+
+ zcolumnmeanfa(table1 , 3 , 3 , coef1 , columnMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnMeanmedTable_3_3[%d] = %e + %ei\n", i, zreals(columnMeanmedTable1_3_3[i]), zimags(columnMeanmedTable1_3_3[i]));
+ }
+ assert( ( fabs(zimags(columnMeanmedTable1_3_3[0]) ) - (138.0 / 33.0 ) ) / fabs ( zimags(columnMeanmedTable1_3_3[0]) ) < 3e-16 );
+ assert( ( fabs(zreals(columnMeanmedTable1_3_3[0]) ) - ( 68.0 / 33.0 ) ) / fabs ( zreals(columnMeanmedTable1_3_3[0]) ) < 3e-16 );
+
+ assert( ( fabs(zimags(columnMeanmedTable1_3_3[1]) ) - ( 36.0 / 6.0 ) ) / fabs ( zimags(columnMeanmedTable1_3_3[1]) ) < 3e-16 );
+ assert( ( fabs(zreals(columnMeanmedTable1_3_3[1]) ) - ( 32.0 / 6.0 ) ) / fabs ( zreals(columnMeanmedTable1_3_3[1]) ) < 3e-16 );
+
+ assert( ( fabs(zimags(columnMeanmedTable1_3_3[2]) ) - (114.0 / 18.0 ) ) / fabs ( zimags(columnMeanmedTable1_3_3[2]) ) < 3e-16 );
+ assert( ( fabs(zreals(columnMeanmedTable1_3_3[2]) ) - (146.0 / 18.0 ) ) / fabs ( zreals(columnMeanmedTable1_3_3[2]) ) < 3e-16 );
+
+
+
+
+ return 0;
+}
+
+
+
+static int testMeanf(void) {
+
+ dmeanfsTest();
+ dmeanfaTest();
+ dcolumnmeanfaTest();
+ drowmeanfaTest();
+ zmeanfsTest();
+ zmeanfaTest();
+ zrowmeanfaTest();
+ zcolumnmeanfaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testMeanf() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/testFloatMeanf.c b/2.3-1/src/c/statisticsFunctions/meanf/testFloatMeanf.c
new file mode 100644
index 00000000..ead8a86b
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/testFloatMeanf.c
@@ -0,0 +1,383 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "meanf.h"
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int smeanfsTest(void) {
+ float value1 ;
+ float value2 ;
+ float coef1 ;
+ float coef2 ;
+
+ value1 = 3.0f;
+ value2 = 1.123456789f;
+ coef1 = 56.0f ;
+ coef2 = 2.0f ;
+
+ printf("\n>>>> Meanf Float Scalar Test\n");
+ assert( ( fabs(smeanfs(value1,coef1) ) - ( 3.0f ) ) / fabs ( smeanfs(value1,coef1) ) < 1e-6 );
+ assert( ( fabs(smeanfs(value2,coef2) ) - ( 1.123456789f ) ) / fabs ( smeanfs(value2,coef2) ) < 1e-6 );
+
+ return 0;
+}
+
+static int smeanfaTest(void) {
+ float table1[3] = {3.0f, 3.0f, 3.0f};
+ float coef1[3] = {10.0f, 2.0f, 6.0f};
+
+ float table2[5] = {3.186784563f,
+ 4.186784563f,
+ 5.186784563f,
+ 6.186784563f,
+ 7.186784563f};
+
+ float coef2[5] = {3.0f,
+ 4.0f,
+ 5.0f,
+ 6.0f,
+ 7.0f};
+
+ printf("\n>>>> Meanf Float Array Test\n");
+ assert(smeanfa(table1, 3, coef1) == 54.0f / 18.0f);
+ assert((smeanfa(table2, 5, coef2) - (3.186784563f*3.0f + 4.186784563f*4.0f + 5.186784563f*5.0f + 6.186784563f*6.0f + 7.186784563f*7.0f) / 25.0f) / smeanfa(table2, 5 ,coef2) < 1e-6);
+ return 0;
+}
+
+
+static int scolumnmeanfaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float coef1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float coef2[10] = {11.0f, 12.0f, 13.0f, 14.0f , 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f};
+ float columnMeanmedTable1_3_3[3] = {0};
+ float columnMeanmedTable1_1_9[1] = {0};
+ float columnMeanmedTable1_9_1[9] = {0};
+ float columnMeanmedTable2_2_5[2] = {0};
+ float columnMeanmedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Mean Float Array Test\n");
+ /*
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 68 32 146 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+ */
+ scolumnmeanfa(table1, 3, 3, coef1 ,columnMeanmedTable1_3_3);
+ assert( fabs(columnMeanmedTable1_3_3[0] - ( 68.0f / 33.0f ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 1e-6 );
+ assert( fabs(columnMeanmedTable1_3_3[1] - ( 32.0f / 6.0f ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 1e-6 );
+ assert( fabs(columnMeanmedTable1_3_3[2] - ( 146.0f / 18.0f ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 1e-6 );
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ scolumnmeanfa(table1, 1, 9, coef1 ,columnMeanmedTable1_1_9);
+ assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 246.0f / 57.0f ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 1e-6 );
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ scolumnmeanfa(table1, 9, 1, coef1, columnMeanmedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnMeanmedTable1_9_1[%d] = %e\n", i, columnMeanmedTable1_9_1[i]);
+ assert(columnMeanmedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ]=> [ 415 520 ]
+ */
+ scolumnmeanfa(table2, 2, 5, coef2 , columnMeanmedTable2_2_5);
+ assert( ( fabs(columnMeanmedTable2_2_5[0] ) - ( 415.0f / 75.0f ) ) / fabs ( columnMeanmedTable2_2_5[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_2_5[1] ) - ( 520.0f / 80.0f ) ) / fabs ( columnMeanmedTable2_2_5[1] ) < 1e-6 );
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedTable2_2_5[%d] = %e\n", i, columnMeanmedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ] [ 11 16 ]
+ [ 2 7 ] [ 12 17 ] => [ 107 143 183 227 275 ]
+ [ 3 8 ].*[ 13 18 ]
+ [ 4 9 ] [ 14 19 ]
+ [ 5 10 ] [ 15 20 ]
+ */
+ scolumnmeanfa(table2, 5, 2, coef2 ,columnMeanmedTable2_5_2);
+ assert( fabs(columnMeanmedTable2_5_2[0] - ( 107.0f / 27.0f ) ) / fabs ( columnMeanmedTable2_5_2[0] ) < 1e-6 );
+ assert( fabs(columnMeanmedTable2_5_2[1] - ( 143.0f / 29.0f ) ) / fabs ( columnMeanmedTable2_5_2[1] ) < 1e-6 );
+ assert( fabs(columnMeanmedTable2_5_2[2] - ( 183.0f / 31.0f ) ) / fabs ( columnMeanmedTable2_5_2[2] ) < 1e-6 );
+ assert( fabs(columnMeanmedTable2_5_2[3] - ( 227.0f / 33.0f ) ) / fabs ( columnMeanmedTable2_5_2[3] ) < 1e-6 );
+ assert( fabs(columnMeanmedTable2_5_2[4] - ( 275.0f / 35.0f ) ) / fabs ( columnMeanmedTable2_5_2[4] ) < 1e-6 );
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+
+static int srowmeanfaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float coef1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float coef2[10] = {11.0f, 12.0f, 13.0f, 14.0f , 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f};
+ float rowMeanmedTable1_3_3[3] = {0};
+ float rowMeanmedTable1_1_9[9] = {0};
+ float rowMeanmedTable1_9_1[1] = {0};
+ float rowMeanmedTable2_2_5[5] = {0};
+ /*float rowMeanmedTable2_5_2[2] = {0};*/
+
+ printf("\n>>>> Row Mean Float Array Test\n");
+ /*
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 49 80 117 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+ */
+ srowmeanfa(table1, 3, 3, coef1 , rowMeanmedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedTable1_3_3[%d] = %e\n", i, rowMeanmedTable1_3_3[i]);
+ }
+ assert( fabs(rowMeanmedTable1_3_3[0] - ( 49.0f / 16.0f ) ) / fabs ( rowMeanmedTable1_3_3[0] ) < 1e-6 );
+ assert( fabs(rowMeanmedTable1_3_3[1] - ( 80.0f / 19.0f ) ) / fabs ( rowMeanmedTable1_3_3[1] ) < 1e-6 );
+ assert( fabs(rowMeanmedTable1_3_3[2] - ( 117.0f / 22.0f ) ) / fabs ( rowMeanmedTable1_3_3[2] ) < 1e-6 );
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ srowmeanfa(table1, 1, 9, coef1, rowMeanmedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowMeanmedTable1_1_9[%d] = %e\n", i, rowMeanmedTable1_1_9[i]);
+ assert(rowMeanmedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 246 ]
+ */
+ srowmeanfa(table1, 9, 1, coef1, rowMeanmedTable1_9_1);
+ assert( ( fabs(rowMeanmedTable1_9_1[0] ) - ( 246.0f / 57.0f ) ) / fabs ( rowMeanmedTable1_9_1[0] ) < 1e-6 );
+
+ /*
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ] => [ 3 7 11 15 19 ]
+ */
+ srowmeanfa(table2, 2, 5, coef2, rowMeanmedTable2_2_5);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowMeanmedTable2_2_5[%d] = %e\n", i, rowMeanmedTable2_2_5[i]);
+ }
+ assert( fabs(rowMeanmedTable2_2_5[0] - ( 35.0f / 23.0f ) ) / fabs ( rowMeanmedTable2_2_5[0] ) < 1e-6 );
+ assert( fabs(rowMeanmedTable2_2_5[1] - ( 95.0f / 27.0f ) ) / fabs ( rowMeanmedTable2_2_5[1] ) < 1e-6 );
+ assert( fabs(rowMeanmedTable2_2_5[2] - ( 171.0f / 31.0f ) ) / fabs ( rowMeanmedTable2_2_5[2] ) < 1e-6 );
+ assert( fabs(rowMeanmedTable2_2_5[3] - ( 263.0f / 35.0f ) ) / fabs ( rowMeanmedTable2_2_5[3] ) < 1e-6 );
+ assert( fabs(rowMeanmedTable2_2_5[4] - ( 371.0f / 39.0f ) ) / fabs ( rowMeanmedTable2_2_5[4] ) < 1e-6 );
+
+
+ return 0;
+}
+
+static int cmeanfsTest(void) {
+ floatComplex value1 ;
+ floatComplex coef1 ;
+ floatComplex value2 ;
+ floatComplex coef2 ;
+
+ value1 = FloatComplex(3.0f, 3.0f);
+ coef1 = FloatComplex(3.0f, 0.0f);
+ value2 = FloatComplex(1.123456789f, 1.123456789f);
+ coef2 = FloatComplex(9.0f, 0.0f);
+
+ printf("\n>>>> Mean Float Complex Scalar Test\n");
+ assert( fabs(creals(cmeanfs(value1,coef1)) - ( 3.0f ) ) / fabs ( creals(cmeanfs(value1,coef1)) ) < 1e-6 );
+ assert( fabs(cimags(cmeanfs(value1,coef1)) - ( 3.0f ) ) / fabs ( cimags(cmeanfs(value1,coef1)) ) < 1e-6 );
+ assert( fabs(creals(cmeanfs(value2,coef1)) - ( 1.123456789f ) ) / fabs ( creals(cmeanfs(value2,coef1)) ) < 1e-6 );
+ assert( fabs(cimags(cmeanfs(value2,coef1)) - ( 1.123456789f ) ) / fabs ( cimags(cmeanfs(value2,coef1)) ) < 1e-6 );
+ return 0;
+}
+
+
+
+static int cmeanfaTest(void) {
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+
+
+ printf("\n>>>> Mean Float Complex Array Test\n");
+ printf("\tMeanmedTable_1_1[0] = %e + %ei\n", creals(cmeanfa(table1, 9, coef1)), cimags(cmeanfa(table1, 9, coef1)));
+
+ assert( fabs( creals(cmeanfa(table1, 9, coef1)) - ( 246.0f / 57.0f ) ) / fabs ( creals(cmeanfa(table1, 9, coef1)) ) < 1e-6 );
+ assert( fabs( cimags(cmeanfa(table1, 9, coef1)) - ( 288.0f / 57.0f ) ) / fabs ( cimags(cmeanfa(table1, 9, coef1)) ) < 1e-6 );/*
+*/
+ return 0;
+}
+
+static int crowmeanfaTest(void) {
+
+ int i = 0 ;
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+/*
+ float tableR2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float tableI2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 15.0f};
+ float coefR2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+ float coefI2[10] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+*/
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+/*
+ floatComplex* table2 = FloatComplexMatrix (tableR2, tableI2, 9);
+ floatComplex* coef2 = FloatComplexMatrix (coefR2, coefI2, 9);
+*/
+ floatComplex rowMeanmedTable1_3_3[3] ;
+ rowMeanmedTable1_3_3[0] = FloatComplex(0.0f, 0.0f);
+ rowMeanmedTable1_3_3[1] = FloatComplex(0.0f, 0.0f);
+ rowMeanmedTable1_3_3[2] = FloatComplex(0.0f, 0.0f);
+ /*
+ floatComplex rowMeanmedTable1_1_9[9] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable1_9_1[1] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_2_5[5] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_5_2[2] = {FloatComplex(0.0f, 0.0f)};
+*/
+
+ printf("\n>>>> Row Meanf Float Complex Array Test\n");
+
+ /**/
+
+ crowmeanfa(table1 , 3 , 3 , coef1 , rowMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+
+ printf("rowMeanmedTable_3_3[%d] = %e + %ei\n", i, creals(rowMeanmedTable1_3_3[i]), cimags(rowMeanmedTable1_3_3[i]));
+ }
+ assert( fabs(cimags(rowMeanmedTable1_3_3[0]) - ( 27.0f / 16.0f ) ) / fabs ( cimags(rowMeanmedTable1_3_3[0]) ) < 1e-6 );
+ assert( fabs(creals(rowMeanmedTable1_3_3[0]) - ( 49.0f / 16.0f ) ) / fabs ( creals(rowMeanmedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( fabs(cimags(rowMeanmedTable1_3_3[1]) - ( 90.0f / 19.0f ) ) / fabs ( cimags(rowMeanmedTable1_3_3[1]) ) < 1e-6 );
+ assert( fabs(creals(rowMeanmedTable1_3_3[1]) - ( 80.0f / 19.0f ) ) / fabs ( creals(rowMeanmedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( fabs(cimags(rowMeanmedTable1_3_3[2]) - (171.0f / 22.0f ) ) / fabs ( cimags(rowMeanmedTable1_3_3[2]) ) < 1e-6 );
+ assert( fabs(creals(rowMeanmedTable1_3_3[2]) - (117.0f / 22.0f ) ) / fabs ( creals(rowMeanmedTable1_3_3[2]) ) < 1e-6 );
+
+
+
+
+ return 0;
+}
+
+
+static int ccolumnmeanfaTest(void) {
+
+ int i = 0 ;
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+/*
+ float tableR2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float tableI2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 15.0f};
+ float coefR2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+ float coefI2[10] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+*/
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+/*
+ floatComplex* table2 = FloatComplexMatrix (tableR2, tableI2, 9);
+ floatComplex* coef2 = FloatComplexMatrix (coefR2, coefI2, 9);
+*/
+ floatComplex columnMeanmedTable1_3_3[3] ;
+ columnMeanmedTable1_3_3[0] = FloatComplex(0.0f, 0.0f);
+ columnMeanmedTable1_3_3[1] = FloatComplex(0.0f, 0.0f);
+ columnMeanmedTable1_3_3[2] = FloatComplex(0.0f, 0.0f);
+ /*
+ floatComplex rowMeanmedTable1_1_9[9] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable1_9_1[1] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_2_5[5] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_5_2[2] = {FloatComplex(0.0f, 0.0f)};
+*/
+
+ printf("\n>>>> Column Meanf Float Complex Array Test\n");
+
+ /**/
+
+ ccolumnmeanfa(table1 , 3 , 3 , coef1 , columnMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnMeanmedTable_3_3[%d] = %e + %ei\n", i, creals(columnMeanmedTable1_3_3[i]), cimags(columnMeanmedTable1_3_3[i]));
+ }
+ assert( fabs(cimags(columnMeanmedTable1_3_3[0]) - (138.0f / 33.0f ) ) / fabs ( cimags(columnMeanmedTable1_3_3[0]) ) < 1e-6 );
+ assert( fabs(creals(columnMeanmedTable1_3_3[0]) - ( 68.0f / 33.0f ) ) / fabs ( creals(columnMeanmedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( fabs(cimags(columnMeanmedTable1_3_3[1]) - ( 36.0f / 6.0f ) ) / fabs ( cimags(columnMeanmedTable1_3_3[1]) ) < 1e-6 );
+ assert( fabs(creals(columnMeanmedTable1_3_3[1]) - ( 32.0f / 6.0f ) ) / fabs ( creals(columnMeanmedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( fabs(cimags(columnMeanmedTable1_3_3[2]) - (114.0f / 18.0f ) ) / fabs ( cimags(columnMeanmedTable1_3_3[2]) ) < 1e-6 );
+ assert( fabs(creals(columnMeanmedTable1_3_3[2]) - (146.0f / 18.0f ) ) / fabs ( creals(columnMeanmedTable1_3_3[2]) ) < 1e-6 );
+
+
+
+
+ return 0;
+}
+
+
+
+static int testMeanf(void) {
+
+ smeanfsTest();
+ smeanfaTest();
+ scolumnmeanfaTest();
+ srowmeanfaTest();
+ cmeanfsTest();
+ cmeanfaTest();
+ crowmeanfaTest();
+ ccolumnmeanfaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testMeanf() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/zcolumnmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/zcolumnmeanfa.c
new file mode 100644
index 00000000..efbfa89a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/zcolumnmeanfa.c
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+#include "sum.h"
+#include "multiplication.h"
+
+void zcolumnmeanfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex *out) {
+ int i = 0;
+ int j = 0;
+ doubleComplex tempCoefSum = DoubleComplex(0.0,0.0);
+ doubleComplex tempMul = DoubleComplex(0.0,0.0);
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < lines ; ++j)
+ {
+ tempCoefSum = DoubleComplex(0.0,0.0);
+ out[j]= DoubleComplex(0.0,0.0);
+ for ( i = 0 ; i < columns; ++i )
+ {
+
+ tempMul = zmuls ( in1[lines*i + j] , in2[lines*i + j]); /* we times by the coefficient*/
+ tempCoefSum = zadds ( in2[lines*i + j] ,tempCoefSum ) ;
+ out[j] = zadds (tempMul, out[j]) ;
+ }
+
+ out[j] = zrdivs(out[j] ,tempCoefSum) ;
+ }
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/zmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/zmeanfa.c
new file mode 100644
index 00000000..f6691d91
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/zmeanfa.c
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+#include "multiplication.h"
+#include "division.h"
+
+doubleComplex zmeanfa(doubleComplex *in1, int size, doubleComplex *in2 ) {
+ doubleComplex accumulate = DoubleComplex(0.0, 0.0);
+ doubleComplex freAccumulate = DoubleComplex(0.0, 0.0);
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = zadds(accumulate , zmuls( in1[i] ,in2[i]));
+ freAccumulate = zadds(in2[i],freAccumulate);
+ }
+ return zrdivs(accumulate ,freAccumulate);
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/zmeanfdz.c b/2.3-1/src/c/statisticsFunctions/meanf/zmeanfdz.c
new file mode 100644
index 00000000..a53902bc
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/zmeanfdz.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "meanf.h"
+#include "zeros.h"
+
+doubleComplex zmeanfdz (double* in1 ,int lines , int columns , doubleComplex* in2)
+ {
+ double* ZEROS = (double *) malloc((unsigned int)(lines*columns*sizeof(double)));
+ dzerosa(ZEROS,lines,columns);
+
+ return zmeanfa(DoubleComplexMatrix(in1,ZEROS,lines*columns), lines*columns , in2);
+ }
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/zmeanfzd.c b/2.3-1/src/c/statisticsFunctions/meanf/zmeanfzd.c
new file mode 100644
index 00000000..f31910b4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/zmeanfzd.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "meanf.h"
+#include "zeros.h"
+
+doubleComplex zmeanfzd (doubleComplex* in1 ,int lines , int columns , double* in2)
+ {
+ double* ZEROS = (double *) malloc((unsigned int)(lines*columns*sizeof(double)));
+ dzerosa(ZEROS,lines,columns);
+
+ return zmeanfa(in1, lines*columns , DoubleComplexMatrix(in2,ZEROS,lines*columns));
+ }
diff --git a/2.3-1/src/c/statisticsFunctions/meanf/zrowmeanfa.c b/2.3-1/src/c/statisticsFunctions/meanf/zrowmeanfa.c
new file mode 100644
index 00000000..79114137
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/meanf/zrowmeanfa.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "meanf.h"
+#include "sum.h"
+#include "multiplication.h"
+void zrowmeanfa(doubleComplex *in1, int lines, int columns, doubleComplex *in2, doubleComplex *out) {
+ int i = 0;
+ int j = 0;
+ doubleComplex tempCoefSum = DoubleComplex(0.0,0.0);
+ doubleComplex tempMul = DoubleComplex(0.0,0.0);
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ tempCoefSum = DoubleComplex(0.0,0.0);
+ out[j]= DoubleComplex(0.0,0.0);
+ for ( i = 0 ; i < lines; ++i )
+ {
+
+ tempMul = zmuls ( in1[lines*j + i] , in2[lines*j + i]); /* we times by the coefficient*/
+ tempCoefSum = zadds ( in2[lines*j + i] ,tempCoefSum ) ;
+ out[j] = zadds (tempMul, out[j]) ;
+ }
+
+ out[j] = zrdivs(out[j] ,tempCoefSum) ;
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/Makefile.am b/2.3-1/src/c/statisticsFunctions/min/Makefile.am
new file mode 100644
index 00000000..5b8a3570
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/Makefile.am
@@ -0,0 +1,51 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libMin_la_CFLAGS = -I $(top_builddir)/src/c/statisticsFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libMin.la
+
+libMin_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = smina.c \
+ srowmina.c \
+ scolumnmina.c \
+ dmina.c \
+ drowmina.c \
+ dcolumnmina.c
+
+HEAD = ../includes/statMin.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes
+
+check_LDADD = $(top_builddir)/src/c/statisticsFunctions/min/libMin.la
+
+check_PROGRAMS = testFloatMin testDoubleMin
+
+TESTS = testFloatMin testDoubleMin
+
+#
+# -*- Min Tests -*-
+#
+testFloatMin_SOURCES = testFloatMin.c
+testFloatMin_CFLAGS = $(check_INCLUDES)
+testFloatMin_LDADD = $(check_LDADD)
+
+testDoubleMin_SOURCES =testDoubleMin.c
+testDoubleMin_CFLAGS = $(check_INCLUDES)
+testDoubleMin_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/min/Makefile.in b/2.3-1/src/c/statisticsFunctions/min/Makefile.in
new file mode 100644
index 00000000..fe6ddb38
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/Makefile.in
@@ -0,0 +1,759 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatMin$(EXEEXT) testDoubleMin$(EXEEXT)
+TESTS = testFloatMin$(EXEEXT) testDoubleMin$(EXEEXT)
+subdir = src/c/statisticsFunctions/min
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libMin_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libMin_la-smina.lo libMin_la-srowmina.lo \
+ libMin_la-scolumnmina.lo libMin_la-dmina.lo \
+ libMin_la-drowmina.lo libMin_la-dcolumnmina.lo
+am_libMin_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libMin_la_OBJECTS = $(am_libMin_la_OBJECTS)
+libMin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMin_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleMin_OBJECTS = testDoubleMin-testDoubleMin.$(OBJEXT)
+testDoubleMin_OBJECTS = $(am_testDoubleMin_OBJECTS)
+testDoubleMin_DEPENDENCIES = $(check_LDADD)
+testDoubleMin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleMin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatMin_OBJECTS = testFloatMin-testFloatMin.$(OBJEXT)
+testFloatMin_OBJECTS = $(am_testFloatMin_OBJECTS)
+testFloatMin_DEPENDENCIES = $(check_LDADD)
+testFloatMin_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatMin_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libMin_la_SOURCES) $(testDoubleMin_SOURCES) \
+ $(testFloatMin_SOURCES)
+DIST_SOURCES = $(libMin_la_SOURCES) $(testDoubleMin_SOURCES) \
+ $(testFloatMin_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libMin_la_CFLAGS = -I $(top_builddir)/src/c/statisticsFunctions/includes
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libMin.la
+libMin_la_SOURCES = $(HEAD) $(SRC)
+SRC = smina.c \
+ srowmina.c \
+ scolumnmina.c \
+ dmina.c \
+ drowmina.c \
+ dcolumnmina.c
+
+HEAD = ../includes/statMin.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes
+check_LDADD = $(top_builddir)/src/c/statisticsFunctions/min/libMin.la
+
+#
+# -*- Min Tests -*-
+#
+testFloatMin_SOURCES = testFloatMin.c
+testFloatMin_CFLAGS = $(check_INCLUDES)
+testFloatMin_LDADD = $(check_LDADD)
+testDoubleMin_SOURCES = testDoubleMin.c
+testDoubleMin_CFLAGS = $(check_INCLUDES)
+testDoubleMin_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/min/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/min/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libMin.la: $(libMin_la_OBJECTS) $(libMin_la_DEPENDENCIES)
+ $(libMin_la_LINK) -rpath $(pkglibdir) $(libMin_la_OBJECTS) $(libMin_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleMin$(EXEEXT): $(testDoubleMin_OBJECTS) $(testDoubleMin_DEPENDENCIES)
+ @rm -f testDoubleMin$(EXEEXT)
+ $(testDoubleMin_LINK) $(testDoubleMin_OBJECTS) $(testDoubleMin_LDADD) $(LIBS)
+testFloatMin$(EXEEXT): $(testFloatMin_OBJECTS) $(testFloatMin_DEPENDENCIES)
+ @rm -f testFloatMin$(EXEEXT)
+ $(testFloatMin_LINK) $(testFloatMin_OBJECTS) $(testFloatMin_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMin_la-dcolumnmina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMin_la-dmina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMin_la-drowmina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMin_la-scolumnmina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMin_la-smina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMin_la-srowmina.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMin-testDoubleMin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatMin-testFloatMin.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libMin_la-smina.lo: smina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -MT libMin_la-smina.lo -MD -MP -MF $(DEPDIR)/libMin_la-smina.Tpo -c -o libMin_la-smina.lo `test -f 'smina.c' || echo '$(srcdir)/'`smina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMin_la-smina.Tpo $(DEPDIR)/libMin_la-smina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smina.c' object='libMin_la-smina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -c -o libMin_la-smina.lo `test -f 'smina.c' || echo '$(srcdir)/'`smina.c
+
+libMin_la-srowmina.lo: srowmina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -MT libMin_la-srowmina.lo -MD -MP -MF $(DEPDIR)/libMin_la-srowmina.Tpo -c -o libMin_la-srowmina.lo `test -f 'srowmina.c' || echo '$(srcdir)/'`srowmina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMin_la-srowmina.Tpo $(DEPDIR)/libMin_la-srowmina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowmina.c' object='libMin_la-srowmina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -c -o libMin_la-srowmina.lo `test -f 'srowmina.c' || echo '$(srcdir)/'`srowmina.c
+
+libMin_la-scolumnmina.lo: scolumnmina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -MT libMin_la-scolumnmina.lo -MD -MP -MF $(DEPDIR)/libMin_la-scolumnmina.Tpo -c -o libMin_la-scolumnmina.lo `test -f 'scolumnmina.c' || echo '$(srcdir)/'`scolumnmina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMin_la-scolumnmina.Tpo $(DEPDIR)/libMin_la-scolumnmina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnmina.c' object='libMin_la-scolumnmina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -c -o libMin_la-scolumnmina.lo `test -f 'scolumnmina.c' || echo '$(srcdir)/'`scolumnmina.c
+
+libMin_la-dmina.lo: dmina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -MT libMin_la-dmina.lo -MD -MP -MF $(DEPDIR)/libMin_la-dmina.Tpo -c -o libMin_la-dmina.lo `test -f 'dmina.c' || echo '$(srcdir)/'`dmina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMin_la-dmina.Tpo $(DEPDIR)/libMin_la-dmina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dmina.c' object='libMin_la-dmina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -c -o libMin_la-dmina.lo `test -f 'dmina.c' || echo '$(srcdir)/'`dmina.c
+
+libMin_la-drowmina.lo: drowmina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -MT libMin_la-drowmina.lo -MD -MP -MF $(DEPDIR)/libMin_la-drowmina.Tpo -c -o libMin_la-drowmina.lo `test -f 'drowmina.c' || echo '$(srcdir)/'`drowmina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMin_la-drowmina.Tpo $(DEPDIR)/libMin_la-drowmina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowmina.c' object='libMin_la-drowmina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -c -o libMin_la-drowmina.lo `test -f 'drowmina.c' || echo '$(srcdir)/'`drowmina.c
+
+libMin_la-dcolumnmina.lo: dcolumnmina.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -MT libMin_la-dcolumnmina.lo -MD -MP -MF $(DEPDIR)/libMin_la-dcolumnmina.Tpo -c -o libMin_la-dcolumnmina.lo `test -f 'dcolumnmina.c' || echo '$(srcdir)/'`dcolumnmina.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libMin_la-dcolumnmina.Tpo $(DEPDIR)/libMin_la-dcolumnmina.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnmina.c' object='libMin_la-dcolumnmina.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMin_la_CFLAGS) $(CFLAGS) -c -o libMin_la-dcolumnmina.lo `test -f 'dcolumnmina.c' || echo '$(srcdir)/'`dcolumnmina.c
+
+testDoubleMin-testDoubleMin.o: testDoubleMin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMin_CFLAGS) $(CFLAGS) -MT testDoubleMin-testDoubleMin.o -MD -MP -MF $(DEPDIR)/testDoubleMin-testDoubleMin.Tpo -c -o testDoubleMin-testDoubleMin.o `test -f 'testDoubleMin.c' || echo '$(srcdir)/'`testDoubleMin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMin-testDoubleMin.Tpo $(DEPDIR)/testDoubleMin-testDoubleMin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMin.c' object='testDoubleMin-testDoubleMin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMin_CFLAGS) $(CFLAGS) -c -o testDoubleMin-testDoubleMin.o `test -f 'testDoubleMin.c' || echo '$(srcdir)/'`testDoubleMin.c
+
+testDoubleMin-testDoubleMin.obj: testDoubleMin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMin_CFLAGS) $(CFLAGS) -MT testDoubleMin-testDoubleMin.obj -MD -MP -MF $(DEPDIR)/testDoubleMin-testDoubleMin.Tpo -c -o testDoubleMin-testDoubleMin.obj `if test -f 'testDoubleMin.c'; then $(CYGPATH_W) 'testDoubleMin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleMin-testDoubleMin.Tpo $(DEPDIR)/testDoubleMin-testDoubleMin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleMin.c' object='testDoubleMin-testDoubleMin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMin_CFLAGS) $(CFLAGS) -c -o testDoubleMin-testDoubleMin.obj `if test -f 'testDoubleMin.c'; then $(CYGPATH_W) 'testDoubleMin.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleMin.c'; fi`
+
+testFloatMin-testFloatMin.o: testFloatMin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMin_CFLAGS) $(CFLAGS) -MT testFloatMin-testFloatMin.o -MD -MP -MF $(DEPDIR)/testFloatMin-testFloatMin.Tpo -c -o testFloatMin-testFloatMin.o `test -f 'testFloatMin.c' || echo '$(srcdir)/'`testFloatMin.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMin-testFloatMin.Tpo $(DEPDIR)/testFloatMin-testFloatMin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMin.c' object='testFloatMin-testFloatMin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMin_CFLAGS) $(CFLAGS) -c -o testFloatMin-testFloatMin.o `test -f 'testFloatMin.c' || echo '$(srcdir)/'`testFloatMin.c
+
+testFloatMin-testFloatMin.obj: testFloatMin.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMin_CFLAGS) $(CFLAGS) -MT testFloatMin-testFloatMin.obj -MD -MP -MF $(DEPDIR)/testFloatMin-testFloatMin.Tpo -c -o testFloatMin-testFloatMin.obj `if test -f 'testFloatMin.c'; then $(CYGPATH_W) 'testFloatMin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMin.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatMin-testFloatMin.Tpo $(DEPDIR)/testFloatMin-testFloatMin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatMin.c' object='testFloatMin-testFloatMin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatMin_CFLAGS) $(CFLAGS) -c -o testFloatMin-testFloatMin.obj `if test -f 'testFloatMin.c'; then $(CYGPATH_W) 'testFloatMin.c'; else $(CYGPATH_W) '$(srcdir)/testFloatMin.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/min/dcolumnmina.c b/2.3-1/src/c/statisticsFunctions/min/dcolumnmina.c
new file mode 100644
index 00000000..6f0b3c1a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/dcolumnmina.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMin.h"
+
+void dcolumnmina(double *in, int rows, int columns, double* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i]) out[i] = in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/dmina.c b/2.3-1/src/c/statisticsFunctions/min/dmina.c
new file mode 100644
index 00000000..232232c1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/dmina.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMin.h"
+
+double dmina(double *in, int size) {
+ double out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out) out = in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/drowmina.c b/2.3-1/src/c/statisticsFunctions/min/drowmina.c
new file mode 100644
index 00000000..f74498a7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/drowmina.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMin.h"
+
+void drowmina(double *in, int rows, int columns, double* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i]) out[i] = in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/i16columnmina.c b/2.3-1/src/c/statisticsFunctions/min/i16columnmina.c
new file mode 100644
index 00000000..64ec334b
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/i16columnmina.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i16columnmina(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int16)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (int16)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/i16mina.c b/2.3-1/src/c/statisticsFunctions/min/i16mina.c
new file mode 100644
index 00000000..402b946e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/i16mina.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+int16 i16mina(int16 *in, int size) {
+ int16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (int16)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/i16rowmina.c b/2.3-1/src/c/statisticsFunctions/min/i16rowmina.c
new file mode 100644
index 00000000..51f575a6
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/i16rowmina.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i16rowmina(int16 *in, int rows, int columns, int16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int16)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (int16)in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/i8columnmina.c b/2.3-1/src/c/statisticsFunctions/min/i8columnmina.c
new file mode 100644
index 00000000..041bc9b4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/i8columnmina.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i8columnmina(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(int8)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (int8)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/i8mina.c b/2.3-1/src/c/statisticsFunctions/min/i8mina.c
new file mode 100644
index 00000000..f7acac73
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/i8mina.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+int8 i8mina(int8 *in, int size) {
+ int8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (int8)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/i8rowmina.c b/2.3-1/src/c/statisticsFunctions/min/i8rowmina.c
new file mode 100644
index 00000000..1c573823
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/i8rowmina.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void i8rowmina(int8 *in, int rows, int columns, int8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(int8)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (int8)in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/scolumnmina.c b/2.3-1/src/c/statisticsFunctions/min/scolumnmina.c
new file mode 100644
index 00000000..8e19b1de
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/scolumnmina.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMin.h"
+
+void scolumnmina(float *in, int rows, int columns, float* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i]) out[i] = in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/smina.c b/2.3-1/src/c/statisticsFunctions/min/smina.c
new file mode 100644
index 00000000..bdc929cd
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/smina.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "statMin.h"
+
+float smina(float *in, int size) {
+ float out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out) out = in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/srowmina.c b/2.3-1/src/c/statisticsFunctions/min/srowmina.c
new file mode 100644
index 00000000..bbdb4f04
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/srowmina.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "statMin.h"
+
+void srowmina(float *in, int rows, int columns, float* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i]) out[i] = in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/testDoubleMin.c b/2.3-1/src/c/statisticsFunctions/min/testDoubleMin.c
new file mode 100644
index 00000000..41522164
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/testDoubleMin.c
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "statMin.h"
+#include "assert.h"
+#include "stdio.h"
+
+
+static void dminaTest(void){
+ double in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ double out;
+
+ out = dmina(in,12);
+ assert(out-1==0);
+
+}
+
+
+static void drowminaTest(void){
+ double in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ double result2[2]={1,1};
+ double result3[3]={1,1,2};
+ double result4[4]={4,1,1,3};
+ double result6[6]={4,1,2,1,2,3};
+ double out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ int i;
+
+
+ drowmina(in,12,1,out1);
+ drowmina(in,6,2,out2);
+ drowmina(in,4,3,out3);
+ drowmina(in,3,4,out4);
+ drowmina(in,2,6,out6);
+ drowmina(in,1,12,out12);
+
+ assert(out1[0]-1==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+
+static void dcolumnminaTest(void){
+ double in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ double out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ double result2[2]={2,1};
+ double result3[3]={1,1,2};
+ double result4[4]={2,5,4,1};
+ double result6[6]={4,1,2,1,2,3};
+ int i;
+
+
+
+ dcolumnmina(in,12,1,out12);
+ dcolumnmina(in,6,2,out6);
+ dcolumnmina(in,4,3,out4);
+ dcolumnmina(in,3,4,out3);
+ dcolumnmina(in,2,6,out2);
+ dcolumnmina(in,1,12,out1);
+
+ assert(out1[0]-1==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+static int minTest(void){
+ dminaTest();
+ drowminaTest();
+ dcolumnminaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert(minTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/testFloatMin.c b/2.3-1/src/c/statisticsFunctions/min/testFloatMin.c
new file mode 100644
index 00000000..70022a6d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/testFloatMin.c
@@ -0,0 +1,92 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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 "statMin.h"
+#include "assert.h"
+#include "stdio.h"
+
+static void sminaTest(void){
+ float in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ float out;
+
+ out = smina(in,12);
+ assert(out-1==0);
+
+}
+
+
+static void srowminaTest(void){
+ float in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ float out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ float result2[2]={1,1};
+ float result3[3]={1,1,2};
+ float result4[4]={4,1,1,3};
+ float result6[6]={4,1,2,1,2,3};
+ int i;
+
+
+ srowmina(in,12,1,out1);
+ srowmina(in,6,2,out2);
+ srowmina(in,4,3,out3);
+ srowmina(in,3,4,out4);
+ srowmina(in,2,6,out6);
+ srowmina(in,1,12,out12);
+
+ assert(out1[0]-1==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+
+static void scolumnminaTest(void){
+ float in[12]={4,5,7,1,2,6,4,1,2,5,4,3};
+ float out1[1],out2[2],out3[3],out4[4],out6[6],out12[12];
+ float result2[2]={2,1};
+ float result3[3]={1,1,2};
+ float result4[4]={2,5,4,1};
+ float result6[6]={4,1,2,1,2,3};
+ int i;
+
+
+
+ scolumnmina(in,12,1,out12);
+ scolumnmina(in,6,2,out6);
+ scolumnmina(in,4,3,out4);
+ scolumnmina(in,3,4,out3);
+ scolumnmina(in,2,6,out2);
+ scolumnmina(in,1,12,out1);
+
+ assert(out1[0]-1==0);
+ for (i=0;i<2;i++) assert(out2[i]-result2[i]==0);
+ for (i=0;i<3;i++) assert(out3[i]-result3[i]==0);
+ for (i=0;i<4;i++) assert(out4[i]-result4[i]==0);
+ for (i=0;i<6;i++) assert(out6[i]-result6[i]==0);
+ for (i=0;i<12;i++) assert(out12[i]-in[i]==0);
+}
+
+static int minTest(void){
+ sminaTest();
+ srowminaTest();
+ scolumnminaTest();
+ return 0;
+}
+
+
+int main(void){
+ assert(minTest()==0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj b/2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj
new file mode 100644
index 00000000..aa78adb1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{9678E693-3459-4D6F-9017-EA3E28A58AC7}</ProjectGuid>
+ <RootNamespace>testDoubleMin</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMin.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj.filters
new file mode 100644
index 00000000..257addf5
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/test_DoubleMin/testDoubleMin.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleMin.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj b/2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj
new file mode 100644
index 00000000..409d4ad8
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0A156C36-89D5-485E-BB8E-C7536A1DA566}</ProjectGuid>
+ <RootNamespace>testFloatMin</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMin.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj.filters
new file mode 100644
index 00000000..ab525fab
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/test_FloatMin/testFloatMin.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatMin.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/min/u16columnmina.c b/2.3-1/src/c/statisticsFunctions/min/u16columnmina.c
new file mode 100644
index 00000000..1df155d2
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/u16columnmina.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void u16columnmina(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(uint16)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (uint16)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/u16mina.c b/2.3-1/src/c/statisticsFunctions/min/u16mina.c
new file mode 100644
index 00000000..e09f0449
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/u16mina.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+uint16 u16mina(uint16 *in, int size) {
+ uint16 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (uint16)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/u16rowmina.c b/2.3-1/src/c/statisticsFunctions/min/u16rowmina.c
new file mode 100644
index 00000000..dc4ba080
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/u16rowmina.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "statMin.h"
+
+void u16rowmina(uint16 *in, int rows, int columns, uint16* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(uint16)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (uint16)in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/u8columnmina.c b/2.3-1/src/c/statisticsFunctions/min/u8columnmina.c
new file mode 100644
index 00000000..07269fa4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/u8columnmina.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void u8columnmina(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < rows; i++) {
+ out[i]=(uint8)in[i*columns];
+ for (j=0;j<columns;j++)
+ if (in[i+j*rows]<out[i])
+ out[i] = (uint8)in[i+j*rows];
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/u8mina.c b/2.3-1/src/c/statisticsFunctions/min/u8mina.c
new file mode 100644
index 00000000..579d1b3c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/u8mina.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+uint8 u8mina(uint8 *in, int size) {
+ uint8 out = in[0];
+ int i = 0;
+
+ for (i = 1; i < size; ++i)
+ {
+ if (in[i]<out)
+ out = (uint8)in[i];
+ }
+ return out;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/min/u8rowmina.c b/2.3-1/src/c/statisticsFunctions/min/u8rowmina.c
new file mode 100644
index 00000000..2f1de4f1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/min/u8rowmina.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Mushir
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "statMin.h"
+
+void u8rowmina(uint8 *in, int rows, int columns, uint8* out) {
+ int i = 0, j = 0;
+
+ for (i = 0; i < columns; i++) {
+ out[i]=(uint8)in[i*rows];
+ for (j = 1 ; j < rows ; j++)
+ if (in[i*rows+j]<out[i])
+ out[i] = (uint8)in[i*rows+j];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/Makefile.am b/2.3-1/src/c/statisticsFunctions/prod/Makefile.am
new file mode 100644
index 00000000..4c217f57
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/Makefile.am
@@ -0,0 +1,66 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libProd_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libProd.la
+
+libProd_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sproda.c \
+ srowproda.c \
+ scolumnproda.c \
+ dproda.c \
+ drowproda.c \
+ dcolumnproda.c \
+ cproda.c \
+ crowproda.c \
+ ccolumnproda.c \
+ zproda.c \
+ zrowproda.c \
+ zcolumnproda.c
+
+HEAD = ../includes/prod.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/statisticsFunctions/prod/libProd.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatProd testDoubleProd
+
+TESTS = testFloatProd testDoubleProd
+
+#
+# -*- Prod Tests -*-
+#
+testFloatProd_SOURCES = testFloatProd.c
+testFloatProd_CFLAGS = $(check_INCLUDES)
+testFloatProd_LDADD = $(check_LDADD)
+
+testDoubleProd_SOURCES =testDoubleProd.c
+testDoubleProd_CFLAGS = $(check_INCLUDES)
+testDoubleProd_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/prod/Makefile.in b/2.3-1/src/c/statisticsFunctions/prod/Makefile.in
new file mode 100644
index 00000000..67fb6234
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/Makefile.in
@@ -0,0 +1,833 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatProd$(EXEEXT) testDoubleProd$(EXEEXT)
+TESTS = testFloatProd$(EXEEXT) testDoubleProd$(EXEEXT)
+subdir = src/c/statisticsFunctions/prod
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libProd_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libProd_la-sproda.lo libProd_la-srowproda.lo \
+ libProd_la-scolumnproda.lo libProd_la-dproda.lo \
+ libProd_la-drowproda.lo libProd_la-dcolumnproda.lo \
+ libProd_la-cproda.lo libProd_la-crowproda.lo \
+ libProd_la-ccolumnproda.lo libProd_la-zproda.lo \
+ libProd_la-zrowproda.lo libProd_la-zcolumnproda.lo
+am_libProd_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libProd_la_OBJECTS = $(am_libProd_la_OBJECTS)
+libProd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libProd_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleProd_OBJECTS = testDoubleProd-testDoubleProd.$(OBJEXT)
+testDoubleProd_OBJECTS = $(am_testDoubleProd_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/statisticsFunctions/prod/libProd.la
+testDoubleProd_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleProd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleProd_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatProd_OBJECTS = testFloatProd-testFloatProd.$(OBJEXT)
+testFloatProd_OBJECTS = $(am_testFloatProd_OBJECTS)
+testFloatProd_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatProd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatProd_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libProd_la_SOURCES) $(testDoubleProd_SOURCES) \
+ $(testFloatProd_SOURCES)
+DIST_SOURCES = $(libProd_la_SOURCES) $(testDoubleProd_SOURCES) \
+ $(testFloatProd_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libProd_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libProd.la
+libProd_la_SOURCES = $(HEAD) $(SRC)
+SRC = sproda.c \
+ srowproda.c \
+ scolumnproda.c \
+ dproda.c \
+ drowproda.c \
+ dcolumnproda.c \
+ cproda.c \
+ crowproda.c \
+ ccolumnproda.c \
+ zproda.c \
+ zrowproda.c \
+ zcolumnproda.c
+
+HEAD = ../includes/prod.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/statisticsFunctions/prod/libProd.la \
+ @LIBMATH@
+
+
+#
+# -*- Prod Tests -*-
+#
+testFloatProd_SOURCES = testFloatProd.c
+testFloatProd_CFLAGS = $(check_INCLUDES)
+testFloatProd_LDADD = $(check_LDADD)
+testDoubleProd_SOURCES = testDoubleProd.c
+testDoubleProd_CFLAGS = $(check_INCLUDES)
+testDoubleProd_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/prod/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/prod/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libProd.la: $(libProd_la_OBJECTS) $(libProd_la_DEPENDENCIES)
+ $(libProd_la_LINK) -rpath $(pkglibdir) $(libProd_la_OBJECTS) $(libProd_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleProd$(EXEEXT): $(testDoubleProd_OBJECTS) $(testDoubleProd_DEPENDENCIES)
+ @rm -f testDoubleProd$(EXEEXT)
+ $(testDoubleProd_LINK) $(testDoubleProd_OBJECTS) $(testDoubleProd_LDADD) $(LIBS)
+testFloatProd$(EXEEXT): $(testFloatProd_OBJECTS) $(testFloatProd_DEPENDENCIES)
+ @rm -f testFloatProd$(EXEEXT)
+ $(testFloatProd_LINK) $(testFloatProd_OBJECTS) $(testFloatProd_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-ccolumnproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-cproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-crowproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-dcolumnproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-dproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-drowproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-scolumnproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-sproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-srowproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-zcolumnproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-zproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libProd_la-zrowproda.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleProd-testDoubleProd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatProd-testFloatProd.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libProd_la-sproda.lo: sproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-sproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-sproda.Tpo -c -o libProd_la-sproda.lo `test -f 'sproda.c' || echo '$(srcdir)/'`sproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-sproda.Tpo $(DEPDIR)/libProd_la-sproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sproda.c' object='libProd_la-sproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-sproda.lo `test -f 'sproda.c' || echo '$(srcdir)/'`sproda.c
+
+libProd_la-srowproda.lo: srowproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-srowproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-srowproda.Tpo -c -o libProd_la-srowproda.lo `test -f 'srowproda.c' || echo '$(srcdir)/'`srowproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-srowproda.Tpo $(DEPDIR)/libProd_la-srowproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowproda.c' object='libProd_la-srowproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-srowproda.lo `test -f 'srowproda.c' || echo '$(srcdir)/'`srowproda.c
+
+libProd_la-scolumnproda.lo: scolumnproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-scolumnproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-scolumnproda.Tpo -c -o libProd_la-scolumnproda.lo `test -f 'scolumnproda.c' || echo '$(srcdir)/'`scolumnproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-scolumnproda.Tpo $(DEPDIR)/libProd_la-scolumnproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnproda.c' object='libProd_la-scolumnproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-scolumnproda.lo `test -f 'scolumnproda.c' || echo '$(srcdir)/'`scolumnproda.c
+
+libProd_la-dproda.lo: dproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-dproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-dproda.Tpo -c -o libProd_la-dproda.lo `test -f 'dproda.c' || echo '$(srcdir)/'`dproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-dproda.Tpo $(DEPDIR)/libProd_la-dproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dproda.c' object='libProd_la-dproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-dproda.lo `test -f 'dproda.c' || echo '$(srcdir)/'`dproda.c
+
+libProd_la-drowproda.lo: drowproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-drowproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-drowproda.Tpo -c -o libProd_la-drowproda.lo `test -f 'drowproda.c' || echo '$(srcdir)/'`drowproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-drowproda.Tpo $(DEPDIR)/libProd_la-drowproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowproda.c' object='libProd_la-drowproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-drowproda.lo `test -f 'drowproda.c' || echo '$(srcdir)/'`drowproda.c
+
+libProd_la-dcolumnproda.lo: dcolumnproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-dcolumnproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-dcolumnproda.Tpo -c -o libProd_la-dcolumnproda.lo `test -f 'dcolumnproda.c' || echo '$(srcdir)/'`dcolumnproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-dcolumnproda.Tpo $(DEPDIR)/libProd_la-dcolumnproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnproda.c' object='libProd_la-dcolumnproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-dcolumnproda.lo `test -f 'dcolumnproda.c' || echo '$(srcdir)/'`dcolumnproda.c
+
+libProd_la-cproda.lo: cproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-cproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-cproda.Tpo -c -o libProd_la-cproda.lo `test -f 'cproda.c' || echo '$(srcdir)/'`cproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-cproda.Tpo $(DEPDIR)/libProd_la-cproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cproda.c' object='libProd_la-cproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-cproda.lo `test -f 'cproda.c' || echo '$(srcdir)/'`cproda.c
+
+libProd_la-crowproda.lo: crowproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-crowproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-crowproda.Tpo -c -o libProd_la-crowproda.lo `test -f 'crowproda.c' || echo '$(srcdir)/'`crowproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-crowproda.Tpo $(DEPDIR)/libProd_la-crowproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowproda.c' object='libProd_la-crowproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-crowproda.lo `test -f 'crowproda.c' || echo '$(srcdir)/'`crowproda.c
+
+libProd_la-ccolumnproda.lo: ccolumnproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-ccolumnproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-ccolumnproda.Tpo -c -o libProd_la-ccolumnproda.lo `test -f 'ccolumnproda.c' || echo '$(srcdir)/'`ccolumnproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-ccolumnproda.Tpo $(DEPDIR)/libProd_la-ccolumnproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnproda.c' object='libProd_la-ccolumnproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-ccolumnproda.lo `test -f 'ccolumnproda.c' || echo '$(srcdir)/'`ccolumnproda.c
+
+libProd_la-zproda.lo: zproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-zproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-zproda.Tpo -c -o libProd_la-zproda.lo `test -f 'zproda.c' || echo '$(srcdir)/'`zproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-zproda.Tpo $(DEPDIR)/libProd_la-zproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zproda.c' object='libProd_la-zproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-zproda.lo `test -f 'zproda.c' || echo '$(srcdir)/'`zproda.c
+
+libProd_la-zrowproda.lo: zrowproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-zrowproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-zrowproda.Tpo -c -o libProd_la-zrowproda.lo `test -f 'zrowproda.c' || echo '$(srcdir)/'`zrowproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-zrowproda.Tpo $(DEPDIR)/libProd_la-zrowproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowproda.c' object='libProd_la-zrowproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-zrowproda.lo `test -f 'zrowproda.c' || echo '$(srcdir)/'`zrowproda.c
+
+libProd_la-zcolumnproda.lo: zcolumnproda.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -MT libProd_la-zcolumnproda.lo -MD -MP -MF $(DEPDIR)/libProd_la-zcolumnproda.Tpo -c -o libProd_la-zcolumnproda.lo `test -f 'zcolumnproda.c' || echo '$(srcdir)/'`zcolumnproda.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libProd_la-zcolumnproda.Tpo $(DEPDIR)/libProd_la-zcolumnproda.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnproda.c' object='libProd_la-zcolumnproda.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libProd_la_CFLAGS) $(CFLAGS) -c -o libProd_la-zcolumnproda.lo `test -f 'zcolumnproda.c' || echo '$(srcdir)/'`zcolumnproda.c
+
+testDoubleProd-testDoubleProd.o: testDoubleProd.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleProd_CFLAGS) $(CFLAGS) -MT testDoubleProd-testDoubleProd.o -MD -MP -MF $(DEPDIR)/testDoubleProd-testDoubleProd.Tpo -c -o testDoubleProd-testDoubleProd.o `test -f 'testDoubleProd.c' || echo '$(srcdir)/'`testDoubleProd.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleProd-testDoubleProd.Tpo $(DEPDIR)/testDoubleProd-testDoubleProd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleProd.c' object='testDoubleProd-testDoubleProd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleProd_CFLAGS) $(CFLAGS) -c -o testDoubleProd-testDoubleProd.o `test -f 'testDoubleProd.c' || echo '$(srcdir)/'`testDoubleProd.c
+
+testDoubleProd-testDoubleProd.obj: testDoubleProd.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleProd_CFLAGS) $(CFLAGS) -MT testDoubleProd-testDoubleProd.obj -MD -MP -MF $(DEPDIR)/testDoubleProd-testDoubleProd.Tpo -c -o testDoubleProd-testDoubleProd.obj `if test -f 'testDoubleProd.c'; then $(CYGPATH_W) 'testDoubleProd.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleProd.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleProd-testDoubleProd.Tpo $(DEPDIR)/testDoubleProd-testDoubleProd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleProd.c' object='testDoubleProd-testDoubleProd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleProd_CFLAGS) $(CFLAGS) -c -o testDoubleProd-testDoubleProd.obj `if test -f 'testDoubleProd.c'; then $(CYGPATH_W) 'testDoubleProd.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleProd.c'; fi`
+
+testFloatProd-testFloatProd.o: testFloatProd.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatProd_CFLAGS) $(CFLAGS) -MT testFloatProd-testFloatProd.o -MD -MP -MF $(DEPDIR)/testFloatProd-testFloatProd.Tpo -c -o testFloatProd-testFloatProd.o `test -f 'testFloatProd.c' || echo '$(srcdir)/'`testFloatProd.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatProd-testFloatProd.Tpo $(DEPDIR)/testFloatProd-testFloatProd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatProd.c' object='testFloatProd-testFloatProd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatProd_CFLAGS) $(CFLAGS) -c -o testFloatProd-testFloatProd.o `test -f 'testFloatProd.c' || echo '$(srcdir)/'`testFloatProd.c
+
+testFloatProd-testFloatProd.obj: testFloatProd.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatProd_CFLAGS) $(CFLAGS) -MT testFloatProd-testFloatProd.obj -MD -MP -MF $(DEPDIR)/testFloatProd-testFloatProd.Tpo -c -o testFloatProd-testFloatProd.obj `if test -f 'testFloatProd.c'; then $(CYGPATH_W) 'testFloatProd.c'; else $(CYGPATH_W) '$(srcdir)/testFloatProd.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatProd-testFloatProd.Tpo $(DEPDIR)/testFloatProd-testFloatProd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatProd.c' object='testFloatProd-testFloatProd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatProd_CFLAGS) $(CFLAGS) -c -o testFloatProd-testFloatProd.obj `if test -f 'testFloatProd.c'; then $(CYGPATH_W) 'testFloatProd.c'; else $(CYGPATH_W) '$(srcdir)/testFloatProd.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/prod/ccolumnproda.c b/2.3-1/src/c/statisticsFunctions/prod/ccolumnproda.c
new file mode 100644
index 00000000..8ea35e21
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/ccolumnproda.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+#include "multiplication.h"
+
+void ccolumnproda(floatComplex *in, int lines, int columns, floatComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = cmuls(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/cproda.c b/2.3-1/src/c/statisticsFunctions/prod/cproda.c
new file mode 100644
index 00000000..fe0c65db
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/cproda.c
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "prod.h"
+#include "multiplication.h"
+
+
+floatComplex cproda(floatComplex *in, int size) {
+ floatComplex accumulate = in[0];
+ int i = 0;
+
+
+ for (i = 1; i < size; ++i)
+ {
+ accumulate = cmuls(accumulate,in[i]);
+ }
+ return accumulate;
+
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/prod/crowproda.c b/2.3-1/src/c/statisticsFunctions/prod/crowproda.c
new file mode 100644
index 00000000..463895da
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/crowproda.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+#include "multiplication.h"
+
+void crowproda(floatComplex *in, int lines, int columns, floatComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = cmuls( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/dcolumnproda.c b/2.3-1/src/c/statisticsFunctions/prod/dcolumnproda.c
new file mode 100644
index 00000000..6ecdcdcb
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/dcolumnproda.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+
+void dcolumnproda(double *in, int lines, int columns, double * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] *= in[i];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/dproda.c b/2.3-1/src/c/statisticsFunctions/prod/dproda.c
new file mode 100644
index 00000000..cc05890d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/dproda.c
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "prod.h"
+
+
+double dproda(double *in, int size) {
+ double accumulate = in[0];
+ int i = 0;
+
+
+ for (i = 1; i < size; ++i)
+ {
+ accumulate *= in[i];
+ }
+ return accumulate;
+
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/prod/drowproda.c b/2.3-1/src/c/statisticsFunctions/prod/drowproda.c
new file mode 100644
index 00000000..14f713c7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/drowproda.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+
+void drowproda(double *in, int lines, int columns, double * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] *= in[((i - 1) % columns) * lines + 1 + (i - 1) / columns];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/scolumnproda.c b/2.3-1/src/c/statisticsFunctions/prod/scolumnproda.c
new file mode 100644
index 00000000..842d3d18
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/scolumnproda.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+
+void scolumnproda(float *in, int lines, int columns, float * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] *= in[i];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/sproda.c b/2.3-1/src/c/statisticsFunctions/prod/sproda.c
new file mode 100644
index 00000000..9c5bfc24
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/sproda.c
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "prod.h"
+
+
+float sproda(float *in, int size) {
+ float accumulate = in[0];
+ int i = 0;
+
+
+ for (i = 1; i < size; ++i)
+ {
+ accumulate *= in[i];
+ }
+ return accumulate;
+
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/prod/srowproda.c b/2.3-1/src/c/statisticsFunctions/prod/srowproda.c
new file mode 100644
index 00000000..197072ad
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/srowproda.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+
+void srowproda(float *in, int lines, int columns, float * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] *= in[((i - 1) % columns) * lines + 1 + (i - 1) / columns];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/testDoubleProd.c b/2.3-1/src/c/statisticsFunctions/prod/testDoubleProd.c
new file mode 100644
index 00000000..6b5972a6
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/testDoubleProd.c
@@ -0,0 +1,519 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "prod.h"
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int dprodsTest(void) {
+ double value1 = 3.0;
+ double value2 = 1.123456789;
+
+ printf("\n>>>> prod Double Scalar Test\n");
+ assert(dprods(value1) == 3.0);
+ assert(dprods(value2) == 1.123456789);
+
+ return 0;
+}
+
+static int dprodaTest(void) {
+ double table1[3] = {3.0, 3.0, 3.0};
+ double table2[5] = {9.186784563,
+ 9.186784563,
+ 9.186784563,
+ 9.186784563,
+ 9.186784563};
+
+ printf("\n>>>> prod Double Array Test\n");
+ printf("%f\n", dproda(table1, 3));
+ assert(dproda(table1, 3) == 27.0);
+ assert((dproda(table2, 5) - (9.186784563 * 9.186784563 * 9.186784563 * 9.186784563 * 9.186784563)) / dproda(table2, 5) < 3e-15);
+ return 0;
+}
+
+static int dcolumnprodaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double columnProductedTable1_3_3[3] = {0};
+ double columnProductedTable1_1_9[1] = {0};
+ double columnProductedTable1_9_1[9] = {0};
+ double columnProductedTable2_2_5[2] = {0};
+ double columnProductedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column prod Double Array Test\n");
+ /*
+ [ 1 2 3 ] [ 1*2*3=6 ]
+ [ 4 5 6 ] => [ 4*5*6=120 ]
+ [ 7 8 9 ] [ 7*8*9=504 ]
+ */
+ dcolumnproda(table1, 3, 3,columnProductedTable1_3_3);
+ assert(columnProductedTable1_3_3[0] == 6.0);
+ assert(columnProductedTable1_3_3[1] == 120.0);
+ assert(columnProductedTable1_3_3[2] == 504.0);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 362880 ]
+ */
+ dcolumnproda(table1, 1, 9,columnProductedTable1_1_9);
+ assert(columnProductedTable1_1_9[0] == 362880.0);
+
+ /*
+ [ 1 ] [ 1 ]
+ [ 2 ] [ 2 ]
+ [ 3 ] [ 3 ]
+ [ 4 ] [ 4 ]
+ [ 5 ] => [ 5 ]
+ [ 6 ] [ 6 ]
+ [ 7 ] [ 7 ]
+ [ 8 ] [ 8 ]
+ [ 9 ] [ 9 ]
+ */
+ dcolumnproda(table1, 9, 1,columnProductedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnProductedTable1_9_1[%d] = %e\n", i, columnProductedTable1_9_1[i]);
+ assert(columnProductedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ] [ 945 ]
+ [ 2 4 6 8 10 ] => [ 3840 ]
+ */
+ dcolumnproda(table2, 2, 5,columnProductedTable2_2_5);
+ assert(columnProductedTable2_2_5[0] == 945.0);
+ assert(columnProductedTable2_2_5[1] == 3840.0);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnProductedTable2_2_5[%d] = %e\n", i, columnProductedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ] [ 6 ]
+ [ 2 7 ] => [ 14 ]
+ [ 3 8 ] [ 24 ]
+ [ 4 9 ] [ 36 ]
+ [ 5 10 ] [ 50 ]
+ */
+ dcolumnproda(table2, 5, 2,columnProductedTable2_5_2);
+ assert(columnProductedTable2_5_2[0] == 6.0);
+ assert(columnProductedTable2_5_2[1] == 14.0);
+ assert(columnProductedTable2_5_2[2] == 24.0);
+ assert(columnProductedTable2_5_2[3] == 36.0);
+ assert(columnProductedTable2_5_2[4] == 50.0);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnProductedTable2_5_2[%d] = %e\n", i, columnProductedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int drowprodaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double rowProductedTable1_3_3[3] = {0};
+ double rowProductedTable1_1_9[9] = {0};
+ double rowProductedTable1_9_1[1] = {0};
+ double rowProductedTable2_2_5[5] = {0};
+ double rowProductedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row prod Double Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 28 80 162 ]
+ [ 7 8 9 ]
+ */
+ drowproda(table1, 3, 3,rowProductedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowProductedTable1_3_3[%d] = %e\n", i, rowProductedTable1_3_3[i]);
+ }
+ assert(rowProductedTable1_3_3[0] == 28.0);
+ assert(rowProductedTable1_3_3[1] == 80.0);
+ assert(rowProductedTable1_3_3[2] == 162.0);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ */
+ drowproda(table1, 1, 9,rowProductedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowProductedTable1_1_9[%d] = %e\n", i, rowProductedTable1_1_9[i]);
+ assert(rowProductedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 362880 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ drowproda(table1, 9, 1,rowProductedTable1_9_1);
+ assert(rowProductedTable1_9_1[0] == 362880.0);
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 2 12 30 56 90 ]
+ */
+ drowproda(table2, 2, 5,rowProductedTable2_2_5);
+ assert(rowProductedTable2_2_5[0] == 2.0);
+ assert(rowProductedTable2_2_5[1] == 12.0);
+ assert(rowProductedTable2_2_5[2] == 30.0);
+ assert(rowProductedTable2_2_5[3] == 56.0);
+ assert(rowProductedTable2_2_5[4] == 90.0);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowProductedTable2_2_5[%d] = %e\n", i, rowProductedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 120 30240 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ drowproda(table2, 5, 2,rowProductedTable2_5_2);
+ assert(rowProductedTable2_5_2[0] == 120.0);
+ assert(rowProductedTable2_5_2[1] == 30240.0);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("rowProductedTable2_5_2[%d] = %e\n", i, rowProductedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int zprodsTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex value2 = DoubleComplex(1.123456789, 1.123456789);
+
+ printf("\n>>>> prod Double Complex Scalar Test\n");
+ assert(zreals(zprods(value1)) == 3.0);
+ assert(zimags(zprods(value1)) == 3.0);
+ assert(zreals(zprods(value2)) == 1.123456789);
+ assert(zimags(zprods(value2)) == 1.123456789);
+ return 0;
+}
+
+static int zprodaTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex table1[3];
+ doubleComplex value2 = DoubleComplex(9.186784563,9.186784563);
+ doubleComplex table2[5];
+
+ printf("\n>>>> prod Double Complex Array Test\n");
+ table1[0] = value1;
+ table1[1] = value1;
+ table1[2] = value1;
+
+ table2[0] = value2;
+ table2[1] = value2;
+ table2[2] = value2;
+ table2[3] = value2;
+ table2[4] = value2;
+
+#ifdef LOCAL_DEBUG
+ printf("--------\n");
+ printf("%e\n", zreals(zproda(table1, 3)));
+ printf("%e\n", zimags(zproda(table1, 3)));
+ printf("%1.20f\n", zreals(zproda(table2, 5)));
+ printf("%1.20f\n", zimags(zproda(table2, 5)));
+ printf("%1.20f\n", zreals(zproda(table2, 5)) + 261744.55211053110542707);
+ printf("--------\n");
+#endif
+ assert(zreals(zproda(table1, 3)) == -54.0);
+ assert(zimags(zproda(table1, 3)) == 54.0);
+ assert(fabs(zreals(zproda(table2, 5)) + 261744.55211053110542707) < 3e-16);
+ assert(fabs(zimags(zproda(table2, 5)) + 261744.55211053110542707) < 3e-16);
+
+ return 0;
+}
+
+static int zrowprodaTest(void) {
+ int i = 0;
+ doubleComplex in[12];
+ doubleComplex rowProductedIn_4_3[3];
+ doubleComplex rowProductedIn_3_4[4];
+ doubleComplex rowProductedIn_6_2[2];
+ doubleComplex rowProductedIn_2_6[6];
+ doubleComplex rowProductedIn_1_12[12];
+ doubleComplex rowProductedIn_12_1[1];
+
+ printf("\n>>>> Row prod Double Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = DoubleComplex((double) i / 10.0, (11.0 - (double) i) / 10.0);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 0.6787000000000000810019 - 0.5456i
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ] - 0.3964999999999999635847,
+ [ 0.3+0.8i 0.7+0.4i 1.1 ] 0.678700000000000192024 + 0.5456i]
+ */
+ zrowproda(in, 4, 3, rowProductedIn_4_3);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("rowProductedIn_4_3[%d] = %e + %ei\n", i, zreals(rowProductedIn_4_3[i]), zimags(rowProductedIn_4_3[i]));
+ }
+ assert(fabs(zreals(rowProductedIn_4_3[0]) - 0.6787000000000000810019) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_4_3[0]) + 0.5456) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_4_3[1]) + 0.3964999999999999635847) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_4_3[1]) - 0.0) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_4_3[2]) - 0.6787000000000000810019) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_4_3[2]) - 0.5456) < 3e-16);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ - 0.3190000000000000612843 - 0.9680000000000000826006i,
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ] - 0.5380000000000000337508 + 0.0010000000000000563993i,
+ - 0.0010000000000000008882 + 0.5379999999999999227285i,
+ 0.9680000000000000826006 + 0.3190000000000000612843i ]
+ */
+ zrowproda(in, 3, 4, rowProductedIn_3_4);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("rowProductedIn_3_4[%d] = %e + %ei\n", i, zreals(rowProductedIn_3_4[i]), zimags(rowProductedIn_3_4[i]));
+ }
+ assert(fabs(zreals(rowProductedIn_3_4[0]) + 0.3190000000000000612843) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_3_4[0]) + 0.9680000000000000826006) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_3_4[1]) + 0.5380000000000000337508) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_3_4[1]) - 0.0010000000000000563993 ) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_3_4[2]) + 0.0010000000000000008882) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_3_4[2]) - 0.5379999999999999227285) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_3_4[3]) - 0.9680000000000000826006) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_3_4[3]) - 0.3190000000000000612843) < 3e-16);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 0.1725900000000000766853 + 0.5204650000000000664713i,
+ [ 0.3+0.8i 0.9+0.2i ] - 0.1725899999999999934186 + 0.5204649999999999554490i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ zrowproda(in, 6, 2, rowProductedIn_6_2);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("rowProductedIn_6_2[%d] = %e + %ei\n", i, zreals(rowProductedIn_6_2[i]), zimags(rowProductedIn_6_2[i]));
+ }
+ assert(fabs(zreals(rowProductedIn_6_2[0]) - 0.1725900000000000766853) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_6_2[0]) - 0.5204650000000000664713) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_6_2[1]) + 0.1725899999999999934186) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_6_2[1]) - 0.5204649999999999554490 ) < 3e-16);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ - 1.1000000000000000888178 + 0.11i,
+ - 0.6600000000000001421086 + 0.4300000000000000488498i,
+ - 0.2199999999999999733547 + 0.5899999999999999689138i,
+ 0.2199999999999999733547 + 0.5899999999999999689138i,
+ 0.6600000000000001421086 + 0.4300000000000000488498i,
+ 1.1000000000000000888178 + 0.11i ]
+ */
+ zrowproda(in, 2, 6, rowProductedIn_2_6);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("rowProductedIn_2_6[%d] = %e + %ei\n", i, zreals(rowProductedIn_2_6[i]), zimags(rowProductedIn_2_6[i]));
+ }
+ assert(fabs(zreals(rowProductedIn_2_6[0]) + 1.1000000000000000888178) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_2_6[0]) - 0.11) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_2_6[1]) + 0.6600000000000001421086) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_2_6[1]) - 0.4300000000000000488498 ) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_2_6[2]) + 0.2199999999999999733547) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_2_6[2]) - 0.5899999999999999689138) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_2_6[3]) - 0.2199999999999999733547) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_2_6[3]) - 0.5899999999999999689138 ) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_2_6[4]) - 0.6600000000000001421086) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_2_6[4]) - 0.4300000000000000488498) < 3e-16);
+ assert(fabs(zreals(rowProductedIn_2_6[5]) - 1.1000000000000000888178) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_2_6[5]) - 0.11 ) < 3e-16);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ */
+ zrowproda(in, 1, 12, rowProductedIn_1_12);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("rowProductedIn_1_12[%d] = %e + %ei\n", i, zreals(rowProductedIn_1_12[i]), zimags(rowProductedIn_1_12[i]));
+ assert(zreals(rowProductedIn_1_12[i]) == zreals(in[i]) && zimags(rowProductedIn_1_12[i]) == zimags(in[i]));
+ }
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [- 0.3006711243250001497351 + 0.0000000000000000038164i ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+
+ */
+ zrowproda(in, 12, 1, rowProductedIn_12_1);
+ printf("rowProductedIn_12_1[%d] = %e + %ei\n", 0, zreals(rowProductedIn_12_1[0]), zimags(rowProductedIn_12_1[0]));
+ assert(fabs(zreals(rowProductedIn_12_1[0]) + 0.3006711243250001497351) < 3e-16);
+ assert(fabs(zimags(rowProductedIn_12_1[0]) - 0.0000000000000000038164) < 3e-16);
+
+ return 0;
+}
+
+static int zcolumnprodaTest(void) {
+ int i = 0;
+ doubleComplex in[12];
+ doubleComplex columnProductedIn_4_3[4];
+ doubleComplex columnProductedIn_3_4[3];
+ doubleComplex columnProductedIn_6_2[6];
+ doubleComplex columnProductedIn_2_6[2];
+ doubleComplex columnProductedIn_1_12[1];
+ doubleComplex columnProductedIn_12_1[12];
+
+ printf("\n>>>> Columnprod Double Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = DoubleComplex((double) i / 10.0, (11.0 - (double) i) / 10.0);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ] [ - 0.7480000000000001092460 + 0.1210000000000001074696i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ - 0.6069999999999999840128 + 0.3940000000000001278977i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ] [ - 0.3940000000000000168754 + 0.6069999999999999840128i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ] [ - 0.1210000000000000935918 + 0.7479999999999999982236i ]
+ */
+ zcolumnproda(in, 4, 3, columnProductedIn_4_3);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("columnProductedIn_4_3[%d] = %e + %ei\n", i, zreals(columnProductedIn_4_3[i]), zimags(columnProductedIn_4_3[i]));
+ }
+ assert(fabs(zreals(columnProductedIn_4_3[0]) + 0.7480000000000001092460) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_4_3[0]) - 0.1210000000000001074696) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_4_3[1]) + 0.6069999999999999840128) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_4_3[1]) - 0.394000000000000127897) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_4_3[2]) + 0.3940000000000000168754) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_4_3[2]) - 0.606999999999999984012) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_4_3[3]) + 0.1210000000000000935918) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_4_3[3]) - 0.7479999999999999982236) < 3e-16);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ] [ - 0.5753000000000000335731 - 0.3564000000000000500933i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ - 0.6564999999999998614442 + 0.0000000000000000693889i ]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ] [ - 0.5753000000000001445955 + 0.3564000000000001056044i ]
+ */
+ zcolumnproda(in, 3, 4, columnProductedIn_3_4);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("columnProductedIn_3_4[%d] = %e + %ei\n", i, zreals(columnProductedIn_3_4[i]), zimags(columnProductedIn_3_4[i]));
+ }
+ assert(fabs(zreals(columnProductedIn_3_4[0]) + 0.5753000000000000335731) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_3_4[0]) + 0.3564000000000000500933) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_3_4[1]) + 0.6564999999999998614442) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_3_4[1]) - 0.0000000000000000693889) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_3_4[2]) + 0.5753000000000001445955) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_3_4[2]) - 0.3564000000000001056044) < 3e-16);
+
+ /*
+ [ 1.1i 0.6+0.5i ] [ - 0.5500000000000000444089 + 0.6600000000000000310862i ]
+ [ 0.1+i 0.7+0.4i ] [ - 0.3300000000000000155431 + 0.7399999999999999911182i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ - 0.1099999999999999866773 + 0.7800000000000000266454i ]
+ [ 0.3+0.8i 0.9+0.2i ] [ 0.1099999999999999866773 + 0.7800000000000000266454i ]
+ [ 0.4+0.7i 1+0.1i ] [ 0.3300000000000000155431 + 0.7399999999999999911182i ]
+ [ 0.5+0.6i 1.1 ] [ 0.5500000000000000444089 + 0.6600000000000000310862i ]
+ */
+ zcolumnproda(in, 6, 2, columnProductedIn_6_2);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("columnProductedIn_6_2[%d] = %e + %ei\n", i, zreals(columnProductedIn_6_2[i]), zimags(columnProductedIn_6_2[i]));
+ }
+ assert(fabs(zreals(columnProductedIn_6_2[0]) + 0.5500000000000000444089) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_6_2[0]) - 0.6600000000000000310862) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_6_2[1]) + 0.3300000000000000155431) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_6_2[1]) - 0.7399999999999999911182) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_6_2[2]) + 0.1099999999999999866773) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_6_2[2]) - 0.7800000000000000266454) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_6_2[3]) - 0.1099999999999999866773) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_6_2[3]) - 0.7800000000000000266454) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_6_2[4]) - 0.3300000000000000155431) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_6_2[4]) - 0.7399999999999999911182) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_6_2[5]) - 0.5500000000000000444089) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_6_2[5]) - 0.6600000000000000310862) < 3e-16);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ] [ 0.2212649999999999894662 - 0.5017100000000001003286i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ - 0.2212649999999999894662 - 0.5017100000000001003286i ]
+ */
+ zcolumnproda(in, 2, 6, columnProductedIn_2_6);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("columnProductedIn_2_6[%d] = %e + %ei\n", i, zreals(columnProductedIn_2_6[i]), zimags(columnProductedIn_2_6[i]));
+ }
+ assert(fabs(zreals(columnProductedIn_2_6[0]) - 0.2212649999999999894662) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_2_6[0]) + 0.5017100000000001003286) < 3e-16);
+ assert(fabs(zreals(columnProductedIn_2_6[1]) + 0.2212649999999999894662) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_2_6[1]) + 0.5017100000000001003286) < 3e-16);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ - 0.3006711243250001497351 + 0.0000000000000000038164i ]
+ */
+ zcolumnproda(in, 1, 12, columnProductedIn_1_12);
+ printf("columnProductedIn_1_12[%d] = %e + %ei\n", 0, zreals(columnProductedIn_1_12[0]), zimags(columnProductedIn_1_12[0]));
+ assert(fabs(zreals(columnProductedIn_1_12[0]) + 0.3006711243250001497351) < 3e-16);
+ assert(fabs(zimags(columnProductedIn_1_12[0]) - 0.0000000000000000038164) < 3e-16);
+
+
+ /*
+ [ 1.1i ] => [ 1.1i ]
+ [ 0.1+i ] => [ 0.1+i ]
+ [ 0.2+0.9i ] => [ 0.2+0.9i ]
+ [ 0.3+0.8i ] => [ 0.3+0.8i ]
+ [ 0.4+0.7i ] => [ 0.4+0.7i ]
+ [ 0.5+0.6i ] => [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 0.6+0.5i ]
+ [ 0.7+0.4i ] => [ 0.7+0.4i ]
+ [ 0.8+0.3i ] => [ 0.8+0.3i ]
+ [ 0.9+0.2i ] => [ 0.9+0.2i ]
+ [ 1+0.1i ] => [ 1+0.1i ]
+ [ 1.1 ] => [ 1.1 ]
+ */
+ zcolumnproda(in, 12, 1, columnProductedIn_12_1);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("columnProductedIn_12_1[%d] = %e + %ei\n", i, zreals(columnProductedIn_12_1[i]), zimags(columnProductedIn_12_1[i]));
+ assert(zreals(columnProductedIn_12_1[i]) == zreals(in[i]) && zimags(columnProductedIn_12_1[i]) == zimags(in[i]));
+ }
+
+ return 0;
+}
+
+static int testprod(void) {
+
+ dprodsTest();
+ dprodaTest();
+ drowprodaTest();
+ dcolumnprodaTest();
+ zprodsTest();
+ zprodaTest();
+ zrowprodaTest();
+ zcolumnprodaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testprod() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/testFloatProd.c b/2.3-1/src/c/statisticsFunctions/prod/testFloatProd.c
new file mode 100644
index 00000000..b5fe20c4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/testFloatProd.c
@@ -0,0 +1,527 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "prod.h"
+
+ #define LOCAL_DEBUG
+
+static int sprodsTest(void) {
+ float value1 = 3.0f;
+ float value2 = 1.123456789f;
+
+ printf("\n>>>> Prod Float Scalar Test\n");
+ assert(sprods(value1) == 3.0f);
+ assert(sprods(value2) == 1.123456789f);
+
+ return 0;
+}
+
+static int sprodaTest(void) {
+ float table1[3] = {3.0f, 3.0f, 3.0f};
+ float table2[5] = {9.186784563f,
+ 9.186784563f,
+ 9.186784563f,
+ 9.186784563f,
+ 9.186784563f};
+
+ printf("\n>>>> Prod Float Array Test\n");
+ printf("%f\n", sproda(table1, 3));
+ assert(sproda(table1, 3) == 27.0f);
+ assert((sproda(table2, 5) - (9.186784f * 9.186784f * 9.186784f * 9.186784f * 9.186784f)) / sproda(table2, 5) < 1e-6);
+ return 0;
+}
+
+static int scolumnprodaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float columnProductedTable1_3_3[3] = {0};
+ float columnProductedTable1_1_9[1] = {0};
+ float columnProductedTable1_9_1[9] = {0};
+ float columnProductedTable2_2_5[2] = {0};
+ float columnProductedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Prod Float Array Test\n");
+ /*
+ [ 1 2 3 ] [ 1*2*3=6 ]
+ [ 4 5 6 ] => [ 4*5*6=120 ]
+ [ 7 8 9 ] [ 7*8*9=504 ]
+ */
+ scolumnproda(table1, 3, 3,columnProductedTable1_3_3);
+ assert(columnProductedTable1_3_3[0] == 6.0f);
+ assert(columnProductedTable1_3_3[1] == 120.0f);
+ assert(columnProductedTable1_3_3[2] == 504.0f);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 362880 ]
+ */
+ scolumnproda(table1, 1, 9,columnProductedTable1_1_9);
+ assert(columnProductedTable1_1_9[0] == 362880.0f);
+
+ /*
+ [ 1 ] [ 1 ]
+ [ 2 ] [ 2 ]
+ [ 3 ] [ 3 ]
+ [ 4 ] [ 4 ]
+ [ 5 ] => [ 5 ]
+ [ 6 ] [ 6 ]
+ [ 7 ] [ 7 ]
+ [ 8 ] [ 8 ]
+ [ 9 ] [ 9 ]
+ */
+ scolumnproda(table1, 9, 1,columnProductedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnProductedTable1_9_1[%d] = %e\n", i, columnProductedTable1_9_1[i]);
+ assert(columnProductedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ] [ 945 ]
+ [ 2 4 6 8 10 ] => [ 3840 ]
+ */
+ scolumnproda(table2, 2, 5,columnProductedTable2_2_5);
+ assert(columnProductedTable2_2_5[0] == 945.0f);
+ assert(columnProductedTable2_2_5[1] == 3840.0f);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnProductedTable2_2_5[%d] = %e\n", i, columnProductedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ] [ 6 ]
+ [ 2 7 ] => [ 14 ]
+ [ 3 8 ] [ 24 ]
+ [ 4 9 ] [ 36 ]
+ [ 5 10 ] [ 50 ]
+ */
+ scolumnproda(table2, 5, 2,columnProductedTable2_5_2);
+ assert(columnProductedTable2_5_2[0] == 6.0f);
+ assert(columnProductedTable2_5_2[1] == 14.0f);
+ assert(columnProductedTable2_5_2[2] == 24.0f);
+ assert(columnProductedTable2_5_2[3] == 36.0f);
+ assert(columnProductedTable2_5_2[4] == 50.0f);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnProductedTable2_5_2[%d] = %e\n", i, columnProductedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int srowprodaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float rowProductedTable1_3_3[3] = {0};
+ float rowProductedTable1_1_9[9] = {0};
+ float rowProductedTable1_9_1[1] = {0};
+ float rowProductedTable2_2_5[5] = {0};
+ float rowProductedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Prod Float Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 28 80 162 ]
+ [ 7 8 9 ]
+ */
+ srowproda(table1, 3, 3,rowProductedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowProductedTable1_3_3[%d] = %e\n", i, rowProductedTable1_3_3[i]);
+ }
+ assert(rowProductedTable1_3_3[0] == 28.0f);
+ assert(rowProductedTable1_3_3[1] == 80.0f);
+ assert(rowProductedTable1_3_3[2] == 162.0f);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ */
+ srowproda(table1, 1, 9,rowProductedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowProductedTable1_1_9[%d] = %e\n", i, rowProductedTable1_1_9[i]);
+ assert(rowProductedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 362880 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ srowproda(table1, 9, 1,rowProductedTable1_9_1);
+ assert(rowProductedTable1_9_1[0] == 362880.0f);
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 2 12 30 56 90 ]
+ */
+ srowproda(table2, 2, 5,rowProductedTable2_2_5);
+ assert(rowProductedTable2_2_5[0] == 2.0f);
+ assert(rowProductedTable2_2_5[1] == 12.0f);
+ assert(rowProductedTable2_2_5[2] == 30.0f);
+ assert(rowProductedTable2_2_5[3] == 56.0f);
+ assert(rowProductedTable2_2_5[4] == 90.0f);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowProductedTable2_2_5[%d] = %e\n", i, rowProductedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 120 30240 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ srowproda(table2, 5, 2,rowProductedTable2_5_2);
+ assert(rowProductedTable2_5_2[0] == 120.0f);
+ assert(rowProductedTable2_5_2[1] == 30240.0f);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("rowProductedTable2_5_2[%d] = %e\n", i, rowProductedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int cprodsTest(void) {
+ floatComplex value1 = FloatComplex(3.0f, 3.0f);
+ floatComplex value2 = FloatComplex(1.123456789f, 1.123456789f);
+
+ printf("\n>>>> Prod Float Complex Scalar Test\n");
+ assert(creals(cprods(value1)) == 3.0f);
+ assert(cimags(cprods(value1)) == 3.0f);
+ assert(creals(cprods(value2)) == 1.123456789f);
+ assert(cimags(cprods(value2)) == 1.123456789f);
+ return 0;
+}
+
+static int cprodaTest(void) {
+ floatComplex value1 = FloatComplex(3.0f, 3.0f);
+ floatComplex table1[3];
+ floatComplex value2 = FloatComplex(9.186784563f,9.186784563f);
+ floatComplex table2[5];
+
+ printf("\n>>>> Prod Float Complex Array Test\n");
+ table1[0] = value1;
+ table1[1] = value1;
+ table1[2] = value1;
+
+ table2[0] = value2;
+ table2[1] = value2;
+ table2[2] = value2;
+ table2[3] = value2;
+ table2[4] = value2;
+
+#ifdef LOCAL_DEBUG
+ printf("--------\n");
+ printf("%e\n", creals(cproda(table1, 3)));
+ printf("%e\n", cimags(cproda(table1, 3)));
+ printf("%1.20f\n", creals(cproda(table2, 5)));
+ printf("%1.20f\n", cimags(cproda(table2, 5)));
+ printf("%1.20f\n", creals(cproda(table2, 5)) + 261744.55211053110542707f);
+ printf("--------\n");
+#endif
+
+ assert(creals(cproda(table1, 3)) == -54.0f);
+ assert(cimags(cproda(table1, 3)) == 54.0f);
+ assert(fabs(creals(cproda(table2, 5)) + 261744.55211053110542707f)/creals(cproda(table2, 5)) < 1e-06);
+ assert(fabs(cimags(cproda(table2, 5)) + 261744.55211053110542707f)/cimags(cproda(table2, 5)) < 1e-06);
+
+ return 0;
+}
+
+static int crowprodaTest(void) {
+ int i = 0;
+ floatComplex in[12];
+ floatComplex rowProductedIn_4_3[3];
+ floatComplex rowProductedIn_3_4[4];
+ floatComplex rowProductedIn_6_2[2];
+ floatComplex rowProductedIn_2_6[6];
+ floatComplex rowProductedIn_1_12[12];
+ floatComplex rowProductedIn_12_1[1];
+
+ printf("\n>>>> Row Prod Float Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = FloatComplex((float) i / 10.0f, (11.0f - (float) i) / 10.0f);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 0.6787000000000000810019 - 0.5456i
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ] - 0.3964999999999999635847,
+ [ 0.3+0.8i 0.7+0.4i 1.1 ] 0.678700000000000192024 + 0.5456i]
+ */
+ crowproda(in, 4, 3, rowProductedIn_4_3);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("rowProductedIn_4_3[%d] = %e + %ei\n", i, creals(rowProductedIn_4_3[i]), cimags(rowProductedIn_4_3[i]));
+ }
+ assert(fabs(creals(rowProductedIn_4_3[0]) - 0.6787000000000000810019f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_4_3[0]) + 0.5456f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_4_3[1]) + 0.3964999999999999635847f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_4_3[1]) - 0.0f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_4_3[2]) - 0.6787000000000000810019f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_4_3[2]) - 0.5456f) < 1e-06);
+
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ - 0.3190000000000000612843 - 0.9680000000000000826006i,
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ] - 0.5380000000000000337508 + 0.0010000000000000563993i,
+ - 0.0010000000000000008882 + 0.5379999999999999227285i,
+ 0.9680000000000000826006 + 0.3190000000000000612843i ]
+ */
+ crowproda(in, 3, 4, rowProductedIn_3_4);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("rowProductedIn_3_4[%d] = %e + %ei\n", i, creals(rowProductedIn_3_4[i]), cimags(rowProductedIn_3_4[i]));
+ }
+ assert(fabs(creals(rowProductedIn_3_4[0]) + 0.3190000000000000612843f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_3_4[0]) + 0.9680000000000000826006f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_3_4[1]) + 0.5380000000000000337508f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_3_4[1]) - 0.0010000000000000563993 ) < 1e-06);
+ assert(fabs(creals(rowProductedIn_3_4[2]) + 0.0010000000000000008882f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_3_4[2]) - 0.5379999999999999227285f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_3_4[3]) - 0.9680000000000000826006f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_3_4[3]) - 0.3190000000000000612843f) < 1e-06);
+
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 0.1725900000000000766853 + 0.5204650000000000664713i,
+ [ 0.3+0.8i 0.9+0.2i ] - 0.1725899999999999934186 + 0.5204649999999999554490i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ crowproda(in, 6, 2, rowProductedIn_6_2);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("rowProductedIn_6_2[%d] = %e + %ei\n", i, creals(rowProductedIn_6_2[i]), cimags(rowProductedIn_6_2[i]));
+ }
+
+ assert(fabs(creals(rowProductedIn_6_2[0]) - 0.1725900000000000766853f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_6_2[0]) - 0.5204650000000000664713f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_6_2[1]) + 0.1725899999999999934186f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_6_2[1]) - 0.5204649999999999554490 ) < 1e-06);
+
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ - 1.1000000000000000888178 + 0.11i,
+ - 0.6600000000000001421086 + 0.4300000000000000488498i,
+ - 0.2199999999999999733547 + 0.5899999999999999689138i,
+ 0.2199999999999999733547 + 0.5899999999999999689138i,
+ 0.6600000000000001421086 + 0.4300000000000000488498i,
+ 1.1000000000000000888178 + 0.11i ]
+
+ */
+ crowproda(in, 2, 6, rowProductedIn_2_6);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("rowProductedIn_2_6[%d] = %e + %ei\n", i, creals(rowProductedIn_2_6[i]), cimags(rowProductedIn_2_6[i]));
+ }
+
+ assert(fabs(creals(rowProductedIn_2_6[0]) + 1.1000000000000000888178f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_2_6[0]) - 0.11f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_2_6[1]) + 0.6600000000000001421086f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_2_6[1]) - 0.4300000000000000488498 ) < 1e-06);
+ assert(fabs(creals(rowProductedIn_2_6[2]) + 0.2199999999999999733547f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_2_6[2]) - 0.5899999999999999689138f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_2_6[3]) - 0.2199999999999999733547f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_2_6[3]) - 0.5899999999999999689138 ) < 1e-06);
+ assert(fabs(creals(rowProductedIn_2_6[4]) - 0.6600000000000001421086f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_2_6[4]) - 0.4300000000000000488498f) < 1e-06);
+ assert(fabs(creals(rowProductedIn_2_6[5]) - 1.1000000000000000888178f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_2_6[5]) - 0.11 ) < 1e-06);
+
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ => [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ */
+ crowproda(in, 1, 12, rowProductedIn_1_12);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("rowProductedIn_1_12[%d] = %e + %ei\n", i, creals(rowProductedIn_1_12[i]), cimags(rowProductedIn_1_12[i]));
+ assert(creals(rowProductedIn_1_12[i]) == creals(in[i]) && cimags(rowProductedIn_1_12[i]) == cimags(in[i]));
+ }
+
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [- 0.3006711243250001497351 + 0.0000000000000000038164i ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+
+
+ */
+ crowproda(in, 12, 1, rowProductedIn_12_1);
+ printf("rowProductedIn_12_1[%d] = %e + %ei\n", 0, creals(rowProductedIn_12_1[0]), cimags(rowProductedIn_12_1[0]));
+ assert(fabs(creals(rowProductedIn_12_1[0]) + 0.3006711243250001497351f) < 1e-06);
+ assert(fabs(cimags(rowProductedIn_12_1[0]) - 0.0000000000000000038164f) < 1e-06);
+
+ return 0;
+}
+
+static int ccolumnprodaTest(void) {
+ int i = 0;
+ floatComplex in[12];
+ floatComplex columnProductedIn_4_3[4];
+ floatComplex columnProductedIn_3_4[3];
+ floatComplex columnProductedIn_6_2[6];
+ floatComplex columnProductedIn_2_6[2];
+ floatComplex columnProductedIn_1_12[1];
+ floatComplex columnProductedIn_12_1[12];
+
+ printf("\n>>>> ColumnProd Float Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = FloatComplex((float) i / 10.0f, (11.0f - (float) i) / 10.0f);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ] [ - 0.7480000000000001092460 + 0.1210000000000001074696i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ - 0.6069999999999999840128 + 0.3940000000000001278977i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ] [ - 0.3940000000000000168754 + 0.6069999999999999840128i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ] [ - 0.1210000000000000935918 + 0.7479999999999999982236i ]
+ */
+ ccolumnproda(in, 4, 3, columnProductedIn_4_3);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("columnProductedIn_4_3[%d] = %e + %ei\n", i, creals(columnProductedIn_4_3[i]), cimags(columnProductedIn_4_3[i]));
+ }
+ assert(fabs(creals(columnProductedIn_4_3[0]) + 0.7480000000000001092460f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_4_3[0]) - 0.1210000000000001074696f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_4_3[1]) + 0.6069999999999999840128f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_4_3[1]) - 0.394000000000000127897f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_4_3[2]) + 0.3940000000000000168754f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_4_3[2]) - 0.606999999999999984012f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_4_3[3]) + 0.1210000000000000935918f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_4_3[3]) - 0.7479999999999999982236f) < 1e-06);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ] [ - 0.5753000000000000335731 - 0.3564000000000000500933i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ - 0.6564999999999998614442 + 0.0000000000000000693889i ]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ] [ - 0.5753000000000001445955 + 0.3564000000000001056044i ]
+ */
+ ccolumnproda(in, 3, 4, columnProductedIn_3_4);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("columnProductedIn_3_4[%d] = %e + %ei\n", i, creals(columnProductedIn_3_4[i]), cimags(columnProductedIn_3_4[i]));
+ }
+ assert(fabs(creals(columnProductedIn_3_4[0]) + 0.5753000000000000335731f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_3_4[0]) + 0.3564000000000000500933f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_3_4[1]) + 0.6564999999999998614442f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_3_4[1]) - 0.0000000000000000693889f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_3_4[2]) + 0.5753000000000001445955f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_3_4[2]) - 0.3564000000000001056044f) < 1e-06);
+
+ /*
+ [ 1.1i 0.6+0.5i ] [ - 0.5500000000000000444089 + 0.6600000000000000310862i ]
+ [ 0.1+i 0.7+0.4i ] [ - 0.3300000000000000155431 + 0.7399999999999999911182i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ - 0.1099999999999999866773 + 0.7800000000000000266454i ]
+ [ 0.3+0.8i 0.9+0.2i ] [ 0.1099999999999999866773 + 0.7800000000000000266454i ]
+ [ 0.4+0.7i 1+0.1i ] [ 0.3300000000000000155431 + 0.7399999999999999911182i ]
+ [ 0.5+0.6i 1.1 ] [ 0.5500000000000000444089 + 0.6600000000000000310862i ]
+ */
+ ccolumnproda(in, 6, 2, columnProductedIn_6_2);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("columnProductedIn_6_2[%d] = %e + %ei\n", i, creals(columnProductedIn_6_2[i]), cimags(columnProductedIn_6_2[i]));
+ }
+ assert(fabs(creals(columnProductedIn_6_2[0]) + 0.5500000000000000444089f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_6_2[0]) - 0.6600000000000000310862f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_6_2[1]) + 0.3300000000000000155431f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_6_2[1]) - 0.7399999999999999911182f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_6_2[2]) + 0.1099999999999999866773f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_6_2[2]) - 0.7800000000000000266454f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_6_2[3]) - 0.1099999999999999866773f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_6_2[3]) - 0.7800000000000000266454f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_6_2[4]) - 0.3300000000000000155431f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_6_2[4]) - 0.7399999999999999911182f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_6_2[5]) - 0.5500000000000000444089f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_6_2[5]) - 0.6600000000000000310862f) < 1e-06);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ] [ 0.2212649999999999894662 - 0.5017100000000001003286i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ - 0.2212649999999999894662 - 0.5017100000000001003286i ]
+ */
+ ccolumnproda(in, 2, 6, columnProductedIn_2_6);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("columnProductedIn_2_6[%d] = %e + %ei\n", i, creals(columnProductedIn_2_6[i]), cimags(columnProductedIn_2_6[i]));
+ }
+ assert(fabs(creals(columnProductedIn_2_6[0]) - 0.2212649999999999894662f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_2_6[0]) + 0.5017100000000001003286f) < 1e-06);
+ assert(fabs(creals(columnProductedIn_2_6[1]) + 0.2212649999999999894662f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_2_6[1]) + 0.5017100000000001003286f) < 1e-06);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ - 0.3006711243250001497351 + 0.0000000000000000038164i ]
+
+ */
+ ccolumnproda(in, 1, 12, columnProductedIn_1_12);
+ printf("columnProductedIn_1_12[%d] = %e + %ei\n", 0, creals(columnProductedIn_1_12[0]), cimags(columnProductedIn_1_12[0]));
+ assert(fabs(creals(columnProductedIn_1_12[0]) + 0.3006711243250001497351f) < 1e-06);
+ assert(fabs(cimags(columnProductedIn_1_12[0]) - 0.0000000000000000038164f) < 1e-06);
+
+
+ /*
+ [ 1.1i ] => [ 1.1i ]
+ [ 0.1+i ] => [ 0.1+i ]
+ [ 0.2+0.9i ] => [ 0.2+0.9i ]
+ [ 0.3+0.8i ] => [ 0.3+0.8i ]
+ [ 0.4+0.7i ] => [ 0.4+0.7i ]
+ [ 0.5+0.6i ] => [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 0.6+0.5i ]
+ [ 0.7+0.4i ] => [ 0.7+0.4i ]
+ [ 0.8+0.3i ] => [ 0.8+0.3i ]
+ [ 0.9+0.2i ] => [ 0.9+0.2i ]
+ [ 1+0.1i ] => [ 1+0.1i ]
+ [ 1.1 ] => [ 1.1 ]
+ */
+ ccolumnproda(in, 12, 1, columnProductedIn_12_1);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("columnProductedIn_12_1[%d] = %e + %ei\n", i, creals(columnProductedIn_12_1[i]), cimags(columnProductedIn_12_1[i]));
+ assert(creals(columnProductedIn_12_1[i]) == creals(in[i]) && cimags(columnProductedIn_12_1[i]) == cimags(in[i]));
+ }
+
+ return 0;
+}
+
+static int testProd(void) {
+
+ sprodsTest();
+ sprodaTest();
+ srowprodaTest();
+ scolumnprodaTest();
+ cprodsTest();
+ cprodaTest();
+ crowprodaTest();
+ ccolumnprodaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testProd() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj b/2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj
new file mode 100644
index 00000000..0c31766a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{322F871E-3349-4993-BC87-CAFAA6B6F72C}</ProjectGuid>
+ <RootNamespace>testDoubleProd</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleProd.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj.filters
new file mode 100644
index 00000000..82f3501c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/test_DoubleProd/testDoubleProd.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleProd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj b/2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj
new file mode 100644
index 00000000..4faff605
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B80645FE-03D0-4BC8-8DAE-032A58CF4E57}</ProjectGuid>
+ <RootNamespace>testFloatProd</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatProd.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj.filters
new file mode 100644
index 00000000..f42beb90
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/test_FloatProd/testFloatProd.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatProd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/prod/zcolumnproda.c b/2.3-1/src/c/statisticsFunctions/prod/zcolumnproda.c
new file mode 100644
index 00000000..277afd5a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/zcolumnproda.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+#include "multiplication.h"
+
+void zcolumnproda(doubleComplex *in, int lines, int columns, doubleComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = zmuls(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/prod/zproda.c b/2.3-1/src/c/statisticsFunctions/prod/zproda.c
new file mode 100644
index 00000000..a017d979
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/zproda.c
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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 "prod.h"
+#include "multiplication.h"
+
+
+doubleComplex zproda(doubleComplex *in, int size) {
+ doubleComplex accumulate = in[0];
+ int i = 0;
+
+
+ for (i = 1; i < size; ++i)
+ {
+ accumulate = zmuls(accumulate,in[i]);
+ }
+ return accumulate;
+
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/prod/zrowproda.c b/2.3-1/src/c/statisticsFunctions/prod/zrowproda.c
new file mode 100644
index 00000000..84a16903
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/prod/zrowproda.c
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud TORSET
+ *
+ * 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
+ *
+ */
+
+/* This is a copy/paste with adaptation from sum */
+
+#include "prod.h"
+#include "multiplication.h"
+
+void zrowproda(doubleComplex *in, int lines, int columns, doubleComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = zmuls( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj b/2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj
new file mode 100644
index 00000000..48a8b0cf
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj
@@ -0,0 +1,661 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E11ED064-3BF2-4F70-B66E-3223C737EC60}</ProjectGuid>
+ <RootNamespace>statisticsFunctions</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../elementaryFunctions/includes;../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;STATISTICSFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../elementaryFunctions/includes;../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;STATISTICSFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../elementaryFunctions/includes;../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;STATISTICSFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;../operations/includes;../elementaryFunctions/includes;../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;STATISTICSFUNCTIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="max\dcolumnmaxa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="max\dmaxa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="max\drowmaxa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="max\scolumnmaxa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="max\smaxa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="max\srowmaxa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\ccolumnmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\cmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\crowmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\dcolumnmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\dmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\drowmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\scolumnmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\smeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\srowmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\zcolumnmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\zmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="mean\zrowmeana.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="min\dcolumnmina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="min\dmina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="min\drowmina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="min\scolumnmina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="min\smina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="min\srowmina.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\ccolumnproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\cproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\crowproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\dcolumnproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\dproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\drowproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\scolumnproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\sproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\srowproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\zcolumnproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\zproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="prod\zrowproda.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\ccolumnsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\crowsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\csuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\dcolumnsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\drowsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\dsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\scolumnsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\srowsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\ssuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\zcolumnsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\zrowsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="sum\zsuma.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\ccolumnvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\crowvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\cvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\dcolumnvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\drowvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\dvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\scolumnvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\srowvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\svariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\zcolumnvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\zrowvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="variance\zvariancea.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\ccolumnmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\cmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\cmeanfcs.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\cmeanfsc.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\crowmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\dcolumnmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\dmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\drowmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\scolumnmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\smeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\srowmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\zcolumnmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\zmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\zmeanfdz.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\zmeanfzd.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="meanf\zrowmeanfa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="max\Makefile.am" />
+ <None Include="mean\Makefile.am" />
+ <None Include="min\Makefile.am" />
+ <None Include="prod\Makefile.am" />
+ <None Include="sum\Makefile.am" />
+ <None Include="variance\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\dynlib_statisticsfunctions.h" />
+ <ClInclude Include="includes\mean.h" />
+ <ClInclude Include="includes\prod.h" />
+ <ClInclude Include="includes\statMax.h" />
+ <ClInclude Include="includes\statMin.h" />
+ <ClInclude Include="includes\sum.h" />
+ <ClInclude Include="includes\variance.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\auxiliaryFunctions\auxiliaryFunctions.vcxproj">
+ <Project>{af4a8af2-cc9f-4991-be6e-8aaf9cb5bfc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\elementaryFunctions\elementaryFunctions.vcxproj">
+ <Project>{72b46833-b150-432d-b231-3e0ecd91e190}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\matrixOperations\matrixOperations.vcxproj">
+ <Project>{fd335544-52bf-4736-a34e-77f591d158d5}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\operations\operations.vcxproj">
+ <Project>{9b622a66-546a-4b33-b947-0a189d259d37}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj.filters
new file mode 100644
index 00000000..fe6dc17c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/statisticsFunctions.vcxproj.filters
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\max">
+ <UniqueIdentifier>{97915945-ecc0-4347-9836-9b85df72c2bb}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\mean">
+ <UniqueIdentifier>{ea434b72-a4a9-430e-adc3-b8596209f07a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\min">
+ <UniqueIdentifier>{5cf34c99-e4b3-4905-8380-36c5db366c34}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\prod">
+ <UniqueIdentifier>{2cb4b69b-5118-4f1c-b1a0-30efd61cac2f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\sum">
+ <UniqueIdentifier>{fedd49a4-6978-4994-94cd-2d6735b650f4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\variance">
+ <UniqueIdentifier>{8748e141-260a-4ec0-9659-0cd159a4b76d}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\meanf">
+ <UniqueIdentifier>{a93cd659-6a20-4db5-ac4d-0e66fb3bfa8f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="max\dcolumnmaxa.c">
+ <Filter>Source Files\max</Filter>
+ </ClCompile>
+ <ClCompile Include="max\dmaxa.c">
+ <Filter>Source Files\max</Filter>
+ </ClCompile>
+ <ClCompile Include="max\drowmaxa.c">
+ <Filter>Source Files\max</Filter>
+ </ClCompile>
+ <ClCompile Include="max\scolumnmaxa.c">
+ <Filter>Source Files\max</Filter>
+ </ClCompile>
+ <ClCompile Include="max\smaxa.c">
+ <Filter>Source Files\max</Filter>
+ </ClCompile>
+ <ClCompile Include="max\srowmaxa.c">
+ <Filter>Source Files\max</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\ccolumnmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\cmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\crowmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\dcolumnmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\dmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\drowmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\scolumnmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\smeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\srowmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\zcolumnmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\zmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="mean\zrowmeana.c">
+ <Filter>Source Files\mean</Filter>
+ </ClCompile>
+ <ClCompile Include="min\dcolumnmina.c">
+ <Filter>Source Files\min</Filter>
+ </ClCompile>
+ <ClCompile Include="min\dmina.c">
+ <Filter>Source Files\min</Filter>
+ </ClCompile>
+ <ClCompile Include="min\drowmina.c">
+ <Filter>Source Files\min</Filter>
+ </ClCompile>
+ <ClCompile Include="min\scolumnmina.c">
+ <Filter>Source Files\min</Filter>
+ </ClCompile>
+ <ClCompile Include="min\smina.c">
+ <Filter>Source Files\min</Filter>
+ </ClCompile>
+ <ClCompile Include="min\srowmina.c">
+ <Filter>Source Files\min</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\ccolumnproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\cproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\crowproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\dcolumnproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\dproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\drowproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\scolumnproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\sproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\srowproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\zcolumnproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\zproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="prod\zrowproda.c">
+ <Filter>Source Files\prod</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\ccolumnsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\crowsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\csuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\dcolumnsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\drowsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\dsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\scolumnsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\srowsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\ssuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\zcolumnsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\zrowsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="sum\zsuma.c">
+ <Filter>Source Files\sum</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\ccolumnvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\crowvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\cvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\dcolumnvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\drowvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\dvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\scolumnvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\srowvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\svariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\zcolumnvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\zrowvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="variance\zvariancea.c">
+ <Filter>Source Files\variance</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\ccolumnmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\cmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\cmeanfcs.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\cmeanfsc.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\crowmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\dcolumnmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\dmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\drowmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\scolumnmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\smeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\srowmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\zcolumnmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\zmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\zmeanfdz.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\zmeanfzd.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ <ClCompile Include="meanf\zrowmeanfa.c">
+ <Filter>Source Files\meanf</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="max\Makefile.am">
+ <Filter>Source Files\max</Filter>
+ </None>
+ <None Include="mean\Makefile.am">
+ <Filter>Source Files\mean</Filter>
+ </None>
+ <None Include="min\Makefile.am">
+ <Filter>Source Files\min</Filter>
+ </None>
+ <None Include="prod\Makefile.am">
+ <Filter>Source Files\prod</Filter>
+ </None>
+ <None Include="sum\Makefile.am">
+ <Filter>Source Files\sum</Filter>
+ </None>
+ <None Include="variance\Makefile.am">
+ <Filter>Source Files\variance</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\dynlib_statisticsfunctions.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\mean.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\prod.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\statMax.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\statMin.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\sum.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\variance.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/Makefile.am b/2.3-1/src/c/statisticsFunctions/stdevf/Makefile.am
new file mode 100644
index 00000000..cebe3c93
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/Makefile.am
@@ -0,0 +1,88 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libStdevf_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libStdevf.la
+
+libStdevf_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sstdevfa.c \
+ srowstdevfa.c \
+ scolumnstdevfa.c \
+ dstdevfa.c \
+ drowstdevfa.c \
+ dcolumnstdevfa.c \
+ cstdevfa.c \
+ crowstdevfa.c \
+ ccolumnstdevfa.c \
+ zstdevfa.c \
+ zrowstdevfa.c \
+ zcolumnstdevfa.c
+
+HEAD = ../includes/stdevf.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/statisticsFunctions/stdevf/libStdevf.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatStdevf testDoubleStdevf
+
+TESTS = testFloatStdevf testDoubleStdevf
+
+#
+# -*- Stdevf Tests -*-
+#
+testFloatStdevf_SOURCES = testFloatStdevf.c
+testFloatStdevf_CFLAGS = $(check_INCLUDES)
+testFloatStdevf_LDADD = $(check_LDADD)
+
+testDoubleStdevf_SOURCES =testDoubleStdevf.c
+testDoubleStdevf_CFLAGS = $(check_INCLUDES)
+testDoubleStdevf_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/Makefile.in b/2.3-1/src/c/statisticsFunctions/stdevf/Makefile.in
new file mode 100644
index 00000000..c71bfa74
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/Makefile.in
@@ -0,0 +1,875 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatStdevf$(EXEEXT) testDoubleStdevf$(EXEEXT)
+TESTS = testFloatStdevf$(EXEEXT) testDoubleStdevf$(EXEEXT)
+subdir = src/c/statisticsFunctions/stdevf
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libStdevf_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libStdevf_la-sstdevfa.lo libStdevf_la-srowstdevfa.lo \
+ libStdevf_la-scolumnstdevfa.lo libStdevf_la-dstdevfa.lo \
+ libStdevf_la-drowstdevfa.lo libStdevf_la-dcolumnstdevfa.lo \
+ libStdevf_la-cstdevfa.lo libStdevf_la-crowstdevfa.lo \
+ libStdevf_la-ccolumnstdevfa.lo libStdevf_la-zstdevfa.lo \
+ libStdevf_la-zrowstdevfa.lo libStdevf_la-zcolumnstdevfa.lo
+am_libStdevf_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libStdevf_la_OBJECTS = $(am_libStdevf_la_OBJECTS)
+libStdevf_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libStdevf_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleStdevf_OBJECTS = \
+ testDoubleStdevf-testDoubleStdevf.$(OBJEXT)
+testDoubleStdevf_OBJECTS = $(am_testDoubleStdevf_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/statisticsFunctions/stdevf/libStdevf.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la
+testDoubleStdevf_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleStdevf_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleStdevf_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatStdevf_OBJECTS = \
+ testFloatStdevf-testFloatStdevf.$(OBJEXT)
+testFloatStdevf_OBJECTS = $(am_testFloatStdevf_OBJECTS)
+testFloatStdevf_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatStdevf_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatStdevf_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libStdevf_la_SOURCES) $(testDoubleStdevf_SOURCES) \
+ $(testFloatStdevf_SOURCES)
+DIST_SOURCES = $(libStdevf_la_SOURCES) $(testDoubleStdevf_SOURCES) \
+ $(testFloatStdevf_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libStdevf_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libStdevf.la
+libStdevf_la_SOURCES = $(HEAD) $(SRC)
+SRC = sstdevfa.c \
+ srowstdevfa.c \
+ scolumnstdevfa.c \
+ dstdevfa.c \
+ drowstdevfa.c \
+ dcolumnstdevfa.c \
+ cstdevfa.c \
+ crowstdevfa.c \
+ ccolumnstdevfa.c \
+ zstdevfa.c \
+ zrowstdevfa.c \
+ zcolumnstdevfa.c
+
+HEAD = ../includes/stdevf.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/auxiliaryFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/c/statisticsFunctions/stdevf/libStdevf.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ @LIBMATH@
+
+
+#
+# -*- Stdevf Tests -*-
+#
+testFloatStdevf_SOURCES = testFloatStdevf.c
+testFloatStdevf_CFLAGS = $(check_INCLUDES)
+testFloatStdevf_LDADD = $(check_LDADD)
+testDoubleStdevf_SOURCES = testDoubleStdevf.c
+testDoubleStdevf_CFLAGS = $(check_INCLUDES)
+testDoubleStdevf_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/stdevf/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/stdevf/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libStdevf.la: $(libStdevf_la_OBJECTS) $(libStdevf_la_DEPENDENCIES)
+ $(libStdevf_la_LINK) -rpath $(pkglibdir) $(libStdevf_la_OBJECTS) $(libStdevf_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleStdevf$(EXEEXT): $(testDoubleStdevf_OBJECTS) $(testDoubleStdevf_DEPENDENCIES)
+ @rm -f testDoubleStdevf$(EXEEXT)
+ $(testDoubleStdevf_LINK) $(testDoubleStdevf_OBJECTS) $(testDoubleStdevf_LDADD) $(LIBS)
+testFloatStdevf$(EXEEXT): $(testFloatStdevf_OBJECTS) $(testFloatStdevf_DEPENDENCIES)
+ @rm -f testFloatStdevf$(EXEEXT)
+ $(testFloatStdevf_LINK) $(testFloatStdevf_OBJECTS) $(testFloatStdevf_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-ccolumnstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-crowstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-cstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-dcolumnstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-drowstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-dstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-scolumnstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-srowstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-sstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-zcolumnstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-zrowstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libStdevf_la-zstdevfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatStdevf-testFloatStdevf.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libStdevf_la-sstdevfa.lo: sstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-sstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-sstdevfa.Tpo -c -o libStdevf_la-sstdevfa.lo `test -f 'sstdevfa.c' || echo '$(srcdir)/'`sstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-sstdevfa.Tpo $(DEPDIR)/libStdevf_la-sstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sstdevfa.c' object='libStdevf_la-sstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-sstdevfa.lo `test -f 'sstdevfa.c' || echo '$(srcdir)/'`sstdevfa.c
+
+libStdevf_la-srowstdevfa.lo: srowstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-srowstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-srowstdevfa.Tpo -c -o libStdevf_la-srowstdevfa.lo `test -f 'srowstdevfa.c' || echo '$(srcdir)/'`srowstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-srowstdevfa.Tpo $(DEPDIR)/libStdevf_la-srowstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowstdevfa.c' object='libStdevf_la-srowstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-srowstdevfa.lo `test -f 'srowstdevfa.c' || echo '$(srcdir)/'`srowstdevfa.c
+
+libStdevf_la-scolumnstdevfa.lo: scolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-scolumnstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-scolumnstdevfa.Tpo -c -o libStdevf_la-scolumnstdevfa.lo `test -f 'scolumnstdevfa.c' || echo '$(srcdir)/'`scolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-scolumnstdevfa.Tpo $(DEPDIR)/libStdevf_la-scolumnstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnstdevfa.c' object='libStdevf_la-scolumnstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-scolumnstdevfa.lo `test -f 'scolumnstdevfa.c' || echo '$(srcdir)/'`scolumnstdevfa.c
+
+libStdevf_la-dstdevfa.lo: dstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-dstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-dstdevfa.Tpo -c -o libStdevf_la-dstdevfa.lo `test -f 'dstdevfa.c' || echo '$(srcdir)/'`dstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-dstdevfa.Tpo $(DEPDIR)/libStdevf_la-dstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dstdevfa.c' object='libStdevf_la-dstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-dstdevfa.lo `test -f 'dstdevfa.c' || echo '$(srcdir)/'`dstdevfa.c
+
+libStdevf_la-drowstdevfa.lo: drowstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-drowstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-drowstdevfa.Tpo -c -o libStdevf_la-drowstdevfa.lo `test -f 'drowstdevfa.c' || echo '$(srcdir)/'`drowstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-drowstdevfa.Tpo $(DEPDIR)/libStdevf_la-drowstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowstdevfa.c' object='libStdevf_la-drowstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-drowstdevfa.lo `test -f 'drowstdevfa.c' || echo '$(srcdir)/'`drowstdevfa.c
+
+libStdevf_la-dcolumnstdevfa.lo: dcolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-dcolumnstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-dcolumnstdevfa.Tpo -c -o libStdevf_la-dcolumnstdevfa.lo `test -f 'dcolumnstdevfa.c' || echo '$(srcdir)/'`dcolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-dcolumnstdevfa.Tpo $(DEPDIR)/libStdevf_la-dcolumnstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnstdevfa.c' object='libStdevf_la-dcolumnstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-dcolumnstdevfa.lo `test -f 'dcolumnstdevfa.c' || echo '$(srcdir)/'`dcolumnstdevfa.c
+
+libStdevf_la-cstdevfa.lo: cstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-cstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-cstdevfa.Tpo -c -o libStdevf_la-cstdevfa.lo `test -f 'cstdevfa.c' || echo '$(srcdir)/'`cstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-cstdevfa.Tpo $(DEPDIR)/libStdevf_la-cstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cstdevfa.c' object='libStdevf_la-cstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-cstdevfa.lo `test -f 'cstdevfa.c' || echo '$(srcdir)/'`cstdevfa.c
+
+libStdevf_la-crowstdevfa.lo: crowstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-crowstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-crowstdevfa.Tpo -c -o libStdevf_la-crowstdevfa.lo `test -f 'crowstdevfa.c' || echo '$(srcdir)/'`crowstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-crowstdevfa.Tpo $(DEPDIR)/libStdevf_la-crowstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowstdevfa.c' object='libStdevf_la-crowstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-crowstdevfa.lo `test -f 'crowstdevfa.c' || echo '$(srcdir)/'`crowstdevfa.c
+
+libStdevf_la-ccolumnstdevfa.lo: ccolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-ccolumnstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-ccolumnstdevfa.Tpo -c -o libStdevf_la-ccolumnstdevfa.lo `test -f 'ccolumnstdevfa.c' || echo '$(srcdir)/'`ccolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-ccolumnstdevfa.Tpo $(DEPDIR)/libStdevf_la-ccolumnstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnstdevfa.c' object='libStdevf_la-ccolumnstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-ccolumnstdevfa.lo `test -f 'ccolumnstdevfa.c' || echo '$(srcdir)/'`ccolumnstdevfa.c
+
+libStdevf_la-zstdevfa.lo: zstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-zstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-zstdevfa.Tpo -c -o libStdevf_la-zstdevfa.lo `test -f 'zstdevfa.c' || echo '$(srcdir)/'`zstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-zstdevfa.Tpo $(DEPDIR)/libStdevf_la-zstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zstdevfa.c' object='libStdevf_la-zstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-zstdevfa.lo `test -f 'zstdevfa.c' || echo '$(srcdir)/'`zstdevfa.c
+
+libStdevf_la-zrowstdevfa.lo: zrowstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-zrowstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-zrowstdevfa.Tpo -c -o libStdevf_la-zrowstdevfa.lo `test -f 'zrowstdevfa.c' || echo '$(srcdir)/'`zrowstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-zrowstdevfa.Tpo $(DEPDIR)/libStdevf_la-zrowstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowstdevfa.c' object='libStdevf_la-zrowstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-zrowstdevfa.lo `test -f 'zrowstdevfa.c' || echo '$(srcdir)/'`zrowstdevfa.c
+
+libStdevf_la-zcolumnstdevfa.lo: zcolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -MT libStdevf_la-zcolumnstdevfa.lo -MD -MP -MF $(DEPDIR)/libStdevf_la-zcolumnstdevfa.Tpo -c -o libStdevf_la-zcolumnstdevfa.lo `test -f 'zcolumnstdevfa.c' || echo '$(srcdir)/'`zcolumnstdevfa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libStdevf_la-zcolumnstdevfa.Tpo $(DEPDIR)/libStdevf_la-zcolumnstdevfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnstdevfa.c' object='libStdevf_la-zcolumnstdevfa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libStdevf_la_CFLAGS) $(CFLAGS) -c -o libStdevf_la-zcolumnstdevfa.lo `test -f 'zcolumnstdevfa.c' || echo '$(srcdir)/'`zcolumnstdevfa.c
+
+testDoubleStdevf-testDoubleStdevf.o: testDoubleStdevf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleStdevf_CFLAGS) $(CFLAGS) -MT testDoubleStdevf-testDoubleStdevf.o -MD -MP -MF $(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Tpo -c -o testDoubleStdevf-testDoubleStdevf.o `test -f 'testDoubleStdevf.c' || echo '$(srcdir)/'`testDoubleStdevf.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Tpo $(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleStdevf.c' object='testDoubleStdevf-testDoubleStdevf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleStdevf_CFLAGS) $(CFLAGS) -c -o testDoubleStdevf-testDoubleStdevf.o `test -f 'testDoubleStdevf.c' || echo '$(srcdir)/'`testDoubleStdevf.c
+
+testDoubleStdevf-testDoubleStdevf.obj: testDoubleStdevf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleStdevf_CFLAGS) $(CFLAGS) -MT testDoubleStdevf-testDoubleStdevf.obj -MD -MP -MF $(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Tpo -c -o testDoubleStdevf-testDoubleStdevf.obj `if test -f 'testDoubleStdevf.c'; then $(CYGPATH_W) 'testDoubleStdevf.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleStdevf.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Tpo $(DEPDIR)/testDoubleStdevf-testDoubleStdevf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleStdevf.c' object='testDoubleStdevf-testDoubleStdevf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleStdevf_CFLAGS) $(CFLAGS) -c -o testDoubleStdevf-testDoubleStdevf.obj `if test -f 'testDoubleStdevf.c'; then $(CYGPATH_W) 'testDoubleStdevf.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleStdevf.c'; fi`
+
+testFloatStdevf-testFloatStdevf.o: testFloatStdevf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatStdevf_CFLAGS) $(CFLAGS) -MT testFloatStdevf-testFloatStdevf.o -MD -MP -MF $(DEPDIR)/testFloatStdevf-testFloatStdevf.Tpo -c -o testFloatStdevf-testFloatStdevf.o `test -f 'testFloatStdevf.c' || echo '$(srcdir)/'`testFloatStdevf.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatStdevf-testFloatStdevf.Tpo $(DEPDIR)/testFloatStdevf-testFloatStdevf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatStdevf.c' object='testFloatStdevf-testFloatStdevf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatStdevf_CFLAGS) $(CFLAGS) -c -o testFloatStdevf-testFloatStdevf.o `test -f 'testFloatStdevf.c' || echo '$(srcdir)/'`testFloatStdevf.c
+
+testFloatStdevf-testFloatStdevf.obj: testFloatStdevf.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatStdevf_CFLAGS) $(CFLAGS) -MT testFloatStdevf-testFloatStdevf.obj -MD -MP -MF $(DEPDIR)/testFloatStdevf-testFloatStdevf.Tpo -c -o testFloatStdevf-testFloatStdevf.obj `if test -f 'testFloatStdevf.c'; then $(CYGPATH_W) 'testFloatStdevf.c'; else $(CYGPATH_W) '$(srcdir)/testFloatStdevf.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatStdevf-testFloatStdevf.Tpo $(DEPDIR)/testFloatStdevf-testFloatStdevf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatStdevf.c' object='testFloatStdevf-testFloatStdevf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatStdevf_CFLAGS) $(CFLAGS) -c -o testFloatStdevf-testFloatStdevf.obj `if test -f 'testFloatStdevf.c'; then $(CYGPATH_W) 'testFloatStdevf.c'; else $(CYGPATH_W) '$(srcdir)/testFloatStdevf.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/ccolumnstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/ccolumnstdevfa.c
new file mode 100644
index 00000000..14d30301
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/ccolumnstdevfa.c
@@ -0,0 +1,58 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "abs.h"
+
+void ccolumnstdevfa(floatComplex *in1, int lines, int columns, floatComplex*in2, floatComplex* out){
+ int i = 0;
+ int j = 0;
+ floatComplex temp = FloatComplex(0.0f,0.0f);
+ floatComplex accumulate = FloatComplex(0.0f,0.0f);
+ floatComplex accumulateFre = FloatComplex(0.0f,0.0f);
+
+ ccolumnmeanfa(in1, lines, columns, in2, out );
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < lines; ++j)
+ {
+ accumulate = FloatComplex(0.0f,0.0f);
+ accumulateFre = FloatComplex(0.0f,0.0f);
+ temp = FloatComplex(0.0f,0.0f);
+
+ for ( i = 0 ; i < columns; ++i )
+ {
+
+ temp = cpows ( cdiffs (in1[lines*i + j] ,out[j] ) ,FloatComplex (2.0f, 0.0f ) );
+ temp = cmuls( in2[lines*i + j] , temp);
+
+ accumulate = cadds( temp , accumulate);
+ accumulateFre = cadds (in2[lines*i + j] ,accumulateFre );
+
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = cmuls (FloatComplex(0.0f,0.0f) , accumulate ) ;
+ }
+ else
+ {
+ if( sabss (creals(accumulate)) <= 3e-6 ) accumulate = FloatComplex(sabss(creals(accumulate)) ,cimags(accumulate));
+ if( sabss (cimags(accumulate)) <= 3e-6 ) accumulate = FloatComplex(creals(accumulate) ,sabss(cimags(accumulate)));
+ accumulate = crdivs (accumulate , cdiffs (accumulateFre ,FloatComplex(1.0f,0.0f)) );
+ out[j] =csqrts(accumulate);
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/crowstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/crowstdevfa.c
new file mode 100644
index 00000000..38d8cb23
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/crowstdevfa.c
@@ -0,0 +1,59 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "meanf.h"
+#include "abs.h"
+
+
+void crowstdevfa(floatComplex *in1, int lines, int columns, floatComplex*in2, floatComplex* out){
+ int i = 0;
+ int j = 0;
+ floatComplex temp = FloatComplex(0.0f,0.0f);
+ floatComplex accumulate = FloatComplex(0.0f,0.0f);
+ floatComplex accumulateFre = FloatComplex(0.0f,0.0f);
+
+ crowmeanfa(in1, lines, columns, in2, out );
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ accumulate = FloatComplex(0.0f,0.0f);
+ accumulateFre =FloatComplex(0.0f,0.0f);
+ temp = FloatComplex(0.0f,0.0f);
+
+ for ( i = 0 ; i < lines; ++i )
+ {
+
+ temp = cpows ( cdiffs (in1[lines*j + i] ,out[j] ) ,FloatComplex (2.0f, 0.0f ) );
+ temp = cmuls( in2[lines*j + i] , temp);
+
+ accumulate = cadds( temp , accumulate);
+ accumulateFre = cadds (in2[lines*j + i] ,accumulateFre );
+
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = cmuls (FloatComplex(0.0f,0.0f) , accumulate ) ;
+ }
+ else
+ {
+ if( sabss (creals(accumulate)) <= 3e-6 ) accumulate = FloatComplex(sabss(creals(accumulate)) ,cimags(accumulate));
+ if( sabss (cimags(accumulate)) <= 3e-6 ) accumulate = FloatComplex(creals(accumulate) ,sabss(cimags(accumulate)));
+ accumulate = crdivs (accumulate , cdiffs (accumulateFre ,FloatComplex(1.0f,0.0f)) );
+ out[j] =csqrts(accumulate);
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfa.c
new file mode 100644
index 00000000..5b1631f1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfa.c
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+floatComplex cstdevfa(floatComplex *in1, int lines, int columns, floatComplex* in2)
+{
+ int i = 0 ;
+
+ floatComplex temp = FloatComplex(0.0f,0.0f);
+ floatComplex accumulate = FloatComplex(0.0f,0.0f);
+ floatComplex accumulateFre = FloatComplex(0.0f,0.0f);
+ floatComplex meanf = cmeanfa (in1 , lines*columns , in2);
+/*equivalent to (in1 - meanf(x , in2 )).^2 .*in2 */
+ for(i = 0 ; i < lines*columns ; ++i)
+ {
+ temp = cpows ( cdiffs (in1[i] , meanf ) ,FloatComplex (2.0f, 0.0f ) );
+ temp = cmuls( in2[i] , temp);
+
+ accumulate = cadds( temp , accumulate);
+ accumulateFre = cadds (in2[i] ,accumulateFre );
+
+ }
+
+ if (lines <= 1)
+ {
+ return cmuls (FloatComplex(0.0f,0.0f) , accumulate ) ;
+ }
+ else
+ {
+ accumulate = crdivs (accumulate , cdiffs (accumulateFre ,FloatComplex(1.0f,0.0f)) );
+ return csqrts(accumulate);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfcs.c b/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfcs.c
new file mode 100644
index 00000000..a3b7239f
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfcs.c
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+floatComplex cstdevfcs(floatComplex *in1, int lines, int columns, float* in2)
+{
+ int i = 0 ;
+ floatComplex temp = FloatComplex(0.0f,0.0f);
+ floatComplex accumulate = FloatComplex(0.0f,0.0f);
+ float accumulateFre = 0.0f ;
+ floatComplex meanf = cmeanfcs (in1 , lines ,columns , in2);
+/*equivalent to (in1 - meanf(x , in2 )).^2 .*in2 */
+ for(i = 0 ; i < lines*columns ; ++i)
+ {
+ temp = cpows ( cdiffs (in1[i] , meanf ) ,FloatComplex (2.0f, 0.0f ) );
+ temp = cmuls( FloatComplex (in2[i],0.0f) , temp);
+
+ accumulate = cadds( temp , accumulate);
+ accumulateFre += in2[i];
+ }
+
+ if (lines <= 1)
+ {
+ return cmuls (FloatComplex(0.0f,0.0f) , accumulate ) ;
+ }
+ else
+ {
+ accumulate = FloatComplex( creals(accumulate ) / (accumulateFre - 1) , cimags(accumulate) / (accumulateFre - 1));
+ return csqrts(accumulate);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfsc.c b/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfsc.c
new file mode 100644
index 00000000..01a6e079
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/cstdevfsc.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "stdevf.h"
+#include "zeros.h"
+
+floatComplex cstdevfsc(float *in1, int lines, int columns, floatComplex* in2)
+{
+ float* ZEROS = (float *) malloc((unsigned int)(lines*columns*sizeof(float)));
+ szerosa(ZEROS,lines,columns);
+
+ return cstdevfa(FloatComplexMatrix(in1,ZEROS,lines*columns), lines , columns , in2);
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/dcolumnstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/dcolumnstdevfa.c
new file mode 100644
index 00000000..a6220d57
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/dcolumnstdevfa.c
@@ -0,0 +1,69 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "meanf.h"
+
+
+void dcolumnstdevfa(double *in1, int lines, int columns, double *in2, double* out){
+ int i = 0;
+ int j = 0;
+ double temp = 0.0;
+ double accumulate = 0.0;
+ double accumulateFre = 0.0 ;
+
+ dcolumnmeanfa(in1, lines, columns, in2, out );
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < lines; ++j)
+ {
+ accumulate = 0.0;
+ accumulateFre= 0.0;
+ temp = 0.0;
+
+ for ( i = 0 ; i < columns; ++i )
+ {
+ temp = dpows ( (in1[lines*i + j] - out[j] ) ,2 );
+ temp *= in2[lines*i + j];
+
+ accumulate += temp ;
+ accumulateFre += in2[lines*i + j];
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = 0.0 * accumulate ;
+ }
+ else
+ {
+ out[j] = dsqrts(accumulate / (accumulateFre - 1));
+ }
+ }
+
+}
+/*
+
+ !
+! elseif o == 'c' | o == 2 then !
+! // here ones is used becaue we work on matrix , but in C we work on element so we only need iteratation !
+! y = x - meanf(x, fre, o) * ones(1, size(x, o)) !
+! !
+
+! if size(x, 1) == 1 then ! !
+! s = 0 * sum(y.^2 .* fre, o) !
+! else ! !
+! s = sqrt(sum(y.^2 .* fre, o) ./ (sum(fre, o) - 1)); !
+ !
+*/
+
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/drowstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/drowstdevfa.c
new file mode 100644
index 00000000..c861f06b
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/drowstdevfa.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+
+void drowstdevfa(double *in1, int lines, int columns, double *in2, double* out){
+ int i = 0;
+ int j = 0;
+ double temp = 0.0f;
+ double accumulate = 0.0f;
+ double accumulateFre = 0.0f ;
+
+ drowmeanfa(in1, lines, columns, in2, out );
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ accumulate = 0.0f;
+ accumulateFre= 0.0f;
+ temp = 0.0f;
+
+ for ( i = 0 ; i < lines; ++i )
+ {
+ temp = dpows ( (in1[lines*j + i] - out[j] ) ,2 );
+ temp *= in2[lines*j + i];
+
+ accumulate += temp ;
+ accumulateFre += in2[lines*j + i];
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = 0.0 * accumulate ;
+ }
+ else
+ {
+ out[j] = dsqrts(accumulate / (accumulateFre - 1));
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/dstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/dstdevfa.c
new file mode 100644
index 00000000..4194435c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/dstdevfa.c
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+double dstdevfa(double *in1, int lines, int columns, double* in2)
+{
+ int i = 0 ;
+ double meanf = dmeanfa (in1 , lines*columns , in2);
+ double temp = 0.0;
+ double accumulate = 0.0 ;
+ double accumulateFre = 0.0 ;
+ /*printf ("\nmeanf %lf \n" ,meanf);*/
+
+ /*equivalent to (in1 - meanf(x , in2 )).^2 .*in2 */
+ for(i = 0 ; i < lines*columns; ++i)
+ {
+
+ temp = dpows ( (in1[i] - meanf ) ,2 );
+ temp *= in2[i];
+
+ accumulate += temp ;
+ accumulateFre += in2[i];
+ }
+
+ if (lines <= 1)
+ {
+ return 0.0 * accumulate ;
+ }
+ else
+ {
+ return dsqrts(accumulate) / (accumulateFre - 1);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/scolumnstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/scolumnstdevfa.c
new file mode 100644
index 00000000..f3552ea7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/scolumnstdevfa.c
@@ -0,0 +1,69 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "meanf.h"
+
+
+void scolumnstdevfa(float *in1, int lines, int columns, float *in2, float* out){
+ int i = 0;
+ int j = 0;
+ float temp = 0.0f;
+ float accumulate = 0.0f;
+ float accumulateFre = 0.0f ;
+
+ scolumnmeanfa(in1, lines, columns, in2, out );
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < lines; ++j)
+ {
+ accumulate = 0.0f;
+ accumulateFre= 0.0f;
+ temp = 0.0f;
+
+ for ( i = 0 ; i < columns; ++i )
+ {
+ temp = spows ( (in1[lines*i + j] - out[j] ) ,2 );
+ temp *= in2[lines*i + j];
+
+ accumulate += temp ;
+ accumulateFre += in2[lines*i + j];
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = 0.0f * accumulate ;
+ }
+ else
+ {
+ out[j] = ssqrts(accumulate / (accumulateFre - 1));
+ }
+ }
+
+}
+/*
+
+ !
+! elseif o == 'c' | o == 2 then !
+! // here ones is used becaue we work on matrix , but in C we work on element so we only need iteratation !
+! y = x - meanf(x, fre, o) * ones(1, size(x, o)) !
+! !
+
+! if size(x, 1) == 1 then ! !
+! s = 0 * sum(y.^2 .* fre, o) !
+! else ! !
+! s = sqrt(sum(y.^2 .* fre, o) ./ (sum(fre, o) - 1)); !
+ !
+*/
+
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/srowstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/srowstdevfa.c
new file mode 100644
index 00000000..337b80e3
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/srowstdevfa.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "meanf.h"
+
+
+void srowstdevfa(float *in1, int lines, int columns, float *in2, float* out){
+ int i = 0;
+ int j = 0;
+ float temp = 0.0f;
+ float accumulate = 0.0f;
+ float accumulateFre = 0.0f ;
+
+ srowmeanfa(in1, lines, columns, in2, out );
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+ accumulate = 0.0f;
+ accumulateFre= 0.0f;
+ temp = 0.0f;
+
+ for ( i = 0 ; i < lines; ++i )
+ {
+ temp = spows ( (in1[lines*j + i] - out[j] ) ,2 );
+ temp *= in2[lines*j + i];
+
+ accumulate += temp ;
+ accumulateFre += in2[lines*j + i];
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = 0.0f * accumulate ;
+ }
+ else
+ {
+ out[j] = ssqrts(accumulate/ (accumulateFre - 1));
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/sstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/sstdevfa.c
new file mode 100644
index 00000000..5ccdab84
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/sstdevfa.c
@@ -0,0 +1,68 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+float sstdevfa(float *in1, int lines, int columns, float* in2)
+{
+ int i = 0 ;
+ float meanf = smeanfa (in1 , lines*columns , in2);
+ float temp = 0.0f;
+ float accumulate = 0.0f ;
+ float accumulateFre = 0.0f ;
+
+
+ /*equivalent to (in1 - meanf(x , in2 )).^2 .*in2 */
+ for(i = 0 ; i < lines*columns; ++i)
+ {
+
+ temp = spows ( (in1[i] - meanf ) ,2 );
+ temp *= in2[i];
+
+ accumulate += temp ;
+ accumulateFre += in2[i];
+ }
+
+ if (lines <= 1)
+ {
+ return 0.0f * accumulate ;
+ }
+ else
+ {
+ return ssqrts( accumulate/(accumulateFre - 1) );
+ }
+}
+/*
+
+! o = '*' !
+
+! //remove the median !
+! !
+! if o == '*' then !
+! !
+! y = x - meanf(x, fre) !
+! !
+! elseif o == 'r' | o == 1 then !
+! !
+! y = x - ones(size(x, o), 1) * meanf(x, fre, o) !
+! !
+! elseif o == 'c' | o == 2 then !
+! !
+! y = x - meanf(x, fre, o) * ones(1, size(x, o)) !
+! !
+
+! if size(x, 1) == 1 then ! !
+! s = 0 * sum(y.^2 .* fre, o) !
+! else ! !
+! s = sqrt( sum(y.^2 .* fre, o) ./ (sum(fre, o) - 1) ); !
+ !
+*/
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c b/2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c
new file mode 100644
index 00000000..3b0b61ae
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c
@@ -0,0 +1,509 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "stdevf.h"
+
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int dstdevfsTest(void) {
+ double value1 = 3.0;
+ double value2 = 1.123456789f;
+ double coef1 = 56.0 ;
+ double coef2 = 2.0 ;
+
+ printf("\n>>>> stdevf Double Scalar Test\n");
+ printf("result : %e " ,dstdevfs(value1,coef1)) ;
+ printf("result : %e " ,dstdevfs(value2,coef)) ;
+ assert( ( dstdevfs(value1,coef1) ) == 0.0 );
+ assert( ( dstdevfs(value2,coef2) ) == 0.0 );
+
+ value1 = 3.0;
+ value2 = 1.123456789f;
+ coef1 = 56.0 ;
+ coef2 = 2.0 ;
+
+
+ return 0;
+}
+
+static int dstdevfaTest(void) {
+ double table1[3] = {3.0, 6.0, 9.0};
+ double coef1[3] = {10.0, 2.0, 6.0};
+
+ double table2[5] = {3.186784563,
+ 4.186784563,
+ 5.186784563,
+ 6.186784563,
+ 7.186784563};
+
+ double coef2[5] = {3.0,
+ 4.0,
+ 5.0,
+ 6.0,
+ 7.0};
+
+ double table3[10] = {3.0, 6.0, 9.0,10.0, 5.0,
+ 6.0,18.0, 7.0,14.0, 2.0};
+ double coef3 [10] = {3.0, 8.0,14.0,13.0, 2.0,
+ 5.0, 8.0, 2.0, 6.0, 8.0};
+
+ double result_2_5 = dstdevfa(table3,2, 5, coef3);
+
+ printf("\n>>>> stdevf Double Array Test\n");
+ printf("\nresult : %e " ,dstdevfa(table1,1, 3, coef1)) ;
+ printf("\nresult : %e " ,dstdevfa(table2,1, 5, coef2)) ;
+ printf("\nresult : %e " ,result_2_5) ;
+
+ assert(dstdevfa(table1,1, 3, coef1) == 0.0);
+ assert(dstdevfa(table1,1, 3, coef1) == 0.0);
+ assert( ( fabs(result_2_5 ) - ( 4.6440201 ) ) / fabs ( result_2_5 ) < 1e-6 );
+ return 0;
+}
+
+
+static int dcolumnstdevfaTest(void) {
+
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+
+ double columnStdevfedTable1_3_3[3] = {0};
+ double columnStdevfedTable1_1_9[1] = {0};
+
+
+ printf("\n>>>> Column stdevf Double Array Test\n");
+
+/**/
+
+ dcolumnstdevfa(table1, 3, 3, coef1 ,columnStdevfedTable1_3_3);
+
+ printf("\nresult1 : %e " ,columnStdevfedTable1_3_3[0]) ;
+ printf("\nresult2 : %e " ,columnStdevfedTable1_3_3[1]) ;
+ printf("\nresult3 : %e " ,columnStdevfedTable1_3_3[2]) ;
+
+ assert( fabs(columnStdevfedTable1_3_3[0] - 0.8268689) / fabs ( columnStdevfedTable1_3_3[0] ) < 1e-6 );
+ assert( fabs(columnStdevfedTable1_3_3[1] - 0.8164966) / fabs ( columnStdevfedTable1_3_3[1] ) < 1e-6 );
+ assert( fabs(columnStdevfedTable1_3_3[2] - 0.8323524 ) / fabs ( columnStdevfedTable1_3_3[2] ) < 1e-6 );
+
+
+
+ dcolumnstdevfa(table1, 1, 9, coef1 ,columnStdevfedTable1_1_9);
+ printf("\nresult_1_9: %e\n " ,columnStdevfedTable1_1_9[0]) ;
+ assert( columnStdevfedTable1_1_9[0] == 0.0);
+
+
+ return 0;
+}
+
+
+static int drowstdevfaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+
+ double table2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double coef2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+
+
+
+ double rowStdevfedTable1_3_3[3] = {0};
+ double rowStdevfedTable1_1_9[9] = {0};
+ double rowStdevfedTable2_2_5[5] = {0};
+ printf("\n>>>> Row Mean Double Array Test\n");
+
+
+ drowstdevfa(table1, 3, 3, coef1 , rowStdevfedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowStdevfedTable1_3_3[%d] = %e\n", i, rowStdevfedTable1_3_3[i]);
+ }
+ assert( fabs(rowStdevfedTable1_3_3[0] - 2.8394542 ) / fabs ( rowStdevfedTable1_3_3[0] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable1_3_3[1] - 2.8003759) / fabs ( rowStdevfedTable1_3_3[1] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable1_3_3[2] - 2.7669196) / fabs ( rowStdevfedTable1_3_3[2] ) < 1e-6 );
+
+/**/
+ drowstdevfa(table1, 1, 9, coef1, rowStdevfedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowStdevfedTable1_1_9[%d] = %e\n", i, rowStdevfedTable1_1_9[i]);
+ assert(rowStdevfedTable1_1_9[i] == 0.0);
+ }
+
+
+/**/
+ /**/
+ drowstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5);
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowStdevfedTable_2_5[%d] = %e \n", i, rowStdevfedTable2_2_5[i]);
+ }
+ assert( fabs(rowStdevfedTable2_2_5[0] - 0.9045340 ) / fabs ( rowStdevfedTable2_2_5[0] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[1] - 2.3935678 ) / fabs ( rowStdevfedTable2_2_5[1] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[2] - 1.3887301 ) / fabs ( rowStdevfedTable2_2_5[2] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[3] - 1.2421180 ) / fabs ( rowStdevfedTable2_2_5[3] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[4] - 0.4523443 ) / fabs ( rowStdevfedTable2_2_5[4] ) < 1e-6 );
+ return 0;
+}
+
+
+static int zstdevfsTest(void) {
+ doubleComplex value1;
+ doubleComplex coef1 ;
+ doubleComplex value2;
+ doubleComplex coef2 ;
+
+ value1 = DoubleComplex(3.0, 3.0);
+ coef1 = DoubleComplex(3.0, 0.0);
+ value2 = DoubleComplex(1.123456789f, 1.123456789f);
+ coef2 = DoubleComplex(9.0, 0.0);
+
+ printf("\n>>>> Mean Double Complex Scalar Test\n");
+ assert( zreals(zstdevfs(value1,coef1)) == 0.0 );
+ assert( zimags(zstdevfs(value1,coef1)) == 0.0 );
+ assert( zreals(zstdevfs(value2,coef2)) == 0.0 );
+ assert( zimags(zstdevfs(value2,coef2)) == 0.0 );
+
+ return 0;
+}
+
+
+
+static int zstdevfaTest(void) {
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+
+ double tableR2[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI2[9] = {0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+ double coefR2[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+ double coefI2[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+
+
+ double tableR3[10] = {3.0, 6.0, 9.0,10.0, 5.0,
+ 6.0,18.0, 7.0,14.0, 2.0};
+ double tableI3[10] = {3.0,12.0,25.0, 1.0, 2.0,
+ 5.0,18.0, 7.0, 4.0, 1.0};
+
+
+ double coefR3 [10] = {3.0, 8.0,14.0,13.0, 2.0,
+ 5.0, 8.0, 2.0, 6.0, 8.0};
+ double coefI3 [10] = {0.0, 0.0, 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, 0.0, 0.0};
+
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 9);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 9);
+
+ doubleComplex* table3 = DoubleComplexMatrix (tableR3, tableI3, 10);
+ doubleComplex* coef3 = DoubleComplexMatrix (coefR3, coefI3, 10);
+
+ doubleComplex result =DoubleComplex(0.0 , 0.0);
+
+ printf("\n>>>> Mean Double Complex Array Test\n");
+ result = zstdevfa(table1,1, 9, coef1);
+ printf("\nresult_1_9 : %e \t+ %e i " ,zreals(result) ,zimags(result)) ;
+ assert( zreals(result) == 0.0 );
+ assert( zimags(result) == 0.0 );
+
+ result = zstdevfa(table2,1, 9, coef2);
+ printf("\nresult2_1_9 : %e \t+ %e i " ,zreals(result) ,zimags(result)) ;
+ assert( zreals(result) == 0.0 );
+ assert( zimags(result) == 0.0 );
+
+
+ result = zstdevfa(table3,2, 5, coef3);
+ printf("\nresult_2_5 : %e \t+ %e i " ,zreals(result) ,zimags(result)) ;
+ assert( fabs(zreals(result) - 1.7749350 ) / fabs ( zimags(result) ) < 1e-6 );
+ assert( fabs(zimags(result) - 8.3811287) / fabs ( zreals(result) ) < 1e-6 );
+
+ return 0;
+}
+
+
+static int zrowstdevfaTest(void) {
+
+ int i = 0 ;
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0};
+ double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+ double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 10);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 10);
+
+ doubleComplex rowStdevfedTable1_3_3[3];
+ doubleComplex rowStdevfedTable2_2_5[5];
+ /*test when the matrix is only imaginary*/
+ double tableR3[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+ double tableI3[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0};
+ double coefR3[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+ double coefI3[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+
+
+ doubleComplex* table3 = DoubleComplexMatrix (tableR3, tableI3, 10);
+ doubleComplex* coef3 = DoubleComplexMatrix (coefR3, coefI3, 10);
+
+ doubleComplex rowStdevfedTable3_2_5[5];
+ /**/
+ /*test when the matrix is only real and the coef matrix is only imaginary*/
+ double tableR4[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI4[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0};
+ double coefR4[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0};
+ double coefI4[10] ={10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+
+
+
+
+ doubleComplex* table4 = DoubleComplexMatrix (tableR4, tableI4, 10);
+ doubleComplex* coef4 = DoubleComplexMatrix (coefR4, coefI4, 10);
+
+ doubleComplex rowStdevfedTable4_2_5[5];
+ /**/
+
+
+ printf("\n>>>> Row stdevf Double Complex Array Test\n");
+
+ rowStdevfedTable1_3_3[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable1_3_3[1] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable1_3_3[2] = DoubleComplex(0.0, 0.0);
+
+ rowStdevfedTable2_2_5[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable2_2_5[1] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable2_2_5[2] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable2_2_5[3] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable2_2_5[4] = DoubleComplex(0.0, 0.0);
+
+ rowStdevfedTable3_2_5[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable3_2_5[1] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable3_2_5[2] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable3_2_5[3] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable3_2_5[4] = DoubleComplex(0.0, 0.0);
+
+
+ rowStdevfedTable4_2_5[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable4_2_5[1] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable4_2_5[2] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable4_2_5[3] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable4_2_5[4] = DoubleComplex(0.0, 0.0);
+
+
+ zrowstdevfa(table1 , 3 , 3 , coef1 , rowStdevfedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("rowStdevfedTable_3_3[%d] = %e + %ei\n", i, zreals(rowStdevfedTable1_3_3[i]), zimags(rowStdevfedTable1_3_3[i]));
+ }
+ assert( fabs(zreals(rowStdevfedTable1_3_3[0]) - 2.8394542 ) / fabs ( zreals(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable1_3_3[0]) - 0.9464847) / fabs ( zimags(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable1_3_3[1]) - 2.8003759) / fabs ( zreals(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable1_3_3[1]) - 0.9334586) / fabs ( zimags(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable1_3_3[2]) - 2.7669196) / fabs ( zreals(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable1_3_3[2]) - 0.9223065) / fabs ( zimags(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+/**/
+ zrowstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5);
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowStdevfedTable_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable2_2_5[i]), zimags(rowStdevfedTable2_2_5[i]));
+ }
+ assert( fabs(zreals(rowStdevfedTable2_2_5[0]) - 0.9045340 ) / fabs ( zreals(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[0]) - 0.3015113 ) / fabs ( zimags(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable2_2_5[1]) - 2.3935678 ) / fabs ( zreals(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[1]) + 0.4787136) / fabs ( zimags(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable2_2_5[2]) - 1.3887301 ) / fabs ( zreals(rowStdevfedTable2_2_5[2]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[2]) - 0.4629100 ) / fabs ( zimags(rowStdevfedTable2_2_5[2]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable2_2_5[3]) - 1.2421180 ) / fabs ( zreals(rowStdevfedTable2_2_5[3]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[3]) - 0.4140393 ) / fabs ( zimags(rowStdevfedTable2_2_5[3]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable2_2_5[4]) - 0.4523443 ) / fabs ( zreals(rowStdevfedTable2_2_5[4]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[4]) - 2.7140659) / fabs ( zimags(rowStdevfedTable2_2_5[4]) ) < 1e-6 );
+/**/
+ zrowstdevfa(table3, 2 , 5 , coef3 , rowStdevfedTable3_2_5);
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowStdevfedTable3_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable3_2_5[i]), zimags(rowStdevfedTable3_2_5[i]));
+ }
+
+ assert( fabs(zimags(rowStdevfedTable3_2_5[0]) - 0.3015113 ) / fabs (zimags(rowStdevfedTable3_2_5[0]) ) < 1e-6 );
+
+
+ assert( fabs(zimags(rowStdevfedTable3_2_5[1]) - 0.4787136) / fabs ( zimags(rowStdevfedTable3_2_5[1]) ) < 1e-6 );
+
+
+ assert( fabs(zimags(rowStdevfedTable3_2_5[2]) - 0.4629100 ) / fabs (zimags(rowStdevfedTable3_2_5[2]) ) < 1e-6 );
+
+
+ assert( fabs(zimags(rowStdevfedTable3_2_5[3]) - 0.4140393 ) / fabs ( zimags(rowStdevfedTable3_2_5[3]) ) < 1e-6 );
+
+
+ assert( fabs(zimags(rowStdevfedTable3_2_5[4]) - 2.7140659) / fabs ( zimags(rowStdevfedTable3_2_5[4]) ) < 1e-6 );
+
+/**/
+ zrowstdevfa(table4 , 2 , 5 , coef4 , rowStdevfedTable4_2_5);
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowStdevfedTable4_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable4_2_5[i]), zimags(rowStdevfedTable4_2_5[i]));
+ }
+ assert( fabs(zreals(rowStdevfedTable4_2_5[0]) - 0.8597825 ) / fabs ( zreals(rowStdevfedTable4_2_5[0]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable4_2_5[0]) + 0.0390006 ) / fabs ( zimags(rowStdevfedTable4_2_5[0]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable4_2_5[1]) - 2.3141768 ) / fabs ( zreals(rowStdevfedTable4_2_5[1]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable4_2_5[1]) + 0.0722475) / fabs ( zimags(rowStdevfedTable4_2_5[1]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable4_2_5[2]) - 1.2915122 ) / fabs ( zreals(rowStdevfedTable4_2_5[2]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable4_2_5[2]) + 0.0804066 ) / fabs ( zimags(rowStdevfedTable4_2_5[2]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable4_2_5[3]) - 1.1980065 ) / fabs ( zreals(rowStdevfedTable4_2_5[3]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable4_2_5[3]) + 0.0398893 ) / fabs ( zimags(rowStdevfedTable4_2_5[3]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable4_2_5[4]) - 0.4433143 ) / fabs ( zreals(rowStdevfedTable4_2_5[4]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable4_2_5[4]) + 0.00852212) / fabs ( zimags(rowStdevfedTable4_2_5[4]) ) < 1e-6 );
+
+ return 0;
+}
+
+
+
+
+static int zcolumnstdevfaTest(void) {
+
+ int i = 0 ;
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0};
+ double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+ double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ double tableR3[6] = {4.0, 5.0, 6.0, 7.0, 8.0, 9.0 };
+ double tableI3[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+
+ double coefR3[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+ double coefI3[6] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 10);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 10);
+
+ doubleComplex* table3 = DoubleComplexMatrix (tableR3, tableI3, 10);
+ doubleComplex* coef3 = DoubleComplexMatrix (coefR3, coefI3, 10);
+
+ doubleComplex rowStdevfedTable1_3_3[3];
+ doubleComplex rowStdevfedTable2_2_5[2];
+ doubleComplex rowStdevfedTable3_3_2[3];
+
+ rowStdevfedTable1_3_3[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable1_3_3[1] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable1_3_3[2] = DoubleComplex(0.0, 0.0);
+
+ rowStdevfedTable2_2_5[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable2_2_5[1] = DoubleComplex(0.0, 0.0);
+
+ rowStdevfedTable3_3_2[0] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable3_3_2[1] = DoubleComplex(0.0, 0.0);
+ rowStdevfedTable3_3_2[2] = DoubleComplex(0.0, 0.0);
+
+
+ printf("\n>>>> Column stdevf Double Complex Array Test\n");
+
+
+
+ zcolumnstdevfa(table1 , 3 , 3 , coef1 , rowStdevfedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnStdevfedTable_3_3[%d] = %e + %ei\n", i, zreals(rowStdevfedTable1_3_3[i]), zimags(rowStdevfedTable1_3_3[i]));
+ }
+ assert( fabs(zreals(rowStdevfedTable1_3_3[0]) - 0.8268689) / fabs ( zimags(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable1_3_3[0]) - 2.4806066) / fabs ( zreals(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable1_3_3[1]) - 0.8164966) / fabs ( zimags(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable1_3_3[1]) - 2.4494897) / fabs ( zreals(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable1_3_3[2]) - 0.8323524 ) / fabs ( zimags(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable1_3_3[2]) - 2.4970571 ) / fabs ( zreals(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+/**/
+ zcolumnstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5);
+ for (i = 0 ; i < 2 ; ++i )
+ {
+ printf("columnStdevfedTable_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable2_2_5[i]), zimags(rowStdevfedTable2_2_5[i]));
+ }
+ assert( fabs(zreals(rowStdevfedTable2_2_5[0]) - 2.3683811 ) / fabs ( zimags(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[0]) - 2.4784193 ) / fabs ( zreals(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable2_2_5[1]) - 3.1890422 ) / fabs ( zimags(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable2_2_5[1]) - 4.9966774 ) / fabs ( zreals(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+
+ zcolumnstdevfa(table3 , 3 , 2 , coef3 , rowStdevfedTable3_3_2);
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnStdevfedTable3_3_2[%d] = %e + %ei\n", i, zreals(rowStdevfedTable3_3_2[i]), zimags(rowStdevfedTable3_3_2[i]));
+ }
+ assert( fabs(zreals(rowStdevfedTable3_3_2[0]) - 1.1825083) / fabs ( zimags(rowStdevfedTable3_3_2[0]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable3_3_2[0]) + 0.1170914) / fabs ( zreals(rowStdevfedTable3_3_2[0]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable3_3_2[1]) - 1.3450417) / fabs ( zimags(rowStdevfedTable3_3_2[1]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable3_3_2[1]) + 0.0955892) / fabs ( zreals(rowStdevfedTable3_3_2[1]) ) < 1e-6 );
+
+ assert( fabs(zreals(rowStdevfedTable3_3_2[2]) - 1.4077246 ) / fabs ( zimags(rowStdevfedTable3_3_2[2]) ) < 1e-6 );
+ assert( fabs(zimags(rowStdevfedTable3_3_2[2]) + 0.0779670 ) / fabs ( zreals(rowStdevfedTable3_3_2[2]) ) < 1e-6 );
+ return 0;
+}
+
+
+static int teststdevf(void) {
+
+ dstdevfsTest();
+ dstdevfaTest();
+ dcolumnstdevfaTest();
+ drowstdevfaTest();
+ zstdevfsTest();
+ zstdevfaTest();
+ zrowstdevfaTest();
+ zcolumnstdevfaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(teststdevf() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/testFloatStdevf.c b/2.3-1/src/c/statisticsFunctions/stdevf/testFloatStdevf.c
new file mode 100644
index 00000000..bdf61a63
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/testFloatStdevf.c
@@ -0,0 +1,389 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "stdevf.h"
+
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int sstdevfsTest(void) {
+ float value1 = 3.0f;
+ float value2 = 1.123456789f;
+ float coef1 = 56.0f ;
+ float coef2 = 2.0f ;
+
+ printf("\n>>>> stdevf Float Scalar Test\n");
+ printf("result : %f " ,sstdevfs(value1,coef1)) ;
+ printf("result : %f " ,sstdevfs(value2,coef)) ;
+ assert( ( sstdevfs(value1,coef1) ) == 0.0f );
+ assert( ( sstdevfs(value2,coef2) ) == 0.0f );
+
+ value1 = 3.0f;
+ value2 = 1.123456789f;
+ coef1 = 56.0f ;
+ coef2 = 2.0f ;
+
+
+ return 0;
+}
+
+static int sstdevfaTest(void) {
+ float table1[3] = {3.0f, 6.0f, 9.0f};
+ float coef1[3] = {10.0f, 2.0f, 6.0f};
+
+ float table2[5] = {3.186784563f,
+ 4.186784563f,
+ 5.186784563f,
+ 6.186784563f,
+ 7.186784563f};
+
+ float coef2[5] = {3.0f,
+ 4.0f,
+ 5.0f,
+ 6.0f,
+ 7.0f};
+
+ float table3[10] = {3.0f, 6.0f, 9.0f,10.0f, 5.0f,
+ 6.0f,18.0f, 7.0f,14.0f, 2.0f};
+ float coef3 [10] = {3.0f, 8.0f,14.0f,13.0f, 2.0f,
+ 5.0f, 8.0f, 2.0f, 6.0f, 8.0f};
+
+ float result_2_5 = sstdevfa(table3,2, 5, coef3);
+
+ printf("\n>>>> stdevf Float Array Test\n");
+ printf("\nresult : %f " ,sstdevfa(table1,1, 3, coef1)) ;
+ printf("\nresult : %f " ,sstdevfa(table2,1, 5, coef2)) ;
+ printf("\nresult : %f " ,result_2_5) ;
+
+ assert(sstdevfa(table1,1, 3, coef1) == 0.0f);
+ assert(sstdevfa(table1,1, 3, coef1) == 0.0f);
+ assert( ( fabs(result_2_5 ) - ( 4.6440201f ) ) / fabs ( result_2_5 ) < 1e-6 );
+ return 0;
+}
+
+
+static int scolumnstdevfaTest(void) {
+
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float coef1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+
+ float columnStdevfedTable1_3_3[3] = {0};
+ float columnStdevfedTable1_1_9[1] = {0};
+
+
+ printf("\n>>>> Column stdevf Float Array Test\n");
+
+/**/
+
+ scolumnstdevfa(table1, 3, 3, coef1 ,columnStdevfedTable1_3_3);
+
+ printf("\nresult1 : %f " ,columnStdevfedTable1_3_3[0]) ;
+ printf("\nresult2 : %f " ,columnStdevfedTable1_3_3[1]) ;
+ printf("\nresult3 : %f " ,columnStdevfedTable1_3_3[2]) ;
+
+ assert( fabs(columnStdevfedTable1_3_3[0] - 0.8268689f ) / fabs ( columnStdevfedTable1_3_3[0] ) < 1e-6 );
+ assert( fabs(columnStdevfedTable1_3_3[1] - 0.8164966f ) / fabs ( columnStdevfedTable1_3_3[1] ) < 1e-6 );
+ assert( fabs(columnStdevfedTable1_3_3[2] - 0.8323524f ) / fabs ( columnStdevfedTable1_3_3[2] ) < 1e-6 );
+
+
+
+ scolumnstdevfa(table1, 1, 9, coef1 ,columnStdevfedTable1_1_9);
+ printf("\nresult_1_9: %f\n " ,columnStdevfedTable1_1_9[0]) ;
+ assert( columnStdevfedTable1_1_9[0] == 0.0f);
+
+
+ return 0;
+}
+
+
+static int srowstdevfaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float coef1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+
+ float table2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float coef2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+
+
+
+ float rowStdevfedTable1_3_3[3] = {0};
+ float rowStdevfedTable1_1_9[9] = {0};
+ float rowStdevfedTable2_2_5[5] = {0};
+ printf("\n>>>> Row Mean Float Array Test\n");
+
+
+ srowstdevfa(table1, 3, 3, coef1 , rowStdevfedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowStdevfedTable1_3_3[%d] = %e\n", i, rowStdevfedTable1_3_3[i]);
+ }
+ assert( fabs(rowStdevfedTable1_3_3[0] - 2.8394542f ) / fabs ( rowStdevfedTable1_3_3[0] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable1_3_3[1] - 2.8003759f ) / fabs ( rowStdevfedTable1_3_3[1] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable1_3_3[2] - 2.7669196f ) / fabs ( rowStdevfedTable1_3_3[2] ) < 1e-6 );
+
+/**/
+ srowstdevfa(table1, 1, 9, coef1, rowStdevfedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowStdevfedTable1_1_9[%d] = %e\n", i, rowStdevfedTable1_1_9[i]);
+ assert(rowStdevfedTable1_1_9[i] == 0.0f);
+ }
+
+
+/**/
+ /**/
+ srowstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5);
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowStdevfedTable_2_5[%d] = %e \n", i, rowStdevfedTable2_2_5[i]);
+ }
+ assert( fabs(rowStdevfedTable2_2_5[0] - 0.9045340f ) / fabs ( rowStdevfedTable2_2_5[0] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[1] - 2.3935678f ) / fabs ( rowStdevfedTable2_2_5[1] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[2] - 1.3887301f ) / fabs ( rowStdevfedTable2_2_5[2] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[3] - 1.2421180f ) / fabs ( rowStdevfedTable2_2_5[3] ) < 1e-6 );
+ assert( fabs(rowStdevfedTable2_2_5[4] - 0.4523443f ) / fabs ( rowStdevfedTable2_2_5[4] ) < 1e-6 );
+ return 0;
+}
+
+
+static int cstdevfsTest(void) {
+ floatComplex value1;
+ floatComplex coef1 ;
+ floatComplex value2;
+ floatComplex coef2 ;
+
+ value1 = FloatComplex(3.0f, 3.0f);
+ coef1 = FloatComplex(3.0f, 0.0f);
+ value2 = FloatComplex(1.123456789f, 1.123456789f);
+ coef2 = FloatComplex(9.0f, 0.0f);
+
+ printf("\n>>>> Mean Float Complex Scalar Test\n");
+ assert( creals(cstdevfs(value1,coef1)) == 0.0f );
+ assert( cimags(cstdevfs(value1,coef1)) == 0.0f );
+ assert( creals(cstdevfs(value2,coef2)) == 0.0f );
+ assert( cimags(cstdevfs(value2,coef2)) == 0.0f );
+
+ return 0;
+}
+
+
+
+static int cstdevfaTest(void) {
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+
+ float tableR3[10] = {3.0f, 6.0f, 9.0f,10.0f, 5.0f,
+ 6.0f,18.0f, 7.0f,14.0f, 2.0f};
+ float tableI3[10] = {3.0f,12.0f,25.0f, 1.0f, 2.0f,
+ 5.0f,18.0f, 7.0f, 4.0f, 1.0f};
+
+
+ float coefR3 [10] = {3.0f, 8.0f,14.0f,13.0f, 2.0f,
+ 5.0f, 8.0f, 2.0f, 6.0f, 8.0f};
+ float coefI3 [10] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+
+ floatComplex* table3 = FloatComplexMatrix (tableR3, tableI3, 10);
+ floatComplex* coef3 = FloatComplexMatrix (coefR3, coefI3, 10);
+
+ floatComplex result =FloatComplex(0.0f , 0.0f);
+
+ printf("\n>>>> Mean Float Complex Array Test\n");
+ result = cstdevfa(table1,1, 9, coef1);
+ printf("\nresult_1_9 : %f \t+ %f i " ,creals(result) ,cimags(result)) ;
+ assert( creals(result) == 0.0f );
+ assert( cimags(result) == 0.0f );
+
+
+ result = cstdevfa(table3,2, 5, coef3);
+ printf("\nresult_2_5 : %f \t+ %f i " ,creals(result) ,cimags(result)) ;
+ assert( fabs(creals(result) - 1.7749350f ) / fabs ( cimags(result) ) < 1e-6 );
+ assert( fabs(cimags(result) - 8.3811287f ) / fabs ( creals(result) ) < 1e-6 );
+
+ return 0;
+}
+
+
+static int crowstdevfaTest(void) {
+
+ int i = 0 ;
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ float tableR2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float tableI2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 15.0f};
+ float coefR2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+ float coefI2[10] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+
+ floatComplex* table2 = FloatComplexMatrix (tableR2, tableI2, 10);
+ floatComplex* coef2 = FloatComplexMatrix (coefR2, coefI2, 10);
+
+ floatComplex rowStdevfedTable1_3_3[3];
+ floatComplex rowStdevfedTable2_2_5[5];
+
+ printf("\n>>>> Row stdevf Float Complex Array Test\n");
+
+ rowStdevfedTable1_3_3[0] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable1_3_3[1] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable1_3_3[2] = FloatComplex(0.0f, 0.0f);
+
+ rowStdevfedTable2_2_5[0] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable2_2_5[1] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable2_2_5[2] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable2_2_5[3] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable2_2_5[4] = FloatComplex(0.0f, 0.0f);
+
+
+ crowstdevfa(table1 , 3 , 3 , coef1 , rowStdevfedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("rowStdevfedTable_3_3[%d] = %e + %ei\n", i, creals(rowStdevfedTable1_3_3[i]), cimags(rowStdevfedTable1_3_3[i]));
+ }
+ assert( fabs(creals(rowStdevfedTable1_3_3[0]) - 2.8394542f ) / fabs ( cimags(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable1_3_3[0]) - 0.9464847f ) / fabs ( creals(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable1_3_3[1]) - 2.8003759f ) / fabs ( cimags(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable1_3_3[1]) - 0.9334586f ) / fabs ( creals(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable1_3_3[2]) - 2.7669196f ) / fabs ( cimags(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable1_3_3[2]) - 0.9223065f ) / fabs ( creals(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+/**/
+ crowstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5);
+ for (i = 0 ; i < 5 ; ++i )
+ {
+ printf("rowStdevfedTable_2_5[%d] = %e + %ei\n", i, creals(rowStdevfedTable2_2_5[i]), cimags(rowStdevfedTable2_2_5[i]));
+ }
+ assert( fabs(creals(rowStdevfedTable2_2_5[0]) - 0.9045340f ) / fabs ( cimags(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[0]) - 0.3015113f ) / fabs ( creals(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable2_2_5[1]) - 2.3935678f ) / fabs ( cimags(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[1]) + 0.4787136f ) / fabs ( creals(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable2_2_5[2]) - 1.3887301f ) / fabs ( cimags(rowStdevfedTable2_2_5[2]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[2]) - 0.4629100f ) / fabs ( creals(rowStdevfedTable2_2_5[2]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable2_2_5[3]) - 1.2421180f ) / fabs ( cimags(rowStdevfedTable2_2_5[3]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[3]) - 0.4140393f ) / fabs ( creals(rowStdevfedTable2_2_5[3]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable2_2_5[4]) - 0.4523443f ) / fabs ( cimags(rowStdevfedTable2_2_5[4]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[4]) - 2.7140659f ) / fabs ( creals(rowStdevfedTable2_2_5[4]) ) < 1e-6 );
+
+ return 0;
+}
+
+
+
+
+static int ccolumnstdevfaTest(void) {
+
+ int i = 0 ;
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ float tableR2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float tableI2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 15.0f};
+ float coefR2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+ float coefI2[10] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+
+ floatComplex* table2 = FloatComplexMatrix (tableR2, tableI2, 10);
+ floatComplex* coef2 = FloatComplexMatrix (coefR2, coefI2, 10);
+
+ floatComplex rowStdevfedTable1_3_3[3];
+ floatComplex rowStdevfedTable2_2_5[2];
+
+ rowStdevfedTable1_3_3[0] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable1_3_3[1] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable1_3_3[2] = FloatComplex(0.0f, 0.0f);
+
+ rowStdevfedTable2_2_5[0] = FloatComplex(0.0f, 0.0f);
+ rowStdevfedTable2_2_5[1] = FloatComplex(0.0f, 0.0f);
+
+
+
+ printf("\n>>>> Column stdevf Float Complex Array Test\n");
+
+
+
+ ccolumnstdevfa(table1 , 3 , 3 , coef1 , rowStdevfedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnStdevfedTable_3_3[%d] = %e + %ei\n", i, creals(rowStdevfedTable1_3_3[i]), cimags(rowStdevfedTable1_3_3[i]));
+ }
+ assert( fabs(creals(rowStdevfedTable1_3_3[0]) - 0.8268689f ) / fabs ( cimags(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable1_3_3[0]) - 2.4806066f ) / fabs ( creals(rowStdevfedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable1_3_3[1]) - 0.8164966f ) / fabs ( cimags(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable1_3_3[1]) - 2.4494897f ) / fabs ( creals(rowStdevfedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable1_3_3[2]) - 0.8323524f ) / fabs ( cimags(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable1_3_3[2]) - 2.4970571f ) / fabs ( creals(rowStdevfedTable1_3_3[2]) ) < 1e-6 );
+/**/
+ ccolumnstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5);
+ for (i = 0 ; i < 2 ; ++i )
+ {
+ printf("columnStdevfedTable_2_5[%d] = %e + %ei\n", i, creals(rowStdevfedTable2_2_5[i]), cimags(rowStdevfedTable2_2_5[i]));
+ }
+ assert( fabs(creals(rowStdevfedTable2_2_5[0]) - 2.3683811f ) / fabs ( cimags(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[0]) - 2.4784193f ) / fabs ( creals(rowStdevfedTable2_2_5[0]) ) < 1e-6 );
+
+ assert( fabs(creals(rowStdevfedTable2_2_5[1]) - 3.1890422f ) / fabs ( cimags(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+ assert( fabs(cimags(rowStdevfedTable2_2_5[1]) - 4.9966774f ) / fabs ( creals(rowStdevfedTable2_2_5[1]) ) < 1e-6 );
+
+
+ return 0;
+}
+
+
+static int teststdevf(void) {
+
+ sstdevfsTest();
+ sstdevfaTest();
+ scolumnstdevfaTest();
+ srowstdevfaTest();
+ cstdevfsTest();
+ cstdevfaTest();
+ crowstdevfaTest();
+ ccolumnstdevfaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(teststdevf() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/zcolumnstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/zcolumnstdevfa.c
new file mode 100644
index 00000000..7dadda70
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/zcolumnstdevfa.c
@@ -0,0 +1,59 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "meanf.h"
+#include "abs.h"
+
+void zcolumnstdevfa(doubleComplex *in1, int lines, int columns, doubleComplex*in2, doubleComplex* out){
+ int i = 0;
+ int j = 0;
+ doubleComplex temp = DoubleComplex(0.0,0.0);
+ doubleComplex accumulate = DoubleComplex(0.0,0.0);
+ doubleComplex accumulateFre = DoubleComplex(0.0,0.0);
+
+ zcolumnmeanfa(in1, lines, columns, in2, out );
+
+
+ /*we first multiply each zell of the input matrix by its zoefficient*/
+ for (j = 0; j < lines; ++j)
+ {
+ accumulate = DoubleComplex(0.0,0.0);
+ accumulateFre = DoubleComplex(0.0,0.0);
+ temp = DoubleComplex(0.0,0.0);
+
+ for ( i = 0 ; i < columns; ++i )
+ {
+
+ temp = zpows ( zdiffs (in1[lines*i + j] ,out[j] ) ,DoubleComplex (2.0, 0.0 ) );
+ temp = zmuls( in2[lines*i + j] , temp);
+
+ accumulate = zadds( temp , accumulate);
+ accumulateFre = zadds(in2[lines*i + j] ,accumulateFre );
+
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = zmuls (DoubleComplex(0.0,0.0) , accumulate ) ;
+ }
+ else
+ {
+ if( dabss (zreals(accumulate)) <= 3e-14 ) accumulate = DoubleComplex(dabss(zreals(accumulate)) ,zimags(accumulate));
+ if( dabss (zimags(accumulate)) <= 3e-14 ) accumulate = DoubleComplex(zreals(accumulate) ,dabss(zimags(accumulate)));
+ accumulate = zrdivs(accumulate, zdiffs(accumulateFre ,DoubleComplex(1.0,0.0)));
+ out[j] = zsqrts(accumulate);
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/zrowstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/zrowstdevfa.c
new file mode 100644
index 00000000..bfa77aa5
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/zrowstdevfa.c
@@ -0,0 +1,63 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+#include "meanf.h"
+#include "abs.h"
+
+
+
+void zrowstdevfa(doubleComplex *in1, int lines, int columns, doubleComplex*in2, doubleComplex* out){
+ int i = 0;
+ int j = 0;
+ doubleComplex temp = DoubleComplex(0.0,0.0);
+ doubleComplex accumulate = DoubleComplex(0.0,0.0);
+ doubleComplex accumulateFre = DoubleComplex(0.0,0.0);
+
+ zrowmeanfa(in1, lines, columns, in2, out );
+
+ /*we first multiply each zell of the input matrix by its coefficient*/
+ for (j = 0; j < columns; ++j)
+ {
+
+ accumulate = DoubleComplex(0.0,0.0);
+ accumulateFre =DoubleComplex(0.0,0.0);
+ temp = DoubleComplex(0.0,0.0);
+
+ for ( i = 0 ; i < lines; ++i )
+ {
+
+ temp = zpows ( zdiffs (in1[lines*j + i] ,out[j] ) ,DoubleComplex (2.0, 0.0 ) );
+ temp = zmuls( in2[lines*j + i] , temp);
+
+ accumulate = zadds( temp , accumulate);
+ accumulateFre = zadds(in2[lines*j + i] ,accumulateFre );
+
+ }
+
+ if (lines <= 1)
+ {
+ out[j] = zmuls (DoubleComplex(0.0,0.0) , accumulate ) ;
+ }
+ else
+ {
+ if( dabss (zreals(accumulate)) <= 3e-14 ) accumulate = DoubleComplex(dabss(zreals(accumulate)) ,zimags(accumulate));
+ if( dabss (zimags(accumulate)) <= 3e-14 ) accumulate = DoubleComplex(zreals(accumulate) ,dabss(zimags(accumulate)));
+
+
+ accumulate = zrdivs(accumulate, zdiffs(accumulateFre ,DoubleComplex(1.0,0.0)));
+ out[j] = zsqrts(accumulate);
+
+ }
+ }
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfa.c b/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfa.c
new file mode 100644
index 00000000..2a4f52b7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfa.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+
+doubleComplex zstdevfa(doubleComplex *in1, int lines, int columns, doubleComplex* in2)
+{
+ int i = 0 ;
+
+ doubleComplex temp = DoubleComplex(0.0,0.0);
+ doubleComplex accumulate = DoubleComplex(0.0,0.0);
+ doubleComplex accumulateFre = DoubleComplex(0.0,0.0);
+ doubleComplex meanf = zmeanfa (in1 , lines*columns , in2);
+
+ for(i = 0 ; i < lines*columns ; ++i)
+ {
+ temp = zpows ( zdiffs (in1[i] , meanf ) ,DoubleComplex (2.0, 0.0 ) );
+ temp = zmuls( in2[i] , temp);
+
+ accumulate = zadds( temp , accumulate);
+ accumulateFre = zadds(in2[i ] ,accumulateFre );
+
+ }
+
+ if (lines <= 1)
+ {
+
+ return zmuls (DoubleComplex(0.0,0.0) , accumulate ) ;
+ }
+ else
+ {
+
+ accumulate = zrdivs(accumulate, zdiffs(accumulateFre ,DoubleComplex(1.0,0.0) ));
+ return zsqrts(accumulate);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfdz.c b/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfdz.c
new file mode 100644
index 00000000..90feb217
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfdz.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdlib.h>
+#include "stdevf.h"
+#include "zeros.h"
+
+doubleComplex zstdevfdz(double *in1, int lines, int columns, doubleComplex* in2)
+{
+ double* ZEROS = (double *) malloc((unsigned int)(lines*columns*sizeof(double)));
+ dzerosa(ZEROS,lines,columns);
+
+ return zstdevfa(DoubleComplexMatrix(in1,ZEROS,lines*columns), lines,columns , in2);
+}
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfzd.c b/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfzd.c
new file mode 100644
index 00000000..f7a28e30
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/stdevf/zstdevfzd.c
@@ -0,0 +1,41 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "stdevf.h"
+
+doubleComplex zstdevfzd(doubleComplex *in1, int lines, int columns, double* in2)
+{
+ int i = 0 ;
+ doubleComplex temp = DoubleComplex(0.0,0.0);
+ doubleComplex accumulate = DoubleComplex(0.0,0.0);
+ double accumulateFre = 0.0 ;
+ doubleComplex meanf = zmeanfzd (in1 , lines , columns , in2);
+/*equivalent to (in1 - meanf(x , in2 )).^2 .*in2 */
+ for(i = 0 ; i < lines*columns ; ++i)
+ {
+ temp = zpows ( zdiffs (in1[i] , meanf ) ,DoubleComplex (2.0, 0.0 ) );
+ temp = zmuls( DoubleComplex(in2[i],0.0f) , temp);
+
+ accumulate = zadds( temp , accumulate);
+ accumulateFre += in2[i];
+ }
+
+ if (lines <= 1)
+ {
+ return zmuls (DoubleComplex(0.0,0.0) , accumulate ) ;
+ }
+ else
+ {
+ accumulate = DoubleComplex( zreals(accumulate ) / (accumulateFre - 1) , zimags(accumulate) / (accumulateFre - 1));
+ return zsqrts(accumulate);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/Makefile.am b/2.3-1/src/c/statisticsFunctions/sum/Makefile.am
new file mode 100644
index 00000000..0fd79658
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/Makefile.am
@@ -0,0 +1,65 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libSum_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libSum.la
+
+libSum_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = ssuma.c \
+ srowsuma.c \
+ scolumnsuma.c \
+ dsuma.c \
+ drowsuma.c \
+ dcolumnsuma.c \
+ csuma.c \
+ crowsuma.c \
+ ccolumnsuma.c \
+ zsuma.c \
+ zrowsuma.c \
+ zcolumnsuma.c
+
+HEAD = ../includes/sum.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatSum testDoubleSum
+
+TESTS = testFloatSum testDoubleSum
+
+#
+# -*- Sum Tests -*-
+#
+testFloatSum_SOURCES = testFloatSum.c
+testFloatSum_CFLAGS = $(check_INCLUDES)
+testFloatSum_LDADD = $(check_LDADD)
+
+testDoubleSum_SOURCES =testDoubleSum.c
+testDoubleSum_CFLAGS = $(check_INCLUDES)
+testDoubleSum_LDADD = $(check_LDADD) \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/sum/Makefile.in b/2.3-1/src/c/statisticsFunctions/sum/Makefile.in
new file mode 100644
index 00000000..f3d5a853
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/Makefile.in
@@ -0,0 +1,831 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatSum$(EXEEXT) testDoubleSum$(EXEEXT)
+TESTS = testFloatSum$(EXEEXT) testDoubleSum$(EXEEXT)
+subdir = src/c/statisticsFunctions/sum
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libSum_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libSum_la-ssuma.lo libSum_la-srowsuma.lo \
+ libSum_la-scolumnsuma.lo libSum_la-dsuma.lo \
+ libSum_la-drowsuma.lo libSum_la-dcolumnsuma.lo \
+ libSum_la-csuma.lo libSum_la-crowsuma.lo \
+ libSum_la-ccolumnsuma.lo libSum_la-zsuma.lo \
+ libSum_la-zrowsuma.lo libSum_la-zcolumnsuma.lo
+am_libSum_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libSum_la_OBJECTS = $(am_libSum_la_OBJECTS)
+libSum_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libSum_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleSum_OBJECTS = testDoubleSum-testDoubleSum.$(OBJEXT)
+testDoubleSum_OBJECTS = $(am_testDoubleSum_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la
+testDoubleSum_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleSum_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleSum_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatSum_OBJECTS = testFloatSum-testFloatSum.$(OBJEXT)
+testFloatSum_OBJECTS = $(am_testFloatSum_OBJECTS)
+testFloatSum_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatSum_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatSum_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libSum_la_SOURCES) $(testDoubleSum_SOURCES) \
+ $(testFloatSum_SOURCES)
+DIST_SOURCES = $(libSum_la_SOURCES) $(testDoubleSum_SOURCES) \
+ $(testFloatSum_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libSum_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libSum.la
+libSum_la_SOURCES = $(HEAD) $(SRC)
+SRC = ssuma.c \
+ srowsuma.c \
+ scolumnsuma.c \
+ dsuma.c \
+ drowsuma.c \
+ dcolumnsuma.c \
+ csuma.c \
+ crowsuma.c \
+ ccolumnsuma.c \
+ zsuma.c \
+ zrowsuma.c \
+ zcolumnsuma.c
+
+HEAD = ../includes/sum.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ @LIBMATH@
+
+
+#
+# -*- Sum Tests -*-
+#
+testFloatSum_SOURCES = testFloatSum.c
+testFloatSum_CFLAGS = $(check_INCLUDES)
+testFloatSum_LDADD = $(check_LDADD)
+testDoubleSum_SOURCES = testDoubleSum.c
+testDoubleSum_CFLAGS = $(check_INCLUDES)
+testDoubleSum_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/sum/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/sum/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libSum.la: $(libSum_la_OBJECTS) $(libSum_la_DEPENDENCIES)
+ $(libSum_la_LINK) -rpath $(pkglibdir) $(libSum_la_OBJECTS) $(libSum_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleSum$(EXEEXT): $(testDoubleSum_OBJECTS) $(testDoubleSum_DEPENDENCIES)
+ @rm -f testDoubleSum$(EXEEXT)
+ $(testDoubleSum_LINK) $(testDoubleSum_OBJECTS) $(testDoubleSum_LDADD) $(LIBS)
+testFloatSum$(EXEEXT): $(testFloatSum_OBJECTS) $(testFloatSum_DEPENDENCIES)
+ @rm -f testFloatSum$(EXEEXT)
+ $(testFloatSum_LINK) $(testFloatSum_OBJECTS) $(testFloatSum_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-ccolumnsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-crowsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-csuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-dcolumnsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-drowsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-dsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-scolumnsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-srowsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-ssuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-zcolumnsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-zrowsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libSum_la-zsuma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleSum-testDoubleSum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatSum-testFloatSum.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libSum_la-ssuma.lo: ssuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-ssuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-ssuma.Tpo -c -o libSum_la-ssuma.lo `test -f 'ssuma.c' || echo '$(srcdir)/'`ssuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-ssuma.Tpo $(DEPDIR)/libSum_la-ssuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ssuma.c' object='libSum_la-ssuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-ssuma.lo `test -f 'ssuma.c' || echo '$(srcdir)/'`ssuma.c
+
+libSum_la-srowsuma.lo: srowsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-srowsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-srowsuma.Tpo -c -o libSum_la-srowsuma.lo `test -f 'srowsuma.c' || echo '$(srcdir)/'`srowsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-srowsuma.Tpo $(DEPDIR)/libSum_la-srowsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowsuma.c' object='libSum_la-srowsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-srowsuma.lo `test -f 'srowsuma.c' || echo '$(srcdir)/'`srowsuma.c
+
+libSum_la-scolumnsuma.lo: scolumnsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-scolumnsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-scolumnsuma.Tpo -c -o libSum_la-scolumnsuma.lo `test -f 'scolumnsuma.c' || echo '$(srcdir)/'`scolumnsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-scolumnsuma.Tpo $(DEPDIR)/libSum_la-scolumnsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnsuma.c' object='libSum_la-scolumnsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-scolumnsuma.lo `test -f 'scolumnsuma.c' || echo '$(srcdir)/'`scolumnsuma.c
+
+libSum_la-dsuma.lo: dsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-dsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-dsuma.Tpo -c -o libSum_la-dsuma.lo `test -f 'dsuma.c' || echo '$(srcdir)/'`dsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-dsuma.Tpo $(DEPDIR)/libSum_la-dsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dsuma.c' object='libSum_la-dsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-dsuma.lo `test -f 'dsuma.c' || echo '$(srcdir)/'`dsuma.c
+
+libSum_la-drowsuma.lo: drowsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-drowsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-drowsuma.Tpo -c -o libSum_la-drowsuma.lo `test -f 'drowsuma.c' || echo '$(srcdir)/'`drowsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-drowsuma.Tpo $(DEPDIR)/libSum_la-drowsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowsuma.c' object='libSum_la-drowsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-drowsuma.lo `test -f 'drowsuma.c' || echo '$(srcdir)/'`drowsuma.c
+
+libSum_la-dcolumnsuma.lo: dcolumnsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-dcolumnsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-dcolumnsuma.Tpo -c -o libSum_la-dcolumnsuma.lo `test -f 'dcolumnsuma.c' || echo '$(srcdir)/'`dcolumnsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-dcolumnsuma.Tpo $(DEPDIR)/libSum_la-dcolumnsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnsuma.c' object='libSum_la-dcolumnsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-dcolumnsuma.lo `test -f 'dcolumnsuma.c' || echo '$(srcdir)/'`dcolumnsuma.c
+
+libSum_la-csuma.lo: csuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-csuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-csuma.Tpo -c -o libSum_la-csuma.lo `test -f 'csuma.c' || echo '$(srcdir)/'`csuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-csuma.Tpo $(DEPDIR)/libSum_la-csuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='csuma.c' object='libSum_la-csuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-csuma.lo `test -f 'csuma.c' || echo '$(srcdir)/'`csuma.c
+
+libSum_la-crowsuma.lo: crowsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-crowsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-crowsuma.Tpo -c -o libSum_la-crowsuma.lo `test -f 'crowsuma.c' || echo '$(srcdir)/'`crowsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-crowsuma.Tpo $(DEPDIR)/libSum_la-crowsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowsuma.c' object='libSum_la-crowsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-crowsuma.lo `test -f 'crowsuma.c' || echo '$(srcdir)/'`crowsuma.c
+
+libSum_la-ccolumnsuma.lo: ccolumnsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-ccolumnsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-ccolumnsuma.Tpo -c -o libSum_la-ccolumnsuma.lo `test -f 'ccolumnsuma.c' || echo '$(srcdir)/'`ccolumnsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-ccolumnsuma.Tpo $(DEPDIR)/libSum_la-ccolumnsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnsuma.c' object='libSum_la-ccolumnsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-ccolumnsuma.lo `test -f 'ccolumnsuma.c' || echo '$(srcdir)/'`ccolumnsuma.c
+
+libSum_la-zsuma.lo: zsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-zsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-zsuma.Tpo -c -o libSum_la-zsuma.lo `test -f 'zsuma.c' || echo '$(srcdir)/'`zsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-zsuma.Tpo $(DEPDIR)/libSum_la-zsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zsuma.c' object='libSum_la-zsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-zsuma.lo `test -f 'zsuma.c' || echo '$(srcdir)/'`zsuma.c
+
+libSum_la-zrowsuma.lo: zrowsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-zrowsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-zrowsuma.Tpo -c -o libSum_la-zrowsuma.lo `test -f 'zrowsuma.c' || echo '$(srcdir)/'`zrowsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-zrowsuma.Tpo $(DEPDIR)/libSum_la-zrowsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowsuma.c' object='libSum_la-zrowsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-zrowsuma.lo `test -f 'zrowsuma.c' || echo '$(srcdir)/'`zrowsuma.c
+
+libSum_la-zcolumnsuma.lo: zcolumnsuma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -MT libSum_la-zcolumnsuma.lo -MD -MP -MF $(DEPDIR)/libSum_la-zcolumnsuma.Tpo -c -o libSum_la-zcolumnsuma.lo `test -f 'zcolumnsuma.c' || echo '$(srcdir)/'`zcolumnsuma.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libSum_la-zcolumnsuma.Tpo $(DEPDIR)/libSum_la-zcolumnsuma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnsuma.c' object='libSum_la-zcolumnsuma.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libSum_la_CFLAGS) $(CFLAGS) -c -o libSum_la-zcolumnsuma.lo `test -f 'zcolumnsuma.c' || echo '$(srcdir)/'`zcolumnsuma.c
+
+testDoubleSum-testDoubleSum.o: testDoubleSum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSum_CFLAGS) $(CFLAGS) -MT testDoubleSum-testDoubleSum.o -MD -MP -MF $(DEPDIR)/testDoubleSum-testDoubleSum.Tpo -c -o testDoubleSum-testDoubleSum.o `test -f 'testDoubleSum.c' || echo '$(srcdir)/'`testDoubleSum.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSum-testDoubleSum.Tpo $(DEPDIR)/testDoubleSum-testDoubleSum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSum.c' object='testDoubleSum-testDoubleSum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSum_CFLAGS) $(CFLAGS) -c -o testDoubleSum-testDoubleSum.o `test -f 'testDoubleSum.c' || echo '$(srcdir)/'`testDoubleSum.c
+
+testDoubleSum-testDoubleSum.obj: testDoubleSum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSum_CFLAGS) $(CFLAGS) -MT testDoubleSum-testDoubleSum.obj -MD -MP -MF $(DEPDIR)/testDoubleSum-testDoubleSum.Tpo -c -o testDoubleSum-testDoubleSum.obj `if test -f 'testDoubleSum.c'; then $(CYGPATH_W) 'testDoubleSum.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSum.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleSum-testDoubleSum.Tpo $(DEPDIR)/testDoubleSum-testDoubleSum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleSum.c' object='testDoubleSum-testDoubleSum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleSum_CFLAGS) $(CFLAGS) -c -o testDoubleSum-testDoubleSum.obj `if test -f 'testDoubleSum.c'; then $(CYGPATH_W) 'testDoubleSum.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleSum.c'; fi`
+
+testFloatSum-testFloatSum.o: testFloatSum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSum_CFLAGS) $(CFLAGS) -MT testFloatSum-testFloatSum.o -MD -MP -MF $(DEPDIR)/testFloatSum-testFloatSum.Tpo -c -o testFloatSum-testFloatSum.o `test -f 'testFloatSum.c' || echo '$(srcdir)/'`testFloatSum.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSum-testFloatSum.Tpo $(DEPDIR)/testFloatSum-testFloatSum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSum.c' object='testFloatSum-testFloatSum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSum_CFLAGS) $(CFLAGS) -c -o testFloatSum-testFloatSum.o `test -f 'testFloatSum.c' || echo '$(srcdir)/'`testFloatSum.c
+
+testFloatSum-testFloatSum.obj: testFloatSum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSum_CFLAGS) $(CFLAGS) -MT testFloatSum-testFloatSum.obj -MD -MP -MF $(DEPDIR)/testFloatSum-testFloatSum.Tpo -c -o testFloatSum-testFloatSum.obj `if test -f 'testFloatSum.c'; then $(CYGPATH_W) 'testFloatSum.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSum.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatSum-testFloatSum.Tpo $(DEPDIR)/testFloatSum-testFloatSum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatSum.c' object='testFloatSum-testFloatSum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatSum_CFLAGS) $(CFLAGS) -c -o testFloatSum-testFloatSum.obj `if test -f 'testFloatSum.c'; then $(CYGPATH_W) 'testFloatSum.c'; else $(CYGPATH_W) '$(srcdir)/testFloatSum.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/sum/ccolumnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/ccolumnsuma.c
new file mode 100644
index 00000000..64018cdc
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/ccolumnsuma.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void ccolumnsuma(floatComplex *in, int lines, int columns, floatComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = cadds(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/crowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/crowsuma.c
new file mode 100644
index 00000000..aaf3c592
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/crowsuma.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void crowsuma(floatComplex *in, int lines, int columns, floatComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = cadds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/csuma.c b/2.3-1/src/c/statisticsFunctions/sum/csuma.c
new file mode 100644
index 00000000..68ebb291
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/csuma.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+floatComplex csuma(floatComplex *in, int size) {
+ floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = cadds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/dcolumnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/dcolumnsuma.c
new file mode 100644
index 00000000..1f9b479d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/dcolumnsuma.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void dcolumnsuma(double *in, int lines, int columns, double * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] += in[i];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/drowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/drowsuma.c
new file mode 100644
index 00000000..f5e2ed34
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/drowsuma.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void drowsuma(double *in, int lines, int columns, double *out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] += in[((i - 1) % columns) * lines + 1 + (i - 1) / columns];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/dsuma.c b/2.3-1/src/c/statisticsFunctions/sum/dsuma.c
new file mode 100644
index 00000000..eddceb6f
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/dsuma.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+double dsuma(double *in, int size) {
+ double accumulate = 0.0;
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate += in[i];
+ }
+ return accumulate;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/i16columnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/i16columnsuma.c
new file mode 100644
index 00000000..a34cea13
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/i16columnsuma.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i16columnsuma(int16 *in, int lines, int columns, int16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (int16)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (int16)i16adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/i16rowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/i16rowsuma.c
new file mode 100644
index 00000000..03d8ff29
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/i16rowsuma.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i16rowsuma(int16 *in, int lines, int columns, int16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (int16)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (int16)i16adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/i16suma.c b/2.3-1/src/c/statisticsFunctions/sum/i16suma.c
new file mode 100644
index 00000000..f5d08093
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/i16suma.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+int16 i16suma(int16 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+ int16 accumulate = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = i16adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/i8columnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/i8columnsuma.c
new file mode 100644
index 00000000..bb79897c
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/i8columnsuma.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i8columnsuma(int8 *in, int lines, int columns, int8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (int8)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (int8)i8adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/i8rowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/i8rowsuma.c
new file mode 100644
index 00000000..2008f32d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/i8rowsuma.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void i8rowsuma(int8 *in, int lines, int columns, int8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (int8)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (int8)i8adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/i8suma.c b/2.3-1/src/c/statisticsFunctions/sum/i8suma.c
new file mode 100644
index 00000000..468a98b9
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/i8suma.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+int8 i8suma(int8 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int8 accumulate = 0;
+
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = i8adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/scolumnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/scolumnsuma.c
new file mode 100644
index 00000000..4d2415f2
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/scolumnsuma.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void scolumnsuma(float *in, int lines, int columns, float * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] += in[i];
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/srowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/srowsuma.c
new file mode 100644
index 00000000..3f20661a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/srowsuma.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void srowsuma(float *in, int lines, int columns, float * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] += in[((i - 1) % columns) * lines + 1 + (i - 1) / columns];
+ }
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/sum/ssuma.c b/2.3-1/src/c/statisticsFunctions/sum/ssuma.c
new file mode 100644
index 00000000..aabc7fe0
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/ssuma.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+float ssuma(float *in, int size) {
+ float accumulate = 0.0f;
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate += in[i];
+ }
+ return accumulate;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/testDoubleSum.c b/2.3-1/src/c/statisticsFunctions/sum/testDoubleSum.c
new file mode 100644
index 00000000..b411a7de
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/testDoubleSum.c
@@ -0,0 +1,493 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "sum.h"
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int dsumsTest(void) {
+ double value1 = 3.0;
+ double value2 = 1.123456789;
+
+ printf("\n>>>> Sum Double Scalar Test\n");
+ assert(dsums(value1) == 3.0);
+ assert(dsums(value2) == 1.123456789);
+
+ return 0;
+}
+
+static int dsumaTest(void) {
+ double table1[3] = {3.0, 3.0, 3.0};
+ double table2[5] = {9.186784563,
+ 9.186784563,
+ 9.186784563,
+ 9.186784563,
+ 9.186784563};
+
+ printf("\n>>>> Sum Double Array Test\n");
+ assert(dsuma(table1, 3) == 9.0);
+ assert((dsuma(table2, 5) - (9.186784653 + 9.186785634 + 9.186784563 + 9.186784563 + 9.186784563)) < 3e-16);
+ return 0;
+}
+
+static int dcolumnsumaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double columnSummedTable1_3_3[3] = {0};
+ double columnSummedTable1_1_9[1] = {0};
+ double columnSummedTable1_9_1[9] = {0};
+ double columnSummedTable2_2_5[2] = {0};
+ double columnSummedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Sum Double Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 6 15 24 ]
+ [ 7 8 9 ]
+ */
+ dcolumnsuma(table1, 3, 3,columnSummedTable1_3_3);
+ assert(columnSummedTable1_3_3[0] == 6.0);
+ assert(columnSummedTable1_3_3[1] == 15.0);
+ assert(columnSummedTable1_3_3[2] == 24.0);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ dcolumnsuma(table1, 1, 9,columnSummedTable1_1_9);
+ assert(columnSummedTable1_1_9[0] == 45.0);
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ dcolumnsuma(table1, 9, 1,columnSummedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnSummedTable1_9_1[%d] = %e\n", i, columnSummedTable1_9_1[i]);
+ assert(columnSummedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 25 30 ]
+ */
+ dcolumnsuma(table2, 2, 5,columnSummedTable2_2_5);
+ assert(columnSummedTable2_2_5[0] == 25.0);
+ assert(columnSummedTable2_2_5[1] == 30.0);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnSummedTable2_2_5[%d] = %e\n", i, columnSummedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 7 9 11 13 15 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ dcolumnsuma(table2, 5, 2,columnSummedTable2_5_2);
+ assert(columnSummedTable2_5_2[0] == 7.0);
+ assert(columnSummedTable2_5_2[1] == 9.0);
+ assert(columnSummedTable2_5_2[2] == 11.0);
+ assert(columnSummedTable2_5_2[3] == 13.0);
+ assert(columnSummedTable2_5_2[4] == 15.0);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnSummedTable2_5_2[%d] = %e\n", i, columnSummedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int drowsumaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double rowSummedTable1_3_3[3] = {0};
+ double rowSummedTable1_1_9[9] = {0};
+ double rowSummedTable1_9_1[1] = {0};
+ double rowSummedTable2_2_5[5] = {0};
+ double rowSummedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Sum Double Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 12 15 18 ]
+ [ 7 8 9 ]
+ */
+ drowsuma(table1, 3, 3,rowSummedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowSummedTable1_3_3[%d] = %e\n", i, rowSummedTable1_3_3[i]);
+ }
+ assert(rowSummedTable1_3_3[0] == 12.0);
+ assert(rowSummedTable1_3_3[1] == 15.0);
+ assert(rowSummedTable1_3_3[2] == 18.0);
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ drowsuma(table1, 1, 9,rowSummedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowSummedTable1_1_9[%d] = %e\n", i, rowSummedTable1_1_9[i]);
+ assert(rowSummedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ drowsuma(table1, 9, 1,rowSummedTable1_9_1);
+ assert(rowSummedTable1_9_1[0] == 45.0);
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 3 7 11 15 19 ]
+ */
+ drowsuma(table2, 2, 5,rowSummedTable2_2_5);
+ assert(rowSummedTable2_2_5[0] == 3.0);
+ assert(rowSummedTable2_2_5[1] == 7.0);
+ assert(rowSummedTable2_2_5[2] == 11.0);
+ assert(rowSummedTable2_2_5[3] == 15.0);
+ assert(rowSummedTable2_2_5[4] == 19.0);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowSummedTable2_2_5[%d] = %e\n", i, rowSummedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 15 40 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ drowsuma(table2, 5, 2,rowSummedTable2_5_2);
+ assert(rowSummedTable2_5_2[0] == 15.0);
+ assert(rowSummedTable2_5_2[1] == 40.0);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("rowSummedTable2_5_2[%d] = %e\n", i, rowSummedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int zsumsTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex value2 = DoubleComplex(1.123456789, 1.123456789);
+
+ printf("\n>>>> Sum Double Complex Scalar Test\n");
+ assert(zreals(zsums(value1)) == 3.0);
+ assert(zimags(zsums(value1)) == 3.0);
+ assert(zreals(zsums(value2)) == 1.123456789);
+ assert(zimags(zsums(value2)) == 1.123456789);
+ return 0;
+}
+
+static int zsumaTest(void) {
+ doubleComplex value1 = DoubleComplex(3.0, 3.0);
+ doubleComplex table1[3];
+ doubleComplex value2 = DoubleComplex(9.186784563,9.186784563);
+ doubleComplex table2[5];
+
+ printf("\n>>>> Sum Double Complex Array Test\n");
+ table1[0] = value1;
+ table1[1] = value1;
+ table1[2] = value1;
+
+ table2[0] = value2;
+ table2[1] = value2;
+ table2[2] = value2;
+ table2[3] = value2;
+ table2[4] = value2;
+
+#ifdef LOCAL_DEBUG
+ printf("--------\n");
+ printf("%e\n", zimags(zsuma(table1, 3)));
+ printf("%e\n", zreals(zsuma(table2, 5)));
+ printf("%e\n", zimags(zsuma(table2, 5)));
+ printf("%e\n", zreals(zsuma(table2, 5)));
+ printf("%e\n", zimags(zsuma(table2, 5)));
+ printf("--------\n");
+#endif
+ assert(zreals(zsuma(table1, 3)) == 9.0);
+ assert(zimags(zsuma(table1, 3)) == 9.0);
+ assert(zreals(zsuma(table2, 5)) == 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563);
+ assert(zimags(zsuma(table2, 5)) == 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563 + 9.186784563);
+
+ return 0;
+}
+
+static int zrowsumaTest(void) {
+ int i = 0;
+ doubleComplex in[12];
+ doubleComplex rowSummedIn_4_3[3];
+ doubleComplex rowSummedIn_3_4[4];
+ doubleComplex rowSummedIn_6_2[2];
+ doubleComplex rowSummedIn_2_6[6];
+ doubleComplex rowSummedIn_1_12[12];
+ doubleComplex rowSummedIn_12_1[1];
+
+ printf("\n>>>> Row Sum Double Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = DoubleComplex((double) i / 10.0, (11.0 - (double) i) / 10.0);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 0.6+3.8i 2.2+2.2i 3.8+0.6i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ zrowsuma(in, 4, 3, rowSummedIn_4_3);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("rowSummedIn_4_3[%d] = %e + %ei\n", i, zreals(rowSummedIn_4_3[i]), zimags(rowSummedIn_4_3[i]));
+ }
+ assert(fabs(zreals(rowSummedIn_4_3[0]) -0.6) < 2e-16);
+ assert(zimags(rowSummedIn_4_3[0]) == 3.8);
+ assert(zreals(rowSummedIn_4_3[1]) == 2.2);
+ assert(fabs(zimags(rowSummedIn_4_3[1]) - 2.2) < 1e-15);
+ assert(fabs(zreals(rowSummedIn_4_3[2]) - 3.8) < 1e-15);
+ assert(zimags(rowSummedIn_4_3[2]) == 0.6);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 0.3+3.i 1.2+2.1i 2.1+1.2i 3.+0.3i]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ zrowsuma(in, 3, 4, rowSummedIn_3_4);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("rowSummedIn_3_4[%d] = %e + %ei\n", i, zreals(rowSummedIn_3_4[i]), zimags(rowSummedIn_3_4[i]));
+ }
+ assert(fabs(zreals(rowSummedIn_3_4[0]) - 0.3) < 1e-16);
+ assert(zimags(rowSummedIn_3_4[0]) == 3.0);
+ assert(zreals(rowSummedIn_3_4[1]) == 1.2 && zimags(rowSummedIn_3_4[1]) == 2.1);
+ assert(fabs(zreals(rowSummedIn_3_4[2]) - 2.1) < 1e-15);
+ assert(zimags(rowSummedIn_3_4[2]) == 1.2);
+ assert(zreals(rowSummedIn_3_4[3]) == 3.0);
+ assert(fabs(zimags(rowSummedIn_3_4[3]) - 0.3) < 1e-16);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 1.5+5.1i 5.1+1.5i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ zrowsuma(in, 6, 2, rowSummedIn_6_2);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("rowSummedIn_6_2[%d] = %e + %ei\n", i, zreals(rowSummedIn_6_2[i]), zimags(rowSummedIn_6_2[i]));
+ }
+ assert(zreals(rowSummedIn_6_2[0]) == 1.5 && zimags(rowSummedIn_6_2[0]) == 5.1);
+ assert(zreals(rowSummedIn_6_2[1]) == 5.1 && zimags(rowSummedIn_6_2[1]) == 1.5);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 0.1+2.1i 0.5+1.7i 0.9+1.3i 1.3+0.9i 1.7+0.5i 2.1+0.1i ]
+ */
+ zrowsuma(in, 2, 6, rowSummedIn_2_6);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("rowSummedIn_2_6[%d] = %e + %ei\n", i, zreals(rowSummedIn_2_6[i]), zimags(rowSummedIn_2_6[i]));
+ }
+ assert(zreals(rowSummedIn_2_6[0]) == 0.1 && zimags(rowSummedIn_2_6[0]) == 2.1);
+ assert(zreals(rowSummedIn_2_6[1]) == 0.5);
+ assert(fabs(zimags(rowSummedIn_2_6[1]) - 1.7) < 3e-16);
+ assert(zreals(rowSummedIn_2_6[2]) == 0.9);
+ assert(fabs(zimags(rowSummedIn_2_6[2]) - 1.3) < 3e-16);
+ assert(fabs(zreals(rowSummedIn_2_6[3]) - 1.3) < 3e-16);
+ assert(zimags(rowSummedIn_2_6[3]) == 0.9);
+ assert(fabs(zreals(rowSummedIn_2_6[4]) - 1.7) < 3e-16);
+ assert(zimags(rowSummedIn_2_6[4]) == 0.5);
+ assert(zreals(rowSummedIn_2_6[5]) == 2.1 && zimags(rowSummedIn_2_6[5]) == 0.1);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ */
+ zrowsuma(in, 1, 12, rowSummedIn_1_12);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("rowSummedIn_1_12[%d] = %e + %ei\n", i, zreals(rowSummedIn_1_12[i]), zimags(rowSummedIn_1_12[i]));
+ assert(zreals(rowSummedIn_1_12[i]) == zreals(in[i]) && zimags(rowSummedIn_1_12[i]) == zimags(in[i]));
+ }
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 6.6+6.6i ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ zrowsuma(in, 12, 1, rowSummedIn_12_1);
+ printf("rowSummedIn_12_1[%d] = %e + %ei\n", 0, zreals(rowSummedIn_12_1[0]), zimags(rowSummedIn_12_1[0]));
+ assert(zreals(rowSummedIn_12_1[0]) == 6.6 && zimags(rowSummedIn_12_1[0]) == 6.6);
+
+ return 0;
+}
+
+static int zcolumnsumaTest(void) {
+ int i = 0;
+ doubleComplex in[12];
+ doubleComplex columnSummedIn_4_3[4];
+ doubleComplex columnSummedIn_3_4[3];
+ doubleComplex columnSummedIn_6_2[6];
+ doubleComplex columnSummedIn_2_6[2];
+ doubleComplex columnSummedIn_1_12[1];
+ doubleComplex columnSummedIn_12_1[12];
+
+ printf("\n>>>> ColumnSum Double Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = DoubleComplex((double) i / 10.0, (11.0 - (double) i) / 10.0);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 1.2+2.1i 1.5+1.8i 1.8+1.5i 2.1+1.2i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ zcolumnsuma(in, 4, 3, columnSummedIn_4_3);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("columnSummedIn_4_3[%d] = %e + %ei\n", i, zreals(columnSummedIn_4_3[i]), zimags(columnSummedIn_4_3[i]));
+ }
+ assert(fabs(zreals(columnSummedIn_4_3[0]) - 1.2) < 1e-15);
+ assert(zimags(columnSummedIn_4_3[0]) == 2.1);
+ assert(zreals(columnSummedIn_4_3[1]) == 1.5 && zimags(columnSummedIn_4_3[1]) == 1.8);
+ assert(zreals(columnSummedIn_4_3[2]) == 1.8 && zimags(columnSummedIn_4_3[2]) == 1.5);
+ assert(zreals(columnSummedIn_4_3[3]) == 2.1);
+ assert(fabs(zimags(columnSummedIn_4_3[3]) - 1.2) < 1e-15);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 1.8+2.6i 2.2+2.2i 2.6+1.8i ]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ zcolumnsuma(in, 3, 4, columnSummedIn_3_4);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("columnSummedIn_3_4[%d] = %e + %ei\n", i, zreals(columnSummedIn_3_4[i]), zimags(columnSummedIn_3_4[i]));
+ }
+ assert(fabs(zreals(columnSummedIn_3_4[0]) - 1.8) < 1e-15);
+ assert(fabs(zimags(columnSummedIn_3_4[0]) - 2.6) < 1e-15);
+ assert(zreals(columnSummedIn_3_4[1]) == 2.2 && zimags(columnSummedIn_3_4[1]) == 2.2);
+ assert(zreals(columnSummedIn_3_4[2]) == 2.6 && zimags(columnSummedIn_3_4[2]) == 1.8);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 0.6+1.6i 0.8+1.4i 1+1.2i 1.2+i 1.4+0.8i 1.6+0.6i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ zcolumnsuma(in, 6, 2, columnSummedIn_6_2);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("columnSummedIn_6_2[%d] = %e + %ei\n", i, zreals(columnSummedIn_6_2[i]), zimags(columnSummedIn_6_2[i]));
+ }
+ assert(zreals(columnSummedIn_6_2[0]) == 0.6 && zimags(columnSummedIn_6_2[0]) == 1.6);
+ assert(fabs(zreals(columnSummedIn_6_2[1]) - 0.8) < 1e-15);
+ assert(zimags(columnSummedIn_6_2[1]) == 1.4);
+ assert(zreals(columnSummedIn_6_2[2]) == 1.0 && zimags(columnSummedIn_6_2[2]) == 1.2);
+ assert(zreals(columnSummedIn_6_2[3]) == 1.2 && zimags(columnSummedIn_6_2[3]) == 1.0);
+ assert(zreals(columnSummedIn_6_2[4]) == 1.4);
+ assert(fabs(zimags(columnSummedIn_6_2[4]) - 0.8) < 1e-15);
+ assert(zreals(columnSummedIn_6_2[5]) == 1.6 && zimags(columnSummedIn_6_2[5]) == 0.6);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 3+3.6i 3.6+3i ]
+ */
+ zcolumnsuma(in, 2, 6, columnSummedIn_2_6);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("columnSummedIn_2_6[%d] = %e + %ei\n", i, zreals(columnSummedIn_2_6[i]), zimags(columnSummedIn_2_6[i]));
+ }
+ assert(zreals(columnSummedIn_2_6[0]) == 3.0 && zimags(columnSummedIn_2_6[0]) == 3.6);
+ assert(zreals(columnSummedIn_2_6[1]) == 3.6 && zimags(columnSummedIn_2_6[1]) == 3.0);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 6.6+6.6i ]
+ */
+ zcolumnsuma(in, 1, 12, columnSummedIn_1_12);
+ printf("columnSummedIn_1_12[%d] = %e + %ei\n", 0, zreals(columnSummedIn_1_12[0]), zimags(columnSummedIn_1_12[0]));
+ assert(zreals(columnSummedIn_1_12[0]) == 6.6 && zimags(columnSummedIn_1_12[0]) == 6.6);
+
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ zcolumnsuma(in, 12, 1, columnSummedIn_12_1);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("columnSummedIn_12_1[%d] = %e + %ei\n", i, zreals(columnSummedIn_12_1[i]), zimags(columnSummedIn_12_1[i]));
+ assert(zreals(columnSummedIn_12_1[i]) == zreals(in[i]) && zimags(columnSummedIn_12_1[i]) == zimags(in[i]));
+ }
+
+ return 0;
+}
+
+static int testSum(void) {
+
+ dsumsTest();
+ dsumaTest();
+ drowsumaTest();
+ dcolumnsumaTest();
+ zsumsTest();
+ zsumaTest();
+ zrowsumaTest();
+ zcolumnsumaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testSum() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/testFloatSum.c b/2.3-1/src/c/statisticsFunctions/sum/testFloatSum.c
new file mode 100644
index 00000000..090075c7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/testFloatSum.c
@@ -0,0 +1,481 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "sum.h"
+
+/* #define LOCAL_DEBUG */
+
+static int ssumsTest(void) {
+ float value1 = 3.0f;
+ float value2 = 1.123456789f;
+
+ printf("\n>>>> Sum Float Scalar Test\n");
+ assert(ssums(value1) == 3.0f);
+ assert(ssums(value2) == 1.123456789f);
+
+ return 0;
+}
+
+static int ssumaTest(void) {
+ float table1[3] = {3.0f, 3.0f, 3.0f};
+ float table2[5] = {9.186784563f,
+ 9.186784563f,
+ 9.186784563f,
+ 9.186784563f,
+ 9.186784563f};
+
+ printf("\n>>>> Sum Float Array Test\n");
+ assert(ssuma(table1, 3) == 9.0f);
+ assert((ssuma(table2, 5) - (9.186784f + 9.186784f + 9.186784f + 9.186784f + 9.186784f)) / ssuma(table2, 5) < 1e-6);
+ return 0;
+}
+
+static int scolumnsumaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float columnSummedTable1_3_3[3] = {0};
+ float columnSummedTable1_1_9[1] = {0};
+ float columnSummedTable1_9_1[9] = {0};
+ float columnSummedTable2_2_5[2] = {0};
+ float columnSummedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Sum Float Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 6 15 24 ]
+ [ 7 8 9 ]
+ */
+ scolumnsuma(table1, 3, 3,columnSummedTable1_3_3);
+ assert(columnSummedTable1_3_3[0] == 6.0f);
+ assert(columnSummedTable1_3_3[1] == 15.0f);
+ assert(columnSummedTable1_3_3[2] == 24.0f);
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ scolumnsuma(table1, 1, 9,columnSummedTable1_1_9);
+ assert(columnSummedTable1_1_9[0] == 45.0f);
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ scolumnsuma(table1, 9, 1,columnSummedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnSummedTable1_9_1[%d] = %e\n", i, columnSummedTable1_9_1[i]);
+ assert(columnSummedTable1_9_1[i] == table1[i]);
+ }
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 25 30 ]
+ */
+ scolumnsuma(table2, 2, 5,columnSummedTable2_2_5);
+ assert(columnSummedTable2_2_5[0] == 25.0f);
+ assert(columnSummedTable2_2_5[1] == 30.0f);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnSummedTable2_2_5[%d] = %e\n", i, columnSummedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 7 9 11 13 15 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ scolumnsuma(table2, 5, 2,columnSummedTable2_5_2);
+ assert(columnSummedTable2_5_2[0] == 7.0f);
+ assert(columnSummedTable2_5_2[1] == 9.0f);
+ assert(columnSummedTable2_5_2[2] == 11.0f);
+ assert(columnSummedTable2_5_2[3] == 13.0f);
+ assert(columnSummedTable2_5_2[4] == 15.0f);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnSummedTable2_5_2[%d] = %e\n", i, columnSummedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int srowsumaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float rowSummedTable1_3_3[3] = {0};
+ float rowSummedTable1_1_9[9] = {0};
+ float rowSummedTable1_9_1[1] = {0};
+ float rowSummedTable2_2_5[5] = {0};
+ float rowSummedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Sum Float Array Test\n");
+ /*
+ [ 1 2 3 ]
+ [ 4 5 6 ] => [ 12 15 18 ]
+ [ 7 8 9 ]
+ */
+ srowsuma(table1, 3, 3,rowSummedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowSummedTable1_3_3[%d] = %e\n", i, rowSummedTable1_3_3[i]);
+ }
+ assert(rowSummedTable1_3_3[0] == 12.0f);
+ assert(rowSummedTable1_3_3[1] == 15.0f);
+ assert(rowSummedTable1_3_3[2] == 18.0f);
+
+ /*
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+ */
+ srowsuma(table1, 1, 9,rowSummedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowSummedTable1_1_9[%d] = %e\n", i, rowSummedTable1_1_9[i]);
+ assert(rowSummedTable1_1_9[i] == table1[i]);
+ }
+
+ /*
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+ */
+ srowsuma(table1, 9, 1,rowSummedTable1_9_1);
+ assert(rowSummedTable1_9_1[0] == 45.0f);
+
+ /*
+ [ 1 3 5 7 9 ]
+ [ 2 4 6 8 10 ] => [ 3 7 11 15 19 ]
+ */
+ srowsuma(table2, 2, 5,rowSummedTable2_2_5);
+ assert(rowSummedTable2_2_5[0] == 3.0f);
+ assert(rowSummedTable2_2_5[1] == 7.0f);
+ assert(rowSummedTable2_2_5[2] == 11.0f);
+ assert(rowSummedTable2_2_5[3] == 15.0f);
+ assert(rowSummedTable2_2_5[4] == 19.0f);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowSummedTable2_2_5[%d] = %e\n", i, rowSummedTable2_2_5[i]);
+ }
+
+ /*
+ [ 1 6 ]
+ [ 2 7 ] => [ 15 40 ]
+ [ 3 8 ]
+ [ 4 9 ]
+ [ 5 10 ]
+ */
+ srowsuma(table2, 5, 2,rowSummedTable2_5_2);
+ assert(rowSummedTable2_5_2[0] == 15.0f);
+ assert(rowSummedTable2_5_2[1] == 40.0f);
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("rowSummedTable2_5_2[%d] = %e\n", i, rowSummedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+
+static int csumsTest(void) {
+ floatComplex value1 = FloatComplex(3.0f, 3.0f);
+ floatComplex value2 = FloatComplex(1.123456789f, 1.123456789f);
+
+ printf("\n>>>> Sum Float Complex Scalar Test\n");
+ assert(creals(csums(value1)) == 3.0f);
+ assert(cimags(csums(value1)) == 3.0f);
+ assert(creals(csums(value2)) == 1.123456789f);
+ assert(cimags(csums(value2)) == 1.123456789f);
+ return 0;
+}
+
+static int csumaTest(void) {
+ floatComplex value1 = FloatComplex(3.0f, 3.0f);
+ floatComplex table1[3];
+ floatComplex value2 = FloatComplex(9.186784563f,9.186784563f);
+ floatComplex table2[5];
+
+ printf("\n>>>> Sum Float Complex Array Test\n");
+ table1[0] = value1;
+ table1[1] = value1;
+ table1[2] = value1;
+
+ table2[0] = value2;
+ table2[1] = value2;
+ table2[2] = value2;
+ table2[3] = value2;
+ table2[4] = value2;
+
+#ifdef LOCAL_DEBUG
+ printf("--------\n");
+ printf("%e\n", cimags(csuma(table1, 3)));
+ printf("%e\n", creals(csuma(table2, 5)));
+ printf("%e\n", cimags(csuma(table2, 5)));
+ printf("%e\n", creals(csuma(table2, 5)));
+ printf("%e\n", cimags(csuma(table2, 5)));
+ printf("--------\n");
+#endif
+ assert(creals(csuma(table1, 3)) == 9.0f);
+ assert(cimags(csuma(table1, 3)) == 9.0f);
+ assert(creals(csuma(table2, 5)) == 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f);
+ assert(cimags(csuma(table2, 5)) == 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f + 9.186784563f);
+
+ return 0;
+}
+
+static int crowsumaTest(void) {
+ int i = 0;
+ floatComplex in[12];
+ floatComplex rowSummedIn_4_3[3];
+ floatComplex rowSummedIn_3_4[4];
+ floatComplex rowSummedIn_6_2[2];
+ floatComplex rowSummedIn_2_6[6];
+ floatComplex rowSummedIn_1_12[12];
+ floatComplex rowSummedIn_12_1[1];
+
+ printf("\n>>>> Row Sum Float Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = FloatComplex((float) i / 10.0f, (11.0f - (float) i) / 10.0f);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 0.6+3.8i 2.2+2.2i 3.8+0.6i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ crowsuma(in, 4, 3, rowSummedIn_4_3);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("rowSummedIn_4_3[%d] = %e + %ei\n", i, creals(rowSummedIn_4_3[i]), cimags(rowSummedIn_4_3[i]));
+ }
+ assert(creals(rowSummedIn_4_3[0]) == 0.6f && cimags(rowSummedIn_4_3[0]) == 3.8f);
+ assert(creals(rowSummedIn_4_3[1]) == 2.2f && cimags(rowSummedIn_4_3[1]) == 2.2f);
+ assert(fabs(creals(rowSummedIn_4_3[2]) - 3.8f) < 1e-06);
+ assert(cimags(rowSummedIn_4_3[2]) == 0.6f);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 0.3+3.i 1.2+2.1i 2.1+1.2i 3.+0.3i]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ crowsuma(in, 3, 4, rowSummedIn_3_4);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("rowSummedIn_3_4[%d] = %e + %ei\n", i, creals(rowSummedIn_3_4[i]), cimags(rowSummedIn_3_4[i]));
+ }
+ assert(creals(rowSummedIn_3_4[0]) == 0.3f && cimags(rowSummedIn_3_4[0]) == 3.0f);
+ assert(creals(rowSummedIn_3_4[1]) == 1.2f && cimags(rowSummedIn_3_4[1]) == 2.1f);
+ assert(creals(rowSummedIn_3_4[2]) == 2.1f && cimags(rowSummedIn_3_4[2]) == 1.2f);
+ assert(creals(rowSummedIn_3_4[3]) == 3.0f && cimags(rowSummedIn_3_4[3]) == 0.3f);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 1.5+5.1i 5.1+1.5i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ crowsuma(in, 6, 2, rowSummedIn_6_2);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("rowSummedIn_6_2[%d] = %e + %ei\n", i, creals(rowSummedIn_6_2[i]), cimags(rowSummedIn_6_2[i]));
+ }
+ assert(creals(rowSummedIn_6_2[0]) == 1.5f && cimags(rowSummedIn_6_2[0]) == 5.1f);
+ assert(creals(rowSummedIn_6_2[1]) == 5.1f);
+ assert(fabs(cimags(rowSummedIn_6_2[1]) - 1.5f) < 1e-06);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 0.1+2.1i 0.5+1.7i 0.9+1.3i 1.3+0.9i 1.7+0.5i 2.1+0.1i ]
+ */
+ crowsuma(in, 2, 6, rowSummedIn_2_6);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("rowSummedIn_2_6[%d] = %e + %ei\n", i, creals(rowSummedIn_2_6[i]), cimags(rowSummedIn_2_6[i]));
+ }
+ assert(creals(rowSummedIn_2_6[0]) == 0.1f && cimags(rowSummedIn_2_6[0]) == 2.1f);
+ assert(creals(rowSummedIn_2_6[1]) == 0.5f && cimags(rowSummedIn_2_6[1]) == 1.7f);
+ assert(creals(rowSummedIn_2_6[2]) == 0.9f && cimags(rowSummedIn_2_6[2]) == 1.3f);
+ assert(creals(rowSummedIn_2_6[3]) == 1.3f && cimags(rowSummedIn_2_6[3]) == 0.9f);
+ assert(creals(rowSummedIn_2_6[4]) == 1.7f && cimags(rowSummedIn_2_6[4]) == 0.5f);
+ assert(creals(rowSummedIn_2_6[5]) == 2.1f && cimags(rowSummedIn_2_6[5]) == 0.1f);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ */
+ crowsuma(in, 1, 12, rowSummedIn_1_12);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("rowSummedIn_1_12[%d] = %e + %ei\n", i, creals(rowSummedIn_1_12[i]), cimags(rowSummedIn_1_12[i]));
+ assert(creals(rowSummedIn_1_12[i]) == creals(in[i]) && cimags(rowSummedIn_1_12[i]) == cimags(in[i]));
+ }
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 6.6+6.6i ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ crowsuma(in, 12, 1, rowSummedIn_12_1);
+ printf("rowSummedIn_12_1[%d] = %e + %ei\n", 0, creals(rowSummedIn_12_1[0]), cimags(rowSummedIn_12_1[0]));
+ assert(creals(rowSummedIn_12_1[0]) == 6.6f && cimags(rowSummedIn_12_1[0]) == 6.6f);
+
+ return 0;
+}
+
+static int ccolumnsumaTest(void) {
+ int i = 0;
+ floatComplex in[12];
+ floatComplex columnSummedIn_4_3[4];
+ floatComplex columnSummedIn_3_4[3];
+ floatComplex columnSummedIn_6_2[6];
+ floatComplex columnSummedIn_2_6[2];
+ floatComplex columnSummedIn_1_12[1];
+ floatComplex columnSummedIn_12_1[12];
+
+ printf("\n>>>> ColumnSum Float Complex Array Test\n");
+ /* Init input var */
+ for (i = 0 ; i < 12 ; ++i)
+ {
+ in[i] = FloatComplex((float) i / 10.0f, (11.0f - (float) i) / 10.0f);
+ }
+
+ /*
+ [ 1.1i 0.4+0.7i 0.8+0.3i ]
+ [ 0.1+i 0.5+0.6i 0.9+0.2i ] => [ 1.2+2.1i 1.5+1.8i 1.8+1.5i 2.1+1.2i ]
+ [ 0.2+0.9i 0.6+0.5i 1+0.1i ]
+ [ 0.3+0.8i 0.7+0.4i 1.1 ]
+ */
+ ccolumnsuma(in, 4, 3, columnSummedIn_4_3);
+ for (i = 0 ; i < 4 ; ++i) {
+ printf("columnSummedIn_4_3[%d] = %e + %ei\n", i, creals(columnSummedIn_4_3[i]), cimags(columnSummedIn_4_3[i]));
+ }
+ assert(creals(columnSummedIn_4_3[0]) == 1.2f && cimags(columnSummedIn_4_3[0]) == 2.1f);
+ assert(creals(columnSummedIn_4_3[1]) == 1.5f);
+ assert(fabs(cimags(columnSummedIn_4_3[1]) - 1.8f) < 1e-06);
+ assert(creals(columnSummedIn_4_3[2]) == 1.8f && cimags(columnSummedIn_4_3[2]) == 1.5f);
+ assert(creals(columnSummedIn_4_3[3]) == 2.1f && cimags(columnSummedIn_4_3[3]) == 1.2f);
+
+ /*
+ [ 1.1i 0.3+0.8i 0.6+0.5i 0.9+0.2i ]
+ [ 0.1+i 0.4+0.7i 0.7+0.4i 1+0.1i ] => [ 1.8+2.6i 2.2+2.2i 2.6+1.8i ]
+ [ 0.2+0.9i 0.5+0.6i 0.8+0.3i 1.1 ]
+ */
+ ccolumnsuma(in, 3, 4, columnSummedIn_3_4);
+ for (i = 0 ; i < 3 ; ++i) {
+ printf("columnSummedIn_3_4[%d] = %e + %ei\n", i, creals(columnSummedIn_3_4[i]), cimags(columnSummedIn_3_4[i]));
+ }
+ assert(creals(columnSummedIn_3_4[0]) == 1.8f);
+ assert(fabs(cimags(columnSummedIn_3_4[0]) - 2.6f) < 1e-06);
+ assert(creals(columnSummedIn_3_4[1]) == 2.2f && cimags(columnSummedIn_3_4[1]) == 2.2f);
+ assert(creals(columnSummedIn_3_4[2]) == 2.6f && cimags(columnSummedIn_3_4[2]) == 1.8f);
+
+ /*
+ [ 1.1i 0.6+0.5i ]
+ [ 0.1+i 0.7+0.4i ]
+ [ 0.2+0.9i 0.8+0.3i ] => [ 0.6+1.6i 0.8+1.4i 1+1.2i 1.2+i 1.4+0.8i 1.6+0.6i ]
+ [ 0.3+0.8i 0.9+0.2i ]
+ [ 0.4+0.7i 1+0.1i ]
+ [ 0.5+0.6i 1.1 ]
+ */
+ ccolumnsuma(in, 6, 2, columnSummedIn_6_2);
+ for (i = 0 ; i < 6 ; ++i) {
+ printf("columnSummedIn_6_2[%d] = %e + %ei\n", i, creals(columnSummedIn_6_2[i]), cimags(columnSummedIn_6_2[i]));
+ }
+ assert(creals(columnSummedIn_6_2[0]) == 0.6f && cimags(columnSummedIn_6_2[0]) == 1.6f);
+ assert(creals(columnSummedIn_6_2[1]) == 0.8f && cimags(columnSummedIn_6_2[1]) == 1.4f);
+ assert(creals(columnSummedIn_6_2[2]) == 1.0f && cimags(columnSummedIn_6_2[2]) == 1.2f);
+ assert(creals(columnSummedIn_6_2[3]) == 1.2f && cimags(columnSummedIn_6_2[3]) == 1.0f);
+ assert(creals(columnSummedIn_6_2[4]) == 1.4f && cimags(columnSummedIn_6_2[4]) == 0.8f);
+ assert(creals(columnSummedIn_6_2[5]) == 1.6f && cimags(columnSummedIn_6_2[5]) == 0.6f);
+
+ /*
+ [ 1.1i 0.2+0.9i 0.4+0.7i 0.6+0.5i 0.8+0.3i 1+0.1i ]
+ [ 0.1+i 0.3+0.8i 0.5+0.6i 0.7+0.4i 0.9+0.2i 1.1 ] => [ 3+3.6i 3.6+3i ]
+ */
+ ccolumnsuma(in, 2, 6, columnSummedIn_2_6);
+ for (i = 0 ; i < 2 ; ++i) {
+ printf("columnSummedIn_2_6[%d] = %e + %ei\n", i, creals(columnSummedIn_2_6[i]), cimags(columnSummedIn_2_6[i]));
+ }
+ assert(creals(columnSummedIn_2_6[0]) == 3.0f && cimags(columnSummedIn_2_6[0]) == 3.6f);
+ assert(creals(columnSummedIn_2_6[1]) == 3.6f);
+ assert(fabs(cimags(columnSummedIn_2_6[1]) -3.0f) < 1e-06);
+
+ /*
+ [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ =>
+ [ 6.6+6.6i ]
+ */
+ ccolumnsuma(in, 1, 12, columnSummedIn_1_12);
+ printf("columnSummedIn_1_12[%d] = %e + %ei\n", 0, creals(columnSummedIn_1_12[0]), cimags(columnSummedIn_1_12[0]));
+ assert(creals(columnSummedIn_1_12[0]) == 6.6f && cimags(columnSummedIn_1_12[0]) == 6.6f);
+
+
+ /*
+ [ 1.1i ]
+ [ 0.1+i ]
+ [ 0.2+0.9i ]
+ [ 0.3+0.8i ]
+ [ 0.4+0.7i ]
+ [ 0.5+0.6i ]
+ [ 0.6+0.5i ] => [ 1.1i 0.1+i 0.2+0.9i 0.3+0.8i 0.4+0.7i 0.5+0.6i 0.6+0.5i 0.7+0.4i 0.8+0.3i 0.9+0.2i 1+0.1i 1.1 ]
+ [ 0.7+0.4i ]
+ [ 0.8+0.3i ]
+ [ 0.9+0.2i ]
+ [ 1+0.1i ]
+ [ 1.1 ]
+ */
+ ccolumnsuma(in, 12, 1, columnSummedIn_12_1);
+ for (i = 0 ; i < 12 ; ++i) {
+ printf("columnSummedIn_12_1[%d] = %e + %ei\n", i, creals(columnSummedIn_12_1[i]), cimags(columnSummedIn_12_1[i]));
+ assert(creals(columnSummedIn_12_1[i]) == creals(in[i]) && cimags(columnSummedIn_12_1[i]) == cimags(in[i]));
+ }
+
+ return 0;
+}
+
+static int testSum(void) {
+
+ ssumsTest();
+ ssumaTest();
+ srowsumaTest();
+ scolumnsumaTest();
+ csumsTest();
+ csumaTest();
+ crowsumaTest();
+ ccolumnsumaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testSum() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj b/2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj
new file mode 100644
index 00000000..d82ed7c0
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F2A81CDC-2581-481F-B63D-3D2079B264C2}</ProjectGuid>
+ <RootNamespace>testDoubleSum</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSum.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj.filters
new file mode 100644
index 00000000..0bb90bbf
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/test_DoubleSum/testDoubleSum.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleSum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj b/2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj
new file mode 100644
index 00000000..a8acdf08
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{450C8334-BA46-43DB-81BA-7BEDBB346126}</ProjectGuid>
+ <RootNamespace>testFloatSum</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSum.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj.filters
new file mode 100644
index 00000000..56ce3b30
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/test_FloatSum/testFloatSum.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatSum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/sum/u16columnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/u16columnsuma.c
new file mode 100644
index 00000000..82b07757
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/u16columnsuma.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#include "sum.h"
+
+void u16columnsuma(uint16 *in, int lines, int columns, uint16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (uint16)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (uint16)u16adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/u16rowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/u16rowsuma.c
new file mode 100644
index 00000000..535e302f
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/u16rowsuma.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sum.h"
+
+void u16rowsuma(uint16 *in, int lines, int columns, uint16 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (uint16)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (uint16)u16adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/u16suma.c b/2.3-1/src/c/statisticsFunctions/sum/u16suma.c
new file mode 100644
index 00000000..5e5620c1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/u16suma.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "sum.h"
+
+uint16 u16suma(uint16 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+ uint16 accumulate = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = u16adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/u8columnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/u8columnsuma.c
new file mode 100644
index 00000000..f3e30411
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/u8columnsuma.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void u8columnsuma(uint8 *in, int lines, int columns, uint8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = (uint8)in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = (uint8)u8adds(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/u8rowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/u8rowsuma.c
new file mode 100644
index 00000000..53a49442
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/u8rowsuma.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+void u8rowsuma(uint8 *in, int lines, int columns, uint8 * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = (uint8)in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = (uint8)u8adds( out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/u8suma.c b/2.3-1/src/c/statisticsFunctions/sum/u8suma.c
new file mode 100644
index 00000000..e5febef1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/u8suma.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "sum.h"
+
+uint8 u8suma(uint8 *in, int size) {
+ //floatComplex accumulate = FloatComplex(0.0f, 0.0f);
+ int i = 0;
+ uint8 accumulate = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = u8adds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/zcolumnsuma.c b/2.3-1/src/c/statisticsFunctions/sum/zcolumnsuma.c
new file mode 100644
index 00000000..93e97536
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/zcolumnsuma.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void zcolumnsuma(doubleComplex *in, int lines, int columns, doubleComplex * out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < lines; ++i)
+ {
+ out[i] = in[i];
+ }
+ /*
+ ** Then accumulate in each row.
+ */
+ for (i = lines ; i < lines * columns ; ++i)
+ {
+ out[i % lines] = zadds(out[i % lines] , in[i]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/zrowsuma.c b/2.3-1/src/c/statisticsFunctions/sum/zrowsuma.c
new file mode 100644
index 00000000..abb62b57
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/zrowsuma.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+void zrowsuma(doubleComplex *in, int lines, int columns, doubleComplex* out) {
+ int i = 0;
+
+ /*
+ ** First assign first row, just in case
+ ** out contains non-zero's elements.
+ */
+ for (i = 0 ; i < columns; ++i)
+ {
+ out[i] = in[i * lines];
+ }
+ /*
+ ** Then accumulate in each column.
+ */
+ for (i = 1 ; i <= (lines - 1) * columns ; ++i)
+ {
+ out[(i - 1) % columns] = zadds(out[(i - 1) % columns] ,
+ in[((i - 1) % columns) * lines + 1 + (i - 1) / columns]);
+ }
+}
diff --git a/2.3-1/src/c/statisticsFunctions/sum/zsuma.c b/2.3-1/src/c/statisticsFunctions/sum/zsuma.c
new file mode 100644
index 00000000..e566c95a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/sum/zsuma.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "sum.h"
+
+doubleComplex zsuma(doubleComplex *in, int size) {
+ doubleComplex accumulate = DoubleComplex(0.0f, 0.0f);
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ accumulate = zadds(accumulate, in[i]);
+ }
+ return accumulate;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/Makefile.am b/2.3-1/src/c/statisticsFunctions/variance/Makefile.am
new file mode 100644
index 00000000..d6fa70e8
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/Makefile.am
@@ -0,0 +1,89 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libVariance_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libVariance.la
+
+libVariance_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = svariancea.c \
+ scolumnvariancea.c \
+ dvariancea.c \
+ srowvariancea.c \
+ drowvariancea.c \
+ dcolumnvariancea.c \
+ cvariancea.c \
+ crowvariancea.c \
+ ccolumnvariancea.c \
+ zvariancea.c \
+ zrowvariancea.c \
+ zcolumnvariancea.c
+
+HEAD = ../includes/variance.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/statisticsFunctions/variance/libVariance.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/mean/libMean.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatVarianceNono testDoubleVarianceNono
+
+TESTS = testFloatVarianceNono testDoubleVarianceNono
+
+#
+# -*- Variance Tests -*-
+#
+testFloatVarianceNono_SOURCES = testFloatVarianceNono.c
+testFloatVarianceNono_CFLAGS = $(check_INCLUDES)
+testFloatVarianceNono_LDADD = $(check_LDADD)
+
+testDoubleVarianceNono_SOURCES =testDoubleVarianceNono.c
+testDoubleVarianceNono_CFLAGS = $(check_INCLUDES)
+testDoubleVarianceNono_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/variance/Makefile.in b/2.3-1/src/c/statisticsFunctions/variance/Makefile.in
new file mode 100644
index 00000000..93202866
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/Makefile.in
@@ -0,0 +1,884 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatVarianceNono$(EXEEXT) \
+ testDoubleVarianceNono$(EXEEXT)
+TESTS = testFloatVarianceNono$(EXEEXT) testDoubleVarianceNono$(EXEEXT)
+subdir = src/c/statisticsFunctions/variance
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libVariance_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libVariance_la-svariancea.lo \
+ libVariance_la-scolumnvariancea.lo \
+ libVariance_la-dvariancea.lo libVariance_la-srowvariancea.lo \
+ libVariance_la-drowvariancea.lo \
+ libVariance_la-dcolumnvariancea.lo \
+ libVariance_la-cvariancea.lo libVariance_la-crowvariancea.lo \
+ libVariance_la-ccolumnvariancea.lo \
+ libVariance_la-zvariancea.lo libVariance_la-zrowvariancea.lo \
+ libVariance_la-zcolumnvariancea.lo
+am_libVariance_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libVariance_la_OBJECTS = $(am_libVariance_la_OBJECTS)
+libVariance_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libVariance_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleVarianceNono_OBJECTS = \
+ testDoubleVarianceNono-testDoubleVarianceNono.$(OBJEXT)
+testDoubleVarianceNono_OBJECTS = $(am_testDoubleVarianceNono_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/statisticsFunctions/variance/libVariance.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/mean/libMean.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la
+testDoubleVarianceNono_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleVarianceNono_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleVarianceNono_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatVarianceNono_OBJECTS = \
+ testFloatVarianceNono-testFloatVarianceNono.$(OBJEXT)
+testFloatVarianceNono_OBJECTS = $(am_testFloatVarianceNono_OBJECTS)
+testFloatVarianceNono_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatVarianceNono_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatVarianceNono_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libVariance_la_SOURCES) $(testDoubleVarianceNono_SOURCES) \
+ $(testFloatVarianceNono_SOURCES)
+DIST_SOURCES = $(libVariance_la_SOURCES) \
+ $(testDoubleVarianceNono_SOURCES) \
+ $(testFloatVarianceNono_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libVariance_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libVariance.la
+libVariance_la_SOURCES = $(HEAD) $(SRC)
+SRC = svariancea.c \
+ scolumnvariancea.c \
+ dvariancea.c \
+ srowvariancea.c \
+ drowvariancea.c \
+ dcolumnvariancea.c \
+ cvariancea.c \
+ crowvariancea.c \
+ ccolumnvariancea.c \
+ zvariancea.c \
+ zrowvariancea.c \
+ zcolumnvariancea.c
+
+HEAD = ../includes/variance.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/statisticsFunctions/variance/libVariance.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/mean/libMean.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+
+#
+# -*- Variance Tests -*-
+#
+testFloatVarianceNono_SOURCES = testFloatVarianceNono.c
+testFloatVarianceNono_CFLAGS = $(check_INCLUDES)
+testFloatVarianceNono_LDADD = $(check_LDADD)
+testDoubleVarianceNono_SOURCES = testDoubleVarianceNono.c
+testDoubleVarianceNono_CFLAGS = $(check_INCLUDES)
+testDoubleVarianceNono_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/variance/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/variance/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libVariance.la: $(libVariance_la_OBJECTS) $(libVariance_la_DEPENDENCIES)
+ $(libVariance_la_LINK) -rpath $(pkglibdir) $(libVariance_la_OBJECTS) $(libVariance_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleVarianceNono$(EXEEXT): $(testDoubleVarianceNono_OBJECTS) $(testDoubleVarianceNono_DEPENDENCIES)
+ @rm -f testDoubleVarianceNono$(EXEEXT)
+ $(testDoubleVarianceNono_LINK) $(testDoubleVarianceNono_OBJECTS) $(testDoubleVarianceNono_LDADD) $(LIBS)
+testFloatVarianceNono$(EXEEXT): $(testFloatVarianceNono_OBJECTS) $(testFloatVarianceNono_DEPENDENCIES)
+ @rm -f testFloatVarianceNono$(EXEEXT)
+ $(testFloatVarianceNono_LINK) $(testFloatVarianceNono_OBJECTS) $(testFloatVarianceNono_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-ccolumnvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-crowvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-cvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-dcolumnvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-drowvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-dvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-scolumnvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-srowvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-svariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-zcolumnvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-zrowvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVariance_la-zvariancea.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libVariance_la-svariancea.lo: svariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-svariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-svariancea.Tpo -c -o libVariance_la-svariancea.lo `test -f 'svariancea.c' || echo '$(srcdir)/'`svariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-svariancea.Tpo $(DEPDIR)/libVariance_la-svariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='svariancea.c' object='libVariance_la-svariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-svariancea.lo `test -f 'svariancea.c' || echo '$(srcdir)/'`svariancea.c
+
+libVariance_la-scolumnvariancea.lo: scolumnvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-scolumnvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-scolumnvariancea.Tpo -c -o libVariance_la-scolumnvariancea.lo `test -f 'scolumnvariancea.c' || echo '$(srcdir)/'`scolumnvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-scolumnvariancea.Tpo $(DEPDIR)/libVariance_la-scolumnvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnvariancea.c' object='libVariance_la-scolumnvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-scolumnvariancea.lo `test -f 'scolumnvariancea.c' || echo '$(srcdir)/'`scolumnvariancea.c
+
+libVariance_la-dvariancea.lo: dvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-dvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-dvariancea.Tpo -c -o libVariance_la-dvariancea.lo `test -f 'dvariancea.c' || echo '$(srcdir)/'`dvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-dvariancea.Tpo $(DEPDIR)/libVariance_la-dvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dvariancea.c' object='libVariance_la-dvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-dvariancea.lo `test -f 'dvariancea.c' || echo '$(srcdir)/'`dvariancea.c
+
+libVariance_la-srowvariancea.lo: srowvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-srowvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-srowvariancea.Tpo -c -o libVariance_la-srowvariancea.lo `test -f 'srowvariancea.c' || echo '$(srcdir)/'`srowvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-srowvariancea.Tpo $(DEPDIR)/libVariance_la-srowvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowvariancea.c' object='libVariance_la-srowvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-srowvariancea.lo `test -f 'srowvariancea.c' || echo '$(srcdir)/'`srowvariancea.c
+
+libVariance_la-drowvariancea.lo: drowvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-drowvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-drowvariancea.Tpo -c -o libVariance_la-drowvariancea.lo `test -f 'drowvariancea.c' || echo '$(srcdir)/'`drowvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-drowvariancea.Tpo $(DEPDIR)/libVariance_la-drowvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowvariancea.c' object='libVariance_la-drowvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-drowvariancea.lo `test -f 'drowvariancea.c' || echo '$(srcdir)/'`drowvariancea.c
+
+libVariance_la-dcolumnvariancea.lo: dcolumnvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-dcolumnvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-dcolumnvariancea.Tpo -c -o libVariance_la-dcolumnvariancea.lo `test -f 'dcolumnvariancea.c' || echo '$(srcdir)/'`dcolumnvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-dcolumnvariancea.Tpo $(DEPDIR)/libVariance_la-dcolumnvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnvariancea.c' object='libVariance_la-dcolumnvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-dcolumnvariancea.lo `test -f 'dcolumnvariancea.c' || echo '$(srcdir)/'`dcolumnvariancea.c
+
+libVariance_la-cvariancea.lo: cvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-cvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-cvariancea.Tpo -c -o libVariance_la-cvariancea.lo `test -f 'cvariancea.c' || echo '$(srcdir)/'`cvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-cvariancea.Tpo $(DEPDIR)/libVariance_la-cvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cvariancea.c' object='libVariance_la-cvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-cvariancea.lo `test -f 'cvariancea.c' || echo '$(srcdir)/'`cvariancea.c
+
+libVariance_la-crowvariancea.lo: crowvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-crowvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-crowvariancea.Tpo -c -o libVariance_la-crowvariancea.lo `test -f 'crowvariancea.c' || echo '$(srcdir)/'`crowvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-crowvariancea.Tpo $(DEPDIR)/libVariance_la-crowvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowvariancea.c' object='libVariance_la-crowvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-crowvariancea.lo `test -f 'crowvariancea.c' || echo '$(srcdir)/'`crowvariancea.c
+
+libVariance_la-ccolumnvariancea.lo: ccolumnvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-ccolumnvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-ccolumnvariancea.Tpo -c -o libVariance_la-ccolumnvariancea.lo `test -f 'ccolumnvariancea.c' || echo '$(srcdir)/'`ccolumnvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-ccolumnvariancea.Tpo $(DEPDIR)/libVariance_la-ccolumnvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnvariancea.c' object='libVariance_la-ccolumnvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-ccolumnvariancea.lo `test -f 'ccolumnvariancea.c' || echo '$(srcdir)/'`ccolumnvariancea.c
+
+libVariance_la-zvariancea.lo: zvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-zvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-zvariancea.Tpo -c -o libVariance_la-zvariancea.lo `test -f 'zvariancea.c' || echo '$(srcdir)/'`zvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-zvariancea.Tpo $(DEPDIR)/libVariance_la-zvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zvariancea.c' object='libVariance_la-zvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-zvariancea.lo `test -f 'zvariancea.c' || echo '$(srcdir)/'`zvariancea.c
+
+libVariance_la-zrowvariancea.lo: zrowvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-zrowvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-zrowvariancea.Tpo -c -o libVariance_la-zrowvariancea.lo `test -f 'zrowvariancea.c' || echo '$(srcdir)/'`zrowvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-zrowvariancea.Tpo $(DEPDIR)/libVariance_la-zrowvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowvariancea.c' object='libVariance_la-zrowvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-zrowvariancea.lo `test -f 'zrowvariancea.c' || echo '$(srcdir)/'`zrowvariancea.c
+
+libVariance_la-zcolumnvariancea.lo: zcolumnvariancea.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -MT libVariance_la-zcolumnvariancea.lo -MD -MP -MF $(DEPDIR)/libVariance_la-zcolumnvariancea.Tpo -c -o libVariance_la-zcolumnvariancea.lo `test -f 'zcolumnvariancea.c' || echo '$(srcdir)/'`zcolumnvariancea.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libVariance_la-zcolumnvariancea.Tpo $(DEPDIR)/libVariance_la-zcolumnvariancea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnvariancea.c' object='libVariance_la-zcolumnvariancea.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libVariance_la_CFLAGS) $(CFLAGS) -c -o libVariance_la-zcolumnvariancea.lo `test -f 'zcolumnvariancea.c' || echo '$(srcdir)/'`zcolumnvariancea.c
+
+testDoubleVarianceNono-testDoubleVarianceNono.o: testDoubleVarianceNono.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVarianceNono_CFLAGS) $(CFLAGS) -MT testDoubleVarianceNono-testDoubleVarianceNono.o -MD -MP -MF $(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Tpo -c -o testDoubleVarianceNono-testDoubleVarianceNono.o `test -f 'testDoubleVarianceNono.c' || echo '$(srcdir)/'`testDoubleVarianceNono.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Tpo $(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleVarianceNono.c' object='testDoubleVarianceNono-testDoubleVarianceNono.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVarianceNono_CFLAGS) $(CFLAGS) -c -o testDoubleVarianceNono-testDoubleVarianceNono.o `test -f 'testDoubleVarianceNono.c' || echo '$(srcdir)/'`testDoubleVarianceNono.c
+
+testDoubleVarianceNono-testDoubleVarianceNono.obj: testDoubleVarianceNono.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVarianceNono_CFLAGS) $(CFLAGS) -MT testDoubleVarianceNono-testDoubleVarianceNono.obj -MD -MP -MF $(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Tpo -c -o testDoubleVarianceNono-testDoubleVarianceNono.obj `if test -f 'testDoubleVarianceNono.c'; then $(CYGPATH_W) 'testDoubleVarianceNono.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleVarianceNono.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Tpo $(DEPDIR)/testDoubleVarianceNono-testDoubleVarianceNono.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleVarianceNono.c' object='testDoubleVarianceNono-testDoubleVarianceNono.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVarianceNono_CFLAGS) $(CFLAGS) -c -o testDoubleVarianceNono-testDoubleVarianceNono.obj `if test -f 'testDoubleVarianceNono.c'; then $(CYGPATH_W) 'testDoubleVarianceNono.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleVarianceNono.c'; fi`
+
+testFloatVarianceNono-testFloatVarianceNono.o: testFloatVarianceNono.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVarianceNono_CFLAGS) $(CFLAGS) -MT testFloatVarianceNono-testFloatVarianceNono.o -MD -MP -MF $(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Tpo -c -o testFloatVarianceNono-testFloatVarianceNono.o `test -f 'testFloatVarianceNono.c' || echo '$(srcdir)/'`testFloatVarianceNono.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Tpo $(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatVarianceNono.c' object='testFloatVarianceNono-testFloatVarianceNono.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVarianceNono_CFLAGS) $(CFLAGS) -c -o testFloatVarianceNono-testFloatVarianceNono.o `test -f 'testFloatVarianceNono.c' || echo '$(srcdir)/'`testFloatVarianceNono.c
+
+testFloatVarianceNono-testFloatVarianceNono.obj: testFloatVarianceNono.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVarianceNono_CFLAGS) $(CFLAGS) -MT testFloatVarianceNono-testFloatVarianceNono.obj -MD -MP -MF $(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Tpo -c -o testFloatVarianceNono-testFloatVarianceNono.obj `if test -f 'testFloatVarianceNono.c'; then $(CYGPATH_W) 'testFloatVarianceNono.c'; else $(CYGPATH_W) '$(srcdir)/testFloatVarianceNono.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Tpo $(DEPDIR)/testFloatVarianceNono-testFloatVarianceNono.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatVarianceNono.c' object='testFloatVarianceNono-testFloatVarianceNono.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVarianceNono_CFLAGS) $(CFLAGS) -c -o testFloatVarianceNono-testFloatVarianceNono.obj `if test -f 'testFloatVarianceNono.c'; then $(CYGPATH_W) 'testFloatVarianceNono.c'; else $(CYGPATH_W) '$(srcdir)/testFloatVarianceNono.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/variance/ccolumnvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/ccolumnvariancea.c
new file mode 100644
index 00000000..8bf55260
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/ccolumnvariancea.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void ccolumnvariancea(floatComplex *in, int lines, int columns, floatComplex* out){
+
+ int i = 0 ;
+
+ floatComplex* transp = (floatComplex*) malloc ( sizeof (double) *(unsigned int) (lines*columns));
+
+
+
+ ctransposea ( in , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = cvariancea ( transp + i*columns , columns ) ;
+
+
+ free (transp);
+
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/crowvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/crowvariancea.c
new file mode 100644
index 00000000..586b942e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/crowvariancea.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void crowvariancea(floatComplex *in, int lines, int columns, floatComplex* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = cvariancea ( in + i*lines , lines) ;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/cvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/cvariancea.c
new file mode 100644
index 00000000..9d43928d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/cvariancea.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+floatComplex cvariancea(floatComplex *in, int size)
+{
+ int i = 0 ;
+
+ floatComplex sum = FloatComplex ( 0 , 0 ) ;
+ floatComplex temp = FloatComplex ( 0 , 0 ) ;
+ floatComplex variance = FloatComplex ( 0 , 0 );
+ floatComplex mean = cmeana ( in , size ) ;
+
+ for ( i = 0 ; i < size ; i++)
+ {
+ temp = cdiffs( in[i] , mean ) ;
+ sum = cadds ( sum , cpows ( temp , FloatComplex ( 2, 0) ) );
+ }
+
+ variance = crdivs (sum , FloatComplex ( (float)(size - 1),0 ));
+
+ return variance ;
+
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/dcolumnvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/dcolumnvariancea.c
new file mode 100644
index 00000000..2a8e89b0
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/dcolumnvariancea.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void dcolumnvariancea(double *in, int lines, int columns, double* out){
+
+ int i = 0 ;
+
+ double* transp = (double*) malloc ( sizeof (double) *(unsigned int) (lines*columns));
+
+
+
+ dtransposea ( in , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = dvariancea ( transp + i*columns , columns ) ;
+
+
+ free (transp);
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/drowvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/drowvariancea.c
new file mode 100644
index 00000000..15123363
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/drowvariancea.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void drowvariancea(double *in, int lines, int columns, double* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = dvariancea ( in + i*lines , lines ) ;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/dvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/dvariancea.c
new file mode 100644
index 00000000..05ed4ff3
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/dvariancea.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+double dvariancea(double *in, int size)
+{
+ int i = 0 ;
+
+ double temp = 0 ;
+ double variance = 0;
+
+ double mean = dmeana ( in, size );
+
+ for ( i = 0 ; i < size ; i++)
+ {
+ temp += dpows ( (in[i] - mean ) ,2 ) ;
+ }
+
+
+ variance = ( temp )/ ( size -1);
+
+
+ return variance ;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/scolumnvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/scolumnvariancea.c
new file mode 100644
index 00000000..2c0ec08d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/scolumnvariancea.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+
+void scolumnvariancea(float *in, int lines, int columns, float* out){
+ int i = 0 ;
+
+ float* transp = (float*) malloc ( sizeof (floatComplex) *(unsigned int) (lines*columns));
+
+
+
+ stransposea ( in , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = svariancea ( transp + i*columns , columns ) ;
+
+
+ free (transp);
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/srowvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/srowvariancea.c
new file mode 100644
index 00000000..5f6ae304
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/srowvariancea.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void srowvariancea(float *in, int lines, int columns, float* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = svariancea ( in + i*lines , lines ) ;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/svariancea.c b/2.3-1/src/c/statisticsFunctions/variance/svariancea.c
new file mode 100644
index 00000000..426fc454
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/svariancea.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+float svariancea(float *in, int size)
+{
+ int i = 0 ;
+
+ float temp = 0 ;
+ float variance = 0;
+
+ float mean = smeana ( in , size );
+
+ for ( i = 0 ; i < size ; i++)
+ {
+ temp += spows ( (in[i] - mean ) ,2 ) ;
+ }
+
+
+ variance = ( temp )/ (float)( size -1);
+
+
+ return variance ;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/svn-prop.tmp b/2.3-1/src/c/statisticsFunctions/variance/svn-prop.tmp
new file mode 100644
index 00000000..4c36708a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/svn-prop.tmp
@@ -0,0 +1,12 @@
+
+.libs
+.deps
+Makefile
+testMatrixAddition
+testMatrixSubtraction
+testMatrixMultiplication
+testMatrixDivision
+*.o
+*.lo
+*.la
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/testDoubleVariance.c b/2.3-1/src/c/statisticsFunctions/variance/testDoubleVariance.c
new file mode 100644
index 00000000..dd3481b4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/testDoubleVariance.c
@@ -0,0 +1,335 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+
+#include "variance.h"
+
+#define SINGLE 1.323312455
+#define LINES 7
+#define COLUMNS 10
+#define MATRIX {0.102326436434,0.939044147730,0.638607255649,0.059883427806,0.311199211050,\
+ 0.377510951832,0.909709410276,0.928138985299,0.855155082885,0.308869514614,\
+0.729239261709,0.127006734256,0.242402311414,0.807912770193,0.621117659844,\
+ 0.081452373881,0.088844371960,0.587072817143,0.068080495112,0.995457543526,\
+0.835322400089,0.656235548668,0.767905956600,0.706818781793,0.187699332368,\
+ 0.568810169585,0.401039466728,0.397196868435,0.483212330844,0.161224133335,\
+0.932864250615,0.719208867755,0.262409000657,0.931377100293,0.596724558622,\
+ 0.310327019077,0.350161732174,0.104841318447,0.830732351169,0.804621329065,\
+0.050784428138,0.551920620725,0.125952405389,0.083156193607,0.420623748098,\
+ 0.168616071343,0.707545555662,0.104633864947,0.465604968835,0.489758284763,\
+0.167727907188,0.760689914692,0.454900974408,0.063926273491,0.87152507063,0.978668818716,\
+ 0.135898929089,0.484713065904,0.785042577423,0.049412418623,\
+0.947593610268,0.884073690511,0.212796610314,0.654832502827,0.007690255996,\
+ 0.031808692031,0.706323316786,0.008731670678,0.270014822017,0.153652121313}
+
+
+#define MATRIXROW {0.1688249423502767021521 , 0.0729081225272336097554 , 0.0579879770921138057438 , 0.1499989757031960635469 , 0.0850863194040760717485 , 0.1085086384507867873772 , 0.0969379859569881041637 , 0.1072816602642319844252 , 0.0913638718167188862429 , 0.1285778184208021535095 }
+#define MATRIXCOL { 0.1233078274276283442523, \
+ 0.1232135941992091865416 , \
+ 0.0540377259589001762707 , \
+ 0.0925512303008872161403 , \
+ 0.0555055644879708723338 , \
+ 0.1276299219577190779962 , \
+ 0.1385167433745558840386 }
+
+
+#define IMATRIX {0.05826747464016080,0.99946373142302036,0.85600351681932807,0.62329693790525198,\
+ 0.49792320514097810,0.44210509583353996,0.55833499459549785,0.09633230511099100,\
+ 0.80100952507928014,0.34466254524886608,\
+0.48831309471279383,0.95087061496451497,0.01332767866551876,0.76261807000264525,\
+ 0.74346329551190138,0.65157829830422997,0.57006288319826126,0.70580983115360141,\
+ 0.51323400903493166,0.64977857517078519,\
+0.80352442665025592,0.69910932797938585,0.69258948462083936,0.91169391758739948,\
+ 0.92454590043053031,0.27637310232967138,0.31692579621449113,0.86305770650506020,\
+ 0.20109100220724940,0.01225362811237574,\
+0.38199013099074364,0.96006405679509044,0.16440964583307505,0.59608811559155583,\
+ 0.72101737372577190,0.58661046391353011,0.99326277803629637,0.00761850038543344,\
+ 0.78608208894729614,0.89965870184823871,\
+0.43115562805905938,0.81857266277074814,0.83410377753898501,0.55516970623284578,\
+ 0.51345925079658628,0.04770902730524540,0.80747798969969153,0.80489510949701071,\
+ 0.78650354826822877,0.30791273340582848,\
+0.75731822755187750,0.53423820668831468,0.42618893459439278,0.85448804078623652,\
+ 0.92601215932518244,0.94169309409335256,0.85547966323792934,0.59637623047456145,\
+ 0.69515300076454878,0.18359116325154901,\
+0.01200280850753188,0.2255702270194888,0.34853330114856362,0.55313225090503693,\
+ 0.63695094687864184,0.96132039744406939,0.50314606027677655,0.11768362112343311,\
+ 0.42481321236118674,0.52963322307914495}
+
+#define RMATRIX {0.53868199465796351,0.65326874051243067,0.37497402401641011,0.60422550700604916,\
+ 0.33622304117307067,0.03531436901539564,0.33213760564103723,0.39493087679147720,\
+ 0.04170337272807956,0.87363853026181459,\
+0.65950810909271240,0.31221040291711688,0.15333442110568285,0.66478573577478528,\
+ 0.44319023378193378,0.40884594758972526,0.94536898937076330,0.67733758920803666,\
+ 0.18673646822571754,0.92331133363768458,\
+0.55921846115961671,0.75012728199362755,0.23257926432415843,0.57102064136415720,\
+ 0.60969385923817754,0.67336730472743511,0.07624059682711959,0.10437540244311094,\
+ 0.95672677317634225,0.19771346449851990,\
+0.05278092902153730,0.75808868417516351,0.17633479088544846,0.01146994484588504,\
+ 0.36732212174683809,0.19948644982650876,0.52714426256716251,0.21445603063330054,\
+ 0.94751045759767294,0.04272260749712586,\
+0.03257346292957664,0.53217577841132879,0.87635089689865708,0.15471007302403450,\
+ 0.25448470888659358,0.91815057490020990,0.72509902389720082,0.87545845471322536,\
+ 0.05635281419381499,0.01432112138718367,\
+0.57406943850219250,0.80984140699729323,0.01664119493216276,0.93888836959376931,\
+ 0.11264799535274506,0.66036546928808093,0.76042845565825701,0.25908330874517560,\
+ 0.88014078326523304,0.70332178613170981,\
+0.94614937948063016,0.78529163636267185,0.20241560926660895,0.10981105919927359,\
+ 0.75415370846167207,0.15320260450243950,0.59521253732964396,0.71318271104246378,\
+ 0.51107599260285497,0.52125945501029491}
+
+
+
+
+
+
+#define IMATRIXROW {-0.0419293790250184,-0.05416405376783551,+0.11775191182077104,+0.08015791690354153,+0.00011032748454003,\
+-0.10124210045965254,0.06720614014223115,+0.02470873836336094,-0.07082037296251543,-0.00621987869853545}
+
+#define RMATRIXROW {0.01439621349781126,-0.04697393442028135,-0.03018604392150223,0.09765990436118642,0.01606884471097247,\
+-0.00604250542333471,0.02870576510687836,-0.04985742926427023,0.12356001472881707,0.05909180726174274}
+
+#define IMATRIXCOL {-0.01904810719805961,+0.04121453132770223,+0.00378553967089328,\
++0.10307670507342410,+0.03497427750676810,+0.01761849804019567,-0.10182321471060848}
+
+#define RMATRIXCOL {-0.02739893277693160,0.01792852626358409,-0.02205084134302381,\
+-0.01012610864032573,0.07317682977907164,0.04762062457313784,0.00849011627117621}
+
+
+static void dvariancesTest (void ) {
+
+ double toTest = dvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-16 ) ;
+}
+
+
+static void drowvariancesTest (void ) {
+
+ double toTest = drowvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-16 ) ;
+}
+
+static void dcolumnvariancesTest (void) {
+
+ double toTest = dcolumnvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-16 ) ;
+}
+
+
+static void zvariancesTest (void ) {
+
+ doubleComplex toTest = zvariances ( DoubleComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( zreals( toTest) - SINGLE ) / fabs( zreals( toTest)) < 1e-16 ) ;
+ assert ( fabs ( zimags( toTest) - SINGLE ) / fabs( zimags( toTest)) < 1e-16 ) ;
+}
+
+static void zrowvariancesTest (void ) {
+
+ doubleComplex toTest = zrowvariances ( DoubleComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( zreals( toTest) - SINGLE ) / fabs( zreals( toTest)) < 1e-16 ) ;
+ assert ( fabs ( zimags( toTest) - SINGLE ) / fabs( zimags( toTest)) < 1e-16 ) ;
+}
+
+static void zcolumnvariancesTest (void ) {
+
+ doubleComplex toTest = zrowvariances ( DoubleComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( zreals( toTest) - SINGLE ) / fabs( zreals( toTest)) < 1e-16 ) ;
+ assert ( fabs ( zimags( toTest) - SINGLE ) / fabs( zimags( toTest)) < 1e-16 ) ;
+}
+
+
+
+
+
+
+static void dvarianceaTest ( void){
+
+ double mtoTest[] = MATRIX ;
+ double result = 0.1007532974338590653352;
+ double out = dvariancea ( mtoTest , LINES*COLUMNS ); ;
+
+
+
+ printf ( "out : %1.20f\t result : %1.20f\t\n" , out , result ) ;
+
+
+
+ assert ( fabs ( out - result ) / fabs( out ) < 3e-15 ) ;
+
+}
+
+
+static void drowvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ double mtoTest[] = MATRIX ;
+ double result[LINES] = MATRIXCOL ;
+ double out[LINES] ;
+
+ drowvariancea ( mtoTest , COLUMNS , LINES , out ) ;
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "ROWout : %1.20f\t result : %1.20f\t\n" , out[i] , result [i] ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 3e-16 ) ;
+ }
+
+}
+
+static void dcolumnvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ double mtoTest[] = MATRIX ;
+ double result[COLUMNS] = MATRIXROW ;
+ double out[ COLUMNS] ;
+
+
+
+ dcolumnvariancea ( mtoTest , COLUMNS, LINES , out ) ;
+
+ for ( i = 0 ; i < COLUMNS; i++)
+ {
+ printf ( "%dCOLout : %1.20f\t result : %1.20f\t\n" ,i, out[i] , result [i] ) ; }
+ for ( i = 0 ; i < COLUMNS; i++)
+ {
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 3e-16 ) ;
+ }
+
+}
+
+
+
+
+static void zvarianceaTest ( void){
+
+ double rmtoTest [] = RMATRIX ;
+ double imtoTest [] = IMATRIX ;
+ doubleComplex Result = DoubleComplex ( 0.01225832057910708 , 0.01071188208687752 );
+
+ doubleComplex* mtoTest = DoubleComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ doubleComplex out = zvariancea ( mtoTest , LINES*COLUMNS ); ;
+
+ assert ( fabs( zreals(out) - zreals (Result) ) / fabs (zreals (out)) < 3e-16 );
+ assert( fabs( zimags(out) - zimags (Result )) / fabs (zimags (out)) < 3e-15 );
+
+
+}
+
+static void zrowvarianceaTest (void ) {
+
+ int i = 0 ;
+
+ double rmtoTest [] = RMATRIX ;
+ double imtoTest [] = IMATRIX ;
+ double rResult [] = RMATRIXROW;
+ double iResult [] = IMATRIXROW ;
+
+ doubleComplex out[COLUMNS];
+ doubleComplex* mtoTest = DoubleComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ doubleComplex* Result = DoubleComplexMatrix ( rResult , iResult , COLUMNS );
+
+ zrowvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ /*FIXME test failed under 1-e04 precision */
+ for ( i = 0 ; i < COLUMNS ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , zreals(out[i]) , zimags(out[i]), zreals(Result[i]) ,zimags( Result[i]));
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-8 );
+ assert( fabs( zimags(out[i]) - zimags (Result[i])) / fabs (zimags (out[i])) < 3e-15);
+
+ }
+}
+
+
+
+static void zcolumnvarianceaTest ( void) {
+ int i = 0 ;
+
+ double rmtoTest [] = RMATRIX ;
+ double imtoTest [] = IMATRIX ;
+ double rResult [] = RMATRIXCOL;
+ double iResult [] = IMATRIXCOL ;
+
+ doubleComplex out[LINES];
+ doubleComplex* mtoTest = DoubleComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ doubleComplex* Result = DoubleComplexMatrix ( rResult , iResult , LINES );
+
+ zcolumnvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , zreals(out[i]) , zimags(out[i]), zreals(Result[i]) ,zimags( Result[i]));
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+ assert( fabs( zimags(out[i]) - zimags (Result[i])) / fabs (zimags (out[i])) < 3e-16);
+
+ }
+
+
+
+}
+
+
+
+
+
+static int testDoubleVariance (void) {
+ printf("\n\n\n\n*********************\n");
+ printf("***** Double Tests ****\n");
+ printf("*********************\n");
+
+ printf("\n\t>>>>singleton real Tests\n");
+ dcolumnvariancesTest () ;
+ dvariancesTest () ;
+ drowvariancesTest () ;
+
+
+ printf("\n\t>>>>singleton complex Tests\n");
+
+ zrowvariancesTest () ;
+ zcolumnvariancesTest () ;
+ zvariancesTest () ;
+
+
+
+ printf("\n\t>>>>array real Tests\n");
+
+ dvarianceaTest () ;
+
+ dcolumnvarianceaTest () ;
+ drowvarianceaTest ( );
+
+
+ printf("\n\t>>>>array complex Tests\n");
+
+ zvarianceaTest () ;
+ zrowvarianceaTest ( );
+ zcolumnvarianceaTest () ;
+
+
+ return 0;
+}
+
+int main(void) {
+ assert(testDoubleVariance () == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/testDoubleVarianceNono.c b/2.3-1/src/c/statisticsFunctions/variance/testDoubleVarianceNono.c
new file mode 100644
index 00000000..39302d76
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/testDoubleVarianceNono.c
@@ -0,0 +1,363 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "variance.h"
+#include "assert.h"
+
+static int doubleVariance(void){
+
+ int i;
+
+
+ /*test 1 */
+ {
+ double matrice[20]={1,5,9,4,8,2,6,1,5,9,3,7,2,6,1,4,8,3,7,2};
+ double out, *outColumns, *outRows;
+ double result= 7.5026315789473692063893;
+ double resultColumns[5]= {1.6666666666666667406815 ,1.6666666666666667406815 ,12.916666666666666074548 ,1.6666666666666667406815 ,16.666666666666667850905};
+ double resultRows[4]={10.300000000000000710543 , 10.300000000000000710543 , 6.7000000000000001776357 , 6.7000000000000001776357};
+
+
+
+ outColumns= (double*)malloc((unsigned int)5*sizeof(double));
+ outRows= (double*)malloc((unsigned int)4*sizeof(double));
+
+ out = dvariancea(matrice,20);
+ drowvariancea(matrice,5,4,outRows);
+ dcolumnvariancea(matrice,5,4,outColumns);
+
+
+ printf("Variance \n");
+ printf("%f\n",out);
+ printf("Row Variance \n");
+ for (i=0;i<4;i++) printf("%f\n",outRows[i]);
+ printf("Column Variance \n");
+ for (i=0;i<5;i++) printf("%f\n",outColumns[i]);
+
+
+ assert(fabs(out-result)/fabs(out) <1e-16);
+ for (i=0;i<4;i++)assert(fabs(outRows[i]-resultRows[i])/fabs(outRows[i]) <1e-16);
+
+ for (i=0;i<5;i++)assert(fabs(outColumns[i]-resultColumns[i])/fabs(outColumns[i]) <1e-16);
+
+ free(outColumns);
+ free(outRows);
+
+ }
+
+
+ /* test 2 */
+
+ {
+ double mtovar[70]={0.2113248654641211032867,0.7560438541695475578308,0.0002211346291005611420,
+ 0.3303270917385816574097,0.6653811042197048664093,0.6283917883411049842835,
+ 0.8497452358715236186981,
+ 0.6857310198247432708740,0.8782164813019335269928,0.0683740368112921714783,
+ 0.5608486062847077846527,0.6623569373041391372681,0.7263506767340004444122,
+ 0.1985143842175602912903,
+ 0.5442573162727057933807,0.2320747897028923034668,0.2312237196601927280426,
+ 0.2164632631465792655945,0.8833887814544141292572,0.6525134947150945663452,
+ 0.3076090742833912372589,
+ 0.9329616213217377662659,0.2146007861010730266571,0.3126419968903064727783,
+ 0.3616361008025705814362,0.2922266637906432151794,0.5664248815737664699554,
+ 0.4826471973210573196411,
+ 0.3321718913502991199493,0.5935094701126217842102,0.5015341597609221935272,
+ 0.4368587583303451538086,0.2693124809302389621735,0.6325744865462183952332,
+ 0.4051954015158116817474,
+ 0.9184707831591367721558,0.0437334333546459674835,0.4818508932366967201233,
+ 0.2639556000940501689911,0.4148103706538677215576,0.2806498021818697452545,
+ 0.1280058464035391807556,
+ 0.7783128595910966396332,0.2119030449539422988892,0.1121354666538536548615,
+ 0.6856895955279469490051,0.1531216683797538280487,0.6970850601792335510254,
+ 0.8415518426336348056793,
+ 0.4062024755403399467468,0.4094825475476682186127,0.8784125801175832748413,
+ 0.1138359685428440570831,0.1998337740078568458557,0.5618660743348300457001,
+ 0.5896177329123020172119,
+ 0.6853979662992060184479,0.8906224733218550682068,0.5042212805710732936859,
+ 0.3493615407496690750122,0.3873778772540390491486,0.9222898678854107856751,
+ 0.9488184261135756969452,
+ 0.3435337245464324951172,0.3760118731297552585602,0.7340940563008189201355,
+ 0.2615761472843587398529,0.4993493836373090744019,0.2638578419573605060577,
+ 0.5253563085570931434631};
+ double out2, *outColumns2, *outRows2;
+ double result2= 0.0651863337585355667736 ;
+ double resultColumns2[7]= {0.0650391675869589902526 ,
+ 0.0913789208052724344356 ,
+ 0.0837863718398224738282 ,
+ 0.0281545517812518443501 ,
+ 0.0549594706400152802073 ,
+ 0.0389978730537587012228 ,
+ 0.0796657637071630925218 ,
+ };
+ double resultRows2[10]={0.0988544518240001696130 , 0.0874673050908554156058 , 0.0678199050579095519264, 0.0591380787668954188696 , 0.0175386373980947855855 ,0.0831815708684833926556 , 0.1035239817400336881370 , 0.0657802543744439444096 , 0.0667446022405332184402 , 0.0287884625084994134891};
+
+
+ outColumns2= (double*)malloc((unsigned int)7*sizeof(double));
+ outRows2= (double*)malloc((unsigned int)10*sizeof(double));
+
+
+
+ out2 = dvariancea(mtovar,70);
+ drowvariancea(mtovar,7,10,outRows2);
+ dcolumnvariancea(mtovar,7,10,outColumns2);
+
+
+ printf("Variance 2 \n");
+ printf("%f\n",out2);
+ printf("Row Variance 2 \n");
+ for (i=0;i<10;i++) printf("%f\n",outRows2[i]);
+ printf("Column Variance 2 \n");
+ for (i=0;i<7;i++) printf("%f\n",outColumns2[i]);
+
+ assert(fabs(out2-result2)/fabs(out2) <1e-16);
+ for (i=0;i<10;i++)assert(fabs(outRows2[i]-resultRows2[i])/fabs(outRows2[i]) <1e-16);
+
+ for (i=0;i<7;i++)assert(fabs(outColumns2[i]-resultColumns2[i])/fabs(outColumns2[i]) <1e-16);
+
+ free(outColumns2);
+ free(outRows2);
+ }
+
+
+ return 0;
+}
+
+
+static int doubleComplexVariance(void){
+ int i;
+
+ /* test 1 */
+ {
+ double inR[6]={0.9677053210325539112091,0.5068534435704350471497,0.523297640960663557053,0.5596947595477104187012,
+ 0.5617307000793516635895,0.468176002614200115204};
+ double inI[6]={0.7794546722434461116791,0.7901071812957525253296,0.9808542062528431415558,0.8187066102400422096252,
+ 0.4256872381083667278290,0.2461560554802417755127};
+ double varianceR=- 0.0428404140538702279950;
+ double varianceI=0.0257955584577409802183;
+ double rowVarianceR[3]={0.106135488505625180666,- 0.0124835463256454722719,- 0.01173948205902856229};
+ double rowVarianceI[3]={- 0.0049092287964376275095,- 0.0059017052806824826100,0.0167959854763351026929};
+ double colVarianceR[2]={- 0.0183554755457089394111,- 0.1019751767306446843531};
+ double colVarianceI[2]={0.0109267784648201249365,0.0249829946888768111846};
+ doubleComplex *in, *rowVariance, *colVariance;
+ doubleComplex out, *outRow, *outCol;
+
+ in= (doubleComplex*)malloc ((unsigned int)6*sizeof(doubleComplex));
+ outRow= (doubleComplex*)malloc ((unsigned int)3*sizeof(doubleComplex));
+ outCol= (doubleComplex*)malloc ((unsigned int)2*sizeof(doubleComplex));
+
+ in=DoubleComplexMatrix(inR,inI,6);
+ rowVariance=DoubleComplexMatrix(rowVarianceR,rowVarianceI,3);
+ colVariance=DoubleComplexMatrix(colVarianceR,colVarianceI,2);
+
+
+ out=zvariancea(in,6);
+ printf("Variance \n");
+ printf("%f + %f *i\texpecting result : %f + %f *i\n",zreals(out),zimags(out) , varianceR , varianceI);
+
+ assert(fabs(zreals(out)-varianceR)/fabs(zreals(out)) <3e-16);
+ assert(fabs(zimags(out)-varianceI)/fabs(zimags(out)) <3e-15);
+
+
+
+
+
+ zrowvariancea(in,2,3,outRow);
+ printf("Row Variance \n");
+ for (i=0;i<3;i++) printf("%1.20f + %1.20f *i\n",zreals(outRow[i]),zimags(outRow[i]));
+
+
+ for (i=0;i<3;i++){
+ assert(fabs(zreals(outRow[i])-rowVarianceR[i])/fabs(zreals(outRow[i])) <3e-15);
+ assert(fabs(zimags(outRow[i])-rowVarianceI[i])/fabs(zimags(outRow[i])) <3e-14);
+ }
+
+
+
+ zcolumnvariancea(in,2,3,outCol);
+ printf("Column Variance \n");
+ for (i=0;i<2;i++) printf("%f + %f *i\n",zreals(outCol[i]),zimags(outCol[i]));
+
+
+ for (i=0;i<2;i++){
+ assert(fabs(zreals(outCol[i])-colVarianceR[i])/fabs(zreals(outCol[i])) <3e-15);
+ assert(fabs(zimags(outCol[i])-colVarianceI[i])/fabs(zimags(outCol[i])) <3e-15);
+ }
+
+ free(in);
+ free(outCol);
+ free(outRow);
+
+ }
+
+
+ printf("\n");
+ printf("\n");
+ printf("\n");
+ printf("\n");
+
+
+ /* test 2 */
+ {
+ double inR[70]={0.0453502028249204158783,0.2029444333165884017944,0.7844273825176060199738,
+ 0.2637536162510514259338,0.4383276398293673992157,0.866485897451639175415,
+ 0.3792142109014093875885,0.7668716078624129295349,0.6006621322594583034515,
+ 0.7856735605746507644653,
+0.7387115550227463245392,0.5544260339811444282532,0.9929149555973708629608,
+ 0.9757428467273712158203,0.3709622272290289402008,0.3032238213345408439636,
+ 0.9519520117901265621185,0.7127858083695173263550,0.119237006176263093948,
+ 0.5009163180366158485413,
+0.3290053526870906352997,0.4808946810662746429443,0.3303695977665483951569,
+ 0.6304475357756018638611,0.2117190784774720668793,0.4486023131757974624634,
+ 0.5914509710855782032013,0.6806742670014500617981,0.0739296111278235912323,
+ 0.9433694705367088317871,
+0.1286330693401396274567,0.2019080771133303642273,0.1969303428195416927338,
+ 0.8928690161556005477905,0.4617918957956135272980,0.6251291716471314430237,
+ 0.7059706593863666057587,0.7018169648945331573486,0.4087999747134745121002,
+ 0.0636221384629607200623,
+0.0657393387518823146820,0.5331004131585359573364,0.0331581872887909412384,
+ 0.3157835649326443672180,0.3785823243670165538788,0.4619523435831069946289,
+ 0.6287369825877249240875,0.2878515301272273063660,0.3292048736475408077240,
+ 0.4719233047217130661011,
+0.3353769634850323200226,0.5553069720044732093811,0.1196080814115703105927,
+ 0.7613999657332897186279,0.4790988476015627384186,0.2816969295963644981384,
+ 0.2380097783170640468597,0.3294205460697412490845,0.2306728032417595386505,
+ 0.2136296601966023445129,
+0.4054998042993247509003,0.3095371201634407043457,0.6762971603311598300934,
+ 0.970691631548106670380,0.5441796570084989070892,0.0204747971147298812866,
+ 0.8941364963538944721222,0.3490363890305161476135,0.1105365152470767498016,
+ 0.2023377753794193267822};
+ double inI[70]={1.0377217042259871959686,1.9830380710773169994354,-0.6786614381708204746246,
+ -1.7368789152242243289948,0.6849579229019582271576,-1.9756898251362144947052, 0.9018773441202938556671,0.4113956945948302745819,0.0771432374604046344757,
+ -2.6145569621585309505463,
+-0.8694803346879780292511,1.1954508102498948574066,1.0175080369226634502411,
+ -1.86952689336612820625,1.6495719677768647670746,-1.1282413271255791187286,
+ 1.7159116868861019611359,1.3512618443928658962250,1.6467350018210709095001,
+ -4.3247690196149051189423,
+-1.1214177873916923999786,0.3549467395059764385223,1.5090364827774465084076,
+ 0.0271988785825669765472,-0.3927204073406755924225,-2.2866433826275169849396,
+ 2.4531399612314999103546,1.2140426929108798503876,0.1123848785646259784699,
+ -1.2278760573826730251312,
+0.5748759503476321697235,0.1001535071991384029388,0.7154782521538436412811,
+ -0.3598340046592056751251,0.1114491275511682033539,-1.0214430955238640308380,
+ 1.8411546354182064533234,1.3313704966567456722260,0.107393887359648942947,
+ -2.1405860441736876964569,
+-0.1921784919686615467072,-0.0941377175040543079376,-0.3007089742459356784821,
+ -1.6332105011679232120514,-0.9827875629998743534088,-4.0793808070011436939240,
+ 1.6021160488016903400421,0.5996482106857001781464,-1.0103867049328982830048,
+ -1.9795853956602513790131,
+-0.7019297261722385883331,0.1910370937548577785492,0.5148729826323688030243,
+ -1.2210475285537540912628,1.4409833527170121669769,-2.0624672439880669116974,
+ 2.2999203805811703205109,1.6434787488542497158051,-0.0813916879706084728241,
+ -4.3653216282837092876434,
+0.0896512451581656932831,1.4530082489363849163055,-0.1911182911135256290436,
+ -1.5278804996050894260406,-0.8655951828695833683014,-2.6959278550930321216583,
+ 1.089711368549615144730,0.2611377011053264141083,-0.0787748913280665874481,
+ -1.675187868531793355942};
+ double varianceR=- 2.3201230329620456949158;
+ double varianceI=0.0135359053960125846894;
+ double rowVarianceR[7]={- 2.1748250359163439071608,- 4.0055927597555047725564,- 1.9380991813636070375537,- 1.211164632384367667584,
+ - 2.3819157100812309302285,- 3.865411523472068289209,- 1.5488286339908912125907};
+ double rowVarianceI[7]={- 0.5161401892195496277083,- 0.0302397956223948334575,0.0072526988331105511632,0.2035074619460965072992,
+ - 0.0227578793067023492369,0.0176453877563822227048,0.2048099414748655033858};
+ double colVarianceR[10]={ - 0.5673920596394929072304,
+ - 0.6095831761740567733554,
+ - 0.4837275005370789138226,
+ - 0.4518709923747168399899,
+ - 1.1155710732654480210613,
+ - 0.9922425930742954092168,
+ - 0.2615272073355465187738,
+ - 0.2448899237808548345896,
+ - 0.5783271525148965253038,
+ - 1.4662540245146995498970 };
+ double colVarianceI[10]={ - 0.2519451287679840834066,
+ - 0.1132720366896080160801,
+ - 0.0393753052279357945720 ,
+ 0.0678956480014177715665 ,
+ 0.0165011281984272333012 ,
+ 0.1043646242921155153915 ,
+ - 0.0697520473529744805541 ,
+ 0.0395755738577838397929 ,
+ - 0.0906906077772287183558 ,
+ 0.2030521845859689644698 };
+ doubleComplex *in, *rowVariance, *colVariance;
+ doubleComplex out, *outRow, *outCol;
+
+ in= (doubleComplex*)malloc ((unsigned int)70*sizeof(doubleComplex));
+ outRow= (doubleComplex*)malloc ((unsigned int)7*sizeof(doubleComplex));
+ outCol= (doubleComplex*)malloc ((unsigned int)10*sizeof(doubleComplex));
+
+ in=DoubleComplexMatrix(inR,inI,70);
+ rowVariance=DoubleComplexMatrix(rowVarianceR,rowVarianceI,7);
+ colVariance=DoubleComplexMatrix(colVarianceR,colVarianceI,10);
+
+
+ out=zvariancea(in,70);
+ printf("Variance 2 \n");
+ printf("%f + %f *i\n",zreals(out),zimags(out));
+
+ assert(fabs(zreals(out)-varianceR)/fabs(zreals(out)) <3e-16);
+ assert(fabs(zimags(out)-varianceI)/fabs(zimags(out)) <3e-16);
+
+
+
+
+
+ zrowvariancea(in,10,7,outRow);
+ printf("Row Variance 2 \n");
+ for (i=0;i<7;i++) printf("%1.20f + %1.20f *i\n",zreals(outRow[i]),zimags(outRow[i]));
+
+
+ for (i=0;i<7;i++){
+ assert(fabs(zreals(outRow[i])-rowVarianceR[i])/fabs(zreals(outRow[i])) <3e-15);
+ assert(fabs(zimags(outRow[i])-rowVarianceI[i])/fabs(zimags(outRow[i])) <3e-14);
+ }
+
+
+
+ zcolumnvariancea(in,10,7,outCol);
+ printf("Column Variance 2 \n");
+ for (i=0;i<10;i++) printf("%f + %f *i\n",zreals(outCol[i]),zimags(outCol[i]));
+
+
+ for (i=0;i<10;i++){
+ assert(fabs(zreals(outCol[i])-colVarianceR[i])/fabs(zreals(outCol[i])) <3e-15);
+ assert(fabs(zimags(outCol[i])-colVarianceI[i])/fabs(zimags(outCol[i])) <3e-14);
+ }
+ free(in);
+ free(outCol);
+ free(outRow);
+
+ }
+
+ return 0;
+}
+
+
+
+
+
+static int testDoubleVariance (void) {
+ printf("\n\n\n\n*********************\n");
+ printf("***** Double Tests Nono****\n");
+ printf("*********************\n");
+ assert(doubleVariance()==0);
+ assert(doubleComplexVariance()==0);
+
+
+ return 0;
+}
+
+int main(void) {
+ assert(testDoubleVariance () == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/testFloatVariance.c b/2.3-1/src/c/statisticsFunctions/variance/testFloatVariance.c
new file mode 100644
index 00000000..5a22a9c0
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/testFloatVariance.c
@@ -0,0 +1,329 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+
+#include "variance.h"
+
+#define SINGLE 1.323312455f
+#define LINES 7
+#define COLUMNS 10
+#define MATRIX {0.102326436434f,0.939044147730f,0.638607255649f,0.059883427806f,0.311199211050f,\
+ 0.377510951832f,0.909709410276f,0.928138985299f,0.855155082885f,0.308869514614f,\
+0.729239261709f,0.127006734256f,0.242402311414f,0.807912770193f,0.621117659844f,\
+ 0.081452373881f,0.088844371960f,0.587072817143f,0.068080495112f,0.995457543526f,\
+0.835322400089f,0.656235548668f,0.767905956600f,0.706818781793f,0.187699332368f,\
+ 0.568810169585f,0.401039466728f,0.397196868435f,0.483212330844f,0.161224133335f,\
+0.932864250615f,0.719208867755f,0.262409000657f,0.931377100293f,0.596724558622f,\
+ 0.310327019077f,0.350161732174f,0.104841318447f,0.830732351169f,0.804621329065f,\
+0.050784428138f,0.551920620725f,0.125952405389f,0.083156193607f,0.420623748098f,\
+ 0.168616071343f,0.707545555662f,0.104633864947f,0.465604968835f,0.489758284763f,\
+0.167727907188f,0.760689914692f,0.454900974408f,0.063926273491f,0.87152507063f,0.978668818716f,\
+ 0.135898929089f,0.484713065904f,0.785042577423f,0.049412418623f,\
+0.947593610268f,0.884073690511f,0.212796610314f,0.654832502827f,0.007690255996f,\
+ 0.031808692031f,0.706323316786f,0.008731670678f,0.270014822017f,0.153652121313f}
+
+
+#define MATRIXROW {0.168824942350f,0.072908122527f,0.057987977092f,0.149998975703f,0.085086319404f,\
+0.108508638451f,0.096937985957f,0.107281660264f,0.091363871817f,0.128577818421f}
+
+#define MATRIXCOL { 0.123307827428f,0.123213594199f,0.054037725959f,0.092551230301f,0.055505564488f,\
+0.127629921958f,0.138516743375f }
+
+
+#define IMATRIX {0.05826747464016080f,0.99946373142302036f,0.85600351681932807f,0.62329693790525198f,\
+ 0.49792320514097810f,0.44210509583353996f,0.55833499459549785f,0.09633230511099100f,\
+ 0.80100952507928014f,0.34466254524886608f,\
+0.48831309471279383f,0.95087061496451497f,0.01332767866551876f,0.76261807000264525f,\
+ 0.74346329551190138f,0.65157829830422997f,0.57006288319826126f,0.70580983115360141f,\
+ 0.51323400903493166f,0.64977857517078519f,\
+0.80352442665025592f,0.69910932797938585f,0.69258948462083936f,0.91169391758739948f,\
+ 0.92454590043053031f,0.27637310232967138f,0.31692579621449113f,0.86305770650506020f,\
+ 0.20109100220724940f,0.01225362811237574f,\
+0.38199013099074364f,0.96006405679509044f,0.16440964583307505f,0.59608811559155583f,\
+ 0.72101737372577190f,0.58661046391353011f,0.99326277803629637f,0.00761850038543344f,\
+ 0.78608208894729614f,0.89965870184823871f,\
+0.43115562805905938f,0.81857266277074814f,0.83410377753898501f,0.55516970623284578f,\
+ 0.51345925079658628f,0.04770902730524540f,0.80747798969969153f,0.80489510949701071f,\
+ 0.78650354826822877f,0.30791273340582848f,\
+0.75731822755187750f,0.53423820668831468f,0.42618893459439278f,0.85448804078623652f,\
+ 0.92601215932518244f,0.94169309409335256f,0.85547966323792934f,0.59637623047456145f,\
+ 0.69515300076454878f,0.18359116325154901f,\
+0.01200280850753188f,0.2255702270194888f,0.34853330114856362f,0.55313225090503693f,\
+ 0.63695094687864184f,0.96132039744406939f,0.50314606027677655f,0.11768362112343311f,\
+ 0.42481321236118674f,0.52963322307914495f}
+
+#define RMATRIX {0.53868199465796351f,0.65326874051243067f,0.37497402401641011f,0.60422550700604916f,\
+ 0.33622304117307067f,0.03531436901539564f,0.33213760564103723f,0.39493087679147720f,\
+ 0.04170337272807956f,0.87363853026181459f,\
+0.65950810909271240f,0.31221040291711688f,0.15333442110568285f,0.66478573577478528f,\
+ 0.44319023378193378f,0.40884594758972526f,0.94536898937076330f,0.67733758920803666f,\
+ 0.18673646822571754f,0.92331133363768458f,\
+0.55921846115961671f,0.75012728199362755f,0.23257926432415843f,0.57102064136415720f,\
+ 0.60969385923817754f,0.67336730472743511f,0.07624059682711959f,0.10437540244311094f,\
+ 0.95672677317634225f,0.19771346449851990f,\
+0.05278092902153730f,0.75808868417516351f,0.17633479088544846f,0.01146994484588504f,\
+ 0.36732212174683809f,0.19948644982650876f,0.52714426256716251f,0.21445603063330054f,\
+ 0.94751045759767294f,0.04272260749712586f,\
+0.03257346292957664f,0.53217577841132879f,0.87635089689865708f,0.15471007302403450f,\
+ 0.25448470888659358f,0.91815057490020990f,0.72509902389720082f,0.87545845471322536f,\
+ 0.05635281419381499f,0.01432112138718367f,\
+0.57406943850219250f,0.80984140699729323f,0.01664119493216276f,0.93888836959376931f,\
+ 0.11264799535274506f,0.66036546928808093f,0.76042845565825701f,0.25908330874517560f,\
+ 0.88014078326523304f,0.70332178613170981f,\
+0.94614937948063016f,0.78529163636267185f,0.20241560926660895f,0.10981105919927359f,\
+ 0.75415370846167207f,0.15320260450243950f,0.59521253732964396f,0.71318271104246378f,\
+ 0.51107599260285497f,0.52125945501029491f}
+
+
+
+
+
+
+#define IMATRIXROW {-0.0419293790250184f,-0.05416405376783551f,+0.11775191182077104f,+0.08015791690354153f,+0.00011032748454003f,\
+-0.10124210045965254f,0.06720614014223115f,+0.02470873836336094f,-0.07082037296251543f,-0.00621987869853545f}
+
+#define RMATRIXROW {0.01439621349781126f,-0.04697393442028135f,-0.03018604392150223f,0.09765990436118642f,0.01606884471097247f,\
+-0.00604250542333471f,0.02870576510687836f,-0.04985742926427023f,0.12356001472881707f,0.05909180726174274f}
+
+#define IMATRIXCOL {-0.01904810719805961f,+0.04121453132770223f,+0.00378553967089328f,\
++0.10307670507342410f,+0.03497427750676810f,+0.01761849804019567f,-0.10182321471060848f}
+
+#define RMATRIXCOL {-0.02739893277693160f,0.01792852626358409f,-0.02205084134302381f,\
+-0.01012610864032573f,0.07317682977907164f,0.04762062457313784f,0.00849011627117621f}
+
+
+static void svariancesTest (void ) {
+
+ float toTest = svariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-06 ) ;
+}
+
+
+static void srowvariancesTest (void ) {
+
+ float toTest = srowvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-06 ) ;
+}
+
+static void scolumnvariancesTest (void) {
+
+ float toTest = scolumnvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-06 ) ;
+}
+
+
+static void cvariancesTest (void ) {
+
+ floatComplex toTest = cvariances ( FloatComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( creals( toTest) - SINGLE ) / fabs( creals( toTest)) < 1e-06 ) ;
+ assert ( fabs ( cimags( toTest) - SINGLE ) / fabs( cimags( toTest)) < 1e-06 ) ;
+}
+
+static void crowvariancesTest (void ) {
+
+ floatComplex toTest = crowvariances ( FloatComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( creals( toTest) - SINGLE ) / fabs( creals( toTest)) < 1e-06 ) ;
+ assert ( fabs ( cimags( toTest) - SINGLE ) / fabs( cimags( toTest)) < 1e-06 ) ;
+}
+
+static void ccolumnvariancesTest (void ) {
+
+ floatComplex toTest = crowvariances ( FloatComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( creals( toTest) - SINGLE ) / fabs( creals( toTest)) < 1e-06 ) ;
+ assert ( fabs ( cimags( toTest) - SINGLE ) / fabs( cimags( toTest)) < 1e-06 ) ;
+}
+
+
+
+
+
+
+static void svarianceaTest ( void){
+
+ float mtoTest[] = MATRIX ;
+ float result = 0.100753297434f;
+ float out = svariancea ( mtoTest , LINES*COLUMNS ); ;
+
+
+
+ printf ( "out : %e\t result : %e\t\n" , out , result ) ;
+
+
+
+ assert ( fabs ( out - result ) / fabs( out ) < 1e-06 ) ;
+
+}
+
+
+static void srowvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ float mtoTest[] = MATRIX ;
+ float result[COLUMNS] = MATRIXROW ;
+ float out[COLUMNS] ;
+
+ srowvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ for ( i = 0 ; i < COLUMNS ; i++)
+ {
+ printf ( "ROWout : %e\t result : %e\t\n" , out[i] , result [i] ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 1e-06 ) ;
+ }
+
+}
+
+static void scolumnvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ float mtoTest[] = MATRIX ;
+ float result[LINES] = MATRIXCOL ;
+ float out[ LINES] ;
+
+
+
+ scolumnvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "%dCOLout : %e\t result : %e\t\n" ,i, out[i] , result [i] ) ;
+ /* assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 1e-05 ) ;*/
+ }
+
+}
+
+
+
+
+static void cvarianceaTest ( void){
+
+ float rmtoTest [] = RMATRIX ;
+ float imtoTest [] = IMATRIX ;
+ floatComplex Result = FloatComplex ( 0.01225832057910708f , 0.01071188208687752f );
+
+ floatComplex* mtoTest = FloatComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ floatComplex out = cvariancea ( mtoTest , LINES*COLUMNS ); ;
+
+ assert ( fabs( creals(out) - creals (Result) ) / fabs (creals (out)) < 1e-06 );
+ assert( fabs( cimags(out) - cimags (Result )) / fabs (cimags (out)) < 1e-06 );
+
+
+}
+
+static void crowvarianceaTest (void ) {
+
+ int i = 0 ;
+
+ float rmtoTest [] = RMATRIX ;
+ float imtoTest [] = IMATRIX ;
+ float rResult [] = RMATRIXROW;
+ float iResult [] = IMATRIXROW ;
+
+ floatComplex out[COLUMNS];
+ floatComplex* mtoTest = FloatComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ floatComplex* Result = FloatComplexMatrix ( rResult , iResult , COLUMNS );
+
+ crowvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ /*FIXME test failed under 1-e04 precision */
+ for ( i = 0 ; i < COLUMNS ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , creals(out[i]) , cimags(out[i]), creals(Result[i]) ,cimags( Result[i]));
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+ assert( fabs( cimags(out[i]) - cimags (Result[i])) / fabs (cimags (out[i])) < 3e-6);
+
+ }
+}
+
+
+
+static void ccolumnvarianceaTest ( void) {
+ int i = 0 ;
+
+ float rmtoTest [] = RMATRIX ;
+ float imtoTest [] = IMATRIX ;
+ float rResult [] = RMATRIXCOL;
+ float iResult [] = IMATRIXCOL ;
+
+ floatComplex out[LINES];
+ floatComplex* mtoTest = FloatComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ floatComplex* Result = FloatComplexMatrix ( rResult , iResult , LINES );
+
+ ccolumnvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , creals(out[i]) , cimags(out[i]), creals(Result[i]) ,cimags( Result[i]));
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-06 );
+ assert( fabs( cimags(out[i]) - cimags (Result[i])) / fabs (cimags (out[i])) < 1e-06);
+
+ }
+
+
+
+}
+
+
+
+
+
+static int testFloatVariance (void) {
+ printf("\n\n\n\n*********************\n");
+ printf("***** Float Tests ****\n");
+ printf("*********************\n");
+
+ printf("\n\t>>>>singleton real Tests\n");
+ scolumnvariancesTest () ;
+ svariancesTest () ;
+ srowvariancesTest () ;
+
+
+ printf("\n\t>>>>singleton complex Tests\n");
+
+ crowvariancesTest () ;
+ ccolumnvariancesTest () ;
+ cvariancesTest () ;
+
+
+
+ printf("\n\t>>>>array real Tests\n");
+
+ svarianceaTest () ;
+
+ scolumnvarianceaTest () ;
+ srowvarianceaTest ( );
+
+
+ printf("\n\t>>>>array complex Tests\n");
+
+ cvarianceaTest () ;
+ crowvarianceaTest ( );
+ ccolumnvarianceaTest () ;
+
+
+ return 0;
+}
+
+int main(void) {
+ assert(testFloatVariance () == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/testFloatVarianceNono.c b/2.3-1/src/c/statisticsFunctions/variance/testFloatVarianceNono.c
new file mode 100644
index 00000000..a8d25456
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/testFloatVarianceNono.c
@@ -0,0 +1,364 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 "variance.h"
+#include "assert.h"
+
+static int floatVariance(void){
+
+ int i;
+
+
+ /*test 1 */
+ {
+ float matrice[20]={1.0f,5.0f,9.0f,4.0f,8.0f,2.0f,6.0f,1.0f,5.0f,9.0f,3.0f,7.0f,2.0f,6.0f,1.0f,4.0f,8.0f,3.0f,7.0f,2.0f};
+ float out, *outColumns, *outRows;
+ float result= 7.5026315789473692063893f;
+ float resultColumns[5]= {1.6666666666666667406815f ,1.6666666666666667406815f ,12.916666666666666074548f ,1.6666666666666667406815f ,16.666666666666667850905f};
+ float resultRows[4]={10.300000000000000710543f , 10.300000000000000710543f , 6.7000000000000001776357f , 6.7000000000000001776357f};
+
+
+
+ outColumns= (float*)malloc((unsigned int)5*sizeof(float));
+ outRows= (float*)malloc((unsigned int)4*sizeof(float));
+
+ out = svariancea(matrice,20);
+ srowvariancea(matrice,5,4,outRows);
+ scolumnvariancea(matrice,5,4,outColumns);
+
+
+ printf("Variance \n");
+ printf("%f\n",out);
+ printf("Row Variance \n");
+ for (i=0;i<4;i++) printf("%f\n",outRows[i]);
+ printf("Column Variance \n");
+ for (i=0;i<5;i++) printf("%f\n",outColumns[i]);
+
+
+ assert(fabs(out-result)/fabs(out) <1e-06);
+ for (i=0;i<4;i++)assert(fabs(outRows[i]-resultRows[i])/fabs(outRows[i]) <1e-06);
+
+ for (i=0;i<5;i++)assert(fabs(outColumns[i]-resultColumns[i])/fabs(outColumns[i]) <1e-06);
+
+ free(outColumns);
+ free(outRows);
+ }
+
+
+ /* test 2 */
+
+ {
+ float mtovar[70]={0.2113248654641211032867f,0.7560438541695475578308f,0.0002211346291005611420f,
+ 0.3303270917385816574097f,0.6653811042197048664093f,0.6283917883411049842835f,
+ 0.8497452358715236186981f,
+ 0.6857310198247432708740f,0.8782164813019335269928f,0.0683740368112921714783f,
+ 0.5608486062847077846527f,0.6623569373041391372681f,0.7263506767340004444122f,
+ 0.1985143842175602912903f,
+ 0.5442573162727057933807f,0.2320747897028923034668f,0.2312237196601927280426f,
+ 0.2164632631465792655945f,0.8833887814544141292572f,0.6525134947150945663452f,
+ 0.3076090742833912372589f,
+ 0.9329616213217377662659f,0.2146007861010730266571f,0.3126419968903064727783f,
+ 0.3616361008025705814362f,0.2922266637906432151794f,0.5664248815737664699554f,
+ 0.4826471973210573196411f,
+ 0.3321718913502991199493f,0.5935094701126217842102f,0.5015341597609221935272f,
+ 0.4368587583303451538086f,0.2693124809302389621735f,0.6325744865462183952332f,
+ 0.4051954015158116817474f,
+ 0.9184707831591367721558f,0.0437334333546459674835f,0.4818508932366967201233f,
+ 0.2639556000940501689911f,0.4148103706538677215576f,0.2806498021818697452545f,
+ 0.1280058464035391807556f,
+ 0.7783128595910966396332f,0.2119030449539422988892f,0.1121354666538536548615f,
+ 0.6856895955279469490051f,0.1531216683797538280487f,0.6970850601792335510254f,
+ 0.8415518426336348056793f,
+ 0.4062024755403399467468f,0.4094825475476682186127f,0.8784125801175832748413f,
+ 0.1138359685428440570831f,0.1998337740078568458557f,0.5618660743348300457001f,
+ 0.5896177329123020172119f,
+ 0.6853979662992060184479f,0.8906224733218550682068f,0.5042212805710732936859f,
+ 0.3493615407496690750122f,0.3873778772540390491486f,0.9222898678854107856751f,
+ 0.9488184261135756969452f,
+ 0.3435337245464324951172f,0.3760118731297552585602f,0.7340940563008189201355f,
+ 0.2615761472843587398529f,0.4993493836373090744019f,0.2638578419573605060577f,
+ 0.5253563085570931434631f};
+ float out2, *outColumns2, *outRows2;
+ float result2= 0.0651863337585355667736f ;
+ float resultColumns2[7]= {0.0650391675869589902526f ,
+ 0.0913789208052724344356f ,
+ 0.0837863718398224738282f ,
+ 0.0281545517812518443501f ,
+ 0.0549594706400152802073f ,
+ 0.0389978730537587012228f ,
+ 0.0796657637071630925218f ,
+ };
+ float resultRows2[10]={0.0988544518240001696130f , 0.0874673050908554156058f , 0.0678199050579095519264f, 0.0591380787668954188696f , 0.0175386373980947855855f ,0.0831815708684833926556f , 0.1035239817400336881370f, 0.0657802543744439444096f , 0.0667446022405332184402f , 0.0287884625084994134891f};
+
+
+ outColumns2= (float*)malloc((unsigned int)7*sizeof(float));
+ outRows2= (float*)malloc((unsigned int)10*sizeof(float));
+
+
+
+ out2 = svariancea(mtovar,70);
+ srowvariancea(mtovar,7,10,outRows2);
+ scolumnvariancea(mtovar,7,10,outColumns2);
+
+
+ printf("Variance 2 \n");
+ printf("%f\n",out2);
+ printf("Row Variance 2 \n");
+ for (i=0;i<10;i++) printf("%f\n",outRows2[i]);
+ printf("Column Variance 2 \n");
+ for (i=0;i<7;i++) printf("%f\n",outColumns2[i]);
+
+ assert(fabs(out2-result2)/fabs(out2) <1e-06);
+ for (i=0;i<10;i++)assert(fabs(outRows2[i]-resultRows2[i])/fabs(outRows2[i]) <1e-06);
+
+ for (i=0;i<7;i++)assert(fabs(outColumns2[i]-resultColumns2[i])/fabs(outColumns2[i]) <1e-06);
+
+ free(outColumns2);
+ free(outRows2);
+
+ }
+
+
+ return 0;
+}
+
+
+static int floatComplexVariance(void){
+ int i;
+
+ /* test 1 */
+ {
+ float inR[6]={0.9677053210325539112091f,0.5068534435704350471497f,0.523297640960663557053f,0.5596947595477104187012f,
+ 0.5617307000793516635895f,0.468176002614200115204f};
+ float inI[6]={0.7794546722434461116791f,0.7901071812957525253296f,0.9808542062528431415558f,0.8187066102400422096252f,
+ 0.4256872381083667278290f,0.2461560554802417755127f};
+ float varianceR=- 0.0428404140538702279950f;
+ float varianceI=0.0257955584577409802183f;
+ float rowVarianceR[3]={0.106135488505625180666f,- 0.0124835463256454722719f,- 0.01173948205902856229f};
+ float rowVarianceI[3]={- 0.0049092287964376275095f,- 0.0059017052806824826100f,0.0167959854763351026929f};
+ float colVarianceR[2]={- 0.0183554755457089394111f,- 0.1019751767306446843531f};
+ float colVarianceI[2]={0.0109267784648201249365f,0.0249829946888768111846f};
+ floatComplex *in, *rowVariance, *colVariance;
+ floatComplex out, *outRow, *outCol;
+
+ in= (floatComplex*)malloc ((unsigned int)6*sizeof(floatComplex));
+ outRow= (floatComplex*)malloc ((unsigned int)3*sizeof(floatComplex));
+ outCol= (floatComplex*)malloc ((unsigned int)2*sizeof(floatComplex));
+
+ in=FloatComplexMatrix(inR,inI,6);
+ rowVariance=FloatComplexMatrix(rowVarianceR,rowVarianceI,3);
+ colVariance=FloatComplexMatrix(colVarianceR,colVarianceI,2);
+
+
+ out=cvariancea(in,6);
+ printf("Variance \n");
+ printf("%f + %f *i\n",creals(out),cimags(out));
+
+ assert(fabs(creals(out)-varianceR)/fabs(creals(out)) <1e-6);
+ assert(fabs(cimags(out)-varianceI)/fabs(cimags(out)) <1e-6);
+
+
+
+
+
+ crowvariancea(in,2,3,outRow);
+ printf("Row Variance \n");
+ for (i=0;i<3;i++) printf("%1.20f + %1.20f *i\n",creals(outRow[i]),cimags(outRow[i]));
+
+
+ for (i=0;i<3;i++){
+ assert(fabs(creals(outRow[i])-rowVarianceR[i])/fabs(creals(outRow[i])) <1e-6);
+ assert(fabs(cimags(outRow[i])-rowVarianceI[i])/fabs(cimags(outRow[i])) <3e-5);
+ }
+
+
+
+ ccolumnvariancea(in,2,3,outCol);
+ printf("Column Variance \n");
+ for (i=0;i<2;i++) printf("%f + %f *i\n",creals(outCol[i]),cimags(outCol[i]));
+
+
+ for (i=0;i<2;i++){
+ assert(fabs(creals(outCol[i])-colVarianceR[i])/fabs(creals(outCol[i])) <1e-6);
+ assert(fabs(cimags(outCol[i])-colVarianceI[i])/fabs(cimags(outCol[i])) <3e-6);
+ }
+
+ free(in);
+ free(outCol);
+ free(outRow);
+
+
+ }
+
+
+ printf("\n");
+ printf("\n");
+ printf("\n");
+ printf("\n");
+
+
+ /* test 2 */
+ {
+ float inR[70]={0.0453502028249204158783f,0.2029444333165884017944f,0.7844273825176060199738f,
+ 0.2637536162510514259338f,0.4383276398293673992157f,0.866485897451639175415f,
+ 0.3792142109014093875885f,0.7668716078624129295349f,0.6006621322594583034515f,
+ 0.7856735605746507644653f,
+0.7387115550227463245392f,0.5544260339811444282532f,0.9929149555973708629608f,
+ 0.9757428467273712158203f,0.3709622272290289402008f,0.3032238213345408439636f,
+ 0.9519520117901265621185f,0.7127858083695173263550f,0.119237006176263093948f,
+ 0.5009163180366158485413f,
+0.3290053526870906352997f,0.4808946810662746429443f,0.3303695977665483951569f,
+ 0.6304475357756018638611f,0.2117190784774720668793f,0.4486023131757974624634f,
+ 0.5914509710855782032013f,0.6806742670014500617981f,0.0739296111278235912323f,
+ 0.9433694705367088317871f,
+0.1286330693401396274567f,0.2019080771133303642273f,0.1969303428195416927338f,
+ 0.8928690161556005477905f,0.4617918957956135272980f,0.6251291716471314430237f,
+ 0.7059706593863666057587f,0.7018169648945331573486f,0.4087999747134745121002f,
+ 0.0636221384629607200623f,
+0.0657393387518823146820f,0.5331004131585359573364f,0.0331581872887909412384f,
+ 0.3157835649326443672180f,0.3785823243670165538788f,0.4619523435831069946289f,
+ 0.6287369825877249240875f,0.2878515301272273063660f,0.3292048736475408077240f,
+ 0.4719233047217130661011f,
+0.3353769634850323200226f,0.5553069720044732093811f,0.1196080814115703105927f,
+ 0.7613999657332897186279f,0.4790988476015627384186f,0.2816969295963644981384f,
+ 0.2380097783170640468597f,0.3294205460697412490845f,0.2306728032417595386505f,
+ 0.2136296601966023445129f,
+0.4054998042993247509003f,0.3095371201634407043457f,0.6762971603311598300934f,
+ 0.970691631548106670380f,0.5441796570084989070892f,0.0204747971147298812866f,
+ 0.8941364963538944721222f,0.3490363890305161476135f,0.1105365152470767498016f,
+ 0.2023377753794193267822f};
+ float inI[70]={1.0377217042259871959686f,1.9830380710773169994354f,-0.6786614381708204746246f,
+ -1.7368789152242243289948f,0.6849579229019582271576f,-1.9756898251362144947052f, 0.9018773441202938556671f,0.4113956945948302745819f,0.0771432374604046344757f,
+ -2.6145569621585309505463f,
+-0.8694803346879780292511f,1.1954508102498948574066f,1.0175080369226634502411f,
+ -1.86952689336612820625f,1.6495719677768647670746f,-1.1282413271255791187286f,
+ 1.7159116868861019611359f,1.3512618443928658962250f,1.6467350018210709095001f,
+ -4.3247690196149051189423f,
+-1.1214177873916923999786f,0.3549467395059764385223f,1.5090364827774465084076f,
+ 0.0271988785825669765472f,-0.3927204073406755924225f,-2.2866433826275169849396f,
+ 2.4531399612314999103546f,1.2140426929108798503876f,0.1123848785646259784699f,
+ -1.2278760573826730251312f,
+0.5748759503476321697235f,0.1001535071991384029388f,0.7154782521538436412811f,
+ -0.3598340046592056751251f,0.1114491275511682033539f,-1.0214430955238640308380f,
+ 1.8411546354182064533234f,1.3313704966567456722260f,0.107393887359648942947f,
+ -2.1405860441736876964569f,
+-0.1921784919686615467072f,-0.0941377175040543079376f,-0.3007089742459356784821f,
+ -1.6332105011679232120514f,-0.9827875629998743534088f,-4.0793808070011436939240f,
+ 1.6021160488016903400421f,0.5996482106857001781464f,-1.0103867049328982830048f,
+ -1.9795853956602513790131f,
+-0.7019297261722385883331f,0.1910370937548577785492f,0.5148729826323688030243f,
+ -1.2210475285537540912628f,1.4409833527170121669769f,-2.0624672439880669116974f,
+ 2.2999203805811703205109f,1.6434787488542497158051f,-0.0813916879706084728241f,
+ -4.3653216282837092876434f,
+0.0896512451581656932831f,1.4530082489363849163055f,-0.1911182911135256290436f,
+ -1.5278804996050894260406f,-0.8655951828695833683014f,-2.6959278550930321216583f,
+ 1.089711368549615144730f,0.2611377011053264141083f,-0.0787748913280665874481f,
+ -1.675187868531793355942f};
+ float varianceR=- 2.3201230329620456949158f;
+ float varianceI=0.0135359053960125846894f;
+ float rowVarianceR[7]={- 2.1748250359163439071608f,- 4.0055927597555047725564f,- 1.9380991813636070375537f,- 1.211164632384367667584f,
+ - 2.3819157100812309302285f,- 3.865411523472068289209f,- 1.5488286339908912125907f};
+ float rowVarianceI[7]={- 0.5161401892195496277083f,- 0.0302397956223948334575f,0.0072526988331105511632f,0.2035074619460965072992f,
+ - 0.0227578793067023492369f,0.0176453877563822227048f,0.2048099414748655033858f};
+ float colVarianceR[10]={ - 0.5673920596394929072304f,
+ - 0.6095831761740567733554f,
+ - 0.4837275005370789138226f,
+ - 0.4518709923747168399899f,
+ - 1.1155710732654480210613f,
+ - 0.9922425930742954092168f,
+ - 0.2615272073355465187738f,
+ - 0.2448899237808548345896f,
+ - 0.5783271525148965253038f,
+ - 1.4662540245146995498970f };
+ float colVarianceI[10]={ - 0.2519451287679840834066f,
+ - 0.1132720366896080160801f,
+ - 0.0393753052279357945720f ,
+ 0.0678956480014177715665f ,
+ 0.0165011281984272333012f ,
+ 0.1043646242921155153915f ,
+ - 0.0697520473529744805541f ,
+ 0.0395755738577838397929f ,
+ - 0.0906906077772287183558f ,
+ 0.2030521845859689644698f };
+ floatComplex *in, *rowVariance, *colVariance;
+ floatComplex out, *outRow, *outCol;
+
+ in= (floatComplex*)malloc ((unsigned int)70*sizeof(floatComplex));
+ outRow= (floatComplex*)malloc ((unsigned int)7*sizeof(floatComplex));
+ outCol= (floatComplex*)malloc ((unsigned int)10*sizeof(floatComplex));
+
+ in=FloatComplexMatrix(inR,inI,70);
+ rowVariance=FloatComplexMatrix(rowVarianceR,rowVarianceI,7);
+ colVariance=FloatComplexMatrix(colVarianceR,colVarianceI,10);
+
+
+ out=cvariancea(in,70);
+ printf("Variance 2 \n");
+ printf("%f + %f *i\n",creals(out),cimags(out));
+
+ assert(fabs(creals(out)-varianceR)/fabs(creals(out)) <1e-6);
+ assert(fabs(cimags(out)-varianceI)/fabs(cimags(out)) <3e-5);
+
+
+
+
+
+ crowvariancea(in,10,7,outRow);
+ printf("Row Variance 2 \n");
+ for (i=0;i<7;i++) printf("%1.20f + %1.20f *i\n",creals(outRow[i]),cimags(outRow[i]));
+
+
+ for (i=0;i<7;i++){
+ assert(fabs(creals(outRow[i])-rowVarianceR[i])/fabs(creals(outRow[i])) <1e-6);
+ assert(fabs(cimags(outRow[i])-rowVarianceI[i])/fabs(cimags(outRow[i])) <3e-5);
+ }
+
+
+
+ ccolumnvariancea(in,10,7,outCol);
+ printf("Column Variance 2 \n");
+ for (i=0;i<10;i++) printf("%f + %f *i\n",creals(outCol[i]),cimags(outCol[i]));
+
+
+ for (i=0;i<10;i++){
+ assert(fabs(creals(outCol[i])-colVarianceR[i])/fabs(creals(outCol[i])) <1e-6);
+ assert(fabs(cimags(outCol[i])-colVarianceI[i])/fabs(cimags(outCol[i])) <3e-6);
+ }
+
+ free(in);
+ free(outCol);
+ free(outRow);
+ }
+
+ return 0;
+}
+
+
+
+
+
+static int testFloatVariance (void) {
+ printf("\n\n\n\n*********************\n");
+ printf("***** Float Tests Nono****\n");
+ printf("*********************\n");
+ assert(floatVariance()==0);
+ assert(floatComplexVariance()==0);
+
+
+ return 0;
+}
+
+int main(void) {
+ assert(testFloatVariance () == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj
new file mode 100644
index 00000000..51b25354
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{774783E0-2443-42DB-AA48-04730E59B396}</ProjectGuid>
+ <RootNamespace>testDoubleVariance</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleVariance.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj.filters
new file mode 100644
index 00000000..8b08a255
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVariance/testDoubleVariance.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleVariance.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj
new file mode 100644
index 00000000..c87dce75
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{CCD3F89C-A278-457D-BFD6-ADEEF4860E07}</ProjectGuid>
+ <RootNamespace>testDoubleVarianceNono</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleVarianceNono.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj.filters
new file mode 100644
index 00000000..f7a7ed72
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_DoubleVarianceNono/testDoubleVarianceNono.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleVarianceNono.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj
new file mode 100644
index 00000000..05b4a448
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{53F78E7F-3024-4999-BE70-F4A242357809}</ProjectGuid>
+ <RootNamespace>testFloatVariance</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../elementaryFunctions/includes;../../../operations/includes;../../../matrixOperations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../elementaryFunctions/includes;../../../operations/includes;../../../matrixOperations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../elementaryFunctions/includes;../../../operations/includes;../../../matrixOperations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../elementaryFunctions/includes;../../../operations/includes;../../../matrixOperations/includes;../../../type;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatVariance.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj.filters
new file mode 100644
index 00000000..d0a741bb
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVariance/testFloatVariance.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatVariance.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj
new file mode 100644
index 00000000..321c2a71
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{DEF1A42F-599B-4B1D-AB11-202E86670021}</ProjectGuid>
+ <RootNamespace>testFloatVarianceNono</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../../includes;../../../operations/includes;../../../type;../../includes;../../../elementaryFunctions/includes;../../../matrixOperations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatVarianceNono.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\statisticsFunctions.vcxproj">
+ <Project>{e11ed064-3bf2-4f70-b66e-3223c737ec60}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj.filters b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj.filters
new file mode 100644
index 00000000..e0eb6dbf
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/test_FloatVarianceNono/testFloatVarianceNono.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatVarianceNono.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/statisticsFunctions/variance/zcolumnvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/zcolumnvariancea.c
new file mode 100644
index 00000000..bba80303
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/zcolumnvariancea.c
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void zcolumnvariancea(doubleComplex *in, int lines, int columns, doubleComplex* out){
+
+ int i = 0 ;
+
+ doubleComplex* transp = (doubleComplex*) malloc ( sizeof (doubleComplex) *(unsigned int) (lines*columns));
+
+
+
+ ztransposea ( in , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = zvariancea ( transp + i*columns , columns ) ;
+
+
+ free (transp);
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variance/zrowvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/zrowvariancea.c
new file mode 100644
index 00000000..285889aa
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/zrowvariancea.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+void zrowvariancea(doubleComplex *in, int lines, int columns, doubleComplex* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = zvariancea ( in + i*lines , lines ) ;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variance/zvariancea.c b/2.3-1/src/c/statisticsFunctions/variance/zvariancea.c
new file mode 100644
index 00000000..92e2667d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variance/zvariancea.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variance.h"
+
+doubleComplex zvariancea(doubleComplex *in, int size)
+{
+ int i = 0 ;
+
+ doubleComplex sum = DoubleComplex ( 0 , 0 ) ;
+ doubleComplex temp = DoubleComplex ( 0 , 0 ) ;
+ doubleComplex variance = DoubleComplex ( 0 , 0 );
+ doubleComplex mean = zmeana ( in , size ) ;
+
+ for ( i = 0 ; i < size ; i++)
+ {
+ temp = zdiffs( in[i] , mean ) ;
+ sum = zadds ( sum , zpows ( temp , DoubleComplex ( 2, 0) ) );
+ }
+
+ variance = zrdivs (sum , DoubleComplex ( (size - 1),0 ));
+
+ return variance ;
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/Makefile.am b/2.3-1/src/c/statisticsFunctions/variancef/Makefile.am
new file mode 100644
index 00000000..804025bf
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/Makefile.am
@@ -0,0 +1,89 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libvariancef_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libvariancef.la
+
+libvariancef_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = svariancefa.c \
+ scolumnvariancefa.c \
+ dvariancefa.c \
+ srowvariancefa.c \
+ drowvariancefa.c \
+ dcolumnvariancefa.c \
+ cvariancefa.c \
+ crowvariancefa.c \
+ ccolumnvariancefa.c \
+ zvariancefa.c \
+ zrowvariancefa.c \
+ zcolumnvariancefa.c
+
+HEAD = ../includes/variancef.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/statisticsFunctions/variancef/libvariancef.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+check_PROGRAMS = testFloatVariancef testDoubleVariancef
+
+TESTS = testFloatVariancef testDoubleVariancef
+
+#
+# -*- variancef Tests -*-
+#
+testFloatVariancef_SOURCES = testFloatVariancef.c
+testFloatVariancef_CFLAGS = $(check_INCLUDES)
+testFloatVariancef_LDADD = $(check_LDADD)
+
+testDoubleVariancef_SOURCES =testDoubleVariancef.c
+testDoubleVariancef_CFLAGS = $(check_INCLUDES)
+testDoubleVariancef_LDADD = $(check_LDADD)
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/Makefile.in b/2.3-1/src/c/statisticsFunctions/variancef/Makefile.in
new file mode 100644
index 00000000..9cbd3dfa
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/Makefile.in
@@ -0,0 +1,886 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatVariancef$(EXEEXT) \
+ testDoubleVariancef$(EXEEXT)
+TESTS = testFloatVariancef$(EXEEXT) testDoubleVariancef$(EXEEXT)
+subdir = src/c/statisticsFunctions/variancef
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libvariancef_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libvariancef_la-svariancefa.lo \
+ libvariancef_la-scolumnvariancefa.lo \
+ libvariancef_la-dvariancefa.lo \
+ libvariancef_la-srowvariancefa.lo \
+ libvariancef_la-drowvariancefa.lo \
+ libvariancef_la-dcolumnvariancefa.lo \
+ libvariancef_la-cvariancefa.lo \
+ libvariancef_la-crowvariancefa.lo \
+ libvariancef_la-ccolumnvariancefa.lo \
+ libvariancef_la-zvariancefa.lo \
+ libvariancef_la-zrowvariancefa.lo \
+ libvariancef_la-zcolumnvariancefa.lo
+am_libvariancef_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libvariancef_la_OBJECTS = $(am_libvariancef_la_OBJECTS)
+libvariancef_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libvariancef_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleVariancef_OBJECTS = \
+ testDoubleVariancef-testDoubleVariancef.$(OBJEXT)
+testDoubleVariancef_OBJECTS = $(am_testDoubleVariancef_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/statisticsFunctions/variancef/libvariancef.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la
+testDoubleVariancef_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleVariancef_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testDoubleVariancef_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_testFloatVariancef_OBJECTS = \
+ testFloatVariancef-testFloatVariancef.$(OBJEXT)
+testFloatVariancef_OBJECTS = $(am_testFloatVariancef_OBJECTS)
+testFloatVariancef_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatVariancef_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(testFloatVariancef_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libvariancef_la_SOURCES) $(testDoubleVariancef_SOURCES) \
+ $(testFloatVariancef_SOURCES)
+DIST_SOURCES = $(libvariancef_la_SOURCES) \
+ $(testDoubleVariancef_SOURCES) $(testFloatVariancef_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libvariancef_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I ../includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libvariancef.la
+libvariancef_la_SOURCES = $(HEAD) $(SRC)
+SRC = svariancefa.c \
+ scolumnvariancefa.c \
+ dvariancefa.c \
+ srowvariancefa.c \
+ drowvariancefa.c \
+ dcolumnvariancefa.c \
+ cvariancefa.c \
+ crowvariancefa.c \
+ ccolumnvariancefa.c \
+ zvariancefa.c \
+ zrowvariancefa.c \
+ zcolumnvariancefa.c
+
+HEAD = ../includes/variancef.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/statisticsFunctions/includes \
+ -I $(top_builddir)/src/c/elementaryFunctions/includes \
+ -I $(top_builddir)/src/c/matrixOperations/includes \
+ -I $(top_builddir)/src/c/operations/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/operations/addition/libAddition.la \
+ $(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/src/fortran/lapack/libscilapack.la \
+ $(top_builddir)/src/c/statisticsFunctions/variancef/libvariancef.la \
+ $(top_builddir)/src/c/statisticsFunctions/sum/libSum.la \
+ $(top_builddir)/src/c/statisticsFunctions/meanf/libMeanf.la \
+ $(top_builddir)/src/c/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/src/c/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/src/c/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/src/c/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/src/c/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/src/c/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/src/c/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/src/c/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/src/c/elementaryFunctions/lnp1m1/libLnp1m1.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/src/c/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/src/c/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/src/c/operations/division/libDivision.la \
+ $(top_builddir)/src/c/auxiliaryFunctions/conj/libConj.la \
+ @LIBMATH@
+
+
+#
+# -*- variancef Tests -*-
+#
+testFloatVariancef_SOURCES = testFloatVariancef.c
+testFloatVariancef_CFLAGS = $(check_INCLUDES)
+testFloatVariancef_LDADD = $(check_LDADD)
+testDoubleVariancef_SOURCES = testDoubleVariancef.c
+testDoubleVariancef_CFLAGS = $(check_INCLUDES)
+testDoubleVariancef_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/statisticsFunctions/variancef/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/statisticsFunctions/variancef/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libvariancef.la: $(libvariancef_la_OBJECTS) $(libvariancef_la_DEPENDENCIES)
+ $(libvariancef_la_LINK) -rpath $(pkglibdir) $(libvariancef_la_OBJECTS) $(libvariancef_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleVariancef$(EXEEXT): $(testDoubleVariancef_OBJECTS) $(testDoubleVariancef_DEPENDENCIES)
+ @rm -f testDoubleVariancef$(EXEEXT)
+ $(testDoubleVariancef_LINK) $(testDoubleVariancef_OBJECTS) $(testDoubleVariancef_LDADD) $(LIBS)
+testFloatVariancef$(EXEEXT): $(testFloatVariancef_OBJECTS) $(testFloatVariancef_DEPENDENCIES)
+ @rm -f testFloatVariancef$(EXEEXT)
+ $(testFloatVariancef_LINK) $(testFloatVariancef_OBJECTS) $(testFloatVariancef_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-ccolumnvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-crowvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-cvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-dcolumnvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-drowvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-dvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-scolumnvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-srowvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-svariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-zcolumnvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-zrowvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvariancef_la-zvariancefa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatVariancef-testFloatVariancef.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libvariancef_la-svariancefa.lo: svariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-svariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-svariancefa.Tpo -c -o libvariancef_la-svariancefa.lo `test -f 'svariancefa.c' || echo '$(srcdir)/'`svariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-svariancefa.Tpo $(DEPDIR)/libvariancef_la-svariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='svariancefa.c' object='libvariancef_la-svariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-svariancefa.lo `test -f 'svariancefa.c' || echo '$(srcdir)/'`svariancefa.c
+
+libvariancef_la-scolumnvariancefa.lo: scolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-scolumnvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-scolumnvariancefa.Tpo -c -o libvariancef_la-scolumnvariancefa.lo `test -f 'scolumnvariancefa.c' || echo '$(srcdir)/'`scolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-scolumnvariancefa.Tpo $(DEPDIR)/libvariancef_la-scolumnvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scolumnvariancefa.c' object='libvariancef_la-scolumnvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-scolumnvariancefa.lo `test -f 'scolumnvariancefa.c' || echo '$(srcdir)/'`scolumnvariancefa.c
+
+libvariancef_la-dvariancefa.lo: dvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-dvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-dvariancefa.Tpo -c -o libvariancef_la-dvariancefa.lo `test -f 'dvariancefa.c' || echo '$(srcdir)/'`dvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-dvariancefa.Tpo $(DEPDIR)/libvariancef_la-dvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dvariancefa.c' object='libvariancef_la-dvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-dvariancefa.lo `test -f 'dvariancefa.c' || echo '$(srcdir)/'`dvariancefa.c
+
+libvariancef_la-srowvariancefa.lo: srowvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-srowvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-srowvariancefa.Tpo -c -o libvariancef_la-srowvariancefa.lo `test -f 'srowvariancefa.c' || echo '$(srcdir)/'`srowvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-srowvariancefa.Tpo $(DEPDIR)/libvariancef_la-srowvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srowvariancefa.c' object='libvariancef_la-srowvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-srowvariancefa.lo `test -f 'srowvariancefa.c' || echo '$(srcdir)/'`srowvariancefa.c
+
+libvariancef_la-drowvariancefa.lo: drowvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-drowvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-drowvariancefa.Tpo -c -o libvariancef_la-drowvariancefa.lo `test -f 'drowvariancefa.c' || echo '$(srcdir)/'`drowvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-drowvariancefa.Tpo $(DEPDIR)/libvariancef_la-drowvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drowvariancefa.c' object='libvariancef_la-drowvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-drowvariancefa.lo `test -f 'drowvariancefa.c' || echo '$(srcdir)/'`drowvariancefa.c
+
+libvariancef_la-dcolumnvariancefa.lo: dcolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-dcolumnvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-dcolumnvariancefa.Tpo -c -o libvariancef_la-dcolumnvariancefa.lo `test -f 'dcolumnvariancefa.c' || echo '$(srcdir)/'`dcolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-dcolumnvariancefa.Tpo $(DEPDIR)/libvariancef_la-dcolumnvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dcolumnvariancefa.c' object='libvariancef_la-dcolumnvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-dcolumnvariancefa.lo `test -f 'dcolumnvariancefa.c' || echo '$(srcdir)/'`dcolumnvariancefa.c
+
+libvariancef_la-cvariancefa.lo: cvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-cvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-cvariancefa.Tpo -c -o libvariancef_la-cvariancefa.lo `test -f 'cvariancefa.c' || echo '$(srcdir)/'`cvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-cvariancefa.Tpo $(DEPDIR)/libvariancef_la-cvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cvariancefa.c' object='libvariancef_la-cvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-cvariancefa.lo `test -f 'cvariancefa.c' || echo '$(srcdir)/'`cvariancefa.c
+
+libvariancef_la-crowvariancefa.lo: crowvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-crowvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-crowvariancefa.Tpo -c -o libvariancef_la-crowvariancefa.lo `test -f 'crowvariancefa.c' || echo '$(srcdir)/'`crowvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-crowvariancefa.Tpo $(DEPDIR)/libvariancef_la-crowvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crowvariancefa.c' object='libvariancef_la-crowvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-crowvariancefa.lo `test -f 'crowvariancefa.c' || echo '$(srcdir)/'`crowvariancefa.c
+
+libvariancef_la-ccolumnvariancefa.lo: ccolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-ccolumnvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-ccolumnvariancefa.Tpo -c -o libvariancef_la-ccolumnvariancefa.lo `test -f 'ccolumnvariancefa.c' || echo '$(srcdir)/'`ccolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-ccolumnvariancefa.Tpo $(DEPDIR)/libvariancef_la-ccolumnvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ccolumnvariancefa.c' object='libvariancef_la-ccolumnvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-ccolumnvariancefa.lo `test -f 'ccolumnvariancefa.c' || echo '$(srcdir)/'`ccolumnvariancefa.c
+
+libvariancef_la-zvariancefa.lo: zvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-zvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-zvariancefa.Tpo -c -o libvariancef_la-zvariancefa.lo `test -f 'zvariancefa.c' || echo '$(srcdir)/'`zvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-zvariancefa.Tpo $(DEPDIR)/libvariancef_la-zvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zvariancefa.c' object='libvariancef_la-zvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-zvariancefa.lo `test -f 'zvariancefa.c' || echo '$(srcdir)/'`zvariancefa.c
+
+libvariancef_la-zrowvariancefa.lo: zrowvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-zrowvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-zrowvariancefa.Tpo -c -o libvariancef_la-zrowvariancefa.lo `test -f 'zrowvariancefa.c' || echo '$(srcdir)/'`zrowvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-zrowvariancefa.Tpo $(DEPDIR)/libvariancef_la-zrowvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zrowvariancefa.c' object='libvariancef_la-zrowvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-zrowvariancefa.lo `test -f 'zrowvariancefa.c' || echo '$(srcdir)/'`zrowvariancefa.c
+
+libvariancef_la-zcolumnvariancefa.lo: zcolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -MT libvariancef_la-zcolumnvariancefa.lo -MD -MP -MF $(DEPDIR)/libvariancef_la-zcolumnvariancefa.Tpo -c -o libvariancef_la-zcolumnvariancefa.lo `test -f 'zcolumnvariancefa.c' || echo '$(srcdir)/'`zcolumnvariancefa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libvariancef_la-zcolumnvariancefa.Tpo $(DEPDIR)/libvariancef_la-zcolumnvariancefa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zcolumnvariancefa.c' object='libvariancef_la-zcolumnvariancefa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvariancef_la_CFLAGS) $(CFLAGS) -c -o libvariancef_la-zcolumnvariancefa.lo `test -f 'zcolumnvariancefa.c' || echo '$(srcdir)/'`zcolumnvariancefa.c
+
+testDoubleVariancef-testDoubleVariancef.o: testDoubleVariancef.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVariancef_CFLAGS) $(CFLAGS) -MT testDoubleVariancef-testDoubleVariancef.o -MD -MP -MF $(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Tpo -c -o testDoubleVariancef-testDoubleVariancef.o `test -f 'testDoubleVariancef.c' || echo '$(srcdir)/'`testDoubleVariancef.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Tpo $(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleVariancef.c' object='testDoubleVariancef-testDoubleVariancef.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVariancef_CFLAGS) $(CFLAGS) -c -o testDoubleVariancef-testDoubleVariancef.o `test -f 'testDoubleVariancef.c' || echo '$(srcdir)/'`testDoubleVariancef.c
+
+testDoubleVariancef-testDoubleVariancef.obj: testDoubleVariancef.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVariancef_CFLAGS) $(CFLAGS) -MT testDoubleVariancef-testDoubleVariancef.obj -MD -MP -MF $(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Tpo -c -o testDoubleVariancef-testDoubleVariancef.obj `if test -f 'testDoubleVariancef.c'; then $(CYGPATH_W) 'testDoubleVariancef.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleVariancef.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Tpo $(DEPDIR)/testDoubleVariancef-testDoubleVariancef.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDoubleVariancef.c' object='testDoubleVariancef-testDoubleVariancef.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleVariancef_CFLAGS) $(CFLAGS) -c -o testDoubleVariancef-testDoubleVariancef.obj `if test -f 'testDoubleVariancef.c'; then $(CYGPATH_W) 'testDoubleVariancef.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleVariancef.c'; fi`
+
+testFloatVariancef-testFloatVariancef.o: testFloatVariancef.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVariancef_CFLAGS) $(CFLAGS) -MT testFloatVariancef-testFloatVariancef.o -MD -MP -MF $(DEPDIR)/testFloatVariancef-testFloatVariancef.Tpo -c -o testFloatVariancef-testFloatVariancef.o `test -f 'testFloatVariancef.c' || echo '$(srcdir)/'`testFloatVariancef.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatVariancef-testFloatVariancef.Tpo $(DEPDIR)/testFloatVariancef-testFloatVariancef.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatVariancef.c' object='testFloatVariancef-testFloatVariancef.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVariancef_CFLAGS) $(CFLAGS) -c -o testFloatVariancef-testFloatVariancef.o `test -f 'testFloatVariancef.c' || echo '$(srcdir)/'`testFloatVariancef.c
+
+testFloatVariancef-testFloatVariancef.obj: testFloatVariancef.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVariancef_CFLAGS) $(CFLAGS) -MT testFloatVariancef-testFloatVariancef.obj -MD -MP -MF $(DEPDIR)/testFloatVariancef-testFloatVariancef.Tpo -c -o testFloatVariancef-testFloatVariancef.obj `if test -f 'testFloatVariancef.c'; then $(CYGPATH_W) 'testFloatVariancef.c'; else $(CYGPATH_W) '$(srcdir)/testFloatVariancef.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testFloatVariancef-testFloatVariancef.Tpo $(DEPDIR)/testFloatVariancef-testFloatVariancef.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testFloatVariancef.c' object='testFloatVariancef-testFloatVariancef.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatVariancef_CFLAGS) $(CFLAGS) -c -o testFloatVariancef-testFloatVariancef.obj `if test -f 'testFloatVariancef.c'; then $(CYGPATH_W) 'testFloatVariancef.c'; else $(CYGPATH_W) '$(srcdir)/testFloatVariancef.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c
new file mode 100644
index 00000000..4b00a087
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+#include "matrixTranspose.h"
+
+void ccolumnvariancefa(floatComplex *in1, int lines, int columns,floatComplex *in2, floatComplex* out){
+
+ int i = 0 ;
+
+ floatComplex* transp = (floatComplex*) malloc ( sizeof (double) *(unsigned int) (lines*columns));
+
+
+
+ ctransposea ( in1 , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = cvariancefa ( transp + i*columns , columns , in2 ) ;
+
+
+ free (transp);
+
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/crowvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/crowvariancefa.c
new file mode 100644
index 00000000..1e4f8549
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/crowvariancefa.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+
+void crowvariancefa(floatComplex *in1, int lines, int columns,floatComplex *in2, floatComplex* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = cvariancefa ( in1 + i*lines , lines , in2) ;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/cvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/cvariancefa.c
new file mode 100644
index 00000000..4f4871c6
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/cvariancefa.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+#include "division.h"
+
+floatComplex cvariancefa(floatComplex *in1, int size, floatComplex *in2)
+
+{
+ int i = 0 ;
+ floatComplex temp = FloatComplex (0.0f, 0.0f );
+ floatComplex accumulate =FloatComplex (0.0f, 0.0f );
+ floatComplex accumulateFre = FloatComplex (0.0f, 0.0f );
+
+ floatComplex meanf = cmeanfa (in1 , size , in2);
+
+ for(i = 0 ; i < size ; ++i)
+ {
+ temp = cpows ( cdiffs (in1[i] , meanf ) ,FloatComplex (2.0f, 0.0f ) );
+ temp = cmuls( in2[i] , temp);
+
+ accumulate = cadds( temp , accumulate);
+ accumulateFre = cadds (in2[i] ,accumulateFre );
+ }
+ return crdivs (accumulate , cdiffs (accumulateFre ,FloatComplex(1.0f,0.0f)) );
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c
new file mode 100644
index 00000000..686e6de4
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+#include "matrixTranspose.h"
+
+void dcolumnvariancefa(double *in1, int lines, int columns, double *in2, double* out){
+
+ int i = 0 ;
+
+ double* transp = (double*) malloc ( sizeof (double) *(unsigned int) (lines*columns));
+
+
+
+ dtransposea ( in1 , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = dvariancefa ( transp + i*columns , columns , in2) ;
+
+
+ free (transp);
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/drowvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/drowvariancefa.c
new file mode 100644
index 00000000..274e8281
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/drowvariancefa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+
+void drowvariancefa(double *in1, int lines, int columns,double *in2, double* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = dvariancefa ( in1 + i*lines , lines , in2 ) ;
+
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/dvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/dvariancefa.c
new file mode 100644
index 00000000..32bd38ca
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/dvariancefa.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+
+double dvariancefa(double *in1, int size , double * in2)
+{
+ int i = 0 ;
+ double temp = 0.0;
+ double accumulate = 0.0 ;
+ double accumulateFre = 0.0 ;
+
+ double meanf = dmeanfa (in1 , size , in2);
+
+ for(i = 0 ; i < size ; ++i)
+ {
+ temp = dpows ( (in1[i] - meanf ) ,2 );
+ temp *= in2[i];
+
+ accumulate += temp ;
+ accumulateFre += in2[i];
+ }
+
+ return accumulate / (accumulateFre -1);
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/scolumnvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/scolumnvariancefa.c
new file mode 100644
index 00000000..a0283aa1
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/scolumnvariancefa.c
@@ -0,0 +1,47 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+#include "meanf.h"
+
+
+void scolumnvariancefa(float *in1, int lines, int columns, float *in2, float* out){
+ int i = 0;
+ int j = 0;
+ float temp = 0.0f;
+ float accumulate = 0.0f;
+ float accumulateFre = 0.0f ;
+
+ scolumnmeanfa(in1, lines, columns, in2, out );
+
+
+ /*we first multiply each cell of the input matrix by its coefficient*/
+ for (j = 0; j < lines; ++j)
+ {
+ accumulate = 0.0f;
+ accumulateFre= 0.0f;
+ temp = 0.0f;
+
+ for ( i = 0 ; i < columns; ++i )
+ {
+ temp = spows ( (in1[lines*i + j] - out[j] ) ,2 );
+ temp *= in2[lines*i + j];
+
+ accumulate += temp ;
+ accumulateFre += in2[lines*i + j];
+ }
+ out[j] = accumulate / (accumulateFre - 1) ;
+ }
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/srowvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/srowvariancefa.c
new file mode 100644
index 00000000..36c4783d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/srowvariancefa.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+
+void srowvariancefa(float *in1, int lines, int columns, float *in2, float* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = svariancefa ( in1 + i*lines , lines,in2 + i*lines ) ;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/svariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/svariancefa.c
new file mode 100644
index 00000000..f49d2b38
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/svariancefa.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+
+/*
+s_moyennepond = meanf(x, fre)
+s_ecartmoyenne = x - s_moyennepond
+s_ecartcarre = s_ecartmoyenne.^2
+s_ecartcarrepondere = s_ecartcarre .* fre
+s = sum( s_ecartcarrepondere )/(sumfre - 1),
+*/
+float svariancefa(float *in1, int size, float* in2)
+{
+ int i = 0 ;
+ float temp = 0.0f;
+ float accumulate = 0.0f ;
+ float accumulateFre = 0.0f ;
+
+ float meanf = smeanfa (in1 , size , in2);
+ /*printf ("\nmeanf %lf \n" ,meanf);*/
+ for(i = 0 ; i < size ; ++i)
+ {
+
+ temp = spows ( (in1[i] - meanf ) ,2 );
+ temp *= in2[i];
+
+ accumulate += temp ;
+ accumulateFre += in2[i];
+
+
+ }
+
+ return accumulate / (accumulateFre - 1) ;
+}
+
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariance.c b/2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariance.c
new file mode 100644
index 00000000..b85a1571
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariance.c
@@ -0,0 +1,335 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+
+#include "variance.h"
+
+#define SINGLE 1.323312455
+#define LINES 7
+#define COLUMNS 10
+#define MATRIX {0.102326436434,0.939044147730,0.638607255649,0.059883427806,0.311199211050,\
+ 0.377510951832,0.909709410276,0.928138985299,0.855155082885,0.308869514614,\
+0.729239261709,0.127006734256,0.242402311414,0.807912770193,0.621117659844,\
+ 0.081452373881,0.088844371960,0.587072817143,0.068080495112,0.995457543526,\
+0.835322400089,0.656235548668,0.767905956600,0.706818781793,0.187699332368,\
+ 0.568810169585,0.401039466728,0.397196868435,0.483212330844,0.161224133335,\
+0.932864250615,0.719208867755,0.262409000657,0.931377100293,0.596724558622,\
+ 0.310327019077,0.350161732174,0.104841318447,0.830732351169,0.804621329065,\
+0.050784428138,0.551920620725,0.125952405389,0.083156193607,0.420623748098,\
+ 0.168616071343,0.707545555662,0.104633864947,0.465604968835,0.489758284763,\
+0.167727907188,0.760689914692,0.454900974408,0.063926273491,0.87152507063,0.978668818716,\
+ 0.135898929089,0.484713065904,0.785042577423,0.049412418623,\
+0.947593610268,0.884073690511,0.212796610314,0.654832502827,0.007690255996,\
+ 0.031808692031,0.706323316786,0.008731670678,0.270014822017,0.153652121313}
+
+
+#define MATRIXROW {0.1688249423502767021521 , 0.0729081225272336097554 , 0.0579879770921138057438 , 0.1499989757031960635469 , 0.0850863194040760717485 , 0.1085086384507867873772 , 0.0969379859569881041637 , 0.1072816602642319844252 , 0.0913638718167188862429 , 0.1285778184208021535095 }
+#define MATRIXCOL { 0.1233078274276283442523, \
+ 0.1232135941992091865416 , \
+ 0.0540377259589001762707 , \
+ 0.0925512303008872161403 , \
+ 0.0555055644879708723338 , \
+ 0.1276299219577190779962 , \
+ 0.1385167433745558840386 }
+
+
+#define IMATRIX {0.05826747464016080,0.99946373142302036,0.85600351681932807,0.62329693790525198,\
+ 0.49792320514097810,0.44210509583353996,0.55833499459549785,0.09633230511099100,\
+ 0.80100952507928014,0.34466254524886608,\
+0.48831309471279383,0.95087061496451497,0.01332767866551876,0.76261807000264525,\
+ 0.74346329551190138,0.65157829830422997,0.57006288319826126,0.70580983115360141,\
+ 0.51323400903493166,0.64977857517078519,\
+0.80352442665025592,0.69910932797938585,0.69258948462083936,0.91169391758739948,\
+ 0.92454590043053031,0.27637310232967138,0.31692579621449113,0.86305770650506020,\
+ 0.20109100220724940,0.01225362811237574,\
+0.38199013099074364,0.96006405679509044,0.16440964583307505,0.59608811559155583,\
+ 0.72101737372577190,0.58661046391353011,0.99326277803629637,0.00761850038543344,\
+ 0.78608208894729614,0.89965870184823871,\
+0.43115562805905938,0.81857266277074814,0.83410377753898501,0.55516970623284578,\
+ 0.51345925079658628,0.04770902730524540,0.80747798969969153,0.80489510949701071,\
+ 0.78650354826822877,0.30791273340582848,\
+0.75731822755187750,0.53423820668831468,0.42618893459439278,0.85448804078623652,\
+ 0.92601215932518244,0.94169309409335256,0.85547966323792934,0.59637623047456145,\
+ 0.69515300076454878,0.18359116325154901,\
+0.01200280850753188,0.2255702270194888,0.34853330114856362,0.55313225090503693,\
+ 0.63695094687864184,0.96132039744406939,0.50314606027677655,0.11768362112343311,\
+ 0.42481321236118674,0.52963322307914495}
+
+#define RMATRIX {0.53868199465796351,0.65326874051243067,0.37497402401641011,0.60422550700604916,\
+ 0.33622304117307067,0.03531436901539564,0.33213760564103723,0.39493087679147720,\
+ 0.04170337272807956,0.87363853026181459,\
+0.65950810909271240,0.31221040291711688,0.15333442110568285,0.66478573577478528,\
+ 0.44319023378193378,0.40884594758972526,0.94536898937076330,0.67733758920803666,\
+ 0.18673646822571754,0.92331133363768458,\
+0.55921846115961671,0.75012728199362755,0.23257926432415843,0.57102064136415720,\
+ 0.60969385923817754,0.67336730472743511,0.07624059682711959,0.10437540244311094,\
+ 0.95672677317634225,0.19771346449851990,\
+0.05278092902153730,0.75808868417516351,0.17633479088544846,0.01146994484588504,\
+ 0.36732212174683809,0.19948644982650876,0.52714426256716251,0.21445603063330054,\
+ 0.94751045759767294,0.04272260749712586,\
+0.03257346292957664,0.53217577841132879,0.87635089689865708,0.15471007302403450,\
+ 0.25448470888659358,0.91815057490020990,0.72509902389720082,0.87545845471322536,\
+ 0.05635281419381499,0.01432112138718367,\
+0.57406943850219250,0.80984140699729323,0.01664119493216276,0.93888836959376931,\
+ 0.11264799535274506,0.66036546928808093,0.76042845565825701,0.25908330874517560,\
+ 0.88014078326523304,0.70332178613170981,\
+0.94614937948063016,0.78529163636267185,0.20241560926660895,0.10981105919927359,\
+ 0.75415370846167207,0.15320260450243950,0.59521253732964396,0.71318271104246378,\
+ 0.51107599260285497,0.52125945501029491}
+
+
+
+
+
+
+#define IMATRIXROW {-0.0419293790250184,-0.05416405376783551,+0.11775191182077104,+0.08015791690354153,+0.00011032748454003,\
+-0.10124210045965254,0.06720614014223115,+0.02470873836336094,-0.07082037296251543,-0.00621987869853545}
+
+#define RMATRIXROW {0.01439621349781126,-0.04697393442028135,-0.03018604392150223,0.09765990436118642,0.01606884471097247,\
+-0.00604250542333471,0.02870576510687836,-0.04985742926427023,0.12356001472881707,0.05909180726174274}
+
+#define IMATRIXCOL {-0.01904810719805961,+0.04121453132770223,+0.00378553967089328,\
++0.10307670507342410,+0.03497427750676810,+0.01761849804019567,-0.10182321471060848}
+
+#define RMATRIXCOL {-0.02739893277693160,0.01792852626358409,-0.02205084134302381,\
+-0.01012610864032573,0.07317682977907164,0.04762062457313784,0.00849011627117621}
+
+
+static void dvariancesTest (void ) {
+
+ double toTest = dvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-16 ) ;
+}
+
+
+static void drowvariancesTest (void ) {
+
+ double toTest = drowvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-16 ) ;
+}
+
+static void dcolumnvariancesTest (void) {
+
+ double toTest = dcolumnvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-16 ) ;
+}
+
+
+static void zvariancesTest (void ) {
+
+ doubleComplex toTest = zvariances ( DoubleComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( zreals( toTest) - SINGLE ) / fabs( zreals( toTest)) < 1e-16 ) ;
+ assert ( fabs ( zimags( toTest) - SINGLE ) / fabs( zimags( toTest)) < 1e-16 ) ;
+}
+
+static void zrowvariancesTest (void ) {
+
+ doubleComplex toTest = zrowvariances ( DoubleComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( zreals( toTest) - SINGLE ) / fabs( zreals( toTest)) < 1e-16 ) ;
+ assert ( fabs ( zimags( toTest) - SINGLE ) / fabs( zimags( toTest)) < 1e-16 ) ;
+}
+
+static void zcolumnvariancesTest (void ) {
+
+ doubleComplex toTest = zrowvariances ( DoubleComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( zreals( toTest) - SINGLE ) / fabs( zreals( toTest)) < 1e-16 ) ;
+ assert ( fabs ( zimags( toTest) - SINGLE ) / fabs( zimags( toTest)) < 1e-16 ) ;
+}
+
+
+
+
+
+
+static void dvarianceaTest ( void){
+
+ double mtoTest[] = MATRIX ;
+ double result = 0.1007532974338590653352;
+ double out = dvariancea ( mtoTest , LINES*COLUMNS ); ;
+
+
+
+ printf ( "out : %1.20f\t result : %1.20f\t\n" , out , result ) ;
+
+
+
+ assert ( fabs ( out - result ) / fabs( out ) < 3e-16 ) ;
+
+}
+
+
+static void drowvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ double mtoTest[] = MATRIX ;
+ double result[LINES] = MATRIXCOL ;
+ double out[LINES] ;
+
+ drowvariancea ( mtoTest , COLUMNS , LINES , out ) ;
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "ROWout : %1.20f\t result : %1.20f\t\n" , out[i] , result [i] ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 3e-16 ) ;
+ }
+
+}
+
+static void dcolumnvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ double mtoTest[] = MATRIX ;
+ double result[COLUMNS] = MATRIXROW ;
+ double out[ COLUMNS] ;
+
+
+
+ dcolumnvariancea ( mtoTest , COLUMNS, LINES , out ) ;
+
+ for ( i = 0 ; i < COLUMNS; i++)
+ {
+ printf ( "%dCOLout : %1.20f\t result : %1.20f\t\n" ,i, out[i] , result [i] ) ; }
+ for ( i = 0 ; i < COLUMNS; i++)
+ {
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 3e-16 ) ;
+ }
+
+}
+
+
+
+
+static void zvarianceaTest ( void){
+
+ double rmtoTest [] = RMATRIX ;
+ double imtoTest [] = IMATRIX ;
+ doubleComplex Result = DoubleComplex ( 0.01225832057910708 , 0.01071188208687752 );
+
+ doubleComplex* mtoTest = DoubleComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ doubleComplex out = zvariancea ( mtoTest , LINES*COLUMNS ); ;
+
+ assert ( fabs( zreals(out) - zreals (Result) ) / fabs (zreals (out)) < 3e-16 );
+ assert( fabs( zimags(out) - zimags (Result )) / fabs (zimags (out)) < 3e-16 );
+
+
+}
+
+static void zrowvarianceaTest (void ) {
+
+ int i = 0 ;
+
+ double rmtoTest [] = RMATRIX ;
+ double imtoTest [] = IMATRIX ;
+ double rResult [] = RMATRIXROW;
+ double iResult [] = IMATRIXROW ;
+
+ doubleComplex out[COLUMNS];
+ doubleComplex* mtoTest = DoubleComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ doubleComplex* Result = DoubleComplexMatrix ( rResult , iResult , COLUMNS );
+
+ zrowvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ /*FIXME test failed under 1-e04 precision */
+ for ( i = 0 ; i < COLUMNS ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , zreals(out[i]) , zimags(out[i]), zreals(Result[i]) ,zimags( Result[i]));
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+ assert( fabs( zimags(out[i]) - zimags (Result[i])) / fabs (zimags (out[i])) < 3e-16);
+
+ }
+}
+
+
+
+static void zcolumnvarianceaTest ( void) {
+ int i = 0 ;
+
+ double rmtoTest [] = RMATRIX ;
+ double imtoTest [] = IMATRIX ;
+ double rResult [] = RMATRIXCOL;
+ double iResult [] = IMATRIXCOL ;
+
+ doubleComplex out[LINES];
+ doubleComplex* mtoTest = DoubleComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ doubleComplex* Result = DoubleComplexMatrix ( rResult , iResult , LINES );
+
+ zcolumnvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , zreals(out[i]) , zimags(out[i]), zreals(Result[i]) ,zimags( Result[i]));
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-16 );
+ assert( fabs( zimags(out[i]) - zimags (Result[i])) / fabs (zimags (out[i])) < 3e-16);
+
+ }
+
+
+
+}
+
+
+
+
+
+static int testDoubleVariance (void) {
+ printf("\n\n\n\n*********************\n");
+ printf("***** Double Tests ****\n");
+ printf("*********************\n");
+
+ printf("\n\t>>>>singleton real Tests\n");
+ dcolumnvariancesTest () ;
+ dvariancesTest () ;
+ drowvariancesTest () ;
+
+
+ printf("\n\t>>>>singleton complex Tests\n");
+
+ zrowvariancesTest () ;
+ zcolumnvariancesTest () ;
+ zvariancesTest () ;
+
+
+
+ printf("\n\t>>>>array real Tests\n");
+
+ dvarianceaTest () ;
+
+ dcolumnvarianceaTest () ;
+ drowvarianceaTest ( );
+
+
+ printf("\n\t>>>>array complex Tests\n");
+
+ zvarianceaTest () ;
+ zrowvarianceaTest ( );
+ zcolumnvarianceaTest () ;
+
+
+ return 0;
+}
+
+int main(void) {
+ assert(testDoubleVariance () == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariancef.c b/2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariancef.c
new file mode 100644
index 00000000..1102ae18
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/testDoubleVariancef.c
@@ -0,0 +1,373 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "variancef.h"
+
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+static int dvariancefsTest(void) {
+
+
+ printf("\n>>>> variancef Double Scalar Test\n");
+ printf("result : %e " ,dvariancefs(value1,coef1)) ;
+
+ assert( ( dvariancefs(3.0,56.0) ) == 0.0 );
+ assert( ( dvariancefs( 1.123456789 ,2.0) ) == 0.0 );
+
+
+ return 0;
+}
+
+static int dvariancefaTest(void) {
+ double table1[3] = {3.0, 6.0, 9.0};
+ double coef1[3] = {10.0, 2.0, 6.0};
+
+ double table2[5] = {3.186784563,
+ 4.186784563,
+ 5.186784563,
+ 6.186784563,
+ 7.186784563};
+
+ double coef2[5] = {3.0,
+ 4.0,
+ 5.0,
+ 6.0,
+ 7.0};
+
+ printf("\n>>>> variancef Double Array Test\n");
+ printf("result1 : %e " ,dvariancefa(table1, 3, coef1)) ;
+ printf("result2 : %e " ,dvariancefa(table2, 5, coef2)) ;
+ assert((dvariancefa(table1, 3, coef1) - 8.000000000 )/ dvariancefa(table1, 3 ,coef1) < 1e-6);
+ assert((dvariancefa(table2, 5, coef2) - 1.916666666 )/ dvariancefa(table2, 5 ,coef2) < 1e-6);
+ return 0;
+}
+
+/*
+static int dcolumnvariancefaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double coef2[10] = {11.0, 12.0, 13.0, 14.0 , 15.0, 16.0, 17.0, 18.0, 19.0, 20.0};
+ double columnMeanmedTable1_3_3[3] = {0};
+ double columnMeanmedTable1_1_9[1] = {0};
+ double columnMeanmedTable1_9_1[9] = {0};
+ double columnMeanmedTable2_2_5[2] = {0};
+ double columnMeanmedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Variancef Double Array Test\n");
+
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 68 32 146 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+
+ dcolumnvariancefa(table1, 3, 3, coef1 ,columnMeanmedTable1_3_3);
+ assert( ( fabs(columnMeanmedTable1_3_3[0] ) - ( 68.0 / 33.0 ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable1_3_3[1] ) - ( 32.0 / 6.0 ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable1_3_3[2] ) - ( 146.0 / 18.0 ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 1e-6 );
+
+
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+
+ dcolumnvariancefa(table1, 1, 9, coef1 ,columnMeanmedTable1_1_9);
+ printf("result qui foire : %e\n " ,columnMeanmedTable1_1_9[0]) ;
+ assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 1.146666666f ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 1e-6 );
+
+
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+
+ dcolumnvariancefa(table1, 9, 1, coef1, columnMeanmedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnMeanmedTable1_9_1[%d] = %e\n", i, columnMeanmedTable1_9_1[i]);
+ assert(columnMeanmedTable1_9_1[i] == table1[i]);
+ }
+
+
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ]=> [ 415 520 ]
+
+ dcolumnvariancefa(table2, 2, 5, coef2 , columnMeanmedTable2_2_5);
+ assert( ( fabs(columnMeanmedTable2_2_5[0] ) - ( 415.0 / 75.0 ) ) / fabs ( columnMeanmedTable2_2_5[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_2_5[1] ) - ( 520.0 / 80.0 ) ) / fabs ( columnMeanmedTable2_2_5[1] ) < 1e-6 );
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedTable2_2_5[%d] = %e\n", i, columnMeanmedTable2_2_5[i]);
+ }
+
+
+ [ 1 6 ] [ 11 16 ]
+ [ 2 7 ] [ 12 17 ] => [ 107 143 183 227 275 ]
+ [ 3 8 ].*[ 13 18 ]
+ [ 4 9 ] [ 14 19 ]
+ [ 5 10 ] [ 15 20 ]
+
+
+ dcolumnvariancefa(table2, 5, 2, coef2 ,columnMeanmedTable2_5_2);
+ assert( ( fabs(columnMeanmedTable2_5_2[0] ) - ( 107.0 / 27.0 ) ) / fabs ( columnMeanmedTable2_5_2[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[1] ) - ( 143.0 / 29.0 ) ) / fabs ( columnMeanmedTable2_5_2[1] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[2] ) - ( 183.0 / 31.0 ) ) / fabs ( columnMeanmedTable2_5_2[2] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[3] ) - ( 227.0 / 33.0 ) ) / fabs ( columnMeanmedTable2_5_2[3] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[4] ) - ( 275.0 / 35.0 ) ) / fabs ( columnMeanmedTable2_5_2[4] ) < 1e-6 );
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+*/
+/*
+static int srowvariancefaTest(void) {
+ int i = 0;
+ double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double table2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
+ double coef2[10] = {11.0, 12.0, 13.0, 14.0 , 15.0, 16.0, 17.0, 18.0, 19.0, 20.0};
+ double rowMeanmedTable1_3_3[3] = {0};
+ double rowMeanmedTable1_1_9[9] = {0};
+ double rowMeanmedTable1_9_1[1] = {0};
+ double rowMeanmedTable2_2_5[5] = {0};
+ double rowMeanmedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Mean Double Array Test\n");
+
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 49 80 117 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+
+ srowvariancefa(table1, 3, 3, coef1 , rowMeanmedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedTable1_3_3[%d] = %e\n", i, rowMeanmedTable1_3_3[i]);
+ }
+ assert( ( fabs(rowMeanmedTable1_3_3[0] ) - ( 49.0 / 16.0 ) ) / fabs ( rowMeanmedTable1_3_3[0] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable1_3_3[1] ) - ( 80.0 / 19.0 ) ) / fabs ( rowMeanmedTable1_3_3[1] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable1_3_3[2] ) - ( 117.0 / 22.0 ) ) / fabs ( rowMeanmedTable1_3_3[2] ) < 1e-6 );
+
+
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+
+ srowvariancefa(table1, 1, 9, coef1, rowMeanmedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowMeanmedTable1_1_9[%d] = %e\n", i, rowMeanmedTable1_1_9[i]);
+ assert(rowMeanmedTable1_1_9[i] == table1[i]);
+ }
+
+
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 246 ]
+
+ srowvariancefa(table1, 9, 1, coef1, rowMeanmedTable1_9_1);
+ assert( ( fabs(rowMeanmedTable1_9_1[0] ) - ( 246.0 / 57.0 ) ) / fabs ( rowMeanmedTable1_9_1[0] ) < 1e-6 );
+
+
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ] => [ 3 7 11 15 19 ]
+
+ srowvariancefa(table2, 2, 5, coef2, rowMeanmedTable2_2_5);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowMeanmedTable2_2_5[%d] = %e\n", i, rowMeanmedTable2_2_5[i]);
+ }
+ assert( ( fabs(rowMeanmedTable2_2_5[0] ) - ( 35.0 / 23.0 ) ) / fabs ( rowMeanmedTable2_2_5[0] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[1] ) - ( 95.0 / 27.0 ) ) / fabs ( rowMeanmedTable2_2_5[1] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[2] ) - ( 171.0 / 31.0 ) ) / fabs ( rowMeanmedTable2_2_5[2] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[3] ) - ( 263.0 / 35.0 ) ) / fabs ( rowMeanmedTable2_2_5[3] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[4] ) - ( 371.0 / 39.0 ) ) / fabs ( rowMeanmedTable2_2_5[4] ) < 1e-6 );
+
+
+ return 0;
+}
+*/
+
+static int zvariancefsTest(void) {
+
+ printf("\n>>>> Mean Double Complex Scalar Test\n");
+ assert( zreals(zvariancefs(DoubleComplex(3.0, 0.0),DoubleComplex(3.0, 0.0))) == 0.0 );
+ assert( zimags(zvariancefs(DoubleComplex(3.0, 0.0),DoubleComplex(3.0, 0.0))) == 0.0 );
+ assert( zreals(zvariancefs(DoubleComplex(1.123456789, 1.123456789),DoubleComplex(9.0, 0.0))) == 0.0 );
+ assert( zimags(zvariancefs(DoubleComplex(1.123456789, 1.123456789),DoubleComplex(9.0, 0.0))) == 0.0 );
+
+ return 0;
+}
+
+
+
+static int zvariancefaTest(void) {
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+ doubleComplex result =DoubleComplex(0.0 , 0.0);
+
+ printf("\n>>>> Mean Double Complex Array Test\n");
+ result = zvariancefa(table1, 9, coef1);
+ /*printf("\nresult : %e \t+ %e i " ,zreals(result) ,zimags(result)) ;*/
+
+ assert( fabs(zreals(result) - ( 1.3834586f ) ) / fabs ( zreals(result) ) < 1e-6 );
+ assert( fabs(zimags(result) - ( 9.6090226f ) ) / fabs ( zimags(result) ) < 1e-6 );
+
+ return 0;
+}
+
+/*
+static int crowvariancefaTest(void) {
+
+ int i = 0 ;
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0};
+ double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+ double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 9);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 9);
+
+ doubleComplex rowMeanmedTable1_3_3[3] = {DoubleComplex(0.0, 0.0)};
+
+ doubleComplex rowMeanmedTable1_1_9[9] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable1_9_1[1] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable2_2_5[5] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable2_5_2[2] = {DoubleComplex(0.0, 0.0)};
+
+ printf("\n>>>> Row variancef Double Complex Array Test\n");
+
+
+
+ crowvariancefa(table1 , 3 , 3 , coef1 , rowMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+
+ printf("rowMeanmedTable_3_3[%d] = %e + %ei\n", i, zreals(rowMeanmedTable1_3_3[i]), zimags(rowMeanmedTable1_3_3[i]));
+ }
+ assert( ( fabs(zimags(rowMeanmedTable1_3_3[0]) ) - ( 27.0 / 16.0 ) ) / fabs ( zimags(rowMeanmedTable1_3_3[0]) ) < 1e-6 );
+ assert( ( fabs(zreals(rowMeanmedTable1_3_3[0]) ) - ( 49.0 / 16.0 ) ) / fabs ( zreals(rowMeanmedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( ( fabs(zimags(rowMeanmedTable1_3_3[1]) ) - ( 90.0 / 19.0 ) ) / fabs ( zimags(rowMeanmedTable1_3_3[1]) ) < 1e-6 );
+ assert( ( fabs(zreals(rowMeanmedTable1_3_3[1]) ) - ( 80.0 / 19.0 ) ) / fabs ( zreals(rowMeanmedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( ( fabs(zimags(rowMeanmedTable1_3_3[2]) ) - (171.0 / 22.0 ) ) / fabs ( zimags(rowMeanmedTable1_3_3[2]) ) < 1e-6 );
+ assert( ( fabs(zreals(rowMeanmedTable1_3_3[2]) ) - (117.0 / 22.0 ) ) / fabs ( zreals(rowMeanmedTable1_3_3[2]) ) < 1e-6 );
+
+
+
+
+ return 0;
+}
+*/
+
+
+/*
+static int scolumnvariancefaTest(void) {
+
+ int i = 0 ;
+
+ double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0};
+ double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0};
+ double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0};
+ double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0};
+ double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0};
+ double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0};
+ double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+
+ doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9);
+ doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9);
+
+ doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 9);
+ doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 9);
+
+ doubleComplex columnMeanmedTable1_3_3[3] = {DoubleComplex(0.0, 0.0)};
+
+ doubleComplex rowMeanmedTable1_1_9[9] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable1_9_1[1] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable2_2_5[5] = {DoubleComplex(0.0, 0.0)};
+ doubleComplex rowMeanmedTable2_5_2[2] = {DoubleComplex(0.0, 0.0)};
+
+
+ printf("\n>>>> Column variancef Double Complex Array Test\n");
+
+
+
+ scolumnvariancefa(table1 , 3 , 3 , coef1 , columnMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnMeanmedTable_3_3[%d] = %e + %ei\n", i, zreals(columnMeanmedTable1_3_3[i]), zimags(columnMeanmedTable1_3_3[i]));
+ }
+ assert( ( fabs(zimags(columnMeanmedTable1_3_3[0]) ) - (138.0 / 33.0 ) ) / fabs ( zimags(columnMeanmedTable1_3_3[0]) ) < 1e-6 );
+ assert( ( fabs(zreals(columnMeanmedTable1_3_3[0]) ) - ( 68.0 / 33.0 ) ) / fabs ( zreals(columnMeanmedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( ( fabs(zimags(columnMeanmedTable1_3_3[1]) ) - ( 36.0 / 6.0 ) ) / fabs ( zimags(columnMeanmedTable1_3_3[1]) ) < 1e-6 );
+ assert( ( fabs(zreals(columnMeanmedTable1_3_3[1]) ) - ( 32.0 / 6.0 ) ) / fabs ( zreals(columnMeanmedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( ( fabs(zimags(columnMeanmedTable1_3_3[2]) ) - (114.0 / 18.0 ) ) / fabs ( zimags(columnMeanmedTable1_3_3[2]) ) < 1e-6 );
+ assert( ( fabs(zreals(columnMeanmedTable1_3_3[2]) ) - (146.0 / 18.0 ) ) / fabs ( zreals(columnMeanmedTable1_3_3[2]) ) < 1e-6 );
+
+
+
+
+ return 0;
+}
+
+*/
+
+static int testvariancef(void) {
+
+ dvariancefsTest();
+ dvariancefaTest();
+ /*dcolumnvariancefaTest();
+ srowvariancefaTest();*/
+ zvariancefsTest();
+ zvariancefaTest();
+ /*crowvariancefaTest();
+ scolumnvariancefaTest();
+*/
+ return 0;
+}
+
+int main(void) {
+ assert(testvariancef() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/testFloatVariance.c b/2.3-1/src/c/statisticsFunctions/variancef/testFloatVariance.c
new file mode 100644
index 00000000..97b56d4d
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/testFloatVariance.c
@@ -0,0 +1,329 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+
+#include "variance.h"
+
+#define SINGLE 1.323312455f
+#define LINES 7
+#define COLUMNS 10
+#define MATRIX {0.102326436434f,0.939044147730f,0.638607255649f,0.059883427806f,0.311199211050f,\
+ 0.377510951832f,0.909709410276f,0.928138985299f,0.855155082885f,0.308869514614f,\
+0.729239261709f,0.127006734256f,0.242402311414f,0.807912770193f,0.621117659844f,\
+ 0.081452373881f,0.088844371960f,0.587072817143f,0.068080495112f,0.995457543526f,\
+0.835322400089f,0.656235548668f,0.767905956600f,0.706818781793f,0.187699332368f,\
+ 0.568810169585f,0.401039466728f,0.397196868435f,0.483212330844f,0.161224133335f,\
+0.932864250615f,0.719208867755f,0.262409000657f,0.931377100293f,0.596724558622f,\
+ 0.310327019077f,0.350161732174f,0.104841318447f,0.830732351169f,0.804621329065f,\
+0.050784428138f,0.551920620725f,0.125952405389f,0.083156193607f,0.420623748098f,\
+ 0.168616071343f,0.707545555662f,0.104633864947f,0.465604968835f,0.489758284763f,\
+0.167727907188f,0.760689914692f,0.454900974408f,0.063926273491f,0.87152507063f,0.978668818716f,\
+ 0.135898929089f,0.484713065904f,0.785042577423f,0.049412418623f,\
+0.947593610268f,0.884073690511f,0.212796610314f,0.654832502827f,0.007690255996f,\
+ 0.031808692031f,0.706323316786f,0.008731670678f,0.270014822017f,0.153652121313f}
+
+
+#define MATRIXROW {0.168824942350f,0.072908122527f,0.057987977092f,0.149998975703f,0.085086319404f,\
+0.108508638451f,0.096937985957f,0.107281660264f,0.091363871817f,0.128577818421f}
+
+#define MATRIXCOL { 0.123307827428f,0.123213594199f,0.054037725959f,0.092551230301f,0.055505564488f,\
+0.127629921958f,0.138516743375f }
+
+
+#define IMATRIX {0.05826747464016080f,0.99946373142302036f,0.85600351681932807f,0.62329693790525198f,\
+ 0.49792320514097810f,0.44210509583353996f,0.55833499459549785f,0.09633230511099100f,\
+ 0.80100952507928014f,0.34466254524886608f,\
+0.48831309471279383f,0.95087061496451497f,0.01332767866551876f,0.76261807000264525f,\
+ 0.74346329551190138f,0.65157829830422997f,0.57006288319826126f,0.70580983115360141f,\
+ 0.51323400903493166f,0.64977857517078519f,\
+0.80352442665025592f,0.69910932797938585f,0.69258948462083936f,0.91169391758739948f,\
+ 0.92454590043053031f,0.27637310232967138f,0.31692579621449113f,0.86305770650506020f,\
+ 0.20109100220724940f,0.01225362811237574f,\
+0.38199013099074364f,0.96006405679509044f,0.16440964583307505f,0.59608811559155583f,\
+ 0.72101737372577190f,0.58661046391353011f,0.99326277803629637f,0.00761850038543344f,\
+ 0.78608208894729614f,0.89965870184823871f,\
+0.43115562805905938f,0.81857266277074814f,0.83410377753898501f,0.55516970623284578f,\
+ 0.51345925079658628f,0.04770902730524540f,0.80747798969969153f,0.80489510949701071f,\
+ 0.78650354826822877f,0.30791273340582848f,\
+0.75731822755187750f,0.53423820668831468f,0.42618893459439278f,0.85448804078623652f,\
+ 0.92601215932518244f,0.94169309409335256f,0.85547966323792934f,0.59637623047456145f,\
+ 0.69515300076454878f,0.18359116325154901f,\
+0.01200280850753188f,0.2255702270194888f,0.34853330114856362f,0.55313225090503693f,\
+ 0.63695094687864184f,0.96132039744406939f,0.50314606027677655f,0.11768362112343311f,\
+ 0.42481321236118674f,0.52963322307914495f}
+
+#define RMATRIX {0.53868199465796351f,0.65326874051243067f,0.37497402401641011f,0.60422550700604916f,\
+ 0.33622304117307067f,0.03531436901539564f,0.33213760564103723f,0.39493087679147720f,\
+ 0.04170337272807956f,0.87363853026181459f,\
+0.65950810909271240f,0.31221040291711688f,0.15333442110568285f,0.66478573577478528f,\
+ 0.44319023378193378f,0.40884594758972526f,0.94536898937076330f,0.67733758920803666f,\
+ 0.18673646822571754f,0.92331133363768458f,\
+0.55921846115961671f,0.75012728199362755f,0.23257926432415843f,0.57102064136415720f,\
+ 0.60969385923817754f,0.67336730472743511f,0.07624059682711959f,0.10437540244311094f,\
+ 0.95672677317634225f,0.19771346449851990f,\
+0.05278092902153730f,0.75808868417516351f,0.17633479088544846f,0.01146994484588504f,\
+ 0.36732212174683809f,0.19948644982650876f,0.52714426256716251f,0.21445603063330054f,\
+ 0.94751045759767294f,0.04272260749712586f,\
+0.03257346292957664f,0.53217577841132879f,0.87635089689865708f,0.15471007302403450f,\
+ 0.25448470888659358f,0.91815057490020990f,0.72509902389720082f,0.87545845471322536f,\
+ 0.05635281419381499f,0.01432112138718367f,\
+0.57406943850219250f,0.80984140699729323f,0.01664119493216276f,0.93888836959376931f,\
+ 0.11264799535274506f,0.66036546928808093f,0.76042845565825701f,0.25908330874517560f,\
+ 0.88014078326523304f,0.70332178613170981f,\
+0.94614937948063016f,0.78529163636267185f,0.20241560926660895f,0.10981105919927359f,\
+ 0.75415370846167207f,0.15320260450243950f,0.59521253732964396f,0.71318271104246378f,\
+ 0.51107599260285497f,0.52125945501029491f}
+
+
+
+
+
+
+#define IMATRIXROW {-0.0419293790250184f,-0.05416405376783551f,+0.11775191182077104f,+0.08015791690354153f,+0.00011032748454003f,\
+-0.10124210045965254f,0.06720614014223115f,+0.02470873836336094f,-0.07082037296251543f,-0.00621987869853545f}
+
+#define RMATRIXROW {0.01439621349781126f,-0.04697393442028135f,-0.03018604392150223f,0.09765990436118642f,0.01606884471097247f,\
+-0.00604250542333471f,0.02870576510687836f,-0.04985742926427023f,0.12356001472881707f,0.05909180726174274f}
+
+#define IMATRIXCOL {-0.01904810719805961f,+0.04121453132770223f,+0.00378553967089328f,\
++0.10307670507342410f,+0.03497427750676810f,+0.01761849804019567f,-0.10182321471060848f}
+
+#define RMATRIXCOL {-0.02739893277693160f,0.01792852626358409f,-0.02205084134302381f,\
+-0.01012610864032573f,0.07317682977907164f,0.04762062457313784f,0.00849011627117621f}
+
+
+static void svariancesTest (void ) {
+
+ float toTest = svariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-06 ) ;
+}
+
+
+static void srowvariancesTest (void ) {
+
+ float toTest = srowvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-06 ) ;
+}
+
+static void scolumnvariancesTest (void) {
+
+ float toTest = scolumnvariances (SINGLE) ;
+
+ assert ( fabs ( toTest - SINGLE ) / fabs( toTest) < 1e-06 ) ;
+}
+
+
+static void cvariancesTest (void ) {
+
+ floatComplex toTest = cvariances ( FloatComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( creals( toTest) - SINGLE ) / fabs( creals( toTest)) < 1e-06 ) ;
+ assert ( fabs ( cimags( toTest) - SINGLE ) / fabs( cimags( toTest)) < 1e-06 ) ;
+}
+
+static void crowvariancesTest (void ) {
+
+ floatComplex toTest = crowvariances ( FloatComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( creals( toTest) - SINGLE ) / fabs( creals( toTest)) < 1e-06 ) ;
+ assert ( fabs ( cimags( toTest) - SINGLE ) / fabs( cimags( toTest)) < 1e-06 ) ;
+}
+
+static void ccolumnvariancesTest (void ) {
+
+ floatComplex toTest = crowvariances ( FloatComplex ( SINGLE , SINGLE ) );
+
+ assert ( fabs ( creals( toTest) - SINGLE ) / fabs( creals( toTest)) < 1e-06 ) ;
+ assert ( fabs ( cimags( toTest) - SINGLE ) / fabs( cimags( toTest)) < 1e-06 ) ;
+}
+
+
+
+
+
+
+static void svarianceaTest ( void){
+
+ float mtoTest[] = MATRIX ;
+ float result = 0.100753297434f;
+ float out = svariancea ( mtoTest , LINES*COLUMNS ); ;
+
+
+
+ printf ( "out : %e\t result : %e\t\n" , out , result ) ;
+
+
+
+ assert ( fabs ( out - result ) / fabs( out ) < 1e-06 ) ;
+
+}
+
+
+static void srowvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ float mtoTest[] = MATRIX ;
+ float result[COLUMNS] = MATRIXROW ;
+ float out[COLUMNS] ;
+
+ srowvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ for ( i = 0 ; i < COLUMNS ; i++)
+ {
+ printf ( "ROWout : %e\t result : %e\t\n" , out[i] , result [i] ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 1e-06 ) ;
+ }
+
+}
+
+static void scolumnvarianceaTest ( void )
+{
+ int i = 0 ;
+
+ float mtoTest[] = MATRIX ;
+ float result[LINES] = MATRIXCOL ;
+ float out[ LINES] ;
+
+
+
+ scolumnvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "%dCOLout : %e\t result : %e\t\n" ,i, out[i] , result [i] ) ;
+ assert ( fabs ( out[i] - result[i] ) / fabs( out[i] ) < 1e-06 ) ;
+ }
+
+}
+
+
+
+
+static void cvarianceaTest ( void){
+
+ float rmtoTest [] = RMATRIX ;
+ float imtoTest [] = IMATRIX ;
+ floatComplex Result = FloatComplex ( 0.01225832057910708f , 0.01071188208687752f );
+
+ floatComplex* mtoTest = FloatComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ floatComplex out = cvariancea ( mtoTest , LINES*COLUMNS ); ;
+
+ assert ( fabs( creals(out) - creals (Result) ) / fabs (creals (out)) < 1e-06 );
+ assert( fabs( cimags(out) - cimags (Result )) / fabs (cimags (out)) < 1e-06 );
+
+
+}
+
+static void crowvarianceaTest (void ) {
+
+ int i = 0 ;
+
+ float rmtoTest [] = RMATRIX ;
+ float imtoTest [] = IMATRIX ;
+ float rResult [] = RMATRIXROW;
+ float iResult [] = IMATRIXROW ;
+
+ floatComplex out[COLUMNS];
+ floatComplex* mtoTest = FloatComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ floatComplex* Result = FloatComplexMatrix ( rResult , iResult , COLUMNS );
+
+ crowvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+ /*FIXME test failed under 1-e04 precision */
+ for ( i = 0 ; i < COLUMNS ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , creals(out[i]) , cimags(out[i]), creals(Result[i]) ,cimags( Result[i]));
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-6 );
+ assert( fabs( cimags(out[i]) - cimags (Result[i])) / fabs (cimags (out[i])) < 3e-6);
+
+ }
+}
+
+
+
+static void ccolumnvarianceaTest ( void) {
+ int i = 0 ;
+
+ float rmtoTest [] = RMATRIX ;
+ float imtoTest [] = IMATRIX ;
+ float rResult [] = RMATRIXCOL;
+ float iResult [] = IMATRIXCOL ;
+
+ floatComplex out[LINES];
+ floatComplex* mtoTest = FloatComplexMatrix ( rmtoTest , imtoTest , LINES*COLUMNS ) ;
+ floatComplex* Result = FloatComplexMatrix ( rResult , iResult , LINES );
+
+ ccolumnvariancea ( mtoTest , LINES , COLUMNS , out ) ;
+
+
+ for ( i = 0 ; i < LINES ; i++)
+ {
+ printf ( "%d out : %e %e \t result %e %e \n" , i , creals(out[i]) , cimags(out[i]), creals(Result[i]) ,cimags( Result[i]));
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-06 );
+ assert( fabs( cimags(out[i]) - cimags (Result[i])) / fabs (cimags (out[i])) < 1e-06);
+
+ }
+
+
+
+}
+
+
+
+
+
+static int testFloatVariance (void) {
+ printf("\n\n\n\n*********************\n");
+ printf("***** Float Tests ****\n");
+ printf("*********************\n");
+
+ printf("\n\t>>>>singleton real Tests\n");
+ scolumnvariancesTest () ;
+ svariancesTest () ;
+ srowvariancesTest () ;
+
+
+ printf("\n\t>>>>singleton complex Tests\n");
+
+ crowvariancesTest () ;
+ ccolumnvariancesTest () ;
+ cvariancesTest () ;
+
+
+
+ printf("\n\t>>>>array real Tests\n");
+
+ svarianceaTest () ;
+
+ scolumnvarianceaTest () ;
+ srowvarianceaTest ( );
+
+
+ printf("\n\t>>>>array complex Tests\n");
+
+ cvarianceaTest () ;
+ crowvarianceaTest ( );
+ ccolumnvarianceaTest () ;
+
+
+ return 0;
+}
+
+int main(void) {
+ assert(testFloatVariance () == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/testFloatVariancef.c b/2.3-1/src/c/statisticsFunctions/variancef/testFloatVariancef.c
new file mode 100644
index 00000000..4363052e
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/testFloatVariancef.c
@@ -0,0 +1,381 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "variancef.h"
+
+
+/* #define LOCAL_DEBUG */
+
+#define ERROR(x) printf("diff = %e\n", x)
+
+
+ #define VALUE1 3.0f
+ #define VALUE2 1.123456789f
+ #define COEF1 56.0f
+ #define COEF2 2.0f
+
+
+static int svariancefsTest(void) {
+
+ printf("\n>>>> variancef Float Scalar Test\n");
+ printf("result : %e " ,svariancefs(VALUE1,COEF1)) ;
+
+ assert( ( svariancefs(VALUE1,COEF1) ) == 0.0f );
+ assert( ( svariancefs(VALUE2,COEF2) ) == 0.0f );
+
+
+
+ return 0;
+}
+
+static int svariancefaTest(void) {
+ float table1[3] = {3.0f, 6.0f, 9.0f};
+ float coef1[3] = {10.0f, 2.0f, 6.0f};
+
+ float table2[5] = {3.186784563f,
+ 4.186784563f,
+ 5.186784563f,
+ 6.186784563f,
+ 7.186784563f};
+
+ float coef2[5] = {3.0f,
+ 4.0f,
+ 5.0f,
+ 6.0f,
+ 7.0f};
+
+ printf("\n>>>> variancef Float Array Test\n");
+ printf("result : %e " ,svariancefa(table1, 3, coef1)) ;
+ printf("result : %e " ,svariancefa(table2, 5, coef2)) ;
+ assert(svariancefa(table1, 3, coef1) == 8.0f);
+ assert((svariancefa(table2, 5, coef2) - 1.916666666 )/ svariancefa(table2, 5 ,coef2) < 1e-6);
+ return 0;
+}
+
+/*
+static int scolumnvariancefaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float coef1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float coef2[10] = {11.0f, 12.0f, 13.0f, 14.0f , 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f};
+ float columnMeanmedTable1_3_3[3] = {0};
+ float columnMeanmedTable1_1_9[1] = {0};
+ float columnMeanmedTable1_9_1[9] = {0};
+ float columnMeanmedTable2_2_5[2] = {0};
+ float columnMeanmedTable2_5_2[5] = {0};
+
+ printf("\n>>>> Column Variancef Float Array Test\n");
+
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 68 32 146 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+
+ scolumnvariancefa(table1, 3, 3, coef1 ,columnMeanmedTable1_3_3);
+ assert( ( fabs(columnMeanmedTable1_3_3[0] ) - ( 68.0f / 33.0f ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable1_3_3[1] ) - ( 32.0f / 6.0f ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable1_3_3[2] ) - ( 146.0f / 18.0f ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 1e-6 );
+
+
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ]
+
+ scolumnvariancefa(table1, 1, 9, coef1 ,columnMeanmedTable1_1_9);
+ printf("result qui foire : %e\n " ,columnMeanmedTable1_1_9[0]) ;
+ assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 1.146666666f ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 1e-6 );
+
+
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+
+ scolumnvariancefa(table1, 9, 1, coef1, columnMeanmedTable1_9_1);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("columnMeanmedTable1_9_1[%d] = %e\n", i, columnMeanmedTable1_9_1[i]);
+ assert(columnMeanmedTable1_9_1[i] == table1[i]);
+ }
+
+
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ]=> [ 415 520 ]
+
+ scolumnvariancefa(table2, 2, 5, coef2 , columnMeanmedTable2_2_5);
+ assert( ( fabs(columnMeanmedTable2_2_5[0] ) - ( 415.0f / 75.0f ) ) / fabs ( columnMeanmedTable2_2_5[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_2_5[1] ) - ( 520.0f / 80.0f ) ) / fabs ( columnMeanmedTable2_2_5[1] ) < 1e-6 );
+ for ( i = 0 ; i < 2 ; ++i) {
+ printf("columnMeanmedTable2_2_5[%d] = %e\n", i, columnMeanmedTable2_2_5[i]);
+ }
+
+
+ [ 1 6 ] [ 11 16 ]
+ [ 2 7 ] [ 12 17 ] => [ 107 143 183 227 275 ]
+ [ 3 8 ].*[ 13 18 ]
+ [ 4 9 ] [ 14 19 ]
+ [ 5 10 ] [ 15 20 ]
+
+
+ scolumnvariancefa(table2, 5, 2, coef2 ,columnMeanmedTable2_5_2);
+ assert( ( fabs(columnMeanmedTable2_5_2[0] ) - ( 107.0f / 27.0f ) ) / fabs ( columnMeanmedTable2_5_2[0] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[1] ) - ( 143.0f / 29.0f ) ) / fabs ( columnMeanmedTable2_5_2[1] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[2] ) - ( 183.0f / 31.0f ) ) / fabs ( columnMeanmedTable2_5_2[2] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[3] ) - ( 227.0f / 33.0f ) ) / fabs ( columnMeanmedTable2_5_2[3] ) < 1e-6 );
+ assert( ( fabs(columnMeanmedTable2_5_2[4] ) - ( 275.0f / 35.0f ) ) / fabs ( columnMeanmedTable2_5_2[4] ) < 1e-6 );
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]);
+ }
+
+ return 0;
+}
+*/
+/*
+static int srowvariancefaTest(void) {
+ int i = 0;
+ float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float coef1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float table2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
+ float coef2[10] = {11.0f, 12.0f, 13.0f, 14.0f , 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f};
+ float rowMeanmedTable1_3_3[3] = {0};
+ float rowMeanmedTable1_1_9[9] = {0};
+ float rowMeanmedTable1_9_1[1] = {0};
+ float rowMeanmedTable2_2_5[5] = {0};
+ float rowMeanmedTable2_5_2[2] = {0};
+
+ printf("\n>>>> Row Mean Float Array Test\n");
+
+ [ 1 2 3 ] [10 11 12 ]
+ [ 4 5 6 ].*[ 1 2 3 ] => [ 49 80 117 ]
+ [ 7 8 9 ] [ 5 6 7 ]
+
+ srowvariancefa(table1, 3, 3, coef1 , rowMeanmedTable1_3_3);
+ for ( i = 0 ; i < 3 ; ++i) {
+ printf("rowMeanmedTable1_3_3[%d] = %e\n", i, rowMeanmedTable1_3_3[i]);
+ }
+ assert( ( fabs(rowMeanmedTable1_3_3[0] ) - ( 49.0f / 16.0f ) ) / fabs ( rowMeanmedTable1_3_3[0] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable1_3_3[1] ) - ( 80.0f / 19.0f ) ) / fabs ( rowMeanmedTable1_3_3[1] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable1_3_3[2] ) - ( 117.0f / 22.0f ) ) / fabs ( rowMeanmedTable1_3_3[2] ) < 1e-6 );
+
+
+ [ 1 ]
+ [ 2 ]
+ [ 3 ]
+ [ 4 ]
+ [ 5 ] => [ 1 2 3 4 5 6 7 8 9 ]
+ [ 6 ]
+ [ 7 ]
+ [ 8 ]
+ [ 9 ]
+
+ srowvariancefa(table1, 1, 9, coef1, rowMeanmedTable1_1_9);
+ for ( i = 0 ; i < 9 ; ++i) {
+ printf("rowMeanmedTable1_1_9[%d] = %e\n", i, rowMeanmedTable1_1_9[i]);
+ assert(rowMeanmedTable1_1_9[i] == table1[i]);
+ }
+
+
+ [ 1 2 3 4 5 6 7 8 9 ] => [ 246 ]
+
+ srowvariancefa(table1, 9, 1, coef1, rowMeanmedTable1_9_1);
+ assert( ( fabs(rowMeanmedTable1_9_1[0] ) - ( 246.0f / 57.0f ) ) / fabs ( rowMeanmedTable1_9_1[0] ) < 1e-6 );
+
+
+ [ 1 3 5 7 9 ] .* [ 11 13 15 17 19 ]
+ [ 2 4 6 8 10 ] [ 12 14 16 18 20 ] => [ 3 7 11 15 19 ]
+
+ srowvariancefa(table2, 2, 5, coef2, rowMeanmedTable2_2_5);
+ for ( i = 0 ; i < 5 ; ++i) {
+ printf("rowMeanmedTable2_2_5[%d] = %e\n", i, rowMeanmedTable2_2_5[i]);
+ }
+ assert( ( fabs(rowMeanmedTable2_2_5[0] ) - ( 35.0f / 23.0f ) ) / fabs ( rowMeanmedTable2_2_5[0] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[1] ) - ( 95.0f / 27.0f ) ) / fabs ( rowMeanmedTable2_2_5[1] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[2] ) - ( 171.0f / 31.0f ) ) / fabs ( rowMeanmedTable2_2_5[2] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[3] ) - ( 263.0f / 35.0f ) ) / fabs ( rowMeanmedTable2_2_5[3] ) < 1e-6 );
+ assert( ( fabs(rowMeanmedTable2_2_5[4] ) - ( 371.0f / 39.0f ) ) / fabs ( rowMeanmedTable2_2_5[4] ) < 1e-6 );
+
+
+ return 0;
+}
+*/
+
+static int cvariancefsTest(void) {
+
+
+ printf("\n>>>> Mean Float Complex Scalar Test\n");
+ assert( creals(cvariancefs(FloatComplex(3.0f, 3.0f),FloatComplex(3.0f, 0.0f);)) == 0.0f );
+ assert( cimags(cvariancefs(FloatComplex(3.0f, 3.0f),FloatComplex(3.0f, 0.0f);)) == 0.0f );
+ assert( creals(cvariancefs(FloatComplex(1.123456789f, 1.123456789f),FloatComplex(1.123456789f, 1.123456789f))) == 0.0f );
+ assert( cimags(cvariancefs(FloatComplex(1.123456789f, 1.123456789f),FloatComplex(1.123456789f, 1.123456789f))) == 0.0f );
+
+ return 0;
+}
+
+
+
+static int cvariancefaTest(void) {
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+ floatComplex result =FloatComplex(0.0f , 0.0f);
+
+ printf("\n>>>> Mean Float Complex Array Test\n");
+ result = cvariancefa(table1, 9, coef1);
+ /*printf("\nresult : %lf \t+ %lf i " ,creals(result) ,cimags(result)) ;*/
+
+ assert( fabs(creals(result) - ( 1.3834586f ) ) / fabs ( creals(result) ) < 1e-6 );
+ assert( fabs(cimags(result) - ( 9.6090226f ) ) / fabs ( cimags(result) ) < 1e-6 );
+
+ return 0;
+}
+
+/*
+static int crowvariancefaTest(void) {
+
+ int i = 0 ;
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ float tableR2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float tableI2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 15.0f};
+ float coefR2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+ float coefI2[10] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+
+ floatComplex* table2 = FloatComplexMatrix (tableR2, tableI2, 9);
+ floatComplex* coef2 = FloatComplexMatrix (coefR2, coefI2, 9);
+
+ floatComplex rowMeanmedTable1_3_3[3] = {FloatComplex(0.0f, 0.0f)};
+
+ floatComplex rowMeanmedTable1_1_9[9] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable1_9_1[1] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_2_5[5] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_5_2[2] = {FloatComplex(0.0f, 0.0f)};
+
+ printf("\n>>>> Row variancef Float Complex Array Test\n");
+
+
+
+ crowvariancefa(table1 , 3 , 3 , coef1 , rowMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+
+ printf("rowMeanmedTable_3_3[%d] = %e + %ei\n", i, creals(rowMeanmedTable1_3_3[i]), cimags(rowMeanmedTable1_3_3[i]));
+ }
+ assert( ( fabs(cimags(rowMeanmedTable1_3_3[0]) ) - ( 27.0f / 16.0f ) ) / fabs ( cimags(rowMeanmedTable1_3_3[0]) ) < 1e-6 );
+ assert( ( fabs(creals(rowMeanmedTable1_3_3[0]) ) - ( 49.0f / 16.0f ) ) / fabs ( creals(rowMeanmedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( ( fabs(cimags(rowMeanmedTable1_3_3[1]) ) - ( 90.0f / 19.0f ) ) / fabs ( cimags(rowMeanmedTable1_3_3[1]) ) < 1e-6 );
+ assert( ( fabs(creals(rowMeanmedTable1_3_3[1]) ) - ( 80.0f / 19.0f ) ) / fabs ( creals(rowMeanmedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( ( fabs(cimags(rowMeanmedTable1_3_3[2]) ) - (171.0f / 22.0f ) ) / fabs ( cimags(rowMeanmedTable1_3_3[2]) ) < 1e-6 );
+ assert( ( fabs(creals(rowMeanmedTable1_3_3[2]) ) - (117.0f / 22.0f ) ) / fabs ( creals(rowMeanmedTable1_3_3[2]) ) < 1e-6 );
+
+
+
+
+ return 0;
+}
+*/
+
+
+/*
+static int ccolumnvariancefaTest(void) {
+
+ int i = 0 ;
+
+ float tableR1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f};
+ float tableI1[9] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
+ float coefR1[9] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f};
+ float coefI1[9] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ float tableR2[10] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f, 10.0f};
+ float tableI2[10] = {1.0f, 2.0f, 3.0f, 4.0f , 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 15.0f};
+ float coefR2[10] = {10.0f, 1.0f, 5.0f,11.0f , 2.0f, 6.0f,12.0f, 3.0f, 7.0f, 19.0f};
+ float coefI2[10] = { 0.0f, 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
+
+ floatComplex* table1 = FloatComplexMatrix (tableR1, tableI1, 9);
+ floatComplex* coef1 = FloatComplexMatrix (coefR1, coefI1, 9);
+
+ floatComplex* table2 = FloatComplexMatrix (tableR2, tableI2, 9);
+ floatComplex* coef2 = FloatComplexMatrix (coefR2, coefI2, 9);
+
+ floatComplex columnMeanmedTable1_3_3[3] = {FloatComplex(0.0f, 0.0f)};
+
+ floatComplex rowMeanmedTable1_1_9[9] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable1_9_1[1] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_2_5[5] = {FloatComplex(0.0f, 0.0f)};
+ floatComplex rowMeanmedTable2_5_2[2] = {FloatComplex(0.0f, 0.0f)};
+
+
+ printf("\n>>>> Column variancef Float Complex Array Test\n");
+
+
+
+ ccolumnvariancefa(table1 , 3 , 3 , coef1 , columnMeanmedTable1_3_3);
+
+ for (i = 0 ; i < 3 ; ++i )
+ {
+ printf("columnMeanmedTable_3_3[%d] = %e + %ei\n", i, creals(columnMeanmedTable1_3_3[i]), cimags(columnMeanmedTable1_3_3[i]));
+ }
+ assert( ( fabs(cimags(columnMeanmedTable1_3_3[0]) ) - (138.0f / 33.0f ) ) / fabs ( cimags(columnMeanmedTable1_3_3[0]) ) < 1e-6 );
+ assert( ( fabs(creals(columnMeanmedTable1_3_3[0]) ) - ( 68.0f / 33.0f ) ) / fabs ( creals(columnMeanmedTable1_3_3[0]) ) < 1e-6 );
+
+ assert( ( fabs(cimags(columnMeanmedTable1_3_3[1]) ) - ( 36.0f / 6.0f ) ) / fabs ( cimags(columnMeanmedTable1_3_3[1]) ) < 1e-6 );
+ assert( ( fabs(creals(columnMeanmedTable1_3_3[1]) ) - ( 32.0f / 6.0f ) ) / fabs ( creals(columnMeanmedTable1_3_3[1]) ) < 1e-6 );
+
+ assert( ( fabs(cimags(columnMeanmedTable1_3_3[2]) ) - (114.0f / 18.0f ) ) / fabs ( cimags(columnMeanmedTable1_3_3[2]) ) < 1e-6 );
+ assert( ( fabs(creals(columnMeanmedTable1_3_3[2]) ) - (146.0f / 18.0f ) ) / fabs ( creals(columnMeanmedTable1_3_3[2]) ) < 1e-6 );
+
+
+
+
+ return 0;
+}
+
+*/
+
+static int testvariancef(void) {
+
+ svariancefsTest();
+ svariancefaTest();
+ /*scolumnvariancefaTest();
+ srowvariancefaTest();*/
+ cvariancefsTest();
+ cvariancefaTest();
+ /*crowvariancefaTest();
+ ccolumnvariancefaTest();
+*/
+ return 0;
+}
+
+int main(void) {
+ assert(testvariancef() == 0);
+ return 0;
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c
new file mode 100644
index 00000000..47fee75b
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+#include "matrixTranspose.h"
+
+void zcolumnvariancefa(doubleComplex *in1, int lines, int columns,doubleComplex *in2 , doubleComplex* out){
+
+ int i = 0 ;
+
+ doubleComplex* transp = (doubleComplex*) malloc ( sizeof (doubleComplex) *(unsigned int) (lines*columns));
+
+
+
+ ztransposea ( in1 , lines , columns , transp ) ;
+
+
+ for ( i = 0; i < lines ; i++)
+ out[i] = zvariancefa ( transp + i*columns , columns, in2 ) ;
+
+
+ free (transp);
+
+}
+
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/zrowvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/zrowvariancefa.c
new file mode 100644
index 00000000..b39b2ee7
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/zrowvariancefa.c
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+
+void zrowvariancefa(doubleComplex *in1, int lines, int columns,doubleComplex *in2, doubleComplex* out){
+
+ int i = 0 ;
+
+ for ( i = 0; i < columns ; i++)
+ out[i] = zvariancefa ( in1 + i*lines , lines , in2 ) ;
+}
diff --git a/2.3-1/src/c/statisticsFunctions/variancef/zvariancefa.c b/2.3-1/src/c/statisticsFunctions/variancef/zvariancefa.c
new file mode 100644
index 00000000..6de6f11a
--- /dev/null
+++ b/2.3-1/src/c/statisticsFunctions/variancef/zvariancefa.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "variancef.h"
+#include "division.h"
+
+doubleComplex zvariancefa(doubleComplex *in1, int size, doubleComplex *in2)
+
+{
+ int i = 0 ;
+ doubleComplex temp = DoubleComplex (0.0, 0.0 );
+ doubleComplex accumulate =DoubleComplex (0.0, 0.0 );
+ doubleComplex accumulateFre = DoubleComplex (0.0, 0.0 );
+
+ doubleComplex meanf = zmeanfa (in1 , size , in2);
+ for(i = 0 ; i < size ; ++i)
+ {
+ temp = zpows ( zdiffs (in1[i] , meanf ) ,DoubleComplex (2.0, 0.0 ) );
+ temp = zmuls( in2[i] , temp);
+
+ accumulate = zadds( temp , accumulate);
+ accumulateFre = zadds(in2[i ] ,accumulateFre );
+ }
+
+ return zrdivs(accumulate, zdiffs(accumulateFre ,DoubleComplex(1.0,0.0) ));
+}
diff --git a/2.3-1/src/c/string/Makefile.am b/2.3-1/src/c/string/Makefile.am
new file mode 100644
index 00000000..9fc47f04
--- /dev/null
+++ b/2.3-1/src/c/string/Makefile.am
@@ -0,0 +1,17 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+SUBDIRS = disp \
+ string
+
+
+
diff --git a/2.3-1/src/c/string/Makefile.in b/2.3-1/src/c/string/Makefile.in
new file mode 100644
index 00000000..2593e26c
--- /dev/null
+++ b/2.3-1/src/c/string/Makefile.in
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/c/string
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = disp \
+ string
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/string/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/string/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/string/convstr/gconvstrs.c b/2.3-1/src/c/string/convstr/gconvstrs.c
new file mode 100644
index 00000000..7c6e7f14
--- /dev/null
+++ b/2.3-1/src/c/string/convstr/gconvstrs.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+
+#include <string.h>
+#include <ctype.h>
+#include "convstr.h"
+
+
+void gconvstrs(char* in, int size,char* flag,int size2,char* out)
+{
+ int i=0;//temp=0;
+ for(i=0;i<size;i++)
+ {
+ //temp= in[i];
+ if(flag[0]=='l' || flag[0]=='L')
+ { //temp=temp + 32;
+ out[i]=tolower(in[i]);
+ }
+ else if(flag[0]=='u' || flag[0]=='U')
+ {
+ //temp=temp - 32;
+ out[i]=toupper(in[i]);
+ }
+ }
+}
diff --git a/2.3-1/src/c/string/disp/Makefile.am b/2.3-1/src/c/string/disp/Makefile.am
new file mode 100644
index 00000000..bafafee0
--- /dev/null
+++ b/2.3-1/src/c/string/disp/Makefile.am
@@ -0,0 +1,52 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2007-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+libDisp_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/string/includes
+
+pkglib_LTLIBRARIES = libDisp.la
+
+libDisp_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sdisps.c \
+ ddisps.c \
+ cdisps.c \
+ zdisps.c \
+ sdispa.c \
+ ddispa.c \
+ cdispa.c \
+ zdispa.c
+
+HEAD = ../includes/disp.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/string/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/string/disp/libDisp.la
+
+check_PROGRAMS = testDisp
+
+TESTS = testDisp
+
+#
+# -*- Dispine Tests -*-
+#
+testDisp_SOURCES = testDisp.c
+testDisp_CFLAGS = $(check_INCLUDES)
+testDisp_LDADD = $(check_LDADD)
+
diff --git a/2.3-1/src/c/string/disp/Makefile.in b/2.3-1/src/c/string/disp/Makefile.in
new file mode 100644
index 00000000..cb2362dc
--- /dev/null
+++ b/2.3-1/src/c/string/disp/Makefile.in
@@ -0,0 +1,754 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDisp$(EXEEXT)
+TESTS = testDisp$(EXEEXT)
+subdir = src/c/string/disp
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libDisp_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libDisp_la-sdisps.lo libDisp_la-ddisps.lo \
+ libDisp_la-cdisps.lo libDisp_la-zdisps.lo libDisp_la-sdispa.lo \
+ libDisp_la-ddispa.lo libDisp_la-cdispa.lo libDisp_la-zdispa.lo
+am_libDisp_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libDisp_la_OBJECTS = $(am_libDisp_la_OBJECTS)
+libDisp_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libDisp_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDisp_OBJECTS = testDisp-testDisp.$(OBJEXT)
+testDisp_OBJECTS = $(am_testDisp_OBJECTS)
+testDisp_DEPENDENCIES = $(check_LDADD)
+testDisp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(testDisp_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libDisp_la_SOURCES) $(testDisp_SOURCES)
+DIST_SOURCES = $(libDisp_la_SOURCES) $(testDisp_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libDisp_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/string/includes
+
+pkglib_LTLIBRARIES = libDisp.la
+libDisp_la_SOURCES = $(HEAD) $(SRC)
+SRC = sdisps.c \
+ ddisps.c \
+ cdisps.c \
+ zdisps.c \
+ sdispa.c \
+ ddispa.c \
+ cdispa.c \
+ zdispa.c
+
+HEAD = ../includes/disp.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/string/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ $(top_builddir)/src/c/string/disp/libDisp.la
+
+
+#
+# -*- Dispine Tests -*-
+#
+testDisp_SOURCES = testDisp.c
+testDisp_CFLAGS = $(check_INCLUDES)
+testDisp_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/string/disp/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/string/disp/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libDisp.la: $(libDisp_la_OBJECTS) $(libDisp_la_DEPENDENCIES)
+ $(libDisp_la_LINK) -rpath $(pkglibdir) $(libDisp_la_OBJECTS) $(libDisp_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDisp$(EXEEXT): $(testDisp_OBJECTS) $(testDisp_DEPENDENCIES)
+ @rm -f testDisp$(EXEEXT)
+ $(testDisp_LINK) $(testDisp_OBJECTS) $(testDisp_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-cdispa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-cdisps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-ddispa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-ddisps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-sdispa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-sdisps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-zdispa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libDisp_la-zdisps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDisp-testDisp.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libDisp_la-sdisps.lo: sdisps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-sdisps.lo -MD -MP -MF $(DEPDIR)/libDisp_la-sdisps.Tpo -c -o libDisp_la-sdisps.lo `test -f 'sdisps.c' || echo '$(srcdir)/'`sdisps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-sdisps.Tpo $(DEPDIR)/libDisp_la-sdisps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdisps.c' object='libDisp_la-sdisps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-sdisps.lo `test -f 'sdisps.c' || echo '$(srcdir)/'`sdisps.c
+
+libDisp_la-ddisps.lo: ddisps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-ddisps.lo -MD -MP -MF $(DEPDIR)/libDisp_la-ddisps.Tpo -c -o libDisp_la-ddisps.lo `test -f 'ddisps.c' || echo '$(srcdir)/'`ddisps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-ddisps.Tpo $(DEPDIR)/libDisp_la-ddisps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddisps.c' object='libDisp_la-ddisps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-ddisps.lo `test -f 'ddisps.c' || echo '$(srcdir)/'`ddisps.c
+
+libDisp_la-cdisps.lo: cdisps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-cdisps.lo -MD -MP -MF $(DEPDIR)/libDisp_la-cdisps.Tpo -c -o libDisp_la-cdisps.lo `test -f 'cdisps.c' || echo '$(srcdir)/'`cdisps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-cdisps.Tpo $(DEPDIR)/libDisp_la-cdisps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdisps.c' object='libDisp_la-cdisps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-cdisps.lo `test -f 'cdisps.c' || echo '$(srcdir)/'`cdisps.c
+
+libDisp_la-zdisps.lo: zdisps.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-zdisps.lo -MD -MP -MF $(DEPDIR)/libDisp_la-zdisps.Tpo -c -o libDisp_la-zdisps.lo `test -f 'zdisps.c' || echo '$(srcdir)/'`zdisps.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-zdisps.Tpo $(DEPDIR)/libDisp_la-zdisps.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdisps.c' object='libDisp_la-zdisps.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-zdisps.lo `test -f 'zdisps.c' || echo '$(srcdir)/'`zdisps.c
+
+libDisp_la-sdispa.lo: sdispa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-sdispa.lo -MD -MP -MF $(DEPDIR)/libDisp_la-sdispa.Tpo -c -o libDisp_la-sdispa.lo `test -f 'sdispa.c' || echo '$(srcdir)/'`sdispa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-sdispa.Tpo $(DEPDIR)/libDisp_la-sdispa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sdispa.c' object='libDisp_la-sdispa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-sdispa.lo `test -f 'sdispa.c' || echo '$(srcdir)/'`sdispa.c
+
+libDisp_la-ddispa.lo: ddispa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-ddispa.lo -MD -MP -MF $(DEPDIR)/libDisp_la-ddispa.Tpo -c -o libDisp_la-ddispa.lo `test -f 'ddispa.c' || echo '$(srcdir)/'`ddispa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-ddispa.Tpo $(DEPDIR)/libDisp_la-ddispa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ddispa.c' object='libDisp_la-ddispa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-ddispa.lo `test -f 'ddispa.c' || echo '$(srcdir)/'`ddispa.c
+
+libDisp_la-cdispa.lo: cdispa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-cdispa.lo -MD -MP -MF $(DEPDIR)/libDisp_la-cdispa.Tpo -c -o libDisp_la-cdispa.lo `test -f 'cdispa.c' || echo '$(srcdir)/'`cdispa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-cdispa.Tpo $(DEPDIR)/libDisp_la-cdispa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cdispa.c' object='libDisp_la-cdispa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-cdispa.lo `test -f 'cdispa.c' || echo '$(srcdir)/'`cdispa.c
+
+libDisp_la-zdispa.lo: zdispa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -MT libDisp_la-zdispa.lo -MD -MP -MF $(DEPDIR)/libDisp_la-zdispa.Tpo -c -o libDisp_la-zdispa.lo `test -f 'zdispa.c' || echo '$(srcdir)/'`zdispa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libDisp_la-zdispa.Tpo $(DEPDIR)/libDisp_la-zdispa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zdispa.c' object='libDisp_la-zdispa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libDisp_la_CFLAGS) $(CFLAGS) -c -o libDisp_la-zdispa.lo `test -f 'zdispa.c' || echo '$(srcdir)/'`zdispa.c
+
+testDisp-testDisp.o: testDisp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDisp_CFLAGS) $(CFLAGS) -MT testDisp-testDisp.o -MD -MP -MF $(DEPDIR)/testDisp-testDisp.Tpo -c -o testDisp-testDisp.o `test -f 'testDisp.c' || echo '$(srcdir)/'`testDisp.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDisp-testDisp.Tpo $(DEPDIR)/testDisp-testDisp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDisp.c' object='testDisp-testDisp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDisp_CFLAGS) $(CFLAGS) -c -o testDisp-testDisp.o `test -f 'testDisp.c' || echo '$(srcdir)/'`testDisp.c
+
+testDisp-testDisp.obj: testDisp.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDisp_CFLAGS) $(CFLAGS) -MT testDisp-testDisp.obj -MD -MP -MF $(DEPDIR)/testDisp-testDisp.Tpo -c -o testDisp-testDisp.obj `if test -f 'testDisp.c'; then $(CYGPATH_W) 'testDisp.c'; else $(CYGPATH_W) '$(srcdir)/testDisp.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testDisp-testDisp.Tpo $(DEPDIR)/testDisp-testDisp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testDisp.c' object='testDisp-testDisp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDisp_CFLAGS) $(CFLAGS) -c -o testDisp-testDisp.obj `if test -f 'testDisp.c'; then $(CYGPATH_W) 'testDisp.c'; else $(CYGPATH_W) '$(srcdir)/testDisp.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/string/disp/cdispa.c b/2.3-1/src/c/string/disp/cdispa.c
new file mode 100644
index 00000000..8cf8152d
--- /dev/null
+++ b/2.3-1/src/c/string/disp/cdispa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double cdispa (floatComplex* in, int rows, int columns) {
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf(" %f + %fi " ,creals(in[i+j*rows]) ,cimags(in[i+j*rows]));
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/cdisps.c b/2.3-1/src/c/string/disp/cdisps.c
new file mode 100644
index 00000000..1d2f4d36
--- /dev/null
+++ b/2.3-1/src/c/string/disp/cdisps.c
@@ -0,0 +1,20 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double cdisps (floatComplex in){
+
+ printf(" %f + %fi \n" ,creals(in) ,cimags(in));
+ return 0;
+
+}
diff --git a/2.3-1/src/c/string/disp/ddispa.c b/2.3-1/src/c/string/disp/ddispa.c
new file mode 100644
index 00000000..5e6bb84e
--- /dev/null
+++ b/2.3-1/src/c/string/disp/ddispa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double ddispa (double* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf (" %1.20f ", in[i+j*rows]);
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/ddisph.c b/2.3-1/src/c/string/disp/ddisph.c
new file mode 100644
index 00000000..71cda9f4
--- /dev/null
+++ b/2.3-1/src/c/string/disp/ddisph.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * 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 "disp.h"
+
+double ddisph (double* in, int rows, int columns, int levels){
+ int i = 0,j = 0,k = 0;
+
+ for (k = 0; k < levels; ++k)
+ {
+ printf("(:, :, %d)\n", k + 1);
+ for (i = 0; i < rows; ++i)
+ {
+ for (j=0;j<columns;j++)
+ {
+ printf (" %1.20f ", in[i+j*rows+k*columns*rows]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/ddisps.c b/2.3-1/src/c/string/disp/ddisps.c
new file mode 100644
index 00000000..d1b4ef80
--- /dev/null
+++ b/2.3-1/src/c/string/disp/ddisps.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double ddisps (double in) {
+ printf (" %1.20f \n", in);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/i16dispa.c b/2.3-1/src/c/string/disp/i16dispa.c
new file mode 100644
index 00000000..424d066d
--- /dev/null
+++ b/2.3-1/src/c/string/disp/i16dispa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double i16dispa (int16* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf (" %d ", in[i+j*rows]);
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/i16disps.c b/2.3-1/src/c/string/disp/i16disps.c
new file mode 100644
index 00000000..70edda77
--- /dev/null
+++ b/2.3-1/src/c/string/disp/i16disps.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double i16disps (int16 in) {
+ printf(" %d \n",in);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/i8dispa.c b/2.3-1/src/c/string/disp/i8dispa.c
new file mode 100644
index 00000000..9acd9674
--- /dev/null
+++ b/2.3-1/src/c/string/disp/i8dispa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double i8dispa (int8* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf (" %d ", in[i+j*rows]);
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/i8disps.c b/2.3-1/src/c/string/disp/i8disps.c
new file mode 100644
index 00000000..07cc6c4f
--- /dev/null
+++ b/2.3-1/src/c/string/disp/i8disps.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double i8disps (int8 in) {
+ printf(" %d \n",in);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/sdispa.c b/2.3-1/src/c/string/disp/sdispa.c
new file mode 100644
index 00000000..d2859187
--- /dev/null
+++ b/2.3-1/src/c/string/disp/sdispa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double sdispa (float* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf (" %f ", in[i+j*rows]);
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/sdisps.c b/2.3-1/src/c/string/disp/sdisps.c
new file mode 100644
index 00000000..98b04a6f
--- /dev/null
+++ b/2.3-1/src/c/string/disp/sdisps.c
@@ -0,0 +1,18 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double sdisps (float in) {
+ printf(" %f \n",in);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/testDisp.c b/2.3-1/src/c/string/disp/testDisp.c
new file mode 100644
index 00000000..9f2bc96f
--- /dev/null
+++ b/2.3-1/src/c/string/disp/testDisp.c
@@ -0,0 +1,107 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan Simon
+ *
+ * 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 <assert.h>
+#include <stdlib.h>
+#include "disp.h"
+
+
+#define SIZE 10000
+
+/*
+** \float scalars displaying test
+*/
+static void sdispaTest (void) {
+
+ int i = 0 ;
+ float tabF[SIZE] ;
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabF[i] = (float) rand () ;
+ }
+
+ sdispa ( tabF, 1, SIZE );
+}
+
+/*
+** \double scalars displaying test
+*/
+
+static void ddispaTest (void) {
+
+ int i = 0 ;
+ double tabD[SIZE] ;
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabD[i] = (double) rand () ;
+ }
+
+ ddispa ( tabD, 1, SIZE ) ;
+
+}
+
+
+/*
+** \float complexes displaying test
+*/
+static void cdispaTest (void) {
+
+ int i = 0 ;
+ floatComplex tabF[SIZE] ;
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabF[i] = FloatComplex ((float) rand (), (float) rand());
+ }
+
+ cdispa ( tabF, 1, SIZE ) ;
+}
+
+
+
+/*
+** \double complexes displaying test
+*/
+static void zdispaTest (void) {
+
+ int i = 0 ;
+ doubleComplex tabD[SIZE] ;
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabD[i] = DoubleComplex ((double) rand (), (double) rand());
+ }
+
+ zdispa ( tabD, 1, SIZE ) ;
+
+}
+
+
+
+static int testDisp (void) {
+
+ printf("\n>>>> Disp Tests\n");
+ sdispaTest();
+ ddispaTest();
+ cdispaTest();
+ zdispaTest();
+
+ return 0;
+}
+
+
+int main(void) {
+ assert(testDisp() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj b/2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj
new file mode 100644
index 00000000..c0b76e7c
--- /dev/null
+++ b/2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{432917E4-F042-47B2-BF43-0C376883A7E6}</ProjectGuid>
+ <RootNamespace>testDisp</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDisp.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\string.vcxproj">
+ <Project>{38a141f2-df77-4032-a17c-0901ea1a7af1}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj.filters b/2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj.filters
new file mode 100644
index 00000000..51089028
--- /dev/null
+++ b/2.3-1/src/c/string/disp/test_Disp/testDisp.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDisp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/string/disp/u16dispa.c b/2.3-1/src/c/string/disp/u16dispa.c
new file mode 100644
index 00000000..ad3685e2
--- /dev/null
+++ b/2.3-1/src/c/string/disp/u16dispa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double u16dispa (uint16* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf (" %u ", in[i+j*rows]);
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/u16disps.c b/2.3-1/src/c/string/disp/u16disps.c
new file mode 100644
index 00000000..383dcfc0
--- /dev/null
+++ b/2.3-1/src/c/string/disp/u16disps.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double u16disps (uint16 in) {
+ printf(" %u \n",in);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/u8dispa.c b/2.3-1/src/c/string/disp/u8dispa.c
new file mode 100644
index 00000000..f242b5c5
--- /dev/null
+++ b/2.3-1/src/c/string/disp/u8dispa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double u8dispa (uint8* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf (" %d ", in[i+j*rows]);
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/u8disps.c b/2.3-1/src/c/string/disp/u8disps.c
new file mode 100644
index 00000000..2d3e78fa
--- /dev/null
+++ b/2.3-1/src/c/string/disp/u8disps.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "disp.h"
+
+double u8disps (uint8 in) {
+ printf(" %d \n",in);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/zdispa.c b/2.3-1/src/c/string/disp/zdispa.c
new file mode 100644
index 00000000..5d085d32
--- /dev/null
+++ b/2.3-1/src/c/string/disp/zdispa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double zdispa (doubleComplex* in, int rows, int columns){
+ int i = 0,j = 0;
+
+ for (i = 0; i < rows; ++i) {
+ for (j=0;j<columns;j++) printf(" %1.20f + %1.20fi " ,zreals(in[i+j*rows]) ,zimags(in[i+j*rows]));
+ printf("\n");
+ }
+ return 0;
+}
diff --git a/2.3-1/src/c/string/disp/zdisps.c b/2.3-1/src/c/string/disp/zdisps.c
new file mode 100644
index 00000000..c4ec137f
--- /dev/null
+++ b/2.3-1/src/c/string/disp/zdisps.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "disp.h"
+
+double zdisps (doubleComplex in) {
+
+ printf(" %1.20f + %1.20fi \n" ,zreals(in) ,zimags(in));
+ return 0;
+}
diff --git a/2.3-1/src/c/string/includes/convstr.h b/2.3-1/src/c/string/includes/convstr.h
new file mode 100644
index 00000000..0737c546
--- /dev/null
+++ b/2.3-1/src/c/string/includes/convstr.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __CONVSTR_H__
+#define __CONVSTR_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void gconvstrs(char* in, int size,char* flag,int size2,char* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__CONVSTR_H__*/
diff --git a/2.3-1/src/c/string/includes/disp.h b/2.3-1/src/c/string/includes/disp.h
new file mode 100644
index 00000000..88764f27
--- /dev/null
+++ b/2.3-1/src/c/string/includes/disp.h
@@ -0,0 +1,132 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+
+
+#ifndef __DISP_H__
+#define __DISP_H__
+
+#include <stdio.h>
+#include "dynlib_string.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** \brief display of a float scalar
+*/
+EXTERN_STRING double sdisps (float in);
+
+/*
+** \brief display of a double scalar
+*/
+EXTERN_STRING double ddisps (double in);
+
+/*
+** \brief display of a float complex
+*/
+EXTERN_STRING double cdisps (floatComplex in);
+
+/*
+** \brief display of a double complex
+*/
+EXTERN_STRING double zdisps (doubleComplex in);
+
+/*
+** \brief display of a uint8 scalar
+*/
+EXTERN_STRING double u8disps (uint8 in);
+
+/*
+** \brief display of a int8 scalar
+*/
+EXTERN_STRING double i8disps (int8 in);
+
+/*
+** \brief display of a uint16 scalar
+*/
+EXTERN_STRING double u16disps (uint16 in);
+
+/*
+** \brief display of a int16 scalar
+*/
+EXTERN_STRING double i16disps (int16 in);
+
+
+/*
+** \brief display of a float scalar array
+** \param in the float scalar array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double sdispa (float* in, int rows, int columns);
+
+/*
+** \brief display of a double scalar array
+** \param in the double scalar array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double ddispa (double* in, int rows, int columns);
+
+/*
+** \brief display of a float complex array
+** \param in the float complex array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double cdispa (floatComplex* in, int rows, int columns);
+
+/*
+** \brief display of a double complex array
+** \param in the double complex array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double zdispa (doubleComplex* in, int rows, int columns);
+
+/*
+** \brief display of a uint8 scalar array
+** \param in the uint8 scalar array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double u8dispa (uint8* in, int rows, int columns);
+
+/*
+** \brief display of a int8 scalar array
+** \param in the int8 scalar array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double i8dispa (int8* in, int rows, int columns);
+
+/*
+** \brief display of a uint16 scalar array
+** \param in the uint16 scalar array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double u16dispa (uint16* in, int rows, int columns);
+
+/*
+** \brief display of a int16 scalar array
+** \param in the int16 scalar array to display
+** \param size the size of the array
+*/
+EXTERN_STRING double i16dispa (int16* in, int rows, int columns);
+
+EXTERN_STRING double ddisph (double *in, int rows, int cols, int levels);
+
+EXTERN_STRING double g2dispd0(char *array,int* tmparraysize);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__DISP_H__ */
diff --git a/2.3-1/src/c/string/includes/dynlib_string.h b/2.3-1/src/c/string/includes/dynlib_string.h
new file mode 100644
index 00000000..ca11ce10
--- /dev/null
+++ b/2.3-1/src/c/string/includes/dynlib_string.h
@@ -0,0 +1,27 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_STRING_H__
+#define __DYNLIB_STRING_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if STRING_EXPORTS
+ #define EXTERN_STRING __declspec (dllexport)
+ #else
+ #define EXTERN_STRING __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_STRING
+#endif
+
+#endif /* __DYNLIB_STRING_H__ */
+
diff --git a/2.3-1/src/c/string/includes/str.h b/2.3-1/src/c/string/includes/str.h
new file mode 100644
index 00000000..79307b5f
--- /dev/null
+++ b/2.3-1/src/c/string/includes/str.h
@@ -0,0 +1,146 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+
+
+
+#ifndef __STR_H__
+#define __STR_H__
+
+#include <stdio.h>
+#include "dynlib_string.h"
+#include "floatComplex.h"
+#include "doubleComplex.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** \brief convert of a float scalar into a char array
+** \param in the float scalar to convert
+** \param out the output char array
+*/
+EXTERN_STRING void sstrings (float in, char* out);
+
+/*
+** \brief convert of a double scalar into a char array
+** \param in the double scalar to convert
+** \param out the output char array
+*/
+EXTERN_STRING void dstrings (double in, char* out);
+
+/*
+** \brief convert of a float complex into a char array
+** \param in the float complex to convert
+** \param out the output char array
+*/
+EXTERN_STRING void cstrings (floatComplex in, char* out);
+
+/*
+** \brief convert of a double complex into a char array
+** \param in the double complex to convert
+** \param out the output char array
+*/
+EXTERN_STRING void zstrings (doubleComplex in, char* out);
+
+
+/*
+** \brief convert of a uint8 scalar into a char array
+** \param in the uint8 scalar to convert
+** \param out the output char array
+*/
+EXTERN_STRING void u8strings (uint8 in, char* out);
+
+/*
+** \brief convert of a int8 scalar into a char array
+** \param in the int8 scalar to convert
+** \param out the output char array
+*/
+EXTERN_STRING void i8strings (int8 in, char* out);
+
+/*
+** \brief convert of a uint16 scalar into a char array
+** \param in the uint16 scalar to convert
+** \param out the output char array
+*/
+EXTERN_STRING void u16strings (uint16 in, char* out);
+
+/*
+** \brief convert of a int16 scalar into a char array
+** \param in the int16 scalar to convert
+** \param out the output char array
+*/
+EXTERN_STRING void i16strings (int16 in, char* out);
+
+
+/*
+** \brief convert of a float scalar array into an array of char arrays
+** \param in the float scalar array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void sstringa (float* in, int size, char** out);
+
+/*
+** \brief convert of a double scalar array into an array of char arrays
+** \param in the double scalar array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void dstringa (double* in, int size, char** out);
+
+/*
+** \brief convert of a float complex array into an array of char arrays
+** \param in the float complex array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void cstringa (floatComplex* in, int size, char** out );
+
+/*
+** \brief convert of a double complex array into an array of char arrays
+** \param in the double complex array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void zstringa (doubleComplex* in, int size, char** out);
+
+/*
+** \brief convert of a uint8 scalar array into an array of char arrays
+** \param in the uint8 scalar array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void u8stringa (uint8* in, int size, char** out);
+
+/*
+** \brief convert of a int8 scalar array into an array of char arrays
+** \param in the int8 scalar array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void i8stringa (int8* in, int size, char** out);
+
+/*
+** \brief convert of a uint16 scalar array into an array of char arrays
+** \param in the uint16 scalar array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void u16stringa (uint16* in, int size, char** out);
+
+/*
+** \brief convert of a int16 scalar array into an array of char arrays
+** \param in the int16 scalar array to convert
+** \param out the output array of char arrays
+*/
+EXTERN_STRING void i16stringa (int16* in, int size, char** out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__STR_H__ */
diff --git a/2.3-1/src/c/string/includes/strrchr.h b/2.3-1/src/c/string/includes/strrchr.h
new file mode 100644
index 00000000..d06460be
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strrchr.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRRCHR_H__
+#define __STRRCHR_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void gstrrchr(char* str,int size,char* key,int size2,char* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__STRRCHR_H__*/
diff --git a/2.3-1/src/c/string/includes/strrev.h b/2.3-1/src/c/string/includes/strrev.h
new file mode 100644
index 00000000..c7e79570
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strrev.h
@@ -0,0 +1,27 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRREV_H__
+#define __STRREV_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void gstrreva(char* str,int size,char* out);
+//void gstrrevs(char* in, int size,char* search, int size2, char* rep, int size3, ,char* out);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__STRREV_H__*/
diff --git a/2.3-1/src/c/string/includes/strsubst.h b/2.3-1/src/c/string/includes/strsubst.h
new file mode 100644
index 00000000..e9eba429
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strsubst.h
@@ -0,0 +1,27 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRSUBST_H__
+#define __STRSUBST_H__
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+void gstrsubsta(char* str, int size, char* search, int size2, char* rep, int size3, char* flagmain,int size4, char* out);
+//void gstrsubsta(char* str, int size, char* search, int size2, char* rep, int size3, char* out,int size5);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__STRSUBST_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_convstr.h b/2.3-1/src/c/string/interfaces/int_convstr.h
new file mode 100644
index 00000000..2eade501
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_convstr.h
@@ -0,0 +1,27 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_CONVSTR_H__
+#define __INT_CONVSTR_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define g2g2convstrg2(in,size,flag,size2,out) gconvstrs(in,size[0]*size[1],flag,size2[1],out)
+/*#define g2g2convstrg0(in,size,type,typesize,out) (type=='u': \
+ gconvstrs(in,size[0]*size[1],0,out)?gconvstrs(in,size[0]*size[1],1,out))
+*/
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_CONVSTR_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_disp.h b/2.3-1/src/c/string/interfaces/int_disp.h
new file mode 100644
index 00000000..3bb78528
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_disp.h
@@ -0,0 +1,60 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_DISP_H__
+#define __INT_DISP_H__
+
+#include <stdio.h>
+
+#define s0disp(in) sdisps(in)
+
+#define d0disp(in) ddisps(in)
+
+#define c0disp(in) cdisps(in)
+
+#define z0disp(in) zdisps(in)
+
+#define u80disp(in) u8disps(in)
+
+#define i80disp(in) i8disps(in)
+
+#define u160disp(in) u16disps(in)
+
+#define i160disp(in) i16disps(in)
+
+#define s2disp(in,size) sdispa(in,size[0],size[1])
+
+#define d2disp(in,size) ddispa(in,size[0],size[1])
+
+#define c2disp(in,size) cdispa(in,size[0],size[1])
+
+#define z2disp(in,size) zdispa(in,size[0],size[1])
+
+#define u82disp(in,size) u8dispa(in,size[0],size[1])
+
+#define i82disp(in,size) i8dispa(in,size[0],size[1])
+
+#define u162disp(in,size) u16dispa(in,size[0],size[1])
+
+#define i162disp(in,size) i16dispa(in,size[0],size[1])
+
+#define d3disp(in,size) ddisph(in,size[0],size[1],size[2])
+
+#define g2disp(in, size) printf("%s\n",in)
+
+#endif /* __INT_DISP_H__ */
+
+
+
+
diff --git a/2.3-1/src/c/string/interfaces/int_string.h b/2.3-1/src/c/string/interfaces/int_string.h
new file mode 100644
index 00000000..7cea7799
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_string.h
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_STRING_H__
+#define __INT_STRING_H__
+
+#include <stdio.h>
+
+#define s0stringg0(in,out) sstrings(in,out)
+
+#define d0stringg0(in,out) dstrings(in,out)
+
+#define c0stringg0(in,out) cstrings(in,out)
+
+#define z0stringg0(in,out) zstrings(in,out)
+
+#define u80stringg0(in,out) u8strings(in,out)
+
+#define i80stringg0(in,out) i8strings(in,out)
+
+#define u160stringg0(in,out) u16strings(in,out)
+
+#define i160stringg0(in,out) i16strings(in,out)
+
+#define s2stringg2(in,size,out) sstringa(in,size[0]*size[1],out)
+
+#define d2stringg2(in,size,out) dstringa(in,size[0]*size[1],out)
+
+#define c2stringg2(in,size,out) cstringa(in,size[0]*size[1],out)
+
+#define z2stringg2(in,size,out) zstringa(in,size[0]*size[1],out)
+
+#define u82stringg2(in,size,out) u8stringa(in,size[0]*size[1],out)
+
+#define i82stringg2(in,size,out) i8stringa(in,size[0]*size[1],out)
+
+#define u162stringg2(in,size,out) u16stringa(in,size[0]*size[1],out)
+
+#define i162stringg2(in,size,out) i16stringa(in,size[0]*size[1],out)
+
+#endif /* __INT_STRING_H__ */
diff --git a/2.3-1/src/c/string/interfaces/int_strrchr.h b/2.3-1/src/c/string/interfaces/int_strrchr.h
new file mode 100644
index 00000000..7ec94ebe
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strrchr.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRRCHR_H__
+#define __INT_STRRCHR_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define g2g2strrchrg2(str,size,key,size2,out) gstrrchra(str,size[1],key,size2[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_STRRCHR_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_strrev.h b/2.3-1/src/c/string/interfaces/int_strrev.h
new file mode 100644
index 00000000..8429f6a1
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strrev.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRREV_H__
+#define __INT_STRREV_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define g2strrevg2(str,size,out) gstrreva(str,size[1],out)
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_STRREV_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_strsubst.h b/2.3-1/src/c/string/interfaces/int_strsubst.h
new file mode 100644
index 00000000..c8dd67a1
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strsubst.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Shamik Guha
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRSUBST_H__
+#define __INT_STRSUBST_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define g2g2g2g2strsubstg2(str,size,search,size2,rep,size3,flagmain,size4,out) gstrsubsta(str,size[1],search,size2[1],rep,size3[1],flagmain,size4[1],out)
+#define g2g2g2strsubstg2(in,size,search,size2,rep,size3,out) gstrsubsta(in,size[1],search,size2[1],rep,size3[1],'s',size3[1],out)
+
+
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_STRSUBST_H__*/
diff --git a/2.3-1/src/c/string/string.vcxproj b/2.3-1/src/c/string/string.vcxproj
new file mode 100644
index 00000000..06706215
--- /dev/null
+++ b/2.3-1/src/c/string/string.vcxproj
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{38A141F2-DF77-4032-A17C-0901EA1A7AF1}</ProjectGuid>
+ <RootNamespace>string</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>includes;../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="disp\cdispa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\cdisps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\ddispa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\ddisps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\sdispa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\sdisps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\zdispa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="disp\zdisps.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\cstringa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\cstrings.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\dstringa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\dstrings.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\sstringa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\sstrings.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\zstringa.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="string\zstrings.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="disp\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\disp.h" />
+ <ClInclude Include="includes\dynlib_string.h" />
+ <ClInclude Include="includes\str.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/string/string.vcxproj.filters b/2.3-1/src/c/string/string.vcxproj.filters
new file mode 100644
index 00000000..8309e230
--- /dev/null
+++ b/2.3-1/src/c/string/string.vcxproj.filters
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Source Files\disp">
+ <UniqueIdentifier>{b94a802b-46a2-4208-b7c2-982395b9a4a0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\string">
+ <UniqueIdentifier>{03649445-c48f-4716-b559-21d648261a80}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="disp\cdispa.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\cdisps.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\ddispa.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\ddisps.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\sdispa.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\sdisps.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\zdispa.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="disp\zdisps.c">
+ <Filter>Source Files\disp</Filter>
+ </ClCompile>
+ <ClCompile Include="string\cstringa.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\cstrings.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\dstringa.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\dstrings.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\sstringa.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\sstrings.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\zstringa.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ <ClCompile Include="string\zstrings.c">
+ <Filter>Source Files\string</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="disp\Makefile.am">
+ <Filter>Source Files\disp</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\disp.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_string.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\str.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/string/string/Makefile.am b/2.3-1/src/c/string/string/Makefile.am
new file mode 100644
index 00000000..708118f3
--- /dev/null
+++ b/2.3-1/src/c/string/string/Makefile.am
@@ -0,0 +1,52 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2008-2008 - INRIA - Allan SIMON
+##
+## 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
+##
+##
+
+libString_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/string/includes
+
+pkglib_LTLIBRARIES = libString.la
+
+libString_la_SOURCES = $(HEAD) $(SRC)
+
+SRC = sstrings.c \
+ dstrings.c \
+ cstrings.c \
+ zstrings.c \
+ sstringa.c \
+ dstringa.c \
+ cstringa.c \
+ zstringa.c
+
+HEAD = ../includes/string.h
+
+####
+# Checking Part
+####
+
+check_INCLUDES = -I $(top_builddir)/src/c/string/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libString.la
+
+check_PROGRAMS = testString
+
+TESTS = testString
+
+#
+# -*- Dispine Tests -*-
+#
+testString_SOURCES = testString.c
+testString_CFLAGS = $(check_INCLUDES)
+testString_LDADD = $(check_LDADD)
+
diff --git a/2.3-1/src/c/string/string/Makefile.am.bak b/2.3-1/src/c/string/string/Makefile.am.bak
new file mode 100644
index 00000000..b4f449a5
--- /dev/null
+++ b/2.3-1/src/c/string/string/Makefile.am.bak
@@ -0,0 +1,3 @@
+## File created by the gnome-build tools
+
+
diff --git a/2.3-1/src/c/string/string/Makefile.in b/2.3-1/src/c/string/string/Makefile.in
new file mode 100644
index 00000000..8799f20d
--- /dev/null
+++ b/2.3-1/src/c/string/string/Makefile.in
@@ -0,0 +1,755 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testString$(EXEEXT)
+TESTS = testString$(EXEEXT)
+subdir = src/c/string/string
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libString_la_LIBADD =
+am__objects_1 =
+am__objects_2 = libString_la-sstrings.lo libString_la-dstrings.lo \
+ libString_la-cstrings.lo libString_la-zstrings.lo \
+ libString_la-sstringa.lo libString_la-dstringa.lo \
+ libString_la-cstringa.lo libString_la-zstringa.lo
+am_libString_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libString_la_OBJECTS = $(am_libString_la_OBJECTS)
+libString_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libString_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testString_OBJECTS = testString-testString.$(OBJEXT)
+testString_OBJECTS = $(am_testString_OBJECTS)
+testString_DEPENDENCIES = $(check_LDADD)
+testString_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testString_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libString_la_SOURCES) $(testString_SOURCES)
+DIST_SOURCES = $(libString_la_SOURCES) $(testString_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libString_la_CFLAGS = -I $(top_builddir)/src/c/type \
+ -I $(top_builddir)/src/c/string/includes
+
+pkglib_LTLIBRARIES = libString.la
+libString_la_SOURCES = $(HEAD) $(SRC)
+SRC = sstrings.c \
+ dstrings.c \
+ cstrings.c \
+ zstrings.c \
+ sstringa.c \
+ dstringa.c \
+ cstringa.c \
+ zstringa.c
+
+HEAD = ../includes/string.h
+
+####
+# Checking Part
+####
+check_INCLUDES = -I $(top_builddir)/src/c/string/includes \
+ -I $(top_builddir)/src/c/type
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+ $(top_builddir)/src/c/type/libFloatComplex.la \
+ libString.la
+
+
+#
+# -*- Dispine Tests -*-
+#
+testString_SOURCES = testString.c
+testString_CFLAGS = $(check_INCLUDES)
+testString_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/string/string/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/string/string/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libString.la: $(libString_la_OBJECTS) $(libString_la_DEPENDENCIES)
+ $(libString_la_LINK) -rpath $(pkglibdir) $(libString_la_OBJECTS) $(libString_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testString$(EXEEXT): $(testString_OBJECTS) $(testString_DEPENDENCIES)
+ @rm -f testString$(EXEEXT)
+ $(testString_LINK) $(testString_OBJECTS) $(testString_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-cstringa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-cstrings.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-dstringa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-dstrings.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-sstringa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-sstrings.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-zstringa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libString_la-zstrings.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testString-testString.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libString_la-sstrings.lo: sstrings.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-sstrings.lo -MD -MP -MF $(DEPDIR)/libString_la-sstrings.Tpo -c -o libString_la-sstrings.lo `test -f 'sstrings.c' || echo '$(srcdir)/'`sstrings.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-sstrings.Tpo $(DEPDIR)/libString_la-sstrings.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sstrings.c' object='libString_la-sstrings.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-sstrings.lo `test -f 'sstrings.c' || echo '$(srcdir)/'`sstrings.c
+
+libString_la-dstrings.lo: dstrings.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-dstrings.lo -MD -MP -MF $(DEPDIR)/libString_la-dstrings.Tpo -c -o libString_la-dstrings.lo `test -f 'dstrings.c' || echo '$(srcdir)/'`dstrings.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-dstrings.Tpo $(DEPDIR)/libString_la-dstrings.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dstrings.c' object='libString_la-dstrings.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-dstrings.lo `test -f 'dstrings.c' || echo '$(srcdir)/'`dstrings.c
+
+libString_la-cstrings.lo: cstrings.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-cstrings.lo -MD -MP -MF $(DEPDIR)/libString_la-cstrings.Tpo -c -o libString_la-cstrings.lo `test -f 'cstrings.c' || echo '$(srcdir)/'`cstrings.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-cstrings.Tpo $(DEPDIR)/libString_la-cstrings.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cstrings.c' object='libString_la-cstrings.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-cstrings.lo `test -f 'cstrings.c' || echo '$(srcdir)/'`cstrings.c
+
+libString_la-zstrings.lo: zstrings.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-zstrings.lo -MD -MP -MF $(DEPDIR)/libString_la-zstrings.Tpo -c -o libString_la-zstrings.lo `test -f 'zstrings.c' || echo '$(srcdir)/'`zstrings.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-zstrings.Tpo $(DEPDIR)/libString_la-zstrings.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zstrings.c' object='libString_la-zstrings.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-zstrings.lo `test -f 'zstrings.c' || echo '$(srcdir)/'`zstrings.c
+
+libString_la-sstringa.lo: sstringa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-sstringa.lo -MD -MP -MF $(DEPDIR)/libString_la-sstringa.Tpo -c -o libString_la-sstringa.lo `test -f 'sstringa.c' || echo '$(srcdir)/'`sstringa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-sstringa.Tpo $(DEPDIR)/libString_la-sstringa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sstringa.c' object='libString_la-sstringa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-sstringa.lo `test -f 'sstringa.c' || echo '$(srcdir)/'`sstringa.c
+
+libString_la-dstringa.lo: dstringa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-dstringa.lo -MD -MP -MF $(DEPDIR)/libString_la-dstringa.Tpo -c -o libString_la-dstringa.lo `test -f 'dstringa.c' || echo '$(srcdir)/'`dstringa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-dstringa.Tpo $(DEPDIR)/libString_la-dstringa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dstringa.c' object='libString_la-dstringa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-dstringa.lo `test -f 'dstringa.c' || echo '$(srcdir)/'`dstringa.c
+
+libString_la-cstringa.lo: cstringa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-cstringa.lo -MD -MP -MF $(DEPDIR)/libString_la-cstringa.Tpo -c -o libString_la-cstringa.lo `test -f 'cstringa.c' || echo '$(srcdir)/'`cstringa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-cstringa.Tpo $(DEPDIR)/libString_la-cstringa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cstringa.c' object='libString_la-cstringa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-cstringa.lo `test -f 'cstringa.c' || echo '$(srcdir)/'`cstringa.c
+
+libString_la-zstringa.lo: zstringa.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -MT libString_la-zstringa.lo -MD -MP -MF $(DEPDIR)/libString_la-zstringa.Tpo -c -o libString_la-zstringa.lo `test -f 'zstringa.c' || echo '$(srcdir)/'`zstringa.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libString_la-zstringa.Tpo $(DEPDIR)/libString_la-zstringa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zstringa.c' object='libString_la-zstringa.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libString_la_CFLAGS) $(CFLAGS) -c -o libString_la-zstringa.lo `test -f 'zstringa.c' || echo '$(srcdir)/'`zstringa.c
+
+testString-testString.o: testString.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testString_CFLAGS) $(CFLAGS) -MT testString-testString.o -MD -MP -MF $(DEPDIR)/testString-testString.Tpo -c -o testString-testString.o `test -f 'testString.c' || echo '$(srcdir)/'`testString.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testString-testString.Tpo $(DEPDIR)/testString-testString.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testString.c' object='testString-testString.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testString_CFLAGS) $(CFLAGS) -c -o testString-testString.o `test -f 'testString.c' || echo '$(srcdir)/'`testString.c
+
+testString-testString.obj: testString.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testString_CFLAGS) $(CFLAGS) -MT testString-testString.obj -MD -MP -MF $(DEPDIR)/testString-testString.Tpo -c -o testString-testString.obj `if test -f 'testString.c'; then $(CYGPATH_W) 'testString.c'; else $(CYGPATH_W) '$(srcdir)/testString.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testString-testString.Tpo $(DEPDIR)/testString-testString.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testString.c' object='testString-testString.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testString_CFLAGS) $(CFLAGS) -c -o testString-testString.obj `if test -f 'testString.c'; then $(CYGPATH_W) 'testString.c'; else $(CYGPATH_W) '$(srcdir)/testString.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/string/string/cstringa.c b/2.3-1/src/c/string/string/cstringa.c
new file mode 100644
index 00000000..6b600f48
--- /dev/null
+++ b/2.3-1/src/c/string/string/cstringa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "str.h"
+
+void cstringa (floatComplex* in, int size ,char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ cstrings (in[i], out[i]);
+ }
+
+
+}
diff --git a/2.3-1/src/c/string/string/cstrings.c b/2.3-1/src/c/string/string/cstrings.c
new file mode 100644
index 00000000..e9d3504b
--- /dev/null
+++ b/2.3-1/src/c/string/string/cstrings.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdio.h>
+#include "str.h"
+
+void cstrings (floatComplex in, char* out) {
+
+ float RealIn = creals(in);
+ float ImgIn = cimags(in);
+
+ sprintf ( out, "%5.20e + %5.20ei" ,RealIn ,ImgIn );
+
+}
diff --git a/2.3-1/src/c/string/string/dstringa.c b/2.3-1/src/c/string/string/dstringa.c
new file mode 100644
index 00000000..1d10f861
--- /dev/null
+++ b/2.3-1/src/c/string/string/dstringa.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "str.h"
+
+void dstringa (double* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ dstrings (in[i], out[i]);
+ }
+}
diff --git a/2.3-1/src/c/string/string/dstrings.c b/2.3-1/src/c/string/string/dstrings.c
new file mode 100644
index 00000000..6a178a73
--- /dev/null
+++ b/2.3-1/src/c/string/string/dstrings.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdio.h>
+#include "str.h"
+
+void dstrings (double in, char* out) {
+
+ sprintf (out, "%5.20e" ,in );
+}
diff --git a/2.3-1/src/c/string/string/i16stringa.c b/2.3-1/src/c/string/string/i16stringa.c
new file mode 100644
index 00000000..f33f2cb5
--- /dev/null
+++ b/2.3-1/src/c/string/string/i16stringa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "str.h"
+#include "types.h"
+
+void i16stringa (int16* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ i16strings (in[i], out[i]);
+ }
+}
diff --git a/2.3-1/src/c/string/string/i16strings.c b/2.3-1/src/c/string/string/i16strings.c
new file mode 100644
index 00000000..8644733c
--- /dev/null
+++ b/2.3-1/src/c/string/string/i16strings.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include "str.h"
+#include "types.h"
+
+void i16strings (int16 in, char* out) {
+
+ sprintf (out, "%d" ,in );
+}
diff --git a/2.3-1/src/c/string/string/i8stringa.c b/2.3-1/src/c/string/string/i8stringa.c
new file mode 100644
index 00000000..37f4d8e8
--- /dev/null
+++ b/2.3-1/src/c/string/string/i8stringa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "str.h"
+#include "types.h"
+
+void i8stringa (int8* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ i8strings (in[i], out[i]);
+ }
+}
diff --git a/2.3-1/src/c/string/string/i8strings.c b/2.3-1/src/c/string/string/i8strings.c
new file mode 100644
index 00000000..3f3c9e8f
--- /dev/null
+++ b/2.3-1/src/c/string/string/i8strings.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include "str.h"
+#include "types.h"
+
+void i8strings (int8 in, char* out) {
+
+ sprintf (out, "%d" ,in );
+}
diff --git a/2.3-1/src/c/string/string/sstringa.c b/2.3-1/src/c/string/string/sstringa.c
new file mode 100644
index 00000000..0206d6a9
--- /dev/null
+++ b/2.3-1/src/c/string/string/sstringa.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "str.h"
+
+void sstringa (float* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ sstrings (in[i], out[i]);
+ }
+}
diff --git a/2.3-1/src/c/string/string/sstrings.c b/2.3-1/src/c/string/string/sstrings.c
new file mode 100644
index 00000000..25daa8d6
--- /dev/null
+++ b/2.3-1/src/c/string/string/sstrings.c
@@ -0,0 +1,19 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdio.h>
+#include "str.h"
+
+void sstrings (float in, char* out) {
+
+ sprintf (out, "%5.20e" ,in );
+}
diff --git a/2.3-1/src/c/string/string/testString.c b/2.3-1/src/c/string/string/testString.c
new file mode 100644
index 00000000..765af263
--- /dev/null
+++ b/2.3-1/src/c/string/string/testString.c
@@ -0,0 +1,238 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan Simon
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include <string.h>
+#include "str.h"
+#define SIZE 10000
+
+/*
+** \floating scalars test
+*/
+static void sstringaTest (void) {
+ float tabF[SIZE];
+ float tabF2[SIZE];
+ char** tabC = NULL ;
+ int i = 0 ;
+
+ printf("\n>>>> sstringaTest Tests\n");
+
+ tabC = (char**)malloc( SIZE *sizeof(char*));
+
+ for ( i=0;i< SIZE ; ++i )
+ {
+ tabC[i] = (char *)malloc( 26 * sizeof(char));
+ }
+
+ srand( 1 ) ;
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabF[i] = (float) rand () ;
+ }
+
+/* call to the function to test */
+ sstringa ( tabF , SIZE , tabC ) ;
+
+/* reverse convertion*/
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ sscanf ( tabC[i] , "%e" , &(tabF2[i]) ) ;
+ }
+
+/* and we compare if the initial and final floats are equal */
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ assert ( fabs( tabF[i] - tabF2[i]) / ( fabs ( tabF[i] )) < 1e-07 ) ;
+ }
+
+
+
+}
+
+
+/*
+** \double scalars test
+*/
+
+static void dstringaTest (void) {
+ double tabD[SIZE];
+ double tabD2[SIZE];
+ char** tabC = NULL ;
+ int i = 0 ;
+
+ srand( 1 ) ;
+
+ printf("\n>>>> dstringaTest Tests\n");
+
+ tabC = (char**)malloc( SIZE *sizeof(char*));
+
+ for ( i=0;i< SIZE ; ++i )
+ {
+ tabC[i] = (char *)malloc( 26 * sizeof(char));
+ }
+
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabD[i] = (double) rand () ;
+ }
+
+/* call to the function to test */
+
+ dstringa ( tabD , SIZE , tabC ) ;
+/* reverse convertion*/
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+
+ tabD2[i] = strtod (tabC[i] , NULL);
+
+ }
+
+/* and we compare if the initial and final doubles are equal */
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ assert ( fabs( tabD[i] - tabD2[i]) / ( fabs ( tabD[i] )) < 1e-16 ) ;
+ }
+
+
+
+}
+
+
+/*
+** \complex floats test
+*/
+
+static void cstringaTest (void) {
+ floatComplex tabF[SIZE];
+ floatComplex tabF2[SIZE] ;
+ float img ;
+ float real ;
+ char** tabC = NULL ;
+
+ int i = 0 ;
+
+ srand( 1 ) ;
+
+ printf("\n>>>> cstringaTest Tests\n");
+ tabC = (char**)malloc( SIZE *sizeof(char*));
+
+ for ( i=0;i< SIZE ; ++i )
+ {
+ tabC[i] = (char *)malloc( 53 * sizeof(char));
+ }
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabF[i] = FloatComplex ((float) rand (), (float) rand());
+ }
+
+
+ cstringa ( tabF , SIZE , tabC ) ;
+
+/* reverse convertion*/
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ sscanf (tabC[i] , "%e + %e" , &real , &img );
+
+
+ tabF2[i] = FloatComplex (real ,img );
+ }
+
+
+/* and we compare if the initial and final floats are equal */
+
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ assert ( fabs( creals(tabF2[i]) - creals (tabF[i]) ) / fabs (creals (tabF[i])) < 1e-07 );
+ assert ( fabs( cimags(tabF2[i]) - cimags (tabF[i]) ) / fabs (cimags (tabF[i])) < 1e-07 ) ;
+ }
+
+
+
+}
+
+
+/*
+** \double 07 test
+*/
+static void zstringaTest (void) {
+ doubleComplex tabD[SIZE];
+ doubleComplex tabD2[SIZE] ;
+ double img ;
+ double real ;
+ char* temp = NULL ;
+ char** tabC = NULL ;
+
+ int i = 0 ;
+
+ srand( 1 ) ;
+
+ printf("\n>>>> zstringaTest Tests\n");
+
+ tabC = (char**)malloc( SIZE *sizeof(char*));
+
+ for ( i=0;i< SIZE ; ++i )
+ {
+ tabC[i] = (char *)malloc( 53 * sizeof(char));
+ }
+
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ tabD[i] = DoubleComplex ((double) rand (), (double) rand());
+ }
+
+ zstringa ( tabD , SIZE , tabC ) ;
+
+/* reverse convertion*/
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ real = (double) strtod (tabC[i] ,&temp );
+ img = (double) strtod (temp + 3 ,NULL );
+
+ tabD2[i] = DoubleComplex (real ,img );
+ }
+/* and we compare if the initial and final doubles are equal */
+
+ for ( i = 0 ; i < SIZE ; ++i)
+ {
+ assert ( fabs( zreals(tabD2[i]) - zreals (tabD[i]) ) / fabs (zreals (tabD[i])) < 1e-16 );
+ assert ( fabs( zimags(tabD2[i]) - zimags (tabD[i]) ) / fabs (zimags (tabD[i])) < 1e-16 );
+ }
+
+
+}
+
+static int testString (void) {
+
+ printf("\n>>>> String Tests\n");
+ sstringaTest();
+ dstringaTest();
+ cstringaTest();
+ zstringaTest();
+
+ return 0;
+}
+
+int main(void) {
+ assert(testString() == 0);
+ return 0;
+}
diff --git a/2.3-1/src/c/string/string/test_String/testString.vcxproj b/2.3-1/src/c/string/string/test_String/testString.vcxproj
new file mode 100644
index 00000000..6cb95238
--- /dev/null
+++ b/2.3-1/src/c/string/string/test_String/testString.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{DF010F03-718D-4CEF-BD03-5E2C9C47613D}</ProjectGuid>
+ <RootNamespace>testString</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../../includes;../../../type;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testString.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\type\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\string.vcxproj">
+ <Project>{38a141f2-df77-4032-a17c-0901ea1a7af1}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/string/string/test_String/testString.vcxproj.filters b/2.3-1/src/c/string/string/test_String/testString.vcxproj.filters
new file mode 100644
index 00000000..95101ab6
--- /dev/null
+++ b/2.3-1/src/c/string/string/test_String/testString.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testString.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/string/string/u16stringa.c b/2.3-1/src/c/string/string/u16stringa.c
new file mode 100644
index 00000000..ef6a0a97
--- /dev/null
+++ b/2.3-1/src/c/string/string/u16stringa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "str.h"
+#include "types.h"
+
+void u16stringa (uint16* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ u16strings (in[i], out[i]);
+ }
+}
diff --git a/2.3-1/src/c/string/string/u16strings.c b/2.3-1/src/c/string/string/u16strings.c
new file mode 100644
index 00000000..f09ed971
--- /dev/null
+++ b/2.3-1/src/c/string/string/u16strings.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include "str.h"
+#include "types.h"
+
+void u16strings (uint16 in, char* out) {
+
+ sprintf (out, "%d" ,in );
+}
diff --git a/2.3-1/src/c/string/string/u8stringa.c b/2.3-1/src/c/string/string/u8stringa.c
new file mode 100644
index 00000000..d605537c
--- /dev/null
+++ b/2.3-1/src/c/string/string/u8stringa.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "str.h"
+#include "types.h"
+
+void u8stringa (uint8* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ u8strings (in[i], out[i]);
+ }
+}
diff --git a/2.3-1/src/c/string/string/u8strings.c b/2.3-1/src/c/string/string/u8strings.c
new file mode 100644
index 00000000..07d07f36
--- /dev/null
+++ b/2.3-1/src/c/string/string/u8strings.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ 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
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include <stdio.h>
+#include "str.h"
+#include "types.h"
+
+void u8strings (uint8 in, char* out) {
+
+ sprintf (out, "%d" ,in );
+}
diff --git a/2.3-1/src/c/string/string/zstringa.c b/2.3-1/src/c/string/string/zstringa.c
new file mode 100644
index 00000000..29ce0b26
--- /dev/null
+++ b/2.3-1/src/c/string/string/zstringa.c
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 "str.h"
+
+void zstringa (doubleComplex* in, int size, char** out){
+
+ int i = 0;
+ for (i = 0; i < size; ++i)
+ {
+ zstrings (in[i], out[i]);
+ }
+}
+
diff --git a/2.3-1/src/c/string/string/zstrings.c b/2.3-1/src/c/string/string/zstrings.c
new file mode 100644
index 00000000..8db08aa1
--- /dev/null
+++ b/2.3-1/src/c/string/string/zstrings.c
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ * 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 <stdio.h>
+#include "str.h"
+
+void zstrings (doubleComplex in, char* out) {
+
+ double RealIn = zreals(in);
+ double ImgIn = zimags(in);
+
+ sprintf (out, "%5.20e + %5.20ei" ,RealIn ,ImgIn );
+}
diff --git a/2.3-1/src/c/string/strrchr/gstrrchra.c b/2.3-1/src/c/string/strrchr/gstrrchra.c
new file mode 100644
index 00000000..6a55fbd3
--- /dev/null
+++ b/2.3-1/src/c/string/strrchr/gstrrchra.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <stdio.h>
+#include <string.h>
+#include "strrchr.h"
+
+void gstrrchra(char* str,int size,char* key,int size2,char* out)
+{
+ int i,j, k=0, pos2;
+
+ for (i = 0;i<size;i++)
+ {
+ if (key[0] == str[i])
+ {
+ pos2 = i;
+ }
+ }
+ for(j=pos2;j<i;j++)
+ {
+ out[k]=str[j];
+ k++;
+ }
+}
diff --git a/2.3-1/src/c/string/strrev/gstrreva.c b/2.3-1/src/c/string/strrev/gstrreva.c
new file mode 100644
index 00000000..71a95725
--- /dev/null
+++ b/2.3-1/src/c/string/strrev/gstrreva.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+#include <stdio.h>
+#include "strrev.h"
+
+void gstrreva(char* str,int size,char* out)
+{
+ int i=-1,j=0;
+
+ while(str[++i]!='\0');
+
+ while(i>=0)
+ out[j++] = str[--i];
+
+ out[j]='\0';
+
+}
diff --git a/2.3-1/src/c/string/strsubst/gstrsubsta.c b/2.3-1/src/c/string/strsubst/gstrsubsta.c
new file mode 100644
index 00000000..6aee50ce
--- /dev/null
+++ b/2.3-1/src/c/string/strsubst/gstrsubsta.c
@@ -0,0 +1,69 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ 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
+ Organization: FOSSEE, IIT Bombay
+ Author: Shamik Guha
+ Email: toolbox@scilab.in
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include "strsubst.h"
+
+void gstrsubsta(char* str,int size, char* search, int size2, char* rep, int size3, char* flagmain, int size4, char* out)
+{
+ int i = 0, j = 0, flag = 0, start = 0;
+
+ //if(flagmain[0]!='r')
+ //{
+ while (str[i] != '\0')
+ {
+ if (str[i] == search[j])
+ {
+ if (!flag)
+ start = i;
+ j++;
+ if (search[j] == '\0')
+ break;
+ flag = 1;
+ }
+ else
+ {
+ flag = start = j = 0;
+ }
+ i++;
+ }
+
+ if (search[j] == '\0' && flag)
+ {
+ for (i = 0; i < start; i++)
+ out[i] = str[i];
+ /* rep string with another string */
+ for (j = 0; j < strlen(rep); j++)
+ {
+ out[i] = rep[j];
+ i++;
+ }
+
+ /* copy remaining portion of the input string "str" */
+ for (j = start + strlen(search); j < strlen(str); j++)
+ {
+ out[i] = str[j];
+ i++;
+ }
+
+ /* print the out string */
+ out[i] = '\0';
+ //printf("Output: %s\n", out);
+ }
+ else
+ {
+ printf("%s is not a searching of %s\n", search, str);
+ }
+ // }
+
+}
diff --git a/2.3-1/src/c/type/Makefile.am b/2.3-1/src/c/type/Makefile.am
new file mode 100644
index 00000000..6fd65ea2
--- /dev/null
+++ b/2.3-1/src/c/type/Makefile.am
@@ -0,0 +1,37 @@
+##
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+## 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
+##
+##
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libDoubleComplex.la libFloatComplex.la
+
+libDoubleComplex_la_SOURCES = $(DCHEAD) $(DCSRC)
+
+libFloatComplex_la_SOURCES = $(FCHEAD) $(FCSRC)
+
+check_PROGRAMS = testDoubleComplex testFloatComplex
+
+testDoubleComplex_SOURCES = testDoubleComplex.c
+testDoubleComplex_LDADD = libDoubleComplex.la
+
+testFloatComplex_SOURCES = testFloatComplex.c
+testFloatComplex_LDADD = libFloatComplex.la
+
+TESTS = testDoubleComplex testFloatComplex
+
+### Double Complex
+DCSRC = doubleComplex.c
+DCHEAD = doubleComplex.h
+
+### Float Complex
+FCSRC = floatComplex.c
+FCHEAD = floatComplex.h
diff --git a/2.3-1/src/c/type/Makefile.in b/2.3-1/src/c/type/Makefile.in
new file mode 100644
index 00000000..7f673156
--- /dev/null
+++ b/2.3-1/src/c/type/Makefile.in
@@ -0,0 +1,669 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testDoubleComplex$(EXEEXT) testFloatComplex$(EXEEXT)
+TESTS = testDoubleComplex$(EXEEXT) testFloatComplex$(EXEEXT)
+subdir = src/c/type
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libDoubleComplex_la_LIBADD =
+am__objects_1 =
+am__objects_2 = doubleComplex.lo
+am_libDoubleComplex_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libDoubleComplex_la_OBJECTS = $(am_libDoubleComplex_la_OBJECTS)
+libFloatComplex_la_LIBADD =
+am__objects_3 = floatComplex.lo
+am_libFloatComplex_la_OBJECTS = $(am__objects_1) $(am__objects_3)
+libFloatComplex_la_OBJECTS = $(am_libFloatComplex_la_OBJECTS)
+am_testDoubleComplex_OBJECTS = testDoubleComplex.$(OBJEXT)
+testDoubleComplex_OBJECTS = $(am_testDoubleComplex_OBJECTS)
+testDoubleComplex_DEPENDENCIES = libDoubleComplex.la
+am_testFloatComplex_OBJECTS = testFloatComplex.$(OBJEXT)
+testFloatComplex_OBJECTS = $(am_testFloatComplex_OBJECTS)
+testFloatComplex_DEPENDENCIES = libFloatComplex.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libDoubleComplex_la_SOURCES) $(libFloatComplex_la_SOURCES) \
+ $(testDoubleComplex_SOURCES) $(testFloatComplex_SOURCES)
+DIST_SOURCES = $(libDoubleComplex_la_SOURCES) \
+ $(libFloatComplex_la_SOURCES) $(testDoubleComplex_SOURCES) \
+ $(testFloatComplex_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libDoubleComplex.la libFloatComplex.la
+libDoubleComplex_la_SOURCES = $(DCHEAD) $(DCSRC)
+libFloatComplex_la_SOURCES = $(FCHEAD) $(FCSRC)
+testDoubleComplex_SOURCES = testDoubleComplex.c
+testDoubleComplex_LDADD = libDoubleComplex.la
+testFloatComplex_SOURCES = testFloatComplex.c
+testFloatComplex_LDADD = libFloatComplex.la
+
+### Double Complex
+DCSRC = doubleComplex.c
+DCHEAD = doubleComplex.h
+
+### Float Complex
+FCSRC = floatComplex.c
+FCHEAD = floatComplex.h
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/type/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/c/type/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libDoubleComplex.la: $(libDoubleComplex_la_OBJECTS) $(libDoubleComplex_la_DEPENDENCIES)
+ $(LINK) -rpath $(pkglibdir) $(libDoubleComplex_la_OBJECTS) $(libDoubleComplex_la_LIBADD) $(LIBS)
+libFloatComplex.la: $(libFloatComplex_la_OBJECTS) $(libFloatComplex_la_DEPENDENCIES)
+ $(LINK) -rpath $(pkglibdir) $(libFloatComplex_la_OBJECTS) $(libFloatComplex_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+testDoubleComplex$(EXEEXT): $(testDoubleComplex_OBJECTS) $(testDoubleComplex_DEPENDENCIES)
+ @rm -f testDoubleComplex$(EXEEXT)
+ $(LINK) $(testDoubleComplex_OBJECTS) $(testDoubleComplex_LDADD) $(LIBS)
+testFloatComplex$(EXEEXT): $(testFloatComplex_OBJECTS) $(testFloatComplex_DEPENDENCIES)
+ @rm -f testFloatComplex$(EXEEXT)
+ $(LINK) $(testFloatComplex_OBJECTS) $(testFloatComplex_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/doubleComplex.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floatComplex.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleComplex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatComplex.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/c/type/doubleComplex.c b/2.3-1/src/c/type/doubleComplex.c
new file mode 100644
index 00000000..72460495
--- /dev/null
+++ b/2.3-1/src/c/type/doubleComplex.c
@@ -0,0 +1,138 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#include <stdlib.h>
+#include "doubleComplex.h"
+
+#ifndef STDC99
+/*
+** \function zreals
+** \brief Return a Complex Real Part .
+*/
+double zreals(doubleComplex z) {
+ return z.real;
+}
+
+/*
+** \function zimags
+** \brief Return a Complex Imaginary Part .
+*/
+double zimags(doubleComplex z) {
+ return z.imag;
+}
+#else
+/*
+** \function zreals
+** \brief Return a Complex Real Part .
+*/
+double zreals(doubleComplex z) {
+ return creal(z);
+}
+
+/*
+** \function zimags
+** \brief Return a Complex Imaginary Part .
+*/
+double zimags(doubleComplex z) {
+ return cimag(z);
+}
+#endif
+
+/*
+** \function creala
+** \brief Return a Complex Real Part array.
+*/
+void zreala(doubleComplex* z, int size, double* out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out[i] = zreals(z[i]);
+ }
+}
+
+/*
+** \function cimaga
+** \brief Return a Complex Imaginary Part array.
+*/
+void zimaga(doubleComplex* z, int size, double* out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out[i] = zimags(z[i]);
+ }
+}
+
+/*
+** \function DoubleComplex
+** \brief construct a Double Complex .
+*/
+doubleComplex DoubleComplex(double real, double imag) {
+ doubleComplex z;
+#ifndef STDC99
+ z.real = real;
+ z.imag = imag;
+#else
+ z = real + I * imag;
+#endif
+ return z;
+}
+
+/*
+** \function DoubleComplexMatrix
+** \brief construct a Double Complex Matrix.
+*/
+doubleComplex *DoubleComplexMatrix(double* real, double* imag, int size) {
+ doubleComplex *z = (doubleComplex *) malloc((unsigned int) size * sizeof(doubleComplex));
+ int i = 0;
+
+ for(i = 0; i < size; ++i)
+ {
+ z[i] = DoubleComplex(real[i], imag[i]);
+ }
+ return z;
+}
+
+/*
+** \function isreal
+** \brief check if complex is real .
+*/
+bool zisreals(doubleComplex z) {
+ if (zimags(z) == 0)
+ return true;
+ return false;
+}
+
+/*
+** \function isimag
+** \brief check if complex is pure imaginary .
+*/
+bool zisimags(doubleComplex z) {
+ if (zreals(z) == 0)
+ return true;
+ return false;
+}
+
+
+
diff --git a/2.3-1/src/c/type/doubleComplex.h b/2.3-1/src/c/type/doubleComplex.h
new file mode 100644
index 00000000..15bc2684
--- /dev/null
+++ b/2.3-1/src/c/type/doubleComplex.h
@@ -0,0 +1,92 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __DOUBLECOMPLEX_H__
+#define __DOUBLECOMPLEX_H__
+
+#include "dynlib_type.h"
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#ifndef _MSC_VER
+#include <stdbool.h>
+#endif
+
+#ifndef STDC99
+/*
+** Hand made Double Complex definition
+** {
+*/
+struct double_complex
+{
+ double real;
+ double imag;
+};
+
+typedef struct double_complex doubleComplex;
+/*
+** }
+*/
+#elif defined(ARDUINO)
+/*
+** Hand made Double Complex definition
+** {
+*/
+struct double_complex
+{
+ double real;
+ double imag;
+};
+
+typedef struct double_complex doubleComplex;
+/*
+** }
+*/
+#else
+/*
+** Standard C99 Complex
+** {
+*/
+#include <complex.h>
+
+typedef double complex doubleComplex;
+/*
+** }
+*/
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+EXTERN_TYPE double zreals(doubleComplex);
+EXTERN_TYPE double zimags(doubleComplex);
+EXTERN_TYPE void zreala(doubleComplex *in, int size, double *out);
+EXTERN_TYPE void zimaga(doubleComplex *in, int size, double *out);
+EXTERN_TYPE doubleComplex DoubleComplex(double, double);
+EXTERN_TYPE doubleComplex* DoubleComplexMatrix(double*, double*, int);
+EXTERN_TYPE bool zisreals(doubleComplex);
+EXTERN_TYPE bool zisimags(doubleComplex);
+EXTERN_TYPE doubleComplex zdevides(doubleComplex, doubleComplex);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__DOUBLECOMPLEX_H__ */
diff --git a/2.3-1/src/c/type/dynlib_type.h b/2.3-1/src/c/type/dynlib_type.h
new file mode 100644
index 00000000..35ae247f
--- /dev/null
+++ b/2.3-1/src/c/type/dynlib_type.h
@@ -0,0 +1,26 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - 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
+*
+*/
+
+#ifndef __DYNLIB_TYPE_H__
+#define __DYNLIB_TYPE_H__
+
+#if defined(_MSC_VER) && defined(_USRDLL)
+ #if TYPE_EXPORTS
+ #define EXTERN_TYPE __declspec (dllexport)
+ #else
+ #define EXTERN_TYPE __declspec (dllimport)
+ #endif
+#else
+ #define EXTERN_TYPE
+#endif
+
+#endif /* __DYNLIB_TYPE_H__ */
diff --git a/2.3-1/src/c/type/floatComplex.c b/2.3-1/src/c/type/floatComplex.c
new file mode 100644
index 00000000..8ff7774b
--- /dev/null
+++ b/2.3-1/src/c/type/floatComplex.c
@@ -0,0 +1,139 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#include <stdlib.h>
+#include "floatComplex.h"
+
+#ifndef STDC99
+/*
+** \function real
+** \brief Return a Complex Real Part .
+*/
+float creals(floatComplex z) {
+ return z.real;
+}
+
+/*
+** \function imag
+** \brief Return a Complex Imaginary Part .
+*/
+float cimags(floatComplex z) {
+ return z.imag;
+}
+#else
+/*
+** \function real
+** \brief Return a Complex Real Part .
+*/
+float creals(floatComplex z) {
+ return crealf(z);
+}
+
+/*
+** \function imag
+** \brief Return a Complex Imaginary Part .
+*/
+float cimags(floatComplex z) {
+ return cimagf(z);
+}
+#endif
+
+/*
+** \function creala
+** \brief Return a Complex Real Part array.
+*/
+void creala(floatComplex* z, int size, float* out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out[i] = creals(z[i]);
+ }
+}
+
+/*
+** \function cimaga
+** \brief Return a Complex Imaginary Part array.
+*/
+void cimaga(floatComplex* z, int size, float* out) {
+ int i = 0;
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ out[i] = cimags(z[i]);
+ }
+}
+
+/*
+** \function FloatComplex
+** \brief construct a Float Complex .
+*/
+floatComplex FloatComplex(float a, float b) {
+ floatComplex z;
+#ifndef STDC99
+ z.real = a;
+ z.imag = b;
+#else
+ z = a + I * b;
+#endif
+ return z;
+}
+
+/*
+** \function FloatComplexMatrix
+** \brief construct a Float Complex Matrix.
+*/
+floatComplex *FloatComplexMatrix(float* real, float* imag, int size) {
+ floatComplex *z = (floatComplex *) malloc((unsigned int) size * sizeof(floatComplex));
+ int i = 0;
+
+ for(i = 0; i < size; ++i)
+ {
+ z[i] = FloatComplex(real[i], imag[i]);
+ }
+ return z;
+}
+
+/*
+** \function isreal
+** \brief check if complex is real .
+*/
+bool cisreals(floatComplex z) {
+ if (cimags(z) == 0)
+ return true;
+ return false;
+}
+
+/*
+** \function isimag
+** \brief check if complex is pure imaginary .
+*/
+bool cisimags(floatComplex z) {
+ if (creals(z) == 0)
+ return true;
+ return false;
+}
+
+
+
+
diff --git a/2.3-1/src/c/type/floatComplex.h b/2.3-1/src/c/type/floatComplex.h
new file mode 100644
index 00000000..ba725c95
--- /dev/null
+++ b/2.3-1/src/c/type/floatComplex.h
@@ -0,0 +1,94 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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
+ *
+ */
+
+#ifndef __FLOATCOMPLEX_H__
+#define __FLOATCOMPLEX_H__
+
+#include "dynlib_type.h"
+
+#ifdef __STDC_VERSION__
+# ifndef STDC
+# define STDC
+# endif
+# if __STDC_VERSION__ >= 199901L
+# ifndef STDC99
+# define STDC99
+# endif
+# endif
+#endif
+
+#ifndef _MSC_VER
+ #include <stdbool.h>
+#endif
+
+#ifndef STDC99
+/*
+** Hand made Float Complex definition
+** {
+*/
+struct float_complex
+{
+ float real;
+ float imag;
+};
+
+typedef struct float_complex floatComplex;
+/*
+** }
+*/
+#elif defined(ARDUINO)
+/*
+** Hand made Float Complex definition
+** {
+*/
+struct float_complex
+{
+ float real;
+ float imag;
+};
+
+typedef struct float_complex floatComplex;
+/*
+** }
+*/
+#else
+/*
+** C99 Standard
+** {
+*/
+#include <complex.h>
+
+typedef float complex floatComplex;
+/*
+** }
+*/
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_TYPE float creals(floatComplex);
+EXTERN_TYPE float cimags(floatComplex);
+EXTERN_TYPE void creala(floatComplex *in, int size, float *out);
+EXTERN_TYPE void cimaga(floatComplex *in, int size, float *out);
+EXTERN_TYPE floatComplex FloatComplex(float, float);
+EXTERN_TYPE floatComplex* FloatComplexMatrix(float*, float*, int);
+EXTERN_TYPE bool cisreals(floatComplex);
+EXTERN_TYPE bool cisimags(floatComplex);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* !__FLOATCOMPLEX_H__ */
diff --git a/2.3-1/src/c/type/int_imag.h b/2.3-1/src/c/type/int_imag.h
new file mode 100644
index 00000000..6e6b7367
--- /dev/null
+++ b/2.3-1/src/c/type/int_imag.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_IMAG_H__
+#define __INT_IMAG_H__
+
+#define s0imags0(in) 0
+
+#define d0imagd0(in) 0
+
+#define c0imags0(in) cimags(in)
+
+#define z0imagd0(in) zimags(in)
+
+#define u80imagu80(in) 0
+
+#define i80imagi80(in) 0
+
+#define u160imagu160(in) 0
+
+#define i160imagi160(in) 0
+
+#define s2imags2(in,size,out) szerosa(out,size[0],size[1])
+
+#define d2imagd2(in,size,out) dzerosa(out,size[0],size[1])
+
+#define c2imags2(in,size,out) cimaga(in, size[0]*size[1], out)
+
+#define z2imagd2(in,size,out) zimaga(in, size[0]*size[1], out)
+
+#define u82imagu82(in,size,out) u8zerosa(out,size[0],size[1])
+
+#define i82imagi82(in,size,out) i8zerosa(out,size[0],size[1])
+
+#define u162imagu162(in,size,out) u16zerosa(out,size[0],size[1])
+
+#define i162imagi162(in,size,out) i16zerosa(out,size[0],size[1])
+
+#endif /* !__INT_IMAG_H__ */
diff --git a/2.3-1/src/c/type/int_real.h b/2.3-1/src/c/type/int_real.h
new file mode 100644
index 00000000..ce097ec5
--- /dev/null
+++ b/2.3-1/src/c/type/int_real.h
@@ -0,0 +1,61 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Arnaud Torset
+ *
+ * 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
+ *
+ */
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+#ifndef __INT_REAL_H__
+#define __INT_REAL_H__
+
+#define s0reals0(in) in
+
+#define d0reald0(in) in
+
+#define c0reals0(in) creals(in)
+
+#define z0reald0(in) zreals(in)
+
+#define u80realu80(in) in
+
+#define i80reali80(in) in
+
+#define u160realu160(in) in
+
+#define i160reali160(in) in
+
+#define s2reals2(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in[i];\
+ }
+
+#define d2reald2(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in[i];\
+ }
+
+#define c2reals2(in,size,out) creala(in, size[0]*size[1],out)
+
+#define z2reald2(in,size,out) zreala(in, size[0]*size[1],out)
+
+#define u82realu82(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in[i];\
+ }
+
+#define i82reali82(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in[i];\
+ }
+#define u162realu162(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in[i];\
+ }
+
+#define i162reali162(in,size,out) {int i;\
+ for (i=0;i<size[0]*size[1];i++) out[i]=in[i];\
+ }
+
+#endif /* !__INT_REAL_H__ */
diff --git a/2.3-1/src/c/type/testDoubleComplex.c b/2.3-1/src/c/type/testDoubleComplex.c
new file mode 100644
index 00000000..26e3416e
--- /dev/null
+++ b/2.3-1/src/c/type/testDoubleComplex.c
@@ -0,0 +1,61 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include "doubleComplex.h"
+
+#define size 10000
+
+static int matrixCreation(void) {
+ double real[size];
+ double imag[size];
+
+ doubleComplex *Z;
+ double extractedReal[size];
+ double extractedImag[size];
+
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ real[i] = i;
+ imag[i] = size - i;
+ }
+
+ Z = DoubleComplexMatrix(real, imag, size);
+
+ for (i = 0; i < size; ++i)
+ {
+ printf("Partie reelle = %f\n", zreals(Z[i]));
+ assert(zreals(Z[i]) == i);
+ printf("Partie imaginaire = %f\n", zimags(Z[i]));
+ assert(zimags(Z[i]) == size - i);
+ }
+
+ zreala(Z, size, extractedReal);
+ zimaga(Z, size, extractedImag);
+ for (i = 0; i < size; ++i)
+ {
+ printf("Partie reelle = %f\n", extractedReal[i]);
+ assert(extractedReal[i] == i);
+ printf("Partie imaginaire = %f\n", extractedImag[i]);
+ assert(extractedImag[i] == size - i);
+ }
+
+ return 0;
+}
+
+int main(void) {
+ matrixCreation();
+ return 0;
+}
diff --git a/2.3-1/src/c/type/testFloatComplex.c b/2.3-1/src/c/type/testFloatComplex.c
new file mode 100644
index 00000000..703aac17
--- /dev/null
+++ b/2.3-1/src/c/type/testFloatComplex.c
@@ -0,0 +1,62 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+ *
+ * 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 <stdio.h>
+#include <assert.h>
+#include <float.h>
+#include "floatComplex.h"
+
+#define size 10000
+
+static int matrixCreation(void) {
+ float real[size];
+ float imag[size];
+
+ floatComplex *Z;
+ float extractedReal[size];
+ float extractedImag[size];
+
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ real[i] = (float) i;
+ imag[i] = (float) (size - i);
+ }
+
+ Z = FloatComplexMatrix(real, imag, size);
+
+ for (i = 0; i < size; ++i)
+ {
+ printf("Partie reelle = %f\n", creals(Z[i]));
+ assert(creals(Z[i]) == i);
+ printf("Partie imaginaire = %f\n", cimags(Z[i]));
+ assert(cimags(Z[i]) == size - i);
+ }
+
+ creala(Z, size, extractedReal);
+ cimaga(Z, size, extractedImag);
+ for (i = 0; i < size; ++i)
+ {
+ printf("Partie reelle = %f\n", extractedReal[i]);
+ assert(extractedReal[i] == i);
+ printf("Partie imaginaire = %f\n", extractedImag[i]);
+ assert(extractedImag[i] == size - i);
+ }
+
+ return 0;
+}
+
+int main(void) {
+ matrixCreation();
+ return 0;
+}
diff --git a/2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj b/2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj
new file mode 100644
index 00000000..a964ef66
--- /dev/null
+++ b/2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>testDoubleComplex</ProjectName>
+ <ProjectGuid>{DBB1B4E8-E9D0-44E5-8AA6-4ECF1AAA1D0F}</ProjectGuid>
+ <RootNamespace>test_doubleComplex</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleComplex.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj.filters b/2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj.filters
new file mode 100644
index 00000000..95bfbeb6
--- /dev/null
+++ b/2.3-1/src/c/type/test_doubleComplex/test_doubleComplex.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testDoubleComplex.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj b/2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj
new file mode 100644
index 00000000..6401b9bc
--- /dev/null
+++ b/2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>testFloatComplex</ProjectName>
+ <ProjectGuid>{A6EBF2F9-C100-453F-A0D1-1649DCF557EC}</ProjectGuid>
+ <RootNamespace>test_floatComplex</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatComplex.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\type.vcxproj">
+ <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj.filters b/2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj.filters
new file mode 100644
index 00000000..0275512a
--- /dev/null
+++ b/2.3-1/src/c/type/test_floatComplex/test_floatComplex.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\testFloatComplex.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/type/type.vcxproj b/2.3-1/src/c/type/type.vcxproj
new file mode 100644
index 00000000..887062c9
--- /dev/null
+++ b/2.3-1/src/c/type/type.vcxproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{9B1BD750-1FEF-4D6B-9422-782D16181CEE}</ProjectGuid>
+ <RootNamespace>type</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TYPE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TYPE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TYPE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TYPE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="doubleComplex.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ <ClCompile Include="floatComplex.c">
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+ <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="doubleComplex.h" />
+ <ClInclude Include="dynlib_type.h" />
+ <ClInclude Include="floatComplex.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Makefile.am" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/type/type.vcxproj.filters b/2.3-1/src/c/type/type.vcxproj.filters
new file mode 100644
index 00000000..22f5c9e0
--- /dev/null
+++ b/2.3-1/src/c/type/type.vcxproj.filters
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="doubleComplex.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="floatComplex.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="doubleComplex.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="dynlib_type.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="floatComplex.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Makefile.am" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/c/type/types.h b/2.3-1/src/c/type/types.h
new file mode 100644
index 00000000..ee5c8992
--- /dev/null
+++ b/2.3-1/src/c/type/types.h
@@ -0,0 +1,17 @@
+#ifndef _TYPES_H_
+#define _TYPES_H_
+
+/*****************************************************************************/
+/* TYPE DEFINITIONS */
+/*****************************************************************************/
+/*typedef unsigned char boolean;*/
+
+typedef unsigned char uint8;
+typedef unsigned short uint16;
+typedef unsigned int uint32;
+
+typedef signed char int8;
+typedef signed short int16;
+typedef signed int int32;
+
+#endif /*_TYPES_H*/
diff --git a/2.3-1/src/fortran/blas/Makefile.am b/2.3-1/src/fortran/blas/Makefile.am
new file mode 100644
index 00000000..6b8b83de
--- /dev/null
+++ b/2.3-1/src/fortran/blas/Makefile.am
@@ -0,0 +1,86 @@
+##########
+### Sylvestre Ledru <sylvestre.ledru@inria.fr>
+### INRIA - Scilab 2006
+##########
+
+BLAS_FORTRAN_SOURCES = zrotg.f \
+zhpr2.f \
+zher2k.f \
+dspr.f \
+xerbla.f \
+dcopy.f \
+dsyr2k.f \
+zsymm.f \
+zhemm.f \
+dtbsv.f \
+dtrmm.f \
+dscal.f \
+ddot.f \
+dgbmv.f \
+dtpsv.f \
+dtrsv.f \
+dgemv.f \
+idamax.f \
+dzasum.f \
+zcopy.f \
+zher.f \
+drot.f \
+ztbsv.f \
+dasum.f \
+ztrmm.f \
+dsbmv.f \
+zscal.f \
+dswap.f \
+zdotc.f \
+zgbmv.f \
+ztpsv.f \
+zgemv.f \
+ztrsv.f \
+izamax.f \
+dspmv.f \
+dcabs1.f \
+dsymv.f \
+zswap.f \
+zdotu.f \
+zgerc.f \
+dznrm2.f \
+dtbmv.f \
+zdscal.f \
+dger.f \
+dnrm2.f \
+zhpr.f \
+daxpy.f \
+zhbmv.f \
+zhemv.f \
+dtrsm.f \
+dgemm.f \
+dspr2.f \
+dtpmv.f \
+zgeru.f \
+dtrmv.f \
+dsyrk.f \
+lsame.f \
+ztbmv.f \
+dsyr2.f \
+zhpmv.f \
+zsyr2k.f \
+zaxpy.f \
+zgemm.f \
+drotg.f \
+ztrsm.f \
+ztpmv.f \
+dsyr.f \
+zsyrk.f \
+ztrmv.f \
+zherk.f \
+dsymm.f \
+zher2.f
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES = libsciblas.la
+
+HEAD = $(top_builddir)/includes/blas.h
+
+libsciblas_la_SOURCES = $(HEAD) $(BLAS_FORTRAN_SOURCES)
+
diff --git a/2.3-1/src/fortran/blas/Makefile.in b/2.3-1/src/fortran/blas/Makefile.in
new file mode 100644
index 00000000..b2651816
--- /dev/null
+++ b/2.3-1/src/fortran/blas/Makefile.in
@@ -0,0 +1,601 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+##########
+### Sylvestre Ledru <sylvestre.ledru@inria.fr>
+### INRIA - Scilab 2006
+##########
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/fortran/blas
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libsciblas_la_LIBADD =
+am__objects_1 =
+am__objects_2 = zrotg.lo zhpr2.lo zher2k.lo dspr.lo xerbla.lo dcopy.lo \
+ dsyr2k.lo zsymm.lo zhemm.lo dtbsv.lo dtrmm.lo dscal.lo ddot.lo \
+ dgbmv.lo dtpsv.lo dtrsv.lo dgemv.lo idamax.lo dzasum.lo \
+ zcopy.lo zher.lo drot.lo ztbsv.lo dasum.lo ztrmm.lo dsbmv.lo \
+ zscal.lo dswap.lo zdotc.lo zgbmv.lo ztpsv.lo zgemv.lo ztrsv.lo \
+ izamax.lo dspmv.lo dcabs1.lo dsymv.lo zswap.lo zdotu.lo \
+ zgerc.lo dznrm2.lo dtbmv.lo zdscal.lo dger.lo dnrm2.lo zhpr.lo \
+ daxpy.lo zhbmv.lo zhemv.lo dtrsm.lo dgemm.lo dspr2.lo dtpmv.lo \
+ zgeru.lo dtrmv.lo dsyrk.lo lsame.lo ztbmv.lo dsyr2.lo zhpmv.lo \
+ zsyr2k.lo zaxpy.lo zgemm.lo drotg.lo ztrsm.lo ztpmv.lo dsyr.lo \
+ zsyrk.lo ztrmv.lo zherk.lo dsymm.lo zher2.lo
+am_libsciblas_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsciblas_la_OBJECTS = $(am_libsciblas_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS)
+LTF77COMPILE = $(LIBTOOL) --tag=F77 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS)
+F77LD = $(F77)
+F77LINK = $(LIBTOOL) --tag=F77 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libsciblas_la_SOURCES)
+DIST_SOURCES = $(libsciblas_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+BLAS_FORTRAN_SOURCES = zrotg.f \
+zhpr2.f \
+zher2k.f \
+dspr.f \
+xerbla.f \
+dcopy.f \
+dsyr2k.f \
+zsymm.f \
+zhemm.f \
+dtbsv.f \
+dtrmm.f \
+dscal.f \
+ddot.f \
+dgbmv.f \
+dtpsv.f \
+dtrsv.f \
+dgemv.f \
+idamax.f \
+dzasum.f \
+zcopy.f \
+zher.f \
+drot.f \
+ztbsv.f \
+dasum.f \
+ztrmm.f \
+dsbmv.f \
+zscal.f \
+dswap.f \
+zdotc.f \
+zgbmv.f \
+ztpsv.f \
+zgemv.f \
+ztrsv.f \
+izamax.f \
+dspmv.f \
+dcabs1.f \
+dsymv.f \
+zswap.f \
+zdotu.f \
+zgerc.f \
+dznrm2.f \
+dtbmv.f \
+zdscal.f \
+dger.f \
+dnrm2.f \
+zhpr.f \
+daxpy.f \
+zhbmv.f \
+zhemv.f \
+dtrsm.f \
+dgemm.f \
+dspr2.f \
+dtpmv.f \
+zgeru.f \
+dtrmv.f \
+dsyrk.f \
+lsame.f \
+ztbmv.f \
+dsyr2.f \
+zhpmv.f \
+zsyr2k.f \
+zaxpy.f \
+zgemm.f \
+drotg.f \
+ztrsm.f \
+ztpmv.f \
+dsyr.f \
+zsyrk.f \
+ztrmv.f \
+zherk.f \
+dsymm.f \
+zher2.f
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libsciblas.la
+HEAD = $(top_builddir)/includes/blas.h
+libsciblas_la_SOURCES = $(HEAD) $(BLAS_FORTRAN_SOURCES)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .f .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fortran/blas/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/fortran/blas/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsciblas.la: $(libsciblas_la_OBJECTS) $(libsciblas_la_DEPENDENCIES)
+ $(F77LINK) -rpath $(pkglibdir) $(libsciblas_la_OBJECTS) $(libsciblas_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+.f.o:
+ $(F77COMPILE) -c -o $@ $<
+
+.f.obj:
+ $(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+ $(LTF77COMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-pkglibLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/fortran/blas/README b/2.3-1/src/fortran/blas/README
new file mode 100644
index 00000000..8c281661
--- /dev/null
+++ b/2.3-1/src/fortran/blas/README
@@ -0,0 +1,6 @@
+This directory contains double precision version of the standard blas routines.
+ The makefile produces <SCIDIR>/libs/blas.a
+
+However this code is intended for use only if there is no other implementation
+of the BLAS already available on your machine;
+
diff --git a/2.3-1/src/fortran/blas/blas_f/blasplus.def b/2.3-1/src/fortran/blas/blas_f/blasplus.def
new file mode 100644
index 00000000..336d98ac
--- /dev/null
+++ b/2.3-1/src/fortran/blas/blas_f/blasplus.def
@@ -0,0 +1,74 @@
+LIBRARY blasplus.dll
+
+EXPORTS
+ dasum
+ daxpy
+ dcopy
+ ddot
+ dgbmv
+ dgemm
+ dgemv
+ dger
+ dnrm2
+ drot
+ drotg
+ dsbmv
+ dscal
+ dspmv
+ dspr
+ dspr2
+ dswap
+ dsymm
+ dsymv
+ dsyr
+ dsyr2
+ dsyr2k
+ dsyrk
+ dtbmv
+ dtbsv
+ dtpmv
+ dtpsv
+ dtrmm
+ dtrmv
+ dtrsm
+ dtrsv
+ dzasum
+ dznrm2
+ idamax
+ izamax
+ xerbla
+ zaxpy
+ zcopy
+ zdotc
+ zdotu
+ zdscal
+ zgbmv
+ zgemm
+ zgemv
+ zgerc
+ zgeru
+ zhbmv
+ zhemm
+ zhemv
+ zher
+ zher2
+ zher2k
+ zherk
+ zhpmv
+ zhpr
+ zhpr2
+ zrotg
+ zscal
+ zswap
+ zsymm
+ zsyr2k
+ zsyrk
+ ztbmv
+ ztbsv
+ ztpmv
+ ztpsv
+ ztrmm
+ ztrmv
+ ztrsm
+ ztrsv
+ \ No newline at end of file
diff --git a/2.3-1/src/fortran/blas/blas_f/blasplusAtlas.def b/2.3-1/src/fortran/blas/blas_f/blasplusAtlas.def
new file mode 100644
index 00000000..d13dde93
--- /dev/null
+++ b/2.3-1/src/fortran/blas/blas_f/blasplusAtlas.def
@@ -0,0 +1,144 @@
+LIBRARY blasplus.dll
+
+EXPORTS
+ dasum_ @1
+ dasum = dasum_
+ daxpy_ @2
+ daxpy = daxpy_
+ dcopy_ @3
+ dcopy = dcopy_
+ ddot_ @4
+ ddot = ddot_
+ dgbmv_ @5
+ dgbmv = dgbmv_
+ dgemm_ @6
+ dgemm = dgemm_
+ dgemv_ @7
+ dgemv = dgemv_
+ dger_ @8
+ dger = dger_
+ dnrm2_ @9
+ dnrm2 = dnrm2_
+ drot_ @10
+ drot = drot_
+ drotg_ @11
+ drotg = drotg_
+ dsbmv_ @12
+ dsbmv = dsbmv_
+ dscal_ @13
+ dscal = dscal_
+ dspmv_ @14
+ dspmv = dspmv_
+ dspr_ @15
+ dspr = dspr_
+ dspr2_ @16
+ dspr2 = dspr2_
+ dswap_ @17
+ dswap = dswap_
+ dsymm_ @18
+ dsymm = dsymm_
+ dsymv_ @19
+ dsymv = dsymv_
+ dsyr_ @20
+ dsyr = dsyr_
+ dsyr2_ @21
+ dsyr2 = dsyr2_
+ dsyr2k_ @22
+ dsyr2k = dsyr2k_
+ dsyrk_ @23
+ dsyrk = dsyrk_
+ dtbmv_ @24
+ dtbmv = dtbmv_
+ dtbsv_ @25
+ dtbsv = dtbsv_
+ dtpmv_ @26
+ dtpmv = dtpmv_
+ dtpsv_ @27
+ dtpsv = dtpsv_
+ dtrmm_ @28
+ dtrmm = dtrmm_
+ dtrmv_ @29
+ dtrmv = dtrmv_
+ dtrsm_ @30
+ dtrsm = dtrsm_
+ dtrsv_ @31
+ dtrsv = dtrsv_
+ dzasum_ @32
+ dzasum = dzasum_
+ dznrm2_ @33
+ dznrm2 = dznrm2_
+ idamax_ @34
+ idamax = idamax_
+ izamax_ @35
+ izamax = izamax_
+ xerbla_ @36
+ xerbla = xerbla_
+ zaxpy_ @37
+ zaxpy = zaxpy_
+ zcopy_ @38
+ zcopy = zcopy_
+ zdotc_ @39
+ zdotc = zdotc_
+ zdotu_ @40
+ zdotu = zdotu_
+ zdscal_ @41
+ zdscal = zdscal_
+ zgbmv_ @42
+ zgbmv = zgbmv_
+ zgemm_ @43
+ zgemm = zgemm_
+ zgemv_ @44
+ zgemv = zgemv_
+ zgerc_ @45
+ zgerc = zgerc_
+ zgeru_ @46
+ zgeru = zgeru_
+ zhbmv_ @47
+ zhbmv = zhbmv_
+ zhemm_ @48
+ zhemm = zhemm_
+ zhemv_ @49
+ zhemv = zhemv_
+ zher_ @50
+ zher = zher_
+ zher2_ @51
+ zher2 = zher2_
+ zher2k_ @52
+ zher2k = zher2k_
+ zherk_ @53
+ zherk = zherk_
+ zhpmv_ @54
+ zhpmv = zhpmv_
+ zhpr_ @55
+ zhpr = zhpr_
+ zhpr2_ @56
+ zhpr2 = zhpr2_
+ zrotg_ @57
+ zrotg = zrotg_
+ zscal_ @58
+ zscal = zscal_
+ zswap_ @59
+ zswap = zswap_
+ zsymm_ @60
+ zsymm = zsymm_
+ zsyr2k_ @61
+ zsyr2k = zsyr2k_
+ zsyrk_ @62
+ zsyrk = zsyrk_
+ ztbmv_ @63
+ ztbmv = ztbmv_
+ ztbsv_ @64
+ ztbsv = ztbsv_
+ ztpmv_ @65
+ ztpmv = ztpmv_
+ ztpsv_ @66
+ ztpsv = ztpsv_
+ ztrmm_ @67
+ ztrmm =ztrmm_
+ ztrmv_ @68
+ ztrmv = ztrmv_
+ ztrsm_ @69
+ ztrsm = ztrsm_
+ ztrsv_ @70
+ ztrsv = ztrsv_
+ \ No newline at end of file
diff --git a/2.3-1/src/fortran/blas/blas_f/blasplus_DLL.suo b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL.suo
new file mode 100644
index 00000000..b83ddab8
--- /dev/null
+++ b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL.suo
Binary files differ
diff --git a/2.3-1/src/fortran/blas/blas_f/blasplus_DLL.vfproj b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL.vfproj
new file mode 100644
index 00000000..c1f337d1
--- /dev/null
+++ b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL.vfproj
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject ProjectType="typeDynamicLibrary" ProjectCreator="Intel Fortran" Keyword="Dll" Version="11.0" ProjectIdGuid="{78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}">
+ <Platforms>
+ <Platform Name="Win32"/>
+ <Platform Name="x64"/></Platforms>
+ <Configurations>
+ <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" AdditionalOptions="/dll " SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" F77RuntimeCompatibility="true" CallingConvention="callConventionCRef" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" Traceback="true" BoundsCheck="true" RuntimeLibrary="rtMultiThreadedDebug"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/blasplus.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrtd.lib" ModuleDefinitionFile="blasplus.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin/blasplus.lib" LinkDLL="true" AdditionalDependencies="libcmtd.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool" CommandLine="lib /def:blasplusAtlas.def /Machine:X86 /OUT:$(SolutionDir)bin/blasplus.lib" Description="Create blasplus.lib for Scilab"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" AdditionalOptions="/dll" SuppressStartupBanner="true" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" BackslashAsNormalCharacter="false" FPS4Libs="false" CallingConvention="callConventionCRef" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreaded"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/blasplus.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrt.lib" ModuleDefinitionFile="blasplus.def" SubSystem="subSystemWindows" SupportUnloadOfDelayLoadedDLL="true" ImportLibrary="$(SolutionDir)bin/blasplus.lib" LinkDLL="true" AdditionalDependencies="libcmt.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool" CommandLine="lib /def:blasplusAtlas.def /Machine:X86 /OUT:$(SolutionDir)bin/blasplus.lib" Description="Create blasplus.lib (Atlas compatibility)"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" AdditionalOptions="/dll " SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" F77RuntimeCompatibility="true" CallingConvention="callConventionCRef" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" Traceback="true" BoundsCheck="true" RuntimeLibrary="rtMultiThreadedDebugDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/blasplus.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrtd.lib" ModuleDefinitionFile="blasplus.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin/blasplus.lib" LinkDLL="true" AdditionalDependencies="libcmtd.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool" CommandLine="lib /def:blasplusAtlas.def /Machine:X64 /OUT:$(SolutionDir)bin/blasplus.lib" Description="Create blasplus.lib for Scilab"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" AdditionalOptions="/dll" SuppressStartupBanner="true" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" BackslashAsNormalCharacter="false" FPS4Libs="false" CallingConvention="callConventionCRef" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/blasplus.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrt.lib" ModuleDefinitionFile="blasplus.def" SubSystem="subSystemWindows" SupportUnloadOfDelayLoadedDLL="true" ImportLibrary="$(SolutionDir)bin/blasplus.lib" LinkDLL="true" AdditionalDependencies="libcmt.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool" CommandLine="lib /def:blasplusAtlas.def /Machine:X64 /OUT:$(SolutionDir)bin/blasplus.lib" Description="Create blasplus.lib (Atlas compatibility)"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>
+ <Files>
+ <Filter Name="Header Files" Filter="fi;fd"/>
+ <Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"/>
+ <Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
+ <File RelativePath="..\dasum.f"/>
+ <File RelativePath="..\daxpy.f"/>
+ <File RelativePath="..\dcabs1.f"/>
+ <File RelativePath="..\dcopy.f"/>
+ <File RelativePath="..\ddot.f"/>
+ <File RelativePath="..\dgbmv.f"/>
+ <File RelativePath="..\dgemm.f"/>
+ <File RelativePath="..\dgemv.f"/>
+ <File RelativePath="..\dger.f"/>
+ <File RelativePath="..\dnrm2.f"/>
+ <File RelativePath="..\drot.f"/>
+ <File RelativePath="..\drotg.f"/>
+ <File RelativePath="..\dsbmv.f"/>
+ <File RelativePath="..\dscal.f"/>
+ <File RelativePath="..\dspmv.f"/>
+ <File RelativePath="..\dspr.f"/>
+ <File RelativePath="..\dspr2.f"/>
+ <File RelativePath="..\dswap.f"/>
+ <File RelativePath="..\dsymm.f"/>
+ <File RelativePath="..\dsymv.f"/>
+ <File RelativePath="..\dsyr.f"/>
+ <File RelativePath="..\dsyr2.f"/>
+ <File RelativePath="..\dsyr2k.f"/>
+ <File RelativePath="..\dsyrk.f"/>
+ <File RelativePath="..\dtbmv.f"/>
+ <File RelativePath="..\dtbsv.f"/>
+ <File RelativePath="..\dtpmv.f"/>
+ <File RelativePath="..\dtpsv.f"/>
+ <File RelativePath="..\dtrmm.f"/>
+ <File RelativePath="..\dtrmv.f"/>
+ <File RelativePath="..\dtrsm.f"/>
+ <File RelativePath="..\dtrsv.f"/>
+ <File RelativePath="..\dzasum.f"/>
+ <File RelativePath="..\dznrm2.f"/>
+ <File RelativePath="..\idamax.f"/>
+ <File RelativePath="..\izamax.f"/>
+ <File RelativePath="..\lsame.f"/>
+ <File RelativePath="..\xerbla.f"/>
+ <File RelativePath="..\zaxpy.f"/>
+ <File RelativePath="..\zcopy.f"/>
+ <File RelativePath="..\zdotc.f"/>
+ <File RelativePath="..\zdotu.f"/>
+ <File RelativePath="..\zdscal.f"/>
+ <File RelativePath="..\zgbmv.f"/>
+ <File RelativePath="..\zgemm.f"/>
+ <File RelativePath="..\zgemv.f"/>
+ <File RelativePath="..\zgerc.f"/>
+ <File RelativePath="..\zgeru.f"/>
+ <File RelativePath="..\zhbmv.f"/>
+ <File RelativePath="..\zhemm.f"/>
+ <File RelativePath="..\zhemv.f"/>
+ <File RelativePath="..\zher.f"/>
+ <File RelativePath="..\zher2.f"/>
+ <File RelativePath="..\zher2k.f"/>
+ <File RelativePath="..\zherk.f"/>
+ <File RelativePath="..\zhpmv.f"/>
+ <File RelativePath="..\zhpr.f"/>
+ <File RelativePath="..\zhpr2.f"/>
+ <File RelativePath="..\zrotg.f"/>
+ <File RelativePath="..\zscal.f"/>
+ <File RelativePath="..\zswap.f"/>
+ <File RelativePath="..\zsymm.f"/>
+ <File RelativePath="..\zsyr2k.f"/>
+ <File RelativePath="..\zsyrk.f"/>
+ <File RelativePath="..\ztbmv.f"/>
+ <File RelativePath="..\ztbsv.f"/>
+ <File RelativePath="..\ztpmv.f"/>
+ <File RelativePath="..\ztpsv.f"/>
+ <File RelativePath="..\ztrmm.f"/>
+ <File RelativePath="..\ztrmv.f"/>
+ <File RelativePath="..\ztrsm.f"/>
+ <File RelativePath="..\ztrsv.f"/></Filter>
+ <File RelativePath=".\blasplusAtlas.def"/></Files>
+ <Globals/></VisualStudioProject>
diff --git a/2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj
new file mode 100644
index 00000000..d557d2b9
--- /dev/null
+++ b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>blasplus_f2c_DLL</ProjectName>
+ <ProjectGuid>{78BD64CE-181D-4D3F-9254-5C4F55C1EDC9}</ProjectGuid>
+ <RootNamespace>blas_f2c</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalOptions>/fixed:no %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(SolutionDir)bin\blasplus.dll</OutputFile>
+ <ModuleDefinitionFile>blasplusAtlas.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(SolutionDir)bin\blasplus.lib</ImportLibrary>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalOptions>/fixed:no %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>../../../bin/blasplus.dll</OutputFile>
+ <ModuleDefinitionFile>blasplusAtlas.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../bin/blasplus.lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\blasplus.dll</OutputFile>
+ <ModuleDefinitionFile>blasplusAtlas.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(SolutionDir)bin\blasplus.lib</ImportLibrary>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>../../../bin/blasplus.dll</OutputFile>
+ <ModuleDefinitionFile>blasplusAtlas.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../bin/blasplus.lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\dasum.c" />
+ <ClCompile Include="..\daxpy.c" />
+ <ClCompile Include="..\dcabs1.c" />
+ <ClCompile Include="..\dcopy.c" />
+ <ClCompile Include="..\ddot.c" />
+ <ClCompile Include="..\dgbmv.c" />
+ <ClCompile Include="..\dgemm.c" />
+ <ClCompile Include="..\dgemv.c" />
+ <ClCompile Include="..\dger.c" />
+ <ClCompile Include="..\dnrm2.c" />
+ <ClCompile Include="..\drot.c" />
+ <ClCompile Include="..\drotg.c" />
+ <ClCompile Include="..\dsbmv.c" />
+ <ClCompile Include="..\dscal.c" />
+ <ClCompile Include="..\dspmv.c" />
+ <ClCompile Include="..\dspr.c" />
+ <ClCompile Include="..\dspr2.c" />
+ <ClCompile Include="..\dswap.c" />
+ <ClCompile Include="..\dsymm.c" />
+ <ClCompile Include="..\dsymv.c" />
+ <ClCompile Include="..\dsyr.c" />
+ <ClCompile Include="..\dsyr2.c" />
+ <ClCompile Include="..\dsyr2k.c" />
+ <ClCompile Include="..\dsyrk.c" />
+ <ClCompile Include="..\dtbmv.c" />
+ <ClCompile Include="..\dtbsv.c" />
+ <ClCompile Include="..\dtpmv.c" />
+ <ClCompile Include="..\dtpsv.c" />
+ <ClCompile Include="..\dtrmm.c" />
+ <ClCompile Include="..\dtrmv.c" />
+ <ClCompile Include="..\dtrsm.c" />
+ <ClCompile Include="..\dtrsv.c" />
+ <ClCompile Include="..\dzasum.c" />
+ <ClCompile Include="..\dznrm2.c" />
+ <ClCompile Include="..\idamax.c" />
+ <ClCompile Include="..\izamax.c" />
+ <ClCompile Include="..\lsame.c" />
+ <ClCompile Include="..\xerbla.c" />
+ <ClCompile Include="..\zaxpy.c" />
+ <ClCompile Include="..\zcopy.c" />
+ <ClCompile Include="..\zdotc.c" />
+ <ClCompile Include="..\zdotu.c" />
+ <ClCompile Include="..\zdscal.c" />
+ <ClCompile Include="..\zgbmv.c" />
+ <ClCompile Include="..\zgemm.c" />
+ <ClCompile Include="..\zgemv.c" />
+ <ClCompile Include="..\zgerc.c" />
+ <ClCompile Include="..\zgeru.c" />
+ <ClCompile Include="..\zhbmv.c" />
+ <ClCompile Include="..\zhemm.c" />
+ <ClCompile Include="..\zhemv.c" />
+ <ClCompile Include="..\zher.c" />
+ <ClCompile Include="..\zher2.c" />
+ <ClCompile Include="..\zher2k.c" />
+ <ClCompile Include="..\zherk.c" />
+ <ClCompile Include="..\zhpmv.c" />
+ <ClCompile Include="..\zhpr.c" />
+ <ClCompile Include="..\zhpr2.c" />
+ <ClCompile Include="..\zrotg.c" />
+ <ClCompile Include="..\zscal.c" />
+ <ClCompile Include="..\zswap.c" />
+ <ClCompile Include="..\zsymm.c" />
+ <ClCompile Include="..\zsyr2k.c" />
+ <ClCompile Include="..\zsyrk.c" />
+ <ClCompile Include="..\ztbmv.c" />
+ <ClCompile Include="..\ztbsv.c" />
+ <ClCompile Include="..\ztpmv.c" />
+ <ClCompile Include="..\ztpsv.c" />
+ <ClCompile Include="..\ztrmm.c" />
+ <ClCompile Include="..\ztrmv.c" />
+ <ClCompile Include="..\ztrsm.c" />
+ <ClCompile Include="..\ztrsv.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="..\dasum.f" />
+ <f2c_rule Include="..\daxpy.f" />
+ <f2c_rule Include="..\dcabs1.f" />
+ <f2c_rule Include="..\dcopy.f" />
+ <f2c_rule Include="..\ddot.f" />
+ <f2c_rule Include="..\dgbmv.f" />
+ <f2c_rule Include="..\dgemm.f" />
+ <f2c_rule Include="..\dgemv.f" />
+ <f2c_rule Include="..\dger.f" />
+ <f2c_rule Include="..\dnrm2.f" />
+ <f2c_rule Include="..\drot.f" />
+ <f2c_rule Include="..\drotg.f" />
+ <f2c_rule Include="..\dsbmv.f" />
+ <f2c_rule Include="..\dscal.f" />
+ <f2c_rule Include="..\dspmv.f" />
+ <f2c_rule Include="..\dspr.f" />
+ <f2c_rule Include="..\dspr2.f" />
+ <f2c_rule Include="..\dswap.f" />
+ <f2c_rule Include="..\dsymm.f" />
+ <f2c_rule Include="..\dsymv.f" />
+ <f2c_rule Include="..\dsyr.f" />
+ <f2c_rule Include="..\dsyr2.f" />
+ <f2c_rule Include="..\dsyr2k.f" />
+ <f2c_rule Include="..\dsyrk.f" />
+ <f2c_rule Include="..\dtbmv.f" />
+ <f2c_rule Include="..\dtbsv.f" />
+ <f2c_rule Include="..\dtpmv.f" />
+ <f2c_rule Include="..\dtpsv.f" />
+ <f2c_rule Include="..\dtrmm.f" />
+ <f2c_rule Include="..\dtrmv.f" />
+ <f2c_rule Include="..\dtrsm.f" />
+ <f2c_rule Include="..\dtrsv.f" />
+ <f2c_rule Include="..\dzasum.f" />
+ <f2c_rule Include="..\dznrm2.f" />
+ <f2c_rule Include="..\idamax.f" />
+ <f2c_rule Include="..\izamax.f" />
+ <f2c_rule Include="..\lsame.f" />
+ <f2c_rule Include="..\xerbla.f" />
+ <f2c_rule Include="..\zaxpy.f" />
+ <f2c_rule Include="..\zcopy.f" />
+ <f2c_rule Include="..\zdotc.f" />
+ <f2c_rule Include="..\zdotu.f" />
+ <f2c_rule Include="..\zdscal.f" />
+ <f2c_rule Include="..\zgbmv.f" />
+ <f2c_rule Include="..\zgemm.f" />
+ <f2c_rule Include="..\zgemv.f" />
+ <f2c_rule Include="..\zgerc.f" />
+ <f2c_rule Include="..\zgeru.f" />
+ <f2c_rule Include="..\zhbmv.f" />
+ <f2c_rule Include="..\zhemm.f" />
+ <f2c_rule Include="..\zhemv.f" />
+ <f2c_rule Include="..\zher.f" />
+ <f2c_rule Include="..\zher2.f" />
+ <f2c_rule Include="..\zher2k.f" />
+ <f2c_rule Include="..\zherk.f" />
+ <f2c_rule Include="..\zhpmv.f" />
+ <f2c_rule Include="..\zhpr.f" />
+ <f2c_rule Include="..\zhpr2.f" />
+ <f2c_rule Include="..\zrotg.f" />
+ <f2c_rule Include="..\zscal.f" />
+ <f2c_rule Include="..\zswap.f" />
+ <f2c_rule Include="..\zsymm.f" />
+ <f2c_rule Include="..\zsyr2k.f" />
+ <f2c_rule Include="..\zsyrk.f" />
+ <f2c_rule Include="..\ztbmv.f" />
+ <f2c_rule Include="..\ztbsv.f" />
+ <f2c_rule Include="..\ztpmv.f" />
+ <f2c_rule Include="..\ztpsv.f" />
+ <f2c_rule Include="..\ztrmm.f" />
+ <f2c_rule Include="..\ztrmv.f" />
+ <f2c_rule Include="..\ztrsm.f" />
+ <f2c_rule Include="..\ztrsv.f" />
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\..\bin\libf2c.lib" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\Makefile.am" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.targets" />
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj.filters b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj.filters
new file mode 100644
index 00000000..7930e6c0
--- /dev/null
+++ b/2.3-1/src/fortran/blas/blas_f/blasplus_DLL_f2c.vcxproj.filters
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{1601b9fb-7d71-4db3-a10f-2ebf4e42eb41}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{00d1d9d7-fbdc-44d6-8833-2fe6c3202478}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{e894258f-c565-49f3-a686-3d4b79d703a9}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
+ </Filter>
+ <Filter Include="Fortran Files">
+ <UniqueIdentifier>{f47cf0f8-ff06-42b4-86b2-ffa42424f976}</UniqueIdentifier>
+ <Extensions>*.f</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\dasum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\daxpy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dcabs1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dcopy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ddot.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgbmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgemm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgemv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dger.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dnrm2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\drot.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\drotg.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsbmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dscal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dspmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dspr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dspr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dswap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsymm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsymv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsyr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsyr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsyr2k.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsyrk.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtbmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtbsv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtpmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtpsv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrmm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrsm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrsv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dzasum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dznrm2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\idamax.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\izamax.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\lsame.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\xerbla.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zaxpy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zcopy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zdotc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zdotu.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zdscal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgbmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgemm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgemv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgerc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgeru.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhbmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhemm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhemv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zher.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zher2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zher2k.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zherk.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhpmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhpr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhpr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zrotg.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zscal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zswap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zsymm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zsyr2k.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zsyrk.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztbmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztbsv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztpmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztpsv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrmm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrmv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrsm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrsv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="..\dasum.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\daxpy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dcabs1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dcopy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ddot.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgbmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgemm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgemv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dger.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dnrm2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\drot.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\drotg.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsbmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dscal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dspmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dspr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dspr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dswap.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsymm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsymv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsyr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsyr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsyr2k.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsyrk.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtbmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtbsv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtpmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtpsv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrmm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrsm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrsv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dzasum.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dznrm2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\idamax.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\izamax.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\lsame.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\xerbla.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zaxpy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zcopy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zdotc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zdotu.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zdscal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgbmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgemm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgemv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgerc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgeru.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhbmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhemm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhemv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zher.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zher2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zher2k.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zherk.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhpmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhpr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhpr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zrotg.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zscal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zswap.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zsymm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zsyr2k.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zsyrk.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztbmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztbsv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztpmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztpsv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrmm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrmv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrsm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrsv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\..\bin\libf2c.lib" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\Makefile.am" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/fortran/blas/dasum.f b/2.3-1/src/fortran/blas/dasum.f
new file mode 100644
index 00000000..28b128a8
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dasum.f
@@ -0,0 +1,43 @@
+ double precision function dasum(n,dx,incx)
+c
+c takes the sum of the absolute values.
+c jack dongarra, linpack, 3/11/78.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dtemp
+ integer i,incx,m,mp1,n,nincx
+c
+ dasum = 0.0d0
+ dtemp = 0.0d0
+ if( n.le.0 .or. incx.le.0 )return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ nincx = n*incx
+ do 10 i = 1,nincx,incx
+ dtemp = dtemp + dabs(dx(i))
+ 10 continue
+ dasum = dtemp
+ return
+c
+c code for increment equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,6)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dtemp = dtemp + dabs(dx(i))
+ 30 continue
+ if( n .lt. 6 ) go to 60
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,6
+ dtemp = dtemp + dabs(dx(i)) + dabs(dx(i + 1)) + dabs(dx(i + 2))
+ * + dabs(dx(i + 3)) + dabs(dx(i + 4)) + dabs(dx(i + 5))
+ 50 continue
+ 60 dasum = dtemp
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/daxpy.f b/2.3-1/src/fortran/blas/daxpy.f
new file mode 100644
index 00000000..91daa3c6
--- /dev/null
+++ b/2.3-1/src/fortran/blas/daxpy.f
@@ -0,0 +1,48 @@
+ subroutine daxpy(n,da,dx,incx,dy,incy)
+c
+c constant times a vector plus a vector.
+c uses unrolled loops for increments equal to one.
+c jack dongarra, linpack, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dy(*),da
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ if(n.le.0)return
+ if (da .eq. 0.0d0) return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dy(iy) = dy(iy) + da*dx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,4)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dy(i) = dy(i) + da*dx(i)
+ 30 continue
+ if( n .lt. 4 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,4
+ dy(i) = dy(i) + da*dx(i)
+ dy(i + 1) = dy(i + 1) + da*dx(i + 1)
+ dy(i + 2) = dy(i + 2) + da*dx(i + 2)
+ dy(i + 3) = dy(i + 3) + da*dx(i + 3)
+ 50 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dcabs1.f b/2.3-1/src/fortran/blas/dcabs1.f
new file mode 100644
index 00000000..385ea5e1
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dcabs1.f
@@ -0,0 +1,8 @@
+ double precision function dcabs1(z)
+ double complex z,zz
+ double precision t(2)
+ equivalence (zz,t(1))
+ zz = z
+ dcabs1 = dabs(t(1)) + dabs(t(2))
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dcopy.f b/2.3-1/src/fortran/blas/dcopy.f
new file mode 100644
index 00000000..e1689271
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dcopy.f
@@ -0,0 +1,50 @@
+ subroutine dcopy(n,dx,incx,dy,incy)
+c
+c copies a vector, x, to a vector, y.
+c uses unrolled loops for increments equal to one.
+c jack dongarra, linpack, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dy(*)
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dy(iy) = dx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,7)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dy(i) = dx(i)
+ 30 continue
+ if( n .lt. 7 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,7
+ dy(i) = dx(i)
+ dy(i + 1) = dx(i + 1)
+ dy(i + 2) = dx(i + 2)
+ dy(i + 3) = dx(i + 3)
+ dy(i + 4) = dx(i + 4)
+ dy(i + 5) = dx(i + 5)
+ dy(i + 6) = dx(i + 6)
+ 50 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/ddot.f b/2.3-1/src/fortran/blas/ddot.f
new file mode 100644
index 00000000..e04c7c25
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ddot.f
@@ -0,0 +1,49 @@
+ double precision function ddot(n,dx,incx,dy,incy)
+c
+c forms the dot product of two vectors.
+c uses unrolled loops for increments equal to one.
+c jack dongarra, linpack, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dy(*),dtemp
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ ddot = 0.0d0
+ dtemp = 0.0d0
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dtemp = dtemp + dx(ix)*dy(iy)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ ddot = dtemp
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,5)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dtemp = dtemp + dx(i)*dy(i)
+ 30 continue
+ if( n .lt. 5 ) go to 60
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,5
+ dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) +
+ * dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + dx(i + 4)*dy(i + 4)
+ 50 continue
+ 60 ddot = dtemp
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dgbmv.f b/2.3-1/src/fortran/blas/dgbmv.f
new file mode 100644
index 00000000..e9c8f76f
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dgbmv.f
@@ -0,0 +1,300 @@
+ SUBROUTINE DGBMV ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA, BETA
+ INTEGER INCX, INCY, KL, KU, LDA, M, N
+ CHARACTER*1 TRANS
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGBMV performs one of the matrix-vector operations
+*
+* y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are vectors and A is an
+* m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*
+* Parameters
+* ==========
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
+*
+* TRANS = 'T' or 't' y := alpha*A'*x + beta*y.
+*
+* TRANS = 'C' or 'c' y := alpha*A'*x + beta*y.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* KL - INTEGER.
+* On entry, KL specifies the number of sub-diagonals of the
+* matrix A. KL must satisfy 0 .le. KL.
+* Unchanged on exit.
+*
+* KU - INTEGER.
+* On entry, KU specifies the number of super-diagonals of the
+* matrix A. KU must satisfy 0 .le. KU.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry, the leading ( kl + ku + 1 ) by n part of the
+* array A must contain the matrix of coefficients, supplied
+* column by column, with the leading diagonal of the matrix in
+* row ( ku + 1 ) of the array, the first super-diagonal
+* starting at position 2 in row ku, the first sub-diagonal
+* starting at position 1 in row ( ku + 2 ), and so on.
+* Elements in the array A that do not correspond to elements
+* in the band matrix (such as the top left ku by ku triangle)
+* are not referenced.
+* The following program segment will transfer a band matrix
+* from conventional full matrix storage to band storage:
+*
+* DO 20, J = 1, N
+* K = KU + 1 - J
+* DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
+* A( K + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( kl + ku + 1 ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+* Before entry, the incremented array X must contain the
+* vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of DIMENSION at least
+* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+* Before entry, the incremented array Y must contain the
+* vector y. On exit, Y is overwritten by the updated vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, IY, J, JX, JY, K, KUP1, KX, KY,
+ $ LENX, LENY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 1
+ ELSE IF( M.LT.0 )THEN
+ INFO = 2
+ ELSE IF( N.LT.0 )THEN
+ INFO = 3
+ ELSE IF( KL.LT.0 )THEN
+ INFO = 4
+ ELSE IF( KU.LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.( KL + KU + 1 ) )THEN
+ INFO = 8
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 10
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 13
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DGBMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set LENX and LENY, the lengths of the vectors x and y, and set
+* up the start points in X and Y.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ LENX = N
+ LENY = M
+ ELSE
+ LENX = M
+ LENY = N
+ END IF
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( LENX - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( LENY - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the band part of A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, LENY
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, LENY
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, LENY
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, LENY
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ KUP1 = KU + 1
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form y := alpha*A*x + y.
+*
+ JX = KX
+ IF( INCY.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ K = KUP1 - J
+ DO 50, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ Y( I ) = Y( I ) + TEMP*A( K + I, J )
+ 50 CONTINUE
+ END IF
+ JX = JX + INCX
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IY = KY
+ K = KUP1 - J
+ DO 70, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ Y( IY ) = Y( IY ) + TEMP*A( K + I, J )
+ IY = IY + INCY
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ IF( J.GT.KU )
+ $ KY = KY + INCY
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y := alpha*A'*x + y.
+*
+ JY = KY
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = 1, N
+ TEMP = ZERO
+ K = KUP1 - J
+ DO 90, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ TEMP = TEMP + A( K + I, J )*X( I )
+ 90 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ 100 CONTINUE
+ ELSE
+ DO 120, J = 1, N
+ TEMP = ZERO
+ IX = KX
+ K = KUP1 - J
+ DO 110, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ TEMP = TEMP + A( K + I, J )*X( IX )
+ IX = IX + INCX
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ IF( J.GT.KU )
+ $ KX = KX + INCX
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DGBMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dgemm.f b/2.3-1/src/fortran/blas/dgemm.f
new file mode 100644
index 00000000..1531fd57
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dgemm.f
@@ -0,0 +1,315 @@
+ SUBROUTINE DGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 TRANSA, TRANSB
+ INTEGER M, N, K, LDA, LDB, LDC
+ DOUBLE PRECISION ALPHA, BETA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+C WARNING : this routine has been modified for Scilab (see comments
+C Cscilab) because algorithm is not ok if A matrix contains NaN
+C (NaN*0 should be NaN, not 0)
+* Purpose
+* =======
+*
+* DGEMM performs one of the matrix-matrix operations
+*
+* C := alpha*op( A )*op( B ) + beta*C,
+*
+* where op( X ) is one of
+*
+* op( X ) = X or op( X ) = X',
+*
+* alpha and beta are scalars, and A, B and C are matrices, with op( A )
+* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*
+* Parameters
+* ==========
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n', op( A ) = A.
+*
+* TRANSA = 'T' or 't', op( A ) = A'.
+*
+* TRANSA = 'C' or 'c', op( A ) = A'.
+*
+* Unchanged on exit.
+*
+* TRANSB - CHARACTER*1.
+* On entry, TRANSB specifies the form of op( B ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSB = 'N' or 'n', op( B ) = B.
+*
+* TRANSB = 'T' or 't', op( B ) = B'.
+*
+* TRANSB = 'C' or 'c', op( B ) = B'.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix
+* op( A ) and of the matrix C. M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix
+* op( B ) and the number of columns of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry, K specifies the number of columns of the matrix
+* op( A ) and the number of rows of the matrix op( B ). K must
+* be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANSA = 'N' or 'n', and is m otherwise.
+* Before entry with TRANSA = 'N' or 'n', the leading m by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by m part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANSA = 'N' or 'n' then
+* LDA must be at least max( 1, m ), otherwise LDA must be at
+* least max( 1, k ).
+* Unchanged on exit.
+*
+* B - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
+* n when TRANSB = 'N' or 'n', and is k otherwise.
+* Before entry with TRANSB = 'N' or 'n', the leading k by n
+* part of the array B must contain the matrix B, otherwise
+* the leading n by k part of the array B must contain the
+* matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. When TRANSB = 'N' or 'n' then
+* LDB must be at least max( 1, k ), otherwise LDB must be at
+* least max( 1, n ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then C need not be set on input.
+* Unchanged on exit.
+*
+* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+* Before entry, the leading m by n part of the array C must
+* contain the matrix C, except when beta is zero, in which
+* case C need not be set on entry.
+* On exit, the array C is overwritten by the m by n matrix
+* ( alpha*op( A )*op( B ) + beta*C ).
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL NOTA, NOTB
+ INTEGER I, INFO, J, L, NCOLA, NROWA, NROWB
+ DOUBLE PRECISION TEMP
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Set NOTA and NOTB as true if A and B respectively are not
+* transposed and set NROWA, NCOLA and NROWB as the number of rows
+* and columns of A and the number of rows of B respectively.
+*
+ NOTA = LSAME( TRANSA, 'N' )
+ NOTB = LSAME( TRANSB, 'N' )
+ IF( NOTA )THEN
+ NROWA = M
+ NCOLA = K
+ ELSE
+ NROWA = K
+ NCOLA = M
+ END IF
+ IF( NOTB )THEN
+ NROWB = K
+ ELSE
+ NROWB = N
+ END IF
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ( .NOT.NOTA ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'C' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'T' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.NOTB ).AND.
+ $ ( .NOT.LSAME( TRANSB, 'C' ) ).AND.
+ $ ( .NOT.LSAME( TRANSB, 'T' ) ) )THEN
+ INFO = 2
+ ELSE IF( M .LT.0 )THEN
+ INFO = 3
+ ELSE IF( N .LT.0 )THEN
+ INFO = 4
+ ELSE IF( K .LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 8
+ ELSE IF( LDB.LT.MAX( 1, NROWB ) )THEN
+ INFO = 10
+ ELSE IF( LDC.LT.MAX( 1, M ) )THEN
+ INFO = 13
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DGEMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And if alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( NOTB )THEN
+ IF( NOTA )THEN
+*
+* Form C := alpha*A*B + beta*C.
+*
+ DO 90, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 50, I = 1, M
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 60, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 60 CONTINUE
+ END IF
+ DO 80, L = 1, K
+Cscilab IF( B( L, J ).NE.ZERO )THEN
+ TEMP = ALPHA*B( L, J )
+ DO 70, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 70 CONTINUE
+Cscilab END IF
+ 80 CONTINUE
+ 90 CONTINUE
+ ELSE
+*
+* Form C := alpha*A'*B + beta*C
+*
+ DO 120, J = 1, N
+ DO 110, I = 1, M
+ TEMP = ZERO
+ DO 100, L = 1, K
+ TEMP = TEMP + A( L, I )*B( L, J )
+ 100 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 110 CONTINUE
+ 120 CONTINUE
+ END IF
+ ELSE
+ IF( NOTA )THEN
+*
+* Form C := alpha*A*B' + beta*C
+*
+ DO 170, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 130, I = 1, M
+ C( I, J ) = ZERO
+ 130 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 140, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 140 CONTINUE
+ END IF
+ DO 160, L = 1, K
+Cscilab IF( B( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*B( J, L )
+ DO 150, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 150 CONTINUE
+Cscilab END IF
+ 160 CONTINUE
+ 170 CONTINUE
+ ELSE
+*
+* Form C := alpha*A'*B' + beta*C
+*
+ DO 200, J = 1, N
+ DO 190, I = 1, M
+ TEMP = ZERO
+ DO 180, L = 1, K
+ TEMP = TEMP + A( L, I )*B( J, L )
+ 180 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 190 CONTINUE
+ 200 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DGEMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dgemv.f b/2.3-1/src/fortran/blas/dgemv.f
new file mode 100644
index 00000000..8ef80b3a
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dgemv.f
@@ -0,0 +1,261 @@
+ SUBROUTINE DGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA, BETA
+ INTEGER INCX, INCY, LDA, M, N
+ CHARACTER*1 TRANS
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEMV performs one of the matrix-vector operations
+*
+* y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are vectors and A is an
+* m by n matrix.
+*
+* Parameters
+* ==========
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
+*
+* TRANS = 'T' or 't' y := alpha*A'*x + beta*y.
+*
+* TRANS = 'C' or 'c' y := alpha*A'*x + beta*y.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry, the leading m by n part of the array A must
+* contain the matrix of coefficients.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+* Before entry, the incremented array X must contain the
+* vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of DIMENSION at least
+* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+* Before entry with BETA non-zero, the incremented array Y
+* must contain the vector y. On exit, Y is overwritten by the
+* updated vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, IY, J, JX, JY, KX, KY, LENX, LENY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 1
+ ELSE IF( M.LT.0 )THEN
+ INFO = 2
+ ELSE IF( N.LT.0 )THEN
+ INFO = 3
+ ELSE IF( LDA.LT.MAX( 1, M ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DGEMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set LENX and LENY, the lengths of the vectors x and y, and set
+* up the start points in X and Y.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ LENX = N
+ LENY = M
+ ELSE
+ LENX = M
+ LENY = N
+ END IF
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( LENX - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( LENY - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, LENY
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, LENY
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, LENY
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, LENY
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form y := alpha*A*x + y.
+*
+ JX = KX
+ IF( INCY.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ DO 50, I = 1, M
+ Y( I ) = Y( I ) + TEMP*A( I, J )
+ 50 CONTINUE
+ END IF
+ JX = JX + INCX
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IY = KY
+ DO 70, I = 1, M
+ Y( IY ) = Y( IY ) + TEMP*A( I, J )
+ IY = IY + INCY
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y := alpha*A'*x + y.
+*
+ JY = KY
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = 1, N
+ TEMP = ZERO
+ DO 90, I = 1, M
+ TEMP = TEMP + A( I, J )*X( I )
+ 90 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ 100 CONTINUE
+ ELSE
+ DO 120, J = 1, N
+ TEMP = ZERO
+ IX = KX
+ DO 110, I = 1, M
+ TEMP = TEMP + A( I, J )*X( IX )
+ IX = IX + INCX
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DGEMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dger.f b/2.3-1/src/fortran/blas/dger.f
new file mode 100644
index 00000000..d316000a
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dger.f
@@ -0,0 +1,157 @@
+ SUBROUTINE DGER ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, INCY, LDA, M, N
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGER performs the rank 1 operation
+*
+* A := alpha*x*y' + A,
+*
+* where alpha is a scalar, x is an m element vector, y is an n element
+* vector and A is an m by n matrix.
+*
+* Parameters
+* ==========
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( m - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the m
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry, the leading m by n part of the array A must
+* contain the matrix of coefficients. On exit, A is
+* overwritten by the updated matrix.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JY, KX
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( M.LT.0 )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( LDA.LT.MAX( 1, M ) )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DGER ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( INCY.GT.0 )THEN
+ JY = 1
+ ELSE
+ JY = 1 - ( N - 1 )*INCY
+ END IF
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( Y( JY ).NE.ZERO )THEN
+ TEMP = ALPHA*Y( JY )
+ DO 10, I = 1, M
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 10 CONTINUE
+ END IF
+ JY = JY + INCY
+ 20 CONTINUE
+ ELSE
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( M - 1 )*INCX
+ END IF
+ DO 40, J = 1, N
+ IF( Y( JY ).NE.ZERO )THEN
+ TEMP = ALPHA*Y( JY )
+ IX = KX
+ DO 30, I = 1, M
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ END IF
+ JY = JY + INCY
+ 40 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DGER .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dnrm2.f b/2.3-1/src/fortran/blas/dnrm2.f
new file mode 100644
index 00000000..119d0477
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dnrm2.f
@@ -0,0 +1,60 @@
+ DOUBLE PRECISION FUNCTION DNRM2 ( N, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+* .. Array Arguments ..
+ DOUBLE PRECISION X( * )
+* ..
+*
+* DNRM2 returns the euclidean norm of a vector via the function
+* name, so that
+*
+* DNRM2 := sqrt( x'*x )
+*
+*
+*
+* -- This version written on 25-October-1982.
+* Modified on 14-October-1993 to inline the call to DLASSQ.
+* Sven Hammarling, Nag Ltd.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ INTEGER IX
+ DOUBLE PRECISION ABSXI, NORM, SCALE, SSQ
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SQRT
+* ..
+* .. Executable Statements ..
+ IF( N.LT.1 .OR. INCX.LT.1 )THEN
+ NORM = ZERO
+ ELSE IF( N.EQ.1 )THEN
+ NORM = ABS( X( 1 ) )
+ ELSE
+ SCALE = ZERO
+ SSQ = ONE
+* The following loop is equivalent to this call to the LAPACK
+* auxiliary routine:
+* CALL DLASSQ( N, X, INCX, SCALE, SSQ )
+*
+ DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX
+ IF( X( IX ).NE.ZERO )THEN
+ ABSXI = ABS( X( IX ) )
+ IF( SCALE.LT.ABSXI )THEN
+ SSQ = ONE + SSQ*( SCALE/ABSXI )**2
+ SCALE = ABSXI
+ ELSE
+ SSQ = SSQ + ( ABSXI/SCALE )**2
+ END IF
+ END IF
+ 10 CONTINUE
+ NORM = SCALE * SQRT( SSQ )
+ END IF
+*
+ DNRM2 = NORM
+ RETURN
+*
+* End of DNRM2.
+*
+ END
diff --git a/2.3-1/src/fortran/blas/drot.f b/2.3-1/src/fortran/blas/drot.f
new file mode 100644
index 00000000..b9ea3bd9
--- /dev/null
+++ b/2.3-1/src/fortran/blas/drot.f
@@ -0,0 +1,37 @@
+ subroutine drot (n,dx,incx,dy,incy,c,s)
+c
+c applies a plane rotation.
+c jack dongarra, linpack, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dy(*),dtemp,c,s
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dtemp = c*dx(ix) + s*dy(iy)
+ dy(iy) = c*dy(iy) - s*dx(ix)
+ dx(ix) = dtemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ dtemp = c*dx(i) + s*dy(i)
+ dy(i) = c*dy(i) - s*dx(i)
+ dx(i) = dtemp
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/drotg.f b/2.3-1/src/fortran/blas/drotg.f
new file mode 100644
index 00000000..67838e2c
--- /dev/null
+++ b/2.3-1/src/fortran/blas/drotg.f
@@ -0,0 +1,27 @@
+ subroutine drotg(da,db,c,s)
+c
+c construct givens plane rotation.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision da,db,c,s,roe,scale,r,z
+c
+ roe = db
+ if( dabs(da) .gt. dabs(db) ) roe = da
+ scale = dabs(da) + dabs(db)
+ if( scale .ne. 0.0d0 ) go to 10
+ c = 1.0d0
+ s = 0.0d0
+ r = 0.0d0
+ z = 0.0d0
+ go to 20
+ 10 r = scale*dsqrt((da/scale)**2 + (db/scale)**2)
+ r = dsign(1.0d0,roe)*r
+ c = da/r
+ s = db/r
+ z = 1.0d0
+ if( dabs(da) .gt. dabs(db) ) z = s
+ if( dabs(db) .ge. dabs(da) .and. c .ne. 0.0d0 ) z = 1.0d0/c
+ 20 da = r
+ db = z
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dsbmv.f b/2.3-1/src/fortran/blas/dsbmv.f
new file mode 100644
index 00000000..272042af
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsbmv.f
@@ -0,0 +1,303 @@
+ SUBROUTINE DSBMV ( UPLO, N, K, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA, BETA
+ INTEGER INCX, INCY, K, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSBMV performs the matrix-vector operation
+*
+* y := alpha*A*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are n element vectors and
+* A is an n by n symmetric band matrix, with k super-diagonals.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the band matrix A is being supplied as
+* follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* being supplied.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* being supplied.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry, K specifies the number of super-diagonals of the
+* matrix A. K must satisfy 0 .le. K.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+* by n part of the array A must contain the upper triangular
+* band part of the symmetric matrix, supplied column by
+* column, with the leading diagonal of the matrix in row
+* ( k + 1 ) of the array, the first super-diagonal starting at
+* position 2 in row k, and so on. The top left k by k triangle
+* of the array A is not referenced.
+* The following program segment will transfer the upper
+* triangular part of a symmetric band matrix from conventional
+* full matrix storage to band storage:
+*
+* DO 20, J = 1, N
+* M = K + 1 - J
+* DO 10, I = MAX( 1, J - K ), J
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+* by n part of the array A must contain the lower triangular
+* band part of the symmetric matrix, supplied column by
+* column, with the leading diagonal of the matrix in row 1 of
+* the array, the first sub-diagonal starting at position 1 in
+* row 2, and so on. The bottom right k by k triangle of the
+* array A is not referenced.
+* The following program segment will transfer the lower
+* triangular part of a symmetric band matrix from conventional
+* full matrix storage to band storage:
+*
+* DO 20, J = 1, N
+* M = 1 - J
+* DO 10, I = J, MIN( N, J + K )
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( k + 1 ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the
+* vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the
+* vector y. On exit, Y is overwritten by the updated vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, KPLUS1, KX, KY, L
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( K.LT.0 )THEN
+ INFO = 3
+ ELSE IF( LDA.LT.( K + 1 ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSBMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set up the start points in X and Y.
+*
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of the array A
+* are accessed sequentially with one pass through A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, N
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, N
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, N
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, N
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form y when upper triangle of A is stored.
+*
+ KPLUS1 = K + 1
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ L = KPLUS1 - J
+ DO 50, I = MAX( 1, J - K ), J - 1
+ Y( I ) = Y( I ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + A( L + I, J )*X( I )
+ 50 CONTINUE
+ Y( J ) = Y( J ) + TEMP1*A( KPLUS1, J ) + ALPHA*TEMP2
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 80, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ IX = KX
+ IY = KY
+ L = KPLUS1 - J
+ DO 70, I = MAX( 1, J - K ), J - 1
+ Y( IY ) = Y( IY ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + A( L + I, J )*X( IX )
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ Y( JY ) = Y( JY ) + TEMP1*A( KPLUS1, J ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ IF( J.GT.K )THEN
+ KX = KX + INCX
+ KY = KY + INCY
+ END IF
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y when lower triangle of A is stored.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 100, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ Y( J ) = Y( J ) + TEMP1*A( 1, J )
+ L = 1 - J
+ DO 90, I = J + 1, MIN( N, J + K )
+ Y( I ) = Y( I ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + A( L + I, J )*X( I )
+ 90 CONTINUE
+ Y( J ) = Y( J ) + ALPHA*TEMP2
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 120, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ Y( JY ) = Y( JY ) + TEMP1*A( 1, J )
+ L = 1 - J
+ IX = JX
+ IY = JY
+ DO 110, I = J + 1, MIN( N, J + K )
+ IX = IX + INCX
+ IY = IY + INCY
+ Y( IY ) = Y( IY ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + A( L + I, J )*X( IX )
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSBMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dscal.f b/2.3-1/src/fortran/blas/dscal.f
new file mode 100644
index 00000000..e1467faf
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dscal.f
@@ -0,0 +1,43 @@
+ subroutine dscal(n,da,dx,incx)
+c
+c scales a vector by a constant.
+c uses unrolled loops for increment equal to one.
+c jack dongarra, linpack, 3/11/78.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision da,dx(*)
+ integer i,incx,m,mp1,n,nincx
+c
+ if( n.le.0 .or. incx.le.0 )return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ nincx = n*incx
+ do 10 i = 1,nincx,incx
+ dx(i) = da*dx(i)
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,5)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dx(i) = da*dx(i)
+ 30 continue
+ if( n .lt. 5 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,5
+ dx(i) = da*dx(i)
+ dx(i + 1) = da*dx(i + 1)
+ dx(i + 2) = da*dx(i + 2)
+ dx(i + 3) = da*dx(i + 3)
+ dx(i + 4) = da*dx(i + 4)
+ 50 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dspmv.f b/2.3-1/src/fortran/blas/dspmv.f
new file mode 100644
index 00000000..3ace7bf2
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dspmv.f
@@ -0,0 +1,262 @@
+ SUBROUTINE DSPMV ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA, BETA
+ INTEGER INCX, INCY, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPMV performs the matrix-vector operation
+*
+* y := alpha*A*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are n element vectors and
+* A is an n by n symmetric matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the matrix A is supplied in the packed
+* array AP as follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* supplied in AP.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* supplied in AP.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* AP - DOUBLE PRECISION array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular part of the symmetric matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+* and a( 2, 2 ) respectively, and so on.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular part of the symmetric matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+* and a( 3, 1 ) respectively, and so on.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y. On exit, Y is overwritten by the updated
+* vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, K, KK, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 6
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSPMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set up the start points in X and Y.
+*
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of the array AP
+* are accessed sequentially with one pass through AP.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, N
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, N
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, N
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, N
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ KK = 1
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form y when AP contains the upper triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ K = KK
+ DO 50, I = 1, J - 1
+ Y( I ) = Y( I ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + AP( K )*X( I )
+ K = K + 1
+ 50 CONTINUE
+ Y( J ) = Y( J ) + TEMP1*AP( KK + J - 1 ) + ALPHA*TEMP2
+ KK = KK + J
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 80, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ IX = KX
+ IY = KY
+ DO 70, K = KK, KK + J - 2
+ Y( IY ) = Y( IY ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + AP( K )*X( IX )
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ Y( JY ) = Y( JY ) + TEMP1*AP( KK + J - 1 ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + J
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y when AP contains the lower triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 100, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ Y( J ) = Y( J ) + TEMP1*AP( KK )
+ K = KK + 1
+ DO 90, I = J + 1, N
+ Y( I ) = Y( I ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + AP( K )*X( I )
+ K = K + 1
+ 90 CONTINUE
+ Y( J ) = Y( J ) + ALPHA*TEMP2
+ KK = KK + ( N - J + 1 )
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 120, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ Y( JY ) = Y( JY ) + TEMP1*AP( KK )
+ IX = JX
+ IY = JY
+ DO 110, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ IY = IY + INCY
+ Y( IY ) = Y( IY ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + AP( K )*X( IX )
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + ( N - J + 1 )
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSPMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dspr.f b/2.3-1/src/fortran/blas/dspr.f
new file mode 100644
index 00000000..3da6889c
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dspr.f
@@ -0,0 +1,198 @@
+ SUBROUTINE DSPR ( UPLO, N, ALPHA, X, INCX, AP )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPR performs the symmetric rank 1 operation
+*
+* A := alpha*x*x' + A,
+*
+* where alpha is a real scalar, x is an n element vector and A is an
+* n by n symmetric matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the matrix A is supplied in the packed
+* array AP as follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* supplied in AP.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* supplied in AP.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* AP - DOUBLE PRECISION array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular part of the symmetric matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+* and a( 2, 2 ) respectively, and so on. On exit, the array
+* AP is overwritten by the upper triangular part of the
+* updated matrix.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular part of the symmetric matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+* and a( 3, 1 ) respectively, and so on. On exit, the array
+* AP is overwritten by the lower triangular part of the
+* updated matrix.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, K, KK, KX
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSPR ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Set the start point in X if the increment is not unity.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of the array AP
+* are accessed sequentially with one pass through AP.
+*
+ KK = 1
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when upper triangle is stored in AP.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*X( J )
+ K = KK
+ DO 10, I = 1, J
+ AP( K ) = AP( K ) + X( I )*TEMP
+ K = K + 1
+ 10 CONTINUE
+ END IF
+ KK = KK + J
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IX = KX
+ DO 30, K = KK, KK + J - 1
+ AP( K ) = AP( K ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ END IF
+ JX = JX + INCX
+ KK = KK + J
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when lower triangle is stored in AP.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*X( J )
+ K = KK
+ DO 50, I = J, N
+ AP( K ) = AP( K ) + X( I )*TEMP
+ K = K + 1
+ 50 CONTINUE
+ END IF
+ KK = KK + N - J + 1
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IX = JX
+ DO 70, K = KK, KK + N - J
+ AP( K ) = AP( K ) + X( IX )*TEMP
+ IX = IX + INCX
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ KK = KK + N - J + 1
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSPR .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dspr2.f b/2.3-1/src/fortran/blas/dspr2.f
new file mode 100644
index 00000000..1cfce21b
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dspr2.f
@@ -0,0 +1,229 @@
+ SUBROUTINE DSPR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, INCY, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPR2 performs the symmetric rank 2 operation
+*
+* A := alpha*x*y' + alpha*y*x' + A,
+*
+* where alpha is a scalar, x and y are n element vectors and A is an
+* n by n symmetric matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the matrix A is supplied in the packed
+* array AP as follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* supplied in AP.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* supplied in AP.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* AP - DOUBLE PRECISION array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular part of the symmetric matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+* and a( 2, 2 ) respectively, and so on. On exit, the array
+* AP is overwritten by the upper triangular part of the
+* updated matrix.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular part of the symmetric matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+* and a( 3, 1 ) respectively, and so on. On exit, the array
+* AP is overwritten by the lower triangular part of the
+* updated matrix.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, K, KK, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSPR2 ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Set up the start points in X and Y if the increments are not both
+* unity.
+*
+ IF( ( INCX.NE.1 ).OR.( INCY.NE.1 ) )THEN
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+ JX = KX
+ JY = KY
+ END IF
+*
+* Start the operations. In this version the elements of the array AP
+* are accessed sequentially with one pass through AP.
+*
+ KK = 1
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when upper triangle is stored in AP.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 20, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( J )
+ TEMP2 = ALPHA*X( J )
+ K = KK
+ DO 10, I = 1, J
+ AP( K ) = AP( K ) + X( I )*TEMP1 + Y( I )*TEMP2
+ K = K + 1
+ 10 CONTINUE
+ END IF
+ KK = KK + J
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( JY )
+ TEMP2 = ALPHA*X( JX )
+ IX = KX
+ IY = KY
+ DO 30, K = KK, KK + J - 1
+ AP( K ) = AP( K ) + X( IX )*TEMP1 + Y( IY )*TEMP2
+ IX = IX + INCX
+ IY = IY + INCY
+ 30 CONTINUE
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + J
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when lower triangle is stored in AP.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( J )
+ TEMP2 = ALPHA*X( J )
+ K = KK
+ DO 50, I = J, N
+ AP( K ) = AP( K ) + X( I )*TEMP1 + Y( I )*TEMP2
+ K = K + 1
+ 50 CONTINUE
+ END IF
+ KK = KK + N - J + 1
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( JY )
+ TEMP2 = ALPHA*X( JX )
+ IX = JX
+ IY = JY
+ DO 70, K = KK, KK + N - J
+ AP( K ) = AP( K ) + X( IX )*TEMP1 + Y( IY )*TEMP2
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + N - J + 1
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSPR2 .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dswap.f b/2.3-1/src/fortran/blas/dswap.f
new file mode 100644
index 00000000..7f7d1fbb
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dswap.f
@@ -0,0 +1,56 @@
+ subroutine dswap (n,dx,incx,dy,incy)
+c
+c interchanges two vectors.
+c uses unrolled loops for increments equal one.
+c jack dongarra, linpack, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dy(*),dtemp
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dtemp = dx(ix)
+ dx(ix) = dy(iy)
+ dy(iy) = dtemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,3)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dtemp = dx(i)
+ dx(i) = dy(i)
+ dy(i) = dtemp
+ 30 continue
+ if( n .lt. 3 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,3
+ dtemp = dx(i)
+ dx(i) = dy(i)
+ dy(i) = dtemp
+ dtemp = dx(i + 1)
+ dx(i + 1) = dy(i + 1)
+ dy(i + 1) = dtemp
+ dtemp = dx(i + 2)
+ dx(i + 2) = dy(i + 2)
+ dy(i + 2) = dtemp
+ 50 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dsymm.f b/2.3-1/src/fortran/blas/dsymm.f
new file mode 100644
index 00000000..0f251417
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsymm.f
@@ -0,0 +1,294 @@
+ SUBROUTINE DSYMM ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO
+ INTEGER M, N, LDA, LDB, LDC
+ DOUBLE PRECISION ALPHA, BETA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYMM performs one of the matrix-matrix operations
+*
+* C := alpha*A*B + beta*C,
+*
+* or
+*
+* C := alpha*B*A + beta*C,
+*
+* where alpha and beta are scalars, A is a symmetric matrix and B and
+* C are m by n matrices.
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether the symmetric matrix A
+* appears on the left or right in the operation as follows:
+*
+* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
+*
+* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the symmetric matrix A is to be
+* referenced as follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of the
+* symmetric matrix is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of the
+* symmetric matrix is to be referenced.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix C.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix C.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+* m when SIDE = 'L' or 'l' and is n otherwise.
+* Before entry with SIDE = 'L' or 'l', the m by m part of
+* the array A must contain the symmetric matrix, such that
+* when UPLO = 'U' or 'u', the leading m by m upper triangular
+* part of the array A must contain the upper triangular part
+* of the symmetric matrix and the strictly lower triangular
+* part of A is not referenced, and when UPLO = 'L' or 'l',
+* the leading m by m lower triangular part of the array A
+* must contain the lower triangular part of the symmetric
+* matrix and the strictly upper triangular part of A is not
+* referenced.
+* Before entry with SIDE = 'R' or 'r', the n by n part of
+* the array A must contain the symmetric matrix, such that
+* when UPLO = 'U' or 'u', the leading n by n upper triangular
+* part of the array A must contain the upper triangular part
+* of the symmetric matrix and the strictly lower triangular
+* part of A is not referenced, and when UPLO = 'L' or 'l',
+* the leading n by n lower triangular part of the array A
+* must contain the lower triangular part of the symmetric
+* matrix and the strictly upper triangular part of A is not
+* referenced.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), otherwise LDA must be at
+* least max( 1, n ).
+* Unchanged on exit.
+*
+* B - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then C need not be set on input.
+* Unchanged on exit.
+*
+* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+* Before entry, the leading m by n part of the array C must
+* contain the matrix C, except when beta is zero, in which
+* case C need not be set on entry.
+* On exit, the array C is overwritten by the m by n updated
+* matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, K, NROWA
+ DOUBLE PRECISION TEMP1, TEMP2
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Set NROWA as the number of rows of A.
+*
+ IF( LSAME( SIDE, 'L' ) )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ( .NOT.LSAME( SIDE, 'L' ) ).AND.
+ $ ( .NOT.LSAME( SIDE, 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO, 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( M .LT.0 )THEN
+ INFO = 3
+ ELSE IF( N .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 9
+ ELSE IF( LDC.LT.MAX( 1, M ) )THEN
+ INFO = 12
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSYMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( SIDE, 'L' ) )THEN
+*
+* Form C := alpha*A*B + beta*C.
+*
+ IF( UPPER )THEN
+ DO 70, J = 1, N
+ DO 60, I = 1, M
+ TEMP1 = ALPHA*B( I, J )
+ TEMP2 = ZERO
+ DO 50, K = 1, I - 1
+ C( K, J ) = C( K, J ) + TEMP1 *A( K, I )
+ TEMP2 = TEMP2 + B( K, J )*A( K, I )
+ 50 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = TEMP1*A( I, I ) + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ TEMP1*A( I, I ) + ALPHA*TEMP2
+ END IF
+ 60 CONTINUE
+ 70 CONTINUE
+ ELSE
+ DO 100, J = 1, N
+ DO 90, I = M, 1, -1
+ TEMP1 = ALPHA*B( I, J )
+ TEMP2 = ZERO
+ DO 80, K = I + 1, M
+ C( K, J ) = C( K, J ) + TEMP1 *A( K, I )
+ TEMP2 = TEMP2 + B( K, J )*A( K, I )
+ 80 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = TEMP1*A( I, I ) + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ TEMP1*A( I, I ) + ALPHA*TEMP2
+ END IF
+ 90 CONTINUE
+ 100 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*B*A + beta*C.
+*
+ DO 170, J = 1, N
+ TEMP1 = ALPHA*A( J, J )
+ IF( BETA.EQ.ZERO )THEN
+ DO 110, I = 1, M
+ C( I, J ) = TEMP1*B( I, J )
+ 110 CONTINUE
+ ELSE
+ DO 120, I = 1, M
+ C( I, J ) = BETA*C( I, J ) + TEMP1*B( I, J )
+ 120 CONTINUE
+ END IF
+ DO 140, K = 1, J - 1
+ IF( UPPER )THEN
+ TEMP1 = ALPHA*A( K, J )
+ ELSE
+ TEMP1 = ALPHA*A( J, K )
+ END IF
+ DO 130, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP1*B( I, K )
+ 130 CONTINUE
+ 140 CONTINUE
+ DO 160, K = J + 1, N
+ IF( UPPER )THEN
+ TEMP1 = ALPHA*A( J, K )
+ ELSE
+ TEMP1 = ALPHA*A( K, J )
+ END IF
+ DO 150, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP1*B( I, K )
+ 150 CONTINUE
+ 160 CONTINUE
+ 170 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DSYMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dsymv.f b/2.3-1/src/fortran/blas/dsymv.f
new file mode 100644
index 00000000..7592d156
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsymv.f
@@ -0,0 +1,262 @@
+ SUBROUTINE DSYMV ( UPLO, N, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA, BETA
+ INTEGER INCX, INCY, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYMV performs the matrix-vector operation
+*
+* y := alpha*A*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are n element vectors and
+* A is an n by n symmetric matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array A is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of A
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of A
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of A is not referenced.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y. On exit, Y is overwritten by the updated
+* vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 5
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 10
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSYMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set up the start points in X and Y.
+*
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the triangular part
+* of A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, N
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, N
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, N
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, N
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form y when A is stored in upper triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ DO 50, I = 1, J - 1
+ Y( I ) = Y( I ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + A( I, J )*X( I )
+ 50 CONTINUE
+ Y( J ) = Y( J ) + TEMP1*A( J, J ) + ALPHA*TEMP2
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 80, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ IX = KX
+ IY = KY
+ DO 70, I = 1, J - 1
+ Y( IY ) = Y( IY ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + A( I, J )*X( IX )
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ Y( JY ) = Y( JY ) + TEMP1*A( J, J ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y when A is stored in lower triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 100, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ Y( J ) = Y( J ) + TEMP1*A( J, J )
+ DO 90, I = J + 1, N
+ Y( I ) = Y( I ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + A( I, J )*X( I )
+ 90 CONTINUE
+ Y( J ) = Y( J ) + ALPHA*TEMP2
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 120, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ Y( JY ) = Y( JY ) + TEMP1*A( J, J )
+ IX = JX
+ IY = JY
+ DO 110, I = J + 1, N
+ IX = IX + INCX
+ IY = IY + INCY
+ Y( IY ) = Y( IY ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + A( I, J )*X( IX )
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSYMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dsyr.f b/2.3-1/src/fortran/blas/dsyr.f
new file mode 100644
index 00000000..87377196
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsyr.f
@@ -0,0 +1,197 @@
+ SUBROUTINE DSYR ( UPLO, N, ALPHA, X, INCX, A, LDA )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYR performs the symmetric rank 1 operation
+*
+* A := alpha*x*x' + A,
+*
+* where alpha is a real scalar, x is an n element vector and A is an
+* n by n symmetric matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array A is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of A
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of A
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of A is not referenced. On exit, the
+* upper triangular part of the array A is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of A is not referenced. On exit, the
+* lower triangular part of the array A is overwritten by the
+* lower triangular part of the updated matrix.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, KX
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSYR ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Set the start point in X if the increment is not unity.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the triangular part
+* of A.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when A is stored in upper triangle.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*X( J )
+ DO 10, I = 1, J
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IX = KX
+ DO 30, I = 1, J
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ END IF
+ JX = JX + INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when A is stored in lower triangle.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*X( J )
+ DO 50, I = J, N
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IX = JX
+ DO 70, I = J, N
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ IX = IX + INCX
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSYR .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dsyr2.f b/2.3-1/src/fortran/blas/dsyr2.f
new file mode 100644
index 00000000..918ad8a7
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsyr2.f
@@ -0,0 +1,230 @@
+ SUBROUTINE DSYR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, INCY, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYR2 performs the symmetric rank 2 operation
+*
+* A := alpha*x*y' + alpha*y*x' + A,
+*
+* where alpha is a scalar, x and y are n element vectors and A is an n
+* by n symmetric matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array A is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of A
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of A
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of A is not referenced. On exit, the
+* upper triangular part of the array A is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of A is not referenced. On exit, the
+* lower triangular part of the array A is overwritten by the
+* lower triangular part of the updated matrix.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSYR2 ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Set up the start points in X and Y if the increments are not both
+* unity.
+*
+ IF( ( INCX.NE.1 ).OR.( INCY.NE.1 ) )THEN
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+ JX = KX
+ JY = KY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the triangular part
+* of A.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when A is stored in the upper triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 20, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( J )
+ TEMP2 = ALPHA*X( J )
+ DO 10, I = 1, J
+ A( I, J ) = A( I, J ) + X( I )*TEMP1 + Y( I )*TEMP2
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( JY )
+ TEMP2 = ALPHA*X( JX )
+ IX = KX
+ IY = KY
+ DO 30, I = 1, J
+ A( I, J ) = A( I, J ) + X( IX )*TEMP1
+ $ + Y( IY )*TEMP2
+ IX = IX + INCX
+ IY = IY + INCY
+ 30 CONTINUE
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when A is stored in the lower triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( J )
+ TEMP2 = ALPHA*X( J )
+ DO 50, I = J, N
+ A( I, J ) = A( I, J ) + X( I )*TEMP1 + Y( I )*TEMP2
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*Y( JY )
+ TEMP2 = ALPHA*X( JX )
+ IX = JX
+ IY = JY
+ DO 70, I = J, N
+ A( I, J ) = A( I, J ) + X( IX )*TEMP1
+ $ + Y( IY )*TEMP2
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSYR2 .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dsyr2k.f b/2.3-1/src/fortran/blas/dsyr2k.f
new file mode 100644
index 00000000..ac7d97de
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsyr2k.f
@@ -0,0 +1,327 @@
+ SUBROUTINE DSYR2K( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 UPLO, TRANS
+ INTEGER N, K, LDA, LDB, LDC
+ DOUBLE PRECISION ALPHA, BETA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYR2K performs one of the symmetric rank 2k operations
+*
+* C := alpha*A*B' + alpha*B*A' + beta*C,
+*
+* or
+*
+* C := alpha*A'*B + alpha*B'*A + beta*C,
+*
+* where alpha and beta are scalars, C is an n by n symmetric matrix
+* and A and B are n by k matrices in the first case and k by n
+* matrices in the second case.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array C is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of C
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of C
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' C := alpha*A*B' + alpha*B*A' +
+* beta*C.
+*
+* TRANS = 'T' or 't' C := alpha*A'*B + alpha*B'*A +
+* beta*C.
+*
+* TRANS = 'C' or 'c' C := alpha*A'*B + alpha*B'*A +
+* beta*C.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with TRANS = 'N' or 'n', K specifies the number
+* of columns of the matrices A and B, and on entry with
+* TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+* of rows of the matrices A and B. K must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by n part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDA must be at least max( 1, n ), otherwise LDA must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* B - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array B must contain the matrix B, otherwise
+* the leading k by n part of the array B must contain the
+* matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDB must be at least max( 1, n ), otherwise LDB must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array C must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of C is not referenced. On exit, the
+* upper triangular part of the array C is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array C must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of C is not referenced. On exit, the
+* lower triangular part of the array C is overwritten by the
+* lower triangular part of the updated matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, L, NROWA
+ DOUBLE PRECISION TEMP1, TEMP2
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ NROWA = N
+ ELSE
+ NROWA = K
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANS, 'T' ) ).AND.
+ $ ( .NOT.LSAME( TRANS, 'C' ) ) )THEN
+ INFO = 2
+ ELSE IF( N .LT.0 )THEN
+ INFO = 3
+ ELSE IF( K .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDB.LT.MAX( 1, NROWA ) )THEN
+ INFO = 9
+ ELSE IF( LDC.LT.MAX( 1, N ) )THEN
+ INFO = 12
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSYR2K', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.
+ $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( UPPER )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, J
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( BETA.EQ.ZERO )THEN
+ DO 60, J = 1, N
+ DO 50, I = J, N
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ DO 70, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form C := alpha*A*B' + alpha*B*A' + C.
+*
+ IF( UPPER )THEN
+ DO 130, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 90, I = 1, J
+ C( I, J ) = ZERO
+ 90 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 100, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 100 CONTINUE
+ END IF
+ DO 120, L = 1, K
+ IF( ( A( J, L ).NE.ZERO ).OR.
+ $ ( B( J, L ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*B( J, L )
+ TEMP2 = ALPHA*A( J, L )
+ DO 110, I = 1, J
+ C( I, J ) = C( I, J ) +
+ $ A( I, L )*TEMP1 + B( I, L )*TEMP2
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 180, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 140, I = J, N
+ C( I, J ) = ZERO
+ 140 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 150, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 150 CONTINUE
+ END IF
+ DO 170, L = 1, K
+ IF( ( A( J, L ).NE.ZERO ).OR.
+ $ ( B( J, L ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*B( J, L )
+ TEMP2 = ALPHA*A( J, L )
+ DO 160, I = J, N
+ C( I, J ) = C( I, J ) +
+ $ A( I, L )*TEMP1 + B( I, L )*TEMP2
+ 160 CONTINUE
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*A'*B + alpha*B'*A + C.
+*
+ IF( UPPER )THEN
+ DO 210, J = 1, N
+ DO 200, I = 1, J
+ TEMP1 = ZERO
+ TEMP2 = ZERO
+ DO 190, L = 1, K
+ TEMP1 = TEMP1 + A( L, I )*B( L, J )
+ TEMP2 = TEMP2 + B( L, I )*A( L, J )
+ 190 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP1 + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ ALPHA*TEMP1 + ALPHA*TEMP2
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+ ELSE
+ DO 240, J = 1, N
+ DO 230, I = J, N
+ TEMP1 = ZERO
+ TEMP2 = ZERO
+ DO 220, L = 1, K
+ TEMP1 = TEMP1 + A( L, I )*B( L, J )
+ TEMP2 = TEMP2 + B( L, I )*A( L, J )
+ 220 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP1 + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ ALPHA*TEMP1 + ALPHA*TEMP2
+ END IF
+ 230 CONTINUE
+ 240 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSYR2K.
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dsyrk.f b/2.3-1/src/fortran/blas/dsyrk.f
new file mode 100644
index 00000000..b618b296
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dsyrk.f
@@ -0,0 +1,294 @@
+ SUBROUTINE DSYRK ( UPLO, TRANS, N, K, ALPHA, A, LDA,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 UPLO, TRANS
+ INTEGER N, K, LDA, LDC
+ DOUBLE PRECISION ALPHA, BETA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYRK performs one of the symmetric rank k operations
+*
+* C := alpha*A*A' + beta*C,
+*
+* or
+*
+* C := alpha*A'*A + beta*C,
+*
+* where alpha and beta are scalars, C is an n by n symmetric matrix
+* and A is an n by k matrix in the first case and a k by n matrix
+* in the second case.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array C is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of C
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of C
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' C := alpha*A*A' + beta*C.
+*
+* TRANS = 'T' or 't' C := alpha*A'*A + beta*C.
+*
+* TRANS = 'C' or 'c' C := alpha*A'*A + beta*C.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with TRANS = 'N' or 'n', K specifies the number
+* of columns of the matrix A, and on entry with
+* TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+* of rows of the matrix A. K must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by n part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDA must be at least max( 1, n ), otherwise LDA must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array C must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of C is not referenced. On exit, the
+* upper triangular part of the array C is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array C must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of C is not referenced. On exit, the
+* lower triangular part of the array C is overwritten by the
+* lower triangular part of the updated matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, L, NROWA
+ DOUBLE PRECISION TEMP
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ NROWA = N
+ ELSE
+ NROWA = K
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANS, 'T' ) ).AND.
+ $ ( .NOT.LSAME( TRANS, 'C' ) ) )THEN
+ INFO = 2
+ ELSE IF( N .LT.0 )THEN
+ INFO = 3
+ ELSE IF( K .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDC.LT.MAX( 1, N ) )THEN
+ INFO = 10
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DSYRK ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.
+ $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( UPPER )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, J
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( BETA.EQ.ZERO )THEN
+ DO 60, J = 1, N
+ DO 50, I = J, N
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ DO 70, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form C := alpha*A*A' + beta*C.
+*
+ IF( UPPER )THEN
+ DO 130, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 90, I = 1, J
+ C( I, J ) = ZERO
+ 90 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 100, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 100 CONTINUE
+ END IF
+ DO 120, L = 1, K
+ IF( A( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*A( J, L )
+ DO 110, I = 1, J
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 180, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 140, I = J, N
+ C( I, J ) = ZERO
+ 140 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 150, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 150 CONTINUE
+ END IF
+ DO 170, L = 1, K
+ IF( A( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*A( J, L )
+ DO 160, I = J, N
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 160 CONTINUE
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*A'*A + beta*C.
+*
+ IF( UPPER )THEN
+ DO 210, J = 1, N
+ DO 200, I = 1, J
+ TEMP = ZERO
+ DO 190, L = 1, K
+ TEMP = TEMP + A( L, I )*A( L, J )
+ 190 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+ ELSE
+ DO 240, J = 1, N
+ DO 230, I = J, N
+ TEMP = ZERO
+ DO 220, L = 1, K
+ TEMP = TEMP + A( L, I )*A( L, J )
+ 220 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 230 CONTINUE
+ 240 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DSYRK .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtbmv.f b/2.3-1/src/fortran/blas/dtbmv.f
new file mode 100644
index 00000000..1363db79
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtbmv.f
@@ -0,0 +1,342 @@
+ SUBROUTINE DTBMV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, K, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTBMV performs one of the matrix-vector operations
+*
+* x := A*x, or x := A'*x,
+*
+* where x is an n element vector and A is an n by n unit, or non-unit,
+* upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' x := A*x.
+*
+* TRANS = 'T' or 't' x := A'*x.
+*
+* TRANS = 'C' or 'c' x := A'*x.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with UPLO = 'U' or 'u', K specifies the number of
+* super-diagonals of the matrix A.
+* On entry with UPLO = 'L' or 'l', K specifies the number of
+* sub-diagonals of the matrix A.
+* K must satisfy 0 .le. K.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+* by n part of the array A must contain the upper triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row
+* ( k + 1 ) of the array, the first super-diagonal starting at
+* position 2 in row k, and so on. The top left k by k triangle
+* of the array A is not referenced.
+* The following program segment will transfer an upper
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = K + 1 - J
+* DO 10, I = MAX( 1, J - K ), J
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+* by n part of the array A must contain the lower triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row 1 of
+* the array, the first sub-diagonal starting at position 1 in
+* row 2, and so on. The bottom right k by k triangle of the
+* array A is not referenced.
+* The following program segment will transfer a lower
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = 1 - J
+* DO 10, I = J, MIN( N, J + K )
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Note that when DIAG = 'U' or 'u' the elements of the array A
+* corresponding to the diagonal elements of the matrix are not
+* referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( k + 1 ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x. On exit, X is overwritten with the
+* tranformed vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, KPLUS1, KX, L
+ LOGICAL NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( K.LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.( K + 1 ) )THEN
+ INFO = 7
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTBMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := A*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ L = KPLUS1 - J
+ DO 10, I = MAX( 1, J - K ), J - 1
+ X( I ) = X( I ) + TEMP*A( L + I, J )
+ 10 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( KPLUS1, J )
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ L = KPLUS1 - J
+ DO 30, I = MAX( 1, J - K ), J - 1
+ X( IX ) = X( IX ) + TEMP*A( L + I, J )
+ IX = IX + INCX
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( KPLUS1, J )
+ END IF
+ JX = JX + INCX
+ IF( J.GT.K )
+ $ KX = KX + INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ L = 1 - J
+ DO 50, I = MIN( N, J + K ), J + 1, -1
+ X( I ) = X( I ) + TEMP*A( L + I, J )
+ 50 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( 1, J )
+ END IF
+ 60 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 80, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ L = 1 - J
+ DO 70, I = MIN( N, J + K ), J + 1, -1
+ X( IX ) = X( IX ) + TEMP*A( L + I, J )
+ IX = IX - INCX
+ 70 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( 1, J )
+ END IF
+ JX = JX - INCX
+ IF( ( N - J ).GE.K )
+ $ KX = KX - INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := A'*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = N, 1, -1
+ TEMP = X( J )
+ L = KPLUS1 - J
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( KPLUS1, J )
+ DO 90, I = J - 1, MAX( 1, J - K ), -1
+ TEMP = TEMP + A( L + I, J )*X( I )
+ 90 CONTINUE
+ X( J ) = TEMP
+ 100 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 120, J = N, 1, -1
+ TEMP = X( JX )
+ KX = KX - INCX
+ IX = KX
+ L = KPLUS1 - J
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( KPLUS1, J )
+ DO 110, I = J - 1, MAX( 1, J - K ), -1
+ TEMP = TEMP + A( L + I, J )*X( IX )
+ IX = IX - INCX
+ 110 CONTINUE
+ X( JX ) = TEMP
+ JX = JX - INCX
+ 120 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 140, J = 1, N
+ TEMP = X( J )
+ L = 1 - J
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( 1, J )
+ DO 130, I = J + 1, MIN( N, J + K )
+ TEMP = TEMP + A( L + I, J )*X( I )
+ 130 CONTINUE
+ X( J ) = TEMP
+ 140 CONTINUE
+ ELSE
+ JX = KX
+ DO 160, J = 1, N
+ TEMP = X( JX )
+ KX = KX + INCX
+ IX = KX
+ L = 1 - J
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( 1, J )
+ DO 150, I = J + 1, MIN( N, J + K )
+ TEMP = TEMP + A( L + I, J )*X( IX )
+ IX = IX + INCX
+ 150 CONTINUE
+ X( JX ) = TEMP
+ JX = JX + INCX
+ 160 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTBMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtbsv.f b/2.3-1/src/fortran/blas/dtbsv.f
new file mode 100644
index 00000000..d87ed82d
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtbsv.f
@@ -0,0 +1,346 @@
+ SUBROUTINE DTBSV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, K, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTBSV solves one of the systems of equations
+*
+* A*x = b, or A'*x = b,
+*
+* where b and x are n element vectors and A is an n by n unit, or
+* non-unit, upper or lower triangular band matrix, with ( k + 1 )
+* diagonals.
+*
+* No test for singularity or near-singularity is included in this
+* routine. Such tests must be performed before calling this routine.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the equations to be solved as
+* follows:
+*
+* TRANS = 'N' or 'n' A*x = b.
+*
+* TRANS = 'T' or 't' A'*x = b.
+*
+* TRANS = 'C' or 'c' A'*x = b.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with UPLO = 'U' or 'u', K specifies the number of
+* super-diagonals of the matrix A.
+* On entry with UPLO = 'L' or 'l', K specifies the number of
+* sub-diagonals of the matrix A.
+* K must satisfy 0 .le. K.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+* by n part of the array A must contain the upper triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row
+* ( k + 1 ) of the array, the first super-diagonal starting at
+* position 2 in row k, and so on. The top left k by k triangle
+* of the array A is not referenced.
+* The following program segment will transfer an upper
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = K + 1 - J
+* DO 10, I = MAX( 1, J - K ), J
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+* by n part of the array A must contain the lower triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row 1 of
+* the array, the first sub-diagonal starting at position 1 in
+* row 2, and so on. The bottom right k by k triangle of the
+* array A is not referenced.
+* The following program segment will transfer a lower
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = 1 - J
+* DO 10, I = J, MIN( N, J + K )
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Note that when DIAG = 'U' or 'u' the elements of the array A
+* corresponding to the diagonal elements of the matrix are not
+* referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( k + 1 ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element right-hand side vector b. On exit, X is overwritten
+* with the solution vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, KPLUS1, KX, L
+ LOGICAL NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( K.LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.( K + 1 ) )THEN
+ INFO = 7
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTBSV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed by sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := inv( A )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ L = KPLUS1 - J
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( KPLUS1, J )
+ TEMP = X( J )
+ DO 10, I = J - 1, MAX( 1, J - K ), -1
+ X( I ) = X( I ) - TEMP*A( L + I, J )
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 40, J = N, 1, -1
+ KX = KX - INCX
+ IF( X( JX ).NE.ZERO )THEN
+ IX = KX
+ L = KPLUS1 - J
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( KPLUS1, J )
+ TEMP = X( JX )
+ DO 30, I = J - 1, MAX( 1, J - K ), -1
+ X( IX ) = X( IX ) - TEMP*A( L + I, J )
+ IX = IX - INCX
+ 30 CONTINUE
+ END IF
+ JX = JX - INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ L = 1 - J
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( 1, J )
+ TEMP = X( J )
+ DO 50, I = J + 1, MIN( N, J + K )
+ X( I ) = X( I ) - TEMP*A( L + I, J )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ KX = KX + INCX
+ IF( X( JX ).NE.ZERO )THEN
+ IX = KX
+ L = 1 - J
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( 1, J )
+ TEMP = X( JX )
+ DO 70, I = J + 1, MIN( N, J + K )
+ X( IX ) = X( IX ) - TEMP*A( L + I, J )
+ IX = IX + INCX
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := inv( A')*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = 1, N
+ TEMP = X( J )
+ L = KPLUS1 - J
+ DO 90, I = MAX( 1, J - K ), J - 1
+ TEMP = TEMP - A( L + I, J )*X( I )
+ 90 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( KPLUS1, J )
+ X( J ) = TEMP
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ DO 120, J = 1, N
+ TEMP = X( JX )
+ IX = KX
+ L = KPLUS1 - J
+ DO 110, I = MAX( 1, J - K ), J - 1
+ TEMP = TEMP - A( L + I, J )*X( IX )
+ IX = IX + INCX
+ 110 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( KPLUS1, J )
+ X( JX ) = TEMP
+ JX = JX + INCX
+ IF( J.GT.K )
+ $ KX = KX + INCX
+ 120 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 140, J = N, 1, -1
+ TEMP = X( J )
+ L = 1 - J
+ DO 130, I = MIN( N, J + K ), J + 1, -1
+ TEMP = TEMP - A( L + I, J )*X( I )
+ 130 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( 1, J )
+ X( J ) = TEMP
+ 140 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 160, J = N, 1, -1
+ TEMP = X( JX )
+ IX = KX
+ L = 1 - J
+ DO 150, I = MIN( N, J + K ), J + 1, -1
+ TEMP = TEMP - A( L + I, J )*X( IX )
+ IX = IX - INCX
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( 1, J )
+ X( JX ) = TEMP
+ JX = JX - INCX
+ IF( ( N - J ).GE.K )
+ $ KX = KX - INCX
+ 160 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTBSV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtpmv.f b/2.3-1/src/fortran/blas/dtpmv.f
new file mode 100644
index 00000000..ee11bc1b
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtpmv.f
@@ -0,0 +1,299 @@
+ SUBROUTINE DTPMV ( UPLO, TRANS, DIAG, N, AP, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTPMV performs one of the matrix-vector operations
+*
+* x := A*x, or x := A'*x,
+*
+* where x is an n element vector and A is an n by n unit, or non-unit,
+* upper or lower triangular matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' x := A*x.
+*
+* TRANS = 'T' or 't' x := A'*x.
+*
+* TRANS = 'C' or 'c' x := A'*x.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* AP - DOUBLE PRECISION array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+* respectively, and so on.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+* respectively, and so on.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x. On exit, X is overwritten with the
+* tranformed vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, K, KK, KX
+ LOGICAL NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTPMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of AP are
+* accessed sequentially with one pass through AP.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x:= A*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK =1
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ K = KK
+ DO 10, I = 1, J - 1
+ X( I ) = X( I ) + TEMP*AP( K )
+ K = K + 1
+ 10 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*AP( KK + J - 1 )
+ END IF
+ KK = KK + J
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 30, K = KK, KK + J - 2
+ X( IX ) = X( IX ) + TEMP*AP( K )
+ IX = IX + INCX
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*AP( KK + J - 1 )
+ END IF
+ JX = JX + INCX
+ KK = KK + J
+ 40 CONTINUE
+ END IF
+ ELSE
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ K = KK
+ DO 50, I = N, J + 1, -1
+ X( I ) = X( I ) + TEMP*AP( K )
+ K = K - 1
+ 50 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*AP( KK - N + J )
+ END IF
+ KK = KK - ( N - J + 1 )
+ 60 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 80, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 70, K = KK, KK - ( N - ( J + 1 ) ), -1
+ X( IX ) = X( IX ) + TEMP*AP( K )
+ IX = IX - INCX
+ 70 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*AP( KK - N + J )
+ END IF
+ JX = JX - INCX
+ KK = KK - ( N - J + 1 )
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := A'*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = N, 1, -1
+ TEMP = X( J )
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ K = KK - 1
+ DO 90, I = J - 1, 1, -1
+ TEMP = TEMP + AP( K )*X( I )
+ K = K - 1
+ 90 CONTINUE
+ X( J ) = TEMP
+ KK = KK - J
+ 100 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 120, J = N, 1, -1
+ TEMP = X( JX )
+ IX = JX
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ DO 110, K = KK - 1, KK - J + 1, -1
+ IX = IX - INCX
+ TEMP = TEMP + AP( K )*X( IX )
+ 110 CONTINUE
+ X( JX ) = TEMP
+ JX = JX - INCX
+ KK = KK - J
+ 120 CONTINUE
+ END IF
+ ELSE
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 140, J = 1, N
+ TEMP = X( J )
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ K = KK + 1
+ DO 130, I = J + 1, N
+ TEMP = TEMP + AP( K )*X( I )
+ K = K + 1
+ 130 CONTINUE
+ X( J ) = TEMP
+ KK = KK + ( N - J + 1 )
+ 140 CONTINUE
+ ELSE
+ JX = KX
+ DO 160, J = 1, N
+ TEMP = X( JX )
+ IX = JX
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ DO 150, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ TEMP = TEMP + AP( K )*X( IX )
+ 150 CONTINUE
+ X( JX ) = TEMP
+ JX = JX + INCX
+ KK = KK + ( N - J + 1 )
+ 160 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTPMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtpsv.f b/2.3-1/src/fortran/blas/dtpsv.f
new file mode 100644
index 00000000..91930d9f
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtpsv.f
@@ -0,0 +1,302 @@
+ SUBROUTINE DTPSV ( UPLO, TRANS, DIAG, N, AP, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTPSV solves one of the systems of equations
+*
+* A*x = b, or A'*x = b,
+*
+* where b and x are n element vectors and A is an n by n unit, or
+* non-unit, upper or lower triangular matrix, supplied in packed form.
+*
+* No test for singularity or near-singularity is included in this
+* routine. Such tests must be performed before calling this routine.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the equations to be solved as
+* follows:
+*
+* TRANS = 'N' or 'n' A*x = b.
+*
+* TRANS = 'T' or 't' A'*x = b.
+*
+* TRANS = 'C' or 'c' A'*x = b.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* AP - DOUBLE PRECISION array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+* respectively, and so on.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+* respectively, and so on.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element right-hand side vector b. On exit, X is overwritten
+* with the solution vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, K, KK, KX
+ LOGICAL NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTPSV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of AP are
+* accessed sequentially with one pass through AP.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := inv( A )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/AP( KK )
+ TEMP = X( J )
+ K = KK - 1
+ DO 10, I = J - 1, 1, -1
+ X( I ) = X( I ) - TEMP*AP( K )
+ K = K - 1
+ 10 CONTINUE
+ END IF
+ KK = KK - J
+ 20 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 40, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/AP( KK )
+ TEMP = X( JX )
+ IX = JX
+ DO 30, K = KK - 1, KK - J + 1, -1
+ IX = IX - INCX
+ X( IX ) = X( IX ) - TEMP*AP( K )
+ 30 CONTINUE
+ END IF
+ JX = JX - INCX
+ KK = KK - J
+ 40 CONTINUE
+ END IF
+ ELSE
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/AP( KK )
+ TEMP = X( J )
+ K = KK + 1
+ DO 50, I = J + 1, N
+ X( I ) = X( I ) - TEMP*AP( K )
+ K = K + 1
+ 50 CONTINUE
+ END IF
+ KK = KK + ( N - J + 1 )
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/AP( KK )
+ TEMP = X( JX )
+ IX = JX
+ DO 70, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ X( IX ) = X( IX ) - TEMP*AP( K )
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ KK = KK + ( N - J + 1 )
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := inv( A' )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = 1, N
+ TEMP = X( J )
+ K = KK
+ DO 90, I = 1, J - 1
+ TEMP = TEMP - AP( K )*X( I )
+ K = K + 1
+ 90 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK + J - 1 )
+ X( J ) = TEMP
+ KK = KK + J
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ DO 120, J = 1, N
+ TEMP = X( JX )
+ IX = KX
+ DO 110, K = KK, KK + J - 2
+ TEMP = TEMP - AP( K )*X( IX )
+ IX = IX + INCX
+ 110 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK + J - 1 )
+ X( JX ) = TEMP
+ JX = JX + INCX
+ KK = KK + J
+ 120 CONTINUE
+ END IF
+ ELSE
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 140, J = N, 1, -1
+ TEMP = X( J )
+ K = KK
+ DO 130, I = N, J + 1, -1
+ TEMP = TEMP - AP( K )*X( I )
+ K = K - 1
+ 130 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK - N + J )
+ X( J ) = TEMP
+ KK = KK - ( N - J + 1 )
+ 140 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 160, J = N, 1, -1
+ TEMP = X( JX )
+ IX = KX
+ DO 150, K = KK, KK - ( N - ( J + 1 ) ), -1
+ TEMP = TEMP - AP( K )*X( IX )
+ IX = IX - INCX
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK - N + J )
+ X( JX ) = TEMP
+ JX = JX - INCX
+ KK = KK - (N - J + 1 )
+ 160 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTPSV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtrmm.f b/2.3-1/src/fortran/blas/dtrmm.f
new file mode 100644
index 00000000..f98da46a
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtrmm.f
@@ -0,0 +1,355 @@
+ SUBROUTINE DTRMM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,
+ $ B, LDB )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
+ INTEGER M, N, LDA, LDB
+ DOUBLE PRECISION ALPHA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRMM performs one of the matrix-matrix operations
+*
+* B := alpha*op( A )*B, or B := alpha*B*op( A ),
+*
+* where alpha is a scalar, B is an m by n matrix, A is a unit, or
+* non-unit, upper or lower triangular matrix and op( A ) is one of
+*
+* op( A ) = A or op( A ) = A'.
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether op( A ) multiplies B from
+* the left or right as follows:
+*
+* SIDE = 'L' or 'l' B := alpha*op( A )*B.
+*
+* SIDE = 'R' or 'r' B := alpha*B*op( A ).
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix A is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n' op( A ) = A.
+*
+* TRANSA = 'T' or 't' op( A ) = A'.
+*
+* TRANSA = 'C' or 'c' op( A ) = A'.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit triangular
+* as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of B. M must be at
+* least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of B. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha. When alpha is
+* zero then A is not referenced and B need not be set before
+* entry.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
+* when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.
+* Before entry with UPLO = 'U' or 'u', the leading k by k
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading k by k
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+* then LDA must be at least max( 1, n ).
+* Unchanged on exit.
+*
+* B - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the matrix B, and on exit is overwritten by the
+* transformed matrix.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL LSIDE, NOUNIT, UPPER
+ INTEGER I, INFO, J, K, NROWA
+ DOUBLE PRECISION TEMP
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ LSIDE = LSAME( SIDE , 'L' )
+ IF( LSIDE )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ NOUNIT = LSAME( DIAG , 'N' )
+ UPPER = LSAME( UPLO , 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.LSIDE ).AND.
+ $ ( .NOT.LSAME( SIDE , 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( ( .NOT.LSAME( TRANSA, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'T' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'C' ) ) )THEN
+ INFO = 3
+ ELSE IF( ( .NOT.LSAME( DIAG , 'U' ) ).AND.
+ $ ( .NOT.LSAME( DIAG , 'N' ) ) )THEN
+ INFO = 4
+ ELSE IF( M .LT.0 )THEN
+ INFO = 5
+ ELSE IF( N .LT.0 )THEN
+ INFO = 6
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 9
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTRMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ B( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSIDE )THEN
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*A*B.
+*
+ IF( UPPER )THEN
+ DO 50, J = 1, N
+ DO 40, K = 1, M
+ IF( B( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*B( K, J )
+ DO 30, I = 1, K - 1
+ B( I, J ) = B( I, J ) + TEMP*A( I, K )
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( K, K )
+ B( K, J ) = TEMP
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ DO 70 K = M, 1, -1
+ IF( B( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*B( K, J )
+ B( K, J ) = TEMP
+ IF( NOUNIT )
+ $ B( K, J ) = B( K, J )*A( K, K )
+ DO 60, I = K + 1, M
+ B( I, J ) = B( I, J ) + TEMP*A( I, K )
+ 60 CONTINUE
+ END IF
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*B*A'.
+*
+ IF( UPPER )THEN
+ DO 110, J = 1, N
+ DO 100, I = M, 1, -1
+ TEMP = B( I, J )
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( I, I )
+ DO 90, K = 1, I - 1
+ TEMP = TEMP + A( K, I )*B( K, J )
+ 90 CONTINUE
+ B( I, J ) = ALPHA*TEMP
+ 100 CONTINUE
+ 110 CONTINUE
+ ELSE
+ DO 140, J = 1, N
+ DO 130, I = 1, M
+ TEMP = B( I, J )
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( I, I )
+ DO 120, K = I + 1, M
+ TEMP = TEMP + A( K, I )*B( K, J )
+ 120 CONTINUE
+ B( I, J ) = ALPHA*TEMP
+ 130 CONTINUE
+ 140 CONTINUE
+ END IF
+ END IF
+ ELSE
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*B*A.
+*
+ IF( UPPER )THEN
+ DO 180, J = N, 1, -1
+ TEMP = ALPHA
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 150, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 150 CONTINUE
+ DO 170, K = 1, J - 1
+ IF( A( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*A( K, J )
+ DO 160, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 160 CONTINUE
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ ELSE
+ DO 220, J = 1, N
+ TEMP = ALPHA
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 190, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 190 CONTINUE
+ DO 210, K = J + 1, N
+ IF( A( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*A( K, J )
+ DO 200, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 200 CONTINUE
+ END IF
+ 210 CONTINUE
+ 220 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*B*A'.
+*
+ IF( UPPER )THEN
+ DO 260, K = 1, N
+ DO 240, J = 1, K - 1
+ IF( A( J, K ).NE.ZERO )THEN
+ TEMP = ALPHA*A( J, K )
+ DO 230, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 230 CONTINUE
+ END IF
+ 240 CONTINUE
+ TEMP = ALPHA
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( K, K )
+ IF( TEMP.NE.ONE )THEN
+ DO 250, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 250 CONTINUE
+ END IF
+ 260 CONTINUE
+ ELSE
+ DO 300, K = N, 1, -1
+ DO 280, J = K + 1, N
+ IF( A( J, K ).NE.ZERO )THEN
+ TEMP = ALPHA*A( J, K )
+ DO 270, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 270 CONTINUE
+ END IF
+ 280 CONTINUE
+ TEMP = ALPHA
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( K, K )
+ IF( TEMP.NE.ONE )THEN
+ DO 290, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 290 CONTINUE
+ END IF
+ 300 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTRMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtrmv.f b/2.3-1/src/fortran/blas/dtrmv.f
new file mode 100644
index 00000000..3d5c61b2
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtrmv.f
@@ -0,0 +1,286 @@
+ SUBROUTINE DTRMV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRMV performs one of the matrix-vector operations
+*
+* x := A*x, or x := A'*x,
+*
+* where x is an n element vector and A is an n by n unit, or non-unit,
+* upper or lower triangular matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' x := A*x.
+*
+* TRANS = 'T' or 't' x := A'*x.
+*
+* TRANS = 'C' or 'c' x := A'*x.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x. On exit, X is overwritten with the
+* tranformed vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, KX
+ LOGICAL NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTRMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := A*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ DO 10, I = 1, J - 1
+ X( I ) = X( I ) + TEMP*A( I, J )
+ 10 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( J, J )
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 30, I = 1, J - 1
+ X( IX ) = X( IX ) + TEMP*A( I, J )
+ IX = IX + INCX
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( J, J )
+ END IF
+ JX = JX + INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ DO 50, I = N, J + 1, -1
+ X( I ) = X( I ) + TEMP*A( I, J )
+ 50 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( J, J )
+ END IF
+ 60 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 80, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 70, I = N, J + 1, -1
+ X( IX ) = X( IX ) + TEMP*A( I, J )
+ IX = IX - INCX
+ 70 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( J, J )
+ END IF
+ JX = JX - INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := A'*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = N, 1, -1
+ TEMP = X( J )
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 90, I = J - 1, 1, -1
+ TEMP = TEMP + A( I, J )*X( I )
+ 90 CONTINUE
+ X( J ) = TEMP
+ 100 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 120, J = N, 1, -1
+ TEMP = X( JX )
+ IX = JX
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 110, I = J - 1, 1, -1
+ IX = IX - INCX
+ TEMP = TEMP + A( I, J )*X( IX )
+ 110 CONTINUE
+ X( JX ) = TEMP
+ JX = JX - INCX
+ 120 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 140, J = 1, N
+ TEMP = X( J )
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 130, I = J + 1, N
+ TEMP = TEMP + A( I, J )*X( I )
+ 130 CONTINUE
+ X( J ) = TEMP
+ 140 CONTINUE
+ ELSE
+ JX = KX
+ DO 160, J = 1, N
+ TEMP = X( JX )
+ IX = JX
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 150, I = J + 1, N
+ IX = IX + INCX
+ TEMP = TEMP + A( I, J )*X( IX )
+ 150 CONTINUE
+ X( JX ) = TEMP
+ JX = JX + INCX
+ 160 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTRMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtrsm.f b/2.3-1/src/fortran/blas/dtrsm.f
new file mode 100644
index 00000000..e8425142
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtrsm.f
@@ -0,0 +1,378 @@
+ SUBROUTINE DTRSM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,
+ $ B, LDB )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
+ INTEGER M, N, LDA, LDB
+ DOUBLE PRECISION ALPHA
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRSM solves one of the matrix equations
+*
+* op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+*
+* where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+* non-unit, upper or lower triangular matrix and op( A ) is one of
+*
+* op( A ) = A or op( A ) = A'.
+*
+* The matrix X is overwritten on B.
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether op( A ) appears on the left
+* or right of X as follows:
+*
+* SIDE = 'L' or 'l' op( A )*X = alpha*B.
+*
+* SIDE = 'R' or 'r' X*op( A ) = alpha*B.
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix A is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n' op( A ) = A.
+*
+* TRANSA = 'T' or 't' op( A ) = A'.
+*
+* TRANSA = 'C' or 'c' op( A ) = A'.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit triangular
+* as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of B. M must be at
+* least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of B. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha. When alpha is
+* zero then A is not referenced and B need not be set before
+* entry.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
+* when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.
+* Before entry with UPLO = 'U' or 'u', the leading k by k
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading k by k
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+* then LDA must be at least max( 1, n ).
+* Unchanged on exit.
+*
+* B - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the right-hand side matrix B, and on exit is
+* overwritten by the solution matrix X.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL LSIDE, NOUNIT, UPPER
+ INTEGER I, INFO, J, K, NROWA
+ DOUBLE PRECISION TEMP
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ LSIDE = LSAME( SIDE , 'L' )
+ IF( LSIDE )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ NOUNIT = LSAME( DIAG , 'N' )
+ UPPER = LSAME( UPLO , 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.LSIDE ).AND.
+ $ ( .NOT.LSAME( SIDE , 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( ( .NOT.LSAME( TRANSA, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'T' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'C' ) ) )THEN
+ INFO = 3
+ ELSE IF( ( .NOT.LSAME( DIAG , 'U' ) ).AND.
+ $ ( .NOT.LSAME( DIAG , 'N' ) ) )THEN
+ INFO = 4
+ ELSE IF( M .LT.0 )THEN
+ INFO = 5
+ ELSE IF( N .LT.0 )THEN
+ INFO = 6
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 9
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTRSM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ B( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSIDE )THEN
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*inv( A )*B.
+*
+ IF( UPPER )THEN
+ DO 60, J = 1, N
+ IF( ALPHA.NE.ONE )THEN
+ DO 30, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 30 CONTINUE
+ END IF
+ DO 50, K = M, 1, -1
+ IF( B( K, J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ B( K, J ) = B( K, J )/A( K, K )
+ DO 40, I = 1, K - 1
+ B( I, J ) = B( I, J ) - B( K, J )*A( I, K )
+ 40 CONTINUE
+ END IF
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 100, J = 1, N
+ IF( ALPHA.NE.ONE )THEN
+ DO 70, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 70 CONTINUE
+ END IF
+ DO 90 K = 1, M
+ IF( B( K, J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ B( K, J ) = B( K, J )/A( K, K )
+ DO 80, I = K + 1, M
+ B( I, J ) = B( I, J ) - B( K, J )*A( I, K )
+ 80 CONTINUE
+ END IF
+ 90 CONTINUE
+ 100 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*inv( A' )*B.
+*
+ IF( UPPER )THEN
+ DO 130, J = 1, N
+ DO 120, I = 1, M
+ TEMP = ALPHA*B( I, J )
+ DO 110, K = 1, I - 1
+ TEMP = TEMP - A( K, I )*B( K, J )
+ 110 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( I, I )
+ B( I, J ) = TEMP
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 160, J = 1, N
+ DO 150, I = M, 1, -1
+ TEMP = ALPHA*B( I, J )
+ DO 140, K = I + 1, M
+ TEMP = TEMP - A( K, I )*B( K, J )
+ 140 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( I, I )
+ B( I, J ) = TEMP
+ 150 CONTINUE
+ 160 CONTINUE
+ END IF
+ END IF
+ ELSE
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*B*inv( A ).
+*
+ IF( UPPER )THEN
+ DO 210, J = 1, N
+ IF( ALPHA.NE.ONE )THEN
+ DO 170, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 170 CONTINUE
+ END IF
+ DO 190, K = 1, J - 1
+ IF( A( K, J ).NE.ZERO )THEN
+ DO 180, I = 1, M
+ B( I, J ) = B( I, J ) - A( K, J )*B( I, K )
+ 180 CONTINUE
+ END IF
+ 190 CONTINUE
+ IF( NOUNIT )THEN
+ TEMP = ONE/A( J, J )
+ DO 200, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 200 CONTINUE
+ END IF
+ 210 CONTINUE
+ ELSE
+ DO 260, J = N, 1, -1
+ IF( ALPHA.NE.ONE )THEN
+ DO 220, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 220 CONTINUE
+ END IF
+ DO 240, K = J + 1, N
+ IF( A( K, J ).NE.ZERO )THEN
+ DO 230, I = 1, M
+ B( I, J ) = B( I, J ) - A( K, J )*B( I, K )
+ 230 CONTINUE
+ END IF
+ 240 CONTINUE
+ IF( NOUNIT )THEN
+ TEMP = ONE/A( J, J )
+ DO 250, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 250 CONTINUE
+ END IF
+ 260 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*B*inv( A' ).
+*
+ IF( UPPER )THEN
+ DO 310, K = N, 1, -1
+ IF( NOUNIT )THEN
+ TEMP = ONE/A( K, K )
+ DO 270, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 270 CONTINUE
+ END IF
+ DO 290, J = 1, K - 1
+ IF( A( J, K ).NE.ZERO )THEN
+ TEMP = A( J, K )
+ DO 280, I = 1, M
+ B( I, J ) = B( I, J ) - TEMP*B( I, K )
+ 280 CONTINUE
+ END IF
+ 290 CONTINUE
+ IF( ALPHA.NE.ONE )THEN
+ DO 300, I = 1, M
+ B( I, K ) = ALPHA*B( I, K )
+ 300 CONTINUE
+ END IF
+ 310 CONTINUE
+ ELSE
+ DO 360, K = 1, N
+ IF( NOUNIT )THEN
+ TEMP = ONE/A( K, K )
+ DO 320, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 320 CONTINUE
+ END IF
+ DO 340, J = K + 1, N
+ IF( A( J, K ).NE.ZERO )THEN
+ TEMP = A( J, K )
+ DO 330, I = 1, M
+ B( I, J ) = B( I, J ) - TEMP*B( I, K )
+ 330 CONTINUE
+ END IF
+ 340 CONTINUE
+ IF( ALPHA.NE.ONE )THEN
+ DO 350, I = 1, M
+ B( I, K ) = ALPHA*B( I, K )
+ 350 CONTINUE
+ END IF
+ 360 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTRSM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dtrsv.f b/2.3-1/src/fortran/blas/dtrsv.f
new file mode 100644
index 00000000..9c3e90a9
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dtrsv.f
@@ -0,0 +1,289 @@
+ SUBROUTINE DTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRSV solves one of the systems of equations
+*
+* A*x = b, or A'*x = b,
+*
+* where b and x are n element vectors and A is an n by n unit, or
+* non-unit, upper or lower triangular matrix.
+*
+* No test for singularity or near-singularity is included in this
+* routine. Such tests must be performed before calling this routine.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the equations to be solved as
+* follows:
+*
+* TRANS = 'N' or 'n' A*x = b.
+*
+* TRANS = 'T' or 't' A'*x = b.
+*
+* TRANS = 'C' or 'c' A'*x = b.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+* X - DOUBLE PRECISION array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element right-hand side vector b. On exit, X is overwritten
+* with the solution vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ DOUBLE PRECISION TEMP
+ INTEGER I, INFO, IX, J, JX, KX
+ LOGICAL NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'DTRSV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := inv( A )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( J, J )
+ TEMP = X( J )
+ DO 10, I = J - 1, 1, -1
+ X( I ) = X( I ) - TEMP*A( I, J )
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 40, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( J, J )
+ TEMP = X( JX )
+ IX = JX
+ DO 30, I = J - 1, 1, -1
+ IX = IX - INCX
+ X( IX ) = X( IX ) - TEMP*A( I, J )
+ 30 CONTINUE
+ END IF
+ JX = JX - INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( J, J )
+ TEMP = X( J )
+ DO 50, I = J + 1, N
+ X( I ) = X( I ) - TEMP*A( I, J )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( J, J )
+ TEMP = X( JX )
+ IX = JX
+ DO 70, I = J + 1, N
+ IX = IX + INCX
+ X( IX ) = X( IX ) - TEMP*A( I, J )
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := inv( A' )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 100, J = 1, N
+ TEMP = X( J )
+ DO 90, I = 1, J - 1
+ TEMP = TEMP - A( I, J )*X( I )
+ 90 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ X( J ) = TEMP
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ DO 120, J = 1, N
+ TEMP = X( JX )
+ IX = KX
+ DO 110, I = 1, J - 1
+ TEMP = TEMP - A( I, J )*X( IX )
+ IX = IX + INCX
+ 110 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ X( JX ) = TEMP
+ JX = JX + INCX
+ 120 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 140, J = N, 1, -1
+ TEMP = X( J )
+ DO 130, I = N, J + 1, -1
+ TEMP = TEMP - A( I, J )*X( I )
+ 130 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ X( J ) = TEMP
+ 140 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 160, J = N, 1, -1
+ TEMP = X( JX )
+ IX = KX
+ DO 150, I = N, J + 1, -1
+ TEMP = TEMP - A( I, J )*X( IX )
+ IX = IX - INCX
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ X( JX ) = TEMP
+ JX = JX - INCX
+ 160 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTRSV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/dzasum.f b/2.3-1/src/fortran/blas/dzasum.f
new file mode 100644
index 00000000..d21c1ffc
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dzasum.f
@@ -0,0 +1,34 @@
+ double precision function dzasum(n,zx,incx)
+c
+c takes the sum of the absolute values.
+c jack dongarra, 3/11/78.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*)
+ double precision stemp,dcabs1
+ integer i,incx,ix,n
+c
+ dzasum = 0.0d0
+ stemp = 0.0d0
+ if( n.le.0 .or. incx.le.0 )return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ ix = 1
+ do 10 i = 1,n
+ stemp = stemp + dcabs1(zx(ix))
+ ix = ix + incx
+ 10 continue
+ dzasum = stemp
+ return
+c
+c code for increment equal to 1
+c
+ 20 do 30 i = 1,n
+ stemp = stemp + dcabs1(zx(i))
+ 30 continue
+ dzasum = stemp
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/dznrm2.f b/2.3-1/src/fortran/blas/dznrm2.f
new file mode 100644
index 00000000..205ce393
--- /dev/null
+++ b/2.3-1/src/fortran/blas/dznrm2.f
@@ -0,0 +1,67 @@
+ DOUBLE PRECISION FUNCTION DZNRM2( N, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+* .. Array Arguments ..
+ COMPLEX*16 X( * )
+* ..
+*
+* DZNRM2 returns the euclidean norm of a vector via the function
+* name, so that
+*
+* DZNRM2 := sqrt( conjg( x' )*x )
+*
+*
+*
+* -- This version written on 25-October-1982.
+* Modified on 14-October-1993 to inline the call to ZLASSQ.
+* Sven Hammarling, Nag Ltd.
+*
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE , ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* .. Local Scalars ..
+ INTEGER IX
+ DOUBLE PRECISION NORM, SCALE, SSQ, TEMP
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DIMAG, DBLE, SQRT
+* ..
+* .. Executable Statements ..
+ IF( N.LT.1 .OR. INCX.LT.1 )THEN
+ NORM = ZERO
+ ELSE
+ SCALE = ZERO
+ SSQ = ONE
+* The following loop is equivalent to this call to the LAPACK
+* auxiliary routine:
+* CALL ZLASSQ( N, X, INCX, SCALE, SSQ )
+*
+ DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX
+ IF( DBLE( X( IX ) ).NE.ZERO )THEN
+ TEMP = ABS( DBLE( X( IX ) ) )
+ IF( SCALE.LT.TEMP )THEN
+ SSQ = ONE + SSQ*( SCALE/TEMP )**2
+ SCALE = TEMP
+ ELSE
+ SSQ = SSQ + ( TEMP/SCALE )**2
+ END IF
+ END IF
+ IF( DIMAG( X( IX ) ).NE.ZERO )THEN
+ TEMP = ABS( DIMAG( X( IX ) ) )
+ IF( SCALE.LT.TEMP )THEN
+ SSQ = ONE + SSQ*( SCALE/TEMP )**2
+ SCALE = TEMP
+ ELSE
+ SSQ = SSQ + ( TEMP/SCALE )**2
+ END IF
+ END IF
+ 10 CONTINUE
+ NORM = SCALE * SQRT( SSQ )
+ END IF
+*
+ DZNRM2 = NORM
+ RETURN
+*
+* End of DZNRM2.
+*
+ END
diff --git a/2.3-1/src/fortran/blas/idamax.f b/2.3-1/src/fortran/blas/idamax.f
new file mode 100644
index 00000000..59d80dc4
--- /dev/null
+++ b/2.3-1/src/fortran/blas/idamax.f
@@ -0,0 +1,39 @@
+ integer function idamax(n,dx,incx)
+c
+c finds the index of element having max. absolute value.
+c jack dongarra, linpack, 3/11/78.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double precision dx(*),dmax
+ integer i,incx,ix,n
+c
+ idamax = 0
+ if( n.lt.1 .or. incx.le.0 ) return
+ idamax = 1
+ if(n.eq.1)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ ix = 1
+ dmax = dabs(dx(1))
+ ix = ix + incx
+ do 10 i = 2,n
+ if(dabs(dx(ix)).le.dmax) go to 5
+ idamax = i
+ dmax = dabs(dx(ix))
+ 5 ix = ix + incx
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 dmax = dabs(dx(1))
+ do 30 i = 2,n
+ if(dabs(dx(i)).le.dmax) go to 30
+ idamax = i
+ dmax = dabs(dx(i))
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/izamax.f b/2.3-1/src/fortran/blas/izamax.f
new file mode 100644
index 00000000..ec14f827
--- /dev/null
+++ b/2.3-1/src/fortran/blas/izamax.f
@@ -0,0 +1,41 @@
+ integer function izamax(n,zx,incx)
+c
+c finds the index of element having max. absolute value.
+c jack dongarra, 1/15/85.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*)
+ double precision smax
+ integer i,incx,ix,n
+ double precision dcabs1
+c
+ izamax = 0
+ if( n.lt.1 .or. incx.le.0 )return
+ izamax = 1
+ if(n.eq.1)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ ix = 1
+ smax = dcabs1(zx(1))
+ ix = ix + incx
+ do 10 i = 2,n
+ if(dcabs1(zx(ix)).le.smax) go to 5
+ izamax = i
+ smax = dcabs1(zx(ix))
+ 5 ix = ix + incx
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 smax = dcabs1(zx(1))
+ do 30 i = 2,n
+ if(dcabs1(zx(i)).le.smax) go to 30
+ izamax = i
+ smax = dcabs1(zx(i))
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/license.txt b/2.3-1/src/fortran/blas/license.txt
new file mode 100644
index 00000000..8014a5bd
--- /dev/null
+++ b/2.3-1/src/fortran/blas/license.txt
@@ -0,0 +1,6 @@
+This software is in the public domain
+
+
+More information:
+http://www.netlib.org/blas/faq.html#2
+http://packages.debian.org/changelogs/pool/main/b/blas/blas_1.1-14/blas.copyright \ No newline at end of file
diff --git a/2.3-1/src/fortran/blas/lsame.f b/2.3-1/src/fortran/blas/lsame.f
new file mode 100644
index 00000000..bf25d86f
--- /dev/null
+++ b/2.3-1/src/fortran/blas/lsame.f
@@ -0,0 +1,87 @@
+ LOGICAL FUNCTION LSAME( CA, CB )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* September 30, 1994
+*
+* .. Scalar Arguments ..
+ CHARACTER CA, CB
+* ..
+*
+* Purpose
+* =======
+*
+* LSAME returns .TRUE. if CA is the same letter as CB regardless of
+* case.
+*
+* Arguments
+* =========
+*
+* CA (input) CHARACTER*1
+* CB (input) CHARACTER*1
+* CA and CB specify the single characters to be compared.
+*
+* =====================================================================
+*
+* .. Intrinsic Functions ..
+ INTRINSIC ICHAR
+* ..
+* .. Local Scalars ..
+ INTEGER INTA, INTB, ZCODE
+* ..
+* .. Executable Statements ..
+*
+* Test if the characters are equal
+*
+ LSAME = CA.EQ.CB
+ IF( LSAME )
+ $ RETURN
+*
+* Now test for equivalence if both characters are alphabetic.
+*
+ ZCODE = ICHAR( 'Z' )
+*
+* Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+* machines, on which ICHAR returns a value with bit 8 set.
+* ICHAR('A') on Prime machines returns 193 which is the same as
+* ICHAR('A') on an EBCDIC machine.
+*
+ INTA = ICHAR( CA )
+ INTB = ICHAR( CB )
+*
+ IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
+*
+* ASCII is assumed - ZCODE is the ASCII code of either lower or
+* upper case 'Z'.
+*
+ IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
+ IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
+*
+ ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
+*
+* EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+* upper case 'Z'.
+*
+ IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
+ $ INTA.GE.145 .AND. INTA.LE.153 .OR.
+ $ INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
+ IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
+ $ INTB.GE.145 .AND. INTB.LE.153 .OR.
+ $ INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
+*
+ ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
+*
+* ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+* plus 128 of either lower or upper case 'Z'.
+*
+ IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
+ IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
+ END IF
+ LSAME = INTA.EQ.INTB
+*
+* RETURN
+*
+* End of LSAME
+*
+ END
diff --git a/2.3-1/src/fortran/blas/xerbla.f b/2.3-1/src/fortran/blas/xerbla.f
new file mode 100644
index 00000000..6e11175f
--- /dev/null
+++ b/2.3-1/src/fortran/blas/xerbla.f
@@ -0,0 +1,46 @@
+ SUBROUTINE XERBLA( SRNAME, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* September 30, 1994
+*
+* .. Scalar Arguments ..
+ CHARACTER*6 SRNAME
+ INTEGER INFO
+* ..
+*
+* Purpose
+* =======
+*
+* XERBLA is an error handler for the LAPACK routines.
+* It is called by an LAPACK routine if an input parameter has an
+* invalid value. A message is printed and execution stops.
+*
+* Installers may consider modifying the STOP statement in order to
+* call system-specific exception-handling facilities.
+*
+* Arguments
+* =========
+*
+* SRNAME (input) CHARACTER*6
+* The name of the routine which called XERBLA.
+*
+* INFO (input) INTEGER
+* The position of the invalid parameter in the parameter list
+* of the calling routine.
+*
+* =====================================================================
+*
+* .. Executable Statements ..
+*
+ WRITE( *, FMT = 9999 )SRNAME, INFO
+*
+ STOP
+*
+ 9999 FORMAT( ' ** On entry to ', A6, ' parameter number ', I2, ' had ',
+ $ 'an illegal value' )
+*
+* End of XERBLA
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zaxpy.f b/2.3-1/src/fortran/blas/zaxpy.f
new file mode 100644
index 00000000..4fa3b1e4
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zaxpy.f
@@ -0,0 +1,34 @@
+ subroutine zaxpy(n,za,zx,incx,zy,incy)
+c
+c constant times a vector plus a vector.
+c jack dongarra, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*),zy(*),za
+ integer i,incx,incy,ix,iy,n
+ double precision dcabs1
+ if(n.le.0)return
+ if (dcabs1(za) .eq. 0.0d0) return
+ if (incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ zy(iy) = zy(iy) + za*zx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ zy(i) = zy(i) + za*zx(i)
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zcopy.f b/2.3-1/src/fortran/blas/zcopy.f
new file mode 100644
index 00000000..9ccfa880
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zcopy.f
@@ -0,0 +1,33 @@
+ subroutine zcopy(n,zx,incx,zy,incy)
+c
+c copies a vector, x, to a vector, y.
+c jack dongarra, linpack, 4/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*),zy(*)
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ zy(iy) = zx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ zy(i) = zx(i)
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zdotc.f b/2.3-1/src/fortran/blas/zdotc.f
new file mode 100644
index 00000000..d6ac6853
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zdotc.f
@@ -0,0 +1,36 @@
+ double complex function zdotc(n,zx,incx,zy,incy)
+c
+c forms the dot product of a vector.
+c jack dongarra, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*),zy(*),ztemp
+ integer i,incx,incy,ix,iy,n
+ ztemp = (0.0d0,0.0d0)
+ zdotc = (0.0d0,0.0d0)
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ztemp = ztemp + dconjg(zx(ix))*zy(iy)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ zdotc = ztemp
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ ztemp = ztemp + dconjg(zx(i))*zy(i)
+ 30 continue
+ zdotc = ztemp
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zdotu.f b/2.3-1/src/fortran/blas/zdotu.f
new file mode 100644
index 00000000..329e9885
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zdotu.f
@@ -0,0 +1,36 @@
+ double complex function zdotu(n,zx,incx,zy,incy)
+c
+c forms the dot product of two vectors.
+c jack dongarra, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*),zy(*),ztemp
+ integer i,incx,incy,ix,iy,n
+ ztemp = (0.0d0,0.0d0)
+ zdotu = (0.0d0,0.0d0)
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ztemp = ztemp + zx(ix)*zy(iy)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ zdotu = ztemp
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ ztemp = ztemp + zx(i)*zy(i)
+ 30 continue
+ zdotu = ztemp
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zdscal.f b/2.3-1/src/fortran/blas/zdscal.f
new file mode 100644
index 00000000..8123424d
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zdscal.f
@@ -0,0 +1,30 @@
+ subroutine zdscal(n,da,zx,incx)
+c
+c scales a vector by a constant.
+c jack dongarra, 3/11/78.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*)
+ double precision da
+ integer i,incx,ix,n
+c
+ if( n.le.0 .or. incx.le.0 )return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ ix = 1
+ do 10 i = 1,n
+ zx(ix) = dcmplx(da,0.0d0)*zx(ix)
+ ix = ix + incx
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 do 30 i = 1,n
+ zx(i) = dcmplx(da,0.0d0)*zx(i)
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zgbmv.f b/2.3-1/src/fortran/blas/zgbmv.f
new file mode 100644
index 00000000..91ce9a60
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zgbmv.f
@@ -0,0 +1,322 @@
+ SUBROUTINE ZGBMV ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA, BETA
+ INTEGER INCX, INCY, KL, KU, LDA, M, N
+ CHARACTER*1 TRANS
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGBMV performs one of the matrix-vector operations
+*
+* y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, or
+*
+* y := alpha*conjg( A' )*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are vectors and A is an
+* m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*
+* Parameters
+* ==========
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
+*
+* TRANS = 'T' or 't' y := alpha*A'*x + beta*y.
+*
+* TRANS = 'C' or 'c' y := alpha*conjg( A' )*x + beta*y.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* KL - INTEGER.
+* On entry, KL specifies the number of sub-diagonals of the
+* matrix A. KL must satisfy 0 .le. KL.
+* Unchanged on exit.
+*
+* KU - INTEGER.
+* On entry, KU specifies the number of super-diagonals of the
+* matrix A. KU must satisfy 0 .le. KU.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry, the leading ( kl + ku + 1 ) by n part of the
+* array A must contain the matrix of coefficients, supplied
+* column by column, with the leading diagonal of the matrix in
+* row ( ku + 1 ) of the array, the first super-diagonal
+* starting at position 2 in row ku, the first sub-diagonal
+* starting at position 1 in row ( ku + 2 ), and so on.
+* Elements in the array A that do not correspond to elements
+* in the band matrix (such as the top left ku by ku triangle)
+* are not referenced.
+* The following program segment will transfer a band matrix
+* from conventional full matrix storage to band storage:
+*
+* DO 20, J = 1, N
+* K = KU + 1 - J
+* DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
+* A( K + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( kl + ku + 1 ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+* Before entry, the incremented array X must contain the
+* vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of DIMENSION at least
+* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+* Before entry, the incremented array Y must contain the
+* vector y. On exit, Y is overwritten by the updated vector y.
+*
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, IY, J, JX, JY, K, KUP1, KX, KY,
+ $ LENX, LENY
+ LOGICAL NOCONJ
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 1
+ ELSE IF( M.LT.0 )THEN
+ INFO = 2
+ ELSE IF( N.LT.0 )THEN
+ INFO = 3
+ ELSE IF( KL.LT.0 )THEN
+ INFO = 4
+ ELSE IF( KU.LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.( KL + KU + 1 ) )THEN
+ INFO = 8
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 10
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 13
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZGBMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+*
+* Set LENX and LENY, the lengths of the vectors x and y, and set
+* up the start points in X and Y.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ LENX = N
+ LENY = M
+ ELSE
+ LENX = M
+ LENY = N
+ END IF
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( LENX - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( LENY - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the band part of A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, LENY
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, LENY
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, LENY
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, LENY
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ KUP1 = KU + 1
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form y := alpha*A*x + y.
+*
+ JX = KX
+ IF( INCY.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ K = KUP1 - J
+ DO 50, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ Y( I ) = Y( I ) + TEMP*A( K + I, J )
+ 50 CONTINUE
+ END IF
+ JX = JX + INCX
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IY = KY
+ K = KUP1 - J
+ DO 70, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ Y( IY ) = Y( IY ) + TEMP*A( K + I, J )
+ IY = IY + INCY
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ IF( J.GT.KU )
+ $ KY = KY + INCY
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y := alpha*A'*x + y or y := alpha*conjg( A' )*x + y.
+*
+ JY = KY
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = 1, N
+ TEMP = ZERO
+ K = KUP1 - J
+ IF( NOCONJ )THEN
+ DO 90, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ TEMP = TEMP + A( K + I, J )*X( I )
+ 90 CONTINUE
+ ELSE
+ DO 100, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ TEMP = TEMP + DCONJG( A( K + I, J ) )*X( I )
+ 100 CONTINUE
+ END IF
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ 110 CONTINUE
+ ELSE
+ DO 140, J = 1, N
+ TEMP = ZERO
+ IX = KX
+ K = KUP1 - J
+ IF( NOCONJ )THEN
+ DO 120, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ TEMP = TEMP + A( K + I, J )*X( IX )
+ IX = IX + INCX
+ 120 CONTINUE
+ ELSE
+ DO 130, I = MAX( 1, J - KU ), MIN( M, J + KL )
+ TEMP = TEMP + DCONJG( A( K + I, J ) )*X( IX )
+ IX = IX + INCX
+ 130 CONTINUE
+ END IF
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ IF( J.GT.KU )
+ $ KX = KX + INCX
+ 140 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZGBMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zgemm.f b/2.3-1/src/fortran/blas/zgemm.f
new file mode 100644
index 00000000..09cd151e
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zgemm.f
@@ -0,0 +1,415 @@
+ SUBROUTINE ZGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 TRANSA, TRANSB
+ INTEGER M, N, K, LDA, LDB, LDC
+ COMPLEX*16 ALPHA, BETA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEMM performs one of the matrix-matrix operations
+*
+* C := alpha*op( A )*op( B ) + beta*C,
+*
+* where op( X ) is one of
+*
+* op( X ) = X or op( X ) = X' or op( X ) = conjg( X' ),
+*
+* alpha and beta are scalars, and A, B and C are matrices, with op( A )
+* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*
+* Parameters
+* ==========
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n', op( A ) = A.
+*
+* TRANSA = 'T' or 't', op( A ) = A'.
+*
+* TRANSA = 'C' or 'c', op( A ) = conjg( A' ).
+*
+* Unchanged on exit.
+*
+* TRANSB - CHARACTER*1.
+* On entry, TRANSB specifies the form of op( B ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSB = 'N' or 'n', op( B ) = B.
+*
+* TRANSB = 'T' or 't', op( B ) = B'.
+*
+* TRANSB = 'C' or 'c', op( B ) = conjg( B' ).
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix
+* op( A ) and of the matrix C. M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix
+* op( B ) and the number of columns of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry, K specifies the number of columns of the matrix
+* op( A ) and the number of rows of the matrix op( B ). K must
+* be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANSA = 'N' or 'n', and is m otherwise.
+* Before entry with TRANSA = 'N' or 'n', the leading m by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by m part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANSA = 'N' or 'n' then
+* LDA must be at least max( 1, m ), otherwise LDA must be at
+* least max( 1, k ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is
+* n when TRANSB = 'N' or 'n', and is k otherwise.
+* Before entry with TRANSB = 'N' or 'n', the leading k by n
+* part of the array B must contain the matrix B, otherwise
+* the leading n by k part of the array B must contain the
+* matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. When TRANSB = 'N' or 'n' then
+* LDB must be at least max( 1, k ), otherwise LDB must be at
+* least max( 1, n ).
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then C need not be set on input.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry, the leading m by n part of the array C must
+* contain the matrix C, except when beta is zero, in which
+* case C need not be set on entry.
+* On exit, the array C is overwritten by the m by n matrix
+* ( alpha*op( A )*op( B ) + beta*C ).
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* .. Local Scalars ..
+ LOGICAL CONJA, CONJB, NOTA, NOTB
+ INTEGER I, INFO, J, L, NCOLA, NROWA, NROWB
+ COMPLEX*16 TEMP
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Set NOTA and NOTB as true if A and B respectively are not
+* conjugated or transposed, set CONJA and CONJB as true if A and
+* B respectively are to be transposed but not conjugated and set
+* NROWA, NCOLA and NROWB as the number of rows and columns of A
+* and the number of rows of B respectively.
+*
+ NOTA = LSAME( TRANSA, 'N' )
+ NOTB = LSAME( TRANSB, 'N' )
+ CONJA = LSAME( TRANSA, 'C' )
+ CONJB = LSAME( TRANSB, 'C' )
+ IF( NOTA )THEN
+ NROWA = M
+ NCOLA = K
+ ELSE
+ NROWA = K
+ NCOLA = M
+ END IF
+ IF( NOTB )THEN
+ NROWB = K
+ ELSE
+ NROWB = N
+ END IF
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ( .NOT.NOTA ).AND.
+ $ ( .NOT.CONJA ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'T' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.NOTB ).AND.
+ $ ( .NOT.CONJB ).AND.
+ $ ( .NOT.LSAME( TRANSB, 'T' ) ) )THEN
+ INFO = 2
+ ELSE IF( M .LT.0 )THEN
+ INFO = 3
+ ELSE IF( N .LT.0 )THEN
+ INFO = 4
+ ELSE IF( K .LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 8
+ ELSE IF( LDB.LT.MAX( 1, NROWB ) )THEN
+ INFO = 10
+ ELSE IF( LDC.LT.MAX( 1, M ) )THEN
+ INFO = 13
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZGEMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( NOTB )THEN
+ IF( NOTA )THEN
+*
+* Form C := alpha*A*B + beta*C.
+*
+ DO 90, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 50, I = 1, M
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 60, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 60 CONTINUE
+ END IF
+ DO 80, L = 1, K
+ IF( B( L, J ).NE.ZERO )THEN
+ TEMP = ALPHA*B( L, J )
+ DO 70, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 70 CONTINUE
+ END IF
+ 80 CONTINUE
+ 90 CONTINUE
+ ELSE IF( CONJA )THEN
+*
+* Form C := alpha*conjg( A' )*B + beta*C.
+*
+ DO 120, J = 1, N
+ DO 110, I = 1, M
+ TEMP = ZERO
+ DO 100, L = 1, K
+ TEMP = TEMP + DCONJG( A( L, I ) )*B( L, J )
+ 100 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 110 CONTINUE
+ 120 CONTINUE
+ ELSE
+*
+* Form C := alpha*A'*B + beta*C
+*
+ DO 150, J = 1, N
+ DO 140, I = 1, M
+ TEMP = ZERO
+ DO 130, L = 1, K
+ TEMP = TEMP + A( L, I )*B( L, J )
+ 130 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 140 CONTINUE
+ 150 CONTINUE
+ END IF
+ ELSE IF( NOTA )THEN
+ IF( CONJB )THEN
+*
+* Form C := alpha*A*conjg( B' ) + beta*C.
+*
+ DO 200, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 160, I = 1, M
+ C( I, J ) = ZERO
+ 160 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 170, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 170 CONTINUE
+ END IF
+ DO 190, L = 1, K
+ IF( B( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( B( J, L ) )
+ DO 180, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 180 CONTINUE
+ END IF
+ 190 CONTINUE
+ 200 CONTINUE
+ ELSE
+*
+* Form C := alpha*A*B' + beta*C
+*
+ DO 250, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 210, I = 1, M
+ C( I, J ) = ZERO
+ 210 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 220, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 220 CONTINUE
+ END IF
+ DO 240, L = 1, K
+ IF( B( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*B( J, L )
+ DO 230, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 230 CONTINUE
+ END IF
+ 240 CONTINUE
+ 250 CONTINUE
+ END IF
+ ELSE IF( CONJA )THEN
+ IF( CONJB )THEN
+*
+* Form C := alpha*conjg( A' )*conjg( B' ) + beta*C.
+*
+ DO 280, J = 1, N
+ DO 270, I = 1, M
+ TEMP = ZERO
+ DO 260, L = 1, K
+ TEMP = TEMP +
+ $ DCONJG( A( L, I ) )*DCONJG( B( J, L ) )
+ 260 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 270 CONTINUE
+ 280 CONTINUE
+ ELSE
+*
+* Form C := alpha*conjg( A' )*B' + beta*C
+*
+ DO 310, J = 1, N
+ DO 300, I = 1, M
+ TEMP = ZERO
+ DO 290, L = 1, K
+ TEMP = TEMP + DCONJG( A( L, I ) )*B( J, L )
+ 290 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 300 CONTINUE
+ 310 CONTINUE
+ END IF
+ ELSE
+ IF( CONJB )THEN
+*
+* Form C := alpha*A'*conjg( B' ) + beta*C
+*
+ DO 340, J = 1, N
+ DO 330, I = 1, M
+ TEMP = ZERO
+ DO 320, L = 1, K
+ TEMP = TEMP + A( L, I )*DCONJG( B( J, L ) )
+ 320 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 330 CONTINUE
+ 340 CONTINUE
+ ELSE
+*
+* Form C := alpha*A'*B' + beta*C
+*
+ DO 370, J = 1, N
+ DO 360, I = 1, M
+ TEMP = ZERO
+ DO 350, L = 1, K
+ TEMP = TEMP + A( L, I )*B( J, L )
+ 350 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 360 CONTINUE
+ 370 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZGEMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zgemv.f b/2.3-1/src/fortran/blas/zgemv.f
new file mode 100644
index 00000000..014a5e02
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zgemv.f
@@ -0,0 +1,281 @@
+ SUBROUTINE ZGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA, BETA
+ INTEGER INCX, INCY, LDA, M, N
+ CHARACTER*1 TRANS
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEMV performs one of the matrix-vector operations
+*
+* y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, or
+*
+* y := alpha*conjg( A' )*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are vectors and A is an
+* m by n matrix.
+*
+* Parameters
+* ==========
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
+*
+* TRANS = 'T' or 't' y := alpha*A'*x + beta*y.
+*
+* TRANS = 'C' or 'c' y := alpha*conjg( A' )*x + beta*y.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry, the leading m by n part of the array A must
+* contain the matrix of coefficients.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+* Before entry, the incremented array X must contain the
+* vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of DIMENSION at least
+* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+* and at least
+* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+* Before entry with BETA non-zero, the incremented array Y
+* must contain the vector y. On exit, Y is overwritten by the
+* updated vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, IY, J, JX, JY, KX, KY, LENX, LENY
+ LOGICAL NOCONJ
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 1
+ ELSE IF( M.LT.0 )THEN
+ INFO = 2
+ ELSE IF( N.LT.0 )THEN
+ INFO = 3
+ ELSE IF( LDA.LT.MAX( 1, M ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZGEMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+*
+* Set LENX and LENY, the lengths of the vectors x and y, and set
+* up the start points in X and Y.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ LENX = N
+ LENY = M
+ ELSE
+ LENX = M
+ LENY = N
+ END IF
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( LENX - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( LENY - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, LENY
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, LENY
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, LENY
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, LENY
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form y := alpha*A*x + y.
+*
+ JX = KX
+ IF( INCY.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ DO 50, I = 1, M
+ Y( I ) = Y( I ) + TEMP*A( I, J )
+ 50 CONTINUE
+ END IF
+ JX = JX + INCX
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*X( JX )
+ IY = KY
+ DO 70, I = 1, M
+ Y( IY ) = Y( IY ) + TEMP*A( I, J )
+ IY = IY + INCY
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y := alpha*A'*x + y or y := alpha*conjg( A' )*x + y.
+*
+ JY = KY
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = 1, N
+ TEMP = ZERO
+ IF( NOCONJ )THEN
+ DO 90, I = 1, M
+ TEMP = TEMP + A( I, J )*X( I )
+ 90 CONTINUE
+ ELSE
+ DO 100, I = 1, M
+ TEMP = TEMP + DCONJG( A( I, J ) )*X( I )
+ 100 CONTINUE
+ END IF
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ 110 CONTINUE
+ ELSE
+ DO 140, J = 1, N
+ TEMP = ZERO
+ IX = KX
+ IF( NOCONJ )THEN
+ DO 120, I = 1, M
+ TEMP = TEMP + A( I, J )*X( IX )
+ IX = IX + INCX
+ 120 CONTINUE
+ ELSE
+ DO 130, I = 1, M
+ TEMP = TEMP + DCONJG( A( I, J ) )*X( IX )
+ IX = IX + INCX
+ 130 CONTINUE
+ END IF
+ Y( JY ) = Y( JY ) + ALPHA*TEMP
+ JY = JY + INCY
+ 140 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZGEMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zgerc.f b/2.3-1/src/fortran/blas/zgerc.f
new file mode 100644
index 00000000..968c5b47
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zgerc.f
@@ -0,0 +1,157 @@
+ SUBROUTINE ZGERC ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX, INCY, LDA, M, N
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGERC performs the rank 1 operation
+*
+* A := alpha*x*conjg( y' ) + A,
+*
+* where alpha is a scalar, x is an m element vector, y is an n element
+* vector and A is an m by n matrix.
+*
+* Parameters
+* ==========
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( m - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the m
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry, the leading m by n part of the array A must
+* contain the matrix of coefficients. On exit, A is
+* overwritten by the updated matrix.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JY, KX
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( M.LT.0 )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( LDA.LT.MAX( 1, M ) )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZGERC ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( INCY.GT.0 )THEN
+ JY = 1
+ ELSE
+ JY = 1 - ( N - 1 )*INCY
+ END IF
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( Y( JY ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( Y( JY ) )
+ DO 10, I = 1, M
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 10 CONTINUE
+ END IF
+ JY = JY + INCY
+ 20 CONTINUE
+ ELSE
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( M - 1 )*INCX
+ END IF
+ DO 40, J = 1, N
+ IF( Y( JY ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( Y( JY ) )
+ IX = KX
+ DO 30, I = 1, M
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ END IF
+ JY = JY + INCY
+ 40 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZGERC .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zgeru.f b/2.3-1/src/fortran/blas/zgeru.f
new file mode 100644
index 00000000..5283af64
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zgeru.f
@@ -0,0 +1,157 @@
+ SUBROUTINE ZGERU ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX, INCY, LDA, M, N
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGERU performs the rank 1 operation
+*
+* A := alpha*x*y' + A,
+*
+* where alpha is a scalar, x is an m element vector, y is an n element
+* vector and A is an m by n matrix.
+*
+* Parameters
+* ==========
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix A.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( m - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the m
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry, the leading m by n part of the array A must
+* contain the matrix of coefficients. On exit, A is
+* overwritten by the updated matrix.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JY, KX
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( M.LT.0 )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( LDA.LT.MAX( 1, M ) )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZGERU ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( INCY.GT.0 )THEN
+ JY = 1
+ ELSE
+ JY = 1 - ( N - 1 )*INCY
+ END IF
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( Y( JY ).NE.ZERO )THEN
+ TEMP = ALPHA*Y( JY )
+ DO 10, I = 1, M
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 10 CONTINUE
+ END IF
+ JY = JY + INCY
+ 20 CONTINUE
+ ELSE
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( M - 1 )*INCX
+ END IF
+ DO 40, J = 1, N
+ IF( Y( JY ).NE.ZERO )THEN
+ TEMP = ALPHA*Y( JY )
+ IX = KX
+ DO 30, I = 1, M
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ END IF
+ JY = JY + INCY
+ 40 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZGERU .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zhbmv.f b/2.3-1/src/fortran/blas/zhbmv.f
new file mode 100644
index 00000000..1c044936
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zhbmv.f
@@ -0,0 +1,309 @@
+ SUBROUTINE ZHBMV ( UPLO, N, K, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA, BETA
+ INTEGER INCX, INCY, K, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHBMV performs the matrix-vector operation
+*
+* y := alpha*A*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are n element vectors and
+* A is an n by n hermitian band matrix, with k super-diagonals.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the band matrix A is being supplied as
+* follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* being supplied.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* being supplied.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry, K specifies the number of super-diagonals of the
+* matrix A. K must satisfy 0 .le. K.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+* by n part of the array A must contain the upper triangular
+* band part of the hermitian matrix, supplied column by
+* column, with the leading diagonal of the matrix in row
+* ( k + 1 ) of the array, the first super-diagonal starting at
+* position 2 in row k, and so on. The top left k by k triangle
+* of the array A is not referenced.
+* The following program segment will transfer the upper
+* triangular part of a hermitian band matrix from conventional
+* full matrix storage to band storage:
+*
+* DO 20, J = 1, N
+* M = K + 1 - J
+* DO 10, I = MAX( 1, J - K ), J
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+* by n part of the array A must contain the lower triangular
+* band part of the hermitian matrix, supplied column by
+* column, with the leading diagonal of the matrix in row 1 of
+* the array, the first sub-diagonal starting at position 1 in
+* row 2, and so on. The bottom right k by k triangle of the
+* array A is not referenced.
+* The following program segment will transfer the lower
+* triangular part of a hermitian band matrix from conventional
+* full matrix storage to band storage:
+*
+* DO 20, J = 1, N
+* M = 1 - J
+* DO 10, I = J, MIN( N, J + K )
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Note that the imaginary parts of the diagonal elements need
+* not be set and are assumed to be zero.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( k + 1 ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the
+* vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of DIMENSION at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the
+* vector y. On exit, Y is overwritten by the updated vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, KPLUS1, KX, KY, L
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( K.LT.0 )THEN
+ INFO = 3
+ ELSE IF( LDA.LT.( K + 1 ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHBMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set up the start points in X and Y.
+*
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of the array A
+* are accessed sequentially with one pass through A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, N
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, N
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, N
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, N
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form y when upper triangle of A is stored.
+*
+ KPLUS1 = K + 1
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ L = KPLUS1 - J
+ DO 50, I = MAX( 1, J - K ), J - 1
+ Y( I ) = Y( I ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + DCONJG( A( L + I, J ) )*X( I )
+ 50 CONTINUE
+ Y( J ) = Y( J ) + TEMP1*DBLE( A( KPLUS1, J ) )
+ $ + ALPHA*TEMP2
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 80, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ IX = KX
+ IY = KY
+ L = KPLUS1 - J
+ DO 70, I = MAX( 1, J - K ), J - 1
+ Y( IY ) = Y( IY ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + DCONJG( A( L + I, J ) )*X( IX )
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ Y( JY ) = Y( JY ) + TEMP1*DBLE( A( KPLUS1, J ) )
+ $ + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ IF( J.GT.K )THEN
+ KX = KX + INCX
+ KY = KY + INCY
+ END IF
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y when lower triangle of A is stored.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 100, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ Y( J ) = Y( J ) + TEMP1*DBLE( A( 1, J ) )
+ L = 1 - J
+ DO 90, I = J + 1, MIN( N, J + K )
+ Y( I ) = Y( I ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + DCONJG( A( L + I, J ) )*X( I )
+ 90 CONTINUE
+ Y( J ) = Y( J ) + ALPHA*TEMP2
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 120, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ Y( JY ) = Y( JY ) + TEMP1*DBLE( A( 1, J ) )
+ L = 1 - J
+ IX = JX
+ IY = JY
+ DO 110, I = J + 1, MIN( N, J + K )
+ IX = IX + INCX
+ IY = IY + INCY
+ Y( IY ) = Y( IY ) + TEMP1*A( L + I, J )
+ TEMP2 = TEMP2 + DCONJG( A( L + I, J ) )*X( IX )
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHBMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zhemm.f b/2.3-1/src/fortran/blas/zhemm.f
new file mode 100644
index 00000000..d3912c08
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zhemm.f
@@ -0,0 +1,304 @@
+ SUBROUTINE ZHEMM ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO
+ INTEGER M, N, LDA, LDB, LDC
+ COMPLEX*16 ALPHA, BETA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHEMM performs one of the matrix-matrix operations
+*
+* C := alpha*A*B + beta*C,
+*
+* or
+*
+* C := alpha*B*A + beta*C,
+*
+* where alpha and beta are scalars, A is an hermitian matrix and B and
+* C are m by n matrices.
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether the hermitian matrix A
+* appears on the left or right in the operation as follows:
+*
+* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
+*
+* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the hermitian matrix A is to be
+* referenced as follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of the
+* hermitian matrix is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of the
+* hermitian matrix is to be referenced.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix C.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix C.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* m when SIDE = 'L' or 'l' and is n otherwise.
+* Before entry with SIDE = 'L' or 'l', the m by m part of
+* the array A must contain the hermitian matrix, such that
+* when UPLO = 'U' or 'u', the leading m by m upper triangular
+* part of the array A must contain the upper triangular part
+* of the hermitian matrix and the strictly lower triangular
+* part of A is not referenced, and when UPLO = 'L' or 'l',
+* the leading m by m lower triangular part of the array A
+* must contain the lower triangular part of the hermitian
+* matrix and the strictly upper triangular part of A is not
+* referenced.
+* Before entry with SIDE = 'R' or 'r', the n by n part of
+* the array A must contain the hermitian matrix, such that
+* when UPLO = 'U' or 'u', the leading n by n upper triangular
+* part of the array A must contain the upper triangular part
+* of the hermitian matrix and the strictly lower triangular
+* part of A is not referenced, and when UPLO = 'L' or 'l',
+* the leading n by n lower triangular part of the array A
+* must contain the lower triangular part of the hermitian
+* matrix and the strictly upper triangular part of A is not
+* referenced.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), otherwise LDA must be at
+* least max( 1, n ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then C need not be set on input.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry, the leading m by n part of the array C must
+* contain the matrix C, except when beta is zero, in which
+* case C need not be set on entry.
+* On exit, the array C is overwritten by the m by n updated
+* matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, DBLE
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, K, NROWA
+ COMPLEX*16 TEMP1, TEMP2
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Set NROWA as the number of rows of A.
+*
+ IF( LSAME( SIDE, 'L' ) )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ( .NOT.LSAME( SIDE, 'L' ) ).AND.
+ $ ( .NOT.LSAME( SIDE, 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO, 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( M .LT.0 )THEN
+ INFO = 3
+ ELSE IF( N .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 9
+ ELSE IF( LDC.LT.MAX( 1, M ) )THEN
+ INFO = 12
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHEMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( SIDE, 'L' ) )THEN
+*
+* Form C := alpha*A*B + beta*C.
+*
+ IF( UPPER )THEN
+ DO 70, J = 1, N
+ DO 60, I = 1, M
+ TEMP1 = ALPHA*B( I, J )
+ TEMP2 = ZERO
+ DO 50, K = 1, I - 1
+ C( K, J ) = C( K, J ) + TEMP1*A( K, I )
+ TEMP2 = TEMP2 +
+ $ B( K, J )*DCONJG( A( K, I ) )
+ 50 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = TEMP1*DBLE( A( I, I ) ) +
+ $ ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ TEMP1*DBLE( A( I, I ) ) +
+ $ ALPHA*TEMP2
+ END IF
+ 60 CONTINUE
+ 70 CONTINUE
+ ELSE
+ DO 100, J = 1, N
+ DO 90, I = M, 1, -1
+ TEMP1 = ALPHA*B( I, J )
+ TEMP2 = ZERO
+ DO 80, K = I + 1, M
+ C( K, J ) = C( K, J ) + TEMP1*A( K, I )
+ TEMP2 = TEMP2 +
+ $ B( K, J )*DCONJG( A( K, I ) )
+ 80 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = TEMP1*DBLE( A( I, I ) ) +
+ $ ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ TEMP1*DBLE( A( I, I ) ) +
+ $ ALPHA*TEMP2
+ END IF
+ 90 CONTINUE
+ 100 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*B*A + beta*C.
+*
+ DO 170, J = 1, N
+ TEMP1 = ALPHA*DBLE( A( J, J ) )
+ IF( BETA.EQ.ZERO )THEN
+ DO 110, I = 1, M
+ C( I, J ) = TEMP1*B( I, J )
+ 110 CONTINUE
+ ELSE
+ DO 120, I = 1, M
+ C( I, J ) = BETA*C( I, J ) + TEMP1*B( I, J )
+ 120 CONTINUE
+ END IF
+ DO 140, K = 1, J - 1
+ IF( UPPER )THEN
+ TEMP1 = ALPHA*A( K, J )
+ ELSE
+ TEMP1 = ALPHA*DCONJG( A( J, K ) )
+ END IF
+ DO 130, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP1*B( I, K )
+ 130 CONTINUE
+ 140 CONTINUE
+ DO 160, K = J + 1, N
+ IF( UPPER )THEN
+ TEMP1 = ALPHA*DCONJG( A( J, K ) )
+ ELSE
+ TEMP1 = ALPHA*A( K, J )
+ END IF
+ DO 150, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP1*B( I, K )
+ 150 CONTINUE
+ 160 CONTINUE
+ 170 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZHEMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zhemv.f b/2.3-1/src/fortran/blas/zhemv.f
new file mode 100644
index 00000000..54aa7b90
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zhemv.f
@@ -0,0 +1,266 @@
+ SUBROUTINE ZHEMV ( UPLO, N, ALPHA, A, LDA, X, INCX,
+ $ BETA, Y, INCY )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA, BETA
+ INTEGER INCX, INCY, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHEMV performs the matrix-vector operation
+*
+* y := alpha*A*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are n element vectors and
+* A is an n by n hermitian matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array A is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of A
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of A
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular part of the hermitian matrix and the strictly
+* lower triangular part of A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular part of the hermitian matrix and the strictly
+* upper triangular part of A is not referenced.
+* Note that the imaginary parts of the diagonal elements need
+* not be set and are assumed to be zero.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y. On exit, Y is overwritten by the updated
+* vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 5
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 10
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHEMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set up the start points in X and Y.
+*
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the triangular part
+* of A.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, N
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, N
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, N
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, N
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form y when A is stored in upper triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ DO 50, I = 1, J - 1
+ Y( I ) = Y( I ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + DCONJG( A( I, J ) )*X( I )
+ 50 CONTINUE
+ Y( J ) = Y( J ) + TEMP1*DBLE( A( J, J ) ) + ALPHA*TEMP2
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 80, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ IX = KX
+ IY = KY
+ DO 70, I = 1, J - 1
+ Y( IY ) = Y( IY ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + DCONJG( A( I, J ) )*X( IX )
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ Y( JY ) = Y( JY ) + TEMP1*DBLE( A( J, J ) ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y when A is stored in lower triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 100, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ Y( J ) = Y( J ) + TEMP1*DBLE( A( J, J ) )
+ DO 90, I = J + 1, N
+ Y( I ) = Y( I ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + DCONJG( A( I, J ) )*X( I )
+ 90 CONTINUE
+ Y( J ) = Y( J ) + ALPHA*TEMP2
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 120, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ Y( JY ) = Y( JY ) + TEMP1*DBLE( A( J, J ) )
+ IX = JX
+ IY = JY
+ DO 110, I = J + 1, N
+ IX = IX + INCX
+ IY = IY + INCY
+ Y( IY ) = Y( IY ) + TEMP1*A( I, J )
+ TEMP2 = TEMP2 + DCONJG( A( I, J ) )*X( IX )
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHEMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zher.f b/2.3-1/src/fortran/blas/zher.f
new file mode 100644
index 00000000..fcf40a5e
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zher.f
@@ -0,0 +1,212 @@
+ SUBROUTINE ZHER ( UPLO, N, ALPHA, X, INCX, A, LDA )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHER performs the hermitian rank 1 operation
+*
+* A := alpha*x*conjg( x' ) + A,
+*
+* where alpha is a real scalar, x is an n element vector and A is an
+* n by n hermitian matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array A is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of A
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of A
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular part of the hermitian matrix and the strictly
+* lower triangular part of A is not referenced. On exit, the
+* upper triangular part of the array A is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular part of the hermitian matrix and the strictly
+* upper triangular part of A is not referenced. On exit, the
+* lower triangular part of the array A is overwritten by the
+* lower triangular part of the updated matrix.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero, and on exit they
+* are set to zero.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, KX
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHER ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.DBLE( ZERO ) ) )
+ $ RETURN
+*
+* Set the start point in X if the increment is not unity.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the triangular part
+* of A.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when A is stored in upper triangle.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( J ) )
+ DO 10, I = 1, J - 1
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 10 CONTINUE
+ A( J, J ) = DBLE( A( J, J ) ) + DBLE( X( J )*TEMP )
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( JX ) )
+ IX = KX
+ DO 30, I = 1, J - 1
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ A( J, J ) = DBLE( A( J, J ) ) + DBLE( X( JX )*TEMP )
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ JX = JX + INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when A is stored in lower triangle.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( J ) )
+ A( J, J ) = DBLE( A( J, J ) ) + DBLE( TEMP*X( J ) )
+ DO 50, I = J + 1, N
+ A( I, J ) = A( I, J ) + X( I )*TEMP
+ 50 CONTINUE
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( JX ) )
+ A( J, J ) = DBLE( A( J, J ) ) + DBLE( TEMP*X( JX ) )
+ IX = JX
+ DO 70, I = J + 1, N
+ IX = IX + INCX
+ A( I, J ) = A( I, J ) + X( IX )*TEMP
+ 70 CONTINUE
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHER .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zher2.f b/2.3-1/src/fortran/blas/zher2.f
new file mode 100644
index 00000000..06acdff7
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zher2.f
@@ -0,0 +1,249 @@
+ SUBROUTINE ZHER2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX, INCY, LDA, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHER2 performs the hermitian rank 2 operation
+*
+* A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,
+*
+* where alpha is a scalar, x and y are n element vectors and A is an n
+* by n hermitian matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array A is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of A
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of A
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular part of the hermitian matrix and the strictly
+* lower triangular part of A is not referenced. On exit, the
+* upper triangular part of the array A is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular part of the hermitian matrix and the strictly
+* upper triangular part of A is not referenced. On exit, the
+* lower triangular part of the array A is overwritten by the
+* lower triangular part of the updated matrix.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero, and on exit they
+* are set to zero.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHER2 ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Set up the start points in X and Y if the increments are not both
+* unity.
+*
+ IF( ( INCX.NE.1 ).OR.( INCY.NE.1 ) )THEN
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+ JX = KX
+ JY = KY
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through the triangular part
+* of A.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when A is stored in the upper triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 20, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( J ) )
+ TEMP2 = DCONJG( ALPHA*X( J ) )
+ DO 10, I = 1, J - 1
+ A( I, J ) = A( I, J ) + X( I )*TEMP1 + Y( I )*TEMP2
+ 10 CONTINUE
+ A( J, J ) = DBLE( A( J, J ) ) +
+ $ DBLE( X( J )*TEMP1 + Y( J )*TEMP2 )
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( JY ) )
+ TEMP2 = DCONJG( ALPHA*X( JX ) )
+ IX = KX
+ IY = KY
+ DO 30, I = 1, J - 1
+ A( I, J ) = A( I, J ) + X( IX )*TEMP1
+ $ + Y( IY )*TEMP2
+ IX = IX + INCX
+ IY = IY + INCY
+ 30 CONTINUE
+ A( J, J ) = DBLE( A( J, J ) ) +
+ $ DBLE( X( JX )*TEMP1 + Y( JY )*TEMP2 )
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when A is stored in the lower triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( J ) )
+ TEMP2 = DCONJG( ALPHA*X( J ) )
+ A( J, J ) = DBLE( A( J, J ) ) +
+ $ DBLE( X( J )*TEMP1 + Y( J )*TEMP2 )
+ DO 50, I = J + 1, N
+ A( I, J ) = A( I, J ) + X( I )*TEMP1 + Y( I )*TEMP2
+ 50 CONTINUE
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( JY ) )
+ TEMP2 = DCONJG( ALPHA*X( JX ) )
+ A( J, J ) = DBLE( A( J, J ) ) +
+ $ DBLE( X( JX )*TEMP1 + Y( JY )*TEMP2 )
+ IX = JX
+ IY = JY
+ DO 70, I = J + 1, N
+ IX = IX + INCX
+ IY = IY + INCY
+ A( I, J ) = A( I, J ) + X( IX )*TEMP1
+ $ + Y( IY )*TEMP2
+ 70 CONTINUE
+ ELSE
+ A( J, J ) = DBLE( A( J, J ) )
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHER2 .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zher2k.f b/2.3-1/src/fortran/blas/zher2k.f
new file mode 100644
index 00000000..408d75cf
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zher2k.f
@@ -0,0 +1,372 @@
+ SUBROUTINE ZHER2K( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA,
+ $ C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER TRANS, UPLO
+ INTEGER K, LDA, LDB, LDC, N
+ DOUBLE PRECISION BETA
+ COMPLEX*16 ALPHA
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHER2K performs one of the hermitian rank 2k operations
+*
+* C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) + beta*C,
+*
+* or
+*
+* C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A + beta*C,
+*
+* where alpha and beta are scalars with beta real, C is an n by n
+* hermitian matrix and A and B are n by k matrices in the first case
+* and k by n matrices in the second case.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array C is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of C
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of C
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' C := alpha*A*conjg( B' ) +
+* conjg( alpha )*B*conjg( A' ) +
+* beta*C.
+*
+* TRANS = 'C' or 'c' C := alpha*conjg( A' )*B +
+* conjg( alpha )*conjg( B' )*A +
+* beta*C.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with TRANS = 'N' or 'n', K specifies the number
+* of columns of the matrices A and B, and on entry with
+* TRANS = 'C' or 'c', K specifies the number of rows of the
+* matrices A and B. K must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by n part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDA must be at least max( 1, n ), otherwise LDA must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array B must contain the matrix B, otherwise
+* the leading k by n part of the array B must contain the
+* matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDB must be at least max( 1, n ), otherwise LDB must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION .
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array C must contain the upper
+* triangular part of the hermitian matrix and the strictly
+* lower triangular part of C is not referenced. On exit, the
+* upper triangular part of the array C is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array C must contain the lower
+* triangular part of the hermitian matrix and the strictly
+* upper triangular part of C is not referenced. On exit, the
+* lower triangular part of the array C is overwritten by the
+* lower triangular part of the updated matrix.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero, and on exit they
+* are set to zero.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+* -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+* Ed Anderson, Cray Research Inc.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCONJG, MAX
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, L, NROWA
+ COMPLEX*16 TEMP1, TEMP2
+* ..
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+ NROWA = N
+ ELSE
+ NROWA = K
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.UPPER ) .AND. ( .NOT.LSAME( UPLO, 'L' ) ) ) THEN
+ INFO = 1
+ ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ) .AND.
+ $ ( .NOT.LSAME( TRANS, 'C' ) ) ) THEN
+ INFO = 2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = 3
+ ELSE IF( K.LT.0 ) THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) ) THEN
+ INFO = 7
+ ELSE IF( LDB.LT.MAX( 1, NROWA ) ) THEN
+ INFO = 9
+ ELSE IF( LDC.LT.MAX( 1, N ) ) THEN
+ INFO = 12
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZHER2K', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ) .OR. ( ( ( ALPHA.EQ.ZERO ) .OR. ( K.EQ.0 ) ) .AND.
+ $ ( BETA.EQ.ONE ) ) )RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO ) THEN
+ IF( UPPER ) THEN
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, J
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40 J = 1, N
+ DO 30 I = 1, J - 1
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ DO 60 J = 1, N
+ DO 50 I = J, N
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80 J = 1, N
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ DO 70 I = J + 1, N
+ C( I, J ) = BETA*C( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+*
+* Form C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) +
+* C.
+*
+ IF( UPPER ) THEN
+ DO 130 J = 1, N
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ DO 90 I = 1, J
+ C( I, J ) = ZERO
+ 90 CONTINUE
+ ELSE IF( BETA.NE.ONE ) THEN
+ DO 100 I = 1, J - 1
+ C( I, J ) = BETA*C( I, J )
+ 100 CONTINUE
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ ELSE
+ C( J, J ) = DBLE( C( J, J ) )
+ END IF
+ DO 120 L = 1, K
+ IF( ( A( J, L ).NE.ZERO ) .OR. ( B( J, L ).NE.ZERO ) )
+ $ THEN
+ TEMP1 = ALPHA*DCONJG( B( J, L ) )
+ TEMP2 = DCONJG( ALPHA*A( J, L ) )
+ DO 110 I = 1, J - 1
+ C( I, J ) = C( I, J ) + A( I, L )*TEMP1 +
+ $ B( I, L )*TEMP2
+ 110 CONTINUE
+ C( J, J ) = DBLE( C( J, J ) ) +
+ $ DBLE( A( J, L )*TEMP1+B( J, L )*TEMP2 )
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 180 J = 1, N
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ DO 140 I = J, N
+ C( I, J ) = ZERO
+ 140 CONTINUE
+ ELSE IF( BETA.NE.ONE ) THEN
+ DO 150 I = J + 1, N
+ C( I, J ) = BETA*C( I, J )
+ 150 CONTINUE
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ ELSE
+ C( J, J ) = DBLE( C( J, J ) )
+ END IF
+ DO 170 L = 1, K
+ IF( ( A( J, L ).NE.ZERO ) .OR. ( B( J, L ).NE.ZERO ) )
+ $ THEN
+ TEMP1 = ALPHA*DCONJG( B( J, L ) )
+ TEMP2 = DCONJG( ALPHA*A( J, L ) )
+ DO 160 I = J + 1, N
+ C( I, J ) = C( I, J ) + A( I, L )*TEMP1 +
+ $ B( I, L )*TEMP2
+ 160 CONTINUE
+ C( J, J ) = DBLE( C( J, J ) ) +
+ $ DBLE( A( J, L )*TEMP1+B( J, L )*TEMP2 )
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A +
+* C.
+*
+ IF( UPPER ) THEN
+ DO 210 J = 1, N
+ DO 200 I = 1, J
+ TEMP1 = ZERO
+ TEMP2 = ZERO
+ DO 190 L = 1, K
+ TEMP1 = TEMP1 + DCONJG( A( L, I ) )*B( L, J )
+ TEMP2 = TEMP2 + DCONJG( B( L, I ) )*A( L, J )
+ 190 CONTINUE
+ IF( I.EQ.J ) THEN
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ C( J, J ) = DBLE( ALPHA*TEMP1+DCONJG( ALPHA )*
+ $ TEMP2 )
+ ELSE
+ C( J, J ) = BETA*DBLE( C( J, J ) ) +
+ $ DBLE( ALPHA*TEMP1+DCONJG( ALPHA )*
+ $ TEMP2 )
+ END IF
+ ELSE
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ C( I, J ) = ALPHA*TEMP1 + DCONJG( ALPHA )*TEMP2
+ ELSE
+ C( I, J ) = BETA*C( I, J ) + ALPHA*TEMP1 +
+ $ DCONJG( ALPHA )*TEMP2
+ END IF
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+ ELSE
+ DO 240 J = 1, N
+ DO 230 I = J, N
+ TEMP1 = ZERO
+ TEMP2 = ZERO
+ DO 220 L = 1, K
+ TEMP1 = TEMP1 + DCONJG( A( L, I ) )*B( L, J )
+ TEMP2 = TEMP2 + DCONJG( B( L, I ) )*A( L, J )
+ 220 CONTINUE
+ IF( I.EQ.J ) THEN
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ C( J, J ) = DBLE( ALPHA*TEMP1+DCONJG( ALPHA )*
+ $ TEMP2 )
+ ELSE
+ C( J, J ) = BETA*DBLE( C( J, J ) ) +
+ $ DBLE( ALPHA*TEMP1+DCONJG( ALPHA )*
+ $ TEMP2 )
+ END IF
+ ELSE
+ IF( BETA.EQ.DBLE( ZERO ) ) THEN
+ C( I, J ) = ALPHA*TEMP1 + DCONJG( ALPHA )*TEMP2
+ ELSE
+ C( I, J ) = BETA*C( I, J ) + ALPHA*TEMP1 +
+ $ DCONJG( ALPHA )*TEMP2
+ END IF
+ END IF
+ 230 CONTINUE
+ 240 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHER2K.
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zherk.f b/2.3-1/src/fortran/blas/zherk.f
new file mode 100644
index 00000000..cfbf7180
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zherk.f
@@ -0,0 +1,330 @@
+ SUBROUTINE ZHERK( UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER TRANS, UPLO
+ INTEGER K, LDA, LDC, N
+ DOUBLE PRECISION ALPHA, BETA
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHERK performs one of the hermitian rank k operations
+*
+* C := alpha*A*conjg( A' ) + beta*C,
+*
+* or
+*
+* C := alpha*conjg( A' )*A + beta*C,
+*
+* where alpha and beta are real scalars, C is an n by n hermitian
+* matrix and A is an n by k matrix in the first case and a k by n
+* matrix in the second case.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array C is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of C
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of C
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' C := alpha*A*conjg( A' ) + beta*C.
+*
+* TRANS = 'C' or 'c' C := alpha*conjg( A' )*A + beta*C.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with TRANS = 'N' or 'n', K specifies the number
+* of columns of the matrix A, and on entry with
+* TRANS = 'C' or 'c', K specifies the number of rows of the
+* matrix A. K must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by n part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDA must be at least max( 1, n ), otherwise LDA must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* BETA - DOUBLE PRECISION.
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array C must contain the upper
+* triangular part of the hermitian matrix and the strictly
+* lower triangular part of C is not referenced. On exit, the
+* upper triangular part of the array C is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array C must contain the lower
+* triangular part of the hermitian matrix and the strictly
+* upper triangular part of C is not referenced. On exit, the
+* lower triangular part of the array C is overwritten by the
+* lower triangular part of the updated matrix.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero, and on exit they
+* are set to zero.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+* -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+* Ed Anderson, Cray Research Inc.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCMPLX, DCONJG, MAX
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, L, NROWA
+ DOUBLE PRECISION RTEMP
+ COMPLEX*16 TEMP
+* ..
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+ NROWA = N
+ ELSE
+ NROWA = K
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.UPPER ) .AND. ( .NOT.LSAME( UPLO, 'L' ) ) ) THEN
+ INFO = 1
+ ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ) .AND.
+ $ ( .NOT.LSAME( TRANS, 'C' ) ) ) THEN
+ INFO = 2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = 3
+ ELSE IF( K.LT.0 ) THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) ) THEN
+ INFO = 7
+ ELSE IF( LDC.LT.MAX( 1, N ) ) THEN
+ INFO = 10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZHERK ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ) .OR. ( ( ( ALPHA.EQ.ZERO ) .OR. ( K.EQ.0 ) ) .AND.
+ $ ( BETA.EQ.ONE ) ) )RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO ) THEN
+ IF( UPPER ) THEN
+ IF( BETA.EQ.ZERO ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, J
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40 J = 1, N
+ DO 30 I = 1, J - 1
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( BETA.EQ.ZERO ) THEN
+ DO 60 J = 1, N
+ DO 50 I = J, N
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80 J = 1, N
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ DO 70 I = J + 1, N
+ C( I, J ) = BETA*C( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+*
+* Form C := alpha*A*conjg( A' ) + beta*C.
+*
+ IF( UPPER ) THEN
+ DO 130 J = 1, N
+ IF( BETA.EQ.ZERO ) THEN
+ DO 90 I = 1, J
+ C( I, J ) = ZERO
+ 90 CONTINUE
+ ELSE IF( BETA.NE.ONE ) THEN
+ DO 100 I = 1, J - 1
+ C( I, J ) = BETA*C( I, J )
+ 100 CONTINUE
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ ELSE
+ C( J, J ) = DBLE( C( J, J ) )
+ END IF
+ DO 120 L = 1, K
+ IF( A( J, L ).NE.DCMPLX( ZERO ) ) THEN
+ TEMP = ALPHA*DCONJG( A( J, L ) )
+ DO 110 I = 1, J - 1
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 110 CONTINUE
+ C( J, J ) = DBLE( C( J, J ) ) +
+ $ DBLE( TEMP*A( I, L ) )
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 180 J = 1, N
+ IF( BETA.EQ.ZERO ) THEN
+ DO 140 I = J, N
+ C( I, J ) = ZERO
+ 140 CONTINUE
+ ELSE IF( BETA.NE.ONE ) THEN
+ C( J, J ) = BETA*DBLE( C( J, J ) )
+ DO 150 I = J + 1, N
+ C( I, J ) = BETA*C( I, J )
+ 150 CONTINUE
+ ELSE
+ C( J, J ) = DBLE( C( J, J ) )
+ END IF
+ DO 170 L = 1, K
+ IF( A( J, L ).NE.DCMPLX( ZERO ) ) THEN
+ TEMP = ALPHA*DCONJG( A( J, L ) )
+ C( J, J ) = DBLE( C( J, J ) ) +
+ $ DBLE( TEMP*A( J, L ) )
+ DO 160 I = J + 1, N
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 160 CONTINUE
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*conjg( A' )*A + beta*C.
+*
+ IF( UPPER ) THEN
+ DO 220 J = 1, N
+ DO 200 I = 1, J - 1
+ TEMP = ZERO
+ DO 190 L = 1, K
+ TEMP = TEMP + DCONJG( A( L, I ) )*A( L, J )
+ 190 CONTINUE
+ IF( BETA.EQ.ZERO ) THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 200 CONTINUE
+ RTEMP = ZERO
+ DO 210 L = 1, K
+ RTEMP = RTEMP + DCONJG( A( L, J ) )*A( L, J )
+ 210 CONTINUE
+ IF( BETA.EQ.ZERO ) THEN
+ C( J, J ) = ALPHA*RTEMP
+ ELSE
+ C( J, J ) = ALPHA*RTEMP + BETA*DBLE( C( J, J ) )
+ END IF
+ 220 CONTINUE
+ ELSE
+ DO 260 J = 1, N
+ RTEMP = ZERO
+ DO 230 L = 1, K
+ RTEMP = RTEMP + DCONJG( A( L, J ) )*A( L, J )
+ 230 CONTINUE
+ IF( BETA.EQ.ZERO ) THEN
+ C( J, J ) = ALPHA*RTEMP
+ ELSE
+ C( J, J ) = ALPHA*RTEMP + BETA*DBLE( C( J, J ) )
+ END IF
+ DO 250 I = J + 1, N
+ TEMP = ZERO
+ DO 240 L = 1, K
+ TEMP = TEMP + DCONJG( A( L, I ) )*A( L, J )
+ 240 CONTINUE
+ IF( BETA.EQ.ZERO ) THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 250 CONTINUE
+ 260 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHERK .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zhpmv.f b/2.3-1/src/fortran/blas/zhpmv.f
new file mode 100644
index 00000000..9cde9234
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zhpmv.f
@@ -0,0 +1,270 @@
+ SUBROUTINE ZHPMV ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA, BETA
+ INTEGER INCX, INCY, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 AP( * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHPMV performs the matrix-vector operation
+*
+* y := alpha*A*x + beta*y,
+*
+* where alpha and beta are scalars, x and y are n element vectors and
+* A is an n by n hermitian matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the matrix A is supplied in the packed
+* array AP as follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* supplied in AP.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* supplied in AP.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* AP - COMPLEX*16 array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular part of the hermitian matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+* and a( 2, 2 ) respectively, and so on.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular part of the hermitian matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+* and a( 3, 1 ) respectively, and so on.
+* Note that the imaginary parts of the diagonal elements need
+* not be set and are assumed to be zero.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then Y need not be set on input.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y. On exit, Y is overwritten by the updated
+* vector y.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, K, KK, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 6
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHPMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* Set up the start points in X and Y.
+*
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+*
+* Start the operations. In this version the elements of the array AP
+* are accessed sequentially with one pass through AP.
+*
+* First form y := beta*y.
+*
+ IF( BETA.NE.ONE )THEN
+ IF( INCY.EQ.1 )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 10, I = 1, N
+ Y( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ DO 20, I = 1, N
+ Y( I ) = BETA*Y( I )
+ 20 CONTINUE
+ END IF
+ ELSE
+ IY = KY
+ IF( BETA.EQ.ZERO )THEN
+ DO 30, I = 1, N
+ Y( IY ) = ZERO
+ IY = IY + INCY
+ 30 CONTINUE
+ ELSE
+ DO 40, I = 1, N
+ Y( IY ) = BETA*Y( IY )
+ IY = IY + INCY
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ IF( ALPHA.EQ.ZERO )
+ $ RETURN
+ KK = 1
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form y when AP contains the upper triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ K = KK
+ DO 50, I = 1, J - 1
+ Y( I ) = Y( I ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + DCONJG( AP( K ) )*X( I )
+ K = K + 1
+ 50 CONTINUE
+ Y( J ) = Y( J ) + TEMP1*DBLE( AP( KK + J - 1 ) )
+ $ + ALPHA*TEMP2
+ KK = KK + J
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 80, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ IX = KX
+ IY = KY
+ DO 70, K = KK, KK + J - 2
+ Y( IY ) = Y( IY ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + DCONJG( AP( K ) )*X( IX )
+ IX = IX + INCX
+ IY = IY + INCY
+ 70 CONTINUE
+ Y( JY ) = Y( JY ) + TEMP1*DBLE( AP( KK + J - 1 ) )
+ $ + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + J
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form y when AP contains the lower triangle.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 100, J = 1, N
+ TEMP1 = ALPHA*X( J )
+ TEMP2 = ZERO
+ Y( J ) = Y( J ) + TEMP1*DBLE( AP( KK ) )
+ K = KK + 1
+ DO 90, I = J + 1, N
+ Y( I ) = Y( I ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + DCONJG( AP( K ) )*X( I )
+ K = K + 1
+ 90 CONTINUE
+ Y( J ) = Y( J ) + ALPHA*TEMP2
+ KK = KK + ( N - J + 1 )
+ 100 CONTINUE
+ ELSE
+ JX = KX
+ JY = KY
+ DO 120, J = 1, N
+ TEMP1 = ALPHA*X( JX )
+ TEMP2 = ZERO
+ Y( JY ) = Y( JY ) + TEMP1*DBLE( AP( KK ) )
+ IX = JX
+ IY = JY
+ DO 110, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ IY = IY + INCY
+ Y( IY ) = Y( IY ) + TEMP1*AP( K )
+ TEMP2 = TEMP2 + DCONJG( AP( K ) )*X( IX )
+ 110 CONTINUE
+ Y( JY ) = Y( JY ) + ALPHA*TEMP2
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + ( N - J + 1 )
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHPMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zhpr.f b/2.3-1/src/fortran/blas/zhpr.f
new file mode 100644
index 00000000..2e368de4
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zhpr.f
@@ -0,0 +1,217 @@
+ SUBROUTINE ZHPR ( UPLO, N, ALPHA, X, INCX, AP )
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 AP( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHPR performs the hermitian rank 1 operation
+*
+* A := alpha*x*conjg( x' ) + A,
+*
+* where alpha is a real scalar, x is an n element vector and A is an
+* n by n hermitian matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the matrix A is supplied in the packed
+* array AP as follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* supplied in AP.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* supplied in AP.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - DOUBLE PRECISION.
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* AP - COMPLEX*16 array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular part of the hermitian matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+* and a( 2, 2 ) respectively, and so on. On exit, the array
+* AP is overwritten by the upper triangular part of the
+* updated matrix.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular part of the hermitian matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+* and a( 3, 1 ) respectively, and so on. On exit, the array
+* AP is overwritten by the lower triangular part of the
+* updated matrix.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero, and on exit they
+* are set to zero.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, K, KK, KX
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHPR ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.DBLE( ZERO ) ) )
+ $ RETURN
+*
+* Set the start point in X if the increment is not unity.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of the array AP
+* are accessed sequentially with one pass through AP.
+*
+ KK = 1
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when upper triangle is stored in AP.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( J ) )
+ K = KK
+ DO 10, I = 1, J - 1
+ AP( K ) = AP( K ) + X( I )*TEMP
+ K = K + 1
+ 10 CONTINUE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) )
+ $ + DBLE( X( J )*TEMP )
+ ELSE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) )
+ END IF
+ KK = KK + J
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( JX ) )
+ IX = KX
+ DO 30, K = KK, KK + J - 2
+ AP( K ) = AP( K ) + X( IX )*TEMP
+ IX = IX + INCX
+ 30 CONTINUE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) )
+ $ + DBLE( X( JX )*TEMP )
+ ELSE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) )
+ END IF
+ JX = JX + INCX
+ KK = KK + J
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when lower triangle is stored in AP.
+*
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( J ) )
+ AP( KK ) = DBLE( AP( KK ) ) + DBLE( TEMP*X( J ) )
+ K = KK + 1
+ DO 50, I = J + 1, N
+ AP( K ) = AP( K ) + X( I )*TEMP
+ K = K + 1
+ 50 CONTINUE
+ ELSE
+ AP( KK ) = DBLE( AP( KK ) )
+ END IF
+ KK = KK + N - J + 1
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = ALPHA*DCONJG( X( JX ) )
+ AP( KK ) = DBLE( AP( KK ) ) + DBLE( TEMP*X( JX ) )
+ IX = JX
+ DO 70, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ AP( K ) = AP( K ) + X( IX )*TEMP
+ 70 CONTINUE
+ ELSE
+ AP( KK ) = DBLE( AP( KK ) )
+ END IF
+ JX = JX + INCX
+ KK = KK + N - J + 1
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHPR .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zhpr2.f b/2.3-1/src/fortran/blas/zhpr2.f
new file mode 100644
index 00000000..e10774b1
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zhpr2.f
@@ -0,0 +1,251 @@
+ SUBROUTINE ZHPR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP )
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX, INCY, N
+ CHARACTER*1 UPLO
+* .. Array Arguments ..
+ COMPLEX*16 AP( * ), X( * ), Y( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHPR2 performs the hermitian rank 2 operation
+*
+* A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,
+*
+* where alpha is a scalar, x and y are n element vectors and A is an
+* n by n hermitian matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the matrix A is supplied in the packed
+* array AP as follows:
+*
+* UPLO = 'U' or 'u' The upper triangular part of A is
+* supplied in AP.
+*
+* UPLO = 'L' or 'l' The lower triangular part of A is
+* supplied in AP.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x.
+* Unchanged on exit.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+* Y - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCY ) ).
+* Before entry, the incremented array Y must contain the n
+* element vector y.
+* Unchanged on exit.
+*
+* INCY - INTEGER.
+* On entry, INCY specifies the increment for the elements of
+* Y. INCY must not be zero.
+* Unchanged on exit.
+*
+* AP - COMPLEX*16 array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular part of the hermitian matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+* and a( 2, 2 ) respectively, and so on. On exit, the array
+* AP is overwritten by the upper triangular part of the
+* updated matrix.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular part of the hermitian matrix
+* packed sequentially, column by column, so that AP( 1 )
+* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+* and a( 3, 1 ) respectively, and so on. On exit, the array
+* AP is overwritten by the lower triangular part of the
+* updated matrix.
+* Note that the imaginary parts of the diagonal elements need
+* not be set, they are assumed to be zero, and on exit they
+* are set to zero.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP1, TEMP2
+ INTEGER I, INFO, IX, IY, J, JX, JY, K, KK, KX, KY
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, DBLE
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO, 'U' ).AND.
+ $ .NOT.LSAME( UPLO, 'L' ) )THEN
+ INFO = 1
+ ELSE IF( N.LT.0 )THEN
+ INFO = 2
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 5
+ ELSE IF( INCY.EQ.0 )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZHPR2 ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.( ALPHA.EQ.ZERO ) )
+ $ RETURN
+*
+* Set up the start points in X and Y if the increments are not both
+* unity.
+*
+ IF( ( INCX.NE.1 ).OR.( INCY.NE.1 ) )THEN
+ IF( INCX.GT.0 )THEN
+ KX = 1
+ ELSE
+ KX = 1 - ( N - 1 )*INCX
+ END IF
+ IF( INCY.GT.0 )THEN
+ KY = 1
+ ELSE
+ KY = 1 - ( N - 1 )*INCY
+ END IF
+ JX = KX
+ JY = KY
+ END IF
+*
+* Start the operations. In this version the elements of the array AP
+* are accessed sequentially with one pass through AP.
+*
+ KK = 1
+ IF( LSAME( UPLO, 'U' ) )THEN
+*
+* Form A when upper triangle is stored in AP.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 20, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( J ) )
+ TEMP2 = DCONJG( ALPHA*X( J ) )
+ K = KK
+ DO 10, I = 1, J - 1
+ AP( K ) = AP( K ) + X( I )*TEMP1 + Y( I )*TEMP2
+ K = K + 1
+ 10 CONTINUE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) ) +
+ $ DBLE( X( J )*TEMP1 + Y( J )*TEMP2 )
+ ELSE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) )
+ END IF
+ KK = KK + J
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( JY ) )
+ TEMP2 = DCONJG( ALPHA*X( JX ) )
+ IX = KX
+ IY = KY
+ DO 30, K = KK, KK + J - 2
+ AP( K ) = AP( K ) + X( IX )*TEMP1 + Y( IY )*TEMP2
+ IX = IX + INCX
+ IY = IY + INCY
+ 30 CONTINUE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) ) +
+ $ DBLE( X( JX )*TEMP1 +
+ $ Y( JY )*TEMP2 )
+ ELSE
+ AP( KK + J - 1 ) = DBLE( AP( KK + J - 1 ) )
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + J
+ 40 CONTINUE
+ END IF
+ ELSE
+*
+* Form A when lower triangle is stored in AP.
+*
+ IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN
+ DO 60, J = 1, N
+ IF( ( X( J ).NE.ZERO ).OR.( Y( J ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( J ) )
+ TEMP2 = DCONJG( ALPHA*X( J ) )
+ AP( KK ) = DBLE( AP( KK ) ) +
+ $ DBLE( X( J )*TEMP1 + Y( J )*TEMP2 )
+ K = KK + 1
+ DO 50, I = J + 1, N
+ AP( K ) = AP( K ) + X( I )*TEMP1 + Y( I )*TEMP2
+ K = K + 1
+ 50 CONTINUE
+ ELSE
+ AP( KK ) = DBLE( AP( KK ) )
+ END IF
+ KK = KK + N - J + 1
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ IF( ( X( JX ).NE.ZERO ).OR.( Y( JY ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*DCONJG( Y( JY ) )
+ TEMP2 = DCONJG( ALPHA*X( JX ) )
+ AP( KK ) = DBLE( AP( KK ) ) +
+ $ DBLE( X( JX )*TEMP1 + Y( JY )*TEMP2 )
+ IX = JX
+ IY = JY
+ DO 70, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ IY = IY + INCY
+ AP( K ) = AP( K ) + X( IX )*TEMP1 + Y( IY )*TEMP2
+ 70 CONTINUE
+ ELSE
+ AP( KK ) = DBLE( AP( KK ) )
+ END IF
+ JX = JX + INCX
+ JY = JY + INCY
+ KK = KK + N - J + 1
+ 80 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZHPR2 .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zrotg.f b/2.3-1/src/fortran/blas/zrotg.f
new file mode 100644
index 00000000..f6a4aa12
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zrotg.f
@@ -0,0 +1,21 @@
+ subroutine zrotg(ca,cb,c,s)
+ double complex ca,cb,s
+ double precision c
+ double precision norm,scale
+ double complex alpha
+ if (cdabs(ca) .ne. 0.0d0) go to 10
+ c = 0.0d0
+ s = (1.0d0,0.0d0)
+ ca = cb
+ go to 20
+ 10 continue
+ scale = cdabs(ca) + cdabs(cb)
+ norm = scale*dsqrt((cdabs(ca/dcmplx(scale,0.0d0)))**2 +
+ * (cdabs(cb/dcmplx(scale,0.0d0)))**2)
+ alpha = ca /cdabs(ca)
+ c = cdabs(ca) / norm
+ s = alpha * dconjg(cb) / norm
+ ca = alpha * norm
+ 20 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zscal.f b/2.3-1/src/fortran/blas/zscal.f
new file mode 100644
index 00000000..6fa85763
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zscal.f
@@ -0,0 +1,29 @@
+ subroutine zscal(n,za,zx,incx)
+c
+c scales a vector by a constant.
+c jack dongarra, 3/11/78.
+c modified 3/93 to return if incx .le. 0.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex za,zx(*)
+ integer i,incx,ix,n
+c
+ if( n.le.0 .or. incx.le.0 )return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ ix = 1
+ do 10 i = 1,n
+ zx(ix) = za*zx(ix)
+ ix = ix + incx
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 do 30 i = 1,n
+ zx(i) = za*zx(i)
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zswap.f b/2.3-1/src/fortran/blas/zswap.f
new file mode 100644
index 00000000..f28a4e41
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zswap.f
@@ -0,0 +1,36 @@
+ subroutine zswap (n,zx,incx,zy,incy)
+c
+c interchanges two vectors.
+c jack dongarra, 3/11/78.
+c modified 12/3/93, array(1) declarations changed to array(*)
+c
+ double complex zx(*),zy(*),ztemp
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ztemp = zx(ix)
+ zx(ix) = zy(iy)
+ zy(iy) = ztemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+ 20 do 30 i = 1,n
+ ztemp = zx(i)
+ zx(i) = zy(i)
+ zy(i) = ztemp
+ 30 continue
+ return
+ end
diff --git a/2.3-1/src/fortran/blas/zsymm.f b/2.3-1/src/fortran/blas/zsymm.f
new file mode 100644
index 00000000..20b7c08d
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zsymm.f
@@ -0,0 +1,296 @@
+ SUBROUTINE ZSYMM ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO
+ INTEGER M, N, LDA, LDB, LDC
+ COMPLEX*16 ALPHA, BETA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZSYMM performs one of the matrix-matrix operations
+*
+* C := alpha*A*B + beta*C,
+*
+* or
+*
+* C := alpha*B*A + beta*C,
+*
+* where alpha and beta are scalars, A is a symmetric matrix and B and
+* C are m by n matrices.
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether the symmetric matrix A
+* appears on the left or right in the operation as follows:
+*
+* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
+*
+* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the symmetric matrix A is to be
+* referenced as follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of the
+* symmetric matrix is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of the
+* symmetric matrix is to be referenced.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of the matrix C.
+* M must be at least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of the matrix C.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* m when SIDE = 'L' or 'l' and is n otherwise.
+* Before entry with SIDE = 'L' or 'l', the m by m part of
+* the array A must contain the symmetric matrix, such that
+* when UPLO = 'U' or 'u', the leading m by m upper triangular
+* part of the array A must contain the upper triangular part
+* of the symmetric matrix and the strictly lower triangular
+* part of A is not referenced, and when UPLO = 'L' or 'l',
+* the leading m by m lower triangular part of the array A
+* must contain the lower triangular part of the symmetric
+* matrix and the strictly upper triangular part of A is not
+* referenced.
+* Before entry with SIDE = 'R' or 'r', the n by n part of
+* the array A must contain the symmetric matrix, such that
+* when UPLO = 'U' or 'u', the leading n by n upper triangular
+* part of the array A must contain the upper triangular part
+* of the symmetric matrix and the strictly lower triangular
+* part of A is not referenced, and when UPLO = 'L' or 'l',
+* the leading n by n lower triangular part of the array A
+* must contain the lower triangular part of the symmetric
+* matrix and the strictly upper triangular part of A is not
+* referenced.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), otherwise LDA must be at
+* least max( 1, n ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta. When BETA is
+* supplied as zero then C need not be set on input.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry, the leading m by n part of the array C must
+* contain the matrix C, except when beta is zero, in which
+* case C need not be set on entry.
+* On exit, the array C is overwritten by the m by n updated
+* matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, K, NROWA
+ COMPLEX*16 TEMP1, TEMP2
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Set NROWA as the number of rows of A.
+*
+ IF( LSAME( SIDE, 'L' ) )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ( .NOT.LSAME( SIDE, 'L' ) ).AND.
+ $ ( .NOT.LSAME( SIDE, 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO, 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( M .LT.0 )THEN
+ INFO = 3
+ ELSE IF( N .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 9
+ ELSE IF( LDC.LT.MAX( 1, M ) )THEN
+ INFO = 12
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZSYMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( M.EQ.0 ).OR.( N.EQ.0 ).OR.
+ $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, M
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( SIDE, 'L' ) )THEN
+*
+* Form C := alpha*A*B + beta*C.
+*
+ IF( UPPER )THEN
+ DO 70, J = 1, N
+ DO 60, I = 1, M
+ TEMP1 = ALPHA*B( I, J )
+ TEMP2 = ZERO
+ DO 50, K = 1, I - 1
+ C( K, J ) = C( K, J ) + TEMP1 *A( K, I )
+ TEMP2 = TEMP2 + B( K, J )*A( K, I )
+ 50 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = TEMP1*A( I, I ) + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ TEMP1*A( I, I ) + ALPHA*TEMP2
+ END IF
+ 60 CONTINUE
+ 70 CONTINUE
+ ELSE
+ DO 100, J = 1, N
+ DO 90, I = M, 1, -1
+ TEMP1 = ALPHA*B( I, J )
+ TEMP2 = ZERO
+ DO 80, K = I + 1, M
+ C( K, J ) = C( K, J ) + TEMP1 *A( K, I )
+ TEMP2 = TEMP2 + B( K, J )*A( K, I )
+ 80 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = TEMP1*A( I, I ) + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ TEMP1*A( I, I ) + ALPHA*TEMP2
+ END IF
+ 90 CONTINUE
+ 100 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*B*A + beta*C.
+*
+ DO 170, J = 1, N
+ TEMP1 = ALPHA*A( J, J )
+ IF( BETA.EQ.ZERO )THEN
+ DO 110, I = 1, M
+ C( I, J ) = TEMP1*B( I, J )
+ 110 CONTINUE
+ ELSE
+ DO 120, I = 1, M
+ C( I, J ) = BETA*C( I, J ) + TEMP1*B( I, J )
+ 120 CONTINUE
+ END IF
+ DO 140, K = 1, J - 1
+ IF( UPPER )THEN
+ TEMP1 = ALPHA*A( K, J )
+ ELSE
+ TEMP1 = ALPHA*A( J, K )
+ END IF
+ DO 130, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP1*B( I, K )
+ 130 CONTINUE
+ 140 CONTINUE
+ DO 160, K = J + 1, N
+ IF( UPPER )THEN
+ TEMP1 = ALPHA*A( J, K )
+ ELSE
+ TEMP1 = ALPHA*A( K, J )
+ END IF
+ DO 150, I = 1, M
+ C( I, J ) = C( I, J ) + TEMP1*B( I, K )
+ 150 CONTINUE
+ 160 CONTINUE
+ 170 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZSYMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zsyr2k.f b/2.3-1/src/fortran/blas/zsyr2k.f
new file mode 100644
index 00000000..aba2071a
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zsyr2k.f
@@ -0,0 +1,324 @@
+ SUBROUTINE ZSYR2K( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 UPLO, TRANS
+ INTEGER N, K, LDA, LDB, LDC
+ COMPLEX*16 ALPHA, BETA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZSYR2K performs one of the symmetric rank 2k operations
+*
+* C := alpha*A*B' + alpha*B*A' + beta*C,
+*
+* or
+*
+* C := alpha*A'*B + alpha*B'*A + beta*C,
+*
+* where alpha and beta are scalars, C is an n by n symmetric matrix
+* and A and B are n by k matrices in the first case and k by n
+* matrices in the second case.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array C is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of C
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of C
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' C := alpha*A*B' + alpha*B*A' +
+* beta*C.
+*
+* TRANS = 'T' or 't' C := alpha*A'*B + alpha*B'*A +
+* beta*C.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with TRANS = 'N' or 'n', K specifies the number
+* of columns of the matrices A and B, and on entry with
+* TRANS = 'T' or 't', K specifies the number of rows of the
+* matrices A and B. K must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by n part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDA must be at least max( 1, n ), otherwise LDA must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array B must contain the matrix B, otherwise
+* the leading k by n part of the array B must contain the
+* matrix B.
+* Unchanged on exit.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDB must be at least max( 1, n ), otherwise LDB must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array C must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of C is not referenced. On exit, the
+* upper triangular part of the array C is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array C must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of C is not referenced. On exit, the
+* lower triangular part of the array C is overwritten by the
+* lower triangular part of the updated matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, L, NROWA
+ COMPLEX*16 TEMP1, TEMP2
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ NROWA = N
+ ELSE
+ NROWA = K
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANS, 'T' ) ) )THEN
+ INFO = 2
+ ELSE IF( N .LT.0 )THEN
+ INFO = 3
+ ELSE IF( K .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDB.LT.MAX( 1, NROWA ) )THEN
+ INFO = 9
+ ELSE IF( LDC.LT.MAX( 1, N ) )THEN
+ INFO = 12
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZSYR2K', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.
+ $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( UPPER )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, J
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( BETA.EQ.ZERO )THEN
+ DO 60, J = 1, N
+ DO 50, I = J, N
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ DO 70, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form C := alpha*A*B' + alpha*B*A' + C.
+*
+ IF( UPPER )THEN
+ DO 130, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 90, I = 1, J
+ C( I, J ) = ZERO
+ 90 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 100, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 100 CONTINUE
+ END IF
+ DO 120, L = 1, K
+ IF( ( A( J, L ).NE.ZERO ).OR.
+ $ ( B( J, L ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*B( J, L )
+ TEMP2 = ALPHA*A( J, L )
+ DO 110, I = 1, J
+ C( I, J ) = C( I, J ) + A( I, L )*TEMP1 +
+ $ B( I, L )*TEMP2
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 180, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 140, I = J, N
+ C( I, J ) = ZERO
+ 140 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 150, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 150 CONTINUE
+ END IF
+ DO 170, L = 1, K
+ IF( ( A( J, L ).NE.ZERO ).OR.
+ $ ( B( J, L ).NE.ZERO ) )THEN
+ TEMP1 = ALPHA*B( J, L )
+ TEMP2 = ALPHA*A( J, L )
+ DO 160, I = J, N
+ C( I, J ) = C( I, J ) + A( I, L )*TEMP1 +
+ $ B( I, L )*TEMP2
+ 160 CONTINUE
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*A'*B + alpha*B'*A + C.
+*
+ IF( UPPER )THEN
+ DO 210, J = 1, N
+ DO 200, I = 1, J
+ TEMP1 = ZERO
+ TEMP2 = ZERO
+ DO 190, L = 1, K
+ TEMP1 = TEMP1 + A( L, I )*B( L, J )
+ TEMP2 = TEMP2 + B( L, I )*A( L, J )
+ 190 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP1 + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ ALPHA*TEMP1 + ALPHA*TEMP2
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+ ELSE
+ DO 240, J = 1, N
+ DO 230, I = J, N
+ TEMP1 = ZERO
+ TEMP2 = ZERO
+ DO 220, L = 1, K
+ TEMP1 = TEMP1 + A( L, I )*B( L, J )
+ TEMP2 = TEMP2 + B( L, I )*A( L, J )
+ 220 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP1 + ALPHA*TEMP2
+ ELSE
+ C( I, J ) = BETA *C( I, J ) +
+ $ ALPHA*TEMP1 + ALPHA*TEMP2
+ END IF
+ 230 CONTINUE
+ 240 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZSYR2K.
+*
+ END
diff --git a/2.3-1/src/fortran/blas/zsyrk.f b/2.3-1/src/fortran/blas/zsyrk.f
new file mode 100644
index 00000000..77e2c20a
--- /dev/null
+++ b/2.3-1/src/fortran/blas/zsyrk.f
@@ -0,0 +1,293 @@
+ SUBROUTINE ZSYRK ( UPLO, TRANS, N, K, ALPHA, A, LDA,
+ $ BETA, C, LDC )
+* .. Scalar Arguments ..
+ CHARACTER*1 UPLO, TRANS
+ INTEGER N, K, LDA, LDC
+ COMPLEX*16 ALPHA, BETA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZSYRK performs one of the symmetric rank k operations
+*
+* C := alpha*A*A' + beta*C,
+*
+* or
+*
+* C := alpha*A'*A + beta*C,
+*
+* where alpha and beta are scalars, C is an n by n symmetric matrix
+* and A is an n by k matrix in the first case and a k by n matrix
+* in the second case.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the upper or lower
+* triangular part of the array C is to be referenced as
+* follows:
+*
+* UPLO = 'U' or 'u' Only the upper triangular part of C
+* is to be referenced.
+*
+* UPLO = 'L' or 'l' Only the lower triangular part of C
+* is to be referenced.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' C := alpha*A*A' + beta*C.
+*
+* TRANS = 'T' or 't' C := alpha*A'*A + beta*C.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix C. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with TRANS = 'N' or 'n', K specifies the number
+* of columns of the matrix A, and on entry with
+* TRANS = 'T' or 't', K specifies the number of rows of the
+* matrix A. K must be at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+* k when TRANS = 'N' or 'n', and is n otherwise.
+* Before entry with TRANS = 'N' or 'n', the leading n by k
+* part of the array A must contain the matrix A, otherwise
+* the leading k by n part of the array A must contain the
+* matrix A.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When TRANS = 'N' or 'n'
+* then LDA must be at least max( 1, n ), otherwise LDA must
+* be at least max( 1, k ).
+* Unchanged on exit.
+*
+* BETA - COMPLEX*16 .
+* On entry, BETA specifies the scalar beta.
+* Unchanged on exit.
+*
+* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array C must contain the upper
+* triangular part of the symmetric matrix and the strictly
+* lower triangular part of C is not referenced. On exit, the
+* upper triangular part of the array C is overwritten by the
+* upper triangular part of the updated matrix.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array C must contain the lower
+* triangular part of the symmetric matrix and the strictly
+* upper triangular part of C is not referenced. On exit, the
+* lower triangular part of the array C is overwritten by the
+* lower triangular part of the updated matrix.
+*
+* LDC - INTEGER.
+* On entry, LDC specifies the first dimension of C as declared
+* in the calling (sub) program. LDC must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, INFO, J, L, NROWA
+ COMPLEX*16 TEMP
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+ NROWA = N
+ ELSE
+ NROWA = K
+ END IF
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANS, 'T' ) ) )THEN
+ INFO = 2
+ ELSE IF( N .LT.0 )THEN
+ INFO = 3
+ ELSE IF( K .LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 7
+ ELSE IF( LDC.LT.MAX( 1, N ) )THEN
+ INFO = 10
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZSYRK ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( ( N.EQ.0 ).OR.
+ $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ IF( UPPER )THEN
+ IF( BETA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, J
+ C( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40, J = 1, N
+ DO 30, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( BETA.EQ.ZERO )THEN
+ DO 60, J = 1, N
+ DO 50, I = J, N
+ C( I, J ) = ZERO
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ DO 70, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form C := alpha*A*A' + beta*C.
+*
+ IF( UPPER )THEN
+ DO 130, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 90, I = 1, J
+ C( I, J ) = ZERO
+ 90 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 100, I = 1, J
+ C( I, J ) = BETA*C( I, J )
+ 100 CONTINUE
+ END IF
+ DO 120, L = 1, K
+ IF( A( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*A( J, L )
+ DO 110, I = 1, J
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ ELSE
+ DO 180, J = 1, N
+ IF( BETA.EQ.ZERO )THEN
+ DO 140, I = J, N
+ C( I, J ) = ZERO
+ 140 CONTINUE
+ ELSE IF( BETA.NE.ONE )THEN
+ DO 150, I = J, N
+ C( I, J ) = BETA*C( I, J )
+ 150 CONTINUE
+ END IF
+ DO 170, L = 1, K
+ IF( A( J, L ).NE.ZERO )THEN
+ TEMP = ALPHA*A( J, L )
+ DO 160, I = J, N
+ C( I, J ) = C( I, J ) + TEMP*A( I, L )
+ 160 CONTINUE
+ END IF
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* Form C := alpha*A'*A + beta*C.
+*
+ IF( UPPER )THEN
+ DO 210, J = 1, N
+ DO 200, I = 1, J
+ TEMP = ZERO
+ DO 190, L = 1, K
+ TEMP = TEMP + A( L, I )*A( L, J )
+ 190 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+ ELSE
+ DO 240, J = 1, N
+ DO 230, I = J, N
+ TEMP = ZERO
+ DO 220, L = 1, K
+ TEMP = TEMP + A( L, I )*A( L, J )
+ 220 CONTINUE
+ IF( BETA.EQ.ZERO )THEN
+ C( I, J ) = ALPHA*TEMP
+ ELSE
+ C( I, J ) = ALPHA*TEMP + BETA*C( I, J )
+ END IF
+ 230 CONTINUE
+ 240 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZSYRK .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztbmv.f b/2.3-1/src/fortran/blas/ztbmv.f
new file mode 100644
index 00000000..17944082
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztbmv.f
@@ -0,0 +1,377 @@
+ SUBROUTINE ZTBMV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, K, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTBMV performs one of the matrix-vector operations
+*
+* x := A*x, or x := A'*x, or x := conjg( A' )*x,
+*
+* where x is an n element vector and A is an n by n unit, or non-unit,
+* upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' x := A*x.
+*
+* TRANS = 'T' or 't' x := A'*x.
+*
+* TRANS = 'C' or 'c' x := conjg( A' )*x.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with UPLO = 'U' or 'u', K specifies the number of
+* super-diagonals of the matrix A.
+* On entry with UPLO = 'L' or 'l', K specifies the number of
+* sub-diagonals of the matrix A.
+* K must satisfy 0 .le. K.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+* by n part of the array A must contain the upper triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row
+* ( k + 1 ) of the array, the first super-diagonal starting at
+* position 2 in row k, and so on. The top left k by k triangle
+* of the array A is not referenced.
+* The following program segment will transfer an upper
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = K + 1 - J
+* DO 10, I = MAX( 1, J - K ), J
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+* by n part of the array A must contain the lower triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row 1 of
+* the array, the first sub-diagonal starting at position 1 in
+* row 2, and so on. The bottom right k by k triangle of the
+* array A is not referenced.
+* The following program segment will transfer a lower
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = 1 - J
+* DO 10, I = J, MIN( N, J + K )
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Note that when DIAG = 'U' or 'u' the elements of the array A
+* corresponding to the diagonal elements of the matrix are not
+* referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( k + 1 ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x. On exit, X is overwritten with the
+* tranformed vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, KPLUS1, KX, L
+ LOGICAL NOCONJ, NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( K.LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.( K + 1 ) )THEN
+ INFO = 7
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTBMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := A*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ L = KPLUS1 - J
+ DO 10, I = MAX( 1, J - K ), J - 1
+ X( I ) = X( I ) + TEMP*A( L + I, J )
+ 10 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( KPLUS1, J )
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ L = KPLUS1 - J
+ DO 30, I = MAX( 1, J - K ), J - 1
+ X( IX ) = X( IX ) + TEMP*A( L + I, J )
+ IX = IX + INCX
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( KPLUS1, J )
+ END IF
+ JX = JX + INCX
+ IF( J.GT.K )
+ $ KX = KX + INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ L = 1 - J
+ DO 50, I = MIN( N, J + K ), J + 1, -1
+ X( I ) = X( I ) + TEMP*A( L + I, J )
+ 50 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( 1, J )
+ END IF
+ 60 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 80, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ L = 1 - J
+ DO 70, I = MIN( N, J + K ), J + 1, -1
+ X( IX ) = X( IX ) + TEMP*A( L + I, J )
+ IX = IX - INCX
+ 70 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( 1, J )
+ END IF
+ JX = JX - INCX
+ IF( ( N - J ).GE.K )
+ $ KX = KX - INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := A'*x or x := conjg( A' )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = N, 1, -1
+ TEMP = X( J )
+ L = KPLUS1 - J
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( KPLUS1, J )
+ DO 90, I = J - 1, MAX( 1, J - K ), -1
+ TEMP = TEMP + A( L + I, J )*X( I )
+ 90 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( KPLUS1, J ) )
+ DO 100, I = J - 1, MAX( 1, J - K ), -1
+ TEMP = TEMP + DCONJG( A( L + I, J ) )*X( I )
+ 100 CONTINUE
+ END IF
+ X( J ) = TEMP
+ 110 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 140, J = N, 1, -1
+ TEMP = X( JX )
+ KX = KX - INCX
+ IX = KX
+ L = KPLUS1 - J
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( KPLUS1, J )
+ DO 120, I = J - 1, MAX( 1, J - K ), -1
+ TEMP = TEMP + A( L + I, J )*X( IX )
+ IX = IX - INCX
+ 120 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( KPLUS1, J ) )
+ DO 130, I = J - 1, MAX( 1, J - K ), -1
+ TEMP = TEMP + DCONJG( A( L + I, J ) )*X( IX )
+ IX = IX - INCX
+ 130 CONTINUE
+ END IF
+ X( JX ) = TEMP
+ JX = JX - INCX
+ 140 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 170, J = 1, N
+ TEMP = X( J )
+ L = 1 - J
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( 1, J )
+ DO 150, I = J + 1, MIN( N, J + K )
+ TEMP = TEMP + A( L + I, J )*X( I )
+ 150 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( 1, J ) )
+ DO 160, I = J + 1, MIN( N, J + K )
+ TEMP = TEMP + DCONJG( A( L + I, J ) )*X( I )
+ 160 CONTINUE
+ END IF
+ X( J ) = TEMP
+ 170 CONTINUE
+ ELSE
+ JX = KX
+ DO 200, J = 1, N
+ TEMP = X( JX )
+ KX = KX + INCX
+ IX = KX
+ L = 1 - J
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( 1, J )
+ DO 180, I = J + 1, MIN( N, J + K )
+ TEMP = TEMP + A( L + I, J )*X( IX )
+ IX = IX + INCX
+ 180 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( 1, J ) )
+ DO 190, I = J + 1, MIN( N, J + K )
+ TEMP = TEMP + DCONJG( A( L + I, J ) )*X( IX )
+ IX = IX + INCX
+ 190 CONTINUE
+ END IF
+ X( JX ) = TEMP
+ JX = JX + INCX
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTBMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztbsv.f b/2.3-1/src/fortran/blas/ztbsv.f
new file mode 100644
index 00000000..f3ded819
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztbsv.f
@@ -0,0 +1,381 @@
+ SUBROUTINE ZTBSV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, K, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTBSV solves one of the systems of equations
+*
+* A*x = b, or A'*x = b, or conjg( A' )*x = b,
+*
+* where b and x are n element vectors and A is an n by n unit, or
+* non-unit, upper or lower triangular band matrix, with ( k + 1 )
+* diagonals.
+*
+* No test for singularity or near-singularity is included in this
+* routine. Such tests must be performed before calling this routine.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the equations to be solved as
+* follows:
+*
+* TRANS = 'N' or 'n' A*x = b.
+*
+* TRANS = 'T' or 't' A'*x = b.
+*
+* TRANS = 'C' or 'c' conjg( A' )*x = b.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* K - INTEGER.
+* On entry with UPLO = 'U' or 'u', K specifies the number of
+* super-diagonals of the matrix A.
+* On entry with UPLO = 'L' or 'l', K specifies the number of
+* sub-diagonals of the matrix A.
+* K must satisfy 0 .le. K.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+* by n part of the array A must contain the upper triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row
+* ( k + 1 ) of the array, the first super-diagonal starting at
+* position 2 in row k, and so on. The top left k by k triangle
+* of the array A is not referenced.
+* The following program segment will transfer an upper
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = K + 1 - J
+* DO 10, I = MAX( 1, J - K ), J
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+* by n part of the array A must contain the lower triangular
+* band part of the matrix of coefficients, supplied column by
+* column, with the leading diagonal of the matrix in row 1 of
+* the array, the first sub-diagonal starting at position 1 in
+* row 2, and so on. The bottom right k by k triangle of the
+* array A is not referenced.
+* The following program segment will transfer a lower
+* triangular band matrix from conventional full matrix storage
+* to band storage:
+*
+* DO 20, J = 1, N
+* M = 1 - J
+* DO 10, I = J, MIN( N, J + K )
+* A( M + I, J ) = matrix( I, J )
+* 10 CONTINUE
+* 20 CONTINUE
+*
+* Note that when DIAG = 'U' or 'u' the elements of the array A
+* corresponding to the diagonal elements of the matrix are not
+* referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* ( k + 1 ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element right-hand side vector b. On exit, X is overwritten
+* with the solution vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, KPLUS1, KX, L
+ LOGICAL NOCONJ, NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( K.LT.0 )THEN
+ INFO = 5
+ ELSE IF( LDA.LT.( K + 1 ) )THEN
+ INFO = 7
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTBSV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed by sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := inv( A )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ L = KPLUS1 - J
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( KPLUS1, J )
+ TEMP = X( J )
+ DO 10, I = J - 1, MAX( 1, J - K ), -1
+ X( I ) = X( I ) - TEMP*A( L + I, J )
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 40, J = N, 1, -1
+ KX = KX - INCX
+ IF( X( JX ).NE.ZERO )THEN
+ IX = KX
+ L = KPLUS1 - J
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( KPLUS1, J )
+ TEMP = X( JX )
+ DO 30, I = J - 1, MAX( 1, J - K ), -1
+ X( IX ) = X( IX ) - TEMP*A( L + I, J )
+ IX = IX - INCX
+ 30 CONTINUE
+ END IF
+ JX = JX - INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ L = 1 - J
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( 1, J )
+ TEMP = X( J )
+ DO 50, I = J + 1, MIN( N, J + K )
+ X( I ) = X( I ) - TEMP*A( L + I, J )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ KX = KX + INCX
+ IF( X( JX ).NE.ZERO )THEN
+ IX = KX
+ L = 1 - J
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( 1, J )
+ TEMP = X( JX )
+ DO 70, I = J + 1, MIN( N, J + K )
+ X( IX ) = X( IX ) - TEMP*A( L + I, J )
+ IX = IX + INCX
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := inv( A' )*x or x := inv( conjg( A') )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KPLUS1 = K + 1
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = 1, N
+ TEMP = X( J )
+ L = KPLUS1 - J
+ IF( NOCONJ )THEN
+ DO 90, I = MAX( 1, J - K ), J - 1
+ TEMP = TEMP - A( L + I, J )*X( I )
+ 90 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( KPLUS1, J )
+ ELSE
+ DO 100, I = MAX( 1, J - K ), J - 1
+ TEMP = TEMP - DCONJG( A( L + I, J ) )*X( I )
+ 100 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( KPLUS1, J ) )
+ END IF
+ X( J ) = TEMP
+ 110 CONTINUE
+ ELSE
+ JX = KX
+ DO 140, J = 1, N
+ TEMP = X( JX )
+ IX = KX
+ L = KPLUS1 - J
+ IF( NOCONJ )THEN
+ DO 120, I = MAX( 1, J - K ), J - 1
+ TEMP = TEMP - A( L + I, J )*X( IX )
+ IX = IX + INCX
+ 120 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( KPLUS1, J )
+ ELSE
+ DO 130, I = MAX( 1, J - K ), J - 1
+ TEMP = TEMP - DCONJG( A( L + I, J ) )*X( IX )
+ IX = IX + INCX
+ 130 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( KPLUS1, J ) )
+ END IF
+ X( JX ) = TEMP
+ JX = JX + INCX
+ IF( J.GT.K )
+ $ KX = KX + INCX
+ 140 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 170, J = N, 1, -1
+ TEMP = X( J )
+ L = 1 - J
+ IF( NOCONJ )THEN
+ DO 150, I = MIN( N, J + K ), J + 1, -1
+ TEMP = TEMP - A( L + I, J )*X( I )
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( 1, J )
+ ELSE
+ DO 160, I = MIN( N, J + K ), J + 1, -1
+ TEMP = TEMP - DCONJG( A( L + I, J ) )*X( I )
+ 160 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( 1, J ) )
+ END IF
+ X( J ) = TEMP
+ 170 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 200, J = N, 1, -1
+ TEMP = X( JX )
+ IX = KX
+ L = 1 - J
+ IF( NOCONJ )THEN
+ DO 180, I = MIN( N, J + K ), J + 1, -1
+ TEMP = TEMP - A( L + I, J )*X( IX )
+ IX = IX - INCX
+ 180 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( 1, J )
+ ELSE
+ DO 190, I = MIN( N, J + K ), J + 1, -1
+ TEMP = TEMP - DCONJG( A( L + I, J ) )*X( IX )
+ IX = IX - INCX
+ 190 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( 1, J ) )
+ END IF
+ X( JX ) = TEMP
+ JX = JX - INCX
+ IF( ( N - J ).GE.K )
+ $ KX = KX - INCX
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTBSV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztpmv.f b/2.3-1/src/fortran/blas/ztpmv.f
new file mode 100644
index 00000000..4fad3a8b
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztpmv.f
@@ -0,0 +1,338 @@
+ SUBROUTINE ZTPMV ( UPLO, TRANS, DIAG, N, AP, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ COMPLEX*16 AP( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTPMV performs one of the matrix-vector operations
+*
+* x := A*x, or x := A'*x, or x := conjg( A' )*x,
+*
+* where x is an n element vector and A is an n by n unit, or non-unit,
+* upper or lower triangular matrix, supplied in packed form.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' x := A*x.
+*
+* TRANS = 'T' or 't' x := A'*x.
+*
+* TRANS = 'C' or 'c' x := conjg( A' )*x.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* AP - COMPLEX*16 array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+* respectively, and so on.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+* respectively, and so on.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x. On exit, X is overwritten with the
+* tranformed vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, K, KK, KX
+ LOGICAL NOCONJ, NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTPMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of AP are
+* accessed sequentially with one pass through AP.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x:= A*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ K = KK
+ DO 10, I = 1, J - 1
+ X( I ) = X( I ) + TEMP*AP( K )
+ K = K + 1
+ 10 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*AP( KK + J - 1 )
+ END IF
+ KK = KK + J
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 30, K = KK, KK + J - 2
+ X( IX ) = X( IX ) + TEMP*AP( K )
+ IX = IX + INCX
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*AP( KK + J - 1 )
+ END IF
+ JX = JX + INCX
+ KK = KK + J
+ 40 CONTINUE
+ END IF
+ ELSE
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ K = KK
+ DO 50, I = N, J + 1, -1
+ X( I ) = X( I ) + TEMP*AP( K )
+ K = K - 1
+ 50 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*AP( KK - N + J )
+ END IF
+ KK = KK - ( N - J + 1 )
+ 60 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 80, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 70, K = KK, KK - ( N - ( J + 1 ) ), -1
+ X( IX ) = X( IX ) + TEMP*AP( K )
+ IX = IX - INCX
+ 70 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*AP( KK - N + J )
+ END IF
+ JX = JX - INCX
+ KK = KK - ( N - J + 1 )
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := A'*x or x := conjg( A' )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = N, 1, -1
+ TEMP = X( J )
+ K = KK - 1
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ DO 90, I = J - 1, 1, -1
+ TEMP = TEMP + AP( K )*X( I )
+ K = K - 1
+ 90 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( AP( KK ) )
+ DO 100, I = J - 1, 1, -1
+ TEMP = TEMP + DCONJG( AP( K ) )*X( I )
+ K = K - 1
+ 100 CONTINUE
+ END IF
+ X( J ) = TEMP
+ KK = KK - J
+ 110 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 140, J = N, 1, -1
+ TEMP = X( JX )
+ IX = JX
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ DO 120, K = KK - 1, KK - J + 1, -1
+ IX = IX - INCX
+ TEMP = TEMP + AP( K )*X( IX )
+ 120 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( AP( KK ) )
+ DO 130, K = KK - 1, KK - J + 1, -1
+ IX = IX - INCX
+ TEMP = TEMP + DCONJG( AP( K ) )*X( IX )
+ 130 CONTINUE
+ END IF
+ X( JX ) = TEMP
+ JX = JX - INCX
+ KK = KK - J
+ 140 CONTINUE
+ END IF
+ ELSE
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 170, J = 1, N
+ TEMP = X( J )
+ K = KK + 1
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ DO 150, I = J + 1, N
+ TEMP = TEMP + AP( K )*X( I )
+ K = K + 1
+ 150 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( AP( KK ) )
+ DO 160, I = J + 1, N
+ TEMP = TEMP + DCONJG( AP( K ) )*X( I )
+ K = K + 1
+ 160 CONTINUE
+ END IF
+ X( J ) = TEMP
+ KK = KK + ( N - J + 1 )
+ 170 CONTINUE
+ ELSE
+ JX = KX
+ DO 200, J = 1, N
+ TEMP = X( JX )
+ IX = JX
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*AP( KK )
+ DO 180, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ TEMP = TEMP + AP( K )*X( IX )
+ 180 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( AP( KK ) )
+ DO 190, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ TEMP = TEMP + DCONJG( AP( K ) )*X( IX )
+ 190 CONTINUE
+ END IF
+ X( JX ) = TEMP
+ JX = JX + INCX
+ KK = KK + ( N - J + 1 )
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTPMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztpsv.f b/2.3-1/src/fortran/blas/ztpsv.f
new file mode 100644
index 00000000..8649f474
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztpsv.f
@@ -0,0 +1,341 @@
+ SUBROUTINE ZTPSV ( UPLO, TRANS, DIAG, N, AP, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ COMPLEX*16 AP( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTPSV solves one of the systems of equations
+*
+* A*x = b, or A'*x = b, or conjg( A' )*x = b,
+*
+* where b and x are n element vectors and A is an n by n unit, or
+* non-unit, upper or lower triangular matrix, supplied in packed form.
+*
+* No test for singularity or near-singularity is included in this
+* routine. Such tests must be performed before calling this routine.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the equations to be solved as
+* follows:
+*
+* TRANS = 'N' or 'n' A*x = b.
+*
+* TRANS = 'T' or 't' A'*x = b.
+*
+* TRANS = 'C' or 'c' conjg( A' )*x = b.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* AP - COMPLEX*16 array of DIMENSION at least
+* ( ( n*( n + 1 ) )/2 ).
+* Before entry with UPLO = 'U' or 'u', the array AP must
+* contain the upper triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+* respectively, and so on.
+* Before entry with UPLO = 'L' or 'l', the array AP must
+* contain the lower triangular matrix packed sequentially,
+* column by column, so that AP( 1 ) contains a( 1, 1 ),
+* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+* respectively, and so on.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced, but are assumed to be unity.
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element right-hand side vector b. On exit, X is overwritten
+* with the solution vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, K, KK, KX
+ LOGICAL NOCONJ, NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 7
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTPSV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of AP are
+* accessed sequentially with one pass through AP.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := inv( A )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/AP( KK )
+ TEMP = X( J )
+ K = KK - 1
+ DO 10, I = J - 1, 1, -1
+ X( I ) = X( I ) - TEMP*AP( K )
+ K = K - 1
+ 10 CONTINUE
+ END IF
+ KK = KK - J
+ 20 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 40, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/AP( KK )
+ TEMP = X( JX )
+ IX = JX
+ DO 30, K = KK - 1, KK - J + 1, -1
+ IX = IX - INCX
+ X( IX ) = X( IX ) - TEMP*AP( K )
+ 30 CONTINUE
+ END IF
+ JX = JX - INCX
+ KK = KK - J
+ 40 CONTINUE
+ END IF
+ ELSE
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/AP( KK )
+ TEMP = X( J )
+ K = KK + 1
+ DO 50, I = J + 1, N
+ X( I ) = X( I ) - TEMP*AP( K )
+ K = K + 1
+ 50 CONTINUE
+ END IF
+ KK = KK + ( N - J + 1 )
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/AP( KK )
+ TEMP = X( JX )
+ IX = JX
+ DO 70, K = KK + 1, KK + N - J
+ IX = IX + INCX
+ X( IX ) = X( IX ) - TEMP*AP( K )
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ KK = KK + ( N - J + 1 )
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := inv( A' )*x or x := inv( conjg( A' ) )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ KK = 1
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = 1, N
+ TEMP = X( J )
+ K = KK
+ IF( NOCONJ )THEN
+ DO 90, I = 1, J - 1
+ TEMP = TEMP - AP( K )*X( I )
+ K = K + 1
+ 90 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK + J - 1 )
+ ELSE
+ DO 100, I = 1, J - 1
+ TEMP = TEMP - DCONJG( AP( K ) )*X( I )
+ K = K + 1
+ 100 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( AP( KK + J - 1 ) )
+ END IF
+ X( J ) = TEMP
+ KK = KK + J
+ 110 CONTINUE
+ ELSE
+ JX = KX
+ DO 140, J = 1, N
+ TEMP = X( JX )
+ IX = KX
+ IF( NOCONJ )THEN
+ DO 120, K = KK, KK + J - 2
+ TEMP = TEMP - AP( K )*X( IX )
+ IX = IX + INCX
+ 120 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK + J - 1 )
+ ELSE
+ DO 130, K = KK, KK + J - 2
+ TEMP = TEMP - DCONJG( AP( K ) )*X( IX )
+ IX = IX + INCX
+ 130 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( AP( KK + J - 1 ) )
+ END IF
+ X( JX ) = TEMP
+ JX = JX + INCX
+ KK = KK + J
+ 140 CONTINUE
+ END IF
+ ELSE
+ KK = ( N*( N + 1 ) )/2
+ IF( INCX.EQ.1 )THEN
+ DO 170, J = N, 1, -1
+ TEMP = X( J )
+ K = KK
+ IF( NOCONJ )THEN
+ DO 150, I = N, J + 1, -1
+ TEMP = TEMP - AP( K )*X( I )
+ K = K - 1
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK - N + J )
+ ELSE
+ DO 160, I = N, J + 1, -1
+ TEMP = TEMP - DCONJG( AP( K ) )*X( I )
+ K = K - 1
+ 160 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( AP( KK - N + J ) )
+ END IF
+ X( J ) = TEMP
+ KK = KK - ( N - J + 1 )
+ 170 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 200, J = N, 1, -1
+ TEMP = X( JX )
+ IX = KX
+ IF( NOCONJ )THEN
+ DO 180, K = KK, KK - ( N - ( J + 1 ) ), -1
+ TEMP = TEMP - AP( K )*X( IX )
+ IX = IX - INCX
+ 180 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/AP( KK - N + J )
+ ELSE
+ DO 190, K = KK, KK - ( N - ( J + 1 ) ), -1
+ TEMP = TEMP - DCONJG( AP( K ) )*X( IX )
+ IX = IX - INCX
+ 190 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( AP( KK - N + J ) )
+ END IF
+ X( JX ) = TEMP
+ JX = JX - INCX
+ KK = KK - ( N - J + 1 )
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTPSV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztrmm.f b/2.3-1/src/fortran/blas/ztrmm.f
new file mode 100644
index 00000000..30910d1d
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztrmm.f
@@ -0,0 +1,392 @@
+ SUBROUTINE ZTRMM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,
+ $ B, LDB )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
+ INTEGER M, N, LDA, LDB
+ COMPLEX*16 ALPHA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRMM performs one of the matrix-matrix operations
+*
+* B := alpha*op( A )*B, or B := alpha*B*op( A )
+*
+* where alpha is a scalar, B is an m by n matrix, A is a unit, or
+* non-unit, upper or lower triangular matrix and op( A ) is one of
+*
+* op( A ) = A or op( A ) = A' or op( A ) = conjg( A' ).
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether op( A ) multiplies B from
+* the left or right as follows:
+*
+* SIDE = 'L' or 'l' B := alpha*op( A )*B.
+*
+* SIDE = 'R' or 'r' B := alpha*B*op( A ).
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix A is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n' op( A ) = A.
+*
+* TRANSA = 'T' or 't' op( A ) = A'.
+*
+* TRANSA = 'C' or 'c' op( A ) = conjg( A' ).
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit triangular
+* as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of B. M must be at
+* least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of B. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha. When alpha is
+* zero then A is not referenced and B need not be set before
+* entry.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, k ), where k is m
+* when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.
+* Before entry with UPLO = 'U' or 'u', the leading k by k
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading k by k
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+* then LDA must be at least max( 1, n ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the matrix B, and on exit is overwritten by the
+* transformed matrix.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* .. Local Scalars ..
+ LOGICAL LSIDE, NOCONJ, NOUNIT, UPPER
+ INTEGER I, INFO, J, K, NROWA
+ COMPLEX*16 TEMP
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ LSIDE = LSAME( SIDE , 'L' )
+ IF( LSIDE )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ NOCONJ = LSAME( TRANSA, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+ UPPER = LSAME( UPLO , 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.LSIDE ).AND.
+ $ ( .NOT.LSAME( SIDE , 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( ( .NOT.LSAME( TRANSA, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'T' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'C' ) ) )THEN
+ INFO = 3
+ ELSE IF( ( .NOT.LSAME( DIAG , 'U' ) ).AND.
+ $ ( .NOT.LSAME( DIAG , 'N' ) ) )THEN
+ INFO = 4
+ ELSE IF( M .LT.0 )THEN
+ INFO = 5
+ ELSE IF( N .LT.0 )THEN
+ INFO = 6
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 9
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTRMM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ B( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSIDE )THEN
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*A*B.
+*
+ IF( UPPER )THEN
+ DO 50, J = 1, N
+ DO 40, K = 1, M
+ IF( B( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*B( K, J )
+ DO 30, I = 1, K - 1
+ B( I, J ) = B( I, J ) + TEMP*A( I, K )
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( K, K )
+ B( K, J ) = TEMP
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ ELSE
+ DO 80, J = 1, N
+ DO 70 K = M, 1, -1
+ IF( B( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*B( K, J )
+ B( K, J ) = TEMP
+ IF( NOUNIT )
+ $ B( K, J ) = B( K, J )*A( K, K )
+ DO 60, I = K + 1, M
+ B( I, J ) = B( I, J ) + TEMP*A( I, K )
+ 60 CONTINUE
+ END IF
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*A'*B or B := alpha*conjg( A' )*B.
+*
+ IF( UPPER )THEN
+ DO 120, J = 1, N
+ DO 110, I = M, 1, -1
+ TEMP = B( I, J )
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( I, I )
+ DO 90, K = 1, I - 1
+ TEMP = TEMP + A( K, I )*B( K, J )
+ 90 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( I, I ) )
+ DO 100, K = 1, I - 1
+ TEMP = TEMP + DCONJG( A( K, I ) )*B( K, J )
+ 100 CONTINUE
+ END IF
+ B( I, J ) = ALPHA*TEMP
+ 110 CONTINUE
+ 120 CONTINUE
+ ELSE
+ DO 160, J = 1, N
+ DO 150, I = 1, M
+ TEMP = B( I, J )
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( I, I )
+ DO 130, K = I + 1, M
+ TEMP = TEMP + A( K, I )*B( K, J )
+ 130 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( I, I ) )
+ DO 140, K = I + 1, M
+ TEMP = TEMP + DCONJG( A( K, I ) )*B( K, J )
+ 140 CONTINUE
+ END IF
+ B( I, J ) = ALPHA*TEMP
+ 150 CONTINUE
+ 160 CONTINUE
+ END IF
+ END IF
+ ELSE
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*B*A.
+*
+ IF( UPPER )THEN
+ DO 200, J = N, 1, -1
+ TEMP = ALPHA
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 170, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 170 CONTINUE
+ DO 190, K = 1, J - 1
+ IF( A( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*A( K, J )
+ DO 180, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 180 CONTINUE
+ END IF
+ 190 CONTINUE
+ 200 CONTINUE
+ ELSE
+ DO 240, J = 1, N
+ TEMP = ALPHA
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 210, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 210 CONTINUE
+ DO 230, K = J + 1, N
+ IF( A( K, J ).NE.ZERO )THEN
+ TEMP = ALPHA*A( K, J )
+ DO 220, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 220 CONTINUE
+ END IF
+ 230 CONTINUE
+ 240 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*B*A' or B := alpha*B*conjg( A' ).
+*
+ IF( UPPER )THEN
+ DO 280, K = 1, N
+ DO 260, J = 1, K - 1
+ IF( A( J, K ).NE.ZERO )THEN
+ IF( NOCONJ )THEN
+ TEMP = ALPHA*A( J, K )
+ ELSE
+ TEMP = ALPHA*DCONJG( A( J, K ) )
+ END IF
+ DO 250, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 250 CONTINUE
+ END IF
+ 260 CONTINUE
+ TEMP = ALPHA
+ IF( NOUNIT )THEN
+ IF( NOCONJ )THEN
+ TEMP = TEMP*A( K, K )
+ ELSE
+ TEMP = TEMP*DCONJG( A( K, K ) )
+ END IF
+ END IF
+ IF( TEMP.NE.ONE )THEN
+ DO 270, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 270 CONTINUE
+ END IF
+ 280 CONTINUE
+ ELSE
+ DO 320, K = N, 1, -1
+ DO 300, J = K + 1, N
+ IF( A( J, K ).NE.ZERO )THEN
+ IF( NOCONJ )THEN
+ TEMP = ALPHA*A( J, K )
+ ELSE
+ TEMP = ALPHA*DCONJG( A( J, K ) )
+ END IF
+ DO 290, I = 1, M
+ B( I, J ) = B( I, J ) + TEMP*B( I, K )
+ 290 CONTINUE
+ END IF
+ 300 CONTINUE
+ TEMP = ALPHA
+ IF( NOUNIT )THEN
+ IF( NOCONJ )THEN
+ TEMP = TEMP*A( K, K )
+ ELSE
+ TEMP = TEMP*DCONJG( A( K, K ) )
+ END IF
+ END IF
+ IF( TEMP.NE.ONE )THEN
+ DO 310, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 310 CONTINUE
+ END IF
+ 320 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTRMM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztrmv.f b/2.3-1/src/fortran/blas/ztrmv.f
new file mode 100644
index 00000000..677e212b
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztrmv.f
@@ -0,0 +1,321 @@
+ SUBROUTINE ZTRMV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRMV performs one of the matrix-vector operations
+*
+* x := A*x, or x := A'*x, or x := conjg( A' )*x,
+*
+* where x is an n element vector and A is an n by n unit, or non-unit,
+* upper or lower triangular matrix.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the operation to be performed as
+* follows:
+*
+* TRANS = 'N' or 'n' x := A*x.
+*
+* TRANS = 'T' or 't' x := A'*x.
+*
+* TRANS = 'C' or 'c' x := conjg( A' )*x.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element vector x. On exit, X is overwritten with the
+* tranformed vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, KX
+ LOGICAL NOCONJ, NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTRMV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := A*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ DO 10, I = 1, J - 1
+ X( I ) = X( I ) + TEMP*A( I, J )
+ 10 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( J, J )
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX
+ DO 40, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 30, I = 1, J - 1
+ X( IX ) = X( IX ) + TEMP*A( I, J )
+ IX = IX + INCX
+ 30 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( J, J )
+ END IF
+ JX = JX + INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ TEMP = X( J )
+ DO 50, I = N, J + 1, -1
+ X( I ) = X( I ) + TEMP*A( I, J )
+ 50 CONTINUE
+ IF( NOUNIT )
+ $ X( J ) = X( J )*A( J, J )
+ END IF
+ 60 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 80, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ TEMP = X( JX )
+ IX = KX
+ DO 70, I = N, J + 1, -1
+ X( IX ) = X( IX ) + TEMP*A( I, J )
+ IX = IX - INCX
+ 70 CONTINUE
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )*A( J, J )
+ END IF
+ JX = JX - INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := A'*x or x := conjg( A' )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = N, 1, -1
+ TEMP = X( J )
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 90, I = J - 1, 1, -1
+ TEMP = TEMP + A( I, J )*X( I )
+ 90 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( J, J ) )
+ DO 100, I = J - 1, 1, -1
+ TEMP = TEMP + DCONJG( A( I, J ) )*X( I )
+ 100 CONTINUE
+ END IF
+ X( J ) = TEMP
+ 110 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 140, J = N, 1, -1
+ TEMP = X( JX )
+ IX = JX
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 120, I = J - 1, 1, -1
+ IX = IX - INCX
+ TEMP = TEMP + A( I, J )*X( IX )
+ 120 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( J, J ) )
+ DO 130, I = J - 1, 1, -1
+ IX = IX - INCX
+ TEMP = TEMP + DCONJG( A( I, J ) )*X( IX )
+ 130 CONTINUE
+ END IF
+ X( JX ) = TEMP
+ JX = JX - INCX
+ 140 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 170, J = 1, N
+ TEMP = X( J )
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 150, I = J + 1, N
+ TEMP = TEMP + A( I, J )*X( I )
+ 150 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( J, J ) )
+ DO 160, I = J + 1, N
+ TEMP = TEMP + DCONJG( A( I, J ) )*X( I )
+ 160 CONTINUE
+ END IF
+ X( J ) = TEMP
+ 170 CONTINUE
+ ELSE
+ JX = KX
+ DO 200, J = 1, N
+ TEMP = X( JX )
+ IX = JX
+ IF( NOCONJ )THEN
+ IF( NOUNIT )
+ $ TEMP = TEMP*A( J, J )
+ DO 180, I = J + 1, N
+ IX = IX + INCX
+ TEMP = TEMP + A( I, J )*X( IX )
+ 180 CONTINUE
+ ELSE
+ IF( NOUNIT )
+ $ TEMP = TEMP*DCONJG( A( J, J ) )
+ DO 190, I = J + 1, N
+ IX = IX + INCX
+ TEMP = TEMP + DCONJG( A( I, J ) )*X( IX )
+ 190 CONTINUE
+ END IF
+ X( JX ) = TEMP
+ JX = JX + INCX
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTRMV .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztrsm.f b/2.3-1/src/fortran/blas/ztrsm.f
new file mode 100644
index 00000000..e414ec66
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztrsm.f
@@ -0,0 +1,414 @@
+ SUBROUTINE ZTRSM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,
+ $ B, LDB )
+* .. Scalar Arguments ..
+ CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
+ INTEGER M, N, LDA, LDB
+ COMPLEX*16 ALPHA
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRSM solves one of the matrix equations
+*
+* op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+*
+* where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+* non-unit, upper or lower triangular matrix and op( A ) is one of
+*
+* op( A ) = A or op( A ) = A' or op( A ) = conjg( A' ).
+*
+* The matrix X is overwritten on B.
+*
+* Parameters
+* ==========
+*
+* SIDE - CHARACTER*1.
+* On entry, SIDE specifies whether op( A ) appears on the left
+* or right of X as follows:
+*
+* SIDE = 'L' or 'l' op( A )*X = alpha*B.
+*
+* SIDE = 'R' or 'r' X*op( A ) = alpha*B.
+*
+* Unchanged on exit.
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix A is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANSA - CHARACTER*1.
+* On entry, TRANSA specifies the form of op( A ) to be used in
+* the matrix multiplication as follows:
+*
+* TRANSA = 'N' or 'n' op( A ) = A.
+*
+* TRANSA = 'T' or 't' op( A ) = A'.
+*
+* TRANSA = 'C' or 'c' op( A ) = conjg( A' ).
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit triangular
+* as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* M - INTEGER.
+* On entry, M specifies the number of rows of B. M must be at
+* least zero.
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the number of columns of B. N must be
+* at least zero.
+* Unchanged on exit.
+*
+* ALPHA - COMPLEX*16 .
+* On entry, ALPHA specifies the scalar alpha. When alpha is
+* zero then A is not referenced and B need not be set before
+* entry.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, k ), where k is m
+* when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.
+* Before entry with UPLO = 'U' or 'u', the leading k by k
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading k by k
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. When SIDE = 'L' or 'l' then
+* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+* then LDA must be at least max( 1, n ).
+* Unchanged on exit.
+*
+* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
+* Before entry, the leading m by n part of the array B must
+* contain the right-hand side matrix B, and on exit is
+* overwritten by the solution matrix X.
+*
+* LDB - INTEGER.
+* On entry, LDB specifies the first dimension of B as declared
+* in the calling (sub) program. LDB must be at least
+* max( 1, m ).
+* Unchanged on exit.
+*
+*
+* Level 3 Blas routine.
+*
+* -- Written on 8-February-1989.
+* Jack Dongarra, Argonne National Laboratory.
+* Iain Duff, AERE Harwell.
+* Jeremy Du Croz, Numerical Algorithms Group Ltd.
+* Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* .. Local Scalars ..
+ LOGICAL LSIDE, NOCONJ, NOUNIT, UPPER
+ INTEGER I, INFO, J, K, NROWA
+ COMPLEX*16 TEMP
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ LSIDE = LSAME( SIDE , 'L' )
+ IF( LSIDE )THEN
+ NROWA = M
+ ELSE
+ NROWA = N
+ END IF
+ NOCONJ = LSAME( TRANSA, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+ UPPER = LSAME( UPLO , 'U' )
+*
+ INFO = 0
+ IF( ( .NOT.LSIDE ).AND.
+ $ ( .NOT.LSAME( SIDE , 'R' ) ) )THEN
+ INFO = 1
+ ELSE IF( ( .NOT.UPPER ).AND.
+ $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN
+ INFO = 2
+ ELSE IF( ( .NOT.LSAME( TRANSA, 'N' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'T' ) ).AND.
+ $ ( .NOT.LSAME( TRANSA, 'C' ) ) )THEN
+ INFO = 3
+ ELSE IF( ( .NOT.LSAME( DIAG , 'U' ) ).AND.
+ $ ( .NOT.LSAME( DIAG , 'N' ) ) )THEN
+ INFO = 4
+ ELSE IF( M .LT.0 )THEN
+ INFO = 5
+ ELSE IF( N .LT.0 )THEN
+ INFO = 6
+ ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN
+ INFO = 9
+ ELSE IF( LDB.LT.MAX( 1, M ) )THEN
+ INFO = 11
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTRSM ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* And when alpha.eq.zero.
+*
+ IF( ALPHA.EQ.ZERO )THEN
+ DO 20, J = 1, N
+ DO 10, I = 1, M
+ B( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ RETURN
+ END IF
+*
+* Start the operations.
+*
+ IF( LSIDE )THEN
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*inv( A )*B.
+*
+ IF( UPPER )THEN
+ DO 60, J = 1, N
+ IF( ALPHA.NE.ONE )THEN
+ DO 30, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 30 CONTINUE
+ END IF
+ DO 50, K = M, 1, -1
+ IF( B( K, J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ B( K, J ) = B( K, J )/A( K, K )
+ DO 40, I = 1, K - 1
+ B( I, J ) = B( I, J ) - B( K, J )*A( I, K )
+ 40 CONTINUE
+ END IF
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 100, J = 1, N
+ IF( ALPHA.NE.ONE )THEN
+ DO 70, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 70 CONTINUE
+ END IF
+ DO 90 K = 1, M
+ IF( B( K, J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ B( K, J ) = B( K, J )/A( K, K )
+ DO 80, I = K + 1, M
+ B( I, J ) = B( I, J ) - B( K, J )*A( I, K )
+ 80 CONTINUE
+ END IF
+ 90 CONTINUE
+ 100 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*inv( A' )*B
+* or B := alpha*inv( conjg( A' ) )*B.
+*
+ IF( UPPER )THEN
+ DO 140, J = 1, N
+ DO 130, I = 1, M
+ TEMP = ALPHA*B( I, J )
+ IF( NOCONJ )THEN
+ DO 110, K = 1, I - 1
+ TEMP = TEMP - A( K, I )*B( K, J )
+ 110 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( I, I )
+ ELSE
+ DO 120, K = 1, I - 1
+ TEMP = TEMP - DCONJG( A( K, I ) )*B( K, J )
+ 120 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( I, I ) )
+ END IF
+ B( I, J ) = TEMP
+ 130 CONTINUE
+ 140 CONTINUE
+ ELSE
+ DO 180, J = 1, N
+ DO 170, I = M, 1, -1
+ TEMP = ALPHA*B( I, J )
+ IF( NOCONJ )THEN
+ DO 150, K = I + 1, M
+ TEMP = TEMP - A( K, I )*B( K, J )
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( I, I )
+ ELSE
+ DO 160, K = I + 1, M
+ TEMP = TEMP - DCONJG( A( K, I ) )*B( K, J )
+ 160 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( I, I ) )
+ END IF
+ B( I, J ) = TEMP
+ 170 CONTINUE
+ 180 CONTINUE
+ END IF
+ END IF
+ ELSE
+ IF( LSAME( TRANSA, 'N' ) )THEN
+*
+* Form B := alpha*B*inv( A ).
+*
+ IF( UPPER )THEN
+ DO 230, J = 1, N
+ IF( ALPHA.NE.ONE )THEN
+ DO 190, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 190 CONTINUE
+ END IF
+ DO 210, K = 1, J - 1
+ IF( A( K, J ).NE.ZERO )THEN
+ DO 200, I = 1, M
+ B( I, J ) = B( I, J ) - A( K, J )*B( I, K )
+ 200 CONTINUE
+ END IF
+ 210 CONTINUE
+ IF( NOUNIT )THEN
+ TEMP = ONE/A( J, J )
+ DO 220, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 220 CONTINUE
+ END IF
+ 230 CONTINUE
+ ELSE
+ DO 280, J = N, 1, -1
+ IF( ALPHA.NE.ONE )THEN
+ DO 240, I = 1, M
+ B( I, J ) = ALPHA*B( I, J )
+ 240 CONTINUE
+ END IF
+ DO 260, K = J + 1, N
+ IF( A( K, J ).NE.ZERO )THEN
+ DO 250, I = 1, M
+ B( I, J ) = B( I, J ) - A( K, J )*B( I, K )
+ 250 CONTINUE
+ END IF
+ 260 CONTINUE
+ IF( NOUNIT )THEN
+ TEMP = ONE/A( J, J )
+ DO 270, I = 1, M
+ B( I, J ) = TEMP*B( I, J )
+ 270 CONTINUE
+ END IF
+ 280 CONTINUE
+ END IF
+ ELSE
+*
+* Form B := alpha*B*inv( A' )
+* or B := alpha*B*inv( conjg( A' ) ).
+*
+ IF( UPPER )THEN
+ DO 330, K = N, 1, -1
+ IF( NOUNIT )THEN
+ IF( NOCONJ )THEN
+ TEMP = ONE/A( K, K )
+ ELSE
+ TEMP = ONE/DCONJG( A( K, K ) )
+ END IF
+ DO 290, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 290 CONTINUE
+ END IF
+ DO 310, J = 1, K - 1
+ IF( A( J, K ).NE.ZERO )THEN
+ IF( NOCONJ )THEN
+ TEMP = A( J, K )
+ ELSE
+ TEMP = DCONJG( A( J, K ) )
+ END IF
+ DO 300, I = 1, M
+ B( I, J ) = B( I, J ) - TEMP*B( I, K )
+ 300 CONTINUE
+ END IF
+ 310 CONTINUE
+ IF( ALPHA.NE.ONE )THEN
+ DO 320, I = 1, M
+ B( I, K ) = ALPHA*B( I, K )
+ 320 CONTINUE
+ END IF
+ 330 CONTINUE
+ ELSE
+ DO 380, K = 1, N
+ IF( NOUNIT )THEN
+ IF( NOCONJ )THEN
+ TEMP = ONE/A( K, K )
+ ELSE
+ TEMP = ONE/DCONJG( A( K, K ) )
+ END IF
+ DO 340, I = 1, M
+ B( I, K ) = TEMP*B( I, K )
+ 340 CONTINUE
+ END IF
+ DO 360, J = K + 1, N
+ IF( A( J, K ).NE.ZERO )THEN
+ IF( NOCONJ )THEN
+ TEMP = A( J, K )
+ ELSE
+ TEMP = DCONJG( A( J, K ) )
+ END IF
+ DO 350, I = 1, M
+ B( I, J ) = B( I, J ) - TEMP*B( I, K )
+ 350 CONTINUE
+ END IF
+ 360 CONTINUE
+ IF( ALPHA.NE.ONE )THEN
+ DO 370, I = 1, M
+ B( I, K ) = ALPHA*B( I, K )
+ 370 CONTINUE
+ END IF
+ 380 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTRSM .
+*
+ END
diff --git a/2.3-1/src/fortran/blas/ztrsv.f b/2.3-1/src/fortran/blas/ztrsv.f
new file mode 100644
index 00000000..d0a57c44
--- /dev/null
+++ b/2.3-1/src/fortran/blas/ztrsv.f
@@ -0,0 +1,324 @@
+ SUBROUTINE ZTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX )
+* .. Scalar Arguments ..
+ INTEGER INCX, LDA, N
+ CHARACTER*1 DIAG, TRANS, UPLO
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRSV solves one of the systems of equations
+*
+* A*x = b, or A'*x = b, or conjg( A' )*x = b,
+*
+* where b and x are n element vectors and A is an n by n unit, or
+* non-unit, upper or lower triangular matrix.
+*
+* No test for singularity or near-singularity is included in this
+* routine. Such tests must be performed before calling this routine.
+*
+* Parameters
+* ==========
+*
+* UPLO - CHARACTER*1.
+* On entry, UPLO specifies whether the matrix is an upper or
+* lower triangular matrix as follows:
+*
+* UPLO = 'U' or 'u' A is an upper triangular matrix.
+*
+* UPLO = 'L' or 'l' A is a lower triangular matrix.
+*
+* Unchanged on exit.
+*
+* TRANS - CHARACTER*1.
+* On entry, TRANS specifies the equations to be solved as
+* follows:
+*
+* TRANS = 'N' or 'n' A*x = b.
+*
+* TRANS = 'T' or 't' A'*x = b.
+*
+* TRANS = 'C' or 'c' conjg( A' )*x = b.
+*
+* Unchanged on exit.
+*
+* DIAG - CHARACTER*1.
+* On entry, DIAG specifies whether or not A is unit
+* triangular as follows:
+*
+* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+*
+* DIAG = 'N' or 'n' A is not assumed to be unit
+* triangular.
+*
+* Unchanged on exit.
+*
+* N - INTEGER.
+* On entry, N specifies the order of the matrix A.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
+* Before entry with UPLO = 'U' or 'u', the leading n by n
+* upper triangular part of the array A must contain the upper
+* triangular matrix and the strictly lower triangular part of
+* A is not referenced.
+* Before entry with UPLO = 'L' or 'l', the leading n by n
+* lower triangular part of the array A must contain the lower
+* triangular matrix and the strictly upper triangular part of
+* A is not referenced.
+* Note that when DIAG = 'U' or 'u', the diagonal elements of
+* A are not referenced either, but are assumed to be unity.
+* Unchanged on exit.
+*
+* LDA - INTEGER.
+* On entry, LDA specifies the first dimension of A as declared
+* in the calling (sub) program. LDA must be at least
+* max( 1, n ).
+* Unchanged on exit.
+*
+* X - COMPLEX*16 array of dimension at least
+* ( 1 + ( n - 1 )*abs( INCX ) ).
+* Before entry, the incremented array X must contain the n
+* element right-hand side vector b. On exit, X is overwritten
+* with the solution vector x.
+*
+* INCX - INTEGER.
+* On entry, INCX specifies the increment for the elements of
+* X. INCX must not be zero.
+* Unchanged on exit.
+*
+*
+* Level 2 Blas routine.
+*
+* -- Written on 22-October-1986.
+* Jack Dongarra, Argonne National Lab.
+* Jeremy Du Croz, Nag Central Office.
+* Sven Hammarling, Nag Central Office.
+* Richard Hanson, Sandia National Labs.
+*
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* .. Local Scalars ..
+ COMPLEX*16 TEMP
+ INTEGER I, INFO, IX, J, JX, KX
+ LOGICAL NOCONJ, NOUNIT
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF ( .NOT.LSAME( UPLO , 'U' ).AND.
+ $ .NOT.LSAME( UPLO , 'L' ) )THEN
+ INFO = 1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ).AND.
+ $ .NOT.LSAME( TRANS, 'T' ).AND.
+ $ .NOT.LSAME( TRANS, 'C' ) )THEN
+ INFO = 2
+ ELSE IF( .NOT.LSAME( DIAG , 'U' ).AND.
+ $ .NOT.LSAME( DIAG , 'N' ) )THEN
+ INFO = 3
+ ELSE IF( N.LT.0 )THEN
+ INFO = 4
+ ELSE IF( LDA.LT.MAX( 1, N ) )THEN
+ INFO = 6
+ ELSE IF( INCX.EQ.0 )THEN
+ INFO = 8
+ END IF
+ IF( INFO.NE.0 )THEN
+ CALL XERBLA( 'ZTRSV ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ NOCONJ = LSAME( TRANS, 'T' )
+ NOUNIT = LSAME( DIAG , 'N' )
+*
+* Set up the start point in X if the increment is not unity. This
+* will be ( N - 1 )*INCX too small for descending loops.
+*
+ IF( INCX.LE.0 )THEN
+ KX = 1 - ( N - 1 )*INCX
+ ELSE IF( INCX.NE.1 )THEN
+ KX = 1
+ END IF
+*
+* Start the operations. In this version the elements of A are
+* accessed sequentially with one pass through A.
+*
+ IF( LSAME( TRANS, 'N' ) )THEN
+*
+* Form x := inv( A )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 20, J = N, 1, -1
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( J, J )
+ TEMP = X( J )
+ DO 10, I = J - 1, 1, -1
+ X( I ) = X( I ) - TEMP*A( I, J )
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE
+ JX = KX + ( N - 1 )*INCX
+ DO 40, J = N, 1, -1
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( J, J )
+ TEMP = X( JX )
+ IX = JX
+ DO 30, I = J - 1, 1, -1
+ IX = IX - INCX
+ X( IX ) = X( IX ) - TEMP*A( I, J )
+ 30 CONTINUE
+ END IF
+ JX = JX - INCX
+ 40 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 60, J = 1, N
+ IF( X( J ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( J ) = X( J )/A( J, J )
+ TEMP = X( J )
+ DO 50, I = J + 1, N
+ X( I ) = X( I ) - TEMP*A( I, J )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE
+ JX = KX
+ DO 80, J = 1, N
+ IF( X( JX ).NE.ZERO )THEN
+ IF( NOUNIT )
+ $ X( JX ) = X( JX )/A( J, J )
+ TEMP = X( JX )
+ IX = JX
+ DO 70, I = J + 1, N
+ IX = IX + INCX
+ X( IX ) = X( IX ) - TEMP*A( I, J )
+ 70 CONTINUE
+ END IF
+ JX = JX + INCX
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE
+*
+* Form x := inv( A' )*x or x := inv( conjg( A' ) )*x.
+*
+ IF( LSAME( UPLO, 'U' ) )THEN
+ IF( INCX.EQ.1 )THEN
+ DO 110, J = 1, N
+ TEMP = X( J )
+ IF( NOCONJ )THEN
+ DO 90, I = 1, J - 1
+ TEMP = TEMP - A( I, J )*X( I )
+ 90 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ ELSE
+ DO 100, I = 1, J - 1
+ TEMP = TEMP - DCONJG( A( I, J ) )*X( I )
+ 100 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( J, J ) )
+ END IF
+ X( J ) = TEMP
+ 110 CONTINUE
+ ELSE
+ JX = KX
+ DO 140, J = 1, N
+ IX = KX
+ TEMP = X( JX )
+ IF( NOCONJ )THEN
+ DO 120, I = 1, J - 1
+ TEMP = TEMP - A( I, J )*X( IX )
+ IX = IX + INCX
+ 120 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ ELSE
+ DO 130, I = 1, J - 1
+ TEMP = TEMP - DCONJG( A( I, J ) )*X( IX )
+ IX = IX + INCX
+ 130 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( J, J ) )
+ END IF
+ X( JX ) = TEMP
+ JX = JX + INCX
+ 140 CONTINUE
+ END IF
+ ELSE
+ IF( INCX.EQ.1 )THEN
+ DO 170, J = N, 1, -1
+ TEMP = X( J )
+ IF( NOCONJ )THEN
+ DO 150, I = N, J + 1, -1
+ TEMP = TEMP - A( I, J )*X( I )
+ 150 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ ELSE
+ DO 160, I = N, J + 1, -1
+ TEMP = TEMP - DCONJG( A( I, J ) )*X( I )
+ 160 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( J, J ) )
+ END IF
+ X( J ) = TEMP
+ 170 CONTINUE
+ ELSE
+ KX = KX + ( N - 1 )*INCX
+ JX = KX
+ DO 200, J = N, 1, -1
+ IX = KX
+ TEMP = X( JX )
+ IF( NOCONJ )THEN
+ DO 180, I = N, J + 1, -1
+ TEMP = TEMP - A( I, J )*X( IX )
+ IX = IX - INCX
+ 180 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/A( J, J )
+ ELSE
+ DO 190, I = N, J + 1, -1
+ TEMP = TEMP - DCONJG( A( I, J ) )*X( IX )
+ IX = IX - INCX
+ 190 CONTINUE
+ IF( NOUNIT )
+ $ TEMP = TEMP/DCONJG( A( J, J ) )
+ END IF
+ X( JX ) = TEMP
+ JX = JX - INCX
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTRSV .
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/Makefile.am b/2.3-1/src/fortran/lapack/Makefile.am
new file mode 100644
index 00000000..4bfc54d6
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/Makefile.am
@@ -0,0 +1,322 @@
+##########
+### Sylvestre Ledru <sylvestre.ledru@inria.fr>
+### INRIA - Scilab 2006
+##########
+
+#### Target ######
+modulename=lapack
+
+pkglib_LTLIBRARIES = libscilapack.la
+
+noinst_LTLIBRARIES = libdummy-lapack.la
+
+LAPACK_FORTRAN_SOURCES = dlasv2.f \
+zgeqpf.f \
+zrot.f \
+dpotrf.f \
+zunmr3.f \
+zlanhs.f \
+zgebak.f \
+zbdsqr.f \
+zunmrz.f \
+dgetc2.f \
+zlaqp2.f \
+dsytrd.f \
+dsytd2.f \
+zlange.f \
+dlansp.f \
+dhgeqz.f \
+dlasq2.f \
+dtrevc.f \
+dgelsy.f \
+zladiv.f \
+dlaswp.f \
+dormlq.f \
+dorml2.f \
+dlaexc.f \
+zlahqr.f \
+zdrot.f \
+dlabad.f \
+dlarft.f \
+zlassq.f \
+dlartg.f \
+zlarf.f \
+ztrexc.f \
+zgeev.f \
+dggbal.f \
+dtrtrs.f \
+zlatdf.f \
+dgeqr2.f \
+zlarfg.f \
+dgetrs.f \
+dlag2.f \
+dlaqge.f \
+dpotf2.f \
+zgetrf.f \
+ztgsy2.f \
+zgebal.f \
+dspgst.f \
+dormqr.f \
+drscl.f \
+dtrti2.f \
+dlaset.f \
+dgeesx.f \
+dpocon.f \
+dlasyf.f \
+dgerq2.f \
+dlasq3.f \
+dlansy.f \
+dgehrd.f \
+dgehd2.f \
+dsptrd.f \
+dorgtr.f \
+dormrq.f \
+dorm2r.f \
+dormr2.f \
+zgges.f \
+zunglq.f \
+zlanhe.f \
+zungl2.f \
+zhetrd.f \
+zhetd2.f \
+dlacon.f \
+dgesvx.f \
+zgetf2.f \
+ztgevc.f \
+dsteqr.f \
+dgelqf.f \
+zlarzb.f \
+zlarfx.f \
+dsysv.f \
+zlaqps.f \
+dtzrqf.f \
+dsytrf.f \
+xerbla.f \
+dtrsyl.f \
+dgelss.f \
+dtgsen.f \
+zgecon.f \
+dormbr.f \
+zlatrz.f \
+zungqr.f \
+dlabrd.f \
+dlasq4.f \
+dggev.f \
+dpptrf.f \
+zgelq2.f \
+dgeqpf.f \
+dormr3.f \
+dlanhs.f \
+dgerfs.f \
+dlarz.f \
+zgebrd.f \
+zgebd2.f \
+dgebak.f \
+dormrz.f \
+dbdsqr.f \
+dspev.f \
+dlaqp2.f \
+zung2r.f \
+dlange.f \
+zgeqrf.f \
+dormql.f \
+zgesvd.f \
+dladiv.f \
+dlas2.f \
+dgeequ.f \
+dsytf2.f \
+dlahqr.f \
+zlatrs.f \
+zheev.f \
+ztgex2.f \
+zlaic1.f \
+ztrsen.f \
+zlacgv.f \
+dgees.f \
+dlassq.f \
+zlascl.f \
+dtrexc.f \
+dlasq5.f \
+dormhr.f \
+zgesc2.f \
+dlatdf.f \
+dsycon.f \
+dlarfg.f \
+dorm2l.f \
+dsptrf.f \
+zungbr.f \
+dgesv.f \
+dgetrf.f \
+zhseqr.f \
+dtgsy2.f \
+dlaev2.f \
+dgebal.f \
+zlarfb.f \
+zlahrd.f \
+dlantr.f \
+zgghrd.f \
+dlatzm.f \
+ztgsyl.f \
+ztrtri.f \
+zlatrd.f \
+zlacpy.f \
+zgetri.f \
+dlasr.f \
+zgeqp3.f \
+zungql.f \
+dlanst.f \
+zlarzt.f \
+dorglq.f \
+dorgl2.f \
+dlasq6.f \
+dlasy2.f \
+dopgtr.f \
+dgeqlf.f \
+dgetf2.f \
+dtgevc.f \
+zunghr.f \
+dlarzb.f \
+dlarfx.f \
+zung2l.f \
+zggev.f \
+dzsum1.f \
+dlaqps.f \
+dtrcon.f \
+dlasrt.f \
+dsyev.f \
+dorgqr.f \
+dgecon.f \
+dlatrz.f \
+zlarz.f \
+ztgexc.f \
+zggbak.f \
+ztzrzf.f \
+dpotrs.f \
+dsytri.f \
+dgelq2.f \
+zpotrf.f \
+dgebrd.f \
+dgebd2.f \
+zgetc2.f \
+dorgrq.f \
+dorg2r.f \
+dorgr2.f \
+zhgeqz.f \
+dgeqrf.f \
+dlaln2.f \
+dgesvd.f \
+ztrevc.f \
+zgelsy.f \
+zgees.f \
+zlaswp.f \
+dspgv.f \
+dlanv2.f \
+zunmlq.f \
+dlae2.f \
+zunml2.f \
+dlatrs.f \
+dtgex2.f \
+dlaic1.f \
+dgels.f \
+dtrsen.f \
+zdrscl.f \
+zlarft.f \
+dlascl.f \
+zlartg.f \
+zggbal.f \
+dgesc2.f \
+dgerqf.f \
+zgeqr2.f \
+zgetrs.f \
+ilaenv.f \
+dorgbr.f \
+zpotf2.f \
+dhseqr.f \
+dlarf.f \
+dgegs.f \
+dgeev.f \
+dlarfb.f \
+zlasr.f \
+dlapy2.f \
+zunmqr.f \
+ztrti2.f \
+dlahrd.f \
+dgghrd.f \
+zlaset.f \
+dtgsyl.f \
+dtrtri.f \
+dlatrd.f \
+dlacpy.f \
+dgetri.f \
+zgehrd.f \
+zgehd2.f \
+dgeqp3.f \
+dorgql.f \
+zungtr.f \
+zunm2r.f \
+dlarzt.f \
+dlapmt.f \
+ieeeck.f \
+dlasq1.f \
+dorghr.f \
+zlacon.f \
+dgelsx.f \
+dsterf.f \
+zsteqr.f \
+zgelqf.f \
+dsytrs.f \
+dgges.f \
+dorg2l.f \
+dlapy3.f \
+lsame.f \
+ztrsyl.f \
+izmax1.f \
+ztgsen.f \
+zunmbr.f \
+zlabrd.f \
+dtgexc.f \
+dgeql2.f \
+dlagv2.f \
+dggbak.f \
+dtzrzf.f \
+zlaqr0.f \
+dlacn2.f \
+zlacn2.f \
+dlazq3.f \
+zlahr2.f \
+dlaqr0.f \
+iparmq.f \
+disnan.f \
+dlaisnan.f \
+dlahr2.f \
+zlaqr3.f \
+zlaqr4.f \
+zlaqr5.f \
+dlazq4.f \
+dlaqr3.f \
+dlaqr4.f \
+dlaqr5.f \
+zlaqr2.f \
+zlaqr1.f \
+dlaqr2.f \
+dlaqr1.f
+
+HEAD = $(top_builddir)/includes/lapack.h
+
+libscilapack_la_SOURCES = $(HEAD) $(LAPACK_FORTRAN_SOURCES)
+
+libdummy_lapack_la_SOURCES = dlamch.f slamch.f
+
+libdummy_lapack_la_FFLAGS = `echo "@FFLAGS@"| sed -e 's|-O[0-9+]|-O0|'`
+
+
+libscilapack_la_LIBADD = libdummy-lapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la
+
+libscilapack_la_PKGCONFIG = lapack.pc
+
+libdummy_lapack_la-dlamch.lo: dlamch.f
+ $(LIBTOOL) --tag=F77 --mode=compile $(F77) $(libdummy_lapack_la_FFLAGS) -c -o libdummy_lapack_la-dlamch.lo `test -f 'dlamch.f' || echo '$(srcdir)/'`dlamch.f
+
+libdummy_lapack_la-slamch.lo: slamch.f
+ $(LIBTOOL) --tag=F77 --mode=compile $(F77) $(libdummy_lapack_la_FFLAGS) -c -o libdummy_lapack_la-slamch.lo `test -f 'slamch.f' || echo '$(srcdir)/'`slamch.f
diff --git a/2.3-1/src/fortran/lapack/Makefile.in b/2.3-1/src/fortran/lapack/Makefile.in
new file mode 100644
index 00000000..3936d9ae
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/Makefile.in
@@ -0,0 +1,894 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+##########
+### Sylvestre Ledru <sylvestre.ledru@inria.fr>
+### INRIA - Scilab 2006
+##########
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/fortran/lapack
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+libdummy_lapack_la_LIBADD =
+am_libdummy_lapack_la_OBJECTS = libdummy_lapack_la-dlamch.lo \
+ libdummy_lapack_la-slamch.lo
+libdummy_lapack_la_OBJECTS = $(am_libdummy_lapack_la_OBJECTS)
+libdummy_lapack_la_LINK = $(LIBTOOL) --tag=F77 $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(F77LD) \
+ $(libdummy_lapack_la_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+libscilapack_la_DEPENDENCIES = libdummy-lapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la
+am__objects_1 =
+am__objects_2 = dlasv2.lo zgeqpf.lo zrot.lo dpotrf.lo zunmr3.lo \
+ zlanhs.lo zgebak.lo zbdsqr.lo zunmrz.lo dgetc2.lo zlaqp2.lo \
+ dsytrd.lo dsytd2.lo zlange.lo dlansp.lo dhgeqz.lo dlasq2.lo \
+ dtrevc.lo dgelsy.lo zladiv.lo dlaswp.lo dormlq.lo dorml2.lo \
+ dlaexc.lo zlahqr.lo zdrot.lo dlabad.lo dlarft.lo zlassq.lo \
+ dlartg.lo zlarf.lo ztrexc.lo zgeev.lo dggbal.lo dtrtrs.lo \
+ zlatdf.lo dgeqr2.lo zlarfg.lo dgetrs.lo dlag2.lo dlaqge.lo \
+ dpotf2.lo zgetrf.lo ztgsy2.lo zgebal.lo dspgst.lo dormqr.lo \
+ drscl.lo dtrti2.lo dlaset.lo dgeesx.lo dpocon.lo dlasyf.lo \
+ dgerq2.lo dlasq3.lo dlansy.lo dgehrd.lo dgehd2.lo dsptrd.lo \
+ dorgtr.lo dormrq.lo dorm2r.lo dormr2.lo zgges.lo zunglq.lo \
+ zlanhe.lo zungl2.lo zhetrd.lo zhetd2.lo dlacon.lo dgesvx.lo \
+ zgetf2.lo ztgevc.lo dsteqr.lo dgelqf.lo zlarzb.lo zlarfx.lo \
+ dsysv.lo zlaqps.lo dtzrqf.lo dsytrf.lo xerbla.lo dtrsyl.lo \
+ dgelss.lo dtgsen.lo zgecon.lo dormbr.lo zlatrz.lo zungqr.lo \
+ dlabrd.lo dlasq4.lo dggev.lo dpptrf.lo zgelq2.lo dgeqpf.lo \
+ dormr3.lo dlanhs.lo dgerfs.lo dlarz.lo zgebrd.lo zgebd2.lo \
+ dgebak.lo dormrz.lo dbdsqr.lo dspev.lo dlaqp2.lo zung2r.lo \
+ dlange.lo zgeqrf.lo dormql.lo zgesvd.lo dladiv.lo dlas2.lo \
+ dgeequ.lo dsytf2.lo dlahqr.lo zlatrs.lo zheev.lo ztgex2.lo \
+ zlaic1.lo ztrsen.lo zlacgv.lo dgees.lo dlassq.lo zlascl.lo \
+ dtrexc.lo dlasq5.lo dormhr.lo zgesc2.lo dlatdf.lo dsycon.lo \
+ dlarfg.lo dorm2l.lo dsptrf.lo zungbr.lo dgesv.lo dgetrf.lo \
+ zhseqr.lo dtgsy2.lo dlaev2.lo dgebal.lo zlarfb.lo zlahrd.lo \
+ dlantr.lo zgghrd.lo dlatzm.lo ztgsyl.lo ztrtri.lo zlatrd.lo \
+ zlacpy.lo zgetri.lo dlasr.lo zgeqp3.lo zungql.lo dlanst.lo \
+ zlarzt.lo dorglq.lo dorgl2.lo dlasq6.lo dlasy2.lo dopgtr.lo \
+ dgeqlf.lo dgetf2.lo dtgevc.lo zunghr.lo dlarzb.lo dlarfx.lo \
+ zung2l.lo zggev.lo dzsum1.lo dlaqps.lo dtrcon.lo dlasrt.lo \
+ dsyev.lo dorgqr.lo dgecon.lo dlatrz.lo zlarz.lo ztgexc.lo \
+ zggbak.lo ztzrzf.lo dpotrs.lo dsytri.lo dgelq2.lo zpotrf.lo \
+ dgebrd.lo dgebd2.lo zgetc2.lo dorgrq.lo dorg2r.lo dorgr2.lo \
+ zhgeqz.lo dgeqrf.lo dlaln2.lo dgesvd.lo ztrevc.lo zgelsy.lo \
+ zgees.lo zlaswp.lo dspgv.lo dlanv2.lo zunmlq.lo dlae2.lo \
+ zunml2.lo dlatrs.lo dtgex2.lo dlaic1.lo dgels.lo dtrsen.lo \
+ zdrscl.lo zlarft.lo dlascl.lo zlartg.lo zggbal.lo dgesc2.lo \
+ dgerqf.lo zgeqr2.lo zgetrs.lo ilaenv.lo dorgbr.lo zpotf2.lo \
+ dhseqr.lo dlarf.lo dgegs.lo dgeev.lo dlarfb.lo zlasr.lo \
+ dlapy2.lo zunmqr.lo ztrti2.lo dlahrd.lo dgghrd.lo zlaset.lo \
+ dtgsyl.lo dtrtri.lo dlatrd.lo dlacpy.lo dgetri.lo zgehrd.lo \
+ zgehd2.lo dgeqp3.lo dorgql.lo zungtr.lo zunm2r.lo dlarzt.lo \
+ dlapmt.lo ieeeck.lo dlasq1.lo dorghr.lo zlacon.lo dgelsx.lo \
+ dsterf.lo zsteqr.lo zgelqf.lo dsytrs.lo dgges.lo dorg2l.lo \
+ dlapy3.lo lsame.lo ztrsyl.lo izmax1.lo ztgsen.lo zunmbr.lo \
+ zlabrd.lo dtgexc.lo dgeql2.lo dlagv2.lo dggbak.lo dtzrzf.lo \
+ zlaqr0.lo dlacn2.lo zlacn2.lo dlazq3.lo zlahr2.lo dlaqr0.lo \
+ iparmq.lo disnan.lo dlaisnan.lo dlahr2.lo zlaqr3.lo zlaqr4.lo \
+ zlaqr5.lo dlazq4.lo dlaqr3.lo dlaqr4.lo dlaqr5.lo zlaqr2.lo \
+ zlaqr1.lo dlaqr2.lo dlaqr1.lo
+am_libscilapack_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libscilapack_la_OBJECTS = $(am_libscilapack_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS)
+LTF77COMPILE = $(LIBTOOL) --tag=F77 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS)
+F77LD = $(F77)
+F77LINK = $(LIBTOOL) --tag=F77 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libdummy_lapack_la_SOURCES) $(libscilapack_la_SOURCES)
+DIST_SOURCES = $(libdummy_lapack_la_SOURCES) \
+ $(libscilapack_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#### Target ######
+modulename = lapack
+pkglib_LTLIBRARIES = libscilapack.la
+noinst_LTLIBRARIES = libdummy-lapack.la
+LAPACK_FORTRAN_SOURCES = dlasv2.f \
+zgeqpf.f \
+zrot.f \
+dpotrf.f \
+zunmr3.f \
+zlanhs.f \
+zgebak.f \
+zbdsqr.f \
+zunmrz.f \
+dgetc2.f \
+zlaqp2.f \
+dsytrd.f \
+dsytd2.f \
+zlange.f \
+dlansp.f \
+dhgeqz.f \
+dlasq2.f \
+dtrevc.f \
+dgelsy.f \
+zladiv.f \
+dlaswp.f \
+dormlq.f \
+dorml2.f \
+dlaexc.f \
+zlahqr.f \
+zdrot.f \
+dlabad.f \
+dlarft.f \
+zlassq.f \
+dlartg.f \
+zlarf.f \
+ztrexc.f \
+zgeev.f \
+dggbal.f \
+dtrtrs.f \
+zlatdf.f \
+dgeqr2.f \
+zlarfg.f \
+dgetrs.f \
+dlag2.f \
+dlaqge.f \
+dpotf2.f \
+zgetrf.f \
+ztgsy2.f \
+zgebal.f \
+dspgst.f \
+dormqr.f \
+drscl.f \
+dtrti2.f \
+dlaset.f \
+dgeesx.f \
+dpocon.f \
+dlasyf.f \
+dgerq2.f \
+dlasq3.f \
+dlansy.f \
+dgehrd.f \
+dgehd2.f \
+dsptrd.f \
+dorgtr.f \
+dormrq.f \
+dorm2r.f \
+dormr2.f \
+zgges.f \
+zunglq.f \
+zlanhe.f \
+zungl2.f \
+zhetrd.f \
+zhetd2.f \
+dlacon.f \
+dgesvx.f \
+zgetf2.f \
+ztgevc.f \
+dsteqr.f \
+dgelqf.f \
+zlarzb.f \
+zlarfx.f \
+dsysv.f \
+zlaqps.f \
+dtzrqf.f \
+dsytrf.f \
+xerbla.f \
+dtrsyl.f \
+dgelss.f \
+dtgsen.f \
+zgecon.f \
+dormbr.f \
+zlatrz.f \
+zungqr.f \
+dlabrd.f \
+dlasq4.f \
+dggev.f \
+dpptrf.f \
+zgelq2.f \
+dgeqpf.f \
+dormr3.f \
+dlanhs.f \
+dgerfs.f \
+dlarz.f \
+zgebrd.f \
+zgebd2.f \
+dgebak.f \
+dormrz.f \
+dbdsqr.f \
+dspev.f \
+dlaqp2.f \
+zung2r.f \
+dlange.f \
+zgeqrf.f \
+dormql.f \
+zgesvd.f \
+dladiv.f \
+dlas2.f \
+dgeequ.f \
+dsytf2.f \
+dlahqr.f \
+zlatrs.f \
+zheev.f \
+ztgex2.f \
+zlaic1.f \
+ztrsen.f \
+zlacgv.f \
+dgees.f \
+dlassq.f \
+zlascl.f \
+dtrexc.f \
+dlasq5.f \
+dormhr.f \
+zgesc2.f \
+dlatdf.f \
+dsycon.f \
+dlarfg.f \
+dorm2l.f \
+dsptrf.f \
+zungbr.f \
+dgesv.f \
+dgetrf.f \
+zhseqr.f \
+dtgsy2.f \
+dlaev2.f \
+dgebal.f \
+zlarfb.f \
+zlahrd.f \
+dlantr.f \
+zgghrd.f \
+dlatzm.f \
+ztgsyl.f \
+ztrtri.f \
+zlatrd.f \
+zlacpy.f \
+zgetri.f \
+dlasr.f \
+zgeqp3.f \
+zungql.f \
+dlanst.f \
+zlarzt.f \
+dorglq.f \
+dorgl2.f \
+dlasq6.f \
+dlasy2.f \
+dopgtr.f \
+dgeqlf.f \
+dgetf2.f \
+dtgevc.f \
+zunghr.f \
+dlarzb.f \
+dlarfx.f \
+zung2l.f \
+zggev.f \
+dzsum1.f \
+dlaqps.f \
+dtrcon.f \
+dlasrt.f \
+dsyev.f \
+dorgqr.f \
+dgecon.f \
+dlatrz.f \
+zlarz.f \
+ztgexc.f \
+zggbak.f \
+ztzrzf.f \
+dpotrs.f \
+dsytri.f \
+dgelq2.f \
+zpotrf.f \
+dgebrd.f \
+dgebd2.f \
+zgetc2.f \
+dorgrq.f \
+dorg2r.f \
+dorgr2.f \
+zhgeqz.f \
+dgeqrf.f \
+dlaln2.f \
+dgesvd.f \
+ztrevc.f \
+zgelsy.f \
+zgees.f \
+zlaswp.f \
+dspgv.f \
+dlanv2.f \
+zunmlq.f \
+dlae2.f \
+zunml2.f \
+dlatrs.f \
+dtgex2.f \
+dlaic1.f \
+dgels.f \
+dtrsen.f \
+zdrscl.f \
+zlarft.f \
+dlascl.f \
+zlartg.f \
+zggbal.f \
+dgesc2.f \
+dgerqf.f \
+zgeqr2.f \
+zgetrs.f \
+ilaenv.f \
+dorgbr.f \
+zpotf2.f \
+dhseqr.f \
+dlarf.f \
+dgegs.f \
+dgeev.f \
+dlarfb.f \
+zlasr.f \
+dlapy2.f \
+zunmqr.f \
+ztrti2.f \
+dlahrd.f \
+dgghrd.f \
+zlaset.f \
+dtgsyl.f \
+dtrtri.f \
+dlatrd.f \
+dlacpy.f \
+dgetri.f \
+zgehrd.f \
+zgehd2.f \
+dgeqp3.f \
+dorgql.f \
+zungtr.f \
+zunm2r.f \
+dlarzt.f \
+dlapmt.f \
+ieeeck.f \
+dlasq1.f \
+dorghr.f \
+zlacon.f \
+dgelsx.f \
+dsterf.f \
+zsteqr.f \
+zgelqf.f \
+dsytrs.f \
+dgges.f \
+dorg2l.f \
+dlapy3.f \
+lsame.f \
+ztrsyl.f \
+izmax1.f \
+ztgsen.f \
+zunmbr.f \
+zlabrd.f \
+dtgexc.f \
+dgeql2.f \
+dlagv2.f \
+dggbak.f \
+dtzrzf.f \
+zlaqr0.f \
+dlacn2.f \
+zlacn2.f \
+dlazq3.f \
+zlahr2.f \
+dlaqr0.f \
+iparmq.f \
+disnan.f \
+dlaisnan.f \
+dlahr2.f \
+zlaqr3.f \
+zlaqr4.f \
+zlaqr5.f \
+dlazq4.f \
+dlaqr3.f \
+dlaqr4.f \
+dlaqr5.f \
+zlaqr2.f \
+zlaqr1.f \
+dlaqr2.f \
+dlaqr1.f
+
+HEAD = $(top_builddir)/includes/lapack.h
+libscilapack_la_SOURCES = $(HEAD) $(LAPACK_FORTRAN_SOURCES)
+libdummy_lapack_la_SOURCES = dlamch.f slamch.f
+libdummy_lapack_la_FFLAGS = `echo "@FFLAGS@"| sed -e 's|-O[0-9+]|-O0|'`
+libscilapack_la_LIBADD = libdummy-lapack.la \
+ $(top_builddir)/src/fortran/blas/libsciblas.la
+
+libscilapack_la_PKGCONFIG = lapack.pc
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .f .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fortran/lapack/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/fortran/lapack/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libdummy-lapack.la: $(libdummy_lapack_la_OBJECTS) $(libdummy_lapack_la_DEPENDENCIES)
+ $(libdummy_lapack_la_LINK) $(libdummy_lapack_la_OBJECTS) $(libdummy_lapack_la_LIBADD) $(LIBS)
+libscilapack.la: $(libscilapack_la_OBJECTS) $(libscilapack_la_DEPENDENCIES)
+ $(F77LINK) -rpath $(pkglibdir) $(libscilapack_la_OBJECTS) $(libscilapack_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+.f.o:
+ $(F77COMPILE) -c -o $@ $<
+
+.f.obj:
+ $(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+ $(LTF77COMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES \
+ ctags distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-pkglibLTLIBRARIES install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-pkglibLTLIBRARIES
+
+
+libdummy_lapack_la-dlamch.lo: dlamch.f
+ $(LIBTOOL) --tag=F77 --mode=compile $(F77) $(libdummy_lapack_la_FFLAGS) -c -o libdummy_lapack_la-dlamch.lo `test -f 'dlamch.f' || echo '$(srcdir)/'`dlamch.f
+
+libdummy_lapack_la-slamch.lo: slamch.f
+ $(LIBTOOL) --tag=F77 --mode=compile $(F77) $(libdummy_lapack_la_FFLAGS) -c -o libdummy_lapack_la-slamch.lo `test -f 'slamch.f' || echo '$(srcdir)/'`slamch.f
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/2.3-1/src/fortran/lapack/README b/2.3-1/src/fortran/lapack/README
new file mode 100644
index 00000000..c14fb64f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/README
@@ -0,0 +1,5 @@
+This directory contains LAPACK routines.
+File xerbla.f is not used.
+A customized version of xerbla
+for Scilab is in SCIDIR/system/xerbla.f
+
diff --git a/2.3-1/src/fortran/lapack/dbdsqr.f b/2.3-1/src/fortran/lapack/dbdsqr.f
new file mode 100644
index 00000000..b9f87ec1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dbdsqr.f
@@ -0,0 +1,742 @@
+ SUBROUTINE DBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,
+ $ LDU, C, LDC, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( LDC, * ), D( * ), E( * ), U( LDU, * ),
+ $ VT( LDVT, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DBDSQR computes the singular values and, optionally, the right and/or
+* left singular vectors from the singular value decomposition (SVD) of
+* a real N-by-N (upper or lower) bidiagonal matrix B using the implicit
+* zero-shift QR algorithm. The SVD of B has the form
+*
+* B = Q * S * P**T
+*
+* where S is the diagonal matrix of singular values, Q is an orthogonal
+* matrix of left singular vectors, and P is an orthogonal matrix of
+* right singular vectors. If left singular vectors are requested, this
+* subroutine actually returns U*Q instead of Q, and, if right singular
+* vectors are requested, this subroutine returns P**T*VT instead of
+* P**T, for given real input matrices U and VT. When U and VT are the
+* orthogonal matrices that reduce a general matrix A to bidiagonal
+* form: A = U*B*VT, as computed by DGEBRD, then
+*
+* A = (U*Q) * S * (P**T*VT)
+*
+* is the SVD of A. Optionally, the subroutine may also compute Q**T*C
+* for a given real input matrix C.
+*
+* See "Computing Small Singular Values of Bidiagonal Matrices With
+* Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
+* LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11,
+* no. 5, pp. 873-912, Sept 1990) and
+* "Accurate singular values and differential qd algorithms," by
+* B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics
+* Department, University of California at Berkeley, July 1992
+* for a detailed description of the algorithm.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': B is upper bidiagonal;
+* = 'L': B is lower bidiagonal.
+*
+* N (input) INTEGER
+* The order of the matrix B. N >= 0.
+*
+* NCVT (input) INTEGER
+* The number of columns of the matrix VT. NCVT >= 0.
+*
+* NRU (input) INTEGER
+* The number of rows of the matrix U. NRU >= 0.
+*
+* NCC (input) INTEGER
+* The number of columns of the matrix C. NCC >= 0.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the n diagonal elements of the bidiagonal matrix B.
+* On exit, if INFO=0, the singular values of B in decreasing
+* order.
+*
+* E (input/output) DOUBLE PRECISION array, dimension (N-1)
+* On entry, the N-1 offdiagonal elements of the bidiagonal
+* matrix B.
+* On exit, if INFO = 0, E is destroyed; if INFO > 0, D and E
+* will contain the diagonal and superdiagonal elements of a
+* bidiagonal matrix orthogonally equivalent to the one given
+* as input.
+*
+* VT (input/output) DOUBLE PRECISION array, dimension (LDVT, NCVT)
+* On entry, an N-by-NCVT matrix VT.
+* On exit, VT is overwritten by P**T * VT.
+* Not referenced if NCVT = 0.
+*
+* LDVT (input) INTEGER
+* The leading dimension of the array VT.
+* LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if NCVT = 0.
+*
+* U (input/output) DOUBLE PRECISION array, dimension (LDU, N)
+* On entry, an NRU-by-N matrix U.
+* On exit, U is overwritten by U * Q.
+* Not referenced if NRU = 0.
+*
+* LDU (input) INTEGER
+* The leading dimension of the array U. LDU >= max(1,NRU).
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC, NCC)
+* On entry, an N-by-NCC matrix C.
+* On exit, C is overwritten by Q**T * C.
+* Not referenced if NCC = 0.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C.
+* LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC = 0.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+* if NCVT = NRU = NCC = 0, (max(1, 4*N-4)) otherwise
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: If INFO = -i, the i-th argument had an illegal value
+* > 0: the algorithm did not converge; D and E contain the
+* elements of a bidiagonal matrix which is orthogonally
+* similar to the input matrix B; if INFO = i, i
+* elements of E have not converged to zero.
+*
+* Internal Parameters
+* ===================
+*
+* TOLMUL DOUBLE PRECISION, default = max(10,min(100,EPS**(-1/8)))
+* TOLMUL controls the convergence criterion of the QR loop.
+* If it is positive, TOLMUL*EPS is the desired relative
+* precision in the computed singular values.
+* If it is negative, abs(TOLMUL*EPS*sigma_max) is the
+* desired absolute accuracy in the computed singular
+* values (corresponds to relative accuracy
+* abs(TOLMUL*EPS) in the largest singular value.
+* abs(TOLMUL) should be between 1 and 1/EPS, and preferably
+* between 10 (for fast convergence) and .1/EPS
+* (for there to be some accuracy in the results).
+* Default is to lose at either one eighth or 2 of the
+* available decimal digits in each computed singular value
+* (whichever is smaller).
+*
+* MAXITR INTEGER, default = 6
+* MAXITR controls the maximum number of passes of the
+* algorithm through its inner loop. The algorithms stops
+* (and so fails to converge) if the number of passes
+* through the inner loop exceeds MAXITR*N**2.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION NEGONE
+ PARAMETER ( NEGONE = -1.0D0 )
+ DOUBLE PRECISION HNDRTH
+ PARAMETER ( HNDRTH = 0.01D0 )
+ DOUBLE PRECISION TEN
+ PARAMETER ( TEN = 10.0D0 )
+ DOUBLE PRECISION HNDRD
+ PARAMETER ( HNDRD = 100.0D0 )
+ DOUBLE PRECISION MEIGTH
+ PARAMETER ( MEIGTH = -0.125D0 )
+ INTEGER MAXITR
+ PARAMETER ( MAXITR = 6 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LOWER, ROTATE
+ INTEGER I, IDIR, ISUB, ITER, J, LL, LLL, M, MAXIT, NM1,
+ $ NM12, NM13, OLDLL, OLDM
+ DOUBLE PRECISION ABSE, ABSS, COSL, COSR, CS, EPS, F, G, H, MU,
+ $ OLDCS, OLDSN, R, SHIFT, SIGMN, SIGMX, SINL,
+ $ SINR, SLL, SMAX, SMIN, SMINL, SMINOA,
+ $ SN, THRESH, TOL, TOLMUL, UNFL
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARTG, DLAS2, DLASQ1, DLASR, DLASV2, DROT,
+ $ DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ LOWER = LSAME( UPLO, 'L' )
+ IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LOWER ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NCVT.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( NRU.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( NCC.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( ( NCVT.EQ.0 .AND. LDVT.LT.1 ) .OR.
+ $ ( NCVT.GT.0 .AND. LDVT.LT.MAX( 1, N ) ) ) THEN
+ INFO = -9
+ ELSE IF( LDU.LT.MAX( 1, NRU ) ) THEN
+ INFO = -11
+ ELSE IF( ( NCC.EQ.0 .AND. LDC.LT.1 ) .OR.
+ $ ( NCC.GT.0 .AND. LDC.LT.MAX( 1, N ) ) ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DBDSQR', -INFO )
+ RETURN
+ END IF
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( N.EQ.1 )
+ $ GO TO 160
+*
+* ROTATE is true if any singular vectors desired, false otherwise
+*
+ ROTATE = ( NCVT.GT.0 ) .OR. ( NRU.GT.0 ) .OR. ( NCC.GT.0 )
+*
+* If no singular vectors desired, use qd algorithm
+*
+ IF( .NOT.ROTATE ) THEN
+ CALL DLASQ1( N, D, E, WORK, INFO )
+ RETURN
+ END IF
+*
+ NM1 = N - 1
+ NM12 = NM1 + NM1
+ NM13 = NM12 + NM1
+ IDIR = 0
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'Epsilon' )
+ UNFL = DLAMCH( 'Safe minimum' )
+*
+* If matrix lower bidiagonal, rotate to be upper bidiagonal
+* by applying Givens rotations on the left
+*
+ IF( LOWER ) THEN
+ DO 10 I = 1, N - 1
+ CALL DLARTG( D( I ), E( I ), CS, SN, R )
+ D( I ) = R
+ E( I ) = SN*D( I+1 )
+ D( I+1 ) = CS*D( I+1 )
+ WORK( I ) = CS
+ WORK( NM1+I ) = SN
+ 10 CONTINUE
+*
+* Update singular vectors if desired
+*
+ IF( NRU.GT.0 )
+ $ CALL DLASR( 'R', 'V', 'F', NRU, N, WORK( 1 ), WORK( N ), U,
+ $ LDU )
+ IF( NCC.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'F', N, NCC, WORK( 1 ), WORK( N ), C,
+ $ LDC )
+ END IF
+*
+* Compute singular values to relative accuracy TOL
+* (By setting TOL to be negative, algorithm will compute
+* singular values to absolute accuracy ABS(TOL)*norm(input matrix))
+*
+ TOLMUL = MAX( TEN, MIN( HNDRD, EPS**MEIGTH ) )
+ TOL = TOLMUL*EPS
+*
+* Compute approximate maximum, minimum singular values
+*
+ SMAX = ZERO
+ DO 20 I = 1, N
+ SMAX = MAX( SMAX, ABS( D( I ) ) )
+ 20 CONTINUE
+ DO 30 I = 1, N - 1
+ SMAX = MAX( SMAX, ABS( E( I ) ) )
+ 30 CONTINUE
+ SMINL = ZERO
+ IF( TOL.GE.ZERO ) THEN
+*
+* Relative accuracy desired
+*
+ SMINOA = ABS( D( 1 ) )
+ IF( SMINOA.EQ.ZERO )
+ $ GO TO 50
+ MU = SMINOA
+ DO 40 I = 2, N
+ MU = ABS( D( I ) )*( MU / ( MU+ABS( E( I-1 ) ) ) )
+ SMINOA = MIN( SMINOA, MU )
+ IF( SMINOA.EQ.ZERO )
+ $ GO TO 50
+ 40 CONTINUE
+ 50 CONTINUE
+ SMINOA = SMINOA / SQRT( DBLE( N ) )
+ THRESH = MAX( TOL*SMINOA, MAXITR*N*N*UNFL )
+ ELSE
+*
+* Absolute accuracy desired
+*
+ THRESH = MAX( ABS( TOL )*SMAX, MAXITR*N*N*UNFL )
+ END IF
+*
+* Prepare for main iteration loop for the singular values
+* (MAXIT is the maximum number of passes through the inner
+* loop permitted before nonconvergence signalled.)
+*
+ MAXIT = MAXITR*N*N
+ ITER = 0
+ OLDLL = -1
+ OLDM = -1
+*
+* M points to last element of unconverged part of matrix
+*
+ M = N
+*
+* Begin main iteration loop
+*
+ 60 CONTINUE
+*
+* Check for convergence or exceeding iteration count
+*
+ IF( M.LE.1 )
+ $ GO TO 160
+ IF( ITER.GT.MAXIT )
+ $ GO TO 200
+*
+* Find diagonal block of matrix to work on
+*
+ IF( TOL.LT.ZERO .AND. ABS( D( M ) ).LE.THRESH )
+ $ D( M ) = ZERO
+ SMAX = ABS( D( M ) )
+ SMIN = SMAX
+ DO 70 LLL = 1, M - 1
+ LL = M - LLL
+ ABSS = ABS( D( LL ) )
+ ABSE = ABS( E( LL ) )
+ IF( TOL.LT.ZERO .AND. ABSS.LE.THRESH )
+ $ D( LL ) = ZERO
+ IF( ABSE.LE.THRESH )
+ $ GO TO 80
+ SMIN = MIN( SMIN, ABSS )
+ SMAX = MAX( SMAX, ABSS, ABSE )
+ 70 CONTINUE
+ LL = 0
+ GO TO 90
+ 80 CONTINUE
+ E( LL ) = ZERO
+*
+* Matrix splits since E(LL) = 0
+*
+ IF( LL.EQ.M-1 ) THEN
+*
+* Convergence of bottom singular value, return to top of loop
+*
+ M = M - 1
+ GO TO 60
+ END IF
+ 90 CONTINUE
+ LL = LL + 1
+*
+* E(LL) through E(M-1) are nonzero, E(LL-1) is zero
+*
+ IF( LL.EQ.M-1 ) THEN
+*
+* 2 by 2 block, handle separately
+*
+ CALL DLASV2( D( M-1 ), E( M-1 ), D( M ), SIGMN, SIGMX, SINR,
+ $ COSR, SINL, COSL )
+ D( M-1 ) = SIGMX
+ E( M-1 ) = ZERO
+ D( M ) = SIGMN
+*
+* Compute singular vectors, if desired
+*
+ IF( NCVT.GT.0 )
+ $ CALL DROT( NCVT, VT( M-1, 1 ), LDVT, VT( M, 1 ), LDVT, COSR,
+ $ SINR )
+ IF( NRU.GT.0 )
+ $ CALL DROT( NRU, U( 1, M-1 ), 1, U( 1, M ), 1, COSL, SINL )
+ IF( NCC.GT.0 )
+ $ CALL DROT( NCC, C( M-1, 1 ), LDC, C( M, 1 ), LDC, COSL,
+ $ SINL )
+ M = M - 2
+ GO TO 60
+ END IF
+*
+* If working on new submatrix, choose shift direction
+* (from larger end diagonal element towards smaller)
+*
+ IF( LL.GT.OLDM .OR. M.LT.OLDLL ) THEN
+ IF( ABS( D( LL ) ).GE.ABS( D( M ) ) ) THEN
+*
+* Chase bulge from top (big end) to bottom (small end)
+*
+ IDIR = 1
+ ELSE
+*
+* Chase bulge from bottom (big end) to top (small end)
+*
+ IDIR = 2
+ END IF
+ END IF
+*
+* Apply convergence tests
+*
+ IF( IDIR.EQ.1 ) THEN
+*
+* Run convergence test in forward direction
+* First apply standard test to bottom of matrix
+*
+ IF( ABS( E( M-1 ) ).LE.ABS( TOL )*ABS( D( M ) ) .OR.
+ $ ( TOL.LT.ZERO .AND. ABS( E( M-1 ) ).LE.THRESH ) ) THEN
+ E( M-1 ) = ZERO
+ GO TO 60
+ END IF
+*
+ IF( TOL.GE.ZERO ) THEN
+*
+* If relative accuracy desired,
+* apply convergence criterion forward
+*
+ MU = ABS( D( LL ) )
+ SMINL = MU
+ DO 100 LLL = LL, M - 1
+ IF( ABS( E( LLL ) ).LE.TOL*MU ) THEN
+ E( LLL ) = ZERO
+ GO TO 60
+ END IF
+ MU = ABS( D( LLL+1 ) )*( MU / ( MU+ABS( E( LLL ) ) ) )
+ SMINL = MIN( SMINL, MU )
+ 100 CONTINUE
+ END IF
+*
+ ELSE
+*
+* Run convergence test in backward direction
+* First apply standard test to top of matrix
+*
+ IF( ABS( E( LL ) ).LE.ABS( TOL )*ABS( D( LL ) ) .OR.
+ $ ( TOL.LT.ZERO .AND. ABS( E( LL ) ).LE.THRESH ) ) THEN
+ E( LL ) = ZERO
+ GO TO 60
+ END IF
+*
+ IF( TOL.GE.ZERO ) THEN
+*
+* If relative accuracy desired,
+* apply convergence criterion backward
+*
+ MU = ABS( D( M ) )
+ SMINL = MU
+ DO 110 LLL = M - 1, LL, -1
+ IF( ABS( E( LLL ) ).LE.TOL*MU ) THEN
+ E( LLL ) = ZERO
+ GO TO 60
+ END IF
+ MU = ABS( D( LLL ) )*( MU / ( MU+ABS( E( LLL ) ) ) )
+ SMINL = MIN( SMINL, MU )
+ 110 CONTINUE
+ END IF
+ END IF
+ OLDLL = LL
+ OLDM = M
+*
+* Compute shift. First, test if shifting would ruin relative
+* accuracy, and if so set the shift to zero.
+*
+ IF( TOL.GE.ZERO .AND. N*TOL*( SMINL / SMAX ).LE.
+ $ MAX( EPS, HNDRTH*TOL ) ) THEN
+*
+* Use a zero shift to avoid loss of relative accuracy
+*
+ SHIFT = ZERO
+ ELSE
+*
+* Compute the shift from 2-by-2 block at end of matrix
+*
+ IF( IDIR.EQ.1 ) THEN
+ SLL = ABS( D( LL ) )
+ CALL DLAS2( D( M-1 ), E( M-1 ), D( M ), SHIFT, R )
+ ELSE
+ SLL = ABS( D( M ) )
+ CALL DLAS2( D( LL ), E( LL ), D( LL+1 ), SHIFT, R )
+ END IF
+*
+* Test if shift negligible, and if so set to zero
+*
+ IF( SLL.GT.ZERO ) THEN
+ IF( ( SHIFT / SLL )**2.LT.EPS )
+ $ SHIFT = ZERO
+ END IF
+ END IF
+*
+* Increment iteration count
+*
+ ITER = ITER + M - LL
+*
+* If SHIFT = 0, do simplified QR iteration
+*
+ IF( SHIFT.EQ.ZERO ) THEN
+ IF( IDIR.EQ.1 ) THEN
+*
+* Chase bulge from top to bottom
+* Save cosines and sines for later singular vector updates
+*
+ CS = ONE
+ OLDCS = ONE
+ DO 120 I = LL, M - 1
+ CALL DLARTG( D( I )*CS, E( I ), CS, SN, R )
+ IF( I.GT.LL )
+ $ E( I-1 ) = OLDSN*R
+ CALL DLARTG( OLDCS*R, D( I+1 )*SN, OLDCS, OLDSN, D( I ) )
+ WORK( I-LL+1 ) = CS
+ WORK( I-LL+1+NM1 ) = SN
+ WORK( I-LL+1+NM12 ) = OLDCS
+ WORK( I-LL+1+NM13 ) = OLDSN
+ 120 CONTINUE
+ H = D( M )*CS
+ D( M ) = H*OLDCS
+ E( M-1 ) = H*OLDSN
+*
+* Update singular vectors
+*
+ IF( NCVT.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'F', M-LL+1, NCVT, WORK( 1 ),
+ $ WORK( N ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL DLASR( 'R', 'V', 'F', NRU, M-LL+1, WORK( NM12+1 ),
+ $ WORK( NM13+1 ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'F', M-LL+1, NCC, WORK( NM12+1 ),
+ $ WORK( NM13+1 ), C( LL, 1 ), LDC )
+*
+* Test convergence
+*
+ IF( ABS( E( M-1 ) ).LE.THRESH )
+ $ E( M-1 ) = ZERO
+*
+ ELSE
+*
+* Chase bulge from bottom to top
+* Save cosines and sines for later singular vector updates
+*
+ CS = ONE
+ OLDCS = ONE
+ DO 130 I = M, LL + 1, -1
+ CALL DLARTG( D( I )*CS, E( I-1 ), CS, SN, R )
+ IF( I.LT.M )
+ $ E( I ) = OLDSN*R
+ CALL DLARTG( OLDCS*R, D( I-1 )*SN, OLDCS, OLDSN, D( I ) )
+ WORK( I-LL ) = CS
+ WORK( I-LL+NM1 ) = -SN
+ WORK( I-LL+NM12 ) = OLDCS
+ WORK( I-LL+NM13 ) = -OLDSN
+ 130 CONTINUE
+ H = D( LL )*CS
+ D( LL ) = H*OLDCS
+ E( LL ) = H*OLDSN
+*
+* Update singular vectors
+*
+ IF( NCVT.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'B', M-LL+1, NCVT, WORK( NM12+1 ),
+ $ WORK( NM13+1 ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL DLASR( 'R', 'V', 'B', NRU, M-LL+1, WORK( 1 ),
+ $ WORK( N ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'B', M-LL+1, NCC, WORK( 1 ),
+ $ WORK( N ), C( LL, 1 ), LDC )
+*
+* Test convergence
+*
+ IF( ABS( E( LL ) ).LE.THRESH )
+ $ E( LL ) = ZERO
+ END IF
+ ELSE
+*
+* Use nonzero shift
+*
+ IF( IDIR.EQ.1 ) THEN
+*
+* Chase bulge from top to bottom
+* Save cosines and sines for later singular vector updates
+*
+ F = ( ABS( D( LL ) )-SHIFT )*
+ $ ( SIGN( ONE, D( LL ) )+SHIFT / D( LL ) )
+ G = E( LL )
+ DO 140 I = LL, M - 1
+ CALL DLARTG( F, G, COSR, SINR, R )
+ IF( I.GT.LL )
+ $ E( I-1 ) = R
+ F = COSR*D( I ) + SINR*E( I )
+ E( I ) = COSR*E( I ) - SINR*D( I )
+ G = SINR*D( I+1 )
+ D( I+1 ) = COSR*D( I+1 )
+ CALL DLARTG( F, G, COSL, SINL, R )
+ D( I ) = R
+ F = COSL*E( I ) + SINL*D( I+1 )
+ D( I+1 ) = COSL*D( I+1 ) - SINL*E( I )
+ IF( I.LT.M-1 ) THEN
+ G = SINL*E( I+1 )
+ E( I+1 ) = COSL*E( I+1 )
+ END IF
+ WORK( I-LL+1 ) = COSR
+ WORK( I-LL+1+NM1 ) = SINR
+ WORK( I-LL+1+NM12 ) = COSL
+ WORK( I-LL+1+NM13 ) = SINL
+ 140 CONTINUE
+ E( M-1 ) = F
+*
+* Update singular vectors
+*
+ IF( NCVT.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'F', M-LL+1, NCVT, WORK( 1 ),
+ $ WORK( N ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL DLASR( 'R', 'V', 'F', NRU, M-LL+1, WORK( NM12+1 ),
+ $ WORK( NM13+1 ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'F', M-LL+1, NCC, WORK( NM12+1 ),
+ $ WORK( NM13+1 ), C( LL, 1 ), LDC )
+*
+* Test convergence
+*
+ IF( ABS( E( M-1 ) ).LE.THRESH )
+ $ E( M-1 ) = ZERO
+*
+ ELSE
+*
+* Chase bulge from bottom to top
+* Save cosines and sines for later singular vector updates
+*
+ F = ( ABS( D( M ) )-SHIFT )*( SIGN( ONE, D( M ) )+SHIFT /
+ $ D( M ) )
+ G = E( M-1 )
+ DO 150 I = M, LL + 1, -1
+ CALL DLARTG( F, G, COSR, SINR, R )
+ IF( I.LT.M )
+ $ E( I ) = R
+ F = COSR*D( I ) + SINR*E( I-1 )
+ E( I-1 ) = COSR*E( I-1 ) - SINR*D( I )
+ G = SINR*D( I-1 )
+ D( I-1 ) = COSR*D( I-1 )
+ CALL DLARTG( F, G, COSL, SINL, R )
+ D( I ) = R
+ F = COSL*E( I-1 ) + SINL*D( I-1 )
+ D( I-1 ) = COSL*D( I-1 ) - SINL*E( I-1 )
+ IF( I.GT.LL+1 ) THEN
+ G = SINL*E( I-2 )
+ E( I-2 ) = COSL*E( I-2 )
+ END IF
+ WORK( I-LL ) = COSR
+ WORK( I-LL+NM1 ) = -SINR
+ WORK( I-LL+NM12 ) = COSL
+ WORK( I-LL+NM13 ) = -SINL
+ 150 CONTINUE
+ E( LL ) = F
+*
+* Test convergence
+*
+ IF( ABS( E( LL ) ).LE.THRESH )
+ $ E( LL ) = ZERO
+*
+* Update singular vectors if desired
+*
+ IF( NCVT.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'B', M-LL+1, NCVT, WORK( NM12+1 ),
+ $ WORK( NM13+1 ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL DLASR( 'R', 'V', 'B', NRU, M-LL+1, WORK( 1 ),
+ $ WORK( N ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL DLASR( 'L', 'V', 'B', M-LL+1, NCC, WORK( 1 ),
+ $ WORK( N ), C( LL, 1 ), LDC )
+ END IF
+ END IF
+*
+* QR iteration finished, go back and check convergence
+*
+ GO TO 60
+*
+* All singular values converged, so make them positive
+*
+ 160 CONTINUE
+ DO 170 I = 1, N
+ IF( D( I ).LT.ZERO ) THEN
+ D( I ) = -D( I )
+*
+* Change sign of singular vectors, if desired
+*
+ IF( NCVT.GT.0 )
+ $ CALL DSCAL( NCVT, NEGONE, VT( I, 1 ), LDVT )
+ END IF
+ 170 CONTINUE
+*
+* Sort the singular values into decreasing order (insertion sort on
+* singular values, but only one transposition per singular vector)
+*
+ DO 190 I = 1, N - 1
+*
+* Scan for smallest D(I)
+*
+ ISUB = 1
+ SMIN = D( 1 )
+ DO 180 J = 2, N + 1 - I
+ IF( D( J ).LE.SMIN ) THEN
+ ISUB = J
+ SMIN = D( J )
+ END IF
+ 180 CONTINUE
+ IF( ISUB.NE.N+1-I ) THEN
+*
+* Swap singular values and vectors
+*
+ D( ISUB ) = D( N+1-I )
+ D( N+1-I ) = SMIN
+ IF( NCVT.GT.0 )
+ $ CALL DSWAP( NCVT, VT( ISUB, 1 ), LDVT, VT( N+1-I, 1 ),
+ $ LDVT )
+ IF( NRU.GT.0 )
+ $ CALL DSWAP( NRU, U( 1, ISUB ), 1, U( 1, N+1-I ), 1 )
+ IF( NCC.GT.0 )
+ $ CALL DSWAP( NCC, C( ISUB, 1 ), LDC, C( N+1-I, 1 ), LDC )
+ END IF
+ 190 CONTINUE
+ GO TO 220
+*
+* Maximum number of iterations exceeded, failure to converge
+*
+ 200 CONTINUE
+ INFO = 0
+ DO 210 I = 1, N - 1
+ IF( E( I ).NE.ZERO )
+ $ INFO = INFO + 1
+ 210 CONTINUE
+ 220 CONTINUE
+ RETURN
+*
+* End of DBDSQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgebak.f b/2.3-1/src/fortran/lapack/dgebak.f
new file mode 100644
index 00000000..b8e9be56
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgebak.f
@@ -0,0 +1,188 @@
+ SUBROUTINE DGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB, SIDE
+ INTEGER IHI, ILO, INFO, LDV, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION SCALE( * ), V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEBAK forms the right or left eigenvectors of a real general matrix
+* by backward transformation on the computed eigenvectors of the
+* balanced matrix output by DGEBAL.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the type of backward transformation required:
+* = 'N', do nothing, return immediately;
+* = 'P', do backward transformation for permutation only;
+* = 'S', do backward transformation for scaling only;
+* = 'B', do backward transformations for both permutation and
+* scaling.
+* JOB must be the same as the argument JOB supplied to DGEBAL.
+*
+* SIDE (input) CHARACTER*1
+* = 'R': V contains right eigenvectors;
+* = 'L': V contains left eigenvectors.
+*
+* N (input) INTEGER
+* The number of rows of the matrix V. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* The integers ILO and IHI determined by DGEBAL.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* SCALE (input) DOUBLE PRECISION array, dimension (N)
+* Details of the permutation and scaling factors, as returned
+* by DGEBAL.
+*
+* M (input) INTEGER
+* The number of columns of the matrix V. M >= 0.
+*
+* V (input/output) DOUBLE PRECISION array, dimension (LDV,M)
+* On entry, the matrix of right or left eigenvectors to be
+* transformed, as returned by DHSEIN or DTREVC.
+* On exit, V is overwritten by the transformed eigenvectors.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V. LDV >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFTV, RIGHTV
+ INTEGER I, II, K
+ DOUBLE PRECISION S
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Decode and Test the input parameters
+*
+ RIGHTV = LSAME( SIDE, 'R' )
+ LEFTV = LSAME( SIDE, 'L' )
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -5
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -7
+ ELSE IF( LDV.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEBAK', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( M.EQ.0 )
+ $ RETURN
+ IF( LSAME( JOB, 'N' ) )
+ $ RETURN
+*
+ IF( ILO.EQ.IHI )
+ $ GO TO 30
+*
+* Backward balance
+*
+ IF( LSAME( JOB, 'S' ) .OR. LSAME( JOB, 'B' ) ) THEN
+*
+ IF( RIGHTV ) THEN
+ DO 10 I = ILO, IHI
+ S = SCALE( I )
+ CALL DSCAL( M, S, V( I, 1 ), LDV )
+ 10 CONTINUE
+ END IF
+*
+ IF( LEFTV ) THEN
+ DO 20 I = ILO, IHI
+ S = ONE / SCALE( I )
+ CALL DSCAL( M, S, V( I, 1 ), LDV )
+ 20 CONTINUE
+ END IF
+*
+ END IF
+*
+* Backward permutation
+*
+* For I = ILO-1 step -1 until 1,
+* IHI+1 step 1 until N do --
+*
+ 30 CONTINUE
+ IF( LSAME( JOB, 'P' ) .OR. LSAME( JOB, 'B' ) ) THEN
+ IF( RIGHTV ) THEN
+ DO 40 II = 1, N
+ I = II
+ IF( I.GE.ILO .AND. I.LE.IHI )
+ $ GO TO 40
+ IF( I.LT.ILO )
+ $ I = ILO - II
+ K = SCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 40
+ CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 40 CONTINUE
+ END IF
+*
+ IF( LEFTV ) THEN
+ DO 50 II = 1, N
+ I = II
+ IF( I.GE.ILO .AND. I.LE.IHI )
+ $ GO TO 50
+ IF( I.LT.ILO )
+ $ I = ILO - II
+ K = SCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 50
+ CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 50 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DGEBAK
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgebal.f b/2.3-1/src/fortran/lapack/dgebal.f
new file mode 100644
index 00000000..1796577b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgebal.f
@@ -0,0 +1,322 @@
+ SUBROUTINE DGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB
+ INTEGER IHI, ILO, INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), SCALE( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEBAL balances a general real matrix A. This involves, first,
+* permuting A by a similarity transformation to isolate eigenvalues
+* in the first 1 to ILO-1 and last IHI+1 to N elements on the
+* diagonal; and second, applying a diagonal similarity transformation
+* to rows and columns ILO to IHI to make the rows and columns as
+* close in norm as possible. Both steps are optional.
+*
+* Balancing may reduce the 1-norm of the matrix, and improve the
+* accuracy of the computed eigenvalues and/or eigenvectors.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the operations to be performed on A:
+* = 'N': none: simply set ILO = 1, IHI = N, SCALE(I) = 1.0
+* for i = 1,...,N;
+* = 'P': permute only;
+* = 'S': scale only;
+* = 'B': both permute and scale.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the input matrix A.
+* On exit, A is overwritten by the balanced matrix.
+* If JOB = 'N', A is not referenced.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* ILO (output) INTEGER
+* IHI (output) INTEGER
+* ILO and IHI are set to integers such that on exit
+* A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N.
+* If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*
+* SCALE (output) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and scaling factors applied to
+* A. If P(j) is the index of the row and column interchanged
+* with row and column j and D(j) is the scaling factor
+* applied to row and column j, then
+* SCALE(j) = P(j) for j = 1,...,ILO-1
+* = D(j) for j = ILO,...,IHI
+* = P(j) for j = IHI+1,...,N.
+* The order in which the interchanges are made is N to IHI+1,
+* then 1 to ILO-1.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The permutations consist of row and column interchanges which put
+* the matrix in the form
+*
+* ( T1 X Y )
+* P A P = ( 0 B Z )
+* ( 0 0 T2 )
+*
+* where T1 and T2 are upper triangular matrices whose eigenvalues lie
+* along the diagonal. The column indices ILO and IHI mark the starting
+* and ending columns of the submatrix B. Balancing consists of applying
+* a diagonal similarity transformation inv(D) * B * D to make the
+* 1-norms of each row of B and its corresponding column nearly equal.
+* The output matrix is
+*
+* ( T1 X*D Y )
+* ( 0 inv(D)*B*D inv(D)*Z ).
+* ( 0 0 T2 )
+*
+* Information about the permutations P and the diagonal matrix D is
+* returned in the vector SCALE.
+*
+* This subroutine is based on the EISPACK routine BALANC.
+*
+* Modified by Tzu-Yi Chen, Computer Science Division, University of
+* California at Berkeley, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION SCLFAC
+ PARAMETER ( SCLFAC = 2.0D+0 )
+ DOUBLE PRECISION FACTOR
+ PARAMETER ( FACTOR = 0.95D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOCONV
+ INTEGER I, ICA, IEXC, IRA, J, K, L, M
+ DOUBLE PRECISION C, CA, F, G, R, RA, S, SFMAX1, SFMAX2, SFMIN1,
+ $ SFMIN2
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, IDAMAX, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEBAL', -INFO )
+ RETURN
+ END IF
+*
+ K = 1
+ L = N
+*
+ IF( N.EQ.0 )
+ $ GO TO 210
+*
+ IF( LSAME( JOB, 'N' ) ) THEN
+ DO 10 I = 1, N
+ SCALE( I ) = ONE
+ 10 CONTINUE
+ GO TO 210
+ END IF
+*
+ IF( LSAME( JOB, 'S' ) )
+ $ GO TO 120
+*
+* Permutation to isolate eigenvalues if possible
+*
+ GO TO 50
+*
+* Row and column exchange.
+*
+ 20 CONTINUE
+ SCALE( M ) = J
+ IF( J.EQ.M )
+ $ GO TO 30
+*
+ CALL DSWAP( L, A( 1, J ), 1, A( 1, M ), 1 )
+ CALL DSWAP( N-K+1, A( J, K ), LDA, A( M, K ), LDA )
+*
+ 30 CONTINUE
+ GO TO ( 40, 80 )IEXC
+*
+* Search for rows isolating an eigenvalue and push them down.
+*
+ 40 CONTINUE
+ IF( L.EQ.1 )
+ $ GO TO 210
+ L = L - 1
+*
+ 50 CONTINUE
+ DO 70 J = L, 1, -1
+*
+ DO 60 I = 1, L
+ IF( I.EQ.J )
+ $ GO TO 60
+ IF( A( J, I ).NE.ZERO )
+ $ GO TO 70
+ 60 CONTINUE
+*
+ M = L
+ IEXC = 1
+ GO TO 20
+ 70 CONTINUE
+*
+ GO TO 90
+*
+* Search for columns isolating an eigenvalue and push them left.
+*
+ 80 CONTINUE
+ K = K + 1
+*
+ 90 CONTINUE
+ DO 110 J = K, L
+*
+ DO 100 I = K, L
+ IF( I.EQ.J )
+ $ GO TO 100
+ IF( A( I, J ).NE.ZERO )
+ $ GO TO 110
+ 100 CONTINUE
+*
+ M = K
+ IEXC = 2
+ GO TO 20
+ 110 CONTINUE
+*
+ 120 CONTINUE
+ DO 130 I = K, L
+ SCALE( I ) = ONE
+ 130 CONTINUE
+*
+ IF( LSAME( JOB, 'P' ) )
+ $ GO TO 210
+*
+* Balance the submatrix in rows K to L.
+*
+* Iterative loop for norm reduction
+*
+ SFMIN1 = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ SFMAX1 = ONE / SFMIN1
+ SFMIN2 = SFMIN1*SCLFAC
+ SFMAX2 = ONE / SFMIN2
+ 140 CONTINUE
+ NOCONV = .FALSE.
+*
+ DO 200 I = K, L
+ C = ZERO
+ R = ZERO
+*
+ DO 150 J = K, L
+ IF( J.EQ.I )
+ $ GO TO 150
+ C = C + ABS( A( J, I ) )
+ R = R + ABS( A( I, J ) )
+ 150 CONTINUE
+ ICA = IDAMAX( L, A( 1, I ), 1 )
+ CA = ABS( A( ICA, I ) )
+ IRA = IDAMAX( N-K+1, A( I, K ), LDA )
+ RA = ABS( A( I, IRA+K-1 ) )
+*
+* Guard against zero C or R due to underflow.
+*
+ IF( C.EQ.ZERO .OR. R.EQ.ZERO )
+ $ GO TO 200
+ G = R / SCLFAC
+ F = ONE
+ S = C + R
+ 160 CONTINUE
+ IF( C.GE.G .OR. MAX( F, C, CA ).GE.SFMAX2 .OR.
+ $ MIN( R, G, RA ).LE.SFMIN2 )GO TO 170
+ F = F*SCLFAC
+ C = C*SCLFAC
+ CA = CA*SCLFAC
+ R = R / SCLFAC
+ G = G / SCLFAC
+ RA = RA / SCLFAC
+ GO TO 160
+*
+ 170 CONTINUE
+ G = C / SCLFAC
+ 180 CONTINUE
+ IF( G.LT.R .OR. MAX( R, RA ).GE.SFMAX2 .OR.
+ $ MIN( F, C, G, CA ).LE.SFMIN2 )GO TO 190
+ F = F / SCLFAC
+ C = C / SCLFAC
+ G = G / SCLFAC
+ CA = CA / SCLFAC
+ R = R*SCLFAC
+ RA = RA*SCLFAC
+ GO TO 180
+*
+* Now balance.
+*
+ 190 CONTINUE
+ IF( ( C+R ).GE.FACTOR*S )
+ $ GO TO 200
+ IF( F.LT.ONE .AND. SCALE( I ).LT.ONE ) THEN
+ IF( F*SCALE( I ).LE.SFMIN1 )
+ $ GO TO 200
+ END IF
+ IF( F.GT.ONE .AND. SCALE( I ).GT.ONE ) THEN
+ IF( SCALE( I ).GE.SFMAX1 / F )
+ $ GO TO 200
+ END IF
+ G = ONE / F
+ SCALE( I ) = SCALE( I )*F
+ NOCONV = .TRUE.
+*
+ CALL DSCAL( N-K+1, G, A( I, K ), LDA )
+ CALL DSCAL( L, F, A( 1, I ), 1 )
+*
+ 200 CONTINUE
+*
+ IF( NOCONV )
+ $ GO TO 140
+*
+ 210 CONTINUE
+ ILO = K
+ IHI = L
+*
+ RETURN
+*
+* End of DGEBAL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgebd2.f b/2.3-1/src/fortran/lapack/dgebd2.f
new file mode 100644
index 00000000..b9eb6387
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgebd2.f
@@ -0,0 +1,239 @@
+ SUBROUTINE DGEBD2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAUP( * ),
+ $ TAUQ( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEBD2 reduces a real general m by n matrix A to upper or lower
+* bidiagonal form B by an orthogonal transformation: Q' * A * P = B.
+*
+* If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows in the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns in the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n general matrix to be reduced.
+* On exit,
+* if m >= n, the diagonal and the first superdiagonal are
+* overwritten with the upper bidiagonal matrix B; the
+* elements below the diagonal, with the array TAUQ, represent
+* the orthogonal matrix Q as a product of elementary
+* reflectors, and the elements above the first superdiagonal,
+* with the array TAUP, represent the orthogonal matrix P as
+* a product of elementary reflectors;
+* if m < n, the diagonal and the first subdiagonal are
+* overwritten with the lower bidiagonal matrix B; the
+* elements below the first subdiagonal, with the array TAUQ,
+* represent the orthogonal matrix Q as a product of
+* elementary reflectors, and the elements above the diagonal,
+* with the array TAUP, represent the orthogonal matrix P as
+* a product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* D (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The diagonal elements of the bidiagonal matrix B:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+* The off-diagonal elements of the bidiagonal matrix B:
+* if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
+* if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*
+* TAUQ (output) DOUBLE PRECISION array dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the orthogonal matrix Q. See Further Details.
+*
+* TAUP (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the orthogonal matrix P. See Further Details.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (max(M,N))
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrices Q and P are represented as products of elementary
+* reflectors:
+*
+* If m >= n,
+*
+* Q = H(1) H(2) . . . H(n) and P = G(1) G(2) . . . G(n-1)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are real scalars, and v and u are real vectors;
+* v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in A(i+1:m,i);
+* u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in A(i,i+2:n);
+* tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* If m < n,
+*
+* Q = H(1) H(2) . . . H(m-1) and P = G(1) G(2) . . . G(m)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are real scalars, and v and u are real vectors;
+* v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i);
+* u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n);
+* tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* The contents of A on exit are illustrated by the following examples:
+*
+* m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
+*
+* ( d e u1 u1 u1 ) ( d u1 u1 u1 u1 u1 )
+* ( v1 d e u2 u2 ) ( e d u2 u2 u2 u2 )
+* ( v1 v2 d e u3 ) ( v1 e d u3 u3 u3 )
+* ( v1 v2 v3 d e ) ( v1 v2 e d u4 u4 )
+* ( v1 v2 v3 v4 d ) ( v1 v2 v3 e d u5 )
+* ( v1 v2 v3 v4 v5 )
+*
+* where d and e denote diagonal and off-diagonal elements of B, vi
+* denotes an element of the vector defining H(i), and ui an element of
+* the vector defining G(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.LT.0 ) THEN
+ CALL XERBLA( 'DGEBD2', -INFO )
+ RETURN
+ END IF
+*
+ IF( M.GE.N ) THEN
+*
+* Reduce to upper bidiagonal form
+*
+ DO 10 I = 1, N
+*
+* Generate elementary reflector H(i) to annihilate A(i+1:m,i)
+*
+ CALL DLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+ $ TAUQ( I ) )
+ D( I ) = A( I, I )
+ A( I, I ) = ONE
+*
+* Apply H(i) to A(i:m,i+1:n) from the left
+*
+ IF( I.LT.N )
+ $ CALL DLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAUQ( I ),
+ $ A( I, I+1 ), LDA, WORK )
+ A( I, I ) = D( I )
+*
+ IF( I.LT.N ) THEN
+*
+* Generate elementary reflector G(i) to annihilate
+* A(i,i+2:n)
+*
+ CALL DLARFG( N-I, A( I, I+1 ), A( I, MIN( I+2, N ) ),
+ $ LDA, TAUP( I ) )
+ E( I ) = A( I, I+1 )
+ A( I, I+1 ) = ONE
+*
+* Apply G(i) to A(i+1:m,i+1:n) from the right
+*
+ CALL DLARF( 'Right', M-I, N-I, A( I, I+1 ), LDA,
+ $ TAUP( I ), A( I+1, I+1 ), LDA, WORK )
+ A( I, I+1 ) = E( I )
+ ELSE
+ TAUP( I ) = ZERO
+ END IF
+ 10 CONTINUE
+ ELSE
+*
+* Reduce to lower bidiagonal form
+*
+ DO 20 I = 1, M
+*
+* Generate elementary reflector G(i) to annihilate A(i,i+1:n)
+*
+ CALL DLARFG( N-I+1, A( I, I ), A( I, MIN( I+1, N ) ), LDA,
+ $ TAUP( I ) )
+ D( I ) = A( I, I )
+ A( I, I ) = ONE
+*
+* Apply G(i) to A(i+1:m,i:n) from the right
+*
+ IF( I.LT.M )
+ $ CALL DLARF( 'Right', M-I, N-I+1, A( I, I ), LDA,
+ $ TAUP( I ), A( I+1, I ), LDA, WORK )
+ A( I, I ) = D( I )
+*
+ IF( I.LT.M ) THEN
+*
+* Generate elementary reflector H(i) to annihilate
+* A(i+2:m,i)
+*
+ CALL DLARFG( M-I, A( I+1, I ), A( MIN( I+2, M ), I ), 1,
+ $ TAUQ( I ) )
+ E( I ) = A( I+1, I )
+ A( I+1, I ) = ONE
+*
+* Apply H(i) to A(i+1:m,i+1:n) from the left
+*
+ CALL DLARF( 'Left', M-I, N-I, A( I+1, I ), 1, TAUQ( I ),
+ $ A( I+1, I+1 ), LDA, WORK )
+ A( I+1, I ) = E( I )
+ ELSE
+ TAUQ( I ) = ZERO
+ END IF
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of DGEBD2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgebrd.f b/2.3-1/src/fortran/lapack/dgebrd.f
new file mode 100644
index 00000000..6544715d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgebrd.f
@@ -0,0 +1,268 @@
+ SUBROUTINE DGEBRD( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAUP( * ),
+ $ TAUQ( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEBRD reduces a general real M-by-N matrix A to upper or lower
+* bidiagonal form B by an orthogonal transformation: Q**T * A * P = B.
+*
+* If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows in the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns in the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N general matrix to be reduced.
+* On exit,
+* if m >= n, the diagonal and the first superdiagonal are
+* overwritten with the upper bidiagonal matrix B; the
+* elements below the diagonal, with the array TAUQ, represent
+* the orthogonal matrix Q as a product of elementary
+* reflectors, and the elements above the first superdiagonal,
+* with the array TAUP, represent the orthogonal matrix P as
+* a product of elementary reflectors;
+* if m < n, the diagonal and the first subdiagonal are
+* overwritten with the lower bidiagonal matrix B; the
+* elements below the first subdiagonal, with the array TAUQ,
+* represent the orthogonal matrix Q as a product of
+* elementary reflectors, and the elements above the diagonal,
+* with the array TAUP, represent the orthogonal matrix P as
+* a product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* D (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The diagonal elements of the bidiagonal matrix B:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+* The off-diagonal elements of the bidiagonal matrix B:
+* if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
+* if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*
+* TAUQ (output) DOUBLE PRECISION array dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the orthogonal matrix Q. See Further Details.
+*
+* TAUP (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the orthogonal matrix P. See Further Details.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of the array WORK. LWORK >= max(1,M,N).
+* For optimum performance LWORK >= (M+N)*NB, where NB
+* is the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrices Q and P are represented as products of elementary
+* reflectors:
+*
+* If m >= n,
+*
+* Q = H(1) H(2) . . . H(n) and P = G(1) G(2) . . . G(n-1)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are real scalars, and v and u are real vectors;
+* v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in A(i+1:m,i);
+* u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in A(i,i+2:n);
+* tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* If m < n,
+*
+* Q = H(1) H(2) . . . H(m-1) and P = G(1) G(2) . . . G(m)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are real scalars, and v and u are real vectors;
+* v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i);
+* u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n);
+* tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* The contents of A on exit are illustrated by the following examples:
+*
+* m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
+*
+* ( d e u1 u1 u1 ) ( d u1 u1 u1 u1 u1 )
+* ( v1 d e u2 u2 ) ( e d u2 u2 u2 u2 )
+* ( v1 v2 d e u3 ) ( v1 e d u3 u3 u3 )
+* ( v1 v2 v3 d e ) ( v1 v2 e d u4 u4 )
+* ( v1 v2 v3 v4 d ) ( v1 v2 v3 e d u5 )
+* ( v1 v2 v3 v4 v5 )
+*
+* where d and e denote diagonal and off-diagonal elements of B, vi
+* denotes an element of the vector defining H(i), and ui an element of
+* the vector defining G(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IINFO, J, LDWRKX, LDWRKY, LWKOPT, MINMN, NB,
+ $ NBMIN, NX
+ DOUBLE PRECISION WS
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEBD2, DGEMM, DLABRD, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ NB = MAX( 1, ILAENV( 1, 'DGEBRD', ' ', M, N, -1, -1 ) )
+ LWKOPT = ( M+N )*NB
+ WORK( 1 ) = DBLE( LWKOPT )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, M, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.LT.0 ) THEN
+ CALL XERBLA( 'DGEBRD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ MINMN = MIN( M, N )
+ IF( MINMN.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ WS = MAX( M, N )
+ LDWRKX = M
+ LDWRKY = N
+*
+ IF( NB.GT.1 .AND. NB.LT.MINMN ) THEN
+*
+* Set the crossover point NX.
+*
+ NX = MAX( NB, ILAENV( 3, 'DGEBRD', ' ', M, N, -1, -1 ) )
+*
+* Determine when to switch from blocked to unblocked code.
+*
+ IF( NX.LT.MINMN ) THEN
+ WS = ( M+N )*NB
+ IF( LWORK.LT.WS ) THEN
+*
+* Not enough work space for the optimal NB, consider using
+* a smaller block size.
+*
+ NBMIN = ILAENV( 2, 'DGEBRD', ' ', M, N, -1, -1 )
+ IF( LWORK.GE.( M+N )*NBMIN ) THEN
+ NB = LWORK / ( M+N )
+ ELSE
+ NB = 1
+ NX = MINMN
+ END IF
+ END IF
+ END IF
+ ELSE
+ NX = MINMN
+ END IF
+*
+ DO 30 I = 1, MINMN - NX, NB
+*
+* Reduce rows and columns i:i+nb-1 to bidiagonal form and return
+* the matrices X and Y which are needed to update the unreduced
+* part of the matrix
+*
+ CALL DLABRD( M-I+1, N-I+1, NB, A( I, I ), LDA, D( I ), E( I ),
+ $ TAUQ( I ), TAUP( I ), WORK, LDWRKX,
+ $ WORK( LDWRKX*NB+1 ), LDWRKY )
+*
+* Update the trailing submatrix A(i+nb:m,i+nb:n), using an update
+* of the form A := A - V*Y' - X*U'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M-I-NB+1, N-I-NB+1,
+ $ NB, -ONE, A( I+NB, I ), LDA,
+ $ WORK( LDWRKX*NB+NB+1 ), LDWRKY, ONE,
+ $ A( I+NB, I+NB ), LDA )
+ CALL DGEMM( 'No transpose', 'No transpose', M-I-NB+1, N-I-NB+1,
+ $ NB, -ONE, WORK( NB+1 ), LDWRKX, A( I, I+NB ), LDA,
+ $ ONE, A( I+NB, I+NB ), LDA )
+*
+* Copy diagonal and off-diagonal elements of B back into A
+*
+ IF( M.GE.N ) THEN
+ DO 10 J = I, I + NB - 1
+ A( J, J ) = D( J )
+ A( J, J+1 ) = E( J )
+ 10 CONTINUE
+ ELSE
+ DO 20 J = I, I + NB - 1
+ A( J, J ) = D( J )
+ A( J+1, J ) = E( J )
+ 20 CONTINUE
+ END IF
+ 30 CONTINUE
+*
+* Use unblocked code to reduce the remainder of the matrix
+*
+ CALL DGEBD2( M-I+1, N-I+1, A( I, I ), LDA, D( I ), E( I ),
+ $ TAUQ( I ), TAUP( I ), WORK, IINFO )
+ WORK( 1 ) = WS
+ RETURN
+*
+* End of DGEBRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgecon.f b/2.3-1/src/fortran/lapack/dgecon.f
new file mode 100644
index 00000000..807cafca
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgecon.f
@@ -0,0 +1,185 @@
+ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION ANORM, RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGECON estimates the reciprocal of the condition number of a general
+* real matrix A, in either the 1-norm or the infinity-norm, using
+* the LU factorization computed by DGETRF.
+*
+* An estimate is obtained for norm(inv(A)), and the reciprocal of the
+* condition number is computed as
+* RCOND = 1 / ( norm(A) * norm(inv(A)) ).
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies whether the 1-norm condition number or the
+* infinity-norm condition number is required:
+* = '1' or 'O': 1-norm;
+* = 'I': Infinity-norm.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The factors L and U from the factorization A = P*L*U
+* as computed by DGETRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* ANORM (input) DOUBLE PRECISION
+* If NORM = '1' or 'O', the 1-norm of the original matrix A.
+* If NORM = 'I', the infinity-norm of the original matrix A.
+*
+* RCOND (output) DOUBLE PRECISION
+* The reciprocal of the condition number of the matrix A,
+* computed as RCOND = 1/(norm(A) * norm(inv(A))).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (4*N)
+*
+* IWORK (workspace) INTEGER array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ONENRM
+ CHARACTER NORMIN
+ INTEGER IX, KASE, KASE1
+ DOUBLE PRECISION AINVNM, SCALE, SL, SMLNUM, SU
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, IDAMAX, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACN2, DLATRS, DRSCL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ ONENRM = NORM.EQ.'1' .OR. LSAME( NORM, 'O' )
+ IF( .NOT.ONENRM .AND. .NOT.LSAME( NORM, 'I' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( ANORM.LT.ZERO ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGECON', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ RCOND = ZERO
+ IF( N.EQ.0 ) THEN
+ RCOND = ONE
+ RETURN
+ ELSE IF( ANORM.EQ.ZERO ) THEN
+ RETURN
+ END IF
+*
+ SMLNUM = DLAMCH( 'Safe minimum' )
+*
+* Estimate the norm of inv(A).
+*
+ AINVNM = ZERO
+ NORMIN = 'N'
+ IF( ONENRM ) THEN
+ KASE1 = 1
+ ELSE
+ KASE1 = 2
+ END IF
+ KASE = 0
+ 10 CONTINUE
+ CALL DLACN2( N, WORK( N+1 ), WORK, IWORK, AINVNM, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.KASE1 ) THEN
+*
+* Multiply by inv(L).
+*
+ CALL DLATRS( 'Lower', 'No transpose', 'Unit', NORMIN, N, A,
+ $ LDA, WORK, SL, WORK( 2*N+1 ), INFO )
+*
+* Multiply by inv(U).
+*
+ CALL DLATRS( 'Upper', 'No transpose', 'Non-unit', NORMIN, N,
+ $ A, LDA, WORK, SU, WORK( 3*N+1 ), INFO )
+ ELSE
+*
+* Multiply by inv(U').
+*
+ CALL DLATRS( 'Upper', 'Transpose', 'Non-unit', NORMIN, N, A,
+ $ LDA, WORK, SU, WORK( 3*N+1 ), INFO )
+*
+* Multiply by inv(L').
+*
+ CALL DLATRS( 'Lower', 'Transpose', 'Unit', NORMIN, N, A,
+ $ LDA, WORK, SL, WORK( 2*N+1 ), INFO )
+ END IF
+*
+* Divide X by 1/(SL*SU) if doing so will not cause overflow.
+*
+ SCALE = SL*SU
+ NORMIN = 'Y'
+ IF( SCALE.NE.ONE ) THEN
+ IX = IDAMAX( N, WORK, 1 )
+ IF( SCALE.LT.ABS( WORK( IX ) )*SMLNUM .OR. SCALE.EQ.ZERO )
+ $ GO TO 20
+ CALL DRSCL( N, SCALE, WORK, 1 )
+ END IF
+ GO TO 10
+ END IF
+*
+* Compute the estimate of the reciprocal condition number.
+*
+ IF( AINVNM.NE.ZERO )
+ $ RCOND = ( ONE / AINVNM ) / ANORM
+*
+ 20 CONTINUE
+ RETURN
+*
+* End of DGECON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeequ.f b/2.3-1/src/fortran/lapack/dgeequ.f
new file mode 100644
index 00000000..b703116e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeequ.f
@@ -0,0 +1,225 @@
+ SUBROUTINE DGEEQU( M, N, A, LDA, R, C, ROWCND, COLCND, AMAX,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+ DOUBLE PRECISION AMAX, COLCND, ROWCND
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( * ), R( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEEQU computes row and column scalings intended to equilibrate an
+* M-by-N matrix A and reduce its condition number. R returns the row
+* scale factors and C the column scale factors, chosen to try to make
+* the largest element in each row and column of the matrix B with
+* elements B(i,j)=R(i)*A(i,j)*C(j) have absolute value 1.
+*
+* R(i) and C(j) are restricted to be between SMLNUM = smallest safe
+* number and BIGNUM = largest safe number. Use of these scaling
+* factors is not guaranteed to reduce the condition number of A but
+* works well in practice.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The M-by-N matrix whose equilibration factors are
+* to be computed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* R (output) DOUBLE PRECISION array, dimension (M)
+* If INFO = 0 or INFO > M, R contains the row scale factors
+* for A.
+*
+* C (output) DOUBLE PRECISION array, dimension (N)
+* If INFO = 0, C contains the column scale factors for A.
+*
+* ROWCND (output) DOUBLE PRECISION
+* If INFO = 0 or INFO > M, ROWCND contains the ratio of the
+* smallest R(i) to the largest R(i). If ROWCND >= 0.1 and
+* AMAX is neither too large nor too small, it is not worth
+* scaling by R.
+*
+* COLCND (output) DOUBLE PRECISION
+* If INFO = 0, COLCND contains the ratio of the smallest
+* C(i) to the largest C(i). If COLCND >= 0.1, it is not
+* worth scaling by C.
+*
+* AMAX (output) DOUBLE PRECISION
+* Absolute value of largest matrix element. If AMAX is very
+* close to overflow or very close to underflow, the matrix
+* should be scaled.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, and i is
+* <= M: the i-th row of A is exactly zero
+* > M: the (i-M)-th column of A is exactly zero
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION BIGNUM, RCMAX, RCMIN, SMLNUM
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEEQU', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ ROWCND = ONE
+ COLCND = ONE
+ AMAX = ZERO
+ RETURN
+ END IF
+*
+* Get machine constants.
+*
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+*
+* Compute row scale factors.
+*
+ DO 10 I = 1, M
+ R( I ) = ZERO
+ 10 CONTINUE
+*
+* Find the maximum element in each row.
+*
+ DO 30 J = 1, N
+ DO 20 I = 1, M
+ R( I ) = MAX( R( I ), ABS( A( I, J ) ) )
+ 20 CONTINUE
+ 30 CONTINUE
+*
+* Find the maximum and minimum scale factors.
+*
+ RCMIN = BIGNUM
+ RCMAX = ZERO
+ DO 40 I = 1, M
+ RCMAX = MAX( RCMAX, R( I ) )
+ RCMIN = MIN( RCMIN, R( I ) )
+ 40 CONTINUE
+ AMAX = RCMAX
+*
+ IF( RCMIN.EQ.ZERO ) THEN
+*
+* Find the first zero scale factor and return an error code.
+*
+ DO 50 I = 1, M
+ IF( R( I ).EQ.ZERO ) THEN
+ INFO = I
+ RETURN
+ END IF
+ 50 CONTINUE
+ ELSE
+*
+* Invert the scale factors.
+*
+ DO 60 I = 1, M
+ R( I ) = ONE / MIN( MAX( R( I ), SMLNUM ), BIGNUM )
+ 60 CONTINUE
+*
+* Compute ROWCND = min(R(I)) / max(R(I))
+*
+ ROWCND = MAX( RCMIN, SMLNUM ) / MIN( RCMAX, BIGNUM )
+ END IF
+*
+* Compute column scale factors
+*
+ DO 70 J = 1, N
+ C( J ) = ZERO
+ 70 CONTINUE
+*
+* Find the maximum element in each column,
+* assuming the row scaling computed above.
+*
+ DO 90 J = 1, N
+ DO 80 I = 1, M
+ C( J ) = MAX( C( J ), ABS( A( I, J ) )*R( I ) )
+ 80 CONTINUE
+ 90 CONTINUE
+*
+* Find the maximum and minimum scale factors.
+*
+ RCMIN = BIGNUM
+ RCMAX = ZERO
+ DO 100 J = 1, N
+ RCMIN = MIN( RCMIN, C( J ) )
+ RCMAX = MAX( RCMAX, C( J ) )
+ 100 CONTINUE
+*
+ IF( RCMIN.EQ.ZERO ) THEN
+*
+* Find the first zero scale factor and return an error code.
+*
+ DO 110 J = 1, N
+ IF( C( J ).EQ.ZERO ) THEN
+ INFO = M + J
+ RETURN
+ END IF
+ 110 CONTINUE
+ ELSE
+*
+* Invert the scale factors.
+*
+ DO 120 J = 1, N
+ C( J ) = ONE / MIN( MAX( C( J ), SMLNUM ), BIGNUM )
+ 120 CONTINUE
+*
+* Compute COLCND = min(C(J)) / max(C(J))
+*
+ COLCND = MAX( RCMIN, SMLNUM ) / MIN( RCMAX, BIGNUM )
+ END IF
+*
+ RETURN
+*
+* End of DGEEQU
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgees.f b/2.3-1/src/fortran/lapack/dgees.f
new file mode 100644
index 00000000..96ba8019
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgees.f
@@ -0,0 +1,434 @@
+ SUBROUTINE DGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, WR, WI,
+ $ VS, LDVS, WORK, LWORK, BWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVS, SORT
+ INTEGER INFO, LDA, LDVS, LWORK, N, SDIM
+* ..
+* .. Array Arguments ..
+ LOGICAL BWORK( * )
+ DOUBLE PRECISION A( LDA, * ), VS( LDVS, * ), WI( * ), WORK( * ),
+ $ WR( * )
+* ..
+* .. Function Arguments ..
+ LOGICAL SELECT
+ EXTERNAL SELECT
+* ..
+*
+* Purpose
+* =======
+*
+* DGEES computes for an N-by-N real nonsymmetric matrix A, the
+* eigenvalues, the real Schur form T, and, optionally, the matrix of
+* Schur vectors Z. This gives the Schur factorization A = Z*T*(Z**T).
+*
+* Optionally, it also orders the eigenvalues on the diagonal of the
+* real Schur form so that selected eigenvalues are at the top left.
+* The leading columns of Z then form an orthonormal basis for the
+* invariant subspace corresponding to the selected eigenvalues.
+*
+* A matrix is in real Schur form if it is upper quasi-triangular with
+* 1-by-1 and 2-by-2 blocks. 2-by-2 blocks will be standardized in the
+* form
+* [ a b ]
+* [ c a ]
+*
+* where b*c < 0. The eigenvalues of such a block are a +- sqrt(bc).
+*
+* Arguments
+* =========
+*
+* JOBVS (input) CHARACTER*1
+* = 'N': Schur vectors are not computed;
+* = 'V': Schur vectors are computed.
+*
+* SORT (input) CHARACTER*1
+* Specifies whether or not to order the eigenvalues on the
+* diagonal of the Schur form.
+* = 'N': Eigenvalues are not ordered;
+* = 'S': Eigenvalues are ordered (see SELECT).
+*
+* SELECT (external procedure) LOGICAL FUNCTION of two DOUBLE PRECISION arguments
+* SELECT must be declared EXTERNAL in the calling subroutine.
+* If SORT = 'S', SELECT is used to select eigenvalues to sort
+* to the top left of the Schur form.
+* If SORT = 'N', SELECT is not referenced.
+* An eigenvalue WR(j)+sqrt(-1)*WI(j) is selected if
+* SELECT(WR(j),WI(j)) is true; i.e., if either one of a complex
+* conjugate pair of eigenvalues is selected, then both complex
+* eigenvalues are selected.
+* Note that a selected complex eigenvalue may no longer
+* satisfy SELECT(WR(j),WI(j)) = .TRUE. after ordering, since
+* ordering may change the value of complex eigenvalues
+* (especially if the eigenvalue is ill-conditioned); in this
+* case INFO is set to N+2 (see INFO below).
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the N-by-N matrix A.
+* On exit, A has been overwritten by its real Schur form T.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* SDIM (output) INTEGER
+* If SORT = 'N', SDIM = 0.
+* If SORT = 'S', SDIM = number of eigenvalues (after sorting)
+* for which SELECT is true. (Complex conjugate
+* pairs for which SELECT is true for either
+* eigenvalue count as 2.)
+*
+* WR (output) DOUBLE PRECISION array, dimension (N)
+* WI (output) DOUBLE PRECISION array, dimension (N)
+* WR and WI contain the real and imaginary parts,
+* respectively, of the computed eigenvalues in the same order
+* that they appear on the diagonal of the output Schur form T.
+* Complex conjugate pairs of eigenvalues will appear
+* consecutively with the eigenvalue having the positive
+* imaginary part first.
+*
+* VS (output) DOUBLE PRECISION array, dimension (LDVS,N)
+* If JOBVS = 'V', VS contains the orthogonal matrix Z of Schur
+* vectors.
+* If JOBVS = 'N', VS is not referenced.
+*
+* LDVS (input) INTEGER
+* The leading dimension of the array VS. LDVS >= 1; if
+* JOBVS = 'V', LDVS >= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) contains the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,3*N).
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* BWORK (workspace) LOGICAL array, dimension (N)
+* Not referenced if SORT = 'N'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if INFO = i, and i is
+* <= N: the QR algorithm failed to compute all the
+* eigenvalues; elements 1:ILO-1 and i+1:N of WR and WI
+* contain those eigenvalues which have converged; if
+* JOBVS = 'V', VS contains the matrix which reduces A
+* to its partially converged Schur form.
+* = N+1: the eigenvalues could not be reordered because some
+* eigenvalues were too close to separate (the problem
+* is very ill-conditioned);
+* = N+2: after reordering, roundoff changed values of some
+* complex eigenvalues so that leading eigenvalues in
+* the Schur form no longer satisfy SELECT=.TRUE. This
+* could also be caused by underflow due to scaling.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL CURSL, LASTSL, LQUERY, LST2SL, SCALEA, WANTST,
+ $ WANTVS
+ INTEGER HSWORK, I, I1, I2, IBAL, ICOND, IERR, IEVAL,
+ $ IHI, ILO, INXT, IP, ITAU, IWRK, MAXWRK, MINWRK
+ DOUBLE PRECISION ANRM, BIGNUM, CSCALE, EPS, S, SEP, SMLNUM
+* ..
+* .. Local Arrays ..
+ INTEGER IDUM( 1 )
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLACPY,
+ $ DLABAD, DLASCL, DORGHR, DSWAP, DTRSEN, XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ WANTVS = LSAME( JOBVS, 'V' )
+ WANTST = LSAME( SORT, 'S' )
+ IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDVS.LT.1 .OR. ( WANTVS .AND. LDVS.LT.N ) ) THEN
+ INFO = -11
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.
+* HSWORK refers to the workspace preferred by DHSEQR, as
+* calculated below. HSWORK is computed assuming ILO=1 and IHI=N,
+* the worst case.)
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ ELSE
+ MAXWRK = 2*N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )
+ MINWRK = 3*N
+*
+ CALL DHSEQR( 'S', JOBVS, N, 1, N, A, LDA, WR, WI, VS, LDVS,
+ $ WORK, -1, IEVAL )
+ HSWORK = WORK( 1 )
+*
+ IF( .NOT.WANTVS ) THEN
+ MAXWRK = MAX( MAXWRK, N + HSWORK )
+ ELSE
+ MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
+ $ 'DORGHR', ' ', N, 1, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, N + HSWORK )
+ END IF
+ END IF
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEES ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ SDIM = 0
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', N, N, A, LDA, DUM )
+ SCALEA = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = SMLNUM
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = BIGNUM
+ END IF
+ IF( SCALEA )
+ $ CALL DLASCL( 'G', 0, 0, ANRM, CSCALE, N, N, A, LDA, IERR )
+*
+* Permute the matrix to make it more nearly triangular
+* (Workspace: need N)
+*
+ IBAL = 1
+ CALL DGEBAL( 'P', N, A, LDA, ILO, IHI, WORK( IBAL ), IERR )
+*
+* Reduce to upper Hessenberg form
+* (Workspace: need 3*N, prefer 2*N+N*NB)
+*
+ ITAU = N + IBAL
+ IWRK = N + ITAU
+ CALL DGEHRD( N, ILO, IHI, A, LDA, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+ IF( WANTVS ) THEN
+*
+* Copy Householder vectors to VS
+*
+ CALL DLACPY( 'L', N, N, A, LDA, VS, LDVS )
+*
+* Generate orthogonal matrix in VS
+* (Workspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+*
+ CALL DORGHR( N, ILO, IHI, VS, LDVS, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+ END IF
+*
+ SDIM = 0
+*
+* Perform QR iteration, accumulating Schur vectors in VS if desired
+* (Workspace: need N+1, prefer N+HSWORK (see comments) )
+*
+ IWRK = ITAU
+ CALL DHSEQR( 'S', JOBVS, N, ILO, IHI, A, LDA, WR, WI, VS, LDVS,
+ $ WORK( IWRK ), LWORK-IWRK+1, IEVAL )
+ IF( IEVAL.GT.0 )
+ $ INFO = IEVAL
+*
+* Sort eigenvalues if desired
+*
+ IF( WANTST .AND. INFO.EQ.0 ) THEN
+ IF( SCALEA ) THEN
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N, 1, WR, N, IERR )
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N, 1, WI, N, IERR )
+ END IF
+ DO 10 I = 1, N
+ BWORK( I ) = SELECT( WR( I ), WI( I ) )
+ 10 CONTINUE
+*
+* Reorder eigenvalues and transform Schur vectors
+* (Workspace: none needed)
+*
+ CALL DTRSEN( 'N', JOBVS, BWORK, N, A, LDA, VS, LDVS, WR, WI,
+ $ SDIM, S, SEP, WORK( IWRK ), LWORK-IWRK+1, IDUM, 1,
+ $ ICOND )
+ IF( ICOND.GT.0 )
+ $ INFO = N + ICOND
+ END IF
+*
+ IF( WANTVS ) THEN
+*
+* Undo balancing
+* (Workspace: need N)
+*
+ CALL DGEBAK( 'P', 'R', N, ILO, IHI, WORK( IBAL ), N, VS, LDVS,
+ $ IERR )
+ END IF
+*
+ IF( SCALEA ) THEN
+*
+* Undo scaling for the Schur form of A
+*
+ CALL DLASCL( 'H', 0, 0, CSCALE, ANRM, N, N, A, LDA, IERR )
+ CALL DCOPY( N, A, LDA+1, WR, 1 )
+ IF( CSCALE.EQ.SMLNUM ) THEN
+*
+* If scaling back towards underflow, adjust WI if an
+* offdiagonal element of a 2-by-2 block in the Schur form
+* underflows.
+*
+ IF( IEVAL.GT.0 ) THEN
+ I1 = IEVAL + 1
+ I2 = IHI - 1
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WI,
+ $ MAX( ILO-1, 1 ), IERR )
+ ELSE IF( WANTST ) THEN
+ I1 = 1
+ I2 = N - 1
+ ELSE
+ I1 = ILO
+ I2 = IHI - 1
+ END IF
+ INXT = I1 - 1
+ DO 20 I = I1, I2
+ IF( I.LT.INXT )
+ $ GO TO 20
+ IF( WI( I ).EQ.ZERO ) THEN
+ INXT = I + 1
+ ELSE
+ IF( A( I+1, I ).EQ.ZERO ) THEN
+ WI( I ) = ZERO
+ WI( I+1 ) = ZERO
+ ELSE IF( A( I+1, I ).NE.ZERO .AND. A( I, I+1 ).EQ.
+ $ ZERO ) THEN
+ WI( I ) = ZERO
+ WI( I+1 ) = ZERO
+ IF( I.GT.1 )
+ $ CALL DSWAP( I-1, A( 1, I ), 1, A( 1, I+1 ), 1 )
+ IF( N.GT.I+1 )
+ $ CALL DSWAP( N-I-1, A( I, I+2 ), LDA,
+ $ A( I+1, I+2 ), LDA )
+ IF( WANTVS ) THEN
+ CALL DSWAP( N, VS( 1, I ), 1, VS( 1, I+1 ), 1 )
+ END IF
+ A( I, I+1 ) = A( I+1, I )
+ A( I+1, I ) = ZERO
+ END IF
+ INXT = I + 2
+ END IF
+ 20 CONTINUE
+ END IF
+*
+* Undo scaling for the imaginary part of the eigenvalues
+*
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-IEVAL, 1,
+ $ WI( IEVAL+1 ), MAX( N-IEVAL, 1 ), IERR )
+ END IF
+*
+ IF( WANTST .AND. INFO.EQ.0 ) THEN
+*
+* Check if reordering successful
+*
+ LASTSL = .TRUE.
+ LST2SL = .TRUE.
+ SDIM = 0
+ IP = 0
+ DO 30 I = 1, N
+ CURSL = SELECT( WR( I ), WI( I ) )
+ IF( WI( I ).EQ.ZERO ) THEN
+ IF( CURSL )
+ $ SDIM = SDIM + 1
+ IP = 0
+ IF( CURSL .AND. .NOT.LASTSL )
+ $ INFO = N + 2
+ ELSE
+ IF( IP.EQ.1 ) THEN
+*
+* Last eigenvalue of conjugate pair
+*
+ CURSL = CURSL .OR. LASTSL
+ LASTSL = CURSL
+ IF( CURSL )
+ $ SDIM = SDIM + 2
+ IP = -1
+ IF( CURSL .AND. .NOT.LST2SL )
+ $ INFO = N + 2
+ ELSE
+*
+* First eigenvalue of conjugate pair
+*
+ IP = 1
+ END IF
+ END IF
+ LST2SL = LASTSL
+ LASTSL = CURSL
+ 30 CONTINUE
+ END IF
+*
+ WORK( 1 ) = MAXWRK
+ RETURN
+*
+* End of DGEES
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeesx.f b/2.3-1/src/fortran/lapack/dgeesx.f
new file mode 100644
index 00000000..deb30ab2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeesx.f
@@ -0,0 +1,527 @@
+ SUBROUTINE DGEESX( JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM,
+ $ WR, WI, VS, LDVS, RCONDE, RCONDV, WORK, LWORK,
+ $ IWORK, LIWORK, BWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVS, SENSE, SORT
+ INTEGER INFO, LDA, LDVS, LIWORK, LWORK, N, SDIM
+ DOUBLE PRECISION RCONDE, RCONDV
+* ..
+* .. Array Arguments ..
+ LOGICAL BWORK( * )
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), VS( LDVS, * ), WI( * ), WORK( * ),
+ $ WR( * )
+* ..
+* .. Function Arguments ..
+ LOGICAL SELECT
+ EXTERNAL SELECT
+* ..
+*
+* Purpose
+* =======
+*
+* DGEESX computes for an N-by-N real nonsymmetric matrix A, the
+* eigenvalues, the real Schur form T, and, optionally, the matrix of
+* Schur vectors Z. This gives the Schur factorization A = Z*T*(Z**T).
+*
+* Optionally, it also orders the eigenvalues on the diagonal of the
+* real Schur form so that selected eigenvalues are at the top left;
+* computes a reciprocal condition number for the average of the
+* selected eigenvalues (RCONDE); and computes a reciprocal condition
+* number for the right invariant subspace corresponding to the
+* selected eigenvalues (RCONDV). The leading columns of Z form an
+* orthonormal basis for this invariant subspace.
+*
+* For further explanation of the reciprocal condition numbers RCONDE
+* and RCONDV, see Section 4.10 of the LAPACK Users' Guide (where
+* these quantities are called s and sep respectively).
+*
+* A real matrix is in real Schur form if it is upper quasi-triangular
+* with 1-by-1 and 2-by-2 blocks. 2-by-2 blocks will be standardized in
+* the form
+* [ a b ]
+* [ c a ]
+*
+* where b*c < 0. The eigenvalues of such a block are a +- sqrt(bc).
+*
+* Arguments
+* =========
+*
+* JOBVS (input) CHARACTER*1
+* = 'N': Schur vectors are not computed;
+* = 'V': Schur vectors are computed.
+*
+* SORT (input) CHARACTER*1
+* Specifies whether or not to order the eigenvalues on the
+* diagonal of the Schur form.
+* = 'N': Eigenvalues are not ordered;
+* = 'S': Eigenvalues are ordered (see SELECT).
+*
+* SELECT (external procedure) LOGICAL FUNCTION of two DOUBLE PRECISION arguments
+* SELECT must be declared EXTERNAL in the calling subroutine.
+* If SORT = 'S', SELECT is used to select eigenvalues to sort
+* to the top left of the Schur form.
+* If SORT = 'N', SELECT is not referenced.
+* An eigenvalue WR(j)+sqrt(-1)*WI(j) is selected if
+* SELECT(WR(j),WI(j)) is true; i.e., if either one of a
+* complex conjugate pair of eigenvalues is selected, then both
+* are. Note that a selected complex eigenvalue may no longer
+* satisfy SELECT(WR(j),WI(j)) = .TRUE. after ordering, since
+* ordering may change the value of complex eigenvalues
+* (especially if the eigenvalue is ill-conditioned); in this
+* case INFO may be set to N+3 (see INFO below).
+*
+* SENSE (input) CHARACTER*1
+* Determines which reciprocal condition numbers are computed.
+* = 'N': None are computed;
+* = 'E': Computed for average of selected eigenvalues only;
+* = 'V': Computed for selected right invariant subspace only;
+* = 'B': Computed for both.
+* If SENSE = 'E', 'V' or 'B', SORT must equal 'S'.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the N-by-N matrix A.
+* On exit, A is overwritten by its real Schur form T.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* SDIM (output) INTEGER
+* If SORT = 'N', SDIM = 0.
+* If SORT = 'S', SDIM = number of eigenvalues (after sorting)
+* for which SELECT is true. (Complex conjugate
+* pairs for which SELECT is true for either
+* eigenvalue count as 2.)
+*
+* WR (output) DOUBLE PRECISION array, dimension (N)
+* WI (output) DOUBLE PRECISION array, dimension (N)
+* WR and WI contain the real and imaginary parts, respectively,
+* of the computed eigenvalues, in the same order that they
+* appear on the diagonal of the output Schur form T. Complex
+* conjugate pairs of eigenvalues appear consecutively with the
+* eigenvalue having the positive imaginary part first.
+*
+* VS (output) DOUBLE PRECISION array, dimension (LDVS,N)
+* If JOBVS = 'V', VS contains the orthogonal matrix Z of Schur
+* vectors.
+* If JOBVS = 'N', VS is not referenced.
+*
+* LDVS (input) INTEGER
+* The leading dimension of the array VS. LDVS >= 1, and if
+* JOBVS = 'V', LDVS >= N.
+*
+* RCONDE (output) DOUBLE PRECISION
+* If SENSE = 'E' or 'B', RCONDE contains the reciprocal
+* condition number for the average of the selected eigenvalues.
+* Not referenced if SENSE = 'N' or 'V'.
+*
+* RCONDV (output) DOUBLE PRECISION
+* If SENSE = 'V' or 'B', RCONDV contains the reciprocal
+* condition number for the selected right invariant subspace.
+* Not referenced if SENSE = 'N' or 'E'.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,3*N).
+* Also, if SENSE = 'E' or 'V' or 'B',
+* LWORK >= N+2*SDIM*(N-SDIM), where SDIM is the number of
+* selected eigenvalues computed by this routine. Note that
+* N+2*SDIM*(N-SDIM) <= N+N*N/2. Note also that an error is only
+* returned if LWORK < max(1,3*N), but if SENSE = 'E' or 'V' or
+* 'B' this may not be large enough.
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates upper bounds on the optimal sizes of the
+* arrays WORK and IWORK, returns these values as the first
+* entries of the WORK and IWORK arrays, and no error messages
+* related to LWORK or LIWORK are issued by XERBLA.
+*
+* IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
+* On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
+*
+* LIWORK (input) INTEGER
+* The dimension of the array IWORK.
+* LIWORK >= 1; if SENSE = 'V' or 'B', LIWORK >= SDIM*(N-SDIM).
+* Note that SDIM*(N-SDIM) <= N*N/4. Note also that an error is
+* only returned if LIWORK < 1, but if SENSE = 'V' or 'B' this
+* may not be large enough.
+*
+* If LIWORK = -1, then a workspace query is assumed; the
+* routine only calculates upper bounds on the optimal sizes of
+* the arrays WORK and IWORK, returns these values as the first
+* entries of the WORK and IWORK arrays, and no error messages
+* related to LWORK or LIWORK are issued by XERBLA.
+*
+* BWORK (workspace) LOGICAL array, dimension (N)
+* Not referenced if SORT = 'N'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if INFO = i, and i is
+* <= N: the QR algorithm failed to compute all the
+* eigenvalues; elements 1:ILO-1 and i+1:N of WR and WI
+* contain those eigenvalues which have converged; if
+* JOBVS = 'V', VS contains the transformation which
+* reduces A to its partially converged Schur form.
+* = N+1: the eigenvalues could not be reordered because some
+* eigenvalues were too close to separate (the problem
+* is very ill-conditioned);
+* = N+2: after reordering, roundoff changed values of some
+* complex eigenvalues so that leading eigenvalues in
+* the Schur form no longer satisfy SELECT=.TRUE. This
+* could also be caused by underflow due to scaling.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL CURSL, LASTSL, LQUERY, LST2SL, SCALEA, WANTSB,
+ $ WANTSE, WANTSN, WANTST, WANTSV, WANTVS
+ INTEGER HSWORK, I, I1, I2, IBAL, ICOND, IERR, IEVAL,
+ $ IHI, ILO, INXT, IP, ITAU, IWRK, LIWRK, LWRK,
+ $ MAXWRK, MINWRK
+ DOUBLE PRECISION ANRM, BIGNUM, CSCALE, EPS, SMLNUM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLACPY,
+ $ DLASCL, DORGHR, DSWAP, DTRSEN, XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLABAD, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ WANTVS = LSAME( JOBVS, 'V' )
+ WANTST = LSAME( SORT, 'S' )
+ WANTSN = LSAME( SENSE, 'N' )
+ WANTSE = LSAME( SENSE, 'E' )
+ WANTSV = LSAME( SENSE, 'V' )
+ WANTSB = LSAME( SENSE, 'B' )
+ LQUERY = ( LWORK.EQ.-1 .OR. LIWORK.EQ.-1 )
+ IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.( WANTSN .OR. WANTSE .OR. WANTSV .OR. WANTSB ) .OR.
+ $ ( .NOT.WANTST .AND. .NOT.WANTSN ) ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDVS.LT.1 .OR. ( WANTVS .AND. LDVS.LT.N ) ) THEN
+ INFO = -12
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "RWorkspace:" describe the
+* minimal amount of real workspace needed at that point in the
+* code, as well as the preferred amount for good performance.
+* IWorkspace refers to integer workspace.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.
+* HSWORK refers to the workspace preferred by DHSEQR, as
+* calculated below. HSWORK is computed assuming ILO=1 and IHI=N,
+* the worst case.
+* If SENSE = 'E', 'V' or 'B', then the amount of workspace needed
+* depends on SDIM, which is computed by the routine DTRSEN later
+* in the code.)
+*
+ IF( INFO.EQ.0 ) THEN
+ LIWRK = 1
+ IF( N.EQ.0 ) THEN
+ MINWRK = 1
+ LWRK = 1
+ ELSE
+ MAXWRK = 2*N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )
+ MINWRK = 3*N
+*
+ CALL DHSEQR( 'S', JOBVS, N, 1, N, A, LDA, WR, WI, VS, LDVS,
+ $ WORK, -1, IEVAL )
+ HSWORK = WORK( 1 )
+*
+ IF( .NOT.WANTVS ) THEN
+ MAXWRK = MAX( MAXWRK, N + HSWORK )
+ ELSE
+ MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
+ $ 'DORGHR', ' ', N, 1, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, N + HSWORK )
+ END IF
+ LWRK = MAXWRK
+ IF( .NOT.WANTSN )
+ $ LWRK = MAX( LWRK, N + ( N*N )/2 )
+ IF( WANTSV .OR. WANTSB )
+ $ LIWRK = ( N*N )/4
+ END IF
+ IWORK( 1 ) = LIWRK
+ WORK( 1 ) = LWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -16
+ ELSE IF( LIWORK.LT.1 .AND. .NOT.LQUERY ) THEN
+ INFO = -18
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEESX', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ SDIM = 0
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', N, N, A, LDA, DUM )
+ SCALEA = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = SMLNUM
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = BIGNUM
+ END IF
+ IF( SCALEA )
+ $ CALL DLASCL( 'G', 0, 0, ANRM, CSCALE, N, N, A, LDA, IERR )
+*
+* Permute the matrix to make it more nearly triangular
+* (RWorkspace: need N)
+*
+ IBAL = 1
+ CALL DGEBAL( 'P', N, A, LDA, ILO, IHI, WORK( IBAL ), IERR )
+*
+* Reduce to upper Hessenberg form
+* (RWorkspace: need 3*N, prefer 2*N+N*NB)
+*
+ ITAU = N + IBAL
+ IWRK = N + ITAU
+ CALL DGEHRD( N, ILO, IHI, A, LDA, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+ IF( WANTVS ) THEN
+*
+* Copy Householder vectors to VS
+*
+ CALL DLACPY( 'L', N, N, A, LDA, VS, LDVS )
+*
+* Generate orthogonal matrix in VS
+* (RWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+*
+ CALL DORGHR( N, ILO, IHI, VS, LDVS, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+ END IF
+*
+ SDIM = 0
+*
+* Perform QR iteration, accumulating Schur vectors in VS if desired
+* (RWorkspace: need N+1, prefer N+HSWORK (see comments) )
+*
+ IWRK = ITAU
+ CALL DHSEQR( 'S', JOBVS, N, ILO, IHI, A, LDA, WR, WI, VS, LDVS,
+ $ WORK( IWRK ), LWORK-IWRK+1, IEVAL )
+ IF( IEVAL.GT.0 )
+ $ INFO = IEVAL
+*
+* Sort eigenvalues if desired
+*
+ IF( WANTST .AND. INFO.EQ.0 ) THEN
+ IF( SCALEA ) THEN
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N, 1, WR, N, IERR )
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N, 1, WI, N, IERR )
+ END IF
+ DO 10 I = 1, N
+ BWORK( I ) = SELECT( WR( I ), WI( I ) )
+ 10 CONTINUE
+*
+* Reorder eigenvalues, transform Schur vectors, and compute
+* reciprocal condition numbers
+* (RWorkspace: if SENSE is not 'N', need N+2*SDIM*(N-SDIM)
+* otherwise, need N )
+* (IWorkspace: if SENSE is 'V' or 'B', need SDIM*(N-SDIM)
+* otherwise, need 0 )
+*
+ CALL DTRSEN( SENSE, JOBVS, BWORK, N, A, LDA, VS, LDVS, WR, WI,
+ $ SDIM, RCONDE, RCONDV, WORK( IWRK ), LWORK-IWRK+1,
+ $ IWORK, LIWORK, ICOND )
+ IF( .NOT.WANTSN )
+ $ MAXWRK = MAX( MAXWRK, N+2*SDIM*( N-SDIM ) )
+ IF( ICOND.EQ.-15 ) THEN
+*
+* Not enough real workspace
+*
+ INFO = -16
+ ELSE IF( ICOND.EQ.-17 ) THEN
+*
+* Not enough integer workspace
+*
+ INFO = -18
+ ELSE IF( ICOND.GT.0 ) THEN
+*
+* DTRSEN failed to reorder or to restore standard Schur form
+*
+ INFO = ICOND + N
+ END IF
+ END IF
+*
+ IF( WANTVS ) THEN
+*
+* Undo balancing
+* (RWorkspace: need N)
+*
+ CALL DGEBAK( 'P', 'R', N, ILO, IHI, WORK( IBAL ), N, VS, LDVS,
+ $ IERR )
+ END IF
+*
+ IF( SCALEA ) THEN
+*
+* Undo scaling for the Schur form of A
+*
+ CALL DLASCL( 'H', 0, 0, CSCALE, ANRM, N, N, A, LDA, IERR )
+ CALL DCOPY( N, A, LDA+1, WR, 1 )
+ IF( ( WANTSV .OR. WANTSB ) .AND. INFO.EQ.0 ) THEN
+ DUM( 1 ) = RCONDV
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, 1, 1, DUM, 1, IERR )
+ RCONDV = DUM( 1 )
+ END IF
+ IF( CSCALE.EQ.SMLNUM ) THEN
+*
+* If scaling back towards underflow, adjust WI if an
+* offdiagonal element of a 2-by-2 block in the Schur form
+* underflows.
+*
+ IF( IEVAL.GT.0 ) THEN
+ I1 = IEVAL + 1
+ I2 = IHI - 1
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WI, N,
+ $ IERR )
+ ELSE IF( WANTST ) THEN
+ I1 = 1
+ I2 = N - 1
+ ELSE
+ I1 = ILO
+ I2 = IHI - 1
+ END IF
+ INXT = I1 - 1
+ DO 20 I = I1, I2
+ IF( I.LT.INXT )
+ $ GO TO 20
+ IF( WI( I ).EQ.ZERO ) THEN
+ INXT = I + 1
+ ELSE
+ IF( A( I+1, I ).EQ.ZERO ) THEN
+ WI( I ) = ZERO
+ WI( I+1 ) = ZERO
+ ELSE IF( A( I+1, I ).NE.ZERO .AND. A( I, I+1 ).EQ.
+ $ ZERO ) THEN
+ WI( I ) = ZERO
+ WI( I+1 ) = ZERO
+ IF( I.GT.1 )
+ $ CALL DSWAP( I-1, A( 1, I ), 1, A( 1, I+1 ), 1 )
+ IF( N.GT.I+1 )
+ $ CALL DSWAP( N-I-1, A( I, I+2 ), LDA,
+ $ A( I+1, I+2 ), LDA )
+ CALL DSWAP( N, VS( 1, I ), 1, VS( 1, I+1 ), 1 )
+ A( I, I+1 ) = A( I+1, I )
+ A( I+1, I ) = ZERO
+ END IF
+ INXT = I + 2
+ END IF
+ 20 CONTINUE
+ END IF
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-IEVAL, 1,
+ $ WI( IEVAL+1 ), MAX( N-IEVAL, 1 ), IERR )
+ END IF
+*
+ IF( WANTST .AND. INFO.EQ.0 ) THEN
+*
+* Check if reordering successful
+*
+ LASTSL = .TRUE.
+ LST2SL = .TRUE.
+ SDIM = 0
+ IP = 0
+ DO 30 I = 1, N
+ CURSL = SELECT( WR( I ), WI( I ) )
+ IF( WI( I ).EQ.ZERO ) THEN
+ IF( CURSL )
+ $ SDIM = SDIM + 1
+ IP = 0
+ IF( CURSL .AND. .NOT.LASTSL )
+ $ INFO = N + 2
+ ELSE
+ IF( IP.EQ.1 ) THEN
+*
+* Last eigenvalue of conjugate pair
+*
+ CURSL = CURSL .OR. LASTSL
+ LASTSL = CURSL
+ IF( CURSL )
+ $ SDIM = SDIM + 2
+ IP = -1
+ IF( CURSL .AND. .NOT.LST2SL )
+ $ INFO = N + 2
+ ELSE
+*
+* First eigenvalue of conjugate pair
+*
+ IP = 1
+ END IF
+ END IF
+ LST2SL = LASTSL
+ LASTSL = CURSL
+ 30 CONTINUE
+ END IF
+*
+ WORK( 1 ) = MAXWRK
+ IF( WANTSV .OR. WANTSB ) THEN
+ IWORK( 1 ) = MAX( 1, SDIM*( N-SDIM ) )
+ ELSE
+ IWORK( 1 ) = 1
+ END IF
+*
+ RETURN
+*
+* End of DGEESX
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeev.f b/2.3-1/src/fortran/lapack/dgeev.f
new file mode 100644
index 00000000..50e08a9c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeev.f
@@ -0,0 +1,423 @@
+ SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR,
+ $ LDVR, WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
+ $ WI( * ), WORK( * ), WR( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEEV computes for an N-by-N real nonsymmetric matrix A, the
+* eigenvalues and, optionally, the left and/or right eigenvectors.
+*
+* The right eigenvector v(j) of A satisfies
+* A * v(j) = lambda(j) * v(j)
+* where lambda(j) is its eigenvalue.
+* The left eigenvector u(j) of A satisfies
+* u(j)**H * A = lambda(j) * u(j)**H
+* where u(j)**H denotes the conjugate transpose of u(j).
+*
+* The computed eigenvectors are normalized to have Euclidean norm
+* equal to 1 and largest component real.
+*
+* Arguments
+* =========
+*
+* JOBVL (input) CHARACTER*1
+* = 'N': left eigenvectors of A are not computed;
+* = 'V': left eigenvectors of A are computed.
+*
+* JOBVR (input) CHARACTER*1
+* = 'N': right eigenvectors of A are not computed;
+* = 'V': right eigenvectors of A are computed.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the N-by-N matrix A.
+* On exit, A has been overwritten.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* WR (output) DOUBLE PRECISION array, dimension (N)
+* WI (output) DOUBLE PRECISION array, dimension (N)
+* WR and WI contain the real and imaginary parts,
+* respectively, of the computed eigenvalues. Complex
+* conjugate pairs of eigenvalues appear consecutively
+* with the eigenvalue having the positive imaginary part
+* first.
+*
+* VL (output) DOUBLE PRECISION array, dimension (LDVL,N)
+* If JOBVL = 'V', the left eigenvectors u(j) are stored one
+* after another in the columns of VL, in the same order
+* as their eigenvalues.
+* If JOBVL = 'N', VL is not referenced.
+* If the j-th eigenvalue is real, then u(j) = VL(:,j),
+* the j-th column of VL.
+* If the j-th and (j+1)-st eigenvalues form a complex
+* conjugate pair, then u(j) = VL(:,j) + i*VL(:,j+1) and
+* u(j+1) = VL(:,j) - i*VL(:,j+1).
+*
+* LDVL (input) INTEGER
+* The leading dimension of the array VL. LDVL >= 1; if
+* JOBVL = 'V', LDVL >= N.
+*
+* VR (output) DOUBLE PRECISION array, dimension (LDVR,N)
+* If JOBVR = 'V', the right eigenvectors v(j) are stored one
+* after another in the columns of VR, in the same order
+* as their eigenvalues.
+* If JOBVR = 'N', VR is not referenced.
+* If the j-th eigenvalue is real, then v(j) = VR(:,j),
+* the j-th column of VR.
+* If the j-th and (j+1)-st eigenvalues form a complex
+* conjugate pair, then v(j) = VR(:,j) + i*VR(:,j+1) and
+* v(j+1) = VR(:,j) - i*VR(:,j+1).
+*
+* LDVR (input) INTEGER
+* The leading dimension of the array VR. LDVR >= 1; if
+* JOBVR = 'V', LDVR >= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,3*N), and
+* if JOBVL = 'V' or JOBVR = 'V', LWORK >= 4*N. For good
+* performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if INFO = i, the QR algorithm failed to compute all the
+* eigenvalues, and no eigenvectors have been computed;
+* elements i+1:N of WR and WI contain eigenvalues which
+* have converged.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, SCALEA, WANTVL, WANTVR
+ CHARACTER SIDE
+ INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, ITAU, IWRK, K,
+ $ MAXWRK, MINWRK, NOUT
+ DOUBLE PRECISION ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,
+ $ SN
+* ..
+* .. Local Arrays ..
+ LOGICAL SELECT( 1 )
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,
+ $ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC,
+ $ XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX, ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE, DLAPY2, DNRM2
+ EXTERNAL LSAME, IDAMAX, ILAENV, DLAMCH, DLANGE, DLAPY2,
+ $ DNRM2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ WANTVL = LSAME( JOBVL, 'V' )
+ WANTVR = LSAME( JOBVR, 'V' )
+ IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( ( .NOT.WANTVR ) .AND. ( .NOT.LSAME( JOBVR, 'N' ) ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDVL.LT.1 .OR. ( WANTVL .AND. LDVL.LT.N ) ) THEN
+ INFO = -9
+ ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN
+ INFO = -11
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.
+* HSWORK refers to the workspace preferred by DHSEQR, as
+* calculated below. HSWORK is computed assuming ILO=1 and IHI=N,
+* the worst case.)
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ ELSE
+ MAXWRK = 2*N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )
+ IF( WANTVL ) THEN
+ MINWRK = 4*N
+ MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
+ $ 'DORGHR', ' ', N, 1, N, -1 ) )
+ CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,
+ $ WORK, -1, INFO )
+ HSWORK = WORK( 1 )
+ MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
+ MAXWRK = MAX( MAXWRK, 4*N )
+ ELSE IF( WANTVR ) THEN
+ MINWRK = 4*N
+ MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
+ $ 'DORGHR', ' ', N, 1, N, -1 ) )
+ CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,
+ $ WORK, -1, INFO )
+ HSWORK = WORK( 1 )
+ MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
+ MAXWRK = MAX( MAXWRK, 4*N )
+ ELSE
+ MINWRK = 3*N
+ CALL DHSEQR( 'E', 'N', N, 1, N, A, LDA, WR, WI, VR, LDVR,
+ $ WORK, -1, INFO )
+ HSWORK = WORK( 1 )
+ MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
+ END IF
+ MAXWRK = MAX( MAXWRK, MINWRK )
+ END IF
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEEV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', N, N, A, LDA, DUM )
+ SCALEA = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = SMLNUM
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = BIGNUM
+ END IF
+ IF( SCALEA )
+ $ CALL DLASCL( 'G', 0, 0, ANRM, CSCALE, N, N, A, LDA, IERR )
+*
+* Balance the matrix
+* (Workspace: need N)
+*
+ IBAL = 1
+ CALL DGEBAL( 'B', N, A, LDA, ILO, IHI, WORK( IBAL ), IERR )
+*
+* Reduce to upper Hessenberg form
+* (Workspace: need 3*N, prefer 2*N+N*NB)
+*
+ ITAU = IBAL + N
+ IWRK = ITAU + N
+ CALL DGEHRD( N, ILO, IHI, A, LDA, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+ IF( WANTVL ) THEN
+*
+* Want left eigenvectors
+* Copy Householder vectors to VL
+*
+ SIDE = 'L'
+ CALL DLACPY( 'L', N, N, A, LDA, VL, LDVL )
+*
+* Generate orthogonal matrix in VL
+* (Workspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+*
+ CALL DORGHR( N, ILO, IHI, VL, LDVL, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+* Perform QR iteration, accumulating Schur vectors in VL
+* (Workspace: need N+1, prefer N+HSWORK (see comments) )
+*
+ IWRK = ITAU
+ CALL DHSEQR( 'S', 'V', N, ILO, IHI, A, LDA, WR, WI, VL, LDVL,
+ $ WORK( IWRK ), LWORK-IWRK+1, INFO )
+*
+ IF( WANTVR ) THEN
+*
+* Want left and right eigenvectors
+* Copy Schur vectors to VR
+*
+ SIDE = 'B'
+ CALL DLACPY( 'F', N, N, VL, LDVL, VR, LDVR )
+ END IF
+*
+ ELSE IF( WANTVR ) THEN
+*
+* Want right eigenvectors
+* Copy Householder vectors to VR
+*
+ SIDE = 'R'
+ CALL DLACPY( 'L', N, N, A, LDA, VR, LDVR )
+*
+* Generate orthogonal matrix in VR
+* (Workspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+*
+ CALL DORGHR( N, ILO, IHI, VR, LDVR, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+* Perform QR iteration, accumulating Schur vectors in VR
+* (Workspace: need N+1, prefer N+HSWORK (see comments) )
+*
+ IWRK = ITAU
+ CALL DHSEQR( 'S', 'V', N, ILO, IHI, A, LDA, WR, WI, VR, LDVR,
+ $ WORK( IWRK ), LWORK-IWRK+1, INFO )
+*
+ ELSE
+*
+* Compute eigenvalues only
+* (Workspace: need N+1, prefer N+HSWORK (see comments) )
+*
+ IWRK = ITAU
+ CALL DHSEQR( 'E', 'N', N, ILO, IHI, A, LDA, WR, WI, VR, LDVR,
+ $ WORK( IWRK ), LWORK-IWRK+1, INFO )
+ END IF
+*
+* If INFO > 0 from DHSEQR, then quit
+*
+ IF( INFO.GT.0 )
+ $ GO TO 50
+*
+ IF( WANTVL .OR. WANTVR ) THEN
+*
+* Compute left and/or right eigenvectors
+* (Workspace: need 4*N)
+*
+ CALL DTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
+ $ N, NOUT, WORK( IWRK ), IERR )
+ END IF
+*
+ IF( WANTVL ) THEN
+*
+* Undo balancing of left eigenvectors
+* (Workspace: need N)
+*
+ CALL DGEBAK( 'B', 'L', N, ILO, IHI, WORK( IBAL ), N, VL, LDVL,
+ $ IERR )
+*
+* Normalize left eigenvectors and make largest component real
+*
+ DO 20 I = 1, N
+ IF( WI( I ).EQ.ZERO ) THEN
+ SCL = ONE / DNRM2( N, VL( 1, I ), 1 )
+ CALL DSCAL( N, SCL, VL( 1, I ), 1 )
+ ELSE IF( WI( I ).GT.ZERO ) THEN
+ SCL = ONE / DLAPY2( DNRM2( N, VL( 1, I ), 1 ),
+ $ DNRM2( N, VL( 1, I+1 ), 1 ) )
+ CALL DSCAL( N, SCL, VL( 1, I ), 1 )
+ CALL DSCAL( N, SCL, VL( 1, I+1 ), 1 )
+ DO 10 K = 1, N
+ WORK( IWRK+K-1 ) = VL( K, I )**2 + VL( K, I+1 )**2
+ 10 CONTINUE
+ K = IDAMAX( N, WORK( IWRK ), 1 )
+ CALL DLARTG( VL( K, I ), VL( K, I+1 ), CS, SN, R )
+ CALL DROT( N, VL( 1, I ), 1, VL( 1, I+1 ), 1, CS, SN )
+ VL( K, I+1 ) = ZERO
+ END IF
+ 20 CONTINUE
+ END IF
+*
+ IF( WANTVR ) THEN
+*
+* Undo balancing of right eigenvectors
+* (Workspace: need N)
+*
+ CALL DGEBAK( 'B', 'R', N, ILO, IHI, WORK( IBAL ), N, VR, LDVR,
+ $ IERR )
+*
+* Normalize right eigenvectors and make largest component real
+*
+ DO 40 I = 1, N
+ IF( WI( I ).EQ.ZERO ) THEN
+ SCL = ONE / DNRM2( N, VR( 1, I ), 1 )
+ CALL DSCAL( N, SCL, VR( 1, I ), 1 )
+ ELSE IF( WI( I ).GT.ZERO ) THEN
+ SCL = ONE / DLAPY2( DNRM2( N, VR( 1, I ), 1 ),
+ $ DNRM2( N, VR( 1, I+1 ), 1 ) )
+ CALL DSCAL( N, SCL, VR( 1, I ), 1 )
+ CALL DSCAL( N, SCL, VR( 1, I+1 ), 1 )
+ DO 30 K = 1, N
+ WORK( IWRK+K-1 ) = VR( K, I )**2 + VR( K, I+1 )**2
+ 30 CONTINUE
+ K = IDAMAX( N, WORK( IWRK ), 1 )
+ CALL DLARTG( VR( K, I ), VR( K, I+1 ), CS, SN, R )
+ CALL DROT( N, VR( 1, I ), 1, VR( 1, I+1 ), 1, CS, SN )
+ VR( K, I+1 ) = ZERO
+ END IF
+ 40 CONTINUE
+ END IF
+*
+* Undo scaling if necessary
+*
+ 50 CONTINUE
+ IF( SCALEA ) THEN
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, WR( INFO+1 ),
+ $ MAX( N-INFO, 1 ), IERR )
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, WI( INFO+1 ),
+ $ MAX( N-INFO, 1 ), IERR )
+ IF( INFO.GT.0 ) THEN
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WR, N,
+ $ IERR )
+ CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WI, N,
+ $ IERR )
+ END IF
+ END IF
+*
+ WORK( 1 ) = MAXWRK
+ RETURN
+*
+* End of DGEEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgegs.f b/2.3-1/src/fortran/lapack/dgegs.f
new file mode 100644
index 00000000..85c32531
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgegs.f
@@ -0,0 +1,438 @@
+ SUBROUTINE DGEGS( JOBVSL, JOBVSR, N, A, LDA, B, LDB, ALPHAR,
+ $ ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK,
+ $ LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVSL, JOBVSR
+ INTEGER INFO, LDA, LDB, LDVSL, LDVSR, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), ALPHAI( * ), ALPHAR( * ),
+ $ B( LDB, * ), BETA( * ), VSL( LDVSL, * ),
+ $ VSR( LDVSR, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is deprecated and has been replaced by routine DGGES.
+*
+* DGEGS computes the eigenvalues, real Schur form, and, optionally,
+* left and or/right Schur vectors of a real matrix pair (A,B).
+* Given two square matrices A and B, the generalized real Schur
+* factorization has the form
+*
+* A = Q*S*Z**T, B = Q*T*Z**T
+*
+* where Q and Z are orthogonal matrices, T is upper triangular, and S
+* is an upper quasi-triangular matrix with 1-by-1 and 2-by-2 diagonal
+* blocks, the 2-by-2 blocks corresponding to complex conjugate pairs
+* of eigenvalues of (A,B). The columns of Q are the left Schur vectors
+* and the columns of Z are the right Schur vectors.
+*
+* If only the eigenvalues of (A,B) are needed, the driver routine
+* DGEGV should be used instead. See DGEGV for a description of the
+* eigenvalues of the generalized nonsymmetric eigenvalue problem
+* (GNEP).
+*
+* Arguments
+* =========
+*
+* JOBVSL (input) CHARACTER*1
+* = 'N': do not compute the left Schur vectors;
+* = 'V': compute the left Schur vectors (returned in VSL).
+*
+* JOBVSR (input) CHARACTER*1
+* = 'N': do not compute the right Schur vectors;
+* = 'V': compute the right Schur vectors (returned in VSR).
+*
+* N (input) INTEGER
+* The order of the matrices A, B, VSL, and VSR. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the matrix A.
+* On exit, the upper quasi-triangular matrix S from the
+* generalized real Schur factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
+* On entry, the matrix B.
+* On exit, the upper triangular matrix T from the generalized
+* real Schur factorization.
+*
+* LDB (input) INTEGER
+* The leading dimension of B. LDB >= max(1,N).
+*
+* ALPHAR (output) DOUBLE PRECISION array, dimension (N)
+* The real parts of each scalar alpha defining an eigenvalue
+* of GNEP.
+*
+* ALPHAI (output) DOUBLE PRECISION array, dimension (N)
+* The imaginary parts of each scalar alpha defining an
+* eigenvalue of GNEP. If ALPHAI(j) is zero, then the j-th
+* eigenvalue is real; if positive, then the j-th and (j+1)-st
+* eigenvalues are a complex conjugate pair, with
+* ALPHAI(j+1) = -ALPHAI(j).
+*
+* BETA (output) DOUBLE PRECISION array, dimension (N)
+* The scalars beta that define the eigenvalues of GNEP.
+* Together, the quantities alpha = (ALPHAR(j),ALPHAI(j)) and
+* beta = BETA(j) represent the j-th eigenvalue of the matrix
+* pair (A,B), in one of the forms lambda = alpha/beta or
+* mu = beta/alpha. Since either lambda or mu may overflow,
+* they should not, in general, be computed.
+*
+* VSL (output) DOUBLE PRECISION array, dimension (LDVSL,N)
+* If JOBVSL = 'V', the matrix of left Schur vectors Q.
+* Not referenced if JOBVSL = 'N'.
+*
+* LDVSL (input) INTEGER
+* The leading dimension of the matrix VSL. LDVSL >=1, and
+* if JOBVSL = 'V', LDVSL >= N.
+*
+* VSR (output) DOUBLE PRECISION array, dimension (LDVSR,N)
+* If JOBVSR = 'V', the matrix of right Schur vectors Z.
+* Not referenced if JOBVSR = 'N'.
+*
+* LDVSR (input) INTEGER
+* The leading dimension of the matrix VSR. LDVSR >= 1, and
+* if JOBVSR = 'V', LDVSR >= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,4*N).
+* For good performance, LWORK must generally be larger.
+* To compute the optimal value of LWORK, call ILAENV to get
+* blocksizes (for DGEQRF, DORMQR, and DORGQR.) Then compute:
+* NB -- MAX of the blocksizes for DGEQRF, DORMQR, and DORGQR
+* The optimal LWORK is 2*N + N*(NB+1).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* = 1,...,N:
+* The QZ iteration failed. (A,B) are not in Schur
+* form, but ALPHAR(j), ALPHAI(j), and BETA(j) should
+* be correct for j=INFO+1,...,N.
+* > N: errors that usually indicate LAPACK problems:
+* =N+1: error return from DGGBAL
+* =N+2: error return from DGEQRF
+* =N+3: error return from DORMQR
+* =N+4: error return from DORGQR
+* =N+5: error return from DGGHRD
+* =N+6: error return from DHGEQZ (other than failed
+* iteration)
+* =N+7: error return from DGGBAK (computing VSL)
+* =N+8: error return from DGGBAK (computing VSR)
+* =N+9: error return from DLASCL (various places)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILASCL, ILBSCL, ILVSL, ILVSR, LQUERY
+ INTEGER ICOLS, IHI, IINFO, IJOBVL, IJOBVR, ILEFT, ILO,
+ $ IRIGHT, IROWS, ITAU, IWORK, LOPT, LWKMIN,
+ $ LWKOPT, NB, NB1, NB2, NB3
+ DOUBLE PRECISION ANRM, ANRMTO, BIGNUM, BNRM, BNRMTO, EPS,
+ $ SAFMIN, SMLNUM
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQRF, DGGBAK, DGGBAL, DGGHRD, DHGEQZ, DLACPY,
+ $ DLASCL, DLASET, DORGQR, DORMQR, XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC INT, MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode the input arguments
+*
+ IF( LSAME( JOBVSL, 'N' ) ) THEN
+ IJOBVL = 1
+ ILVSL = .FALSE.
+ ELSE IF( LSAME( JOBVSL, 'V' ) ) THEN
+ IJOBVL = 2
+ ILVSL = .TRUE.
+ ELSE
+ IJOBVL = -1
+ ILVSL = .FALSE.
+ END IF
+*
+ IF( LSAME( JOBVSR, 'N' ) ) THEN
+ IJOBVR = 1
+ ILVSR = .FALSE.
+ ELSE IF( LSAME( JOBVSR, 'V' ) ) THEN
+ IJOBVR = 2
+ ILVSR = .TRUE.
+ ELSE
+ IJOBVR = -1
+ ILVSR = .FALSE.
+ END IF
+*
+* Test the input arguments
+*
+ LWKMIN = MAX( 4*N, 1 )
+ LWKOPT = LWKMIN
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ INFO = 0
+ IF( IJOBVL.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( IJOBVR.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDVSL.LT.1 .OR. ( ILVSL .AND. LDVSL.LT.N ) ) THEN
+ INFO = -12
+ ELSE IF( LDVSR.LT.1 .OR. ( ILVSR .AND. LDVSR.LT.N ) ) THEN
+ INFO = -14
+ ELSE IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -16
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ NB1 = ILAENV( 1, 'DGEQRF', ' ', N, N, -1, -1 )
+ NB2 = ILAENV( 1, 'DORMQR', ' ', N, N, N, -1 )
+ NB3 = ILAENV( 1, 'DORGQR', ' ', N, N, N, -1 )
+ NB = MAX( NB1, NB2, NB3 )
+ LOPT = 2*N + N*( NB+1 )
+ WORK( 1 ) = LOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEGS ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'E' )*DLAMCH( 'B' )
+ SAFMIN = DLAMCH( 'S' )
+ SMLNUM = N*SAFMIN / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', N, N, A, LDA, WORK )
+ ILASCL = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ANRMTO = SMLNUM
+ ILASCL = .TRUE.
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ANRMTO = BIGNUM
+ ILASCL = .TRUE.
+ END IF
+*
+ IF( ILASCL ) THEN
+ CALL DLASCL( 'G', -1, -1, ANRM, ANRMTO, N, N, A, LDA, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ END IF
+*
+* Scale B if max element outside range [SMLNUM,BIGNUM]
+*
+ BNRM = DLANGE( 'M', N, N, B, LDB, WORK )
+ ILBSCL = .FALSE.
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+ BNRMTO = SMLNUM
+ ILBSCL = .TRUE.
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+ BNRMTO = BIGNUM
+ ILBSCL = .TRUE.
+ END IF
+*
+ IF( ILBSCL ) THEN
+ CALL DLASCL( 'G', -1, -1, BNRM, BNRMTO, N, N, B, LDB, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ END IF
+*
+* Permute the matrix to make it more nearly triangular
+* Workspace layout: (2*N words -- "work..." not actually used)
+* left_permutation, right_permutation, work...
+*
+ ILEFT = 1
+ IRIGHT = N + 1
+ IWORK = IRIGHT + N
+ CALL DGGBAL( 'P', N, A, LDA, B, LDB, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), WORK( IWORK ), IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 1
+ GO TO 10
+ END IF
+*
+* Reduce B to triangular form, and initialize VSL and/or VSR
+* Workspace layout: ("work..." must have at least N words)
+* left_permutation, right_permutation, tau, work...
+*
+ IROWS = IHI + 1 - ILO
+ ICOLS = N + 1 - ILO
+ ITAU = IWORK
+ IWORK = ITAU + IROWS
+ CALL DGEQRF( IROWS, ICOLS, B( ILO, ILO ), LDB, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK+1-IWORK, IINFO )
+ IF( IINFO.GE.0 )
+ $ LWKOPT = MAX( LWKOPT, INT( WORK( IWORK ) )+IWORK-1 )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 2
+ GO TO 10
+ END IF
+*
+ CALL DORMQR( 'L', 'T', IROWS, ICOLS, IROWS, B( ILO, ILO ), LDB,
+ $ WORK( ITAU ), A( ILO, ILO ), LDA, WORK( IWORK ),
+ $ LWORK+1-IWORK, IINFO )
+ IF( IINFO.GE.0 )
+ $ LWKOPT = MAX( LWKOPT, INT( WORK( IWORK ) )+IWORK-1 )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 3
+ GO TO 10
+ END IF
+*
+ IF( ILVSL ) THEN
+ CALL DLASET( 'Full', N, N, ZERO, ONE, VSL, LDVSL )
+ CALL DLACPY( 'L', IROWS-1, IROWS-1, B( ILO+1, ILO ), LDB,
+ $ VSL( ILO+1, ILO ), LDVSL )
+ CALL DORGQR( IROWS, IROWS, IROWS, VSL( ILO, ILO ), LDVSL,
+ $ WORK( ITAU ), WORK( IWORK ), LWORK+1-IWORK,
+ $ IINFO )
+ IF( IINFO.GE.0 )
+ $ LWKOPT = MAX( LWKOPT, INT( WORK( IWORK ) )+IWORK-1 )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 4
+ GO TO 10
+ END IF
+ END IF
+*
+ IF( ILVSR )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, VSR, LDVSR )
+*
+* Reduce to generalized Hessenberg form
+*
+ CALL DGGHRD( JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB, VSL,
+ $ LDVSL, VSR, LDVSR, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 5
+ GO TO 10
+ END IF
+*
+* Perform QZ algorithm, computing Schur vectors if desired
+* Workspace layout: ("work..." must have at least 1 word)
+* left_permutation, right_permutation, work...
+*
+ IWORK = ITAU
+ CALL DHGEQZ( 'S', JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB,
+ $ ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR,
+ $ WORK( IWORK ), LWORK+1-IWORK, IINFO )
+ IF( IINFO.GE.0 )
+ $ LWKOPT = MAX( LWKOPT, INT( WORK( IWORK ) )+IWORK-1 )
+ IF( IINFO.NE.0 ) THEN
+ IF( IINFO.GT.0 .AND. IINFO.LE.N ) THEN
+ INFO = IINFO
+ ELSE IF( IINFO.GT.N .AND. IINFO.LE.2*N ) THEN
+ INFO = IINFO - N
+ ELSE
+ INFO = N + 6
+ END IF
+ GO TO 10
+ END IF
+*
+* Apply permutation to VSL and VSR
+*
+ IF( ILVSL ) THEN
+ CALL DGGBAK( 'P', 'L', N, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), N, VSL, LDVSL, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 7
+ GO TO 10
+ END IF
+ END IF
+ IF( ILVSR ) THEN
+ CALL DGGBAK( 'P', 'R', N, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), N, VSR, LDVSR, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 8
+ GO TO 10
+ END IF
+ END IF
+*
+* Undo scaling
+*
+ IF( ILASCL ) THEN
+ CALL DLASCL( 'H', -1, -1, ANRMTO, ANRM, N, N, A, LDA, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ CALL DLASCL( 'G', -1, -1, ANRMTO, ANRM, N, 1, ALPHAR, N,
+ $ IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ CALL DLASCL( 'G', -1, -1, ANRMTO, ANRM, N, 1, ALPHAI, N,
+ $ IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ END IF
+*
+ IF( ILBSCL ) THEN
+ CALL DLASCL( 'U', -1, -1, BNRMTO, BNRM, N, N, B, LDB, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ CALL DLASCL( 'G', -1, -1, BNRMTO, BNRM, N, 1, BETA, N, IINFO )
+ IF( IINFO.NE.0 ) THEN
+ INFO = N + 9
+ RETURN
+ END IF
+ END IF
+*
+ 10 CONTINUE
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DGEGS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgehd2.f b/2.3-1/src/fortran/lapack/dgehd2.f
new file mode 100644
index 00000000..28d1cc8d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgehd2.f
@@ -0,0 +1,149 @@
+ SUBROUTINE DGEHD2( N, ILO, IHI, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEHD2 reduces a real general matrix A to upper Hessenberg form H by
+* an orthogonal similarity transformation: Q' * A * Q = H .
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that A is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+* set by a previous call to DGEBAL; otherwise they should be
+* set to 1 and N respectively. See Further Details.
+* 1 <= ILO <= IHI <= max(1,N).
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the n by n general matrix to be reduced.
+* On exit, the upper triangle and the first subdiagonal of A
+* are overwritten with the upper Hessenberg matrix H, and the
+* elements below the first subdiagonal, with the array TAU,
+* represent the orthogonal matrix Q as a product of elementary
+* reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of (ihi-ilo) elementary
+* reflectors
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
+* exit in A(i+2:ihi,i), and tau in TAU(i).
+*
+* The contents of A are illustrated by the following example, with
+* n = 7, ilo = 2 and ihi = 6:
+*
+* on entry, on exit,
+*
+* ( a a a a a a a ) ( a a h h h h a )
+* ( a a a a a a ) ( a h h h h a )
+* ( a a a a a a ) ( h h h h h h )
+* ( a a a a a a ) ( v2 h h h h h )
+* ( a a a a a a ) ( v2 v3 h h h h )
+* ( a a a a a a ) ( v2 v3 v4 h h h )
+* ( a ) ( a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ DOUBLE PRECISION AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -2
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEHD2', -INFO )
+ RETURN
+ END IF
+*
+ DO 10 I = ILO, IHI - 1
+*
+* Compute elementary reflector H(i) to annihilate A(i+2:ihi,i)
+*
+ CALL DLARFG( IHI-I, A( I+1, I ), A( MIN( I+2, N ), I ), 1,
+ $ TAU( I ) )
+ AII = A( I+1, I )
+ A( I+1, I ) = ONE
+*
+* Apply H(i) to A(1:ihi,i+1:ihi) from the right
+*
+ CALL DLARF( 'Right', IHI, IHI-I, A( I+1, I ), 1, TAU( I ),
+ $ A( 1, I+1 ), LDA, WORK )
+*
+* Apply H(i) to A(i+1:ihi,i+1:n) from the left
+*
+ CALL DLARF( 'Left', IHI-I, N-I, A( I+1, I ), 1, TAU( I ),
+ $ A( I+1, I+1 ), LDA, WORK )
+*
+ A( I+1, I ) = AII
+ 10 CONTINUE
+*
+ RETURN
+*
+* End of DGEHD2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgehrd.f b/2.3-1/src/fortran/lapack/dgehrd.f
new file mode 100644
index 00000000..339ee400
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgehrd.f
@@ -0,0 +1,273 @@
+ SUBROUTINE DGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEHRD reduces a real general matrix A to upper Hessenberg form H by
+* an orthogonal similarity transformation: Q' * A * Q = H .
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that A is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+* set by a previous call to DGEBAL; otherwise they should be
+* set to 1 and N respectively. See Further Details.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the N-by-N general matrix to be reduced.
+* On exit, the upper triangle and the first subdiagonal of A
+* are overwritten with the upper Hessenberg matrix H, and the
+* elements below the first subdiagonal, with the array TAU,
+* represent the orthogonal matrix Q as a product of elementary
+* reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
+* zero.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of (ihi-ilo) elementary
+* reflectors
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
+* exit in A(i+2:ihi,i), and tau in TAU(i).
+*
+* The contents of A are illustrated by the following example, with
+* n = 7, ilo = 2 and ihi = 6:
+*
+* on entry, on exit,
+*
+* ( a a a a a a a ) ( a a h h h h a )
+* ( a a a a a a ) ( a h h h h a )
+* ( a a a a a a ) ( h h h h h h )
+* ( a a a a a a ) ( v2 h h h h h )
+* ( a a a a a a ) ( v2 v3 h h h h )
+* ( a a a a a a ) ( v2 v3 v4 h h h )
+* ( a ) ( a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* This file is a slight modification of LAPACK-3.0's DGEHRD
+* subroutine incorporating improvements proposed by Quintana-Orti and
+* Van de Geijn (2005).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0,
+ $ ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, LDWORK, LWKOPT, NB,
+ $ NBMIN, NH, NX
+ DOUBLE PRECISION EI
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION T( LDT, NBMAX )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DGEHD2, DGEMM, DLAHR2, DLARFB, DTRMM,
+ $ XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ NB = MIN( NBMAX, ILAENV( 1, 'DGEHRD', ' ', N, ILO, IHI, -1 ) )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -2
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEHRD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Set elements 1:ILO-1 and IHI:N-1 of TAU to zero
+*
+ DO 10 I = 1, ILO - 1
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ DO 20 I = MAX( 1, IHI ), N - 1
+ TAU( I ) = ZERO
+ 20 CONTINUE
+*
+* Quick return if possible
+*
+ NH = IHI - ILO + 1
+ IF( NH.LE.1 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+* Determine the block size
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'DGEHRD', ' ', N, ILO, IHI, -1 ) )
+ NBMIN = 2
+ IWS = 1
+ IF( NB.GT.1 .AND. NB.LT.NH ) THEN
+*
+* Determine when to cross over from blocked to unblocked code
+* (last block is always handled by unblocked code)
+*
+ NX = MAX( NB, ILAENV( 3, 'DGEHRD', ' ', N, ILO, IHI, -1 ) )
+ IF( NX.LT.NH ) THEN
+*
+* Determine if workspace is large enough for blocked code
+*
+ IWS = N*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: determine the
+* minimum value of NB, and reduce NB or force use of
+* unblocked code
+*
+ NBMIN = MAX( 2, ILAENV( 2, 'DGEHRD', ' ', N, ILO, IHI,
+ $ -1 ) )
+ IF( LWORK.GE.N*NBMIN ) THEN
+ NB = LWORK / N
+ ELSE
+ NB = 1
+ END IF
+ END IF
+ END IF
+ END IF
+ LDWORK = N
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.NH ) THEN
+*
+* Use unblocked code below
+*
+ I = ILO
+*
+ ELSE
+*
+* Use blocked code
+*
+ DO 40 I = ILO, IHI - 1 - NX, NB
+ IB = MIN( NB, IHI-I )
+*
+* Reduce columns i:i+ib-1 to Hessenberg form, returning the
+* matrices V and T of the block reflector H = I - V*T*V'
+* which performs the reduction, and also the matrix Y = A*V*T
+*
+ CALL DLAHR2( IHI, I, IB, A( 1, I ), LDA, TAU( I ), T, LDT,
+ $ WORK, LDWORK )
+*
+* Apply the block reflector H to A(1:ihi,i+ib:ihi) from the
+* right, computing A := A - Y * V'. V(i+ib,ib-1) must be set
+* to 1
+*
+ EI = A( I+IB, I+IB-1 )
+ A( I+IB, I+IB-1 ) = ONE
+ CALL DGEMM( 'No transpose', 'Transpose',
+ $ IHI, IHI-I-IB+1,
+ $ IB, -ONE, WORK, LDWORK, A( I+IB, I ), LDA, ONE,
+ $ A( 1, I+IB ), LDA )
+ A( I+IB, I+IB-1 ) = EI
+*
+* Apply the block reflector H to A(1:i,i+1:i+ib-1) from the
+* right
+*
+ CALL DTRMM( 'Right', 'Lower', 'Transpose',
+ $ 'Unit', I, IB-1,
+ $ ONE, A( I+1, I ), LDA, WORK, LDWORK )
+ DO 30 J = 0, IB-2
+ CALL DAXPY( I, -ONE, WORK( LDWORK*J+1 ), 1,
+ $ A( 1, I+J+1 ), 1 )
+ 30 CONTINUE
+*
+* Apply the block reflector H to A(i+1:ihi,i+ib:n) from the
+* left
+*
+ CALL DLARFB( 'Left', 'Transpose', 'Forward',
+ $ 'Columnwise',
+ $ IHI-I, N-I-IB+1, IB, A( I+1, I ), LDA, T, LDT,
+ $ A( I+1, I+IB ), LDA, WORK, LDWORK )
+ 40 CONTINUE
+ END IF
+*
+* Use unblocked code to reduce the rest of the matrix
+*
+ CALL DGEHD2( N, I, IHI, A, LDA, TAU, WORK, IINFO )
+ WORK( 1 ) = IWS
+*
+ RETURN
+*
+* End of DGEHRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgelq2.f b/2.3-1/src/fortran/lapack/dgelq2.f
new file mode 100644
index 00000000..f3540505
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgelq2.f
@@ -0,0 +1,121 @@
+ SUBROUTINE DGELQ2( M, N, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGELQ2 computes an LQ factorization of a real m by n matrix A:
+* A = L * Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, the elements on and below the diagonal of the array
+* contain the m by min(m,n) lower trapezoidal matrix L (L is
+* lower triangular if m <= n); the elements above the diagonal,
+* with the array TAU, represent the orthogonal matrix Q as a
+* product of elementary reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (M)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i,i+1:n),
+* and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K
+ DOUBLE PRECISION AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELQ2', -INFO )
+ RETURN
+ END IF
+*
+ K = MIN( M, N )
+*
+ DO 10 I = 1, K
+*
+* Generate elementary reflector H(i) to annihilate A(i,i+1:n)
+*
+ CALL DLARFG( N-I+1, A( I, I ), A( I, MIN( I+1, N ) ), LDA,
+ $ TAU( I ) )
+ IF( I.LT.M ) THEN
+*
+* Apply H(i) to A(i+1:m,i:n) from the right
+*
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL DLARF( 'Right', M-I, N-I+1, A( I, I ), LDA, TAU( I ),
+ $ A( I+1, I ), LDA, WORK )
+ A( I, I ) = AII
+ END IF
+ 10 CONTINUE
+ RETURN
+*
+* End of DGELQ2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgelqf.f b/2.3-1/src/fortran/lapack/dgelqf.f
new file mode 100644
index 00000000..063a38ba
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgelqf.f
@@ -0,0 +1,195 @@
+ SUBROUTINE DGELQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGELQF computes an LQ factorization of a real M-by-N matrix A:
+* A = L * Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the elements on and below the diagonal of the array
+* contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+* lower triangular if m <= n); the elements above the diagonal,
+* with the array TAU, represent the orthogonal matrix Q as a
+* product of elementary reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i,i+1:n),
+* and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGELQ2, DLARFB, DLARFT, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ LWKOPT = M*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELQF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ K = MIN( M, N )
+ IF( K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DGELQF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DGELQF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code initially
+*
+ DO 10 I = 1, K - NX, NB
+ IB = MIN( K-I+1, NB )
+*
+* Compute the LQ factorization of the current block
+* A(i:i+ib-1,i:n)
+*
+ CALL DGELQ2( IB, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+ IF( I+IB.LE.M ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL DLARFT( 'Forward', 'Rowwise', N-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(i+ib:m,i:n) from the right
+*
+ CALL DLARFB( 'Right', 'No transpose', 'Forward',
+ $ 'Rowwise', M-I-IB+1, N-I+1, IB, A( I, I ),
+ $ LDA, WORK, LDWORK, A( I+IB, I ), LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+ 10 CONTINUE
+ ELSE
+ I = 1
+ END IF
+*
+* Use unblocked code to factor the last or only block.
+*
+ IF( I.LE.K )
+ $ CALL DGELQ2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DGELQF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgels.f b/2.3-1/src/fortran/lapack/dgels.f
new file mode 100644
index 00000000..4fa1e229
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgels.f
@@ -0,0 +1,422 @@
+ SUBROUTINE DGELS( TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK,
+ $ INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGELS solves overdetermined or underdetermined real linear systems
+* involving an M-by-N matrix A, or its transpose, using a QR or LQ
+* factorization of A. It is assumed that A has full rank.
+*
+* The following options are provided:
+*
+* 1. If TRANS = 'N' and m >= n: find the least squares solution of
+* an overdetermined system, i.e., solve the least squares problem
+* minimize || B - A*X ||.
+*
+* 2. If TRANS = 'N' and m < n: find the minimum norm solution of
+* an underdetermined system A * X = B.
+*
+* 3. If TRANS = 'T' and m >= n: find the minimum norm solution of
+* an undetermined system A**T * X = B.
+*
+* 4. If TRANS = 'T' and m < n: find the least squares solution of
+* an overdetermined system, i.e., solve the least squares problem
+* minimize || B - A**T * X ||.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+* matrix X.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* = 'N': the linear system involves A;
+* = 'T': the linear system involves A**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of
+* columns of the matrices B and X. NRHS >=0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit,
+* if M >= N, A is overwritten by details of its QR
+* factorization as returned by DGEQRF;
+* if M < N, A is overwritten by details of its LQ
+* factorization as returned by DGELQF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the matrix B of right hand side vectors, stored
+* columnwise; B is M-by-NRHS if TRANS = 'N', or N-by-NRHS
+* if TRANS = 'T'.
+* On exit, if INFO = 0, B is overwritten by the solution
+* vectors, stored columnwise:
+* if TRANS = 'N' and m >= n, rows 1 to n of B contain the least
+* squares solution vectors; the residual sum of squares for the
+* solution in each column is given by the sum of squares of
+* elements N+1 to M in that column;
+* if TRANS = 'N' and m < n, rows 1 to N of B contain the
+* minimum norm solution vectors;
+* if TRANS = 'T' and m >= n, rows 1 to M of B contain the
+* minimum norm solution vectors;
+* if TRANS = 'T' and m < n, rows 1 to M of B contain the
+* least squares solution vectors; the residual sum of squares
+* for the solution in each column is given by the sum of
+* squares of elements M+1 to N in that column.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= MAX(1,M,N).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* LWORK >= max( 1, MN + max( MN, NRHS ) ).
+* For optimal performance,
+* LWORK >= max( 1, MN + max( MN, NRHS )*NB ).
+* where MN = min(M,N) and NB is the optimum block size.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the i-th diagonal element of the
+* triangular factor of A is zero, so that A does not have
+* full rank; the least squares solution could not be
+* computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, TPSD
+ INTEGER BROW, I, IASCL, IBSCL, J, MN, NB, SCLLEN, WSIZE
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMLNUM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION RWORK( 1 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLABAD, DLAMCH, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGELQF, DGEQRF, DLASCL, DLASET, DORMLQ, DORMQR,
+ $ DTRTRS, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments.
+*
+ INFO = 0
+ MN = MIN( M, N )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.( LSAME( TRANS, 'N' ) .OR. LSAME( TRANS, 'T' ) ) ) THEN
+ INFO = -1
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+ INFO = -8
+ ELSE IF( LWORK.LT.MAX( 1, MN+MAX( MN, NRHS ) ) .AND. .NOT.LQUERY )
+ $ THEN
+ INFO = -10
+ END IF
+*
+* Figure out optimal block size
+*
+ IF( INFO.EQ.0 .OR. INFO.EQ.-10 ) THEN
+*
+ TPSD = .TRUE.
+ IF( LSAME( TRANS, 'N' ) )
+ $ TPSD = .FALSE.
+*
+ IF( M.GE.N ) THEN
+ NB = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ IF( TPSD ) THEN
+ NB = MAX( NB, ILAENV( 1, 'DORMQR', 'LN', M, NRHS, N,
+ $ -1 ) )
+ ELSE
+ NB = MAX( NB, ILAENV( 1, 'DORMQR', 'LT', M, NRHS, N,
+ $ -1 ) )
+ END IF
+ ELSE
+ NB = ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ IF( TPSD ) THEN
+ NB = MAX( NB, ILAENV( 1, 'DORMLQ', 'LT', N, NRHS, M,
+ $ -1 ) )
+ ELSE
+ NB = MAX( NB, ILAENV( 1, 'DORMLQ', 'LN', N, NRHS, M,
+ $ -1 ) )
+ END IF
+ END IF
+*
+ WSIZE = MAX( 1, MN+MAX( MN, NRHS )*NB )
+ WORK( 1 ) = DBLE( WSIZE )
+*
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELS ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( MIN( M, N, NRHS ).EQ.0 ) THEN
+ CALL DLASET( 'Full', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A, B if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', M, N, A, LDA, RWORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ GO TO 50
+ END IF
+*
+ BROW = M
+ IF( TPSD )
+ $ BROW = N
+ BNRM = DLANGE( 'M', BROW, NRHS, B, LDB, RWORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, BROW, NRHS, B, LDB,
+ $ INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, BROW, NRHS, B, LDB,
+ $ INFO )
+ IBSCL = 2
+ END IF
+*
+ IF( M.GE.N ) THEN
+*
+* compute QR factorization of A
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( 1 ), WORK( MN+1 ), LWORK-MN,
+ $ INFO )
+*
+* workspace at least N, optimally N*NB
+*
+ IF( .NOT.TPSD ) THEN
+*
+* Least-Squares Problem min || A * X - B ||
+*
+* B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+ CALL DORMQR( 'Left', 'Transpose', M, NRHS, N, A, LDA,
+ $ WORK( 1 ), B, LDB, WORK( MN+1 ), LWORK-MN,
+ $ INFO )
+*
+* workspace at least NRHS, optimally NRHS*NB
+*
+* B(1:N,1:NRHS) := inv(R) * B(1:N,1:NRHS)
+*
+ CALL DTRTRS( 'Upper', 'No transpose', 'Non-unit', N, NRHS,
+ $ A, LDA, B, LDB, INFO )
+*
+ IF( INFO.GT.0 ) THEN
+ RETURN
+ END IF
+*
+ SCLLEN = N
+*
+ ELSE
+*
+* Overdetermined system of equations A' * X = B
+*
+* B(1:N,1:NRHS) := inv(R') * B(1:N,1:NRHS)
+*
+ CALL DTRTRS( 'Upper', 'Transpose', 'Non-unit', N, NRHS,
+ $ A, LDA, B, LDB, INFO )
+*
+ IF( INFO.GT.0 ) THEN
+ RETURN
+ END IF
+*
+* B(N+1:M,1:NRHS) = ZERO
+*
+ DO 20 J = 1, NRHS
+ DO 10 I = N + 1, M
+ B( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* B(1:M,1:NRHS) := Q(1:N,:) * B(1:N,1:NRHS)
+*
+ CALL DORMQR( 'Left', 'No transpose', M, NRHS, N, A, LDA,
+ $ WORK( 1 ), B, LDB, WORK( MN+1 ), LWORK-MN,
+ $ INFO )
+*
+* workspace at least NRHS, optimally NRHS*NB
+*
+ SCLLEN = M
+*
+ END IF
+*
+ ELSE
+*
+* Compute LQ factorization of A
+*
+ CALL DGELQF( M, N, A, LDA, WORK( 1 ), WORK( MN+1 ), LWORK-MN,
+ $ INFO )
+*
+* workspace at least M, optimally M*NB.
+*
+ IF( .NOT.TPSD ) THEN
+*
+* underdetermined system of equations A * X = B
+*
+* B(1:M,1:NRHS) := inv(L) * B(1:M,1:NRHS)
+*
+ CALL DTRTRS( 'Lower', 'No transpose', 'Non-unit', M, NRHS,
+ $ A, LDA, B, LDB, INFO )
+*
+ IF( INFO.GT.0 ) THEN
+ RETURN
+ END IF
+*
+* B(M+1:N,1:NRHS) = 0
+*
+ DO 40 J = 1, NRHS
+ DO 30 I = M + 1, N
+ B( I, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* B(1:N,1:NRHS) := Q(1:N,:)' * B(1:M,1:NRHS)
+*
+ CALL DORMLQ( 'Left', 'Transpose', N, NRHS, M, A, LDA,
+ $ WORK( 1 ), B, LDB, WORK( MN+1 ), LWORK-MN,
+ $ INFO )
+*
+* workspace at least NRHS, optimally NRHS*NB
+*
+ SCLLEN = N
+*
+ ELSE
+*
+* overdetermined system min || A' * X - B ||
+*
+* B(1:N,1:NRHS) := Q * B(1:N,1:NRHS)
+*
+ CALL DORMLQ( 'Left', 'No transpose', N, NRHS, M, A, LDA,
+ $ WORK( 1 ), B, LDB, WORK( MN+1 ), LWORK-MN,
+ $ INFO )
+*
+* workspace at least NRHS, optimally NRHS*NB
+*
+* B(1:M,1:NRHS) := inv(L') * B(1:M,1:NRHS)
+*
+ CALL DTRTRS( 'Lower', 'Transpose', 'Non-unit', M, NRHS,
+ $ A, LDA, B, LDB, INFO )
+*
+ IF( INFO.GT.0 ) THEN
+ RETURN
+ END IF
+*
+ SCLLEN = M
+*
+ END IF
+*
+ END IF
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, SCLLEN, NRHS, B, LDB,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, SCLLEN, NRHS, B, LDB,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, SCLLEN, NRHS, B, LDB,
+ $ INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, SCLLEN, NRHS, B, LDB,
+ $ INFO )
+ END IF
+*
+ 50 CONTINUE
+ WORK( 1 ) = DBLE( WSIZE )
+*
+ RETURN
+*
+* End of DGELS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgelss.f b/2.3-1/src/fortran/lapack/dgelss.f
new file mode 100644
index 00000000..f024e138
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgelss.f
@@ -0,0 +1,617 @@
+ SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), S( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGELSS computes the minimum norm solution to a real linear least
+* squares problem:
+*
+* Minimize 2-norm(| b - A*x |).
+*
+* using the singular value decomposition (SVD) of A. A is an M-by-N
+* matrix which may be rank-deficient.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution matrix
+* X.
+*
+* The effective rank of A is determined by treating as zero those
+* singular values which are less than RCOND times the largest singular
+* value.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrices B and X. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the first min(m,n) rows of A are overwritten with
+* its right singular vectors, stored rowwise.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the M-by-NRHS right hand side matrix B.
+* On exit, B is overwritten by the N-by-NRHS solution
+* matrix X. If m >= n and RANK = n, the residual
+* sum-of-squares for the solution in the i-th column is given
+* by the sum of squares of elements n+1:m in that column.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,max(M,N)).
+*
+* S (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The singular values of A in decreasing order.
+* The condition number of A in the 2-norm = S(1)/S(min(m,n)).
+*
+* RCOND (input) DOUBLE PRECISION
+* RCOND is used to determine the effective rank of A.
+* Singular values S(i) <= RCOND*S(1) are treated as zero.
+* If RCOND < 0, machine precision is used instead.
+*
+* RANK (output) INTEGER
+* The effective rank of A, i.e., the number of singular values
+* which are greater than RCOND*S(1).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 1, and also:
+* LWORK >= 3*min(M,N) + max( 2*min(M,N), max(M,N), NRHS )
+* For good performance, LWORK should generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: the algorithm for computing the SVD failed to converge;
+* if INFO = i, i off-diagonal elements of an intermediate
+* bidiagonal form did not converge to zero.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER BDSPAC, BL, CHUNK, I, IASCL, IBSCL, IE, IL,
+ $ ITAU, ITAUP, ITAUQ, IWORK, LDWORK, MAXMN,
+ $ MAXWRK, MINMN, MINWRK, MM, MNTHR
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, EPS, SFMIN, SMLNUM, THR
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION VDUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DBDSQR, DCOPY, DGEBRD, DGELQF, DGEMM, DGEMV,
+ $ DGEQRF, DLABAD, DLACPY, DLASCL, DLASET, DORGBR,
+ $ DORMBR, DORMLQ, DORMQR, DRSCL, XERBLA
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL ILAENV, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ MINMN = MIN( M, N )
+ MAXMN = MAX( M, N )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, MAXMN ) ) THEN
+ INFO = -7
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.)
+*
+ IF( INFO.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ IF( MINMN.GT.0 ) THEN
+ MM = M
+ MNTHR = ILAENV( 6, 'DGELSS', ' ', M, N, NRHS, -1 )
+ IF( M.GE.N .AND. M.GE.MNTHR ) THEN
+*
+* Path 1a - overdetermined, with many more rows than
+* columns
+*
+ MM = N
+ MAXWRK = MAX( MAXWRK, N + N*ILAENV( 1, 'DGEQRF', ' ', M,
+ $ N, -1, -1 ) )
+ MAXWRK = MAX( MAXWRK, N + NRHS*ILAENV( 1, 'DORMQR', 'LT',
+ $ M, NRHS, N, -1 ) )
+ END IF
+ IF( M.GE.N ) THEN
+*
+* Path 1 - overdetermined or exactly determined
+*
+* Compute workspace needed for DBDSQR
+*
+ BDSPAC = MAX( 1, 5*N )
+ MAXWRK = MAX( MAXWRK, 3*N + ( MM + N )*ILAENV( 1,
+ $ 'DGEBRD', ' ', MM, N, -1, -1 ) )
+ MAXWRK = MAX( MAXWRK, 3*N + NRHS*ILAENV( 1, 'DORMBR',
+ $ 'QLT', MM, NRHS, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, 3*N + ( N - 1 )*ILAENV( 1,
+ $ 'DORGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, BDSPAC )
+ MAXWRK = MAX( MAXWRK, N*NRHS )
+ MINWRK = MAX( 3*N + MM, 3*N + NRHS, BDSPAC )
+ MAXWRK = MAX( MINWRK, MAXWRK )
+ END IF
+ IF( N.GT.M ) THEN
+*
+* Compute workspace needed for DBDSQR
+*
+ BDSPAC = MAX( 1, 5*M )
+ MINWRK = MAX( 3*M+NRHS, 3*M+N, BDSPAC )
+ IF( N.GE.MNTHR ) THEN
+*
+* Path 2a - underdetermined, with many more columns
+* than rows
+*
+ MAXWRK = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1,
+ $ -1 )
+ MAXWRK = MAX( MAXWRK, M*M + 4*M + 2*M*ILAENV( 1,
+ $ 'DGEBRD', ' ', M, M, -1, -1 ) )
+ MAXWRK = MAX( MAXWRK, M*M + 4*M + NRHS*ILAENV( 1,
+ $ 'DORMBR', 'QLT', M, NRHS, M, -1 ) )
+ MAXWRK = MAX( MAXWRK, M*M + 4*M +
+ $ ( M - 1 )*ILAENV( 1, 'DORGBR', 'P', M,
+ $ M, M, -1 ) )
+ MAXWRK = MAX( MAXWRK, M*M + M + BDSPAC )
+ IF( NRHS.GT.1 ) THEN
+ MAXWRK = MAX( MAXWRK, M*M + M + M*NRHS )
+ ELSE
+ MAXWRK = MAX( MAXWRK, M*M + 2*M )
+ END IF
+ MAXWRK = MAX( MAXWRK, M + NRHS*ILAENV( 1, 'DORMLQ',
+ $ 'LT', N, NRHS, M, -1 ) )
+ ELSE
+*
+* Path 2 - underdetermined
+*
+ MAXWRK = 3*M + ( N + M )*ILAENV( 1, 'DGEBRD', ' ', M,
+ $ N, -1, -1 )
+ MAXWRK = MAX( MAXWRK, 3*M + NRHS*ILAENV( 1, 'DORMBR',
+ $ 'QLT', M, NRHS, M, -1 ) )
+ MAXWRK = MAX( MAXWRK, 3*M + M*ILAENV( 1, 'DORGBR',
+ $ 'P', M, N, M, -1 ) )
+ MAXWRK = MAX( MAXWRK, BDSPAC )
+ MAXWRK = MAX( MAXWRK, N*NRHS )
+ END IF
+ END IF
+ MAXWRK = MAX( MINWRK, MAXWRK )
+ END IF
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY )
+ $ INFO = -12
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELSS', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ RANK = 0
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+ EPS = DLAMCH( 'P' )
+ SFMIN = DLAMCH( 'S' )
+ SMLNUM = SFMIN / EPS
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', M, N, A, LDA, WORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ CALL DLASET( 'F', MINMN, 1, ZERO, ZERO, S, 1 )
+ RANK = 0
+ GO TO 70
+ END IF
+*
+* Scale B if max element outside range [SMLNUM,BIGNUM]
+*
+ BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 2
+ END IF
+*
+* Overdetermined case
+*
+ IF( M.GE.N ) THEN
+*
+* Path 1 - overdetermined or exactly determined
+*
+ MM = M
+ IF( M.GE.MNTHR ) THEN
+*
+* Path 1a - overdetermined, with many more rows than columns
+*
+ MM = N
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ), WORK( IWORK ),
+ $ LWORK-IWORK+1, INFO )
+*
+* Multiply B by transpose(Q)
+* (Workspace: need N+NRHS, prefer N+NRHS*NB)
+*
+ CALL DORMQR( 'L', 'T', M, NRHS, N, A, LDA, WORK( ITAU ), B,
+ $ LDB, WORK( IWORK ), LWORK-IWORK+1, INFO )
+*
+* Zero out below R
+*
+ IF( N.GT.1 )
+ $ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ), LDA )
+ END IF
+*
+ IE = 1
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in A
+* (Workspace: need 3*N+MM, prefer 3*N+(MM+N)*NB)
+*
+ CALL DGEBRD( MM, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ INFO )
+*
+* Multiply B by transpose of left bidiagonalizing vectors of R
+* (Workspace: need 3*N+NRHS, prefer 3*N+NRHS*NB)
+*
+ CALL DORMBR( 'Q', 'L', 'T', MM, NRHS, N, A, LDA, WORK( ITAUQ ),
+ $ B, LDB, WORK( IWORK ), LWORK-IWORK+1, INFO )
+*
+* Generate right bidiagonalizing vectors of R in A
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, INFO )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration
+* multiply B by transpose of left singular vectors
+* compute right singular vectors in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, 0, NRHS, S, WORK( IE ), A, LDA, VDUM,
+ $ 1, B, LDB, WORK( IWORK ), INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 70
+*
+* Multiply B by reciprocals of singular values
+*
+ THR = MAX( RCOND*S( 1 ), SFMIN )
+ IF( RCOND.LT.ZERO )
+ $ THR = MAX( EPS*S( 1 ), SFMIN )
+ RANK = 0
+ DO 10 I = 1, N
+ IF( S( I ).GT.THR ) THEN
+ CALL DRSCL( NRHS, S( I ), B( I, 1 ), LDB )
+ RANK = RANK + 1
+ ELSE
+ CALL DLASET( 'F', 1, NRHS, ZERO, ZERO, B( I, 1 ), LDB )
+ END IF
+ 10 CONTINUE
+*
+* Multiply B by right singular vectors
+* (Workspace: need N, prefer N*NRHS)
+*
+ IF( LWORK.GE.LDB*NRHS .AND. NRHS.GT.1 ) THEN
+ CALL DGEMM( 'T', 'N', N, NRHS, N, ONE, A, LDA, B, LDB, ZERO,
+ $ WORK, LDB )
+ CALL DLACPY( 'G', N, NRHS, WORK, LDB, B, LDB )
+ ELSE IF( NRHS.GT.1 ) THEN
+ CHUNK = LWORK / N
+ DO 20 I = 1, NRHS, CHUNK
+ BL = MIN( NRHS-I+1, CHUNK )
+ CALL DGEMM( 'T', 'N', N, BL, N, ONE, A, LDA, B( 1, I ),
+ $ LDB, ZERO, WORK, N )
+ CALL DLACPY( 'G', N, BL, WORK, N, B( 1, I ), LDB )
+ 20 CONTINUE
+ ELSE
+ CALL DGEMV( 'T', N, N, ONE, A, LDA, B, 1, ZERO, WORK, 1 )
+ CALL DCOPY( N, WORK, 1, B, 1 )
+ END IF
+*
+ ELSE IF( N.GE.MNTHR .AND. LWORK.GE.4*M+M*M+
+ $ MAX( M, 2*M-4, NRHS, N-3*M ) ) THEN
+*
+* Path 2a - underdetermined, with many more columns than rows
+* and sufficient workspace for an efficient algorithm
+*
+ LDWORK = M
+ IF( LWORK.GE.MAX( 4*M+M*LDA+MAX( M, 2*M-4, NRHS, N-3*M ),
+ $ M*LDA+M+M*NRHS ) )LDWORK = LDA
+ ITAU = 1
+ IWORK = M + 1
+*
+* Compute A=L*Q
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ), WORK( IWORK ),
+ $ LWORK-IWORK+1, INFO )
+ IL = IWORK
+*
+* Copy L to WORK(IL), zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IL ), LDWORK )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, WORK( IL+LDWORK ),
+ $ LDWORK )
+ IE = IL + LDWORK*M
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IL)
+* (Workspace: need M*M+5*M, prefer M*M+4*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IL ), LDWORK, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, INFO )
+*
+* Multiply B by transpose of left bidiagonalizing vectors of L
+* (Workspace: need M*M+4*M+NRHS, prefer M*M+4*M+NRHS*NB)
+*
+ CALL DORMBR( 'Q', 'L', 'T', M, NRHS, M, WORK( IL ), LDWORK,
+ $ WORK( ITAUQ ), B, LDB, WORK( IWORK ),
+ $ LWORK-IWORK+1, INFO )
+*
+* Generate right bidiagonalizing vectors of R in WORK(IL)
+* (Workspace: need M*M+5*M-1, prefer M*M+4*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IL ), LDWORK, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, INFO )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration,
+* computing right singular vectors of L in WORK(IL) and
+* multiplying B by transpose of left singular vectors
+* (Workspace: need M*M+M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, 0, NRHS, S, WORK( IE ), WORK( IL ),
+ $ LDWORK, A, LDA, B, LDB, WORK( IWORK ), INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 70
+*
+* Multiply B by reciprocals of singular values
+*
+ THR = MAX( RCOND*S( 1 ), SFMIN )
+ IF( RCOND.LT.ZERO )
+ $ THR = MAX( EPS*S( 1 ), SFMIN )
+ RANK = 0
+ DO 30 I = 1, M
+ IF( S( I ).GT.THR ) THEN
+ CALL DRSCL( NRHS, S( I ), B( I, 1 ), LDB )
+ RANK = RANK + 1
+ ELSE
+ CALL DLASET( 'F', 1, NRHS, ZERO, ZERO, B( I, 1 ), LDB )
+ END IF
+ 30 CONTINUE
+ IWORK = IE
+*
+* Multiply B by right singular vectors of L in WORK(IL)
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NRHS)
+*
+ IF( LWORK.GE.LDB*NRHS+IWORK-1 .AND. NRHS.GT.1 ) THEN
+ CALL DGEMM( 'T', 'N', M, NRHS, M, ONE, WORK( IL ), LDWORK,
+ $ B, LDB, ZERO, WORK( IWORK ), LDB )
+ CALL DLACPY( 'G', M, NRHS, WORK( IWORK ), LDB, B, LDB )
+ ELSE IF( NRHS.GT.1 ) THEN
+ CHUNK = ( LWORK-IWORK+1 ) / M
+ DO 40 I = 1, NRHS, CHUNK
+ BL = MIN( NRHS-I+1, CHUNK )
+ CALL DGEMM( 'T', 'N', M, BL, M, ONE, WORK( IL ), LDWORK,
+ $ B( 1, I ), LDB, ZERO, WORK( IWORK ), M )
+ CALL DLACPY( 'G', M, BL, WORK( IWORK ), M, B( 1, I ),
+ $ LDB )
+ 40 CONTINUE
+ ELSE
+ CALL DGEMV( 'T', M, M, ONE, WORK( IL ), LDWORK, B( 1, 1 ),
+ $ 1, ZERO, WORK( IWORK ), 1 )
+ CALL DCOPY( M, WORK( IWORK ), 1, B( 1, 1 ), 1 )
+ END IF
+*
+* Zero out below first M rows of B
+*
+ CALL DLASET( 'F', N-M, NRHS, ZERO, ZERO, B( M+1, 1 ), LDB )
+ IWORK = ITAU + M
+*
+* Multiply transpose(Q) by B
+* (Workspace: need M+NRHS, prefer M+NRHS*NB)
+*
+ CALL DORMLQ( 'L', 'T', N, NRHS, M, A, LDA, WORK( ITAU ), B,
+ $ LDB, WORK( IWORK ), LWORK-IWORK+1, INFO )
+*
+ ELSE
+*
+* Path 2 - remaining underdetermined cases
+*
+ IE = 1
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize A
+* (Workspace: need 3*M+N, prefer 3*M+(M+N)*NB)
+*
+ CALL DGEBRD( M, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ INFO )
+*
+* Multiply B by transpose of left bidiagonalizing vectors
+* (Workspace: need 3*M+NRHS, prefer 3*M+NRHS*NB)
+*
+ CALL DORMBR( 'Q', 'L', 'T', M, NRHS, N, A, LDA, WORK( ITAUQ ),
+ $ B, LDB, WORK( IWORK ), LWORK-IWORK+1, INFO )
+*
+* Generate right bidiagonalizing vectors in A
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'P', M, N, M, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, INFO )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration,
+* computing right singular vectors of A in A and
+* multiplying B by transpose of left singular vectors
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'L', M, N, 0, NRHS, S, WORK( IE ), A, LDA, VDUM,
+ $ 1, B, LDB, WORK( IWORK ), INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 70
+*
+* Multiply B by reciprocals of singular values
+*
+ THR = MAX( RCOND*S( 1 ), SFMIN )
+ IF( RCOND.LT.ZERO )
+ $ THR = MAX( EPS*S( 1 ), SFMIN )
+ RANK = 0
+ DO 50 I = 1, M
+ IF( S( I ).GT.THR ) THEN
+ CALL DRSCL( NRHS, S( I ), B( I, 1 ), LDB )
+ RANK = RANK + 1
+ ELSE
+ CALL DLASET( 'F', 1, NRHS, ZERO, ZERO, B( I, 1 ), LDB )
+ END IF
+ 50 CONTINUE
+*
+* Multiply B by right singular vectors of A
+* (Workspace: need N, prefer N*NRHS)
+*
+ IF( LWORK.GE.LDB*NRHS .AND. NRHS.GT.1 ) THEN
+ CALL DGEMM( 'T', 'N', N, NRHS, M, ONE, A, LDA, B, LDB, ZERO,
+ $ WORK, LDB )
+ CALL DLACPY( 'F', N, NRHS, WORK, LDB, B, LDB )
+ ELSE IF( NRHS.GT.1 ) THEN
+ CHUNK = LWORK / N
+ DO 60 I = 1, NRHS, CHUNK
+ BL = MIN( NRHS-I+1, CHUNK )
+ CALL DGEMM( 'T', 'N', N, BL, M, ONE, A, LDA, B( 1, I ),
+ $ LDB, ZERO, WORK, N )
+ CALL DLACPY( 'F', N, BL, WORK, N, B( 1, I ), LDB )
+ 60 CONTINUE
+ ELSE
+ CALL DGEMV( 'T', M, N, ONE, A, LDA, B, 1, ZERO, WORK, 1 )
+ CALL DCOPY( N, WORK, 1, B, 1 )
+ END IF
+ END IF
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN, 1, S, MINMN,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN, 1, S, MINMN,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+ END IF
+*
+ 70 CONTINUE
+ WORK( 1 ) = MAXWRK
+ RETURN
+*
+* End of DGELSS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgelsx.f b/2.3-1/src/fortran/lapack/dgelsx.f
new file mode 100644
index 00000000..a597cd47
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgelsx.f
@@ -0,0 +1,349 @@
+ SUBROUTINE DGELSX( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
+ $ WORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, M, N, NRHS, RANK
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is deprecated and has been replaced by routine DGELSY.
+*
+* DGELSX computes the minimum-norm solution to a real linear least
+* squares problem:
+* minimize || A * X - B ||
+* using a complete orthogonal factorization of A. A is an M-by-N
+* matrix which may be rank-deficient.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+* matrix X.
+*
+* The routine first computes a QR factorization with column pivoting:
+* A * P = Q * [ R11 R12 ]
+* [ 0 R22 ]
+* with R11 defined as the largest leading submatrix whose estimated
+* condition number is less than 1/RCOND. The order of R11, RANK,
+* is the effective rank of A.
+*
+* Then, R22 is considered to be negligible, and R12 is annihilated
+* by orthogonal transformations from the right, arriving at the
+* complete orthogonal factorization:
+* A * P = Q * [ T11 0 ] * Z
+* [ 0 0 ]
+* The minimum-norm solution is then
+* X = P * Z' [ inv(T11)*Q1'*B ]
+* [ 0 ]
+* where Q1 consists of the first RANK columns of Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of
+* columns of matrices B and X. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, A has been overwritten by details of its
+* complete orthogonal factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the M-by-NRHS right hand side matrix B.
+* On exit, the N-by-NRHS solution matrix X.
+* If m >= n and RANK = n, the residual sum-of-squares for
+* the solution in the i-th column is given by the sum of
+* squares of elements N+1:M in that column.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M,N).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is an
+* initial column, otherwise it is a free column. Before
+* the QR factorization of A, all initial columns are
+* permuted to the leading positions; only the remaining
+* free columns are moved as a result of column pivoting
+* during the factorization.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* RCOND (input) DOUBLE PRECISION
+* RCOND is used to determine the effective rank of A, which
+* is defined as the order of the largest leading triangular
+* submatrix R11 in the QR factorization with pivoting of A,
+* whose estimated condition number < 1/RCOND.
+*
+* RANK (output) INTEGER
+* The effective rank of A, i.e., the order of the submatrix
+* R11. This is the same as the order of the submatrix T11
+* in the complete orthogonal factorization of A.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (max( min(M,N)+3*N, 2*min(M,N)+NRHS )),
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IMAX, IMIN
+ PARAMETER ( IMAX = 1, IMIN = 2 )
+ DOUBLE PRECISION ZERO, ONE, DONE, NTDONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, DONE = ZERO,
+ $ NTDONE = ONE )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IASCL, IBSCL, ISMAX, ISMIN, J, K, MN
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, C1, C2, S1, S2, SMAX,
+ $ SMAXPR, SMIN, SMINPR, SMLNUM, T1, T2
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL DLAMCH, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQPF, DLAIC1, DLASCL, DLASET, DLATZM, DORM2R,
+ $ DTRSM, DTZRQF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M, N )
+ ISMIN = MN + 1
+ ISMAX = 2*MN + 1
+*
+* Test the input arguments.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+ INFO = -7
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELSX', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( MIN( M, N, NRHS ).EQ.0 ) THEN
+ RANK = 0
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A, B if max elements outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', M, N, A, LDA, WORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ RANK = 0
+ GO TO 100
+ END IF
+*
+ BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 2
+ END IF
+*
+* Compute QR factorization with column pivoting of A:
+* A * P = Q * R
+*
+ CALL DGEQPF( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ), INFO )
+*
+* workspace 3*N. Details of Householder rotations stored
+* in WORK(1:MN).
+*
+* Determine RANK using incremental condition estimation
+*
+ WORK( ISMIN ) = ONE
+ WORK( ISMAX ) = ONE
+ SMAX = ABS( A( 1, 1 ) )
+ SMIN = SMAX
+ IF( ABS( A( 1, 1 ) ).EQ.ZERO ) THEN
+ RANK = 0
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ GO TO 100
+ ELSE
+ RANK = 1
+ END IF
+*
+ 10 CONTINUE
+ IF( RANK.LT.MN ) THEN
+ I = RANK + 1
+ CALL DLAIC1( IMIN, RANK, WORK( ISMIN ), SMIN, A( 1, I ),
+ $ A( I, I ), SMINPR, S1, C1 )
+ CALL DLAIC1( IMAX, RANK, WORK( ISMAX ), SMAX, A( 1, I ),
+ $ A( I, I ), SMAXPR, S2, C2 )
+*
+ IF( SMAXPR*RCOND.LE.SMINPR ) THEN
+ DO 20 I = 1, RANK
+ WORK( ISMIN+I-1 ) = S1*WORK( ISMIN+I-1 )
+ WORK( ISMAX+I-1 ) = S2*WORK( ISMAX+I-1 )
+ 20 CONTINUE
+ WORK( ISMIN+RANK ) = C1
+ WORK( ISMAX+RANK ) = C2
+ SMIN = SMINPR
+ SMAX = SMAXPR
+ RANK = RANK + 1
+ GO TO 10
+ END IF
+ END IF
+*
+* Logically partition R = [ R11 R12 ]
+* [ 0 R22 ]
+* where R11 = R(1:RANK,1:RANK)
+*
+* [R11,R12] = [ T11, 0 ] * Y
+*
+ IF( RANK.LT.N )
+ $ CALL DTZRQF( RANK, N, A, LDA, WORK( MN+1 ), INFO )
+*
+* Details of Householder rotations stored in WORK(MN+1:2*MN)
+*
+* B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+ CALL DORM2R( 'Left', 'Transpose', M, NRHS, MN, A, LDA, WORK( 1 ),
+ $ B, LDB, WORK( 2*MN+1 ), INFO )
+*
+* workspace NRHS
+*
+* B(1:RANK,1:NRHS) := inv(T11) * B(1:RANK,1:NRHS)
+*
+ CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', RANK,
+ $ NRHS, ONE, A, LDA, B, LDB )
+*
+ DO 40 I = RANK + 1, N
+ DO 30 J = 1, NRHS
+ B( I, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* B(1:N,1:NRHS) := Y' * B(1:N,1:NRHS)
+*
+ IF( RANK.LT.N ) THEN
+ DO 50 I = 1, RANK
+ CALL DLATZM( 'Left', N-RANK+1, NRHS, A( I, RANK+1 ), LDA,
+ $ WORK( MN+I ), B( I, 1 ), B( RANK+1, 1 ), LDB,
+ $ WORK( 2*MN+1 ) )
+ 50 CONTINUE
+ END IF
+*
+* workspace NRHS
+*
+* B(1:N,1:NRHS) := P * B(1:N,1:NRHS)
+*
+ DO 90 J = 1, NRHS
+ DO 60 I = 1, N
+ WORK( 2*MN+I ) = NTDONE
+ 60 CONTINUE
+ DO 80 I = 1, N
+ IF( WORK( 2*MN+I ).EQ.NTDONE ) THEN
+ IF( JPVT( I ).NE.I ) THEN
+ K = I
+ T1 = B( K, J )
+ T2 = B( JPVT( K ), J )
+ 70 CONTINUE
+ B( JPVT( K ), J ) = T1
+ WORK( 2*MN+K ) = DONE
+ T1 = T2
+ K = JPVT( K )
+ T2 = B( JPVT( K ), J )
+ IF( JPVT( K ).NE.I )
+ $ GO TO 70
+ B( I, J ) = T1
+ WORK( 2*MN+K ) = DONE
+ END IF
+ END IF
+ 80 CONTINUE
+ 90 CONTINUE
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+ END IF
+*
+ 100 CONTINUE
+*
+ RETURN
+*
+* End of DGELSX
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgelsy.f b/2.3-1/src/fortran/lapack/dgelsy.f
new file mode 100644
index 00000000..4334650f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgelsy.f
@@ -0,0 +1,391 @@
+ SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGELSY computes the minimum-norm solution to a real linear least
+* squares problem:
+* minimize || A * X - B ||
+* using a complete orthogonal factorization of A. A is an M-by-N
+* matrix which may be rank-deficient.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+* matrix X.
+*
+* The routine first computes a QR factorization with column pivoting:
+* A * P = Q * [ R11 R12 ]
+* [ 0 R22 ]
+* with R11 defined as the largest leading submatrix whose estimated
+* condition number is less than 1/RCOND. The order of R11, RANK,
+* is the effective rank of A.
+*
+* Then, R22 is considered to be negligible, and R12 is annihilated
+* by orthogonal transformations from the right, arriving at the
+* complete orthogonal factorization:
+* A * P = Q * [ T11 0 ] * Z
+* [ 0 0 ]
+* The minimum-norm solution is then
+* X = P * Z' [ inv(T11)*Q1'*B ]
+* [ 0 ]
+* where Q1 consists of the first RANK columns of Q.
+*
+* This routine is basically identical to the original xGELSX except
+* three differences:
+* o The call to the subroutine xGEQPF has been substituted by the
+* the call to the subroutine xGEQP3. This subroutine is a Blas-3
+* version of the QR factorization with column pivoting.
+* o Matrix B (the right hand side) is updated with Blas-3.
+* o The permutation of matrix B (the right hand side) is faster and
+* more simple.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of
+* columns of matrices B and X. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, A has been overwritten by details of its
+* complete orthogonal factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the M-by-NRHS right hand side matrix B.
+* On exit, the N-by-NRHS solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M,N).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of AP, otherwise column i is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of AP
+* was the k-th column of A.
+*
+* RCOND (input) DOUBLE PRECISION
+* RCOND is used to determine the effective rank of A, which
+* is defined as the order of the largest leading triangular
+* submatrix R11 in the QR factorization with pivoting of A,
+* whose estimated condition number < 1/RCOND.
+*
+* RANK (output) INTEGER
+* The effective rank of A, i.e., the order of the submatrix
+* R11. This is the same as the order of the submatrix T11
+* in the complete orthogonal factorization of A.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* The unblocked strategy requires that:
+* LWORK >= MAX( MN+3*N+1, 2*MN+NRHS ),
+* where MN = min( M, N ).
+* The block algorithm requires that:
+* LWORK >= MAX( MN+2*N+NB*(N+1), 2*MN+NB*NRHS ),
+* where NB is an upper bound on the blocksize returned
+* by ILAENV for the routines DGEQP3, DTZRZF, STZRQF, DORMQR,
+* and DORMRZ.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: If INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+* E. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IMAX, IMIN
+ PARAMETER ( IMAX = 1, IMIN = 2 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IASCL, IBSCL, ISMAX, ISMIN, J, LWKMIN,
+ $ LWKOPT, MN, NB, NB1, NB2, NB3, NB4
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, C1, C2, S1, S2, SMAX,
+ $ SMAXPR, SMIN, SMINPR, SMLNUM, WSIZE
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL ILAENV, DLAMCH, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEQP3, DLABAD, DLAIC1, DLASCL, DLASET,
+ $ DORMQR, DORMRZ, DTRSM, DTZRZF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M, N )
+ ISMIN = MN + 1
+ ISMAX = 2*MN + 1
+*
+* Test the input arguments.
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+ INFO = -7
+ END IF
+*
+* Figure out optimal block size
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( MN.EQ.0 .OR. NRHS.EQ.0 ) THEN
+ LWKMIN = 1
+ LWKOPT = 1
+ ELSE
+ NB1 = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ NB2 = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
+ NB3 = ILAENV( 1, 'DORMQR', ' ', M, N, NRHS, -1 )
+ NB4 = ILAENV( 1, 'DORMRQ', ' ', M, N, NRHS, -1 )
+ NB = MAX( NB1, NB2, NB3, NB4 )
+ LWKMIN = MN + MAX( 2*MN, N + 1, MN + NRHS )
+ LWKOPT = MAX( LWKMIN,
+ $ MN + 2*N + NB*( N + 1 ), 2*MN + NB*NRHS )
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELSY', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( MN.EQ.0 .OR. NRHS.EQ.0 ) THEN
+ RANK = 0
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', M, N, A, LDA, WORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ RANK = 0
+ GO TO 70
+ END IF
+*
+ BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 2
+ END IF
+*
+* Compute QR factorization with column pivoting of A:
+* A * P = Q * R
+*
+ CALL DGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
+ $ LWORK-MN, INFO )
+ WSIZE = MN + WORK( MN+1 )
+*
+* workspace: MN+2*N+NB*(N+1).
+* Details of Householder rotations stored in WORK(1:MN).
+*
+* Determine RANK using incremental condition estimation
+*
+ WORK( ISMIN ) = ONE
+ WORK( ISMAX ) = ONE
+ SMAX = ABS( A( 1, 1 ) )
+ SMIN = SMAX
+ IF( ABS( A( 1, 1 ) ).EQ.ZERO ) THEN
+ RANK = 0
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ GO TO 70
+ ELSE
+ RANK = 1
+ END IF
+*
+ 10 CONTINUE
+ IF( RANK.LT.MN ) THEN
+ I = RANK + 1
+ CALL DLAIC1( IMIN, RANK, WORK( ISMIN ), SMIN, A( 1, I ),
+ $ A( I, I ), SMINPR, S1, C1 )
+ CALL DLAIC1( IMAX, RANK, WORK( ISMAX ), SMAX, A( 1, I ),
+ $ A( I, I ), SMAXPR, S2, C2 )
+*
+ IF( SMAXPR*RCOND.LE.SMINPR ) THEN
+ DO 20 I = 1, RANK
+ WORK( ISMIN+I-1 ) = S1*WORK( ISMIN+I-1 )
+ WORK( ISMAX+I-1 ) = S2*WORK( ISMAX+I-1 )
+ 20 CONTINUE
+ WORK( ISMIN+RANK ) = C1
+ WORK( ISMAX+RANK ) = C2
+ SMIN = SMINPR
+ SMAX = SMAXPR
+ RANK = RANK + 1
+ GO TO 10
+ END IF
+ END IF
+*
+* workspace: 3*MN.
+*
+* Logically partition R = [ R11 R12 ]
+* [ 0 R22 ]
+* where R11 = R(1:RANK,1:RANK)
+*
+* [R11,R12] = [ T11, 0 ] * Y
+*
+ IF( RANK.LT.N )
+ $ CALL DTZRZF( RANK, N, A, LDA, WORK( MN+1 ), WORK( 2*MN+1 ),
+ $ LWORK-2*MN, INFO )
+*
+* workspace: 2*MN.
+* Details of Householder rotations stored in WORK(MN+1:2*MN)
+*
+* B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+ CALL DORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA, WORK( 1 ),
+ $ B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+ WSIZE = MAX( WSIZE, 2*MN+WORK( 2*MN+1 ) )
+*
+* workspace: 2*MN+NB*NRHS.
+*
+* B(1:RANK,1:NRHS) := inv(T11) * B(1:RANK,1:NRHS)
+*
+ CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', RANK,
+ $ NRHS, ONE, A, LDA, B, LDB )
+*
+ DO 40 J = 1, NRHS
+ DO 30 I = RANK + 1, N
+ B( I, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* B(1:N,1:NRHS) := Y' * B(1:N,1:NRHS)
+*
+ IF( RANK.LT.N ) THEN
+ CALL DORMRZ( 'Left', 'Transpose', N, NRHS, RANK, N-RANK, A,
+ $ LDA, WORK( MN+1 ), B, LDB, WORK( 2*MN+1 ),
+ $ LWORK-2*MN, INFO )
+ END IF
+*
+* workspace: 2*MN+NRHS.
+*
+* B(1:N,1:NRHS) := P * B(1:N,1:NRHS)
+*
+ DO 60 J = 1, NRHS
+ DO 50 I = 1, N
+ WORK( JPVT( I ) ) = B( I, J )
+ 50 CONTINUE
+ CALL DCOPY( N, WORK( 1 ), 1, B( 1, J ), 1 )
+ 60 CONTINUE
+*
+* workspace: N.
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+ END IF
+*
+ 70 CONTINUE
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DGELSY
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeql2.f b/2.3-1/src/fortran/lapack/dgeql2.f
new file mode 100644
index 00000000..aa45113c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeql2.f
@@ -0,0 +1,122 @@
+ SUBROUTINE DGEQL2( M, N, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEQL2 computes a QL factorization of a real m by n matrix A:
+* A = Q * L.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, if m >= n, the lower triangle of the subarray
+* A(m-n+1:m,1:n) contains the n by n lower triangular matrix L;
+* if m <= n, the elements on and below the (n-m)-th
+* superdiagonal contain the m by n lower trapezoidal matrix L;
+* the remaining elements, with the array TAU, represent the
+* orthogonal matrix Q as a product of elementary reflectors
+* (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(m-k+i+1:m) = 0 and v(m-k+i) = 1; v(1:m-k+i-1) is stored on exit in
+* A(1:m-k+i-1,n-k+i), and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K
+ DOUBLE PRECISION AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEQL2', -INFO )
+ RETURN
+ END IF
+*
+ K = MIN( M, N )
+*
+ DO 10 I = K, 1, -1
+*
+* Generate elementary reflector H(i) to annihilate
+* A(1:m-k+i-1,n-k+i)
+*
+ CALL DLARFG( M-K+I, A( M-K+I, N-K+I ), A( 1, N-K+I ), 1,
+ $ TAU( I ) )
+*
+* Apply H(i) to A(1:m-k+i,1:n-k+i-1) from the left
+*
+ AII = A( M-K+I, N-K+I )
+ A( M-K+I, N-K+I ) = ONE
+ CALL DLARF( 'Left', M-K+I, N-K+I-1, A( 1, N-K+I ), 1, TAU( I ),
+ $ A, LDA, WORK )
+ A( M-K+I, N-K+I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of DGEQL2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeqlf.f b/2.3-1/src/fortran/lapack/dgeqlf.f
new file mode 100644
index 00000000..ec293574
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeqlf.f
@@ -0,0 +1,213 @@
+ SUBROUTINE DGEQLF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEQLF computes a QL factorization of a real M-by-N matrix A:
+* A = Q * L.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit,
+* if m >= n, the lower triangle of the subarray
+* A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L;
+* if m <= n, the elements on and below the (n-m)-th
+* superdiagonal contain the M-by-N lower trapezoidal matrix L;
+* the remaining elements, with the array TAU, represent the
+* orthogonal matrix Q as a product of elementary reflectors
+* (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(m-k+i+1:m) = 0 and v(m-k+i) = 1; v(1:m-k+i-1) is stored on exit in
+* A(1:m-k+i-1,n-k+i), and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, K, KI, KK, LDWORK, LWKOPT,
+ $ MU, NB, NBMIN, NU, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQL2, DLARFB, DLARFT, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ K = MIN( M, N )
+ IF( K.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+ NB = ILAENV( 1, 'DGEQLF', ' ', M, N, -1, -1 )
+ LWKOPT = N*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEQLF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( K.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 1
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DGEQLF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DGEQLF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code initially.
+* The last kk columns are handled by the block method.
+*
+ KI = ( ( K-NX-1 ) / NB )*NB
+ KK = MIN( K, KI+NB )
+*
+ DO 10 I = K - KK + KI + 1, K - KK + 1, -NB
+ IB = MIN( K-I+1, NB )
+*
+* Compute the QL factorization of the current block
+* A(1:m-k+i+ib-1,n-k+i:n-k+i+ib-1)
+*
+ CALL DGEQL2( M-K+I+IB-1, IB, A( 1, N-K+I ), LDA, TAU( I ),
+ $ WORK, IINFO )
+ IF( N-K+I.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB,
+ $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H' to A(1:m-k+i+ib-1,1:n-k+i-1) from the left
+*
+ CALL DLARFB( 'Left', 'Transpose', 'Backward',
+ $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB,
+ $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+ 10 CONTINUE
+ MU = M - K + I + NB - 1
+ NU = N - K + I + NB - 1
+ ELSE
+ MU = M
+ NU = N
+ END IF
+*
+* Use unblocked code to factor the last or only block
+*
+ IF( MU.GT.0 .AND. NU.GT.0 )
+ $ CALL DGEQL2( MU, NU, A, LDA, TAU, WORK, IINFO )
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DGEQLF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeqp3.f b/2.3-1/src/fortran/lapack/dgeqp3.f
new file mode 100644
index 00000000..d6bc537d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeqp3.f
@@ -0,0 +1,287 @@
+ SUBROUTINE DGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEQP3 computes a QR factorization with column pivoting of a
+* matrix A: A*P = Q*R using Level 3 BLAS.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the upper triangle of the array contains the
+* min(M,N)-by-N upper trapezoidal matrix R; the elements below
+* the diagonal, together with the array TAU, represent the
+* orthogonal matrix Q as a product of min(M,N) elementary
+* reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(J).ne.0, the J-th column of A is permuted
+* to the front of A*P (a leading column); if JPVT(J)=0,
+* the J-th column of A is a free column.
+* On exit, if JPVT(J)=K, then the J-th column of A*P was the
+* the K-th column of A.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO=0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 3*N+1.
+* For optimal performance LWORK >= 2*N+( N+1 )*NB, where NB
+* is the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real/complex scalar, and v is a real/complex vector
+* with v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in
+* A(i+1:m,i), and tau in TAU(i).
+*
+* Based on contributions by
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* X. Sun, Computer Science Dept., Duke University, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER INB, INBMIN, IXOVER
+ PARAMETER ( INB = 1, INBMIN = 2, IXOVER = 3 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER FJB, IWS, J, JB, LWKOPT, MINMN, MINWS, NA, NB,
+ $ NBMIN, NFXD, NX, SM, SMINMN, SN, TOPBMN
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQRF, DLAQP2, DLAQPS, DORMQR, DSWAP, XERBLA
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DNRM2
+ EXTERNAL ILAENV, DNRM2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC INT, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test input arguments
+* ====================
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ MINMN = MIN( M, N )
+ IF( MINMN.EQ.0 ) THEN
+ IWS = 1
+ LWKOPT = 1
+ ELSE
+ IWS = 3*N + 1
+ NB = ILAENV( INB, 'DGEQRF', ' ', M, N, -1, -1 )
+ LWKOPT = 2*N + ( N + 1 )*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( ( LWORK.LT.IWS ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEQP3', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( MINMN.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+* Move initial columns up front.
+*
+ NFXD = 1
+ DO 10 J = 1, N
+ IF( JPVT( J ).NE.0 ) THEN
+ IF( J.NE.NFXD ) THEN
+ CALL DSWAP( M, A( 1, J ), 1, A( 1, NFXD ), 1 )
+ JPVT( J ) = JPVT( NFXD )
+ JPVT( NFXD ) = J
+ ELSE
+ JPVT( J ) = J
+ END IF
+ NFXD = NFXD + 1
+ ELSE
+ JPVT( J ) = J
+ END IF
+ 10 CONTINUE
+ NFXD = NFXD - 1
+*
+* Factorize fixed columns
+* =======================
+*
+* Compute the QR factorization of fixed columns and update
+* remaining columns.
+*
+ IF( NFXD.GT.0 ) THEN
+ NA = MIN( M, NFXD )
+*CC CALL DGEQR2( M, NA, A, LDA, TAU, WORK, INFO )
+ CALL DGEQRF( M, NA, A, LDA, TAU, WORK, LWORK, INFO )
+ IWS = MAX( IWS, INT( WORK( 1 ) ) )
+ IF( NA.LT.N ) THEN
+*CC CALL DORM2R( 'Left', 'Transpose', M, N-NA, NA, A, LDA,
+*CC $ TAU, A( 1, NA+1 ), LDA, WORK, INFO )
+ CALL DORMQR( 'Left', 'Transpose', M, N-NA, NA, A, LDA, TAU,
+ $ A( 1, NA+1 ), LDA, WORK, LWORK, INFO )
+ IWS = MAX( IWS, INT( WORK( 1 ) ) )
+ END IF
+ END IF
+*
+* Factorize free columns
+* ======================
+*
+ IF( NFXD.LT.MINMN ) THEN
+*
+ SM = M - NFXD
+ SN = N - NFXD
+ SMINMN = MINMN - NFXD
+*
+* Determine the block size.
+*
+ NB = ILAENV( INB, 'DGEQRF', ' ', SM, SN, -1, -1 )
+ NBMIN = 2
+ NX = 0
+*
+ IF( ( NB.GT.1 ) .AND. ( NB.LT.SMINMN ) ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( IXOVER, 'DGEQRF', ' ', SM, SN, -1,
+ $ -1 ) )
+*
+*
+ IF( NX.LT.SMINMN ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ MINWS = 2*SN + ( SN+1 )*NB
+ IWS = MAX( IWS, MINWS )
+ IF( LWORK.LT.MINWS ) THEN
+*
+* Not enough workspace to use optimal NB: Reduce NB and
+* determine the minimum value of NB.
+*
+ NB = ( LWORK-2*SN ) / ( SN+1 )
+ NBMIN = MAX( 2, ILAENV( INBMIN, 'DGEQRF', ' ', SM, SN,
+ $ -1, -1 ) )
+*
+*
+ END IF
+ END IF
+ END IF
+*
+* Initialize partial column norms. The first N elements of work
+* store the exact column norms.
+*
+ DO 20 J = NFXD + 1, N
+ WORK( J ) = DNRM2( SM, A( NFXD+1, J ), 1 )
+ WORK( N+J ) = WORK( J )
+ 20 CONTINUE
+*
+ IF( ( NB.GE.NBMIN ) .AND. ( NB.LT.SMINMN ) .AND.
+ $ ( NX.LT.SMINMN ) ) THEN
+*
+* Use blocked code initially.
+*
+ J = NFXD + 1
+*
+* Compute factorization: while loop.
+*
+*
+ TOPBMN = MINMN - NX
+ 30 CONTINUE
+ IF( J.LE.TOPBMN ) THEN
+ JB = MIN( NB, TOPBMN-J+1 )
+*
+* Factorize JB columns among columns J:N.
+*
+ CALL DLAQPS( M, N-J+1, J-1, JB, FJB, A( 1, J ), LDA,
+ $ JPVT( J ), TAU( J ), WORK( J ), WORK( N+J ),
+ $ WORK( 2*N+1 ), WORK( 2*N+JB+1 ), N-J+1 )
+*
+ J = J + FJB
+ GO TO 30
+ END IF
+ ELSE
+ J = NFXD + 1
+ END IF
+*
+* Use unblocked code to factor the last or only block.
+*
+*
+ IF( J.LE.MINMN )
+ $ CALL DLAQP2( M, N-J+1, J-1, A( 1, J ), LDA, JPVT( J ),
+ $ TAU( J ), WORK( J ), WORK( N+J ),
+ $ WORK( 2*N+1 ) )
+*
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DGEQP3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeqpf.f b/2.3-1/src/fortran/lapack/dgeqpf.f
new file mode 100644
index 00000000..1b7acd6d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeqpf.f
@@ -0,0 +1,231 @@
+ SUBROUTINE DGEQPF( M, N, A, LDA, JPVT, TAU, WORK, INFO )
+*
+* -- LAPACK deprecated driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is deprecated and has been replaced by routine DGEQP3.
+*
+* DGEQPF computes a QR factorization with column pivoting of a
+* real M-by-N matrix A: A*P = Q*R.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the upper triangle of the array contains the
+* min(M,N)-by-N upper triangular matrix R; the elements
+* below the diagonal, together with the array TAU,
+* represent the orthogonal matrix Q as a product of
+* min(m,n) elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of A*P (a leading column); if JPVT(i) = 0,
+* the i-th column of A is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(n)
+*
+* Each H(i) has the form
+*
+* H = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i).
+*
+* The matrix P is represented in jpvt as follows: If
+* jpvt(j) = i
+* then the jth column of P is the ith canonical unit vector.
+*
+* Partial column norm updating strategy modified by
+* Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+* University of Zagreb, Croatia.
+* June 2006.
+* For more details see LAPACK Working Note 176.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ITEMP, J, MA, MN, PVT
+ DOUBLE PRECISION AII, TEMP, TEMP2, TOL3Z
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQR2, DLARF, DLARFG, DORM2R, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DNRM2
+ EXTERNAL IDAMAX, DLAMCH, DNRM2
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEQPF', -INFO )
+ RETURN
+ END IF
+*
+ MN = MIN( M, N )
+ TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+* Move initial columns up front
+*
+ ITEMP = 1
+ DO 10 I = 1, N
+ IF( JPVT( I ).NE.0 ) THEN
+ IF( I.NE.ITEMP ) THEN
+ CALL DSWAP( M, A( 1, I ), 1, A( 1, ITEMP ), 1 )
+ JPVT( I ) = JPVT( ITEMP )
+ JPVT( ITEMP ) = I
+ ELSE
+ JPVT( I ) = I
+ END IF
+ ITEMP = ITEMP + 1
+ ELSE
+ JPVT( I ) = I
+ END IF
+ 10 CONTINUE
+ ITEMP = ITEMP - 1
+*
+* Compute the QR factorization and update remaining columns
+*
+ IF( ITEMP.GT.0 ) THEN
+ MA = MIN( ITEMP, M )
+ CALL DGEQR2( M, MA, A, LDA, TAU, WORK, INFO )
+ IF( MA.LT.N ) THEN
+ CALL DORM2R( 'Left', 'Transpose', M, N-MA, MA, A, LDA, TAU,
+ $ A( 1, MA+1 ), LDA, WORK, INFO )
+ END IF
+ END IF
+*
+ IF( ITEMP.LT.MN ) THEN
+*
+* Initialize partial column norms. The first n elements of
+* work store the exact column norms.
+*
+ DO 20 I = ITEMP + 1, N
+ WORK( I ) = DNRM2( M-ITEMP, A( ITEMP+1, I ), 1 )
+ WORK( N+I ) = WORK( I )
+ 20 CONTINUE
+*
+* Compute factorization
+*
+ DO 40 I = ITEMP + 1, MN
+*
+* Determine ith pivot column and swap if necessary
+*
+ PVT = ( I-1 ) + IDAMAX( N-I+1, WORK( I ), 1 )
+*
+ IF( PVT.NE.I ) THEN
+ CALL DSWAP( M, A( 1, PVT ), 1, A( 1, I ), 1 )
+ ITEMP = JPVT( PVT )
+ JPVT( PVT ) = JPVT( I )
+ JPVT( I ) = ITEMP
+ WORK( PVT ) = WORK( I )
+ WORK( N+PVT ) = WORK( N+I )
+ END IF
+*
+* Generate elementary reflector H(i)
+*
+ IF( I.LT.M ) THEN
+ CALL DLARFG( M-I+1, A( I, I ), A( I+1, I ), 1, TAU( I ) )
+ ELSE
+ CALL DLARFG( 1, A( M, M ), A( M, M ), 1, TAU( M ) )
+ END IF
+*
+ IF( I.LT.N ) THEN
+*
+* Apply H(i) to A(i:m,i+1:n) from the left
+*
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL DLARF( 'LEFT', M-I+1, N-I, A( I, I ), 1, TAU( I ),
+ $ A( I, I+1 ), LDA, WORK( 2*N+1 ) )
+ A( I, I ) = AII
+ END IF
+*
+* Update partial column norms
+*
+ DO 30 J = I + 1, N
+ IF( WORK( J ).NE.ZERO ) THEN
+*
+* NOTE: The following 4 lines follow from the analysis in
+* Lapack Working Note 176.
+*
+ TEMP = ABS( A( I, J ) ) / WORK( J )
+ TEMP = MAX( ZERO, ( ONE+TEMP )*( ONE-TEMP ) )
+ TEMP2 = TEMP*( WORK( J ) / WORK( N+J ) )**2
+ IF( TEMP2 .LE. TOL3Z ) THEN
+ IF( M-I.GT.0 ) THEN
+ WORK( J ) = DNRM2( M-I, A( I+1, J ), 1 )
+ WORK( N+J ) = WORK( J )
+ ELSE
+ WORK( J ) = ZERO
+ WORK( N+J ) = ZERO
+ END IF
+ ELSE
+ WORK( J ) = WORK( J )*SQRT( TEMP )
+ END IF
+ END IF
+ 30 CONTINUE
+*
+ 40 CONTINUE
+ END IF
+ RETURN
+*
+* End of DGEQPF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeqr2.f b/2.3-1/src/fortran/lapack/dgeqr2.f
new file mode 100644
index 00000000..9872a162
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeqr2.f
@@ -0,0 +1,121 @@
+ SUBROUTINE DGEQR2( M, N, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEQR2 computes a QR factorization of a real m by n matrix A:
+* A = Q * R.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, the elements on and above the diagonal of the array
+* contain the min(m,n) by n upper trapezoidal matrix R (R is
+* upper triangular if m >= n); the elements below the diagonal,
+* with the array TAU, represent the orthogonal matrix Q as a
+* product of elementary reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i),
+* and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K
+ DOUBLE PRECISION AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEQR2', -INFO )
+ RETURN
+ END IF
+*
+ K = MIN( M, N )
+*
+ DO 10 I = 1, K
+*
+* Generate elementary reflector H(i) to annihilate A(i+1:m,i)
+*
+ CALL DLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+ $ TAU( I ) )
+ IF( I.LT.N ) THEN
+*
+* Apply H(i) to A(i:m,i+1:n) from the left
+*
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL DLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAU( I ),
+ $ A( I, I+1 ), LDA, WORK )
+ A( I, I ) = AII
+ END IF
+ 10 CONTINUE
+ RETURN
+*
+* End of DGEQR2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgeqrf.f b/2.3-1/src/fortran/lapack/dgeqrf.f
new file mode 100644
index 00000000..1e940597
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgeqrf.f
@@ -0,0 +1,196 @@
+ SUBROUTINE DGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGEQRF computes a QR factorization of a real M-by-N matrix A:
+* A = Q * R.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the elements on and above the diagonal of the array
+* contain the min(M,N)-by-N upper trapezoidal matrix R (R is
+* upper triangular if m >= n); the elements below the diagonal,
+* with the array TAU, represent the orthogonal matrix Q as a
+* product of min(m,n) elementary reflectors (see Further
+* Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i),
+* and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQR2, DLARFB, DLARFT, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGEQRF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ K = MIN( M, N )
+ IF( K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DGEQRF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DGEQRF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code initially
+*
+ DO 10 I = 1, K - NX, NB
+ IB = MIN( K-I+1, NB )
+*
+* Compute the QR factorization of the current block
+* A(i:m,i:i+ib-1)
+*
+ CALL DGEQR2( M-I+1, IB, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+ IF( I+IB.LE.N ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL DLARFT( 'Forward', 'Columnwise', M-I+1, IB,
+ $ A( I, I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H' to A(i:m,i+ib:n) from the left
+*
+ CALL DLARFB( 'Left', 'Transpose', 'Forward',
+ $ 'Columnwise', M-I+1, N-I-IB+1, IB,
+ $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ),
+ $ LDA, WORK( IB+1 ), LDWORK )
+ END IF
+ 10 CONTINUE
+ ELSE
+ I = 1
+ END IF
+*
+* Use unblocked code to factor the last or only block.
+*
+ IF( I.LE.K )
+ $ CALL DGEQR2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DGEQRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgerfs.f b/2.3-1/src/fortran/lapack/dgerfs.f
new file mode 100644
index 00000000..bada6e56
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgerfs.f
@@ -0,0 +1,336 @@
+ SUBROUTINE DGERFS( TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB,
+ $ X, LDX, FERR, BERR, WORK, IWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER INFO, LDA, LDAF, LDB, LDX, N, NRHS
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), AF( LDAF, * ), B( LDB, * ),
+ $ BERR( * ), FERR( * ), WORK( * ), X( LDX, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGERFS improves the computed solution to a system of linear
+* equations and provides error bounds and backward error estimates for
+* the solution.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* Specifies the form of the system of equations:
+* = 'N': A * X = B (No transpose)
+* = 'T': A**T * X = B (Transpose)
+* = 'C': A**H * X = B (Conjugate transpose = Transpose)
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrices B and X. NRHS >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The original N-by-N matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* AF (input) DOUBLE PRECISION array, dimension (LDAF,N)
+* The factors L and U from the factorization A = P*L*U
+* as computed by DGETRF.
+*
+* LDAF (input) INTEGER
+* The leading dimension of the array AF. LDAF >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* The pivot indices from DGETRF; for 1<=i<=N, row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* The right hand side matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* X (input/output) DOUBLE PRECISION array, dimension (LDX,NRHS)
+* On entry, the solution matrix X, as computed by DGETRS.
+* On exit, the improved solution matrix X.
+*
+* LDX (input) INTEGER
+* The leading dimension of the array X. LDX >= max(1,N).
+*
+* FERR (output) DOUBLE PRECISION array, dimension (NRHS)
+* The estimated forward error bound for each solution vector
+* X(j) (the j-th column of the solution matrix X).
+* If XTRUE is the true solution corresponding to X(j), FERR(j)
+* is an estimated upper bound for the magnitude of the largest
+* element in (X(j) - XTRUE) divided by the magnitude of the
+* largest element in X(j). The estimate is as reliable as
+* the estimate for RCOND, and is almost always a slight
+* overestimate of the true error.
+*
+* BERR (output) DOUBLE PRECISION array, dimension (NRHS)
+* The componentwise relative backward error of each solution
+* vector X(j) (i.e., the smallest relative change in
+* any element of A or B that makes X(j) an exact solution).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* IWORK (workspace) INTEGER array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Internal Parameters
+* ===================
+*
+* ITMAX is the maximum number of steps of iterative refinement.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 5 )
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D+0 )
+ DOUBLE PRECISION THREE
+ PARAMETER ( THREE = 3.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN
+ CHARACTER TRANST
+ INTEGER COUNT, I, J, K, KASE, NZ
+ DOUBLE PRECISION EPS, LSTRES, S, SAFE1, SAFE2, SAFMIN, XK
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMV, DGETRS, DLACN2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, DLAMCH
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT.
+ $ LSAME( TRANS, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDAF.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -10
+ ELSE IF( LDX.LT.MAX( 1, N ) ) THEN
+ INFO = -12
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGERFS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. NRHS.EQ.0 ) THEN
+ DO 10 J = 1, NRHS
+ FERR( J ) = ZERO
+ BERR( J ) = ZERO
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+* NZ = maximum number of nonzero elements in each row of A, plus 1
+*
+ NZ = N + 1
+ EPS = DLAMCH( 'Epsilon' )
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ SAFE1 = NZ*SAFMIN
+ SAFE2 = SAFE1 / EPS
+*
+* Do for each right hand side
+*
+ DO 140 J = 1, NRHS
+*
+ COUNT = 1
+ LSTRES = THREE
+ 20 CONTINUE
+*
+* Loop until stopping criterion is satisfied.
+*
+* Compute residual R = B - op(A) * X,
+* where op(A) = A, A**T, or A**H, depending on TRANS.
+*
+ CALL DCOPY( N, B( 1, J ), 1, WORK( N+1 ), 1 )
+ CALL DGEMV( TRANS, N, N, -ONE, A, LDA, X( 1, J ), 1, ONE,
+ $ WORK( N+1 ), 1 )
+*
+* Compute componentwise relative backward error from formula
+*
+* max(i) ( abs(R(i)) / ( abs(op(A))*abs(X) + abs(B) )(i) )
+*
+* where abs(Z) is the componentwise absolute value of the matrix
+* or vector Z. If the i-th component of the denominator is less
+* than SAFE2, then SAFE1 is added to the i-th components of the
+* numerator and denominator before dividing.
+*
+ DO 30 I = 1, N
+ WORK( I ) = ABS( B( I, J ) )
+ 30 CONTINUE
+*
+* Compute abs(op(A))*abs(X) + abs(B).
+*
+ IF( NOTRAN ) THEN
+ DO 50 K = 1, N
+ XK = ABS( X( K, J ) )
+ DO 40 I = 1, N
+ WORK( I ) = WORK( I ) + ABS( A( I, K ) )*XK
+ 40 CONTINUE
+ 50 CONTINUE
+ ELSE
+ DO 70 K = 1, N
+ S = ZERO
+ DO 60 I = 1, N
+ S = S + ABS( A( I, K ) )*ABS( X( I, J ) )
+ 60 CONTINUE
+ WORK( K ) = WORK( K ) + S
+ 70 CONTINUE
+ END IF
+ S = ZERO
+ DO 80 I = 1, N
+ IF( WORK( I ).GT.SAFE2 ) THEN
+ S = MAX( S, ABS( WORK( N+I ) ) / WORK( I ) )
+ ELSE
+ S = MAX( S, ( ABS( WORK( N+I ) )+SAFE1 ) /
+ $ ( WORK( I )+SAFE1 ) )
+ END IF
+ 80 CONTINUE
+ BERR( J ) = S
+*
+* Test stopping criterion. Continue iterating if
+* 1) The residual BERR(J) is larger than machine epsilon, and
+* 2) BERR(J) decreased by at least a factor of 2 during the
+* last iteration, and
+* 3) At most ITMAX iterations tried.
+*
+ IF( BERR( J ).GT.EPS .AND. TWO*BERR( J ).LE.LSTRES .AND.
+ $ COUNT.LE.ITMAX ) THEN
+*
+* Update solution and try again.
+*
+ CALL DGETRS( TRANS, N, 1, AF, LDAF, IPIV, WORK( N+1 ), N,
+ $ INFO )
+ CALL DAXPY( N, ONE, WORK( N+1 ), 1, X( 1, J ), 1 )
+ LSTRES = BERR( J )
+ COUNT = COUNT + 1
+ GO TO 20
+ END IF
+*
+* Bound error from formula
+*
+* norm(X - XTRUE) / norm(X) .le. FERR =
+* norm( abs(inv(op(A)))*
+* ( abs(R) + NZ*EPS*( abs(op(A))*abs(X)+abs(B) ))) / norm(X)
+*
+* where
+* norm(Z) is the magnitude of the largest component of Z
+* inv(op(A)) is the inverse of op(A)
+* abs(Z) is the componentwise absolute value of the matrix or
+* vector Z
+* NZ is the maximum number of nonzeros in any row of A, plus 1
+* EPS is machine epsilon
+*
+* The i-th component of abs(R)+NZ*EPS*(abs(op(A))*abs(X)+abs(B))
+* is incremented by SAFE1 if the i-th component of
+* abs(op(A))*abs(X) + abs(B) is less than SAFE2.
+*
+* Use DLACN2 to estimate the infinity-norm of the matrix
+* inv(op(A)) * diag(W),
+* where W = abs(R) + NZ*EPS*( abs(op(A))*abs(X)+abs(B) )))
+*
+ DO 90 I = 1, N
+ IF( WORK( I ).GT.SAFE2 ) THEN
+ WORK( I ) = ABS( WORK( N+I ) ) + NZ*EPS*WORK( I )
+ ELSE
+ WORK( I ) = ABS( WORK( N+I ) ) + NZ*EPS*WORK( I ) + SAFE1
+ END IF
+ 90 CONTINUE
+*
+ KASE = 0
+ 100 CONTINUE
+ CALL DLACN2( N, WORK( 2*N+1 ), WORK( N+1 ), IWORK, FERR( J ),
+ $ KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Multiply by diag(W)*inv(op(A)**T).
+*
+ CALL DGETRS( TRANST, N, 1, AF, LDAF, IPIV, WORK( N+1 ),
+ $ N, INFO )
+ DO 110 I = 1, N
+ WORK( N+I ) = WORK( I )*WORK( N+I )
+ 110 CONTINUE
+ ELSE
+*
+* Multiply by inv(op(A))*diag(W).
+*
+ DO 120 I = 1, N
+ WORK( N+I ) = WORK( I )*WORK( N+I )
+ 120 CONTINUE
+ CALL DGETRS( TRANS, N, 1, AF, LDAF, IPIV, WORK( N+1 ), N,
+ $ INFO )
+ END IF
+ GO TO 100
+ END IF
+*
+* Normalize error.
+*
+ LSTRES = ZERO
+ DO 130 I = 1, N
+ LSTRES = MAX( LSTRES, ABS( X( I, J ) ) )
+ 130 CONTINUE
+ IF( LSTRES.NE.ZERO )
+ $ FERR( J ) = FERR( J ) / LSTRES
+*
+ 140 CONTINUE
+*
+ RETURN
+*
+* End of DGERFS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgerq2.f b/2.3-1/src/fortran/lapack/dgerq2.f
new file mode 100644
index 00000000..4dfe8b0f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgerq2.f
@@ -0,0 +1,122 @@
+ SUBROUTINE DGERQ2( M, N, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGERQ2 computes an RQ factorization of a real m by n matrix A:
+* A = R * Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, if m <= n, the upper triangle of the subarray
+* A(1:m,n-m+1:n) contains the m by m upper triangular matrix R;
+* if m >= n, the elements on and above the (m-n)-th subdiagonal
+* contain the m by n upper trapezoidal matrix R; the remaining
+* elements, with the array TAU, represent the orthogonal matrix
+* Q as a product of elementary reflectors (see Further
+* Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (M)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in
+* A(m-k+i,1:n-k+i-1), and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K
+ DOUBLE PRECISION AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGERQ2', -INFO )
+ RETURN
+ END IF
+*
+ K = MIN( M, N )
+*
+ DO 10 I = K, 1, -1
+*
+* Generate elementary reflector H(i) to annihilate
+* A(m-k+i,1:n-k+i-1)
+*
+ CALL DLARFG( N-K+I, A( M-K+I, N-K+I ), A( M-K+I, 1 ), LDA,
+ $ TAU( I ) )
+*
+* Apply H(i) to A(1:m-k+i-1,1:n-k+i) from the right
+*
+ AII = A( M-K+I, N-K+I )
+ A( M-K+I, N-K+I ) = ONE
+ CALL DLARF( 'Right', M-K+I-1, N-K+I, A( M-K+I, 1 ), LDA,
+ $ TAU( I ), A, LDA, WORK )
+ A( M-K+I, N-K+I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of DGERQ2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgerqf.f b/2.3-1/src/fortran/lapack/dgerqf.f
new file mode 100644
index 00000000..3dc22652
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgerqf.f
@@ -0,0 +1,213 @@
+ SUBROUTINE DGERQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGERQF computes an RQ factorization of a real M-by-N matrix A:
+* A = R * Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit,
+* if m <= n, the upper triangle of the subarray
+* A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R;
+* if m >= n, the elements on and above the (m-n)-th subdiagonal
+* contain the M-by-N upper trapezoidal matrix R;
+* the remaining elements, with the array TAU, represent the
+* orthogonal matrix Q as a product of min(m,n) elementary
+* reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in
+* A(m-k+i,1:n-k+i-1), and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, K, KI, KK, LDWORK, LWKOPT,
+ $ MU, NB, NBMIN, NU, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGERQ2, DLARFB, DLARFT, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ K = MIN( M, N )
+ IF( K.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+ NB = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
+ LWKOPT = M*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGERQF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( K.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 1
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DGERQF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DGERQF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code initially.
+* The last kk rows are handled by the block method.
+*
+ KI = ( ( K-NX-1 ) / NB )*NB
+ KK = MIN( K, KI+NB )
+*
+ DO 10 I = K - KK + KI + 1, K - KK + 1, -NB
+ IB = MIN( K-I+1, NB )
+*
+* Compute the RQ factorization of the current block
+* A(m-k+i:m-k+i+ib-1,1:n-k+i+ib-1)
+*
+ CALL DGERQ2( IB, N-K+I+IB-1, A( M-K+I, 1 ), LDA, TAU( I ),
+ $ WORK, IINFO )
+ IF( M-K+I.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARFT( 'Backward', 'Rowwise', N-K+I+IB-1, IB,
+ $ A( M-K+I, 1 ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(1:m-k+i-1,1:n-k+i+ib-1) from the right
+*
+ CALL DLARFB( 'Right', 'No transpose', 'Backward',
+ $ 'Rowwise', M-K+I-1, N-K+I+IB-1, IB,
+ $ A( M-K+I, 1 ), LDA, WORK, LDWORK, A, LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+ 10 CONTINUE
+ MU = M - K + I + NB - 1
+ NU = N - K + I + NB - 1
+ ELSE
+ MU = M
+ NU = N
+ END IF
+*
+* Use unblocked code to factor the last or only block
+*
+ IF( MU.GT.0 .AND. NU.GT.0 )
+ $ CALL DGERQ2( MU, NU, A, LDA, TAU, WORK, IINFO )
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DGERQF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgesc2.f b/2.3-1/src/fortran/lapack/dgesc2.f
new file mode 100644
index 00000000..1b0331f5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgesc2.f
@@ -0,0 +1,132 @@
+ SUBROUTINE DGESC2( N, A, LDA, RHS, IPIV, JPIV, SCALE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, N
+ DOUBLE PRECISION SCALE
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), JPIV( * )
+ DOUBLE PRECISION A( LDA, * ), RHS( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGESC2 solves a system of linear equations
+*
+* A * X = scale* RHS
+*
+* with a general N-by-N matrix A using the LU factorization with
+* complete pivoting computed by DGETC2.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the LU part of the factorization of the n-by-n
+* matrix A computed by DGETC2: A = P * L * U * Q
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1, N).
+*
+* RHS (input/output) DOUBLE PRECISION array, dimension (N).
+* On entry, the right hand side vector b.
+* On exit, the solution vector X.
+*
+* IPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= i <= N, row i of the
+* matrix has been interchanged with row IPIV(i).
+*
+* JPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= j <= N, column j of the
+* matrix has been interchanged with column JPIV(j).
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit, SCALE contains the scale factor. SCALE is chosen
+* 0 <= SCALE <= 1 to prevent owerflow in the solution.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, TWO
+ PARAMETER ( ONE = 1.0D+0, TWO = 2.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION BIGNUM, EPS, SMLNUM, TEMP
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASWP, DSCAL
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL IDAMAX, DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+*
+* Set constant to control owerflow
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Apply permutations IPIV to RHS
+*
+ CALL DLASWP( 1, RHS, LDA, 1, N-1, IPIV, 1 )
+*
+* Solve for L part
+*
+ DO 20 I = 1, N - 1
+ DO 10 J = I + 1, N
+ RHS( J ) = RHS( J ) - A( J, I )*RHS( I )
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* Solve for U part
+*
+ SCALE = ONE
+*
+* Check for scaling
+*
+ I = IDAMAX( N, RHS, 1 )
+ IF( TWO*SMLNUM*ABS( RHS( I ) ).GT.ABS( A( N, N ) ) ) THEN
+ TEMP = ( ONE / TWO ) / ABS( RHS( I ) )
+ CALL DSCAL( N, TEMP, RHS( 1 ), 1 )
+ SCALE = SCALE*TEMP
+ END IF
+*
+ DO 40 I = N, 1, -1
+ TEMP = ONE / A( I, I )
+ RHS( I ) = RHS( I )*TEMP
+ DO 30 J = I + 1, N
+ RHS( I ) = RHS( I ) - RHS( J )*( A( I, J )*TEMP )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* Apply permutations JPIV to the solution (RHS)
+*
+ CALL DLASWP( 1, RHS, LDA, 1, N-1, JPIV, -1 )
+ RETURN
+*
+* End of DGESC2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgesv.f b/2.3-1/src/fortran/lapack/dgesv.f
new file mode 100644
index 00000000..220ef56f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgesv.f
@@ -0,0 +1,107 @@
+ SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, N, NRHS
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGESV computes the solution to a real system of linear equations
+* A * X = B,
+* where A is an N-by-N matrix and X and B are N-by-NRHS matrices.
+*
+* The LU decomposition with partial pivoting and row interchanges is
+* used to factor A as
+* A = P * L * U,
+* where P is a permutation matrix, L is unit lower triangular, and U is
+* upper triangular. The factored form of A is then used to solve the
+* system of equations A * X = B.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of linear equations, i.e., the order of the
+* matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the N-by-N coefficient matrix A.
+* On exit, the factors L and U from the factorization
+* A = P*L*U; the unit diagonal elements of L are not stored.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (output) INTEGER array, dimension (N)
+* The pivot indices that define the permutation matrix P;
+* row i of the matrix was interchanged with row IPIV(i).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the N-by-NRHS matrix of right hand side matrix B.
+* On exit, if INFO = 0, the N-by-NRHS solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, U(i,i) is exactly zero. The factorization
+* has been completed, but the factor U is exactly
+* singular, so the solution could not be computed.
+*
+* =====================================================================
+*
+* .. External Subroutines ..
+ EXTERNAL DGETRF, DGETRS, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGESV ', -INFO )
+ RETURN
+ END IF
+*
+* Compute the LU factorization of A.
+*
+ CALL DGETRF( N, N, A, LDA, IPIV, INFO )
+ IF( INFO.EQ.0 ) THEN
+*
+* Solve the system A*X = B, overwriting B with X.
+*
+ CALL DGETRS( 'No transpose', N, NRHS, A, LDA, IPIV, B, LDB,
+ $ INFO )
+ END IF
+ RETURN
+*
+* End of DGESV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgesvd.f b/2.3-1/src/fortran/lapack/dgesvd.f
new file mode 100644
index 00000000..0b62ca10
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgesvd.f
@@ -0,0 +1,3401 @@
+ SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBU, JOBVT
+ INTEGER INFO, LDA, LDU, LDVT, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), S( * ), U( LDU, * ),
+ $ VT( LDVT, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGESVD computes the singular value decomposition (SVD) of a real
+* M-by-N matrix A, optionally computing the left and/or right singular
+* vectors. The SVD is written
+*
+* A = U * SIGMA * transpose(V)
+*
+* where SIGMA is an M-by-N matrix which is zero except for its
+* min(m,n) diagonal elements, U is an M-by-M orthogonal matrix, and
+* V is an N-by-N orthogonal matrix. The diagonal elements of SIGMA
+* are the singular values of A; they are real and non-negative, and
+* are returned in descending order. The first min(m,n) columns of
+* U and V are the left and right singular vectors of A.
+*
+* Note that the routine returns V**T, not V.
+*
+* Arguments
+* =========
+*
+* JOBU (input) CHARACTER*1
+* Specifies options for computing all or part of the matrix U:
+* = 'A': all M columns of U are returned in array U:
+* = 'S': the first min(m,n) columns of U (the left singular
+* vectors) are returned in the array U;
+* = 'O': the first min(m,n) columns of U (the left singular
+* vectors) are overwritten on the array A;
+* = 'N': no columns of U (no left singular vectors) are
+* computed.
+*
+* JOBVT (input) CHARACTER*1
+* Specifies options for computing all or part of the matrix
+* V**T:
+* = 'A': all N rows of V**T are returned in the array VT;
+* = 'S': the first min(m,n) rows of V**T (the right singular
+* vectors) are returned in the array VT;
+* = 'O': the first min(m,n) rows of V**T (the right singular
+* vectors) are overwritten on the array A;
+* = 'N': no rows of V**T (no right singular vectors) are
+* computed.
+*
+* JOBVT and JOBU cannot both be 'O'.
+*
+* M (input) INTEGER
+* The number of rows of the input matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the input matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit,
+* if JOBU = 'O', A is overwritten with the first min(m,n)
+* columns of U (the left singular vectors,
+* stored columnwise);
+* if JOBVT = 'O', A is overwritten with the first min(m,n)
+* rows of V**T (the right singular vectors,
+* stored rowwise);
+* if JOBU .ne. 'O' and JOBVT .ne. 'O', the contents of A
+* are destroyed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* S (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The singular values of A, sorted so that S(i) >= S(i+1).
+*
+* U (output) DOUBLE PRECISION array, dimension (LDU,UCOL)
+* (LDU,M) if JOBU = 'A' or (LDU,min(M,N)) if JOBU = 'S'.
+* If JOBU = 'A', U contains the M-by-M orthogonal matrix U;
+* if JOBU = 'S', U contains the first min(m,n) columns of U
+* (the left singular vectors, stored columnwise);
+* if JOBU = 'N' or 'O', U is not referenced.
+*
+* LDU (input) INTEGER
+* The leading dimension of the array U. LDU >= 1; if
+* JOBU = 'S' or 'A', LDU >= M.
+*
+* VT (output) DOUBLE PRECISION array, dimension (LDVT,N)
+* If JOBVT = 'A', VT contains the N-by-N orthogonal matrix
+* V**T;
+* if JOBVT = 'S', VT contains the first min(m,n) rows of
+* V**T (the right singular vectors, stored rowwise);
+* if JOBVT = 'N' or 'O', VT is not referenced.
+*
+* LDVT (input) INTEGER
+* The leading dimension of the array VT. LDVT >= 1; if
+* JOBVT = 'A', LDVT >= N; if JOBVT = 'S', LDVT >= min(M,N).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK;
+* if INFO > 0, WORK(2:MIN(M,N)) contains the unconverged
+* superdiagonal elements of an upper bidiagonal matrix B
+* whose diagonal is in S (not necessarily sorted). B
+* satisfies A = U * B * VT, so it has the same singular values
+* as A, and singular vectors related by U and VT.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* LWORK >= MAX(1,3*MIN(M,N)+MAX(M,N),5*MIN(M,N)).
+* For good performance, LWORK should generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if DBDSQR did not converge, INFO specifies how many
+* superdiagonals of an intermediate bidiagonal form B
+* did not converge to zero. See the description of WORK
+* above for details.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, WNTUA, WNTUAS, WNTUN, WNTUO, WNTUS,
+ $ WNTVA, WNTVAS, WNTVN, WNTVO, WNTVS
+ INTEGER BDSPAC, BLK, CHUNK, I, IE, IERR, IR, ISCL,
+ $ ITAU, ITAUP, ITAUQ, IU, IWORK, LDWRKR, LDWRKU,
+ $ MAXWRK, MINMN, MINWRK, MNTHR, NCU, NCVT, NRU,
+ $ NRVT, WRKBL
+ DOUBLE PRECISION ANRM, BIGNUM, EPS, SMLNUM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DBDSQR, DGEBRD, DGELQF, DGEMM, DGEQRF, DLACPY,
+ $ DLASCL, DLASET, DORGBR, DORGLQ, DORGQR, DORMBR,
+ $ XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ MINMN = MIN( M, N )
+ WNTUA = LSAME( JOBU, 'A' )
+ WNTUS = LSAME( JOBU, 'S' )
+ WNTUAS = WNTUA .OR. WNTUS
+ WNTUO = LSAME( JOBU, 'O' )
+ WNTUN = LSAME( JOBU, 'N' )
+ WNTVA = LSAME( JOBVT, 'A' )
+ WNTVS = LSAME( JOBVT, 'S' )
+ WNTVAS = WNTVA .OR. WNTVS
+ WNTVO = LSAME( JOBVT, 'O' )
+ WNTVN = LSAME( JOBVT, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ IF( .NOT.( WNTUA .OR. WNTUS .OR. WNTUO .OR. WNTUN ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.( WNTVA .OR. WNTVS .OR. WNTVO .OR. WNTVN ) .OR.
+ $ ( WNTVO .AND. WNTUO ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LDU.LT.1 .OR. ( WNTUAS .AND. LDU.LT.M ) ) THEN
+ INFO = -9
+ ELSE IF( LDVT.LT.1 .OR. ( WNTVA .AND. LDVT.LT.N ) .OR.
+ $ ( WNTVS .AND. LDVT.LT.MINMN ) ) THEN
+ INFO = -11
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.)
+*
+ IF( INFO.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ IF( M.GE.N .AND. MINMN.GT.0 ) THEN
+*
+* Compute space needed for DBDSQR
+*
+ MNTHR = ILAENV( 6, 'DGESVD', JOBU // JOBVT, M, N, 0, 0 )
+ BDSPAC = 5*N
+ IF( M.GE.MNTHR ) THEN
+ IF( WNTUN ) THEN
+*
+* Path 1 (M much larger than N, JOBU='N')
+*
+ MAXWRK = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1,
+ $ -1 )
+ MAXWRK = MAX( MAXWRK, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ IF( WNTVO .OR. WNTVAS )
+ $ MAXWRK = MAX( MAXWRK, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, BDSPAC )
+ MINWRK = MAX( 4*N, BDSPAC )
+ ELSE IF( WNTUO .AND. WNTVN ) THEN
+*
+* Path 2 (M much larger than N, JOBU='O', JOBVT='N')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'DORGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = MAX( N*N+WRKBL, N*N+M*N+N )
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUO .AND. WNTVAS ) THEN
+*
+* Path 3 (M much larger than N, JOBU='O', JOBVT='S' or
+* 'A')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'DORGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = MAX( N*N+WRKBL, N*N+M*N+N )
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUS .AND. WNTVN ) THEN
+*
+* Path 4 (M much larger than N, JOBU='S', JOBVT='N')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'DORGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = N*N + WRKBL
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUS .AND. WNTVO ) THEN
+*
+* Path 5 (M much larger than N, JOBU='S', JOBVT='O')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'DORGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = 2*N*N + WRKBL
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUS .AND. WNTVAS ) THEN
+*
+* Path 6 (M much larger than N, JOBU='S', JOBVT='S' or
+* 'A')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'DORGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = N*N + WRKBL
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUA .AND. WNTVN ) THEN
+*
+* Path 7 (M much larger than N, JOBU='A', JOBVT='N')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+M*ILAENV( 1, 'DORGQR', ' ', M,
+ $ M, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = N*N + WRKBL
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUA .AND. WNTVO ) THEN
+*
+* Path 8 (M much larger than N, JOBU='A', JOBVT='O')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+M*ILAENV( 1, 'DORGQR', ' ', M,
+ $ M, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = 2*N*N + WRKBL
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ ELSE IF( WNTUA .AND. WNTVAS ) THEN
+*
+* Path 9 (M much larger than N, JOBU='A', JOBVT='S' or
+* 'A')
+*
+ WRKBL = N + N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+M*ILAENV( 1, 'DORGQR', ' ', M,
+ $ M, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+2*N*
+ $ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = N*N + WRKBL
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ END IF
+ ELSE
+*
+* Path 10 (M at least N, but not much larger)
+*
+ MAXWRK = 3*N + ( M+N )*ILAENV( 1, 'DGEBRD', ' ', M, N,
+ $ -1, -1 )
+ IF( WNTUS .OR. WNTUO )
+ $ MAXWRK = MAX( MAXWRK, 3*N+N*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, N, N, -1 ) )
+ IF( WNTUA )
+ $ MAXWRK = MAX( MAXWRK, 3*N+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, N, -1 ) )
+ IF( .NOT.WNTVN )
+ $ MAXWRK = MAX( MAXWRK, 3*N+( N-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, BDSPAC )
+ MINWRK = MAX( 3*N+M, BDSPAC )
+ END IF
+ ELSE IF( MINMN.GT.0 ) THEN
+*
+* Compute space needed for DBDSQR
+*
+ MNTHR = ILAENV( 6, 'DGESVD', JOBU // JOBVT, M, N, 0, 0 )
+ BDSPAC = 5*M
+ IF( N.GE.MNTHR ) THEN
+ IF( WNTVN ) THEN
+*
+* Path 1t(N much larger than M, JOBVT='N')
+*
+ MAXWRK = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1,
+ $ -1 )
+ MAXWRK = MAX( MAXWRK, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ IF( WNTUO .OR. WNTUAS )
+ $ MAXWRK = MAX( MAXWRK, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = MAX( MAXWRK, BDSPAC )
+ MINWRK = MAX( 4*M, BDSPAC )
+ ELSE IF( WNTVO .AND. WNTUN ) THEN
+*
+* Path 2t(N much larger than M, JOBU='N', JOBVT='O')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'DORGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = MAX( M*M+WRKBL, M*M+M*N+M )
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVO .AND. WNTUAS ) THEN
+*
+* Path 3t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='O')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'DORGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = MAX( M*M+WRKBL, M*M+M*N+M )
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVS .AND. WNTUN ) THEN
+*
+* Path 4t(N much larger than M, JOBU='N', JOBVT='S')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'DORGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = M*M + WRKBL
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVS .AND. WNTUO ) THEN
+*
+* Path 5t(N much larger than M, JOBU='O', JOBVT='S')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'DORGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = 2*M*M + WRKBL
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVS .AND. WNTUAS ) THEN
+*
+* Path 6t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='S')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'DORGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = M*M + WRKBL
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVA .AND. WNTUN ) THEN
+*
+* Path 7t(N much larger than M, JOBU='N', JOBVT='A')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+N*ILAENV( 1, 'DORGLQ', ' ', N,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = M*M + WRKBL
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVA .AND. WNTUO ) THEN
+*
+* Path 8t(N much larger than M, JOBU='O', JOBVT='A')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+N*ILAENV( 1, 'DORGLQ', ' ', N,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = 2*M*M + WRKBL
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ ELSE IF( WNTVA .AND. WNTUAS ) THEN
+*
+* Path 9t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='A')
+*
+ WRKBL = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+N*ILAENV( 1, 'DORGLQ', ' ', N,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+2*M*
+ $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, BDSPAC )
+ MAXWRK = M*M + WRKBL
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ END IF
+ ELSE
+*
+* Path 10t(N greater than M, but not much larger)
+*
+ MAXWRK = 3*M + ( M+N )*ILAENV( 1, 'DGEBRD', ' ', M, N,
+ $ -1, -1 )
+ IF( WNTVS .OR. WNTVO )
+ $ MAXWRK = MAX( MAXWRK, 3*M+M*
+ $ ILAENV( 1, 'DORGBR', 'P', M, N, M, -1 ) )
+ IF( WNTVA )
+ $ MAXWRK = MAX( MAXWRK, 3*M+N*
+ $ ILAENV( 1, 'DORGBR', 'P', N, N, M, -1 ) )
+ IF( .NOT.WNTUN )
+ $ MAXWRK = MAX( MAXWRK, 3*M+( M-1 )*
+ $ ILAENV( 1, 'DORGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = MAX( MAXWRK, BDSPAC )
+ MINWRK = MAX( 3*M+N, BDSPAC )
+ END IF
+ END IF
+ MAXWRK = MAX( MAXWRK, MINWRK )
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGESVD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = SQRT( DLAMCH( 'S' ) ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', M, N, A, LDA, DUM )
+ ISCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ISCL = 1
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, IERR )
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ISCL = 1
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, IERR )
+ END IF
+*
+ IF( M.GE.N ) THEN
+*
+* A has at least as many rows as columns. If A has sufficiently
+* more rows than columns, first reduce using the QR
+* decomposition (if sufficient workspace available)
+*
+ IF( M.GE.MNTHR ) THEN
+*
+ IF( WNTUN ) THEN
+*
+* Path 1 (M much larger than N, JOBU='N')
+* No left singular vectors to be computed
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Zero out below R
+*
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ), LDA )
+ IE = 1
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in A
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ NCVT = 0
+ IF( WNTVO .OR. WNTVAS ) THEN
+*
+* If right singular vectors desired, generate P'.
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ NCVT = N
+ END IF
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in A if desired
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, NCVT, 0, 0, S, WORK( IE ), A, LDA,
+ $ DUM, 1, DUM, 1, WORK( IWORK ), INFO )
+*
+* If right singular vectors desired in VT, copy them there
+*
+ IF( WNTVAS )
+ $ CALL DLACPY( 'F', N, N, A, LDA, VT, LDVT )
+*
+ ELSE IF( WNTUO .AND. WNTVN ) THEN
+*
+* Path 2 (M much larger than N, JOBU='O', JOBVT='N')
+* N left singular vectors to be overwritten on A and
+* no right singular vectors to be computed
+*
+ IF( LWORK.GE.N*N+MAX( 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N+N )+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N, WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N+N )+N*N ) THEN
+*
+* WORK(IU) is LDA by N, WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is LDWRKU by N, WORK(IR) is N by N
+*
+ LDWRKU = ( LWORK-N*N-N ) / N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IR) and zero out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IR ), LDWRKR )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, WORK( IR+1 ),
+ $ LDWRKR )
+*
+* Generate Q in A
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DORGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IR ), LDWRKR, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing R
+* (Workspace: need N*N+4*N, prefer N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR)
+* (Workspace: need N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, 0, N, 0, S, WORK( IE ), DUM, 1,
+ $ WORK( IR ), LDWRKR, DUM, 1,
+ $ WORK( IWORK ), INFO )
+ IU = IE + N
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IR), storing result in WORK(IU) and copying to A
+* (Workspace: need N*N+2*N, prefer N*N+M*N+N)
+*
+ DO 10 I = 1, M, LDWRKU
+ CHUNK = MIN( M-I+1, LDWRKU )
+ CALL DGEMM( 'N', 'N', CHUNK, N, N, ONE, A( I, 1 ),
+ $ LDA, WORK( IR ), LDWRKR, ZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL DLACPY( 'F', CHUNK, N, WORK( IU ), LDWRKU,
+ $ A( I, 1 ), LDA )
+ 10 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ IE = 1
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize A
+* (Workspace: need 3*N+M, prefer 3*N+(M+N)*NB)
+*
+ CALL DGEBRD( M, N, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing A
+* (Workspace: need 4*N, prefer 3*N+N*NB)
+*
+ CALL DORGBR( 'Q', M, N, N, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, 0, M, 0, S, WORK( IE ), DUM, 1,
+ $ A, LDA, DUM, 1, WORK( IWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUO .AND. WNTVAS ) THEN
+*
+* Path 3 (M much larger than N, JOBU='O', JOBVT='S' or 'A')
+* N left singular vectors to be overwritten on A and
+* N right singular vectors to be computed in VT
+*
+ IF( LWORK.GE.N*N+MAX( 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N+N )+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N+N )+N*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is LDWRKU by N and WORK(IR) is N by N
+*
+ LDWRKU = ( LWORK-N*N-N ) / N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to VT, zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ VT( 2, 1 ), LDVT )
+*
+* Generate Q in A
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DORGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT, copying result to WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, VT, LDVT, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', N, N, VT, LDVT, WORK( IR ), LDWRKR )
+*
+* Generate left vectors bidiagonalizing R in WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing R in VT
+* (Workspace: need N*N+4*N-1, prefer N*N+3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR) and computing right
+* singular vectors of R in VT
+* (Workspace: need N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, N, 0, S, WORK( IE ), VT, LDVT,
+ $ WORK( IR ), LDWRKR, DUM, 1,
+ $ WORK( IWORK ), INFO )
+ IU = IE + N
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IR), storing result in WORK(IU) and copying to A
+* (Workspace: need N*N+2*N, prefer N*N+M*N+N)
+*
+ DO 20 I = 1, M, LDWRKU
+ CHUNK = MIN( M-I+1, LDWRKU )
+ CALL DGEMM( 'N', 'N', CHUNK, N, N, ONE, A( I, 1 ),
+ $ LDA, WORK( IR ), LDWRKR, ZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL DLACPY( 'F', CHUNK, N, WORK( IU ), LDWRKU,
+ $ A( I, 1 ), LDA )
+ 20 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to VT, zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ VT( 2, 1 ), LDVT )
+*
+* Generate Q in A
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DORGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, VT, LDVT, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in A by left vectors bidiagonalizing R
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, VT, LDVT,
+ $ WORK( ITAUQ ), A, LDA, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing R in VT
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A and computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, M, 0, S, WORK( IE ), VT, LDVT,
+ $ A, LDA, DUM, 1, WORK( IWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUS ) THEN
+*
+ IF( WNTVN ) THEN
+*
+* Path 4 (M much larger than N, JOBU='S', JOBVT='N')
+* N left singular vectors to be computed in U and
+* no right singular vectors to be computed
+*
+ IF( LWORK.GE.N*N+MAX( 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IR) is LDA by N
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is N by N
+*
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IR), zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ WORK( IR+1 ), LDWRKR )
+*
+* Generate Q in A
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DORGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IR ), LDWRKR, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing R in WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR)
+* (Workspace: need N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, 0, N, 0, S, WORK( IE ), DUM,
+ $ 1, WORK( IR ), LDWRKR, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IR), storing result in U
+* (Workspace: need N*N)
+*
+ CALL DGEMM( 'N', 'N', M, N, N, ONE, A, LDA,
+ $ WORK( IR ), LDWRKR, ZERO, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DORGQR( M, N, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ),
+ $ LDA )
+*
+* Bidiagonalize R in A
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left vectors bidiagonalizing R
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, 0, M, 0, S, WORK( IE ), DUM,
+ $ 1, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVO ) THEN
+*
+* Path 5 (M much larger than N, JOBU='S', JOBVT='O')
+* N left singular vectors to be computed in U and
+* N right singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*N*N+MAX( 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+N )*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is N by N and WORK(IR) is N by N
+*
+ LDWRKU = N
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need 2*N*N+2*N, prefer 2*N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ WORK( IU+1 ), LDWRKU )
+*
+* Generate Q in A
+* (Workspace: need 2*N*N+2*N, prefer 2*N*N+N+N*NB)
+*
+ CALL DORGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to
+* WORK(IR)
+* (Workspace: need 2*N*N+4*N,
+* prefer 2*N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', N, N, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (Workspace: need 2*N*N+4*N, prefer 2*N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in WORK(IR)
+* (Workspace: need 2*N*N+4*N-1,
+* prefer 2*N*N+3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in WORK(IR)
+* (Workspace: need 2*N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, N, 0, S, WORK( IE ),
+ $ WORK( IR ), LDWRKR, WORK( IU ),
+ $ LDWRKU, DUM, 1, WORK( IWORK ), INFO )
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IU), storing result in U
+* (Workspace: need N*N)
+*
+ CALL DGEMM( 'N', 'N', M, N, N, ONE, A, LDA,
+ $ WORK( IU ), LDWRKU, ZERO, U, LDU )
+*
+* Copy right singular vectors of R to A
+* (Workspace: need N*N)
+*
+ CALL DLACPY( 'F', N, N, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DORGQR( M, N, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ),
+ $ LDA )
+*
+* Bidiagonalize R in A
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left vectors bidiagonalizing R
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing R in A
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, M, 0, S, WORK( IE ), A,
+ $ LDA, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVAS ) THEN
+*
+* Path 6 (M much larger than N, JOBU='S', JOBVT='S'
+* or 'A')
+* N left singular vectors to be computed in U and
+* N right singular vectors to be computed in VT
+*
+ IF( LWORK.GE.N*N+MAX( 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is N by N
+*
+ LDWRKU = N
+ END IF
+ ITAU = IU + LDWRKU*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ WORK( IU+1 ), LDWRKU )
+*
+* Generate Q in A
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DORGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to VT
+* (Workspace: need N*N+4*N, prefer N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', N, N, WORK( IU ), LDWRKU, VT,
+ $ LDVT )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (Workspace: need N*N+4*N-1,
+* prefer N*N+3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in VT
+* (Workspace: need N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, N, 0, S, WORK( IE ), VT,
+ $ LDVT, WORK( IU ), LDWRKU, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IU), storing result in U
+* (Workspace: need N*N)
+*
+ CALL DGEMM( 'N', 'N', M, N, N, ONE, A, LDA,
+ $ WORK( IU ), LDWRKU, ZERO, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DORGQR( M, N, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to VT, zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ VT( 2, 1 ), LDVT )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, VT, LDVT, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in VT
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, VT, LDVT,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, M, 0, S, WORK( IE ), VT,
+ $ LDVT, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ END IF
+*
+ ELSE IF( WNTUA ) THEN
+*
+ IF( WNTVN ) THEN
+*
+* Path 7 (M much larger than N, JOBU='A', JOBVT='N')
+* M left singular vectors to be computed in U and
+* no right singular vectors to be computed
+*
+ IF( LWORK.GE.N*N+MAX( N+M, 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IR) is LDA by N
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is N by N
+*
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Copy R to WORK(IR), zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ WORK( IR+1 ), LDWRKR )
+*
+* Generate Q in U
+* (Workspace: need N*N+N+M, prefer N*N+N+M*NB)
+*
+ CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IR ), LDWRKR, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in WORK(IR)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR)
+* (Workspace: need N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, 0, N, 0, S, WORK( IE ), DUM,
+ $ 1, WORK( IR ), LDWRKR, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply Q in U by left singular vectors of R in
+* WORK(IR), storing result in A
+* (Workspace: need N*N)
+*
+ CALL DGEMM( 'N', 'N', M, N, N, ONE, U, LDU,
+ $ WORK( IR ), LDWRKR, ZERO, A, LDA )
+*
+* Copy left singular vectors of A from A to U
+*
+ CALL DLACPY( 'F', M, N, A, LDA, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need N+M, prefer N+M*NB)
+*
+ CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ),
+ $ LDA )
+*
+* Bidiagonalize R in A
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in A
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, 0, M, 0, S, WORK( IE ), DUM,
+ $ 1, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVO ) THEN
+*
+* Path 8 (M much larger than N, JOBU='A', JOBVT='O')
+* M left singular vectors to be computed in U and
+* N right singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*N*N+MAX( N+M, 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+N )*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is N by N and WORK(IR) is N by N
+*
+ LDWRKU = N
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N*N+2*N, prefer 2*N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need 2*N*N+N+M, prefer 2*N*N+N+M*NB)
+*
+ CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ WORK( IU+1 ), LDWRKU )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to
+* WORK(IR)
+* (Workspace: need 2*N*N+4*N,
+* prefer 2*N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', N, N, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (Workspace: need 2*N*N+4*N, prefer 2*N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in WORK(IR)
+* (Workspace: need 2*N*N+4*N-1,
+* prefer 2*N*N+3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in WORK(IR)
+* (Workspace: need 2*N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, N, 0, S, WORK( IE ),
+ $ WORK( IR ), LDWRKR, WORK( IU ),
+ $ LDWRKU, DUM, 1, WORK( IWORK ), INFO )
+*
+* Multiply Q in U by left singular vectors of R in
+* WORK(IU), storing result in A
+* (Workspace: need N*N)
+*
+ CALL DGEMM( 'N', 'N', M, N, N, ONE, U, LDU,
+ $ WORK( IU ), LDWRKU, ZERO, A, LDA )
+*
+* Copy left singular vectors of A from A to U
+*
+ CALL DLACPY( 'F', M, N, A, LDA, U, LDU )
+*
+* Copy right singular vectors of R from WORK(IR) to A
+*
+ CALL DLACPY( 'F', N, N, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need N+M, prefer N+M*NB)
+*
+ CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ),
+ $ LDA )
+*
+* Bidiagonalize R in A
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in A
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in A
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, M, 0, S, WORK( IE ), A,
+ $ LDA, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVAS ) THEN
+*
+* Path 9 (M much larger than N, JOBU='A', JOBVT='S'
+* or 'A')
+* M left singular vectors to be computed in U and
+* N right singular vectors to be computed in VT
+*
+ IF( LWORK.GE.N*N+MAX( N+M, 4*N, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is N by N
+*
+ LDWRKU = N
+ END IF
+ ITAU = IU + LDWRKU*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need N*N+2*N, prefer N*N+N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need N*N+N+M, prefer N*N+N+M*NB)
+*
+ CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ WORK( IU+1 ), LDWRKU )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to VT
+* (Workspace: need N*N+4*N, prefer N*N+3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', N, N, WORK( IU ), LDWRKU, VT,
+ $ LDVT )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (Workspace: need N*N+4*N, prefer N*N+3*N+N*NB)
+*
+ CALL DORGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (Workspace: need N*N+4*N-1,
+* prefer N*N+3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in VT
+* (Workspace: need N*N+BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, N, 0, S, WORK( IE ), VT,
+ $ LDVT, WORK( IU ), LDWRKU, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply Q in U by left singular vectors of R in
+* WORK(IU), storing result in A
+* (Workspace: need N*N)
+*
+ CALL DGEMM( 'N', 'N', M, N, N, ONE, U, LDU,
+ $ WORK( IU ), LDWRKU, ZERO, A, LDA )
+*
+* Copy left singular vectors of A from A to U
+*
+ CALL DLACPY( 'F', M, N, A, LDA, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (Workspace: need 2*N, prefer N+N*NB)
+*
+ CALL DGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (Workspace: need N+M, prefer N+M*NB)
+*
+ CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R from A to VT, zeroing out below it
+*
+ CALL DLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL DLASET( 'L', N-1, N-1, ZERO, ZERO,
+ $ VT( 2, 1 ), LDVT )
+ IE = ITAU
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT
+* (Workspace: need 4*N, prefer 3*N+2*N*NB)
+*
+ CALL DGEBRD( N, N, VT, LDVT, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in VT
+* (Workspace: need 3*N+M, prefer 3*N+M*NB)
+*
+ CALL DORMBR( 'Q', 'R', 'N', M, N, N, VT, LDVT,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, N, M, 0, S, WORK( IE ), VT,
+ $ LDVT, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ END IF
+*
+ END IF
+*
+ ELSE
+*
+* M .LT. MNTHR
+*
+* Path 10 (M at least N, but not much larger)
+* Reduce to bidiagonal form without QR decomposition
+*
+ IE = 1
+ ITAUQ = IE + N
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize A
+* (Workspace: need 3*N+M, prefer 3*N+(M+N)*NB)
+*
+ CALL DGEBRD( M, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ IF( WNTUAS ) THEN
+*
+* If left singular vectors desired in U, copy result to U
+* and generate left bidiagonalizing vectors in U
+* (Workspace: need 3*N+NCU, prefer 3*N+NCU*NB)
+*
+ CALL DLACPY( 'L', M, N, A, LDA, U, LDU )
+ IF( WNTUS )
+ $ NCU = N
+ IF( WNTUA )
+ $ NCU = M
+ CALL DORGBR( 'Q', M, NCU, N, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVAS ) THEN
+*
+* If right singular vectors desired in VT, copy result to
+* VT and generate right bidiagonalizing vectors in VT
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ CALL DORGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTUO ) THEN
+*
+* If left singular vectors desired in A, generate left
+* bidiagonalizing vectors in A
+* (Workspace: need 4*N, prefer 3*N+N*NB)
+*
+ CALL DORGBR( 'Q', M, N, N, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVO ) THEN
+*
+* If right singular vectors desired in A, generate right
+* bidiagonalizing vectors in A
+* (Workspace: need 4*N-1, prefer 3*N+(N-1)*NB)
+*
+ CALL DORGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IWORK = IE + N
+ IF( WNTUAS .OR. WNTUO )
+ $ NRU = M
+ IF( WNTUN )
+ $ NRU = 0
+ IF( WNTVAS .OR. WNTVO )
+ $ NCVT = N
+ IF( WNTVN )
+ $ NCVT = 0
+ IF( ( .NOT.WNTUO ) .AND. ( .NOT.WNTVO ) ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, NCVT, NRU, 0, S, WORK( IE ), VT,
+ $ LDVT, U, LDU, DUM, 1, WORK( IWORK ), INFO )
+ ELSE IF( ( .NOT.WNTUO ) .AND. WNTVO ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, NCVT, NRU, 0, S, WORK( IE ), A, LDA,
+ $ U, LDU, DUM, 1, WORK( IWORK ), INFO )
+ ELSE
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in A and computing right singular
+* vectors in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', N, NCVT, NRU, 0, S, WORK( IE ), VT,
+ $ LDVT, A, LDA, DUM, 1, WORK( IWORK ), INFO )
+ END IF
+*
+ END IF
+*
+ ELSE
+*
+* A has more columns than rows. If A has sufficiently more
+* columns than rows, first reduce using the LQ decomposition (if
+* sufficient workspace available)
+*
+ IF( N.GE.MNTHR ) THEN
+*
+ IF( WNTVN ) THEN
+*
+* Path 1t(N much larger than M, JOBVT='N')
+* No right singular vectors to be computed
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Zero out above L
+*
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, A( 1, 2 ), LDA )
+ IE = 1
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in A
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ IF( WNTUO .OR. WNTUAS ) THEN
+*
+* If left singular vectors desired, generate Q
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IWORK = IE + M
+ NRU = 0
+ IF( WNTUO .OR. WNTUAS )
+ $ NRU = M
+*
+* Perform bidiagonal QR iteration, computing left singular
+* vectors of A in A if desired
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, 0, NRU, 0, S, WORK( IE ), DUM, 1, A,
+ $ LDA, DUM, 1, WORK( IWORK ), INFO )
+*
+* If left singular vectors desired in U, copy them there
+*
+ IF( WNTUAS )
+ $ CALL DLACPY( 'F', M, M, A, LDA, U, LDU )
+*
+ ELSE IF( WNTVO .AND. WNTUN ) THEN
+*
+* Path 2t(N much larger than M, JOBU='N', JOBVT='O')
+* M right singular vectors to be overwritten on A and
+* no left singular vectors to be computed
+*
+ IF( LWORK.GE.M*M+MAX( 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N+M )+LDA*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N+M )+M*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by CHUNK and WORK(IR) is M by M
+*
+ LDWRKU = M
+ CHUNK = ( LWORK-M*M-M ) / M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IR) and zero out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IR ), LDWRKR )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IR+LDWRKR ), LDWRKR )
+*
+* Generate Q in A
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DORGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IR)
+* (Workspace: need M*M+4*M, prefer M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IR ), LDWRKR, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing L
+* (Workspace: need M*M+4*M-1, prefer M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of L in WORK(IR)
+* (Workspace: need M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, 0, 0, S, WORK( IE ),
+ $ WORK( IR ), LDWRKR, DUM, 1, DUM, 1,
+ $ WORK( IWORK ), INFO )
+ IU = IE + M
+*
+* Multiply right singular vectors of L in WORK(IR) by Q
+* in A, storing result in WORK(IU) and copying to A
+* (Workspace: need M*M+2*M, prefer M*M+M*N+M)
+*
+ DO 30 I = 1, N, CHUNK
+ BLK = MIN( N-I+1, CHUNK )
+ CALL DGEMM( 'N', 'N', M, BLK, M, ONE, WORK( IR ),
+ $ LDWRKR, A( 1, I ), LDA, ZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL DLACPY( 'F', M, BLK, WORK( IU ), LDWRKU,
+ $ A( 1, I ), LDA )
+ 30 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ IE = 1
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize A
+* (Workspace: need 3*M+N, prefer 3*M+(M+N)*NB)
+*
+ CALL DGEBRD( M, N, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing A
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'P', M, N, M, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'L', M, N, 0, 0, S, WORK( IE ), A, LDA,
+ $ DUM, 1, DUM, 1, WORK( IWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVO .AND. WNTUAS ) THEN
+*
+* Path 3t(N much larger than M, JOBU='S' or 'A', JOBVT='O')
+* M right singular vectors to be overwritten on A and
+* M left singular vectors to be computed in U
+*
+ IF( LWORK.GE.M*M+MAX( 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N+M )+LDA*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N+M )+M*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by CHUNK and WORK(IR) is M by M
+*
+ LDWRKU = M
+ CHUNK = ( LWORK-M*M-M ) / M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing about above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, U( 1, 2 ),
+ $ LDU )
+*
+* Generate Q in A
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DORGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U, copying result to WORK(IR)
+* (Workspace: need M*M+4*M, prefer M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, U, LDU, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, M, U, LDU, WORK( IR ), LDWRKR )
+*
+* Generate right vectors bidiagonalizing L in WORK(IR)
+* (Workspace: need M*M+4*M-1, prefer M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing L in U
+* (Workspace: need M*M+4*M, prefer M*M+3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in U, and computing right
+* singular vectors of L in WORK(IR)
+* (Workspace: need M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, M, 0, S, WORK( IE ),
+ $ WORK( IR ), LDWRKR, U, LDU, DUM, 1,
+ $ WORK( IWORK ), INFO )
+ IU = IE + M
+*
+* Multiply right singular vectors of L in WORK(IR) by Q
+* in A, storing result in WORK(IU) and copying to A
+* (Workspace: need M*M+2*M, prefer M*M+M*N+M))
+*
+ DO 40 I = 1, N, CHUNK
+ BLK = MIN( N-I+1, CHUNK )
+ CALL DGEMM( 'N', 'N', M, BLK, M, ONE, WORK( IR ),
+ $ LDWRKR, A( 1, I ), LDA, ZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL DLACPY( 'F', M, BLK, WORK( IU ), LDWRKU,
+ $ A( 1, I ), LDA )
+ 40 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, U( 1, 2 ),
+ $ LDU )
+*
+* Generate Q in A
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DORGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, U, LDU, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right vectors bidiagonalizing L by Q in A
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, U, LDU,
+ $ WORK( ITAUP ), A, LDA, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing L in U
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, M, 0, S, WORK( IE ), A, LDA,
+ $ U, LDU, DUM, 1, WORK( IWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVS ) THEN
+*
+ IF( WNTUN ) THEN
+*
+* Path 4t(N much larger than M, JOBU='N', JOBVT='S')
+* M right singular vectors to be computed in VT and
+* no left singular vectors to be computed
+*
+ IF( LWORK.GE.M*M+MAX( 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IR) is LDA by M
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is M by M
+*
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IR), zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IR+LDWRKR ), LDWRKR )
+*
+* Generate Q in A
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DORGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IR)
+* (Workspace: need M*M+4*M, prefer M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IR ), LDWRKR, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing L in
+* WORK(IR)
+* (Workspace: need M*M+4*M, prefer M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of L in WORK(IR)
+* (Workspace: need M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, 0, 0, S, WORK( IE ),
+ $ WORK( IR ), LDWRKR, DUM, 1, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IR) by
+* Q in A, storing result in VT
+* (Workspace: need M*M)
+*
+ CALL DGEMM( 'N', 'N', M, N, M, ONE, WORK( IR ),
+ $ LDWRKR, A, LDA, ZERO, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy result to VT
+*
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DORGLQ( M, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, A( 1, 2 ),
+ $ LDA )
+*
+* Bidiagonalize L in A
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right vectors bidiagonalizing L by Q in VT
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, 0, 0, S, WORK( IE ), VT,
+ $ LDVT, DUM, 1, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUO ) THEN
+*
+* Path 5t(N much larger than M, JOBU='O', JOBVT='S')
+* M right singular vectors to be computed in VT and
+* M left singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*M*M+MAX( 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+M )*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by M and WORK(IR) is M by M
+*
+ LDWRKU = M
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need 2*M*M+2*M, prefer 2*M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out below it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+*
+* Generate Q in A
+* (Workspace: need 2*M*M+2*M, prefer 2*M*M+M+M*NB)
+*
+ CALL DORGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to
+* WORK(IR)
+* (Workspace: need 2*M*M+4*M,
+* prefer 2*M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, M, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (Workspace: need 2*M*M+4*M-1,
+* prefer 2*M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in WORK(IR)
+* (Workspace: need 2*M*M+4*M, prefer 2*M*M+3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in WORK(IR) and computing
+* right singular vectors of L in WORK(IU)
+* (Workspace: need 2*M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, M, 0, S, WORK( IE ),
+ $ WORK( IU ), LDWRKU, WORK( IR ),
+ $ LDWRKR, DUM, 1, WORK( IWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in A, storing result in VT
+* (Workspace: need M*M)
+*
+ CALL DGEMM( 'N', 'N', M, N, M, ONE, WORK( IU ),
+ $ LDWRKU, A, LDA, ZERO, VT, LDVT )
+*
+* Copy left singular vectors of L to A
+* (Workspace: need M*M)
+*
+ CALL DLACPY( 'F', M, M, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DORGLQ( M, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, A( 1, 2 ),
+ $ LDA )
+*
+* Bidiagonalize L in A
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right vectors bidiagonalizing L by Q in VT
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors of L in A
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, compute left
+* singular vectors of A in A and compute right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, M, 0, S, WORK( IE ), VT,
+ $ LDVT, A, LDA, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUAS ) THEN
+*
+* Path 6t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='S')
+* M right singular vectors to be computed in VT and
+* M left singular vectors to be computed in U
+*
+ IF( LWORK.GE.M*M+MAX( 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IU) is LDA by N
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is LDA by M
+*
+ LDWRKU = M
+ END IF
+ ITAU = IU + LDWRKU*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+*
+* Generate Q in A
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DORGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to U
+* (Workspace: need M*M+4*M, prefer M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, M, WORK( IU ), LDWRKU, U,
+ $ LDU )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (Workspace: need M*M+4*M-1,
+* prefer M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (Workspace: need M*M+4*M, prefer M*M+3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in U and computing right
+* singular vectors of L in WORK(IU)
+* (Workspace: need M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, M, 0, S, WORK( IE ),
+ $ WORK( IU ), LDWRKU, U, LDU, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in A, storing result in VT
+* (Workspace: need M*M)
+*
+ CALL DGEMM( 'N', 'N', M, N, M, ONE, WORK( IU ),
+ $ LDWRKU, A, LDA, ZERO, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DORGLQ( M, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, U( 1, 2 ),
+ $ LDU )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, U, LDU, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in U by Q
+* in VT
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, U, LDU,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, M, 0, S, WORK( IE ), VT,
+ $ LDVT, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ END IF
+*
+ ELSE IF( WNTVA ) THEN
+*
+ IF( WNTUN ) THEN
+*
+* Path 7t(N much larger than M, JOBU='N', JOBVT='A')
+* N right singular vectors to be computed in VT and
+* no left singular vectors to be computed
+*
+ IF( LWORK.GE.M*M+MAX( N+M, 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IR) is LDA by M
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is M by M
+*
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Copy L to WORK(IR), zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IR+LDWRKR ), LDWRKR )
+*
+* Generate Q in VT
+* (Workspace: need M*M+M+N, prefer M*M+M+N*NB)
+*
+ CALL DORGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IR)
+* (Workspace: need M*M+4*M, prefer M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IR ), LDWRKR, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in WORK(IR)
+* (Workspace: need M*M+4*M-1,
+* prefer M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of L in WORK(IR)
+* (Workspace: need M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, 0, 0, S, WORK( IE ),
+ $ WORK( IR ), LDWRKR, DUM, 1, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IR) by
+* Q in VT, storing result in A
+* (Workspace: need M*M)
+*
+ CALL DGEMM( 'N', 'N', M, N, M, ONE, WORK( IR ),
+ $ LDWRKR, VT, LDVT, ZERO, A, LDA )
+*
+* Copy right singular vectors of A from A to VT
+*
+ CALL DLACPY( 'F', M, N, A, LDA, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need M+N, prefer M+N*NB)
+*
+ CALL DORGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, A( 1, 2 ),
+ $ LDA )
+*
+* Bidiagonalize L in A
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in A by Q
+* in VT
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, 0, 0, S, WORK( IE ), VT,
+ $ LDVT, DUM, 1, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUO ) THEN
+*
+* Path 8t(N much larger than M, JOBU='O', JOBVT='A')
+* N right singular vectors to be computed in VT and
+* M left singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*M*M+MAX( N+M, 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+M )*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by M and WORK(IR) is M by M
+*
+ LDWRKU = M
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need 2*M*M+2*M, prefer 2*M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need 2*M*M+M+N, prefer 2*M*M+M+N*NB)
+*
+ CALL DORGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to
+* WORK(IR)
+* (Workspace: need 2*M*M+4*M,
+* prefer 2*M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, M, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (Workspace: need 2*M*M+4*M-1,
+* prefer 2*M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in WORK(IR)
+* (Workspace: need 2*M*M+4*M, prefer 2*M*M+3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in WORK(IR) and computing
+* right singular vectors of L in WORK(IU)
+* (Workspace: need 2*M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, M, 0, S, WORK( IE ),
+ $ WORK( IU ), LDWRKU, WORK( IR ),
+ $ LDWRKR, DUM, 1, WORK( IWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in VT, storing result in A
+* (Workspace: need M*M)
+*
+ CALL DGEMM( 'N', 'N', M, N, M, ONE, WORK( IU ),
+ $ LDWRKU, VT, LDVT, ZERO, A, LDA )
+*
+* Copy right singular vectors of A from A to VT
+*
+ CALL DLACPY( 'F', M, N, A, LDA, VT, LDVT )
+*
+* Copy left singular vectors of A from WORK(IR) to A
+*
+ CALL DLACPY( 'F', M, M, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need M+N, prefer M+N*NB)
+*
+ CALL DORGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, A( 1, 2 ),
+ $ LDA )
+*
+* Bidiagonalize L in A
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, A, LDA, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in A by Q
+* in VT
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in A
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A and computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, M, 0, S, WORK( IE ), VT,
+ $ LDVT, A, LDA, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUAS ) THEN
+*
+* Path 9t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='A')
+* N right singular vectors to be computed in VT and
+* M left singular vectors to be computed in U
+*
+ IF( LWORK.GE.M*M+MAX( N+M, 4*M, BDSPAC ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IU) is LDA by M
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is M by M
+*
+ LDWRKU = M
+ END IF
+ ITAU = IU + LDWRKU*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need M*M+2*M, prefer M*M+M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need M*M+M+N, prefer M*M+M+N*NB)
+*
+ CALL DORGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to U
+* (Workspace: need M*M+4*M, prefer M*M+3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'L', M, M, WORK( IU ), LDWRKU, U,
+ $ LDU )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (Workspace: need M*M+4*M, prefer M*M+3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (Workspace: need M*M+4*M, prefer M*M+3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in U and computing right
+* singular vectors of L in WORK(IU)
+* (Workspace: need M*M+BDSPAC)
+*
+ CALL DBDSQR( 'U', M, M, M, 0, S, WORK( IE ),
+ $ WORK( IU ), LDWRKU, U, LDU, DUM, 1,
+ $ WORK( IWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in VT, storing result in A
+* (Workspace: need M*M)
+*
+ CALL DGEMM( 'N', 'N', M, N, M, ONE, WORK( IU ),
+ $ LDWRKU, VT, LDVT, ZERO, A, LDA )
+*
+* Copy right singular vectors of A from A to VT
+*
+ CALL DLACPY( 'F', M, N, A, LDA, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (Workspace: need 2*M, prefer M+M*NB)
+*
+ CALL DGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (Workspace: need M+N, prefer M+N*NB)
+*
+ CALL DORGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing out above it
+*
+ CALL DLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, U( 1, 2 ),
+ $ LDU )
+ IE = ITAU
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U
+* (Workspace: need 4*M, prefer 3*M+2*M*NB)
+*
+ CALL DGEBRD( M, M, U, LDU, S, WORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in U by Q
+* in VT
+* (Workspace: need 3*M+N, prefer 3*M+N*NB)
+*
+ CALL DORMBR( 'P', 'L', 'T', M, N, M, U, LDU,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'U', M, N, M, 0, S, WORK( IE ), VT,
+ $ LDVT, U, LDU, DUM, 1, WORK( IWORK ),
+ $ INFO )
+*
+ END IF
+*
+ END IF
+*
+ END IF
+*
+ ELSE
+*
+* N .LT. MNTHR
+*
+* Path 10t(N greater than M, but not much larger)
+* Reduce to bidiagonal form without LQ decomposition
+*
+ IE = 1
+ ITAUQ = IE + M
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize A
+* (Workspace: need 3*M+N, prefer 3*M+(M+N)*NB)
+*
+ CALL DGEBRD( M, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ IF( WNTUAS ) THEN
+*
+* If left singular vectors desired in U, copy result to U
+* and generate left bidiagonalizing vectors in U
+* (Workspace: need 4*M-1, prefer 3*M+(M-1)*NB)
+*
+ CALL DLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL DORGBR( 'Q', M, M, N, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVAS ) THEN
+*
+* If right singular vectors desired in VT, copy result to
+* VT and generate right bidiagonalizing vectors in VT
+* (Workspace: need 3*M+NRVT, prefer 3*M+NRVT*NB)
+*
+ CALL DLACPY( 'U', M, N, A, LDA, VT, LDVT )
+ IF( WNTVA )
+ $ NRVT = N
+ IF( WNTVS )
+ $ NRVT = M
+ CALL DORGBR( 'P', NRVT, N, M, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTUO ) THEN
+*
+* If left singular vectors desired in A, generate left
+* bidiagonalizing vectors in A
+* (Workspace: need 4*M-1, prefer 3*M+(M-1)*NB)
+*
+ CALL DORGBR( 'Q', M, M, N, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVO ) THEN
+*
+* If right singular vectors desired in A, generate right
+* bidiagonalizing vectors in A
+* (Workspace: need 4*M, prefer 3*M+M*NB)
+*
+ CALL DORGBR( 'P', M, N, M, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IWORK = IE + M
+ IF( WNTUAS .OR. WNTUO )
+ $ NRU = M
+ IF( WNTUN )
+ $ NRU = 0
+ IF( WNTVAS .OR. WNTVO )
+ $ NCVT = N
+ IF( WNTVN )
+ $ NCVT = 0
+ IF( ( .NOT.WNTUO ) .AND. ( .NOT.WNTVO ) ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'L', M, NCVT, NRU, 0, S, WORK( IE ), VT,
+ $ LDVT, U, LDU, DUM, 1, WORK( IWORK ), INFO )
+ ELSE IF( ( .NOT.WNTUO ) .AND. WNTVO ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in A
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'L', M, NCVT, NRU, 0, S, WORK( IE ), A, LDA,
+ $ U, LDU, DUM, 1, WORK( IWORK ), INFO )
+ ELSE
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in A and computing right singular
+* vectors in VT
+* (Workspace: need BDSPAC)
+*
+ CALL DBDSQR( 'L', M, NCVT, NRU, 0, S, WORK( IE ), VT,
+ $ LDVT, A, LDA, DUM, 1, WORK( IWORK ), INFO )
+ END IF
+*
+ END IF
+*
+ END IF
+*
+* If DBDSQR failed to converge, copy unconverged superdiagonals
+* to WORK( 2:MINMN )
+*
+ IF( INFO.NE.0 ) THEN
+ IF( IE.GT.2 ) THEN
+ DO 50 I = 1, MINMN - 1
+ WORK( I+1 ) = WORK( I+IE-1 )
+ 50 CONTINUE
+ END IF
+ IF( IE.LT.2 ) THEN
+ DO 60 I = MINMN - 1, 1, -1
+ WORK( I+1 ) = WORK( I+IE-1 )
+ 60 CONTINUE
+ END IF
+ END IF
+*
+* Undo scaling if necessary
+*
+ IF( ISCL.EQ.1 ) THEN
+ IF( ANRM.GT.BIGNUM )
+ $ CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN, 1, S, MINMN,
+ $ IERR )
+ IF( INFO.NE.0 .AND. ANRM.GT.BIGNUM )
+ $ CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN-1, 1, WORK( 2 ),
+ $ MINMN, IERR )
+ IF( ANRM.LT.SMLNUM )
+ $ CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN, 1, S, MINMN,
+ $ IERR )
+ IF( INFO.NE.0 .AND. ANRM.LT.SMLNUM )
+ $ CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN-1, 1, WORK( 2 ),
+ $ MINMN, IERR )
+ END IF
+*
+* Return optimal workspace in WORK(1)
+*
+ WORK( 1 ) = MAXWRK
+*
+ RETURN
+*
+* End of DGESVD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgesvx.f b/2.3-1/src/fortran/lapack/dgesvx.f
new file mode 100644
index 00000000..0645a20c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgesvx.f
@@ -0,0 +1,479 @@
+ SUBROUTINE DGESVX( FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV,
+ $ EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR,
+ $ WORK, IWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER EQUED, FACT, TRANS
+ INTEGER INFO, LDA, LDAF, LDB, LDX, N, NRHS
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), AF( LDAF, * ), B( LDB, * ),
+ $ BERR( * ), C( * ), FERR( * ), R( * ),
+ $ WORK( * ), X( LDX, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGESVX uses the LU factorization to compute the solution to a real
+* system of linear equations
+* A * X = B,
+* where A is an N-by-N matrix and X and B are N-by-NRHS matrices.
+*
+* Error bounds on the solution and a condition estimate are also
+* provided.
+*
+* Description
+* ===========
+*
+* The following steps are performed:
+*
+* 1. If FACT = 'E', real scaling factors are computed to equilibrate
+* the system:
+* TRANS = 'N': diag(R)*A*diag(C) *inv(diag(C))*X = diag(R)*B
+* TRANS = 'T': (diag(R)*A*diag(C))**T *inv(diag(R))*X = diag(C)*B
+* TRANS = 'C': (diag(R)*A*diag(C))**H *inv(diag(R))*X = diag(C)*B
+* Whether or not the system will be equilibrated depends on the
+* scaling of the matrix A, but if equilibration is used, A is
+* overwritten by diag(R)*A*diag(C) and B by diag(R)*B (if TRANS='N')
+* or diag(C)*B (if TRANS = 'T' or 'C').
+*
+* 2. If FACT = 'N' or 'E', the LU decomposition is used to factor the
+* matrix A (after equilibration if FACT = 'E') as
+* A = P * L * U,
+* where P is a permutation matrix, L is a unit lower triangular
+* matrix, and U is upper triangular.
+*
+* 3. If some U(i,i)=0, so that U is exactly singular, then the routine
+* returns with INFO = i. Otherwise, the factored form of A is used
+* to estimate the condition number of the matrix A. If the
+* reciprocal of the condition number is less than machine precision,
+* INFO = N+1 is returned as a warning, but the routine still goes on
+* to solve for X and compute error bounds as described below.
+*
+* 4. The system of equations is solved for X using the factored form
+* of A.
+*
+* 5. Iterative refinement is applied to improve the computed solution
+* matrix and calculate error bounds and backward error estimates
+* for it.
+*
+* 6. If equilibration was used, the matrix X is premultiplied by
+* diag(C) (if TRANS = 'N') or diag(R) (if TRANS = 'T' or 'C') so
+* that it solves the original system before equilibration.
+*
+* Arguments
+* =========
+*
+* FACT (input) CHARACTER*1
+* Specifies whether or not the factored form of the matrix A is
+* supplied on entry, and if not, whether the matrix A should be
+* equilibrated before it is factored.
+* = 'F': On entry, AF and IPIV contain the factored form of A.
+* If EQUED is not 'N', the matrix A has been
+* equilibrated with scaling factors given by R and C.
+* A, AF, and IPIV are not modified.
+* = 'N': The matrix A will be copied to AF and factored.
+* = 'E': The matrix A will be equilibrated if necessary, then
+* copied to AF and factored.
+*
+* TRANS (input) CHARACTER*1
+* Specifies the form of the system of equations:
+* = 'N': A * X = B (No transpose)
+* = 'T': A**T * X = B (Transpose)
+* = 'C': A**H * X = B (Transpose)
+*
+* N (input) INTEGER
+* The number of linear equations, i.e., the order of the
+* matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrices B and X. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the N-by-N matrix A. If FACT = 'F' and EQUED is
+* not 'N', then A must have been equilibrated by the scaling
+* factors in R and/or C. A is not modified if FACT = 'F' or
+* 'N', or if FACT = 'E' and EQUED = 'N' on exit.
+*
+* On exit, if EQUED .ne. 'N', A is scaled as follows:
+* EQUED = 'R': A := diag(R) * A
+* EQUED = 'C': A := A * diag(C)
+* EQUED = 'B': A := diag(R) * A * diag(C).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* AF (input or output) DOUBLE PRECISION array, dimension (LDAF,N)
+* If FACT = 'F', then AF is an input argument and on entry
+* contains the factors L and U from the factorization
+* A = P*L*U as computed by DGETRF. If EQUED .ne. 'N', then
+* AF is the factored form of the equilibrated matrix A.
+*
+* If FACT = 'N', then AF is an output argument and on exit
+* returns the factors L and U from the factorization A = P*L*U
+* of the original matrix A.
+*
+* If FACT = 'E', then AF is an output argument and on exit
+* returns the factors L and U from the factorization A = P*L*U
+* of the equilibrated matrix A (see the description of A for
+* the form of the equilibrated matrix).
+*
+* LDAF (input) INTEGER
+* The leading dimension of the array AF. LDAF >= max(1,N).
+*
+* IPIV (input or output) INTEGER array, dimension (N)
+* If FACT = 'F', then IPIV is an input argument and on entry
+* contains the pivot indices from the factorization A = P*L*U
+* as computed by DGETRF; row i of the matrix was interchanged
+* with row IPIV(i).
+*
+* If FACT = 'N', then IPIV is an output argument and on exit
+* contains the pivot indices from the factorization A = P*L*U
+* of the original matrix A.
+*
+* If FACT = 'E', then IPIV is an output argument and on exit
+* contains the pivot indices from the factorization A = P*L*U
+* of the equilibrated matrix A.
+*
+* EQUED (input or output) CHARACTER*1
+* Specifies the form of equilibration that was done.
+* = 'N': No equilibration (always true if FACT = 'N').
+* = 'R': Row equilibration, i.e., A has been premultiplied by
+* diag(R).
+* = 'C': Column equilibration, i.e., A has been postmultiplied
+* by diag(C).
+* = 'B': Both row and column equilibration, i.e., A has been
+* replaced by diag(R) * A * diag(C).
+* EQUED is an input argument if FACT = 'F'; otherwise, it is an
+* output argument.
+*
+* R (input or output) DOUBLE PRECISION array, dimension (N)
+* The row scale factors for A. If EQUED = 'R' or 'B', A is
+* multiplied on the left by diag(R); if EQUED = 'N' or 'C', R
+* is not accessed. R is an input argument if FACT = 'F';
+* otherwise, R is an output argument. If FACT = 'F' and
+* EQUED = 'R' or 'B', each element of R must be positive.
+*
+* C (input or output) DOUBLE PRECISION array, dimension (N)
+* The column scale factors for A. If EQUED = 'C' or 'B', A is
+* multiplied on the right by diag(C); if EQUED = 'N' or 'R', C
+* is not accessed. C is an input argument if FACT = 'F';
+* otherwise, C is an output argument. If FACT = 'F' and
+* EQUED = 'C' or 'B', each element of C must be positive.
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the N-by-NRHS right hand side matrix B.
+* On exit,
+* if EQUED = 'N', B is not modified;
+* if TRANS = 'N' and EQUED = 'R' or 'B', B is overwritten by
+* diag(R)*B;
+* if TRANS = 'T' or 'C' and EQUED = 'C' or 'B', B is
+* overwritten by diag(C)*B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* X (output) DOUBLE PRECISION array, dimension (LDX,NRHS)
+* If INFO = 0 or INFO = N+1, the N-by-NRHS solution matrix X
+* to the original system of equations. Note that A and B are
+* modified on exit if EQUED .ne. 'N', and the solution to the
+* equilibrated system is inv(diag(C))*X if TRANS = 'N' and
+* EQUED = 'C' or 'B', or inv(diag(R))*X if TRANS = 'T' or 'C'
+* and EQUED = 'R' or 'B'.
+*
+* LDX (input) INTEGER
+* The leading dimension of the array X. LDX >= max(1,N).
+*
+* RCOND (output) DOUBLE PRECISION
+* The estimate of the reciprocal condition number of the matrix
+* A after equilibration (if done). If RCOND is less than the
+* machine precision (in particular, if RCOND = 0), the matrix
+* is singular to working precision. This condition is
+* indicated by a return code of INFO > 0.
+*
+* FERR (output) DOUBLE PRECISION array, dimension (NRHS)
+* The estimated forward error bound for each solution vector
+* X(j) (the j-th column of the solution matrix X).
+* If XTRUE is the true solution corresponding to X(j), FERR(j)
+* is an estimated upper bound for the magnitude of the largest
+* element in (X(j) - XTRUE) divided by the magnitude of the
+* largest element in X(j). The estimate is as reliable as
+* the estimate for RCOND, and is almost always a slight
+* overestimate of the true error.
+*
+* BERR (output) DOUBLE PRECISION array, dimension (NRHS)
+* The componentwise relative backward error of each solution
+* vector X(j) (i.e., the smallest relative change in
+* any element of A or B that makes X(j) an exact solution).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (4*N)
+* On exit, WORK(1) contains the reciprocal pivot growth
+* factor norm(A)/norm(U). The "max absolute element" norm is
+* used. If WORK(1) is much less than 1, then the stability
+* of the LU factorization of the (equilibrated) matrix A
+* could be poor. This also means that the solution X, condition
+* estimator RCOND, and forward error bound FERR could be
+* unreliable. If factorization fails with 0<INFO<=N, then
+* WORK(1) contains the reciprocal pivot growth factor for the
+* leading INFO columns of A.
+*
+* IWORK (workspace) INTEGER array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, and i is
+* <= N: U(i,i) is exactly zero. The factorization has
+* been completed, but the factor U is exactly
+* singular, so the solution and error bounds
+* could not be computed. RCOND = 0 is returned.
+* = N+1: U is nonsingular, but RCOND is less than machine
+* precision, meaning that the matrix is singular
+* to working precision. Nevertheless, the
+* solution and error bounds are computed because
+* there are a number of situations where the
+* computed solution can be more accurate than the
+* value of RCOND would suggest.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL COLEQU, EQUIL, NOFACT, NOTRAN, ROWEQU
+ CHARACTER NORM
+ INTEGER I, INFEQU, J
+ DOUBLE PRECISION AMAX, ANORM, BIGNUM, COLCND, RCMAX, RCMIN,
+ $ ROWCND, RPVGRW, SMLNUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, DLANGE, DLANTR
+ EXTERNAL LSAME, DLAMCH, DLANGE, DLANTR
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGECON, DGEEQU, DGERFS, DGETRF, DGETRS, DLACPY,
+ $ DLAQGE, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+ NOFACT = LSAME( FACT, 'N' )
+ EQUIL = LSAME( FACT, 'E' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ IF( NOFACT .OR. EQUIL ) THEN
+ EQUED = 'N'
+ ROWEQU = .FALSE.
+ COLEQU = .FALSE.
+ ELSE
+ ROWEQU = LSAME( EQUED, 'R' ) .OR. LSAME( EQUED, 'B' )
+ COLEQU = LSAME( EQUED, 'C' ) .OR. LSAME( EQUED, 'B' )
+ SMLNUM = DLAMCH( 'Safe minimum' )
+ BIGNUM = ONE / SMLNUM
+ END IF
+*
+* Test the input parameters.
+*
+ IF( .NOT.NOFACT .AND. .NOT.EQUIL .AND. .NOT.LSAME( FACT, 'F' ) )
+ $ THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT.
+ $ LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDAF.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ ELSE IF( LSAME( FACT, 'F' ) .AND. .NOT.
+ $ ( ROWEQU .OR. COLEQU .OR. LSAME( EQUED, 'N' ) ) ) THEN
+ INFO = -10
+ ELSE
+ IF( ROWEQU ) THEN
+ RCMIN = BIGNUM
+ RCMAX = ZERO
+ DO 10 J = 1, N
+ RCMIN = MIN( RCMIN, R( J ) )
+ RCMAX = MAX( RCMAX, R( J ) )
+ 10 CONTINUE
+ IF( RCMIN.LE.ZERO ) THEN
+ INFO = -11
+ ELSE IF( N.GT.0 ) THEN
+ ROWCND = MAX( RCMIN, SMLNUM ) / MIN( RCMAX, BIGNUM )
+ ELSE
+ ROWCND = ONE
+ END IF
+ END IF
+ IF( COLEQU .AND. INFO.EQ.0 ) THEN
+ RCMIN = BIGNUM
+ RCMAX = ZERO
+ DO 20 J = 1, N
+ RCMIN = MIN( RCMIN, C( J ) )
+ RCMAX = MAX( RCMAX, C( J ) )
+ 20 CONTINUE
+ IF( RCMIN.LE.ZERO ) THEN
+ INFO = -12
+ ELSE IF( N.GT.0 ) THEN
+ COLCND = MAX( RCMIN, SMLNUM ) / MIN( RCMAX, BIGNUM )
+ ELSE
+ COLCND = ONE
+ END IF
+ END IF
+ IF( INFO.EQ.0 ) THEN
+ IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -14
+ ELSE IF( LDX.LT.MAX( 1, N ) ) THEN
+ INFO = -16
+ END IF
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGESVX', -INFO )
+ RETURN
+ END IF
+*
+ IF( EQUIL ) THEN
+*
+* Compute row and column scalings to equilibrate the matrix A.
+*
+ CALL DGEEQU( N, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFEQU )
+ IF( INFEQU.EQ.0 ) THEN
+*
+* Equilibrate the matrix.
+*
+ CALL DLAQGE( N, N, A, LDA, R, C, ROWCND, COLCND, AMAX,
+ $ EQUED )
+ ROWEQU = LSAME( EQUED, 'R' ) .OR. LSAME( EQUED, 'B' )
+ COLEQU = LSAME( EQUED, 'C' ) .OR. LSAME( EQUED, 'B' )
+ END IF
+ END IF
+*
+* Scale the right hand side.
+*
+ IF( NOTRAN ) THEN
+ IF( ROWEQU ) THEN
+ DO 40 J = 1, NRHS
+ DO 30 I = 1, N
+ B( I, J ) = R( I )*B( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE IF( COLEQU ) THEN
+ DO 60 J = 1, NRHS
+ DO 50 I = 1, N
+ B( I, J ) = C( I )*B( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+ IF( NOFACT .OR. EQUIL ) THEN
+*
+* Compute the LU factorization of A.
+*
+ CALL DLACPY( 'Full', N, N, A, LDA, AF, LDAF )
+ CALL DGETRF( N, N, AF, LDAF, IPIV, INFO )
+*
+* Return if INFO is non-zero.
+*
+ IF( INFO.GT.0 ) THEN
+*
+* Compute the reciprocal pivot growth factor of the
+* leading rank-deficient INFO columns of A.
+*
+ RPVGRW = DLANTR( 'M', 'U', 'N', INFO, INFO, AF, LDAF,
+ $ WORK )
+ IF( RPVGRW.EQ.ZERO ) THEN
+ RPVGRW = ONE
+ ELSE
+ RPVGRW = DLANGE( 'M', N, INFO, A, LDA, WORK ) / RPVGRW
+ END IF
+ WORK( 1 ) = RPVGRW
+ RCOND = ZERO
+ RETURN
+ END IF
+ END IF
+*
+* Compute the norm of the matrix A and the
+* reciprocal pivot growth factor RPVGRW.
+*
+ IF( NOTRAN ) THEN
+ NORM = '1'
+ ELSE
+ NORM = 'I'
+ END IF
+ ANORM = DLANGE( NORM, N, N, A, LDA, WORK )
+ RPVGRW = DLANTR( 'M', 'U', 'N', N, N, AF, LDAF, WORK )
+ IF( RPVGRW.EQ.ZERO ) THEN
+ RPVGRW = ONE
+ ELSE
+ RPVGRW = DLANGE( 'M', N, N, A, LDA, WORK ) / RPVGRW
+ END IF
+*
+* Compute the reciprocal of the condition number of A.
+*
+ CALL DGECON( NORM, N, AF, LDAF, ANORM, RCOND, WORK, IWORK, INFO )
+*
+* Compute the solution matrix X.
+*
+ CALL DLACPY( 'Full', N, NRHS, B, LDB, X, LDX )
+ CALL DGETRS( TRANS, N, NRHS, AF, LDAF, IPIV, X, LDX, INFO )
+*
+* Use iterative refinement to improve the computed solution and
+* compute error bounds and backward error estimates for it.
+*
+ CALL DGERFS( TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X,
+ $ LDX, FERR, BERR, WORK, IWORK, INFO )
+*
+* Transform the solution matrix X to a solution of the original
+* system.
+*
+ IF( NOTRAN ) THEN
+ IF( COLEQU ) THEN
+ DO 80 J = 1, NRHS
+ DO 70 I = 1, N
+ X( I, J ) = C( I )*X( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+ DO 90 J = 1, NRHS
+ FERR( J ) = FERR( J ) / COLCND
+ 90 CONTINUE
+ END IF
+ ELSE IF( ROWEQU ) THEN
+ DO 110 J = 1, NRHS
+ DO 100 I = 1, N
+ X( I, J ) = R( I )*X( I, J )
+ 100 CONTINUE
+ 110 CONTINUE
+ DO 120 J = 1, NRHS
+ FERR( J ) = FERR( J ) / ROWCND
+ 120 CONTINUE
+ END IF
+*
+ WORK( 1 ) = RPVGRW
+*
+* Set INFO = N+1 if the matrix is singular to working precision.
+*
+ IF( RCOND.LT.DLAMCH( 'Epsilon' ) )
+ $ INFO = N + 1
+ RETURN
+*
+* End of DGESVX
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgetc2.f b/2.3-1/src/fortran/lapack/dgetc2.f
new file mode 100644
index 00000000..5842b213
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgetc2.f
@@ -0,0 +1,146 @@
+ SUBROUTINE DGETC2( N, A, LDA, IPIV, JPIV, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), JPIV( * )
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGETC2 computes an LU factorization with complete pivoting of the
+* n-by-n matrix A. The factorization has the form A = P * L * U * Q,
+* where P and Q are permutation matrices, L is lower triangular with
+* unit diagonal elements and U is upper triangular.
+*
+* This is the Level 2 BLAS algorithm.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the n-by-n matrix A to be factored.
+* On exit, the factors L and U from the factorization
+* A = P*L*U*Q; the unit diagonal elements of L are not stored.
+* If U(k, k) appears to be less than SMIN, U(k, k) is given the
+* value of SMIN, i.e., giving a nonsingular perturbed system.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (output) INTEGER array, dimension(N).
+* The pivot indices; for 1 <= i <= N, row i of the
+* matrix has been interchanged with row IPIV(i).
+*
+* JPIV (output) INTEGER array, dimension(N).
+* The pivot indices; for 1 <= j <= N, column j of the
+* matrix has been interchanged with column JPIV(j).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* > 0: if INFO = k, U(k, k) is likely to produce owerflow if
+* we try to solve for x in Ax = b. So U is perturbed to
+* avoid the overflow.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IP, IPV, J, JP, JPV
+ DOUBLE PRECISION BIGNUM, EPS, SMIN, SMLNUM, XMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGER, DSWAP
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Executable Statements ..
+*
+* Set constants to control overflow
+*
+ INFO = 0
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Factorize A using complete pivoting.
+* Set pivots less than SMIN to SMIN.
+*
+ DO 40 I = 1, N - 1
+*
+* Find max element in matrix A
+*
+ XMAX = ZERO
+ DO 20 IP = I, N
+ DO 10 JP = I, N
+ IF( ABS( A( IP, JP ) ).GE.XMAX ) THEN
+ XMAX = ABS( A( IP, JP ) )
+ IPV = IP
+ JPV = JP
+ END IF
+ 10 CONTINUE
+ 20 CONTINUE
+ IF( I.EQ.1 )
+ $ SMIN = MAX( EPS*XMAX, SMLNUM )
+*
+* Swap rows
+*
+ IF( IPV.NE.I )
+ $ CALL DSWAP( N, A( IPV, 1 ), LDA, A( I, 1 ), LDA )
+ IPIV( I ) = IPV
+*
+* Swap columns
+*
+ IF( JPV.NE.I )
+ $ CALL DSWAP( N, A( 1, JPV ), 1, A( 1, I ), 1 )
+ JPIV( I ) = JPV
+*
+* Check for singularity
+*
+ IF( ABS( A( I, I ) ).LT.SMIN ) THEN
+ INFO = I
+ A( I, I ) = SMIN
+ END IF
+ DO 30 J = I + 1, N
+ A( J, I ) = A( J, I ) / A( I, I )
+ 30 CONTINUE
+ CALL DGER( N-I, N-I, -ONE, A( I+1, I ), 1, A( I, I+1 ), LDA,
+ $ A( I+1, I+1 ), LDA )
+ 40 CONTINUE
+*
+ IF( ABS( A( N, N ) ).LT.SMIN ) THEN
+ INFO = N
+ A( N, N ) = SMIN
+ END IF
+*
+ RETURN
+*
+* End of DGETC2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgetf2.f b/2.3-1/src/fortran/lapack/dgetf2.f
new file mode 100644
index 00000000..573b1408
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgetf2.f
@@ -0,0 +1,147 @@
+ SUBROUTINE DGETF2( M, N, A, LDA, IPIV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGETF2 computes an LU factorization of a general m-by-n matrix A
+* using partial pivoting with row interchanges.
+*
+* The factorization has the form
+* A = P * L * U
+* where P is a permutation matrix, L is lower triangular with unit
+* diagonal elements (lower trapezoidal if m > n), and U is upper
+* triangular (upper trapezoidal if m < n).
+*
+* This is the right-looking Level 2 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n matrix to be factored.
+* On exit, the factors L and U from the factorization
+* A = P*L*U; the unit diagonal elements of L are not stored.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* IPIV (output) INTEGER array, dimension (min(M,N))
+* The pivot indices; for 1 <= i <= min(M,N), row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+* > 0: if INFO = k, U(k,k) is exactly zero. The factorization
+* has been completed, but the factor U is exactly
+* singular, and division by zero will occur if it is used
+* to solve a system of equations.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION SFMIN
+ INTEGER I, J, JP
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ INTEGER IDAMAX
+ EXTERNAL DLAMCH, IDAMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGER, DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGETF2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+* Compute machine safe minimum
+*
+ SFMIN = DLAMCH('S')
+*
+ DO 10 J = 1, MIN( M, N )
+*
+* Find pivot and test for singularity.
+*
+ JP = J - 1 + IDAMAX( M-J+1, A( J, J ), 1 )
+ IPIV( J ) = JP
+ IF( A( JP, J ).NE.ZERO ) THEN
+*
+* Apply the interchange to columns 1:N.
+*
+ IF( JP.NE.J )
+ $ CALL DSWAP( N, A( J, 1 ), LDA, A( JP, 1 ), LDA )
+*
+* Compute elements J+1:M of J-th column.
+*
+ IF( J.LT.M ) THEN
+ IF( ABS(A( J, J )) .GE. SFMIN ) THEN
+ CALL DSCAL( M-J, ONE / A( J, J ), A( J+1, J ), 1 )
+ ELSE
+ DO 20 I = 1, M-J
+ A( J+I, J ) = A( J+I, J ) / A( J, J )
+ 20 CONTINUE
+ END IF
+ END IF
+*
+ ELSE IF( INFO.EQ.0 ) THEN
+*
+ INFO = J
+ END IF
+*
+ IF( J.LT.MIN( M, N ) ) THEN
+*
+* Update trailing submatrix.
+*
+ CALL DGER( M-J, N-J, -ONE, A( J+1, J ), 1, A( J, J+1 ), LDA,
+ $ A( J+1, J+1 ), LDA )
+ END IF
+ 10 CONTINUE
+ RETURN
+*
+* End of DGETF2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgetrf.f b/2.3-1/src/fortran/lapack/dgetrf.f
new file mode 100644
index 00000000..c5b9df33
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgetrf.f
@@ -0,0 +1,159 @@
+ SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGETRF computes an LU factorization of a general M-by-N matrix A
+* using partial pivoting with row interchanges.
+*
+* The factorization has the form
+* A = P * L * U
+* where P is a permutation matrix, L is lower triangular with unit
+* diagonal elements (lower trapezoidal if m > n), and U is upper
+* triangular (upper trapezoidal if m < n).
+*
+* This is the right-looking Level 3 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix to be factored.
+* On exit, the factors L and U from the factorization
+* A = P*L*U; the unit diagonal elements of L are not stored.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* IPIV (output) INTEGER array, dimension (min(M,N))
+* The pivot indices; for 1 <= i <= min(M,N), row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, U(i,i) is exactly zero. The factorization
+* has been completed, but the factor U is exactly
+* singular, and division by zero will occur if it is used
+* to solve a system of equations.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IINFO, J, JB, NB
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DGETF2, DLASWP, DTRSM, XERBLA
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGETRF', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+* Determine the block size for this environment.
+*
+ NB = ILAENV( 1, 'DGETRF', ' ', M, N, -1, -1 )
+ IF( NB.LE.1 .OR. NB.GE.MIN( M, N ) ) THEN
+*
+* Use unblocked code.
+*
+ CALL DGETF2( M, N, A, LDA, IPIV, INFO )
+ ELSE
+*
+* Use blocked code.
+*
+ DO 20 J = 1, MIN( M, N ), NB
+ JB = MIN( MIN( M, N )-J+1, NB )
+*
+* Factor diagonal and subdiagonal blocks and test for exact
+* singularity.
+*
+ CALL DGETF2( M-J+1, JB, A( J, J ), LDA, IPIV( J ), IINFO )
+*
+* Adjust INFO and the pivot indices.
+*
+ IF( INFO.EQ.0 .AND. IINFO.GT.0 )
+ $ INFO = IINFO + J - 1
+ DO 10 I = J, MIN( M, J+JB-1 )
+ IPIV( I ) = J - 1 + IPIV( I )
+ 10 CONTINUE
+*
+* Apply interchanges to columns 1:J-1.
+*
+ CALL DLASWP( J-1, A, LDA, J, J+JB-1, IPIV, 1 )
+*
+ IF( J+JB.LE.N ) THEN
+*
+* Apply interchanges to columns J+JB:N.
+*
+ CALL DLASWP( N-J-JB+1, A( 1, J+JB ), LDA, J, J+JB-1,
+ $ IPIV, 1 )
+*
+* Compute block row of U.
+*
+ CALL DTRSM( 'Left', 'Lower', 'No transpose', 'Unit', JB,
+ $ N-J-JB+1, ONE, A( J, J ), LDA, A( J, J+JB ),
+ $ LDA )
+ IF( J+JB.LE.M ) THEN
+*
+* Update trailing submatrix.
+*
+ CALL DGEMM( 'No transpose', 'No transpose', M-J-JB+1,
+ $ N-J-JB+1, JB, -ONE, A( J+JB, J ), LDA,
+ $ A( J, J+JB ), LDA, ONE, A( J+JB, J+JB ),
+ $ LDA )
+ END IF
+ END IF
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of DGETRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgetri.f b/2.3-1/src/fortran/lapack/dgetri.f
new file mode 100644
index 00000000..9f1c1182
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgetri.f
@@ -0,0 +1,192 @@
+ SUBROUTINE DGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGETRI computes the inverse of a matrix using the LU factorization
+* computed by DGETRF.
+*
+* This method inverts U and then computes inv(A) by solving the system
+* inv(A)*L = inv(U) for inv(A).
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the factors L and U from the factorization
+* A = P*L*U as computed by DGETRF.
+* On exit, if INFO = 0, the inverse of the original matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* The pivot indices from DGETRF; for 1<=i<=N, row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO=0, then WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimal performance LWORK >= N*NB, where NB is
+* the optimal blocksize returned by ILAENV.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, U(i,i) is exactly zero; the matrix is
+* singular and its inverse could not be computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IWS, J, JB, JJ, JP, LDWORK, LWKOPT, NB,
+ $ NBMIN, NN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DGEMV, DSWAP, DTRSM, DTRTRI, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ NB = ILAENV( 1, 'DGETRI', ' ', N, -1, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -3
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGETRI', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Form inv(U). If INFO > 0 from DTRTRI, then U is singular,
+* and the inverse is not computed.
+*
+ CALL DTRTRI( 'Upper', 'Non-unit', N, A, LDA, INFO )
+ IF( INFO.GT.0 )
+ $ RETURN
+*
+ NBMIN = 2
+ LDWORK = N
+ IF( NB.GT.1 .AND. NB.LT.N ) THEN
+ IWS = MAX( LDWORK*NB, 1 )
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DGETRI', ' ', N, -1, -1, -1 ) )
+ END IF
+ ELSE
+ IWS = N
+ END IF
+*
+* Solve the equation inv(A)*L = inv(U) for inv(A).
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.N ) THEN
+*
+* Use unblocked code.
+*
+ DO 20 J = N, 1, -1
+*
+* Copy current column of L to WORK and replace with zeros.
+*
+ DO 10 I = J + 1, N
+ WORK( I ) = A( I, J )
+ A( I, J ) = ZERO
+ 10 CONTINUE
+*
+* Compute current column of inv(A).
+*
+ IF( J.LT.N )
+ $ CALL DGEMV( 'No transpose', N, N-J, -ONE, A( 1, J+1 ),
+ $ LDA, WORK( J+1 ), 1, ONE, A( 1, J ), 1 )
+ 20 CONTINUE
+ ELSE
+*
+* Use blocked code.
+*
+ NN = ( ( N-1 ) / NB )*NB + 1
+ DO 50 J = NN, 1, -NB
+ JB = MIN( NB, N-J+1 )
+*
+* Copy current block column of L to WORK and replace with
+* zeros.
+*
+ DO 40 JJ = J, J + JB - 1
+ DO 30 I = JJ + 1, N
+ WORK( I+( JJ-J )*LDWORK ) = A( I, JJ )
+ A( I, JJ ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* Compute current block column of inv(A).
+*
+ IF( J+JB.LE.N )
+ $ CALL DGEMM( 'No transpose', 'No transpose', N, JB,
+ $ N-J-JB+1, -ONE, A( 1, J+JB ), LDA,
+ $ WORK( J+JB ), LDWORK, ONE, A( 1, J ), LDA )
+ CALL DTRSM( 'Right', 'Lower', 'No transpose', 'Unit', N, JB,
+ $ ONE, WORK( J ), LDWORK, A( 1, J ), LDA )
+ 50 CONTINUE
+ END IF
+*
+* Apply column interchanges.
+*
+ DO 60 J = N - 1, 1, -1
+ JP = IPIV( J )
+ IF( JP.NE.J )
+ $ CALL DSWAP( N, A( 1, J ), 1, A( 1, JP ), 1 )
+ 60 CONTINUE
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DGETRI
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgetrs.f b/2.3-1/src/fortran/lapack/dgetrs.f
new file mode 100644
index 00000000..b7d17b0a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgetrs.f
@@ -0,0 +1,149 @@
+ SUBROUTINE DGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER INFO, LDA, LDB, N, NRHS
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGETRS solves a system of linear equations
+* A * X = B or A' * X = B
+* with a general N-by-N matrix A using the LU factorization computed
+* by DGETRF.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* Specifies the form of the system of equations:
+* = 'N': A * X = B (No transpose)
+* = 'T': A'* X = B (Transpose)
+* = 'C': A'* X = B (Conjugate transpose = Transpose)
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The factors L and U from the factorization A = P*L*U
+* as computed by DGETRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* The pivot indices from DGETRF; for 1<=i<=N, row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the right hand side matrix B.
+* On exit, the solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASWP, DTRSM, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT.
+ $ LSAME( TRANS, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGETRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. NRHS.EQ.0 )
+ $ RETURN
+*
+ IF( NOTRAN ) THEN
+*
+* Solve A * X = B.
+*
+* Apply row interchanges to the right hand sides.
+*
+ CALL DLASWP( NRHS, B, LDB, 1, N, IPIV, 1 )
+*
+* Solve L*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Lower', 'No transpose', 'Unit', N, NRHS,
+ $ ONE, A, LDA, B, LDB )
+*
+* Solve U*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', N,
+ $ NRHS, ONE, A, LDA, B, LDB )
+ ELSE
+*
+* Solve A' * X = B.
+*
+* Solve U'*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Upper', 'Transpose', 'Non-unit', N, NRHS,
+ $ ONE, A, LDA, B, LDB )
+*
+* Solve L'*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Lower', 'Transpose', 'Unit', N, NRHS, ONE,
+ $ A, LDA, B, LDB )
+*
+* Apply row interchanges to the solution vectors.
+*
+ CALL DLASWP( NRHS, B, LDB, 1, N, IPIV, -1 )
+ END IF
+*
+ RETURN
+*
+* End of DGETRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dggbak.f b/2.3-1/src/fortran/lapack/dggbak.f
new file mode 100644
index 00000000..8ed9fbd4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dggbak.f
@@ -0,0 +1,220 @@
+ SUBROUTINE DGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
+ $ LDV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB, SIDE
+ INTEGER IHI, ILO, INFO, LDV, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION LSCALE( * ), RSCALE( * ), V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGGBAK forms the right or left eigenvectors of a real generalized
+* eigenvalue problem A*x = lambda*B*x, by backward transformation on
+* the computed eigenvectors of the balanced pair of matrices output by
+* DGGBAL.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the type of backward transformation required:
+* = 'N': do nothing, return immediately;
+* = 'P': do backward transformation for permutation only;
+* = 'S': do backward transformation for scaling only;
+* = 'B': do backward transformations for both permutation and
+* scaling.
+* JOB must be the same as the argument JOB supplied to DGGBAL.
+*
+* SIDE (input) CHARACTER*1
+* = 'R': V contains right eigenvectors;
+* = 'L': V contains left eigenvectors.
+*
+* N (input) INTEGER
+* The number of rows of the matrix V. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* The integers ILO and IHI determined by DGGBAL.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* LSCALE (input) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and/or scaling factors applied
+* to the left side of A and B, as returned by DGGBAL.
+*
+* RSCALE (input) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and/or scaling factors applied
+* to the right side of A and B, as returned by DGGBAL.
+*
+* M (input) INTEGER
+* The number of columns of the matrix V. M >= 0.
+*
+* V (input/output) DOUBLE PRECISION array, dimension (LDV,M)
+* On entry, the matrix of right or left eigenvectors to be
+* transformed, as returned by DTGEVC.
+* On exit, V is overwritten by the transformed eigenvectors.
+*
+* LDV (input) INTEGER
+* The leading dimension of the matrix V. LDV >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* See R.C. Ward, Balancing the generalized eigenvalue problem,
+* SIAM J. Sci. Stat. Comp. 2 (1981), 141-152.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LEFTV, RIGHTV
+ INTEGER I, K
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ RIGHTV = LSAME( SIDE, 'R' )
+ LEFTV = LSAME( SIDE, 'L' )
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 ) THEN
+ INFO = -4
+ ELSE IF( N.EQ.0 .AND. IHI.EQ.0 .AND. ILO.NE.1 ) THEN
+ INFO = -4
+ ELSE IF( N.GT.0 .AND. ( IHI.LT.ILO .OR. IHI.GT.MAX( 1, N ) ) )
+ $ THEN
+ INFO = -5
+ ELSE IF( N.EQ.0 .AND. ILO.EQ.1 .AND. IHI.NE.0 ) THEN
+ INFO = -5
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -8
+ ELSE IF( LDV.LT.MAX( 1, N ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGGBAK', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( M.EQ.0 )
+ $ RETURN
+ IF( LSAME( JOB, 'N' ) )
+ $ RETURN
+*
+ IF( ILO.EQ.IHI )
+ $ GO TO 30
+*
+* Backward balance
+*
+ IF( LSAME( JOB, 'S' ) .OR. LSAME( JOB, 'B' ) ) THEN
+*
+* Backward transformation on right eigenvectors
+*
+ IF( RIGHTV ) THEN
+ DO 10 I = ILO, IHI
+ CALL DSCAL( M, RSCALE( I ), V( I, 1 ), LDV )
+ 10 CONTINUE
+ END IF
+*
+* Backward transformation on left eigenvectors
+*
+ IF( LEFTV ) THEN
+ DO 20 I = ILO, IHI
+ CALL DSCAL( M, LSCALE( I ), V( I, 1 ), LDV )
+ 20 CONTINUE
+ END IF
+ END IF
+*
+* Backward permutation
+*
+ 30 CONTINUE
+ IF( LSAME( JOB, 'P' ) .OR. LSAME( JOB, 'B' ) ) THEN
+*
+* Backward permutation on right eigenvectors
+*
+ IF( RIGHTV ) THEN
+ IF( ILO.EQ.1 )
+ $ GO TO 50
+*
+ DO 40 I = ILO - 1, 1, -1
+ K = RSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 40
+ CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 40 CONTINUE
+*
+ 50 CONTINUE
+ IF( IHI.EQ.N )
+ $ GO TO 70
+ DO 60 I = IHI + 1, N
+ K = RSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 60
+ CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 60 CONTINUE
+ END IF
+*
+* Backward permutation on left eigenvectors
+*
+ 70 CONTINUE
+ IF( LEFTV ) THEN
+ IF( ILO.EQ.1 )
+ $ GO TO 90
+ DO 80 I = ILO - 1, 1, -1
+ K = LSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 80
+ CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 80 CONTINUE
+*
+ 90 CONTINUE
+ IF( IHI.EQ.N )
+ $ GO TO 110
+ DO 100 I = IHI + 1, N
+ K = LSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 100
+ CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 100 CONTINUE
+ END IF
+ END IF
+*
+ 110 CONTINUE
+*
+ RETURN
+*
+* End of DGGBAK
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dggbal.f b/2.3-1/src/fortran/lapack/dggbal.f
new file mode 100644
index 00000000..2034880a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dggbal.f
@@ -0,0 +1,469 @@
+ SUBROUTINE DGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE,
+ $ RSCALE, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB
+ INTEGER IHI, ILO, INFO, LDA, LDB, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), LSCALE( * ),
+ $ RSCALE( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGGBAL balances a pair of general real matrices (A,B). This
+* involves, first, permuting A and B by similarity transformations to
+* isolate eigenvalues in the first 1 to ILO$-$1 and last IHI+1 to N
+* elements on the diagonal; and second, applying a diagonal similarity
+* transformation to rows and columns ILO to IHI to make the rows
+* and columns as close in norm as possible. Both steps are optional.
+*
+* Balancing may reduce the 1-norm of the matrices, and improve the
+* accuracy of the computed eigenvalues and/or eigenvectors in the
+* generalized eigenvalue problem A*x = lambda*B*x.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the operations to be performed on A and B:
+* = 'N': none: simply set ILO = 1, IHI = N, LSCALE(I) = 1.0
+* and RSCALE(I) = 1.0 for i = 1,...,N.
+* = 'P': permute only;
+* = 'S': scale only;
+* = 'B': both permute and scale.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the input matrix A.
+* On exit, A is overwritten by the balanced matrix.
+* If JOB = 'N', A is not referenced.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+* On entry, the input matrix B.
+* On exit, B is overwritten by the balanced matrix.
+* If JOB = 'N', B is not referenced.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* ILO (output) INTEGER
+* IHI (output) INTEGER
+* ILO and IHI are set to integers such that on exit
+* A(i,j) = 0 and B(i,j) = 0 if i > j and
+* j = 1,...,ILO-1 or i = IHI+1,...,N.
+* If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*
+* LSCALE (output) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and scaling factors applied
+* to the left side of A and B. If P(j) is the index of the
+* row interchanged with row j, and D(j)
+* is the scaling factor applied to row j, then
+* LSCALE(j) = P(j) for J = 1,...,ILO-1
+* = D(j) for J = ILO,...,IHI
+* = P(j) for J = IHI+1,...,N.
+* The order in which the interchanges are made is N to IHI+1,
+* then 1 to ILO-1.
+*
+* RSCALE (output) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and scaling factors applied
+* to the right side of A and B. If P(j) is the index of the
+* column interchanged with column j, and D(j)
+* is the scaling factor applied to column j, then
+* LSCALE(j) = P(j) for J = 1,...,ILO-1
+* = D(j) for J = ILO,...,IHI
+* = P(j) for J = IHI+1,...,N.
+* The order in which the interchanges are made is N to IHI+1,
+* then 1 to ILO-1.
+*
+* WORK (workspace) REAL array, dimension (lwork)
+* lwork must be at least max(1,6*N) when JOB = 'S' or 'B', and
+* at least 1 when JOB = 'N' or 'P'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* See R.C. WARD, Balancing the generalized eigenvalue problem,
+* SIAM J. Sci. Stat. Comp. 2 (1981), 141-152.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, HALF, ONE
+ PARAMETER ( ZERO = 0.0D+0, HALF = 0.5D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION THREE, SCLFAC
+ PARAMETER ( THREE = 3.0D+0, SCLFAC = 1.0D+1 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ICAB, IFLOW, IP1, IR, IRAB, IT, J, JC, JP1,
+ $ K, KOUNT, L, LCAB, LM1, LRAB, LSFMAX, LSFMIN,
+ $ M, NR, NRP2
+ DOUBLE PRECISION ALPHA, BASL, BETA, CAB, CMAX, COEF, COEF2,
+ $ COEF5, COR, EW, EWC, GAMMA, PGAMMA, RAB, SFMAX,
+ $ SFMIN, SUM, T, TA, TB, TC
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DDOT, DLAMCH
+ EXTERNAL LSAME, IDAMAX, DDOT, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, INT, LOG10, MAX, MIN, SIGN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGGBAL', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ ILO = 1
+ IHI = N
+ RETURN
+ END IF
+*
+ IF( N.EQ.1 ) THEN
+ ILO = 1
+ IHI = N
+ LSCALE( 1 ) = ONE
+ RSCALE( 1 ) = ONE
+ RETURN
+ END IF
+*
+ IF( LSAME( JOB, 'N' ) ) THEN
+ ILO = 1
+ IHI = N
+ DO 10 I = 1, N
+ LSCALE( I ) = ONE
+ RSCALE( I ) = ONE
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ K = 1
+ L = N
+ IF( LSAME( JOB, 'S' ) )
+ $ GO TO 190
+*
+ GO TO 30
+*
+* Permute the matrices A and B to isolate the eigenvalues.
+*
+* Find row with one nonzero in columns 1 through L
+*
+ 20 CONTINUE
+ L = LM1
+ IF( L.NE.1 )
+ $ GO TO 30
+*
+ RSCALE( 1 ) = ONE
+ LSCALE( 1 ) = ONE
+ GO TO 190
+*
+ 30 CONTINUE
+ LM1 = L - 1
+ DO 80 I = L, 1, -1
+ DO 40 J = 1, LM1
+ JP1 = J + 1
+ IF( A( I, J ).NE.ZERO .OR. B( I, J ).NE.ZERO )
+ $ GO TO 50
+ 40 CONTINUE
+ J = L
+ GO TO 70
+*
+ 50 CONTINUE
+ DO 60 J = JP1, L
+ IF( A( I, J ).NE.ZERO .OR. B( I, J ).NE.ZERO )
+ $ GO TO 80
+ 60 CONTINUE
+ J = JP1 - 1
+*
+ 70 CONTINUE
+ M = L
+ IFLOW = 1
+ GO TO 160
+ 80 CONTINUE
+ GO TO 100
+*
+* Find column with one nonzero in rows K through N
+*
+ 90 CONTINUE
+ K = K + 1
+*
+ 100 CONTINUE
+ DO 150 J = K, L
+ DO 110 I = K, LM1
+ IP1 = I + 1
+ IF( A( I, J ).NE.ZERO .OR. B( I, J ).NE.ZERO )
+ $ GO TO 120
+ 110 CONTINUE
+ I = L
+ GO TO 140
+ 120 CONTINUE
+ DO 130 I = IP1, L
+ IF( A( I, J ).NE.ZERO .OR. B( I, J ).NE.ZERO )
+ $ GO TO 150
+ 130 CONTINUE
+ I = IP1 - 1
+ 140 CONTINUE
+ M = K
+ IFLOW = 2
+ GO TO 160
+ 150 CONTINUE
+ GO TO 190
+*
+* Permute rows M and I
+*
+ 160 CONTINUE
+ LSCALE( M ) = I
+ IF( I.EQ.M )
+ $ GO TO 170
+ CALL DSWAP( N-K+1, A( I, K ), LDA, A( M, K ), LDA )
+ CALL DSWAP( N-K+1, B( I, K ), LDB, B( M, K ), LDB )
+*
+* Permute columns M and J
+*
+ 170 CONTINUE
+ RSCALE( M ) = J
+ IF( J.EQ.M )
+ $ GO TO 180
+ CALL DSWAP( L, A( 1, J ), 1, A( 1, M ), 1 )
+ CALL DSWAP( L, B( 1, J ), 1, B( 1, M ), 1 )
+*
+ 180 CONTINUE
+ GO TO ( 20, 90 )IFLOW
+*
+ 190 CONTINUE
+ ILO = K
+ IHI = L
+*
+ IF( LSAME( JOB, 'P' ) ) THEN
+ DO 195 I = ILO, IHI
+ LSCALE( I ) = ONE
+ RSCALE( I ) = ONE
+ 195 CONTINUE
+ RETURN
+ END IF
+*
+ IF( ILO.EQ.IHI )
+ $ RETURN
+*
+* Balance the submatrix in rows ILO to IHI.
+*
+ NR = IHI - ILO + 1
+ DO 200 I = ILO, IHI
+ RSCALE( I ) = ZERO
+ LSCALE( I ) = ZERO
+*
+ WORK( I ) = ZERO
+ WORK( I+N ) = ZERO
+ WORK( I+2*N ) = ZERO
+ WORK( I+3*N ) = ZERO
+ WORK( I+4*N ) = ZERO
+ WORK( I+5*N ) = ZERO
+ 200 CONTINUE
+*
+* Compute right side vector in resulting linear equations
+*
+ BASL = LOG10( SCLFAC )
+ DO 240 I = ILO, IHI
+ DO 230 J = ILO, IHI
+ TB = B( I, J )
+ TA = A( I, J )
+ IF( TA.EQ.ZERO )
+ $ GO TO 210
+ TA = LOG10( ABS( TA ) ) / BASL
+ 210 CONTINUE
+ IF( TB.EQ.ZERO )
+ $ GO TO 220
+ TB = LOG10( ABS( TB ) ) / BASL
+ 220 CONTINUE
+ WORK( I+4*N ) = WORK( I+4*N ) - TA - TB
+ WORK( J+5*N ) = WORK( J+5*N ) - TA - TB
+ 230 CONTINUE
+ 240 CONTINUE
+*
+ COEF = ONE / DBLE( 2*NR )
+ COEF2 = COEF*COEF
+ COEF5 = HALF*COEF2
+ NRP2 = NR + 2
+ BETA = ZERO
+ IT = 1
+*
+* Start generalized conjugate gradient iteration
+*
+ 250 CONTINUE
+*
+ GAMMA = DDOT( NR, WORK( ILO+4*N ), 1, WORK( ILO+4*N ), 1 ) +
+ $ DDOT( NR, WORK( ILO+5*N ), 1, WORK( ILO+5*N ), 1 )
+*
+ EW = ZERO
+ EWC = ZERO
+ DO 260 I = ILO, IHI
+ EW = EW + WORK( I+4*N )
+ EWC = EWC + WORK( I+5*N )
+ 260 CONTINUE
+*
+ GAMMA = COEF*GAMMA - COEF2*( EW**2+EWC**2 ) - COEF5*( EW-EWC )**2
+ IF( GAMMA.EQ.ZERO )
+ $ GO TO 350
+ IF( IT.NE.1 )
+ $ BETA = GAMMA / PGAMMA
+ T = COEF5*( EWC-THREE*EW )
+ TC = COEF5*( EW-THREE*EWC )
+*
+ CALL DSCAL( NR, BETA, WORK( ILO ), 1 )
+ CALL DSCAL( NR, BETA, WORK( ILO+N ), 1 )
+*
+ CALL DAXPY( NR, COEF, WORK( ILO+4*N ), 1, WORK( ILO+N ), 1 )
+ CALL DAXPY( NR, COEF, WORK( ILO+5*N ), 1, WORK( ILO ), 1 )
+*
+ DO 270 I = ILO, IHI
+ WORK( I ) = WORK( I ) + TC
+ WORK( I+N ) = WORK( I+N ) + T
+ 270 CONTINUE
+*
+* Apply matrix to vector
+*
+ DO 300 I = ILO, IHI
+ KOUNT = 0
+ SUM = ZERO
+ DO 290 J = ILO, IHI
+ IF( A( I, J ).EQ.ZERO )
+ $ GO TO 280
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( J )
+ 280 CONTINUE
+ IF( B( I, J ).EQ.ZERO )
+ $ GO TO 290
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( J )
+ 290 CONTINUE
+ WORK( I+2*N ) = DBLE( KOUNT )*WORK( I+N ) + SUM
+ 300 CONTINUE
+*
+ DO 330 J = ILO, IHI
+ KOUNT = 0
+ SUM = ZERO
+ DO 320 I = ILO, IHI
+ IF( A( I, J ).EQ.ZERO )
+ $ GO TO 310
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( I+N )
+ 310 CONTINUE
+ IF( B( I, J ).EQ.ZERO )
+ $ GO TO 320
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( I+N )
+ 320 CONTINUE
+ WORK( J+3*N ) = DBLE( KOUNT )*WORK( J ) + SUM
+ 330 CONTINUE
+*
+ SUM = DDOT( NR, WORK( ILO+N ), 1, WORK( ILO+2*N ), 1 ) +
+ $ DDOT( NR, WORK( ILO ), 1, WORK( ILO+3*N ), 1 )
+ ALPHA = GAMMA / SUM
+*
+* Determine correction to current iteration
+*
+ CMAX = ZERO
+ DO 340 I = ILO, IHI
+ COR = ALPHA*WORK( I+N )
+ IF( ABS( COR ).GT.CMAX )
+ $ CMAX = ABS( COR )
+ LSCALE( I ) = LSCALE( I ) + COR
+ COR = ALPHA*WORK( I )
+ IF( ABS( COR ).GT.CMAX )
+ $ CMAX = ABS( COR )
+ RSCALE( I ) = RSCALE( I ) + COR
+ 340 CONTINUE
+ IF( CMAX.LT.HALF )
+ $ GO TO 350
+*
+ CALL DAXPY( NR, -ALPHA, WORK( ILO+2*N ), 1, WORK( ILO+4*N ), 1 )
+ CALL DAXPY( NR, -ALPHA, WORK( ILO+3*N ), 1, WORK( ILO+5*N ), 1 )
+*
+ PGAMMA = GAMMA
+ IT = IT + 1
+ IF( IT.LE.NRP2 )
+ $ GO TO 250
+*
+* End generalized conjugate gradient iteration
+*
+ 350 CONTINUE
+ SFMIN = DLAMCH( 'S' )
+ SFMAX = ONE / SFMIN
+ LSFMIN = INT( LOG10( SFMIN ) / BASL+ONE )
+ LSFMAX = INT( LOG10( SFMAX ) / BASL )
+ DO 360 I = ILO, IHI
+ IRAB = IDAMAX( N-ILO+1, A( I, ILO ), LDA )
+ RAB = ABS( A( I, IRAB+ILO-1 ) )
+ IRAB = IDAMAX( N-ILO+1, B( I, ILO ), LDB )
+ RAB = MAX( RAB, ABS( B( I, IRAB+ILO-1 ) ) )
+ LRAB = INT( LOG10( RAB+SFMIN ) / BASL+ONE )
+ IR = LSCALE( I ) + SIGN( HALF, LSCALE( I ) )
+ IR = MIN( MAX( IR, LSFMIN ), LSFMAX, LSFMAX-LRAB )
+ LSCALE( I ) = SCLFAC**IR
+ ICAB = IDAMAX( IHI, A( 1, I ), 1 )
+ CAB = ABS( A( ICAB, I ) )
+ ICAB = IDAMAX( IHI, B( 1, I ), 1 )
+ CAB = MAX( CAB, ABS( B( ICAB, I ) ) )
+ LCAB = INT( LOG10( CAB+SFMIN ) / BASL+ONE )
+ JC = RSCALE( I ) + SIGN( HALF, RSCALE( I ) )
+ JC = MIN( MAX( JC, LSFMIN ), LSFMAX, LSFMAX-LCAB )
+ RSCALE( I ) = SCLFAC**JC
+ 360 CONTINUE
+*
+* Row scaling of matrices A and B
+*
+ DO 370 I = ILO, IHI
+ CALL DSCAL( N-ILO+1, LSCALE( I ), A( I, ILO ), LDA )
+ CALL DSCAL( N-ILO+1, LSCALE( I ), B( I, ILO ), LDB )
+ 370 CONTINUE
+*
+* Column scaling of matrices A and B
+*
+ DO 380 J = ILO, IHI
+ CALL DSCAL( IHI, RSCALE( J ), A( 1, J ), 1 )
+ CALL DSCAL( IHI, RSCALE( J ), B( 1, J ), 1 )
+ 380 CONTINUE
+*
+ RETURN
+*
+* End of DGGBAL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgges.f b/2.3-1/src/fortran/lapack/dgges.f
new file mode 100644
index 00000000..ce29aa52
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgges.f
@@ -0,0 +1,550 @@
+ SUBROUTINE DGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+ $ SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR,
+ $ LDVSR, WORK, LWORK, BWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* June 30, 1999
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVSL, JOBVSR, SORT
+ INTEGER INFO, LDA, LDB, LDVSL, LDVSR, LWORK, N, SDIM
+* ..
+* .. Array Arguments ..
+ LOGICAL BWORK( * )
+ DOUBLE PRECISION A( LDA, * ), ALPHAI( * ), ALPHAR( * ),
+ $ B( LDB, * ), BETA( * ), VSL( LDVSL, * ),
+ $ VSR( LDVSR, * ), WORK( * )
+* ..
+* .. Function Arguments ..
+ LOGICAL DELCTG
+ EXTERNAL DELCTG
+* ..
+*
+* Purpose
+* =======
+*
+* DGGES computes for a pair of N-by-N real nonsymmetric matrices (A,B),
+* the generalized eigenvalues, the generalized real Schur form (S,T),
+* optionally, the left and/or right matrices of Schur vectors (VSL and
+* VSR). This gives the generalized Schur factorization
+*
+* (A,B) = ( (VSL)*S*(VSR)**T, (VSL)*T*(VSR)**T )
+*
+* Optionally, it also orders the eigenvalues so that a selected cluster
+* of eigenvalues appears in the leading diagonal blocks of the upper
+* quasi-triangular matrix S and the upper triangular matrix T.The
+* leading columns of VSL and VSR then form an orthonormal basis for the
+* corresponding left and right eigenspaces (deflating subspaces).
+*
+* (If only the generalized eigenvalues are needed, use the driver
+* DGGEV instead, which is faster.)
+*
+* A generalized eigenvalue for a pair of matrices (A,B) is a scalar w
+* or a ratio alpha/beta = w, such that A - w*B is singular. It is
+* usually represented as the pair (alpha,beta), as there is a
+* reasonable interpretation for beta=0 or both being zero.
+*
+* A pair of matrices (S,T) is in generalized real Schur form if T is
+* upper triangular with non-negative diagonal and S is block upper
+* triangular with 1-by-1 and 2-by-2 blocks. 1-by-1 blocks correspond
+* to real generalized eigenvalues, while 2-by-2 blocks of S will be
+* "standardized" by making the corresponding elements of T have the
+* form:
+* [ a 0 ]
+* [ 0 b ]
+*
+* and the pair of corresponding 2-by-2 blocks in S and T will have a
+* complex conjugate pair of generalized eigenvalues.
+*
+*
+* Arguments
+* =========
+*
+* JOBVSL (input) CHARACTER*1
+* = 'N': do not compute the left Schur vectors;
+* = 'V': compute the left Schur vectors.
+*
+* JOBVSR (input) CHARACTER*1
+* = 'N': do not compute the right Schur vectors;
+* = 'V': compute the right Schur vectors.
+*
+* SORT (input) CHARACTER*1
+* Specifies whether or not to order the eigenvalues on the
+* diagonal of the generalized Schur form.
+* = 'N': Eigenvalues are not ordered;
+* = 'S': Eigenvalues are ordered (see DELZTG);
+*
+* DELZTG (input) LOGICAL FUNCTION of three DOUBLE PRECISION arguments
+* DELZTG must be declared EXTERNAL in the calling subroutine.
+* If SORT = 'N', DELZTG is not referenced.
+* If SORT = 'S', DELZTG is used to select eigenvalues to sort
+* to the top left of the Schur form.
+* An eigenvalue (ALPHAR(j)+ALPHAI(j))/BETA(j) is selected if
+* DELZTG(ALPHAR(j),ALPHAI(j),BETA(j)) is true; i.e. if either
+* one of a complex conjugate pair of eigenvalues is selected,
+* then both complex eigenvalues are selected.
+*
+* Note that in the ill-conditioned case, a selected complex
+* eigenvalue may no longer satisfy DELZTG(ALPHAR(j),ALPHAI(j),
+* BETA(j)) = .TRUE. after ordering. INFO is to be set to N+2
+* in this case.
+*
+* N (input) INTEGER
+* The order of the matrices A, B, VSL, and VSR. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the first of the pair of matrices.
+* On exit, A has been overwritten by its generalized Schur
+* form S.
+*
+* LDA (input) INTEGER
+* The leading dimension of A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
+* On entry, the second of the pair of matrices.
+* On exit, B has been overwritten by its generalized Schur
+* form T.
+*
+* LDB (input) INTEGER
+* The leading dimension of B. LDB >= max(1,N).
+*
+* SDIM (output) INTEGER
+* If SORT = 'N', SDIM = 0.
+* If SORT = 'S', SDIM = number of eigenvalues (after sorting)
+* for which DELZTG is true. (Complex conjugate pairs for which
+* DELZTG is true for either eigenvalue count as 2.)
+*
+* ALPHAR (output) DOUBLE PRECISION array, dimension (N)
+* ALPHAI (output) DOUBLE PRECISION array, dimension (N)
+* BETA (output) DOUBLE PRECISION array, dimension (N)
+* On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
+* be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i,
+* and BETA(j),j=1,...,N are the diagonals of the complex Schur
+* form (S,T) that would result if the 2-by-2 diagonal blocks of
+* the real Schur form of (A,B) were further reduced to
+* triangular form using 2-by-2 complex unitary transformations.
+* If ALPHAI(j) is zero, then the j-th eigenvalue is real; if
+* positive, then the j-th and (j+1)-st eigenvalues are a
+* complex conjugate pair, with ALPHAI(j+1) negative.
+*
+* Note: the quotients ALPHAR(j)/BETA(j) and ALPHAI(j)/BETA(j)
+* may easily over- or underflow, and BETA(j) may even be zero.
+* Thus, the user should avoid naively computing the ratio.
+* However, ALPHAR and ALPHAI will be always less than and
+* usually comparable with norm(A) in magnitude, and BETA always
+* less than and usually comparable with norm(B).
+*
+* VSL (output) DOUBLE PRECISION array, dimension (LDVSL,N)
+* If JOBVSL = 'V', VSL will contain the left Schur vectors.
+* Not referenced if JOBVSL = 'N'.
+*
+* LDVSL (input) INTEGER
+* The leading dimension of the matrix VSL. LDVSL >=1, and
+* if JOBVSL = 'V', LDVSL >= N.
+*
+* VSR (output) DOUBLE PRECISION array, dimension (LDVSR,N)
+* If JOBVSR = 'V', VSR will contain the right Schur vectors.
+* Not referenced if JOBVSR = 'N'.
+*
+* LDVSR (input) INTEGER
+* The leading dimension of the matrix VSR. LDVSR >= 1, and
+* if JOBVSR = 'V', LDVSR >= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 8*N+16.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* BWORK (workspace) LOGICAL array, dimension (N)
+* Not referenced if SORT = 'N'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* = 1,...,N:
+* The QZ iteration failed. (A,B) are not in Schur
+* form, but ALPHAR(j), ALPHAI(j), and BETA(j) should
+* be correct for j=INFO+1,...,N.
+* > N: =N+1: other than QZ iteration failed in DHGEQZ.
+* =N+2: after reordering, roundoff changed values of
+* some complex eigenvalues so that leading
+* eigenvalues in the Generalized Schur form no
+* longer satisfy DELZTG=.TRUE. This could also
+* be caused due to scaling.
+* =N+3: reordering failed in DTGSEN.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL CURSL, ILASCL, ILBSCL, ILVSL, ILVSR, LASTSL,
+ $ LQUERY, LST2SL, WANTST
+ INTEGER I, ICOLS, IERR, IHI, IJOBVL, IJOBVR, ILEFT,
+ $ ILO, IP, IRIGHT, IROWS, ITAU, IWRK, MAXWRK,
+ $ MINWRK
+ DOUBLE PRECISION ANRM, ANRMTO, BIGNUM, BNRM, BNRMTO, EPS, PVSL,
+ $ PVSR, SAFMAX, SAFMIN, SMLNUM
+* ..
+* .. Local Arrays ..
+ INTEGER IDUM( 1 )
+ DOUBLE PRECISION DIF( 2 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQRF, DGGBAK, DGGBAL, DGGHRD, DHGEQZ, DLABAD,
+ $ DLACPY, DLASCL, DLASET, DORGQR, DORMQR, DTGSEN,
+ $ XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode the input arguments
+*
+ IF( LSAME( JOBVSL, 'N' ) ) THEN
+ IJOBVL = 1
+ ILVSL = .FALSE.
+ ELSE IF( LSAME( JOBVSL, 'V' ) ) THEN
+ IJOBVL = 2
+ ILVSL = .TRUE.
+ ELSE
+ IJOBVL = -1
+ ILVSL = .FALSE.
+ END IF
+*
+ IF( LSAME( JOBVSR, 'N' ) ) THEN
+ IJOBVR = 1
+ ILVSR = .FALSE.
+ ELSE IF( LSAME( JOBVSR, 'V' ) ) THEN
+ IJOBVR = 2
+ ILVSR = .TRUE.
+ ELSE
+ IJOBVR = -1
+ ILVSR = .FALSE.
+ END IF
+*
+ WANTST = LSAME( SORT, 'S' )
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( IJOBVL.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( IJOBVR.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( LDVSL.LT.1 .OR. ( ILVSL .AND. LDVSL.LT.N ) ) THEN
+ INFO = -15
+ ELSE IF( LDVSR.LT.1 .OR. ( ILVSR .AND. LDVSR.LT.N ) ) THEN
+ INFO = -17
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.)
+*
+ MINWRK = 1
+ IF( INFO.EQ.0 .AND. ( LWORK.GE.1 .OR. LQUERY ) ) THEN
+ MINWRK = 7*( N+1 ) + 16
+ MAXWRK = 7*( N+1 ) + N*ILAENV( 1, 'DGEQRF', ' ', N, 1, N, 0 ) +
+ $ 16
+ IF( ILVSL ) THEN
+ MAXWRK = MAX( MAXWRK, 7*( N+1 )+N*
+ $ ILAENV( 1, 'DORGQR', ' ', N, 1, N, -1 ) )
+ END IF
+ WORK( 1 ) = MAXWRK
+ END IF
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY )
+ $ INFO = -19
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGGES ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ SDIM = 0
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SAFMIN = DLAMCH( 'S' )
+ SAFMAX = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ SMLNUM = SQRT( SAFMIN ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', N, N, A, LDA, WORK )
+ ILASCL = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ANRMTO = SMLNUM
+ ILASCL = .TRUE.
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ANRMTO = BIGNUM
+ ILASCL = .TRUE.
+ END IF
+ IF( ILASCL )
+ $ CALL DLASCL( 'G', 0, 0, ANRM, ANRMTO, N, N, A, LDA, IERR )
+*
+* Scale B if max element outside range [SMLNUM,BIGNUM]
+*
+ BNRM = DLANGE( 'M', N, N, B, LDB, WORK )
+ ILBSCL = .FALSE.
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+ BNRMTO = SMLNUM
+ ILBSCL = .TRUE.
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+ BNRMTO = BIGNUM
+ ILBSCL = .TRUE.
+ END IF
+ IF( ILBSCL )
+ $ CALL DLASCL( 'G', 0, 0, BNRM, BNRMTO, N, N, B, LDB, IERR )
+*
+* Permute the matrix to make it more nearly triangular
+* (Workspace: need 6*N + 2*N space for storing balancing factors)
+*
+ ILEFT = 1
+ IRIGHT = N + 1
+ IWRK = IRIGHT + N
+ CALL DGGBAL( 'P', N, A, LDA, B, LDB, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), WORK( IWRK ), IERR )
+*
+* Reduce B to triangular form (QR decomposition of B)
+* (Workspace: need N, prefer N*NB)
+*
+ IROWS = IHI + 1 - ILO
+ ICOLS = N + 1 - ILO
+ ITAU = IWRK
+ IWRK = ITAU + IROWS
+ CALL DGEQRF( IROWS, ICOLS, B( ILO, ILO ), LDB, WORK( ITAU ),
+ $ WORK( IWRK ), LWORK+1-IWRK, IERR )
+*
+* Apply the orthogonal transformation to matrix A
+* (Workspace: need N, prefer N*NB)
+*
+ CALL DORMQR( 'L', 'T', IROWS, ICOLS, IROWS, B( ILO, ILO ), LDB,
+ $ WORK( ITAU ), A( ILO, ILO ), LDA, WORK( IWRK ),
+ $ LWORK+1-IWRK, IERR )
+*
+* Initialize VSL
+* (Workspace: need N, prefer N*NB)
+*
+ IF( ILVSL ) THEN
+ CALL DLASET( 'Full', N, N, ZERO, ONE, VSL, LDVSL )
+ CALL DLACPY( 'L', IROWS-1, IROWS-1, B( ILO+1, ILO ), LDB,
+ $ VSL( ILO+1, ILO ), LDVSL )
+ CALL DORGQR( IROWS, IROWS, IROWS, VSL( ILO, ILO ), LDVSL,
+ $ WORK( ITAU ), WORK( IWRK ), LWORK+1-IWRK, IERR )
+ END IF
+*
+* Initialize VSR
+*
+ IF( ILVSR )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, VSR, LDVSR )
+*
+* Reduce to generalized Hessenberg form
+* (Workspace: none needed)
+*
+ CALL DGGHRD( JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB, VSL,
+ $ LDVSL, VSR, LDVSR, IERR )
+*
+* Perform QZ algorithm, computing Schur vectors if desired
+* (Workspace: need N)
+*
+ IWRK = ITAU
+ CALL DHGEQZ( 'S', JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB,
+ $ ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR,
+ $ WORK( IWRK ), LWORK+1-IWRK, IERR )
+ IF( IERR.NE.0 ) THEN
+ IF( IERR.GT.0 .AND. IERR.LE.N ) THEN
+ INFO = IERR
+ ELSE IF( IERR.GT.N .AND. IERR.LE.2*N ) THEN
+ INFO = IERR - N
+ ELSE
+ INFO = N + 1
+ END IF
+ GO TO 50
+ END IF
+*
+* Sort eigenvalues ALPHA/BETA if desired
+* (Workspace: need 4*N+16 )
+*
+ SDIM = 0
+ IF( WANTST ) THEN
+*
+* Undo scaling on eigenvalues before DELZTGing
+*
+ IF( ILASCL ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAR, N,
+ $ IERR )
+ CALL DLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAI, N,
+ $ IERR )
+ END IF
+ IF( ILBSCL )
+ $ CALL DLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
+*
+* Select eigenvalues
+*
+ DO 10 I = 1, N
+ BWORK( I ) = DELCTG( ALPHAR( I ), ALPHAI( I ), BETA( I ) )
+ 10 CONTINUE
+*
+ CALL DTGSEN( 0, ILVSL, ILVSR, BWORK, N, A, LDA, B, LDB, ALPHAR,
+ $ ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, SDIM, PVSL,
+ $ PVSR, DIF, WORK( IWRK ), LWORK-IWRK+1, IDUM, 1,
+ $ IERR )
+ IF( IERR.EQ.1 )
+ $ INFO = N + 3
+*
+ END IF
+*
+* Apply back-permutation to VSL and VSR
+* (Workspace: none needed)
+*
+ IF( ILVSL )
+ $ CALL DGGBAK( 'P', 'L', N, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), N, VSL, LDVSL, IERR )
+*
+ IF( ILVSR )
+ $ CALL DGGBAK( 'P', 'R', N, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), N, VSR, LDVSR, IERR )
+*
+* Check if unscaling would cause over/underflow, if so, rescale
+* (ALPHAR(I),ALPHAI(I),BETA(I)) so BETA(I) is on the order of
+* B(I,I) and ALPHAR(I) and ALPHAI(I) are on the order of A(I,I)
+*
+ IF( ILASCL ) THEN
+ DO 20 I = 1, N
+ IF( ALPHAI( I ).NE.ZERO ) THEN
+ IF( ( ALPHAR( I ) / SAFMAX ).GT.( ANRMTO / ANRM ) .OR.
+ $ ( SAFMIN / ALPHAR( I ) ).GT.( ANRM / ANRMTO ) ) THEN
+ WORK( 1 ) = ABS( A( I, I ) / ALPHAR( I ) )
+ BETA( I ) = BETA( I )*WORK( 1 )
+ ALPHAR( I ) = ALPHAR( I )*WORK( 1 )
+ ALPHAI( I ) = ALPHAI( I )*WORK( 1 )
+ ELSE IF( ( ALPHAI( I ) / SAFMAX ).GT.
+ $ ( ANRMTO / ANRM ) .OR.
+ $ ( SAFMIN / ALPHAI( I ) ).GT.( ANRM / ANRMTO ) )
+ $ THEN
+ WORK( 1 ) = ABS( A( I, I+1 ) / ALPHAI( I ) )
+ BETA( I ) = BETA( I )*WORK( 1 )
+ ALPHAR( I ) = ALPHAR( I )*WORK( 1 )
+ ALPHAI( I ) = ALPHAI( I )*WORK( 1 )
+ END IF
+ END IF
+ 20 CONTINUE
+ END IF
+*
+ IF( ILBSCL ) THEN
+ DO 30 I = 1, N
+ IF( ALPHAI( I ).NE.ZERO ) THEN
+ IF( ( BETA( I ) / SAFMAX ).GT.( BNRMTO / BNRM ) .OR.
+ $ ( SAFMIN / BETA( I ) ).GT.( BNRM / BNRMTO ) ) THEN
+ WORK( 1 ) = ABS( B( I, I ) / BETA( I ) )
+ BETA( I ) = BETA( I )*WORK( 1 )
+ ALPHAR( I ) = ALPHAR( I )*WORK( 1 )
+ ALPHAI( I ) = ALPHAI( I )*WORK( 1 )
+ END IF
+ END IF
+ 30 CONTINUE
+ END IF
+*
+* Undo scaling
+*
+ IF( ILASCL ) THEN
+ CALL DLASCL( 'H', 0, 0, ANRMTO, ANRM, N, N, A, LDA, IERR )
+ CALL DLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAR, N, IERR )
+ CALL DLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAI, N, IERR )
+ END IF
+*
+ IF( ILBSCL ) THEN
+ CALL DLASCL( 'U', 0, 0, BNRMTO, BNRM, N, N, B, LDB, IERR )
+ CALL DLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
+ END IF
+*
+ IF( WANTST ) THEN
+*
+* Check if reordering is correct
+*
+ LASTSL = .TRUE.
+ LST2SL = .TRUE.
+ SDIM = 0
+ IP = 0
+ DO 40 I = 1, N
+ CURSL = DELCTG( ALPHAR( I ), ALPHAI( I ), BETA( I ) )
+ IF( ALPHAI( I ).EQ.ZERO ) THEN
+ IF( CURSL )
+ $ SDIM = SDIM + 1
+ IP = 0
+ IF( CURSL .AND. .NOT.LASTSL )
+ $ INFO = N + 2
+ ELSE
+ IF( IP.EQ.1 ) THEN
+*
+* Last eigenvalue of conjugate pair
+*
+ CURSL = CURSL .OR. LASTSL
+ LASTSL = CURSL
+ IF( CURSL )
+ $ SDIM = SDIM + 2
+ IP = -1
+ IF( CURSL .AND. .NOT.LST2SL )
+ $ INFO = N + 2
+ ELSE
+*
+* First eigenvalue of conjugate pair
+*
+ IP = 1
+ END IF
+ END IF
+ LST2SL = LASTSL
+ LASTSL = CURSL
+ 40 CONTINUE
+*
+ END IF
+*
+ 50 CONTINUE
+*
+ WORK( 1 ) = MAXWRK
+*
+ RETURN
+*
+* End of DGGES
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dggev.f b/2.3-1/src/fortran/lapack/dggev.f
new file mode 100644
index 00000000..4a204c33
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dggev.f
@@ -0,0 +1,489 @@
+ SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI,
+ $ BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDB, LDVL, LDVR, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), ALPHAI( * ), ALPHAR( * ),
+ $ B( LDB, * ), BETA( * ), VL( LDVL, * ),
+ $ VR( LDVR, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGGEV computes for a pair of N-by-N real nonsymmetric matrices (A,B)
+* the generalized eigenvalues, and optionally, the left and/or right
+* generalized eigenvectors.
+*
+* A generalized eigenvalue for a pair of matrices (A,B) is a scalar
+* lambda or a ratio alpha/beta = lambda, such that A - lambda*B is
+* singular. It is usually represented as the pair (alpha,beta), as
+* there is a reasonable interpretation for beta=0, and even for both
+* being zero.
+*
+* The right eigenvector v(j) corresponding to the eigenvalue lambda(j)
+* of (A,B) satisfies
+*
+* A * v(j) = lambda(j) * B * v(j).
+*
+* The left eigenvector u(j) corresponding to the eigenvalue lambda(j)
+* of (A,B) satisfies
+*
+* u(j)**H * A = lambda(j) * u(j)**H * B .
+*
+* where u(j)**H is the conjugate-transpose of u(j).
+*
+*
+* Arguments
+* =========
+*
+* JOBVL (input) CHARACTER*1
+* = 'N': do not compute the left generalized eigenvectors;
+* = 'V': compute the left generalized eigenvectors.
+*
+* JOBVR (input) CHARACTER*1
+* = 'N': do not compute the right generalized eigenvectors;
+* = 'V': compute the right generalized eigenvectors.
+*
+* N (input) INTEGER
+* The order of the matrices A, B, VL, and VR. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the matrix A in the pair (A,B).
+* On exit, A has been overwritten.
+*
+* LDA (input) INTEGER
+* The leading dimension of A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
+* On entry, the matrix B in the pair (A,B).
+* On exit, B has been overwritten.
+*
+* LDB (input) INTEGER
+* The leading dimension of B. LDB >= max(1,N).
+*
+* ALPHAR (output) DOUBLE PRECISION array, dimension (N)
+* ALPHAI (output) DOUBLE PRECISION array, dimension (N)
+* BETA (output) DOUBLE PRECISION array, dimension (N)
+* On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
+* be the generalized eigenvalues. If ALPHAI(j) is zero, then
+* the j-th eigenvalue is real; if positive, then the j-th and
+* (j+1)-st eigenvalues are a complex conjugate pair, with
+* ALPHAI(j+1) negative.
+*
+* Note: the quotients ALPHAR(j)/BETA(j) and ALPHAI(j)/BETA(j)
+* may easily over- or underflow, and BETA(j) may even be zero.
+* Thus, the user should avoid naively computing the ratio
+* alpha/beta. However, ALPHAR and ALPHAI will be always less
+* than and usually comparable with norm(A) in magnitude, and
+* BETA always less than and usually comparable with norm(B).
+*
+* VL (output) DOUBLE PRECISION array, dimension (LDVL,N)
+* If JOBVL = 'V', the left eigenvectors u(j) are stored one
+* after another in the columns of VL, in the same order as
+* their eigenvalues. If the j-th eigenvalue is real, then
+* u(j) = VL(:,j), the j-th column of VL. If the j-th and
+* (j+1)-th eigenvalues form a complex conjugate pair, then
+* u(j) = VL(:,j)+i*VL(:,j+1) and u(j+1) = VL(:,j)-i*VL(:,j+1).
+* Each eigenvector is scaled so the largest component has
+* abs(real part)+abs(imag. part)=1.
+* Not referenced if JOBVL = 'N'.
+*
+* LDVL (input) INTEGER
+* The leading dimension of the matrix VL. LDVL >= 1, and
+* if JOBVL = 'V', LDVL >= N.
+*
+* VR (output) DOUBLE PRECISION array, dimension (LDVR,N)
+* If JOBVR = 'V', the right eigenvectors v(j) are stored one
+* after another in the columns of VR, in the same order as
+* their eigenvalues. If the j-th eigenvalue is real, then
+* v(j) = VR(:,j), the j-th column of VR. If the j-th and
+* (j+1)-th eigenvalues form a complex conjugate pair, then
+* v(j) = VR(:,j)+i*VR(:,j+1) and v(j+1) = VR(:,j)-i*VR(:,j+1).
+* Each eigenvector is scaled so the largest component has
+* abs(real part)+abs(imag. part)=1.
+* Not referenced if JOBVR = 'N'.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the matrix VR. LDVR >= 1, and
+* if JOBVR = 'V', LDVR >= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,8*N).
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* = 1,...,N:
+* The QZ iteration failed. No eigenvectors have been
+* calculated, but ALPHAR(j), ALPHAI(j), and BETA(j)
+* should be correct for j=INFO+1,...,N.
+* > N: =N+1: other than QZ iteration failed in DHGEQZ.
+* =N+2: error return from DTGEVC.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILASCL, ILBSCL, ILV, ILVL, ILVR, LQUERY
+ CHARACTER CHTEMP
+ INTEGER ICOLS, IERR, IHI, IJOBVL, IJOBVR, ILEFT, ILO,
+ $ IN, IRIGHT, IROWS, ITAU, IWRK, JC, JR, MAXWRK,
+ $ MINWRK
+ DOUBLE PRECISION ANRM, ANRMTO, BIGNUM, BNRM, BNRMTO, EPS,
+ $ SMLNUM, TEMP
+* ..
+* .. Local Arrays ..
+ LOGICAL LDUMMA( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEQRF, DGGBAK, DGGBAL, DGGHRD, DHGEQZ, DLABAD,
+ $ DLACPY,DLASCL, DLASET, DORGQR, DORMQR, DTGEVC,
+ $ XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, DLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode the input arguments
+*
+ IF( LSAME( JOBVL, 'N' ) ) THEN
+ IJOBVL = 1
+ ILVL = .FALSE.
+ ELSE IF( LSAME( JOBVL, 'V' ) ) THEN
+ IJOBVL = 2
+ ILVL = .TRUE.
+ ELSE
+ IJOBVL = -1
+ ILVL = .FALSE.
+ END IF
+*
+ IF( LSAME( JOBVR, 'N' ) ) THEN
+ IJOBVR = 1
+ ILVR = .FALSE.
+ ELSE IF( LSAME( JOBVR, 'V' ) ) THEN
+ IJOBVR = 2
+ ILVR = .TRUE.
+ ELSE
+ IJOBVR = -1
+ ILVR = .FALSE.
+ END IF
+ ILV = ILVL .OR. ILVR
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( IJOBVL.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( IJOBVR.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDVL.LT.1 .OR. ( ILVL .AND. LDVL.LT.N ) ) THEN
+ INFO = -12
+ ELSE IF( LDVR.LT.1 .OR. ( ILVR .AND. LDVR.LT.N ) ) THEN
+ INFO = -14
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV. The workspace is
+* computed assuming ILO = 1 and IHI = N, the worst case.)
+*
+ IF( INFO.EQ.0 ) THEN
+ MINWRK = MAX( 1, 8*N )
+ MAXWRK = MAX( 1, N*( 7 +
+ $ ILAENV( 1, 'DGEQRF', ' ', N, 1, N, 0 ) ) )
+ MAXWRK = MAX( MAXWRK, N*( 7 +
+ $ ILAENV( 1, 'DORMQR', ' ', N, 1, N, 0 ) ) )
+ IF( ILVL ) THEN
+ MAXWRK = MAX( MAXWRK, N*( 7 +
+ $ ILAENV( 1, 'DORGQR', ' ', N, 1, N, -1 ) ) )
+ END IF
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY )
+ $ INFO = -16
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGGEV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', N, N, A, LDA, WORK )
+ ILASCL = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ANRMTO = SMLNUM
+ ILASCL = .TRUE.
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ANRMTO = BIGNUM
+ ILASCL = .TRUE.
+ END IF
+ IF( ILASCL )
+ $ CALL DLASCL( 'G', 0, 0, ANRM, ANRMTO, N, N, A, LDA, IERR )
+*
+* Scale B if max element outside range [SMLNUM,BIGNUM]
+*
+ BNRM = DLANGE( 'M', N, N, B, LDB, WORK )
+ ILBSCL = .FALSE.
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+ BNRMTO = SMLNUM
+ ILBSCL = .TRUE.
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+ BNRMTO = BIGNUM
+ ILBSCL = .TRUE.
+ END IF
+ IF( ILBSCL )
+ $ CALL DLASCL( 'G', 0, 0, BNRM, BNRMTO, N, N, B, LDB, IERR )
+*
+* Permute the matrices A, B to isolate eigenvalues if possible
+* (Workspace: need 6*N)
+*
+ ILEFT = 1
+ IRIGHT = N + 1
+ IWRK = IRIGHT + N
+ CALL DGGBAL( 'P', N, A, LDA, B, LDB, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), WORK( IWRK ), IERR )
+*
+* Reduce B to triangular form (QR decomposition of B)
+* (Workspace: need N, prefer N*NB)
+*
+ IROWS = IHI + 1 - ILO
+ IF( ILV ) THEN
+ ICOLS = N + 1 - ILO
+ ELSE
+ ICOLS = IROWS
+ END IF
+ ITAU = IWRK
+ IWRK = ITAU + IROWS
+ CALL DGEQRF( IROWS, ICOLS, B( ILO, ILO ), LDB, WORK( ITAU ),
+ $ WORK( IWRK ), LWORK+1-IWRK, IERR )
+*
+* Apply the orthogonal transformation to matrix A
+* (Workspace: need N, prefer N*NB)
+*
+ CALL DORMQR( 'L', 'T', IROWS, ICOLS, IROWS, B( ILO, ILO ), LDB,
+ $ WORK( ITAU ), A( ILO, ILO ), LDA, WORK( IWRK ),
+ $ LWORK+1-IWRK, IERR )
+*
+* Initialize VL
+* (Workspace: need N, prefer N*NB)
+*
+ IF( ILVL ) THEN
+ CALL DLASET( 'Full', N, N, ZERO, ONE, VL, LDVL )
+ IF( IROWS.GT.1 ) THEN
+ CALL DLACPY( 'L', IROWS-1, IROWS-1, B( ILO+1, ILO ), LDB,
+ $ VL( ILO+1, ILO ), LDVL )
+ END IF
+ CALL DORGQR( IROWS, IROWS, IROWS, VL( ILO, ILO ), LDVL,
+ $ WORK( ITAU ), WORK( IWRK ), LWORK+1-IWRK, IERR )
+ END IF
+*
+* Initialize VR
+*
+ IF( ILVR )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, VR, LDVR )
+*
+* Reduce to generalized Hessenberg form
+* (Workspace: none needed)
+*
+ IF( ILV ) THEN
+*
+* Eigenvectors requested -- work on whole matrix.
+*
+ CALL DGGHRD( JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, VL,
+ $ LDVL, VR, LDVR, IERR )
+ ELSE
+ CALL DGGHRD( 'N', 'N', IROWS, 1, IROWS, A( ILO, ILO ), LDA,
+ $ B( ILO, ILO ), LDB, VL, LDVL, VR, LDVR, IERR )
+ END IF
+*
+* Perform QZ algorithm (Compute eigenvalues, and optionally, the
+* Schur forms and Schur vectors)
+* (Workspace: need N)
+*
+ IWRK = ITAU
+ IF( ILV ) THEN
+ CHTEMP = 'S'
+ ELSE
+ CHTEMP = 'E'
+ END IF
+ CALL DHGEQZ( CHTEMP, JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB,
+ $ ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR,
+ $ WORK( IWRK ), LWORK+1-IWRK, IERR )
+ IF( IERR.NE.0 ) THEN
+ IF( IERR.GT.0 .AND. IERR.LE.N ) THEN
+ INFO = IERR
+ ELSE IF( IERR.GT.N .AND. IERR.LE.2*N ) THEN
+ INFO = IERR - N
+ ELSE
+ INFO = N + 1
+ END IF
+ GO TO 110
+ END IF
+*
+* Compute Eigenvectors
+* (Workspace: need 6*N)
+*
+ IF( ILV ) THEN
+ IF( ILVL ) THEN
+ IF( ILVR ) THEN
+ CHTEMP = 'B'
+ ELSE
+ CHTEMP = 'L'
+ END IF
+ ELSE
+ CHTEMP = 'R'
+ END IF
+ CALL DTGEVC( CHTEMP, 'B', LDUMMA, N, A, LDA, B, LDB, VL, LDVL,
+ $ VR, LDVR, N, IN, WORK( IWRK ), IERR )
+ IF( IERR.NE.0 ) THEN
+ INFO = N + 2
+ GO TO 110
+ END IF
+*
+* Undo balancing on VL and VR and normalization
+* (Workspace: none needed)
+*
+ IF( ILVL ) THEN
+ CALL DGGBAK( 'P', 'L', N, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), N, VL, LDVL, IERR )
+ DO 50 JC = 1, N
+ IF( ALPHAI( JC ).LT.ZERO )
+ $ GO TO 50
+ TEMP = ZERO
+ IF( ALPHAI( JC ).EQ.ZERO ) THEN
+ DO 10 JR = 1, N
+ TEMP = MAX( TEMP, ABS( VL( JR, JC ) ) )
+ 10 CONTINUE
+ ELSE
+ DO 20 JR = 1, N
+ TEMP = MAX( TEMP, ABS( VL( JR, JC ) )+
+ $ ABS( VL( JR, JC+1 ) ) )
+ 20 CONTINUE
+ END IF
+ IF( TEMP.LT.SMLNUM )
+ $ GO TO 50
+ TEMP = ONE / TEMP
+ IF( ALPHAI( JC ).EQ.ZERO ) THEN
+ DO 30 JR = 1, N
+ VL( JR, JC ) = VL( JR, JC )*TEMP
+ 30 CONTINUE
+ ELSE
+ DO 40 JR = 1, N
+ VL( JR, JC ) = VL( JR, JC )*TEMP
+ VL( JR, JC+1 ) = VL( JR, JC+1 )*TEMP
+ 40 CONTINUE
+ END IF
+ 50 CONTINUE
+ END IF
+ IF( ILVR ) THEN
+ CALL DGGBAK( 'P', 'R', N, ILO, IHI, WORK( ILEFT ),
+ $ WORK( IRIGHT ), N, VR, LDVR, IERR )
+ DO 100 JC = 1, N
+ IF( ALPHAI( JC ).LT.ZERO )
+ $ GO TO 100
+ TEMP = ZERO
+ IF( ALPHAI( JC ).EQ.ZERO ) THEN
+ DO 60 JR = 1, N
+ TEMP = MAX( TEMP, ABS( VR( JR, JC ) ) )
+ 60 CONTINUE
+ ELSE
+ DO 70 JR = 1, N
+ TEMP = MAX( TEMP, ABS( VR( JR, JC ) )+
+ $ ABS( VR( JR, JC+1 ) ) )
+ 70 CONTINUE
+ END IF
+ IF( TEMP.LT.SMLNUM )
+ $ GO TO 100
+ TEMP = ONE / TEMP
+ IF( ALPHAI( JC ).EQ.ZERO ) THEN
+ DO 80 JR = 1, N
+ VR( JR, JC ) = VR( JR, JC )*TEMP
+ 80 CONTINUE
+ ELSE
+ DO 90 JR = 1, N
+ VR( JR, JC ) = VR( JR, JC )*TEMP
+ VR( JR, JC+1 ) = VR( JR, JC+1 )*TEMP
+ 90 CONTINUE
+ END IF
+ 100 CONTINUE
+ END IF
+*
+* End of eigenvector calculation
+*
+ END IF
+*
+* Undo scaling if necessary
+*
+ IF( ILASCL ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAR, N, IERR )
+ CALL DLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAI, N, IERR )
+ END IF
+*
+ IF( ILBSCL ) THEN
+ CALL DLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
+ END IF
+*
+ 110 CONTINUE
+*
+ WORK( 1 ) = MAXWRK
+*
+ RETURN
+*
+* End of DGGEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dgghrd.f b/2.3-1/src/fortran/lapack/dgghrd.f
new file mode 100644
index 00000000..6b8bbb08
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dgghrd.f
@@ -0,0 +1,264 @@
+ SUBROUTINE DGGHRD( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
+ $ LDQ, Z, LDZ, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ, COMPZ
+ INTEGER IHI, ILO, INFO, LDA, LDB, LDQ, LDZ, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGGHRD reduces a pair of real matrices (A,B) to generalized upper
+* Hessenberg form using orthogonal transformations, where A is a
+* general matrix and B is upper triangular. The form of the
+* generalized eigenvalue problem is
+* A*x = lambda*B*x,
+* and B is typically made upper triangular by computing its QR
+* factorization and moving the orthogonal matrix Q to the left side
+* of the equation.
+*
+* This subroutine simultaneously reduces A to a Hessenberg matrix H:
+* Q**T*A*Z = H
+* and transforms B to another upper triangular matrix T:
+* Q**T*B*Z = T
+* in order to reduce the problem to its standard form
+* H*y = lambda*T*y
+* where y = Z**T*x.
+*
+* The orthogonal matrices Q and Z are determined as products of Givens
+* rotations. They may either be formed explicitly, or they may be
+* postmultiplied into input matrices Q1 and Z1, so that
+*
+* Q1 * A * Z1**T = (Q1*Q) * H * (Z1*Z)**T
+*
+* Q1 * B * Z1**T = (Q1*Q) * T * (Z1*Z)**T
+*
+* If Q1 is the orthogonal matrix from the QR factorization of B in the
+* original equation A*x = lambda*B*x, then DGGHRD reduces the original
+* problem to generalized Hessenberg form.
+*
+* Arguments
+* =========
+*
+* COMPQ (input) CHARACTER*1
+* = 'N': do not compute Q;
+* = 'I': Q is initialized to the unit matrix, and the
+* orthogonal matrix Q is returned;
+* = 'V': Q must contain an orthogonal matrix Q1 on entry,
+* and the product Q1*Q is returned.
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': do not compute Z;
+* = 'I': Z is initialized to the unit matrix, and the
+* orthogonal matrix Z is returned;
+* = 'V': Z must contain an orthogonal matrix Z1 on entry,
+* and the product Z1*Z is returned.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI mark the rows and columns of A which are to be
+* reduced. It is assumed that A is already upper triangular
+* in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are
+* normally set by a previous call to SGGBAL; otherwise they
+* should be set to 1 and N respectively.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the N-by-N general matrix to be reduced.
+* On exit, the upper triangle and the first subdiagonal of A
+* are overwritten with the upper Hessenberg matrix H, and the
+* rest is set to zero.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
+* On entry, the N-by-N upper triangular matrix B.
+* On exit, the upper triangular matrix T = Q**T B Z. The
+* elements below the diagonal are set to zero.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ, N)
+* On entry, if COMPQ = 'V', the orthogonal matrix Q1,
+* typically from the QR factorization of B.
+* On exit, if COMPQ='I', the orthogonal matrix Q, and if
+* COMPQ = 'V', the product Q1*Q.
+* Not referenced if COMPQ='N'.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q.
+* LDQ >= N if COMPQ='V' or 'I'; LDQ >= 1 otherwise.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ, N)
+* On entry, if COMPZ = 'V', the orthogonal matrix Z1.
+* On exit, if COMPZ='I', the orthogonal matrix Z, and if
+* COMPZ = 'V', the product Z1*Z.
+* Not referenced if COMPZ='N'.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z.
+* LDZ >= N if COMPZ='V' or 'I'; LDZ >= 1 otherwise.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* This routine reduces A to Hessenberg and B to triangular form by
+* an unblocked reduction, as described in _Matrix_Computations_,
+* by Golub and Van Loan (Johns Hopkins Press.)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILQ, ILZ
+ INTEGER ICOMPQ, ICOMPZ, JCOL, JROW
+ DOUBLE PRECISION C, S, TEMP
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARTG, DLASET, DROT, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode COMPQ
+*
+ IF( LSAME( COMPQ, 'N' ) ) THEN
+ ILQ = .FALSE.
+ ICOMPQ = 1
+ ELSE IF( LSAME( COMPQ, 'V' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 2
+ ELSE IF( LSAME( COMPQ, 'I' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 3
+ ELSE
+ ICOMPQ = 0
+ END IF
+*
+* Decode COMPZ
+*
+ IF( LSAME( COMPZ, 'N' ) ) THEN
+ ILZ = .FALSE.
+ ICOMPZ = 1
+ ELSE IF( LSAME( COMPZ, 'V' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 2
+ ELSE IF( LSAME( COMPZ, 'I' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 3
+ ELSE
+ ICOMPZ = 0
+ END IF
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ICOMPQ.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( ICOMPZ.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 ) THEN
+ INFO = -4
+ ELSE IF( IHI.GT.N .OR. IHI.LT.ILO-1 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( ( ILQ .AND. LDQ.LT.N ) .OR. LDQ.LT.1 ) THEN
+ INFO = -11
+ ELSE IF( ( ILZ .AND. LDZ.LT.N ) .OR. LDZ.LT.1 ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGGHRD', -INFO )
+ RETURN
+ END IF
+*
+* Initialize Q and Z if desired.
+*
+ IF( ICOMPQ.EQ.3 )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, Q, LDQ )
+ IF( ICOMPZ.EQ.3 )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, Z, LDZ )
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+* Zero out lower triangle of B
+*
+ DO 20 JCOL = 1, N - 1
+ DO 10 JROW = JCOL + 1, N
+ B( JROW, JCOL ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* Reduce A and B
+*
+ DO 40 JCOL = ILO, IHI - 2
+*
+ DO 30 JROW = IHI, JCOL + 2, -1
+*
+* Step 1: rotate rows JROW-1, JROW to kill A(JROW,JCOL)
+*
+ TEMP = A( JROW-1, JCOL )
+ CALL DLARTG( TEMP, A( JROW, JCOL ), C, S,
+ $ A( JROW-1, JCOL ) )
+ A( JROW, JCOL ) = ZERO
+ CALL DROT( N-JCOL, A( JROW-1, JCOL+1 ), LDA,
+ $ A( JROW, JCOL+1 ), LDA, C, S )
+ CALL DROT( N+2-JROW, B( JROW-1, JROW-1 ), LDB,
+ $ B( JROW, JROW-1 ), LDB, C, S )
+ IF( ILQ )
+ $ CALL DROT( N, Q( 1, JROW-1 ), 1, Q( 1, JROW ), 1, C, S )
+*
+* Step 2: rotate columns JROW, JROW-1 to kill B(JROW,JROW-1)
+*
+ TEMP = B( JROW, JROW )
+ CALL DLARTG( TEMP, B( JROW, JROW-1 ), C, S,
+ $ B( JROW, JROW ) )
+ B( JROW, JROW-1 ) = ZERO
+ CALL DROT( IHI, A( 1, JROW ), 1, A( 1, JROW-1 ), 1, C, S )
+ CALL DROT( JROW-1, B( 1, JROW ), 1, B( 1, JROW-1 ), 1, C,
+ $ S )
+ IF( ILZ )
+ $ CALL DROT( N, Z( 1, JROW ), 1, Z( 1, JROW-1 ), 1, C, S )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+ RETURN
+*
+* End of DGGHRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dhgeqz.f b/2.3-1/src/fortran/lapack/dhgeqz.f
new file mode 100644
index 00000000..de137dc1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dhgeqz.f
@@ -0,0 +1,1243 @@
+ SUBROUTINE DHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
+ $ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK,
+ $ LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ, COMPZ, JOB
+ INTEGER IHI, ILO, INFO, LDH, LDQ, LDT, LDZ, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION ALPHAI( * ), ALPHAR( * ), BETA( * ),
+ $ H( LDH, * ), Q( LDQ, * ), T( LDT, * ),
+ $ WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DHGEQZ computes the eigenvalues of a real matrix pair (H,T),
+* where H is an upper Hessenberg matrix and T is upper triangular,
+* using the double-shift QZ method.
+* Matrix pairs of this type are produced by the reduction to
+* generalized upper Hessenberg form of a real matrix pair (A,B):
+*
+* A = Q1*H*Z1**T, B = Q1*T*Z1**T,
+*
+* as computed by DGGHRD.
+*
+* If JOB='S', then the Hessenberg-triangular pair (H,T) is
+* also reduced to generalized Schur form,
+*
+* H = Q*S*Z**T, T = Q*P*Z**T,
+*
+* where Q and Z are orthogonal matrices, P is an upper triangular
+* matrix, and S is a quasi-triangular matrix with 1-by-1 and 2-by-2
+* diagonal blocks.
+*
+* The 1-by-1 blocks correspond to real eigenvalues of the matrix pair
+* (H,T) and the 2-by-2 blocks correspond to complex conjugate pairs of
+* eigenvalues.
+*
+* Additionally, the 2-by-2 upper triangular diagonal blocks of P
+* corresponding to 2-by-2 blocks of S are reduced to positive diagonal
+* form, i.e., if S(j+1,j) is non-zero, then P(j+1,j) = P(j,j+1) = 0,
+* P(j,j) > 0, and P(j+1,j+1) > 0.
+*
+* Optionally, the orthogonal matrix Q from the generalized Schur
+* factorization may be postmultiplied into an input matrix Q1, and the
+* orthogonal matrix Z may be postmultiplied into an input matrix Z1.
+* If Q1 and Z1 are the orthogonal matrices from DGGHRD that reduced
+* the matrix pair (A,B) to generalized upper Hessenberg form, then the
+* output matrices Q1*Q and Z1*Z are the orthogonal factors from the
+* generalized Schur factorization of (A,B):
+*
+* A = (Q1*Q)*S*(Z1*Z)**T, B = (Q1*Q)*P*(Z1*Z)**T.
+*
+* To avoid overflow, eigenvalues of the matrix pair (H,T) (equivalently,
+* of (A,B)) are computed as a pair of values (alpha,beta), where alpha is
+* complex and beta real.
+* If beta is nonzero, lambda = alpha / beta is an eigenvalue of the
+* generalized nonsymmetric eigenvalue problem (GNEP)
+* A*x = lambda*B*x
+* and if alpha is nonzero, mu = beta / alpha is an eigenvalue of the
+* alternate form of the GNEP
+* mu*A*y = B*y.
+* Real eigenvalues can be read directly from the generalized Schur
+* form:
+* alpha = S(i,i), beta = P(i,i).
+*
+* Ref: C.B. Moler & G.W. Stewart, "An Algorithm for Generalized Matrix
+* Eigenvalue Problems", SIAM J. Numer. Anal., 10(1973),
+* pp. 241--256.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* = 'E': Compute eigenvalues only;
+* = 'S': Compute eigenvalues and the Schur form.
+*
+* COMPQ (input) CHARACTER*1
+* = 'N': Left Schur vectors (Q) are not computed;
+* = 'I': Q is initialized to the unit matrix and the matrix Q
+* of left Schur vectors of (H,T) is returned;
+* = 'V': Q must contain an orthogonal matrix Q1 on entry and
+* the product Q1*Q is returned.
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': Right Schur vectors (Z) are not computed;
+* = 'I': Z is initialized to the unit matrix and the matrix Z
+* of right Schur vectors of (H,T) is returned;
+* = 'V': Z must contain an orthogonal matrix Z1 on entry and
+* the product Z1*Z is returned.
+*
+* N (input) INTEGER
+* The order of the matrices H, T, Q, and Z. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI mark the rows and columns of H which are in
+* Hessenberg form. It is assumed that A is already upper
+* triangular in rows and columns 1:ILO-1 and IHI+1:N.
+* If N > 0, 1 <= ILO <= IHI <= N; if N = 0, ILO=1 and IHI=0.
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH, N)
+* On entry, the N-by-N upper Hessenberg matrix H.
+* On exit, if JOB = 'S', H contains the upper quasi-triangular
+* matrix S from the generalized Schur factorization;
+* 2-by-2 diagonal blocks (corresponding to complex conjugate
+* pairs of eigenvalues) are returned in standard form, with
+* H(i,i) = H(i+1,i+1) and H(i+1,i)*H(i,i+1) < 0.
+* If JOB = 'E', the diagonal blocks of H match those of S, but
+* the rest of H is unspecified.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH >= max( 1, N ).
+*
+* T (input/output) DOUBLE PRECISION array, dimension (LDT, N)
+* On entry, the N-by-N upper triangular matrix T.
+* On exit, if JOB = 'S', T contains the upper triangular
+* matrix P from the generalized Schur factorization;
+* 2-by-2 diagonal blocks of P corresponding to 2-by-2 blocks of S
+* are reduced to positive diagonal form, i.e., if H(j+1,j) is
+* non-zero, then T(j+1,j) = T(j,j+1) = 0, T(j,j) > 0, and
+* T(j+1,j+1) > 0.
+* If JOB = 'E', the diagonal blocks of T match those of P, but
+* the rest of T is unspecified.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max( 1, N ).
+*
+* ALPHAR (output) DOUBLE PRECISION array, dimension (N)
+* The real parts of each scalar alpha defining an eigenvalue
+* of GNEP.
+*
+* ALPHAI (output) DOUBLE PRECISION array, dimension (N)
+* The imaginary parts of each scalar alpha defining an
+* eigenvalue of GNEP.
+* If ALPHAI(j) is zero, then the j-th eigenvalue is real; if
+* positive, then the j-th and (j+1)-st eigenvalues are a
+* complex conjugate pair, with ALPHAI(j+1) = -ALPHAI(j).
+*
+* BETA (output) DOUBLE PRECISION array, dimension (N)
+* The scalars beta that define the eigenvalues of GNEP.
+* Together, the quantities alpha = (ALPHAR(j),ALPHAI(j)) and
+* beta = BETA(j) represent the j-th eigenvalue of the matrix
+* pair (A,B), in one of the forms lambda = alpha/beta or
+* mu = beta/alpha. Since either lambda or mu may overflow,
+* they should not, in general, be computed.
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ, N)
+* On entry, if COMPZ = 'V', the orthogonal matrix Q1 used in
+* the reduction of (A,B) to generalized Hessenberg form.
+* On exit, if COMPZ = 'I', the orthogonal matrix of left Schur
+* vectors of (H,T), and if COMPZ = 'V', the orthogonal matrix
+* of left Schur vectors of (A,B).
+* Not referenced if COMPZ = 'N'.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1.
+* If COMPQ='V' or 'I', then LDQ >= N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ, N)
+* On entry, if COMPZ = 'V', the orthogonal matrix Z1 used in
+* the reduction of (A,B) to generalized Hessenberg form.
+* On exit, if COMPZ = 'I', the orthogonal matrix of
+* right Schur vectors of (H,T), and if COMPZ = 'V', the
+* orthogonal matrix of right Schur vectors of (A,B).
+* Not referenced if COMPZ = 'N'.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1.
+* If COMPZ='V' or 'I', then LDZ >= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO >= 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* = 1,...,N: the QZ iteration did not converge. (H,T) is not
+* in Schur form, but ALPHAR(i), ALPHAI(i), and
+* BETA(i), i=INFO+1,...,N should be correct.
+* = N+1,...,2*N: the shift calculation failed. (H,T) is not
+* in Schur form, but ALPHAR(i), ALPHAI(i), and
+* BETA(i), i=INFO-N+1,...,N should be correct.
+*
+* Further Details
+* ===============
+*
+* Iteration counters:
+*
+* JITER -- counts iterations.
+* IITER -- counts iterations run since ILAST was last
+* changed. This is therefore reset only when a 1-by-1 or
+* 2-by-2 block deflates off the bottom.
+*
+* =====================================================================
+*
+* .. Parameters ..
+* $ SAFETY = 1.0E+0 )
+ DOUBLE PRECISION HALF, ZERO, ONE, SAFETY
+ PARAMETER ( HALF = 0.5D+0, ZERO = 0.0D+0, ONE = 1.0D+0,
+ $ SAFETY = 1.0D+2 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILAZR2, ILAZRO, ILPIVT, ILQ, ILSCHR, ILZ,
+ $ LQUERY
+ INTEGER ICOMPQ, ICOMPZ, IFIRST, IFRSTM, IITER, ILAST,
+ $ ILASTM, IN, ISCHUR, ISTART, J, JC, JCH, JITER,
+ $ JR, MAXIT
+ DOUBLE PRECISION A11, A12, A1I, A1R, A21, A22, A2I, A2R, AD11,
+ $ AD11L, AD12, AD12L, AD21, AD21L, AD22, AD22L,
+ $ AD32L, AN, ANORM, ASCALE, ATOL, B11, B1A, B1I,
+ $ B1R, B22, B2A, B2I, B2R, BN, BNORM, BSCALE,
+ $ BTOL, C, C11I, C11R, C12, C21, C22I, C22R, CL,
+ $ CQ, CR, CZ, ESHIFT, S, S1, S1INV, S2, SAFMAX,
+ $ SAFMIN, SCALE, SL, SQI, SQR, SR, SZI, SZR, T1,
+ $ TAU, TEMP, TEMP2, TEMPI, TEMPR, U1, U12, U12L,
+ $ U2, ULP, VS, W11, W12, W21, W22, WABS, WI, WR,
+ $ WR2
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION V( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, DLANHS, DLAPY2, DLAPY3
+ EXTERNAL LSAME, DLAMCH, DLANHS, DLAPY2, DLAPY3
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAG2, DLARFG, DLARTG, DLASET, DLASV2, DROT,
+ $ XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode JOB, COMPQ, COMPZ
+*
+ IF( LSAME( JOB, 'E' ) ) THEN
+ ILSCHR = .FALSE.
+ ISCHUR = 1
+ ELSE IF( LSAME( JOB, 'S' ) ) THEN
+ ILSCHR = .TRUE.
+ ISCHUR = 2
+ ELSE
+ ISCHUR = 0
+ END IF
+*
+ IF( LSAME( COMPQ, 'N' ) ) THEN
+ ILQ = .FALSE.
+ ICOMPQ = 1
+ ELSE IF( LSAME( COMPQ, 'V' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 2
+ ELSE IF( LSAME( COMPQ, 'I' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 3
+ ELSE
+ ICOMPQ = 0
+ END IF
+*
+ IF( LSAME( COMPZ, 'N' ) ) THEN
+ ILZ = .FALSE.
+ ICOMPZ = 1
+ ELSE IF( LSAME( COMPZ, 'V' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 2
+ ELSE IF( LSAME( COMPZ, 'I' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 3
+ ELSE
+ ICOMPZ = 0
+ END IF
+*
+* Check Argument Values
+*
+ INFO = 0
+ WORK( 1 ) = MAX( 1, N )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( ISCHUR.EQ.0 ) THEN
+ INFO = -1
+ ELSE IF( ICOMPQ.EQ.0 ) THEN
+ INFO = -2
+ ELSE IF( ICOMPZ.EQ.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( ILO.LT.1 ) THEN
+ INFO = -5
+ ELSE IF( IHI.GT.N .OR. IHI.LT.ILO-1 ) THEN
+ INFO = -6
+ ELSE IF( LDH.LT.N ) THEN
+ INFO = -8
+ ELSE IF( LDT.LT.N ) THEN
+ INFO = -10
+ ELSE IF( LDQ.LT.1 .OR. ( ILQ .AND. LDQ.LT.N ) ) THEN
+ INFO = -15
+ ELSE IF( LDZ.LT.1 .OR. ( ILZ .AND. LDZ.LT.N ) ) THEN
+ INFO = -17
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -19
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DHGEQZ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 ) THEN
+ WORK( 1 ) = DBLE( 1 )
+ RETURN
+ END IF
+*
+* Initialize Q and Z
+*
+ IF( ICOMPQ.EQ.3 )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, Q, LDQ )
+ IF( ICOMPZ.EQ.3 )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, Z, LDZ )
+*
+* Machine Constants
+*
+ IN = IHI + 1 - ILO
+ SAFMIN = DLAMCH( 'S' )
+ SAFMAX = ONE / SAFMIN
+ ULP = DLAMCH( 'E' )*DLAMCH( 'B' )
+ ANORM = DLANHS( 'F', IN, H( ILO, ILO ), LDH, WORK )
+ BNORM = DLANHS( 'F', IN, T( ILO, ILO ), LDT, WORK )
+ ATOL = MAX( SAFMIN, ULP*ANORM )
+ BTOL = MAX( SAFMIN, ULP*BNORM )
+ ASCALE = ONE / MAX( SAFMIN, ANORM )
+ BSCALE = ONE / MAX( SAFMIN, BNORM )
+*
+* Set Eigenvalues IHI+1:N
+*
+ DO 30 J = IHI + 1, N
+ IF( T( J, J ).LT.ZERO ) THEN
+ IF( ILSCHR ) THEN
+ DO 10 JR = 1, J
+ H( JR, J ) = -H( JR, J )
+ T( JR, J ) = -T( JR, J )
+ 10 CONTINUE
+ ELSE
+ H( J, J ) = -H( J, J )
+ T( J, J ) = -T( J, J )
+ END IF
+ IF( ILZ ) THEN
+ DO 20 JR = 1, N
+ Z( JR, J ) = -Z( JR, J )
+ 20 CONTINUE
+ END IF
+ END IF
+ ALPHAR( J ) = H( J, J )
+ ALPHAI( J ) = ZERO
+ BETA( J ) = T( J, J )
+ 30 CONTINUE
+*
+* If IHI < ILO, skip QZ steps
+*
+ IF( IHI.LT.ILO )
+ $ GO TO 380
+*
+* MAIN QZ ITERATION LOOP
+*
+* Initialize dynamic indices
+*
+* Eigenvalues ILAST+1:N have been found.
+* Column operations modify rows IFRSTM:whatever.
+* Row operations modify columns whatever:ILASTM.
+*
+* If only eigenvalues are being computed, then
+* IFRSTM is the row of the last splitting row above row ILAST;
+* this is always at least ILO.
+* IITER counts iterations since the last eigenvalue was found,
+* to tell when to use an extraordinary shift.
+* MAXIT is the maximum number of QZ sweeps allowed.
+*
+ ILAST = IHI
+ IF( ILSCHR ) THEN
+ IFRSTM = 1
+ ILASTM = N
+ ELSE
+ IFRSTM = ILO
+ ILASTM = IHI
+ END IF
+ IITER = 0
+ ESHIFT = ZERO
+ MAXIT = 30*( IHI-ILO+1 )
+*
+ DO 360 JITER = 1, MAXIT
+*
+* Split the matrix if possible.
+*
+* Two tests:
+* 1: H(j,j-1)=0 or j=ILO
+* 2: T(j,j)=0
+*
+ IF( ILAST.EQ.ILO ) THEN
+*
+* Special case: j=ILAST
+*
+ GO TO 80
+ ELSE
+ IF( ABS( H( ILAST, ILAST-1 ) ).LE.ATOL ) THEN
+ H( ILAST, ILAST-1 ) = ZERO
+ GO TO 80
+ END IF
+ END IF
+*
+ IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
+ T( ILAST, ILAST ) = ZERO
+ GO TO 70
+ END IF
+*
+* General case: j<ILAST
+*
+ DO 60 J = ILAST - 1, ILO, -1
+*
+* Test 1: for H(j,j-1)=0 or j=ILO
+*
+ IF( J.EQ.ILO ) THEN
+ ILAZRO = .TRUE.
+ ELSE
+ IF( ABS( H( J, J-1 ) ).LE.ATOL ) THEN
+ H( J, J-1 ) = ZERO
+ ILAZRO = .TRUE.
+ ELSE
+ ILAZRO = .FALSE.
+ END IF
+ END IF
+*
+* Test 2: for T(j,j)=0
+*
+ IF( ABS( T( J, J ) ).LT.BTOL ) THEN
+ T( J, J ) = ZERO
+*
+* Test 1a: Check for 2 consecutive small subdiagonals in A
+*
+ ILAZR2 = .FALSE.
+ IF( .NOT.ILAZRO ) THEN
+ TEMP = ABS( H( J, J-1 ) )
+ TEMP2 = ABS( H( J, J ) )
+ TEMPR = MAX( TEMP, TEMP2 )
+ IF( TEMPR.LT.ONE .AND. TEMPR.NE.ZERO ) THEN
+ TEMP = TEMP / TEMPR
+ TEMP2 = TEMP2 / TEMPR
+ END IF
+ IF( TEMP*( ASCALE*ABS( H( J+1, J ) ) ).LE.TEMP2*
+ $ ( ASCALE*ATOL ) )ILAZR2 = .TRUE.
+ END IF
+*
+* If both tests pass (1 & 2), i.e., the leading diagonal
+* element of B in the block is zero, split a 1x1 block off
+* at the top. (I.e., at the J-th row/column) The leading
+* diagonal element of the remainder can also be zero, so
+* this may have to be done repeatedly.
+*
+ IF( ILAZRO .OR. ILAZR2 ) THEN
+ DO 40 JCH = J, ILAST - 1
+ TEMP = H( JCH, JCH )
+ CALL DLARTG( TEMP, H( JCH+1, JCH ), C, S,
+ $ H( JCH, JCH ) )
+ H( JCH+1, JCH ) = ZERO
+ CALL DROT( ILASTM-JCH, H( JCH, JCH+1 ), LDH,
+ $ H( JCH+1, JCH+1 ), LDH, C, S )
+ CALL DROT( ILASTM-JCH, T( JCH, JCH+1 ), LDT,
+ $ T( JCH+1, JCH+1 ), LDT, C, S )
+ IF( ILQ )
+ $ CALL DROT( N, Q( 1, JCH ), 1, Q( 1, JCH+1 ), 1,
+ $ C, S )
+ IF( ILAZR2 )
+ $ H( JCH, JCH-1 ) = H( JCH, JCH-1 )*C
+ ILAZR2 = .FALSE.
+ IF( ABS( T( JCH+1, JCH+1 ) ).GE.BTOL ) THEN
+ IF( JCH+1.GE.ILAST ) THEN
+ GO TO 80
+ ELSE
+ IFIRST = JCH + 1
+ GO TO 110
+ END IF
+ END IF
+ T( JCH+1, JCH+1 ) = ZERO
+ 40 CONTINUE
+ GO TO 70
+ ELSE
+*
+* Only test 2 passed -- chase the zero to T(ILAST,ILAST)
+* Then process as in the case T(ILAST,ILAST)=0
+*
+ DO 50 JCH = J, ILAST - 1
+ TEMP = T( JCH, JCH+1 )
+ CALL DLARTG( TEMP, T( JCH+1, JCH+1 ), C, S,
+ $ T( JCH, JCH+1 ) )
+ T( JCH+1, JCH+1 ) = ZERO
+ IF( JCH.LT.ILASTM-1 )
+ $ CALL DROT( ILASTM-JCH-1, T( JCH, JCH+2 ), LDT,
+ $ T( JCH+1, JCH+2 ), LDT, C, S )
+ CALL DROT( ILASTM-JCH+2, H( JCH, JCH-1 ), LDH,
+ $ H( JCH+1, JCH-1 ), LDH, C, S )
+ IF( ILQ )
+ $ CALL DROT( N, Q( 1, JCH ), 1, Q( 1, JCH+1 ), 1,
+ $ C, S )
+ TEMP = H( JCH+1, JCH )
+ CALL DLARTG( TEMP, H( JCH+1, JCH-1 ), C, S,
+ $ H( JCH+1, JCH ) )
+ H( JCH+1, JCH-1 ) = ZERO
+ CALL DROT( JCH+1-IFRSTM, H( IFRSTM, JCH ), 1,
+ $ H( IFRSTM, JCH-1 ), 1, C, S )
+ CALL DROT( JCH-IFRSTM, T( IFRSTM, JCH ), 1,
+ $ T( IFRSTM, JCH-1 ), 1, C, S )
+ IF( ILZ )
+ $ CALL DROT( N, Z( 1, JCH ), 1, Z( 1, JCH-1 ), 1,
+ $ C, S )
+ 50 CONTINUE
+ GO TO 70
+ END IF
+ ELSE IF( ILAZRO ) THEN
+*
+* Only test 1 passed -- work on J:ILAST
+*
+ IFIRST = J
+ GO TO 110
+ END IF
+*
+* Neither test passed -- try next J
+*
+ 60 CONTINUE
+*
+* (Drop-through is "impossible")
+*
+ INFO = N + 1
+ GO TO 420
+*
+* T(ILAST,ILAST)=0 -- clear H(ILAST,ILAST-1) to split off a
+* 1x1 block.
+*
+ 70 CONTINUE
+ TEMP = H( ILAST, ILAST )
+ CALL DLARTG( TEMP, H( ILAST, ILAST-1 ), C, S,
+ $ H( ILAST, ILAST ) )
+ H( ILAST, ILAST-1 ) = ZERO
+ CALL DROT( ILAST-IFRSTM, H( IFRSTM, ILAST ), 1,
+ $ H( IFRSTM, ILAST-1 ), 1, C, S )
+ CALL DROT( ILAST-IFRSTM, T( IFRSTM, ILAST ), 1,
+ $ T( IFRSTM, ILAST-1 ), 1, C, S )
+ IF( ILZ )
+ $ CALL DROT( N, Z( 1, ILAST ), 1, Z( 1, ILAST-1 ), 1, C, S )
+*
+* H(ILAST,ILAST-1)=0 -- Standardize B, set ALPHAR, ALPHAI,
+* and BETA
+*
+ 80 CONTINUE
+ IF( T( ILAST, ILAST ).LT.ZERO ) THEN
+ IF( ILSCHR ) THEN
+ DO 90 J = IFRSTM, ILAST
+ H( J, ILAST ) = -H( J, ILAST )
+ T( J, ILAST ) = -T( J, ILAST )
+ 90 CONTINUE
+ ELSE
+ H( ILAST, ILAST ) = -H( ILAST, ILAST )
+ T( ILAST, ILAST ) = -T( ILAST, ILAST )
+ END IF
+ IF( ILZ ) THEN
+ DO 100 J = 1, N
+ Z( J, ILAST ) = -Z( J, ILAST )
+ 100 CONTINUE
+ END IF
+ END IF
+ ALPHAR( ILAST ) = H( ILAST, ILAST )
+ ALPHAI( ILAST ) = ZERO
+ BETA( ILAST ) = T( ILAST, ILAST )
+*
+* Go to next block -- exit if finished.
+*
+ ILAST = ILAST - 1
+ IF( ILAST.LT.ILO )
+ $ GO TO 380
+*
+* Reset counters
+*
+ IITER = 0
+ ESHIFT = ZERO
+ IF( .NOT.ILSCHR ) THEN
+ ILASTM = ILAST
+ IF( IFRSTM.GT.ILAST )
+ $ IFRSTM = ILO
+ END IF
+ GO TO 350
+*
+* QZ step
+*
+* This iteration only involves rows/columns IFIRST:ILAST. We
+* assume IFIRST < ILAST, and that the diagonal of B is non-zero.
+*
+ 110 CONTINUE
+ IITER = IITER + 1
+ IF( .NOT.ILSCHR ) THEN
+ IFRSTM = IFIRST
+ END IF
+*
+* Compute single shifts.
+*
+* At this point, IFIRST < ILAST, and the diagonal elements of
+* T(IFIRST:ILAST,IFIRST,ILAST) are larger than BTOL (in
+* magnitude)
+*
+ IF( ( IITER / 10 )*10.EQ.IITER ) THEN
+*
+* Exceptional shift. Chosen for no particularly good reason.
+* (Single shift only.)
+*
+ IF( ( DBLE( MAXIT )*SAFMIN )*ABS( H( ILAST-1, ILAST ) ).LT.
+ $ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN
+ ESHIFT = ESHIFT + H( ILAST-1, ILAST ) /
+ $ T( ILAST-1, ILAST-1 )
+ ELSE
+ ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) )
+ END IF
+ S1 = ONE
+ WR = ESHIFT
+*
+ ELSE
+*
+* Shifts based on the generalized eigenvalues of the
+* bottom-right 2x2 block of A and B. The first eigenvalue
+* returned by DLAG2 is the Wilkinson shift (AEP p.512),
+*
+ CALL DLAG2( H( ILAST-1, ILAST-1 ), LDH,
+ $ T( ILAST-1, ILAST-1 ), LDT, SAFMIN*SAFETY, S1,
+ $ S2, WR, WR2, WI )
+*
+ TEMP = MAX( S1, SAFMIN*MAX( ONE, ABS( WR ), ABS( WI ) ) )
+ IF( WI.NE.ZERO )
+ $ GO TO 200
+ END IF
+*
+* Fiddle with shift to avoid overflow
+*
+ TEMP = MIN( ASCALE, ONE )*( HALF*SAFMAX )
+ IF( S1.GT.TEMP ) THEN
+ SCALE = TEMP / S1
+ ELSE
+ SCALE = ONE
+ END IF
+*
+ TEMP = MIN( BSCALE, ONE )*( HALF*SAFMAX )
+ IF( ABS( WR ).GT.TEMP )
+ $ SCALE = MIN( SCALE, TEMP / ABS( WR ) )
+ S1 = SCALE*S1
+ WR = SCALE*WR
+*
+* Now check for two consecutive small subdiagonals.
+*
+ DO 120 J = ILAST - 1, IFIRST + 1, -1
+ ISTART = J
+ TEMP = ABS( S1*H( J, J-1 ) )
+ TEMP2 = ABS( S1*H( J, J )-WR*T( J, J ) )
+ TEMPR = MAX( TEMP, TEMP2 )
+ IF( TEMPR.LT.ONE .AND. TEMPR.NE.ZERO ) THEN
+ TEMP = TEMP / TEMPR
+ TEMP2 = TEMP2 / TEMPR
+ END IF
+ IF( ABS( ( ASCALE*H( J+1, J ) )*TEMP ).LE.( ASCALE*ATOL )*
+ $ TEMP2 )GO TO 130
+ 120 CONTINUE
+*
+ ISTART = IFIRST
+ 130 CONTINUE
+*
+* Do an implicit single-shift QZ sweep.
+*
+* Initial Q
+*
+ TEMP = S1*H( ISTART, ISTART ) - WR*T( ISTART, ISTART )
+ TEMP2 = S1*H( ISTART+1, ISTART )
+ CALL DLARTG( TEMP, TEMP2, C, S, TEMPR )
+*
+* Sweep
+*
+ DO 190 J = ISTART, ILAST - 1
+ IF( J.GT.ISTART ) THEN
+ TEMP = H( J, J-1 )
+ CALL DLARTG( TEMP, H( J+1, J-1 ), C, S, H( J, J-1 ) )
+ H( J+1, J-1 ) = ZERO
+ END IF
+*
+ DO 140 JC = J, ILASTM
+ TEMP = C*H( J, JC ) + S*H( J+1, JC )
+ H( J+1, JC ) = -S*H( J, JC ) + C*H( J+1, JC )
+ H( J, JC ) = TEMP
+ TEMP2 = C*T( J, JC ) + S*T( J+1, JC )
+ T( J+1, JC ) = -S*T( J, JC ) + C*T( J+1, JC )
+ T( J, JC ) = TEMP2
+ 140 CONTINUE
+ IF( ILQ ) THEN
+ DO 150 JR = 1, N
+ TEMP = C*Q( JR, J ) + S*Q( JR, J+1 )
+ Q( JR, J+1 ) = -S*Q( JR, J ) + C*Q( JR, J+1 )
+ Q( JR, J ) = TEMP
+ 150 CONTINUE
+ END IF
+*
+ TEMP = T( J+1, J+1 )
+ CALL DLARTG( TEMP, T( J+1, J ), C, S, T( J+1, J+1 ) )
+ T( J+1, J ) = ZERO
+*
+ DO 160 JR = IFRSTM, MIN( J+2, ILAST )
+ TEMP = C*H( JR, J+1 ) + S*H( JR, J )
+ H( JR, J ) = -S*H( JR, J+1 ) + C*H( JR, J )
+ H( JR, J+1 ) = TEMP
+ 160 CONTINUE
+ DO 170 JR = IFRSTM, J
+ TEMP = C*T( JR, J+1 ) + S*T( JR, J )
+ T( JR, J ) = -S*T( JR, J+1 ) + C*T( JR, J )
+ T( JR, J+1 ) = TEMP
+ 170 CONTINUE
+ IF( ILZ ) THEN
+ DO 180 JR = 1, N
+ TEMP = C*Z( JR, J+1 ) + S*Z( JR, J )
+ Z( JR, J ) = -S*Z( JR, J+1 ) + C*Z( JR, J )
+ Z( JR, J+1 ) = TEMP
+ 180 CONTINUE
+ END IF
+ 190 CONTINUE
+*
+ GO TO 350
+*
+* Use Francis double-shift
+*
+* Note: the Francis double-shift should work with real shifts,
+* but only if the block is at least 3x3.
+* This code may break if this point is reached with
+* a 2x2 block with real eigenvalues.
+*
+ 200 CONTINUE
+ IF( IFIRST+1.EQ.ILAST ) THEN
+*
+* Special case -- 2x2 block with complex eigenvectors
+*
+* Step 1: Standardize, that is, rotate so that
+*
+* ( B11 0 )
+* B = ( ) with B11 non-negative.
+* ( 0 B22 )
+*
+ CALL DLASV2( T( ILAST-1, ILAST-1 ), T( ILAST-1, ILAST ),
+ $ T( ILAST, ILAST ), B22, B11, SR, CR, SL, CL )
+*
+ IF( B11.LT.ZERO ) THEN
+ CR = -CR
+ SR = -SR
+ B11 = -B11
+ B22 = -B22
+ END IF
+*
+ CALL DROT( ILASTM+1-IFIRST, H( ILAST-1, ILAST-1 ), LDH,
+ $ H( ILAST, ILAST-1 ), LDH, CL, SL )
+ CALL DROT( ILAST+1-IFRSTM, H( IFRSTM, ILAST-1 ), 1,
+ $ H( IFRSTM, ILAST ), 1, CR, SR )
+*
+ IF( ILAST.LT.ILASTM )
+ $ CALL DROT( ILASTM-ILAST, T( ILAST-1, ILAST+1 ), LDT,
+ $ T( ILAST, ILAST+1 ), LDH, CL, SL )
+ IF( IFRSTM.LT.ILAST-1 )
+ $ CALL DROT( IFIRST-IFRSTM, T( IFRSTM, ILAST-1 ), 1,
+ $ T( IFRSTM, ILAST ), 1, CR, SR )
+*
+ IF( ILQ )
+ $ CALL DROT( N, Q( 1, ILAST-1 ), 1, Q( 1, ILAST ), 1, CL,
+ $ SL )
+ IF( ILZ )
+ $ CALL DROT( N, Z( 1, ILAST-1 ), 1, Z( 1, ILAST ), 1, CR,
+ $ SR )
+*
+ T( ILAST-1, ILAST-1 ) = B11
+ T( ILAST-1, ILAST ) = ZERO
+ T( ILAST, ILAST-1 ) = ZERO
+ T( ILAST, ILAST ) = B22
+*
+* If B22 is negative, negate column ILAST
+*
+ IF( B22.LT.ZERO ) THEN
+ DO 210 J = IFRSTM, ILAST
+ H( J, ILAST ) = -H( J, ILAST )
+ T( J, ILAST ) = -T( J, ILAST )
+ 210 CONTINUE
+*
+ IF( ILZ ) THEN
+ DO 220 J = 1, N
+ Z( J, ILAST ) = -Z( J, ILAST )
+ 220 CONTINUE
+ END IF
+ END IF
+*
+* Step 2: Compute ALPHAR, ALPHAI, and BETA (see refs.)
+*
+* Recompute shift
+*
+ CALL DLAG2( H( ILAST-1, ILAST-1 ), LDH,
+ $ T( ILAST-1, ILAST-1 ), LDT, SAFMIN*SAFETY, S1,
+ $ TEMP, WR, TEMP2, WI )
+*
+* If standardization has perturbed the shift onto real line,
+* do another (real single-shift) QR step.
+*
+ IF( WI.EQ.ZERO )
+ $ GO TO 350
+ S1INV = ONE / S1
+*
+* Do EISPACK (QZVAL) computation of alpha and beta
+*
+ A11 = H( ILAST-1, ILAST-1 )
+ A21 = H( ILAST, ILAST-1 )
+ A12 = H( ILAST-1, ILAST )
+ A22 = H( ILAST, ILAST )
+*
+* Compute complex Givens rotation on right
+* (Assume some element of C = (sA - wB) > unfl )
+* __
+* (sA - wB) ( CZ -SZ )
+* ( SZ CZ )
+*
+ C11R = S1*A11 - WR*B11
+ C11I = -WI*B11
+ C12 = S1*A12
+ C21 = S1*A21
+ C22R = S1*A22 - WR*B22
+ C22I = -WI*B22
+*
+ IF( ABS( C11R )+ABS( C11I )+ABS( C12 ).GT.ABS( C21 )+
+ $ ABS( C22R )+ABS( C22I ) ) THEN
+ T1 = DLAPY3( C12, C11R, C11I )
+ CZ = C12 / T1
+ SZR = -C11R / T1
+ SZI = -C11I / T1
+ ELSE
+ CZ = DLAPY2( C22R, C22I )
+ IF( CZ.LE.SAFMIN ) THEN
+ CZ = ZERO
+ SZR = ONE
+ SZI = ZERO
+ ELSE
+ TEMPR = C22R / CZ
+ TEMPI = C22I / CZ
+ T1 = DLAPY2( CZ, C21 )
+ CZ = CZ / T1
+ SZR = -C21*TEMPR / T1
+ SZI = C21*TEMPI / T1
+ END IF
+ END IF
+*
+* Compute Givens rotation on left
+*
+* ( CQ SQ )
+* ( __ ) A or B
+* ( -SQ CQ )
+*
+ AN = ABS( A11 ) + ABS( A12 ) + ABS( A21 ) + ABS( A22 )
+ BN = ABS( B11 ) + ABS( B22 )
+ WABS = ABS( WR ) + ABS( WI )
+ IF( S1*AN.GT.WABS*BN ) THEN
+ CQ = CZ*B11
+ SQR = SZR*B22
+ SQI = -SZI*B22
+ ELSE
+ A1R = CZ*A11 + SZR*A12
+ A1I = SZI*A12
+ A2R = CZ*A21 + SZR*A22
+ A2I = SZI*A22
+ CQ = DLAPY2( A1R, A1I )
+ IF( CQ.LE.SAFMIN ) THEN
+ CQ = ZERO
+ SQR = ONE
+ SQI = ZERO
+ ELSE
+ TEMPR = A1R / CQ
+ TEMPI = A1I / CQ
+ SQR = TEMPR*A2R + TEMPI*A2I
+ SQI = TEMPI*A2R - TEMPR*A2I
+ END IF
+ END IF
+ T1 = DLAPY3( CQ, SQR, SQI )
+ CQ = CQ / T1
+ SQR = SQR / T1
+ SQI = SQI / T1
+*
+* Compute diagonal elements of QBZ
+*
+ TEMPR = SQR*SZR - SQI*SZI
+ TEMPI = SQR*SZI + SQI*SZR
+ B1R = CQ*CZ*B11 + TEMPR*B22
+ B1I = TEMPI*B22
+ B1A = DLAPY2( B1R, B1I )
+ B2R = CQ*CZ*B22 + TEMPR*B11
+ B2I = -TEMPI*B11
+ B2A = DLAPY2( B2R, B2I )
+*
+* Normalize so beta > 0, and Im( alpha1 ) > 0
+*
+ BETA( ILAST-1 ) = B1A
+ BETA( ILAST ) = B2A
+ ALPHAR( ILAST-1 ) = ( WR*B1A )*S1INV
+ ALPHAI( ILAST-1 ) = ( WI*B1A )*S1INV
+ ALPHAR( ILAST ) = ( WR*B2A )*S1INV
+ ALPHAI( ILAST ) = -( WI*B2A )*S1INV
+*
+* Step 3: Go to next block -- exit if finished.
+*
+ ILAST = IFIRST - 1
+ IF( ILAST.LT.ILO )
+ $ GO TO 380
+*
+* Reset counters
+*
+ IITER = 0
+ ESHIFT = ZERO
+ IF( .NOT.ILSCHR ) THEN
+ ILASTM = ILAST
+ IF( IFRSTM.GT.ILAST )
+ $ IFRSTM = ILO
+ END IF
+ GO TO 350
+ ELSE
+*
+* Usual case: 3x3 or larger block, using Francis implicit
+* double-shift
+*
+* 2
+* Eigenvalue equation is w - c w + d = 0,
+*
+* -1 2 -1
+* so compute 1st column of (A B ) - c A B + d
+* using the formula in QZIT (from EISPACK)
+*
+* We assume that the block is at least 3x3
+*
+ AD11 = ( ASCALE*H( ILAST-1, ILAST-1 ) ) /
+ $ ( BSCALE*T( ILAST-1, ILAST-1 ) )
+ AD21 = ( ASCALE*H( ILAST, ILAST-1 ) ) /
+ $ ( BSCALE*T( ILAST-1, ILAST-1 ) )
+ AD12 = ( ASCALE*H( ILAST-1, ILAST ) ) /
+ $ ( BSCALE*T( ILAST, ILAST ) )
+ AD22 = ( ASCALE*H( ILAST, ILAST ) ) /
+ $ ( BSCALE*T( ILAST, ILAST ) )
+ U12 = T( ILAST-1, ILAST ) / T( ILAST, ILAST )
+ AD11L = ( ASCALE*H( IFIRST, IFIRST ) ) /
+ $ ( BSCALE*T( IFIRST, IFIRST ) )
+ AD21L = ( ASCALE*H( IFIRST+1, IFIRST ) ) /
+ $ ( BSCALE*T( IFIRST, IFIRST ) )
+ AD12L = ( ASCALE*H( IFIRST, IFIRST+1 ) ) /
+ $ ( BSCALE*T( IFIRST+1, IFIRST+1 ) )
+ AD22L = ( ASCALE*H( IFIRST+1, IFIRST+1 ) ) /
+ $ ( BSCALE*T( IFIRST+1, IFIRST+1 ) )
+ AD32L = ( ASCALE*H( IFIRST+2, IFIRST+1 ) ) /
+ $ ( BSCALE*T( IFIRST+1, IFIRST+1 ) )
+ U12L = T( IFIRST, IFIRST+1 ) / T( IFIRST+1, IFIRST+1 )
+*
+ V( 1 ) = ( AD11-AD11L )*( AD22-AD11L ) - AD12*AD21 +
+ $ AD21*U12*AD11L + ( AD12L-AD11L*U12L )*AD21L
+ V( 2 ) = ( ( AD22L-AD11L )-AD21L*U12L-( AD11-AD11L )-
+ $ ( AD22-AD11L )+AD21*U12 )*AD21L
+ V( 3 ) = AD32L*AD21L
+*
+ ISTART = IFIRST
+*
+ CALL DLARFG( 3, V( 1 ), V( 2 ), 1, TAU )
+ V( 1 ) = ONE
+*
+* Sweep
+*
+ DO 290 J = ISTART, ILAST - 2
+*
+* All but last elements: use 3x3 Householder transforms.
+*
+* Zero (j-1)st column of A
+*
+ IF( J.GT.ISTART ) THEN
+ V( 1 ) = H( J, J-1 )
+ V( 2 ) = H( J+1, J-1 )
+ V( 3 ) = H( J+2, J-1 )
+*
+ CALL DLARFG( 3, H( J, J-1 ), V( 2 ), 1, TAU )
+ V( 1 ) = ONE
+ H( J+1, J-1 ) = ZERO
+ H( J+2, J-1 ) = ZERO
+ END IF
+*
+ DO 230 JC = J, ILASTM
+ TEMP = TAU*( H( J, JC )+V( 2 )*H( J+1, JC )+V( 3 )*
+ $ H( J+2, JC ) )
+ H( J, JC ) = H( J, JC ) - TEMP
+ H( J+1, JC ) = H( J+1, JC ) - TEMP*V( 2 )
+ H( J+2, JC ) = H( J+2, JC ) - TEMP*V( 3 )
+ TEMP2 = TAU*( T( J, JC )+V( 2 )*T( J+1, JC )+V( 3 )*
+ $ T( J+2, JC ) )
+ T( J, JC ) = T( J, JC ) - TEMP2
+ T( J+1, JC ) = T( J+1, JC ) - TEMP2*V( 2 )
+ T( J+2, JC ) = T( J+2, JC ) - TEMP2*V( 3 )
+ 230 CONTINUE
+ IF( ILQ ) THEN
+ DO 240 JR = 1, N
+ TEMP = TAU*( Q( JR, J )+V( 2 )*Q( JR, J+1 )+V( 3 )*
+ $ Q( JR, J+2 ) )
+ Q( JR, J ) = Q( JR, J ) - TEMP
+ Q( JR, J+1 ) = Q( JR, J+1 ) - TEMP*V( 2 )
+ Q( JR, J+2 ) = Q( JR, J+2 ) - TEMP*V( 3 )
+ 240 CONTINUE
+ END IF
+*
+* Zero j-th column of B (see DLAGBC for details)
+*
+* Swap rows to pivot
+*
+ ILPIVT = .FALSE.
+ TEMP = MAX( ABS( T( J+1, J+1 ) ), ABS( T( J+1, J+2 ) ) )
+ TEMP2 = MAX( ABS( T( J+2, J+1 ) ), ABS( T( J+2, J+2 ) ) )
+ IF( MAX( TEMP, TEMP2 ).LT.SAFMIN ) THEN
+ SCALE = ZERO
+ U1 = ONE
+ U2 = ZERO
+ GO TO 250
+ ELSE IF( TEMP.GE.TEMP2 ) THEN
+ W11 = T( J+1, J+1 )
+ W21 = T( J+2, J+1 )
+ W12 = T( J+1, J+2 )
+ W22 = T( J+2, J+2 )
+ U1 = T( J+1, J )
+ U2 = T( J+2, J )
+ ELSE
+ W21 = T( J+1, J+1 )
+ W11 = T( J+2, J+1 )
+ W22 = T( J+1, J+2 )
+ W12 = T( J+2, J+2 )
+ U2 = T( J+1, J )
+ U1 = T( J+2, J )
+ END IF
+*
+* Swap columns if nec.
+*
+ IF( ABS( W12 ).GT.ABS( W11 ) ) THEN
+ ILPIVT = .TRUE.
+ TEMP = W12
+ TEMP2 = W22
+ W12 = W11
+ W22 = W21
+ W11 = TEMP
+ W21 = TEMP2
+ END IF
+*
+* LU-factor
+*
+ TEMP = W21 / W11
+ U2 = U2 - TEMP*U1
+ W22 = W22 - TEMP*W12
+ W21 = ZERO
+*
+* Compute SCALE
+*
+ SCALE = ONE
+ IF( ABS( W22 ).LT.SAFMIN ) THEN
+ SCALE = ZERO
+ U2 = ONE
+ U1 = -W12 / W11
+ GO TO 250
+ END IF
+ IF( ABS( W22 ).LT.ABS( U2 ) )
+ $ SCALE = ABS( W22 / U2 )
+ IF( ABS( W11 ).LT.ABS( U1 ) )
+ $ SCALE = MIN( SCALE, ABS( W11 / U1 ) )
+*
+* Solve
+*
+ U2 = ( SCALE*U2 ) / W22
+ U1 = ( SCALE*U1-W12*U2 ) / W11
+*
+ 250 CONTINUE
+ IF( ILPIVT ) THEN
+ TEMP = U2
+ U2 = U1
+ U1 = TEMP
+ END IF
+*
+* Compute Householder Vector
+*
+ T1 = SQRT( SCALE**2+U1**2+U2**2 )
+ TAU = ONE + SCALE / T1
+ VS = -ONE / ( SCALE+T1 )
+ V( 1 ) = ONE
+ V( 2 ) = VS*U1
+ V( 3 ) = VS*U2
+*
+* Apply transformations from the right.
+*
+ DO 260 JR = IFRSTM, MIN( J+3, ILAST )
+ TEMP = TAU*( H( JR, J )+V( 2 )*H( JR, J+1 )+V( 3 )*
+ $ H( JR, J+2 ) )
+ H( JR, J ) = H( JR, J ) - TEMP
+ H( JR, J+1 ) = H( JR, J+1 ) - TEMP*V( 2 )
+ H( JR, J+2 ) = H( JR, J+2 ) - TEMP*V( 3 )
+ 260 CONTINUE
+ DO 270 JR = IFRSTM, J + 2
+ TEMP = TAU*( T( JR, J )+V( 2 )*T( JR, J+1 )+V( 3 )*
+ $ T( JR, J+2 ) )
+ T( JR, J ) = T( JR, J ) - TEMP
+ T( JR, J+1 ) = T( JR, J+1 ) - TEMP*V( 2 )
+ T( JR, J+2 ) = T( JR, J+2 ) - TEMP*V( 3 )
+ 270 CONTINUE
+ IF( ILZ ) THEN
+ DO 280 JR = 1, N
+ TEMP = TAU*( Z( JR, J )+V( 2 )*Z( JR, J+1 )+V( 3 )*
+ $ Z( JR, J+2 ) )
+ Z( JR, J ) = Z( JR, J ) - TEMP
+ Z( JR, J+1 ) = Z( JR, J+1 ) - TEMP*V( 2 )
+ Z( JR, J+2 ) = Z( JR, J+2 ) - TEMP*V( 3 )
+ 280 CONTINUE
+ END IF
+ T( J+1, J ) = ZERO
+ T( J+2, J ) = ZERO
+ 290 CONTINUE
+*
+* Last elements: Use Givens rotations
+*
+* Rotations from the left
+*
+ J = ILAST - 1
+ TEMP = H( J, J-1 )
+ CALL DLARTG( TEMP, H( J+1, J-1 ), C, S, H( J, J-1 ) )
+ H( J+1, J-1 ) = ZERO
+*
+ DO 300 JC = J, ILASTM
+ TEMP = C*H( J, JC ) + S*H( J+1, JC )
+ H( J+1, JC ) = -S*H( J, JC ) + C*H( J+1, JC )
+ H( J, JC ) = TEMP
+ TEMP2 = C*T( J, JC ) + S*T( J+1, JC )
+ T( J+1, JC ) = -S*T( J, JC ) + C*T( J+1, JC )
+ T( J, JC ) = TEMP2
+ 300 CONTINUE
+ IF( ILQ ) THEN
+ DO 310 JR = 1, N
+ TEMP = C*Q( JR, J ) + S*Q( JR, J+1 )
+ Q( JR, J+1 ) = -S*Q( JR, J ) + C*Q( JR, J+1 )
+ Q( JR, J ) = TEMP
+ 310 CONTINUE
+ END IF
+*
+* Rotations from the right.
+*
+ TEMP = T( J+1, J+1 )
+ CALL DLARTG( TEMP, T( J+1, J ), C, S, T( J+1, J+1 ) )
+ T( J+1, J ) = ZERO
+*
+ DO 320 JR = IFRSTM, ILAST
+ TEMP = C*H( JR, J+1 ) + S*H( JR, J )
+ H( JR, J ) = -S*H( JR, J+1 ) + C*H( JR, J )
+ H( JR, J+1 ) = TEMP
+ 320 CONTINUE
+ DO 330 JR = IFRSTM, ILAST - 1
+ TEMP = C*T( JR, J+1 ) + S*T( JR, J )
+ T( JR, J ) = -S*T( JR, J+1 ) + C*T( JR, J )
+ T( JR, J+1 ) = TEMP
+ 330 CONTINUE
+ IF( ILZ ) THEN
+ DO 340 JR = 1, N
+ TEMP = C*Z( JR, J+1 ) + S*Z( JR, J )
+ Z( JR, J ) = -S*Z( JR, J+1 ) + C*Z( JR, J )
+ Z( JR, J+1 ) = TEMP
+ 340 CONTINUE
+ END IF
+*
+* End of Double-Shift code
+*
+ END IF
+*
+ GO TO 350
+*
+* End of iteration loop
+*
+ 350 CONTINUE
+ 360 CONTINUE
+*
+* Drop-through = non-convergence
+*
+ INFO = ILAST
+ GO TO 420
+*
+* Successful completion of all QZ steps
+*
+ 380 CONTINUE
+*
+* Set Eigenvalues 1:ILO-1
+*
+ DO 410 J = 1, ILO - 1
+ IF( T( J, J ).LT.ZERO ) THEN
+ IF( ILSCHR ) THEN
+ DO 390 JR = 1, J
+ H( JR, J ) = -H( JR, J )
+ T( JR, J ) = -T( JR, J )
+ 390 CONTINUE
+ ELSE
+ H( J, J ) = -H( J, J )
+ T( J, J ) = -T( J, J )
+ END IF
+ IF( ILZ ) THEN
+ DO 400 JR = 1, N
+ Z( JR, J ) = -Z( JR, J )
+ 400 CONTINUE
+ END IF
+ END IF
+ ALPHAR( J ) = H( J, J )
+ ALPHAI( J ) = ZERO
+ BETA( J ) = T( J, J )
+ 410 CONTINUE
+*
+* Normal Termination
+*
+ INFO = 0
+*
+* Exit (other than argument error) -- return optimal workspace size
+*
+ 420 CONTINUE
+ WORK( 1 ) = DBLE( N )
+ RETURN
+*
+* End of DHGEQZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dhseqr.f b/2.3-1/src/fortran/lapack/dhseqr.f
new file mode 100644
index 00000000..5b307fa8
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dhseqr.f
@@ -0,0 +1,407 @@
+ SUBROUTINE DHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, WR, WI, Z,
+ $ LDZ, WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N
+ CHARACTER COMPZ, JOB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), WI( * ), WORK( * ), WR( * ),
+ $ Z( LDZ, * )
+* ..
+* Purpose
+* =======
+*
+* DHSEQR computes the eigenvalues of a Hessenberg matrix H
+* and, optionally, the matrices T and Z from the Schur decomposition
+* H = Z T Z**T, where T is an upper quasi-triangular matrix (the
+* Schur form), and Z is the orthogonal matrix of Schur vectors.
+*
+* Optionally Z may be postmultiplied into an input orthogonal
+* matrix Q so that this routine can give the Schur factorization
+* of a matrix A which has been reduced to the Hessenberg form H
+* by the orthogonal matrix Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* = 'E': compute eigenvalues only;
+* = 'S': compute eigenvalues and the Schur form T.
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': no Schur vectors are computed;
+* = 'I': Z is initialized to the unit matrix and the matrix Z
+* of Schur vectors of H is returned;
+* = 'V': Z must contain an orthogonal matrix Q on entry, and
+* the product Q*Z is returned.
+*
+* N (input) INTEGER
+* The order of the matrix H. N .GE. 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+* set by a previous call to DGEBAL, and then passed to DGEHRD
+* when the matrix output by DGEBAL is reduced to Hessenberg
+* form. Otherwise ILO and IHI should be set to 1 and N
+* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
+* If N = 0, then ILO = 1 and IHI = 0.
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO = 0 and JOB = 'S', then H contains the
+* upper quasi-triangular matrix T from the Schur decomposition
+* (the Schur form); 2-by-2 diagonal blocks (corresponding to
+* complex conjugate pairs of eigenvalues) are returned in
+* standard form, with H(i,i) = H(i+1,i+1) and
+* H(i+1,i)*H(i,i+1).LT.0. If INFO = 0 and JOB = 'E', the
+* contents of H are unspecified on exit. (The output value of
+* H when INFO.GT.0 is given under the description of INFO
+* below.)
+*
+* Unlike earlier versions of DHSEQR, this subroutine may
+* explicitly H(i,j) = 0 for i.GT.j and j = 1, 2, ... ILO-1
+* or j = IHI+1, IHI+2, ... N.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH .GE. max(1,N).
+*
+* WR (output) DOUBLE PRECISION array, dimension (N)
+* WI (output) DOUBLE PRECISION array, dimension (N)
+* The real and imaginary parts, respectively, of the computed
+* eigenvalues. If two eigenvalues are computed as a complex
+* conjugate pair, they are stored in consecutive elements of
+* WR and WI, say the i-th and (i+1)th, with WI(i) .GT. 0 and
+* WI(i+1) .LT. 0. If JOB = 'S', the eigenvalues are stored in
+* the same order as on the diagonal of the Schur form returned
+* in H, with WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2
+* diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and
+* WI(i+1) = -WI(i).
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* If COMPZ = 'N', Z is not referenced.
+* If COMPZ = 'I', on entry Z need not be set and on exit,
+* if INFO = 0, Z contains the orthogonal matrix Z of the Schur
+* vectors of H. If COMPZ = 'V', on entry Z must contain an
+* N-by-N matrix Q, which is assumed to be equal to the unit
+* matrix except for the submatrix Z(ILO:IHI,ILO:IHI). On exit,
+* if INFO = 0, Z contains Q*Z.
+* Normally Q is the orthogonal matrix generated by DORGHR
+* after the call to DGEHRD which formed the Hessenberg matrix
+* H. (The output value of Z when INFO.GT.0 is given under
+* the description of INFO below.)
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. if COMPZ = 'I' or
+* COMPZ = 'V', then LDZ.GE.MAX(1,N). Otherwize, LDZ.GE.1.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
+* On exit, if INFO = 0, WORK(1) returns an estimate of
+* the optimal value for LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK .GE. max(1,N)
+* is sufficient, but LWORK typically as large as 6*N may
+* be required for optimal performance. A workspace query
+* to determine the optimal workspace size is recommended.
+*
+* If LWORK = -1, then DHSEQR does a workspace query.
+* In this case, DHSEQR checks the input parameters and
+* estimates the optimal workspace size for the given
+* values of N, ILO and IHI. The estimate is returned
+* in WORK(1). No error message related to LWORK is
+* issued by XERBLA. Neither H nor Z are accessed.
+*
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .LT. 0: if INFO = -i, the i-th argument had an illegal
+* value
+* .GT. 0: if INFO = i, DHSEQR failed to compute all of
+* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
+* and WI contain those eigenvalues which have been
+* successfully computed. (Failures are rare.)
+*
+* If INFO .GT. 0 and JOB = 'E', then on exit, the
+* remaining unconverged eigenvalues are the eigen-
+* values of the upper Hessenberg matrix rows and
+* columns ILO through INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and JOB = 'S', then on exit
+*
+* (*) (initial value of H)*U = U*(final value of H)
+*
+* where U is an orthogonal matrix. The final
+* value of H is upper Hessenberg and quasi-triangular
+* in rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and COMPZ = 'V', then on exit
+*
+* (final value of Z) = (initial value of Z)*U
+*
+* where U is the orthogonal matrix in (*) (regard-
+* less of the value of JOB.)
+*
+* If INFO .GT. 0 and COMPZ = 'I', then on exit
+* (final value of Z) = U
+* where U is the orthogonal matrix in (*) (regard-
+* less of the value of JOB.)
+*
+* If INFO .GT. 0 and COMPZ = 'N', then Z is not
+* accessed.
+*
+* ================================================================
+* Default values supplied by
+* ILAENV(ISPEC,'DHSEQR',JOB(:1)//COMPZ(:1),N,ILO,IHI,LWORK).
+* It is suggested that these defaults be adjusted in order
+* to attain best performance in each particular
+* computational environment.
+*
+* ISPEC=1: The DLAHQR vs DLAQR0 crossover point.
+* Default: 75. (Must be at least 11.)
+*
+* ISPEC=2: Recommended deflation window size.
+* This depends on ILO, IHI and NS. NS is the
+* number of simultaneous shifts returned
+* by ILAENV(ISPEC=4). (See ISPEC=4 below.)
+* The default for (IHI-ILO+1).LE.500 is NS.
+* The default for (IHI-ILO+1).GT.500 is 3*NS/2.
+*
+* ISPEC=3: Nibble crossover point. (See ILAENV for
+* details.) Default: 14% of deflation window
+* size.
+*
+* ISPEC=4: Number of simultaneous shifts, NS, in
+* a multi-shift QR iteration.
+*
+* If IHI-ILO+1 is ...
+*
+* greater than ...but less ... the
+* or equal to ... than default is
+*
+* 1 30 NS - 2(+)
+* 30 60 NS - 4(+)
+* 60 150 NS = 10(+)
+* 150 590 NS = **
+* 590 3000 NS = 64
+* 3000 6000 NS = 128
+* 6000 infinity NS = 256
+*
+* (+) By default some or all matrices of this order
+* are passed to the implicit double shift routine
+* DLAHQR and NS is ignored. See ISPEC=1 above
+* and comments in IPARM for details.
+*
+* The asterisks (**) indicate an ad-hoc
+* function of N increasing from 10 to 64.
+*
+* ISPEC=5: Select structured matrix multiply.
+* (See ILAENV for details.) Default: 3.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+* References:
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
+* Performance, SIAM Journal of Matrix Analysis, volume 23, pages
+* 929--947, 2002.
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part II: Aggressive Early Deflation, SIAM Journal
+* of Matrix Analysis, volume 23, pages 948--973, 2002.
+*
+* ================================================================
+* .. Parameters ..
+*
+* ==== Matrices of order NTINY or smaller must be processed by
+* . DLAHQR because of insufficient subdiagonal scratch space.
+* . (This is a hard limit.) ====
+*
+* ==== NL allocates some local workspace to help small matrices
+* . through a rare DLAHQR failure. NL .GT. NTINY = 11 is
+* . required and NL .LE. NMIN = ILAENV(ISPEC=1,...) is recom-
+* . mended. (The default value of NMIN is 75.) Using NL = 49
+* . allows up to six simultaneous shifts and a 16-by-16
+* . deflation window. ====
+*
+ INTEGER NTINY
+ PARAMETER ( NTINY = 11 )
+ INTEGER NL
+ PARAMETER ( NL = 49 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION HL( NL, NL ), WORKL( NL )
+* ..
+* .. Local Scalars ..
+ INTEGER I, KBOT, NMIN
+ LOGICAL INITZ, LQUERY, WANTT, WANTZ
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ LOGICAL LSAME
+ EXTERNAL ILAENV, LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACPY, DLAHQR, DLAQR0, DLASET, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* ==== Decode and check the input parameters. ====
+*
+ WANTT = LSAME( JOB, 'S' )
+ INITZ = LSAME( COMPZ, 'I' )
+ WANTZ = INITZ .OR. LSAME( COMPZ, 'V' )
+ WORK( 1 ) = DBLE( MAX( 1, N ) )
+ LQUERY = LWORK.EQ.-1
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'E' ) .AND. .NOT.WANTT ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( COMPZ, 'N' ) .AND. .NOT.WANTZ ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -5
+ ELSE IF( LDH.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -11
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+*
+* ==== Quick return in case of invalid argument. ====
+*
+ CALL XERBLA( 'DHSEQR', -INFO )
+ RETURN
+*
+ ELSE IF( N.EQ.0 ) THEN
+*
+* ==== Quick return in case N = 0; nothing to do. ====
+*
+ RETURN
+*
+ ELSE IF( LQUERY ) THEN
+*
+* ==== Quick return in case of a workspace query ====
+*
+ CALL DLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILO,
+ $ IHI, Z, LDZ, WORK, LWORK, INFO )
+* ==== Ensure reported workspace size is backward-compatible with
+* . previous LAPACK versions. ====
+ WORK( 1 ) = MAX( DBLE( MAX( 1, N ) ), WORK( 1 ) )
+ RETURN
+*
+ ELSE
+*
+* ==== copy eigenvalues isolated by DGEBAL ====
+*
+ DO 10 I = 1, ILO - 1
+ WR( I ) = H( I, I )
+ WI( I ) = ZERO
+ 10 CONTINUE
+ DO 20 I = IHI + 1, N
+ WR( I ) = H( I, I )
+ WI( I ) = ZERO
+ 20 CONTINUE
+*
+* ==== Initialize Z, if requested ====
+*
+ IF( INITZ )
+ $ CALL DLASET( 'A', N, N, ZERO, ONE, Z, LDZ )
+*
+* ==== Quick return if possible ====
+*
+ IF( ILO.EQ.IHI ) THEN
+ WR( ILO ) = H( ILO, ILO )
+ WI( ILO ) = ZERO
+ RETURN
+ END IF
+*
+* ==== DLAHQR/DLAQR0 crossover point ====
+*
+ NMIN = ILAENV( 12, 'DHSEQR', JOB( : 1 ) // COMPZ( : 1 ), N,
+ $ ILO, IHI, LWORK )
+ NMIN = MAX( NTINY, NMIN )
+*
+* ==== DLAQR0 for big matrices; DLAHQR for small ones ====
+*
+ IF( N.GT.NMIN ) THEN
+ CALL DLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILO,
+ $ IHI, Z, LDZ, WORK, LWORK, INFO )
+ ELSE
+*
+* ==== Small matrix ====
+*
+ CALL DLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILO,
+ $ IHI, Z, LDZ, INFO )
+*
+ IF( INFO.GT.0 ) THEN
+*
+* ==== A rare DLAHQR failure! DLAQR0 sometimes succeeds
+* . when DLAHQR fails. ====
+*
+ KBOT = INFO
+*
+ IF( N.GE.NL ) THEN
+*
+* ==== Larger matrices have enough subdiagonal scratch
+* . space to call DLAQR0 directly. ====
+*
+ CALL DLAQR0( WANTT, WANTZ, N, ILO, KBOT, H, LDH, WR,
+ $ WI, ILO, IHI, Z, LDZ, WORK, LWORK, INFO )
+*
+ ELSE
+*
+* ==== Tiny matrices don't have enough subdiagonal
+* . scratch space to benefit from DLAQR0. Hence,
+* . tiny matrices must be copied into a larger
+* . array before calling DLAQR0. ====
+*
+ CALL DLACPY( 'A', N, N, H, LDH, HL, NL )
+ HL( N+1, N ) = ZERO
+ CALL DLASET( 'A', NL, NL-N, ZERO, ZERO, HL( 1, N+1 ),
+ $ NL )
+ CALL DLAQR0( WANTT, WANTZ, NL, ILO, KBOT, HL, NL, WR,
+ $ WI, ILO, IHI, Z, LDZ, WORKL, NL, INFO )
+ IF( WANTT .OR. INFO.NE.0 )
+ $ CALL DLACPY( 'A', N, N, HL, NL, H, LDH )
+ END IF
+ END IF
+ END IF
+*
+* ==== Clear out the trash, if necessary. ====
+*
+ IF( ( WANTT .OR. INFO.NE.0 ) .AND. N.GT.2 )
+ $ CALL DLASET( 'L', N-2, N-2, ZERO, ZERO, H( 3, 1 ), LDH )
+*
+* ==== Ensure reported workspace size is backward-compatible with
+* . previous LAPACK versions. ====
+*
+ WORK( 1 ) = MAX( DBLE( MAX( 1, N ) ), WORK( 1 ) )
+ END IF
+*
+* ==== End of DHSEQR ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/disnan.f b/2.3-1/src/fortran/lapack/disnan.f
new file mode 100644
index 00000000..52003561
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/disnan.f
@@ -0,0 +1,33 @@
+ LOGICAL FUNCTION DISNAN(DIN)
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION DIN
+* ..
+*
+* Purpose
+* =======
+*
+* DISNAN returns .TRUE. if its argument is NaN, and .FALSE.
+* otherwise. To be replaced by the Fortran 2003 intrinsic in the
+* future.
+*
+* Arguments
+* =========
+*
+* DIN (input) DOUBLE PRECISION
+* Input to test for NaN.
+*
+* =====================================================================
+*
+* .. External Functions ..
+ LOGICAL DLAISNAN
+ EXTERNAL DLAISNAN
+* ..
+* .. Executable Statements ..
+ DISNAN = DLAISNAN(DIN,DIN)
+ RETURN
+ END
diff --git a/2.3-1/src/fortran/lapack/dlabad.f b/2.3-1/src/fortran/lapack/dlabad.f
new file mode 100644
index 00000000..05ff5d44
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlabad.f
@@ -0,0 +1,55 @@
+ SUBROUTINE DLABAD( SMALL, LARGE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION LARGE, SMALL
+* ..
+*
+* Purpose
+* =======
+*
+* DLABAD takes as input the values computed by DLAMCH for underflow and
+* overflow, and returns the square root of each of these values if the
+* log of LARGE is sufficiently large. This subroutine is intended to
+* identify machines with a large exponent range, such as the Crays, and
+* redefine the underflow and overflow limits to be the square roots of
+* the values computed by DLAMCH. This subroutine is needed because
+* DLAMCH does not compensate for poor arithmetic in the upper half of
+* the exponent range, as is found on a Cray.
+*
+* Arguments
+* =========
+*
+* SMALL (input/output) DOUBLE PRECISION
+* On entry, the underflow threshold as computed by DLAMCH.
+* On exit, if LOG10(LARGE) is sufficiently large, the square
+* root of SMALL, otherwise unchanged.
+*
+* LARGE (input/output) DOUBLE PRECISION
+* On entry, the overflow threshold as computed by DLAMCH.
+* On exit, if LOG10(LARGE) is sufficiently large, the square
+* root of LARGE, otherwise unchanged.
+*
+* =====================================================================
+*
+* .. Intrinsic Functions ..
+ INTRINSIC LOG10, SQRT
+* ..
+* .. Executable Statements ..
+*
+* If it looks like we're on a Cray, take the square root of
+* SMALL and LARGE to avoid overflow and underflow problems.
+*
+ IF( LOG10( LARGE ).GT.2000.D0 ) THEN
+ SMALL = SQRT( SMALL )
+ LARGE = SQRT( LARGE )
+ END IF
+*
+ RETURN
+*
+* End of DLABAD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlabrd.f b/2.3-1/src/fortran/lapack/dlabrd.f
new file mode 100644
index 00000000..196b130c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlabrd.f
@@ -0,0 +1,290 @@
+ SUBROUTINE DLABRD( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
+ $ LDY )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, LDX, LDY, M, N, NB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAUP( * ),
+ $ TAUQ( * ), X( LDX, * ), Y( LDY, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLABRD reduces the first NB rows and columns of a real general
+* m by n matrix A to upper or lower bidiagonal form by an orthogonal
+* transformation Q' * A * P, and returns the matrices X and Y which
+* are needed to apply the transformation to the unreduced part of A.
+*
+* If m >= n, A is reduced to upper bidiagonal form; if m < n, to lower
+* bidiagonal form.
+*
+* This is an auxiliary routine called by DGEBRD
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows in the matrix A.
+*
+* N (input) INTEGER
+* The number of columns in the matrix A.
+*
+* NB (input) INTEGER
+* The number of leading rows and columns of A to be reduced.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the m by n general matrix to be reduced.
+* On exit, the first NB rows and columns of the matrix are
+* overwritten; the rest of the array is unchanged.
+* If m >= n, elements on and below the diagonal in the first NB
+* columns, with the array TAUQ, represent the orthogonal
+* matrix Q as a product of elementary reflectors; and
+* elements above the diagonal in the first NB rows, with the
+* array TAUP, represent the orthogonal matrix P as a product
+* of elementary reflectors.
+* If m < n, elements below the diagonal in the first NB
+* columns, with the array TAUQ, represent the orthogonal
+* matrix Q as a product of elementary reflectors, and
+* elements on and above the diagonal in the first NB rows,
+* with the array TAUP, represent the orthogonal matrix P as
+* a product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* D (output) DOUBLE PRECISION array, dimension (NB)
+* The diagonal elements of the first NB rows and columns of
+* the reduced matrix. D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (NB)
+* The off-diagonal elements of the first NB rows and columns of
+* the reduced matrix.
+*
+* TAUQ (output) DOUBLE PRECISION array dimension (NB)
+* The scalar factors of the elementary reflectors which
+* represent the orthogonal matrix Q. See Further Details.
+*
+* TAUP (output) DOUBLE PRECISION array, dimension (NB)
+* The scalar factors of the elementary reflectors which
+* represent the orthogonal matrix P. See Further Details.
+*
+* X (output) DOUBLE PRECISION array, dimension (LDX,NB)
+* The m-by-nb matrix X required to update the unreduced part
+* of A.
+*
+* LDX (input) INTEGER
+* The leading dimension of the array X. LDX >= M.
+*
+* Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
+* The n-by-nb matrix Y required to update the unreduced part
+* of A.
+*
+* LDY (input) INTEGER
+* The leading dimension of the array Y. LDY >= N.
+*
+* Further Details
+* ===============
+*
+* The matrices Q and P are represented as products of elementary
+* reflectors:
+*
+* Q = H(1) H(2) . . . H(nb) and P = G(1) G(2) . . . G(nb)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are real scalars, and v and u are real vectors.
+*
+* If m >= n, v(1:i-1) = 0, v(i) = 1, and v(i:m) is stored on exit in
+* A(i:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+1:n) is stored on exit in
+* A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* If m < n, v(1:i) = 0, v(i+1) = 1, and v(i+1:m) is stored on exit in
+* A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i:n) is stored on exit in
+* A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* The elements of the vectors v and u together form the m-by-nb matrix
+* V and the nb-by-n matrix U' which are needed, with X and Y, to apply
+* the transformation to the unreduced part of the matrix, using a block
+* update of the form: A := A - V*Y' - X*U'.
+*
+* The contents of A on exit are illustrated by the following examples
+* with nb = 2:
+*
+* m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
+*
+* ( 1 1 u1 u1 u1 ) ( 1 u1 u1 u1 u1 u1 )
+* ( v1 1 1 u2 u2 ) ( 1 1 u2 u2 u2 u2 )
+* ( v1 v2 a a a ) ( v1 1 a a a a )
+* ( v1 v2 a a a ) ( v1 v2 a a a a )
+* ( v1 v2 a a a ) ( v1 v2 a a a a )
+* ( v1 v2 a a a )
+*
+* where a denotes an element of the original matrix which is unchanged,
+* vi denotes an element of the vector defining H(i), and ui an element
+* of the vector defining G(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DLARFG, DSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 )
+ $ RETURN
+*
+ IF( M.GE.N ) THEN
+*
+* Reduce to upper bidiagonal form
+*
+ DO 10 I = 1, NB
+*
+* Update A(i:m,i)
+*
+ CALL DGEMV( 'No transpose', M-I+1, I-1, -ONE, A( I, 1 ),
+ $ LDA, Y( I, 1 ), LDY, ONE, A( I, I ), 1 )
+ CALL DGEMV( 'No transpose', M-I+1, I-1, -ONE, X( I, 1 ),
+ $ LDX, A( 1, I ), 1, ONE, A( I, I ), 1 )
+*
+* Generate reflection Q(i) to annihilate A(i+1:m,i)
+*
+ CALL DLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+ $ TAUQ( I ) )
+ D( I ) = A( I, I )
+ IF( I.LT.N ) THEN
+ A( I, I ) = ONE
+*
+* Compute Y(i+1:n,i)
+*
+ CALL DGEMV( 'Transpose', M-I+1, N-I, ONE, A( I, I+1 ),
+ $ LDA, A( I, I ), 1, ZERO, Y( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', M-I+1, I-1, ONE, A( I, 1 ), LDA,
+ $ A( I, I ), 1, ZERO, Y( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', N-I, I-1, -ONE, Y( I+1, 1 ),
+ $ LDY, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', M-I+1, I-1, ONE, X( I, 1 ), LDX,
+ $ A( I, I ), 1, ZERO, Y( 1, I ), 1 )
+ CALL DGEMV( 'Transpose', I-1, N-I, -ONE, A( 1, I+1 ),
+ $ LDA, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+ CALL DSCAL( N-I, TAUQ( I ), Y( I+1, I ), 1 )
+*
+* Update A(i,i+1:n)
+*
+ CALL DGEMV( 'No transpose', N-I, I, -ONE, Y( I+1, 1 ),
+ $ LDY, A( I, 1 ), LDA, ONE, A( I, I+1 ), LDA )
+ CALL DGEMV( 'Transpose', I-1, N-I, -ONE, A( 1, I+1 ),
+ $ LDA, X( I, 1 ), LDX, ONE, A( I, I+1 ), LDA )
+*
+* Generate reflection P(i) to annihilate A(i,i+2:n)
+*
+ CALL DLARFG( N-I, A( I, I+1 ), A( I, MIN( I+2, N ) ),
+ $ LDA, TAUP( I ) )
+ E( I ) = A( I, I+1 )
+ A( I, I+1 ) = ONE
+*
+* Compute X(i+1:m,i)
+*
+ CALL DGEMV( 'No transpose', M-I, N-I, ONE, A( I+1, I+1 ),
+ $ LDA, A( I, I+1 ), LDA, ZERO, X( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', N-I, I, ONE, Y( I+1, 1 ), LDY,
+ $ A( I, I+1 ), LDA, ZERO, X( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', M-I, I, -ONE, A( I+1, 1 ),
+ $ LDA, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL DGEMV( 'No transpose', I-1, N-I, ONE, A( 1, I+1 ),
+ $ LDA, A( I, I+1 ), LDA, ZERO, X( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', M-I, I-1, -ONE, X( I+1, 1 ),
+ $ LDX, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL DSCAL( M-I, TAUP( I ), X( I+1, I ), 1 )
+ END IF
+ 10 CONTINUE
+ ELSE
+*
+* Reduce to lower bidiagonal form
+*
+ DO 20 I = 1, NB
+*
+* Update A(i,i:n)
+*
+ CALL DGEMV( 'No transpose', N-I+1, I-1, -ONE, Y( I, 1 ),
+ $ LDY, A( I, 1 ), LDA, ONE, A( I, I ), LDA )
+ CALL DGEMV( 'Transpose', I-1, N-I+1, -ONE, A( 1, I ), LDA,
+ $ X( I, 1 ), LDX, ONE, A( I, I ), LDA )
+*
+* Generate reflection P(i) to annihilate A(i,i+1:n)
+*
+ CALL DLARFG( N-I+1, A( I, I ), A( I, MIN( I+1, N ) ), LDA,
+ $ TAUP( I ) )
+ D( I ) = A( I, I )
+ IF( I.LT.M ) THEN
+ A( I, I ) = ONE
+*
+* Compute X(i+1:m,i)
+*
+ CALL DGEMV( 'No transpose', M-I, N-I+1, ONE, A( I+1, I ),
+ $ LDA, A( I, I ), LDA, ZERO, X( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', N-I+1, I-1, ONE, Y( I, 1 ), LDY,
+ $ A( I, I ), LDA, ZERO, X( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', M-I, I-1, -ONE, A( I+1, 1 ),
+ $ LDA, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL DGEMV( 'No transpose', I-1, N-I+1, ONE, A( 1, I ),
+ $ LDA, A( I, I ), LDA, ZERO, X( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', M-I, I-1, -ONE, X( I+1, 1 ),
+ $ LDX, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL DSCAL( M-I, TAUP( I ), X( I+1, I ), 1 )
+*
+* Update A(i+1:m,i)
+*
+ CALL DGEMV( 'No transpose', M-I, I-1, -ONE, A( I+1, 1 ),
+ $ LDA, Y( I, 1 ), LDY, ONE, A( I+1, I ), 1 )
+ CALL DGEMV( 'No transpose', M-I, I, -ONE, X( I+1, 1 ),
+ $ LDX, A( 1, I ), 1, ONE, A( I+1, I ), 1 )
+*
+* Generate reflection Q(i) to annihilate A(i+2:m,i)
+*
+ CALL DLARFG( M-I, A( I+1, I ), A( MIN( I+2, M ), I ), 1,
+ $ TAUQ( I ) )
+ E( I ) = A( I+1, I )
+ A( I+1, I ) = ONE
+*
+* Compute Y(i+1:n,i)
+*
+ CALL DGEMV( 'Transpose', M-I, N-I, ONE, A( I+1, I+1 ),
+ $ LDA, A( I+1, I ), 1, ZERO, Y( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', M-I, I-1, ONE, A( I+1, 1 ), LDA,
+ $ A( I+1, I ), 1, ZERO, Y( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', N-I, I-1, -ONE, Y( I+1, 1 ),
+ $ LDY, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', M-I, I, ONE, X( I+1, 1 ), LDX,
+ $ A( I+1, I ), 1, ZERO, Y( 1, I ), 1 )
+ CALL DGEMV( 'Transpose', I, N-I, -ONE, A( 1, I+1 ), LDA,
+ $ Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+ CALL DSCAL( N-I, TAUQ( I ), Y( I+1, I ), 1 )
+ END IF
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of DLABRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlacn2.f b/2.3-1/src/fortran/lapack/dlacn2.f
new file mode 100644
index 00000000..6705d256
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlacn2.f
@@ -0,0 +1,214 @@
+ SUBROUTINE DLACN2( N, V, X, ISGN, EST, KASE, ISAVE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER KASE, N
+ DOUBLE PRECISION EST
+* ..
+* .. Array Arguments ..
+ INTEGER ISGN( * ), ISAVE( 3 )
+ DOUBLE PRECISION V( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLACN2 estimates the 1-norm of a square, real matrix A.
+* Reverse communication is used for evaluating matrix-vector products.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 1.
+*
+* V (workspace) DOUBLE PRECISION array, dimension (N)
+* On the final return, V = A*W, where EST = norm(V)/norm(W)
+* (W is not returned).
+*
+* X (input/output) DOUBLE PRECISION array, dimension (N)
+* On an intermediate return, X should be overwritten by
+* A * X, if KASE=1,
+* A' * X, if KASE=2,
+* and DLACN2 must be re-called with all the other parameters
+* unchanged.
+*
+* ISGN (workspace) INTEGER array, dimension (N)
+*
+* EST (input/output) DOUBLE PRECISION
+* On entry with KASE = 1 or 2 and ISAVE(1) = 3, EST should be
+* unchanged from the previous call to DLACN2.
+* On exit, EST is an estimate (a lower bound) for norm(A).
+*
+* KASE (input/output) INTEGER
+* On the initial call to DLACN2, KASE should be 0.
+* On an intermediate return, KASE will be 1 or 2, indicating
+* whether X should be overwritten by A * X or A' * X.
+* On the final return from DLACN2, KASE will again be 0.
+*
+* ISAVE (input/output) INTEGER array, dimension (3)
+* ISAVE is used to save variables between calls to DLACN2
+*
+* Further Details
+* ======= =======
+*
+* Contributed by Nick Higham, University of Manchester.
+* Originally named SONEST, dated March 16, 1988.
+*
+* Reference: N.J. Higham, "FORTRAN codes for estimating the one-norm of
+* a real or complex matrix, with applications to condition estimation",
+* ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988.
+*
+* This is a thread safe version of DLACON, which uses the array ISAVE
+* in place of a SAVE statement, as follows:
+*
+* DLACON DLACN2
+* JUMP ISAVE(1)
+* J ISAVE(2)
+* ITER ISAVE(3)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 5 )
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, JLAST
+ DOUBLE PRECISION ALTSGN, ESTOLD, TEMP
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DASUM
+ EXTERNAL IDAMAX, DASUM
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, NINT, SIGN
+* ..
+* .. Executable Statements ..
+*
+ IF( KASE.EQ.0 ) THEN
+ DO 10 I = 1, N
+ X( I ) = ONE / DBLE( N )
+ 10 CONTINUE
+ KASE = 1
+ ISAVE( 1 ) = 1
+ RETURN
+ END IF
+*
+ GO TO ( 20, 40, 70, 110, 140 )ISAVE( 1 )
+*
+* ................ ENTRY (ISAVE( 1 ) = 1)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 20 CONTINUE
+ IF( N.EQ.1 ) THEN
+ V( 1 ) = X( 1 )
+ EST = ABS( V( 1 ) )
+* ... QUIT
+ GO TO 150
+ END IF
+ EST = DASUM( N, X, 1 )
+*
+ DO 30 I = 1, N
+ X( I ) = SIGN( ONE, X( I ) )
+ ISGN( I ) = NINT( X( I ) )
+ 30 CONTINUE
+ KASE = 2
+ ISAVE( 1 ) = 2
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 2)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY TRANSPOSE(A)*X.
+*
+ 40 CONTINUE
+ ISAVE( 2 ) = IDAMAX( N, X, 1 )
+ ISAVE( 3 ) = 2
+*
+* MAIN LOOP - ITERATIONS 2,3,...,ITMAX.
+*
+ 50 CONTINUE
+ DO 60 I = 1, N
+ X( I ) = ZERO
+ 60 CONTINUE
+ X( ISAVE( 2 ) ) = ONE
+ KASE = 1
+ ISAVE( 1 ) = 3
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 3)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 70 CONTINUE
+ CALL DCOPY( N, X, 1, V, 1 )
+ ESTOLD = EST
+ EST = DASUM( N, V, 1 )
+ DO 80 I = 1, N
+ IF( NINT( SIGN( ONE, X( I ) ) ).NE.ISGN( I ) )
+ $ GO TO 90
+ 80 CONTINUE
+* REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED.
+ GO TO 120
+*
+ 90 CONTINUE
+* TEST FOR CYCLING.
+ IF( EST.LE.ESTOLD )
+ $ GO TO 120
+*
+ DO 100 I = 1, N
+ X( I ) = SIGN( ONE, X( I ) )
+ ISGN( I ) = NINT( X( I ) )
+ 100 CONTINUE
+ KASE = 2
+ ISAVE( 1 ) = 4
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 4)
+* X HAS BEEN OVERWRITTEN BY TRANSPOSE(A)*X.
+*
+ 110 CONTINUE
+ JLAST = ISAVE( 2 )
+ ISAVE( 2 ) = IDAMAX( N, X, 1 )
+ IF( ( X( JLAST ).NE.ABS( X( ISAVE( 2 ) ) ) ) .AND.
+ $ ( ISAVE( 3 ).LT.ITMAX ) ) THEN
+ ISAVE( 3 ) = ISAVE( 3 ) + 1
+ GO TO 50
+ END IF
+*
+* ITERATION COMPLETE. FINAL STAGE.
+*
+ 120 CONTINUE
+ ALTSGN = ONE
+ DO 130 I = 1, N
+ X( I ) = ALTSGN*( ONE+DBLE( I-1 ) / DBLE( N-1 ) )
+ ALTSGN = -ALTSGN
+ 130 CONTINUE
+ KASE = 1
+ ISAVE( 1 ) = 5
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 5)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 140 CONTINUE
+ TEMP = TWO*( DASUM( N, X, 1 ) / DBLE( 3*N ) )
+ IF( TEMP.GT.EST ) THEN
+ CALL DCOPY( N, X, 1, V, 1 )
+ EST = TEMP
+ END IF
+*
+ 150 CONTINUE
+ KASE = 0
+ RETURN
+*
+* End of DLACN2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlacon.f b/2.3-1/src/fortran/lapack/dlacon.f
new file mode 100644
index 00000000..f113b03a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlacon.f
@@ -0,0 +1,205 @@
+ SUBROUTINE DLACON( N, V, X, ISGN, EST, KASE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER KASE, N
+ DOUBLE PRECISION EST
+* ..
+* .. Array Arguments ..
+ INTEGER ISGN( * )
+ DOUBLE PRECISION V( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLACON estimates the 1-norm of a square, real matrix A.
+* Reverse communication is used for evaluating matrix-vector products.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 1.
+*
+* V (workspace) DOUBLE PRECISION array, dimension (N)
+* On the final return, V = A*W, where EST = norm(V)/norm(W)
+* (W is not returned).
+*
+* X (input/output) DOUBLE PRECISION array, dimension (N)
+* On an intermediate return, X should be overwritten by
+* A * X, if KASE=1,
+* A' * X, if KASE=2,
+* and DLACON must be re-called with all the other parameters
+* unchanged.
+*
+* ISGN (workspace) INTEGER array, dimension (N)
+*
+* EST (input/output) DOUBLE PRECISION
+* On entry with KASE = 1 or 2 and JUMP = 3, EST should be
+* unchanged from the previous call to DLACON.
+* On exit, EST is an estimate (a lower bound) for norm(A).
+*
+* KASE (input/output) INTEGER
+* On the initial call to DLACON, KASE should be 0.
+* On an intermediate return, KASE will be 1 or 2, indicating
+* whether X should be overwritten by A * X or A' * X.
+* On the final return from DLACON, KASE will again be 0.
+*
+* Further Details
+* ======= =======
+*
+* Contributed by Nick Higham, University of Manchester.
+* Originally named SONEST, dated March 16, 1988.
+*
+* Reference: N.J. Higham, "FORTRAN codes for estimating the one-norm of
+* a real or complex matrix, with applications to condition estimation",
+* ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 5 )
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ITER, J, JLAST, JUMP
+ DOUBLE PRECISION ALTSGN, ESTOLD, TEMP
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DASUM
+ EXTERNAL IDAMAX, DASUM
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, NINT, SIGN
+* ..
+* .. Save statement ..
+ SAVE
+* ..
+* .. Executable Statements ..
+*
+ IF( KASE.EQ.0 ) THEN
+ DO 10 I = 1, N
+ X( I ) = ONE / DBLE( N )
+ 10 CONTINUE
+ KASE = 1
+ JUMP = 1
+ RETURN
+ END IF
+*
+ GO TO ( 20, 40, 70, 110, 140 )JUMP
+*
+* ................ ENTRY (JUMP = 1)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 20 CONTINUE
+ IF( N.EQ.1 ) THEN
+ V( 1 ) = X( 1 )
+ EST = ABS( V( 1 ) )
+* ... QUIT
+ GO TO 150
+ END IF
+ EST = DASUM( N, X, 1 )
+*
+ DO 30 I = 1, N
+ X( I ) = SIGN( ONE, X( I ) )
+ ISGN( I ) = NINT( X( I ) )
+ 30 CONTINUE
+ KASE = 2
+ JUMP = 2
+ RETURN
+*
+* ................ ENTRY (JUMP = 2)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY TRANSPOSE(A)*X.
+*
+ 40 CONTINUE
+ J = IDAMAX( N, X, 1 )
+ ITER = 2
+*
+* MAIN LOOP - ITERATIONS 2,3,...,ITMAX.
+*
+ 50 CONTINUE
+ DO 60 I = 1, N
+ X( I ) = ZERO
+ 60 CONTINUE
+ X( J ) = ONE
+ KASE = 1
+ JUMP = 3
+ RETURN
+*
+* ................ ENTRY (JUMP = 3)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 70 CONTINUE
+ CALL DCOPY( N, X, 1, V, 1 )
+ ESTOLD = EST
+ EST = DASUM( N, V, 1 )
+ DO 80 I = 1, N
+ IF( NINT( SIGN( ONE, X( I ) ) ).NE.ISGN( I ) )
+ $ GO TO 90
+ 80 CONTINUE
+* REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED.
+ GO TO 120
+*
+ 90 CONTINUE
+* TEST FOR CYCLING.
+ IF( EST.LE.ESTOLD )
+ $ GO TO 120
+*
+ DO 100 I = 1, N
+ X( I ) = SIGN( ONE, X( I ) )
+ ISGN( I ) = NINT( X( I ) )
+ 100 CONTINUE
+ KASE = 2
+ JUMP = 4
+ RETURN
+*
+* ................ ENTRY (JUMP = 4)
+* X HAS BEEN OVERWRITTEN BY TRANSPOSE(A)*X.
+*
+ 110 CONTINUE
+ JLAST = J
+ J = IDAMAX( N, X, 1 )
+ IF( ( X( JLAST ).NE.ABS( X( J ) ) ) .AND. ( ITER.LT.ITMAX ) ) THEN
+ ITER = ITER + 1
+ GO TO 50
+ END IF
+*
+* ITERATION COMPLETE. FINAL STAGE.
+*
+ 120 CONTINUE
+ ALTSGN = ONE
+ DO 130 I = 1, N
+ X( I ) = ALTSGN*( ONE+DBLE( I-1 ) / DBLE( N-1 ) )
+ ALTSGN = -ALTSGN
+ 130 CONTINUE
+ KASE = 1
+ JUMP = 5
+ RETURN
+*
+* ................ ENTRY (JUMP = 5)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 140 CONTINUE
+ TEMP = TWO*( DASUM( N, X, 1 ) / DBLE( 3*N ) )
+ IF( TEMP.GT.EST ) THEN
+ CALL DCOPY( N, X, 1, V, 1 )
+ EST = TEMP
+ END IF
+*
+ 150 CONTINUE
+ KASE = 0
+ RETURN
+*
+* End of DLACON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlacpy.f b/2.3-1/src/fortran/lapack/dlacpy.f
new file mode 100644
index 00000000..d72603a5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlacpy.f
@@ -0,0 +1,87 @@
+ SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER LDA, LDB, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLACPY copies all or part of a two-dimensional matrix A to another
+* matrix B.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies the part of the matrix A to be copied to B.
+* = 'U': Upper triangular part
+* = 'L': Lower triangular part
+* Otherwise: All of the matrix A
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The m by n matrix A. If UPLO = 'U', only the upper triangle
+* or trapezoid is accessed; if UPLO = 'L', only the lower
+* triangle or trapezoid is accessed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (output) DOUBLE PRECISION array, dimension (LDB,N)
+* On exit, B = A in the locations specified by UPLO.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, MIN( J, M )
+ B( I, J ) = A( I, J )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE IF( LSAME( UPLO, 'L' ) ) THEN
+ DO 40 J = 1, N
+ DO 30 I = J, M
+ B( I, J ) = A( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ ELSE
+ DO 60 J = 1, N
+ DO 50 I = 1, M
+ B( I, J ) = A( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+ RETURN
+*
+* End of DLACPY
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dladiv.f b/2.3-1/src/fortran/lapack/dladiv.f
new file mode 100644
index 00000000..b6a74d1b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dladiv.f
@@ -0,0 +1,62 @@
+ SUBROUTINE DLADIV( A, B, C, D, P, Q )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION A, B, C, D, P, Q
+* ..
+*
+* Purpose
+* =======
+*
+* DLADIV performs complex division in real arithmetic
+*
+* a + i*b
+* p + i*q = ---------
+* c + i*d
+*
+* The algorithm is due to Robert L. Smith and can be found
+* in D. Knuth, The art of Computer Programming, Vol.2, p.195
+*
+* Arguments
+* =========
+*
+* A (input) DOUBLE PRECISION
+* B (input) DOUBLE PRECISION
+* C (input) DOUBLE PRECISION
+* D (input) DOUBLE PRECISION
+* The scalars a, b, c, and d in the above expression.
+*
+* P (output) DOUBLE PRECISION
+* Q (output) DOUBLE PRECISION
+* The scalars p and q in the above expression.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ DOUBLE PRECISION E, F
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+*
+ IF( ABS( D ).LT.ABS( C ) ) THEN
+ E = D / C
+ F = C + D*E
+ P = ( A+B*E ) / F
+ Q = ( B-A*E ) / F
+ ELSE
+ E = C / D
+ F = D + C*E
+ P = ( B+A*E ) / F
+ Q = ( -A+B*E ) / F
+ END IF
+*
+ RETURN
+*
+* End of DLADIV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlae2.f b/2.3-1/src/fortran/lapack/dlae2.f
new file mode 100644
index 00000000..8e81c608
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlae2.f
@@ -0,0 +1,123 @@
+ SUBROUTINE DLAE2( A, B, C, RT1, RT2 )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION A, B, C, RT1, RT2
+* ..
+*
+* Purpose
+* =======
+*
+* DLAE2 computes the eigenvalues of a 2-by-2 symmetric matrix
+* [ A B ]
+* [ B C ].
+* On return, RT1 is the eigenvalue of larger absolute value, and RT2
+* is the eigenvalue of smaller absolute value.
+*
+* Arguments
+* =========
+*
+* A (input) DOUBLE PRECISION
+* The (1,1) element of the 2-by-2 matrix.
+*
+* B (input) DOUBLE PRECISION
+* The (1,2) and (2,1) elements of the 2-by-2 matrix.
+*
+* C (input) DOUBLE PRECISION
+* The (2,2) element of the 2-by-2 matrix.
+*
+* RT1 (output) DOUBLE PRECISION
+* The eigenvalue of larger absolute value.
+*
+* RT2 (output) DOUBLE PRECISION
+* The eigenvalue of smaller absolute value.
+*
+* Further Details
+* ===============
+*
+* RT1 is accurate to a few ulps barring over/underflow.
+*
+* RT2 may be inaccurate if there is massive cancellation in the
+* determinant A*C-B*B; higher precision or correctly rounded or
+* correctly truncated arithmetic would be needed to compute RT2
+* accurately in all cases.
+*
+* Overflow is possible only if RT1 is within a factor of 5 of overflow.
+* Underflow is harmless if the input data is 0 or exceeds
+* underflow_threshold / macheps.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D0 )
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION HALF
+ PARAMETER ( HALF = 0.5D0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AB, ACMN, ACMX, ADF, DF, RT, SM, TB
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Compute the eigenvalues
+*
+ SM = A + C
+ DF = A - C
+ ADF = ABS( DF )
+ TB = B + B
+ AB = ABS( TB )
+ IF( ABS( A ).GT.ABS( C ) ) THEN
+ ACMX = A
+ ACMN = C
+ ELSE
+ ACMX = C
+ ACMN = A
+ END IF
+ IF( ADF.GT.AB ) THEN
+ RT = ADF*SQRT( ONE+( AB / ADF )**2 )
+ ELSE IF( ADF.LT.AB ) THEN
+ RT = AB*SQRT( ONE+( ADF / AB )**2 )
+ ELSE
+*
+* Includes case AB=ADF=0
+*
+ RT = AB*SQRT( TWO )
+ END IF
+ IF( SM.LT.ZERO ) THEN
+ RT1 = HALF*( SM-RT )
+*
+* Order of execution important.
+* To get fully accurate smaller eigenvalue,
+* next line needs to be executed in higher precision.
+*
+ RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B
+ ELSE IF( SM.GT.ZERO ) THEN
+ RT1 = HALF*( SM+RT )
+*
+* Order of execution important.
+* To get fully accurate smaller eigenvalue,
+* next line needs to be executed in higher precision.
+*
+ RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B
+ ELSE
+*
+* Includes case RT1 = RT2 = 0
+*
+ RT1 = HALF*RT
+ RT2 = -HALF*RT
+ END IF
+ RETURN
+*
+* End of DLAE2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaev2.f b/2.3-1/src/fortran/lapack/dlaev2.f
new file mode 100644
index 00000000..49402faa
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaev2.f
@@ -0,0 +1,169 @@
+ SUBROUTINE DLAEV2( A, B, C, RT1, RT2, CS1, SN1 )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION A, B, C, CS1, RT1, RT2, SN1
+* ..
+*
+* Purpose
+* =======
+*
+* DLAEV2 computes the eigendecomposition of a 2-by-2 symmetric matrix
+* [ A B ]
+* [ B C ].
+* On return, RT1 is the eigenvalue of larger absolute value, RT2 is the
+* eigenvalue of smaller absolute value, and (CS1,SN1) is the unit right
+* eigenvector for RT1, giving the decomposition
+*
+* [ CS1 SN1 ] [ A B ] [ CS1 -SN1 ] = [ RT1 0 ]
+* [-SN1 CS1 ] [ B C ] [ SN1 CS1 ] [ 0 RT2 ].
+*
+* Arguments
+* =========
+*
+* A (input) DOUBLE PRECISION
+* The (1,1) element of the 2-by-2 matrix.
+*
+* B (input) DOUBLE PRECISION
+* The (1,2) element and the conjugate of the (2,1) element of
+* the 2-by-2 matrix.
+*
+* C (input) DOUBLE PRECISION
+* The (2,2) element of the 2-by-2 matrix.
+*
+* RT1 (output) DOUBLE PRECISION
+* The eigenvalue of larger absolute value.
+*
+* RT2 (output) DOUBLE PRECISION
+* The eigenvalue of smaller absolute value.
+*
+* CS1 (output) DOUBLE PRECISION
+* SN1 (output) DOUBLE PRECISION
+* The vector (CS1, SN1) is a unit right eigenvector for RT1.
+*
+* Further Details
+* ===============
+*
+* RT1 is accurate to a few ulps barring over/underflow.
+*
+* RT2 may be inaccurate if there is massive cancellation in the
+* determinant A*C-B*B; higher precision or correctly rounded or
+* correctly truncated arithmetic would be needed to compute RT2
+* accurately in all cases.
+*
+* CS1 and SN1 are accurate to a few ulps barring over/underflow.
+*
+* Overflow is possible only if RT1 is within a factor of 5 of overflow.
+* Underflow is harmless if the input data is 0 or exceeds
+* underflow_threshold / macheps.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D0 )
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION HALF
+ PARAMETER ( HALF = 0.5D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER SGN1, SGN2
+ DOUBLE PRECISION AB, ACMN, ACMX, ACS, ADF, CS, CT, DF, RT, SM,
+ $ TB, TN
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Compute the eigenvalues
+*
+ SM = A + C
+ DF = A - C
+ ADF = ABS( DF )
+ TB = B + B
+ AB = ABS( TB )
+ IF( ABS( A ).GT.ABS( C ) ) THEN
+ ACMX = A
+ ACMN = C
+ ELSE
+ ACMX = C
+ ACMN = A
+ END IF
+ IF( ADF.GT.AB ) THEN
+ RT = ADF*SQRT( ONE+( AB / ADF )**2 )
+ ELSE IF( ADF.LT.AB ) THEN
+ RT = AB*SQRT( ONE+( ADF / AB )**2 )
+ ELSE
+*
+* Includes case AB=ADF=0
+*
+ RT = AB*SQRT( TWO )
+ END IF
+ IF( SM.LT.ZERO ) THEN
+ RT1 = HALF*( SM-RT )
+ SGN1 = -1
+*
+* Order of execution important.
+* To get fully accurate smaller eigenvalue,
+* next line needs to be executed in higher precision.
+*
+ RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B
+ ELSE IF( SM.GT.ZERO ) THEN
+ RT1 = HALF*( SM+RT )
+ SGN1 = 1
+*
+* Order of execution important.
+* To get fully accurate smaller eigenvalue,
+* next line needs to be executed in higher precision.
+*
+ RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B
+ ELSE
+*
+* Includes case RT1 = RT2 = 0
+*
+ RT1 = HALF*RT
+ RT2 = -HALF*RT
+ SGN1 = 1
+ END IF
+*
+* Compute the eigenvector
+*
+ IF( DF.GE.ZERO ) THEN
+ CS = DF + RT
+ SGN2 = 1
+ ELSE
+ CS = DF - RT
+ SGN2 = -1
+ END IF
+ ACS = ABS( CS )
+ IF( ACS.GT.AB ) THEN
+ CT = -TB / CS
+ SN1 = ONE / SQRT( ONE+CT*CT )
+ CS1 = CT*SN1
+ ELSE
+ IF( AB.EQ.ZERO ) THEN
+ CS1 = ONE
+ SN1 = ZERO
+ ELSE
+ TN = -CS / TB
+ CS1 = ONE / SQRT( ONE+TN*TN )
+ SN1 = TN*CS1
+ END IF
+ END IF
+ IF( SGN1.EQ.SGN2 ) THEN
+ TN = CS1
+ CS1 = -SN1
+ SN1 = TN
+ END IF
+ RETURN
+*
+* End of DLAEV2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaexc.f b/2.3-1/src/fortran/lapack/dlaexc.f
new file mode 100644
index 00000000..18e7d247
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaexc.f
@@ -0,0 +1,354 @@
+ SUBROUTINE DLAEXC( WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK,
+ $ INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ
+ INTEGER INFO, J1, LDQ, LDT, N, N1, N2
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAEXC swaps adjacent diagonal blocks T11 and T22 of order 1 or 2 in
+* an upper quasi-triangular matrix T by an orthogonal similarity
+* transformation.
+*
+* T must be in Schur canonical form, that is, block upper triangular
+* with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block
+* has its diagonal elemnts equal and its off-diagonal elements of
+* opposite sign.
+*
+* Arguments
+* =========
+*
+* WANTQ (input) LOGICAL
+* = .TRUE. : accumulate the transformation in the matrix Q;
+* = .FALSE.: do not accumulate the transformation.
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input/output) DOUBLE PRECISION array, dimension (LDT,N)
+* On entry, the upper quasi-triangular matrix T, in Schur
+* canonical form.
+* On exit, the updated matrix T, again in Schur canonical form.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
+* On entry, if WANTQ is .TRUE., the orthogonal matrix Q.
+* On exit, if WANTQ is .TRUE., the updated matrix Q.
+* If WANTQ is .FALSE., Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q.
+* LDQ >= 1; and if WANTQ is .TRUE., LDQ >= N.
+*
+* J1 (input) INTEGER
+* The index of the first row of the first block T11.
+*
+* N1 (input) INTEGER
+* The order of the first block T11. N1 = 0, 1 or 2.
+*
+* N2 (input) INTEGER
+* The order of the second block T22. N2 = 0, 1 or 2.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* = 1: the transformed matrix T would be too far from Schur
+* form; the blocks are not swapped and T and Q are
+* unchanged.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION TEN
+ PARAMETER ( TEN = 1.0D+1 )
+ INTEGER LDD, LDX
+ PARAMETER ( LDD = 4, LDX = 2 )
+* ..
+* .. Local Scalars ..
+ INTEGER IERR, J2, J3, J4, K, ND
+ DOUBLE PRECISION CS, DNORM, EPS, SCALE, SMLNUM, SN, T11, T22,
+ $ T33, TAU, TAU1, TAU2, TEMP, THRESH, WI1, WI2,
+ $ WR1, WR2, XNORM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION D( LDD, 4 ), U( 3 ), U1( 3 ), U2( 3 ),
+ $ X( LDX, 2 )
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL DLAMCH, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACPY, DLANV2, DLARFG, DLARFX, DLARTG, DLASY2,
+ $ DROT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. N1.EQ.0 .OR. N2.EQ.0 )
+ $ RETURN
+ IF( J1+N1.GT.N )
+ $ RETURN
+*
+ J2 = J1 + 1
+ J3 = J1 + 2
+ J4 = J1 + 3
+*
+ IF( N1.EQ.1 .AND. N2.EQ.1 ) THEN
+*
+* Swap two 1-by-1 blocks.
+*
+ T11 = T( J1, J1 )
+ T22 = T( J2, J2 )
+*
+* Determine the transformation to perform the interchange.
+*
+ CALL DLARTG( T( J1, J2 ), T22-T11, CS, SN, TEMP )
+*
+* Apply transformation to the matrix T.
+*
+ IF( J3.LE.N )
+ $ CALL DROT( N-J1-1, T( J1, J3 ), LDT, T( J2, J3 ), LDT, CS,
+ $ SN )
+ CALL DROT( J1-1, T( 1, J1 ), 1, T( 1, J2 ), 1, CS, SN )
+*
+ T( J1, J1 ) = T22
+ T( J2, J2 ) = T11
+*
+ IF( WANTQ ) THEN
+*
+* Accumulate transformation in the matrix Q.
+*
+ CALL DROT( N, Q( 1, J1 ), 1, Q( 1, J2 ), 1, CS, SN )
+ END IF
+*
+ ELSE
+*
+* Swapping involves at least one 2-by-2 block.
+*
+* Copy the diagonal block of order N1+N2 to the local array D
+* and compute its norm.
+*
+ ND = N1 + N2
+ CALL DLACPY( 'Full', ND, ND, T( J1, J1 ), LDT, D, LDD )
+ DNORM = DLANGE( 'Max', ND, ND, D, LDD, WORK )
+*
+* Compute machine-dependent threshold for test for accepting
+* swap.
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ THRESH = MAX( TEN*EPS*DNORM, SMLNUM )
+*
+* Solve T11*X - X*T22 = scale*T12 for X.
+*
+ CALL DLASY2( .FALSE., .FALSE., -1, N1, N2, D, LDD,
+ $ D( N1+1, N1+1 ), LDD, D( 1, N1+1 ), LDD, SCALE, X,
+ $ LDX, XNORM, IERR )
+*
+* Swap the adjacent diagonal blocks.
+*
+ K = N1 + N1 + N2 - 3
+ GO TO ( 10, 20, 30 )K
+*
+ 10 CONTINUE
+*
+* N1 = 1, N2 = 2: generate elementary reflector H so that:
+*
+* ( scale, X11, X12 ) H = ( 0, 0, * )
+*
+ U( 1 ) = SCALE
+ U( 2 ) = X( 1, 1 )
+ U( 3 ) = X( 1, 2 )
+ CALL DLARFG( 3, U( 3 ), U, 1, TAU )
+ U( 3 ) = ONE
+ T11 = T( J1, J1 )
+*
+* Perform swap provisionally on diagonal block in D.
+*
+ CALL DLARFX( 'L', 3, 3, U, TAU, D, LDD, WORK )
+ CALL DLARFX( 'R', 3, 3, U, TAU, D, LDD, WORK )
+*
+* Test whether to reject swap.
+*
+ IF( MAX( ABS( D( 3, 1 ) ), ABS( D( 3, 2 ) ), ABS( D( 3,
+ $ 3 )-T11 ) ).GT.THRESH )GO TO 50
+*
+* Accept swap: apply transformation to the entire matrix T.
+*
+ CALL DLARFX( 'L', 3, N-J1+1, U, TAU, T( J1, J1 ), LDT, WORK )
+ CALL DLARFX( 'R', J2, 3, U, TAU, T( 1, J1 ), LDT, WORK )
+*
+ T( J3, J1 ) = ZERO
+ T( J3, J2 ) = ZERO
+ T( J3, J3 ) = T11
+*
+ IF( WANTQ ) THEN
+*
+* Accumulate transformation in the matrix Q.
+*
+ CALL DLARFX( 'R', N, 3, U, TAU, Q( 1, J1 ), LDQ, WORK )
+ END IF
+ GO TO 40
+*
+ 20 CONTINUE
+*
+* N1 = 2, N2 = 1: generate elementary reflector H so that:
+*
+* H ( -X11 ) = ( * )
+* ( -X21 ) = ( 0 )
+* ( scale ) = ( 0 )
+*
+ U( 1 ) = -X( 1, 1 )
+ U( 2 ) = -X( 2, 1 )
+ U( 3 ) = SCALE
+ CALL DLARFG( 3, U( 1 ), U( 2 ), 1, TAU )
+ U( 1 ) = ONE
+ T33 = T( J3, J3 )
+*
+* Perform swap provisionally on diagonal block in D.
+*
+ CALL DLARFX( 'L', 3, 3, U, TAU, D, LDD, WORK )
+ CALL DLARFX( 'R', 3, 3, U, TAU, D, LDD, WORK )
+*
+* Test whether to reject swap.
+*
+ IF( MAX( ABS( D( 2, 1 ) ), ABS( D( 3, 1 ) ), ABS( D( 1,
+ $ 1 )-T33 ) ).GT.THRESH )GO TO 50
+*
+* Accept swap: apply transformation to the entire matrix T.
+*
+ CALL DLARFX( 'R', J3, 3, U, TAU, T( 1, J1 ), LDT, WORK )
+ CALL DLARFX( 'L', 3, N-J1, U, TAU, T( J1, J2 ), LDT, WORK )
+*
+ T( J1, J1 ) = T33
+ T( J2, J1 ) = ZERO
+ T( J3, J1 ) = ZERO
+*
+ IF( WANTQ ) THEN
+*
+* Accumulate transformation in the matrix Q.
+*
+ CALL DLARFX( 'R', N, 3, U, TAU, Q( 1, J1 ), LDQ, WORK )
+ END IF
+ GO TO 40
+*
+ 30 CONTINUE
+*
+* N1 = 2, N2 = 2: generate elementary reflectors H(1) and H(2) so
+* that:
+*
+* H(2) H(1) ( -X11 -X12 ) = ( * * )
+* ( -X21 -X22 ) ( 0 * )
+* ( scale 0 ) ( 0 0 )
+* ( 0 scale ) ( 0 0 )
+*
+ U1( 1 ) = -X( 1, 1 )
+ U1( 2 ) = -X( 2, 1 )
+ U1( 3 ) = SCALE
+ CALL DLARFG( 3, U1( 1 ), U1( 2 ), 1, TAU1 )
+ U1( 1 ) = ONE
+*
+ TEMP = -TAU1*( X( 1, 2 )+U1( 2 )*X( 2, 2 ) )
+ U2( 1 ) = -TEMP*U1( 2 ) - X( 2, 2 )
+ U2( 2 ) = -TEMP*U1( 3 )
+ U2( 3 ) = SCALE
+ CALL DLARFG( 3, U2( 1 ), U2( 2 ), 1, TAU2 )
+ U2( 1 ) = ONE
+*
+* Perform swap provisionally on diagonal block in D.
+*
+ CALL DLARFX( 'L', 3, 4, U1, TAU1, D, LDD, WORK )
+ CALL DLARFX( 'R', 4, 3, U1, TAU1, D, LDD, WORK )
+ CALL DLARFX( 'L', 3, 4, U2, TAU2, D( 2, 1 ), LDD, WORK )
+ CALL DLARFX( 'R', 4, 3, U2, TAU2, D( 1, 2 ), LDD, WORK )
+*
+* Test whether to reject swap.
+*
+ IF( MAX( ABS( D( 3, 1 ) ), ABS( D( 3, 2 ) ), ABS( D( 4, 1 ) ),
+ $ ABS( D( 4, 2 ) ) ).GT.THRESH )GO TO 50
+*
+* Accept swap: apply transformation to the entire matrix T.
+*
+ CALL DLARFX( 'L', 3, N-J1+1, U1, TAU1, T( J1, J1 ), LDT, WORK )
+ CALL DLARFX( 'R', J4, 3, U1, TAU1, T( 1, J1 ), LDT, WORK )
+ CALL DLARFX( 'L', 3, N-J1+1, U2, TAU2, T( J2, J1 ), LDT, WORK )
+ CALL DLARFX( 'R', J4, 3, U2, TAU2, T( 1, J2 ), LDT, WORK )
+*
+ T( J3, J1 ) = ZERO
+ T( J3, J2 ) = ZERO
+ T( J4, J1 ) = ZERO
+ T( J4, J2 ) = ZERO
+*
+ IF( WANTQ ) THEN
+*
+* Accumulate transformation in the matrix Q.
+*
+ CALL DLARFX( 'R', N, 3, U1, TAU1, Q( 1, J1 ), LDQ, WORK )
+ CALL DLARFX( 'R', N, 3, U2, TAU2, Q( 1, J2 ), LDQ, WORK )
+ END IF
+*
+ 40 CONTINUE
+*
+ IF( N2.EQ.2 ) THEN
+*
+* Standardize new 2-by-2 block T11
+*
+ CALL DLANV2( T( J1, J1 ), T( J1, J2 ), T( J2, J1 ),
+ $ T( J2, J2 ), WR1, WI1, WR2, WI2, CS, SN )
+ CALL DROT( N-J1-1, T( J1, J1+2 ), LDT, T( J2, J1+2 ), LDT,
+ $ CS, SN )
+ CALL DROT( J1-1, T( 1, J1 ), 1, T( 1, J2 ), 1, CS, SN )
+ IF( WANTQ )
+ $ CALL DROT( N, Q( 1, J1 ), 1, Q( 1, J2 ), 1, CS, SN )
+ END IF
+*
+ IF( N1.EQ.2 ) THEN
+*
+* Standardize new 2-by-2 block T22
+*
+ J3 = J1 + N2
+ J4 = J3 + 1
+ CALL DLANV2( T( J3, J3 ), T( J3, J4 ), T( J4, J3 ),
+ $ T( J4, J4 ), WR1, WI1, WR2, WI2, CS, SN )
+ IF( J3+2.LE.N )
+ $ CALL DROT( N-J3-1, T( J3, J3+2 ), LDT, T( J4, J3+2 ),
+ $ LDT, CS, SN )
+ CALL DROT( J3-1, T( 1, J3 ), 1, T( 1, J4 ), 1, CS, SN )
+ IF( WANTQ )
+ $ CALL DROT( N, Q( 1, J3 ), 1, Q( 1, J4 ), 1, CS, SN )
+ END IF
+*
+ END IF
+ RETURN
+*
+* Exit with INFO = 1 if swap was rejected.
+*
+ 50 CONTINUE
+ INFO = 1
+ RETURN
+*
+* End of DLAEXC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlag2.f b/2.3-1/src/fortran/lapack/dlag2.f
new file mode 100644
index 00000000..e754203b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlag2.f
@@ -0,0 +1,300 @@
+ SUBROUTINE DLAG2( A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1,
+ $ WR2, WI )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, LDB
+ DOUBLE PRECISION SAFMIN, SCALE1, SCALE2, WI, WR1, WR2
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAG2 computes the eigenvalues of a 2 x 2 generalized eigenvalue
+* problem A - w B, with scaling as necessary to avoid over-/underflow.
+*
+* The scaling factor "s" results in a modified eigenvalue equation
+*
+* s A - w B
+*
+* where s is a non-negative scaling factor chosen so that w, w B,
+* and s A do not overflow and, if possible, do not underflow, either.
+*
+* Arguments
+* =========
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA, 2)
+* On entry, the 2 x 2 matrix A. It is assumed that its 1-norm
+* is less than 1/SAFMIN. Entries less than
+* sqrt(SAFMIN)*norm(A) are subject to being treated as zero.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= 2.
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB, 2)
+* On entry, the 2 x 2 upper triangular matrix B. It is
+* assumed that the one-norm of B is less than 1/SAFMIN. The
+* diagonals should be at least sqrt(SAFMIN) times the largest
+* element of B (in absolute value); if a diagonal is smaller
+* than that, then +/- sqrt(SAFMIN) will be used instead of
+* that diagonal.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= 2.
+*
+* SAFMIN (input) DOUBLE PRECISION
+* The smallest positive number s.t. 1/SAFMIN does not
+* overflow. (This should always be DLAMCH('S') -- it is an
+* argument in order to avoid having to call DLAMCH frequently.)
+*
+* SCALE1 (output) DOUBLE PRECISION
+* A scaling factor used to avoid over-/underflow in the
+* eigenvalue equation which defines the first eigenvalue. If
+* the eigenvalues are complex, then the eigenvalues are
+* ( WR1 +/- WI i ) / SCALE1 (which may lie outside the
+* exponent range of the machine), SCALE1=SCALE2, and SCALE1
+* will always be positive. If the eigenvalues are real, then
+* the first (real) eigenvalue is WR1 / SCALE1 , but this may
+* overflow or underflow, and in fact, SCALE1 may be zero or
+* less than the underflow threshhold if the exact eigenvalue
+* is sufficiently large.
+*
+* SCALE2 (output) DOUBLE PRECISION
+* A scaling factor used to avoid over-/underflow in the
+* eigenvalue equation which defines the second eigenvalue. If
+* the eigenvalues are complex, then SCALE2=SCALE1. If the
+* eigenvalues are real, then the second (real) eigenvalue is
+* WR2 / SCALE2 , but this may overflow or underflow, and in
+* fact, SCALE2 may be zero or less than the underflow
+* threshhold if the exact eigenvalue is sufficiently large.
+*
+* WR1 (output) DOUBLE PRECISION
+* If the eigenvalue is real, then WR1 is SCALE1 times the
+* eigenvalue closest to the (2,2) element of A B**(-1). If the
+* eigenvalue is complex, then WR1=WR2 is SCALE1 times the real
+* part of the eigenvalues.
+*
+* WR2 (output) DOUBLE PRECISION
+* If the eigenvalue is real, then WR2 is SCALE2 times the
+* other eigenvalue. If the eigenvalue is complex, then
+* WR1=WR2 is SCALE1 times the real part of the eigenvalues.
+*
+* WI (output) DOUBLE PRECISION
+* If the eigenvalue is real, then WI is zero. If the
+* eigenvalue is complex, then WI is SCALE1 times the imaginary
+* part of the eigenvalues. WI will always be non-negative.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0 )
+ DOUBLE PRECISION HALF
+ PARAMETER ( HALF = ONE / TWO )
+ DOUBLE PRECISION FUZZY1
+ PARAMETER ( FUZZY1 = ONE+1.0D-5 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION A11, A12, A21, A22, ABI22, ANORM, AS11, AS12,
+ $ AS22, ASCALE, B11, B12, B22, BINV11, BINV22,
+ $ BMIN, BNORM, BSCALE, BSIZE, C1, C2, C3, C4, C5,
+ $ DIFF, DISCR, PP, QQ, R, RTMAX, RTMIN, S1, S2,
+ $ SAFMAX, SHIFT, SS, SUM, WABS, WBIG, WDET,
+ $ WSCALE, WSIZE, WSMALL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ RTMIN = SQRT( SAFMIN )
+ RTMAX = ONE / RTMIN
+ SAFMAX = ONE / SAFMIN
+*
+* Scale A
+*
+ ANORM = MAX( ABS( A( 1, 1 ) )+ABS( A( 2, 1 ) ),
+ $ ABS( A( 1, 2 ) )+ABS( A( 2, 2 ) ), SAFMIN )
+ ASCALE = ONE / ANORM
+ A11 = ASCALE*A( 1, 1 )
+ A21 = ASCALE*A( 2, 1 )
+ A12 = ASCALE*A( 1, 2 )
+ A22 = ASCALE*A( 2, 2 )
+*
+* Perturb B if necessary to insure non-singularity
+*
+ B11 = B( 1, 1 )
+ B12 = B( 1, 2 )
+ B22 = B( 2, 2 )
+ BMIN = RTMIN*MAX( ABS( B11 ), ABS( B12 ), ABS( B22 ), RTMIN )
+ IF( ABS( B11 ).LT.BMIN )
+ $ B11 = SIGN( BMIN, B11 )
+ IF( ABS( B22 ).LT.BMIN )
+ $ B22 = SIGN( BMIN, B22 )
+*
+* Scale B
+*
+ BNORM = MAX( ABS( B11 ), ABS( B12 )+ABS( B22 ), SAFMIN )
+ BSIZE = MAX( ABS( B11 ), ABS( B22 ) )
+ BSCALE = ONE / BSIZE
+ B11 = B11*BSCALE
+ B12 = B12*BSCALE
+ B22 = B22*BSCALE
+*
+* Compute larger eigenvalue by method described by C. van Loan
+*
+* ( AS is A shifted by -SHIFT*B )
+*
+ BINV11 = ONE / B11
+ BINV22 = ONE / B22
+ S1 = A11*BINV11
+ S2 = A22*BINV22
+ IF( ABS( S1 ).LE.ABS( S2 ) ) THEN
+ AS12 = A12 - S1*B12
+ AS22 = A22 - S1*B22
+ SS = A21*( BINV11*BINV22 )
+ ABI22 = AS22*BINV22 - SS*B12
+ PP = HALF*ABI22
+ SHIFT = S1
+ ELSE
+ AS12 = A12 - S2*B12
+ AS11 = A11 - S2*B11
+ SS = A21*( BINV11*BINV22 )
+ ABI22 = -SS*B12
+ PP = HALF*( AS11*BINV11+ABI22 )
+ SHIFT = S2
+ END IF
+ QQ = SS*AS12
+ IF( ABS( PP*RTMIN ).GE.ONE ) THEN
+ DISCR = ( RTMIN*PP )**2 + QQ*SAFMIN
+ R = SQRT( ABS( DISCR ) )*RTMAX
+ ELSE
+ IF( PP**2+ABS( QQ ).LE.SAFMIN ) THEN
+ DISCR = ( RTMAX*PP )**2 + QQ*SAFMAX
+ R = SQRT( ABS( DISCR ) )*RTMIN
+ ELSE
+ DISCR = PP**2 + QQ
+ R = SQRT( ABS( DISCR ) )
+ END IF
+ END IF
+*
+* Note: the test of R in the following IF is to cover the case when
+* DISCR is small and negative and is flushed to zero during
+* the calculation of R. On machines which have a consistent
+* flush-to-zero threshhold and handle numbers above that
+* threshhold correctly, it would not be necessary.
+*
+ IF( DISCR.GE.ZERO .OR. R.EQ.ZERO ) THEN
+ SUM = PP + SIGN( R, PP )
+ DIFF = PP - SIGN( R, PP )
+ WBIG = SHIFT + SUM
+*
+* Compute smaller eigenvalue
+*
+ WSMALL = SHIFT + DIFF
+ IF( HALF*ABS( WBIG ).GT.MAX( ABS( WSMALL ), SAFMIN ) ) THEN
+ WDET = ( A11*A22-A12*A21 )*( BINV11*BINV22 )
+ WSMALL = WDET / WBIG
+ END IF
+*
+* Choose (real) eigenvalue closest to 2,2 element of A*B**(-1)
+* for WR1.
+*
+ IF( PP.GT.ABI22 ) THEN
+ WR1 = MIN( WBIG, WSMALL )
+ WR2 = MAX( WBIG, WSMALL )
+ ELSE
+ WR1 = MAX( WBIG, WSMALL )
+ WR2 = MIN( WBIG, WSMALL )
+ END IF
+ WI = ZERO
+ ELSE
+*
+* Complex eigenvalues
+*
+ WR1 = SHIFT + PP
+ WR2 = WR1
+ WI = R
+ END IF
+*
+* Further scaling to avoid underflow and overflow in computing
+* SCALE1 and overflow in computing w*B.
+*
+* This scale factor (WSCALE) is bounded from above using C1 and C2,
+* and from below using C3 and C4.
+* C1 implements the condition s A must never overflow.
+* C2 implements the condition w B must never overflow.
+* C3, with C2,
+* implement the condition that s A - w B must never overflow.
+* C4 implements the condition s should not underflow.
+* C5 implements the condition max(s,|w|) should be at least 2.
+*
+ C1 = BSIZE*( SAFMIN*MAX( ONE, ASCALE ) )
+ C2 = SAFMIN*MAX( ONE, BNORM )
+ C3 = BSIZE*SAFMIN
+ IF( ASCALE.LE.ONE .AND. BSIZE.LE.ONE ) THEN
+ C4 = MIN( ONE, ( ASCALE / SAFMIN )*BSIZE )
+ ELSE
+ C4 = ONE
+ END IF
+ IF( ASCALE.LE.ONE .OR. BSIZE.LE.ONE ) THEN
+ C5 = MIN( ONE, ASCALE*BSIZE )
+ ELSE
+ C5 = ONE
+ END IF
+*
+* Scale first eigenvalue
+*
+ WABS = ABS( WR1 ) + ABS( WI )
+ WSIZE = MAX( SAFMIN, C1, FUZZY1*( WABS*C2+C3 ),
+ $ MIN( C4, HALF*MAX( WABS, C5 ) ) )
+ IF( WSIZE.NE.ONE ) THEN
+ WSCALE = ONE / WSIZE
+ IF( WSIZE.GT.ONE ) THEN
+ SCALE1 = ( MAX( ASCALE, BSIZE )*WSCALE )*
+ $ MIN( ASCALE, BSIZE )
+ ELSE
+ SCALE1 = ( MIN( ASCALE, BSIZE )*WSCALE )*
+ $ MAX( ASCALE, BSIZE )
+ END IF
+ WR1 = WR1*WSCALE
+ IF( WI.NE.ZERO ) THEN
+ WI = WI*WSCALE
+ WR2 = WR1
+ SCALE2 = SCALE1
+ END IF
+ ELSE
+ SCALE1 = ASCALE*BSIZE
+ SCALE2 = SCALE1
+ END IF
+*
+* Scale second eigenvalue (if real)
+*
+ IF( WI.EQ.ZERO ) THEN
+ WSIZE = MAX( SAFMIN, C1, FUZZY1*( ABS( WR2 )*C2+C3 ),
+ $ MIN( C4, HALF*MAX( ABS( WR2 ), C5 ) ) )
+ IF( WSIZE.NE.ONE ) THEN
+ WSCALE = ONE / WSIZE
+ IF( WSIZE.GT.ONE ) THEN
+ SCALE2 = ( MAX( ASCALE, BSIZE )*WSCALE )*
+ $ MIN( ASCALE, BSIZE )
+ ELSE
+ SCALE2 = ( MIN( ASCALE, BSIZE )*WSCALE )*
+ $ MAX( ASCALE, BSIZE )
+ END IF
+ WR2 = WR2*WSCALE
+ ELSE
+ SCALE2 = ASCALE*BSIZE
+ END IF
+ END IF
+*
+* End of DLAG2
+*
+ RETURN
+ END
diff --git a/2.3-1/src/fortran/lapack/dlagv2.f b/2.3-1/src/fortran/lapack/dlagv2.f
new file mode 100644
index 00000000..15bcb0b9
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlagv2.f
@@ -0,0 +1,287 @@
+ SUBROUTINE DLAGV2( A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, CSL, SNL,
+ $ CSR, SNR )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, LDB
+ DOUBLE PRECISION CSL, CSR, SNL, SNR
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), ALPHAI( 2 ), ALPHAR( 2 ),
+ $ B( LDB, * ), BETA( 2 )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAGV2 computes the Generalized Schur factorization of a real 2-by-2
+* matrix pencil (A,B) where B is upper triangular. This routine
+* computes orthogonal (rotation) matrices given by CSL, SNL and CSR,
+* SNR such that
+*
+* 1) if the pencil (A,B) has two real eigenvalues (include 0/0 or 1/0
+* types), then
+*
+* [ a11 a12 ] := [ CSL SNL ] [ a11 a12 ] [ CSR -SNR ]
+* [ 0 a22 ] [ -SNL CSL ] [ a21 a22 ] [ SNR CSR ]
+*
+* [ b11 b12 ] := [ CSL SNL ] [ b11 b12 ] [ CSR -SNR ]
+* [ 0 b22 ] [ -SNL CSL ] [ 0 b22 ] [ SNR CSR ],
+*
+* 2) if the pencil (A,B) has a pair of complex conjugate eigenvalues,
+* then
+*
+* [ a11 a12 ] := [ CSL SNL ] [ a11 a12 ] [ CSR -SNR ]
+* [ a21 a22 ] [ -SNL CSL ] [ a21 a22 ] [ SNR CSR ]
+*
+* [ b11 0 ] := [ CSL SNL ] [ b11 b12 ] [ CSR -SNR ]
+* [ 0 b22 ] [ -SNL CSL ] [ 0 b22 ] [ SNR CSR ]
+*
+* where b11 >= b22 > 0.
+*
+*
+* Arguments
+* =========
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, 2)
+* On entry, the 2 x 2 matrix A.
+* On exit, A is overwritten by the ``A-part'' of the
+* generalized Schur form.
+*
+* LDA (input) INTEGER
+* THe leading dimension of the array A. LDA >= 2.
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB, 2)
+* On entry, the upper triangular 2 x 2 matrix B.
+* On exit, B is overwritten by the ``B-part'' of the
+* generalized Schur form.
+*
+* LDB (input) INTEGER
+* THe leading dimension of the array B. LDB >= 2.
+*
+* ALPHAR (output) DOUBLE PRECISION array, dimension (2)
+* ALPHAI (output) DOUBLE PRECISION array, dimension (2)
+* BETA (output) DOUBLE PRECISION array, dimension (2)
+* (ALPHAR(k)+i*ALPHAI(k))/BETA(k) are the eigenvalues of the
+* pencil (A,B), k=1,2, i = sqrt(-1). Note that BETA(k) may
+* be zero.
+*
+* CSL (output) DOUBLE PRECISION
+* The cosine of the left rotation matrix.
+*
+* SNL (output) DOUBLE PRECISION
+* The sine of the left rotation matrix.
+*
+* CSR (output) DOUBLE PRECISION
+* The cosine of the right rotation matrix.
+*
+* SNR (output) DOUBLE PRECISION
+* The sine of the right rotation matrix.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION ANORM, ASCALE, BNORM, BSCALE, H1, H2, H3, QQ,
+ $ R, RR, SAFMIN, SCALE1, SCALE2, T, ULP, WI, WR1,
+ $ WR2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAG2, DLARTG, DLASV2, DROT
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLAPY2
+ EXTERNAL DLAMCH, DLAPY2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Executable Statements ..
+*
+ SAFMIN = DLAMCH( 'S' )
+ ULP = DLAMCH( 'P' )
+*
+* Scale A
+*
+ ANORM = MAX( ABS( A( 1, 1 ) )+ABS( A( 2, 1 ) ),
+ $ ABS( A( 1, 2 ) )+ABS( A( 2, 2 ) ), SAFMIN )
+ ASCALE = ONE / ANORM
+ A( 1, 1 ) = ASCALE*A( 1, 1 )
+ A( 1, 2 ) = ASCALE*A( 1, 2 )
+ A( 2, 1 ) = ASCALE*A( 2, 1 )
+ A( 2, 2 ) = ASCALE*A( 2, 2 )
+*
+* Scale B
+*
+ BNORM = MAX( ABS( B( 1, 1 ) ), ABS( B( 1, 2 ) )+ABS( B( 2, 2 ) ),
+ $ SAFMIN )
+ BSCALE = ONE / BNORM
+ B( 1, 1 ) = BSCALE*B( 1, 1 )
+ B( 1, 2 ) = BSCALE*B( 1, 2 )
+ B( 2, 2 ) = BSCALE*B( 2, 2 )
+*
+* Check if A can be deflated
+*
+ IF( ABS( A( 2, 1 ) ).LE.ULP ) THEN
+ CSL = ONE
+ SNL = ZERO
+ CSR = ONE
+ SNR = ZERO
+ A( 2, 1 ) = ZERO
+ B( 2, 1 ) = ZERO
+*
+* Check if B is singular
+*
+ ELSE IF( ABS( B( 1, 1 ) ).LE.ULP ) THEN
+ CALL DLARTG( A( 1, 1 ), A( 2, 1 ), CSL, SNL, R )
+ CSR = ONE
+ SNR = ZERO
+ CALL DROT( 2, A( 1, 1 ), LDA, A( 2, 1 ), LDA, CSL, SNL )
+ CALL DROT( 2, B( 1, 1 ), LDB, B( 2, 1 ), LDB, CSL, SNL )
+ A( 2, 1 ) = ZERO
+ B( 1, 1 ) = ZERO
+ B( 2, 1 ) = ZERO
+*
+ ELSE IF( ABS( B( 2, 2 ) ).LE.ULP ) THEN
+ CALL DLARTG( A( 2, 2 ), A( 2, 1 ), CSR, SNR, T )
+ SNR = -SNR
+ CALL DROT( 2, A( 1, 1 ), 1, A( 1, 2 ), 1, CSR, SNR )
+ CALL DROT( 2, B( 1, 1 ), 1, B( 1, 2 ), 1, CSR, SNR )
+ CSL = ONE
+ SNL = ZERO
+ A( 2, 1 ) = ZERO
+ B( 2, 1 ) = ZERO
+ B( 2, 2 ) = ZERO
+*
+ ELSE
+*
+* B is nonsingular, first compute the eigenvalues of (A,B)
+*
+ CALL DLAG2( A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1, WR2,
+ $ WI )
+*
+ IF( WI.EQ.ZERO ) THEN
+*
+* two real eigenvalues, compute s*A-w*B
+*
+ H1 = SCALE1*A( 1, 1 ) - WR1*B( 1, 1 )
+ H2 = SCALE1*A( 1, 2 ) - WR1*B( 1, 2 )
+ H3 = SCALE1*A( 2, 2 ) - WR1*B( 2, 2 )
+*
+ RR = DLAPY2( H1, H2 )
+ QQ = DLAPY2( SCALE1*A( 2, 1 ), H3 )
+*
+ IF( RR.GT.QQ ) THEN
+*
+* find right rotation matrix to zero 1,1 element of
+* (sA - wB)
+*
+ CALL DLARTG( H2, H1, CSR, SNR, T )
+*
+ ELSE
+*
+* find right rotation matrix to zero 2,1 element of
+* (sA - wB)
+*
+ CALL DLARTG( H3, SCALE1*A( 2, 1 ), CSR, SNR, T )
+*
+ END IF
+*
+ SNR = -SNR
+ CALL DROT( 2, A( 1, 1 ), 1, A( 1, 2 ), 1, CSR, SNR )
+ CALL DROT( 2, B( 1, 1 ), 1, B( 1, 2 ), 1, CSR, SNR )
+*
+* compute inf norms of A and B
+*
+ H1 = MAX( ABS( A( 1, 1 ) )+ABS( A( 1, 2 ) ),
+ $ ABS( A( 2, 1 ) )+ABS( A( 2, 2 ) ) )
+ H2 = MAX( ABS( B( 1, 1 ) )+ABS( B( 1, 2 ) ),
+ $ ABS( B( 2, 1 ) )+ABS( B( 2, 2 ) ) )
+*
+ IF( ( SCALE1*H1 ).GE.ABS( WR1 )*H2 ) THEN
+*
+* find left rotation matrix Q to zero out B(2,1)
+*
+ CALL DLARTG( B( 1, 1 ), B( 2, 1 ), CSL, SNL, R )
+*
+ ELSE
+*
+* find left rotation matrix Q to zero out A(2,1)
+*
+ CALL DLARTG( A( 1, 1 ), A( 2, 1 ), CSL, SNL, R )
+*
+ END IF
+*
+ CALL DROT( 2, A( 1, 1 ), LDA, A( 2, 1 ), LDA, CSL, SNL )
+ CALL DROT( 2, B( 1, 1 ), LDB, B( 2, 1 ), LDB, CSL, SNL )
+*
+ A( 2, 1 ) = ZERO
+ B( 2, 1 ) = ZERO
+*
+ ELSE
+*
+* a pair of complex conjugate eigenvalues
+* first compute the SVD of the matrix B
+*
+ CALL DLASV2( B( 1, 1 ), B( 1, 2 ), B( 2, 2 ), R, T, SNR,
+ $ CSR, SNL, CSL )
+*
+* Form (A,B) := Q(A,B)Z' where Q is left rotation matrix and
+* Z is right rotation matrix computed from DLASV2
+*
+ CALL DROT( 2, A( 1, 1 ), LDA, A( 2, 1 ), LDA, CSL, SNL )
+ CALL DROT( 2, B( 1, 1 ), LDB, B( 2, 1 ), LDB, CSL, SNL )
+ CALL DROT( 2, A( 1, 1 ), 1, A( 1, 2 ), 1, CSR, SNR )
+ CALL DROT( 2, B( 1, 1 ), 1, B( 1, 2 ), 1, CSR, SNR )
+*
+ B( 2, 1 ) = ZERO
+ B( 1, 2 ) = ZERO
+*
+ END IF
+*
+ END IF
+*
+* Unscaling
+*
+ A( 1, 1 ) = ANORM*A( 1, 1 )
+ A( 2, 1 ) = ANORM*A( 2, 1 )
+ A( 1, 2 ) = ANORM*A( 1, 2 )
+ A( 2, 2 ) = ANORM*A( 2, 2 )
+ B( 1, 1 ) = BNORM*B( 1, 1 )
+ B( 2, 1 ) = BNORM*B( 2, 1 )
+ B( 1, 2 ) = BNORM*B( 1, 2 )
+ B( 2, 2 ) = BNORM*B( 2, 2 )
+*
+ IF( WI.EQ.ZERO ) THEN
+ ALPHAR( 1 ) = A( 1, 1 )
+ ALPHAR( 2 ) = A( 2, 2 )
+ ALPHAI( 1 ) = ZERO
+ ALPHAI( 2 ) = ZERO
+ BETA( 1 ) = B( 1, 1 )
+ BETA( 2 ) = B( 2, 2 )
+ ELSE
+ ALPHAR( 1 ) = ANORM*WR1 / SCALE1 / BNORM
+ ALPHAI( 1 ) = ANORM*WI / SCALE1 / BNORM
+ ALPHAR( 2 ) = ALPHAR( 1 )
+ ALPHAI( 2 ) = -ALPHAI( 1 )
+ BETA( 1 ) = ONE
+ BETA( 2 ) = ONE
+ END IF
+*
+ RETURN
+*
+* End of DLAGV2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlahqr.f b/2.3-1/src/fortran/lapack/dlahqr.f
new file mode 100644
index 00000000..449a3770
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlahqr.f
@@ -0,0 +1,501 @@
+ SUBROUTINE DLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI,
+ $ ILOZ, IHIZ, Z, LDZ, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), WI( * ), WR( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAHQR is an auxiliary routine called by DHSEQR to update the
+* eigenvalues and Schur decomposition already computed by DHSEQR, by
+* dealing with the Hessenberg submatrix in rows and columns ILO to
+* IHI.
+*
+* Arguments
+* =========
+*
+* WANTT (input) LOGICAL
+* = .TRUE. : the full Schur form T is required;
+* = .FALSE.: only eigenvalues are required.
+*
+* WANTZ (input) LOGICAL
+* = .TRUE. : the matrix of Schur vectors Z is required;
+* = .FALSE.: Schur vectors are not required.
+*
+* N (input) INTEGER
+* The order of the matrix H. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper quasi-triangular in
+* rows and columns IHI+1:N, and that H(ILO,ILO-1) = 0 (unless
+* ILO = 1). DLAHQR works primarily with the Hessenberg
+* submatrix in rows and columns ILO to IHI, but applies
+* transformations to all of H if WANTT is .TRUE..
+* 1 <= ILO <= max(1,IHI); IHI <= N.
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO is zero and if WANTT is .TRUE., H is upper
+* quasi-triangular in rows and columns ILO:IHI, with any
+* 2-by-2 diagonal blocks in standard form. If INFO is zero
+* and WANTT is .FALSE., the contents of H are unspecified on
+* exit. The output state of H if INFO is nonzero is given
+* below under the description of INFO.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH >= max(1,N).
+*
+* WR (output) DOUBLE PRECISION array, dimension (N)
+* WI (output) DOUBLE PRECISION array, dimension (N)
+* The real and imaginary parts, respectively, of the computed
+* eigenvalues ILO to IHI are stored in the corresponding
+* elements of WR and WI. If two eigenvalues are computed as a
+* complex conjugate pair, they are stored in consecutive
+* elements of WR and WI, say the i-th and (i+1)th, with
+* WI(i) > 0 and WI(i+1) < 0. If WANTT is .TRUE., the
+* eigenvalues are stored in the same order as on the diagonal
+* of the Schur form returned in H, with WR(i) = H(i,i), and, if
+* H(i:i+1,i:i+1) is a 2-by-2 diagonal block,
+* WI(i) = sqrt(H(i+1,i)*H(i,i+1)) and WI(i+1) = -WI(i).
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE..
+* 1 <= ILOZ <= ILO; IHI <= IHIZ <= N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* If WANTZ is .TRUE., on entry Z must contain the current
+* matrix Z of transformations accumulated by DHSEQR, and on
+* exit Z has been updated; transformations are applied only to
+* the submatrix Z(ILOZ:IHIZ,ILO:IHI).
+* If WANTZ is .FALSE., Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .GT. 0: If INFO = i, DLAHQR failed to compute all the
+* eigenvalues ILO to IHI in a total of 30 iterations
+* per eigenvalue; elements i+1:ihi of WR and WI
+* contain those eigenvalues which have been
+* successfully computed.
+*
+* If INFO .GT. 0 and WANTT is .FALSE., then on exit,
+* the remaining unconverged eigenvalues are the
+* eigenvalues of the upper Hessenberg matrix rows
+* and columns ILO thorugh INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and WANTT is .TRUE., then on exit
+* (*) (initial value of H)*U = U*(final value of H)
+* where U is an orthognal matrix. The final
+* value of H is upper Hessenberg and triangular in
+* rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and WANTZ is .TRUE., then on exit
+* (final value of Z) = (initial value of Z)*U
+* where U is the orthogonal matrix in (*)
+* (regardless of the value of WANTT.)
+*
+* Further Details
+* ===============
+*
+* 02-96 Based on modifications by
+* David Day, Sandia National Laboratory, USA
+*
+* 12-04 Further modifications by
+* Ralph Byers, University of Kansas, USA
+*
+* This is a modified version of DLAHQR from LAPACK version 3.0.
+* It is (1) more robust against overflow and underflow and
+* (2) adopts the more conservative Ahues & Tisseur stopping
+* criterion (LAWN 122, 1997).
+*
+* =========================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 30 )
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0, TWO = 2.0d0 )
+ DOUBLE PRECISION DAT1, DAT2
+ PARAMETER ( DAT1 = 3.0d0 / 4.0d0, DAT2 = -0.4375d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AA, AB, BA, BB, CS, DET, H11, H12, H21, H21S,
+ $ H22, RT1I, RT1R, RT2I, RT2R, RTDISC, S, SAFMAX,
+ $ SAFMIN, SMLNUM, SN, SUM, T1, T2, T3, TR, TST,
+ $ ULP, V2, V3
+ INTEGER I, I1, I2, ITS, J, K, L, M, NH, NR, NZ
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION V( 3 )
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DLABAD, DLANV2, DLARFG, DROT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( ILO.EQ.IHI ) THEN
+ WR( ILO ) = H( ILO, ILO )
+ WI( ILO ) = ZERO
+ RETURN
+ END IF
+*
+* ==== clear out the trash ====
+ DO 10 J = ILO, IHI - 3
+ H( J+2, J ) = ZERO
+ H( J+3, J ) = ZERO
+ 10 CONTINUE
+ IF( ILO.LE.IHI-2 )
+ $ H( IHI, IHI-2 ) = ZERO
+*
+ NH = IHI - ILO + 1
+ NZ = IHIZ - ILOZ + 1
+*
+* Set machine-dependent constants for the stopping criterion.
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( NH ) / ULP )
+*
+* I1 and I2 are the indices of the first row and last column of H
+* to which transformations must be applied. If eigenvalues only are
+* being computed, I1 and I2 are set inside the main loop.
+*
+ IF( WANTT ) THEN
+ I1 = 1
+ I2 = N
+ END IF
+*
+* The main loop begins here. I is the loop index and decreases from
+* IHI to ILO in steps of 1 or 2. Each iteration of the loop works
+* with the active submatrix in rows and columns L to I.
+* Eigenvalues I+1 to IHI have already converged. Either L = ILO or
+* H(L,L-1) is negligible so that the matrix splits.
+*
+ I = IHI
+ 20 CONTINUE
+ L = ILO
+ IF( I.LT.ILO )
+ $ GO TO 160
+*
+* Perform QR iterations on rows and columns ILO to I until a
+* submatrix of order 1 or 2 splits off at the bottom because a
+* subdiagonal element has become negligible.
+*
+ DO 140 ITS = 0, ITMAX
+*
+* Look for a single small subdiagonal element.
+*
+ DO 30 K = I, L + 1, -1
+ IF( ABS( H( K, K-1 ) ).LE.SMLNUM )
+ $ GO TO 40
+ TST = ABS( H( K-1, K-1 ) ) + ABS( H( K, K ) )
+ IF( TST.EQ.ZERO ) THEN
+ IF( K-2.GE.ILO )
+ $ TST = TST + ABS( H( K-1, K-2 ) )
+ IF( K+1.LE.IHI )
+ $ TST = TST + ABS( H( K+1, K ) )
+ END IF
+* ==== The following is a conservative small subdiagonal
+* . deflation criterion due to Ahues & Tisseur (LAWN 122,
+* . 1997). It has better mathematical foundation and
+* . improves accuracy in some cases. ====
+ IF( ABS( H( K, K-1 ) ).LE.ULP*TST ) THEN
+ AB = MAX( ABS( H( K, K-1 ) ), ABS( H( K-1, K ) ) )
+ BA = MIN( ABS( H( K, K-1 ) ), ABS( H( K-1, K ) ) )
+ AA = MAX( ABS( H( K, K ) ),
+ $ ABS( H( K-1, K-1 )-H( K, K ) ) )
+ BB = MIN( ABS( H( K, K ) ),
+ $ ABS( H( K-1, K-1 )-H( K, K ) ) )
+ S = AA + AB
+ IF( BA*( AB / S ).LE.MAX( SMLNUM,
+ $ ULP*( BB*( AA / S ) ) ) )GO TO 40
+ END IF
+ 30 CONTINUE
+ 40 CONTINUE
+ L = K
+ IF( L.GT.ILO ) THEN
+*
+* H(L,L-1) is negligible
+*
+ H( L, L-1 ) = ZERO
+ END IF
+*
+* Exit from loop if a submatrix of order 1 or 2 has split off.
+*
+ IF( L.GE.I-1 )
+ $ GO TO 150
+*
+* Now the active submatrix is in rows and columns L to I. If
+* eigenvalues only are being computed, only the active submatrix
+* need be transformed.
+*
+ IF( .NOT.WANTT ) THEN
+ I1 = L
+ I2 = I
+ END IF
+*
+ IF( ITS.EQ.10 .OR. ITS.EQ.20 ) THEN
+*
+* Exceptional shift.
+*
+ H11 = DAT1*S + H( I, I )
+ H12 = DAT2*S
+ H21 = S
+ H22 = H11
+ ELSE
+*
+* Prepare to use Francis' double shift
+* (i.e. 2nd degree generalized Rayleigh quotient)
+*
+ H11 = H( I-1, I-1 )
+ H21 = H( I, I-1 )
+ H12 = H( I-1, I )
+ H22 = H( I, I )
+ END IF
+ S = ABS( H11 ) + ABS( H12 ) + ABS( H21 ) + ABS( H22 )
+ IF( S.EQ.ZERO ) THEN
+ RT1R = ZERO
+ RT1I = ZERO
+ RT2R = ZERO
+ RT2I = ZERO
+ ELSE
+ H11 = H11 / S
+ H21 = H21 / S
+ H12 = H12 / S
+ H22 = H22 / S
+ TR = ( H11+H22 ) / TWO
+ DET = ( H11-TR )*( H22-TR ) - H12*H21
+ RTDISC = SQRT( ABS( DET ) )
+ IF( DET.GE.ZERO ) THEN
+*
+* ==== complex conjugate shifts ====
+*
+ RT1R = TR*S
+ RT2R = RT1R
+ RT1I = RTDISC*S
+ RT2I = -RT1I
+ ELSE
+*
+* ==== real shifts (use only one of them) ====
+*
+ RT1R = TR + RTDISC
+ RT2R = TR - RTDISC
+ IF( ABS( RT1R-H22 ).LE.ABS( RT2R-H22 ) ) THEN
+ RT1R = RT1R*S
+ RT2R = RT1R
+ ELSE
+ RT2R = RT2R*S
+ RT1R = RT2R
+ END IF
+ RT1I = ZERO
+ RT2I = ZERO
+ END IF
+ END IF
+*
+* Look for two consecutive small subdiagonal elements.
+*
+ DO 50 M = I - 2, L, -1
+* Determine the effect of starting the double-shift QR
+* iteration at row M, and see if this would make H(M,M-1)
+* negligible. (The following uses scaling to avoid
+* overflows and most underflows.)
+*
+ H21S = H( M+1, M )
+ S = ABS( H( M, M )-RT2R ) + ABS( RT2I ) + ABS( H21S )
+ H21S = H( M+1, M ) / S
+ V( 1 ) = H21S*H( M, M+1 ) + ( H( M, M )-RT1R )*
+ $ ( ( H( M, M )-RT2R ) / S ) - RT1I*( RT2I / S )
+ V( 2 ) = H21S*( H( M, M )+H( M+1, M+1 )-RT1R-RT2R )
+ V( 3 ) = H21S*H( M+2, M+1 )
+ S = ABS( V( 1 ) ) + ABS( V( 2 ) ) + ABS( V( 3 ) )
+ V( 1 ) = V( 1 ) / S
+ V( 2 ) = V( 2 ) / S
+ V( 3 ) = V( 3 ) / S
+ IF( M.EQ.L )
+ $ GO TO 60
+ IF( ABS( H( M, M-1 ) )*( ABS( V( 2 ) )+ABS( V( 3 ) ) ).LE.
+ $ ULP*ABS( V( 1 ) )*( ABS( H( M-1, M-1 ) )+ABS( H( M,
+ $ M ) )+ABS( H( M+1, M+1 ) ) ) )GO TO 60
+ 50 CONTINUE
+ 60 CONTINUE
+*
+* Double-shift QR step
+*
+ DO 130 K = M, I - 1
+*
+* The first iteration of this loop determines a reflection G
+* from the vector V and applies it from left and right to H,
+* thus creating a nonzero bulge below the subdiagonal.
+*
+* Each subsequent iteration determines a reflection G to
+* restore the Hessenberg form in the (K-1)th column, and thus
+* chases the bulge one step toward the bottom of the active
+* submatrix. NR is the order of G.
+*
+ NR = MIN( 3, I-K+1 )
+ IF( K.GT.M )
+ $ CALL DCOPY( NR, H( K, K-1 ), 1, V, 1 )
+ CALL DLARFG( NR, V( 1 ), V( 2 ), 1, T1 )
+ IF( K.GT.M ) THEN
+ H( K, K-1 ) = V( 1 )
+ H( K+1, K-1 ) = ZERO
+ IF( K.LT.I-1 )
+ $ H( K+2, K-1 ) = ZERO
+ ELSE IF( M.GT.L ) THEN
+ H( K, K-1 ) = -H( K, K-1 )
+ END IF
+ V2 = V( 2 )
+ T2 = T1*V2
+ IF( NR.EQ.3 ) THEN
+ V3 = V( 3 )
+ T3 = T1*V3
+*
+* Apply G from the left to transform the rows of the matrix
+* in columns K to I2.
+*
+ DO 70 J = K, I2
+ SUM = H( K, J ) + V2*H( K+1, J ) + V3*H( K+2, J )
+ H( K, J ) = H( K, J ) - SUM*T1
+ H( K+1, J ) = H( K+1, J ) - SUM*T2
+ H( K+2, J ) = H( K+2, J ) - SUM*T3
+ 70 CONTINUE
+*
+* Apply G from the right to transform the columns of the
+* matrix in rows I1 to min(K+3,I).
+*
+ DO 80 J = I1, MIN( K+3, I )
+ SUM = H( J, K ) + V2*H( J, K+1 ) + V3*H( J, K+2 )
+ H( J, K ) = H( J, K ) - SUM*T1
+ H( J, K+1 ) = H( J, K+1 ) - SUM*T2
+ H( J, K+2 ) = H( J, K+2 ) - SUM*T3
+ 80 CONTINUE
+*
+ IF( WANTZ ) THEN
+*
+* Accumulate transformations in the matrix Z
+*
+ DO 90 J = ILOZ, IHIZ
+ SUM = Z( J, K ) + V2*Z( J, K+1 ) + V3*Z( J, K+2 )
+ Z( J, K ) = Z( J, K ) - SUM*T1
+ Z( J, K+1 ) = Z( J, K+1 ) - SUM*T2
+ Z( J, K+2 ) = Z( J, K+2 ) - SUM*T3
+ 90 CONTINUE
+ END IF
+ ELSE IF( NR.EQ.2 ) THEN
+*
+* Apply G from the left to transform the rows of the matrix
+* in columns K to I2.
+*
+ DO 100 J = K, I2
+ SUM = H( K, J ) + V2*H( K+1, J )
+ H( K, J ) = H( K, J ) - SUM*T1
+ H( K+1, J ) = H( K+1, J ) - SUM*T2
+ 100 CONTINUE
+*
+* Apply G from the right to transform the columns of the
+* matrix in rows I1 to min(K+3,I).
+*
+ DO 110 J = I1, I
+ SUM = H( J, K ) + V2*H( J, K+1 )
+ H( J, K ) = H( J, K ) - SUM*T1
+ H( J, K+1 ) = H( J, K+1 ) - SUM*T2
+ 110 CONTINUE
+*
+ IF( WANTZ ) THEN
+*
+* Accumulate transformations in the matrix Z
+*
+ DO 120 J = ILOZ, IHIZ
+ SUM = Z( J, K ) + V2*Z( J, K+1 )
+ Z( J, K ) = Z( J, K ) - SUM*T1
+ Z( J, K+1 ) = Z( J, K+1 ) - SUM*T2
+ 120 CONTINUE
+ END IF
+ END IF
+ 130 CONTINUE
+*
+ 140 CONTINUE
+*
+* Failure to converge in remaining number of iterations
+*
+ INFO = I
+ RETURN
+*
+ 150 CONTINUE
+*
+ IF( L.EQ.I ) THEN
+*
+* H(I,I-1) is negligible: one eigenvalue has converged.
+*
+ WR( I ) = H( I, I )
+ WI( I ) = ZERO
+ ELSE IF( L.EQ.I-1 ) THEN
+*
+* H(I-1,I-2) is negligible: a pair of eigenvalues have converged.
+*
+* Transform the 2-by-2 submatrix to standard Schur form,
+* and compute and store the eigenvalues.
+*
+ CALL DLANV2( H( I-1, I-1 ), H( I-1, I ), H( I, I-1 ),
+ $ H( I, I ), WR( I-1 ), WI( I-1 ), WR( I ), WI( I ),
+ $ CS, SN )
+*
+ IF( WANTT ) THEN
+*
+* Apply the transformation to the rest of H.
+*
+ IF( I2.GT.I )
+ $ CALL DROT( I2-I, H( I-1, I+1 ), LDH, H( I, I+1 ), LDH,
+ $ CS, SN )
+ CALL DROT( I-I1-1, H( I1, I-1 ), 1, H( I1, I ), 1, CS, SN )
+ END IF
+ IF( WANTZ ) THEN
+*
+* Apply the transformation to Z.
+*
+ CALL DROT( NZ, Z( ILOZ, I-1 ), 1, Z( ILOZ, I ), 1, CS, SN )
+ END IF
+ END IF
+*
+* return to start of the main loop with new value of I.
+*
+ I = L - 1
+ GO TO 20
+*
+ 160 CONTINUE
+ RETURN
+*
+* End of DLAHQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlahr2.f b/2.3-1/src/fortran/lapack/dlahr2.f
new file mode 100644
index 00000000..6af74977
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlahr2.f
@@ -0,0 +1,238 @@
+ SUBROUTINE DLAHR2( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER K, LDA, LDT, LDY, N, NB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), T( LDT, NB ), TAU( NB ),
+ $ Y( LDY, NB )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAHR2 reduces the first NB columns of A real general n-BY-(n-k+1)
+* matrix A so that elements below the k-th subdiagonal are zero. The
+* reduction is performed by an orthogonal similarity transformation
+* Q' * A * Q. The routine returns the matrices V and T which determine
+* Q as a block reflector I - V*T*V', and also the matrix Y = A * V * T.
+*
+* This is an auxiliary routine called by DGEHRD.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* K (input) INTEGER
+* The offset for the reduction. Elements below the k-th
+* subdiagonal in the first NB columns are reduced to zero.
+* K < N.
+*
+* NB (input) INTEGER
+* The number of columns to be reduced.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N-K+1)
+* On entry, the n-by-(n-k+1) general matrix A.
+* On exit, the elements on and above the k-th subdiagonal in
+* the first NB columns are overwritten with the corresponding
+* elements of the reduced matrix; the elements below the k-th
+* subdiagonal, with the array TAU, represent the matrix Q as a
+* product of elementary reflectors. The other columns of A are
+* unchanged. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (NB)
+* The scalar factors of the elementary reflectors. See Further
+* Details.
+*
+* T (output) DOUBLE PRECISION array, dimension (LDT,NB)
+* The upper triangular matrix T.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= NB.
+*
+* Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
+* The n-by-nb matrix Y.
+*
+* LDY (input) INTEGER
+* The leading dimension of the array Y. LDY >= N.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of nb elementary reflectors
+*
+* Q = H(1) H(2) . . . H(nb).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in
+* A(i+k+1:n,i), and tau in TAU(i).
+*
+* The elements of the vectors v together form the (n-k+1)-by-nb matrix
+* V which is needed, with T and Y, to apply the transformation to the
+* unreduced part of the matrix, using an update of the form:
+* A := (I - V*T*V') * (A - Y*V').
+*
+* The contents of A on exit are illustrated by the following example
+* with n = 7, k = 3 and nb = 2:
+*
+* ( a a a a a )
+* ( a a a a a )
+* ( a a a a a )
+* ( h h a a a )
+* ( v1 h a a a )
+* ( v1 v2 a a a )
+* ( v1 v2 a a a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* This file is a slight modification of LAPACK-3.0's DLAHRD
+* incorporating improvements proposed by Quintana-Orti and Van de
+* Gejin. Note that the entries of A(1:K,2:NB) differ from those
+* returned by the original LAPACK routine. This function is
+* not backward compatible with LAPACK3.0.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0,
+ $ ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ DOUBLE PRECISION EI
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMM, DGEMV, DLACPY,
+ $ DLARFG, DSCAL, DTRMM, DTRMV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ DO 10 I = 1, NB
+ IF( I.GT.1 ) THEN
+*
+* Update A(K+1:N,I)
+*
+* Update I-th column of A - Y * V'
+*
+ CALL DGEMV( 'NO TRANSPOSE', N-K, I-1, -ONE, Y(K+1,1), LDY,
+ $ A( K+I-1, 1 ), LDA, ONE, A( K+1, I ), 1 )
+*
+* Apply I - V * T' * V' to this column (call it b) from the
+* left, using the last column of T as workspace
+*
+* Let V = ( V1 ) and b = ( b1 ) (first I-1 rows)
+* ( V2 ) ( b2 )
+*
+* where V1 is unit lower triangular
+*
+* w := V1' * b1
+*
+ CALL DCOPY( I-1, A( K+1, I ), 1, T( 1, NB ), 1 )
+ CALL DTRMV( 'Lower', 'Transpose', 'UNIT',
+ $ I-1, A( K+1, 1 ),
+ $ LDA, T( 1, NB ), 1 )
+*
+* w := w + V2'*b2
+*
+ CALL DGEMV( 'Transpose', N-K-I+1, I-1,
+ $ ONE, A( K+I, 1 ),
+ $ LDA, A( K+I, I ), 1, ONE, T( 1, NB ), 1 )
+*
+* w := T'*w
+*
+ CALL DTRMV( 'Upper', 'Transpose', 'NON-UNIT',
+ $ I-1, T, LDT,
+ $ T( 1, NB ), 1 )
+*
+* b2 := b2 - V2*w
+*
+ CALL DGEMV( 'NO TRANSPOSE', N-K-I+1, I-1, -ONE,
+ $ A( K+I, 1 ),
+ $ LDA, T( 1, NB ), 1, ONE, A( K+I, I ), 1 )
+*
+* b1 := b1 - V1*w
+*
+ CALL DTRMV( 'Lower', 'NO TRANSPOSE',
+ $ 'UNIT', I-1,
+ $ A( K+1, 1 ), LDA, T( 1, NB ), 1 )
+ CALL DAXPY( I-1, -ONE, T( 1, NB ), 1, A( K+1, I ), 1 )
+*
+ A( K+I-1, I-1 ) = EI
+ END IF
+*
+* Generate the elementary reflector H(I) to annihilate
+* A(K+I+1:N,I)
+*
+ CALL DLARFG( N-K-I+1, A( K+I, I ), A( MIN( K+I+1, N ), I ), 1,
+ $ TAU( I ) )
+ EI = A( K+I, I )
+ A( K+I, I ) = ONE
+*
+* Compute Y(K+1:N,I)
+*
+ CALL DGEMV( 'NO TRANSPOSE', N-K, N-K-I+1,
+ $ ONE, A( K+1, I+1 ),
+ $ LDA, A( K+I, I ), 1, ZERO, Y( K+1, I ), 1 )
+ CALL DGEMV( 'Transpose', N-K-I+1, I-1,
+ $ ONE, A( K+I, 1 ), LDA,
+ $ A( K+I, I ), 1, ZERO, T( 1, I ), 1 )
+ CALL DGEMV( 'NO TRANSPOSE', N-K, I-1, -ONE,
+ $ Y( K+1, 1 ), LDY,
+ $ T( 1, I ), 1, ONE, Y( K+1, I ), 1 )
+ CALL DSCAL( N-K, TAU( I ), Y( K+1, I ), 1 )
+*
+* Compute T(1:I,I)
+*
+ CALL DSCAL( I-1, -TAU( I ), T( 1, I ), 1 )
+ CALL DTRMV( 'Upper', 'No Transpose', 'NON-UNIT',
+ $ I-1, T, LDT,
+ $ T( 1, I ), 1 )
+ T( I, I ) = TAU( I )
+*
+ 10 CONTINUE
+ A( K+NB, NB ) = EI
+*
+* Compute Y(1:K,1:NB)
+*
+ CALL DLACPY( 'ALL', K, NB, A( 1, 2 ), LDA, Y, LDY )
+ CALL DTRMM( 'RIGHT', 'Lower', 'NO TRANSPOSE',
+ $ 'UNIT', K, NB,
+ $ ONE, A( K+1, 1 ), LDA, Y, LDY )
+ IF( N.GT.K+NB )
+ $ CALL DGEMM( 'NO TRANSPOSE', 'NO TRANSPOSE', K,
+ $ NB, N-K-NB, ONE,
+ $ A( 1, 2+NB ), LDA, A( K+1+NB, 1 ), LDA, ONE, Y,
+ $ LDY )
+ CALL DTRMM( 'RIGHT', 'Upper', 'NO TRANSPOSE',
+ $ 'NON-UNIT', K, NB,
+ $ ONE, T, LDT, Y, LDY )
+*
+ RETURN
+*
+* End of DLAHR2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlahrd.f b/2.3-1/src/fortran/lapack/dlahrd.f
new file mode 100644
index 00000000..a04133d1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlahrd.f
@@ -0,0 +1,207 @@
+ SUBROUTINE DLAHRD( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER K, LDA, LDT, LDY, N, NB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), T( LDT, NB ), TAU( NB ),
+ $ Y( LDY, NB )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAHRD reduces the first NB columns of a real general n-by-(n-k+1)
+* matrix A so that elements below the k-th subdiagonal are zero. The
+* reduction is performed by an orthogonal similarity transformation
+* Q' * A * Q. The routine returns the matrices V and T which determine
+* Q as a block reflector I - V*T*V', and also the matrix Y = A * V * T.
+*
+* This is an OBSOLETE auxiliary routine.
+* This routine will be 'deprecated' in a future release.
+* Please use the new routine DLAHR2 instead.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* K (input) INTEGER
+* The offset for the reduction. Elements below the k-th
+* subdiagonal in the first NB columns are reduced to zero.
+*
+* NB (input) INTEGER
+* The number of columns to be reduced.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N-K+1)
+* On entry, the n-by-(n-k+1) general matrix A.
+* On exit, the elements on and above the k-th subdiagonal in
+* the first NB columns are overwritten with the corresponding
+* elements of the reduced matrix; the elements below the k-th
+* subdiagonal, with the array TAU, represent the matrix Q as a
+* product of elementary reflectors. The other columns of A are
+* unchanged. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (NB)
+* The scalar factors of the elementary reflectors. See Further
+* Details.
+*
+* T (output) DOUBLE PRECISION array, dimension (LDT,NB)
+* The upper triangular matrix T.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= NB.
+*
+* Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
+* The n-by-nb matrix Y.
+*
+* LDY (input) INTEGER
+* The leading dimension of the array Y. LDY >= N.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of nb elementary reflectors
+*
+* Q = H(1) H(2) . . . H(nb).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in
+* A(i+k+1:n,i), and tau in TAU(i).
+*
+* The elements of the vectors v together form the (n-k+1)-by-nb matrix
+* V which is needed, with T and Y, to apply the transformation to the
+* unreduced part of the matrix, using an update of the form:
+* A := (I - V*T*V') * (A - Y*V').
+*
+* The contents of A on exit are illustrated by the following example
+* with n = 7, k = 3 and nb = 2:
+*
+* ( a h a a a )
+* ( a h a a a )
+* ( a h a a a )
+* ( h h a a a )
+* ( v1 h a a a )
+* ( v1 v2 a a a )
+* ( v1 v2 a a a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ DOUBLE PRECISION EI
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMV, DLARFG, DSCAL, DTRMV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ DO 10 I = 1, NB
+ IF( I.GT.1 ) THEN
+*
+* Update A(1:n,i)
+*
+* Compute i-th column of A - Y * V'
+*
+ CALL DGEMV( 'No transpose', N, I-1, -ONE, Y, LDY,
+ $ A( K+I-1, 1 ), LDA, ONE, A( 1, I ), 1 )
+*
+* Apply I - V * T' * V' to this column (call it b) from the
+* left, using the last column of T as workspace
+*
+* Let V = ( V1 ) and b = ( b1 ) (first I-1 rows)
+* ( V2 ) ( b2 )
+*
+* where V1 is unit lower triangular
+*
+* w := V1' * b1
+*
+ CALL DCOPY( I-1, A( K+1, I ), 1, T( 1, NB ), 1 )
+ CALL DTRMV( 'Lower', 'Transpose', 'Unit', I-1, A( K+1, 1 ),
+ $ LDA, T( 1, NB ), 1 )
+*
+* w := w + V2'*b2
+*
+ CALL DGEMV( 'Transpose', N-K-I+1, I-1, ONE, A( K+I, 1 ),
+ $ LDA, A( K+I, I ), 1, ONE, T( 1, NB ), 1 )
+*
+* w := T'*w
+*
+ CALL DTRMV( 'Upper', 'Transpose', 'Non-unit', I-1, T, LDT,
+ $ T( 1, NB ), 1 )
+*
+* b2 := b2 - V2*w
+*
+ CALL DGEMV( 'No transpose', N-K-I+1, I-1, -ONE, A( K+I, 1 ),
+ $ LDA, T( 1, NB ), 1, ONE, A( K+I, I ), 1 )
+*
+* b1 := b1 - V1*w
+*
+ CALL DTRMV( 'Lower', 'No transpose', 'Unit', I-1,
+ $ A( K+1, 1 ), LDA, T( 1, NB ), 1 )
+ CALL DAXPY( I-1, -ONE, T( 1, NB ), 1, A( K+1, I ), 1 )
+*
+ A( K+I-1, I-1 ) = EI
+ END IF
+*
+* Generate the elementary reflector H(i) to annihilate
+* A(k+i+1:n,i)
+*
+ CALL DLARFG( N-K-I+1, A( K+I, I ), A( MIN( K+I+1, N ), I ), 1,
+ $ TAU( I ) )
+ EI = A( K+I, I )
+ A( K+I, I ) = ONE
+*
+* Compute Y(1:n,i)
+*
+ CALL DGEMV( 'No transpose', N, N-K-I+1, ONE, A( 1, I+1 ), LDA,
+ $ A( K+I, I ), 1, ZERO, Y( 1, I ), 1 )
+ CALL DGEMV( 'Transpose', N-K-I+1, I-1, ONE, A( K+I, 1 ), LDA,
+ $ A( K+I, I ), 1, ZERO, T( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', N, I-1, -ONE, Y, LDY, T( 1, I ), 1,
+ $ ONE, Y( 1, I ), 1 )
+ CALL DSCAL( N, TAU( I ), Y( 1, I ), 1 )
+*
+* Compute T(1:i,i)
+*
+ CALL DSCAL( I-1, -TAU( I ), T( 1, I ), 1 )
+ CALL DTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T, LDT,
+ $ T( 1, I ), 1 )
+ T( I, I ) = TAU( I )
+*
+ 10 CONTINUE
+ A( K+NB, NB ) = EI
+*
+ RETURN
+*
+* End of DLAHRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaic1.f b/2.3-1/src/fortran/lapack/dlaic1.f
new file mode 100644
index 00000000..44baece1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaic1.f
@@ -0,0 +1,292 @@
+ SUBROUTINE DLAIC1( JOB, J, X, SEST, W, GAMMA, SESTPR, S, C )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER J, JOB
+ DOUBLE PRECISION C, GAMMA, S, SEST, SESTPR
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION W( J ), X( J )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAIC1 applies one step of incremental condition estimation in
+* its simplest version:
+*
+* Let x, twonorm(x) = 1, be an approximate singular vector of an j-by-j
+* lower triangular matrix L, such that
+* twonorm(L*x) = sest
+* Then DLAIC1 computes sestpr, s, c such that
+* the vector
+* [ s*x ]
+* xhat = [ c ]
+* is an approximate singular vector of
+* [ L 0 ]
+* Lhat = [ w' gamma ]
+* in the sense that
+* twonorm(Lhat*xhat) = sestpr.
+*
+* Depending on JOB, an estimate for the largest or smallest singular
+* value is computed.
+*
+* Note that [s c]' and sestpr**2 is an eigenpair of the system
+*
+* diag(sest*sest, 0) + [alpha gamma] * [ alpha ]
+* [ gamma ]
+*
+* where alpha = x'*w.
+*
+* Arguments
+* =========
+*
+* JOB (input) INTEGER
+* = 1: an estimate for the largest singular value is computed.
+* = 2: an estimate for the smallest singular value is computed.
+*
+* J (input) INTEGER
+* Length of X and W
+*
+* X (input) DOUBLE PRECISION array, dimension (J)
+* The j-vector x.
+*
+* SEST (input) DOUBLE PRECISION
+* Estimated singular value of j by j matrix L
+*
+* W (input) DOUBLE PRECISION array, dimension (J)
+* The j-vector w.
+*
+* GAMMA (input) DOUBLE PRECISION
+* The diagonal element gamma.
+*
+* SESTPR (output) DOUBLE PRECISION
+* Estimated singular value of (j+1) by (j+1) matrix Lhat.
+*
+* S (output) DOUBLE PRECISION
+* Sine needed in forming xhat.
+*
+* C (output) DOUBLE PRECISION
+* Cosine needed in forming xhat.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 )
+ DOUBLE PRECISION HALF, FOUR
+ PARAMETER ( HALF = 0.5D0, FOUR = 4.0D0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION ABSALP, ABSEST, ABSGAM, ALPHA, B, COSINE, EPS,
+ $ NORMA, S1, S2, SINE, T, TEST, TMP, ZETA1, ZETA2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SIGN, SQRT
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DDOT, DLAMCH
+ EXTERNAL DDOT, DLAMCH
+* ..
+* .. Executable Statements ..
+*
+ EPS = DLAMCH( 'Epsilon' )
+ ALPHA = DDOT( J, X, 1, W, 1 )
+*
+ ABSALP = ABS( ALPHA )
+ ABSGAM = ABS( GAMMA )
+ ABSEST = ABS( SEST )
+*
+ IF( JOB.EQ.1 ) THEN
+*
+* Estimating largest singular value
+*
+* special cases
+*
+ IF( SEST.EQ.ZERO ) THEN
+ S1 = MAX( ABSGAM, ABSALP )
+ IF( S1.EQ.ZERO ) THEN
+ S = ZERO
+ C = ONE
+ SESTPR = ZERO
+ ELSE
+ S = ALPHA / S1
+ C = GAMMA / S1
+ TMP = SQRT( S*S+C*C )
+ S = S / TMP
+ C = C / TMP
+ SESTPR = S1*TMP
+ END IF
+ RETURN
+ ELSE IF( ABSGAM.LE.EPS*ABSEST ) THEN
+ S = ONE
+ C = ZERO
+ TMP = MAX( ABSEST, ABSALP )
+ S1 = ABSEST / TMP
+ S2 = ABSALP / TMP
+ SESTPR = TMP*SQRT( S1*S1+S2*S2 )
+ RETURN
+ ELSE IF( ABSALP.LE.EPS*ABSEST ) THEN
+ S1 = ABSGAM
+ S2 = ABSEST
+ IF( S1.LE.S2 ) THEN
+ S = ONE
+ C = ZERO
+ SESTPR = S2
+ ELSE
+ S = ZERO
+ C = ONE
+ SESTPR = S1
+ END IF
+ RETURN
+ ELSE IF( ABSEST.LE.EPS*ABSALP .OR. ABSEST.LE.EPS*ABSGAM ) THEN
+ S1 = ABSGAM
+ S2 = ABSALP
+ IF( S1.LE.S2 ) THEN
+ TMP = S1 / S2
+ S = SQRT( ONE+TMP*TMP )
+ SESTPR = S2*S
+ C = ( GAMMA / S2 ) / S
+ S = SIGN( ONE, ALPHA ) / S
+ ELSE
+ TMP = S2 / S1
+ C = SQRT( ONE+TMP*TMP )
+ SESTPR = S1*C
+ S = ( ALPHA / S1 ) / C
+ C = SIGN( ONE, GAMMA ) / C
+ END IF
+ RETURN
+ ELSE
+*
+* normal case
+*
+ ZETA1 = ALPHA / ABSEST
+ ZETA2 = GAMMA / ABSEST
+*
+ B = ( ONE-ZETA1*ZETA1-ZETA2*ZETA2 )*HALF
+ C = ZETA1*ZETA1
+ IF( B.GT.ZERO ) THEN
+ T = C / ( B+SQRT( B*B+C ) )
+ ELSE
+ T = SQRT( B*B+C ) - B
+ END IF
+*
+ SINE = -ZETA1 / T
+ COSINE = -ZETA2 / ( ONE+T )
+ TMP = SQRT( SINE*SINE+COSINE*COSINE )
+ S = SINE / TMP
+ C = COSINE / TMP
+ SESTPR = SQRT( T+ONE )*ABSEST
+ RETURN
+ END IF
+*
+ ELSE IF( JOB.EQ.2 ) THEN
+*
+* Estimating smallest singular value
+*
+* special cases
+*
+ IF( SEST.EQ.ZERO ) THEN
+ SESTPR = ZERO
+ IF( MAX( ABSGAM, ABSALP ).EQ.ZERO ) THEN
+ SINE = ONE
+ COSINE = ZERO
+ ELSE
+ SINE = -GAMMA
+ COSINE = ALPHA
+ END IF
+ S1 = MAX( ABS( SINE ), ABS( COSINE ) )
+ S = SINE / S1
+ C = COSINE / S1
+ TMP = SQRT( S*S+C*C )
+ S = S / TMP
+ C = C / TMP
+ RETURN
+ ELSE IF( ABSGAM.LE.EPS*ABSEST ) THEN
+ S = ZERO
+ C = ONE
+ SESTPR = ABSGAM
+ RETURN
+ ELSE IF( ABSALP.LE.EPS*ABSEST ) THEN
+ S1 = ABSGAM
+ S2 = ABSEST
+ IF( S1.LE.S2 ) THEN
+ S = ZERO
+ C = ONE
+ SESTPR = S1
+ ELSE
+ S = ONE
+ C = ZERO
+ SESTPR = S2
+ END IF
+ RETURN
+ ELSE IF( ABSEST.LE.EPS*ABSALP .OR. ABSEST.LE.EPS*ABSGAM ) THEN
+ S1 = ABSGAM
+ S2 = ABSALP
+ IF( S1.LE.S2 ) THEN
+ TMP = S1 / S2
+ C = SQRT( ONE+TMP*TMP )
+ SESTPR = ABSEST*( TMP / C )
+ S = -( GAMMA / S2 ) / C
+ C = SIGN( ONE, ALPHA ) / C
+ ELSE
+ TMP = S2 / S1
+ S = SQRT( ONE+TMP*TMP )
+ SESTPR = ABSEST / S
+ C = ( ALPHA / S1 ) / S
+ S = -SIGN( ONE, GAMMA ) / S
+ END IF
+ RETURN
+ ELSE
+*
+* normal case
+*
+ ZETA1 = ALPHA / ABSEST
+ ZETA2 = GAMMA / ABSEST
+*
+ NORMA = MAX( ONE+ZETA1*ZETA1+ABS( ZETA1*ZETA2 ),
+ $ ABS( ZETA1*ZETA2 )+ZETA2*ZETA2 )
+*
+* See if root is closer to zero or to ONE
+*
+ TEST = ONE + TWO*( ZETA1-ZETA2 )*( ZETA1+ZETA2 )
+ IF( TEST.GE.ZERO ) THEN
+*
+* root is close to zero, compute directly
+*
+ B = ( ZETA1*ZETA1+ZETA2*ZETA2+ONE )*HALF
+ C = ZETA2*ZETA2
+ T = C / ( B+SQRT( ABS( B*B-C ) ) )
+ SINE = ZETA1 / ( ONE-T )
+ COSINE = -ZETA2 / T
+ SESTPR = SQRT( T+FOUR*EPS*EPS*NORMA )*ABSEST
+ ELSE
+*
+* root is closer to ONE, shift by that amount
+*
+ B = ( ZETA2*ZETA2+ZETA1*ZETA1-ONE )*HALF
+ C = ZETA1*ZETA1
+ IF( B.GE.ZERO ) THEN
+ T = -C / ( B+SQRT( B*B+C ) )
+ ELSE
+ T = B - SQRT( B*B+C )
+ END IF
+ SINE = -ZETA1 / T
+ COSINE = -ZETA2 / ( ONE+T )
+ SESTPR = SQRT( ONE+T+FOUR*EPS*EPS*NORMA )*ABSEST
+ END IF
+ TMP = SQRT( SINE*SINE+COSINE*COSINE )
+ S = SINE / TMP
+ C = COSINE / TMP
+ RETURN
+*
+ END IF
+ END IF
+ RETURN
+*
+* End of DLAIC1
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaisnan.f b/2.3-1/src/fortran/lapack/dlaisnan.f
new file mode 100644
index 00000000..96350a27
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaisnan.f
@@ -0,0 +1,41 @@
+ LOGICAL FUNCTION DLAISNAN(DIN1,DIN2)
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION DIN1,DIN2
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is not for general use. It exists solely to avoid
+* over-optimization in DISNAN.
+*
+* DLAISNAN checks for NaNs by comparing its two arguments for
+* inequality. NaN is the only floating-point value where NaN != NaN
+* returns .TRUE. To check for NaNs, pass the same variable as both
+* arguments.
+*
+* Strictly speaking, Fortran does not allow aliasing of function
+* arguments. So a compiler must assume that the two arguments are
+* not the same variable, and the test will not be optimized away.
+* Interprocedural or whole-program optimization may delete this
+* test. The ISNAN functions will be replaced by the correct
+* Fortran 03 intrinsic once the intrinsic is widely available.
+*
+* Arguments
+* =========
+*
+* DIN1 (input) DOUBLE PRECISION
+* DIN2 (input) DOUBLE PRECISION
+* Two numbers to compare for inequality.
+*
+* =====================================================================
+*
+* .. Executable Statements ..
+ DLAISNAN = (DIN1.NE.DIN2)
+ RETURN
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaln2.f b/2.3-1/src/fortran/lapack/dlaln2.f
new file mode 100644
index 00000000..7c99bdbe
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaln2.f
@@ -0,0 +1,507 @@
+ SUBROUTINE DLALN2( LTRANS, NA, NW, SMIN, CA, A, LDA, D1, D2, B,
+ $ LDB, WR, WI, X, LDX, SCALE, XNORM, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL LTRANS
+ INTEGER INFO, LDA, LDB, LDX, NA, NW
+ DOUBLE PRECISION CA, D1, D2, SCALE, SMIN, WI, WR, XNORM
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), X( LDX, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLALN2 solves a system of the form (ca A - w D ) X = s B
+* or (ca A' - w D) X = s B with possible scaling ("s") and
+* perturbation of A. (A' means A-transpose.)
+*
+* A is an NA x NA real matrix, ca is a real scalar, D is an NA x NA
+* real diagonal matrix, w is a real or complex value, and X and B are
+* NA x 1 matrices -- real if w is real, complex if w is complex. NA
+* may be 1 or 2.
+*
+* If w is complex, X and B are represented as NA x 2 matrices,
+* the first column of each being the real part and the second
+* being the imaginary part.
+*
+* "s" is a scaling factor (.LE. 1), computed by DLALN2, which is
+* so chosen that X can be computed without overflow. X is further
+* scaled if necessary to assure that norm(ca A - w D)*norm(X) is less
+* than overflow.
+*
+* If both singular values of (ca A - w D) are less than SMIN,
+* SMIN*identity will be used instead of (ca A - w D). If only one
+* singular value is less than SMIN, one element of (ca A - w D) will be
+* perturbed enough to make the smallest singular value roughly SMIN.
+* If both singular values are at least SMIN, (ca A - w D) will not be
+* perturbed. In any case, the perturbation will be at most some small
+* multiple of max( SMIN, ulp*norm(ca A - w D) ). The singular values
+* are computed by infinity-norm approximations, and thus will only be
+* correct to a factor of 2 or so.
+*
+* Note: all input quantities are assumed to be smaller than overflow
+* by a reasonable factor. (See BIGNUM.)
+*
+* Arguments
+* ==========
+*
+* LTRANS (input) LOGICAL
+* =.TRUE.: A-transpose will be used.
+* =.FALSE.: A will be used (not transposed.)
+*
+* NA (input) INTEGER
+* The size of the matrix A. It may (only) be 1 or 2.
+*
+* NW (input) INTEGER
+* 1 if "w" is real, 2 if "w" is complex. It may only be 1
+* or 2.
+*
+* SMIN (input) DOUBLE PRECISION
+* The desired lower bound on the singular values of A. This
+* should be a safe distance away from underflow or overflow,
+* say, between (underflow/machine precision) and (machine
+* precision * overflow ). (See BIGNUM and ULP.)
+*
+* CA (input) DOUBLE PRECISION
+* The coefficient c, which A is multiplied by.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,NA)
+* The NA x NA matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of A. It must be at least NA.
+*
+* D1 (input) DOUBLE PRECISION
+* The 1,1 element in the diagonal matrix D.
+*
+* D2 (input) DOUBLE PRECISION
+* The 2,2 element in the diagonal matrix D. Not used if NW=1.
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB,NW)
+* The NA x NW matrix B (right-hand side). If NW=2 ("w" is
+* complex), column 1 contains the real part of B and column 2
+* contains the imaginary part.
+*
+* LDB (input) INTEGER
+* The leading dimension of B. It must be at least NA.
+*
+* WR (input) DOUBLE PRECISION
+* The real part of the scalar "w".
+*
+* WI (input) DOUBLE PRECISION
+* The imaginary part of the scalar "w". Not used if NW=1.
+*
+* X (output) DOUBLE PRECISION array, dimension (LDX,NW)
+* The NA x NW matrix X (unknowns), as computed by DLALN2.
+* If NW=2 ("w" is complex), on exit, column 1 will contain
+* the real part of X and column 2 will contain the imaginary
+* part.
+*
+* LDX (input) INTEGER
+* The leading dimension of X. It must be at least NA.
+*
+* SCALE (output) DOUBLE PRECISION
+* The scale factor that B must be multiplied by to insure
+* that overflow does not occur when computing X. Thus,
+* (ca A - w D) X will be SCALE*B, not B (ignoring
+* perturbations of A.) It will be at most 1.
+*
+* XNORM (output) DOUBLE PRECISION
+* The infinity-norm of X, when X is regarded as an NA x NW
+* real matrix.
+*
+* INFO (output) INTEGER
+* An error flag. It will be set to zero if no error occurs,
+* a negative number if an argument is in error, or a positive
+* number if ca A - w D had to be perturbed.
+* The possible values are:
+* = 0: No error occurred, and (ca A - w D) did not have to be
+* perturbed.
+* = 1: (ca A - w D) had to be perturbed to make its smallest
+* (or only) singular value greater than SMIN.
+* NOTE: In the interests of speed, this routine does not
+* check the inputs for errors.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER ICMAX, J
+ DOUBLE PRECISION BBND, BI1, BI2, BIGNUM, BNORM, BR1, BR2, CI21,
+ $ CI22, CMAX, CNORM, CR21, CR22, CSI, CSR, LI21,
+ $ LR21, SMINI, SMLNUM, TEMP, U22ABS, UI11, UI11R,
+ $ UI12, UI12S, UI22, UR11, UR11R, UR12, UR12S,
+ $ UR22, XI1, XI2, XR1, XR2
+* ..
+* .. Local Arrays ..
+ LOGICAL RSWAP( 4 ), ZSWAP( 4 )
+ INTEGER IPIVOT( 4, 4 )
+ DOUBLE PRECISION CI( 2, 2 ), CIV( 4 ), CR( 2, 2 ), CRV( 4 )
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLADIV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Equivalences ..
+ EQUIVALENCE ( CI( 1, 1 ), CIV( 1 ) ),
+ $ ( CR( 1, 1 ), CRV( 1 ) )
+* ..
+* .. Data statements ..
+ DATA ZSWAP / .FALSE., .FALSE., .TRUE., .TRUE. /
+ DATA RSWAP / .FALSE., .TRUE., .FALSE., .TRUE. /
+ DATA IPIVOT / 1, 2, 3, 4, 2, 1, 4, 3, 3, 4, 1, 2, 4,
+ $ 3, 2, 1 /
+* ..
+* .. Executable Statements ..
+*
+* Compute BIGNUM
+*
+ SMLNUM = TWO*DLAMCH( 'Safe minimum' )
+ BIGNUM = ONE / SMLNUM
+ SMINI = MAX( SMIN, SMLNUM )
+*
+* Don't check for input errors
+*
+ INFO = 0
+*
+* Standard Initializations
+*
+ SCALE = ONE
+*
+ IF( NA.EQ.1 ) THEN
+*
+* 1 x 1 (i.e., scalar) system C X = B
+*
+ IF( NW.EQ.1 ) THEN
+*
+* Real 1x1 system.
+*
+* C = ca A - w D
+*
+ CSR = CA*A( 1, 1 ) - WR*D1
+ CNORM = ABS( CSR )
+*
+* If | C | < SMINI, use C = SMINI
+*
+ IF( CNORM.LT.SMINI ) THEN
+ CSR = SMINI
+ CNORM = SMINI
+ INFO = 1
+ END IF
+*
+* Check scaling for X = B / C
+*
+ BNORM = ABS( B( 1, 1 ) )
+ IF( CNORM.LT.ONE .AND. BNORM.GT.ONE ) THEN
+ IF( BNORM.GT.BIGNUM*CNORM )
+ $ SCALE = ONE / BNORM
+ END IF
+*
+* Compute X
+*
+ X( 1, 1 ) = ( B( 1, 1 )*SCALE ) / CSR
+ XNORM = ABS( X( 1, 1 ) )
+ ELSE
+*
+* Complex 1x1 system (w is complex)
+*
+* C = ca A - w D
+*
+ CSR = CA*A( 1, 1 ) - WR*D1
+ CSI = -WI*D1
+ CNORM = ABS( CSR ) + ABS( CSI )
+*
+* If | C | < SMINI, use C = SMINI
+*
+ IF( CNORM.LT.SMINI ) THEN
+ CSR = SMINI
+ CSI = ZERO
+ CNORM = SMINI
+ INFO = 1
+ END IF
+*
+* Check scaling for X = B / C
+*
+ BNORM = ABS( B( 1, 1 ) ) + ABS( B( 1, 2 ) )
+ IF( CNORM.LT.ONE .AND. BNORM.GT.ONE ) THEN
+ IF( BNORM.GT.BIGNUM*CNORM )
+ $ SCALE = ONE / BNORM
+ END IF
+*
+* Compute X
+*
+ CALL DLADIV( SCALE*B( 1, 1 ), SCALE*B( 1, 2 ), CSR, CSI,
+ $ X( 1, 1 ), X( 1, 2 ) )
+ XNORM = ABS( X( 1, 1 ) ) + ABS( X( 1, 2 ) )
+ END IF
+*
+ ELSE
+*
+* 2x2 System
+*
+* Compute the real part of C = ca A - w D (or ca A' - w D )
+*
+ CR( 1, 1 ) = CA*A( 1, 1 ) - WR*D1
+ CR( 2, 2 ) = CA*A( 2, 2 ) - WR*D2
+ IF( LTRANS ) THEN
+ CR( 1, 2 ) = CA*A( 2, 1 )
+ CR( 2, 1 ) = CA*A( 1, 2 )
+ ELSE
+ CR( 2, 1 ) = CA*A( 2, 1 )
+ CR( 1, 2 ) = CA*A( 1, 2 )
+ END IF
+*
+ IF( NW.EQ.1 ) THEN
+*
+* Real 2x2 system (w is real)
+*
+* Find the largest element in C
+*
+ CMAX = ZERO
+ ICMAX = 0
+*
+ DO 10 J = 1, 4
+ IF( ABS( CRV( J ) ).GT.CMAX ) THEN
+ CMAX = ABS( CRV( J ) )
+ ICMAX = J
+ END IF
+ 10 CONTINUE
+*
+* If norm(C) < SMINI, use SMINI*identity.
+*
+ IF( CMAX.LT.SMINI ) THEN
+ BNORM = MAX( ABS( B( 1, 1 ) ), ABS( B( 2, 1 ) ) )
+ IF( SMINI.LT.ONE .AND. BNORM.GT.ONE ) THEN
+ IF( BNORM.GT.BIGNUM*SMINI )
+ $ SCALE = ONE / BNORM
+ END IF
+ TEMP = SCALE / SMINI
+ X( 1, 1 ) = TEMP*B( 1, 1 )
+ X( 2, 1 ) = TEMP*B( 2, 1 )
+ XNORM = TEMP*BNORM
+ INFO = 1
+ RETURN
+ END IF
+*
+* Gaussian elimination with complete pivoting.
+*
+ UR11 = CRV( ICMAX )
+ CR21 = CRV( IPIVOT( 2, ICMAX ) )
+ UR12 = CRV( IPIVOT( 3, ICMAX ) )
+ CR22 = CRV( IPIVOT( 4, ICMAX ) )
+ UR11R = ONE / UR11
+ LR21 = UR11R*CR21
+ UR22 = CR22 - UR12*LR21
+*
+* If smaller pivot < SMINI, use SMINI
+*
+ IF( ABS( UR22 ).LT.SMINI ) THEN
+ UR22 = SMINI
+ INFO = 1
+ END IF
+ IF( RSWAP( ICMAX ) ) THEN
+ BR1 = B( 2, 1 )
+ BR2 = B( 1, 1 )
+ ELSE
+ BR1 = B( 1, 1 )
+ BR2 = B( 2, 1 )
+ END IF
+ BR2 = BR2 - LR21*BR1
+ BBND = MAX( ABS( BR1*( UR22*UR11R ) ), ABS( BR2 ) )
+ IF( BBND.GT.ONE .AND. ABS( UR22 ).LT.ONE ) THEN
+ IF( BBND.GE.BIGNUM*ABS( UR22 ) )
+ $ SCALE = ONE / BBND
+ END IF
+*
+ XR2 = ( BR2*SCALE ) / UR22
+ XR1 = ( SCALE*BR1 )*UR11R - XR2*( UR11R*UR12 )
+ IF( ZSWAP( ICMAX ) ) THEN
+ X( 1, 1 ) = XR2
+ X( 2, 1 ) = XR1
+ ELSE
+ X( 1, 1 ) = XR1
+ X( 2, 1 ) = XR2
+ END IF
+ XNORM = MAX( ABS( XR1 ), ABS( XR2 ) )
+*
+* Further scaling if norm(A) norm(X) > overflow
+*
+ IF( XNORM.GT.ONE .AND. CMAX.GT.ONE ) THEN
+ IF( XNORM.GT.BIGNUM / CMAX ) THEN
+ TEMP = CMAX / BIGNUM
+ X( 1, 1 ) = TEMP*X( 1, 1 )
+ X( 2, 1 ) = TEMP*X( 2, 1 )
+ XNORM = TEMP*XNORM
+ SCALE = TEMP*SCALE
+ END IF
+ END IF
+ ELSE
+*
+* Complex 2x2 system (w is complex)
+*
+* Find the largest element in C
+*
+ CI( 1, 1 ) = -WI*D1
+ CI( 2, 1 ) = ZERO
+ CI( 1, 2 ) = ZERO
+ CI( 2, 2 ) = -WI*D2
+ CMAX = ZERO
+ ICMAX = 0
+*
+ DO 20 J = 1, 4
+ IF( ABS( CRV( J ) )+ABS( CIV( J ) ).GT.CMAX ) THEN
+ CMAX = ABS( CRV( J ) ) + ABS( CIV( J ) )
+ ICMAX = J
+ END IF
+ 20 CONTINUE
+*
+* If norm(C) < SMINI, use SMINI*identity.
+*
+ IF( CMAX.LT.SMINI ) THEN
+ BNORM = MAX( ABS( B( 1, 1 ) )+ABS( B( 1, 2 ) ),
+ $ ABS( B( 2, 1 ) )+ABS( B( 2, 2 ) ) )
+ IF( SMINI.LT.ONE .AND. BNORM.GT.ONE ) THEN
+ IF( BNORM.GT.BIGNUM*SMINI )
+ $ SCALE = ONE / BNORM
+ END IF
+ TEMP = SCALE / SMINI
+ X( 1, 1 ) = TEMP*B( 1, 1 )
+ X( 2, 1 ) = TEMP*B( 2, 1 )
+ X( 1, 2 ) = TEMP*B( 1, 2 )
+ X( 2, 2 ) = TEMP*B( 2, 2 )
+ XNORM = TEMP*BNORM
+ INFO = 1
+ RETURN
+ END IF
+*
+* Gaussian elimination with complete pivoting.
+*
+ UR11 = CRV( ICMAX )
+ UI11 = CIV( ICMAX )
+ CR21 = CRV( IPIVOT( 2, ICMAX ) )
+ CI21 = CIV( IPIVOT( 2, ICMAX ) )
+ UR12 = CRV( IPIVOT( 3, ICMAX ) )
+ UI12 = CIV( IPIVOT( 3, ICMAX ) )
+ CR22 = CRV( IPIVOT( 4, ICMAX ) )
+ CI22 = CIV( IPIVOT( 4, ICMAX ) )
+ IF( ICMAX.EQ.1 .OR. ICMAX.EQ.4 ) THEN
+*
+* Code when off-diagonals of pivoted C are real
+*
+ IF( ABS( UR11 ).GT.ABS( UI11 ) ) THEN
+ TEMP = UI11 / UR11
+ UR11R = ONE / ( UR11*( ONE+TEMP**2 ) )
+ UI11R = -TEMP*UR11R
+ ELSE
+ TEMP = UR11 / UI11
+ UI11R = -ONE / ( UI11*( ONE+TEMP**2 ) )
+ UR11R = -TEMP*UI11R
+ END IF
+ LR21 = CR21*UR11R
+ LI21 = CR21*UI11R
+ UR12S = UR12*UR11R
+ UI12S = UR12*UI11R
+ UR22 = CR22 - UR12*LR21
+ UI22 = CI22 - UR12*LI21
+ ELSE
+*
+* Code when diagonals of pivoted C are real
+*
+ UR11R = ONE / UR11
+ UI11R = ZERO
+ LR21 = CR21*UR11R
+ LI21 = CI21*UR11R
+ UR12S = UR12*UR11R
+ UI12S = UI12*UR11R
+ UR22 = CR22 - UR12*LR21 + UI12*LI21
+ UI22 = -UR12*LI21 - UI12*LR21
+ END IF
+ U22ABS = ABS( UR22 ) + ABS( UI22 )
+*
+* If smaller pivot < SMINI, use SMINI
+*
+ IF( U22ABS.LT.SMINI ) THEN
+ UR22 = SMINI
+ UI22 = ZERO
+ INFO = 1
+ END IF
+ IF( RSWAP( ICMAX ) ) THEN
+ BR2 = B( 1, 1 )
+ BR1 = B( 2, 1 )
+ BI2 = B( 1, 2 )
+ BI1 = B( 2, 2 )
+ ELSE
+ BR1 = B( 1, 1 )
+ BR2 = B( 2, 1 )
+ BI1 = B( 1, 2 )
+ BI2 = B( 2, 2 )
+ END IF
+ BR2 = BR2 - LR21*BR1 + LI21*BI1
+ BI2 = BI2 - LI21*BR1 - LR21*BI1
+ BBND = MAX( ( ABS( BR1 )+ABS( BI1 ) )*
+ $ ( U22ABS*( ABS( UR11R )+ABS( UI11R ) ) ),
+ $ ABS( BR2 )+ABS( BI2 ) )
+ IF( BBND.GT.ONE .AND. U22ABS.LT.ONE ) THEN
+ IF( BBND.GE.BIGNUM*U22ABS ) THEN
+ SCALE = ONE / BBND
+ BR1 = SCALE*BR1
+ BI1 = SCALE*BI1
+ BR2 = SCALE*BR2
+ BI2 = SCALE*BI2
+ END IF
+ END IF
+*
+ CALL DLADIV( BR2, BI2, UR22, UI22, XR2, XI2 )
+ XR1 = UR11R*BR1 - UI11R*BI1 - UR12S*XR2 + UI12S*XI2
+ XI1 = UI11R*BR1 + UR11R*BI1 - UI12S*XR2 - UR12S*XI2
+ IF( ZSWAP( ICMAX ) ) THEN
+ X( 1, 1 ) = XR2
+ X( 2, 1 ) = XR1
+ X( 1, 2 ) = XI2
+ X( 2, 2 ) = XI1
+ ELSE
+ X( 1, 1 ) = XR1
+ X( 2, 1 ) = XR2
+ X( 1, 2 ) = XI1
+ X( 2, 2 ) = XI2
+ END IF
+ XNORM = MAX( ABS( XR1 )+ABS( XI1 ), ABS( XR2 )+ABS( XI2 ) )
+*
+* Further scaling if norm(A) norm(X) > overflow
+*
+ IF( XNORM.GT.ONE .AND. CMAX.GT.ONE ) THEN
+ IF( XNORM.GT.BIGNUM / CMAX ) THEN
+ TEMP = CMAX / BIGNUM
+ X( 1, 1 ) = TEMP*X( 1, 1 )
+ X( 2, 1 ) = TEMP*X( 2, 1 )
+ X( 1, 2 ) = TEMP*X( 1, 2 )
+ X( 2, 2 ) = TEMP*X( 2, 2 )
+ XNORM = TEMP*XNORM
+ SCALE = TEMP*SCALE
+ END IF
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DLALN2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlamch.f b/2.3-1/src/fortran/lapack/dlamch.f
new file mode 100644
index 00000000..64ac3bec
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlamch.f
@@ -0,0 +1,857 @@
+ DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ CHARACTER CMACH
+* ..
+*
+* Purpose
+* =======
+*
+* DLAMCH determines double precision machine parameters.
+*
+* Arguments
+* =========
+*
+* CMACH (input) CHARACTER*1
+* Specifies the value to be returned by DLAMCH:
+* = 'E' or 'e', DLAMCH := eps
+* = 'S' or 's , DLAMCH := sfmin
+* = 'B' or 'b', DLAMCH := base
+* = 'P' or 'p', DLAMCH := eps*base
+* = 'N' or 'n', DLAMCH := t
+* = 'R' or 'r', DLAMCH := rnd
+* = 'M' or 'm', DLAMCH := emin
+* = 'U' or 'u', DLAMCH := rmin
+* = 'L' or 'l', DLAMCH := emax
+* = 'O' or 'o', DLAMCH := rmax
+*
+* where
+*
+* eps = relative machine precision
+* sfmin = safe minimum, such that 1/sfmin does not overflow
+* base = base of the machine
+* prec = eps*base
+* t = number of (base) digits in the mantissa
+* rnd = 1.0 when rounding occurs in addition, 0.0 otherwise
+* emin = minimum exponent before (gradual) underflow
+* rmin = underflow threshold - base**(emin-1)
+* emax = largest exponent before overflow
+* rmax = overflow threshold - (base**emax)*(1-eps)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL FIRST, LRND
+ INTEGER BETA, IMAX, IMIN, IT
+ DOUBLE PRECISION BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
+ $ RND, SFMIN, SMALL, T
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAMC2
+* ..
+* .. Save statement ..
+ SAVE FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
+ $ EMAX, RMAX, PREC
+* ..
+* .. Data statements ..
+ DATA FIRST / .TRUE. /
+* ..
+* .. Executable Statements ..
+*
+ IF( FIRST ) THEN
+ FIRST = .FALSE.
+ CALL DLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
+ BASE = BETA
+ T = IT
+ IF( LRND ) THEN
+ RND = ONE
+ EPS = ( BASE**( 1-IT ) ) / 2
+ ELSE
+ RND = ZERO
+ EPS = BASE**( 1-IT )
+ END IF
+ PREC = EPS*BASE
+ EMIN = IMIN
+ EMAX = IMAX
+ SFMIN = RMIN
+ SMALL = ONE / RMAX
+ IF( SMALL.GE.SFMIN ) THEN
+*
+* Use SMALL plus a bit, to avoid the possibility of rounding
+* causing overflow when computing 1/sfmin.
+*
+ SFMIN = SMALL*( ONE+EPS )
+ END IF
+ END IF
+*
+ IF( LSAME( CMACH, 'E' ) ) THEN
+ RMACH = EPS
+ ELSE IF( LSAME( CMACH, 'S' ) ) THEN
+ RMACH = SFMIN
+ ELSE IF( LSAME( CMACH, 'B' ) ) THEN
+ RMACH = BASE
+ ELSE IF( LSAME( CMACH, 'P' ) ) THEN
+ RMACH = PREC
+ ELSE IF( LSAME( CMACH, 'N' ) ) THEN
+ RMACH = T
+ ELSE IF( LSAME( CMACH, 'R' ) ) THEN
+ RMACH = RND
+ ELSE IF( LSAME( CMACH, 'M' ) ) THEN
+ RMACH = EMIN
+ ELSE IF( LSAME( CMACH, 'U' ) ) THEN
+ RMACH = RMIN
+ ELSE IF( LSAME( CMACH, 'L' ) ) THEN
+ RMACH = EMAX
+ ELSE IF( LSAME( CMACH, 'O' ) ) THEN
+ RMACH = RMAX
+ END IF
+*
+ DLAMCH = RMACH
+ RETURN
+*
+* End of DLAMCH
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE DLAMC1( BETA, T, RND, IEEE1 )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE1, RND
+ INTEGER BETA, T
+* ..
+*
+* Purpose
+* =======
+*
+* DLAMC1 determines the machine parameters given by BETA, T, RND, and
+* IEEE1.
+*
+* Arguments
+* =========
+*
+* BETA (output) INTEGER
+* The base of the machine.
+*
+* T (output) INTEGER
+* The number of ( BETA ) digits in the mantissa.
+*
+* RND (output) LOGICAL
+* Specifies whether proper rounding ( RND = .TRUE. ) or
+* chopping ( RND = .FALSE. ) occurs in addition. This may not
+* be a reliable guide to the way in which the machine performs
+* its arithmetic.
+*
+* IEEE1 (output) LOGICAL
+* Specifies whether rounding appears to be done in the IEEE
+* 'round to nearest' style.
+*
+* Further Details
+* ===============
+*
+* The routine is based on the routine ENVRON by Malcolm and
+* incorporates suggestions by Gentleman and Marovich. See
+*
+* Malcolm M. A. (1972) Algorithms to reveal properties of
+* floating-point arithmetic. Comms. of the ACM, 15, 949-951.
+*
+* Gentleman W. M. and Marovich S. B. (1974) More on algorithms
+* that reveal properties of floating point arithmetic units.
+* Comms. of the ACM, 17, 276-277.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL FIRST, LIEEE1, LRND
+ INTEGER LBETA, LT
+ DOUBLE PRECISION A, B, C, F, ONE, QTR, SAVEC, T1, T2
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMC3
+ EXTERNAL DLAMC3
+* ..
+* .. Save statement ..
+ SAVE FIRST, LIEEE1, LBETA, LRND, LT
+* ..
+* .. Data statements ..
+ DATA FIRST / .TRUE. /
+* ..
+* .. Executable Statements ..
+*
+ IF( FIRST ) THEN
+ FIRST = .FALSE.
+ ONE = 1
+*
+* LBETA, LIEEE1, LT and LRND are the local values of BETA,
+* IEEE1, T and RND.
+*
+* Throughout this routine we use the function DLAMC3 to ensure
+* that relevant values are stored and not held in registers, or
+* are not affected by optimizers.
+*
+* Compute a = 2.0**m with the smallest positive integer m such
+* that
+*
+* fl( a + 1.0 ) = a.
+*
+ A = 1
+ C = 1
+*
+*+ WHILE( C.EQ.ONE )LOOP
+ 10 CONTINUE
+ IF( C.EQ.ONE ) THEN
+ A = 2*A
+ C = DLAMC3( A, ONE )
+ C = DLAMC3( C, -A )
+ GO TO 10
+ END IF
+*+ END WHILE
+*
+* Now compute b = 2.0**m with the smallest positive integer m
+* such that
+*
+* fl( a + b ) .gt. a.
+*
+ B = 1
+ C = DLAMC3( A, B )
+*
+*+ WHILE( C.EQ.A )LOOP
+ 20 CONTINUE
+ IF( C.EQ.A ) THEN
+ B = 2*B
+ C = DLAMC3( A, B )
+ GO TO 20
+ END IF
+*+ END WHILE
+*
+* Now compute the base. a and c are neighbouring floating point
+* numbers in the interval ( beta**t, beta**( t + 1 ) ) and so
+* their difference is beta. Adding 0.25 to c is to ensure that it
+* is truncated to beta and not ( beta - 1 ).
+*
+ QTR = ONE / 4
+ SAVEC = C
+ C = DLAMC3( C, -A )
+ LBETA = C + QTR
+*
+* Now determine whether rounding or chopping occurs, by adding a
+* bit less than beta/2 and a bit more than beta/2 to a.
+*
+ B = LBETA
+ F = DLAMC3( B / 2, -B / 100 )
+ C = DLAMC3( F, A )
+ IF( C.EQ.A ) THEN
+ LRND = .TRUE.
+ ELSE
+ LRND = .FALSE.
+ END IF
+ F = DLAMC3( B / 2, B / 100 )
+ C = DLAMC3( F, A )
+ IF( ( LRND ) .AND. ( C.EQ.A ) )
+ $ LRND = .FALSE.
+*
+* Try and decide whether rounding is done in the IEEE 'round to
+* nearest' style. B/2 is half a unit in the last place of the two
+* numbers A and SAVEC. Furthermore, A is even, i.e. has last bit
+* zero, and SAVEC is odd. Thus adding B/2 to A should not change
+* A, but adding B/2 to SAVEC should change SAVEC.
+*
+ T1 = DLAMC3( B / 2, A )
+ T2 = DLAMC3( B / 2, SAVEC )
+ LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
+*
+* Now find the mantissa, t. It should be the integer part of
+* log to the base beta of a, however it is safer to determine t
+* by powering. So we find t as the smallest positive integer for
+* which
+*
+* fl( beta**t + 1.0 ) = 1.0.
+*
+ LT = 0
+ A = 1
+ C = 1
+*
+*+ WHILE( C.EQ.ONE )LOOP
+ 30 CONTINUE
+ IF( C.EQ.ONE ) THEN
+ LT = LT + 1
+ A = A*LBETA
+ C = DLAMC3( A, ONE )
+ C = DLAMC3( C, -A )
+ GO TO 30
+ END IF
+*+ END WHILE
+*
+ END IF
+*
+ BETA = LBETA
+ T = LT
+ RND = LRND
+ IEEE1 = LIEEE1
+ RETURN
+*
+* End of DLAMC1
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE DLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ LOGICAL RND
+ INTEGER BETA, EMAX, EMIN, T
+ DOUBLE PRECISION EPS, RMAX, RMIN
+* ..
+*
+* Purpose
+* =======
+*
+* DLAMC2 determines the machine parameters specified in its argument
+* list.
+*
+* Arguments
+* =========
+*
+* BETA (output) INTEGER
+* The base of the machine.
+*
+* T (output) INTEGER
+* The number of ( BETA ) digits in the mantissa.
+*
+* RND (output) LOGICAL
+* Specifies whether proper rounding ( RND = .TRUE. ) or
+* chopping ( RND = .FALSE. ) occurs in addition. This may not
+* be a reliable guide to the way in which the machine performs
+* its arithmetic.
+*
+* EPS (output) DOUBLE PRECISION
+* The smallest positive number such that
+*
+* fl( 1.0 - EPS ) .LT. 1.0,
+*
+* where fl denotes the computed value.
+*
+* EMIN (output) INTEGER
+* The minimum exponent before (gradual) underflow occurs.
+*
+* RMIN (output) DOUBLE PRECISION
+* The smallest normalized number for the machine, given by
+* BASE**( EMIN - 1 ), where BASE is the floating point value
+* of BETA.
+*
+* EMAX (output) INTEGER
+* The maximum exponent before overflow occurs.
+*
+* RMAX (output) DOUBLE PRECISION
+* The largest positive number for the machine, given by
+* BASE**EMAX * ( 1 - EPS ), where BASE is the floating point
+* value of BETA.
+*
+* Further Details
+* ===============
+*
+* The computation of EPS is based on a routine PARANOIA by
+* W. Kahan of the University of California at Berkeley.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL FIRST, IEEE, IWARN, LIEEE1, LRND
+ INTEGER GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
+ $ NGNMIN, NGPMIN
+ DOUBLE PRECISION A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
+ $ SIXTH, SMALL, THIRD, TWO, ZERO
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMC3
+ EXTERNAL DLAMC3
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAMC1, DLAMC4, DLAMC5
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Save statement ..
+ SAVE FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
+ $ LRMIN, LT
+* ..
+* .. Data statements ..
+ DATA FIRST / .TRUE. / , IWARN / .FALSE. /
+* ..
+* .. Executable Statements ..
+*
+ IF( FIRST ) THEN
+ FIRST = .FALSE.
+ ZERO = 0
+ ONE = 1
+ TWO = 2
+*
+* LBETA, LT, LRND, LEPS, LEMIN and LRMIN are the local values of
+* BETA, T, RND, EPS, EMIN and RMIN.
+*
+* Throughout this routine we use the function DLAMC3 to ensure
+* that relevant values are stored and not held in registers, or
+* are not affected by optimizers.
+*
+* DLAMC1 returns the parameters LBETA, LT, LRND and LIEEE1.
+*
+ CALL DLAMC1( LBETA, LT, LRND, LIEEE1 )
+*
+* Start to find EPS.
+*
+ B = LBETA
+ A = B**( -LT )
+ LEPS = A
+*
+* Try some tricks to see whether or not this is the correct EPS.
+*
+ B = TWO / 3
+ HALF = ONE / 2
+ SIXTH = DLAMC3( B, -HALF )
+ THIRD = DLAMC3( SIXTH, SIXTH )
+ B = DLAMC3( THIRD, -HALF )
+ B = DLAMC3( B, SIXTH )
+ B = ABS( B )
+ IF( B.LT.LEPS )
+ $ B = LEPS
+*
+ LEPS = 1
+*
+*+ WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
+ 10 CONTINUE
+ IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
+ LEPS = B
+ C = DLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
+ C = DLAMC3( HALF, -C )
+ B = DLAMC3( HALF, C )
+ C = DLAMC3( HALF, -B )
+ B = DLAMC3( HALF, C )
+ GO TO 10
+ END IF
+*+ END WHILE
+*
+ IF( A.LT.LEPS )
+ $ LEPS = A
+*
+* Computation of EPS complete.
+*
+* Now find EMIN. Let A = + or - 1, and + or - (1 + BASE**(-3)).
+* Keep dividing A by BETA until (gradual) underflow occurs. This
+* is detected when we cannot recover the previous A.
+*
+ RBASE = ONE / LBETA
+ SMALL = ONE
+ DO 20 I = 1, 3
+ SMALL = DLAMC3( SMALL*RBASE, ZERO )
+ 20 CONTINUE
+ A = DLAMC3( ONE, SMALL )
+ CALL DLAMC4( NGPMIN, ONE, LBETA )
+ CALL DLAMC4( NGNMIN, -ONE, LBETA )
+ CALL DLAMC4( GPMIN, A, LBETA )
+ CALL DLAMC4( GNMIN, -A, LBETA )
+ IEEE = .FALSE.
+*
+ IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
+ IF( NGPMIN.EQ.GPMIN ) THEN
+ LEMIN = NGPMIN
+* ( Non twos-complement machines, no gradual underflow;
+* e.g., VAX )
+ ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
+ LEMIN = NGPMIN - 1 + LT
+ IEEE = .TRUE.
+* ( Non twos-complement machines, with gradual underflow;
+* e.g., IEEE standard followers )
+ ELSE
+ LEMIN = MIN( NGPMIN, GPMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+*
+ ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
+ IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
+ LEMIN = MAX( NGPMIN, NGNMIN )
+* ( Twos-complement machines, no gradual underflow;
+* e.g., CYBER 205 )
+ ELSE
+ LEMIN = MIN( NGPMIN, NGNMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+*
+ ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
+ $ ( GPMIN.EQ.GNMIN ) ) THEN
+ IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
+ LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
+* ( Twos-complement machines with gradual underflow;
+* no known machine )
+ ELSE
+ LEMIN = MIN( NGPMIN, NGNMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+*
+ ELSE
+ LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+***
+* Comment out this if block if EMIN is ok
+ IF( IWARN ) THEN
+ FIRST = .TRUE.
+ WRITE( 6, FMT = 9999 )LEMIN
+ END IF
+***
+*
+* Assume IEEE arithmetic if we found denormalised numbers above,
+* or if arithmetic seems to round in the IEEE style, determined
+* in routine DLAMC1. A true IEEE machine should have both things
+* true; however, faulty machines may have one or the other.
+*
+ IEEE = IEEE .OR. LIEEE1
+*
+* Compute RMIN by successive division by BETA. We could compute
+* RMIN as BASE**( EMIN - 1 ), but some machines underflow during
+* this computation.
+*
+ LRMIN = 1
+ DO 30 I = 1, 1 - LEMIN
+ LRMIN = DLAMC3( LRMIN*RBASE, ZERO )
+ 30 CONTINUE
+*
+* Finally, call DLAMC5 to compute EMAX and RMAX.
+*
+ CALL DLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
+ END IF
+*
+ BETA = LBETA
+ T = LT
+ RND = LRND
+ EPS = LEPS
+ EMIN = LEMIN
+ RMIN = LRMIN
+ EMAX = LEMAX
+ RMAX = LRMAX
+*
+ RETURN
+*
+ 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
+ $ ' EMIN = ', I8, /
+ $ ' If, after inspection, the value EMIN looks',
+ $ ' acceptable please comment out ',
+ $ / ' the IF block as marked within the code of routine',
+ $ ' DLAMC2,', / ' otherwise supply EMIN explicitly.', / )
+*
+* End of DLAMC2
+*
+ END
+*
+************************************************************************
+*
+ DOUBLE PRECISION FUNCTION DLAMC3( A, B )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION A, B
+* ..
+*
+* Purpose
+* =======
+*
+* DLAMC3 is intended to force A and B to be stored prior to doing
+* the addition of A and B , for use in situations where optimizers
+* might hold one of these in a register.
+*
+* Arguments
+* =========
+*
+* A, B (input) DOUBLE PRECISION
+* The values A and B.
+*
+* =====================================================================
+*
+* .. Executable Statements ..
+*
+ DLAMC3 = A + B
+*
+ RETURN
+*
+* End of DLAMC3
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE DLAMC4( EMIN, START, BASE )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ INTEGER BASE, EMIN
+ DOUBLE PRECISION START
+* ..
+*
+* Purpose
+* =======
+*
+* DLAMC4 is a service routine for DLAMC2.
+*
+* Arguments
+* =========
+*
+* EMIN (output) EMIN
+* The minimum exponent before (gradual) underflow, computed by
+* setting A = START and dividing by BASE until the previous A
+* can not be recovered.
+*
+* START (input) DOUBLE PRECISION
+* The starting point for determining EMIN.
+*
+* BASE (input) INTEGER
+* The base of the machine.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I
+ DOUBLE PRECISION A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMC3
+ EXTERNAL DLAMC3
+* ..
+* .. Executable Statements ..
+*
+ A = START
+ ONE = 1
+ RBASE = ONE / BASE
+ ZERO = 0
+ EMIN = 1
+ B1 = DLAMC3( A*RBASE, ZERO )
+ C1 = A
+ C2 = A
+ D1 = A
+ D2 = A
+*+ WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
+* $ ( D1.EQ.A ).AND.( D2.EQ.A ) )LOOP
+ 10 CONTINUE
+ IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
+ $ ( D2.EQ.A ) ) THEN
+ EMIN = EMIN - 1
+ A = B1
+ B1 = DLAMC3( A / BASE, ZERO )
+ C1 = DLAMC3( B1*BASE, ZERO )
+ D1 = ZERO
+ DO 20 I = 1, BASE
+ D1 = D1 + B1
+ 20 CONTINUE
+ B2 = DLAMC3( A*RBASE, ZERO )
+ C2 = DLAMC3( B2 / RBASE, ZERO )
+ D2 = ZERO
+ DO 30 I = 1, BASE
+ D2 = D2 + B2
+ 30 CONTINUE
+ GO TO 10
+ END IF
+*+ END WHILE
+*
+ RETURN
+*
+* End of DLAMC4
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE DLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE
+ INTEGER BETA, EMAX, EMIN, P
+ DOUBLE PRECISION RMAX
+* ..
+*
+* Purpose
+* =======
+*
+* DLAMC5 attempts to compute RMAX, the largest machine floating-point
+* number, without overflow. It assumes that EMAX + abs(EMIN) sum
+* approximately to a power of 2. It will fail on machines where this
+* assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
+* EMAX = 28718). It will also fail if the value supplied for EMIN is
+* too large (i.e. too close to zero), probably with overflow.
+*
+* Arguments
+* =========
+*
+* BETA (input) INTEGER
+* The base of floating-point arithmetic.
+*
+* P (input) INTEGER
+* The number of base BETA digits in the mantissa of a
+* floating-point value.
+*
+* EMIN (input) INTEGER
+* The minimum exponent before (gradual) underflow.
+*
+* IEEE (input) LOGICAL
+* A logical flag specifying whether or not the arithmetic
+* system is thought to comply with the IEEE standard.
+*
+* EMAX (output) INTEGER
+* The largest exponent before overflow
+*
+* RMAX (output) DOUBLE PRECISION
+* The largest machine floating-point number.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
+ DOUBLE PRECISION OLDY, RECBAS, Y, Z
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMC3
+ EXTERNAL DLAMC3
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MOD
+* ..
+* .. Executable Statements ..
+*
+* First compute LEXP and UEXP, two powers of 2 that bound
+* abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
+* approximately to the bound that is closest to abs(EMIN).
+* (EMAX is the exponent of the required number RMAX).
+*
+ LEXP = 1
+ EXBITS = 1
+ 10 CONTINUE
+ TRY = LEXP*2
+ IF( TRY.LE.( -EMIN ) ) THEN
+ LEXP = TRY
+ EXBITS = EXBITS + 1
+ GO TO 10
+ END IF
+ IF( LEXP.EQ.-EMIN ) THEN
+ UEXP = LEXP
+ ELSE
+ UEXP = TRY
+ EXBITS = EXBITS + 1
+ END IF
+*
+* Now -LEXP is less than or equal to EMIN, and -UEXP is greater
+* than or equal to EMIN. EXBITS is the number of bits needed to
+* store the exponent.
+*
+ IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
+ EXPSUM = 2*LEXP
+ ELSE
+ EXPSUM = 2*UEXP
+ END IF
+*
+* EXPSUM is the exponent range, approximately equal to
+* EMAX - EMIN + 1 .
+*
+ EMAX = EXPSUM + EMIN - 1
+ NBITS = 1 + EXBITS + P
+*
+* NBITS is the total number of bits needed to store a
+* floating-point number.
+*
+ IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
+*
+* Either there are an odd number of bits used to store a
+* floating-point number, which is unlikely, or some bits are
+* not used in the representation of numbers, which is possible,
+* (e.g. Cray machines) or the mantissa has an implicit bit,
+* (e.g. IEEE machines, Dec Vax machines), which is perhaps the
+* most likely. We have to assume the last alternative.
+* If this is true, then we need to reduce EMAX by one because
+* there must be some way of representing zero in an implicit-bit
+* system. On machines like Cray, we are reducing EMAX by one
+* unnecessarily.
+*
+ EMAX = EMAX - 1
+ END IF
+*
+ IF( IEEE ) THEN
+*
+* Assume we are on an IEEE machine which reserves one exponent
+* for infinity and NaN.
+*
+ EMAX = EMAX - 1
+ END IF
+*
+* Now create RMAX, the largest machine number, which should
+* be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
+*
+* First compute 1.0 - BETA**(-P), being careful that the
+* result is less than 1.0 .
+*
+ RECBAS = ONE / BETA
+ Z = BETA - ONE
+ Y = ZERO
+ DO 20 I = 1, P
+ Z = Z*RECBAS
+ IF( Y.LT.ONE )
+ $ OLDY = Y
+ Y = DLAMC3( Y, Z )
+ 20 CONTINUE
+ IF( Y.GE.ONE )
+ $ Y = OLDY
+*
+* Now multiply by BETA**EMAX to get RMAX.
+*
+ DO 30 I = 1, EMAX
+ Y = DLAMC3( Y*BETA, ZERO )
+ 30 CONTINUE
+*
+ RMAX = Y
+ RETURN
+*
+* End of DLAMC5
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlange.f b/2.3-1/src/fortran/lapack/dlange.f
new file mode 100644
index 00000000..fec96ac7
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlange.f
@@ -0,0 +1,144 @@
+ DOUBLE PRECISION FUNCTION DLANGE( NORM, M, N, A, LDA, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLANGE returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* real matrix A.
+*
+* Description
+* ===========
+*
+* DLANGE returns the value
+*
+* DLANGE = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in DLANGE as described
+* above.
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0. When M = 0,
+* DLANGE is set to zero.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0. When N = 0,
+* DLANGE is set to zero.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The m by n matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(M,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= M when NORM = 'I'; otherwise, WORK is not
+* referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION SCALE, SUM, VALUE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASSQ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( MIN( M, N ).EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ DO 20 J = 1, N
+ DO 10 I = 1, M
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
+*
+* Find norm1(A).
+*
+ VALUE = ZERO
+ DO 40 J = 1, N
+ SUM = ZERO
+ DO 30 I = 1, M
+ SUM = SUM + ABS( A( I, J ) )
+ 30 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 40 CONTINUE
+ ELSE IF( LSAME( NORM, 'I' ) ) THEN
+*
+* Find normI(A).
+*
+ DO 50 I = 1, M
+ WORK( I ) = ZERO
+ 50 CONTINUE
+ DO 70 J = 1, N
+ DO 60 I = 1, M
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 60 CONTINUE
+ 70 CONTINUE
+ VALUE = ZERO
+ DO 80 I = 1, M
+ VALUE = MAX( VALUE, WORK( I ) )
+ 80 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ DO 90 J = 1, N
+ CALL DLASSQ( M, A( 1, J ), 1, SCALE, SUM )
+ 90 CONTINUE
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ DLANGE = VALUE
+ RETURN
+*
+* End of DLANGE
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlanhs.f b/2.3-1/src/fortran/lapack/dlanhs.f
new file mode 100644
index 00000000..76b87eeb
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlanhs.f
@@ -0,0 +1,141 @@
+ DOUBLE PRECISION FUNCTION DLANHS( NORM, N, A, LDA, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLANHS returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* Hessenberg matrix A.
+*
+* Description
+* ===========
+*
+* DLANHS returns the value
+*
+* DLANHS = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in DLANHS as described
+* above.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0. When N = 0, DLANHS is
+* set to zero.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The n by n upper Hessenberg matrix A; the part of A below the
+* first sub-diagonal is not referenced.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(N,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= N when NORM = 'I'; otherwise, WORK is not
+* referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION SCALE, SUM, VALUE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASSQ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( N.EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ DO 20 J = 1, N
+ DO 10 I = 1, MIN( N, J+1 )
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
+*
+* Find norm1(A).
+*
+ VALUE = ZERO
+ DO 40 J = 1, N
+ SUM = ZERO
+ DO 30 I = 1, MIN( N, J+1 )
+ SUM = SUM + ABS( A( I, J ) )
+ 30 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 40 CONTINUE
+ ELSE IF( LSAME( NORM, 'I' ) ) THEN
+*
+* Find normI(A).
+*
+ DO 50 I = 1, N
+ WORK( I ) = ZERO
+ 50 CONTINUE
+ DO 70 J = 1, N
+ DO 60 I = 1, MIN( N, J+1 )
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 60 CONTINUE
+ 70 CONTINUE
+ VALUE = ZERO
+ DO 80 I = 1, N
+ VALUE = MAX( VALUE, WORK( I ) )
+ 80 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ DO 90 J = 1, N
+ CALL DLASSQ( MIN( N, J+1 ), A( 1, J ), 1, SCALE, SUM )
+ 90 CONTINUE
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ DLANHS = VALUE
+ RETURN
+*
+* End of DLANHS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlansp.f b/2.3-1/src/fortran/lapack/dlansp.f
new file mode 100644
index 00000000..ab221006
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlansp.f
@@ -0,0 +1,196 @@
+ DOUBLE PRECISION FUNCTION DLANSP( NORM, UPLO, N, AP, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM, UPLO
+ INTEGER N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLANSP returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* real symmetric matrix A, supplied in packed form.
+*
+* Description
+* ===========
+*
+* DLANSP returns the value
+*
+* DLANSP = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in DLANSP as described
+* above.
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is supplied.
+* = 'U': Upper triangular part of A is supplied
+* = 'L': Lower triangular part of A is supplied
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0. When N = 0, DLANSP is
+* set to zero.
+*
+* AP (input) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* The upper or lower triangle of the symmetric matrix A, packed
+* columnwise in a linear array. The j-th column of A is stored
+* in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise,
+* WORK is not referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J, K
+ DOUBLE PRECISION ABSA, SCALE, SUM, VALUE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASSQ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( N.EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ K = 1
+ DO 20 J = 1, N
+ DO 10 I = K, K + J - 1
+ VALUE = MAX( VALUE, ABS( AP( I ) ) )
+ 10 CONTINUE
+ K = K + J
+ 20 CONTINUE
+ ELSE
+ K = 1
+ DO 40 J = 1, N
+ DO 30 I = K, K + N - J
+ VALUE = MAX( VALUE, ABS( AP( I ) ) )
+ 30 CONTINUE
+ K = K + N - J + 1
+ 40 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR.
+ $ ( NORM.EQ.'1' ) ) THEN
+*
+* Find normI(A) ( = norm1(A), since A is symmetric).
+*
+ VALUE = ZERO
+ K = 1
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 60 J = 1, N
+ SUM = ZERO
+ DO 50 I = 1, J - 1
+ ABSA = ABS( AP( K ) )
+ SUM = SUM + ABSA
+ WORK( I ) = WORK( I ) + ABSA
+ K = K + 1
+ 50 CONTINUE
+ WORK( J ) = SUM + ABS( AP( K ) )
+ K = K + 1
+ 60 CONTINUE
+ DO 70 I = 1, N
+ VALUE = MAX( VALUE, WORK( I ) )
+ 70 CONTINUE
+ ELSE
+ DO 80 I = 1, N
+ WORK( I ) = ZERO
+ 80 CONTINUE
+ DO 100 J = 1, N
+ SUM = WORK( J ) + ABS( AP( K ) )
+ K = K + 1
+ DO 90 I = J + 1, N
+ ABSA = ABS( AP( K ) )
+ SUM = SUM + ABSA
+ WORK( I ) = WORK( I ) + ABSA
+ K = K + 1
+ 90 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 100 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ K = 2
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 110 J = 2, N
+ CALL DLASSQ( J-1, AP( K ), 1, SCALE, SUM )
+ K = K + J
+ 110 CONTINUE
+ ELSE
+ DO 120 J = 1, N - 1
+ CALL DLASSQ( N-J, AP( K ), 1, SCALE, SUM )
+ K = K + N - J + 1
+ 120 CONTINUE
+ END IF
+ SUM = 2*SUM
+ K = 1
+ DO 130 I = 1, N
+ IF( AP( K ).NE.ZERO ) THEN
+ ABSA = ABS( AP( K ) )
+ IF( SCALE.LT.ABSA ) THEN
+ SUM = ONE + SUM*( SCALE / ABSA )**2
+ SCALE = ABSA
+ ELSE
+ SUM = SUM + ( ABSA / SCALE )**2
+ END IF
+ END IF
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ K = K + I + 1
+ ELSE
+ K = K + N - I + 1
+ END IF
+ 130 CONTINUE
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ DLANSP = VALUE
+ RETURN
+*
+* End of DLANSP
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlanst.f b/2.3-1/src/fortran/lapack/dlanst.f
new file mode 100644
index 00000000..2b12091a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlanst.f
@@ -0,0 +1,124 @@
+ DOUBLE PRECISION FUNCTION DLANST( NORM, N, D, E )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLANST returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* real symmetric tridiagonal matrix A.
+*
+* Description
+* ===========
+*
+* DLANST returns the value
+*
+* DLANST = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in DLANST as described
+* above.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0. When N = 0, DLANST is
+* set to zero.
+*
+* D (input) DOUBLE PRECISION array, dimension (N)
+* The diagonal elements of A.
+*
+* E (input) DOUBLE PRECISION array, dimension (N-1)
+* The (n-1) sub-diagonal or super-diagonal elements of A.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ DOUBLE PRECISION ANORM, SCALE, SUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASSQ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( N.LE.0 ) THEN
+ ANORM = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ ANORM = ABS( D( N ) )
+ DO 10 I = 1, N - 1
+ ANORM = MAX( ANORM, ABS( D( I ) ) )
+ ANORM = MAX( ANORM, ABS( E( I ) ) )
+ 10 CONTINUE
+ ELSE IF( LSAME( NORM, 'O' ) .OR. NORM.EQ.'1' .OR.
+ $ LSAME( NORM, 'I' ) ) THEN
+*
+* Find norm1(A).
+*
+ IF( N.EQ.1 ) THEN
+ ANORM = ABS( D( 1 ) )
+ ELSE
+ ANORM = MAX( ABS( D( 1 ) )+ABS( E( 1 ) ),
+ $ ABS( E( N-1 ) )+ABS( D( N ) ) )
+ DO 20 I = 2, N - 1
+ ANORM = MAX( ANORM, ABS( D( I ) )+ABS( E( I ) )+
+ $ ABS( E( I-1 ) ) )
+ 20 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ IF( N.GT.1 ) THEN
+ CALL DLASSQ( N-1, E, 1, SCALE, SUM )
+ SUM = 2*SUM
+ END IF
+ CALL DLASSQ( N, D, 1, SCALE, SUM )
+ ANORM = SCALE*SQRT( SUM )
+ END IF
+*
+ DLANST = ANORM
+ RETURN
+*
+* End of DLANST
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlansy.f b/2.3-1/src/fortran/lapack/dlansy.f
new file mode 100644
index 00000000..b6c727c0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlansy.f
@@ -0,0 +1,173 @@
+ DOUBLE PRECISION FUNCTION DLANSY( NORM, UPLO, N, A, LDA, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM, UPLO
+ INTEGER LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLANSY returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* real symmetric matrix A.
+*
+* Description
+* ===========
+*
+* DLANSY returns the value
+*
+* DLANSY = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in DLANSY as described
+* above.
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is to be referenced.
+* = 'U': Upper triangular part of A is referenced
+* = 'L': Lower triangular part of A is referenced
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0. When N = 0, DLANSY is
+* set to zero.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The symmetric matrix A. If UPLO = 'U', the leading n by n
+* upper triangular part of A contains the upper triangular part
+* of the matrix A, and the strictly lower triangular part of A
+* is not referenced. If UPLO = 'L', the leading n by n lower
+* triangular part of A contains the lower triangular part of
+* the matrix A, and the strictly upper triangular part of A is
+* not referenced.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(N,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise,
+* WORK is not referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION ABSA, SCALE, SUM, VALUE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASSQ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( N.EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, J
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40 J = 1, N
+ DO 30 I = J, N
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR.
+ $ ( NORM.EQ.'1' ) ) THEN
+*
+* Find normI(A) ( = norm1(A), since A is symmetric).
+*
+ VALUE = ZERO
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 60 J = 1, N
+ SUM = ZERO
+ DO 50 I = 1, J - 1
+ ABSA = ABS( A( I, J ) )
+ SUM = SUM + ABSA
+ WORK( I ) = WORK( I ) + ABSA
+ 50 CONTINUE
+ WORK( J ) = SUM + ABS( A( J, J ) )
+ 60 CONTINUE
+ DO 70 I = 1, N
+ VALUE = MAX( VALUE, WORK( I ) )
+ 70 CONTINUE
+ ELSE
+ DO 80 I = 1, N
+ WORK( I ) = ZERO
+ 80 CONTINUE
+ DO 100 J = 1, N
+ SUM = WORK( J ) + ABS( A( J, J ) )
+ DO 90 I = J + 1, N
+ ABSA = ABS( A( I, J ) )
+ SUM = SUM + ABSA
+ WORK( I ) = WORK( I ) + ABSA
+ 90 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 100 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 110 J = 2, N
+ CALL DLASSQ( J-1, A( 1, J ), 1, SCALE, SUM )
+ 110 CONTINUE
+ ELSE
+ DO 120 J = 1, N - 1
+ CALL DLASSQ( N-J, A( J+1, J ), 1, SCALE, SUM )
+ 120 CONTINUE
+ END IF
+ SUM = 2*SUM
+ CALL DLASSQ( N, A, LDA+1, SCALE, SUM )
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ DLANSY = VALUE
+ RETURN
+*
+* End of DLANSY
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlantr.f b/2.3-1/src/fortran/lapack/dlantr.f
new file mode 100644
index 00000000..92debd3d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlantr.f
@@ -0,0 +1,276 @@
+ DOUBLE PRECISION FUNCTION DLANTR( NORM, UPLO, DIAG, M, N, A, LDA,
+ $ WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, NORM, UPLO
+ INTEGER LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLANTR returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* trapezoidal or triangular matrix A.
+*
+* Description
+* ===========
+*
+* DLANTR returns the value
+*
+* DLANTR = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in DLANTR as described
+* above.
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the matrix A is upper or lower trapezoidal.
+* = 'U': Upper trapezoidal
+* = 'L': Lower trapezoidal
+* Note that A is triangular instead of trapezoidal if M = N.
+*
+* DIAG (input) CHARACTER*1
+* Specifies whether or not the matrix A has unit diagonal.
+* = 'N': Non-unit diagonal
+* = 'U': Unit diagonal
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0, and if
+* UPLO = 'U', M <= N. When M = 0, DLANTR is set to zero.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0, and if
+* UPLO = 'L', N <= M. When N = 0, DLANTR is set to zero.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The trapezoidal matrix A (A is triangular if M = N).
+* If UPLO = 'U', the leading m by n upper trapezoidal part of
+* the array A contains the upper trapezoidal matrix, and the
+* strictly lower triangular part of A is not referenced.
+* If UPLO = 'L', the leading m by n lower trapezoidal part of
+* the array A contains the lower trapezoidal matrix, and the
+* strictly upper triangular part of A is not referenced. Note
+* that when DIAG = 'U', the diagonal elements of A are not
+* referenced and are assumed to be one.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(M,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= M when NORM = 'I'; otherwise, WORK is not
+* referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UDIAG
+ INTEGER I, J
+ DOUBLE PRECISION SCALE, SUM, VALUE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASSQ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( MIN( M, N ).EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ IF( LSAME( DIAG, 'U' ) ) THEN
+ VALUE = ONE
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, MIN( M, J-1 )
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ DO 40 J = 1, N
+ DO 30 I = J + 1, M
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE
+ VALUE = ZERO
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 60 J = 1, N
+ DO 50 I = 1, MIN( M, J )
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 50 CONTINUE
+ 60 CONTINUE
+ ELSE
+ DO 80 J = 1, N
+ DO 70 I = J, M
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ END IF
+ ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
+*
+* Find norm1(A).
+*
+ VALUE = ZERO
+ UDIAG = LSAME( DIAG, 'U' )
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 110 J = 1, N
+ IF( ( UDIAG ) .AND. ( J.LE.M ) ) THEN
+ SUM = ONE
+ DO 90 I = 1, J - 1
+ SUM = SUM + ABS( A( I, J ) )
+ 90 CONTINUE
+ ELSE
+ SUM = ZERO
+ DO 100 I = 1, MIN( M, J )
+ SUM = SUM + ABS( A( I, J ) )
+ 100 CONTINUE
+ END IF
+ VALUE = MAX( VALUE, SUM )
+ 110 CONTINUE
+ ELSE
+ DO 140 J = 1, N
+ IF( UDIAG ) THEN
+ SUM = ONE
+ DO 120 I = J + 1, M
+ SUM = SUM + ABS( A( I, J ) )
+ 120 CONTINUE
+ ELSE
+ SUM = ZERO
+ DO 130 I = J, M
+ SUM = SUM + ABS( A( I, J ) )
+ 130 CONTINUE
+ END IF
+ VALUE = MAX( VALUE, SUM )
+ 140 CONTINUE
+ END IF
+ ELSE IF( LSAME( NORM, 'I' ) ) THEN
+*
+* Find normI(A).
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ IF( LSAME( DIAG, 'U' ) ) THEN
+ DO 150 I = 1, M
+ WORK( I ) = ONE
+ 150 CONTINUE
+ DO 170 J = 1, N
+ DO 160 I = 1, MIN( M, J-1 )
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 160 CONTINUE
+ 170 CONTINUE
+ ELSE
+ DO 180 I = 1, M
+ WORK( I ) = ZERO
+ 180 CONTINUE
+ DO 200 J = 1, N
+ DO 190 I = 1, MIN( M, J )
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 190 CONTINUE
+ 200 CONTINUE
+ END IF
+ ELSE
+ IF( LSAME( DIAG, 'U' ) ) THEN
+ DO 210 I = 1, N
+ WORK( I ) = ONE
+ 210 CONTINUE
+ DO 220 I = N + 1, M
+ WORK( I ) = ZERO
+ 220 CONTINUE
+ DO 240 J = 1, N
+ DO 230 I = J + 1, M
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 230 CONTINUE
+ 240 CONTINUE
+ ELSE
+ DO 250 I = 1, M
+ WORK( I ) = ZERO
+ 250 CONTINUE
+ DO 270 J = 1, N
+ DO 260 I = J, M
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 260 CONTINUE
+ 270 CONTINUE
+ END IF
+ END IF
+ VALUE = ZERO
+ DO 280 I = 1, M
+ VALUE = MAX( VALUE, WORK( I ) )
+ 280 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ IF( LSAME( DIAG, 'U' ) ) THEN
+ SCALE = ONE
+ SUM = MIN( M, N )
+ DO 290 J = 2, N
+ CALL DLASSQ( MIN( M, J-1 ), A( 1, J ), 1, SCALE, SUM )
+ 290 CONTINUE
+ ELSE
+ SCALE = ZERO
+ SUM = ONE
+ DO 300 J = 1, N
+ CALL DLASSQ( MIN( M, J ), A( 1, J ), 1, SCALE, SUM )
+ 300 CONTINUE
+ END IF
+ ELSE
+ IF( LSAME( DIAG, 'U' ) ) THEN
+ SCALE = ONE
+ SUM = MIN( M, N )
+ DO 310 J = 1, N
+ CALL DLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
+ $ SUM )
+ 310 CONTINUE
+ ELSE
+ SCALE = ZERO
+ SUM = ONE
+ DO 320 J = 1, N
+ CALL DLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
+ 320 CONTINUE
+ END IF
+ END IF
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ DLANTR = VALUE
+ RETURN
+*
+* End of DLANTR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlanv2.f b/2.3-1/src/fortran/lapack/dlanv2.f
new file mode 100644
index 00000000..cef3f472
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlanv2.f
@@ -0,0 +1,205 @@
+ SUBROUTINE DLANV2( A, B, C, D, RT1R, RT1I, RT2R, RT2I, CS, SN )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION A, B, C, CS, D, RT1I, RT1R, RT2I, RT2R, SN
+* ..
+*
+* Purpose
+* =======
+*
+* DLANV2 computes the Schur factorization of a real 2-by-2 nonsymmetric
+* matrix in standard form:
+*
+* [ A B ] = [ CS -SN ] [ AA BB ] [ CS SN ]
+* [ C D ] [ SN CS ] [ CC DD ] [-SN CS ]
+*
+* where either
+* 1) CC = 0 so that AA and DD are real eigenvalues of the matrix, or
+* 2) AA = DD and BB*CC < 0, so that AA + or - sqrt(BB*CC) are complex
+* conjugate eigenvalues.
+*
+* Arguments
+* =========
+*
+* A (input/output) DOUBLE PRECISION
+* B (input/output) DOUBLE PRECISION
+* C (input/output) DOUBLE PRECISION
+* D (input/output) DOUBLE PRECISION
+* On entry, the elements of the input matrix.
+* On exit, they are overwritten by the elements of the
+* standardised Schur form.
+*
+* RT1R (output) DOUBLE PRECISION
+* RT1I (output) DOUBLE PRECISION
+* RT2R (output) DOUBLE PRECISION
+* RT2I (output) DOUBLE PRECISION
+* The real and imaginary parts of the eigenvalues. If the
+* eigenvalues are a complex conjugate pair, RT1I > 0.
+*
+* CS (output) DOUBLE PRECISION
+* SN (output) DOUBLE PRECISION
+* Parameters of the rotation matrix.
+*
+* Further Details
+* ===============
+*
+* Modified by V. Sima, Research Institute for Informatics, Bucharest,
+* Romania, to reduce the risk of cancellation errors,
+* when computing real eigenvalues, and to ensure, if possible, that
+* abs(RT1R) >= abs(RT2R).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, HALF, ONE
+ PARAMETER ( ZERO = 0.0D+0, HALF = 0.5D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION MULTPL
+ PARAMETER ( MULTPL = 4.0D+0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AA, BB, BCMAX, BCMIS, CC, CS1, DD, EPS, P, SAB,
+ $ SAC, SCALE, SIGMA, SN1, TAU, TEMP, Z
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLAPY2
+ EXTERNAL DLAMCH, DLAPY2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ EPS = DLAMCH( 'P' )
+ IF( C.EQ.ZERO ) THEN
+ CS = ONE
+ SN = ZERO
+ GO TO 10
+*
+ ELSE IF( B.EQ.ZERO ) THEN
+*
+* Swap rows and columns
+*
+ CS = ZERO
+ SN = ONE
+ TEMP = D
+ D = A
+ A = TEMP
+ B = -C
+ C = ZERO
+ GO TO 10
+ ELSE IF( ( A-D ).EQ.ZERO .AND. SIGN( ONE, B ).NE.SIGN( ONE, C ) )
+ $ THEN
+ CS = ONE
+ SN = ZERO
+ GO TO 10
+ ELSE
+*
+ TEMP = A - D
+ P = HALF*TEMP
+ BCMAX = MAX( ABS( B ), ABS( C ) )
+ BCMIS = MIN( ABS( B ), ABS( C ) )*SIGN( ONE, B )*SIGN( ONE, C )
+ SCALE = MAX( ABS( P ), BCMAX )
+ Z = ( P / SCALE )*P + ( BCMAX / SCALE )*BCMIS
+*
+* If Z is of the order of the machine accuracy, postpone the
+* decision on the nature of eigenvalues
+*
+ IF( Z.GE.MULTPL*EPS ) THEN
+*
+* Real eigenvalues. Compute A and D.
+*
+ Z = P + SIGN( SQRT( SCALE )*SQRT( Z ), P )
+ A = D + Z
+ D = D - ( BCMAX / Z )*BCMIS
+*
+* Compute B and the rotation matrix
+*
+ TAU = DLAPY2( C, Z )
+ CS = Z / TAU
+ SN = C / TAU
+ B = B - C
+ C = ZERO
+ ELSE
+*
+* Complex eigenvalues, or real (almost) equal eigenvalues.
+* Make diagonal elements equal.
+*
+ SIGMA = B + C
+ TAU = DLAPY2( SIGMA, TEMP )
+ CS = SQRT( HALF*( ONE+ABS( SIGMA ) / TAU ) )
+ SN = -( P / ( TAU*CS ) )*SIGN( ONE, SIGMA )
+*
+* Compute [ AA BB ] = [ A B ] [ CS -SN ]
+* [ CC DD ] [ C D ] [ SN CS ]
+*
+ AA = A*CS + B*SN
+ BB = -A*SN + B*CS
+ CC = C*CS + D*SN
+ DD = -C*SN + D*CS
+*
+* Compute [ A B ] = [ CS SN ] [ AA BB ]
+* [ C D ] [-SN CS ] [ CC DD ]
+*
+ A = AA*CS + CC*SN
+ B = BB*CS + DD*SN
+ C = -AA*SN + CC*CS
+ D = -BB*SN + DD*CS
+*
+ TEMP = HALF*( A+D )
+ A = TEMP
+ D = TEMP
+*
+ IF( C.NE.ZERO ) THEN
+ IF( B.NE.ZERO ) THEN
+ IF( SIGN( ONE, B ).EQ.SIGN( ONE, C ) ) THEN
+*
+* Real eigenvalues: reduce to upper triangular form
+*
+ SAB = SQRT( ABS( B ) )
+ SAC = SQRT( ABS( C ) )
+ P = SIGN( SAB*SAC, C )
+ TAU = ONE / SQRT( ABS( B+C ) )
+ A = TEMP + P
+ D = TEMP - P
+ B = B - C
+ C = ZERO
+ CS1 = SAB*TAU
+ SN1 = SAC*TAU
+ TEMP = CS*CS1 - SN*SN1
+ SN = CS*SN1 + SN*CS1
+ CS = TEMP
+ END IF
+ ELSE
+ B = -C
+ C = ZERO
+ TEMP = CS
+ CS = -SN
+ SN = TEMP
+ END IF
+ END IF
+ END IF
+*
+ END IF
+*
+ 10 CONTINUE
+*
+* Store eigenvalues in (RT1R,RT1I) and (RT2R,RT2I).
+*
+ RT1R = A
+ RT2R = D
+ IF( C.EQ.ZERO ) THEN
+ RT1I = ZERO
+ RT2I = ZERO
+ ELSE
+ RT1I = SQRT( ABS( B ) )*SQRT( ABS( C ) )
+ RT2I = -RT1I
+ END IF
+ RETURN
+*
+* End of DLANV2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlapmt.f b/2.3-1/src/fortran/lapack/dlapmt.f
new file mode 100644
index 00000000..325774c0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlapmt.f
@@ -0,0 +1,136 @@
+ SUBROUTINE DLAPMT( FORWRD, M, N, X, LDX, K )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL FORWRD
+ INTEGER LDX, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER K( * )
+ DOUBLE PRECISION X( LDX, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAPMT rearranges the columns of the M by N matrix X as specified
+* by the permutation K(1),K(2),...,K(N) of the integers 1,...,N.
+* If FORWRD = .TRUE., forward permutation:
+*
+* X(*,K(J)) is moved X(*,J) for J = 1,2,...,N.
+*
+* If FORWRD = .FALSE., backward permutation:
+*
+* X(*,J) is moved to X(*,K(J)) for J = 1,2,...,N.
+*
+* Arguments
+* =========
+*
+* FORWRD (input) LOGICAL
+* = .TRUE., forward permutation
+* = .FALSE., backward permutation
+*
+* M (input) INTEGER
+* The number of rows of the matrix X. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix X. N >= 0.
+*
+* X (input/output) DOUBLE PRECISION array, dimension (LDX,N)
+* On entry, the M by N matrix X.
+* On exit, X contains the permuted matrix X.
+*
+* LDX (input) INTEGER
+* The leading dimension of the array X, LDX >= MAX(1,M).
+*
+* K (input/output) INTEGER array, dimension (N)
+* On entry, K contains the permutation vector. K is used as
+* internal workspace, but reset to its original value on
+* output.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, II, IN, J
+ DOUBLE PRECISION TEMP
+* ..
+* .. Executable Statements ..
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ DO 10 I = 1, N
+ K( I ) = -K( I )
+ 10 CONTINUE
+*
+ IF( FORWRD ) THEN
+*
+* Forward permutation
+*
+ DO 50 I = 1, N
+*
+ IF( K( I ).GT.0 )
+ $ GO TO 40
+*
+ J = I
+ K( J ) = -K( J )
+ IN = K( J )
+*
+ 20 CONTINUE
+ IF( K( IN ).GT.0 )
+ $ GO TO 40
+*
+ DO 30 II = 1, M
+ TEMP = X( II, J )
+ X( II, J ) = X( II, IN )
+ X( II, IN ) = TEMP
+ 30 CONTINUE
+*
+ K( IN ) = -K( IN )
+ J = IN
+ IN = K( IN )
+ GO TO 20
+*
+ 40 CONTINUE
+*
+ 50 CONTINUE
+*
+ ELSE
+*
+* Backward permutation
+*
+ DO 90 I = 1, N
+*
+ IF( K( I ).GT.0 )
+ $ GO TO 80
+*
+ K( I ) = -K( I )
+ J = K( I )
+ 60 CONTINUE
+ IF( J.EQ.I )
+ $ GO TO 80
+*
+ DO 70 II = 1, M
+ TEMP = X( II, I )
+ X( II, I ) = X( II, J )
+ X( II, J ) = TEMP
+ 70 CONTINUE
+*
+ K( J ) = -K( J )
+ J = K( J )
+ GO TO 60
+*
+ 80 CONTINUE
+*
+ 90 CONTINUE
+*
+ END IF
+*
+ RETURN
+*
+* End of DLAPMT
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlapy2.f b/2.3-1/src/fortran/lapack/dlapy2.f
new file mode 100644
index 00000000..98ef81b6
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlapy2.f
@@ -0,0 +1,53 @@
+ DOUBLE PRECISION FUNCTION DLAPY2( X, Y )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION X, Y
+* ..
+*
+* Purpose
+* =======
+*
+* DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary
+* overflow.
+*
+* Arguments
+* =========
+*
+* X (input) DOUBLE PRECISION
+* Y (input) DOUBLE PRECISION
+* X and Y specify the values x and y.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION W, XABS, YABS, Z
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ XABS = ABS( X )
+ YABS = ABS( Y )
+ W = MAX( XABS, YABS )
+ Z = MIN( XABS, YABS )
+ IF( Z.EQ.ZERO ) THEN
+ DLAPY2 = W
+ ELSE
+ DLAPY2 = W*SQRT( ONE+( Z / W )**2 )
+ END IF
+ RETURN
+*
+* End of DLAPY2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlapy3.f b/2.3-1/src/fortran/lapack/dlapy3.f
new file mode 100644
index 00000000..2b47bb47
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlapy3.f
@@ -0,0 +1,56 @@
+ DOUBLE PRECISION FUNCTION DLAPY3( X, Y, Z )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION X, Y, Z
+* ..
+*
+* Purpose
+* =======
+*
+* DLAPY3 returns sqrt(x**2+y**2+z**2), taking care not to cause
+* unnecessary overflow.
+*
+* Arguments
+* =========
+*
+* X (input) DOUBLE PRECISION
+* Y (input) DOUBLE PRECISION
+* Z (input) DOUBLE PRECISION
+* X, Y and Z specify the values x, y and z.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION W, XABS, YABS, ZABS
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ XABS = ABS( X )
+ YABS = ABS( Y )
+ ZABS = ABS( Z )
+ W = MAX( XABS, YABS, ZABS )
+ IF( W.EQ.ZERO ) THEN
+* W can be zero for max(0,nan,0)
+* adding all three entries together will make sure
+* NaN will not disappear.
+ DLAPY3 = XABS + YABS + ZABS
+ ELSE
+ DLAPY3 = W*SQRT( ( XABS / W )**2+( YABS / W )**2+
+ $ ( ZABS / W )**2 )
+ END IF
+ RETURN
+*
+* End of DLAPY3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqge.f b/2.3-1/src/fortran/lapack/dlaqge.f
new file mode 100644
index 00000000..9feb927c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqge.f
@@ -0,0 +1,154 @@
+ SUBROUTINE DLAQGE( M, N, A, LDA, R, C, ROWCND, COLCND, AMAX,
+ $ EQUED )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER EQUED
+ INTEGER LDA, M, N
+ DOUBLE PRECISION AMAX, COLCND, ROWCND
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( * ), R( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAQGE equilibrates a general M by N matrix A using the row and
+* column scaling factors in the vectors R and C.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M by N matrix A.
+* On exit, the equilibrated matrix. See EQUED for the form of
+* the equilibrated matrix.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(M,1).
+*
+* R (input) DOUBLE PRECISION array, dimension (M)
+* The row scale factors for A.
+*
+* C (input) DOUBLE PRECISION array, dimension (N)
+* The column scale factors for A.
+*
+* ROWCND (input) DOUBLE PRECISION
+* Ratio of the smallest R(i) to the largest R(i).
+*
+* COLCND (input) DOUBLE PRECISION
+* Ratio of the smallest C(i) to the largest C(i).
+*
+* AMAX (input) DOUBLE PRECISION
+* Absolute value of largest matrix entry.
+*
+* EQUED (output) CHARACTER*1
+* Specifies the form of equilibration that was done.
+* = 'N': No equilibration
+* = 'R': Row equilibration, i.e., A has been premultiplied by
+* diag(R).
+* = 'C': Column equilibration, i.e., A has been postmultiplied
+* by diag(C).
+* = 'B': Both row and column equilibration, i.e., A has been
+* replaced by diag(R) * A * diag(C).
+*
+* Internal Parameters
+* ===================
+*
+* THRESH is a threshold value used to decide if row or column scaling
+* should be done based on the ratio of the row or column scaling
+* factors. If ROWCND < THRESH, row scaling is done, and if
+* COLCND < THRESH, column scaling is done.
+*
+* LARGE and SMALL are threshold values used to decide if row scaling
+* should be done based on the absolute size of the largest matrix
+* element. If AMAX > LARGE or AMAX < SMALL, row scaling is done.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, THRESH
+ PARAMETER ( ONE = 1.0D+0, THRESH = 0.1D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION CJ, LARGE, SMALL
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 ) THEN
+ EQUED = 'N'
+ RETURN
+ END IF
+*
+* Initialize LARGE and SMALL.
+*
+ SMALL = DLAMCH( 'Safe minimum' ) / DLAMCH( 'Precision' )
+ LARGE = ONE / SMALL
+*
+ IF( ROWCND.GE.THRESH .AND. AMAX.GE.SMALL .AND. AMAX.LE.LARGE )
+ $ THEN
+*
+* No row scaling
+*
+ IF( COLCND.GE.THRESH ) THEN
+*
+* No column scaling
+*
+ EQUED = 'N'
+ ELSE
+*
+* Column scaling
+*
+ DO 20 J = 1, N
+ CJ = C( J )
+ DO 10 I = 1, M
+ A( I, J ) = CJ*A( I, J )
+ 10 CONTINUE
+ 20 CONTINUE
+ EQUED = 'C'
+ END IF
+ ELSE IF( COLCND.GE.THRESH ) THEN
+*
+* Row scaling, no column scaling
+*
+ DO 40 J = 1, N
+ DO 30 I = 1, M
+ A( I, J ) = R( I )*A( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+ EQUED = 'R'
+ ELSE
+*
+* Row and column scaling
+*
+ DO 60 J = 1, N
+ CJ = C( J )
+ DO 50 I = 1, M
+ A( I, J ) = CJ*R( I )*A( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+ EQUED = 'B'
+ END IF
+*
+ RETURN
+*
+* End of DLAQGE
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqp2.f b/2.3-1/src/fortran/lapack/dlaqp2.f
new file mode 100644
index 00000000..5ce3b162
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqp2.f
@@ -0,0 +1,175 @@
+ SUBROUTINE DLAQP2( M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2,
+ $ WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, M, N, OFFSET
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), VN1( * ), VN2( * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAQP2 computes a QR factorization with column pivoting of
+* the block A(OFFSET+1:M,1:N).
+* The block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* OFFSET (input) INTEGER
+* The number of rows of the matrix A that must be pivoted
+* but no factorized. OFFSET >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the upper triangle of block A(OFFSET+1:M,1:N) is
+* the triangular factor obtained; the elements in block
+* A(OFFSET+1:M,1:N) below the diagonal, together with the
+* array TAU, represent the orthogonal matrix Q as a product of
+* elementary reflectors. Block A(1:OFFSET,1:N) has been
+* accordingly pivoted, but no factorized.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of A*P (a leading column); if JPVT(i) = 0,
+* the i-th column of A is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors.
+*
+* VN1 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the partial column norms.
+*
+* VN2 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the exact column norms.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* X. Sun, Computer Science Dept., Duke University, USA
+*
+* Partial column norm updating strategy modified by
+* Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+* University of Zagreb, Croatia.
+* June 2006.
+* For more details see LAPACK Working Note 176.
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ITEMP, J, MN, OFFPI, PVT
+ DOUBLE PRECISION AII, TEMP, TEMP2, TOL3Z
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DLARFG, DSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DNRM2
+ EXTERNAL IDAMAX, DLAMCH, DNRM2
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M-OFFSET, N )
+ TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+* Compute factorization.
+*
+ DO 20 I = 1, MN
+*
+ OFFPI = OFFSET + I
+*
+* Determine ith pivot column and swap if necessary.
+*
+ PVT = ( I-1 ) + IDAMAX( N-I+1, VN1( I ), 1 )
+*
+ IF( PVT.NE.I ) THEN
+ CALL DSWAP( M, A( 1, PVT ), 1, A( 1, I ), 1 )
+ ITEMP = JPVT( PVT )
+ JPVT( PVT ) = JPVT( I )
+ JPVT( I ) = ITEMP
+ VN1( PVT ) = VN1( I )
+ VN2( PVT ) = VN2( I )
+ END IF
+*
+* Generate elementary reflector H(i).
+*
+ IF( OFFPI.LT.M ) THEN
+ CALL DLARFG( M-OFFPI+1, A( OFFPI, I ), A( OFFPI+1, I ), 1,
+ $ TAU( I ) )
+ ELSE
+ CALL DLARFG( 1, A( M, I ), A( M, I ), 1, TAU( I ) )
+ END IF
+*
+ IF( I.LT.N ) THEN
+*
+* Apply H(i)' to A(offset+i:m,i+1:n) from the left.
+*
+ AII = A( OFFPI, I )
+ A( OFFPI, I ) = ONE
+ CALL DLARF( 'Left', M-OFFPI+1, N-I, A( OFFPI, I ), 1,
+ $ TAU( I ), A( OFFPI, I+1 ), LDA, WORK( 1 ) )
+ A( OFFPI, I ) = AII
+ END IF
+*
+* Update partial column norms.
+*
+ DO 10 J = I + 1, N
+ IF( VN1( J ).NE.ZERO ) THEN
+*
+* NOTE: The following 4 lines follow from the analysis in
+* Lapack Working Note 176.
+*
+ TEMP = ONE - ( ABS( A( OFFPI, J ) ) / VN1( J ) )**2
+ TEMP = MAX( TEMP, ZERO )
+ TEMP2 = TEMP*( VN1( J ) / VN2( J ) )**2
+ IF( TEMP2 .LE. TOL3Z ) THEN
+ IF( OFFPI.LT.M ) THEN
+ VN1( J ) = DNRM2( M-OFFPI, A( OFFPI+1, J ), 1 )
+ VN2( J ) = VN1( J )
+ ELSE
+ VN1( J ) = ZERO
+ VN2( J ) = ZERO
+ END IF
+ ELSE
+ VN1( J ) = VN1( J )*SQRT( TEMP )
+ END IF
+ END IF
+ 10 CONTINUE
+*
+ 20 CONTINUE
+*
+ RETURN
+*
+* End of DLAQP2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqps.f b/2.3-1/src/fortran/lapack/dlaqps.f
new file mode 100644
index 00000000..94658d27
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqps.f
@@ -0,0 +1,259 @@
+ SUBROUTINE DLAQPS( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1,
+ $ VN2, AUXV, F, LDF )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER KB, LDA, LDF, M, N, NB, OFFSET
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), AUXV( * ), F( LDF, * ), TAU( * ),
+ $ VN1( * ), VN2( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAQPS computes a step of QR factorization with column pivoting
+* of a real M-by-N matrix A by using Blas-3. It tries to factorize
+* NB columns from A starting from the row OFFSET+1, and updates all
+* of the matrix with Blas-3 xGEMM.
+*
+* In some cases, due to catastrophic cancellations, it cannot
+* factorize NB columns. Hence, the actual number of factorized
+* columns is returned in KB.
+*
+* Block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0
+*
+* OFFSET (input) INTEGER
+* The number of rows of A that have been factorized in
+* previous steps.
+*
+* NB (input) INTEGER
+* The number of columns to factorize.
+*
+* KB (output) INTEGER
+* The number of columns actually factorized.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, block A(OFFSET+1:M,1:KB) is the triangular
+* factor obtained and block A(1:OFFSET,1:N) has been
+* accordingly pivoted, but no factorized.
+* The rest of the matrix, block A(OFFSET+1:M,KB+1:N) has
+* been updated.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* JPVT(I) = K <==> Column K of the full matrix A has been
+* permuted into position I in AP.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (KB)
+* The scalar factors of the elementary reflectors.
+*
+* VN1 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the partial column norms.
+*
+* VN2 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the exact column norms.
+*
+* AUXV (input/output) DOUBLE PRECISION array, dimension (NB)
+* Auxiliar vector.
+*
+* F (input/output) DOUBLE PRECISION array, dimension (LDF,NB)
+* Matrix F' = L*Y'*A.
+*
+* LDF (input) INTEGER
+* The leading dimension of the array F. LDF >= max(1,N).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* X. Sun, Computer Science Dept., Duke University, USA
+*
+* Partial column norm updating strategy modified by
+* Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+* University of Zagreb, Croatia.
+* June 2006.
+* For more details see LAPACK Working Note 176.
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER ITEMP, J, K, LASTRK, LSTICC, PVT, RK
+ DOUBLE PRECISION AKK, TEMP, TEMP2, TOL3Z
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DGEMV, DLARFG, DSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN, NINT, SQRT
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DNRM2
+ EXTERNAL IDAMAX, DLAMCH, DNRM2
+* ..
+* .. Executable Statements ..
+*
+ LASTRK = MIN( M, N+OFFSET )
+ LSTICC = 0
+ K = 0
+ TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+* Beginning of while loop.
+*
+ 10 CONTINUE
+ IF( ( K.LT.NB ) .AND. ( LSTICC.EQ.0 ) ) THEN
+ K = K + 1
+ RK = OFFSET + K
+*
+* Determine ith pivot column and swap if necessary
+*
+ PVT = ( K-1 ) + IDAMAX( N-K+1, VN1( K ), 1 )
+ IF( PVT.NE.K ) THEN
+ CALL DSWAP( M, A( 1, PVT ), 1, A( 1, K ), 1 )
+ CALL DSWAP( K-1, F( PVT, 1 ), LDF, F( K, 1 ), LDF )
+ ITEMP = JPVT( PVT )
+ JPVT( PVT ) = JPVT( K )
+ JPVT( K ) = ITEMP
+ VN1( PVT ) = VN1( K )
+ VN2( PVT ) = VN2( K )
+ END IF
+*
+* Apply previous Householder reflectors to column K:
+* A(RK:M,K) := A(RK:M,K) - A(RK:M,1:K-1)*F(K,1:K-1)'.
+*
+ IF( K.GT.1 ) THEN
+ CALL DGEMV( 'No transpose', M-RK+1, K-1, -ONE, A( RK, 1 ),
+ $ LDA, F( K, 1 ), LDF, ONE, A( RK, K ), 1 )
+ END IF
+*
+* Generate elementary reflector H(k).
+*
+ IF( RK.LT.M ) THEN
+ CALL DLARFG( M-RK+1, A( RK, K ), A( RK+1, K ), 1, TAU( K ) )
+ ELSE
+ CALL DLARFG( 1, A( RK, K ), A( RK, K ), 1, TAU( K ) )
+ END IF
+*
+ AKK = A( RK, K )
+ A( RK, K ) = ONE
+*
+* Compute Kth column of F:
+*
+* Compute F(K+1:N,K) := tau(K)*A(RK:M,K+1:N)'*A(RK:M,K).
+*
+ IF( K.LT.N ) THEN
+ CALL DGEMV( 'Transpose', M-RK+1, N-K, TAU( K ),
+ $ A( RK, K+1 ), LDA, A( RK, K ), 1, ZERO,
+ $ F( K+1, K ), 1 )
+ END IF
+*
+* Padding F(1:K,K) with zeros.
+*
+ DO 20 J = 1, K
+ F( J, K ) = ZERO
+ 20 CONTINUE
+*
+* Incremental updating of F:
+* F(1:N,K) := F(1:N,K) - tau(K)*F(1:N,1:K-1)*A(RK:M,1:K-1)'
+* *A(RK:M,K).
+*
+ IF( K.GT.1 ) THEN
+ CALL DGEMV( 'Transpose', M-RK+1, K-1, -TAU( K ), A( RK, 1 ),
+ $ LDA, A( RK, K ), 1, ZERO, AUXV( 1 ), 1 )
+*
+ CALL DGEMV( 'No transpose', N, K-1, ONE, F( 1, 1 ), LDF,
+ $ AUXV( 1 ), 1, ONE, F( 1, K ), 1 )
+ END IF
+*
+* Update the current row of A:
+* A(RK,K+1:N) := A(RK,K+1:N) - A(RK,1:K)*F(K+1:N,1:K)'.
+*
+ IF( K.LT.N ) THEN
+ CALL DGEMV( 'No transpose', N-K, K, -ONE, F( K+1, 1 ), LDF,
+ $ A( RK, 1 ), LDA, ONE, A( RK, K+1 ), LDA )
+ END IF
+*
+* Update partial column norms.
+*
+ IF( RK.LT.LASTRK ) THEN
+ DO 30 J = K + 1, N
+ IF( VN1( J ).NE.ZERO ) THEN
+*
+* NOTE: The following 4 lines follow from the analysis in
+* Lapack Working Note 176.
+*
+ TEMP = ABS( A( RK, J ) ) / VN1( J )
+ TEMP = MAX( ZERO, ( ONE+TEMP )*( ONE-TEMP ) )
+ TEMP2 = TEMP*( VN1( J ) / VN2( J ) )**2
+ IF( TEMP2 .LE. TOL3Z ) THEN
+ VN2( J ) = DBLE( LSTICC )
+ LSTICC = J
+ ELSE
+ VN1( J ) = VN1( J )*SQRT( TEMP )
+ END IF
+ END IF
+ 30 CONTINUE
+ END IF
+*
+ A( RK, K ) = AKK
+*
+* End of while loop.
+*
+ GO TO 10
+ END IF
+ KB = K
+ RK = OFFSET + KB
+*
+* Apply the block reflector to the rest of the matrix:
+* A(OFFSET+KB+1:M,KB+1:N) := A(OFFSET+KB+1:M,KB+1:N) -
+* A(OFFSET+KB+1:M,1:KB)*F(KB+1:N,1:KB)'.
+*
+ IF( KB.LT.MIN( N, M-OFFSET ) ) THEN
+ CALL DGEMM( 'No transpose', 'Transpose', M-RK, N-KB, KB, -ONE,
+ $ A( RK+1, 1 ), LDA, F( KB+1, 1 ), LDF, ONE,
+ $ A( RK+1, KB+1 ), LDA )
+ END IF
+*
+* Recomputation of difficult columns.
+*
+ 40 CONTINUE
+ IF( LSTICC.GT.0 ) THEN
+ ITEMP = NINT( VN2( LSTICC ) )
+ VN1( LSTICC ) = DNRM2( M-RK, A( RK+1, LSTICC ), 1 )
+*
+* NOTE: The computation of VN1( LSTICC ) relies on the fact that
+* SNRM2 does not fail on vectors with norm below the value of
+* SQRT(DLAMCH('S'))
+*
+ VN2( LSTICC ) = VN1( LSTICC )
+ LSTICC = ITEMP
+ GO TO 40
+ END IF
+*
+ RETURN
+*
+* End of DLAQPS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqr0.f b/2.3-1/src/fortran/lapack/dlaqr0.f
new file mode 100644
index 00000000..479da53d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqr0.f
@@ -0,0 +1,642 @@
+ SUBROUTINE DLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI,
+ $ ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), WI( * ), WORK( * ), WR( * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAQR0 computes the eigenvalues of a Hessenberg matrix H
+* and, optionally, the matrices T and Z from the Schur decomposition
+* H = Z T Z**T, where T is an upper quasi-triangular matrix (the
+* Schur form), and Z is the orthogonal matrix of Schur vectors.
+*
+* Optionally Z may be postmultiplied into an input orthogonal
+* matrix Q so that this routine can give the Schur factorization
+* of a matrix A which has been reduced to the Hessenberg form H
+* by the orthogonal matrix Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T.
+*
+* Arguments
+* =========
+*
+* WANTT (input) LOGICAL
+* = .TRUE. : the full Schur form T is required;
+* = .FALSE.: only eigenvalues are required.
+*
+* WANTZ (input) LOGICAL
+* = .TRUE. : the matrix of Schur vectors Z is required;
+* = .FALSE.: Schur vectors are not required.
+*
+* N (input) INTEGER
+* The order of the matrix H. N .GE. 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,
+* H(ILO,ILO-1) is zero. ILO and IHI are normally set by a
+* previous call to DGEBAL, and then passed to DGEHRD when the
+* matrix output by DGEBAL is reduced to Hessenberg form.
+* Otherwise, ILO and IHI should be set to 1 and N,
+* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
+* If N = 0, then ILO = 1 and IHI = 0.
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO = 0 and WANTT is .TRUE., then H contains
+* the upper quasi-triangular matrix T from the Schur
+* decomposition (the Schur form); 2-by-2 diagonal blocks
+* (corresponding to complex conjugate pairs of eigenvalues)
+* are returned in standard form, with H(i,i) = H(i+1,i+1)
+* and H(i+1,i)*H(i,i+1).LT.0. If INFO = 0 and WANTT is
+* .FALSE., then the contents of H are unspecified on exit.
+* (The output value of H when INFO.GT.0 is given under the
+* description of INFO below.)
+*
+* This subroutine may explicitly set H(i,j) = 0 for i.GT.j and
+* j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH .GE. max(1,N).
+*
+* WR (output) DOUBLE PRECISION array, dimension (IHI)
+* WI (output) DOUBLE PRECISION array, dimension (IHI)
+* The real and imaginary parts, respectively, of the computed
+* eigenvalues of H(ILO:IHI,ILO:IHI) are stored WR(ILO:IHI)
+* and WI(ILO:IHI). If two eigenvalues are computed as a
+* complex conjugate pair, they are stored in consecutive
+* elements of WR and WI, say the i-th and (i+1)th, with
+* WI(i) .GT. 0 and WI(i+1) .LT. 0. If WANTT is .TRUE., then
+* the eigenvalues are stored in the same order as on the
+* diagonal of the Schur form returned in H, with
+* WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2 diagonal
+* block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and
+* WI(i+1) = -WI(i).
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE..
+* 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,IHI)
+* If WANTZ is .FALSE., then Z is not referenced.
+* If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is
+* replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the
+* orthogonal Schur factor of H(ILO:IHI,ILO:IHI).
+* (The output value of Z when INFO.GT.0 is given under
+* the description of INFO below.)
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. if WANTZ is .TRUE.
+* then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension LWORK
+* On exit, if LWORK = -1, WORK(1) returns an estimate of
+* the optimal value for LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK .GE. max(1,N)
+* is sufficient, but LWORK typically as large as 6*N may
+* be required for optimal performance. A workspace query
+* to determine the optimal workspace size is recommended.
+*
+* If LWORK = -1, then DLAQR0 does a workspace query.
+* In this case, DLAQR0 checks the input parameters and
+* estimates the optimal workspace size for the given
+* values of N, ILO and IHI. The estimate is returned
+* in WORK(1). No error message related to LWORK is
+* issued by XERBLA. Neither H nor Z are accessed.
+*
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .GT. 0: if INFO = i, DLAQR0 failed to compute all of
+* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
+* and WI contain those eigenvalues which have been
+* successfully computed. (Failures are rare.)
+*
+* If INFO .GT. 0 and WANT is .FALSE., then on exit,
+* the remaining unconverged eigenvalues are the eigen-
+* values of the upper Hessenberg matrix rows and
+* columns ILO through INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and WANTT is .TRUE., then on exit
+*
+* (*) (initial value of H)*U = U*(final value of H)
+*
+* where U is an orthogonal matrix. The final
+* value of H is upper Hessenberg and quasi-triangular
+* in rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and WANTZ is .TRUE., then on exit
+*
+* (final value of Z(ILO:IHI,ILOZ:IHIZ)
+* = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
+*
+* where U is the orthogonal matrix in (*) (regard-
+* less of the value of WANTT.)
+*
+* If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
+* accessed.
+*
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+*
+* References:
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
+* Performance, SIAM Journal of Matrix Analysis, volume 23, pages
+* 929--947, 2002.
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part II: Aggressive Early Deflation, SIAM Journal
+* of Matrix Analysis, volume 23, pages 948--973, 2002.
+*
+* ================================================================
+* .. Parameters ..
+*
+* ==== Matrices of order NTINY or smaller must be processed by
+* . DLAHQR because of insufficient subdiagonal scratch space.
+* . (This is a hard limit.) ====
+*
+* ==== Exceptional deflation windows: try to cure rare
+* . slow convergence by increasing the size of the
+* . deflation window after KEXNW iterations. =====
+*
+* ==== Exceptional shifts: try to cure rare slow convergence
+* . with ad-hoc exceptional shifts every KEXSH iterations.
+* . The constants WILK1 and WILK2 are used to form the
+* . exceptional shifts. ====
+*
+ INTEGER NTINY
+ PARAMETER ( NTINY = 11 )
+ INTEGER KEXNW, KEXSH
+ PARAMETER ( KEXNW = 5, KEXSH = 6 )
+ DOUBLE PRECISION WILK1, WILK2
+ PARAMETER ( WILK1 = 0.75d0, WILK2 = -0.4375d0 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AA, BB, CC, CS, DD, SN, SS, SWAP
+ INTEGER I, INF, IT, ITMAX, K, KACC22, KBOT, KDU, KS,
+ $ KT, KTOP, KU, KV, KWH, KWTOP, KWV, LD, LS,
+ $ LWKOPT, NDFL, NH, NHO, NIBBLE, NMIN, NS, NSMAX,
+ $ NSR, NVE, NW, NWMAX, NWR
+ LOGICAL NWINC, SORTED
+ CHARACTER JBCMPZ*2
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION ZDUM( 1, 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACPY, DLAHQR, DLANV2, DLAQR3, DLAQR4, DLAQR5
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, INT, MAX, MIN, MOD
+* ..
+* .. Executable Statements ..
+ INFO = 0
+*
+* ==== Quick return for N = 0: nothing to do. ====
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = ONE
+ RETURN
+ END IF
+*
+* ==== Set up job flags for ILAENV. ====
+*
+ IF( WANTT ) THEN
+ JBCMPZ( 1: 1 ) = 'S'
+ ELSE
+ JBCMPZ( 1: 1 ) = 'E'
+ END IF
+ IF( WANTZ ) THEN
+ JBCMPZ( 2: 2 ) = 'V'
+ ELSE
+ JBCMPZ( 2: 2 ) = 'N'
+ END IF
+*
+* ==== Tiny matrices must use DLAHQR. ====
+*
+ IF( N.LE.NTINY ) THEN
+*
+* ==== Estimate optimal workspace. ====
+*
+ LWKOPT = 1
+ IF( LWORK.NE.-1 )
+ $ CALL DLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI,
+ $ ILOZ, IHIZ, Z, LDZ, INFO )
+ ELSE
+*
+* ==== Use small bulge multi-shift QR with aggressive early
+* . deflation on larger-than-tiny matrices. ====
+*
+* ==== Hope for the best. ====
+*
+ INFO = 0
+*
+* ==== NWR = recommended deflation window size. At this
+* . point, N .GT. NTINY = 11, so there is enough
+* . subdiagonal workspace for NWR.GE.2 as required.
+* . (In fact, there is enough subdiagonal space for
+* . NWR.GE.3.) ====
+*
+ NWR = ILAENV( 13, 'DLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NWR = MAX( 2, NWR )
+ NWR = MIN( IHI-ILO+1, ( N-1 ) / 3, NWR )
+ NW = NWR
+*
+* ==== NSR = recommended number of simultaneous shifts.
+* . At this point N .GT. NTINY = 11, so there is at
+* . enough subdiagonal workspace for NSR to be even
+* . and greater than or equal to two as required. ====
+*
+ NSR = ILAENV( 15, 'DLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NSR = MIN( NSR, ( N+6 ) / 9, IHI-ILO )
+ NSR = MAX( 2, NSR-MOD( NSR, 2 ) )
+*
+* ==== Estimate optimal workspace ====
+*
+* ==== Workspace query call to DLAQR3 ====
+*
+ CALL DLAQR3( WANTT, WANTZ, N, ILO, IHI, NWR+1, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, WR, WI, H, LDH, N, H, LDH,
+ $ N, H, LDH, WORK, -1 )
+*
+* ==== Optimal workspace = MAX(DLAQR5, DLAQR3) ====
+*
+ LWKOPT = MAX( 3*NSR / 2, INT( WORK( 1 ) ) )
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DBLE( LWKOPT )
+ RETURN
+ END IF
+*
+* ==== DLAHQR/DLAQR0 crossover point ====
+*
+ NMIN = ILAENV( 12, 'DLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NMIN = MAX( NTINY, NMIN )
+*
+* ==== Nibble crossover point ====
+*
+ NIBBLE = ILAENV( 14, 'DLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NIBBLE = MAX( 0, NIBBLE )
+*
+* ==== Accumulate reflections during ttswp? Use block
+* . 2-by-2 structure during matrix-matrix multiply? ====
+*
+ KACC22 = ILAENV( 16, 'DLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ KACC22 = MAX( 0, KACC22 )
+ KACC22 = MIN( 2, KACC22 )
+*
+* ==== NWMAX = the largest possible deflation window for
+* . which there is sufficient workspace. ====
+*
+ NWMAX = MIN( ( N-1 ) / 3, LWORK / 2 )
+*
+* ==== NSMAX = the Largest number of simultaneous shifts
+* . for which there is sufficient workspace. ====
+*
+ NSMAX = MIN( ( N+6 ) / 9, 2*LWORK / 3 )
+ NSMAX = NSMAX - MOD( NSMAX, 2 )
+*
+* ==== NDFL: an iteration count restarted at deflation. ====
+*
+ NDFL = 1
+*
+* ==== ITMAX = iteration limit ====
+*
+ ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) )
+*
+* ==== Last row and column in the active block ====
+*
+ KBOT = IHI
+*
+* ==== Main Loop ====
+*
+ DO 80 IT = 1, ITMAX
+*
+* ==== Done when KBOT falls below ILO ====
+*
+ IF( KBOT.LT.ILO )
+ $ GO TO 90
+*
+* ==== Locate active block ====
+*
+ DO 10 K = KBOT, ILO + 1, -1
+ IF( H( K, K-1 ).EQ.ZERO )
+ $ GO TO 20
+ 10 CONTINUE
+ K = ILO
+ 20 CONTINUE
+ KTOP = K
+*
+* ==== Select deflation window size ====
+*
+ NH = KBOT - KTOP + 1
+ IF( NDFL.LT.KEXNW .OR. NH.LT.NW ) THEN
+*
+* ==== Typical deflation window. If possible and
+* . advisable, nibble the entire active block.
+* . If not, use size NWR or NWR+1 depending upon
+* . which has the smaller corresponding subdiagonal
+* . entry (a heuristic). ====
+*
+ NWINC = .TRUE.
+ IF( NH.LE.MIN( NMIN, NWMAX ) ) THEN
+ NW = NH
+ ELSE
+ NW = MIN( NWR, NH, NWMAX )
+ IF( NW.LT.NWMAX ) THEN
+ IF( NW.GE.NH-1 ) THEN
+ NW = NH
+ ELSE
+ KWTOP = KBOT - NW + 1
+ IF( ABS( H( KWTOP, KWTOP-1 ) ).GT.
+ $ ABS( H( KWTOP-1, KWTOP-2 ) ) )NW = NW + 1
+ END IF
+ END IF
+ END IF
+ ELSE
+*
+* ==== Exceptional deflation window. If there have
+* . been no deflations in KEXNW or more iterations,
+* . then vary the deflation window size. At first,
+* . because, larger windows are, in general, more
+* . powerful than smaller ones, rapidly increase the
+* . window up to the maximum reasonable and possible.
+* . Then maybe try a slightly smaller window. ====
+*
+ IF( NWINC .AND. NW.LT.MIN( NWMAX, NH ) ) THEN
+ NW = MIN( NWMAX, NH, 2*NW )
+ ELSE
+ NWINC = .FALSE.
+ IF( NW.EQ.NH .AND. NH.GT.2 )
+ $ NW = NH - 1
+ END IF
+ END IF
+*
+* ==== Aggressive early deflation:
+* . split workspace under the subdiagonal into
+* . - an nw-by-nw work array V in the lower
+* . left-hand-corner,
+* . - an NW-by-at-least-NW-but-more-is-better
+* . (NW-by-NHO) horizontal work array along
+* . the bottom edge,
+* . - an at-least-NW-but-more-is-better (NHV-by-NW)
+* . vertical work array along the left-hand-edge.
+* . ====
+*
+ KV = N - NW + 1
+ KT = NW + 1
+ NHO = ( N-NW-1 ) - KT + 1
+ KWV = NW + 2
+ NVE = ( N-NW ) - KWV + 1
+*
+* ==== Aggressive early deflation ====
+*
+ CALL DLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, WR, WI, H( KV, 1 ), LDH,
+ $ NHO, H( KV, KT ), LDH, NVE, H( KWV, 1 ), LDH,
+ $ WORK, LWORK )
+*
+* ==== Adjust KBOT accounting for new deflations. ====
+*
+ KBOT = KBOT - LD
+*
+* ==== KS points to the shifts. ====
+*
+ KS = KBOT - LS + 1
+*
+* ==== Skip an expensive QR sweep if there is a (partly
+* . heuristic) reason to expect that many eigenvalues
+* . will deflate without it. Here, the QR sweep is
+* . skipped if many eigenvalues have just been deflated
+* . or if the remaining active block is small.
+*
+ IF( ( LD.EQ.0 ) .OR. ( ( 100*LD.LE.NW*NIBBLE ) .AND. ( KBOT-
+ $ KTOP+1.GT.MIN( NMIN, NWMAX ) ) ) ) THEN
+*
+* ==== NS = nominal number of simultaneous shifts.
+* . This may be lowered (slightly) if DLAQR3
+* . did not provide that many shifts. ====
+*
+ NS = MIN( NSMAX, NSR, MAX( 2, KBOT-KTOP ) )
+ NS = NS - MOD( NS, 2 )
+*
+* ==== If there have been no deflations
+* . in a multiple of KEXSH iterations,
+* . then try exceptional shifts.
+* . Otherwise use shifts provided by
+* . DLAQR3 above or from the eigenvalues
+* . of a trailing principal submatrix. ====
+*
+ IF( MOD( NDFL, KEXSH ).EQ.0 ) THEN
+ KS = KBOT - NS + 1
+ DO 30 I = KBOT, MAX( KS+1, KTOP+2 ), -2
+ SS = ABS( H( I, I-1 ) ) + ABS( H( I-1, I-2 ) )
+ AA = WILK1*SS + H( I, I )
+ BB = SS
+ CC = WILK2*SS
+ DD = AA
+ CALL DLANV2( AA, BB, CC, DD, WR( I-1 ), WI( I-1 ),
+ $ WR( I ), WI( I ), CS, SN )
+ 30 CONTINUE
+ IF( KS.EQ.KTOP ) THEN
+ WR( KS+1 ) = H( KS+1, KS+1 )
+ WI( KS+1 ) = ZERO
+ WR( KS ) = WR( KS+1 )
+ WI( KS ) = WI( KS+1 )
+ END IF
+ ELSE
+*
+* ==== Got NS/2 or fewer shifts? Use DLAQR4 or
+* . DLAHQR on a trailing principal submatrix to
+* . get more. (Since NS.LE.NSMAX.LE.(N+6)/9,
+* . there is enough space below the subdiagonal
+* . to fit an NS-by-NS scratch array.) ====
+*
+ IF( KBOT-KS+1.LE.NS / 2 ) THEN
+ KS = KBOT - NS + 1
+ KT = N - NS + 1
+ CALL DLACPY( 'A', NS, NS, H( KS, KS ), LDH,
+ $ H( KT, 1 ), LDH )
+ IF( NS.GT.NMIN ) THEN
+ CALL DLAQR4( .false., .false., NS, 1, NS,
+ $ H( KT, 1 ), LDH, WR( KS ),
+ $ WI( KS ), 1, 1, ZDUM, 1, WORK,
+ $ LWORK, INF )
+ ELSE
+ CALL DLAHQR( .false., .false., NS, 1, NS,
+ $ H( KT, 1 ), LDH, WR( KS ),
+ $ WI( KS ), 1, 1, ZDUM, 1, INF )
+ END IF
+ KS = KS + INF
+*
+* ==== In case of a rare QR failure use
+* . eigenvalues of the trailing 2-by-2
+* . principal submatrix. ====
+*
+ IF( KS.GE.KBOT ) THEN
+ AA = H( KBOT-1, KBOT-1 )
+ CC = H( KBOT, KBOT-1 )
+ BB = H( KBOT-1, KBOT )
+ DD = H( KBOT, KBOT )
+ CALL DLANV2( AA, BB, CC, DD, WR( KBOT-1 ),
+ $ WI( KBOT-1 ), WR( KBOT ),
+ $ WI( KBOT ), CS, SN )
+ KS = KBOT - 1
+ END IF
+ END IF
+*
+ IF( KBOT-KS+1.GT.NS ) THEN
+*
+* ==== Sort the shifts (Helps a little)
+* . Bubble sort keeps complex conjugate
+* . pairs together. ====
+*
+ SORTED = .false.
+ DO 50 K = KBOT, KS + 1, -1
+ IF( SORTED )
+ $ GO TO 60
+ SORTED = .true.
+ DO 40 I = KS, K - 1
+ IF( ABS( WR( I ) )+ABS( WI( I ) ).LT.
+ $ ABS( WR( I+1 ) )+ABS( WI( I+1 ) ) ) THEN
+ SORTED = .false.
+*
+ SWAP = WR( I )
+ WR( I ) = WR( I+1 )
+ WR( I+1 ) = SWAP
+*
+ SWAP = WI( I )
+ WI( I ) = WI( I+1 )
+ WI( I+1 ) = SWAP
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+* ==== Shuffle shifts into pairs of real shifts
+* . and pairs of complex conjugate shifts
+* . assuming complex conjugate shifts are
+* . already adjacent to one another. (Yes,
+* . they are.) ====
+*
+ DO 70 I = KBOT, KS + 2, -2
+ IF( WI( I ).NE.-WI( I-1 ) ) THEN
+*
+ SWAP = WR( I )
+ WR( I ) = WR( I-1 )
+ WR( I-1 ) = WR( I-2 )
+ WR( I-2 ) = SWAP
+*
+ SWAP = WI( I )
+ WI( I ) = WI( I-1 )
+ WI( I-1 ) = WI( I-2 )
+ WI( I-2 ) = SWAP
+ END IF
+ 70 CONTINUE
+ END IF
+*
+* ==== If there are only two shifts and both are
+* . real, then use only one. ====
+*
+ IF( KBOT-KS+1.EQ.2 ) THEN
+ IF( WI( KBOT ).EQ.ZERO ) THEN
+ IF( ABS( WR( KBOT )-H( KBOT, KBOT ) ).LT.
+ $ ABS( WR( KBOT-1 )-H( KBOT, KBOT ) ) ) THEN
+ WR( KBOT-1 ) = WR( KBOT )
+ ELSE
+ WR( KBOT ) = WR( KBOT-1 )
+ END IF
+ END IF
+ END IF
+*
+* ==== Use up to NS of the the smallest magnatiude
+* . shifts. If there aren't NS shifts available,
+* . then use them all, possibly dropping one to
+* . make the number of shifts even. ====
+*
+ NS = MIN( NS, KBOT-KS+1 )
+ NS = NS - MOD( NS, 2 )
+ KS = KBOT - NS + 1
+*
+* ==== Small-bulge multi-shift QR sweep:
+* . split workspace under the subdiagonal into
+* . - a KDU-by-KDU work array U in the lower
+* . left-hand-corner,
+* . - a KDU-by-at-least-KDU-but-more-is-better
+* . (KDU-by-NHo) horizontal work array WH along
+* . the bottom edge,
+* . - and an at-least-KDU-but-more-is-better-by-KDU
+* . (NVE-by-KDU) vertical work WV arrow along
+* . the left-hand-edge. ====
+*
+ KDU = 3*NS - 3
+ KU = N - KDU + 1
+ KWH = KDU + 1
+ NHO = ( N-KDU+1-4 ) - ( KDU+1 ) + 1
+ KWV = KDU + 4
+ NVE = N - KDU - KWV + 1
+*
+* ==== Small-bulge multi-shift QR sweep ====
+*
+ CALL DLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NS,
+ $ WR( KS ), WI( KS ), H, LDH, ILOZ, IHIZ, Z,
+ $ LDZ, WORK, 3, H( KU, 1 ), LDH, NVE,
+ $ H( KWV, 1 ), LDH, NHO, H( KU, KWH ), LDH )
+ END IF
+*
+* ==== Note progress (or the lack of it). ====
+*
+ IF( LD.GT.0 ) THEN
+ NDFL = 1
+ ELSE
+ NDFL = NDFL + 1
+ END IF
+*
+* ==== End of main loop ====
+ 80 CONTINUE
+*
+* ==== Iteration limit exceeded. Set INFO to show where
+* . the problem occurred and exit. ====
+*
+ INFO = KBOT
+ 90 CONTINUE
+ END IF
+*
+* ==== Return the optimal value of LWORK. ====
+*
+ WORK( 1 ) = DBLE( LWKOPT )
+*
+* ==== End of DLAQR0 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqr1.f b/2.3-1/src/fortran/lapack/dlaqr1.f
new file mode 100644
index 00000000..c80fe668
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqr1.f
@@ -0,0 +1,97 @@
+ SUBROUTINE DLAQR1( N, H, LDH, SR1, SI1, SR2, SI2, V )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION SI1, SI2, SR1, SR2
+ INTEGER LDH, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), V( * )
+* ..
+*
+* Given a 2-by-2 or 3-by-3 matrix H, DLAQR1 sets v to a
+* scalar multiple of the first column of the product
+*
+* (*) K = (H - (sr1 + i*si1)*I)*(H - (sr2 + i*si2)*I)
+*
+* scaling to avoid overflows and most underflows. It
+* is assumed that either
+*
+* 1) sr1 = sr2 and si1 = -si2
+* or
+* 2) si1 = si2 = 0.
+*
+* This is useful for starting double implicit shift bulges
+* in the QR algorithm.
+*
+*
+* N (input) integer
+* Order of the matrix H. N must be either 2 or 3.
+*
+* H (input) DOUBLE PRECISION array of dimension (LDH,N)
+* The 2-by-2 or 3-by-3 matrix H in (*).
+*
+* LDH (input) integer
+* The leading dimension of H as declared in
+* the calling procedure. LDH.GE.N
+*
+* SR1 (input) DOUBLE PRECISION
+* SI1 The shifts in (*).
+* SR2
+* SI2
+*
+* V (output) DOUBLE PRECISION array of dimension N
+* A scalar multiple of the first column of the
+* matrix K in (*).
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION H21S, H31S, S
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+ IF( N.EQ.2 ) THEN
+ S = ABS( H( 1, 1 )-SR2 ) + ABS( SI2 ) + ABS( H( 2, 1 ) )
+ IF( S.EQ.ZERO ) THEN
+ V( 1 ) = ZERO
+ V( 2 ) = ZERO
+ ELSE
+ H21S = H( 2, 1 ) / S
+ V( 1 ) = H21S*H( 1, 2 ) + ( H( 1, 1 )-SR1 )*
+ $ ( ( H( 1, 1 )-SR2 ) / S ) - SI1*( SI2 / S )
+ V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-SR1-SR2 )
+ END IF
+ ELSE
+ S = ABS( H( 1, 1 )-SR2 ) + ABS( SI2 ) + ABS( H( 2, 1 ) ) +
+ $ ABS( H( 3, 1 ) )
+ IF( S.EQ.ZERO ) THEN
+ V( 1 ) = ZERO
+ V( 2 ) = ZERO
+ V( 3 ) = ZERO
+ ELSE
+ H21S = H( 2, 1 ) / S
+ H31S = H( 3, 1 ) / S
+ V( 1 ) = ( H( 1, 1 )-SR1 )*( ( H( 1, 1 )-SR2 ) / S ) -
+ $ SI1*( SI2 / S ) + H( 1, 2 )*H21S + H( 1, 3 )*H31S
+ V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-SR1-SR2 ) +
+ $ H( 2, 3 )*H31S
+ V( 3 ) = H31S*( H( 1, 1 )+H( 3, 3 )-SR1-SR2 ) +
+ $ H21S*H( 3, 2 )
+ END IF
+ END IF
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqr2.f b/2.3-1/src/fortran/lapack/dlaqr2.f
new file mode 100644
index 00000000..6ddb3309
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqr2.f
@@ -0,0 +1,551 @@
+ SUBROUTINE DLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T,
+ $ LDT, NV, WV, LDWV, WORK, LWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
+ $ LDZ, LWORK, N, ND, NH, NS, NV, NW
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), SI( * ), SR( * ), T( LDT, * ),
+ $ V( LDV, * ), WORK( * ), WV( LDWV, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* This subroutine is identical to DLAQR3 except that it avoids
+* recursion by calling DLAHQR instead of DLAQR4.
+*
+*
+* ******************************************************************
+* Aggressive early deflation:
+*
+* This subroutine accepts as input an upper Hessenberg matrix
+* H and performs an orthogonal similarity transformation
+* designed to detect and deflate fully converged eigenvalues from
+* a trailing principal submatrix. On output H has been over-
+* written by a new Hessenberg matrix that is a perturbation of
+* an orthogonal similarity transformation of H. It is to be
+* hoped that the final version of H has many zero subdiagonal
+* entries.
+*
+* ******************************************************************
+* WANTT (input) LOGICAL
+* If .TRUE., then the Hessenberg matrix H is fully updated
+* so that the quasi-triangular Schur factor may be
+* computed (in cooperation with the calling subroutine).
+* If .FALSE., then only enough of H is updated to preserve
+* the eigenvalues.
+*
+* WANTZ (input) LOGICAL
+* If .TRUE., then the orthogonal matrix Z is updated so
+* so that the orthogonal Schur factor may be computed
+* (in cooperation with the calling subroutine).
+* If .FALSE., then Z is not referenced.
+*
+* N (input) INTEGER
+* The order of the matrix H and (if WANTZ is .TRUE.) the
+* order of the orthogonal matrix Z.
+*
+* KTOP (input) INTEGER
+* It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.
+* KBOT and KTOP together determine an isolated block
+* along the diagonal of the Hessenberg matrix.
+*
+* KBOT (input) INTEGER
+* It is assumed without a check that either
+* KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together
+* determine an isolated block along the diagonal of the
+* Hessenberg matrix.
+*
+* NW (input) INTEGER
+* Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1).
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
+* On input the initial N-by-N section of H stores the
+* Hessenberg matrix undergoing aggressive early deflation.
+* On output H has been transformed by an orthogonal
+* similarity transformation, perturbed, and the returned
+* to Hessenberg form that (it is to be hoped) has some
+* zero subdiagonal entries.
+*
+* LDH (input) integer
+* Leading dimension of H just as declared in the calling
+* subroutine. N .LE. LDH
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,IHI)
+* IF WANTZ is .TRUE., then on output, the orthogonal
+* similarity transformation mentioned above has been
+* accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
+* If WANTZ is .FALSE., then Z is unreferenced.
+*
+* LDZ (input) integer
+* The leading dimension of Z just as declared in the
+* calling subroutine. 1 .LE. LDZ.
+*
+* NS (output) integer
+* The number of unconverged (ie approximate) eigenvalues
+* returned in SR and SI that may be used as shifts by the
+* calling subroutine.
+*
+* ND (output) integer
+* The number of converged eigenvalues uncovered by this
+* subroutine.
+*
+* SR (output) DOUBLE PRECISION array, dimension KBOT
+* SI (output) DOUBLE PRECISION array, dimension KBOT
+* On output, the real and imaginary parts of approximate
+* eigenvalues that may be used for shifts are stored in
+* SR(KBOT-ND-NS+1) through SR(KBOT-ND) and
+* SI(KBOT-ND-NS+1) through SI(KBOT-ND), respectively.
+* The real and imaginary parts of converged eigenvalues
+* are stored in SR(KBOT-ND+1) through SR(KBOT) and
+* SI(KBOT-ND+1) through SI(KBOT), respectively.
+*
+* V (workspace) DOUBLE PRECISION array, dimension (LDV,NW)
+* An NW-by-NW work array.
+*
+* LDV (input) integer scalar
+* The leading dimension of V just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* NH (input) integer scalar
+* The number of columns of T. NH.GE.NW.
+*
+* T (workspace) DOUBLE PRECISION array, dimension (LDT,NW)
+*
+* LDT (input) integer
+* The leading dimension of T just as declared in the
+* calling subroutine. NW .LE. LDT
+*
+* NV (input) integer
+* The number of rows of work array WV available for
+* workspace. NV.GE.NW.
+*
+* WV (workspace) DOUBLE PRECISION array, dimension (LDWV,NW)
+*
+* LDWV (input) integer
+* The leading dimension of W just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension LWORK.
+* On exit, WORK(1) is set to an estimate of the optimal value
+* of LWORK for the given values of N, NW, KTOP and KBOT.
+*
+* LWORK (input) integer
+* The dimension of the work array WORK. LWORK = 2*NW
+* suffices, but greater efficiency may result from larger
+* values of LWORK.
+*
+* If LWORK = -1, then a workspace query is assumed; DLAQR2
+* only estimates the optimal workspace size for the given
+* values of N, NW, KTOP and KBOT. The estimate is returned
+* in WORK(1). No error message related to LWORK is issued
+* by XERBLA. Neither H nor Z are accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AA, BB, BETA, CC, CS, DD, EVI, EVK, FOO, S,
+ $ SAFMAX, SAFMIN, SMLNUM, SN, TAU, ULP
+ INTEGER I, IFST, ILST, INFO, INFQR, J, JW, K, KCOL,
+ $ KEND, KLN, KROW, KWTOP, LTOP, LWK1, LWK2,
+ $ LWKOPT
+ LOGICAL BULGE, SORTED
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEHRD, DGEMM, DLABAD, DLACPY, DLAHQR,
+ $ DLANV2, DLARF, DLARFG, DLASET, DORGHR, DTREXC
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, INT, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* ==== Estimate optimal workspace. ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ IF( JW.LE.2 ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* ==== Workspace query call to DGEHRD ====
+*
+ CALL DGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK1 = INT( WORK( 1 ) )
+*
+* ==== Workspace query call to DORGHR ====
+*
+ CALL DORGHR( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK2 = INT( WORK( 1 ) )
+*
+* ==== Optimal workspace ====
+*
+ LWKOPT = JW + MAX( LWK1, LWK2 )
+ END IF
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DBLE( LWKOPT )
+ RETURN
+ END IF
+*
+* ==== Nothing to do ...
+* ... for an empty active block ... ====
+ NS = 0
+ ND = 0
+ IF( KTOP.GT.KBOT )
+ $ RETURN
+* ... nor for an empty deflation window. ====
+ IF( NW.LT.1 )
+ $ RETURN
+*
+* ==== Machine constants ====
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( N ) / ULP )
+*
+* ==== Setup deflation window ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ KWTOP = KBOT - JW + 1
+ IF( KWTOP.EQ.KTOP ) THEN
+ S = ZERO
+ ELSE
+ S = H( KWTOP, KWTOP-1 )
+ END IF
+*
+ IF( KBOT.EQ.KWTOP ) THEN
+*
+* ==== 1-by-1 deflation window: not much to do ====
+*
+ SR( KWTOP ) = H( KWTOP, KWTOP )
+ SI( KWTOP ) = ZERO
+ NS = 1
+ ND = 0
+ IF( ABS( S ).LE.MAX( SMLNUM, ULP*ABS( H( KWTOP, KWTOP ) ) ) )
+ $ THEN
+ NS = 0
+ ND = 1
+ IF( KWTOP.GT.KTOP )
+ $ H( KWTOP, KWTOP-1 ) = ZERO
+ END IF
+ RETURN
+ END IF
+*
+* ==== Convert to spike-triangular form. (In case of a
+* . rare QR failure, this routine continues to do
+* . aggressive early deflation using that part of
+* . the deflation window that converged using INFQR
+* . here and there to keep track.) ====
+*
+ CALL DLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T, LDT )
+ CALL DCOPY( JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ), LDT+1 )
+*
+ CALL DLASET( 'A', JW, JW, ZERO, ONE, V, LDV )
+ CALL DLAHQR( .true., .true., JW, 1, JW, T, LDT, SR( KWTOP ),
+ $ SI( KWTOP ), 1, JW, V, LDV, INFQR )
+*
+* ==== DTREXC needs a clean margin near the diagonal ====
+*
+ DO 10 J = 1, JW - 3
+ T( J+2, J ) = ZERO
+ T( J+3, J ) = ZERO
+ 10 CONTINUE
+ IF( JW.GT.2 )
+ $ T( JW, JW-2 ) = ZERO
+*
+* ==== Deflation detection loop ====
+*
+ NS = JW
+ ILST = INFQR + 1
+ 20 CONTINUE
+ IF( ILST.LE.NS ) THEN
+ IF( NS.EQ.1 ) THEN
+ BULGE = .FALSE.
+ ELSE
+ BULGE = T( NS, NS-1 ).NE.ZERO
+ END IF
+*
+* ==== Small spike tip test for deflation ====
+*
+ IF( .NOT.BULGE ) THEN
+*
+* ==== Real eigenvalue ====
+*
+ FOO = ABS( T( NS, NS ) )
+ IF( FOO.EQ.ZERO )
+ $ FOO = ABS( S )
+ IF( ABS( S*V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) ) THEN
+*
+* ==== Deflatable ====
+*
+ NS = NS - 1
+ ELSE
+*
+* ==== Undeflatable. Move it up out of the way.
+* . (DTREXC can not fail in this case.) ====
+*
+ IFST = NS
+ CALL DTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, WORK,
+ $ INFO )
+ ILST = ILST + 1
+ END IF
+ ELSE
+*
+* ==== Complex conjugate pair ====
+*
+ FOO = ABS( T( NS, NS ) ) + SQRT( ABS( T( NS, NS-1 ) ) )*
+ $ SQRT( ABS( T( NS-1, NS ) ) )
+ IF( FOO.EQ.ZERO )
+ $ FOO = ABS( S )
+ IF( MAX( ABS( S*V( 1, NS ) ), ABS( S*V( 1, NS-1 ) ) ).LE.
+ $ MAX( SMLNUM, ULP*FOO ) ) THEN
+*
+* ==== Deflatable ====
+*
+ NS = NS - 2
+ ELSE
+*
+* ==== Undflatable. Move them up out of the way.
+* . Fortunately, DTREXC does the right thing with
+* . ILST in case of a rare exchange failure. ====
+*
+ IFST = NS
+ CALL DTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, WORK,
+ $ INFO )
+ ILST = ILST + 2
+ END IF
+ END IF
+*
+* ==== End deflation detection loop ====
+*
+ GO TO 20
+ END IF
+*
+* ==== Return to Hessenberg form ====
+*
+ IF( NS.EQ.0 )
+ $ S = ZERO
+*
+ IF( NS.LT.JW ) THEN
+*
+* ==== sorting diagonal blocks of T improves accuracy for
+* . graded matrices. Bubble sort deals well with
+* . exchange failures. ====
+*
+ SORTED = .false.
+ I = NS + 1
+ 30 CONTINUE
+ IF( SORTED )
+ $ GO TO 50
+ SORTED = .true.
+*
+ KEND = I - 1
+ I = INFQR + 1
+ IF( I.EQ.NS ) THEN
+ K = I + 1
+ ELSE IF( T( I+1, I ).EQ.ZERO ) THEN
+ K = I + 1
+ ELSE
+ K = I + 2
+ END IF
+ 40 CONTINUE
+ IF( K.LE.KEND ) THEN
+ IF( K.EQ.I+1 ) THEN
+ EVI = ABS( T( I, I ) )
+ ELSE
+ EVI = ABS( T( I, I ) ) + SQRT( ABS( T( I+1, I ) ) )*
+ $ SQRT( ABS( T( I, I+1 ) ) )
+ END IF
+*
+ IF( K.EQ.KEND ) THEN
+ EVK = ABS( T( K, K ) )
+ ELSE IF( T( K+1, K ).EQ.ZERO ) THEN
+ EVK = ABS( T( K, K ) )
+ ELSE
+ EVK = ABS( T( K, K ) ) + SQRT( ABS( T( K+1, K ) ) )*
+ $ SQRT( ABS( T( K, K+1 ) ) )
+ END IF
+*
+ IF( EVI.GE.EVK ) THEN
+ I = K
+ ELSE
+ SORTED = .false.
+ IFST = I
+ ILST = K
+ CALL DTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, WORK,
+ $ INFO )
+ IF( INFO.EQ.0 ) THEN
+ I = ILST
+ ELSE
+ I = K
+ END IF
+ END IF
+ IF( I.EQ.KEND ) THEN
+ K = I + 1
+ ELSE IF( T( I+1, I ).EQ.ZERO ) THEN
+ K = I + 1
+ ELSE
+ K = I + 2
+ END IF
+ GO TO 40
+ END IF
+ GO TO 30
+ 50 CONTINUE
+ END IF
+*
+* ==== Restore shift/eigenvalue array from T ====
+*
+ I = JW
+ 60 CONTINUE
+ IF( I.GE.INFQR+1 ) THEN
+ IF( I.EQ.INFQR+1 ) THEN
+ SR( KWTOP+I-1 ) = T( I, I )
+ SI( KWTOP+I-1 ) = ZERO
+ I = I - 1
+ ELSE IF( T( I, I-1 ).EQ.ZERO ) THEN
+ SR( KWTOP+I-1 ) = T( I, I )
+ SI( KWTOP+I-1 ) = ZERO
+ I = I - 1
+ ELSE
+ AA = T( I-1, I-1 )
+ CC = T( I, I-1 )
+ BB = T( I-1, I )
+ DD = T( I, I )
+ CALL DLANV2( AA, BB, CC, DD, SR( KWTOP+I-2 ),
+ $ SI( KWTOP+I-2 ), SR( KWTOP+I-1 ),
+ $ SI( KWTOP+I-1 ), CS, SN )
+ I = I - 2
+ END IF
+ GO TO 60
+ END IF
+*
+ IF( NS.LT.JW .OR. S.EQ.ZERO ) THEN
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+*
+* ==== Reflect spike back into lower triangle ====
+*
+ CALL DCOPY( NS, V, LDV, WORK, 1 )
+ BETA = WORK( 1 )
+ CALL DLARFG( NS, BETA, WORK( 2 ), 1, TAU )
+ WORK( 1 ) = ONE
+*
+ CALL DLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ), LDT )
+*
+ CALL DLARF( 'L', NS, JW, WORK, 1, TAU, T, LDT,
+ $ WORK( JW+1 ) )
+ CALL DLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT,
+ $ WORK( JW+1 ) )
+ CALL DLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV,
+ $ WORK( JW+1 ) )
+*
+ CALL DGEHRD( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ END IF
+*
+* ==== Copy updated reduced window into place ====
+*
+ IF( KWTOP.GT.1 )
+ $ H( KWTOP, KWTOP-1 ) = S*V( 1, 1 )
+ CALL DLACPY( 'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH )
+ CALL DCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP ),
+ $ LDH+1 )
+*
+* ==== Accumulate orthogonal matrix in order update
+* . H and Z, if requested. (A modified version
+* . of DORGHR that accumulates block Householder
+* . transformations into V directly might be
+* . marginally more efficient than the following.) ====
+*
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+ CALL DORGHR( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ CALL DGEMM( 'N', 'N', JW, NS, NS, ONE, V, LDV, T, LDT, ZERO,
+ $ WV, LDWV )
+ CALL DLACPY( 'A', JW, NS, WV, LDWV, V, LDV )
+ END IF
+*
+* ==== Update vertical slab in H ====
+*
+ IF( WANTT ) THEN
+ LTOP = 1
+ ELSE
+ LTOP = KTOP
+ END IF
+ DO 70 KROW = LTOP, KWTOP - 1, NV
+ KLN = MIN( NV, KWTOP-KROW )
+ CALL DGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ),
+ $ LDH, V, LDV, ZERO, WV, LDWV )
+ CALL DLACPY( 'A', KLN, JW, WV, LDWV, H( KROW, KWTOP ), LDH )
+ 70 CONTINUE
+*
+* ==== Update horizontal slab in H ====
+*
+ IF( WANTT ) THEN
+ DO 80 KCOL = KBOT + 1, N, NH
+ KLN = MIN( NH, N-KCOL+1 )
+ CALL DGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV,
+ $ H( KWTOP, KCOL ), LDH, ZERO, T, LDT )
+ CALL DLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ),
+ $ LDH )
+ 80 CONTINUE
+ END IF
+*
+* ==== Update vertical slab in Z ====
+*
+ IF( WANTZ ) THEN
+ DO 90 KROW = ILOZ, IHIZ, NV
+ KLN = MIN( NV, IHIZ-KROW+1 )
+ CALL DGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ),
+ $ LDZ, V, LDV, ZERO, WV, LDWV )
+ CALL DLACPY( 'A', KLN, JW, WV, LDWV, Z( KROW, KWTOP ),
+ $ LDZ )
+ 90 CONTINUE
+ END IF
+ END IF
+*
+* ==== Return the number of deflations ... ====
+*
+ ND = JW - NS
+*
+* ==== ... and the number of shifts. (Subtracting
+* . INFQR from the spike length takes care
+* . of the case of a rare QR failure while
+* . calculating eigenvalues of the deflation
+* . window.) ====
+*
+ NS = NS - INFQR
+*
+* ==== Return optimal workspace. ====
+*
+ WORK( 1 ) = DBLE( LWKOPT )
+*
+* ==== End of DLAQR2 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqr3.f b/2.3-1/src/fortran/lapack/dlaqr3.f
new file mode 100644
index 00000000..877b267a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqr3.f
@@ -0,0 +1,561 @@
+ SUBROUTINE DLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T,
+ $ LDT, NV, WV, LDWV, WORK, LWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
+ $ LDZ, LWORK, N, ND, NH, NS, NV, NW
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), SI( * ), SR( * ), T( LDT, * ),
+ $ V( LDV, * ), WORK( * ), WV( LDWV, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* ******************************************************************
+* Aggressive early deflation:
+*
+* This subroutine accepts as input an upper Hessenberg matrix
+* H and performs an orthogonal similarity transformation
+* designed to detect and deflate fully converged eigenvalues from
+* a trailing principal submatrix. On output H has been over-
+* written by a new Hessenberg matrix that is a perturbation of
+* an orthogonal similarity transformation of H. It is to be
+* hoped that the final version of H has many zero subdiagonal
+* entries.
+*
+* ******************************************************************
+* WANTT (input) LOGICAL
+* If .TRUE., then the Hessenberg matrix H is fully updated
+* so that the quasi-triangular Schur factor may be
+* computed (in cooperation with the calling subroutine).
+* If .FALSE., then only enough of H is updated to preserve
+* the eigenvalues.
+*
+* WANTZ (input) LOGICAL
+* If .TRUE., then the orthogonal matrix Z is updated so
+* so that the orthogonal Schur factor may be computed
+* (in cooperation with the calling subroutine).
+* If .FALSE., then Z is not referenced.
+*
+* N (input) INTEGER
+* The order of the matrix H and (if WANTZ is .TRUE.) the
+* order of the orthogonal matrix Z.
+*
+* KTOP (input) INTEGER
+* It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.
+* KBOT and KTOP together determine an isolated block
+* along the diagonal of the Hessenberg matrix.
+*
+* KBOT (input) INTEGER
+* It is assumed without a check that either
+* KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together
+* determine an isolated block along the diagonal of the
+* Hessenberg matrix.
+*
+* NW (input) INTEGER
+* Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1).
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
+* On input the initial N-by-N section of H stores the
+* Hessenberg matrix undergoing aggressive early deflation.
+* On output H has been transformed by an orthogonal
+* similarity transformation, perturbed, and the returned
+* to Hessenberg form that (it is to be hoped) has some
+* zero subdiagonal entries.
+*
+* LDH (input) integer
+* Leading dimension of H just as declared in the calling
+* subroutine. N .LE. LDH
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,IHI)
+* IF WANTZ is .TRUE., then on output, the orthogonal
+* similarity transformation mentioned above has been
+* accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
+* If WANTZ is .FALSE., then Z is unreferenced.
+*
+* LDZ (input) integer
+* The leading dimension of Z just as declared in the
+* calling subroutine. 1 .LE. LDZ.
+*
+* NS (output) integer
+* The number of unconverged (ie approximate) eigenvalues
+* returned in SR and SI that may be used as shifts by the
+* calling subroutine.
+*
+* ND (output) integer
+* The number of converged eigenvalues uncovered by this
+* subroutine.
+*
+* SR (output) DOUBLE PRECISION array, dimension KBOT
+* SI (output) DOUBLE PRECISION array, dimension KBOT
+* On output, the real and imaginary parts of approximate
+* eigenvalues that may be used for shifts are stored in
+* SR(KBOT-ND-NS+1) through SR(KBOT-ND) and
+* SI(KBOT-ND-NS+1) through SI(KBOT-ND), respectively.
+* The real and imaginary parts of converged eigenvalues
+* are stored in SR(KBOT-ND+1) through SR(KBOT) and
+* SI(KBOT-ND+1) through SI(KBOT), respectively.
+*
+* V (workspace) DOUBLE PRECISION array, dimension (LDV,NW)
+* An NW-by-NW work array.
+*
+* LDV (input) integer scalar
+* The leading dimension of V just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* NH (input) integer scalar
+* The number of columns of T. NH.GE.NW.
+*
+* T (workspace) DOUBLE PRECISION array, dimension (LDT,NW)
+*
+* LDT (input) integer
+* The leading dimension of T just as declared in the
+* calling subroutine. NW .LE. LDT
+*
+* NV (input) integer
+* The number of rows of work array WV available for
+* workspace. NV.GE.NW.
+*
+* WV (workspace) DOUBLE PRECISION array, dimension (LDWV,NW)
+*
+* LDWV (input) integer
+* The leading dimension of W just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension LWORK.
+* On exit, WORK(1) is set to an estimate of the optimal value
+* of LWORK for the given values of N, NW, KTOP and KBOT.
+*
+* LWORK (input) integer
+* The dimension of the work array WORK. LWORK = 2*NW
+* suffices, but greater efficiency may result from larger
+* values of LWORK.
+*
+* If LWORK = -1, then a workspace query is assumed; DLAQR3
+* only estimates the optimal workspace size for the given
+* values of N, NW, KTOP and KBOT. The estimate is returned
+* in WORK(1). No error message related to LWORK is issued
+* by XERBLA. Neither H nor Z are accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ==================================================================
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AA, BB, BETA, CC, CS, DD, EVI, EVK, FOO, S,
+ $ SAFMAX, SAFMIN, SMLNUM, SN, TAU, ULP
+ INTEGER I, IFST, ILST, INFO, INFQR, J, JW, K, KCOL,
+ $ KEND, KLN, KROW, KWTOP, LTOP, LWK1, LWK2, LWK3,
+ $ LWKOPT, NMIN
+ LOGICAL BULGE, SORTED
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ INTEGER ILAENV
+ EXTERNAL DLAMCH, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEHRD, DGEMM, DLABAD, DLACPY, DLAHQR,
+ $ DLANV2, DLAQR4, DLARF, DLARFG, DLASET, DORGHR,
+ $ DTREXC
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, INT, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* ==== Estimate optimal workspace. ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ IF( JW.LE.2 ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* ==== Workspace query call to DGEHRD ====
+*
+ CALL DGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK1 = INT( WORK( 1 ) )
+*
+* ==== Workspace query call to DORGHR ====
+*
+ CALL DORGHR( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK2 = INT( WORK( 1 ) )
+*
+* ==== Workspace query call to DLAQR4 ====
+*
+ CALL DLAQR4( .true., .true., JW, 1, JW, T, LDT, SR, SI, 1, JW,
+ $ V, LDV, WORK, -1, INFQR )
+ LWK3 = INT( WORK( 1 ) )
+*
+* ==== Optimal workspace ====
+*
+ LWKOPT = MAX( JW+MAX( LWK1, LWK2 ), LWK3 )
+ END IF
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DBLE( LWKOPT )
+ RETURN
+ END IF
+*
+* ==== Nothing to do ...
+* ... for an empty active block ... ====
+ NS = 0
+ ND = 0
+ IF( KTOP.GT.KBOT )
+ $ RETURN
+* ... nor for an empty deflation window. ====
+ IF( NW.LT.1 )
+ $ RETURN
+*
+* ==== Machine constants ====
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( N ) / ULP )
+*
+* ==== Setup deflation window ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ KWTOP = KBOT - JW + 1
+ IF( KWTOP.EQ.KTOP ) THEN
+ S = ZERO
+ ELSE
+ S = H( KWTOP, KWTOP-1 )
+ END IF
+*
+ IF( KBOT.EQ.KWTOP ) THEN
+*
+* ==== 1-by-1 deflation window: not much to do ====
+*
+ SR( KWTOP ) = H( KWTOP, KWTOP )
+ SI( KWTOP ) = ZERO
+ NS = 1
+ ND = 0
+ IF( ABS( S ).LE.MAX( SMLNUM, ULP*ABS( H( KWTOP, KWTOP ) ) ) )
+ $ THEN
+ NS = 0
+ ND = 1
+ IF( KWTOP.GT.KTOP )
+ $ H( KWTOP, KWTOP-1 ) = ZERO
+ END IF
+ RETURN
+ END IF
+*
+* ==== Convert to spike-triangular form. (In case of a
+* . rare QR failure, this routine continues to do
+* . aggressive early deflation using that part of
+* . the deflation window that converged using INFQR
+* . here and there to keep track.) ====
+*
+ CALL DLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T, LDT )
+ CALL DCOPY( JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ), LDT+1 )
+*
+ CALL DLASET( 'A', JW, JW, ZERO, ONE, V, LDV )
+ NMIN = ILAENV( 12, 'DLAQR3', 'SV', JW, 1, JW, LWORK )
+ IF( JW.GT.NMIN ) THEN
+ CALL DLAQR4( .true., .true., JW, 1, JW, T, LDT, SR( KWTOP ),
+ $ SI( KWTOP ), 1, JW, V, LDV, WORK, LWORK, INFQR )
+ ELSE
+ CALL DLAHQR( .true., .true., JW, 1, JW, T, LDT, SR( KWTOP ),
+ $ SI( KWTOP ), 1, JW, V, LDV, INFQR )
+ END IF
+*
+* ==== DTREXC needs a clean margin near the diagonal ====
+*
+ DO 10 J = 1, JW - 3
+ T( J+2, J ) = ZERO
+ T( J+3, J ) = ZERO
+ 10 CONTINUE
+ IF( JW.GT.2 )
+ $ T( JW, JW-2 ) = ZERO
+*
+* ==== Deflation detection loop ====
+*
+ NS = JW
+ ILST = INFQR + 1
+ 20 CONTINUE
+ IF( ILST.LE.NS ) THEN
+ IF( NS.EQ.1 ) THEN
+ BULGE = .FALSE.
+ ELSE
+ BULGE = T( NS, NS-1 ).NE.ZERO
+ END IF
+*
+* ==== Small spike tip test for deflation ====
+*
+ IF( .NOT.BULGE ) THEN
+*
+* ==== Real eigenvalue ====
+*
+ FOO = ABS( T( NS, NS ) )
+ IF( FOO.EQ.ZERO )
+ $ FOO = ABS( S )
+ IF( ABS( S*V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) ) THEN
+*
+* ==== Deflatable ====
+*
+ NS = NS - 1
+ ELSE
+*
+* ==== Undeflatable. Move it up out of the way.
+* . (DTREXC can not fail in this case.) ====
+*
+ IFST = NS
+ CALL DTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, WORK,
+ $ INFO )
+ ILST = ILST + 1
+ END IF
+ ELSE
+*
+* ==== Complex conjugate pair ====
+*
+ FOO = ABS( T( NS, NS ) ) + SQRT( ABS( T( NS, NS-1 ) ) )*
+ $ SQRT( ABS( T( NS-1, NS ) ) )
+ IF( FOO.EQ.ZERO )
+ $ FOO = ABS( S )
+ IF( MAX( ABS( S*V( 1, NS ) ), ABS( S*V( 1, NS-1 ) ) ).LE.
+ $ MAX( SMLNUM, ULP*FOO ) ) THEN
+*
+* ==== Deflatable ====
+*
+ NS = NS - 2
+ ELSE
+*
+* ==== Undflatable. Move them up out of the way.
+* . Fortunately, DTREXC does the right thing with
+* . ILST in case of a rare exchange failure. ====
+*
+ IFST = NS
+ CALL DTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, WORK,
+ $ INFO )
+ ILST = ILST + 2
+ END IF
+ END IF
+*
+* ==== End deflation detection loop ====
+*
+ GO TO 20
+ END IF
+*
+* ==== Return to Hessenberg form ====
+*
+ IF( NS.EQ.0 )
+ $ S = ZERO
+*
+ IF( NS.LT.JW ) THEN
+*
+* ==== sorting diagonal blocks of T improves accuracy for
+* . graded matrices. Bubble sort deals well with
+* . exchange failures. ====
+*
+ SORTED = .false.
+ I = NS + 1
+ 30 CONTINUE
+ IF( SORTED )
+ $ GO TO 50
+ SORTED = .true.
+*
+ KEND = I - 1
+ I = INFQR + 1
+ IF( I.EQ.NS ) THEN
+ K = I + 1
+ ELSE IF( T( I+1, I ).EQ.ZERO ) THEN
+ K = I + 1
+ ELSE
+ K = I + 2
+ END IF
+ 40 CONTINUE
+ IF( K.LE.KEND ) THEN
+ IF( K.EQ.I+1 ) THEN
+ EVI = ABS( T( I, I ) )
+ ELSE
+ EVI = ABS( T( I, I ) ) + SQRT( ABS( T( I+1, I ) ) )*
+ $ SQRT( ABS( T( I, I+1 ) ) )
+ END IF
+*
+ IF( K.EQ.KEND ) THEN
+ EVK = ABS( T( K, K ) )
+ ELSE IF( T( K+1, K ).EQ.ZERO ) THEN
+ EVK = ABS( T( K, K ) )
+ ELSE
+ EVK = ABS( T( K, K ) ) + SQRT( ABS( T( K+1, K ) ) )*
+ $ SQRT( ABS( T( K, K+1 ) ) )
+ END IF
+*
+ IF( EVI.GE.EVK ) THEN
+ I = K
+ ELSE
+ SORTED = .false.
+ IFST = I
+ ILST = K
+ CALL DTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, WORK,
+ $ INFO )
+ IF( INFO.EQ.0 ) THEN
+ I = ILST
+ ELSE
+ I = K
+ END IF
+ END IF
+ IF( I.EQ.KEND ) THEN
+ K = I + 1
+ ELSE IF( T( I+1, I ).EQ.ZERO ) THEN
+ K = I + 1
+ ELSE
+ K = I + 2
+ END IF
+ GO TO 40
+ END IF
+ GO TO 30
+ 50 CONTINUE
+ END IF
+*
+* ==== Restore shift/eigenvalue array from T ====
+*
+ I = JW
+ 60 CONTINUE
+ IF( I.GE.INFQR+1 ) THEN
+ IF( I.EQ.INFQR+1 ) THEN
+ SR( KWTOP+I-1 ) = T( I, I )
+ SI( KWTOP+I-1 ) = ZERO
+ I = I - 1
+ ELSE IF( T( I, I-1 ).EQ.ZERO ) THEN
+ SR( KWTOP+I-1 ) = T( I, I )
+ SI( KWTOP+I-1 ) = ZERO
+ I = I - 1
+ ELSE
+ AA = T( I-1, I-1 )
+ CC = T( I, I-1 )
+ BB = T( I-1, I )
+ DD = T( I, I )
+ CALL DLANV2( AA, BB, CC, DD, SR( KWTOP+I-2 ),
+ $ SI( KWTOP+I-2 ), SR( KWTOP+I-1 ),
+ $ SI( KWTOP+I-1 ), CS, SN )
+ I = I - 2
+ END IF
+ GO TO 60
+ END IF
+*
+ IF( NS.LT.JW .OR. S.EQ.ZERO ) THEN
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+*
+* ==== Reflect spike back into lower triangle ====
+*
+ CALL DCOPY( NS, V, LDV, WORK, 1 )
+ BETA = WORK( 1 )
+ CALL DLARFG( NS, BETA, WORK( 2 ), 1, TAU )
+ WORK( 1 ) = ONE
+*
+ CALL DLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ), LDT )
+*
+ CALL DLARF( 'L', NS, JW, WORK, 1, TAU, T, LDT,
+ $ WORK( JW+1 ) )
+ CALL DLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT,
+ $ WORK( JW+1 ) )
+ CALL DLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV,
+ $ WORK( JW+1 ) )
+*
+ CALL DGEHRD( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ END IF
+*
+* ==== Copy updated reduced window into place ====
+*
+ IF( KWTOP.GT.1 )
+ $ H( KWTOP, KWTOP-1 ) = S*V( 1, 1 )
+ CALL DLACPY( 'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH )
+ CALL DCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP ),
+ $ LDH+1 )
+*
+* ==== Accumulate orthogonal matrix in order update
+* . H and Z, if requested. (A modified version
+* . of DORGHR that accumulates block Householder
+* . transformations into V directly might be
+* . marginally more efficient than the following.) ====
+*
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+ CALL DORGHR( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ CALL DGEMM( 'N', 'N', JW, NS, NS, ONE, V, LDV, T, LDT, ZERO,
+ $ WV, LDWV )
+ CALL DLACPY( 'A', JW, NS, WV, LDWV, V, LDV )
+ END IF
+*
+* ==== Update vertical slab in H ====
+*
+ IF( WANTT ) THEN
+ LTOP = 1
+ ELSE
+ LTOP = KTOP
+ END IF
+ DO 70 KROW = LTOP, KWTOP - 1, NV
+ KLN = MIN( NV, KWTOP-KROW )
+ CALL DGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ),
+ $ LDH, V, LDV, ZERO, WV, LDWV )
+ CALL DLACPY( 'A', KLN, JW, WV, LDWV, H( KROW, KWTOP ), LDH )
+ 70 CONTINUE
+*
+* ==== Update horizontal slab in H ====
+*
+ IF( WANTT ) THEN
+ DO 80 KCOL = KBOT + 1, N, NH
+ KLN = MIN( NH, N-KCOL+1 )
+ CALL DGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV,
+ $ H( KWTOP, KCOL ), LDH, ZERO, T, LDT )
+ CALL DLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ),
+ $ LDH )
+ 80 CONTINUE
+ END IF
+*
+* ==== Update vertical slab in Z ====
+*
+ IF( WANTZ ) THEN
+ DO 90 KROW = ILOZ, IHIZ, NV
+ KLN = MIN( NV, IHIZ-KROW+1 )
+ CALL DGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ),
+ $ LDZ, V, LDV, ZERO, WV, LDWV )
+ CALL DLACPY( 'A', KLN, JW, WV, LDWV, Z( KROW, KWTOP ),
+ $ LDZ )
+ 90 CONTINUE
+ END IF
+ END IF
+*
+* ==== Return the number of deflations ... ====
+*
+ ND = JW - NS
+*
+* ==== ... and the number of shifts. (Subtracting
+* . INFQR from the spike length takes care
+* . of the case of a rare QR failure while
+* . calculating eigenvalues of the deflation
+* . window.) ====
+*
+ NS = NS - INFQR
+*
+* ==== Return optimal workspace. ====
+*
+ WORK( 1 ) = DBLE( LWKOPT )
+*
+* ==== End of DLAQR3 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqr4.f b/2.3-1/src/fortran/lapack/dlaqr4.f
new file mode 100644
index 00000000..8692e7f9
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqr4.f
@@ -0,0 +1,640 @@
+ SUBROUTINE DLAQR4( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI,
+ $ ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), WI( * ), WORK( * ), WR( * ),
+ $ Z( LDZ, * )
+* ..
+*
+* This subroutine implements one level of recursion for DLAQR0.
+* It is a complete implementation of the small bulge multi-shift
+* QR algorithm. It may be called by DLAQR0 and, for large enough
+* deflation window size, it may be called by DLAQR3. This
+* subroutine is identical to DLAQR0 except that it calls DLAQR2
+* instead of DLAQR3.
+*
+* Purpose
+* =======
+*
+* DLAQR4 computes the eigenvalues of a Hessenberg matrix H
+* and, optionally, the matrices T and Z from the Schur decomposition
+* H = Z T Z**T, where T is an upper quasi-triangular matrix (the
+* Schur form), and Z is the orthogonal matrix of Schur vectors.
+*
+* Optionally Z may be postmultiplied into an input orthogonal
+* matrix Q so that this routine can give the Schur factorization
+* of a matrix A which has been reduced to the Hessenberg form H
+* by the orthogonal matrix Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T.
+*
+* Arguments
+* =========
+*
+* WANTT (input) LOGICAL
+* = .TRUE. : the full Schur form T is required;
+* = .FALSE.: only eigenvalues are required.
+*
+* WANTZ (input) LOGICAL
+* = .TRUE. : the matrix of Schur vectors Z is required;
+* = .FALSE.: Schur vectors are not required.
+*
+* N (input) INTEGER
+* The order of the matrix H. N .GE. 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,
+* H(ILO,ILO-1) is zero. ILO and IHI are normally set by a
+* previous call to DGEBAL, and then passed to DGEHRD when the
+* matrix output by DGEBAL is reduced to Hessenberg form.
+* Otherwise, ILO and IHI should be set to 1 and N,
+* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
+* If N = 0, then ILO = 1 and IHI = 0.
+*
+* H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO = 0 and WANTT is .TRUE., then H contains
+* the upper quasi-triangular matrix T from the Schur
+* decomposition (the Schur form); 2-by-2 diagonal blocks
+* (corresponding to complex conjugate pairs of eigenvalues)
+* are returned in standard form, with H(i,i) = H(i+1,i+1)
+* and H(i+1,i)*H(i,i+1).LT.0. If INFO = 0 and WANTT is
+* .FALSE., then the contents of H are unspecified on exit.
+* (The output value of H when INFO.GT.0 is given under the
+* description of INFO below.)
+*
+* This subroutine may explicitly set H(i,j) = 0 for i.GT.j and
+* j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH .GE. max(1,N).
+*
+* WR (output) DOUBLE PRECISION array, dimension (IHI)
+* WI (output) DOUBLE PRECISION array, dimension (IHI)
+* The real and imaginary parts, respectively, of the computed
+* eigenvalues of H(ILO:IHI,ILO:IHI) are stored WR(ILO:IHI)
+* and WI(ILO:IHI). If two eigenvalues are computed as a
+* complex conjugate pair, they are stored in consecutive
+* elements of WR and WI, say the i-th and (i+1)th, with
+* WI(i) .GT. 0 and WI(i+1) .LT. 0. If WANTT is .TRUE., then
+* the eigenvalues are stored in the same order as on the
+* diagonal of the Schur form returned in H, with
+* WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2 diagonal
+* block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and
+* WI(i+1) = -WI(i).
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE..
+* 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,IHI)
+* If WANTZ is .FALSE., then Z is not referenced.
+* If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is
+* replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the
+* orthogonal Schur factor of H(ILO:IHI,ILO:IHI).
+* (The output value of Z when INFO.GT.0 is given under
+* the description of INFO below.)
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. if WANTZ is .TRUE.
+* then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension LWORK
+* On exit, if LWORK = -1, WORK(1) returns an estimate of
+* the optimal value for LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK .GE. max(1,N)
+* is sufficient, but LWORK typically as large as 6*N may
+* be required for optimal performance. A workspace query
+* to determine the optimal workspace size is recommended.
+*
+* If LWORK = -1, then DLAQR4 does a workspace query.
+* In this case, DLAQR4 checks the input parameters and
+* estimates the optimal workspace size for the given
+* values of N, ILO and IHI. The estimate is returned
+* in WORK(1). No error message related to LWORK is
+* issued by XERBLA. Neither H nor Z are accessed.
+*
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .GT. 0: if INFO = i, DLAQR4 failed to compute all of
+* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
+* and WI contain those eigenvalues which have been
+* successfully computed. (Failures are rare.)
+*
+* If INFO .GT. 0 and WANT is .FALSE., then on exit,
+* the remaining unconverged eigenvalues are the eigen-
+* values of the upper Hessenberg matrix rows and
+* columns ILO through INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and WANTT is .TRUE., then on exit
+*
+* (*) (initial value of H)*U = U*(final value of H)
+*
+* where U is an orthogonal matrix. The final
+* value of H is upper Hessenberg and quasi-triangular
+* in rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and WANTZ is .TRUE., then on exit
+*
+* (final value of Z(ILO:IHI,ILOZ:IHIZ)
+* = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
+*
+* where U is the orthogonal matrix in (*) (regard-
+* less of the value of WANTT.)
+*
+* If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
+* accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+* References:
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
+* Performance, SIAM Journal of Matrix Analysis, volume 23, pages
+* 929--947, 2002.
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part II: Aggressive Early Deflation, SIAM Journal
+* of Matrix Analysis, volume 23, pages 948--973, 2002.
+*
+* ================================================================
+* .. Parameters ..
+*
+* ==== Matrices of order NTINY or smaller must be processed by
+* . DLAHQR because of insufficient subdiagonal scratch space.
+* . (This is a hard limit.) ====
+*
+* ==== Exceptional deflation windows: try to cure rare
+* . slow convergence by increasing the size of the
+* . deflation window after KEXNW iterations. =====
+*
+* ==== Exceptional shifts: try to cure rare slow convergence
+* . with ad-hoc exceptional shifts every KEXSH iterations.
+* . The constants WILK1 and WILK2 are used to form the
+* . exceptional shifts. ====
+*
+ INTEGER NTINY
+ PARAMETER ( NTINY = 11 )
+ INTEGER KEXNW, KEXSH
+ PARAMETER ( KEXNW = 5, KEXSH = 6 )
+ DOUBLE PRECISION WILK1, WILK2
+ PARAMETER ( WILK1 = 0.75d0, WILK2 = -0.4375d0 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AA, BB, CC, CS, DD, SN, SS, SWAP
+ INTEGER I, INF, IT, ITMAX, K, KACC22, KBOT, KDU, KS,
+ $ KT, KTOP, KU, KV, KWH, KWTOP, KWV, LD, LS,
+ $ LWKOPT, NDFL, NH, NHO, NIBBLE, NMIN, NS, NSMAX,
+ $ NSR, NVE, NW, NWMAX, NWR
+ LOGICAL NWINC, SORTED
+ CHARACTER JBCMPZ*2
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION ZDUM( 1, 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACPY, DLAHQR, DLANV2, DLAQR2, DLAQR5
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, INT, MAX, MIN, MOD
+* ..
+* .. Executable Statements ..
+ INFO = 0
+*
+* ==== Quick return for N = 0: nothing to do. ====
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = ONE
+ RETURN
+ END IF
+*
+* ==== Set up job flags for ILAENV. ====
+*
+ IF( WANTT ) THEN
+ JBCMPZ( 1: 1 ) = 'S'
+ ELSE
+ JBCMPZ( 1: 1 ) = 'E'
+ END IF
+ IF( WANTZ ) THEN
+ JBCMPZ( 2: 2 ) = 'V'
+ ELSE
+ JBCMPZ( 2: 2 ) = 'N'
+ END IF
+*
+* ==== Tiny matrices must use DLAHQR. ====
+*
+ IF( N.LE.NTINY ) THEN
+*
+* ==== Estimate optimal workspace. ====
+*
+ LWKOPT = 1
+ IF( LWORK.NE.-1 )
+ $ CALL DLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI,
+ $ ILOZ, IHIZ, Z, LDZ, INFO )
+ ELSE
+*
+* ==== Use small bulge multi-shift QR with aggressive early
+* . deflation on larger-than-tiny matrices. ====
+*
+* ==== Hope for the best. ====
+*
+ INFO = 0
+*
+* ==== NWR = recommended deflation window size. At this
+* . point, N .GT. NTINY = 11, so there is enough
+* . subdiagonal workspace for NWR.GE.2 as required.
+* . (In fact, there is enough subdiagonal space for
+* . NWR.GE.3.) ====
+*
+ NWR = ILAENV( 13, 'DLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NWR = MAX( 2, NWR )
+ NWR = MIN( IHI-ILO+1, ( N-1 ) / 3, NWR )
+ NW = NWR
+*
+* ==== NSR = recommended number of simultaneous shifts.
+* . At this point N .GT. NTINY = 11, so there is at
+* . enough subdiagonal workspace for NSR to be even
+* . and greater than or equal to two as required. ====
+*
+ NSR = ILAENV( 15, 'DLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NSR = MIN( NSR, ( N+6 ) / 9, IHI-ILO )
+ NSR = MAX( 2, NSR-MOD( NSR, 2 ) )
+*
+* ==== Estimate optimal workspace ====
+*
+* ==== Workspace query call to DLAQR2 ====
+*
+ CALL DLAQR2( WANTT, WANTZ, N, ILO, IHI, NWR+1, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, WR, WI, H, LDH, N, H, LDH,
+ $ N, H, LDH, WORK, -1 )
+*
+* ==== Optimal workspace = MAX(DLAQR5, DLAQR2) ====
+*
+ LWKOPT = MAX( 3*NSR / 2, INT( WORK( 1 ) ) )
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DBLE( LWKOPT )
+ RETURN
+ END IF
+*
+* ==== DLAHQR/DLAQR0 crossover point ====
+*
+ NMIN = ILAENV( 12, 'DLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NMIN = MAX( NTINY, NMIN )
+*
+* ==== Nibble crossover point ====
+*
+ NIBBLE = ILAENV( 14, 'DLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NIBBLE = MAX( 0, NIBBLE )
+*
+* ==== Accumulate reflections during ttswp? Use block
+* . 2-by-2 structure during matrix-matrix multiply? ====
+*
+ KACC22 = ILAENV( 16, 'DLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ KACC22 = MAX( 0, KACC22 )
+ KACC22 = MIN( 2, KACC22 )
+*
+* ==== NWMAX = the largest possible deflation window for
+* . which there is sufficient workspace. ====
+*
+ NWMAX = MIN( ( N-1 ) / 3, LWORK / 2 )
+*
+* ==== NSMAX = the Largest number of simultaneous shifts
+* . for which there is sufficient workspace. ====
+*
+ NSMAX = MIN( ( N+6 ) / 9, 2*LWORK / 3 )
+ NSMAX = NSMAX - MOD( NSMAX, 2 )
+*
+* ==== NDFL: an iteration count restarted at deflation. ====
+*
+ NDFL = 1
+*
+* ==== ITMAX = iteration limit ====
+*
+ ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) )
+*
+* ==== Last row and column in the active block ====
+*
+ KBOT = IHI
+*
+* ==== Main Loop ====
+*
+ DO 80 IT = 1, ITMAX
+*
+* ==== Done when KBOT falls below ILO ====
+*
+ IF( KBOT.LT.ILO )
+ $ GO TO 90
+*
+* ==== Locate active block ====
+*
+ DO 10 K = KBOT, ILO + 1, -1
+ IF( H( K, K-1 ).EQ.ZERO )
+ $ GO TO 20
+ 10 CONTINUE
+ K = ILO
+ 20 CONTINUE
+ KTOP = K
+*
+* ==== Select deflation window size ====
+*
+ NH = KBOT - KTOP + 1
+ IF( NDFL.LT.KEXNW .OR. NH.LT.NW ) THEN
+*
+* ==== Typical deflation window. If possible and
+* . advisable, nibble the entire active block.
+* . If not, use size NWR or NWR+1 depending upon
+* . which has the smaller corresponding subdiagonal
+* . entry (a heuristic). ====
+*
+ NWINC = .TRUE.
+ IF( NH.LE.MIN( NMIN, NWMAX ) ) THEN
+ NW = NH
+ ELSE
+ NW = MIN( NWR, NH, NWMAX )
+ IF( NW.LT.NWMAX ) THEN
+ IF( NW.GE.NH-1 ) THEN
+ NW = NH
+ ELSE
+ KWTOP = KBOT - NW + 1
+ IF( ABS( H( KWTOP, KWTOP-1 ) ).GT.
+ $ ABS( H( KWTOP-1, KWTOP-2 ) ) )NW = NW + 1
+ END IF
+ END IF
+ END IF
+ ELSE
+*
+* ==== Exceptional deflation window. If there have
+* . been no deflations in KEXNW or more iterations,
+* . then vary the deflation window size. At first,
+* . because, larger windows are, in general, more
+* . powerful than smaller ones, rapidly increase the
+* . window up to the maximum reasonable and possible.
+* . Then maybe try a slightly smaller window. ====
+*
+ IF( NWINC .AND. NW.LT.MIN( NWMAX, NH ) ) THEN
+ NW = MIN( NWMAX, NH, 2*NW )
+ ELSE
+ NWINC = .FALSE.
+ IF( NW.EQ.NH .AND. NH.GT.2 )
+ $ NW = NH - 1
+ END IF
+ END IF
+*
+* ==== Aggressive early deflation:
+* . split workspace under the subdiagonal into
+* . - an nw-by-nw work array V in the lower
+* . left-hand-corner,
+* . - an NW-by-at-least-NW-but-more-is-better
+* . (NW-by-NHO) horizontal work array along
+* . the bottom edge,
+* . - an at-least-NW-but-more-is-better (NHV-by-NW)
+* . vertical work array along the left-hand-edge.
+* . ====
+*
+ KV = N - NW + 1
+ KT = NW + 1
+ NHO = ( N-NW-1 ) - KT + 1
+ KWV = NW + 2
+ NVE = ( N-NW ) - KWV + 1
+*
+* ==== Aggressive early deflation ====
+*
+ CALL DLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, WR, WI, H( KV, 1 ), LDH,
+ $ NHO, H( KV, KT ), LDH, NVE, H( KWV, 1 ), LDH,
+ $ WORK, LWORK )
+*
+* ==== Adjust KBOT accounting for new deflations. ====
+*
+ KBOT = KBOT - LD
+*
+* ==== KS points to the shifts. ====
+*
+ KS = KBOT - LS + 1
+*
+* ==== Skip an expensive QR sweep if there is a (partly
+* . heuristic) reason to expect that many eigenvalues
+* . will deflate without it. Here, the QR sweep is
+* . skipped if many eigenvalues have just been deflated
+* . or if the remaining active block is small.
+*
+ IF( ( LD.EQ.0 ) .OR. ( ( 100*LD.LE.NW*NIBBLE ) .AND. ( KBOT-
+ $ KTOP+1.GT.MIN( NMIN, NWMAX ) ) ) ) THEN
+*
+* ==== NS = nominal number of simultaneous shifts.
+* . This may be lowered (slightly) if DLAQR2
+* . did not provide that many shifts. ====
+*
+ NS = MIN( NSMAX, NSR, MAX( 2, KBOT-KTOP ) )
+ NS = NS - MOD( NS, 2 )
+*
+* ==== If there have been no deflations
+* . in a multiple of KEXSH iterations,
+* . then try exceptional shifts.
+* . Otherwise use shifts provided by
+* . DLAQR2 above or from the eigenvalues
+* . of a trailing principal submatrix. ====
+*
+ IF( MOD( NDFL, KEXSH ).EQ.0 ) THEN
+ KS = KBOT - NS + 1
+ DO 30 I = KBOT, MAX( KS+1, KTOP+2 ), -2
+ SS = ABS( H( I, I-1 ) ) + ABS( H( I-1, I-2 ) )
+ AA = WILK1*SS + H( I, I )
+ BB = SS
+ CC = WILK2*SS
+ DD = AA
+ CALL DLANV2( AA, BB, CC, DD, WR( I-1 ), WI( I-1 ),
+ $ WR( I ), WI( I ), CS, SN )
+ 30 CONTINUE
+ IF( KS.EQ.KTOP ) THEN
+ WR( KS+1 ) = H( KS+1, KS+1 )
+ WI( KS+1 ) = ZERO
+ WR( KS ) = WR( KS+1 )
+ WI( KS ) = WI( KS+1 )
+ END IF
+ ELSE
+*
+* ==== Got NS/2 or fewer shifts? Use DLAHQR
+* . on a trailing principal submatrix to
+* . get more. (Since NS.LE.NSMAX.LE.(N+6)/9,
+* . there is enough space below the subdiagonal
+* . to fit an NS-by-NS scratch array.) ====
+*
+ IF( KBOT-KS+1.LE.NS / 2 ) THEN
+ KS = KBOT - NS + 1
+ KT = N - NS + 1
+ CALL DLACPY( 'A', NS, NS, H( KS, KS ), LDH,
+ $ H( KT, 1 ), LDH )
+ CALL DLAHQR( .false., .false., NS, 1, NS,
+ $ H( KT, 1 ), LDH, WR( KS ), WI( KS ),
+ $ 1, 1, ZDUM, 1, INF )
+ KS = KS + INF
+*
+* ==== In case of a rare QR failure use
+* . eigenvalues of the trailing 2-by-2
+* . principal submatrix. ====
+*
+ IF( KS.GE.KBOT ) THEN
+ AA = H( KBOT-1, KBOT-1 )
+ CC = H( KBOT, KBOT-1 )
+ BB = H( KBOT-1, KBOT )
+ DD = H( KBOT, KBOT )
+ CALL DLANV2( AA, BB, CC, DD, WR( KBOT-1 ),
+ $ WI( KBOT-1 ), WR( KBOT ),
+ $ WI( KBOT ), CS, SN )
+ KS = KBOT - 1
+ END IF
+ END IF
+*
+ IF( KBOT-KS+1.GT.NS ) THEN
+*
+* ==== Sort the shifts (Helps a little)
+* . Bubble sort keeps complex conjugate
+* . pairs together. ====
+*
+ SORTED = .false.
+ DO 50 K = KBOT, KS + 1, -1
+ IF( SORTED )
+ $ GO TO 60
+ SORTED = .true.
+ DO 40 I = KS, K - 1
+ IF( ABS( WR( I ) )+ABS( WI( I ) ).LT.
+ $ ABS( WR( I+1 ) )+ABS( WI( I+1 ) ) ) THEN
+ SORTED = .false.
+*
+ SWAP = WR( I )
+ WR( I ) = WR( I+1 )
+ WR( I+1 ) = SWAP
+*
+ SWAP = WI( I )
+ WI( I ) = WI( I+1 )
+ WI( I+1 ) = SWAP
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+* ==== Shuffle shifts into pairs of real shifts
+* . and pairs of complex conjugate shifts
+* . assuming complex conjugate shifts are
+* . already adjacent to one another. (Yes,
+* . they are.) ====
+*
+ DO 70 I = KBOT, KS + 2, -2
+ IF( WI( I ).NE.-WI( I-1 ) ) THEN
+*
+ SWAP = WR( I )
+ WR( I ) = WR( I-1 )
+ WR( I-1 ) = WR( I-2 )
+ WR( I-2 ) = SWAP
+*
+ SWAP = WI( I )
+ WI( I ) = WI( I-1 )
+ WI( I-1 ) = WI( I-2 )
+ WI( I-2 ) = SWAP
+ END IF
+ 70 CONTINUE
+ END IF
+*
+* ==== If there are only two shifts and both are
+* . real, then use only one. ====
+*
+ IF( KBOT-KS+1.EQ.2 ) THEN
+ IF( WI( KBOT ).EQ.ZERO ) THEN
+ IF( ABS( WR( KBOT )-H( KBOT, KBOT ) ).LT.
+ $ ABS( WR( KBOT-1 )-H( KBOT, KBOT ) ) ) THEN
+ WR( KBOT-1 ) = WR( KBOT )
+ ELSE
+ WR( KBOT ) = WR( KBOT-1 )
+ END IF
+ END IF
+ END IF
+*
+* ==== Use up to NS of the the smallest magnatiude
+* . shifts. If there aren't NS shifts available,
+* . then use them all, possibly dropping one to
+* . make the number of shifts even. ====
+*
+ NS = MIN( NS, KBOT-KS+1 )
+ NS = NS - MOD( NS, 2 )
+ KS = KBOT - NS + 1
+*
+* ==== Small-bulge multi-shift QR sweep:
+* . split workspace under the subdiagonal into
+* . - a KDU-by-KDU work array U in the lower
+* . left-hand-corner,
+* . - a KDU-by-at-least-KDU-but-more-is-better
+* . (KDU-by-NHo) horizontal work array WH along
+* . the bottom edge,
+* . - and an at-least-KDU-but-more-is-better-by-KDU
+* . (NVE-by-KDU) vertical work WV arrow along
+* . the left-hand-edge. ====
+*
+ KDU = 3*NS - 3
+ KU = N - KDU + 1
+ KWH = KDU + 1
+ NHO = ( N-KDU+1-4 ) - ( KDU+1 ) + 1
+ KWV = KDU + 4
+ NVE = N - KDU - KWV + 1
+*
+* ==== Small-bulge multi-shift QR sweep ====
+*
+ CALL DLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NS,
+ $ WR( KS ), WI( KS ), H, LDH, ILOZ, IHIZ, Z,
+ $ LDZ, WORK, 3, H( KU, 1 ), LDH, NVE,
+ $ H( KWV, 1 ), LDH, NHO, H( KU, KWH ), LDH )
+ END IF
+*
+* ==== Note progress (or the lack of it). ====
+*
+ IF( LD.GT.0 ) THEN
+ NDFL = 1
+ ELSE
+ NDFL = NDFL + 1
+ END IF
+*
+* ==== End of main loop ====
+ 80 CONTINUE
+*
+* ==== Iteration limit exceeded. Set INFO to show where
+* . the problem occurred and exit. ====
+*
+ INFO = KBOT
+ 90 CONTINUE
+ END IF
+*
+* ==== Return the optimal value of LWORK. ====
+*
+ WORK( 1 ) = DBLE( LWKOPT )
+*
+* ==== End of DLAQR4 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaqr5.f b/2.3-1/src/fortran/lapack/dlaqr5.f
new file mode 100644
index 00000000..17857572
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaqr5.f
@@ -0,0 +1,812 @@
+ SUBROUTINE DLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS,
+ $ SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U,
+ $ LDU, NV, WV, LDWV, NH, WH, LDWH )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,
+ $ LDWH, LDWV, LDZ, N, NH, NSHFTS, NV
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION H( LDH, * ), SI( * ), SR( * ), U( LDU, * ),
+ $ V( LDV, * ), WH( LDWH, * ), WV( LDWV, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* This auxiliary subroutine called by DLAQR0 performs a
+* single small-bulge multi-shift QR sweep.
+*
+* WANTT (input) logical scalar
+* WANTT = .true. if the quasi-triangular Schur factor
+* is being computed. WANTT is set to .false. otherwise.
+*
+* WANTZ (input) logical scalar
+* WANTZ = .true. if the orthogonal Schur factor is being
+* computed. WANTZ is set to .false. otherwise.
+*
+* KACC22 (input) integer with value 0, 1, or 2.
+* Specifies the computation mode of far-from-diagonal
+* orthogonal updates.
+* = 0: DLAQR5 does not accumulate reflections and does not
+* use matrix-matrix multiply to update far-from-diagonal
+* matrix entries.
+* = 1: DLAQR5 accumulates reflections and uses matrix-matrix
+* multiply to update the far-from-diagonal matrix entries.
+* = 2: DLAQR5 accumulates reflections, uses matrix-matrix
+* multiply to update the far-from-diagonal matrix entries,
+* and takes advantage of 2-by-2 block structure during
+* matrix multiplies.
+*
+* N (input) integer scalar
+* N is the order of the Hessenberg matrix H upon which this
+* subroutine operates.
+*
+* KTOP (input) integer scalar
+* KBOT (input) integer scalar
+* These are the first and last rows and columns of an
+* isolated diagonal block upon which the QR sweep is to be
+* applied. It is assumed without a check that
+* either KTOP = 1 or H(KTOP,KTOP-1) = 0
+* and
+* either KBOT = N or H(KBOT+1,KBOT) = 0.
+*
+* NSHFTS (input) integer scalar
+* NSHFTS gives the number of simultaneous shifts. NSHFTS
+* must be positive and even.
+*
+* SR (input) DOUBLE PRECISION array of size (NSHFTS)
+* SI (input) DOUBLE PRECISION array of size (NSHFTS)
+* SR contains the real parts and SI contains the imaginary
+* parts of the NSHFTS shifts of origin that define the
+* multi-shift QR sweep.
+*
+* H (input/output) DOUBLE PRECISION array of size (LDH,N)
+* On input H contains a Hessenberg matrix. On output a
+* multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied
+* to the isolated diagonal block in rows and columns KTOP
+* through KBOT.
+*
+* LDH (input) integer scalar
+* LDH is the leading dimension of H just as declared in the
+* calling procedure. LDH.GE.MAX(1,N).
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N
+*
+* Z (input/output) DOUBLE PRECISION array of size (LDZ,IHI)
+* If WANTZ = .TRUE., then the QR Sweep orthogonal
+* similarity transformation is accumulated into
+* Z(ILOZ:IHIZ,ILO:IHI) from the right.
+* If WANTZ = .FALSE., then Z is unreferenced.
+*
+* LDZ (input) integer scalar
+* LDA is the leading dimension of Z just as declared in
+* the calling procedure. LDZ.GE.N.
+*
+* V (workspace) DOUBLE PRECISION array of size (LDV,NSHFTS/2)
+*
+* LDV (input) integer scalar
+* LDV is the leading dimension of V as declared in the
+* calling procedure. LDV.GE.3.
+*
+* U (workspace) DOUBLE PRECISION array of size
+* (LDU,3*NSHFTS-3)
+*
+* LDU (input) integer scalar
+* LDU is the leading dimension of U just as declared in the
+* in the calling subroutine. LDU.GE.3*NSHFTS-3.
+*
+* NH (input) integer scalar
+* NH is the number of columns in array WH available for
+* workspace. NH.GE.1.
+*
+* WH (workspace) DOUBLE PRECISION array of size (LDWH,NH)
+*
+* LDWH (input) integer scalar
+* Leading dimension of WH just as declared in the
+* calling procedure. LDWH.GE.3*NSHFTS-3.
+*
+* NV (input) integer scalar
+* NV is the number of rows in WV agailable for workspace.
+* NV.GE.1.
+*
+* WV (workspace) DOUBLE PRECISION array of size
+* (LDWV,3*NSHFTS-3)
+*
+* LDWV (input) integer scalar
+* LDWV is the leading dimension of WV as declared in the
+* in the calling subroutine. LDWV.GE.NV.
+*
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ============================================================
+* Reference:
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and
+* Level 3 Performance, SIAM Journal of Matrix Analysis,
+* volume 23, pages 929--947, 2002.
+*
+* ============================================================
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION ALPHA, BETA, H11, H12, H21, H22, REFSUM,
+ $ SAFMAX, SAFMIN, SCL, SMLNUM, SWAP, TST1, TST2,
+ $ ULP
+ INTEGER I, I2, I4, INCOL, J, J2, J4, JBOT, JCOL, JLEN,
+ $ JROW, JTOP, K, K1, KDU, KMS, KNZ, KRCOL, KZS,
+ $ M, M22, MBOT, MEND, MSTART, MTOP, NBMPS, NDCOL,
+ $ NS, NU
+ LOGICAL ACCUM, BLK22, BMP22
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+*
+ INTRINSIC ABS, DBLE, MAX, MIN, MOD
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION VT( 3 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DLABAD, DLACPY, DLAQR1, DLARFG, DLASET,
+ $ DTRMM
+* ..
+* .. Executable Statements ..
+*
+* ==== If there are no shifts, then there is nothing to do. ====
+*
+ IF( NSHFTS.LT.2 )
+ $ RETURN
+*
+* ==== If the active block is empty or 1-by-1, then there
+* . is nothing to do. ====
+*
+ IF( KTOP.GE.KBOT )
+ $ RETURN
+*
+* ==== Shuffle shifts into pairs of real shifts and pairs
+* . of complex conjugate shifts assuming complex
+* . conjugate shifts are already adjacent to one
+* . another. ====
+*
+ DO 10 I = 1, NSHFTS - 2, 2
+ IF( SI( I ).NE.-SI( I+1 ) ) THEN
+*
+ SWAP = SR( I )
+ SR( I ) = SR( I+1 )
+ SR( I+1 ) = SR( I+2 )
+ SR( I+2 ) = SWAP
+*
+ SWAP = SI( I )
+ SI( I ) = SI( I+1 )
+ SI( I+1 ) = SI( I+2 )
+ SI( I+2 ) = SWAP
+ END IF
+ 10 CONTINUE
+*
+* ==== NSHFTS is supposed to be even, but if is odd,
+* . then simply reduce it by one. The shuffle above
+* . ensures that the dropped shift is real and that
+* . the remaining shifts are paired. ====
+*
+ NS = NSHFTS - MOD( NSHFTS, 2 )
+*
+* ==== Machine constants for deflation ====
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( N ) / ULP )
+*
+* ==== Use accumulated reflections to update far-from-diagonal
+* . entries ? ====
+*
+ ACCUM = ( KACC22.EQ.1 ) .OR. ( KACC22.EQ.2 )
+*
+* ==== If so, exploit the 2-by-2 block structure? ====
+*
+ BLK22 = ( NS.GT.2 ) .AND. ( KACC22.EQ.2 )
+*
+* ==== clear trash ====
+*
+ IF( KTOP+2.LE.KBOT )
+ $ H( KTOP+2, KTOP ) = ZERO
+*
+* ==== NBMPS = number of 2-shift bulges in the chain ====
+*
+ NBMPS = NS / 2
+*
+* ==== KDU = width of slab ====
+*
+ KDU = 6*NBMPS - 3
+*
+* ==== Create and chase chains of NBMPS bulges ====
+*
+ DO 220 INCOL = 3*( 1-NBMPS ) + KTOP - 1, KBOT - 2, 3*NBMPS - 2
+ NDCOL = INCOL + KDU
+ IF( ACCUM )
+ $ CALL DLASET( 'ALL', KDU, KDU, ZERO, ONE, U, LDU )
+*
+* ==== Near-the-diagonal bulge chase. The following loop
+* . performs the near-the-diagonal part of a small bulge
+* . multi-shift QR sweep. Each 6*NBMPS-2 column diagonal
+* . chunk extends from column INCOL to column NDCOL
+* . (including both column INCOL and column NDCOL). The
+* . following loop chases a 3*NBMPS column long chain of
+* . NBMPS bulges 3*NBMPS-2 columns to the right. (INCOL
+* . may be less than KTOP and and NDCOL may be greater than
+* . KBOT indicating phantom columns from which to chase
+* . bulges before they are actually introduced or to which
+* . to chase bulges beyond column KBOT.) ====
+*
+ DO 150 KRCOL = INCOL, MIN( INCOL+3*NBMPS-3, KBOT-2 )
+*
+* ==== Bulges number MTOP to MBOT are active double implicit
+* . shift bulges. There may or may not also be small
+* . 2-by-2 bulge, if there is room. The inactive bulges
+* . (if any) must wait until the active bulges have moved
+* . down the diagonal to make room. The phantom matrix
+* . paradigm described above helps keep track. ====
+*
+ MTOP = MAX( 1, ( ( KTOP-1 )-KRCOL+2 ) / 3+1 )
+ MBOT = MIN( NBMPS, ( KBOT-KRCOL ) / 3 )
+ M22 = MBOT + 1
+ BMP22 = ( MBOT.LT.NBMPS ) .AND. ( KRCOL+3*( M22-1 ) ).EQ.
+ $ ( KBOT-2 )
+*
+* ==== Generate reflections to chase the chain right
+* . one column. (The minimum value of K is KTOP-1.) ====
+*
+ DO 20 M = MTOP, MBOT
+ K = KRCOL + 3*( M-1 )
+ IF( K.EQ.KTOP-1 ) THEN
+ CALL DLAQR1( 3, H( KTOP, KTOP ), LDH, SR( 2*M-1 ),
+ $ SI( 2*M-1 ), SR( 2*M ), SI( 2*M ),
+ $ V( 1, M ) )
+ ALPHA = V( 1, M )
+ CALL DLARFG( 3, ALPHA, V( 2, M ), 1, V( 1, M ) )
+ ELSE
+ BETA = H( K+1, K )
+ V( 2, M ) = H( K+2, K )
+ V( 3, M ) = H( K+3, K )
+ CALL DLARFG( 3, BETA, V( 2, M ), 1, V( 1, M ) )
+*
+* ==== A Bulge may collapse because of vigilant
+* . deflation or destructive underflow. (The
+* . initial bulge is always collapsed.) Use
+* . the two-small-subdiagonals trick to try
+* . to get it started again. If V(2,M).NE.0 and
+* . V(3,M) = H(K+3,K+1) = H(K+3,K+2) = 0, then
+* . this bulge is collapsing into a zero
+* . subdiagonal. It will be restarted next
+* . trip through the loop.)
+*
+ IF( V( 1, M ).NE.ZERO .AND.
+ $ ( V( 3, M ).NE.ZERO .OR. ( H( K+3,
+ $ K+1 ).EQ.ZERO .AND. H( K+3, K+2 ).EQ.ZERO ) ) )
+ $ THEN
+*
+* ==== Typical case: not collapsed (yet). ====
+*
+ H( K+1, K ) = BETA
+ H( K+2, K ) = ZERO
+ H( K+3, K ) = ZERO
+ ELSE
+*
+* ==== Atypical case: collapsed. Attempt to
+* . reintroduce ignoring H(K+1,K). If the
+* . fill resulting from the new reflector
+* . is too large, then abandon it.
+* . Otherwise, use the new one. ====
+*
+ CALL DLAQR1( 3, H( K+1, K+1 ), LDH, SR( 2*M-1 ),
+ $ SI( 2*M-1 ), SR( 2*M ), SI( 2*M ),
+ $ VT )
+ SCL = ABS( VT( 1 ) ) + ABS( VT( 2 ) ) +
+ $ ABS( VT( 3 ) )
+ IF( SCL.NE.ZERO ) THEN
+ VT( 1 ) = VT( 1 ) / SCL
+ VT( 2 ) = VT( 2 ) / SCL
+ VT( 3 ) = VT( 3 ) / SCL
+ END IF
+*
+* ==== The following is the traditional and
+* . conservative two-small-subdiagonals
+* . test. ====
+* .
+ IF( ABS( H( K+1, K ) )*( ABS( VT( 2 ) )+
+ $ ABS( VT( 3 ) ) ).GT.ULP*ABS( VT( 1 ) )*
+ $ ( ABS( H( K, K ) )+ABS( H( K+1,
+ $ K+1 ) )+ABS( H( K+2, K+2 ) ) ) ) THEN
+*
+* ==== Starting a new bulge here would
+* . create non-negligible fill. If
+* . the old reflector is diagonal (only
+* . possible with underflows), then
+* . change it to I. Otherwise, use
+* . it with trepidation. ====
+*
+ IF( V( 2, M ).EQ.ZERO .AND. V( 3, M ).EQ.ZERO )
+ $ THEN
+ V( 1, M ) = ZERO
+ ELSE
+ H( K+1, K ) = BETA
+ H( K+2, K ) = ZERO
+ H( K+3, K ) = ZERO
+ END IF
+ ELSE
+*
+* ==== Stating a new bulge here would
+* . create only negligible fill.
+* . Replace the old reflector with
+* . the new one. ====
+*
+ ALPHA = VT( 1 )
+ CALL DLARFG( 3, ALPHA, VT( 2 ), 1, VT( 1 ) )
+ REFSUM = H( K+1, K ) + H( K+2, K )*VT( 2 ) +
+ $ H( K+3, K )*VT( 3 )
+ H( K+1, K ) = H( K+1, K ) - VT( 1 )*REFSUM
+ H( K+2, K ) = ZERO
+ H( K+3, K ) = ZERO
+ V( 1, M ) = VT( 1 )
+ V( 2, M ) = VT( 2 )
+ V( 3, M ) = VT( 3 )
+ END IF
+ END IF
+ END IF
+ 20 CONTINUE
+*
+* ==== Generate a 2-by-2 reflection, if needed. ====
+*
+ K = KRCOL + 3*( M22-1 )
+ IF( BMP22 ) THEN
+ IF( K.EQ.KTOP-1 ) THEN
+ CALL DLAQR1( 2, H( K+1, K+1 ), LDH, SR( 2*M22-1 ),
+ $ SI( 2*M22-1 ), SR( 2*M22 ), SI( 2*M22 ),
+ $ V( 1, M22 ) )
+ BETA = V( 1, M22 )
+ CALL DLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) )
+ ELSE
+ BETA = H( K+1, K )
+ V( 2, M22 ) = H( K+2, K )
+ CALL DLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) )
+ H( K+1, K ) = BETA
+ H( K+2, K ) = ZERO
+ END IF
+ ELSE
+*
+* ==== Initialize V(1,M22) here to avoid possible undefined
+* . variable problems later. ====
+*
+ V( 1, M22 ) = ZERO
+ END IF
+*
+* ==== Multiply H by reflections from the left ====
+*
+ IF( ACCUM ) THEN
+ JBOT = MIN( NDCOL, KBOT )
+ ELSE IF( WANTT ) THEN
+ JBOT = N
+ ELSE
+ JBOT = KBOT
+ END IF
+ DO 40 J = MAX( KTOP, KRCOL ), JBOT
+ MEND = MIN( MBOT, ( J-KRCOL+2 ) / 3 )
+ DO 30 M = MTOP, MEND
+ K = KRCOL + 3*( M-1 )
+ REFSUM = V( 1, M )*( H( K+1, J )+V( 2, M )*
+ $ H( K+2, J )+V( 3, M )*H( K+3, J ) )
+ H( K+1, J ) = H( K+1, J ) - REFSUM
+ H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M )
+ H( K+3, J ) = H( K+3, J ) - REFSUM*V( 3, M )
+ 30 CONTINUE
+ 40 CONTINUE
+ IF( BMP22 ) THEN
+ K = KRCOL + 3*( M22-1 )
+ DO 50 J = MAX( K+1, KTOP ), JBOT
+ REFSUM = V( 1, M22 )*( H( K+1, J )+V( 2, M22 )*
+ $ H( K+2, J ) )
+ H( K+1, J ) = H( K+1, J ) - REFSUM
+ H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M22 )
+ 50 CONTINUE
+ END IF
+*
+* ==== Multiply H by reflections from the right.
+* . Delay filling in the last row until the
+* . vigilant deflation check is complete. ====
+*
+ IF( ACCUM ) THEN
+ JTOP = MAX( KTOP, INCOL )
+ ELSE IF( WANTT ) THEN
+ JTOP = 1
+ ELSE
+ JTOP = KTOP
+ END IF
+ DO 90 M = MTOP, MBOT
+ IF( V( 1, M ).NE.ZERO ) THEN
+ K = KRCOL + 3*( M-1 )
+ DO 60 J = JTOP, MIN( KBOT, K+3 )
+ REFSUM = V( 1, M )*( H( J, K+1 )+V( 2, M )*
+ $ H( J, K+2 )+V( 3, M )*H( J, K+3 ) )
+ H( J, K+1 ) = H( J, K+1 ) - REFSUM
+ H( J, K+2 ) = H( J, K+2 ) - REFSUM*V( 2, M )
+ H( J, K+3 ) = H( J, K+3 ) - REFSUM*V( 3, M )
+ 60 CONTINUE
+*
+ IF( ACCUM ) THEN
+*
+* ==== Accumulate U. (If necessary, update Z later
+* . with with an efficient matrix-matrix
+* . multiply.) ====
+*
+ KMS = K - INCOL
+ DO 70 J = MAX( 1, KTOP-INCOL ), KDU
+ REFSUM = V( 1, M )*( U( J, KMS+1 )+V( 2, M )*
+ $ U( J, KMS+2 )+V( 3, M )*U( J, KMS+3 ) )
+ U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
+ U( J, KMS+2 ) = U( J, KMS+2 ) - REFSUM*V( 2, M )
+ U( J, KMS+3 ) = U( J, KMS+3 ) - REFSUM*V( 3, M )
+ 70 CONTINUE
+ ELSE IF( WANTZ ) THEN
+*
+* ==== U is not accumulated, so update Z
+* . now by multiplying by reflections
+* . from the right. ====
+*
+ DO 80 J = ILOZ, IHIZ
+ REFSUM = V( 1, M )*( Z( J, K+1 )+V( 2, M )*
+ $ Z( J, K+2 )+V( 3, M )*Z( J, K+3 ) )
+ Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
+ Z( J, K+2 ) = Z( J, K+2 ) - REFSUM*V( 2, M )
+ Z( J, K+3 ) = Z( J, K+3 ) - REFSUM*V( 3, M )
+ 80 CONTINUE
+ END IF
+ END IF
+ 90 CONTINUE
+*
+* ==== Special case: 2-by-2 reflection (if needed) ====
+*
+ K = KRCOL + 3*( M22-1 )
+ IF( BMP22 .AND. ( V( 1, M22 ).NE.ZERO ) ) THEN
+ DO 100 J = JTOP, MIN( KBOT, K+3 )
+ REFSUM = V( 1, M22 )*( H( J, K+1 )+V( 2, M22 )*
+ $ H( J, K+2 ) )
+ H( J, K+1 ) = H( J, K+1 ) - REFSUM
+ H( J, K+2 ) = H( J, K+2 ) - REFSUM*V( 2, M22 )
+ 100 CONTINUE
+*
+ IF( ACCUM ) THEN
+ KMS = K - INCOL
+ DO 110 J = MAX( 1, KTOP-INCOL ), KDU
+ REFSUM = V( 1, M22 )*( U( J, KMS+1 )+V( 2, M22 )*
+ $ U( J, KMS+2 ) )
+ U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
+ U( J, KMS+2 ) = U( J, KMS+2 ) - REFSUM*V( 2, M22 )
+ 110 CONTINUE
+ ELSE IF( WANTZ ) THEN
+ DO 120 J = ILOZ, IHIZ
+ REFSUM = V( 1, M22 )*( Z( J, K+1 )+V( 2, M22 )*
+ $ Z( J, K+2 ) )
+ Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
+ Z( J, K+2 ) = Z( J, K+2 ) - REFSUM*V( 2, M22 )
+ 120 CONTINUE
+ END IF
+ END IF
+*
+* ==== Vigilant deflation check ====
+*
+ MSTART = MTOP
+ IF( KRCOL+3*( MSTART-1 ).LT.KTOP )
+ $ MSTART = MSTART + 1
+ MEND = MBOT
+ IF( BMP22 )
+ $ MEND = MEND + 1
+ IF( KRCOL.EQ.KBOT-2 )
+ $ MEND = MEND + 1
+ DO 130 M = MSTART, MEND
+ K = MIN( KBOT-1, KRCOL+3*( M-1 ) )
+*
+* ==== The following convergence test requires that
+* . the tradition small-compared-to-nearby-diagonals
+* . criterion and the Ahues & Tisseur (LAWN 122, 1997)
+* . criteria both be satisfied. The latter improves
+* . accuracy in some examples. Falling back on an
+* . alternate convergence criterion when TST1 or TST2
+* . is zero (as done here) is traditional but probably
+* . unnecessary. ====
+*
+ IF( H( K+1, K ).NE.ZERO ) THEN
+ TST1 = ABS( H( K, K ) ) + ABS( H( K+1, K+1 ) )
+ IF( TST1.EQ.ZERO ) THEN
+ IF( K.GE.KTOP+1 )
+ $ TST1 = TST1 + ABS( H( K, K-1 ) )
+ IF( K.GE.KTOP+2 )
+ $ TST1 = TST1 + ABS( H( K, K-2 ) )
+ IF( K.GE.KTOP+3 )
+ $ TST1 = TST1 + ABS( H( K, K-3 ) )
+ IF( K.LE.KBOT-2 )
+ $ TST1 = TST1 + ABS( H( K+2, K+1 ) )
+ IF( K.LE.KBOT-3 )
+ $ TST1 = TST1 + ABS( H( K+3, K+1 ) )
+ IF( K.LE.KBOT-4 )
+ $ TST1 = TST1 + ABS( H( K+4, K+1 ) )
+ END IF
+ IF( ABS( H( K+1, K ) ).LE.MAX( SMLNUM, ULP*TST1 ) )
+ $ THEN
+ H12 = MAX( ABS( H( K+1, K ) ), ABS( H( K, K+1 ) ) )
+ H21 = MIN( ABS( H( K+1, K ) ), ABS( H( K, K+1 ) ) )
+ H11 = MAX( ABS( H( K+1, K+1 ) ),
+ $ ABS( H( K, K )-H( K+1, K+1 ) ) )
+ H22 = MIN( ABS( H( K+1, K+1 ) ),
+ $ ABS( H( K, K )-H( K+1, K+1 ) ) )
+ SCL = H11 + H12
+ TST2 = H22*( H11 / SCL )
+*
+ IF( TST2.EQ.ZERO .OR. H21*( H12 / SCL ).LE.
+ $ MAX( SMLNUM, ULP*TST2 ) )H( K+1, K ) = ZERO
+ END IF
+ END IF
+ 130 CONTINUE
+*
+* ==== Fill in the last row of each bulge. ====
+*
+ MEND = MIN( NBMPS, ( KBOT-KRCOL-1 ) / 3 )
+ DO 140 M = MTOP, MEND
+ K = KRCOL + 3*( M-1 )
+ REFSUM = V( 1, M )*V( 3, M )*H( K+4, K+3 )
+ H( K+4, K+1 ) = -REFSUM
+ H( K+4, K+2 ) = -REFSUM*V( 2, M )
+ H( K+4, K+3 ) = H( K+4, K+3 ) - REFSUM*V( 3, M )
+ 140 CONTINUE
+*
+* ==== End of near-the-diagonal bulge chase. ====
+*
+ 150 CONTINUE
+*
+* ==== Use U (if accumulated) to update far-from-diagonal
+* . entries in H. If required, use U to update Z as
+* . well. ====
+*
+ IF( ACCUM ) THEN
+ IF( WANTT ) THEN
+ JTOP = 1
+ JBOT = N
+ ELSE
+ JTOP = KTOP
+ JBOT = KBOT
+ END IF
+ IF( ( .NOT.BLK22 ) .OR. ( INCOL.LT.KTOP ) .OR.
+ $ ( NDCOL.GT.KBOT ) .OR. ( NS.LE.2 ) ) THEN
+*
+* ==== Updates not exploiting the 2-by-2 block
+* . structure of U. K1 and NU keep track of
+* . the location and size of U in the special
+* . cases of introducing bulges and chasing
+* . bulges off the bottom. In these special
+* . cases and in case the number of shifts
+* . is NS = 2, there is no 2-by-2 block
+* . structure to exploit. ====
+*
+ K1 = MAX( 1, KTOP-INCOL )
+ NU = ( KDU-MAX( 0, NDCOL-KBOT ) ) - K1 + 1
+*
+* ==== Horizontal Multiply ====
+*
+ DO 160 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH
+ JLEN = MIN( NH, JBOT-JCOL+1 )
+ CALL DGEMM( 'C', 'N', NU, JLEN, NU, ONE, U( K1, K1 ),
+ $ LDU, H( INCOL+K1, JCOL ), LDH, ZERO, WH,
+ $ LDWH )
+ CALL DLACPY( 'ALL', NU, JLEN, WH, LDWH,
+ $ H( INCOL+K1, JCOL ), LDH )
+ 160 CONTINUE
+*
+* ==== Vertical multiply ====
+*
+ DO 170 JROW = JTOP, MAX( KTOP, INCOL ) - 1, NV
+ JLEN = MIN( NV, MAX( KTOP, INCOL )-JROW )
+ CALL DGEMM( 'N', 'N', JLEN, NU, NU, ONE,
+ $ H( JROW, INCOL+K1 ), LDH, U( K1, K1 ),
+ $ LDU, ZERO, WV, LDWV )
+ CALL DLACPY( 'ALL', JLEN, NU, WV, LDWV,
+ $ H( JROW, INCOL+K1 ), LDH )
+ 170 CONTINUE
+*
+* ==== Z multiply (also vertical) ====
+*
+ IF( WANTZ ) THEN
+ DO 180 JROW = ILOZ, IHIZ, NV
+ JLEN = MIN( NV, IHIZ-JROW+1 )
+ CALL DGEMM( 'N', 'N', JLEN, NU, NU, ONE,
+ $ Z( JROW, INCOL+K1 ), LDZ, U( K1, K1 ),
+ $ LDU, ZERO, WV, LDWV )
+ CALL DLACPY( 'ALL', JLEN, NU, WV, LDWV,
+ $ Z( JROW, INCOL+K1 ), LDZ )
+ 180 CONTINUE
+ END IF
+ ELSE
+*
+* ==== Updates exploiting U's 2-by-2 block structure.
+* . (I2, I4, J2, J4 are the last rows and columns
+* . of the blocks.) ====
+*
+ I2 = ( KDU+1 ) / 2
+ I4 = KDU
+ J2 = I4 - I2
+ J4 = KDU
+*
+* ==== KZS and KNZ deal with the band of zeros
+* . along the diagonal of one of the triangular
+* . blocks. ====
+*
+ KZS = ( J4-J2 ) - ( NS+1 )
+ KNZ = NS + 1
+*
+* ==== Horizontal multiply ====
+*
+ DO 190 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH
+ JLEN = MIN( NH, JBOT-JCOL+1 )
+*
+* ==== Copy bottom of H to top+KZS of scratch ====
+* (The first KZS rows get multiplied by zero.) ====
+*
+ CALL DLACPY( 'ALL', KNZ, JLEN, H( INCOL+1+J2, JCOL ),
+ $ LDH, WH( KZS+1, 1 ), LDWH )
+*
+* ==== Multiply by U21' ====
+*
+ CALL DLASET( 'ALL', KZS, JLEN, ZERO, ZERO, WH, LDWH )
+ CALL DTRMM( 'L', 'U', 'C', 'N', KNZ, JLEN, ONE,
+ $ U( J2+1, 1+KZS ), LDU, WH( KZS+1, 1 ),
+ $ LDWH )
+*
+* ==== Multiply top of H by U11' ====
+*
+ CALL DGEMM( 'C', 'N', I2, JLEN, J2, ONE, U, LDU,
+ $ H( INCOL+1, JCOL ), LDH, ONE, WH, LDWH )
+*
+* ==== Copy top of H bottom of WH ====
+*
+ CALL DLACPY( 'ALL', J2, JLEN, H( INCOL+1, JCOL ), LDH,
+ $ WH( I2+1, 1 ), LDWH )
+*
+* ==== Multiply by U21' ====
+*
+ CALL DTRMM( 'L', 'L', 'C', 'N', J2, JLEN, ONE,
+ $ U( 1, I2+1 ), LDU, WH( I2+1, 1 ), LDWH )
+*
+* ==== Multiply by U22 ====
+*
+ CALL DGEMM( 'C', 'N', I4-I2, JLEN, J4-J2, ONE,
+ $ U( J2+1, I2+1 ), LDU,
+ $ H( INCOL+1+J2, JCOL ), LDH, ONE,
+ $ WH( I2+1, 1 ), LDWH )
+*
+* ==== Copy it back ====
+*
+ CALL DLACPY( 'ALL', KDU, JLEN, WH, LDWH,
+ $ H( INCOL+1, JCOL ), LDH )
+ 190 CONTINUE
+*
+* ==== Vertical multiply ====
+*
+ DO 200 JROW = JTOP, MAX( INCOL, KTOP ) - 1, NV
+ JLEN = MIN( NV, MAX( INCOL, KTOP )-JROW )
+*
+* ==== Copy right of H to scratch (the first KZS
+* . columns get multiplied by zero) ====
+*
+ CALL DLACPY( 'ALL', JLEN, KNZ, H( JROW, INCOL+1+J2 ),
+ $ LDH, WV( 1, 1+KZS ), LDWV )
+*
+* ==== Multiply by U21 ====
+*
+ CALL DLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV, LDWV )
+ CALL DTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE,
+ $ U( J2+1, 1+KZS ), LDU, WV( 1, 1+KZS ),
+ $ LDWV )
+*
+* ==== Multiply by U11 ====
+*
+ CALL DGEMM( 'N', 'N', JLEN, I2, J2, ONE,
+ $ H( JROW, INCOL+1 ), LDH, U, LDU, ONE, WV,
+ $ LDWV )
+*
+* ==== Copy left of H to right of scratch ====
+*
+ CALL DLACPY( 'ALL', JLEN, J2, H( JROW, INCOL+1 ), LDH,
+ $ WV( 1, 1+I2 ), LDWV )
+*
+* ==== Multiply by U21 ====
+*
+ CALL DTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE,
+ $ U( 1, I2+1 ), LDU, WV( 1, 1+I2 ), LDWV )
+*
+* ==== Multiply by U22 ====
+*
+ CALL DGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE,
+ $ H( JROW, INCOL+1+J2 ), LDH,
+ $ U( J2+1, I2+1 ), LDU, ONE, WV( 1, 1+I2 ),
+ $ LDWV )
+*
+* ==== Copy it back ====
+*
+ CALL DLACPY( 'ALL', JLEN, KDU, WV, LDWV,
+ $ H( JROW, INCOL+1 ), LDH )
+ 200 CONTINUE
+*
+* ==== Multiply Z (also vertical) ====
+*
+ IF( WANTZ ) THEN
+ DO 210 JROW = ILOZ, IHIZ, NV
+ JLEN = MIN( NV, IHIZ-JROW+1 )
+*
+* ==== Copy right of Z to left of scratch (first
+* . KZS columns get multiplied by zero) ====
+*
+ CALL DLACPY( 'ALL', JLEN, KNZ,
+ $ Z( JROW, INCOL+1+J2 ), LDZ,
+ $ WV( 1, 1+KZS ), LDWV )
+*
+* ==== Multiply by U12 ====
+*
+ CALL DLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV,
+ $ LDWV )
+ CALL DTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE,
+ $ U( J2+1, 1+KZS ), LDU, WV( 1, 1+KZS ),
+ $ LDWV )
+*
+* ==== Multiply by U11 ====
+*
+ CALL DGEMM( 'N', 'N', JLEN, I2, J2, ONE,
+ $ Z( JROW, INCOL+1 ), LDZ, U, LDU, ONE,
+ $ WV, LDWV )
+*
+* ==== Copy left of Z to right of scratch ====
+*
+ CALL DLACPY( 'ALL', JLEN, J2, Z( JROW, INCOL+1 ),
+ $ LDZ, WV( 1, 1+I2 ), LDWV )
+*
+* ==== Multiply by U21 ====
+*
+ CALL DTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE,
+ $ U( 1, I2+1 ), LDU, WV( 1, 1+I2 ),
+ $ LDWV )
+*
+* ==== Multiply by U22 ====
+*
+ CALL DGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE,
+ $ Z( JROW, INCOL+1+J2 ), LDZ,
+ $ U( J2+1, I2+1 ), LDU, ONE,
+ $ WV( 1, 1+I2 ), LDWV )
+*
+* ==== Copy the result back to Z ====
+*
+ CALL DLACPY( 'ALL', JLEN, KDU, WV, LDWV,
+ $ Z( JROW, INCOL+1 ), LDZ )
+ 210 CONTINUE
+ END IF
+ END IF
+ END IF
+ 220 CONTINUE
+*
+* ==== End of DLAQR5 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarf.f b/2.3-1/src/fortran/lapack/dlarf.f
new file mode 100644
index 00000000..22edc899
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarf.f
@@ -0,0 +1,115 @@
+ SUBROUTINE DLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER INCV, LDC, M, N
+ DOUBLE PRECISION TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARF applies a real elementary reflector H to a real m by n matrix
+* C, from either the left or the right. H is represented in the form
+*
+* H = I - tau * v * v'
+*
+* where tau is a real scalar and v is a real vector.
+*
+* If tau = 0, then H is taken to be the unit matrix.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form H * C
+* = 'R': form C * H
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* V (input) DOUBLE PRECISION array, dimension
+* (1 + (M-1)*abs(INCV)) if SIDE = 'L'
+* or (1 + (N-1)*abs(INCV)) if SIDE = 'R'
+* The vector v in the representation of H. V is not used if
+* TAU = 0.
+*
+* INCV (input) INTEGER
+* The increment between elements of v. INCV <> 0.
+*
+* TAU (input) DOUBLE PRECISION
+* The value tau in the representation of H.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+* or C * H if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L'
+* or (M) if SIDE = 'R'
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DGER
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w := C' * v
+*
+ CALL DGEMV( 'Transpose', M, N, ONE, C, LDC, V, INCV, ZERO,
+ $ WORK, 1 )
+*
+* C := C - v * w'
+*
+ CALL DGER( M, N, -TAU, V, INCV, WORK, 1, C, LDC )
+ END IF
+ ELSE
+*
+* Form C * H
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w := C * v
+*
+ CALL DGEMV( 'No transpose', M, N, ONE, C, LDC, V, INCV,
+ $ ZERO, WORK, 1 )
+*
+* C := C - w * v'
+*
+ CALL DGER( M, N, -TAU, WORK, 1, V, INCV, C, LDC )
+ END IF
+ END IF
+ RETURN
+*
+* End of DLARF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarfb.f b/2.3-1/src/fortran/lapack/dlarfb.f
new file mode 100644
index 00000000..d4422473
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarfb.f
@@ -0,0 +1,587 @@
+ SUBROUTINE DLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV,
+ $ T, LDT, C, LDC, WORK, LDWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, SIDE, STOREV, TRANS
+ INTEGER K, LDC, LDT, LDV, LDWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( LDC, * ), T( LDT, * ), V( LDV, * ),
+ $ WORK( LDWORK, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARFB applies a real block reflector H or its transpose H' to a
+* real m by n matrix C, from either the left or the right.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply H or H' from the Left
+* = 'R': apply H or H' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply H (No transpose)
+* = 'T': apply H' (Transpose)
+*
+* DIRECT (input) CHARACTER*1
+* Indicates how H is formed from a product of elementary
+* reflectors
+* = 'F': H = H(1) H(2) . . . H(k) (Forward)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Indicates how the vectors which define the elementary
+* reflectors are stored:
+* = 'C': Columnwise
+* = 'R': Rowwise
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* K (input) INTEGER
+* The order of the matrix T (= the number of elementary
+* reflectors whose product defines the block reflector).
+*
+* V (input) DOUBLE PRECISION array, dimension
+* (LDV,K) if STOREV = 'C'
+* (LDV,M) if STOREV = 'R' and SIDE = 'L'
+* (LDV,N) if STOREV = 'R' and SIDE = 'R'
+* The matrix V. See further details.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
+* if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
+* if STOREV = 'R', LDV >= K.
+*
+* T (input) DOUBLE PRECISION array, dimension (LDT,K)
+* The triangular k by k matrix T in the representation of the
+* block reflector.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by H*C or H'*C or C*H or C*H'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDA >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (LDWORK,K)
+*
+* LDWORK (input) INTEGER
+* The leading dimension of the array WORK.
+* If SIDE = 'L', LDWORK >= max(1,N);
+* if SIDE = 'R', LDWORK >= max(1,M).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ CHARACTER TRANST
+ INTEGER I, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEMM, DTRMM
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 )
+ $ RETURN
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ IF( LSAME( STOREV, 'C' ) ) THEN
+*
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+*
+* Let V = ( V1 ) (first K rows)
+* ( V2 )
+* where V1 is unit lower triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V = (C1'*V1 + C2'*V2) (stored in WORK)
+*
+* W := C1'
+*
+ DO 10 J = 1, K
+ CALL DCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+ 10 CONTINUE
+*
+* W := W * V1
+*
+ CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', N,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C2'*V2
+*
+ CALL DGEMM( 'Transpose', 'No transpose', N, K, M-K,
+ $ ONE, C( K+1, 1 ), LDC, V( K+1, 1 ), LDV,
+ $ ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL DTRMM( 'Right', 'Upper', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C2 := C2 - V2 * W'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M-K, N, K,
+ $ -ONE, V( K+1, 1 ), LDV, WORK, LDWORK, ONE,
+ $ C( K+1, 1 ), LDC )
+ END IF
+*
+* W := W * V1'
+*
+ CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', N, K,
+ $ ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W'
+*
+ DO 30 J = 1, K
+ DO 20 I = 1, N
+ C( J, I ) = C( J, I ) - WORK( I, J )
+ 20 CONTINUE
+ 30 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V = (C1*V1 + C2*V2) (stored in WORK)
+*
+* W := C1
+*
+ DO 40 J = 1, K
+ CALL DCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+ 40 CONTINUE
+*
+* W := W * V1
+*
+ CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', M,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C2 * V2
+*
+ CALL DGEMM( 'No transpose', 'No transpose', M, K, N-K,
+ $ ONE, C( 1, K+1 ), LDC, V( K+1, 1 ), LDV,
+ $ ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL DTRMM( 'Right', 'Upper', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V'
+*
+ IF( N.GT.K ) THEN
+*
+* C2 := C2 - W * V2'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M, N-K, K,
+ $ -ONE, WORK, LDWORK, V( K+1, 1 ), LDV, ONE,
+ $ C( 1, K+1 ), LDC )
+ END IF
+*
+* W := W * V1'
+*
+ CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', M, K,
+ $ ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W
+*
+ DO 60 J = 1, K
+ DO 50 I = 1, M
+ C( I, J ) = C( I, J ) - WORK( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+ ELSE
+*
+* Let V = ( V1 )
+* ( V2 ) (last K rows)
+* where V2 is unit upper triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V = (C1'*V1 + C2'*V2) (stored in WORK)
+*
+* W := C2'
+*
+ DO 70 J = 1, K
+ CALL DCOPY( N, C( M-K+J, 1 ), LDC, WORK( 1, J ), 1 )
+ 70 CONTINUE
+*
+* W := W * V2
+*
+ CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', N,
+ $ K, ONE, V( M-K+1, 1 ), LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C1'*V1
+*
+ CALL DGEMM( 'Transpose', 'No transpose', N, K, M-K,
+ $ ONE, C, LDC, V, LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C1 := C1 - V1 * W'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M-K, N, K,
+ $ -ONE, V, LDV, WORK, LDWORK, ONE, C, LDC )
+ END IF
+*
+* W := W * V2'
+*
+ CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', N, K,
+ $ ONE, V( M-K+1, 1 ), LDV, WORK, LDWORK )
+*
+* C2 := C2 - W'
+*
+ DO 90 J = 1, K
+ DO 80 I = 1, N
+ C( M-K+J, I ) = C( M-K+J, I ) - WORK( I, J )
+ 80 CONTINUE
+ 90 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V = (C1*V1 + C2*V2) (stored in WORK)
+*
+* W := C2
+*
+ DO 100 J = 1, K
+ CALL DCOPY( M, C( 1, N-K+J ), 1, WORK( 1, J ), 1 )
+ 100 CONTINUE
+*
+* W := W * V2
+*
+ CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', M,
+ $ K, ONE, V( N-K+1, 1 ), LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C1 * V1
+*
+ CALL DGEMM( 'No transpose', 'No transpose', M, K, N-K,
+ $ ONE, C, LDC, V, LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V'
+*
+ IF( N.GT.K ) THEN
+*
+* C1 := C1 - W * V1'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M, N-K, K,
+ $ -ONE, WORK, LDWORK, V, LDV, ONE, C, LDC )
+ END IF
+*
+* W := W * V2'
+*
+ CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', M, K,
+ $ ONE, V( N-K+1, 1 ), LDV, WORK, LDWORK )
+*
+* C2 := C2 - W
+*
+ DO 120 J = 1, K
+ DO 110 I = 1, M
+ C( I, N-K+J ) = C( I, N-K+J ) - WORK( I, J )
+ 110 CONTINUE
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ ELSE IF( LSAME( STOREV, 'R' ) ) THEN
+*
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+*
+* Let V = ( V1 V2 ) (V1: first K columns)
+* where V1 is unit upper triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V' = (C1'*V1' + C2'*V2') (stored in WORK)
+*
+* W := C1'
+*
+ DO 130 J = 1, K
+ CALL DCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+ 130 CONTINUE
+*
+* W := W * V1'
+*
+ CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', N, K,
+ $ ONE, V, LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C2'*V2'
+*
+ CALL DGEMM( 'Transpose', 'Transpose', N, K, M-K, ONE,
+ $ C( K+1, 1 ), LDC, V( 1, K+1 ), LDV, ONE,
+ $ WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL DTRMM( 'Right', 'Upper', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V' * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C2 := C2 - V2' * W'
+*
+ CALL DGEMM( 'Transpose', 'Transpose', M-K, N, K, -ONE,
+ $ V( 1, K+1 ), LDV, WORK, LDWORK, ONE,
+ $ C( K+1, 1 ), LDC )
+ END IF
+*
+* W := W * V1
+*
+ CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', N,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W'
+*
+ DO 150 J = 1, K
+ DO 140 I = 1, N
+ C( J, I ) = C( J, I ) - WORK( I, J )
+ 140 CONTINUE
+ 150 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V' = (C1*V1' + C2*V2') (stored in WORK)
+*
+* W := C1
+*
+ DO 160 J = 1, K
+ CALL DCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+ 160 CONTINUE
+*
+* W := W * V1'
+*
+ CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', M, K,
+ $ ONE, V, LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C2 * V2'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M, K, N-K,
+ $ ONE, C( 1, K+1 ), LDC, V( 1, K+1 ), LDV,
+ $ ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL DTRMM( 'Right', 'Upper', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V
+*
+ IF( N.GT.K ) THEN
+*
+* C2 := C2 - W * V2
+*
+ CALL DGEMM( 'No transpose', 'No transpose', M, N-K, K,
+ $ -ONE, WORK, LDWORK, V( 1, K+1 ), LDV, ONE,
+ $ C( 1, K+1 ), LDC )
+ END IF
+*
+* W := W * V1
+*
+ CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', M,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W
+*
+ DO 180 J = 1, K
+ DO 170 I = 1, M
+ C( I, J ) = C( I, J ) - WORK( I, J )
+ 170 CONTINUE
+ 180 CONTINUE
+*
+ END IF
+*
+ ELSE
+*
+* Let V = ( V1 V2 ) (V2: last K columns)
+* where V2 is unit lower triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V' = (C1'*V1' + C2'*V2') (stored in WORK)
+*
+* W := C2'
+*
+ DO 190 J = 1, K
+ CALL DCOPY( N, C( M-K+J, 1 ), LDC, WORK( 1, J ), 1 )
+ 190 CONTINUE
+*
+* W := W * V2'
+*
+ CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', N, K,
+ $ ONE, V( 1, M-K+1 ), LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C1'*V1'
+*
+ CALL DGEMM( 'Transpose', 'Transpose', N, K, M-K, ONE,
+ $ C, LDC, V, LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V' * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C1 := C1 - V1' * W'
+*
+ CALL DGEMM( 'Transpose', 'Transpose', M-K, N, K, -ONE,
+ $ V, LDV, WORK, LDWORK, ONE, C, LDC )
+ END IF
+*
+* W := W * V2
+*
+ CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', N,
+ $ K, ONE, V( 1, M-K+1 ), LDV, WORK, LDWORK )
+*
+* C2 := C2 - W'
+*
+ DO 210 J = 1, K
+ DO 200 I = 1, N
+ C( M-K+J, I ) = C( M-K+J, I ) - WORK( I, J )
+ 200 CONTINUE
+ 210 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V' = (C1*V1' + C2*V2') (stored in WORK)
+*
+* W := C2
+*
+ DO 220 J = 1, K
+ CALL DCOPY( M, C( 1, N-K+J ), 1, WORK( 1, J ), 1 )
+ 220 CONTINUE
+*
+* W := W * V2'
+*
+ CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', M, K,
+ $ ONE, V( 1, N-K+1 ), LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C1 * V1'
+*
+ CALL DGEMM( 'No transpose', 'Transpose', M, K, N-K,
+ $ ONE, C, LDC, V, LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V
+*
+ IF( N.GT.K ) THEN
+*
+* C1 := C1 - W * V1
+*
+ CALL DGEMM( 'No transpose', 'No transpose', M, N-K, K,
+ $ -ONE, WORK, LDWORK, V, LDV, ONE, C, LDC )
+ END IF
+*
+* W := W * V2
+*
+ CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', M,
+ $ K, ONE, V( 1, N-K+1 ), LDV, WORK, LDWORK )
+*
+* C1 := C1 - W
+*
+ DO 240 J = 1, K
+ DO 230 I = 1, M
+ C( I, N-K+J ) = C( I, N-K+J ) - WORK( I, J )
+ 230 CONTINUE
+ 240 CONTINUE
+*
+ END IF
+*
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DLARFB
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarfg.f b/2.3-1/src/fortran/lapack/dlarfg.f
new file mode 100644
index 00000000..be981880
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarfg.f
@@ -0,0 +1,137 @@
+ SUBROUTINE DLARFG( N, ALPHA, X, INCX, TAU )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ DOUBLE PRECISION ALPHA, TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARFG generates a real elementary reflector H of order n, such
+* that
+*
+* H * ( alpha ) = ( beta ), H' * H = I.
+* ( x ) ( 0 )
+*
+* where alpha and beta are scalars, and x is an (n-1)-element real
+* vector. H is represented in the form
+*
+* H = I - tau * ( 1 ) * ( 1 v' ) ,
+* ( v )
+*
+* where tau is a real scalar and v is a real (n-1)-element
+* vector.
+*
+* If the elements of x are all zero, then tau = 0 and H is taken to be
+* the unit matrix.
+*
+* Otherwise 1 <= tau <= 2.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the elementary reflector.
+*
+* ALPHA (input/output) DOUBLE PRECISION
+* On entry, the value alpha.
+* On exit, it is overwritten with the value beta.
+*
+* X (input/output) DOUBLE PRECISION array, dimension
+* (1+(N-2)*abs(INCX))
+* On entry, the vector x.
+* On exit, it is overwritten with the vector v.
+*
+* INCX (input) INTEGER
+* The increment between elements of X. INCX > 0.
+*
+* TAU (output) DOUBLE PRECISION
+* The value tau.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER J, KNT
+ DOUBLE PRECISION BETA, RSAFMN, SAFMIN, XNORM
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLAPY2, DNRM2
+ EXTERNAL DLAMCH, DLAPY2, DNRM2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SIGN
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL
+* ..
+* .. Executable Statements ..
+*
+ IF( N.LE.1 ) THEN
+ TAU = ZERO
+ RETURN
+ END IF
+*
+ XNORM = DNRM2( N-1, X, INCX )
+*
+ IF( XNORM.EQ.ZERO ) THEN
+*
+* H = I
+*
+ TAU = ZERO
+ ELSE
+*
+* general case
+*
+ BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA )
+ SAFMIN = DLAMCH( 'S' ) / DLAMCH( 'E' )
+ IF( ABS( BETA ).LT.SAFMIN ) THEN
+*
+* XNORM, BETA may be inaccurate; scale X and recompute them
+*
+ RSAFMN = ONE / SAFMIN
+ KNT = 0
+ 10 CONTINUE
+ KNT = KNT + 1
+ CALL DSCAL( N-1, RSAFMN, X, INCX )
+ BETA = BETA*RSAFMN
+ ALPHA = ALPHA*RSAFMN
+ IF( ABS( BETA ).LT.SAFMIN )
+ $ GO TO 10
+*
+* New BETA is at most 1, at least SAFMIN
+*
+ XNORM = DNRM2( N-1, X, INCX )
+ BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA )
+ TAU = ( BETA-ALPHA ) / BETA
+ CALL DSCAL( N-1, ONE / ( ALPHA-BETA ), X, INCX )
+*
+* If ALPHA is subnormal, it may lose relative accuracy
+*
+ ALPHA = BETA
+ DO 20 J = 1, KNT
+ ALPHA = ALPHA*SAFMIN
+ 20 CONTINUE
+ ELSE
+ TAU = ( BETA-ALPHA ) / BETA
+ CALL DSCAL( N-1, ONE / ( ALPHA-BETA ), X, INCX )
+ ALPHA = BETA
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DLARFG
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarft.f b/2.3-1/src/fortran/lapack/dlarft.f
new file mode 100644
index 00000000..2cd115f4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarft.f
@@ -0,0 +1,217 @@
+ SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, STOREV
+ INTEGER K, LDT, LDV, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION T( LDT, * ), TAU( * ), V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARFT forms the triangular factor T of a real block reflector H
+* of order n, which is defined as a product of k elementary reflectors.
+*
+* If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
+*
+* If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
+*
+* If STOREV = 'C', the vector which defines the elementary reflector
+* H(i) is stored in the i-th column of the array V, and
+*
+* H = I - V * T * V'
+*
+* If STOREV = 'R', the vector which defines the elementary reflector
+* H(i) is stored in the i-th row of the array V, and
+*
+* H = I - V' * T * V
+*
+* Arguments
+* =========
+*
+* DIRECT (input) CHARACTER*1
+* Specifies the order in which the elementary reflectors are
+* multiplied to form the block reflector:
+* = 'F': H = H(1) H(2) . . . H(k) (Forward)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Specifies how the vectors which define the elementary
+* reflectors are stored (see also Further Details):
+* = 'C': columnwise
+* = 'R': rowwise
+*
+* N (input) INTEGER
+* The order of the block reflector H. N >= 0.
+*
+* K (input) INTEGER
+* The order of the triangular factor T (= the number of
+* elementary reflectors). K >= 1.
+*
+* V (input/output) DOUBLE PRECISION array, dimension
+* (LDV,K) if STOREV = 'C'
+* (LDV,N) if STOREV = 'R'
+* The matrix V. See further details.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i).
+*
+* T (output) DOUBLE PRECISION array, dimension (LDT,K)
+* The k by k triangular factor T of the block reflector.
+* If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
+* lower triangular. The rest of the array is not used.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* Further Details
+* ===============
+*
+* The shape of the matrix V and the storage of the vectors which define
+* the H(i) is best illustrated by the following example with n = 5 and
+* k = 3. The elements equal to 1 are not stored; the corresponding
+* array elements are modified but restored on exit. The rest of the
+* array is not used.
+*
+* DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
+*
+* V = ( 1 ) V = ( 1 v1 v1 v1 v1 )
+* ( v1 1 ) ( 1 v2 v2 v2 )
+* ( v1 v2 1 ) ( 1 v3 v3 )
+* ( v1 v2 v3 )
+* ( v1 v2 v3 )
+*
+* DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
+*
+* V = ( v1 v2 v3 ) V = ( v1 v1 1 )
+* ( v1 v2 v3 ) ( v2 v2 v2 1 )
+* ( 1 v2 v3 ) ( v3 v3 v3 v3 1 )
+* ( 1 v3 )
+* ( 1 )
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION VII
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DTRMV
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 20 I = 1, K
+ IF( TAU( I ).EQ.ZERO ) THEN
+*
+* H(i) = I
+*
+ DO 10 J = 1, I
+ T( J, I ) = ZERO
+ 10 CONTINUE
+ ELSE
+*
+* general case
+*
+ VII = V( I, I )
+ V( I, I ) = ONE
+ IF( LSAME( STOREV, 'C' ) ) THEN
+*
+* T(1:i-1,i) := - tau(i) * V(i:n,1:i-1)' * V(i:n,i)
+*
+ CALL DGEMV( 'Transpose', N-I+1, I-1, -TAU( I ),
+ $ V( I, 1 ), LDV, V( I, I ), 1, ZERO,
+ $ T( 1, I ), 1 )
+ ELSE
+*
+* T(1:i-1,i) := - tau(i) * V(1:i-1,i:n) * V(i,i:n)'
+*
+ CALL DGEMV( 'No transpose', I-1, N-I+1, -TAU( I ),
+ $ V( 1, I ), LDV, V( I, I ), LDV, ZERO,
+ $ T( 1, I ), 1 )
+ END IF
+ V( I, I ) = VII
+*
+* T(1:i-1,i) := T(1:i-1,1:i-1) * T(1:i-1,i)
+*
+ CALL DTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T,
+ $ LDT, T( 1, I ), 1 )
+ T( I, I ) = TAU( I )
+ END IF
+ 20 CONTINUE
+ ELSE
+ DO 40 I = K, 1, -1
+ IF( TAU( I ).EQ.ZERO ) THEN
+*
+* H(i) = I
+*
+ DO 30 J = I, K
+ T( J, I ) = ZERO
+ 30 CONTINUE
+ ELSE
+*
+* general case
+*
+ IF( I.LT.K ) THEN
+ IF( LSAME( STOREV, 'C' ) ) THEN
+ VII = V( N-K+I, I )
+ V( N-K+I, I ) = ONE
+*
+* T(i+1:k,i) :=
+* - tau(i) * V(1:n-k+i,i+1:k)' * V(1:n-k+i,i)
+*
+ CALL DGEMV( 'Transpose', N-K+I, K-I, -TAU( I ),
+ $ V( 1, I+1 ), LDV, V( 1, I ), 1, ZERO,
+ $ T( I+1, I ), 1 )
+ V( N-K+I, I ) = VII
+ ELSE
+ VII = V( I, N-K+I )
+ V( I, N-K+I ) = ONE
+*
+* T(i+1:k,i) :=
+* - tau(i) * V(i+1:k,1:n-k+i) * V(i,1:n-k+i)'
+*
+ CALL DGEMV( 'No transpose', K-I, N-K+I, -TAU( I ),
+ $ V( I+1, 1 ), LDV, V( I, 1 ), LDV, ZERO,
+ $ T( I+1, I ), 1 )
+ V( I, N-K+I ) = VII
+ END IF
+*
+* T(i+1:k,i) := T(i+1:k,i+1:k) * T(i+1:k,i)
+*
+ CALL DTRMV( 'Lower', 'No transpose', 'Non-unit', K-I,
+ $ T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
+ END IF
+ T( I, I ) = TAU( I )
+ END IF
+ 40 CONTINUE
+ END IF
+ RETURN
+*
+* End of DLARFT
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarfx.f b/2.3-1/src/fortran/lapack/dlarfx.f
new file mode 100644
index 00000000..cc4654e0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarfx.f
@@ -0,0 +1,638 @@
+ SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER LDC, M, N
+ DOUBLE PRECISION TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARFX applies a real elementary reflector H to a real m by n
+* matrix C, from either the left or the right. H is represented in the
+* form
+*
+* H = I - tau * v * v'
+*
+* where tau is a real scalar and v is a real vector.
+*
+* If tau = 0, then H is taken to be the unit matrix
+*
+* This version uses inline code if H has order < 11.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form H * C
+* = 'R': form C * H
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* V (input) DOUBLE PRECISION array, dimension (M) if SIDE = 'L'
+* or (N) if SIDE = 'R'
+* The vector v in the representation of H.
+*
+* TAU (input) DOUBLE PRECISION
+* The value tau in the representation of H.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+* or C * H if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDA >= (1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L'
+* or (M) if SIDE = 'R'
+* WORK is not referenced if H has order < 11.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER J
+ DOUBLE PRECISION SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
+ $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DGER
+* ..
+* .. Executable Statements ..
+*
+ IF( TAU.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C, where H has order m.
+*
+ GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
+ $ 170, 190 )M
+*
+* Code for general M
+*
+* w := C'*v
+*
+ CALL DGEMV( 'Transpose', M, N, ONE, C, LDC, V, 1, ZERO, WORK,
+ $ 1 )
+*
+* C := C - tau * v * w'
+*
+ CALL DGER( M, N, -TAU, V, 1, WORK, 1, C, LDC )
+ GO TO 410
+ 10 CONTINUE
+*
+* Special code for 1 x 1 Householder
+*
+ T1 = ONE - TAU*V( 1 )*V( 1 )
+ DO 20 J = 1, N
+ C( 1, J ) = T1*C( 1, J )
+ 20 CONTINUE
+ GO TO 410
+ 30 CONTINUE
+*
+* Special code for 2 x 2 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ DO 40 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ 40 CONTINUE
+ GO TO 410
+ 50 CONTINUE
+*
+* Special code for 3 x 3 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ DO 60 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ 60 CONTINUE
+ GO TO 410
+ 70 CONTINUE
+*
+* Special code for 4 x 4 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ DO 80 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ 80 CONTINUE
+ GO TO 410
+ 90 CONTINUE
+*
+* Special code for 5 x 5 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ DO 100 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ 100 CONTINUE
+ GO TO 410
+ 110 CONTINUE
+*
+* Special code for 6 x 6 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ DO 120 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ 120 CONTINUE
+ GO TO 410
+ 130 CONTINUE
+*
+* Special code for 7 x 7 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ DO 140 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ 140 CONTINUE
+ GO TO 410
+ 150 CONTINUE
+*
+* Special code for 8 x 8 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ V8 = V( 8 )
+ T8 = TAU*V8
+ DO 160 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J ) + V8*C( 8, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ C( 8, J ) = C( 8, J ) - SUM*T8
+ 160 CONTINUE
+ GO TO 410
+ 170 CONTINUE
+*
+* Special code for 9 x 9 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ V8 = V( 8 )
+ T8 = TAU*V8
+ V9 = V( 9 )
+ T9 = TAU*V9
+ DO 180 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ C( 8, J ) = C( 8, J ) - SUM*T8
+ C( 9, J ) = C( 9, J ) - SUM*T9
+ 180 CONTINUE
+ GO TO 410
+ 190 CONTINUE
+*
+* Special code for 10 x 10 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ V8 = V( 8 )
+ T8 = TAU*V8
+ V9 = V( 9 )
+ T9 = TAU*V9
+ V10 = V( 10 )
+ T10 = TAU*V10
+ DO 200 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
+ $ V10*C( 10, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ C( 8, J ) = C( 8, J ) - SUM*T8
+ C( 9, J ) = C( 9, J ) - SUM*T9
+ C( 10, J ) = C( 10, J ) - SUM*T10
+ 200 CONTINUE
+ GO TO 410
+ ELSE
+*
+* Form C * H, where H has order n.
+*
+ GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
+ $ 370, 390 )N
+*
+* Code for general N
+*
+* w := C * v
+*
+ CALL DGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO,
+ $ WORK, 1 )
+*
+* C := C - tau * w * v'
+*
+ CALL DGER( M, N, -TAU, WORK, 1, V, 1, C, LDC )
+ GO TO 410
+ 210 CONTINUE
+*
+* Special code for 1 x 1 Householder
+*
+ T1 = ONE - TAU*V( 1 )*V( 1 )
+ DO 220 J = 1, M
+ C( J, 1 ) = T1*C( J, 1 )
+ 220 CONTINUE
+ GO TO 410
+ 230 CONTINUE
+*
+* Special code for 2 x 2 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ DO 240 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ 240 CONTINUE
+ GO TO 410
+ 250 CONTINUE
+*
+* Special code for 3 x 3 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ DO 260 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ 260 CONTINUE
+ GO TO 410
+ 270 CONTINUE
+*
+* Special code for 4 x 4 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ DO 280 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ 280 CONTINUE
+ GO TO 410
+ 290 CONTINUE
+*
+* Special code for 5 x 5 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ DO 300 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ 300 CONTINUE
+ GO TO 410
+ 310 CONTINUE
+*
+* Special code for 6 x 6 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ DO 320 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ 320 CONTINUE
+ GO TO 410
+ 330 CONTINUE
+*
+* Special code for 7 x 7 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ DO 340 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ 340 CONTINUE
+ GO TO 410
+ 350 CONTINUE
+*
+* Special code for 8 x 8 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ V8 = V( 8 )
+ T8 = TAU*V8
+ DO 360 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 ) + V8*C( J, 8 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ C( J, 8 ) = C( J, 8 ) - SUM*T8
+ 360 CONTINUE
+ GO TO 410
+ 370 CONTINUE
+*
+* Special code for 9 x 9 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ V8 = V( 8 )
+ T8 = TAU*V8
+ V9 = V( 9 )
+ T9 = TAU*V9
+ DO 380 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ C( J, 8 ) = C( J, 8 ) - SUM*T8
+ C( J, 9 ) = C( J, 9 ) - SUM*T9
+ 380 CONTINUE
+ GO TO 410
+ 390 CONTINUE
+*
+* Special code for 10 x 10 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*V1
+ V2 = V( 2 )
+ T2 = TAU*V2
+ V3 = V( 3 )
+ T3 = TAU*V3
+ V4 = V( 4 )
+ T4 = TAU*V4
+ V5 = V( 5 )
+ T5 = TAU*V5
+ V6 = V( 6 )
+ T6 = TAU*V6
+ V7 = V( 7 )
+ T7 = TAU*V7
+ V8 = V( 8 )
+ T8 = TAU*V8
+ V9 = V( 9 )
+ T9 = TAU*V9
+ V10 = V( 10 )
+ T10 = TAU*V10
+ DO 400 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
+ $ V10*C( J, 10 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ C( J, 8 ) = C( J, 8 ) - SUM*T8
+ C( J, 9 ) = C( J, 9 ) - SUM*T9
+ C( J, 10 ) = C( J, 10 ) - SUM*T10
+ 400 CONTINUE
+ GO TO 410
+ END IF
+ 410 CONTINUE
+ RETURN
+*
+* End of DLARFX
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlartg.f b/2.3-1/src/fortran/lapack/dlartg.f
new file mode 100644
index 00000000..eb807c1d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlartg.f
@@ -0,0 +1,145 @@
+ SUBROUTINE DLARTG( F, G, CS, SN, R )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION CS, F, G, R, SN
+* ..
+*
+* Purpose
+* =======
+*
+* DLARTG generate a plane rotation so that
+*
+* [ CS SN ] . [ F ] = [ R ] where CS**2 + SN**2 = 1.
+* [ -SN CS ] [ G ] [ 0 ]
+*
+* This is a slower, more accurate version of the BLAS1 routine DROTG,
+* with the following other differences:
+* F and G are unchanged on return.
+* If G=0, then CS=1 and SN=0.
+* If F=0 and (G .ne. 0), then CS=0 and SN=1 without doing any
+* floating point operations (saves work in DBDSQR when
+* there are zeros on the diagonal).
+*
+* If F exceeds G in magnitude, CS will be positive.
+*
+* Arguments
+* =========
+*
+* F (input) DOUBLE PRECISION
+* The first component of vector to be rotated.
+*
+* G (input) DOUBLE PRECISION
+* The second component of vector to be rotated.
+*
+* CS (output) DOUBLE PRECISION
+* The cosine of the rotation.
+*
+* SN (output) DOUBLE PRECISION
+* The sine of the rotation.
+*
+* R (output) DOUBLE PRECISION
+* The nonzero component of the rotated vector.
+*
+* This version has a few statements commented out for thread safety
+* (machine parameters are computed on each entry). 10 feb 03, SJH.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D0 )
+* ..
+* .. Local Scalars ..
+* LOGICAL FIRST
+ INTEGER COUNT, I
+ DOUBLE PRECISION EPS, F1, G1, SAFMIN, SAFMN2, SAFMX2, SCALE
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, INT, LOG, MAX, SQRT
+* ..
+* .. Save statement ..
+* SAVE FIRST, SAFMX2, SAFMIN, SAFMN2
+* ..
+* .. Data statements ..
+* DATA FIRST / .TRUE. /
+* ..
+* .. Executable Statements ..
+*
+* IF( FIRST ) THEN
+ SAFMIN = DLAMCH( 'S' )
+ EPS = DLAMCH( 'E' )
+ SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) /
+ $ LOG( DLAMCH( 'B' ) ) / TWO )
+ SAFMX2 = ONE / SAFMN2
+* FIRST = .FALSE.
+* END IF
+ IF( G.EQ.ZERO ) THEN
+ CS = ONE
+ SN = ZERO
+ R = F
+ ELSE IF( F.EQ.ZERO ) THEN
+ CS = ZERO
+ SN = ONE
+ R = G
+ ELSE
+ F1 = F
+ G1 = G
+ SCALE = MAX( ABS( F1 ), ABS( G1 ) )
+ IF( SCALE.GE.SAFMX2 ) THEN
+ COUNT = 0
+ 10 CONTINUE
+ COUNT = COUNT + 1
+ F1 = F1*SAFMN2
+ G1 = G1*SAFMN2
+ SCALE = MAX( ABS( F1 ), ABS( G1 ) )
+ IF( SCALE.GE.SAFMX2 )
+ $ GO TO 10
+ R = SQRT( F1**2+G1**2 )
+ CS = F1 / R
+ SN = G1 / R
+ DO 20 I = 1, COUNT
+ R = R*SAFMX2
+ 20 CONTINUE
+ ELSE IF( SCALE.LE.SAFMN2 ) THEN
+ COUNT = 0
+ 30 CONTINUE
+ COUNT = COUNT + 1
+ F1 = F1*SAFMX2
+ G1 = G1*SAFMX2
+ SCALE = MAX( ABS( F1 ), ABS( G1 ) )
+ IF( SCALE.LE.SAFMN2 )
+ $ GO TO 30
+ R = SQRT( F1**2+G1**2 )
+ CS = F1 / R
+ SN = G1 / R
+ DO 40 I = 1, COUNT
+ R = R*SAFMN2
+ 40 CONTINUE
+ ELSE
+ R = SQRT( F1**2+G1**2 )
+ CS = F1 / R
+ SN = G1 / R
+ END IF
+ IF( ABS( F ).GT.ABS( G ) .AND. CS.LT.ZERO ) THEN
+ CS = -CS
+ SN = -SN
+ R = -R
+ END IF
+ END IF
+ RETURN
+*
+* End of DLARTG
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarz.f b/2.3-1/src/fortran/lapack/dlarz.f
new file mode 100644
index 00000000..b302fdc2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarz.f
@@ -0,0 +1,152 @@
+ SUBROUTINE DLARZ( SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER INCV, L, LDC, M, N
+ DOUBLE PRECISION TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARZ applies a real elementary reflector H to a real M-by-N
+* matrix C, from either the left or the right. H is represented in the
+* form
+*
+* H = I - tau * v * v'
+*
+* where tau is a real scalar and v is a real vector.
+*
+* If tau = 0, then H is taken to be the unit matrix.
+*
+*
+* H is a product of k elementary reflectors as returned by DTZRZF.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form H * C
+* = 'R': form C * H
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* L (input) INTEGER
+* The number of entries of the vector V containing
+* the meaningful part of the Householder vectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* V (input) DOUBLE PRECISION array, dimension (1+(L-1)*abs(INCV))
+* The vector v in the representation of H as returned by
+* DTZRZF. V is not used if TAU = 0.
+*
+* INCV (input) INTEGER
+* The increment between elements of v. INCV <> 0.
+*
+* TAU (input) DOUBLE PRECISION
+* The value tau in the representation of H.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+* or C * H if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L'
+* or (M) if SIDE = 'R'
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMV, DGER
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w( 1:n ) = C( 1, 1:n )
+*
+ CALL DCOPY( N, C, LDC, WORK, 1 )
+*
+* w( 1:n ) = w( 1:n ) + C( m-l+1:m, 1:n )' * v( 1:l )
+*
+ CALL DGEMV( 'Transpose', L, N, ONE, C( M-L+1, 1 ), LDC, V,
+ $ INCV, ONE, WORK, 1 )
+*
+* C( 1, 1:n ) = C( 1, 1:n ) - tau * w( 1:n )
+*
+ CALL DAXPY( N, -TAU, WORK, 1, C, LDC )
+*
+* C( m-l+1:m, 1:n ) = C( m-l+1:m, 1:n ) - ...
+* tau * v( 1:l ) * w( 1:n )'
+*
+ CALL DGER( L, N, -TAU, V, INCV, WORK, 1, C( M-L+1, 1 ),
+ $ LDC )
+ END IF
+*
+ ELSE
+*
+* Form C * H
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w( 1:m ) = C( 1:m, 1 )
+*
+ CALL DCOPY( M, C, 1, WORK, 1 )
+*
+* w( 1:m ) = w( 1:m ) + C( 1:m, n-l+1:n, 1:n ) * v( 1:l )
+*
+ CALL DGEMV( 'No transpose', M, L, ONE, C( 1, N-L+1 ), LDC,
+ $ V, INCV, ONE, WORK, 1 )
+*
+* C( 1:m, 1 ) = C( 1:m, 1 ) - tau * w( 1:m )
+*
+ CALL DAXPY( M, -TAU, WORK, 1, C, 1 )
+*
+* C( 1:m, n-l+1:n ) = C( 1:m, n-l+1:n ) - ...
+* tau * w( 1:m ) * v( 1:l )'
+*
+ CALL DGER( M, L, -TAU, WORK, 1, V, INCV, C( 1, N-L+1 ),
+ $ LDC )
+*
+ END IF
+*
+ END IF
+*
+ RETURN
+*
+* End of DLARZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarzb.f b/2.3-1/src/fortran/lapack/dlarzb.f
new file mode 100644
index 00000000..ec59d8d5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarzb.f
@@ -0,0 +1,220 @@
+ SUBROUTINE DLARZB( SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V,
+ $ LDV, T, LDT, C, LDC, WORK, LDWORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, SIDE, STOREV, TRANS
+ INTEGER K, L, LDC, LDT, LDV, LDWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( LDC, * ), T( LDT, * ), V( LDV, * ),
+ $ WORK( LDWORK, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARZB applies a real block reflector H or its transpose H**T to
+* a real distributed M-by-N C from the left or the right.
+*
+* Currently, only STOREV = 'R' and DIRECT = 'B' are supported.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply H or H' from the Left
+* = 'R': apply H or H' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply H (No transpose)
+* = 'C': apply H' (Transpose)
+*
+* DIRECT (input) CHARACTER*1
+* Indicates how H is formed from a product of elementary
+* reflectors
+* = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Indicates how the vectors which define the elementary
+* reflectors are stored:
+* = 'C': Columnwise (not supported yet)
+* = 'R': Rowwise
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* K (input) INTEGER
+* The order of the matrix T (= the number of elementary
+* reflectors whose product defines the block reflector).
+*
+* L (input) INTEGER
+* The number of columns of the matrix V containing the
+* meaningful part of the Householder reflectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* V (input) DOUBLE PRECISION array, dimension (LDV,NV).
+* If STOREV = 'C', NV = K; if STOREV = 'R', NV = L.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C', LDV >= L; if STOREV = 'R', LDV >= K.
+*
+* T (input) DOUBLE PRECISION array, dimension (LDT,K)
+* The triangular K-by-K matrix T in the representation of the
+* block reflector.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by H*C or H'*C or C*H or C*H'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (LDWORK,K)
+*
+* LDWORK (input) INTEGER
+* The leading dimension of the array WORK.
+* If SIDE = 'L', LDWORK >= max(1,N);
+* if SIDE = 'R', LDWORK >= max(1,M).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ CHARACTER TRANST
+ INTEGER I, INFO, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEMM, DTRMM, XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 )
+ $ RETURN
+*
+* Check for currently supported options
+*
+ INFO = 0
+ IF( .NOT.LSAME( DIRECT, 'B' ) ) THEN
+ INFO = -3
+ ELSE IF( .NOT.LSAME( STOREV, 'R' ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DLARZB', -INFO )
+ RETURN
+ END IF
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C
+*
+* W( 1:n, 1:k ) = C( 1:k, 1:n )'
+*
+ DO 10 J = 1, K
+ CALL DCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+ 10 CONTINUE
+*
+* W( 1:n, 1:k ) = W( 1:n, 1:k ) + ...
+* C( m-l+1:m, 1:n )' * V( 1:k, 1:l )'
+*
+ IF( L.GT.0 )
+ $ CALL DGEMM( 'Transpose', 'Transpose', N, K, L, ONE,
+ $ C( M-L+1, 1 ), LDC, V, LDV, ONE, WORK, LDWORK )
+*
+* W( 1:n, 1:k ) = W( 1:n, 1:k ) * T' or W( 1:m, 1:k ) * T
+*
+ CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K, ONE, T,
+ $ LDT, WORK, LDWORK )
+*
+* C( 1:k, 1:n ) = C( 1:k, 1:n ) - W( 1:n, 1:k )'
+*
+ DO 30 J = 1, N
+ DO 20 I = 1, K
+ C( I, J ) = C( I, J ) - WORK( J, I )
+ 20 CONTINUE
+ 30 CONTINUE
+*
+* C( m-l+1:m, 1:n ) = C( m-l+1:m, 1:n ) - ...
+* V( 1:k, 1:l )' * W( 1:n, 1:k )'
+*
+ IF( L.GT.0 )
+ $ CALL DGEMM( 'Transpose', 'Transpose', L, N, K, -ONE, V, LDV,
+ $ WORK, LDWORK, ONE, C( M-L+1, 1 ), LDC )
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H'
+*
+* W( 1:m, 1:k ) = C( 1:m, 1:k )
+*
+ DO 40 J = 1, K
+ CALL DCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+ 40 CONTINUE
+*
+* W( 1:m, 1:k ) = W( 1:m, 1:k ) + ...
+* C( 1:m, n-l+1:n ) * V( 1:k, 1:l )'
+*
+ IF( L.GT.0 )
+ $ CALL DGEMM( 'No transpose', 'Transpose', M, K, L, ONE,
+ $ C( 1, N-L+1 ), LDC, V, LDV, ONE, WORK, LDWORK )
+*
+* W( 1:m, 1:k ) = W( 1:m, 1:k ) * T or W( 1:m, 1:k ) * T'
+*
+ CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K, ONE, T,
+ $ LDT, WORK, LDWORK )
+*
+* C( 1:m, 1:k ) = C( 1:m, 1:k ) - W( 1:m, 1:k )
+*
+ DO 60 J = 1, K
+ DO 50 I = 1, M
+ C( I, J ) = C( I, J ) - WORK( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+*
+* C( 1:m, n-l+1:n ) = C( 1:m, n-l+1:n ) - ...
+* W( 1:m, 1:k ) * V( 1:k, 1:l )
+*
+ IF( L.GT.0 )
+ $ CALL DGEMM( 'No transpose', 'No transpose', M, L, K, -ONE,
+ $ WORK, LDWORK, V, LDV, ONE, C( 1, N-L+1 ), LDC )
+*
+ END IF
+*
+ RETURN
+*
+* End of DLARZB
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlarzt.f b/2.3-1/src/fortran/lapack/dlarzt.f
new file mode 100644
index 00000000..d79636e0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlarzt.f
@@ -0,0 +1,184 @@
+ SUBROUTINE DLARZT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, STOREV
+ INTEGER K, LDT, LDV, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION T( LDT, * ), TAU( * ), V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLARZT forms the triangular factor T of a real block reflector
+* H of order > n, which is defined as a product of k elementary
+* reflectors.
+*
+* If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
+*
+* If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
+*
+* If STOREV = 'C', the vector which defines the elementary reflector
+* H(i) is stored in the i-th column of the array V, and
+*
+* H = I - V * T * V'
+*
+* If STOREV = 'R', the vector which defines the elementary reflector
+* H(i) is stored in the i-th row of the array V, and
+*
+* H = I - V' * T * V
+*
+* Currently, only STOREV = 'R' and DIRECT = 'B' are supported.
+*
+* Arguments
+* =========
+*
+* DIRECT (input) CHARACTER*1
+* Specifies the order in which the elementary reflectors are
+* multiplied to form the block reflector:
+* = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Specifies how the vectors which define the elementary
+* reflectors are stored (see also Further Details):
+* = 'C': columnwise (not supported yet)
+* = 'R': rowwise
+*
+* N (input) INTEGER
+* The order of the block reflector H. N >= 0.
+*
+* K (input) INTEGER
+* The order of the triangular factor T (= the number of
+* elementary reflectors). K >= 1.
+*
+* V (input/output) DOUBLE PRECISION array, dimension
+* (LDV,K) if STOREV = 'C'
+* (LDV,N) if STOREV = 'R'
+* The matrix V. See further details.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i).
+*
+* T (output) DOUBLE PRECISION array, dimension (LDT,K)
+* The k by k triangular factor T of the block reflector.
+* If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
+* lower triangular. The rest of the array is not used.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* The shape of the matrix V and the storage of the vectors which define
+* the H(i) is best illustrated by the following example with n = 5 and
+* k = 3. The elements equal to 1 are not stored; the corresponding
+* array elements are modified but restored on exit. The rest of the
+* array is not used.
+*
+* DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
+*
+* ______V_____
+* ( v1 v2 v3 ) / \
+* ( v1 v2 v3 ) ( v1 v1 v1 v1 v1 . . . . 1 )
+* V = ( v1 v2 v3 ) ( v2 v2 v2 v2 v2 . . . 1 )
+* ( v1 v2 v3 ) ( v3 v3 v3 v3 v3 . . 1 )
+* ( v1 v2 v3 )
+* . . .
+* . . .
+* 1 . .
+* 1 .
+* 1
+*
+* DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
+*
+* ______V_____
+* 1 / \
+* . 1 ( 1 . . . . v1 v1 v1 v1 v1 )
+* . . 1 ( . 1 . . . v2 v2 v2 v2 v2 )
+* . . . ( . . 1 . . v3 v3 v3 v3 v3 )
+* . . .
+* ( v1 v2 v3 )
+* ( v1 v2 v3 )
+* V = ( v1 v2 v3 )
+* ( v1 v2 v3 )
+* ( v1 v2 v3 )
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, INFO, J
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DTRMV, XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+* Check for currently supported options
+*
+ INFO = 0
+ IF( .NOT.LSAME( DIRECT, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( STOREV, 'R' ) ) THEN
+ INFO = -2
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DLARZT', -INFO )
+ RETURN
+ END IF
+*
+ DO 20 I = K, 1, -1
+ IF( TAU( I ).EQ.ZERO ) THEN
+*
+* H(i) = I
+*
+ DO 10 J = I, K
+ T( J, I ) = ZERO
+ 10 CONTINUE
+ ELSE
+*
+* general case
+*
+ IF( I.LT.K ) THEN
+*
+* T(i+1:k,i) = - tau(i) * V(i+1:k,1:n) * V(i,1:n)'
+*
+ CALL DGEMV( 'No transpose', K-I, N, -TAU( I ),
+ $ V( I+1, 1 ), LDV, V( I, 1 ), LDV, ZERO,
+ $ T( I+1, I ), 1 )
+*
+* T(i+1:k,i) = T(i+1:k,i+1:k) * T(i+1:k,i)
+*
+ CALL DTRMV( 'Lower', 'No transpose', 'Non-unit', K-I,
+ $ T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
+ END IF
+ T( I, I ) = TAU( I )
+ END IF
+ 20 CONTINUE
+ RETURN
+*
+* End of DLARZT
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlas2.f b/2.3-1/src/fortran/lapack/dlas2.f
new file mode 100644
index 00000000..e100a4d8
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlas2.f
@@ -0,0 +1,121 @@
+ SUBROUTINE DLAS2( F, G, H, SSMIN, SSMAX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION F, G, H, SSMAX, SSMIN
+* ..
+*
+* Purpose
+* =======
+*
+* DLAS2 computes the singular values of the 2-by-2 matrix
+* [ F G ]
+* [ 0 H ].
+* On return, SSMIN is the smaller singular value and SSMAX is the
+* larger singular value.
+*
+* Arguments
+* =========
+*
+* F (input) DOUBLE PRECISION
+* The (1,1) element of the 2-by-2 matrix.
+*
+* G (input) DOUBLE PRECISION
+* The (1,2) element of the 2-by-2 matrix.
+*
+* H (input) DOUBLE PRECISION
+* The (2,2) element of the 2-by-2 matrix.
+*
+* SSMIN (output) DOUBLE PRECISION
+* The smaller singular value.
+*
+* SSMAX (output) DOUBLE PRECISION
+* The larger singular value.
+*
+* Further Details
+* ===============
+*
+* Barring over/underflow, all output quantities are correct to within
+* a few units in the last place (ulps), even in the absence of a guard
+* digit in addition/subtraction.
+*
+* In IEEE arithmetic, the code works correctly if one matrix element is
+* infinite.
+*
+* Overflow will not occur unless the largest singular value itself
+* overflows, or is within a few ulps of overflow. (On machines with
+* partial overflow, like the Cray, overflow may occur if the largest
+* singular value is within a factor of 2 of overflow.)
+*
+* Underflow is harmless if underflow is gradual. Otherwise, results
+* may correspond to a matrix modified by perturbations of size near
+* the underflow threshold.
+*
+* ====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION AS, AT, AU, C, FA, FHMN, FHMX, GA, HA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ FA = ABS( F )
+ GA = ABS( G )
+ HA = ABS( H )
+ FHMN = MIN( FA, HA )
+ FHMX = MAX( FA, HA )
+ IF( FHMN.EQ.ZERO ) THEN
+ SSMIN = ZERO
+ IF( FHMX.EQ.ZERO ) THEN
+ SSMAX = GA
+ ELSE
+ SSMAX = MAX( FHMX, GA )*SQRT( ONE+
+ $ ( MIN( FHMX, GA ) / MAX( FHMX, GA ) )**2 )
+ END IF
+ ELSE
+ IF( GA.LT.FHMX ) THEN
+ AS = ONE + FHMN / FHMX
+ AT = ( FHMX-FHMN ) / FHMX
+ AU = ( GA / FHMX )**2
+ C = TWO / ( SQRT( AS*AS+AU )+SQRT( AT*AT+AU ) )
+ SSMIN = FHMN*C
+ SSMAX = FHMX / C
+ ELSE
+ AU = FHMX / GA
+ IF( AU.EQ.ZERO ) THEN
+*
+* Avoid possible harmful underflow if exponent range
+* asymmetric (true SSMIN may not underflow even if
+* AU underflows)
+*
+ SSMIN = ( FHMN*FHMX ) / GA
+ SSMAX = GA
+ ELSE
+ AS = ONE + FHMN / FHMX
+ AT = ( FHMX-FHMN ) / FHMX
+ C = ONE / ( SQRT( ONE+( AS*AU )**2 )+
+ $ SQRT( ONE+( AT*AU )**2 ) )
+ SSMIN = ( FHMN*C )*AU
+ SSMIN = SSMIN + SSMIN
+ SSMAX = GA / ( C+C )
+ END IF
+ END IF
+ END IF
+ RETURN
+*
+* End of DLAS2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlascl.f b/2.3-1/src/fortran/lapack/dlascl.f
new file mode 100644
index 00000000..7a7a78fd
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlascl.f
@@ -0,0 +1,267 @@
+ SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TYPE
+ INTEGER INFO, KL, KU, LDA, M, N
+ DOUBLE PRECISION CFROM, CTO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASCL multiplies the M by N real matrix A by the real scalar
+* CTO/CFROM. This is done without over/underflow as long as the final
+* result CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that
+* A may be full, upper triangular, lower triangular, upper Hessenberg,
+* or banded.
+*
+* Arguments
+* =========
+*
+* TYPE (input) CHARACTER*1
+* TYPE indices the storage type of the input matrix.
+* = 'G': A is a full matrix.
+* = 'L': A is a lower triangular matrix.
+* = 'U': A is an upper triangular matrix.
+* = 'H': A is an upper Hessenberg matrix.
+* = 'B': A is a symmetric band matrix with lower bandwidth KL
+* and upper bandwidth KU and with the only the lower
+* half stored.
+* = 'Q': A is a symmetric band matrix with lower bandwidth KL
+* and upper bandwidth KU and with the only the upper
+* half stored.
+* = 'Z': A is a band matrix with lower bandwidth KL and upper
+* bandwidth KU.
+*
+* KL (input) INTEGER
+* The lower bandwidth of A. Referenced only if TYPE = 'B',
+* 'Q' or 'Z'.
+*
+* KU (input) INTEGER
+* The upper bandwidth of A. Referenced only if TYPE = 'B',
+* 'Q' or 'Z'.
+*
+* CFROM (input) DOUBLE PRECISION
+* CTO (input) DOUBLE PRECISION
+* The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
+* without over/underflow if the final result CTO*A(I,J)/CFROM
+* can be represented without over/underflow. CFROM must be
+* nonzero.
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* The matrix to be multiplied by CTO/CFROM. See TYPE for the
+* storage type.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* INFO (output) INTEGER
+* 0 - successful exit
+* <0 - if INFO = -i, the i-th argument had an illegal value.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL DONE
+ INTEGER I, ITYPE, J, K1, K2, K3, K4
+ DOUBLE PRECISION BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+*
+ IF( LSAME( TYPE, 'G' ) ) THEN
+ ITYPE = 0
+ ELSE IF( LSAME( TYPE, 'L' ) ) THEN
+ ITYPE = 1
+ ELSE IF( LSAME( TYPE, 'U' ) ) THEN
+ ITYPE = 2
+ ELSE IF( LSAME( TYPE, 'H' ) ) THEN
+ ITYPE = 3
+ ELSE IF( LSAME( TYPE, 'B' ) ) THEN
+ ITYPE = 4
+ ELSE IF( LSAME( TYPE, 'Q' ) ) THEN
+ ITYPE = 5
+ ELSE IF( LSAME( TYPE, 'Z' ) ) THEN
+ ITYPE = 6
+ ELSE
+ ITYPE = -1
+ END IF
+*
+ IF( ITYPE.EQ.-1 ) THEN
+ INFO = -1
+ ELSE IF( CFROM.EQ.ZERO ) THEN
+ INFO = -4
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -6
+ ELSE IF( N.LT.0 .OR. ( ITYPE.EQ.4 .AND. N.NE.M ) .OR.
+ $ ( ITYPE.EQ.5 .AND. N.NE.M ) ) THEN
+ INFO = -7
+ ELSE IF( ITYPE.LE.3 .AND. LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -9
+ ELSE IF( ITYPE.GE.4 ) THEN
+ IF( KL.LT.0 .OR. KL.GT.MAX( M-1, 0 ) ) THEN
+ INFO = -2
+ ELSE IF( KU.LT.0 .OR. KU.GT.MAX( N-1, 0 ) .OR.
+ $ ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. KL.NE.KU ) )
+ $ THEN
+ INFO = -3
+ ELSE IF( ( ITYPE.EQ.4 .AND. LDA.LT.KL+1 ) .OR.
+ $ ( ITYPE.EQ.5 .AND. LDA.LT.KU+1 ) .OR.
+ $ ( ITYPE.EQ.6 .AND. LDA.LT.2*KL+KU+1 ) ) THEN
+ INFO = -9
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DLASCL', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. M.EQ.0 )
+ $ RETURN
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+*
+ CFROMC = CFROM
+ CTOC = CTO
+*
+ 10 CONTINUE
+ CFROM1 = CFROMC*SMLNUM
+ CTO1 = CTOC / BIGNUM
+ IF( ABS( CFROM1 ).GT.ABS( CTOC ) .AND. CTOC.NE.ZERO ) THEN
+ MUL = SMLNUM
+ DONE = .FALSE.
+ CFROMC = CFROM1
+ ELSE IF( ABS( CTO1 ).GT.ABS( CFROMC ) ) THEN
+ MUL = BIGNUM
+ DONE = .FALSE.
+ CTOC = CTO1
+ ELSE
+ MUL = CTOC / CFROMC
+ DONE = .TRUE.
+ END IF
+*
+ IF( ITYPE.EQ.0 ) THEN
+*
+* Full matrix
+*
+ DO 30 J = 1, N
+ DO 20 I = 1, M
+ A( I, J ) = A( I, J )*MUL
+ 20 CONTINUE
+ 30 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.1 ) THEN
+*
+* Lower triangular matrix
+*
+ DO 50 J = 1, N
+ DO 40 I = J, M
+ A( I, J ) = A( I, J )*MUL
+ 40 CONTINUE
+ 50 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.2 ) THEN
+*
+* Upper triangular matrix
+*
+ DO 70 J = 1, N
+ DO 60 I = 1, MIN( J, M )
+ A( I, J ) = A( I, J )*MUL
+ 60 CONTINUE
+ 70 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.3 ) THEN
+*
+* Upper Hessenberg matrix
+*
+ DO 90 J = 1, N
+ DO 80 I = 1, MIN( J+1, M )
+ A( I, J ) = A( I, J )*MUL
+ 80 CONTINUE
+ 90 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.4 ) THEN
+*
+* Lower half of a symmetric band matrix
+*
+ K3 = KL + 1
+ K4 = N + 1
+ DO 110 J = 1, N
+ DO 100 I = 1, MIN( K3, K4-J )
+ A( I, J ) = A( I, J )*MUL
+ 100 CONTINUE
+ 110 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.5 ) THEN
+*
+* Upper half of a symmetric band matrix
+*
+ K1 = KU + 2
+ K3 = KU + 1
+ DO 130 J = 1, N
+ DO 120 I = MAX( K1-J, 1 ), K3
+ A( I, J ) = A( I, J )*MUL
+ 120 CONTINUE
+ 130 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.6 ) THEN
+*
+* Band matrix
+*
+ K1 = KL + KU + 2
+ K2 = KL + 1
+ K3 = 2*KL + KU + 1
+ K4 = KL + KU + 1 + M
+ DO 150 J = 1, N
+ DO 140 I = MAX( K1-J, K2 ), MIN( K3, K4-J )
+ A( I, J ) = A( I, J )*MUL
+ 140 CONTINUE
+ 150 CONTINUE
+*
+ END IF
+*
+ IF( .NOT.DONE )
+ $ GO TO 10
+*
+ RETURN
+*
+* End of DLASCL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaset.f b/2.3-1/src/fortran/lapack/dlaset.f
new file mode 100644
index 00000000..fc7bc2f5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaset.f
@@ -0,0 +1,114 @@
+ SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER LDA, M, N
+ DOUBLE PRECISION ALPHA, BETA
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASET initializes an m-by-n matrix A to BETA on the diagonal and
+* ALPHA on the offdiagonals.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies the part of the matrix A to be set.
+* = 'U': Upper triangular part is set; the strictly lower
+* triangular part of A is not changed.
+* = 'L': Lower triangular part is set; the strictly upper
+* triangular part of A is not changed.
+* Otherwise: All of the matrix A is set.
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* ALPHA (input) DOUBLE PRECISION
+* The constant to which the offdiagonal elements are to be set.
+*
+* BETA (input) DOUBLE PRECISION
+* The constant to which the diagonal elements are to be set.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On exit, the leading m-by-n submatrix of A is set as follows:
+*
+* if UPLO = 'U', A(i,j) = ALPHA, 1<=i<=j-1, 1<=j<=n,
+* if UPLO = 'L', A(i,j) = ALPHA, j+1<=i<=m, 1<=j<=n,
+* otherwise, A(i,j) = ALPHA, 1<=i<=m, 1<=j<=n, i.ne.j,
+*
+* and, for all UPLO, A(i,i) = BETA, 1<=i<=min(m,n).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+*
+* Set the strictly upper triangular or trapezoidal part of the
+* array to ALPHA.
+*
+ DO 20 J = 2, N
+ DO 10 I = 1, MIN( J-1, M )
+ A( I, J ) = ALPHA
+ 10 CONTINUE
+ 20 CONTINUE
+*
+ ELSE IF( LSAME( UPLO, 'L' ) ) THEN
+*
+* Set the strictly lower triangular or trapezoidal part of the
+* array to ALPHA.
+*
+ DO 40 J = 1, MIN( M, N )
+ DO 30 I = J + 1, M
+ A( I, J ) = ALPHA
+ 30 CONTINUE
+ 40 CONTINUE
+*
+ ELSE
+*
+* Set the leading m-by-n submatrix to ALPHA.
+*
+ DO 60 J = 1, N
+ DO 50 I = 1, M
+ A( I, J ) = ALPHA
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+* Set the first min(M,N) diagonal elements to BETA.
+*
+ DO 70 I = 1, MIN( M, N )
+ A( I, I ) = BETA
+ 70 CONTINUE
+*
+ RETURN
+*
+* End of DLASET
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasq1.f b/2.3-1/src/fortran/lapack/dlasq1.f
new file mode 100644
index 00000000..6f4c3413
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasq1.f
@@ -0,0 +1,148 @@
+ SUBROUTINE DLASQ1( N, D, E, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASQ1 computes the singular values of a real N-by-N bidiagonal
+* matrix with diagonal D and off-diagonal E. The singular values
+* are computed to high relative accuracy, in the absence of
+* denormalization, underflow and overflow. The algorithm was first
+* presented in
+*
+* "Accurate singular values and differential qd algorithms" by K. V.
+* Fernando and B. N. Parlett, Numer. Math., Vol-67, No. 2, pp. 191-230,
+* 1994,
+*
+* and the present implementation is described in "An implementation of
+* the dqds Algorithm (Positive Case)", LAPACK Working Note.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of rows and columns in the matrix. N >= 0.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, D contains the diagonal elements of the
+* bidiagonal matrix whose SVD is desired. On normal exit,
+* D contains the singular values in decreasing order.
+*
+* E (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, elements E(1:N-1) contain the off-diagonal elements
+* of the bidiagonal matrix whose SVD is desired.
+* On exit, E is overwritten.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (4*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: the algorithm failed
+* = 1, a split was marked by a positive value in E
+* = 2, current block of Z not diagonalized after 30*N
+* iterations (in inner while loop)
+* = 3, termination criterion of outer while loop not met
+* (program created more than N unreduced blocks)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IINFO
+ DOUBLE PRECISION EPS, SCALE, SAFMIN, SIGMN, SIGMX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DLAS2, DLASCL, DLASQ2, DLASRT, XERBLA
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+ IF( N.LT.0 ) THEN
+ INFO = -2
+ CALL XERBLA( 'DLASQ1', -INFO )
+ RETURN
+ ELSE IF( N.EQ.0 ) THEN
+ RETURN
+ ELSE IF( N.EQ.1 ) THEN
+ D( 1 ) = ABS( D( 1 ) )
+ RETURN
+ ELSE IF( N.EQ.2 ) THEN
+ CALL DLAS2( D( 1 ), E( 1 ), D( 2 ), SIGMN, SIGMX )
+ D( 1 ) = SIGMX
+ D( 2 ) = SIGMN
+ RETURN
+ END IF
+*
+* Estimate the largest singular value.
+*
+ SIGMX = ZERO
+ DO 10 I = 1, N - 1
+ D( I ) = ABS( D( I ) )
+ SIGMX = MAX( SIGMX, ABS( E( I ) ) )
+ 10 CONTINUE
+ D( N ) = ABS( D( N ) )
+*
+* Early return if SIGMX is zero (matrix is already diagonal).
+*
+ IF( SIGMX.EQ.ZERO ) THEN
+ CALL DLASRT( 'D', N, D, IINFO )
+ RETURN
+ END IF
+*
+ DO 20 I = 1, N
+ SIGMX = MAX( SIGMX, D( I ) )
+ 20 CONTINUE
+*
+* Copy D and E into WORK (in the Z format) and scale (squaring the
+* input data makes scaling by a power of the radix pointless).
+*
+ EPS = DLAMCH( 'Precision' )
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ SCALE = SQRT( EPS / SAFMIN )
+ CALL DCOPY( N, D, 1, WORK( 1 ), 2 )
+ CALL DCOPY( N-1, E, 1, WORK( 2 ), 2 )
+ CALL DLASCL( 'G', 0, 0, SIGMX, SCALE, 2*N-1, 1, WORK, 2*N-1,
+ $ IINFO )
+*
+* Compute the q's and e's.
+*
+ DO 30 I = 1, 2*N - 1
+ WORK( I ) = WORK( I )**2
+ 30 CONTINUE
+ WORK( 2*N ) = ZERO
+*
+ CALL DLASQ2( N, WORK, INFO )
+*
+ IF( INFO.EQ.0 ) THEN
+ DO 40 I = 1, N
+ D( I ) = SQRT( WORK( I ) )
+ 40 CONTINUE
+ CALL DLASCL( 'G', 0, 0, SCALE, SIGMX, N, 1, D, N, IINFO )
+ END IF
+*
+ RETURN
+*
+* End of DLASQ1
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasq2.f b/2.3-1/src/fortran/lapack/dlasq2.f
new file mode 100644
index 00000000..b6b79aeb
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasq2.f
@@ -0,0 +1,448 @@
+ SUBROUTINE DLASQ2( N, Z, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLAZQ3 in place of DLASQ3, 13 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASQ2 computes all the eigenvalues of the symmetric positive
+* definite tridiagonal matrix associated with the qd array Z to high
+* relative accuracy are computed to high relative accuracy, in the
+* absence of denormalization, underflow and overflow.
+*
+* To see the relation of Z to the tridiagonal matrix, let L be a
+* unit lower bidiagonal matrix with subdiagonals Z(2,4,6,,..) and
+* let U be an upper bidiagonal matrix with 1's above and diagonal
+* Z(1,3,5,,..). The tridiagonal is L*U or, if you prefer, the
+* symmetric tridiagonal to which it is similar.
+*
+* Note : DLASQ2 defines a logical variable, IEEE, which is true
+* on machines which follow ieee-754 floating-point standard in their
+* handling of infinities and NaNs, and false otherwise. This variable
+* is passed to DLAZQ3.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of rows and columns in the matrix. N >= 0.
+*
+* Z (workspace) DOUBLE PRECISION array, dimension ( 4*N )
+* On entry Z holds the qd array. On exit, entries 1 to N hold
+* the eigenvalues in decreasing order, Z( 2*N+1 ) holds the
+* trace, and Z( 2*N+2 ) holds the sum of the eigenvalues. If
+* N > 2, then Z( 2*N+3 ) holds the iteration count, Z( 2*N+4 )
+* holds NDIVS/NIN^2, and Z( 2*N+5 ) holds the percentage of
+* shifts that failed.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if the i-th argument is a scalar and had an illegal
+* value, then INFO = -i, if the i-th argument is an
+* array and the j-entry had an illegal value, then
+* INFO = -(i*100+j)
+* > 0: the algorithm failed
+* = 1, a split was marked by a positive value in E
+* = 2, current block of Z not diagonalized after 30*N
+* iterations (in inner while loop)
+* = 3, termination criterion of outer while loop not met
+* (program created more than N unreduced blocks)
+*
+* Further Details
+* ===============
+* Local Variables: I0:N0 defines a current unreduced segment of Z.
+* The shifts are accumulated in SIGMA. Iteration count is in ITER.
+* Ping-pong is controlled by PP (alternates between 0 and 1).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION CBIAS
+ PARAMETER ( CBIAS = 1.50D0 )
+ DOUBLE PRECISION ZERO, HALF, ONE, TWO, FOUR, HUNDRD
+ PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0,
+ $ TWO = 2.0D0, FOUR = 4.0D0, HUNDRD = 100.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL IEEE
+ INTEGER I0, I4, IINFO, IPN4, ITER, IWHILA, IWHILB, K,
+ $ N0, NBIG, NDIV, NFAIL, PP, SPLT, TTYPE
+ DOUBLE PRECISION D, DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, E,
+ $ EMAX, EMIN, EPS, OLDEMN, QMAX, QMIN, S, SAFMIN,
+ $ SIGMA, T, TAU, TEMP, TOL, TOL2, TRACE, ZMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAZQ3, DLASRT, XERBLA
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH, ILAENV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments.
+* (in case DLASQ2 is not called by DLASQ1)
+*
+ INFO = 0
+ EPS = DLAMCH( 'Precision' )
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ TOL = EPS*HUNDRD
+ TOL2 = TOL**2
+*
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ CALL XERBLA( 'DLASQ2', 1 )
+ RETURN
+ ELSE IF( N.EQ.0 ) THEN
+ RETURN
+ ELSE IF( N.EQ.1 ) THEN
+*
+* 1-by-1 case.
+*
+ IF( Z( 1 ).LT.ZERO ) THEN
+ INFO = -201
+ CALL XERBLA( 'DLASQ2', 2 )
+ END IF
+ RETURN
+ ELSE IF( N.EQ.2 ) THEN
+*
+* 2-by-2 case.
+*
+ IF( Z( 2 ).LT.ZERO .OR. Z( 3 ).LT.ZERO ) THEN
+ INFO = -2
+ CALL XERBLA( 'DLASQ2', 2 )
+ RETURN
+ ELSE IF( Z( 3 ).GT.Z( 1 ) ) THEN
+ D = Z( 3 )
+ Z( 3 ) = Z( 1 )
+ Z( 1 ) = D
+ END IF
+ Z( 5 ) = Z( 1 ) + Z( 2 ) + Z( 3 )
+ IF( Z( 2 ).GT.Z( 3 )*TOL2 ) THEN
+ T = HALF*( ( Z( 1 )-Z( 3 ) )+Z( 2 ) )
+ S = Z( 3 )*( Z( 2 ) / T )
+ IF( S.LE.T ) THEN
+ S = Z( 3 )*( Z( 2 ) / ( T*( ONE+SQRT( ONE+S / T ) ) ) )
+ ELSE
+ S = Z( 3 )*( Z( 2 ) / ( T+SQRT( T )*SQRT( T+S ) ) )
+ END IF
+ T = Z( 1 ) + ( S+Z( 2 ) )
+ Z( 3 ) = Z( 3 )*( Z( 1 ) / T )
+ Z( 1 ) = T
+ END IF
+ Z( 2 ) = Z( 3 )
+ Z( 6 ) = Z( 2 ) + Z( 1 )
+ RETURN
+ END IF
+*
+* Check for negative data and compute sums of q's and e's.
+*
+ Z( 2*N ) = ZERO
+ EMIN = Z( 2 )
+ QMAX = ZERO
+ ZMAX = ZERO
+ D = ZERO
+ E = ZERO
+*
+ DO 10 K = 1, 2*( N-1 ), 2
+ IF( Z( K ).LT.ZERO ) THEN
+ INFO = -( 200+K )
+ CALL XERBLA( 'DLASQ2', 2 )
+ RETURN
+ ELSE IF( Z( K+1 ).LT.ZERO ) THEN
+ INFO = -( 200+K+1 )
+ CALL XERBLA( 'DLASQ2', 2 )
+ RETURN
+ END IF
+ D = D + Z( K )
+ E = E + Z( K+1 )
+ QMAX = MAX( QMAX, Z( K ) )
+ EMIN = MIN( EMIN, Z( K+1 ) )
+ ZMAX = MAX( QMAX, ZMAX, Z( K+1 ) )
+ 10 CONTINUE
+ IF( Z( 2*N-1 ).LT.ZERO ) THEN
+ INFO = -( 200+2*N-1 )
+ CALL XERBLA( 'DLASQ2', 2 )
+ RETURN
+ END IF
+ D = D + Z( 2*N-1 )
+ QMAX = MAX( QMAX, Z( 2*N-1 ) )
+ ZMAX = MAX( QMAX, ZMAX )
+*
+* Check for diagonality.
+*
+ IF( E.EQ.ZERO ) THEN
+ DO 20 K = 2, N
+ Z( K ) = Z( 2*K-1 )
+ 20 CONTINUE
+ CALL DLASRT( 'D', N, Z, IINFO )
+ Z( 2*N-1 ) = D
+ RETURN
+ END IF
+*
+ TRACE = D + E
+*
+* Check for zero data.
+*
+ IF( TRACE.EQ.ZERO ) THEN
+ Z( 2*N-1 ) = ZERO
+ RETURN
+ END IF
+*
+* Check whether the machine is IEEE conformable.
+*
+ IEEE = ILAENV( 10, 'DLASQ2', 'N', 1, 2, 3, 4 ).EQ.1 .AND.
+ $ ILAENV( 11, 'DLASQ2', 'N', 1, 2, 3, 4 ).EQ.1
+*
+* Rearrange data for locality: Z=(q1,qq1,e1,ee1,q2,qq2,e2,ee2,...).
+*
+ DO 30 K = 2*N, 2, -2
+ Z( 2*K ) = ZERO
+ Z( 2*K-1 ) = Z( K )
+ Z( 2*K-2 ) = ZERO
+ Z( 2*K-3 ) = Z( K-1 )
+ 30 CONTINUE
+*
+ I0 = 1
+ N0 = N
+*
+* Reverse the qd-array, if warranted.
+*
+ IF( CBIAS*Z( 4*I0-3 ).LT.Z( 4*N0-3 ) ) THEN
+ IPN4 = 4*( I0+N0 )
+ DO 40 I4 = 4*I0, 2*( I0+N0-1 ), 4
+ TEMP = Z( I4-3 )
+ Z( I4-3 ) = Z( IPN4-I4-3 )
+ Z( IPN4-I4-3 ) = TEMP
+ TEMP = Z( I4-1 )
+ Z( I4-1 ) = Z( IPN4-I4-5 )
+ Z( IPN4-I4-5 ) = TEMP
+ 40 CONTINUE
+ END IF
+*
+* Initial split checking via dqd and Li's test.
+*
+ PP = 0
+*
+ DO 80 K = 1, 2
+*
+ D = Z( 4*N0+PP-3 )
+ DO 50 I4 = 4*( N0-1 ) + PP, 4*I0 + PP, -4
+ IF( Z( I4-1 ).LE.TOL2*D ) THEN
+ Z( I4-1 ) = -ZERO
+ D = Z( I4-3 )
+ ELSE
+ D = Z( I4-3 )*( D / ( D+Z( I4-1 ) ) )
+ END IF
+ 50 CONTINUE
+*
+* dqd maps Z to ZZ plus Li's test.
+*
+ EMIN = Z( 4*I0+PP+1 )
+ D = Z( 4*I0+PP-3 )
+ DO 60 I4 = 4*I0 + PP, 4*( N0-1 ) + PP, 4
+ Z( I4-2*PP-2 ) = D + Z( I4-1 )
+ IF( Z( I4-1 ).LE.TOL2*D ) THEN
+ Z( I4-1 ) = -ZERO
+ Z( I4-2*PP-2 ) = D
+ Z( I4-2*PP ) = ZERO
+ D = Z( I4+1 )
+ ELSE IF( SAFMIN*Z( I4+1 ).LT.Z( I4-2*PP-2 ) .AND.
+ $ SAFMIN*Z( I4-2*PP-2 ).LT.Z( I4+1 ) ) THEN
+ TEMP = Z( I4+1 ) / Z( I4-2*PP-2 )
+ Z( I4-2*PP ) = Z( I4-1 )*TEMP
+ D = D*TEMP
+ ELSE
+ Z( I4-2*PP ) = Z( I4+1 )*( Z( I4-1 ) / Z( I4-2*PP-2 ) )
+ D = Z( I4+1 )*( D / Z( I4-2*PP-2 ) )
+ END IF
+ EMIN = MIN( EMIN, Z( I4-2*PP ) )
+ 60 CONTINUE
+ Z( 4*N0-PP-2 ) = D
+*
+* Now find qmax.
+*
+ QMAX = Z( 4*I0-PP-2 )
+ DO 70 I4 = 4*I0 - PP + 2, 4*N0 - PP - 2, 4
+ QMAX = MAX( QMAX, Z( I4 ) )
+ 70 CONTINUE
+*
+* Prepare for the next iteration on K.
+*
+ PP = 1 - PP
+ 80 CONTINUE
+*
+* Initialise variables to pass to DLAZQ3
+*
+ TTYPE = 0
+ DMIN1 = ZERO
+ DMIN2 = ZERO
+ DN = ZERO
+ DN1 = ZERO
+ DN2 = ZERO
+ TAU = ZERO
+*
+ ITER = 2
+ NFAIL = 0
+ NDIV = 2*( N0-I0 )
+*
+ DO 140 IWHILA = 1, N + 1
+ IF( N0.LT.1 )
+ $ GO TO 150
+*
+* While array unfinished do
+*
+* E(N0) holds the value of SIGMA when submatrix in I0:N0
+* splits from the rest of the array, but is negated.
+*
+ DESIG = ZERO
+ IF( N0.EQ.N ) THEN
+ SIGMA = ZERO
+ ELSE
+ SIGMA = -Z( 4*N0-1 )
+ END IF
+ IF( SIGMA.LT.ZERO ) THEN
+ INFO = 1
+ RETURN
+ END IF
+*
+* Find last unreduced submatrix's top index I0, find QMAX and
+* EMIN. Find Gershgorin-type bound if Q's much greater than E's.
+*
+ EMAX = ZERO
+ IF( N0.GT.I0 ) THEN
+ EMIN = ABS( Z( 4*N0-5 ) )
+ ELSE
+ EMIN = ZERO
+ END IF
+ QMIN = Z( 4*N0-3 )
+ QMAX = QMIN
+ DO 90 I4 = 4*N0, 8, -4
+ IF( Z( I4-5 ).LE.ZERO )
+ $ GO TO 100
+ IF( QMIN.GE.FOUR*EMAX ) THEN
+ QMIN = MIN( QMIN, Z( I4-3 ) )
+ EMAX = MAX( EMAX, Z( I4-5 ) )
+ END IF
+ QMAX = MAX( QMAX, Z( I4-7 )+Z( I4-5 ) )
+ EMIN = MIN( EMIN, Z( I4-5 ) )
+ 90 CONTINUE
+ I4 = 4
+*
+ 100 CONTINUE
+ I0 = I4 / 4
+*
+* Store EMIN for passing to DLAZQ3.
+*
+ Z( 4*N0-1 ) = EMIN
+*
+* Put -(initial shift) into DMIN.
+*
+ DMIN = -MAX( ZERO, QMIN-TWO*SQRT( QMIN )*SQRT( EMAX ) )
+*
+* Now I0:N0 is unreduced. PP = 0 for ping, PP = 1 for pong.
+*
+ PP = 0
+*
+ NBIG = 30*( N0-I0+1 )
+ DO 120 IWHILB = 1, NBIG
+ IF( I0.GT.N0 )
+ $ GO TO 130
+*
+* While submatrix unfinished take a good dqds step.
+*
+ CALL DLAZQ3( I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL,
+ $ ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
+ $ DN2, TAU )
+*
+ PP = 1 - PP
+*
+* When EMIN is very small check for splits.
+*
+ IF( PP.EQ.0 .AND. N0-I0.GE.3 ) THEN
+ IF( Z( 4*N0 ).LE.TOL2*QMAX .OR.
+ $ Z( 4*N0-1 ).LE.TOL2*SIGMA ) THEN
+ SPLT = I0 - 1
+ QMAX = Z( 4*I0-3 )
+ EMIN = Z( 4*I0-1 )
+ OLDEMN = Z( 4*I0 )
+ DO 110 I4 = 4*I0, 4*( N0-3 ), 4
+ IF( Z( I4 ).LE.TOL2*Z( I4-3 ) .OR.
+ $ Z( I4-1 ).LE.TOL2*SIGMA ) THEN
+ Z( I4-1 ) = -SIGMA
+ SPLT = I4 / 4
+ QMAX = ZERO
+ EMIN = Z( I4+3 )
+ OLDEMN = Z( I4+4 )
+ ELSE
+ QMAX = MAX( QMAX, Z( I4+1 ) )
+ EMIN = MIN( EMIN, Z( I4-1 ) )
+ OLDEMN = MIN( OLDEMN, Z( I4 ) )
+ END IF
+ 110 CONTINUE
+ Z( 4*N0-1 ) = EMIN
+ Z( 4*N0 ) = OLDEMN
+ I0 = SPLT + 1
+ END IF
+ END IF
+*
+ 120 CONTINUE
+*
+ INFO = 2
+ RETURN
+*
+* end IWHILB
+*
+ 130 CONTINUE
+*
+ 140 CONTINUE
+*
+ INFO = 3
+ RETURN
+*
+* end IWHILA
+*
+ 150 CONTINUE
+*
+* Move q's to the front.
+*
+ DO 160 K = 2, N
+ Z( K ) = Z( 4*K-3 )
+ 160 CONTINUE
+*
+* Sort and compute sum of eigenvalues.
+*
+ CALL DLASRT( 'D', N, Z, IINFO )
+*
+ E = ZERO
+ DO 170 K = N, 1, -1
+ E = E + Z( K )
+ 170 CONTINUE
+*
+* Store trace, sum(eigenvalues) and information on performance.
+*
+ Z( 2*N+1 ) = TRACE
+ Z( 2*N+2 ) = E
+ Z( 2*N+3 ) = DBLE( ITER )
+ Z( 2*N+4 ) = DBLE( NDIV ) / DBLE( N**2 )
+ Z( 2*N+5 ) = HUNDRD*NFAIL / DBLE( ITER )
+ RETURN
+*
+* End of DLASQ2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasq3.f b/2.3-1/src/fortran/lapack/dlasq3.f
new file mode 100644
index 00000000..ce4055d8
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasq3.f
@@ -0,0 +1,295 @@
+ SUBROUTINE DLASQ3( I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL,
+ $ ITER, NDIV, IEEE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE
+ INTEGER I0, ITER, N0, NDIV, NFAIL, PP
+ DOUBLE PRECISION DESIG, DMIN, QMAX, SIGMA
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASQ3 checks for deflation, computes a shift (TAU) and calls dqds.
+* In case of failure it changes shifts, and tries again until output
+* is positive.
+*
+* Arguments
+* =========
+*
+* I0 (input) INTEGER
+* First index.
+*
+* N0 (input) INTEGER
+* Last index.
+*
+* Z (input) DOUBLE PRECISION array, dimension ( 4*N )
+* Z holds the qd array.
+*
+* PP (input) INTEGER
+* PP=0 for ping, PP=1 for pong.
+*
+* DMIN (output) DOUBLE PRECISION
+* Minimum value of d.
+*
+* SIGMA (output) DOUBLE PRECISION
+* Sum of shifts used in current segment.
+*
+* DESIG (input/output) DOUBLE PRECISION
+* Lower order part of SIGMA
+*
+* QMAX (input) DOUBLE PRECISION
+* Maximum value of q.
+*
+* NFAIL (output) INTEGER
+* Number of times shift was too big.
+*
+* ITER (output) INTEGER
+* Number of iterations.
+*
+* NDIV (output) INTEGER
+* Number of divisions.
+*
+* TTYPE (output) INTEGER
+* Shift type.
+*
+* IEEE (input) LOGICAL
+* Flag for IEEE or non IEEE arithmetic (passed to DLASQ5).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION CBIAS
+ PARAMETER ( CBIAS = 1.50D0 )
+ DOUBLE PRECISION ZERO, QURTR, HALF, ONE, TWO, HUNDRD
+ PARAMETER ( ZERO = 0.0D0, QURTR = 0.250D0, HALF = 0.5D0,
+ $ ONE = 1.0D0, TWO = 2.0D0, HUNDRD = 100.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER IPN4, J4, N0IN, NN, TTYPE
+ DOUBLE PRECISION DMIN1, DMIN2, DN, DN1, DN2, EPS, S, SAFMIN, T,
+ $ TAU, TEMP, TOL, TOL2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASQ4, DLASQ5, DLASQ6
+* ..
+* .. External Function ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Save statement ..
+ SAVE TTYPE
+ SAVE DMIN1, DMIN2, DN, DN1, DN2, TAU
+* ..
+* .. Data statement ..
+ DATA TTYPE / 0 /
+ DATA DMIN1 / ZERO /, DMIN2 / ZERO /, DN / ZERO /,
+ $ DN1 / ZERO /, DN2 / ZERO /, TAU / ZERO /
+* ..
+* .. Executable Statements ..
+*
+ N0IN = N0
+ EPS = DLAMCH( 'Precision' )
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ TOL = EPS*HUNDRD
+ TOL2 = TOL**2
+*
+* Check for deflation.
+*
+ 10 CONTINUE
+*
+ IF( N0.LT.I0 )
+ $ RETURN
+ IF( N0.EQ.I0 )
+ $ GO TO 20
+ NN = 4*N0 + PP
+ IF( N0.EQ.( I0+1 ) )
+ $ GO TO 40
+*
+* Check whether E(N0-1) is negligible, 1 eigenvalue.
+*
+ IF( Z( NN-5 ).GT.TOL2*( SIGMA+Z( NN-3 ) ) .AND.
+ $ Z( NN-2*PP-4 ).GT.TOL2*Z( NN-7 ) )
+ $ GO TO 30
+*
+ 20 CONTINUE
+*
+ Z( 4*N0-3 ) = Z( 4*N0+PP-3 ) + SIGMA
+ N0 = N0 - 1
+ GO TO 10
+*
+* Check whether E(N0-2) is negligible, 2 eigenvalues.
+*
+ 30 CONTINUE
+*
+ IF( Z( NN-9 ).GT.TOL2*SIGMA .AND.
+ $ Z( NN-2*PP-8 ).GT.TOL2*Z( NN-11 ) )
+ $ GO TO 50
+*
+ 40 CONTINUE
+*
+ IF( Z( NN-3 ).GT.Z( NN-7 ) ) THEN
+ S = Z( NN-3 )
+ Z( NN-3 ) = Z( NN-7 )
+ Z( NN-7 ) = S
+ END IF
+ IF( Z( NN-5 ).GT.Z( NN-3 )*TOL2 ) THEN
+ T = HALF*( ( Z( NN-7 )-Z( NN-3 ) )+Z( NN-5 ) )
+ S = Z( NN-3 )*( Z( NN-5 ) / T )
+ IF( S.LE.T ) THEN
+ S = Z( NN-3 )*( Z( NN-5 ) /
+ $ ( T*( ONE+SQRT( ONE+S / T ) ) ) )
+ ELSE
+ S = Z( NN-3 )*( Z( NN-5 ) / ( T+SQRT( T )*SQRT( T+S ) ) )
+ END IF
+ T = Z( NN-7 ) + ( S+Z( NN-5 ) )
+ Z( NN-3 ) = Z( NN-3 )*( Z( NN-7 ) / T )
+ Z( NN-7 ) = T
+ END IF
+ Z( 4*N0-7 ) = Z( NN-7 ) + SIGMA
+ Z( 4*N0-3 ) = Z( NN-3 ) + SIGMA
+ N0 = N0 - 2
+ GO TO 10
+*
+ 50 CONTINUE
+*
+* Reverse the qd-array, if warranted.
+*
+ IF( DMIN.LE.ZERO .OR. N0.LT.N0IN ) THEN
+ IF( CBIAS*Z( 4*I0+PP-3 ).LT.Z( 4*N0+PP-3 ) ) THEN
+ IPN4 = 4*( I0+N0 )
+ DO 60 J4 = 4*I0, 2*( I0+N0-1 ), 4
+ TEMP = Z( J4-3 )
+ Z( J4-3 ) = Z( IPN4-J4-3 )
+ Z( IPN4-J4-3 ) = TEMP
+ TEMP = Z( J4-2 )
+ Z( J4-2 ) = Z( IPN4-J4-2 )
+ Z( IPN4-J4-2 ) = TEMP
+ TEMP = Z( J4-1 )
+ Z( J4-1 ) = Z( IPN4-J4-5 )
+ Z( IPN4-J4-5 ) = TEMP
+ TEMP = Z( J4 )
+ Z( J4 ) = Z( IPN4-J4-4 )
+ Z( IPN4-J4-4 ) = TEMP
+ 60 CONTINUE
+ IF( N0-I0.LE.4 ) THEN
+ Z( 4*N0+PP-1 ) = Z( 4*I0+PP-1 )
+ Z( 4*N0-PP ) = Z( 4*I0-PP )
+ END IF
+ DMIN2 = MIN( DMIN2, Z( 4*N0+PP-1 ) )
+ Z( 4*N0+PP-1 ) = MIN( Z( 4*N0+PP-1 ), Z( 4*I0+PP-1 ),
+ $ Z( 4*I0+PP+3 ) )
+ Z( 4*N0-PP ) = MIN( Z( 4*N0-PP ), Z( 4*I0-PP ),
+ $ Z( 4*I0-PP+4 ) )
+ QMAX = MAX( QMAX, Z( 4*I0+PP-3 ), Z( 4*I0+PP+1 ) )
+ DMIN = -ZERO
+ END IF
+ END IF
+*
+ IF( DMIN.LT.ZERO .OR. SAFMIN*QMAX.LT.MIN( Z( 4*N0+PP-1 ),
+ $ Z( 4*N0+PP-9 ), DMIN2+Z( 4*N0-PP ) ) ) THEN
+*
+* Choose a shift.
+*
+ CALL DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN, DN1,
+ $ DN2, TAU, TTYPE )
+*
+* Call dqds until DMIN > 0.
+*
+ 80 CONTINUE
+*
+ CALL DLASQ5( I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN,
+ $ DN1, DN2, IEEE )
+*
+ NDIV = NDIV + ( N0-I0+2 )
+ ITER = ITER + 1
+*
+* Check status.
+*
+ IF( DMIN.GE.ZERO .AND. DMIN1.GT.ZERO ) THEN
+*
+* Success.
+*
+ GO TO 100
+*
+ ELSE IF( DMIN.LT.ZERO .AND. DMIN1.GT.ZERO .AND.
+ $ Z( 4*( N0-1 )-PP ).LT.TOL*( SIGMA+DN1 ) .AND.
+ $ ABS( DN ).LT.TOL*SIGMA ) THEN
+*
+* Convergence hidden by negative DN.
+*
+ Z( 4*( N0-1 )-PP+2 ) = ZERO
+ DMIN = ZERO
+ GO TO 100
+ ELSE IF( DMIN.LT.ZERO ) THEN
+*
+* TAU too big. Select new TAU and try again.
+*
+ NFAIL = NFAIL + 1
+ IF( TTYPE.LT.-22 ) THEN
+*
+* Failed twice. Play it safe.
+*
+ TAU = ZERO
+ ELSE IF( DMIN1.GT.ZERO ) THEN
+*
+* Late failure. Gives excellent shift.
+*
+ TAU = ( TAU+DMIN )*( ONE-TWO*EPS )
+ TTYPE = TTYPE - 11
+ ELSE
+*
+* Early failure. Divide by 4.
+*
+ TAU = QURTR*TAU
+ TTYPE = TTYPE - 12
+ END IF
+ GO TO 80
+ ELSE IF( DMIN.NE.DMIN ) THEN
+*
+* NaN.
+*
+ TAU = ZERO
+ GO TO 80
+ ELSE
+*
+* Possible underflow. Play it safe.
+*
+ GO TO 90
+ END IF
+ END IF
+*
+* Risk of underflow.
+*
+ 90 CONTINUE
+ CALL DLASQ6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN, DN1, DN2 )
+ NDIV = NDIV + ( N0-I0+2 )
+ ITER = ITER + 1
+ TAU = ZERO
+*
+ 100 CONTINUE
+ IF( TAU.LT.SIGMA ) THEN
+ DESIG = DESIG + TAU
+ T = SIGMA + DESIG
+ DESIG = DESIG - ( T-SIGMA )
+ ELSE
+ T = SIGMA + TAU
+ DESIG = SIGMA - ( T-TAU ) + DESIG
+ END IF
+ SIGMA = T
+*
+ RETURN
+*
+* End of DLASQ3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasq4.f b/2.3-1/src/fortran/lapack/dlasq4.f
new file mode 100644
index 00000000..db2b6fe5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasq4.f
@@ -0,0 +1,329 @@
+ SUBROUTINE DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN,
+ $ DN1, DN2, TAU, TTYPE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER I0, N0, N0IN, PP, TTYPE
+ DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DN1, DN2, TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASQ4 computes an approximation TAU to the smallest eigenvalue
+* using values of d from the previous transform.
+*
+* I0 (input) INTEGER
+* First index.
+*
+* N0 (input) INTEGER
+* Last index.
+*
+* Z (input) DOUBLE PRECISION array, dimension ( 4*N )
+* Z holds the qd array.
+*
+* PP (input) INTEGER
+* PP=0 for ping, PP=1 for pong.
+*
+* N0IN (input) INTEGER
+* The value of N0 at start of EIGTEST.
+*
+* DMIN (input) DOUBLE PRECISION
+* Minimum value of d.
+*
+* DMIN1 (input) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ).
+*
+* DMIN2 (input) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+* DN (input) DOUBLE PRECISION
+* d(N)
+*
+* DN1 (input) DOUBLE PRECISION
+* d(N-1)
+*
+* DN2 (input) DOUBLE PRECISION
+* d(N-2)
+*
+* TAU (output) DOUBLE PRECISION
+* This is the shift.
+*
+* TTYPE (output) INTEGER
+* Shift type.
+*
+* Further Details
+* ===============
+* CNST1 = 9/16
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION CNST1, CNST2, CNST3
+ PARAMETER ( CNST1 = 0.5630D0, CNST2 = 1.010D0,
+ $ CNST3 = 1.050D0 )
+ DOUBLE PRECISION QURTR, THIRD, HALF, ZERO, ONE, TWO, HUNDRD
+ PARAMETER ( QURTR = 0.250D0, THIRD = 0.3330D0,
+ $ HALF = 0.50D0, ZERO = 0.0D0, ONE = 1.0D0,
+ $ TWO = 2.0D0, HUNDRD = 100.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I4, NN, NP
+ DOUBLE PRECISION A2, B1, B2, G, GAM, GAP1, GAP2, S
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN, SQRT
+* ..
+* .. Save statement ..
+ SAVE G
+* ..
+* .. Data statement ..
+ DATA G / ZERO /
+* ..
+* .. Executable Statements ..
+*
+* A negative DMIN forces the shift to take that absolute value
+* TTYPE records the type of shift.
+*
+ IF( DMIN.LE.ZERO ) THEN
+ TAU = -DMIN
+ TTYPE = -1
+ RETURN
+ END IF
+*
+ NN = 4*N0 + PP
+ IF( N0IN.EQ.N0 ) THEN
+*
+* No eigenvalues deflated.
+*
+ IF( DMIN.EQ.DN .OR. DMIN.EQ.DN1 ) THEN
+*
+ B1 = SQRT( Z( NN-3 ) )*SQRT( Z( NN-5 ) )
+ B2 = SQRT( Z( NN-7 ) )*SQRT( Z( NN-9 ) )
+ A2 = Z( NN-7 ) + Z( NN-5 )
+*
+* Cases 2 and 3.
+*
+ IF( DMIN.EQ.DN .AND. DMIN1.EQ.DN1 ) THEN
+ GAP2 = DMIN2 - A2 - DMIN2*QURTR
+ IF( GAP2.GT.ZERO .AND. GAP2.GT.B2 ) THEN
+ GAP1 = A2 - DN - ( B2 / GAP2 )*B2
+ ELSE
+ GAP1 = A2 - DN - ( B1+B2 )
+ END IF
+ IF( GAP1.GT.ZERO .AND. GAP1.GT.B1 ) THEN
+ S = MAX( DN-( B1 / GAP1 )*B1, HALF*DMIN )
+ TTYPE = -2
+ ELSE
+ S = ZERO
+ IF( DN.GT.B1 )
+ $ S = DN - B1
+ IF( A2.GT.( B1+B2 ) )
+ $ S = MIN( S, A2-( B1+B2 ) )
+ S = MAX( S, THIRD*DMIN )
+ TTYPE = -3
+ END IF
+ ELSE
+*
+* Case 4.
+*
+ TTYPE = -4
+ S = QURTR*DMIN
+ IF( DMIN.EQ.DN ) THEN
+ GAM = DN
+ A2 = ZERO
+ IF( Z( NN-5 ) .GT. Z( NN-7 ) )
+ $ RETURN
+ B2 = Z( NN-5 ) / Z( NN-7 )
+ NP = NN - 9
+ ELSE
+ NP = NN - 2*PP
+ B2 = Z( NP-2 )
+ GAM = DN1
+ IF( Z( NP-4 ) .GT. Z( NP-2 ) )
+ $ RETURN
+ A2 = Z( NP-4 ) / Z( NP-2 )
+ IF( Z( NN-9 ) .GT. Z( NN-11 ) )
+ $ RETURN
+ B2 = Z( NN-9 ) / Z( NN-11 )
+ NP = NN - 13
+ END IF
+*
+* Approximate contribution to norm squared from I < NN-1.
+*
+ A2 = A2 + B2
+ DO 10 I4 = NP, 4*I0 - 1 + PP, -4
+ IF( B2.EQ.ZERO )
+ $ GO TO 20
+ B1 = B2
+ IF( Z( I4 ) .GT. Z( I4-2 ) )
+ $ RETURN
+ B2 = B2*( Z( I4 ) / Z( I4-2 ) )
+ A2 = A2 + B2
+ IF( HUNDRD*MAX( B2, B1 ).LT.A2 .OR. CNST1.LT.A2 )
+ $ GO TO 20
+ 10 CONTINUE
+ 20 CONTINUE
+ A2 = CNST3*A2
+*
+* Rayleigh quotient residual bound.
+*
+ IF( A2.LT.CNST1 )
+ $ S = GAM*( ONE-SQRT( A2 ) ) / ( ONE+A2 )
+ END IF
+ ELSE IF( DMIN.EQ.DN2 ) THEN
+*
+* Case 5.
+*
+ TTYPE = -5
+ S = QURTR*DMIN
+*
+* Compute contribution to norm squared from I > NN-2.
+*
+ NP = NN - 2*PP
+ B1 = Z( NP-2 )
+ B2 = Z( NP-6 )
+ GAM = DN2
+ IF( Z( NP-8 ).GT.B2 .OR. Z( NP-4 ).GT.B1 )
+ $ RETURN
+ A2 = ( Z( NP-8 ) / B2 )*( ONE+Z( NP-4 ) / B1 )
+*
+* Approximate contribution to norm squared from I < NN-2.
+*
+ IF( N0-I0.GT.2 ) THEN
+ B2 = Z( NN-13 ) / Z( NN-15 )
+ A2 = A2 + B2
+ DO 30 I4 = NN - 17, 4*I0 - 1 + PP, -4
+ IF( B2.EQ.ZERO )
+ $ GO TO 40
+ B1 = B2
+ IF( Z( I4 ) .GT. Z( I4-2 ) )
+ $ RETURN
+ B2 = B2*( Z( I4 ) / Z( I4-2 ) )
+ A2 = A2 + B2
+ IF( HUNDRD*MAX( B2, B1 ).LT.A2 .OR. CNST1.LT.A2 )
+ $ GO TO 40
+ 30 CONTINUE
+ 40 CONTINUE
+ A2 = CNST3*A2
+ END IF
+*
+ IF( A2.LT.CNST1 )
+ $ S = GAM*( ONE-SQRT( A2 ) ) / ( ONE+A2 )
+ ELSE
+*
+* Case 6, no information to guide us.
+*
+ IF( TTYPE.EQ.-6 ) THEN
+ G = G + THIRD*( ONE-G )
+ ELSE IF( TTYPE.EQ.-18 ) THEN
+ G = QURTR*THIRD
+ ELSE
+ G = QURTR
+ END IF
+ S = G*DMIN
+ TTYPE = -6
+ END IF
+*
+ ELSE IF( N0IN.EQ.( N0+1 ) ) THEN
+*
+* One eigenvalue just deflated. Use DMIN1, DN1 for DMIN and DN.
+*
+ IF( DMIN1.EQ.DN1 .AND. DMIN2.EQ.DN2 ) THEN
+*
+* Cases 7 and 8.
+*
+ TTYPE = -7
+ S = THIRD*DMIN1
+ IF( Z( NN-5 ).GT.Z( NN-7 ) )
+ $ RETURN
+ B1 = Z( NN-5 ) / Z( NN-7 )
+ B2 = B1
+ IF( B2.EQ.ZERO )
+ $ GO TO 60
+ DO 50 I4 = 4*N0 - 9 + PP, 4*I0 - 1 + PP, -4
+ A2 = B1
+ IF( Z( I4 ).GT.Z( I4-2 ) )
+ $ RETURN
+ B1 = B1*( Z( I4 ) / Z( I4-2 ) )
+ B2 = B2 + B1
+ IF( HUNDRD*MAX( B1, A2 ).LT.B2 )
+ $ GO TO 60
+ 50 CONTINUE
+ 60 CONTINUE
+ B2 = SQRT( CNST3*B2 )
+ A2 = DMIN1 / ( ONE+B2**2 )
+ GAP2 = HALF*DMIN2 - A2
+ IF( GAP2.GT.ZERO .AND. GAP2.GT.B2*A2 ) THEN
+ S = MAX( S, A2*( ONE-CNST2*A2*( B2 / GAP2 )*B2 ) )
+ ELSE
+ S = MAX( S, A2*( ONE-CNST2*B2 ) )
+ TTYPE = -8
+ END IF
+ ELSE
+*
+* Case 9.
+*
+ S = QURTR*DMIN1
+ IF( DMIN1.EQ.DN1 )
+ $ S = HALF*DMIN1
+ TTYPE = -9
+ END IF
+*
+ ELSE IF( N0IN.EQ.( N0+2 ) ) THEN
+*
+* Two eigenvalues deflated. Use DMIN2, DN2 for DMIN and DN.
+*
+* Cases 10 and 11.
+*
+ IF( DMIN2.EQ.DN2 .AND. TWO*Z( NN-5 ).LT.Z( NN-7 ) ) THEN
+ TTYPE = -10
+ S = THIRD*DMIN2
+ IF( Z( NN-5 ).GT.Z( NN-7 ) )
+ $ RETURN
+ B1 = Z( NN-5 ) / Z( NN-7 )
+ B2 = B1
+ IF( B2.EQ.ZERO )
+ $ GO TO 80
+ DO 70 I4 = 4*N0 - 9 + PP, 4*I0 - 1 + PP, -4
+ IF( Z( I4 ).GT.Z( I4-2 ) )
+ $ RETURN
+ B1 = B1*( Z( I4 ) / Z( I4-2 ) )
+ B2 = B2 + B1
+ IF( HUNDRD*B1.LT.B2 )
+ $ GO TO 80
+ 70 CONTINUE
+ 80 CONTINUE
+ B2 = SQRT( CNST3*B2 )
+ A2 = DMIN2 / ( ONE+B2**2 )
+ GAP2 = Z( NN-7 ) + Z( NN-9 ) -
+ $ SQRT( Z( NN-11 ) )*SQRT( Z( NN-9 ) ) - A2
+ IF( GAP2.GT.ZERO .AND. GAP2.GT.B2*A2 ) THEN
+ S = MAX( S, A2*( ONE-CNST2*A2*( B2 / GAP2 )*B2 ) )
+ ELSE
+ S = MAX( S, A2*( ONE-CNST2*B2 ) )
+ END IF
+ ELSE
+ S = QURTR*DMIN2
+ TTYPE = -11
+ END IF
+ ELSE IF( N0IN.GT.( N0+2 ) ) THEN
+*
+* Case 12, more than two eigenvalues deflated. No information.
+*
+ S = ZERO
+ TTYPE = -12
+ END IF
+*
+ TAU = S
+ RETURN
+*
+* End of DLASQ4
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasq5.f b/2.3-1/src/fortran/lapack/dlasq5.f
new file mode 100644
index 00000000..a006c99e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasq5.f
@@ -0,0 +1,195 @@
+ SUBROUTINE DLASQ5( I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN,
+ $ DNM1, DNM2, IEEE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE
+ INTEGER I0, N0, PP
+ DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASQ5 computes one dqds transform in ping-pong form, one
+* version for IEEE machines another for non IEEE machines.
+*
+* Arguments
+* =========
+*
+* I0 (input) INTEGER
+* First index.
+*
+* N0 (input) INTEGER
+* Last index.
+*
+* Z (input) DOUBLE PRECISION array, dimension ( 4*N )
+* Z holds the qd array. EMIN is stored in Z(4*N0) to avoid
+* an extra argument.
+*
+* PP (input) INTEGER
+* PP=0 for ping, PP=1 for pong.
+*
+* TAU (input) DOUBLE PRECISION
+* This is the shift.
+*
+* DMIN (output) DOUBLE PRECISION
+* Minimum value of d.
+*
+* DMIN1 (output) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ).
+*
+* DMIN2 (output) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+* DN (output) DOUBLE PRECISION
+* d(N0), the last value of d.
+*
+* DNM1 (output) DOUBLE PRECISION
+* d(N0-1).
+*
+* DNM2 (output) DOUBLE PRECISION
+* d(N0-2).
+*
+* IEEE (input) LOGICAL
+* Flag for IEEE or non IEEE arithmetic.
+*
+* =====================================================================
+*
+* .. Parameter ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER J4, J4P2
+ DOUBLE PRECISION D, EMIN, TEMP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( ( N0-I0-1 ).LE.0 )
+ $ RETURN
+*
+ J4 = 4*I0 + PP - 3
+ EMIN = Z( J4+4 )
+ D = Z( J4 ) - TAU
+ DMIN = D
+ DMIN1 = -Z( J4 )
+*
+ IF( IEEE ) THEN
+*
+* Code for IEEE arithmetic.
+*
+ IF( PP.EQ.0 ) THEN
+ DO 10 J4 = 4*I0, 4*( N0-3 ), 4
+ Z( J4-2 ) = D + Z( J4-1 )
+ TEMP = Z( J4+1 ) / Z( J4-2 )
+ D = D*TEMP - TAU
+ DMIN = MIN( DMIN, D )
+ Z( J4 ) = Z( J4-1 )*TEMP
+ EMIN = MIN( Z( J4 ), EMIN )
+ 10 CONTINUE
+ ELSE
+ DO 20 J4 = 4*I0, 4*( N0-3 ), 4
+ Z( J4-3 ) = D + Z( J4 )
+ TEMP = Z( J4+2 ) / Z( J4-3 )
+ D = D*TEMP - TAU
+ DMIN = MIN( DMIN, D )
+ Z( J4-1 ) = Z( J4 )*TEMP
+ EMIN = MIN( Z( J4-1 ), EMIN )
+ 20 CONTINUE
+ END IF
+*
+* Unroll last two steps.
+*
+ DNM2 = D
+ DMIN2 = DMIN
+ J4 = 4*( N0-2 ) - PP
+ J4P2 = J4 + 2*PP - 1
+ Z( J4-2 ) = DNM2 + Z( J4P2 )
+ Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+ DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) ) - TAU
+ DMIN = MIN( DMIN, DNM1 )
+*
+ DMIN1 = DMIN
+ J4 = J4 + 4
+ J4P2 = J4 + 2*PP - 1
+ Z( J4-2 ) = DNM1 + Z( J4P2 )
+ Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+ DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) ) - TAU
+ DMIN = MIN( DMIN, DN )
+*
+ ELSE
+*
+* Code for non IEEE arithmetic.
+*
+ IF( PP.EQ.0 ) THEN
+ DO 30 J4 = 4*I0, 4*( N0-3 ), 4
+ Z( J4-2 ) = D + Z( J4-1 )
+ IF( D.LT.ZERO ) THEN
+ RETURN
+ ELSE
+ Z( J4 ) = Z( J4+1 )*( Z( J4-1 ) / Z( J4-2 ) )
+ D = Z( J4+1 )*( D / Z( J4-2 ) ) - TAU
+ END IF
+ DMIN = MIN( DMIN, D )
+ EMIN = MIN( EMIN, Z( J4 ) )
+ 30 CONTINUE
+ ELSE
+ DO 40 J4 = 4*I0, 4*( N0-3 ), 4
+ Z( J4-3 ) = D + Z( J4 )
+ IF( D.LT.ZERO ) THEN
+ RETURN
+ ELSE
+ Z( J4-1 ) = Z( J4+2 )*( Z( J4 ) / Z( J4-3 ) )
+ D = Z( J4+2 )*( D / Z( J4-3 ) ) - TAU
+ END IF
+ DMIN = MIN( DMIN, D )
+ EMIN = MIN( EMIN, Z( J4-1 ) )
+ 40 CONTINUE
+ END IF
+*
+* Unroll last two steps.
+*
+ DNM2 = D
+ DMIN2 = DMIN
+ J4 = 4*( N0-2 ) - PP
+ J4P2 = J4 + 2*PP - 1
+ Z( J4-2 ) = DNM2 + Z( J4P2 )
+ IF( DNM2.LT.ZERO ) THEN
+ RETURN
+ ELSE
+ Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+ DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) ) - TAU
+ END IF
+ DMIN = MIN( DMIN, DNM1 )
+*
+ DMIN1 = DMIN
+ J4 = J4 + 4
+ J4P2 = J4 + 2*PP - 1
+ Z( J4-2 ) = DNM1 + Z( J4P2 )
+ IF( DNM1.LT.ZERO ) THEN
+ RETURN
+ ELSE
+ Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+ DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) ) - TAU
+ END IF
+ DMIN = MIN( DMIN, DN )
+*
+ END IF
+*
+ Z( J4+2 ) = DN
+ Z( 4*N0-PP ) = EMIN
+ RETURN
+*
+* End of DLASQ5
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasq6.f b/2.3-1/src/fortran/lapack/dlasq6.f
new file mode 100644
index 00000000..e7eb7d0a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasq6.f
@@ -0,0 +1,175 @@
+ SUBROUTINE DLASQ6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN,
+ $ DNM1, DNM2 )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER I0, N0, PP
+ DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASQ6 computes one dqd (shift equal to zero) transform in
+* ping-pong form, with protection against underflow and overflow.
+*
+* Arguments
+* =========
+*
+* I0 (input) INTEGER
+* First index.
+*
+* N0 (input) INTEGER
+* Last index.
+*
+* Z (input) DOUBLE PRECISION array, dimension ( 4*N )
+* Z holds the qd array. EMIN is stored in Z(4*N0) to avoid
+* an extra argument.
+*
+* PP (input) INTEGER
+* PP=0 for ping, PP=1 for pong.
+*
+* DMIN (output) DOUBLE PRECISION
+* Minimum value of d.
+*
+* DMIN1 (output) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ).
+*
+* DMIN2 (output) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+* DN (output) DOUBLE PRECISION
+* d(N0), the last value of d.
+*
+* DNM1 (output) DOUBLE PRECISION
+* d(N0-1).
+*
+* DNM2 (output) DOUBLE PRECISION
+* d(N0-2).
+*
+* =====================================================================
+*
+* .. Parameter ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER J4, J4P2
+ DOUBLE PRECISION D, EMIN, SAFMIN, TEMP
+* ..
+* .. External Function ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( ( N0-I0-1 ).LE.0 )
+ $ RETURN
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ J4 = 4*I0 + PP - 3
+ EMIN = Z( J4+4 )
+ D = Z( J4 )
+ DMIN = D
+*
+ IF( PP.EQ.0 ) THEN
+ DO 10 J4 = 4*I0, 4*( N0-3 ), 4
+ Z( J4-2 ) = D + Z( J4-1 )
+ IF( Z( J4-2 ).EQ.ZERO ) THEN
+ Z( J4 ) = ZERO
+ D = Z( J4+1 )
+ DMIN = D
+ EMIN = ZERO
+ ELSE IF( SAFMIN*Z( J4+1 ).LT.Z( J4-2 ) .AND.
+ $ SAFMIN*Z( J4-2 ).LT.Z( J4+1 ) ) THEN
+ TEMP = Z( J4+1 ) / Z( J4-2 )
+ Z( J4 ) = Z( J4-1 )*TEMP
+ D = D*TEMP
+ ELSE
+ Z( J4 ) = Z( J4+1 )*( Z( J4-1 ) / Z( J4-2 ) )
+ D = Z( J4+1 )*( D / Z( J4-2 ) )
+ END IF
+ DMIN = MIN( DMIN, D )
+ EMIN = MIN( EMIN, Z( J4 ) )
+ 10 CONTINUE
+ ELSE
+ DO 20 J4 = 4*I0, 4*( N0-3 ), 4
+ Z( J4-3 ) = D + Z( J4 )
+ IF( Z( J4-3 ).EQ.ZERO ) THEN
+ Z( J4-1 ) = ZERO
+ D = Z( J4+2 )
+ DMIN = D
+ EMIN = ZERO
+ ELSE IF( SAFMIN*Z( J4+2 ).LT.Z( J4-3 ) .AND.
+ $ SAFMIN*Z( J4-3 ).LT.Z( J4+2 ) ) THEN
+ TEMP = Z( J4+2 ) / Z( J4-3 )
+ Z( J4-1 ) = Z( J4 )*TEMP
+ D = D*TEMP
+ ELSE
+ Z( J4-1 ) = Z( J4+2 )*( Z( J4 ) / Z( J4-3 ) )
+ D = Z( J4+2 )*( D / Z( J4-3 ) )
+ END IF
+ DMIN = MIN( DMIN, D )
+ EMIN = MIN( EMIN, Z( J4-1 ) )
+ 20 CONTINUE
+ END IF
+*
+* Unroll last two steps.
+*
+ DNM2 = D
+ DMIN2 = DMIN
+ J4 = 4*( N0-2 ) - PP
+ J4P2 = J4 + 2*PP - 1
+ Z( J4-2 ) = DNM2 + Z( J4P2 )
+ IF( Z( J4-2 ).EQ.ZERO ) THEN
+ Z( J4 ) = ZERO
+ DNM1 = Z( J4P2+2 )
+ DMIN = DNM1
+ EMIN = ZERO
+ ELSE IF( SAFMIN*Z( J4P2+2 ).LT.Z( J4-2 ) .AND.
+ $ SAFMIN*Z( J4-2 ).LT.Z( J4P2+2 ) ) THEN
+ TEMP = Z( J4P2+2 ) / Z( J4-2 )
+ Z( J4 ) = Z( J4P2 )*TEMP
+ DNM1 = DNM2*TEMP
+ ELSE
+ Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+ DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) )
+ END IF
+ DMIN = MIN( DMIN, DNM1 )
+*
+ DMIN1 = DMIN
+ J4 = J4 + 4
+ J4P2 = J4 + 2*PP - 1
+ Z( J4-2 ) = DNM1 + Z( J4P2 )
+ IF( Z( J4-2 ).EQ.ZERO ) THEN
+ Z( J4 ) = ZERO
+ DN = Z( J4P2+2 )
+ DMIN = DN
+ EMIN = ZERO
+ ELSE IF( SAFMIN*Z( J4P2+2 ).LT.Z( J4-2 ) .AND.
+ $ SAFMIN*Z( J4-2 ).LT.Z( J4P2+2 ) ) THEN
+ TEMP = Z( J4P2+2 ) / Z( J4-2 )
+ Z( J4 ) = Z( J4P2 )*TEMP
+ DN = DNM1*TEMP
+ ELSE
+ Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+ DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) )
+ END IF
+ DMIN = MIN( DMIN, DN )
+*
+ Z( J4+2 ) = DN
+ Z( 4*N0-PP ) = EMIN
+ RETURN
+*
+* End of DLASQ6
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasr.f b/2.3-1/src/fortran/lapack/dlasr.f
new file mode 100644
index 00000000..7e54bfc7
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasr.f
@@ -0,0 +1,361 @@
+ SUBROUTINE DLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, PIVOT, SIDE
+ INTEGER LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( * ), S( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASR applies a sequence of plane rotations to a real matrix A,
+* from either the left or the right.
+*
+* When SIDE = 'L', the transformation takes the form
+*
+* A := P*A
+*
+* and when SIDE = 'R', the transformation takes the form
+*
+* A := A*P**T
+*
+* where P is an orthogonal matrix consisting of a sequence of z plane
+* rotations, with z = M when SIDE = 'L' and z = N when SIDE = 'R',
+* and P**T is the transpose of P.
+*
+* When DIRECT = 'F' (Forward sequence), then
+*
+* P = P(z-1) * ... * P(2) * P(1)
+*
+* and when DIRECT = 'B' (Backward sequence), then
+*
+* P = P(1) * P(2) * ... * P(z-1)
+*
+* where P(k) is a plane rotation matrix defined by the 2-by-2 rotation
+*
+* R(k) = ( c(k) s(k) )
+* = ( -s(k) c(k) ).
+*
+* When PIVOT = 'V' (Variable pivot), the rotation is performed
+* for the plane (k,k+1), i.e., P(k) has the form
+*
+* P(k) = ( 1 )
+* ( ... )
+* ( 1 )
+* ( c(k) s(k) )
+* ( -s(k) c(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+*
+* where R(k) appears as a rank-2 modification to the identity matrix in
+* rows and columns k and k+1.
+*
+* When PIVOT = 'T' (Top pivot), the rotation is performed for the
+* plane (1,k+1), so P(k) has the form
+*
+* P(k) = ( c(k) s(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+* ( -s(k) c(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+*
+* where R(k) appears in rows and columns 1 and k+1.
+*
+* Similarly, when PIVOT = 'B' (Bottom pivot), the rotation is
+* performed for the plane (k,z), giving P(k) the form
+*
+* P(k) = ( 1 )
+* ( ... )
+* ( 1 )
+* ( c(k) s(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+* ( -s(k) c(k) )
+*
+* where R(k) appears in rows and columns k and z. The rotations are
+* performed without ever forming P(k) explicitly.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* Specifies whether the plane rotation matrix P is applied to
+* A on the left or the right.
+* = 'L': Left, compute A := P*A
+* = 'R': Right, compute A:= A*P**T
+*
+* PIVOT (input) CHARACTER*1
+* Specifies the plane for which P(k) is a plane rotation
+* matrix.
+* = 'V': Variable pivot, the plane (k,k+1)
+* = 'T': Top pivot, the plane (1,k+1)
+* = 'B': Bottom pivot, the plane (k,z)
+*
+* DIRECT (input) CHARACTER*1
+* Specifies whether P is a forward or backward sequence of
+* plane rotations.
+* = 'F': Forward, P = P(z-1)*...*P(2)*P(1)
+* = 'B': Backward, P = P(1)*P(2)*...*P(z-1)
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. If m <= 1, an immediate
+* return is effected.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. If n <= 1, an
+* immediate return is effected.
+*
+* C (input) DOUBLE PRECISION array, dimension
+* (M-1) if SIDE = 'L'
+* (N-1) if SIDE = 'R'
+* The cosines c(k) of the plane rotations.
+*
+* S (input) DOUBLE PRECISION array, dimension
+* (M-1) if SIDE = 'L'
+* (N-1) if SIDE = 'R'
+* The sines s(k) of the plane rotations. The 2-by-2 plane
+* rotation part of the matrix P(k), R(k), has the form
+* R(k) = ( c(k) s(k) )
+* ( -s(k) c(k) ).
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* The M-by-N matrix A. On exit, A is overwritten by P*A if
+* SIDE = 'R' or by A*P**T if SIDE = 'L'.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, INFO, J
+ DOUBLE PRECISION CTEMP, STEMP, TEMP
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( .NOT.( LSAME( SIDE, 'L' ) .OR. LSAME( SIDE, 'R' ) ) ) THEN
+ INFO = 1
+ ELSE IF( .NOT.( LSAME( PIVOT, 'V' ) .OR. LSAME( PIVOT,
+ $ 'T' ) .OR. LSAME( PIVOT, 'B' ) ) ) THEN
+ INFO = 2
+ ELSE IF( .NOT.( LSAME( DIRECT, 'F' ) .OR. LSAME( DIRECT, 'B' ) ) )
+ $ THEN
+ INFO = 3
+ ELSE IF( M.LT.0 ) THEN
+ INFO = 4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = 5
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DLASR ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) )
+ $ RETURN
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form P * A
+*
+ IF( LSAME( PIVOT, 'V' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 20 J = 1, M - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 10 I = 1, N
+ TEMP = A( J+1, I )
+ A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
+ A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 40 J = M - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 30 I = 1, N
+ TEMP = A( J+1, I )
+ A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
+ A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
+ 30 CONTINUE
+ END IF
+ 40 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'T' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 60 J = 2, M
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 50 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
+ A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 80 J = M, 2, -1
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 70 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
+ A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
+ 70 CONTINUE
+ END IF
+ 80 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'B' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 100 J = 1, M - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 90 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
+ A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
+ 90 CONTINUE
+ END IF
+ 100 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 120 J = M - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 110 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
+ A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+ END IF
+ END IF
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form A * P'
+*
+ IF( LSAME( PIVOT, 'V' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 140 J = 1, N - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 130 I = 1, M
+ TEMP = A( I, J+1 )
+ A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
+ A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
+ 130 CONTINUE
+ END IF
+ 140 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 160 J = N - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 150 I = 1, M
+ TEMP = A( I, J+1 )
+ A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
+ A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
+ 150 CONTINUE
+ END IF
+ 160 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'T' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 180 J = 2, N
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 170 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
+ A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
+ 170 CONTINUE
+ END IF
+ 180 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 200 J = N, 2, -1
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 190 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
+ A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
+ 190 CONTINUE
+ END IF
+ 200 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'B' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 220 J = 1, N - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 210 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
+ A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
+ 210 CONTINUE
+ END IF
+ 220 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 240 J = N - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 230 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
+ A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
+ 230 CONTINUE
+ END IF
+ 240 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DLASR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasrt.f b/2.3-1/src/fortran/lapack/dlasrt.f
new file mode 100644
index 00000000..37e02178
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasrt.f
@@ -0,0 +1,243 @@
+ SUBROUTINE DLASRT( ID, N, D, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER ID
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * )
+* ..
+*
+* Purpose
+* =======
+*
+* Sort the numbers in D in increasing order (if ID = 'I') or
+* in decreasing order (if ID = 'D' ).
+*
+* Use Quick Sort, reverting to Insertion sort on arrays of
+* size <= 20. Dimension of STACK limits N to about 2**32.
+*
+* Arguments
+* =========
+*
+* ID (input) CHARACTER*1
+* = 'I': sort D in increasing order;
+* = 'D': sort D in decreasing order.
+*
+* N (input) INTEGER
+* The length of the array D.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the array to be sorted.
+* On exit, D has been sorted into increasing order
+* (D(1) <= ... <= D(N) ) or into decreasing order
+* (D(1) >= ... >= D(N) ), depending on ID.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER SELECT
+ PARAMETER ( SELECT = 20 )
+* ..
+* .. Local Scalars ..
+ INTEGER DIR, ENDD, I, J, START, STKPNT
+ DOUBLE PRECISION D1, D2, D3, DMNMX, TMP
+* ..
+* .. Local Arrays ..
+ INTEGER STACK( 2, 32 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input paramters.
+*
+ INFO = 0
+ DIR = -1
+ IF( LSAME( ID, 'D' ) ) THEN
+ DIR = 0
+ ELSE IF( LSAME( ID, 'I' ) ) THEN
+ DIR = 1
+ END IF
+ IF( DIR.EQ.-1 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DLASRT', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ STKPNT = 1
+ STACK( 1, 1 ) = 1
+ STACK( 2, 1 ) = N
+ 10 CONTINUE
+ START = STACK( 1, STKPNT )
+ ENDD = STACK( 2, STKPNT )
+ STKPNT = STKPNT - 1
+ IF( ENDD-START.LE.SELECT .AND. ENDD-START.GT.0 ) THEN
+*
+* Do Insertion sort on D( START:ENDD )
+*
+ IF( DIR.EQ.0 ) THEN
+*
+* Sort into decreasing order
+*
+ DO 30 I = START + 1, ENDD
+ DO 20 J = I, START + 1, -1
+ IF( D( J ).GT.D( J-1 ) ) THEN
+ DMNMX = D( J )
+ D( J ) = D( J-1 )
+ D( J-1 ) = DMNMX
+ ELSE
+ GO TO 30
+ END IF
+ 20 CONTINUE
+ 30 CONTINUE
+*
+ ELSE
+*
+* Sort into increasing order
+*
+ DO 50 I = START + 1, ENDD
+ DO 40 J = I, START + 1, -1
+ IF( D( J ).LT.D( J-1 ) ) THEN
+ DMNMX = D( J )
+ D( J ) = D( J-1 )
+ D( J-1 ) = DMNMX
+ ELSE
+ GO TO 50
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+*
+ END IF
+*
+ ELSE IF( ENDD-START.GT.SELECT ) THEN
+*
+* Partition D( START:ENDD ) and stack parts, largest one first
+*
+* Choose partition entry as median of 3
+*
+ D1 = D( START )
+ D2 = D( ENDD )
+ I = ( START+ENDD ) / 2
+ D3 = D( I )
+ IF( D1.LT.D2 ) THEN
+ IF( D3.LT.D1 ) THEN
+ DMNMX = D1
+ ELSE IF( D3.LT.D2 ) THEN
+ DMNMX = D3
+ ELSE
+ DMNMX = D2
+ END IF
+ ELSE
+ IF( D3.LT.D2 ) THEN
+ DMNMX = D2
+ ELSE IF( D3.LT.D1 ) THEN
+ DMNMX = D3
+ ELSE
+ DMNMX = D1
+ END IF
+ END IF
+*
+ IF( DIR.EQ.0 ) THEN
+*
+* Sort into decreasing order
+*
+ I = START - 1
+ J = ENDD + 1
+ 60 CONTINUE
+ 70 CONTINUE
+ J = J - 1
+ IF( D( J ).LT.DMNMX )
+ $ GO TO 70
+ 80 CONTINUE
+ I = I + 1
+ IF( D( I ).GT.DMNMX )
+ $ GO TO 80
+ IF( I.LT.J ) THEN
+ TMP = D( I )
+ D( I ) = D( J )
+ D( J ) = TMP
+ GO TO 60
+ END IF
+ IF( J-START.GT.ENDD-J-1 ) THEN
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = START
+ STACK( 2, STKPNT ) = J
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = J + 1
+ STACK( 2, STKPNT ) = ENDD
+ ELSE
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = J + 1
+ STACK( 2, STKPNT ) = ENDD
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = START
+ STACK( 2, STKPNT ) = J
+ END IF
+ ELSE
+*
+* Sort into increasing order
+*
+ I = START - 1
+ J = ENDD + 1
+ 90 CONTINUE
+ 100 CONTINUE
+ J = J - 1
+ IF( D( J ).GT.DMNMX )
+ $ GO TO 100
+ 110 CONTINUE
+ I = I + 1
+ IF( D( I ).LT.DMNMX )
+ $ GO TO 110
+ IF( I.LT.J ) THEN
+ TMP = D( I )
+ D( I ) = D( J )
+ D( J ) = TMP
+ GO TO 90
+ END IF
+ IF( J-START.GT.ENDD-J-1 ) THEN
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = START
+ STACK( 2, STKPNT ) = J
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = J + 1
+ STACK( 2, STKPNT ) = ENDD
+ ELSE
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = J + 1
+ STACK( 2, STKPNT ) = ENDD
+ STKPNT = STKPNT + 1
+ STACK( 1, STKPNT ) = START
+ STACK( 2, STKPNT ) = J
+ END IF
+ END IF
+ END IF
+ IF( STKPNT.GT.0 )
+ $ GO TO 10
+ RETURN
+*
+* End of DLASRT
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlassq.f b/2.3-1/src/fortran/lapack/dlassq.f
new file mode 100644
index 00000000..217e794d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlassq.f
@@ -0,0 +1,88 @@
+ SUBROUTINE DLASSQ( N, X, INCX, SCALE, SUMSQ )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ DOUBLE PRECISION SCALE, SUMSQ
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASSQ returns the values scl and smsq such that
+*
+* ( scl**2 )*smsq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq,
+*
+* where x( i ) = X( 1 + ( i - 1 )*INCX ). The value of sumsq is
+* assumed to be non-negative and scl returns the value
+*
+* scl = max( scale, abs( x( i ) ) ).
+*
+* scale and sumsq must be supplied in SCALE and SUMSQ and
+* scl and smsq are overwritten on SCALE and SUMSQ respectively.
+*
+* The routine makes only one pass through the vector x.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of elements to be used from the vector X.
+*
+* X (input) DOUBLE PRECISION array, dimension (N)
+* The vector for which a scaled sum of squares is computed.
+* x( i ) = X( 1 + ( i - 1 )*INCX ), 1 <= i <= n.
+*
+* INCX (input) INTEGER
+* The increment between successive values of the vector X.
+* INCX > 0.
+*
+* SCALE (input/output) DOUBLE PRECISION
+* On entry, the value scale in the equation above.
+* On exit, SCALE is overwritten with scl , the scaling factor
+* for the sum of squares.
+*
+* SUMSQ (input/output) DOUBLE PRECISION
+* On entry, the value sumsq in the equation above.
+* On exit, SUMSQ is overwritten with smsq , the basic sum of
+* squares from which scl has been factored out.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER IX
+ DOUBLE PRECISION ABSXI
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+*
+ IF( N.GT.0 ) THEN
+ DO 10 IX = 1, 1 + ( N-1 )*INCX, INCX
+ IF( X( IX ).NE.ZERO ) THEN
+ ABSXI = ABS( X( IX ) )
+ IF( SCALE.LT.ABSXI ) THEN
+ SUMSQ = 1 + SUMSQ*( SCALE / ABSXI )**2
+ SCALE = ABSXI
+ ELSE
+ SUMSQ = SUMSQ + ( ABSXI / SCALE )**2
+ END IF
+ END IF
+ 10 CONTINUE
+ END IF
+ RETURN
+*
+* End of DLASSQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasv2.f b/2.3-1/src/fortran/lapack/dlasv2.f
new file mode 100644
index 00000000..4a00b25d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasv2.f
@@ -0,0 +1,249 @@
+ SUBROUTINE DLASV2( F, G, H, SSMIN, SSMAX, SNR, CSR, SNL, CSL )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION CSL, CSR, F, G, H, SNL, SNR, SSMAX, SSMIN
+* ..
+*
+* Purpose
+* =======
+*
+* DLASV2 computes the singular value decomposition of a 2-by-2
+* triangular matrix
+* [ F G ]
+* [ 0 H ].
+* On return, abs(SSMAX) is the larger singular value, abs(SSMIN) is the
+* smaller singular value, and (CSL,SNL) and (CSR,SNR) are the left and
+* right singular vectors for abs(SSMAX), giving the decomposition
+*
+* [ CSL SNL ] [ F G ] [ CSR -SNR ] = [ SSMAX 0 ]
+* [-SNL CSL ] [ 0 H ] [ SNR CSR ] [ 0 SSMIN ].
+*
+* Arguments
+* =========
+*
+* F (input) DOUBLE PRECISION
+* The (1,1) element of the 2-by-2 matrix.
+*
+* G (input) DOUBLE PRECISION
+* The (1,2) element of the 2-by-2 matrix.
+*
+* H (input) DOUBLE PRECISION
+* The (2,2) element of the 2-by-2 matrix.
+*
+* SSMIN (output) DOUBLE PRECISION
+* abs(SSMIN) is the smaller singular value.
+*
+* SSMAX (output) DOUBLE PRECISION
+* abs(SSMAX) is the larger singular value.
+*
+* SNL (output) DOUBLE PRECISION
+* CSL (output) DOUBLE PRECISION
+* The vector (CSL, SNL) is a unit left singular vector for the
+* singular value abs(SSMAX).
+*
+* SNR (output) DOUBLE PRECISION
+* CSR (output) DOUBLE PRECISION
+* The vector (CSR, SNR) is a unit right singular vector for the
+* singular value abs(SSMAX).
+*
+* Further Details
+* ===============
+*
+* Any input parameter may be aliased with any output parameter.
+*
+* Barring over/underflow and assuming a guard digit in subtraction, all
+* output quantities are correct to within a few units in the last
+* place (ulps).
+*
+* In IEEE arithmetic, the code works correctly if one matrix element is
+* infinite.
+*
+* Overflow will not occur unless the largest singular value itself
+* overflows or is within a few ulps of overflow. (On machines with
+* partial overflow, like the Cray, overflow may occur if the largest
+* singular value is within a factor of 2 of overflow.)
+*
+* Underflow is harmless if underflow is gradual. Otherwise, results
+* may correspond to a matrix modified by perturbations of size near
+* the underflow threshold.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION HALF
+ PARAMETER ( HALF = 0.5D0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0D0 )
+ DOUBLE PRECISION FOUR
+ PARAMETER ( FOUR = 4.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL GASMAL, SWAP
+ INTEGER PMAX
+ DOUBLE PRECISION A, CLT, CRT, D, FA, FT, GA, GT, HA, HT, L, M,
+ $ MM, R, S, SLT, SRT, T, TEMP, TSIGN, TT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SIGN, SQRT
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Executable Statements ..
+*
+ FT = F
+ FA = ABS( FT )
+ HT = H
+ HA = ABS( H )
+*
+* PMAX points to the maximum absolute element of matrix
+* PMAX = 1 if F largest in absolute values
+* PMAX = 2 if G largest in absolute values
+* PMAX = 3 if H largest in absolute values
+*
+ PMAX = 1
+ SWAP = ( HA.GT.FA )
+ IF( SWAP ) THEN
+ PMAX = 3
+ TEMP = FT
+ FT = HT
+ HT = TEMP
+ TEMP = FA
+ FA = HA
+ HA = TEMP
+*
+* Now FA .ge. HA
+*
+ END IF
+ GT = G
+ GA = ABS( GT )
+ IF( GA.EQ.ZERO ) THEN
+*
+* Diagonal matrix
+*
+ SSMIN = HA
+ SSMAX = FA
+ CLT = ONE
+ CRT = ONE
+ SLT = ZERO
+ SRT = ZERO
+ ELSE
+ GASMAL = .TRUE.
+ IF( GA.GT.FA ) THEN
+ PMAX = 2
+ IF( ( FA / GA ).LT.DLAMCH( 'EPS' ) ) THEN
+*
+* Case of very large GA
+*
+ GASMAL = .FALSE.
+ SSMAX = GA
+ IF( HA.GT.ONE ) THEN
+ SSMIN = FA / ( GA / HA )
+ ELSE
+ SSMIN = ( FA / GA )*HA
+ END IF
+ CLT = ONE
+ SLT = HT / GT
+ SRT = ONE
+ CRT = FT / GT
+ END IF
+ END IF
+ IF( GASMAL ) THEN
+*
+* Normal case
+*
+ D = FA - HA
+ IF( D.EQ.FA ) THEN
+*
+* Copes with infinite F or H
+*
+ L = ONE
+ ELSE
+ L = D / FA
+ END IF
+*
+* Note that 0 .le. L .le. 1
+*
+ M = GT / FT
+*
+* Note that abs(M) .le. 1/macheps
+*
+ T = TWO - L
+*
+* Note that T .ge. 1
+*
+ MM = M*M
+ TT = T*T
+ S = SQRT( TT+MM )
+*
+* Note that 1 .le. S .le. 1 + 1/macheps
+*
+ IF( L.EQ.ZERO ) THEN
+ R = ABS( M )
+ ELSE
+ R = SQRT( L*L+MM )
+ END IF
+*
+* Note that 0 .le. R .le. 1 + 1/macheps
+*
+ A = HALF*( S+R )
+*
+* Note that 1 .le. A .le. 1 + abs(M)
+*
+ SSMIN = HA / A
+ SSMAX = FA*A
+ IF( MM.EQ.ZERO ) THEN
+*
+* Note that M is very tiny
+*
+ IF( L.EQ.ZERO ) THEN
+ T = SIGN( TWO, FT )*SIGN( ONE, GT )
+ ELSE
+ T = GT / SIGN( D, FT ) + M / T
+ END IF
+ ELSE
+ T = ( M / ( S+T )+M / ( R+L ) )*( ONE+A )
+ END IF
+ L = SQRT( T*T+FOUR )
+ CRT = TWO / L
+ SRT = T / L
+ CLT = ( CRT+SRT*M ) / A
+ SLT = ( HT / FT )*SRT / A
+ END IF
+ END IF
+ IF( SWAP ) THEN
+ CSL = SRT
+ SNL = CRT
+ CSR = SLT
+ SNR = CLT
+ ELSE
+ CSL = CLT
+ SNL = SLT
+ CSR = CRT
+ SNR = SRT
+ END IF
+*
+* Correct signs of SSMAX and SSMIN
+*
+ IF( PMAX.EQ.1 )
+ $ TSIGN = SIGN( ONE, CSR )*SIGN( ONE, CSL )*SIGN( ONE, F )
+ IF( PMAX.EQ.2 )
+ $ TSIGN = SIGN( ONE, SNR )*SIGN( ONE, CSL )*SIGN( ONE, G )
+ IF( PMAX.EQ.3 )
+ $ TSIGN = SIGN( ONE, SNR )*SIGN( ONE, SNL )*SIGN( ONE, H )
+ SSMAX = SIGN( SSMAX, TSIGN )
+ SSMIN = SIGN( SSMIN, TSIGN*SIGN( ONE, F )*SIGN( ONE, H ) )
+ RETURN
+*
+* End of DLASV2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlaswp.f b/2.3-1/src/fortran/lapack/dlaswp.f
new file mode 100644
index 00000000..a11a87e9
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlaswp.f
@@ -0,0 +1,119 @@
+ SUBROUTINE DLASWP( N, A, LDA, K1, K2, IPIV, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, K1, K2, LDA, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASWP performs a series of row interchanges on the matrix A.
+* One row interchange is initiated for each of rows K1 through K2 of A.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of columns of the matrix A.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the matrix of column dimension N to which the row
+* interchanges will be applied.
+* On exit, the permuted matrix.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+*
+* K1 (input) INTEGER
+* The first element of IPIV for which a row interchange will
+* be done.
+*
+* K2 (input) INTEGER
+* The last element of IPIV for which a row interchange will
+* be done.
+*
+* IPIV (input) INTEGER array, dimension (K2*abs(INCX))
+* The vector of pivot indices. Only the elements in positions
+* K1 through K2 of IPIV are accessed.
+* IPIV(K) = L implies rows K and L are to be interchanged.
+*
+* INCX (input) INTEGER
+* The increment between successive values of IPIV. If IPIV
+* is negative, the pivots are applied in reverse order.
+*
+* Further Details
+* ===============
+*
+* Modified by
+* R. C. Whaley, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, I1, I2, INC, IP, IX, IX0, J, K, N32
+ DOUBLE PRECISION TEMP
+* ..
+* .. Executable Statements ..
+*
+* Interchange row I with row IPIV(I) for each of rows K1 through K2.
+*
+ IF( INCX.GT.0 ) THEN
+ IX0 = K1
+ I1 = K1
+ I2 = K2
+ INC = 1
+ ELSE IF( INCX.LT.0 ) THEN
+ IX0 = 1 + ( 1-K2 )*INCX
+ I1 = K2
+ I2 = K1
+ INC = -1
+ ELSE
+ RETURN
+ END IF
+*
+ N32 = ( N / 32 )*32
+ IF( N32.NE.0 ) THEN
+ DO 30 J = 1, N32, 32
+ IX = IX0
+ DO 20 I = I1, I2, INC
+ IP = IPIV( IX )
+ IF( IP.NE.I ) THEN
+ DO 10 K = J, J + 31
+ TEMP = A( I, K )
+ A( I, K ) = A( IP, K )
+ A( IP, K ) = TEMP
+ 10 CONTINUE
+ END IF
+ IX = IX + INCX
+ 20 CONTINUE
+ 30 CONTINUE
+ END IF
+ IF( N32.NE.N ) THEN
+ N32 = N32 + 1
+ IX = IX0
+ DO 50 I = I1, I2, INC
+ IP = IPIV( IX )
+ IF( IP.NE.I ) THEN
+ DO 40 K = N32, N
+ TEMP = A( I, K )
+ A( I, K ) = A( IP, K )
+ A( IP, K ) = TEMP
+ 40 CONTINUE
+ END IF
+ IX = IX + INCX
+ 50 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DLASWP
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasy2.f b/2.3-1/src/fortran/lapack/dlasy2.f
new file mode 100644
index 00000000..3ff12070
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasy2.f
@@ -0,0 +1,381 @@
+ SUBROUTINE DLASY2( LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR,
+ $ LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL LTRANL, LTRANR
+ INTEGER INFO, ISGN, LDB, LDTL, LDTR, LDX, N1, N2
+ DOUBLE PRECISION SCALE, XNORM
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION B( LDB, * ), TL( LDTL, * ), TR( LDTR, * ),
+ $ X( LDX, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASY2 solves for the N1 by N2 matrix X, 1 <= N1,N2 <= 2, in
+*
+* op(TL)*X + ISGN*X*op(TR) = SCALE*B,
+*
+* where TL is N1 by N1, TR is N2 by N2, B is N1 by N2, and ISGN = 1 or
+* -1. op(T) = T or T', where T' denotes the transpose of T.
+*
+* Arguments
+* =========
+*
+* LTRANL (input) LOGICAL
+* On entry, LTRANL specifies the op(TL):
+* = .FALSE., op(TL) = TL,
+* = .TRUE., op(TL) = TL'.
+*
+* LTRANR (input) LOGICAL
+* On entry, LTRANR specifies the op(TR):
+* = .FALSE., op(TR) = TR,
+* = .TRUE., op(TR) = TR'.
+*
+* ISGN (input) INTEGER
+* On entry, ISGN specifies the sign of the equation
+* as described before. ISGN may only be 1 or -1.
+*
+* N1 (input) INTEGER
+* On entry, N1 specifies the order of matrix TL.
+* N1 may only be 0, 1 or 2.
+*
+* N2 (input) INTEGER
+* On entry, N2 specifies the order of matrix TR.
+* N2 may only be 0, 1 or 2.
+*
+* TL (input) DOUBLE PRECISION array, dimension (LDTL,2)
+* On entry, TL contains an N1 by N1 matrix.
+*
+* LDTL (input) INTEGER
+* The leading dimension of the matrix TL. LDTL >= max(1,N1).
+*
+* TR (input) DOUBLE PRECISION array, dimension (LDTR,2)
+* On entry, TR contains an N2 by N2 matrix.
+*
+* LDTR (input) INTEGER
+* The leading dimension of the matrix TR. LDTR >= max(1,N2).
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB,2)
+* On entry, the N1 by N2 matrix B contains the right-hand
+* side of the equation.
+*
+* LDB (input) INTEGER
+* The leading dimension of the matrix B. LDB >= max(1,N1).
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit, SCALE contains the scale factor. SCALE is chosen
+* less than or equal to 1 to prevent the solution overflowing.
+*
+* X (output) DOUBLE PRECISION array, dimension (LDX,2)
+* On exit, X contains the N1 by N2 solution.
+*
+* LDX (input) INTEGER
+* The leading dimension of the matrix X. LDX >= max(1,N1).
+*
+* XNORM (output) DOUBLE PRECISION
+* On exit, XNORM is the infinity-norm of the solution.
+*
+* INFO (output) INTEGER
+* On exit, INFO is set to
+* 0: successful exit.
+* 1: TL and TR have too close eigenvalues, so TL or
+* TR is perturbed to get a nonsingular equation.
+* NOTE: In the interests of speed, this routine does not
+* check the inputs for errors.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION TWO, HALF, EIGHT
+ PARAMETER ( TWO = 2.0D+0, HALF = 0.5D+0, EIGHT = 8.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL BSWAP, XSWAP
+ INTEGER I, IP, IPIV, IPSV, J, JP, JPSV, K
+ DOUBLE PRECISION BET, EPS, GAM, L21, SGN, SMIN, SMLNUM, TAU1,
+ $ TEMP, U11, U12, U22, XMAX
+* ..
+* .. Local Arrays ..
+ LOGICAL BSWPIV( 4 ), XSWPIV( 4 )
+ INTEGER JPIV( 4 ), LOCL21( 4 ), LOCU12( 4 ),
+ $ LOCU22( 4 )
+ DOUBLE PRECISION BTMP( 4 ), T16( 4, 4 ), TMP( 4 ), X2( 2 )
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL IDAMAX, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Data statements ..
+ DATA LOCU12 / 3, 4, 1, 2 / , LOCL21 / 2, 1, 4, 3 / ,
+ $ LOCU22 / 4, 3, 2, 1 /
+ DATA XSWPIV / .FALSE., .FALSE., .TRUE., .TRUE. /
+ DATA BSWPIV / .FALSE., .TRUE., .FALSE., .TRUE. /
+* ..
+* .. Executable Statements ..
+*
+* Do not check the input parameters for errors
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N1.EQ.0 .OR. N2.EQ.0 )
+ $ RETURN
+*
+* Set constants to control overflow
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ SGN = ISGN
+*
+ K = N1 + N1 + N2 - 2
+ GO TO ( 10, 20, 30, 50 )K
+*
+* 1 by 1: TL11*X + SGN*X*TR11 = B11
+*
+ 10 CONTINUE
+ TAU1 = TL( 1, 1 ) + SGN*TR( 1, 1 )
+ BET = ABS( TAU1 )
+ IF( BET.LE.SMLNUM ) THEN
+ TAU1 = SMLNUM
+ BET = SMLNUM
+ INFO = 1
+ END IF
+*
+ SCALE = ONE
+ GAM = ABS( B( 1, 1 ) )
+ IF( SMLNUM*GAM.GT.BET )
+ $ SCALE = ONE / GAM
+*
+ X( 1, 1 ) = ( B( 1, 1 )*SCALE ) / TAU1
+ XNORM = ABS( X( 1, 1 ) )
+ RETURN
+*
+* 1 by 2:
+* TL11*[X11 X12] + ISGN*[X11 X12]*op[TR11 TR12] = [B11 B12]
+* [TR21 TR22]
+*
+ 20 CONTINUE
+*
+ SMIN = MAX( EPS*MAX( ABS( TL( 1, 1 ) ), ABS( TR( 1, 1 ) ),
+ $ ABS( TR( 1, 2 ) ), ABS( TR( 2, 1 ) ), ABS( TR( 2, 2 ) ) ),
+ $ SMLNUM )
+ TMP( 1 ) = TL( 1, 1 ) + SGN*TR( 1, 1 )
+ TMP( 4 ) = TL( 1, 1 ) + SGN*TR( 2, 2 )
+ IF( LTRANR ) THEN
+ TMP( 2 ) = SGN*TR( 2, 1 )
+ TMP( 3 ) = SGN*TR( 1, 2 )
+ ELSE
+ TMP( 2 ) = SGN*TR( 1, 2 )
+ TMP( 3 ) = SGN*TR( 2, 1 )
+ END IF
+ BTMP( 1 ) = B( 1, 1 )
+ BTMP( 2 ) = B( 1, 2 )
+ GO TO 40
+*
+* 2 by 1:
+* op[TL11 TL12]*[X11] + ISGN* [X11]*TR11 = [B11]
+* [TL21 TL22] [X21] [X21] [B21]
+*
+ 30 CONTINUE
+ SMIN = MAX( EPS*MAX( ABS( TR( 1, 1 ) ), ABS( TL( 1, 1 ) ),
+ $ ABS( TL( 1, 2 ) ), ABS( TL( 2, 1 ) ), ABS( TL( 2, 2 ) ) ),
+ $ SMLNUM )
+ TMP( 1 ) = TL( 1, 1 ) + SGN*TR( 1, 1 )
+ TMP( 4 ) = TL( 2, 2 ) + SGN*TR( 1, 1 )
+ IF( LTRANL ) THEN
+ TMP( 2 ) = TL( 1, 2 )
+ TMP( 3 ) = TL( 2, 1 )
+ ELSE
+ TMP( 2 ) = TL( 2, 1 )
+ TMP( 3 ) = TL( 1, 2 )
+ END IF
+ BTMP( 1 ) = B( 1, 1 )
+ BTMP( 2 ) = B( 2, 1 )
+ 40 CONTINUE
+*
+* Solve 2 by 2 system using complete pivoting.
+* Set pivots less than SMIN to SMIN.
+*
+ IPIV = IDAMAX( 4, TMP, 1 )
+ U11 = TMP( IPIV )
+ IF( ABS( U11 ).LE.SMIN ) THEN
+ INFO = 1
+ U11 = SMIN
+ END IF
+ U12 = TMP( LOCU12( IPIV ) )
+ L21 = TMP( LOCL21( IPIV ) ) / U11
+ U22 = TMP( LOCU22( IPIV ) ) - U12*L21
+ XSWAP = XSWPIV( IPIV )
+ BSWAP = BSWPIV( IPIV )
+ IF( ABS( U22 ).LE.SMIN ) THEN
+ INFO = 1
+ U22 = SMIN
+ END IF
+ IF( BSWAP ) THEN
+ TEMP = BTMP( 2 )
+ BTMP( 2 ) = BTMP( 1 ) - L21*TEMP
+ BTMP( 1 ) = TEMP
+ ELSE
+ BTMP( 2 ) = BTMP( 2 ) - L21*BTMP( 1 )
+ END IF
+ SCALE = ONE
+ IF( ( TWO*SMLNUM )*ABS( BTMP( 2 ) ).GT.ABS( U22 ) .OR.
+ $ ( TWO*SMLNUM )*ABS( BTMP( 1 ) ).GT.ABS( U11 ) ) THEN
+ SCALE = HALF / MAX( ABS( BTMP( 1 ) ), ABS( BTMP( 2 ) ) )
+ BTMP( 1 ) = BTMP( 1 )*SCALE
+ BTMP( 2 ) = BTMP( 2 )*SCALE
+ END IF
+ X2( 2 ) = BTMP( 2 ) / U22
+ X2( 1 ) = BTMP( 1 ) / U11 - ( U12 / U11 )*X2( 2 )
+ IF( XSWAP ) THEN
+ TEMP = X2( 2 )
+ X2( 2 ) = X2( 1 )
+ X2( 1 ) = TEMP
+ END IF
+ X( 1, 1 ) = X2( 1 )
+ IF( N1.EQ.1 ) THEN
+ X( 1, 2 ) = X2( 2 )
+ XNORM = ABS( X( 1, 1 ) ) + ABS( X( 1, 2 ) )
+ ELSE
+ X( 2, 1 ) = X2( 2 )
+ XNORM = MAX( ABS( X( 1, 1 ) ), ABS( X( 2, 1 ) ) )
+ END IF
+ RETURN
+*
+* 2 by 2:
+* op[TL11 TL12]*[X11 X12] +ISGN* [X11 X12]*op[TR11 TR12] = [B11 B12]
+* [TL21 TL22] [X21 X22] [X21 X22] [TR21 TR22] [B21 B22]
+*
+* Solve equivalent 4 by 4 system using complete pivoting.
+* Set pivots less than SMIN to SMIN.
+*
+ 50 CONTINUE
+ SMIN = MAX( ABS( TR( 1, 1 ) ), ABS( TR( 1, 2 ) ),
+ $ ABS( TR( 2, 1 ) ), ABS( TR( 2, 2 ) ) )
+ SMIN = MAX( SMIN, ABS( TL( 1, 1 ) ), ABS( TL( 1, 2 ) ),
+ $ ABS( TL( 2, 1 ) ), ABS( TL( 2, 2 ) ) )
+ SMIN = MAX( EPS*SMIN, SMLNUM )
+ BTMP( 1 ) = ZERO
+ CALL DCOPY( 16, BTMP, 0, T16, 1 )
+ T16( 1, 1 ) = TL( 1, 1 ) + SGN*TR( 1, 1 )
+ T16( 2, 2 ) = TL( 2, 2 ) + SGN*TR( 1, 1 )
+ T16( 3, 3 ) = TL( 1, 1 ) + SGN*TR( 2, 2 )
+ T16( 4, 4 ) = TL( 2, 2 ) + SGN*TR( 2, 2 )
+ IF( LTRANL ) THEN
+ T16( 1, 2 ) = TL( 2, 1 )
+ T16( 2, 1 ) = TL( 1, 2 )
+ T16( 3, 4 ) = TL( 2, 1 )
+ T16( 4, 3 ) = TL( 1, 2 )
+ ELSE
+ T16( 1, 2 ) = TL( 1, 2 )
+ T16( 2, 1 ) = TL( 2, 1 )
+ T16( 3, 4 ) = TL( 1, 2 )
+ T16( 4, 3 ) = TL( 2, 1 )
+ END IF
+ IF( LTRANR ) THEN
+ T16( 1, 3 ) = SGN*TR( 1, 2 )
+ T16( 2, 4 ) = SGN*TR( 1, 2 )
+ T16( 3, 1 ) = SGN*TR( 2, 1 )
+ T16( 4, 2 ) = SGN*TR( 2, 1 )
+ ELSE
+ T16( 1, 3 ) = SGN*TR( 2, 1 )
+ T16( 2, 4 ) = SGN*TR( 2, 1 )
+ T16( 3, 1 ) = SGN*TR( 1, 2 )
+ T16( 4, 2 ) = SGN*TR( 1, 2 )
+ END IF
+ BTMP( 1 ) = B( 1, 1 )
+ BTMP( 2 ) = B( 2, 1 )
+ BTMP( 3 ) = B( 1, 2 )
+ BTMP( 4 ) = B( 2, 2 )
+*
+* Perform elimination
+*
+ DO 100 I = 1, 3
+ XMAX = ZERO
+ DO 70 IP = I, 4
+ DO 60 JP = I, 4
+ IF( ABS( T16( IP, JP ) ).GE.XMAX ) THEN
+ XMAX = ABS( T16( IP, JP ) )
+ IPSV = IP
+ JPSV = JP
+ END IF
+ 60 CONTINUE
+ 70 CONTINUE
+ IF( IPSV.NE.I ) THEN
+ CALL DSWAP( 4, T16( IPSV, 1 ), 4, T16( I, 1 ), 4 )
+ TEMP = BTMP( I )
+ BTMP( I ) = BTMP( IPSV )
+ BTMP( IPSV ) = TEMP
+ END IF
+ IF( JPSV.NE.I )
+ $ CALL DSWAP( 4, T16( 1, JPSV ), 1, T16( 1, I ), 1 )
+ JPIV( I ) = JPSV
+ IF( ABS( T16( I, I ) ).LT.SMIN ) THEN
+ INFO = 1
+ T16( I, I ) = SMIN
+ END IF
+ DO 90 J = I + 1, 4
+ T16( J, I ) = T16( J, I ) / T16( I, I )
+ BTMP( J ) = BTMP( J ) - T16( J, I )*BTMP( I )
+ DO 80 K = I + 1, 4
+ T16( J, K ) = T16( J, K ) - T16( J, I )*T16( I, K )
+ 80 CONTINUE
+ 90 CONTINUE
+ 100 CONTINUE
+ IF( ABS( T16( 4, 4 ) ).LT.SMIN )
+ $ T16( 4, 4 ) = SMIN
+ SCALE = ONE
+ IF( ( EIGHT*SMLNUM )*ABS( BTMP( 1 ) ).GT.ABS( T16( 1, 1 ) ) .OR.
+ $ ( EIGHT*SMLNUM )*ABS( BTMP( 2 ) ).GT.ABS( T16( 2, 2 ) ) .OR.
+ $ ( EIGHT*SMLNUM )*ABS( BTMP( 3 ) ).GT.ABS( T16( 3, 3 ) ) .OR.
+ $ ( EIGHT*SMLNUM )*ABS( BTMP( 4 ) ).GT.ABS( T16( 4, 4 ) ) ) THEN
+ SCALE = ( ONE / EIGHT ) / MAX( ABS( BTMP( 1 ) ),
+ $ ABS( BTMP( 2 ) ), ABS( BTMP( 3 ) ), ABS( BTMP( 4 ) ) )
+ BTMP( 1 ) = BTMP( 1 )*SCALE
+ BTMP( 2 ) = BTMP( 2 )*SCALE
+ BTMP( 3 ) = BTMP( 3 )*SCALE
+ BTMP( 4 ) = BTMP( 4 )*SCALE
+ END IF
+ DO 120 I = 1, 4
+ K = 5 - I
+ TEMP = ONE / T16( K, K )
+ TMP( K ) = BTMP( K )*TEMP
+ DO 110 J = K + 1, 4
+ TMP( K ) = TMP( K ) - ( TEMP*T16( K, J ) )*TMP( J )
+ 110 CONTINUE
+ 120 CONTINUE
+ DO 130 I = 1, 3
+ IF( JPIV( 4-I ).NE.4-I ) THEN
+ TEMP = TMP( 4-I )
+ TMP( 4-I ) = TMP( JPIV( 4-I ) )
+ TMP( JPIV( 4-I ) ) = TEMP
+ END IF
+ 130 CONTINUE
+ X( 1, 1 ) = TMP( 1 )
+ X( 2, 1 ) = TMP( 2 )
+ X( 1, 2 ) = TMP( 3 )
+ X( 2, 2 ) = TMP( 4 )
+ XNORM = MAX( ABS( TMP( 1 ) )+ABS( TMP( 3 ) ),
+ $ ABS( TMP( 2 ) )+ABS( TMP( 4 ) ) )
+ RETURN
+*
+* End of DLASY2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlasyf.f b/2.3-1/src/fortran/lapack/dlasyf.f
new file mode 100644
index 00000000..67b9c147
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlasyf.f
@@ -0,0 +1,587 @@
+ SUBROUTINE DLASYF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, KB, LDA, LDW, N, NB
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), W( LDW, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLASYF computes a partial factorization of a real symmetric matrix A
+* using the Bunch-Kaufman diagonal pivoting method. The partial
+* factorization has the form:
+*
+* A = ( I U12 ) ( A11 0 ) ( I 0 ) if UPLO = 'U', or:
+* ( 0 U22 ) ( 0 D ) ( U12' U22' )
+*
+* A = ( L11 0 ) ( D 0 ) ( L11' L21' ) if UPLO = 'L'
+* ( L21 I ) ( 0 A22 ) ( 0 I )
+*
+* where the order of D is at most NB. The actual order is returned in
+* the argument KB, and is either NB or NB-1, or N if N <= NB.
+*
+* DLASYF is an auxiliary routine called by DSYTRF. It uses blocked code
+* (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or
+* A22 (if UPLO = 'L').
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is stored:
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NB (input) INTEGER
+* The maximum number of columns of the matrix A that should be
+* factored. NB should be at least 2 to allow for 2-by-2 pivot
+* blocks.
+*
+* KB (output) INTEGER
+* The number of columns of A that were actually factored.
+* KB is either NB-1 or NB, or N if N <= NB.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* n-by-n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n-by-n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit, A contains details of the partial factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (output) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D.
+* If UPLO = 'U', only the last KB elements of IPIV are set;
+* if UPLO = 'L', only the first KB elements are set.
+*
+* If IPIV(k) > 0, then rows and columns k and IPIV(k) were
+* interchanged and D(k,k) is a 1-by-1 diagonal block.
+* If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
+* columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
+* is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
+* IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
+* interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
+*
+* W (workspace) DOUBLE PRECISION array, dimension (LDW,NB)
+*
+* LDW (input) INTEGER
+* The leading dimension of the array W. LDW >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* > 0: if INFO = k, D(k,k) is exactly zero. The factorization
+* has been completed, but the block diagonal matrix D is
+* exactly singular.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION EIGHT, SEVTEN
+ PARAMETER ( EIGHT = 8.0D+0, SEVTEN = 17.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER IMAX, J, JB, JJ, JMAX, JP, K, KK, KKW, KP,
+ $ KSTEP, KW
+ DOUBLE PRECISION ABSAKK, ALPHA, COLMAX, D11, D21, D22, R1,
+ $ ROWMAX, T
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ EXTERNAL LSAME, IDAMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEMM, DGEMV, DSCAL, DSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+*
+* Initialize ALPHA for use in choosing pivot block size.
+*
+ ALPHA = ( ONE+SQRT( SEVTEN ) ) / EIGHT
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+*
+* Factorize the trailing columns of A using the upper triangle
+* of A and working backwards, and compute the matrix W = U12*D
+* for use in updating A11
+*
+* K is the main loop index, decreasing from N in steps of 1 or 2
+*
+* KW is the column of W which corresponds to column K of A
+*
+ K = N
+ 10 CONTINUE
+ KW = NB + K - N
+*
+* Exit from loop
+*
+ IF( ( K.LE.N-NB+1 .AND. NB.LT.N ) .OR. K.LT.1 )
+ $ GO TO 30
+*
+* Copy column K of A to column KW of W and update it
+*
+ CALL DCOPY( K, A( 1, K ), 1, W( 1, KW ), 1 )
+ IF( K.LT.N )
+ $ CALL DGEMV( 'No transpose', K, N-K, -ONE, A( 1, K+1 ), LDA,
+ $ W( K, KW+1 ), LDW, ONE, W( 1, KW ), 1 )
+*
+ KSTEP = 1
+*
+* Determine rows and columns to be interchanged and whether
+* a 1-by-1 or 2-by-2 pivot block will be used
+*
+ ABSAKK = ABS( W( K, KW ) )
+*
+* IMAX is the row-index of the largest off-diagonal element in
+* column K, and COLMAX is its absolute value
+*
+ IF( K.GT.1 ) THEN
+ IMAX = IDAMAX( K-1, W( 1, KW ), 1 )
+ COLMAX = ABS( W( IMAX, KW ) )
+ ELSE
+ COLMAX = ZERO
+ END IF
+*
+ IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
+*
+* Column K is zero: set INFO and continue
+*
+ IF( INFO.EQ.0 )
+ $ INFO = K
+ KP = K
+ ELSE
+ IF( ABSAKK.GE.ALPHA*COLMAX ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE
+*
+* Copy column IMAX to column KW-1 of W and update it
+*
+ CALL DCOPY( IMAX, A( 1, IMAX ), 1, W( 1, KW-1 ), 1 )
+ CALL DCOPY( K-IMAX, A( IMAX, IMAX+1 ), LDA,
+ $ W( IMAX+1, KW-1 ), 1 )
+ IF( K.LT.N )
+ $ CALL DGEMV( 'No transpose', K, N-K, -ONE, A( 1, K+1 ),
+ $ LDA, W( IMAX, KW+1 ), LDW, ONE,
+ $ W( 1, KW-1 ), 1 )
+*
+* JMAX is the column-index of the largest off-diagonal
+* element in row IMAX, and ROWMAX is its absolute value
+*
+ JMAX = IMAX + IDAMAX( K-IMAX, W( IMAX+1, KW-1 ), 1 )
+ ROWMAX = ABS( W( JMAX, KW-1 ) )
+ IF( IMAX.GT.1 ) THEN
+ JMAX = IDAMAX( IMAX-1, W( 1, KW-1 ), 1 )
+ ROWMAX = MAX( ROWMAX, ABS( W( JMAX, KW-1 ) ) )
+ END IF
+*
+ IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE IF( ABS( W( IMAX, KW-1 ) ).GE.ALPHA*ROWMAX ) THEN
+*
+* interchange rows and columns K and IMAX, use 1-by-1
+* pivot block
+*
+ KP = IMAX
+*
+* copy column KW-1 of W to column KW
+*
+ CALL DCOPY( K, W( 1, KW-1 ), 1, W( 1, KW ), 1 )
+ ELSE
+*
+* interchange rows and columns K-1 and IMAX, use 2-by-2
+* pivot block
+*
+ KP = IMAX
+ KSTEP = 2
+ END IF
+ END IF
+*
+ KK = K - KSTEP + 1
+ KKW = NB + KK - N
+*
+* Updated column KP is already stored in column KKW of W
+*
+ IF( KP.NE.KK ) THEN
+*
+* Copy non-updated column KK to column KP
+*
+ A( KP, K ) = A( KK, K )
+ CALL DCOPY( K-1-KP, A( KP+1, KK ), 1, A( KP, KP+1 ),
+ $ LDA )
+ CALL DCOPY( KP, A( 1, KK ), 1, A( 1, KP ), 1 )
+*
+* Interchange rows KK and KP in last KK columns of A and W
+*
+ CALL DSWAP( N-KK+1, A( KK, KK ), LDA, A( KP, KK ), LDA )
+ CALL DSWAP( N-KK+1, W( KK, KKW ), LDW, W( KP, KKW ),
+ $ LDW )
+ END IF
+*
+ IF( KSTEP.EQ.1 ) THEN
+*
+* 1-by-1 pivot block D(k): column KW of W now holds
+*
+* W(k) = U(k)*D(k)
+*
+* where U(k) is the k-th column of U
+*
+* Store U(k) in column k of A
+*
+ CALL DCOPY( K, W( 1, KW ), 1, A( 1, K ), 1 )
+ R1 = ONE / A( K, K )
+ CALL DSCAL( K-1, R1, A( 1, K ), 1 )
+ ELSE
+*
+* 2-by-2 pivot block D(k): columns KW and KW-1 of W now
+* hold
+*
+* ( W(k-1) W(k) ) = ( U(k-1) U(k) )*D(k)
+*
+* where U(k) and U(k-1) are the k-th and (k-1)-th columns
+* of U
+*
+ IF( K.GT.2 ) THEN
+*
+* Store U(k) and U(k-1) in columns k and k-1 of A
+*
+ D21 = W( K-1, KW )
+ D11 = W( K, KW ) / D21
+ D22 = W( K-1, KW-1 ) / D21
+ T = ONE / ( D11*D22-ONE )
+ D21 = T / D21
+ DO 20 J = 1, K - 2
+ A( J, K-1 ) = D21*( D11*W( J, KW-1 )-W( J, KW ) )
+ A( J, K ) = D21*( D22*W( J, KW )-W( J, KW-1 ) )
+ 20 CONTINUE
+ END IF
+*
+* Copy D(k) to A
+*
+ A( K-1, K-1 ) = W( K-1, KW-1 )
+ A( K-1, K ) = W( K-1, KW )
+ A( K, K ) = W( K, KW )
+ END IF
+ END IF
+*
+* Store details of the interchanges in IPIV
+*
+ IF( KSTEP.EQ.1 ) THEN
+ IPIV( K ) = KP
+ ELSE
+ IPIV( K ) = -KP
+ IPIV( K-1 ) = -KP
+ END IF
+*
+* Decrease K and return to the start of the main loop
+*
+ K = K - KSTEP
+ GO TO 10
+*
+ 30 CONTINUE
+*
+* Update the upper triangle of A11 (= A(1:k,1:k)) as
+*
+* A11 := A11 - U12*D*U12' = A11 - U12*W'
+*
+* computing blocks of NB columns at a time
+*
+ DO 50 J = ( ( K-1 ) / NB )*NB + 1, 1, -NB
+ JB = MIN( NB, K-J+1 )
+*
+* Update the upper triangle of the diagonal block
+*
+ DO 40 JJ = J, J + JB - 1
+ CALL DGEMV( 'No transpose', JJ-J+1, N-K, -ONE,
+ $ A( J, K+1 ), LDA, W( JJ, KW+1 ), LDW, ONE,
+ $ A( J, JJ ), 1 )
+ 40 CONTINUE
+*
+* Update the rectangular superdiagonal block
+*
+ CALL DGEMM( 'No transpose', 'Transpose', J-1, JB, N-K, -ONE,
+ $ A( 1, K+1 ), LDA, W( J, KW+1 ), LDW, ONE,
+ $ A( 1, J ), LDA )
+ 50 CONTINUE
+*
+* Put U12 in standard form by partially undoing the interchanges
+* in columns k+1:n
+*
+ J = K + 1
+ 60 CONTINUE
+ JJ = J
+ JP = IPIV( J )
+ IF( JP.LT.0 ) THEN
+ JP = -JP
+ J = J + 1
+ END IF
+ J = J + 1
+ IF( JP.NE.JJ .AND. J.LE.N )
+ $ CALL DSWAP( N-J+1, A( JP, J ), LDA, A( JJ, J ), LDA )
+ IF( J.LE.N )
+ $ GO TO 60
+*
+* Set KB to the number of columns factorized
+*
+ KB = N - K
+*
+ ELSE
+*
+* Factorize the leading columns of A using the lower triangle
+* of A and working forwards, and compute the matrix W = L21*D
+* for use in updating A22
+*
+* K is the main loop index, increasing from 1 in steps of 1 or 2
+*
+ K = 1
+ 70 CONTINUE
+*
+* Exit from loop
+*
+ IF( ( K.GE.NB .AND. NB.LT.N ) .OR. K.GT.N )
+ $ GO TO 90
+*
+* Copy column K of A to column K of W and update it
+*
+ CALL DCOPY( N-K+1, A( K, K ), 1, W( K, K ), 1 )
+ CALL DGEMV( 'No transpose', N-K+1, K-1, -ONE, A( K, 1 ), LDA,
+ $ W( K, 1 ), LDW, ONE, W( K, K ), 1 )
+*
+ KSTEP = 1
+*
+* Determine rows and columns to be interchanged and whether
+* a 1-by-1 or 2-by-2 pivot block will be used
+*
+ ABSAKK = ABS( W( K, K ) )
+*
+* IMAX is the row-index of the largest off-diagonal element in
+* column K, and COLMAX is its absolute value
+*
+ IF( K.LT.N ) THEN
+ IMAX = K + IDAMAX( N-K, W( K+1, K ), 1 )
+ COLMAX = ABS( W( IMAX, K ) )
+ ELSE
+ COLMAX = ZERO
+ END IF
+*
+ IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
+*
+* Column K is zero: set INFO and continue
+*
+ IF( INFO.EQ.0 )
+ $ INFO = K
+ KP = K
+ ELSE
+ IF( ABSAKK.GE.ALPHA*COLMAX ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE
+*
+* Copy column IMAX to column K+1 of W and update it
+*
+ CALL DCOPY( IMAX-K, A( IMAX, K ), LDA, W( K, K+1 ), 1 )
+ CALL DCOPY( N-IMAX+1, A( IMAX, IMAX ), 1, W( IMAX, K+1 ),
+ $ 1 )
+ CALL DGEMV( 'No transpose', N-K+1, K-1, -ONE, A( K, 1 ),
+ $ LDA, W( IMAX, 1 ), LDW, ONE, W( K, K+1 ), 1 )
+*
+* JMAX is the column-index of the largest off-diagonal
+* element in row IMAX, and ROWMAX is its absolute value
+*
+ JMAX = K - 1 + IDAMAX( IMAX-K, W( K, K+1 ), 1 )
+ ROWMAX = ABS( W( JMAX, K+1 ) )
+ IF( IMAX.LT.N ) THEN
+ JMAX = IMAX + IDAMAX( N-IMAX, W( IMAX+1, K+1 ), 1 )
+ ROWMAX = MAX( ROWMAX, ABS( W( JMAX, K+1 ) ) )
+ END IF
+*
+ IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE IF( ABS( W( IMAX, K+1 ) ).GE.ALPHA*ROWMAX ) THEN
+*
+* interchange rows and columns K and IMAX, use 1-by-1
+* pivot block
+*
+ KP = IMAX
+*
+* copy column K+1 of W to column K
+*
+ CALL DCOPY( N-K+1, W( K, K+1 ), 1, W( K, K ), 1 )
+ ELSE
+*
+* interchange rows and columns K+1 and IMAX, use 2-by-2
+* pivot block
+*
+ KP = IMAX
+ KSTEP = 2
+ END IF
+ END IF
+*
+ KK = K + KSTEP - 1
+*
+* Updated column KP is already stored in column KK of W
+*
+ IF( KP.NE.KK ) THEN
+*
+* Copy non-updated column KK to column KP
+*
+ A( KP, K ) = A( KK, K )
+ CALL DCOPY( KP-K-1, A( K+1, KK ), 1, A( KP, K+1 ), LDA )
+ CALL DCOPY( N-KP+1, A( KP, KK ), 1, A( KP, KP ), 1 )
+*
+* Interchange rows KK and KP in first KK columns of A and W
+*
+ CALL DSWAP( KK, A( KK, 1 ), LDA, A( KP, 1 ), LDA )
+ CALL DSWAP( KK, W( KK, 1 ), LDW, W( KP, 1 ), LDW )
+ END IF
+*
+ IF( KSTEP.EQ.1 ) THEN
+*
+* 1-by-1 pivot block D(k): column k of W now holds
+*
+* W(k) = L(k)*D(k)
+*
+* where L(k) is the k-th column of L
+*
+* Store L(k) in column k of A
+*
+ CALL DCOPY( N-K+1, W( K, K ), 1, A( K, K ), 1 )
+ IF( K.LT.N ) THEN
+ R1 = ONE / A( K, K )
+ CALL DSCAL( N-K, R1, A( K+1, K ), 1 )
+ END IF
+ ELSE
+*
+* 2-by-2 pivot block D(k): columns k and k+1 of W now hold
+*
+* ( W(k) W(k+1) ) = ( L(k) L(k+1) )*D(k)
+*
+* where L(k) and L(k+1) are the k-th and (k+1)-th columns
+* of L
+*
+ IF( K.LT.N-1 ) THEN
+*
+* Store L(k) and L(k+1) in columns k and k+1 of A
+*
+ D21 = W( K+1, K )
+ D11 = W( K+1, K+1 ) / D21
+ D22 = W( K, K ) / D21
+ T = ONE / ( D11*D22-ONE )
+ D21 = T / D21
+ DO 80 J = K + 2, N
+ A( J, K ) = D21*( D11*W( J, K )-W( J, K+1 ) )
+ A( J, K+1 ) = D21*( D22*W( J, K+1 )-W( J, K ) )
+ 80 CONTINUE
+ END IF
+*
+* Copy D(k) to A
+*
+ A( K, K ) = W( K, K )
+ A( K+1, K ) = W( K+1, K )
+ A( K+1, K+1 ) = W( K+1, K+1 )
+ END IF
+ END IF
+*
+* Store details of the interchanges in IPIV
+*
+ IF( KSTEP.EQ.1 ) THEN
+ IPIV( K ) = KP
+ ELSE
+ IPIV( K ) = -KP
+ IPIV( K+1 ) = -KP
+ END IF
+*
+* Increase K and return to the start of the main loop
+*
+ K = K + KSTEP
+ GO TO 70
+*
+ 90 CONTINUE
+*
+* Update the lower triangle of A22 (= A(k:n,k:n)) as
+*
+* A22 := A22 - L21*D*L21' = A22 - L21*W'
+*
+* computing blocks of NB columns at a time
+*
+ DO 110 J = K, N, NB
+ JB = MIN( NB, N-J+1 )
+*
+* Update the lower triangle of the diagonal block
+*
+ DO 100 JJ = J, J + JB - 1
+ CALL DGEMV( 'No transpose', J+JB-JJ, K-1, -ONE,
+ $ A( JJ, 1 ), LDA, W( JJ, 1 ), LDW, ONE,
+ $ A( JJ, JJ ), 1 )
+ 100 CONTINUE
+*
+* Update the rectangular subdiagonal block
+*
+ IF( J+JB.LE.N )
+ $ CALL DGEMM( 'No transpose', 'Transpose', N-J-JB+1, JB,
+ $ K-1, -ONE, A( J+JB, 1 ), LDA, W( J, 1 ), LDW,
+ $ ONE, A( J+JB, J ), LDA )
+ 110 CONTINUE
+*
+* Put L21 in standard form by partially undoing the interchanges
+* in columns 1:k-1
+*
+ J = K - 1
+ 120 CONTINUE
+ JJ = J
+ JP = IPIV( J )
+ IF( JP.LT.0 ) THEN
+ JP = -JP
+ J = J - 1
+ END IF
+ J = J - 1
+ IF( JP.NE.JJ .AND. J.GE.1 )
+ $ CALL DSWAP( J, A( JP, 1 ), LDA, A( JJ, 1 ), LDA )
+ IF( J.GE.1 )
+ $ GO TO 120
+*
+* Set KB to the number of columns factorized
+*
+ KB = K - 1
+*
+ END IF
+ RETURN
+*
+* End of DLASYF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlatdf.f b/2.3-1/src/fortran/lapack/dlatdf.f
new file mode 100644
index 00000000..91fa46e3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlatdf.f
@@ -0,0 +1,237 @@
+ SUBROUTINE DLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
+ $ JPIV )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IJOB, LDZ, N
+ DOUBLE PRECISION RDSCAL, RDSUM
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), JPIV( * )
+ DOUBLE PRECISION RHS( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLATDF uses the LU factorization of the n-by-n matrix Z computed by
+* DGETC2 and computes a contribution to the reciprocal Dif-estimate
+* by solving Z * x = b for x, and choosing the r.h.s. b such that
+* the norm of x is as large as possible. On entry RHS = b holds the
+* contribution from earlier solved sub-systems, and on return RHS = x.
+*
+* The factorization of Z returned by DGETC2 has the form Z = P*L*U*Q,
+* where P and Q are permutation matrices. L is lower triangular with
+* unit diagonal elements and U is upper triangular.
+*
+* Arguments
+* =========
+*
+* IJOB (input) INTEGER
+* IJOB = 2: First compute an approximative null-vector e
+* of Z using DGECON, e is normalized and solve for
+* Zx = +-e - f with the sign giving the greater value
+* of 2-norm(x). About 5 times as expensive as Default.
+* IJOB .ne. 2: Local look ahead strategy where all entries of
+* the r.h.s. b is choosen as either +1 or -1 (Default).
+*
+* N (input) INTEGER
+* The number of columns of the matrix Z.
+*
+* Z (input) DOUBLE PRECISION array, dimension (LDZ, N)
+* On entry, the LU part of the factorization of the n-by-n
+* matrix Z computed by DGETC2: Z = P * L * U * Q
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDA >= max(1, N).
+*
+* RHS (input/output) DOUBLE PRECISION array, dimension N.
+* On entry, RHS contains contributions from other subsystems.
+* On exit, RHS contains the solution of the subsystem with
+* entries acoording to the value of IJOB (see above).
+*
+* RDSUM (input/output) DOUBLE PRECISION
+* On entry, the sum of squares of computed contributions to
+* the Dif-estimate under computation by DTGSYL, where the
+* scaling factor RDSCAL (see below) has been factored out.
+* On exit, the corresponding sum of squares updated with the
+* contributions from the current sub-system.
+* If TRANS = 'T' RDSUM is not touched.
+* NOTE: RDSUM only makes sense when DTGSY2 is called by STGSYL.
+*
+* RDSCAL (input/output) DOUBLE PRECISION
+* On entry, scaling factor used to prevent overflow in RDSUM.
+* On exit, RDSCAL is updated w.r.t. the current contributions
+* in RDSUM.
+* If TRANS = 'T', RDSCAL is not touched.
+* NOTE: RDSCAL only makes sense when DTGSY2 is called by
+* DTGSYL.
+*
+* IPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= i <= N, row i of the
+* matrix has been interchanged with row IPIV(i).
+*
+* JPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= j <= N, column j of the
+* matrix has been interchanged with column JPIV(j).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* This routine is a further developed implementation of algorithm
+* BSOLVE in [1] using complete pivoting in the LU factorization.
+*
+* [1] Bo Kagstrom and Lars Westin,
+* Generalized Schur Methods with Condition Estimators for
+* Solving the Generalized Sylvester Equation, IEEE Transactions
+* on Automatic Control, Vol. 34, No. 7, July 1989, pp 745-751.
+*
+* [2] Peter Poromaa,
+* On Efficient and Robust Estimators for the Separation
+* between two Regular Matrix Pairs with Applications in
+* Condition Estimation. Report IMINF-95.05, Departement of
+* Computing Science, Umea University, S-901 87 Umea, Sweden, 1995.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER MAXDIM
+ PARAMETER ( MAXDIM = 8 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, INFO, J, K
+ DOUBLE PRECISION BM, BP, PMONE, SMINU, SPLUS, TEMP
+* ..
+* .. Local Arrays ..
+ INTEGER IWORK( MAXDIM )
+ DOUBLE PRECISION WORK( 4*MAXDIM ), XM( MAXDIM ), XP( MAXDIM )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGECON, DGESC2, DLASSQ, DLASWP,
+ $ DSCAL
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DASUM, DDOT
+ EXTERNAL DASUM, DDOT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( IJOB.NE.2 ) THEN
+*
+* Apply permutations IPIV to RHS
+*
+ CALL DLASWP( 1, RHS, LDZ, 1, N-1, IPIV, 1 )
+*
+* Solve for L-part choosing RHS either to +1 or -1.
+*
+ PMONE = -ONE
+*
+ DO 10 J = 1, N - 1
+ BP = RHS( J ) + ONE
+ BM = RHS( J ) - ONE
+ SPLUS = ONE
+*
+* Look-ahead for L-part RHS(1:N-1) = + or -1, SPLUS and
+* SMIN computed more efficiently than in BSOLVE [1].
+*
+ SPLUS = SPLUS + DDOT( N-J, Z( J+1, J ), 1, Z( J+1, J ), 1 )
+ SMINU = DDOT( N-J, Z( J+1, J ), 1, RHS( J+1 ), 1 )
+ SPLUS = SPLUS*RHS( J )
+ IF( SPLUS.GT.SMINU ) THEN
+ RHS( J ) = BP
+ ELSE IF( SMINU.GT.SPLUS ) THEN
+ RHS( J ) = BM
+ ELSE
+*
+* In this case the updating sums are equal and we can
+* choose RHS(J) +1 or -1. The first time this happens
+* we choose -1, thereafter +1. This is a simple way to
+* get good estimates of matrices like Byers well-known
+* example (see [1]). (Not done in BSOLVE.)
+*
+ RHS( J ) = RHS( J ) + PMONE
+ PMONE = ONE
+ END IF
+*
+* Compute the remaining r.h.s.
+*
+ TEMP = -RHS( J )
+ CALL DAXPY( N-J, TEMP, Z( J+1, J ), 1, RHS( J+1 ), 1 )
+*
+ 10 CONTINUE
+*
+* Solve for U-part, look-ahead for RHS(N) = +-1. This is not done
+* in BSOLVE and will hopefully give us a better estimate because
+* any ill-conditioning of the original matrix is transfered to U
+* and not to L. U(N, N) is an approximation to sigma_min(LU).
+*
+ CALL DCOPY( N-1, RHS, 1, XP, 1 )
+ XP( N ) = RHS( N ) + ONE
+ RHS( N ) = RHS( N ) - ONE
+ SPLUS = ZERO
+ SMINU = ZERO
+ DO 30 I = N, 1, -1
+ TEMP = ONE / Z( I, I )
+ XP( I ) = XP( I )*TEMP
+ RHS( I ) = RHS( I )*TEMP
+ DO 20 K = I + 1, N
+ XP( I ) = XP( I ) - XP( K )*( Z( I, K )*TEMP )
+ RHS( I ) = RHS( I ) - RHS( K )*( Z( I, K )*TEMP )
+ 20 CONTINUE
+ SPLUS = SPLUS + ABS( XP( I ) )
+ SMINU = SMINU + ABS( RHS( I ) )
+ 30 CONTINUE
+ IF( SPLUS.GT.SMINU )
+ $ CALL DCOPY( N, XP, 1, RHS, 1 )
+*
+* Apply the permutations JPIV to the computed solution (RHS)
+*
+ CALL DLASWP( 1, RHS, LDZ, 1, N-1, JPIV, -1 )
+*
+* Compute the sum of squares
+*
+ CALL DLASSQ( N, RHS, 1, RDSCAL, RDSUM )
+*
+ ELSE
+*
+* IJOB = 2, Compute approximate nullvector XM of Z
+*
+ CALL DGECON( 'I', N, Z, LDZ, ONE, TEMP, WORK, IWORK, INFO )
+ CALL DCOPY( N, WORK( N+1 ), 1, XM, 1 )
+*
+* Compute RHS
+*
+ CALL DLASWP( 1, XM, LDZ, 1, N-1, IPIV, -1 )
+ TEMP = ONE / SQRT( DDOT( N, XM, 1, XM, 1 ) )
+ CALL DSCAL( N, TEMP, XM, 1 )
+ CALL DCOPY( N, XM, 1, XP, 1 )
+ CALL DAXPY( N, ONE, RHS, 1, XP, 1 )
+ CALL DAXPY( N, -ONE, XM, 1, RHS, 1 )
+ CALL DGESC2( N, Z, LDZ, RHS, IPIV, JPIV, TEMP )
+ CALL DGESC2( N, Z, LDZ, XP, IPIV, JPIV, TEMP )
+ IF( DASUM( N, XP, 1 ).GT.DASUM( N, RHS, 1 ) )
+ $ CALL DCOPY( N, XP, 1, RHS, 1 )
+*
+* Compute the sum of squares
+*
+ CALL DLASSQ( N, RHS, 1, RDSCAL, RDSUM )
+*
+ END IF
+*
+ RETURN
+*
+* End of DLATDF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlatrd.f b/2.3-1/src/fortran/lapack/dlatrd.f
new file mode 100644
index 00000000..27bf9b98
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlatrd.f
@@ -0,0 +1,258 @@
+ SUBROUTINE DLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER LDA, LDW, N, NB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), E( * ), TAU( * ), W( LDW, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLATRD reduces NB rows and columns of a real symmetric matrix A to
+* symmetric tridiagonal form by an orthogonal similarity
+* transformation Q' * A * Q, and returns the matrices V and W which are
+* needed to apply the transformation to the unreduced part of A.
+*
+* If UPLO = 'U', DLATRD reduces the last NB rows and columns of a
+* matrix, of which the upper triangle is supplied;
+* if UPLO = 'L', DLATRD reduces the first NB rows and columns of a
+* matrix, of which the lower triangle is supplied.
+*
+* This is an auxiliary routine called by DSYTRD.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is stored:
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* NB (input) INTEGER
+* The number of rows and columns to be reduced.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* n-by-n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n-by-n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit:
+* if UPLO = 'U', the last NB columns have been reduced to
+* tridiagonal form, with the diagonal elements overwriting
+* the diagonal elements of A; the elements above the diagonal
+* with the array TAU, represent the orthogonal matrix Q as a
+* product of elementary reflectors;
+* if UPLO = 'L', the first NB columns have been reduced to
+* tridiagonal form, with the diagonal elements overwriting
+* the diagonal elements of A; the elements below the diagonal
+* with the array TAU, represent the orthogonal matrix Q as a
+* product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= (1,N).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal
+* elements of the last NB columns of the reduced matrix;
+* if UPLO = 'L', E(1:nb) contains the subdiagonal elements of
+* the first NB columns of the reduced matrix.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (N-1)
+* The scalar factors of the elementary reflectors, stored in
+* TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
+* See Further Details.
+*
+* W (output) DOUBLE PRECISION array, dimension (LDW,NB)
+* The n-by-nb matrix W required to update the unreduced part
+* of A.
+*
+* LDW (input) INTEGER
+* The leading dimension of the array W. LDW >= max(1,N).
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n) H(n-1) . . . H(n-nb+1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i),
+* and tau in TAU(i-1).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(nb).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i),
+* and tau in TAU(i).
+*
+* The elements of the vectors v together form the n-by-nb matrix V
+* which is needed, with W, to apply the transformation to the unreduced
+* part of the matrix, using a symmetric rank-2k update of the form:
+* A := A - V*W' - W*V'.
+*
+* The contents of A on exit are illustrated by the following examples
+* with n = 5 and nb = 2:
+*
+* if UPLO = 'U': if UPLO = 'L':
+*
+* ( a a a v4 v5 ) ( d )
+* ( a a v4 v5 ) ( 1 d )
+* ( a 1 v5 ) ( v1 1 a )
+* ( d 1 ) ( v1 v2 a a )
+* ( d ) ( v1 v2 a a a )
+*
+* where d denotes a diagonal element of the reduced matrix, a denotes
+* an element of the original matrix that is unchanged, and vi denotes
+* an element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, HALF
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, HALF = 0.5D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IW
+ DOUBLE PRECISION ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DGEMV, DLARFG, DSCAL, DSYMV
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+*
+* Reduce last NB columns of upper triangle
+*
+ DO 10 I = N, N - NB + 1, -1
+ IW = I - N + NB
+ IF( I.LT.N ) THEN
+*
+* Update A(1:i,i)
+*
+ CALL DGEMV( 'No transpose', I, N-I, -ONE, A( 1, I+1 ),
+ $ LDA, W( I, IW+1 ), LDW, ONE, A( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', I, N-I, -ONE, W( 1, IW+1 ),
+ $ LDW, A( I, I+1 ), LDA, ONE, A( 1, I ), 1 )
+ END IF
+ IF( I.GT.1 ) THEN
+*
+* Generate elementary reflector H(i) to annihilate
+* A(1:i-2,i)
+*
+ CALL DLARFG( I-1, A( I-1, I ), A( 1, I ), 1, TAU( I-1 ) )
+ E( I-1 ) = A( I-1, I )
+ A( I-1, I ) = ONE
+*
+* Compute W(1:i-1,i)
+*
+ CALL DSYMV( 'Upper', I-1, ONE, A, LDA, A( 1, I ), 1,
+ $ ZERO, W( 1, IW ), 1 )
+ IF( I.LT.N ) THEN
+ CALL DGEMV( 'Transpose', I-1, N-I, ONE, W( 1, IW+1 ),
+ $ LDW, A( 1, I ), 1, ZERO, W( I+1, IW ), 1 )
+ CALL DGEMV( 'No transpose', I-1, N-I, -ONE,
+ $ A( 1, I+1 ), LDA, W( I+1, IW ), 1, ONE,
+ $ W( 1, IW ), 1 )
+ CALL DGEMV( 'Transpose', I-1, N-I, ONE, A( 1, I+1 ),
+ $ LDA, A( 1, I ), 1, ZERO, W( I+1, IW ), 1 )
+ CALL DGEMV( 'No transpose', I-1, N-I, -ONE,
+ $ W( 1, IW+1 ), LDW, W( I+1, IW ), 1, ONE,
+ $ W( 1, IW ), 1 )
+ END IF
+ CALL DSCAL( I-1, TAU( I-1 ), W( 1, IW ), 1 )
+ ALPHA = -HALF*TAU( I-1 )*DDOT( I-1, W( 1, IW ), 1,
+ $ A( 1, I ), 1 )
+ CALL DAXPY( I-1, ALPHA, A( 1, I ), 1, W( 1, IW ), 1 )
+ END IF
+*
+ 10 CONTINUE
+ ELSE
+*
+* Reduce first NB columns of lower triangle
+*
+ DO 20 I = 1, NB
+*
+* Update A(i:n,i)
+*
+ CALL DGEMV( 'No transpose', N-I+1, I-1, -ONE, A( I, 1 ),
+ $ LDA, W( I, 1 ), LDW, ONE, A( I, I ), 1 )
+ CALL DGEMV( 'No transpose', N-I+1, I-1, -ONE, W( I, 1 ),
+ $ LDW, A( I, 1 ), LDA, ONE, A( I, I ), 1 )
+ IF( I.LT.N ) THEN
+*
+* Generate elementary reflector H(i) to annihilate
+* A(i+2:n,i)
+*
+ CALL DLARFG( N-I, A( I+1, I ), A( MIN( I+2, N ), I ), 1,
+ $ TAU( I ) )
+ E( I ) = A( I+1, I )
+ A( I+1, I ) = ONE
+*
+* Compute W(i+1:n,i)
+*
+ CALL DSYMV( 'Lower', N-I, ONE, A( I+1, I+1 ), LDA,
+ $ A( I+1, I ), 1, ZERO, W( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', N-I, I-1, ONE, W( I+1, 1 ), LDW,
+ $ A( I+1, I ), 1, ZERO, W( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', N-I, I-1, -ONE, A( I+1, 1 ),
+ $ LDA, W( 1, I ), 1, ONE, W( I+1, I ), 1 )
+ CALL DGEMV( 'Transpose', N-I, I-1, ONE, A( I+1, 1 ), LDA,
+ $ A( I+1, I ), 1, ZERO, W( 1, I ), 1 )
+ CALL DGEMV( 'No transpose', N-I, I-1, -ONE, W( I+1, 1 ),
+ $ LDW, W( 1, I ), 1, ONE, W( I+1, I ), 1 )
+ CALL DSCAL( N-I, TAU( I ), W( I+1, I ), 1 )
+ ALPHA = -HALF*TAU( I )*DDOT( N-I, W( I+1, I ), 1,
+ $ A( I+1, I ), 1 )
+ CALL DAXPY( N-I, ALPHA, A( I+1, I ), 1, W( I+1, I ), 1 )
+ END IF
+*
+ 20 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DLATRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlatrs.f b/2.3-1/src/fortran/lapack/dlatrs.f
new file mode 100644
index 00000000..bbd3a9e4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlatrs.f
@@ -0,0 +1,701 @@
+ SUBROUTINE DLATRS( UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE,
+ $ CNORM, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, NORMIN, TRANS, UPLO
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION SCALE
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), CNORM( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLATRS solves one of the triangular systems
+*
+* A *x = s*b or A'*x = s*b
+*
+* with scaling to prevent overflow. Here A is an upper or lower
+* triangular matrix, A' denotes the transpose of A, x and b are
+* n-element vectors, and s is a scaling factor, usually less than
+* or equal to 1, chosen so that the components of x will be less than
+* the overflow threshold. If the unscaled problem will not cause
+* overflow, the Level 2 BLAS routine DTRSV is called. If the matrix A
+* is singular (A(j,j) = 0 for some j), then s is set to 0 and a
+* non-trivial solution to A*x = 0 is returned.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the matrix A is upper or lower triangular.
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* TRANS (input) CHARACTER*1
+* Specifies the operation applied to A.
+* = 'N': Solve A * x = s*b (No transpose)
+* = 'T': Solve A'* x = s*b (Transpose)
+* = 'C': Solve A'* x = s*b (Conjugate transpose = Transpose)
+*
+* DIAG (input) CHARACTER*1
+* Specifies whether or not the matrix A is unit triangular.
+* = 'N': Non-unit triangular
+* = 'U': Unit triangular
+*
+* NORMIN (input) CHARACTER*1
+* Specifies whether CNORM has been set or not.
+* = 'Y': CNORM contains the column norms on entry
+* = 'N': CNORM is not set on entry. On exit, the norms will
+* be computed and stored in CNORM.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The triangular matrix A. If UPLO = 'U', the leading n by n
+* upper triangular part of the array A contains the upper
+* triangular matrix, and the strictly lower triangular part of
+* A is not referenced. If UPLO = 'L', the leading n by n lower
+* triangular part of the array A contains the lower triangular
+* matrix, and the strictly upper triangular part of A is not
+* referenced. If DIAG = 'U', the diagonal elements of A are
+* also not referenced and are assumed to be 1.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max (1,N).
+*
+* X (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the right hand side b of the triangular system.
+* On exit, X is overwritten by the solution vector x.
+*
+* SCALE (output) DOUBLE PRECISION
+* The scaling factor s for the triangular system
+* A * x = s*b or A'* x = s*b.
+* If SCALE = 0, the matrix A is singular or badly scaled, and
+* the vector x is an exact or approximate solution to A*x = 0.
+*
+* CNORM (input or output) DOUBLE PRECISION array, dimension (N)
+*
+* If NORMIN = 'Y', CNORM is an input argument and CNORM(j)
+* contains the norm of the off-diagonal part of the j-th column
+* of A. If TRANS = 'N', CNORM(j) must be greater than or equal
+* to the infinity-norm, and if TRANS = 'T' or 'C', CNORM(j)
+* must be greater than or equal to the 1-norm.
+*
+* If NORMIN = 'N', CNORM is an output argument and CNORM(j)
+* returns the 1-norm of the offdiagonal part of the j-th column
+* of A.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+*
+* Further Details
+* ======= =======
+*
+* A rough bound on x is computed; if that is less than overflow, DTRSV
+* is called, otherwise, specific code is used which checks for possible
+* overflow or divide-by-zero at every operation.
+*
+* A columnwise scheme is used for solving A*x = b. The basic algorithm
+* if A is lower triangular is
+*
+* x[1:n] := b[1:n]
+* for j = 1, ..., n
+* x(j) := x(j) / A(j,j)
+* x[j+1:n] := x[j+1:n] - x(j) * A[j+1:n,j]
+* end
+*
+* Define bounds on the components of x after j iterations of the loop:
+* M(j) = bound on x[1:j]
+* G(j) = bound on x[j+1:n]
+* Initially, let M(0) = 0 and G(0) = max{x(i), i=1,...,n}.
+*
+* Then for iteration j+1 we have
+* M(j+1) <= G(j) / | A(j+1,j+1) |
+* G(j+1) <= G(j) + M(j+1) * | A[j+2:n,j+1] |
+* <= G(j) ( 1 + CNORM(j+1) / | A(j+1,j+1) | )
+*
+* where CNORM(j+1) is greater than or equal to the infinity-norm of
+* column j+1 of A, not counting the diagonal. Hence
+*
+* G(j) <= G(0) product ( 1 + CNORM(i) / | A(i,i) | )
+* 1<=i<=j
+* and
+*
+* |x(j)| <= ( G(0) / |A(j,j)| ) product ( 1 + CNORM(i) / |A(i,i)| )
+* 1<=i< j
+*
+* Since |x(j)| <= M(j), we use the Level 2 BLAS routine DTRSV if the
+* reciprocal of the largest M(j), j=1,..,n, is larger than
+* max(underflow, 1/overflow).
+*
+* The bound on x(j) is also used to determine when a step in the
+* columnwise method can be performed without fear of overflow. If
+* the computed bound is greater than a large constant, x is scaled to
+* prevent overflow, but if the bound overflows, x is set to 0, x(j) to
+* 1, and scale to 0, and a non-trivial solution to A*x = 0 is found.
+*
+* Similarly, a row-wise scheme is used to solve A'*x = b. The basic
+* algorithm for A upper triangular is
+*
+* for j = 1, ..., n
+* x(j) := ( b(j) - A[1:j-1,j]' * x[1:j-1] ) / A(j,j)
+* end
+*
+* We simultaneously compute two bounds
+* G(j) = bound on ( b(i) - A[1:i-1,i]' * x[1:i-1] ), 1<=i<=j
+* M(j) = bound on x(i), 1<=i<=j
+*
+* The initial values are G(0) = 0, M(0) = max{b(i), i=1,..,n}, and we
+* add the constraint G(j) >= G(j-1) and M(j) >= M(j-1) for j >= 1.
+* Then the bound on x(j) is
+*
+* M(j) <= M(j-1) * ( 1 + CNORM(j) ) / | A(j,j) |
+*
+* <= M(0) * product ( ( 1 + CNORM(i) ) / |A(i,i)| )
+* 1<=i<=j
+*
+* and we can safely call DTRSV if 1/M(n) and 1/G(n) are both greater
+* than max(underflow, 1/overflow).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, HALF, ONE
+ PARAMETER ( ZERO = 0.0D+0, HALF = 0.5D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN, NOUNIT, UPPER
+ INTEGER I, IMAX, J, JFIRST, JINC, JLAST
+ DOUBLE PRECISION BIGNUM, GROW, REC, SMLNUM, SUMJ, TJJ, TJJS,
+ $ TMAX, TSCAL, USCAL, XBND, XJ, XMAX
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DASUM, DDOT, DLAMCH
+ EXTERNAL LSAME, IDAMAX, DASUM, DDOT, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DSCAL, DTRSV, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Test the input parameters.
+*
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT.
+ $ LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -3
+ ELSE IF( .NOT.LSAME( NORMIN, 'Y' ) .AND. .NOT.
+ $ LSAME( NORMIN, 'N' ) ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DLATRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Determine machine dependent parameters to control overflow.
+*
+ SMLNUM = DLAMCH( 'Safe minimum' ) / DLAMCH( 'Precision' )
+ BIGNUM = ONE / SMLNUM
+ SCALE = ONE
+*
+ IF( LSAME( NORMIN, 'N' ) ) THEN
+*
+* Compute the 1-norm of each column, not including the diagonal.
+*
+ IF( UPPER ) THEN
+*
+* A is upper triangular.
+*
+ DO 10 J = 1, N
+ CNORM( J ) = DASUM( J-1, A( 1, J ), 1 )
+ 10 CONTINUE
+ ELSE
+*
+* A is lower triangular.
+*
+ DO 20 J = 1, N - 1
+ CNORM( J ) = DASUM( N-J, A( J+1, J ), 1 )
+ 20 CONTINUE
+ CNORM( N ) = ZERO
+ END IF
+ END IF
+*
+* Scale the column norms by TSCAL if the maximum element in CNORM is
+* greater than BIGNUM.
+*
+ IMAX = IDAMAX( N, CNORM, 1 )
+ TMAX = CNORM( IMAX )
+ IF( TMAX.LE.BIGNUM ) THEN
+ TSCAL = ONE
+ ELSE
+ TSCAL = ONE / ( SMLNUM*TMAX )
+ CALL DSCAL( N, TSCAL, CNORM, 1 )
+ END IF
+*
+* Compute a bound on the computed solution vector to see if the
+* Level 2 BLAS routine DTRSV can be used.
+*
+ J = IDAMAX( N, X, 1 )
+ XMAX = ABS( X( J ) )
+ XBND = XMAX
+ IF( NOTRAN ) THEN
+*
+* Compute the growth in A * x = b.
+*
+ IF( UPPER ) THEN
+ JFIRST = N
+ JLAST = 1
+ JINC = -1
+ ELSE
+ JFIRST = 1
+ JLAST = N
+ JINC = 1
+ END IF
+*
+ IF( TSCAL.NE.ONE ) THEN
+ GROW = ZERO
+ GO TO 50
+ END IF
+*
+ IF( NOUNIT ) THEN
+*
+* A is non-unit triangular.
+*
+* Compute GROW = 1/G(j) and XBND = 1/M(j).
+* Initially, G(0) = max{x(i), i=1,...,n}.
+*
+ GROW = ONE / MAX( XBND, SMLNUM )
+ XBND = GROW
+ DO 30 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 50
+*
+* M(j) = G(j-1) / abs(A(j,j))
+*
+ TJJ = ABS( A( J, J ) )
+ XBND = MIN( XBND, MIN( ONE, TJJ )*GROW )
+ IF( TJJ+CNORM( J ).GE.SMLNUM ) THEN
+*
+* G(j) = G(j-1)*( 1 + CNORM(j) / abs(A(j,j)) )
+*
+ GROW = GROW*( TJJ / ( TJJ+CNORM( J ) ) )
+ ELSE
+*
+* G(j) could overflow, set GROW to 0.
+*
+ GROW = ZERO
+ END IF
+ 30 CONTINUE
+ GROW = XBND
+ ELSE
+*
+* A is unit triangular.
+*
+* Compute GROW = 1/G(j), where G(0) = max{x(i), i=1,...,n}.
+*
+ GROW = MIN( ONE, ONE / MAX( XBND, SMLNUM ) )
+ DO 40 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 50
+*
+* G(j) = G(j-1)*( 1 + CNORM(j) )
+*
+ GROW = GROW*( ONE / ( ONE+CNORM( J ) ) )
+ 40 CONTINUE
+ END IF
+ 50 CONTINUE
+*
+ ELSE
+*
+* Compute the growth in A' * x = b.
+*
+ IF( UPPER ) THEN
+ JFIRST = 1
+ JLAST = N
+ JINC = 1
+ ELSE
+ JFIRST = N
+ JLAST = 1
+ JINC = -1
+ END IF
+*
+ IF( TSCAL.NE.ONE ) THEN
+ GROW = ZERO
+ GO TO 80
+ END IF
+*
+ IF( NOUNIT ) THEN
+*
+* A is non-unit triangular.
+*
+* Compute GROW = 1/G(j) and XBND = 1/M(j).
+* Initially, M(0) = max{x(i), i=1,...,n}.
+*
+ GROW = ONE / MAX( XBND, SMLNUM )
+ XBND = GROW
+ DO 60 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 80
+*
+* G(j) = max( G(j-1), M(j-1)*( 1 + CNORM(j) ) )
+*
+ XJ = ONE + CNORM( J )
+ GROW = MIN( GROW, XBND / XJ )
+*
+* M(j) = M(j-1)*( 1 + CNORM(j) ) / abs(A(j,j))
+*
+ TJJ = ABS( A( J, J ) )
+ IF( XJ.GT.TJJ )
+ $ XBND = XBND*( TJJ / XJ )
+ 60 CONTINUE
+ GROW = MIN( GROW, XBND )
+ ELSE
+*
+* A is unit triangular.
+*
+* Compute GROW = 1/G(j), where G(0) = max{x(i), i=1,...,n}.
+*
+ GROW = MIN( ONE, ONE / MAX( XBND, SMLNUM ) )
+ DO 70 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 80
+*
+* G(j) = ( 1 + CNORM(j) )*G(j-1)
+*
+ XJ = ONE + CNORM( J )
+ GROW = GROW / XJ
+ 70 CONTINUE
+ END IF
+ 80 CONTINUE
+ END IF
+*
+ IF( ( GROW*TSCAL ).GT.SMLNUM ) THEN
+*
+* Use the Level 2 BLAS solve if the reciprocal of the bound on
+* elements of X is not too small.
+*
+ CALL DTRSV( UPLO, TRANS, DIAG, N, A, LDA, X, 1 )
+ ELSE
+*
+* Use a Level 1 BLAS solve, scaling intermediate results.
+*
+ IF( XMAX.GT.BIGNUM ) THEN
+*
+* Scale X so that its components are less than or equal to
+* BIGNUM in absolute value.
+*
+ SCALE = BIGNUM / XMAX
+ CALL DSCAL( N, SCALE, X, 1 )
+ XMAX = BIGNUM
+ END IF
+*
+ IF( NOTRAN ) THEN
+*
+* Solve A * x = b
+*
+ DO 110 J = JFIRST, JLAST, JINC
+*
+* Compute x(j) = b(j) / A(j,j), scaling x if necessary.
+*
+ XJ = ABS( X( J ) )
+ IF( NOUNIT ) THEN
+ TJJS = A( J, J )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ IF( TSCAL.EQ.ONE )
+ $ GO TO 100
+ END IF
+ TJJ = ABS( TJJS )
+ IF( TJJ.GT.SMLNUM ) THEN
+*
+* abs(A(j,j)) > SMLNUM:
+*
+ IF( TJJ.LT.ONE ) THEN
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by 1/b(j).
+*
+ REC = ONE / XJ
+ CALL DSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+ X( J ) = X( J ) / TJJS
+ XJ = ABS( X( J ) )
+ ELSE IF( TJJ.GT.ZERO ) THEN
+*
+* 0 < abs(A(j,j)) <= SMLNUM:
+*
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM
+* to avoid overflow when dividing by A(j,j).
+*
+ REC = ( TJJ*BIGNUM ) / XJ
+ IF( CNORM( J ).GT.ONE ) THEN
+*
+* Scale by 1/CNORM(j) to avoid overflow when
+* multiplying x(j) times column j.
+*
+ REC = REC / CNORM( J )
+ END IF
+ CALL DSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ X( J ) = X( J ) / TJJS
+ XJ = ABS( X( J ) )
+ ELSE
+*
+* A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and
+* scale = 0, and compute a solution to A*x = 0.
+*
+ DO 90 I = 1, N
+ X( I ) = ZERO
+ 90 CONTINUE
+ X( J ) = ONE
+ XJ = ONE
+ SCALE = ZERO
+ XMAX = ZERO
+ END IF
+ 100 CONTINUE
+*
+* Scale x if necessary to avoid overflow when adding a
+* multiple of column j of A.
+*
+ IF( XJ.GT.ONE ) THEN
+ REC = ONE / XJ
+ IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN
+*
+* Scale x by 1/(2*abs(x(j))).
+*
+ REC = REC*HALF
+ CALL DSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ END IF
+ ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN
+*
+* Scale x by 1/2.
+*
+ CALL DSCAL( N, HALF, X, 1 )
+ SCALE = SCALE*HALF
+ END IF
+*
+ IF( UPPER ) THEN
+ IF( J.GT.1 ) THEN
+*
+* Compute the update
+* x(1:j-1) := x(1:j-1) - x(j) * A(1:j-1,j)
+*
+ CALL DAXPY( J-1, -X( J )*TSCAL, A( 1, J ), 1, X,
+ $ 1 )
+ I = IDAMAX( J-1, X, 1 )
+ XMAX = ABS( X( I ) )
+ END IF
+ ELSE
+ IF( J.LT.N ) THEN
+*
+* Compute the update
+* x(j+1:n) := x(j+1:n) - x(j) * A(j+1:n,j)
+*
+ CALL DAXPY( N-J, -X( J )*TSCAL, A( J+1, J ), 1,
+ $ X( J+1 ), 1 )
+ I = J + IDAMAX( N-J, X( J+1 ), 1 )
+ XMAX = ABS( X( I ) )
+ END IF
+ END IF
+ 110 CONTINUE
+*
+ ELSE
+*
+* Solve A' * x = b
+*
+ DO 160 J = JFIRST, JLAST, JINC
+*
+* Compute x(j) = b(j) - sum A(k,j)*x(k).
+* k<>j
+*
+ XJ = ABS( X( J ) )
+ USCAL = TSCAL
+ REC = ONE / MAX( XMAX, ONE )
+ IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+*
+* If x(j) could overflow, scale x by 1/(2*XMAX).
+*
+ REC = REC*HALF
+ IF( NOUNIT ) THEN
+ TJJS = A( J, J )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ END IF
+ TJJ = ABS( TJJS )
+ IF( TJJ.GT.ONE ) THEN
+*
+* Divide by A(j,j) when scaling x if A(j,j) > 1.
+*
+ REC = MIN( ONE, REC*TJJ )
+ USCAL = USCAL / TJJS
+ END IF
+ IF( REC.LT.ONE ) THEN
+ CALL DSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+*
+ SUMJ = ZERO
+ IF( USCAL.EQ.ONE ) THEN
+*
+* If the scaling needed for A in the dot product is 1,
+* call DDOT to perform the dot product.
+*
+ IF( UPPER ) THEN
+ SUMJ = DDOT( J-1, A( 1, J ), 1, X, 1 )
+ ELSE IF( J.LT.N ) THEN
+ SUMJ = DDOT( N-J, A( J+1, J ), 1, X( J+1 ), 1 )
+ END IF
+ ELSE
+*
+* Otherwise, use in-line code for the dot product.
+*
+ IF( UPPER ) THEN
+ DO 120 I = 1, J - 1
+ SUMJ = SUMJ + ( A( I, J )*USCAL )*X( I )
+ 120 CONTINUE
+ ELSE IF( J.LT.N ) THEN
+ DO 130 I = J + 1, N
+ SUMJ = SUMJ + ( A( I, J )*USCAL )*X( I )
+ 130 CONTINUE
+ END IF
+ END IF
+*
+ IF( USCAL.EQ.TSCAL ) THEN
+*
+* Compute x(j) := ( x(j) - sumj ) / A(j,j) if 1/A(j,j)
+* was not used to scale the dotproduct.
+*
+ X( J ) = X( J ) - SUMJ
+ XJ = ABS( X( J ) )
+ IF( NOUNIT ) THEN
+ TJJS = A( J, J )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ IF( TSCAL.EQ.ONE )
+ $ GO TO 150
+ END IF
+*
+* Compute x(j) = x(j) / A(j,j), scaling if necessary.
+*
+ TJJ = ABS( TJJS )
+ IF( TJJ.GT.SMLNUM ) THEN
+*
+* abs(A(j,j)) > SMLNUM:
+*
+ IF( TJJ.LT.ONE ) THEN
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale X by 1/abs(x(j)).
+*
+ REC = ONE / XJ
+ CALL DSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+ X( J ) = X( J ) / TJJS
+ ELSE IF( TJJ.GT.ZERO ) THEN
+*
+* 0 < abs(A(j,j)) <= SMLNUM:
+*
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM.
+*
+ REC = ( TJJ*BIGNUM ) / XJ
+ CALL DSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ X( J ) = X( J ) / TJJS
+ ELSE
+*
+* A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and
+* scale = 0, and compute a solution to A'*x = 0.
+*
+ DO 140 I = 1, N
+ X( I ) = ZERO
+ 140 CONTINUE
+ X( J ) = ONE
+ SCALE = ZERO
+ XMAX = ZERO
+ END IF
+ 150 CONTINUE
+ ELSE
+*
+* Compute x(j) := x(j) / A(j,j) - sumj if the dot
+* product has already been divided by 1/A(j,j).
+*
+ X( J ) = X( J ) / TJJS - SUMJ
+ END IF
+ XMAX = MAX( XMAX, ABS( X( J ) ) )
+ 160 CONTINUE
+ END IF
+ SCALE = SCALE / TSCAL
+ END IF
+*
+* Scale the column norms by 1/TSCAL for return.
+*
+ IF( TSCAL.NE.ONE ) THEN
+ CALL DSCAL( N, ONE / TSCAL, CNORM, 1 )
+ END IF
+*
+ RETURN
+*
+* End of DLATRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlatrz.f b/2.3-1/src/fortran/lapack/dlatrz.f
new file mode 100644
index 00000000..e1a2cf97
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlatrz.f
@@ -0,0 +1,127 @@
+ SUBROUTINE DLATRZ( M, N, L, A, LDA, TAU, WORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER L, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLATRZ factors the M-by-(M+L) real upper trapezoidal matrix
+* [ A1 A2 ] = [ A(1:M,1:M) A(1:M,N-L+1:N) ] as ( R 0 ) * Z, by means
+* of orthogonal transformations. Z is an (M+L)-by-(M+L) orthogonal
+* matrix and, R and A1 are M-by-M upper triangular matrices.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* L (input) INTEGER
+* The number of columns of the matrix A containing the
+* meaningful part of the Householder vectors. N-M >= L >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the leading M-by-N upper trapezoidal part of the
+* array A must contain the matrix to be factorized.
+* On exit, the leading M-by-M upper triangular part of A
+* contains the upper triangular matrix R, and elements N-L+1 to
+* N of the first M rows of A, with the array TAU, represent the
+* orthogonal matrix Z as a product of M elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (M)
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (M)
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* The factorization is obtained by Householder's method. The kth
+* transformation matrix, Z( k ), which is used to introduce zeros into
+* the ( m - k + 1 )th row of A, is given in the form
+*
+* Z( k ) = ( I 0 ),
+* ( 0 T( k ) )
+*
+* where
+*
+* T( k ) = I - tau*u( k )*u( k )', u( k ) = ( 1 ),
+* ( 0 )
+* ( z( k ) )
+*
+* tau is a scalar and z( k ) is an l element vector. tau and z( k )
+* are chosen to annihilate the elements of the kth row of A2.
+*
+* The scalar tau is returned in the kth element of TAU and the vector
+* u( k ) in the kth row of A2, such that the elements of z( k ) are
+* in a( k, l + 1 ), ..., a( k, n ). The elements of R are returned in
+* the upper triangular part of A1.
+*
+* Z is given by
+*
+* Z = Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFG, DLARZ
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 ) THEN
+ RETURN
+ ELSE IF( M.EQ.N ) THEN
+ DO 10 I = 1, N
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ DO 20 I = M, 1, -1
+*
+* Generate elementary reflector H(i) to annihilate
+* [ A(i,i) A(i,n-l+1:n) ]
+*
+ CALL DLARFG( L+1, A( I, I ), A( I, N-L+1 ), LDA, TAU( I ) )
+*
+* Apply H(i) to A(1:i-1,i:n) from the right
+*
+ CALL DLARZ( 'Right', I-1, N-I+1, L, A( I, N-L+1 ), LDA,
+ $ TAU( I ), A( 1, I ), LDA, WORK )
+*
+ 20 CONTINUE
+*
+ RETURN
+*
+* End of DLATRZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlatzm.f b/2.3-1/src/fortran/lapack/dlatzm.f
new file mode 100644
index 00000000..2467ab60
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlatzm.f
@@ -0,0 +1,142 @@
+ SUBROUTINE DLATZM( SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER INCV, LDC, M, N
+ DOUBLE PRECISION TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C1( LDC, * ), C2( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is deprecated and has been replaced by routine DORMRZ.
+*
+* DLATZM applies a Householder matrix generated by DTZRQF to a matrix.
+*
+* Let P = I - tau*u*u', u = ( 1 ),
+* ( v )
+* where v is an (m-1) vector if SIDE = 'L', or a (n-1) vector if
+* SIDE = 'R'.
+*
+* If SIDE equals 'L', let
+* C = [ C1 ] 1
+* [ C2 ] m-1
+* n
+* Then C is overwritten by P*C.
+*
+* If SIDE equals 'R', let
+* C = [ C1, C2 ] m
+* 1 n-1
+* Then C is overwritten by C*P.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form P * C
+* = 'R': form C * P
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* V (input) DOUBLE PRECISION array, dimension
+* (1 + (M-1)*abs(INCV)) if SIDE = 'L'
+* (1 + (N-1)*abs(INCV)) if SIDE = 'R'
+* The vector v in the representation of P. V is not used
+* if TAU = 0.
+*
+* INCV (input) INTEGER
+* The increment between elements of v. INCV <> 0
+*
+* TAU (input) DOUBLE PRECISION
+* The value tau in the representation of P.
+*
+* C1 (input/output) DOUBLE PRECISION array, dimension
+* (LDC,N) if SIDE = 'L'
+* (M,1) if SIDE = 'R'
+* On entry, the n-vector C1 if SIDE = 'L', or the m-vector C1
+* if SIDE = 'R'.
+*
+* On exit, the first row of P*C if SIDE = 'L', or the first
+* column of C*P if SIDE = 'R'.
+*
+* C2 (input/output) DOUBLE PRECISION array, dimension
+* (LDC, N) if SIDE = 'L'
+* (LDC, N-1) if SIDE = 'R'
+* On entry, the (m - 1) x n matrix C2 if SIDE = 'L', or the
+* m x (n - 1) matrix C2 if SIDE = 'R'.
+*
+* On exit, rows 2:m of P*C if SIDE = 'L', or columns 2:m of C*P
+* if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the arrays C1 and C2. LDC >= (1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L'
+* (M) if SIDE = 'R'
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMV, DGER
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( ( MIN( M, N ).EQ.0 ) .OR. ( TAU.EQ.ZERO ) )
+ $ RETURN
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* w := C1 + v' * C2
+*
+ CALL DCOPY( N, C1, LDC, WORK, 1 )
+ CALL DGEMV( 'Transpose', M-1, N, ONE, C2, LDC, V, INCV, ONE,
+ $ WORK, 1 )
+*
+* [ C1 ] := [ C1 ] - tau* [ 1 ] * w'
+* [ C2 ] [ C2 ] [ v ]
+*
+ CALL DAXPY( N, -TAU, WORK, 1, C1, LDC )
+ CALL DGER( M-1, N, -TAU, V, INCV, WORK, 1, C2, LDC )
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* w := C1 + C2 * v
+*
+ CALL DCOPY( M, C1, 1, WORK, 1 )
+ CALL DGEMV( 'No transpose', M, N-1, ONE, C2, LDC, V, INCV, ONE,
+ $ WORK, 1 )
+*
+* [ C1, C2 ] := [ C1, C2 ] - tau* w * [ 1 , v']
+*
+ CALL DAXPY( M, -TAU, WORK, 1, C1, 1 )
+ CALL DGER( M, N-1, -TAU, WORK, 1, V, INCV, C2, LDC )
+ END IF
+*
+ RETURN
+*
+* End of DLATZM
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlazq3.f b/2.3-1/src/fortran/lapack/dlazq3.f
new file mode 100644
index 00000000..784248f7
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlazq3.f
@@ -0,0 +1,302 @@
+ SUBROUTINE DLAZQ3( I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL,
+ $ ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
+ $ DN2, TAU )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE
+ INTEGER I0, ITER, N0, NDIV, NFAIL, PP, TTYPE
+ DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, QMAX,
+ $ SIGMA, TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAZQ3 checks for deflation, computes a shift (TAU) and calls dqds.
+* In case of failure it changes shifts, and tries again until output
+* is positive.
+*
+* Arguments
+* =========
+*
+* I0 (input) INTEGER
+* First index.
+*
+* N0 (input) INTEGER
+* Last index.
+*
+* Z (input) DOUBLE PRECISION array, dimension ( 4*N )
+* Z holds the qd array.
+*
+* PP (input) INTEGER
+* PP=0 for ping, PP=1 for pong.
+*
+* DMIN (output) DOUBLE PRECISION
+* Minimum value of d.
+*
+* SIGMA (output) DOUBLE PRECISION
+* Sum of shifts used in current segment.
+*
+* DESIG (input/output) DOUBLE PRECISION
+* Lower order part of SIGMA
+*
+* QMAX (input) DOUBLE PRECISION
+* Maximum value of q.
+*
+* NFAIL (output) INTEGER
+* Number of times shift was too big.
+*
+* ITER (output) INTEGER
+* Number of iterations.
+*
+* NDIV (output) INTEGER
+* Number of divisions.
+*
+* IEEE (input) LOGICAL
+* Flag for IEEE or non IEEE arithmetic (passed to DLASQ5).
+*
+* TTYPE (input/output) INTEGER
+* Shift type. TTYPE is passed as an argument in order to save
+* its value between calls to DLAZQ3
+*
+* DMIN1 (input/output) REAL
+* DMIN2 (input/output) REAL
+* DN (input/output) REAL
+* DN1 (input/output) REAL
+* DN2 (input/output) REAL
+* TAU (input/output) REAL
+* These are passed as arguments in order to save their values
+* between calls to DLAZQ3
+*
+* This is a thread safe version of DLASQ3, which passes TTYPE, DMIN1,
+* DMIN2, DN, DN1. DN2 and TAU through the argument list in place of
+* declaring them in a SAVE statment.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION CBIAS
+ PARAMETER ( CBIAS = 1.50D0 )
+ DOUBLE PRECISION ZERO, QURTR, HALF, ONE, TWO, HUNDRD
+ PARAMETER ( ZERO = 0.0D0, QURTR = 0.250D0, HALF = 0.5D0,
+ $ ONE = 1.0D0, TWO = 2.0D0, HUNDRD = 100.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER IPN4, J4, N0IN, NN
+ DOUBLE PRECISION EPS, G, S, SAFMIN, T, TEMP, TOL, TOL2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASQ5, DLASQ6, DLAZQ4
+* ..
+* .. External Function ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ N0IN = N0
+ EPS = DLAMCH( 'Precision' )
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ TOL = EPS*HUNDRD
+ TOL2 = TOL**2
+ G = ZERO
+*
+* Check for deflation.
+*
+ 10 CONTINUE
+*
+ IF( N0.LT.I0 )
+ $ RETURN
+ IF( N0.EQ.I0 )
+ $ GO TO 20
+ NN = 4*N0 + PP
+ IF( N0.EQ.( I0+1 ) )
+ $ GO TO 40
+*
+* Check whether E(N0-1) is negligible, 1 eigenvalue.
+*
+ IF( Z( NN-5 ).GT.TOL2*( SIGMA+Z( NN-3 ) ) .AND.
+ $ Z( NN-2*PP-4 ).GT.TOL2*Z( NN-7 ) )
+ $ GO TO 30
+*
+ 20 CONTINUE
+*
+ Z( 4*N0-3 ) = Z( 4*N0+PP-3 ) + SIGMA
+ N0 = N0 - 1
+ GO TO 10
+*
+* Check whether E(N0-2) is negligible, 2 eigenvalues.
+*
+ 30 CONTINUE
+*
+ IF( Z( NN-9 ).GT.TOL2*SIGMA .AND.
+ $ Z( NN-2*PP-8 ).GT.TOL2*Z( NN-11 ) )
+ $ GO TO 50
+*
+ 40 CONTINUE
+*
+ IF( Z( NN-3 ).GT.Z( NN-7 ) ) THEN
+ S = Z( NN-3 )
+ Z( NN-3 ) = Z( NN-7 )
+ Z( NN-7 ) = S
+ END IF
+ IF( Z( NN-5 ).GT.Z( NN-3 )*TOL2 ) THEN
+ T = HALF*( ( Z( NN-7 )-Z( NN-3 ) )+Z( NN-5 ) )
+ S = Z( NN-3 )*( Z( NN-5 ) / T )
+ IF( S.LE.T ) THEN
+ S = Z( NN-3 )*( Z( NN-5 ) /
+ $ ( T*( ONE+SQRT( ONE+S / T ) ) ) )
+ ELSE
+ S = Z( NN-3 )*( Z( NN-5 ) / ( T+SQRT( T )*SQRT( T+S ) ) )
+ END IF
+ T = Z( NN-7 ) + ( S+Z( NN-5 ) )
+ Z( NN-3 ) = Z( NN-3 )*( Z( NN-7 ) / T )
+ Z( NN-7 ) = T
+ END IF
+ Z( 4*N0-7 ) = Z( NN-7 ) + SIGMA
+ Z( 4*N0-3 ) = Z( NN-3 ) + SIGMA
+ N0 = N0 - 2
+ GO TO 10
+*
+ 50 CONTINUE
+*
+* Reverse the qd-array, if warranted.
+*
+ IF( DMIN.LE.ZERO .OR. N0.LT.N0IN ) THEN
+ IF( CBIAS*Z( 4*I0+PP-3 ).LT.Z( 4*N0+PP-3 ) ) THEN
+ IPN4 = 4*( I0+N0 )
+ DO 60 J4 = 4*I0, 2*( I0+N0-1 ), 4
+ TEMP = Z( J4-3 )
+ Z( J4-3 ) = Z( IPN4-J4-3 )
+ Z( IPN4-J4-3 ) = TEMP
+ TEMP = Z( J4-2 )
+ Z( J4-2 ) = Z( IPN4-J4-2 )
+ Z( IPN4-J4-2 ) = TEMP
+ TEMP = Z( J4-1 )
+ Z( J4-1 ) = Z( IPN4-J4-5 )
+ Z( IPN4-J4-5 ) = TEMP
+ TEMP = Z( J4 )
+ Z( J4 ) = Z( IPN4-J4-4 )
+ Z( IPN4-J4-4 ) = TEMP
+ 60 CONTINUE
+ IF( N0-I0.LE.4 ) THEN
+ Z( 4*N0+PP-1 ) = Z( 4*I0+PP-1 )
+ Z( 4*N0-PP ) = Z( 4*I0-PP )
+ END IF
+ DMIN2 = MIN( DMIN2, Z( 4*N0+PP-1 ) )
+ Z( 4*N0+PP-1 ) = MIN( Z( 4*N0+PP-1 ), Z( 4*I0+PP-1 ),
+ $ Z( 4*I0+PP+3 ) )
+ Z( 4*N0-PP ) = MIN( Z( 4*N0-PP ), Z( 4*I0-PP ),
+ $ Z( 4*I0-PP+4 ) )
+ QMAX = MAX( QMAX, Z( 4*I0+PP-3 ), Z( 4*I0+PP+1 ) )
+ DMIN = -ZERO
+ END IF
+ END IF
+*
+ IF( DMIN.LT.ZERO .OR. SAFMIN*QMAX.LT.MIN( Z( 4*N0+PP-1 ),
+ $ Z( 4*N0+PP-9 ), DMIN2+Z( 4*N0-PP ) ) ) THEN
+*
+* Choose a shift.
+*
+ CALL DLAZQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN, DN1,
+ $ DN2, TAU, TTYPE, G )
+*
+* Call dqds until DMIN > 0.
+*
+ 80 CONTINUE
+*
+ CALL DLASQ5( I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN,
+ $ DN1, DN2, IEEE )
+*
+ NDIV = NDIV + ( N0-I0+2 )
+ ITER = ITER + 1
+*
+* Check status.
+*
+ IF( DMIN.GE.ZERO .AND. DMIN1.GT.ZERO ) THEN
+*
+* Success.
+*
+ GO TO 100
+*
+ ELSE IF( DMIN.LT.ZERO .AND. DMIN1.GT.ZERO .AND.
+ $ Z( 4*( N0-1 )-PP ).LT.TOL*( SIGMA+DN1 ) .AND.
+ $ ABS( DN ).LT.TOL*SIGMA ) THEN
+*
+* Convergence hidden by negative DN.
+*
+ Z( 4*( N0-1 )-PP+2 ) = ZERO
+ DMIN = ZERO
+ GO TO 100
+ ELSE IF( DMIN.LT.ZERO ) THEN
+*
+* TAU too big. Select new TAU and try again.
+*
+ NFAIL = NFAIL + 1
+ IF( TTYPE.LT.-22 ) THEN
+*
+* Failed twice. Play it safe.
+*
+ TAU = ZERO
+ ELSE IF( DMIN1.GT.ZERO ) THEN
+*
+* Late failure. Gives excellent shift.
+*
+ TAU = ( TAU+DMIN )*( ONE-TWO*EPS )
+ TTYPE = TTYPE - 11
+ ELSE
+*
+* Early failure. Divide by 4.
+*
+ TAU = QURTR*TAU
+ TTYPE = TTYPE - 12
+ END IF
+ GO TO 80
+ ELSE IF( DMIN.NE.DMIN ) THEN
+*
+* NaN.
+*
+ TAU = ZERO
+ GO TO 80
+ ELSE
+*
+* Possible underflow. Play it safe.
+*
+ GO TO 90
+ END IF
+ END IF
+*
+* Risk of underflow.
+*
+ 90 CONTINUE
+ CALL DLASQ6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN, DN1, DN2 )
+ NDIV = NDIV + ( N0-I0+2 )
+ ITER = ITER + 1
+ TAU = ZERO
+*
+ 100 CONTINUE
+ IF( TAU.LT.SIGMA ) THEN
+ DESIG = DESIG + TAU
+ T = SIGMA + DESIG
+ DESIG = DESIG - ( T-SIGMA )
+ ELSE
+ T = SIGMA + TAU
+ DESIG = SIGMA - ( T-TAU ) + DESIG
+ END IF
+ SIGMA = T
+*
+ RETURN
+*
+* End of DLAZQ3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dlazq4.f b/2.3-1/src/fortran/lapack/dlazq4.f
new file mode 100644
index 00000000..7c257f8d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dlazq4.f
@@ -0,0 +1,330 @@
+ SUBROUTINE DLAZQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN,
+ $ DN1, DN2, TAU, TTYPE, G )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER I0, N0, N0IN, PP, TTYPE
+ DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, TAU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DLAZQ4 computes an approximation TAU to the smallest eigenvalue
+* using values of d from the previous transform.
+*
+* I0 (input) INTEGER
+* First index.
+*
+* N0 (input) INTEGER
+* Last index.
+*
+* Z (input) DOUBLE PRECISION array, dimension ( 4*N )
+* Z holds the qd array.
+*
+* PP (input) INTEGER
+* PP=0 for ping, PP=1 for pong.
+*
+* N0IN (input) INTEGER
+* The value of N0 at start of EIGTEST.
+*
+* DMIN (input) DOUBLE PRECISION
+* Minimum value of d.
+*
+* DMIN1 (input) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ).
+*
+* DMIN2 (input) DOUBLE PRECISION
+* Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+* DN (input) DOUBLE PRECISION
+* d(N)
+*
+* DN1 (input) DOUBLE PRECISION
+* d(N-1)
+*
+* DN2 (input) DOUBLE PRECISION
+* d(N-2)
+*
+* TAU (output) DOUBLE PRECISION
+* This is the shift.
+*
+* TTYPE (output) INTEGER
+* Shift type.
+*
+* G (input/output) DOUBLE PRECISION
+* G is passed as an argument in order to save its value between
+* calls to DLAZQ4
+*
+* Further Details
+* ===============
+* CNST1 = 9/16
+*
+* This is a thread safe version of DLASQ4, which passes G through the
+* argument list in place of declaring G in a SAVE statment.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION CNST1, CNST2, CNST3
+ PARAMETER ( CNST1 = 0.5630D0, CNST2 = 1.010D0,
+ $ CNST3 = 1.050D0 )
+ DOUBLE PRECISION QURTR, THIRD, HALF, ZERO, ONE, TWO, HUNDRD
+ PARAMETER ( QURTR = 0.250D0, THIRD = 0.3330D0,
+ $ HALF = 0.50D0, ZERO = 0.0D0, ONE = 1.0D0,
+ $ TWO = 2.0D0, HUNDRD = 100.0D0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I4, NN, NP
+ DOUBLE PRECISION A2, B1, B2, GAM, GAP1, GAP2, S
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* A negative DMIN forces the shift to take that absolute value
+* TTYPE records the type of shift.
+*
+ IF( DMIN.LE.ZERO ) THEN
+ TAU = -DMIN
+ TTYPE = -1
+ RETURN
+ END IF
+*
+ NN = 4*N0 + PP
+ IF( N0IN.EQ.N0 ) THEN
+*
+* No eigenvalues deflated.
+*
+ IF( DMIN.EQ.DN .OR. DMIN.EQ.DN1 ) THEN
+*
+ B1 = SQRT( Z( NN-3 ) )*SQRT( Z( NN-5 ) )
+ B2 = SQRT( Z( NN-7 ) )*SQRT( Z( NN-9 ) )
+ A2 = Z( NN-7 ) + Z( NN-5 )
+*
+* Cases 2 and 3.
+*
+ IF( DMIN.EQ.DN .AND. DMIN1.EQ.DN1 ) THEN
+ GAP2 = DMIN2 - A2 - DMIN2*QURTR
+ IF( GAP2.GT.ZERO .AND. GAP2.GT.B2 ) THEN
+ GAP1 = A2 - DN - ( B2 / GAP2 )*B2
+ ELSE
+ GAP1 = A2 - DN - ( B1+B2 )
+ END IF
+ IF( GAP1.GT.ZERO .AND. GAP1.GT.B1 ) THEN
+ S = MAX( DN-( B1 / GAP1 )*B1, HALF*DMIN )
+ TTYPE = -2
+ ELSE
+ S = ZERO
+ IF( DN.GT.B1 )
+ $ S = DN - B1
+ IF( A2.GT.( B1+B2 ) )
+ $ S = MIN( S, A2-( B1+B2 ) )
+ S = MAX( S, THIRD*DMIN )
+ TTYPE = -3
+ END IF
+ ELSE
+*
+* Case 4.
+*
+ TTYPE = -4
+ S = QURTR*DMIN
+ IF( DMIN.EQ.DN ) THEN
+ GAM = DN
+ A2 = ZERO
+ IF( Z( NN-5 ) .GT. Z( NN-7 ) )
+ $ RETURN
+ B2 = Z( NN-5 ) / Z( NN-7 )
+ NP = NN - 9
+ ELSE
+ NP = NN - 2*PP
+ B2 = Z( NP-2 )
+ GAM = DN1
+ IF( Z( NP-4 ) .GT. Z( NP-2 ) )
+ $ RETURN
+ A2 = Z( NP-4 ) / Z( NP-2 )
+ IF( Z( NN-9 ) .GT. Z( NN-11 ) )
+ $ RETURN
+ B2 = Z( NN-9 ) / Z( NN-11 )
+ NP = NN - 13
+ END IF
+*
+* Approximate contribution to norm squared from I < NN-1.
+*
+ A2 = A2 + B2
+ DO 10 I4 = NP, 4*I0 - 1 + PP, -4
+ IF( B2.EQ.ZERO )
+ $ GO TO 20
+ B1 = B2
+ IF( Z( I4 ) .GT. Z( I4-2 ) )
+ $ RETURN
+ B2 = B2*( Z( I4 ) / Z( I4-2 ) )
+ A2 = A2 + B2
+ IF( HUNDRD*MAX( B2, B1 ).LT.A2 .OR. CNST1.LT.A2 )
+ $ GO TO 20
+ 10 CONTINUE
+ 20 CONTINUE
+ A2 = CNST3*A2
+*
+* Rayleigh quotient residual bound.
+*
+ IF( A2.LT.CNST1 )
+ $ S = GAM*( ONE-SQRT( A2 ) ) / ( ONE+A2 )
+ END IF
+ ELSE IF( DMIN.EQ.DN2 ) THEN
+*
+* Case 5.
+*
+ TTYPE = -5
+ S = QURTR*DMIN
+*
+* Compute contribution to norm squared from I > NN-2.
+*
+ NP = NN - 2*PP
+ B1 = Z( NP-2 )
+ B2 = Z( NP-6 )
+ GAM = DN2
+ IF( Z( NP-8 ).GT.B2 .OR. Z( NP-4 ).GT.B1 )
+ $ RETURN
+ A2 = ( Z( NP-8 ) / B2 )*( ONE+Z( NP-4 ) / B1 )
+*
+* Approximate contribution to norm squared from I < NN-2.
+*
+ IF( N0-I0.GT.2 ) THEN
+ B2 = Z( NN-13 ) / Z( NN-15 )
+ A2 = A2 + B2
+ DO 30 I4 = NN - 17, 4*I0 - 1 + PP, -4
+ IF( B2.EQ.ZERO )
+ $ GO TO 40
+ B1 = B2
+ IF( Z( I4 ) .GT. Z( I4-2 ) )
+ $ RETURN
+ B2 = B2*( Z( I4 ) / Z( I4-2 ) )
+ A2 = A2 + B2
+ IF( HUNDRD*MAX( B2, B1 ).LT.A2 .OR. CNST1.LT.A2 )
+ $ GO TO 40
+ 30 CONTINUE
+ 40 CONTINUE
+ A2 = CNST3*A2
+ END IF
+*
+ IF( A2.LT.CNST1 )
+ $ S = GAM*( ONE-SQRT( A2 ) ) / ( ONE+A2 )
+ ELSE
+*
+* Case 6, no information to guide us.
+*
+ IF( TTYPE.EQ.-6 ) THEN
+ G = G + THIRD*( ONE-G )
+ ELSE IF( TTYPE.EQ.-18 ) THEN
+ G = QURTR*THIRD
+ ELSE
+ G = QURTR
+ END IF
+ S = G*DMIN
+ TTYPE = -6
+ END IF
+*
+ ELSE IF( N0IN.EQ.( N0+1 ) ) THEN
+*
+* One eigenvalue just deflated. Use DMIN1, DN1 for DMIN and DN.
+*
+ IF( DMIN1.EQ.DN1 .AND. DMIN2.EQ.DN2 ) THEN
+*
+* Cases 7 and 8.
+*
+ TTYPE = -7
+ S = THIRD*DMIN1
+ IF( Z( NN-5 ).GT.Z( NN-7 ) )
+ $ RETURN
+ B1 = Z( NN-5 ) / Z( NN-7 )
+ B2 = B1
+ IF( B2.EQ.ZERO )
+ $ GO TO 60
+ DO 50 I4 = 4*N0 - 9 + PP, 4*I0 - 1 + PP, -4
+ A2 = B1
+ IF( Z( I4 ).GT.Z( I4-2 ) )
+ $ RETURN
+ B1 = B1*( Z( I4 ) / Z( I4-2 ) )
+ B2 = B2 + B1
+ IF( HUNDRD*MAX( B1, A2 ).LT.B2 )
+ $ GO TO 60
+ 50 CONTINUE
+ 60 CONTINUE
+ B2 = SQRT( CNST3*B2 )
+ A2 = DMIN1 / ( ONE+B2**2 )
+ GAP2 = HALF*DMIN2 - A2
+ IF( GAP2.GT.ZERO .AND. GAP2.GT.B2*A2 ) THEN
+ S = MAX( S, A2*( ONE-CNST2*A2*( B2 / GAP2 )*B2 ) )
+ ELSE
+ S = MAX( S, A2*( ONE-CNST2*B2 ) )
+ TTYPE = -8
+ END IF
+ ELSE
+*
+* Case 9.
+*
+ S = QURTR*DMIN1
+ IF( DMIN1.EQ.DN1 )
+ $ S = HALF*DMIN1
+ TTYPE = -9
+ END IF
+*
+ ELSE IF( N0IN.EQ.( N0+2 ) ) THEN
+*
+* Two eigenvalues deflated. Use DMIN2, DN2 for DMIN and DN.
+*
+* Cases 10 and 11.
+*
+ IF( DMIN2.EQ.DN2 .AND. TWO*Z( NN-5 ).LT.Z( NN-7 ) ) THEN
+ TTYPE = -10
+ S = THIRD*DMIN2
+ IF( Z( NN-5 ).GT.Z( NN-7 ) )
+ $ RETURN
+ B1 = Z( NN-5 ) / Z( NN-7 )
+ B2 = B1
+ IF( B2.EQ.ZERO )
+ $ GO TO 80
+ DO 70 I4 = 4*N0 - 9 + PP, 4*I0 - 1 + PP, -4
+ IF( Z( I4 ).GT.Z( I4-2 ) )
+ $ RETURN
+ B1 = B1*( Z( I4 ) / Z( I4-2 ) )
+ B2 = B2 + B1
+ IF( HUNDRD*B1.LT.B2 )
+ $ GO TO 80
+ 70 CONTINUE
+ 80 CONTINUE
+ B2 = SQRT( CNST3*B2 )
+ A2 = DMIN2 / ( ONE+B2**2 )
+ GAP2 = Z( NN-7 ) + Z( NN-9 ) -
+ $ SQRT( Z( NN-11 ) )*SQRT( Z( NN-9 ) ) - A2
+ IF( GAP2.GT.ZERO .AND. GAP2.GT.B2*A2 ) THEN
+ S = MAX( S, A2*( ONE-CNST2*A2*( B2 / GAP2 )*B2 ) )
+ ELSE
+ S = MAX( S, A2*( ONE-CNST2*B2 ) )
+ END IF
+ ELSE
+ S = QURTR*DMIN2
+ TTYPE = -11
+ END IF
+ ELSE IF( N0IN.GT.( N0+2 ) ) THEN
+*
+* Case 12, more than two eigenvalues deflated. No information.
+*
+ S = ZERO
+ TTYPE = -12
+ END IF
+*
+ TAU = S
+ RETURN
+*
+* End of DLAZQ4
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dopgtr.f b/2.3-1/src/fortran/lapack/dopgtr.f
new file mode 100644
index 00000000..cf0901ff
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dopgtr.f
@@ -0,0 +1,160 @@
+ SUBROUTINE DOPGTR( UPLO, N, AP, TAU, Q, LDQ, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDQ, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), Q( LDQ, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DOPGTR generates a real orthogonal matrix Q which is defined as the
+* product of n-1 elementary reflectors H(i) of order n, as returned by
+* DSPTRD using packed storage:
+*
+* if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
+*
+* if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangular packed storage used in previous
+* call to DSPTRD;
+* = 'L': Lower triangular packed storage used in previous
+* call to DSPTRD.
+*
+* N (input) INTEGER
+* The order of the matrix Q. N >= 0.
+*
+* AP (input) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* The vectors which define the elementary reflectors, as
+* returned by DSPTRD.
+*
+* TAU (input) DOUBLE PRECISION array, dimension (N-1)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DSPTRD.
+*
+* Q (output) DOUBLE PRECISION array, dimension (LDQ,N)
+* The N-by-N orthogonal matrix Q.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= max(1,N).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N-1)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, IINFO, IJ, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DORG2L, DORG2R, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDQ.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DOPGTR', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Q was determined by a call to DSPTRD with UPLO = 'U'
+*
+* Unpack the vectors which define the elementary reflectors and
+* set the last row and column of Q equal to those of the unit
+* matrix
+*
+ IJ = 2
+ DO 20 J = 1, N - 1
+ DO 10 I = 1, J - 1
+ Q( I, J ) = AP( IJ )
+ IJ = IJ + 1
+ 10 CONTINUE
+ IJ = IJ + 2
+ Q( N, J ) = ZERO
+ 20 CONTINUE
+ DO 30 I = 1, N - 1
+ Q( I, N ) = ZERO
+ 30 CONTINUE
+ Q( N, N ) = ONE
+*
+* Generate Q(1:n-1,1:n-1)
+*
+ CALL DORG2L( N-1, N-1, N-1, Q, LDQ, TAU, WORK, IINFO )
+*
+ ELSE
+*
+* Q was determined by a call to DSPTRD with UPLO = 'L'.
+*
+* Unpack the vectors which define the elementary reflectors and
+* set the first row and column of Q equal to those of the unit
+* matrix
+*
+ Q( 1, 1 ) = ONE
+ DO 40 I = 2, N
+ Q( I, 1 ) = ZERO
+ 40 CONTINUE
+ IJ = 3
+ DO 60 J = 2, N
+ Q( 1, J ) = ZERO
+ DO 50 I = J + 1, N
+ Q( I, J ) = AP( IJ )
+ IJ = IJ + 1
+ 50 CONTINUE
+ IJ = IJ + 2
+ 60 CONTINUE
+ IF( N.GT.1 ) THEN
+*
+* Generate Q(2:n,2:n)
+*
+ CALL DORG2R( N-1, N-1, N-1, Q( 2, 2 ), LDQ, TAU, WORK,
+ $ IINFO )
+ END IF
+ END IF
+ RETURN
+*
+* End of DOPGTR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorg2l.f b/2.3-1/src/fortran/lapack/dorg2l.f
new file mode 100644
index 00000000..a20965fd
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorg2l.f
@@ -0,0 +1,127 @@
+ SUBROUTINE DORG2L( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORG2L generates an m by n real matrix Q with orthonormal columns,
+* which is defined as the last n columns of a product of k elementary
+* reflectors of order m
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGEQLF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the (n-k+i)-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by DGEQLF in the last k columns of its array
+* argument A.
+* On exit, the m by n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQLF.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, II, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORG2L', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+* Initialise columns 1:n-k to columns of the unit matrix
+*
+ DO 20 J = 1, N - K
+ DO 10 L = 1, M
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ A( M-N+J, J ) = ONE
+ 20 CONTINUE
+*
+ DO 40 I = 1, K
+ II = N - K + I
+*
+* Apply H(i) to A(1:m-k+i,1:n-k+i) from the left
+*
+ A( M-N+II, II ) = ONE
+ CALL DLARF( 'Left', M-N+II, II-1, A( 1, II ), 1, TAU( I ), A,
+ $ LDA, WORK )
+ CALL DSCAL( M-N+II-1, -TAU( I ), A( 1, II ), 1 )
+ A( M-N+II, II ) = ONE - TAU( I )
+*
+* Set A(m-k+i+1:m,n-k+i) to zero
+*
+ DO 30 L = M - N + II + 1, M
+ A( L, II ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of DORG2L
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorg2r.f b/2.3-1/src/fortran/lapack/dorg2r.f
new file mode 100644
index 00000000..476e9f70
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorg2r.f
@@ -0,0 +1,129 @@
+ SUBROUTINE DORG2R( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORG2R generates an m by n real matrix Q with orthonormal columns,
+* which is defined as the first n columns of a product of k elementary
+* reflectors of order m
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGEQRF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the i-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by DGEQRF in the first k columns of its array
+* argument A.
+* On exit, the m-by-n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQRF.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORG2R', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+* Initialise columns k+1:n to columns of the unit matrix
+*
+ DO 20 J = K + 1, N
+ DO 10 L = 1, M
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ A( J, J ) = ONE
+ 20 CONTINUE
+*
+ DO 40 I = K, 1, -1
+*
+* Apply H(i) to A(i:m,i:n) from the left
+*
+ IF( I.LT.N ) THEN
+ A( I, I ) = ONE
+ CALL DLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAU( I ),
+ $ A( I, I+1 ), LDA, WORK )
+ END IF
+ IF( I.LT.M )
+ $ CALL DSCAL( M-I, -TAU( I ), A( I+1, I ), 1 )
+ A( I, I ) = ONE - TAU( I )
+*
+* Set A(1:i-1,i) to zero
+*
+ DO 30 L = 1, I - 1
+ A( L, I ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of DORG2R
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgbr.f b/2.3-1/src/fortran/lapack/dorgbr.f
new file mode 100644
index 00000000..dc882990
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgbr.f
@@ -0,0 +1,244 @@
+ SUBROUTINE DORGBR( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER VECT
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGBR generates one of the real orthogonal matrices Q or P**T
+* determined by DGEBRD when reducing a real matrix A to bidiagonal
+* form: A = Q * B * P**T. Q and P**T are defined as products of
+* elementary reflectors H(i) or G(i) respectively.
+*
+* If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q
+* is of order M:
+* if m >= k, Q = H(1) H(2) . . . H(k) and DORGBR returns the first n
+* columns of Q, where m >= n >= k;
+* if m < k, Q = H(1) H(2) . . . H(m-1) and DORGBR returns Q as an
+* M-by-M matrix.
+*
+* If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**T
+* is of order N:
+* if k < n, P**T = G(k) . . . G(2) G(1) and DORGBR returns the first m
+* rows of P**T, where n >= m >= k;
+* if k >= n, P**T = G(n-1) . . . G(2) G(1) and DORGBR returns P**T as
+* an N-by-N matrix.
+*
+* Arguments
+* =========
+*
+* VECT (input) CHARACTER*1
+* Specifies whether the matrix Q or the matrix P**T is
+* required, as defined in the transformation applied by DGEBRD:
+* = 'Q': generate Q;
+* = 'P': generate P**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q or P**T to be returned.
+* M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q or P**T to be returned.
+* N >= 0.
+* If VECT = 'Q', M >= N >= min(M,K);
+* if VECT = 'P', N >= M >= min(N,K).
+*
+* K (input) INTEGER
+* If VECT = 'Q', the number of columns in the original M-by-K
+* matrix reduced by DGEBRD.
+* If VECT = 'P', the number of rows in the original K-by-N
+* matrix reduced by DGEBRD.
+* K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the vectors which define the elementary reflectors,
+* as returned by DGEBRD.
+* On exit, the M-by-N matrix Q or P**T.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension
+* (min(M,K)) if VECT = 'Q'
+* (min(N,K)) if VECT = 'P'
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i) or G(i), which determines Q or P**T, as
+* returned by DGEBRD in its array argument TAUQ or TAUP.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,min(M,N)).
+* For optimum performance LWORK >= min(M,N)*NB, where NB
+* is the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, WANTQ
+ INTEGER I, IINFO, J, LWKOPT, MN, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DORGLQ, DORGQR, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ WANTQ = LSAME( VECT, 'Q' )
+ MN = MIN( M, N )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.WANTQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN
+ INFO = -1
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 .OR. ( WANTQ .AND. ( N.GT.M .OR. N.LT.MIN( M,
+ $ K ) ) ) .OR. ( .NOT.WANTQ .AND. ( M.GT.N .OR. M.LT.
+ $ MIN( N, K ) ) ) ) THEN
+ INFO = -3
+ ELSE IF( K.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LWORK.LT.MAX( 1, MN ) .AND. .NOT.LQUERY ) THEN
+ INFO = -9
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( WANTQ ) THEN
+ NB = ILAENV( 1, 'DORGQR', ' ', M, N, K, -1 )
+ ELSE
+ NB = ILAENV( 1, 'DORGLQ', ' ', M, N, K, -1 )
+ END IF
+ LWKOPT = MAX( 1, MN )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGBR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ IF( WANTQ ) THEN
+*
+* Form Q, determined by a call to DGEBRD to reduce an m-by-k
+* matrix
+*
+ IF( M.GE.K ) THEN
+*
+* If m >= k, assume m >= n >= k
+*
+ CALL DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, IINFO )
+*
+ ELSE
+*
+* If m < k, assume m = n
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the right, and set the first row and column of Q
+* to those of the unit matrix
+*
+ DO 20 J = M, 2, -1
+ A( 1, J ) = ZERO
+ DO 10 I = J + 1, M
+ A( I, J ) = A( I, J-1 )
+ 10 CONTINUE
+ 20 CONTINUE
+ A( 1, 1 ) = ONE
+ DO 30 I = 2, M
+ A( I, 1 ) = ZERO
+ 30 CONTINUE
+ IF( M.GT.1 ) THEN
+*
+* Form Q(2:m,2:m)
+*
+ CALL DORGQR( M-1, M-1, M-1, A( 2, 2 ), LDA, TAU, WORK,
+ $ LWORK, IINFO )
+ END IF
+ END IF
+ ELSE
+*
+* Form P', determined by a call to DGEBRD to reduce a k-by-n
+* matrix
+*
+ IF( K.LT.N ) THEN
+*
+* If k < n, assume k <= m <= n
+*
+ CALL DORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, IINFO )
+*
+ ELSE
+*
+* If k >= n, assume m = n
+*
+* Shift the vectors which define the elementary reflectors one
+* row downward, and set the first row and column of P' to
+* those of the unit matrix
+*
+ A( 1, 1 ) = ONE
+ DO 40 I = 2, N
+ A( I, 1 ) = ZERO
+ 40 CONTINUE
+ DO 60 J = 2, N
+ DO 50 I = J - 1, 2, -1
+ A( I, J ) = A( I-1, J )
+ 50 CONTINUE
+ A( 1, J ) = ZERO
+ 60 CONTINUE
+ IF( N.GT.1 ) THEN
+*
+* Form P'(2:n,2:n)
+*
+ CALL DORGLQ( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK,
+ $ LWORK, IINFO )
+ END IF
+ END IF
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORGBR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorghr.f b/2.3-1/src/fortran/lapack/dorghr.f
new file mode 100644
index 00000000..1283aece
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorghr.f
@@ -0,0 +1,164 @@
+ SUBROUTINE DORGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGHR generates a real orthogonal matrix Q which is defined as the
+* product of IHI-ILO elementary reflectors of order N, as returned by
+* DGEHRD:
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix Q. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI must have the same values as in the previous call
+* of DGEHRD. Q is equal to the unit matrix except in the
+* submatrix Q(ilo+1:ihi,ilo+1:ihi).
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the vectors which define the elementary reflectors,
+* as returned by DGEHRD.
+* On exit, the N-by-N orthogonal matrix Q.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (N-1)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEHRD.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= IHI-ILO.
+* For optimum performance LWORK >= (IHI-ILO)*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IINFO, J, LWKOPT, NB, NH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DORGQR, XERBLA
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NH = IHI - ILO
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -2
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, NH ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ NB = ILAENV( 1, 'DORGQR', ' ', NH, NH, NH, -1 )
+ LWKOPT = MAX( 1, NH )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGHR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the right, and set the first ilo and the last n-ihi
+* rows and columns to those of the unit matrix
+*
+ DO 40 J = IHI, ILO + 1, -1
+ DO 10 I = 1, J - 1
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ DO 20 I = J + 1, IHI
+ A( I, J ) = A( I, J-1 )
+ 20 CONTINUE
+ DO 30 I = IHI + 1, N
+ A( I, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ DO 60 J = 1, ILO
+ DO 50 I = 1, N
+ A( I, J ) = ZERO
+ 50 CONTINUE
+ A( J, J ) = ONE
+ 60 CONTINUE
+ DO 80 J = IHI + 1, N
+ DO 70 I = 1, N
+ A( I, J ) = ZERO
+ 70 CONTINUE
+ A( J, J ) = ONE
+ 80 CONTINUE
+*
+ IF( NH.GT.0 ) THEN
+*
+* Generate Q(ilo+1:ihi,ilo+1:ihi)
+*
+ CALL DORGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ),
+ $ WORK, LWORK, IINFO )
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORGHR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgl2.f b/2.3-1/src/fortran/lapack/dorgl2.f
new file mode 100644
index 00000000..1e08344d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgl2.f
@@ -0,0 +1,133 @@
+ SUBROUTINE DORGL2( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGL2 generates an m by n real matrix Q with orthonormal rows,
+* which is defined as the first m rows of a product of k elementary
+* reflectors of order n
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGELQF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. N >= M.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. M >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the i-th row must contain the vector which defines
+* the elementary reflector H(i), for i = 1,2,...,k, as returned
+* by DGELQF in the first k rows of its array argument A.
+* On exit, the m-by-n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGELQF.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (M)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.M ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGL2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.LE.0 )
+ $ RETURN
+*
+ IF( K.LT.M ) THEN
+*
+* Initialise rows k+1:m to rows of the unit matrix
+*
+ DO 20 J = 1, N
+ DO 10 L = K + 1, M
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ IF( J.GT.K .AND. J.LE.M )
+ $ A( J, J ) = ONE
+ 20 CONTINUE
+ END IF
+*
+ DO 40 I = K, 1, -1
+*
+* Apply H(i) to A(i:m,i:n) from the right
+*
+ IF( I.LT.N ) THEN
+ IF( I.LT.M ) THEN
+ A( I, I ) = ONE
+ CALL DLARF( 'Right', M-I, N-I+1, A( I, I ), LDA,
+ $ TAU( I ), A( I+1, I ), LDA, WORK )
+ END IF
+ CALL DSCAL( N-I, -TAU( I ), A( I, I+1 ), LDA )
+ END IF
+ A( I, I ) = ONE - TAU( I )
+*
+* Set A(i,1:i-1) to zero
+*
+ DO 30 L = 1, I - 1
+ A( I, L ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of DORGL2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorglq.f b/2.3-1/src/fortran/lapack/dorglq.f
new file mode 100644
index 00000000..e4f58c96
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorglq.f
@@ -0,0 +1,215 @@
+ SUBROUTINE DORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGLQ generates an M-by-N real matrix Q with orthonormal rows,
+* which is defined as the first M rows of a product of K elementary
+* reflectors of order N
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGELQF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. N >= M.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. M >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the i-th row must contain the vector which defines
+* the elementary reflector H(i), for i = 1,2,...,k, as returned
+* by DGELQF in the first k rows of its array argument A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGELQF.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK,
+ $ LWKOPT, NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORGL2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'DORGLQ', ' ', M, N, K, -1 )
+ LWKOPT = MAX( 1, M )*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.M ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGLQ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.LE.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DORGLQ', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORGLQ', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the last block.
+* The first kk rows are handled by the block method.
+*
+ KI = ( ( K-NX-1 ) / NB )*NB
+ KK = MIN( K, KI+NB )
+*
+* Set A(kk+1:m,1:kk) to zero.
+*
+ DO 20 J = 1, KK
+ DO 10 I = KK + 1, M
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the last or only block.
+*
+ IF( KK.LT.M )
+ $ CALL DORGL2( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA,
+ $ TAU( KK+1 ), WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = KI + 1, 1, -NB
+ IB = MIN( NB, K-I+1 )
+ IF( I+IB.LE.M ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL DLARFT( 'Forward', 'Rowwise', N-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H' to A(i+ib:m,i:n) from the right
+*
+ CALL DLARFB( 'Right', 'Transpose', 'Forward', 'Rowwise',
+ $ M-I-IB+1, N-I+1, IB, A( I, I ), LDA, WORK,
+ $ LDWORK, A( I+IB, I ), LDA, WORK( IB+1 ),
+ $ LDWORK )
+ END IF
+*
+* Apply H' to columns i:n of current block
+*
+ CALL DORGL2( IB, N-I+1, IB, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+* Set columns 1:i-1 of current block to zero
+*
+ DO 40 J = 1, I - 1
+ DO 30 L = I, I + IB - 1
+ A( L, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DORGLQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgql.f b/2.3-1/src/fortran/lapack/dorgql.f
new file mode 100644
index 00000000..1c4896e9
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgql.f
@@ -0,0 +1,222 @@
+ SUBROUTINE DORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGQL generates an M-by-N real matrix Q with orthonormal columns,
+* which is defined as the last N columns of a product of K elementary
+* reflectors of order M
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGEQLF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the (n-k+i)-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by DGEQLF in the last k columns of its array
+* argument A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQLF.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, KK, L, LDWORK, LWKOPT,
+ $ NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORG2L, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+ NB = ILAENV( 1, 'DORGQL', ' ', M, N, K, -1 )
+ LWKOPT = N*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGQL', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DORGQL', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORGQL', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the first block.
+* The last kk columns are handled by the block method.
+*
+ KK = MIN( K, ( ( K-NX+NB-1 ) / NB )*NB )
+*
+* Set A(m-kk+1:m,1:n-kk) to zero.
+*
+ DO 20 J = 1, N - KK
+ DO 10 I = M - KK + 1, M
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the first or only block.
+*
+ CALL DORG2L( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = K - KK + 1, K, NB
+ IB = MIN( NB, K-I+1 )
+ IF( N-K+I.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB,
+ $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(1:m-k+i+ib-1,1:n-k+i-1) from the left
+*
+ CALL DLARFB( 'Left', 'No transpose', 'Backward',
+ $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB,
+ $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+*
+* Apply H to rows 1:m-k+i+ib-1 of current block
+*
+ CALL DORG2L( M-K+I+IB-1, IB, IB, A( 1, N-K+I ), LDA,
+ $ TAU( I ), WORK, IINFO )
+*
+* Set rows m-k+i+ib:m of current block to zero
+*
+ DO 40 J = N - K + I, N - K + I + IB - 1
+ DO 30 L = M - K + I + IB, M
+ A( L, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DORGQL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgqr.f b/2.3-1/src/fortran/lapack/dorgqr.f
new file mode 100644
index 00000000..4db0ef5a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgqr.f
@@ -0,0 +1,216 @@
+ SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGQR generates an M-by-N real matrix Q with orthonormal columns,
+* which is defined as the first N columns of a product of K elementary
+* reflectors of order M
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGEQRF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the i-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by DGEQRF in the first k columns of its array
+* argument A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQRF.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK,
+ $ LWKOPT, NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORG2R, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'DORGQR', ' ', M, N, K, -1 )
+ LWKOPT = MAX( 1, N )*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGQR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DORGQR', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORGQR', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the last block.
+* The first kk columns are handled by the block method.
+*
+ KI = ( ( K-NX-1 ) / NB )*NB
+ KK = MIN( K, KI+NB )
+*
+* Set A(1:kk,kk+1:n) to zero.
+*
+ DO 20 J = KK + 1, N
+ DO 10 I = 1, KK
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the last or only block.
+*
+ IF( KK.LT.N )
+ $ CALL DORG2R( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA,
+ $ TAU( KK+1 ), WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = KI + 1, 1, -NB
+ IB = MIN( NB, K-I+1 )
+ IF( I+IB.LE.N ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL DLARFT( 'Forward', 'Columnwise', M-I+1, IB,
+ $ A( I, I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(i:m,i+ib:n) from the left
+*
+ CALL DLARFB( 'Left', 'No transpose', 'Forward',
+ $ 'Columnwise', M-I+1, N-I-IB+1, IB,
+ $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ),
+ $ LDA, WORK( IB+1 ), LDWORK )
+ END IF
+*
+* Apply H to rows i:m of current block
+*
+ CALL DORG2R( M-I+1, IB, IB, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+* Set rows 1:i-1 of current block to zero
+*
+ DO 40 J = I, I + IB - 1
+ DO 30 L = 1, I - 1
+ A( L, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DORGQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgr2.f b/2.3-1/src/fortran/lapack/dorgr2.f
new file mode 100644
index 00000000..9da45c5f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgr2.f
@@ -0,0 +1,131 @@
+ SUBROUTINE DORGR2( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGR2 generates an m by n real matrix Q with orthonormal rows,
+* which is defined as the last m rows of a product of k elementary
+* reflectors of order n
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGERQF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. N >= M.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. M >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the (m-k+i)-th row must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by DGERQF in the last k rows of its array argument
+* A.
+* On exit, the m by n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGERQF.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (M)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, II, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.M ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGR2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.LE.0 )
+ $ RETURN
+*
+ IF( K.LT.M ) THEN
+*
+* Initialise rows 1:m-k to rows of the unit matrix
+*
+ DO 20 J = 1, N
+ DO 10 L = 1, M - K
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ IF( J.GT.N-M .AND. J.LE.N-K )
+ $ A( M-N+J, J ) = ONE
+ 20 CONTINUE
+ END IF
+*
+ DO 40 I = 1, K
+ II = M - K + I
+*
+* Apply H(i) to A(1:m-k+i,1:n-k+i) from the right
+*
+ A( II, N-M+II ) = ONE
+ CALL DLARF( 'Right', II-1, N-M+II, A( II, 1 ), LDA, TAU( I ),
+ $ A, LDA, WORK )
+ CALL DSCAL( N-M+II-1, -TAU( I ), A( II, 1 ), LDA )
+ A( II, N-M+II ) = ONE - TAU( I )
+*
+* Set A(m-k+i,n-k+i+1:n) to zero
+*
+ DO 30 L = N - M + II + 1, N
+ A( II, L ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of DORGR2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgrq.f b/2.3-1/src/fortran/lapack/dorgrq.f
new file mode 100644
index 00000000..11633403
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgrq.f
@@ -0,0 +1,222 @@
+ SUBROUTINE DORGRQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGRQ generates an M-by-N real matrix Q with orthonormal rows,
+* which is defined as the last M rows of a product of K elementary
+* reflectors of order N
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGERQF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. N >= M.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. M >= K >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the (m-k+i)-th row must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by DGERQF in the last k rows of its array argument
+* A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGERQF.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, II, IINFO, IWS, J, KK, L, LDWORK,
+ $ LWKOPT, NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORGR2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.M ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.LE.0 ) THEN
+ LWKOPT = 1
+ ELSE
+ NB = ILAENV( 1, 'DORGRQ', ' ', M, N, K, -1 )
+ LWKOPT = M*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGRQ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.LE.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DORGRQ', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORGRQ', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the first block.
+* The last kk rows are handled by the block method.
+*
+ KK = MIN( K, ( ( K-NX+NB-1 ) / NB )*NB )
+*
+* Set A(1:m-kk,n-kk+1:n) to zero.
+*
+ DO 20 J = N - KK + 1, N
+ DO 10 I = 1, M - KK
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the first or only block.
+*
+ CALL DORGR2( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = K - KK + 1, K, NB
+ IB = MIN( NB, K-I+1 )
+ II = M - K + I
+ IF( II.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARFT( 'Backward', 'Rowwise', N-K+I+IB-1, IB,
+ $ A( II, 1 ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H' to A(1:m-k+i-1,1:n-k+i+ib-1) from the right
+*
+ CALL DLARFB( 'Right', 'Transpose', 'Backward', 'Rowwise',
+ $ II-1, N-K+I+IB-1, IB, A( II, 1 ), LDA, WORK,
+ $ LDWORK, A, LDA, WORK( IB+1 ), LDWORK )
+ END IF
+*
+* Apply H' to columns 1:n-k+i+ib-1 of current block
+*
+ CALL DORGR2( IB, N-K+I+IB-1, IB, A( II, 1 ), LDA, TAU( I ),
+ $ WORK, IINFO )
+*
+* Set columns n-k+i+ib:n of current block to zero
+*
+ DO 40 L = N - K + I + IB, N
+ DO 30 J = II, II + IB - 1
+ A( J, L ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of DORGRQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorgtr.f b/2.3-1/src/fortran/lapack/dorgtr.f
new file mode 100644
index 00000000..4c72d031
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorgtr.f
@@ -0,0 +1,183 @@
+ SUBROUTINE DORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORGTR generates a real orthogonal matrix Q which is defined as the
+* product of n-1 elementary reflectors of order N, as returned by
+* DSYTRD:
+*
+* if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
+*
+* if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A contains elementary reflectors
+* from DSYTRD;
+* = 'L': Lower triangle of A contains elementary reflectors
+* from DSYTRD.
+*
+* N (input) INTEGER
+* The order of the matrix Q. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the vectors which define the elementary reflectors,
+* as returned by DSYTRD.
+* On exit, the N-by-N orthogonal matrix Q.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (N-1)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DSYTRD.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N-1).
+* For optimum performance LWORK >= (N-1)*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, UPPER
+ INTEGER I, IINFO, J, LWKOPT, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DORGQL, DORGQR, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, N-1 ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( UPPER ) THEN
+ NB = ILAENV( 1, 'DORGQL', ' ', N-1, N-1, N-1, -1 )
+ ELSE
+ NB = ILAENV( 1, 'DORGQR', ' ', N-1, N-1, N-1, -1 )
+ END IF
+ LWKOPT = MAX( 1, N-1 )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORGTR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ IF( UPPER ) THEN
+*
+* Q was determined by a call to DSYTRD with UPLO = 'U'
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the left, and set the last row and column of Q to
+* those of the unit matrix
+*
+ DO 20 J = 1, N - 1
+ DO 10 I = 1, J - 1
+ A( I, J ) = A( I, J+1 )
+ 10 CONTINUE
+ A( N, J ) = ZERO
+ 20 CONTINUE
+ DO 30 I = 1, N - 1
+ A( I, N ) = ZERO
+ 30 CONTINUE
+ A( N, N ) = ONE
+*
+* Generate Q(1:n-1,1:n-1)
+*
+ CALL DORGQL( N-1, N-1, N-1, A, LDA, TAU, WORK, LWORK, IINFO )
+*
+ ELSE
+*
+* Q was determined by a call to DSYTRD with UPLO = 'L'.
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the right, and set the first row and column of Q to
+* those of the unit matrix
+*
+ DO 50 J = N, 2, -1
+ A( 1, J ) = ZERO
+ DO 40 I = J + 1, N
+ A( I, J ) = A( I, J-1 )
+ 40 CONTINUE
+ 50 CONTINUE
+ A( 1, 1 ) = ONE
+ DO 60 I = 2, N
+ A( I, 1 ) = ZERO
+ 60 CONTINUE
+ IF( N.GT.1 ) THEN
+*
+* Generate Q(2:n,2:n)
+*
+ CALL DORGQR( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK,
+ $ LWORK, IINFO )
+ END IF
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORGTR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorm2l.f b/2.3-1/src/fortran/lapack/dorm2l.f
new file mode 100644
index 00000000..27120075
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorm2l.f
@@ -0,0 +1,193 @@
+ SUBROUTINE DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORM2L overwrites the general real m by n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'T', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGEQLF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'T': apply Q' (Transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,K)
+* The i-th column must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGEQLF in the last k columns of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If SIDE = 'L', LDA >= max(1,M);
+* if SIDE = 'R', LDA >= max(1,N).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQLF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, MI, NI, NQ
+ DOUBLE PRECISION AII
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORM2L', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. NOTRAN ) .OR. ( .NOT.LEFT .AND. .NOT.NOTRAN ) )
+ $ THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ ELSE
+ MI = M
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) is applied to C(1:m-k+i,1:n)
+*
+ MI = M - K + I
+ ELSE
+*
+* H(i) is applied to C(1:m,1:n-k+i)
+*
+ NI = N - K + I
+ END IF
+*
+* Apply H(i)
+*
+ AII = A( NQ-K+I, I )
+ A( NQ-K+I, I ) = ONE
+ CALL DLARF( SIDE, MI, NI, A( 1, I ), 1, TAU( I ), C, LDC,
+ $ WORK )
+ A( NQ-K+I, I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of DORM2L
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorm2r.f b/2.3-1/src/fortran/lapack/dorm2r.f
new file mode 100644
index 00000000..79c9ef35
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorm2r.f
@@ -0,0 +1,197 @@
+ SUBROUTINE DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORM2R overwrites the general real m by n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'T', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGEQRF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'T': apply Q' (Transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,K)
+* The i-th column must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGEQRF in the first k columns of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If SIDE = 'L', LDA >= max(1,M);
+* if SIDE = 'R', LDA >= max(1,N).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQRF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, IC, JC, MI, NI, NQ
+ DOUBLE PRECISION AII
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORM2R', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR. ( .NOT.LEFT .AND. NOTRAN ) )
+ $ THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H(i) is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H(i)
+*
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL DLARF( SIDE, MI, NI, A( I, I ), 1, TAU( I ), C( IC, JC ),
+ $ LDC, WORK )
+ A( I, I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of DORM2R
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormbr.f b/2.3-1/src/fortran/lapack/dormbr.f
new file mode 100644
index 00000000..8066b893
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormbr.f
@@ -0,0 +1,281 @@
+ SUBROUTINE DORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
+ $ LDC, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS, VECT
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* If VECT = 'Q', DORMBR overwrites the general real M-by-N matrix C
+* with
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* If VECT = 'P', DORMBR overwrites the general real M-by-N matrix C
+* with
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': P * C C * P
+* TRANS = 'T': P**T * C C * P**T
+*
+* Here Q and P**T are the orthogonal matrices determined by DGEBRD when
+* reducing a real matrix A to bidiagonal form: A = Q * B * P**T. Q and
+* P**T are defined as products of elementary reflectors H(i) and G(i)
+* respectively.
+*
+* Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the
+* order of the orthogonal matrix Q or P**T that is applied.
+*
+* If VECT = 'Q', A is assumed to have been an NQ-by-K matrix:
+* if nq >= k, Q = H(1) H(2) . . . H(k);
+* if nq < k, Q = H(1) H(2) . . . H(nq-1).
+*
+* If VECT = 'P', A is assumed to have been a K-by-NQ matrix:
+* if k < nq, P = G(1) G(2) . . . G(k);
+* if k >= nq, P = G(1) G(2) . . . G(nq-1).
+*
+* Arguments
+* =========
+*
+* VECT (input) CHARACTER*1
+* = 'Q': apply Q or Q**T;
+* = 'P': apply P or P**T.
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q, Q**T, P or P**T from the Left;
+* = 'R': apply Q, Q**T, P or P**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q or P;
+* = 'T': Transpose, apply Q**T or P**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* If VECT = 'Q', the number of columns in the original
+* matrix reduced by DGEBRD.
+* If VECT = 'P', the number of rows in the original
+* matrix reduced by DGEBRD.
+* K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,min(nq,K)) if VECT = 'Q'
+* (LDA,nq) if VECT = 'P'
+* The vectors which define the elementary reflectors H(i) and
+* G(i), whose products determine the matrices Q and P, as
+* returned by DGEBRD.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If VECT = 'Q', LDA >= max(1,nq);
+* if VECT = 'P', LDA >= max(1,min(nq,K)).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (min(nq,K))
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i) or G(i) which determines Q or P, as returned
+* by DGEBRD in the array argument TAUQ or TAUP.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q
+* or P*C or P**T*C or C*P or C*P**T.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL APPLYQ, LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DORMLQ, DORMQR, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ APPLYQ = LSAME( VECT, 'Q' )
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q or P and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -3
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( K.LT.0 ) THEN
+ INFO = -6
+ ELSE IF( ( APPLYQ .AND. LDA.LT.MAX( 1, NQ ) ) .OR.
+ $ ( .NOT.APPLYQ .AND. LDA.LT.MAX( 1, MIN( NQ, K ) ) ) )
+ $ THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( APPLYQ ) THEN
+ IF( LEFT ) THEN
+ NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M-1, N, M-1,
+ $ -1 )
+ ELSE
+ NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N-1, N-1,
+ $ -1 )
+ END IF
+ ELSE
+ IF( LEFT ) THEN
+ NB = ILAENV( 1, 'DORMLQ', SIDE // TRANS, M-1, N, M-1,
+ $ -1 )
+ ELSE
+ NB = ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N-1, N-1,
+ $ -1 )
+ END IF
+ END IF
+ LWKOPT = MAX( 1, NW )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMBR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ WORK( 1 ) = 1
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+ IF( APPLYQ ) THEN
+*
+* Apply Q
+*
+ IF( NQ.GE.K ) THEN
+*
+* Q was determined by a call to DGEBRD with nq >= k
+*
+ CALL DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, IINFO )
+ ELSE IF( NQ.GT.1 ) THEN
+*
+* Q was determined by a call to DGEBRD with nq < k
+*
+ IF( LEFT ) THEN
+ MI = M - 1
+ NI = N
+ I1 = 2
+ I2 = 1
+ ELSE
+ MI = M
+ NI = N - 1
+ I1 = 1
+ I2 = 2
+ END IF
+ CALL DORMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU,
+ $ C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+ END IF
+ ELSE
+*
+* Apply P
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+ IF( NQ.GT.K ) THEN
+*
+* P was determined by a call to DGEBRD with nq > k
+*
+ CALL DORMLQ( SIDE, TRANST, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, IINFO )
+ ELSE IF( NQ.GT.1 ) THEN
+*
+* P was determined by a call to DGEBRD with nq <= k
+*
+ IF( LEFT ) THEN
+ MI = M - 1
+ NI = N
+ I1 = 2
+ I2 = 1
+ ELSE
+ MI = M
+ NI = N - 1
+ I1 = 1
+ I2 = 2
+ END IF
+ CALL DORMLQ( SIDE, TRANST, MI, NI, NQ-1, A( 1, 2 ), LDA,
+ $ TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+ END IF
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORMBR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormhr.f b/2.3-1/src/fortran/lapack/dormhr.f
new file mode 100644
index 00000000..5862538e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormhr.f
@@ -0,0 +1,201 @@
+ SUBROUTINE DORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
+ $ LDC, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER IHI, ILO, INFO, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMHR overwrites the general real M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* where Q is a real orthogonal matrix of order nq, with nq = m if
+* SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of
+* IHI-ILO elementary reflectors, as returned by DGEHRD:
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**T from the Left;
+* = 'R': apply Q or Q**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'T': Transpose, apply Q**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI must have the same values as in the previous call
+* of DGEHRD. Q is equal to the unit matrix except in the
+* submatrix Q(ilo+1:ihi,ilo+1:ihi).
+* If SIDE = 'L', then 1 <= ILO <= IHI <= M, if M > 0, and
+* ILO = 1 and IHI = 0, if M = 0;
+* if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and
+* ILO = 1 and IHI = 0, if N = 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L'
+* (LDA,N) if SIDE = 'R'
+* The vectors which define the elementary reflectors, as
+* returned by DGEHRD.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* LDA >= max(1,M) if SIDE = 'L'; LDA >= max(1,N) if SIDE = 'R'.
+*
+* TAU (input) DOUBLE PRECISION array, dimension
+* (M-1) if SIDE = 'L'
+* (N-1) if SIDE = 'R'
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEHRD.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY
+ INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NH, NI, NQ, NW
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DORMQR, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NH = IHI - ILO
+ LEFT = LSAME( SIDE, 'L' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ) .AND. .NOT.LSAME( TRANS, 'T' ) )
+ $ THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, NQ ) ) THEN
+ INFO = -5
+ ELSE IF( IHI.LT.MIN( ILO, NQ ) .OR. IHI.GT.NQ ) THEN
+ INFO = -6
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( LEFT ) THEN
+ NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, NH, N, NH, -1 )
+ ELSE
+ NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M, NH, NH, -1 )
+ END IF
+ LWKOPT = MAX( 1, NW )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMHR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. NH.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ IF( LEFT ) THEN
+ MI = NH
+ NI = N
+ I1 = ILO + 1
+ I2 = 1
+ ELSE
+ MI = M
+ NI = NH
+ I1 = 1
+ I2 = ILO + 1
+ END IF
+*
+ CALL DORMQR( SIDE, TRANS, MI, NI, NH, A( ILO+1, ILO ), LDA,
+ $ TAU( ILO ), C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+*
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORMHR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dorml2.f b/2.3-1/src/fortran/lapack/dorml2.f
new file mode 100644
index 00000000..d3941c9a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dorml2.f
@@ -0,0 +1,197 @@
+ SUBROUTINE DORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORML2 overwrites the general real m by n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'T', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGELQF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'T': apply Q' (Transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGELQF in the first k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGELQF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, IC, JC, MI, NI, NQ
+ DOUBLE PRECISION AII
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORML2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. NOTRAN ) .OR. ( .NOT.LEFT .AND. .NOT.NOTRAN ) )
+ $ THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H(i) is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H(i)
+*
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL DLARF( SIDE, MI, NI, A( I, I ), LDA, TAU( I ),
+ $ C( IC, JC ), LDC, WORK )
+ A( I, I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of DORML2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormlq.f b/2.3-1/src/fortran/lapack/dormlq.f
new file mode 100644
index 00000000..f0c68ef2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormlq.f
@@ -0,0 +1,267 @@
+ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMLQ overwrites the general real M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGELQF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**T from the Left;
+* = 'R': apply Q or Q**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'T': Transpose, apply Q**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGELQF in the first k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGELQF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK,
+ $ LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORML2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size. NB may be at most NBMAX, where NBMAX
+* is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ LWKOPT = MAX( 1, NW )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMLQ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORMLQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL DORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+ $ IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL DLARFT( 'Forward', 'Rowwise', NQ-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), T, LDT )
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H or H' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H or H'
+*
+ CALL DLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, IB,
+ $ A( I, I ), LDA, T, LDT, C( IC, JC ), LDC, WORK,
+ $ LDWORK )
+ 10 CONTINUE
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORMLQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormql.f b/2.3-1/src/fortran/lapack/dormql.f
new file mode 100644
index 00000000..f3370f10
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormql.f
@@ -0,0 +1,261 @@
+ SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMQL overwrites the general real M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by DGEQLF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**T from the Left;
+* = 'R': apply Q or Q**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'T': Transpose, apply Q**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,K)
+* The i-th column must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGEQLF in the last k columns of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If SIDE = 'L', LDA >= max(1,M);
+* if SIDE = 'R', LDA >= max(1,N).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQLF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ INTEGER I, I1, I2, I3, IB, IINFO, IWS, LDWORK, LWKOPT,
+ $ MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORM2L, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = MAX( 1, N )
+ ELSE
+ NQ = N
+ NW = MAX( 1, M )
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* Determine the block size. NB may be at most NBMAX, where
+* NBMAX is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'DORMQL', SIDE // TRANS, M, N,
+ $ K, -1 ) )
+ LWKOPT = NW*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMQL', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORMQL', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+ $ IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ ELSE
+ MI = M
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARFT( 'Backward', 'Columnwise', NQ-K+I+IB-1, IB,
+ $ A( 1, I ), LDA, TAU( I ), T, LDT )
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(1:m-k+i+ib-1,1:n)
+*
+ MI = M - K + I + IB - 1
+ ELSE
+*
+* H or H' is applied to C(1:m,1:n-k+i+ib-1)
+*
+ NI = N - K + I + IB - 1
+ END IF
+*
+* Apply H or H'
+*
+ CALL DLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI,
+ $ IB, A( 1, I ), LDA, T, LDT, C, LDC, WORK,
+ $ LDWORK )
+ 10 CONTINUE
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORMQL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormqr.f b/2.3-1/src/fortran/lapack/dormqr.f
new file mode 100644
index 00000000..ee372695
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormqr.f
@@ -0,0 +1,260 @@
+ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMQR overwrites the general real M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGEQRF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**T from the Left;
+* = 'R': apply Q or Q**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'T': Transpose, apply Q**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,K)
+* The i-th column must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGEQRF in the first k columns of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If SIDE = 'L', LDA >= max(1,M);
+* if SIDE = 'R', LDA >= max(1,N).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGEQRF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK,
+ $ LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORM2R, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size. NB may be at most NBMAX, where NBMAX
+* is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ LWKOPT = MAX( 1, NW )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMQR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORMQR', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+ $ IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL DLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), T, LDT )
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H or H' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H or H'
+*
+ CALL DLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI,
+ $ IB, A( I, I ), LDA, T, LDT, C( IC, JC ), LDC,
+ $ WORK, LDWORK )
+ 10 CONTINUE
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORMQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormr2.f b/2.3-1/src/fortran/lapack/dormr2.f
new file mode 100644
index 00000000..994552fb
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormr2.f
@@ -0,0 +1,193 @@
+ SUBROUTINE DORMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMR2 overwrites the general real m by n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'T', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGERQF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'T': apply Q' (Transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGERQF in the last k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGERQF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, MI, NI, NQ
+ DOUBLE PRECISION AII
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMR2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR. ( .NOT.LEFT .AND. NOTRAN ) )
+ $ THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ ELSE
+ MI = M
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) is applied to C(1:m-k+i,1:n)
+*
+ MI = M - K + I
+ ELSE
+*
+* H(i) is applied to C(1:m,1:n-k+i)
+*
+ NI = N - K + I
+ END IF
+*
+* Apply H(i)
+*
+ AII = A( I, NQ-K+I )
+ A( I, NQ-K+I ) = ONE
+ CALL DLARF( SIDE, MI, NI, A( I, 1 ), LDA, TAU( I ), C, LDC,
+ $ WORK )
+ A( I, NQ-K+I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of DORMR2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormr3.f b/2.3-1/src/fortran/lapack/dormr3.f
new file mode 100644
index 00000000..7bdcb856
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormr3.f
@@ -0,0 +1,206 @@
+ SUBROUTINE DORMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, L, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMR3 overwrites the general real m by n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'T', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DTZRZF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'T': apply Q' (Transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* L (input) INTEGER
+* The number of columns of the matrix A containing
+* the meaningful part of the Householder reflectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DTZRZF in the last k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DTZRZF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the m-by-n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, IC, JA, JC, MI, NI, NQ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARZ, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( L.LT.0 .OR. ( LEFT .AND. ( L.GT.M ) ) .OR.
+ $ ( .NOT.LEFT .AND. ( L.GT.N ) ) ) THEN
+ INFO = -6
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMR3', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN .OR. .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JA = M - L + 1
+ JC = 1
+ ELSE
+ MI = M
+ JA = N - L + 1
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) or H(i)' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H(i) or H(i)' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H(i) or H(i)'
+*
+ CALL DLARZ( SIDE, MI, NI, L, A( I, JA ), LDA, TAU( I ),
+ $ C( IC, JC ), LDC, WORK )
+*
+ 10 CONTINUE
+*
+ RETURN
+*
+* End of DORMR3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormrq.f b/2.3-1/src/fortran/lapack/dormrq.f
new file mode 100644
index 00000000..522c1392
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormrq.f
@@ -0,0 +1,268 @@
+ SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMRQ overwrites the general real M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DGERQF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**T from the Left;
+* = 'R': apply Q or Q**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'T': Transpose, apply Q**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DGERQF in the last k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DGERQF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I, I1, I2, I3, IB, IINFO, IWS, LDWORK, LWKOPT,
+ $ MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARFB, DLARFT, DORMR2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = MAX( 1, N )
+ ELSE
+ NQ = N
+ NW = MAX( 1, M )
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* Determine the block size. NB may be at most NBMAX, where
+* NBMAX is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, N,
+ $ K, -1 ) )
+ LWKOPT = NW*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMRQ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORMRQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL DORMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+ $ IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ ELSE
+ MI = M
+ END IF
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARFT( 'Backward', 'Rowwise', NQ-K+I+IB-1, IB,
+ $ A( I, 1 ), LDA, TAU( I ), T, LDT )
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(1:m-k+i+ib-1,1:n)
+*
+ MI = M - K + I + IB - 1
+ ELSE
+*
+* H or H' is applied to C(1:m,1:n-k+i+ib-1)
+*
+ NI = N - K + I + IB - 1
+ END IF
+*
+* Apply H or H'
+*
+ CALL DLARFB( SIDE, TRANST, 'Backward', 'Rowwise', MI, NI,
+ $ IB, A( I, 1 ), LDA, T, LDT, C, LDC, WORK,
+ $ LDWORK )
+ 10 CONTINUE
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DORMRQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dormrz.f b/2.3-1/src/fortran/lapack/dormrz.f
new file mode 100644
index 00000000..9e14acce
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dormrz.f
@@ -0,0 +1,292 @@
+ SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, L, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DORMRZ overwrites the general real M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'T': Q**T * C C * Q**T
+*
+* where Q is a real orthogonal matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by DTZRZF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**T from the Left;
+* = 'R': apply Q or Q**T from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'T': Transpose, apply Q**T.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* L (input) INTEGER
+* The number of columns of the matrix A containing
+* the meaningful part of the Householder reflectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* DTZRZF in the last k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) DOUBLE PRECISION array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by DTZRZF.
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JA, JC,
+ $ LDWORK, LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARZB, DLARZT, DORMR3, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = MAX( 1, N )
+ ELSE
+ NQ = N
+ NW = MAX( 1, M )
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( L.LT.0 .OR. ( LEFT .AND. ( L.GT.M ) ) .OR.
+ $ ( .NOT.LEFT .AND. ( L.GT.N ) ) ) THEN
+ INFO = -6
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ LWKOPT = 1
+*
+* Determine the block size. NB may be at most NBMAX, where
+* NBMAX is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, N,
+ $ K, -1 ) )
+ LWKOPT = NW*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DORMRZ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DORMRQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL DORMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+ $ WORK, IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ JA = M - L + 1
+ ELSE
+ MI = M
+ IC = 1
+ JA = N - L + 1
+ END IF
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'T'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARZT( 'Backward', 'Rowwise', L, IB, A( I, JA ), LDA,
+ $ TAU( I ), T, LDT )
+*
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H or H' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H or H'
+*
+ CALL DLARZB( SIDE, TRANST, 'Backward', 'Rowwise', MI, NI,
+ $ IB, L, A( I, JA ), LDA, T, LDT, C( IC, JC ),
+ $ LDC, WORK, LDWORK )
+ 10 CONTINUE
+*
+ END IF
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DORMRZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dpocon.f b/2.3-1/src/fortran/lapack/dpocon.f
new file mode 100644
index 00000000..c28af374
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dpocon.f
@@ -0,0 +1,177 @@
+ SUBROUTINE DPOCON( UPLO, N, A, LDA, ANORM, RCOND, WORK, IWORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION ANORM, RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DPOCON estimates the reciprocal of the condition number (in the
+* 1-norm) of a real symmetric positive definite matrix using the
+* Cholesky factorization A = U**T*U or A = L*L**T computed by DPOTRF.
+*
+* An estimate is obtained for norm(inv(A)), and the reciprocal of the
+* condition number is computed as RCOND = 1 / (ANORM * norm(inv(A))).
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The triangular factor U or L from the Cholesky factorization
+* A = U**T*U or A = L*L**T, as computed by DPOTRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* ANORM (input) DOUBLE PRECISION
+* The 1-norm (or infinity-norm) of the symmetric matrix A.
+*
+* RCOND (output) DOUBLE PRECISION
+* The reciprocal of the condition number of the matrix A,
+* computed as RCOND = 1/(ANORM * AINVNM), where AINVNM is an
+* estimate of the 1-norm of inv(A) computed in this routine.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* IWORK (workspace) INTEGER array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ CHARACTER NORMIN
+ INTEGER IX, KASE
+ DOUBLE PRECISION AINVNM, SCALE, SCALEL, SCALEU, SMLNUM
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, IDAMAX, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACN2, DLATRS, DRSCL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( ANORM.LT.ZERO ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DPOCON', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ RCOND = ZERO
+ IF( N.EQ.0 ) THEN
+ RCOND = ONE
+ RETURN
+ ELSE IF( ANORM.EQ.ZERO ) THEN
+ RETURN
+ END IF
+*
+ SMLNUM = DLAMCH( 'Safe minimum' )
+*
+* Estimate the 1-norm of inv(A).
+*
+ KASE = 0
+ NORMIN = 'N'
+ 10 CONTINUE
+ CALL DLACN2( N, WORK( N+1 ), WORK, IWORK, AINVNM, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( UPPER ) THEN
+*
+* Multiply by inv(U').
+*
+ CALL DLATRS( 'Upper', 'Transpose', 'Non-unit', NORMIN, N, A,
+ $ LDA, WORK, SCALEL, WORK( 2*N+1 ), INFO )
+ NORMIN = 'Y'
+*
+* Multiply by inv(U).
+*
+ CALL DLATRS( 'Upper', 'No transpose', 'Non-unit', NORMIN, N,
+ $ A, LDA, WORK, SCALEU, WORK( 2*N+1 ), INFO )
+ ELSE
+*
+* Multiply by inv(L).
+*
+ CALL DLATRS( 'Lower', 'No transpose', 'Non-unit', NORMIN, N,
+ $ A, LDA, WORK, SCALEL, WORK( 2*N+1 ), INFO )
+ NORMIN = 'Y'
+*
+* Multiply by inv(L').
+*
+ CALL DLATRS( 'Lower', 'Transpose', 'Non-unit', NORMIN, N, A,
+ $ LDA, WORK, SCALEU, WORK( 2*N+1 ), INFO )
+ END IF
+*
+* Multiply by 1/SCALE if doing so will not cause overflow.
+*
+ SCALE = SCALEL*SCALEU
+ IF( SCALE.NE.ONE ) THEN
+ IX = IDAMAX( N, WORK, 1 )
+ IF( SCALE.LT.ABS( WORK( IX ) )*SMLNUM .OR. SCALE.EQ.ZERO )
+ $ GO TO 20
+ CALL DRSCL( N, SCALE, WORK, 1 )
+ END IF
+ GO TO 10
+ END IF
+*
+* Compute the estimate of the reciprocal condition number.
+*
+ IF( AINVNM.NE.ZERO )
+ $ RCOND = ( ONE / AINVNM ) / ANORM
+*
+ 20 CONTINUE
+ RETURN
+*
+* End of DPOCON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dpotf2.f b/2.3-1/src/fortran/lapack/dpotf2.f
new file mode 100644
index 00000000..b7d65e91
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dpotf2.f
@@ -0,0 +1,167 @@
+ SUBROUTINE DPOTF2( UPLO, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DPOTF2 computes the Cholesky factorization of a real symmetric
+* positive definite matrix A.
+*
+* The factorization has the form
+* A = U' * U , if UPLO = 'U', or
+* A = L * L', if UPLO = 'L',
+* where U is an upper triangular matrix and L is lower triangular.
+*
+* This is the unblocked version of the algorithm, calling Level 2 BLAS.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is stored.
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* n by n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n by n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, if INFO = 0, the factor U or L from the Cholesky
+* factorization A = U'*U or A = L*L'.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+* > 0: if INFO = k, the leading minor of order k is not
+* positive definite, and the factorization could not be
+* completed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J
+ DOUBLE PRECISION AJJ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DPOTF2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Compute the Cholesky factorization A = U'*U.
+*
+ DO 10 J = 1, N
+*
+* Compute U(J,J) and test for non-positive-definiteness.
+*
+ AJJ = A( J, J ) - DDOT( J-1, A( 1, J ), 1, A( 1, J ), 1 )
+ IF( AJJ.LE.ZERO ) THEN
+ A( J, J ) = AJJ
+ GO TO 30
+ END IF
+ AJJ = SQRT( AJJ )
+ A( J, J ) = AJJ
+*
+* Compute elements J+1:N of row J.
+*
+ IF( J.LT.N ) THEN
+ CALL DGEMV( 'Transpose', J-1, N-J, -ONE, A( 1, J+1 ),
+ $ LDA, A( 1, J ), 1, ONE, A( J, J+1 ), LDA )
+ CALL DSCAL( N-J, ONE / AJJ, A( J, J+1 ), LDA )
+ END IF
+ 10 CONTINUE
+ ELSE
+*
+* Compute the Cholesky factorization A = L*L'.
+*
+ DO 20 J = 1, N
+*
+* Compute L(J,J) and test for non-positive-definiteness.
+*
+ AJJ = A( J, J ) - DDOT( J-1, A( J, 1 ), LDA, A( J, 1 ),
+ $ LDA )
+ IF( AJJ.LE.ZERO ) THEN
+ A( J, J ) = AJJ
+ GO TO 30
+ END IF
+ AJJ = SQRT( AJJ )
+ A( J, J ) = AJJ
+*
+* Compute elements J+1:N of column J.
+*
+ IF( J.LT.N ) THEN
+ CALL DGEMV( 'No transpose', N-J, J-1, -ONE, A( J+1, 1 ),
+ $ LDA, A( J, 1 ), LDA, ONE, A( J+1, J ), 1 )
+ CALL DSCAL( N-J, ONE / AJJ, A( J+1, J ), 1 )
+ END IF
+ 20 CONTINUE
+ END IF
+ GO TO 40
+*
+ 30 CONTINUE
+ INFO = J
+*
+ 40 CONTINUE
+ RETURN
+*
+* End of DPOTF2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dpotrf.f b/2.3-1/src/fortran/lapack/dpotrf.f
new file mode 100644
index 00000000..8449df6d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dpotrf.f
@@ -0,0 +1,183 @@
+ SUBROUTINE DPOTRF( UPLO, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DPOTRF computes the Cholesky factorization of a real symmetric
+* positive definite matrix A.
+*
+* The factorization has the form
+* A = U**T * U, if UPLO = 'U', or
+* A = L * L**T, if UPLO = 'L',
+* where U is an upper triangular matrix and L is lower triangular.
+*
+* This is the block version of the algorithm, calling Level 3 BLAS.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* N-by-N upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, if INFO = 0, the factor U or L from the Cholesky
+* factorization A = U**T*U or A = L*L**T.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the leading minor of order i is not
+* positive definite, and the factorization could not be
+* completed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J, JB, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DPOTF2, DSYRK, DTRSM, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DPOTRF', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Determine the block size for this environment.
+*
+ NB = ILAENV( 1, 'DPOTRF', UPLO, N, -1, -1, -1 )
+ IF( NB.LE.1 .OR. NB.GE.N ) THEN
+*
+* Use unblocked code.
+*
+ CALL DPOTF2( UPLO, N, A, LDA, INFO )
+ ELSE
+*
+* Use blocked code.
+*
+ IF( UPPER ) THEN
+*
+* Compute the Cholesky factorization A = U'*U.
+*
+ DO 10 J = 1, N, NB
+*
+* Update and factorize the current diagonal block and test
+* for non-positive-definiteness.
+*
+ JB = MIN( NB, N-J+1 )
+ CALL DSYRK( 'Upper', 'Transpose', JB, J-1, -ONE,
+ $ A( 1, J ), LDA, ONE, A( J, J ), LDA )
+ CALL DPOTF2( 'Upper', JB, A( J, J ), LDA, INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 30
+ IF( J+JB.LE.N ) THEN
+*
+* Compute the current block row.
+*
+ CALL DGEMM( 'Transpose', 'No transpose', JB, N-J-JB+1,
+ $ J-1, -ONE, A( 1, J ), LDA, A( 1, J+JB ),
+ $ LDA, ONE, A( J, J+JB ), LDA )
+ CALL DTRSM( 'Left', 'Upper', 'Transpose', 'Non-unit',
+ $ JB, N-J-JB+1, ONE, A( J, J ), LDA,
+ $ A( J, J+JB ), LDA )
+ END IF
+ 10 CONTINUE
+*
+ ELSE
+*
+* Compute the Cholesky factorization A = L*L'.
+*
+ DO 20 J = 1, N, NB
+*
+* Update and factorize the current diagonal block and test
+* for non-positive-definiteness.
+*
+ JB = MIN( NB, N-J+1 )
+ CALL DSYRK( 'Lower', 'No transpose', JB, J-1, -ONE,
+ $ A( J, 1 ), LDA, ONE, A( J, J ), LDA )
+ CALL DPOTF2( 'Lower', JB, A( J, J ), LDA, INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 30
+ IF( J+JB.LE.N ) THEN
+*
+* Compute the current block column.
+*
+ CALL DGEMM( 'No transpose', 'Transpose', N-J-JB+1, JB,
+ $ J-1, -ONE, A( J+JB, 1 ), LDA, A( J, 1 ),
+ $ LDA, ONE, A( J+JB, J ), LDA )
+ CALL DTRSM( 'Right', 'Lower', 'Transpose', 'Non-unit',
+ $ N-J-JB+1, JB, ONE, A( J, J ), LDA,
+ $ A( J+JB, J ), LDA )
+ END IF
+ 20 CONTINUE
+ END IF
+ END IF
+ GO TO 40
+*
+ 30 CONTINUE
+ INFO = INFO + J - 1
+*
+ 40 CONTINUE
+ RETURN
+*
+* End of DPOTRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dpotrs.f b/2.3-1/src/fortran/lapack/dpotrs.f
new file mode 100644
index 00000000..0273655e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dpotrs.f
@@ -0,0 +1,132 @@
+ SUBROUTINE DPOTRS( UPLO, N, NRHS, A, LDA, B, LDB, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DPOTRS solves a system of linear equations A*X = B with a symmetric
+* positive definite matrix A using the Cholesky factorization
+* A = U**T*U or A = L*L**T computed by DPOTRF.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The triangular factor U or L from the Cholesky factorization
+* A = U**T*U or A = L*L**T, as computed by DPOTRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the right hand side matrix B.
+* On exit, the solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DTRSM, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DPOTRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. NRHS.EQ.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Solve A*X = B where A = U'*U.
+*
+* Solve U'*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Upper', 'Transpose', 'Non-unit', N, NRHS,
+ $ ONE, A, LDA, B, LDB )
+*
+* Solve U*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', N,
+ $ NRHS, ONE, A, LDA, B, LDB )
+ ELSE
+*
+* Solve A*X = B where A = L*L'.
+*
+* Solve L*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Lower', 'No transpose', 'Non-unit', N,
+ $ NRHS, ONE, A, LDA, B, LDB )
+*
+* Solve L'*X = B, overwriting B with X.
+*
+ CALL DTRSM( 'Left', 'Lower', 'Transpose', 'Non-unit', N, NRHS,
+ $ ONE, A, LDA, B, LDB )
+ END IF
+*
+ RETURN
+*
+* End of DPOTRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dpptrf.f b/2.3-1/src/fortran/lapack/dpptrf.f
new file mode 100644
index 00000000..a5e2a596
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dpptrf.f
@@ -0,0 +1,177 @@
+ SUBROUTINE DPPTRF( UPLO, N, AP, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DPPTRF computes the Cholesky factorization of a real symmetric
+* positive definite matrix A stored in packed format.
+*
+* The factorization has the form
+* A = U**T * U, if UPLO = 'U', or
+* A = L * L**T, if UPLO = 'L',
+* where U is an upper triangular matrix and L is lower triangular.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* AP (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* A, packed columnwise in a linear array. The j-th column of A
+* is stored in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
+* See below for further details.
+*
+* On exit, if INFO = 0, the triangular factor U or L from the
+* Cholesky factorization A = U**T*U or A = L*L**T, in the same
+* storage format as A.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the leading minor of order i is not
+* positive definite, and the factorization could not be
+* completed.
+*
+* Further Details
+* ======= =======
+*
+* The packed storage scheme is illustrated by the following example
+* when N = 4, UPLO = 'U':
+*
+* Two-dimensional storage of the symmetric matrix A:
+*
+* a11 a12 a13 a14
+* a22 a23 a24
+* a33 a34 (aij = aji)
+* a44
+*
+* Packed storage of the upper triangle of A:
+*
+* AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ]
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J, JC, JJ
+ DOUBLE PRECISION AJJ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSPR, DTPSV, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DPPTRF', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Compute the Cholesky factorization A = U'*U.
+*
+ JJ = 0
+ DO 10 J = 1, N
+ JC = JJ + 1
+ JJ = JJ + J
+*
+* Compute elements 1:J-1 of column J.
+*
+ IF( J.GT.1 )
+ $ CALL DTPSV( 'Upper', 'Transpose', 'Non-unit', J-1, AP,
+ $ AP( JC ), 1 )
+*
+* Compute U(J,J) and test for non-positive-definiteness.
+*
+ AJJ = AP( JJ ) - DDOT( J-1, AP( JC ), 1, AP( JC ), 1 )
+ IF( AJJ.LE.ZERO ) THEN
+ AP( JJ ) = AJJ
+ GO TO 30
+ END IF
+ AP( JJ ) = SQRT( AJJ )
+ 10 CONTINUE
+ ELSE
+*
+* Compute the Cholesky factorization A = L*L'.
+*
+ JJ = 1
+ DO 20 J = 1, N
+*
+* Compute L(J,J) and test for non-positive-definiteness.
+*
+ AJJ = AP( JJ )
+ IF( AJJ.LE.ZERO ) THEN
+ AP( JJ ) = AJJ
+ GO TO 30
+ END IF
+ AJJ = SQRT( AJJ )
+ AP( JJ ) = AJJ
+*
+* Compute elements J+1:N of column J and update the trailing
+* submatrix.
+*
+ IF( J.LT.N ) THEN
+ CALL DSCAL( N-J, ONE / AJJ, AP( JJ+1 ), 1 )
+ CALL DSPR( 'Lower', N-J, -ONE, AP( JJ+1 ), 1,
+ $ AP( JJ+N-J+1 ) )
+ JJ = JJ + N - J + 1
+ END IF
+ 20 CONTINUE
+ END IF
+ GO TO 40
+*
+ 30 CONTINUE
+ INFO = J
+*
+ 40 CONTINUE
+ RETURN
+*
+* End of DPPTRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/drscl.f b/2.3-1/src/fortran/lapack/drscl.f
new file mode 100644
index 00000000..a13e96d8
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/drscl.f
@@ -0,0 +1,114 @@
+ SUBROUTINE DRSCL( N, SA, SX, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ DOUBLE PRECISION SA
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION SX( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DRSCL multiplies an n-element real vector x by the real scalar 1/a.
+* This is done without overflow or underflow as long as
+* the final result x/a does not overflow or underflow.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of components of the vector x.
+*
+* SA (input) DOUBLE PRECISION
+* The scalar a which is used to divide each component of x.
+* SA must be >= 0, or the subroutine will divide by zero.
+*
+* SX (input/output) DOUBLE PRECISION array, dimension
+* (1+(N-1)*abs(INCX))
+* The n-element vector x.
+*
+* INCX (input) INTEGER
+* The increment between successive values of the vector SX.
+* > 0: SX(1) = X(1) and SX(1+(i-1)*INCX) = x(i), 1< i<= n
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL DONE
+ DOUBLE PRECISION BIGNUM, CDEN, CDEN1, CNUM, CNUM1, MUL, SMLNUM
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Initialize the denominator to SA and the numerator to 1.
+*
+ CDEN = SA
+ CNUM = ONE
+*
+ 10 CONTINUE
+ CDEN1 = CDEN*SMLNUM
+ CNUM1 = CNUM / BIGNUM
+ IF( ABS( CDEN1 ).GT.ABS( CNUM ) .AND. CNUM.NE.ZERO ) THEN
+*
+* Pre-multiply X by SMLNUM if CDEN is large compared to CNUM.
+*
+ MUL = SMLNUM
+ DONE = .FALSE.
+ CDEN = CDEN1
+ ELSE IF( ABS( CNUM1 ).GT.ABS( CDEN ) ) THEN
+*
+* Pre-multiply X by BIGNUM if CDEN is small compared to CNUM.
+*
+ MUL = BIGNUM
+ DONE = .FALSE.
+ CNUM = CNUM1
+ ELSE
+*
+* Multiply X by CNUM / CDEN and return.
+*
+ MUL = CNUM / CDEN
+ DONE = .TRUE.
+ END IF
+*
+* Scale the vector X by MUL
+*
+ CALL DSCAL( N, MUL, SX, INCX )
+*
+ IF( .NOT.DONE )
+ $ GO TO 10
+*
+ RETURN
+*
+* End of DRSCL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dspev.f b/2.3-1/src/fortran/lapack/dspev.f
new file mode 100644
index 00000000..64582c99
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dspev.f
@@ -0,0 +1,187 @@
+ SUBROUTINE DSPEV( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBZ, UPLO
+ INTEGER INFO, LDZ, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), W( * ), WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPEV computes all the eigenvalues and, optionally, eigenvectors of a
+* real symmetric matrix A in packed storage.
+*
+* Arguments
+* =========
+*
+* JOBZ (input) CHARACTER*1
+* = 'N': Compute eigenvalues only;
+* = 'V': Compute eigenvalues and eigenvectors.
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* AP (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* A, packed columnwise in a linear array. The j-th column of A
+* is stored in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+*
+* On exit, AP is overwritten by values generated during the
+* reduction to tridiagonal form. If UPLO = 'U', the diagonal
+* and first superdiagonal of the tridiagonal matrix T overwrite
+* the corresponding elements of A, and if UPLO = 'L', the
+* diagonal and first subdiagonal of T overwrite the
+* corresponding elements of A.
+*
+* W (output) DOUBLE PRECISION array, dimension (N)
+* If INFO = 0, the eigenvalues in ascending order.
+*
+* Z (output) DOUBLE PRECISION array, dimension (LDZ, N)
+* If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
+* eigenvectors of the matrix A, with the i-th column of Z
+* holding the eigenvector associated with W(i).
+* If JOBZ = 'N', then Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1, and if
+* JOBZ = 'V', LDZ >= max(1,N).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if INFO = i, the algorithm failed to converge; i
+* off-diagonal elements of an intermediate tridiagonal
+* form did not converge to zero.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL WANTZ
+ INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE
+ DOUBLE PRECISION ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
+ $ SMLNUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, DLANSP
+ EXTERNAL LSAME, DLAMCH, DLANSP
+* ..
+* .. External Subroutines ..
+ EXTERNAL DOPGTR, DSCAL, DSPTRD, DSTEQR, DSTERF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ WANTZ = LSAME( JOBZ, 'V' )
+*
+ INFO = 0
+ IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.( LSAME( UPLO, 'U' ) .OR. LSAME( UPLO, 'L' ) ) )
+ $ THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN
+ INFO = -7
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSPEV ', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( N.EQ.1 ) THEN
+ W( 1 ) = AP( 1 )
+ IF( WANTZ )
+ $ Z( 1, 1 ) = ONE
+ RETURN
+ END IF
+*
+* Get machine constants.
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ EPS = DLAMCH( 'Precision' )
+ SMLNUM = SAFMIN / EPS
+ BIGNUM = ONE / SMLNUM
+ RMIN = SQRT( SMLNUM )
+ RMAX = SQRT( BIGNUM )
+*
+* Scale matrix to allowable range, if necessary.
+*
+ ANRM = DLANSP( 'M', UPLO, N, AP, WORK )
+ ISCALE = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN
+ ISCALE = 1
+ SIGMA = RMIN / ANRM
+ ELSE IF( ANRM.GT.RMAX ) THEN
+ ISCALE = 1
+ SIGMA = RMAX / ANRM
+ END IF
+ IF( ISCALE.EQ.1 ) THEN
+ CALL DSCAL( ( N*( N+1 ) ) / 2, SIGMA, AP, 1 )
+ END IF
+*
+* Call DSPTRD to reduce symmetric packed matrix to tridiagonal form.
+*
+ INDE = 1
+ INDTAU = INDE + N
+ CALL DSPTRD( UPLO, N, AP, W, WORK( INDE ), WORK( INDTAU ), IINFO )
+*
+* For eigenvalues only, call DSTERF. For eigenvectors, first call
+* DOPGTR to generate the orthogonal matrix, then call DSTEQR.
+*
+ IF( .NOT.WANTZ ) THEN
+ CALL DSTERF( N, W, WORK( INDE ), INFO )
+ ELSE
+ INDWRK = INDTAU + N
+ CALL DOPGTR( UPLO, N, AP, WORK( INDTAU ), Z, LDZ,
+ $ WORK( INDWRK ), IINFO )
+ CALL DSTEQR( JOBZ, N, W, WORK( INDE ), Z, LDZ, WORK( INDTAU ),
+ $ INFO )
+ END IF
+*
+* If matrix was scaled, then rescale eigenvalues appropriately.
+*
+ IF( ISCALE.EQ.1 ) THEN
+ IF( INFO.EQ.0 ) THEN
+ IMAX = N
+ ELSE
+ IMAX = INFO - 1
+ END IF
+ CALL DSCAL( IMAX, ONE / SIGMA, W, 1 )
+ END IF
+*
+ RETURN
+*
+* End of DSPEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dspgst.f b/2.3-1/src/fortran/lapack/dspgst.f
new file mode 100644
index 00000000..8e121a94
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dspgst.f
@@ -0,0 +1,208 @@
+ SUBROUTINE DSPGST( ITYPE, UPLO, N, AP, BP, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, ITYPE, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), BP( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPGST reduces a real symmetric-definite generalized eigenproblem
+* to standard form, using packed storage.
+*
+* If ITYPE = 1, the problem is A*x = lambda*B*x,
+* and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T)
+*
+* If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
+* B*A*x = lambda*x, and A is overwritten by U*A*U**T or L**T*A*L.
+*
+* B must have been previously factorized as U**T*U or L*L**T by DPPTRF.
+*
+* Arguments
+* =========
+*
+* ITYPE (input) INTEGER
+* = 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T);
+* = 2 or 3: compute U*A*U**T or L**T*A*L.
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored and B is factored as
+* U**T*U;
+* = 'L': Lower triangle of A is stored and B is factored as
+* L*L**T.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* AP (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* A, packed columnwise in a linear array. The j-th column of A
+* is stored in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
+*
+* On exit, if INFO = 0, the transformed matrix, stored in the
+* same format as A.
+*
+* BP (input) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* The triangular factor from the Cholesky factorization of B,
+* stored in the same format as A, as returned by DPPTRF.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, HALF
+ PARAMETER ( ONE = 1.0D0, HALF = 0.5D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J, J1, J1J1, JJ, K, K1, K1K1, KK
+ DOUBLE PRECISION AJJ, AKK, BJJ, BKK, CT
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DSCAL, DSPMV, DSPR2, DTPMV, DTPSV,
+ $ XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN
+ INFO = -1
+ ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSPGST', -INFO )
+ RETURN
+ END IF
+*
+ IF( ITYPE.EQ.1 ) THEN
+ IF( UPPER ) THEN
+*
+* Compute inv(U')*A*inv(U)
+*
+* J1 and JJ are the indices of A(1,j) and A(j,j)
+*
+ JJ = 0
+ DO 10 J = 1, N
+ J1 = JJ + 1
+ JJ = JJ + J
+*
+* Compute the j-th column of the upper triangle of A
+*
+ BJJ = BP( JJ )
+ CALL DTPSV( UPLO, 'Transpose', 'Nonunit', J, BP,
+ $ AP( J1 ), 1 )
+ CALL DSPMV( UPLO, J-1, -ONE, AP, BP( J1 ), 1, ONE,
+ $ AP( J1 ), 1 )
+ CALL DSCAL( J-1, ONE / BJJ, AP( J1 ), 1 )
+ AP( JJ ) = ( AP( JJ )-DDOT( J-1, AP( J1 ), 1, BP( J1 ),
+ $ 1 ) ) / BJJ
+ 10 CONTINUE
+ ELSE
+*
+* Compute inv(L)*A*inv(L')
+*
+* KK and K1K1 are the indices of A(k,k) and A(k+1,k+1)
+*
+ KK = 1
+ DO 20 K = 1, N
+ K1K1 = KK + N - K + 1
+*
+* Update the lower triangle of A(k:n,k:n)
+*
+ AKK = AP( KK )
+ BKK = BP( KK )
+ AKK = AKK / BKK**2
+ AP( KK ) = AKK
+ IF( K.LT.N ) THEN
+ CALL DSCAL( N-K, ONE / BKK, AP( KK+1 ), 1 )
+ CT = -HALF*AKK
+ CALL DAXPY( N-K, CT, BP( KK+1 ), 1, AP( KK+1 ), 1 )
+ CALL DSPR2( UPLO, N-K, -ONE, AP( KK+1 ), 1,
+ $ BP( KK+1 ), 1, AP( K1K1 ) )
+ CALL DAXPY( N-K, CT, BP( KK+1 ), 1, AP( KK+1 ), 1 )
+ CALL DTPSV( UPLO, 'No transpose', 'Non-unit', N-K,
+ $ BP( K1K1 ), AP( KK+1 ), 1 )
+ END IF
+ KK = K1K1
+ 20 CONTINUE
+ END IF
+ ELSE
+ IF( UPPER ) THEN
+*
+* Compute U*A*U'
+*
+* K1 and KK are the indices of A(1,k) and A(k,k)
+*
+ KK = 0
+ DO 30 K = 1, N
+ K1 = KK + 1
+ KK = KK + K
+*
+* Update the upper triangle of A(1:k,1:k)
+*
+ AKK = AP( KK )
+ BKK = BP( KK )
+ CALL DTPMV( UPLO, 'No transpose', 'Non-unit', K-1, BP,
+ $ AP( K1 ), 1 )
+ CT = HALF*AKK
+ CALL DAXPY( K-1, CT, BP( K1 ), 1, AP( K1 ), 1 )
+ CALL DSPR2( UPLO, K-1, ONE, AP( K1 ), 1, BP( K1 ), 1,
+ $ AP )
+ CALL DAXPY( K-1, CT, BP( K1 ), 1, AP( K1 ), 1 )
+ CALL DSCAL( K-1, BKK, AP( K1 ), 1 )
+ AP( KK ) = AKK*BKK**2
+ 30 CONTINUE
+ ELSE
+*
+* Compute L'*A*L
+*
+* JJ and J1J1 are the indices of A(j,j) and A(j+1,j+1)
+*
+ JJ = 1
+ DO 40 J = 1, N
+ J1J1 = JJ + N - J + 1
+*
+* Compute the j-th column of the lower triangle of A
+*
+ AJJ = AP( JJ )
+ BJJ = BP( JJ )
+ AP( JJ ) = AJJ*BJJ + DDOT( N-J, AP( JJ+1 ), 1,
+ $ BP( JJ+1 ), 1 )
+ CALL DSCAL( N-J, BJJ, AP( JJ+1 ), 1 )
+ CALL DSPMV( UPLO, N-J, ONE, AP( J1J1 ), BP( JJ+1 ), 1,
+ $ ONE, AP( JJ+1 ), 1 )
+ CALL DTPMV( UPLO, 'Transpose', 'Non-unit', N-J+1,
+ $ BP( JJ ), AP( JJ ), 1 )
+ JJ = J1J1
+ 40 CONTINUE
+ END IF
+ END IF
+ RETURN
+*
+* End of DSPGST
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dspgv.f b/2.3-1/src/fortran/lapack/dspgv.f
new file mode 100644
index 00000000..737a1ee3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dspgv.f
@@ -0,0 +1,195 @@
+ SUBROUTINE DSPGV( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,
+ $ INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBZ, UPLO
+ INTEGER INFO, ITYPE, LDZ, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPGV computes all the eigenvalues and, optionally, the eigenvectors
+* of a real generalized symmetric-definite eigenproblem, of the form
+* A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x.
+* Here A and B are assumed to be symmetric, stored in packed format,
+* and B is also positive definite.
+*
+* Arguments
+* =========
+*
+* ITYPE (input) INTEGER
+* Specifies the problem type to be solved:
+* = 1: A*x = (lambda)*B*x
+* = 2: A*B*x = (lambda)*x
+* = 3: B*A*x = (lambda)*x
+*
+* JOBZ (input) CHARACTER*1
+* = 'N': Compute eigenvalues only;
+* = 'V': Compute eigenvalues and eigenvectors.
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangles of A and B are stored;
+* = 'L': Lower triangles of A and B are stored.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* AP (input/output) DOUBLE PRECISION array, dimension
+* (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* A, packed columnwise in a linear array. The j-th column of A
+* is stored in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+*
+* On exit, the contents of AP are destroyed.
+*
+* BP (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* B, packed columnwise in a linear array. The j-th column of B
+* is stored in the array BP as follows:
+* if UPLO = 'U', BP(i + (j-1)*j/2) = B(i,j) for 1<=i<=j;
+* if UPLO = 'L', BP(i + (j-1)*(2*n-j)/2) = B(i,j) for j<=i<=n.
+*
+* On exit, the triangular factor U or L from the Cholesky
+* factorization B = U**T*U or B = L*L**T, in the same storage
+* format as B.
+*
+* W (output) DOUBLE PRECISION array, dimension (N)
+* If INFO = 0, the eigenvalues in ascending order.
+*
+* Z (output) DOUBLE PRECISION array, dimension (LDZ, N)
+* If JOBZ = 'V', then if INFO = 0, Z contains the matrix Z of
+* eigenvectors. The eigenvectors are normalized as follows:
+* if ITYPE = 1 or 2, Z**T*B*Z = I;
+* if ITYPE = 3, Z**T*inv(B)*Z = I.
+* If JOBZ = 'N', then Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1, and if
+* JOBZ = 'V', LDZ >= max(1,N).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: DPPTRF or DSPEV returned an error code:
+* <= N: if INFO = i, DSPEV failed to converge;
+* i off-diagonal elements of an intermediate
+* tridiagonal form did not converge to zero.
+* > N: if INFO = n + i, for 1 <= i <= n, then the leading
+* minor of order i of B is not positive definite.
+* The factorization of B could not be completed and
+* no eigenvalues or eigenvectors were computed.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL UPPER, WANTZ
+ CHARACTER TRANS
+ INTEGER J, NEIG
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DPPTRF, DSPEV, DSPGST, DTPMV, DTPSV, XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ WANTZ = LSAME( JOBZ, 'V' )
+ UPPER = LSAME( UPLO, 'U' )
+*
+ INFO = 0
+ IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN
+ INFO = -1
+ ELSE IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.( UPPER .OR. LSAME( UPLO, 'L' ) ) ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN
+ INFO = -9
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSPGV ', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Form a Cholesky factorization of B.
+*
+ CALL DPPTRF( UPLO, N, BP, INFO )
+ IF( INFO.NE.0 ) THEN
+ INFO = N + INFO
+ RETURN
+ END IF
+*
+* Transform problem to standard eigenvalue problem and solve.
+*
+ CALL DSPGST( ITYPE, UPLO, N, AP, BP, INFO )
+ CALL DSPEV( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO )
+*
+ IF( WANTZ ) THEN
+*
+* Backtransform eigenvectors to the original problem.
+*
+ NEIG = N
+ IF( INFO.GT.0 )
+ $ NEIG = INFO - 1
+ IF( ITYPE.EQ.1 .OR. ITYPE.EQ.2 ) THEN
+*
+* For A*x=(lambda)*B*x and A*B*x=(lambda)*x;
+* backtransform eigenvectors: x = inv(L)'*y or inv(U)*y
+*
+ IF( UPPER ) THEN
+ TRANS = 'N'
+ ELSE
+ TRANS = 'T'
+ END IF
+*
+ DO 10 J = 1, NEIG
+ CALL DTPSV( UPLO, TRANS, 'Non-unit', N, BP, Z( 1, J ),
+ $ 1 )
+ 10 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.3 ) THEN
+*
+* For B*A*x=(lambda)*x;
+* backtransform eigenvectors: x = L*y or U'*y
+*
+ IF( UPPER ) THEN
+ TRANS = 'T'
+ ELSE
+ TRANS = 'N'
+ END IF
+*
+ DO 20 J = 1, NEIG
+ CALL DTPMV( UPLO, TRANS, 'Non-unit', N, BP, Z( 1, J ),
+ $ 1 )
+ 20 CONTINUE
+ END IF
+ END IF
+ RETURN
+*
+* End of DSPGV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsptrd.f b/2.3-1/src/fortran/lapack/dsptrd.f
new file mode 100644
index 00000000..6d3390e3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsptrd.f
@@ -0,0 +1,228 @@
+ SUBROUTINE DSPTRD( UPLO, N, AP, D, E, TAU, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP( * ), D( * ), E( * ), TAU( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPTRD reduces a real symmetric matrix A stored in packed form to
+* symmetric tridiagonal form T by an orthogonal similarity
+* transformation: Q**T * A * Q = T.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* AP (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* A, packed columnwise in a linear array. The j-th column of A
+* is stored in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+* On exit, if UPLO = 'U', the diagonal and first superdiagonal
+* of A are overwritten by the corresponding elements of the
+* tridiagonal matrix T, and the elements above the first
+* superdiagonal, with the array TAU, represent the orthogonal
+* matrix Q as a product of elementary reflectors; if UPLO
+* = 'L', the diagonal and first subdiagonal of A are over-
+* written by the corresponding elements of the tridiagonal
+* matrix T, and the elements below the first subdiagonal, with
+* the array TAU, represent the orthogonal matrix Q as a product
+* of elementary reflectors. See Further Details.
+*
+* D (output) DOUBLE PRECISION array, dimension (N)
+* The diagonal elements of the tridiagonal matrix T:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* The off-diagonal elements of the tridiagonal matrix T:
+* E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n-1) . . . H(2) H(1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in AP,
+* overwriting A(1:i-1,i+1), and tau is stored in TAU(i).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(n-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in AP,
+* overwriting A(i+2:n,i), and tau is stored in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO, HALF
+ PARAMETER ( ONE = 1.0D0, ZERO = 0.0D0,
+ $ HALF = 1.0D0 / 2.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, I1, I1I1, II
+ DOUBLE PRECISION ALPHA, TAUI
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DLARFG, DSPMV, DSPR2, XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSPTRD', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Reduce the upper triangle of A.
+* I1 is the index in AP of A(1,I+1).
+*
+ I1 = N*( N-1 ) / 2 + 1
+ DO 10 I = N - 1, 1, -1
+*
+* Generate elementary reflector H(i) = I - tau * v * v'
+* to annihilate A(1:i-1,i+1)
+*
+ CALL DLARFG( I, AP( I1+I-1 ), AP( I1 ), 1, TAUI )
+ E( I ) = AP( I1+I-1 )
+*
+ IF( TAUI.NE.ZERO ) THEN
+*
+* Apply H(i) from both sides to A(1:i,1:i)
+*
+ AP( I1+I-1 ) = ONE
+*
+* Compute y := tau * A * v storing y in TAU(1:i)
+*
+ CALL DSPMV( UPLO, I, TAUI, AP, AP( I1 ), 1, ZERO, TAU,
+ $ 1 )
+*
+* Compute w := y - 1/2 * tau * (y'*v) * v
+*
+ ALPHA = -HALF*TAUI*DDOT( I, TAU, 1, AP( I1 ), 1 )
+ CALL DAXPY( I, ALPHA, AP( I1 ), 1, TAU, 1 )
+*
+* Apply the transformation as a rank-2 update:
+* A := A - v * w' - w * v'
+*
+ CALL DSPR2( UPLO, I, -ONE, AP( I1 ), 1, TAU, 1, AP )
+*
+ AP( I1+I-1 ) = E( I )
+ END IF
+ D( I+1 ) = AP( I1+I )
+ TAU( I ) = TAUI
+ I1 = I1 - I
+ 10 CONTINUE
+ D( 1 ) = AP( 1 )
+ ELSE
+*
+* Reduce the lower triangle of A. II is the index in AP of
+* A(i,i) and I1I1 is the index of A(i+1,i+1).
+*
+ II = 1
+ DO 20 I = 1, N - 1
+ I1I1 = II + N - I + 1
+*
+* Generate elementary reflector H(i) = I - tau * v * v'
+* to annihilate A(i+2:n,i)
+*
+ CALL DLARFG( N-I, AP( II+1 ), AP( II+2 ), 1, TAUI )
+ E( I ) = AP( II+1 )
+*
+ IF( TAUI.NE.ZERO ) THEN
+*
+* Apply H(i) from both sides to A(i+1:n,i+1:n)
+*
+ AP( II+1 ) = ONE
+*
+* Compute y := tau * A * v storing y in TAU(i:n-1)
+*
+ CALL DSPMV( UPLO, N-I, TAUI, AP( I1I1 ), AP( II+1 ), 1,
+ $ ZERO, TAU( I ), 1 )
+*
+* Compute w := y - 1/2 * tau * (y'*v) * v
+*
+ ALPHA = -HALF*TAUI*DDOT( N-I, TAU( I ), 1, AP( II+1 ),
+ $ 1 )
+ CALL DAXPY( N-I, ALPHA, AP( II+1 ), 1, TAU( I ), 1 )
+*
+* Apply the transformation as a rank-2 update:
+* A := A - v * w' - w * v'
+*
+ CALL DSPR2( UPLO, N-I, -ONE, AP( II+1 ), 1, TAU( I ), 1,
+ $ AP( I1I1 ) )
+*
+ AP( II+1 ) = E( I )
+ END IF
+ D( I ) = AP( II )
+ TAU( I ) = TAUI
+ II = I1I1
+ 20 CONTINUE
+ D( N ) = AP( II )
+ END IF
+*
+ RETURN
+*
+* End of DSPTRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsptrf.f b/2.3-1/src/fortran/lapack/dsptrf.f
new file mode 100644
index 00000000..8b8a9185
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsptrf.f
@@ -0,0 +1,547 @@
+ SUBROUTINE DSPTRF( UPLO, N, AP, IPIV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION AP( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSPTRF computes the factorization of a real symmetric matrix A stored
+* in packed format using the Bunch-Kaufman diagonal pivoting method:
+*
+* A = U*D*U**T or A = L*D*L**T
+*
+* where U (or L) is a product of permutation and unit upper (lower)
+* triangular matrices, and D is symmetric and block diagonal with
+* 1-by-1 and 2-by-2 diagonal blocks.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* AP (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
+* On entry, the upper or lower triangle of the symmetric matrix
+* A, packed columnwise in a linear array. The j-th column of A
+* is stored in the array AP as follows:
+* if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+* if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
+*
+* On exit, the block diagonal matrix D and the multipliers used
+* to obtain the factor U or L, stored as a packed triangular
+* matrix overwriting A (see below for further details).
+*
+* IPIV (output) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D.
+* If IPIV(k) > 0, then rows and columns k and IPIV(k) were
+* interchanged and D(k,k) is a 1-by-1 diagonal block.
+* If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
+* columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
+* is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
+* IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
+* interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, D(i,i) is exactly zero. The factorization
+* has been completed, but the block diagonal matrix D is
+* exactly singular, and division by zero will occur if it
+* is used to solve a system of equations.
+*
+* Further Details
+* ===============
+*
+* 5-96 - Based on modifications by J. Lewis, Boeing Computer Services
+* Company
+*
+* If UPLO = 'U', then A = U*D*U', where
+* U = P(n)*U(n)* ... *P(k)U(k)* ...,
+* i.e., U is a product of terms P(k)*U(k), where k decreases from n to
+* 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
+* and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
+* defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
+* that if the diagonal block D(k) is of order s (s = 1 or 2), then
+*
+* ( I v 0 ) k-s
+* U(k) = ( 0 I 0 ) s
+* ( 0 0 I ) n-k
+* k-s s n-k
+*
+* If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
+* If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
+* and A(k,k), and v overwrites A(1:k-2,k-1:k).
+*
+* If UPLO = 'L', then A = L*D*L', where
+* L = P(1)*L(1)* ... *P(k)*L(k)* ...,
+* i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
+* n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
+* and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
+* defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
+* that if the diagonal block D(k) is of order s (s = 1 or 2), then
+*
+* ( I 0 0 ) k-1
+* L(k) = ( 0 I 0 ) s
+* ( 0 v I ) n-k-s+1
+* k-1 s n-k-s+1
+*
+* If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
+* If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
+* and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION EIGHT, SEVTEN
+ PARAMETER ( EIGHT = 8.0D+0, SEVTEN = 17.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, IMAX, J, JMAX, K, KC, KK, KNC, KP, KPC,
+ $ KSTEP, KX, NPP
+ DOUBLE PRECISION ABSAKK, ALPHA, COLMAX, D11, D12, D21, D22, R1,
+ $ ROWMAX, T, WK, WKM1, WKP1
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ EXTERNAL LSAME, IDAMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSPR, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSPTRF', -INFO )
+ RETURN
+ END IF
+*
+* Initialize ALPHA for use in choosing pivot block size.
+*
+ ALPHA = ( ONE+SQRT( SEVTEN ) ) / EIGHT
+*
+ IF( UPPER ) THEN
+*
+* Factorize A as U*D*U' using the upper triangle of A
+*
+* K is the main loop index, decreasing from N to 1 in steps of
+* 1 or 2
+*
+ K = N
+ KC = ( N-1 )*N / 2 + 1
+ 10 CONTINUE
+ KNC = KC
+*
+* If K < 1, exit from loop
+*
+ IF( K.LT.1 )
+ $ GO TO 110
+ KSTEP = 1
+*
+* Determine rows and columns to be interchanged and whether
+* a 1-by-1 or 2-by-2 pivot block will be used
+*
+ ABSAKK = ABS( AP( KC+K-1 ) )
+*
+* IMAX is the row-index of the largest off-diagonal element in
+* column K, and COLMAX is its absolute value
+*
+ IF( K.GT.1 ) THEN
+ IMAX = IDAMAX( K-1, AP( KC ), 1 )
+ COLMAX = ABS( AP( KC+IMAX-1 ) )
+ ELSE
+ COLMAX = ZERO
+ END IF
+*
+ IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
+*
+* Column K is zero: set INFO and continue
+*
+ IF( INFO.EQ.0 )
+ $ INFO = K
+ KP = K
+ ELSE
+ IF( ABSAKK.GE.ALPHA*COLMAX ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE
+*
+* JMAX is the column-index of the largest off-diagonal
+* element in row IMAX, and ROWMAX is its absolute value
+*
+ ROWMAX = ZERO
+ JMAX = IMAX
+ KX = IMAX*( IMAX+1 ) / 2 + IMAX
+ DO 20 J = IMAX + 1, K
+ IF( ABS( AP( KX ) ).GT.ROWMAX ) THEN
+ ROWMAX = ABS( AP( KX ) )
+ JMAX = J
+ END IF
+ KX = KX + J
+ 20 CONTINUE
+ KPC = ( IMAX-1 )*IMAX / 2 + 1
+ IF( IMAX.GT.1 ) THEN
+ JMAX = IDAMAX( IMAX-1, AP( KPC ), 1 )
+ ROWMAX = MAX( ROWMAX, ABS( AP( KPC+JMAX-1 ) ) )
+ END IF
+*
+ IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE IF( ABS( AP( KPC+IMAX-1 ) ).GE.ALPHA*ROWMAX ) THEN
+*
+* interchange rows and columns K and IMAX, use 1-by-1
+* pivot block
+*
+ KP = IMAX
+ ELSE
+*
+* interchange rows and columns K-1 and IMAX, use 2-by-2
+* pivot block
+*
+ KP = IMAX
+ KSTEP = 2
+ END IF
+ END IF
+*
+ KK = K - KSTEP + 1
+ IF( KSTEP.EQ.2 )
+ $ KNC = KNC - K + 1
+ IF( KP.NE.KK ) THEN
+*
+* Interchange rows and columns KK and KP in the leading
+* submatrix A(1:k,1:k)
+*
+ CALL DSWAP( KP-1, AP( KNC ), 1, AP( KPC ), 1 )
+ KX = KPC + KP - 1
+ DO 30 J = KP + 1, KK - 1
+ KX = KX + J - 1
+ T = AP( KNC+J-1 )
+ AP( KNC+J-1 ) = AP( KX )
+ AP( KX ) = T
+ 30 CONTINUE
+ T = AP( KNC+KK-1 )
+ AP( KNC+KK-1 ) = AP( KPC+KP-1 )
+ AP( KPC+KP-1 ) = T
+ IF( KSTEP.EQ.2 ) THEN
+ T = AP( KC+K-2 )
+ AP( KC+K-2 ) = AP( KC+KP-1 )
+ AP( KC+KP-1 ) = T
+ END IF
+ END IF
+*
+* Update the leading submatrix
+*
+ IF( KSTEP.EQ.1 ) THEN
+*
+* 1-by-1 pivot block D(k): column k now holds
+*
+* W(k) = U(k)*D(k)
+*
+* where U(k) is the k-th column of U
+*
+* Perform a rank-1 update of A(1:k-1,1:k-1) as
+*
+* A := A - U(k)*D(k)*U(k)' = A - W(k)*1/D(k)*W(k)'
+*
+ R1 = ONE / AP( KC+K-1 )
+ CALL DSPR( UPLO, K-1, -R1, AP( KC ), 1, AP )
+*
+* Store U(k) in column k
+*
+ CALL DSCAL( K-1, R1, AP( KC ), 1 )
+ ELSE
+*
+* 2-by-2 pivot block D(k): columns k and k-1 now hold
+*
+* ( W(k-1) W(k) ) = ( U(k-1) U(k) )*D(k)
+*
+* where U(k) and U(k-1) are the k-th and (k-1)-th columns
+* of U
+*
+* Perform a rank-2 update of A(1:k-2,1:k-2) as
+*
+* A := A - ( U(k-1) U(k) )*D(k)*( U(k-1) U(k) )'
+* = A - ( W(k-1) W(k) )*inv(D(k))*( W(k-1) W(k) )'
+*
+ IF( K.GT.2 ) THEN
+*
+ D12 = AP( K-1+( K-1 )*K / 2 )
+ D22 = AP( K-1+( K-2 )*( K-1 ) / 2 ) / D12
+ D11 = AP( K+( K-1 )*K / 2 ) / D12
+ T = ONE / ( D11*D22-ONE )
+ D12 = T / D12
+*
+ DO 50 J = K - 2, 1, -1
+ WKM1 = D12*( D11*AP( J+( K-2 )*( K-1 ) / 2 )-
+ $ AP( J+( K-1 )*K / 2 ) )
+ WK = D12*( D22*AP( J+( K-1 )*K / 2 )-
+ $ AP( J+( K-2 )*( K-1 ) / 2 ) )
+ DO 40 I = J, 1, -1
+ AP( I+( J-1 )*J / 2 ) = AP( I+( J-1 )*J / 2 ) -
+ $ AP( I+( K-1 )*K / 2 )*WK -
+ $ AP( I+( K-2 )*( K-1 ) / 2 )*WKM1
+ 40 CONTINUE
+ AP( J+( K-1 )*K / 2 ) = WK
+ AP( J+( K-2 )*( K-1 ) / 2 ) = WKM1
+ 50 CONTINUE
+*
+ END IF
+*
+ END IF
+ END IF
+*
+* Store details of the interchanges in IPIV
+*
+ IF( KSTEP.EQ.1 ) THEN
+ IPIV( K ) = KP
+ ELSE
+ IPIV( K ) = -KP
+ IPIV( K-1 ) = -KP
+ END IF
+*
+* Decrease K and return to the start of the main loop
+*
+ K = K - KSTEP
+ KC = KNC - K
+ GO TO 10
+*
+ ELSE
+*
+* Factorize A as L*D*L' using the lower triangle of A
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* 1 or 2
+*
+ K = 1
+ KC = 1
+ NPP = N*( N+1 ) / 2
+ 60 CONTINUE
+ KNC = KC
+*
+* If K > N, exit from loop
+*
+ IF( K.GT.N )
+ $ GO TO 110
+ KSTEP = 1
+*
+* Determine rows and columns to be interchanged and whether
+* a 1-by-1 or 2-by-2 pivot block will be used
+*
+ ABSAKK = ABS( AP( KC ) )
+*
+* IMAX is the row-index of the largest off-diagonal element in
+* column K, and COLMAX is its absolute value
+*
+ IF( K.LT.N ) THEN
+ IMAX = K + IDAMAX( N-K, AP( KC+1 ), 1 )
+ COLMAX = ABS( AP( KC+IMAX-K ) )
+ ELSE
+ COLMAX = ZERO
+ END IF
+*
+ IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
+*
+* Column K is zero: set INFO and continue
+*
+ IF( INFO.EQ.0 )
+ $ INFO = K
+ KP = K
+ ELSE
+ IF( ABSAKK.GE.ALPHA*COLMAX ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE
+*
+* JMAX is the column-index of the largest off-diagonal
+* element in row IMAX, and ROWMAX is its absolute value
+*
+ ROWMAX = ZERO
+ KX = KC + IMAX - K
+ DO 70 J = K, IMAX - 1
+ IF( ABS( AP( KX ) ).GT.ROWMAX ) THEN
+ ROWMAX = ABS( AP( KX ) )
+ JMAX = J
+ END IF
+ KX = KX + N - J
+ 70 CONTINUE
+ KPC = NPP - ( N-IMAX+1 )*( N-IMAX+2 ) / 2 + 1
+ IF( IMAX.LT.N ) THEN
+ JMAX = IMAX + IDAMAX( N-IMAX, AP( KPC+1 ), 1 )
+ ROWMAX = MAX( ROWMAX, ABS( AP( KPC+JMAX-IMAX ) ) )
+ END IF
+*
+ IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE IF( ABS( AP( KPC ) ).GE.ALPHA*ROWMAX ) THEN
+*
+* interchange rows and columns K and IMAX, use 1-by-1
+* pivot block
+*
+ KP = IMAX
+ ELSE
+*
+* interchange rows and columns K+1 and IMAX, use 2-by-2
+* pivot block
+*
+ KP = IMAX
+ KSTEP = 2
+ END IF
+ END IF
+*
+ KK = K + KSTEP - 1
+ IF( KSTEP.EQ.2 )
+ $ KNC = KNC + N - K + 1
+ IF( KP.NE.KK ) THEN
+*
+* Interchange rows and columns KK and KP in the trailing
+* submatrix A(k:n,k:n)
+*
+ IF( KP.LT.N )
+ $ CALL DSWAP( N-KP, AP( KNC+KP-KK+1 ), 1, AP( KPC+1 ),
+ $ 1 )
+ KX = KNC + KP - KK
+ DO 80 J = KK + 1, KP - 1
+ KX = KX + N - J + 1
+ T = AP( KNC+J-KK )
+ AP( KNC+J-KK ) = AP( KX )
+ AP( KX ) = T
+ 80 CONTINUE
+ T = AP( KNC )
+ AP( KNC ) = AP( KPC )
+ AP( KPC ) = T
+ IF( KSTEP.EQ.2 ) THEN
+ T = AP( KC+1 )
+ AP( KC+1 ) = AP( KC+KP-K )
+ AP( KC+KP-K ) = T
+ END IF
+ END IF
+*
+* Update the trailing submatrix
+*
+ IF( KSTEP.EQ.1 ) THEN
+*
+* 1-by-1 pivot block D(k): column k now holds
+*
+* W(k) = L(k)*D(k)
+*
+* where L(k) is the k-th column of L
+*
+ IF( K.LT.N ) THEN
+*
+* Perform a rank-1 update of A(k+1:n,k+1:n) as
+*
+* A := A - L(k)*D(k)*L(k)' = A - W(k)*(1/D(k))*W(k)'
+*
+ R1 = ONE / AP( KC )
+ CALL DSPR( UPLO, N-K, -R1, AP( KC+1 ), 1,
+ $ AP( KC+N-K+1 ) )
+*
+* Store L(k) in column K
+*
+ CALL DSCAL( N-K, R1, AP( KC+1 ), 1 )
+ END IF
+ ELSE
+*
+* 2-by-2 pivot block D(k): columns K and K+1 now hold
+*
+* ( W(k) W(k+1) ) = ( L(k) L(k+1) )*D(k)
+*
+* where L(k) and L(k+1) are the k-th and (k+1)-th columns
+* of L
+*
+ IF( K.LT.N-1 ) THEN
+*
+* Perform a rank-2 update of A(k+2:n,k+2:n) as
+*
+* A := A - ( L(k) L(k+1) )*D(k)*( L(k) L(k+1) )'
+* = A - ( W(k) W(k+1) )*inv(D(k))*( W(k) W(k+1) )'
+*
+ D21 = AP( K+1+( K-1 )*( 2*N-K ) / 2 )
+ D11 = AP( K+1+K*( 2*N-K-1 ) / 2 ) / D21
+ D22 = AP( K+( K-1 )*( 2*N-K ) / 2 ) / D21
+ T = ONE / ( D11*D22-ONE )
+ D21 = T / D21
+*
+ DO 100 J = K + 2, N
+ WK = D21*( D11*AP( J+( K-1 )*( 2*N-K ) / 2 )-
+ $ AP( J+K*( 2*N-K-1 ) / 2 ) )
+ WKP1 = D21*( D22*AP( J+K*( 2*N-K-1 ) / 2 )-
+ $ AP( J+( K-1 )*( 2*N-K ) / 2 ) )
+*
+ DO 90 I = J, N
+ AP( I+( J-1 )*( 2*N-J ) / 2 ) = AP( I+( J-1 )*
+ $ ( 2*N-J ) / 2 ) - AP( I+( K-1 )*( 2*N-K ) /
+ $ 2 )*WK - AP( I+K*( 2*N-K-1 ) / 2 )*WKP1
+ 90 CONTINUE
+*
+ AP( J+( K-1 )*( 2*N-K ) / 2 ) = WK
+ AP( J+K*( 2*N-K-1 ) / 2 ) = WKP1
+*
+ 100 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+* Store details of the interchanges in IPIV
+*
+ IF( KSTEP.EQ.1 ) THEN
+ IPIV( K ) = KP
+ ELSE
+ IPIV( K ) = -KP
+ IPIV( K+1 ) = -KP
+ END IF
+*
+* Increase K and return to the start of the main loop
+*
+ K = K + KSTEP
+ KC = KNC + N - K + 2
+ GO TO 60
+*
+ END IF
+*
+ 110 CONTINUE
+ RETURN
+*
+* End of DSPTRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsteqr.f b/2.3-1/src/fortran/lapack/dsteqr.f
new file mode 100644
index 00000000..0afd7957
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsteqr.f
@@ -0,0 +1,500 @@
+ SUBROUTINE DSTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPZ
+ INTEGER INFO, LDZ, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSTEQR computes all eigenvalues and, optionally, eigenvectors of a
+* symmetric tridiagonal matrix using the implicit QL or QR method.
+* The eigenvectors of a full or band symmetric matrix can also be found
+* if DSYTRD or DSPTRD or DSBTRD has been used to reduce this matrix to
+* tridiagonal form.
+*
+* Arguments
+* =========
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': Compute eigenvalues only.
+* = 'V': Compute eigenvalues and eigenvectors of the original
+* symmetric matrix. On entry, Z must contain the
+* orthogonal matrix used to reduce the original matrix
+* to tridiagonal form.
+* = 'I': Compute eigenvalues and eigenvectors of the
+* tridiagonal matrix. Z is initialized to the identity
+* matrix.
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 0.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the diagonal elements of the tridiagonal matrix.
+* On exit, if INFO = 0, the eigenvalues in ascending order.
+*
+* E (input/output) DOUBLE PRECISION array, dimension (N-1)
+* On entry, the (n-1) subdiagonal elements of the tridiagonal
+* matrix.
+* On exit, E has been destroyed.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ, N)
+* On entry, if COMPZ = 'V', then Z contains the orthogonal
+* matrix used in the reduction to tridiagonal form.
+* On exit, if INFO = 0, then if COMPZ = 'V', Z contains the
+* orthonormal eigenvectors of the original symmetric matrix,
+* and if COMPZ = 'I', Z contains the orthonormal eigenvectors
+* of the symmetric tridiagonal matrix.
+* If COMPZ = 'N', then Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1, and if
+* eigenvectors are desired, then LDZ >= max(1,N).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (max(1,2*N-2))
+* If COMPZ = 'N', then WORK is not referenced.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: the algorithm has failed to find all the eigenvalues in
+* a total of 30*N iterations; if INFO = i, then i
+* elements of E have not converged to zero; on exit, D
+* and E contain the elements of a symmetric tridiagonal
+* matrix which is orthogonally similar to the original
+* matrix.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO, THREE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0,
+ $ THREE = 3.0D0 )
+ INTEGER MAXIT
+ PARAMETER ( MAXIT = 30 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ICOMPZ, II, ISCALE, J, JTOT, K, L, L1, LEND,
+ $ LENDM1, LENDP1, LENDSV, LM1, LSV, M, MM, MM1,
+ $ NM1, NMAXIT
+ DOUBLE PRECISION ANORM, B, C, EPS, EPS2, F, G, P, R, RT1, RT2,
+ $ S, SAFMAX, SAFMIN, SSFMAX, SSFMIN, TST
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, DLANST, DLAPY2
+ EXTERNAL LSAME, DLAMCH, DLANST, DLAPY2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAE2, DLAEV2, DLARTG, DLASCL, DLASET, DLASR,
+ $ DLASRT, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+*
+ IF( LSAME( COMPZ, 'N' ) ) THEN
+ ICOMPZ = 0
+ ELSE IF( LSAME( COMPZ, 'V' ) ) THEN
+ ICOMPZ = 1
+ ELSE IF( LSAME( COMPZ, 'I' ) ) THEN
+ ICOMPZ = 2
+ ELSE
+ ICOMPZ = -1
+ END IF
+ IF( ICOMPZ.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( ( LDZ.LT.1 ) .OR. ( ICOMPZ.GT.0 .AND. LDZ.LT.MAX( 1,
+ $ N ) ) ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSTEQR', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( N.EQ.1 ) THEN
+ IF( ICOMPZ.EQ.2 )
+ $ Z( 1, 1 ) = ONE
+ RETURN
+ END IF
+*
+* Determine the unit roundoff and over/underflow thresholds.
+*
+ EPS = DLAMCH( 'E' )
+ EPS2 = EPS**2
+ SAFMIN = DLAMCH( 'S' )
+ SAFMAX = ONE / SAFMIN
+ SSFMAX = SQRT( SAFMAX ) / THREE
+ SSFMIN = SQRT( SAFMIN ) / EPS2
+*
+* Compute the eigenvalues and eigenvectors of the tridiagonal
+* matrix.
+*
+ IF( ICOMPZ.EQ.2 )
+ $ CALL DLASET( 'Full', N, N, ZERO, ONE, Z, LDZ )
+*
+ NMAXIT = N*MAXIT
+ JTOT = 0
+*
+* Determine where the matrix splits and choose QL or QR iteration
+* for each block, according to whether top or bottom diagonal
+* element is smaller.
+*
+ L1 = 1
+ NM1 = N - 1
+*
+ 10 CONTINUE
+ IF( L1.GT.N )
+ $ GO TO 160
+ IF( L1.GT.1 )
+ $ E( L1-1 ) = ZERO
+ IF( L1.LE.NM1 ) THEN
+ DO 20 M = L1, NM1
+ TST = ABS( E( M ) )
+ IF( TST.EQ.ZERO )
+ $ GO TO 30
+ IF( TST.LE.( SQRT( ABS( D( M ) ) )*SQRT( ABS( D( M+
+ $ 1 ) ) ) )*EPS ) THEN
+ E( M ) = ZERO
+ GO TO 30
+ END IF
+ 20 CONTINUE
+ END IF
+ M = N
+*
+ 30 CONTINUE
+ L = L1
+ LSV = L
+ LEND = M
+ LENDSV = LEND
+ L1 = M + 1
+ IF( LEND.EQ.L )
+ $ GO TO 10
+*
+* Scale submatrix in rows and columns L to LEND
+*
+ ANORM = DLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ISCALE = 0
+ IF( ANORM.EQ.ZERO )
+ $ GO TO 10
+ IF( ANORM.GT.SSFMAX ) THEN
+ ISCALE = 1
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N,
+ $ INFO )
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L, 1, E( L ), N,
+ $ INFO )
+ ELSE IF( ANORM.LT.SSFMIN ) THEN
+ ISCALE = 2
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L+1, 1, D( L ), N,
+ $ INFO )
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L, 1, E( L ), N,
+ $ INFO )
+ END IF
+*
+* Choose between QL and QR iteration
+*
+ IF( ABS( D( LEND ) ).LT.ABS( D( L ) ) ) THEN
+ LEND = LSV
+ L = LENDSV
+ END IF
+*
+ IF( LEND.GT.L ) THEN
+*
+* QL Iteration
+*
+* Look for small subdiagonal element.
+*
+ 40 CONTINUE
+ IF( L.NE.LEND ) THEN
+ LENDM1 = LEND - 1
+ DO 50 M = L, LENDM1
+ TST = ABS( E( M ) )**2
+ IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M+1 ) )+
+ $ SAFMIN )GO TO 60
+ 50 CONTINUE
+ END IF
+*
+ M = LEND
+*
+ 60 CONTINUE
+ IF( M.LT.LEND )
+ $ E( M ) = ZERO
+ P = D( L )
+ IF( M.EQ.L )
+ $ GO TO 80
+*
+* If remaining matrix is 2-by-2, use DLAE2 or SLAEV2
+* to compute its eigensystem.
+*
+ IF( M.EQ.L+1 ) THEN
+ IF( ICOMPZ.GT.0 ) THEN
+ CALL DLAEV2( D( L ), E( L ), D( L+1 ), RT1, RT2, C, S )
+ WORK( L ) = C
+ WORK( N-1+L ) = S
+ CALL DLASR( 'R', 'V', 'B', N, 2, WORK( L ),
+ $ WORK( N-1+L ), Z( 1, L ), LDZ )
+ ELSE
+ CALL DLAE2( D( L ), E( L ), D( L+1 ), RT1, RT2 )
+ END IF
+ D( L ) = RT1
+ D( L+1 ) = RT2
+ E( L ) = ZERO
+ L = L + 2
+ IF( L.LE.LEND )
+ $ GO TO 40
+ GO TO 140
+ END IF
+*
+ IF( JTOT.EQ.NMAXIT )
+ $ GO TO 140
+ JTOT = JTOT + 1
+*
+* Form shift.
+*
+ G = ( D( L+1 )-P ) / ( TWO*E( L ) )
+ R = DLAPY2( G, ONE )
+ G = D( M ) - P + ( E( L ) / ( G+SIGN( R, G ) ) )
+*
+ S = ONE
+ C = ONE
+ P = ZERO
+*
+* Inner loop
+*
+ MM1 = M - 1
+ DO 70 I = MM1, L, -1
+ F = S*E( I )
+ B = C*E( I )
+ CALL DLARTG( G, F, C, S, R )
+ IF( I.NE.M-1 )
+ $ E( I+1 ) = R
+ G = D( I+1 ) - P
+ R = ( D( I )-G )*S + TWO*C*B
+ P = S*R
+ D( I+1 ) = G + P
+ G = C*R - B
+*
+* If eigenvectors are desired, then save rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ WORK( I ) = C
+ WORK( N-1+I ) = -S
+ END IF
+*
+ 70 CONTINUE
+*
+* If eigenvectors are desired, then apply saved rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ MM = M - L + 1
+ CALL DLASR( 'R', 'V', 'B', N, MM, WORK( L ), WORK( N-1+L ),
+ $ Z( 1, L ), LDZ )
+ END IF
+*
+ D( L ) = D( L ) - P
+ E( L ) = G
+ GO TO 40
+*
+* Eigenvalue found.
+*
+ 80 CONTINUE
+ D( L ) = P
+*
+ L = L + 1
+ IF( L.LE.LEND )
+ $ GO TO 40
+ GO TO 140
+*
+ ELSE
+*
+* QR Iteration
+*
+* Look for small superdiagonal element.
+*
+ 90 CONTINUE
+ IF( L.NE.LEND ) THEN
+ LENDP1 = LEND + 1
+ DO 100 M = L, LENDP1, -1
+ TST = ABS( E( M-1 ) )**2
+ IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M-1 ) )+
+ $ SAFMIN )GO TO 110
+ 100 CONTINUE
+ END IF
+*
+ M = LEND
+*
+ 110 CONTINUE
+ IF( M.GT.LEND )
+ $ E( M-1 ) = ZERO
+ P = D( L )
+ IF( M.EQ.L )
+ $ GO TO 130
+*
+* If remaining matrix is 2-by-2, use DLAE2 or SLAEV2
+* to compute its eigensystem.
+*
+ IF( M.EQ.L-1 ) THEN
+ IF( ICOMPZ.GT.0 ) THEN
+ CALL DLAEV2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2, C, S )
+ WORK( M ) = C
+ WORK( N-1+M ) = S
+ CALL DLASR( 'R', 'V', 'F', N, 2, WORK( M ),
+ $ WORK( N-1+M ), Z( 1, L-1 ), LDZ )
+ ELSE
+ CALL DLAE2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2 )
+ END IF
+ D( L-1 ) = RT1
+ D( L ) = RT2
+ E( L-1 ) = ZERO
+ L = L - 2
+ IF( L.GE.LEND )
+ $ GO TO 90
+ GO TO 140
+ END IF
+*
+ IF( JTOT.EQ.NMAXIT )
+ $ GO TO 140
+ JTOT = JTOT + 1
+*
+* Form shift.
+*
+ G = ( D( L-1 )-P ) / ( TWO*E( L-1 ) )
+ R = DLAPY2( G, ONE )
+ G = D( M ) - P + ( E( L-1 ) / ( G+SIGN( R, G ) ) )
+*
+ S = ONE
+ C = ONE
+ P = ZERO
+*
+* Inner loop
+*
+ LM1 = L - 1
+ DO 120 I = M, LM1
+ F = S*E( I )
+ B = C*E( I )
+ CALL DLARTG( G, F, C, S, R )
+ IF( I.NE.M )
+ $ E( I-1 ) = R
+ G = D( I ) - P
+ R = ( D( I+1 )-G )*S + TWO*C*B
+ P = S*R
+ D( I ) = G + P
+ G = C*R - B
+*
+* If eigenvectors are desired, then save rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ WORK( I ) = C
+ WORK( N-1+I ) = S
+ END IF
+*
+ 120 CONTINUE
+*
+* If eigenvectors are desired, then apply saved rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ MM = L - M + 1
+ CALL DLASR( 'R', 'V', 'F', N, MM, WORK( M ), WORK( N-1+M ),
+ $ Z( 1, M ), LDZ )
+ END IF
+*
+ D( L ) = D( L ) - P
+ E( LM1 ) = G
+ GO TO 90
+*
+* Eigenvalue found.
+*
+ 130 CONTINUE
+ D( L ) = P
+*
+ L = L - 1
+ IF( L.GE.LEND )
+ $ GO TO 90
+ GO TO 140
+*
+ END IF
+*
+* Undo scaling if necessary
+*
+ 140 CONTINUE
+ IF( ISCALE.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV+1, 1,
+ $ D( LSV ), N, INFO )
+ CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV, 1, E( LSV ),
+ $ N, INFO )
+ ELSE IF( ISCALE.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV+1, 1,
+ $ D( LSV ), N, INFO )
+ CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV, 1, E( LSV ),
+ $ N, INFO )
+ END IF
+*
+* Check for no convergence to an eigenvalue after a total
+* of N*MAXIT iterations.
+*
+ IF( JTOT.LT.NMAXIT )
+ $ GO TO 10
+ DO 150 I = 1, N - 1
+ IF( E( I ).NE.ZERO )
+ $ INFO = INFO + 1
+ 150 CONTINUE
+ GO TO 190
+*
+* Order eigenvalues and eigenvectors.
+*
+ 160 CONTINUE
+ IF( ICOMPZ.EQ.0 ) THEN
+*
+* Use Quick Sort
+*
+ CALL DLASRT( 'I', N, D, INFO )
+*
+ ELSE
+*
+* Use Selection Sort to minimize swaps of eigenvectors
+*
+ DO 180 II = 2, N
+ I = II - 1
+ K = I
+ P = D( I )
+ DO 170 J = II, N
+ IF( D( J ).LT.P ) THEN
+ K = J
+ P = D( J )
+ END IF
+ 170 CONTINUE
+ IF( K.NE.I ) THEN
+ D( K ) = D( I )
+ D( I ) = P
+ CALL DSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 )
+ END IF
+ 180 CONTINUE
+ END IF
+*
+ 190 CONTINUE
+ RETURN
+*
+* End of DSTEQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsterf.f b/2.3-1/src/fortran/lapack/dsterf.f
new file mode 100644
index 00000000..c17ea23a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsterf.f
@@ -0,0 +1,364 @@
+ SUBROUTINE DSTERF( N, D, E, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSTERF computes all eigenvalues of a symmetric tridiagonal matrix
+* using the Pal-Walker-Kahan variant of the QL or QR algorithm.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 0.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the n diagonal elements of the tridiagonal matrix.
+* On exit, if INFO = 0, the eigenvalues in ascending order.
+*
+* E (input/output) DOUBLE PRECISION array, dimension (N-1)
+* On entry, the (n-1) subdiagonal elements of the tridiagonal
+* matrix.
+* On exit, E has been destroyed.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: the algorithm failed to find all of the eigenvalues in
+* a total of 30*N iterations; if INFO = i, then i
+* elements of E have not converged to zero.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO, THREE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0,
+ $ THREE = 3.0D0 )
+ INTEGER MAXIT
+ PARAMETER ( MAXIT = 30 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ISCALE, JTOT, L, L1, LEND, LENDSV, LSV, M,
+ $ NMAXIT
+ DOUBLE PRECISION ALPHA, ANORM, BB, C, EPS, EPS2, GAMMA, OLDC,
+ $ OLDGAM, P, R, RT1, RT2, RTE, S, SAFMAX, SAFMIN,
+ $ SIGMA, SSFMAX, SSFMIN
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLANST, DLAPY2
+ EXTERNAL DLAMCH, DLANST, DLAPY2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAE2, DLASCL, DLASRT, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ CALL XERBLA( 'DSTERF', -INFO )
+ RETURN
+ END IF
+ IF( N.LE.1 )
+ $ RETURN
+*
+* Determine the unit roundoff for this environment.
+*
+ EPS = DLAMCH( 'E' )
+ EPS2 = EPS**2
+ SAFMIN = DLAMCH( 'S' )
+ SAFMAX = ONE / SAFMIN
+ SSFMAX = SQRT( SAFMAX ) / THREE
+ SSFMIN = SQRT( SAFMIN ) / EPS2
+*
+* Compute the eigenvalues of the tridiagonal matrix.
+*
+ NMAXIT = N*MAXIT
+ SIGMA = ZERO
+ JTOT = 0
+*
+* Determine where the matrix splits and choose QL or QR iteration
+* for each block, according to whether top or bottom diagonal
+* element is smaller.
+*
+ L1 = 1
+*
+ 10 CONTINUE
+ IF( L1.GT.N )
+ $ GO TO 170
+ IF( L1.GT.1 )
+ $ E( L1-1 ) = ZERO
+ DO 20 M = L1, N - 1
+ IF( ABS( E( M ) ).LE.( SQRT( ABS( D( M ) ) )*SQRT( ABS( D( M+
+ $ 1 ) ) ) )*EPS ) THEN
+ E( M ) = ZERO
+ GO TO 30
+ END IF
+ 20 CONTINUE
+ M = N
+*
+ 30 CONTINUE
+ L = L1
+ LSV = L
+ LEND = M
+ LENDSV = LEND
+ L1 = M + 1
+ IF( LEND.EQ.L )
+ $ GO TO 10
+*
+* Scale submatrix in rows and columns L to LEND
+*
+ ANORM = DLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ISCALE = 0
+ IF( ANORM.GT.SSFMAX ) THEN
+ ISCALE = 1
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N,
+ $ INFO )
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L, 1, E( L ), N,
+ $ INFO )
+ ELSE IF( ANORM.LT.SSFMIN ) THEN
+ ISCALE = 2
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L+1, 1, D( L ), N,
+ $ INFO )
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L, 1, E( L ), N,
+ $ INFO )
+ END IF
+*
+ DO 40 I = L, LEND - 1
+ E( I ) = E( I )**2
+ 40 CONTINUE
+*
+* Choose between QL and QR iteration
+*
+ IF( ABS( D( LEND ) ).LT.ABS( D( L ) ) ) THEN
+ LEND = LSV
+ L = LENDSV
+ END IF
+*
+ IF( LEND.GE.L ) THEN
+*
+* QL Iteration
+*
+* Look for small subdiagonal element.
+*
+ 50 CONTINUE
+ IF( L.NE.LEND ) THEN
+ DO 60 M = L, LEND - 1
+ IF( ABS( E( M ) ).LE.EPS2*ABS( D( M )*D( M+1 ) ) )
+ $ GO TO 70
+ 60 CONTINUE
+ END IF
+ M = LEND
+*
+ 70 CONTINUE
+ IF( M.LT.LEND )
+ $ E( M ) = ZERO
+ P = D( L )
+ IF( M.EQ.L )
+ $ GO TO 90
+*
+* If remaining matrix is 2 by 2, use DLAE2 to compute its
+* eigenvalues.
+*
+ IF( M.EQ.L+1 ) THEN
+ RTE = SQRT( E( L ) )
+ CALL DLAE2( D( L ), RTE, D( L+1 ), RT1, RT2 )
+ D( L ) = RT1
+ D( L+1 ) = RT2
+ E( L ) = ZERO
+ L = L + 2
+ IF( L.LE.LEND )
+ $ GO TO 50
+ GO TO 150
+ END IF
+*
+ IF( JTOT.EQ.NMAXIT )
+ $ GO TO 150
+ JTOT = JTOT + 1
+*
+* Form shift.
+*
+ RTE = SQRT( E( L ) )
+ SIGMA = ( D( L+1 )-P ) / ( TWO*RTE )
+ R = DLAPY2( SIGMA, ONE )
+ SIGMA = P - ( RTE / ( SIGMA+SIGN( R, SIGMA ) ) )
+*
+ C = ONE
+ S = ZERO
+ GAMMA = D( M ) - SIGMA
+ P = GAMMA*GAMMA
+*
+* Inner loop
+*
+ DO 80 I = M - 1, L, -1
+ BB = E( I )
+ R = P + BB
+ IF( I.NE.M-1 )
+ $ E( I+1 ) = S*R
+ OLDC = C
+ C = P / R
+ S = BB / R
+ OLDGAM = GAMMA
+ ALPHA = D( I )
+ GAMMA = C*( ALPHA-SIGMA ) - S*OLDGAM
+ D( I+1 ) = OLDGAM + ( ALPHA-GAMMA )
+ IF( C.NE.ZERO ) THEN
+ P = ( GAMMA*GAMMA ) / C
+ ELSE
+ P = OLDC*BB
+ END IF
+ 80 CONTINUE
+*
+ E( L ) = S*P
+ D( L ) = SIGMA + GAMMA
+ GO TO 50
+*
+* Eigenvalue found.
+*
+ 90 CONTINUE
+ D( L ) = P
+*
+ L = L + 1
+ IF( L.LE.LEND )
+ $ GO TO 50
+ GO TO 150
+*
+ ELSE
+*
+* QR Iteration
+*
+* Look for small superdiagonal element.
+*
+ 100 CONTINUE
+ DO 110 M = L, LEND + 1, -1
+ IF( ABS( E( M-1 ) ).LE.EPS2*ABS( D( M )*D( M-1 ) ) )
+ $ GO TO 120
+ 110 CONTINUE
+ M = LEND
+*
+ 120 CONTINUE
+ IF( M.GT.LEND )
+ $ E( M-1 ) = ZERO
+ P = D( L )
+ IF( M.EQ.L )
+ $ GO TO 140
+*
+* If remaining matrix is 2 by 2, use DLAE2 to compute its
+* eigenvalues.
+*
+ IF( M.EQ.L-1 ) THEN
+ RTE = SQRT( E( L-1 ) )
+ CALL DLAE2( D( L ), RTE, D( L-1 ), RT1, RT2 )
+ D( L ) = RT1
+ D( L-1 ) = RT2
+ E( L-1 ) = ZERO
+ L = L - 2
+ IF( L.GE.LEND )
+ $ GO TO 100
+ GO TO 150
+ END IF
+*
+ IF( JTOT.EQ.NMAXIT )
+ $ GO TO 150
+ JTOT = JTOT + 1
+*
+* Form shift.
+*
+ RTE = SQRT( E( L-1 ) )
+ SIGMA = ( D( L-1 )-P ) / ( TWO*RTE )
+ R = DLAPY2( SIGMA, ONE )
+ SIGMA = P - ( RTE / ( SIGMA+SIGN( R, SIGMA ) ) )
+*
+ C = ONE
+ S = ZERO
+ GAMMA = D( M ) - SIGMA
+ P = GAMMA*GAMMA
+*
+* Inner loop
+*
+ DO 130 I = M, L - 1
+ BB = E( I )
+ R = P + BB
+ IF( I.NE.M )
+ $ E( I-1 ) = S*R
+ OLDC = C
+ C = P / R
+ S = BB / R
+ OLDGAM = GAMMA
+ ALPHA = D( I+1 )
+ GAMMA = C*( ALPHA-SIGMA ) - S*OLDGAM
+ D( I ) = OLDGAM + ( ALPHA-GAMMA )
+ IF( C.NE.ZERO ) THEN
+ P = ( GAMMA*GAMMA ) / C
+ ELSE
+ P = OLDC*BB
+ END IF
+ 130 CONTINUE
+*
+ E( L-1 ) = S*P
+ D( L ) = SIGMA + GAMMA
+ GO TO 100
+*
+* Eigenvalue found.
+*
+ 140 CONTINUE
+ D( L ) = P
+*
+ L = L - 1
+ IF( L.GE.LEND )
+ $ GO TO 100
+ GO TO 150
+*
+ END IF
+*
+* Undo scaling if necessary
+*
+ 150 CONTINUE
+ IF( ISCALE.EQ.1 )
+ $ CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV+1, 1,
+ $ D( LSV ), N, INFO )
+ IF( ISCALE.EQ.2 )
+ $ CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV+1, 1,
+ $ D( LSV ), N, INFO )
+*
+* Check for no convergence to an eigenvalue after a total
+* of N*MAXIT iterations.
+*
+ IF( JTOT.LT.NMAXIT )
+ $ GO TO 10
+ DO 160 I = 1, N - 1
+ IF( E( I ).NE.ZERO )
+ $ INFO = INFO + 1
+ 160 CONTINUE
+ GO TO 180
+*
+* Sort eigenvalues in increasing order.
+*
+ 170 CONTINUE
+ CALL DLASRT( 'I', N, D, INFO )
+*
+ 180 CONTINUE
+ RETURN
+*
+* End of DSTERF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsycon.f b/2.3-1/src/fortran/lapack/dsycon.f
new file mode 100644
index 00000000..711b48ca
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsycon.f
@@ -0,0 +1,165 @@
+ SUBROUTINE DSYCON( UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK,
+ $ IWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION ANORM, RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYCON estimates the reciprocal of the condition number (in the
+* 1-norm) of a real symmetric matrix A using the factorization
+* A = U*D*U**T or A = L*D*L**T computed by DSYTRF.
+*
+* An estimate is obtained for norm(inv(A)), and the reciprocal of the
+* condition number is computed as RCOND = 1 / (ANORM * norm(inv(A))).
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the details of the factorization are stored
+* as an upper or lower triangular matrix.
+* = 'U': Upper triangular, form is A = U*D*U**T;
+* = 'L': Lower triangular, form is A = L*D*L**T.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The block diagonal matrix D and the multipliers used to
+* obtain the factor U or L as computed by DSYTRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D
+* as determined by DSYTRF.
+*
+* ANORM (input) DOUBLE PRECISION
+* The 1-norm of the original matrix A.
+*
+* RCOND (output) DOUBLE PRECISION
+* The reciprocal of the condition number of the matrix A,
+* computed as RCOND = 1/(ANORM * AINVNM), where AINVNM is an
+* estimate of the 1-norm of inv(A) computed in this routine.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* IWORK (workspace) INTEGER array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, KASE
+ DOUBLE PRECISION AINVNM
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACN2, DSYTRS, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( ANORM.LT.ZERO ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYCON', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ RCOND = ZERO
+ IF( N.EQ.0 ) THEN
+ RCOND = ONE
+ RETURN
+ ELSE IF( ANORM.LE.ZERO ) THEN
+ RETURN
+ END IF
+*
+* Check that the diagonal matrix D is nonsingular.
+*
+ IF( UPPER ) THEN
+*
+* Upper triangular storage: examine D from bottom to top
+*
+ DO 10 I = N, 1, -1
+ IF( IPIV( I ).GT.0 .AND. A( I, I ).EQ.ZERO )
+ $ RETURN
+ 10 CONTINUE
+ ELSE
+*
+* Lower triangular storage: examine D from top to bottom.
+*
+ DO 20 I = 1, N
+ IF( IPIV( I ).GT.0 .AND. A( I, I ).EQ.ZERO )
+ $ RETURN
+ 20 CONTINUE
+ END IF
+*
+* Estimate the 1-norm of the inverse.
+*
+ KASE = 0
+ 30 CONTINUE
+ CALL DLACN2( N, WORK( N+1 ), WORK, IWORK, AINVNM, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+*
+* Multiply by inv(L*D*L') or inv(U*D*U').
+*
+ CALL DSYTRS( UPLO, N, 1, A, LDA, IPIV, WORK, N, INFO )
+ GO TO 30
+ END IF
+*
+* Compute the estimate of the reciprocal condition number.
+*
+ IF( AINVNM.NE.ZERO )
+ $ RCOND = ( ONE / AINVNM ) / ANORM
+*
+ RETURN
+*
+* End of DSYCON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsyev.f b/2.3-1/src/fortran/lapack/dsyev.f
new file mode 100644
index 00000000..d73600a2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsyev.f
@@ -0,0 +1,211 @@
+ SUBROUTINE DSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBZ, UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), W( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYEV computes all eigenvalues and, optionally, eigenvectors of a
+* real symmetric matrix A.
+*
+* Arguments
+* =========
+*
+* JOBZ (input) CHARACTER*1
+* = 'N': Compute eigenvalues only;
+* = 'V': Compute eigenvalues and eigenvectors.
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the
+* leading N-by-N upper triangular part of A contains the
+* upper triangular part of the matrix A. If UPLO = 'L',
+* the leading N-by-N lower triangular part of A contains
+* the lower triangular part of the matrix A.
+* On exit, if JOBZ = 'V', then if INFO = 0, A contains the
+* orthonormal eigenvectors of the matrix A.
+* If JOBZ = 'N', then on exit the lower triangle (if UPLO='L')
+* or the upper triangle (if UPLO='U') of A, including the
+* diagonal, is destroyed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* W (output) DOUBLE PRECISION array, dimension (N)
+* If INFO = 0, the eigenvalues in ascending order.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of the array WORK. LWORK >= max(1,3*N-1).
+* For optimal efficiency, LWORK >= (NB+2)*N,
+* where NB is the blocksize for DSYTRD returned by ILAENV.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the algorithm failed to converge; i
+* off-diagonal elements of an intermediate tridiagonal
+* form did not converge to zero.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LOWER, LQUERY, WANTZ
+ INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE,
+ $ LLWORK, LWKOPT, NB
+ DOUBLE PRECISION ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
+ $ SMLNUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANSY
+ EXTERNAL LSAME, ILAENV, DLAMCH, DLANSY
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASCL, DORGTR, DSCAL, DSTEQR, DSTERF, DSYTRD,
+ $ XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ WANTZ = LSAME( JOBZ, 'V' )
+ LOWER = LSAME( UPLO, 'L' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ INFO = 0
+ IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.( LOWER .OR. LSAME( UPLO, 'U' ) ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 )
+ LWKOPT = MAX( 1, ( NB+2 )*N )
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, 3*N-1 ) .AND. .NOT.LQUERY )
+ $ INFO = -8
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYEV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+ IF( N.EQ.1 ) THEN
+ W( 1 ) = A( 1, 1 )
+ WORK( 1 ) = 2
+ IF( WANTZ )
+ $ A( 1, 1 ) = ONE
+ RETURN
+ END IF
+*
+* Get machine constants.
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ EPS = DLAMCH( 'Precision' )
+ SMLNUM = SAFMIN / EPS
+ BIGNUM = ONE / SMLNUM
+ RMIN = SQRT( SMLNUM )
+ RMAX = SQRT( BIGNUM )
+*
+* Scale matrix to allowable range, if necessary.
+*
+ ANRM = DLANSY( 'M', UPLO, N, A, LDA, WORK )
+ ISCALE = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN
+ ISCALE = 1
+ SIGMA = RMIN / ANRM
+ ELSE IF( ANRM.GT.RMAX ) THEN
+ ISCALE = 1
+ SIGMA = RMAX / ANRM
+ END IF
+ IF( ISCALE.EQ.1 )
+ $ CALL DLASCL( UPLO, 0, 0, ONE, SIGMA, N, N, A, LDA, INFO )
+*
+* Call DSYTRD to reduce symmetric matrix to tridiagonal form.
+*
+ INDE = 1
+ INDTAU = INDE + N
+ INDWRK = INDTAU + N
+ LLWORK = LWORK - INDWRK + 1
+ CALL DSYTRD( UPLO, N, A, LDA, W, WORK( INDE ), WORK( INDTAU ),
+ $ WORK( INDWRK ), LLWORK, IINFO )
+*
+* For eigenvalues only, call DSTERF. For eigenvectors, first call
+* DORGTR to generate the orthogonal matrix, then call DSTEQR.
+*
+ IF( .NOT.WANTZ ) THEN
+ CALL DSTERF( N, W, WORK( INDE ), INFO )
+ ELSE
+ CALL DORGTR( UPLO, N, A, LDA, WORK( INDTAU ), WORK( INDWRK ),
+ $ LLWORK, IINFO )
+ CALL DSTEQR( JOBZ, N, W, WORK( INDE ), A, LDA, WORK( INDTAU ),
+ $ INFO )
+ END IF
+*
+* If matrix was scaled, then rescale eigenvalues appropriately.
+*
+ IF( ISCALE.EQ.1 ) THEN
+ IF( INFO.EQ.0 ) THEN
+ IMAX = N
+ ELSE
+ IMAX = INFO - 1
+ END IF
+ CALL DSCAL( IMAX, ONE / SIGMA, W, 1 )
+ END IF
+*
+* Set WORK(1) to optimal workspace size.
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DSYEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsysv.f b/2.3-1/src/fortran/lapack/dsysv.f
new file mode 100644
index 00000000..add53850
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsysv.f
@@ -0,0 +1,174 @@
+ SUBROUTINE DSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
+ $ LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, LWORK, N, NRHS
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYSV computes the solution to a real system of linear equations
+* A * X = B,
+* where A is an N-by-N symmetric matrix and X and B are N-by-NRHS
+* matrices.
+*
+* The diagonal pivoting method is used to factor A as
+* A = U * D * U**T, if UPLO = 'U', or
+* A = L * D * L**T, if UPLO = 'L',
+* where U (or L) is a product of permutation and unit upper (lower)
+* triangular matrices, and D is symmetric and block diagonal with
+* 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then
+* used to solve the system of equations A * X = B.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The number of linear equations, i.e., the order of the
+* matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* N-by-N upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, if INFO = 0, the block diagonal matrix D and the
+* multipliers used to obtain the factor U or L from the
+* factorization A = U*D*U**T or A = L*D*L**T as computed by
+* DSYTRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (output) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D, as
+* determined by DSYTRF. If IPIV(k) > 0, then rows and columns
+* k and IPIV(k) were interchanged, and D(k,k) is a 1-by-1
+* diagonal block. If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0,
+* then rows and columns k-1 and -IPIV(k) were interchanged and
+* D(k-1:k,k-1:k) is a 2-by-2 diagonal block. If UPLO = 'L' and
+* IPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and
+* -IPIV(k) were interchanged and D(k:k+1,k:k+1) is a 2-by-2
+* diagonal block.
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the N-by-NRHS right hand side matrix B.
+* On exit, if INFO = 0, the N-by-NRHS solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of WORK. LWORK >= 1, and for best performance
+* LWORK >= max(1,N*NB), where NB is the optimal blocksize for
+* DSYTRF.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, D(i,i) is exactly zero. The factorization
+* has been completed, but the block diagonal matrix D is
+* exactly singular, so the solution could not be computed.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER LWKOPT, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSYTRF, DSYTRS, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN
+ INFO = -10
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+ NB = ILAENV( 1, 'DSYTRF', UPLO, N, -1, -1, -1 )
+ LWKOPT = N*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYSV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Compute the factorization A = U*D*U' or A = L*D*L'.
+*
+ CALL DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
+ IF( INFO.EQ.0 ) THEN
+*
+* Solve the system A*X = B, overwriting B with X.
+*
+ CALL DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+*
+ END IF
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DSYSV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsytd2.f b/2.3-1/src/fortran/lapack/dsytd2.f
new file mode 100644
index 00000000..c696818e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsytd2.f
@@ -0,0 +1,248 @@
+ SUBROUTINE DSYTD2( UPLO, N, A, LDA, D, E, TAU, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYTD2 reduces a real symmetric matrix A to symmetric tridiagonal
+* form T by an orthogonal similarity transformation: Q' * A * Q = T.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is stored:
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* n-by-n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n-by-n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit, if UPLO = 'U', the diagonal and first superdiagonal
+* of A are overwritten by the corresponding elements of the
+* tridiagonal matrix T, and the elements above the first
+* superdiagonal, with the array TAU, represent the orthogonal
+* matrix Q as a product of elementary reflectors; if UPLO
+* = 'L', the diagonal and first subdiagonal of A are over-
+* written by the corresponding elements of the tridiagonal
+* matrix T, and the elements below the first subdiagonal, with
+* the array TAU, represent the orthogonal matrix Q as a product
+* of elementary reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* D (output) DOUBLE PRECISION array, dimension (N)
+* The diagonal elements of the tridiagonal matrix T:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* The off-diagonal elements of the tridiagonal matrix T:
+* E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n-1) . . . H(2) H(1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
+* A(1:i-1,i+1), and tau in TAU(i).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(n-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
+* and tau in TAU(i).
+*
+* The contents of A on exit are illustrated by the following examples
+* with n = 5:
+*
+* if UPLO = 'U': if UPLO = 'L':
+*
+* ( d e v2 v3 v4 ) ( d )
+* ( d e v3 v4 ) ( e d )
+* ( d e v4 ) ( v1 e d )
+* ( d e ) ( v1 v2 e d )
+* ( d ) ( v1 v2 v3 e d )
+*
+* where d and e denote diagonal and off-diagonal elements of T, and vi
+* denotes an element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO, HALF
+ PARAMETER ( ONE = 1.0D0, ZERO = 0.0D0,
+ $ HALF = 1.0D0 / 2.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I
+ DOUBLE PRECISION ALPHA, TAUI
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DLARFG, DSYMV, DSYR2, XERBLA
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYTD2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Reduce the upper triangle of A
+*
+ DO 10 I = N - 1, 1, -1
+*
+* Generate elementary reflector H(i) = I - tau * v * v'
+* to annihilate A(1:i-1,i+1)
+*
+ CALL DLARFG( I, A( I, I+1 ), A( 1, I+1 ), 1, TAUI )
+ E( I ) = A( I, I+1 )
+*
+ IF( TAUI.NE.ZERO ) THEN
+*
+* Apply H(i) from both sides to A(1:i,1:i)
+*
+ A( I, I+1 ) = ONE
+*
+* Compute x := tau * A * v storing x in TAU(1:i)
+*
+ CALL DSYMV( UPLO, I, TAUI, A, LDA, A( 1, I+1 ), 1, ZERO,
+ $ TAU, 1 )
+*
+* Compute w := x - 1/2 * tau * (x'*v) * v
+*
+ ALPHA = -HALF*TAUI*DDOT( I, TAU, 1, A( 1, I+1 ), 1 )
+ CALL DAXPY( I, ALPHA, A( 1, I+1 ), 1, TAU, 1 )
+*
+* Apply the transformation as a rank-2 update:
+* A := A - v * w' - w * v'
+*
+ CALL DSYR2( UPLO, I, -ONE, A( 1, I+1 ), 1, TAU, 1, A,
+ $ LDA )
+*
+ A( I, I+1 ) = E( I )
+ END IF
+ D( I+1 ) = A( I+1, I+1 )
+ TAU( I ) = TAUI
+ 10 CONTINUE
+ D( 1 ) = A( 1, 1 )
+ ELSE
+*
+* Reduce the lower triangle of A
+*
+ DO 20 I = 1, N - 1
+*
+* Generate elementary reflector H(i) = I - tau * v * v'
+* to annihilate A(i+2:n,i)
+*
+ CALL DLARFG( N-I, A( I+1, I ), A( MIN( I+2, N ), I ), 1,
+ $ TAUI )
+ E( I ) = A( I+1, I )
+*
+ IF( TAUI.NE.ZERO ) THEN
+*
+* Apply H(i) from both sides to A(i+1:n,i+1:n)
+*
+ A( I+1, I ) = ONE
+*
+* Compute x := tau * A * v storing y in TAU(i:n-1)
+*
+ CALL DSYMV( UPLO, N-I, TAUI, A( I+1, I+1 ), LDA,
+ $ A( I+1, I ), 1, ZERO, TAU( I ), 1 )
+*
+* Compute w := x - 1/2 * tau * (x'*v) * v
+*
+ ALPHA = -HALF*TAUI*DDOT( N-I, TAU( I ), 1, A( I+1, I ),
+ $ 1 )
+ CALL DAXPY( N-I, ALPHA, A( I+1, I ), 1, TAU( I ), 1 )
+*
+* Apply the transformation as a rank-2 update:
+* A := A - v * w' - w * v'
+*
+ CALL DSYR2( UPLO, N-I, -ONE, A( I+1, I ), 1, TAU( I ), 1,
+ $ A( I+1, I+1 ), LDA )
+*
+ A( I+1, I ) = E( I )
+ END IF
+ D( I ) = A( I, I )
+ TAU( I ) = TAUI
+ 20 CONTINUE
+ D( N ) = A( N, N )
+ END IF
+*
+ RETURN
+*
+* End of DSYTD2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsytf2.f b/2.3-1/src/fortran/lapack/dsytf2.f
new file mode 100644
index 00000000..d5234625
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsytf2.f
@@ -0,0 +1,521 @@
+ SUBROUTINE DSYTF2( UPLO, N, A, LDA, IPIV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYTF2 computes the factorization of a real symmetric matrix A using
+* the Bunch-Kaufman diagonal pivoting method:
+*
+* A = U*D*U' or A = L*D*L'
+*
+* where U (or L) is a product of permutation and unit upper (lower)
+* triangular matrices, U' is the transpose of U, and D is symmetric and
+* block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
+*
+* This is the unblocked version of the algorithm, calling Level 2 BLAS.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* symmetric matrix A is stored:
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* n-by-n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n-by-n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, the block diagonal matrix D and the multipliers used
+* to obtain the factor U or L (see below for further details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (output) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D.
+* If IPIV(k) > 0, then rows and columns k and IPIV(k) were
+* interchanged and D(k,k) is a 1-by-1 diagonal block.
+* If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
+* columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
+* is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
+* IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
+* interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+* > 0: if INFO = k, D(k,k) is exactly zero. The factorization
+* has been completed, but the block diagonal matrix D is
+* exactly singular, and division by zero will occur if it
+* is used to solve a system of equations.
+*
+* Further Details
+* ===============
+*
+* 09-29-06 - patch from
+* Bobby Cheng, MathWorks
+*
+* Replace l.204 and l.372
+* IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
+* by
+* IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN
+*
+* 01-01-96 - Based on modifications by
+* J. Lewis, Boeing Computer Services Company
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+* 1-96 - Based on modifications by J. Lewis, Boeing Computer Services
+* Company
+*
+* If UPLO = 'U', then A = U*D*U', where
+* U = P(n)*U(n)* ... *P(k)U(k)* ...,
+* i.e., U is a product of terms P(k)*U(k), where k decreases from n to
+* 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
+* and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
+* defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
+* that if the diagonal block D(k) is of order s (s = 1 or 2), then
+*
+* ( I v 0 ) k-s
+* U(k) = ( 0 I 0 ) s
+* ( 0 0 I ) n-k
+* k-s s n-k
+*
+* If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
+* If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
+* and A(k,k), and v overwrites A(1:k-2,k-1:k).
+*
+* If UPLO = 'L', then A = L*D*L', where
+* L = P(1)*L(1)* ... *P(k)*L(k)* ...,
+* i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
+* n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
+* and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
+* defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
+* that if the diagonal block D(k) is of order s (s = 1 or 2), then
+*
+* ( I 0 0 ) k-1
+* L(k) = ( 0 I 0 ) s
+* ( 0 v I ) n-k-s+1
+* k-1 s n-k-s+1
+*
+* If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
+* If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
+* and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION EIGHT, SEVTEN
+ PARAMETER ( EIGHT = 8.0D+0, SEVTEN = 17.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I, IMAX, J, JMAX, K, KK, KP, KSTEP
+ DOUBLE PRECISION ABSAKK, ALPHA, COLMAX, D11, D12, D21, D22, R1,
+ $ ROWMAX, T, WK, WKM1, WKP1
+* ..
+* .. External Functions ..
+ LOGICAL LSAME, DISNAN
+ INTEGER IDAMAX
+ EXTERNAL LSAME, IDAMAX, DISNAN
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSWAP, DSYR, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYTF2', -INFO )
+ RETURN
+ END IF
+*
+* Initialize ALPHA for use in choosing pivot block size.
+*
+ ALPHA = ( ONE+SQRT( SEVTEN ) ) / EIGHT
+*
+ IF( UPPER ) THEN
+*
+* Factorize A as U*D*U' using the upper triangle of A
+*
+* K is the main loop index, decreasing from N to 1 in steps of
+* 1 or 2
+*
+ K = N
+ 10 CONTINUE
+*
+* If K < 1, exit from loop
+*
+ IF( K.LT.1 )
+ $ GO TO 70
+ KSTEP = 1
+*
+* Determine rows and columns to be interchanged and whether
+* a 1-by-1 or 2-by-2 pivot block will be used
+*
+ ABSAKK = ABS( A( K, K ) )
+*
+* IMAX is the row-index of the largest off-diagonal element in
+* column K, and COLMAX is its absolute value
+*
+ IF( K.GT.1 ) THEN
+ IMAX = IDAMAX( K-1, A( 1, K ), 1 )
+ COLMAX = ABS( A( IMAX, K ) )
+ ELSE
+ COLMAX = ZERO
+ END IF
+*
+ IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN
+*
+* Column K is zero or contains a NaN: set INFO and continue
+*
+ IF( INFO.EQ.0 )
+ $ INFO = K
+ KP = K
+ ELSE
+ IF( ABSAKK.GE.ALPHA*COLMAX ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE
+*
+* JMAX is the column-index of the largest off-diagonal
+* element in row IMAX, and ROWMAX is its absolute value
+*
+ JMAX = IMAX + IDAMAX( K-IMAX, A( IMAX, IMAX+1 ), LDA )
+ ROWMAX = ABS( A( IMAX, JMAX ) )
+ IF( IMAX.GT.1 ) THEN
+ JMAX = IDAMAX( IMAX-1, A( 1, IMAX ), 1 )
+ ROWMAX = MAX( ROWMAX, ABS( A( JMAX, IMAX ) ) )
+ END IF
+*
+ IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE IF( ABS( A( IMAX, IMAX ) ).GE.ALPHA*ROWMAX ) THEN
+*
+* interchange rows and columns K and IMAX, use 1-by-1
+* pivot block
+*
+ KP = IMAX
+ ELSE
+*
+* interchange rows and columns K-1 and IMAX, use 2-by-2
+* pivot block
+*
+ KP = IMAX
+ KSTEP = 2
+ END IF
+ END IF
+*
+ KK = K - KSTEP + 1
+ IF( KP.NE.KK ) THEN
+*
+* Interchange rows and columns KK and KP in the leading
+* submatrix A(1:k,1:k)
+*
+ CALL DSWAP( KP-1, A( 1, KK ), 1, A( 1, KP ), 1 )
+ CALL DSWAP( KK-KP-1, A( KP+1, KK ), 1, A( KP, KP+1 ),
+ $ LDA )
+ T = A( KK, KK )
+ A( KK, KK ) = A( KP, KP )
+ A( KP, KP ) = T
+ IF( KSTEP.EQ.2 ) THEN
+ T = A( K-1, K )
+ A( K-1, K ) = A( KP, K )
+ A( KP, K ) = T
+ END IF
+ END IF
+*
+* Update the leading submatrix
+*
+ IF( KSTEP.EQ.1 ) THEN
+*
+* 1-by-1 pivot block D(k): column k now holds
+*
+* W(k) = U(k)*D(k)
+*
+* where U(k) is the k-th column of U
+*
+* Perform a rank-1 update of A(1:k-1,1:k-1) as
+*
+* A := A - U(k)*D(k)*U(k)' = A - W(k)*1/D(k)*W(k)'
+*
+ R1 = ONE / A( K, K )
+ CALL DSYR( UPLO, K-1, -R1, A( 1, K ), 1, A, LDA )
+*
+* Store U(k) in column k
+*
+ CALL DSCAL( K-1, R1, A( 1, K ), 1 )
+ ELSE
+*
+* 2-by-2 pivot block D(k): columns k and k-1 now hold
+*
+* ( W(k-1) W(k) ) = ( U(k-1) U(k) )*D(k)
+*
+* where U(k) and U(k-1) are the k-th and (k-1)-th columns
+* of U
+*
+* Perform a rank-2 update of A(1:k-2,1:k-2) as
+*
+* A := A - ( U(k-1) U(k) )*D(k)*( U(k-1) U(k) )'
+* = A - ( W(k-1) W(k) )*inv(D(k))*( W(k-1) W(k) )'
+*
+ IF( K.GT.2 ) THEN
+*
+ D12 = A( K-1, K )
+ D22 = A( K-1, K-1 ) / D12
+ D11 = A( K, K ) / D12
+ T = ONE / ( D11*D22-ONE )
+ D12 = T / D12
+*
+ DO 30 J = K - 2, 1, -1
+ WKM1 = D12*( D11*A( J, K-1 )-A( J, K ) )
+ WK = D12*( D22*A( J, K )-A( J, K-1 ) )
+ DO 20 I = J, 1, -1
+ A( I, J ) = A( I, J ) - A( I, K )*WK -
+ $ A( I, K-1 )*WKM1
+ 20 CONTINUE
+ A( J, K ) = WK
+ A( J, K-1 ) = WKM1
+ 30 CONTINUE
+*
+ END IF
+*
+ END IF
+ END IF
+*
+* Store details of the interchanges in IPIV
+*
+ IF( KSTEP.EQ.1 ) THEN
+ IPIV( K ) = KP
+ ELSE
+ IPIV( K ) = -KP
+ IPIV( K-1 ) = -KP
+ END IF
+*
+* Decrease K and return to the start of the main loop
+*
+ K = K - KSTEP
+ GO TO 10
+*
+ ELSE
+*
+* Factorize A as L*D*L' using the lower triangle of A
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* 1 or 2
+*
+ K = 1
+ 40 CONTINUE
+*
+* If K > N, exit from loop
+*
+ IF( K.GT.N )
+ $ GO TO 70
+ KSTEP = 1
+*
+* Determine rows and columns to be interchanged and whether
+* a 1-by-1 or 2-by-2 pivot block will be used
+*
+ ABSAKK = ABS( A( K, K ) )
+*
+* IMAX is the row-index of the largest off-diagonal element in
+* column K, and COLMAX is its absolute value
+*
+ IF( K.LT.N ) THEN
+ IMAX = K + IDAMAX( N-K, A( K+1, K ), 1 )
+ COLMAX = ABS( A( IMAX, K ) )
+ ELSE
+ COLMAX = ZERO
+ END IF
+*
+ IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN
+*
+* Column K is zero or contains a NaN: set INFO and continue
+*
+ IF( INFO.EQ.0 )
+ $ INFO = K
+ KP = K
+ ELSE
+ IF( ABSAKK.GE.ALPHA*COLMAX ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE
+*
+* JMAX is the column-index of the largest off-diagonal
+* element in row IMAX, and ROWMAX is its absolute value
+*
+ JMAX = K - 1 + IDAMAX( IMAX-K, A( IMAX, K ), LDA )
+ ROWMAX = ABS( A( IMAX, JMAX ) )
+ IF( IMAX.LT.N ) THEN
+ JMAX = IMAX + IDAMAX( N-IMAX, A( IMAX+1, IMAX ), 1 )
+ ROWMAX = MAX( ROWMAX, ABS( A( JMAX, IMAX ) ) )
+ END IF
+*
+ IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN
+*
+* no interchange, use 1-by-1 pivot block
+*
+ KP = K
+ ELSE IF( ABS( A( IMAX, IMAX ) ).GE.ALPHA*ROWMAX ) THEN
+*
+* interchange rows and columns K and IMAX, use 1-by-1
+* pivot block
+*
+ KP = IMAX
+ ELSE
+*
+* interchange rows and columns K+1 and IMAX, use 2-by-2
+* pivot block
+*
+ KP = IMAX
+ KSTEP = 2
+ END IF
+ END IF
+*
+ KK = K + KSTEP - 1
+ IF( KP.NE.KK ) THEN
+*
+* Interchange rows and columns KK and KP in the trailing
+* submatrix A(k:n,k:n)
+*
+ IF( KP.LT.N )
+ $ CALL DSWAP( N-KP, A( KP+1, KK ), 1, A( KP+1, KP ), 1 )
+ CALL DSWAP( KP-KK-1, A( KK+1, KK ), 1, A( KP, KK+1 ),
+ $ LDA )
+ T = A( KK, KK )
+ A( KK, KK ) = A( KP, KP )
+ A( KP, KP ) = T
+ IF( KSTEP.EQ.2 ) THEN
+ T = A( K+1, K )
+ A( K+1, K ) = A( KP, K )
+ A( KP, K ) = T
+ END IF
+ END IF
+*
+* Update the trailing submatrix
+*
+ IF( KSTEP.EQ.1 ) THEN
+*
+* 1-by-1 pivot block D(k): column k now holds
+*
+* W(k) = L(k)*D(k)
+*
+* where L(k) is the k-th column of L
+*
+ IF( K.LT.N ) THEN
+*
+* Perform a rank-1 update of A(k+1:n,k+1:n) as
+*
+* A := A - L(k)*D(k)*L(k)' = A - W(k)*(1/D(k))*W(k)'
+*
+ D11 = ONE / A( K, K )
+ CALL DSYR( UPLO, N-K, -D11, A( K+1, K ), 1,
+ $ A( K+1, K+1 ), LDA )
+*
+* Store L(k) in column K
+*
+ CALL DSCAL( N-K, D11, A( K+1, K ), 1 )
+ END IF
+ ELSE
+*
+* 2-by-2 pivot block D(k)
+*
+ IF( K.LT.N-1 ) THEN
+*
+* Perform a rank-2 update of A(k+2:n,k+2:n) as
+*
+* A := A - ( (A(k) A(k+1))*D(k)**(-1) ) * (A(k) A(k+1))'
+*
+* where L(k) and L(k+1) are the k-th and (k+1)-th
+* columns of L
+*
+ D21 = A( K+1, K )
+ D11 = A( K+1, K+1 ) / D21
+ D22 = A( K, K ) / D21
+ T = ONE / ( D11*D22-ONE )
+ D21 = T / D21
+*
+ DO 60 J = K + 2, N
+*
+ WK = D21*( D11*A( J, K )-A( J, K+1 ) )
+ WKP1 = D21*( D22*A( J, K+1 )-A( J, K ) )
+*
+ DO 50 I = J, N
+ A( I, J ) = A( I, J ) - A( I, K )*WK -
+ $ A( I, K+1 )*WKP1
+ 50 CONTINUE
+*
+ A( J, K ) = WK
+ A( J, K+1 ) = WKP1
+*
+ 60 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+* Store details of the interchanges in IPIV
+*
+ IF( KSTEP.EQ.1 ) THEN
+ IPIV( K ) = KP
+ ELSE
+ IPIV( K ) = -KP
+ IPIV( K+1 ) = -KP
+ END IF
+*
+* Increase K and return to the start of the main loop
+*
+ K = K + KSTEP
+ GO TO 40
+*
+ END IF
+*
+ 70 CONTINUE
+*
+ RETURN
+*
+* End of DSYTF2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsytrd.f b/2.3-1/src/fortran/lapack/dsytrd.f
new file mode 100644
index 00000000..569ee35b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsytrd.f
@@ -0,0 +1,294 @@
+ SUBROUTINE DSYTRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYTRD reduces a real symmetric matrix A to real symmetric
+* tridiagonal form T by an orthogonal similarity transformation:
+* Q**T * A * Q = T.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* N-by-N upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit, if UPLO = 'U', the diagonal and first superdiagonal
+* of A are overwritten by the corresponding elements of the
+* tridiagonal matrix T, and the elements above the first
+* superdiagonal, with the array TAU, represent the orthogonal
+* matrix Q as a product of elementary reflectors; if UPLO
+* = 'L', the diagonal and first subdiagonal of A are over-
+* written by the corresponding elements of the tridiagonal
+* matrix T, and the elements below the first subdiagonal, with
+* the array TAU, represent the orthogonal matrix Q as a product
+* of elementary reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* D (output) DOUBLE PRECISION array, dimension (N)
+* The diagonal elements of the tridiagonal matrix T:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* The off-diagonal elements of the tridiagonal matrix T:
+* E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*
+* TAU (output) DOUBLE PRECISION array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 1.
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n-1) . . . H(2) H(1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
+* A(1:i-1,i+1), and tau in TAU(i).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(n-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real scalar, and v is a real vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
+* and tau in TAU(i).
+*
+* The contents of A on exit are illustrated by the following examples
+* with n = 5:
+*
+* if UPLO = 'U': if UPLO = 'L':
+*
+* ( d e v2 v3 v4 ) ( d )
+* ( d e v3 v4 ) ( e d )
+* ( d e v4 ) ( v1 e d )
+* ( d e ) ( v1 v2 e d )
+* ( d ) ( v1 v2 v3 e d )
+*
+* where d and e denote diagonal and off-diagonal elements of T, and vi
+* denotes an element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, UPPER
+ INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLATRD, DSYR2K, DSYTD2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN
+ INFO = -9
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size.
+*
+ NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYTRD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NX = N
+ IWS = 1
+ IF( NB.GT.1 .AND. NB.LT.N ) THEN
+*
+* Determine when to cross over from blocked to unblocked code
+* (last block is always handled by unblocked code).
+*
+ NX = MAX( NB, ILAENV( 3, 'DSYTRD', UPLO, N, -1, -1, -1 ) )
+ IF( NX.LT.N ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: determine the
+* minimum value of NB, and reduce NB or force use of
+* unblocked code by setting NX = N.
+*
+ NB = MAX( LWORK / LDWORK, 1 )
+ NBMIN = ILAENV( 2, 'DSYTRD', UPLO, N, -1, -1, -1 )
+ IF( NB.LT.NBMIN )
+ $ NX = N
+ END IF
+ ELSE
+ NX = N
+ END IF
+ ELSE
+ NB = 1
+ END IF
+*
+ IF( UPPER ) THEN
+*
+* Reduce the upper triangle of A.
+* Columns 1:kk are handled by the unblocked method.
+*
+ KK = N - ( ( N-NX+NB-1 ) / NB )*NB
+ DO 20 I = N - NB + 1, KK + 1, -NB
+*
+* Reduce columns i:i+nb-1 to tridiagonal form and form the
+* matrix W which is needed to update the unreduced part of
+* the matrix
+*
+ CALL DLATRD( UPLO, I+NB-1, NB, A, LDA, E, TAU, WORK,
+ $ LDWORK )
+*
+* Update the unreduced submatrix A(1:i-1,1:i-1), using an
+* update of the form: A := A - V*W' - W*V'
+*
+ CALL DSYR2K( UPLO, 'No transpose', I-1, NB, -ONE, A( 1, I ),
+ $ LDA, WORK, LDWORK, ONE, A, LDA )
+*
+* Copy superdiagonal elements back into A, and diagonal
+* elements into D
+*
+ DO 10 J = I, I + NB - 1
+ A( J-1, J ) = E( J-1 )
+ D( J ) = A( J, J )
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* Use unblocked code to reduce the last or only block
+*
+ CALL DSYTD2( UPLO, KK, A, LDA, D, E, TAU, IINFO )
+ ELSE
+*
+* Reduce the lower triangle of A
+*
+ DO 40 I = 1, N - NX, NB
+*
+* Reduce columns i:i+nb-1 to tridiagonal form and form the
+* matrix W which is needed to update the unreduced part of
+* the matrix
+*
+ CALL DLATRD( UPLO, N-I+1, NB, A( I, I ), LDA, E( I ),
+ $ TAU( I ), WORK, LDWORK )
+*
+* Update the unreduced submatrix A(i+ib:n,i+ib:n), using
+* an update of the form: A := A - V*W' - W*V'
+*
+ CALL DSYR2K( UPLO, 'No transpose', N-I-NB+1, NB, -ONE,
+ $ A( I+NB, I ), LDA, WORK( NB+1 ), LDWORK, ONE,
+ $ A( I+NB, I+NB ), LDA )
+*
+* Copy subdiagonal elements back into A, and diagonal
+* elements into D
+*
+ DO 30 J = I, I + NB - 1
+ A( J+1, J ) = E( J )
+ D( J ) = A( J, J )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* Use unblocked code to reduce the last or only block
+*
+ CALL DSYTD2( UPLO, N-I+1, A( I, I ), LDA, D( I ), E( I ),
+ $ TAU( I ), IINFO )
+ END IF
+*
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DSYTRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsytrf.f b/2.3-1/src/fortran/lapack/dsytrf.f
new file mode 100644
index 00000000..43a31248
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsytrf.f
@@ -0,0 +1,287 @@
+ SUBROUTINE DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYTRF computes the factorization of a real symmetric matrix A using
+* the Bunch-Kaufman diagonal pivoting method. The form of the
+* factorization is
+*
+* A = U*D*U**T or A = L*D*L**T
+*
+* where U (or L) is a product of permutation and unit upper (lower)
+* triangular matrices, and D is symmetric and block diagonal with
+* 1-by-1 and 2-by-2 diagonal blocks.
+*
+* This is the blocked version of the algorithm, calling Level 3 BLAS.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the symmetric matrix A. If UPLO = 'U', the leading
+* N-by-N upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, the block diagonal matrix D and the multipliers used
+* to obtain the factor U or L (see below for further details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (output) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D.
+* If IPIV(k) > 0, then rows and columns k and IPIV(k) were
+* interchanged and D(k,k) is a 1-by-1 diagonal block.
+* If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
+* columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
+* is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
+* IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
+* interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of WORK. LWORK >=1. For best performance
+* LWORK >= N*NB, where NB is the block size returned by ILAENV.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, D(i,i) is exactly zero. The factorization
+* has been completed, but the block diagonal matrix D is
+* exactly singular, and division by zero will occur if it
+* is used to solve a system of equations.
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', then A = U*D*U', where
+* U = P(n)*U(n)* ... *P(k)U(k)* ...,
+* i.e., U is a product of terms P(k)*U(k), where k decreases from n to
+* 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
+* and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
+* defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
+* that if the diagonal block D(k) is of order s (s = 1 or 2), then
+*
+* ( I v 0 ) k-s
+* U(k) = ( 0 I 0 ) s
+* ( 0 0 I ) n-k
+* k-s s n-k
+*
+* If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
+* If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
+* and A(k,k), and v overwrites A(1:k-2,k-1:k).
+*
+* If UPLO = 'L', then A = L*D*L', where
+* L = P(1)*L(1)* ... *P(k)*L(k)* ...,
+* i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
+* n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
+* and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
+* defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
+* that if the diagonal block D(k) is of order s (s = 1 or 2), then
+*
+* ( I 0 0 ) k-1
+* L(k) = ( 0 I 0 ) s
+* ( 0 v I ) n-k-s+1
+* k-1 s n-k-s+1
+*
+* If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
+* If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
+* and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY, UPPER
+ INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASYF, DSYTF2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size
+*
+ NB = ILAENV( 1, 'DSYTRF', UPLO, N, -1, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYTRF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = N
+ IF( NB.GT.1 .AND. NB.LT.N ) THEN
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = MAX( LWORK / LDWORK, 1 )
+ NBMIN = MAX( 2, ILAENV( 2, 'DSYTRF', UPLO, N, -1, -1, -1 ) )
+ END IF
+ ELSE
+ IWS = 1
+ END IF
+ IF( NB.LT.NBMIN )
+ $ NB = N
+*
+ IF( UPPER ) THEN
+*
+* Factorize A as U*D*U' using the upper triangle of A
+*
+* K is the main loop index, decreasing from N to 1 in steps of
+* KB, where KB is the number of columns factorized by DLASYF;
+* KB is either NB or NB-1, or K for the last block
+*
+ K = N
+ 10 CONTINUE
+*
+* If K < 1, exit from loop
+*
+ IF( K.LT.1 )
+ $ GO TO 40
+*
+ IF( K.GT.NB ) THEN
+*
+* Factorize columns k-kb+1:k of A and use blocked code to
+* update columns 1:k-kb
+*
+ CALL DLASYF( UPLO, K, NB, KB, A, LDA, IPIV, WORK, LDWORK,
+ $ IINFO )
+ ELSE
+*
+* Use unblocked code to factorize columns 1:k of A
+*
+ CALL DSYTF2( UPLO, K, A, LDA, IPIV, IINFO )
+ KB = K
+ END IF
+*
+* Set INFO on the first occurrence of a zero pivot
+*
+ IF( INFO.EQ.0 .AND. IINFO.GT.0 )
+ $ INFO = IINFO
+*
+* Decrease K and return to the start of the main loop
+*
+ K = K - KB
+ GO TO 10
+*
+ ELSE
+*
+* Factorize A as L*D*L' using the lower triangle of A
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* KB, where KB is the number of columns factorized by DLASYF;
+* KB is either NB or NB-1, or N-K+1 for the last block
+*
+ K = 1
+ 20 CONTINUE
+*
+* If K > N, exit from loop
+*
+ IF( K.GT.N )
+ $ GO TO 40
+*
+ IF( K.LE.N-NB ) THEN
+*
+* Factorize columns k:k+kb-1 of A and use blocked code to
+* update columns k+kb:n
+*
+ CALL DLASYF( UPLO, N-K+1, NB, KB, A( K, K ), LDA, IPIV( K ),
+ $ WORK, LDWORK, IINFO )
+ ELSE
+*
+* Use unblocked code to factorize columns k:n of A
+*
+ CALL DSYTF2( UPLO, N-K+1, A( K, K ), LDA, IPIV( K ), IINFO )
+ KB = N - K + 1
+ END IF
+*
+* Set INFO on the first occurrence of a zero pivot
+*
+ IF( INFO.EQ.0 .AND. IINFO.GT.0 )
+ $ INFO = IINFO + K - 1
+*
+* Adjust IPIV
+*
+ DO 30 J = K, K + KB - 1
+ IF( IPIV( J ).GT.0 ) THEN
+ IPIV( J ) = IPIV( J ) + K - 1
+ ELSE
+ IPIV( J ) = IPIV( J ) - K + 1
+ END IF
+ 30 CONTINUE
+*
+* Increase K and return to the start of the main loop
+*
+ K = K + KB
+ GO TO 20
+*
+ END IF
+*
+ 40 CONTINUE
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of DSYTRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsytri.f b/2.3-1/src/fortran/lapack/dsytri.f
new file mode 100644
index 00000000..361de9a3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsytri.f
@@ -0,0 +1,312 @@
+ SUBROUTINE DSYTRI( UPLO, N, A, LDA, IPIV, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYTRI computes the inverse of a real symmetric indefinite matrix
+* A using the factorization A = U*D*U**T or A = L*D*L**T computed by
+* DSYTRF.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the details of the factorization are stored
+* as an upper or lower triangular matrix.
+* = 'U': Upper triangular, form is A = U*D*U**T;
+* = 'L': Lower triangular, form is A = L*D*L**T.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the block diagonal matrix D and the multipliers
+* used to obtain the factor U or L as computed by DSYTRF.
+*
+* On exit, if INFO = 0, the (symmetric) inverse of the original
+* matrix. If UPLO = 'U', the upper triangular part of the
+* inverse is formed and the part of A below the diagonal is not
+* referenced; if UPLO = 'L' the lower triangular part of the
+* inverse is formed and the part of A above the diagonal is
+* not referenced.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D
+* as determined by DSYTRF.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
+* inverse could not be computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER K, KP, KSTEP
+ DOUBLE PRECISION AK, AKKP1, AKP1, D, T, TEMP
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT
+ EXTERNAL LSAME, DDOT
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DSWAP, DSYMV, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYTRI', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Check that the diagonal matrix D is nonsingular.
+*
+ IF( UPPER ) THEN
+*
+* Upper triangular storage: examine D from bottom to top
+*
+ DO 10 INFO = N, 1, -1
+ IF( IPIV( INFO ).GT.0 .AND. A( INFO, INFO ).EQ.ZERO )
+ $ RETURN
+ 10 CONTINUE
+ ELSE
+*
+* Lower triangular storage: examine D from top to bottom.
+*
+ DO 20 INFO = 1, N
+ IF( IPIV( INFO ).GT.0 .AND. A( INFO, INFO ).EQ.ZERO )
+ $ RETURN
+ 20 CONTINUE
+ END IF
+ INFO = 0
+*
+ IF( UPPER ) THEN
+*
+* Compute inv(A) from the factorization A = U*D*U'.
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* 1 or 2, depending on the size of the diagonal blocks.
+*
+ K = 1
+ 30 CONTINUE
+*
+* If K > N, exit from loop.
+*
+ IF( K.GT.N )
+ $ GO TO 40
+*
+ IF( IPIV( K ).GT.0 ) THEN
+*
+* 1 x 1 diagonal block
+*
+* Invert the diagonal block.
+*
+ A( K, K ) = ONE / A( K, K )
+*
+* Compute column K of the inverse.
+*
+ IF( K.GT.1 ) THEN
+ CALL DCOPY( K-1, A( 1, K ), 1, WORK, 1 )
+ CALL DSYMV( UPLO, K-1, -ONE, A, LDA, WORK, 1, ZERO,
+ $ A( 1, K ), 1 )
+ A( K, K ) = A( K, K ) - DDOT( K-1, WORK, 1, A( 1, K ),
+ $ 1 )
+ END IF
+ KSTEP = 1
+ ELSE
+*
+* 2 x 2 diagonal block
+*
+* Invert the diagonal block.
+*
+ T = ABS( A( K, K+1 ) )
+ AK = A( K, K ) / T
+ AKP1 = A( K+1, K+1 ) / T
+ AKKP1 = A( K, K+1 ) / T
+ D = T*( AK*AKP1-ONE )
+ A( K, K ) = AKP1 / D
+ A( K+1, K+1 ) = AK / D
+ A( K, K+1 ) = -AKKP1 / D
+*
+* Compute columns K and K+1 of the inverse.
+*
+ IF( K.GT.1 ) THEN
+ CALL DCOPY( K-1, A( 1, K ), 1, WORK, 1 )
+ CALL DSYMV( UPLO, K-1, -ONE, A, LDA, WORK, 1, ZERO,
+ $ A( 1, K ), 1 )
+ A( K, K ) = A( K, K ) - DDOT( K-1, WORK, 1, A( 1, K ),
+ $ 1 )
+ A( K, K+1 ) = A( K, K+1 ) -
+ $ DDOT( K-1, A( 1, K ), 1, A( 1, K+1 ), 1 )
+ CALL DCOPY( K-1, A( 1, K+1 ), 1, WORK, 1 )
+ CALL DSYMV( UPLO, K-1, -ONE, A, LDA, WORK, 1, ZERO,
+ $ A( 1, K+1 ), 1 )
+ A( K+1, K+1 ) = A( K+1, K+1 ) -
+ $ DDOT( K-1, WORK, 1, A( 1, K+1 ), 1 )
+ END IF
+ KSTEP = 2
+ END IF
+*
+ KP = ABS( IPIV( K ) )
+ IF( KP.NE.K ) THEN
+*
+* Interchange rows and columns K and KP in the leading
+* submatrix A(1:k+1,1:k+1)
+*
+ CALL DSWAP( KP-1, A( 1, K ), 1, A( 1, KP ), 1 )
+ CALL DSWAP( K-KP-1, A( KP+1, K ), 1, A( KP, KP+1 ), LDA )
+ TEMP = A( K, K )
+ A( K, K ) = A( KP, KP )
+ A( KP, KP ) = TEMP
+ IF( KSTEP.EQ.2 ) THEN
+ TEMP = A( K, K+1 )
+ A( K, K+1 ) = A( KP, K+1 )
+ A( KP, K+1 ) = TEMP
+ END IF
+ END IF
+*
+ K = K + KSTEP
+ GO TO 30
+ 40 CONTINUE
+*
+ ELSE
+*
+* Compute inv(A) from the factorization A = L*D*L'.
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* 1 or 2, depending on the size of the diagonal blocks.
+*
+ K = N
+ 50 CONTINUE
+*
+* If K < 1, exit from loop.
+*
+ IF( K.LT.1 )
+ $ GO TO 60
+*
+ IF( IPIV( K ).GT.0 ) THEN
+*
+* 1 x 1 diagonal block
+*
+* Invert the diagonal block.
+*
+ A( K, K ) = ONE / A( K, K )
+*
+* Compute column K of the inverse.
+*
+ IF( K.LT.N ) THEN
+ CALL DCOPY( N-K, A( K+1, K ), 1, WORK, 1 )
+ CALL DSYMV( UPLO, N-K, -ONE, A( K+1, K+1 ), LDA, WORK, 1,
+ $ ZERO, A( K+1, K ), 1 )
+ A( K, K ) = A( K, K ) - DDOT( N-K, WORK, 1, A( K+1, K ),
+ $ 1 )
+ END IF
+ KSTEP = 1
+ ELSE
+*
+* 2 x 2 diagonal block
+*
+* Invert the diagonal block.
+*
+ T = ABS( A( K, K-1 ) )
+ AK = A( K-1, K-1 ) / T
+ AKP1 = A( K, K ) / T
+ AKKP1 = A( K, K-1 ) / T
+ D = T*( AK*AKP1-ONE )
+ A( K-1, K-1 ) = AKP1 / D
+ A( K, K ) = AK / D
+ A( K, K-1 ) = -AKKP1 / D
+*
+* Compute columns K-1 and K of the inverse.
+*
+ IF( K.LT.N ) THEN
+ CALL DCOPY( N-K, A( K+1, K ), 1, WORK, 1 )
+ CALL DSYMV( UPLO, N-K, -ONE, A( K+1, K+1 ), LDA, WORK, 1,
+ $ ZERO, A( K+1, K ), 1 )
+ A( K, K ) = A( K, K ) - DDOT( N-K, WORK, 1, A( K+1, K ),
+ $ 1 )
+ A( K, K-1 ) = A( K, K-1 ) -
+ $ DDOT( N-K, A( K+1, K ), 1, A( K+1, K-1 ),
+ $ 1 )
+ CALL DCOPY( N-K, A( K+1, K-1 ), 1, WORK, 1 )
+ CALL DSYMV( UPLO, N-K, -ONE, A( K+1, K+1 ), LDA, WORK, 1,
+ $ ZERO, A( K+1, K-1 ), 1 )
+ A( K-1, K-1 ) = A( K-1, K-1 ) -
+ $ DDOT( N-K, WORK, 1, A( K+1, K-1 ), 1 )
+ END IF
+ KSTEP = 2
+ END IF
+*
+ KP = ABS( IPIV( K ) )
+ IF( KP.NE.K ) THEN
+*
+* Interchange rows and columns K and KP in the trailing
+* submatrix A(k-1:n,k-1:n)
+*
+ IF( KP.LT.N )
+ $ CALL DSWAP( N-KP, A( KP+1, K ), 1, A( KP+1, KP ), 1 )
+ CALL DSWAP( KP-K-1, A( K+1, K ), 1, A( KP, K+1 ), LDA )
+ TEMP = A( K, K )
+ A( K, K ) = A( KP, KP )
+ A( KP, KP ) = TEMP
+ IF( KSTEP.EQ.2 ) THEN
+ TEMP = A( K, K-1 )
+ A( K, K-1 ) = A( KP, K-1 )
+ A( KP, K-1 ) = TEMP
+ END IF
+ END IF
+*
+ K = K - KSTEP
+ GO TO 50
+ 60 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DSYTRI
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dsytrs.f b/2.3-1/src/fortran/lapack/dsytrs.f
new file mode 100644
index 00000000..163ed5b9
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dsytrs.f
@@ -0,0 +1,369 @@
+ SUBROUTINE DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DSYTRS solves a system of linear equations A*X = B with a real
+* symmetric matrix A using the factorization A = U*D*U**T or
+* A = L*D*L**T computed by DSYTRF.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the details of the factorization are stored
+* as an upper or lower triangular matrix.
+* = 'U': Upper triangular, form is A = U*D*U**T;
+* = 'L': Lower triangular, form is A = L*D*L**T.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The block diagonal matrix D and the multipliers used to
+* obtain the factor U or L as computed by DSYTRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* Details of the interchanges and the block structure of D
+* as determined by DSYTRF.
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the right hand side matrix B.
+* On exit, the solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J, K, KP
+ DOUBLE PRECISION AK, AKM1, AKM1K, BK, BKM1, DENOM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DGER, DSCAL, DSWAP, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DSYTRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. NRHS.EQ.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Solve A*X = B, where A = U*D*U'.
+*
+* First solve U*D*X = B, overwriting B with X.
+*
+* K is the main loop index, decreasing from N to 1 in steps of
+* 1 or 2, depending on the size of the diagonal blocks.
+*
+ K = N
+ 10 CONTINUE
+*
+* If K < 1, exit from loop.
+*
+ IF( K.LT.1 )
+ $ GO TO 30
+*
+ IF( IPIV( K ).GT.0 ) THEN
+*
+* 1 x 1 diagonal block
+*
+* Interchange rows K and IPIV(K).
+*
+ KP = IPIV( K )
+ IF( KP.NE.K )
+ $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
+*
+* Multiply by inv(U(K)), where U(K) is the transformation
+* stored in column K of A.
+*
+ CALL DGER( K-1, NRHS, -ONE, A( 1, K ), 1, B( K, 1 ), LDB,
+ $ B( 1, 1 ), LDB )
+*
+* Multiply by the inverse of the diagonal block.
+*
+ CALL DSCAL( NRHS, ONE / A( K, K ), B( K, 1 ), LDB )
+ K = K - 1
+ ELSE
+*
+* 2 x 2 diagonal block
+*
+* Interchange rows K-1 and -IPIV(K).
+*
+ KP = -IPIV( K )
+ IF( KP.NE.K-1 )
+ $ CALL DSWAP( NRHS, B( K-1, 1 ), LDB, B( KP, 1 ), LDB )
+*
+* Multiply by inv(U(K)), where U(K) is the transformation
+* stored in columns K-1 and K of A.
+*
+ CALL DGER( K-2, NRHS, -ONE, A( 1, K ), 1, B( K, 1 ), LDB,
+ $ B( 1, 1 ), LDB )
+ CALL DGER( K-2, NRHS, -ONE, A( 1, K-1 ), 1, B( K-1, 1 ),
+ $ LDB, B( 1, 1 ), LDB )
+*
+* Multiply by the inverse of the diagonal block.
+*
+ AKM1K = A( K-1, K )
+ AKM1 = A( K-1, K-1 ) / AKM1K
+ AK = A( K, K ) / AKM1K
+ DENOM = AKM1*AK - ONE
+ DO 20 J = 1, NRHS
+ BKM1 = B( K-1, J ) / AKM1K
+ BK = B( K, J ) / AKM1K
+ B( K-1, J ) = ( AK*BKM1-BK ) / DENOM
+ B( K, J ) = ( AKM1*BK-BKM1 ) / DENOM
+ 20 CONTINUE
+ K = K - 2
+ END IF
+*
+ GO TO 10
+ 30 CONTINUE
+*
+* Next solve U'*X = B, overwriting B with X.
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* 1 or 2, depending on the size of the diagonal blocks.
+*
+ K = 1
+ 40 CONTINUE
+*
+* If K > N, exit from loop.
+*
+ IF( K.GT.N )
+ $ GO TO 50
+*
+ IF( IPIV( K ).GT.0 ) THEN
+*
+* 1 x 1 diagonal block
+*
+* Multiply by inv(U'(K)), where U(K) is the transformation
+* stored in column K of A.
+*
+ CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ),
+ $ 1, ONE, B( K, 1 ), LDB )
+*
+* Interchange rows K and IPIV(K).
+*
+ KP = IPIV( K )
+ IF( KP.NE.K )
+ $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
+ K = K + 1
+ ELSE
+*
+* 2 x 2 diagonal block
+*
+* Multiply by inv(U'(K+1)), where U(K+1) is the transformation
+* stored in columns K and K+1 of A.
+*
+ CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ),
+ $ 1, ONE, B( K, 1 ), LDB )
+ CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB,
+ $ A( 1, K+1 ), 1, ONE, B( K+1, 1 ), LDB )
+*
+* Interchange rows K and -IPIV(K).
+*
+ KP = -IPIV( K )
+ IF( KP.NE.K )
+ $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
+ K = K + 2
+ END IF
+*
+ GO TO 40
+ 50 CONTINUE
+*
+ ELSE
+*
+* Solve A*X = B, where A = L*D*L'.
+*
+* First solve L*D*X = B, overwriting B with X.
+*
+* K is the main loop index, increasing from 1 to N in steps of
+* 1 or 2, depending on the size of the diagonal blocks.
+*
+ K = 1
+ 60 CONTINUE
+*
+* If K > N, exit from loop.
+*
+ IF( K.GT.N )
+ $ GO TO 80
+*
+ IF( IPIV( K ).GT.0 ) THEN
+*
+* 1 x 1 diagonal block
+*
+* Interchange rows K and IPIV(K).
+*
+ KP = IPIV( K )
+ IF( KP.NE.K )
+ $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
+*
+* Multiply by inv(L(K)), where L(K) is the transformation
+* stored in column K of A.
+*
+ IF( K.LT.N )
+ $ CALL DGER( N-K, NRHS, -ONE, A( K+1, K ), 1, B( K, 1 ),
+ $ LDB, B( K+1, 1 ), LDB )
+*
+* Multiply by the inverse of the diagonal block.
+*
+ CALL DSCAL( NRHS, ONE / A( K, K ), B( K, 1 ), LDB )
+ K = K + 1
+ ELSE
+*
+* 2 x 2 diagonal block
+*
+* Interchange rows K+1 and -IPIV(K).
+*
+ KP = -IPIV( K )
+ IF( KP.NE.K+1 )
+ $ CALL DSWAP( NRHS, B( K+1, 1 ), LDB, B( KP, 1 ), LDB )
+*
+* Multiply by inv(L(K)), where L(K) is the transformation
+* stored in columns K and K+1 of A.
+*
+ IF( K.LT.N-1 ) THEN
+ CALL DGER( N-K-1, NRHS, -ONE, A( K+2, K ), 1, B( K, 1 ),
+ $ LDB, B( K+2, 1 ), LDB )
+ CALL DGER( N-K-1, NRHS, -ONE, A( K+2, K+1 ), 1,
+ $ B( K+1, 1 ), LDB, B( K+2, 1 ), LDB )
+ END IF
+*
+* Multiply by the inverse of the diagonal block.
+*
+ AKM1K = A( K+1, K )
+ AKM1 = A( K, K ) / AKM1K
+ AK = A( K+1, K+1 ) / AKM1K
+ DENOM = AKM1*AK - ONE
+ DO 70 J = 1, NRHS
+ BKM1 = B( K, J ) / AKM1K
+ BK = B( K+1, J ) / AKM1K
+ B( K, J ) = ( AK*BKM1-BK ) / DENOM
+ B( K+1, J ) = ( AKM1*BK-BKM1 ) / DENOM
+ 70 CONTINUE
+ K = K + 2
+ END IF
+*
+ GO TO 60
+ 80 CONTINUE
+*
+* Next solve L'*X = B, overwriting B with X.
+*
+* K is the main loop index, decreasing from N to 1 in steps of
+* 1 or 2, depending on the size of the diagonal blocks.
+*
+ K = N
+ 90 CONTINUE
+*
+* If K < 1, exit from loop.
+*
+ IF( K.LT.1 )
+ $ GO TO 100
+*
+ IF( IPIV( K ).GT.0 ) THEN
+*
+* 1 x 1 diagonal block
+*
+* Multiply by inv(L'(K)), where L(K) is the transformation
+* stored in column K of A.
+*
+ IF( K.LT.N )
+ $ CALL DGEMV( 'Transpose', N-K, NRHS, -ONE, B( K+1, 1 ),
+ $ LDB, A( K+1, K ), 1, ONE, B( K, 1 ), LDB )
+*
+* Interchange rows K and IPIV(K).
+*
+ KP = IPIV( K )
+ IF( KP.NE.K )
+ $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
+ K = K - 1
+ ELSE
+*
+* 2 x 2 diagonal block
+*
+* Multiply by inv(L'(K-1)), where L(K-1) is the transformation
+* stored in columns K-1 and K of A.
+*
+ IF( K.LT.N ) THEN
+ CALL DGEMV( 'Transpose', N-K, NRHS, -ONE, B( K+1, 1 ),
+ $ LDB, A( K+1, K ), 1, ONE, B( K, 1 ), LDB )
+ CALL DGEMV( 'Transpose', N-K, NRHS, -ONE, B( K+1, 1 ),
+ $ LDB, A( K+1, K-1 ), 1, ONE, B( K-1, 1 ),
+ $ LDB )
+ END IF
+*
+* Interchange rows K and -IPIV(K).
+*
+ KP = -IPIV( K )
+ IF( KP.NE.K )
+ $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
+ K = K - 2
+ END IF
+*
+ GO TO 90
+ 100 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DSYTRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtgevc.f b/2.3-1/src/fortran/lapack/dtgevc.f
new file mode 100644
index 00000000..091c3f65
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtgevc.f
@@ -0,0 +1,1147 @@
+ SUBROUTINE DTGEVC( SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL,
+ $ LDVL, VR, LDVR, MM, M, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER HOWMNY, SIDE
+ INTEGER INFO, LDP, LDS, LDVL, LDVR, M, MM, N
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ DOUBLE PRECISION P( LDP, * ), S( LDS, * ), VL( LDVL, * ),
+ $ VR( LDVR, * ), WORK( * )
+* ..
+*
+*
+* Purpose
+* =======
+*
+* DTGEVC computes some or all of the right and/or left eigenvectors of
+* a pair of real matrices (S,P), where S is a quasi-triangular matrix
+* and P is upper triangular. Matrix pairs of this type are produced by
+* the generalized Schur factorization of a matrix pair (A,B):
+*
+* A = Q*S*Z**T, B = Q*P*Z**T
+*
+* as computed by DGGHRD + DHGEQZ.
+*
+* The right eigenvector x and the left eigenvector y of (S,P)
+* corresponding to an eigenvalue w are defined by:
+*
+* S*x = w*P*x, (y**H)*S = w*(y**H)*P,
+*
+* where y**H denotes the conjugate tranpose of y.
+* The eigenvalues are not input to this routine, but are computed
+* directly from the diagonal blocks of S and P.
+*
+* This routine returns the matrices X and/or Y of right and left
+* eigenvectors of (S,P), or the products Z*X and/or Q*Y,
+* where Z and Q are input matrices.
+* If Q and Z are the orthogonal factors from the generalized Schur
+* factorization of a matrix pair (A,B), then Z*X and Q*Y
+* are the matrices of right and left eigenvectors of (A,B).
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'R': compute right eigenvectors only;
+* = 'L': compute left eigenvectors only;
+* = 'B': compute both right and left eigenvectors.
+*
+* HOWMNY (input) CHARACTER*1
+* = 'A': compute all right and/or left eigenvectors;
+* = 'B': compute all right and/or left eigenvectors,
+* backtransformed by the matrices in VR and/or VL;
+* = 'S': compute selected right and/or left eigenvectors,
+* specified by the logical array SELECT.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* If HOWMNY='S', SELECT specifies the eigenvectors to be
+* computed. If w(j) is a real eigenvalue, the corresponding
+* real eigenvector is computed if SELECT(j) is .TRUE..
+* If w(j) and w(j+1) are the real and imaginary parts of a
+* complex eigenvalue, the corresponding complex eigenvector
+* is computed if either SELECT(j) or SELECT(j+1) is .TRUE.,
+* and on exit SELECT(j) is set to .TRUE. and SELECT(j+1) is
+* set to .FALSE..
+* Not referenced if HOWMNY = 'A' or 'B'.
+*
+* N (input) INTEGER
+* The order of the matrices S and P. N >= 0.
+*
+* S (input) DOUBLE PRECISION array, dimension (LDS,N)
+* The upper quasi-triangular matrix S from a generalized Schur
+* factorization, as computed by DHGEQZ.
+*
+* LDS (input) INTEGER
+* The leading dimension of array S. LDS >= max(1,N).
+*
+* P (input) DOUBLE PRECISION array, dimension (LDP,N)
+* The upper triangular matrix P from a generalized Schur
+* factorization, as computed by DHGEQZ.
+* 2-by-2 diagonal blocks of P corresponding to 2-by-2 blocks
+* of S must be in positive diagonal form.
+*
+* LDP (input) INTEGER
+* The leading dimension of array P. LDP >= max(1,N).
+*
+* VL (input/output) DOUBLE PRECISION array, dimension (LDVL,MM)
+* On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must
+* contain an N-by-N matrix Q (usually the orthogonal matrix Q
+* of left Schur vectors returned by DHGEQZ).
+* On exit, if SIDE = 'L' or 'B', VL contains:
+* if HOWMNY = 'A', the matrix Y of left eigenvectors of (S,P);
+* if HOWMNY = 'B', the matrix Q*Y;
+* if HOWMNY = 'S', the left eigenvectors of (S,P) specified by
+* SELECT, stored consecutively in the columns of
+* VL, in the same order as their eigenvalues.
+*
+* A complex eigenvector corresponding to a complex eigenvalue
+* is stored in two consecutive columns, the first holding the
+* real part, and the second the imaginary part.
+*
+* Not referenced if SIDE = 'R'.
+*
+* LDVL (input) INTEGER
+* The leading dimension of array VL. LDVL >= 1, and if
+* SIDE = 'L' or 'B', LDVL >= N.
+*
+* VR (input/output) DOUBLE PRECISION array, dimension (LDVR,MM)
+* On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must
+* contain an N-by-N matrix Z (usually the orthogonal matrix Z
+* of right Schur vectors returned by DHGEQZ).
+*
+* On exit, if SIDE = 'R' or 'B', VR contains:
+* if HOWMNY = 'A', the matrix X of right eigenvectors of (S,P);
+* if HOWMNY = 'B' or 'b', the matrix Z*X;
+* if HOWMNY = 'S' or 's', the right eigenvectors of (S,P)
+* specified by SELECT, stored consecutively in the
+* columns of VR, in the same order as their
+* eigenvalues.
+*
+* A complex eigenvector corresponding to a complex eigenvalue
+* is stored in two consecutive columns, the first holding the
+* real part and the second the imaginary part.
+*
+* Not referenced if SIDE = 'L'.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the array VR. LDVR >= 1, and if
+* SIDE = 'R' or 'B', LDVR >= N.
+*
+* MM (input) INTEGER
+* The number of columns in the arrays VL and/or VR. MM >= M.
+*
+* M (output) INTEGER
+* The number of columns in the arrays VL and/or VR actually
+* used to store the eigenvectors. If HOWMNY = 'A' or 'B', M
+* is set to N. Each selected real eigenvector occupies one
+* column and each selected complex eigenvector occupies two
+* columns.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (6*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: the 2-by-2 block (INFO:INFO+1) does not have a complex
+* eigenvalue.
+*
+* Further Details
+* ===============
+*
+* Allocation of workspace:
+* ---------- -- ---------
+*
+* WORK( j ) = 1-norm of j-th column of A, above the diagonal
+* WORK( N+j ) = 1-norm of j-th column of B, above the diagonal
+* WORK( 2*N+1:3*N ) = real part of eigenvector
+* WORK( 3*N+1:4*N ) = imaginary part of eigenvector
+* WORK( 4*N+1:5*N ) = real part of back-transformed eigenvector
+* WORK( 5*N+1:6*N ) = imaginary part of back-transformed eigenvector
+*
+* Rowwise vs. columnwise solution methods:
+* ------- -- ---------- -------- -------
+*
+* Finding a generalized eigenvector consists basically of solving the
+* singular triangular system
+*
+* (A - w B) x = 0 (for right) or: (A - w B)**H y = 0 (for left)
+*
+* Consider finding the i-th right eigenvector (assume all eigenvalues
+* are real). The equation to be solved is:
+* n i
+* 0 = sum C(j,k) v(k) = sum C(j,k) v(k) for j = i,. . .,1
+* k=j k=j
+*
+* where C = (A - w B) (The components v(i+1:n) are 0.)
+*
+* The "rowwise" method is:
+*
+* (1) v(i) := 1
+* for j = i-1,. . .,1:
+* i
+* (2) compute s = - sum C(j,k) v(k) and
+* k=j+1
+*
+* (3) v(j) := s / C(j,j)
+*
+* Step 2 is sometimes called the "dot product" step, since it is an
+* inner product between the j-th row and the portion of the eigenvector
+* that has been computed so far.
+*
+* The "columnwise" method consists basically in doing the sums
+* for all the rows in parallel. As each v(j) is computed, the
+* contribution of v(j) times the j-th column of C is added to the
+* partial sums. Since FORTRAN arrays are stored columnwise, this has
+* the advantage that at each step, the elements of C that are accessed
+* are adjacent to one another, whereas with the rowwise method, the
+* elements accessed at a step are spaced LDS (and LDP) words apart.
+*
+* When finding left eigenvectors, the matrix in question is the
+* transpose of the one in storage, so the rowwise method then
+* actually accesses columns of A and B at each step, and so is the
+* preferred method.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, SAFETY
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0,
+ $ SAFETY = 1.0D+2 )
+* ..
+* .. Local Scalars ..
+ LOGICAL COMPL, COMPR, IL2BY2, ILABAD, ILALL, ILBACK,
+ $ ILBBAD, ILCOMP, ILCPLX, LSA, LSB
+ INTEGER I, IBEG, IEIG, IEND, IHWMNY, IINFO, IM, ISIDE,
+ $ J, JA, JC, JE, JR, JW, NA, NW
+ DOUBLE PRECISION ACOEF, ACOEFA, ANORM, ASCALE, BCOEFA, BCOEFI,
+ $ BCOEFR, BIG, BIGNUM, BNORM, BSCALE, CIM2A,
+ $ CIM2B, CIMAGA, CIMAGB, CRE2A, CRE2B, CREALA,
+ $ CREALB, DMIN, SAFMIN, SALFAR, SBETA, SCALE,
+ $ SMALL, TEMP, TEMP2, TEMP2I, TEMP2R, ULP, XMAX,
+ $ XSCALE
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION BDIAG( 2 ), SUM( 2, 2 ), SUMS( 2, 2 ),
+ $ SUMP( 2, 2 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMV, DLABAD, DLACPY, DLAG2, DLALN2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Decode and Test the input parameters
+*
+ IF( LSAME( HOWMNY, 'A' ) ) THEN
+ IHWMNY = 1
+ ILALL = .TRUE.
+ ILBACK = .FALSE.
+ ELSE IF( LSAME( HOWMNY, 'S' ) ) THEN
+ IHWMNY = 2
+ ILALL = .FALSE.
+ ILBACK = .FALSE.
+ ELSE IF( LSAME( HOWMNY, 'B' ) ) THEN
+ IHWMNY = 3
+ ILALL = .TRUE.
+ ILBACK = .TRUE.
+ ELSE
+ IHWMNY = -1
+ ILALL = .TRUE.
+ END IF
+*
+ IF( LSAME( SIDE, 'R' ) ) THEN
+ ISIDE = 1
+ COMPL = .FALSE.
+ COMPR = .TRUE.
+ ELSE IF( LSAME( SIDE, 'L' ) ) THEN
+ ISIDE = 2
+ COMPL = .TRUE.
+ COMPR = .FALSE.
+ ELSE IF( LSAME( SIDE, 'B' ) ) THEN
+ ISIDE = 3
+ COMPL = .TRUE.
+ COMPR = .TRUE.
+ ELSE
+ ISIDE = -1
+ END IF
+*
+ INFO = 0
+ IF( ISIDE.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( IHWMNY.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDS.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDP.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGEVC', -INFO )
+ RETURN
+ END IF
+*
+* Count the number of eigenvectors to be computed
+*
+ IF( .NOT.ILALL ) THEN
+ IM = 0
+ ILCPLX = .FALSE.
+ DO 10 J = 1, N
+ IF( ILCPLX ) THEN
+ ILCPLX = .FALSE.
+ GO TO 10
+ END IF
+ IF( J.LT.N ) THEN
+ IF( S( J+1, J ).NE.ZERO )
+ $ ILCPLX = .TRUE.
+ END IF
+ IF( ILCPLX ) THEN
+ IF( SELECT( J ) .OR. SELECT( J+1 ) )
+ $ IM = IM + 2
+ ELSE
+ IF( SELECT( J ) )
+ $ IM = IM + 1
+ END IF
+ 10 CONTINUE
+ ELSE
+ IM = N
+ END IF
+*
+* Check 2-by-2 diagonal blocks of A, B
+*
+ ILABAD = .FALSE.
+ ILBBAD = .FALSE.
+ DO 20 J = 1, N - 1
+ IF( S( J+1, J ).NE.ZERO ) THEN
+ IF( P( J, J ).EQ.ZERO .OR. P( J+1, J+1 ).EQ.ZERO .OR.
+ $ P( J, J+1 ).NE.ZERO )ILBBAD = .TRUE.
+ IF( J.LT.N-1 ) THEN
+ IF( S( J+2, J+1 ).NE.ZERO )
+ $ ILABAD = .TRUE.
+ END IF
+ END IF
+ 20 CONTINUE
+*
+ IF( ILABAD ) THEN
+ INFO = -5
+ ELSE IF( ILBBAD ) THEN
+ INFO = -7
+ ELSE IF( COMPL .AND. LDVL.LT.N .OR. LDVL.LT.1 ) THEN
+ INFO = -10
+ ELSE IF( COMPR .AND. LDVR.LT.N .OR. LDVR.LT.1 ) THEN
+ INFO = -12
+ ELSE IF( MM.LT.IM ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGEVC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ M = IM
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Machine Constants
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ BIG = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, BIG )
+ ULP = DLAMCH( 'Epsilon' )*DLAMCH( 'Base' )
+ SMALL = SAFMIN*N / ULP
+ BIG = ONE / SMALL
+ BIGNUM = ONE / ( SAFMIN*N )
+*
+* Compute the 1-norm of each column of the strictly upper triangular
+* part (i.e., excluding all elements belonging to the diagonal
+* blocks) of A and B to check for possible overflow in the
+* triangular solver.
+*
+ ANORM = ABS( S( 1, 1 ) )
+ IF( N.GT.1 )
+ $ ANORM = ANORM + ABS( S( 2, 1 ) )
+ BNORM = ABS( P( 1, 1 ) )
+ WORK( 1 ) = ZERO
+ WORK( N+1 ) = ZERO
+*
+ DO 50 J = 2, N
+ TEMP = ZERO
+ TEMP2 = ZERO
+ IF( S( J, J-1 ).EQ.ZERO ) THEN
+ IEND = J - 1
+ ELSE
+ IEND = J - 2
+ END IF
+ DO 30 I = 1, IEND
+ TEMP = TEMP + ABS( S( I, J ) )
+ TEMP2 = TEMP2 + ABS( P( I, J ) )
+ 30 CONTINUE
+ WORK( J ) = TEMP
+ WORK( N+J ) = TEMP2
+ DO 40 I = IEND + 1, MIN( J+1, N )
+ TEMP = TEMP + ABS( S( I, J ) )
+ TEMP2 = TEMP2 + ABS( P( I, J ) )
+ 40 CONTINUE
+ ANORM = MAX( ANORM, TEMP )
+ BNORM = MAX( BNORM, TEMP2 )
+ 50 CONTINUE
+*
+ ASCALE = ONE / MAX( ANORM, SAFMIN )
+ BSCALE = ONE / MAX( BNORM, SAFMIN )
+*
+* Left eigenvectors
+*
+ IF( COMPL ) THEN
+ IEIG = 0
+*
+* Main loop over eigenvalues
+*
+ ILCPLX = .FALSE.
+ DO 220 JE = 1, N
+*
+* Skip this iteration if (a) HOWMNY='S' and SELECT=.FALSE., or
+* (b) this would be the second of a complex pair.
+* Check for complex eigenvalue, so as to be sure of which
+* entry(-ies) of SELECT to look at.
+*
+ IF( ILCPLX ) THEN
+ ILCPLX = .FALSE.
+ GO TO 220
+ END IF
+ NW = 1
+ IF( JE.LT.N ) THEN
+ IF( S( JE+1, JE ).NE.ZERO ) THEN
+ ILCPLX = .TRUE.
+ NW = 2
+ END IF
+ END IF
+ IF( ILALL ) THEN
+ ILCOMP = .TRUE.
+ ELSE IF( ILCPLX ) THEN
+ ILCOMP = SELECT( JE ) .OR. SELECT( JE+1 )
+ ELSE
+ ILCOMP = SELECT( JE )
+ END IF
+ IF( .NOT.ILCOMP )
+ $ GO TO 220
+*
+* Decide if (a) singular pencil, (b) real eigenvalue, or
+* (c) complex eigenvalue.
+*
+ IF( .NOT.ILCPLX ) THEN
+ IF( ABS( S( JE, JE ) ).LE.SAFMIN .AND.
+ $ ABS( P( JE, JE ) ).LE.SAFMIN ) THEN
+*
+* Singular matrix pencil -- return unit eigenvector
+*
+ IEIG = IEIG + 1
+ DO 60 JR = 1, N
+ VL( JR, IEIG ) = ZERO
+ 60 CONTINUE
+ VL( IEIG, IEIG ) = ONE
+ GO TO 220
+ END IF
+ END IF
+*
+* Clear vector
+*
+ DO 70 JR = 1, NW*N
+ WORK( 2*N+JR ) = ZERO
+ 70 CONTINUE
+* T
+* Compute coefficients in ( a A - b B ) y = 0
+* a is ACOEF
+* b is BCOEFR + i*BCOEFI
+*
+ IF( .NOT.ILCPLX ) THEN
+*
+* Real eigenvalue
+*
+ TEMP = ONE / MAX( ABS( S( JE, JE ) )*ASCALE,
+ $ ABS( P( JE, JE ) )*BSCALE, SAFMIN )
+ SALFAR = ( TEMP*S( JE, JE ) )*ASCALE
+ SBETA = ( TEMP*P( JE, JE ) )*BSCALE
+ ACOEF = SBETA*ASCALE
+ BCOEFR = SALFAR*BSCALE
+ BCOEFI = ZERO
+*
+* Scale to avoid underflow
+*
+ SCALE = ONE
+ LSA = ABS( SBETA ).GE.SAFMIN .AND. ABS( ACOEF ).LT.SMALL
+ LSB = ABS( SALFAR ).GE.SAFMIN .AND. ABS( BCOEFR ).LT.
+ $ SMALL
+ IF( LSA )
+ $ SCALE = ( SMALL / ABS( SBETA ) )*MIN( ANORM, BIG )
+ IF( LSB )
+ $ SCALE = MAX( SCALE, ( SMALL / ABS( SALFAR ) )*
+ $ MIN( BNORM, BIG ) )
+ IF( LSA .OR. LSB ) THEN
+ SCALE = MIN( SCALE, ONE /
+ $ ( SAFMIN*MAX( ONE, ABS( ACOEF ),
+ $ ABS( BCOEFR ) ) ) )
+ IF( LSA ) THEN
+ ACOEF = ASCALE*( SCALE*SBETA )
+ ELSE
+ ACOEF = SCALE*ACOEF
+ END IF
+ IF( LSB ) THEN
+ BCOEFR = BSCALE*( SCALE*SALFAR )
+ ELSE
+ BCOEFR = SCALE*BCOEFR
+ END IF
+ END IF
+ ACOEFA = ABS( ACOEF )
+ BCOEFA = ABS( BCOEFR )
+*
+* First component is 1
+*
+ WORK( 2*N+JE ) = ONE
+ XMAX = ONE
+ ELSE
+*
+* Complex eigenvalue
+*
+ CALL DLAG2( S( JE, JE ), LDS, P( JE, JE ), LDP,
+ $ SAFMIN*SAFETY, ACOEF, TEMP, BCOEFR, TEMP2,
+ $ BCOEFI )
+ BCOEFI = -BCOEFI
+ IF( BCOEFI.EQ.ZERO ) THEN
+ INFO = JE
+ RETURN
+ END IF
+*
+* Scale to avoid over/underflow
+*
+ ACOEFA = ABS( ACOEF )
+ BCOEFA = ABS( BCOEFR ) + ABS( BCOEFI )
+ SCALE = ONE
+ IF( ACOEFA*ULP.LT.SAFMIN .AND. ACOEFA.GE.SAFMIN )
+ $ SCALE = ( SAFMIN / ULP ) / ACOEFA
+ IF( BCOEFA*ULP.LT.SAFMIN .AND. BCOEFA.GE.SAFMIN )
+ $ SCALE = MAX( SCALE, ( SAFMIN / ULP ) / BCOEFA )
+ IF( SAFMIN*ACOEFA.GT.ASCALE )
+ $ SCALE = ASCALE / ( SAFMIN*ACOEFA )
+ IF( SAFMIN*BCOEFA.GT.BSCALE )
+ $ SCALE = MIN( SCALE, BSCALE / ( SAFMIN*BCOEFA ) )
+ IF( SCALE.NE.ONE ) THEN
+ ACOEF = SCALE*ACOEF
+ ACOEFA = ABS( ACOEF )
+ BCOEFR = SCALE*BCOEFR
+ BCOEFI = SCALE*BCOEFI
+ BCOEFA = ABS( BCOEFR ) + ABS( BCOEFI )
+ END IF
+*
+* Compute first two components of eigenvector
+*
+ TEMP = ACOEF*S( JE+1, JE )
+ TEMP2R = ACOEF*S( JE, JE ) - BCOEFR*P( JE, JE )
+ TEMP2I = -BCOEFI*P( JE, JE )
+ IF( ABS( TEMP ).GT.ABS( TEMP2R )+ABS( TEMP2I ) ) THEN
+ WORK( 2*N+JE ) = ONE
+ WORK( 3*N+JE ) = ZERO
+ WORK( 2*N+JE+1 ) = -TEMP2R / TEMP
+ WORK( 3*N+JE+1 ) = -TEMP2I / TEMP
+ ELSE
+ WORK( 2*N+JE+1 ) = ONE
+ WORK( 3*N+JE+1 ) = ZERO
+ TEMP = ACOEF*S( JE, JE+1 )
+ WORK( 2*N+JE ) = ( BCOEFR*P( JE+1, JE+1 )-ACOEF*
+ $ S( JE+1, JE+1 ) ) / TEMP
+ WORK( 3*N+JE ) = BCOEFI*P( JE+1, JE+1 ) / TEMP
+ END IF
+ XMAX = MAX( ABS( WORK( 2*N+JE ) )+ABS( WORK( 3*N+JE ) ),
+ $ ABS( WORK( 2*N+JE+1 ) )+ABS( WORK( 3*N+JE+1 ) ) )
+ END IF
+*
+ DMIN = MAX( ULP*ACOEFA*ANORM, ULP*BCOEFA*BNORM, SAFMIN )
+*
+* T
+* Triangular solve of (a A - b B) y = 0
+*
+* T
+* (rowwise in (a A - b B) , or columnwise in (a A - b B) )
+*
+ IL2BY2 = .FALSE.
+*
+ DO 160 J = JE + NW, N
+ IF( IL2BY2 ) THEN
+ IL2BY2 = .FALSE.
+ GO TO 160
+ END IF
+*
+ NA = 1
+ BDIAG( 1 ) = P( J, J )
+ IF( J.LT.N ) THEN
+ IF( S( J+1, J ).NE.ZERO ) THEN
+ IL2BY2 = .TRUE.
+ BDIAG( 2 ) = P( J+1, J+1 )
+ NA = 2
+ END IF
+ END IF
+*
+* Check whether scaling is necessary for dot products
+*
+ XSCALE = ONE / MAX( ONE, XMAX )
+ TEMP = MAX( WORK( J ), WORK( N+J ),
+ $ ACOEFA*WORK( J )+BCOEFA*WORK( N+J ) )
+ IF( IL2BY2 )
+ $ TEMP = MAX( TEMP, WORK( J+1 ), WORK( N+J+1 ),
+ $ ACOEFA*WORK( J+1 )+BCOEFA*WORK( N+J+1 ) )
+ IF( TEMP.GT.BIGNUM*XSCALE ) THEN
+ DO 90 JW = 0, NW - 1
+ DO 80 JR = JE, J - 1
+ WORK( ( JW+2 )*N+JR ) = XSCALE*
+ $ WORK( ( JW+2 )*N+JR )
+ 80 CONTINUE
+ 90 CONTINUE
+ XMAX = XMAX*XSCALE
+ END IF
+*
+* Compute dot products
+*
+* j-1
+* SUM = sum conjg( a*S(k,j) - b*P(k,j) )*x(k)
+* k=je
+*
+* To reduce the op count, this is done as
+*
+* _ j-1 _ j-1
+* a*conjg( sum S(k,j)*x(k) ) - b*conjg( sum P(k,j)*x(k) )
+* k=je k=je
+*
+* which may cause underflow problems if A or B are close
+* to underflow. (E.g., less than SMALL.)
+*
+*
+* A series of compiler directives to defeat vectorization
+* for the next loop
+*
+*$PL$ CMCHAR=' '
+CDIR$ NEXTSCALAR
+C$DIR SCALAR
+CDIR$ NEXT SCALAR
+CVD$L NOVECTOR
+CDEC$ NOVECTOR
+CVD$ NOVECTOR
+*VDIR NOVECTOR
+*VOCL LOOP,SCALAR
+CIBM PREFER SCALAR
+*$PL$ CMCHAR='*'
+*
+ DO 120 JW = 1, NW
+*
+*$PL$ CMCHAR=' '
+CDIR$ NEXTSCALAR
+C$DIR SCALAR
+CDIR$ NEXT SCALAR
+CVD$L NOVECTOR
+CDEC$ NOVECTOR
+CVD$ NOVECTOR
+*VDIR NOVECTOR
+*VOCL LOOP,SCALAR
+CIBM PREFER SCALAR
+*$PL$ CMCHAR='*'
+*
+ DO 110 JA = 1, NA
+ SUMS( JA, JW ) = ZERO
+ SUMP( JA, JW ) = ZERO
+*
+ DO 100 JR = JE, J - 1
+ SUMS( JA, JW ) = SUMS( JA, JW ) +
+ $ S( JR, J+JA-1 )*
+ $ WORK( ( JW+1 )*N+JR )
+ SUMP( JA, JW ) = SUMP( JA, JW ) +
+ $ P( JR, J+JA-1 )*
+ $ WORK( ( JW+1 )*N+JR )
+ 100 CONTINUE
+ 110 CONTINUE
+ 120 CONTINUE
+*
+*$PL$ CMCHAR=' '
+CDIR$ NEXTSCALAR
+C$DIR SCALAR
+CDIR$ NEXT SCALAR
+CVD$L NOVECTOR
+CDEC$ NOVECTOR
+CVD$ NOVECTOR
+*VDIR NOVECTOR
+*VOCL LOOP,SCALAR
+CIBM PREFER SCALAR
+*$PL$ CMCHAR='*'
+*
+ DO 130 JA = 1, NA
+ IF( ILCPLX ) THEN
+ SUM( JA, 1 ) = -ACOEF*SUMS( JA, 1 ) +
+ $ BCOEFR*SUMP( JA, 1 ) -
+ $ BCOEFI*SUMP( JA, 2 )
+ SUM( JA, 2 ) = -ACOEF*SUMS( JA, 2 ) +
+ $ BCOEFR*SUMP( JA, 2 ) +
+ $ BCOEFI*SUMP( JA, 1 )
+ ELSE
+ SUM( JA, 1 ) = -ACOEF*SUMS( JA, 1 ) +
+ $ BCOEFR*SUMP( JA, 1 )
+ END IF
+ 130 CONTINUE
+*
+* T
+* Solve ( a A - b B ) y = SUM(,)
+* with scaling and perturbation of the denominator
+*
+ CALL DLALN2( .TRUE., NA, NW, DMIN, ACOEF, S( J, J ), LDS,
+ $ BDIAG( 1 ), BDIAG( 2 ), SUM, 2, BCOEFR,
+ $ BCOEFI, WORK( 2*N+J ), N, SCALE, TEMP,
+ $ IINFO )
+ IF( SCALE.LT.ONE ) THEN
+ DO 150 JW = 0, NW - 1
+ DO 140 JR = JE, J - 1
+ WORK( ( JW+2 )*N+JR ) = SCALE*
+ $ WORK( ( JW+2 )*N+JR )
+ 140 CONTINUE
+ 150 CONTINUE
+ XMAX = SCALE*XMAX
+ END IF
+ XMAX = MAX( XMAX, TEMP )
+ 160 CONTINUE
+*
+* Copy eigenvector to VL, back transforming if
+* HOWMNY='B'.
+*
+ IEIG = IEIG + 1
+ IF( ILBACK ) THEN
+ DO 170 JW = 0, NW - 1
+ CALL DGEMV( 'N', N, N+1-JE, ONE, VL( 1, JE ), LDVL,
+ $ WORK( ( JW+2 )*N+JE ), 1, ZERO,
+ $ WORK( ( JW+4 )*N+1 ), 1 )
+ 170 CONTINUE
+ CALL DLACPY( ' ', N, NW, WORK( 4*N+1 ), N, VL( 1, JE ),
+ $ LDVL )
+ IBEG = 1
+ ELSE
+ CALL DLACPY( ' ', N, NW, WORK( 2*N+1 ), N, VL( 1, IEIG ),
+ $ LDVL )
+ IBEG = JE
+ END IF
+*
+* Scale eigenvector
+*
+ XMAX = ZERO
+ IF( ILCPLX ) THEN
+ DO 180 J = IBEG, N
+ XMAX = MAX( XMAX, ABS( VL( J, IEIG ) )+
+ $ ABS( VL( J, IEIG+1 ) ) )
+ 180 CONTINUE
+ ELSE
+ DO 190 J = IBEG, N
+ XMAX = MAX( XMAX, ABS( VL( J, IEIG ) ) )
+ 190 CONTINUE
+ END IF
+*
+ IF( XMAX.GT.SAFMIN ) THEN
+ XSCALE = ONE / XMAX
+*
+ DO 210 JW = 0, NW - 1
+ DO 200 JR = IBEG, N
+ VL( JR, IEIG+JW ) = XSCALE*VL( JR, IEIG+JW )
+ 200 CONTINUE
+ 210 CONTINUE
+ END IF
+ IEIG = IEIG + NW - 1
+*
+ 220 CONTINUE
+ END IF
+*
+* Right eigenvectors
+*
+ IF( COMPR ) THEN
+ IEIG = IM + 1
+*
+* Main loop over eigenvalues
+*
+ ILCPLX = .FALSE.
+ DO 500 JE = N, 1, -1
+*
+* Skip this iteration if (a) HOWMNY='S' and SELECT=.FALSE., or
+* (b) this would be the second of a complex pair.
+* Check for complex eigenvalue, so as to be sure of which
+* entry(-ies) of SELECT to look at -- if complex, SELECT(JE)
+* or SELECT(JE-1).
+* If this is a complex pair, the 2-by-2 diagonal block
+* corresponding to the eigenvalue is in rows/columns JE-1:JE
+*
+ IF( ILCPLX ) THEN
+ ILCPLX = .FALSE.
+ GO TO 500
+ END IF
+ NW = 1
+ IF( JE.GT.1 ) THEN
+ IF( S( JE, JE-1 ).NE.ZERO ) THEN
+ ILCPLX = .TRUE.
+ NW = 2
+ END IF
+ END IF
+ IF( ILALL ) THEN
+ ILCOMP = .TRUE.
+ ELSE IF( ILCPLX ) THEN
+ ILCOMP = SELECT( JE ) .OR. SELECT( JE-1 )
+ ELSE
+ ILCOMP = SELECT( JE )
+ END IF
+ IF( .NOT.ILCOMP )
+ $ GO TO 500
+*
+* Decide if (a) singular pencil, (b) real eigenvalue, or
+* (c) complex eigenvalue.
+*
+ IF( .NOT.ILCPLX ) THEN
+ IF( ABS( S( JE, JE ) ).LE.SAFMIN .AND.
+ $ ABS( P( JE, JE ) ).LE.SAFMIN ) THEN
+*
+* Singular matrix pencil -- unit eigenvector
+*
+ IEIG = IEIG - 1
+ DO 230 JR = 1, N
+ VR( JR, IEIG ) = ZERO
+ 230 CONTINUE
+ VR( IEIG, IEIG ) = ONE
+ GO TO 500
+ END IF
+ END IF
+*
+* Clear vector
+*
+ DO 250 JW = 0, NW - 1
+ DO 240 JR = 1, N
+ WORK( ( JW+2 )*N+JR ) = ZERO
+ 240 CONTINUE
+ 250 CONTINUE
+*
+* Compute coefficients in ( a A - b B ) x = 0
+* a is ACOEF
+* b is BCOEFR + i*BCOEFI
+*
+ IF( .NOT.ILCPLX ) THEN
+*
+* Real eigenvalue
+*
+ TEMP = ONE / MAX( ABS( S( JE, JE ) )*ASCALE,
+ $ ABS( P( JE, JE ) )*BSCALE, SAFMIN )
+ SALFAR = ( TEMP*S( JE, JE ) )*ASCALE
+ SBETA = ( TEMP*P( JE, JE ) )*BSCALE
+ ACOEF = SBETA*ASCALE
+ BCOEFR = SALFAR*BSCALE
+ BCOEFI = ZERO
+*
+* Scale to avoid underflow
+*
+ SCALE = ONE
+ LSA = ABS( SBETA ).GE.SAFMIN .AND. ABS( ACOEF ).LT.SMALL
+ LSB = ABS( SALFAR ).GE.SAFMIN .AND. ABS( BCOEFR ).LT.
+ $ SMALL
+ IF( LSA )
+ $ SCALE = ( SMALL / ABS( SBETA ) )*MIN( ANORM, BIG )
+ IF( LSB )
+ $ SCALE = MAX( SCALE, ( SMALL / ABS( SALFAR ) )*
+ $ MIN( BNORM, BIG ) )
+ IF( LSA .OR. LSB ) THEN
+ SCALE = MIN( SCALE, ONE /
+ $ ( SAFMIN*MAX( ONE, ABS( ACOEF ),
+ $ ABS( BCOEFR ) ) ) )
+ IF( LSA ) THEN
+ ACOEF = ASCALE*( SCALE*SBETA )
+ ELSE
+ ACOEF = SCALE*ACOEF
+ END IF
+ IF( LSB ) THEN
+ BCOEFR = BSCALE*( SCALE*SALFAR )
+ ELSE
+ BCOEFR = SCALE*BCOEFR
+ END IF
+ END IF
+ ACOEFA = ABS( ACOEF )
+ BCOEFA = ABS( BCOEFR )
+*
+* First component is 1
+*
+ WORK( 2*N+JE ) = ONE
+ XMAX = ONE
+*
+* Compute contribution from column JE of A and B to sum
+* (See "Further Details", above.)
+*
+ DO 260 JR = 1, JE - 1
+ WORK( 2*N+JR ) = BCOEFR*P( JR, JE ) -
+ $ ACOEF*S( JR, JE )
+ 260 CONTINUE
+ ELSE
+*
+* Complex eigenvalue
+*
+ CALL DLAG2( S( JE-1, JE-1 ), LDS, P( JE-1, JE-1 ), LDP,
+ $ SAFMIN*SAFETY, ACOEF, TEMP, BCOEFR, TEMP2,
+ $ BCOEFI )
+ IF( BCOEFI.EQ.ZERO ) THEN
+ INFO = JE - 1
+ RETURN
+ END IF
+*
+* Scale to avoid over/underflow
+*
+ ACOEFA = ABS( ACOEF )
+ BCOEFA = ABS( BCOEFR ) + ABS( BCOEFI )
+ SCALE = ONE
+ IF( ACOEFA*ULP.LT.SAFMIN .AND. ACOEFA.GE.SAFMIN )
+ $ SCALE = ( SAFMIN / ULP ) / ACOEFA
+ IF( BCOEFA*ULP.LT.SAFMIN .AND. BCOEFA.GE.SAFMIN )
+ $ SCALE = MAX( SCALE, ( SAFMIN / ULP ) / BCOEFA )
+ IF( SAFMIN*ACOEFA.GT.ASCALE )
+ $ SCALE = ASCALE / ( SAFMIN*ACOEFA )
+ IF( SAFMIN*BCOEFA.GT.BSCALE )
+ $ SCALE = MIN( SCALE, BSCALE / ( SAFMIN*BCOEFA ) )
+ IF( SCALE.NE.ONE ) THEN
+ ACOEF = SCALE*ACOEF
+ ACOEFA = ABS( ACOEF )
+ BCOEFR = SCALE*BCOEFR
+ BCOEFI = SCALE*BCOEFI
+ BCOEFA = ABS( BCOEFR ) + ABS( BCOEFI )
+ END IF
+*
+* Compute first two components of eigenvector
+* and contribution to sums
+*
+ TEMP = ACOEF*S( JE, JE-1 )
+ TEMP2R = ACOEF*S( JE, JE ) - BCOEFR*P( JE, JE )
+ TEMP2I = -BCOEFI*P( JE, JE )
+ IF( ABS( TEMP ).GE.ABS( TEMP2R )+ABS( TEMP2I ) ) THEN
+ WORK( 2*N+JE ) = ONE
+ WORK( 3*N+JE ) = ZERO
+ WORK( 2*N+JE-1 ) = -TEMP2R / TEMP
+ WORK( 3*N+JE-1 ) = -TEMP2I / TEMP
+ ELSE
+ WORK( 2*N+JE-1 ) = ONE
+ WORK( 3*N+JE-1 ) = ZERO
+ TEMP = ACOEF*S( JE-1, JE )
+ WORK( 2*N+JE ) = ( BCOEFR*P( JE-1, JE-1 )-ACOEF*
+ $ S( JE-1, JE-1 ) ) / TEMP
+ WORK( 3*N+JE ) = BCOEFI*P( JE-1, JE-1 ) / TEMP
+ END IF
+*
+ XMAX = MAX( ABS( WORK( 2*N+JE ) )+ABS( WORK( 3*N+JE ) ),
+ $ ABS( WORK( 2*N+JE-1 ) )+ABS( WORK( 3*N+JE-1 ) ) )
+*
+* Compute contribution from columns JE and JE-1
+* of A and B to the sums.
+*
+ CREALA = ACOEF*WORK( 2*N+JE-1 )
+ CIMAGA = ACOEF*WORK( 3*N+JE-1 )
+ CREALB = BCOEFR*WORK( 2*N+JE-1 ) -
+ $ BCOEFI*WORK( 3*N+JE-1 )
+ CIMAGB = BCOEFI*WORK( 2*N+JE-1 ) +
+ $ BCOEFR*WORK( 3*N+JE-1 )
+ CRE2A = ACOEF*WORK( 2*N+JE )
+ CIM2A = ACOEF*WORK( 3*N+JE )
+ CRE2B = BCOEFR*WORK( 2*N+JE ) - BCOEFI*WORK( 3*N+JE )
+ CIM2B = BCOEFI*WORK( 2*N+JE ) + BCOEFR*WORK( 3*N+JE )
+ DO 270 JR = 1, JE - 2
+ WORK( 2*N+JR ) = -CREALA*S( JR, JE-1 ) +
+ $ CREALB*P( JR, JE-1 ) -
+ $ CRE2A*S( JR, JE ) + CRE2B*P( JR, JE )
+ WORK( 3*N+JR ) = -CIMAGA*S( JR, JE-1 ) +
+ $ CIMAGB*P( JR, JE-1 ) -
+ $ CIM2A*S( JR, JE ) + CIM2B*P( JR, JE )
+ 270 CONTINUE
+ END IF
+*
+ DMIN = MAX( ULP*ACOEFA*ANORM, ULP*BCOEFA*BNORM, SAFMIN )
+*
+* Columnwise triangular solve of (a A - b B) x = 0
+*
+ IL2BY2 = .FALSE.
+ DO 370 J = JE - NW, 1, -1
+*
+* If a 2-by-2 block, is in position j-1:j, wait until
+* next iteration to process it (when it will be j:j+1)
+*
+ IF( .NOT.IL2BY2 .AND. J.GT.1 ) THEN
+ IF( S( J, J-1 ).NE.ZERO ) THEN
+ IL2BY2 = .TRUE.
+ GO TO 370
+ END IF
+ END IF
+ BDIAG( 1 ) = P( J, J )
+ IF( IL2BY2 ) THEN
+ NA = 2
+ BDIAG( 2 ) = P( J+1, J+1 )
+ ELSE
+ NA = 1
+ END IF
+*
+* Compute x(j) (and x(j+1), if 2-by-2 block)
+*
+ CALL DLALN2( .FALSE., NA, NW, DMIN, ACOEF, S( J, J ),
+ $ LDS, BDIAG( 1 ), BDIAG( 2 ), WORK( 2*N+J ),
+ $ N, BCOEFR, BCOEFI, SUM, 2, SCALE, TEMP,
+ $ IINFO )
+ IF( SCALE.LT.ONE ) THEN
+*
+ DO 290 JW = 0, NW - 1
+ DO 280 JR = 1, JE
+ WORK( ( JW+2 )*N+JR ) = SCALE*
+ $ WORK( ( JW+2 )*N+JR )
+ 280 CONTINUE
+ 290 CONTINUE
+ END IF
+ XMAX = MAX( SCALE*XMAX, TEMP )
+*
+ DO 310 JW = 1, NW
+ DO 300 JA = 1, NA
+ WORK( ( JW+1 )*N+J+JA-1 ) = SUM( JA, JW )
+ 300 CONTINUE
+ 310 CONTINUE
+*
+* w = w + x(j)*(a S(*,j) - b P(*,j) ) with scaling
+*
+ IF( J.GT.1 ) THEN
+*
+* Check whether scaling is necessary for sum.
+*
+ XSCALE = ONE / MAX( ONE, XMAX )
+ TEMP = ACOEFA*WORK( J ) + BCOEFA*WORK( N+J )
+ IF( IL2BY2 )
+ $ TEMP = MAX( TEMP, ACOEFA*WORK( J+1 )+BCOEFA*
+ $ WORK( N+J+1 ) )
+ TEMP = MAX( TEMP, ACOEFA, BCOEFA )
+ IF( TEMP.GT.BIGNUM*XSCALE ) THEN
+*
+ DO 330 JW = 0, NW - 1
+ DO 320 JR = 1, JE
+ WORK( ( JW+2 )*N+JR ) = XSCALE*
+ $ WORK( ( JW+2 )*N+JR )
+ 320 CONTINUE
+ 330 CONTINUE
+ XMAX = XMAX*XSCALE
+ END IF
+*
+* Compute the contributions of the off-diagonals of
+* column j (and j+1, if 2-by-2 block) of A and B to the
+* sums.
+*
+*
+ DO 360 JA = 1, NA
+ IF( ILCPLX ) THEN
+ CREALA = ACOEF*WORK( 2*N+J+JA-1 )
+ CIMAGA = ACOEF*WORK( 3*N+J+JA-1 )
+ CREALB = BCOEFR*WORK( 2*N+J+JA-1 ) -
+ $ BCOEFI*WORK( 3*N+J+JA-1 )
+ CIMAGB = BCOEFI*WORK( 2*N+J+JA-1 ) +
+ $ BCOEFR*WORK( 3*N+J+JA-1 )
+ DO 340 JR = 1, J - 1
+ WORK( 2*N+JR ) = WORK( 2*N+JR ) -
+ $ CREALA*S( JR, J+JA-1 ) +
+ $ CREALB*P( JR, J+JA-1 )
+ WORK( 3*N+JR ) = WORK( 3*N+JR ) -
+ $ CIMAGA*S( JR, J+JA-1 ) +
+ $ CIMAGB*P( JR, J+JA-1 )
+ 340 CONTINUE
+ ELSE
+ CREALA = ACOEF*WORK( 2*N+J+JA-1 )
+ CREALB = BCOEFR*WORK( 2*N+J+JA-1 )
+ DO 350 JR = 1, J - 1
+ WORK( 2*N+JR ) = WORK( 2*N+JR ) -
+ $ CREALA*S( JR, J+JA-1 ) +
+ $ CREALB*P( JR, J+JA-1 )
+ 350 CONTINUE
+ END IF
+ 360 CONTINUE
+ END IF
+*
+ IL2BY2 = .FALSE.
+ 370 CONTINUE
+*
+* Copy eigenvector to VR, back transforming if
+* HOWMNY='B'.
+*
+ IEIG = IEIG - NW
+ IF( ILBACK ) THEN
+*
+ DO 410 JW = 0, NW - 1
+ DO 380 JR = 1, N
+ WORK( ( JW+4 )*N+JR ) = WORK( ( JW+2 )*N+1 )*
+ $ VR( JR, 1 )
+ 380 CONTINUE
+*
+* A series of compiler directives to defeat
+* vectorization for the next loop
+*
+*
+ DO 400 JC = 2, JE
+ DO 390 JR = 1, N
+ WORK( ( JW+4 )*N+JR ) = WORK( ( JW+4 )*N+JR ) +
+ $ WORK( ( JW+2 )*N+JC )*VR( JR, JC )
+ 390 CONTINUE
+ 400 CONTINUE
+ 410 CONTINUE
+*
+ DO 430 JW = 0, NW - 1
+ DO 420 JR = 1, N
+ VR( JR, IEIG+JW ) = WORK( ( JW+4 )*N+JR )
+ 420 CONTINUE
+ 430 CONTINUE
+*
+ IEND = N
+ ELSE
+ DO 450 JW = 0, NW - 1
+ DO 440 JR = 1, N
+ VR( JR, IEIG+JW ) = WORK( ( JW+2 )*N+JR )
+ 440 CONTINUE
+ 450 CONTINUE
+*
+ IEND = JE
+ END IF
+*
+* Scale eigenvector
+*
+ XMAX = ZERO
+ IF( ILCPLX ) THEN
+ DO 460 J = 1, IEND
+ XMAX = MAX( XMAX, ABS( VR( J, IEIG ) )+
+ $ ABS( VR( J, IEIG+1 ) ) )
+ 460 CONTINUE
+ ELSE
+ DO 470 J = 1, IEND
+ XMAX = MAX( XMAX, ABS( VR( J, IEIG ) ) )
+ 470 CONTINUE
+ END IF
+*
+ IF( XMAX.GT.SAFMIN ) THEN
+ XSCALE = ONE / XMAX
+ DO 490 JW = 0, NW - 1
+ DO 480 JR = 1, IEND
+ VR( JR, IEIG+JW ) = XSCALE*VR( JR, IEIG+JW )
+ 480 CONTINUE
+ 490 CONTINUE
+ END IF
+ 500 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DTGEVC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtgex2.f b/2.3-1/src/fortran/lapack/dtgex2.f
new file mode 100644
index 00000000..8351b7fd
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtgex2.f
@@ -0,0 +1,581 @@
+ SUBROUTINE DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, J1, N1, N2, WORK, LWORK, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ, WANTZ
+ INTEGER INFO, J1, LDA, LDB, LDQ, LDZ, LWORK, N, N1, N2
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
+ $ WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTGEX2 swaps adjacent diagonal blocks (A11, B11) and (A22, B22)
+* of size 1-by-1 or 2-by-2 in an upper (quasi) triangular matrix pair
+* (A, B) by an orthogonal equivalence transformation.
+*
+* (A, B) must be in generalized real Schur canonical form (as returned
+* by DGGES), i.e. A is block upper triangular with 1-by-1 and 2-by-2
+* diagonal blocks. B is upper triangular.
+*
+* Optionally, the matrices Q and Z of generalized Schur vectors are
+* updated.
+*
+* Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)'
+* Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
+*
+*
+* Arguments
+* =========
+*
+* WANTQ (input) LOGICAL
+* .TRUE. : update the left transformation matrix Q;
+* .FALSE.: do not update Q.
+*
+* WANTZ (input) LOGICAL
+* .TRUE. : update the right transformation matrix Z;
+* .FALSE.: do not update Z.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION arrays, dimensions (LDA,N)
+* On entry, the matrix A in the pair (A, B).
+* On exit, the updated matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION arrays, dimensions (LDB,N)
+* On entry, the matrix B in the pair (A, B).
+* On exit, the updated matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* On entry, if WANTQ = .TRUE., the orthogonal matrix Q.
+* On exit, the updated matrix Q.
+* Not referenced if WANTQ = .FALSE..
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1.
+* If WANTQ = .TRUE., LDQ >= N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* On entry, if WANTZ =.TRUE., the orthogonal matrix Z.
+* On exit, the updated matrix Z.
+* Not referenced if WANTZ = .FALSE..
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1.
+* If WANTZ = .TRUE., LDZ >= N.
+*
+* J1 (input) INTEGER
+* The index to the first block (A11, B11). 1 <= J1 <= N.
+*
+* N1 (input) INTEGER
+* The order of the first block (A11, B11). N1 = 0, 1 or 2.
+*
+* N2 (input) INTEGER
+* The order of the second block (A22, B22). N2 = 0, 1 or 2.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)).
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* LWORK >= MAX( 1, N*(N2+N1), (N2+N1)*(N2+N1)*2 )
+*
+* INFO (output) INTEGER
+* =0: Successful exit
+* >0: If INFO = 1, the transformed matrix (A, B) would be
+* too far from generalized Schur form; the blocks are
+* not swapped and (A, B) and (Q, Z) are unchanged.
+* The problem of swapping is too ill-conditioned.
+* <0: If INFO = -16: LWORK is too small. Appropriate value
+* for LWORK is returned in WORK(1).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* In the current code both weak and strong stability tests are
+* performed. The user can omit the strong stability test by changing
+* the internal logical parameter WANDS to .FALSE.. See ref. [2] for
+* details.
+*
+* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
+* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
+* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
+* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
+*
+* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
+* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
+* Estimation: Theory, Algorithms and Software,
+* Report UMINF - 94.04, Department of Computing Science, Umea
+* University, S-901 87 Umea, Sweden, 1994. Also as LAPACK Working
+* Note 87. To appear in Numerical Algorithms, 1996.
+*
+* =====================================================================
+* Replaced various illegal calls to DCOPY by calls to DLASET, or by DO
+* loops. Sven Hammarling, 1/5/02.
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION TEN
+ PARAMETER ( TEN = 1.0D+01 )
+ INTEGER LDST
+ PARAMETER ( LDST = 4 )
+ LOGICAL WANDS
+ PARAMETER ( WANDS = .TRUE. )
+* ..
+* .. Local Scalars ..
+ LOGICAL DTRONG, WEAK
+ INTEGER I, IDUM, LINFO, M
+ DOUBLE PRECISION BQRA21, BRQA21, DDUM, DNORM, DSCALE, DSUM, EPS,
+ $ F, G, SA, SB, SCALE, SMLNUM, SS, THRESH, WS
+* ..
+* .. Local Arrays ..
+ INTEGER IWORK( LDST )
+ DOUBLE PRECISION AI( 2 ), AR( 2 ), BE( 2 ), IR( LDST, LDST ),
+ $ IRCOP( LDST, LDST ), LI( LDST, LDST ),
+ $ LICOP( LDST, LDST ), S( LDST, LDST ),
+ $ SCPY( LDST, LDST ), T( LDST, LDST ),
+ $ TAUL( LDST ), TAUR( LDST ), TCPY( LDST, LDST )
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DGEQR2, DGERQ2, DLACPY, DLAGV2, DLARTG,
+ $ DLASET, DLASSQ, DORG2R, DORGR2, DORM2R, DORMR2,
+ $ DROT, DSCAL, DTGSY2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N.LE.1 .OR. N1.LE.0 .OR. N2.LE.0 )
+ $ RETURN
+ IF( N1.GT.N .OR. ( J1+N1 ).GT.N )
+ $ RETURN
+ M = N1 + N2
+ IF( LWORK.LT.MAX( 1, N*M, M*M*2 ) ) THEN
+ INFO = -16
+ WORK( 1 ) = MAX( 1, N*M, M*M*2 )
+ RETURN
+ END IF
+*
+ WEAK = .FALSE.
+ DTRONG = .FALSE.
+*
+* Make a local copy of selected block
+*
+ CALL DLASET( 'Full', LDST, LDST, ZERO, ZERO, LI, LDST )
+ CALL DLASET( 'Full', LDST, LDST, ZERO, ZERO, IR, LDST )
+ CALL DLACPY( 'Full', M, M, A( J1, J1 ), LDA, S, LDST )
+ CALL DLACPY( 'Full', M, M, B( J1, J1 ), LDB, T, LDST )
+*
+* Compute threshold for testing acceptance of swapping.
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ DSCALE = ZERO
+ DSUM = ONE
+ CALL DLACPY( 'Full', M, M, S, LDST, WORK, M )
+ CALL DLASSQ( M*M, WORK, 1, DSCALE, DSUM )
+ CALL DLACPY( 'Full', M, M, T, LDST, WORK, M )
+ CALL DLASSQ( M*M, WORK, 1, DSCALE, DSUM )
+ DNORM = DSCALE*SQRT( DSUM )
+ THRESH = MAX( TEN*EPS*DNORM, SMLNUM )
+*
+ IF( M.EQ.2 ) THEN
+*
+* CASE 1: Swap 1-by-1 and 1-by-1 blocks.
+*
+* Compute orthogonal QL and RQ that swap 1-by-1 and 1-by-1 blocks
+* using Givens rotations and perform the swap tentatively.
+*
+ F = S( 2, 2 )*T( 1, 1 ) - T( 2, 2 )*S( 1, 1 )
+ G = S( 2, 2 )*T( 1, 2 ) - T( 2, 2 )*S( 1, 2 )
+ SB = ABS( T( 2, 2 ) )
+ SA = ABS( S( 2, 2 ) )
+ CALL DLARTG( F, G, IR( 1, 2 ), IR( 1, 1 ), DDUM )
+ IR( 2, 1 ) = -IR( 1, 2 )
+ IR( 2, 2 ) = IR( 1, 1 )
+ CALL DROT( 2, S( 1, 1 ), 1, S( 1, 2 ), 1, IR( 1, 1 ),
+ $ IR( 2, 1 ) )
+ CALL DROT( 2, T( 1, 1 ), 1, T( 1, 2 ), 1, IR( 1, 1 ),
+ $ IR( 2, 1 ) )
+ IF( SA.GE.SB ) THEN
+ CALL DLARTG( S( 1, 1 ), S( 2, 1 ), LI( 1, 1 ), LI( 2, 1 ),
+ $ DDUM )
+ ELSE
+ CALL DLARTG( T( 1, 1 ), T( 2, 1 ), LI( 1, 1 ), LI( 2, 1 ),
+ $ DDUM )
+ END IF
+ CALL DROT( 2, S( 1, 1 ), LDST, S( 2, 1 ), LDST, LI( 1, 1 ),
+ $ LI( 2, 1 ) )
+ CALL DROT( 2, T( 1, 1 ), LDST, T( 2, 1 ), LDST, LI( 1, 1 ),
+ $ LI( 2, 1 ) )
+ LI( 2, 2 ) = LI( 1, 1 )
+ LI( 1, 2 ) = -LI( 2, 1 )
+*
+* Weak stability test:
+* |S21| + |T21| <= O(EPS * F-norm((S, T)))
+*
+ WS = ABS( S( 2, 1 ) ) + ABS( T( 2, 1 ) )
+ WEAK = WS.LE.THRESH
+ IF( .NOT.WEAK )
+ $ GO TO 70
+*
+ IF( WANDS ) THEN
+*
+* Strong stability test:
+* F-norm((A-QL'*S*QR, B-QL'*T*QR)) <= O(EPS*F-norm((A,B)))
+*
+ CALL DLACPY( 'Full', M, M, A( J1, J1 ), LDA, WORK( M*M+1 ),
+ $ M )
+ CALL DGEMM( 'N', 'N', M, M, M, ONE, LI, LDST, S, LDST, ZERO,
+ $ WORK, M )
+ CALL DGEMM( 'N', 'T', M, M, M, -ONE, WORK, M, IR, LDST, ONE,
+ $ WORK( M*M+1 ), M )
+ DSCALE = ZERO
+ DSUM = ONE
+ CALL DLASSQ( M*M, WORK( M*M+1 ), 1, DSCALE, DSUM )
+*
+ CALL DLACPY( 'Full', M, M, B( J1, J1 ), LDB, WORK( M*M+1 ),
+ $ M )
+ CALL DGEMM( 'N', 'N', M, M, M, ONE, LI, LDST, T, LDST, ZERO,
+ $ WORK, M )
+ CALL DGEMM( 'N', 'T', M, M, M, -ONE, WORK, M, IR, LDST, ONE,
+ $ WORK( M*M+1 ), M )
+ CALL DLASSQ( M*M, WORK( M*M+1 ), 1, DSCALE, DSUM )
+ SS = DSCALE*SQRT( DSUM )
+ DTRONG = SS.LE.THRESH
+ IF( .NOT.DTRONG )
+ $ GO TO 70
+ END IF
+*
+* Update (A(J1:J1+M-1, M+J1:N), B(J1:J1+M-1, M+J1:N)) and
+* (A(1:J1-1, J1:J1+M), B(1:J1-1, J1:J1+M)).
+*
+ CALL DROT( J1+1, A( 1, J1 ), 1, A( 1, J1+1 ), 1, IR( 1, 1 ),
+ $ IR( 2, 1 ) )
+ CALL DROT( J1+1, B( 1, J1 ), 1, B( 1, J1+1 ), 1, IR( 1, 1 ),
+ $ IR( 2, 1 ) )
+ CALL DROT( N-J1+1, A( J1, J1 ), LDA, A( J1+1, J1 ), LDA,
+ $ LI( 1, 1 ), LI( 2, 1 ) )
+ CALL DROT( N-J1+1, B( J1, J1 ), LDB, B( J1+1, J1 ), LDB,
+ $ LI( 1, 1 ), LI( 2, 1 ) )
+*
+* Set N1-by-N2 (2,1) - blocks to ZERO.
+*
+ A( J1+1, J1 ) = ZERO
+ B( J1+1, J1 ) = ZERO
+*
+* Accumulate transformations into Q and Z if requested.
+*
+ IF( WANTZ )
+ $ CALL DROT( N, Z( 1, J1 ), 1, Z( 1, J1+1 ), 1, IR( 1, 1 ),
+ $ IR( 2, 1 ) )
+ IF( WANTQ )
+ $ CALL DROT( N, Q( 1, J1 ), 1, Q( 1, J1+1 ), 1, LI( 1, 1 ),
+ $ LI( 2, 1 ) )
+*
+* Exit with INFO = 0 if swap was successfully performed.
+*
+ RETURN
+*
+ ELSE
+*
+* CASE 2: Swap 1-by-1 and 2-by-2 blocks, or 2-by-2
+* and 2-by-2 blocks.
+*
+* Solve the generalized Sylvester equation
+* S11 * R - L * S22 = SCALE * S12
+* T11 * R - L * T22 = SCALE * T12
+* for R and L. Solutions in LI and IR.
+*
+ CALL DLACPY( 'Full', N1, N2, T( 1, N1+1 ), LDST, LI, LDST )
+ CALL DLACPY( 'Full', N1, N2, S( 1, N1+1 ), LDST,
+ $ IR( N2+1, N1+1 ), LDST )
+ CALL DTGSY2( 'N', 0, N1, N2, S, LDST, S( N1+1, N1+1 ), LDST,
+ $ IR( N2+1, N1+1 ), LDST, T, LDST, T( N1+1, N1+1 ),
+ $ LDST, LI, LDST, SCALE, DSUM, DSCALE, IWORK, IDUM,
+ $ LINFO )
+*
+* Compute orthogonal matrix QL:
+*
+* QL' * LI = [ TL ]
+* [ 0 ]
+* where
+* LI = [ -L ]
+* [ SCALE * identity(N2) ]
+*
+ DO 10 I = 1, N2
+ CALL DSCAL( N1, -ONE, LI( 1, I ), 1 )
+ LI( N1+I, I ) = SCALE
+ 10 CONTINUE
+ CALL DGEQR2( M, N2, LI, LDST, TAUL, WORK, LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+ CALL DORG2R( M, M, N2, LI, LDST, TAUL, WORK, LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+*
+* Compute orthogonal matrix RQ:
+*
+* IR * RQ' = [ 0 TR],
+*
+* where IR = [ SCALE * identity(N1), R ]
+*
+ DO 20 I = 1, N1
+ IR( N2+I, I ) = SCALE
+ 20 CONTINUE
+ CALL DGERQ2( N1, M, IR( N2+1, 1 ), LDST, TAUR, WORK, LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+ CALL DORGR2( M, M, N1, IR, LDST, TAUR, WORK, LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+*
+* Perform the swapping tentatively:
+*
+ CALL DGEMM( 'T', 'N', M, M, M, ONE, LI, LDST, S, LDST, ZERO,
+ $ WORK, M )
+ CALL DGEMM( 'N', 'T', M, M, M, ONE, WORK, M, IR, LDST, ZERO, S,
+ $ LDST )
+ CALL DGEMM( 'T', 'N', M, M, M, ONE, LI, LDST, T, LDST, ZERO,
+ $ WORK, M )
+ CALL DGEMM( 'N', 'T', M, M, M, ONE, WORK, M, IR, LDST, ZERO, T,
+ $ LDST )
+ CALL DLACPY( 'F', M, M, S, LDST, SCPY, LDST )
+ CALL DLACPY( 'F', M, M, T, LDST, TCPY, LDST )
+ CALL DLACPY( 'F', M, M, IR, LDST, IRCOP, LDST )
+ CALL DLACPY( 'F', M, M, LI, LDST, LICOP, LDST )
+*
+* Triangularize the B-part by an RQ factorization.
+* Apply transformation (from left) to A-part, giving S.
+*
+ CALL DGERQ2( M, M, T, LDST, TAUR, WORK, LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+ CALL DORMR2( 'R', 'T', M, M, M, T, LDST, TAUR, S, LDST, WORK,
+ $ LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+ CALL DORMR2( 'L', 'N', M, M, M, T, LDST, TAUR, IR, LDST, WORK,
+ $ LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+*
+* Compute F-norm(S21) in BRQA21. (T21 is 0.)
+*
+ DSCALE = ZERO
+ DSUM = ONE
+ DO 30 I = 1, N2
+ CALL DLASSQ( N1, S( N2+1, I ), 1, DSCALE, DSUM )
+ 30 CONTINUE
+ BRQA21 = DSCALE*SQRT( DSUM )
+*
+* Triangularize the B-part by a QR factorization.
+* Apply transformation (from right) to A-part, giving S.
+*
+ CALL DGEQR2( M, M, TCPY, LDST, TAUL, WORK, LINFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+ CALL DORM2R( 'L', 'T', M, M, M, TCPY, LDST, TAUL, SCPY, LDST,
+ $ WORK, INFO )
+ CALL DORM2R( 'R', 'N', M, M, M, TCPY, LDST, TAUL, LICOP, LDST,
+ $ WORK, INFO )
+ IF( LINFO.NE.0 )
+ $ GO TO 70
+*
+* Compute F-norm(S21) in BQRA21. (T21 is 0.)
+*
+ DSCALE = ZERO
+ DSUM = ONE
+ DO 40 I = 1, N2
+ CALL DLASSQ( N1, SCPY( N2+1, I ), 1, DSCALE, DSUM )
+ 40 CONTINUE
+ BQRA21 = DSCALE*SQRT( DSUM )
+*
+* Decide which method to use.
+* Weak stability test:
+* F-norm(S21) <= O(EPS * F-norm((S, T)))
+*
+ IF( BQRA21.LE.BRQA21 .AND. BQRA21.LE.THRESH ) THEN
+ CALL DLACPY( 'F', M, M, SCPY, LDST, S, LDST )
+ CALL DLACPY( 'F', M, M, TCPY, LDST, T, LDST )
+ CALL DLACPY( 'F', M, M, IRCOP, LDST, IR, LDST )
+ CALL DLACPY( 'F', M, M, LICOP, LDST, LI, LDST )
+ ELSE IF( BRQA21.GE.THRESH ) THEN
+ GO TO 70
+ END IF
+*
+* Set lower triangle of B-part to zero
+*
+ CALL DLASET( 'Lower', M-1, M-1, ZERO, ZERO, T(2,1), LDST )
+*
+ IF( WANDS ) THEN
+*
+* Strong stability test:
+* F-norm((A-QL*S*QR', B-QL*T*QR')) <= O(EPS*F-norm((A,B)))
+*
+ CALL DLACPY( 'Full', M, M, A( J1, J1 ), LDA, WORK( M*M+1 ),
+ $ M )
+ CALL DGEMM( 'N', 'N', M, M, M, ONE, LI, LDST, S, LDST, ZERO,
+ $ WORK, M )
+ CALL DGEMM( 'N', 'N', M, M, M, -ONE, WORK, M, IR, LDST, ONE,
+ $ WORK( M*M+1 ), M )
+ DSCALE = ZERO
+ DSUM = ONE
+ CALL DLASSQ( M*M, WORK( M*M+1 ), 1, DSCALE, DSUM )
+*
+ CALL DLACPY( 'Full', M, M, B( J1, J1 ), LDB, WORK( M*M+1 ),
+ $ M )
+ CALL DGEMM( 'N', 'N', M, M, M, ONE, LI, LDST, T, LDST, ZERO,
+ $ WORK, M )
+ CALL DGEMM( 'N', 'N', M, M, M, -ONE, WORK, M, IR, LDST, ONE,
+ $ WORK( M*M+1 ), M )
+ CALL DLASSQ( M*M, WORK( M*M+1 ), 1, DSCALE, DSUM )
+ SS = DSCALE*SQRT( DSUM )
+ DTRONG = ( SS.LE.THRESH )
+ IF( .NOT.DTRONG )
+ $ GO TO 70
+*
+ END IF
+*
+* If the swap is accepted ("weakly" and "strongly"), apply the
+* transformations and set N1-by-N2 (2,1)-block to zero.
+*
+ CALL DLASET( 'Full', N1, N2, ZERO, ZERO, S(N2+1,1), LDST )
+*
+* copy back M-by-M diagonal block starting at index J1 of (A, B)
+*
+ CALL DLACPY( 'F', M, M, S, LDST, A( J1, J1 ), LDA )
+ CALL DLACPY( 'F', M, M, T, LDST, B( J1, J1 ), LDB )
+ CALL DLASET( 'Full', LDST, LDST, ZERO, ZERO, T, LDST )
+*
+* Standardize existing 2-by-2 blocks.
+*
+ DO 50 I = 1, M*M
+ WORK(I) = ZERO
+ 50 CONTINUE
+ WORK( 1 ) = ONE
+ T( 1, 1 ) = ONE
+ IDUM = LWORK - M*M - 2
+ IF( N2.GT.1 ) THEN
+ CALL DLAGV2( A( J1, J1 ), LDA, B( J1, J1 ), LDB, AR, AI, BE,
+ $ WORK( 1 ), WORK( 2 ), T( 1, 1 ), T( 2, 1 ) )
+ WORK( M+1 ) = -WORK( 2 )
+ WORK( M+2 ) = WORK( 1 )
+ T( N2, N2 ) = T( 1, 1 )
+ T( 1, 2 ) = -T( 2, 1 )
+ END IF
+ WORK( M*M ) = ONE
+ T( M, M ) = ONE
+*
+ IF( N1.GT.1 ) THEN
+ CALL DLAGV2( A( J1+N2, J1+N2 ), LDA, B( J1+N2, J1+N2 ), LDB,
+ $ TAUR, TAUL, WORK( M*M+1 ), WORK( N2*M+N2+1 ),
+ $ WORK( N2*M+N2+2 ), T( N2+1, N2+1 ),
+ $ T( M, M-1 ) )
+ WORK( M*M ) = WORK( N2*M+N2+1 )
+ WORK( M*M-1 ) = -WORK( N2*M+N2+2 )
+ T( M, M ) = T( N2+1, N2+1 )
+ T( M-1, M ) = -T( M, M-1 )
+ END IF
+ CALL DGEMM( 'T', 'N', N2, N1, N2, ONE, WORK, M, A( J1, J1+N2 ),
+ $ LDA, ZERO, WORK( M*M+1 ), N2 )
+ CALL DLACPY( 'Full', N2, N1, WORK( M*M+1 ), N2, A( J1, J1+N2 ),
+ $ LDA )
+ CALL DGEMM( 'T', 'N', N2, N1, N2, ONE, WORK, M, B( J1, J1+N2 ),
+ $ LDB, ZERO, WORK( M*M+1 ), N2 )
+ CALL DLACPY( 'Full', N2, N1, WORK( M*M+1 ), N2, B( J1, J1+N2 ),
+ $ LDB )
+ CALL DGEMM( 'N', 'N', M, M, M, ONE, LI, LDST, WORK, M, ZERO,
+ $ WORK( M*M+1 ), M )
+ CALL DLACPY( 'Full', M, M, WORK( M*M+1 ), M, LI, LDST )
+ CALL DGEMM( 'N', 'N', N2, N1, N1, ONE, A( J1, J1+N2 ), LDA,
+ $ T( N2+1, N2+1 ), LDST, ZERO, WORK, N2 )
+ CALL DLACPY( 'Full', N2, N1, WORK, N2, A( J1, J1+N2 ), LDA )
+ CALL DGEMM( 'N', 'N', N2, N1, N1, ONE, B( J1, J1+N2 ), LDB,
+ $ T( N2+1, N2+1 ), LDST, ZERO, WORK, N2 )
+ CALL DLACPY( 'Full', N2, N1, WORK, N2, B( J1, J1+N2 ), LDB )
+ CALL DGEMM( 'T', 'N', M, M, M, ONE, IR, LDST, T, LDST, ZERO,
+ $ WORK, M )
+ CALL DLACPY( 'Full', M, M, WORK, M, IR, LDST )
+*
+* Accumulate transformations into Q and Z if requested.
+*
+ IF( WANTQ ) THEN
+ CALL DGEMM( 'N', 'N', N, M, M, ONE, Q( 1, J1 ), LDQ, LI,
+ $ LDST, ZERO, WORK, N )
+ CALL DLACPY( 'Full', N, M, WORK, N, Q( 1, J1 ), LDQ )
+*
+ END IF
+*
+ IF( WANTZ ) THEN
+ CALL DGEMM( 'N', 'N', N, M, M, ONE, Z( 1, J1 ), LDZ, IR,
+ $ LDST, ZERO, WORK, N )
+ CALL DLACPY( 'Full', N, M, WORK, N, Z( 1, J1 ), LDZ )
+*
+ END IF
+*
+* Update (A(J1:J1+M-1, M+J1:N), B(J1:J1+M-1, M+J1:N)) and
+* (A(1:J1-1, J1:J1+M), B(1:J1-1, J1:J1+M)).
+*
+ I = J1 + M
+ IF( I.LE.N ) THEN
+ CALL DGEMM( 'T', 'N', M, N-I+1, M, ONE, LI, LDST,
+ $ A( J1, I ), LDA, ZERO, WORK, M )
+ CALL DLACPY( 'Full', M, N-I+1, WORK, M, A( J1, I ), LDA )
+ CALL DGEMM( 'T', 'N', M, N-I+1, M, ONE, LI, LDST,
+ $ B( J1, I ), LDA, ZERO, WORK, M )
+ CALL DLACPY( 'Full', M, N-I+1, WORK, M, B( J1, I ), LDB )
+ END IF
+ I = J1 - 1
+ IF( I.GT.0 ) THEN
+ CALL DGEMM( 'N', 'N', I, M, M, ONE, A( 1, J1 ), LDA, IR,
+ $ LDST, ZERO, WORK, I )
+ CALL DLACPY( 'Full', I, M, WORK, I, A( 1, J1 ), LDA )
+ CALL DGEMM( 'N', 'N', I, M, M, ONE, B( 1, J1 ), LDB, IR,
+ $ LDST, ZERO, WORK, I )
+ CALL DLACPY( 'Full', I, M, WORK, I, B( 1, J1 ), LDB )
+ END IF
+*
+* Exit with INFO = 0 if swap was successfully performed.
+*
+ RETURN
+*
+ END IF
+*
+* Exit with INFO = 1 if swap was rejected.
+*
+ 70 CONTINUE
+*
+ INFO = 1
+ RETURN
+*
+* End of DTGEX2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtgexc.f b/2.3-1/src/fortran/lapack/dtgexc.f
new file mode 100644
index 00000000..bafefea2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtgexc.f
@@ -0,0 +1,440 @@
+ SUBROUTINE DTGEXC( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, IFST, ILST, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ, WANTZ
+ INTEGER IFST, ILST, INFO, LDA, LDB, LDQ, LDZ, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
+ $ WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTGEXC reorders the generalized real Schur decomposition of a real
+* matrix pair (A,B) using an orthogonal equivalence transformation
+*
+* (A, B) = Q * (A, B) * Z',
+*
+* so that the diagonal block of (A, B) with row index IFST is moved
+* to row ILST.
+*
+* (A, B) must be in generalized real Schur canonical form (as returned
+* by DGGES), i.e. A is block upper triangular with 1-by-1 and 2-by-2
+* diagonal blocks. B is upper triangular.
+*
+* Optionally, the matrices Q and Z of generalized Schur vectors are
+* updated.
+*
+* Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)'
+* Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
+*
+*
+* Arguments
+* =========
+*
+* WANTQ (input) LOGICAL
+* .TRUE. : update the left transformation matrix Q;
+* .FALSE.: do not update Q.
+*
+* WANTZ (input) LOGICAL
+* .TRUE. : update the right transformation matrix Z;
+* .FALSE.: do not update Z.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the matrix A in generalized real Schur canonical
+* form.
+* On exit, the updated matrix A, again in generalized
+* real Schur canonical form.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+* On entry, the matrix B in generalized real Schur canonical
+* form (A,B).
+* On exit, the updated matrix B, again in generalized
+* real Schur canonical form (A,B).
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* On entry, if WANTQ = .TRUE., the orthogonal matrix Q.
+* On exit, the updated matrix Q.
+* If WANTQ = .FALSE., Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1.
+* If WANTQ = .TRUE., LDQ >= N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* On entry, if WANTZ = .TRUE., the orthogonal matrix Z.
+* On exit, the updated matrix Z.
+* If WANTZ = .FALSE., Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1.
+* If WANTZ = .TRUE., LDZ >= N.
+*
+* IFST (input/output) INTEGER
+* ILST (input/output) INTEGER
+* Specify the reordering of the diagonal blocks of (A, B).
+* The block with row index IFST is moved to row ILST, by a
+* sequence of swapping between adjacent blocks.
+* On exit, if IFST pointed on entry to the second row of
+* a 2-by-2 block, it is changed to point to the first row;
+* ILST always points to the first row of the block in its
+* final position (which may differ from its input value by
+* +1 or -1). 1 <= IFST, ILST <= N.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* LWORK >= 1 when N <= 1, otherwise LWORK >= 4*N + 16.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* =0: successful exit.
+* <0: if INFO = -i, the i-th argument had an illegal value.
+* =1: The transformed matrix pair (A, B) would be too far
+* from generalized Schur form; the problem is ill-
+* conditioned. (A, B) may have been partially reordered,
+* and ILST points to the first row of the current
+* position of the block being moved.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
+* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
+* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
+* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER HERE, LWMIN, NBF, NBL, NBNEXT
+* ..
+* .. External Subroutines ..
+ EXTERNAL DTGEX2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode and test input arguments.
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDQ.LT.1 .OR. WANTQ .AND. ( LDQ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -9
+ ELSE IF( LDZ.LT.1 .OR. WANTZ .AND. ( LDZ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -11
+ ELSE IF( IFST.LT.1 .OR. IFST.GT.N ) THEN
+ INFO = -12
+ ELSE IF( ILST.LT.1 .OR. ILST.GT.N ) THEN
+ INFO = -13
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.LE.1 ) THEN
+ LWMIN = 1
+ ELSE
+ LWMIN = 4*N + 16
+ END IF
+ WORK(1) = LWMIN
+*
+ IF (LWORK.LT.LWMIN .AND. .NOT.LQUERY) THEN
+ INFO = -15
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGEXC', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+* Determine the first row of the specified block and find out
+* if it is 1-by-1 or 2-by-2.
+*
+ IF( IFST.GT.1 ) THEN
+ IF( A( IFST, IFST-1 ).NE.ZERO )
+ $ IFST = IFST - 1
+ END IF
+ NBF = 1
+ IF( IFST.LT.N ) THEN
+ IF( A( IFST+1, IFST ).NE.ZERO )
+ $ NBF = 2
+ END IF
+*
+* Determine the first row of the final block
+* and find out if it is 1-by-1 or 2-by-2.
+*
+ IF( ILST.GT.1 ) THEN
+ IF( A( ILST, ILST-1 ).NE.ZERO )
+ $ ILST = ILST - 1
+ END IF
+ NBL = 1
+ IF( ILST.LT.N ) THEN
+ IF( A( ILST+1, ILST ).NE.ZERO )
+ $ NBL = 2
+ END IF
+ IF( IFST.EQ.ILST )
+ $ RETURN
+*
+ IF( IFST.LT.ILST ) THEN
+*
+* Update ILST.
+*
+ IF( NBF.EQ.2 .AND. NBL.EQ.1 )
+ $ ILST = ILST - 1
+ IF( NBF.EQ.1 .AND. NBL.EQ.2 )
+ $ ILST = ILST + 1
+*
+ HERE = IFST
+*
+ 10 CONTINUE
+*
+* Swap with next one below.
+*
+ IF( NBF.EQ.1 .OR. NBF.EQ.2 ) THEN
+*
+* Current block either 1-by-1 or 2-by-2.
+*
+ NBNEXT = 1
+ IF( HERE+NBF+1.LE.N ) THEN
+ IF( A( HERE+NBF+1, HERE+NBF ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, HERE, NBF, NBNEXT, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + NBNEXT
+*
+* Test if 2-by-2 block breaks into two 1-by-1 blocks.
+*
+ IF( NBF.EQ.2 ) THEN
+ IF( A( HERE+1, HERE ).EQ.ZERO )
+ $ NBF = 3
+ END IF
+*
+ ELSE
+*
+* Current block consists of two 1-by-1 blocks, each of which
+* must be swapped individually.
+*
+ NBNEXT = 1
+ IF( HERE+3.LE.N ) THEN
+ IF( A( HERE+3, HERE+2 ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, HERE+1, 1, NBNEXT, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ IF( NBNEXT.EQ.1 ) THEN
+*
+* Swap two 1-by-1 blocks.
+*
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, HERE, 1, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + 1
+*
+ ELSE
+*
+* Recompute NBNEXT in case of 2-by-2 split.
+*
+ IF( A( HERE+2, HERE+1 ).EQ.ZERO )
+ $ NBNEXT = 1
+ IF( NBNEXT.EQ.2 ) THEN
+*
+* 2-by-2 block did not split.
+*
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, HERE, 1, NBNEXT, WORK, LWORK,
+ $ INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + 2
+ ELSE
+*
+* 2-by-2 block did split.
+*
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, HERE, 1, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + 1
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, HERE, 1, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + 1
+ END IF
+*
+ END IF
+ END IF
+ IF( HERE.LT.ILST )
+ $ GO TO 10
+ ELSE
+ HERE = IFST
+*
+ 20 CONTINUE
+*
+* Swap with next one below.
+*
+ IF( NBF.EQ.1 .OR. NBF.EQ.2 ) THEN
+*
+* Current block either 1-by-1 or 2-by-2.
+*
+ NBNEXT = 1
+ IF( HERE.GE.3 ) THEN
+ IF( A( HERE-1, HERE-2 ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, HERE-NBNEXT, NBNEXT, NBF, WORK, LWORK,
+ $ INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - NBNEXT
+*
+* Test if 2-by-2 block breaks into two 1-by-1 blocks.
+*
+ IF( NBF.EQ.2 ) THEN
+ IF( A( HERE+1, HERE ).EQ.ZERO )
+ $ NBF = 3
+ END IF
+*
+ ELSE
+*
+* Current block consists of two 1-by-1 blocks, each of which
+* must be swapped individually.
+*
+ NBNEXT = 1
+ IF( HERE.GE.3 ) THEN
+ IF( A( HERE-1, HERE-2 ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, HERE-NBNEXT, NBNEXT, 1, WORK, LWORK,
+ $ INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ IF( NBNEXT.EQ.1 ) THEN
+*
+* Swap two 1-by-1 blocks.
+*
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, HERE, NBNEXT, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - 1
+ ELSE
+*
+* Recompute NBNEXT in case of 2-by-2 split.
+*
+ IF( A( HERE, HERE-1 ).EQ.ZERO )
+ $ NBNEXT = 1
+ IF( NBNEXT.EQ.2 ) THEN
+*
+* 2-by-2 block did not split.
+*
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, HERE-1, 2, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - 2
+ ELSE
+*
+* 2-by-2 block did split.
+*
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, HERE, 1, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - 1
+ CALL DTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, HERE, 1, 1, WORK, LWORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - 1
+ END IF
+ END IF
+ END IF
+ IF( HERE.GT.ILST )
+ $ GO TO 20
+ END IF
+ ILST = HERE
+ WORK( 1 ) = LWMIN
+ RETURN
+*
+* End of DTGEXC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtgsen.f b/2.3-1/src/fortran/lapack/dtgsen.f
new file mode 100644
index 00000000..917a7b0f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtgsen.f
@@ -0,0 +1,723 @@
+ SUBROUTINE DTGSEN( IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB,
+ $ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, M, PL,
+ $ PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ, WANTZ
+ INTEGER IJOB, INFO, LDA, LDB, LDQ, LDZ, LIWORK, LWORK,
+ $ M, N
+ DOUBLE PRECISION PL, PR
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), ALPHAI( * ), ALPHAR( * ),
+ $ B( LDB, * ), BETA( * ), DIF( * ), Q( LDQ, * ),
+ $ WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTGSEN reorders the generalized real Schur decomposition of a real
+* matrix pair (A, B) (in terms of an orthonormal equivalence trans-
+* formation Q' * (A, B) * Z), so that a selected cluster of eigenvalues
+* appears in the leading diagonal blocks of the upper quasi-triangular
+* matrix A and the upper triangular B. The leading columns of Q and
+* Z form orthonormal bases of the corresponding left and right eigen-
+* spaces (deflating subspaces). (A, B) must be in generalized real
+* Schur canonical form (as returned by DGGES), i.e. A is block upper
+* triangular with 1-by-1 and 2-by-2 diagonal blocks. B is upper
+* triangular.
+*
+* DTGSEN also computes the generalized eigenvalues
+*
+* w(j) = (ALPHAR(j) + i*ALPHAI(j))/BETA(j)
+*
+* of the reordered matrix pair (A, B).
+*
+* Optionally, DTGSEN computes the estimates of reciprocal condition
+* numbers for eigenvalues and eigenspaces. These are Difu[(A11,B11),
+* (A22,B22)] and Difl[(A11,B11), (A22,B22)], i.e. the separation(s)
+* between the matrix pairs (A11, B11) and (A22,B22) that correspond to
+* the selected cluster and the eigenvalues outside the cluster, resp.,
+* and norms of "projections" onto left and right eigenspaces w.r.t.
+* the selected cluster in the (1,1)-block.
+*
+* Arguments
+* =========
+*
+* IJOB (input) INTEGER
+* Specifies whether condition numbers are required for the
+* cluster of eigenvalues (PL and PR) or the deflating subspaces
+* (Difu and Difl):
+* =0: Only reorder w.r.t. SELECT. No extras.
+* =1: Reciprocal of norms of "projections" onto left and right
+* eigenspaces w.r.t. the selected cluster (PL and PR).
+* =2: Upper bounds on Difu and Difl. F-norm-based estimate
+* (DIF(1:2)).
+* =3: Estimate of Difu and Difl. 1-norm-based estimate
+* (DIF(1:2)).
+* About 5 times as expensive as IJOB = 2.
+* =4: Compute PL, PR and DIF (i.e. 0, 1 and 2 above): Economic
+* version to get it all.
+* =5: Compute PL, PR and DIF (i.e. 0, 1 and 3 above)
+*
+* WANTQ (input) LOGICAL
+* .TRUE. : update the left transformation matrix Q;
+* .FALSE.: do not update Q.
+*
+* WANTZ (input) LOGICAL
+* .TRUE. : update the right transformation matrix Z;
+* .FALSE.: do not update Z.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* SELECT specifies the eigenvalues in the selected cluster.
+* To select a real eigenvalue w(j), SELECT(j) must be set to
+* .TRUE.. To select a complex conjugate pair of eigenvalues
+* w(j) and w(j+1), corresponding to a 2-by-2 diagonal block,
+* either SELECT(j) or SELECT(j+1) or both must be set to
+* .TRUE.; a complex conjugate pair of eigenvalues must be
+* either both included in the cluster or both excluded.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension(LDA,N)
+* On entry, the upper quasi-triangular matrix A, with (A, B) in
+* generalized real Schur canonical form.
+* On exit, A is overwritten by the reordered matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension(LDB,N)
+* On entry, the upper triangular matrix B, with (A, B) in
+* generalized real Schur canonical form.
+* On exit, B is overwritten by the reordered matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* ALPHAR (output) DOUBLE PRECISION array, dimension (N)
+* ALPHAI (output) DOUBLE PRECISION array, dimension (N)
+* BETA (output) DOUBLE PRECISION array, dimension (N)
+* On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
+* be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i
+* and BETA(j),j=1,...,N are the diagonals of the complex Schur
+* form (S,T) that would result if the 2-by-2 diagonal blocks of
+* the real generalized Schur form of (A,B) were further reduced
+* to triangular form using complex unitary transformations.
+* If ALPHAI(j) is zero, then the j-th eigenvalue is real; if
+* positive, then the j-th and (j+1)-st eigenvalues are a
+* complex conjugate pair, with ALPHAI(j+1) negative.
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
+* On entry, if WANTQ = .TRUE., Q is an N-by-N matrix.
+* On exit, Q has been postmultiplied by the left orthogonal
+* transformation matrix which reorder (A, B); The leading M
+* columns of Q form orthonormal bases for the specified pair of
+* left eigenspaces (deflating subspaces).
+* If WANTQ = .FALSE., Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1;
+* and if WANTQ = .TRUE., LDQ >= N.
+*
+* Z (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* On entry, if WANTZ = .TRUE., Z is an N-by-N matrix.
+* On exit, Z has been postmultiplied by the left orthogonal
+* transformation matrix which reorder (A, B); The leading M
+* columns of Z form orthonormal bases for the specified pair of
+* left eigenspaces (deflating subspaces).
+* If WANTZ = .FALSE., Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1;
+* If WANTZ = .TRUE., LDZ >= N.
+*
+* M (output) INTEGER
+* The dimension of the specified pair of left and right eigen-
+* spaces (deflating subspaces). 0 <= M <= N.
+*
+* PL (output) DOUBLE PRECISION
+* PR (output) DOUBLE PRECISION
+* If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
+* reciprocal of the norm of "projections" onto left and right
+* eigenspaces with respect to the selected cluster.
+* 0 < PL, PR <= 1.
+* If M = 0 or M = N, PL = PR = 1.
+* If IJOB = 0, 2 or 3, PL and PR are not referenced.
+*
+* DIF (output) DOUBLE PRECISION array, dimension (2).
+* If IJOB >= 2, DIF(1:2) store the estimates of Difu and Difl.
+* If IJOB = 2 or 4, DIF(1:2) are F-norm-based upper bounds on
+* Difu and Difl. If IJOB = 3 or 5, DIF(1:2) are 1-norm-based
+* estimates of Difu and Difl.
+* If M = 0 or N, DIF(1:2) = F-norm([A, B]).
+* If IJOB = 0 or 1, DIF is not referenced.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* IF IJOB = 0, WORK is not referenced. Otherwise,
+* on exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 4*N+16.
+* If IJOB = 1, 2 or 4, LWORK >= MAX(4*N+16, 2*M*(N-M)).
+* If IJOB = 3 or 5, LWORK >= MAX(4*N+16, 4*M*(N-M)).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
+* IF IJOB = 0, IWORK is not referenced. Otherwise,
+* on exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
+*
+* LIWORK (input) INTEGER
+* The dimension of the array IWORK. LIWORK >= 1.
+* If IJOB = 1, 2 or 4, LIWORK >= N+6.
+* If IJOB = 3 or 5, LIWORK >= MAX(2*M*(N-M), N+6).
+*
+* If LIWORK = -1, then a workspace query is assumed; the
+* routine only calculates the optimal size of the IWORK array,
+* returns this value as the first entry of the IWORK array, and
+* no error message related to LIWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* =0: Successful exit.
+* <0: If INFO = -i, the i-th argument had an illegal value.
+* =1: Reordering of (A, B) failed because the transformed
+* matrix pair (A, B) would be too far from generalized
+* Schur form; the problem is very ill-conditioned.
+* (A, B) may have been partially reordered.
+* If requested, 0 is returned in DIF(*), PL and PR.
+*
+* Further Details
+* ===============
+*
+* DTGSEN first collects the selected eigenvalues by computing
+* orthogonal U and W that move them to the top left corner of (A, B).
+* In other words, the selected eigenvalues are the eigenvalues of
+* (A11, B11) in:
+*
+* U'*(A, B)*W = (A11 A12) (B11 B12) n1
+* ( 0 A22),( 0 B22) n2
+* n1 n2 n1 n2
+*
+* where N = n1+n2 and U' means the transpose of U. The first n1 columns
+* of U and W span the specified pair of left and right eigenspaces
+* (deflating subspaces) of (A, B).
+*
+* If (A, B) has been obtained from the generalized real Schur
+* decomposition of a matrix pair (C, D) = Q*(A, B)*Z', then the
+* reordered generalized real Schur form of (C, D) is given by
+*
+* (C, D) = (Q*U)*(U'*(A, B)*W)*(Z*W)',
+*
+* and the first n1 columns of Q*U and Z*W span the corresponding
+* deflating subspaces of (C, D) (Q and Z store Q*U and Z*W, resp.).
+*
+* Note that if the selected eigenvalue is sufficiently ill-conditioned,
+* then its value may differ significantly from its value before
+* reordering.
+*
+* The reciprocal condition numbers of the left and right eigenspaces
+* spanned by the first n1 columns of U and W (or Q*U and Z*W) may
+* be returned in DIF(1:2), corresponding to Difu and Difl, resp.
+*
+* The Difu and Difl are defined as:
+*
+* Difu[(A11, B11), (A22, B22)] = sigma-min( Zu )
+* and
+* Difl[(A11, B11), (A22, B22)] = Difu[(A22, B22), (A11, B11)],
+*
+* where sigma-min(Zu) is the smallest singular value of the
+* (2*n1*n2)-by-(2*n1*n2) matrix
+*
+* Zu = [ kron(In2, A11) -kron(A22', In1) ]
+* [ kron(In2, B11) -kron(B22', In1) ].
+*
+* Here, Inx is the identity matrix of size nx and A22' is the
+* transpose of A22. kron(X, Y) is the Kronecker product between
+* the matrices X and Y.
+*
+* When DIF(2) is small, small changes in (A, B) can cause large changes
+* in the deflating subspace. An approximate (asymptotic) bound on the
+* maximum angular error in the computed deflating subspaces is
+*
+* EPS * norm((A, B)) / DIF(2),
+*
+* where EPS is the machine precision.
+*
+* The reciprocal norm of the projectors on the left and right
+* eigenspaces associated with (A11, B11) may be returned in PL and PR.
+* They are computed as follows. First we compute L and R so that
+* P*(A, B)*Q is block diagonal, where
+*
+* P = ( I -L ) n1 Q = ( I R ) n1
+* ( 0 I ) n2 and ( 0 I ) n2
+* n1 n2 n1 n2
+*
+* and (L, R) is the solution to the generalized Sylvester equation
+*
+* A11*R - L*A22 = -A12
+* B11*R - L*B22 = -B12
+*
+* Then PL = (F-norm(L)**2+1)**(-1/2) and PR = (F-norm(R)**2+1)**(-1/2).
+* An approximate (asymptotic) bound on the average absolute error of
+* the selected eigenvalues is
+*
+* EPS * norm((A, B)) / PL.
+*
+* There are also global error bounds which valid for perturbations up
+* to a certain restriction: A lower bound (x) on the smallest
+* F-norm(E,F) for which an eigenvalue of (A11, B11) may move and
+* coalesce with an eigenvalue of (A22, B22) under perturbation (E,F),
+* (i.e. (A + E, B + F), is
+*
+* x = min(Difu,Difl)/((1/(PL*PL)+1/(PR*PR))**(1/2)+2*max(1/PL,1/PR)).
+*
+* An approximate bound on x can be computed from DIF(1:2), PL and PR.
+*
+* If y = ( F-norm(E,F) / x) <= 1, the angles between the perturbed
+* (L', R') and unperturbed (L, R) left and right deflating subspaces
+* associated with the selected cluster in the (1,1)-blocks can be
+* bounded as
+*
+* max-angle(L, L') <= arctan( y * PL / (1 - y * (1 - PL * PL)**(1/2))
+* max-angle(R, R') <= arctan( y * PR / (1 - y * (1 - PR * PR)**(1/2))
+*
+* See LAPACK User's Guide section 4.11 or the following references
+* for more information.
+*
+* Note that if the default method for computing the Frobenius-norm-
+* based estimate DIF is not wanted (see DLATDF), then the parameter
+* IDIFJB (see below) should be changed from 3 to 4 (routine DLATDF
+* (IJOB = 2 will be used)). See DTGSYL for more details.
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* References
+* ==========
+*
+* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
+* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
+* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
+* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
+*
+* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
+* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
+* Estimation: Theory, Algorithms and Software,
+* Report UMINF - 94.04, Department of Computing Science, Umea
+* University, S-901 87 Umea, Sweden, 1994. Also as LAPACK Working
+* Note 87. To appear in Numerical Algorithms, 1996.
+*
+* [3] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
+* for Solving the Generalized Sylvester Equation and Estimating the
+* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
+* Department of Computing Science, Umea University, S-901 87 Umea,
+* Sweden, December 1993, Revised April 1994, Also as LAPACK Working
+* Note 75. To appear in ACM Trans. on Math. Software, Vol 22, No 1,
+* 1996.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IDIFJB
+ PARAMETER ( IDIFJB = 3 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, PAIR, SWAP, WANTD, WANTD1, WANTD2,
+ $ WANTP
+ INTEGER I, IERR, IJB, K, KASE, KK, KS, LIWMIN, LWMIN,
+ $ MN2, N1, N2
+ DOUBLE PRECISION DSCALE, DSUM, EPS, RDSCAL, SMLNUM
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACN2, DLACPY, DLAG2, DLASSQ, DTGEXC, DTGSYL,
+ $ XERBLA
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 .OR. LIWORK.EQ.-1 )
+*
+ IF( IJOB.LT.0 .OR. IJOB.GT.5 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.N ) ) THEN
+ INFO = -14
+ ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN
+ INFO = -16
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGSEN', -INFO )
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ IERR = 0
+*
+ WANTP = IJOB.EQ.1 .OR. IJOB.GE.4
+ WANTD1 = IJOB.EQ.2 .OR. IJOB.EQ.4
+ WANTD2 = IJOB.EQ.3 .OR. IJOB.EQ.5
+ WANTD = WANTD1 .OR. WANTD2
+*
+* Set M to the dimension of the specified pair of deflating
+* subspaces.
+*
+ M = 0
+ PAIR = .FALSE.
+ DO 10 K = 1, N
+ IF( PAIR ) THEN
+ PAIR = .FALSE.
+ ELSE
+ IF( K.LT.N ) THEN
+ IF( A( K+1, K ).EQ.ZERO ) THEN
+ IF( SELECT( K ) )
+ $ M = M + 1
+ ELSE
+ PAIR = .TRUE.
+ IF( SELECT( K ) .OR. SELECT( K+1 ) )
+ $ M = M + 2
+ END IF
+ ELSE
+ IF( SELECT( N ) )
+ $ M = M + 1
+ END IF
+ END IF
+ 10 CONTINUE
+*
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.2 .OR. IJOB.EQ.4 ) THEN
+ LWMIN = MAX( 1, 4*N+16, 2*M*( N-M ) )
+ LIWMIN = MAX( 1, N+6 )
+ ELSE IF( IJOB.EQ.3 .OR. IJOB.EQ.5 ) THEN
+ LWMIN = MAX( 1, 4*N+16, 4*M*( N-M ) )
+ LIWMIN = MAX( 1, 2*M*( N-M ), N+6 )
+ ELSE
+ LWMIN = MAX( 1, 4*N+16 )
+ LIWMIN = 1
+ END IF
+*
+ WORK( 1 ) = LWMIN
+ IWORK( 1 ) = LIWMIN
+*
+ IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -22
+ ELSE IF( LIWORK.LT.LIWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -24
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGSEN', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( M.EQ.N .OR. M.EQ.0 ) THEN
+ IF( WANTP ) THEN
+ PL = ONE
+ PR = ONE
+ END IF
+ IF( WANTD ) THEN
+ DSCALE = ZERO
+ DSUM = ONE
+ DO 20 I = 1, N
+ CALL DLASSQ( N, A( 1, I ), 1, DSCALE, DSUM )
+ CALL DLASSQ( N, B( 1, I ), 1, DSCALE, DSUM )
+ 20 CONTINUE
+ DIF( 1 ) = DSCALE*SQRT( DSUM )
+ DIF( 2 ) = DIF( 1 )
+ END IF
+ GO TO 60
+ END IF
+*
+* Collect the selected blocks at the top-left corner of (A, B).
+*
+ KS = 0
+ PAIR = .FALSE.
+ DO 30 K = 1, N
+ IF( PAIR ) THEN
+ PAIR = .FALSE.
+ ELSE
+*
+ SWAP = SELECT( K )
+ IF( K.LT.N ) THEN
+ IF( A( K+1, K ).NE.ZERO ) THEN
+ PAIR = .TRUE.
+ SWAP = SWAP .OR. SELECT( K+1 )
+ END IF
+ END IF
+*
+ IF( SWAP ) THEN
+ KS = KS + 1
+*
+* Swap the K-th block to position KS.
+* Perform the reordering of diagonal blocks in (A, B)
+* by orthogonal transformation matrices and update
+* Q and Z accordingly (if requested):
+*
+ KK = K
+ IF( K.NE.KS )
+ $ CALL DTGEXC( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ,
+ $ Z, LDZ, KK, KS, WORK, LWORK, IERR )
+*
+ IF( IERR.GT.0 ) THEN
+*
+* Swap is rejected: exit.
+*
+ INFO = 1
+ IF( WANTP ) THEN
+ PL = ZERO
+ PR = ZERO
+ END IF
+ IF( WANTD ) THEN
+ DIF( 1 ) = ZERO
+ DIF( 2 ) = ZERO
+ END IF
+ GO TO 60
+ END IF
+*
+ IF( PAIR )
+ $ KS = KS + 1
+ END IF
+ END IF
+ 30 CONTINUE
+ IF( WANTP ) THEN
+*
+* Solve generalized Sylvester equation for R and L
+* and compute PL and PR.
+*
+ N1 = M
+ N2 = N - M
+ I = N1 + 1
+ IJB = 0
+ CALL DLACPY( 'Full', N1, N2, A( 1, I ), LDA, WORK, N1 )
+ CALL DLACPY( 'Full', N1, N2, B( 1, I ), LDB, WORK( N1*N2+1 ),
+ $ N1 )
+ CALL DTGSYL( 'N', IJB, N1, N2, A, LDA, A( I, I ), LDA, WORK,
+ $ N1, B, LDB, B( I, I ), LDB, WORK( N1*N2+1 ), N1,
+ $ DSCALE, DIF( 1 ), WORK( N1*N2*2+1 ),
+ $ LWORK-2*N1*N2, IWORK, IERR )
+*
+* Estimate the reciprocal of norms of "projections" onto left
+* and right eigenspaces.
+*
+ RDSCAL = ZERO
+ DSUM = ONE
+ CALL DLASSQ( N1*N2, WORK, 1, RDSCAL, DSUM )
+ PL = RDSCAL*SQRT( DSUM )
+ IF( PL.EQ.ZERO ) THEN
+ PL = ONE
+ ELSE
+ PL = DSCALE / ( SQRT( DSCALE*DSCALE / PL+PL )*SQRT( PL ) )
+ END IF
+ RDSCAL = ZERO
+ DSUM = ONE
+ CALL DLASSQ( N1*N2, WORK( N1*N2+1 ), 1, RDSCAL, DSUM )
+ PR = RDSCAL*SQRT( DSUM )
+ IF( PR.EQ.ZERO ) THEN
+ PR = ONE
+ ELSE
+ PR = DSCALE / ( SQRT( DSCALE*DSCALE / PR+PR )*SQRT( PR ) )
+ END IF
+ END IF
+*
+ IF( WANTD ) THEN
+*
+* Compute estimates of Difu and Difl.
+*
+ IF( WANTD1 ) THEN
+ N1 = M
+ N2 = N - M
+ I = N1 + 1
+ IJB = IDIFJB
+*
+* Frobenius norm-based Difu-estimate.
+*
+ CALL DTGSYL( 'N', IJB, N1, N2, A, LDA, A( I, I ), LDA, WORK,
+ $ N1, B, LDB, B( I, I ), LDB, WORK( N1*N2+1 ),
+ $ N1, DSCALE, DIF( 1 ), WORK( 2*N1*N2+1 ),
+ $ LWORK-2*N1*N2, IWORK, IERR )
+*
+* Frobenius norm-based Difl-estimate.
+*
+ CALL DTGSYL( 'N', IJB, N2, N1, A( I, I ), LDA, A, LDA, WORK,
+ $ N2, B( I, I ), LDB, B, LDB, WORK( N1*N2+1 ),
+ $ N2, DSCALE, DIF( 2 ), WORK( 2*N1*N2+1 ),
+ $ LWORK-2*N1*N2, IWORK, IERR )
+ ELSE
+*
+*
+* Compute 1-norm-based estimates of Difu and Difl using
+* reversed communication with DLACN2. In each step a
+* generalized Sylvester equation or a transposed variant
+* is solved.
+*
+ KASE = 0
+ N1 = M
+ N2 = N - M
+ I = N1 + 1
+ IJB = 0
+ MN2 = 2*N1*N2
+*
+* 1-norm-based estimate of Difu.
+*
+ 40 CONTINUE
+ CALL DLACN2( MN2, WORK( MN2+1 ), WORK, IWORK, DIF( 1 ),
+ $ KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Solve generalized Sylvester equation.
+*
+ CALL DTGSYL( 'N', IJB, N1, N2, A, LDA, A( I, I ), LDA,
+ $ WORK, N1, B, LDB, B( I, I ), LDB,
+ $ WORK( N1*N2+1 ), N1, DSCALE, DIF( 1 ),
+ $ WORK( 2*N1*N2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ ELSE
+*
+* Solve the transposed variant.
+*
+ CALL DTGSYL( 'T', IJB, N1, N2, A, LDA, A( I, I ), LDA,
+ $ WORK, N1, B, LDB, B( I, I ), LDB,
+ $ WORK( N1*N2+1 ), N1, DSCALE, DIF( 1 ),
+ $ WORK( 2*N1*N2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ END IF
+ GO TO 40
+ END IF
+ DIF( 1 ) = DSCALE / DIF( 1 )
+*
+* 1-norm-based estimate of Difl.
+*
+ 50 CONTINUE
+ CALL DLACN2( MN2, WORK( MN2+1 ), WORK, IWORK, DIF( 2 ),
+ $ KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Solve generalized Sylvester equation.
+*
+ CALL DTGSYL( 'N', IJB, N2, N1, A( I, I ), LDA, A, LDA,
+ $ WORK, N2, B( I, I ), LDB, B, LDB,
+ $ WORK( N1*N2+1 ), N2, DSCALE, DIF( 2 ),
+ $ WORK( 2*N1*N2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ ELSE
+*
+* Solve the transposed variant.
+*
+ CALL DTGSYL( 'T', IJB, N2, N1, A( I, I ), LDA, A, LDA,
+ $ WORK, N2, B( I, I ), LDB, B, LDB,
+ $ WORK( N1*N2+1 ), N2, DSCALE, DIF( 2 ),
+ $ WORK( 2*N1*N2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ END IF
+ GO TO 50
+ END IF
+ DIF( 2 ) = DSCALE / DIF( 2 )
+*
+ END IF
+ END IF
+*
+ 60 CONTINUE
+*
+* Compute generalized eigenvalues of reordered pair (A, B) and
+* normalize the generalized Schur form.
+*
+ PAIR = .FALSE.
+ DO 80 K = 1, N
+ IF( PAIR ) THEN
+ PAIR = .FALSE.
+ ELSE
+*
+ IF( K.LT.N ) THEN
+ IF( A( K+1, K ).NE.ZERO ) THEN
+ PAIR = .TRUE.
+ END IF
+ END IF
+*
+ IF( PAIR ) THEN
+*
+* Compute the eigenvalue(s) at position K.
+*
+ WORK( 1 ) = A( K, K )
+ WORK( 2 ) = A( K+1, K )
+ WORK( 3 ) = A( K, K+1 )
+ WORK( 4 ) = A( K+1, K+1 )
+ WORK( 5 ) = B( K, K )
+ WORK( 6 ) = B( K+1, K )
+ WORK( 7 ) = B( K, K+1 )
+ WORK( 8 ) = B( K+1, K+1 )
+ CALL DLAG2( WORK, 2, WORK( 5 ), 2, SMLNUM*EPS, BETA( K ),
+ $ BETA( K+1 ), ALPHAR( K ), ALPHAR( K+1 ),
+ $ ALPHAI( K ) )
+ ALPHAI( K+1 ) = -ALPHAI( K )
+*
+ ELSE
+*
+ IF( SIGN( ONE, B( K, K ) ).LT.ZERO ) THEN
+*
+* If B(K,K) is negative, make it positive
+*
+ DO 70 I = 1, N
+ A( K, I ) = -A( K, I )
+ B( K, I ) = -B( K, I )
+ Q( I, K ) = -Q( I, K )
+ 70 CONTINUE
+ END IF
+*
+ ALPHAR( K ) = A( K, K )
+ ALPHAI( K ) = ZERO
+ BETA( K ) = B( K, K )
+*
+ END IF
+ END IF
+ 80 CONTINUE
+*
+ WORK( 1 ) = LWMIN
+ IWORK( 1 ) = LIWMIN
+*
+ RETURN
+*
+* End of DTGSEN
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtgsy2.f b/2.3-1/src/fortran/lapack/dtgsy2.f
new file mode 100644
index 00000000..3ebc912f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtgsy2.f
@@ -0,0 +1,956 @@
+ SUBROUTINE DTGSY2( TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D,
+ $ LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL,
+ $ IWORK, PQ, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER IJOB, INFO, LDA, LDB, LDC, LDD, LDE, LDF, M, N,
+ $ PQ
+ DOUBLE PRECISION RDSCAL, RDSUM, SCALE
+* ..
+* .. Array Arguments ..
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * ),
+ $ D( LDD, * ), E( LDE, * ), F( LDF, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTGSY2 solves the generalized Sylvester equation:
+*
+* A * R - L * B = scale * C (1)
+* D * R - L * E = scale * F,
+*
+* using Level 1 and 2 BLAS. where R and L are unknown M-by-N matrices,
+* (A, D), (B, E) and (C, F) are given matrix pairs of size M-by-M,
+* N-by-N and M-by-N, respectively, with real entries. (A, D) and (B, E)
+* must be in generalized Schur canonical form, i.e. A, B are upper
+* quasi triangular and D, E are upper triangular. The solution (R, L)
+* overwrites (C, F). 0 <= SCALE <= 1 is an output scaling factor
+* chosen to avoid overflow.
+*
+* In matrix notation solving equation (1) corresponds to solve
+* Z*x = scale*b, where Z is defined as
+*
+* Z = [ kron(In, A) -kron(B', Im) ] (2)
+* [ kron(In, D) -kron(E', Im) ],
+*
+* Ik is the identity matrix of size k and X' is the transpose of X.
+* kron(X, Y) is the Kronecker product between the matrices X and Y.
+* In the process of solving (1), we solve a number of such systems
+* where Dim(In), Dim(In) = 1 or 2.
+*
+* If TRANS = 'T', solve the transposed system Z'*y = scale*b for y,
+* which is equivalent to solve for R and L in
+*
+* A' * R + D' * L = scale * C (3)
+* R * B' + L * E' = scale * -F
+*
+* This case is used to compute an estimate of Dif[(A, D), (B, E)] =
+* sigma_min(Z) using reverse communicaton with DLACON.
+*
+* DTGSY2 also (IJOB >= 1) contributes to the computation in STGSYL
+* of an upper bound on the separation between to matrix pairs. Then
+* the input (A, D), (B, E) are sub-pencils of the matrix pair in
+* DTGSYL. See STGSYL for details.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* = 'N', solve the generalized Sylvester equation (1).
+* = 'T': solve the 'transposed' system (3).
+*
+* IJOB (input) INTEGER
+* Specifies what kind of functionality to be performed.
+* = 0: solve (1) only.
+* = 1: A contribution from this subsystem to a Frobenius
+* norm-based estimate of the separation between two matrix
+* pairs is computed. (look ahead strategy is used).
+* = 2: A contribution from this subsystem to a Frobenius
+* norm-based estimate of the separation between two matrix
+* pairs is computed. (DGECON on sub-systems is used.)
+* Not referenced if TRANS = 'T'.
+*
+* M (input) INTEGER
+* On entry, M specifies the order of A and D, and the row
+* dimension of C, F, R and L.
+*
+* N (input) INTEGER
+* On entry, N specifies the order of B and E, and the column
+* dimension of C, F, R and L.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA, M)
+* On entry, A contains an upper quasi triangular matrix.
+*
+* LDA (input) INTEGER
+* The leading dimension of the matrix A. LDA >= max(1, M).
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB, N)
+* On entry, B contains an upper quasi triangular matrix.
+*
+* LDB (input) INTEGER
+* The leading dimension of the matrix B. LDB >= max(1, N).
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC, N)
+* On entry, C contains the right-hand-side of the first matrix
+* equation in (1).
+* On exit, if IJOB = 0, C has been overwritten by the
+* solution R.
+*
+* LDC (input) INTEGER
+* The leading dimension of the matrix C. LDC >= max(1, M).
+*
+* D (input) DOUBLE PRECISION array, dimension (LDD, M)
+* On entry, D contains an upper triangular matrix.
+*
+* LDD (input) INTEGER
+* The leading dimension of the matrix D. LDD >= max(1, M).
+*
+* E (input) DOUBLE PRECISION array, dimension (LDE, N)
+* On entry, E contains an upper triangular matrix.
+*
+* LDE (input) INTEGER
+* The leading dimension of the matrix E. LDE >= max(1, N).
+*
+* F (input/output) DOUBLE PRECISION array, dimension (LDF, N)
+* On entry, F contains the right-hand-side of the second matrix
+* equation in (1).
+* On exit, if IJOB = 0, F has been overwritten by the
+* solution L.
+*
+* LDF (input) INTEGER
+* The leading dimension of the matrix F. LDF >= max(1, M).
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit, 0 <= SCALE <= 1. If 0 < SCALE < 1, the solutions
+* R and L (C and F on entry) will hold the solutions to a
+* slightly perturbed system but the input matrices A, B, D and
+* E have not been changed. If SCALE = 0, R and L will hold the
+* solutions to the homogeneous system with C = F = 0. Normally,
+* SCALE = 1.
+*
+* RDSUM (input/output) DOUBLE PRECISION
+* On entry, the sum of squares of computed contributions to
+* the Dif-estimate under computation by DTGSYL, where the
+* scaling factor RDSCAL (see below) has been factored out.
+* On exit, the corresponding sum of squares updated with the
+* contributions from the current sub-system.
+* If TRANS = 'T' RDSUM is not touched.
+* NOTE: RDSUM only makes sense when DTGSY2 is called by STGSYL.
+*
+* RDSCAL (input/output) DOUBLE PRECISION
+* On entry, scaling factor used to prevent overflow in RDSUM.
+* On exit, RDSCAL is updated w.r.t. the current contributions
+* in RDSUM.
+* If TRANS = 'T', RDSCAL is not touched.
+* NOTE: RDSCAL only makes sense when DTGSY2 is called by
+* DTGSYL.
+*
+* IWORK (workspace) INTEGER array, dimension (M+N+2)
+*
+* PQ (output) INTEGER
+* On exit, the number of subsystems (of size 2-by-2, 4-by-4 and
+* 8-by-8) solved by this routine.
+*
+* INFO (output) INTEGER
+* On exit, if INFO is set to
+* =0: Successful exit
+* <0: If INFO = -i, the i-th argument had an illegal value.
+* >0: The matrix pairs (A, D) and (B, E) have common or very
+* close eigenvalues.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* =====================================================================
+* Replaced various illegal calls to DCOPY by calls to DLASET.
+* Sven Hammarling, 27/5/02.
+*
+* .. Parameters ..
+ INTEGER LDZ
+ PARAMETER ( LDZ = 8 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN
+ INTEGER I, IE, IERR, II, IS, ISP1, J, JE, JJ, JS, JSP1,
+ $ K, MB, NB, P, Q, ZDIM
+ DOUBLE PRECISION ALPHA, SCALOC
+* ..
+* .. Local Arrays ..
+ INTEGER IPIV( LDZ ), JPIV( LDZ )
+ DOUBLE PRECISION RHS( LDZ ), Z( LDZ, LDZ )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMM, DGEMV, DGER, DGESC2,
+ $ DGETC2, DLASET, DLATDF, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode and test input parameters
+*
+ INFO = 0
+ IERR = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -1
+ ELSE IF( NOTRAN ) THEN
+ IF( ( IJOB.LT.0 ) .OR. ( IJOB.GT.2 ) ) THEN
+ INFO = -2
+ END IF
+ END IF
+ IF( INFO.EQ.0 ) THEN
+ IF( M.LE.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LE.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LDD.LT.MAX( 1, M ) ) THEN
+ INFO = -12
+ ELSE IF( LDE.LT.MAX( 1, N ) ) THEN
+ INFO = -14
+ ELSE IF( LDF.LT.MAX( 1, M ) ) THEN
+ INFO = -16
+ END IF
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGSY2', -INFO )
+ RETURN
+ END IF
+*
+* Determine block structure of A
+*
+ PQ = 0
+ P = 0
+ I = 1
+ 10 CONTINUE
+ IF( I.GT.M )
+ $ GO TO 20
+ P = P + 1
+ IWORK( P ) = I
+ IF( I.EQ.M )
+ $ GO TO 20
+ IF( A( I+1, I ).NE.ZERO ) THEN
+ I = I + 2
+ ELSE
+ I = I + 1
+ END IF
+ GO TO 10
+ 20 CONTINUE
+ IWORK( P+1 ) = M + 1
+*
+* Determine block structure of B
+*
+ Q = P + 1
+ J = 1
+ 30 CONTINUE
+ IF( J.GT.N )
+ $ GO TO 40
+ Q = Q + 1
+ IWORK( Q ) = J
+ IF( J.EQ.N )
+ $ GO TO 40
+ IF( B( J+1, J ).NE.ZERO ) THEN
+ J = J + 2
+ ELSE
+ J = J + 1
+ END IF
+ GO TO 30
+ 40 CONTINUE
+ IWORK( Q+1 ) = N + 1
+ PQ = P*( Q-P-1 )
+*
+ IF( NOTRAN ) THEN
+*
+* Solve (I, J) - subsystem
+* A(I, I) * R(I, J) - L(I, J) * B(J, J) = C(I, J)
+* D(I, I) * R(I, J) - L(I, J) * E(J, J) = F(I, J)
+* for I = P, P - 1, ..., 1; J = 1, 2, ..., Q
+*
+ SCALE = ONE
+ SCALOC = ONE
+ DO 120 J = P + 2, Q
+ JS = IWORK( J )
+ JSP1 = JS + 1
+ JE = IWORK( J+1 ) - 1
+ NB = JE - JS + 1
+ DO 110 I = P, 1, -1
+*
+ IS = IWORK( I )
+ ISP1 = IS + 1
+ IE = IWORK( I+1 ) - 1
+ MB = IE - IS + 1
+ ZDIM = MB*NB*2
+*
+ IF( ( MB.EQ.1 ) .AND. ( NB.EQ.1 ) ) THEN
+*
+* Build a 2-by-2 system Z * x = RHS
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = D( IS, IS )
+ Z( 1, 2 ) = -B( JS, JS )
+ Z( 2, 2 ) = -E( JS, JS )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( IS, JS )
+ RHS( 2 ) = F( IS, JS )
+*
+* Solve Z * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+*
+ IF( IJOB.EQ.0 ) THEN
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV,
+ $ SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 50 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 50 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ ELSE
+ CALL DLATDF( IJOB, ZDIM, Z, LDZ, RHS, RDSUM,
+ $ RDSCAL, IPIV, JPIV )
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( IS, JS ) = RHS( 1 )
+ F( IS, JS ) = RHS( 2 )
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( I.GT.1 ) THEN
+ ALPHA = -RHS( 1 )
+ CALL DAXPY( IS-1, ALPHA, A( 1, IS ), 1, C( 1, JS ),
+ $ 1 )
+ CALL DAXPY( IS-1, ALPHA, D( 1, IS ), 1, F( 1, JS ),
+ $ 1 )
+ END IF
+ IF( J.LT.Q ) THEN
+ CALL DAXPY( N-JE, RHS( 2 ), B( JS, JE+1 ), LDB,
+ $ C( IS, JE+1 ), LDC )
+ CALL DAXPY( N-JE, RHS( 2 ), E( JS, JE+1 ), LDE,
+ $ F( IS, JE+1 ), LDF )
+ END IF
+*
+ ELSE IF( ( MB.EQ.1 ) .AND. ( NB.EQ.2 ) ) THEN
+*
+* Build a 4-by-4 system Z * x = RHS
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = ZERO
+ Z( 3, 1 ) = D( IS, IS )
+ Z( 4, 1 ) = ZERO
+*
+ Z( 1, 2 ) = ZERO
+ Z( 2, 2 ) = A( IS, IS )
+ Z( 3, 2 ) = ZERO
+ Z( 4, 2 ) = D( IS, IS )
+*
+ Z( 1, 3 ) = -B( JS, JS )
+ Z( 2, 3 ) = -B( JS, JSP1 )
+ Z( 3, 3 ) = -E( JS, JS )
+ Z( 4, 3 ) = -E( JS, JSP1 )
+*
+ Z( 1, 4 ) = -B( JSP1, JS )
+ Z( 2, 4 ) = -B( JSP1, JSP1 )
+ Z( 3, 4 ) = ZERO
+ Z( 4, 4 ) = -E( JSP1, JSP1 )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( IS, JS )
+ RHS( 2 ) = C( IS, JSP1 )
+ RHS( 3 ) = F( IS, JS )
+ RHS( 4 ) = F( IS, JSP1 )
+*
+* Solve Z * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+*
+ IF( IJOB.EQ.0 ) THEN
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV,
+ $ SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 60 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 60 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ ELSE
+ CALL DLATDF( IJOB, ZDIM, Z, LDZ, RHS, RDSUM,
+ $ RDSCAL, IPIV, JPIV )
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( IS, JS ) = RHS( 1 )
+ C( IS, JSP1 ) = RHS( 2 )
+ F( IS, JS ) = RHS( 3 )
+ F( IS, JSP1 ) = RHS( 4 )
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( I.GT.1 ) THEN
+ CALL DGER( IS-1, NB, -ONE, A( 1, IS ), 1, RHS( 1 ),
+ $ 1, C( 1, JS ), LDC )
+ CALL DGER( IS-1, NB, -ONE, D( 1, IS ), 1, RHS( 1 ),
+ $ 1, F( 1, JS ), LDF )
+ END IF
+ IF( J.LT.Q ) THEN
+ CALL DAXPY( N-JE, RHS( 3 ), B( JS, JE+1 ), LDB,
+ $ C( IS, JE+1 ), LDC )
+ CALL DAXPY( N-JE, RHS( 3 ), E( JS, JE+1 ), LDE,
+ $ F( IS, JE+1 ), LDF )
+ CALL DAXPY( N-JE, RHS( 4 ), B( JSP1, JE+1 ), LDB,
+ $ C( IS, JE+1 ), LDC )
+ CALL DAXPY( N-JE, RHS( 4 ), E( JSP1, JE+1 ), LDE,
+ $ F( IS, JE+1 ), LDF )
+ END IF
+*
+ ELSE IF( ( MB.EQ.2 ) .AND. ( NB.EQ.1 ) ) THEN
+*
+* Build a 4-by-4 system Z * x = RHS
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = A( ISP1, IS )
+ Z( 3, 1 ) = D( IS, IS )
+ Z( 4, 1 ) = ZERO
+*
+ Z( 1, 2 ) = A( IS, ISP1 )
+ Z( 2, 2 ) = A( ISP1, ISP1 )
+ Z( 3, 2 ) = D( IS, ISP1 )
+ Z( 4, 2 ) = D( ISP1, ISP1 )
+*
+ Z( 1, 3 ) = -B( JS, JS )
+ Z( 2, 3 ) = ZERO
+ Z( 3, 3 ) = -E( JS, JS )
+ Z( 4, 3 ) = ZERO
+*
+ Z( 1, 4 ) = ZERO
+ Z( 2, 4 ) = -B( JS, JS )
+ Z( 3, 4 ) = ZERO
+ Z( 4, 4 ) = -E( JS, JS )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( IS, JS )
+ RHS( 2 ) = C( ISP1, JS )
+ RHS( 3 ) = F( IS, JS )
+ RHS( 4 ) = F( ISP1, JS )
+*
+* Solve Z * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+ IF( IJOB.EQ.0 ) THEN
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV,
+ $ SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 70 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 70 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ ELSE
+ CALL DLATDF( IJOB, ZDIM, Z, LDZ, RHS, RDSUM,
+ $ RDSCAL, IPIV, JPIV )
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( IS, JS ) = RHS( 1 )
+ C( ISP1, JS ) = RHS( 2 )
+ F( IS, JS ) = RHS( 3 )
+ F( ISP1, JS ) = RHS( 4 )
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( I.GT.1 ) THEN
+ CALL DGEMV( 'N', IS-1, MB, -ONE, A( 1, IS ), LDA,
+ $ RHS( 1 ), 1, ONE, C( 1, JS ), 1 )
+ CALL DGEMV( 'N', IS-1, MB, -ONE, D( 1, IS ), LDD,
+ $ RHS( 1 ), 1, ONE, F( 1, JS ), 1 )
+ END IF
+ IF( J.LT.Q ) THEN
+ CALL DGER( MB, N-JE, ONE, RHS( 3 ), 1,
+ $ B( JS, JE+1 ), LDB, C( IS, JE+1 ), LDC )
+ CALL DGER( MB, N-JE, ONE, RHS( 3 ), 1,
+ $ E( JS, JE+1 ), LDB, F( IS, JE+1 ), LDC )
+ END IF
+*
+ ELSE IF( ( MB.EQ.2 ) .AND. ( NB.EQ.2 ) ) THEN
+*
+* Build an 8-by-8 system Z * x = RHS
+*
+ CALL DLASET( 'F', LDZ, LDZ, ZERO, ZERO, Z, LDZ )
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = A( ISP1, IS )
+ Z( 5, 1 ) = D( IS, IS )
+*
+ Z( 1, 2 ) = A( IS, ISP1 )
+ Z( 2, 2 ) = A( ISP1, ISP1 )
+ Z( 5, 2 ) = D( IS, ISP1 )
+ Z( 6, 2 ) = D( ISP1, ISP1 )
+*
+ Z( 3, 3 ) = A( IS, IS )
+ Z( 4, 3 ) = A( ISP1, IS )
+ Z( 7, 3 ) = D( IS, IS )
+*
+ Z( 3, 4 ) = A( IS, ISP1 )
+ Z( 4, 4 ) = A( ISP1, ISP1 )
+ Z( 7, 4 ) = D( IS, ISP1 )
+ Z( 8, 4 ) = D( ISP1, ISP1 )
+*
+ Z( 1, 5 ) = -B( JS, JS )
+ Z( 3, 5 ) = -B( JS, JSP1 )
+ Z( 5, 5 ) = -E( JS, JS )
+ Z( 7, 5 ) = -E( JS, JSP1 )
+*
+ Z( 2, 6 ) = -B( JS, JS )
+ Z( 4, 6 ) = -B( JS, JSP1 )
+ Z( 6, 6 ) = -E( JS, JS )
+ Z( 8, 6 ) = -E( JS, JSP1 )
+*
+ Z( 1, 7 ) = -B( JSP1, JS )
+ Z( 3, 7 ) = -B( JSP1, JSP1 )
+ Z( 7, 7 ) = -E( JSP1, JSP1 )
+*
+ Z( 2, 8 ) = -B( JSP1, JS )
+ Z( 4, 8 ) = -B( JSP1, JSP1 )
+ Z( 8, 8 ) = -E( JSP1, JSP1 )
+*
+* Set up right hand side(s)
+*
+ K = 1
+ II = MB*NB + 1
+ DO 80 JJ = 0, NB - 1
+ CALL DCOPY( MB, C( IS, JS+JJ ), 1, RHS( K ), 1 )
+ CALL DCOPY( MB, F( IS, JS+JJ ), 1, RHS( II ), 1 )
+ K = K + MB
+ II = II + MB
+ 80 CONTINUE
+*
+* Solve Z * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+ IF( IJOB.EQ.0 ) THEN
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV,
+ $ SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 90 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 90 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ ELSE
+ CALL DLATDF( IJOB, ZDIM, Z, LDZ, RHS, RDSUM,
+ $ RDSCAL, IPIV, JPIV )
+ END IF
+*
+* Unpack solution vector(s)
+*
+ K = 1
+ II = MB*NB + 1
+ DO 100 JJ = 0, NB - 1
+ CALL DCOPY( MB, RHS( K ), 1, C( IS, JS+JJ ), 1 )
+ CALL DCOPY( MB, RHS( II ), 1, F( IS, JS+JJ ), 1 )
+ K = K + MB
+ II = II + MB
+ 100 CONTINUE
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( I.GT.1 ) THEN
+ CALL DGEMM( 'N', 'N', IS-1, NB, MB, -ONE,
+ $ A( 1, IS ), LDA, RHS( 1 ), MB, ONE,
+ $ C( 1, JS ), LDC )
+ CALL DGEMM( 'N', 'N', IS-1, NB, MB, -ONE,
+ $ D( 1, IS ), LDD, RHS( 1 ), MB, ONE,
+ $ F( 1, JS ), LDF )
+ END IF
+ IF( J.LT.Q ) THEN
+ K = MB*NB + 1
+ CALL DGEMM( 'N', 'N', MB, N-JE, NB, ONE, RHS( K ),
+ $ MB, B( JS, JE+1 ), LDB, ONE,
+ $ C( IS, JE+1 ), LDC )
+ CALL DGEMM( 'N', 'N', MB, N-JE, NB, ONE, RHS( K ),
+ $ MB, E( JS, JE+1 ), LDE, ONE,
+ $ F( IS, JE+1 ), LDF )
+ END IF
+*
+ END IF
+*
+ 110 CONTINUE
+ 120 CONTINUE
+ ELSE
+*
+* Solve (I, J) - subsystem
+* A(I, I)' * R(I, J) + D(I, I)' * L(J, J) = C(I, J)
+* R(I, I) * B(J, J) + L(I, J) * E(J, J) = -F(I, J)
+* for I = 1, 2, ..., P, J = Q, Q - 1, ..., 1
+*
+ SCALE = ONE
+ SCALOC = ONE
+ DO 200 I = 1, P
+*
+ IS = IWORK( I )
+ ISP1 = IS + 1
+ IE = ( I+1 ) - 1
+ MB = IE - IS + 1
+ DO 190 J = Q, P + 2, -1
+*
+ JS = IWORK( J )
+ JSP1 = JS + 1
+ JE = IWORK( J+1 ) - 1
+ NB = JE - JS + 1
+ ZDIM = MB*NB*2
+ IF( ( MB.EQ.1 ) .AND. ( NB.EQ.1 ) ) THEN
+*
+* Build a 2-by-2 system Z' * x = RHS
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = -B( JS, JS )
+ Z( 1, 2 ) = D( IS, IS )
+ Z( 2, 2 ) = -E( JS, JS )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( IS, JS )
+ RHS( 2 ) = F( IS, JS )
+*
+* Solve Z' * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+*
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV, SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 130 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 130 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( IS, JS ) = RHS( 1 )
+ F( IS, JS ) = RHS( 2 )
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( J.GT.P+2 ) THEN
+ ALPHA = RHS( 1 )
+ CALL DAXPY( JS-1, ALPHA, B( 1, JS ), 1, F( IS, 1 ),
+ $ LDF )
+ ALPHA = RHS( 2 )
+ CALL DAXPY( JS-1, ALPHA, E( 1, JS ), 1, F( IS, 1 ),
+ $ LDF )
+ END IF
+ IF( I.LT.P ) THEN
+ ALPHA = -RHS( 1 )
+ CALL DAXPY( M-IE, ALPHA, A( IS, IE+1 ), LDA,
+ $ C( IE+1, JS ), 1 )
+ ALPHA = -RHS( 2 )
+ CALL DAXPY( M-IE, ALPHA, D( IS, IE+1 ), LDD,
+ $ C( IE+1, JS ), 1 )
+ END IF
+*
+ ELSE IF( ( MB.EQ.1 ) .AND. ( NB.EQ.2 ) ) THEN
+*
+* Build a 4-by-4 system Z' * x = RHS
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = ZERO
+ Z( 3, 1 ) = -B( JS, JS )
+ Z( 4, 1 ) = -B( JSP1, JS )
+*
+ Z( 1, 2 ) = ZERO
+ Z( 2, 2 ) = A( IS, IS )
+ Z( 3, 2 ) = -B( JS, JSP1 )
+ Z( 4, 2 ) = -B( JSP1, JSP1 )
+*
+ Z( 1, 3 ) = D( IS, IS )
+ Z( 2, 3 ) = ZERO
+ Z( 3, 3 ) = -E( JS, JS )
+ Z( 4, 3 ) = ZERO
+*
+ Z( 1, 4 ) = ZERO
+ Z( 2, 4 ) = D( IS, IS )
+ Z( 3, 4 ) = -E( JS, JSP1 )
+ Z( 4, 4 ) = -E( JSP1, JSP1 )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( IS, JS )
+ RHS( 2 ) = C( IS, JSP1 )
+ RHS( 3 ) = F( IS, JS )
+ RHS( 4 ) = F( IS, JSP1 )
+*
+* Solve Z' * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV, SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 140 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 140 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( IS, JS ) = RHS( 1 )
+ C( IS, JSP1 ) = RHS( 2 )
+ F( IS, JS ) = RHS( 3 )
+ F( IS, JSP1 ) = RHS( 4 )
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( J.GT.P+2 ) THEN
+ CALL DAXPY( JS-1, RHS( 1 ), B( 1, JS ), 1,
+ $ F( IS, 1 ), LDF )
+ CALL DAXPY( JS-1, RHS( 2 ), B( 1, JSP1 ), 1,
+ $ F( IS, 1 ), LDF )
+ CALL DAXPY( JS-1, RHS( 3 ), E( 1, JS ), 1,
+ $ F( IS, 1 ), LDF )
+ CALL DAXPY( JS-1, RHS( 4 ), E( 1, JSP1 ), 1,
+ $ F( IS, 1 ), LDF )
+ END IF
+ IF( I.LT.P ) THEN
+ CALL DGER( M-IE, NB, -ONE, A( IS, IE+1 ), LDA,
+ $ RHS( 1 ), 1, C( IE+1, JS ), LDC )
+ CALL DGER( M-IE, NB, -ONE, D( IS, IE+1 ), LDD,
+ $ RHS( 3 ), 1, C( IE+1, JS ), LDC )
+ END IF
+*
+ ELSE IF( ( MB.EQ.2 ) .AND. ( NB.EQ.1 ) ) THEN
+*
+* Build a 4-by-4 system Z' * x = RHS
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = A( IS, ISP1 )
+ Z( 3, 1 ) = -B( JS, JS )
+ Z( 4, 1 ) = ZERO
+*
+ Z( 1, 2 ) = A( ISP1, IS )
+ Z( 2, 2 ) = A( ISP1, ISP1 )
+ Z( 3, 2 ) = ZERO
+ Z( 4, 2 ) = -B( JS, JS )
+*
+ Z( 1, 3 ) = D( IS, IS )
+ Z( 2, 3 ) = D( IS, ISP1 )
+ Z( 3, 3 ) = -E( JS, JS )
+ Z( 4, 3 ) = ZERO
+*
+ Z( 1, 4 ) = ZERO
+ Z( 2, 4 ) = D( ISP1, ISP1 )
+ Z( 3, 4 ) = ZERO
+ Z( 4, 4 ) = -E( JS, JS )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( IS, JS )
+ RHS( 2 ) = C( ISP1, JS )
+ RHS( 3 ) = F( IS, JS )
+ RHS( 4 ) = F( ISP1, JS )
+*
+* Solve Z' * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+*
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV, SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 150 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 150 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( IS, JS ) = RHS( 1 )
+ C( ISP1, JS ) = RHS( 2 )
+ F( IS, JS ) = RHS( 3 )
+ F( ISP1, JS ) = RHS( 4 )
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( J.GT.P+2 ) THEN
+ CALL DGER( MB, JS-1, ONE, RHS( 1 ), 1, B( 1, JS ),
+ $ 1, F( IS, 1 ), LDF )
+ CALL DGER( MB, JS-1, ONE, RHS( 3 ), 1, E( 1, JS ),
+ $ 1, F( IS, 1 ), LDF )
+ END IF
+ IF( I.LT.P ) THEN
+ CALL DGEMV( 'T', MB, M-IE, -ONE, A( IS, IE+1 ),
+ $ LDA, RHS( 1 ), 1, ONE, C( IE+1, JS ),
+ $ 1 )
+ CALL DGEMV( 'T', MB, M-IE, -ONE, D( IS, IE+1 ),
+ $ LDD, RHS( 3 ), 1, ONE, C( IE+1, JS ),
+ $ 1 )
+ END IF
+*
+ ELSE IF( ( MB.EQ.2 ) .AND. ( NB.EQ.2 ) ) THEN
+*
+* Build an 8-by-8 system Z' * x = RHS
+*
+ CALL DLASET( 'F', LDZ, LDZ, ZERO, ZERO, Z, LDZ )
+*
+ Z( 1, 1 ) = A( IS, IS )
+ Z( 2, 1 ) = A( IS, ISP1 )
+ Z( 5, 1 ) = -B( JS, JS )
+ Z( 7, 1 ) = -B( JSP1, JS )
+*
+ Z( 1, 2 ) = A( ISP1, IS )
+ Z( 2, 2 ) = A( ISP1, ISP1 )
+ Z( 6, 2 ) = -B( JS, JS )
+ Z( 8, 2 ) = -B( JSP1, JS )
+*
+ Z( 3, 3 ) = A( IS, IS )
+ Z( 4, 3 ) = A( IS, ISP1 )
+ Z( 5, 3 ) = -B( JS, JSP1 )
+ Z( 7, 3 ) = -B( JSP1, JSP1 )
+*
+ Z( 3, 4 ) = A( ISP1, IS )
+ Z( 4, 4 ) = A( ISP1, ISP1 )
+ Z( 6, 4 ) = -B( JS, JSP1 )
+ Z( 8, 4 ) = -B( JSP1, JSP1 )
+*
+ Z( 1, 5 ) = D( IS, IS )
+ Z( 2, 5 ) = D( IS, ISP1 )
+ Z( 5, 5 ) = -E( JS, JS )
+*
+ Z( 2, 6 ) = D( ISP1, ISP1 )
+ Z( 6, 6 ) = -E( JS, JS )
+*
+ Z( 3, 7 ) = D( IS, IS )
+ Z( 4, 7 ) = D( IS, ISP1 )
+ Z( 5, 7 ) = -E( JS, JSP1 )
+ Z( 7, 7 ) = -E( JSP1, JSP1 )
+*
+ Z( 4, 8 ) = D( ISP1, ISP1 )
+ Z( 6, 8 ) = -E( JS, JSP1 )
+ Z( 8, 8 ) = -E( JSP1, JSP1 )
+*
+* Set up right hand side(s)
+*
+ K = 1
+ II = MB*NB + 1
+ DO 160 JJ = 0, NB - 1
+ CALL DCOPY( MB, C( IS, JS+JJ ), 1, RHS( K ), 1 )
+ CALL DCOPY( MB, F( IS, JS+JJ ), 1, RHS( II ), 1 )
+ K = K + MB
+ II = II + MB
+ 160 CONTINUE
+*
+*
+* Solve Z' * x = RHS
+*
+ CALL DGETC2( ZDIM, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+*
+ CALL DGESC2( ZDIM, Z, LDZ, RHS, IPIV, JPIV, SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 170 K = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 170 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Unpack solution vector(s)
+*
+ K = 1
+ II = MB*NB + 1
+ DO 180 JJ = 0, NB - 1
+ CALL DCOPY( MB, RHS( K ), 1, C( IS, JS+JJ ), 1 )
+ CALL DCOPY( MB, RHS( II ), 1, F( IS, JS+JJ ), 1 )
+ K = K + MB
+ II = II + MB
+ 180 CONTINUE
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( J.GT.P+2 ) THEN
+ CALL DGEMM( 'N', 'T', MB, JS-1, NB, ONE,
+ $ C( IS, JS ), LDC, B( 1, JS ), LDB, ONE,
+ $ F( IS, 1 ), LDF )
+ CALL DGEMM( 'N', 'T', MB, JS-1, NB, ONE,
+ $ F( IS, JS ), LDF, E( 1, JS ), LDE, ONE,
+ $ F( IS, 1 ), LDF )
+ END IF
+ IF( I.LT.P ) THEN
+ CALL DGEMM( 'T', 'N', M-IE, NB, MB, -ONE,
+ $ A( IS, IE+1 ), LDA, C( IS, JS ), LDC,
+ $ ONE, C( IE+1, JS ), LDC )
+ CALL DGEMM( 'T', 'N', M-IE, NB, MB, -ONE,
+ $ D( IS, IE+1 ), LDD, F( IS, JS ), LDF,
+ $ ONE, C( IE+1, JS ), LDC )
+ END IF
+*
+ END IF
+*
+ 190 CONTINUE
+ 200 CONTINUE
+*
+ END IF
+ RETURN
+*
+* End of DTGSY2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtgsyl.f b/2.3-1/src/fortran/lapack/dtgsyl.f
new file mode 100644
index 00000000..01866717
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtgsyl.f
@@ -0,0 +1,556 @@
+ SUBROUTINE DTGSYL( TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D,
+ $ LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK,
+ $ IWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER IJOB, INFO, LDA, LDB, LDC, LDD, LDE, LDF,
+ $ LWORK, M, N
+ DOUBLE PRECISION DIF, SCALE
+* ..
+* .. Array Arguments ..
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * ),
+ $ D( LDD, * ), E( LDE, * ), F( LDF, * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTGSYL solves the generalized Sylvester equation:
+*
+* A * R - L * B = scale * C (1)
+* D * R - L * E = scale * F
+*
+* where R and L are unknown m-by-n matrices, (A, D), (B, E) and
+* (C, F) are given matrix pairs of size m-by-m, n-by-n and m-by-n,
+* respectively, with real entries. (A, D) and (B, E) must be in
+* generalized (real) Schur canonical form, i.e. A, B are upper quasi
+* triangular and D, E are upper triangular.
+*
+* The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output
+* scaling factor chosen to avoid overflow.
+*
+* In matrix notation (1) is equivalent to solve Zx = scale b, where
+* Z is defined as
+*
+* Z = [ kron(In, A) -kron(B', Im) ] (2)
+* [ kron(In, D) -kron(E', Im) ].
+*
+* Here Ik is the identity matrix of size k and X' is the transpose of
+* X. kron(X, Y) is the Kronecker product between the matrices X and Y.
+*
+* If TRANS = 'T', DTGSYL solves the transposed system Z'*y = scale*b,
+* which is equivalent to solve for R and L in
+*
+* A' * R + D' * L = scale * C (3)
+* R * B' + L * E' = scale * (-F)
+*
+* This case (TRANS = 'T') is used to compute an one-norm-based estimate
+* of Dif[(A,D), (B,E)], the separation between the matrix pairs (A,D)
+* and (B,E), using DLACON.
+*
+* If IJOB >= 1, DTGSYL computes a Frobenius norm-based estimate
+* of Dif[(A,D),(B,E)]. That is, the reciprocal of a lower bound on the
+* reciprocal of the smallest singular value of Z. See [1-2] for more
+* information.
+*
+* This is a level 3 BLAS algorithm.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* = 'N', solve the generalized Sylvester equation (1).
+* = 'T', solve the 'transposed' system (3).
+*
+* IJOB (input) INTEGER
+* Specifies what kind of functionality to be performed.
+* =0: solve (1) only.
+* =1: The functionality of 0 and 3.
+* =2: The functionality of 0 and 4.
+* =3: Only an estimate of Dif[(A,D), (B,E)] is computed.
+* (look ahead strategy IJOB = 1 is used).
+* =4: Only an estimate of Dif[(A,D), (B,E)] is computed.
+* ( DGECON on sub-systems is used ).
+* Not referenced if TRANS = 'T'.
+*
+* M (input) INTEGER
+* The order of the matrices A and D, and the row dimension of
+* the matrices C, F, R and L.
+*
+* N (input) INTEGER
+* The order of the matrices B and E, and the column dimension
+* of the matrices C, F, R and L.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA, M)
+* The upper quasi triangular matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1, M).
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB, N)
+* The upper quasi triangular matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1, N).
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC, N)
+* On entry, C contains the right-hand-side of the first matrix
+* equation in (1) or (3).
+* On exit, if IJOB = 0, 1 or 2, C has been overwritten by
+* the solution R. If IJOB = 3 or 4 and TRANS = 'N', C holds R,
+* the solution achieved during the computation of the
+* Dif-estimate.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1, M).
+*
+* D (input) DOUBLE PRECISION array, dimension (LDD, M)
+* The upper triangular matrix D.
+*
+* LDD (input) INTEGER
+* The leading dimension of the array D. LDD >= max(1, M).
+*
+* E (input) DOUBLE PRECISION array, dimension (LDE, N)
+* The upper triangular matrix E.
+*
+* LDE (input) INTEGER
+* The leading dimension of the array E. LDE >= max(1, N).
+*
+* F (input/output) DOUBLE PRECISION array, dimension (LDF, N)
+* On entry, F contains the right-hand-side of the second matrix
+* equation in (1) or (3).
+* On exit, if IJOB = 0, 1 or 2, F has been overwritten by
+* the solution L. If IJOB = 3 or 4 and TRANS = 'N', F holds L,
+* the solution achieved during the computation of the
+* Dif-estimate.
+*
+* LDF (input) INTEGER
+* The leading dimension of the array F. LDF >= max(1, M).
+*
+* DIF (output) DOUBLE PRECISION
+* On exit DIF is the reciprocal of a lower bound of the
+* reciprocal of the Dif-function, i.e. DIF is an upper bound of
+* Dif[(A,D), (B,E)] = sigma_min(Z), where Z as in (2).
+* IF IJOB = 0 or TRANS = 'T', DIF is not touched.
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit SCALE is the scaling factor in (1) or (3).
+* If 0 < SCALE < 1, C and F hold the solutions R and L, resp.,
+* to a slightly perturbed system but the input matrices A, B, D
+* and E have not been changed. If SCALE = 0, C and F hold the
+* solutions R and L, respectively, to the homogeneous system
+* with C = F = 0. Normally, SCALE = 1.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK > = 1.
+* If IJOB = 1 or 2 and TRANS = 'N', LWORK >= max(1,2*M*N).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* IWORK (workspace) INTEGER array, dimension (M+N+6)
+*
+* INFO (output) INTEGER
+* =0: successful exit
+* <0: If INFO = -i, the i-th argument had an illegal value.
+* >0: (A, D) and (B, E) have common or close eigenvalues.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* [1] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
+* for Solving the Generalized Sylvester Equation and Estimating the
+* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
+* Department of Computing Science, Umea University, S-901 87 Umea,
+* Sweden, December 1993, Revised April 1994, Also as LAPACK Working
+* Note 75. To appear in ACM Trans. on Math. Software, Vol 22,
+* No 1, 1996.
+*
+* [2] B. Kagstrom, A Perturbation Analysis of the Generalized Sylvester
+* Equation (AR - LB, DR - LE ) = (C, F), SIAM J. Matrix Anal.
+* Appl., 15(4):1045-1060, 1994
+*
+* [3] B. Kagstrom and L. Westin, Generalized Schur Methods with
+* Condition Estimators for Solving the Generalized Sylvester
+* Equation, IEEE Transactions on Automatic Control, Vol. 34, No. 7,
+* July 1989, pp 745-751.
+*
+* =====================================================================
+* Replaced various illegal calls to DCOPY by calls to DLASET.
+* Sven Hammarling, 1/5/02.
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, NOTRAN
+ INTEGER I, IE, IFUNC, IROUND, IS, ISOLVE, J, JE, JS, K,
+ $ LINFO, LWMIN, MB, NB, P, PPQQ, PQ, Q
+ DOUBLE PRECISION DSCALE, DSUM, SCALE2, SCALOC
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DGEMM, DLACPY, DLASET, DSCAL, DTGSY2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode and test input parameters
+*
+ INFO = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+ INFO = -1
+ ELSE IF( NOTRAN ) THEN
+ IF( ( IJOB.LT.0 ) .OR. ( IJOB.GT.4 ) ) THEN
+ INFO = -2
+ END IF
+ END IF
+ IF( INFO.EQ.0 ) THEN
+ IF( M.LE.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LE.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LDD.LT.MAX( 1, M ) ) THEN
+ INFO = -12
+ ELSE IF( LDE.LT.MAX( 1, N ) ) THEN
+ INFO = -14
+ ELSE IF( LDF.LT.MAX( 1, M ) ) THEN
+ INFO = -16
+ END IF
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( NOTRAN ) THEN
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.2 ) THEN
+ LWMIN = MAX( 1, 2*M*N )
+ ELSE
+ LWMIN = 1
+ END IF
+ ELSE
+ LWMIN = 1
+ END IF
+ WORK( 1 ) = LWMIN
+*
+ IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -20
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTGSYL', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ SCALE = 1
+ IF( NOTRAN ) THEN
+ IF( IJOB.NE.0 ) THEN
+ DIF = 0
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Determine optimal block sizes MB and NB
+*
+ MB = ILAENV( 2, 'DTGSYL', TRANS, M, N, -1, -1 )
+ NB = ILAENV( 5, 'DTGSYL', TRANS, M, N, -1, -1 )
+*
+ ISOLVE = 1
+ IFUNC = 0
+ IF( NOTRAN ) THEN
+ IF( IJOB.GE.3 ) THEN
+ IFUNC = IJOB - 2
+ CALL DLASET( 'F', M, N, ZERO, ZERO, C, LDC )
+ CALL DLASET( 'F', M, N, ZERO, ZERO, F, LDF )
+ ELSE IF( IJOB.GE.1 ) THEN
+ ISOLVE = 2
+ END IF
+ END IF
+*
+ IF( ( MB.LE.1 .AND. NB.LE.1 ) .OR. ( MB.GE.M .AND. NB.GE.N ) )
+ $ THEN
+*
+ DO 30 IROUND = 1, ISOLVE
+*
+* Use unblocked Level 2 solver
+*
+ DSCALE = ZERO
+ DSUM = ONE
+ PQ = 0
+ CALL DTGSY2( TRANS, IFUNC, M, N, A, LDA, B, LDB, C, LDC, D,
+ $ LDD, E, LDE, F, LDF, SCALE, DSUM, DSCALE,
+ $ IWORK, PQ, INFO )
+ IF( DSCALE.NE.ZERO ) THEN
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.3 ) THEN
+ DIF = SQRT( DBLE( 2*M*N ) ) / ( DSCALE*SQRT( DSUM ) )
+ ELSE
+ DIF = SQRT( DBLE( PQ ) ) / ( DSCALE*SQRT( DSUM ) )
+ END IF
+ END IF
+*
+ IF( ISOLVE.EQ.2 .AND. IROUND.EQ.1 ) THEN
+ IF( NOTRAN ) THEN
+ IFUNC = IJOB
+ END IF
+ SCALE2 = SCALE
+ CALL DLACPY( 'F', M, N, C, LDC, WORK, M )
+ CALL DLACPY( 'F', M, N, F, LDF, WORK( M*N+1 ), M )
+ CALL DLASET( 'F', M, N, ZERO, ZERO, C, LDC )
+ CALL DLASET( 'F', M, N, ZERO, ZERO, F, LDF )
+ ELSE IF( ISOLVE.EQ.2 .AND. IROUND.EQ.2 ) THEN
+ CALL DLACPY( 'F', M, N, WORK, M, C, LDC )
+ CALL DLACPY( 'F', M, N, WORK( M*N+1 ), M, F, LDF )
+ SCALE = SCALE2
+ END IF
+ 30 CONTINUE
+*
+ RETURN
+ END IF
+*
+* Determine block structure of A
+*
+ P = 0
+ I = 1
+ 40 CONTINUE
+ IF( I.GT.M )
+ $ GO TO 50
+ P = P + 1
+ IWORK( P ) = I
+ I = I + MB
+ IF( I.GE.M )
+ $ GO TO 50
+ IF( A( I, I-1 ).NE.ZERO )
+ $ I = I + 1
+ GO TO 40
+ 50 CONTINUE
+*
+ IWORK( P+1 ) = M + 1
+ IF( IWORK( P ).EQ.IWORK( P+1 ) )
+ $ P = P - 1
+*
+* Determine block structure of B
+*
+ Q = P + 1
+ J = 1
+ 60 CONTINUE
+ IF( J.GT.N )
+ $ GO TO 70
+ Q = Q + 1
+ IWORK( Q ) = J
+ J = J + NB
+ IF( J.GE.N )
+ $ GO TO 70
+ IF( B( J, J-1 ).NE.ZERO )
+ $ J = J + 1
+ GO TO 60
+ 70 CONTINUE
+*
+ IWORK( Q+1 ) = N + 1
+ IF( IWORK( Q ).EQ.IWORK( Q+1 ) )
+ $ Q = Q - 1
+*
+ IF( NOTRAN ) THEN
+*
+ DO 150 IROUND = 1, ISOLVE
+*
+* Solve (I, J)-subsystem
+* A(I, I) * R(I, J) - L(I, J) * B(J, J) = C(I, J)
+* D(I, I) * R(I, J) - L(I, J) * E(J, J) = F(I, J)
+* for I = P, P - 1,..., 1; J = 1, 2,..., Q
+*
+ DSCALE = ZERO
+ DSUM = ONE
+ PQ = 0
+ SCALE = ONE
+ DO 130 J = P + 2, Q
+ JS = IWORK( J )
+ JE = IWORK( J+1 ) - 1
+ NB = JE - JS + 1
+ DO 120 I = P, 1, -1
+ IS = IWORK( I )
+ IE = IWORK( I+1 ) - 1
+ MB = IE - IS + 1
+ PPQQ = 0
+ CALL DTGSY2( TRANS, IFUNC, MB, NB, A( IS, IS ), LDA,
+ $ B( JS, JS ), LDB, C( IS, JS ), LDC,
+ $ D( IS, IS ), LDD, E( JS, JS ), LDE,
+ $ F( IS, JS ), LDF, SCALOC, DSUM, DSCALE,
+ $ IWORK( Q+2 ), PPQQ, LINFO )
+ IF( LINFO.GT.0 )
+ $ INFO = LINFO
+*
+ PQ = PQ + PPQQ
+ IF( SCALOC.NE.ONE ) THEN
+ DO 80 K = 1, JS - 1
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 80 CONTINUE
+ DO 90 K = JS, JE
+ CALL DSCAL( IS-1, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( IS-1, SCALOC, F( 1, K ), 1 )
+ 90 CONTINUE
+ DO 100 K = JS, JE
+ CALL DSCAL( M-IE, SCALOC, C( IE+1, K ), 1 )
+ CALL DSCAL( M-IE, SCALOC, F( IE+1, K ), 1 )
+ 100 CONTINUE
+ DO 110 K = JE + 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 110 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Substitute R(I, J) and L(I, J) into remaining
+* equation.
+*
+ IF( I.GT.1 ) THEN
+ CALL DGEMM( 'N', 'N', IS-1, NB, MB, -ONE,
+ $ A( 1, IS ), LDA, C( IS, JS ), LDC, ONE,
+ $ C( 1, JS ), LDC )
+ CALL DGEMM( 'N', 'N', IS-1, NB, MB, -ONE,
+ $ D( 1, IS ), LDD, C( IS, JS ), LDC, ONE,
+ $ F( 1, JS ), LDF )
+ END IF
+ IF( J.LT.Q ) THEN
+ CALL DGEMM( 'N', 'N', MB, N-JE, NB, ONE,
+ $ F( IS, JS ), LDF, B( JS, JE+1 ), LDB,
+ $ ONE, C( IS, JE+1 ), LDC )
+ CALL DGEMM( 'N', 'N', MB, N-JE, NB, ONE,
+ $ F( IS, JS ), LDF, E( JS, JE+1 ), LDE,
+ $ ONE, F( IS, JE+1 ), LDF )
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ IF( DSCALE.NE.ZERO ) THEN
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.3 ) THEN
+ DIF = SQRT( DBLE( 2*M*N ) ) / ( DSCALE*SQRT( DSUM ) )
+ ELSE
+ DIF = SQRT( DBLE( PQ ) ) / ( DSCALE*SQRT( DSUM ) )
+ END IF
+ END IF
+ IF( ISOLVE.EQ.2 .AND. IROUND.EQ.1 ) THEN
+ IF( NOTRAN ) THEN
+ IFUNC = IJOB
+ END IF
+ SCALE2 = SCALE
+ CALL DLACPY( 'F', M, N, C, LDC, WORK, M )
+ CALL DLACPY( 'F', M, N, F, LDF, WORK( M*N+1 ), M )
+ CALL DLASET( 'F', M, N, ZERO, ZERO, C, LDC )
+ CALL DLASET( 'F', M, N, ZERO, ZERO, F, LDF )
+ ELSE IF( ISOLVE.EQ.2 .AND. IROUND.EQ.2 ) THEN
+ CALL DLACPY( 'F', M, N, WORK, M, C, LDC )
+ CALL DLACPY( 'F', M, N, WORK( M*N+1 ), M, F, LDF )
+ SCALE = SCALE2
+ END IF
+ 150 CONTINUE
+*
+ ELSE
+*
+* Solve transposed (I, J)-subsystem
+* A(I, I)' * R(I, J) + D(I, I)' * L(I, J) = C(I, J)
+* R(I, J) * B(J, J)' + L(I, J) * E(J, J)' = -F(I, J)
+* for I = 1,2,..., P; J = Q, Q-1,..., 1
+*
+ SCALE = ONE
+ DO 210 I = 1, P
+ IS = IWORK( I )
+ IE = IWORK( I+1 ) - 1
+ MB = IE - IS + 1
+ DO 200 J = Q, P + 2, -1
+ JS = IWORK( J )
+ JE = IWORK( J+1 ) - 1
+ NB = JE - JS + 1
+ CALL DTGSY2( TRANS, IFUNC, MB, NB, A( IS, IS ), LDA,
+ $ B( JS, JS ), LDB, C( IS, JS ), LDC,
+ $ D( IS, IS ), LDD, E( JS, JS ), LDE,
+ $ F( IS, JS ), LDF, SCALOC, DSUM, DSCALE,
+ $ IWORK( Q+2 ), PPQQ, LINFO )
+ IF( LINFO.GT.0 )
+ $ INFO = LINFO
+ IF( SCALOC.NE.ONE ) THEN
+ DO 160 K = 1, JS - 1
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 160 CONTINUE
+ DO 170 K = JS, JE
+ CALL DSCAL( IS-1, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( IS-1, SCALOC, F( 1, K ), 1 )
+ 170 CONTINUE
+ DO 180 K = JS, JE
+ CALL DSCAL( M-IE, SCALOC, C( IE+1, K ), 1 )
+ CALL DSCAL( M-IE, SCALOC, F( IE+1, K ), 1 )
+ 180 CONTINUE
+ DO 190 K = JE + 1, N
+ CALL DSCAL( M, SCALOC, C( 1, K ), 1 )
+ CALL DSCAL( M, SCALOC, F( 1, K ), 1 )
+ 190 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Substitute R(I, J) and L(I, J) into remaining equation.
+*
+ IF( J.GT.P+2 ) THEN
+ CALL DGEMM( 'N', 'T', MB, JS-1, NB, ONE, C( IS, JS ),
+ $ LDC, B( 1, JS ), LDB, ONE, F( IS, 1 ),
+ $ LDF )
+ CALL DGEMM( 'N', 'T', MB, JS-1, NB, ONE, F( IS, JS ),
+ $ LDF, E( 1, JS ), LDE, ONE, F( IS, 1 ),
+ $ LDF )
+ END IF
+ IF( I.LT.P ) THEN
+ CALL DGEMM( 'T', 'N', M-IE, NB, MB, -ONE,
+ $ A( IS, IE+1 ), LDA, C( IS, JS ), LDC, ONE,
+ $ C( IE+1, JS ), LDC )
+ CALL DGEMM( 'T', 'N', M-IE, NB, MB, -ONE,
+ $ D( IS, IE+1 ), LDD, F( IS, JS ), LDF, ONE,
+ $ C( IE+1, JS ), LDC )
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+*
+ END IF
+*
+ WORK( 1 ) = LWMIN
+*
+ RETURN
+*
+* End of DTGSYL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrcon.f b/2.3-1/src/fortran/lapack/dtrcon.f
new file mode 100644
index 00000000..23da5927
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrcon.f
@@ -0,0 +1,197 @@
+ SUBROUTINE DTRCON( NORM, UPLO, DIAG, N, A, LDA, RCOND, WORK,
+ $ IWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, NORM, UPLO
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER IWORK( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRCON estimates the reciprocal of the condition number of a
+* triangular matrix A, in either the 1-norm or the infinity-norm.
+*
+* The norm of A is computed and an estimate is obtained for
+* norm(inv(A)), then the reciprocal of the condition number is
+* computed as
+* RCOND = 1 / ( norm(A) * norm(inv(A)) ).
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies whether the 1-norm condition number or the
+* infinity-norm condition number is required:
+* = '1' or 'O': 1-norm;
+* = 'I': Infinity-norm.
+*
+* UPLO (input) CHARACTER*1
+* = 'U': A is upper triangular;
+* = 'L': A is lower triangular.
+*
+* DIAG (input) CHARACTER*1
+* = 'N': A is non-unit triangular;
+* = 'U': A is unit triangular.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The triangular matrix A. If UPLO = 'U', the leading N-by-N
+* upper triangular part of the array A contains the upper
+* triangular matrix, and the strictly lower triangular part of
+* A is not referenced. If UPLO = 'L', the leading N-by-N lower
+* triangular part of the array A contains the lower triangular
+* matrix, and the strictly upper triangular part of A is not
+* referenced. If DIAG = 'U', the diagonal elements of A are
+* also not referenced and are assumed to be 1.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* RCOND (output) DOUBLE PRECISION
+* The reciprocal of the condition number of the matrix A,
+* computed as RCOND = 1/(norm(A) * norm(inv(A))).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* IWORK (workspace) INTEGER array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOUNIT, ONENRM, UPPER
+ CHARACTER NORMIN
+ INTEGER IX, KASE, KASE1
+ DOUBLE PRECISION AINVNM, ANORM, SCALE, SMLNUM, XNORM
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DLANTR
+ EXTERNAL LSAME, IDAMAX, DLAMCH, DLANTR
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACN2, DLATRS, DRSCL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ ONENRM = NORM.EQ.'1' .OR. LSAME( NORM, 'O' )
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+ IF( .NOT.ONENRM .AND. .NOT.LSAME( NORM, 'I' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTRCON', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ RCOND = ONE
+ RETURN
+ END IF
+*
+ RCOND = ZERO
+ SMLNUM = DLAMCH( 'Safe minimum' )*DBLE( MAX( 1, N ) )
+*
+* Compute the norm of the triangular matrix A.
+*
+ ANORM = DLANTR( NORM, UPLO, DIAG, N, N, A, LDA, WORK )
+*
+* Continue only if ANORM > 0.
+*
+ IF( ANORM.GT.ZERO ) THEN
+*
+* Estimate the norm of the inverse of A.
+*
+ AINVNM = ZERO
+ NORMIN = 'N'
+ IF( ONENRM ) THEN
+ KASE1 = 1
+ ELSE
+ KASE1 = 2
+ END IF
+ KASE = 0
+ 10 CONTINUE
+ CALL DLACN2( N, WORK( N+1 ), WORK, IWORK, AINVNM, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.KASE1 ) THEN
+*
+* Multiply by inv(A).
+*
+ CALL DLATRS( UPLO, 'No transpose', DIAG, NORMIN, N, A,
+ $ LDA, WORK, SCALE, WORK( 2*N+1 ), INFO )
+ ELSE
+*
+* Multiply by inv(A').
+*
+ CALL DLATRS( UPLO, 'Transpose', DIAG, NORMIN, N, A, LDA,
+ $ WORK, SCALE, WORK( 2*N+1 ), INFO )
+ END IF
+ NORMIN = 'Y'
+*
+* Multiply by 1/SCALE if doing so will not cause overflow.
+*
+ IF( SCALE.NE.ONE ) THEN
+ IX = IDAMAX( N, WORK, 1 )
+ XNORM = ABS( WORK( IX ) )
+ IF( SCALE.LT.XNORM*SMLNUM .OR. SCALE.EQ.ZERO )
+ $ GO TO 20
+ CALL DRSCL( N, SCALE, WORK, 1 )
+ END IF
+ GO TO 10
+ END IF
+*
+* Compute the estimate of the reciprocal condition number.
+*
+ IF( AINVNM.NE.ZERO )
+ $ RCOND = ( ONE / ANORM ) / AINVNM
+ END IF
+*
+ 20 CONTINUE
+ RETURN
+*
+* End of DTRCON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrevc.f b/2.3-1/src/fortran/lapack/dtrevc.f
new file mode 100644
index 00000000..a0215f02
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrevc.f
@@ -0,0 +1,980 @@
+ SUBROUTINE DTREVC( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR,
+ $ LDVR, MM, M, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER HOWMNY, SIDE
+ INTEGER INFO, LDT, LDVL, LDVR, M, MM, N
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ DOUBLE PRECISION T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTREVC computes some or all of the right and/or left eigenvectors of
+* a real upper quasi-triangular matrix T.
+* Matrices of this type are produced by the Schur factorization of
+* a real general matrix: A = Q*T*Q**T, as computed by DHSEQR.
+*
+* The right eigenvector x and the left eigenvector y of T corresponding
+* to an eigenvalue w are defined by:
+*
+* T*x = w*x, (y**H)*T = w*(y**H)
+*
+* where y**H denotes the conjugate transpose of y.
+* The eigenvalues are not input to this routine, but are read directly
+* from the diagonal blocks of T.
+*
+* This routine returns the matrices X and/or Y of right and left
+* eigenvectors of T, or the products Q*X and/or Q*Y, where Q is an
+* input matrix. If Q is the orthogonal factor that reduces a matrix
+* A to Schur form T, then Q*X and Q*Y are the matrices of right and
+* left eigenvectors of A.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'R': compute right eigenvectors only;
+* = 'L': compute left eigenvectors only;
+* = 'B': compute both right and left eigenvectors.
+*
+* HOWMNY (input) CHARACTER*1
+* = 'A': compute all right and/or left eigenvectors;
+* = 'B': compute all right and/or left eigenvectors,
+* backtransformed by the matrices in VR and/or VL;
+* = 'S': compute selected right and/or left eigenvectors,
+* as indicated by the logical array SELECT.
+*
+* SELECT (input/output) LOGICAL array, dimension (N)
+* If HOWMNY = 'S', SELECT specifies the eigenvectors to be
+* computed.
+* If w(j) is a real eigenvalue, the corresponding real
+* eigenvector is computed if SELECT(j) is .TRUE..
+* If w(j) and w(j+1) are the real and imaginary parts of a
+* complex eigenvalue, the corresponding complex eigenvector is
+* computed if either SELECT(j) or SELECT(j+1) is .TRUE., and
+* on exit SELECT(j) is set to .TRUE. and SELECT(j+1) is set to
+* .FALSE..
+* Not referenced if HOWMNY = 'A' or 'B'.
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input) DOUBLE PRECISION array, dimension (LDT,N)
+* The upper quasi-triangular matrix T in Schur canonical form.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* VL (input/output) DOUBLE PRECISION array, dimension (LDVL,MM)
+* On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must
+* contain an N-by-N matrix Q (usually the orthogonal matrix Q
+* of Schur vectors returned by DHSEQR).
+* On exit, if SIDE = 'L' or 'B', VL contains:
+* if HOWMNY = 'A', the matrix Y of left eigenvectors of T;
+* if HOWMNY = 'B', the matrix Q*Y;
+* if HOWMNY = 'S', the left eigenvectors of T specified by
+* SELECT, stored consecutively in the columns
+* of VL, in the same order as their
+* eigenvalues.
+* A complex eigenvector corresponding to a complex eigenvalue
+* is stored in two consecutive columns, the first holding the
+* real part, and the second the imaginary part.
+* Not referenced if SIDE = 'R'.
+*
+* LDVL (input) INTEGER
+* The leading dimension of the array VL. LDVL >= 1, and if
+* SIDE = 'L' or 'B', LDVL >= N.
+*
+* VR (input/output) DOUBLE PRECISION array, dimension (LDVR,MM)
+* On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must
+* contain an N-by-N matrix Q (usually the orthogonal matrix Q
+* of Schur vectors returned by DHSEQR).
+* On exit, if SIDE = 'R' or 'B', VR contains:
+* if HOWMNY = 'A', the matrix X of right eigenvectors of T;
+* if HOWMNY = 'B', the matrix Q*X;
+* if HOWMNY = 'S', the right eigenvectors of T specified by
+* SELECT, stored consecutively in the columns
+* of VR, in the same order as their
+* eigenvalues.
+* A complex eigenvector corresponding to a complex eigenvalue
+* is stored in two consecutive columns, the first holding the
+* real part and the second the imaginary part.
+* Not referenced if SIDE = 'L'.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the array VR. LDVR >= 1, and if
+* SIDE = 'R' or 'B', LDVR >= N.
+*
+* MM (input) INTEGER
+* The number of columns in the arrays VL and/or VR. MM >= M.
+*
+* M (output) INTEGER
+* The number of columns in the arrays VL and/or VR actually
+* used to store the eigenvectors.
+* If HOWMNY = 'A' or 'B', M is set to N.
+* Each selected real eigenvector occupies one column and each
+* selected complex eigenvector occupies two columns.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The algorithm used in this program is basically backward (forward)
+* substitution, with scaling to make the the code robust against
+* possible overflow.
+*
+* Each eigenvector is normalized so that the element of largest
+* magnitude has magnitude 1; here the magnitude of a complex number
+* (x,y) is taken to be |x| + |y|.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ALLV, BOTHV, LEFTV, OVER, PAIR, RIGHTV, SOMEV
+ INTEGER I, IERR, II, IP, IS, J, J1, J2, JNXT, K, KI, N2
+ DOUBLE PRECISION BETA, BIGNUM, EMAX, OVFL, REC, REMAX, SCALE,
+ $ SMIN, SMLNUM, ULP, UNFL, VCRIT, VMAX, WI, WR,
+ $ XNORM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX
+ DOUBLE PRECISION DDOT, DLAMCH
+ EXTERNAL LSAME, IDAMAX, DDOT, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMV, DLALN2, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION X( 2, 2 )
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters
+*
+ BOTHV = LSAME( SIDE, 'B' )
+ RIGHTV = LSAME( SIDE, 'R' ) .OR. BOTHV
+ LEFTV = LSAME( SIDE, 'L' ) .OR. BOTHV
+*
+ ALLV = LSAME( HOWMNY, 'A' )
+ OVER = LSAME( HOWMNY, 'B' )
+ SOMEV = LSAME( HOWMNY, 'S' )
+*
+ INFO = 0
+ IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
+ INFO = -1
+ ELSE IF( .NOT.ALLV .AND. .NOT.OVER .AND. .NOT.SOMEV ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDVL.LT.1 .OR. ( LEFTV .AND. LDVL.LT.N ) ) THEN
+ INFO = -8
+ ELSE IF( LDVR.LT.1 .OR. ( RIGHTV .AND. LDVR.LT.N ) ) THEN
+ INFO = -10
+ ELSE
+*
+* Set M to the number of columns required to store the selected
+* eigenvectors, standardize the array SELECT if necessary, and
+* test MM.
+*
+ IF( SOMEV ) THEN
+ M = 0
+ PAIR = .FALSE.
+ DO 10 J = 1, N
+ IF( PAIR ) THEN
+ PAIR = .FALSE.
+ SELECT( J ) = .FALSE.
+ ELSE
+ IF( J.LT.N ) THEN
+ IF( T( J+1, J ).EQ.ZERO ) THEN
+ IF( SELECT( J ) )
+ $ M = M + 1
+ ELSE
+ PAIR = .TRUE.
+ IF( SELECT( J ) .OR. SELECT( J+1 ) ) THEN
+ SELECT( J ) = .TRUE.
+ M = M + 2
+ END IF
+ END IF
+ ELSE
+ IF( SELECT( N ) )
+ $ M = M + 1
+ END IF
+ END IF
+ 10 CONTINUE
+ ELSE
+ M = N
+ END IF
+*
+ IF( MM.LT.M ) THEN
+ INFO = -11
+ END IF
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTREVC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Set the constants to control overflow.
+*
+ UNFL = DLAMCH( 'Safe minimum' )
+ OVFL = ONE / UNFL
+ CALL DLABAD( UNFL, OVFL )
+ ULP = DLAMCH( 'Precision' )
+ SMLNUM = UNFL*( N / ULP )
+ BIGNUM = ( ONE-ULP ) / SMLNUM
+*
+* Compute 1-norm of each column of strictly upper triangular
+* part of T to control overflow in triangular solver.
+*
+ WORK( 1 ) = ZERO
+ DO 30 J = 2, N
+ WORK( J ) = ZERO
+ DO 20 I = 1, J - 1
+ WORK( J ) = WORK( J ) + ABS( T( I, J ) )
+ 20 CONTINUE
+ 30 CONTINUE
+*
+* Index IP is used to specify the real or complex eigenvalue:
+* IP = 0, real eigenvalue,
+* 1, first of conjugate complex pair: (wr,wi)
+* -1, second of conjugate complex pair: (wr,wi)
+*
+ N2 = 2*N
+*
+ IF( RIGHTV ) THEN
+*
+* Compute right eigenvectors.
+*
+ IP = 0
+ IS = M
+ DO 140 KI = N, 1, -1
+*
+ IF( IP.EQ.1 )
+ $ GO TO 130
+ IF( KI.EQ.1 )
+ $ GO TO 40
+ IF( T( KI, KI-1 ).EQ.ZERO )
+ $ GO TO 40
+ IP = -1
+*
+ 40 CONTINUE
+ IF( SOMEV ) THEN
+ IF( IP.EQ.0 ) THEN
+ IF( .NOT.SELECT( KI ) )
+ $ GO TO 130
+ ELSE
+ IF( .NOT.SELECT( KI-1 ) )
+ $ GO TO 130
+ END IF
+ END IF
+*
+* Compute the KI-th eigenvalue (WR,WI).
+*
+ WR = T( KI, KI )
+ WI = ZERO
+ IF( IP.NE.0 )
+ $ WI = SQRT( ABS( T( KI, KI-1 ) ) )*
+ $ SQRT( ABS( T( KI-1, KI ) ) )
+ SMIN = MAX( ULP*( ABS( WR )+ABS( WI ) ), SMLNUM )
+*
+ IF( IP.EQ.0 ) THEN
+*
+* Real right eigenvector
+*
+ WORK( KI+N ) = ONE
+*
+* Form right-hand side
+*
+ DO 50 K = 1, KI - 1
+ WORK( K+N ) = -T( K, KI )
+ 50 CONTINUE
+*
+* Solve the upper quasi-triangular system:
+* (T(1:KI-1,1:KI-1) - WR)*X = SCALE*WORK.
+*
+ JNXT = KI - 1
+ DO 60 J = KI - 1, 1, -1
+ IF( J.GT.JNXT )
+ $ GO TO 60
+ J1 = J
+ J2 = J
+ JNXT = J - 1
+ IF( J.GT.1 ) THEN
+ IF( T( J, J-1 ).NE.ZERO ) THEN
+ J1 = J - 1
+ JNXT = J - 2
+ END IF
+ END IF
+*
+ IF( J1.EQ.J2 ) THEN
+*
+* 1-by-1 diagonal block
+*
+ CALL DLALN2( .FALSE., 1, 1, SMIN, ONE, T( J, J ),
+ $ LDT, ONE, ONE, WORK( J+N ), N, WR,
+ $ ZERO, X, 2, SCALE, XNORM, IERR )
+*
+* Scale X(1,1) to avoid overflow when updating
+* the right-hand side.
+*
+ IF( XNORM.GT.ONE ) THEN
+ IF( WORK( J ).GT.BIGNUM / XNORM ) THEN
+ X( 1, 1 ) = X( 1, 1 ) / XNORM
+ SCALE = SCALE / XNORM
+ END IF
+ END IF
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE )
+ $ CALL DSCAL( KI, SCALE, WORK( 1+N ), 1 )
+ WORK( J+N ) = X( 1, 1 )
+*
+* Update right-hand side
+*
+ CALL DAXPY( J-1, -X( 1, 1 ), T( 1, J ), 1,
+ $ WORK( 1+N ), 1 )
+*
+ ELSE
+*
+* 2-by-2 diagonal block
+*
+ CALL DLALN2( .FALSE., 2, 1, SMIN, ONE,
+ $ T( J-1, J-1 ), LDT, ONE, ONE,
+ $ WORK( J-1+N ), N, WR, ZERO, X, 2,
+ $ SCALE, XNORM, IERR )
+*
+* Scale X(1,1) and X(2,1) to avoid overflow when
+* updating the right-hand side.
+*
+ IF( XNORM.GT.ONE ) THEN
+ BETA = MAX( WORK( J-1 ), WORK( J ) )
+ IF( BETA.GT.BIGNUM / XNORM ) THEN
+ X( 1, 1 ) = X( 1, 1 ) / XNORM
+ X( 2, 1 ) = X( 2, 1 ) / XNORM
+ SCALE = SCALE / XNORM
+ END IF
+ END IF
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE )
+ $ CALL DSCAL( KI, SCALE, WORK( 1+N ), 1 )
+ WORK( J-1+N ) = X( 1, 1 )
+ WORK( J+N ) = X( 2, 1 )
+*
+* Update right-hand side
+*
+ CALL DAXPY( J-2, -X( 1, 1 ), T( 1, J-1 ), 1,
+ $ WORK( 1+N ), 1 )
+ CALL DAXPY( J-2, -X( 2, 1 ), T( 1, J ), 1,
+ $ WORK( 1+N ), 1 )
+ END IF
+ 60 CONTINUE
+*
+* Copy the vector x or Q*x to VR and normalize.
+*
+ IF( .NOT.OVER ) THEN
+ CALL DCOPY( KI, WORK( 1+N ), 1, VR( 1, IS ), 1 )
+*
+ II = IDAMAX( KI, VR( 1, IS ), 1 )
+ REMAX = ONE / ABS( VR( II, IS ) )
+ CALL DSCAL( KI, REMAX, VR( 1, IS ), 1 )
+*
+ DO 70 K = KI + 1, N
+ VR( K, IS ) = ZERO
+ 70 CONTINUE
+ ELSE
+ IF( KI.GT.1 )
+ $ CALL DGEMV( 'N', N, KI-1, ONE, VR, LDVR,
+ $ WORK( 1+N ), 1, WORK( KI+N ),
+ $ VR( 1, KI ), 1 )
+*
+ II = IDAMAX( N, VR( 1, KI ), 1 )
+ REMAX = ONE / ABS( VR( II, KI ) )
+ CALL DSCAL( N, REMAX, VR( 1, KI ), 1 )
+ END IF
+*
+ ELSE
+*
+* Complex right eigenvector.
+*
+* Initial solve
+* [ (T(KI-1,KI-1) T(KI-1,KI) ) - (WR + I* WI)]*X = 0.
+* [ (T(KI,KI-1) T(KI,KI) ) ]
+*
+ IF( ABS( T( KI-1, KI ) ).GE.ABS( T( KI, KI-1 ) ) ) THEN
+ WORK( KI-1+N ) = ONE
+ WORK( KI+N2 ) = WI / T( KI-1, KI )
+ ELSE
+ WORK( KI-1+N ) = -WI / T( KI, KI-1 )
+ WORK( KI+N2 ) = ONE
+ END IF
+ WORK( KI+N ) = ZERO
+ WORK( KI-1+N2 ) = ZERO
+*
+* Form right-hand side
+*
+ DO 80 K = 1, KI - 2
+ WORK( K+N ) = -WORK( KI-1+N )*T( K, KI-1 )
+ WORK( K+N2 ) = -WORK( KI+N2 )*T( K, KI )
+ 80 CONTINUE
+*
+* Solve upper quasi-triangular system:
+* (T(1:KI-2,1:KI-2) - (WR+i*WI))*X = SCALE*(WORK+i*WORK2)
+*
+ JNXT = KI - 2
+ DO 90 J = KI - 2, 1, -1
+ IF( J.GT.JNXT )
+ $ GO TO 90
+ J1 = J
+ J2 = J
+ JNXT = J - 1
+ IF( J.GT.1 ) THEN
+ IF( T( J, J-1 ).NE.ZERO ) THEN
+ J1 = J - 1
+ JNXT = J - 2
+ END IF
+ END IF
+*
+ IF( J1.EQ.J2 ) THEN
+*
+* 1-by-1 diagonal block
+*
+ CALL DLALN2( .FALSE., 1, 2, SMIN, ONE, T( J, J ),
+ $ LDT, ONE, ONE, WORK( J+N ), N, WR, WI,
+ $ X, 2, SCALE, XNORM, IERR )
+*
+* Scale X(1,1) and X(1,2) to avoid overflow when
+* updating the right-hand side.
+*
+ IF( XNORM.GT.ONE ) THEN
+ IF( WORK( J ).GT.BIGNUM / XNORM ) THEN
+ X( 1, 1 ) = X( 1, 1 ) / XNORM
+ X( 1, 2 ) = X( 1, 2 ) / XNORM
+ SCALE = SCALE / XNORM
+ END IF
+ END IF
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE ) THEN
+ CALL DSCAL( KI, SCALE, WORK( 1+N ), 1 )
+ CALL DSCAL( KI, SCALE, WORK( 1+N2 ), 1 )
+ END IF
+ WORK( J+N ) = X( 1, 1 )
+ WORK( J+N2 ) = X( 1, 2 )
+*
+* Update the right-hand side
+*
+ CALL DAXPY( J-1, -X( 1, 1 ), T( 1, J ), 1,
+ $ WORK( 1+N ), 1 )
+ CALL DAXPY( J-1, -X( 1, 2 ), T( 1, J ), 1,
+ $ WORK( 1+N2 ), 1 )
+*
+ ELSE
+*
+* 2-by-2 diagonal block
+*
+ CALL DLALN2( .FALSE., 2, 2, SMIN, ONE,
+ $ T( J-1, J-1 ), LDT, ONE, ONE,
+ $ WORK( J-1+N ), N, WR, WI, X, 2, SCALE,
+ $ XNORM, IERR )
+*
+* Scale X to avoid overflow when updating
+* the right-hand side.
+*
+ IF( XNORM.GT.ONE ) THEN
+ BETA = MAX( WORK( J-1 ), WORK( J ) )
+ IF( BETA.GT.BIGNUM / XNORM ) THEN
+ REC = ONE / XNORM
+ X( 1, 1 ) = X( 1, 1 )*REC
+ X( 1, 2 ) = X( 1, 2 )*REC
+ X( 2, 1 ) = X( 2, 1 )*REC
+ X( 2, 2 ) = X( 2, 2 )*REC
+ SCALE = SCALE*REC
+ END IF
+ END IF
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE ) THEN
+ CALL DSCAL( KI, SCALE, WORK( 1+N ), 1 )
+ CALL DSCAL( KI, SCALE, WORK( 1+N2 ), 1 )
+ END IF
+ WORK( J-1+N ) = X( 1, 1 )
+ WORK( J+N ) = X( 2, 1 )
+ WORK( J-1+N2 ) = X( 1, 2 )
+ WORK( J+N2 ) = X( 2, 2 )
+*
+* Update the right-hand side
+*
+ CALL DAXPY( J-2, -X( 1, 1 ), T( 1, J-1 ), 1,
+ $ WORK( 1+N ), 1 )
+ CALL DAXPY( J-2, -X( 2, 1 ), T( 1, J ), 1,
+ $ WORK( 1+N ), 1 )
+ CALL DAXPY( J-2, -X( 1, 2 ), T( 1, J-1 ), 1,
+ $ WORK( 1+N2 ), 1 )
+ CALL DAXPY( J-2, -X( 2, 2 ), T( 1, J ), 1,
+ $ WORK( 1+N2 ), 1 )
+ END IF
+ 90 CONTINUE
+*
+* Copy the vector x or Q*x to VR and normalize.
+*
+ IF( .NOT.OVER ) THEN
+ CALL DCOPY( KI, WORK( 1+N ), 1, VR( 1, IS-1 ), 1 )
+ CALL DCOPY( KI, WORK( 1+N2 ), 1, VR( 1, IS ), 1 )
+*
+ EMAX = ZERO
+ DO 100 K = 1, KI
+ EMAX = MAX( EMAX, ABS( VR( K, IS-1 ) )+
+ $ ABS( VR( K, IS ) ) )
+ 100 CONTINUE
+*
+ REMAX = ONE / EMAX
+ CALL DSCAL( KI, REMAX, VR( 1, IS-1 ), 1 )
+ CALL DSCAL( KI, REMAX, VR( 1, IS ), 1 )
+*
+ DO 110 K = KI + 1, N
+ VR( K, IS-1 ) = ZERO
+ VR( K, IS ) = ZERO
+ 110 CONTINUE
+*
+ ELSE
+*
+ IF( KI.GT.2 ) THEN
+ CALL DGEMV( 'N', N, KI-2, ONE, VR, LDVR,
+ $ WORK( 1+N ), 1, WORK( KI-1+N ),
+ $ VR( 1, KI-1 ), 1 )
+ CALL DGEMV( 'N', N, KI-2, ONE, VR, LDVR,
+ $ WORK( 1+N2 ), 1, WORK( KI+N2 ),
+ $ VR( 1, KI ), 1 )
+ ELSE
+ CALL DSCAL( N, WORK( KI-1+N ), VR( 1, KI-1 ), 1 )
+ CALL DSCAL( N, WORK( KI+N2 ), VR( 1, KI ), 1 )
+ END IF
+*
+ EMAX = ZERO
+ DO 120 K = 1, N
+ EMAX = MAX( EMAX, ABS( VR( K, KI-1 ) )+
+ $ ABS( VR( K, KI ) ) )
+ 120 CONTINUE
+ REMAX = ONE / EMAX
+ CALL DSCAL( N, REMAX, VR( 1, KI-1 ), 1 )
+ CALL DSCAL( N, REMAX, VR( 1, KI ), 1 )
+ END IF
+ END IF
+*
+ IS = IS - 1
+ IF( IP.NE.0 )
+ $ IS = IS - 1
+ 130 CONTINUE
+ IF( IP.EQ.1 )
+ $ IP = 0
+ IF( IP.EQ.-1 )
+ $ IP = 1
+ 140 CONTINUE
+ END IF
+*
+ IF( LEFTV ) THEN
+*
+* Compute left eigenvectors.
+*
+ IP = 0
+ IS = 1
+ DO 260 KI = 1, N
+*
+ IF( IP.EQ.-1 )
+ $ GO TO 250
+ IF( KI.EQ.N )
+ $ GO TO 150
+ IF( T( KI+1, KI ).EQ.ZERO )
+ $ GO TO 150
+ IP = 1
+*
+ 150 CONTINUE
+ IF( SOMEV ) THEN
+ IF( .NOT.SELECT( KI ) )
+ $ GO TO 250
+ END IF
+*
+* Compute the KI-th eigenvalue (WR,WI).
+*
+ WR = T( KI, KI )
+ WI = ZERO
+ IF( IP.NE.0 )
+ $ WI = SQRT( ABS( T( KI, KI+1 ) ) )*
+ $ SQRT( ABS( T( KI+1, KI ) ) )
+ SMIN = MAX( ULP*( ABS( WR )+ABS( WI ) ), SMLNUM )
+*
+ IF( IP.EQ.0 ) THEN
+*
+* Real left eigenvector.
+*
+ WORK( KI+N ) = ONE
+*
+* Form right-hand side
+*
+ DO 160 K = KI + 1, N
+ WORK( K+N ) = -T( KI, K )
+ 160 CONTINUE
+*
+* Solve the quasi-triangular system:
+* (T(KI+1:N,KI+1:N) - WR)'*X = SCALE*WORK
+*
+ VMAX = ONE
+ VCRIT = BIGNUM
+*
+ JNXT = KI + 1
+ DO 170 J = KI + 1, N
+ IF( J.LT.JNXT )
+ $ GO TO 170
+ J1 = J
+ J2 = J
+ JNXT = J + 1
+ IF( J.LT.N ) THEN
+ IF( T( J+1, J ).NE.ZERO ) THEN
+ J2 = J + 1
+ JNXT = J + 2
+ END IF
+ END IF
+*
+ IF( J1.EQ.J2 ) THEN
+*
+* 1-by-1 diagonal block
+*
+* Scale if necessary to avoid overflow when forming
+* the right-hand side.
+*
+ IF( WORK( J ).GT.VCRIT ) THEN
+ REC = ONE / VMAX
+ CALL DSCAL( N-KI+1, REC, WORK( KI+N ), 1 )
+ VMAX = ONE
+ VCRIT = BIGNUM
+ END IF
+*
+ WORK( J+N ) = WORK( J+N ) -
+ $ DDOT( J-KI-1, T( KI+1, J ), 1,
+ $ WORK( KI+1+N ), 1 )
+*
+* Solve (T(J,J)-WR)'*X = WORK
+*
+ CALL DLALN2( .FALSE., 1, 1, SMIN, ONE, T( J, J ),
+ $ LDT, ONE, ONE, WORK( J+N ), N, WR,
+ $ ZERO, X, 2, SCALE, XNORM, IERR )
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE )
+ $ CALL DSCAL( N-KI+1, SCALE, WORK( KI+N ), 1 )
+ WORK( J+N ) = X( 1, 1 )
+ VMAX = MAX( ABS( WORK( J+N ) ), VMAX )
+ VCRIT = BIGNUM / VMAX
+*
+ ELSE
+*
+* 2-by-2 diagonal block
+*
+* Scale if necessary to avoid overflow when forming
+* the right-hand side.
+*
+ BETA = MAX( WORK( J ), WORK( J+1 ) )
+ IF( BETA.GT.VCRIT ) THEN
+ REC = ONE / VMAX
+ CALL DSCAL( N-KI+1, REC, WORK( KI+N ), 1 )
+ VMAX = ONE
+ VCRIT = BIGNUM
+ END IF
+*
+ WORK( J+N ) = WORK( J+N ) -
+ $ DDOT( J-KI-1, T( KI+1, J ), 1,
+ $ WORK( KI+1+N ), 1 )
+*
+ WORK( J+1+N ) = WORK( J+1+N ) -
+ $ DDOT( J-KI-1, T( KI+1, J+1 ), 1,
+ $ WORK( KI+1+N ), 1 )
+*
+* Solve
+* [T(J,J)-WR T(J,J+1) ]'* X = SCALE*( WORK1 )
+* [T(J+1,J) T(J+1,J+1)-WR] ( WORK2 )
+*
+ CALL DLALN2( .TRUE., 2, 1, SMIN, ONE, T( J, J ),
+ $ LDT, ONE, ONE, WORK( J+N ), N, WR,
+ $ ZERO, X, 2, SCALE, XNORM, IERR )
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE )
+ $ CALL DSCAL( N-KI+1, SCALE, WORK( KI+N ), 1 )
+ WORK( J+N ) = X( 1, 1 )
+ WORK( J+1+N ) = X( 2, 1 )
+*
+ VMAX = MAX( ABS( WORK( J+N ) ),
+ $ ABS( WORK( J+1+N ) ), VMAX )
+ VCRIT = BIGNUM / VMAX
+*
+ END IF
+ 170 CONTINUE
+*
+* Copy the vector x or Q*x to VL and normalize.
+*
+ IF( .NOT.OVER ) THEN
+ CALL DCOPY( N-KI+1, WORK( KI+N ), 1, VL( KI, IS ), 1 )
+*
+ II = IDAMAX( N-KI+1, VL( KI, IS ), 1 ) + KI - 1
+ REMAX = ONE / ABS( VL( II, IS ) )
+ CALL DSCAL( N-KI+1, REMAX, VL( KI, IS ), 1 )
+*
+ DO 180 K = 1, KI - 1
+ VL( K, IS ) = ZERO
+ 180 CONTINUE
+*
+ ELSE
+*
+ IF( KI.LT.N )
+ $ CALL DGEMV( 'N', N, N-KI, ONE, VL( 1, KI+1 ), LDVL,
+ $ WORK( KI+1+N ), 1, WORK( KI+N ),
+ $ VL( 1, KI ), 1 )
+*
+ II = IDAMAX( N, VL( 1, KI ), 1 )
+ REMAX = ONE / ABS( VL( II, KI ) )
+ CALL DSCAL( N, REMAX, VL( 1, KI ), 1 )
+*
+ END IF
+*
+ ELSE
+*
+* Complex left eigenvector.
+*
+* Initial solve:
+* ((T(KI,KI) T(KI,KI+1) )' - (WR - I* WI))*X = 0.
+* ((T(KI+1,KI) T(KI+1,KI+1)) )
+*
+ IF( ABS( T( KI, KI+1 ) ).GE.ABS( T( KI+1, KI ) ) ) THEN
+ WORK( KI+N ) = WI / T( KI, KI+1 )
+ WORK( KI+1+N2 ) = ONE
+ ELSE
+ WORK( KI+N ) = ONE
+ WORK( KI+1+N2 ) = -WI / T( KI+1, KI )
+ END IF
+ WORK( KI+1+N ) = ZERO
+ WORK( KI+N2 ) = ZERO
+*
+* Form right-hand side
+*
+ DO 190 K = KI + 2, N
+ WORK( K+N ) = -WORK( KI+N )*T( KI, K )
+ WORK( K+N2 ) = -WORK( KI+1+N2 )*T( KI+1, K )
+ 190 CONTINUE
+*
+* Solve complex quasi-triangular system:
+* ( T(KI+2,N:KI+2,N) - (WR-i*WI) )*X = WORK1+i*WORK2
+*
+ VMAX = ONE
+ VCRIT = BIGNUM
+*
+ JNXT = KI + 2
+ DO 200 J = KI + 2, N
+ IF( J.LT.JNXT )
+ $ GO TO 200
+ J1 = J
+ J2 = J
+ JNXT = J + 1
+ IF( J.LT.N ) THEN
+ IF( T( J+1, J ).NE.ZERO ) THEN
+ J2 = J + 1
+ JNXT = J + 2
+ END IF
+ END IF
+*
+ IF( J1.EQ.J2 ) THEN
+*
+* 1-by-1 diagonal block
+*
+* Scale if necessary to avoid overflow when
+* forming the right-hand side elements.
+*
+ IF( WORK( J ).GT.VCRIT ) THEN
+ REC = ONE / VMAX
+ CALL DSCAL( N-KI+1, REC, WORK( KI+N ), 1 )
+ CALL DSCAL( N-KI+1, REC, WORK( KI+N2 ), 1 )
+ VMAX = ONE
+ VCRIT = BIGNUM
+ END IF
+*
+ WORK( J+N ) = WORK( J+N ) -
+ $ DDOT( J-KI-2, T( KI+2, J ), 1,
+ $ WORK( KI+2+N ), 1 )
+ WORK( J+N2 ) = WORK( J+N2 ) -
+ $ DDOT( J-KI-2, T( KI+2, J ), 1,
+ $ WORK( KI+2+N2 ), 1 )
+*
+* Solve (T(J,J)-(WR-i*WI))*(X11+i*X12)= WK+I*WK2
+*
+ CALL DLALN2( .FALSE., 1, 2, SMIN, ONE, T( J, J ),
+ $ LDT, ONE, ONE, WORK( J+N ), N, WR,
+ $ -WI, X, 2, SCALE, XNORM, IERR )
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE ) THEN
+ CALL DSCAL( N-KI+1, SCALE, WORK( KI+N ), 1 )
+ CALL DSCAL( N-KI+1, SCALE, WORK( KI+N2 ), 1 )
+ END IF
+ WORK( J+N ) = X( 1, 1 )
+ WORK( J+N2 ) = X( 1, 2 )
+ VMAX = MAX( ABS( WORK( J+N ) ),
+ $ ABS( WORK( J+N2 ) ), VMAX )
+ VCRIT = BIGNUM / VMAX
+*
+ ELSE
+*
+* 2-by-2 diagonal block
+*
+* Scale if necessary to avoid overflow when forming
+* the right-hand side elements.
+*
+ BETA = MAX( WORK( J ), WORK( J+1 ) )
+ IF( BETA.GT.VCRIT ) THEN
+ REC = ONE / VMAX
+ CALL DSCAL( N-KI+1, REC, WORK( KI+N ), 1 )
+ CALL DSCAL( N-KI+1, REC, WORK( KI+N2 ), 1 )
+ VMAX = ONE
+ VCRIT = BIGNUM
+ END IF
+*
+ WORK( J+N ) = WORK( J+N ) -
+ $ DDOT( J-KI-2, T( KI+2, J ), 1,
+ $ WORK( KI+2+N ), 1 )
+*
+ WORK( J+N2 ) = WORK( J+N2 ) -
+ $ DDOT( J-KI-2, T( KI+2, J ), 1,
+ $ WORK( KI+2+N2 ), 1 )
+*
+ WORK( J+1+N ) = WORK( J+1+N ) -
+ $ DDOT( J-KI-2, T( KI+2, J+1 ), 1,
+ $ WORK( KI+2+N ), 1 )
+*
+ WORK( J+1+N2 ) = WORK( J+1+N2 ) -
+ $ DDOT( J-KI-2, T( KI+2, J+1 ), 1,
+ $ WORK( KI+2+N2 ), 1 )
+*
+* Solve 2-by-2 complex linear equation
+* ([T(j,j) T(j,j+1) ]'-(wr-i*wi)*I)*X = SCALE*B
+* ([T(j+1,j) T(j+1,j+1)] )
+*
+ CALL DLALN2( .TRUE., 2, 2, SMIN, ONE, T( J, J ),
+ $ LDT, ONE, ONE, WORK( J+N ), N, WR,
+ $ -WI, X, 2, SCALE, XNORM, IERR )
+*
+* Scale if necessary
+*
+ IF( SCALE.NE.ONE ) THEN
+ CALL DSCAL( N-KI+1, SCALE, WORK( KI+N ), 1 )
+ CALL DSCAL( N-KI+1, SCALE, WORK( KI+N2 ), 1 )
+ END IF
+ WORK( J+N ) = X( 1, 1 )
+ WORK( J+N2 ) = X( 1, 2 )
+ WORK( J+1+N ) = X( 2, 1 )
+ WORK( J+1+N2 ) = X( 2, 2 )
+ VMAX = MAX( ABS( X( 1, 1 ) ), ABS( X( 1, 2 ) ),
+ $ ABS( X( 2, 1 ) ), ABS( X( 2, 2 ) ), VMAX )
+ VCRIT = BIGNUM / VMAX
+*
+ END IF
+ 200 CONTINUE
+*
+* Copy the vector x or Q*x to VL and normalize.
+*
+ IF( .NOT.OVER ) THEN
+ CALL DCOPY( N-KI+1, WORK( KI+N ), 1, VL( KI, IS ), 1 )
+ CALL DCOPY( N-KI+1, WORK( KI+N2 ), 1, VL( KI, IS+1 ),
+ $ 1 )
+*
+ EMAX = ZERO
+ DO 220 K = KI, N
+ EMAX = MAX( EMAX, ABS( VL( K, IS ) )+
+ $ ABS( VL( K, IS+1 ) ) )
+ 220 CONTINUE
+ REMAX = ONE / EMAX
+ CALL DSCAL( N-KI+1, REMAX, VL( KI, IS ), 1 )
+ CALL DSCAL( N-KI+1, REMAX, VL( KI, IS+1 ), 1 )
+*
+ DO 230 K = 1, KI - 1
+ VL( K, IS ) = ZERO
+ VL( K, IS+1 ) = ZERO
+ 230 CONTINUE
+ ELSE
+ IF( KI.LT.N-1 ) THEN
+ CALL DGEMV( 'N', N, N-KI-1, ONE, VL( 1, KI+2 ),
+ $ LDVL, WORK( KI+2+N ), 1, WORK( KI+N ),
+ $ VL( 1, KI ), 1 )
+ CALL DGEMV( 'N', N, N-KI-1, ONE, VL( 1, KI+2 ),
+ $ LDVL, WORK( KI+2+N2 ), 1,
+ $ WORK( KI+1+N2 ), VL( 1, KI+1 ), 1 )
+ ELSE
+ CALL DSCAL( N, WORK( KI+N ), VL( 1, KI ), 1 )
+ CALL DSCAL( N, WORK( KI+1+N2 ), VL( 1, KI+1 ), 1 )
+ END IF
+*
+ EMAX = ZERO
+ DO 240 K = 1, N
+ EMAX = MAX( EMAX, ABS( VL( K, KI ) )+
+ $ ABS( VL( K, KI+1 ) ) )
+ 240 CONTINUE
+ REMAX = ONE / EMAX
+ CALL DSCAL( N, REMAX, VL( 1, KI ), 1 )
+ CALL DSCAL( N, REMAX, VL( 1, KI+1 ), 1 )
+*
+ END IF
+*
+ END IF
+*
+ IS = IS + 1
+ IF( IP.NE.0 )
+ $ IS = IS + 1
+ 250 CONTINUE
+ IF( IP.EQ.-1 )
+ $ IP = 0
+ IF( IP.EQ.1 )
+ $ IP = -1
+*
+ 260 CONTINUE
+*
+ END IF
+*
+ RETURN
+*
+* End of DTREVC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrexc.f b/2.3-1/src/fortran/lapack/dtrexc.f
new file mode 100644
index 00000000..db9be753
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrexc.f
@@ -0,0 +1,345 @@
+ SUBROUTINE DTREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ
+ INTEGER IFST, ILST, INFO, LDQ, LDT, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTREXC reorders the real Schur factorization of a real matrix
+* A = Q*T*Q**T, so that the diagonal block of T with row index IFST is
+* moved to row ILST.
+*
+* The real Schur form T is reordered by an orthogonal similarity
+* transformation Z**T*T*Z, and optionally the matrix Q of Schur vectors
+* is updated by postmultiplying it with Z.
+*
+* T must be in Schur canonical form (as returned by DHSEQR), that is,
+* block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each
+* 2-by-2 diagonal block has its diagonal elements equal and its
+* off-diagonal elements of opposite sign.
+*
+* Arguments
+* =========
+*
+* COMPQ (input) CHARACTER*1
+* = 'V': update the matrix Q of Schur vectors;
+* = 'N': do not update Q.
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input/output) DOUBLE PRECISION array, dimension (LDT,N)
+* On entry, the upper quasi-triangular matrix T, in Schur
+* Schur canonical form.
+* On exit, the reordered upper quasi-triangular matrix, again
+* in Schur canonical form.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
+* On entry, if COMPQ = 'V', the matrix Q of Schur vectors.
+* On exit, if COMPQ = 'V', Q has been postmultiplied by the
+* orthogonal transformation matrix Z which reorders T.
+* If COMPQ = 'N', Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= max(1,N).
+*
+* IFST (input/output) INTEGER
+* ILST (input/output) INTEGER
+* Specify the reordering of the diagonal blocks of T.
+* The block with row index IFST is moved to row ILST, by a
+* sequence of transpositions between adjacent blocks.
+* On exit, if IFST pointed on entry to the second row of a
+* 2-by-2 block, it is changed to point to the first row; ILST
+* always points to the first row of the block in its final
+* position (which may differ from its input value by +1 or -1).
+* 1 <= IFST <= N; 1 <= ILST <= N.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* = 1: two adjacent blocks were too close to swap (the problem
+* is very ill-conditioned); T may have been partially
+* reordered, and ILST points to the first row of the
+* current position of the block being moved.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL WANTQ
+ INTEGER HERE, NBF, NBL, NBNEXT
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAEXC, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input arguments.
+*
+ INFO = 0
+ WANTQ = LSAME( COMPQ, 'V' )
+ IF( .NOT.WANTQ .AND. .NOT.LSAME( COMPQ, 'N' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -6
+ ELSE IF( IFST.LT.1 .OR. IFST.GT.N ) THEN
+ INFO = -7
+ ELSE IF( ILST.LT.1 .OR. ILST.GT.N ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTREXC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+* Determine the first row of specified block
+* and find out it is 1 by 1 or 2 by 2.
+*
+ IF( IFST.GT.1 ) THEN
+ IF( T( IFST, IFST-1 ).NE.ZERO )
+ $ IFST = IFST - 1
+ END IF
+ NBF = 1
+ IF( IFST.LT.N ) THEN
+ IF( T( IFST+1, IFST ).NE.ZERO )
+ $ NBF = 2
+ END IF
+*
+* Determine the first row of the final block
+* and find out it is 1 by 1 or 2 by 2.
+*
+ IF( ILST.GT.1 ) THEN
+ IF( T( ILST, ILST-1 ).NE.ZERO )
+ $ ILST = ILST - 1
+ END IF
+ NBL = 1
+ IF( ILST.LT.N ) THEN
+ IF( T( ILST+1, ILST ).NE.ZERO )
+ $ NBL = 2
+ END IF
+*
+ IF( IFST.EQ.ILST )
+ $ RETURN
+*
+ IF( IFST.LT.ILST ) THEN
+*
+* Update ILST
+*
+ IF( NBF.EQ.2 .AND. NBL.EQ.1 )
+ $ ILST = ILST - 1
+ IF( NBF.EQ.1 .AND. NBL.EQ.2 )
+ $ ILST = ILST + 1
+*
+ HERE = IFST
+*
+ 10 CONTINUE
+*
+* Swap block with next one below
+*
+ IF( NBF.EQ.1 .OR. NBF.EQ.2 ) THEN
+*
+* Current block either 1 by 1 or 2 by 2
+*
+ NBNEXT = 1
+ IF( HERE+NBF+1.LE.N ) THEN
+ IF( T( HERE+NBF+1, HERE+NBF ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE, NBF, NBNEXT,
+ $ WORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + NBNEXT
+*
+* Test if 2 by 2 block breaks into two 1 by 1 blocks
+*
+ IF( NBF.EQ.2 ) THEN
+ IF( T( HERE+1, HERE ).EQ.ZERO )
+ $ NBF = 3
+ END IF
+*
+ ELSE
+*
+* Current block consists of two 1 by 1 blocks each of which
+* must be swapped individually
+*
+ NBNEXT = 1
+ IF( HERE+3.LE.N ) THEN
+ IF( T( HERE+3, HERE+2 ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE+1, 1, NBNEXT,
+ $ WORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ IF( NBNEXT.EQ.1 ) THEN
+*
+* Swap two 1 by 1 blocks, no problems possible
+*
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE, 1, NBNEXT,
+ $ WORK, INFO )
+ HERE = HERE + 1
+ ELSE
+*
+* Recompute NBNEXT in case 2 by 2 split
+*
+ IF( T( HERE+2, HERE+1 ).EQ.ZERO )
+ $ NBNEXT = 1
+ IF( NBNEXT.EQ.2 ) THEN
+*
+* 2 by 2 Block did not split
+*
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE, 1,
+ $ NBNEXT, WORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + 2
+ ELSE
+*
+* 2 by 2 Block did split
+*
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE, 1, 1,
+ $ WORK, INFO )
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE+1, 1, 1,
+ $ WORK, INFO )
+ HERE = HERE + 2
+ END IF
+ END IF
+ END IF
+ IF( HERE.LT.ILST )
+ $ GO TO 10
+*
+ ELSE
+*
+ HERE = IFST
+ 20 CONTINUE
+*
+* Swap block with next one above
+*
+ IF( NBF.EQ.1 .OR. NBF.EQ.2 ) THEN
+*
+* Current block either 1 by 1 or 2 by 2
+*
+ NBNEXT = 1
+ IF( HERE.GE.3 ) THEN
+ IF( T( HERE-1, HERE-2 ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE-NBNEXT, NBNEXT,
+ $ NBF, WORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - NBNEXT
+*
+* Test if 2 by 2 block breaks into two 1 by 1 blocks
+*
+ IF( NBF.EQ.2 ) THEN
+ IF( T( HERE+1, HERE ).EQ.ZERO )
+ $ NBF = 3
+ END IF
+*
+ ELSE
+*
+* Current block consists of two 1 by 1 blocks each of which
+* must be swapped individually
+*
+ NBNEXT = 1
+ IF( HERE.GE.3 ) THEN
+ IF( T( HERE-1, HERE-2 ).NE.ZERO )
+ $ NBNEXT = 2
+ END IF
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE-NBNEXT, NBNEXT,
+ $ 1, WORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ IF( NBNEXT.EQ.1 ) THEN
+*
+* Swap two 1 by 1 blocks, no problems possible
+*
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE, NBNEXT, 1,
+ $ WORK, INFO )
+ HERE = HERE - 1
+ ELSE
+*
+* Recompute NBNEXT in case 2 by 2 split
+*
+ IF( T( HERE, HERE-1 ).EQ.ZERO )
+ $ NBNEXT = 1
+ IF( NBNEXT.EQ.2 ) THEN
+*
+* 2 by 2 Block did not split
+*
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE-1, 2, 1,
+ $ WORK, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - 2
+ ELSE
+*
+* 2 by 2 Block did split
+*
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE, 1, 1,
+ $ WORK, INFO )
+ CALL DLAEXC( WANTQ, N, T, LDT, Q, LDQ, HERE-1, 1, 1,
+ $ WORK, INFO )
+ HERE = HERE - 2
+ END IF
+ END IF
+ END IF
+ IF( HERE.GT.ILST )
+ $ GO TO 20
+ END IF
+ ILST = HERE
+*
+ RETURN
+*
+* End of DTREXC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrsen.f b/2.3-1/src/fortran/lapack/dtrsen.f
new file mode 100644
index 00000000..1d3ab03a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrsen.f
@@ -0,0 +1,459 @@
+ SUBROUTINE DTRSEN( JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, WR, WI,
+ $ M, S, SEP, WORK, LWORK, IWORK, LIWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ, JOB
+ INTEGER INFO, LDQ, LDT, LIWORK, LWORK, M, N
+ DOUBLE PRECISION S, SEP
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ INTEGER IWORK( * )
+ DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WI( * ), WORK( * ),
+ $ WR( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRSEN reorders the real Schur factorization of a real matrix
+* A = Q*T*Q**T, so that a selected cluster of eigenvalues appears in
+* the leading diagonal blocks of the upper quasi-triangular matrix T,
+* and the leading columns of Q form an orthonormal basis of the
+* corresponding right invariant subspace.
+*
+* Optionally the routine computes the reciprocal condition numbers of
+* the cluster of eigenvalues and/or the invariant subspace.
+*
+* T must be in Schur canonical form (as returned by DHSEQR), that is,
+* block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each
+* 2-by-2 diagonal block has its diagonal elemnts equal and its
+* off-diagonal elements of opposite sign.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies whether condition numbers are required for the
+* cluster of eigenvalues (S) or the invariant subspace (SEP):
+* = 'N': none;
+* = 'E': for eigenvalues only (S);
+* = 'V': for invariant subspace only (SEP);
+* = 'B': for both eigenvalues and invariant subspace (S and
+* SEP).
+*
+* COMPQ (input) CHARACTER*1
+* = 'V': update the matrix Q of Schur vectors;
+* = 'N': do not update Q.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* SELECT specifies the eigenvalues in the selected cluster. To
+* select a real eigenvalue w(j), SELECT(j) must be set to
+* .TRUE.. To select a complex conjugate pair of eigenvalues
+* w(j) and w(j+1), corresponding to a 2-by-2 diagonal block,
+* either SELECT(j) or SELECT(j+1) or both must be set to
+* .TRUE.; a complex conjugate pair of eigenvalues must be
+* either both included in the cluster or both excluded.
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input/output) DOUBLE PRECISION array, dimension (LDT,N)
+* On entry, the upper quasi-triangular matrix T, in Schur
+* canonical form.
+* On exit, T is overwritten by the reordered matrix T, again in
+* Schur canonical form, with the selected eigenvalues in the
+* leading diagonal blocks.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
+* On entry, if COMPQ = 'V', the matrix Q of Schur vectors.
+* On exit, if COMPQ = 'V', Q has been postmultiplied by the
+* orthogonal transformation matrix which reorders T; the
+* leading M columns of Q form an orthonormal basis for the
+* specified invariant subspace.
+* If COMPQ = 'N', Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q.
+* LDQ >= 1; and if COMPQ = 'V', LDQ >= N.
+*
+* WR (output) DOUBLE PRECISION array, dimension (N)
+* WI (output) DOUBLE PRECISION array, dimension (N)
+* The real and imaginary parts, respectively, of the reordered
+* eigenvalues of T. The eigenvalues are stored in the same
+* order as on the diagonal of T, with WR(i) = T(i,i) and, if
+* T(i:i+1,i:i+1) is a 2-by-2 diagonal block, WI(i) > 0 and
+* WI(i+1) = -WI(i). Note that if a complex eigenvalue is
+* sufficiently ill-conditioned, then its value may differ
+* significantly from its value before reordering.
+*
+* M (output) INTEGER
+* The dimension of the specified invariant subspace.
+* 0 < = M <= N.
+*
+* S (output) DOUBLE PRECISION
+* If JOB = 'E' or 'B', S is a lower bound on the reciprocal
+* condition number for the selected cluster of eigenvalues.
+* S cannot underestimate the true reciprocal condition number
+* by more than a factor of sqrt(N). If M = 0 or N, S = 1.
+* If JOB = 'N' or 'V', S is not referenced.
+*
+* SEP (output) DOUBLE PRECISION
+* If JOB = 'V' or 'B', SEP is the estimated reciprocal
+* condition number of the specified invariant subspace. If
+* M = 0 or N, SEP = norm(T).
+* If JOB = 'N' or 'E', SEP is not referenced.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If JOB = 'N', LWORK >= max(1,N);
+* if JOB = 'E', LWORK >= max(1,M*(N-M));
+* if JOB = 'V' or 'B', LWORK >= max(1,2*M*(N-M)).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* IWORK (workspace) INTEGER array, dimension (MAX(1,LIWORK))
+* On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
+*
+* LIWORK (input) INTEGER
+* The dimension of the array IWORK.
+* If JOB = 'N' or 'E', LIWORK >= 1;
+* if JOB = 'V' or 'B', LIWORK >= max(1,M*(N-M)).
+*
+* If LIWORK = -1, then a workspace query is assumed; the
+* routine only calculates the optimal size of the IWORK array,
+* returns this value as the first entry of the IWORK array, and
+* no error message related to LIWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* = 1: reordering of T failed because some eigenvalues are too
+* close to separate (the problem is very ill-conditioned);
+* T may have been partially reordered, and WR and WI
+* contain the eigenvalues in the same order as in T; S and
+* SEP (if requested) are set to zero.
+*
+* Further Details
+* ===============
+*
+* DTRSEN first collects the selected eigenvalues by computing an
+* orthogonal transformation Z to move them to the top left corner of T.
+* In other words, the selected eigenvalues are the eigenvalues of T11
+* in:
+*
+* Z'*T*Z = ( T11 T12 ) n1
+* ( 0 T22 ) n2
+* n1 n2
+*
+* where N = n1+n2 and Z' means the transpose of Z. The first n1 columns
+* of Z span the specified invariant subspace of T.
+*
+* If T has been obtained from the real Schur factorization of a matrix
+* A = Q*T*Q', then the reordered real Schur factorization of A is given
+* by A = (Q*Z)*(Z'*T*Z)*(Q*Z)', and the first n1 columns of Q*Z span
+* the corresponding invariant subspace of A.
+*
+* The reciprocal condition number of the average of the eigenvalues of
+* T11 may be returned in S. S lies between 0 (very badly conditioned)
+* and 1 (very well conditioned). It is computed as follows. First we
+* compute R so that
+*
+* P = ( I R ) n1
+* ( 0 0 ) n2
+* n1 n2
+*
+* is the projector on the invariant subspace associated with T11.
+* R is the solution of the Sylvester equation:
+*
+* T11*R - R*T22 = T12.
+*
+* Let F-norm(M) denote the Frobenius-norm of M and 2-norm(M) denote
+* the two-norm of M. Then S is computed as the lower bound
+*
+* (1 + F-norm(R)**2)**(-1/2)
+*
+* on the reciprocal of 2-norm(P), the true reciprocal condition number.
+* S cannot underestimate 1 / 2-norm(P) by more than a factor of
+* sqrt(N).
+*
+* An approximate error bound for the computed average of the
+* eigenvalues of T11 is
+*
+* EPS * norm(T) / S
+*
+* where EPS is the machine precision.
+*
+* The reciprocal condition number of the right invariant subspace
+* spanned by the first n1 columns of Z (or of Q*Z) is returned in SEP.
+* SEP is defined as the separation of T11 and T22:
+*
+* sep( T11, T22 ) = sigma-min( C )
+*
+* where sigma-min(C) is the smallest singular value of the
+* n1*n2-by-n1*n2 matrix
+*
+* C = kprod( I(n2), T11 ) - kprod( transpose(T22), I(n1) )
+*
+* I(m) is an m by m identity matrix, and kprod denotes the Kronecker
+* product. We estimate sigma-min(C) by the reciprocal of an estimate of
+* the 1-norm of inverse(C). The true reciprocal 1-norm of inverse(C)
+* cannot differ from sigma-min(C) by more than a factor of sqrt(n1*n2).
+*
+* When SEP is small, small changes in T can cause large changes in
+* the invariant subspace. An approximate bound on the maximum angular
+* error in the computed right invariant subspace is
+*
+* EPS * norm(T) / SEP
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, PAIR, SWAP, WANTBH, WANTQ, WANTS,
+ $ WANTSP
+ INTEGER IERR, K, KASE, KK, KS, LIWMIN, LWMIN, N1, N2,
+ $ NN
+ DOUBLE PRECISION EST, RNORM, SCALE
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLANGE
+ EXTERNAL LSAME, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLACN2, DLACPY, DTREXC, DTRSYL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters
+*
+ WANTBH = LSAME( JOB, 'B' )
+ WANTS = LSAME( JOB, 'E' ) .OR. WANTBH
+ WANTSP = LSAME( JOB, 'V' ) .OR. WANTBH
+ WANTQ = LSAME( COMPQ, 'V' )
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.WANTS .AND. .NOT.WANTSP )
+ $ THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( COMPQ, 'N' ) .AND. .NOT.WANTQ ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.N ) ) THEN
+ INFO = -8
+ ELSE
+*
+* Set M to the dimension of the specified invariant subspace,
+* and test LWORK and LIWORK.
+*
+ M = 0
+ PAIR = .FALSE.
+ DO 10 K = 1, N
+ IF( PAIR ) THEN
+ PAIR = .FALSE.
+ ELSE
+ IF( K.LT.N ) THEN
+ IF( T( K+1, K ).EQ.ZERO ) THEN
+ IF( SELECT( K ) )
+ $ M = M + 1
+ ELSE
+ PAIR = .TRUE.
+ IF( SELECT( K ) .OR. SELECT( K+1 ) )
+ $ M = M + 2
+ END IF
+ ELSE
+ IF( SELECT( N ) )
+ $ M = M + 1
+ END IF
+ END IF
+ 10 CONTINUE
+*
+ N1 = M
+ N2 = N - M
+ NN = N1*N2
+*
+ IF( WANTSP ) THEN
+ LWMIN = MAX( 1, 2*NN )
+ LIWMIN = MAX( 1, NN )
+ ELSE IF( LSAME( JOB, 'N' ) ) THEN
+ LWMIN = MAX( 1, N )
+ LIWMIN = 1
+ ELSE IF( LSAME( JOB, 'E' ) ) THEN
+ LWMIN = MAX( 1, NN )
+ LIWMIN = 1
+ END IF
+*
+ IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -15
+ ELSE IF( LIWORK.LT.LIWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -17
+ END IF
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ WORK( 1 ) = LWMIN
+ IWORK( 1 ) = LIWMIN
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTRSEN', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( M.EQ.N .OR. M.EQ.0 ) THEN
+ IF( WANTS )
+ $ S = ONE
+ IF( WANTSP )
+ $ SEP = DLANGE( '1', N, N, T, LDT, WORK )
+ GO TO 40
+ END IF
+*
+* Collect the selected blocks at the top-left corner of T.
+*
+ KS = 0
+ PAIR = .FALSE.
+ DO 20 K = 1, N
+ IF( PAIR ) THEN
+ PAIR = .FALSE.
+ ELSE
+ SWAP = SELECT( K )
+ IF( K.LT.N ) THEN
+ IF( T( K+1, K ).NE.ZERO ) THEN
+ PAIR = .TRUE.
+ SWAP = SWAP .OR. SELECT( K+1 )
+ END IF
+ END IF
+ IF( SWAP ) THEN
+ KS = KS + 1
+*
+* Swap the K-th block to position KS.
+*
+ IERR = 0
+ KK = K
+ IF( K.NE.KS )
+ $ CALL DTREXC( COMPQ, N, T, LDT, Q, LDQ, KK, KS, WORK,
+ $ IERR )
+ IF( IERR.EQ.1 .OR. IERR.EQ.2 ) THEN
+*
+* Blocks too close to swap: exit.
+*
+ INFO = 1
+ IF( WANTS )
+ $ S = ZERO
+ IF( WANTSP )
+ $ SEP = ZERO
+ GO TO 40
+ END IF
+ IF( PAIR )
+ $ KS = KS + 1
+ END IF
+ END IF
+ 20 CONTINUE
+*
+ IF( WANTS ) THEN
+*
+* Solve Sylvester equation for R:
+*
+* T11*R - R*T22 = scale*T12
+*
+ CALL DLACPY( 'F', N1, N2, T( 1, N1+1 ), LDT, WORK, N1 )
+ CALL DTRSYL( 'N', 'N', -1, N1, N2, T, LDT, T( N1+1, N1+1 ),
+ $ LDT, WORK, N1, SCALE, IERR )
+*
+* Estimate the reciprocal of the condition number of the cluster
+* of eigenvalues.
+*
+ RNORM = DLANGE( 'F', N1, N2, WORK, N1, WORK )
+ IF( RNORM.EQ.ZERO ) THEN
+ S = ONE
+ ELSE
+ S = SCALE / ( SQRT( SCALE*SCALE / RNORM+RNORM )*
+ $ SQRT( RNORM ) )
+ END IF
+ END IF
+*
+ IF( WANTSP ) THEN
+*
+* Estimate sep(T11,T22).
+*
+ EST = ZERO
+ KASE = 0
+ 30 CONTINUE
+ CALL DLACN2( NN, WORK( NN+1 ), WORK, IWORK, EST, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Solve T11*R - R*T22 = scale*X.
+*
+ CALL DTRSYL( 'N', 'N', -1, N1, N2, T, LDT,
+ $ T( N1+1, N1+1 ), LDT, WORK, N1, SCALE,
+ $ IERR )
+ ELSE
+*
+* Solve T11'*R - R*T22' = scale*X.
+*
+ CALL DTRSYL( 'T', 'T', -1, N1, N2, T, LDT,
+ $ T( N1+1, N1+1 ), LDT, WORK, N1, SCALE,
+ $ IERR )
+ END IF
+ GO TO 30
+ END IF
+*
+ SEP = SCALE / EST
+ END IF
+*
+ 40 CONTINUE
+*
+* Store the output eigenvalues in WR and WI.
+*
+ DO 50 K = 1, N
+ WR( K ) = T( K, K )
+ WI( K ) = ZERO
+ 50 CONTINUE
+ DO 60 K = 1, N - 1
+ IF( T( K+1, K ).NE.ZERO ) THEN
+ WI( K ) = SQRT( ABS( T( K, K+1 ) ) )*
+ $ SQRT( ABS( T( K+1, K ) ) )
+ WI( K+1 ) = -WI( K )
+ END IF
+ 60 CONTINUE
+*
+ WORK( 1 ) = LWMIN
+ IWORK( 1 ) = LIWMIN
+*
+ RETURN
+*
+* End of DTRSEN
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrsyl.f b/2.3-1/src/fortran/lapack/dtrsyl.f
new file mode 100644
index 00000000..4c6c28e5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrsyl.f
@@ -0,0 +1,913 @@
+ SUBROUTINE DTRSYL( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
+ $ LDC, SCALE, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANA, TRANB
+ INTEGER INFO, ISGN, LDA, LDB, LDC, M, N
+ DOUBLE PRECISION SCALE
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRSYL solves the real Sylvester matrix equation:
+*
+* op(A)*X + X*op(B) = scale*C or
+* op(A)*X - X*op(B) = scale*C,
+*
+* where op(A) = A or A**T, and A and B are both upper quasi-
+* triangular. A is M-by-M and B is N-by-N; the right hand side C and
+* the solution X are M-by-N; and scale is an output scale factor, set
+* <= 1 to avoid overflow in X.
+*
+* A and B must be in Schur canonical form (as returned by DHSEQR), that
+* is, block upper triangular with 1-by-1 and 2-by-2 diagonal blocks;
+* each 2-by-2 diagonal block has its diagonal elements equal and its
+* off-diagonal elements of opposite sign.
+*
+* Arguments
+* =========
+*
+* TRANA (input) CHARACTER*1
+* Specifies the option op(A):
+* = 'N': op(A) = A (No transpose)
+* = 'T': op(A) = A**T (Transpose)
+* = 'C': op(A) = A**H (Conjugate transpose = Transpose)
+*
+* TRANB (input) CHARACTER*1
+* Specifies the option op(B):
+* = 'N': op(B) = B (No transpose)
+* = 'T': op(B) = B**T (Transpose)
+* = 'C': op(B) = B**H (Conjugate transpose = Transpose)
+*
+* ISGN (input) INTEGER
+* Specifies the sign in the equation:
+* = +1: solve op(A)*X + X*op(B) = scale*C
+* = -1: solve op(A)*X - X*op(B) = scale*C
+*
+* M (input) INTEGER
+* The order of the matrix A, and the number of rows in the
+* matrices X and C. M >= 0.
+*
+* N (input) INTEGER
+* The order of the matrix B, and the number of columns in the
+* matrices X and C. N >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,M)
+* The upper quasi-triangular matrix A, in Schur canonical form.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input) DOUBLE PRECISION array, dimension (LDB,N)
+* The upper quasi-triangular matrix B, in Schur canonical form.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+* On entry, the M-by-N right hand side matrix C.
+* On exit, C is overwritten by the solution matrix X.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M)
+*
+* SCALE (output) DOUBLE PRECISION
+* The scale factor, scale, set <= 1 to avoid overflow in X.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* = 1: A and B have common or very close eigenvalues; perturbed
+* values were used to solve the equation (but the matrices
+* A and B are unchanged).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRNA, NOTRNB
+ INTEGER IERR, J, K, K1, K2, KNEXT, L, L1, L2, LNEXT
+ DOUBLE PRECISION A11, BIGNUM, DA11, DB, EPS, SCALOC, SGN, SMIN,
+ $ SMLNUM, SUML, SUMR, XNORM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION DUM( 1 ), VEC( 2, 2 ), X( 2, 2 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DDOT, DLAMCH, DLANGE
+ EXTERNAL LSAME, DDOT, DLAMCH, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, DLALN2, DLASY2, DSCAL, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Decode and Test input parameters
+*
+ NOTRNA = LSAME( TRANA, 'N' )
+ NOTRNB = LSAME( TRANB, 'N' )
+*
+ INFO = 0
+ IF( .NOT.NOTRNA .AND. .NOT.LSAME( TRANA, 'T' ) .AND. .NOT.
+ $ LSAME( TRANA, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRNB .AND. .NOT.LSAME( TRANB, 'T' ) .AND. .NOT.
+ $ LSAME( TRANB, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( ISGN.NE.1 .AND. ISGN.NE.-1 ) THEN
+ INFO = -3
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTRSYL', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+* Set constants to control overflow
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SMLNUM*DBLE( M*N ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+ SMIN = MAX( SMLNUM, EPS*DLANGE( 'M', M, M, A, LDA, DUM ),
+ $ EPS*DLANGE( 'M', N, N, B, LDB, DUM ) )
+*
+ SCALE = ONE
+ SGN = ISGN
+*
+ IF( NOTRNA .AND. NOTRNB ) THEN
+*
+* Solve A*X + ISGN*X*B = scale*C.
+*
+* The (K,L)th block of X is determined starting from
+* bottom-left corner column by column by
+*
+* A(K,K)*X(K,L) + ISGN*X(K,L)*B(L,L) = C(K,L) - R(K,L)
+*
+* Where
+* M L-1
+* R(K,L) = SUM [A(K,I)*X(I,L)] + ISGN*SUM [X(K,J)*B(J,L)].
+* I=K+1 J=1
+*
+* Start column loop (index = L)
+* L1 (L2) : column index of the first (first) row of X(K,L).
+*
+ LNEXT = 1
+ DO 60 L = 1, N
+ IF( L.LT.LNEXT )
+ $ GO TO 60
+ IF( L.EQ.N ) THEN
+ L1 = L
+ L2 = L
+ ELSE
+ IF( B( L+1, L ).NE.ZERO ) THEN
+ L1 = L
+ L2 = L + 1
+ LNEXT = L + 2
+ ELSE
+ L1 = L
+ L2 = L
+ LNEXT = L + 1
+ END IF
+ END IF
+*
+* Start row loop (index = K)
+* K1 (K2): row index of the first (last) row of X(K,L).
+*
+ KNEXT = M
+ DO 50 K = M, 1, -1
+ IF( K.GT.KNEXT )
+ $ GO TO 50
+ IF( K.EQ.1 ) THEN
+ K1 = K
+ K2 = K
+ ELSE
+ IF( A( K, K-1 ).NE.ZERO ) THEN
+ K1 = K - 1
+ K2 = K
+ KNEXT = K - 2
+ ELSE
+ K1 = K
+ K2 = K
+ KNEXT = K - 1
+ END IF
+ END IF
+*
+ IF( L1.EQ.L2 .AND. K1.EQ.K2 ) THEN
+ SUML = DDOT( M-K1, A( K1, MIN( K1+1, M ) ), LDA,
+ $ C( MIN( K1+1, M ), L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+ SCALOC = ONE
+*
+ A11 = A( K1, K1 ) + SGN*B( L1, L1 )
+ DA11 = ABS( A11 )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( VEC( 1, 1 ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+ X( 1, 1 ) = ( VEC( 1, 1 )*SCALOC ) / A11
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 10 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 10 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+*
+ ELSE IF( L1.EQ.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( M-K2, A( K1, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K2, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K2, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLALN2( .FALSE., 2, 1, SMIN, ONE, A( K1, K1 ),
+ $ LDA, ONE, ONE, VEC, 2, -SGN*B( L1, L1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 20 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 20 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K2, L1 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.EQ.K2 ) THEN
+*
+ SUML = DDOT( M-K1, A( K1, MIN( K1+1, M ) ), LDA,
+ $ C( MIN( K1+1, M ), L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = SGN*( C( K1, L1 )-( SUML+SGN*SUMR ) )
+*
+ SUML = DDOT( M-K1, A( K1, MIN( K1+1, M ) ), LDA,
+ $ C( MIN( K1+1, M ), L2 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L2 ), 1 )
+ VEC( 2, 1 ) = SGN*( C( K1, L2 )-( SUML+SGN*SUMR ) )
+*
+ CALL DLALN2( .TRUE., 2, 1, SMIN, ONE, B( L1, L1 ),
+ $ LDB, ONE, ONE, VEC, 2, -SGN*A( K1, K1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 30 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 30 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( M-K2, A( K1, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K1, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L2 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L2 ), 1 )
+ VEC( 1, 2 ) = C( K1, L2 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K2, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K2, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K2, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L2 ), 1 )
+ SUMR = DDOT( L1-1, C( K2, 1 ), LDC, B( 1, L2 ), 1 )
+ VEC( 2, 2 ) = C( K2, L2 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLASY2( .FALSE., .FALSE., ISGN, 2, 2,
+ $ A( K1, K1 ), LDA, B( L1, L1 ), LDB, VEC,
+ $ 2, SCALOC, X, 2, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 40 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 40 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 1, 2 )
+ C( K2, L1 ) = X( 2, 1 )
+ C( K2, L2 ) = X( 2, 2 )
+ END IF
+*
+ 50 CONTINUE
+*
+ 60 CONTINUE
+*
+ ELSE IF( .NOT.NOTRNA .AND. NOTRNB ) THEN
+*
+* Solve A' *X + ISGN*X*B = scale*C.
+*
+* The (K,L)th block of X is determined starting from
+* upper-left corner column by column by
+*
+* A(K,K)'*X(K,L) + ISGN*X(K,L)*B(L,L) = C(K,L) - R(K,L)
+*
+* Where
+* K-1 L-1
+* R(K,L) = SUM [A(I,K)'*X(I,L)] +ISGN*SUM [X(K,J)*B(J,L)]
+* I=1 J=1
+*
+* Start column loop (index = L)
+* L1 (L2): column index of the first (last) row of X(K,L)
+*
+ LNEXT = 1
+ DO 120 L = 1, N
+ IF( L.LT.LNEXT )
+ $ GO TO 120
+ IF( L.EQ.N ) THEN
+ L1 = L
+ L2 = L
+ ELSE
+ IF( B( L+1, L ).NE.ZERO ) THEN
+ L1 = L
+ L2 = L + 1
+ LNEXT = L + 2
+ ELSE
+ L1 = L
+ L2 = L
+ LNEXT = L + 1
+ END IF
+ END IF
+*
+* Start row loop (index = K)
+* K1 (K2): row index of the first (last) row of X(K,L)
+*
+ KNEXT = 1
+ DO 110 K = 1, M
+ IF( K.LT.KNEXT )
+ $ GO TO 110
+ IF( K.EQ.M ) THEN
+ K1 = K
+ K2 = K
+ ELSE
+ IF( A( K+1, K ).NE.ZERO ) THEN
+ K1 = K
+ K2 = K + 1
+ KNEXT = K + 2
+ ELSE
+ K1 = K
+ K2 = K
+ KNEXT = K + 1
+ END IF
+ END IF
+*
+ IF( L1.EQ.L2 .AND. K1.EQ.K2 ) THEN
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+ SCALOC = ONE
+*
+ A11 = A( K1, K1 ) + SGN*B( L1, L1 )
+ DA11 = ABS( A11 )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( VEC( 1, 1 ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+ X( 1, 1 ) = ( VEC( 1, 1 )*SCALOC ) / A11
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 70 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 70 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+*
+ ELSE IF( L1.EQ.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K2 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K2, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLALN2( .TRUE., 2, 1, SMIN, ONE, A( K1, K1 ),
+ $ LDA, ONE, ONE, VEC, 2, -SGN*B( L1, L1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 80 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 80 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K2, L1 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.EQ.K2 ) THEN
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = SGN*( C( K1, L1 )-( SUML+SGN*SUMR ) )
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L2 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L2 ), 1 )
+ VEC( 2, 1 ) = SGN*( C( K1, L2 )-( SUML+SGN*SUMR ) )
+*
+ CALL DLALN2( .TRUE., 2, 1, SMIN, ONE, B( L1, L1 ),
+ $ LDB, ONE, ONE, VEC, 2, -SGN*A( K1, K1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 90 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 90 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L2 ), 1 )
+ SUMR = DDOT( L1-1, C( K1, 1 ), LDC, B( 1, L2 ), 1 )
+ VEC( 1, 2 ) = C( K1, L2 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K2 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( L1-1, C( K2, 1 ), LDC, B( 1, L1 ), 1 )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K2 ), 1, C( 1, L2 ), 1 )
+ SUMR = DDOT( L1-1, C( K2, 1 ), LDC, B( 1, L2 ), 1 )
+ VEC( 2, 2 ) = C( K2, L2 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLASY2( .TRUE., .FALSE., ISGN, 2, 2, A( K1, K1 ),
+ $ LDA, B( L1, L1 ), LDB, VEC, 2, SCALOC, X,
+ $ 2, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 100 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 100 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 1, 2 )
+ C( K2, L1 ) = X( 2, 1 )
+ C( K2, L2 ) = X( 2, 2 )
+ END IF
+*
+ 110 CONTINUE
+ 120 CONTINUE
+*
+ ELSE IF( .NOT.NOTRNA .AND. .NOT.NOTRNB ) THEN
+*
+* Solve A'*X + ISGN*X*B' = scale*C.
+*
+* The (K,L)th block of X is determined starting from
+* top-right corner column by column by
+*
+* A(K,K)'*X(K,L) + ISGN*X(K,L)*B(L,L)' = C(K,L) - R(K,L)
+*
+* Where
+* K-1 N
+* R(K,L) = SUM [A(I,K)'*X(I,L)] + ISGN*SUM [X(K,J)*B(L,J)'].
+* I=1 J=L+1
+*
+* Start column loop (index = L)
+* L1 (L2): column index of the first (last) row of X(K,L)
+*
+ LNEXT = N
+ DO 180 L = N, 1, -1
+ IF( L.GT.LNEXT )
+ $ GO TO 180
+ IF( L.EQ.1 ) THEN
+ L1 = L
+ L2 = L
+ ELSE
+ IF( B( L, L-1 ).NE.ZERO ) THEN
+ L1 = L - 1
+ L2 = L
+ LNEXT = L - 2
+ ELSE
+ L1 = L
+ L2 = L
+ LNEXT = L - 1
+ END IF
+ END IF
+*
+* Start row loop (index = K)
+* K1 (K2): row index of the first (last) row of X(K,L)
+*
+ KNEXT = 1
+ DO 170 K = 1, M
+ IF( K.LT.KNEXT )
+ $ GO TO 170
+ IF( K.EQ.M ) THEN
+ K1 = K
+ K2 = K
+ ELSE
+ IF( A( K+1, K ).NE.ZERO ) THEN
+ K1 = K
+ K2 = K + 1
+ KNEXT = K + 2
+ ELSE
+ K1 = K
+ K2 = K
+ KNEXT = K + 1
+ END IF
+ END IF
+*
+ IF( L1.EQ.L2 .AND. K1.EQ.K2 ) THEN
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( N-L1, C( K1, MIN( L1+1, N ) ), LDC,
+ $ B( L1, MIN( L1+1, N ) ), LDB )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+ SCALOC = ONE
+*
+ A11 = A( K1, K1 ) + SGN*B( L1, L1 )
+ DA11 = ABS( A11 )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( VEC( 1, 1 ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+ X( 1, 1 ) = ( VEC( 1, 1 )*SCALOC ) / A11
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 130 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 130 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+*
+ ELSE IF( L1.EQ.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K2 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K2, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLALN2( .TRUE., 2, 1, SMIN, ONE, A( K1, K1 ),
+ $ LDA, ONE, ONE, VEC, 2, -SGN*B( L1, L1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 140 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 140 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K2, L1 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.EQ.K2 ) THEN
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 1 ) = SGN*( C( K1, L1 )-( SUML+SGN*SUMR ) )
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L2 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L2, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 1 ) = SGN*( C( K1, L2 )-( SUML+SGN*SUMR ) )
+*
+ CALL DLALN2( .FALSE., 2, 1, SMIN, ONE, B( L1, L1 ),
+ $ LDB, ONE, ONE, VEC, 2, -SGN*A( K1, K1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 150 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 150 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K1 ), 1, C( 1, L2 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L2, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 2 ) = C( K1, L2 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K2 ), 1, C( 1, L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K2, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( K1-1, A( 1, K2 ), 1, C( 1, L2 ), 1 )
+ SUMR = DDOT( N-L2, C( K2, MIN( L2+1, N ) ), LDC,
+ $ B( L2, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 2 ) = C( K2, L2 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLASY2( .TRUE., .TRUE., ISGN, 2, 2, A( K1, K1 ),
+ $ LDA, B( L1, L1 ), LDB, VEC, 2, SCALOC, X,
+ $ 2, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 160 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 160 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 1, 2 )
+ C( K2, L1 ) = X( 2, 1 )
+ C( K2, L2 ) = X( 2, 2 )
+ END IF
+*
+ 170 CONTINUE
+ 180 CONTINUE
+*
+ ELSE IF( NOTRNA .AND. .NOT.NOTRNB ) THEN
+*
+* Solve A*X + ISGN*X*B' = scale*C.
+*
+* The (K,L)th block of X is determined starting from
+* bottom-right corner column by column by
+*
+* A(K,K)*X(K,L) + ISGN*X(K,L)*B(L,L)' = C(K,L) - R(K,L)
+*
+* Where
+* M N
+* R(K,L) = SUM [A(K,I)*X(I,L)] + ISGN*SUM [X(K,J)*B(L,J)'].
+* I=K+1 J=L+1
+*
+* Start column loop (index = L)
+* L1 (L2): column index of the first (last) row of X(K,L)
+*
+ LNEXT = N
+ DO 240 L = N, 1, -1
+ IF( L.GT.LNEXT )
+ $ GO TO 240
+ IF( L.EQ.1 ) THEN
+ L1 = L
+ L2 = L
+ ELSE
+ IF( B( L, L-1 ).NE.ZERO ) THEN
+ L1 = L - 1
+ L2 = L
+ LNEXT = L - 2
+ ELSE
+ L1 = L
+ L2 = L
+ LNEXT = L - 1
+ END IF
+ END IF
+*
+* Start row loop (index = K)
+* K1 (K2): row index of the first (last) row of X(K,L)
+*
+ KNEXT = M
+ DO 230 K = M, 1, -1
+ IF( K.GT.KNEXT )
+ $ GO TO 230
+ IF( K.EQ.1 ) THEN
+ K1 = K
+ K2 = K
+ ELSE
+ IF( A( K, K-1 ).NE.ZERO ) THEN
+ K1 = K - 1
+ K2 = K
+ KNEXT = K - 2
+ ELSE
+ K1 = K
+ K2 = K
+ KNEXT = K - 1
+ END IF
+ END IF
+*
+ IF( L1.EQ.L2 .AND. K1.EQ.K2 ) THEN
+ SUML = DDOT( M-K1, A( K1, MIN( K1+1, M ) ), LDA,
+ $ C( MIN( K1+1, M ), L1 ), 1 )
+ SUMR = DDOT( N-L1, C( K1, MIN( L1+1, N ) ), LDC,
+ $ B( L1, MIN( L1+1, N ) ), LDB )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+ SCALOC = ONE
+*
+ A11 = A( K1, K1 ) + SGN*B( L1, L1 )
+ DA11 = ABS( A11 )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( VEC( 1, 1 ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+ X( 1, 1 ) = ( VEC( 1, 1 )*SCALOC ) / A11
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 190 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 190 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+*
+ ELSE IF( L1.EQ.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( M-K2, A( K1, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K2, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K2, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLALN2( .FALSE., 2, 1, SMIN, ONE, A( K1, K1 ),
+ $ LDA, ONE, ONE, VEC, 2, -SGN*B( L1, L1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 200 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 200 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K2, L1 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.EQ.K2 ) THEN
+*
+ SUML = DDOT( M-K1, A( K1, MIN( K1+1, M ) ), LDA,
+ $ C( MIN( K1+1, M ), L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 1 ) = SGN*( C( K1, L1 )-( SUML+SGN*SUMR ) )
+*
+ SUML = DDOT( M-K1, A( K1, MIN( K1+1, M ) ), LDA,
+ $ C( MIN( K1+1, M ), L2 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L2, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 1 ) = SGN*( C( K1, L2 )-( SUML+SGN*SUMR ) )
+*
+ CALL DLALN2( .FALSE., 2, 1, SMIN, ONE, B( L1, L1 ),
+ $ LDB, ONE, ONE, VEC, 2, -SGN*A( K1, K1 ),
+ $ ZERO, X, 2, SCALOC, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 210 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 210 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 2, 1 )
+*
+ ELSE IF( L1.NE.L2 .AND. K1.NE.K2 ) THEN
+*
+ SUML = DDOT( M-K2, A( K1, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 1 ) = C( K1, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K1, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L2 ), 1 )
+ SUMR = DDOT( N-L2, C( K1, MIN( L2+1, N ) ), LDC,
+ $ B( L2, MIN( L2+1, N ) ), LDB )
+ VEC( 1, 2 ) = C( K1, L2 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K2, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L1 ), 1 )
+ SUMR = DDOT( N-L2, C( K2, MIN( L2+1, N ) ), LDC,
+ $ B( L1, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 1 ) = C( K2, L1 ) - ( SUML+SGN*SUMR )
+*
+ SUML = DDOT( M-K2, A( K2, MIN( K2+1, M ) ), LDA,
+ $ C( MIN( K2+1, M ), L2 ), 1 )
+ SUMR = DDOT( N-L2, C( K2, MIN( L2+1, N ) ), LDC,
+ $ B( L2, MIN( L2+1, N ) ), LDB )
+ VEC( 2, 2 ) = C( K2, L2 ) - ( SUML+SGN*SUMR )
+*
+ CALL DLASY2( .FALSE., .TRUE., ISGN, 2, 2, A( K1, K1 ),
+ $ LDA, B( L1, L1 ), LDB, VEC, 2, SCALOC, X,
+ $ 2, XNORM, IERR )
+ IF( IERR.NE.0 )
+ $ INFO = 1
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 220 J = 1, N
+ CALL DSCAL( M, SCALOC, C( 1, J ), 1 )
+ 220 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K1, L1 ) = X( 1, 1 )
+ C( K1, L2 ) = X( 1, 2 )
+ C( K2, L1 ) = X( 2, 1 )
+ C( K2, L2 ) = X( 2, 2 )
+ END IF
+*
+ 230 CONTINUE
+ 240 CONTINUE
+*
+ END IF
+*
+ RETURN
+*
+* End of DTRSYL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrti2.f b/2.3-1/src/fortran/lapack/dtrti2.f
new file mode 100644
index 00000000..e7ae764d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrti2.f
@@ -0,0 +1,146 @@
+ SUBROUTINE DTRTI2( UPLO, DIAG, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRTI2 computes the inverse of a real upper or lower triangular
+* matrix.
+*
+* This is the Level 2 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the matrix A is upper or lower triangular.
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* DIAG (input) CHARACTER*1
+* Specifies whether or not the matrix A is unit triangular.
+* = 'N': Non-unit triangular
+* = 'U': Unit triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the triangular matrix A. If UPLO = 'U', the
+* leading n by n upper triangular part of the array A contains
+* the upper triangular matrix, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n by n lower triangular part of the array A contains
+* the lower triangular matrix, and the strictly upper
+* triangular part of A is not referenced. If DIAG = 'U', the
+* diagonal elements of A are also not referenced and are
+* assumed to be 1.
+*
+* On exit, the (triangular) inverse of the original matrix, in
+* the same storage format.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOUNIT, UPPER
+ INTEGER J
+ DOUBLE PRECISION AJJ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DTRMV, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ NOUNIT = LSAME( DIAG, 'N' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTRTI2', -INFO )
+ RETURN
+ END IF
+*
+ IF( UPPER ) THEN
+*
+* Compute inverse of upper triangular matrix.
+*
+ DO 10 J = 1, N
+ IF( NOUNIT ) THEN
+ A( J, J ) = ONE / A( J, J )
+ AJJ = -A( J, J )
+ ELSE
+ AJJ = -ONE
+ END IF
+*
+* Compute elements 1:j-1 of j-th column.
+*
+ CALL DTRMV( 'Upper', 'No transpose', DIAG, J-1, A, LDA,
+ $ A( 1, J ), 1 )
+ CALL DSCAL( J-1, AJJ, A( 1, J ), 1 )
+ 10 CONTINUE
+ ELSE
+*
+* Compute inverse of lower triangular matrix.
+*
+ DO 20 J = N, 1, -1
+ IF( NOUNIT ) THEN
+ A( J, J ) = ONE / A( J, J )
+ AJJ = -A( J, J )
+ ELSE
+ AJJ = -ONE
+ END IF
+ IF( J.LT.N ) THEN
+*
+* Compute elements j+1:n of j-th column.
+*
+ CALL DTRMV( 'Lower', 'No transpose', DIAG, N-J,
+ $ A( J+1, J+1 ), LDA, A( J+1, J ), 1 )
+ CALL DSCAL( N-J, AJJ, A( J+1, J ), 1 )
+ END IF
+ 20 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DTRTI2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrtri.f b/2.3-1/src/fortran/lapack/dtrtri.f
new file mode 100644
index 00000000..375813c6
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrtri.f
@@ -0,0 +1,176 @@
+ SUBROUTINE DTRTRI( UPLO, DIAG, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRTRI computes the inverse of a real upper or lower triangular
+* matrix A.
+*
+* This is the Level 3 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': A is upper triangular;
+* = 'L': A is lower triangular.
+*
+* DIAG (input) CHARACTER*1
+* = 'N': A is non-unit triangular;
+* = 'U': A is unit triangular.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the triangular matrix A. If UPLO = 'U', the
+* leading N-by-N upper triangular part of the array A contains
+* the upper triangular matrix, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of the array A contains
+* the lower triangular matrix, and the strictly upper
+* triangular part of A is not referenced. If DIAG = 'U', the
+* diagonal elements of A are also not referenced and are
+* assumed to be 1.
+* On exit, the (triangular) inverse of the original matrix, in
+* the same storage format.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, A(i,i) is exactly zero. The triangular
+* matrix is singular and its inverse can not be computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOUNIT, UPPER
+ INTEGER J, JB, NB, NN
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DTRMM, DTRSM, DTRTI2, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ NOUNIT = LSAME( DIAG, 'N' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTRTRI', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Check for singularity if non-unit.
+*
+ IF( NOUNIT ) THEN
+ DO 10 INFO = 1, N
+ IF( A( INFO, INFO ).EQ.ZERO )
+ $ RETURN
+ 10 CONTINUE
+ INFO = 0
+ END IF
+*
+* Determine the block size for this environment.
+*
+ NB = ILAENV( 1, 'DTRTRI', UPLO // DIAG, N, -1, -1, -1 )
+ IF( NB.LE.1 .OR. NB.GE.N ) THEN
+*
+* Use unblocked code
+*
+ CALL DTRTI2( UPLO, DIAG, N, A, LDA, INFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( UPPER ) THEN
+*
+* Compute inverse of upper triangular matrix
+*
+ DO 20 J = 1, N, NB
+ JB = MIN( NB, N-J+1 )
+*
+* Compute rows 1:j-1 of current block column
+*
+ CALL DTRMM( 'Left', 'Upper', 'No transpose', DIAG, J-1,
+ $ JB, ONE, A, LDA, A( 1, J ), LDA )
+ CALL DTRSM( 'Right', 'Upper', 'No transpose', DIAG, J-1,
+ $ JB, -ONE, A( J, J ), LDA, A( 1, J ), LDA )
+*
+* Compute inverse of current diagonal block
+*
+ CALL DTRTI2( 'Upper', DIAG, JB, A( J, J ), LDA, INFO )
+ 20 CONTINUE
+ ELSE
+*
+* Compute inverse of lower triangular matrix
+*
+ NN = ( ( N-1 ) / NB )*NB + 1
+ DO 30 J = NN, 1, -NB
+ JB = MIN( NB, N-J+1 )
+ IF( J+JB.LE.N ) THEN
+*
+* Compute rows j+jb:n of current block column
+*
+ CALL DTRMM( 'Left', 'Lower', 'No transpose', DIAG,
+ $ N-J-JB+1, JB, ONE, A( J+JB, J+JB ), LDA,
+ $ A( J+JB, J ), LDA )
+ CALL DTRSM( 'Right', 'Lower', 'No transpose', DIAG,
+ $ N-J-JB+1, JB, -ONE, A( J, J ), LDA,
+ $ A( J+JB, J ), LDA )
+ END IF
+*
+* Compute inverse of current diagonal block
+*
+ CALL DTRTI2( 'Lower', DIAG, JB, A( J, J ), LDA, INFO )
+ 30 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of DTRTRI
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtrtrs.f b/2.3-1/src/fortran/lapack/dtrtrs.f
new file mode 100644
index 00000000..139ea6d4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtrtrs.f
@@ -0,0 +1,147 @@
+ SUBROUTINE DTRTRS( UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, TRANS, UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTRTRS solves a triangular system of the form
+*
+* A * X = B or A**T * X = B,
+*
+* where A is a triangular matrix of order N, and B is an N-by-NRHS
+* matrix. A check is made to verify that A is nonsingular.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': A is upper triangular;
+* = 'L': A is lower triangular.
+*
+* TRANS (input) CHARACTER*1
+* Specifies the form of the system of equations:
+* = 'N': A * X = B (No transpose)
+* = 'T': A**T * X = B (Transpose)
+* = 'C': A**H * X = B (Conjugate transpose = Transpose)
+*
+* DIAG (input) CHARACTER*1
+* = 'N': A is non-unit triangular;
+* = 'U': A is unit triangular.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
+* The triangular matrix A. If UPLO = 'U', the leading N-by-N
+* upper triangular part of the array A contains the upper
+* triangular matrix, and the strictly lower triangular part of
+* A is not referenced. If UPLO = 'L', the leading N-by-N lower
+* triangular part of the array A contains the lower triangular
+* matrix, and the strictly upper triangular part of A is not
+* referenced. If DIAG = 'U', the diagonal elements of A are
+* also not referenced and are assumed to be 1.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the right hand side matrix B.
+* On exit, if INFO = 0, the solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the i-th diagonal element of A is zero,
+* indicating that the matrix is singular and the solutions
+* X have not been computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOUNIT
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL DTRSM, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ NOUNIT = LSAME( DIAG, 'N' )
+ IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( TRANS, 'N' ) .AND. .NOT.
+ $ LSAME( TRANS, 'T' ) .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTRTRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Check for singularity.
+*
+ IF( NOUNIT ) THEN
+ DO 10 INFO = 1, N
+ IF( A( INFO, INFO ).EQ.ZERO )
+ $ RETURN
+ 10 CONTINUE
+ END IF
+ INFO = 0
+*
+* Solve A * x = b or A' * x = b.
+*
+ CALL DTRSM( 'Left', UPLO, TRANS, DIAG, N, NRHS, ONE, A, LDA, B,
+ $ LDB )
+*
+ RETURN
+*
+* End of DTRTRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtzrqf.f b/2.3-1/src/fortran/lapack/dtzrqf.f
new file mode 100644
index 00000000..5555df38
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtzrqf.f
@@ -0,0 +1,164 @@
+ SUBROUTINE DTZRQF( M, N, A, LDA, TAU, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * )
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is deprecated and has been replaced by routine DTZRZF.
+*
+* DTZRQF reduces the M-by-N ( M<=N ) real upper trapezoidal matrix A
+* to upper triangular form by means of orthogonal transformations.
+*
+* The upper trapezoidal matrix A is factored as
+*
+* A = ( R 0 ) * Z,
+*
+* where Z is an N-by-N orthogonal matrix and R is an M-by-M upper
+* triangular matrix.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= M.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the leading M-by-N upper trapezoidal part of the
+* array A must contain the matrix to be factorized.
+* On exit, the leading M-by-M upper triangular part of A
+* contains the upper triangular matrix R, and elements M+1 to
+* N of the first M rows of A, with the array TAU, represent the
+* orthogonal matrix Z as a product of M elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (M)
+* The scalar factors of the elementary reflectors.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The factorization is obtained by Householder's method. The kth
+* transformation matrix, Z( k ), which is used to introduce zeros into
+* the ( m - k + 1 )th row of A, is given in the form
+*
+* Z( k ) = ( I 0 ),
+* ( 0 T( k ) )
+*
+* where
+*
+* T( k ) = I - tau*u( k )*u( k )', u( k ) = ( 1 ),
+* ( 0 )
+* ( z( k ) )
+*
+* tau is a scalar and z( k ) is an ( n - m ) element vector.
+* tau and z( k ) are chosen to annihilate the elements of the kth row
+* of X.
+*
+* The scalar tau is returned in the kth element of TAU and the vector
+* u( k ) in the kth row of A, such that the elements of z( k ) are
+* in a( k, m + 1 ), ..., a( k, n ). The elements of R are returned in
+* the upper triangular part of A.
+*
+* Z is given by
+*
+* Z = Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K, M1
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DCOPY, DGEMV, DGER, DLARFG, XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTZRQF', -INFO )
+ RETURN
+ END IF
+*
+* Perform the factorization.
+*
+ IF( M.EQ.0 )
+ $ RETURN
+ IF( M.EQ.N ) THEN
+ DO 10 I = 1, N
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ ELSE
+ M1 = MIN( M+1, N )
+ DO 20 K = M, 1, -1
+*
+* Use a Householder reflection to zero the kth row of A.
+* First set up the reflection.
+*
+ CALL DLARFG( N-M+1, A( K, K ), A( K, M1 ), LDA, TAU( K ) )
+*
+ IF( ( TAU( K ).NE.ZERO ) .AND. ( K.GT.1 ) ) THEN
+*
+* We now perform the operation A := A*P( k ).
+*
+* Use the first ( k - 1 ) elements of TAU to store a( k ),
+* where a( k ) consists of the first ( k - 1 ) elements of
+* the kth column of A. Also let B denote the first
+* ( k - 1 ) rows of the last ( n - m ) columns of A.
+*
+ CALL DCOPY( K-1, A( 1, K ), 1, TAU, 1 )
+*
+* Form w = a( k ) + B*z( k ) in TAU.
+*
+ CALL DGEMV( 'No transpose', K-1, N-M, ONE, A( 1, M1 ),
+ $ LDA, A( K, M1 ), LDA, ONE, TAU, 1 )
+*
+* Now form a( k ) := a( k ) - tau*w
+* and B := B - tau*w*z( k )'.
+*
+ CALL DAXPY( K-1, -TAU( K ), TAU, 1, A( 1, K ), 1 )
+ CALL DGER( K-1, N-M, -TAU( K ), TAU, 1, A( K, M1 ), LDA,
+ $ A( 1, M1 ), LDA )
+ END IF
+ 20 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of DTZRQF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dtzrzf.f b/2.3-1/src/fortran/lapack/dtzrzf.f
new file mode 100644
index 00000000..378eefe1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dtzrzf.f
@@ -0,0 +1,244 @@
+ SUBROUTINE DTZRZF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DTZRZF reduces the M-by-N ( M<=N ) real upper trapezoidal matrix A
+* to upper triangular form by means of orthogonal transformations.
+*
+* The upper trapezoidal matrix A is factored as
+*
+* A = ( R 0 ) * Z,
+*
+* where Z is an N-by-N orthogonal matrix and R is an M-by-M upper
+* triangular matrix.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= M.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the leading M-by-N upper trapezoidal part of the
+* array A must contain the matrix to be factorized.
+* On exit, the leading M-by-M upper triangular part of A
+* contains the upper triangular matrix R, and elements M+1 to
+* N of the first M rows of A, with the array TAU, represent the
+* orthogonal matrix Z as a product of M elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) DOUBLE PRECISION array, dimension (M)
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* The factorization is obtained by Householder's method. The kth
+* transformation matrix, Z( k ), which is used to introduce zeros into
+* the ( m - k + 1 )th row of A, is given in the form
+*
+* Z( k ) = ( I 0 ),
+* ( 0 T( k ) )
+*
+* where
+*
+* T( k ) = I - tau*u( k )*u( k )', u( k ) = ( 1 ),
+* ( 0 )
+* ( z( k ) )
+*
+* tau is a scalar and z( k ) is an ( n - m ) element vector.
+* tau and z( k ) are chosen to annihilate the elements of the kth row
+* of X.
+*
+* The scalar tau is returned in the kth element of TAU and the vector
+* u( k ) in the kth row of A, such that the elements of z( k ) are
+* in a( k, m + 1 ), ..., a( k, n ). The elements of R are returned in
+* the upper triangular part of A.
+*
+* Z is given by
+*
+* Z = Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IWS, KI, KK, LDWORK, LWKOPT, M1, MU, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARZB, DLARZT, DLATRZ, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.EQ.0 .OR. M.EQ.N ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* Determine the block size.
+*
+ NB = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
+ LWKOPT = M*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DTZRZF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 ) THEN
+ RETURN
+ ELSE IF( M.EQ.N ) THEN
+ DO 10 I = 1, N
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 1
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.M ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'DGERQF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.M ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'DGERQF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.M .AND. NX.LT.M ) THEN
+*
+* Use blocked code initially.
+* The last kk rows are handled by the block method.
+*
+ M1 = MIN( M+1, N )
+ KI = ( ( M-NX-1 ) / NB )*NB
+ KK = MIN( M, KI+NB )
+*
+ DO 20 I = M - KK + KI + 1, M - KK + 1, -NB
+ IB = MIN( M-I+1, NB )
+*
+* Compute the TZ factorization of the current block
+* A(i:i+ib-1,i:n)
+*
+ CALL DLATRZ( IB, N-I+1, N-M, A( I, I ), LDA, TAU( I ),
+ $ WORK )
+ IF( I.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL DLARZT( 'Backward', 'Rowwise', N-M, IB, A( I, M1 ),
+ $ LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(1:i-1,i:n) from the right
+*
+ CALL DLARZB( 'Right', 'No transpose', 'Backward',
+ $ 'Rowwise', I-1, N-I+1, IB, N-M, A( I, M1 ),
+ $ LDA, WORK, LDWORK, A( 1, I ), LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+ 20 CONTINUE
+ MU = I + NB - 1
+ ELSE
+ MU = M
+ END IF
+*
+* Use unblocked code to factor the last or only block
+*
+ IF( MU.GT.0 )
+ $ CALL DLATRZ( MU, N, N-M, A, LDA, TAU, WORK )
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DTZRZF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/dzsum1.f b/2.3-1/src/fortran/lapack/dzsum1.f
new file mode 100644
index 00000000..0b6c60e7
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/dzsum1.f
@@ -0,0 +1,81 @@
+ DOUBLE PRECISION FUNCTION DZSUM1( N, CX, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 CX( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DZSUM1 takes the sum of the absolute values of a complex
+* vector and returns a double precision result.
+*
+* Based on DZASUM from the Level 1 BLAS.
+* The change is to use the 'genuine' absolute value.
+*
+* Contributed by Nick Higham for use with ZLACON.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of elements in the vector CX.
+*
+* CX (input) COMPLEX*16 array, dimension (N)
+* The vector whose elements will be summed.
+*
+* INCX (input) INTEGER
+* The spacing between successive values of CX. INCX > 0.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, NINCX
+ DOUBLE PRECISION STEMP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+*
+ DZSUM1 = 0.0D0
+ STEMP = 0.0D0
+ IF( N.LE.0 )
+ $ RETURN
+ IF( INCX.EQ.1 )
+ $ GO TO 20
+*
+* CODE FOR INCREMENT NOT EQUAL TO 1
+*
+ NINCX = N*INCX
+ DO 10 I = 1, NINCX, INCX
+*
+* NEXT LINE MODIFIED.
+*
+ STEMP = STEMP + ABS( CX( I ) )
+ 10 CONTINUE
+ DZSUM1 = STEMP
+ RETURN
+*
+* CODE FOR INCREMENT EQUAL TO 1
+*
+ 20 CONTINUE
+ DO 30 I = 1, N
+*
+* NEXT LINE MODIFIED.
+*
+ STEMP = STEMP + ABS( CX( I ) )
+ 30 CONTINUE
+ DZSUM1 = STEMP
+ RETURN
+*
+* End of DZSUM1
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ieeeck.f b/2.3-1/src/fortran/lapack/ieeeck.f
new file mode 100644
index 00000000..ac4aff85
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ieeeck.f
@@ -0,0 +1,147 @@
+ INTEGER FUNCTION IEEECK( ISPEC, ZERO, ONE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER ISPEC
+ REAL ONE, ZERO
+* ..
+*
+* Purpose
+* =======
+*
+* IEEECK is called from the ILAENV to verify that Infinity and
+* possibly NaN arithmetic is safe (i.e. will not trap).
+*
+* Arguments
+* =========
+*
+* ISPEC (input) INTEGER
+* Specifies whether to test just for inifinity arithmetic
+* or whether to test for infinity and NaN arithmetic.
+* = 0: Verify infinity arithmetic only.
+* = 1: Verify infinity and NaN arithmetic.
+*
+* ZERO (input) REAL
+* Must contain the value 0.0
+* This is passed to prevent the compiler from optimizing
+* away this code.
+*
+* ONE (input) REAL
+* Must contain the value 1.0
+* This is passed to prevent the compiler from optimizing
+* away this code.
+*
+* RETURN VALUE: INTEGER
+* = 0: Arithmetic failed to produce the correct answers
+* = 1: Arithmetic produced the correct answers
+*
+* .. Local Scalars ..
+ REAL NAN1, NAN2, NAN3, NAN4, NAN5, NAN6, NEGINF,
+ $ NEGZRO, NEWZRO, POSINF
+* ..
+* .. Executable Statements ..
+ IEEECK = 1
+*
+ POSINF = ONE / ZERO
+ IF( POSINF.LE.ONE ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ NEGINF = -ONE / ZERO
+ IF( NEGINF.GE.ZERO ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ NEGZRO = ONE / ( NEGINF+ONE )
+ IF( NEGZRO.NE.ZERO ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ NEGINF = ONE / NEGZRO
+ IF( NEGINF.GE.ZERO ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ NEWZRO = NEGZRO + ZERO
+ IF( NEWZRO.NE.ZERO ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ POSINF = ONE / NEWZRO
+ IF( POSINF.LE.ONE ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ NEGINF = NEGINF*POSINF
+ IF( NEGINF.GE.ZERO ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ POSINF = POSINF*POSINF
+ IF( POSINF.LE.ONE ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+*
+*
+*
+* Return if we were only asked to check infinity arithmetic
+*
+ IF( ISPEC.EQ.0 )
+ $ RETURN
+*
+ NAN1 = POSINF + NEGINF
+*
+ NAN2 = POSINF / NEGINF
+*
+ NAN3 = POSINF / POSINF
+*
+ NAN4 = POSINF*ZERO
+*
+ NAN5 = NEGINF*NEGZRO
+*
+ NAN6 = NAN5*0.0
+*
+ IF( NAN1.EQ.NAN1 ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ IF( NAN2.EQ.NAN2 ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ IF( NAN3.EQ.NAN3 ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ IF( NAN4.EQ.NAN4 ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ IF( NAN5.EQ.NAN5 ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ IF( NAN6.EQ.NAN6 ) THEN
+ IEEECK = 0
+ RETURN
+ END IF
+*
+ RETURN
+ END
diff --git a/2.3-1/src/fortran/lapack/ilaenv.f b/2.3-1/src/fortran/lapack/ilaenv.f
new file mode 100644
index 00000000..c375031b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ilaenv.f
@@ -0,0 +1,552 @@
+ INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER*( * ) NAME, OPTS
+ INTEGER ISPEC, N1, N2, N3, N4
+* ..
+*
+* Purpose
+* =======
+*
+* ILAENV is called from the LAPACK routines to choose problem-dependent
+* parameters for the local environment. See ISPEC for a description of
+* the parameters.
+*
+* This version provides a set of parameters which should give good,
+* but not optimal, performance on many of the currently available
+* computers. Users are encouraged to modify this subroutine to set
+* the tuning parameters for their particular machine using the option
+* and problem size information in the arguments.
+*
+* This routine will not function correctly if it is converted to all
+* lower case. Converting it to all upper case is allowed.
+*
+* Arguments
+* =========
+*
+* ISPEC (input) INTEGER
+* Specifies the parameter to be returned as the value of
+* ILAENV.
+* = 1: the optimal blocksize; if this value is 1, an unblocked
+* algorithm will give the best performance.
+* = 2: the minimum block size for which the block routine
+* should be used; if the usable block size is less than
+* this value, an unblocked routine should be used.
+* = 3: the crossover point (in a block routine, for N less
+* than this value, an unblocked routine should be used)
+* = 4: the number of shifts, used in the nonsymmetric
+* eigenvalue routines (DEPRECATED)
+* = 5: the minimum column dimension for blocking to be used;
+* rectangular blocks must have dimension at least k by m,
+* where k is given by ILAENV(2,...) and m by ILAENV(5,...)
+* = 6: the crossover point for the SVD (when reducing an m by n
+* matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
+* this value, a QR factorization is used first to reduce
+* the matrix to a triangular form.)
+* = 7: the number of processors
+* = 8: the crossover point for the multishift QR method
+* for nonsymmetric eigenvalue problems (DEPRECATED)
+* = 9: maximum size of the subproblems at the bottom of the
+* computation tree in the divide-and-conquer algorithm
+* (used by xGELSD and xGESDD)
+* =10: ieee NaN arithmetic can be trusted not to trap
+* =11: infinity arithmetic can be trusted not to trap
+* 12 <= ISPEC <= 16:
+* xHSEQR or one of its subroutines,
+* see IPARMQ for detailed explanation
+*
+* NAME (input) CHARACTER*(*)
+* The name of the calling subroutine, in either upper case or
+* lower case.
+*
+* OPTS (input) CHARACTER*(*)
+* The character options to the subroutine NAME, concatenated
+* into a single character string. For example, UPLO = 'U',
+* TRANS = 'T', and DIAG = 'N' for a triangular routine would
+* be specified as OPTS = 'UTN'.
+*
+* N1 (input) INTEGER
+* N2 (input) INTEGER
+* N3 (input) INTEGER
+* N4 (input) INTEGER
+* Problem dimensions for the subroutine NAME; these may not all
+* be required.
+*
+* (ILAENV) (output) INTEGER
+* >= 0: the value of the parameter specified by ISPEC
+* < 0: if ILAENV = -k, the k-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The following conventions have been used when calling ILAENV from the
+* LAPACK routines:
+* 1) OPTS is a concatenation of all of the character options to
+* subroutine NAME, in the same order that they appear in the
+* argument list for NAME, even if they are not used in determining
+* the value of the parameter specified by ISPEC.
+* 2) The problem dimensions N1, N2, N3, N4 are specified in the order
+* that they appear in the argument list for NAME. N1 is used
+* first, N2 second, and so on, and unused problem dimensions are
+* passed a value of -1.
+* 3) The parameter value returned by ILAENV is checked for validity in
+* the calling subroutine. For example, ILAENV is used to retrieve
+* the optimal blocksize for STRTRI as follows:
+*
+* NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
+* IF( NB.LE.1 ) NB = MAX( 1, N )
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, IC, IZ, NB, NBMIN, NX
+ LOGICAL CNAME, SNAME
+ CHARACTER C1*1, C2*2, C4*2, C3*3, SUBNAM*6
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC CHAR, ICHAR, INT, MIN, REAL
+* ..
+* .. External Functions ..
+ INTEGER IEEECK, IPARMQ
+ EXTERNAL IEEECK, IPARMQ
+* ..
+* .. Executable Statements ..
+*
+ GO TO ( 10, 10, 10, 80, 90, 100, 110, 120,
+ $ 130, 140, 150, 160, 160, 160, 160, 160 )ISPEC
+*
+* Invalid value for ISPEC
+*
+ ILAENV = -1
+ RETURN
+*
+ 10 CONTINUE
+*
+* Convert NAME to upper case if the first character is lower case.
+*
+ ILAENV = 1
+ SUBNAM = NAME
+ IC = ICHAR( SUBNAM( 1: 1 ) )
+ IZ = ICHAR( 'Z' )
+ IF( IZ.EQ.90 .OR. IZ.EQ.122 ) THEN
+*
+* ASCII character set
+*
+ IF( IC.GE.97 .AND. IC.LE.122 ) THEN
+ SUBNAM( 1: 1 ) = CHAR( IC-32 )
+ DO 20 I = 2, 6
+ IC = ICHAR( SUBNAM( I: I ) )
+ IF( IC.GE.97 .AND. IC.LE.122 )
+ $ SUBNAM( I: I ) = CHAR( IC-32 )
+ 20 CONTINUE
+ END IF
+*
+ ELSE IF( IZ.EQ.233 .OR. IZ.EQ.169 ) THEN
+*
+* EBCDIC character set
+*
+ IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
+ $ ( IC.GE.145 .AND. IC.LE.153 ) .OR.
+ $ ( IC.GE.162 .AND. IC.LE.169 ) ) THEN
+ SUBNAM( 1: 1 ) = CHAR( IC+64 )
+ DO 30 I = 2, 6
+ IC = ICHAR( SUBNAM( I: I ) )
+ IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
+ $ ( IC.GE.145 .AND. IC.LE.153 ) .OR.
+ $ ( IC.GE.162 .AND. IC.LE.169 ) )SUBNAM( I:
+ $ I ) = CHAR( IC+64 )
+ 30 CONTINUE
+ END IF
+*
+ ELSE IF( IZ.EQ.218 .OR. IZ.EQ.250 ) THEN
+*
+* Prime machines: ASCII+128
+*
+ IF( IC.GE.225 .AND. IC.LE.250 ) THEN
+ SUBNAM( 1: 1 ) = CHAR( IC-32 )
+ DO 40 I = 2, 6
+ IC = ICHAR( SUBNAM( I: I ) )
+ IF( IC.GE.225 .AND. IC.LE.250 )
+ $ SUBNAM( I: I ) = CHAR( IC-32 )
+ 40 CONTINUE
+ END IF
+ END IF
+*
+ C1 = SUBNAM( 1: 1 )
+ SNAME = C1.EQ.'S' .OR. C1.EQ.'D'
+ CNAME = C1.EQ.'C' .OR. C1.EQ.'Z'
+ IF( .NOT.( CNAME .OR. SNAME ) )
+ $ RETURN
+ C2 = SUBNAM( 2: 3 )
+ C3 = SUBNAM( 4: 6 )
+ C4 = C3( 2: 3 )
+*
+ GO TO ( 50, 60, 70 )ISPEC
+*
+ 50 CONTINUE
+*
+* ISPEC = 1: block size
+*
+* In these examples, separate code is provided for setting NB for
+* real and complex. We assume that NB will take the same value in
+* single or double precision.
+*
+ NB = 1
+*
+ IF( C2.EQ.'GE' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ IF( SNAME ) THEN
+ NB = 64
+ ELSE
+ NB = 64
+ END IF
+ ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
+ $ C3.EQ.'QLF' ) THEN
+ IF( SNAME ) THEN
+ NB = 32
+ ELSE
+ NB = 32
+ END IF
+ ELSE IF( C3.EQ.'HRD' ) THEN
+ IF( SNAME ) THEN
+ NB = 32
+ ELSE
+ NB = 32
+ END IF
+ ELSE IF( C3.EQ.'BRD' ) THEN
+ IF( SNAME ) THEN
+ NB = 32
+ ELSE
+ NB = 32
+ END IF
+ ELSE IF( C3.EQ.'TRI' ) THEN
+ IF( SNAME ) THEN
+ NB = 64
+ ELSE
+ NB = 64
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'PO' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ IF( SNAME ) THEN
+ NB = 64
+ ELSE
+ NB = 64
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'SY' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ IF( SNAME ) THEN
+ NB = 64
+ ELSE
+ NB = 64
+ END IF
+ ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
+ NB = 32
+ ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN
+ NB = 64
+ END IF
+ ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ NB = 64
+ ELSE IF( C3.EQ.'TRD' ) THEN
+ NB = 32
+ ELSE IF( C3.EQ.'GST' ) THEN
+ NB = 64
+ END IF
+ ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
+ IF( C3( 1: 1 ).EQ.'G' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NB = 32
+ END IF
+ ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NB = 32
+ END IF
+ END IF
+ ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
+ IF( C3( 1: 1 ).EQ.'G' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NB = 32
+ END IF
+ ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NB = 32
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'GB' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ IF( SNAME ) THEN
+ IF( N4.LE.64 ) THEN
+ NB = 1
+ ELSE
+ NB = 32
+ END IF
+ ELSE
+ IF( N4.LE.64 ) THEN
+ NB = 1
+ ELSE
+ NB = 32
+ END IF
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'PB' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ IF( SNAME ) THEN
+ IF( N2.LE.64 ) THEN
+ NB = 1
+ ELSE
+ NB = 32
+ END IF
+ ELSE
+ IF( N2.LE.64 ) THEN
+ NB = 1
+ ELSE
+ NB = 32
+ END IF
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'TR' ) THEN
+ IF( C3.EQ.'TRI' ) THEN
+ IF( SNAME ) THEN
+ NB = 64
+ ELSE
+ NB = 64
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'LA' ) THEN
+ IF( C3.EQ.'UUM' ) THEN
+ IF( SNAME ) THEN
+ NB = 64
+ ELSE
+ NB = 64
+ END IF
+ END IF
+ ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN
+ IF( C3.EQ.'EBZ' ) THEN
+ NB = 1
+ END IF
+ END IF
+ ILAENV = NB
+ RETURN
+*
+ 60 CONTINUE
+*
+* ISPEC = 2: minimum block size
+*
+ NBMIN = 2
+ IF( C2.EQ.'GE' ) THEN
+ IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ.
+ $ 'QLF' ) THEN
+ IF( SNAME ) THEN
+ NBMIN = 2
+ ELSE
+ NBMIN = 2
+ END IF
+ ELSE IF( C3.EQ.'HRD' ) THEN
+ IF( SNAME ) THEN
+ NBMIN = 2
+ ELSE
+ NBMIN = 2
+ END IF
+ ELSE IF( C3.EQ.'BRD' ) THEN
+ IF( SNAME ) THEN
+ NBMIN = 2
+ ELSE
+ NBMIN = 2
+ END IF
+ ELSE IF( C3.EQ.'TRI' ) THEN
+ IF( SNAME ) THEN
+ NBMIN = 2
+ ELSE
+ NBMIN = 2
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'SY' ) THEN
+ IF( C3.EQ.'TRF' ) THEN
+ IF( SNAME ) THEN
+ NBMIN = 8
+ ELSE
+ NBMIN = 8
+ END IF
+ ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
+ NBMIN = 2
+ END IF
+ ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
+ IF( C3.EQ.'TRD' ) THEN
+ NBMIN = 2
+ END IF
+ ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
+ IF( C3( 1: 1 ).EQ.'G' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NBMIN = 2
+ END IF
+ ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NBMIN = 2
+ END IF
+ END IF
+ ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
+ IF( C3( 1: 1 ).EQ.'G' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NBMIN = 2
+ END IF
+ ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NBMIN = 2
+ END IF
+ END IF
+ END IF
+ ILAENV = NBMIN
+ RETURN
+*
+ 70 CONTINUE
+*
+* ISPEC = 3: crossover point
+*
+ NX = 0
+ IF( C2.EQ.'GE' ) THEN
+ IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ.
+ $ 'QLF' ) THEN
+ IF( SNAME ) THEN
+ NX = 128
+ ELSE
+ NX = 128
+ END IF
+ ELSE IF( C3.EQ.'HRD' ) THEN
+ IF( SNAME ) THEN
+ NX = 128
+ ELSE
+ NX = 128
+ END IF
+ ELSE IF( C3.EQ.'BRD' ) THEN
+ IF( SNAME ) THEN
+ NX = 128
+ ELSE
+ NX = 128
+ END IF
+ END IF
+ ELSE IF( C2.EQ.'SY' ) THEN
+ IF( SNAME .AND. C3.EQ.'TRD' ) THEN
+ NX = 32
+ END IF
+ ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
+ IF( C3.EQ.'TRD' ) THEN
+ NX = 32
+ END IF
+ ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
+ IF( C3( 1: 1 ).EQ.'G' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NX = 128
+ END IF
+ END IF
+ ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
+ IF( C3( 1: 1 ).EQ.'G' ) THEN
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+ $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+ $ THEN
+ NX = 128
+ END IF
+ END IF
+ END IF
+ ILAENV = NX
+ RETURN
+*
+ 80 CONTINUE
+*
+* ISPEC = 4: number of shifts (used by xHSEQR)
+*
+ ILAENV = 6
+ RETURN
+*
+ 90 CONTINUE
+*
+* ISPEC = 5: minimum column dimension (not used)
+*
+ ILAENV = 2
+ RETURN
+*
+ 100 CONTINUE
+*
+* ISPEC = 6: crossover point for SVD (used by xGELSS and xGESVD)
+*
+ ILAENV = INT( REAL( MIN( N1, N2 ) )*1.6E0 )
+ RETURN
+*
+ 110 CONTINUE
+*
+* ISPEC = 7: number of processors (not used)
+*
+ ILAENV = 1
+ RETURN
+*
+ 120 CONTINUE
+*
+* ISPEC = 8: crossover point for multishift (used by xHSEQR)
+*
+ ILAENV = 50
+ RETURN
+*
+ 130 CONTINUE
+*
+* ISPEC = 9: maximum size of the subproblems at the bottom of the
+* computation tree in the divide-and-conquer algorithm
+* (used by xGELSD and xGESDD)
+*
+ ILAENV = 25
+ RETURN
+*
+ 140 CONTINUE
+*
+* ISPEC = 10: ieee NaN arithmetic can be trusted not to trap
+*
+* ILAENV = 0
+ ILAENV = 1
+ IF( ILAENV.EQ.1 ) THEN
+ ILAENV = IEEECK( 0, 0.0, 1.0 )
+ END IF
+ RETURN
+*
+ 150 CONTINUE
+*
+* ISPEC = 11: infinity arithmetic can be trusted not to trap
+*
+* ILAENV = 0
+ ILAENV = 1
+ IF( ILAENV.EQ.1 ) THEN
+ ILAENV = IEEECK( 1, 0.0, 1.0 )
+ END IF
+ RETURN
+*
+ 160 CONTINUE
+*
+* 12 <= ISPEC <= 16: xHSEQR or one of its subroutines.
+*
+ ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
+ RETURN
+*
+* End of ILAENV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/iparmq.f b/2.3-1/src/fortran/lapack/iparmq.f
new file mode 100644
index 00000000..d9d0af36
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/iparmq.f
@@ -0,0 +1,253 @@
+ INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, ISPEC, LWORK, N
+ CHARACTER NAME*( * ), OPTS*( * )
+*
+* Purpose
+* =======
+*
+* This program sets problem and machine dependent parameters
+* useful for xHSEQR and its subroutines. It is called whenever
+* ILAENV is called with 12 <= ISPEC <= 16
+*
+* Arguments
+* =========
+*
+* ISPEC (input) integer scalar
+* ISPEC specifies which tunable parameter IPARMQ should
+* return.
+*
+* ISPEC=12: (INMIN) Matrices of order nmin or less
+* are sent directly to xLAHQR, the implicit
+* double shift QR algorithm. NMIN must be
+* at least 11.
+*
+* ISPEC=13: (INWIN) Size of the deflation window.
+* This is best set greater than or equal to
+* the number of simultaneous shifts NS.
+* Larger matrices benefit from larger deflation
+* windows.
+*
+* ISPEC=14: (INIBL) Determines when to stop nibbling and
+* invest in an (expensive) multi-shift QR sweep.
+* If the aggressive early deflation subroutine
+* finds LD converged eigenvalues from an order
+* NW deflation window and LD.GT.(NW*NIBBLE)/100,
+* then the next QR sweep is skipped and early
+* deflation is applied immediately to the
+* remaining active diagonal block. Setting
+* IPARMQ(ISPEC=14) = 0 causes TTQRE to skip a
+* multi-shift QR sweep whenever early deflation
+* finds a converged eigenvalue. Setting
+* IPARMQ(ISPEC=14) greater than or equal to 100
+* prevents TTQRE from skipping a multi-shift
+* QR sweep.
+*
+* ISPEC=15: (NSHFTS) The number of simultaneous shifts in
+* a multi-shift QR iteration.
+*
+* ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the
+* following meanings.
+* 0: During the multi-shift QR sweep,
+* xLAQR5 does not accumulate reflections and
+* does not use matrix-matrix multiply to
+* update the far-from-diagonal matrix
+* entries.
+* 1: During the multi-shift QR sweep,
+* xLAQR5 and/or xLAQRaccumulates reflections and uses
+* matrix-matrix multiply to update the
+* far-from-diagonal matrix entries.
+* 2: During the multi-shift QR sweep.
+* xLAQR5 accumulates reflections and takes
+* advantage of 2-by-2 block structure during
+* matrix-matrix multiplies.
+* (If xTRMM is slower than xGEMM, then
+* IPARMQ(ISPEC=16)=1 may be more efficient than
+* IPARMQ(ISPEC=16)=2 despite the greater level of
+* arithmetic work implied by the latter choice.)
+*
+* NAME (input) character string
+* Name of the calling subroutine
+*
+* OPTS (input) character string
+* This is a concatenation of the string arguments to
+* TTQRE.
+*
+* N (input) integer scalar
+* N is the order of the Hessenberg matrix H.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular
+* in rows and columns 1:ILO-1 and IHI+1:N.
+*
+* LWORK (input) integer scalar
+* The amount of workspace available.
+*
+* Further Details
+* ===============
+*
+* Little is known about how best to choose these parameters.
+* It is possible to use different values of the parameters
+* for each of CHSEQR, DHSEQR, SHSEQR and ZHSEQR.
+*
+* It is probably best to choose different parameters for
+* different matrices and different parameters at different
+* times during the iteration, but this has not been
+* implemented --- yet.
+*
+*
+* The best choices of most of the parameters depend
+* in an ill-understood way on the relative execution
+* rate of xLAQR3 and xLAQR5 and on the nature of each
+* particular eigenvalue problem. Experiment may be the
+* only practical way to determine which choices are most
+* effective.
+*
+* Following is a list of default values supplied by IPARMQ.
+* These defaults may be adjusted in order to attain better
+* performance in any particular computational environment.
+*
+* IPARMQ(ISPEC=12) The xLAHQR vs xLAQR0 crossover point.
+* Default: 75. (Must be at least 11.)
+*
+* IPARMQ(ISPEC=13) Recommended deflation window size.
+* This depends on ILO, IHI and NS, the
+* number of simultaneous shifts returned
+* by IPARMQ(ISPEC=15). The default for
+* (IHI-ILO+1).LE.500 is NS. The default
+* for (IHI-ILO+1).GT.500 is 3*NS/2.
+*
+* IPARMQ(ISPEC=14) Nibble crossover point. Default: 14.
+*
+* IPARMQ(ISPEC=15) Number of simultaneous shifts, NS.
+* a multi-shift QR iteration.
+*
+* If IHI-ILO+1 is ...
+*
+* greater than ...but less ... the
+* or equal to ... than default is
+*
+* 0 30 NS = 2+
+* 30 60 NS = 4+
+* 60 150 NS = 10
+* 150 590 NS = **
+* 590 3000 NS = 64
+* 3000 6000 NS = 128
+* 6000 infinity NS = 256
+*
+* (+) By default matrices of this order are
+* passed to the implicit double shift routine
+* xLAHQR. See IPARMQ(ISPEC=12) above. These
+* values of NS are used only in case of a rare
+* xLAHQR failure.
+*
+* (**) The asterisks (**) indicate an ad-hoc
+* function increasing from 10 to 64.
+*
+* IPARMQ(ISPEC=16) Select structured matrix multiply.
+* (See ISPEC=16 above for details.)
+* Default: 3.
+*
+* ================================================================
+* .. Parameters ..
+ INTEGER INMIN, INWIN, INIBL, ISHFTS, IACC22
+ PARAMETER ( INMIN = 12, INWIN = 13, INIBL = 14,
+ $ ISHFTS = 15, IACC22 = 16 )
+ INTEGER NMIN, K22MIN, KACMIN, NIBBLE, KNWSWP
+ PARAMETER ( NMIN = 75, K22MIN = 14, KACMIN = 14,
+ $ NIBBLE = 14, KNWSWP = 500 )
+ REAL TWO
+ PARAMETER ( TWO = 2.0 )
+* ..
+* .. Local Scalars ..
+ INTEGER NH, NS
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC LOG, MAX, MOD, NINT, REAL
+* ..
+* .. Executable Statements ..
+ IF( ( ISPEC.EQ.ISHFTS ) .OR. ( ISPEC.EQ.INWIN ) .OR.
+ $ ( ISPEC.EQ.IACC22 ) ) THEN
+*
+* ==== Set the number simultaneous shifts ====
+*
+ NH = IHI - ILO + 1
+ NS = 2
+ IF( NH.GE.30 )
+ $ NS = 4
+ IF( NH.GE.60 )
+ $ NS = 10
+ IF( NH.GE.150 )
+ $ NS = MAX( 10, NH / NINT( LOG( REAL( NH ) ) / LOG( TWO ) ) )
+ IF( NH.GE.590 )
+ $ NS = 64
+ IF( NH.GE.3000 )
+ $ NS = 128
+ IF( NH.GE.6000 )
+ $ NS = 256
+ NS = MAX( 2, NS-MOD( NS, 2 ) )
+ END IF
+*
+ IF( ISPEC.EQ.INMIN ) THEN
+*
+*
+* ===== Matrices of order smaller than NMIN get sent
+* . to xLAHQR, the classic double shift algorithm.
+* . This must be at least 11. ====
+*
+ IPARMQ = NMIN
+*
+ ELSE IF( ISPEC.EQ.INIBL ) THEN
+*
+* ==== INIBL: skip a multi-shift qr iteration and
+* . whenever aggressive early deflation finds
+* . at least (NIBBLE*(window size)/100) deflations. ====
+*
+ IPARMQ = NIBBLE
+*
+ ELSE IF( ISPEC.EQ.ISHFTS ) THEN
+*
+* ==== NSHFTS: The number of simultaneous shifts =====
+*
+ IPARMQ = NS
+*
+ ELSE IF( ISPEC.EQ.INWIN ) THEN
+*
+* ==== NW: deflation window size. ====
+*
+ IF( NH.LE.KNWSWP ) THEN
+ IPARMQ = NS
+ ELSE
+ IPARMQ = 3*NS / 2
+ END IF
+*
+ ELSE IF( ISPEC.EQ.IACC22 ) THEN
+*
+* ==== IACC22: Whether to accumulate reflections
+* . before updating the far-from-diagonal elements
+* . and whether to use 2-by-2 block structure while
+* . doing it. A small amount of work could be saved
+* . by making this choice dependent also upon the
+* . NH=IHI-ILO+1.
+*
+ IPARMQ = 0
+ IF( NS.GE.KACMIN )
+ $ IPARMQ = 1
+ IF( NS.GE.K22MIN )
+ $ IPARMQ = 2
+*
+ ELSE
+* ===== invalid value of ispec =====
+ IPARMQ = -1
+*
+ END IF
+*
+* ==== End of IPARMQ ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/izmax1.f b/2.3-1/src/fortran/lapack/izmax1.f
new file mode 100644
index 00000000..7ebffee3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/izmax1.f
@@ -0,0 +1,95 @@
+ INTEGER FUNCTION IZMAX1( N, CX, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 CX( * )
+* ..
+*
+* Purpose
+* =======
+*
+* IZMAX1 finds the index of the element whose real part has maximum
+* absolute value.
+*
+* Based on IZAMAX from Level 1 BLAS.
+* The change is to use the 'genuine' absolute value.
+*
+* Contributed by Nick Higham for use with ZLACON.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of elements in the vector CX.
+*
+* CX (input) COMPLEX*16 array, dimension (N)
+* The vector whose elements will be summed.
+*
+* INCX (input) INTEGER
+* The spacing between successive values of CX. INCX >= 1.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, IX
+ DOUBLE PRECISION SMAX
+ COMPLEX*16 ZDUM
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+*
+* NEXT LINE IS THE ONLY MODIFICATION.
+ CABS1( ZDUM ) = ABS( ZDUM )
+* ..
+* .. Executable Statements ..
+*
+ IZMAX1 = 0
+ IF( N.LT.1 )
+ $ RETURN
+ IZMAX1 = 1
+ IF( N.EQ.1 )
+ $ RETURN
+ IF( INCX.EQ.1 )
+ $ GO TO 30
+*
+* CODE FOR INCREMENT NOT EQUAL TO 1
+*
+ IX = 1
+ SMAX = CABS1( CX( 1 ) )
+ IX = IX + INCX
+ DO 20 I = 2, N
+ IF( CABS1( CX( IX ) ).LE.SMAX )
+ $ GO TO 10
+ IZMAX1 = I
+ SMAX = CABS1( CX( IX ) )
+ 10 CONTINUE
+ IX = IX + INCX
+ 20 CONTINUE
+ RETURN
+*
+* CODE FOR INCREMENT EQUAL TO 1
+*
+ 30 CONTINUE
+ SMAX = CABS1( CX( 1 ) )
+ DO 40 I = 2, N
+ IF( CABS1( CX( I ) ).LE.SMAX )
+ $ GO TO 40
+ IZMAX1 = I
+ SMAX = CABS1( CX( I ) )
+ 40 CONTINUE
+ RETURN
+*
+* End of IZMAX1
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/lapack_f/lapack.def b/2.3-1/src/fortran/lapack/lapack_f/lapack.def
new file mode 100644
index 00000000..a6ce5165
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/lapack_f/lapack.def
@@ -0,0 +1,306 @@
+LIBRARY lapack.dll
+
+
+EXPORTS
+ dbdsqr_
+ dgebak_
+ dgebal_
+ dgebd2_
+ dgebrd_
+ dgecon_
+ dgeequ_
+ dgees_
+ dgeesx_
+ dgeev_
+ dgegs_
+ dgehd2_
+ dgehrd_
+ dgelq2_
+ dgelqf_
+ dgels_
+ dgelss_
+ dgelsx_
+ dgelsy_
+ dgeql2_
+ dgeqlf_
+ dgeqp3_
+ dgeqpf_
+ dgeqr2_
+ dgeqrf_
+ dgerfs_
+ dgerq2_
+ dgerqf_
+ dgesc2_
+ dgesv_
+ dgesvd_
+ dgesvx_
+ dgetc2_
+ dgetf2_
+ dgetrf_
+ dgetri_
+ dgetrs_
+ dggbak_
+ dggbal_
+ dgges_
+ dggev_
+ dgghrd_
+ dhgeqz_
+ dhseqr_
+ disnan_
+ dlabad_
+ dlabrd_
+ dlacn2_
+ dlacon_
+ dlacpy_
+ dladiv_
+ dlae2_
+ dlaev2_
+ dlaexc_
+ dlag2_
+ dlagv2_
+ dlahqr_
+ dlahr2_
+ dlahrd_
+ dlaic1_
+ dlaisnan_
+ dlaln2_
+ dlamch_
+ dlamc2_
+ dlamc1_
+ dlamc3_
+ dlamc4_
+ dlamc5_
+ dlange_
+ dlanhs_
+ dlansp_
+ dlanst_
+ dlansy_
+ dlantr_
+ dlanv2_
+ dlapmt_
+ dlapy2_
+ dlapy3_
+ dlaqge_
+ dlaqp2_
+ dlaqps_
+ dlaqr0_
+ dlaqr1_
+ dlaqr2_
+ dlaqr3_
+ dlaqr4_
+ dlaqr5_
+ dlarf_
+ dlarfb_
+ dlarfg_
+ dlarft_
+ dlarfx_
+ dlartg_
+ dlarz_
+ dlarzb_
+ dlarzt_
+ dlas2_
+ dlascl_
+ dlaset_
+ dlasq1_
+ dlasq2_
+ dlasq3_
+ dlasq4_
+ dlasq5_
+ dlasq6_
+ dlasr_
+ dlasrt_
+ dlassq_
+ dlasv2_
+ dlaswp_
+ dlasy2_
+ dlasyf_
+ dlatdf_
+ dlatrd_
+ dlatrs_
+ dlatrz_
+ dlatzm_
+ dlazq3_
+ dlazq4_
+ dopgtr_
+ dorg2l_
+ dorg2r_
+ dorgbr_
+ dorghr_
+ dorgl2_
+ dorglq_
+ dorgql_
+ dorgqr_
+ dorgr2_
+ dorgrq_
+ dorgtr_
+ dorm2l_
+ dorm2r_
+ dormbr_
+ dormhr_
+ dorml2_
+ dormlq_
+ dormql_
+ dormqr_
+ dormr2_
+ dormr3_
+ dormrq_
+ dormrz_
+ dpocon_
+ dpotf2_
+ dpotrf_
+ dpotrs_
+ dpptrf_
+ drscl_
+ dspev_
+ dspgst_
+ dspgv_
+ dsptrd_
+ dsptrf_
+ dsteqr_
+ dsterf_
+ dsycon_
+ dsyev_
+ dsysv_
+ dsytd2_
+ dsytf2_
+ dsytrd_
+ dsytrf_
+ dsytri_
+ dsytrs_
+ dtgevc_
+ dtgex2_
+ dtgexc_
+ dtgsen_
+ dtgsy2_
+ dtgsyl_
+ dtrcon_
+ dtrevc_
+ dtrexc_
+ dtrsen_
+ dtrsyl_
+ dtrti2_
+ dtrtri_
+ dtrtrs_
+ dtzrqf_
+ dtzrzf_
+ dzsum1_
+ ieeeck_
+ ilaenv_
+ iparmq_
+ izmax1_
+ lsame_
+ slamch_
+ slamc2_
+ slamc1_
+ slamc3_
+ slamc4_
+ slamc5_
+ zbdsqr_
+ zdrot_
+ zdrscl_
+ zgebak_
+ zgebal_
+ zgebd2_
+ zgebrd_
+ zgecon_
+ zgees_
+ zgeev_
+ zgehd2_
+ zgehrd_
+ zgelq2_
+ zgelqf_
+ zgelsy_
+ zgeqp3_
+ zgeqpf_
+ zgeqr2_
+ zgeqrf_
+ zgesc2_
+ zgesvd_
+ zgetc2_
+ zgetf2_
+ zgetrf_
+ zgetri_
+ zgetrs_
+ zggbak_
+ zggbal_
+ zgges_
+ zggev_
+ zgghrd_
+ zheev_
+ zhetd2_
+ zhetrd_
+ zhgeqz_
+ zhseqr_
+ zlabrd_
+ zlacgv_
+ zlacn2_
+ zlacon_
+ zlacpy_
+ zladiv_
+ zlahqr_
+ zlahr2_
+ zlahrd_
+ zlaic1_
+ zlange_
+ zlanhe_
+ zlanhs_
+ zlaqp2_
+ zlaqps_
+ zlaqr0_
+ zlaqr1_
+ zlaqr2_
+ zlaqr3_
+ zlaqr4_
+ zlaqr5_
+ zlarf_
+ zlarfb_
+ zlarfg_
+ zlarft_
+ zlarfx_
+ zlartg_
+ zlarz_
+ zlarzb_
+ zlarzt_
+ zlascl_
+ zlaset_
+ zlasr_
+ zlassq_
+ zlaswp_
+ zlatdf_
+ zlatrd_
+ zlatrs_
+ zlatrz_
+ zpotf2_
+ zpotrf_
+ zrot_
+ zsteqr_
+ ztgevc_
+ ztgex2_
+ ztgexc_
+ ztgsen_
+ ztgsy2_
+ ztgsyl_
+ ztrevc_
+ ztrexc_
+ ztrsen_
+ ztrsyl_
+ ztrti2_
+ ztrtri_
+ ztzrzf_
+ zung2l_
+ zung2r_
+ zungbr_
+ zunghr_
+ zungl2_
+ zunglq_
+ zungql_
+ zungqr_
+ zungtr_
+ zunm2r_
+ zunmbr_
+ zunml2_
+ zunmlq_
+ zunmqr_
+ zunmr3_
+ zunmrz_
+ \ No newline at end of file
diff --git a/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.suo b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.suo
new file mode 100644
index 00000000..156fa9f3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.suo
Binary files differ
diff --git a/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.vfproj b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.vfproj
new file mode 100644
index 00000000..41c7a411
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL.vfproj
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject ProjectType="typeDynamicLibrary" ProjectCreator="Intel Fortran" Keyword="Dll" Version="11.0" ProjectIdGuid="{69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}">
+ <Platforms>
+ <Platform Name="Win32"/>
+ <Platform Name="x64"/></Platforms>
+ <Configurations>
+ <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" F77RuntimeCompatibility="true" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" Traceback="true" RuntimeLibrary="rtMultiThreadedDebug"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/lapack.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrtd.lib" ModuleDefinitionFile="lapack.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin/lapack.lib" LinkDLL="true" AdditionalDependencies="libcmtd.lib "/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" F77RuntimeCompatibility="true" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RequireProcessorExtensions="codeExclusivelyStreamingSIMD"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/lapack.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrt.lib" ModuleDefinitionFile="lapack.def" SubSystem="subSystemWindows" SupportUnloadOfDelayLoadedDLL="true" ImportLibrary="$(SolutionDir)bin/lapack.lib" LinkDLL="true" AdditionalDependencies="libcmt.lib "/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" F77RuntimeCompatibility="true" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" Traceback="true" RuntimeLibrary="rtMultiThreadedDebugDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/lapack.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrtd.lib" ModuleDefinitionFile="lapack.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin/lapack.lib" LinkDLL="true" AdditionalDependencies="libcmtd.lib "/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(Configuration)\" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" F77RuntimeCompatibility="true" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin/lapack.dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" IgnoreDefaultLibraryNames="msvcrt.lib" ModuleDefinitionFile="lapack.def" SubSystem="subSystemWindows" SupportUnloadOfDelayLoadedDLL="true" ImportLibrary="$(SolutionDir)bin/lapack.lib" LinkDLL="true" AdditionalDependencies="libcmt.lib "/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool"/>
+ <Tool Name="VFPreBuildEventTool"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>
+ <Files>
+ <Filter Name="Header Files" Filter="fi;fd"/>
+ <Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"/>
+ <Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
+ <File RelativePath="..\dbdsqr.f"/>
+ <File RelativePath="..\dgebak.f"/>
+ <File RelativePath="..\dgebal.f"/>
+ <File RelativePath="..\dgebd2.f"/>
+ <File RelativePath="..\dgebrd.f"/>
+ <File RelativePath="..\dgecon.f"/>
+ <File RelativePath="..\dgeequ.f"/>
+ <File RelativePath="..\dgees.f"/>
+ <File RelativePath="..\dgeesx.f"/>
+ <File RelativePath="..\dgeev.f"/>
+ <File RelativePath="..\dgegs.f"/>
+ <File RelativePath="..\dgehd2.f"/>
+ <File RelativePath="..\dgehrd.f"/>
+ <File RelativePath="..\dgelq2.f"/>
+ <File RelativePath="..\dgelqf.f"/>
+ <File RelativePath="..\dgels.f"/>
+ <File RelativePath="..\dgelss.f"/>
+ <File RelativePath="..\dgelsx.f"/>
+ <File RelativePath="..\dgelsy.f"/>
+ <File RelativePath="..\dgeql2.f"/>
+ <File RelativePath="..\dgeqlf.f"/>
+ <File RelativePath="..\dgeqp3.f"/>
+ <File RelativePath="..\dgeqpf.f"/>
+ <File RelativePath="..\dgeqr2.f"/>
+ <File RelativePath="..\dgeqrf.f"/>
+ <File RelativePath="..\dgerfs.f"/>
+ <File RelativePath="..\dgerq2.f"/>
+ <File RelativePath="..\dgerqf.f"/>
+ <File RelativePath="..\dgesc2.f"/>
+ <File RelativePath="..\dgesv.f"/>
+ <File RelativePath="..\dgesvd.f"/>
+ <File RelativePath="..\dgesvx.f"/>
+ <File RelativePath="..\dgetc2.f"/>
+ <File RelativePath="..\dgetf2.f"/>
+ <File RelativePath="..\dgetrf.f"/>
+ <File RelativePath="..\dgetri.f"/>
+ <File RelativePath="..\dgetrs.f"/>
+ <File RelativePath="..\dggbak.f"/>
+ <File RelativePath="..\dggbal.f"/>
+ <File RelativePath="..\dgges.f"/>
+ <File RelativePath="..\dggev.f"/>
+ <File RelativePath="..\dgghrd.f"/>
+ <File RelativePath="..\dhgeqz.f"/>
+ <File RelativePath="..\dhseqr.f"/>
+ <File RelativePath="..\disnan.f"/>
+ <File RelativePath="..\dlabad.f"/>
+ <File RelativePath="..\dlabrd.f"/>
+ <File RelativePath="..\dlacn2.f"/>
+ <File RelativePath="..\dlacon.f"/>
+ <File RelativePath="..\dlacpy.f"/>
+ <File RelativePath="..\dladiv.f"/>
+ <File RelativePath="..\dlae2.f"/>
+ <File RelativePath="..\dlaev2.f"/>
+ <File RelativePath="..\dlaexc.f"/>
+ <File RelativePath="..\dlag2.f"/>
+ <File RelativePath="..\dlagv2.f"/>
+ <File RelativePath="..\dlahqr.f"/>
+ <File RelativePath="..\dlahr2.f"/>
+ <File RelativePath="..\dlahrd.f"/>
+ <File RelativePath="..\dlaic1.f"/>
+ <File RelativePath="..\dlaisnan.f"/>
+ <File RelativePath="..\dlaln2.f"/>
+ <File RelativePath="..\dlamch.f">
+ <FileConfiguration Name="Release|x64">
+ <Tool Name="VFFortranCompilerTool" Optimization="optimizeDisabled"/></FileConfiguration>
+ <FileConfiguration Name="Release|Win32">
+ <Tool Name="VFFortranCompilerTool" Optimization="optimizeDisabled"/></FileConfiguration></File>
+ <File RelativePath="..\dlange.f"/>
+ <File RelativePath="..\dlanhs.f"/>
+ <File RelativePath="..\dlansp.f"/>
+ <File RelativePath="..\dlanst.f"/>
+ <File RelativePath="..\dlansy.f"/>
+ <File RelativePath="..\dlantr.f"/>
+ <File RelativePath="..\dlanv2.f"/>
+ <File RelativePath="..\dlapmt.f"/>
+ <File RelativePath="..\dlapy2.f"/>
+ <File RelativePath="..\dlapy3.f"/>
+ <File RelativePath="..\dlaqge.f"/>
+ <File RelativePath="..\dlaqp2.f"/>
+ <File RelativePath="..\dlaqps.f"/>
+ <File RelativePath="..\dlaqr0.f"/>
+ <File RelativePath="..\dlaqr1.f"/>
+ <File RelativePath="..\dlaqr2.f"/>
+ <File RelativePath="..\dlaqr3.f"/>
+ <File RelativePath="..\dlaqr4.f"/>
+ <File RelativePath="..\dlaqr5.f"/>
+ <File RelativePath="..\dlarf.f"/>
+ <File RelativePath="..\dlarfb.f"/>
+ <File RelativePath="..\dlarfg.f"/>
+ <File RelativePath="..\dlarft.f"/>
+ <File RelativePath="..\dlarfx.f"/>
+ <File RelativePath="..\dlartg.f"/>
+ <File RelativePath="..\dlarz.f"/>
+ <File RelativePath="..\dlarzb.f"/>
+ <File RelativePath="..\dlarzt.f"/>
+ <File RelativePath="..\dlas2.f"/>
+ <File RelativePath="..\dlascl.f"/>
+ <File RelativePath="..\dlaset.f"/>
+ <File RelativePath="..\dlasq1.f"/>
+ <File RelativePath="..\dlasq2.f"/>
+ <File RelativePath="..\dlasq3.f"/>
+ <File RelativePath="..\dlasq4.f"/>
+ <File RelativePath="..\dlasq5.f"/>
+ <File RelativePath="..\dlasq6.f"/>
+ <File RelativePath="..\dlasr.f"/>
+ <File RelativePath="..\dlasrt.f"/>
+ <File RelativePath="..\dlassq.f"/>
+ <File RelativePath="..\dlasv2.f"/>
+ <File RelativePath="..\dlaswp.f"/>
+ <File RelativePath="..\dlasy2.f"/>
+ <File RelativePath="..\dlasyf.f"/>
+ <File RelativePath="..\dlatdf.f"/>
+ <File RelativePath="..\dlatrd.f"/>
+ <File RelativePath="..\dlatrs.f"/>
+ <File RelativePath="..\dlatrz.f"/>
+ <File RelativePath="..\dlatzm.f"/>
+ <File RelativePath="..\dlazq3.f"/>
+ <File RelativePath="..\dlazq4.f"/>
+ <File RelativePath="..\dopgtr.f"/>
+ <File RelativePath="..\dorg2l.f"/>
+ <File RelativePath="..\dorg2r.f"/>
+ <File RelativePath="..\dorgbr.f"/>
+ <File RelativePath="..\dorghr.f"/>
+ <File RelativePath="..\dorgl2.f"/>
+ <File RelativePath="..\dorglq.f"/>
+ <File RelativePath="..\dorgql.f"/>
+ <File RelativePath="..\dorgqr.f"/>
+ <File RelativePath="..\dorgr2.f"/>
+ <File RelativePath="..\dorgrq.f"/>
+ <File RelativePath="..\dorgtr.f"/>
+ <File RelativePath="..\dorm2l.f"/>
+ <File RelativePath="..\dorm2r.f"/>
+ <File RelativePath="..\dormbr.f"/>
+ <File RelativePath="..\dormhr.f"/>
+ <File RelativePath="..\dorml2.f"/>
+ <File RelativePath="..\dormlq.f"/>
+ <File RelativePath="..\dormql.f"/>
+ <File RelativePath="..\dormqr.f"/>
+ <File RelativePath="..\dormr2.f"/>
+ <File RelativePath="..\dormr3.f"/>
+ <File RelativePath="..\dormrq.f"/>
+ <File RelativePath="..\dormrz.f"/>
+ <File RelativePath="..\dpocon.f"/>
+ <File RelativePath="..\dpotf2.f"/>
+ <File RelativePath="..\dpotrf.f"/>
+ <File RelativePath="..\dpotrs.f"/>
+ <File RelativePath="..\dpptrf.f"/>
+ <File RelativePath="..\drscl.f"/>
+ <File RelativePath="..\dspev.f"/>
+ <File RelativePath="..\dspgst.f"/>
+ <File RelativePath="..\dspgv.f"/>
+ <File RelativePath="..\dsptrd.f"/>
+ <File RelativePath="..\dsptrf.f"/>
+ <File RelativePath="..\dsteqr.f"/>
+ <File RelativePath="..\dsterf.f"/>
+ <File RelativePath="..\dsycon.f"/>
+ <File RelativePath="..\dsyev.f"/>
+ <File RelativePath="..\dsysv.f"/>
+ <File RelativePath="..\dsytd2.f"/>
+ <File RelativePath="..\dsytf2.f"/>
+ <File RelativePath="..\dsytrd.f"/>
+ <File RelativePath="..\dsytrf.f"/>
+ <File RelativePath="..\dsytri.f"/>
+ <File RelativePath="..\dsytrs.f"/>
+ <File RelativePath="..\dtgevc.f"/>
+ <File RelativePath="..\dtgex2.f"/>
+ <File RelativePath="..\dtgexc.f"/>
+ <File RelativePath="..\dtgsen.f"/>
+ <File RelativePath="..\dtgsy2.f"/>
+ <File RelativePath="..\dtgsyl.f"/>
+ <File RelativePath="..\dtrcon.f"/>
+ <File RelativePath="..\dtrevc.f"/>
+ <File RelativePath="..\dtrexc.f"/>
+ <File RelativePath="..\dtrsen.f"/>
+ <File RelativePath="..\dtrsyl.f"/>
+ <File RelativePath="..\dtrti2.f"/>
+ <File RelativePath="..\dtrtri.f"/>
+ <File RelativePath="..\dtrtrs.f"/>
+ <File RelativePath="..\dtzrqf.f"/>
+ <File RelativePath="..\dtzrzf.f"/>
+ <File RelativePath="..\dzsum1.f"/>
+ <File RelativePath="..\ieeeck.f"/>
+ <File RelativePath="..\ilaenv.f"/>
+ <File RelativePath="..\iparmq.f"/>
+ <File RelativePath="..\izmax1.f"/>
+ <File RelativePath="..\lsame.f"/>
+ <File RelativePath="..\slamch.f">
+ <FileConfiguration Name="Release|x64">
+ <Tool Name="VFFortranCompilerTool" Optimization="optimizeDisabled"/></FileConfiguration>
+ <FileConfiguration Name="Release|Win32">
+ <Tool Name="VFFortranCompilerTool" Optimization="optimizeDisabled"/></FileConfiguration></File>
+ <File RelativePath="..\xerbla.f"/>
+ <File RelativePath="..\zbdsqr.f"/>
+ <File RelativePath="..\zdrot.f"/>
+ <File RelativePath="..\zdrscl.f"/>
+ <File RelativePath="..\zgebak.f"/>
+ <File RelativePath="..\zgebal.f"/>
+ <File RelativePath="..\zgebd2.f"/>
+ <File RelativePath="..\zgebrd.f"/>
+ <File RelativePath="..\zgecon.f"/>
+ <File RelativePath="..\zgees.f"/>
+ <File RelativePath="..\zgeev.f"/>
+ <File RelativePath="..\zgehd2.f"/>
+ <File RelativePath="..\zgehrd.f"/>
+ <File RelativePath="..\zgelq2.f"/>
+ <File RelativePath="..\zgelqf.f"/>
+ <File RelativePath="..\zgelsy.f"/>
+ <File RelativePath="..\zgeqp3.f"/>
+ <File RelativePath="..\zgeqpf.f"/>
+ <File RelativePath="..\zgeqr2.f"/>
+ <File RelativePath="..\zgeqrf.f"/>
+ <File RelativePath="..\zgesc2.f"/>
+ <File RelativePath="..\zgesvd.f"/>
+ <File RelativePath="..\zgetc2.f"/>
+ <File RelativePath="..\zgetf2.f"/>
+ <File RelativePath="..\zgetrf.f"/>
+ <File RelativePath="..\zgetri.f"/>
+ <File RelativePath="..\zgetrs.f"/>
+ <File RelativePath="..\zggbak.f"/>
+ <File RelativePath="..\zggbal.f"/>
+ <File RelativePath="..\zgges.f"/>
+ <File RelativePath="..\zggev.f"/>
+ <File RelativePath="..\zgghrd.f"/>
+ <File RelativePath="..\zheev.f"/>
+ <File RelativePath="..\zhetd2.f"/>
+ <File RelativePath="..\zhetrd.f"/>
+ <File RelativePath="..\zhgeqz.f"/>
+ <File RelativePath="..\zhseqr.f"/>
+ <File RelativePath="..\zlabrd.f"/>
+ <File RelativePath="..\zlacgv.f"/>
+ <File RelativePath="..\zlacn2.f"/>
+ <File RelativePath="..\zlacon.f"/>
+ <File RelativePath="..\zlacpy.f"/>
+ <File RelativePath="..\zladiv.f"/>
+ <File RelativePath="..\zlahqr.f"/>
+ <File RelativePath="..\zlahr2.f"/>
+ <File RelativePath="..\zlahrd.f"/>
+ <File RelativePath="..\zlaic1.f"/>
+ <File RelativePath="..\zlange.f"/>
+ <File RelativePath="..\zlanhe.f"/>
+ <File RelativePath="..\zlanhs.f"/>
+ <File RelativePath="..\zlaqp2.f"/>
+ <File RelativePath="..\zlaqps.f"/>
+ <File RelativePath="..\zlaqr0.f"/>
+ <File RelativePath="..\zlaqr1.f"/>
+ <File RelativePath="..\zlaqr2.f"/>
+ <File RelativePath="..\zlaqr3.f"/>
+ <File RelativePath="..\zlaqr4.f"/>
+ <File RelativePath="..\zlaqr5.f"/>
+ <File RelativePath="..\zlarf.f"/>
+ <File RelativePath="..\zlarfb.f"/>
+ <File RelativePath="..\zlarfg.f"/>
+ <File RelativePath="..\zlarft.f"/>
+ <File RelativePath="..\zlarfx.f"/>
+ <File RelativePath="..\zlartg.f"/>
+ <File RelativePath="..\zlarz.f"/>
+ <File RelativePath="..\zlarzb.f"/>
+ <File RelativePath="..\zlarzt.f"/>
+ <File RelativePath="..\zlascl.f"/>
+ <File RelativePath="..\zlaset.f"/>
+ <File RelativePath="..\zlasr.f"/>
+ <File RelativePath="..\zlassq.f"/>
+ <File RelativePath="..\zlaswp.f"/>
+ <File RelativePath="..\zlatdf.f"/>
+ <File RelativePath="..\zlatrd.f"/>
+ <File RelativePath="..\zlatrs.f"/>
+ <File RelativePath="..\zlatrz.f"/>
+ <File RelativePath="..\zpotf2.f"/>
+ <File RelativePath="..\zpotrf.f"/>
+ <File RelativePath="..\zrot.f"/>
+ <File RelativePath="..\zsteqr.f"/>
+ <File RelativePath="..\ztgevc.f"/>
+ <File RelativePath="..\ztgex2.f"/>
+ <File RelativePath="..\ztgexc.f"/>
+ <File RelativePath="..\ztgsen.f"/>
+ <File RelativePath="..\ztgsy2.f"/>
+ <File RelativePath="..\ztgsyl.f"/>
+ <File RelativePath="..\ztrevc.f"/>
+ <File RelativePath="..\ztrexc.f"/>
+ <File RelativePath="..\ztrsen.f"/>
+ <File RelativePath="..\ztrsyl.f"/>
+ <File RelativePath="..\ztrti2.f"/>
+ <File RelativePath="..\ztrtri.f"/>
+ <File RelativePath="..\ztzrzf.f"/>
+ <File RelativePath="..\zung2l.f"/>
+ <File RelativePath="..\zung2r.f"/>
+ <File RelativePath="..\zungbr.f"/>
+ <File RelativePath="..\zunghr.f"/>
+ <File RelativePath="..\zungl2.f"/>
+ <File RelativePath="..\zunglq.f"/>
+ <File RelativePath="..\zungql.f"/>
+ <File RelativePath="..\zungqr.f"/>
+ <File RelativePath="..\zungtr.f"/>
+ <File RelativePath="..\zunm2r.f"/>
+ <File RelativePath="..\zunmbr.f"/>
+ <File RelativePath="..\zunml2.f"/>
+ <File RelativePath="..\zunmlq.f"/>
+ <File RelativePath="..\zunmqr.f"/>
+ <File RelativePath="..\zunmr3.f"/>
+ <File RelativePath="..\zunmrz.f"/></Filter>
+ <File RelativePath=".\lapack.def"/></Files>
+ <Globals/></VisualStudioProject>
diff --git a/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj
new file mode 100644
index 00000000..51d00d60
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj
@@ -0,0 +1,837 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>lapack_f2c_DLL</ProjectName>
+ <ProjectGuid>{69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}</ProjectGuid>
+ <RootNamespace>lapack_f2c_DLL</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build Lapack.def file</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalOptions>/fixed:no %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(SolutionDir)bin\lapack.dll</OutputFile>
+ <ModuleDefinitionFile>lapack.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build Lapack.def file</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalOptions>/fixed:no %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>../../../bin/lapack.dll</OutputFile>
+ <ModuleDefinitionFile>lapack.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build Lapack.def file</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <OutputFile>$(SolutionDir)bin\lapack.dll</OutputFile>
+ <ModuleDefinitionFile>lapack.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(SolutionDir)bin\$(TargetName).lib</ImportLibrary>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>
+ </Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>../../f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>STRICT;__STDC__;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ObjectFileName>$(Configuration)/</ObjectFileName>
+ <ProgramDataBaseFileName>$(Configuration)/vc80.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build Lapack.def file</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <OutputFile>../../../bin/lapack.dll</OutputFile>
+ <ModuleDefinitionFile>lapack.def</ModuleDefinitionFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\dbdsqr.c" />
+ <ClCompile Include="..\dgebak.c" />
+ <ClCompile Include="..\dgebal.c" />
+ <ClCompile Include="..\dgebd2.c" />
+ <ClCompile Include="..\dgebrd.c" />
+ <ClCompile Include="..\dgecon.c" />
+ <ClCompile Include="..\dgeequ.c" />
+ <ClCompile Include="..\dgees.c" />
+ <ClCompile Include="..\dgeesx.c" />
+ <ClCompile Include="..\dgeev.c" />
+ <ClCompile Include="..\dgegs.c" />
+ <ClCompile Include="..\dgehd2.c" />
+ <ClCompile Include="..\dgehrd.c" />
+ <ClCompile Include="..\dgelq2.c" />
+ <ClCompile Include="..\dgelqf.c" />
+ <ClCompile Include="..\dgels.c" />
+ <ClCompile Include="..\dgelss.c" />
+ <ClCompile Include="..\dgelsx.c" />
+ <ClCompile Include="..\dgelsy.c" />
+ <ClCompile Include="..\dgeql2.c" />
+ <ClCompile Include="..\dgeqlf.c" />
+ <ClCompile Include="..\dgeqp3.c" />
+ <ClCompile Include="..\dgeqpf.c" />
+ <ClCompile Include="..\dgeqr2.c" />
+ <ClCompile Include="..\dgeqrf.c" />
+ <ClCompile Include="..\dgerfs.c" />
+ <ClCompile Include="..\dgerq2.c" />
+ <ClCompile Include="..\dgerqf.c" />
+ <ClCompile Include="..\dgesc2.c" />
+ <ClCompile Include="..\dgesv.c" />
+ <ClCompile Include="..\dgesvd.c" />
+ <ClCompile Include="..\dgesvx.c" />
+ <ClCompile Include="..\dgetc2.c" />
+ <ClCompile Include="..\dgetf2.c" />
+ <ClCompile Include="..\dgetrf.c" />
+ <ClCompile Include="..\dgetri.c" />
+ <ClCompile Include="..\dgetrs.c" />
+ <ClCompile Include="..\dggbak.c" />
+ <ClCompile Include="..\dggbal.c" />
+ <ClCompile Include="..\dgges.c" />
+ <ClCompile Include="..\dggev.c" />
+ <ClCompile Include="..\dgghrd.c" />
+ <ClCompile Include="..\dhgeqz.c" />
+ <ClCompile Include="..\dhseqr.c" />
+ <ClCompile Include="..\disnan.c" />
+ <ClCompile Include="..\dlabad.c" />
+ <ClCompile Include="..\dlabrd.c" />
+ <ClCompile Include="..\dlacn2.c" />
+ <ClCompile Include="..\dlacon.c" />
+ <ClCompile Include="..\dlacpy.c" />
+ <ClCompile Include="..\dladiv.c" />
+ <ClCompile Include="..\dlae2.c" />
+ <ClCompile Include="..\dlaev2.c" />
+ <ClCompile Include="..\dlaexc.c" />
+ <ClCompile Include="..\dlag2.c" />
+ <ClCompile Include="..\dlagv2.c" />
+ <ClCompile Include="..\dlahqr.c" />
+ <ClCompile Include="..\dlahr2.c" />
+ <ClCompile Include="..\dlahrd.c" />
+ <ClCompile Include="..\dlaic1.c" />
+ <ClCompile Include="..\dlaisnan.c" />
+ <ClCompile Include="..\dlaln2.c" />
+ <ClCompile Include="..\dlamch.c" />
+ <ClCompile Include="..\dlange.c" />
+ <ClCompile Include="..\dlanhs.c" />
+ <ClCompile Include="..\dlansp.c" />
+ <ClCompile Include="..\dlanst.c" />
+ <ClCompile Include="..\dlansy.c" />
+ <ClCompile Include="..\dlantr.c" />
+ <ClCompile Include="..\dlanv2.c" />
+ <ClCompile Include="..\dlapmt.c" />
+ <ClCompile Include="..\dlapy2.c" />
+ <ClCompile Include="..\dlapy3.c" />
+ <ClCompile Include="..\dlaqge.c" />
+ <ClCompile Include="..\dlaqp2.c" />
+ <ClCompile Include="..\dlaqps.c" />
+ <ClCompile Include="..\dlaqr0.c" />
+ <ClCompile Include="..\dlaqr1.c" />
+ <ClCompile Include="..\dlaqr2.c" />
+ <ClCompile Include="..\dlaqr3.c" />
+ <ClCompile Include="..\dlaqr4.c" />
+ <ClCompile Include="..\dlaqr5.c" />
+ <ClCompile Include="..\dlarf.c" />
+ <ClCompile Include="..\dlarfb.c" />
+ <ClCompile Include="..\dlarfg.c" />
+ <ClCompile Include="..\dlarft.c" />
+ <ClCompile Include="..\dlarfx.c" />
+ <ClCompile Include="..\dlartg.c" />
+ <ClCompile Include="..\dlarz.c" />
+ <ClCompile Include="..\dlarzb.c" />
+ <ClCompile Include="..\dlarzt.c" />
+ <ClCompile Include="..\dlas2.c" />
+ <ClCompile Include="..\dlascl.c" />
+ <ClCompile Include="..\dlaset.c" />
+ <ClCompile Include="..\dlasq1.c" />
+ <ClCompile Include="..\dlasq2.c" />
+ <ClCompile Include="..\dlasq3.c" />
+ <ClCompile Include="..\dlasq4.c" />
+ <ClCompile Include="..\dlasq5.c" />
+ <ClCompile Include="..\dlasq6.c" />
+ <ClCompile Include="..\dlasr.c" />
+ <ClCompile Include="..\dlasrt.c" />
+ <ClCompile Include="..\dlassq.c" />
+ <ClCompile Include="..\dlasv2.c" />
+ <ClCompile Include="..\dlaswp.c" />
+ <ClCompile Include="..\dlasy2.c" />
+ <ClCompile Include="..\dlasyf.c" />
+ <ClCompile Include="..\dlatdf.c" />
+ <ClCompile Include="..\dlatrd.c" />
+ <ClCompile Include="..\dlatrs.c" />
+ <ClCompile Include="..\dlatrz.c" />
+ <ClCompile Include="..\dlatzm.c" />
+ <ClCompile Include="..\dlazq3.c" />
+ <ClCompile Include="..\dlazq4.c" />
+ <ClCompile Include="..\dopgtr.c" />
+ <ClCompile Include="..\dorg2l.c" />
+ <ClCompile Include="..\dorg2r.c" />
+ <ClCompile Include="..\dorgbr.c" />
+ <ClCompile Include="..\dorghr.c" />
+ <ClCompile Include="..\dorgl2.c" />
+ <ClCompile Include="..\dorglq.c" />
+ <ClCompile Include="..\dorgql.c" />
+ <ClCompile Include="..\dorgqr.c" />
+ <ClCompile Include="..\dorgr2.c" />
+ <ClCompile Include="..\dorgrq.c" />
+ <ClCompile Include="..\dorgtr.c" />
+ <ClCompile Include="..\dorm2l.c" />
+ <ClCompile Include="..\dorm2r.c" />
+ <ClCompile Include="..\dormbr.c" />
+ <ClCompile Include="..\dormhr.c" />
+ <ClCompile Include="..\dorml2.c" />
+ <ClCompile Include="..\dormlq.c" />
+ <ClCompile Include="..\dormql.c" />
+ <ClCompile Include="..\dormqr.c" />
+ <ClCompile Include="..\dormr2.c" />
+ <ClCompile Include="..\dormr3.c" />
+ <ClCompile Include="..\dormrq.c" />
+ <ClCompile Include="..\dormrz.c" />
+ <ClCompile Include="..\dpocon.c" />
+ <ClCompile Include="..\dpotf2.c" />
+ <ClCompile Include="..\dpotrf.c" />
+ <ClCompile Include="..\dpotrs.c" />
+ <ClCompile Include="..\dpptrf.c" />
+ <ClCompile Include="..\drscl.c" />
+ <ClCompile Include="..\dspev.c" />
+ <ClCompile Include="..\dspgst.c" />
+ <ClCompile Include="..\dspgv.c" />
+ <ClCompile Include="..\dsptrd.c" />
+ <ClCompile Include="..\dsptrf.c" />
+ <ClCompile Include="..\dsteqr.c" />
+ <ClCompile Include="..\dsterf.c" />
+ <ClCompile Include="..\dsycon.c" />
+ <ClCompile Include="..\dsyev.c" />
+ <ClCompile Include="..\dsysv.c" />
+ <ClCompile Include="..\dsytd2.c" />
+ <ClCompile Include="..\dsytf2.c" />
+ <ClCompile Include="..\dsytrd.c" />
+ <ClCompile Include="..\dsytrf.c" />
+ <ClCompile Include="..\dsytri.c" />
+ <ClCompile Include="..\dsytrs.c" />
+ <ClCompile Include="..\dtgevc.c" />
+ <ClCompile Include="..\dtgex2.c" />
+ <ClCompile Include="..\dtgexc.c" />
+ <ClCompile Include="..\dtgsen.c" />
+ <ClCompile Include="..\dtgsy2.c" />
+ <ClCompile Include="..\dtgsyl.c" />
+ <ClCompile Include="..\dtrcon.c" />
+ <ClCompile Include="..\dtrevc.c" />
+ <ClCompile Include="..\dtrexc.c" />
+ <ClCompile Include="..\dtrsen.c" />
+ <ClCompile Include="..\dtrsyl.c" />
+ <ClCompile Include="..\dtrti2.c" />
+ <ClCompile Include="..\dtrtri.c" />
+ <ClCompile Include="..\dtrtrs.c" />
+ <ClCompile Include="..\dtzrqf.c" />
+ <ClCompile Include="..\dtzrzf.c" />
+ <ClCompile Include="..\dzsum1.c" />
+ <ClCompile Include="..\ieeeck.c" />
+ <ClCompile Include="..\ilaenv.c" />
+ <ClCompile Include="..\iparmq.c" />
+ <ClCompile Include="..\izmax1.c" />
+ <ClCompile Include="..\lsame.c" />
+ <ClCompile Include="..\slamch.c" />
+ <ClCompile Include="..\xerbla.c" />
+ <ClCompile Include="..\zbdsqr.c" />
+ <ClCompile Include="..\zdrot.c" />
+ <ClCompile Include="..\zdrscl.c" />
+ <ClCompile Include="..\zgebak.c" />
+ <ClCompile Include="..\zgebal.c" />
+ <ClCompile Include="..\zgebd2.c" />
+ <ClCompile Include="..\zgebrd.c" />
+ <ClCompile Include="..\zgecon.c" />
+ <ClCompile Include="..\zgees.c" />
+ <ClCompile Include="..\zgeev.c" />
+ <ClCompile Include="..\zgehd2.c" />
+ <ClCompile Include="..\zgehrd.c" />
+ <ClCompile Include="..\zgelq2.c" />
+ <ClCompile Include="..\zgelqf.c" />
+ <ClCompile Include="..\zgelsy.c" />
+ <ClCompile Include="..\zgeqp3.c" />
+ <ClCompile Include="..\zgeqpf.c" />
+ <ClCompile Include="..\zgeqr2.c" />
+ <ClCompile Include="..\zgeqrf.c" />
+ <ClCompile Include="..\zgesc2.c" />
+ <ClCompile Include="..\zgesvd.c" />
+ <ClCompile Include="..\zgetc2.c" />
+ <ClCompile Include="..\zgetf2.c" />
+ <ClCompile Include="..\zgetrf.c" />
+ <ClCompile Include="..\zgetri.c" />
+ <ClCompile Include="..\zgetrs.c" />
+ <ClCompile Include="..\zggbak.c" />
+ <ClCompile Include="..\zggbal.c" />
+ <ClCompile Include="..\zgges.c" />
+ <ClCompile Include="..\zggev.c" />
+ <ClCompile Include="..\zgghrd.c" />
+ <ClCompile Include="..\zheev.c" />
+ <ClCompile Include="..\zhetd2.c" />
+ <ClCompile Include="..\zhetrd.c" />
+ <ClCompile Include="..\zhgeqz.c" />
+ <ClCompile Include="..\zhseqr.c" />
+ <ClCompile Include="..\zlabrd.c" />
+ <ClCompile Include="..\zlacgv.c" />
+ <ClCompile Include="..\zlacn2.c" />
+ <ClCompile Include="..\zlacon.c" />
+ <ClCompile Include="..\zlacpy.c" />
+ <ClCompile Include="..\zladiv.c" />
+ <ClCompile Include="..\zlahqr.c" />
+ <ClCompile Include="..\zlahr2.c" />
+ <ClCompile Include="..\zlahrd.c" />
+ <ClCompile Include="..\zlaic1.c" />
+ <ClCompile Include="..\zlange.c" />
+ <ClCompile Include="..\zlanhe.c" />
+ <ClCompile Include="..\zlanhs.c" />
+ <ClCompile Include="..\zlaqp2.c" />
+ <ClCompile Include="..\zlaqps.c" />
+ <ClCompile Include="..\zlaqr0.c" />
+ <ClCompile Include="..\zlaqr1.c" />
+ <ClCompile Include="..\zlaqr2.c" />
+ <ClCompile Include="..\zlaqr3.c" />
+ <ClCompile Include="..\zlaqr4.c" />
+ <ClCompile Include="..\zlaqr5.c" />
+ <ClCompile Include="..\zlarf.c" />
+ <ClCompile Include="..\zlarfb.c" />
+ <ClCompile Include="..\zlarfg.c" />
+ <ClCompile Include="..\zlarft.c" />
+ <ClCompile Include="..\zlarfx.c">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Disabled</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Disabled</Optimization>
+ </ClCompile>
+ <ClCompile Include="..\zlartg.c" />
+ <ClCompile Include="..\zlarz.c" />
+ <ClCompile Include="..\zlarzb.c" />
+ <ClCompile Include="..\zlarzt.c" />
+ <ClCompile Include="..\zlascl.c" />
+ <ClCompile Include="..\zlaset.c" />
+ <ClCompile Include="..\zlasr.c" />
+ <ClCompile Include="..\zlassq.c" />
+ <ClCompile Include="..\zlaswp.c" />
+ <ClCompile Include="..\zlatdf.c" />
+ <ClCompile Include="..\zlatrd.c" />
+ <ClCompile Include="..\zlatrs.c" />
+ <ClCompile Include="..\zlatrz.c" />
+ <ClCompile Include="..\zpotf2.c" />
+ <ClCompile Include="..\zpotrf.c" />
+ <ClCompile Include="..\zrot.c" />
+ <ClCompile Include="..\zsteqr.c" />
+ <ClCompile Include="..\ztgevc.c" />
+ <ClCompile Include="..\ztgex2.c" />
+ <ClCompile Include="..\ztgexc.c" />
+ <ClCompile Include="..\ztgsen.c" />
+ <ClCompile Include="..\ztgsy2.c" />
+ <ClCompile Include="..\ztgsyl.c" />
+ <ClCompile Include="..\ztrevc.c" />
+ <ClCompile Include="..\ztrexc.c" />
+ <ClCompile Include="..\ztrsen.c" />
+ <ClCompile Include="..\ztrsyl.c" />
+ <ClCompile Include="..\ztrti2.c" />
+ <ClCompile Include="..\ztrtri.c" />
+ <ClCompile Include="..\ztzrzf.c" />
+ <ClCompile Include="..\zung2l.c" />
+ <ClCompile Include="..\zung2r.c" />
+ <ClCompile Include="..\zungbr.c" />
+ <ClCompile Include="..\zunghr.c" />
+ <ClCompile Include="..\zungl2.c" />
+ <ClCompile Include="..\zunglq.c" />
+ <ClCompile Include="..\zungql.c" />
+ <ClCompile Include="..\zungqr.c" />
+ <ClCompile Include="..\zungtr.c" />
+ <ClCompile Include="..\zunm2r.c" />
+ <ClCompile Include="..\zunmbr.c" />
+ <ClCompile Include="..\zunml2.c" />
+ <ClCompile Include="..\zunmlq.c" />
+ <ClCompile Include="..\zunmqr.c" />
+ <ClCompile Include="..\zunmr3.c" />
+ <ClCompile Include="..\zunmrz.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="..\dbdsqr.f" />
+ <f2c_rule Include="..\dgebak.f" />
+ <f2c_rule Include="..\dgebal.f" />
+ <f2c_rule Include="..\dgebd2.f" />
+ <f2c_rule Include="..\dgebrd.f" />
+ <f2c_rule Include="..\dgecon.f" />
+ <f2c_rule Include="..\dgeequ.f" />
+ <f2c_rule Include="..\dgees.f" />
+ <f2c_rule Include="..\dgeesx.f" />
+ <f2c_rule Include="..\dgeev.f" />
+ <f2c_rule Include="..\dgegs.f" />
+ <f2c_rule Include="..\dgehd2.f" />
+ <f2c_rule Include="..\dgehrd.f" />
+ <f2c_rule Include="..\dgelq2.f" />
+ <f2c_rule Include="..\dgelqf.f" />
+ <f2c_rule Include="..\dgels.f" />
+ <f2c_rule Include="..\dgelss.f" />
+ <f2c_rule Include="..\dgelsx.f" />
+ <f2c_rule Include="..\dgelsy.f" />
+ <f2c_rule Include="..\dgeql2.f" />
+ <f2c_rule Include="..\dgeqlf.f" />
+ <f2c_rule Include="..\dgeqp3.f" />
+ <f2c_rule Include="..\dgeqpf.f" />
+ <f2c_rule Include="..\dgeqr2.f" />
+ <f2c_rule Include="..\dgeqrf.f" />
+ <f2c_rule Include="..\dgerfs.f" />
+ <f2c_rule Include="..\dgerq2.f" />
+ <f2c_rule Include="..\dgerqf.f" />
+ <f2c_rule Include="..\dgesc2.f" />
+ <f2c_rule Include="..\dgesv.f" />
+ <f2c_rule Include="..\dgesvd.f" />
+ <f2c_rule Include="..\dgesvx.f" />
+ <f2c_rule Include="..\dgetc2.f" />
+ <f2c_rule Include="..\dgetf2.f" />
+ <f2c_rule Include="..\dgetrf.f" />
+ <f2c_rule Include="..\dgetri.f" />
+ <f2c_rule Include="..\dgetrs.f" />
+ <f2c_rule Include="..\dggbak.f" />
+ <f2c_rule Include="..\dggbal.f" />
+ <f2c_rule Include="..\dgges.f" />
+ <f2c_rule Include="..\dggev.f" />
+ <f2c_rule Include="..\dgghrd.f" />
+ <f2c_rule Include="..\dhgeqz.f" />
+ <f2c_rule Include="..\dhseqr.f" />
+ <f2c_rule Include="..\disnan.f" />
+ <f2c_rule Include="..\dlabad.f" />
+ <f2c_rule Include="..\dlabrd.f" />
+ <f2c_rule Include="..\dlacn2.f" />
+ <f2c_rule Include="..\dlacon.f" />
+ <f2c_rule Include="..\dlacpy.f" />
+ <f2c_rule Include="..\dladiv.f" />
+ <f2c_rule Include="..\dlae2.f" />
+ <f2c_rule Include="..\dlaev2.f" />
+ <f2c_rule Include="..\dlaexc.f" />
+ <f2c_rule Include="..\dlag2.f" />
+ <f2c_rule Include="..\dlagv2.f" />
+ <f2c_rule Include="..\dlahqr.f" />
+ <f2c_rule Include="..\dlahr2.f" />
+ <f2c_rule Include="..\dlahrd.f" />
+ <f2c_rule Include="..\dlaic1.f" />
+ <f2c_rule Include="..\dlaisnan.f" />
+ <f2c_rule Include="..\dlaln2.f" />
+ <f2c_rule Include="..\dlamch.f" />
+ <f2c_rule Include="..\dlange.f" />
+ <f2c_rule Include="..\dlanhs.f" />
+ <f2c_rule Include="..\dlansp.f" />
+ <f2c_rule Include="..\dlanst.f" />
+ <f2c_rule Include="..\dlansy.f" />
+ <f2c_rule Include="..\dlantr.f" />
+ <f2c_rule Include="..\dlanv2.f" />
+ <f2c_rule Include="..\dlapmt.f" />
+ <f2c_rule Include="..\dlapy2.f" />
+ <f2c_rule Include="..\dlapy3.f" />
+ <f2c_rule Include="..\dlaqge.f" />
+ <f2c_rule Include="..\dlaqp2.f" />
+ <f2c_rule Include="..\dlaqps.f" />
+ <f2c_rule Include="..\dlaqr0.f" />
+ <f2c_rule Include="..\dlaqr1.f" />
+ <f2c_rule Include="..\dlaqr2.f" />
+ <f2c_rule Include="..\dlaqr3.f" />
+ <f2c_rule Include="..\dlaqr4.f" />
+ <f2c_rule Include="..\dlaqr5.f" />
+ <f2c_rule Include="..\dlarf.f" />
+ <f2c_rule Include="..\dlarfb.f" />
+ <f2c_rule Include="..\dlarfg.f" />
+ <f2c_rule Include="..\dlarft.f" />
+ <f2c_rule Include="..\dlarfx.f" />
+ <f2c_rule Include="..\dlartg.f" />
+ <f2c_rule Include="..\dlarz.f" />
+ <f2c_rule Include="..\dlarzb.f" />
+ <f2c_rule Include="..\dlarzt.f" />
+ <f2c_rule Include="..\dlas2.f" />
+ <f2c_rule Include="..\dlascl.f" />
+ <f2c_rule Include="..\dlaset.f" />
+ <f2c_rule Include="..\dlasq1.f" />
+ <f2c_rule Include="..\dlasq2.f" />
+ <f2c_rule Include="..\dlasq3.f" />
+ <f2c_rule Include="..\dlasq4.f" />
+ <f2c_rule Include="..\dlasq5.f" />
+ <f2c_rule Include="..\dlasq6.f" />
+ <f2c_rule Include="..\dlasr.f" />
+ <f2c_rule Include="..\dlasrt.f" />
+ <f2c_rule Include="..\dlassq.f" />
+ <f2c_rule Include="..\dlasv2.f" />
+ <f2c_rule Include="..\dlaswp.f" />
+ <f2c_rule Include="..\dlasy2.f" />
+ <f2c_rule Include="..\dlasyf.f" />
+ <f2c_rule Include="..\dlatdf.f" />
+ <f2c_rule Include="..\dlatrd.f" />
+ <f2c_rule Include="..\dlatrs.f" />
+ <f2c_rule Include="..\dlatrz.f" />
+ <f2c_rule Include="..\dlatzm.f" />
+ <f2c_rule Include="..\dlazq3.f" />
+ <f2c_rule Include="..\dlazq4.f" />
+ <f2c_rule Include="..\dopgtr.f" />
+ <f2c_rule Include="..\dorg2l.f" />
+ <f2c_rule Include="..\dorg2r.f" />
+ <f2c_rule Include="..\dorgbr.f" />
+ <f2c_rule Include="..\dorghr.f" />
+ <f2c_rule Include="..\dorgl2.f" />
+ <f2c_rule Include="..\dorglq.f" />
+ <f2c_rule Include="..\dorgql.f" />
+ <f2c_rule Include="..\dorgqr.f" />
+ <f2c_rule Include="..\dorgr2.f" />
+ <f2c_rule Include="..\dorgrq.f" />
+ <f2c_rule Include="..\dorgtr.f" />
+ <f2c_rule Include="..\dorm2l.f" />
+ <f2c_rule Include="..\dorm2r.f" />
+ <f2c_rule Include="..\dormbr.f" />
+ <f2c_rule Include="..\dormhr.f" />
+ <f2c_rule Include="..\dorml2.f" />
+ <f2c_rule Include="..\dormlq.f" />
+ <f2c_rule Include="..\dormql.f" />
+ <f2c_rule Include="..\dormqr.f" />
+ <f2c_rule Include="..\dormr2.f" />
+ <f2c_rule Include="..\dormr3.f" />
+ <f2c_rule Include="..\dormrq.f" />
+ <f2c_rule Include="..\dormrz.f" />
+ <f2c_rule Include="..\dpocon.f" />
+ <f2c_rule Include="..\dpotf2.f" />
+ <f2c_rule Include="..\dpotrf.f" />
+ <f2c_rule Include="..\dpotrs.f" />
+ <f2c_rule Include="..\dpptrf.f" />
+ <f2c_rule Include="..\drscl.f" />
+ <f2c_rule Include="..\dspev.f" />
+ <f2c_rule Include="..\dspgst.f" />
+ <f2c_rule Include="..\dspgv.f" />
+ <f2c_rule Include="..\dsptrd.f" />
+ <f2c_rule Include="..\dsptrf.f" />
+ <f2c_rule Include="..\dsteqr.f" />
+ <f2c_rule Include="..\dsterf.f" />
+ <f2c_rule Include="..\dsycon.f" />
+ <f2c_rule Include="..\dsyev.f" />
+ <f2c_rule Include="..\dsysv.f" />
+ <f2c_rule Include="..\dsytd2.f" />
+ <f2c_rule Include="..\dsytf2.f" />
+ <f2c_rule Include="..\dsytrd.f" />
+ <f2c_rule Include="..\dsytrf.f" />
+ <f2c_rule Include="..\dsytri.f" />
+ <f2c_rule Include="..\dsytrs.f" />
+ <f2c_rule Include="..\dtgevc.f" />
+ <f2c_rule Include="..\dtgex2.f" />
+ <f2c_rule Include="..\dtgexc.f" />
+ <f2c_rule Include="..\dtgsen.f" />
+ <f2c_rule Include="..\dtgsy2.f" />
+ <f2c_rule Include="..\dtgsyl.f" />
+ <f2c_rule Include="..\dtrcon.f" />
+ <f2c_rule Include="..\dtrevc.f" />
+ <f2c_rule Include="..\dtrexc.f" />
+ <f2c_rule Include="..\dtrsen.f" />
+ <f2c_rule Include="..\dtrsyl.f" />
+ <f2c_rule Include="..\dtrti2.f" />
+ <f2c_rule Include="..\dtrtri.f" />
+ <f2c_rule Include="..\dtrtrs.f" />
+ <f2c_rule Include="..\dtzrqf.f" />
+ <f2c_rule Include="..\dtzrzf.f" />
+ <f2c_rule Include="..\dzsum1.f" />
+ <f2c_rule Include="..\ieeeck.f" />
+ <f2c_rule Include="..\ilaenv.f" />
+ <f2c_rule Include="..\iparmq.f" />
+ <f2c_rule Include="..\izmax1.f" />
+ <f2c_rule Include="..\lsame.f" />
+ <f2c_rule Include="..\slamch.f" />
+ <f2c_rule Include="..\xerbla.f" />
+ <f2c_rule Include="..\zbdsqr.f" />
+ <f2c_rule Include="..\zdrot.f" />
+ <f2c_rule Include="..\zdrscl.f" />
+ <f2c_rule Include="..\zgebak.f" />
+ <f2c_rule Include="..\zgebal.f" />
+ <f2c_rule Include="..\zgebd2.f" />
+ <f2c_rule Include="..\zgebrd.f" />
+ <f2c_rule Include="..\zgecon.f" />
+ <f2c_rule Include="..\zgees.f" />
+ <f2c_rule Include="..\zgeev.f" />
+ <f2c_rule Include="..\zgehd2.f" />
+ <f2c_rule Include="..\zgehrd.f" />
+ <f2c_rule Include="..\zgelq2.f" />
+ <f2c_rule Include="..\zgelqf.f" />
+ <f2c_rule Include="..\zgelsy.f" />
+ <f2c_rule Include="..\zgeqp3.f" />
+ <f2c_rule Include="..\zgeqpf.f" />
+ <f2c_rule Include="..\zgeqr2.f" />
+ <f2c_rule Include="..\zgeqrf.f" />
+ <f2c_rule Include="..\zgesc2.f" />
+ <f2c_rule Include="..\zgesvd.f" />
+ <f2c_rule Include="..\zgetc2.f" />
+ <f2c_rule Include="..\zgetf2.f" />
+ <f2c_rule Include="..\zgetrf.f" />
+ <f2c_rule Include="..\zgetri.f" />
+ <f2c_rule Include="..\zgetrs.f" />
+ <f2c_rule Include="..\zggbak.f" />
+ <f2c_rule Include="..\zggbal.f" />
+ <f2c_rule Include="..\zgges.f" />
+ <f2c_rule Include="..\zggev.f" />
+ <f2c_rule Include="..\zgghrd.f" />
+ <f2c_rule Include="..\zheev.f" />
+ <f2c_rule Include="..\zhetd2.f" />
+ <f2c_rule Include="..\zhetrd.f" />
+ <f2c_rule Include="..\zhgeqz.f" />
+ <f2c_rule Include="..\zhseqr.f" />
+ <f2c_rule Include="..\zlabrd.f" />
+ <f2c_rule Include="..\zlacgv.f" />
+ <f2c_rule Include="..\zlacn2.f" />
+ <f2c_rule Include="..\zlacon.f" />
+ <f2c_rule Include="..\zlacpy.f" />
+ <f2c_rule Include="..\zladiv.f" />
+ <f2c_rule Include="..\zlahqr.f" />
+ <f2c_rule Include="..\zlahr2.f" />
+ <f2c_rule Include="..\zlahrd.f" />
+ <f2c_rule Include="..\zlaic1.f" />
+ <f2c_rule Include="..\zlange.f" />
+ <f2c_rule Include="..\zlanhe.f" />
+ <f2c_rule Include="..\zlanhs.f" />
+ <f2c_rule Include="..\zlaqp2.f" />
+ <f2c_rule Include="..\zlaqps.f" />
+ <f2c_rule Include="..\zlaqr0.f" />
+ <f2c_rule Include="..\zlaqr1.f" />
+ <f2c_rule Include="..\zlaqr2.f" />
+ <f2c_rule Include="..\zlaqr3.f" />
+ <f2c_rule Include="..\zlaqr4.f" />
+ <f2c_rule Include="..\zlaqr5.f" />
+ <f2c_rule Include="..\zlarf.f" />
+ <f2c_rule Include="..\zlarfb.f" />
+ <f2c_rule Include="..\zlarfg.f" />
+ <f2c_rule Include="..\zlarft.f" />
+ <f2c_rule Include="..\zlarfx.f" />
+ <f2c_rule Include="..\zlartg.f" />
+ <f2c_rule Include="..\zlarz.f" />
+ <f2c_rule Include="..\zlarzb.f" />
+ <f2c_rule Include="..\zlarzt.f" />
+ <f2c_rule Include="..\zlascl.f" />
+ <f2c_rule Include="..\zlaset.f" />
+ <f2c_rule Include="..\zlasr.f" />
+ <f2c_rule Include="..\zlassq.f" />
+ <f2c_rule Include="..\zlaswp.f" />
+ <f2c_rule Include="..\zlatdf.f" />
+ <f2c_rule Include="..\zlatrd.f" />
+ <f2c_rule Include="..\zlatrs.f" />
+ <f2c_rule Include="..\zlatrz.f" />
+ <f2c_rule Include="..\zpotf2.f" />
+ <f2c_rule Include="..\zpotrf.f" />
+ <f2c_rule Include="..\zrot.f" />
+ <f2c_rule Include="..\zsteqr.f" />
+ <f2c_rule Include="..\ztgevc.f" />
+ <f2c_rule Include="..\ztgex2.f" />
+ <f2c_rule Include="..\ztgexc.f" />
+ <f2c_rule Include="..\ztgsen.f" />
+ <f2c_rule Include="..\ztgsy2.f" />
+ <f2c_rule Include="..\ztgsyl.f" />
+ <f2c_rule Include="..\ztrevc.f" />
+ <f2c_rule Include="..\ztrexc.f" />
+ <f2c_rule Include="..\ztrsen.f" />
+ <f2c_rule Include="..\ztrsyl.f" />
+ <f2c_rule Include="..\ztrti2.f" />
+ <f2c_rule Include="..\ztrtri.f" />
+ <f2c_rule Include="..\ztzrzf.f" />
+ <f2c_rule Include="..\zung2l.f" />
+ <f2c_rule Include="..\zung2r.f" />
+ <f2c_rule Include="..\zungbr.f" />
+ <f2c_rule Include="..\zunghr.f" />
+ <f2c_rule Include="..\zungl2.f" />
+ <f2c_rule Include="..\zunglq.f" />
+ <f2c_rule Include="..\zungql.f" />
+ <f2c_rule Include="..\zungqr.f" />
+ <f2c_rule Include="..\zungtr.f" />
+ <f2c_rule Include="..\zunm2r.f" />
+ <f2c_rule Include="..\zunmbr.f" />
+ <f2c_rule Include="..\zunml2.f" />
+ <f2c_rule Include="..\zunmlq.f" />
+ <f2c_rule Include="..\zunmqr.f" />
+ <f2c_rule Include="..\zunmr3.f" />
+ <f2c_rule Include="..\zunmrz.f" />
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\..\bin\libf2c.lib" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\blas\blas_f\blasplus_DLL_f2c.vcxproj">
+ <Project>{78bd64ce-181d-4d3f-9254-5c4f55c1edc9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.targets" />
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj.filters b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj.filters
new file mode 100644
index 00000000..7a89de81
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/lapack_f/lapack_DLL_f2c.vcxproj.filters
@@ -0,0 +1,1782 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{3b906b2b-f90a-45f4-a2ca-d4606665aae9}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{2d444260-4b18-4321-b33c-befb73e5eea2}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{192f4d41-c71c-4794-a1e0-cdf9729470c1}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
+ </Filter>
+ <Filter Include="Fortran Files">
+ <UniqueIdentifier>{de2dcb15-7a52-47c0-b7de-4fe911ee4029}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\dbdsqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgebak.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgebal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgebd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgebrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgecon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeequ.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgees.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeesx.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgegs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgehd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgehrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgelq2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgelqf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgels.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgelss.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgelsx.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgelsy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeql2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeqlf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeqp3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeqpf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeqr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgeqrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgerfs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgerq2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgerqf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgesc2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgesv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgesvd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgesvx.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgetc2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgetf2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgetrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgetri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgetrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dggbak.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dggbal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgges.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dggev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dgghrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dhgeqz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dhseqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\disnan.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlabad.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlabrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlacn2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlacon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlacpy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dladiv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlae2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaev2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaexc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlag2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlagv2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlahqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlahr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlahrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaic1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaisnan.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaln2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlamch.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlange.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlanhs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlansp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlanst.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlansy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlantr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlanv2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlapmt.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlapy2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlapy3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqge.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqp2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqps.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqr0.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqr1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqr3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqr4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaqr5.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarfb.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarfg.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarfx.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlartg.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarzb.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlarzt.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlas2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlascl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaset.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasq1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasq2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasq3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasq4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasq5.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasq6.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasrt.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlassq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasv2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlaswp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasy2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlasyf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlatdf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlatrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlatrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlatrz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlatzm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlazq3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dlazq4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dopgtr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorg2l.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorg2r.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgbr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorghr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgl2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorglq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgql.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgrq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorgtr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorm2l.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorm2r.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormbr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormhr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dorml2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormlq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormql.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormr3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormrq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dormrz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dpocon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dpotf2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dpotrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dpotrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dpptrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\drscl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dspev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dspgst.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dspgv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsptrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsptrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsteqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsterf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsycon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsyev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsysv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsytd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsytf2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsytrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsytrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsytri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dsytrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtgevc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtgex2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtgexc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtgsen.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtgsy2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtgsyl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrcon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrevc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrexc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrsen.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrsyl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrti2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrtri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtrtrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtzrqf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dtzrzf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dzsum1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ieeeck.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ilaenv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\iparmq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\izmax1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\lsame.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\slamch.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\xerbla.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zbdsqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zdrot.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zdrscl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgebak.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgebal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgebd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgebrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgecon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgees.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgeev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgehd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgehrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgelq2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgelqf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgelsy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgeqp3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgeqpf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgeqr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgeqrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgesc2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgesvd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgetc2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgetf2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgetrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgetri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgetrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zggbak.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zggbal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgges.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zggev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zgghrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zheev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhetd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhetrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhgeqz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zhseqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlabrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlacgv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlacn2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlacon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlacpy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zladiv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlahqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlahr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlahrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaic1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlange.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlanhe.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlanhs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqp2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqps.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqr0.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqr1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqr2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqr3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqr4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaqr5.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarfb.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarfg.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarft.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarfx.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlartg.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarzb.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlarzt.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlascl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaset.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlasr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlassq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlaswp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlatdf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlatrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlatrs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zlatrz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zpotf2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zpotrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zrot.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zsteqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztgevc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztgex2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztgexc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztgsen.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztgsy2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztgsyl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrevc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrexc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrsen.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrsyl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrti2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztrtri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\ztzrzf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zung2l.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zung2r.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zungbr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunghr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zungl2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunglq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zungql.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zungqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zungtr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunm2r.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunmbr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunml2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunmlq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunmqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunmr3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\zunmrz.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="..\dbdsqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgebak.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgebal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgebd2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgebrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgecon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeequ.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgees.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeesx.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgegs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgehd2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgehrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgelq2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgelqf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgels.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgelss.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgelsx.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgelsy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeql2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeqlf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeqp3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeqpf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeqr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgeqrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgerfs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgerq2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgerqf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgesc2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgesv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgesvd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgesvx.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgetc2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgetf2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgetrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgetri.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgetrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dggbak.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dggbal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgges.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dggev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dgghrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dhgeqz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dhseqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\disnan.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlabad.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlabrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlacn2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlacon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlacpy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dladiv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlae2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaev2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaexc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlag2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlagv2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlahqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlahr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlahrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaic1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaisnan.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaln2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlamch.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlange.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlanhs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlansp.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlanst.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlansy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlantr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlanv2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlapmt.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlapy2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlapy3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqge.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqp2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqps.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqr0.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqr1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqr3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqr4.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaqr5.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarfb.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarfg.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarft.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarfx.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlartg.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarzb.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlarzt.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlas2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlascl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaset.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasq1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasq2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasq3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasq4.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasq5.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasq6.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasrt.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlassq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasv2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlaswp.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasy2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlasyf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlatdf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlatrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlatrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlatrz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlatzm.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlazq3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dlazq4.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dopgtr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorg2l.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorg2r.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgbr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorghr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgl2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorglq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgql.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgrq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorgtr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorm2l.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorm2r.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormbr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormhr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dorml2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormlq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormql.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormr3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormrq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dormrz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dpocon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dpotf2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dpotrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dpotrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dpptrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\drscl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dspev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dspgst.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dspgv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsptrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsptrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsteqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsterf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsycon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsyev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsysv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsytd2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsytf2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsytrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsytrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsytri.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dsytrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtgevc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtgex2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtgexc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtgsen.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtgsy2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtgsyl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrcon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrevc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrexc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrsen.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrsyl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrti2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrtri.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtrtrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtzrqf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dtzrzf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\dzsum1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ieeeck.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ilaenv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\iparmq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\izmax1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\lsame.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\slamch.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\xerbla.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zbdsqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zdrot.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zdrscl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgebak.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgebal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgebd2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgebrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgecon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgees.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgeev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgehd2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgehrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgelq2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgelqf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgelsy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgeqp3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgeqpf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgeqr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgeqrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgesc2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgesvd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgetc2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgetf2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgetrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgetri.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgetrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zggbak.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zggbal.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgges.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zggev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zgghrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zheev.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhetd2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhetrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhgeqz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zhseqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlabrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlacgv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlacn2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlacon.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlacpy.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zladiv.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlahqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlahr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlahrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaic1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlange.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlanhe.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlanhs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqp2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqps.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqr0.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqr1.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqr2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqr3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqr4.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaqr5.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarfb.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarfg.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarft.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarfx.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlartg.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarzb.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlarzt.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlascl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaset.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlasr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlassq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlaswp.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlatdf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlatrd.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlatrs.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zlatrz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zpotf2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zpotrf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zrot.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zsteqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztgevc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztgex2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztgexc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztgsen.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztgsy2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztgsyl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrevc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrexc.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrsen.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrsyl.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrti2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztrtri.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\ztzrzf.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zung2l.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zung2r.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zungbr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunghr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zungl2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunglq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zungql.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zungqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zungtr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunm2r.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunmbr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunml2.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunmlq.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunmqr.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunmr3.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\zunmrz.f">
+ <Filter>Fortran Files</Filter>
+ </f2c_rule>
+ </ItemGroup>
+ <ItemGroup>
+ <Library Include="..\..\..\..\bin\libf2c.lib" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\Makefile.am" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/2.3-1/src/fortran/lapack/lsame.f b/2.3-1/src/fortran/lapack/lsame.f
new file mode 100644
index 00000000..bf25d86f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/lsame.f
@@ -0,0 +1,87 @@
+ LOGICAL FUNCTION LSAME( CA, CB )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* September 30, 1994
+*
+* .. Scalar Arguments ..
+ CHARACTER CA, CB
+* ..
+*
+* Purpose
+* =======
+*
+* LSAME returns .TRUE. if CA is the same letter as CB regardless of
+* case.
+*
+* Arguments
+* =========
+*
+* CA (input) CHARACTER*1
+* CB (input) CHARACTER*1
+* CA and CB specify the single characters to be compared.
+*
+* =====================================================================
+*
+* .. Intrinsic Functions ..
+ INTRINSIC ICHAR
+* ..
+* .. Local Scalars ..
+ INTEGER INTA, INTB, ZCODE
+* ..
+* .. Executable Statements ..
+*
+* Test if the characters are equal
+*
+ LSAME = CA.EQ.CB
+ IF( LSAME )
+ $ RETURN
+*
+* Now test for equivalence if both characters are alphabetic.
+*
+ ZCODE = ICHAR( 'Z' )
+*
+* Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+* machines, on which ICHAR returns a value with bit 8 set.
+* ICHAR('A') on Prime machines returns 193 which is the same as
+* ICHAR('A') on an EBCDIC machine.
+*
+ INTA = ICHAR( CA )
+ INTB = ICHAR( CB )
+*
+ IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
+*
+* ASCII is assumed - ZCODE is the ASCII code of either lower or
+* upper case 'Z'.
+*
+ IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
+ IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
+*
+ ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
+*
+* EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+* upper case 'Z'.
+*
+ IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
+ $ INTA.GE.145 .AND. INTA.LE.153 .OR.
+ $ INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
+ IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
+ $ INTB.GE.145 .AND. INTB.LE.153 .OR.
+ $ INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
+*
+ ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
+*
+* ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+* plus 128 of either lower or upper case 'Z'.
+*
+ IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
+ IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
+ END IF
+ LSAME = INTA.EQ.INTB
+*
+* RETURN
+*
+* End of LSAME
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/slamch.f b/2.3-1/src/fortran/lapack/slamch.f
new file mode 100644
index 00000000..afb4d368
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/slamch.f
@@ -0,0 +1,857 @@
+ REAL FUNCTION SLAMCH( CMACH )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ CHARACTER CMACH
+* ..
+*
+* Purpose
+* =======
+*
+* SLAMCH determines single precision machine parameters.
+*
+* Arguments
+* =========
+*
+* CMACH (input) CHARACTER*1
+* Specifies the value to be returned by SLAMCH:
+* = 'E' or 'e', SLAMCH := eps
+* = 'S' or 's , SLAMCH := sfmin
+* = 'B' or 'b', SLAMCH := base
+* = 'P' or 'p', SLAMCH := eps*base
+* = 'N' or 'n', SLAMCH := t
+* = 'R' or 'r', SLAMCH := rnd
+* = 'M' or 'm', SLAMCH := emin
+* = 'U' or 'u', SLAMCH := rmin
+* = 'L' or 'l', SLAMCH := emax
+* = 'O' or 'o', SLAMCH := rmax
+*
+* where
+*
+* eps = relative machine precision
+* sfmin = safe minimum, such that 1/sfmin does not overflow
+* base = base of the machine
+* prec = eps*base
+* t = number of (base) digits in the mantissa
+* rnd = 1.0 when rounding occurs in addition, 0.0 otherwise
+* emin = minimum exponent before (gradual) underflow
+* rmin = underflow threshold - base**(emin-1)
+* emax = largest exponent before overflow
+* rmax = overflow threshold - (base**emax)*(1-eps)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ REAL ONE, ZERO
+ PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL FIRST, LRND
+ INTEGER BETA, IMAX, IMIN, IT
+ REAL BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
+ $ RND, SFMIN, SMALL, T
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL SLAMC2
+* ..
+* .. Save statement ..
+ SAVE FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
+ $ EMAX, RMAX, PREC
+* ..
+* .. Data statements ..
+ DATA FIRST / .TRUE. /
+* ..
+* .. Executable Statements ..
+*
+ IF( FIRST ) THEN
+ FIRST = .FALSE.
+ CALL SLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
+ BASE = BETA
+ T = IT
+ IF( LRND ) THEN
+ RND = ONE
+ EPS = ( BASE**( 1-IT ) ) / 2
+ ELSE
+ RND = ZERO
+ EPS = BASE**( 1-IT )
+ END IF
+ PREC = EPS*BASE
+ EMIN = IMIN
+ EMAX = IMAX
+ SFMIN = RMIN
+ SMALL = ONE / RMAX
+ IF( SMALL.GE.SFMIN ) THEN
+*
+* Use SMALL plus a bit, to avoid the possibility of rounding
+* causing overflow when computing 1/sfmin.
+*
+ SFMIN = SMALL*( ONE+EPS )
+ END IF
+ END IF
+*
+ IF( LSAME( CMACH, 'E' ) ) THEN
+ RMACH = EPS
+ ELSE IF( LSAME( CMACH, 'S' ) ) THEN
+ RMACH = SFMIN
+ ELSE IF( LSAME( CMACH, 'B' ) ) THEN
+ RMACH = BASE
+ ELSE IF( LSAME( CMACH, 'P' ) ) THEN
+ RMACH = PREC
+ ELSE IF( LSAME( CMACH, 'N' ) ) THEN
+ RMACH = T
+ ELSE IF( LSAME( CMACH, 'R' ) ) THEN
+ RMACH = RND
+ ELSE IF( LSAME( CMACH, 'M' ) ) THEN
+ RMACH = EMIN
+ ELSE IF( LSAME( CMACH, 'U' ) ) THEN
+ RMACH = RMIN
+ ELSE IF( LSAME( CMACH, 'L' ) ) THEN
+ RMACH = EMAX
+ ELSE IF( LSAME( CMACH, 'O' ) ) THEN
+ RMACH = RMAX
+ END IF
+*
+ SLAMCH = RMACH
+ RETURN
+*
+* End of SLAMCH
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE SLAMC1( BETA, T, RND, IEEE1 )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE1, RND
+ INTEGER BETA, T
+* ..
+*
+* Purpose
+* =======
+*
+* SLAMC1 determines the machine parameters given by BETA, T, RND, and
+* IEEE1.
+*
+* Arguments
+* =========
+*
+* BETA (output) INTEGER
+* The base of the machine.
+*
+* T (output) INTEGER
+* The number of ( BETA ) digits in the mantissa.
+*
+* RND (output) LOGICAL
+* Specifies whether proper rounding ( RND = .TRUE. ) or
+* chopping ( RND = .FALSE. ) occurs in addition. This may not
+* be a reliable guide to the way in which the machine performs
+* its arithmetic.
+*
+* IEEE1 (output) LOGICAL
+* Specifies whether rounding appears to be done in the IEEE
+* 'round to nearest' style.
+*
+* Further Details
+* ===============
+*
+* The routine is based on the routine ENVRON by Malcolm and
+* incorporates suggestions by Gentleman and Marovich. See
+*
+* Malcolm M. A. (1972) Algorithms to reveal properties of
+* floating-point arithmetic. Comms. of the ACM, 15, 949-951.
+*
+* Gentleman W. M. and Marovich S. B. (1974) More on algorithms
+* that reveal properties of floating point arithmetic units.
+* Comms. of the ACM, 17, 276-277.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL FIRST, LIEEE1, LRND
+ INTEGER LBETA, LT
+ REAL A, B, C, F, ONE, QTR, SAVEC, T1, T2
+* ..
+* .. External Functions ..
+ REAL SLAMC3
+ EXTERNAL SLAMC3
+* ..
+* .. Save statement ..
+ SAVE FIRST, LIEEE1, LBETA, LRND, LT
+* ..
+* .. Data statements ..
+ DATA FIRST / .TRUE. /
+* ..
+* .. Executable Statements ..
+*
+ IF( FIRST ) THEN
+ FIRST = .FALSE.
+ ONE = 1
+*
+* LBETA, LIEEE1, LT and LRND are the local values of BETA,
+* IEEE1, T and RND.
+*
+* Throughout this routine we use the function SLAMC3 to ensure
+* that relevant values are stored and not held in registers, or
+* are not affected by optimizers.
+*
+* Compute a = 2.0**m with the smallest positive integer m such
+* that
+*
+* fl( a + 1.0 ) = a.
+*
+ A = 1
+ C = 1
+*
+*+ WHILE( C.EQ.ONE )LOOP
+ 10 CONTINUE
+ IF( C.EQ.ONE ) THEN
+ A = 2*A
+ C = SLAMC3( A, ONE )
+ C = SLAMC3( C, -A )
+ GO TO 10
+ END IF
+*+ END WHILE
+*
+* Now compute b = 2.0**m with the smallest positive integer m
+* such that
+*
+* fl( a + b ) .gt. a.
+*
+ B = 1
+ C = SLAMC3( A, B )
+*
+*+ WHILE( C.EQ.A )LOOP
+ 20 CONTINUE
+ IF( C.EQ.A ) THEN
+ B = 2*B
+ C = SLAMC3( A, B )
+ GO TO 20
+ END IF
+*+ END WHILE
+*
+* Now compute the base. a and c are neighbouring floating point
+* numbers in the interval ( beta**t, beta**( t + 1 ) ) and so
+* their difference is beta. Adding 0.25 to c is to ensure that it
+* is truncated to beta and not ( beta - 1 ).
+*
+ QTR = ONE / 4
+ SAVEC = C
+ C = SLAMC3( C, -A )
+ LBETA = C + QTR
+*
+* Now determine whether rounding or chopping occurs, by adding a
+* bit less than beta/2 and a bit more than beta/2 to a.
+*
+ B = LBETA
+ F = SLAMC3( B / 2, -B / 100 )
+ C = SLAMC3( F, A )
+ IF( C.EQ.A ) THEN
+ LRND = .TRUE.
+ ELSE
+ LRND = .FALSE.
+ END IF
+ F = SLAMC3( B / 2, B / 100 )
+ C = SLAMC3( F, A )
+ IF( ( LRND ) .AND. ( C.EQ.A ) )
+ $ LRND = .FALSE.
+*
+* Try and decide whether rounding is done in the IEEE 'round to
+* nearest' style. B/2 is half a unit in the last place of the two
+* numbers A and SAVEC. Furthermore, A is even, i.e. has last bit
+* zero, and SAVEC is odd. Thus adding B/2 to A should not change
+* A, but adding B/2 to SAVEC should change SAVEC.
+*
+ T1 = SLAMC3( B / 2, A )
+ T2 = SLAMC3( B / 2, SAVEC )
+ LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
+*
+* Now find the mantissa, t. It should be the integer part of
+* log to the base beta of a, however it is safer to determine t
+* by powering. So we find t as the smallest positive integer for
+* which
+*
+* fl( beta**t + 1.0 ) = 1.0.
+*
+ LT = 0
+ A = 1
+ C = 1
+*
+*+ WHILE( C.EQ.ONE )LOOP
+ 30 CONTINUE
+ IF( C.EQ.ONE ) THEN
+ LT = LT + 1
+ A = A*LBETA
+ C = SLAMC3( A, ONE )
+ C = SLAMC3( C, -A )
+ GO TO 30
+ END IF
+*+ END WHILE
+*
+ END IF
+*
+ BETA = LBETA
+ T = LT
+ RND = LRND
+ IEEE1 = LIEEE1
+ RETURN
+*
+* End of SLAMC1
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE SLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ LOGICAL RND
+ INTEGER BETA, EMAX, EMIN, T
+ REAL EPS, RMAX, RMIN
+* ..
+*
+* Purpose
+* =======
+*
+* SLAMC2 determines the machine parameters specified in its argument
+* list.
+*
+* Arguments
+* =========
+*
+* BETA (output) INTEGER
+* The base of the machine.
+*
+* T (output) INTEGER
+* The number of ( BETA ) digits in the mantissa.
+*
+* RND (output) LOGICAL
+* Specifies whether proper rounding ( RND = .TRUE. ) or
+* chopping ( RND = .FALSE. ) occurs in addition. This may not
+* be a reliable guide to the way in which the machine performs
+* its arithmetic.
+*
+* EPS (output) REAL
+* The smallest positive number such that
+*
+* fl( 1.0 - EPS ) .LT. 1.0,
+*
+* where fl denotes the computed value.
+*
+* EMIN (output) INTEGER
+* The minimum exponent before (gradual) underflow occurs.
+*
+* RMIN (output) REAL
+* The smallest normalized number for the machine, given by
+* BASE**( EMIN - 1 ), where BASE is the floating point value
+* of BETA.
+*
+* EMAX (output) INTEGER
+* The maximum exponent before overflow occurs.
+*
+* RMAX (output) REAL
+* The largest positive number for the machine, given by
+* BASE**EMAX * ( 1 - EPS ), where BASE is the floating point
+* value of BETA.
+*
+* Further Details
+* ===============
+*
+* The computation of EPS is based on a routine PARANOIA by
+* W. Kahan of the University of California at Berkeley.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL FIRST, IEEE, IWARN, LIEEE1, LRND
+ INTEGER GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
+ $ NGNMIN, NGPMIN
+ REAL A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
+ $ SIXTH, SMALL, THIRD, TWO, ZERO
+* ..
+* .. External Functions ..
+ REAL SLAMC3
+ EXTERNAL SLAMC3
+* ..
+* .. External Subroutines ..
+ EXTERNAL SLAMC1, SLAMC4, SLAMC5
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Save statement ..
+ SAVE FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
+ $ LRMIN, LT
+* ..
+* .. Data statements ..
+ DATA FIRST / .TRUE. / , IWARN / .FALSE. /
+* ..
+* .. Executable Statements ..
+*
+ IF( FIRST ) THEN
+ FIRST = .FALSE.
+ ZERO = 0
+ ONE = 1
+ TWO = 2
+*
+* LBETA, LT, LRND, LEPS, LEMIN and LRMIN are the local values of
+* BETA, T, RND, EPS, EMIN and RMIN.
+*
+* Throughout this routine we use the function SLAMC3 to ensure
+* that relevant values are stored and not held in registers, or
+* are not affected by optimizers.
+*
+* SLAMC1 returns the parameters LBETA, LT, LRND and LIEEE1.
+*
+ CALL SLAMC1( LBETA, LT, LRND, LIEEE1 )
+*
+* Start to find EPS.
+*
+ B = LBETA
+ A = B**( -LT )
+ LEPS = A
+*
+* Try some tricks to see whether or not this is the correct EPS.
+*
+ B = TWO / 3
+ HALF = ONE / 2
+ SIXTH = SLAMC3( B, -HALF )
+ THIRD = SLAMC3( SIXTH, SIXTH )
+ B = SLAMC3( THIRD, -HALF )
+ B = SLAMC3( B, SIXTH )
+ B = ABS( B )
+ IF( B.LT.LEPS )
+ $ B = LEPS
+*
+ LEPS = 1
+*
+*+ WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
+ 10 CONTINUE
+ IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
+ LEPS = B
+ C = SLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
+ C = SLAMC3( HALF, -C )
+ B = SLAMC3( HALF, C )
+ C = SLAMC3( HALF, -B )
+ B = SLAMC3( HALF, C )
+ GO TO 10
+ END IF
+*+ END WHILE
+*
+ IF( A.LT.LEPS )
+ $ LEPS = A
+*
+* Computation of EPS complete.
+*
+* Now find EMIN. Let A = + or - 1, and + or - (1 + BASE**(-3)).
+* Keep dividing A by BETA until (gradual) underflow occurs. This
+* is detected when we cannot recover the previous A.
+*
+ RBASE = ONE / LBETA
+ SMALL = ONE
+ DO 20 I = 1, 3
+ SMALL = SLAMC3( SMALL*RBASE, ZERO )
+ 20 CONTINUE
+ A = SLAMC3( ONE, SMALL )
+ CALL SLAMC4( NGPMIN, ONE, LBETA )
+ CALL SLAMC4( NGNMIN, -ONE, LBETA )
+ CALL SLAMC4( GPMIN, A, LBETA )
+ CALL SLAMC4( GNMIN, -A, LBETA )
+ IEEE = .FALSE.
+*
+ IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
+ IF( NGPMIN.EQ.GPMIN ) THEN
+ LEMIN = NGPMIN
+* ( Non twos-complement machines, no gradual underflow;
+* e.g., VAX )
+ ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
+ LEMIN = NGPMIN - 1 + LT
+ IEEE = .TRUE.
+* ( Non twos-complement machines, with gradual underflow;
+* e.g., IEEE standard followers )
+ ELSE
+ LEMIN = MIN( NGPMIN, GPMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+*
+ ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
+ IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
+ LEMIN = MAX( NGPMIN, NGNMIN )
+* ( Twos-complement machines, no gradual underflow;
+* e.g., CYBER 205 )
+ ELSE
+ LEMIN = MIN( NGPMIN, NGNMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+*
+ ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
+ $ ( GPMIN.EQ.GNMIN ) ) THEN
+ IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
+ LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
+* ( Twos-complement machines with gradual underflow;
+* no known machine )
+ ELSE
+ LEMIN = MIN( NGPMIN, NGNMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+*
+ ELSE
+ LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
+* ( A guess; no known machine )
+ IWARN = .TRUE.
+ END IF
+***
+* Comment out this if block if EMIN is ok
+ IF( IWARN ) THEN
+ FIRST = .TRUE.
+ WRITE( 6, FMT = 9999 )LEMIN
+ END IF
+***
+*
+* Assume IEEE arithmetic if we found denormalised numbers above,
+* or if arithmetic seems to round in the IEEE style, determined
+* in routine SLAMC1. A true IEEE machine should have both things
+* true; however, faulty machines may have one or the other.
+*
+ IEEE = IEEE .OR. LIEEE1
+*
+* Compute RMIN by successive division by BETA. We could compute
+* RMIN as BASE**( EMIN - 1 ), but some machines underflow during
+* this computation.
+*
+ LRMIN = 1
+ DO 30 I = 1, 1 - LEMIN
+ LRMIN = SLAMC3( LRMIN*RBASE, ZERO )
+ 30 CONTINUE
+*
+* Finally, call SLAMC5 to compute EMAX and RMAX.
+*
+ CALL SLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
+ END IF
+*
+ BETA = LBETA
+ T = LT
+ RND = LRND
+ EPS = LEPS
+ EMIN = LEMIN
+ RMIN = LRMIN
+ EMAX = LEMAX
+ RMAX = LRMAX
+*
+ RETURN
+*
+ 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
+ $ ' EMIN = ', I8, /
+ $ ' If, after inspection, the value EMIN looks',
+ $ ' acceptable please comment out ',
+ $ / ' the IF block as marked within the code of routine',
+ $ ' SLAMC2,', / ' otherwise supply EMIN explicitly.', / )
+*
+* End of SLAMC2
+*
+ END
+*
+************************************************************************
+*
+ REAL FUNCTION SLAMC3( A, B )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ REAL A, B
+* ..
+*
+* Purpose
+* =======
+*
+* SLAMC3 is intended to force A and B to be stored prior to doing
+* the addition of A and B , for use in situations where optimizers
+* might hold one of these in a register.
+*
+* Arguments
+* =========
+*
+* A, B (input) REAL
+* The values A and B.
+*
+* =====================================================================
+*
+* .. Executable Statements ..
+*
+ SLAMC3 = A + B
+*
+ RETURN
+*
+* End of SLAMC3
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE SLAMC4( EMIN, START, BASE )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ INTEGER BASE, EMIN
+ REAL START
+* ..
+*
+* Purpose
+* =======
+*
+* SLAMC4 is a service routine for SLAMC2.
+*
+* Arguments
+* =========
+*
+* EMIN (output) EMIN
+* The minimum exponent before (gradual) underflow, computed by
+* setting A = START and dividing by BASE until the previous A
+* can not be recovered.
+*
+* START (input) REAL
+* The starting point for determining EMIN.
+*
+* BASE (input) INTEGER
+* The base of the machine.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I
+ REAL A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
+* ..
+* .. External Functions ..
+ REAL SLAMC3
+ EXTERNAL SLAMC3
+* ..
+* .. Executable Statements ..
+*
+ A = START
+ ONE = 1
+ RBASE = ONE / BASE
+ ZERO = 0
+ EMIN = 1
+ B1 = SLAMC3( A*RBASE, ZERO )
+ C1 = A
+ C2 = A
+ D1 = A
+ D2 = A
+*+ WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
+* $ ( D1.EQ.A ).AND.( D2.EQ.A ) )LOOP
+ 10 CONTINUE
+ IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
+ $ ( D2.EQ.A ) ) THEN
+ EMIN = EMIN - 1
+ A = B1
+ B1 = SLAMC3( A / BASE, ZERO )
+ C1 = SLAMC3( B1*BASE, ZERO )
+ D1 = ZERO
+ DO 20 I = 1, BASE
+ D1 = D1 + B1
+ 20 CONTINUE
+ B2 = SLAMC3( A*RBASE, ZERO )
+ C2 = SLAMC3( B2 / RBASE, ZERO )
+ D2 = ZERO
+ DO 30 I = 1, BASE
+ D2 = D2 + B2
+ 30 CONTINUE
+ GO TO 10
+ END IF
+*+ END WHILE
+*
+ RETURN
+*
+* End of SLAMC4
+*
+ END
+*
+************************************************************************
+*
+ SUBROUTINE SLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
+*
+* -- LAPACK auxiliary routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* October 31, 1992
+*
+* .. Scalar Arguments ..
+ LOGICAL IEEE
+ INTEGER BETA, EMAX, EMIN, P
+ REAL RMAX
+* ..
+*
+* Purpose
+* =======
+*
+* SLAMC5 attempts to compute RMAX, the largest machine floating-point
+* number, without overflow. It assumes that EMAX + abs(EMIN) sum
+* approximately to a power of 2. It will fail on machines where this
+* assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
+* EMAX = 28718). It will also fail if the value supplied for EMIN is
+* too large (i.e. too close to zero), probably with overflow.
+*
+* Arguments
+* =========
+*
+* BETA (input) INTEGER
+* The base of floating-point arithmetic.
+*
+* P (input) INTEGER
+* The number of base BETA digits in the mantissa of a
+* floating-point value.
+*
+* EMIN (input) INTEGER
+* The minimum exponent before (gradual) underflow.
+*
+* IEEE (input) LOGICAL
+* A logical flag specifying whether or not the arithmetic
+* system is thought to comply with the IEEE standard.
+*
+* EMAX (output) INTEGER
+* The largest exponent before overflow
+*
+* RMAX (output) REAL
+* The largest machine floating-point number.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ REAL ZERO, ONE
+ PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 )
+* ..
+* .. Local Scalars ..
+ INTEGER EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
+ REAL OLDY, RECBAS, Y, Z
+* ..
+* .. External Functions ..
+ REAL SLAMC3
+ EXTERNAL SLAMC3
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MOD
+* ..
+* .. Executable Statements ..
+*
+* First compute LEXP and UEXP, two powers of 2 that bound
+* abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
+* approximately to the bound that is closest to abs(EMIN).
+* (EMAX is the exponent of the required number RMAX).
+*
+ LEXP = 1
+ EXBITS = 1
+ 10 CONTINUE
+ TRY = LEXP*2
+ IF( TRY.LE.( -EMIN ) ) THEN
+ LEXP = TRY
+ EXBITS = EXBITS + 1
+ GO TO 10
+ END IF
+ IF( LEXP.EQ.-EMIN ) THEN
+ UEXP = LEXP
+ ELSE
+ UEXP = TRY
+ EXBITS = EXBITS + 1
+ END IF
+*
+* Now -LEXP is less than or equal to EMIN, and -UEXP is greater
+* than or equal to EMIN. EXBITS is the number of bits needed to
+* store the exponent.
+*
+ IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
+ EXPSUM = 2*LEXP
+ ELSE
+ EXPSUM = 2*UEXP
+ END IF
+*
+* EXPSUM is the exponent range, approximately equal to
+* EMAX - EMIN + 1 .
+*
+ EMAX = EXPSUM + EMIN - 1
+ NBITS = 1 + EXBITS + P
+*
+* NBITS is the total number of bits needed to store a
+* floating-point number.
+*
+ IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
+*
+* Either there are an odd number of bits used to store a
+* floating-point number, which is unlikely, or some bits are
+* not used in the representation of numbers, which is possible,
+* (e.g. Cray machines) or the mantissa has an implicit bit,
+* (e.g. IEEE machines, Dec Vax machines), which is perhaps the
+* most likely. We have to assume the last alternative.
+* If this is true, then we need to reduce EMAX by one because
+* there must be some way of representing zero in an implicit-bit
+* system. On machines like Cray, we are reducing EMAX by one
+* unnecessarily.
+*
+ EMAX = EMAX - 1
+ END IF
+*
+ IF( IEEE ) THEN
+*
+* Assume we are on an IEEE machine which reserves one exponent
+* for infinity and NaN.
+*
+ EMAX = EMAX - 1
+ END IF
+*
+* Now create RMAX, the largest machine number, which should
+* be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
+*
+* First compute 1.0 - BETA**(-P), being careful that the
+* result is less than 1.0 .
+*
+ RECBAS = ONE / BETA
+ Z = BETA - ONE
+ Y = ZERO
+ DO 20 I = 1, P
+ Z = Z*RECBAS
+ IF( Y.LT.ONE )
+ $ OLDY = Y
+ Y = SLAMC3( Y, Z )
+ 20 CONTINUE
+ IF( Y.GE.ONE )
+ $ Y = OLDY
+*
+* Now multiply by BETA**EMAX to get RMAX.
+*
+ DO 30 I = 1, EMAX
+ Y = SLAMC3( Y*BETA, ZERO )
+ 30 CONTINUE
+*
+ RMAX = Y
+ RETURN
+*
+* End of SLAMC5
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/xerbla.f b/2.3-1/src/fortran/lapack/xerbla.f
new file mode 100644
index 00000000..c8c9231b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/xerbla.f
@@ -0,0 +1,45 @@
+ SUBROUTINE XERBLA( SRNAME, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER*6 SRNAME
+ INTEGER INFO
+* ..
+*
+* Purpose
+* =======
+*
+* XERBLA is an error handler for the LAPACK routines.
+* It is called by an LAPACK routine if an input parameter has an
+* invalid value. A message is printed and execution stops.
+*
+* Installers may consider modifying the STOP statement in order to
+* call system-specific exception-handling facilities.
+*
+* Arguments
+* =========
+*
+* SRNAME (input) CHARACTER*6
+* The name of the routine which called XERBLA.
+*
+* INFO (input) INTEGER
+* The position of the invalid parameter in the parameter list
+* of the calling routine.
+*
+* =====================================================================
+*
+* .. Executable Statements ..
+*
+ WRITE( *, FMT = 9999 )SRNAME, INFO
+*
+ STOP
+*
+ 9999 FORMAT( ' ** On entry to ', A6, ' parameter number ', I2, ' had ',
+ $ 'an illegal value' )
+*
+* End of XERBLA
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zbdsqr.f b/2.3-1/src/fortran/lapack/zbdsqr.f
new file mode 100644
index 00000000..f9086be5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zbdsqr.f
@@ -0,0 +1,742 @@
+ SUBROUTINE ZBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,
+ $ LDU, C, LDC, RWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * ), RWORK( * )
+ COMPLEX*16 C( LDC, * ), U( LDU, * ), VT( LDVT, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZBDSQR computes the singular values and, optionally, the right and/or
+* left singular vectors from the singular value decomposition (SVD) of
+* a real N-by-N (upper or lower) bidiagonal matrix B using the implicit
+* zero-shift QR algorithm. The SVD of B has the form
+*
+* B = Q * S * P**H
+*
+* where S is the diagonal matrix of singular values, Q is an orthogonal
+* matrix of left singular vectors, and P is an orthogonal matrix of
+* right singular vectors. If left singular vectors are requested, this
+* subroutine actually returns U*Q instead of Q, and, if right singular
+* vectors are requested, this subroutine returns P**H*VT instead of
+* P**H, for given complex input matrices U and VT. When U and VT are
+* the unitary matrices that reduce a general matrix A to bidiagonal
+* form: A = U*B*VT, as computed by ZGEBRD, then
+*
+* A = (U*Q) * S * (P**H*VT)
+*
+* is the SVD of A. Optionally, the subroutine may also compute Q**H*C
+* for a given complex input matrix C.
+*
+* See "Computing Small Singular Values of Bidiagonal Matrices With
+* Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
+* LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11,
+* no. 5, pp. 873-912, Sept 1990) and
+* "Accurate singular values and differential qd algorithms," by
+* B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics
+* Department, University of California at Berkeley, July 1992
+* for a detailed description of the algorithm.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': B is upper bidiagonal;
+* = 'L': B is lower bidiagonal.
+*
+* N (input) INTEGER
+* The order of the matrix B. N >= 0.
+*
+* NCVT (input) INTEGER
+* The number of columns of the matrix VT. NCVT >= 0.
+*
+* NRU (input) INTEGER
+* The number of rows of the matrix U. NRU >= 0.
+*
+* NCC (input) INTEGER
+* The number of columns of the matrix C. NCC >= 0.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the n diagonal elements of the bidiagonal matrix B.
+* On exit, if INFO=0, the singular values of B in decreasing
+* order.
+*
+* E (input/output) DOUBLE PRECISION array, dimension (N-1)
+* On entry, the N-1 offdiagonal elements of the bidiagonal
+* matrix B.
+* On exit, if INFO = 0, E is destroyed; if INFO > 0, D and E
+* will contain the diagonal and superdiagonal elements of a
+* bidiagonal matrix orthogonally equivalent to the one given
+* as input.
+*
+* VT (input/output) COMPLEX*16 array, dimension (LDVT, NCVT)
+* On entry, an N-by-NCVT matrix VT.
+* On exit, VT is overwritten by P**H * VT.
+* Not referenced if NCVT = 0.
+*
+* LDVT (input) INTEGER
+* The leading dimension of the array VT.
+* LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if NCVT = 0.
+*
+* U (input/output) COMPLEX*16 array, dimension (LDU, N)
+* On entry, an NRU-by-N matrix U.
+* On exit, U is overwritten by U * Q.
+* Not referenced if NRU = 0.
+*
+* LDU (input) INTEGER
+* The leading dimension of the array U. LDU >= max(1,NRU).
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC, NCC)
+* On entry, an N-by-NCC matrix C.
+* On exit, C is overwritten by Q**H * C.
+* Not referenced if NCC = 0.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C.
+* LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC = 0.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+* if NCVT = NRU = NCC = 0, (max(1, 4*N-4)) otherwise
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: If INFO = -i, the i-th argument had an illegal value
+* > 0: the algorithm did not converge; D and E contain the
+* elements of a bidiagonal matrix which is orthogonally
+* similar to the input matrix B; if INFO = i, i
+* elements of E have not converged to zero.
+*
+* Internal Parameters
+* ===================
+*
+* TOLMUL DOUBLE PRECISION, default = max(10,min(100,EPS**(-1/8)))
+* TOLMUL controls the convergence criterion of the QR loop.
+* If it is positive, TOLMUL*EPS is the desired relative
+* precision in the computed singular values.
+* If it is negative, abs(TOLMUL*EPS*sigma_max) is the
+* desired absolute accuracy in the computed singular
+* values (corresponds to relative accuracy
+* abs(TOLMUL*EPS) in the largest singular value.
+* abs(TOLMUL) should be between 1 and 1/EPS, and preferably
+* between 10 (for fast convergence) and .1/EPS
+* (for there to be some accuracy in the results).
+* Default is to lose at either one eighth or 2 of the
+* available decimal digits in each computed singular value
+* (whichever is smaller).
+*
+* MAXITR INTEGER, default = 6
+* MAXITR controls the maximum number of passes of the
+* algorithm through its inner loop. The algorithms stops
+* (and so fails to converge) if the number of passes
+* through the inner loop exceeds MAXITR*N**2.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D0 )
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D0 )
+ DOUBLE PRECISION NEGONE
+ PARAMETER ( NEGONE = -1.0D0 )
+ DOUBLE PRECISION HNDRTH
+ PARAMETER ( HNDRTH = 0.01D0 )
+ DOUBLE PRECISION TEN
+ PARAMETER ( TEN = 10.0D0 )
+ DOUBLE PRECISION HNDRD
+ PARAMETER ( HNDRD = 100.0D0 )
+ DOUBLE PRECISION MEIGTH
+ PARAMETER ( MEIGTH = -0.125D0 )
+ INTEGER MAXITR
+ PARAMETER ( MAXITR = 6 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LOWER, ROTATE
+ INTEGER I, IDIR, ISUB, ITER, J, LL, LLL, M, MAXIT, NM1,
+ $ NM12, NM13, OLDLL, OLDM
+ DOUBLE PRECISION ABSE, ABSS, COSL, COSR, CS, EPS, F, G, H, MU,
+ $ OLDCS, OLDSN, R, SHIFT, SIGMN, SIGMX, SINL,
+ $ SINR, SLL, SMAX, SMIN, SMINL, SMINOA,
+ $ SN, THRESH, TOL, TOLMUL, UNFL
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLARTG, DLAS2, DLASQ1, DLASV2, XERBLA, ZDROT,
+ $ ZDSCAL, ZLASR, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, MIN, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ LOWER = LSAME( UPLO, 'L' )
+ IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LOWER ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NCVT.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( NRU.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( NCC.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( ( NCVT.EQ.0 .AND. LDVT.LT.1 ) .OR.
+ $ ( NCVT.GT.0 .AND. LDVT.LT.MAX( 1, N ) ) ) THEN
+ INFO = -9
+ ELSE IF( LDU.LT.MAX( 1, NRU ) ) THEN
+ INFO = -11
+ ELSE IF( ( NCC.EQ.0 .AND. LDC.LT.1 ) .OR.
+ $ ( NCC.GT.0 .AND. LDC.LT.MAX( 1, N ) ) ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZBDSQR', -INFO )
+ RETURN
+ END IF
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( N.EQ.1 )
+ $ GO TO 160
+*
+* ROTATE is true if any singular vectors desired, false otherwise
+*
+ ROTATE = ( NCVT.GT.0 ) .OR. ( NRU.GT.0 ) .OR. ( NCC.GT.0 )
+*
+* If no singular vectors desired, use qd algorithm
+*
+ IF( .NOT.ROTATE ) THEN
+ CALL DLASQ1( N, D, E, RWORK, INFO )
+ RETURN
+ END IF
+*
+ NM1 = N - 1
+ NM12 = NM1 + NM1
+ NM13 = NM12 + NM1
+ IDIR = 0
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'Epsilon' )
+ UNFL = DLAMCH( 'Safe minimum' )
+*
+* If matrix lower bidiagonal, rotate to be upper bidiagonal
+* by applying Givens rotations on the left
+*
+ IF( LOWER ) THEN
+ DO 10 I = 1, N - 1
+ CALL DLARTG( D( I ), E( I ), CS, SN, R )
+ D( I ) = R
+ E( I ) = SN*D( I+1 )
+ D( I+1 ) = CS*D( I+1 )
+ RWORK( I ) = CS
+ RWORK( NM1+I ) = SN
+ 10 CONTINUE
+*
+* Update singular vectors if desired
+*
+ IF( NRU.GT.0 )
+ $ CALL ZLASR( 'R', 'V', 'F', NRU, N, RWORK( 1 ), RWORK( N ),
+ $ U, LDU )
+ IF( NCC.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'F', N, NCC, RWORK( 1 ), RWORK( N ),
+ $ C, LDC )
+ END IF
+*
+* Compute singular values to relative accuracy TOL
+* (By setting TOL to be negative, algorithm will compute
+* singular values to absolute accuracy ABS(TOL)*norm(input matrix))
+*
+ TOLMUL = MAX( TEN, MIN( HNDRD, EPS**MEIGTH ) )
+ TOL = TOLMUL*EPS
+*
+* Compute approximate maximum, minimum singular values
+*
+ SMAX = ZERO
+ DO 20 I = 1, N
+ SMAX = MAX( SMAX, ABS( D( I ) ) )
+ 20 CONTINUE
+ DO 30 I = 1, N - 1
+ SMAX = MAX( SMAX, ABS( E( I ) ) )
+ 30 CONTINUE
+ SMINL = ZERO
+ IF( TOL.GE.ZERO ) THEN
+*
+* Relative accuracy desired
+*
+ SMINOA = ABS( D( 1 ) )
+ IF( SMINOA.EQ.ZERO )
+ $ GO TO 50
+ MU = SMINOA
+ DO 40 I = 2, N
+ MU = ABS( D( I ) )*( MU / ( MU+ABS( E( I-1 ) ) ) )
+ SMINOA = MIN( SMINOA, MU )
+ IF( SMINOA.EQ.ZERO )
+ $ GO TO 50
+ 40 CONTINUE
+ 50 CONTINUE
+ SMINOA = SMINOA / SQRT( DBLE( N ) )
+ THRESH = MAX( TOL*SMINOA, MAXITR*N*N*UNFL )
+ ELSE
+*
+* Absolute accuracy desired
+*
+ THRESH = MAX( ABS( TOL )*SMAX, MAXITR*N*N*UNFL )
+ END IF
+*
+* Prepare for main iteration loop for the singular values
+* (MAXIT is the maximum number of passes through the inner
+* loop permitted before nonconvergence signalled.)
+*
+ MAXIT = MAXITR*N*N
+ ITER = 0
+ OLDLL = -1
+ OLDM = -1
+*
+* M points to last element of unconverged part of matrix
+*
+ M = N
+*
+* Begin main iteration loop
+*
+ 60 CONTINUE
+*
+* Check for convergence or exceeding iteration count
+*
+ IF( M.LE.1 )
+ $ GO TO 160
+ IF( ITER.GT.MAXIT )
+ $ GO TO 200
+*
+* Find diagonal block of matrix to work on
+*
+ IF( TOL.LT.ZERO .AND. ABS( D( M ) ).LE.THRESH )
+ $ D( M ) = ZERO
+ SMAX = ABS( D( M ) )
+ SMIN = SMAX
+ DO 70 LLL = 1, M - 1
+ LL = M - LLL
+ ABSS = ABS( D( LL ) )
+ ABSE = ABS( E( LL ) )
+ IF( TOL.LT.ZERO .AND. ABSS.LE.THRESH )
+ $ D( LL ) = ZERO
+ IF( ABSE.LE.THRESH )
+ $ GO TO 80
+ SMIN = MIN( SMIN, ABSS )
+ SMAX = MAX( SMAX, ABSS, ABSE )
+ 70 CONTINUE
+ LL = 0
+ GO TO 90
+ 80 CONTINUE
+ E( LL ) = ZERO
+*
+* Matrix splits since E(LL) = 0
+*
+ IF( LL.EQ.M-1 ) THEN
+*
+* Convergence of bottom singular value, return to top of loop
+*
+ M = M - 1
+ GO TO 60
+ END IF
+ 90 CONTINUE
+ LL = LL + 1
+*
+* E(LL) through E(M-1) are nonzero, E(LL-1) is zero
+*
+ IF( LL.EQ.M-1 ) THEN
+*
+* 2 by 2 block, handle separately
+*
+ CALL DLASV2( D( M-1 ), E( M-1 ), D( M ), SIGMN, SIGMX, SINR,
+ $ COSR, SINL, COSL )
+ D( M-1 ) = SIGMX
+ E( M-1 ) = ZERO
+ D( M ) = SIGMN
+*
+* Compute singular vectors, if desired
+*
+ IF( NCVT.GT.0 )
+ $ CALL ZDROT( NCVT, VT( M-1, 1 ), LDVT, VT( M, 1 ), LDVT,
+ $ COSR, SINR )
+ IF( NRU.GT.0 )
+ $ CALL ZDROT( NRU, U( 1, M-1 ), 1, U( 1, M ), 1, COSL, SINL )
+ IF( NCC.GT.0 )
+ $ CALL ZDROT( NCC, C( M-1, 1 ), LDC, C( M, 1 ), LDC, COSL,
+ $ SINL )
+ M = M - 2
+ GO TO 60
+ END IF
+*
+* If working on new submatrix, choose shift direction
+* (from larger end diagonal element towards smaller)
+*
+ IF( LL.GT.OLDM .OR. M.LT.OLDLL ) THEN
+ IF( ABS( D( LL ) ).GE.ABS( D( M ) ) ) THEN
+*
+* Chase bulge from top (big end) to bottom (small end)
+*
+ IDIR = 1
+ ELSE
+*
+* Chase bulge from bottom (big end) to top (small end)
+*
+ IDIR = 2
+ END IF
+ END IF
+*
+* Apply convergence tests
+*
+ IF( IDIR.EQ.1 ) THEN
+*
+* Run convergence test in forward direction
+* First apply standard test to bottom of matrix
+*
+ IF( ABS( E( M-1 ) ).LE.ABS( TOL )*ABS( D( M ) ) .OR.
+ $ ( TOL.LT.ZERO .AND. ABS( E( M-1 ) ).LE.THRESH ) ) THEN
+ E( M-1 ) = ZERO
+ GO TO 60
+ END IF
+*
+ IF( TOL.GE.ZERO ) THEN
+*
+* If relative accuracy desired,
+* apply convergence criterion forward
+*
+ MU = ABS( D( LL ) )
+ SMINL = MU
+ DO 100 LLL = LL, M - 1
+ IF( ABS( E( LLL ) ).LE.TOL*MU ) THEN
+ E( LLL ) = ZERO
+ GO TO 60
+ END IF
+ MU = ABS( D( LLL+1 ) )*( MU / ( MU+ABS( E( LLL ) ) ) )
+ SMINL = MIN( SMINL, MU )
+ 100 CONTINUE
+ END IF
+*
+ ELSE
+*
+* Run convergence test in backward direction
+* First apply standard test to top of matrix
+*
+ IF( ABS( E( LL ) ).LE.ABS( TOL )*ABS( D( LL ) ) .OR.
+ $ ( TOL.LT.ZERO .AND. ABS( E( LL ) ).LE.THRESH ) ) THEN
+ E( LL ) = ZERO
+ GO TO 60
+ END IF
+*
+ IF( TOL.GE.ZERO ) THEN
+*
+* If relative accuracy desired,
+* apply convergence criterion backward
+*
+ MU = ABS( D( M ) )
+ SMINL = MU
+ DO 110 LLL = M - 1, LL, -1
+ IF( ABS( E( LLL ) ).LE.TOL*MU ) THEN
+ E( LLL ) = ZERO
+ GO TO 60
+ END IF
+ MU = ABS( D( LLL ) )*( MU / ( MU+ABS( E( LLL ) ) ) )
+ SMINL = MIN( SMINL, MU )
+ 110 CONTINUE
+ END IF
+ END IF
+ OLDLL = LL
+ OLDM = M
+*
+* Compute shift. First, test if shifting would ruin relative
+* accuracy, and if so set the shift to zero.
+*
+ IF( TOL.GE.ZERO .AND. N*TOL*( SMINL / SMAX ).LE.
+ $ MAX( EPS, HNDRTH*TOL ) ) THEN
+*
+* Use a zero shift to avoid loss of relative accuracy
+*
+ SHIFT = ZERO
+ ELSE
+*
+* Compute the shift from 2-by-2 block at end of matrix
+*
+ IF( IDIR.EQ.1 ) THEN
+ SLL = ABS( D( LL ) )
+ CALL DLAS2( D( M-1 ), E( M-1 ), D( M ), SHIFT, R )
+ ELSE
+ SLL = ABS( D( M ) )
+ CALL DLAS2( D( LL ), E( LL ), D( LL+1 ), SHIFT, R )
+ END IF
+*
+* Test if shift negligible, and if so set to zero
+*
+ IF( SLL.GT.ZERO ) THEN
+ IF( ( SHIFT / SLL )**2.LT.EPS )
+ $ SHIFT = ZERO
+ END IF
+ END IF
+*
+* Increment iteration count
+*
+ ITER = ITER + M - LL
+*
+* If SHIFT = 0, do simplified QR iteration
+*
+ IF( SHIFT.EQ.ZERO ) THEN
+ IF( IDIR.EQ.1 ) THEN
+*
+* Chase bulge from top to bottom
+* Save cosines and sines for later singular vector updates
+*
+ CS = ONE
+ OLDCS = ONE
+ DO 120 I = LL, M - 1
+ CALL DLARTG( D( I )*CS, E( I ), CS, SN, R )
+ IF( I.GT.LL )
+ $ E( I-1 ) = OLDSN*R
+ CALL DLARTG( OLDCS*R, D( I+1 )*SN, OLDCS, OLDSN, D( I ) )
+ RWORK( I-LL+1 ) = CS
+ RWORK( I-LL+1+NM1 ) = SN
+ RWORK( I-LL+1+NM12 ) = OLDCS
+ RWORK( I-LL+1+NM13 ) = OLDSN
+ 120 CONTINUE
+ H = D( M )*CS
+ D( M ) = H*OLDCS
+ E( M-1 ) = H*OLDSN
+*
+* Update singular vectors
+*
+ IF( NCVT.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'F', M-LL+1, NCVT, RWORK( 1 ),
+ $ RWORK( N ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL ZLASR( 'R', 'V', 'F', NRU, M-LL+1, RWORK( NM12+1 ),
+ $ RWORK( NM13+1 ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'F', M-LL+1, NCC, RWORK( NM12+1 ),
+ $ RWORK( NM13+1 ), C( LL, 1 ), LDC )
+*
+* Test convergence
+*
+ IF( ABS( E( M-1 ) ).LE.THRESH )
+ $ E( M-1 ) = ZERO
+*
+ ELSE
+*
+* Chase bulge from bottom to top
+* Save cosines and sines for later singular vector updates
+*
+ CS = ONE
+ OLDCS = ONE
+ DO 130 I = M, LL + 1, -1
+ CALL DLARTG( D( I )*CS, E( I-1 ), CS, SN, R )
+ IF( I.LT.M )
+ $ E( I ) = OLDSN*R
+ CALL DLARTG( OLDCS*R, D( I-1 )*SN, OLDCS, OLDSN, D( I ) )
+ RWORK( I-LL ) = CS
+ RWORK( I-LL+NM1 ) = -SN
+ RWORK( I-LL+NM12 ) = OLDCS
+ RWORK( I-LL+NM13 ) = -OLDSN
+ 130 CONTINUE
+ H = D( LL )*CS
+ D( LL ) = H*OLDCS
+ E( LL ) = H*OLDSN
+*
+* Update singular vectors
+*
+ IF( NCVT.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'B', M-LL+1, NCVT, RWORK( NM12+1 ),
+ $ RWORK( NM13+1 ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL ZLASR( 'R', 'V', 'B', NRU, M-LL+1, RWORK( 1 ),
+ $ RWORK( N ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'B', M-LL+1, NCC, RWORK( 1 ),
+ $ RWORK( N ), C( LL, 1 ), LDC )
+*
+* Test convergence
+*
+ IF( ABS( E( LL ) ).LE.THRESH )
+ $ E( LL ) = ZERO
+ END IF
+ ELSE
+*
+* Use nonzero shift
+*
+ IF( IDIR.EQ.1 ) THEN
+*
+* Chase bulge from top to bottom
+* Save cosines and sines for later singular vector updates
+*
+ F = ( ABS( D( LL ) )-SHIFT )*
+ $ ( SIGN( ONE, D( LL ) )+SHIFT / D( LL ) )
+ G = E( LL )
+ DO 140 I = LL, M - 1
+ CALL DLARTG( F, G, COSR, SINR, R )
+ IF( I.GT.LL )
+ $ E( I-1 ) = R
+ F = COSR*D( I ) + SINR*E( I )
+ E( I ) = COSR*E( I ) - SINR*D( I )
+ G = SINR*D( I+1 )
+ D( I+1 ) = COSR*D( I+1 )
+ CALL DLARTG( F, G, COSL, SINL, R )
+ D( I ) = R
+ F = COSL*E( I ) + SINL*D( I+1 )
+ D( I+1 ) = COSL*D( I+1 ) - SINL*E( I )
+ IF( I.LT.M-1 ) THEN
+ G = SINL*E( I+1 )
+ E( I+1 ) = COSL*E( I+1 )
+ END IF
+ RWORK( I-LL+1 ) = COSR
+ RWORK( I-LL+1+NM1 ) = SINR
+ RWORK( I-LL+1+NM12 ) = COSL
+ RWORK( I-LL+1+NM13 ) = SINL
+ 140 CONTINUE
+ E( M-1 ) = F
+*
+* Update singular vectors
+*
+ IF( NCVT.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'F', M-LL+1, NCVT, RWORK( 1 ),
+ $ RWORK( N ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL ZLASR( 'R', 'V', 'F', NRU, M-LL+1, RWORK( NM12+1 ),
+ $ RWORK( NM13+1 ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'F', M-LL+1, NCC, RWORK( NM12+1 ),
+ $ RWORK( NM13+1 ), C( LL, 1 ), LDC )
+*
+* Test convergence
+*
+ IF( ABS( E( M-1 ) ).LE.THRESH )
+ $ E( M-1 ) = ZERO
+*
+ ELSE
+*
+* Chase bulge from bottom to top
+* Save cosines and sines for later singular vector updates
+*
+ F = ( ABS( D( M ) )-SHIFT )*( SIGN( ONE, D( M ) )+SHIFT /
+ $ D( M ) )
+ G = E( M-1 )
+ DO 150 I = M, LL + 1, -1
+ CALL DLARTG( F, G, COSR, SINR, R )
+ IF( I.LT.M )
+ $ E( I ) = R
+ F = COSR*D( I ) + SINR*E( I-1 )
+ E( I-1 ) = COSR*E( I-1 ) - SINR*D( I )
+ G = SINR*D( I-1 )
+ D( I-1 ) = COSR*D( I-1 )
+ CALL DLARTG( F, G, COSL, SINL, R )
+ D( I ) = R
+ F = COSL*E( I-1 ) + SINL*D( I-1 )
+ D( I-1 ) = COSL*D( I-1 ) - SINL*E( I-1 )
+ IF( I.GT.LL+1 ) THEN
+ G = SINL*E( I-2 )
+ E( I-2 ) = COSL*E( I-2 )
+ END IF
+ RWORK( I-LL ) = COSR
+ RWORK( I-LL+NM1 ) = -SINR
+ RWORK( I-LL+NM12 ) = COSL
+ RWORK( I-LL+NM13 ) = -SINL
+ 150 CONTINUE
+ E( LL ) = F
+*
+* Test convergence
+*
+ IF( ABS( E( LL ) ).LE.THRESH )
+ $ E( LL ) = ZERO
+*
+* Update singular vectors if desired
+*
+ IF( NCVT.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'B', M-LL+1, NCVT, RWORK( NM12+1 ),
+ $ RWORK( NM13+1 ), VT( LL, 1 ), LDVT )
+ IF( NRU.GT.0 )
+ $ CALL ZLASR( 'R', 'V', 'B', NRU, M-LL+1, RWORK( 1 ),
+ $ RWORK( N ), U( 1, LL ), LDU )
+ IF( NCC.GT.0 )
+ $ CALL ZLASR( 'L', 'V', 'B', M-LL+1, NCC, RWORK( 1 ),
+ $ RWORK( N ), C( LL, 1 ), LDC )
+ END IF
+ END IF
+*
+* QR iteration finished, go back and check convergence
+*
+ GO TO 60
+*
+* All singular values converged, so make them positive
+*
+ 160 CONTINUE
+ DO 170 I = 1, N
+ IF( D( I ).LT.ZERO ) THEN
+ D( I ) = -D( I )
+*
+* Change sign of singular vectors, if desired
+*
+ IF( NCVT.GT.0 )
+ $ CALL ZDSCAL( NCVT, NEGONE, VT( I, 1 ), LDVT )
+ END IF
+ 170 CONTINUE
+*
+* Sort the singular values into decreasing order (insertion sort on
+* singular values, but only one transposition per singular vector)
+*
+ DO 190 I = 1, N - 1
+*
+* Scan for smallest D(I)
+*
+ ISUB = 1
+ SMIN = D( 1 )
+ DO 180 J = 2, N + 1 - I
+ IF( D( J ).LE.SMIN ) THEN
+ ISUB = J
+ SMIN = D( J )
+ END IF
+ 180 CONTINUE
+ IF( ISUB.NE.N+1-I ) THEN
+*
+* Swap singular values and vectors
+*
+ D( ISUB ) = D( N+1-I )
+ D( N+1-I ) = SMIN
+ IF( NCVT.GT.0 )
+ $ CALL ZSWAP( NCVT, VT( ISUB, 1 ), LDVT, VT( N+1-I, 1 ),
+ $ LDVT )
+ IF( NRU.GT.0 )
+ $ CALL ZSWAP( NRU, U( 1, ISUB ), 1, U( 1, N+1-I ), 1 )
+ IF( NCC.GT.0 )
+ $ CALL ZSWAP( NCC, C( ISUB, 1 ), LDC, C( N+1-I, 1 ), LDC )
+ END IF
+ 190 CONTINUE
+ GO TO 220
+*
+* Maximum number of iterations exceeded, failure to converge
+*
+ 200 CONTINUE
+ INFO = 0
+ DO 210 I = 1, N - 1
+ IF( E( I ).NE.ZERO )
+ $ INFO = INFO + 1
+ 210 CONTINUE
+ 220 CONTINUE
+ RETURN
+*
+* End of ZBDSQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zdrot.f b/2.3-1/src/fortran/lapack/zdrot.f
new file mode 100644
index 00000000..3b946e99
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zdrot.f
@@ -0,0 +1,96 @@
+ SUBROUTINE ZDROT( N, CX, INCX, CY, INCY, C, S )
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, INCY, N
+ DOUBLE PRECISION C, S
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 CX( * ), CY( * )
+* ..
+*
+* Purpose
+* =======
+*
+* Applies a plane rotation, where the cos and sin (c and s) are real
+* and the vectors cx and cy are complex.
+* jack dongarra, linpack, 3/11/78.
+*
+* Arguments
+* ==========
+*
+* N (input) INTEGER
+* On entry, N specifies the order of the vectors cx and cy.
+* N must be at least zero.
+* Unchanged on exit.
+*
+* CX (input) COMPLEX*16 array, dimension at least
+* ( 1 + ( N - 1 )*abs( INCX ) ).
+* Before entry, the incremented array CX must contain the n
+* element vector cx. On exit, CX is overwritten by the updated
+* vector cx.
+*
+* INCX (input) INTEGER
+* On entry, INCX specifies the increment for the elements of
+* CX. INCX must not be zero.
+* Unchanged on exit.
+*
+* CY (input) COMPLEX*16 array, dimension at least
+* ( 1 + ( N - 1 )*abs( INCY ) ).
+* Before entry, the incremented array CY must contain the n
+* element vector cy. On exit, CY is overwritten by the updated
+* vector cy.
+*
+* INCY (input) INTEGER
+* On entry, INCY specifies the increment for the elements of
+* CY. INCY must not be zero.
+* Unchanged on exit.
+*
+* C (input) DOUBLE PRECISION
+* On entry, C specifies the cosine, cos.
+* Unchanged on exit.
+*
+* S (input) DOUBLE PRECISION
+* On entry, S specifies the sine, sin.
+* Unchanged on exit.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, IX, IY
+ COMPLEX*16 CTEMP
+* ..
+* .. Executable Statements ..
+*
+ IF( N.LE.0 )
+ $ RETURN
+ IF( INCX.EQ.1 .AND. INCY.EQ.1 )
+ $ GO TO 20
+*
+* code for unequal increments or equal increments not equal
+* to 1
+*
+ IX = 1
+ IY = 1
+ IF( INCX.LT.0 )
+ $ IX = ( -N+1 )*INCX + 1
+ IF( INCY.LT.0 )
+ $ IY = ( -N+1 )*INCY + 1
+ DO 10 I = 1, N
+ CTEMP = C*CX( IX ) + S*CY( IY )
+ CY( IY ) = C*CY( IY ) - S*CX( IX )
+ CX( IX ) = CTEMP
+ IX = IX + INCX
+ IY = IY + INCY
+ 10 CONTINUE
+ RETURN
+*
+* code for both increments equal to 1
+*
+ 20 CONTINUE
+ DO 30 I = 1, N
+ CTEMP = C*CX( I ) + S*CY( I )
+ CY( I ) = C*CY( I ) - S*CX( I )
+ CX( I ) = CTEMP
+ 30 CONTINUE
+ RETURN
+ END
diff --git a/2.3-1/src/fortran/lapack/zdrscl.f b/2.3-1/src/fortran/lapack/zdrscl.f
new file mode 100644
index 00000000..11686d0b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zdrscl.f
@@ -0,0 +1,114 @@
+ SUBROUTINE ZDRSCL( N, SA, SX, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ DOUBLE PRECISION SA
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 SX( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZDRSCL multiplies an n-element complex vector x by the real scalar
+* 1/a. This is done without overflow or underflow as long as
+* the final result x/a does not overflow or underflow.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of components of the vector x.
+*
+* SA (input) DOUBLE PRECISION
+* The scalar a which is used to divide each component of x.
+* SA must be >= 0, or the subroutine will divide by zero.
+*
+* SX (input/output) COMPLEX*16 array, dimension
+* (1+(N-1)*abs(INCX))
+* The n-element vector x.
+*
+* INCX (input) INTEGER
+* The increment between successive values of the vector SX.
+* > 0: SX(1) = X(1) and SX(1+(i-1)*INCX) = x(i), 1< i<= n
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL DONE
+ DOUBLE PRECISION BIGNUM, CDEN, CDEN1, CNUM, CNUM1, MUL, SMLNUM
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, ZDSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Initialize the denominator to SA and the numerator to 1.
+*
+ CDEN = SA
+ CNUM = ONE
+*
+ 10 CONTINUE
+ CDEN1 = CDEN*SMLNUM
+ CNUM1 = CNUM / BIGNUM
+ IF( ABS( CDEN1 ).GT.ABS( CNUM ) .AND. CNUM.NE.ZERO ) THEN
+*
+* Pre-multiply X by SMLNUM if CDEN is large compared to CNUM.
+*
+ MUL = SMLNUM
+ DONE = .FALSE.
+ CDEN = CDEN1
+ ELSE IF( ABS( CNUM1 ).GT.ABS( CDEN ) ) THEN
+*
+* Pre-multiply X by BIGNUM if CDEN is small compared to CNUM.
+*
+ MUL = BIGNUM
+ DONE = .FALSE.
+ CNUM = CNUM1
+ ELSE
+*
+* Multiply X by CNUM / CDEN and return.
+*
+ MUL = CNUM / CDEN
+ DONE = .TRUE.
+ END IF
+*
+* Scale the vector X by MUL
+*
+ CALL ZDSCAL( N, MUL, SX, INCX )
+*
+ IF( .NOT.DONE )
+ $ GO TO 10
+*
+ RETURN
+*
+* End of ZDRSCL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgebak.f b/2.3-1/src/fortran/lapack/zgebak.f
new file mode 100644
index 00000000..1023601d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgebak.f
@@ -0,0 +1,189 @@
+ SUBROUTINE ZGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB, SIDE
+ INTEGER IHI, ILO, INFO, LDV, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION SCALE( * )
+ COMPLEX*16 V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEBAK forms the right or left eigenvectors of a complex general
+* matrix by backward transformation on the computed eigenvectors of the
+* balanced matrix output by ZGEBAL.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the type of backward transformation required:
+* = 'N', do nothing, return immediately;
+* = 'P', do backward transformation for permutation only;
+* = 'S', do backward transformation for scaling only;
+* = 'B', do backward transformations for both permutation and
+* scaling.
+* JOB must be the same as the argument JOB supplied to ZGEBAL.
+*
+* SIDE (input) CHARACTER*1
+* = 'R': V contains right eigenvectors;
+* = 'L': V contains left eigenvectors.
+*
+* N (input) INTEGER
+* The number of rows of the matrix V. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* The integers ILO and IHI determined by ZGEBAL.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* SCALE (input) DOUBLE PRECISION array, dimension (N)
+* Details of the permutation and scaling factors, as returned
+* by ZGEBAL.
+*
+* M (input) INTEGER
+* The number of columns of the matrix V. M >= 0.
+*
+* V (input/output) COMPLEX*16 array, dimension (LDV,M)
+* On entry, the matrix of right or left eigenvectors to be
+* transformed, as returned by ZHSEIN or ZTREVC.
+* On exit, V is overwritten by the transformed eigenvectors.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V. LDV >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFTV, RIGHTV
+ INTEGER I, II, K
+ DOUBLE PRECISION S
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZDSCAL, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Decode and Test the input parameters
+*
+ RIGHTV = LSAME( SIDE, 'R' )
+ LEFTV = LSAME( SIDE, 'L' )
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -5
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -7
+ ELSE IF( LDV.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEBAK', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( M.EQ.0 )
+ $ RETURN
+ IF( LSAME( JOB, 'N' ) )
+ $ RETURN
+*
+ IF( ILO.EQ.IHI )
+ $ GO TO 30
+*
+* Backward balance
+*
+ IF( LSAME( JOB, 'S' ) .OR. LSAME( JOB, 'B' ) ) THEN
+*
+ IF( RIGHTV ) THEN
+ DO 10 I = ILO, IHI
+ S = SCALE( I )
+ CALL ZDSCAL( M, S, V( I, 1 ), LDV )
+ 10 CONTINUE
+ END IF
+*
+ IF( LEFTV ) THEN
+ DO 20 I = ILO, IHI
+ S = ONE / SCALE( I )
+ CALL ZDSCAL( M, S, V( I, 1 ), LDV )
+ 20 CONTINUE
+ END IF
+*
+ END IF
+*
+* Backward permutation
+*
+* For I = ILO-1 step -1 until 1,
+* IHI+1 step 1 until N do --
+*
+ 30 CONTINUE
+ IF( LSAME( JOB, 'P' ) .OR. LSAME( JOB, 'B' ) ) THEN
+ IF( RIGHTV ) THEN
+ DO 40 II = 1, N
+ I = II
+ IF( I.GE.ILO .AND. I.LE.IHI )
+ $ GO TO 40
+ IF( I.LT.ILO )
+ $ I = ILO - II
+ K = SCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 40
+ CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 40 CONTINUE
+ END IF
+*
+ IF( LEFTV ) THEN
+ DO 50 II = 1, N
+ I = II
+ IF( I.GE.ILO .AND. I.LE.IHI )
+ $ GO TO 50
+ IF( I.LT.ILO )
+ $ I = ILO - II
+ K = SCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 50
+ CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 50 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZGEBAK
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgebal.f b/2.3-1/src/fortran/lapack/zgebal.f
new file mode 100644
index 00000000..67ac2e14
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgebal.f
@@ -0,0 +1,330 @@
+ SUBROUTINE ZGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB
+ INTEGER IHI, ILO, INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION SCALE( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEBAL balances a general complex matrix A. This involves, first,
+* permuting A by a similarity transformation to isolate eigenvalues
+* in the first 1 to ILO-1 and last IHI+1 to N elements on the
+* diagonal; and second, applying a diagonal similarity transformation
+* to rows and columns ILO to IHI to make the rows and columns as
+* close in norm as possible. Both steps are optional.
+*
+* Balancing may reduce the 1-norm of the matrix, and improve the
+* accuracy of the computed eigenvalues and/or eigenvectors.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the operations to be performed on A:
+* = 'N': none: simply set ILO = 1, IHI = N, SCALE(I) = 1.0
+* for i = 1,...,N;
+* = 'P': permute only;
+* = 'S': scale only;
+* = 'B': both permute and scale.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the input matrix A.
+* On exit, A is overwritten by the balanced matrix.
+* If JOB = 'N', A is not referenced.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* ILO (output) INTEGER
+* IHI (output) INTEGER
+* ILO and IHI are set to integers such that on exit
+* A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N.
+* If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*
+* SCALE (output) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and scaling factors applied to
+* A. If P(j) is the index of the row and column interchanged
+* with row and column j and D(j) is the scaling factor
+* applied to row and column j, then
+* SCALE(j) = P(j) for j = 1,...,ILO-1
+* = D(j) for j = ILO,...,IHI
+* = P(j) for j = IHI+1,...,N.
+* The order in which the interchanges are made is N to IHI+1,
+* then 1 to ILO-1.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The permutations consist of row and column interchanges which put
+* the matrix in the form
+*
+* ( T1 X Y )
+* P A P = ( 0 B Z )
+* ( 0 0 T2 )
+*
+* where T1 and T2 are upper triangular matrices whose eigenvalues lie
+* along the diagonal. The column indices ILO and IHI mark the starting
+* and ending columns of the submatrix B. Balancing consists of applying
+* a diagonal similarity transformation inv(D) * B * D to make the
+* 1-norms of each row of B and its corresponding column nearly equal.
+* The output matrix is
+*
+* ( T1 X*D Y )
+* ( 0 inv(D)*B*D inv(D)*Z ).
+* ( 0 0 T2 )
+*
+* Information about the permutations P and the diagonal matrix D is
+* returned in the vector SCALE.
+*
+* This subroutine is based on the EISPACK routine CBAL.
+*
+* Modified by Tzu-Yi Chen, Computer Science Division, University of
+* California at Berkeley, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION SCLFAC
+ PARAMETER ( SCLFAC = 2.0D+0 )
+ DOUBLE PRECISION FACTOR
+ PARAMETER ( FACTOR = 0.95D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOCONV
+ INTEGER I, ICA, IEXC, IRA, J, K, L, M
+ DOUBLE PRECISION C, CA, F, G, R, RA, S, SFMAX1, SFMAX2, SFMIN1,
+ $ SFMIN2
+ COMPLEX*16 CDUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IZAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, IZAMAX, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZDSCAL, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DIMAG, MAX, MIN
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEBAL', -INFO )
+ RETURN
+ END IF
+*
+ K = 1
+ L = N
+*
+ IF( N.EQ.0 )
+ $ GO TO 210
+*
+ IF( LSAME( JOB, 'N' ) ) THEN
+ DO 10 I = 1, N
+ SCALE( I ) = ONE
+ 10 CONTINUE
+ GO TO 210
+ END IF
+*
+ IF( LSAME( JOB, 'S' ) )
+ $ GO TO 120
+*
+* Permutation to isolate eigenvalues if possible
+*
+ GO TO 50
+*
+* Row and column exchange.
+*
+ 20 CONTINUE
+ SCALE( M ) = J
+ IF( J.EQ.M )
+ $ GO TO 30
+*
+ CALL ZSWAP( L, A( 1, J ), 1, A( 1, M ), 1 )
+ CALL ZSWAP( N-K+1, A( J, K ), LDA, A( M, K ), LDA )
+*
+ 30 CONTINUE
+ GO TO ( 40, 80 )IEXC
+*
+* Search for rows isolating an eigenvalue and push them down.
+*
+ 40 CONTINUE
+ IF( L.EQ.1 )
+ $ GO TO 210
+ L = L - 1
+*
+ 50 CONTINUE
+ DO 70 J = L, 1, -1
+*
+ DO 60 I = 1, L
+ IF( I.EQ.J )
+ $ GO TO 60
+ IF( DBLE( A( J, I ) ).NE.ZERO .OR. DIMAG( A( J, I ) ).NE.
+ $ ZERO )GO TO 70
+ 60 CONTINUE
+*
+ M = L
+ IEXC = 1
+ GO TO 20
+ 70 CONTINUE
+*
+ GO TO 90
+*
+* Search for columns isolating an eigenvalue and push them left.
+*
+ 80 CONTINUE
+ K = K + 1
+*
+ 90 CONTINUE
+ DO 110 J = K, L
+*
+ DO 100 I = K, L
+ IF( I.EQ.J )
+ $ GO TO 100
+ IF( DBLE( A( I, J ) ).NE.ZERO .OR. DIMAG( A( I, J ) ).NE.
+ $ ZERO )GO TO 110
+ 100 CONTINUE
+*
+ M = K
+ IEXC = 2
+ GO TO 20
+ 110 CONTINUE
+*
+ 120 CONTINUE
+ DO 130 I = K, L
+ SCALE( I ) = ONE
+ 130 CONTINUE
+*
+ IF( LSAME( JOB, 'P' ) )
+ $ GO TO 210
+*
+* Balance the submatrix in rows K to L.
+*
+* Iterative loop for norm reduction
+*
+ SFMIN1 = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ SFMAX1 = ONE / SFMIN1
+ SFMIN2 = SFMIN1*SCLFAC
+ SFMAX2 = ONE / SFMIN2
+ 140 CONTINUE
+ NOCONV = .FALSE.
+*
+ DO 200 I = K, L
+ C = ZERO
+ R = ZERO
+*
+ DO 150 J = K, L
+ IF( J.EQ.I )
+ $ GO TO 150
+ C = C + CABS1( A( J, I ) )
+ R = R + CABS1( A( I, J ) )
+ 150 CONTINUE
+ ICA = IZAMAX( L, A( 1, I ), 1 )
+ CA = ABS( A( ICA, I ) )
+ IRA = IZAMAX( N-K+1, A( I, K ), LDA )
+ RA = ABS( A( I, IRA+K-1 ) )
+*
+* Guard against zero C or R due to underflow.
+*
+ IF( C.EQ.ZERO .OR. R.EQ.ZERO )
+ $ GO TO 200
+ G = R / SCLFAC
+ F = ONE
+ S = C + R
+ 160 CONTINUE
+ IF( C.GE.G .OR. MAX( F, C, CA ).GE.SFMAX2 .OR.
+ $ MIN( R, G, RA ).LE.SFMIN2 )GO TO 170
+ F = F*SCLFAC
+ C = C*SCLFAC
+ CA = CA*SCLFAC
+ R = R / SCLFAC
+ G = G / SCLFAC
+ RA = RA / SCLFAC
+ GO TO 160
+*
+ 170 CONTINUE
+ G = C / SCLFAC
+ 180 CONTINUE
+ IF( G.LT.R .OR. MAX( R, RA ).GE.SFMAX2 .OR.
+ $ MIN( F, C, G, CA ).LE.SFMIN2 )GO TO 190
+ F = F / SCLFAC
+ C = C / SCLFAC
+ G = G / SCLFAC
+ CA = CA / SCLFAC
+ R = R*SCLFAC
+ RA = RA*SCLFAC
+ GO TO 180
+*
+* Now balance.
+*
+ 190 CONTINUE
+ IF( ( C+R ).GE.FACTOR*S )
+ $ GO TO 200
+ IF( F.LT.ONE .AND. SCALE( I ).LT.ONE ) THEN
+ IF( F*SCALE( I ).LE.SFMIN1 )
+ $ GO TO 200
+ END IF
+ IF( F.GT.ONE .AND. SCALE( I ).GT.ONE ) THEN
+ IF( SCALE( I ).GE.SFMAX1 / F )
+ $ GO TO 200
+ END IF
+ G = ONE / F
+ SCALE( I ) = SCALE( I )*F
+ NOCONV = .TRUE.
+*
+ CALL ZDSCAL( N-K+1, G, A( I, K ), LDA )
+ CALL ZDSCAL( L, F, A( 1, I ), 1 )
+*
+ 200 CONTINUE
+*
+ IF( NOCONV )
+ $ GO TO 140
+*
+ 210 CONTINUE
+ ILO = K
+ IHI = L
+*
+ RETURN
+*
+* End of ZGEBAL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgebd2.f b/2.3-1/src/fortran/lapack/zgebd2.f
new file mode 100644
index 00000000..5ba52e87
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgebd2.f
@@ -0,0 +1,250 @@
+ SUBROUTINE ZGEBD2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+ COMPLEX*16 A( LDA, * ), TAUP( * ), TAUQ( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEBD2 reduces a complex general m by n matrix A to upper or lower
+* real bidiagonal form B by a unitary transformation: Q' * A * P = B.
+*
+* If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows in the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns in the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the m by n general matrix to be reduced.
+* On exit,
+* if m >= n, the diagonal and the first superdiagonal are
+* overwritten with the upper bidiagonal matrix B; the
+* elements below the diagonal, with the array TAUQ, represent
+* the unitary matrix Q as a product of elementary
+* reflectors, and the elements above the first superdiagonal,
+* with the array TAUP, represent the unitary matrix P as
+* a product of elementary reflectors;
+* if m < n, the diagonal and the first subdiagonal are
+* overwritten with the lower bidiagonal matrix B; the
+* elements below the first subdiagonal, with the array TAUQ,
+* represent the unitary matrix Q as a product of
+* elementary reflectors, and the elements above the diagonal,
+* with the array TAUP, represent the unitary matrix P as
+* a product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* D (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The diagonal elements of the bidiagonal matrix B:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+* The off-diagonal elements of the bidiagonal matrix B:
+* if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
+* if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*
+* TAUQ (output) COMPLEX*16 array dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the unitary matrix Q. See Further Details.
+*
+* TAUP (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the unitary matrix P. See Further Details.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (max(M,N))
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrices Q and P are represented as products of elementary
+* reflectors:
+*
+* If m >= n,
+*
+* Q = H(1) H(2) . . . H(n) and P = G(1) G(2) . . . G(n-1)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are complex scalars, and v and u are complex
+* vectors; v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in
+* A(i+1:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in
+* A(i,i+2:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* If m < n,
+*
+* Q = H(1) H(2) . . . H(m-1) and P = G(1) G(2) . . . G(m)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are complex scalars, v and u are complex vectors;
+* v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i);
+* u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n);
+* tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* The contents of A on exit are illustrated by the following examples:
+*
+* m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
+*
+* ( d e u1 u1 u1 ) ( d u1 u1 u1 u1 u1 )
+* ( v1 d e u2 u2 ) ( e d u2 u2 u2 u2 )
+* ( v1 v2 d e u3 ) ( v1 e d u3 u3 u3 )
+* ( v1 v2 v3 d e ) ( v1 v2 e d u4 u4 )
+* ( v1 v2 v3 v4 d ) ( v1 v2 v3 e d u5 )
+* ( v1 v2 v3 v4 v5 )
+*
+* where d and e denote diagonal and off-diagonal elements of B, vi
+* denotes an element of the vector defining H(i), and ui an element of
+* the vector defining G(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLACGV, ZLARF, ZLARFG
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.LT.0 ) THEN
+ CALL XERBLA( 'ZGEBD2', -INFO )
+ RETURN
+ END IF
+*
+ IF( M.GE.N ) THEN
+*
+* Reduce to upper bidiagonal form
+*
+ DO 10 I = 1, N
+*
+* Generate elementary reflector H(i) to annihilate A(i+1:m,i)
+*
+ ALPHA = A( I, I )
+ CALL ZLARFG( M-I+1, ALPHA, A( MIN( I+1, M ), I ), 1,
+ $ TAUQ( I ) )
+ D( I ) = ALPHA
+ A( I, I ) = ONE
+*
+* Apply H(i)' to A(i:m,i+1:n) from the left
+*
+ IF( I.LT.N )
+ $ CALL ZLARF( 'Left', M-I+1, N-I, A( I, I ), 1,
+ $ DCONJG( TAUQ( I ) ), A( I, I+1 ), LDA, WORK )
+ A( I, I ) = D( I )
+*
+ IF( I.LT.N ) THEN
+*
+* Generate elementary reflector G(i) to annihilate
+* A(i,i+2:n)
+*
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ ALPHA = A( I, I+1 )
+ CALL ZLARFG( N-I, ALPHA, A( I, MIN( I+2, N ) ), LDA,
+ $ TAUP( I ) )
+ E( I ) = ALPHA
+ A( I, I+1 ) = ONE
+*
+* Apply G(i) to A(i+1:m,i+1:n) from the right
+*
+ CALL ZLARF( 'Right', M-I, N-I, A( I, I+1 ), LDA,
+ $ TAUP( I ), A( I+1, I+1 ), LDA, WORK )
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ A( I, I+1 ) = E( I )
+ ELSE
+ TAUP( I ) = ZERO
+ END IF
+ 10 CONTINUE
+ ELSE
+*
+* Reduce to lower bidiagonal form
+*
+ DO 20 I = 1, M
+*
+* Generate elementary reflector G(i) to annihilate A(i,i+1:n)
+*
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+ ALPHA = A( I, I )
+ CALL ZLARFG( N-I+1, ALPHA, A( I, MIN( I+1, N ) ), LDA,
+ $ TAUP( I ) )
+ D( I ) = ALPHA
+ A( I, I ) = ONE
+*
+* Apply G(i) to A(i+1:m,i:n) from the right
+*
+ IF( I.LT.M )
+ $ CALL ZLARF( 'Right', M-I, N-I+1, A( I, I ), LDA,
+ $ TAUP( I ), A( I+1, I ), LDA, WORK )
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+ A( I, I ) = D( I )
+*
+ IF( I.LT.M ) THEN
+*
+* Generate elementary reflector H(i) to annihilate
+* A(i+2:m,i)
+*
+ ALPHA = A( I+1, I )
+ CALL ZLARFG( M-I, ALPHA, A( MIN( I+2, M ), I ), 1,
+ $ TAUQ( I ) )
+ E( I ) = ALPHA
+ A( I+1, I ) = ONE
+*
+* Apply H(i)' to A(i+1:m,i+1:n) from the left
+*
+ CALL ZLARF( 'Left', M-I, N-I, A( I+1, I ), 1,
+ $ DCONJG( TAUQ( I ) ), A( I+1, I+1 ), LDA,
+ $ WORK )
+ A( I+1, I ) = E( I )
+ ELSE
+ TAUQ( I ) = ZERO
+ END IF
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZGEBD2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgebrd.f b/2.3-1/src/fortran/lapack/zgebrd.f
new file mode 100644
index 00000000..4f97bd7e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgebrd.f
@@ -0,0 +1,268 @@
+ SUBROUTINE ZGEBRD( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+ COMPLEX*16 A( LDA, * ), TAUP( * ), TAUQ( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEBRD reduces a general complex M-by-N matrix A to upper or lower
+* bidiagonal form B by a unitary transformation: Q**H * A * P = B.
+*
+* If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows in the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns in the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N general matrix to be reduced.
+* On exit,
+* if m >= n, the diagonal and the first superdiagonal are
+* overwritten with the upper bidiagonal matrix B; the
+* elements below the diagonal, with the array TAUQ, represent
+* the unitary matrix Q as a product of elementary
+* reflectors, and the elements above the first superdiagonal,
+* with the array TAUP, represent the unitary matrix P as
+* a product of elementary reflectors;
+* if m < n, the diagonal and the first subdiagonal are
+* overwritten with the lower bidiagonal matrix B; the
+* elements below the first subdiagonal, with the array TAUQ,
+* represent the unitary matrix Q as a product of
+* elementary reflectors, and the elements above the diagonal,
+* with the array TAUP, represent the unitary matrix P as
+* a product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* D (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The diagonal elements of the bidiagonal matrix B:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+* The off-diagonal elements of the bidiagonal matrix B:
+* if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
+* if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*
+* TAUQ (output) COMPLEX*16 array dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the unitary matrix Q. See Further Details.
+*
+* TAUP (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors which
+* represent the unitary matrix P. See Further Details.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of the array WORK. LWORK >= max(1,M,N).
+* For optimum performance LWORK >= (M+N)*NB, where NB
+* is the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrices Q and P are represented as products of elementary
+* reflectors:
+*
+* If m >= n,
+*
+* Q = H(1) H(2) . . . H(n) and P = G(1) G(2) . . . G(n-1)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are complex scalars, and v and u are complex
+* vectors; v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in
+* A(i+1:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in
+* A(i,i+2:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* If m < n,
+*
+* Q = H(1) H(2) . . . H(m-1) and P = G(1) G(2) . . . G(m)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are complex scalars, and v and u are complex
+* vectors; v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in
+* A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is stored on exit in
+* A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* The contents of A on exit are illustrated by the following examples:
+*
+* m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
+*
+* ( d e u1 u1 u1 ) ( d u1 u1 u1 u1 u1 )
+* ( v1 d e u2 u2 ) ( e d u2 u2 u2 u2 )
+* ( v1 v2 d e u3 ) ( v1 e d u3 u3 u3 )
+* ( v1 v2 v3 d e ) ( v1 v2 e d u4 u4 )
+* ( v1 v2 v3 v4 d ) ( v1 v2 v3 e d u5 )
+* ( v1 v2 v3 v4 v5 )
+*
+* where d and e denote diagonal and off-diagonal elements of B, vi
+* denotes an element of the vector defining H(i), and ui an element of
+* the vector defining G(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IINFO, J, LDWRKX, LDWRKY, LWKOPT, MINMN, NB,
+ $ NBMIN, NX
+ DOUBLE PRECISION WS
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEBD2, ZGEMM, ZLABRD
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ NB = MAX( 1, ILAENV( 1, 'ZGEBRD', ' ', M, N, -1, -1 ) )
+ LWKOPT = ( M+N )*NB
+ WORK( 1 ) = DBLE( LWKOPT )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, M, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.LT.0 ) THEN
+ CALL XERBLA( 'ZGEBRD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ MINMN = MIN( M, N )
+ IF( MINMN.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ WS = MAX( M, N )
+ LDWRKX = M
+ LDWRKY = N
+*
+ IF( NB.GT.1 .AND. NB.LT.MINMN ) THEN
+*
+* Set the crossover point NX.
+*
+ NX = MAX( NB, ILAENV( 3, 'ZGEBRD', ' ', M, N, -1, -1 ) )
+*
+* Determine when to switch from blocked to unblocked code.
+*
+ IF( NX.LT.MINMN ) THEN
+ WS = ( M+N )*NB
+ IF( LWORK.LT.WS ) THEN
+*
+* Not enough work space for the optimal NB, consider using
+* a smaller block size.
+*
+ NBMIN = ILAENV( 2, 'ZGEBRD', ' ', M, N, -1, -1 )
+ IF( LWORK.GE.( M+N )*NBMIN ) THEN
+ NB = LWORK / ( M+N )
+ ELSE
+ NB = 1
+ NX = MINMN
+ END IF
+ END IF
+ END IF
+ ELSE
+ NX = MINMN
+ END IF
+*
+ DO 30 I = 1, MINMN - NX, NB
+*
+* Reduce rows and columns i:i+ib-1 to bidiagonal form and return
+* the matrices X and Y which are needed to update the unreduced
+* part of the matrix
+*
+ CALL ZLABRD( M-I+1, N-I+1, NB, A( I, I ), LDA, D( I ), E( I ),
+ $ TAUQ( I ), TAUP( I ), WORK, LDWRKX,
+ $ WORK( LDWRKX*NB+1 ), LDWRKY )
+*
+* Update the trailing submatrix A(i+ib:m,i+ib:n), using
+* an update of the form A := A - V*Y' - X*U'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', M-I-NB+1,
+ $ N-I-NB+1, NB, -ONE, A( I+NB, I ), LDA,
+ $ WORK( LDWRKX*NB+NB+1 ), LDWRKY, ONE,
+ $ A( I+NB, I+NB ), LDA )
+ CALL ZGEMM( 'No transpose', 'No transpose', M-I-NB+1, N-I-NB+1,
+ $ NB, -ONE, WORK( NB+1 ), LDWRKX, A( I, I+NB ), LDA,
+ $ ONE, A( I+NB, I+NB ), LDA )
+*
+* Copy diagonal and off-diagonal elements of B back into A
+*
+ IF( M.GE.N ) THEN
+ DO 10 J = I, I + NB - 1
+ A( J, J ) = D( J )
+ A( J, J+1 ) = E( J )
+ 10 CONTINUE
+ ELSE
+ DO 20 J = I, I + NB - 1
+ A( J, J ) = D( J )
+ A( J+1, J ) = E( J )
+ 20 CONTINUE
+ END IF
+ 30 CONTINUE
+*
+* Use unblocked code to reduce the remainder of the matrix
+*
+ CALL ZGEBD2( M-I+1, N-I+1, A( I, I ), LDA, D( I ), E( I ),
+ $ TAUQ( I ), TAUP( I ), WORK, IINFO )
+ WORK( 1 ) = WS
+ RETURN
+*
+* End of ZGEBRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgecon.f b/2.3-1/src/fortran/lapack/zgecon.f
new file mode 100644
index 00000000..cfaaca35
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgecon.f
@@ -0,0 +1,193 @@
+ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call ZLACN2 in place of ZLACON, 10 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION ANORM, RCOND
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGECON estimates the reciprocal of the condition number of a general
+* complex matrix A, in either the 1-norm or the infinity-norm, using
+* the LU factorization computed by ZGETRF.
+*
+* An estimate is obtained for norm(inv(A)), and the reciprocal of the
+* condition number is computed as
+* RCOND = 1 / ( norm(A) * norm(inv(A)) ).
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies whether the 1-norm condition number or the
+* infinity-norm condition number is required:
+* = '1' or 'O': 1-norm;
+* = 'I': Infinity-norm.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The factors L and U from the factorization A = P*L*U
+* as computed by ZGETRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* ANORM (input) DOUBLE PRECISION
+* If NORM = '1' or 'O', the 1-norm of the original matrix A.
+* If NORM = 'I', the infinity-norm of the original matrix A.
+*
+* RCOND (output) DOUBLE PRECISION
+* The reciprocal of the condition number of the matrix A,
+* computed as RCOND = 1/(norm(A) * norm(inv(A))).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (2*N)
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ONENRM
+ CHARACTER NORMIN
+ INTEGER IX, KASE, KASE1
+ DOUBLE PRECISION AINVNM, SCALE, SL, SMLNUM, SU
+ COMPLEX*16 ZDUM
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IZAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, IZAMAX, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZDRSCL, ZLACN2, ZLATRS
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DIMAG, MAX
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( ZDUM ) = ABS( DBLE( ZDUM ) ) + ABS( DIMAG( ZDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ ONENRM = NORM.EQ.'1' .OR. LSAME( NORM, 'O' )
+ IF( .NOT.ONENRM .AND. .NOT.LSAME( NORM, 'I' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( ANORM.LT.ZERO ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGECON', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ RCOND = ZERO
+ IF( N.EQ.0 ) THEN
+ RCOND = ONE
+ RETURN
+ ELSE IF( ANORM.EQ.ZERO ) THEN
+ RETURN
+ END IF
+*
+ SMLNUM = DLAMCH( 'Safe minimum' )
+*
+* Estimate the norm of inv(A).
+*
+ AINVNM = ZERO
+ NORMIN = 'N'
+ IF( ONENRM ) THEN
+ KASE1 = 1
+ ELSE
+ KASE1 = 2
+ END IF
+ KASE = 0
+ 10 CONTINUE
+ CALL ZLACN2( N, WORK( N+1 ), WORK, AINVNM, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.KASE1 ) THEN
+*
+* Multiply by inv(L).
+*
+ CALL ZLATRS( 'Lower', 'No transpose', 'Unit', NORMIN, N, A,
+ $ LDA, WORK, SL, RWORK, INFO )
+*
+* Multiply by inv(U).
+*
+ CALL ZLATRS( 'Upper', 'No transpose', 'Non-unit', NORMIN, N,
+ $ A, LDA, WORK, SU, RWORK( N+1 ), INFO )
+ ELSE
+*
+* Multiply by inv(U').
+*
+ CALL ZLATRS( 'Upper', 'Conjugate transpose', 'Non-unit',
+ $ NORMIN, N, A, LDA, WORK, SU, RWORK( N+1 ),
+ $ INFO )
+*
+* Multiply by inv(L').
+*
+ CALL ZLATRS( 'Lower', 'Conjugate transpose', 'Unit', NORMIN,
+ $ N, A, LDA, WORK, SL, RWORK, INFO )
+ END IF
+*
+* Divide X by 1/(SL*SU) if doing so will not cause overflow.
+*
+ SCALE = SL*SU
+ NORMIN = 'Y'
+ IF( SCALE.NE.ONE ) THEN
+ IX = IZAMAX( N, WORK, 1 )
+ IF( SCALE.LT.CABS1( WORK( IX ) )*SMLNUM .OR. SCALE.EQ.ZERO )
+ $ GO TO 20
+ CALL ZDRSCL( N, SCALE, WORK, 1 )
+ END IF
+ GO TO 10
+ END IF
+*
+* Compute the estimate of the reciprocal condition number.
+*
+ IF( AINVNM.NE.ZERO )
+ $ RCOND = ( ONE / AINVNM ) / ANORM
+*
+ 20 CONTINUE
+ RETURN
+*
+* End of ZGECON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgees.f b/2.3-1/src/fortran/lapack/zgees.f
new file mode 100644
index 00000000..ade5f9f2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgees.f
@@ -0,0 +1,324 @@
+ SUBROUTINE ZGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS,
+ $ LDVS, WORK, LWORK, RWORK, BWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVS, SORT
+ INTEGER INFO, LDA, LDVS, LWORK, N, SDIM
+* ..
+* .. Array Arguments ..
+ LOGICAL BWORK( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), VS( LDVS, * ), W( * ), WORK( * )
+* ..
+* .. Function Arguments ..
+ LOGICAL SELECT
+ EXTERNAL SELECT
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEES computes for an N-by-N complex nonsymmetric matrix A, the
+* eigenvalues, the Schur form T, and, optionally, the matrix of Schur
+* vectors Z. This gives the Schur factorization A = Z*T*(Z**H).
+*
+* Optionally, it also orders the eigenvalues on the diagonal of the
+* Schur form so that selected eigenvalues are at the top left.
+* The leading columns of Z then form an orthonormal basis for the
+* invariant subspace corresponding to the selected eigenvalues.
+*
+* A complex matrix is in Schur form if it is upper triangular.
+*
+* Arguments
+* =========
+*
+* JOBVS (input) CHARACTER*1
+* = 'N': Schur vectors are not computed;
+* = 'V': Schur vectors are computed.
+*
+* SORT (input) CHARACTER*1
+* Specifies whether or not to order the eigenvalues on the
+* diagonal of the Schur form.
+* = 'N': Eigenvalues are not ordered:
+* = 'S': Eigenvalues are ordered (see SELECT).
+*
+* SELECT (external procedure) LOGICAL FUNCTION of one COMPLEX*16 argument
+* SELECT must be declared EXTERNAL in the calling subroutine.
+* If SORT = 'S', SELECT is used to select eigenvalues to order
+* to the top left of the Schur form.
+* IF SORT = 'N', SELECT is not referenced.
+* The eigenvalue W(j) is selected if SELECT(W(j)) is true.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the N-by-N matrix A.
+* On exit, A has been overwritten by its Schur form T.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* SDIM (output) INTEGER
+* If SORT = 'N', SDIM = 0.
+* If SORT = 'S', SDIM = number of eigenvalues for which
+* SELECT is true.
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* W contains the computed eigenvalues, in the same order that
+* they appear on the diagonal of the output Schur form T.
+*
+* VS (output) COMPLEX*16 array, dimension (LDVS,N)
+* If JOBVS = 'V', VS contains the unitary matrix Z of Schur
+* vectors.
+* If JOBVS = 'N', VS is not referenced.
+*
+* LDVS (input) INTEGER
+* The leading dimension of the array VS. LDVS >= 1; if
+* JOBVS = 'V', LDVS >= N.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,2*N).
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* BWORK (workspace) LOGICAL array, dimension (N)
+* Not referenced if SORT = 'N'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if INFO = i, and i is
+* <= N: the QR algorithm failed to compute all the
+* eigenvalues; elements 1:ILO-1 and i+1:N of W
+* contain those eigenvalues which have converged;
+* if JOBVS = 'V', VS contains the matrix which
+* reduces A to its partially converged Schur form.
+* = N+1: the eigenvalues could not be reordered because
+* some eigenvalues were too close to separate (the
+* problem is very ill-conditioned);
+* = N+2: after reordering, roundoff changed values of
+* some complex eigenvalues so that leading
+* eigenvalues in the Schur form no longer satisfy
+* SELECT = .TRUE.. This could also be caused by
+* underflow due to scaling.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, SCALEA, WANTST, WANTVS
+ INTEGER HSWORK, I, IBAL, ICOND, IERR, IEVAL, IHI, ILO,
+ $ ITAU, IWRK, MAXWRK, MINWRK
+ DOUBLE PRECISION ANRM, BIGNUM, CSCALE, EPS, S, SEP, SMLNUM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZCOPY, ZGEBAK, ZGEBAL, ZGEHRD,
+ $ ZHSEQR, ZLACPY, ZLASCL, ZTRSEN, ZUNGHR
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, ZLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, ZLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ WANTVS = LSAME( JOBVS, 'V' )
+ WANTST = LSAME( SORT, 'S' )
+ IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDVS.LT.1 .OR. ( WANTVS .AND. LDVS.LT.N ) ) THEN
+ INFO = -10
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* CWorkspace refers to complex workspace, and RWorkspace to real
+* workspace. NB refers to the optimal block size for the
+* immediately following subroutine, as returned by ILAENV.
+* HSWORK refers to the workspace preferred by ZHSEQR, as
+* calculated below. HSWORK is computed assuming ILO=1 and IHI=N,
+* the worst case.)
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ ELSE
+ MAXWRK = N + N*ILAENV( 1, 'ZGEHRD', ' ', N, 1, N, 0 )
+ MINWRK = 2*N
+*
+ CALL ZHSEQR( 'S', JOBVS, N, 1, N, A, LDA, W, VS, LDVS,
+ $ WORK, -1, IEVAL )
+ HSWORK = WORK( 1 )
+*
+ IF( .NOT.WANTVS ) THEN
+ MAXWRK = MAX( MAXWRK, HSWORK )
+ ELSE
+ MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'ZUNGHR',
+ $ ' ', N, 1, N, -1 ) )
+ MAXWRK = MAX( MAXWRK, HSWORK )
+ END IF
+ END IF
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEES ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ SDIM = 0
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', N, N, A, LDA, DUM )
+ SCALEA = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = SMLNUM
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = BIGNUM
+ END IF
+ IF( SCALEA )
+ $ CALL ZLASCL( 'G', 0, 0, ANRM, CSCALE, N, N, A, LDA, IERR )
+*
+* Permute the matrix to make it more nearly triangular
+* (CWorkspace: none)
+* (RWorkspace: need N)
+*
+ IBAL = 1
+ CALL ZGEBAL( 'P', N, A, LDA, ILO, IHI, RWORK( IBAL ), IERR )
+*
+* Reduce to upper Hessenberg form
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: none)
+*
+ ITAU = 1
+ IWRK = N + ITAU
+ CALL ZGEHRD( N, ILO, IHI, A, LDA, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+ IF( WANTVS ) THEN
+*
+* Copy Householder vectors to VS
+*
+ CALL ZLACPY( 'L', N, N, A, LDA, VS, LDVS )
+*
+* Generate unitary matrix in VS
+* (CWorkspace: need 2*N-1, prefer N+(N-1)*NB)
+* (RWorkspace: none)
+*
+ CALL ZUNGHR( N, ILO, IHI, VS, LDVS, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+ END IF
+*
+ SDIM = 0
+*
+* Perform QR iteration, accumulating Schur vectors in VS if desired
+* (CWorkspace: need 1, prefer HSWORK (see comments) )
+* (RWorkspace: none)
+*
+ IWRK = ITAU
+ CALL ZHSEQR( 'S', JOBVS, N, ILO, IHI, A, LDA, W, VS, LDVS,
+ $ WORK( IWRK ), LWORK-IWRK+1, IEVAL )
+ IF( IEVAL.GT.0 )
+ $ INFO = IEVAL
+*
+* Sort eigenvalues if desired
+*
+ IF( WANTST .AND. INFO.EQ.0 ) THEN
+ IF( SCALEA )
+ $ CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, N, 1, W, N, IERR )
+ DO 10 I = 1, N
+ BWORK( I ) = SELECT( W( I ) )
+ 10 CONTINUE
+*
+* Reorder eigenvalues and transform Schur vectors
+* (CWorkspace: none)
+* (RWorkspace: none)
+*
+ CALL ZTRSEN( 'N', JOBVS, BWORK, N, A, LDA, VS, LDVS, W, SDIM,
+ $ S, SEP, WORK( IWRK ), LWORK-IWRK+1, ICOND )
+ END IF
+*
+ IF( WANTVS ) THEN
+*
+* Undo balancing
+* (CWorkspace: none)
+* (RWorkspace: need N)
+*
+ CALL ZGEBAK( 'P', 'R', N, ILO, IHI, RWORK( IBAL ), N, VS, LDVS,
+ $ IERR )
+ END IF
+*
+ IF( SCALEA ) THEN
+*
+* Undo scaling for the Schur form of A
+*
+ CALL ZLASCL( 'U', 0, 0, CSCALE, ANRM, N, N, A, LDA, IERR )
+ CALL ZCOPY( N, A, LDA+1, W, 1 )
+ END IF
+*
+ WORK( 1 ) = MAXWRK
+ RETURN
+*
+* End of ZGEES
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgeev.f b/2.3-1/src/fortran/lapack/zgeev.f
new file mode 100644
index 00000000..0fa66307
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgeev.f
@@ -0,0 +1,396 @@
+ SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR,
+ $ WORK, LWORK, RWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
+ $ W( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEEV computes for an N-by-N complex nonsymmetric matrix A, the
+* eigenvalues and, optionally, the left and/or right eigenvectors.
+*
+* The right eigenvector v(j) of A satisfies
+* A * v(j) = lambda(j) * v(j)
+* where lambda(j) is its eigenvalue.
+* The left eigenvector u(j) of A satisfies
+* u(j)**H * A = lambda(j) * u(j)**H
+* where u(j)**H denotes the conjugate transpose of u(j).
+*
+* The computed eigenvectors are normalized to have Euclidean norm
+* equal to 1 and largest component real.
+*
+* Arguments
+* =========
+*
+* JOBVL (input) CHARACTER*1
+* = 'N': left eigenvectors of A are not computed;
+* = 'V': left eigenvectors of are computed.
+*
+* JOBVR (input) CHARACTER*1
+* = 'N': right eigenvectors of A are not computed;
+* = 'V': right eigenvectors of A are computed.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the N-by-N matrix A.
+* On exit, A has been overwritten.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* W contains the computed eigenvalues.
+*
+* VL (output) COMPLEX*16 array, dimension (LDVL,N)
+* If JOBVL = 'V', the left eigenvectors u(j) are stored one
+* after another in the columns of VL, in the same order
+* as their eigenvalues.
+* If JOBVL = 'N', VL is not referenced.
+* u(j) = VL(:,j), the j-th column of VL.
+*
+* LDVL (input) INTEGER
+* The leading dimension of the array VL. LDVL >= 1; if
+* JOBVL = 'V', LDVL >= N.
+*
+* VR (output) COMPLEX*16 array, dimension (LDVR,N)
+* If JOBVR = 'V', the right eigenvectors v(j) are stored one
+* after another in the columns of VR, in the same order
+* as their eigenvalues.
+* If JOBVR = 'N', VR is not referenced.
+* v(j) = VR(:,j), the j-th column of VR.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the array VR. LDVR >= 1; if
+* JOBVR = 'V', LDVR >= N.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,2*N).
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if INFO = i, the QR algorithm failed to compute all the
+* eigenvalues, and no eigenvectors have been computed;
+* elements and i+1:N of W contain eigenvalues which have
+* converged.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, SCALEA, WANTVL, WANTVR
+ CHARACTER SIDE
+ INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, IRWORK, ITAU,
+ $ IWRK, K, MAXWRK, MINWRK, NOUT
+ DOUBLE PRECISION ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
+ COMPLEX*16 TMP
+* ..
+* .. Local Arrays ..
+ LOGICAL SELECT( 1 )
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZDSCAL, ZGEBAK, ZGEBAL, ZGEHRD,
+ $ ZHSEQR, ZLACPY, ZLASCL, ZSCAL, ZTREVC, ZUNGHR
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX, ILAENV
+ DOUBLE PRECISION DLAMCH, DZNRM2, ZLANGE
+ EXTERNAL LSAME, IDAMAX, ILAENV, DLAMCH, DZNRM2, ZLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCMPLX, DCONJG, DIMAG, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ WANTVL = LSAME( JOBVL, 'V' )
+ WANTVR = LSAME( JOBVR, 'V' )
+ IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( ( .NOT.WANTVR ) .AND. ( .NOT.LSAME( JOBVR, 'N' ) ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDVL.LT.1 .OR. ( WANTVL .AND. LDVL.LT.N ) ) THEN
+ INFO = -8
+ ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN
+ INFO = -10
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* CWorkspace refers to complex workspace, and RWorkspace to real
+* workspace. NB refers to the optimal block size for the
+* immediately following subroutine, as returned by ILAENV.
+* HSWORK refers to the workspace preferred by ZHSEQR, as
+* calculated below. HSWORK is computed assuming ILO=1 and IHI=N,
+* the worst case.)
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ ELSE
+ MAXWRK = N + N*ILAENV( 1, 'ZGEHRD', ' ', N, 1, N, 0 )
+ MINWRK = 2*N
+ IF( WANTVL ) THEN
+ MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'ZUNGHR',
+ $ ' ', N, 1, N, -1 ) )
+ CALL ZHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VL, LDVL,
+ $ WORK, -1, INFO )
+ ELSE IF( WANTVR ) THEN
+ MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'ZUNGHR',
+ $ ' ', N, 1, N, -1 ) )
+ CALL ZHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VR, LDVR,
+ $ WORK, -1, INFO )
+ ELSE
+ CALL ZHSEQR( 'E', 'N', N, 1, N, A, LDA, W, VR, LDVR,
+ $ WORK, -1, INFO )
+ END IF
+ HSWORK = WORK( 1 )
+ MAXWRK = MAX( MAXWRK, HSWORK, MINWRK )
+ END IF
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEEV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', N, N, A, LDA, DUM )
+ SCALEA = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = SMLNUM
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ SCALEA = .TRUE.
+ CSCALE = BIGNUM
+ END IF
+ IF( SCALEA )
+ $ CALL ZLASCL( 'G', 0, 0, ANRM, CSCALE, N, N, A, LDA, IERR )
+*
+* Balance the matrix
+* (CWorkspace: none)
+* (RWorkspace: need N)
+*
+ IBAL = 1
+ CALL ZGEBAL( 'B', N, A, LDA, ILO, IHI, RWORK( IBAL ), IERR )
+*
+* Reduce to upper Hessenberg form
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: none)
+*
+ ITAU = 1
+ IWRK = ITAU + N
+ CALL ZGEHRD( N, ILO, IHI, A, LDA, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+ IF( WANTVL ) THEN
+*
+* Want left eigenvectors
+* Copy Householder vectors to VL
+*
+ SIDE = 'L'
+ CALL ZLACPY( 'L', N, N, A, LDA, VL, LDVL )
+*
+* Generate unitary matrix in VL
+* (CWorkspace: need 2*N-1, prefer N+(N-1)*NB)
+* (RWorkspace: none)
+*
+ CALL ZUNGHR( N, ILO, IHI, VL, LDVL, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+* Perform QR iteration, accumulating Schur vectors in VL
+* (CWorkspace: need 1, prefer HSWORK (see comments) )
+* (RWorkspace: none)
+*
+ IWRK = ITAU
+ CALL ZHSEQR( 'S', 'V', N, ILO, IHI, A, LDA, W, VL, LDVL,
+ $ WORK( IWRK ), LWORK-IWRK+1, INFO )
+*
+ IF( WANTVR ) THEN
+*
+* Want left and right eigenvectors
+* Copy Schur vectors to VR
+*
+ SIDE = 'B'
+ CALL ZLACPY( 'F', N, N, VL, LDVL, VR, LDVR )
+ END IF
+*
+ ELSE IF( WANTVR ) THEN
+*
+* Want right eigenvectors
+* Copy Householder vectors to VR
+*
+ SIDE = 'R'
+ CALL ZLACPY( 'L', N, N, A, LDA, VR, LDVR )
+*
+* Generate unitary matrix in VR
+* (CWorkspace: need 2*N-1, prefer N+(N-1)*NB)
+* (RWorkspace: none)
+*
+ CALL ZUNGHR( N, ILO, IHI, VR, LDVR, WORK( ITAU ), WORK( IWRK ),
+ $ LWORK-IWRK+1, IERR )
+*
+* Perform QR iteration, accumulating Schur vectors in VR
+* (CWorkspace: need 1, prefer HSWORK (see comments) )
+* (RWorkspace: none)
+*
+ IWRK = ITAU
+ CALL ZHSEQR( 'S', 'V', N, ILO, IHI, A, LDA, W, VR, LDVR,
+ $ WORK( IWRK ), LWORK-IWRK+1, INFO )
+*
+ ELSE
+*
+* Compute eigenvalues only
+* (CWorkspace: need 1, prefer HSWORK (see comments) )
+* (RWorkspace: none)
+*
+ IWRK = ITAU
+ CALL ZHSEQR( 'E', 'N', N, ILO, IHI, A, LDA, W, VR, LDVR,
+ $ WORK( IWRK ), LWORK-IWRK+1, INFO )
+ END IF
+*
+* If INFO > 0 from ZHSEQR, then quit
+*
+ IF( INFO.GT.0 )
+ $ GO TO 50
+*
+ IF( WANTVL .OR. WANTVR ) THEN
+*
+* Compute left and/or right eigenvectors
+* (CWorkspace: need 2*N)
+* (RWorkspace: need 2*N)
+*
+ IRWORK = IBAL + N
+ CALL ZTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
+ $ N, NOUT, WORK( IWRK ), RWORK( IRWORK ), IERR )
+ END IF
+*
+ IF( WANTVL ) THEN
+*
+* Undo balancing of left eigenvectors
+* (CWorkspace: none)
+* (RWorkspace: need N)
+*
+ CALL ZGEBAK( 'B', 'L', N, ILO, IHI, RWORK( IBAL ), N, VL, LDVL,
+ $ IERR )
+*
+* Normalize left eigenvectors and make largest component real
+*
+ DO 20 I = 1, N
+ SCL = ONE / DZNRM2( N, VL( 1, I ), 1 )
+ CALL ZDSCAL( N, SCL, VL( 1, I ), 1 )
+ DO 10 K = 1, N
+ RWORK( IRWORK+K-1 ) = DBLE( VL( K, I ) )**2 +
+ $ DIMAG( VL( K, I ) )**2
+ 10 CONTINUE
+ K = IDAMAX( N, RWORK( IRWORK ), 1 )
+ TMP = DCONJG( VL( K, I ) ) / SQRT( RWORK( IRWORK+K-1 ) )
+ CALL ZSCAL( N, TMP, VL( 1, I ), 1 )
+ VL( K, I ) = DCMPLX( DBLE( VL( K, I ) ), ZERO )
+ 20 CONTINUE
+ END IF
+*
+ IF( WANTVR ) THEN
+*
+* Undo balancing of right eigenvectors
+* (CWorkspace: none)
+* (RWorkspace: need N)
+*
+ CALL ZGEBAK( 'B', 'R', N, ILO, IHI, RWORK( IBAL ), N, VR, LDVR,
+ $ IERR )
+*
+* Normalize right eigenvectors and make largest component real
+*
+ DO 40 I = 1, N
+ SCL = ONE / DZNRM2( N, VR( 1, I ), 1 )
+ CALL ZDSCAL( N, SCL, VR( 1, I ), 1 )
+ DO 30 K = 1, N
+ RWORK( IRWORK+K-1 ) = DBLE( VR( K, I ) )**2 +
+ $ DIMAG( VR( K, I ) )**2
+ 30 CONTINUE
+ K = IDAMAX( N, RWORK( IRWORK ), 1 )
+ TMP = DCONJG( VR( K, I ) ) / SQRT( RWORK( IRWORK+K-1 ) )
+ CALL ZSCAL( N, TMP, VR( 1, I ), 1 )
+ VR( K, I ) = DCMPLX( DBLE( VR( K, I ) ), ZERO )
+ 40 CONTINUE
+ END IF
+*
+* Undo scaling if necessary
+*
+ 50 CONTINUE
+ IF( SCALEA ) THEN
+ CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, W( INFO+1 ),
+ $ MAX( N-INFO, 1 ), IERR )
+ IF( INFO.GT.0 ) THEN
+ CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, W, N, IERR )
+ END IF
+ END IF
+*
+ WORK( 1 ) = MAXWRK
+ RETURN
+*
+* End of ZGEEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgehd2.f b/2.3-1/src/fortran/lapack/zgehd2.f
new file mode 100644
index 00000000..c73f4200
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgehd2.f
@@ -0,0 +1,148 @@
+ SUBROUTINE ZGEHD2( N, ILO, IHI, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEHD2 reduces a complex general matrix A to upper Hessenberg form H
+* by a unitary similarity transformation: Q' * A * Q = H .
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that A is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+* set by a previous call to ZGEBAL; otherwise they should be
+* set to 1 and N respectively. See Further Details.
+* 1 <= ILO <= IHI <= max(1,N).
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the n by n general matrix to be reduced.
+* On exit, the upper triangle and the first subdiagonal of A
+* are overwritten with the upper Hessenberg matrix H, and the
+* elements below the first subdiagonal, with the array TAU,
+* represent the unitary matrix Q as a product of elementary
+* reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) COMPLEX*16 array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of (ihi-ilo) elementary
+* reflectors
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
+* exit in A(i+2:ihi,i), and tau in TAU(i).
+*
+* The contents of A are illustrated by the following example, with
+* n = 7, ilo = 2 and ihi = 6:
+*
+* on entry, on exit,
+*
+* ( a a a a a a a ) ( a a h h h h a )
+* ( a a a a a a ) ( a h h h h a )
+* ( a a a a a a ) ( h h h h h h )
+* ( a a a a a a ) ( v2 h h h h h )
+* ( a a a a a a ) ( v2 v3 h h h h )
+* ( a a a a a a ) ( v2 v3 v4 h h h )
+* ( a ) ( a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARF, ZLARFG
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -2
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEHD2', -INFO )
+ RETURN
+ END IF
+*
+ DO 10 I = ILO, IHI - 1
+*
+* Compute elementary reflector H(i) to annihilate A(i+2:ihi,i)
+*
+ ALPHA = A( I+1, I )
+ CALL ZLARFG( IHI-I, ALPHA, A( MIN( I+2, N ), I ), 1, TAU( I ) )
+ A( I+1, I ) = ONE
+*
+* Apply H(i) to A(1:ihi,i+1:ihi) from the right
+*
+ CALL ZLARF( 'Right', IHI, IHI-I, A( I+1, I ), 1, TAU( I ),
+ $ A( 1, I+1 ), LDA, WORK )
+*
+* Apply H(i)' to A(i+1:ihi,i+1:n) from the left
+*
+ CALL ZLARF( 'Left', IHI-I, N-I, A( I+1, I ), 1,
+ $ DCONJG( TAU( I ) ), A( I+1, I+1 ), LDA, WORK )
+*
+ A( I+1, I ) = ALPHA
+ 10 CONTINUE
+*
+ RETURN
+*
+* End of ZGEHD2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgehrd.f b/2.3-1/src/fortran/lapack/zgehrd.f
new file mode 100644
index 00000000..83c1aa32
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgehrd.f
@@ -0,0 +1,273 @@
+ SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEHRD reduces a complex general matrix A to upper Hessenberg form H by
+* an unitary similarity transformation: Q' * A * Q = H .
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that A is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+* set by a previous call to ZGEBAL; otherwise they should be
+* set to 1 and N respectively. See Further Details.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the N-by-N general matrix to be reduced.
+* On exit, the upper triangle and the first subdiagonal of A
+* are overwritten with the upper Hessenberg matrix H, and the
+* elements below the first subdiagonal, with the array TAU,
+* represent the unitary matrix Q as a product of elementary
+* reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) COMPLEX*16 array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
+* zero.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (LWORK)
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of (ihi-ilo) elementary
+* reflectors
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
+* exit in A(i+2:ihi,i), and tau in TAU(i).
+*
+* The contents of A are illustrated by the following example, with
+* n = 7, ilo = 2 and ihi = 6:
+*
+* on entry, on exit,
+*
+* ( a a a a a a a ) ( a a h h h h a )
+* ( a a a a a a ) ( a h h h h a )
+* ( a a a a a a ) ( h h h h h h )
+* ( a a a a a a ) ( v2 h h h h h )
+* ( a a a a a a ) ( v2 v3 h h h h )
+* ( a a a a a a ) ( v2 v3 v4 h h h )
+* ( a ) ( a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* This file is a slight modification of LAPACK-3.0's ZGEHRD
+* subroutine incorporating improvements proposed by Quintana-Orti and
+* Van de Geijn (2005).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, LDWORK, LWKOPT, NB,
+ $ NBMIN, NH, NX
+ COMPLEX*16 EI
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 T( LDT, NBMAX )
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZAXPY, ZGEHD2, ZGEMM, ZLAHR2, ZLARFB, ZTRMM,
+ $ XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ NB = MIN( NBMAX, ILAENV( 1, 'ZGEHRD', ' ', N, ILO, IHI, -1 ) )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -2
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEHRD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Set elements 1:ILO-1 and IHI:N-1 of TAU to zero
+*
+ DO 10 I = 1, ILO - 1
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ DO 20 I = MAX( 1, IHI ), N - 1
+ TAU( I ) = ZERO
+ 20 CONTINUE
+*
+* Quick return if possible
+*
+ NH = IHI - ILO + 1
+ IF( NH.LE.1 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+* Determine the block size
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'ZGEHRD', ' ', N, ILO, IHI, -1 ) )
+ NBMIN = 2
+ IWS = 1
+ IF( NB.GT.1 .AND. NB.LT.NH ) THEN
+*
+* Determine when to cross over from blocked to unblocked code
+* (last block is always handled by unblocked code)
+*
+ NX = MAX( NB, ILAENV( 3, 'ZGEHRD', ' ', N, ILO, IHI, -1 ) )
+ IF( NX.LT.NH ) THEN
+*
+* Determine if workspace is large enough for blocked code
+*
+ IWS = N*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: determine the
+* minimum value of NB, and reduce NB or force use of
+* unblocked code
+*
+ NBMIN = MAX( 2, ILAENV( 2, 'ZGEHRD', ' ', N, ILO, IHI,
+ $ -1 ) )
+ IF( LWORK.GE.N*NBMIN ) THEN
+ NB = LWORK / N
+ ELSE
+ NB = 1
+ END IF
+ END IF
+ END IF
+ END IF
+ LDWORK = N
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.NH ) THEN
+*
+* Use unblocked code below
+*
+ I = ILO
+*
+ ELSE
+*
+* Use blocked code
+*
+ DO 40 I = ILO, IHI - 1 - NX, NB
+ IB = MIN( NB, IHI-I )
+*
+* Reduce columns i:i+ib-1 to Hessenberg form, returning the
+* matrices V and T of the block reflector H = I - V*T*V'
+* which performs the reduction, and also the matrix Y = A*V*T
+*
+ CALL ZLAHR2( IHI, I, IB, A( 1, I ), LDA, TAU( I ), T, LDT,
+ $ WORK, LDWORK )
+*
+* Apply the block reflector H to A(1:ihi,i+ib:ihi) from the
+* right, computing A := A - Y * V'. V(i+ib,ib-1) must be set
+* to 1
+*
+ EI = A( I+IB, I+IB-1 )
+ A( I+IB, I+IB-1 ) = ONE
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose',
+ $ IHI, IHI-I-IB+1,
+ $ IB, -ONE, WORK, LDWORK, A( I+IB, I ), LDA, ONE,
+ $ A( 1, I+IB ), LDA )
+ A( I+IB, I+IB-1 ) = EI
+*
+* Apply the block reflector H to A(1:i,i+1:i+ib-1) from the
+* right
+*
+ CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose',
+ $ 'Unit', I, IB-1,
+ $ ONE, A( I+1, I ), LDA, WORK, LDWORK )
+ DO 30 J = 0, IB-2
+ CALL ZAXPY( I, -ONE, WORK( LDWORK*J+1 ), 1,
+ $ A( 1, I+J+1 ), 1 )
+ 30 CONTINUE
+*
+* Apply the block reflector H to A(i+1:ihi,i+ib:n) from the
+* left
+*
+ CALL ZLARFB( 'Left', 'Conjugate transpose', 'Forward',
+ $ 'Columnwise',
+ $ IHI-I, N-I-IB+1, IB, A( I+1, I ), LDA, T, LDT,
+ $ A( I+1, I+IB ), LDA, WORK, LDWORK )
+ 40 CONTINUE
+ END IF
+*
+* Use unblocked code to reduce the rest of the matrix
+*
+ CALL ZGEHD2( N, I, IHI, A, LDA, TAU, WORK, IINFO )
+ WORK( 1 ) = IWS
+*
+ RETURN
+*
+* End of ZGEHRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgelq2.f b/2.3-1/src/fortran/lapack/zgelq2.f
new file mode 100644
index 00000000..dc387af0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgelq2.f
@@ -0,0 +1,123 @@
+ SUBROUTINE ZGELQ2( M, N, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGELQ2 computes an LQ factorization of a complex m by n matrix A:
+* A = L * Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, the elements on and below the diagonal of the array
+* contain the m by min(m,n) lower trapezoidal matrix L (L is
+* lower triangular if m <= n); the elements above the diagonal,
+* with the array TAU, represent the unitary matrix Q as a
+* product of elementary reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (M)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(k)' . . . H(2)' H(1)', where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i-1) = 0 and v(i) = 1; conjg(v(i+1:n)) is stored on exit in
+* A(i,i+1:n), and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLACGV, ZLARF, ZLARFG
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGELQ2', -INFO )
+ RETURN
+ END IF
+*
+ K = MIN( M, N )
+*
+ DO 10 I = 1, K
+*
+* Generate elementary reflector H(i) to annihilate A(i,i+1:n)
+*
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+ ALPHA = A( I, I )
+ CALL ZLARFG( N-I+1, ALPHA, A( I, MIN( I+1, N ) ), LDA,
+ $ TAU( I ) )
+ IF( I.LT.M ) THEN
+*
+* Apply H(i) to A(i+1:m,i:n) from the right
+*
+ A( I, I ) = ONE
+ CALL ZLARF( 'Right', M-I, N-I+1, A( I, I ), LDA, TAU( I ),
+ $ A( I+1, I ), LDA, WORK )
+ END IF
+ A( I, I ) = ALPHA
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+ 10 CONTINUE
+ RETURN
+*
+* End of ZGELQ2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgelqf.f b/2.3-1/src/fortran/lapack/zgelqf.f
new file mode 100644
index 00000000..5dac50dc
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgelqf.f
@@ -0,0 +1,195 @@
+ SUBROUTINE ZGELQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGELQF computes an LQ factorization of a complex M-by-N matrix A:
+* A = L * Q.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the elements on and below the diagonal of the array
+* contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+* lower triangular if m <= n); the elements above the diagonal,
+* with the array TAU, represent the unitary matrix Q as a
+* product of elementary reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(k)' . . . H(2)' H(1)', where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i-1) = 0 and v(i) = 1; conjg(v(i+1:n)) is stored on exit in
+* A(i,i+1:n), and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGELQ2, ZLARFB, ZLARFT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ LWKOPT = M*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGELQF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ K = MIN( M, N )
+ IF( K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'ZGELQF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZGELQF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code initially
+*
+ DO 10 I = 1, K - NX, NB
+ IB = MIN( K-I+1, NB )
+*
+* Compute the LQ factorization of the current block
+* A(i:i+ib-1,i:n)
+*
+ CALL ZGELQ2( IB, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+ IF( I+IB.LE.M ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL ZLARFT( 'Forward', 'Rowwise', N-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(i+ib:m,i:n) from the right
+*
+ CALL ZLARFB( 'Right', 'No transpose', 'Forward',
+ $ 'Rowwise', M-I-IB+1, N-I+1, IB, A( I, I ),
+ $ LDA, WORK, LDWORK, A( I+IB, I ), LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+ 10 CONTINUE
+ ELSE
+ I = 1
+ END IF
+*
+* Use unblocked code to factor the last or only block.
+*
+ IF( I.LE.K )
+ $ CALL ZGELQ2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZGELQF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgelsy.f b/2.3-1/src/fortran/lapack/zgelsy.f
new file mode 100644
index 00000000..95aece58
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgelsy.f
@@ -0,0 +1,385 @@
+ SUBROUTINE ZGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
+ $ WORK, LWORK, RWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGELSY computes the minimum-norm solution to a complex linear least
+* squares problem:
+* minimize || A * X - B ||
+* using a complete orthogonal factorization of A. A is an M-by-N
+* matrix which may be rank-deficient.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+* matrix X.
+*
+* The routine first computes a QR factorization with column pivoting:
+* A * P = Q * [ R11 R12 ]
+* [ 0 R22 ]
+* with R11 defined as the largest leading submatrix whose estimated
+* condition number is less than 1/RCOND. The order of R11, RANK,
+* is the effective rank of A.
+*
+* Then, R22 is considered to be negligible, and R12 is annihilated
+* by unitary transformations from the right, arriving at the
+* complete orthogonal factorization:
+* A * P = Q * [ T11 0 ] * Z
+* [ 0 0 ]
+* The minimum-norm solution is then
+* X = P * Z' [ inv(T11)*Q1'*B ]
+* [ 0 ]
+* where Q1 consists of the first RANK columns of Q.
+*
+* This routine is basically identical to the original xGELSX except
+* three differences:
+* o The permutation of matrix B (the right hand side) is faster and
+* more simple.
+* o The call to the subroutine xGEQPF has been substituted by the
+* the call to the subroutine xGEQP3. This subroutine is a Blas-3
+* version of the QR factorization with column pivoting.
+* o Matrix B (the right hand side) is updated with Blas-3.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of
+* columns of matrices B and X. NRHS >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, A has been overwritten by details of its
+* complete orthogonal factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB,NRHS)
+* On entry, the M-by-NRHS right hand side matrix B.
+* On exit, the N-by-NRHS solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M,N).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of AP, otherwise column i is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* RCOND (input) DOUBLE PRECISION
+* RCOND is used to determine the effective rank of A, which
+* is defined as the order of the largest leading triangular
+* submatrix R11 in the QR factorization with pivoting of A,
+* whose estimated condition number < 1/RCOND.
+*
+* RANK (output) INTEGER
+* The effective rank of A, i.e., the order of the submatrix
+* R11. This is the same as the order of the submatrix T11
+* in the complete orthogonal factorization of A.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* The unblocked strategy requires that:
+* LWORK >= MN + MAX( 2*MN, N+1, MN+NRHS )
+* where MN = min(M,N).
+* The block algorithm requires that:
+* LWORK >= MN + MAX( 2*MN, NB*(N+1), MN+MN*NB, MN+NB*NRHS )
+* where NB is an upper bound on the blocksize returned
+* by ILAENV for the routines ZGEQP3, ZTZRZF, CTZRQF, ZUNMQR,
+* and ZUNMRZ.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+* E. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IMAX, IMIN
+ PARAMETER ( IMAX = 1, IMIN = 2 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IASCL, IBSCL, ISMAX, ISMIN, J, LWKOPT, MN,
+ $ NB, NB1, NB2, NB3, NB4
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMAX, SMAXPR, SMIN, SMINPR,
+ $ SMLNUM, WSIZE
+ COMPLEX*16 C1, C2, S1, S2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZCOPY, ZGEQP3, ZLAIC1, ZLASCL,
+ $ ZLASET, ZTRSM, ZTZRZF, ZUNMQR, ZUNMRZ
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, ZLANGE
+ EXTERNAL ILAENV, DLAMCH, ZLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M, N )
+ ISMIN = MN + 1
+ ISMAX = 2*MN + 1
+*
+* Test the input arguments.
+*
+ INFO = 0
+ NB1 = ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ NB2 = ILAENV( 1, 'ZGERQF', ' ', M, N, -1, -1 )
+ NB3 = ILAENV( 1, 'ZUNMQR', ' ', M, N, NRHS, -1 )
+ NB4 = ILAENV( 1, 'ZUNMRQ', ' ', M, N, NRHS, -1 )
+ NB = MAX( NB1, NB2, NB3, NB4 )
+ LWKOPT = MAX( 1, MN+2*N+NB*( N+1 ), 2*MN+NB*NRHS )
+ WORK( 1 ) = DCMPLX( LWKOPT )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+ INFO = -7
+ ELSE IF( LWORK.LT.( MN+MAX( 2*MN, N+1, MN+NRHS ) ) .AND. .NOT.
+ $ LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGELSY', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( MIN( M, N, NRHS ).EQ.0 ) THEN
+ RANK = 0
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', M, N, A, LDA, RWORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL ZLASET( 'F', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB )
+ RANK = 0
+ GO TO 70
+ END IF
+*
+ BNRM = ZLANGE( 'M', M, NRHS, B, LDB, RWORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL ZLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL ZLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 2
+ END IF
+*
+* Compute QR factorization with column pivoting of A:
+* A * P = Q * R
+*
+ CALL ZGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
+ $ LWORK-MN, RWORK, INFO )
+ WSIZE = MN + DBLE( WORK( MN+1 ) )
+*
+* complex workspace: MN+NB*(N+1). real workspace 2*N.
+* Details of Householder rotations stored in WORK(1:MN).
+*
+* Determine RANK using incremental condition estimation
+*
+ WORK( ISMIN ) = CONE
+ WORK( ISMAX ) = CONE
+ SMAX = ABS( A( 1, 1 ) )
+ SMIN = SMAX
+ IF( ABS( A( 1, 1 ) ).EQ.ZERO ) THEN
+ RANK = 0
+ CALL ZLASET( 'F', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB )
+ GO TO 70
+ ELSE
+ RANK = 1
+ END IF
+*
+ 10 CONTINUE
+ IF( RANK.LT.MN ) THEN
+ I = RANK + 1
+ CALL ZLAIC1( IMIN, RANK, WORK( ISMIN ), SMIN, A( 1, I ),
+ $ A( I, I ), SMINPR, S1, C1 )
+ CALL ZLAIC1( IMAX, RANK, WORK( ISMAX ), SMAX, A( 1, I ),
+ $ A( I, I ), SMAXPR, S2, C2 )
+*
+ IF( SMAXPR*RCOND.LE.SMINPR ) THEN
+ DO 20 I = 1, RANK
+ WORK( ISMIN+I-1 ) = S1*WORK( ISMIN+I-1 )
+ WORK( ISMAX+I-1 ) = S2*WORK( ISMAX+I-1 )
+ 20 CONTINUE
+ WORK( ISMIN+RANK ) = C1
+ WORK( ISMAX+RANK ) = C2
+ SMIN = SMINPR
+ SMAX = SMAXPR
+ RANK = RANK + 1
+ GO TO 10
+ END IF
+ END IF
+*
+* complex workspace: 3*MN.
+*
+* Logically partition R = [ R11 R12 ]
+* [ 0 R22 ]
+* where R11 = R(1:RANK,1:RANK)
+*
+* [R11,R12] = [ T11, 0 ] * Y
+*
+c IF( RANK.LT.N )
+c $ CALL ZTZRZF( RANK, N, A, LDA, WORK( MN+1 ), WORK( 2*MN+1 ),
+c $ LWORK-2*MN, INFO )
+*
+* complex workspace: 2*MN.
+* Details of Householder rotations stored in WORK(MN+1:2*MN)
+*
+* B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+ CALL ZUNMQR( 'Left', 'Conjugate transpose', M, NRHS, MN, A, LDA,
+ $ WORK( 1 ), B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+ WSIZE = MAX( WSIZE, 2*MN+DBLE( WORK( 2*MN+1 ) ) )
+*
+* complex workspace: 2*MN+NB*NRHS.
+*
+* B(1:RANK,1:NRHS) := inv(T11) * B(1:RANK,1:NRHS)
+*
+ CALL ZTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', RANK,
+ $ NRHS, CONE, A, LDA, B, LDB )
+*
+ DO 40 J = 1, NRHS
+ DO 30 I = RANK + 1, N
+ B( I, J ) = CZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* B(1:N,1:NRHS) := Y' * B(1:N,1:NRHS)
+*
+c IF( RANK.LT.N ) THEN
+c CALL ZUNMRZ( 'Left', 'Conjugate transpose', N, NRHS, RANK,
+c $ N-RANK, A, LDA, WORK( MN+1 ), B, LDB,
+c $ WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+c END IF
+*
+* complex workspace: 2*MN+NRHS.
+*
+* B(1:N,1:NRHS) := P * B(1:N,1:NRHS)
+*
+ DO 60 J = 1, NRHS
+ DO 50 I = 1, N
+ WORK( JPVT( I ) ) = B( I, J )
+ 50 CONTINUE
+ CALL ZCOPY( N, WORK( 1 ), 1, B( 1, J ), 1 )
+ 60 CONTINUE
+*
+* complex workspace: N.
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+ CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+ CALL ZLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+ CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+ CALL ZLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+ CALL ZLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+ CALL ZLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+ END IF
+*
+ 70 CONTINUE
+ WORK( 1 ) = DCMPLX( LWKOPT )
+*
+ RETURN
+*
+* End of ZGELSY
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgeqp3.f b/2.3-1/src/fortran/lapack/zgeqp3.f
new file mode 100644
index 00000000..32bf3367
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgeqp3.f
@@ -0,0 +1,293 @@
+ SUBROUTINE ZGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, RWORK,
+ $ INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEQP3 computes a QR factorization with column pivoting of a
+* matrix A: A*P = Q*R using Level 3 BLAS.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the upper triangle of the array contains the
+* min(M,N)-by-N upper trapezoidal matrix R; the elements below
+* the diagonal, together with the array TAU, represent the
+* unitary matrix Q as a product of min(M,N) elementary
+* reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(J).ne.0, the J-th column of A is permuted
+* to the front of A*P (a leading column); if JPVT(J)=0,
+* the J-th column of A is a free column.
+* On exit, if JPVT(J)=K, then the J-th column of A*P was the
+* the K-th column of A.
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO=0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= N+1.
+* For optimal performance LWORK >= ( N+1 )*NB, where NB
+* is the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a real/complex scalar, and v is a real/complex vector
+* with v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in
+* A(i+1:m,i), and tau in TAU(i).
+*
+* Based on contributions by
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* X. Sun, Computer Science Dept., Duke University, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER INB, INBMIN, IXOVER
+ PARAMETER ( INB = 1, INBMIN = 2, IXOVER = 3 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER FJB, IWS, J, JB, LWKOPT, MINMN, MINWS, NA, NB,
+ $ NBMIN, NFXD, NX, SM, SMINMN, SN, TOPBMN
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEQRF, ZLAQP2, ZLAQPS, ZSWAP, ZUNMQR
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DZNRM2
+ EXTERNAL ILAENV, DZNRM2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC INT, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test input arguments
+* ====================
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ MINMN = MIN( M, N )
+ IF( MINMN.EQ.0 ) THEN
+ IWS = 1
+ LWKOPT = 1
+ ELSE
+ IWS = N + 1
+ NB = ILAENV( INB, 'ZGEQRF', ' ', M, N, -1, -1 )
+ LWKOPT = ( N + 1 )*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( ( LWORK.LT.IWS ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEQP3', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( MINMN.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+* Move initial columns up front.
+*
+ NFXD = 1
+ DO 10 J = 1, N
+ IF( JPVT( J ).NE.0 ) THEN
+ IF( J.NE.NFXD ) THEN
+ CALL ZSWAP( M, A( 1, J ), 1, A( 1, NFXD ), 1 )
+ JPVT( J ) = JPVT( NFXD )
+ JPVT( NFXD ) = J
+ ELSE
+ JPVT( J ) = J
+ END IF
+ NFXD = NFXD + 1
+ ELSE
+ JPVT( J ) = J
+ END IF
+ 10 CONTINUE
+ NFXD = NFXD - 1
+*
+* Factorize fixed columns
+* =======================
+*
+* Compute the QR factorization of fixed columns and update
+* remaining columns.
+*
+ IF( NFXD.GT.0 ) THEN
+ NA = MIN( M, NFXD )
+*CC CALL ZGEQR2( M, NA, A, LDA, TAU, WORK, INFO )
+ CALL ZGEQRF( M, NA, A, LDA, TAU, WORK, LWORK, INFO )
+ IWS = MAX( IWS, INT( WORK( 1 ) ) )
+ IF( NA.LT.N ) THEN
+*CC CALL ZUNM2R( 'Left', 'Conjugate Transpose', M, N-NA,
+*CC $ NA, A, LDA, TAU, A( 1, NA+1 ), LDA, WORK,
+*CC $ INFO )
+ CALL ZUNMQR( 'Left', 'Conjugate Transpose', M, N-NA, NA, A,
+ $ LDA, TAU, A( 1, NA+1 ), LDA, WORK, LWORK,
+ $ INFO )
+ IWS = MAX( IWS, INT( WORK( 1 ) ) )
+ END IF
+ END IF
+*
+* Factorize free columns
+* ======================
+*
+ IF( NFXD.LT.MINMN ) THEN
+*
+ SM = M - NFXD
+ SN = N - NFXD
+ SMINMN = MINMN - NFXD
+*
+* Determine the block size.
+*
+ NB = ILAENV( INB, 'ZGEQRF', ' ', SM, SN, -1, -1 )
+ NBMIN = 2
+ NX = 0
+*
+ IF( ( NB.GT.1 ) .AND. ( NB.LT.SMINMN ) ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( IXOVER, 'ZGEQRF', ' ', SM, SN, -1,
+ $ -1 ) )
+*
+*
+ IF( NX.LT.SMINMN ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ MINWS = ( SN+1 )*NB
+ IWS = MAX( IWS, MINWS )
+ IF( LWORK.LT.MINWS ) THEN
+*
+* Not enough workspace to use optimal NB: Reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / ( SN+1 )
+ NBMIN = MAX( 2, ILAENV( INBMIN, 'ZGEQRF', ' ', SM, SN,
+ $ -1, -1 ) )
+*
+*
+ END IF
+ END IF
+ END IF
+*
+* Initialize partial column norms. The first N elements of work
+* store the exact column norms.
+*
+ DO 20 J = NFXD + 1, N
+ RWORK( J ) = DZNRM2( SM, A( NFXD+1, J ), 1 )
+ RWORK( N+J ) = RWORK( J )
+ 20 CONTINUE
+*
+ IF( ( NB.GE.NBMIN ) .AND. ( NB.LT.SMINMN ) .AND.
+ $ ( NX.LT.SMINMN ) ) THEN
+*
+* Use blocked code initially.
+*
+ J = NFXD + 1
+*
+* Compute factorization: while loop.
+*
+*
+ TOPBMN = MINMN - NX
+ 30 CONTINUE
+ IF( J.LE.TOPBMN ) THEN
+ JB = MIN( NB, TOPBMN-J+1 )
+*
+* Factorize JB columns among columns J:N.
+*
+ CALL ZLAQPS( M, N-J+1, J-1, JB, FJB, A( 1, J ), LDA,
+ $ JPVT( J ), TAU( J ), RWORK( J ),
+ $ RWORK( N+J ), WORK( 1 ), WORK( JB+1 ),
+ $ N-J+1 )
+*
+ J = J + FJB
+ GO TO 30
+ END IF
+ ELSE
+ J = NFXD + 1
+ END IF
+*
+* Use unblocked code to factor the last or only block.
+*
+*
+ IF( J.LE.MINMN )
+ $ CALL ZLAQP2( M, N-J+1, J-1, A( 1, J ), LDA, JPVT( J ),
+ $ TAU( J ), RWORK( J ), RWORK( N+J ), WORK( 1 ) )
+*
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZGEQP3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgeqpf.f b/2.3-1/src/fortran/lapack/zgeqpf.f
new file mode 100644
index 00000000..6d4f86f0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgeqpf.f
@@ -0,0 +1,234 @@
+ SUBROUTINE ZGEQPF( M, N, A, LDA, JPVT, TAU, WORK, RWORK, INFO )
+*
+* -- LAPACK deprecated driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* This routine is deprecated and has been replaced by routine ZGEQP3.
+*
+* ZGEQPF computes a QR factorization with column pivoting of a
+* complex M-by-N matrix A: A*P = Q*R.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the upper triangle of the array contains the
+* min(M,N)-by-N upper triangular matrix R; the elements
+* below the diagonal, together with the array TAU,
+* represent the unitary matrix Q as a product of
+* min(m,n) elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of A*P (a leading column); if JPVT(i) = 0,
+* the i-th column of A is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N)
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(n)
+*
+* Each H(i) has the form
+*
+* H = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i).
+*
+* The matrix P is represented in jpvt as follows: If
+* jpvt(j) = i
+* then the jth column of P is the ith canonical unit vector.
+*
+* Partial column norm updating strategy modified by
+* Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+* University of Zagreb, Croatia.
+* June 2006.
+* For more details see LAPACK Working Note 176.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ITEMP, J, MA, MN, PVT
+ DOUBLE PRECISION TEMP, TEMP2, TOL3Z
+ COMPLEX*16 AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEQR2, ZLARF, ZLARFG, ZSWAP, ZUNM2R
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DCMPLX, DCONJG, MAX, MIN, SQRT
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DZNRM2
+ EXTERNAL IDAMAX, DLAMCH, DZNRM2
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEQPF', -INFO )
+ RETURN
+ END IF
+*
+ MN = MIN( M, N )
+ TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+* Move initial columns up front
+*
+ ITEMP = 1
+ DO 10 I = 1, N
+ IF( JPVT( I ).NE.0 ) THEN
+ IF( I.NE.ITEMP ) THEN
+ CALL ZSWAP( M, A( 1, I ), 1, A( 1, ITEMP ), 1 )
+ JPVT( I ) = JPVT( ITEMP )
+ JPVT( ITEMP ) = I
+ ELSE
+ JPVT( I ) = I
+ END IF
+ ITEMP = ITEMP + 1
+ ELSE
+ JPVT( I ) = I
+ END IF
+ 10 CONTINUE
+ ITEMP = ITEMP - 1
+*
+* Compute the QR factorization and update remaining columns
+*
+ IF( ITEMP.GT.0 ) THEN
+ MA = MIN( ITEMP, M )
+ CALL ZGEQR2( M, MA, A, LDA, TAU, WORK, INFO )
+ IF( MA.LT.N ) THEN
+ CALL ZUNM2R( 'Left', 'Conjugate transpose', M, N-MA, MA, A,
+ $ LDA, TAU, A( 1, MA+1 ), LDA, WORK, INFO )
+ END IF
+ END IF
+*
+ IF( ITEMP.LT.MN ) THEN
+*
+* Initialize partial column norms. The first n elements of
+* work store the exact column norms.
+*
+ DO 20 I = ITEMP + 1, N
+ RWORK( I ) = DZNRM2( M-ITEMP, A( ITEMP+1, I ), 1 )
+ RWORK( N+I ) = RWORK( I )
+ 20 CONTINUE
+*
+* Compute factorization
+*
+ DO 40 I = ITEMP + 1, MN
+*
+* Determine ith pivot column and swap if necessary
+*
+ PVT = ( I-1 ) + IDAMAX( N-I+1, RWORK( I ), 1 )
+*
+ IF( PVT.NE.I ) THEN
+ CALL ZSWAP( M, A( 1, PVT ), 1, A( 1, I ), 1 )
+ ITEMP = JPVT( PVT )
+ JPVT( PVT ) = JPVT( I )
+ JPVT( I ) = ITEMP
+ RWORK( PVT ) = RWORK( I )
+ RWORK( N+PVT ) = RWORK( N+I )
+ END IF
+*
+* Generate elementary reflector H(i)
+*
+ AII = A( I, I )
+ CALL ZLARFG( M-I+1, AII, A( MIN( I+1, M ), I ), 1,
+ $ TAU( I ) )
+ A( I, I ) = AII
+*
+ IF( I.LT.N ) THEN
+*
+* Apply H(i) to A(i:m,i+1:n) from the left
+*
+ AII = A( I, I )
+ A( I, I ) = DCMPLX( ONE )
+ CALL ZLARF( 'Left', M-I+1, N-I, A( I, I ), 1,
+ $ DCONJG( TAU( I ) ), A( I, I+1 ), LDA, WORK )
+ A( I, I ) = AII
+ END IF
+*
+* Update partial column norms
+*
+ DO 30 J = I + 1, N
+ IF( RWORK( J ).NE.ZERO ) THEN
+*
+* NOTE: The following 4 lines follow from the analysis in
+* Lapack Working Note 176.
+*
+ TEMP = ABS( A( I, J ) ) / RWORK( J )
+ TEMP = MAX( ZERO, ( ONE+TEMP )*( ONE-TEMP ) )
+ TEMP2 = TEMP*( RWORK( J ) / RWORK( N+J ) )**2
+ IF( TEMP2 .LE. TOL3Z ) THEN
+ IF( M-I.GT.0 ) THEN
+ RWORK( J ) = DZNRM2( M-I, A( I+1, J ), 1 )
+ RWORK( N+J ) = RWORK( J )
+ ELSE
+ RWORK( J ) = ZERO
+ RWORK( N+J ) = ZERO
+ END IF
+ ELSE
+ RWORK( J ) = RWORK( J )*SQRT( TEMP )
+ END IF
+ END IF
+ 30 CONTINUE
+*
+ 40 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZGEQPF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgeqr2.f b/2.3-1/src/fortran/lapack/zgeqr2.f
new file mode 100644
index 00000000..962ab588
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgeqr2.f
@@ -0,0 +1,121 @@
+ SUBROUTINE ZGEQR2( M, N, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEQR2 computes a QR factorization of a complex m by n matrix A:
+* A = Q * R.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, the elements on and above the diagonal of the array
+* contain the min(m,n) by n upper trapezoidal matrix R (R is
+* upper triangular if m >= n); the elements below the diagonal,
+* with the array TAU, represent the unitary matrix Q as a
+* product of elementary reflectors (see Further Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i),
+* and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, K
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARF, ZLARFG
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEQR2', -INFO )
+ RETURN
+ END IF
+*
+ K = MIN( M, N )
+*
+ DO 10 I = 1, K
+*
+* Generate elementary reflector H(i) to annihilate A(i+1:m,i)
+*
+ CALL ZLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+ $ TAU( I ) )
+ IF( I.LT.N ) THEN
+*
+* Apply H(i)' to A(i:m,i+1:n) from the left
+*
+ ALPHA = A( I, I )
+ A( I, I ) = ONE
+ CALL ZLARF( 'Left', M-I+1, N-I, A( I, I ), 1,
+ $ DCONJG( TAU( I ) ), A( I, I+1 ), LDA, WORK )
+ A( I, I ) = ALPHA
+ END IF
+ 10 CONTINUE
+ RETURN
+*
+* End of ZGEQR2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgeqrf.f b/2.3-1/src/fortran/lapack/zgeqrf.f
new file mode 100644
index 00000000..d11c9245
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgeqrf.f
@@ -0,0 +1,196 @@
+ SUBROUTINE ZGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGEQRF computes a QR factorization of a complex M-by-N matrix A:
+* A = Q * R.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the elements on and above the diagonal of the array
+* contain the min(M,N)-by-N upper trapezoidal matrix R (R is
+* upper triangular if m >= n); the elements below the diagonal,
+* with the array TAU, represent the unitary matrix Q as a
+* product of min(m,n) elementary reflectors (see Further
+* Details).
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i),
+* and tau in TAU(i).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEQR2, ZLARFB, ZLARFT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGEQRF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ K = MIN( M, N )
+ IF( K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'ZGEQRF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZGEQRF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code initially
+*
+ DO 10 I = 1, K - NX, NB
+ IB = MIN( K-I+1, NB )
+*
+* Compute the QR factorization of the current block
+* A(i:m,i:i+ib-1)
+*
+ CALL ZGEQR2( M-I+1, IB, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+ IF( I+IB.LE.N ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL ZLARFT( 'Forward', 'Columnwise', M-I+1, IB,
+ $ A( I, I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H' to A(i:m,i+ib:n) from the left
+*
+ CALL ZLARFB( 'Left', 'Conjugate transpose', 'Forward',
+ $ 'Columnwise', M-I+1, N-I-IB+1, IB,
+ $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ),
+ $ LDA, WORK( IB+1 ), LDWORK )
+ END IF
+ 10 CONTINUE
+ ELSE
+ I = 1
+ END IF
+*
+* Use unblocked code to factor the last or only block.
+*
+ IF( I.LE.K )
+ $ CALL ZGEQR2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZGEQRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgesc2.f b/2.3-1/src/fortran/lapack/zgesc2.f
new file mode 100644
index 00000000..d4d51337
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgesc2.f
@@ -0,0 +1,133 @@
+ SUBROUTINE ZGESC2( N, A, LDA, RHS, IPIV, JPIV, SCALE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, N
+ DOUBLE PRECISION SCALE
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), JPIV( * )
+ COMPLEX*16 A( LDA, * ), RHS( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGESC2 solves a system of linear equations
+*
+* A * X = scale* RHS
+*
+* with a general N-by-N matrix A using the LU factorization with
+* complete pivoting computed by ZGETC2.
+*
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of columns of the matrix A.
+*
+* A (input) COMPLEX*16 array, dimension (LDA, N)
+* On entry, the LU part of the factorization of the n-by-n
+* matrix A computed by ZGETC2: A = P * L * U * Q
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1, N).
+*
+* RHS (input/output) COMPLEX*16 array, dimension N.
+* On entry, the right hand side vector b.
+* On exit, the solution vector X.
+*
+* IPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= i <= N, row i of the
+* matrix has been interchanged with row IPIV(i).
+*
+* JPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= j <= N, column j of the
+* matrix has been interchanged with column JPIV(j).
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit, SCALE contains the scale factor. SCALE is chosen
+* 0 <= SCALE <= 1 to prevent owerflow in the solution.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION BIGNUM, EPS, SMLNUM
+ COMPLEX*16 TEMP
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLASWP, ZSCAL
+* ..
+* .. External Functions ..
+ INTEGER IZAMAX
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL IZAMAX, DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX
+* ..
+* .. Executable Statements ..
+*
+* Set constant to control overflow
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Apply permutations IPIV to RHS
+*
+ CALL ZLASWP( 1, RHS, LDA, 1, N-1, IPIV, 1 )
+*
+* Solve for L part
+*
+ DO 20 I = 1, N - 1
+ DO 10 J = I + 1, N
+ RHS( J ) = RHS( J ) - A( J, I )*RHS( I )
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* Solve for U part
+*
+ SCALE = ONE
+*
+* Check for scaling
+*
+ I = IZAMAX( N, RHS, 1 )
+ IF( TWO*SMLNUM*ABS( RHS( I ) ).GT.ABS( A( N, N ) ) ) THEN
+ TEMP = DCMPLX( ONE / TWO, ZERO ) / ABS( RHS( I ) )
+ CALL ZSCAL( N, TEMP, RHS( 1 ), 1 )
+ SCALE = SCALE*DBLE( TEMP )
+ END IF
+ DO 40 I = N, 1, -1
+ TEMP = DCMPLX( ONE, ZERO ) / A( I, I )
+ RHS( I ) = RHS( I )*TEMP
+ DO 30 J = I + 1, N
+ RHS( I ) = RHS( I ) - RHS( J )*( A( I, J )*TEMP )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* Apply permutations JPIV to the solution (RHS)
+*
+ CALL ZLASWP( 1, RHS, LDA, 1, N-1, JPIV, -1 )
+ RETURN
+*
+* End of ZGESC2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgesvd.f b/2.3-1/src/fortran/lapack/zgesvd.f
new file mode 100644
index 00000000..7b238d8b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgesvd.f
@@ -0,0 +1,3602 @@
+ SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,
+ $ WORK, LWORK, RWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBU, JOBVT
+ INTEGER INFO, LDA, LDU, LDVT, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION RWORK( * ), S( * )
+ COMPLEX*16 A( LDA, * ), U( LDU, * ), VT( LDVT, * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGESVD computes the singular value decomposition (SVD) of a complex
+* M-by-N matrix A, optionally computing the left and/or right singular
+* vectors. The SVD is written
+*
+* A = U * SIGMA * conjugate-transpose(V)
+*
+* where SIGMA is an M-by-N matrix which is zero except for its
+* min(m,n) diagonal elements, U is an M-by-M unitary matrix, and
+* V is an N-by-N unitary matrix. The diagonal elements of SIGMA
+* are the singular values of A; they are real and non-negative, and
+* are returned in descending order. The first min(m,n) columns of
+* U and V are the left and right singular vectors of A.
+*
+* Note that the routine returns V**H, not V.
+*
+* Arguments
+* =========
+*
+* JOBU (input) CHARACTER*1
+* Specifies options for computing all or part of the matrix U:
+* = 'A': all M columns of U are returned in array U:
+* = 'S': the first min(m,n) columns of U (the left singular
+* vectors) are returned in the array U;
+* = 'O': the first min(m,n) columns of U (the left singular
+* vectors) are overwritten on the array A;
+* = 'N': no columns of U (no left singular vectors) are
+* computed.
+*
+* JOBVT (input) CHARACTER*1
+* Specifies options for computing all or part of the matrix
+* V**H:
+* = 'A': all N rows of V**H are returned in the array VT;
+* = 'S': the first min(m,n) rows of V**H (the right singular
+* vectors) are returned in the array VT;
+* = 'O': the first min(m,n) rows of V**H (the right singular
+* vectors) are overwritten on the array A;
+* = 'N': no rows of V**H (no right singular vectors) are
+* computed.
+*
+* JOBVT and JOBU cannot both be 'O'.
+*
+* M (input) INTEGER
+* The number of rows of the input matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the input matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit,
+* if JOBU = 'O', A is overwritten with the first min(m,n)
+* columns of U (the left singular vectors,
+* stored columnwise);
+* if JOBVT = 'O', A is overwritten with the first min(m,n)
+* rows of V**H (the right singular vectors,
+* stored rowwise);
+* if JOBU .ne. 'O' and JOBVT .ne. 'O', the contents of A
+* are destroyed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* S (output) DOUBLE PRECISION array, dimension (min(M,N))
+* The singular values of A, sorted so that S(i) >= S(i+1).
+*
+* U (output) COMPLEX*16 array, dimension (LDU,UCOL)
+* (LDU,M) if JOBU = 'A' or (LDU,min(M,N)) if JOBU = 'S'.
+* If JOBU = 'A', U contains the M-by-M unitary matrix U;
+* if JOBU = 'S', U contains the first min(m,n) columns of U
+* (the left singular vectors, stored columnwise);
+* if JOBU = 'N' or 'O', U is not referenced.
+*
+* LDU (input) INTEGER
+* The leading dimension of the array U. LDU >= 1; if
+* JOBU = 'S' or 'A', LDU >= M.
+*
+* VT (output) COMPLEX*16 array, dimension (LDVT,N)
+* If JOBVT = 'A', VT contains the N-by-N unitary matrix
+* V**H;
+* if JOBVT = 'S', VT contains the first min(m,n) rows of
+* V**H (the right singular vectors, stored rowwise);
+* if JOBVT = 'N' or 'O', VT is not referenced.
+*
+* LDVT (input) INTEGER
+* The leading dimension of the array VT. LDVT >= 1; if
+* JOBVT = 'A', LDVT >= N; if JOBVT = 'S', LDVT >= min(M,N).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* LWORK >= MAX(1,2*MIN(M,N)+MAX(M,N)).
+* For good performance, LWORK should generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (5*min(M,N))
+* On exit, if INFO > 0, RWORK(1:MIN(M,N)-1) contains the
+* unconverged superdiagonal elements of an upper bidiagonal
+* matrix B whose diagonal is in S (not necessarily sorted).
+* B satisfies A = U * B * VT, so it has the same singular
+* values as A, and singular vectors related by U and VT.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* > 0: if ZBDSQR did not converge, INFO specifies how many
+* superdiagonals of an intermediate bidiagonal form B
+* did not converge to zero. See the description of RWORK
+* above for details.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
+ $ CONE = ( 1.0D0, 0.0D0 ) )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, WNTUA, WNTUAS, WNTUN, WNTUO, WNTUS,
+ $ WNTVA, WNTVAS, WNTVN, WNTVO, WNTVS
+ INTEGER BLK, CHUNK, I, IE, IERR, IR, IRWORK, ISCL,
+ $ ITAU, ITAUP, ITAUQ, IU, IWORK, LDWRKR, LDWRKU,
+ $ MAXWRK, MINMN, MINWRK, MNTHR, NCU, NCVT, NRU,
+ $ NRVT, WRKBL
+ DOUBLE PRECISION ANRM, BIGNUM, EPS, SMLNUM
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION DUM( 1 )
+ COMPLEX*16 CDUM( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLASCL, XERBLA, ZBDSQR, ZGEBRD, ZGELQF, ZGEMM,
+ $ ZGEQRF, ZLACPY, ZLASCL, ZLASET, ZUNGBR, ZUNGLQ,
+ $ ZUNGQR, ZUNMBR
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, ZLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, ZLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ MINMN = MIN( M, N )
+ WNTUA = LSAME( JOBU, 'A' )
+ WNTUS = LSAME( JOBU, 'S' )
+ WNTUAS = WNTUA .OR. WNTUS
+ WNTUO = LSAME( JOBU, 'O' )
+ WNTUN = LSAME( JOBU, 'N' )
+ WNTVA = LSAME( JOBVT, 'A' )
+ WNTVS = LSAME( JOBVT, 'S' )
+ WNTVAS = WNTVA .OR. WNTVS
+ WNTVO = LSAME( JOBVT, 'O' )
+ WNTVN = LSAME( JOBVT, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ IF( .NOT.( WNTUA .OR. WNTUS .OR. WNTUO .OR. WNTUN ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.( WNTVA .OR. WNTVS .OR. WNTVO .OR. WNTVN ) .OR.
+ $ ( WNTVO .AND. WNTUO ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LDU.LT.1 .OR. ( WNTUAS .AND. LDU.LT.M ) ) THEN
+ INFO = -9
+ ELSE IF( LDVT.LT.1 .OR. ( WNTVA .AND. LDVT.LT.N ) .OR.
+ $ ( WNTVS .AND. LDVT.LT.MINMN ) ) THEN
+ INFO = -11
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* CWorkspace refers to complex workspace, and RWorkspace to
+* real workspace. NB refers to the optimal block size for the
+* immediately following subroutine, as returned by ILAENV.)
+*
+ IF( INFO.EQ.0 ) THEN
+ MINWRK = 1
+ MAXWRK = 1
+ IF( M.GE.N .AND. MINMN.GT.0 ) THEN
+*
+* Space needed for ZBDSQR is BDSPAC = 5*N
+*
+ MNTHR = ILAENV( 6, 'ZGESVD', JOBU // JOBVT, M, N, 0, 0 )
+ IF( M.GE.MNTHR ) THEN
+ IF( WNTUN ) THEN
+*
+* Path 1 (M much larger than N, JOBU='N')
+*
+ MAXWRK = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1,
+ $ -1 )
+ MAXWRK = MAX( MAXWRK, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ IF( WNTVO .OR. WNTVAS )
+ $ MAXWRK = MAX( MAXWRK, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MINWRK = 3*N
+ ELSE IF( WNTUO .AND. WNTVN ) THEN
+*
+* Path 2 (M much larger than N, JOBU='O', JOBVT='N')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ MAXWRK = MAX( N*N+WRKBL, N*N+M*N )
+ MINWRK = 2*N + M
+ ELSE IF( WNTUO .AND. WNTVAS ) THEN
+*
+* Path 3 (M much larger than N, JOBU='O', JOBVT='S' or
+* 'A')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = MAX( N*N+WRKBL, N*N+M*N )
+ MINWRK = 2*N + M
+ ELSE IF( WNTUS .AND. WNTVN ) THEN
+*
+* Path 4 (M much larger than N, JOBU='S', JOBVT='N')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ MAXWRK = N*N + WRKBL
+ MINWRK = 2*N + M
+ ELSE IF( WNTUS .AND. WNTVO ) THEN
+*
+* Path 5 (M much larger than N, JOBU='S', JOBVT='O')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = 2*N*N + WRKBL
+ MINWRK = 2*N + M
+ ELSE IF( WNTUS .AND. WNTVAS ) THEN
+*
+* Path 6 (M much larger than N, JOBU='S', JOBVT='S' or
+* 'A')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+N*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = N*N + WRKBL
+ MINWRK = 2*N + M
+ ELSE IF( WNTUA .AND. WNTVN ) THEN
+*
+* Path 7 (M much larger than N, JOBU='A', JOBVT='N')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+M*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ M, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ MAXWRK = N*N + WRKBL
+ MINWRK = 2*N + M
+ ELSE IF( WNTUA .AND. WNTVO ) THEN
+*
+* Path 8 (M much larger than N, JOBU='A', JOBVT='O')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+M*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ M, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = 2*N*N + WRKBL
+ MINWRK = 2*N + M
+ ELSE IF( WNTUA .AND. WNTVAS ) THEN
+*
+* Path 9 (M much larger than N, JOBU='A', JOBVT='S' or
+* 'A')
+*
+ WRKBL = N + N*ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, N+M*ILAENV( 1, 'ZUNGQR', ' ', M,
+ $ M, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+2*N*
+ $ ILAENV( 1, 'ZGEBRD', ' ', N, N, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', N, N, N, -1 ) )
+ WRKBL = MAX( WRKBL, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MAXWRK = N*N + WRKBL
+ MINWRK = 2*N + M
+ END IF
+ ELSE
+*
+* Path 10 (M at least N, but not much larger)
+*
+ MAXWRK = 2*N + ( M+N )*ILAENV( 1, 'ZGEBRD', ' ', M, N,
+ $ -1, -1 )
+ IF( WNTUS .OR. WNTUO )
+ $ MAXWRK = MAX( MAXWRK, 2*N+N*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, N, N, -1 ) )
+ IF( WNTUA )
+ $ MAXWRK = MAX( MAXWRK, 2*N+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, N, -1 ) )
+ IF( .NOT.WNTVN )
+ $ MAXWRK = MAX( MAXWRK, 2*N+( N-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, N, -1 ) )
+ MINWRK = 2*N + M
+ END IF
+ ELSE IF( MINMN.GT.0 ) THEN
+*
+* Space needed for ZBDSQR is BDSPAC = 5*M
+*
+ MNTHR = ILAENV( 6, 'ZGESVD', JOBU // JOBVT, M, N, 0, 0 )
+ IF( N.GE.MNTHR ) THEN
+ IF( WNTVN ) THEN
+*
+* Path 1t(N much larger than M, JOBVT='N')
+*
+ MAXWRK = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1,
+ $ -1 )
+ MAXWRK = MAX( MAXWRK, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ IF( WNTUO .OR. WNTUAS )
+ $ MAXWRK = MAX( MAXWRK, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MINWRK = 3*M
+ ELSE IF( WNTVO .AND. WNTUN ) THEN
+*
+* Path 2t(N much larger than M, JOBU='N', JOBVT='O')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'ZUNGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ MAXWRK = MAX( M*M+WRKBL, M*M+M*N )
+ MINWRK = 2*M + N
+ ELSE IF( WNTVO .AND. WNTUAS ) THEN
+*
+* Path 3t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='O')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'ZUNGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = MAX( M*M+WRKBL, M*M+M*N )
+ MINWRK = 2*M + N
+ ELSE IF( WNTVS .AND. WNTUN ) THEN
+*
+* Path 4t(N much larger than M, JOBU='N', JOBVT='S')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'ZUNGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ MAXWRK = M*M + WRKBL
+ MINWRK = 2*M + N
+ ELSE IF( WNTVS .AND. WNTUO ) THEN
+*
+* Path 5t(N much larger than M, JOBU='O', JOBVT='S')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'ZUNGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = 2*M*M + WRKBL
+ MINWRK = 2*M + N
+ ELSE IF( WNTVS .AND. WNTUAS ) THEN
+*
+* Path 6t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='S')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+M*ILAENV( 1, 'ZUNGLQ', ' ', M,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = M*M + WRKBL
+ MINWRK = 2*M + N
+ ELSE IF( WNTVA .AND. WNTUN ) THEN
+*
+* Path 7t(N much larger than M, JOBU='N', JOBVT='A')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+N*ILAENV( 1, 'ZUNGLQ', ' ', N,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ MAXWRK = M*M + WRKBL
+ MINWRK = 2*M + N
+ ELSE IF( WNTVA .AND. WNTUO ) THEN
+*
+* Path 8t(N much larger than M, JOBU='O', JOBVT='A')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+N*ILAENV( 1, 'ZUNGLQ', ' ', N,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = 2*M*M + WRKBL
+ MINWRK = 2*M + N
+ ELSE IF( WNTVA .AND. WNTUAS ) THEN
+*
+* Path 9t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='A')
+*
+ WRKBL = M + M*ILAENV( 1, 'ZGELQF', ' ', M, N, -1, -1 )
+ WRKBL = MAX( WRKBL, M+N*ILAENV( 1, 'ZUNGLQ', ' ', N,
+ $ N, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+2*M*
+ $ ILAENV( 1, 'ZGEBRD', ' ', M, M, -1, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, M, M, -1 ) )
+ WRKBL = MAX( WRKBL, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MAXWRK = M*M + WRKBL
+ MINWRK = 2*M + N
+ END IF
+ ELSE
+*
+* Path 10t(N greater than M, but not much larger)
+*
+ MAXWRK = 2*M + ( M+N )*ILAENV( 1, 'ZGEBRD', ' ', M, N,
+ $ -1, -1 )
+ IF( WNTVS .OR. WNTVO )
+ $ MAXWRK = MAX( MAXWRK, 2*M+M*
+ $ ILAENV( 1, 'ZUNGBR', 'P', M, N, M, -1 ) )
+ IF( WNTVA )
+ $ MAXWRK = MAX( MAXWRK, 2*M+N*
+ $ ILAENV( 1, 'ZUNGBR', 'P', N, N, M, -1 ) )
+ IF( .NOT.WNTUN )
+ $ MAXWRK = MAX( MAXWRK, 2*M+( M-1 )*
+ $ ILAENV( 1, 'ZUNGBR', 'Q', M, M, M, -1 ) )
+ MINWRK = 2*M + N
+ END IF
+ END IF
+ MAXWRK = MAX( MAXWRK, MINWRK )
+ WORK( 1 ) = MAXWRK
+*
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGESVD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = SQRT( DLAMCH( 'S' ) ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', M, N, A, LDA, DUM )
+ ISCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ISCL = 1
+ CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, IERR )
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ISCL = 1
+ CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, IERR )
+ END IF
+*
+ IF( M.GE.N ) THEN
+*
+* A has at least as many rows as columns. If A has sufficiently
+* more rows than columns, first reduce using the QR
+* decomposition (if sufficient workspace available)
+*
+ IF( M.GE.MNTHR ) THEN
+*
+ IF( WNTUN ) THEN
+*
+* Path 1 (M much larger than N, JOBU='N')
+* No left singular vectors to be computed
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: need 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Zero out below R
+*
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO, A( 2, 1 ),
+ $ LDA )
+ IE = 1
+ ITAUQ = 1
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in A
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, A, LDA, S, RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ NCVT = 0
+ IF( WNTVO .OR. WNTVAS ) THEN
+*
+* If right singular vectors desired, generate P'.
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ NCVT = N
+ END IF
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in A if desired
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, NCVT, 0, 0, S, RWORK( IE ), A, LDA,
+ $ CDUM, 1, CDUM, 1, RWORK( IRWORK ), INFO )
+*
+* If right singular vectors desired in VT, copy them there
+*
+ IF( WNTVAS )
+ $ CALL ZLACPY( 'F', N, N, A, LDA, VT, LDVT )
+*
+ ELSE IF( WNTUO .AND. WNTVN ) THEN
+*
+* Path 2 (M much larger than N, JOBU='O', JOBVT='N')
+* N left singular vectors to be overwritten on A and
+* no right singular vectors to be computed
+*
+ IF( LWORK.GE.N*N+3*N ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N )+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N, WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N )+N*N ) THEN
+*
+* WORK(IU) is LDA by N, WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is LDWRKU by N, WORK(IR) is N by N
+*
+ LDWRKU = ( LWORK-N*N ) / N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IR) and zero out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IR ), LDWRKR )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IR+1 ), LDWRKR )
+*
+* Generate Q in A
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IR ), LDWRKR, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing R
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+N*NB)
+* (RWorkspace: need 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR)
+* (CWorkspace: need N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, 0, N, 0, S, RWORK( IE ), CDUM, 1,
+ $ WORK( IR ), LDWRKR, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+ IU = ITAUQ
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IR), storing result in WORK(IU) and copying to A
+* (CWorkspace: need N*N+N, prefer N*N+M*N)
+* (RWorkspace: 0)
+*
+ DO 10 I = 1, M, LDWRKU
+ CHUNK = MIN( M-I+1, LDWRKU )
+ CALL ZGEMM( 'N', 'N', CHUNK, N, N, CONE, A( I, 1 ),
+ $ LDA, WORK( IR ), LDWRKR, CZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL ZLACPY( 'F', CHUNK, N, WORK( IU ), LDWRKU,
+ $ A( I, 1 ), LDA )
+ 10 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ IE = 1
+ ITAUQ = 1
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize A
+* (CWorkspace: need 2*N+M, prefer 2*N+(M+N)*NB)
+* (RWorkspace: N)
+*
+ CALL ZGEBRD( M, N, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing A
+* (CWorkspace: need 3*N, prefer 2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, N, N, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A
+* (CWorkspace: need 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, 0, M, 0, S, RWORK( IE ), CDUM, 1,
+ $ A, LDA, CDUM, 1, RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUO .AND. WNTVAS ) THEN
+*
+* Path 3 (M much larger than N, JOBU='O', JOBVT='S' or 'A')
+* N left singular vectors to be overwritten on A and
+* N right singular vectors to be computed in VT
+*
+ IF( LWORK.GE.N*N+3*N ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N )+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N )+N*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is LDWRKU by N and WORK(IR) is N by N
+*
+ LDWRKU = ( LWORK-N*N ) / N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to VT, zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ VT( 2, 1 ), LDVT )
+*
+* Generate Q in A
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT, copying result to WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, VT, LDVT, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', N, N, VT, LDVT, WORK( IR ), LDWRKR )
+*
+* Generate left vectors bidiagonalizing R in WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing R in VT
+* (CWorkspace: need N*N+3*N-1, prefer N*N+2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR) and computing right
+* singular vectors of R in VT
+* (CWorkspace: need N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, N, 0, S, RWORK( IE ), VT,
+ $ LDVT, WORK( IR ), LDWRKR, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+ IU = ITAUQ
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IR), storing result in WORK(IU) and copying to A
+* (CWorkspace: need N*N+N, prefer N*N+M*N)
+* (RWorkspace: 0)
+*
+ DO 20 I = 1, M, LDWRKU
+ CHUNK = MIN( M-I+1, LDWRKU )
+ CALL ZGEMM( 'N', 'N', CHUNK, N, N, CONE, A( I, 1 ),
+ $ LDA, WORK( IR ), LDWRKR, CZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL ZLACPY( 'F', CHUNK, N, WORK( IU ), LDWRKU,
+ $ A( I, 1 ), LDA )
+ 20 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to VT, zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ VT( 2, 1 ), LDVT )
+*
+* Generate Q in A
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: N)
+*
+ CALL ZGEBRD( N, N, VT, LDVT, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in A by left vectors bidiagonalizing R
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, VT, LDVT,
+ $ WORK( ITAUQ ), A, LDA, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing R in VT
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, A, LDA, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUS ) THEN
+*
+ IF( WNTVN ) THEN
+*
+* Path 4 (M much larger than N, JOBU='S', JOBVT='N')
+* N left singular vectors to be computed in U and
+* no right singular vectors to be computed
+*
+ IF( LWORK.GE.N*N+3*N ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IR) is LDA by N
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is N by N
+*
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IR), zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IR+1 ), LDWRKR )
+*
+* Generate Q in A
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IR ), LDWRKR, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing R in WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR)
+* (CWorkspace: need N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, 0, N, 0, S, RWORK( IE ), CDUM,
+ $ 1, WORK( IR ), LDWRKR, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IR), storing result in U
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, N, CONE, A, LDA,
+ $ WORK( IR ), LDWRKR, CZERO, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ A( 2, 1 ), LDA )
+*
+* Bidiagonalize R in A
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left vectors bidiagonalizing R
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, 0, M, 0, S, RWORK( IE ), CDUM,
+ $ 1, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVO ) THEN
+*
+* Path 5 (M much larger than N, JOBU='S', JOBVT='O')
+* N left singular vectors to be computed in U and
+* N right singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*N*N+3*N ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+N )*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is N by N and WORK(IR) is N by N
+*
+ LDWRKU = N
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need 2*N*N+2*N, prefer 2*N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IU+1 ), LDWRKU )
+*
+* Generate Q in A
+* (CWorkspace: need 2*N*N+2*N, prefer 2*N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to
+* WORK(IR)
+* (CWorkspace: need 2*N*N+3*N,
+* prefer 2*N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', N, N, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need 2*N*N+3*N, prefer 2*N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in WORK(IR)
+* (CWorkspace: need 2*N*N+3*N-1,
+* prefer 2*N*N+2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in WORK(IR)
+* (CWorkspace: need 2*N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, N, 0, S, RWORK( IE ),
+ $ WORK( IR ), LDWRKR, WORK( IU ),
+ $ LDWRKU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IU), storing result in U
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, N, CONE, A, LDA,
+ $ WORK( IU ), LDWRKU, CZERO, U, LDU )
+*
+* Copy right singular vectors of R to A
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZLACPY( 'F', N, N, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ A( 2, 1 ), LDA )
+*
+* Bidiagonalize R in A
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left vectors bidiagonalizing R
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing R in A
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in A
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, M, 0, S, RWORK( IE ), A,
+ $ LDA, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVAS ) THEN
+*
+* Path 6 (M much larger than N, JOBU='S', JOBVT='S'
+* or 'A')
+* N left singular vectors to be computed in U and
+* N right singular vectors to be computed in VT
+*
+ IF( LWORK.GE.N*N+3*N ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is N by N
+*
+ LDWRKU = N
+ END IF
+ ITAU = IU + LDWRKU*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IU+1 ), LDWRKU )
+*
+* Generate Q in A
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to VT
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', N, N, WORK( IU ), LDWRKU, VT,
+ $ LDVT )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (CWorkspace: need N*N+3*N-1,
+* prefer N*N+2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in VT
+* (CWorkspace: need N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, N, 0, S, RWORK( IE ), VT,
+ $ LDVT, WORK( IU ), LDWRKU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply Q in A by left singular vectors of R in
+* WORK(IU), storing result in U
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, N, CONE, A, LDA,
+ $ WORK( IU ), LDWRKU, CZERO, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, N, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to VT, zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ VT( 2, 1 ), LDVT )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, VT, LDVT, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in VT
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, VT, LDVT,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ END IF
+*
+ ELSE IF( WNTUA ) THEN
+*
+ IF( WNTVN ) THEN
+*
+* Path 7 (M much larger than N, JOBU='A', JOBVT='N')
+* M left singular vectors to be computed in U and
+* no right singular vectors to be computed
+*
+ IF( LWORK.GE.N*N+MAX( N+M, 3*N ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IR) is LDA by N
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is N by N
+*
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Copy R to WORK(IR), zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IR+1 ), LDWRKR )
+*
+* Generate Q in U
+* (CWorkspace: need N*N+N+M, prefer N*N+N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IR ), LDWRKR, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in WORK(IR)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IR)
+* (CWorkspace: need N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, 0, N, 0, S, RWORK( IE ), CDUM,
+ $ 1, WORK( IR ), LDWRKR, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply Q in U by left singular vectors of R in
+* WORK(IR), storing result in A
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, N, CONE, U, LDU,
+ $ WORK( IR ), LDWRKR, CZERO, A, LDA )
+*
+* Copy left singular vectors of A from A to U
+*
+ CALL ZLACPY( 'F', M, N, A, LDA, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need N+M, prefer N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ A( 2, 1 ), LDA )
+*
+* Bidiagonalize R in A
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in A
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, 0, M, 0, S, RWORK( IE ), CDUM,
+ $ 1, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVO ) THEN
+*
+* Path 8 (M much larger than N, JOBU='A', JOBVT='O')
+* M left singular vectors to be computed in U and
+* N right singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*N*N+MAX( N+M, 3*N ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+N )*N ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is N by N
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ ELSE
+*
+* WORK(IU) is N by N and WORK(IR) is N by N
+*
+ LDWRKU = N
+ IR = IU + LDWRKU*N
+ LDWRKR = N
+ END IF
+ ITAU = IR + LDWRKR*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N*N+2*N, prefer 2*N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need 2*N*N+N+M, prefer 2*N*N+N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IU+1 ), LDWRKU )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to
+* WORK(IR)
+* (CWorkspace: need 2*N*N+3*N,
+* prefer 2*N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', N, N, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need 2*N*N+3*N, prefer 2*N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in WORK(IR)
+* (CWorkspace: need 2*N*N+3*N-1,
+* prefer 2*N*N+2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in WORK(IR)
+* (CWorkspace: need 2*N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, N, 0, S, RWORK( IE ),
+ $ WORK( IR ), LDWRKR, WORK( IU ),
+ $ LDWRKU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+* Multiply Q in U by left singular vectors of R in
+* WORK(IU), storing result in A
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, N, CONE, U, LDU,
+ $ WORK( IU ), LDWRKU, CZERO, A, LDA )
+*
+* Copy left singular vectors of A from A to U
+*
+ CALL ZLACPY( 'F', M, N, A, LDA, U, LDU )
+*
+* Copy right singular vectors of R from WORK(IR) to A
+*
+ CALL ZLACPY( 'F', N, N, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need N+M, prefer N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Zero out below R in A
+*
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ A( 2, 1 ), LDA )
+*
+* Bidiagonalize R in A
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in A
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, A, LDA,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in A
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in A
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, M, 0, S, RWORK( IE ), A,
+ $ LDA, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVAS ) THEN
+*
+* Path 9 (M much larger than N, JOBU='A', JOBVT='S'
+* or 'A')
+* M left singular vectors to be computed in U and
+* N right singular vectors to be computed in VT
+*
+ IF( LWORK.GE.N*N+MAX( N+M, 3*N ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*N ) THEN
+*
+* WORK(IU) is LDA by N
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is N by N
+*
+ LDWRKU = N
+ END IF
+ ITAU = IU + LDWRKU*N
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need N*N+2*N, prefer N*N+N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need N*N+N+M, prefer N*N+N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R to WORK(IU), zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ WORK( IU+1 ), LDWRKU )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in WORK(IU), copying result to VT
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', N, N, WORK( IU ), LDWRKU, VT,
+ $ LDVT )
+*
+* Generate left bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need N*N+3*N, prefer N*N+2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', N, N, N, WORK( IU ), LDWRKU,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (CWorkspace: need N*N+3*N-1,
+* prefer N*N+2*N+(N-1)*NB)
+* (RWorkspace: need 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of R in WORK(IU) and computing
+* right singular vectors of R in VT
+* (CWorkspace: need N*N)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, N, 0, S, RWORK( IE ), VT,
+ $ LDVT, WORK( IU ), LDWRKU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply Q in U by left singular vectors of R in
+* WORK(IU), storing result in A
+* (CWorkspace: need N*N)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, N, CONE, U, LDU,
+ $ WORK( IU ), LDWRKU, CZERO, A, LDA )
+*
+* Copy left singular vectors of A from A to U
+*
+ CALL ZLACPY( 'F', M, N, A, LDA, U, LDU )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + N
+*
+* Compute A=Q*R, copying result to U
+* (CWorkspace: need 2*N, prefer N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGEQRF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+*
+* Generate Q in U
+* (CWorkspace: need N+M, prefer N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGQR( M, M, N, U, LDU, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy R from A to VT, zeroing out below it
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ IF( N.GT.1 )
+ $ CALL ZLASET( 'L', N-1, N-1, CZERO, CZERO,
+ $ VT( 2, 1 ), LDVT )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize R in VT
+* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( N, N, VT, LDVT, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply Q in U by left bidiagonalizing vectors
+* in VT
+* (CWorkspace: need 2*N+M, prefer 2*N+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'Q', 'R', 'N', M, N, N, VT, LDVT,
+ $ WORK( ITAUQ ), U, LDU, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in VT
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + N
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ END IF
+*
+ END IF
+*
+ ELSE
+*
+* M .LT. MNTHR
+*
+* Path 10 (M at least N, but not much larger)
+* Reduce to bidiagonal form without QR decomposition
+*
+ IE = 1
+ ITAUQ = 1
+ ITAUP = ITAUQ + N
+ IWORK = ITAUP + N
+*
+* Bidiagonalize A
+* (CWorkspace: need 2*N+M, prefer 2*N+(M+N)*NB)
+* (RWorkspace: need N)
+*
+ CALL ZGEBRD( M, N, A, LDA, S, RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ IF( WNTUAS ) THEN
+*
+* If left singular vectors desired in U, copy result to U
+* and generate left bidiagonalizing vectors in U
+* (CWorkspace: need 2*N+NCU, prefer 2*N+NCU*NB)
+* (RWorkspace: 0)
+*
+ CALL ZLACPY( 'L', M, N, A, LDA, U, LDU )
+ IF( WNTUS )
+ $ NCU = N
+ IF( WNTUA )
+ $ NCU = M
+ CALL ZUNGBR( 'Q', M, NCU, N, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVAS ) THEN
+*
+* If right singular vectors desired in VT, copy result to
+* VT and generate right bidiagonalizing vectors in VT
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZLACPY( 'U', N, N, A, LDA, VT, LDVT )
+ CALL ZUNGBR( 'P', N, N, N, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTUO ) THEN
+*
+* If left singular vectors desired in A, generate left
+* bidiagonalizing vectors in A
+* (CWorkspace: need 3*N, prefer 2*N+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, N, N, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVO ) THEN
+*
+* If right singular vectors desired in A, generate right
+* bidiagonalizing vectors in A
+* (CWorkspace: need 3*N-1, prefer 2*N+(N-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', N, N, N, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IRWORK = IE + N
+ IF( WNTUAS .OR. WNTUO )
+ $ NRU = M
+ IF( WNTUN )
+ $ NRU = 0
+ IF( WNTVAS .OR. WNTVO )
+ $ NCVT = N
+ IF( WNTVN )
+ $ NCVT = 0
+ IF( ( .NOT.WNTUO ) .AND. ( .NOT.WNTVO ) ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, NCVT, NRU, 0, S, RWORK( IE ), VT,
+ $ LDVT, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+ ELSE IF( ( .NOT.WNTUO ) .AND. WNTVO ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in A
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, NCVT, NRU, 0, S, RWORK( IE ), A,
+ $ LDA, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+ ELSE
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in A and computing right singular
+* vectors in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', N, NCVT, NRU, 0, S, RWORK( IE ), VT,
+ $ LDVT, A, LDA, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+ END IF
+*
+ END IF
+*
+ ELSE
+*
+* A has more columns than rows. If A has sufficiently more
+* columns than rows, first reduce using the LQ decomposition (if
+* sufficient workspace available)
+*
+ IF( N.GE.MNTHR ) THEN
+*
+ IF( WNTVN ) THEN
+*
+* Path 1t(N much larger than M, JOBVT='N')
+* No right singular vectors to be computed
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Zero out above L
+*
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO, A( 1, 2 ),
+ $ LDA )
+ IE = 1
+ ITAUQ = 1
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in A
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, A, LDA, S, RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ IF( WNTUO .OR. WNTUAS ) THEN
+*
+* If left singular vectors desired, generate Q
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IRWORK = IE + M
+ NRU = 0
+ IF( WNTUO .OR. WNTUAS )
+ $ NRU = M
+*
+* Perform bidiagonal QR iteration, computing left singular
+* vectors of A in A if desired
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, 0, NRU, 0, S, RWORK( IE ), CDUM, 1,
+ $ A, LDA, CDUM, 1, RWORK( IRWORK ), INFO )
+*
+* If left singular vectors desired in U, copy them there
+*
+ IF( WNTUAS )
+ $ CALL ZLACPY( 'F', M, M, A, LDA, U, LDU )
+*
+ ELSE IF( WNTVO .AND. WNTUN ) THEN
+*
+* Path 2t(N much larger than M, JOBU='N', JOBVT='O')
+* M right singular vectors to be overwritten on A and
+* no left singular vectors to be computed
+*
+ IF( LWORK.GE.M*M+3*M ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N )+LDA*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N )+M*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by CHUNK and WORK(IR) is M by M
+*
+ LDWRKU = M
+ CHUNK = ( LWORK-M*M ) / M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IR) and zero out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IR ), LDWRKR )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IR+LDWRKR ), LDWRKR )
+*
+* Generate Q in A
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IR)
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IR ), LDWRKR, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing L
+* (CWorkspace: need M*M+3*M-1, prefer M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of L in WORK(IR)
+* (CWorkspace: need M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, 0, 0, S, RWORK( IE ),
+ $ WORK( IR ), LDWRKR, CDUM, 1, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+ IU = ITAUQ
+*
+* Multiply right singular vectors of L in WORK(IR) by Q
+* in A, storing result in WORK(IU) and copying to A
+* (CWorkspace: need M*M+M, prefer M*M+M*N)
+* (RWorkspace: 0)
+*
+ DO 30 I = 1, N, CHUNK
+ BLK = MIN( N-I+1, CHUNK )
+ CALL ZGEMM( 'N', 'N', M, BLK, M, CONE, WORK( IR ),
+ $ LDWRKR, A( 1, I ), LDA, CZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL ZLACPY( 'F', M, BLK, WORK( IU ), LDWRKU,
+ $ A( 1, I ), LDA )
+ 30 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ IE = 1
+ ITAUQ = 1
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize A
+* (CWorkspace: need 2*M+N, prefer 2*M+(M+N)*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, N, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing A
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, N, M, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in A
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'L', M, N, 0, 0, S, RWORK( IE ), A, LDA,
+ $ CDUM, 1, CDUM, 1, RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVO .AND. WNTUAS ) THEN
+*
+* Path 3t(N much larger than M, JOBU='S' or 'A', JOBVT='O')
+* M right singular vectors to be overwritten on A and
+* M left singular vectors to be computed in U
+*
+ IF( LWORK.GE.M*M+3*M ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.MAX( WRKBL, LDA*N )+LDA*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.MAX( WRKBL, LDA*N )+M*M ) THEN
+*
+* WORK(IU) is LDA by N and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ CHUNK = N
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by CHUNK and WORK(IR) is M by M
+*
+ LDWRKU = M
+ CHUNK = ( LWORK-M*M ) / M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing about above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO, U( 1, 2 ),
+ $ LDU )
+*
+* Generate Q in A
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U, copying result to WORK(IR)
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, U, LDU, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, M, U, LDU, WORK( IR ), LDWRKR )
+*
+* Generate right vectors bidiagonalizing L in WORK(IR)
+* (CWorkspace: need M*M+3*M-1, prefer M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing L in U
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in U, and computing right
+* singular vectors of L in WORK(IR)
+* (CWorkspace: need M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, M, 0, S, RWORK( IE ),
+ $ WORK( IR ), LDWRKR, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+ IU = ITAUQ
+*
+* Multiply right singular vectors of L in WORK(IR) by Q
+* in A, storing result in WORK(IU) and copying to A
+* (CWorkspace: need M*M+M, prefer M*M+M*N))
+* (RWorkspace: 0)
+*
+ DO 40 I = 1, N, CHUNK
+ BLK = MIN( N-I+1, CHUNK )
+ CALL ZGEMM( 'N', 'N', M, BLK, M, CONE, WORK( IR ),
+ $ LDWRKR, A( 1, I ), LDA, CZERO,
+ $ WORK( IU ), LDWRKU )
+ CALL ZLACPY( 'F', M, BLK, WORK( IU ), LDWRKU,
+ $ A( 1, I ), LDA )
+ 40 CONTINUE
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO, U( 1, 2 ),
+ $ LDU )
+*
+* Generate Q in A
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, U, LDU, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right vectors bidiagonalizing L by Q in A
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, U, LDU,
+ $ WORK( ITAUP ), A, LDA, WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left vectors bidiagonalizing L in U
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in A
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, M, 0, S, RWORK( IE ), A, LDA,
+ $ U, LDU, CDUM, 1, RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTVS ) THEN
+*
+ IF( WNTUN ) THEN
+*
+* Path 4t(N much larger than M, JOBU='N', JOBVT='S')
+* M right singular vectors to be computed in VT and
+* no left singular vectors to be computed
+*
+ IF( LWORK.GE.M*M+3*M ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IR) is LDA by M
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is M by M
+*
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IR), zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IR+LDWRKR ), LDWRKR )
+*
+* Generate Q in A
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IR)
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IR ), LDWRKR, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right vectors bidiagonalizing L in
+* WORK(IR)
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of L in WORK(IR)
+* (CWorkspace: need M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, 0, 0, S, RWORK( IE ),
+ $ WORK( IR ), LDWRKR, CDUM, 1, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IR) by
+* Q in A, storing result in VT
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, M, CONE, WORK( IR ),
+ $ LDWRKR, A, LDA, CZERO, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy result to VT
+*
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ A( 1, 2 ), LDA )
+*
+* Bidiagonalize L in A
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right vectors bidiagonalizing L by Q in VT
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, 0, 0, S, RWORK( IE ), VT,
+ $ LDVT, CDUM, 1, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUO ) THEN
+*
+* Path 5t(N much larger than M, JOBU='O', JOBVT='S')
+* M right singular vectors to be computed in VT and
+* M left singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*M*M+3*M ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+M )*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by M and WORK(IR) is M by M
+*
+ LDWRKU = M
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need 2*M*M+2*M, prefer 2*M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out below it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+*
+* Generate Q in A
+* (CWorkspace: need 2*M*M+2*M, prefer 2*M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to
+* WORK(IR)
+* (CWorkspace: need 2*M*M+3*M,
+* prefer 2*M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, M, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need 2*M*M+3*M-1,
+* prefer 2*M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in WORK(IR)
+* (CWorkspace: need 2*M*M+3*M, prefer 2*M*M+2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in WORK(IR) and computing
+* right singular vectors of L in WORK(IU)
+* (CWorkspace: need 2*M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, M, 0, S, RWORK( IE ),
+ $ WORK( IU ), LDWRKU, WORK( IR ),
+ $ LDWRKR, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in A, storing result in VT
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, M, CONE, WORK( IU ),
+ $ LDWRKU, A, LDA, CZERO, VT, LDVT )
+*
+* Copy left singular vectors of L to A
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZLACPY( 'F', M, M, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ A( 1, 2 ), LDA )
+*
+* Bidiagonalize L in A
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right vectors bidiagonalizing L by Q in VT
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors of L in A
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, A, LDA, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUAS ) THEN
+*
+* Path 6t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='S')
+* M right singular vectors to be computed in VT and
+* M left singular vectors to be computed in U
+*
+ IF( LWORK.GE.M*M+3*M ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IU) is LDA by N
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is LDA by M
+*
+ LDWRKU = M
+ END IF
+ ITAU = IU + LDWRKU*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+*
+* Generate Q in A
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to U
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, M, WORK( IU ), LDWRKU, U,
+ $ LDU )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need M*M+3*M-1,
+* prefer M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in U and computing right
+* singular vectors of L in WORK(IU)
+* (CWorkspace: need M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, M, 0, S, RWORK( IE ),
+ $ WORK( IU ), LDWRKU, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in A, storing result in VT
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, M, CONE, WORK( IU ),
+ $ LDWRKU, A, LDA, CZERO, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( M, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ U( 1, 2 ), LDU )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, U, LDU, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in U by Q
+* in VT
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, U, LDU,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ END IF
+*
+ ELSE IF( WNTVA ) THEN
+*
+ IF( WNTUN ) THEN
+*
+* Path 7t(N much larger than M, JOBU='N', JOBVT='A')
+* N right singular vectors to be computed in VT and
+* no left singular vectors to be computed
+*
+ IF( LWORK.GE.M*M+MAX( N+M, 3*M ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IR = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IR) is LDA by M
+*
+ LDWRKR = LDA
+ ELSE
+*
+* WORK(IR) is M by M
+*
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Copy L to WORK(IR), zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IR ),
+ $ LDWRKR )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IR+LDWRKR ), LDWRKR )
+*
+* Generate Q in VT
+* (CWorkspace: need M*M+M+N, prefer M*M+M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IR)
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IR ), LDWRKR, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate right bidiagonalizing vectors in WORK(IR)
+* (CWorkspace: need M*M+3*M-1,
+* prefer M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of L in WORK(IR)
+* (CWorkspace: need M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, 0, 0, S, RWORK( IE ),
+ $ WORK( IR ), LDWRKR, CDUM, 1, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IR) by
+* Q in VT, storing result in A
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, M, CONE, WORK( IR ),
+ $ LDWRKR, VT, LDVT, CZERO, A, LDA )
+*
+* Copy right singular vectors of A from A to VT
+*
+ CALL ZLACPY( 'F', M, N, A, LDA, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need M+N, prefer M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ A( 1, 2 ), LDA )
+*
+* Bidiagonalize L in A
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in A by Q
+* in VT
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, 0, 0, S, RWORK( IE ), VT,
+ $ LDVT, CDUM, 1, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUO ) THEN
+*
+* Path 8t(N much larger than M, JOBU='O', JOBVT='A')
+* N right singular vectors to be computed in VT and
+* M left singular vectors to be overwritten on A
+*
+ IF( LWORK.GE.2*M*M+MAX( N+M, 3*M ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+2*LDA*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is LDA by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = LDA
+ ELSE IF( LWORK.GE.WRKBL+( LDA+M )*M ) THEN
+*
+* WORK(IU) is LDA by M and WORK(IR) is M by M
+*
+ LDWRKU = LDA
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ ELSE
+*
+* WORK(IU) is M by M and WORK(IR) is M by M
+*
+ LDWRKU = M
+ IR = IU + LDWRKU*M
+ LDWRKR = M
+ END IF
+ ITAU = IR + LDWRKR*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need 2*M*M+2*M, prefer 2*M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need 2*M*M+M+N, prefer 2*M*M+M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to
+* WORK(IR)
+* (CWorkspace: need 2*M*M+3*M,
+* prefer 2*M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, M, WORK( IU ), LDWRKU,
+ $ WORK( IR ), LDWRKR )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need 2*M*M+3*M-1,
+* prefer 2*M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in WORK(IR)
+* (CWorkspace: need 2*M*M+3*M, prefer 2*M*M+2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, WORK( IR ), LDWRKR,
+ $ WORK( ITAUQ ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in WORK(IR) and computing
+* right singular vectors of L in WORK(IU)
+* (CWorkspace: need 2*M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, M, 0, S, RWORK( IE ),
+ $ WORK( IU ), LDWRKU, WORK( IR ),
+ $ LDWRKR, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in VT, storing result in A
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, M, CONE, WORK( IU ),
+ $ LDWRKU, VT, LDVT, CZERO, A, LDA )
+*
+* Copy right singular vectors of A from A to VT
+*
+ CALL ZLACPY( 'F', M, N, A, LDA, VT, LDVT )
+*
+* Copy left singular vectors of A from WORK(IR) to A
+*
+ CALL ZLACPY( 'F', M, M, WORK( IR ), LDWRKR, A,
+ $ LDA )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need M+N, prefer M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Zero out above L in A
+*
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ A( 1, 2 ), LDA )
+*
+* Bidiagonalize L in A
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, A, LDA, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in A by Q
+* in VT
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, A, LDA,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in A
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in A and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, A, LDA, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ ELSE IF( WNTUAS ) THEN
+*
+* Path 9t(N much larger than M, JOBU='S' or 'A',
+* JOBVT='A')
+* N right singular vectors to be computed in VT and
+* M left singular vectors to be computed in U
+*
+ IF( LWORK.GE.M*M+MAX( N+M, 3*M ) ) THEN
+*
+* Sufficient workspace for a fast algorithm
+*
+ IU = 1
+ IF( LWORK.GE.WRKBL+LDA*M ) THEN
+*
+* WORK(IU) is LDA by M
+*
+ LDWRKU = LDA
+ ELSE
+*
+* WORK(IU) is M by M
+*
+ LDWRKU = M
+ END IF
+ ITAU = IU + LDWRKU*M
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need M*M+2*M, prefer M*M+M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need M*M+M+N, prefer M*M+M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to WORK(IU), zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, WORK( IU ),
+ $ LDWRKU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ WORK( IU+LDWRKU ), LDWRKU )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in WORK(IU), copying result to U
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, WORK( IU ), LDWRKU, S,
+ $ RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'L', M, M, WORK( IU ), LDWRKU, U,
+ $ LDU )
+*
+* Generate right bidiagonalizing vectors in WORK(IU)
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, M, M, WORK( IU ), LDWRKU,
+ $ WORK( ITAUP ), WORK( IWORK ),
+ $ LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (CWorkspace: need M*M+3*M, prefer M*M+2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of L in U and computing right
+* singular vectors of L in WORK(IU)
+* (CWorkspace: need M*M)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, M, M, 0, S, RWORK( IE ),
+ $ WORK( IU ), LDWRKU, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+* Multiply right singular vectors of L in WORK(IU) by
+* Q in VT, storing result in A
+* (CWorkspace: need M*M)
+* (RWorkspace: 0)
+*
+ CALL ZGEMM( 'N', 'N', M, N, M, CONE, WORK( IU ),
+ $ LDWRKU, VT, LDVT, CZERO, A, LDA )
+*
+* Copy right singular vectors of A from A to VT
+*
+ CALL ZLACPY( 'F', M, N, A, LDA, VT, LDVT )
+*
+ ELSE
+*
+* Insufficient workspace for a fast algorithm
+*
+ ITAU = 1
+ IWORK = ITAU + M
+*
+* Compute A=L*Q, copying result to VT
+* (CWorkspace: need 2*M, prefer M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZGELQF( M, N, A, LDA, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+*
+* Generate Q in VT
+* (CWorkspace: need M+N, prefer M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGLQ( N, N, M, VT, LDVT, WORK( ITAU ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Copy L to U, zeroing out above it
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL ZLASET( 'U', M-1, M-1, CZERO, CZERO,
+ $ U( 1, 2 ), LDU )
+ IE = 1
+ ITAUQ = ITAU
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize L in U
+* (CWorkspace: need 3*M, prefer 2*M+2*M*NB)
+* (RWorkspace: need M)
+*
+ CALL ZGEBRD( M, M, U, LDU, S, RWORK( IE ),
+ $ WORK( ITAUQ ), WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Multiply right bidiagonalizing vectors in U by Q
+* in VT
+* (CWorkspace: need 2*M+N, prefer 2*M+N*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNMBR( 'P', 'L', 'C', M, N, M, U, LDU,
+ $ WORK( ITAUP ), VT, LDVT,
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+*
+* Generate left bidiagonalizing vectors in U
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, M, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ IRWORK = IE + M
+*
+* Perform bidiagonal QR iteration, computing left
+* singular vectors of A in U and computing right
+* singular vectors of A in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'U', M, N, M, 0, S, RWORK( IE ), VT,
+ $ LDVT, U, LDU, CDUM, 1,
+ $ RWORK( IRWORK ), INFO )
+*
+ END IF
+*
+ END IF
+*
+ END IF
+*
+ ELSE
+*
+* N .LT. MNTHR
+*
+* Path 10t(N greater than M, but not much larger)
+* Reduce to bidiagonal form without LQ decomposition
+*
+ IE = 1
+ ITAUQ = 1
+ ITAUP = ITAUQ + M
+ IWORK = ITAUP + M
+*
+* Bidiagonalize A
+* (CWorkspace: need 2*M+N, prefer 2*M+(M+N)*NB)
+* (RWorkspace: M)
+*
+ CALL ZGEBRD( M, N, A, LDA, S, RWORK( IE ), WORK( ITAUQ ),
+ $ WORK( ITAUP ), WORK( IWORK ), LWORK-IWORK+1,
+ $ IERR )
+ IF( WNTUAS ) THEN
+*
+* If left singular vectors desired in U, copy result to U
+* and generate left bidiagonalizing vectors in U
+* (CWorkspace: need 3*M-1, prefer 2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZLACPY( 'L', M, M, A, LDA, U, LDU )
+ CALL ZUNGBR( 'Q', M, M, N, U, LDU, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVAS ) THEN
+*
+* If right singular vectors desired in VT, copy result to
+* VT and generate right bidiagonalizing vectors in VT
+* (CWorkspace: need 2*M+NRVT, prefer 2*M+NRVT*NB)
+* (RWorkspace: 0)
+*
+ CALL ZLACPY( 'U', M, N, A, LDA, VT, LDVT )
+ IF( WNTVA )
+ $ NRVT = N
+ IF( WNTVS )
+ $ NRVT = M
+ CALL ZUNGBR( 'P', NRVT, N, M, VT, LDVT, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTUO ) THEN
+*
+* If left singular vectors desired in A, generate left
+* bidiagonalizing vectors in A
+* (CWorkspace: need 3*M-1, prefer 2*M+(M-1)*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'Q', M, M, N, A, LDA, WORK( ITAUQ ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IF( WNTVO ) THEN
+*
+* If right singular vectors desired in A, generate right
+* bidiagonalizing vectors in A
+* (CWorkspace: need 3*M, prefer 2*M+M*NB)
+* (RWorkspace: 0)
+*
+ CALL ZUNGBR( 'P', M, N, M, A, LDA, WORK( ITAUP ),
+ $ WORK( IWORK ), LWORK-IWORK+1, IERR )
+ END IF
+ IRWORK = IE + M
+ IF( WNTUAS .OR. WNTUO )
+ $ NRU = M
+ IF( WNTUN )
+ $ NRU = 0
+ IF( WNTVAS .OR. WNTVO )
+ $ NCVT = N
+ IF( WNTVN )
+ $ NCVT = 0
+ IF( ( .NOT.WNTUO ) .AND. ( .NOT.WNTVO ) ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'L', M, NCVT, NRU, 0, S, RWORK( IE ), VT,
+ $ LDVT, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+ ELSE IF( ( .NOT.WNTUO ) .AND. WNTVO ) THEN
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in U and computing right singular
+* vectors in A
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'L', M, NCVT, NRU, 0, S, RWORK( IE ), A,
+ $ LDA, U, LDU, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+ ELSE
+*
+* Perform bidiagonal QR iteration, if desired, computing
+* left singular vectors in A and computing right singular
+* vectors in VT
+* (CWorkspace: 0)
+* (RWorkspace: need BDSPAC)
+*
+ CALL ZBDSQR( 'L', M, NCVT, NRU, 0, S, RWORK( IE ), VT,
+ $ LDVT, A, LDA, CDUM, 1, RWORK( IRWORK ),
+ $ INFO )
+ END IF
+*
+ END IF
+*
+ END IF
+*
+* Undo scaling if necessary
+*
+ IF( ISCL.EQ.1 ) THEN
+ IF( ANRM.GT.BIGNUM )
+ $ CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN, 1, S, MINMN,
+ $ IERR )
+ IF( INFO.NE.0 .AND. ANRM.GT.BIGNUM )
+ $ CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN-1, 1,
+ $ RWORK( IE ), MINMN, IERR )
+ IF( ANRM.LT.SMLNUM )
+ $ CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN, 1, S, MINMN,
+ $ IERR )
+ IF( INFO.NE.0 .AND. ANRM.LT.SMLNUM )
+ $ CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN-1, 1,
+ $ RWORK( IE ), MINMN, IERR )
+ END IF
+*
+* Return optimal workspace in WORK(1)
+*
+ WORK( 1 ) = MAXWRK
+*
+ RETURN
+*
+* End of ZGESVD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgetc2.f b/2.3-1/src/fortran/lapack/zgetc2.f
new file mode 100644
index 00000000..35ac376c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgetc2.f
@@ -0,0 +1,145 @@
+ SUBROUTINE ZGETC2( N, A, LDA, IPIV, JPIV, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), JPIV( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGETC2 computes an LU factorization, using complete pivoting, of the
+* n-by-n matrix A. The factorization has the form A = P * L * U * Q,
+* where P and Q are permutation matrices, L is lower triangular with
+* unit diagonal elements and U is upper triangular.
+*
+* This is a level 1 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA, N)
+* On entry, the n-by-n matrix to be factored.
+* On exit, the factors L and U from the factorization
+* A = P*L*U*Q; the unit diagonal elements of L are not stored.
+* If U(k, k) appears to be less than SMIN, U(k, k) is given the
+* value of SMIN, giving a nonsingular perturbed system.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1, N).
+*
+* IPIV (output) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= i <= N, row i of the
+* matrix has been interchanged with row IPIV(i).
+*
+* JPIV (output) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= j <= N, column j of the
+* matrix has been interchanged with column JPIV(j).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* > 0: if INFO = k, U(k, k) is likely to produce overflow if
+* one tries to solve for x in Ax = b. So U is perturbed
+* to avoid the overflow.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IP, IPV, J, JP, JPV
+ DOUBLE PRECISION BIGNUM, EPS, SMIN, SMLNUM, XMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZGERU, ZSWAP
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DCMPLX, MAX
+* ..
+* .. Executable Statements ..
+*
+* Set constants to control overflow
+*
+ INFO = 0
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Factorize A using complete pivoting.
+* Set pivots less than SMIN to SMIN
+*
+ DO 40 I = 1, N - 1
+*
+* Find max element in matrix A
+*
+ XMAX = ZERO
+ DO 20 IP = I, N
+ DO 10 JP = I, N
+ IF( ABS( A( IP, JP ) ).GE.XMAX ) THEN
+ XMAX = ABS( A( IP, JP ) )
+ IPV = IP
+ JPV = JP
+ END IF
+ 10 CONTINUE
+ 20 CONTINUE
+ IF( I.EQ.1 )
+ $ SMIN = MAX( EPS*XMAX, SMLNUM )
+*
+* Swap rows
+*
+ IF( IPV.NE.I )
+ $ CALL ZSWAP( N, A( IPV, 1 ), LDA, A( I, 1 ), LDA )
+ IPIV( I ) = IPV
+*
+* Swap columns
+*
+ IF( JPV.NE.I )
+ $ CALL ZSWAP( N, A( 1, JPV ), 1, A( 1, I ), 1 )
+ JPIV( I ) = JPV
+*
+* Check for singularity
+*
+ IF( ABS( A( I, I ) ).LT.SMIN ) THEN
+ INFO = I
+ A( I, I ) = DCMPLX( SMIN, ZERO )
+ END IF
+ DO 30 J = I + 1, N
+ A( J, I ) = A( J, I ) / A( I, I )
+ 30 CONTINUE
+ CALL ZGERU( N-I, N-I, -DCMPLX( ONE ), A( I+1, I ), 1,
+ $ A( I, I+1 ), LDA, A( I+1, I+1 ), LDA )
+ 40 CONTINUE
+*
+ IF( ABS( A( N, N ) ).LT.SMIN ) THEN
+ INFO = N
+ A( N, N ) = DCMPLX( SMIN, ZERO )
+ END IF
+ RETURN
+*
+* End of ZGETC2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgetf2.f b/2.3-1/src/fortran/lapack/zgetf2.f
new file mode 100644
index 00000000..a2dc1834
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgetf2.f
@@ -0,0 +1,148 @@
+ SUBROUTINE ZGETF2( M, N, A, LDA, IPIV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGETF2 computes an LU factorization of a general m-by-n matrix A
+* using partial pivoting with row interchanges.
+*
+* The factorization has the form
+* A = P * L * U
+* where P is a permutation matrix, L is lower triangular with unit
+* diagonal elements (lower trapezoidal if m > n), and U is upper
+* triangular (upper trapezoidal if m < n).
+*
+* This is the right-looking Level 2 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the m by n matrix to be factored.
+* On exit, the factors L and U from the factorization
+* A = P*L*U; the unit diagonal elements of L are not stored.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* IPIV (output) INTEGER array, dimension (min(M,N))
+* The pivot indices; for 1 <= i <= min(M,N), row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+* > 0: if INFO = k, U(k,k) is exactly zero. The factorization
+* has been completed, but the factor U is exactly
+* singular, and division by zero will occur if it is used
+* to solve a system of equations.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION SFMIN
+ INTEGER I, J, JP
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ INTEGER IZAMAX
+ EXTERNAL DLAMCH, IZAMAX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGERU, ZSCAL, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGETF2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+* Compute machine safe minimum
+*
+ SFMIN = DLAMCH('S')
+*
+ DO 10 J = 1, MIN( M, N )
+*
+* Find pivot and test for singularity.
+*
+ JP = J - 1 + IZAMAX( M-J+1, A( J, J ), 1 )
+ IPIV( J ) = JP
+ IF( A( JP, J ).NE.ZERO ) THEN
+*
+* Apply the interchange to columns 1:N.
+*
+ IF( JP.NE.J )
+ $ CALL ZSWAP( N, A( J, 1 ), LDA, A( JP, 1 ), LDA )
+*
+* Compute elements J+1:M of J-th column.
+*
+ IF( J.LT.M ) THEN
+ IF( ABS(A( J, J )) .GE. SFMIN ) THEN
+ CALL ZSCAL( M-J, ONE / A( J, J ), A( J+1, J ), 1 )
+ ELSE
+ DO 20 I = 1, M-J
+ A( J+I, J ) = A( J+I, J ) / A( J, J )
+ 20 CONTINUE
+ END IF
+ END IF
+*
+ ELSE IF( INFO.EQ.0 ) THEN
+*
+ INFO = J
+ END IF
+*
+ IF( J.LT.MIN( M, N ) ) THEN
+*
+* Update trailing submatrix.
+*
+ CALL ZGERU( M-J, N-J, -ONE, A( J+1, J ), 1, A( J, J+1 ),
+ $ LDA, A( J+1, J+1 ), LDA )
+ END IF
+ 10 CONTINUE
+ RETURN
+*
+* End of ZGETF2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgetrf.f b/2.3-1/src/fortran/lapack/zgetrf.f
new file mode 100644
index 00000000..9c7bfbbf
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgetrf.f
@@ -0,0 +1,159 @@
+ SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, M, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGETRF computes an LU factorization of a general M-by-N matrix A
+* using partial pivoting with row interchanges.
+*
+* The factorization has the form
+* A = P * L * U
+* where P is a permutation matrix, L is lower triangular with unit
+* diagonal elements (lower trapezoidal if m > n), and U is upper
+* triangular (upper trapezoidal if m < n).
+*
+* This is the right-looking Level 3 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix to be factored.
+* On exit, the factors L and U from the factorization
+* A = P*L*U; the unit diagonal elements of L are not stored.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* IPIV (output) INTEGER array, dimension (min(M,N))
+* The pivot indices; for 1 <= i <= min(M,N), row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, U(i,i) is exactly zero. The factorization
+* has been completed, but the factor U is exactly
+* singular, and division by zero will occur if it is used
+* to solve a system of equations.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IINFO, J, JB, NB
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEMM, ZGETF2, ZLASWP, ZTRSM
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGETRF', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+* Determine the block size for this environment.
+*
+ NB = ILAENV( 1, 'ZGETRF', ' ', M, N, -1, -1 )
+ IF( NB.LE.1 .OR. NB.GE.MIN( M, N ) ) THEN
+*
+* Use unblocked code.
+*
+ CALL ZGETF2( M, N, A, LDA, IPIV, INFO )
+ ELSE
+*
+* Use blocked code.
+*
+ DO 20 J = 1, MIN( M, N ), NB
+ JB = MIN( MIN( M, N )-J+1, NB )
+*
+* Factor diagonal and subdiagonal blocks and test for exact
+* singularity.
+*
+ CALL ZGETF2( M-J+1, JB, A( J, J ), LDA, IPIV( J ), IINFO )
+*
+* Adjust INFO and the pivot indices.
+*
+ IF( INFO.EQ.0 .AND. IINFO.GT.0 )
+ $ INFO = IINFO + J - 1
+ DO 10 I = J, MIN( M, J+JB-1 )
+ IPIV( I ) = J - 1 + IPIV( I )
+ 10 CONTINUE
+*
+* Apply interchanges to columns 1:J-1.
+*
+ CALL ZLASWP( J-1, A, LDA, J, J+JB-1, IPIV, 1 )
+*
+ IF( J+JB.LE.N ) THEN
+*
+* Apply interchanges to columns J+JB:N.
+*
+ CALL ZLASWP( N-J-JB+1, A( 1, J+JB ), LDA, J, J+JB-1,
+ $ IPIV, 1 )
+*
+* Compute block row of U.
+*
+ CALL ZTRSM( 'Left', 'Lower', 'No transpose', 'Unit', JB,
+ $ N-J-JB+1, ONE, A( J, J ), LDA, A( J, J+JB ),
+ $ LDA )
+ IF( J+JB.LE.M ) THEN
+*
+* Update trailing submatrix.
+*
+ CALL ZGEMM( 'No transpose', 'No transpose', M-J-JB+1,
+ $ N-J-JB+1, JB, -ONE, A( J+JB, J ), LDA,
+ $ A( J, J+JB ), LDA, ONE, A( J+JB, J+JB ),
+ $ LDA )
+ END IF
+ END IF
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZGETRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgetri.f b/2.3-1/src/fortran/lapack/zgetri.f
new file mode 100644
index 00000000..685518e6
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgetri.f
@@ -0,0 +1,193 @@
+ SUBROUTINE ZGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGETRI computes the inverse of a matrix using the LU factorization
+* computed by ZGETRF.
+*
+* This method inverts U and then computes inv(A) by solving the system
+* inv(A)*L = inv(U) for inv(A).
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the factors L and U from the factorization
+* A = P*L*U as computed by ZGETRF.
+* On exit, if INFO = 0, the inverse of the original matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* The pivot indices from ZGETRF; for 1<=i<=N, row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO=0, then WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimal performance LWORK >= N*NB, where NB is
+* the optimal blocksize returned by ILAENV.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, U(i,i) is exactly zero; the matrix is
+* singular and its inverse could not be computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IWS, J, JB, JJ, JP, LDWORK, LWKOPT, NB,
+ $ NBMIN, NN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEMM, ZGEMV, ZSWAP, ZTRSM, ZTRTRI
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ NB = ILAENV( 1, 'ZGETRI', ' ', N, -1, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -3
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGETRI', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Form inv(U). If INFO > 0 from ZTRTRI, then U is singular,
+* and the inverse is not computed.
+*
+ CALL ZTRTRI( 'Upper', 'Non-unit', N, A, LDA, INFO )
+ IF( INFO.GT.0 )
+ $ RETURN
+*
+ NBMIN = 2
+ LDWORK = N
+ IF( NB.GT.1 .AND. NB.LT.N ) THEN
+ IWS = MAX( LDWORK*NB, 1 )
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZGETRI', ' ', N, -1, -1, -1 ) )
+ END IF
+ ELSE
+ IWS = N
+ END IF
+*
+* Solve the equation inv(A)*L = inv(U) for inv(A).
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.N ) THEN
+*
+* Use unblocked code.
+*
+ DO 20 J = N, 1, -1
+*
+* Copy current column of L to WORK and replace with zeros.
+*
+ DO 10 I = J + 1, N
+ WORK( I ) = A( I, J )
+ A( I, J ) = ZERO
+ 10 CONTINUE
+*
+* Compute current column of inv(A).
+*
+ IF( J.LT.N )
+ $ CALL ZGEMV( 'No transpose', N, N-J, -ONE, A( 1, J+1 ),
+ $ LDA, WORK( J+1 ), 1, ONE, A( 1, J ), 1 )
+ 20 CONTINUE
+ ELSE
+*
+* Use blocked code.
+*
+ NN = ( ( N-1 ) / NB )*NB + 1
+ DO 50 J = NN, 1, -NB
+ JB = MIN( NB, N-J+1 )
+*
+* Copy current block column of L to WORK and replace with
+* zeros.
+*
+ DO 40 JJ = J, J + JB - 1
+ DO 30 I = JJ + 1, N
+ WORK( I+( JJ-J )*LDWORK ) = A( I, JJ )
+ A( I, JJ ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* Compute current block column of inv(A).
+*
+ IF( J+JB.LE.N )
+ $ CALL ZGEMM( 'No transpose', 'No transpose', N, JB,
+ $ N-J-JB+1, -ONE, A( 1, J+JB ), LDA,
+ $ WORK( J+JB ), LDWORK, ONE, A( 1, J ), LDA )
+ CALL ZTRSM( 'Right', 'Lower', 'No transpose', 'Unit', N, JB,
+ $ ONE, WORK( J ), LDWORK, A( 1, J ), LDA )
+ 50 CONTINUE
+ END IF
+*
+* Apply column interchanges.
+*
+ DO 60 J = N - 1, 1, -1
+ JP = IPIV( J )
+ IF( JP.NE.J )
+ $ CALL ZSWAP( N, A( 1, J ), 1, A( 1, JP ), 1 )
+ 60 CONTINUE
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZGETRI
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgetrs.f b/2.3-1/src/fortran/lapack/zgetrs.f
new file mode 100644
index 00000000..e32549cd
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgetrs.f
@@ -0,0 +1,149 @@
+ SUBROUTINE ZGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER INFO, LDA, LDB, N, NRHS
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGETRS solves a system of linear equations
+* A * X = B, A**T * X = B, or A**H * X = B
+* with a general N-by-N matrix A using the LU factorization computed
+* by ZGETRF.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* Specifies the form of the system of equations:
+* = 'N': A * X = B (No transpose)
+* = 'T': A**T * X = B (Transpose)
+* = 'C': A**H * X = B (Conjugate transpose)
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of columns
+* of the matrix B. NRHS >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The factors L and U from the factorization A = P*L*U
+* as computed by ZGETRF.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* IPIV (input) INTEGER array, dimension (N)
+* The pivot indices from ZGETRF; for 1<=i<=N, row i of the
+* matrix was interchanged with row IPIV(i).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB,NRHS)
+* On entry, the right hand side matrix B.
+* On exit, the solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLASWP, ZTRSM
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT.
+ $ LSAME( TRANS, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGETRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. NRHS.EQ.0 )
+ $ RETURN
+*
+ IF( NOTRAN ) THEN
+*
+* Solve A * X = B.
+*
+* Apply row interchanges to the right hand sides.
+*
+ CALL ZLASWP( NRHS, B, LDB, 1, N, IPIV, 1 )
+*
+* Solve L*X = B, overwriting B with X.
+*
+ CALL ZTRSM( 'Left', 'Lower', 'No transpose', 'Unit', N, NRHS,
+ $ ONE, A, LDA, B, LDB )
+*
+* Solve U*X = B, overwriting B with X.
+*
+ CALL ZTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', N,
+ $ NRHS, ONE, A, LDA, B, LDB )
+ ELSE
+*
+* Solve A**T * X = B or A**H * X = B.
+*
+* Solve U'*X = B, overwriting B with X.
+*
+ CALL ZTRSM( 'Left', 'Upper', TRANS, 'Non-unit', N, NRHS, ONE,
+ $ A, LDA, B, LDB )
+*
+* Solve L'*X = B, overwriting B with X.
+*
+ CALL ZTRSM( 'Left', 'Lower', TRANS, 'Unit', N, NRHS, ONE, A,
+ $ LDA, B, LDB )
+*
+* Apply row interchanges to the solution vectors.
+*
+ CALL ZLASWP( NRHS, B, LDB, 1, N, IPIV, -1 )
+ END IF
+*
+ RETURN
+*
+* End of ZGETRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zggbak.f b/2.3-1/src/fortran/lapack/zggbak.f
new file mode 100644
index 00000000..ad6dd032
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zggbak.f
@@ -0,0 +1,220 @@
+ SUBROUTINE ZGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
+ $ LDV, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB, SIDE
+ INTEGER IHI, ILO, INFO, LDV, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION LSCALE( * ), RSCALE( * )
+ COMPLEX*16 V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGGBAK forms the right or left eigenvectors of a complex generalized
+* eigenvalue problem A*x = lambda*B*x, by backward transformation on
+* the computed eigenvectors of the balanced pair of matrices output by
+* ZGGBAL.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the type of backward transformation required:
+* = 'N': do nothing, return immediately;
+* = 'P': do backward transformation for permutation only;
+* = 'S': do backward transformation for scaling only;
+* = 'B': do backward transformations for both permutation and
+* scaling.
+* JOB must be the same as the argument JOB supplied to ZGGBAL.
+*
+* SIDE (input) CHARACTER*1
+* = 'R': V contains right eigenvectors;
+* = 'L': V contains left eigenvectors.
+*
+* N (input) INTEGER
+* The number of rows of the matrix V. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* The integers ILO and IHI determined by ZGGBAL.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* LSCALE (input) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and/or scaling factors applied
+* to the left side of A and B, as returned by ZGGBAL.
+*
+* RSCALE (input) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and/or scaling factors applied
+* to the right side of A and B, as returned by ZGGBAL.
+*
+* M (input) INTEGER
+* The number of columns of the matrix V. M >= 0.
+*
+* V (input/output) COMPLEX*16 array, dimension (LDV,M)
+* On entry, the matrix of right or left eigenvectors to be
+* transformed, as returned by ZTGEVC.
+* On exit, V is overwritten by the transformed eigenvectors.
+*
+* LDV (input) INTEGER
+* The leading dimension of the matrix V. LDV >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* See R.C. Ward, Balancing the generalized eigenvalue problem,
+* SIAM J. Sci. Stat. Comp. 2 (1981), 141-152.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LEFTV, RIGHTV
+ INTEGER I, K
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZDSCAL, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ RIGHTV = LSAME( SIDE, 'R' )
+ LEFTV = LSAME( SIDE, 'L' )
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 ) THEN
+ INFO = -4
+ ELSE IF( N.EQ.0 .AND. IHI.EQ.0 .AND. ILO.NE.1 ) THEN
+ INFO = -4
+ ELSE IF( N.GT.0 .AND. ( IHI.LT.ILO .OR. IHI.GT.MAX( 1, N ) ) )
+ $ THEN
+ INFO = -5
+ ELSE IF( N.EQ.0 .AND. ILO.EQ.1 .AND. IHI.NE.0 ) THEN
+ INFO = -5
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -8
+ ELSE IF( LDV.LT.MAX( 1, N ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGGBAK', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( M.EQ.0 )
+ $ RETURN
+ IF( LSAME( JOB, 'N' ) )
+ $ RETURN
+*
+ IF( ILO.EQ.IHI )
+ $ GO TO 30
+*
+* Backward balance
+*
+ IF( LSAME( JOB, 'S' ) .OR. LSAME( JOB, 'B' ) ) THEN
+*
+* Backward transformation on right eigenvectors
+*
+ IF( RIGHTV ) THEN
+ DO 10 I = ILO, IHI
+ CALL ZDSCAL( M, RSCALE( I ), V( I, 1 ), LDV )
+ 10 CONTINUE
+ END IF
+*
+* Backward transformation on left eigenvectors
+*
+ IF( LEFTV ) THEN
+ DO 20 I = ILO, IHI
+ CALL ZDSCAL( M, LSCALE( I ), V( I, 1 ), LDV )
+ 20 CONTINUE
+ END IF
+ END IF
+*
+* Backward permutation
+*
+ 30 CONTINUE
+ IF( LSAME( JOB, 'P' ) .OR. LSAME( JOB, 'B' ) ) THEN
+*
+* Backward permutation on right eigenvectors
+*
+ IF( RIGHTV ) THEN
+ IF( ILO.EQ.1 )
+ $ GO TO 50
+ DO 40 I = ILO - 1, 1, -1
+ K = RSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 40
+ CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 40 CONTINUE
+*
+ 50 CONTINUE
+ IF( IHI.EQ.N )
+ $ GO TO 70
+ DO 60 I = IHI + 1, N
+ K = RSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 60
+ CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 60 CONTINUE
+ END IF
+*
+* Backward permutation on left eigenvectors
+*
+ 70 CONTINUE
+ IF( LEFTV ) THEN
+ IF( ILO.EQ.1 )
+ $ GO TO 90
+ DO 80 I = ILO - 1, 1, -1
+ K = LSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 80
+ CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 80 CONTINUE
+*
+ 90 CONTINUE
+ IF( IHI.EQ.N )
+ $ GO TO 110
+ DO 100 I = IHI + 1, N
+ K = LSCALE( I )
+ IF( K.EQ.I )
+ $ GO TO 100
+ CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
+ 100 CONTINUE
+ END IF
+ END IF
+*
+ 110 CONTINUE
+*
+ RETURN
+*
+* End of ZGGBAK
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zggbal.f b/2.3-1/src/fortran/lapack/zggbal.f
new file mode 100644
index 00000000..b75ae456
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zggbal.f
@@ -0,0 +1,482 @@
+ SUBROUTINE ZGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE,
+ $ RSCALE, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOB
+ INTEGER IHI, ILO, INFO, LDA, LDB, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION LSCALE( * ), RSCALE( * ), WORK( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGGBAL balances a pair of general complex matrices (A,B). This
+* involves, first, permuting A and B by similarity transformations to
+* isolate eigenvalues in the first 1 to ILO$-$1 and last IHI+1 to N
+* elements on the diagonal; and second, applying a diagonal similarity
+* transformation to rows and columns ILO to IHI to make the rows
+* and columns as close in norm as possible. Both steps are optional.
+*
+* Balancing may reduce the 1-norm of the matrices, and improve the
+* accuracy of the computed eigenvalues and/or eigenvectors in the
+* generalized eigenvalue problem A*x = lambda*B*x.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies the operations to be performed on A and B:
+* = 'N': none: simply set ILO = 1, IHI = N, LSCALE(I) = 1.0
+* and RSCALE(I) = 1.0 for i=1,...,N;
+* = 'P': permute only;
+* = 'S': scale only;
+* = 'B': both permute and scale.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the input matrix A.
+* On exit, A is overwritten by the balanced matrix.
+* If JOB = 'N', A is not referenced.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB,N)
+* On entry, the input matrix B.
+* On exit, B is overwritten by the balanced matrix.
+* If JOB = 'N', B is not referenced.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* ILO (output) INTEGER
+* IHI (output) INTEGER
+* ILO and IHI are set to integers such that on exit
+* A(i,j) = 0 and B(i,j) = 0 if i > j and
+* j = 1,...,ILO-1 or i = IHI+1,...,N.
+* If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*
+* LSCALE (output) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and scaling factors applied
+* to the left side of A and B. If P(j) is the index of the
+* row interchanged with row j, and D(j) is the scaling factor
+* applied to row j, then
+* LSCALE(j) = P(j) for J = 1,...,ILO-1
+* = D(j) for J = ILO,...,IHI
+* = P(j) for J = IHI+1,...,N.
+* The order in which the interchanges are made is N to IHI+1,
+* then 1 to ILO-1.
+*
+* RSCALE (output) DOUBLE PRECISION array, dimension (N)
+* Details of the permutations and scaling factors applied
+* to the right side of A and B. If P(j) is the index of the
+* column interchanged with column j, and D(j) is the scaling
+* factor applied to column j, then
+* RSCALE(j) = P(j) for J = 1,...,ILO-1
+* = D(j) for J = ILO,...,IHI
+* = P(j) for J = IHI+1,...,N.
+* The order in which the interchanges are made is N to IHI+1,
+* then 1 to ILO-1.
+*
+* WORK (workspace) REAL array, dimension (lwork)
+* lwork must be at least max(1,6*N) when JOB = 'S' or 'B', and
+* at least 1 when JOB = 'N' or 'P'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* See R.C. WARD, Balancing the generalized eigenvalue problem,
+* SIAM J. Sci. Stat. Comp. 2 (1981), 141-152.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, HALF, ONE
+ PARAMETER ( ZERO = 0.0D+0, HALF = 0.5D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION THREE, SCLFAC
+ PARAMETER ( THREE = 3.0D+0, SCLFAC = 1.0D+1 )
+ COMPLEX*16 CZERO
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ICAB, IFLOW, IP1, IR, IRAB, IT, J, JC, JP1,
+ $ K, KOUNT, L, LCAB, LM1, LRAB, LSFMAX, LSFMIN,
+ $ M, NR, NRP2
+ DOUBLE PRECISION ALPHA, BASL, BETA, CAB, CMAX, COEF, COEF2,
+ $ COEF5, COR, EW, EWC, GAMMA, PGAMMA, RAB, SFMAX,
+ $ SFMIN, SUM, T, TA, TB, TC
+ COMPLEX*16 CDUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IZAMAX
+ DOUBLE PRECISION DDOT, DLAMCH
+ EXTERNAL LSAME, IZAMAX, DDOT, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DAXPY, DSCAL, XERBLA, ZDSCAL, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DIMAG, INT, LOG10, MAX, MIN, SIGN
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND.
+ $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGGBAL', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ ILO = 1
+ IHI = N
+ RETURN
+ END IF
+*
+ IF( N.EQ.1 ) THEN
+ ILO = 1
+ IHI = N
+ LSCALE( 1 ) = ONE
+ RSCALE( 1 ) = ONE
+ RETURN
+ END IF
+*
+ IF( LSAME( JOB, 'N' ) ) THEN
+ ILO = 1
+ IHI = N
+ DO 10 I = 1, N
+ LSCALE( I ) = ONE
+ RSCALE( I ) = ONE
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ K = 1
+ L = N
+ IF( LSAME( JOB, 'S' ) )
+ $ GO TO 190
+*
+ GO TO 30
+*
+* Permute the matrices A and B to isolate the eigenvalues.
+*
+* Find row with one nonzero in columns 1 through L
+*
+ 20 CONTINUE
+ L = LM1
+ IF( L.NE.1 )
+ $ GO TO 30
+*
+ RSCALE( 1 ) = 1
+ LSCALE( 1 ) = 1
+ GO TO 190
+*
+ 30 CONTINUE
+ LM1 = L - 1
+ DO 80 I = L, 1, -1
+ DO 40 J = 1, LM1
+ JP1 = J + 1
+ IF( A( I, J ).NE.CZERO .OR. B( I, J ).NE.CZERO )
+ $ GO TO 50
+ 40 CONTINUE
+ J = L
+ GO TO 70
+*
+ 50 CONTINUE
+ DO 60 J = JP1, L
+ IF( A( I, J ).NE.CZERO .OR. B( I, J ).NE.CZERO )
+ $ GO TO 80
+ 60 CONTINUE
+ J = JP1 - 1
+*
+ 70 CONTINUE
+ M = L
+ IFLOW = 1
+ GO TO 160
+ 80 CONTINUE
+ GO TO 100
+*
+* Find column with one nonzero in rows K through N
+*
+ 90 CONTINUE
+ K = K + 1
+*
+ 100 CONTINUE
+ DO 150 J = K, L
+ DO 110 I = K, LM1
+ IP1 = I + 1
+ IF( A( I, J ).NE.CZERO .OR. B( I, J ).NE.CZERO )
+ $ GO TO 120
+ 110 CONTINUE
+ I = L
+ GO TO 140
+ 120 CONTINUE
+ DO 130 I = IP1, L
+ IF( A( I, J ).NE.CZERO .OR. B( I, J ).NE.CZERO )
+ $ GO TO 150
+ 130 CONTINUE
+ I = IP1 - 1
+ 140 CONTINUE
+ M = K
+ IFLOW = 2
+ GO TO 160
+ 150 CONTINUE
+ GO TO 190
+*
+* Permute rows M and I
+*
+ 160 CONTINUE
+ LSCALE( M ) = I
+ IF( I.EQ.M )
+ $ GO TO 170
+ CALL ZSWAP( N-K+1, A( I, K ), LDA, A( M, K ), LDA )
+ CALL ZSWAP( N-K+1, B( I, K ), LDB, B( M, K ), LDB )
+*
+* Permute columns M and J
+*
+ 170 CONTINUE
+ RSCALE( M ) = J
+ IF( J.EQ.M )
+ $ GO TO 180
+ CALL ZSWAP( L, A( 1, J ), 1, A( 1, M ), 1 )
+ CALL ZSWAP( L, B( 1, J ), 1, B( 1, M ), 1 )
+*
+ 180 CONTINUE
+ GO TO ( 20, 90 )IFLOW
+*
+ 190 CONTINUE
+ ILO = K
+ IHI = L
+*
+ IF( LSAME( JOB, 'P' ) ) THEN
+ DO 195 I = ILO, IHI
+ LSCALE( I ) = ONE
+ RSCALE( I ) = ONE
+ 195 CONTINUE
+ RETURN
+ END IF
+*
+ IF( ILO.EQ.IHI )
+ $ RETURN
+*
+* Balance the submatrix in rows ILO to IHI.
+*
+ NR = IHI - ILO + 1
+ DO 200 I = ILO, IHI
+ RSCALE( I ) = ZERO
+ LSCALE( I ) = ZERO
+*
+ WORK( I ) = ZERO
+ WORK( I+N ) = ZERO
+ WORK( I+2*N ) = ZERO
+ WORK( I+3*N ) = ZERO
+ WORK( I+4*N ) = ZERO
+ WORK( I+5*N ) = ZERO
+ 200 CONTINUE
+*
+* Compute right side vector in resulting linear equations
+*
+ BASL = LOG10( SCLFAC )
+ DO 240 I = ILO, IHI
+ DO 230 J = ILO, IHI
+ IF( A( I, J ).EQ.CZERO ) THEN
+ TA = ZERO
+ GO TO 210
+ END IF
+ TA = LOG10( CABS1( A( I, J ) ) ) / BASL
+*
+ 210 CONTINUE
+ IF( B( I, J ).EQ.CZERO ) THEN
+ TB = ZERO
+ GO TO 220
+ END IF
+ TB = LOG10( CABS1( B( I, J ) ) ) / BASL
+*
+ 220 CONTINUE
+ WORK( I+4*N ) = WORK( I+4*N ) - TA - TB
+ WORK( J+5*N ) = WORK( J+5*N ) - TA - TB
+ 230 CONTINUE
+ 240 CONTINUE
+*
+ COEF = ONE / DBLE( 2*NR )
+ COEF2 = COEF*COEF
+ COEF5 = HALF*COEF2
+ NRP2 = NR + 2
+ BETA = ZERO
+ IT = 1
+*
+* Start generalized conjugate gradient iteration
+*
+ 250 CONTINUE
+*
+ GAMMA = DDOT( NR, WORK( ILO+4*N ), 1, WORK( ILO+4*N ), 1 ) +
+ $ DDOT( NR, WORK( ILO+5*N ), 1, WORK( ILO+5*N ), 1 )
+*
+ EW = ZERO
+ EWC = ZERO
+ DO 260 I = ILO, IHI
+ EW = EW + WORK( I+4*N )
+ EWC = EWC + WORK( I+5*N )
+ 260 CONTINUE
+*
+ GAMMA = COEF*GAMMA - COEF2*( EW**2+EWC**2 ) - COEF5*( EW-EWC )**2
+ IF( GAMMA.EQ.ZERO )
+ $ GO TO 350
+ IF( IT.NE.1 )
+ $ BETA = GAMMA / PGAMMA
+ T = COEF5*( EWC-THREE*EW )
+ TC = COEF5*( EW-THREE*EWC )
+*
+ CALL DSCAL( NR, BETA, WORK( ILO ), 1 )
+ CALL DSCAL( NR, BETA, WORK( ILO+N ), 1 )
+*
+ CALL DAXPY( NR, COEF, WORK( ILO+4*N ), 1, WORK( ILO+N ), 1 )
+ CALL DAXPY( NR, COEF, WORK( ILO+5*N ), 1, WORK( ILO ), 1 )
+*
+ DO 270 I = ILO, IHI
+ WORK( I ) = WORK( I ) + TC
+ WORK( I+N ) = WORK( I+N ) + T
+ 270 CONTINUE
+*
+* Apply matrix to vector
+*
+ DO 300 I = ILO, IHI
+ KOUNT = 0
+ SUM = ZERO
+ DO 290 J = ILO, IHI
+ IF( A( I, J ).EQ.CZERO )
+ $ GO TO 280
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( J )
+ 280 CONTINUE
+ IF( B( I, J ).EQ.CZERO )
+ $ GO TO 290
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( J )
+ 290 CONTINUE
+ WORK( I+2*N ) = DBLE( KOUNT )*WORK( I+N ) + SUM
+ 300 CONTINUE
+*
+ DO 330 J = ILO, IHI
+ KOUNT = 0
+ SUM = ZERO
+ DO 320 I = ILO, IHI
+ IF( A( I, J ).EQ.CZERO )
+ $ GO TO 310
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( I+N )
+ 310 CONTINUE
+ IF( B( I, J ).EQ.CZERO )
+ $ GO TO 320
+ KOUNT = KOUNT + 1
+ SUM = SUM + WORK( I+N )
+ 320 CONTINUE
+ WORK( J+3*N ) = DBLE( KOUNT )*WORK( J ) + SUM
+ 330 CONTINUE
+*
+ SUM = DDOT( NR, WORK( ILO+N ), 1, WORK( ILO+2*N ), 1 ) +
+ $ DDOT( NR, WORK( ILO ), 1, WORK( ILO+3*N ), 1 )
+ ALPHA = GAMMA / SUM
+*
+* Determine correction to current iteration
+*
+ CMAX = ZERO
+ DO 340 I = ILO, IHI
+ COR = ALPHA*WORK( I+N )
+ IF( ABS( COR ).GT.CMAX )
+ $ CMAX = ABS( COR )
+ LSCALE( I ) = LSCALE( I ) + COR
+ COR = ALPHA*WORK( I )
+ IF( ABS( COR ).GT.CMAX )
+ $ CMAX = ABS( COR )
+ RSCALE( I ) = RSCALE( I ) + COR
+ 340 CONTINUE
+ IF( CMAX.LT.HALF )
+ $ GO TO 350
+*
+ CALL DAXPY( NR, -ALPHA, WORK( ILO+2*N ), 1, WORK( ILO+4*N ), 1 )
+ CALL DAXPY( NR, -ALPHA, WORK( ILO+3*N ), 1, WORK( ILO+5*N ), 1 )
+*
+ PGAMMA = GAMMA
+ IT = IT + 1
+ IF( IT.LE.NRP2 )
+ $ GO TO 250
+*
+* End generalized conjugate gradient iteration
+*
+ 350 CONTINUE
+ SFMIN = DLAMCH( 'S' )
+ SFMAX = ONE / SFMIN
+ LSFMIN = INT( LOG10( SFMIN ) / BASL+ONE )
+ LSFMAX = INT( LOG10( SFMAX ) / BASL )
+ DO 360 I = ILO, IHI
+ IRAB = IZAMAX( N-ILO+1, A( I, ILO ), LDA )
+ RAB = ABS( A( I, IRAB+ILO-1 ) )
+ IRAB = IZAMAX( N-ILO+1, B( I, ILO ), LDB )
+ RAB = MAX( RAB, ABS( B( I, IRAB+ILO-1 ) ) )
+ LRAB = INT( LOG10( RAB+SFMIN ) / BASL+ONE )
+ IR = LSCALE( I ) + SIGN( HALF, LSCALE( I ) )
+ IR = MIN( MAX( IR, LSFMIN ), LSFMAX, LSFMAX-LRAB )
+ LSCALE( I ) = SCLFAC**IR
+ ICAB = IZAMAX( IHI, A( 1, I ), 1 )
+ CAB = ABS( A( ICAB, I ) )
+ ICAB = IZAMAX( IHI, B( 1, I ), 1 )
+ CAB = MAX( CAB, ABS( B( ICAB, I ) ) )
+ LCAB = INT( LOG10( CAB+SFMIN ) / BASL+ONE )
+ JC = RSCALE( I ) + SIGN( HALF, RSCALE( I ) )
+ JC = MIN( MAX( JC, LSFMIN ), LSFMAX, LSFMAX-LCAB )
+ RSCALE( I ) = SCLFAC**JC
+ 360 CONTINUE
+*
+* Row scaling of matrices A and B
+*
+ DO 370 I = ILO, IHI
+ CALL ZDSCAL( N-ILO+1, LSCALE( I ), A( I, ILO ), LDA )
+ CALL ZDSCAL( N-ILO+1, LSCALE( I ), B( I, ILO ), LDB )
+ 370 CONTINUE
+*
+* Column scaling of matrices A and B
+*
+ DO 380 J = ILO, IHI
+ CALL ZDSCAL( IHI, RSCALE( J ), A( 1, J ), 1 )
+ CALL ZDSCAL( IHI, RSCALE( J ), B( 1, J ), 1 )
+ 380 CONTINUE
+*
+ RETURN
+*
+* End of ZGGBAL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgges.f b/2.3-1/src/fortran/lapack/zgges.f
new file mode 100644
index 00000000..c1499003
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgges.f
@@ -0,0 +1,477 @@
+ SUBROUTINE ZGGES( JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB,
+ $ SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK,
+ $ LWORK, RWORK, BWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVSL, JOBVSR, SORT
+ INTEGER INFO, LDA, LDB, LDVSL, LDVSR, LWORK, N, SDIM
+* ..
+* .. Array Arguments ..
+ LOGICAL BWORK( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), ALPHA( * ), B( LDB, * ),
+ $ BETA( * ), VSL( LDVSL, * ), VSR( LDVSR, * ),
+ $ WORK( * )
+* ..
+* .. Function Arguments ..
+ LOGICAL SELCTG
+ EXTERNAL SELCTG
+* ..
+*
+* Purpose
+* =======
+*
+* ZGGES computes for a pair of N-by-N complex nonsymmetric matrices
+* (A,B), the generalized eigenvalues, the generalized complex Schur
+* form (S, T), and optionally left and/or right Schur vectors (VSL
+* and VSR). This gives the generalized Schur factorization
+*
+* (A,B) = ( (VSL)*S*(VSR)**H, (VSL)*T*(VSR)**H )
+*
+* where (VSR)**H is the conjugate-transpose of VSR.
+*
+* Optionally, it also orders the eigenvalues so that a selected cluster
+* of eigenvalues appears in the leading diagonal blocks of the upper
+* triangular matrix S and the upper triangular matrix T. The leading
+* columns of VSL and VSR then form an unitary basis for the
+* corresponding left and right eigenspaces (deflating subspaces).
+*
+* (If only the generalized eigenvalues are needed, use the driver
+* ZGGEV instead, which is faster.)
+*
+* A generalized eigenvalue for a pair of matrices (A,B) is a scalar w
+* or a ratio alpha/beta = w, such that A - w*B is singular. It is
+* usually represented as the pair (alpha,beta), as there is a
+* reasonable interpretation for beta=0, and even for both being zero.
+*
+* A pair of matrices (S,T) is in generalized complex Schur form if S
+* and T are upper triangular and, in addition, the diagonal elements
+* of T are non-negative real numbers.
+*
+* Arguments
+* =========
+*
+* JOBVSL (input) CHARACTER*1
+* = 'N': do not compute the left Schur vectors;
+* = 'V': compute the left Schur vectors.
+*
+* JOBVSR (input) CHARACTER*1
+* = 'N': do not compute the right Schur vectors;
+* = 'V': compute the right Schur vectors.
+*
+* SORT (input) CHARACTER*1
+* Specifies whether or not to order the eigenvalues on the
+* diagonal of the generalized Schur form.
+* = 'N': Eigenvalues are not ordered;
+* = 'S': Eigenvalues are ordered (see SELCTG).
+*
+* SELCTG (external procedure) LOGICAL FUNCTION of two COMPLEX*16 arguments
+* SELCTG must be declared EXTERNAL in the calling subroutine.
+* If SORT = 'N', SELCTG is not referenced.
+* If SORT = 'S', SELCTG is used to select eigenvalues to sort
+* to the top left of the Schur form.
+* An eigenvalue ALPHA(j)/BETA(j) is selected if
+* SELCTG(ALPHA(j),BETA(j)) is true.
+*
+* Note that a selected complex eigenvalue may no longer satisfy
+* SELCTG(ALPHA(j),BETA(j)) = .TRUE. after ordering, since
+* ordering may change the value of complex eigenvalues
+* (especially if the eigenvalue is ill-conditioned), in this
+* case INFO is set to N+2 (See INFO below).
+*
+* N (input) INTEGER
+* The order of the matrices A, B, VSL, and VSR. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA, N)
+* On entry, the first of the pair of matrices.
+* On exit, A has been overwritten by its generalized Schur
+* form S.
+*
+* LDA (input) INTEGER
+* The leading dimension of A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB, N)
+* On entry, the second of the pair of matrices.
+* On exit, B has been overwritten by its generalized Schur
+* form T.
+*
+* LDB (input) INTEGER
+* The leading dimension of B. LDB >= max(1,N).
+*
+* SDIM (output) INTEGER
+* If SORT = 'N', SDIM = 0.
+* If SORT = 'S', SDIM = number of eigenvalues (after sorting)
+* for which SELCTG is true.
+*
+* ALPHA (output) COMPLEX*16 array, dimension (N)
+* BETA (output) COMPLEX*16 array, dimension (N)
+* On exit, ALPHA(j)/BETA(j), j=1,...,N, will be the
+* generalized eigenvalues. ALPHA(j), j=1,...,N and BETA(j),
+* j=1,...,N are the diagonals of the complex Schur form (A,B)
+* output by ZGGES. The BETA(j) will be non-negative real.
+*
+* Note: the quotients ALPHA(j)/BETA(j) may easily over- or
+* underflow, and BETA(j) may even be zero. Thus, the user
+* should avoid naively computing the ratio alpha/beta.
+* However, ALPHA will be always less than and usually
+* comparable with norm(A) in magnitude, and BETA always less
+* than and usually comparable with norm(B).
+*
+* VSL (output) COMPLEX*16 array, dimension (LDVSL,N)
+* If JOBVSL = 'V', VSL will contain the left Schur vectors.
+* Not referenced if JOBVSL = 'N'.
+*
+* LDVSL (input) INTEGER
+* The leading dimension of the matrix VSL. LDVSL >= 1, and
+* if JOBVSL = 'V', LDVSL >= N.
+*
+* VSR (output) COMPLEX*16 array, dimension (LDVSR,N)
+* If JOBVSR = 'V', VSR will contain the right Schur vectors.
+* Not referenced if JOBVSR = 'N'.
+*
+* LDVSR (input) INTEGER
+* The leading dimension of the matrix VSR. LDVSR >= 1, and
+* if JOBVSR = 'V', LDVSR >= N.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,2*N).
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (8*N)
+*
+* BWORK (workspace) LOGICAL array, dimension (N)
+* Not referenced if SORT = 'N'.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* =1,...,N:
+* The QZ iteration failed. (A,B) are not in Schur
+* form, but ALPHA(j) and BETA(j) should be correct for
+* j=INFO+1,...,N.
+* > N: =N+1: other than QZ iteration failed in ZHGEQZ
+* =N+2: after reordering, roundoff changed values of
+* some complex eigenvalues so that leading
+* eigenvalues in the Generalized Schur form no
+* longer satisfy SELCTG=.TRUE. This could also
+* be caused due to scaling.
+* =N+3: reordering falied in ZTGSEN.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
+ $ CONE = ( 1.0D0, 0.0D0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL CURSL, ILASCL, ILBSCL, ILVSL, ILVSR, LASTSL,
+ $ LQUERY, WANTST
+ INTEGER I, ICOLS, IERR, IHI, IJOBVL, IJOBVR, ILEFT,
+ $ ILO, IRIGHT, IROWS, IRWRK, ITAU, IWRK, LWKMIN,
+ $ LWKOPT
+ DOUBLE PRECISION ANRM, ANRMTO, BIGNUM, BNRM, BNRMTO, EPS, PVSL,
+ $ PVSR, SMLNUM
+* ..
+* .. Local Arrays ..
+ INTEGER IDUM( 1 )
+ DOUBLE PRECISION DIF( 2 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZGEQRF, ZGGBAK, ZGGBAL, ZGGHRD,
+ $ ZHGEQZ, ZLACPY, ZLASCL, ZLASET, ZTGSEN, ZUNGQR,
+ $ ZUNMQR
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, ZLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, ZLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode the input arguments
+*
+ IF( LSAME( JOBVSL, 'N' ) ) THEN
+ IJOBVL = 1
+ ILVSL = .FALSE.
+ ELSE IF( LSAME( JOBVSL, 'V' ) ) THEN
+ IJOBVL = 2
+ ILVSL = .TRUE.
+ ELSE
+ IJOBVL = -1
+ ILVSL = .FALSE.
+ END IF
+*
+ IF( LSAME( JOBVSR, 'N' ) ) THEN
+ IJOBVR = 1
+ ILVSR = .FALSE.
+ ELSE IF( LSAME( JOBVSR, 'V' ) ) THEN
+ IJOBVR = 2
+ ILVSR = .TRUE.
+ ELSE
+ IJOBVR = -1
+ ILVSR = .FALSE.
+ END IF
+*
+ WANTST = LSAME( SORT, 'S' )
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( IJOBVL.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( IJOBVR.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( LDVSL.LT.1 .OR. ( ILVSL .AND. LDVSL.LT.N ) ) THEN
+ INFO = -14
+ ELSE IF( LDVSR.LT.1 .OR. ( ILVSR .AND. LDVSR.LT.N ) ) THEN
+ INFO = -16
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV.)
+*
+ IF( INFO.EQ.0 ) THEN
+ LWKMIN = MAX( 1, 2*N )
+ LWKOPT = MAX( 1, N + N*ILAENV( 1, 'ZGEQRF', ' ', N, 1, N, 0 ) )
+ LWKOPT = MAX( LWKOPT, N +
+ $ N*ILAENV( 1, 'ZUNMQR', ' ', N, 1, N, -1 ) )
+ IF( ILVSL ) THEN
+ LWKOPT = MAX( LWKOPT, N +
+ $ N*ILAENV( 1, 'ZUNGQR', ' ', N, 1, N, -1 ) )
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY )
+ $ INFO = -18
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGGES ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ SDIM = 0
+ RETURN
+ END IF
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', N, N, A, LDA, RWORK )
+ ILASCL = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ANRMTO = SMLNUM
+ ILASCL = .TRUE.
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ANRMTO = BIGNUM
+ ILASCL = .TRUE.
+ END IF
+*
+ IF( ILASCL )
+ $ CALL ZLASCL( 'G', 0, 0, ANRM, ANRMTO, N, N, A, LDA, IERR )
+*
+* Scale B if max element outside range [SMLNUM,BIGNUM]
+*
+ BNRM = ZLANGE( 'M', N, N, B, LDB, RWORK )
+ ILBSCL = .FALSE.
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+ BNRMTO = SMLNUM
+ ILBSCL = .TRUE.
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+ BNRMTO = BIGNUM
+ ILBSCL = .TRUE.
+ END IF
+*
+ IF( ILBSCL )
+ $ CALL ZLASCL( 'G', 0, 0, BNRM, BNRMTO, N, N, B, LDB, IERR )
+*
+* Permute the matrix to make it more nearly triangular
+* (Real Workspace: need 6*N)
+*
+ ILEFT = 1
+ IRIGHT = N + 1
+ IRWRK = IRIGHT + N
+ CALL ZGGBAL( 'P', N, A, LDA, B, LDB, ILO, IHI, RWORK( ILEFT ),
+ $ RWORK( IRIGHT ), RWORK( IRWRK ), IERR )
+*
+* Reduce B to triangular form (QR decomposition of B)
+* (Complex Workspace: need N, prefer N*NB)
+*
+ IROWS = IHI + 1 - ILO
+ ICOLS = N + 1 - ILO
+ ITAU = 1
+ IWRK = ITAU + IROWS
+ CALL ZGEQRF( IROWS, ICOLS, B( ILO, ILO ), LDB, WORK( ITAU ),
+ $ WORK( IWRK ), LWORK+1-IWRK, IERR )
+*
+* Apply the orthogonal transformation to matrix A
+* (Complex Workspace: need N, prefer N*NB)
+*
+ CALL ZUNMQR( 'L', 'C', IROWS, ICOLS, IROWS, B( ILO, ILO ), LDB,
+ $ WORK( ITAU ), A( ILO, ILO ), LDA, WORK( IWRK ),
+ $ LWORK+1-IWRK, IERR )
+*
+* Initialize VSL
+* (Complex Workspace: need N, prefer N*NB)
+*
+ IF( ILVSL ) THEN
+ CALL ZLASET( 'Full', N, N, CZERO, CONE, VSL, LDVSL )
+ IF( IROWS.GT.1 ) THEN
+ CALL ZLACPY( 'L', IROWS-1, IROWS-1, B( ILO+1, ILO ), LDB,
+ $ VSL( ILO+1, ILO ), LDVSL )
+ END IF
+ CALL ZUNGQR( IROWS, IROWS, IROWS, VSL( ILO, ILO ), LDVSL,
+ $ WORK( ITAU ), WORK( IWRK ), LWORK+1-IWRK, IERR )
+ END IF
+*
+* Initialize VSR
+*
+ IF( ILVSR )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, VSR, LDVSR )
+*
+* Reduce to generalized Hessenberg form
+* (Workspace: none needed)
+*
+ CALL ZGGHRD( JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB, VSL,
+ $ LDVSL, VSR, LDVSR, IERR )
+*
+ SDIM = 0
+*
+* Perform QZ algorithm, computing Schur vectors if desired
+* (Complex Workspace: need N)
+* (Real Workspace: need N)
+*
+ IWRK = ITAU
+ CALL ZHGEQZ( 'S', JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB,
+ $ ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK( IWRK ),
+ $ LWORK+1-IWRK, RWORK( IRWRK ), IERR )
+ IF( IERR.NE.0 ) THEN
+ IF( IERR.GT.0 .AND. IERR.LE.N ) THEN
+ INFO = IERR
+ ELSE IF( IERR.GT.N .AND. IERR.LE.2*N ) THEN
+ INFO = IERR - N
+ ELSE
+ INFO = N + 1
+ END IF
+ GO TO 30
+ END IF
+*
+* Sort eigenvalues ALPHA/BETA if desired
+* (Workspace: none needed)
+*
+ IF( WANTST ) THEN
+*
+* Undo scaling on eigenvalues before selecting
+*
+ IF( ILASCL )
+ $ CALL ZLASCL( 'G', 0, 0, ANRM, ANRMTO, N, 1, ALPHA, N, IERR )
+ IF( ILBSCL )
+ $ CALL ZLASCL( 'G', 0, 0, BNRM, BNRMTO, N, 1, BETA, N, IERR )
+*
+* Select eigenvalues
+*
+ DO 10 I = 1, N
+ BWORK( I ) = SELCTG( ALPHA( I ), BETA( I ) )
+ 10 CONTINUE
+*
+ CALL ZTGSEN( 0, ILVSL, ILVSR, BWORK, N, A, LDA, B, LDB, ALPHA,
+ $ BETA, VSL, LDVSL, VSR, LDVSR, SDIM, PVSL, PVSR,
+ $ DIF, WORK( IWRK ), LWORK-IWRK+1, IDUM, 1, IERR )
+ IF( IERR.EQ.1 )
+ $ INFO = N + 3
+*
+ END IF
+*
+* Apply back-permutation to VSL and VSR
+* (Workspace: none needed)
+*
+ IF( ILVSL )
+ $ CALL ZGGBAK( 'P', 'L', N, ILO, IHI, RWORK( ILEFT ),
+ $ RWORK( IRIGHT ), N, VSL, LDVSL, IERR )
+ IF( ILVSR )
+ $ CALL ZGGBAK( 'P', 'R', N, ILO, IHI, RWORK( ILEFT ),
+ $ RWORK( IRIGHT ), N, VSR, LDVSR, IERR )
+*
+* Undo scaling
+*
+ IF( ILASCL ) THEN
+ CALL ZLASCL( 'U', 0, 0, ANRMTO, ANRM, N, N, A, LDA, IERR )
+ CALL ZLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHA, N, IERR )
+ END IF
+*
+ IF( ILBSCL ) THEN
+ CALL ZLASCL( 'U', 0, 0, BNRMTO, BNRM, N, N, B, LDB, IERR )
+ CALL ZLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
+ END IF
+*
+ IF( WANTST ) THEN
+*
+* Check if reordering is correct
+*
+ LASTSL = .TRUE.
+ SDIM = 0
+ DO 20 I = 1, N
+ CURSL = SELCTG( ALPHA( I ), BETA( I ) )
+ IF( CURSL )
+ $ SDIM = SDIM + 1
+ IF( CURSL .AND. .NOT.LASTSL )
+ $ INFO = N + 2
+ LASTSL = CURSL
+ 20 CONTINUE
+*
+ END IF
+*
+ 30 CONTINUE
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of ZGGES
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zggev.f b/2.3-1/src/fortran/lapack/zggev.f
new file mode 100644
index 00000000..94fb3dc2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zggev.f
@@ -0,0 +1,454 @@
+ SUBROUTINE ZGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA,
+ $ VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDB, LDVL, LDVR, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), ALPHA( * ), B( LDB, * ),
+ $ BETA( * ), VL( LDVL, * ), VR( LDVR, * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGGEV computes for a pair of N-by-N complex nonsymmetric matrices
+* (A,B), the generalized eigenvalues, and optionally, the left and/or
+* right generalized eigenvectors.
+*
+* A generalized eigenvalue for a pair of matrices (A,B) is a scalar
+* lambda or a ratio alpha/beta = lambda, such that A - lambda*B is
+* singular. It is usually represented as the pair (alpha,beta), as
+* there is a reasonable interpretation for beta=0, and even for both
+* being zero.
+*
+* The right generalized eigenvector v(j) corresponding to the
+* generalized eigenvalue lambda(j) of (A,B) satisfies
+*
+* A * v(j) = lambda(j) * B * v(j).
+*
+* The left generalized eigenvector u(j) corresponding to the
+* generalized eigenvalues lambda(j) of (A,B) satisfies
+*
+* u(j)**H * A = lambda(j) * u(j)**H * B
+*
+* where u(j)**H is the conjugate-transpose of u(j).
+*
+* Arguments
+* =========
+*
+* JOBVL (input) CHARACTER*1
+* = 'N': do not compute the left generalized eigenvectors;
+* = 'V': compute the left generalized eigenvectors.
+*
+* JOBVR (input) CHARACTER*1
+* = 'N': do not compute the right generalized eigenvectors;
+* = 'V': compute the right generalized eigenvectors.
+*
+* N (input) INTEGER
+* The order of the matrices A, B, VL, and VR. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA, N)
+* On entry, the matrix A in the pair (A,B).
+* On exit, A has been overwritten.
+*
+* LDA (input) INTEGER
+* The leading dimension of A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB, N)
+* On entry, the matrix B in the pair (A,B).
+* On exit, B has been overwritten.
+*
+* LDB (input) INTEGER
+* The leading dimension of B. LDB >= max(1,N).
+*
+* ALPHA (output) COMPLEX*16 array, dimension (N)
+* BETA (output) COMPLEX*16 array, dimension (N)
+* On exit, ALPHA(j)/BETA(j), j=1,...,N, will be the
+* generalized eigenvalues.
+*
+* Note: the quotients ALPHA(j)/BETA(j) may easily over- or
+* underflow, and BETA(j) may even be zero. Thus, the user
+* should avoid naively computing the ratio alpha/beta.
+* However, ALPHA will be always less than and usually
+* comparable with norm(A) in magnitude, and BETA always less
+* than and usually comparable with norm(B).
+*
+* VL (output) COMPLEX*16 array, dimension (LDVL,N)
+* If JOBVL = 'V', the left generalized eigenvectors u(j) are
+* stored one after another in the columns of VL, in the same
+* order as their eigenvalues.
+* Each eigenvector is scaled so the largest component has
+* abs(real part) + abs(imag. part) = 1.
+* Not referenced if JOBVL = 'N'.
+*
+* LDVL (input) INTEGER
+* The leading dimension of the matrix VL. LDVL >= 1, and
+* if JOBVL = 'V', LDVL >= N.
+*
+* VR (output) COMPLEX*16 array, dimension (LDVR,N)
+* If JOBVR = 'V', the right generalized eigenvectors v(j) are
+* stored one after another in the columns of VR, in the same
+* order as their eigenvalues.
+* Each eigenvector is scaled so the largest component has
+* abs(real part) + abs(imag. part) = 1.
+* Not referenced if JOBVR = 'N'.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the matrix VR. LDVR >= 1, and
+* if JOBVR = 'V', LDVR >= N.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,2*N).
+* For good performance, LWORK must generally be larger.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace/output) DOUBLE PRECISION array, dimension (8*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+* =1,...,N:
+* The QZ iteration failed. No eigenvectors have been
+* calculated, but ALPHA(j) and BETA(j) should be
+* correct for j=INFO+1,...,N.
+* > N: =N+1: other then QZ iteration failed in DHGEQZ,
+* =N+2: error return from DTGEVC.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
+ $ CONE = ( 1.0D0, 0.0D0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILASCL, ILBSCL, ILV, ILVL, ILVR, LQUERY
+ CHARACTER CHTEMP
+ INTEGER ICOLS, IERR, IHI, IJOBVL, IJOBVR, ILEFT, ILO,
+ $ IN, IRIGHT, IROWS, IRWRK, ITAU, IWRK, JC, JR,
+ $ LWKMIN, LWKOPT
+ DOUBLE PRECISION ANRM, ANRMTO, BIGNUM, BNRM, BNRMTO, EPS,
+ $ SMLNUM, TEMP
+ COMPLEX*16 X
+* ..
+* .. Local Arrays ..
+ LOGICAL LDUMMA( 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZGEQRF, ZGGBAK, ZGGBAL, ZGGHRD,
+ $ ZHGEQZ, ZLACPY, ZLASCL, ZLASET, ZTGEVC, ZUNGQR,
+ $ ZUNMQR
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, ZLANGE
+ EXTERNAL LSAME, ILAENV, DLAMCH, ZLANGE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DIMAG, MAX, SQRT
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION ABS1
+* ..
+* .. Statement Function definitions ..
+ ABS1( X ) = ABS( DBLE( X ) ) + ABS( DIMAG( X ) )
+* ..
+* .. Executable Statements ..
+*
+* Decode the input arguments
+*
+ IF( LSAME( JOBVL, 'N' ) ) THEN
+ IJOBVL = 1
+ ILVL = .FALSE.
+ ELSE IF( LSAME( JOBVL, 'V' ) ) THEN
+ IJOBVL = 2
+ ILVL = .TRUE.
+ ELSE
+ IJOBVL = -1
+ ILVL = .FALSE.
+ END IF
+*
+ IF( LSAME( JOBVR, 'N' ) ) THEN
+ IJOBVR = 1
+ ILVR = .FALSE.
+ ELSE IF( LSAME( JOBVR, 'V' ) ) THEN
+ IJOBVR = 2
+ ILVR = .TRUE.
+ ELSE
+ IJOBVR = -1
+ ILVR = .FALSE.
+ END IF
+ ILV = ILVL .OR. ILVR
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( IJOBVL.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( IJOBVR.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDVL.LT.1 .OR. ( ILVL .AND. LDVL.LT.N ) ) THEN
+ INFO = -11
+ ELSE IF( LDVR.LT.1 .OR. ( ILVR .AND. LDVR.LT.N ) ) THEN
+ INFO = -13
+ END IF
+*
+* Compute workspace
+* (Note: Comments in the code beginning "Workspace:" describe the
+* minimal amount of workspace needed at that point in the code,
+* as well as the preferred amount for good performance.
+* NB refers to the optimal block size for the immediately
+* following subroutine, as returned by ILAENV. The workspace is
+* computed assuming ILO = 1 and IHI = N, the worst case.)
+*
+ IF( INFO.EQ.0 ) THEN
+ LWKMIN = MAX( 1, 2*N )
+ LWKOPT = MAX( 1, N + N*ILAENV( 1, 'ZGEQRF', ' ', N, 1, N, 0 ) )
+ LWKOPT = MAX( LWKOPT, N +
+ $ N*ILAENV( 1, 'ZUNMQR', ' ', N, 1, N, 0 ) )
+ IF( ILVL ) THEN
+ LWKOPT = MAX( LWKOPT, N +
+ $ N*ILAENV( 1, 'ZUNGQR', ' ', N, 1, N, -1 ) )
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY )
+ $ INFO = -15
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGGEV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Get machine constants
+*
+ EPS = DLAMCH( 'E' )*DLAMCH( 'B' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SQRT( SMLNUM ) / EPS
+ BIGNUM = ONE / SMLNUM
+*
+* Scale A if max element outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', N, N, A, LDA, RWORK )
+ ILASCL = .FALSE.
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+ ANRMTO = SMLNUM
+ ILASCL = .TRUE.
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+ ANRMTO = BIGNUM
+ ILASCL = .TRUE.
+ END IF
+ IF( ILASCL )
+ $ CALL ZLASCL( 'G', 0, 0, ANRM, ANRMTO, N, N, A, LDA, IERR )
+*
+* Scale B if max element outside range [SMLNUM,BIGNUM]
+*
+ BNRM = ZLANGE( 'M', N, N, B, LDB, RWORK )
+ ILBSCL = .FALSE.
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+ BNRMTO = SMLNUM
+ ILBSCL = .TRUE.
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+ BNRMTO = BIGNUM
+ ILBSCL = .TRUE.
+ END IF
+ IF( ILBSCL )
+ $ CALL ZLASCL( 'G', 0, 0, BNRM, BNRMTO, N, N, B, LDB, IERR )
+*
+* Permute the matrices A, B to isolate eigenvalues if possible
+* (Real Workspace: need 6*N)
+*
+ ILEFT = 1
+ IRIGHT = N + 1
+ IRWRK = IRIGHT + N
+ CALL ZGGBAL( 'P', N, A, LDA, B, LDB, ILO, IHI, RWORK( ILEFT ),
+ $ RWORK( IRIGHT ), RWORK( IRWRK ), IERR )
+*
+* Reduce B to triangular form (QR decomposition of B)
+* (Complex Workspace: need N, prefer N*NB)
+*
+ IROWS = IHI + 1 - ILO
+ IF( ILV ) THEN
+ ICOLS = N + 1 - ILO
+ ELSE
+ ICOLS = IROWS
+ END IF
+ ITAU = 1
+ IWRK = ITAU + IROWS
+ CALL ZGEQRF( IROWS, ICOLS, B( ILO, ILO ), LDB, WORK( ITAU ),
+ $ WORK( IWRK ), LWORK+1-IWRK, IERR )
+*
+* Apply the orthogonal transformation to matrix A
+* (Complex Workspace: need N, prefer N*NB)
+*
+ CALL ZUNMQR( 'L', 'C', IROWS, ICOLS, IROWS, B( ILO, ILO ), LDB,
+ $ WORK( ITAU ), A( ILO, ILO ), LDA, WORK( IWRK ),
+ $ LWORK+1-IWRK, IERR )
+*
+* Initialize VL
+* (Complex Workspace: need N, prefer N*NB)
+*
+ IF( ILVL ) THEN
+ CALL ZLASET( 'Full', N, N, CZERO, CONE, VL, LDVL )
+ IF( IROWS.GT.1 ) THEN
+ CALL ZLACPY( 'L', IROWS-1, IROWS-1, B( ILO+1, ILO ), LDB,
+ $ VL( ILO+1, ILO ), LDVL )
+ END IF
+ CALL ZUNGQR( IROWS, IROWS, IROWS, VL( ILO, ILO ), LDVL,
+ $ WORK( ITAU ), WORK( IWRK ), LWORK+1-IWRK, IERR )
+ END IF
+*
+* Initialize VR
+*
+ IF( ILVR )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, VR, LDVR )
+*
+* Reduce to generalized Hessenberg form
+*
+ IF( ILV ) THEN
+*
+* Eigenvectors requested -- work on whole matrix.
+*
+ CALL ZGGHRD( JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, VL,
+ $ LDVL, VR, LDVR, IERR )
+ ELSE
+ CALL ZGGHRD( 'N', 'N', IROWS, 1, IROWS, A( ILO, ILO ), LDA,
+ $ B( ILO, ILO ), LDB, VL, LDVL, VR, LDVR, IERR )
+ END IF
+*
+* Perform QZ algorithm (Compute eigenvalues, and optionally, the
+* Schur form and Schur vectors)
+* (Complex Workspace: need N)
+* (Real Workspace: need N)
+*
+ IWRK = ITAU
+ IF( ILV ) THEN
+ CHTEMP = 'S'
+ ELSE
+ CHTEMP = 'E'
+ END IF
+ CALL ZHGEQZ( CHTEMP, JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB,
+ $ ALPHA, BETA, VL, LDVL, VR, LDVR, WORK( IWRK ),
+ $ LWORK+1-IWRK, RWORK( IRWRK ), IERR )
+ IF( IERR.NE.0 ) THEN
+ IF( IERR.GT.0 .AND. IERR.LE.N ) THEN
+ INFO = IERR
+ ELSE IF( IERR.GT.N .AND. IERR.LE.2*N ) THEN
+ INFO = IERR - N
+ ELSE
+ INFO = N + 1
+ END IF
+ GO TO 70
+ END IF
+*
+* Compute Eigenvectors
+* (Real Workspace: need 2*N)
+* (Complex Workspace: need 2*N)
+*
+ IF( ILV ) THEN
+ IF( ILVL ) THEN
+ IF( ILVR ) THEN
+ CHTEMP = 'B'
+ ELSE
+ CHTEMP = 'L'
+ END IF
+ ELSE
+ CHTEMP = 'R'
+ END IF
+*
+ CALL ZTGEVC( CHTEMP, 'B', LDUMMA, N, A, LDA, B, LDB, VL, LDVL,
+ $ VR, LDVR, N, IN, WORK( IWRK ), RWORK( IRWRK ),
+ $ IERR )
+ IF( IERR.NE.0 ) THEN
+ INFO = N + 2
+ GO TO 70
+ END IF
+*
+* Undo balancing on VL and VR and normalization
+* (Workspace: none needed)
+*
+ IF( ILVL ) THEN
+ CALL ZGGBAK( 'P', 'L', N, ILO, IHI, RWORK( ILEFT ),
+ $ RWORK( IRIGHT ), N, VL, LDVL, IERR )
+ DO 30 JC = 1, N
+ TEMP = ZERO
+ DO 10 JR = 1, N
+ TEMP = MAX( TEMP, ABS1( VL( JR, JC ) ) )
+ 10 CONTINUE
+ IF( TEMP.LT.SMLNUM )
+ $ GO TO 30
+ TEMP = ONE / TEMP
+ DO 20 JR = 1, N
+ VL( JR, JC ) = VL( JR, JC )*TEMP
+ 20 CONTINUE
+ 30 CONTINUE
+ END IF
+ IF( ILVR ) THEN
+ CALL ZGGBAK( 'P', 'R', N, ILO, IHI, RWORK( ILEFT ),
+ $ RWORK( IRIGHT ), N, VR, LDVR, IERR )
+ DO 60 JC = 1, N
+ TEMP = ZERO
+ DO 40 JR = 1, N
+ TEMP = MAX( TEMP, ABS1( VR( JR, JC ) ) )
+ 40 CONTINUE
+ IF( TEMP.LT.SMLNUM )
+ $ GO TO 60
+ TEMP = ONE / TEMP
+ DO 50 JR = 1, N
+ VR( JR, JC ) = VR( JR, JC )*TEMP
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+ END IF
+*
+* Undo scaling if necessary
+*
+ IF( ILASCL )
+ $ CALL ZLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHA, N, IERR )
+*
+ IF( ILBSCL )
+ $ CALL ZLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
+*
+ 70 CONTINUE
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of ZGGEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zgghrd.f b/2.3-1/src/fortran/lapack/zgghrd.f
new file mode 100644
index 00000000..652c09d7
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zgghrd.f
@@ -0,0 +1,264 @@
+ SUBROUTINE ZGGHRD( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
+ $ LDQ, Z, LDZ, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ, COMPZ
+ INTEGER IHI, ILO, INFO, LDA, LDB, LDQ, LDZ, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGGHRD reduces a pair of complex matrices (A,B) to generalized upper
+* Hessenberg form using unitary transformations, where A is a
+* general matrix and B is upper triangular. The form of the
+* generalized eigenvalue problem is
+* A*x = lambda*B*x,
+* and B is typically made upper triangular by computing its QR
+* factorization and moving the unitary matrix Q to the left side
+* of the equation.
+*
+* This subroutine simultaneously reduces A to a Hessenberg matrix H:
+* Q**H*A*Z = H
+* and transforms B to another upper triangular matrix T:
+* Q**H*B*Z = T
+* in order to reduce the problem to its standard form
+* H*y = lambda*T*y
+* where y = Z**H*x.
+*
+* The unitary matrices Q and Z are determined as products of Givens
+* rotations. They may either be formed explicitly, or they may be
+* postmultiplied into input matrices Q1 and Z1, so that
+* Q1 * A * Z1**H = (Q1*Q) * H * (Z1*Z)**H
+* Q1 * B * Z1**H = (Q1*Q) * T * (Z1*Z)**H
+* If Q1 is the unitary matrix from the QR factorization of B in the
+* original equation A*x = lambda*B*x, then ZGGHRD reduces the original
+* problem to generalized Hessenberg form.
+*
+* Arguments
+* =========
+*
+* COMPQ (input) CHARACTER*1
+* = 'N': do not compute Q;
+* = 'I': Q is initialized to the unit matrix, and the
+* unitary matrix Q is returned;
+* = 'V': Q must contain a unitary matrix Q1 on entry,
+* and the product Q1*Q is returned.
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': do not compute Q;
+* = 'I': Q is initialized to the unit matrix, and the
+* unitary matrix Q is returned;
+* = 'V': Q must contain a unitary matrix Q1 on entry,
+* and the product Q1*Q is returned.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI mark the rows and columns of A which are to be
+* reduced. It is assumed that A is already upper triangular
+* in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are
+* normally set by a previous call to ZGGBAL; otherwise they
+* should be set to 1 and N respectively.
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA, N)
+* On entry, the N-by-N general matrix to be reduced.
+* On exit, the upper triangle and the first subdiagonal of A
+* are overwritten with the upper Hessenberg matrix H, and the
+* rest is set to zero.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB, N)
+* On entry, the N-by-N upper triangular matrix B.
+* On exit, the upper triangular matrix T = Q**H B Z. The
+* elements below the diagonal are set to zero.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDQ, N)
+* On entry, if COMPQ = 'V', the unitary matrix Q1, typically
+* from the QR factorization of B.
+* On exit, if COMPQ='I', the unitary matrix Q, and if
+* COMPQ = 'V', the product Q1*Q.
+* Not referenced if COMPQ='N'.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q.
+* LDQ >= N if COMPQ='V' or 'I'; LDQ >= 1 otherwise.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ, N)
+* On entry, if COMPZ = 'V', the unitary matrix Z1.
+* On exit, if COMPZ='I', the unitary matrix Z, and if
+* COMPZ = 'V', the product Z1*Z.
+* Not referenced if COMPZ='N'.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z.
+* LDZ >= N if COMPZ='V' or 'I'; LDZ >= 1 otherwise.
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* This routine reduces A to Hessenberg and B to triangular form by
+* an unblocked reduction, as described in _Matrix_Computations_,
+* by Golub and van Loan (Johns Hopkins Press).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 CONE, CZERO
+ PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ),
+ $ CZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILQ, ILZ
+ INTEGER ICOMPQ, ICOMPZ, JCOL, JROW
+ DOUBLE PRECISION C
+ COMPLEX*16 CTEMP, S
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARTG, ZLASET, ZROT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode COMPQ
+*
+ IF( LSAME( COMPQ, 'N' ) ) THEN
+ ILQ = .FALSE.
+ ICOMPQ = 1
+ ELSE IF( LSAME( COMPQ, 'V' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 2
+ ELSE IF( LSAME( COMPQ, 'I' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 3
+ ELSE
+ ICOMPQ = 0
+ END IF
+*
+* Decode COMPZ
+*
+ IF( LSAME( COMPZ, 'N' ) ) THEN
+ ILZ = .FALSE.
+ ICOMPZ = 1
+ ELSE IF( LSAME( COMPZ, 'V' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 2
+ ELSE IF( LSAME( COMPZ, 'I' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 3
+ ELSE
+ ICOMPZ = 0
+ END IF
+*
+* Test the input parameters.
+*
+ INFO = 0
+ IF( ICOMPQ.LE.0 ) THEN
+ INFO = -1
+ ELSE IF( ICOMPZ.LE.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 ) THEN
+ INFO = -4
+ ELSE IF( IHI.GT.N .OR. IHI.LT.ILO-1 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( ( ILQ .AND. LDQ.LT.N ) .OR. LDQ.LT.1 ) THEN
+ INFO = -11
+ ELSE IF( ( ILZ .AND. LDZ.LT.N ) .OR. LDZ.LT.1 ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGGHRD', -INFO )
+ RETURN
+ END IF
+*
+* Initialize Q and Z if desired.
+*
+ IF( ICOMPQ.EQ.3 )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, Q, LDQ )
+ IF( ICOMPZ.EQ.3 )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, Z, LDZ )
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+* Zero out lower triangle of B
+*
+ DO 20 JCOL = 1, N - 1
+ DO 10 JROW = JCOL + 1, N
+ B( JROW, JCOL ) = CZERO
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* Reduce A and B
+*
+ DO 40 JCOL = ILO, IHI - 2
+*
+ DO 30 JROW = IHI, JCOL + 2, -1
+*
+* Step 1: rotate rows JROW-1, JROW to kill A(JROW,JCOL)
+*
+ CTEMP = A( JROW-1, JCOL )
+ CALL ZLARTG( CTEMP, A( JROW, JCOL ), C, S,
+ $ A( JROW-1, JCOL ) )
+ A( JROW, JCOL ) = CZERO
+ CALL ZROT( N-JCOL, A( JROW-1, JCOL+1 ), LDA,
+ $ A( JROW, JCOL+1 ), LDA, C, S )
+ CALL ZROT( N+2-JROW, B( JROW-1, JROW-1 ), LDB,
+ $ B( JROW, JROW-1 ), LDB, C, S )
+ IF( ILQ )
+ $ CALL ZROT( N, Q( 1, JROW-1 ), 1, Q( 1, JROW ), 1, C,
+ $ DCONJG( S ) )
+*
+* Step 2: rotate columns JROW, JROW-1 to kill B(JROW,JROW-1)
+*
+ CTEMP = B( JROW, JROW )
+ CALL ZLARTG( CTEMP, B( JROW, JROW-1 ), C, S,
+ $ B( JROW, JROW ) )
+ B( JROW, JROW-1 ) = CZERO
+ CALL ZROT( IHI, A( 1, JROW ), 1, A( 1, JROW-1 ), 1, C, S )
+ CALL ZROT( JROW-1, B( 1, JROW ), 1, B( 1, JROW-1 ), 1, C,
+ $ S )
+ IF( ILZ )
+ $ CALL ZROT( N, Z( 1, JROW ), 1, Z( 1, JROW-1 ), 1, C, S )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+ RETURN
+*
+* End of ZGGHRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zheev.f b/2.3-1/src/fortran/lapack/zheev.f
new file mode 100644
index 00000000..324d1612
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zheev.f
@@ -0,0 +1,218 @@
+ SUBROUTINE ZHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK,
+ $ INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER JOBZ, UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION RWORK( * ), W( * )
+ COMPLEX*16 A( LDA, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHEEV computes all eigenvalues and, optionally, eigenvectors of a
+* complex Hermitian matrix A.
+*
+* Arguments
+* =========
+*
+* JOBZ (input) CHARACTER*1
+* = 'N': Compute eigenvalues only;
+* = 'V': Compute eigenvalues and eigenvectors.
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA, N)
+* On entry, the Hermitian matrix A. If UPLO = 'U', the
+* leading N-by-N upper triangular part of A contains the
+* upper triangular part of the matrix A. If UPLO = 'L',
+* the leading N-by-N lower triangular part of A contains
+* the lower triangular part of the matrix A.
+* On exit, if JOBZ = 'V', then if INFO = 0, A contains the
+* orthonormal eigenvectors of the matrix A.
+* If JOBZ = 'N', then on exit the lower triangle (if UPLO='L')
+* or the upper triangle (if UPLO='U') of A, including the
+* diagonal, is destroyed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* W (output) DOUBLE PRECISION array, dimension (N)
+* If INFO = 0, the eigenvalues in ascending order.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The length of the array WORK. LWORK >= max(1,2*N-1).
+* For optimal efficiency, LWORK >= (NB+1)*N,
+* where NB is the blocksize for ZHETRD returned by ILAENV.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (max(1, 3*N-2))
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the algorithm failed to converge; i
+* off-diagonal elements of an intermediate tridiagonal
+* form did not converge to zero.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+ COMPLEX*16 CONE
+ PARAMETER ( CONE = ( 1.0D0, 0.0D0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LOWER, LQUERY, WANTZ
+ INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE,
+ $ LLWORK, LWKOPT, NB
+ DOUBLE PRECISION ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
+ $ SMLNUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, ZLANHE
+ EXTERNAL LSAME, ILAENV, DLAMCH, ZLANHE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, DSTERF, XERBLA, ZHETRD, ZLASCL, ZSTEQR,
+ $ ZUNGTR
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ WANTZ = LSAME( JOBZ, 'V' )
+ LOWER = LSAME( UPLO, 'L' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ INFO = 0
+ IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.( LOWER .OR. LSAME( UPLO, 'U' ) ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 )
+ LWKOPT = MAX( 1, ( NB+1 )*N )
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, 2*N-1 ) .AND. .NOT.LQUERY )
+ $ INFO = -8
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZHEEV ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+ IF( N.EQ.1 ) THEN
+ W( 1 ) = A( 1, 1 )
+ WORK( 1 ) = 1
+ IF( WANTZ )
+ $ A( 1, 1 ) = CONE
+ RETURN
+ END IF
+*
+* Get machine constants.
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ EPS = DLAMCH( 'Precision' )
+ SMLNUM = SAFMIN / EPS
+ BIGNUM = ONE / SMLNUM
+ RMIN = SQRT( SMLNUM )
+ RMAX = SQRT( BIGNUM )
+*
+* Scale matrix to allowable range, if necessary.
+*
+ ANRM = ZLANHE( 'M', UPLO, N, A, LDA, RWORK )
+ ISCALE = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN
+ ISCALE = 1
+ SIGMA = RMIN / ANRM
+ ELSE IF( ANRM.GT.RMAX ) THEN
+ ISCALE = 1
+ SIGMA = RMAX / ANRM
+ END IF
+ IF( ISCALE.EQ.1 )
+ $ CALL ZLASCL( UPLO, 0, 0, ONE, SIGMA, N, N, A, LDA, INFO )
+*
+* Call ZHETRD to reduce Hermitian matrix to tridiagonal form.
+*
+ INDE = 1
+ INDTAU = 1
+ INDWRK = INDTAU + N
+ LLWORK = LWORK - INDWRK + 1
+ CALL ZHETRD( UPLO, N, A, LDA, W, RWORK( INDE ), WORK( INDTAU ),
+ $ WORK( INDWRK ), LLWORK, IINFO )
+*
+* For eigenvalues only, call DSTERF. For eigenvectors, first call
+* ZUNGTR to generate the unitary matrix, then call ZSTEQR.
+*
+ IF( .NOT.WANTZ ) THEN
+ CALL DSTERF( N, W, RWORK( INDE ), INFO )
+ ELSE
+ CALL ZUNGTR( UPLO, N, A, LDA, WORK( INDTAU ), WORK( INDWRK ),
+ $ LLWORK, IINFO )
+ INDWRK = INDE + N
+ CALL ZSTEQR( JOBZ, N, W, RWORK( INDE ), A, LDA,
+ $ RWORK( INDWRK ), INFO )
+ END IF
+*
+* If matrix was scaled, then rescale eigenvalues appropriately.
+*
+ IF( ISCALE.EQ.1 ) THEN
+ IF( INFO.EQ.0 ) THEN
+ IMAX = N
+ ELSE
+ IMAX = INFO - 1
+ END IF
+ CALL DSCAL( IMAX, ONE / SIGMA, W, 1 )
+ END IF
+*
+* Set WORK(1) to optimal complex workspace size.
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of ZHEEV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zhetd2.f b/2.3-1/src/fortran/lapack/zhetd2.f
new file mode 100644
index 00000000..24b0a1df
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zhetd2.f
@@ -0,0 +1,258 @@
+ SUBROUTINE ZHETD2( UPLO, N, A, LDA, D, E, TAU, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+ COMPLEX*16 A( LDA, * ), TAU( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHETD2 reduces a complex Hermitian matrix A to real symmetric
+* tridiagonal form T by a unitary similarity transformation:
+* Q' * A * Q = T.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* Hermitian matrix A is stored:
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+* n-by-n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n-by-n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit, if UPLO = 'U', the diagonal and first superdiagonal
+* of A are overwritten by the corresponding elements of the
+* tridiagonal matrix T, and the elements above the first
+* superdiagonal, with the array TAU, represent the unitary
+* matrix Q as a product of elementary reflectors; if UPLO
+* = 'L', the diagonal and first subdiagonal of A are over-
+* written by the corresponding elements of the tridiagonal
+* matrix T, and the elements below the first subdiagonal, with
+* the array TAU, represent the unitary matrix Q as a product
+* of elementary reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* D (output) DOUBLE PRECISION array, dimension (N)
+* The diagonal elements of the tridiagonal matrix T:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* The off-diagonal elements of the tridiagonal matrix T:
+* E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*
+* TAU (output) COMPLEX*16 array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n-1) . . . H(2) H(1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
+* A(1:i-1,i+1), and tau in TAU(i).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(n-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
+* and tau in TAU(i).
+*
+* The contents of A on exit are illustrated by the following examples
+* with n = 5:
+*
+* if UPLO = 'U': if UPLO = 'L':
+*
+* ( d e v2 v3 v4 ) ( d )
+* ( d e v3 v4 ) ( e d )
+* ( d e v4 ) ( v1 e d )
+* ( d e ) ( v1 v2 e d )
+* ( d ) ( v1 v2 v3 e d )
+*
+* where d and e denote diagonal and off-diagonal elements of T, and vi
+* denotes an element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO, HALF
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ HALF = ( 0.5D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER I
+ COMPLEX*16 ALPHA, TAUI
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZAXPY, ZHEMV, ZHER2, ZLARFG
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ COMPLEX*16 ZDOTC
+ EXTERNAL LSAME, ZDOTC
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZHETD2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Reduce the upper triangle of A
+*
+ A( N, N ) = DBLE( A( N, N ) )
+ DO 10 I = N - 1, 1, -1
+*
+* Generate elementary reflector H(i) = I - tau * v * v'
+* to annihilate A(1:i-1,i+1)
+*
+ ALPHA = A( I, I+1 )
+ CALL ZLARFG( I, ALPHA, A( 1, I+1 ), 1, TAUI )
+ E( I ) = ALPHA
+*
+ IF( TAUI.NE.ZERO ) THEN
+*
+* Apply H(i) from both sides to A(1:i,1:i)
+*
+ A( I, I+1 ) = ONE
+*
+* Compute x := tau * A * v storing x in TAU(1:i)
+*
+ CALL ZHEMV( UPLO, I, TAUI, A, LDA, A( 1, I+1 ), 1, ZERO,
+ $ TAU, 1 )
+*
+* Compute w := x - 1/2 * tau * (x'*v) * v
+*
+ ALPHA = -HALF*TAUI*ZDOTC( I, TAU, 1, A( 1, I+1 ), 1 )
+ CALL ZAXPY( I, ALPHA, A( 1, I+1 ), 1, TAU, 1 )
+*
+* Apply the transformation as a rank-2 update:
+* A := A - v * w' - w * v'
+*
+ CALL ZHER2( UPLO, I, -ONE, A( 1, I+1 ), 1, TAU, 1, A,
+ $ LDA )
+*
+ ELSE
+ A( I, I ) = DBLE( A( I, I ) )
+ END IF
+ A( I, I+1 ) = E( I )
+ D( I+1 ) = A( I+1, I+1 )
+ TAU( I ) = TAUI
+ 10 CONTINUE
+ D( 1 ) = A( 1, 1 )
+ ELSE
+*
+* Reduce the lower triangle of A
+*
+ A( 1, 1 ) = DBLE( A( 1, 1 ) )
+ DO 20 I = 1, N - 1
+*
+* Generate elementary reflector H(i) = I - tau * v * v'
+* to annihilate A(i+2:n,i)
+*
+ ALPHA = A( I+1, I )
+ CALL ZLARFG( N-I, ALPHA, A( MIN( I+2, N ), I ), 1, TAUI )
+ E( I ) = ALPHA
+*
+ IF( TAUI.NE.ZERO ) THEN
+*
+* Apply H(i) from both sides to A(i+1:n,i+1:n)
+*
+ A( I+1, I ) = ONE
+*
+* Compute x := tau * A * v storing y in TAU(i:n-1)
+*
+ CALL ZHEMV( UPLO, N-I, TAUI, A( I+1, I+1 ), LDA,
+ $ A( I+1, I ), 1, ZERO, TAU( I ), 1 )
+*
+* Compute w := x - 1/2 * tau * (x'*v) * v
+*
+ ALPHA = -HALF*TAUI*ZDOTC( N-I, TAU( I ), 1, A( I+1, I ),
+ $ 1 )
+ CALL ZAXPY( N-I, ALPHA, A( I+1, I ), 1, TAU( I ), 1 )
+*
+* Apply the transformation as a rank-2 update:
+* A := A - v * w' - w * v'
+*
+ CALL ZHER2( UPLO, N-I, -ONE, A( I+1, I ), 1, TAU( I ), 1,
+ $ A( I+1, I+1 ), LDA )
+*
+ ELSE
+ A( I+1, I+1 ) = DBLE( A( I+1, I+1 ) )
+ END IF
+ A( I+1, I ) = E( I )
+ D( I ) = A( I, I )
+ TAU( I ) = TAUI
+ 20 CONTINUE
+ D( N ) = A( N, N )
+ END IF
+*
+ RETURN
+*
+* End of ZHETD2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zhetrd.f b/2.3-1/src/fortran/lapack/zhetrd.f
new file mode 100644
index 00000000..fb0cd0b2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zhetrd.f
@@ -0,0 +1,296 @@
+ SUBROUTINE ZHETRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHETRD reduces a complex Hermitian matrix A to real symmetric
+* tridiagonal form T by a unitary similarity transformation:
+* Q**H * A * Q = T.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+* N-by-N upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit, if UPLO = 'U', the diagonal and first superdiagonal
+* of A are overwritten by the corresponding elements of the
+* tridiagonal matrix T, and the elements above the first
+* superdiagonal, with the array TAU, represent the unitary
+* matrix Q as a product of elementary reflectors; if UPLO
+* = 'L', the diagonal and first subdiagonal of A are over-
+* written by the corresponding elements of the tridiagonal
+* matrix T, and the elements below the first subdiagonal, with
+* the array TAU, represent the unitary matrix Q as a product
+* of elementary reflectors. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* D (output) DOUBLE PRECISION array, dimension (N)
+* The diagonal elements of the tridiagonal matrix T:
+* D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* The off-diagonal elements of the tridiagonal matrix T:
+* E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*
+* TAU (output) COMPLEX*16 array, dimension (N-1)
+* The scalar factors of the elementary reflectors (see Further
+* Details).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 1.
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n-1) . . . H(2) H(1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
+* A(1:i-1,i+1), and tau in TAU(i).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(n-1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
+* and tau in TAU(i).
+*
+* The contents of A on exit are illustrated by the following examples
+* with n = 5:
+*
+* if UPLO = 'U': if UPLO = 'L':
+*
+* ( d e v2 v3 v4 ) ( d )
+* ( d e v3 v4 ) ( e d )
+* ( d e v4 ) ( v1 e d )
+* ( d e ) ( v1 v2 e d )
+* ( d ) ( v1 v2 v3 e d )
+*
+* where d and e denote diagonal and off-diagonal elements of T, and vi
+* denotes an element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+ COMPLEX*16 CONE
+ PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, UPPER
+ INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZHER2K, ZHETD2, ZLATRD
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN
+ INFO = -9
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size.
+*
+ NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 )
+ LWKOPT = N*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZHETRD', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NX = N
+ IWS = 1
+ IF( NB.GT.1 .AND. NB.LT.N ) THEN
+*
+* Determine when to cross over from blocked to unblocked code
+* (last block is always handled by unblocked code).
+*
+ NX = MAX( NB, ILAENV( 3, 'ZHETRD', UPLO, N, -1, -1, -1 ) )
+ IF( NX.LT.N ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: determine the
+* minimum value of NB, and reduce NB or force use of
+* unblocked code by setting NX = N.
+*
+ NB = MAX( LWORK / LDWORK, 1 )
+ NBMIN = ILAENV( 2, 'ZHETRD', UPLO, N, -1, -1, -1 )
+ IF( NB.LT.NBMIN )
+ $ NX = N
+ END IF
+ ELSE
+ NX = N
+ END IF
+ ELSE
+ NB = 1
+ END IF
+*
+ IF( UPPER ) THEN
+*
+* Reduce the upper triangle of A.
+* Columns 1:kk are handled by the unblocked method.
+*
+ KK = N - ( ( N-NX+NB-1 ) / NB )*NB
+ DO 20 I = N - NB + 1, KK + 1, -NB
+*
+* Reduce columns i:i+nb-1 to tridiagonal form and form the
+* matrix W which is needed to update the unreduced part of
+* the matrix
+*
+ CALL ZLATRD( UPLO, I+NB-1, NB, A, LDA, E, TAU, WORK,
+ $ LDWORK )
+*
+* Update the unreduced submatrix A(1:i-1,1:i-1), using an
+* update of the form: A := A - V*W' - W*V'
+*
+ CALL ZHER2K( UPLO, 'No transpose', I-1, NB, -CONE,
+ $ A( 1, I ), LDA, WORK, LDWORK, ONE, A, LDA )
+*
+* Copy superdiagonal elements back into A, and diagonal
+* elements into D
+*
+ DO 10 J = I, I + NB - 1
+ A( J-1, J ) = E( J-1 )
+ D( J ) = A( J, J )
+ 10 CONTINUE
+ 20 CONTINUE
+*
+* Use unblocked code to reduce the last or only block
+*
+ CALL ZHETD2( UPLO, KK, A, LDA, D, E, TAU, IINFO )
+ ELSE
+*
+* Reduce the lower triangle of A
+*
+ DO 40 I = 1, N - NX, NB
+*
+* Reduce columns i:i+nb-1 to tridiagonal form and form the
+* matrix W which is needed to update the unreduced part of
+* the matrix
+*
+ CALL ZLATRD( UPLO, N-I+1, NB, A( I, I ), LDA, E( I ),
+ $ TAU( I ), WORK, LDWORK )
+*
+* Update the unreduced submatrix A(i+nb:n,i+nb:n), using
+* an update of the form: A := A - V*W' - W*V'
+*
+ CALL ZHER2K( UPLO, 'No transpose', N-I-NB+1, NB, -CONE,
+ $ A( I+NB, I ), LDA, WORK( NB+1 ), LDWORK, ONE,
+ $ A( I+NB, I+NB ), LDA )
+*
+* Copy subdiagonal elements back into A, and diagonal
+* elements into D
+*
+ DO 30 J = I, I + NB - 1
+ A( J+1, J ) = E( J )
+ D( J ) = A( J, J )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* Use unblocked code to reduce the last or only block
+*
+ CALL ZHETD2( UPLO, N-I+1, A( I, I ), LDA, D( I ), E( I ),
+ $ TAU( I ), IINFO )
+ END IF
+*
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZHETRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zhgeqz.f b/2.3-1/src/fortran/lapack/zhgeqz.f
new file mode 100644
index 00000000..6a9403bd
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zhgeqz.f
@@ -0,0 +1,759 @@
+ SUBROUTINE ZHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
+ $ ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK,
+ $ RWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ, COMPZ, JOB
+ INTEGER IHI, ILO, INFO, LDH, LDQ, LDT, LDZ, LWORK, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 ALPHA( * ), BETA( * ), H( LDH, * ),
+ $ Q( LDQ, * ), T( LDT, * ), WORK( * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZHGEQZ computes the eigenvalues of a complex matrix pair (H,T),
+* where H is an upper Hessenberg matrix and T is upper triangular,
+* using the single-shift QZ method.
+* Matrix pairs of this type are produced by the reduction to
+* generalized upper Hessenberg form of a complex matrix pair (A,B):
+*
+* A = Q1*H*Z1**H, B = Q1*T*Z1**H,
+*
+* as computed by ZGGHRD.
+*
+* If JOB='S', then the Hessenberg-triangular pair (H,T) is
+* also reduced to generalized Schur form,
+*
+* H = Q*S*Z**H, T = Q*P*Z**H,
+*
+* where Q and Z are unitary matrices and S and P are upper triangular.
+*
+* Optionally, the unitary matrix Q from the generalized Schur
+* factorization may be postmultiplied into an input matrix Q1, and the
+* unitary matrix Z may be postmultiplied into an input matrix Z1.
+* If Q1 and Z1 are the unitary matrices from ZGGHRD that reduced
+* the matrix pair (A,B) to generalized Hessenberg form, then the output
+* matrices Q1*Q and Z1*Z are the unitary factors from the generalized
+* Schur factorization of (A,B):
+*
+* A = (Q1*Q)*S*(Z1*Z)**H, B = (Q1*Q)*P*(Z1*Z)**H.
+*
+* To avoid overflow, eigenvalues of the matrix pair (H,T)
+* (equivalently, of (A,B)) are computed as a pair of complex values
+* (alpha,beta). If beta is nonzero, lambda = alpha / beta is an
+* eigenvalue of the generalized nonsymmetric eigenvalue problem (GNEP)
+* A*x = lambda*B*x
+* and if alpha is nonzero, mu = beta / alpha is an eigenvalue of the
+* alternate form of the GNEP
+* mu*A*y = B*y.
+* The values of alpha and beta for the i-th eigenvalue can be read
+* directly from the generalized Schur form: alpha = S(i,i),
+* beta = P(i,i).
+*
+* Ref: C.B. Moler & G.W. Stewart, "An Algorithm for Generalized Matrix
+* Eigenvalue Problems", SIAM J. Numer. Anal., 10(1973),
+* pp. 241--256.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* = 'E': Compute eigenvalues only;
+* = 'S': Computer eigenvalues and the Schur form.
+*
+* COMPQ (input) CHARACTER*1
+* = 'N': Left Schur vectors (Q) are not computed;
+* = 'I': Q is initialized to the unit matrix and the matrix Q
+* of left Schur vectors of (H,T) is returned;
+* = 'V': Q must contain a unitary matrix Q1 on entry and
+* the product Q1*Q is returned.
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': Right Schur vectors (Z) are not computed;
+* = 'I': Q is initialized to the unit matrix and the matrix Z
+* of right Schur vectors of (H,T) is returned;
+* = 'V': Z must contain a unitary matrix Z1 on entry and
+* the product Z1*Z is returned.
+*
+* N (input) INTEGER
+* The order of the matrices H, T, Q, and Z. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI mark the rows and columns of H which are in
+* Hessenberg form. It is assumed that A is already upper
+* triangular in rows and columns 1:ILO-1 and IHI+1:N.
+* If N > 0, 1 <= ILO <= IHI <= N; if N = 0, ILO=1 and IHI=0.
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH, N)
+* On entry, the N-by-N upper Hessenberg matrix H.
+* On exit, if JOB = 'S', H contains the upper triangular
+* matrix S from the generalized Schur factorization.
+* If JOB = 'E', the diagonal of H matches that of S, but
+* the rest of H is unspecified.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH >= max( 1, N ).
+*
+* T (input/output) COMPLEX*16 array, dimension (LDT, N)
+* On entry, the N-by-N upper triangular matrix T.
+* On exit, if JOB = 'S', T contains the upper triangular
+* matrix P from the generalized Schur factorization.
+* If JOB = 'E', the diagonal of T matches that of P, but
+* the rest of T is unspecified.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max( 1, N ).
+*
+* ALPHA (output) COMPLEX*16 array, dimension (N)
+* The complex scalars alpha that define the eigenvalues of
+* GNEP. ALPHA(i) = S(i,i) in the generalized Schur
+* factorization.
+*
+* BETA (output) COMPLEX*16 array, dimension (N)
+* The real non-negative scalars beta that define the
+* eigenvalues of GNEP. BETA(i) = P(i,i) in the generalized
+* Schur factorization.
+*
+* Together, the quantities alpha = ALPHA(j) and beta = BETA(j)
+* represent the j-th eigenvalue of the matrix pair (A,B), in
+* one of the forms lambda = alpha/beta or mu = beta/alpha.
+* Since either lambda or mu may overflow, they should not,
+* in general, be computed.
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDQ, N)
+* On entry, if COMPZ = 'V', the unitary matrix Q1 used in the
+* reduction of (A,B) to generalized Hessenberg form.
+* On exit, if COMPZ = 'I', the unitary matrix of left Schur
+* vectors of (H,T), and if COMPZ = 'V', the unitary matrix of
+* left Schur vectors of (A,B).
+* Not referenced if COMPZ = 'N'.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1.
+* If COMPQ='V' or 'I', then LDQ >= N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ, N)
+* On entry, if COMPZ = 'V', the unitary matrix Z1 used in the
+* reduction of (A,B) to generalized Hessenberg form.
+* On exit, if COMPZ = 'I', the unitary matrix of right Schur
+* vectors of (H,T), and if COMPZ = 'V', the unitary matrix of
+* right Schur vectors of (A,B).
+* Not referenced if COMPZ = 'N'.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1.
+* If COMPZ='V' or 'I', then LDZ >= N.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO >= 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* = 1,...,N: the QZ iteration did not converge. (H,T) is not
+* in Schur form, but ALPHA(i) and BETA(i),
+* i=INFO+1,...,N should be correct.
+* = N+1,...,2*N: the shift calculation failed. (H,T) is not
+* in Schur form, but ALPHA(i) and BETA(i),
+* i=INFO-N+1,...,N should be correct.
+*
+* Further Details
+* ===============
+*
+* We assume that complex ABS works as long as its value is less than
+* overflow.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ DOUBLE PRECISION HALF
+ PARAMETER ( HALF = 0.5D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL ILAZR2, ILAZRO, ILQ, ILSCHR, ILZ, LQUERY
+ INTEGER ICOMPQ, ICOMPZ, IFIRST, IFRSTM, IITER, ILAST,
+ $ ILASTM, IN, ISCHUR, ISTART, J, JC, JCH, JITER,
+ $ JR, MAXIT
+ DOUBLE PRECISION ABSB, ANORM, ASCALE, ATOL, BNORM, BSCALE, BTOL,
+ $ C, SAFMIN, TEMP, TEMP2, TEMPR, ULP
+ COMPLEX*16 ABI22, AD11, AD12, AD21, AD22, CTEMP, CTEMP2,
+ $ CTEMP3, ESHIFT, RTDISC, S, SHIFT, SIGNBC, T1,
+ $ U12, X
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, ZLANHS
+ EXTERNAL LSAME, DLAMCH, ZLANHS
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARTG, ZLASET, ZROT, ZSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX, MIN,
+ $ SQRT
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION ABS1
+* ..
+* .. Statement Function definitions ..
+ ABS1( X ) = ABS( DBLE( X ) ) + ABS( DIMAG( X ) )
+* ..
+* .. Executable Statements ..
+*
+* Decode JOB, COMPQ, COMPZ
+*
+ IF( LSAME( JOB, 'E' ) ) THEN
+ ILSCHR = .FALSE.
+ ISCHUR = 1
+ ELSE IF( LSAME( JOB, 'S' ) ) THEN
+ ILSCHR = .TRUE.
+ ISCHUR = 2
+ ELSE
+ ISCHUR = 0
+ END IF
+*
+ IF( LSAME( COMPQ, 'N' ) ) THEN
+ ILQ = .FALSE.
+ ICOMPQ = 1
+ ELSE IF( LSAME( COMPQ, 'V' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 2
+ ELSE IF( LSAME( COMPQ, 'I' ) ) THEN
+ ILQ = .TRUE.
+ ICOMPQ = 3
+ ELSE
+ ICOMPQ = 0
+ END IF
+*
+ IF( LSAME( COMPZ, 'N' ) ) THEN
+ ILZ = .FALSE.
+ ICOMPZ = 1
+ ELSE IF( LSAME( COMPZ, 'V' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 2
+ ELSE IF( LSAME( COMPZ, 'I' ) ) THEN
+ ILZ = .TRUE.
+ ICOMPZ = 3
+ ELSE
+ ICOMPZ = 0
+ END IF
+*
+* Check Argument Values
+*
+ INFO = 0
+ WORK( 1 ) = MAX( 1, N )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( ISCHUR.EQ.0 ) THEN
+ INFO = -1
+ ELSE IF( ICOMPQ.EQ.0 ) THEN
+ INFO = -2
+ ELSE IF( ICOMPZ.EQ.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( ILO.LT.1 ) THEN
+ INFO = -5
+ ELSE IF( IHI.GT.N .OR. IHI.LT.ILO-1 ) THEN
+ INFO = -6
+ ELSE IF( LDH.LT.N ) THEN
+ INFO = -8
+ ELSE IF( LDT.LT.N ) THEN
+ INFO = -10
+ ELSE IF( LDQ.LT.1 .OR. ( ILQ .AND. LDQ.LT.N ) ) THEN
+ INFO = -14
+ ELSE IF( LDZ.LT.1 .OR. ( ILZ .AND. LDZ.LT.N ) ) THEN
+ INFO = -16
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -18
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZHGEQZ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+* WORK( 1 ) = CMPLX( 1 )
+ IF( N.LE.0 ) THEN
+ WORK( 1 ) = DCMPLX( 1 )
+ RETURN
+ END IF
+*
+* Initialize Q and Z
+*
+ IF( ICOMPQ.EQ.3 )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, Q, LDQ )
+ IF( ICOMPZ.EQ.3 )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, Z, LDZ )
+*
+* Machine Constants
+*
+ IN = IHI + 1 - ILO
+ SAFMIN = DLAMCH( 'S' )
+ ULP = DLAMCH( 'E' )*DLAMCH( 'B' )
+ ANORM = ZLANHS( 'F', IN, H( ILO, ILO ), LDH, RWORK )
+ BNORM = ZLANHS( 'F', IN, T( ILO, ILO ), LDT, RWORK )
+ ATOL = MAX( SAFMIN, ULP*ANORM )
+ BTOL = MAX( SAFMIN, ULP*BNORM )
+ ASCALE = ONE / MAX( SAFMIN, ANORM )
+ BSCALE = ONE / MAX( SAFMIN, BNORM )
+*
+*
+* Set Eigenvalues IHI+1:N
+*
+ DO 10 J = IHI + 1, N
+ ABSB = ABS( T( J, J ) )
+ IF( ABSB.GT.SAFMIN ) THEN
+ SIGNBC = DCONJG( T( J, J ) / ABSB )
+ T( J, J ) = ABSB
+ IF( ILSCHR ) THEN
+ CALL ZSCAL( J-1, SIGNBC, T( 1, J ), 1 )
+ CALL ZSCAL( J, SIGNBC, H( 1, J ), 1 )
+ ELSE
+ H( J, J ) = H( J, J )*SIGNBC
+ END IF
+ IF( ILZ )
+ $ CALL ZSCAL( N, SIGNBC, Z( 1, J ), 1 )
+ ELSE
+ T( J, J ) = CZERO
+ END IF
+ ALPHA( J ) = H( J, J )
+ BETA( J ) = T( J, J )
+ 10 CONTINUE
+*
+* If IHI < ILO, skip QZ steps
+*
+ IF( IHI.LT.ILO )
+ $ GO TO 190
+*
+* MAIN QZ ITERATION LOOP
+*
+* Initialize dynamic indices
+*
+* Eigenvalues ILAST+1:N have been found.
+* Column operations modify rows IFRSTM:whatever
+* Row operations modify columns whatever:ILASTM
+*
+* If only eigenvalues are being computed, then
+* IFRSTM is the row of the last splitting row above row ILAST;
+* this is always at least ILO.
+* IITER counts iterations since the last eigenvalue was found,
+* to tell when to use an extraordinary shift.
+* MAXIT is the maximum number of QZ sweeps allowed.
+*
+ ILAST = IHI
+ IF( ILSCHR ) THEN
+ IFRSTM = 1
+ ILASTM = N
+ ELSE
+ IFRSTM = ILO
+ ILASTM = IHI
+ END IF
+ IITER = 0
+ ESHIFT = CZERO
+ MAXIT = 30*( IHI-ILO+1 )
+*
+ DO 170 JITER = 1, MAXIT
+*
+* Check for too many iterations.
+*
+ IF( JITER.GT.MAXIT )
+ $ GO TO 180
+*
+* Split the matrix if possible.
+*
+* Two tests:
+* 1: H(j,j-1)=0 or j=ILO
+* 2: T(j,j)=0
+*
+* Special case: j=ILAST
+*
+ IF( ILAST.EQ.ILO ) THEN
+ GO TO 60
+ ELSE
+ IF( ABS1( H( ILAST, ILAST-1 ) ).LE.ATOL ) THEN
+ H( ILAST, ILAST-1 ) = CZERO
+ GO TO 60
+ END IF
+ END IF
+*
+ IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
+ T( ILAST, ILAST ) = CZERO
+ GO TO 50
+ END IF
+*
+* General case: j<ILAST
+*
+ DO 40 J = ILAST - 1, ILO, -1
+*
+* Test 1: for H(j,j-1)=0 or j=ILO
+*
+ IF( J.EQ.ILO ) THEN
+ ILAZRO = .TRUE.
+ ELSE
+ IF( ABS1( H( J, J-1 ) ).LE.ATOL ) THEN
+ H( J, J-1 ) = CZERO
+ ILAZRO = .TRUE.
+ ELSE
+ ILAZRO = .FALSE.
+ END IF
+ END IF
+*
+* Test 2: for T(j,j)=0
+*
+ IF( ABS( T( J, J ) ).LT.BTOL ) THEN
+ T( J, J ) = CZERO
+*
+* Test 1a: Check for 2 consecutive small subdiagonals in A
+*
+ ILAZR2 = .FALSE.
+ IF( .NOT.ILAZRO ) THEN
+ IF( ABS1( H( J, J-1 ) )*( ASCALE*ABS1( H( J+1,
+ $ J ) ) ).LE.ABS1( H( J, J ) )*( ASCALE*ATOL ) )
+ $ ILAZR2 = .TRUE.
+ END IF
+*
+* If both tests pass (1 & 2), i.e., the leading diagonal
+* element of B in the block is zero, split a 1x1 block off
+* at the top. (I.e., at the J-th row/column) The leading
+* diagonal element of the remainder can also be zero, so
+* this may have to be done repeatedly.
+*
+ IF( ILAZRO .OR. ILAZR2 ) THEN
+ DO 20 JCH = J, ILAST - 1
+ CTEMP = H( JCH, JCH )
+ CALL ZLARTG( CTEMP, H( JCH+1, JCH ), C, S,
+ $ H( JCH, JCH ) )
+ H( JCH+1, JCH ) = CZERO
+ CALL ZROT( ILASTM-JCH, H( JCH, JCH+1 ), LDH,
+ $ H( JCH+1, JCH+1 ), LDH, C, S )
+ CALL ZROT( ILASTM-JCH, T( JCH, JCH+1 ), LDT,
+ $ T( JCH+1, JCH+1 ), LDT, C, S )
+ IF( ILQ )
+ $ CALL ZROT( N, Q( 1, JCH ), 1, Q( 1, JCH+1 ), 1,
+ $ C, DCONJG( S ) )
+ IF( ILAZR2 )
+ $ H( JCH, JCH-1 ) = H( JCH, JCH-1 )*C
+ ILAZR2 = .FALSE.
+ IF( ABS1( T( JCH+1, JCH+1 ) ).GE.BTOL ) THEN
+ IF( JCH+1.GE.ILAST ) THEN
+ GO TO 60
+ ELSE
+ IFIRST = JCH + 1
+ GO TO 70
+ END IF
+ END IF
+ T( JCH+1, JCH+1 ) = CZERO
+ 20 CONTINUE
+ GO TO 50
+ ELSE
+*
+* Only test 2 passed -- chase the zero to T(ILAST,ILAST)
+* Then process as in the case T(ILAST,ILAST)=0
+*
+ DO 30 JCH = J, ILAST - 1
+ CTEMP = T( JCH, JCH+1 )
+ CALL ZLARTG( CTEMP, T( JCH+1, JCH+1 ), C, S,
+ $ T( JCH, JCH+1 ) )
+ T( JCH+1, JCH+1 ) = CZERO
+ IF( JCH.LT.ILASTM-1 )
+ $ CALL ZROT( ILASTM-JCH-1, T( JCH, JCH+2 ), LDT,
+ $ T( JCH+1, JCH+2 ), LDT, C, S )
+ CALL ZROT( ILASTM-JCH+2, H( JCH, JCH-1 ), LDH,
+ $ H( JCH+1, JCH-1 ), LDH, C, S )
+ IF( ILQ )
+ $ CALL ZROT( N, Q( 1, JCH ), 1, Q( 1, JCH+1 ), 1,
+ $ C, DCONJG( S ) )
+ CTEMP = H( JCH+1, JCH )
+ CALL ZLARTG( CTEMP, H( JCH+1, JCH-1 ), C, S,
+ $ H( JCH+1, JCH ) )
+ H( JCH+1, JCH-1 ) = CZERO
+ CALL ZROT( JCH+1-IFRSTM, H( IFRSTM, JCH ), 1,
+ $ H( IFRSTM, JCH-1 ), 1, C, S )
+ CALL ZROT( JCH-IFRSTM, T( IFRSTM, JCH ), 1,
+ $ T( IFRSTM, JCH-1 ), 1, C, S )
+ IF( ILZ )
+ $ CALL ZROT( N, Z( 1, JCH ), 1, Z( 1, JCH-1 ), 1,
+ $ C, S )
+ 30 CONTINUE
+ GO TO 50
+ END IF
+ ELSE IF( ILAZRO ) THEN
+*
+* Only test 1 passed -- work on J:ILAST
+*
+ IFIRST = J
+ GO TO 70
+ END IF
+*
+* Neither test passed -- try next J
+*
+ 40 CONTINUE
+*
+* (Drop-through is "impossible")
+*
+ INFO = 2*N + 1
+ GO TO 210
+*
+* T(ILAST,ILAST)=0 -- clear H(ILAST,ILAST-1) to split off a
+* 1x1 block.
+*
+ 50 CONTINUE
+ CTEMP = H( ILAST, ILAST )
+ CALL ZLARTG( CTEMP, H( ILAST, ILAST-1 ), C, S,
+ $ H( ILAST, ILAST ) )
+ H( ILAST, ILAST-1 ) = CZERO
+ CALL ZROT( ILAST-IFRSTM, H( IFRSTM, ILAST ), 1,
+ $ H( IFRSTM, ILAST-1 ), 1, C, S )
+ CALL ZROT( ILAST-IFRSTM, T( IFRSTM, ILAST ), 1,
+ $ T( IFRSTM, ILAST-1 ), 1, C, S )
+ IF( ILZ )
+ $ CALL ZROT( N, Z( 1, ILAST ), 1, Z( 1, ILAST-1 ), 1, C, S )
+*
+* H(ILAST,ILAST-1)=0 -- Standardize B, set ALPHA and BETA
+*
+ 60 CONTINUE
+ ABSB = ABS( T( ILAST, ILAST ) )
+ IF( ABSB.GT.SAFMIN ) THEN
+ SIGNBC = DCONJG( T( ILAST, ILAST ) / ABSB )
+ T( ILAST, ILAST ) = ABSB
+ IF( ILSCHR ) THEN
+ CALL ZSCAL( ILAST-IFRSTM, SIGNBC, T( IFRSTM, ILAST ), 1 )
+ CALL ZSCAL( ILAST+1-IFRSTM, SIGNBC, H( IFRSTM, ILAST ),
+ $ 1 )
+ ELSE
+ H( ILAST, ILAST ) = H( ILAST, ILAST )*SIGNBC
+ END IF
+ IF( ILZ )
+ $ CALL ZSCAL( N, SIGNBC, Z( 1, ILAST ), 1 )
+ ELSE
+ T( ILAST, ILAST ) = CZERO
+ END IF
+ ALPHA( ILAST ) = H( ILAST, ILAST )
+ BETA( ILAST ) = T( ILAST, ILAST )
+*
+* Go to next block -- exit if finished.
+*
+ ILAST = ILAST - 1
+ IF( ILAST.LT.ILO )
+ $ GO TO 190
+*
+* Reset counters
+*
+ IITER = 0
+ ESHIFT = CZERO
+ IF( .NOT.ILSCHR ) THEN
+ ILASTM = ILAST
+ IF( IFRSTM.GT.ILAST )
+ $ IFRSTM = ILO
+ END IF
+ GO TO 160
+*
+* QZ step
+*
+* This iteration only involves rows/columns IFIRST:ILAST. We
+* assume IFIRST < ILAST, and that the diagonal of B is non-zero.
+*
+ 70 CONTINUE
+ IITER = IITER + 1
+ IF( .NOT.ILSCHR ) THEN
+ IFRSTM = IFIRST
+ END IF
+*
+* Compute the Shift.
+*
+* At this point, IFIRST < ILAST, and the diagonal elements of
+* T(IFIRST:ILAST,IFIRST,ILAST) are larger than BTOL (in
+* magnitude)
+*
+ IF( ( IITER / 10 )*10.NE.IITER ) THEN
+*
+* The Wilkinson shift (AEP p.512), i.e., the eigenvalue of
+* the bottom-right 2x2 block of A inv(B) which is nearest to
+* the bottom-right element.
+*
+* We factor B as U*D, where U has unit diagonals, and
+* compute (A*inv(D))*inv(U).
+*
+ U12 = ( BSCALE*T( ILAST-1, ILAST ) ) /
+ $ ( BSCALE*T( ILAST, ILAST ) )
+ AD11 = ( ASCALE*H( ILAST-1, ILAST-1 ) ) /
+ $ ( BSCALE*T( ILAST-1, ILAST-1 ) )
+ AD21 = ( ASCALE*H( ILAST, ILAST-1 ) ) /
+ $ ( BSCALE*T( ILAST-1, ILAST-1 ) )
+ AD12 = ( ASCALE*H( ILAST-1, ILAST ) ) /
+ $ ( BSCALE*T( ILAST, ILAST ) )
+ AD22 = ( ASCALE*H( ILAST, ILAST ) ) /
+ $ ( BSCALE*T( ILAST, ILAST ) )
+ ABI22 = AD22 - U12*AD21
+*
+ T1 = HALF*( AD11+ABI22 )
+ RTDISC = SQRT( T1**2+AD12*AD21-AD11*AD22 )
+ TEMP = DBLE( T1-ABI22 )*DBLE( RTDISC ) +
+ $ DIMAG( T1-ABI22 )*DIMAG( RTDISC )
+ IF( TEMP.LE.ZERO ) THEN
+ SHIFT = T1 + RTDISC
+ ELSE
+ SHIFT = T1 - RTDISC
+ END IF
+ ELSE
+*
+* Exceptional shift. Chosen for no particularly good reason.
+*
+ ESHIFT = ESHIFT + DCONJG( ( ASCALE*H( ILAST-1, ILAST ) ) /
+ $ ( BSCALE*T( ILAST-1, ILAST-1 ) ) )
+ SHIFT = ESHIFT
+ END IF
+*
+* Now check for two consecutive small subdiagonals.
+*
+ DO 80 J = ILAST - 1, IFIRST + 1, -1
+ ISTART = J
+ CTEMP = ASCALE*H( J, J ) - SHIFT*( BSCALE*T( J, J ) )
+ TEMP = ABS1( CTEMP )
+ TEMP2 = ASCALE*ABS1( H( J+1, J ) )
+ TEMPR = MAX( TEMP, TEMP2 )
+ IF( TEMPR.LT.ONE .AND. TEMPR.NE.ZERO ) THEN
+ TEMP = TEMP / TEMPR
+ TEMP2 = TEMP2 / TEMPR
+ END IF
+ IF( ABS1( H( J, J-1 ) )*TEMP2.LE.TEMP*ATOL )
+ $ GO TO 90
+ 80 CONTINUE
+*
+ ISTART = IFIRST
+ CTEMP = ASCALE*H( IFIRST, IFIRST ) -
+ $ SHIFT*( BSCALE*T( IFIRST, IFIRST ) )
+ 90 CONTINUE
+*
+* Do an implicit-shift QZ sweep.
+*
+* Initial Q
+*
+ CTEMP2 = ASCALE*H( ISTART+1, ISTART )
+ CALL ZLARTG( CTEMP, CTEMP2, C, S, CTEMP3 )
+*
+* Sweep
+*
+ DO 150 J = ISTART, ILAST - 1
+ IF( J.GT.ISTART ) THEN
+ CTEMP = H( J, J-1 )
+ CALL ZLARTG( CTEMP, H( J+1, J-1 ), C, S, H( J, J-1 ) )
+ H( J+1, J-1 ) = CZERO
+ END IF
+*
+ DO 100 JC = J, ILASTM
+ CTEMP = C*H( J, JC ) + S*H( J+1, JC )
+ H( J+1, JC ) = -DCONJG( S )*H( J, JC ) + C*H( J+1, JC )
+ H( J, JC ) = CTEMP
+ CTEMP2 = C*T( J, JC ) + S*T( J+1, JC )
+ T( J+1, JC ) = -DCONJG( S )*T( J, JC ) + C*T( J+1, JC )
+ T( J, JC ) = CTEMP2
+ 100 CONTINUE
+ IF( ILQ ) THEN
+ DO 110 JR = 1, N
+ CTEMP = C*Q( JR, J ) + DCONJG( S )*Q( JR, J+1 )
+ Q( JR, J+1 ) = -S*Q( JR, J ) + C*Q( JR, J+1 )
+ Q( JR, J ) = CTEMP
+ 110 CONTINUE
+ END IF
+*
+ CTEMP = T( J+1, J+1 )
+ CALL ZLARTG( CTEMP, T( J+1, J ), C, S, T( J+1, J+1 ) )
+ T( J+1, J ) = CZERO
+*
+ DO 120 JR = IFRSTM, MIN( J+2, ILAST )
+ CTEMP = C*H( JR, J+1 ) + S*H( JR, J )
+ H( JR, J ) = -DCONJG( S )*H( JR, J+1 ) + C*H( JR, J )
+ H( JR, J+1 ) = CTEMP
+ 120 CONTINUE
+ DO 130 JR = IFRSTM, J
+ CTEMP = C*T( JR, J+1 ) + S*T( JR, J )
+ T( JR, J ) = -DCONJG( S )*T( JR, J+1 ) + C*T( JR, J )
+ T( JR, J+1 ) = CTEMP
+ 130 CONTINUE
+ IF( ILZ ) THEN
+ DO 140 JR = 1, N
+ CTEMP = C*Z( JR, J+1 ) + S*Z( JR, J )
+ Z( JR, J ) = -DCONJG( S )*Z( JR, J+1 ) + C*Z( JR, J )
+ Z( JR, J+1 ) = CTEMP
+ 140 CONTINUE
+ END IF
+ 150 CONTINUE
+*
+ 160 CONTINUE
+*
+ 170 CONTINUE
+*
+* Drop-through = non-convergence
+*
+ 180 CONTINUE
+ INFO = ILAST
+ GO TO 210
+*
+* Successful completion of all QZ steps
+*
+ 190 CONTINUE
+*
+* Set Eigenvalues 1:ILO-1
+*
+ DO 200 J = 1, ILO - 1
+ ABSB = ABS( T( J, J ) )
+ IF( ABSB.GT.SAFMIN ) THEN
+ SIGNBC = DCONJG( T( J, J ) / ABSB )
+ T( J, J ) = ABSB
+ IF( ILSCHR ) THEN
+ CALL ZSCAL( J-1, SIGNBC, T( 1, J ), 1 )
+ CALL ZSCAL( J, SIGNBC, H( 1, J ), 1 )
+ ELSE
+ H( J, J ) = H( J, J )*SIGNBC
+ END IF
+ IF( ILZ )
+ $ CALL ZSCAL( N, SIGNBC, Z( 1, J ), 1 )
+ ELSE
+ T( J, J ) = CZERO
+ END IF
+ ALPHA( J ) = H( J, J )
+ BETA( J ) = T( J, J )
+ 200 CONTINUE
+*
+* Normal Termination
+*
+ INFO = 0
+*
+* Exit (other than argument error) -- return optimal workspace size
+*
+ 210 CONTINUE
+ WORK( 1 ) = DCMPLX( N )
+ RETURN
+*
+* End of ZHGEQZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zhseqr.f b/2.3-1/src/fortran/lapack/zhseqr.f
new file mode 100644
index 00000000..fb721dad
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zhseqr.f
@@ -0,0 +1,395 @@
+ SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N
+ CHARACTER COMPZ, JOB
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * )
+* ..
+* Purpose
+* =======
+*
+* ZHSEQR computes the eigenvalues of a Hessenberg matrix H
+* and, optionally, the matrices T and Z from the Schur decomposition
+* H = Z T Z**H, where T is an upper triangular matrix (the
+* Schur form), and Z is the unitary matrix of Schur vectors.
+*
+* Optionally Z may be postmultiplied into an input unitary
+* matrix Q so that this routine can give the Schur factorization
+* of a matrix A which has been reduced to the Hessenberg form H
+* by the unitary matrix Q: A = Q*H*Q**H = (QZ)*H*(QZ)**H.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* = 'E': compute eigenvalues only;
+* = 'S': compute eigenvalues and the Schur form T.
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': no Schur vectors are computed;
+* = 'I': Z is initialized to the unit matrix and the matrix Z
+* of Schur vectors of H is returned;
+* = 'V': Z must contain an unitary matrix Q on entry, and
+* the product Q*Z is returned.
+*
+* N (input) INTEGER
+* The order of the matrix H. N .GE. 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+* set by a previous call to ZGEBAL, and then passed to ZGEHRD
+* when the matrix output by ZGEBAL is reduced to Hessenberg
+* form. Otherwise ILO and IHI should be set to 1 and N
+* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
+* If N = 0, then ILO = 1 and IHI = 0.
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO = 0 and JOB = 'S', H contains the upper
+* triangular matrix T from the Schur decomposition (the
+* Schur form). If INFO = 0 and JOB = 'E', the contents of
+* H are unspecified on exit. (The output value of H when
+* INFO.GT.0 is given under the description of INFO below.)
+*
+* Unlike earlier versions of ZHSEQR, this subroutine may
+* explicitly H(i,j) = 0 for i.GT.j and j = 1, 2, ... ILO-1
+* or j = IHI+1, IHI+2, ... N.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH .GE. max(1,N).
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* The computed eigenvalues. If JOB = 'S', the eigenvalues are
+* stored in the same order as on the diagonal of the Schur
+* form returned in H, with W(i) = H(i,i).
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* If COMPZ = 'N', Z is not referenced.
+* If COMPZ = 'I', on entry Z need not be set and on exit,
+* if INFO = 0, Z contains the unitary matrix Z of the Schur
+* vectors of H. If COMPZ = 'V', on entry Z must contain an
+* N-by-N matrix Q, which is assumed to be equal to the unit
+* matrix except for the submatrix Z(ILO:IHI,ILO:IHI). On exit,
+* if INFO = 0, Z contains Q*Z.
+* Normally Q is the unitary matrix generated by ZUNGHR
+* after the call to ZGEHRD which formed the Hessenberg matrix
+* H. (The output value of Z when INFO.GT.0 is given under
+* the description of INFO below.)
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. if COMPZ = 'I' or
+* COMPZ = 'V', then LDZ.GE.MAX(1,N). Otherwize, LDZ.GE.1.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (LWORK)
+* On exit, if INFO = 0, WORK(1) returns an estimate of
+* the optimal value for LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK .GE. max(1,N)
+* is sufficient, but LWORK typically as large as 6*N may
+* be required for optimal performance. A workspace query
+* to determine the optimal workspace size is recommended.
+*
+* If LWORK = -1, then ZHSEQR does a workspace query.
+* In this case, ZHSEQR checks the input parameters and
+* estimates the optimal workspace size for the given
+* values of N, ILO and IHI. The estimate is returned
+* in WORK(1). No error message related to LWORK is
+* issued by XERBLA. Neither H nor Z are accessed.
+*
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .LT. 0: if INFO = -i, the i-th argument had an illegal
+* value
+* .GT. 0: if INFO = i, ZHSEQR failed to compute all of
+* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
+* and WI contain those eigenvalues which have been
+* successfully computed. (Failures are rare.)
+*
+* If INFO .GT. 0 and JOB = 'E', then on exit, the
+* remaining unconverged eigenvalues are the eigen-
+* values of the upper Hessenberg matrix rows and
+* columns ILO through INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and JOB = 'S', then on exit
+*
+* (*) (initial value of H)*U = U*(final value of H)
+*
+* where U is a unitary matrix. The final
+* value of H is upper Hessenberg and triangular in
+* rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and COMPZ = 'V', then on exit
+*
+* (final value of Z) = (initial value of Z)*U
+*
+* where U is the unitary matrix in (*) (regard-
+* less of the value of JOB.)
+*
+* If INFO .GT. 0 and COMPZ = 'I', then on exit
+* (final value of Z) = U
+* where U is the unitary matrix in (*) (regard-
+* less of the value of JOB.)
+*
+* If INFO .GT. 0 and COMPZ = 'N', then Z is not
+* accessed.
+*
+* ================================================================
+* Default values supplied by
+* ILAENV(ISPEC,'ZHSEQR',JOB(:1)//COMPZ(:1),N,ILO,IHI,LWORK).
+* It is suggested that these defaults be adjusted in order
+* to attain best performance in each particular
+* computational environment.
+*
+* ISPEC=1: The ZLAHQR vs ZLAQR0 crossover point.
+* Default: 75. (Must be at least 11.)
+*
+* ISPEC=2: Recommended deflation window size.
+* This depends on ILO, IHI and NS. NS is the
+* number of simultaneous shifts returned
+* by ILAENV(ISPEC=4). (See ISPEC=4 below.)
+* The default for (IHI-ILO+1).LE.500 is NS.
+* The default for (IHI-ILO+1).GT.500 is 3*NS/2.
+*
+* ISPEC=3: Nibble crossover point. (See ILAENV for
+* details.) Default: 14% of deflation window
+* size.
+*
+* ISPEC=4: Number of simultaneous shifts, NS, in
+* a multi-shift QR iteration.
+*
+* If IHI-ILO+1 is ...
+*
+* greater than ...but less ... the
+* or equal to ... than default is
+*
+* 1 30 NS - 2(+)
+* 30 60 NS - 4(+)
+* 60 150 NS = 10(+)
+* 150 590 NS = **
+* 590 3000 NS = 64
+* 3000 6000 NS = 128
+* 6000 infinity NS = 256
+*
+* (+) By default some or all matrices of this order
+* are passed to the implicit double shift routine
+* ZLAHQR and NS is ignored. See ISPEC=1 above
+* and comments in IPARM for details.
+*
+* The asterisks (**) indicate an ad-hoc
+* function of N increasing from 10 to 64.
+*
+* ISPEC=5: Select structured matrix multiply.
+* (See ILAENV for details.) Default: 3.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+* References:
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
+* Performance, SIAM Journal of Matrix Analysis, volume 23, pages
+* 929--947, 2002.
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part II: Aggressive Early Deflation, SIAM Journal
+* of Matrix Analysis, volume 23, pages 948--973, 2002.
+*
+* ================================================================
+* .. Parameters ..
+*
+* ==== Matrices of order NTINY or smaller must be processed by
+* . ZLAHQR because of insufficient subdiagonal scratch space.
+* . (This is a hard limit.) ====
+*
+* ==== NL allocates some local workspace to help small matrices
+* . through a rare ZLAHQR failure. NL .GT. NTINY = 11 is
+* . required and NL .LE. NMIN = ILAENV(ISPEC=1,...) is recom-
+* . mended. (The default value of NMIN is 75.) Using NL = 49
+* . allows up to six simultaneous shifts and a 16-by-16
+* . deflation window. ====
+*
+ INTEGER NTINY
+ PARAMETER ( NTINY = 11 )
+ INTEGER NL
+ PARAMETER ( NL = 49 )
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION RZERO
+ PARAMETER ( RZERO = 0.0d0 )
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 HL( NL, NL ), WORKL( NL )
+* ..
+* .. Local Scalars ..
+ INTEGER KBOT, NMIN
+ LOGICAL INITZ, LQUERY, WANTT, WANTZ
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ LOGICAL LSAME
+ EXTERNAL ILAENV, LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZCOPY, ZLACPY, ZLAHQR, ZLAQR0, ZLASET
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCMPLX, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* ==== Decode and check the input parameters. ====
+*
+ WANTT = LSAME( JOB, 'S' )
+ INITZ = LSAME( COMPZ, 'I' )
+ WANTZ = INITZ .OR. LSAME( COMPZ, 'V' )
+ WORK( 1 ) = DCMPLX( DBLE( MAX( 1, N ) ), RZERO )
+ LQUERY = LWORK.EQ.-1
+*
+ INFO = 0
+ IF( .NOT.LSAME( JOB, 'E' ) .AND. .NOT.WANTT ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( COMPZ, 'N' ) .AND. .NOT.WANTZ ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -5
+ ELSE IF( LDH.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -10
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+*
+* ==== Quick return in case of invalid argument. ====
+*
+ CALL XERBLA( 'ZHSEQR', -INFO )
+ RETURN
+*
+ ELSE IF( N.EQ.0 ) THEN
+*
+* ==== Quick return in case N = 0; nothing to do. ====
+*
+ RETURN
+*
+ ELSE IF( LQUERY ) THEN
+*
+* ==== Quick return in case of a workspace query ====
+*
+ CALL ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILO, IHI, Z,
+ $ LDZ, WORK, LWORK, INFO )
+* ==== Ensure reported workspace size is backward-compatible with
+* . previous LAPACK versions. ====
+ WORK( 1 ) = DCMPLX( MAX( DBLE( WORK( 1 ) ), DBLE( MAX( 1,
+ $ N ) ) ), RZERO )
+ RETURN
+*
+ ELSE
+*
+* ==== copy eigenvalues isolated by ZGEBAL ====
+*
+ IF( ILO.GT.1 )
+ $ CALL ZCOPY( ILO-1, H, LDH+1, W, 1 )
+ IF( IHI.LT.N )
+ $ CALL ZCOPY( N-IHI, H( IHI+1, IHI+1 ), LDH+1, W( IHI+1 ), 1 )
+*
+* ==== Initialize Z, if requested ====
+*
+ IF( INITZ )
+ $ CALL ZLASET( 'A', N, N, ZERO, ONE, Z, LDZ )
+*
+* ==== Quick return if possible ====
+*
+ IF( ILO.EQ.IHI ) THEN
+ W( ILO ) = H( ILO, ILO )
+ RETURN
+ END IF
+*
+* ==== ZLAHQR/ZLAQR0 crossover point ====
+*
+ NMIN = ILAENV( 1, 'ZHSEQR', JOB( : 1 ) // COMPZ( : 1 ), N, ILO,
+ $ IHI, LWORK )
+ NMIN = MAX( NTINY, NMIN )
+*
+* ==== ZLAQR0 for big matrices; ZLAHQR for small ones ====
+*
+ IF( N.GT.NMIN ) THEN
+ CALL ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILO, IHI,
+ $ Z, LDZ, WORK, LWORK, INFO )
+ ELSE
+*
+* ==== Small matrix ====
+*
+ CALL ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILO, IHI,
+ $ Z, LDZ, INFO )
+*
+ IF( INFO.GT.0 ) THEN
+*
+* ==== A rare ZLAHQR failure! ZLAQR0 sometimes succeeds
+* . when ZLAHQR fails. ====
+*
+ KBOT = INFO
+*
+ IF( N.GE.NL ) THEN
+*
+* ==== Larger matrices have enough subdiagonal scratch
+* . space to call ZLAQR0 directly. ====
+*
+ CALL ZLAQR0( WANTT, WANTZ, N, ILO, KBOT, H, LDH, W,
+ $ ILO, IHI, Z, LDZ, WORK, LWORK, INFO )
+*
+ ELSE
+*
+* ==== Tiny matrices don't have enough subdiagonal
+* . scratch space to benefit from ZLAQR0. Hence,
+* . tiny matrices must be copied into a larger
+* . array before calling ZLAQR0. ====
+*
+ CALL ZLACPY( 'A', N, N, H, LDH, HL, NL )
+ HL( N+1, N ) = ZERO
+ CALL ZLASET( 'A', NL, NL-N, ZERO, ZERO, HL( 1, N+1 ),
+ $ NL )
+ CALL ZLAQR0( WANTT, WANTZ, NL, ILO, KBOT, HL, NL, W,
+ $ ILO, IHI, Z, LDZ, WORKL, NL, INFO )
+ IF( WANTT .OR. INFO.NE.0 )
+ $ CALL ZLACPY( 'A', N, N, HL, NL, H, LDH )
+ END IF
+ END IF
+ END IF
+*
+* ==== Clear out the trash, if necessary. ====
+*
+ IF( ( WANTT .OR. INFO.NE.0 ) .AND. N.GT.2 )
+ $ CALL ZLASET( 'L', N-2, N-2, ZERO, ZERO, H( 3, 1 ), LDH )
+*
+* ==== Ensure reported workspace size is backward-compatible with
+* . previous LAPACK versions. ====
+*
+ WORK( 1 ) = DCMPLX( MAX( DBLE( MAX( 1, N ) ),
+ $ DBLE( WORK( 1 ) ) ), RZERO )
+ END IF
+*
+* ==== End of ZHSEQR ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlabrd.f b/2.3-1/src/fortran/lapack/zlabrd.f
new file mode 100644
index 00000000..fb482c84
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlabrd.f
@@ -0,0 +1,328 @@
+ SUBROUTINE ZLABRD( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
+ $ LDY )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, LDX, LDY, M, N, NB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * )
+ COMPLEX*16 A( LDA, * ), TAUP( * ), TAUQ( * ), X( LDX, * ),
+ $ Y( LDY, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLABRD reduces the first NB rows and columns of a complex general
+* m by n matrix A to upper or lower real bidiagonal form by a unitary
+* transformation Q' * A * P, and returns the matrices X and Y which
+* are needed to apply the transformation to the unreduced part of A.
+*
+* If m >= n, A is reduced to upper bidiagonal form; if m < n, to lower
+* bidiagonal form.
+*
+* This is an auxiliary routine called by ZGEBRD
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows in the matrix A.
+*
+* N (input) INTEGER
+* The number of columns in the matrix A.
+*
+* NB (input) INTEGER
+* The number of leading rows and columns of A to be reduced.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the m by n general matrix to be reduced.
+* On exit, the first NB rows and columns of the matrix are
+* overwritten; the rest of the array is unchanged.
+* If m >= n, elements on and below the diagonal in the first NB
+* columns, with the array TAUQ, represent the unitary
+* matrix Q as a product of elementary reflectors; and
+* elements above the diagonal in the first NB rows, with the
+* array TAUP, represent the unitary matrix P as a product
+* of elementary reflectors.
+* If m < n, elements below the diagonal in the first NB
+* columns, with the array TAUQ, represent the unitary
+* matrix Q as a product of elementary reflectors, and
+* elements on and above the diagonal in the first NB rows,
+* with the array TAUP, represent the unitary matrix P as
+* a product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* D (output) DOUBLE PRECISION array, dimension (NB)
+* The diagonal elements of the first NB rows and columns of
+* the reduced matrix. D(i) = A(i,i).
+*
+* E (output) DOUBLE PRECISION array, dimension (NB)
+* The off-diagonal elements of the first NB rows and columns of
+* the reduced matrix.
+*
+* TAUQ (output) COMPLEX*16 array dimension (NB)
+* The scalar factors of the elementary reflectors which
+* represent the unitary matrix Q. See Further Details.
+*
+* TAUP (output) COMPLEX*16 array, dimension (NB)
+* The scalar factors of the elementary reflectors which
+* represent the unitary matrix P. See Further Details.
+*
+* X (output) COMPLEX*16 array, dimension (LDX,NB)
+* The m-by-nb matrix X required to update the unreduced part
+* of A.
+*
+* LDX (input) INTEGER
+* The leading dimension of the array X. LDX >= max(1,M).
+*
+* Y (output) COMPLEX*16 array, dimension (LDY,NB)
+* The n-by-nb matrix Y required to update the unreduced part
+* of A.
+*
+* LDY (input) INTEGER
+* The leading dimension of the array Y. LDY >= max(1,N).
+*
+* Further Details
+* ===============
+*
+* The matrices Q and P are represented as products of elementary
+* reflectors:
+*
+* Q = H(1) H(2) . . . H(nb) and P = G(1) G(2) . . . G(nb)
+*
+* Each H(i) and G(i) has the form:
+*
+* H(i) = I - tauq * v * v' and G(i) = I - taup * u * u'
+*
+* where tauq and taup are complex scalars, and v and u are complex
+* vectors.
+*
+* If m >= n, v(1:i-1) = 0, v(i) = 1, and v(i:m) is stored on exit in
+* A(i:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+1:n) is stored on exit in
+* A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* If m < n, v(1:i) = 0, v(i+1) = 1, and v(i+1:m) is stored on exit in
+* A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i:n) is stored on exit in
+* A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+* The elements of the vectors v and u together form the m-by-nb matrix
+* V and the nb-by-n matrix U' which are needed, with X and Y, to apply
+* the transformation to the unreduced part of the matrix, using a block
+* update of the form: A := A - V*Y' - X*U'.
+*
+* The contents of A on exit are illustrated by the following examples
+* with nb = 2:
+*
+* m = 6 and n = 5 (m > n): m = 5 and n = 6 (m < n):
+*
+* ( 1 1 u1 u1 u1 ) ( 1 u1 u1 u1 u1 u1 )
+* ( v1 1 1 u2 u2 ) ( 1 1 u2 u2 u2 u2 )
+* ( v1 v2 a a a ) ( v1 1 a a a a )
+* ( v1 v2 a a a ) ( v1 v2 a a a a )
+* ( v1 v2 a a a ) ( v1 v2 a a a a )
+* ( v1 v2 a a a )
+*
+* where a denotes an element of the original matrix which is unchanged,
+* vi denotes an element of the vector defining H(i), and ui an element
+* of the vector defining G(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZGEMV, ZLACGV, ZLARFG, ZSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 )
+ $ RETURN
+*
+ IF( M.GE.N ) THEN
+*
+* Reduce to upper bidiagonal form
+*
+ DO 10 I = 1, NB
+*
+* Update A(i:m,i)
+*
+ CALL ZLACGV( I-1, Y( I, 1 ), LDY )
+ CALL ZGEMV( 'No transpose', M-I+1, I-1, -ONE, A( I, 1 ),
+ $ LDA, Y( I, 1 ), LDY, ONE, A( I, I ), 1 )
+ CALL ZLACGV( I-1, Y( I, 1 ), LDY )
+ CALL ZGEMV( 'No transpose', M-I+1, I-1, -ONE, X( I, 1 ),
+ $ LDX, A( 1, I ), 1, ONE, A( I, I ), 1 )
+*
+* Generate reflection Q(i) to annihilate A(i+1:m,i)
+*
+ ALPHA = A( I, I )
+ CALL ZLARFG( M-I+1, ALPHA, A( MIN( I+1, M ), I ), 1,
+ $ TAUQ( I ) )
+ D( I ) = ALPHA
+ IF( I.LT.N ) THEN
+ A( I, I ) = ONE
+*
+* Compute Y(i+1:n,i)
+*
+ CALL ZGEMV( 'Conjugate transpose', M-I+1, N-I, ONE,
+ $ A( I, I+1 ), LDA, A( I, I ), 1, ZERO,
+ $ Y( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', M-I+1, I-1, ONE,
+ $ A( I, 1 ), LDA, A( I, I ), 1, ZERO,
+ $ Y( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', N-I, I-1, -ONE, Y( I+1, 1 ),
+ $ LDY, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', M-I+1, I-1, ONE,
+ $ X( I, 1 ), LDX, A( I, I ), 1, ZERO,
+ $ Y( 1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', I-1, N-I, -ONE,
+ $ A( 1, I+1 ), LDA, Y( 1, I ), 1, ONE,
+ $ Y( I+1, I ), 1 )
+ CALL ZSCAL( N-I, TAUQ( I ), Y( I+1, I ), 1 )
+*
+* Update A(i,i+1:n)
+*
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ CALL ZLACGV( I, A( I, 1 ), LDA )
+ CALL ZGEMV( 'No transpose', N-I, I, -ONE, Y( I+1, 1 ),
+ $ LDY, A( I, 1 ), LDA, ONE, A( I, I+1 ), LDA )
+ CALL ZLACGV( I, A( I, 1 ), LDA )
+ CALL ZLACGV( I-1, X( I, 1 ), LDX )
+ CALL ZGEMV( 'Conjugate transpose', I-1, N-I, -ONE,
+ $ A( 1, I+1 ), LDA, X( I, 1 ), LDX, ONE,
+ $ A( I, I+1 ), LDA )
+ CALL ZLACGV( I-1, X( I, 1 ), LDX )
+*
+* Generate reflection P(i) to annihilate A(i,i+2:n)
+*
+ ALPHA = A( I, I+1 )
+ CALL ZLARFG( N-I, ALPHA, A( I, MIN( I+2, N ) ), LDA,
+ $ TAUP( I ) )
+ E( I ) = ALPHA
+ A( I, I+1 ) = ONE
+*
+* Compute X(i+1:m,i)
+*
+ CALL ZGEMV( 'No transpose', M-I, N-I, ONE, A( I+1, I+1 ),
+ $ LDA, A( I, I+1 ), LDA, ZERO, X( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', N-I, I, ONE,
+ $ Y( I+1, 1 ), LDY, A( I, I+1 ), LDA, ZERO,
+ $ X( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', M-I, I, -ONE, A( I+1, 1 ),
+ $ LDA, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL ZGEMV( 'No transpose', I-1, N-I, ONE, A( 1, I+1 ),
+ $ LDA, A( I, I+1 ), LDA, ZERO, X( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', M-I, I-1, -ONE, X( I+1, 1 ),
+ $ LDX, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL ZSCAL( M-I, TAUP( I ), X( I+1, I ), 1 )
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ END IF
+ 10 CONTINUE
+ ELSE
+*
+* Reduce to lower bidiagonal form
+*
+ DO 20 I = 1, NB
+*
+* Update A(i,i:n)
+*
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+ CALL ZLACGV( I-1, A( I, 1 ), LDA )
+ CALL ZGEMV( 'No transpose', N-I+1, I-1, -ONE, Y( I, 1 ),
+ $ LDY, A( I, 1 ), LDA, ONE, A( I, I ), LDA )
+ CALL ZLACGV( I-1, A( I, 1 ), LDA )
+ CALL ZLACGV( I-1, X( I, 1 ), LDX )
+ CALL ZGEMV( 'Conjugate transpose', I-1, N-I+1, -ONE,
+ $ A( 1, I ), LDA, X( I, 1 ), LDX, ONE, A( I, I ),
+ $ LDA )
+ CALL ZLACGV( I-1, X( I, 1 ), LDX )
+*
+* Generate reflection P(i) to annihilate A(i,i+1:n)
+*
+ ALPHA = A( I, I )
+ CALL ZLARFG( N-I+1, ALPHA, A( I, MIN( I+1, N ) ), LDA,
+ $ TAUP( I ) )
+ D( I ) = ALPHA
+ IF( I.LT.M ) THEN
+ A( I, I ) = ONE
+*
+* Compute X(i+1:m,i)
+*
+ CALL ZGEMV( 'No transpose', M-I, N-I+1, ONE, A( I+1, I ),
+ $ LDA, A( I, I ), LDA, ZERO, X( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', N-I+1, I-1, ONE,
+ $ Y( I, 1 ), LDY, A( I, I ), LDA, ZERO,
+ $ X( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', M-I, I-1, -ONE, A( I+1, 1 ),
+ $ LDA, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL ZGEMV( 'No transpose', I-1, N-I+1, ONE, A( 1, I ),
+ $ LDA, A( I, I ), LDA, ZERO, X( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', M-I, I-1, -ONE, X( I+1, 1 ),
+ $ LDX, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+ CALL ZSCAL( M-I, TAUP( I ), X( I+1, I ), 1 )
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+*
+* Update A(i+1:m,i)
+*
+ CALL ZLACGV( I-1, Y( I, 1 ), LDY )
+ CALL ZGEMV( 'No transpose', M-I, I-1, -ONE, A( I+1, 1 ),
+ $ LDA, Y( I, 1 ), LDY, ONE, A( I+1, I ), 1 )
+ CALL ZLACGV( I-1, Y( I, 1 ), LDY )
+ CALL ZGEMV( 'No transpose', M-I, I, -ONE, X( I+1, 1 ),
+ $ LDX, A( 1, I ), 1, ONE, A( I+1, I ), 1 )
+*
+* Generate reflection Q(i) to annihilate A(i+2:m,i)
+*
+ ALPHA = A( I+1, I )
+ CALL ZLARFG( M-I, ALPHA, A( MIN( I+2, M ), I ), 1,
+ $ TAUQ( I ) )
+ E( I ) = ALPHA
+ A( I+1, I ) = ONE
+*
+* Compute Y(i+1:n,i)
+*
+ CALL ZGEMV( 'Conjugate transpose', M-I, N-I, ONE,
+ $ A( I+1, I+1 ), LDA, A( I+1, I ), 1, ZERO,
+ $ Y( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', M-I, I-1, ONE,
+ $ A( I+1, 1 ), LDA, A( I+1, I ), 1, ZERO,
+ $ Y( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', N-I, I-1, -ONE, Y( I+1, 1 ),
+ $ LDY, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', M-I, I, ONE,
+ $ X( I+1, 1 ), LDX, A( I+1, I ), 1, ZERO,
+ $ Y( 1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', I, N-I, -ONE,
+ $ A( 1, I+1 ), LDA, Y( 1, I ), 1, ONE,
+ $ Y( I+1, I ), 1 )
+ CALL ZSCAL( N-I, TAUQ( I ), Y( I+1, I ), 1 )
+ ELSE
+ CALL ZLACGV( N-I+1, A( I, I ), LDA )
+ END IF
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZLABRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlacgv.f b/2.3-1/src/fortran/lapack/zlacgv.f
new file mode 100644
index 00000000..0033e306
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlacgv.f
@@ -0,0 +1,60 @@
+ SUBROUTINE ZLACGV( N, X, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLACGV conjugates a complex vector of length N.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The length of the vector X. N >= 0.
+*
+* X (input/output) COMPLEX*16 array, dimension
+* (1+(N-1)*abs(INCX))
+* On entry, the vector of length N to be conjugated.
+* On exit, X is overwritten with conjg(X).
+*
+* INCX (input) INTEGER
+* The spacing between successive elements of X.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, IOFF
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+ IF( INCX.EQ.1 ) THEN
+ DO 10 I = 1, N
+ X( I ) = DCONJG( X( I ) )
+ 10 CONTINUE
+ ELSE
+ IOFF = 1
+ IF( INCX.LT.0 )
+ $ IOFF = 1 - ( N-1 )*INCX
+ DO 20 I = 1, N
+ X( IOFF ) = DCONJG( X( IOFF ) )
+ IOFF = IOFF + INCX
+ 20 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZLACGV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlacn2.f b/2.3-1/src/fortran/lapack/zlacn2.f
new file mode 100644
index 00000000..99f7ae35
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlacn2.f
@@ -0,0 +1,221 @@
+ SUBROUTINE ZLACN2( N, V, X, EST, KASE, ISAVE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER KASE, N
+ DOUBLE PRECISION EST
+* ..
+* .. Array Arguments ..
+ INTEGER ISAVE( 3 )
+ COMPLEX*16 V( * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLACN2 estimates the 1-norm of a square, complex matrix A.
+* Reverse communication is used for evaluating matrix-vector products.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 1.
+*
+* V (workspace) COMPLEX*16 array, dimension (N)
+* On the final return, V = A*W, where EST = norm(V)/norm(W)
+* (W is not returned).
+*
+* X (input/output) COMPLEX*16 array, dimension (N)
+* On an intermediate return, X should be overwritten by
+* A * X, if KASE=1,
+* A' * X, if KASE=2,
+* where A' is the conjugate transpose of A, and ZLACN2 must be
+* re-called with all the other parameters unchanged.
+*
+* EST (input/output) DOUBLE PRECISION
+* On entry with KASE = 1 or 2 and ISAVE(1) = 3, EST should be
+* unchanged from the previous call to ZLACN2.
+* On exit, EST is an estimate (a lower bound) for norm(A).
+*
+* KASE (input/output) INTEGER
+* On the initial call to ZLACN2, KASE should be 0.
+* On an intermediate return, KASE will be 1 or 2, indicating
+* whether X should be overwritten by A * X or A' * X.
+* On the final return from ZLACN2, KASE will again be 0.
+*
+* ISAVE (input/output) INTEGER array, dimension (3)
+* ISAVE is used to save variables between calls to ZLACN2
+*
+* Further Details
+* ======= =======
+*
+* Contributed by Nick Higham, University of Manchester.
+* Originally named CONEST, dated March 16, 1988.
+*
+* Reference: N.J. Higham, "FORTRAN codes for estimating the one-norm of
+* a real or complex matrix, with applications to condition estimation",
+* ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988.
+*
+* Last modified: April, 1999
+*
+* This is a thread safe version of ZLACON, which uses the array ISAVE
+* in place of a SAVE statement, as follows:
+*
+* ZLACON ZLACN2
+* JUMP ISAVE(1)
+* J ISAVE(2)
+* ITER ISAVE(3)
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 5 )
+ DOUBLE PRECISION ONE, TWO
+ PARAMETER ( ONE = 1.0D0, TWO = 2.0D0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
+ $ CONE = ( 1.0D0, 0.0D0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, JLAST
+ DOUBLE PRECISION ABSXI, ALTSGN, ESTOLD, SAFMIN, TEMP
+* ..
+* .. External Functions ..
+ INTEGER IZMAX1
+ DOUBLE PRECISION DLAMCH, DZSUM1
+ EXTERNAL IZMAX1, DLAMCH, DZSUM1
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZCOPY
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DIMAG
+* ..
+* .. Executable Statements ..
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ IF( KASE.EQ.0 ) THEN
+ DO 10 I = 1, N
+ X( I ) = DCMPLX( ONE / DBLE( N ) )
+ 10 CONTINUE
+ KASE = 1
+ ISAVE( 1 ) = 1
+ RETURN
+ END IF
+*
+ GO TO ( 20, 40, 70, 90, 120 )ISAVE( 1 )
+*
+* ................ ENTRY (ISAVE( 1 ) = 1)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 20 CONTINUE
+ IF( N.EQ.1 ) THEN
+ V( 1 ) = X( 1 )
+ EST = ABS( V( 1 ) )
+* ... QUIT
+ GO TO 130
+ END IF
+ EST = DZSUM1( N, X, 1 )
+*
+ DO 30 I = 1, N
+ ABSXI = ABS( X( I ) )
+ IF( ABSXI.GT.SAFMIN ) THEN
+ X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
+ $ DIMAG( X( I ) ) / ABSXI )
+ ELSE
+ X( I ) = CONE
+ END IF
+ 30 CONTINUE
+ KASE = 2
+ ISAVE( 1 ) = 2
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 2)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY CTRANS(A)*X.
+*
+ 40 CONTINUE
+ ISAVE( 2 ) = IZMAX1( N, X, 1 )
+ ISAVE( 3 ) = 2
+*
+* MAIN LOOP - ITERATIONS 2,3,...,ITMAX.
+*
+ 50 CONTINUE
+ DO 60 I = 1, N
+ X( I ) = CZERO
+ 60 CONTINUE
+ X( ISAVE( 2 ) ) = CONE
+ KASE = 1
+ ISAVE( 1 ) = 3
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 3)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 70 CONTINUE
+ CALL ZCOPY( N, X, 1, V, 1 )
+ ESTOLD = EST
+ EST = DZSUM1( N, V, 1 )
+*
+* TEST FOR CYCLING.
+ IF( EST.LE.ESTOLD )
+ $ GO TO 100
+*
+ DO 80 I = 1, N
+ ABSXI = ABS( X( I ) )
+ IF( ABSXI.GT.SAFMIN ) THEN
+ X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
+ $ DIMAG( X( I ) ) / ABSXI )
+ ELSE
+ X( I ) = CONE
+ END IF
+ 80 CONTINUE
+ KASE = 2
+ ISAVE( 1 ) = 4
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 4)
+* X HAS BEEN OVERWRITTEN BY CTRANS(A)*X.
+*
+ 90 CONTINUE
+ JLAST = ISAVE( 2 )
+ ISAVE( 2 ) = IZMAX1( N, X, 1 )
+ IF( ( ABS( X( JLAST ) ).NE.ABS( X( ISAVE( 2 ) ) ) ) .AND.
+ $ ( ISAVE( 3 ).LT.ITMAX ) ) THEN
+ ISAVE( 3 ) = ISAVE( 3 ) + 1
+ GO TO 50
+ END IF
+*
+* ITERATION COMPLETE. FINAL STAGE.
+*
+ 100 CONTINUE
+ ALTSGN = ONE
+ DO 110 I = 1, N
+ X( I ) = DCMPLX( ALTSGN*( ONE+DBLE( I-1 ) / DBLE( N-1 ) ) )
+ ALTSGN = -ALTSGN
+ 110 CONTINUE
+ KASE = 1
+ ISAVE( 1 ) = 5
+ RETURN
+*
+* ................ ENTRY (ISAVE( 1 ) = 5)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 120 CONTINUE
+ TEMP = TWO*( DZSUM1( N, X, 1 ) / DBLE( 3*N ) )
+ IF( TEMP.GT.EST ) THEN
+ CALL ZCOPY( N, X, 1, V, 1 )
+ EST = TEMP
+ END IF
+*
+ 130 CONTINUE
+ KASE = 0
+ RETURN
+*
+* End of ZLACN2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlacon.f b/2.3-1/src/fortran/lapack/zlacon.f
new file mode 100644
index 00000000..5773ef92
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlacon.f
@@ -0,0 +1,212 @@
+ SUBROUTINE ZLACON( N, V, X, EST, KASE )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER KASE, N
+ DOUBLE PRECISION EST
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 V( N ), X( N )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLACON estimates the 1-norm of a square, complex matrix A.
+* Reverse communication is used for evaluating matrix-vector products.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 1.
+*
+* V (workspace) COMPLEX*16 array, dimension (N)
+* On the final return, V = A*W, where EST = norm(V)/norm(W)
+* (W is not returned).
+*
+* X (input/output) COMPLEX*16 array, dimension (N)
+* On an intermediate return, X should be overwritten by
+* A * X, if KASE=1,
+* A' * X, if KASE=2,
+* where A' is the conjugate transpose of A, and ZLACON must be
+* re-called with all the other parameters unchanged.
+*
+* EST (input/output) DOUBLE PRECISION
+* On entry with KASE = 1 or 2 and JUMP = 3, EST should be
+* unchanged from the previous call to ZLACON.
+* On exit, EST is an estimate (a lower bound) for norm(A).
+*
+* KASE (input/output) INTEGER
+* On the initial call to ZLACON, KASE should be 0.
+* On an intermediate return, KASE will be 1 or 2, indicating
+* whether X should be overwritten by A * X or A' * X.
+* On the final return from ZLACON, KASE will again be 0.
+*
+* Further Details
+* ======= =======
+*
+* Contributed by Nick Higham, University of Manchester.
+* Originally named CONEST, dated March 16, 1988.
+*
+* Reference: N.J. Higham, "FORTRAN codes for estimating the one-norm of
+* a real or complex matrix, with applications to condition estimation",
+* ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988.
+*
+* Last modified: April, 1999
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 5 )
+ DOUBLE PRECISION ONE, TWO
+ PARAMETER ( ONE = 1.0D0, TWO = 2.0D0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
+ $ CONE = ( 1.0D0, 0.0D0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ITER, J, JLAST, JUMP
+ DOUBLE PRECISION ABSXI, ALTSGN, ESTOLD, SAFMIN, TEMP
+* ..
+* .. External Functions ..
+ INTEGER IZMAX1
+ DOUBLE PRECISION DLAMCH, DZSUM1
+ EXTERNAL IZMAX1, DLAMCH, DZSUM1
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZCOPY
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DIMAG
+* ..
+* .. Save statement ..
+ SAVE
+* ..
+* .. Executable Statements ..
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ IF( KASE.EQ.0 ) THEN
+ DO 10 I = 1, N
+ X( I ) = DCMPLX( ONE / DBLE( N ) )
+ 10 CONTINUE
+ KASE = 1
+ JUMP = 1
+ RETURN
+ END IF
+*
+ GO TO ( 20, 40, 70, 90, 120 )JUMP
+*
+* ................ ENTRY (JUMP = 1)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 20 CONTINUE
+ IF( N.EQ.1 ) THEN
+ V( 1 ) = X( 1 )
+ EST = ABS( V( 1 ) )
+* ... QUIT
+ GO TO 130
+ END IF
+ EST = DZSUM1( N, X, 1 )
+*
+ DO 30 I = 1, N
+ ABSXI = ABS( X( I ) )
+ IF( ABSXI.GT.SAFMIN ) THEN
+ X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
+ $ DIMAG( X( I ) ) / ABSXI )
+ ELSE
+ X( I ) = CONE
+ END IF
+ 30 CONTINUE
+ KASE = 2
+ JUMP = 2
+ RETURN
+*
+* ................ ENTRY (JUMP = 2)
+* FIRST ITERATION. X HAS BEEN OVERWRITTEN BY CTRANS(A)*X.
+*
+ 40 CONTINUE
+ J = IZMAX1( N, X, 1 )
+ ITER = 2
+*
+* MAIN LOOP - ITERATIONS 2,3,...,ITMAX.
+*
+ 50 CONTINUE
+ DO 60 I = 1, N
+ X( I ) = CZERO
+ 60 CONTINUE
+ X( J ) = CONE
+ KASE = 1
+ JUMP = 3
+ RETURN
+*
+* ................ ENTRY (JUMP = 3)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 70 CONTINUE
+ CALL ZCOPY( N, X, 1, V, 1 )
+ ESTOLD = EST
+ EST = DZSUM1( N, V, 1 )
+*
+* TEST FOR CYCLING.
+ IF( EST.LE.ESTOLD )
+ $ GO TO 100
+*
+ DO 80 I = 1, N
+ ABSXI = ABS( X( I ) )
+ IF( ABSXI.GT.SAFMIN ) THEN
+ X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
+ $ DIMAG( X( I ) ) / ABSXI )
+ ELSE
+ X( I ) = CONE
+ END IF
+ 80 CONTINUE
+ KASE = 2
+ JUMP = 4
+ RETURN
+*
+* ................ ENTRY (JUMP = 4)
+* X HAS BEEN OVERWRITTEN BY CTRANS(A)*X.
+*
+ 90 CONTINUE
+ JLAST = J
+ J = IZMAX1( N, X, 1 )
+ IF( ( ABS( X( JLAST ) ).NE.ABS( X( J ) ) ) .AND.
+ $ ( ITER.LT.ITMAX ) ) THEN
+ ITER = ITER + 1
+ GO TO 50
+ END IF
+*
+* ITERATION COMPLETE. FINAL STAGE.
+*
+ 100 CONTINUE
+ ALTSGN = ONE
+ DO 110 I = 1, N
+ X( I ) = DCMPLX( ALTSGN*( ONE+DBLE( I-1 ) / DBLE( N-1 ) ) )
+ ALTSGN = -ALTSGN
+ 110 CONTINUE
+ KASE = 1
+ JUMP = 5
+ RETURN
+*
+* ................ ENTRY (JUMP = 5)
+* X HAS BEEN OVERWRITTEN BY A*X.
+*
+ 120 CONTINUE
+ TEMP = TWO*( DZSUM1( N, X, 1 ) / DBLE( 3*N ) )
+ IF( TEMP.GT.EST ) THEN
+ CALL ZCOPY( N, X, 1, V, 1 )
+ EST = TEMP
+ END IF
+*
+ 130 CONTINUE
+ KASE = 0
+ RETURN
+*
+* End of ZLACON
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlacpy.f b/2.3-1/src/fortran/lapack/zlacpy.f
new file mode 100644
index 00000000..8878311a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlacpy.f
@@ -0,0 +1,90 @@
+ SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER LDA, LDB, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLACPY copies all or part of a two-dimensional matrix A to another
+* matrix B.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies the part of the matrix A to be copied to B.
+* = 'U': Upper triangular part
+* = 'L': Lower triangular part
+* Otherwise: All of the matrix A
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The m by n matrix A. If UPLO = 'U', only the upper trapezium
+* is accessed; if UPLO = 'L', only the lower trapezium is
+* accessed.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (output) COMPLEX*16 array, dimension (LDB,N)
+* On exit, B = A in the locations specified by UPLO.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, MIN( J, M )
+ B( I, J ) = A( I, J )
+ 10 CONTINUE
+ 20 CONTINUE
+*
+ ELSE IF( LSAME( UPLO, 'L' ) ) THEN
+ DO 40 J = 1, N
+ DO 30 I = J, M
+ B( I, J ) = A( I, J )
+ 30 CONTINUE
+ 40 CONTINUE
+*
+ ELSE
+ DO 60 J = 1, N
+ DO 50 I = 1, M
+ B( I, J ) = A( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZLACPY
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zladiv.f b/2.3-1/src/fortran/lapack/zladiv.f
new file mode 100644
index 00000000..4a12055e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zladiv.f
@@ -0,0 +1,46 @@
+ COMPLEX*16 FUNCTION ZLADIV( X, Y )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ COMPLEX*16 X, Y
+* ..
+*
+* Purpose
+* =======
+*
+* ZLADIV := X / Y, where X and Y are complex. The computation of X / Y
+* will not overflow on an intermediary step unless the results
+* overflows.
+*
+* Arguments
+* =========
+*
+* X (input) COMPLEX*16
+* Y (input) COMPLEX*16
+* The complex scalars X and Y.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ DOUBLE PRECISION ZI, ZR
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLADIV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCMPLX, DIMAG
+* ..
+* .. Executable Statements ..
+*
+ CALL DLADIV( DBLE( X ), DIMAG( X ), DBLE( Y ), DIMAG( Y ), ZR,
+ $ ZI )
+ ZLADIV = DCMPLX( ZR, ZI )
+*
+ RETURN
+*
+* End of ZLADIV
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlahqr.f b/2.3-1/src/fortran/lapack/zlahqr.f
new file mode 100644
index 00000000..9ce9be19
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlahqr.f
@@ -0,0 +1,470 @@
+ SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
+ $ IHIZ, Z, LDZ, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), W( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAHQR is an auxiliary routine called by CHSEQR to update the
+* eigenvalues and Schur decomposition already computed by CHSEQR, by
+* dealing with the Hessenberg submatrix in rows and columns ILO to
+* IHI.
+*
+* Arguments
+* =========
+*
+* WANTT (input) LOGICAL
+* = .TRUE. : the full Schur form T is required;
+* = .FALSE.: only eigenvalues are required.
+*
+* WANTZ (input) LOGICAL
+* = .TRUE. : the matrix of Schur vectors Z is required;
+* = .FALSE.: Schur vectors are not required.
+*
+* N (input) INTEGER
+* The order of the matrix H. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows and
+* columns IHI+1:N, and that H(ILO,ILO-1) = 0 (unless ILO = 1).
+* ZLAHQR works primarily with the Hessenberg submatrix in rows
+* and columns ILO to IHI, but applies transformations to all of
+* H if WANTT is .TRUE..
+* 1 <= ILO <= max(1,IHI); IHI <= N.
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO is zero and if WANTT is .TRUE., then H
+* is upper triangular in rows and columns ILO:IHI. If INFO
+* is zero and if WANTT is .FALSE., then the contents of H
+* are unspecified on exit. The output state of H in case
+* INF is positive is below under the description of INFO.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH >= max(1,N).
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* The computed eigenvalues ILO to IHI are stored in the
+* corresponding elements of W. If WANTT is .TRUE., the
+* eigenvalues are stored in the same order as on the diagonal
+* of the Schur form returned in H, with W(i) = H(i,i).
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE..
+* 1 <= ILOZ <= ILO; IHI <= IHIZ <= N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* If WANTZ is .TRUE., on entry Z must contain the current
+* matrix Z of transformations accumulated by CHSEQR, and on
+* exit Z has been updated; transformations are applied only to
+* the submatrix Z(ILOZ:IHIZ,ILO:IHI).
+* If WANTZ is .FALSE., Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .GT. 0: if INFO = i, ZLAHQR failed to compute all the
+* eigenvalues ILO to IHI in a total of 30 iterations
+* per eigenvalue; elements i+1:ihi of W contain
+* those eigenvalues which have been successfully
+* computed.
+*
+* If INFO .GT. 0 and WANTT is .FALSE., then on exit,
+* the remaining unconverged eigenvalues are the
+* eigenvalues of the upper Hessenberg matrix
+* rows and columns ILO thorugh INFO of the final,
+* output value of H.
+*
+* If INFO .GT. 0 and WANTT is .TRUE., then on exit
+* (*) (initial value of H)*U = U*(final value of H)
+* where U is an orthognal matrix. The final
+* value of H is upper Hessenberg and triangular in
+* rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and WANTZ is .TRUE., then on exit
+* (final value of Z) = (initial value of Z)*U
+* where U is the orthogonal matrix in (*)
+* (regardless of the value of WANTT.)
+*
+* Further Details
+* ===============
+*
+* 02-96 Based on modifications by
+* David Day, Sandia National Laboratory, USA
+*
+* 12-04 Further modifications by
+* Ralph Byers, University of Kansas, USA
+*
+* This is a modified version of ZLAHQR from LAPACK version 3.0.
+* It is (1) more robust against overflow and underflow and
+* (2) adopts the more conservative Ahues & Tisseur stopping
+* criterion (LAWN 122, 1997).
+*
+* =========================================================
+*
+* .. Parameters ..
+ INTEGER ITMAX
+ PARAMETER ( ITMAX = 30 )
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION RZERO, RONE, HALF
+ PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0, HALF = 0.5d0 )
+ DOUBLE PRECISION DAT1
+ PARAMETER ( DAT1 = 3.0d0 / 4.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 CDUM, H11, H11S, H22, SC, SUM, T, T1, TEMP, U,
+ $ V2, X, Y
+ DOUBLE PRECISION AA, AB, BA, BB, H10, H21, RTEMP, S, SAFMAX,
+ $ SAFMIN, SMLNUM, SX, T2, TST, ULP
+ INTEGER I, I1, I2, ITS, J, JHI, JLO, K, L, M, NH, NZ
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 V( 2 )
+* ..
+* .. External Functions ..
+ COMPLEX*16 ZLADIV
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL ZLADIV, DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, ZCOPY, ZLARFG, ZSCAL
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCONJG, DIMAG, MAX, MIN, SQRT
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+ IF( ILO.EQ.IHI ) THEN
+ W( ILO ) = H( ILO, ILO )
+ RETURN
+ END IF
+*
+* ==== clear out the trash ====
+ DO 10 J = ILO, IHI - 3
+ H( J+2, J ) = ZERO
+ H( J+3, J ) = ZERO
+ 10 CONTINUE
+ IF( ILO.LE.IHI-2 )
+ $ H( IHI, IHI-2 ) = ZERO
+* ==== ensure that subdiagonal entries are real ====
+ DO 20 I = ILO + 1, IHI
+ IF( DIMAG( H( I, I-1 ) ).NE.RZERO ) THEN
+* ==== The following redundant normalization
+* . avoids problems with both gradual and
+* . sudden underflow in ABS(H(I,I-1)) ====
+ SC = H( I, I-1 ) / CABS1( H( I, I-1 ) )
+ SC = DCONJG( SC ) / ABS( SC )
+ H( I, I-1 ) = ABS( H( I, I-1 ) )
+ IF( WANTT ) THEN
+ JLO = 1
+ JHI = N
+ ELSE
+ JLO = ILO
+ JHI = IHI
+ END IF
+ CALL ZSCAL( JHI-I+1, SC, H( I, I ), LDH )
+ CALL ZSCAL( MIN( JHI, I+1 )-JLO+1, DCONJG( SC ),
+ $ H( JLO, I ), 1 )
+ IF( WANTZ )
+ $ CALL ZSCAL( IHIZ-ILOZ+1, DCONJG( SC ), Z( ILOZ, I ), 1 )
+ END IF
+ 20 CONTINUE
+*
+ NH = IHI - ILO + 1
+ NZ = IHIZ - ILOZ + 1
+*
+* Set machine-dependent constants for the stopping criterion.
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = RONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( NH ) / ULP )
+*
+* I1 and I2 are the indices of the first row and last column of H
+* to which transformations must be applied. If eigenvalues only are
+* being computed, I1 and I2 are set inside the main loop.
+*
+ IF( WANTT ) THEN
+ I1 = 1
+ I2 = N
+ END IF
+*
+* The main loop begins here. I is the loop index and decreases from
+* IHI to ILO in steps of 1. Each iteration of the loop works
+* with the active submatrix in rows and columns L to I.
+* Eigenvalues I+1 to IHI have already converged. Either L = ILO, or
+* H(L,L-1) is negligible so that the matrix splits.
+*
+ I = IHI
+ 30 CONTINUE
+ IF( I.LT.ILO )
+ $ GO TO 150
+*
+* Perform QR iterations on rows and columns ILO to I until a
+* submatrix of order 1 splits off at the bottom because a
+* subdiagonal element has become negligible.
+*
+ L = ILO
+ DO 130 ITS = 0, ITMAX
+*
+* Look for a single small subdiagonal element.
+*
+ DO 40 K = I, L + 1, -1
+ IF( CABS1( H( K, K-1 ) ).LE.SMLNUM )
+ $ GO TO 50
+ TST = CABS1( H( K-1, K-1 ) ) + CABS1( H( K, K ) )
+ IF( TST.EQ.ZERO ) THEN
+ IF( K-2.GE.ILO )
+ $ TST = TST + ABS( DBLE( H( K-1, K-2 ) ) )
+ IF( K+1.LE.IHI )
+ $ TST = TST + ABS( DBLE( H( K+1, K ) ) )
+ END IF
+* ==== The following is a conservative small subdiagonal
+* . deflation criterion due to Ahues & Tisseur (LAWN 122,
+* . 1997). It has better mathematical foundation and
+* . improves accuracy in some examples. ====
+ IF( ABS( DBLE( H( K, K-1 ) ) ).LE.ULP*TST ) THEN
+ AB = MAX( CABS1( H( K, K-1 ) ), CABS1( H( K-1, K ) ) )
+ BA = MIN( CABS1( H( K, K-1 ) ), CABS1( H( K-1, K ) ) )
+ AA = MAX( CABS1( H( K, K ) ),
+ $ CABS1( H( K-1, K-1 )-H( K, K ) ) )
+ BB = MIN( CABS1( H( K, K ) ),
+ $ CABS1( H( K-1, K-1 )-H( K, K ) ) )
+ S = AA + AB
+ IF( BA*( AB / S ).LE.MAX( SMLNUM,
+ $ ULP*( BB*( AA / S ) ) ) )GO TO 50
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ L = K
+ IF( L.GT.ILO ) THEN
+*
+* H(L,L-1) is negligible
+*
+ H( L, L-1 ) = ZERO
+ END IF
+*
+* Exit from loop if a submatrix of order 1 has split off.
+*
+ IF( L.GE.I )
+ $ GO TO 140
+*
+* Now the active submatrix is in rows and columns L to I. If
+* eigenvalues only are being computed, only the active submatrix
+* need be transformed.
+*
+ IF( .NOT.WANTT ) THEN
+ I1 = L
+ I2 = I
+ END IF
+*
+ IF( ITS.EQ.10 .OR. ITS.EQ.20 ) THEN
+*
+* Exceptional shift.
+*
+ S = DAT1*ABS( DBLE( H( I, I-1 ) ) )
+ T = S + H( I, I )
+ ELSE
+*
+* Wilkinson's shift.
+*
+ T = H( I, I )
+ U = SQRT( H( I-1, I ) )*SQRT( H( I, I-1 ) )
+ S = CABS1( U )
+ IF( S.NE.RZERO ) THEN
+ X = HALF*( H( I-1, I-1 )-T )
+ SX = CABS1( X )
+ S = MAX( S, CABS1( X ) )
+ Y = S*SQRT( ( X / S )**2+( U / S )**2 )
+ IF( SX.GT.RZERO ) THEN
+ IF( DBLE( X / SX )*DBLE( Y )+DIMAG( X / SX )*
+ $ DIMAG( Y ).LT.RZERO )Y = -Y
+ END IF
+ T = T - U*ZLADIV( U, ( X+Y ) )
+ END IF
+ END IF
+*
+* Look for two consecutive small subdiagonal elements.
+*
+ DO 60 M = I - 1, L + 1, -1
+*
+* Determine the effect of starting the single-shift QR
+* iteration at row M, and see if this would make H(M,M-1)
+* negligible.
+*
+ H11 = H( M, M )
+ H22 = H( M+1, M+1 )
+ H11S = H11 - T
+ H21 = H( M+1, M )
+ S = CABS1( H11S ) + ABS( H21 )
+ H11S = H11S / S
+ H21 = H21 / S
+ V( 1 ) = H11S
+ V( 2 ) = H21
+ H10 = H( M, M-1 )
+ IF( ABS( H10 )*ABS( H21 ).LE.ULP*
+ $ ( CABS1( H11S )*( CABS1( H11 )+CABS1( H22 ) ) ) )
+ $ GO TO 70
+ 60 CONTINUE
+ H11 = H( L, L )
+ H22 = H( L+1, L+1 )
+ H11S = H11 - T
+ H21 = H( L+1, L )
+ S = CABS1( H11S ) + ABS( H21 )
+ H11S = H11S / S
+ H21 = H21 / S
+ V( 1 ) = H11S
+ V( 2 ) = H21
+ 70 CONTINUE
+*
+* Single-shift QR step
+*
+ DO 120 K = M, I - 1
+*
+* The first iteration of this loop determines a reflection G
+* from the vector V and applies it from left and right to H,
+* thus creating a nonzero bulge below the subdiagonal.
+*
+* Each subsequent iteration determines a reflection G to
+* restore the Hessenberg form in the (K-1)th column, and thus
+* chases the bulge one step toward the bottom of the active
+* submatrix.
+*
+* V(2) is always real before the call to ZLARFG, and hence
+* after the call T2 ( = T1*V(2) ) is also real.
+*
+ IF( K.GT.M )
+ $ CALL ZCOPY( 2, H( K, K-1 ), 1, V, 1 )
+ CALL ZLARFG( 2, V( 1 ), V( 2 ), 1, T1 )
+ IF( K.GT.M ) THEN
+ H( K, K-1 ) = V( 1 )
+ H( K+1, K-1 ) = ZERO
+ END IF
+ V2 = V( 2 )
+ T2 = DBLE( T1*V2 )
+*
+* Apply G from the left to transform the rows of the matrix
+* in columns K to I2.
+*
+ DO 80 J = K, I2
+ SUM = DCONJG( T1 )*H( K, J ) + T2*H( K+1, J )
+ H( K, J ) = H( K, J ) - SUM
+ H( K+1, J ) = H( K+1, J ) - SUM*V2
+ 80 CONTINUE
+*
+* Apply G from the right to transform the columns of the
+* matrix in rows I1 to min(K+2,I).
+*
+ DO 90 J = I1, MIN( K+2, I )
+ SUM = T1*H( J, K ) + T2*H( J, K+1 )
+ H( J, K ) = H( J, K ) - SUM
+ H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 )
+ 90 CONTINUE
+*
+ IF( WANTZ ) THEN
+*
+* Accumulate transformations in the matrix Z
+*
+ DO 100 J = ILOZ, IHIZ
+ SUM = T1*Z( J, K ) + T2*Z( J, K+1 )
+ Z( J, K ) = Z( J, K ) - SUM
+ Z( J, K+1 ) = Z( J, K+1 ) - SUM*DCONJG( V2 )
+ 100 CONTINUE
+ END IF
+*
+ IF( K.EQ.M .AND. M.GT.L ) THEN
+*
+* If the QR step was started at row M > L because two
+* consecutive small subdiagonals were found, then extra
+* scaling must be performed to ensure that H(M,M-1) remains
+* real.
+*
+ TEMP = ONE - T1
+ TEMP = TEMP / ABS( TEMP )
+ H( M+1, M ) = H( M+1, M )*DCONJG( TEMP )
+ IF( M+2.LE.I )
+ $ H( M+2, M+1 ) = H( M+2, M+1 )*TEMP
+ DO 110 J = M, I
+ IF( J.NE.M+1 ) THEN
+ IF( I2.GT.J )
+ $ CALL ZSCAL( I2-J, TEMP, H( J, J+1 ), LDH )
+ CALL ZSCAL( J-I1, DCONJG( TEMP ), H( I1, J ), 1 )
+ IF( WANTZ ) THEN
+ CALL ZSCAL( NZ, DCONJG( TEMP ), Z( ILOZ, J ),
+ $ 1 )
+ END IF
+ END IF
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+*
+* Ensure that H(I,I-1) is real.
+*
+ TEMP = H( I, I-1 )
+ IF( DIMAG( TEMP ).NE.RZERO ) THEN
+ RTEMP = ABS( TEMP )
+ H( I, I-1 ) = RTEMP
+ TEMP = TEMP / RTEMP
+ IF( I2.GT.I )
+ $ CALL ZSCAL( I2-I, DCONJG( TEMP ), H( I, I+1 ), LDH )
+ CALL ZSCAL( I-I1, TEMP, H( I1, I ), 1 )
+ IF( WANTZ ) THEN
+ CALL ZSCAL( NZ, TEMP, Z( ILOZ, I ), 1 )
+ END IF
+ END IF
+*
+ 130 CONTINUE
+*
+* Failure to converge in remaining number of iterations
+*
+ INFO = I
+ RETURN
+*
+ 140 CONTINUE
+*
+* H(I,I-1) is negligible: one eigenvalue has converged.
+*
+ W( I ) = H( I, I )
+*
+* return to start of the main loop with new value of I.
+*
+ I = L - 1
+ GO TO 30
+*
+ 150 CONTINUE
+ RETURN
+*
+* End of ZLAHQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlahr2.f b/2.3-1/src/fortran/lapack/zlahr2.f
new file mode 100644
index 00000000..f3cb5515
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlahr2.f
@@ -0,0 +1,240 @@
+ SUBROUTINE ZLAHR2( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER K, LDA, LDT, LDY, N, NB
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), T( LDT, NB ), TAU( NB ),
+ $ Y( LDY, NB )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAHR2 reduces the first NB columns of A complex general n-BY-(n-k+1)
+* matrix A so that elements below the k-th subdiagonal are zero. The
+* reduction is performed by an unitary similarity transformation
+* Q' * A * Q. The routine returns the matrices V and T which determine
+* Q as a block reflector I - V*T*V', and also the matrix Y = A * V * T.
+*
+* This is an auxiliary routine called by ZGEHRD.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* K (input) INTEGER
+* The offset for the reduction. Elements below the k-th
+* subdiagonal in the first NB columns are reduced to zero.
+* K < N.
+*
+* NB (input) INTEGER
+* The number of columns to be reduced.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N-K+1)
+* On entry, the n-by-(n-k+1) general matrix A.
+* On exit, the elements on and above the k-th subdiagonal in
+* the first NB columns are overwritten with the corresponding
+* elements of the reduced matrix; the elements below the k-th
+* subdiagonal, with the array TAU, represent the matrix Q as a
+* product of elementary reflectors. The other columns of A are
+* unchanged. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) COMPLEX*16 array, dimension (NB)
+* The scalar factors of the elementary reflectors. See Further
+* Details.
+*
+* T (output) COMPLEX*16 array, dimension (LDT,NB)
+* The upper triangular matrix T.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= NB.
+*
+* Y (output) COMPLEX*16 array, dimension (LDY,NB)
+* The n-by-nb matrix Y.
+*
+* LDY (input) INTEGER
+* The leading dimension of the array Y. LDY >= N.
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of nb elementary reflectors
+*
+* Q = H(1) H(2) . . . H(nb).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in
+* A(i+k+1:n,i), and tau in TAU(i).
+*
+* The elements of the vectors v together form the (n-k+1)-by-nb matrix
+* V which is needed, with T and Y, to apply the transformation to the
+* unreduced part of the matrix, using an update of the form:
+* A := (I - V*T*V') * (A - Y*V').
+*
+* The contents of A on exit are illustrated by the following example
+* with n = 7, k = 3 and nb = 2:
+*
+* ( a a a a a )
+* ( a a a a a )
+* ( a a a a a )
+* ( h h a a a )
+* ( v1 h a a a )
+* ( v1 v2 a a a )
+* ( v1 v2 a a a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* This file is a slight modification of LAPACK-3.0's ZLAHRD
+* incorporating improvements proposed by Quintana-Orti and Van de
+* Gejin. Note that the entries of A(1:K,2:NB) differ from those
+* returned by the original LAPACK routine. This function is
+* not backward compatible with LAPACK3.0.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ COMPLEX*16 EI
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZAXPY, ZCOPY, ZGEMM, ZGEMV, ZLACPY,
+ $ ZLARFG, ZSCAL, ZTRMM, ZTRMV, ZLACGV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ DO 10 I = 1, NB
+ IF( I.GT.1 ) THEN
+*
+* Update A(K+1:N,I)
+*
+* Update I-th column of A - Y * V'
+*
+ CALL ZLACGV( I-1, A( K+I-1, 1 ), LDA )
+ CALL ZGEMV( 'NO TRANSPOSE', N-K, I-1, -ONE, Y(K+1,1), LDY,
+ $ A( K+I-1, 1 ), LDA, ONE, A( K+1, I ), 1 )
+ CALL ZLACGV( I-1, A( K+I-1, 1 ), LDA )
+*
+* Apply I - V * T' * V' to this column (call it b) from the
+* left, using the last column of T as workspace
+*
+* Let V = ( V1 ) and b = ( b1 ) (first I-1 rows)
+* ( V2 ) ( b2 )
+*
+* where V1 is unit lower triangular
+*
+* w := V1' * b1
+*
+ CALL ZCOPY( I-1, A( K+1, I ), 1, T( 1, NB ), 1 )
+ CALL ZTRMV( 'Lower', 'Conjugate transpose', 'UNIT',
+ $ I-1, A( K+1, 1 ),
+ $ LDA, T( 1, NB ), 1 )
+*
+* w := w + V2'*b2
+*
+ CALL ZGEMV( 'Conjugate transpose', N-K-I+1, I-1,
+ $ ONE, A( K+I, 1 ),
+ $ LDA, A( K+I, I ), 1, ONE, T( 1, NB ), 1 )
+*
+* w := T'*w
+*
+ CALL ZTRMV( 'Upper', 'Conjugate transpose', 'NON-UNIT',
+ $ I-1, T, LDT,
+ $ T( 1, NB ), 1 )
+*
+* b2 := b2 - V2*w
+*
+ CALL ZGEMV( 'NO TRANSPOSE', N-K-I+1, I-1, -ONE,
+ $ A( K+I, 1 ),
+ $ LDA, T( 1, NB ), 1, ONE, A( K+I, I ), 1 )
+*
+* b1 := b1 - V1*w
+*
+ CALL ZTRMV( 'Lower', 'NO TRANSPOSE',
+ $ 'UNIT', I-1,
+ $ A( K+1, 1 ), LDA, T( 1, NB ), 1 )
+ CALL ZAXPY( I-1, -ONE, T( 1, NB ), 1, A( K+1, I ), 1 )
+*
+ A( K+I-1, I-1 ) = EI
+ END IF
+*
+* Generate the elementary reflector H(I) to annihilate
+* A(K+I+1:N,I)
+*
+ CALL ZLARFG( N-K-I+1, A( K+I, I ), A( MIN( K+I+1, N ), I ), 1,
+ $ TAU( I ) )
+ EI = A( K+I, I )
+ A( K+I, I ) = ONE
+*
+* Compute Y(K+1:N,I)
+*
+ CALL ZGEMV( 'NO TRANSPOSE', N-K, N-K-I+1,
+ $ ONE, A( K+1, I+1 ),
+ $ LDA, A( K+I, I ), 1, ZERO, Y( K+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', N-K-I+1, I-1,
+ $ ONE, A( K+I, 1 ), LDA,
+ $ A( K+I, I ), 1, ZERO, T( 1, I ), 1 )
+ CALL ZGEMV( 'NO TRANSPOSE', N-K, I-1, -ONE,
+ $ Y( K+1, 1 ), LDY,
+ $ T( 1, I ), 1, ONE, Y( K+1, I ), 1 )
+ CALL ZSCAL( N-K, TAU( I ), Y( K+1, I ), 1 )
+*
+* Compute T(1:I,I)
+*
+ CALL ZSCAL( I-1, -TAU( I ), T( 1, I ), 1 )
+ CALL ZTRMV( 'Upper', 'No Transpose', 'NON-UNIT',
+ $ I-1, T, LDT,
+ $ T( 1, I ), 1 )
+ T( I, I ) = TAU( I )
+*
+ 10 CONTINUE
+ A( K+NB, NB ) = EI
+*
+* Compute Y(1:K,1:NB)
+*
+ CALL ZLACPY( 'ALL', K, NB, A( 1, 2 ), LDA, Y, LDY )
+ CALL ZTRMM( 'RIGHT', 'Lower', 'NO TRANSPOSE',
+ $ 'UNIT', K, NB,
+ $ ONE, A( K+1, 1 ), LDA, Y, LDY )
+ IF( N.GT.K+NB )
+ $ CALL ZGEMM( 'NO TRANSPOSE', 'NO TRANSPOSE', K,
+ $ NB, N-K-NB, ONE,
+ $ A( 1, 2+NB ), LDA, A( K+1+NB, 1 ), LDA, ONE, Y,
+ $ LDY )
+ CALL ZTRMM( 'RIGHT', 'Upper', 'NO TRANSPOSE',
+ $ 'NON-UNIT', K, NB,
+ $ ONE, T, LDT, Y, LDY )
+*
+ RETURN
+*
+* End of ZLAHR2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlahrd.f b/2.3-1/src/fortran/lapack/zlahrd.f
new file mode 100644
index 00000000..e7eb9de9
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlahrd.f
@@ -0,0 +1,213 @@
+ SUBROUTINE ZLAHRD( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER K, LDA, LDT, LDY, N, NB
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), T( LDT, NB ), TAU( NB ),
+ $ Y( LDY, NB )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAHRD reduces the first NB columns of a complex general n-by-(n-k+1)
+* matrix A so that elements below the k-th subdiagonal are zero. The
+* reduction is performed by a unitary similarity transformation
+* Q' * A * Q. The routine returns the matrices V and T which determine
+* Q as a block reflector I - V*T*V', and also the matrix Y = A * V * T.
+*
+* This is an OBSOLETE auxiliary routine.
+* This routine will be 'deprecated' in a future release.
+* Please use the new routine ZLAHR2 instead.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* K (input) INTEGER
+* The offset for the reduction. Elements below the k-th
+* subdiagonal in the first NB columns are reduced to zero.
+*
+* NB (input) INTEGER
+* The number of columns to be reduced.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N-K+1)
+* On entry, the n-by-(n-k+1) general matrix A.
+* On exit, the elements on and above the k-th subdiagonal in
+* the first NB columns are overwritten with the corresponding
+* elements of the reduced matrix; the elements below the k-th
+* subdiagonal, with the array TAU, represent the matrix Q as a
+* product of elementary reflectors. The other columns of A are
+* unchanged. See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (output) COMPLEX*16 array, dimension (NB)
+* The scalar factors of the elementary reflectors. See Further
+* Details.
+*
+* T (output) COMPLEX*16 array, dimension (LDT,NB)
+* The upper triangular matrix T.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= NB.
+*
+* Y (output) COMPLEX*16 array, dimension (LDY,NB)
+* The n-by-nb matrix Y.
+*
+* LDY (input) INTEGER
+* The leading dimension of the array Y. LDY >= max(1,N).
+*
+* Further Details
+* ===============
+*
+* The matrix Q is represented as a product of nb elementary reflectors
+*
+* Q = H(1) H(2) . . . H(nb).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in
+* A(i+k+1:n,i), and tau in TAU(i).
+*
+* The elements of the vectors v together form the (n-k+1)-by-nb matrix
+* V which is needed, with T and Y, to apply the transformation to the
+* unreduced part of the matrix, using an update of the form:
+* A := (I - V*T*V') * (A - Y*V').
+*
+* The contents of A on exit are illustrated by the following example
+* with n = 7, k = 3 and nb = 2:
+*
+* ( a h a a a )
+* ( a h a a a )
+* ( a h a a a )
+* ( h h a a a )
+* ( v1 h a a a )
+* ( v1 v2 a a a )
+* ( v1 v2 a a a )
+*
+* where a denotes an element of the original matrix A, h denotes a
+* modified element of the upper Hessenberg matrix H, and vi denotes an
+* element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ COMPLEX*16 EI
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZAXPY, ZCOPY, ZGEMV, ZLACGV, ZLARFG, ZSCAL,
+ $ ZTRMV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ DO 10 I = 1, NB
+ IF( I.GT.1 ) THEN
+*
+* Update A(1:n,i)
+*
+* Compute i-th column of A - Y * V'
+*
+ CALL ZLACGV( I-1, A( K+I-1, 1 ), LDA )
+ CALL ZGEMV( 'No transpose', N, I-1, -ONE, Y, LDY,
+ $ A( K+I-1, 1 ), LDA, ONE, A( 1, I ), 1 )
+ CALL ZLACGV( I-1, A( K+I-1, 1 ), LDA )
+*
+* Apply I - V * T' * V' to this column (call it b) from the
+* left, using the last column of T as workspace
+*
+* Let V = ( V1 ) and b = ( b1 ) (first I-1 rows)
+* ( V2 ) ( b2 )
+*
+* where V1 is unit lower triangular
+*
+* w := V1' * b1
+*
+ CALL ZCOPY( I-1, A( K+1, I ), 1, T( 1, NB ), 1 )
+ CALL ZTRMV( 'Lower', 'Conjugate transpose', 'Unit', I-1,
+ $ A( K+1, 1 ), LDA, T( 1, NB ), 1 )
+*
+* w := w + V2'*b2
+*
+ CALL ZGEMV( 'Conjugate transpose', N-K-I+1, I-1, ONE,
+ $ A( K+I, 1 ), LDA, A( K+I, I ), 1, ONE,
+ $ T( 1, NB ), 1 )
+*
+* w := T'*w
+*
+ CALL ZTRMV( 'Upper', 'Conjugate transpose', 'Non-unit', I-1,
+ $ T, LDT, T( 1, NB ), 1 )
+*
+* b2 := b2 - V2*w
+*
+ CALL ZGEMV( 'No transpose', N-K-I+1, I-1, -ONE, A( K+I, 1 ),
+ $ LDA, T( 1, NB ), 1, ONE, A( K+I, I ), 1 )
+*
+* b1 := b1 - V1*w
+*
+ CALL ZTRMV( 'Lower', 'No transpose', 'Unit', I-1,
+ $ A( K+1, 1 ), LDA, T( 1, NB ), 1 )
+ CALL ZAXPY( I-1, -ONE, T( 1, NB ), 1, A( K+1, I ), 1 )
+*
+ A( K+I-1, I-1 ) = EI
+ END IF
+*
+* Generate the elementary reflector H(i) to annihilate
+* A(k+i+1:n,i)
+*
+ EI = A( K+I, I )
+ CALL ZLARFG( N-K-I+1, EI, A( MIN( K+I+1, N ), I ), 1,
+ $ TAU( I ) )
+ A( K+I, I ) = ONE
+*
+* Compute Y(1:n,i)
+*
+ CALL ZGEMV( 'No transpose', N, N-K-I+1, ONE, A( 1, I+1 ), LDA,
+ $ A( K+I, I ), 1, ZERO, Y( 1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', N-K-I+1, I-1, ONE,
+ $ A( K+I, 1 ), LDA, A( K+I, I ), 1, ZERO, T( 1, I ),
+ $ 1 )
+ CALL ZGEMV( 'No transpose', N, I-1, -ONE, Y, LDY, T( 1, I ), 1,
+ $ ONE, Y( 1, I ), 1 )
+ CALL ZSCAL( N, TAU( I ), Y( 1, I ), 1 )
+*
+* Compute T(1:i,i)
+*
+ CALL ZSCAL( I-1, -TAU( I ), T( 1, I ), 1 )
+ CALL ZTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T, LDT,
+ $ T( 1, I ), 1 )
+ T( I, I ) = TAU( I )
+*
+ 10 CONTINUE
+ A( K+NB, NB ) = EI
+*
+ RETURN
+*
+* End of ZLAHRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaic1.f b/2.3-1/src/fortran/lapack/zlaic1.f
new file mode 100644
index 00000000..589f0889
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaic1.f
@@ -0,0 +1,295 @@
+ SUBROUTINE ZLAIC1( JOB, J, X, SEST, W, GAMMA, SESTPR, S, C )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER J, JOB
+ DOUBLE PRECISION SEST, SESTPR
+ COMPLEX*16 C, GAMMA, S
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 W( J ), X( J )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAIC1 applies one step of incremental condition estimation in
+* its simplest version:
+*
+* Let x, twonorm(x) = 1, be an approximate singular vector of an j-by-j
+* lower triangular matrix L, such that
+* twonorm(L*x) = sest
+* Then ZLAIC1 computes sestpr, s, c such that
+* the vector
+* [ s*x ]
+* xhat = [ c ]
+* is an approximate singular vector of
+* [ L 0 ]
+* Lhat = [ w' gamma ]
+* in the sense that
+* twonorm(Lhat*xhat) = sestpr.
+*
+* Depending on JOB, an estimate for the largest or smallest singular
+* value is computed.
+*
+* Note that [s c]' and sestpr**2 is an eigenpair of the system
+*
+* diag(sest*sest, 0) + [alpha gamma] * [ conjg(alpha) ]
+* [ conjg(gamma) ]
+*
+* where alpha = conjg(x)'*w.
+*
+* Arguments
+* =========
+*
+* JOB (input) INTEGER
+* = 1: an estimate for the largest singular value is computed.
+* = 2: an estimate for the smallest singular value is computed.
+*
+* J (input) INTEGER
+* Length of X and W
+*
+* X (input) COMPLEX*16 array, dimension (J)
+* The j-vector x.
+*
+* SEST (input) DOUBLE PRECISION
+* Estimated singular value of j by j matrix L
+*
+* W (input) COMPLEX*16 array, dimension (J)
+* The j-vector w.
+*
+* GAMMA (input) COMPLEX*16
+* The diagonal element gamma.
+*
+* SESTPR (output) DOUBLE PRECISION
+* Estimated singular value of (j+1) by (j+1) matrix Lhat.
+*
+* S (output) COMPLEX*16
+* Sine needed in forming xhat.
+*
+* C (output) COMPLEX*16
+* Cosine needed in forming xhat.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 )
+ DOUBLE PRECISION HALF, FOUR
+ PARAMETER ( HALF = 0.5D0, FOUR = 4.0D0 )
+* ..
+* .. Local Scalars ..
+ DOUBLE PRECISION ABSALP, ABSEST, ABSGAM, B, EPS, NORMA, S1, S2,
+ $ SCL, T, TEST, TMP, ZETA1, ZETA2
+ COMPLEX*16 ALPHA, COSINE, SINE
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DCONJG, MAX, SQRT
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ COMPLEX*16 ZDOTC
+ EXTERNAL DLAMCH, ZDOTC
+* ..
+* .. Executable Statements ..
+*
+ EPS = DLAMCH( 'Epsilon' )
+ ALPHA = ZDOTC( J, X, 1, W, 1 )
+*
+ ABSALP = ABS( ALPHA )
+ ABSGAM = ABS( GAMMA )
+ ABSEST = ABS( SEST )
+*
+ IF( JOB.EQ.1 ) THEN
+*
+* Estimating largest singular value
+*
+* special cases
+*
+ IF( SEST.EQ.ZERO ) THEN
+ S1 = MAX( ABSGAM, ABSALP )
+ IF( S1.EQ.ZERO ) THEN
+ S = ZERO
+ C = ONE
+ SESTPR = ZERO
+ ELSE
+ S = ALPHA / S1
+ C = GAMMA / S1
+ TMP = SQRT( S*DCONJG( S )+C*DCONJG( C ) )
+ S = S / TMP
+ C = C / TMP
+ SESTPR = S1*TMP
+ END IF
+ RETURN
+ ELSE IF( ABSGAM.LE.EPS*ABSEST ) THEN
+ S = ONE
+ C = ZERO
+ TMP = MAX( ABSEST, ABSALP )
+ S1 = ABSEST / TMP
+ S2 = ABSALP / TMP
+ SESTPR = TMP*SQRT( S1*S1+S2*S2 )
+ RETURN
+ ELSE IF( ABSALP.LE.EPS*ABSEST ) THEN
+ S1 = ABSGAM
+ S2 = ABSEST
+ IF( S1.LE.S2 ) THEN
+ S = ONE
+ C = ZERO
+ SESTPR = S2
+ ELSE
+ S = ZERO
+ C = ONE
+ SESTPR = S1
+ END IF
+ RETURN
+ ELSE IF( ABSEST.LE.EPS*ABSALP .OR. ABSEST.LE.EPS*ABSGAM ) THEN
+ S1 = ABSGAM
+ S2 = ABSALP
+ IF( S1.LE.S2 ) THEN
+ TMP = S1 / S2
+ SCL = SQRT( ONE+TMP*TMP )
+ SESTPR = S2*SCL
+ S = ( ALPHA / S2 ) / SCL
+ C = ( GAMMA / S2 ) / SCL
+ ELSE
+ TMP = S2 / S1
+ SCL = SQRT( ONE+TMP*TMP )
+ SESTPR = S1*SCL
+ S = ( ALPHA / S1 ) / SCL
+ C = ( GAMMA / S1 ) / SCL
+ END IF
+ RETURN
+ ELSE
+*
+* normal case
+*
+ ZETA1 = ABSALP / ABSEST
+ ZETA2 = ABSGAM / ABSEST
+*
+ B = ( ONE-ZETA1*ZETA1-ZETA2*ZETA2 )*HALF
+ C = ZETA1*ZETA1
+ IF( B.GT.ZERO ) THEN
+ T = C / ( B+SQRT( B*B+C ) )
+ ELSE
+ T = SQRT( B*B+C ) - B
+ END IF
+*
+ SINE = -( ALPHA / ABSEST ) / T
+ COSINE = -( GAMMA / ABSEST ) / ( ONE+T )
+ TMP = SQRT( SINE*DCONJG( SINE )+COSINE*DCONJG( COSINE ) )
+ S = SINE / TMP
+ C = COSINE / TMP
+ SESTPR = SQRT( T+ONE )*ABSEST
+ RETURN
+ END IF
+*
+ ELSE IF( JOB.EQ.2 ) THEN
+*
+* Estimating smallest singular value
+*
+* special cases
+*
+ IF( SEST.EQ.ZERO ) THEN
+ SESTPR = ZERO
+ IF( MAX( ABSGAM, ABSALP ).EQ.ZERO ) THEN
+ SINE = ONE
+ COSINE = ZERO
+ ELSE
+ SINE = -DCONJG( GAMMA )
+ COSINE = DCONJG( ALPHA )
+ END IF
+ S1 = MAX( ABS( SINE ), ABS( COSINE ) )
+ S = SINE / S1
+ C = COSINE / S1
+ TMP = SQRT( S*DCONJG( S )+C*DCONJG( C ) )
+ S = S / TMP
+ C = C / TMP
+ RETURN
+ ELSE IF( ABSGAM.LE.EPS*ABSEST ) THEN
+ S = ZERO
+ C = ONE
+ SESTPR = ABSGAM
+ RETURN
+ ELSE IF( ABSALP.LE.EPS*ABSEST ) THEN
+ S1 = ABSGAM
+ S2 = ABSEST
+ IF( S1.LE.S2 ) THEN
+ S = ZERO
+ C = ONE
+ SESTPR = S1
+ ELSE
+ S = ONE
+ C = ZERO
+ SESTPR = S2
+ END IF
+ RETURN
+ ELSE IF( ABSEST.LE.EPS*ABSALP .OR. ABSEST.LE.EPS*ABSGAM ) THEN
+ S1 = ABSGAM
+ S2 = ABSALP
+ IF( S1.LE.S2 ) THEN
+ TMP = S1 / S2
+ SCL = SQRT( ONE+TMP*TMP )
+ SESTPR = ABSEST*( TMP / SCL )
+ S = -( DCONJG( GAMMA ) / S2 ) / SCL
+ C = ( DCONJG( ALPHA ) / S2 ) / SCL
+ ELSE
+ TMP = S2 / S1
+ SCL = SQRT( ONE+TMP*TMP )
+ SESTPR = ABSEST / SCL
+ S = -( DCONJG( GAMMA ) / S1 ) / SCL
+ C = ( DCONJG( ALPHA ) / S1 ) / SCL
+ END IF
+ RETURN
+ ELSE
+*
+* normal case
+*
+ ZETA1 = ABSALP / ABSEST
+ ZETA2 = ABSGAM / ABSEST
+*
+ NORMA = MAX( ONE+ZETA1*ZETA1+ZETA1*ZETA2,
+ $ ZETA1*ZETA2+ZETA2*ZETA2 )
+*
+* See if root is closer to zero or to ONE
+*
+ TEST = ONE + TWO*( ZETA1-ZETA2 )*( ZETA1+ZETA2 )
+ IF( TEST.GE.ZERO ) THEN
+*
+* root is close to zero, compute directly
+*
+ B = ( ZETA1*ZETA1+ZETA2*ZETA2+ONE )*HALF
+ C = ZETA2*ZETA2
+ T = C / ( B+SQRT( ABS( B*B-C ) ) )
+ SINE = ( ALPHA / ABSEST ) / ( ONE-T )
+ COSINE = -( GAMMA / ABSEST ) / T
+ SESTPR = SQRT( T+FOUR*EPS*EPS*NORMA )*ABSEST
+ ELSE
+*
+* root is closer to ONE, shift by that amount
+*
+ B = ( ZETA2*ZETA2+ZETA1*ZETA1-ONE )*HALF
+ C = ZETA1*ZETA1
+ IF( B.GE.ZERO ) THEN
+ T = -C / ( B+SQRT( B*B+C ) )
+ ELSE
+ T = B - SQRT( B*B+C )
+ END IF
+ SINE = -( ALPHA / ABSEST ) / T
+ COSINE = -( GAMMA / ABSEST ) / ( ONE+T )
+ SESTPR = SQRT( ONE+T+FOUR*EPS*EPS*NORMA )*ABSEST
+ END IF
+ TMP = SQRT( SINE*DCONJG( SINE )+COSINE*DCONJG( COSINE ) )
+ S = SINE / TMP
+ C = COSINE / TMP
+ RETURN
+*
+ END IF
+ END IF
+ RETURN
+*
+* End of ZLAIC1
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlange.f b/2.3-1/src/fortran/lapack/zlange.f
new file mode 100644
index 00000000..36cecbdc
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlange.f
@@ -0,0 +1,145 @@
+ DOUBLE PRECISION FUNCTION ZLANGE( NORM, M, N, A, LDA, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION WORK( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLANGE returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* complex matrix A.
+*
+* Description
+* ===========
+*
+* ZLANGE returns the value
+*
+* ZLANGE = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in ZLANGE as described
+* above.
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0. When M = 0,
+* ZLANGE is set to zero.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0. When N = 0,
+* ZLANGE is set to zero.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The m by n matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(M,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= M when NORM = 'I'; otherwise, WORK is not
+* referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION SCALE, SUM, VALUE
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLASSQ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( MIN( M, N ).EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ DO 20 J = 1, N
+ DO 10 I = 1, M
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
+*
+* Find norm1(A).
+*
+ VALUE = ZERO
+ DO 40 J = 1, N
+ SUM = ZERO
+ DO 30 I = 1, M
+ SUM = SUM + ABS( A( I, J ) )
+ 30 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 40 CONTINUE
+ ELSE IF( LSAME( NORM, 'I' ) ) THEN
+*
+* Find normI(A).
+*
+ DO 50 I = 1, M
+ WORK( I ) = ZERO
+ 50 CONTINUE
+ DO 70 J = 1, N
+ DO 60 I = 1, M
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 60 CONTINUE
+ 70 CONTINUE
+ VALUE = ZERO
+ DO 80 I = 1, M
+ VALUE = MAX( VALUE, WORK( I ) )
+ 80 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ DO 90 J = 1, N
+ CALL ZLASSQ( M, A( 1, J ), 1, SCALE, SUM )
+ 90 CONTINUE
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ ZLANGE = VALUE
+ RETURN
+*
+* End of ZLANGE
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlanhe.f b/2.3-1/src/fortran/lapack/zlanhe.f
new file mode 100644
index 00000000..86e57fcd
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlanhe.f
@@ -0,0 +1,187 @@
+ DOUBLE PRECISION FUNCTION ZLANHE( NORM, UPLO, N, A, LDA, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM, UPLO
+ INTEGER LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION WORK( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLANHE returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* complex hermitian matrix A.
+*
+* Description
+* ===========
+*
+* ZLANHE returns the value
+*
+* ZLANHE = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in ZLANHE as described
+* above.
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* hermitian matrix A is to be referenced.
+* = 'U': Upper triangular part of A is referenced
+* = 'L': Lower triangular part of A is referenced
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0. When N = 0, ZLANHE is
+* set to zero.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The hermitian matrix A. If UPLO = 'U', the leading n by n
+* upper triangular part of A contains the upper triangular part
+* of the matrix A, and the strictly lower triangular part of A
+* is not referenced. If UPLO = 'L', the leading n by n lower
+* triangular part of A contains the lower triangular part of
+* the matrix A, and the strictly upper triangular part of A is
+* not referenced. Note that the imaginary parts of the diagonal
+* elements need not be set and are assumed to be zero.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(N,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise,
+* WORK is not referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION ABSA, SCALE, SUM, VALUE
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLASSQ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( N.EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 20 J = 1, N
+ DO 10 I = 1, J - 1
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ VALUE = MAX( VALUE, ABS( DBLE( A( J, J ) ) ) )
+ 20 CONTINUE
+ ELSE
+ DO 40 J = 1, N
+ VALUE = MAX( VALUE, ABS( DBLE( A( J, J ) ) ) )
+ DO 30 I = J + 1, N
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 30 CONTINUE
+ 40 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR.
+ $ ( NORM.EQ.'1' ) ) THEN
+*
+* Find normI(A) ( = norm1(A), since A is hermitian).
+*
+ VALUE = ZERO
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 60 J = 1, N
+ SUM = ZERO
+ DO 50 I = 1, J - 1
+ ABSA = ABS( A( I, J ) )
+ SUM = SUM + ABSA
+ WORK( I ) = WORK( I ) + ABSA
+ 50 CONTINUE
+ WORK( J ) = SUM + ABS( DBLE( A( J, J ) ) )
+ 60 CONTINUE
+ DO 70 I = 1, N
+ VALUE = MAX( VALUE, WORK( I ) )
+ 70 CONTINUE
+ ELSE
+ DO 80 I = 1, N
+ WORK( I ) = ZERO
+ 80 CONTINUE
+ DO 100 J = 1, N
+ SUM = WORK( J ) + ABS( DBLE( A( J, J ) ) )
+ DO 90 I = J + 1, N
+ ABSA = ABS( A( I, J ) )
+ SUM = SUM + ABSA
+ WORK( I ) = WORK( I ) + ABSA
+ 90 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 100 CONTINUE
+ END IF
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ IF( LSAME( UPLO, 'U' ) ) THEN
+ DO 110 J = 2, N
+ CALL ZLASSQ( J-1, A( 1, J ), 1, SCALE, SUM )
+ 110 CONTINUE
+ ELSE
+ DO 120 J = 1, N - 1
+ CALL ZLASSQ( N-J, A( J+1, J ), 1, SCALE, SUM )
+ 120 CONTINUE
+ END IF
+ SUM = 2*SUM
+ DO 130 I = 1, N
+ IF( DBLE( A( I, I ) ).NE.ZERO ) THEN
+ ABSA = ABS( DBLE( A( I, I ) ) )
+ IF( SCALE.LT.ABSA ) THEN
+ SUM = ONE + SUM*( SCALE / ABSA )**2
+ SCALE = ABSA
+ ELSE
+ SUM = SUM + ( ABSA / SCALE )**2
+ END IF
+ END IF
+ 130 CONTINUE
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ ZLANHE = VALUE
+ RETURN
+*
+* End of ZLANHE
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlanhs.f b/2.3-1/src/fortran/lapack/zlanhs.f
new file mode 100644
index 00000000..d7b187a5
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlanhs.f
@@ -0,0 +1,142 @@
+ DOUBLE PRECISION FUNCTION ZLANHS( NORM, N, A, LDA, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER NORM
+ INTEGER LDA, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION WORK( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLANHS returns the value of the one norm, or the Frobenius norm, or
+* the infinity norm, or the element of largest absolute value of a
+* Hessenberg matrix A.
+*
+* Description
+* ===========
+*
+* ZLANHS returns the value
+*
+* ZLANHS = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+* (
+* ( norm1(A), NORM = '1', 'O' or 'o'
+* (
+* ( normI(A), NORM = 'I' or 'i'
+* (
+* ( normF(A), NORM = 'F', 'f', 'E' or 'e'
+*
+* where norm1 denotes the one norm of a matrix (maximum column sum),
+* normI denotes the infinity norm of a matrix (maximum row sum) and
+* normF denotes the Frobenius norm of a matrix (square root of sum of
+* squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
+*
+* Arguments
+* =========
+*
+* NORM (input) CHARACTER*1
+* Specifies the value to be returned in ZLANHS as described
+* above.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0. When N = 0, ZLANHS is
+* set to zero.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The n by n upper Hessenberg matrix A; the part of A below the
+* first sub-diagonal is not referenced.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(N,1).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+* where LWORK >= N when NORM = 'I'; otherwise, WORK is not
+* referenced.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ DOUBLE PRECISION SCALE, SUM, VALUE
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLASSQ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( N.EQ.0 ) THEN
+ VALUE = ZERO
+ ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+* Find max(abs(A(i,j))).
+*
+ VALUE = ZERO
+ DO 20 J = 1, N
+ DO 10 I = 1, MIN( N, J+1 )
+ VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
+*
+* Find norm1(A).
+*
+ VALUE = ZERO
+ DO 40 J = 1, N
+ SUM = ZERO
+ DO 30 I = 1, MIN( N, J+1 )
+ SUM = SUM + ABS( A( I, J ) )
+ 30 CONTINUE
+ VALUE = MAX( VALUE, SUM )
+ 40 CONTINUE
+ ELSE IF( LSAME( NORM, 'I' ) ) THEN
+*
+* Find normI(A).
+*
+ DO 50 I = 1, N
+ WORK( I ) = ZERO
+ 50 CONTINUE
+ DO 70 J = 1, N
+ DO 60 I = 1, MIN( N, J+1 )
+ WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+ 60 CONTINUE
+ 70 CONTINUE
+ VALUE = ZERO
+ DO 80 I = 1, N
+ VALUE = MAX( VALUE, WORK( I ) )
+ 80 CONTINUE
+ ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+* Find normF(A).
+*
+ SCALE = ZERO
+ SUM = ONE
+ DO 90 J = 1, N
+ CALL ZLASSQ( MIN( N, J+1 ), A( 1, J ), 1, SCALE, SUM )
+ 90 CONTINUE
+ VALUE = SCALE*SQRT( SUM )
+ END IF
+*
+ ZLANHS = VALUE
+ RETURN
+*
+* End of ZLANHS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqp2.f b/2.3-1/src/fortran/lapack/zlaqp2.f
new file mode 100644
index 00000000..46f6d95c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqp2.f
@@ -0,0 +1,179 @@
+ SUBROUTINE ZLAQP2( M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2,
+ $ WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER LDA, M, N, OFFSET
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION VN1( * ), VN2( * )
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAQP2 computes a QR factorization with column pivoting of
+* the block A(OFFSET+1:M,1:N).
+* The block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* OFFSET (input) INTEGER
+* The number of rows of the matrix A that must be pivoted
+* but no factorized. OFFSET >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, the upper triangle of block A(OFFSET+1:M,1:N) is
+* the triangular factor obtained; the elements in block
+* A(OFFSET+1:M,1:N) below the diagonal, together with the
+* array TAU, represent the orthogonal matrix Q as a product of
+* elementary reflectors. Block A(1:OFFSET,1:N) has been
+* accordingly pivoted, but no factorized.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of A*P (a leading column); if JPVT(i) = 0,
+* the i-th column of A is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* TAU (output) COMPLEX*16 array, dimension (min(M,N))
+* The scalar factors of the elementary reflectors.
+*
+* VN1 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the partial column norms.
+*
+* VN2 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the exact column norms.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N)
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* X. Sun, Computer Science Dept., Duke University, USA
+*
+* Partial column norm updating strategy modified by
+* Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+* University of Zagreb, Croatia.
+* June 2006.
+* For more details see LAPACK Working Note 176.
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ COMPLEX*16 CONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0,
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ITEMP, J, MN, OFFPI, PVT
+ DOUBLE PRECISION TEMP, TEMP2, TOL3Z
+ COMPLEX*16 AII
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLARF, ZLARFG, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DCONJG, MAX, MIN, SQRT
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DZNRM2
+ EXTERNAL IDAMAX, DLAMCH, DZNRM2
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M-OFFSET, N )
+ TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+* Compute factorization.
+*
+ DO 20 I = 1, MN
+*
+ OFFPI = OFFSET + I
+*
+* Determine ith pivot column and swap if necessary.
+*
+ PVT = ( I-1 ) + IDAMAX( N-I+1, VN1( I ), 1 )
+*
+ IF( PVT.NE.I ) THEN
+ CALL ZSWAP( M, A( 1, PVT ), 1, A( 1, I ), 1 )
+ ITEMP = JPVT( PVT )
+ JPVT( PVT ) = JPVT( I )
+ JPVT( I ) = ITEMP
+ VN1( PVT ) = VN1( I )
+ VN2( PVT ) = VN2( I )
+ END IF
+*
+* Generate elementary reflector H(i).
+*
+ IF( OFFPI.LT.M ) THEN
+ CALL ZLARFG( M-OFFPI+1, A( OFFPI, I ), A( OFFPI+1, I ), 1,
+ $ TAU( I ) )
+ ELSE
+ CALL ZLARFG( 1, A( M, I ), A( M, I ), 1, TAU( I ) )
+ END IF
+*
+ IF( I.LT.N ) THEN
+*
+* Apply H(i)' to A(offset+i:m,i+1:n) from the left.
+*
+ AII = A( OFFPI, I )
+ A( OFFPI, I ) = CONE
+ CALL ZLARF( 'Left', M-OFFPI+1, N-I, A( OFFPI, I ), 1,
+ $ DCONJG( TAU( I ) ), A( OFFPI, I+1 ), LDA,
+ $ WORK( 1 ) )
+ A( OFFPI, I ) = AII
+ END IF
+*
+* Update partial column norms.
+*
+ DO 10 J = I + 1, N
+ IF( VN1( J ).NE.ZERO ) THEN
+*
+* NOTE: The following 4 lines follow from the analysis in
+* Lapack Working Note 176.
+*
+ TEMP = ONE - ( ABS( A( OFFPI, J ) ) / VN1( J ) )**2
+ TEMP = MAX( TEMP, ZERO )
+ TEMP2 = TEMP*( VN1( J ) / VN2( J ) )**2
+ IF( TEMP2 .LE. TOL3Z ) THEN
+ IF( OFFPI.LT.M ) THEN
+ VN1( J ) = DZNRM2( M-OFFPI, A( OFFPI+1, J ), 1 )
+ VN2( J ) = VN1( J )
+ ELSE
+ VN1( J ) = ZERO
+ VN2( J ) = ZERO
+ END IF
+ ELSE
+ VN1( J ) = VN1( J )*SQRT( TEMP )
+ END IF
+ END IF
+ 10 CONTINUE
+*
+ 20 CONTINUE
+*
+ RETURN
+*
+* End of ZLAQP2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqps.f b/2.3-1/src/fortran/lapack/zlaqps.f
new file mode 100644
index 00000000..40414503
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqps.f
@@ -0,0 +1,266 @@
+ SUBROUTINE ZLAQPS( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1,
+ $ VN2, AUXV, F, LDF )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER KB, LDA, LDF, M, N, NB, OFFSET
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION VN1( * ), VN2( * )
+ COMPLEX*16 A( LDA, * ), AUXV( * ), F( LDF, * ), TAU( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAQPS computes a step of QR factorization with column pivoting
+* of a complex M-by-N matrix A by using Blas-3. It tries to factorize
+* NB columns from A starting from the row OFFSET+1, and updates all
+* of the matrix with Blas-3 xGEMM.
+*
+* In some cases, due to catastrophic cancellations, it cannot
+* factorize NB columns. Hence, the actual number of factorized
+* columns is returned in KB.
+*
+* Block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0
+*
+* OFFSET (input) INTEGER
+* The number of rows of A that have been factorized in
+* previous steps.
+*
+* NB (input) INTEGER
+* The number of columns to factorize.
+*
+* KB (output) INTEGER
+* The number of columns actually factorized.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, block A(OFFSET+1:M,1:KB) is the triangular
+* factor obtained and block A(1:OFFSET,1:N) has been
+* accordingly pivoted, but no factorized.
+* The rest of the matrix, block A(OFFSET+1:M,KB+1:N) has
+* been updated.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* JPVT(I) = K <==> Column K of the full matrix A has been
+* permuted into position I in AP.
+*
+* TAU (output) COMPLEX*16 array, dimension (KB)
+* The scalar factors of the elementary reflectors.
+*
+* VN1 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the partial column norms.
+*
+* VN2 (input/output) DOUBLE PRECISION array, dimension (N)
+* The vector with the exact column norms.
+*
+* AUXV (input/output) COMPLEX*16 array, dimension (NB)
+* Auxiliar vector.
+*
+* F (input/output) COMPLEX*16 array, dimension (LDF,NB)
+* Matrix F' = L*Y'*A.
+*
+* LDF (input) INTEGER
+* The leading dimension of the array F. LDF >= max(1,N).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* X. Sun, Computer Science Dept., Duke University, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0,
+ $ CZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER ITEMP, J, K, LASTRK, LSTICC, PVT, RK
+ DOUBLE PRECISION TEMP, TEMP2, TOL3Z
+ COMPLEX*16 AKK
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZGEMM, ZGEMV, ZLARFG, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCONJG, MAX, MIN, NINT, SQRT
+* ..
+* .. External Functions ..
+ INTEGER IDAMAX
+ DOUBLE PRECISION DLAMCH, DZNRM2
+ EXTERNAL IDAMAX, DLAMCH, DZNRM2
+* ..
+* .. Executable Statements ..
+*
+ LASTRK = MIN( M, N+OFFSET )
+ LSTICC = 0
+ K = 0
+ TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+* Beginning of while loop.
+*
+ 10 CONTINUE
+ IF( ( K.LT.NB ) .AND. ( LSTICC.EQ.0 ) ) THEN
+ K = K + 1
+ RK = OFFSET + K
+*
+* Determine ith pivot column and swap if necessary
+*
+ PVT = ( K-1 ) + IDAMAX( N-K+1, VN1( K ), 1 )
+ IF( PVT.NE.K ) THEN
+ CALL ZSWAP( M, A( 1, PVT ), 1, A( 1, K ), 1 )
+ CALL ZSWAP( K-1, F( PVT, 1 ), LDF, F( K, 1 ), LDF )
+ ITEMP = JPVT( PVT )
+ JPVT( PVT ) = JPVT( K )
+ JPVT( K ) = ITEMP
+ VN1( PVT ) = VN1( K )
+ VN2( PVT ) = VN2( K )
+ END IF
+*
+* Apply previous Householder reflectors to column K:
+* A(RK:M,K) := A(RK:M,K) - A(RK:M,1:K-1)*F(K,1:K-1)'.
+*
+ IF( K.GT.1 ) THEN
+ DO 20 J = 1, K - 1
+ F( K, J ) = DCONJG( F( K, J ) )
+ 20 CONTINUE
+ CALL ZGEMV( 'No transpose', M-RK+1, K-1, -CONE, A( RK, 1 ),
+ $ LDA, F( K, 1 ), LDF, CONE, A( RK, K ), 1 )
+ DO 30 J = 1, K - 1
+ F( K, J ) = DCONJG( F( K, J ) )
+ 30 CONTINUE
+ END IF
+*
+* Generate elementary reflector H(k).
+*
+ IF( RK.LT.M ) THEN
+ CALL ZLARFG( M-RK+1, A( RK, K ), A( RK+1, K ), 1, TAU( K ) )
+ ELSE
+ CALL ZLARFG( 1, A( RK, K ), A( RK, K ), 1, TAU( K ) )
+ END IF
+*
+ AKK = A( RK, K )
+ A( RK, K ) = CONE
+*
+* Compute Kth column of F:
+*
+* Compute F(K+1:N,K) := tau(K)*A(RK:M,K+1:N)'*A(RK:M,K).
+*
+ IF( K.LT.N ) THEN
+ CALL ZGEMV( 'Conjugate transpose', M-RK+1, N-K, TAU( K ),
+ $ A( RK, K+1 ), LDA, A( RK, K ), 1, CZERO,
+ $ F( K+1, K ), 1 )
+ END IF
+*
+* Padding F(1:K,K) with zeros.
+*
+ DO 40 J = 1, K
+ F( J, K ) = CZERO
+ 40 CONTINUE
+*
+* Incremental updating of F:
+* F(1:N,K) := F(1:N,K) - tau(K)*F(1:N,1:K-1)*A(RK:M,1:K-1)'
+* *A(RK:M,K).
+*
+ IF( K.GT.1 ) THEN
+ CALL ZGEMV( 'Conjugate transpose', M-RK+1, K-1, -TAU( K ),
+ $ A( RK, 1 ), LDA, A( RK, K ), 1, CZERO,
+ $ AUXV( 1 ), 1 )
+*
+ CALL ZGEMV( 'No transpose', N, K-1, CONE, F( 1, 1 ), LDF,
+ $ AUXV( 1 ), 1, CONE, F( 1, K ), 1 )
+ END IF
+*
+* Update the current row of A:
+* A(RK,K+1:N) := A(RK,K+1:N) - A(RK,1:K)*F(K+1:N,1:K)'.
+*
+ IF( K.LT.N ) THEN
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', 1, N-K,
+ $ K, -CONE, A( RK, 1 ), LDA, F( K+1, 1 ), LDF,
+ $ CONE, A( RK, K+1 ), LDA )
+ END IF
+*
+* Update partial column norms.
+*
+ IF( RK.LT.LASTRK ) THEN
+ DO 50 J = K + 1, N
+ IF( VN1( J ).NE.ZERO ) THEN
+*
+* NOTE: The following 4 lines follow from the analysis in
+* Lapack Working Note 176.
+*
+ TEMP = ABS( A( RK, J ) ) / VN1( J )
+ TEMP = MAX( ZERO, ( ONE+TEMP )*( ONE-TEMP ) )
+ TEMP2 = TEMP*( VN1( J ) / VN2( J ) )**2
+ IF( TEMP2 .LE. TOL3Z ) THEN
+ VN2( J ) = DBLE( LSTICC )
+ LSTICC = J
+ ELSE
+ VN1( J ) = VN1( J )*SQRT( TEMP )
+ END IF
+ END IF
+ 50 CONTINUE
+ END IF
+*
+ A( RK, K ) = AKK
+*
+* End of while loop.
+*
+ GO TO 10
+ END IF
+ KB = K
+ RK = OFFSET + KB
+*
+* Apply the block reflector to the rest of the matrix:
+* A(OFFSET+KB+1:M,KB+1:N) := A(OFFSET+KB+1:M,KB+1:N) -
+* A(OFFSET+KB+1:M,1:KB)*F(KB+1:N,1:KB)'.
+*
+ IF( KB.LT.MIN( N, M-OFFSET ) ) THEN
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', M-RK, N-KB,
+ $ KB, -CONE, A( RK+1, 1 ), LDA, F( KB+1, 1 ), LDF,
+ $ CONE, A( RK+1, KB+1 ), LDA )
+ END IF
+*
+* Recomputation of difficult columns.
+*
+ 60 CONTINUE
+ IF( LSTICC.GT.0 ) THEN
+ ITEMP = NINT( VN2( LSTICC ) )
+ VN1( LSTICC ) = DZNRM2( M-RK, A( RK+1, LSTICC ), 1 )
+*
+* NOTE: The computation of VN1( LSTICC ) relies on the fact that
+* SNRM2 does not fail on vectors with norm below the value of
+* SQRT(DLAMCH('S'))
+*
+ VN2( LSTICC ) = VN1( LSTICC )
+ LSTICC = ITEMP
+ GO TO 60
+ END IF
+*
+ RETURN
+*
+* End of ZLAQPS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqr0.f b/2.3-1/src/fortran/lapack/zlaqr0.f
new file mode 100644
index 00000000..2a35a725
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqr0.f
@@ -0,0 +1,601 @@
+ SUBROUTINE ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
+ $ IHIZ, Z, LDZ, WORK, LWORK, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAQR0 computes the eigenvalues of a Hessenberg matrix H
+* and, optionally, the matrices T and Z from the Schur decomposition
+* H = Z T Z**H, where T is an upper triangular matrix (the
+* Schur form), and Z is the unitary matrix of Schur vectors.
+*
+* Optionally Z may be postmultiplied into an input unitary
+* matrix Q so that this routine can give the Schur factorization
+* of a matrix A which has been reduced to the Hessenberg form H
+* by the unitary matrix Q: A = Q*H*Q**H = (QZ)*H*(QZ)**H.
+*
+* Arguments
+* =========
+*
+* WANTT (input) LOGICAL
+* = .TRUE. : the full Schur form T is required;
+* = .FALSE.: only eigenvalues are required.
+*
+* WANTZ (input) LOGICAL
+* = .TRUE. : the matrix of Schur vectors Z is required;
+* = .FALSE.: Schur vectors are not required.
+*
+* N (input) INTEGER
+* The order of the matrix H. N .GE. 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,
+* H(ILO,ILO-1) is zero. ILO and IHI are normally set by a
+* previous call to ZGEBAL, and then passed to ZGEHRD when the
+* matrix output by ZGEBAL is reduced to Hessenberg form.
+* Otherwise, ILO and IHI should be set to 1 and N,
+* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
+* If N = 0, then ILO = 1 and IHI = 0.
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO = 0 and WANTT is .TRUE., then H
+* contains the upper triangular matrix T from the Schur
+* decomposition (the Schur form). If INFO = 0 and WANT is
+* .FALSE., then the contents of H are unspecified on exit.
+* (The output value of H when INFO.GT.0 is given under the
+* description of INFO below.)
+*
+* This subroutine may explicitly set H(i,j) = 0 for i.GT.j and
+* j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH .GE. max(1,N).
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* The computed eigenvalues of H(ILO:IHI,ILO:IHI) are stored
+* in W(ILO:IHI). If WANTT is .TRUE., then the eigenvalues are
+* stored in the same order as on the diagonal of the Schur
+* form returned in H, with W(i) = H(i,i).
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,IHI)
+* If WANTZ is .FALSE., then Z is not referenced.
+* If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is
+* replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the
+* orthogonal Schur factor of H(ILO:IHI,ILO:IHI).
+* (The output value of Z when INFO.GT.0 is given under
+* the description of INFO below.)
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. if WANTZ is .TRUE.
+* then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension LWORK
+* On exit, if LWORK = -1, WORK(1) returns an estimate of
+* the optimal value for LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK .GE. max(1,N)
+* is sufficient, but LWORK typically as large as 6*N may
+* be required for optimal performance. A workspace query
+* to determine the optimal workspace size is recommended.
+*
+* If LWORK = -1, then ZLAQR0 does a workspace query.
+* In this case, ZLAQR0 checks the input parameters and
+* estimates the optimal workspace size for the given
+* values of N, ILO and IHI. The estimate is returned
+* in WORK(1). No error message related to LWORK is
+* issued by XERBLA. Neither H nor Z are accessed.
+*
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .GT. 0: if INFO = i, ZLAQR0 failed to compute all of
+* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
+* and WI contain those eigenvalues which have been
+* successfully computed. (Failures are rare.)
+*
+* If INFO .GT. 0 and WANT is .FALSE., then on exit,
+* the remaining unconverged eigenvalues are the eigen-
+* values of the upper Hessenberg matrix rows and
+* columns ILO through INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and WANTT is .TRUE., then on exit
+*
+* (*) (initial value of H)*U = U*(final value of H)
+*
+* where U is a unitary matrix. The final
+* value of H is upper Hessenberg and triangular in
+* rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and WANTZ is .TRUE., then on exit
+*
+* (final value of Z(ILO:IHI,ILOZ:IHIZ)
+* = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
+*
+* where U is the unitary matrix in (*) (regard-
+* less of the value of WANTT.)
+*
+* If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
+* accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+* References:
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
+* Performance, SIAM Journal of Matrix Analysis, volume 23, pages
+* 929--947, 2002.
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part II: Aggressive Early Deflation, SIAM Journal
+* of Matrix Analysis, volume 23, pages 948--973, 2002.
+*
+* ================================================================
+* .. Parameters ..
+*
+* ==== Matrices of order NTINY or smaller must be processed by
+* . ZLAHQR because of insufficient subdiagonal scratch space.
+* . (This is a hard limit.) ====
+*
+* ==== Exceptional deflation windows: try to cure rare
+* . slow convergence by increasing the size of the
+* . deflation window after KEXNW iterations. =====
+*
+* ==== Exceptional shifts: try to cure rare slow convergence
+* . with ad-hoc exceptional shifts every KEXSH iterations.
+* . The constants WILK1 and WILK2 are used to form the
+* . exceptional shifts. ====
+*
+ INTEGER NTINY
+ PARAMETER ( NTINY = 11 )
+ INTEGER KEXNW, KEXSH
+ PARAMETER ( KEXNW = 5, KEXSH = 6 )
+ DOUBLE PRECISION WILK1
+ PARAMETER ( WILK1 = 0.75d0 )
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 AA, BB, CC, CDUM, DD, DET, RTDISC, SWAP, TR2
+ DOUBLE PRECISION S
+ INTEGER I, INF, IT, ITMAX, K, KACC22, KBOT, KDU, KS,
+ $ KT, KTOP, KU, KV, KWH, KWTOP, KWV, LD, LS,
+ $ LWKOPT, NDFL, NH, NHO, NIBBLE, NMIN, NS, NSMAX,
+ $ NSR, NVE, NW, NWMAX, NWR
+ LOGICAL NWINC, SORTED
+ CHARACTER JBCMPZ*2
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 ZDUM( 1, 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLACPY, ZLAHQR, ZLAQR3, ZLAQR4, ZLAQR5
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DIMAG, INT, MAX, MIN, MOD,
+ $ SQRT
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+ INFO = 0
+*
+* ==== Quick return for N = 0: nothing to do. ====
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = ONE
+ RETURN
+ END IF
+*
+* ==== Set up job flags for ILAENV. ====
+*
+ IF( WANTT ) THEN
+ JBCMPZ( 1: 1 ) = 'S'
+ ELSE
+ JBCMPZ( 1: 1 ) = 'E'
+ END IF
+ IF( WANTZ ) THEN
+ JBCMPZ( 2: 2 ) = 'V'
+ ELSE
+ JBCMPZ( 2: 2 ) = 'N'
+ END IF
+*
+* ==== Tiny matrices must use ZLAHQR. ====
+*
+ IF( N.LE.NTINY ) THEN
+*
+* ==== Estimate optimal workspace. ====
+*
+ LWKOPT = 1
+ IF( LWORK.NE.-1 )
+ $ CALL ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
+ $ IHIZ, Z, LDZ, INFO )
+ ELSE
+*
+* ==== Use small bulge multi-shift QR with aggressive early
+* . deflation on larger-than-tiny matrices. ====
+*
+* ==== Hope for the best. ====
+*
+ INFO = 0
+*
+* ==== NWR = recommended deflation window size. At this
+* . point, N .GT. NTINY = 11, so there is enough
+* . subdiagonal workspace for NWR.GE.2 as required.
+* . (In fact, there is enough subdiagonal space for
+* . NWR.GE.3.) ====
+*
+ NWR = ILAENV( 13, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NWR = MAX( 2, NWR )
+ NWR = MIN( IHI-ILO+1, ( N-1 ) / 3, NWR )
+ NW = NWR
+*
+* ==== NSR = recommended number of simultaneous shifts.
+* . At this point N .GT. NTINY = 11, so there is at
+* . enough subdiagonal workspace for NSR to be even
+* . and greater than or equal to two as required. ====
+*
+ NSR = ILAENV( 15, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NSR = MIN( NSR, ( N+6 ) / 9, IHI-ILO )
+ NSR = MAX( 2, NSR-MOD( NSR, 2 ) )
+*
+* ==== Estimate optimal workspace ====
+*
+* ==== Workspace query call to ZLAQR3 ====
+*
+ CALL ZLAQR3( WANTT, WANTZ, N, ILO, IHI, NWR+1, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, W, H, LDH, N, H, LDH, N, H,
+ $ LDH, WORK, -1 )
+*
+* ==== Optimal workspace = MAX(ZLAQR5, ZLAQR3) ====
+*
+ LWKOPT = MAX( 3*NSR / 2, INT( WORK( 1 ) ) )
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+ RETURN
+ END IF
+*
+* ==== ZLAHQR/ZLAQR0 crossover point ====
+*
+ NMIN = ILAENV( 12, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NMIN = MAX( NTINY, NMIN )
+*
+* ==== Nibble crossover point ====
+*
+ NIBBLE = ILAENV( 14, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ NIBBLE = MAX( 0, NIBBLE )
+*
+* ==== Accumulate reflections during ttswp? Use block
+* . 2-by-2 structure during matrix-matrix multiply? ====
+*
+ KACC22 = ILAENV( 16, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK )
+ KACC22 = MAX( 0, KACC22 )
+ KACC22 = MIN( 2, KACC22 )
+*
+* ==== NWMAX = the largest possible deflation window for
+* . which there is sufficient workspace. ====
+*
+ NWMAX = MIN( ( N-1 ) / 3, LWORK / 2 )
+*
+* ==== NSMAX = the Largest number of simultaneous shifts
+* . for which there is sufficient workspace. ====
+*
+ NSMAX = MIN( ( N+6 ) / 9, 2*LWORK / 3 )
+ NSMAX = NSMAX - MOD( NSMAX, 2 )
+*
+* ==== NDFL: an iteration count restarted at deflation. ====
+*
+ NDFL = 1
+*
+* ==== ITMAX = iteration limit ====
+*
+ ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) )
+*
+* ==== Last row and column in the active block ====
+*
+ KBOT = IHI
+*
+* ==== Main Loop ====
+*
+ DO 70 IT = 1, ITMAX
+*
+* ==== Done when KBOT falls below ILO ====
+*
+ IF( KBOT.LT.ILO )
+ $ GO TO 80
+*
+* ==== Locate active block ====
+*
+ DO 10 K = KBOT, ILO + 1, -1
+ IF( H( K, K-1 ).EQ.ZERO )
+ $ GO TO 20
+ 10 CONTINUE
+ K = ILO
+ 20 CONTINUE
+ KTOP = K
+*
+* ==== Select deflation window size ====
+*
+ NH = KBOT - KTOP + 1
+ IF( NDFL.LT.KEXNW .OR. NH.LT.NW ) THEN
+*
+* ==== Typical deflation window. If possible and
+* . advisable, nibble the entire active block.
+* . If not, use size NWR or NWR+1 depending upon
+* . which has the smaller corresponding subdiagonal
+* . entry (a heuristic). ====
+*
+ NWINC = .TRUE.
+ IF( NH.LE.MIN( NMIN, NWMAX ) ) THEN
+ NW = NH
+ ELSE
+ NW = MIN( NWR, NH, NWMAX )
+ IF( NW.LT.NWMAX ) THEN
+ IF( NW.GE.NH-1 ) THEN
+ NW = NH
+ ELSE
+ KWTOP = KBOT - NW + 1
+ IF( CABS1( H( KWTOP, KWTOP-1 ) ).GT.
+ $ CABS1( H( KWTOP-1, KWTOP-2 ) ) )NW = NW + 1
+ END IF
+ END IF
+ END IF
+ ELSE
+*
+* ==== Exceptional deflation window. If there have
+* . been no deflations in KEXNW or more iterations,
+* . then vary the deflation window size. At first,
+* . because, larger windows are, in general, more
+* . powerful than smaller ones, rapidly increase the
+* . window up to the maximum reasonable and possible.
+* . Then maybe try a slightly smaller window. ====
+*
+ IF( NWINC .AND. NW.LT.MIN( NWMAX, NH ) ) THEN
+ NW = MIN( NWMAX, NH, 2*NW )
+ ELSE
+ NWINC = .FALSE.
+ IF( NW.EQ.NH .AND. NH.GT.2 )
+ $ NW = NH - 1
+ END IF
+ END IF
+*
+* ==== Aggressive early deflation:
+* . split workspace under the subdiagonal into
+* . - an nw-by-nw work array V in the lower
+* . left-hand-corner,
+* . - an NW-by-at-least-NW-but-more-is-better
+* . (NW-by-NHO) horizontal work array along
+* . the bottom edge,
+* . - an at-least-NW-but-more-is-better (NHV-by-NW)
+* . vertical work array along the left-hand-edge.
+* . ====
+*
+ KV = N - NW + 1
+ KT = NW + 1
+ NHO = ( N-NW-1 ) - KT + 1
+ KWV = NW + 2
+ NVE = ( N-NW ) - KWV + 1
+*
+* ==== Aggressive early deflation ====
+*
+ CALL ZLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, W, H( KV, 1 ), LDH, NHO,
+ $ H( KV, KT ), LDH, NVE, H( KWV, 1 ), LDH, WORK,
+ $ LWORK )
+*
+* ==== Adjust KBOT accounting for new deflations. ====
+*
+ KBOT = KBOT - LD
+*
+* ==== KS points to the shifts. ====
+*
+ KS = KBOT - LS + 1
+*
+* ==== Skip an expensive QR sweep if there is a (partly
+* . heuristic) reason to expect that many eigenvalues
+* . will deflate without it. Here, the QR sweep is
+* . skipped if many eigenvalues have just been deflated
+* . or if the remaining active block is small.
+*
+ IF( ( LD.EQ.0 ) .OR. ( ( 100*LD.LE.NW*NIBBLE ) .AND. ( KBOT-
+ $ KTOP+1.GT.MIN( NMIN, NWMAX ) ) ) ) THEN
+*
+* ==== NS = nominal number of simultaneous shifts.
+* . This may be lowered (slightly) if ZLAQR3
+* . did not provide that many shifts. ====
+*
+ NS = MIN( NSMAX, NSR, MAX( 2, KBOT-KTOP ) )
+ NS = NS - MOD( NS, 2 )
+*
+* ==== If there have been no deflations
+* . in a multiple of KEXSH iterations,
+* . then try exceptional shifts.
+* . Otherwise use shifts provided by
+* . ZLAQR3 above or from the eigenvalues
+* . of a trailing principal submatrix. ====
+*
+ IF( MOD( NDFL, KEXSH ).EQ.0 ) THEN
+ KS = KBOT - NS + 1
+ DO 30 I = KBOT, KS + 1, -2
+ W( I ) = H( I, I ) + WILK1*CABS1( H( I, I-1 ) )
+ W( I-1 ) = W( I )
+ 30 CONTINUE
+ ELSE
+*
+* ==== Got NS/2 or fewer shifts? Use ZLAQR4 or
+* . ZLAHQR on a trailing principal submatrix to
+* . get more. (Since NS.LE.NSMAX.LE.(N+6)/9,
+* . there is enough space below the subdiagonal
+* . to fit an NS-by-NS scratch array.) ====
+*
+ IF( KBOT-KS+1.LE.NS / 2 ) THEN
+ KS = KBOT - NS + 1
+ KT = N - NS + 1
+ CALL ZLACPY( 'A', NS, NS, H( KS, KS ), LDH,
+ $ H( KT, 1 ), LDH )
+ IF( NS.GT.NMIN ) THEN
+ CALL ZLAQR4( .false., .false., NS, 1, NS,
+ $ H( KT, 1 ), LDH, W( KS ), 1, 1,
+ $ ZDUM, 1, WORK, LWORK, INF )
+ ELSE
+ CALL ZLAHQR( .false., .false., NS, 1, NS,
+ $ H( KT, 1 ), LDH, W( KS ), 1, 1,
+ $ ZDUM, 1, INF )
+ END IF
+ KS = KS + INF
+*
+* ==== In case of a rare QR failure use
+* . eigenvalues of the trailing 2-by-2
+* . principal submatrix. Scale to avoid
+* . overflows, underflows and subnormals.
+* . (The scale factor S can not be zero,
+* . because H(KBOT,KBOT-1) is nonzero.) ====
+*
+ IF( KS.GE.KBOT ) THEN
+ S = CABS1( H( KBOT-1, KBOT-1 ) ) +
+ $ CABS1( H( KBOT, KBOT-1 ) ) +
+ $ CABS1( H( KBOT-1, KBOT ) ) +
+ $ CABS1( H( KBOT, KBOT ) )
+ AA = H( KBOT-1, KBOT-1 ) / S
+ CC = H( KBOT, KBOT-1 ) / S
+ BB = H( KBOT-1, KBOT ) / S
+ DD = H( KBOT, KBOT ) / S
+ TR2 = ( AA+DD ) / TWO
+ DET = ( AA-TR2 )*( DD-TR2 ) - BB*CC
+ RTDISC = SQRT( -DET )
+ W( KBOT-1 ) = ( TR2+RTDISC )*S
+ W( KBOT ) = ( TR2-RTDISC )*S
+*
+ KS = KBOT - 1
+ END IF
+ END IF
+*
+ IF( KBOT-KS+1.GT.NS ) THEN
+*
+* ==== Sort the shifts (Helps a little) ====
+*
+ SORTED = .false.
+ DO 50 K = KBOT, KS + 1, -1
+ IF( SORTED )
+ $ GO TO 60
+ SORTED = .true.
+ DO 40 I = KS, K - 1
+ IF( CABS1( W( I ) ).LT.CABS1( W( I+1 ) ) )
+ $ THEN
+ SORTED = .false.
+ SWAP = W( I )
+ W( I ) = W( I+1 )
+ W( I+1 ) = SWAP
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+ END IF
+*
+* ==== If there are only two shifts, then use
+* . only one. ====
+*
+ IF( KBOT-KS+1.EQ.2 ) THEN
+ IF( CABS1( W( KBOT )-H( KBOT, KBOT ) ).LT.
+ $ CABS1( W( KBOT-1 )-H( KBOT, KBOT ) ) ) THEN
+ W( KBOT-1 ) = W( KBOT )
+ ELSE
+ W( KBOT ) = W( KBOT-1 )
+ END IF
+ END IF
+*
+* ==== Use up to NS of the the smallest magnatiude
+* . shifts. If there aren't NS shifts available,
+* . then use them all, possibly dropping one to
+* . make the number of shifts even. ====
+*
+ NS = MIN( NS, KBOT-KS+1 )
+ NS = NS - MOD( NS, 2 )
+ KS = KBOT - NS + 1
+*
+* ==== Small-bulge multi-shift QR sweep:
+* . split workspace under the subdiagonal into
+* . - a KDU-by-KDU work array U in the lower
+* . left-hand-corner,
+* . - a KDU-by-at-least-KDU-but-more-is-better
+* . (KDU-by-NHo) horizontal work array WH along
+* . the bottom edge,
+* . - and an at-least-KDU-but-more-is-better-by-KDU
+* . (NVE-by-KDU) vertical work WV arrow along
+* . the left-hand-edge. ====
+*
+ KDU = 3*NS - 3
+ KU = N - KDU + 1
+ KWH = KDU + 1
+ NHO = ( N-KDU+1-4 ) - ( KDU+1 ) + 1
+ KWV = KDU + 4
+ NVE = N - KDU - KWV + 1
+*
+* ==== Small-bulge multi-shift QR sweep ====
+*
+ CALL ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NS,
+ $ W( KS ), H, LDH, ILOZ, IHIZ, Z, LDZ, WORK,
+ $ 3, H( KU, 1 ), LDH, NVE, H( KWV, 1 ), LDH,
+ $ NHO, H( KU, KWH ), LDH )
+ END IF
+*
+* ==== Note progress (or the lack of it). ====
+*
+ IF( LD.GT.0 ) THEN
+ NDFL = 1
+ ELSE
+ NDFL = NDFL + 1
+ END IF
+*
+* ==== End of main loop ====
+ 70 CONTINUE
+*
+* ==== Iteration limit exceeded. Set INFO to show where
+* . the problem occurred and exit. ====
+*
+ INFO = KBOT
+ 80 CONTINUE
+ END IF
+*
+* ==== Return the optimal value of LWORK. ====
+*
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+*
+* ==== End of ZLAQR0 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqr1.f b/2.3-1/src/fortran/lapack/zlaqr1.f
new file mode 100644
index 00000000..b8c1c3d4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqr1.f
@@ -0,0 +1,97 @@
+ SUBROUTINE ZLAQR1( N, H, LDH, S1, S2, V )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ COMPLEX*16 S1, S2
+ INTEGER LDH, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), V( * )
+* ..
+*
+* Given a 2-by-2 or 3-by-3 matrix H, ZLAQR1 sets v to a
+* scalar multiple of the first column of the product
+*
+* (*) K = (H - s1*I)*(H - s2*I)
+*
+* scaling to avoid overflows and most underflows.
+*
+* This is useful for starting double implicit shift bulges
+* in the QR algorithm.
+*
+*
+* N (input) integer
+* Order of the matrix H. N must be either 2 or 3.
+*
+* H (input) COMPLEX*16 array of dimension (LDH,N)
+* The 2-by-2 or 3-by-3 matrix H in (*).
+*
+* LDH (input) integer
+* The leading dimension of H as declared in
+* the calling procedure. LDH.GE.N
+*
+* S1 (input) COMPLEX*16
+* S2 S1 and S2 are the shifts defining K in (*) above.
+*
+* V (output) COMPLEX*16 array of dimension N
+* A scalar multiple of the first column of the
+* matrix K in (*).
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ) )
+ DOUBLE PRECISION RZERO
+ PARAMETER ( RZERO = 0.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 CDUM
+ DOUBLE PRECISION H21S, H31S, S
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DIMAG
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+ IF( N.EQ.2 ) THEN
+ S = CABS1( H( 1, 1 )-S2 ) + CABS1( H( 2, 1 ) )
+ IF( S.EQ.RZERO ) THEN
+ V( 1 ) = ZERO
+ V( 2 ) = ZERO
+ ELSE
+ H21S = H( 2, 1 ) / S
+ V( 1 ) = H21S*H( 1, 2 ) + ( H( 1, 1 )-S1 )*
+ $ ( ( H( 1, 1 )-S2 ) / S )
+ V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-S1-S2 )
+ END IF
+ ELSE
+ S = CABS1( H( 1, 1 )-S2 ) + CABS1( H( 2, 1 ) ) +
+ $ CABS1( H( 3, 1 ) )
+ IF( S.EQ.ZERO ) THEN
+ V( 1 ) = ZERO
+ V( 2 ) = ZERO
+ V( 3 ) = ZERO
+ ELSE
+ H21S = H( 2, 1 ) / S
+ H31S = H( 3, 1 ) / S
+ V( 1 ) = ( H( 1, 1 )-S1 )*( ( H( 1, 1 )-S2 ) / S ) +
+ $ H( 1, 2 )*H21S + H( 1, 3 )*H31S
+ V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-S1-S2 ) + H( 2, 3 )*H31S
+ V( 3 ) = H31S*( H( 1, 1 )+H( 3, 3 )-S1-S2 ) + H21S*H( 3, 2 )
+ END IF
+ END IF
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqr2.f b/2.3-1/src/fortran/lapack/zlaqr2.f
new file mode 100644
index 00000000..0add51ae
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqr2.f
@@ -0,0 +1,437 @@
+ SUBROUTINE ZLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,
+ $ NV, WV, LDWV, WORK, LWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
+ $ LDZ, LWORK, N, ND, NH, NS, NV, NW
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ),
+ $ WORK( * ), WV( LDWV, * ), Z( LDZ, * )
+* ..
+*
+* This subroutine is identical to ZLAQR3 except that it avoids
+* recursion by calling ZLAHQR instead of ZLAQR4.
+*
+*
+* ******************************************************************
+* Aggressive early deflation:
+*
+* This subroutine accepts as input an upper Hessenberg matrix
+* H and performs an unitary similarity transformation
+* designed to detect and deflate fully converged eigenvalues from
+* a trailing principal submatrix. On output H has been over-
+* written by a new Hessenberg matrix that is a perturbation of
+* an unitary similarity transformation of H. It is to be
+* hoped that the final version of H has many zero subdiagonal
+* entries.
+*
+* ******************************************************************
+* WANTT (input) LOGICAL
+* If .TRUE., then the Hessenberg matrix H is fully updated
+* so that the triangular Schur factor may be
+* computed (in cooperation with the calling subroutine).
+* If .FALSE., then only enough of H is updated to preserve
+* the eigenvalues.
+*
+* WANTZ (input) LOGICAL
+* If .TRUE., then the unitary matrix Z is updated so
+* so that the unitary Schur factor may be computed
+* (in cooperation with the calling subroutine).
+* If .FALSE., then Z is not referenced.
+*
+* N (input) INTEGER
+* The order of the matrix H and (if WANTZ is .TRUE.) the
+* order of the unitary matrix Z.
+*
+* KTOP (input) INTEGER
+* It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.
+* KBOT and KTOP together determine an isolated block
+* along the diagonal of the Hessenberg matrix.
+*
+* KBOT (input) INTEGER
+* It is assumed without a check that either
+* KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together
+* determine an isolated block along the diagonal of the
+* Hessenberg matrix.
+*
+* NW (input) INTEGER
+* Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1).
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH,N)
+* On input the initial N-by-N section of H stores the
+* Hessenberg matrix undergoing aggressive early deflation.
+* On output H has been transformed by a unitary
+* similarity transformation, perturbed, and the returned
+* to Hessenberg form that (it is to be hoped) has some
+* zero subdiagonal entries.
+*
+* LDH (input) integer
+* Leading dimension of H just as declared in the calling
+* subroutine. N .LE. LDH
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,IHI)
+* IF WANTZ is .TRUE., then on output, the unitary
+* similarity transformation mentioned above has been
+* accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
+* If WANTZ is .FALSE., then Z is unreferenced.
+*
+* LDZ (input) integer
+* The leading dimension of Z just as declared in the
+* calling subroutine. 1 .LE. LDZ.
+*
+* NS (output) integer
+* The number of unconverged (ie approximate) eigenvalues
+* returned in SR and SI that may be used as shifts by the
+* calling subroutine.
+*
+* ND (output) integer
+* The number of converged eigenvalues uncovered by this
+* subroutine.
+*
+* SH (output) COMPLEX*16 array, dimension KBOT
+* On output, approximate eigenvalues that may
+* be used for shifts are stored in SH(KBOT-ND-NS+1)
+* through SR(KBOT-ND). Converged eigenvalues are
+* stored in SH(KBOT-ND+1) through SH(KBOT).
+*
+* V (workspace) COMPLEX*16 array, dimension (LDV,NW)
+* An NW-by-NW work array.
+*
+* LDV (input) integer scalar
+* The leading dimension of V just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* NH (input) integer scalar
+* The number of columns of T. NH.GE.NW.
+*
+* T (workspace) COMPLEX*16 array, dimension (LDT,NW)
+*
+* LDT (input) integer
+* The leading dimension of T just as declared in the
+* calling subroutine. NW .LE. LDT
+*
+* NV (input) integer
+* The number of rows of work array WV available for
+* workspace. NV.GE.NW.
+*
+* WV (workspace) COMPLEX*16 array, dimension (LDWV,NW)
+*
+* LDWV (input) integer
+* The leading dimension of W just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* WORK (workspace) COMPLEX*16 array, dimension LWORK.
+* On exit, WORK(1) is set to an estimate of the optimal value
+* of LWORK for the given values of N, NW, KTOP and KBOT.
+*
+* LWORK (input) integer
+* The dimension of the work array WORK. LWORK = 2*NW
+* suffices, but greater efficiency may result from larger
+* values of LWORK.
+*
+* If LWORK = -1, then a workspace query is assumed; ZLAQR2
+* only estimates the optimal workspace size for the given
+* values of N, NW, KTOP and KBOT. The estimate is returned
+* in WORK(1). No error message related to LWORK is issued
+* by XERBLA. Neither H nor Z are accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ==================================================================
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION RZERO, RONE
+ PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 BETA, CDUM, S, TAU
+ DOUBLE PRECISION FOO, SAFMAX, SAFMIN, SMLNUM, ULP
+ INTEGER I, IFST, ILST, INFO, INFQR, J, JW, KCOL, KLN,
+ $ KNT, KROW, KWTOP, LTOP, LWK1, LWK2, LWKOPT
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, ZCOPY, ZGEHRD, ZGEMM, ZLACPY, ZLAHQR,
+ $ ZLARF, ZLARFG, ZLASET, ZTREXC, ZUNGHR
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, MAX, MIN
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* ==== Estimate optimal workspace. ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ IF( JW.LE.2 ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* ==== Workspace query call to ZGEHRD ====
+*
+ CALL ZGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK1 = INT( WORK( 1 ) )
+*
+* ==== Workspace query call to ZUNGHR ====
+*
+ CALL ZUNGHR( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK2 = INT( WORK( 1 ) )
+*
+* ==== Optimal workspace ====
+*
+ LWKOPT = JW + MAX( LWK1, LWK2 )
+ END IF
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+ RETURN
+ END IF
+*
+* ==== Nothing to do ...
+* ... for an empty active block ... ====
+ NS = 0
+ ND = 0
+ IF( KTOP.GT.KBOT )
+ $ RETURN
+* ... nor for an empty deflation window. ====
+ IF( NW.LT.1 )
+ $ RETURN
+*
+* ==== Machine constants ====
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = RONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( N ) / ULP )
+*
+* ==== Setup deflation window ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ KWTOP = KBOT - JW + 1
+ IF( KWTOP.EQ.KTOP ) THEN
+ S = ZERO
+ ELSE
+ S = H( KWTOP, KWTOP-1 )
+ END IF
+*
+ IF( KBOT.EQ.KWTOP ) THEN
+*
+* ==== 1-by-1 deflation window: not much to do ====
+*
+ SH( KWTOP ) = H( KWTOP, KWTOP )
+ NS = 1
+ ND = 0
+ IF( CABS1( S ).LE.MAX( SMLNUM, ULP*CABS1( H( KWTOP,
+ $ KWTOP ) ) ) ) THEN
+ NS = 0
+ ND = 1
+ IF( KWTOP.GT.KTOP )
+ $ H( KWTOP, KWTOP-1 ) = ZERO
+ END IF
+ RETURN
+ END IF
+*
+* ==== Convert to spike-triangular form. (In case of a
+* . rare QR failure, this routine continues to do
+* . aggressive early deflation using that part of
+* . the deflation window that converged using INFQR
+* . here and there to keep track.) ====
+*
+ CALL ZLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T, LDT )
+ CALL ZCOPY( JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ), LDT+1 )
+*
+ CALL ZLASET( 'A', JW, JW, ZERO, ONE, V, LDV )
+ CALL ZLAHQR( .true., .true., JW, 1, JW, T, LDT, SH( KWTOP ), 1,
+ $ JW, V, LDV, INFQR )
+*
+* ==== Deflation detection loop ====
+*
+ NS = JW
+ ILST = INFQR + 1
+ DO 10 KNT = INFQR + 1, JW
+*
+* ==== Small spike tip deflation test ====
+*
+ FOO = CABS1( T( NS, NS ) )
+ IF( FOO.EQ.RZERO )
+ $ FOO = CABS1( S )
+ IF( CABS1( S )*CABS1( V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) )
+ $ THEN
+*
+* ==== One more converged eigenvalue ====
+*
+ NS = NS - 1
+ ELSE
+*
+* ==== One undflatable eigenvalue. Move it up out of the
+* . way. (ZTREXC can not fail in this case.) ====
+*
+ IFST = NS
+ CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO )
+ ILST = ILST + 1
+ END IF
+ 10 CONTINUE
+*
+* ==== Return to Hessenberg form ====
+*
+ IF( NS.EQ.0 )
+ $ S = ZERO
+*
+ IF( NS.LT.JW ) THEN
+*
+* ==== sorting the diagonal of T improves accuracy for
+* . graded matrices. ====
+*
+ DO 30 I = INFQR + 1, NS
+ IFST = I
+ DO 20 J = I + 1, NS
+ IF( CABS1( T( J, J ) ).GT.CABS1( T( IFST, IFST ) ) )
+ $ IFST = J
+ 20 CONTINUE
+ ILST = I
+ IF( IFST.NE.ILST )
+ $ CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO )
+ 30 CONTINUE
+ END IF
+*
+* ==== Restore shift/eigenvalue array from T ====
+*
+ DO 40 I = INFQR + 1, JW
+ SH( KWTOP+I-1 ) = T( I, I )
+ 40 CONTINUE
+*
+*
+ IF( NS.LT.JW .OR. S.EQ.ZERO ) THEN
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+*
+* ==== Reflect spike back into lower triangle ====
+*
+ CALL ZCOPY( NS, V, LDV, WORK, 1 )
+ DO 50 I = 1, NS
+ WORK( I ) = DCONJG( WORK( I ) )
+ 50 CONTINUE
+ BETA = WORK( 1 )
+ CALL ZLARFG( NS, BETA, WORK( 2 ), 1, TAU )
+ WORK( 1 ) = ONE
+*
+ CALL ZLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ), LDT )
+*
+ CALL ZLARF( 'L', NS, JW, WORK, 1, DCONJG( TAU ), T, LDT,
+ $ WORK( JW+1 ) )
+ CALL ZLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT,
+ $ WORK( JW+1 ) )
+ CALL ZLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV,
+ $ WORK( JW+1 ) )
+*
+ CALL ZGEHRD( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ END IF
+*
+* ==== Copy updated reduced window into place ====
+*
+ IF( KWTOP.GT.1 )
+ $ H( KWTOP, KWTOP-1 ) = S*DCONJG( V( 1, 1 ) )
+ CALL ZLACPY( 'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH )
+ CALL ZCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP ),
+ $ LDH+1 )
+*
+* ==== Accumulate orthogonal matrix in order update
+* . H and Z, if requested. (A modified version
+* . of ZUNGHR that accumulates block Householder
+* . transformations into V directly might be
+* . marginally more efficient than the following.) ====
+*
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+ CALL ZUNGHR( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ CALL ZGEMM( 'N', 'N', JW, NS, NS, ONE, V, LDV, T, LDT, ZERO,
+ $ WV, LDWV )
+ CALL ZLACPY( 'A', JW, NS, WV, LDWV, V, LDV )
+ END IF
+*
+* ==== Update vertical slab in H ====
+*
+ IF( WANTT ) THEN
+ LTOP = 1
+ ELSE
+ LTOP = KTOP
+ END IF
+ DO 60 KROW = LTOP, KWTOP - 1, NV
+ KLN = MIN( NV, KWTOP-KROW )
+ CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ),
+ $ LDH, V, LDV, ZERO, WV, LDWV )
+ CALL ZLACPY( 'A', KLN, JW, WV, LDWV, H( KROW, KWTOP ), LDH )
+ 60 CONTINUE
+*
+* ==== Update horizontal slab in H ====
+*
+ IF( WANTT ) THEN
+ DO 70 KCOL = KBOT + 1, N, NH
+ KLN = MIN( NH, N-KCOL+1 )
+ CALL ZGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV,
+ $ H( KWTOP, KCOL ), LDH, ZERO, T, LDT )
+ CALL ZLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ),
+ $ LDH )
+ 70 CONTINUE
+ END IF
+*
+* ==== Update vertical slab in Z ====
+*
+ IF( WANTZ ) THEN
+ DO 80 KROW = ILOZ, IHIZ, NV
+ KLN = MIN( NV, IHIZ-KROW+1 )
+ CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ),
+ $ LDZ, V, LDV, ZERO, WV, LDWV )
+ CALL ZLACPY( 'A', KLN, JW, WV, LDWV, Z( KROW, KWTOP ),
+ $ LDZ )
+ 80 CONTINUE
+ END IF
+ END IF
+*
+* ==== Return the number of deflations ... ====
+*
+ ND = JW - NS
+*
+* ==== ... and the number of shifts. (Subtracting
+* . INFQR from the spike length takes care
+* . of the case of a rare QR failure while
+* . calculating eigenvalues of the deflation
+* . window.) ====
+*
+ NS = NS - INFQR
+*
+* ==== Return optimal workspace. ====
+*
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+*
+* ==== End of ZLAQR2 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqr3.f b/2.3-1/src/fortran/lapack/zlaqr3.f
new file mode 100644
index 00000000..e9bf393a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqr3.f
@@ -0,0 +1,448 @@
+ SUBROUTINE ZLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,
+ $ NV, WV, LDWV, WORK, LWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
+ $ LDZ, LWORK, N, ND, NH, NS, NV, NW
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ),
+ $ WORK( * ), WV( LDWV, * ), Z( LDZ, * )
+* ..
+*
+* ******************************************************************
+* Aggressive early deflation:
+*
+* This subroutine accepts as input an upper Hessenberg matrix
+* H and performs an unitary similarity transformation
+* designed to detect and deflate fully converged eigenvalues from
+* a trailing principal submatrix. On output H has been over-
+* written by a new Hessenberg matrix that is a perturbation of
+* an unitary similarity transformation of H. It is to be
+* hoped that the final version of H has many zero subdiagonal
+* entries.
+*
+* ******************************************************************
+* WANTT (input) LOGICAL
+* If .TRUE., then the Hessenberg matrix H is fully updated
+* so that the triangular Schur factor may be
+* computed (in cooperation with the calling subroutine).
+* If .FALSE., then only enough of H is updated to preserve
+* the eigenvalues.
+*
+* WANTZ (input) LOGICAL
+* If .TRUE., then the unitary matrix Z is updated so
+* so that the unitary Schur factor may be computed
+* (in cooperation with the calling subroutine).
+* If .FALSE., then Z is not referenced.
+*
+* N (input) INTEGER
+* The order of the matrix H and (if WANTZ is .TRUE.) the
+* order of the unitary matrix Z.
+*
+* KTOP (input) INTEGER
+* It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.
+* KBOT and KTOP together determine an isolated block
+* along the diagonal of the Hessenberg matrix.
+*
+* KBOT (input) INTEGER
+* It is assumed without a check that either
+* KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together
+* determine an isolated block along the diagonal of the
+* Hessenberg matrix.
+*
+* NW (input) INTEGER
+* Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1).
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH,N)
+* On input the initial N-by-N section of H stores the
+* Hessenberg matrix undergoing aggressive early deflation.
+* On output H has been transformed by a unitary
+* similarity transformation, perturbed, and the returned
+* to Hessenberg form that (it is to be hoped) has some
+* zero subdiagonal entries.
+*
+* LDH (input) integer
+* Leading dimension of H just as declared in the calling
+* subroutine. N .LE. LDH
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,IHI)
+* IF WANTZ is .TRUE., then on output, the unitary
+* similarity transformation mentioned above has been
+* accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
+* If WANTZ is .FALSE., then Z is unreferenced.
+*
+* LDZ (input) integer
+* The leading dimension of Z just as declared in the
+* calling subroutine. 1 .LE. LDZ.
+*
+* NS (output) integer
+* The number of unconverged (ie approximate) eigenvalues
+* returned in SR and SI that may be used as shifts by the
+* calling subroutine.
+*
+* ND (output) integer
+* The number of converged eigenvalues uncovered by this
+* subroutine.
+*
+* SH (output) COMPLEX*16 array, dimension KBOT
+* On output, approximate eigenvalues that may
+* be used for shifts are stored in SH(KBOT-ND-NS+1)
+* through SR(KBOT-ND). Converged eigenvalues are
+* stored in SH(KBOT-ND+1) through SH(KBOT).
+*
+* V (workspace) COMPLEX*16 array, dimension (LDV,NW)
+* An NW-by-NW work array.
+*
+* LDV (input) integer scalar
+* The leading dimension of V just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* NH (input) integer scalar
+* The number of columns of T. NH.GE.NW.
+*
+* T (workspace) COMPLEX*16 array, dimension (LDT,NW)
+*
+* LDT (input) integer
+* The leading dimension of T just as declared in the
+* calling subroutine. NW .LE. LDT
+*
+* NV (input) integer
+* The number of rows of work array WV available for
+* workspace. NV.GE.NW.
+*
+* WV (workspace) COMPLEX*16 array, dimension (LDWV,NW)
+*
+* LDWV (input) integer
+* The leading dimension of W just as declared in the
+* calling subroutine. NW .LE. LDV
+*
+* WORK (workspace) COMPLEX*16 array, dimension LWORK.
+* On exit, WORK(1) is set to an estimate of the optimal value
+* of LWORK for the given values of N, NW, KTOP and KBOT.
+*
+* LWORK (input) integer
+* The dimension of the work array WORK. LWORK = 2*NW
+* suffices, but greater efficiency may result from larger
+* values of LWORK.
+*
+* If LWORK = -1, then a workspace query is assumed; ZLAQR3
+* only estimates the optimal workspace size for the given
+* values of N, NW, KTOP and KBOT. The estimate is returned
+* in WORK(1). No error message related to LWORK is issued
+* by XERBLA. Neither H nor Z are accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ==================================================================
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION RZERO, RONE
+ PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 BETA, CDUM, S, TAU
+ DOUBLE PRECISION FOO, SAFMAX, SAFMIN, SMLNUM, ULP
+ INTEGER I, IFST, ILST, INFO, INFQR, J, JW, KCOL, KLN,
+ $ KNT, KROW, KWTOP, LTOP, LWK1, LWK2, LWK3,
+ $ LWKOPT, NMIN
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ INTEGER ILAENV
+ EXTERNAL DLAMCH, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, ZCOPY, ZGEHRD, ZGEMM, ZLACPY, ZLAHQR,
+ $ ZLAQR4, ZLARF, ZLARFG, ZLASET, ZTREXC, ZUNGHR
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, MAX, MIN
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* ==== Estimate optimal workspace. ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ IF( JW.LE.2 ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* ==== Workspace query call to ZGEHRD ====
+*
+ CALL ZGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK1 = INT( WORK( 1 ) )
+*
+* ==== Workspace query call to ZUNGHR ====
+*
+ CALL ZUNGHR( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
+ LWK2 = INT( WORK( 1 ) )
+*
+* ==== Workspace query call to ZLAQR4 ====
+*
+ CALL ZLAQR4( .true., .true., JW, 1, JW, T, LDT, SH, 1, JW, V,
+ $ LDV, WORK, -1, INFQR )
+ LWK3 = INT( WORK( 1 ) )
+*
+* ==== Optimal workspace ====
+*
+ LWKOPT = MAX( JW+MAX( LWK1, LWK2 ), LWK3 )
+ END IF
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+ RETURN
+ END IF
+*
+* ==== Nothing to do ...
+* ... for an empty active block ... ====
+ NS = 0
+ ND = 0
+ IF( KTOP.GT.KBOT )
+ $ RETURN
+* ... nor for an empty deflation window. ====
+ IF( NW.LT.1 )
+ $ RETURN
+*
+* ==== Machine constants ====
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = RONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( N ) / ULP )
+*
+* ==== Setup deflation window ====
+*
+ JW = MIN( NW, KBOT-KTOP+1 )
+ KWTOP = KBOT - JW + 1
+ IF( KWTOP.EQ.KTOP ) THEN
+ S = ZERO
+ ELSE
+ S = H( KWTOP, KWTOP-1 )
+ END IF
+*
+ IF( KBOT.EQ.KWTOP ) THEN
+*
+* ==== 1-by-1 deflation window: not much to do ====
+*
+ SH( KWTOP ) = H( KWTOP, KWTOP )
+ NS = 1
+ ND = 0
+ IF( CABS1( S ).LE.MAX( SMLNUM, ULP*CABS1( H( KWTOP,
+ $ KWTOP ) ) ) ) THEN
+
+ NS = 0
+ ND = 1
+ IF( KWTOP.GT.KTOP )
+ $ H( KWTOP, KWTOP-1 ) = ZERO
+ END IF
+ RETURN
+ END IF
+*
+* ==== Convert to spike-triangular form. (In case of a
+* . rare QR failure, this routine continues to do
+* . aggressive early deflation using that part of
+* . the deflation window that converged using INFQR
+* . here and there to keep track.) ====
+*
+ CALL ZLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T, LDT )
+ CALL ZCOPY( JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ), LDT+1 )
+*
+ CALL ZLASET( 'A', JW, JW, ZERO, ONE, V, LDV )
+ NMIN = ILAENV( 12, 'ZLAQR3', 'SV', JW, 1, JW, LWORK )
+ IF( JW.GT.NMIN ) THEN
+ CALL ZLAQR4( .true., .true., JW, 1, JW, T, LDT, SH( KWTOP ), 1,
+ $ JW, V, LDV, WORK, LWORK, INFQR )
+ ELSE
+ CALL ZLAHQR( .true., .true., JW, 1, JW, T, LDT, SH( KWTOP ), 1,
+ $ JW, V, LDV, INFQR )
+ END IF
+*
+* ==== Deflation detection loop ====
+*
+ NS = JW
+ ILST = INFQR + 1
+ DO 10 KNT = INFQR + 1, JW
+*
+* ==== Small spike tip deflation test ====
+*
+ FOO = CABS1( T( NS, NS ) )
+ IF( FOO.EQ.RZERO )
+ $ FOO = CABS1( S )
+ IF( CABS1( S )*CABS1( V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) )
+ $ THEN
+*
+* ==== One more converged eigenvalue ====
+*
+ NS = NS - 1
+ ELSE
+*
+* ==== One undflatable eigenvalue. Move it up out of the
+* . way. (ZTREXC can not fail in this case.) ====
+*
+ IFST = NS
+ CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO )
+ ILST = ILST + 1
+ END IF
+ 10 CONTINUE
+*
+* ==== Return to Hessenberg form ====
+*
+ IF( NS.EQ.0 )
+ $ S = ZERO
+*
+ IF( NS.LT.JW ) THEN
+*
+* ==== sorting the diagonal of T improves accuracy for
+* . graded matrices. ====
+*
+ DO 30 I = INFQR + 1, NS
+ IFST = I
+ DO 20 J = I + 1, NS
+ IF( CABS1( T( J, J ) ).GT.CABS1( T( IFST, IFST ) ) )
+ $ IFST = J
+ 20 CONTINUE
+ ILST = I
+ IF( IFST.NE.ILST )
+ $ CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO )
+ 30 CONTINUE
+ END IF
+*
+* ==== Restore shift/eigenvalue array from T ====
+*
+ DO 40 I = INFQR + 1, JW
+ SH( KWTOP+I-1 ) = T( I, I )
+ 40 CONTINUE
+*
+*
+ IF( NS.LT.JW .OR. S.EQ.ZERO ) THEN
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+*
+* ==== Reflect spike back into lower triangle ====
+*
+ CALL ZCOPY( NS, V, LDV, WORK, 1 )
+ DO 50 I = 1, NS
+ WORK( I ) = DCONJG( WORK( I ) )
+ 50 CONTINUE
+ BETA = WORK( 1 )
+ CALL ZLARFG( NS, BETA, WORK( 2 ), 1, TAU )
+ WORK( 1 ) = ONE
+*
+ CALL ZLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ), LDT )
+*
+ CALL ZLARF( 'L', NS, JW, WORK, 1, DCONJG( TAU ), T, LDT,
+ $ WORK( JW+1 ) )
+ CALL ZLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT,
+ $ WORK( JW+1 ) )
+ CALL ZLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV,
+ $ WORK( JW+1 ) )
+*
+ CALL ZGEHRD( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ END IF
+*
+* ==== Copy updated reduced window into place ====
+*
+ IF( KWTOP.GT.1 )
+ $ H( KWTOP, KWTOP-1 ) = S*DCONJG( V( 1, 1 ) )
+ CALL ZLACPY( 'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH )
+ CALL ZCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP ),
+ $ LDH+1 )
+*
+* ==== Accumulate orthogonal matrix in order update
+* . H and Z, if requested. (A modified version
+* . of ZUNGHR that accumulates block Householder
+* . transformations into V directly might be
+* . marginally more efficient than the following.) ====
+*
+ IF( NS.GT.1 .AND. S.NE.ZERO ) THEN
+ CALL ZUNGHR( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ),
+ $ LWORK-JW, INFO )
+ CALL ZGEMM( 'N', 'N', JW, NS, NS, ONE, V, LDV, T, LDT, ZERO,
+ $ WV, LDWV )
+ CALL ZLACPY( 'A', JW, NS, WV, LDWV, V, LDV )
+ END IF
+*
+* ==== Update vertical slab in H ====
+*
+ IF( WANTT ) THEN
+ LTOP = 1
+ ELSE
+ LTOP = KTOP
+ END IF
+ DO 60 KROW = LTOP, KWTOP - 1, NV
+ KLN = MIN( NV, KWTOP-KROW )
+ CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ),
+ $ LDH, V, LDV, ZERO, WV, LDWV )
+ CALL ZLACPY( 'A', KLN, JW, WV, LDWV, H( KROW, KWTOP ), LDH )
+ 60 CONTINUE
+*
+* ==== Update horizontal slab in H ====
+*
+ IF( WANTT ) THEN
+ DO 70 KCOL = KBOT + 1, N, NH
+ KLN = MIN( NH, N-KCOL+1 )
+ CALL ZGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV,
+ $ H( KWTOP, KCOL ), LDH, ZERO, T, LDT )
+ CALL ZLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ),
+ $ LDH )
+ 70 CONTINUE
+ END IF
+*
+* ==== Update vertical slab in Z ====
+*
+ IF( WANTZ ) THEN
+ DO 80 KROW = ILOZ, IHIZ, NV
+ KLN = MIN( NV, IHIZ-KROW+1 )
+ CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ),
+ $ LDZ, V, LDV, ZERO, WV, LDWV )
+ CALL ZLACPY( 'A', KLN, JW, WV, LDWV, Z( KROW, KWTOP ),
+ $ LDZ )
+ 80 CONTINUE
+ END IF
+ END IF
+*
+* ==== Return the number of deflations ... ====
+*
+ ND = JW - NS
+*
+* ==== ... and the number of shifts. (Subtracting
+* . INFQR from the spike length takes care
+* . of the case of a rare QR failure while
+* . calculating eigenvalues of the deflation
+* . window.) ====
+*
+ NS = NS - INFQR
+*
+* ==== Return optimal workspace. ====
+*
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+*
+* ==== End of ZLAQR3 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqr4.f b/2.3-1/src/fortran/lapack/zlaqr4.f
new file mode 100644
index 00000000..eef7f00a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqr4.f
@@ -0,0 +1,602 @@
+ SUBROUTINE ZLAQR4( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
+ $ IHIZ, Z, LDZ, WORK, LWORK, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * )
+* ..
+*
+* This subroutine implements one level of recursion for ZLAQR0.
+* It is a complete implementation of the small bulge multi-shift
+* QR algorithm. It may be called by ZLAQR0 and, for large enough
+* deflation window size, it may be called by ZLAQR3. This
+* subroutine is identical to ZLAQR0 except that it calls ZLAQR2
+* instead of ZLAQR3.
+*
+* Purpose
+* =======
+*
+* ZLAQR4 computes the eigenvalues of a Hessenberg matrix H
+* and, optionally, the matrices T and Z from the Schur decomposition
+* H = Z T Z**H, where T is an upper triangular matrix (the
+* Schur form), and Z is the unitary matrix of Schur vectors.
+*
+* Optionally Z may be postmultiplied into an input unitary
+* matrix Q so that this routine can give the Schur factorization
+* of a matrix A which has been reduced to the Hessenberg form H
+* by the unitary matrix Q: A = Q*H*Q**H = (QZ)*H*(QZ)**H.
+*
+* Arguments
+* =========
+*
+* WANTT (input) LOGICAL
+* = .TRUE. : the full Schur form T is required;
+* = .FALSE.: only eigenvalues are required.
+*
+* WANTZ (input) LOGICAL
+* = .TRUE. : the matrix of Schur vectors Z is required;
+* = .FALSE.: Schur vectors are not required.
+*
+* N (input) INTEGER
+* The order of the matrix H. N .GE. 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* It is assumed that H is already upper triangular in rows
+* and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,
+* H(ILO,ILO-1) is zero. ILO and IHI are normally set by a
+* previous call to ZGEBAL, and then passed to ZGEHRD when the
+* matrix output by ZGEBAL is reduced to Hessenberg form.
+* Otherwise, ILO and IHI should be set to 1 and N,
+* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
+* If N = 0, then ILO = 1 and IHI = 0.
+*
+* H (input/output) COMPLEX*16 array, dimension (LDH,N)
+* On entry, the upper Hessenberg matrix H.
+* On exit, if INFO = 0 and WANTT is .TRUE., then H
+* contains the upper triangular matrix T from the Schur
+* decomposition (the Schur form). If INFO = 0 and WANT is
+* .FALSE., then the contents of H are unspecified on exit.
+* (The output value of H when INFO.GT.0 is given under the
+* description of INFO below.)
+*
+* This subroutine may explicitly set H(i,j) = 0 for i.GT.j and
+* j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N.
+*
+* LDH (input) INTEGER
+* The leading dimension of the array H. LDH .GE. max(1,N).
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* The computed eigenvalues of H(ILO:IHI,ILO:IHI) are stored
+* in W(ILO:IHI). If WANTT is .TRUE., then the eigenvalues are
+* stored in the same order as on the diagonal of the Schur
+* form returned in H, with W(i) = H(i,i).
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,IHI)
+* If WANTZ is .FALSE., then Z is not referenced.
+* If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is
+* replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the
+* orthogonal Schur factor of H(ILO:IHI,ILO:IHI).
+* (The output value of Z when INFO.GT.0 is given under
+* the description of INFO below.)
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. if WANTZ is .TRUE.
+* then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension LWORK
+* On exit, if LWORK = -1, WORK(1) returns an estimate of
+* the optimal value for LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK .GE. max(1,N)
+* is sufficient, but LWORK typically as large as 6*N may
+* be required for optimal performance. A workspace query
+* to determine the optimal workspace size is recommended.
+*
+* If LWORK = -1, then ZLAQR4 does a workspace query.
+* In this case, ZLAQR4 checks the input parameters and
+* estimates the optimal workspace size for the given
+* values of N, ILO and IHI. The estimate is returned
+* in WORK(1). No error message related to LWORK is
+* issued by XERBLA. Neither H nor Z are accessed.
+*
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* .GT. 0: if INFO = i, ZLAQR4 failed to compute all of
+* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
+* and WI contain those eigenvalues which have been
+* successfully computed. (Failures are rare.)
+*
+* If INFO .GT. 0 and WANT is .FALSE., then on exit,
+* the remaining unconverged eigenvalues are the eigen-
+* values of the upper Hessenberg matrix rows and
+* columns ILO through INFO of the final, output
+* value of H.
+*
+* If INFO .GT. 0 and WANTT is .TRUE., then on exit
+*
+* (*) (initial value of H)*U = U*(final value of H)
+*
+* where U is a unitary matrix. The final
+* value of H is upper Hessenberg and triangular in
+* rows and columns INFO+1 through IHI.
+*
+* If INFO .GT. 0 and WANTZ is .TRUE., then on exit
+*
+* (final value of Z(ILO:IHI,ILOZ:IHIZ)
+* = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
+*
+* where U is the unitary matrix in (*) (regard-
+* less of the value of WANTT.)
+*
+* If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
+* accessed.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ================================================================
+* References:
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
+* Performance, SIAM Journal of Matrix Analysis, volume 23, pages
+* 929--947, 2002.
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part II: Aggressive Early Deflation, SIAM Journal
+* of Matrix Analysis, volume 23, pages 948--973, 2002.
+*
+* ================================================================
+* .. Parameters ..
+*
+* ==== Matrices of order NTINY or smaller must be processed by
+* . ZLAHQR because of insufficient subdiagonal scratch space.
+* . (This is a hard limit.) ====
+*
+* ==== Exceptional deflation windows: try to cure rare
+* . slow convergence by increasing the size of the
+* . deflation window after KEXNW iterations. =====
+*
+* ==== Exceptional shifts: try to cure rare slow convergence
+* . with ad-hoc exceptional shifts every KEXSH iterations.
+* . The constants WILK1 and WILK2 are used to form the
+* . exceptional shifts. ====
+*
+ INTEGER NTINY
+ PARAMETER ( NTINY = 11 )
+ INTEGER KEXNW, KEXSH
+ PARAMETER ( KEXNW = 5, KEXSH = 6 )
+ DOUBLE PRECISION WILK1
+ PARAMETER ( WILK1 = 0.75d0 )
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION TWO
+ PARAMETER ( TWO = 2.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 AA, BB, CC, CDUM, DD, DET, RTDISC, SWAP, TR2
+ DOUBLE PRECISION S
+ INTEGER I, INF, IT, ITMAX, K, KACC22, KBOT, KDU, KS,
+ $ KT, KTOP, KU, KV, KWH, KWTOP, KWV, LD, LS,
+ $ LWKOPT, NDFL, NH, NHO, NIBBLE, NMIN, NS, NSMAX,
+ $ NSR, NVE, NW, NWMAX, NWR
+ LOGICAL NWINC, SORTED
+ CHARACTER JBCMPZ*2
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 ZDUM( 1, 1 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLACPY, ZLAHQR, ZLAQR2, ZLAQR5
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DIMAG, INT, MAX, MIN, MOD,
+ $ SQRT
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+ INFO = 0
+*
+* ==== Quick return for N = 0: nothing to do. ====
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = ONE
+ RETURN
+ END IF
+*
+* ==== Set up job flags for ILAENV. ====
+*
+ IF( WANTT ) THEN
+ JBCMPZ( 1: 1 ) = 'S'
+ ELSE
+ JBCMPZ( 1: 1 ) = 'E'
+ END IF
+ IF( WANTZ ) THEN
+ JBCMPZ( 2: 2 ) = 'V'
+ ELSE
+ JBCMPZ( 2: 2 ) = 'N'
+ END IF
+*
+* ==== Tiny matrices must use ZLAHQR. ====
+*
+ IF( N.LE.NTINY ) THEN
+*
+* ==== Estimate optimal workspace. ====
+*
+ LWKOPT = 1
+ IF( LWORK.NE.-1 )
+ $ CALL ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
+ $ IHIZ, Z, LDZ, INFO )
+ ELSE
+*
+* ==== Use small bulge multi-shift QR with aggressive early
+* . deflation on larger-than-tiny matrices. ====
+*
+* ==== Hope for the best. ====
+*
+ INFO = 0
+*
+* ==== NWR = recommended deflation window size. At this
+* . point, N .GT. NTINY = 11, so there is enough
+* . subdiagonal workspace for NWR.GE.2 as required.
+* . (In fact, there is enough subdiagonal space for
+* . NWR.GE.3.) ====
+*
+ NWR = ILAENV( 13, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NWR = MAX( 2, NWR )
+ NWR = MIN( IHI-ILO+1, ( N-1 ) / 3, NWR )
+ NW = NWR
+*
+* ==== NSR = recommended number of simultaneous shifts.
+* . At this point N .GT. NTINY = 11, so there is at
+* . enough subdiagonal workspace for NSR to be even
+* . and greater than or equal to two as required. ====
+*
+ NSR = ILAENV( 15, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NSR = MIN( NSR, ( N+6 ) / 9, IHI-ILO )
+ NSR = MAX( 2, NSR-MOD( NSR, 2 ) )
+*
+* ==== Estimate optimal workspace ====
+*
+* ==== Workspace query call to ZLAQR2 ====
+*
+ CALL ZLAQR2( WANTT, WANTZ, N, ILO, IHI, NWR+1, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, W, H, LDH, N, H, LDH, N, H,
+ $ LDH, WORK, -1 )
+*
+* ==== Optimal workspace = MAX(ZLAQR5, ZLAQR2) ====
+*
+ LWKOPT = MAX( 3*NSR / 2, INT( WORK( 1 ) ) )
+*
+* ==== Quick return in case of workspace query. ====
+*
+ IF( LWORK.EQ.-1 ) THEN
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+ RETURN
+ END IF
+*
+* ==== ZLAHQR/ZLAQR0 crossover point ====
+*
+ NMIN = ILAENV( 12, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NMIN = MAX( NTINY, NMIN )
+*
+* ==== Nibble crossover point ====
+*
+ NIBBLE = ILAENV( 14, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ NIBBLE = MAX( 0, NIBBLE )
+*
+* ==== Accumulate reflections during ttswp? Use block
+* . 2-by-2 structure during matrix-matrix multiply? ====
+*
+ KACC22 = ILAENV( 16, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK )
+ KACC22 = MAX( 0, KACC22 )
+ KACC22 = MIN( 2, KACC22 )
+*
+* ==== NWMAX = the largest possible deflation window for
+* . which there is sufficient workspace. ====
+*
+ NWMAX = MIN( ( N-1 ) / 3, LWORK / 2 )
+*
+* ==== NSMAX = the Largest number of simultaneous shifts
+* . for which there is sufficient workspace. ====
+*
+ NSMAX = MIN( ( N+6 ) / 9, 2*LWORK / 3 )
+ NSMAX = NSMAX - MOD( NSMAX, 2 )
+*
+* ==== NDFL: an iteration count restarted at deflation. ====
+*
+ NDFL = 1
+*
+* ==== ITMAX = iteration limit ====
+*
+ ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) )
+*
+* ==== Last row and column in the active block ====
+*
+ KBOT = IHI
+*
+* ==== Main Loop ====
+*
+ DO 70 IT = 1, ITMAX
+*
+* ==== Done when KBOT falls below ILO ====
+*
+ IF( KBOT.LT.ILO )
+ $ GO TO 80
+*
+* ==== Locate active block ====
+*
+ DO 10 K = KBOT, ILO + 1, -1
+ IF( H( K, K-1 ).EQ.ZERO )
+ $ GO TO 20
+ 10 CONTINUE
+ K = ILO
+ 20 CONTINUE
+ KTOP = K
+*
+* ==== Select deflation window size ====
+*
+ NH = KBOT - KTOP + 1
+ IF( NDFL.LT.KEXNW .OR. NH.LT.NW ) THEN
+*
+* ==== Typical deflation window. If possible and
+* . advisable, nibble the entire active block.
+* . If not, use size NWR or NWR+1 depending upon
+* . which has the smaller corresponding subdiagonal
+* . entry (a heuristic). ====
+*
+ NWINC = .TRUE.
+ IF( NH.LE.MIN( NMIN, NWMAX ) ) THEN
+ NW = NH
+ ELSE
+ NW = MIN( NWR, NH, NWMAX )
+ IF( NW.LT.NWMAX ) THEN
+ IF( NW.GE.NH-1 ) THEN
+ NW = NH
+ ELSE
+ KWTOP = KBOT - NW + 1
+ IF( CABS1( H( KWTOP, KWTOP-1 ) ).GT.
+ $ CABS1( H( KWTOP-1, KWTOP-2 ) ) )NW = NW + 1
+ END IF
+ END IF
+ END IF
+ ELSE
+*
+* ==== Exceptional deflation window. If there have
+* . been no deflations in KEXNW or more iterations,
+* . then vary the deflation window size. At first,
+* . because, larger windows are, in general, more
+* . powerful than smaller ones, rapidly increase the
+* . window up to the maximum reasonable and possible.
+* . Then maybe try a slightly smaller window. ====
+*
+ IF( NWINC .AND. NW.LT.MIN( NWMAX, NH ) ) THEN
+ NW = MIN( NWMAX, NH, 2*NW )
+ ELSE
+ NWINC = .FALSE.
+ IF( NW.EQ.NH .AND. NH.GT.2 )
+ $ NW = NH - 1
+ END IF
+ END IF
+*
+* ==== Aggressive early deflation:
+* . split workspace under the subdiagonal into
+* . - an nw-by-nw work array V in the lower
+* . left-hand-corner,
+* . - an NW-by-at-least-NW-but-more-is-better
+* . (NW-by-NHO) horizontal work array along
+* . the bottom edge,
+* . - an at-least-NW-but-more-is-better (NHV-by-NW)
+* . vertical work array along the left-hand-edge.
+* . ====
+*
+ KV = N - NW + 1
+ KT = NW + 1
+ NHO = ( N-NW-1 ) - KT + 1
+ KWV = NW + 2
+ NVE = ( N-NW ) - KWV + 1
+*
+* ==== Aggressive early deflation ====
+*
+ CALL ZLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
+ $ IHIZ, Z, LDZ, LS, LD, W, H( KV, 1 ), LDH, NHO,
+ $ H( KV, KT ), LDH, NVE, H( KWV, 1 ), LDH, WORK,
+ $ LWORK )
+*
+* ==== Adjust KBOT accounting for new deflations. ====
+*
+ KBOT = KBOT - LD
+*
+* ==== KS points to the shifts. ====
+*
+ KS = KBOT - LS + 1
+*
+* ==== Skip an expensive QR sweep if there is a (partly
+* . heuristic) reason to expect that many eigenvalues
+* . will deflate without it. Here, the QR sweep is
+* . skipped if many eigenvalues have just been deflated
+* . or if the remaining active block is small.
+*
+ IF( ( LD.EQ.0 ) .OR. ( ( 100*LD.LE.NW*NIBBLE ) .AND. ( KBOT-
+ $ KTOP+1.GT.MIN( NMIN, NWMAX ) ) ) ) THEN
+*
+* ==== NS = nominal number of simultaneous shifts.
+* . This may be lowered (slightly) if ZLAQR2
+* . did not provide that many shifts. ====
+*
+ NS = MIN( NSMAX, NSR, MAX( 2, KBOT-KTOP ) )
+ NS = NS - MOD( NS, 2 )
+*
+* ==== If there have been no deflations
+* . in a multiple of KEXSH iterations,
+* . then try exceptional shifts.
+* . Otherwise use shifts provided by
+* . ZLAQR2 above or from the eigenvalues
+* . of a trailing principal submatrix. ====
+*
+ IF( MOD( NDFL, KEXSH ).EQ.0 ) THEN
+ KS = KBOT - NS + 1
+ DO 30 I = KBOT, KS + 1, -2
+ W( I ) = H( I, I ) + WILK1*CABS1( H( I, I-1 ) )
+ W( I-1 ) = W( I )
+ 30 CONTINUE
+ ELSE
+*
+* ==== Got NS/2 or fewer shifts? Use ZLAHQR
+* . on a trailing principal submatrix to
+* . get more. (Since NS.LE.NSMAX.LE.(N+6)/9,
+* . there is enough space below the subdiagonal
+* . to fit an NS-by-NS scratch array.) ====
+*
+ IF( KBOT-KS+1.LE.NS / 2 ) THEN
+ KS = KBOT - NS + 1
+ KT = N - NS + 1
+ CALL ZLACPY( 'A', NS, NS, H( KS, KS ), LDH,
+ $ H( KT, 1 ), LDH )
+ CALL ZLAHQR( .false., .false., NS, 1, NS,
+ $ H( KT, 1 ), LDH, W( KS ), 1, 1, ZDUM,
+ $ 1, INF )
+ KS = KS + INF
+*
+* ==== In case of a rare QR failure use
+* . eigenvalues of the trailing 2-by-2
+* . principal submatrix. Scale to avoid
+* . overflows, underflows and subnormals.
+* . (The scale factor S can not be zero,
+* . because H(KBOT,KBOT-1) is nonzero.) ====
+*
+ IF( KS.GE.KBOT ) THEN
+ S = CABS1( H( KBOT-1, KBOT-1 ) ) +
+ $ CABS1( H( KBOT, KBOT-1 ) ) +
+ $ CABS1( H( KBOT-1, KBOT ) ) +
+ $ CABS1( H( KBOT, KBOT ) )
+ AA = H( KBOT-1, KBOT-1 ) / S
+ CC = H( KBOT, KBOT-1 ) / S
+ BB = H( KBOT-1, KBOT ) / S
+ DD = H( KBOT, KBOT ) / S
+ TR2 = ( AA+DD ) / TWO
+ DET = ( AA-TR2 )*( DD-TR2 ) - BB*CC
+ RTDISC = SQRT( -DET )
+ W( KBOT-1 ) = ( TR2+RTDISC )*S
+ W( KBOT ) = ( TR2-RTDISC )*S
+*
+ KS = KBOT - 1
+ END IF
+ END IF
+*
+ IF( KBOT-KS+1.GT.NS ) THEN
+*
+* ==== Sort the shifts (Helps a little) ====
+*
+ SORTED = .false.
+ DO 50 K = KBOT, KS + 1, -1
+ IF( SORTED )
+ $ GO TO 60
+ SORTED = .true.
+ DO 40 I = KS, K - 1
+ IF( CABS1( W( I ) ).LT.CABS1( W( I+1 ) ) )
+ $ THEN
+ SORTED = .false.
+ SWAP = W( I )
+ W( I ) = W( I+1 )
+ W( I+1 ) = SWAP
+ END IF
+ 40 CONTINUE
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+ END IF
+*
+* ==== If there are only two shifts, then use
+* . only one. ====
+*
+ IF( KBOT-KS+1.EQ.2 ) THEN
+ IF( CABS1( W( KBOT )-H( KBOT, KBOT ) ).LT.
+ $ CABS1( W( KBOT-1 )-H( KBOT, KBOT ) ) ) THEN
+ W( KBOT-1 ) = W( KBOT )
+ ELSE
+ W( KBOT ) = W( KBOT-1 )
+ END IF
+ END IF
+*
+* ==== Use up to NS of the the smallest magnatiude
+* . shifts. If there aren't NS shifts available,
+* . then use them all, possibly dropping one to
+* . make the number of shifts even. ====
+*
+ NS = MIN( NS, KBOT-KS+1 )
+ NS = NS - MOD( NS, 2 )
+ KS = KBOT - NS + 1
+*
+* ==== Small-bulge multi-shift QR sweep:
+* . split workspace under the subdiagonal into
+* . - a KDU-by-KDU work array U in the lower
+* . left-hand-corner,
+* . - a KDU-by-at-least-KDU-but-more-is-better
+* . (KDU-by-NHo) horizontal work array WH along
+* . the bottom edge,
+* . - and an at-least-KDU-but-more-is-better-by-KDU
+* . (NVE-by-KDU) vertical work WV arrow along
+* . the left-hand-edge. ====
+*
+ KDU = 3*NS - 3
+ KU = N - KDU + 1
+ KWH = KDU + 1
+ NHO = ( N-KDU+1-4 ) - ( KDU+1 ) + 1
+ KWV = KDU + 4
+ NVE = N - KDU - KWV + 1
+*
+* ==== Small-bulge multi-shift QR sweep ====
+*
+ CALL ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NS,
+ $ W( KS ), H, LDH, ILOZ, IHIZ, Z, LDZ, WORK,
+ $ 3, H( KU, 1 ), LDH, NVE, H( KWV, 1 ), LDH,
+ $ NHO, H( KU, KWH ), LDH )
+ END IF
+*
+* ==== Note progress (or the lack of it). ====
+*
+ IF( LD.GT.0 ) THEN
+ NDFL = 1
+ ELSE
+ NDFL = NDFL + 1
+ END IF
+*
+* ==== End of main loop ====
+ 70 CONTINUE
+*
+* ==== Iteration limit exceeded. Set INFO to show where
+* . the problem occurred and exit. ====
+*
+ INFO = KBOT
+ 80 CONTINUE
+ END IF
+*
+* ==== Return the optimal value of LWORK. ====
+*
+ WORK( 1 ) = DCMPLX( LWKOPT, 0 )
+*
+* ==== End of ZLAQR4 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaqr5.f b/2.3-1/src/fortran/lapack/zlaqr5.f
new file mode 100644
index 00000000..fa8de7bb
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaqr5.f
@@ -0,0 +1,809 @@
+ SUBROUTINE ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
+ $ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV,
+ $ WV, LDWV, NH, WH, LDWH )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,
+ $ LDWH, LDWV, LDZ, N, NH, NSHFTS, NV
+ LOGICAL WANTT, WANTZ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ),
+ $ WH( LDWH, * ), WV( LDWV, * ), Z( LDZ, * )
+* ..
+*
+* This auxiliary subroutine called by ZLAQR0 performs a
+* single small-bulge multi-shift QR sweep.
+*
+* WANTT (input) logical scalar
+* WANTT = .true. if the triangular Schur factor
+* is being computed. WANTT is set to .false. otherwise.
+*
+* WANTZ (input) logical scalar
+* WANTZ = .true. if the unitary Schur factor is being
+* computed. WANTZ is set to .false. otherwise.
+*
+* KACC22 (input) integer with value 0, 1, or 2.
+* Specifies the computation mode of far-from-diagonal
+* orthogonal updates.
+* = 0: ZLAQR5 does not accumulate reflections and does not
+* use matrix-matrix multiply to update far-from-diagonal
+* matrix entries.
+* = 1: ZLAQR5 accumulates reflections and uses matrix-matrix
+* multiply to update the far-from-diagonal matrix entries.
+* = 2: ZLAQR5 accumulates reflections, uses matrix-matrix
+* multiply to update the far-from-diagonal matrix entries,
+* and takes advantage of 2-by-2 block structure during
+* matrix multiplies.
+*
+* N (input) integer scalar
+* N is the order of the Hessenberg matrix H upon which this
+* subroutine operates.
+*
+* KTOP (input) integer scalar
+* KBOT (input) integer scalar
+* These are the first and last rows and columns of an
+* isolated diagonal block upon which the QR sweep is to be
+* applied. It is assumed without a check that
+* either KTOP = 1 or H(KTOP,KTOP-1) = 0
+* and
+* either KBOT = N or H(KBOT+1,KBOT) = 0.
+*
+* NSHFTS (input) integer scalar
+* NSHFTS gives the number of simultaneous shifts. NSHFTS
+* must be positive and even.
+*
+* S (input) COMPLEX*16 array of size (NSHFTS)
+* S contains the shifts of origin that define the multi-
+* shift QR sweep.
+*
+* H (input/output) COMPLEX*16 array of size (LDH,N)
+* On input H contains a Hessenberg matrix. On output a
+* multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied
+* to the isolated diagonal block in rows and columns KTOP
+* through KBOT.
+*
+* LDH (input) integer scalar
+* LDH is the leading dimension of H just as declared in the
+* calling procedure. LDH.GE.MAX(1,N).
+*
+* ILOZ (input) INTEGER
+* IHIZ (input) INTEGER
+* Specify the rows of Z to which transformations must be
+* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N
+*
+* Z (input/output) COMPLEX*16 array of size (LDZ,IHI)
+* If WANTZ = .TRUE., then the QR Sweep unitary
+* similarity transformation is accumulated into
+* Z(ILOZ:IHIZ,ILO:IHI) from the right.
+* If WANTZ = .FALSE., then Z is unreferenced.
+*
+* LDZ (input) integer scalar
+* LDA is the leading dimension of Z just as declared in
+* the calling procedure. LDZ.GE.N.
+*
+* V (workspace) COMPLEX*16 array of size (LDV,NSHFTS/2)
+*
+* LDV (input) integer scalar
+* LDV is the leading dimension of V as declared in the
+* calling procedure. LDV.GE.3.
+*
+* U (workspace) COMPLEX*16 array of size
+* (LDU,3*NSHFTS-3)
+*
+* LDU (input) integer scalar
+* LDU is the leading dimension of U just as declared in the
+* in the calling subroutine. LDU.GE.3*NSHFTS-3.
+*
+* NH (input) integer scalar
+* NH is the number of columns in array WH available for
+* workspace. NH.GE.1.
+*
+* WH (workspace) COMPLEX*16 array of size (LDWH,NH)
+*
+* LDWH (input) integer scalar
+* Leading dimension of WH just as declared in the
+* calling procedure. LDWH.GE.3*NSHFTS-3.
+*
+* NV (input) integer scalar
+* NV is the number of rows in WV agailable for workspace.
+* NV.GE.1.
+*
+* WV (workspace) COMPLEX*16 array of size
+* (LDWV,3*NSHFTS-3)
+*
+* LDWV (input) integer scalar
+* LDWV is the leading dimension of WV as declared in the
+* in the calling subroutine. LDWV.GE.NV.
+*
+* ================================================================
+* Based on contributions by
+* Karen Braman and Ralph Byers, Department of Mathematics,
+* University of Kansas, USA
+*
+* ============================================================
+* Reference:
+*
+* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
+* Algorithm Part I: Maintaining Well Focused Shifts, and
+* Level 3 Performance, SIAM Journal of Matrix Analysis,
+* volume 23, pages 929--947, 2002.
+*
+* ============================================================
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
+ $ ONE = ( 1.0d0, 0.0d0 ) )
+ DOUBLE PRECISION RZERO, RONE
+ PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0 )
+* ..
+* .. Local Scalars ..
+ COMPLEX*16 ALPHA, BETA, CDUM, REFSUM
+ DOUBLE PRECISION H11, H12, H21, H22, SAFMAX, SAFMIN, SCL,
+ $ SMLNUM, TST1, TST2, ULP
+ INTEGER I2, I4, INCOL, J, J2, J4, JBOT, JCOL, JLEN,
+ $ JROW, JTOP, K, K1, KDU, KMS, KNZ, KRCOL, KZS,
+ $ M, M22, MBOT, MEND, MSTART, MTOP, NBMPS, NDCOL,
+ $ NS, NU
+ LOGICAL ACCUM, BLK22, BMP22
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Intrinsic Functions ..
+*
+ INTRINSIC ABS, DBLE, DCONJG, DIMAG, MAX, MIN, MOD
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 VT( 3 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, ZGEMM, ZLACPY, ZLAQR1, ZLARFG, ZLASET,
+ $ ZTRMM
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* ==== If there are no shifts, then there is nothing to do. ====
+*
+ IF( NSHFTS.LT.2 )
+ $ RETURN
+*
+* ==== If the active block is empty or 1-by-1, then there
+* . is nothing to do. ====
+*
+ IF( KTOP.GE.KBOT )
+ $ RETURN
+*
+* ==== NSHFTS is supposed to be even, but if is odd,
+* . then simply reduce it by one. ====
+*
+ NS = NSHFTS - MOD( NSHFTS, 2 )
+*
+* ==== Machine constants for deflation ====
+*
+ SAFMIN = DLAMCH( 'SAFE MINIMUM' )
+ SAFMAX = RONE / SAFMIN
+ CALL DLABAD( SAFMIN, SAFMAX )
+ ULP = DLAMCH( 'PRECISION' )
+ SMLNUM = SAFMIN*( DBLE( N ) / ULP )
+*
+* ==== Use accumulated reflections to update far-from-diagonal
+* . entries ? ====
+*
+ ACCUM = ( KACC22.EQ.1 ) .OR. ( KACC22.EQ.2 )
+*
+* ==== If so, exploit the 2-by-2 block structure? ====
+*
+ BLK22 = ( NS.GT.2 ) .AND. ( KACC22.EQ.2 )
+*
+* ==== clear trash ====
+*
+ IF( KTOP+2.LE.KBOT )
+ $ H( KTOP+2, KTOP ) = ZERO
+*
+* ==== NBMPS = number of 2-shift bulges in the chain ====
+*
+ NBMPS = NS / 2
+*
+* ==== KDU = width of slab ====
+*
+ KDU = 6*NBMPS - 3
+*
+* ==== Create and chase chains of NBMPS bulges ====
+*
+ DO 210 INCOL = 3*( 1-NBMPS ) + KTOP - 1, KBOT - 2, 3*NBMPS - 2
+ NDCOL = INCOL + KDU
+ IF( ACCUM )
+ $ CALL ZLASET( 'ALL', KDU, KDU, ZERO, ONE, U, LDU )
+*
+* ==== Near-the-diagonal bulge chase. The following loop
+* . performs the near-the-diagonal part of a small bulge
+* . multi-shift QR sweep. Each 6*NBMPS-2 column diagonal
+* . chunk extends from column INCOL to column NDCOL
+* . (including both column INCOL and column NDCOL). The
+* . following loop chases a 3*NBMPS column long chain of
+* . NBMPS bulges 3*NBMPS-2 columns to the right. (INCOL
+* . may be less than KTOP and and NDCOL may be greater than
+* . KBOT indicating phantom columns from which to chase
+* . bulges before they are actually introduced or to which
+* . to chase bulges beyond column KBOT.) ====
+*
+ DO 140 KRCOL = INCOL, MIN( INCOL+3*NBMPS-3, KBOT-2 )
+*
+* ==== Bulges number MTOP to MBOT are active double implicit
+* . shift bulges. There may or may not also be small
+* . 2-by-2 bulge, if there is room. The inactive bulges
+* . (if any) must wait until the active bulges have moved
+* . down the diagonal to make room. The phantom matrix
+* . paradigm described above helps keep track. ====
+*
+ MTOP = MAX( 1, ( ( KTOP-1 )-KRCOL+2 ) / 3+1 )
+ MBOT = MIN( NBMPS, ( KBOT-KRCOL ) / 3 )
+ M22 = MBOT + 1
+ BMP22 = ( MBOT.LT.NBMPS ) .AND. ( KRCOL+3*( M22-1 ) ).EQ.
+ $ ( KBOT-2 )
+*
+* ==== Generate reflections to chase the chain right
+* . one column. (The minimum value of K is KTOP-1.) ====
+*
+ DO 10 M = MTOP, MBOT
+ K = KRCOL + 3*( M-1 )
+ IF( K.EQ.KTOP-1 ) THEN
+ CALL ZLAQR1( 3, H( KTOP, KTOP ), LDH, S( 2*M-1 ),
+ $ S( 2*M ), V( 1, M ) )
+ ALPHA = V( 1, M )
+ CALL ZLARFG( 3, ALPHA, V( 2, M ), 1, V( 1, M ) )
+ ELSE
+ BETA = H( K+1, K )
+ V( 2, M ) = H( K+2, K )
+ V( 3, M ) = H( K+3, K )
+ CALL ZLARFG( 3, BETA, V( 2, M ), 1, V( 1, M ) )
+*
+* ==== A Bulge may collapse because of vigilant
+* . deflation or destructive underflow. (The
+* . initial bulge is always collapsed.) Use
+* . the two-small-subdiagonals trick to try
+* . to get it started again. If V(2,M).NE.0 and
+* . V(3,M) = H(K+3,K+1) = H(K+3,K+2) = 0, then
+* . this bulge is collapsing into a zero
+* . subdiagonal. It will be restarted next
+* . trip through the loop.)
+*
+ IF( V( 1, M ).NE.ZERO .AND.
+ $ ( V( 3, M ).NE.ZERO .OR. ( H( K+3,
+ $ K+1 ).EQ.ZERO .AND. H( K+3, K+2 ).EQ.ZERO ) ) )
+ $ THEN
+*
+* ==== Typical case: not collapsed (yet). ====
+*
+ H( K+1, K ) = BETA
+ H( K+2, K ) = ZERO
+ H( K+3, K ) = ZERO
+ ELSE
+*
+* ==== Atypical case: collapsed. Attempt to
+* . reintroduce ignoring H(K+1,K). If the
+* . fill resulting from the new reflector
+* . is too large, then abandon it.
+* . Otherwise, use the new one. ====
+*
+ CALL ZLAQR1( 3, H( K+1, K+1 ), LDH, S( 2*M-1 ),
+ $ S( 2*M ), VT )
+ SCL = CABS1( VT( 1 ) ) + CABS1( VT( 2 ) ) +
+ $ CABS1( VT( 3 ) )
+ IF( SCL.NE.RZERO ) THEN
+ VT( 1 ) = VT( 1 ) / SCL
+ VT( 2 ) = VT( 2 ) / SCL
+ VT( 3 ) = VT( 3 ) / SCL
+ END IF
+*
+* ==== The following is the traditional and
+* . conservative two-small-subdiagonals
+* . test. ====
+* .
+ IF( CABS1( H( K+1, K ) )*
+ $ ( CABS1( VT( 2 ) )+CABS1( VT( 3 ) ) ).GT.ULP*
+ $ CABS1( VT( 1 ) )*( CABS1( H( K,
+ $ K ) )+CABS1( H( K+1, K+1 ) )+CABS1( H( K+2,
+ $ K+2 ) ) ) ) THEN
+*
+* ==== Starting a new bulge here would
+* . create non-negligible fill. If
+* . the old reflector is diagonal (only
+* . possible with underflows), then
+* . change it to I. Otherwise, use
+* . it with trepidation. ====
+*
+ IF( V( 2, M ).EQ.ZERO .AND. V( 3, M ).EQ.ZERO )
+ $ THEN
+ V( 1, M ) = ZERO
+ ELSE
+ H( K+1, K ) = BETA
+ H( K+2, K ) = ZERO
+ H( K+3, K ) = ZERO
+ END IF
+ ELSE
+*
+* ==== Stating a new bulge here would
+* . create only negligible fill.
+* . Replace the old reflector with
+* . the new one. ====
+*
+ ALPHA = VT( 1 )
+ CALL ZLARFG( 3, ALPHA, VT( 2 ), 1, VT( 1 ) )
+ REFSUM = H( K+1, K ) +
+ $ H( K+2, K )*DCONJG( VT( 2 ) ) +
+ $ H( K+3, K )*DCONJG( VT( 3 ) )
+ H( K+1, K ) = H( K+1, K ) -
+ $ DCONJG( VT( 1 ) )*REFSUM
+ H( K+2, K ) = ZERO
+ H( K+3, K ) = ZERO
+ V( 1, M ) = VT( 1 )
+ V( 2, M ) = VT( 2 )
+ V( 3, M ) = VT( 3 )
+ END IF
+ END IF
+ END IF
+ 10 CONTINUE
+*
+* ==== Generate a 2-by-2 reflection, if needed. ====
+*
+ K = KRCOL + 3*( M22-1 )
+ IF( BMP22 ) THEN
+ IF( K.EQ.KTOP-1 ) THEN
+ CALL ZLAQR1( 2, H( K+1, K+1 ), LDH, S( 2*M22-1 ),
+ $ S( 2*M22 ), V( 1, M22 ) )
+ BETA = V( 1, M22 )
+ CALL ZLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) )
+ ELSE
+ BETA = H( K+1, K )
+ V( 2, M22 ) = H( K+2, K )
+ CALL ZLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) )
+ H( K+1, K ) = BETA
+ H( K+2, K ) = ZERO
+ END IF
+ ELSE
+*
+* ==== Initialize V(1,M22) here to avoid possible undefined
+* . variable problems later. ====
+*
+ V( 1, M22 ) = ZERO
+ END IF
+*
+* ==== Multiply H by reflections from the left ====
+*
+ IF( ACCUM ) THEN
+ JBOT = MIN( NDCOL, KBOT )
+ ELSE IF( WANTT ) THEN
+ JBOT = N
+ ELSE
+ JBOT = KBOT
+ END IF
+ DO 30 J = MAX( KTOP, KRCOL ), JBOT
+ MEND = MIN( MBOT, ( J-KRCOL+2 ) / 3 )
+ DO 20 M = MTOP, MEND
+ K = KRCOL + 3*( M-1 )
+ REFSUM = DCONJG( V( 1, M ) )*
+ $ ( H( K+1, J )+DCONJG( V( 2, M ) )*
+ $ H( K+2, J )+DCONJG( V( 3, M ) )*H( K+3, J ) )
+ H( K+1, J ) = H( K+1, J ) - REFSUM
+ H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M )
+ H( K+3, J ) = H( K+3, J ) - REFSUM*V( 3, M )
+ 20 CONTINUE
+ 30 CONTINUE
+ IF( BMP22 ) THEN
+ K = KRCOL + 3*( M22-1 )
+ DO 40 J = MAX( K+1, KTOP ), JBOT
+ REFSUM = DCONJG( V( 1, M22 ) )*
+ $ ( H( K+1, J )+DCONJG( V( 2, M22 ) )*
+ $ H( K+2, J ) )
+ H( K+1, J ) = H( K+1, J ) - REFSUM
+ H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M22 )
+ 40 CONTINUE
+ END IF
+*
+* ==== Multiply H by reflections from the right.
+* . Delay filling in the last row until the
+* . vigilant deflation check is complete. ====
+*
+ IF( ACCUM ) THEN
+ JTOP = MAX( KTOP, INCOL )
+ ELSE IF( WANTT ) THEN
+ JTOP = 1
+ ELSE
+ JTOP = KTOP
+ END IF
+ DO 80 M = MTOP, MBOT
+ IF( V( 1, M ).NE.ZERO ) THEN
+ K = KRCOL + 3*( M-1 )
+ DO 50 J = JTOP, MIN( KBOT, K+3 )
+ REFSUM = V( 1, M )*( H( J, K+1 )+V( 2, M )*
+ $ H( J, K+2 )+V( 3, M )*H( J, K+3 ) )
+ H( J, K+1 ) = H( J, K+1 ) - REFSUM
+ H( J, K+2 ) = H( J, K+2 ) -
+ $ REFSUM*DCONJG( V( 2, M ) )
+ H( J, K+3 ) = H( J, K+3 ) -
+ $ REFSUM*DCONJG( V( 3, M ) )
+ 50 CONTINUE
+*
+ IF( ACCUM ) THEN
+*
+* ==== Accumulate U. (If necessary, update Z later
+* . with with an efficient matrix-matrix
+* . multiply.) ====
+*
+ KMS = K - INCOL
+ DO 60 J = MAX( 1, KTOP-INCOL ), KDU
+ REFSUM = V( 1, M )*( U( J, KMS+1 )+V( 2, M )*
+ $ U( J, KMS+2 )+V( 3, M )*U( J, KMS+3 ) )
+ U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
+ U( J, KMS+2 ) = U( J, KMS+2 ) -
+ $ REFSUM*DCONJG( V( 2, M ) )
+ U( J, KMS+3 ) = U( J, KMS+3 ) -
+ $ REFSUM*DCONJG( V( 3, M ) )
+ 60 CONTINUE
+ ELSE IF( WANTZ ) THEN
+*
+* ==== U is not accumulated, so update Z
+* . now by multiplying by reflections
+* . from the right. ====
+*
+ DO 70 J = ILOZ, IHIZ
+ REFSUM = V( 1, M )*( Z( J, K+1 )+V( 2, M )*
+ $ Z( J, K+2 )+V( 3, M )*Z( J, K+3 ) )
+ Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
+ Z( J, K+2 ) = Z( J, K+2 ) -
+ $ REFSUM*DCONJG( V( 2, M ) )
+ Z( J, K+3 ) = Z( J, K+3 ) -
+ $ REFSUM*DCONJG( V( 3, M ) )
+ 70 CONTINUE
+ END IF
+ END IF
+ 80 CONTINUE
+*
+* ==== Special case: 2-by-2 reflection (if needed) ====
+*
+ K = KRCOL + 3*( M22-1 )
+ IF( BMP22 .AND. ( V( 1, M22 ).NE.ZERO ) ) THEN
+ DO 90 J = JTOP, MIN( KBOT, K+3 )
+ REFSUM = V( 1, M22 )*( H( J, K+1 )+V( 2, M22 )*
+ $ H( J, K+2 ) )
+ H( J, K+1 ) = H( J, K+1 ) - REFSUM
+ H( J, K+2 ) = H( J, K+2 ) -
+ $ REFSUM*DCONJG( V( 2, M22 ) )
+ 90 CONTINUE
+*
+ IF( ACCUM ) THEN
+ KMS = K - INCOL
+ DO 100 J = MAX( 1, KTOP-INCOL ), KDU
+ REFSUM = V( 1, M22 )*( U( J, KMS+1 )+V( 2, M22 )*
+ $ U( J, KMS+2 ) )
+ U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
+ U( J, KMS+2 ) = U( J, KMS+2 ) -
+ $ REFSUM*DCONJG( V( 2, M22 ) )
+ 100 CONTINUE
+ ELSE IF( WANTZ ) THEN
+ DO 110 J = ILOZ, IHIZ
+ REFSUM = V( 1, M22 )*( Z( J, K+1 )+V( 2, M22 )*
+ $ Z( J, K+2 ) )
+ Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
+ Z( J, K+2 ) = Z( J, K+2 ) -
+ $ REFSUM*DCONJG( V( 2, M22 ) )
+ 110 CONTINUE
+ END IF
+ END IF
+*
+* ==== Vigilant deflation check ====
+*
+ MSTART = MTOP
+ IF( KRCOL+3*( MSTART-1 ).LT.KTOP )
+ $ MSTART = MSTART + 1
+ MEND = MBOT
+ IF( BMP22 )
+ $ MEND = MEND + 1
+ IF( KRCOL.EQ.KBOT-2 )
+ $ MEND = MEND + 1
+ DO 120 M = MSTART, MEND
+ K = MIN( KBOT-1, KRCOL+3*( M-1 ) )
+*
+* ==== The following convergence test requires that
+* . the tradition small-compared-to-nearby-diagonals
+* . criterion and the Ahues & Tisseur (LAWN 122, 1997)
+* . criteria both be satisfied. The latter improves
+* . accuracy in some examples. Falling back on an
+* . alternate convergence criterion when TST1 or TST2
+* . is zero (as done here) is traditional but probably
+* . unnecessary. ====
+*
+ IF( H( K+1, K ).NE.ZERO ) THEN
+ TST1 = CABS1( H( K, K ) ) + CABS1( H( K+1, K+1 ) )
+ IF( TST1.EQ.RZERO ) THEN
+ IF( K.GE.KTOP+1 )
+ $ TST1 = TST1 + CABS1( H( K, K-1 ) )
+ IF( K.GE.KTOP+2 )
+ $ TST1 = TST1 + CABS1( H( K, K-2 ) )
+ IF( K.GE.KTOP+3 )
+ $ TST1 = TST1 + CABS1( H( K, K-3 ) )
+ IF( K.LE.KBOT-2 )
+ $ TST1 = TST1 + CABS1( H( K+2, K+1 ) )
+ IF( K.LE.KBOT-3 )
+ $ TST1 = TST1 + CABS1( H( K+3, K+1 ) )
+ IF( K.LE.KBOT-4 )
+ $ TST1 = TST1 + CABS1( H( K+4, K+1 ) )
+ END IF
+ IF( CABS1( H( K+1, K ) ).LE.MAX( SMLNUM, ULP*TST1 ) )
+ $ THEN
+ H12 = MAX( CABS1( H( K+1, K ) ),
+ $ CABS1( H( K, K+1 ) ) )
+ H21 = MIN( CABS1( H( K+1, K ) ),
+ $ CABS1( H( K, K+1 ) ) )
+ H11 = MAX( CABS1( H( K+1, K+1 ) ),
+ $ CABS1( H( K, K )-H( K+1, K+1 ) ) )
+ H22 = MIN( CABS1( H( K+1, K+1 ) ),
+ $ CABS1( H( K, K )-H( K+1, K+1 ) ) )
+ SCL = H11 + H12
+ TST2 = H22*( H11 / SCL )
+*
+ IF( TST2.EQ.RZERO .OR. H21*( H12 / SCL ).LE.
+ $ MAX( SMLNUM, ULP*TST2 ) )H( K+1, K ) = ZERO
+ END IF
+ END IF
+ 120 CONTINUE
+*
+* ==== Fill in the last row of each bulge. ====
+*
+ MEND = MIN( NBMPS, ( KBOT-KRCOL-1 ) / 3 )
+ DO 130 M = MTOP, MEND
+ K = KRCOL + 3*( M-1 )
+ REFSUM = V( 1, M )*V( 3, M )*H( K+4, K+3 )
+ H( K+4, K+1 ) = -REFSUM
+ H( K+4, K+2 ) = -REFSUM*DCONJG( V( 2, M ) )
+ H( K+4, K+3 ) = H( K+4, K+3 ) -
+ $ REFSUM*DCONJG( V( 3, M ) )
+ 130 CONTINUE
+*
+* ==== End of near-the-diagonal bulge chase. ====
+*
+ 140 CONTINUE
+*
+* ==== Use U (if accumulated) to update far-from-diagonal
+* . entries in H. If required, use U to update Z as
+* . well. ====
+*
+ IF( ACCUM ) THEN
+ IF( WANTT ) THEN
+ JTOP = 1
+ JBOT = N
+ ELSE
+ JTOP = KTOP
+ JBOT = KBOT
+ END IF
+ IF( ( .NOT.BLK22 ) .OR. ( INCOL.LT.KTOP ) .OR.
+ $ ( NDCOL.GT.KBOT ) .OR. ( NS.LE.2 ) ) THEN
+*
+* ==== Updates not exploiting the 2-by-2 block
+* . structure of U. K1 and NU keep track of
+* . the location and size of U in the special
+* . cases of introducing bulges and chasing
+* . bulges off the bottom. In these special
+* . cases and in case the number of shifts
+* . is NS = 2, there is no 2-by-2 block
+* . structure to exploit. ====
+*
+ K1 = MAX( 1, KTOP-INCOL )
+ NU = ( KDU-MAX( 0, NDCOL-KBOT ) ) - K1 + 1
+*
+* ==== Horizontal Multiply ====
+*
+ DO 150 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH
+ JLEN = MIN( NH, JBOT-JCOL+1 )
+ CALL ZGEMM( 'C', 'N', NU, JLEN, NU, ONE, U( K1, K1 ),
+ $ LDU, H( INCOL+K1, JCOL ), LDH, ZERO, WH,
+ $ LDWH )
+ CALL ZLACPY( 'ALL', NU, JLEN, WH, LDWH,
+ $ H( INCOL+K1, JCOL ), LDH )
+ 150 CONTINUE
+*
+* ==== Vertical multiply ====
+*
+ DO 160 JROW = JTOP, MAX( KTOP, INCOL ) - 1, NV
+ JLEN = MIN( NV, MAX( KTOP, INCOL )-JROW )
+ CALL ZGEMM( 'N', 'N', JLEN, NU, NU, ONE,
+ $ H( JROW, INCOL+K1 ), LDH, U( K1, K1 ),
+ $ LDU, ZERO, WV, LDWV )
+ CALL ZLACPY( 'ALL', JLEN, NU, WV, LDWV,
+ $ H( JROW, INCOL+K1 ), LDH )
+ 160 CONTINUE
+*
+* ==== Z multiply (also vertical) ====
+*
+ IF( WANTZ ) THEN
+ DO 170 JROW = ILOZ, IHIZ, NV
+ JLEN = MIN( NV, IHIZ-JROW+1 )
+ CALL ZGEMM( 'N', 'N', JLEN, NU, NU, ONE,
+ $ Z( JROW, INCOL+K1 ), LDZ, U( K1, K1 ),
+ $ LDU, ZERO, WV, LDWV )
+ CALL ZLACPY( 'ALL', JLEN, NU, WV, LDWV,
+ $ Z( JROW, INCOL+K1 ), LDZ )
+ 170 CONTINUE
+ END IF
+ ELSE
+*
+* ==== Updates exploiting U's 2-by-2 block structure.
+* . (I2, I4, J2, J4 are the last rows and columns
+* . of the blocks.) ====
+*
+ I2 = ( KDU+1 ) / 2
+ I4 = KDU
+ J2 = I4 - I2
+ J4 = KDU
+*
+* ==== KZS and KNZ deal with the band of zeros
+* . along the diagonal of one of the triangular
+* . blocks. ====
+*
+ KZS = ( J4-J2 ) - ( NS+1 )
+ KNZ = NS + 1
+*
+* ==== Horizontal multiply ====
+*
+ DO 180 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH
+ JLEN = MIN( NH, JBOT-JCOL+1 )
+*
+* ==== Copy bottom of H to top+KZS of scratch ====
+* (The first KZS rows get multiplied by zero.) ====
+*
+ CALL ZLACPY( 'ALL', KNZ, JLEN, H( INCOL+1+J2, JCOL ),
+ $ LDH, WH( KZS+1, 1 ), LDWH )
+*
+* ==== Multiply by U21' ====
+*
+ CALL ZLASET( 'ALL', KZS, JLEN, ZERO, ZERO, WH, LDWH )
+ CALL ZTRMM( 'L', 'U', 'C', 'N', KNZ, JLEN, ONE,
+ $ U( J2+1, 1+KZS ), LDU, WH( KZS+1, 1 ),
+ $ LDWH )
+*
+* ==== Multiply top of H by U11' ====
+*
+ CALL ZGEMM( 'C', 'N', I2, JLEN, J2, ONE, U, LDU,
+ $ H( INCOL+1, JCOL ), LDH, ONE, WH, LDWH )
+*
+* ==== Copy top of H bottom of WH ====
+*
+ CALL ZLACPY( 'ALL', J2, JLEN, H( INCOL+1, JCOL ), LDH,
+ $ WH( I2+1, 1 ), LDWH )
+*
+* ==== Multiply by U21' ====
+*
+ CALL ZTRMM( 'L', 'L', 'C', 'N', J2, JLEN, ONE,
+ $ U( 1, I2+1 ), LDU, WH( I2+1, 1 ), LDWH )
+*
+* ==== Multiply by U22 ====
+*
+ CALL ZGEMM( 'C', 'N', I4-I2, JLEN, J4-J2, ONE,
+ $ U( J2+1, I2+1 ), LDU,
+ $ H( INCOL+1+J2, JCOL ), LDH, ONE,
+ $ WH( I2+1, 1 ), LDWH )
+*
+* ==== Copy it back ====
+*
+ CALL ZLACPY( 'ALL', KDU, JLEN, WH, LDWH,
+ $ H( INCOL+1, JCOL ), LDH )
+ 180 CONTINUE
+*
+* ==== Vertical multiply ====
+*
+ DO 190 JROW = JTOP, MAX( INCOL, KTOP ) - 1, NV
+ JLEN = MIN( NV, MAX( INCOL, KTOP )-JROW )
+*
+* ==== Copy right of H to scratch (the first KZS
+* . columns get multiplied by zero) ====
+*
+ CALL ZLACPY( 'ALL', JLEN, KNZ, H( JROW, INCOL+1+J2 ),
+ $ LDH, WV( 1, 1+KZS ), LDWV )
+*
+* ==== Multiply by U21 ====
+*
+ CALL ZLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV, LDWV )
+ CALL ZTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE,
+ $ U( J2+1, 1+KZS ), LDU, WV( 1, 1+KZS ),
+ $ LDWV )
+*
+* ==== Multiply by U11 ====
+*
+ CALL ZGEMM( 'N', 'N', JLEN, I2, J2, ONE,
+ $ H( JROW, INCOL+1 ), LDH, U, LDU, ONE, WV,
+ $ LDWV )
+*
+* ==== Copy left of H to right of scratch ====
+*
+ CALL ZLACPY( 'ALL', JLEN, J2, H( JROW, INCOL+1 ), LDH,
+ $ WV( 1, 1+I2 ), LDWV )
+*
+* ==== Multiply by U21 ====
+*
+ CALL ZTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE,
+ $ U( 1, I2+1 ), LDU, WV( 1, 1+I2 ), LDWV )
+*
+* ==== Multiply by U22 ====
+*
+ CALL ZGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE,
+ $ H( JROW, INCOL+1+J2 ), LDH,
+ $ U( J2+1, I2+1 ), LDU, ONE, WV( 1, 1+I2 ),
+ $ LDWV )
+*
+* ==== Copy it back ====
+*
+ CALL ZLACPY( 'ALL', JLEN, KDU, WV, LDWV,
+ $ H( JROW, INCOL+1 ), LDH )
+ 190 CONTINUE
+*
+* ==== Multiply Z (also vertical) ====
+*
+ IF( WANTZ ) THEN
+ DO 200 JROW = ILOZ, IHIZ, NV
+ JLEN = MIN( NV, IHIZ-JROW+1 )
+*
+* ==== Copy right of Z to left of scratch (first
+* . KZS columns get multiplied by zero) ====
+*
+ CALL ZLACPY( 'ALL', JLEN, KNZ,
+ $ Z( JROW, INCOL+1+J2 ), LDZ,
+ $ WV( 1, 1+KZS ), LDWV )
+*
+* ==== Multiply by U12 ====
+*
+ CALL ZLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV,
+ $ LDWV )
+ CALL ZTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE,
+ $ U( J2+1, 1+KZS ), LDU, WV( 1, 1+KZS ),
+ $ LDWV )
+*
+* ==== Multiply by U11 ====
+*
+ CALL ZGEMM( 'N', 'N', JLEN, I2, J2, ONE,
+ $ Z( JROW, INCOL+1 ), LDZ, U, LDU, ONE,
+ $ WV, LDWV )
+*
+* ==== Copy left of Z to right of scratch ====
+*
+ CALL ZLACPY( 'ALL', JLEN, J2, Z( JROW, INCOL+1 ),
+ $ LDZ, WV( 1, 1+I2 ), LDWV )
+*
+* ==== Multiply by U21 ====
+*
+ CALL ZTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE,
+ $ U( 1, I2+1 ), LDU, WV( 1, 1+I2 ),
+ $ LDWV )
+*
+* ==== Multiply by U22 ====
+*
+ CALL ZGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE,
+ $ Z( JROW, INCOL+1+J2 ), LDZ,
+ $ U( J2+1, I2+1 ), LDU, ONE,
+ $ WV( 1, 1+I2 ), LDWV )
+*
+* ==== Copy the result back to Z ====
+*
+ CALL ZLACPY( 'ALL', JLEN, KDU, WV, LDWV,
+ $ Z( JROW, INCOL+1 ), LDZ )
+ 200 CONTINUE
+ END IF
+ END IF
+ END IF
+ 210 CONTINUE
+*
+* ==== End of ZLAQR5 ====
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarf.f b/2.3-1/src/fortran/lapack/zlarf.f
new file mode 100644
index 00000000..d5233c8c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarf.f
@@ -0,0 +1,120 @@
+ SUBROUTINE ZLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER INCV, LDC, M, N
+ COMPLEX*16 TAU
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARF applies a complex elementary reflector H to a complex M-by-N
+* matrix C, from either the left or the right. H is represented in the
+* form
+*
+* H = I - tau * v * v'
+*
+* where tau is a complex scalar and v is a complex vector.
+*
+* If tau = 0, then H is taken to be the unit matrix.
+*
+* To apply H' (the conjugate transpose of H), supply conjg(tau) instead
+* tau.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form H * C
+* = 'R': form C * H
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* V (input) COMPLEX*16 array, dimension
+* (1 + (M-1)*abs(INCV)) if SIDE = 'L'
+* or (1 + (N-1)*abs(INCV)) if SIDE = 'R'
+* The vector v in the representation of H. V is not used if
+* TAU = 0.
+*
+* INCV (input) INTEGER
+* The increment between elements of v. INCV <> 0.
+*
+* TAU (input) COMPLEX*16
+* The value tau in the representation of H.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+* or C * H if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension
+* (N) if SIDE = 'L'
+* or (M) if SIDE = 'R'
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZGEMV, ZGERC
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w := C' * v
+*
+ CALL ZGEMV( 'Conjugate transpose', M, N, ONE, C, LDC, V,
+ $ INCV, ZERO, WORK, 1 )
+*
+* C := C - v * w'
+*
+ CALL ZGERC( M, N, -TAU, V, INCV, WORK, 1, C, LDC )
+ END IF
+ ELSE
+*
+* Form C * H
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w := C * v
+*
+ CALL ZGEMV( 'No transpose', M, N, ONE, C, LDC, V, INCV,
+ $ ZERO, WORK, 1 )
+*
+* C := C - w * v'
+*
+ CALL ZGERC( M, N, -TAU, WORK, 1, V, INCV, C, LDC )
+ END IF
+ END IF
+ RETURN
+*
+* End of ZLARF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarfb.f b/2.3-1/src/fortran/lapack/zlarfb.f
new file mode 100644
index 00000000..af93ea58
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarfb.f
@@ -0,0 +1,608 @@
+ SUBROUTINE ZLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV,
+ $ T, LDT, C, LDC, WORK, LDWORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, SIDE, STOREV, TRANS
+ INTEGER K, LDC, LDT, LDV, LDWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 C( LDC, * ), T( LDT, * ), V( LDV, * ),
+ $ WORK( LDWORK, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARFB applies a complex block reflector H or its transpose H' to a
+* complex M-by-N matrix C, from either the left or the right.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply H or H' from the Left
+* = 'R': apply H or H' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply H (No transpose)
+* = 'C': apply H' (Conjugate transpose)
+*
+* DIRECT (input) CHARACTER*1
+* Indicates how H is formed from a product of elementary
+* reflectors
+* = 'F': H = H(1) H(2) . . . H(k) (Forward)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Indicates how the vectors which define the elementary
+* reflectors are stored:
+* = 'C': Columnwise
+* = 'R': Rowwise
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* K (input) INTEGER
+* The order of the matrix T (= the number of elementary
+* reflectors whose product defines the block reflector).
+*
+* V (input) COMPLEX*16 array, dimension
+* (LDV,K) if STOREV = 'C'
+* (LDV,M) if STOREV = 'R' and SIDE = 'L'
+* (LDV,N) if STOREV = 'R' and SIDE = 'R'
+* The matrix V. See further details.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
+* if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
+* if STOREV = 'R', LDV >= K.
+*
+* T (input) COMPLEX*16 array, dimension (LDT,K)
+* The triangular K-by-K matrix T in the representation of the
+* block reflector.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by H*C or H'*C or C*H or C*H'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (LDWORK,K)
+*
+* LDWORK (input) INTEGER
+* The leading dimension of the array WORK.
+* If SIDE = 'L', LDWORK >= max(1,N);
+* if SIDE = 'R', LDWORK >= max(1,M).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ CHARACTER TRANST
+ INTEGER I, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZCOPY, ZGEMM, ZLACGV, ZTRMM
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 )
+ $ RETURN
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+ TRANST = 'C'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ IF( LSAME( STOREV, 'C' ) ) THEN
+*
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+*
+* Let V = ( V1 ) (first K rows)
+* ( V2 )
+* where V1 is unit lower triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V = (C1'*V1 + C2'*V2) (stored in WORK)
+*
+* W := C1'
+*
+ DO 10 J = 1, K
+ CALL ZCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+ CALL ZLACGV( N, WORK( 1, J ), 1 )
+ 10 CONTINUE
+*
+* W := W * V1
+*
+ CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', N,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C2'*V2
+*
+ CALL ZGEMM( 'Conjugate transpose', 'No transpose', N,
+ $ K, M-K, ONE, C( K+1, 1 ), LDC,
+ $ V( K+1, 1 ), LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL ZTRMM( 'Right', 'Upper', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C2 := C2 - V2 * W'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose',
+ $ M-K, N, K, -ONE, V( K+1, 1 ), LDV, WORK,
+ $ LDWORK, ONE, C( K+1, 1 ), LDC )
+ END IF
+*
+* W := W * V1'
+*
+ CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose',
+ $ 'Unit', N, K, ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W'
+*
+ DO 30 J = 1, K
+ DO 20 I = 1, N
+ C( J, I ) = C( J, I ) - DCONJG( WORK( I, J ) )
+ 20 CONTINUE
+ 30 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V = (C1*V1 + C2*V2) (stored in WORK)
+*
+* W := C1
+*
+ DO 40 J = 1, K
+ CALL ZCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+ 40 CONTINUE
+*
+* W := W * V1
+*
+ CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', M,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C2 * V2
+*
+ CALL ZGEMM( 'No transpose', 'No transpose', M, K, N-K,
+ $ ONE, C( 1, K+1 ), LDC, V( K+1, 1 ), LDV,
+ $ ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL ZTRMM( 'Right', 'Upper', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V'
+*
+ IF( N.GT.K ) THEN
+*
+* C2 := C2 - W * V2'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', M,
+ $ N-K, K, -ONE, WORK, LDWORK, V( K+1, 1 ),
+ $ LDV, ONE, C( 1, K+1 ), LDC )
+ END IF
+*
+* W := W * V1'
+*
+ CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose',
+ $ 'Unit', M, K, ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W
+*
+ DO 60 J = 1, K
+ DO 50 I = 1, M
+ C( I, J ) = C( I, J ) - WORK( I, J )
+ 50 CONTINUE
+ 60 CONTINUE
+ END IF
+*
+ ELSE
+*
+* Let V = ( V1 )
+* ( V2 ) (last K rows)
+* where V2 is unit upper triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V = (C1'*V1 + C2'*V2) (stored in WORK)
+*
+* W := C2'
+*
+ DO 70 J = 1, K
+ CALL ZCOPY( N, C( M-K+J, 1 ), LDC, WORK( 1, J ), 1 )
+ CALL ZLACGV( N, WORK( 1, J ), 1 )
+ 70 CONTINUE
+*
+* W := W * V2
+*
+ CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', N,
+ $ K, ONE, V( M-K+1, 1 ), LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C1'*V1
+*
+ CALL ZGEMM( 'Conjugate transpose', 'No transpose', N,
+ $ K, M-K, ONE, C, LDC, V, LDV, ONE, WORK,
+ $ LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL ZTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C1 := C1 - V1 * W'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose',
+ $ M-K, N, K, -ONE, V, LDV, WORK, LDWORK,
+ $ ONE, C, LDC )
+ END IF
+*
+* W := W * V2'
+*
+ CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose',
+ $ 'Unit', N, K, ONE, V( M-K+1, 1 ), LDV, WORK,
+ $ LDWORK )
+*
+* C2 := C2 - W'
+*
+ DO 90 J = 1, K
+ DO 80 I = 1, N
+ C( M-K+J, I ) = C( M-K+J, I ) -
+ $ DCONJG( WORK( I, J ) )
+ 80 CONTINUE
+ 90 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V = (C1*V1 + C2*V2) (stored in WORK)
+*
+* W := C2
+*
+ DO 100 J = 1, K
+ CALL ZCOPY( M, C( 1, N-K+J ), 1, WORK( 1, J ), 1 )
+ 100 CONTINUE
+*
+* W := W * V2
+*
+ CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', M,
+ $ K, ONE, V( N-K+1, 1 ), LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C1 * V1
+*
+ CALL ZGEMM( 'No transpose', 'No transpose', M, K, N-K,
+ $ ONE, C, LDC, V, LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL ZTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V'
+*
+ IF( N.GT.K ) THEN
+*
+* C1 := C1 - W * V1'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', M,
+ $ N-K, K, -ONE, WORK, LDWORK, V, LDV, ONE,
+ $ C, LDC )
+ END IF
+*
+* W := W * V2'
+*
+ CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose',
+ $ 'Unit', M, K, ONE, V( N-K+1, 1 ), LDV, WORK,
+ $ LDWORK )
+*
+* C2 := C2 - W
+*
+ DO 120 J = 1, K
+ DO 110 I = 1, M
+ C( I, N-K+J ) = C( I, N-K+J ) - WORK( I, J )
+ 110 CONTINUE
+ 120 CONTINUE
+ END IF
+ END IF
+*
+ ELSE IF( LSAME( STOREV, 'R' ) ) THEN
+*
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+*
+* Let V = ( V1 V2 ) (V1: first K columns)
+* where V1 is unit upper triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V' = (C1'*V1' + C2'*V2') (stored in WORK)
+*
+* W := C1'
+*
+ DO 130 J = 1, K
+ CALL ZCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+ CALL ZLACGV( N, WORK( 1, J ), 1 )
+ 130 CONTINUE
+*
+* W := W * V1'
+*
+ CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose',
+ $ 'Unit', N, K, ONE, V, LDV, WORK, LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C2'*V2'
+*
+ CALL ZGEMM( 'Conjugate transpose',
+ $ 'Conjugate transpose', N, K, M-K, ONE,
+ $ C( K+1, 1 ), LDC, V( 1, K+1 ), LDV, ONE,
+ $ WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL ZTRMM( 'Right', 'Upper', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V' * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C2 := C2 - V2' * W'
+*
+ CALL ZGEMM( 'Conjugate transpose',
+ $ 'Conjugate transpose', M-K, N, K, -ONE,
+ $ V( 1, K+1 ), LDV, WORK, LDWORK, ONE,
+ $ C( K+1, 1 ), LDC )
+ END IF
+*
+* W := W * V1
+*
+ CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', N,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W'
+*
+ DO 150 J = 1, K
+ DO 140 I = 1, N
+ C( J, I ) = C( J, I ) - DCONJG( WORK( I, J ) )
+ 140 CONTINUE
+ 150 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V' = (C1*V1' + C2*V2') (stored in WORK)
+*
+* W := C1
+*
+ DO 160 J = 1, K
+ CALL ZCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+ 160 CONTINUE
+*
+* W := W * V1'
+*
+ CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose',
+ $ 'Unit', M, K, ONE, V, LDV, WORK, LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C2 * V2'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', M,
+ $ K, N-K, ONE, C( 1, K+1 ), LDC,
+ $ V( 1, K+1 ), LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL ZTRMM( 'Right', 'Upper', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V
+*
+ IF( N.GT.K ) THEN
+*
+* C2 := C2 - W * V2
+*
+ CALL ZGEMM( 'No transpose', 'No transpose', M, N-K, K,
+ $ -ONE, WORK, LDWORK, V( 1, K+1 ), LDV, ONE,
+ $ C( 1, K+1 ), LDC )
+ END IF
+*
+* W := W * V1
+*
+ CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', M,
+ $ K, ONE, V, LDV, WORK, LDWORK )
+*
+* C1 := C1 - W
+*
+ DO 180 J = 1, K
+ DO 170 I = 1, M
+ C( I, J ) = C( I, J ) - WORK( I, J )
+ 170 CONTINUE
+ 180 CONTINUE
+*
+ END IF
+*
+ ELSE
+*
+* Let V = ( V1 V2 ) (V2: last K columns)
+* where V2 is unit lower triangular.
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C where C = ( C1 )
+* ( C2 )
+*
+* W := C' * V' = (C1'*V1' + C2'*V2') (stored in WORK)
+*
+* W := C2'
+*
+ DO 190 J = 1, K
+ CALL ZCOPY( N, C( M-K+J, 1 ), LDC, WORK( 1, J ), 1 )
+ CALL ZLACGV( N, WORK( 1, J ), 1 )
+ 190 CONTINUE
+*
+* W := W * V2'
+*
+ CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose',
+ $ 'Unit', N, K, ONE, V( 1, M-K+1 ), LDV, WORK,
+ $ LDWORK )
+ IF( M.GT.K ) THEN
+*
+* W := W + C1'*V1'
+*
+ CALL ZGEMM( 'Conjugate transpose',
+ $ 'Conjugate transpose', N, K, M-K, ONE, C,
+ $ LDC, V, LDV, ONE, WORK, LDWORK )
+ END IF
+*
+* W := W * T' or W * T
+*
+ CALL ZTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - V' * W'
+*
+ IF( M.GT.K ) THEN
+*
+* C1 := C1 - V1' * W'
+*
+ CALL ZGEMM( 'Conjugate transpose',
+ $ 'Conjugate transpose', M-K, N, K, -ONE, V,
+ $ LDV, WORK, LDWORK, ONE, C, LDC )
+ END IF
+*
+* W := W * V2
+*
+ CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', N,
+ $ K, ONE, V( 1, M-K+1 ), LDV, WORK, LDWORK )
+*
+* C2 := C2 - W'
+*
+ DO 210 J = 1, K
+ DO 200 I = 1, N
+ C( M-K+J, I ) = C( M-K+J, I ) -
+ $ DCONJG( WORK( I, J ) )
+ 200 CONTINUE
+ 210 CONTINUE
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H' where C = ( C1 C2 )
+*
+* W := C * V' = (C1*V1' + C2*V2') (stored in WORK)
+*
+* W := C2
+*
+ DO 220 J = 1, K
+ CALL ZCOPY( M, C( 1, N-K+J ), 1, WORK( 1, J ), 1 )
+ 220 CONTINUE
+*
+* W := W * V2'
+*
+ CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose',
+ $ 'Unit', M, K, ONE, V( 1, N-K+1 ), LDV, WORK,
+ $ LDWORK )
+ IF( N.GT.K ) THEN
+*
+* W := W + C1 * V1'
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose', M,
+ $ K, N-K, ONE, C, LDC, V, LDV, ONE, WORK,
+ $ LDWORK )
+ END IF
+*
+* W := W * T or W * T'
+*
+ CALL ZTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K,
+ $ ONE, T, LDT, WORK, LDWORK )
+*
+* C := C - W * V
+*
+ IF( N.GT.K ) THEN
+*
+* C1 := C1 - W * V1
+*
+ CALL ZGEMM( 'No transpose', 'No transpose', M, N-K, K,
+ $ -ONE, WORK, LDWORK, V, LDV, ONE, C, LDC )
+ END IF
+*
+* W := W * V2
+*
+ CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', M,
+ $ K, ONE, V( 1, N-K+1 ), LDV, WORK, LDWORK )
+*
+* C1 := C1 - W
+*
+ DO 240 J = 1, K
+ DO 230 I = 1, M
+ C( I, N-K+J ) = C( I, N-K+J ) - WORK( I, J )
+ 230 CONTINUE
+ 240 CONTINUE
+*
+ END IF
+*
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZLARFB
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarfg.f b/2.3-1/src/fortran/lapack/zlarfg.f
new file mode 100644
index 00000000..d024f928
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarfg.f
@@ -0,0 +1,145 @@
+ SUBROUTINE ZLARFG( N, ALPHA, X, INCX, TAU )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ COMPLEX*16 ALPHA, TAU
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARFG generates a complex elementary reflector H of order n, such
+* that
+*
+* H' * ( alpha ) = ( beta ), H' * H = I.
+* ( x ) ( 0 )
+*
+* where alpha and beta are scalars, with beta real, and x is an
+* (n-1)-element complex vector. H is represented in the form
+*
+* H = I - tau * ( 1 ) * ( 1 v' ) ,
+* ( v )
+*
+* where tau is a complex scalar and v is a complex (n-1)-element
+* vector. Note that H is not hermitian.
+*
+* If the elements of x are all zero and alpha is real, then tau = 0
+* and H is taken to be the unit matrix.
+*
+* Otherwise 1 <= real(tau) <= 2 and abs(tau-1) <= 1 .
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the elementary reflector.
+*
+* ALPHA (input/output) COMPLEX*16
+* On entry, the value alpha.
+* On exit, it is overwritten with the value beta.
+*
+* X (input/output) COMPLEX*16 array, dimension
+* (1+(N-2)*abs(INCX))
+* On entry, the vector x.
+* On exit, it is overwritten with the vector v.
+*
+* INCX (input) INTEGER
+* The increment between elements of X. INCX > 0.
+*
+* TAU (output) COMPLEX*16
+* The value tau.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER J, KNT
+ DOUBLE PRECISION ALPHI, ALPHR, BETA, RSAFMN, SAFMIN, XNORM
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLAPY3, DZNRM2
+ COMPLEX*16 ZLADIV
+ EXTERNAL DLAMCH, DLAPY3, DZNRM2, ZLADIV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DIMAG, SIGN
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZDSCAL, ZSCAL
+* ..
+* .. Executable Statements ..
+*
+ IF( N.LE.0 ) THEN
+ TAU = ZERO
+ RETURN
+ END IF
+*
+ XNORM = DZNRM2( N-1, X, INCX )
+ ALPHR = DBLE( ALPHA )
+ ALPHI = DIMAG( ALPHA )
+*
+ IF( XNORM.EQ.ZERO .AND. ALPHI.EQ.ZERO ) THEN
+*
+* H = I
+*
+ TAU = ZERO
+ ELSE
+*
+* general case
+*
+ BETA = -SIGN( DLAPY3( ALPHR, ALPHI, XNORM ), ALPHR )
+ SAFMIN = DLAMCH( 'S' ) / DLAMCH( 'E' )
+ RSAFMN = ONE / SAFMIN
+*
+ IF( ABS( BETA ).LT.SAFMIN ) THEN
+*
+* XNORM, BETA may be inaccurate; scale X and recompute them
+*
+ KNT = 0
+ 10 CONTINUE
+ KNT = KNT + 1
+ CALL ZDSCAL( N-1, RSAFMN, X, INCX )
+ BETA = BETA*RSAFMN
+ ALPHI = ALPHI*RSAFMN
+ ALPHR = ALPHR*RSAFMN
+ IF( ABS( BETA ).LT.SAFMIN )
+ $ GO TO 10
+*
+* New BETA is at most 1, at least SAFMIN
+*
+ XNORM = DZNRM2( N-1, X, INCX )
+ ALPHA = DCMPLX( ALPHR, ALPHI )
+ BETA = -SIGN( DLAPY3( ALPHR, ALPHI, XNORM ), ALPHR )
+ TAU = DCMPLX( ( BETA-ALPHR ) / BETA, -ALPHI / BETA )
+ ALPHA = ZLADIV( DCMPLX( ONE ), ALPHA-BETA )
+ CALL ZSCAL( N-1, ALPHA, X, INCX )
+*
+* If ALPHA is subnormal, it may lose relative accuracy
+*
+ ALPHA = BETA
+ DO 20 J = 1, KNT
+ ALPHA = ALPHA*SAFMIN
+ 20 CONTINUE
+ ELSE
+ TAU = DCMPLX( ( BETA-ALPHR ) / BETA, -ALPHI / BETA )
+ ALPHA = ZLADIV( DCMPLX( ONE ), ALPHA-BETA )
+ CALL ZSCAL( N-1, ALPHA, X, INCX )
+ ALPHA = BETA
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZLARFG
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarft.f b/2.3-1/src/fortran/lapack/zlarft.f
new file mode 100644
index 00000000..412265e3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarft.f
@@ -0,0 +1,224 @@
+ SUBROUTINE ZLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, STOREV
+ INTEGER K, LDT, LDV, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 T( LDT, * ), TAU( * ), V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARFT forms the triangular factor T of a complex block reflector H
+* of order n, which is defined as a product of k elementary reflectors.
+*
+* If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
+*
+* If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
+*
+* If STOREV = 'C', the vector which defines the elementary reflector
+* H(i) is stored in the i-th column of the array V, and
+*
+* H = I - V * T * V'
+*
+* If STOREV = 'R', the vector which defines the elementary reflector
+* H(i) is stored in the i-th row of the array V, and
+*
+* H = I - V' * T * V
+*
+* Arguments
+* =========
+*
+* DIRECT (input) CHARACTER*1
+* Specifies the order in which the elementary reflectors are
+* multiplied to form the block reflector:
+* = 'F': H = H(1) H(2) . . . H(k) (Forward)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Specifies how the vectors which define the elementary
+* reflectors are stored (see also Further Details):
+* = 'C': columnwise
+* = 'R': rowwise
+*
+* N (input) INTEGER
+* The order of the block reflector H. N >= 0.
+*
+* K (input) INTEGER
+* The order of the triangular factor T (= the number of
+* elementary reflectors). K >= 1.
+*
+* V (input/output) COMPLEX*16 array, dimension
+* (LDV,K) if STOREV = 'C'
+* (LDV,N) if STOREV = 'R'
+* The matrix V. See further details.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i).
+*
+* T (output) COMPLEX*16 array, dimension (LDT,K)
+* The k by k triangular factor T of the block reflector.
+* If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
+* lower triangular. The rest of the array is not used.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* Further Details
+* ===============
+*
+* The shape of the matrix V and the storage of the vectors which define
+* the H(i) is best illustrated by the following example with n = 5 and
+* k = 3. The elements equal to 1 are not stored; the corresponding
+* array elements are modified but restored on exit. The rest of the
+* array is not used.
+*
+* DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
+*
+* V = ( 1 ) V = ( 1 v1 v1 v1 v1 )
+* ( v1 1 ) ( 1 v2 v2 v2 )
+* ( v1 v2 1 ) ( 1 v3 v3 )
+* ( v1 v2 v3 )
+* ( v1 v2 v3 )
+*
+* DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
+*
+* V = ( v1 v2 v3 ) V = ( v1 v1 1 )
+* ( v1 v2 v3 ) ( v2 v2 v2 1 )
+* ( 1 v2 v3 ) ( v3 v3 v3 v3 1 )
+* ( 1 v3 )
+* ( 1 )
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J
+ COMPLEX*16 VII
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZGEMV, ZLACGV, ZTRMV
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 20 I = 1, K
+ IF( TAU( I ).EQ.ZERO ) THEN
+*
+* H(i) = I
+*
+ DO 10 J = 1, I
+ T( J, I ) = ZERO
+ 10 CONTINUE
+ ELSE
+*
+* general case
+*
+ VII = V( I, I )
+ V( I, I ) = ONE
+ IF( LSAME( STOREV, 'C' ) ) THEN
+*
+* T(1:i-1,i) := - tau(i) * V(i:n,1:i-1)' * V(i:n,i)
+*
+ CALL ZGEMV( 'Conjugate transpose', N-I+1, I-1,
+ $ -TAU( I ), V( I, 1 ), LDV, V( I, I ), 1,
+ $ ZERO, T( 1, I ), 1 )
+ ELSE
+*
+* T(1:i-1,i) := - tau(i) * V(1:i-1,i:n) * V(i,i:n)'
+*
+ IF( I.LT.N )
+ $ CALL ZLACGV( N-I, V( I, I+1 ), LDV )
+ CALL ZGEMV( 'No transpose', I-1, N-I+1, -TAU( I ),
+ $ V( 1, I ), LDV, V( I, I ), LDV, ZERO,
+ $ T( 1, I ), 1 )
+ IF( I.LT.N )
+ $ CALL ZLACGV( N-I, V( I, I+1 ), LDV )
+ END IF
+ V( I, I ) = VII
+*
+* T(1:i-1,i) := T(1:i-1,1:i-1) * T(1:i-1,i)
+*
+ CALL ZTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T,
+ $ LDT, T( 1, I ), 1 )
+ T( I, I ) = TAU( I )
+ END IF
+ 20 CONTINUE
+ ELSE
+ DO 40 I = K, 1, -1
+ IF( TAU( I ).EQ.ZERO ) THEN
+*
+* H(i) = I
+*
+ DO 30 J = I, K
+ T( J, I ) = ZERO
+ 30 CONTINUE
+ ELSE
+*
+* general case
+*
+ IF( I.LT.K ) THEN
+ IF( LSAME( STOREV, 'C' ) ) THEN
+ VII = V( N-K+I, I )
+ V( N-K+I, I ) = ONE
+*
+* T(i+1:k,i) :=
+* - tau(i) * V(1:n-k+i,i+1:k)' * V(1:n-k+i,i)
+*
+ CALL ZGEMV( 'Conjugate transpose', N-K+I, K-I,
+ $ -TAU( I ), V( 1, I+1 ), LDV, V( 1, I ),
+ $ 1, ZERO, T( I+1, I ), 1 )
+ V( N-K+I, I ) = VII
+ ELSE
+ VII = V( I, N-K+I )
+ V( I, N-K+I ) = ONE
+*
+* T(i+1:k,i) :=
+* - tau(i) * V(i+1:k,1:n-k+i) * V(i,1:n-k+i)'
+*
+ CALL ZLACGV( N-K+I-1, V( I, 1 ), LDV )
+ CALL ZGEMV( 'No transpose', K-I, N-K+I, -TAU( I ),
+ $ V( I+1, 1 ), LDV, V( I, 1 ), LDV, ZERO,
+ $ T( I+1, I ), 1 )
+ CALL ZLACGV( N-K+I-1, V( I, 1 ), LDV )
+ V( I, N-K+I ) = VII
+ END IF
+*
+* T(i+1:k,i) := T(i+1:k,i+1:k) * T(i+1:k,i)
+*
+ CALL ZTRMV( 'Lower', 'No transpose', 'Non-unit', K-I,
+ $ T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
+ END IF
+ T( I, I ) = TAU( I )
+ END IF
+ 40 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZLARFT
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarfx.f b/2.3-1/src/fortran/lapack/zlarfx.f
new file mode 100644
index 00000000..327b9d03
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarfx.f
@@ -0,0 +1,641 @@
+ SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER LDC, M, N
+ COMPLEX*16 TAU
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARFX applies a complex elementary reflector H to a complex m by n
+* matrix C, from either the left or the right. H is represented in the
+* form
+*
+* H = I - tau * v * v'
+*
+* where tau is a complex scalar and v is a complex vector.
+*
+* If tau = 0, then H is taken to be the unit matrix
+*
+* This version uses inline code if H has order < 11.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form H * C
+* = 'R': form C * H
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* V (input) COMPLEX*16 array, dimension (M) if SIDE = 'L'
+* or (N) if SIDE = 'R'
+* The vector v in the representation of H.
+*
+* TAU (input) COMPLEX*16
+* The value tau in the representation of H.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the m by n matrix C.
+* On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+* or C * H if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDA >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N) if SIDE = 'L'
+* or (M) if SIDE = 'R'
+* WORK is not referenced if H has order < 11.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER J
+ COMPLEX*16 SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
+ $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZGEMV, ZGERC
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+ IF( TAU.EQ.ZERO )
+ $ RETURN
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C, where H has order m.
+*
+ GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
+ $ 170, 190 )M
+*
+* Code for general M
+*
+* w := C'*v
+*
+ CALL ZGEMV( 'Conjugate transpose', M, N, ONE, C, LDC, V, 1,
+ $ ZERO, WORK, 1 )
+*
+* C := C - tau * v * w'
+*
+ CALL ZGERC( M, N, -TAU, V, 1, WORK, 1, C, LDC )
+ GO TO 410
+ 10 CONTINUE
+*
+* Special code for 1 x 1 Householder
+*
+ T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
+ DO 20 J = 1, N
+ C( 1, J ) = T1*C( 1, J )
+ 20 CONTINUE
+ GO TO 410
+ 30 CONTINUE
+*
+* Special code for 2 x 2 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ DO 40 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ 40 CONTINUE
+ GO TO 410
+ 50 CONTINUE
+*
+* Special code for 3 x 3 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ DO 60 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ 60 CONTINUE
+ GO TO 410
+ 70 CONTINUE
+*
+* Special code for 4 x 4 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ DO 80 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ 80 CONTINUE
+ GO TO 410
+ 90 CONTINUE
+*
+* Special code for 5 x 5 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ V5 = DCONJG( V( 5 ) )
+ T5 = TAU*DCONJG( V5 )
+ DO 100 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ 100 CONTINUE
+ GO TO 410
+ 110 CONTINUE
+*
+* Special code for 6 x 6 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ V5 = DCONJG( V( 5 ) )
+ T5 = TAU*DCONJG( V5 )
+ V6 = DCONJG( V( 6 ) )
+ T6 = TAU*DCONJG( V6 )
+ DO 120 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ 120 CONTINUE
+ GO TO 410
+ 130 CONTINUE
+*
+* Special code for 7 x 7 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ V5 = DCONJG( V( 5 ) )
+ T5 = TAU*DCONJG( V5 )
+ V6 = DCONJG( V( 6 ) )
+ T6 = TAU*DCONJG( V6 )
+ V7 = DCONJG( V( 7 ) )
+ T7 = TAU*DCONJG( V7 )
+ DO 140 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ 140 CONTINUE
+ GO TO 410
+ 150 CONTINUE
+*
+* Special code for 8 x 8 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ V5 = DCONJG( V( 5 ) )
+ T5 = TAU*DCONJG( V5 )
+ V6 = DCONJG( V( 6 ) )
+ T6 = TAU*DCONJG( V6 )
+ V7 = DCONJG( V( 7 ) )
+ T7 = TAU*DCONJG( V7 )
+ V8 = DCONJG( V( 8 ) )
+ T8 = TAU*DCONJG( V8 )
+ DO 160 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J ) + V8*C( 8, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ C( 8, J ) = C( 8, J ) - SUM*T8
+ 160 CONTINUE
+ GO TO 410
+ 170 CONTINUE
+*
+* Special code for 9 x 9 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ V5 = DCONJG( V( 5 ) )
+ T5 = TAU*DCONJG( V5 )
+ V6 = DCONJG( V( 6 ) )
+ T6 = TAU*DCONJG( V6 )
+ V7 = DCONJG( V( 7 ) )
+ T7 = TAU*DCONJG( V7 )
+ V8 = DCONJG( V( 8 ) )
+ T8 = TAU*DCONJG( V8 )
+ V9 = DCONJG( V( 9 ) )
+ T9 = TAU*DCONJG( V9 )
+ DO 180 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ C( 8, J ) = C( 8, J ) - SUM*T8
+ C( 9, J ) = C( 9, J ) - SUM*T9
+ 180 CONTINUE
+ GO TO 410
+ 190 CONTINUE
+*
+* Special code for 10 x 10 Householder
+*
+ V1 = DCONJG( V( 1 ) )
+ T1 = TAU*DCONJG( V1 )
+ V2 = DCONJG( V( 2 ) )
+ T2 = TAU*DCONJG( V2 )
+ V3 = DCONJG( V( 3 ) )
+ T3 = TAU*DCONJG( V3 )
+ V4 = DCONJG( V( 4 ) )
+ T4 = TAU*DCONJG( V4 )
+ V5 = DCONJG( V( 5 ) )
+ T5 = TAU*DCONJG( V5 )
+ V6 = DCONJG( V( 6 ) )
+ T6 = TAU*DCONJG( V6 )
+ V7 = DCONJG( V( 7 ) )
+ T7 = TAU*DCONJG( V7 )
+ V8 = DCONJG( V( 8 ) )
+ T8 = TAU*DCONJG( V8 )
+ V9 = DCONJG( V( 9 ) )
+ T9 = TAU*DCONJG( V9 )
+ V10 = DCONJG( V( 10 ) )
+ T10 = TAU*DCONJG( V10 )
+ DO 200 J = 1, N
+ SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
+ $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
+ $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
+ $ V10*C( 10, J )
+ C( 1, J ) = C( 1, J ) - SUM*T1
+ C( 2, J ) = C( 2, J ) - SUM*T2
+ C( 3, J ) = C( 3, J ) - SUM*T3
+ C( 4, J ) = C( 4, J ) - SUM*T4
+ C( 5, J ) = C( 5, J ) - SUM*T5
+ C( 6, J ) = C( 6, J ) - SUM*T6
+ C( 7, J ) = C( 7, J ) - SUM*T7
+ C( 8, J ) = C( 8, J ) - SUM*T8
+ C( 9, J ) = C( 9, J ) - SUM*T9
+ C( 10, J ) = C( 10, J ) - SUM*T10
+ 200 CONTINUE
+ GO TO 410
+ ELSE
+*
+* Form C * H, where H has order n.
+*
+ GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
+ $ 370, 390 )N
+*
+* Code for general N
+*
+* w := C * v
+*
+ CALL ZGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO,
+ $ WORK, 1 )
+*
+* C := C - tau * w * v'
+*
+ CALL ZGERC( M, N, -TAU, WORK, 1, V, 1, C, LDC )
+ GO TO 410
+ 210 CONTINUE
+*
+* Special code for 1 x 1 Householder
+*
+ T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
+ DO 220 J = 1, M
+ C( J, 1 ) = T1*C( J, 1 )
+ 220 CONTINUE
+ GO TO 410
+ 230 CONTINUE
+*
+* Special code for 2 x 2 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ DO 240 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ 240 CONTINUE
+ GO TO 410
+ 250 CONTINUE
+*
+* Special code for 3 x 3 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ DO 260 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ 260 CONTINUE
+ GO TO 410
+ 270 CONTINUE
+*
+* Special code for 4 x 4 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ DO 280 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ 280 CONTINUE
+ GO TO 410
+ 290 CONTINUE
+*
+* Special code for 5 x 5 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ V5 = V( 5 )
+ T5 = TAU*DCONJG( V5 )
+ DO 300 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ 300 CONTINUE
+ GO TO 410
+ 310 CONTINUE
+*
+* Special code for 6 x 6 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ V5 = V( 5 )
+ T5 = TAU*DCONJG( V5 )
+ V6 = V( 6 )
+ T6 = TAU*DCONJG( V6 )
+ DO 320 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ 320 CONTINUE
+ GO TO 410
+ 330 CONTINUE
+*
+* Special code for 7 x 7 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ V5 = V( 5 )
+ T5 = TAU*DCONJG( V5 )
+ V6 = V( 6 )
+ T6 = TAU*DCONJG( V6 )
+ V7 = V( 7 )
+ T7 = TAU*DCONJG( V7 )
+ DO 340 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ 340 CONTINUE
+ GO TO 410
+ 350 CONTINUE
+*
+* Special code for 8 x 8 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ V5 = V( 5 )
+ T5 = TAU*DCONJG( V5 )
+ V6 = V( 6 )
+ T6 = TAU*DCONJG( V6 )
+ V7 = V( 7 )
+ T7 = TAU*DCONJG( V7 )
+ V8 = V( 8 )
+ T8 = TAU*DCONJG( V8 )
+ DO 360 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 ) + V8*C( J, 8 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ C( J, 8 ) = C( J, 8 ) - SUM*T8
+ 360 CONTINUE
+ GO TO 410
+ 370 CONTINUE
+*
+* Special code for 9 x 9 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ V5 = V( 5 )
+ T5 = TAU*DCONJG( V5 )
+ V6 = V( 6 )
+ T6 = TAU*DCONJG( V6 )
+ V7 = V( 7 )
+ T7 = TAU*DCONJG( V7 )
+ V8 = V( 8 )
+ T8 = TAU*DCONJG( V8 )
+ V9 = V( 9 )
+ T9 = TAU*DCONJG( V9 )
+ DO 380 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ C( J, 8 ) = C( J, 8 ) - SUM*T8
+ C( J, 9 ) = C( J, 9 ) - SUM*T9
+ 380 CONTINUE
+ GO TO 410
+ 390 CONTINUE
+*
+* Special code for 10 x 10 Householder
+*
+ V1 = V( 1 )
+ T1 = TAU*DCONJG( V1 )
+ V2 = V( 2 )
+ T2 = TAU*DCONJG( V2 )
+ V3 = V( 3 )
+ T3 = TAU*DCONJG( V3 )
+ V4 = V( 4 )
+ T4 = TAU*DCONJG( V4 )
+ V5 = V( 5 )
+ T5 = TAU*DCONJG( V5 )
+ V6 = V( 6 )
+ T6 = TAU*DCONJG( V6 )
+ V7 = V( 7 )
+ T7 = TAU*DCONJG( V7 )
+ V8 = V( 8 )
+ T8 = TAU*DCONJG( V8 )
+ V9 = V( 9 )
+ T9 = TAU*DCONJG( V9 )
+ V10 = V( 10 )
+ T10 = TAU*DCONJG( V10 )
+ DO 400 J = 1, M
+ SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
+ $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
+ $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
+ $ V10*C( J, 10 )
+ C( J, 1 ) = C( J, 1 ) - SUM*T1
+ C( J, 2 ) = C( J, 2 ) - SUM*T2
+ C( J, 3 ) = C( J, 3 ) - SUM*T3
+ C( J, 4 ) = C( J, 4 ) - SUM*T4
+ C( J, 5 ) = C( J, 5 ) - SUM*T5
+ C( J, 6 ) = C( J, 6 ) - SUM*T6
+ C( J, 7 ) = C( J, 7 ) - SUM*T7
+ C( J, 8 ) = C( J, 8 ) - SUM*T8
+ C( J, 9 ) = C( J, 9 ) - SUM*T9
+ C( J, 10 ) = C( J, 10 ) - SUM*T10
+ 400 CONTINUE
+ GO TO 410
+ END IF
+ 410 CONTINUE
+ RETURN
+*
+* End of ZLARFX
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlartg.f b/2.3-1/src/fortran/lapack/zlartg.f
new file mode 100644
index 00000000..6d3a850e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlartg.f
@@ -0,0 +1,195 @@
+ SUBROUTINE ZLARTG( F, G, CS, SN, R )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ DOUBLE PRECISION CS
+ COMPLEX*16 F, G, R, SN
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARTG generates a plane rotation so that
+*
+* [ CS SN ] [ F ] [ R ]
+* [ __ ] . [ ] = [ ] where CS**2 + |SN|**2 = 1.
+* [ -SN CS ] [ G ] [ 0 ]
+*
+* This is a faster version of the BLAS1 routine ZROTG, except for
+* the following differences:
+* F and G are unchanged on return.
+* If G=0, then CS=1 and SN=0.
+* If F=0, then CS=0 and SN is chosen so that R is real.
+*
+* Arguments
+* =========
+*
+* F (input) COMPLEX*16
+* The first component of vector to be rotated.
+*
+* G (input) COMPLEX*16
+* The second component of vector to be rotated.
+*
+* CS (output) DOUBLE PRECISION
+* The cosine of the rotation.
+*
+* SN (output) COMPLEX*16
+* The sine of the rotation.
+*
+* R (output) COMPLEX*16
+* The nonzero component of the rotated vector.
+*
+* Further Details
+* ======= =======
+*
+* 3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel
+*
+* This version has a few statements commented out for thread safety
+* (machine parameters are computed on each entry). 10 feb 03, SJH.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION TWO, ONE, ZERO
+ PARAMETER ( TWO = 2.0D+0, ONE = 1.0D+0, ZERO = 0.0D+0 )
+ COMPLEX*16 CZERO
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+* LOGICAL FIRST
+ INTEGER COUNT, I
+ DOUBLE PRECISION D, DI, DR, EPS, F2, F2S, G2, G2S, SAFMIN,
+ $ SAFMN2, SAFMX2, SCALE
+ COMPLEX*16 FF, FS, GS
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH, DLAPY2
+ EXTERNAL DLAMCH, DLAPY2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, LOG,
+ $ MAX, SQRT
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION ABS1, ABSSQ
+* ..
+* .. Save statement ..
+* SAVE FIRST, SAFMX2, SAFMIN, SAFMN2
+* ..
+* .. Data statements ..
+* DATA FIRST / .TRUE. /
+* ..
+* .. Statement Function definitions ..
+ ABS1( FF ) = MAX( ABS( DBLE( FF ) ), ABS( DIMAG( FF ) ) )
+ ABSSQ( FF ) = DBLE( FF )**2 + DIMAG( FF )**2
+* ..
+* .. Executable Statements ..
+*
+* IF( FIRST ) THEN
+ SAFMIN = DLAMCH( 'S' )
+ EPS = DLAMCH( 'E' )
+ SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) /
+ $ LOG( DLAMCH( 'B' ) ) / TWO )
+ SAFMX2 = ONE / SAFMN2
+* FIRST = .FALSE.
+* END IF
+ SCALE = MAX( ABS1( F ), ABS1( G ) )
+ FS = F
+ GS = G
+ COUNT = 0
+ IF( SCALE.GE.SAFMX2 ) THEN
+ 10 CONTINUE
+ COUNT = COUNT + 1
+ FS = FS*SAFMN2
+ GS = GS*SAFMN2
+ SCALE = SCALE*SAFMN2
+ IF( SCALE.GE.SAFMX2 )
+ $ GO TO 10
+ ELSE IF( SCALE.LE.SAFMN2 ) THEN
+ IF( G.EQ.CZERO ) THEN
+ CS = ONE
+ SN = CZERO
+ R = F
+ RETURN
+ END IF
+ 20 CONTINUE
+ COUNT = COUNT - 1
+ FS = FS*SAFMX2
+ GS = GS*SAFMX2
+ SCALE = SCALE*SAFMX2
+ IF( SCALE.LE.SAFMN2 )
+ $ GO TO 20
+ END IF
+ F2 = ABSSQ( FS )
+ G2 = ABSSQ( GS )
+ IF( F2.LE.MAX( G2, ONE )*SAFMIN ) THEN
+*
+* This is a rare case: F is very small.
+*
+ IF( F.EQ.CZERO ) THEN
+ CS = ZERO
+ R = DLAPY2( DBLE( G ), DIMAG( G ) )
+* Do complex/real division explicitly with two real divisions
+ D = DLAPY2( DBLE( GS ), DIMAG( GS ) )
+ SN = DCMPLX( DBLE( GS ) / D, -DIMAG( GS ) / D )
+ RETURN
+ END IF
+ F2S = DLAPY2( DBLE( FS ), DIMAG( FS ) )
+* G2 and G2S are accurate
+* G2 is at least SAFMIN, and G2S is at least SAFMN2
+ G2S = SQRT( G2 )
+* Error in CS from underflow in F2S is at most
+* UNFL / SAFMN2 .lt. sqrt(UNFL*EPS) .lt. EPS
+* If MAX(G2,ONE)=G2, then F2 .lt. G2*SAFMIN,
+* and so CS .lt. sqrt(SAFMIN)
+* If MAX(G2,ONE)=ONE, then F2 .lt. SAFMIN
+* and so CS .lt. sqrt(SAFMIN)/SAFMN2 = sqrt(EPS)
+* Therefore, CS = F2S/G2S / sqrt( 1 + (F2S/G2S)**2 ) = F2S/G2S
+ CS = F2S / G2S
+* Make sure abs(FF) = 1
+* Do complex/real division explicitly with 2 real divisions
+ IF( ABS1( F ).GT.ONE ) THEN
+ D = DLAPY2( DBLE( F ), DIMAG( F ) )
+ FF = DCMPLX( DBLE( F ) / D, DIMAG( F ) / D )
+ ELSE
+ DR = SAFMX2*DBLE( F )
+ DI = SAFMX2*DIMAG( F )
+ D = DLAPY2( DR, DI )
+ FF = DCMPLX( DR / D, DI / D )
+ END IF
+ SN = FF*DCMPLX( DBLE( GS ) / G2S, -DIMAG( GS ) / G2S )
+ R = CS*F + SN*G
+ ELSE
+*
+* This is the most common case.
+* Neither F2 nor F2/G2 are less than SAFMIN
+* F2S cannot overflow, and it is accurate
+*
+ F2S = SQRT( ONE+G2 / F2 )
+* Do the F2S(real)*FS(complex) multiply with two real multiplies
+ R = DCMPLX( F2S*DBLE( FS ), F2S*DIMAG( FS ) )
+ CS = ONE / F2S
+ D = F2 + G2
+* Do complex/real division explicitly with two real divisions
+ SN = DCMPLX( DBLE( R ) / D, DIMAG( R ) / D )
+ SN = SN*DCONJG( GS )
+ IF( COUNT.NE.0 ) THEN
+ IF( COUNT.GT.0 ) THEN
+ DO 30 I = 1, COUNT
+ R = R*SAFMX2
+ 30 CONTINUE
+ ELSE
+ DO 40 I = 1, -COUNT
+ R = R*SAFMN2
+ 40 CONTINUE
+ END IF
+ END IF
+ END IF
+ RETURN
+*
+* End of ZLARTG
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarz.f b/2.3-1/src/fortran/lapack/zlarz.f
new file mode 100644
index 00000000..18124672
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarz.f
@@ -0,0 +1,157 @@
+ SUBROUTINE ZLARZ( SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE
+ INTEGER INCV, L, LDC, M, N
+ COMPLEX*16 TAU
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARZ applies a complex elementary reflector H to a complex
+* M-by-N matrix C, from either the left or the right. H is represented
+* in the form
+*
+* H = I - tau * v * v'
+*
+* where tau is a complex scalar and v is a complex vector.
+*
+* If tau = 0, then H is taken to be the unit matrix.
+*
+* To apply H' (the conjugate transpose of H), supply conjg(tau) instead
+* tau.
+*
+* H is a product of k elementary reflectors as returned by ZTZRZF.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': form H * C
+* = 'R': form C * H
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* L (input) INTEGER
+* The number of entries of the vector V containing
+* the meaningful part of the Householder vectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* V (input) COMPLEX*16 array, dimension (1+(L-1)*abs(INCV))
+* The vector v in the representation of H as returned by
+* ZTZRZF. V is not used if TAU = 0.
+*
+* INCV (input) INTEGER
+* The increment between elements of v. INCV <> 0.
+*
+* TAU (input) COMPLEX*16
+* The value tau in the representation of H.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+* or C * H if SIDE = 'R'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension
+* (N) if SIDE = 'L'
+* or (M) if SIDE = 'R'
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZAXPY, ZCOPY, ZGEMV, ZGERC, ZGERU, ZLACGV
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w( 1:n ) = conjg( C( 1, 1:n ) )
+*
+ CALL ZCOPY( N, C, LDC, WORK, 1 )
+ CALL ZLACGV( N, WORK, 1 )
+*
+* w( 1:n ) = conjg( w( 1:n ) + C( m-l+1:m, 1:n )' * v( 1:l ) )
+*
+ CALL ZGEMV( 'Conjugate transpose', L, N, ONE, C( M-L+1, 1 ),
+ $ LDC, V, INCV, ONE, WORK, 1 )
+ CALL ZLACGV( N, WORK, 1 )
+*
+* C( 1, 1:n ) = C( 1, 1:n ) - tau * w( 1:n )
+*
+ CALL ZAXPY( N, -TAU, WORK, 1, C, LDC )
+*
+* C( m-l+1:m, 1:n ) = C( m-l+1:m, 1:n ) - ...
+* tau * v( 1:l ) * conjg( w( 1:n )' )
+*
+ CALL ZGERU( L, N, -TAU, V, INCV, WORK, 1, C( M-L+1, 1 ),
+ $ LDC )
+ END IF
+*
+ ELSE
+*
+* Form C * H
+*
+ IF( TAU.NE.ZERO ) THEN
+*
+* w( 1:m ) = C( 1:m, 1 )
+*
+ CALL ZCOPY( M, C, 1, WORK, 1 )
+*
+* w( 1:m ) = w( 1:m ) + C( 1:m, n-l+1:n, 1:n ) * v( 1:l )
+*
+ CALL ZGEMV( 'No transpose', M, L, ONE, C( 1, N-L+1 ), LDC,
+ $ V, INCV, ONE, WORK, 1 )
+*
+* C( 1:m, 1 ) = C( 1:m, 1 ) - tau * w( 1:m )
+*
+ CALL ZAXPY( M, -TAU, WORK, 1, C, 1 )
+*
+* C( 1:m, n-l+1:n ) = C( 1:m, n-l+1:n ) - ...
+* tau * w( 1:m ) * v( 1:l )'
+*
+ CALL ZGERC( M, L, -TAU, WORK, 1, V, INCV, C( 1, N-L+1 ),
+ $ LDC )
+*
+ END IF
+*
+ END IF
+*
+ RETURN
+*
+* End of ZLARZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarzb.f b/2.3-1/src/fortran/lapack/zlarzb.f
new file mode 100644
index 00000000..05d2a0e3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarzb.f
@@ -0,0 +1,234 @@
+ SUBROUTINE ZLARZB( SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V,
+ $ LDV, T, LDT, C, LDC, WORK, LDWORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, SIDE, STOREV, TRANS
+ INTEGER K, L, LDC, LDT, LDV, LDWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 C( LDC, * ), T( LDT, * ), V( LDV, * ),
+ $ WORK( LDWORK, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARZB applies a complex block reflector H or its transpose H**H
+* to a complex distributed M-by-N C from the left or the right.
+*
+* Currently, only STOREV = 'R' and DIRECT = 'B' are supported.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply H or H' from the Left
+* = 'R': apply H or H' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply H (No transpose)
+* = 'C': apply H' (Conjugate transpose)
+*
+* DIRECT (input) CHARACTER*1
+* Indicates how H is formed from a product of elementary
+* reflectors
+* = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Indicates how the vectors which define the elementary
+* reflectors are stored:
+* = 'C': Columnwise (not supported yet)
+* = 'R': Rowwise
+*
+* M (input) INTEGER
+* The number of rows of the matrix C.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C.
+*
+* K (input) INTEGER
+* The order of the matrix T (= the number of elementary
+* reflectors whose product defines the block reflector).
+*
+* L (input) INTEGER
+* The number of columns of the matrix V containing the
+* meaningful part of the Householder reflectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* V (input) COMPLEX*16 array, dimension (LDV,NV).
+* If STOREV = 'C', NV = K; if STOREV = 'R', NV = L.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C', LDV >= L; if STOREV = 'R', LDV >= K.
+*
+* T (input) COMPLEX*16 array, dimension (LDT,K)
+* The triangular K-by-K matrix T in the representation of the
+* block reflector.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by H*C or H'*C or C*H or C*H'.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension (LDWORK,K)
+*
+* LDWORK (input) INTEGER
+* The leading dimension of the array WORK.
+* If SIDE = 'L', LDWORK >= max(1,N);
+* if SIDE = 'R', LDWORK >= max(1,M).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ CHARACTER TRANST
+ INTEGER I, INFO, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZCOPY, ZGEMM, ZLACGV, ZTRMM
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.LE.0 .OR. N.LE.0 )
+ $ RETURN
+*
+* Check for currently supported options
+*
+ INFO = 0
+ IF( .NOT.LSAME( DIRECT, 'B' ) ) THEN
+ INFO = -3
+ ELSE IF( .NOT.LSAME( STOREV, 'R' ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZLARZB', -INFO )
+ RETURN
+ END IF
+*
+ IF( LSAME( TRANS, 'N' ) ) THEN
+ TRANST = 'C'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form H * C or H' * C
+*
+* W( 1:n, 1:k ) = conjg( C( 1:k, 1:n )' )
+*
+ DO 10 J = 1, K
+ CALL ZCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+ 10 CONTINUE
+*
+* W( 1:n, 1:k ) = W( 1:n, 1:k ) + ...
+* conjg( C( m-l+1:m, 1:n )' ) * V( 1:k, 1:l )'
+*
+ IF( L.GT.0 )
+ $ CALL ZGEMM( 'Transpose', 'Conjugate transpose', N, K, L,
+ $ ONE, C( M-L+1, 1 ), LDC, V, LDV, ONE, WORK,
+ $ LDWORK )
+*
+* W( 1:n, 1:k ) = W( 1:n, 1:k ) * T' or W( 1:m, 1:k ) * T
+*
+ CALL ZTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K, ONE, T,
+ $ LDT, WORK, LDWORK )
+*
+* C( 1:k, 1:n ) = C( 1:k, 1:n ) - conjg( W( 1:n, 1:k )' )
+*
+ DO 30 J = 1, N
+ DO 20 I = 1, K
+ C( I, J ) = C( I, J ) - WORK( J, I )
+ 20 CONTINUE
+ 30 CONTINUE
+*
+* C( m-l+1:m, 1:n ) = C( m-l+1:m, 1:n ) - ...
+* conjg( V( 1:k, 1:l )' ) * conjg( W( 1:n, 1:k )' )
+*
+ IF( L.GT.0 )
+ $ CALL ZGEMM( 'Transpose', 'Transpose', L, N, K, -ONE, V, LDV,
+ $ WORK, LDWORK, ONE, C( M-L+1, 1 ), LDC )
+*
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form C * H or C * H'
+*
+* W( 1:m, 1:k ) = C( 1:m, 1:k )
+*
+ DO 40 J = 1, K
+ CALL ZCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+ 40 CONTINUE
+*
+* W( 1:m, 1:k ) = W( 1:m, 1:k ) + ...
+* C( 1:m, n-l+1:n ) * conjg( V( 1:k, 1:l )' )
+*
+ IF( L.GT.0 )
+ $ CALL ZGEMM( 'No transpose', 'Transpose', M, K, L, ONE,
+ $ C( 1, N-L+1 ), LDC, V, LDV, ONE, WORK, LDWORK )
+*
+* W( 1:m, 1:k ) = W( 1:m, 1:k ) * conjg( T ) or
+* W( 1:m, 1:k ) * conjg( T' )
+*
+ DO 50 J = 1, K
+ CALL ZLACGV( K-J+1, T( J, J ), 1 )
+ 50 CONTINUE
+ CALL ZTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K, ONE, T,
+ $ LDT, WORK, LDWORK )
+ DO 60 J = 1, K
+ CALL ZLACGV( K-J+1, T( J, J ), 1 )
+ 60 CONTINUE
+*
+* C( 1:m, 1:k ) = C( 1:m, 1:k ) - W( 1:m, 1:k )
+*
+ DO 80 J = 1, K
+ DO 70 I = 1, M
+ C( I, J ) = C( I, J ) - WORK( I, J )
+ 70 CONTINUE
+ 80 CONTINUE
+*
+* C( 1:m, n-l+1:n ) = C( 1:m, n-l+1:n ) - ...
+* W( 1:m, 1:k ) * conjg( V( 1:k, 1:l ) )
+*
+ DO 90 J = 1, L
+ CALL ZLACGV( K, V( 1, J ), 1 )
+ 90 CONTINUE
+ IF( L.GT.0 )
+ $ CALL ZGEMM( 'No transpose', 'No transpose', M, L, K, -ONE,
+ $ WORK, LDWORK, V, LDV, ONE, C( 1, N-L+1 ), LDC )
+ DO 100 J = 1, L
+ CALL ZLACGV( K, V( 1, J ), 1 )
+ 100 CONTINUE
+*
+ END IF
+*
+ RETURN
+*
+* End of ZLARZB
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlarzt.f b/2.3-1/src/fortran/lapack/zlarzt.f
new file mode 100644
index 00000000..9242ed36
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlarzt.f
@@ -0,0 +1,186 @@
+ SUBROUTINE ZLARZT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, STOREV
+ INTEGER K, LDT, LDV, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 T( LDT, * ), TAU( * ), V( LDV, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLARZT forms the triangular factor T of a complex block reflector
+* H of order > n, which is defined as a product of k elementary
+* reflectors.
+*
+* If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
+*
+* If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
+*
+* If STOREV = 'C', the vector which defines the elementary reflector
+* H(i) is stored in the i-th column of the array V, and
+*
+* H = I - V * T * V'
+*
+* If STOREV = 'R', the vector which defines the elementary reflector
+* H(i) is stored in the i-th row of the array V, and
+*
+* H = I - V' * T * V
+*
+* Currently, only STOREV = 'R' and DIRECT = 'B' are supported.
+*
+* Arguments
+* =========
+*
+* DIRECT (input) CHARACTER*1
+* Specifies the order in which the elementary reflectors are
+* multiplied to form the block reflector:
+* = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)
+* = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+* STOREV (input) CHARACTER*1
+* Specifies how the vectors which define the elementary
+* reflectors are stored (see also Further Details):
+* = 'C': columnwise (not supported yet)
+* = 'R': rowwise
+*
+* N (input) INTEGER
+* The order of the block reflector H. N >= 0.
+*
+* K (input) INTEGER
+* The order of the triangular factor T (= the number of
+* elementary reflectors). K >= 1.
+*
+* V (input/output) COMPLEX*16 array, dimension
+* (LDV,K) if STOREV = 'C'
+* (LDV,N) if STOREV = 'R'
+* The matrix V. See further details.
+*
+* LDV (input) INTEGER
+* The leading dimension of the array V.
+* If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i).
+*
+* T (output) COMPLEX*16 array, dimension (LDT,K)
+* The k by k triangular factor T of the block reflector.
+* If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
+* lower triangular. The rest of the array is not used.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= K.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* The shape of the matrix V and the storage of the vectors which define
+* the H(i) is best illustrated by the following example with n = 5 and
+* k = 3. The elements equal to 1 are not stored; the corresponding
+* array elements are modified but restored on exit. The rest of the
+* array is not used.
+*
+* DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
+*
+* ______V_____
+* ( v1 v2 v3 ) / \
+* ( v1 v2 v3 ) ( v1 v1 v1 v1 v1 . . . . 1 )
+* V = ( v1 v2 v3 ) ( v2 v2 v2 v2 v2 . . . 1 )
+* ( v1 v2 v3 ) ( v3 v3 v3 v3 v3 . . 1 )
+* ( v1 v2 v3 )
+* . . .
+* . . .
+* 1 . .
+* 1 .
+* 1
+*
+* DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
+*
+* ______V_____
+* 1 / \
+* . 1 ( 1 . . . . v1 v1 v1 v1 v1 )
+* . . 1 ( . 1 . . . v2 v2 v2 v2 v2 )
+* . . . ( . . 1 . . v3 v3 v3 v3 v3 )
+* . . .
+* ( v1 v2 v3 )
+* ( v1 v2 v3 )
+* V = ( v1 v2 v3 )
+* ( v1 v2 v3 )
+* ( v1 v2 v3 )
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, INFO, J
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEMV, ZLACGV, ZTRMV
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Executable Statements ..
+*
+* Check for currently supported options
+*
+ INFO = 0
+ IF( .NOT.LSAME( DIRECT, 'B' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( STOREV, 'R' ) ) THEN
+ INFO = -2
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZLARZT', -INFO )
+ RETURN
+ END IF
+*
+ DO 20 I = K, 1, -1
+ IF( TAU( I ).EQ.ZERO ) THEN
+*
+* H(i) = I
+*
+ DO 10 J = I, K
+ T( J, I ) = ZERO
+ 10 CONTINUE
+ ELSE
+*
+* general case
+*
+ IF( I.LT.K ) THEN
+*
+* T(i+1:k,i) = - tau(i) * V(i+1:k,1:n) * V(i,1:n)'
+*
+ CALL ZLACGV( N, V( I, 1 ), LDV )
+ CALL ZGEMV( 'No transpose', K-I, N, -TAU( I ),
+ $ V( I+1, 1 ), LDV, V( I, 1 ), LDV, ZERO,
+ $ T( I+1, I ), 1 )
+ CALL ZLACGV( N, V( I, 1 ), LDV )
+*
+* T(i+1:k,i) = T(i+1:k,i+1:k) * T(i+1:k,i)
+*
+ CALL ZTRMV( 'Lower', 'No transpose', 'Non-unit', K-I,
+ $ T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
+ END IF
+ T( I, I ) = TAU( I )
+ END IF
+ 20 CONTINUE
+ RETURN
+*
+* End of ZLARZT
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlascl.f b/2.3-1/src/fortran/lapack/zlascl.f
new file mode 100644
index 00000000..36bb2445
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlascl.f
@@ -0,0 +1,267 @@
+ SUBROUTINE ZLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TYPE
+ INTEGER INFO, KL, KU, LDA, M, N
+ DOUBLE PRECISION CFROM, CTO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLASCL multiplies the M by N complex matrix A by the real scalar
+* CTO/CFROM. This is done without over/underflow as long as the final
+* result CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that
+* A may be full, upper triangular, lower triangular, upper Hessenberg,
+* or banded.
+*
+* Arguments
+* =========
+*
+* TYPE (input) CHARACTER*1
+* TYPE indices the storage type of the input matrix.
+* = 'G': A is a full matrix.
+* = 'L': A is a lower triangular matrix.
+* = 'U': A is an upper triangular matrix.
+* = 'H': A is an upper Hessenberg matrix.
+* = 'B': A is a symmetric band matrix with lower bandwidth KL
+* and upper bandwidth KU and with the only the lower
+* half stored.
+* = 'Q': A is a symmetric band matrix with lower bandwidth KL
+* and upper bandwidth KU and with the only the upper
+* half stored.
+* = 'Z': A is a band matrix with lower bandwidth KL and upper
+* bandwidth KU.
+*
+* KL (input) INTEGER
+* The lower bandwidth of A. Referenced only if TYPE = 'B',
+* 'Q' or 'Z'.
+*
+* KU (input) INTEGER
+* The upper bandwidth of A. Referenced only if TYPE = 'B',
+* 'Q' or 'Z'.
+*
+* CFROM (input) DOUBLE PRECISION
+* CTO (input) DOUBLE PRECISION
+* The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
+* without over/underflow if the final result CTO*A(I,J)/CFROM
+* can be represented without over/underflow. CFROM must be
+* nonzero.
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* The matrix to be multiplied by CTO/CFROM. See TYPE for the
+* storage type.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* INFO (output) INTEGER
+* 0 - successful exit
+* <0 - if INFO = -i, the i-th argument had an illegal value.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL DONE
+ INTEGER I, ITYPE, J, K1, K2, K3, K4
+ DOUBLE PRECISION BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL LSAME, DLAMCH
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+*
+ IF( LSAME( TYPE, 'G' ) ) THEN
+ ITYPE = 0
+ ELSE IF( LSAME( TYPE, 'L' ) ) THEN
+ ITYPE = 1
+ ELSE IF( LSAME( TYPE, 'U' ) ) THEN
+ ITYPE = 2
+ ELSE IF( LSAME( TYPE, 'H' ) ) THEN
+ ITYPE = 3
+ ELSE IF( LSAME( TYPE, 'B' ) ) THEN
+ ITYPE = 4
+ ELSE IF( LSAME( TYPE, 'Q' ) ) THEN
+ ITYPE = 5
+ ELSE IF( LSAME( TYPE, 'Z' ) ) THEN
+ ITYPE = 6
+ ELSE
+ ITYPE = -1
+ END IF
+*
+ IF( ITYPE.EQ.-1 ) THEN
+ INFO = -1
+ ELSE IF( CFROM.EQ.ZERO ) THEN
+ INFO = -4
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -6
+ ELSE IF( N.LT.0 .OR. ( ITYPE.EQ.4 .AND. N.NE.M ) .OR.
+ $ ( ITYPE.EQ.5 .AND. N.NE.M ) ) THEN
+ INFO = -7
+ ELSE IF( ITYPE.LE.3 .AND. LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -9
+ ELSE IF( ITYPE.GE.4 ) THEN
+ IF( KL.LT.0 .OR. KL.GT.MAX( M-1, 0 ) ) THEN
+ INFO = -2
+ ELSE IF( KU.LT.0 .OR. KU.GT.MAX( N-1, 0 ) .OR.
+ $ ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. KL.NE.KU ) )
+ $ THEN
+ INFO = -3
+ ELSE IF( ( ITYPE.EQ.4 .AND. LDA.LT.KL+1 ) .OR.
+ $ ( ITYPE.EQ.5 .AND. LDA.LT.KU+1 ) .OR.
+ $ ( ITYPE.EQ.6 .AND. LDA.LT.2*KL+KU+1 ) ) THEN
+ INFO = -9
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZLASCL', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 .OR. M.EQ.0 )
+ $ RETURN
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+*
+ CFROMC = CFROM
+ CTOC = CTO
+*
+ 10 CONTINUE
+ CFROM1 = CFROMC*SMLNUM
+ CTO1 = CTOC / BIGNUM
+ IF( ABS( CFROM1 ).GT.ABS( CTOC ) .AND. CTOC.NE.ZERO ) THEN
+ MUL = SMLNUM
+ DONE = .FALSE.
+ CFROMC = CFROM1
+ ELSE IF( ABS( CTO1 ).GT.ABS( CFROMC ) ) THEN
+ MUL = BIGNUM
+ DONE = .FALSE.
+ CTOC = CTO1
+ ELSE
+ MUL = CTOC / CFROMC
+ DONE = .TRUE.
+ END IF
+*
+ IF( ITYPE.EQ.0 ) THEN
+*
+* Full matrix
+*
+ DO 30 J = 1, N
+ DO 20 I = 1, M
+ A( I, J ) = A( I, J )*MUL
+ 20 CONTINUE
+ 30 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.1 ) THEN
+*
+* Lower triangular matrix
+*
+ DO 50 J = 1, N
+ DO 40 I = J, M
+ A( I, J ) = A( I, J )*MUL
+ 40 CONTINUE
+ 50 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.2 ) THEN
+*
+* Upper triangular matrix
+*
+ DO 70 J = 1, N
+ DO 60 I = 1, MIN( J, M )
+ A( I, J ) = A( I, J )*MUL
+ 60 CONTINUE
+ 70 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.3 ) THEN
+*
+* Upper Hessenberg matrix
+*
+ DO 90 J = 1, N
+ DO 80 I = 1, MIN( J+1, M )
+ A( I, J ) = A( I, J )*MUL
+ 80 CONTINUE
+ 90 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.4 ) THEN
+*
+* Lower half of a symmetric band matrix
+*
+ K3 = KL + 1
+ K4 = N + 1
+ DO 110 J = 1, N
+ DO 100 I = 1, MIN( K3, K4-J )
+ A( I, J ) = A( I, J )*MUL
+ 100 CONTINUE
+ 110 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.5 ) THEN
+*
+* Upper half of a symmetric band matrix
+*
+ K1 = KU + 2
+ K3 = KU + 1
+ DO 130 J = 1, N
+ DO 120 I = MAX( K1-J, 1 ), K3
+ A( I, J ) = A( I, J )*MUL
+ 120 CONTINUE
+ 130 CONTINUE
+*
+ ELSE IF( ITYPE.EQ.6 ) THEN
+*
+* Band matrix
+*
+ K1 = KL + KU + 2
+ K2 = KL + 1
+ K3 = 2*KL + KU + 1
+ K4 = KL + KU + 1 + M
+ DO 150 J = 1, N
+ DO 140 I = MAX( K1-J, K2 ), MIN( K3, K4-J )
+ A( I, J ) = A( I, J )*MUL
+ 140 CONTINUE
+ 150 CONTINUE
+*
+ END IF
+*
+ IF( .NOT.DONE )
+ $ GO TO 10
+*
+ RETURN
+*
+* End of ZLASCL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaset.f b/2.3-1/src/fortran/lapack/zlaset.f
new file mode 100644
index 00000000..88fc21b2
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaset.f
@@ -0,0 +1,114 @@
+ SUBROUTINE ZLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER LDA, M, N
+ COMPLEX*16 ALPHA, BETA
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLASET initializes a 2-D array A to BETA on the diagonal and
+* ALPHA on the offdiagonals.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies the part of the matrix A to be set.
+* = 'U': Upper triangular part is set. The lower triangle
+* is unchanged.
+* = 'L': Lower triangular part is set. The upper triangle
+* is unchanged.
+* Otherwise: All of the matrix A is set.
+*
+* M (input) INTEGER
+* On entry, M specifies the number of rows of A.
+*
+* N (input) INTEGER
+* On entry, N specifies the number of columns of A.
+*
+* ALPHA (input) COMPLEX*16
+* All the offdiagonal array elements are set to ALPHA.
+*
+* BETA (input) COMPLEX*16
+* All the diagonal array elements are set to BETA.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the m by n matrix A.
+* On exit, A(i,j) = ALPHA, 1 <= i <= m, 1 <= j <= n, i.ne.j;
+* A(i,i) = BETA , 1 <= i <= min(m,n)
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, J
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MIN
+* ..
+* .. Executable Statements ..
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+*
+* Set the diagonal to BETA and the strictly upper triangular
+* part of the array to ALPHA.
+*
+ DO 20 J = 2, N
+ DO 10 I = 1, MIN( J-1, M )
+ A( I, J ) = ALPHA
+ 10 CONTINUE
+ 20 CONTINUE
+ DO 30 I = 1, MIN( N, M )
+ A( I, I ) = BETA
+ 30 CONTINUE
+*
+ ELSE IF( LSAME( UPLO, 'L' ) ) THEN
+*
+* Set the diagonal to BETA and the strictly lower triangular
+* part of the array to ALPHA.
+*
+ DO 50 J = 1, MIN( M, N )
+ DO 40 I = J + 1, M
+ A( I, J ) = ALPHA
+ 40 CONTINUE
+ 50 CONTINUE
+ DO 60 I = 1, MIN( N, M )
+ A( I, I ) = BETA
+ 60 CONTINUE
+*
+ ELSE
+*
+* Set the array to BETA on the diagonal and ALPHA on the
+* offdiagonal.
+*
+ DO 80 J = 1, N
+ DO 70 I = 1, M
+ A( I, J ) = ALPHA
+ 70 CONTINUE
+ 80 CONTINUE
+ DO 90 I = 1, MIN( M, N )
+ A( I, I ) = BETA
+ 90 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZLASET
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlasr.f b/2.3-1/src/fortran/lapack/zlasr.f
new file mode 100644
index 00000000..507a20c4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlasr.f
@@ -0,0 +1,363 @@
+ SUBROUTINE ZLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIRECT, PIVOT, SIDE
+ INTEGER LDA, M, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( * ), S( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLASR applies a sequence of real plane rotations to a complex matrix
+* A, from either the left or the right.
+*
+* When SIDE = 'L', the transformation takes the form
+*
+* A := P*A
+*
+* and when SIDE = 'R', the transformation takes the form
+*
+* A := A*P**T
+*
+* where P is an orthogonal matrix consisting of a sequence of z plane
+* rotations, with z = M when SIDE = 'L' and z = N when SIDE = 'R',
+* and P**T is the transpose of P.
+*
+* When DIRECT = 'F' (Forward sequence), then
+*
+* P = P(z-1) * ... * P(2) * P(1)
+*
+* and when DIRECT = 'B' (Backward sequence), then
+*
+* P = P(1) * P(2) * ... * P(z-1)
+*
+* where P(k) is a plane rotation matrix defined by the 2-by-2 rotation
+*
+* R(k) = ( c(k) s(k) )
+* = ( -s(k) c(k) ).
+*
+* When PIVOT = 'V' (Variable pivot), the rotation is performed
+* for the plane (k,k+1), i.e., P(k) has the form
+*
+* P(k) = ( 1 )
+* ( ... )
+* ( 1 )
+* ( c(k) s(k) )
+* ( -s(k) c(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+*
+* where R(k) appears as a rank-2 modification to the identity matrix in
+* rows and columns k and k+1.
+*
+* When PIVOT = 'T' (Top pivot), the rotation is performed for the
+* plane (1,k+1), so P(k) has the form
+*
+* P(k) = ( c(k) s(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+* ( -s(k) c(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+*
+* where R(k) appears in rows and columns 1 and k+1.
+*
+* Similarly, when PIVOT = 'B' (Bottom pivot), the rotation is
+* performed for the plane (k,z), giving P(k) the form
+*
+* P(k) = ( 1 )
+* ( ... )
+* ( 1 )
+* ( c(k) s(k) )
+* ( 1 )
+* ( ... )
+* ( 1 )
+* ( -s(k) c(k) )
+*
+* where R(k) appears in rows and columns k and z. The rotations are
+* performed without ever forming P(k) explicitly.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* Specifies whether the plane rotation matrix P is applied to
+* A on the left or the right.
+* = 'L': Left, compute A := P*A
+* = 'R': Right, compute A:= A*P**T
+*
+* PIVOT (input) CHARACTER*1
+* Specifies the plane for which P(k) is a plane rotation
+* matrix.
+* = 'V': Variable pivot, the plane (k,k+1)
+* = 'T': Top pivot, the plane (1,k+1)
+* = 'B': Bottom pivot, the plane (k,z)
+*
+* DIRECT (input) CHARACTER*1
+* Specifies whether P is a forward or backward sequence of
+* plane rotations.
+* = 'F': Forward, P = P(z-1)*...*P(2)*P(1)
+* = 'B': Backward, P = P(1)*P(2)*...*P(z-1)
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. If m <= 1, an immediate
+* return is effected.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. If n <= 1, an
+* immediate return is effected.
+*
+* C (input) DOUBLE PRECISION array, dimension
+* (M-1) if SIDE = 'L'
+* (N-1) if SIDE = 'R'
+* The cosines c(k) of the plane rotations.
+*
+* S (input) DOUBLE PRECISION array, dimension
+* (M-1) if SIDE = 'L'
+* (N-1) if SIDE = 'R'
+* The sines s(k) of the plane rotations. The 2-by-2 plane
+* rotation part of the matrix P(k), R(k), has the form
+* R(k) = ( c(k) s(k) )
+* ( -s(k) c(k) ).
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* The M-by-N matrix A. On exit, A is overwritten by P*A if
+* SIDE = 'R' or by A*P**T if SIDE = 'L'.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, INFO, J
+ DOUBLE PRECISION CTEMP, STEMP
+ COMPLEX*16 TEMP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters
+*
+ INFO = 0
+ IF( .NOT.( LSAME( SIDE, 'L' ) .OR. LSAME( SIDE, 'R' ) ) ) THEN
+ INFO = 1
+ ELSE IF( .NOT.( LSAME( PIVOT, 'V' ) .OR. LSAME( PIVOT,
+ $ 'T' ) .OR. LSAME( PIVOT, 'B' ) ) ) THEN
+ INFO = 2
+ ELSE IF( .NOT.( LSAME( DIRECT, 'F' ) .OR. LSAME( DIRECT, 'B' ) ) )
+ $ THEN
+ INFO = 3
+ ELSE IF( M.LT.0 ) THEN
+ INFO = 4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = 5
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = 9
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZLASR ', INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) )
+ $ RETURN
+ IF( LSAME( SIDE, 'L' ) ) THEN
+*
+* Form P * A
+*
+ IF( LSAME( PIVOT, 'V' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 20 J = 1, M - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 10 I = 1, N
+ TEMP = A( J+1, I )
+ A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
+ A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
+ 10 CONTINUE
+ END IF
+ 20 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 40 J = M - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 30 I = 1, N
+ TEMP = A( J+1, I )
+ A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
+ A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
+ 30 CONTINUE
+ END IF
+ 40 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'T' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 60 J = 2, M
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 50 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
+ A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 80 J = M, 2, -1
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 70 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
+ A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
+ 70 CONTINUE
+ END IF
+ 80 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'B' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 100 J = 1, M - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 90 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
+ A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
+ 90 CONTINUE
+ END IF
+ 100 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 120 J = M - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 110 I = 1, N
+ TEMP = A( J, I )
+ A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
+ A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
+ 110 CONTINUE
+ END IF
+ 120 CONTINUE
+ END IF
+ END IF
+ ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+* Form A * P'
+*
+ IF( LSAME( PIVOT, 'V' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 140 J = 1, N - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 130 I = 1, M
+ TEMP = A( I, J+1 )
+ A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
+ A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
+ 130 CONTINUE
+ END IF
+ 140 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 160 J = N - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 150 I = 1, M
+ TEMP = A( I, J+1 )
+ A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
+ A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
+ 150 CONTINUE
+ END IF
+ 160 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'T' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 180 J = 2, N
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 170 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
+ A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
+ 170 CONTINUE
+ END IF
+ 180 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 200 J = N, 2, -1
+ CTEMP = C( J-1 )
+ STEMP = S( J-1 )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 190 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
+ A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
+ 190 CONTINUE
+ END IF
+ 200 CONTINUE
+ END IF
+ ELSE IF( LSAME( PIVOT, 'B' ) ) THEN
+ IF( LSAME( DIRECT, 'F' ) ) THEN
+ DO 220 J = 1, N - 1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 210 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
+ A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
+ 210 CONTINUE
+ END IF
+ 220 CONTINUE
+ ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+ DO 240 J = N - 1, 1, -1
+ CTEMP = C( J )
+ STEMP = S( J )
+ IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+ DO 230 I = 1, M
+ TEMP = A( I, J )
+ A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
+ A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
+ 230 CONTINUE
+ END IF
+ 240 CONTINUE
+ END IF
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZLASR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlassq.f b/2.3-1/src/fortran/lapack/zlassq.f
new file mode 100644
index 00000000..a209984b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlassq.f
@@ -0,0 +1,101 @@
+ SUBROUTINE ZLASSQ( N, X, INCX, SCALE, SUMSQ )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, N
+ DOUBLE PRECISION SCALE, SUMSQ
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLASSQ returns the values scl and ssq such that
+*
+* ( scl**2 )*ssq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq,
+*
+* where x( i ) = abs( X( 1 + ( i - 1 )*INCX ) ). The value of sumsq is
+* assumed to be at least unity and the value of ssq will then satisfy
+*
+* 1.0 .le. ssq .le. ( sumsq + 2*n ).
+*
+* scale is assumed to be non-negative and scl returns the value
+*
+* scl = max( scale, abs( real( x( i ) ) ), abs( aimag( x( i ) ) ) ),
+* i
+*
+* scale and sumsq must be supplied in SCALE and SUMSQ respectively.
+* SCALE and SUMSQ are overwritten by scl and ssq respectively.
+*
+* The routine makes only one pass through the vector X.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of elements to be used from the vector X.
+*
+* X (input) COMPLEX*16 array, dimension (N)
+* The vector x as described above.
+* x( i ) = X( 1 + ( i - 1 )*INCX ), 1 <= i <= n.
+*
+* INCX (input) INTEGER
+* The increment between successive values of the vector X.
+* INCX > 0.
+*
+* SCALE (input/output) DOUBLE PRECISION
+* On entry, the value scale in the equation above.
+* On exit, SCALE is overwritten with the value scl .
+*
+* SUMSQ (input/output) DOUBLE PRECISION
+* On entry, the value sumsq in the equation above.
+* On exit, SUMSQ is overwritten with the value ssq .
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO
+ PARAMETER ( ZERO = 0.0D+0 )
+* ..
+* .. Local Scalars ..
+ INTEGER IX
+ DOUBLE PRECISION TEMP1
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DIMAG
+* ..
+* .. Executable Statements ..
+*
+ IF( N.GT.0 ) THEN
+ DO 10 IX = 1, 1 + ( N-1 )*INCX, INCX
+ IF( DBLE( X( IX ) ).NE.ZERO ) THEN
+ TEMP1 = ABS( DBLE( X( IX ) ) )
+ IF( SCALE.LT.TEMP1 ) THEN
+ SUMSQ = 1 + SUMSQ*( SCALE / TEMP1 )**2
+ SCALE = TEMP1
+ ELSE
+ SUMSQ = SUMSQ + ( TEMP1 / SCALE )**2
+ END IF
+ END IF
+ IF( DIMAG( X( IX ) ).NE.ZERO ) THEN
+ TEMP1 = ABS( DIMAG( X( IX ) ) )
+ IF( SCALE.LT.TEMP1 ) THEN
+ SUMSQ = 1 + SUMSQ*( SCALE / TEMP1 )**2
+ SCALE = TEMP1
+ ELSE
+ SUMSQ = SUMSQ + ( TEMP1 / SCALE )**2
+ END IF
+ END IF
+ 10 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZLASSQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlaswp.f b/2.3-1/src/fortran/lapack/zlaswp.f
new file mode 100644
index 00000000..8b07e48b
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlaswp.f
@@ -0,0 +1,119 @@
+ SUBROUTINE ZLASWP( N, A, LDA, K1, K2, IPIV, INCX )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, K1, K2, LDA, N
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLASWP performs a series of row interchanges on the matrix A.
+* One row interchange is initiated for each of rows K1 through K2 of A.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of columns of the matrix A.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the matrix of column dimension N to which the row
+* interchanges will be applied.
+* On exit, the permuted matrix.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+*
+* K1 (input) INTEGER
+* The first element of IPIV for which a row interchange will
+* be done.
+*
+* K2 (input) INTEGER
+* The last element of IPIV for which a row interchange will
+* be done.
+*
+* IPIV (input) INTEGER array, dimension (K2*abs(INCX))
+* The vector of pivot indices. Only the elements in positions
+* K1 through K2 of IPIV are accessed.
+* IPIV(K) = L implies rows K and L are to be interchanged.
+*
+* INCX (input) INTEGER
+* The increment between successive values of IPIV. If IPIV
+* is negative, the pivots are applied in reverse order.
+*
+* Further Details
+* ===============
+*
+* Modified by
+* R. C. Whaley, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, I1, I2, INC, IP, IX, IX0, J, K, N32
+ COMPLEX*16 TEMP
+* ..
+* .. Executable Statements ..
+*
+* Interchange row I with row IPIV(I) for each of rows K1 through K2.
+*
+ IF( INCX.GT.0 ) THEN
+ IX0 = K1
+ I1 = K1
+ I2 = K2
+ INC = 1
+ ELSE IF( INCX.LT.0 ) THEN
+ IX0 = 1 + ( 1-K2 )*INCX
+ I1 = K2
+ I2 = K1
+ INC = -1
+ ELSE
+ RETURN
+ END IF
+*
+ N32 = ( N / 32 )*32
+ IF( N32.NE.0 ) THEN
+ DO 30 J = 1, N32, 32
+ IX = IX0
+ DO 20 I = I1, I2, INC
+ IP = IPIV( IX )
+ IF( IP.NE.I ) THEN
+ DO 10 K = J, J + 31
+ TEMP = A( I, K )
+ A( I, K ) = A( IP, K )
+ A( IP, K ) = TEMP
+ 10 CONTINUE
+ END IF
+ IX = IX + INCX
+ 20 CONTINUE
+ 30 CONTINUE
+ END IF
+ IF( N32.NE.N ) THEN
+ N32 = N32 + 1
+ IX = IX0
+ DO 50 I = I1, I2, INC
+ IP = IPIV( IX )
+ IF( IP.NE.I ) THEN
+ DO 40 K = N32, N
+ TEMP = A( I, K )
+ A( I, K ) = A( IP, K )
+ A( IP, K ) = TEMP
+ 40 CONTINUE
+ END IF
+ IX = IX + INCX
+ 50 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZLASWP
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlatdf.f b/2.3-1/src/fortran/lapack/zlatdf.f
new file mode 100644
index 00000000..d637b8f1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlatdf.f
@@ -0,0 +1,241 @@
+ SUBROUTINE ZLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
+ $ JPIV )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IJOB, LDZ, N
+ DOUBLE PRECISION RDSCAL, RDSUM
+* ..
+* .. Array Arguments ..
+ INTEGER IPIV( * ), JPIV( * )
+ COMPLEX*16 RHS( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLATDF computes the contribution to the reciprocal Dif-estimate
+* by solving for x in Z * x = b, where b is chosen such that the norm
+* of x is as large as possible. It is assumed that LU decomposition
+* of Z has been computed by ZGETC2. On entry RHS = f holds the
+* contribution from earlier solved sub-systems, and on return RHS = x.
+*
+* The factorization of Z returned by ZGETC2 has the form
+* Z = P * L * U * Q, where P and Q are permutation matrices. L is lower
+* triangular with unit diagonal elements and U is upper triangular.
+*
+* Arguments
+* =========
+*
+* IJOB (input) INTEGER
+* IJOB = 2: First compute an approximative null-vector e
+* of Z using ZGECON, e is normalized and solve for
+* Zx = +-e - f with the sign giving the greater value of
+* 2-norm(x). About 5 times as expensive as Default.
+* IJOB .ne. 2: Local look ahead strategy where
+* all entries of the r.h.s. b is choosen as either +1 or
+* -1. Default.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Z.
+*
+* Z (input) DOUBLE PRECISION array, dimension (LDZ, N)
+* On entry, the LU part of the factorization of the n-by-n
+* matrix Z computed by ZGETC2: Z = P * L * U * Q
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDA >= max(1, N).
+*
+* RHS (input/output) DOUBLE PRECISION array, dimension (N).
+* On entry, RHS contains contributions from other subsystems.
+* On exit, RHS contains the solution of the subsystem with
+* entries according to the value of IJOB (see above).
+*
+* RDSUM (input/output) DOUBLE PRECISION
+* On entry, the sum of squares of computed contributions to
+* the Dif-estimate under computation by ZTGSYL, where the
+* scaling factor RDSCAL (see below) has been factored out.
+* On exit, the corresponding sum of squares updated with the
+* contributions from the current sub-system.
+* If TRANS = 'T' RDSUM is not touched.
+* NOTE: RDSUM only makes sense when ZTGSY2 is called by CTGSYL.
+*
+* RDSCAL (input/output) DOUBLE PRECISION
+* On entry, scaling factor used to prevent overflow in RDSUM.
+* On exit, RDSCAL is updated w.r.t. the current contributions
+* in RDSUM.
+* If TRANS = 'T', RDSCAL is not touched.
+* NOTE: RDSCAL only makes sense when ZTGSY2 is called by
+* ZTGSYL.
+*
+* IPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= i <= N, row i of the
+* matrix has been interchanged with row IPIV(i).
+*
+* JPIV (input) INTEGER array, dimension (N).
+* The pivot indices; for 1 <= j <= N, column j of the
+* matrix has been interchanged with column JPIV(j).
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* This routine is a further developed implementation of algorithm
+* BSOLVE in [1] using complete pivoting in the LU factorization.
+*
+* [1] Bo Kagstrom and Lars Westin,
+* Generalized Schur Methods with Condition Estimators for
+* Solving the Generalized Sylvester Equation, IEEE Transactions
+* on Automatic Control, Vol. 34, No. 7, July 1989, pp 745-751.
+*
+* [2] Peter Poromaa,
+* On Efficient and Robust Estimators for the Separation
+* between two Regular Matrix Pairs with Applications in
+* Condition Estimation. Report UMINF-95.05, Department of
+* Computing Science, Umea University, S-901 87 Umea, Sweden,
+* 1995.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER MAXDIM
+ PARAMETER ( MAXDIM = 2 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ COMPLEX*16 CONE
+ PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, INFO, J, K
+ DOUBLE PRECISION RTEMP, SCALE, SMINU, SPLUS
+ COMPLEX*16 BM, BP, PMONE, TEMP
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION RWORK( MAXDIM )
+ COMPLEX*16 WORK( 4*MAXDIM ), XM( MAXDIM ), XP( MAXDIM )
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZAXPY, ZCOPY, ZGECON, ZGESC2, ZLASSQ, ZLASWP,
+ $ ZSCAL
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DZASUM
+ COMPLEX*16 ZDOTC
+ EXTERNAL DZASUM, ZDOTC
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, SQRT
+* ..
+* .. Executable Statements ..
+*
+ IF( IJOB.NE.2 ) THEN
+*
+* Apply permutations IPIV to RHS
+*
+ CALL ZLASWP( 1, RHS, LDZ, 1, N-1, IPIV, 1 )
+*
+* Solve for L-part choosing RHS either to +1 or -1.
+*
+ PMONE = -CONE
+ DO 10 J = 1, N - 1
+ BP = RHS( J ) + CONE
+ BM = RHS( J ) - CONE
+ SPLUS = ONE
+*
+* Lockahead for L- part RHS(1:N-1) = +-1
+* SPLUS and SMIN computed more efficiently than in BSOLVE[1].
+*
+ SPLUS = SPLUS + DBLE( ZDOTC( N-J, Z( J+1, J ), 1, Z( J+1,
+ $ J ), 1 ) )
+ SMINU = DBLE( ZDOTC( N-J, Z( J+1, J ), 1, RHS( J+1 ), 1 ) )
+ SPLUS = SPLUS*DBLE( RHS( J ) )
+ IF( SPLUS.GT.SMINU ) THEN
+ RHS( J ) = BP
+ ELSE IF( SMINU.GT.SPLUS ) THEN
+ RHS( J ) = BM
+ ELSE
+*
+* In this case the updating sums are equal and we can
+* choose RHS(J) +1 or -1. The first time this happens we
+* choose -1, thereafter +1. This is a simple way to get
+* good estimates of matrices like Byers well-known example
+* (see [1]). (Not done in BSOLVE.)
+*
+ RHS( J ) = RHS( J ) + PMONE
+ PMONE = CONE
+ END IF
+*
+* Compute the remaining r.h.s.
+*
+ TEMP = -RHS( J )
+ CALL ZAXPY( N-J, TEMP, Z( J+1, J ), 1, RHS( J+1 ), 1 )
+ 10 CONTINUE
+*
+* Solve for U- part, lockahead for RHS(N) = +-1. This is not done
+* In BSOLVE and will hopefully give us a better estimate because
+* any ill-conditioning of the original matrix is transfered to U
+* and not to L. U(N, N) is an approximation to sigma_min(LU).
+*
+ CALL ZCOPY( N-1, RHS, 1, WORK, 1 )
+ WORK( N ) = RHS( N ) + CONE
+ RHS( N ) = RHS( N ) - CONE
+ SPLUS = ZERO
+ SMINU = ZERO
+ DO 30 I = N, 1, -1
+ TEMP = CONE / Z( I, I )
+ WORK( I ) = WORK( I )*TEMP
+ RHS( I ) = RHS( I )*TEMP
+ DO 20 K = I + 1, N
+ WORK( I ) = WORK( I ) - WORK( K )*( Z( I, K )*TEMP )
+ RHS( I ) = RHS( I ) - RHS( K )*( Z( I, K )*TEMP )
+ 20 CONTINUE
+ SPLUS = SPLUS + ABS( WORK( I ) )
+ SMINU = SMINU + ABS( RHS( I ) )
+ 30 CONTINUE
+ IF( SPLUS.GT.SMINU )
+ $ CALL ZCOPY( N, WORK, 1, RHS, 1 )
+*
+* Apply the permutations JPIV to the computed solution (RHS)
+*
+ CALL ZLASWP( 1, RHS, LDZ, 1, N-1, JPIV, -1 )
+*
+* Compute the sum of squares
+*
+ CALL ZLASSQ( N, RHS, 1, RDSCAL, RDSUM )
+ RETURN
+ END IF
+*
+* ENTRY IJOB = 2
+*
+* Compute approximate nullvector XM of Z
+*
+ CALL ZGECON( 'I', N, Z, LDZ, ONE, RTEMP, WORK, RWORK, INFO )
+ CALL ZCOPY( N, WORK( N+1 ), 1, XM, 1 )
+*
+* Compute RHS
+*
+ CALL ZLASWP( 1, XM, LDZ, 1, N-1, IPIV, -1 )
+ TEMP = CONE / SQRT( ZDOTC( N, XM, 1, XM, 1 ) )
+ CALL ZSCAL( N, TEMP, XM, 1 )
+ CALL ZCOPY( N, XM, 1, XP, 1 )
+ CALL ZAXPY( N, CONE, RHS, 1, XP, 1 )
+ CALL ZAXPY( N, -CONE, XM, 1, RHS, 1 )
+ CALL ZGESC2( N, Z, LDZ, RHS, IPIV, JPIV, SCALE )
+ CALL ZGESC2( N, Z, LDZ, XP, IPIV, JPIV, SCALE )
+ IF( DZASUM( N, XP, 1 ).GT.DZASUM( N, RHS, 1 ) )
+ $ CALL ZCOPY( N, XP, 1, RHS, 1 )
+*
+* Compute the sum of squares
+*
+ CALL ZLASSQ( N, RHS, 1, RDSCAL, RDSUM )
+ RETURN
+*
+* End of ZLATDF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlatrd.f b/2.3-1/src/fortran/lapack/zlatrd.f
new file mode 100644
index 00000000..5fef7b5c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlatrd.f
@@ -0,0 +1,279 @@
+ SUBROUTINE ZLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER LDA, LDW, N, NB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION E( * )
+ COMPLEX*16 A( LDA, * ), TAU( * ), W( LDW, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLATRD reduces NB rows and columns of a complex Hermitian matrix A to
+* Hermitian tridiagonal form by a unitary similarity
+* transformation Q' * A * Q, and returns the matrices V and W which are
+* needed to apply the transformation to the unreduced part of A.
+*
+* If UPLO = 'U', ZLATRD reduces the last NB rows and columns of a
+* matrix, of which the upper triangle is supplied;
+* if UPLO = 'L', ZLATRD reduces the first NB rows and columns of a
+* matrix, of which the lower triangle is supplied.
+*
+* This is an auxiliary routine called by ZHETRD.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* Hermitian matrix A is stored:
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A.
+*
+* NB (input) INTEGER
+* The number of rows and columns to be reduced.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+* n-by-n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n-by-n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+* On exit:
+* if UPLO = 'U', the last NB columns have been reduced to
+* tridiagonal form, with the diagonal elements overwriting
+* the diagonal elements of A; the elements above the diagonal
+* with the array TAU, represent the unitary matrix Q as a
+* product of elementary reflectors;
+* if UPLO = 'L', the first NB columns have been reduced to
+* tridiagonal form, with the diagonal elements overwriting
+* the diagonal elements of A; the elements below the diagonal
+* with the array TAU, represent the unitary matrix Q as a
+* product of elementary reflectors.
+* See Further Details.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* E (output) DOUBLE PRECISION array, dimension (N-1)
+* If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal
+* elements of the last NB columns of the reduced matrix;
+* if UPLO = 'L', E(1:nb) contains the subdiagonal elements of
+* the first NB columns of the reduced matrix.
+*
+* TAU (output) COMPLEX*16 array, dimension (N-1)
+* The scalar factors of the elementary reflectors, stored in
+* TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
+* See Further Details.
+*
+* W (output) COMPLEX*16 array, dimension (LDW,NB)
+* The n-by-nb matrix W required to update the unreduced part
+* of A.
+*
+* LDW (input) INTEGER
+* The leading dimension of the array W. LDW >= max(1,N).
+*
+* Further Details
+* ===============
+*
+* If UPLO = 'U', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(n) H(n-1) . . . H(n-nb+1).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i),
+* and tau in TAU(i-1).
+*
+* If UPLO = 'L', the matrix Q is represented as a product of elementary
+* reflectors
+*
+* Q = H(1) H(2) . . . H(nb).
+*
+* Each H(i) has the form
+*
+* H(i) = I - tau * v * v'
+*
+* where tau is a complex scalar, and v is a complex vector with
+* v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i),
+* and tau in TAU(i).
+*
+* The elements of the vectors v together form the n-by-nb matrix V
+* which is needed, with W, to apply the transformation to the unreduced
+* part of the matrix, using a Hermitian rank-2k update of the form:
+* A := A - V*W' - W*V'.
+*
+* The contents of A on exit are illustrated by the following examples
+* with n = 5 and nb = 2:
+*
+* if UPLO = 'U': if UPLO = 'L':
+*
+* ( a a a v4 v5 ) ( d )
+* ( a a v4 v5 ) ( 1 d )
+* ( a 1 v5 ) ( v1 1 a )
+* ( d 1 ) ( v1 v2 a a )
+* ( d ) ( v1 v2 a a a )
+*
+* where d denotes a diagonal element of the reduced matrix, a denotes
+* an element of the original matrix that is unchanged, and vi denotes
+* an element of the vector defining H(i).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE, HALF
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ),
+ $ HALF = ( 0.5D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, IW
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZAXPY, ZGEMV, ZHEMV, ZLACGV, ZLARFG, ZSCAL
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ COMPLEX*16 ZDOTC
+ EXTERNAL LSAME, ZDOTC
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MIN
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+ IF( LSAME( UPLO, 'U' ) ) THEN
+*
+* Reduce last NB columns of upper triangle
+*
+ DO 10 I = N, N - NB + 1, -1
+ IW = I - N + NB
+ IF( I.LT.N ) THEN
+*
+* Update A(1:i,i)
+*
+ A( I, I ) = DBLE( A( I, I ) )
+ CALL ZLACGV( N-I, W( I, IW+1 ), LDW )
+ CALL ZGEMV( 'No transpose', I, N-I, -ONE, A( 1, I+1 ),
+ $ LDA, W( I, IW+1 ), LDW, ONE, A( 1, I ), 1 )
+ CALL ZLACGV( N-I, W( I, IW+1 ), LDW )
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ CALL ZGEMV( 'No transpose', I, N-I, -ONE, W( 1, IW+1 ),
+ $ LDW, A( I, I+1 ), LDA, ONE, A( 1, I ), 1 )
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ A( I, I ) = DBLE( A( I, I ) )
+ END IF
+ IF( I.GT.1 ) THEN
+*
+* Generate elementary reflector H(i) to annihilate
+* A(1:i-2,i)
+*
+ ALPHA = A( I-1, I )
+ CALL ZLARFG( I-1, ALPHA, A( 1, I ), 1, TAU( I-1 ) )
+ E( I-1 ) = ALPHA
+ A( I-1, I ) = ONE
+*
+* Compute W(1:i-1,i)
+*
+ CALL ZHEMV( 'Upper', I-1, ONE, A, LDA, A( 1, I ), 1,
+ $ ZERO, W( 1, IW ), 1 )
+ IF( I.LT.N ) THEN
+ CALL ZGEMV( 'Conjugate transpose', I-1, N-I, ONE,
+ $ W( 1, IW+1 ), LDW, A( 1, I ), 1, ZERO,
+ $ W( I+1, IW ), 1 )
+ CALL ZGEMV( 'No transpose', I-1, N-I, -ONE,
+ $ A( 1, I+1 ), LDA, W( I+1, IW ), 1, ONE,
+ $ W( 1, IW ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', I-1, N-I, ONE,
+ $ A( 1, I+1 ), LDA, A( 1, I ), 1, ZERO,
+ $ W( I+1, IW ), 1 )
+ CALL ZGEMV( 'No transpose', I-1, N-I, -ONE,
+ $ W( 1, IW+1 ), LDW, W( I+1, IW ), 1, ONE,
+ $ W( 1, IW ), 1 )
+ END IF
+ CALL ZSCAL( I-1, TAU( I-1 ), W( 1, IW ), 1 )
+ ALPHA = -HALF*TAU( I-1 )*ZDOTC( I-1, W( 1, IW ), 1,
+ $ A( 1, I ), 1 )
+ CALL ZAXPY( I-1, ALPHA, A( 1, I ), 1, W( 1, IW ), 1 )
+ END IF
+*
+ 10 CONTINUE
+ ELSE
+*
+* Reduce first NB columns of lower triangle
+*
+ DO 20 I = 1, NB
+*
+* Update A(i:n,i)
+*
+ A( I, I ) = DBLE( A( I, I ) )
+ CALL ZLACGV( I-1, W( I, 1 ), LDW )
+ CALL ZGEMV( 'No transpose', N-I+1, I-1, -ONE, A( I, 1 ),
+ $ LDA, W( I, 1 ), LDW, ONE, A( I, I ), 1 )
+ CALL ZLACGV( I-1, W( I, 1 ), LDW )
+ CALL ZLACGV( I-1, A( I, 1 ), LDA )
+ CALL ZGEMV( 'No transpose', N-I+1, I-1, -ONE, W( I, 1 ),
+ $ LDW, A( I, 1 ), LDA, ONE, A( I, I ), 1 )
+ CALL ZLACGV( I-1, A( I, 1 ), LDA )
+ A( I, I ) = DBLE( A( I, I ) )
+ IF( I.LT.N ) THEN
+*
+* Generate elementary reflector H(i) to annihilate
+* A(i+2:n,i)
+*
+ ALPHA = A( I+1, I )
+ CALL ZLARFG( N-I, ALPHA, A( MIN( I+2, N ), I ), 1,
+ $ TAU( I ) )
+ E( I ) = ALPHA
+ A( I+1, I ) = ONE
+*
+* Compute W(i+1:n,i)
+*
+ CALL ZHEMV( 'Lower', N-I, ONE, A( I+1, I+1 ), LDA,
+ $ A( I+1, I ), 1, ZERO, W( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', N-I, I-1, ONE,
+ $ W( I+1, 1 ), LDW, A( I+1, I ), 1, ZERO,
+ $ W( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', N-I, I-1, -ONE, A( I+1, 1 ),
+ $ LDA, W( 1, I ), 1, ONE, W( I+1, I ), 1 )
+ CALL ZGEMV( 'Conjugate transpose', N-I, I-1, ONE,
+ $ A( I+1, 1 ), LDA, A( I+1, I ), 1, ZERO,
+ $ W( 1, I ), 1 )
+ CALL ZGEMV( 'No transpose', N-I, I-1, -ONE, W( I+1, 1 ),
+ $ LDW, W( 1, I ), 1, ONE, W( I+1, I ), 1 )
+ CALL ZSCAL( N-I, TAU( I ), W( I+1, I ), 1 )
+ ALPHA = -HALF*TAU( I )*ZDOTC( N-I, W( I+1, I ), 1,
+ $ A( I+1, I ), 1 )
+ CALL ZAXPY( N-I, ALPHA, A( I+1, I ), 1, W( I+1, I ), 1 )
+ END IF
+*
+ 20 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZLATRD
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlatrs.f b/2.3-1/src/fortran/lapack/zlatrs.f
new file mode 100644
index 00000000..7466096c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlatrs.f
@@ -0,0 +1,879 @@
+ SUBROUTINE ZLATRS( UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE,
+ $ CNORM, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, NORMIN, TRANS, UPLO
+ INTEGER INFO, LDA, N
+ DOUBLE PRECISION SCALE
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION CNORM( * )
+ COMPLEX*16 A( LDA, * ), X( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLATRS solves one of the triangular systems
+*
+* A * x = s*b, A**T * x = s*b, or A**H * x = s*b,
+*
+* with scaling to prevent overflow. Here A is an upper or lower
+* triangular matrix, A**T denotes the transpose of A, A**H denotes the
+* conjugate transpose of A, x and b are n-element vectors, and s is a
+* scaling factor, usually less than or equal to 1, chosen so that the
+* components of x will be less than the overflow threshold. If the
+* unscaled problem will not cause overflow, the Level 2 BLAS routine
+* ZTRSV is called. If the matrix A is singular (A(j,j) = 0 for some j),
+* then s is set to 0 and a non-trivial solution to A*x = 0 is returned.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the matrix A is upper or lower triangular.
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* TRANS (input) CHARACTER*1
+* Specifies the operation applied to A.
+* = 'N': Solve A * x = s*b (No transpose)
+* = 'T': Solve A**T * x = s*b (Transpose)
+* = 'C': Solve A**H * x = s*b (Conjugate transpose)
+*
+* DIAG (input) CHARACTER*1
+* Specifies whether or not the matrix A is unit triangular.
+* = 'N': Non-unit triangular
+* = 'U': Unit triangular
+*
+* NORMIN (input) CHARACTER*1
+* Specifies whether CNORM has been set or not.
+* = 'Y': CNORM contains the column norms on entry
+* = 'N': CNORM is not set on entry. On exit, the norms will
+* be computed and stored in CNORM.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,N)
+* The triangular matrix A. If UPLO = 'U', the leading n by n
+* upper triangular part of the array A contains the upper
+* triangular matrix, and the strictly lower triangular part of
+* A is not referenced. If UPLO = 'L', the leading n by n lower
+* triangular part of the array A contains the lower triangular
+* matrix, and the strictly upper triangular part of A is not
+* referenced. If DIAG = 'U', the diagonal elements of A are
+* also not referenced and are assumed to be 1.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max (1,N).
+*
+* X (input/output) COMPLEX*16 array, dimension (N)
+* On entry, the right hand side b of the triangular system.
+* On exit, X is overwritten by the solution vector x.
+*
+* SCALE (output) DOUBLE PRECISION
+* The scaling factor s for the triangular system
+* A * x = s*b, A**T * x = s*b, or A**H * x = s*b.
+* If SCALE = 0, the matrix A is singular or badly scaled, and
+* the vector x is an exact or approximate solution to A*x = 0.
+*
+* CNORM (input or output) DOUBLE PRECISION array, dimension (N)
+*
+* If NORMIN = 'Y', CNORM is an input argument and CNORM(j)
+* contains the norm of the off-diagonal part of the j-th column
+* of A. If TRANS = 'N', CNORM(j) must be greater than or equal
+* to the infinity-norm, and if TRANS = 'T' or 'C', CNORM(j)
+* must be greater than or equal to the 1-norm.
+*
+* If NORMIN = 'N', CNORM is an output argument and CNORM(j)
+* returns the 1-norm of the offdiagonal part of the j-th column
+* of A.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+*
+* Further Details
+* ======= =======
+*
+* A rough bound on x is computed; if that is less than overflow, ZTRSV
+* is called, otherwise, specific code is used which checks for possible
+* overflow or divide-by-zero at every operation.
+*
+* A columnwise scheme is used for solving A*x = b. The basic algorithm
+* if A is lower triangular is
+*
+* x[1:n] := b[1:n]
+* for j = 1, ..., n
+* x(j) := x(j) / A(j,j)
+* x[j+1:n] := x[j+1:n] - x(j) * A[j+1:n,j]
+* end
+*
+* Define bounds on the components of x after j iterations of the loop:
+* M(j) = bound on x[1:j]
+* G(j) = bound on x[j+1:n]
+* Initially, let M(0) = 0 and G(0) = max{x(i), i=1,...,n}.
+*
+* Then for iteration j+1 we have
+* M(j+1) <= G(j) / | A(j+1,j+1) |
+* G(j+1) <= G(j) + M(j+1) * | A[j+2:n,j+1] |
+* <= G(j) ( 1 + CNORM(j+1) / | A(j+1,j+1) | )
+*
+* where CNORM(j+1) is greater than or equal to the infinity-norm of
+* column j+1 of A, not counting the diagonal. Hence
+*
+* G(j) <= G(0) product ( 1 + CNORM(i) / | A(i,i) | )
+* 1<=i<=j
+* and
+*
+* |x(j)| <= ( G(0) / |A(j,j)| ) product ( 1 + CNORM(i) / |A(i,i)| )
+* 1<=i< j
+*
+* Since |x(j)| <= M(j), we use the Level 2 BLAS routine ZTRSV if the
+* reciprocal of the largest M(j), j=1,..,n, is larger than
+* max(underflow, 1/overflow).
+*
+* The bound on x(j) is also used to determine when a step in the
+* columnwise method can be performed without fear of overflow. If
+* the computed bound is greater than a large constant, x is scaled to
+* prevent overflow, but if the bound overflows, x is set to 0, x(j) to
+* 1, and scale to 0, and a non-trivial solution to A*x = 0 is found.
+*
+* Similarly, a row-wise scheme is used to solve A**T *x = b or
+* A**H *x = b. The basic algorithm for A upper triangular is
+*
+* for j = 1, ..., n
+* x(j) := ( b(j) - A[1:j-1,j]' * x[1:j-1] ) / A(j,j)
+* end
+*
+* We simultaneously compute two bounds
+* G(j) = bound on ( b(i) - A[1:i-1,i]' * x[1:i-1] ), 1<=i<=j
+* M(j) = bound on x(i), 1<=i<=j
+*
+* The initial values are G(0) = 0, M(0) = max{b(i), i=1,..,n}, and we
+* add the constraint G(j) >= G(j-1) and M(j) >= M(j-1) for j >= 1.
+* Then the bound on x(j) is
+*
+* M(j) <= M(j-1) * ( 1 + CNORM(j) ) / | A(j,j) |
+*
+* <= M(0) * product ( ( 1 + CNORM(i) ) / |A(i,i)| )
+* 1<=i<=j
+*
+* and we can safely call ZTRSV if 1/M(n) and 1/G(n) are both greater
+* than max(underflow, 1/overflow).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, HALF, ONE, TWO
+ PARAMETER ( ZERO = 0.0D+0, HALF = 0.5D+0, ONE = 1.0D+0,
+ $ TWO = 2.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN, NOUNIT, UPPER
+ INTEGER I, IMAX, J, JFIRST, JINC, JLAST
+ DOUBLE PRECISION BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL,
+ $ XBND, XJ, XMAX
+ COMPLEX*16 CSUMJ, TJJS, USCAL, ZDUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IDAMAX, IZAMAX
+ DOUBLE PRECISION DLAMCH, DZASUM
+ COMPLEX*16 ZDOTC, ZDOTU, ZLADIV
+ EXTERNAL LSAME, IDAMAX, IZAMAX, DLAMCH, DZASUM, ZDOTC,
+ $ ZDOTU, ZLADIV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DSCAL, XERBLA, ZAXPY, ZDSCAL, ZTRSV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX, MIN
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1, CABS2
+* ..
+* .. Statement Function definitions ..
+ CABS1( ZDUM ) = ABS( DBLE( ZDUM ) ) + ABS( DIMAG( ZDUM ) )
+ CABS2( ZDUM ) = ABS( DBLE( ZDUM ) / 2.D0 ) +
+ $ ABS( DIMAG( ZDUM ) / 2.D0 )
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ NOUNIT = LSAME( DIAG, 'N' )
+*
+* Test the input parameters.
+*
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT.
+ $ LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -3
+ ELSE IF( .NOT.LSAME( NORMIN, 'Y' ) .AND. .NOT.
+ $ LSAME( NORMIN, 'N' ) ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZLATRS', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Determine machine dependent parameters to control overflow.
+*
+ SMLNUM = DLAMCH( 'Safe minimum' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SMLNUM / DLAMCH( 'Precision' )
+ BIGNUM = ONE / SMLNUM
+ SCALE = ONE
+*
+ IF( LSAME( NORMIN, 'N' ) ) THEN
+*
+* Compute the 1-norm of each column, not including the diagonal.
+*
+ IF( UPPER ) THEN
+*
+* A is upper triangular.
+*
+ DO 10 J = 1, N
+ CNORM( J ) = DZASUM( J-1, A( 1, J ), 1 )
+ 10 CONTINUE
+ ELSE
+*
+* A is lower triangular.
+*
+ DO 20 J = 1, N - 1
+ CNORM( J ) = DZASUM( N-J, A( J+1, J ), 1 )
+ 20 CONTINUE
+ CNORM( N ) = ZERO
+ END IF
+ END IF
+*
+* Scale the column norms by TSCAL if the maximum element in CNORM is
+* greater than BIGNUM/2.
+*
+ IMAX = IDAMAX( N, CNORM, 1 )
+ TMAX = CNORM( IMAX )
+ IF( TMAX.LE.BIGNUM*HALF ) THEN
+ TSCAL = ONE
+ ELSE
+ TSCAL = HALF / ( SMLNUM*TMAX )
+ CALL DSCAL( N, TSCAL, CNORM, 1 )
+ END IF
+*
+* Compute a bound on the computed solution vector to see if the
+* Level 2 BLAS routine ZTRSV can be used.
+*
+ XMAX = ZERO
+ DO 30 J = 1, N
+ XMAX = MAX( XMAX, CABS2( X( J ) ) )
+ 30 CONTINUE
+ XBND = XMAX
+*
+ IF( NOTRAN ) THEN
+*
+* Compute the growth in A * x = b.
+*
+ IF( UPPER ) THEN
+ JFIRST = N
+ JLAST = 1
+ JINC = -1
+ ELSE
+ JFIRST = 1
+ JLAST = N
+ JINC = 1
+ END IF
+*
+ IF( TSCAL.NE.ONE ) THEN
+ GROW = ZERO
+ GO TO 60
+ END IF
+*
+ IF( NOUNIT ) THEN
+*
+* A is non-unit triangular.
+*
+* Compute GROW = 1/G(j) and XBND = 1/M(j).
+* Initially, G(0) = max{x(i), i=1,...,n}.
+*
+ GROW = HALF / MAX( XBND, SMLNUM )
+ XBND = GROW
+ DO 40 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 60
+*
+ TJJS = A( J, J )
+ TJJ = CABS1( TJJS )
+*
+ IF( TJJ.GE.SMLNUM ) THEN
+*
+* M(j) = G(j-1) / abs(A(j,j))
+*
+ XBND = MIN( XBND, MIN( ONE, TJJ )*GROW )
+ ELSE
+*
+* M(j) could overflow, set XBND to 0.
+*
+ XBND = ZERO
+ END IF
+*
+ IF( TJJ+CNORM( J ).GE.SMLNUM ) THEN
+*
+* G(j) = G(j-1)*( 1 + CNORM(j) / abs(A(j,j)) )
+*
+ GROW = GROW*( TJJ / ( TJJ+CNORM( J ) ) )
+ ELSE
+*
+* G(j) could overflow, set GROW to 0.
+*
+ GROW = ZERO
+ END IF
+ 40 CONTINUE
+ GROW = XBND
+ ELSE
+*
+* A is unit triangular.
+*
+* Compute GROW = 1/G(j), where G(0) = max{x(i), i=1,...,n}.
+*
+ GROW = MIN( ONE, HALF / MAX( XBND, SMLNUM ) )
+ DO 50 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 60
+*
+* G(j) = G(j-1)*( 1 + CNORM(j) )
+*
+ GROW = GROW*( ONE / ( ONE+CNORM( J ) ) )
+ 50 CONTINUE
+ END IF
+ 60 CONTINUE
+*
+ ELSE
+*
+* Compute the growth in A**T * x = b or A**H * x = b.
+*
+ IF( UPPER ) THEN
+ JFIRST = 1
+ JLAST = N
+ JINC = 1
+ ELSE
+ JFIRST = N
+ JLAST = 1
+ JINC = -1
+ END IF
+*
+ IF( TSCAL.NE.ONE ) THEN
+ GROW = ZERO
+ GO TO 90
+ END IF
+*
+ IF( NOUNIT ) THEN
+*
+* A is non-unit triangular.
+*
+* Compute GROW = 1/G(j) and XBND = 1/M(j).
+* Initially, M(0) = max{x(i), i=1,...,n}.
+*
+ GROW = HALF / MAX( XBND, SMLNUM )
+ XBND = GROW
+ DO 70 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 90
+*
+* G(j) = max( G(j-1), M(j-1)*( 1 + CNORM(j) ) )
+*
+ XJ = ONE + CNORM( J )
+ GROW = MIN( GROW, XBND / XJ )
+*
+ TJJS = A( J, J )
+ TJJ = CABS1( TJJS )
+*
+ IF( TJJ.GE.SMLNUM ) THEN
+*
+* M(j) = M(j-1)*( 1 + CNORM(j) ) / abs(A(j,j))
+*
+ IF( XJ.GT.TJJ )
+ $ XBND = XBND*( TJJ / XJ )
+ ELSE
+*
+* M(j) could overflow, set XBND to 0.
+*
+ XBND = ZERO
+ END IF
+ 70 CONTINUE
+ GROW = MIN( GROW, XBND )
+ ELSE
+*
+* A is unit triangular.
+*
+* Compute GROW = 1/G(j), where G(0) = max{x(i), i=1,...,n}.
+*
+ GROW = MIN( ONE, HALF / MAX( XBND, SMLNUM ) )
+ DO 80 J = JFIRST, JLAST, JINC
+*
+* Exit the loop if the growth factor is too small.
+*
+ IF( GROW.LE.SMLNUM )
+ $ GO TO 90
+*
+* G(j) = ( 1 + CNORM(j) )*G(j-1)
+*
+ XJ = ONE + CNORM( J )
+ GROW = GROW / XJ
+ 80 CONTINUE
+ END IF
+ 90 CONTINUE
+ END IF
+*
+ IF( ( GROW*TSCAL ).GT.SMLNUM ) THEN
+*
+* Use the Level 2 BLAS solve if the reciprocal of the bound on
+* elements of X is not too small.
+*
+ CALL ZTRSV( UPLO, TRANS, DIAG, N, A, LDA, X, 1 )
+ ELSE
+*
+* Use a Level 1 BLAS solve, scaling intermediate results.
+*
+ IF( XMAX.GT.BIGNUM*HALF ) THEN
+*
+* Scale X so that its components are less than or equal to
+* BIGNUM in absolute value.
+*
+ SCALE = ( BIGNUM*HALF ) / XMAX
+ CALL ZDSCAL( N, SCALE, X, 1 )
+ XMAX = BIGNUM
+ ELSE
+ XMAX = XMAX*TWO
+ END IF
+*
+ IF( NOTRAN ) THEN
+*
+* Solve A * x = b
+*
+ DO 120 J = JFIRST, JLAST, JINC
+*
+* Compute x(j) = b(j) / A(j,j), scaling x if necessary.
+*
+ XJ = CABS1( X( J ) )
+ IF( NOUNIT ) THEN
+ TJJS = A( J, J )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ IF( TSCAL.EQ.ONE )
+ $ GO TO 110
+ END IF
+ TJJ = CABS1( TJJS )
+ IF( TJJ.GT.SMLNUM ) THEN
+*
+* abs(A(j,j)) > SMLNUM:
+*
+ IF( TJJ.LT.ONE ) THEN
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by 1/b(j).
+*
+ REC = ONE / XJ
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+ X( J ) = ZLADIV( X( J ), TJJS )
+ XJ = CABS1( X( J ) )
+ ELSE IF( TJJ.GT.ZERO ) THEN
+*
+* 0 < abs(A(j,j)) <= SMLNUM:
+*
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM
+* to avoid overflow when dividing by A(j,j).
+*
+ REC = ( TJJ*BIGNUM ) / XJ
+ IF( CNORM( J ).GT.ONE ) THEN
+*
+* Scale by 1/CNORM(j) to avoid overflow when
+* multiplying x(j) times column j.
+*
+ REC = REC / CNORM( J )
+ END IF
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ X( J ) = ZLADIV( X( J ), TJJS )
+ XJ = CABS1( X( J ) )
+ ELSE
+*
+* A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and
+* scale = 0, and compute a solution to A*x = 0.
+*
+ DO 100 I = 1, N
+ X( I ) = ZERO
+ 100 CONTINUE
+ X( J ) = ONE
+ XJ = ONE
+ SCALE = ZERO
+ XMAX = ZERO
+ END IF
+ 110 CONTINUE
+*
+* Scale x if necessary to avoid overflow when adding a
+* multiple of column j of A.
+*
+ IF( XJ.GT.ONE ) THEN
+ REC = ONE / XJ
+ IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN
+*
+* Scale x by 1/(2*abs(x(j))).
+*
+ REC = REC*HALF
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ END IF
+ ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN
+*
+* Scale x by 1/2.
+*
+ CALL ZDSCAL( N, HALF, X, 1 )
+ SCALE = SCALE*HALF
+ END IF
+*
+ IF( UPPER ) THEN
+ IF( J.GT.1 ) THEN
+*
+* Compute the update
+* x(1:j-1) := x(1:j-1) - x(j) * A(1:j-1,j)
+*
+ CALL ZAXPY( J-1, -X( J )*TSCAL, A( 1, J ), 1, X,
+ $ 1 )
+ I = IZAMAX( J-1, X, 1 )
+ XMAX = CABS1( X( I ) )
+ END IF
+ ELSE
+ IF( J.LT.N ) THEN
+*
+* Compute the update
+* x(j+1:n) := x(j+1:n) - x(j) * A(j+1:n,j)
+*
+ CALL ZAXPY( N-J, -X( J )*TSCAL, A( J+1, J ), 1,
+ $ X( J+1 ), 1 )
+ I = J + IZAMAX( N-J, X( J+1 ), 1 )
+ XMAX = CABS1( X( I ) )
+ END IF
+ END IF
+ 120 CONTINUE
+*
+ ELSE IF( LSAME( TRANS, 'T' ) ) THEN
+*
+* Solve A**T * x = b
+*
+ DO 170 J = JFIRST, JLAST, JINC
+*
+* Compute x(j) = b(j) - sum A(k,j)*x(k).
+* k<>j
+*
+ XJ = CABS1( X( J ) )
+ USCAL = TSCAL
+ REC = ONE / MAX( XMAX, ONE )
+ IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+*
+* If x(j) could overflow, scale x by 1/(2*XMAX).
+*
+ REC = REC*HALF
+ IF( NOUNIT ) THEN
+ TJJS = A( J, J )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ END IF
+ TJJ = CABS1( TJJS )
+ IF( TJJ.GT.ONE ) THEN
+*
+* Divide by A(j,j) when scaling x if A(j,j) > 1.
+*
+ REC = MIN( ONE, REC*TJJ )
+ USCAL = ZLADIV( USCAL, TJJS )
+ END IF
+ IF( REC.LT.ONE ) THEN
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+*
+ CSUMJ = ZERO
+ IF( USCAL.EQ.DCMPLX( ONE ) ) THEN
+*
+* If the scaling needed for A in the dot product is 1,
+* call ZDOTU to perform the dot product.
+*
+ IF( UPPER ) THEN
+ CSUMJ = ZDOTU( J-1, A( 1, J ), 1, X, 1 )
+ ELSE IF( J.LT.N ) THEN
+ CSUMJ = ZDOTU( N-J, A( J+1, J ), 1, X( J+1 ), 1 )
+ END IF
+ ELSE
+*
+* Otherwise, use in-line code for the dot product.
+*
+ IF( UPPER ) THEN
+ DO 130 I = 1, J - 1
+ CSUMJ = CSUMJ + ( A( I, J )*USCAL )*X( I )
+ 130 CONTINUE
+ ELSE IF( J.LT.N ) THEN
+ DO 140 I = J + 1, N
+ CSUMJ = CSUMJ + ( A( I, J )*USCAL )*X( I )
+ 140 CONTINUE
+ END IF
+ END IF
+*
+ IF( USCAL.EQ.DCMPLX( TSCAL ) ) THEN
+*
+* Compute x(j) := ( x(j) - CSUMJ ) / A(j,j) if 1/A(j,j)
+* was not used to scale the dotproduct.
+*
+ X( J ) = X( J ) - CSUMJ
+ XJ = CABS1( X( J ) )
+ IF( NOUNIT ) THEN
+ TJJS = A( J, J )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ IF( TSCAL.EQ.ONE )
+ $ GO TO 160
+ END IF
+*
+* Compute x(j) = x(j) / A(j,j), scaling if necessary.
+*
+ TJJ = CABS1( TJJS )
+ IF( TJJ.GT.SMLNUM ) THEN
+*
+* abs(A(j,j)) > SMLNUM:
+*
+ IF( TJJ.LT.ONE ) THEN
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale X by 1/abs(x(j)).
+*
+ REC = ONE / XJ
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+ X( J ) = ZLADIV( X( J ), TJJS )
+ ELSE IF( TJJ.GT.ZERO ) THEN
+*
+* 0 < abs(A(j,j)) <= SMLNUM:
+*
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM.
+*
+ REC = ( TJJ*BIGNUM ) / XJ
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ X( J ) = ZLADIV( X( J ), TJJS )
+ ELSE
+*
+* A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and
+* scale = 0 and compute a solution to A**T *x = 0.
+*
+ DO 150 I = 1, N
+ X( I ) = ZERO
+ 150 CONTINUE
+ X( J ) = ONE
+ SCALE = ZERO
+ XMAX = ZERO
+ END IF
+ 160 CONTINUE
+ ELSE
+*
+* Compute x(j) := x(j) / A(j,j) - CSUMJ if the dot
+* product has already been divided by 1/A(j,j).
+*
+ X( J ) = ZLADIV( X( J ), TJJS ) - CSUMJ
+ END IF
+ XMAX = MAX( XMAX, CABS1( X( J ) ) )
+ 170 CONTINUE
+*
+ ELSE
+*
+* Solve A**H * x = b
+*
+ DO 220 J = JFIRST, JLAST, JINC
+*
+* Compute x(j) = b(j) - sum A(k,j)*x(k).
+* k<>j
+*
+ XJ = CABS1( X( J ) )
+ USCAL = TSCAL
+ REC = ONE / MAX( XMAX, ONE )
+ IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+*
+* If x(j) could overflow, scale x by 1/(2*XMAX).
+*
+ REC = REC*HALF
+ IF( NOUNIT ) THEN
+ TJJS = DCONJG( A( J, J ) )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ END IF
+ TJJ = CABS1( TJJS )
+ IF( TJJ.GT.ONE ) THEN
+*
+* Divide by A(j,j) when scaling x if A(j,j) > 1.
+*
+ REC = MIN( ONE, REC*TJJ )
+ USCAL = ZLADIV( USCAL, TJJS )
+ END IF
+ IF( REC.LT.ONE ) THEN
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+*
+ CSUMJ = ZERO
+ IF( USCAL.EQ.DCMPLX( ONE ) ) THEN
+*
+* If the scaling needed for A in the dot product is 1,
+* call ZDOTC to perform the dot product.
+*
+ IF( UPPER ) THEN
+ CSUMJ = ZDOTC( J-1, A( 1, J ), 1, X, 1 )
+ ELSE IF( J.LT.N ) THEN
+ CSUMJ = ZDOTC( N-J, A( J+1, J ), 1, X( J+1 ), 1 )
+ END IF
+ ELSE
+*
+* Otherwise, use in-line code for the dot product.
+*
+ IF( UPPER ) THEN
+ DO 180 I = 1, J - 1
+ CSUMJ = CSUMJ + ( DCONJG( A( I, J ) )*USCAL )*
+ $ X( I )
+ 180 CONTINUE
+ ELSE IF( J.LT.N ) THEN
+ DO 190 I = J + 1, N
+ CSUMJ = CSUMJ + ( DCONJG( A( I, J ) )*USCAL )*
+ $ X( I )
+ 190 CONTINUE
+ END IF
+ END IF
+*
+ IF( USCAL.EQ.DCMPLX( TSCAL ) ) THEN
+*
+* Compute x(j) := ( x(j) - CSUMJ ) / A(j,j) if 1/A(j,j)
+* was not used to scale the dotproduct.
+*
+ X( J ) = X( J ) - CSUMJ
+ XJ = CABS1( X( J ) )
+ IF( NOUNIT ) THEN
+ TJJS = DCONJG( A( J, J ) )*TSCAL
+ ELSE
+ TJJS = TSCAL
+ IF( TSCAL.EQ.ONE )
+ $ GO TO 210
+ END IF
+*
+* Compute x(j) = x(j) / A(j,j), scaling if necessary.
+*
+ TJJ = CABS1( TJJS )
+ IF( TJJ.GT.SMLNUM ) THEN
+*
+* abs(A(j,j)) > SMLNUM:
+*
+ IF( TJJ.LT.ONE ) THEN
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale X by 1/abs(x(j)).
+*
+ REC = ONE / XJ
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ END IF
+ X( J ) = ZLADIV( X( J ), TJJS )
+ ELSE IF( TJJ.GT.ZERO ) THEN
+*
+* 0 < abs(A(j,j)) <= SMLNUM:
+*
+ IF( XJ.GT.TJJ*BIGNUM ) THEN
+*
+* Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM.
+*
+ REC = ( TJJ*BIGNUM ) / XJ
+ CALL ZDSCAL( N, REC, X, 1 )
+ SCALE = SCALE*REC
+ XMAX = XMAX*REC
+ END IF
+ X( J ) = ZLADIV( X( J ), TJJS )
+ ELSE
+*
+* A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and
+* scale = 0 and compute a solution to A**H *x = 0.
+*
+ DO 200 I = 1, N
+ X( I ) = ZERO
+ 200 CONTINUE
+ X( J ) = ONE
+ SCALE = ZERO
+ XMAX = ZERO
+ END IF
+ 210 CONTINUE
+ ELSE
+*
+* Compute x(j) := x(j) / A(j,j) - CSUMJ if the dot
+* product has already been divided by 1/A(j,j).
+*
+ X( J ) = ZLADIV( X( J ), TJJS ) - CSUMJ
+ END IF
+ XMAX = MAX( XMAX, CABS1( X( J ) ) )
+ 220 CONTINUE
+ END IF
+ SCALE = SCALE / TSCAL
+ END IF
+*
+* Scale the column norms by 1/TSCAL for return.
+*
+ IF( TSCAL.NE.ONE ) THEN
+ CALL DSCAL( N, ONE / TSCAL, CNORM, 1 )
+ END IF
+*
+ RETURN
+*
+* End of ZLATRS
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zlatrz.f b/2.3-1/src/fortran/lapack/zlatrz.f
new file mode 100644
index 00000000..c1c7aab3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zlatrz.f
@@ -0,0 +1,133 @@
+ SUBROUTINE ZLATRZ( M, N, L, A, LDA, TAU, WORK )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER L, LDA, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLATRZ factors the M-by-(M+L) complex upper trapezoidal matrix
+* [ A1 A2 ] = [ A(1:M,1:M) A(1:M,N-L+1:N) ] as ( R 0 ) * Z by means
+* of unitary transformations, where Z is an (M+L)-by-(M+L) unitary
+* matrix and, R and A1 are M-by-M upper triangular matrices.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* L (input) INTEGER
+* The number of columns of the matrix A containing the
+* meaningful part of the Householder vectors. N-M >= L >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the leading M-by-N upper trapezoidal part of the
+* array A must contain the matrix to be factorized.
+* On exit, the leading M-by-M upper triangular part of A
+* contains the upper triangular matrix R, and elements N-L+1 to
+* N of the first M rows of A, with the array TAU, represent the
+* unitary matrix Z as a product of M elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) COMPLEX*16 array, dimension (M)
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (M)
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* The factorization is obtained by Householder's method. The kth
+* transformation matrix, Z( k ), which is used to introduce zeros into
+* the ( m - k + 1 )th row of A, is given in the form
+*
+* Z( k ) = ( I 0 ),
+* ( 0 T( k ) )
+*
+* where
+*
+* T( k ) = I - tau*u( k )*u( k )', u( k ) = ( 1 ),
+* ( 0 )
+* ( z( k ) )
+*
+* tau is a scalar and z( k ) is an l element vector. tau and z( k )
+* are chosen to annihilate the elements of the kth row of A2.
+*
+* The scalar tau is returned in the kth element of TAU and the vector
+* u( k ) in the kth row of A2, such that the elements of z( k ) are
+* in a( k, l + 1 ), ..., a( k, n ). The elements of R are returned in
+* the upper triangular part of A1.
+*
+* Z is given by
+*
+* Z = Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I
+ COMPLEX*16 ALPHA
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLACGV, ZLARFG, ZLARZ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 ) THEN
+ RETURN
+ ELSE IF( M.EQ.N ) THEN
+ DO 10 I = 1, N
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ DO 20 I = M, 1, -1
+*
+* Generate elementary reflector H(i) to annihilate
+* [ A(i,i) A(i,n-l+1:n) ]
+*
+ CALL ZLACGV( L, A( I, N-L+1 ), LDA )
+ ALPHA = DCONJG( A( I, I ) )
+ CALL ZLARFG( L+1, ALPHA, A( I, N-L+1 ), LDA, TAU( I ) )
+ TAU( I ) = DCONJG( TAU( I ) )
+*
+* Apply H(i) to A(1:i-1,i:n) from the right
+*
+ CALL ZLARZ( 'Right', I-1, N-I+1, L, A( I, N-L+1 ), LDA,
+ $ DCONJG( TAU( I ) ), A( 1, I ), LDA, WORK )
+ A( I, I ) = DCONJG( ALPHA )
+*
+ 20 CONTINUE
+*
+ RETURN
+*
+* End of ZLATRZ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zpotf2.f b/2.3-1/src/fortran/lapack/zpotf2.f
new file mode 100644
index 00000000..ca9df447
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zpotf2.f
@@ -0,0 +1,174 @@
+ SUBROUTINE ZPOTF2( UPLO, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZPOTF2 computes the Cholesky factorization of a complex Hermitian
+* positive definite matrix A.
+*
+* The factorization has the form
+* A = U' * U , if UPLO = 'U', or
+* A = L * L', if UPLO = 'L',
+* where U is an upper triangular matrix and L is lower triangular.
+*
+* This is the unblocked version of the algorithm, calling Level 2 BLAS.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the upper or lower triangular part of the
+* Hermitian matrix A is stored.
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+* n by n upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n by n lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, if INFO = 0, the factor U or L from the Cholesky
+* factorization A = U'*U or A = L*L'.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+* > 0: if INFO = k, the leading minor of order k is not
+* positive definite, and the factorization could not be
+* completed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE, ZERO
+ PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+ COMPLEX*16 CONE
+ PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J
+ DOUBLE PRECISION AJJ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ COMPLEX*16 ZDOTC
+ EXTERNAL LSAME, ZDOTC
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZDSCAL, ZGEMV, ZLACGV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZPOTF2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( UPPER ) THEN
+*
+* Compute the Cholesky factorization A = U'*U.
+*
+ DO 10 J = 1, N
+*
+* Compute U(J,J) and test for non-positive-definiteness.
+*
+ AJJ = DBLE( A( J, J ) ) - ZDOTC( J-1, A( 1, J ), 1,
+ $ A( 1, J ), 1 )
+ IF( AJJ.LE.ZERO ) THEN
+ A( J, J ) = AJJ
+ GO TO 30
+ END IF
+ AJJ = SQRT( AJJ )
+ A( J, J ) = AJJ
+*
+* Compute elements J+1:N of row J.
+*
+ IF( J.LT.N ) THEN
+ CALL ZLACGV( J-1, A( 1, J ), 1 )
+ CALL ZGEMV( 'Transpose', J-1, N-J, -CONE, A( 1, J+1 ),
+ $ LDA, A( 1, J ), 1, CONE, A( J, J+1 ), LDA )
+ CALL ZLACGV( J-1, A( 1, J ), 1 )
+ CALL ZDSCAL( N-J, ONE / AJJ, A( J, J+1 ), LDA )
+ END IF
+ 10 CONTINUE
+ ELSE
+*
+* Compute the Cholesky factorization A = L*L'.
+*
+ DO 20 J = 1, N
+*
+* Compute L(J,J) and test for non-positive-definiteness.
+*
+ AJJ = DBLE( A( J, J ) ) - ZDOTC( J-1, A( J, 1 ), LDA,
+ $ A( J, 1 ), LDA )
+ IF( AJJ.LE.ZERO ) THEN
+ A( J, J ) = AJJ
+ GO TO 30
+ END IF
+ AJJ = SQRT( AJJ )
+ A( J, J ) = AJJ
+*
+* Compute elements J+1:N of column J.
+*
+ IF( J.LT.N ) THEN
+ CALL ZLACGV( J-1, A( J, 1 ), LDA )
+ CALL ZGEMV( 'No transpose', N-J, J-1, -CONE, A( J+1, 1 ),
+ $ LDA, A( J, 1 ), LDA, CONE, A( J+1, J ), 1 )
+ CALL ZLACGV( J-1, A( J, 1 ), LDA )
+ CALL ZDSCAL( N-J, ONE / AJJ, A( J+1, J ), 1 )
+ END IF
+ 20 CONTINUE
+ END IF
+ GO TO 40
+*
+ 30 CONTINUE
+ INFO = J
+*
+ 40 CONTINUE
+ RETURN
+*
+* End of ZPOTF2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zpotrf.f b/2.3-1/src/fortran/lapack/zpotrf.f
new file mode 100644
index 00000000..86772608
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zpotrf.f
@@ -0,0 +1,186 @@
+ SUBROUTINE ZPOTRF( UPLO, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZPOTRF computes the Cholesky factorization of a complex Hermitian
+* positive definite matrix A.
+*
+* The factorization has the form
+* A = U**H * U, if UPLO = 'U', or
+* A = L * L**H, if UPLO = 'L',
+* where U is an upper triangular matrix and L is lower triangular.
+*
+* This is the block version of the algorithm, calling Level 3 BLAS.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A is stored;
+* = 'L': Lower triangle of A is stored.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+* N-by-N upper triangular part of A contains the upper
+* triangular part of the matrix A, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of A contains the lower
+* triangular part of the matrix A, and the strictly upper
+* triangular part of A is not referenced.
+*
+* On exit, if INFO = 0, the factor U or L from the Cholesky
+* factorization A = U**H*U or A = L*L**H.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, the leading minor of order i is not
+* positive definite, and the factorization could not be
+* completed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ COMPLEX*16 CONE
+ PARAMETER ( ONE = 1.0D+0, CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL UPPER
+ INTEGER J, JB, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEMM, ZHERK, ZPOTF2, ZTRSM
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZPOTRF', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Determine the block size for this environment.
+*
+ NB = ILAENV( 1, 'ZPOTRF', UPLO, N, -1, -1, -1 )
+ IF( NB.LE.1 .OR. NB.GE.N ) THEN
+*
+* Use unblocked code.
+*
+ CALL ZPOTF2( UPLO, N, A, LDA, INFO )
+ ELSE
+*
+* Use blocked code.
+*
+ IF( UPPER ) THEN
+*
+* Compute the Cholesky factorization A = U'*U.
+*
+ DO 10 J = 1, N, NB
+*
+* Update and factorize the current diagonal block and test
+* for non-positive-definiteness.
+*
+ JB = MIN( NB, N-J+1 )
+ CALL ZHERK( 'Upper', 'Conjugate transpose', JB, J-1,
+ $ -ONE, A( 1, J ), LDA, ONE, A( J, J ), LDA )
+ CALL ZPOTF2( 'Upper', JB, A( J, J ), LDA, INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 30
+ IF( J+JB.LE.N ) THEN
+*
+* Compute the current block row.
+*
+ CALL ZGEMM( 'Conjugate transpose', 'No transpose', JB,
+ $ N-J-JB+1, J-1, -CONE, A( 1, J ), LDA,
+ $ A( 1, J+JB ), LDA, CONE, A( J, J+JB ),
+ $ LDA )
+ CALL ZTRSM( 'Left', 'Upper', 'Conjugate transpose',
+ $ 'Non-unit', JB, N-J-JB+1, CONE, A( J, J ),
+ $ LDA, A( J, J+JB ), LDA )
+ END IF
+ 10 CONTINUE
+*
+ ELSE
+*
+* Compute the Cholesky factorization A = L*L'.
+*
+ DO 20 J = 1, N, NB
+*
+* Update and factorize the current diagonal block and test
+* for non-positive-definiteness.
+*
+ JB = MIN( NB, N-J+1 )
+ CALL ZHERK( 'Lower', 'No transpose', JB, J-1, -ONE,
+ $ A( J, 1 ), LDA, ONE, A( J, J ), LDA )
+ CALL ZPOTF2( 'Lower', JB, A( J, J ), LDA, INFO )
+ IF( INFO.NE.0 )
+ $ GO TO 30
+ IF( J+JB.LE.N ) THEN
+*
+* Compute the current block column.
+*
+ CALL ZGEMM( 'No transpose', 'Conjugate transpose',
+ $ N-J-JB+1, JB, J-1, -CONE, A( J+JB, 1 ),
+ $ LDA, A( J, 1 ), LDA, CONE, A( J+JB, J ),
+ $ LDA )
+ CALL ZTRSM( 'Right', 'Lower', 'Conjugate transpose',
+ $ 'Non-unit', N-J-JB+1, JB, CONE, A( J, J ),
+ $ LDA, A( J+JB, J ), LDA )
+ END IF
+ 20 CONTINUE
+ END IF
+ END IF
+ GO TO 40
+*
+ 30 CONTINUE
+ INFO = INFO + J - 1
+*
+ 40 CONTINUE
+ RETURN
+*
+* End of ZPOTRF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zrot.f b/2.3-1/src/fortran/lapack/zrot.f
new file mode 100644
index 00000000..9c548e23
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zrot.f
@@ -0,0 +1,91 @@
+ SUBROUTINE ZROT( N, CX, INCX, CY, INCY, C, S )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCX, INCY, N
+ DOUBLE PRECISION C
+ COMPLEX*16 S
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 CX( * ), CY( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZROT applies a plane rotation, where the cos (C) is real and the
+* sin (S) is complex, and the vectors CX and CY are complex.
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of elements in the vectors CX and CY.
+*
+* CX (input/output) COMPLEX*16 array, dimension (N)
+* On input, the vector X.
+* On output, CX is overwritten with C*X + S*Y.
+*
+* INCX (input) INTEGER
+* The increment between successive values of CY. INCX <> 0.
+*
+* CY (input/output) COMPLEX*16 array, dimension (N)
+* On input, the vector Y.
+* On output, CY is overwritten with -CONJG(S)*X + C*Y.
+*
+* INCY (input) INTEGER
+* The increment between successive values of CY. INCX <> 0.
+*
+* C (input) DOUBLE PRECISION
+* S (input) COMPLEX*16
+* C and S define a rotation
+* [ C S ]
+* [ -conjg(S) C ]
+* where C*C + S*CONJG(S) = 1.0.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, IX, IY
+ COMPLEX*16 STEMP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG
+* ..
+* .. Executable Statements ..
+*
+ IF( N.LE.0 )
+ $ RETURN
+ IF( INCX.EQ.1 .AND. INCY.EQ.1 )
+ $ GO TO 20
+*
+* Code for unequal increments or equal increments not equal to 1
+*
+ IX = 1
+ IY = 1
+ IF( INCX.LT.0 )
+ $ IX = ( -N+1 )*INCX + 1
+ IF( INCY.LT.0 )
+ $ IY = ( -N+1 )*INCY + 1
+ DO 10 I = 1, N
+ STEMP = C*CX( IX ) + S*CY( IY )
+ CY( IY ) = C*CY( IY ) - DCONJG( S )*CX( IX )
+ CX( IX ) = STEMP
+ IX = IX + INCX
+ IY = IY + INCY
+ 10 CONTINUE
+ RETURN
+*
+* Code for both increments equal to 1
+*
+ 20 CONTINUE
+ DO 30 I = 1, N
+ STEMP = C*CX( I ) + S*CY( I )
+ CY( I ) = C*CY( I ) - DCONJG( S )*CX( I )
+ CX( I ) = STEMP
+ 30 CONTINUE
+ RETURN
+ END
diff --git a/2.3-1/src/fortran/lapack/zsteqr.f b/2.3-1/src/fortran/lapack/zsteqr.f
new file mode 100644
index 00000000..a72fdd96
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zsteqr.f
@@ -0,0 +1,503 @@
+ SUBROUTINE ZSTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPZ
+ INTEGER INFO, LDZ, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION D( * ), E( * ), WORK( * )
+ COMPLEX*16 Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZSTEQR computes all eigenvalues and, optionally, eigenvectors of a
+* symmetric tridiagonal matrix using the implicit QL or QR method.
+* The eigenvectors of a full or band complex Hermitian matrix can also
+* be found if ZHETRD or ZHPTRD or ZHBTRD has been used to reduce this
+* matrix to tridiagonal form.
+*
+* Arguments
+* =========
+*
+* COMPZ (input) CHARACTER*1
+* = 'N': Compute eigenvalues only.
+* = 'V': Compute eigenvalues and eigenvectors of the original
+* Hermitian matrix. On entry, Z must contain the
+* unitary matrix used to reduce the original matrix
+* to tridiagonal form.
+* = 'I': Compute eigenvalues and eigenvectors of the
+* tridiagonal matrix. Z is initialized to the identity
+* matrix.
+*
+* N (input) INTEGER
+* The order of the matrix. N >= 0.
+*
+* D (input/output) DOUBLE PRECISION array, dimension (N)
+* On entry, the diagonal elements of the tridiagonal matrix.
+* On exit, if INFO = 0, the eigenvalues in ascending order.
+*
+* E (input/output) DOUBLE PRECISION array, dimension (N-1)
+* On entry, the (n-1) subdiagonal elements of the tridiagonal
+* matrix.
+* On exit, E has been destroyed.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ, N)
+* On entry, if COMPZ = 'V', then Z contains the unitary
+* matrix used in the reduction to tridiagonal form.
+* On exit, if INFO = 0, then if COMPZ = 'V', Z contains the
+* orthonormal eigenvectors of the original Hermitian matrix,
+* and if COMPZ = 'I', Z contains the orthonormal eigenvectors
+* of the symmetric tridiagonal matrix.
+* If COMPZ = 'N', then Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1, and if
+* eigenvectors are desired, then LDZ >= max(1,N).
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (max(1,2*N-2))
+* If COMPZ = 'N', then WORK is not referenced.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: the algorithm has failed to find all the eigenvalues in
+* a total of 30*N iterations; if INFO = i, then i
+* elements of E have not converged to zero; on exit, D
+* and E contain the elements of a symmetric tridiagonal
+* matrix which is unitarily similar to the original
+* matrix.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE, TWO, THREE
+ PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0,
+ $ THREE = 3.0D0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
+ $ CONE = ( 1.0D0, 0.0D0 ) )
+ INTEGER MAXIT
+ PARAMETER ( MAXIT = 30 )
+* ..
+* .. Local Scalars ..
+ INTEGER I, ICOMPZ, II, ISCALE, J, JTOT, K, L, L1, LEND,
+ $ LENDM1, LENDP1, LENDSV, LM1, LSV, M, MM, MM1,
+ $ NM1, NMAXIT
+ DOUBLE PRECISION ANORM, B, C, EPS, EPS2, F, G, P, R, RT1, RT2,
+ $ S, SAFMAX, SAFMIN, SSFMAX, SSFMIN, TST
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, DLANST, DLAPY2
+ EXTERNAL LSAME, DLAMCH, DLANST, DLAPY2
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLAE2, DLAEV2, DLARTG, DLASCL, DLASRT, XERBLA,
+ $ ZLASET, ZLASR, ZSWAP
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, SIGN, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+*
+ IF( LSAME( COMPZ, 'N' ) ) THEN
+ ICOMPZ = 0
+ ELSE IF( LSAME( COMPZ, 'V' ) ) THEN
+ ICOMPZ = 1
+ ELSE IF( LSAME( COMPZ, 'I' ) ) THEN
+ ICOMPZ = 2
+ ELSE
+ ICOMPZ = -1
+ END IF
+ IF( ICOMPZ.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( ( LDZ.LT.1 ) .OR. ( ICOMPZ.GT.0 .AND. LDZ.LT.MAX( 1,
+ $ N ) ) ) THEN
+ INFO = -6
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZSTEQR', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+ IF( N.EQ.1 ) THEN
+ IF( ICOMPZ.EQ.2 )
+ $ Z( 1, 1 ) = CONE
+ RETURN
+ END IF
+*
+* Determine the unit roundoff and over/underflow thresholds.
+*
+ EPS = DLAMCH( 'E' )
+ EPS2 = EPS**2
+ SAFMIN = DLAMCH( 'S' )
+ SAFMAX = ONE / SAFMIN
+ SSFMAX = SQRT( SAFMAX ) / THREE
+ SSFMIN = SQRT( SAFMIN ) / EPS2
+*
+* Compute the eigenvalues and eigenvectors of the tridiagonal
+* matrix.
+*
+ IF( ICOMPZ.EQ.2 )
+ $ CALL ZLASET( 'Full', N, N, CZERO, CONE, Z, LDZ )
+*
+ NMAXIT = N*MAXIT
+ JTOT = 0
+*
+* Determine where the matrix splits and choose QL or QR iteration
+* for each block, according to whether top or bottom diagonal
+* element is smaller.
+*
+ L1 = 1
+ NM1 = N - 1
+*
+ 10 CONTINUE
+ IF( L1.GT.N )
+ $ GO TO 160
+ IF( L1.GT.1 )
+ $ E( L1-1 ) = ZERO
+ IF( L1.LE.NM1 ) THEN
+ DO 20 M = L1, NM1
+ TST = ABS( E( M ) )
+ IF( TST.EQ.ZERO )
+ $ GO TO 30
+ IF( TST.LE.( SQRT( ABS( D( M ) ) )*SQRT( ABS( D( M+
+ $ 1 ) ) ) )*EPS ) THEN
+ E( M ) = ZERO
+ GO TO 30
+ END IF
+ 20 CONTINUE
+ END IF
+ M = N
+*
+ 30 CONTINUE
+ L = L1
+ LSV = L
+ LEND = M
+ LENDSV = LEND
+ L1 = M + 1
+ IF( LEND.EQ.L )
+ $ GO TO 10
+*
+* Scale submatrix in rows and columns L to LEND
+*
+ ANORM = DLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ISCALE = 0
+ IF( ANORM.EQ.ZERO )
+ $ GO TO 10
+ IF( ANORM.GT.SSFMAX ) THEN
+ ISCALE = 1
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N,
+ $ INFO )
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L, 1, E( L ), N,
+ $ INFO )
+ ELSE IF( ANORM.LT.SSFMIN ) THEN
+ ISCALE = 2
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L+1, 1, D( L ), N,
+ $ INFO )
+ CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L, 1, E( L ), N,
+ $ INFO )
+ END IF
+*
+* Choose between QL and QR iteration
+*
+ IF( ABS( D( LEND ) ).LT.ABS( D( L ) ) ) THEN
+ LEND = LSV
+ L = LENDSV
+ END IF
+*
+ IF( LEND.GT.L ) THEN
+*
+* QL Iteration
+*
+* Look for small subdiagonal element.
+*
+ 40 CONTINUE
+ IF( L.NE.LEND ) THEN
+ LENDM1 = LEND - 1
+ DO 50 M = L, LENDM1
+ TST = ABS( E( M ) )**2
+ IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M+1 ) )+
+ $ SAFMIN )GO TO 60
+ 50 CONTINUE
+ END IF
+*
+ M = LEND
+*
+ 60 CONTINUE
+ IF( M.LT.LEND )
+ $ E( M ) = ZERO
+ P = D( L )
+ IF( M.EQ.L )
+ $ GO TO 80
+*
+* If remaining matrix is 2-by-2, use DLAE2 or SLAEV2
+* to compute its eigensystem.
+*
+ IF( M.EQ.L+1 ) THEN
+ IF( ICOMPZ.GT.0 ) THEN
+ CALL DLAEV2( D( L ), E( L ), D( L+1 ), RT1, RT2, C, S )
+ WORK( L ) = C
+ WORK( N-1+L ) = S
+ CALL ZLASR( 'R', 'V', 'B', N, 2, WORK( L ),
+ $ WORK( N-1+L ), Z( 1, L ), LDZ )
+ ELSE
+ CALL DLAE2( D( L ), E( L ), D( L+1 ), RT1, RT2 )
+ END IF
+ D( L ) = RT1
+ D( L+1 ) = RT2
+ E( L ) = ZERO
+ L = L + 2
+ IF( L.LE.LEND )
+ $ GO TO 40
+ GO TO 140
+ END IF
+*
+ IF( JTOT.EQ.NMAXIT )
+ $ GO TO 140
+ JTOT = JTOT + 1
+*
+* Form shift.
+*
+ G = ( D( L+1 )-P ) / ( TWO*E( L ) )
+ R = DLAPY2( G, ONE )
+ G = D( M ) - P + ( E( L ) / ( G+SIGN( R, G ) ) )
+*
+ S = ONE
+ C = ONE
+ P = ZERO
+*
+* Inner loop
+*
+ MM1 = M - 1
+ DO 70 I = MM1, L, -1
+ F = S*E( I )
+ B = C*E( I )
+ CALL DLARTG( G, F, C, S, R )
+ IF( I.NE.M-1 )
+ $ E( I+1 ) = R
+ G = D( I+1 ) - P
+ R = ( D( I )-G )*S + TWO*C*B
+ P = S*R
+ D( I+1 ) = G + P
+ G = C*R - B
+*
+* If eigenvectors are desired, then save rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ WORK( I ) = C
+ WORK( N-1+I ) = -S
+ END IF
+*
+ 70 CONTINUE
+*
+* If eigenvectors are desired, then apply saved rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ MM = M - L + 1
+ CALL ZLASR( 'R', 'V', 'B', N, MM, WORK( L ), WORK( N-1+L ),
+ $ Z( 1, L ), LDZ )
+ END IF
+*
+ D( L ) = D( L ) - P
+ E( L ) = G
+ GO TO 40
+*
+* Eigenvalue found.
+*
+ 80 CONTINUE
+ D( L ) = P
+*
+ L = L + 1
+ IF( L.LE.LEND )
+ $ GO TO 40
+ GO TO 140
+*
+ ELSE
+*
+* QR Iteration
+*
+* Look for small superdiagonal element.
+*
+ 90 CONTINUE
+ IF( L.NE.LEND ) THEN
+ LENDP1 = LEND + 1
+ DO 100 M = L, LENDP1, -1
+ TST = ABS( E( M-1 ) )**2
+ IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M-1 ) )+
+ $ SAFMIN )GO TO 110
+ 100 CONTINUE
+ END IF
+*
+ M = LEND
+*
+ 110 CONTINUE
+ IF( M.GT.LEND )
+ $ E( M-1 ) = ZERO
+ P = D( L )
+ IF( M.EQ.L )
+ $ GO TO 130
+*
+* If remaining matrix is 2-by-2, use DLAE2 or SLAEV2
+* to compute its eigensystem.
+*
+ IF( M.EQ.L-1 ) THEN
+ IF( ICOMPZ.GT.0 ) THEN
+ CALL DLAEV2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2, C, S )
+ WORK( M ) = C
+ WORK( N-1+M ) = S
+ CALL ZLASR( 'R', 'V', 'F', N, 2, WORK( M ),
+ $ WORK( N-1+M ), Z( 1, L-1 ), LDZ )
+ ELSE
+ CALL DLAE2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2 )
+ END IF
+ D( L-1 ) = RT1
+ D( L ) = RT2
+ E( L-1 ) = ZERO
+ L = L - 2
+ IF( L.GE.LEND )
+ $ GO TO 90
+ GO TO 140
+ END IF
+*
+ IF( JTOT.EQ.NMAXIT )
+ $ GO TO 140
+ JTOT = JTOT + 1
+*
+* Form shift.
+*
+ G = ( D( L-1 )-P ) / ( TWO*E( L-1 ) )
+ R = DLAPY2( G, ONE )
+ G = D( M ) - P + ( E( L-1 ) / ( G+SIGN( R, G ) ) )
+*
+ S = ONE
+ C = ONE
+ P = ZERO
+*
+* Inner loop
+*
+ LM1 = L - 1
+ DO 120 I = M, LM1
+ F = S*E( I )
+ B = C*E( I )
+ CALL DLARTG( G, F, C, S, R )
+ IF( I.NE.M )
+ $ E( I-1 ) = R
+ G = D( I ) - P
+ R = ( D( I+1 )-G )*S + TWO*C*B
+ P = S*R
+ D( I ) = G + P
+ G = C*R - B
+*
+* If eigenvectors are desired, then save rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ WORK( I ) = C
+ WORK( N-1+I ) = S
+ END IF
+*
+ 120 CONTINUE
+*
+* If eigenvectors are desired, then apply saved rotations.
+*
+ IF( ICOMPZ.GT.0 ) THEN
+ MM = L - M + 1
+ CALL ZLASR( 'R', 'V', 'F', N, MM, WORK( M ), WORK( N-1+M ),
+ $ Z( 1, M ), LDZ )
+ END IF
+*
+ D( L ) = D( L ) - P
+ E( LM1 ) = G
+ GO TO 90
+*
+* Eigenvalue found.
+*
+ 130 CONTINUE
+ D( L ) = P
+*
+ L = L - 1
+ IF( L.GE.LEND )
+ $ GO TO 90
+ GO TO 140
+*
+ END IF
+*
+* Undo scaling if necessary
+*
+ 140 CONTINUE
+ IF( ISCALE.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV+1, 1,
+ $ D( LSV ), N, INFO )
+ CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV, 1, E( LSV ),
+ $ N, INFO )
+ ELSE IF( ISCALE.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV+1, 1,
+ $ D( LSV ), N, INFO )
+ CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV, 1, E( LSV ),
+ $ N, INFO )
+ END IF
+*
+* Check for no convergence to an eigenvalue after a total
+* of N*MAXIT iterations.
+*
+ IF( JTOT.EQ.NMAXIT ) THEN
+ DO 150 I = 1, N - 1
+ IF( E( I ).NE.ZERO )
+ $ INFO = INFO + 1
+ 150 CONTINUE
+ RETURN
+ END IF
+ GO TO 10
+*
+* Order eigenvalues and eigenvectors.
+*
+ 160 CONTINUE
+ IF( ICOMPZ.EQ.0 ) THEN
+*
+* Use Quick Sort
+*
+ CALL DLASRT( 'I', N, D, INFO )
+*
+ ELSE
+*
+* Use Selection Sort to minimize swaps of eigenvectors
+*
+ DO 180 II = 2, N
+ I = II - 1
+ K = I
+ P = D( I )
+ DO 170 J = II, N
+ IF( D( J ).LT.P ) THEN
+ K = J
+ P = D( J )
+ END IF
+ 170 CONTINUE
+ IF( K.NE.I ) THEN
+ D( K ) = D( I )
+ D( I ) = P
+ CALL ZSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 )
+ END IF
+ 180 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZSTEQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztgevc.f b/2.3-1/src/fortran/lapack/ztgevc.f
new file mode 100644
index 00000000..b8da962d
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztgevc.f
@@ -0,0 +1,633 @@
+ SUBROUTINE ZTGEVC( SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL,
+ $ LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER HOWMNY, SIDE
+ INTEGER INFO, LDP, LDS, LDVL, LDVR, M, MM, N
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 P( LDP, * ), S( LDS, * ), VL( LDVL, * ),
+ $ VR( LDVR, * ), WORK( * )
+* ..
+*
+*
+* Purpose
+* =======
+*
+* ZTGEVC computes some or all of the right and/or left eigenvectors of
+* a pair of complex matrices (S,P), where S and P are upper triangular.
+* Matrix pairs of this type are produced by the generalized Schur
+* factorization of a complex matrix pair (A,B):
+*
+* A = Q*S*Z**H, B = Q*P*Z**H
+*
+* as computed by ZGGHRD + ZHGEQZ.
+*
+* The right eigenvector x and the left eigenvector y of (S,P)
+* corresponding to an eigenvalue w are defined by:
+*
+* S*x = w*P*x, (y**H)*S = w*(y**H)*P,
+*
+* where y**H denotes the conjugate tranpose of y.
+* The eigenvalues are not input to this routine, but are computed
+* directly from the diagonal elements of S and P.
+*
+* This routine returns the matrices X and/or Y of right and left
+* eigenvectors of (S,P), or the products Z*X and/or Q*Y,
+* where Z and Q are input matrices.
+* If Q and Z are the unitary factors from the generalized Schur
+* factorization of a matrix pair (A,B), then Z*X and Q*Y
+* are the matrices of right and left eigenvectors of (A,B).
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'R': compute right eigenvectors only;
+* = 'L': compute left eigenvectors only;
+* = 'B': compute both right and left eigenvectors.
+*
+* HOWMNY (input) CHARACTER*1
+* = 'A': compute all right and/or left eigenvectors;
+* = 'B': compute all right and/or left eigenvectors,
+* backtransformed by the matrices in VR and/or VL;
+* = 'S': compute selected right and/or left eigenvectors,
+* specified by the logical array SELECT.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* If HOWMNY='S', SELECT specifies the eigenvectors to be
+* computed. The eigenvector corresponding to the j-th
+* eigenvalue is computed if SELECT(j) = .TRUE..
+* Not referenced if HOWMNY = 'A' or 'B'.
+*
+* N (input) INTEGER
+* The order of the matrices S and P. N >= 0.
+*
+* S (input) COMPLEX*16 array, dimension (LDS,N)
+* The upper triangular matrix S from a generalized Schur
+* factorization, as computed by ZHGEQZ.
+*
+* LDS (input) INTEGER
+* The leading dimension of array S. LDS >= max(1,N).
+*
+* P (input) COMPLEX*16 array, dimension (LDP,N)
+* The upper triangular matrix P from a generalized Schur
+* factorization, as computed by ZHGEQZ. P must have real
+* diagonal elements.
+*
+* LDP (input) INTEGER
+* The leading dimension of array P. LDP >= max(1,N).
+*
+* VL (input/output) COMPLEX*16 array, dimension (LDVL,MM)
+* On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must
+* contain an N-by-N matrix Q (usually the unitary matrix Q
+* of left Schur vectors returned by ZHGEQZ).
+* On exit, if SIDE = 'L' or 'B', VL contains:
+* if HOWMNY = 'A', the matrix Y of left eigenvectors of (S,P);
+* if HOWMNY = 'B', the matrix Q*Y;
+* if HOWMNY = 'S', the left eigenvectors of (S,P) specified by
+* SELECT, stored consecutively in the columns of
+* VL, in the same order as their eigenvalues.
+* Not referenced if SIDE = 'R'.
+*
+* LDVL (input) INTEGER
+* The leading dimension of array VL. LDVL >= 1, and if
+* SIDE = 'L' or 'l' or 'B' or 'b', LDVL >= N.
+*
+* VR (input/output) COMPLEX*16 array, dimension (LDVR,MM)
+* On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must
+* contain an N-by-N matrix Q (usually the unitary matrix Z
+* of right Schur vectors returned by ZHGEQZ).
+* On exit, if SIDE = 'R' or 'B', VR contains:
+* if HOWMNY = 'A', the matrix X of right eigenvectors of (S,P);
+* if HOWMNY = 'B', the matrix Z*X;
+* if HOWMNY = 'S', the right eigenvectors of (S,P) specified by
+* SELECT, stored consecutively in the columns of
+* VR, in the same order as their eigenvalues.
+* Not referenced if SIDE = 'L'.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the array VR. LDVR >= 1, and if
+* SIDE = 'R' or 'B', LDVR >= N.
+*
+* MM (input) INTEGER
+* The number of columns in the arrays VL and/or VR. MM >= M.
+*
+* M (output) INTEGER
+* The number of columns in the arrays VL and/or VR actually
+* used to store the eigenvectors. If HOWMNY = 'A' or 'B', M
+* is set to N. Each selected eigenvector occupies one column.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (2*N)
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit.
+* < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL COMPL, COMPR, ILALL, ILBACK, ILBBAD, ILCOMP,
+ $ LSA, LSB
+ INTEGER I, IBEG, IEIG, IEND, IHWMNY, IM, ISIDE, ISRC,
+ $ J, JE, JR
+ DOUBLE PRECISION ACOEFA, ACOEFF, ANORM, ASCALE, BCOEFA, BIG,
+ $ BIGNUM, BNORM, BSCALE, DMIN, SAFMIN, SBETA,
+ $ SCALE, SMALL, TEMP, ULP, XMAX
+ COMPLEX*16 BCOEFF, CA, CB, D, SALPHA, SUM, SUMA, SUMB, X
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH
+ COMPLEX*16 ZLADIV
+ EXTERNAL LSAME, DLAMCH, ZLADIV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZGEMV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX, MIN
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION ABS1
+* ..
+* .. Statement Function definitions ..
+ ABS1( X ) = ABS( DBLE( X ) ) + ABS( DIMAG( X ) )
+* ..
+* .. Executable Statements ..
+*
+* Decode and Test the input parameters
+*
+ IF( LSAME( HOWMNY, 'A' ) ) THEN
+ IHWMNY = 1
+ ILALL = .TRUE.
+ ILBACK = .FALSE.
+ ELSE IF( LSAME( HOWMNY, 'S' ) ) THEN
+ IHWMNY = 2
+ ILALL = .FALSE.
+ ILBACK = .FALSE.
+ ELSE IF( LSAME( HOWMNY, 'B' ) ) THEN
+ IHWMNY = 3
+ ILALL = .TRUE.
+ ILBACK = .TRUE.
+ ELSE
+ IHWMNY = -1
+ END IF
+*
+ IF( LSAME( SIDE, 'R' ) ) THEN
+ ISIDE = 1
+ COMPL = .FALSE.
+ COMPR = .TRUE.
+ ELSE IF( LSAME( SIDE, 'L' ) ) THEN
+ ISIDE = 2
+ COMPL = .TRUE.
+ COMPR = .FALSE.
+ ELSE IF( LSAME( SIDE, 'B' ) ) THEN
+ ISIDE = 3
+ COMPL = .TRUE.
+ COMPR = .TRUE.
+ ELSE
+ ISIDE = -1
+ END IF
+*
+ INFO = 0
+ IF( ISIDE.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( IHWMNY.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDS.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDP.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGEVC', -INFO )
+ RETURN
+ END IF
+*
+* Count the number of eigenvectors
+*
+ IF( .NOT.ILALL ) THEN
+ IM = 0
+ DO 10 J = 1, N
+ IF( SELECT( J ) )
+ $ IM = IM + 1
+ 10 CONTINUE
+ ELSE
+ IM = N
+ END IF
+*
+* Check diagonal of B
+*
+ ILBBAD = .FALSE.
+ DO 20 J = 1, N
+ IF( DIMAG( P( J, J ) ).NE.ZERO )
+ $ ILBBAD = .TRUE.
+ 20 CONTINUE
+*
+ IF( ILBBAD ) THEN
+ INFO = -7
+ ELSE IF( COMPL .AND. LDVL.LT.N .OR. LDVL.LT.1 ) THEN
+ INFO = -10
+ ELSE IF( COMPR .AND. LDVR.LT.N .OR. LDVR.LT.1 ) THEN
+ INFO = -12
+ ELSE IF( MM.LT.IM ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGEVC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ M = IM
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Machine Constants
+*
+ SAFMIN = DLAMCH( 'Safe minimum' )
+ BIG = ONE / SAFMIN
+ CALL DLABAD( SAFMIN, BIG )
+ ULP = DLAMCH( 'Epsilon' )*DLAMCH( 'Base' )
+ SMALL = SAFMIN*N / ULP
+ BIG = ONE / SMALL
+ BIGNUM = ONE / ( SAFMIN*N )
+*
+* Compute the 1-norm of each column of the strictly upper triangular
+* part of A and B to check for possible overflow in the triangular
+* solver.
+*
+ ANORM = ABS1( S( 1, 1 ) )
+ BNORM = ABS1( P( 1, 1 ) )
+ RWORK( 1 ) = ZERO
+ RWORK( N+1 ) = ZERO
+ DO 40 J = 2, N
+ RWORK( J ) = ZERO
+ RWORK( N+J ) = ZERO
+ DO 30 I = 1, J - 1
+ RWORK( J ) = RWORK( J ) + ABS1( S( I, J ) )
+ RWORK( N+J ) = RWORK( N+J ) + ABS1( P( I, J ) )
+ 30 CONTINUE
+ ANORM = MAX( ANORM, RWORK( J )+ABS1( S( J, J ) ) )
+ BNORM = MAX( BNORM, RWORK( N+J )+ABS1( P( J, J ) ) )
+ 40 CONTINUE
+*
+ ASCALE = ONE / MAX( ANORM, SAFMIN )
+ BSCALE = ONE / MAX( BNORM, SAFMIN )
+*
+* Left eigenvectors
+*
+ IF( COMPL ) THEN
+ IEIG = 0
+*
+* Main loop over eigenvalues
+*
+ DO 140 JE = 1, N
+ IF( ILALL ) THEN
+ ILCOMP = .TRUE.
+ ELSE
+ ILCOMP = SELECT( JE )
+ END IF
+ IF( ILCOMP ) THEN
+ IEIG = IEIG + 1
+*
+ IF( ABS1( S( JE, JE ) ).LE.SAFMIN .AND.
+ $ ABS( DBLE( P( JE, JE ) ) ).LE.SAFMIN ) THEN
+*
+* Singular matrix pencil -- return unit eigenvector
+*
+ DO 50 JR = 1, N
+ VL( JR, IEIG ) = CZERO
+ 50 CONTINUE
+ VL( IEIG, IEIG ) = CONE
+ GO TO 140
+ END IF
+*
+* Non-singular eigenvalue:
+* Compute coefficients a and b in
+* H
+* y ( a A - b B ) = 0
+*
+ TEMP = ONE / MAX( ABS1( S( JE, JE ) )*ASCALE,
+ $ ABS( DBLE( P( JE, JE ) ) )*BSCALE, SAFMIN )
+ SALPHA = ( TEMP*S( JE, JE ) )*ASCALE
+ SBETA = ( TEMP*DBLE( P( JE, JE ) ) )*BSCALE
+ ACOEFF = SBETA*ASCALE
+ BCOEFF = SALPHA*BSCALE
+*
+* Scale to avoid underflow
+*
+ LSA = ABS( SBETA ).GE.SAFMIN .AND. ABS( ACOEFF ).LT.SMALL
+ LSB = ABS1( SALPHA ).GE.SAFMIN .AND. ABS1( BCOEFF ).LT.
+ $ SMALL
+*
+ SCALE = ONE
+ IF( LSA )
+ $ SCALE = ( SMALL / ABS( SBETA ) )*MIN( ANORM, BIG )
+ IF( LSB )
+ $ SCALE = MAX( SCALE, ( SMALL / ABS1( SALPHA ) )*
+ $ MIN( BNORM, BIG ) )
+ IF( LSA .OR. LSB ) THEN
+ SCALE = MIN( SCALE, ONE /
+ $ ( SAFMIN*MAX( ONE, ABS( ACOEFF ),
+ $ ABS1( BCOEFF ) ) ) )
+ IF( LSA ) THEN
+ ACOEFF = ASCALE*( SCALE*SBETA )
+ ELSE
+ ACOEFF = SCALE*ACOEFF
+ END IF
+ IF( LSB ) THEN
+ BCOEFF = BSCALE*( SCALE*SALPHA )
+ ELSE
+ BCOEFF = SCALE*BCOEFF
+ END IF
+ END IF
+*
+ ACOEFA = ABS( ACOEFF )
+ BCOEFA = ABS1( BCOEFF )
+ XMAX = ONE
+ DO 60 JR = 1, N
+ WORK( JR ) = CZERO
+ 60 CONTINUE
+ WORK( JE ) = CONE
+ DMIN = MAX( ULP*ACOEFA*ANORM, ULP*BCOEFA*BNORM, SAFMIN )
+*
+* H
+* Triangular solve of (a A - b B) y = 0
+*
+* H
+* (rowwise in (a A - b B) , or columnwise in a A - b B)
+*
+ DO 100 J = JE + 1, N
+*
+* Compute
+* j-1
+* SUM = sum conjg( a*S(k,j) - b*P(k,j) )*x(k)
+* k=je
+* (Scale if necessary)
+*
+ TEMP = ONE / XMAX
+ IF( ACOEFA*RWORK( J )+BCOEFA*RWORK( N+J ).GT.BIGNUM*
+ $ TEMP ) THEN
+ DO 70 JR = JE, J - 1
+ WORK( JR ) = TEMP*WORK( JR )
+ 70 CONTINUE
+ XMAX = ONE
+ END IF
+ SUMA = CZERO
+ SUMB = CZERO
+*
+ DO 80 JR = JE, J - 1
+ SUMA = SUMA + DCONJG( S( JR, J ) )*WORK( JR )
+ SUMB = SUMB + DCONJG( P( JR, J ) )*WORK( JR )
+ 80 CONTINUE
+ SUM = ACOEFF*SUMA - DCONJG( BCOEFF )*SUMB
+*
+* Form x(j) = - SUM / conjg( a*S(j,j) - b*P(j,j) )
+*
+* with scaling and perturbation of the denominator
+*
+ D = DCONJG( ACOEFF*S( J, J )-BCOEFF*P( J, J ) )
+ IF( ABS1( D ).LE.DMIN )
+ $ D = DCMPLX( DMIN )
+*
+ IF( ABS1( D ).LT.ONE ) THEN
+ IF( ABS1( SUM ).GE.BIGNUM*ABS1( D ) ) THEN
+ TEMP = ONE / ABS1( SUM )
+ DO 90 JR = JE, J - 1
+ WORK( JR ) = TEMP*WORK( JR )
+ 90 CONTINUE
+ XMAX = TEMP*XMAX
+ SUM = TEMP*SUM
+ END IF
+ END IF
+ WORK( J ) = ZLADIV( -SUM, D )
+ XMAX = MAX( XMAX, ABS1( WORK( J ) ) )
+ 100 CONTINUE
+*
+* Back transform eigenvector if HOWMNY='B'.
+*
+ IF( ILBACK ) THEN
+ CALL ZGEMV( 'N', N, N+1-JE, CONE, VL( 1, JE ), LDVL,
+ $ WORK( JE ), 1, CZERO, WORK( N+1 ), 1 )
+ ISRC = 2
+ IBEG = 1
+ ELSE
+ ISRC = 1
+ IBEG = JE
+ END IF
+*
+* Copy and scale eigenvector into column of VL
+*
+ XMAX = ZERO
+ DO 110 JR = IBEG, N
+ XMAX = MAX( XMAX, ABS1( WORK( ( ISRC-1 )*N+JR ) ) )
+ 110 CONTINUE
+*
+ IF( XMAX.GT.SAFMIN ) THEN
+ TEMP = ONE / XMAX
+ DO 120 JR = IBEG, N
+ VL( JR, IEIG ) = TEMP*WORK( ( ISRC-1 )*N+JR )
+ 120 CONTINUE
+ ELSE
+ IBEG = N + 1
+ END IF
+*
+ DO 130 JR = 1, IBEG - 1
+ VL( JR, IEIG ) = CZERO
+ 130 CONTINUE
+*
+ END IF
+ 140 CONTINUE
+ END IF
+*
+* Right eigenvectors
+*
+ IF( COMPR ) THEN
+ IEIG = IM + 1
+*
+* Main loop over eigenvalues
+*
+ DO 250 JE = N, 1, -1
+ IF( ILALL ) THEN
+ ILCOMP = .TRUE.
+ ELSE
+ ILCOMP = SELECT( JE )
+ END IF
+ IF( ILCOMP ) THEN
+ IEIG = IEIG - 1
+*
+ IF( ABS1( S( JE, JE ) ).LE.SAFMIN .AND.
+ $ ABS( DBLE( P( JE, JE ) ) ).LE.SAFMIN ) THEN
+*
+* Singular matrix pencil -- return unit eigenvector
+*
+ DO 150 JR = 1, N
+ VR( JR, IEIG ) = CZERO
+ 150 CONTINUE
+ VR( IEIG, IEIG ) = CONE
+ GO TO 250
+ END IF
+*
+* Non-singular eigenvalue:
+* Compute coefficients a and b in
+*
+* ( a A - b B ) x = 0
+*
+ TEMP = ONE / MAX( ABS1( S( JE, JE ) )*ASCALE,
+ $ ABS( DBLE( P( JE, JE ) ) )*BSCALE, SAFMIN )
+ SALPHA = ( TEMP*S( JE, JE ) )*ASCALE
+ SBETA = ( TEMP*DBLE( P( JE, JE ) ) )*BSCALE
+ ACOEFF = SBETA*ASCALE
+ BCOEFF = SALPHA*BSCALE
+*
+* Scale to avoid underflow
+*
+ LSA = ABS( SBETA ).GE.SAFMIN .AND. ABS( ACOEFF ).LT.SMALL
+ LSB = ABS1( SALPHA ).GE.SAFMIN .AND. ABS1( BCOEFF ).LT.
+ $ SMALL
+*
+ SCALE = ONE
+ IF( LSA )
+ $ SCALE = ( SMALL / ABS( SBETA ) )*MIN( ANORM, BIG )
+ IF( LSB )
+ $ SCALE = MAX( SCALE, ( SMALL / ABS1( SALPHA ) )*
+ $ MIN( BNORM, BIG ) )
+ IF( LSA .OR. LSB ) THEN
+ SCALE = MIN( SCALE, ONE /
+ $ ( SAFMIN*MAX( ONE, ABS( ACOEFF ),
+ $ ABS1( BCOEFF ) ) ) )
+ IF( LSA ) THEN
+ ACOEFF = ASCALE*( SCALE*SBETA )
+ ELSE
+ ACOEFF = SCALE*ACOEFF
+ END IF
+ IF( LSB ) THEN
+ BCOEFF = BSCALE*( SCALE*SALPHA )
+ ELSE
+ BCOEFF = SCALE*BCOEFF
+ END IF
+ END IF
+*
+ ACOEFA = ABS( ACOEFF )
+ BCOEFA = ABS1( BCOEFF )
+ XMAX = ONE
+ DO 160 JR = 1, N
+ WORK( JR ) = CZERO
+ 160 CONTINUE
+ WORK( JE ) = CONE
+ DMIN = MAX( ULP*ACOEFA*ANORM, ULP*BCOEFA*BNORM, SAFMIN )
+*
+* Triangular solve of (a A - b B) x = 0 (columnwise)
+*
+* WORK(1:j-1) contains sums w,
+* WORK(j+1:JE) contains x
+*
+ DO 170 JR = 1, JE - 1
+ WORK( JR ) = ACOEFF*S( JR, JE ) - BCOEFF*P( JR, JE )
+ 170 CONTINUE
+ WORK( JE ) = CONE
+*
+ DO 210 J = JE - 1, 1, -1
+*
+* Form x(j) := - w(j) / d
+* with scaling and perturbation of the denominator
+*
+ D = ACOEFF*S( J, J ) - BCOEFF*P( J, J )
+ IF( ABS1( D ).LE.DMIN )
+ $ D = DCMPLX( DMIN )
+*
+ IF( ABS1( D ).LT.ONE ) THEN
+ IF( ABS1( WORK( J ) ).GE.BIGNUM*ABS1( D ) ) THEN
+ TEMP = ONE / ABS1( WORK( J ) )
+ DO 180 JR = 1, JE
+ WORK( JR ) = TEMP*WORK( JR )
+ 180 CONTINUE
+ END IF
+ END IF
+*
+ WORK( J ) = ZLADIV( -WORK( J ), D )
+*
+ IF( J.GT.1 ) THEN
+*
+* w = w + x(j)*(a S(*,j) - b P(*,j) ) with scaling
+*
+ IF( ABS1( WORK( J ) ).GT.ONE ) THEN
+ TEMP = ONE / ABS1( WORK( J ) )
+ IF( ACOEFA*RWORK( J )+BCOEFA*RWORK( N+J ).GE.
+ $ BIGNUM*TEMP ) THEN
+ DO 190 JR = 1, JE
+ WORK( JR ) = TEMP*WORK( JR )
+ 190 CONTINUE
+ END IF
+ END IF
+*
+ CA = ACOEFF*WORK( J )
+ CB = BCOEFF*WORK( J )
+ DO 200 JR = 1, J - 1
+ WORK( JR ) = WORK( JR ) + CA*S( JR, J ) -
+ $ CB*P( JR, J )
+ 200 CONTINUE
+ END IF
+ 210 CONTINUE
+*
+* Back transform eigenvector if HOWMNY='B'.
+*
+ IF( ILBACK ) THEN
+ CALL ZGEMV( 'N', N, JE, CONE, VR, LDVR, WORK, 1,
+ $ CZERO, WORK( N+1 ), 1 )
+ ISRC = 2
+ IEND = N
+ ELSE
+ ISRC = 1
+ IEND = JE
+ END IF
+*
+* Copy and scale eigenvector into column of VR
+*
+ XMAX = ZERO
+ DO 220 JR = 1, IEND
+ XMAX = MAX( XMAX, ABS1( WORK( ( ISRC-1 )*N+JR ) ) )
+ 220 CONTINUE
+*
+ IF( XMAX.GT.SAFMIN ) THEN
+ TEMP = ONE / XMAX
+ DO 230 JR = 1, IEND
+ VR( JR, IEIG ) = TEMP*WORK( ( ISRC-1 )*N+JR )
+ 230 CONTINUE
+ ELSE
+ IEND = 0
+ END IF
+*
+ DO 240 JR = IEND + 1, N
+ VR( JR, IEIG ) = CZERO
+ 240 CONTINUE
+*
+ END IF
+ 250 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZTGEVC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztgex2.f b/2.3-1/src/fortran/lapack/ztgex2.f
new file mode 100644
index 00000000..a0c42aad
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztgex2.f
@@ -0,0 +1,265 @@
+ SUBROUTINE ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, J1, INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ, WANTZ
+ INTEGER INFO, J1, LDA, LDB, LDQ, LDZ, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTGEX2 swaps adjacent diagonal 1 by 1 blocks (A11,B11) and (A22,B22)
+* in an upper triangular matrix pair (A, B) by an unitary equivalence
+* transformation.
+*
+* (A, B) must be in generalized Schur canonical form, that is, A and
+* B are both upper triangular.
+*
+* Optionally, the matrices Q and Z of generalized Schur vectors are
+* updated.
+*
+* Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)'
+* Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
+*
+*
+* Arguments
+* =========
+*
+* WANTQ (input) LOGICAL
+* .TRUE. : update the left transformation matrix Q;
+* .FALSE.: do not update Q.
+*
+* WANTZ (input) LOGICAL
+* .TRUE. : update the right transformation matrix Z;
+* .FALSE.: do not update Z.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) COMPLEX*16 arrays, dimensions (LDA,N)
+* On entry, the matrix A in the pair (A, B).
+* On exit, the updated matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 arrays, dimensions (LDB,N)
+* On entry, the matrix B in the pair (A, B).
+* On exit, the updated matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* If WANTQ = .TRUE, on entry, the unitary matrix Q. On exit,
+* the updated matrix Q.
+* Not referenced if WANTQ = .FALSE..
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1;
+* If WANTQ = .TRUE., LDQ >= N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* If WANTZ = .TRUE, on entry, the unitary matrix Z. On exit,
+* the updated matrix Z.
+* Not referenced if WANTZ = .FALSE..
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1;
+* If WANTZ = .TRUE., LDZ >= N.
+*
+* J1 (input) INTEGER
+* The index to the first block (A11, B11).
+*
+* INFO (output) INTEGER
+* =0: Successful exit.
+* =1: The transformed matrix pair (A, B) would be too far
+* from generalized Schur form; the problem is ill-
+* conditioned.
+*
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* In the current code both weak and strong stability tests are
+* performed. The user can omit the strong stability test by changing
+* the internal logical parameter WANDS to .FALSE.. See ref. [2] for
+* details.
+*
+* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
+* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
+* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
+* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
+*
+* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
+* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
+* Estimation: Theory, Algorithms and Software, Report UMINF-94.04,
+* Department of Computing Science, Umea University, S-901 87 Umea,
+* Sweden, 1994. Also as LAPACK Working Note 87. To appear in
+* Numerical Algorithms, 1996.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+ DOUBLE PRECISION TEN
+ PARAMETER ( TEN = 10.0D+0 )
+ INTEGER LDST
+ PARAMETER ( LDST = 2 )
+ LOGICAL WANDS
+ PARAMETER ( WANDS = .TRUE. )
+* ..
+* .. Local Scalars ..
+ LOGICAL DTRONG, WEAK
+ INTEGER I, M
+ DOUBLE PRECISION CQ, CZ, EPS, SA, SB, SCALE, SMLNUM, SS, SUM,
+ $ THRESH, WS
+ COMPLEX*16 CDUM, F, G, SQ, SZ
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 S( LDST, LDST ), T( LDST, LDST ), WORK( 8 )
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. External Subroutines ..
+ EXTERNAL ZLACPY, ZLARTG, ZLASSQ, ZROT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCONJG, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+ INFO = 0
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+*
+ M = LDST
+ WEAK = .FALSE.
+ DTRONG = .FALSE.
+*
+* Make a local copy of selected block in (A, B)
+*
+ CALL ZLACPY( 'Full', M, M, A( J1, J1 ), LDA, S, LDST )
+ CALL ZLACPY( 'Full', M, M, B( J1, J1 ), LDB, T, LDST )
+*
+* Compute the threshold for testing the acceptance of swapping.
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' ) / EPS
+ SCALE = DBLE( CZERO )
+ SUM = DBLE( CONE )
+ CALL ZLACPY( 'Full', M, M, S, LDST, WORK, M )
+ CALL ZLACPY( 'Full', M, M, T, LDST, WORK( M*M+1 ), M )
+ CALL ZLASSQ( 2*M*M, WORK, 1, SCALE, SUM )
+ SA = SCALE*SQRT( SUM )
+ THRESH = MAX( TEN*EPS*SA, SMLNUM )
+*
+* Compute unitary QL and RQ that swap 1-by-1 and 1-by-1 blocks
+* using Givens rotations and perform the swap tentatively.
+*
+ F = S( 2, 2 )*T( 1, 1 ) - T( 2, 2 )*S( 1, 1 )
+ G = S( 2, 2 )*T( 1, 2 ) - T( 2, 2 )*S( 1, 2 )
+ SA = ABS( S( 2, 2 ) )
+ SB = ABS( T( 2, 2 ) )
+ CALL ZLARTG( G, F, CZ, SZ, CDUM )
+ SZ = -SZ
+ CALL ZROT( 2, S( 1, 1 ), 1, S( 1, 2 ), 1, CZ, DCONJG( SZ ) )
+ CALL ZROT( 2, T( 1, 1 ), 1, T( 1, 2 ), 1, CZ, DCONJG( SZ ) )
+ IF( SA.GE.SB ) THEN
+ CALL ZLARTG( S( 1, 1 ), S( 2, 1 ), CQ, SQ, CDUM )
+ ELSE
+ CALL ZLARTG( T( 1, 1 ), T( 2, 1 ), CQ, SQ, CDUM )
+ END IF
+ CALL ZROT( 2, S( 1, 1 ), LDST, S( 2, 1 ), LDST, CQ, SQ )
+ CALL ZROT( 2, T( 1, 1 ), LDST, T( 2, 1 ), LDST, CQ, SQ )
+*
+* Weak stability test: |S21| + |T21| <= O(EPS F-norm((S, T)))
+*
+ WS = ABS( S( 2, 1 ) ) + ABS( T( 2, 1 ) )
+ WEAK = WS.LE.THRESH
+ IF( .NOT.WEAK )
+ $ GO TO 20
+*
+ IF( WANDS ) THEN
+*
+* Strong stability test:
+* F-norm((A-QL'*S*QR, B-QL'*T*QR)) <= O(EPS*F-norm((A, B)))
+*
+ CALL ZLACPY( 'Full', M, M, S, LDST, WORK, M )
+ CALL ZLACPY( 'Full', M, M, T, LDST, WORK( M*M+1 ), M )
+ CALL ZROT( 2, WORK, 1, WORK( 3 ), 1, CZ, -DCONJG( SZ ) )
+ CALL ZROT( 2, WORK( 5 ), 1, WORK( 7 ), 1, CZ, -DCONJG( SZ ) )
+ CALL ZROT( 2, WORK, 2, WORK( 2 ), 2, CQ, -SQ )
+ CALL ZROT( 2, WORK( 5 ), 2, WORK( 6 ), 2, CQ, -SQ )
+ DO 10 I = 1, 2
+ WORK( I ) = WORK( I ) - A( J1+I-1, J1 )
+ WORK( I+2 ) = WORK( I+2 ) - A( J1+I-1, J1+1 )
+ WORK( I+4 ) = WORK( I+4 ) - B( J1+I-1, J1 )
+ WORK( I+6 ) = WORK( I+6 ) - B( J1+I-1, J1+1 )
+ 10 CONTINUE
+ SCALE = DBLE( CZERO )
+ SUM = DBLE( CONE )
+ CALL ZLASSQ( 2*M*M, WORK, 1, SCALE, SUM )
+ SS = SCALE*SQRT( SUM )
+ DTRONG = SS.LE.THRESH
+ IF( .NOT.DTRONG )
+ $ GO TO 20
+ END IF
+*
+* If the swap is accepted ("weakly" and "strongly"), apply the
+* equivalence transformations to the original matrix pair (A,B)
+*
+ CALL ZROT( J1+1, A( 1, J1 ), 1, A( 1, J1+1 ), 1, CZ,
+ $ DCONJG( SZ ) )
+ CALL ZROT( J1+1, B( 1, J1 ), 1, B( 1, J1+1 ), 1, CZ,
+ $ DCONJG( SZ ) )
+ CALL ZROT( N-J1+1, A( J1, J1 ), LDA, A( J1+1, J1 ), LDA, CQ, SQ )
+ CALL ZROT( N-J1+1, B( J1, J1 ), LDB, B( J1+1, J1 ), LDB, CQ, SQ )
+*
+* Set N1 by N2 (2,1) blocks to 0
+*
+ A( J1+1, J1 ) = CZERO
+ B( J1+1, J1 ) = CZERO
+*
+* Accumulate transformations into Q and Z if requested.
+*
+ IF( WANTZ )
+ $ CALL ZROT( N, Z( 1, J1 ), 1, Z( 1, J1+1 ), 1, CZ,
+ $ DCONJG( SZ ) )
+ IF( WANTQ )
+ $ CALL ZROT( N, Q( 1, J1 ), 1, Q( 1, J1+1 ), 1, CQ,
+ $ DCONJG( SQ ) )
+*
+* Exit with INFO = 0 if swap was successfully performed.
+*
+ RETURN
+*
+* Exit with INFO = 1 if swap was rejected.
+*
+ 20 CONTINUE
+ INFO = 1
+ RETURN
+*
+* End of ZTGEX2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztgexc.f b/2.3-1/src/fortran/lapack/ztgexc.f
new file mode 100644
index 00000000..0f57939c
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztgexc.f
@@ -0,0 +1,206 @@
+ SUBROUTINE ZTGEXC( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, IFST, ILST, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ, WANTZ
+ INTEGER IFST, ILST, INFO, LDA, LDB, LDQ, LDZ, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
+ $ Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTGEXC reorders the generalized Schur decomposition of a complex
+* matrix pair (A,B), using an unitary equivalence transformation
+* (A, B) := Q * (A, B) * Z', so that the diagonal block of (A, B) with
+* row index IFST is moved to row ILST.
+*
+* (A, B) must be in generalized Schur canonical form, that is, A and
+* B are both upper triangular.
+*
+* Optionally, the matrices Q and Z of generalized Schur vectors are
+* updated.
+*
+* Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)'
+* Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
+*
+* Arguments
+* =========
+*
+* WANTQ (input) LOGICAL
+* .TRUE. : update the left transformation matrix Q;
+* .FALSE.: do not update Q.
+*
+* WANTZ (input) LOGICAL
+* .TRUE. : update the right transformation matrix Z;
+* .FALSE.: do not update Z.
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the upper triangular matrix A in the pair (A, B).
+* On exit, the updated matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB,N)
+* On entry, the upper triangular matrix B in the pair (A, B).
+* On exit, the updated matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* On entry, if WANTQ = .TRUE., the unitary matrix Q.
+* On exit, the updated matrix Q.
+* If WANTQ = .FALSE., Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1;
+* If WANTQ = .TRUE., LDQ >= N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* On entry, if WANTZ = .TRUE., the unitary matrix Z.
+* On exit, the updated matrix Z.
+* If WANTZ = .FALSE., Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1;
+* If WANTZ = .TRUE., LDZ >= N.
+*
+* IFST (input) INTEGER
+* ILST (input/output) INTEGER
+* Specify the reordering of the diagonal blocks of (A, B).
+* The block with row index IFST is moved to row ILST, by a
+* sequence of swapping between adjacent blocks.
+*
+* INFO (output) INTEGER
+* =0: Successful exit.
+* <0: if INFO = -i, the i-th argument had an illegal value.
+* =1: The transformed matrix pair (A, B) would be too far
+* from generalized Schur form; the problem is ill-
+* conditioned. (A, B) may have been partially reordered,
+* and ILST points to the first row of the current
+* position of the block being moved.
+*
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
+* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
+* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
+* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
+*
+* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
+* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
+* Estimation: Theory, Algorithms and Software, Report
+* UMINF - 94.04, Department of Computing Science, Umea University,
+* S-901 87 Umea, Sweden, 1994. Also as LAPACK Working Note 87.
+* To appear in Numerical Algorithms, 1996.
+*
+* [3] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
+* for Solving the Generalized Sylvester Equation and Estimating the
+* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
+* Department of Computing Science, Umea University, S-901 87 Umea,
+* Sweden, December 1993, Revised April 1994, Also as LAPACK working
+* Note 75. To appear in ACM Trans. on Math. Software, Vol 22, No 1,
+* 1996.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER HERE
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZTGEX2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode and test input arguments.
+ INFO = 0
+ IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDQ.LT.1 .OR. WANTQ .AND. ( LDQ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -9
+ ELSE IF( LDZ.LT.1 .OR. WANTZ .AND. ( LDZ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -11
+ ELSE IF( IFST.LT.1 .OR. IFST.GT.N ) THEN
+ INFO = -12
+ ELSE IF( ILST.LT.1 .OR. ILST.GT.N ) THEN
+ INFO = -13
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGEXC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.1 )
+ $ RETURN
+ IF( IFST.EQ.ILST )
+ $ RETURN
+*
+ IF( IFST.LT.ILST ) THEN
+*
+ HERE = IFST
+*
+ 10 CONTINUE
+*
+* Swap with next one below
+*
+ CALL ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ,
+ $ HERE, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE + 1
+ IF( HERE.LT.ILST )
+ $ GO TO 10
+ HERE = HERE - 1
+ ELSE
+ HERE = IFST - 1
+*
+ 20 CONTINUE
+*
+* Swap with next one above
+*
+ CALL ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ,
+ $ HERE, INFO )
+ IF( INFO.NE.0 ) THEN
+ ILST = HERE
+ RETURN
+ END IF
+ HERE = HERE - 1
+ IF( HERE.GE.ILST )
+ $ GO TO 20
+ HERE = HERE + 1
+ END IF
+ ILST = HERE
+ RETURN
+*
+* End of ZTGEXC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztgsen.f b/2.3-1/src/fortran/lapack/ztgsen.f
new file mode 100644
index 00000000..71ee4cd0
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztgsen.f
@@ -0,0 +1,652 @@
+ SUBROUTINE ZTGSEN( IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB,
+ $ ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF,
+ $ WORK, LWORK, IWORK, LIWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call ZLACN2 in place of ZLACON, 10 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ LOGICAL WANTQ, WANTZ
+ INTEGER IJOB, INFO, LDA, LDB, LDQ, LDZ, LIWORK, LWORK,
+ $ M, N
+ DOUBLE PRECISION PL, PR
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ INTEGER IWORK( * )
+ DOUBLE PRECISION DIF( * )
+ COMPLEX*16 A( LDA, * ), ALPHA( * ), B( LDB, * ),
+ $ BETA( * ), Q( LDQ, * ), WORK( * ), Z( LDZ, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTGSEN reorders the generalized Schur decomposition of a complex
+* matrix pair (A, B) (in terms of an unitary equivalence trans-
+* formation Q' * (A, B) * Z), so that a selected cluster of eigenvalues
+* appears in the leading diagonal blocks of the pair (A,B). The leading
+* columns of Q and Z form unitary bases of the corresponding left and
+* right eigenspaces (deflating subspaces). (A, B) must be in
+* generalized Schur canonical form, that is, A and B are both upper
+* triangular.
+*
+* ZTGSEN also computes the generalized eigenvalues
+*
+* w(j)= ALPHA(j) / BETA(j)
+*
+* of the reordered matrix pair (A, B).
+*
+* Optionally, the routine computes estimates of reciprocal condition
+* numbers for eigenvalues and eigenspaces. These are Difu[(A11,B11),
+* (A22,B22)] and Difl[(A11,B11), (A22,B22)], i.e. the separation(s)
+* between the matrix pairs (A11, B11) and (A22,B22) that correspond to
+* the selected cluster and the eigenvalues outside the cluster, resp.,
+* and norms of "projections" onto left and right eigenspaces w.r.t.
+* the selected cluster in the (1,1)-block.
+*
+*
+* Arguments
+* =========
+*
+* IJOB (input) integer
+* Specifies whether condition numbers are required for the
+* cluster of eigenvalues (PL and PR) or the deflating subspaces
+* (Difu and Difl):
+* =0: Only reorder w.r.t. SELECT. No extras.
+* =1: Reciprocal of norms of "projections" onto left and right
+* eigenspaces w.r.t. the selected cluster (PL and PR).
+* =2: Upper bounds on Difu and Difl. F-norm-based estimate
+* (DIF(1:2)).
+* =3: Estimate of Difu and Difl. 1-norm-based estimate
+* (DIF(1:2)).
+* About 5 times as expensive as IJOB = 2.
+* =4: Compute PL, PR and DIF (i.e. 0, 1 and 2 above): Economic
+* version to get it all.
+* =5: Compute PL, PR and DIF (i.e. 0, 1 and 3 above)
+*
+* WANTQ (input) LOGICAL
+* .TRUE. : update the left transformation matrix Q;
+* .FALSE.: do not update Q.
+*
+* WANTZ (input) LOGICAL
+* .TRUE. : update the right transformation matrix Z;
+* .FALSE.: do not update Z.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* SELECT specifies the eigenvalues in the selected cluster. To
+* select an eigenvalue w(j), SELECT(j) must be set to
+* .TRUE..
+*
+* N (input) INTEGER
+* The order of the matrices A and B. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension(LDA,N)
+* On entry, the upper triangular matrix A, in generalized
+* Schur canonical form.
+* On exit, A is overwritten by the reordered matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* B (input/output) COMPLEX*16 array, dimension(LDB,N)
+* On entry, the upper triangular matrix B, in generalized
+* Schur canonical form.
+* On exit, B is overwritten by the reordered matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* ALPHA (output) COMPLEX*16 array, dimension (N)
+* BETA (output) COMPLEX*16 array, dimension (N)
+* The diagonal elements of A and B, respectively,
+* when the pair (A,B) has been reduced to generalized Schur
+* form. ALPHA(i)/BETA(i) i=1,...,N are the generalized
+* eigenvalues.
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDQ,N)
+* On entry, if WANTQ = .TRUE., Q is an N-by-N matrix.
+* On exit, Q has been postmultiplied by the left unitary
+* transformation matrix which reorder (A, B); The leading M
+* columns of Q form orthonormal bases for the specified pair of
+* left eigenspaces (deflating subspaces).
+* If WANTQ = .FALSE., Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= 1.
+* If WANTQ = .TRUE., LDQ >= N.
+*
+* Z (input/output) COMPLEX*16 array, dimension (LDZ,N)
+* On entry, if WANTZ = .TRUE., Z is an N-by-N matrix.
+* On exit, Z has been postmultiplied by the left unitary
+* transformation matrix which reorder (A, B); The leading M
+* columns of Z form orthonormal bases for the specified pair of
+* left eigenspaces (deflating subspaces).
+* If WANTZ = .FALSE., Z is not referenced.
+*
+* LDZ (input) INTEGER
+* The leading dimension of the array Z. LDZ >= 1.
+* If WANTZ = .TRUE., LDZ >= N.
+*
+* M (output) INTEGER
+* The dimension of the specified pair of left and right
+* eigenspaces, (deflating subspaces) 0 <= M <= N.
+*
+* PL (output) DOUBLE PRECISION
+* PR (output) DOUBLE PRECISION
+* If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
+* reciprocal of the norm of "projections" onto left and right
+* eigenspace with respect to the selected cluster.
+* 0 < PL, PR <= 1.
+* If M = 0 or M = N, PL = PR = 1.
+* If IJOB = 0, 2 or 3 PL, PR are not referenced.
+*
+* DIF (output) DOUBLE PRECISION array, dimension (2).
+* If IJOB >= 2, DIF(1:2) store the estimates of Difu and Difl.
+* If IJOB = 2 or 4, DIF(1:2) are F-norm-based upper bounds on
+* Difu and Difl. If IJOB = 3 or 5, DIF(1:2) are 1-norm-based
+* estimates of Difu and Difl, computed using reversed
+* communication with ZLACN2.
+* If M = 0 or N, DIF(1:2) = F-norm([A, B]).
+* If IJOB = 0 or 1, DIF is not referenced.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* IF IJOB = 0, WORK is not referenced. Otherwise,
+* on exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= 1
+* If IJOB = 1, 2 or 4, LWORK >= 2*M*(N-M)
+* If IJOB = 3 or 5, LWORK >= 4*M*(N-M)
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
+* IF IJOB = 0, IWORK is not referenced. Otherwise,
+* on exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
+*
+* LIWORK (input) INTEGER
+* The dimension of the array IWORK. LIWORK >= 1.
+* If IJOB = 1, 2 or 4, LIWORK >= N+2;
+* If IJOB = 3 or 5, LIWORK >= MAX(N+2, 2*M*(N-M));
+*
+* If LIWORK = -1, then a workspace query is assumed; the
+* routine only calculates the optimal size of the IWORK array,
+* returns this value as the first entry of the IWORK array, and
+* no error message related to LIWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* =0: Successful exit.
+* <0: If INFO = -i, the i-th argument had an illegal value.
+* =1: Reordering of (A, B) failed because the transformed
+* matrix pair (A, B) would be too far from generalized
+* Schur form; the problem is very ill-conditioned.
+* (A, B) may have been partially reordered.
+* If requested, 0 is returned in DIF(*), PL and PR.
+*
+*
+* Further Details
+* ===============
+*
+* ZTGSEN first collects the selected eigenvalues by computing unitary
+* U and W that move them to the top left corner of (A, B). In other
+* words, the selected eigenvalues are the eigenvalues of (A11, B11) in
+*
+* U'*(A, B)*W = (A11 A12) (B11 B12) n1
+* ( 0 A22),( 0 B22) n2
+* n1 n2 n1 n2
+*
+* where N = n1+n2 and U' means the conjugate transpose of U. The first
+* n1 columns of U and W span the specified pair of left and right
+* eigenspaces (deflating subspaces) of (A, B).
+*
+* If (A, B) has been obtained from the generalized real Schur
+* decomposition of a matrix pair (C, D) = Q*(A, B)*Z', then the
+* reordered generalized Schur form of (C, D) is given by
+*
+* (C, D) = (Q*U)*(U'*(A, B)*W)*(Z*W)',
+*
+* and the first n1 columns of Q*U and Z*W span the corresponding
+* deflating subspaces of (C, D) (Q and Z store Q*U and Z*W, resp.).
+*
+* Note that if the selected eigenvalue is sufficiently ill-conditioned,
+* then its value may differ significantly from its value before
+* reordering.
+*
+* The reciprocal condition numbers of the left and right eigenspaces
+* spanned by the first n1 columns of U and W (or Q*U and Z*W) may
+* be returned in DIF(1:2), corresponding to Difu and Difl, resp.
+*
+* The Difu and Difl are defined as:
+*
+* Difu[(A11, B11), (A22, B22)] = sigma-min( Zu )
+* and
+* Difl[(A11, B11), (A22, B22)] = Difu[(A22, B22), (A11, B11)],
+*
+* where sigma-min(Zu) is the smallest singular value of the
+* (2*n1*n2)-by-(2*n1*n2) matrix
+*
+* Zu = [ kron(In2, A11) -kron(A22', In1) ]
+* [ kron(In2, B11) -kron(B22', In1) ].
+*
+* Here, Inx is the identity matrix of size nx and A22' is the
+* transpose of A22. kron(X, Y) is the Kronecker product between
+* the matrices X and Y.
+*
+* When DIF(2) is small, small changes in (A, B) can cause large changes
+* in the deflating subspace. An approximate (asymptotic) bound on the
+* maximum angular error in the computed deflating subspaces is
+*
+* EPS * norm((A, B)) / DIF(2),
+*
+* where EPS is the machine precision.
+*
+* The reciprocal norm of the projectors on the left and right
+* eigenspaces associated with (A11, B11) may be returned in PL and PR.
+* They are computed as follows. First we compute L and R so that
+* P*(A, B)*Q is block diagonal, where
+*
+* P = ( I -L ) n1 Q = ( I R ) n1
+* ( 0 I ) n2 and ( 0 I ) n2
+* n1 n2 n1 n2
+*
+* and (L, R) is the solution to the generalized Sylvester equation
+*
+* A11*R - L*A22 = -A12
+* B11*R - L*B22 = -B12
+*
+* Then PL = (F-norm(L)**2+1)**(-1/2) and PR = (F-norm(R)**2+1)**(-1/2).
+* An approximate (asymptotic) bound on the average absolute error of
+* the selected eigenvalues is
+*
+* EPS * norm((A, B)) / PL.
+*
+* There are also global error bounds which valid for perturbations up
+* to a certain restriction: A lower bound (x) on the smallest
+* F-norm(E,F) for which an eigenvalue of (A11, B11) may move and
+* coalesce with an eigenvalue of (A22, B22) under perturbation (E,F),
+* (i.e. (A + E, B + F), is
+*
+* x = min(Difu,Difl)/((1/(PL*PL)+1/(PR*PR))**(1/2)+2*max(1/PL,1/PR)).
+*
+* An approximate bound on x can be computed from DIF(1:2), PL and PR.
+*
+* If y = ( F-norm(E,F) / x) <= 1, the angles between the perturbed
+* (L', R') and unperturbed (L, R) left and right deflating subspaces
+* associated with the selected cluster in the (1,1)-blocks can be
+* bounded as
+*
+* max-angle(L, L') <= arctan( y * PL / (1 - y * (1 - PL * PL)**(1/2))
+* max-angle(R, R') <= arctan( y * PR / (1 - y * (1 - PR * PR)**(1/2))
+*
+* See LAPACK User's Guide section 4.11 or the following references
+* for more information.
+*
+* Note that if the default method for computing the Frobenius-norm-
+* based estimate DIF is not wanted (see ZLATDF), then the parameter
+* IDIFJB (see below) should be changed from 3 to 4 (routine ZLATDF
+* (IJOB = 2 will be used)). See ZTGSYL for more details.
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* References
+* ==========
+*
+* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
+* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
+* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
+* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
+*
+* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
+* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
+* Estimation: Theory, Algorithms and Software, Report
+* UMINF - 94.04, Department of Computing Science, Umea University,
+* S-901 87 Umea, Sweden, 1994. Also as LAPACK Working Note 87.
+* To appear in Numerical Algorithms, 1996.
+*
+* [3] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
+* for Solving the Generalized Sylvester Equation and Estimating the
+* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
+* Department of Computing Science, Umea University, S-901 87 Umea,
+* Sweden, December 1993, Revised April 1994, Also as LAPACK working
+* Note 75. To appear in ACM Trans. on Math. Software, Vol 22, No 1,
+* 1996.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IDIFJB
+ PARAMETER ( IDIFJB = 3 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, SWAP, WANTD, WANTD1, WANTD2, WANTP
+ INTEGER I, IERR, IJB, K, KASE, KS, LIWMIN, LWMIN, MN2,
+ $ N1, N2
+ DOUBLE PRECISION DSCALE, DSUM, RDSCAL, SAFMIN
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLACN2, ZLACPY, ZLASSQ, ZSCAL, ZTGEXC,
+ $ ZTGSYL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DCMPLX, DCONJG, MAX, SQRT
+* ..
+* .. External Functions ..
+ DOUBLE PRECISION DLAMCH
+ EXTERNAL DLAMCH
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 .OR. LIWORK.EQ.-1 )
+*
+ IF( IJOB.LT.0 .OR. IJOB.GT.5 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.N ) ) THEN
+ INFO = -13
+ ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN
+ INFO = -15
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGSEN', -INFO )
+ RETURN
+ END IF
+*
+ IERR = 0
+*
+ WANTP = IJOB.EQ.1 .OR. IJOB.GE.4
+ WANTD1 = IJOB.EQ.2 .OR. IJOB.EQ.4
+ WANTD2 = IJOB.EQ.3 .OR. IJOB.EQ.5
+ WANTD = WANTD1 .OR. WANTD2
+*
+* Set M to the dimension of the specified pair of deflating
+* subspaces.
+*
+ M = 0
+ DO 10 K = 1, N
+ ALPHA( K ) = A( K, K )
+ BETA( K ) = B( K, K )
+ IF( K.LT.N ) THEN
+ IF( SELECT( K ) )
+ $ M = M + 1
+ ELSE
+ IF( SELECT( N ) )
+ $ M = M + 1
+ END IF
+ 10 CONTINUE
+*
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.2 .OR. IJOB.EQ.4 ) THEN
+ LWMIN = MAX( 1, 2*M*( N-M ) )
+ LIWMIN = MAX( 1, N+2 )
+ ELSE IF( IJOB.EQ.3 .OR. IJOB.EQ.5 ) THEN
+ LWMIN = MAX( 1, 4*M*( N-M ) )
+ LIWMIN = MAX( 1, 2*M*( N-M ), N+2 )
+ ELSE
+ LWMIN = 1
+ LIWMIN = 1
+ END IF
+*
+ WORK( 1 ) = LWMIN
+ IWORK( 1 ) = LIWMIN
+*
+ IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -21
+ ELSE IF( LIWORK.LT.LIWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -23
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGSEN', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( M.EQ.N .OR. M.EQ.0 ) THEN
+ IF( WANTP ) THEN
+ PL = ONE
+ PR = ONE
+ END IF
+ IF( WANTD ) THEN
+ DSCALE = ZERO
+ DSUM = ONE
+ DO 20 I = 1, N
+ CALL ZLASSQ( N, A( 1, I ), 1, DSCALE, DSUM )
+ CALL ZLASSQ( N, B( 1, I ), 1, DSCALE, DSUM )
+ 20 CONTINUE
+ DIF( 1 ) = DSCALE*SQRT( DSUM )
+ DIF( 2 ) = DIF( 1 )
+ END IF
+ GO TO 70
+ END IF
+*
+* Get machine constant
+*
+ SAFMIN = DLAMCH( 'S' )
+*
+* Collect the selected blocks at the top-left corner of (A, B).
+*
+ KS = 0
+ DO 30 K = 1, N
+ SWAP = SELECT( K )
+ IF( SWAP ) THEN
+ KS = KS + 1
+*
+* Swap the K-th block to position KS. Compute unitary Q
+* and Z that will swap adjacent diagonal blocks in (A, B).
+*
+ IF( K.NE.KS )
+ $ CALL ZTGEXC( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z,
+ $ LDZ, K, KS, IERR )
+*
+ IF( IERR.GT.0 ) THEN
+*
+* Swap is rejected: exit.
+*
+ INFO = 1
+ IF( WANTP ) THEN
+ PL = ZERO
+ PR = ZERO
+ END IF
+ IF( WANTD ) THEN
+ DIF( 1 ) = ZERO
+ DIF( 2 ) = ZERO
+ END IF
+ GO TO 70
+ END IF
+ END IF
+ 30 CONTINUE
+ IF( WANTP ) THEN
+*
+* Solve generalized Sylvester equation for R and L:
+* A11 * R - L * A22 = A12
+* B11 * R - L * B22 = B12
+*
+ N1 = M
+ N2 = N - M
+ I = N1 + 1
+ CALL ZLACPY( 'Full', N1, N2, A( 1, I ), LDA, WORK, N1 )
+ CALL ZLACPY( 'Full', N1, N2, B( 1, I ), LDB, WORK( N1*N2+1 ),
+ $ N1 )
+ IJB = 0
+ CALL ZTGSYL( 'N', IJB, N1, N2, A, LDA, A( I, I ), LDA, WORK,
+ $ N1, B, LDB, B( I, I ), LDB, WORK( N1*N2+1 ), N1,
+ $ DSCALE, DIF( 1 ), WORK( N1*N2*2+1 ),
+ $ LWORK-2*N1*N2, IWORK, IERR )
+*
+* Estimate the reciprocal of norms of "projections" onto
+* left and right eigenspaces
+*
+ RDSCAL = ZERO
+ DSUM = ONE
+ CALL ZLASSQ( N1*N2, WORK, 1, RDSCAL, DSUM )
+ PL = RDSCAL*SQRT( DSUM )
+ IF( PL.EQ.ZERO ) THEN
+ PL = ONE
+ ELSE
+ PL = DSCALE / ( SQRT( DSCALE*DSCALE / PL+PL )*SQRT( PL ) )
+ END IF
+ RDSCAL = ZERO
+ DSUM = ONE
+ CALL ZLASSQ( N1*N2, WORK( N1*N2+1 ), 1, RDSCAL, DSUM )
+ PR = RDSCAL*SQRT( DSUM )
+ IF( PR.EQ.ZERO ) THEN
+ PR = ONE
+ ELSE
+ PR = DSCALE / ( SQRT( DSCALE*DSCALE / PR+PR )*SQRT( PR ) )
+ END IF
+ END IF
+ IF( WANTD ) THEN
+*
+* Compute estimates Difu and Difl.
+*
+ IF( WANTD1 ) THEN
+ N1 = M
+ N2 = N - M
+ I = N1 + 1
+ IJB = IDIFJB
+*
+* Frobenius norm-based Difu estimate.
+*
+ CALL ZTGSYL( 'N', IJB, N1, N2, A, LDA, A( I, I ), LDA, WORK,
+ $ N1, B, LDB, B( I, I ), LDB, WORK( N1*N2+1 ),
+ $ N1, DSCALE, DIF( 1 ), WORK( N1*N2*2+1 ),
+ $ LWORK-2*N1*N2, IWORK, IERR )
+*
+* Frobenius norm-based Difl estimate.
+*
+ CALL ZTGSYL( 'N', IJB, N2, N1, A( I, I ), LDA, A, LDA, WORK,
+ $ N2, B( I, I ), LDB, B, LDB, WORK( N1*N2+1 ),
+ $ N2, DSCALE, DIF( 2 ), WORK( N1*N2*2+1 ),
+ $ LWORK-2*N1*N2, IWORK, IERR )
+ ELSE
+*
+* Compute 1-norm-based estimates of Difu and Difl using
+* reversed communication with ZLACN2. In each step a
+* generalized Sylvester equation or a transposed variant
+* is solved.
+*
+ KASE = 0
+ N1 = M
+ N2 = N - M
+ I = N1 + 1
+ IJB = 0
+ MN2 = 2*N1*N2
+*
+* 1-norm-based estimate of Difu.
+*
+ 40 CONTINUE
+ CALL ZLACN2( MN2, WORK( MN2+1 ), WORK, DIF( 1 ), KASE,
+ $ ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Solve generalized Sylvester equation
+*
+ CALL ZTGSYL( 'N', IJB, N1, N2, A, LDA, A( I, I ), LDA,
+ $ WORK, N1, B, LDB, B( I, I ), LDB,
+ $ WORK( N1*N2+1 ), N1, DSCALE, DIF( 1 ),
+ $ WORK( N1*N2*2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ ELSE
+*
+* Solve the transposed variant.
+*
+ CALL ZTGSYL( 'C', IJB, N1, N2, A, LDA, A( I, I ), LDA,
+ $ WORK, N1, B, LDB, B( I, I ), LDB,
+ $ WORK( N1*N2+1 ), N1, DSCALE, DIF( 1 ),
+ $ WORK( N1*N2*2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ END IF
+ GO TO 40
+ END IF
+ DIF( 1 ) = DSCALE / DIF( 1 )
+*
+* 1-norm-based estimate of Difl.
+*
+ 50 CONTINUE
+ CALL ZLACN2( MN2, WORK( MN2+1 ), WORK, DIF( 2 ), KASE,
+ $ ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Solve generalized Sylvester equation
+*
+ CALL ZTGSYL( 'N', IJB, N2, N1, A( I, I ), LDA, A, LDA,
+ $ WORK, N2, B( I, I ), LDB, B, LDB,
+ $ WORK( N1*N2+1 ), N2, DSCALE, DIF( 2 ),
+ $ WORK( N1*N2*2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ ELSE
+*
+* Solve the transposed variant.
+*
+ CALL ZTGSYL( 'C', IJB, N2, N1, A( I, I ), LDA, A, LDA,
+ $ WORK, N2, B, LDB, B( I, I ), LDB,
+ $ WORK( N1*N2+1 ), N2, DSCALE, DIF( 2 ),
+ $ WORK( N1*N2*2+1 ), LWORK-2*N1*N2, IWORK,
+ $ IERR )
+ END IF
+ GO TO 50
+ END IF
+ DIF( 2 ) = DSCALE / DIF( 2 )
+ END IF
+ END IF
+*
+* If B(K,K) is complex, make it real and positive (normalization
+* of the generalized Schur form) and Store the generalized
+* eigenvalues of reordered pair (A, B)
+*
+ DO 60 K = 1, N
+ DSCALE = ABS( B( K, K ) )
+ IF( DSCALE.GT.SAFMIN ) THEN
+ WORK( 1 ) = DCONJG( B( K, K ) / DSCALE )
+ WORK( 2 ) = B( K, K ) / DSCALE
+ B( K, K ) = DSCALE
+ CALL ZSCAL( N-K, WORK( 1 ), B( K, K+1 ), LDB )
+ CALL ZSCAL( N-K+1, WORK( 1 ), A( K, K ), LDA )
+ IF( WANTQ )
+ $ CALL ZSCAL( N, WORK( 2 ), Q( 1, K ), 1 )
+ ELSE
+ B( K, K ) = DCMPLX( ZERO, ZERO )
+ END IF
+*
+ ALPHA( K ) = A( K, K )
+ BETA( K ) = B( K, K )
+*
+ 60 CONTINUE
+*
+ 70 CONTINUE
+*
+ WORK( 1 ) = LWMIN
+ IWORK( 1 ) = LIWMIN
+*
+ RETURN
+*
+* End of ZTGSEN
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztgsy2.f b/2.3-1/src/fortran/lapack/ztgsy2.f
new file mode 100644
index 00000000..82ec5eb1
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztgsy2.f
@@ -0,0 +1,361 @@
+ SUBROUTINE ZTGSY2( TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D,
+ $ LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL,
+ $ INFO )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER IJOB, INFO, LDA, LDB, LDC, LDD, LDE, LDF, M, N
+ DOUBLE PRECISION RDSCAL, RDSUM, SCALE
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * ),
+ $ D( LDD, * ), E( LDE, * ), F( LDF, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTGSY2 solves the generalized Sylvester equation
+*
+* A * R - L * B = scale * C (1)
+* D * R - L * E = scale * F
+*
+* using Level 1 and 2 BLAS, where R and L are unknown M-by-N matrices,
+* (A, D), (B, E) and (C, F) are given matrix pairs of size M-by-M,
+* N-by-N and M-by-N, respectively. A, B, D and E are upper triangular
+* (i.e., (A,D) and (B,E) in generalized Schur form).
+*
+* The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output
+* scaling factor chosen to avoid overflow.
+*
+* In matrix notation solving equation (1) corresponds to solve
+* Zx = scale * b, where Z is defined as
+*
+* Z = [ kron(In, A) -kron(B', Im) ] (2)
+* [ kron(In, D) -kron(E', Im) ],
+*
+* Ik is the identity matrix of size k and X' is the transpose of X.
+* kron(X, Y) is the Kronecker product between the matrices X and Y.
+*
+* If TRANS = 'C', y in the conjugate transposed system Z'y = scale*b
+* is solved for, which is equivalent to solve for R and L in
+*
+* A' * R + D' * L = scale * C (3)
+* R * B' + L * E' = scale * -F
+*
+* This case is used to compute an estimate of Dif[(A, D), (B, E)] =
+* = sigma_min(Z) using reverse communicaton with ZLACON.
+*
+* ZTGSY2 also (IJOB >= 1) contributes to the computation in ZTGSYL
+* of an upper bound on the separation between to matrix pairs. Then
+* the input (A, D), (B, E) are sub-pencils of two matrix pairs in
+* ZTGSYL.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* = 'N', solve the generalized Sylvester equation (1).
+* = 'T': solve the 'transposed' system (3).
+*
+* IJOB (input) INTEGER
+* Specifies what kind of functionality to be performed.
+* =0: solve (1) only.
+* =1: A contribution from this subsystem to a Frobenius
+* norm-based estimate of the separation between two matrix
+* pairs is computed. (look ahead strategy is used).
+* =2: A contribution from this subsystem to a Frobenius
+* norm-based estimate of the separation between two matrix
+* pairs is computed. (DGECON on sub-systems is used.)
+* Not referenced if TRANS = 'T'.
+*
+* M (input) INTEGER
+* On entry, M specifies the order of A and D, and the row
+* dimension of C, F, R and L.
+*
+* N (input) INTEGER
+* On entry, N specifies the order of B and E, and the column
+* dimension of C, F, R and L.
+*
+* A (input) COMPLEX*16 array, dimension (LDA, M)
+* On entry, A contains an upper triangular matrix.
+*
+* LDA (input) INTEGER
+* The leading dimension of the matrix A. LDA >= max(1, M).
+*
+* B (input) COMPLEX*16 array, dimension (LDB, N)
+* On entry, B contains an upper triangular matrix.
+*
+* LDB (input) INTEGER
+* The leading dimension of the matrix B. LDB >= max(1, N).
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC, N)
+* On entry, C contains the right-hand-side of the first matrix
+* equation in (1).
+* On exit, if IJOB = 0, C has been overwritten by the solution
+* R.
+*
+* LDC (input) INTEGER
+* The leading dimension of the matrix C. LDC >= max(1, M).
+*
+* D (input) COMPLEX*16 array, dimension (LDD, M)
+* On entry, D contains an upper triangular matrix.
+*
+* LDD (input) INTEGER
+* The leading dimension of the matrix D. LDD >= max(1, M).
+*
+* E (input) COMPLEX*16 array, dimension (LDE, N)
+* On entry, E contains an upper triangular matrix.
+*
+* LDE (input) INTEGER
+* The leading dimension of the matrix E. LDE >= max(1, N).
+*
+* F (input/output) COMPLEX*16 array, dimension (LDF, N)
+* On entry, F contains the right-hand-side of the second matrix
+* equation in (1).
+* On exit, if IJOB = 0, F has been overwritten by the solution
+* L.
+*
+* LDF (input) INTEGER
+* The leading dimension of the matrix F. LDF >= max(1, M).
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit, 0 <= SCALE <= 1. If 0 < SCALE < 1, the solutions
+* R and L (C and F on entry) will hold the solutions to a
+* slightly perturbed system but the input matrices A, B, D and
+* E have not been changed. If SCALE = 0, R and L will hold the
+* solutions to the homogeneous system with C = F = 0.
+* Normally, SCALE = 1.
+*
+* RDSUM (input/output) DOUBLE PRECISION
+* On entry, the sum of squares of computed contributions to
+* the Dif-estimate under computation by ZTGSYL, where the
+* scaling factor RDSCAL (see below) has been factored out.
+* On exit, the corresponding sum of squares updated with the
+* contributions from the current sub-system.
+* If TRANS = 'T' RDSUM is not touched.
+* NOTE: RDSUM only makes sense when ZTGSY2 is called by
+* ZTGSYL.
+*
+* RDSCAL (input/output) DOUBLE PRECISION
+* On entry, scaling factor used to prevent overflow in RDSUM.
+* On exit, RDSCAL is updated w.r.t. the current contributions
+* in RDSUM.
+* If TRANS = 'T', RDSCAL is not touched.
+* NOTE: RDSCAL only makes sense when ZTGSY2 is called by
+* ZTGSYL.
+*
+* INFO (output) INTEGER
+* On exit, if INFO is set to
+* =0: Successful exit
+* <0: If INFO = -i, input argument number i is illegal.
+* >0: The matrix pairs (A, D) and (B, E) have common or very
+* close eigenvalues.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ INTEGER LDZ
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, LDZ = 2 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRAN
+ INTEGER I, IERR, J, K
+ DOUBLE PRECISION SCALOC
+ COMPLEX*16 ALPHA
+* ..
+* .. Local Arrays ..
+ INTEGER IPIV( LDZ ), JPIV( LDZ )
+ COMPLEX*16 RHS( LDZ ), Z( LDZ, LDZ )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZAXPY, ZGESC2, ZGETC2, ZLATDF, ZSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCMPLX, DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode and test input parameters
+*
+ INFO = 0
+ IERR = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( NOTRAN ) THEN
+ IF( ( IJOB.LT.0 ) .OR. ( IJOB.GT.2 ) ) THEN
+ INFO = -2
+ END IF
+ END IF
+ IF( INFO.EQ.0 ) THEN
+ IF( M.LE.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LE.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LDD.LT.MAX( 1, M ) ) THEN
+ INFO = -12
+ ELSE IF( LDE.LT.MAX( 1, N ) ) THEN
+ INFO = -14
+ ELSE IF( LDF.LT.MAX( 1, M ) ) THEN
+ INFO = -16
+ END IF
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGSY2', -INFO )
+ RETURN
+ END IF
+*
+ IF( NOTRAN ) THEN
+*
+* Solve (I, J) - system
+* A(I, I) * R(I, J) - L(I, J) * B(J, J) = C(I, J)
+* D(I, I) * R(I, J) - L(I, J) * E(J, J) = F(I, J)
+* for I = M, M - 1, ..., 1; J = 1, 2, ..., N
+*
+ SCALE = ONE
+ SCALOC = ONE
+ DO 30 J = 1, N
+ DO 20 I = M, 1, -1
+*
+* Build 2 by 2 system
+*
+ Z( 1, 1 ) = A( I, I )
+ Z( 2, 1 ) = D( I, I )
+ Z( 1, 2 ) = -B( J, J )
+ Z( 2, 2 ) = -E( J, J )
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( I, J )
+ RHS( 2 ) = F( I, J )
+*
+* Solve Z * x = RHS
+*
+ CALL ZGETC2( LDZ, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+ IF( IJOB.EQ.0 ) THEN
+ CALL ZGESC2( LDZ, Z, LDZ, RHS, IPIV, JPIV, SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 10 K = 1, N
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ),
+ $ C( 1, K ), 1 )
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ),
+ $ F( 1, K ), 1 )
+ 10 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ ELSE
+ CALL ZLATDF( IJOB, LDZ, Z, LDZ, RHS, RDSUM, RDSCAL,
+ $ IPIV, JPIV )
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( I, J ) = RHS( 1 )
+ F( I, J ) = RHS( 2 )
+*
+* Substitute R(I, J) and L(I, J) into remaining equation.
+*
+ IF( I.GT.1 ) THEN
+ ALPHA = -RHS( 1 )
+ CALL ZAXPY( I-1, ALPHA, A( 1, I ), 1, C( 1, J ), 1 )
+ CALL ZAXPY( I-1, ALPHA, D( 1, I ), 1, F( 1, J ), 1 )
+ END IF
+ IF( J.LT.N ) THEN
+ CALL ZAXPY( N-J, RHS( 2 ), B( J, J+1 ), LDB,
+ $ C( I, J+1 ), LDC )
+ CALL ZAXPY( N-J, RHS( 2 ), E( J, J+1 ), LDE,
+ $ F( I, J+1 ), LDF )
+ END IF
+*
+ 20 CONTINUE
+ 30 CONTINUE
+ ELSE
+*
+* Solve transposed (I, J) - system:
+* A(I, I)' * R(I, J) + D(I, I)' * L(J, J) = C(I, J)
+* R(I, I) * B(J, J) + L(I, J) * E(J, J) = -F(I, J)
+* for I = 1, 2, ..., M, J = N, N - 1, ..., 1
+*
+ SCALE = ONE
+ SCALOC = ONE
+ DO 80 I = 1, M
+ DO 70 J = N, 1, -1
+*
+* Build 2 by 2 system Z'
+*
+ Z( 1, 1 ) = DCONJG( A( I, I ) )
+ Z( 2, 1 ) = -DCONJG( B( J, J ) )
+ Z( 1, 2 ) = DCONJG( D( I, I ) )
+ Z( 2, 2 ) = -DCONJG( E( J, J ) )
+*
+*
+* Set up right hand side(s)
+*
+ RHS( 1 ) = C( I, J )
+ RHS( 2 ) = F( I, J )
+*
+* Solve Z' * x = RHS
+*
+ CALL ZGETC2( LDZ, Z, LDZ, IPIV, JPIV, IERR )
+ IF( IERR.GT.0 )
+ $ INFO = IERR
+ CALL ZGESC2( LDZ, Z, LDZ, RHS, IPIV, JPIV, SCALOC )
+ IF( SCALOC.NE.ONE ) THEN
+ DO 40 K = 1, N
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ), C( 1, K ),
+ $ 1 )
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ), F( 1, K ),
+ $ 1 )
+ 40 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Unpack solution vector(s)
+*
+ C( I, J ) = RHS( 1 )
+ F( I, J ) = RHS( 2 )
+*
+* Substitute R(I, J) and L(I, J) into remaining equation.
+*
+ DO 50 K = 1, J - 1
+ F( I, K ) = F( I, K ) + RHS( 1 )*DCONJG( B( K, J ) ) +
+ $ RHS( 2 )*DCONJG( E( K, J ) )
+ 50 CONTINUE
+ DO 60 K = I + 1, M
+ C( K, J ) = C( K, J ) - DCONJG( A( I, K ) )*RHS( 1 ) -
+ $ DCONJG( D( I, K ) )*RHS( 2 )
+ 60 CONTINUE
+*
+ 70 CONTINUE
+ 80 CONTINUE
+ END IF
+ RETURN
+*
+* End of ZTGSY2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztgsyl.f b/2.3-1/src/fortran/lapack/ztgsyl.f
new file mode 100644
index 00000000..af808a31
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztgsyl.f
@@ -0,0 +1,575 @@
+ SUBROUTINE ZTGSYL( TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D,
+ $ LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK,
+ $ IWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANS
+ INTEGER IJOB, INFO, LDA, LDB, LDC, LDD, LDE, LDF,
+ $ LWORK, M, N
+ DOUBLE PRECISION DIF, SCALE
+* ..
+* .. Array Arguments ..
+ INTEGER IWORK( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * ),
+ $ D( LDD, * ), E( LDE, * ), F( LDF, * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTGSYL solves the generalized Sylvester equation:
+*
+* A * R - L * B = scale * C (1)
+* D * R - L * E = scale * F
+*
+* where R and L are unknown m-by-n matrices, (A, D), (B, E) and
+* (C, F) are given matrix pairs of size m-by-m, n-by-n and m-by-n,
+* respectively, with complex entries. A, B, D and E are upper
+* triangular (i.e., (A,D) and (B,E) in generalized Schur form).
+*
+* The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1
+* is an output scaling factor chosen to avoid overflow.
+*
+* In matrix notation (1) is equivalent to solve Zx = scale*b, where Z
+* is defined as
+*
+* Z = [ kron(In, A) -kron(B', Im) ] (2)
+* [ kron(In, D) -kron(E', Im) ],
+*
+* Here Ix is the identity matrix of size x and X' is the conjugate
+* transpose of X. Kron(X, Y) is the Kronecker product between the
+* matrices X and Y.
+*
+* If TRANS = 'C', y in the conjugate transposed system Z'*y = scale*b
+* is solved for, which is equivalent to solve for R and L in
+*
+* A' * R + D' * L = scale * C (3)
+* R * B' + L * E' = scale * -F
+*
+* This case (TRANS = 'C') is used to compute an one-norm-based estimate
+* of Dif[(A,D), (B,E)], the separation between the matrix pairs (A,D)
+* and (B,E), using ZLACON.
+*
+* If IJOB >= 1, ZTGSYL computes a Frobenius norm-based estimate of
+* Dif[(A,D),(B,E)]. That is, the reciprocal of a lower bound on the
+* reciprocal of the smallest singular value of Z.
+*
+* This is a level-3 BLAS algorithm.
+*
+* Arguments
+* =========
+*
+* TRANS (input) CHARACTER*1
+* = 'N': solve the generalized sylvester equation (1).
+* = 'C': solve the "conjugate transposed" system (3).
+*
+* IJOB (input) INTEGER
+* Specifies what kind of functionality to be performed.
+* =0: solve (1) only.
+* =1: The functionality of 0 and 3.
+* =2: The functionality of 0 and 4.
+* =3: Only an estimate of Dif[(A,D), (B,E)] is computed.
+* (look ahead strategy is used).
+* =4: Only an estimate of Dif[(A,D), (B,E)] is computed.
+* (ZGECON on sub-systems is used).
+* Not referenced if TRANS = 'C'.
+*
+* M (input) INTEGER
+* The order of the matrices A and D, and the row dimension of
+* the matrices C, F, R and L.
+*
+* N (input) INTEGER
+* The order of the matrices B and E, and the column dimension
+* of the matrices C, F, R and L.
+*
+* A (input) COMPLEX*16 array, dimension (LDA, M)
+* The upper triangular matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1, M).
+*
+* B (input) COMPLEX*16 array, dimension (LDB, N)
+* The upper triangular matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1, N).
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC, N)
+* On entry, C contains the right-hand-side of the first matrix
+* equation in (1) or (3).
+* On exit, if IJOB = 0, 1 or 2, C has been overwritten by
+* the solution R. If IJOB = 3 or 4 and TRANS = 'N', C holds R,
+* the solution achieved during the computation of the
+* Dif-estimate.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1, M).
+*
+* D (input) COMPLEX*16 array, dimension (LDD, M)
+* The upper triangular matrix D.
+*
+* LDD (input) INTEGER
+* The leading dimension of the array D. LDD >= max(1, M).
+*
+* E (input) COMPLEX*16 array, dimension (LDE, N)
+* The upper triangular matrix E.
+*
+* LDE (input) INTEGER
+* The leading dimension of the array E. LDE >= max(1, N).
+*
+* F (input/output) COMPLEX*16 array, dimension (LDF, N)
+* On entry, F contains the right-hand-side of the second matrix
+* equation in (1) or (3).
+* On exit, if IJOB = 0, 1 or 2, F has been overwritten by
+* the solution L. If IJOB = 3 or 4 and TRANS = 'N', F holds L,
+* the solution achieved during the computation of the
+* Dif-estimate.
+*
+* LDF (input) INTEGER
+* The leading dimension of the array F. LDF >= max(1, M).
+*
+* DIF (output) DOUBLE PRECISION
+* On exit DIF is the reciprocal of a lower bound of the
+* reciprocal of the Dif-function, i.e. DIF is an upper bound of
+* Dif[(A,D), (B,E)] = sigma-min(Z), where Z as in (2).
+* IF IJOB = 0 or TRANS = 'C', DIF is not referenced.
+*
+* SCALE (output) DOUBLE PRECISION
+* On exit SCALE is the scaling factor in (1) or (3).
+* If 0 < SCALE < 1, C and F hold the solutions R and L, resp.,
+* to a slightly perturbed system but the input matrices A, B,
+* D and E have not been changed. If SCALE = 0, R and L will
+* hold the solutions to the homogenious system with C = F = 0.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK > = 1.
+* If IJOB = 1 or 2 and TRANS = 'N', LWORK >= max(1,2*M*N).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* IWORK (workspace) INTEGER array, dimension (M+N+2)
+* If IJOB = 0, IWORK is not referenced.
+*
+* INFO (output) INTEGER
+* =0: successful exit
+* <0: If INFO = -i, the i-th argument had an illegal value.
+* >0: (A, D) and (B, E) have common or very close
+* eigenvalues.
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+* Umea University, S-901 87 Umea, Sweden.
+*
+* [1] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
+* for Solving the Generalized Sylvester Equation and Estimating the
+* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
+* Department of Computing Science, Umea University, S-901 87 Umea,
+* Sweden, December 1993, Revised April 1994, Also as LAPACK Working
+* Note 75. To appear in ACM Trans. on Math. Software, Vol 22,
+* No 1, 1996.
+*
+* [2] B. Kagstrom, A Perturbation Analysis of the Generalized Sylvester
+* Equation (AR - LB, DR - LE ) = (C, F), SIAM J. Matrix Anal.
+* Appl., 15(4):1045-1060, 1994.
+*
+* [3] B. Kagstrom and L. Westin, Generalized Schur Methods with
+* Condition Estimators for Solving the Generalized Sylvester
+* Equation, IEEE Transactions on Automatic Control, Vol. 34, No. 7,
+* July 1989, pp 745-751.
+*
+* =====================================================================
+* Replaced various illegal calls to CCOPY by calls to CLASET.
+* Sven Hammarling, 1/5/02.
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ COMPLEX*16 CZERO
+ PARAMETER ( CZERO = (0.0D+0, 0.0D+0) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, NOTRAN
+ INTEGER I, IE, IFUNC, IROUND, IS, ISOLVE, J, JE, JS, K,
+ $ LINFO, LWMIN, MB, NB, P, PQ, Q
+ DOUBLE PRECISION DSCALE, DSUM, SCALE2, SCALOC
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZGEMM, ZLACPY, ZLASET, ZSCAL, ZTGSY2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCMPLX, MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode and test input parameters
+*
+ INFO = 0
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( NOTRAN ) THEN
+ IF( ( IJOB.LT.0 ) .OR. ( IJOB.GT.4 ) ) THEN
+ INFO = -2
+ END IF
+ END IF
+ IF( INFO.EQ.0 ) THEN
+ IF( M.LE.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LE.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LDD.LT.MAX( 1, M ) ) THEN
+ INFO = -12
+ ELSE IF( LDE.LT.MAX( 1, N ) ) THEN
+ INFO = -14
+ ELSE IF( LDF.LT.MAX( 1, M ) ) THEN
+ INFO = -16
+ END IF
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( NOTRAN ) THEN
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.2 ) THEN
+ LWMIN = MAX( 1, 2*M*N )
+ ELSE
+ LWMIN = 1
+ END IF
+ ELSE
+ LWMIN = 1
+ END IF
+ WORK( 1 ) = LWMIN
+*
+ IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -20
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTGSYL', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ SCALE = 1
+ IF( NOTRAN ) THEN
+ IF( IJOB.NE.0 ) THEN
+ DIF = 0
+ END IF
+ END IF
+ RETURN
+ END IF
+*
+* Determine optimal block sizes MB and NB
+*
+ MB = ILAENV( 2, 'ZTGSYL', TRANS, M, N, -1, -1 )
+ NB = ILAENV( 5, 'ZTGSYL', TRANS, M, N, -1, -1 )
+*
+ ISOLVE = 1
+ IFUNC = 0
+ IF( NOTRAN ) THEN
+ IF( IJOB.GE.3 ) THEN
+ IFUNC = IJOB - 2
+ CALL ZLASET( 'F', M, N, CZERO, CZERO, C, LDC )
+ CALL ZLASET( 'F', M, N, CZERO, CZERO, F, LDF )
+ ELSE IF( IJOB.GE.1 .AND. NOTRAN ) THEN
+ ISOLVE = 2
+ END IF
+ END IF
+*
+ IF( ( MB.LE.1 .AND. NB.LE.1 ) .OR. ( MB.GE.M .AND. NB.GE.N ) )
+ $ THEN
+*
+* Use unblocked Level 2 solver
+*
+ DO 30 IROUND = 1, ISOLVE
+*
+ SCALE = ONE
+ DSCALE = ZERO
+ DSUM = ONE
+ PQ = M*N
+ CALL ZTGSY2( TRANS, IFUNC, M, N, A, LDA, B, LDB, C, LDC, D,
+ $ LDD, E, LDE, F, LDF, SCALE, DSUM, DSCALE,
+ $ INFO )
+ IF( DSCALE.NE.ZERO ) THEN
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.3 ) THEN
+ DIF = SQRT( DBLE( 2*M*N ) ) / ( DSCALE*SQRT( DSUM ) )
+ ELSE
+ DIF = SQRT( DBLE( PQ ) ) / ( DSCALE*SQRT( DSUM ) )
+ END IF
+ END IF
+ IF( ISOLVE.EQ.2 .AND. IROUND.EQ.1 ) THEN
+ IF( NOTRAN ) THEN
+ IFUNC = IJOB
+ END IF
+ SCALE2 = SCALE
+ CALL ZLACPY( 'F', M, N, C, LDC, WORK, M )
+ CALL ZLACPY( 'F', M, N, F, LDF, WORK( M*N+1 ), M )
+ CALL ZLASET( 'F', M, N, CZERO, CZERO, C, LDC )
+ CALL ZLASET( 'F', M, N, CZERO, CZERO, F, LDF )
+ ELSE IF( ISOLVE.EQ.2 .AND. IROUND.EQ.2 ) THEN
+ CALL ZLACPY( 'F', M, N, WORK, M, C, LDC )
+ CALL ZLACPY( 'F', M, N, WORK( M*N+1 ), M, F, LDF )
+ SCALE = SCALE2
+ END IF
+ 30 CONTINUE
+*
+ RETURN
+*
+ END IF
+*
+* Determine block structure of A
+*
+ P = 0
+ I = 1
+ 40 CONTINUE
+ IF( I.GT.M )
+ $ GO TO 50
+ P = P + 1
+ IWORK( P ) = I
+ I = I + MB
+ IF( I.GE.M )
+ $ GO TO 50
+ GO TO 40
+ 50 CONTINUE
+ IWORK( P+1 ) = M + 1
+ IF( IWORK( P ).EQ.IWORK( P+1 ) )
+ $ P = P - 1
+*
+* Determine block structure of B
+*
+ Q = P + 1
+ J = 1
+ 60 CONTINUE
+ IF( J.GT.N )
+ $ GO TO 70
+*
+ Q = Q + 1
+ IWORK( Q ) = J
+ J = J + NB
+ IF( J.GE.N )
+ $ GO TO 70
+ GO TO 60
+*
+ 70 CONTINUE
+ IWORK( Q+1 ) = N + 1
+ IF( IWORK( Q ).EQ.IWORK( Q+1 ) )
+ $ Q = Q - 1
+*
+ IF( NOTRAN ) THEN
+ DO 150 IROUND = 1, ISOLVE
+*
+* Solve (I, J) - subsystem
+* A(I, I) * R(I, J) - L(I, J) * B(J, J) = C(I, J)
+* D(I, I) * R(I, J) - L(I, J) * E(J, J) = F(I, J)
+* for I = P, P - 1, ..., 1; J = 1, 2, ..., Q
+*
+ PQ = 0
+ SCALE = ONE
+ DSCALE = ZERO
+ DSUM = ONE
+ DO 130 J = P + 2, Q
+ JS = IWORK( J )
+ JE = IWORK( J+1 ) - 1
+ NB = JE - JS + 1
+ DO 120 I = P, 1, -1
+ IS = IWORK( I )
+ IE = IWORK( I+1 ) - 1
+ MB = IE - IS + 1
+ CALL ZTGSY2( TRANS, IFUNC, MB, NB, A( IS, IS ), LDA,
+ $ B( JS, JS ), LDB, C( IS, JS ), LDC,
+ $ D( IS, IS ), LDD, E( JS, JS ), LDE,
+ $ F( IS, JS ), LDF, SCALOC, DSUM, DSCALE,
+ $ LINFO )
+ IF( LINFO.GT.0 )
+ $ INFO = LINFO
+ PQ = PQ + MB*NB
+ IF( SCALOC.NE.ONE ) THEN
+ DO 80 K = 1, JS - 1
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ),
+ $ C( 1, K ), 1 )
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ),
+ $ F( 1, K ), 1 )
+ 80 CONTINUE
+ DO 90 K = JS, JE
+ CALL ZSCAL( IS-1, DCMPLX( SCALOC, ZERO ),
+ $ C( 1, K ), 1 )
+ CALL ZSCAL( IS-1, DCMPLX( SCALOC, ZERO ),
+ $ F( 1, K ), 1 )
+ 90 CONTINUE
+ DO 100 K = JS, JE
+ CALL ZSCAL( M-IE, DCMPLX( SCALOC, ZERO ),
+ $ C( IE+1, K ), 1 )
+ CALL ZSCAL( M-IE, DCMPLX( SCALOC, ZERO ),
+ $ F( IE+1, K ), 1 )
+ 100 CONTINUE
+ DO 110 K = JE + 1, N
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ),
+ $ C( 1, K ), 1 )
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ),
+ $ F( 1, K ), 1 )
+ 110 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Substitute R(I,J) and L(I,J) into remaining equation.
+*
+ IF( I.GT.1 ) THEN
+ CALL ZGEMM( 'N', 'N', IS-1, NB, MB,
+ $ DCMPLX( -ONE, ZERO ), A( 1, IS ), LDA,
+ $ C( IS, JS ), LDC, DCMPLX( ONE, ZERO ),
+ $ C( 1, JS ), LDC )
+ CALL ZGEMM( 'N', 'N', IS-1, NB, MB,
+ $ DCMPLX( -ONE, ZERO ), D( 1, IS ), LDD,
+ $ C( IS, JS ), LDC, DCMPLX( ONE, ZERO ),
+ $ F( 1, JS ), LDF )
+ END IF
+ IF( J.LT.Q ) THEN
+ CALL ZGEMM( 'N', 'N', MB, N-JE, NB,
+ $ DCMPLX( ONE, ZERO ), F( IS, JS ), LDF,
+ $ B( JS, JE+1 ), LDB,
+ $ DCMPLX( ONE, ZERO ), C( IS, JE+1 ),
+ $ LDC )
+ CALL ZGEMM( 'N', 'N', MB, N-JE, NB,
+ $ DCMPLX( ONE, ZERO ), F( IS, JS ), LDF,
+ $ E( JS, JE+1 ), LDE,
+ $ DCMPLX( ONE, ZERO ), F( IS, JE+1 ),
+ $ LDF )
+ END IF
+ 120 CONTINUE
+ 130 CONTINUE
+ IF( DSCALE.NE.ZERO ) THEN
+ IF( IJOB.EQ.1 .OR. IJOB.EQ.3 ) THEN
+ DIF = SQRT( DBLE( 2*M*N ) ) / ( DSCALE*SQRT( DSUM ) )
+ ELSE
+ DIF = SQRT( DBLE( PQ ) ) / ( DSCALE*SQRT( DSUM ) )
+ END IF
+ END IF
+ IF( ISOLVE.EQ.2 .AND. IROUND.EQ.1 ) THEN
+ IF( NOTRAN ) THEN
+ IFUNC = IJOB
+ END IF
+ SCALE2 = SCALE
+ CALL ZLACPY( 'F', M, N, C, LDC, WORK, M )
+ CALL ZLACPY( 'F', M, N, F, LDF, WORK( M*N+1 ), M )
+ CALL ZLASET( 'F', M, N, CZERO, CZERO, C, LDC )
+ CALL ZLASET( 'F', M, N, CZERO, CZERO, F, LDF )
+ ELSE IF( ISOLVE.EQ.2 .AND. IROUND.EQ.2 ) THEN
+ CALL ZLACPY( 'F', M, N, WORK, M, C, LDC )
+ CALL ZLACPY( 'F', M, N, WORK( M*N+1 ), M, F, LDF )
+ SCALE = SCALE2
+ END IF
+ 150 CONTINUE
+ ELSE
+*
+* Solve transposed (I, J)-subsystem
+* A(I, I)' * R(I, J) + D(I, I)' * L(I, J) = C(I, J)
+* R(I, J) * B(J, J) + L(I, J) * E(J, J) = -F(I, J)
+* for I = 1,2,..., P; J = Q, Q-1,..., 1
+*
+ SCALE = ONE
+ DO 210 I = 1, P
+ IS = IWORK( I )
+ IE = IWORK( I+1 ) - 1
+ MB = IE - IS + 1
+ DO 200 J = Q, P + 2, -1
+ JS = IWORK( J )
+ JE = IWORK( J+1 ) - 1
+ NB = JE - JS + 1
+ CALL ZTGSY2( TRANS, IFUNC, MB, NB, A( IS, IS ), LDA,
+ $ B( JS, JS ), LDB, C( IS, JS ), LDC,
+ $ D( IS, IS ), LDD, E( JS, JS ), LDE,
+ $ F( IS, JS ), LDF, SCALOC, DSUM, DSCALE,
+ $ LINFO )
+ IF( LINFO.GT.0 )
+ $ INFO = LINFO
+ IF( SCALOC.NE.ONE ) THEN
+ DO 160 K = 1, JS - 1
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ), C( 1, K ),
+ $ 1 )
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ), F( 1, K ),
+ $ 1 )
+ 160 CONTINUE
+ DO 170 K = JS, JE
+ CALL ZSCAL( IS-1, DCMPLX( SCALOC, ZERO ),
+ $ C( 1, K ), 1 )
+ CALL ZSCAL( IS-1, DCMPLX( SCALOC, ZERO ),
+ $ F( 1, K ), 1 )
+ 170 CONTINUE
+ DO 180 K = JS, JE
+ CALL ZSCAL( M-IE, DCMPLX( SCALOC, ZERO ),
+ $ C( IE+1, K ), 1 )
+ CALL ZSCAL( M-IE, DCMPLX( SCALOC, ZERO ),
+ $ F( IE+1, K ), 1 )
+ 180 CONTINUE
+ DO 190 K = JE + 1, N
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ), C( 1, K ),
+ $ 1 )
+ CALL ZSCAL( M, DCMPLX( SCALOC, ZERO ), F( 1, K ),
+ $ 1 )
+ 190 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+*
+* Substitute R(I,J) and L(I,J) into remaining equation.
+*
+ IF( J.GT.P+2 ) THEN
+ CALL ZGEMM( 'N', 'C', MB, JS-1, NB,
+ $ DCMPLX( ONE, ZERO ), C( IS, JS ), LDC,
+ $ B( 1, JS ), LDB, DCMPLX( ONE, ZERO ),
+ $ F( IS, 1 ), LDF )
+ CALL ZGEMM( 'N', 'C', MB, JS-1, NB,
+ $ DCMPLX( ONE, ZERO ), F( IS, JS ), LDF,
+ $ E( 1, JS ), LDE, DCMPLX( ONE, ZERO ),
+ $ F( IS, 1 ), LDF )
+ END IF
+ IF( I.LT.P ) THEN
+ CALL ZGEMM( 'C', 'N', M-IE, NB, MB,
+ $ DCMPLX( -ONE, ZERO ), A( IS, IE+1 ), LDA,
+ $ C( IS, JS ), LDC, DCMPLX( ONE, ZERO ),
+ $ C( IE+1, JS ), LDC )
+ CALL ZGEMM( 'C', 'N', M-IE, NB, MB,
+ $ DCMPLX( -ONE, ZERO ), D( IS, IE+1 ), LDD,
+ $ F( IS, JS ), LDF, DCMPLX( ONE, ZERO ),
+ $ C( IE+1, JS ), LDC )
+ END IF
+ 200 CONTINUE
+ 210 CONTINUE
+ END IF
+*
+ WORK( 1 ) = LWMIN
+*
+ RETURN
+*
+* End of ZTGSYL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztrevc.f b/2.3-1/src/fortran/lapack/ztrevc.f
new file mode 100644
index 00000000..21142f42
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztrevc.f
@@ -0,0 +1,386 @@
+ SUBROUTINE ZTREVC( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR,
+ $ LDVR, MM, M, WORK, RWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER HOWMNY, SIDE
+ INTEGER INFO, LDT, LDVL, LDVR, M, MM, N
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ),
+ $ WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTREVC computes some or all of the right and/or left eigenvectors of
+* a complex upper triangular matrix T.
+* Matrices of this type are produced by the Schur factorization of
+* a complex general matrix: A = Q*T*Q**H, as computed by ZHSEQR.
+*
+* The right eigenvector x and the left eigenvector y of T corresponding
+* to an eigenvalue w are defined by:
+*
+* T*x = w*x, (y**H)*T = w*(y**H)
+*
+* where y**H denotes the conjugate transpose of the vector y.
+* The eigenvalues are not input to this routine, but are read directly
+* from the diagonal of T.
+*
+* This routine returns the matrices X and/or Y of right and left
+* eigenvectors of T, or the products Q*X and/or Q*Y, where Q is an
+* input matrix. If Q is the unitary factor that reduces a matrix A to
+* Schur form T, then Q*X and Q*Y are the matrices of right and left
+* eigenvectors of A.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'R': compute right eigenvectors only;
+* = 'L': compute left eigenvectors only;
+* = 'B': compute both right and left eigenvectors.
+*
+* HOWMNY (input) CHARACTER*1
+* = 'A': compute all right and/or left eigenvectors;
+* = 'B': compute all right and/or left eigenvectors,
+* backtransformed using the matrices supplied in
+* VR and/or VL;
+* = 'S': compute selected right and/or left eigenvectors,
+* as indicated by the logical array SELECT.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* If HOWMNY = 'S', SELECT specifies the eigenvectors to be
+* computed.
+* The eigenvector corresponding to the j-th eigenvalue is
+* computed if SELECT(j) = .TRUE..
+* Not referenced if HOWMNY = 'A' or 'B'.
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input/output) COMPLEX*16 array, dimension (LDT,N)
+* The upper triangular matrix T. T is modified, but restored
+* on exit.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* VL (input/output) COMPLEX*16 array, dimension (LDVL,MM)
+* On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must
+* contain an N-by-N matrix Q (usually the unitary matrix Q of
+* Schur vectors returned by ZHSEQR).
+* On exit, if SIDE = 'L' or 'B', VL contains:
+* if HOWMNY = 'A', the matrix Y of left eigenvectors of T;
+* if HOWMNY = 'B', the matrix Q*Y;
+* if HOWMNY = 'S', the left eigenvectors of T specified by
+* SELECT, stored consecutively in the columns
+* of VL, in the same order as their
+* eigenvalues.
+* Not referenced if SIDE = 'R'.
+*
+* LDVL (input) INTEGER
+* The leading dimension of the array VL. LDVL >= 1, and if
+* SIDE = 'L' or 'B', LDVL >= N.
+*
+* VR (input/output) COMPLEX*16 array, dimension (LDVR,MM)
+* On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must
+* contain an N-by-N matrix Q (usually the unitary matrix Q of
+* Schur vectors returned by ZHSEQR).
+* On exit, if SIDE = 'R' or 'B', VR contains:
+* if HOWMNY = 'A', the matrix X of right eigenvectors of T;
+* if HOWMNY = 'B', the matrix Q*X;
+* if HOWMNY = 'S', the right eigenvectors of T specified by
+* SELECT, stored consecutively in the columns
+* of VR, in the same order as their
+* eigenvalues.
+* Not referenced if SIDE = 'L'.
+*
+* LDVR (input) INTEGER
+* The leading dimension of the array VR. LDVR >= 1, and if
+* SIDE = 'R' or 'B'; LDVR >= N.
+*
+* MM (input) INTEGER
+* The number of columns in the arrays VL and/or VR. MM >= M.
+*
+* M (output) INTEGER
+* The number of columns in the arrays VL and/or VR actually
+* used to store the eigenvectors. If HOWMNY = 'A' or 'B', M
+* is set to N. Each selected eigenvector occupies one
+* column.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (2*N)
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* The algorithm used in this program is basically backward (forward)
+* substitution, with scaling to make the the code robust against
+* possible overflow.
+*
+* Each eigenvector is normalized so that the element of largest
+* magnitude has magnitude 1; here the magnitude of a complex number
+* (x,y) is taken to be |x| + |y|.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ COMPLEX*16 CMZERO, CMONE
+ PARAMETER ( CMZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CMONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL ALLV, BOTHV, LEFTV, OVER, RIGHTV, SOMEV
+ INTEGER I, II, IS, J, K, KI
+ DOUBLE PRECISION OVFL, REMAX, SCALE, SMIN, SMLNUM, ULP, UNFL
+ COMPLEX*16 CDUM
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER IZAMAX
+ DOUBLE PRECISION DLAMCH, DZASUM
+ EXTERNAL LSAME, IZAMAX, DLAMCH, DZASUM
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZCOPY, ZDSCAL, ZGEMV, ZLATRS
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX
+* ..
+* .. Statement Functions ..
+ DOUBLE PRECISION CABS1
+* ..
+* .. Statement Function definitions ..
+ CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters
+*
+ BOTHV = LSAME( SIDE, 'B' )
+ RIGHTV = LSAME( SIDE, 'R' ) .OR. BOTHV
+ LEFTV = LSAME( SIDE, 'L' ) .OR. BOTHV
+*
+ ALLV = LSAME( HOWMNY, 'A' )
+ OVER = LSAME( HOWMNY, 'B' )
+ SOMEV = LSAME( HOWMNY, 'S' )
+*
+* Set M to the number of columns required to store the selected
+* eigenvectors.
+*
+ IF( SOMEV ) THEN
+ M = 0
+ DO 10 J = 1, N
+ IF( SELECT( J ) )
+ $ M = M + 1
+ 10 CONTINUE
+ ELSE
+ M = N
+ END IF
+*
+ INFO = 0
+ IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
+ INFO = -1
+ ELSE IF( .NOT.ALLV .AND. .NOT.OVER .AND. .NOT.SOMEV ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDVL.LT.1 .OR. ( LEFTV .AND. LDVL.LT.N ) ) THEN
+ INFO = -8
+ ELSE IF( LDVR.LT.1 .OR. ( RIGHTV .AND. LDVR.LT.N ) ) THEN
+ INFO = -10
+ ELSE IF( MM.LT.M ) THEN
+ INFO = -11
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTREVC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible.
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Set the constants to control overflow.
+*
+ UNFL = DLAMCH( 'Safe minimum' )
+ OVFL = ONE / UNFL
+ CALL DLABAD( UNFL, OVFL )
+ ULP = DLAMCH( 'Precision' )
+ SMLNUM = UNFL*( N / ULP )
+*
+* Store the diagonal elements of T in working array WORK.
+*
+ DO 20 I = 1, N
+ WORK( I+N ) = T( I, I )
+ 20 CONTINUE
+*
+* Compute 1-norm of each column of strictly upper triangular
+* part of T to control overflow in triangular solver.
+*
+ RWORK( 1 ) = ZERO
+ DO 30 J = 2, N
+ RWORK( J ) = DZASUM( J-1, T( 1, J ), 1 )
+ 30 CONTINUE
+*
+ IF( RIGHTV ) THEN
+*
+* Compute right eigenvectors.
+*
+ IS = M
+ DO 80 KI = N, 1, -1
+*
+ IF( SOMEV ) THEN
+ IF( .NOT.SELECT( KI ) )
+ $ GO TO 80
+ END IF
+ SMIN = MAX( ULP*( CABS1( T( KI, KI ) ) ), SMLNUM )
+*
+ WORK( 1 ) = CMONE
+*
+* Form right-hand side.
+*
+ DO 40 K = 1, KI - 1
+ WORK( K ) = -T( K, KI )
+ 40 CONTINUE
+*
+* Solve the triangular system:
+* (T(1:KI-1,1:KI-1) - T(KI,KI))*X = SCALE*WORK.
+*
+ DO 50 K = 1, KI - 1
+ T( K, K ) = T( K, K ) - T( KI, KI )
+ IF( CABS1( T( K, K ) ).LT.SMIN )
+ $ T( K, K ) = SMIN
+ 50 CONTINUE
+*
+ IF( KI.GT.1 ) THEN
+ CALL ZLATRS( 'Upper', 'No transpose', 'Non-unit', 'Y',
+ $ KI-1, T, LDT, WORK( 1 ), SCALE, RWORK,
+ $ INFO )
+ WORK( KI ) = SCALE
+ END IF
+*
+* Copy the vector x or Q*x to VR and normalize.
+*
+ IF( .NOT.OVER ) THEN
+ CALL ZCOPY( KI, WORK( 1 ), 1, VR( 1, IS ), 1 )
+*
+ II = IZAMAX( KI, VR( 1, IS ), 1 )
+ REMAX = ONE / CABS1( VR( II, IS ) )
+ CALL ZDSCAL( KI, REMAX, VR( 1, IS ), 1 )
+*
+ DO 60 K = KI + 1, N
+ VR( K, IS ) = CMZERO
+ 60 CONTINUE
+ ELSE
+ IF( KI.GT.1 )
+ $ CALL ZGEMV( 'N', N, KI-1, CMONE, VR, LDVR, WORK( 1 ),
+ $ 1, DCMPLX( SCALE ), VR( 1, KI ), 1 )
+*
+ II = IZAMAX( N, VR( 1, KI ), 1 )
+ REMAX = ONE / CABS1( VR( II, KI ) )
+ CALL ZDSCAL( N, REMAX, VR( 1, KI ), 1 )
+ END IF
+*
+* Set back the original diagonal elements of T.
+*
+ DO 70 K = 1, KI - 1
+ T( K, K ) = WORK( K+N )
+ 70 CONTINUE
+*
+ IS = IS - 1
+ 80 CONTINUE
+ END IF
+*
+ IF( LEFTV ) THEN
+*
+* Compute left eigenvectors.
+*
+ IS = 1
+ DO 130 KI = 1, N
+*
+ IF( SOMEV ) THEN
+ IF( .NOT.SELECT( KI ) )
+ $ GO TO 130
+ END IF
+ SMIN = MAX( ULP*( CABS1( T( KI, KI ) ) ), SMLNUM )
+*
+ WORK( N ) = CMONE
+*
+* Form right-hand side.
+*
+ DO 90 K = KI + 1, N
+ WORK( K ) = -DCONJG( T( KI, K ) )
+ 90 CONTINUE
+*
+* Solve the triangular system:
+* (T(KI+1:N,KI+1:N) - T(KI,KI))'*X = SCALE*WORK.
+*
+ DO 100 K = KI + 1, N
+ T( K, K ) = T( K, K ) - T( KI, KI )
+ IF( CABS1( T( K, K ) ).LT.SMIN )
+ $ T( K, K ) = SMIN
+ 100 CONTINUE
+*
+ IF( KI.LT.N ) THEN
+ CALL ZLATRS( 'Upper', 'Conjugate transpose', 'Non-unit',
+ $ 'Y', N-KI, T( KI+1, KI+1 ), LDT,
+ $ WORK( KI+1 ), SCALE, RWORK, INFO )
+ WORK( KI ) = SCALE
+ END IF
+*
+* Copy the vector x or Q*x to VL and normalize.
+*
+ IF( .NOT.OVER ) THEN
+ CALL ZCOPY( N-KI+1, WORK( KI ), 1, VL( KI, IS ), 1 )
+*
+ II = IZAMAX( N-KI+1, VL( KI, IS ), 1 ) + KI - 1
+ REMAX = ONE / CABS1( VL( II, IS ) )
+ CALL ZDSCAL( N-KI+1, REMAX, VL( KI, IS ), 1 )
+*
+ DO 110 K = 1, KI - 1
+ VL( K, IS ) = CMZERO
+ 110 CONTINUE
+ ELSE
+ IF( KI.LT.N )
+ $ CALL ZGEMV( 'N', N, N-KI, CMONE, VL( 1, KI+1 ), LDVL,
+ $ WORK( KI+1 ), 1, DCMPLX( SCALE ),
+ $ VL( 1, KI ), 1 )
+*
+ II = IZAMAX( N, VL( 1, KI ), 1 )
+ REMAX = ONE / CABS1( VL( II, KI ) )
+ CALL ZDSCAL( N, REMAX, VL( 1, KI ), 1 )
+ END IF
+*
+* Set back the original diagonal elements of T.
+*
+ DO 120 K = KI + 1, N
+ T( K, K ) = WORK( K+N )
+ 120 CONTINUE
+*
+ IS = IS + 1
+ 130 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZTREVC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztrexc.f b/2.3-1/src/fortran/lapack/ztrexc.f
new file mode 100644
index 00000000..69313696
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztrexc.f
@@ -0,0 +1,162 @@
+ SUBROUTINE ZTREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ
+ INTEGER IFST, ILST, INFO, LDQ, LDT, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 Q( LDQ, * ), T( LDT, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTREXC reorders the Schur factorization of a complex matrix
+* A = Q*T*Q**H, so that the diagonal element of T with row index IFST
+* is moved to row ILST.
+*
+* The Schur form T is reordered by a unitary similarity transformation
+* Z**H*T*Z, and optionally the matrix Q of Schur vectors is updated by
+* postmultplying it with Z.
+*
+* Arguments
+* =========
+*
+* COMPQ (input) CHARACTER*1
+* = 'V': update the matrix Q of Schur vectors;
+* = 'N': do not update Q.
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input/output) COMPLEX*16 array, dimension (LDT,N)
+* On entry, the upper triangular matrix T.
+* On exit, the reordered upper triangular matrix.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDQ,N)
+* On entry, if COMPQ = 'V', the matrix Q of Schur vectors.
+* On exit, if COMPQ = 'V', Q has been postmultiplied by the
+* unitary transformation matrix Z which reorders T.
+* If COMPQ = 'N', Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q. LDQ >= max(1,N).
+*
+* IFST (input) INTEGER
+* ILST (input) INTEGER
+* Specify the reordering of the diagonal elements of T:
+* The element with row index IFST is moved to row ILST by a
+* sequence of transpositions between adjacent elements.
+* 1 <= IFST <= N; 1 <= ILST <= N.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL WANTQ
+ INTEGER K, M1, M2, M3
+ DOUBLE PRECISION CS
+ COMPLEX*16 SN, T11, T22, TEMP
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARTG, ZROT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters.
+*
+ INFO = 0
+ WANTQ = LSAME( COMPQ, 'V' )
+ IF( .NOT.LSAME( COMPQ, 'N' ) .AND. .NOT.WANTQ ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.MAX( 1, N ) ) ) THEN
+ INFO = -6
+ ELSE IF( IFST.LT.1 .OR. IFST.GT.N ) THEN
+ INFO = -7
+ ELSE IF( ILST.LT.1 .OR. ILST.GT.N ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTREXC', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.1 .OR. IFST.EQ.ILST )
+ $ RETURN
+*
+ IF( IFST.LT.ILST ) THEN
+*
+* Move the IFST-th diagonal element forward down the diagonal.
+*
+ M1 = 0
+ M2 = -1
+ M3 = 1
+ ELSE
+*
+* Move the IFST-th diagonal element backward up the diagonal.
+*
+ M1 = -1
+ M2 = 0
+ M3 = -1
+ END IF
+*
+ DO 10 K = IFST + M1, ILST + M2, M3
+*
+* Interchange the k-th and (k+1)-th diagonal elements.
+*
+ T11 = T( K, K )
+ T22 = T( K+1, K+1 )
+*
+* Determine the transformation to perform the interchange.
+*
+ CALL ZLARTG( T( K, K+1 ), T22-T11, CS, SN, TEMP )
+*
+* Apply transformation to the matrix T.
+*
+ IF( K+2.LE.N )
+ $ CALL ZROT( N-K-1, T( K, K+2 ), LDT, T( K+1, K+2 ), LDT, CS,
+ $ SN )
+ CALL ZROT( K-1, T( 1, K ), 1, T( 1, K+1 ), 1, CS,
+ $ DCONJG( SN ) )
+*
+ T( K, K ) = T22
+ T( K+1, K+1 ) = T11
+*
+ IF( WANTQ ) THEN
+*
+* Accumulate transformation in the matrix Q.
+*
+ CALL ZROT( N, Q( 1, K ), 1, Q( 1, K+1 ), 1, CS,
+ $ DCONJG( SN ) )
+ END IF
+*
+ 10 CONTINUE
+*
+ RETURN
+*
+* End of ZTREXC
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztrsen.f b/2.3-1/src/fortran/lapack/ztrsen.f
new file mode 100644
index 00000000..a07a22f6
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztrsen.f
@@ -0,0 +1,359 @@
+ SUBROUTINE ZTRSEN( JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, W, M, S,
+ $ SEP, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* Modified to call ZLACN2 in place of ZLACON, 10 Feb 03, SJH.
+*
+* .. Scalar Arguments ..
+ CHARACTER COMPQ, JOB
+ INTEGER INFO, LDQ, LDT, LWORK, M, N
+ DOUBLE PRECISION S, SEP
+* ..
+* .. Array Arguments ..
+ LOGICAL SELECT( * )
+ COMPLEX*16 Q( LDQ, * ), T( LDT, * ), W( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRSEN reorders the Schur factorization of a complex matrix
+* A = Q*T*Q**H, so that a selected cluster of eigenvalues appears in
+* the leading positions on the diagonal of the upper triangular matrix
+* T, and the leading columns of Q form an orthonormal basis of the
+* corresponding right invariant subspace.
+*
+* Optionally the routine computes the reciprocal condition numbers of
+* the cluster of eigenvalues and/or the invariant subspace.
+*
+* Arguments
+* =========
+*
+* JOB (input) CHARACTER*1
+* Specifies whether condition numbers are required for the
+* cluster of eigenvalues (S) or the invariant subspace (SEP):
+* = 'N': none;
+* = 'E': for eigenvalues only (S);
+* = 'V': for invariant subspace only (SEP);
+* = 'B': for both eigenvalues and invariant subspace (S and
+* SEP).
+*
+* COMPQ (input) CHARACTER*1
+* = 'V': update the matrix Q of Schur vectors;
+* = 'N': do not update Q.
+*
+* SELECT (input) LOGICAL array, dimension (N)
+* SELECT specifies the eigenvalues in the selected cluster. To
+* select the j-th eigenvalue, SELECT(j) must be set to .TRUE..
+*
+* N (input) INTEGER
+* The order of the matrix T. N >= 0.
+*
+* T (input/output) COMPLEX*16 array, dimension (LDT,N)
+* On entry, the upper triangular matrix T.
+* On exit, T is overwritten by the reordered matrix T, with the
+* selected eigenvalues as the leading diagonal elements.
+*
+* LDT (input) INTEGER
+* The leading dimension of the array T. LDT >= max(1,N).
+*
+* Q (input/output) COMPLEX*16 array, dimension (LDQ,N)
+* On entry, if COMPQ = 'V', the matrix Q of Schur vectors.
+* On exit, if COMPQ = 'V', Q has been postmultiplied by the
+* unitary transformation matrix which reorders T; the leading M
+* columns of Q form an orthonormal basis for the specified
+* invariant subspace.
+* If COMPQ = 'N', Q is not referenced.
+*
+* LDQ (input) INTEGER
+* The leading dimension of the array Q.
+* LDQ >= 1; and if COMPQ = 'V', LDQ >= N.
+*
+* W (output) COMPLEX*16 array, dimension (N)
+* The reordered eigenvalues of T, in the same order as they
+* appear on the diagonal of T.
+*
+* M (output) INTEGER
+* The dimension of the specified invariant subspace.
+* 0 <= M <= N.
+*
+* S (output) DOUBLE PRECISION
+* If JOB = 'E' or 'B', S is a lower bound on the reciprocal
+* condition number for the selected cluster of eigenvalues.
+* S cannot underestimate the true reciprocal condition number
+* by more than a factor of sqrt(N). If M = 0 or N, S = 1.
+* If JOB = 'N' or 'V', S is not referenced.
+*
+* SEP (output) DOUBLE PRECISION
+* If JOB = 'V' or 'B', SEP is the estimated reciprocal
+* condition number of the specified invariant subspace. If
+* M = 0 or N, SEP = norm(T).
+* If JOB = 'N' or 'E', SEP is not referenced.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If JOB = 'N', LWORK >= 1;
+* if JOB = 'E', LWORK = max(1,M*(N-M));
+* if JOB = 'V' or 'B', LWORK >= max(1,2*M*(N-M)).
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* ZTRSEN first collects the selected eigenvalues by computing a unitary
+* transformation Z to move them to the top left corner of T. In other
+* words, the selected eigenvalues are the eigenvalues of T11 in:
+*
+* Z'*T*Z = ( T11 T12 ) n1
+* ( 0 T22 ) n2
+* n1 n2
+*
+* where N = n1+n2 and Z' means the conjugate transpose of Z. The first
+* n1 columns of Z span the specified invariant subspace of T.
+*
+* If T has been obtained from the Schur factorization of a matrix
+* A = Q*T*Q', then the reordered Schur factorization of A is given by
+* A = (Q*Z)*(Z'*T*Z)*(Q*Z)', and the first n1 columns of Q*Z span the
+* corresponding invariant subspace of A.
+*
+* The reciprocal condition number of the average of the eigenvalues of
+* T11 may be returned in S. S lies between 0 (very badly conditioned)
+* and 1 (very well conditioned). It is computed as follows. First we
+* compute R so that
+*
+* P = ( I R ) n1
+* ( 0 0 ) n2
+* n1 n2
+*
+* is the projector on the invariant subspace associated with T11.
+* R is the solution of the Sylvester equation:
+*
+* T11*R - R*T22 = T12.
+*
+* Let F-norm(M) denote the Frobenius-norm of M and 2-norm(M) denote
+* the two-norm of M. Then S is computed as the lower bound
+*
+* (1 + F-norm(R)**2)**(-1/2)
+*
+* on the reciprocal of 2-norm(P), the true reciprocal condition number.
+* S cannot underestimate 1 / 2-norm(P) by more than a factor of
+* sqrt(N).
+*
+* An approximate error bound for the computed average of the
+* eigenvalues of T11 is
+*
+* EPS * norm(T) / S
+*
+* where EPS is the machine precision.
+*
+* The reciprocal condition number of the right invariant subspace
+* spanned by the first n1 columns of Z (or of Q*Z) is returned in SEP.
+* SEP is defined as the separation of T11 and T22:
+*
+* sep( T11, T22 ) = sigma-min( C )
+*
+* where sigma-min(C) is the smallest singular value of the
+* n1*n2-by-n1*n2 matrix
+*
+* C = kprod( I(n2), T11 ) - kprod( transpose(T22), I(n1) )
+*
+* I(m) is an m by m identity matrix, and kprod denotes the Kronecker
+* product. We estimate sigma-min(C) by the reciprocal of an estimate of
+* the 1-norm of inverse(C). The true reciprocal 1-norm of inverse(C)
+* cannot differ from sigma-min(C) by more than a factor of sqrt(n1*n2).
+*
+* When SEP is small, small changes in T can cause large changes in
+* the invariant subspace. An approximate bound on the maximum angular
+* error in the computed right invariant subspace is
+*
+* EPS * norm(T) / SEP
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, WANTBH, WANTQ, WANTS, WANTSP
+ INTEGER IERR, K, KASE, KS, LWMIN, N1, N2, NN
+ DOUBLE PRECISION EST, RNORM, SCALE
+* ..
+* .. Local Arrays ..
+ INTEGER ISAVE( 3 )
+ DOUBLE PRECISION RWORK( 1 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION ZLANGE
+ EXTERNAL LSAME, ZLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLACN2, ZLACPY, ZTREXC, ZTRSYL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, SQRT
+* ..
+* .. Executable Statements ..
+*
+* Decode and test the input parameters.
+*
+ WANTBH = LSAME( JOB, 'B' )
+ WANTS = LSAME( JOB, 'E' ) .OR. WANTBH
+ WANTSP = LSAME( JOB, 'V' ) .OR. WANTBH
+ WANTQ = LSAME( COMPQ, 'V' )
+*
+* Set M to the number of selected eigenvalues.
+*
+ M = 0
+ DO 10 K = 1, N
+ IF( SELECT( K ) )
+ $ M = M + 1
+ 10 CONTINUE
+*
+ N1 = M
+ N2 = N - M
+ NN = N1*N2
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+*
+ IF( WANTSP ) THEN
+ LWMIN = MAX( 1, 2*NN )
+ ELSE IF( LSAME( JOB, 'N' ) ) THEN
+ LWMIN = 1
+ ELSE IF( LSAME( JOB, 'E' ) ) THEN
+ LWMIN = MAX( 1, NN )
+ END IF
+*
+ IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.WANTS .AND. .NOT.WANTSP )
+ $ THEN
+ INFO = -1
+ ELSE IF( .NOT.LSAME( COMPQ, 'N' ) .AND. .NOT.WANTQ ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
+ INFO = -6
+ ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.N ) ) THEN
+ INFO = -8
+ ELSE IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -14
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ WORK( 1 ) = LWMIN
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTRSEN', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.N .OR. M.EQ.0 ) THEN
+ IF( WANTS )
+ $ S = ONE
+ IF( WANTSP )
+ $ SEP = ZLANGE( '1', N, N, T, LDT, RWORK )
+ GO TO 40
+ END IF
+*
+* Collect the selected eigenvalues at the top left corner of T.
+*
+ KS = 0
+ DO 20 K = 1, N
+ IF( SELECT( K ) ) THEN
+ KS = KS + 1
+*
+* Swap the K-th eigenvalue to position KS.
+*
+ IF( K.NE.KS )
+ $ CALL ZTREXC( COMPQ, N, T, LDT, Q, LDQ, K, KS, IERR )
+ END IF
+ 20 CONTINUE
+*
+ IF( WANTS ) THEN
+*
+* Solve the Sylvester equation for R:
+*
+* T11*R - R*T22 = scale*T12
+*
+ CALL ZLACPY( 'F', N1, N2, T( 1, N1+1 ), LDT, WORK, N1 )
+ CALL ZTRSYL( 'N', 'N', -1, N1, N2, T, LDT, T( N1+1, N1+1 ),
+ $ LDT, WORK, N1, SCALE, IERR )
+*
+* Estimate the reciprocal of the condition number of the cluster
+* of eigenvalues.
+*
+ RNORM = ZLANGE( 'F', N1, N2, WORK, N1, RWORK )
+ IF( RNORM.EQ.ZERO ) THEN
+ S = ONE
+ ELSE
+ S = SCALE / ( SQRT( SCALE*SCALE / RNORM+RNORM )*
+ $ SQRT( RNORM ) )
+ END IF
+ END IF
+*
+ IF( WANTSP ) THEN
+*
+* Estimate sep(T11,T22).
+*
+ EST = ZERO
+ KASE = 0
+ 30 CONTINUE
+ CALL ZLACN2( NN, WORK( NN+1 ), WORK, EST, KASE, ISAVE )
+ IF( KASE.NE.0 ) THEN
+ IF( KASE.EQ.1 ) THEN
+*
+* Solve T11*R - R*T22 = scale*X.
+*
+ CALL ZTRSYL( 'N', 'N', -1, N1, N2, T, LDT,
+ $ T( N1+1, N1+1 ), LDT, WORK, N1, SCALE,
+ $ IERR )
+ ELSE
+*
+* Solve T11'*R - R*T22' = scale*X.
+*
+ CALL ZTRSYL( 'C', 'C', -1, N1, N2, T, LDT,
+ $ T( N1+1, N1+1 ), LDT, WORK, N1, SCALE,
+ $ IERR )
+ END IF
+ GO TO 30
+ END IF
+*
+ SEP = SCALE / EST
+ END IF
+*
+ 40 CONTINUE
+*
+* Copy reordered eigenvalues to W.
+*
+ DO 50 K = 1, N
+ W( K ) = T( K, K )
+ 50 CONTINUE
+*
+ WORK( 1 ) = LWMIN
+*
+ RETURN
+*
+* End of ZTRSEN
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztrsyl.f b/2.3-1/src/fortran/lapack/ztrsyl.f
new file mode 100644
index 00000000..d2e0ecc7
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztrsyl.f
@@ -0,0 +1,365 @@
+ SUBROUTINE ZTRSYL( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
+ $ LDC, SCALE, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER TRANA, TRANB
+ INTEGER INFO, ISGN, LDA, LDB, LDC, M, N
+ DOUBLE PRECISION SCALE
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), C( LDC, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRSYL solves the complex Sylvester matrix equation:
+*
+* op(A)*X + X*op(B) = scale*C or
+* op(A)*X - X*op(B) = scale*C,
+*
+* where op(A) = A or A**H, and A and B are both upper triangular. A is
+* M-by-M and B is N-by-N; the right hand side C and the solution X are
+* M-by-N; and scale is an output scale factor, set <= 1 to avoid
+* overflow in X.
+*
+* Arguments
+* =========
+*
+* TRANA (input) CHARACTER*1
+* Specifies the option op(A):
+* = 'N': op(A) = A (No transpose)
+* = 'C': op(A) = A**H (Conjugate transpose)
+*
+* TRANB (input) CHARACTER*1
+* Specifies the option op(B):
+* = 'N': op(B) = B (No transpose)
+* = 'C': op(B) = B**H (Conjugate transpose)
+*
+* ISGN (input) INTEGER
+* Specifies the sign in the equation:
+* = +1: solve op(A)*X + X*op(B) = scale*C
+* = -1: solve op(A)*X - X*op(B) = scale*C
+*
+* M (input) INTEGER
+* The order of the matrix A, and the number of rows in the
+* matrices X and C. M >= 0.
+*
+* N (input) INTEGER
+* The order of the matrix B, and the number of columns in the
+* matrices X and C. N >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,M)
+* The upper triangular matrix A.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input) COMPLEX*16 array, dimension (LDB,N)
+* The upper triangular matrix B.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,N).
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N right hand side matrix C.
+* On exit, C is overwritten by the solution matrix X.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M)
+*
+* SCALE (output) DOUBLE PRECISION
+* The scale factor, scale, set <= 1 to avoid overflow in X.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* = 1: A and B have common or very close eigenvalues; perturbed
+* values were used to solve the equation (but the matrices
+* A and B are unchanged).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ DOUBLE PRECISION ONE
+ PARAMETER ( ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOTRNA, NOTRNB
+ INTEGER J, K, L
+ DOUBLE PRECISION BIGNUM, DA11, DB, EPS, SCALOC, SGN, SMIN,
+ $ SMLNUM
+ COMPLEX*16 A11, SUML, SUMR, VEC, X11
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION DUM( 1 )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ DOUBLE PRECISION DLAMCH, ZLANGE
+ COMPLEX*16 ZDOTC, ZDOTU, ZLADIV
+ EXTERNAL LSAME, DLAMCH, ZLANGE, ZDOTC, ZDOTU, ZLADIV
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZDSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Decode and Test input parameters
+*
+ NOTRNA = LSAME( TRANA, 'N' )
+ NOTRNB = LSAME( TRANB, 'N' )
+*
+ INFO = 0
+ IF( .NOT.NOTRNA .AND. .NOT.LSAME( TRANA, 'C' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRNB .AND. .NOT.LSAME( TRANB, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( ISGN.NE.1 .AND. ISGN.NE.-1 ) THEN
+ INFO = -3
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -7
+ ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
+ INFO = -9
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTRSYL', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+* Set constants to control overflow
+*
+ EPS = DLAMCH( 'P' )
+ SMLNUM = DLAMCH( 'S' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+ SMLNUM = SMLNUM*DBLE( M*N ) / EPS
+ BIGNUM = ONE / SMLNUM
+ SMIN = MAX( SMLNUM, EPS*ZLANGE( 'M', M, M, A, LDA, DUM ),
+ $ EPS*ZLANGE( 'M', N, N, B, LDB, DUM ) )
+ SCALE = ONE
+ SGN = ISGN
+*
+ IF( NOTRNA .AND. NOTRNB ) THEN
+*
+* Solve A*X + ISGN*X*B = scale*C.
+*
+* The (K,L)th block of X is determined starting from
+* bottom-left corner column by column by
+*
+* A(K,K)*X(K,L) + ISGN*X(K,L)*B(L,L) = C(K,L) - R(K,L)
+*
+* Where
+* M L-1
+* R(K,L) = SUM [A(K,I)*X(I,L)] +ISGN*SUM [X(K,J)*B(J,L)].
+* I=K+1 J=1
+*
+ DO 30 L = 1, N
+ DO 20 K = M, 1, -1
+*
+ SUML = ZDOTU( M-K, A( K, MIN( K+1, M ) ), LDA,
+ $ C( MIN( K+1, M ), L ), 1 )
+ SUMR = ZDOTU( L-1, C( K, 1 ), LDC, B( 1, L ), 1 )
+ VEC = C( K, L ) - ( SUML+SGN*SUMR )
+*
+ SCALOC = ONE
+ A11 = A( K, K ) + SGN*B( L, L )
+ DA11 = ABS( DBLE( A11 ) ) + ABS( DIMAG( A11 ) )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( DBLE( VEC ) ) + ABS( DIMAG( VEC ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+ X11 = ZLADIV( VEC*DCMPLX( SCALOC ), A11 )
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 10 J = 1, N
+ CALL ZDSCAL( M, SCALOC, C( 1, J ), 1 )
+ 10 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K, L ) = X11
+*
+ 20 CONTINUE
+ 30 CONTINUE
+*
+ ELSE IF( .NOT.NOTRNA .AND. NOTRNB ) THEN
+*
+* Solve A' *X + ISGN*X*B = scale*C.
+*
+* The (K,L)th block of X is determined starting from
+* upper-left corner column by column by
+*
+* A'(K,K)*X(K,L) + ISGN*X(K,L)*B(L,L) = C(K,L) - R(K,L)
+*
+* Where
+* K-1 L-1
+* R(K,L) = SUM [A'(I,K)*X(I,L)] + ISGN*SUM [X(K,J)*B(J,L)]
+* I=1 J=1
+*
+ DO 60 L = 1, N
+ DO 50 K = 1, M
+*
+ SUML = ZDOTC( K-1, A( 1, K ), 1, C( 1, L ), 1 )
+ SUMR = ZDOTU( L-1, C( K, 1 ), LDC, B( 1, L ), 1 )
+ VEC = C( K, L ) - ( SUML+SGN*SUMR )
+*
+ SCALOC = ONE
+ A11 = DCONJG( A( K, K ) ) + SGN*B( L, L )
+ DA11 = ABS( DBLE( A11 ) ) + ABS( DIMAG( A11 ) )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( DBLE( VEC ) ) + ABS( DIMAG( VEC ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+*
+ X11 = ZLADIV( VEC*DCMPLX( SCALOC ), A11 )
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 40 J = 1, N
+ CALL ZDSCAL( M, SCALOC, C( 1, J ), 1 )
+ 40 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K, L ) = X11
+*
+ 50 CONTINUE
+ 60 CONTINUE
+*
+ ELSE IF( .NOT.NOTRNA .AND. .NOT.NOTRNB ) THEN
+*
+* Solve A'*X + ISGN*X*B' = C.
+*
+* The (K,L)th block of X is determined starting from
+* upper-right corner column by column by
+*
+* A'(K,K)*X(K,L) + ISGN*X(K,L)*B'(L,L) = C(K,L) - R(K,L)
+*
+* Where
+* K-1
+* R(K,L) = SUM [A'(I,K)*X(I,L)] +
+* I=1
+* N
+* ISGN*SUM [X(K,J)*B'(L,J)].
+* J=L+1
+*
+ DO 90 L = N, 1, -1
+ DO 80 K = 1, M
+*
+ SUML = ZDOTC( K-1, A( 1, K ), 1, C( 1, L ), 1 )
+ SUMR = ZDOTC( N-L, C( K, MIN( L+1, N ) ), LDC,
+ $ B( L, MIN( L+1, N ) ), LDB )
+ VEC = C( K, L ) - ( SUML+SGN*DCONJG( SUMR ) )
+*
+ SCALOC = ONE
+ A11 = DCONJG( A( K, K )+SGN*B( L, L ) )
+ DA11 = ABS( DBLE( A11 ) ) + ABS( DIMAG( A11 ) )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( DBLE( VEC ) ) + ABS( DIMAG( VEC ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+*
+ X11 = ZLADIV( VEC*DCMPLX( SCALOC ), A11 )
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 70 J = 1, N
+ CALL ZDSCAL( M, SCALOC, C( 1, J ), 1 )
+ 70 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K, L ) = X11
+*
+ 80 CONTINUE
+ 90 CONTINUE
+*
+ ELSE IF( NOTRNA .AND. .NOT.NOTRNB ) THEN
+*
+* Solve A*X + ISGN*X*B' = C.
+*
+* The (K,L)th block of X is determined starting from
+* bottom-left corner column by column by
+*
+* A(K,K)*X(K,L) + ISGN*X(K,L)*B'(L,L) = C(K,L) - R(K,L)
+*
+* Where
+* M N
+* R(K,L) = SUM [A(K,I)*X(I,L)] + ISGN*SUM [X(K,J)*B'(L,J)]
+* I=K+1 J=L+1
+*
+ DO 120 L = N, 1, -1
+ DO 110 K = M, 1, -1
+*
+ SUML = ZDOTU( M-K, A( K, MIN( K+1, M ) ), LDA,
+ $ C( MIN( K+1, M ), L ), 1 )
+ SUMR = ZDOTC( N-L, C( K, MIN( L+1, N ) ), LDC,
+ $ B( L, MIN( L+1, N ) ), LDB )
+ VEC = C( K, L ) - ( SUML+SGN*DCONJG( SUMR ) )
+*
+ SCALOC = ONE
+ A11 = A( K, K ) + SGN*DCONJG( B( L, L ) )
+ DA11 = ABS( DBLE( A11 ) ) + ABS( DIMAG( A11 ) )
+ IF( DA11.LE.SMIN ) THEN
+ A11 = SMIN
+ DA11 = SMIN
+ INFO = 1
+ END IF
+ DB = ABS( DBLE( VEC ) ) + ABS( DIMAG( VEC ) )
+ IF( DA11.LT.ONE .AND. DB.GT.ONE ) THEN
+ IF( DB.GT.BIGNUM*DA11 )
+ $ SCALOC = ONE / DB
+ END IF
+*
+ X11 = ZLADIV( VEC*DCMPLX( SCALOC ), A11 )
+*
+ IF( SCALOC.NE.ONE ) THEN
+ DO 100 J = 1, N
+ CALL ZDSCAL( M, SCALOC, C( 1, J ), 1 )
+ 100 CONTINUE
+ SCALE = SCALE*SCALOC
+ END IF
+ C( K, L ) = X11
+*
+ 110 CONTINUE
+ 120 CONTINUE
+*
+ END IF
+*
+ RETURN
+*
+* End of ZTRSYL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztrti2.f b/2.3-1/src/fortran/lapack/ztrti2.f
new file mode 100644
index 00000000..73c7bbc3
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztrti2.f
@@ -0,0 +1,146 @@
+ SUBROUTINE ZTRTI2( UPLO, DIAG, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRTI2 computes the inverse of a complex upper or lower triangular
+* matrix.
+*
+* This is the Level 2 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* Specifies whether the matrix A is upper or lower triangular.
+* = 'U': Upper triangular
+* = 'L': Lower triangular
+*
+* DIAG (input) CHARACTER*1
+* Specifies whether or not the matrix A is unit triangular.
+* = 'N': Non-unit triangular
+* = 'U': Unit triangular
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the triangular matrix A. If UPLO = 'U', the
+* leading n by n upper triangular part of the array A contains
+* the upper triangular matrix, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading n by n lower triangular part of the array A contains
+* the lower triangular matrix, and the strictly upper
+* triangular part of A is not referenced. If DIAG = 'U', the
+* diagonal elements of A are also not referenced and are
+* assumed to be 1.
+*
+* On exit, the (triangular) inverse of the original matrix, in
+* the same storage format.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -k, the k-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOUNIT, UPPER
+ INTEGER J
+ COMPLEX*16 AJJ
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZSCAL, ZTRMV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ NOUNIT = LSAME( DIAG, 'N' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTRTI2', -INFO )
+ RETURN
+ END IF
+*
+ IF( UPPER ) THEN
+*
+* Compute inverse of upper triangular matrix.
+*
+ DO 10 J = 1, N
+ IF( NOUNIT ) THEN
+ A( J, J ) = ONE / A( J, J )
+ AJJ = -A( J, J )
+ ELSE
+ AJJ = -ONE
+ END IF
+*
+* Compute elements 1:j-1 of j-th column.
+*
+ CALL ZTRMV( 'Upper', 'No transpose', DIAG, J-1, A, LDA,
+ $ A( 1, J ), 1 )
+ CALL ZSCAL( J-1, AJJ, A( 1, J ), 1 )
+ 10 CONTINUE
+ ELSE
+*
+* Compute inverse of lower triangular matrix.
+*
+ DO 20 J = N, 1, -1
+ IF( NOUNIT ) THEN
+ A( J, J ) = ONE / A( J, J )
+ AJJ = -A( J, J )
+ ELSE
+ AJJ = -ONE
+ END IF
+ IF( J.LT.N ) THEN
+*
+* Compute elements j+1:n of j-th column.
+*
+ CALL ZTRMV( 'Lower', 'No transpose', DIAG, N-J,
+ $ A( J+1, J+1 ), LDA, A( J+1, J ), 1 )
+ CALL ZSCAL( N-J, AJJ, A( J+1, J ), 1 )
+ END IF
+ 20 CONTINUE
+ END IF
+*
+ RETURN
+*
+* End of ZTRTI2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztrtri.f b/2.3-1/src/fortran/lapack/ztrtri.f
new file mode 100644
index 00000000..7caa9771
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztrtri.f
@@ -0,0 +1,177 @@
+ SUBROUTINE ZTRTRI( UPLO, DIAG, N, A, LDA, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER DIAG, UPLO
+ INTEGER INFO, LDA, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTRTRI computes the inverse of a complex upper or lower triangular
+* matrix A.
+*
+* This is the Level 3 BLAS version of the algorithm.
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': A is upper triangular;
+* = 'L': A is lower triangular.
+*
+* DIAG (input) CHARACTER*1
+* = 'N': A is non-unit triangular;
+* = 'U': A is unit triangular.
+*
+* N (input) INTEGER
+* The order of the matrix A. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the triangular matrix A. If UPLO = 'U', the
+* leading N-by-N upper triangular part of the array A contains
+* the upper triangular matrix, and the strictly lower
+* triangular part of A is not referenced. If UPLO = 'L', the
+* leading N-by-N lower triangular part of the array A contains
+* the lower triangular matrix, and the strictly upper
+* triangular part of A is not referenced. If DIAG = 'U', the
+* diagonal elements of A are also not referenced and are
+* assumed to be 1.
+* On exit, the (triangular) inverse of the original matrix, in
+* the same storage format.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+* > 0: if INFO = i, A(i,i) is exactly zero. The triangular
+* matrix is singular and its inverse can not be computed.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL NOUNIT, UPPER
+ INTEGER J, JB, NB, NN
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZTRMM, ZTRSM, ZTRTI2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input parameters.
+*
+ INFO = 0
+ UPPER = LSAME( UPLO, 'U' )
+ NOUNIT = LSAME( DIAG, 'N' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTRTRI', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 )
+ $ RETURN
+*
+* Check for singularity if non-unit.
+*
+ IF( NOUNIT ) THEN
+ DO 10 INFO = 1, N
+ IF( A( INFO, INFO ).EQ.ZERO )
+ $ RETURN
+ 10 CONTINUE
+ INFO = 0
+ END IF
+*
+* Determine the block size for this environment.
+*
+ NB = ILAENV( 1, 'ZTRTRI', UPLO // DIAG, N, -1, -1, -1 )
+ IF( NB.LE.1 .OR. NB.GE.N ) THEN
+*
+* Use unblocked code
+*
+ CALL ZTRTI2( UPLO, DIAG, N, A, LDA, INFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( UPPER ) THEN
+*
+* Compute inverse of upper triangular matrix
+*
+ DO 20 J = 1, N, NB
+ JB = MIN( NB, N-J+1 )
+*
+* Compute rows 1:j-1 of current block column
+*
+ CALL ZTRMM( 'Left', 'Upper', 'No transpose', DIAG, J-1,
+ $ JB, ONE, A, LDA, A( 1, J ), LDA )
+ CALL ZTRSM( 'Right', 'Upper', 'No transpose', DIAG, J-1,
+ $ JB, -ONE, A( J, J ), LDA, A( 1, J ), LDA )
+*
+* Compute inverse of current diagonal block
+*
+ CALL ZTRTI2( 'Upper', DIAG, JB, A( J, J ), LDA, INFO )
+ 20 CONTINUE
+ ELSE
+*
+* Compute inverse of lower triangular matrix
+*
+ NN = ( ( N-1 ) / NB )*NB + 1
+ DO 30 J = NN, 1, -NB
+ JB = MIN( NB, N-J+1 )
+ IF( J+JB.LE.N ) THEN
+*
+* Compute rows j+jb:n of current block column
+*
+ CALL ZTRMM( 'Left', 'Lower', 'No transpose', DIAG,
+ $ N-J-JB+1, JB, ONE, A( J+JB, J+JB ), LDA,
+ $ A( J+JB, J ), LDA )
+ CALL ZTRSM( 'Right', 'Lower', 'No transpose', DIAG,
+ $ N-J-JB+1, JB, -ONE, A( J, J ), LDA,
+ $ A( J+JB, J ), LDA )
+ END IF
+*
+* Compute inverse of current diagonal block
+*
+ CALL ZTRTI2( 'Lower', DIAG, JB, A( J, J ), LDA, INFO )
+ 30 CONTINUE
+ END IF
+ END IF
+*
+ RETURN
+*
+* End of ZTRTRI
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/ztzrzf.f b/2.3-1/src/fortran/lapack/ztzrzf.f
new file mode 100644
index 00000000..5c9c6543
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/ztzrzf.f
@@ -0,0 +1,244 @@
+ SUBROUTINE ZTZRZF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZTZRZF reduces the M-by-N ( M<=N ) complex upper trapezoidal matrix A
+* to upper triangular form by means of unitary transformations.
+*
+* The upper trapezoidal matrix A is factored as
+*
+* A = ( R 0 ) * Z,
+*
+* where Z is an N-by-N unitary matrix and R is an M-by-M upper
+* triangular matrix.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= M.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the leading M-by-N upper trapezoidal part of the
+* array A must contain the matrix to be factorized.
+* On exit, the leading M-by-M upper triangular part of A
+* contains the upper triangular matrix R, and elements M+1 to
+* N of the first M rows of A, with the array TAU, represent the
+* unitary matrix Z as a product of M elementary reflectors.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* TAU (output) COMPLEX*16 array, dimension (M)
+* The scalar factors of the elementary reflectors.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* The factorization is obtained by Householder's method. The kth
+* transformation matrix, Z( k ), which is used to introduce zeros into
+* the ( m - k + 1 )th row of A, is given in the form
+*
+* Z( k ) = ( I 0 ),
+* ( 0 T( k ) )
+*
+* where
+*
+* T( k ) = I - tau*u( k )*u( k )', u( k ) = ( 1 ),
+* ( 0 )
+* ( z( k ) )
+*
+* tau is a scalar and z( k ) is an ( n - m ) element vector.
+* tau and z( k ) are chosen to annihilate the elements of the kth row
+* of X.
+*
+* The scalar tau is returned in the kth element of TAU and the vector
+* u( k ) in the kth row of A, such that the elements of z( k ) are
+* in a( k, m + 1 ), ..., a( k, n ). The elements of R are returned in
+* the upper triangular part of A.
+*
+* Z is given by
+*
+* Z = Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IWS, KI, KK, LDWORK, LWKOPT, M1, MU, NB,
+ $ NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARZB, ZLARZT, ZLATRZ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -4
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.EQ.0 .OR. M.EQ.N ) THEN
+ LWKOPT = 1
+ ELSE
+*
+* Determine the block size.
+*
+ NB = ILAENV( 1, 'ZGERQF', ' ', M, N, -1, -1 )
+ LWKOPT = M*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZTZRZF', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 ) THEN
+ RETURN
+ ELSE IF( M.EQ.N ) THEN
+ DO 10 I = 1, N
+ TAU( I ) = ZERO
+ 10 CONTINUE
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 1
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.M ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'ZGERQF', ' ', M, N, -1, -1 ) )
+ IF( NX.LT.M ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZGERQF', ' ', M, N, -1,
+ $ -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.M .AND. NX.LT.M ) THEN
+*
+* Use blocked code initially.
+* The last kk rows are handled by the block method.
+*
+ M1 = MIN( M+1, N )
+ KI = ( ( M-NX-1 ) / NB )*NB
+ KK = MIN( M, KI+NB )
+*
+ DO 20 I = M - KK + KI + 1, M - KK + 1, -NB
+ IB = MIN( M-I+1, NB )
+*
+* Compute the TZ factorization of the current block
+* A(i:i+ib-1,i:n)
+*
+ CALL ZLATRZ( IB, N-I+1, N-M, A( I, I ), LDA, TAU( I ),
+ $ WORK )
+ IF( I.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL ZLARZT( 'Backward', 'Rowwise', N-M, IB, A( I, M1 ),
+ $ LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(1:i-1,i:n) from the right
+*
+ CALL ZLARZB( 'Right', 'No transpose', 'Backward',
+ $ 'Rowwise', I-1, N-I+1, IB, N-M, A( I, M1 ),
+ $ LDA, WORK, LDWORK, A( 1, I ), LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+ 20 CONTINUE
+ MU = I + NB - 1
+ ELSE
+ MU = M
+ END IF
+*
+* Use unblocked code to factor the last or only block
+*
+ IF( MU.GT.0 )
+ $ CALL ZLATRZ( MU, N, N-M, A, LDA, TAU, WORK )
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of ZTZRZF
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zung2l.f b/2.3-1/src/fortran/lapack/zung2l.f
new file mode 100644
index 00000000..29178b90
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zung2l.f
@@ -0,0 +1,128 @@
+ SUBROUTINE ZUNG2L( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNG2L generates an m by n complex matrix Q with orthonormal columns,
+* which is defined as the last n columns of a product of k elementary
+* reflectors of order m
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by ZGEQLF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the (n-k+i)-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by ZGEQLF in the last k columns of its array
+* argument A.
+* On exit, the m-by-n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEQLF.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, II, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARF, ZSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNG2L', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+* Initialise columns 1:n-k to columns of the unit matrix
+*
+ DO 20 J = 1, N - K
+ DO 10 L = 1, M
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ A( M-N+J, J ) = ONE
+ 20 CONTINUE
+*
+ DO 40 I = 1, K
+ II = N - K + I
+*
+* Apply H(i) to A(1:m-k+i,1:n-k+i) from the left
+*
+ A( M-N+II, II ) = ONE
+ CALL ZLARF( 'Left', M-N+II, II-1, A( 1, II ), 1, TAU( I ), A,
+ $ LDA, WORK )
+ CALL ZSCAL( M-N+II-1, -TAU( I ), A( 1, II ), 1 )
+ A( M-N+II, II ) = ONE - TAU( I )
+*
+* Set A(m-k+i+1:m,n-k+i) to zero
+*
+ DO 30 L = M - N + II + 1, M
+ A( L, II ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of ZUNG2L
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zung2r.f b/2.3-1/src/fortran/lapack/zung2r.f
new file mode 100644
index 00000000..cd89f26e
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zung2r.f
@@ -0,0 +1,130 @@
+ SUBROUTINE ZUNG2R( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNG2R generates an m by n complex matrix Q with orthonormal columns,
+* which is defined as the first n columns of a product of k elementary
+* reflectors of order m
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by ZGEQRF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the i-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by ZGEQRF in the first k columns of its array
+* argument A.
+* On exit, the m by n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEQRF.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (N)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARF, ZSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNG2R', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 )
+ $ RETURN
+*
+* Initialise columns k+1:n to columns of the unit matrix
+*
+ DO 20 J = K + 1, N
+ DO 10 L = 1, M
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ A( J, J ) = ONE
+ 20 CONTINUE
+*
+ DO 40 I = K, 1, -1
+*
+* Apply H(i) to A(i:m,i:n) from the left
+*
+ IF( I.LT.N ) THEN
+ A( I, I ) = ONE
+ CALL ZLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAU( I ),
+ $ A( I, I+1 ), LDA, WORK )
+ END IF
+ IF( I.LT.M )
+ $ CALL ZSCAL( M-I, -TAU( I ), A( I+1, I ), 1 )
+ A( I, I ) = ONE - TAU( I )
+*
+* Set A(1:i-1,i) to zero
+*
+ DO 30 L = 1, I - 1
+ A( L, I ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of ZUNG2R
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zungbr.f b/2.3-1/src/fortran/lapack/zungbr.f
new file mode 100644
index 00000000..94f74820
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zungbr.f
@@ -0,0 +1,245 @@
+ SUBROUTINE ZUNGBR( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER VECT
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGBR generates one of the complex unitary matrices Q or P**H
+* determined by ZGEBRD when reducing a complex matrix A to bidiagonal
+* form: A = Q * B * P**H. Q and P**H are defined as products of
+* elementary reflectors H(i) or G(i) respectively.
+*
+* If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q
+* is of order M:
+* if m >= k, Q = H(1) H(2) . . . H(k) and ZUNGBR returns the first n
+* columns of Q, where m >= n >= k;
+* if m < k, Q = H(1) H(2) . . . H(m-1) and ZUNGBR returns Q as an
+* M-by-M matrix.
+*
+* If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**H
+* is of order N:
+* if k < n, P**H = G(k) . . . G(2) G(1) and ZUNGBR returns the first m
+* rows of P**H, where n >= m >= k;
+* if k >= n, P**H = G(n-1) . . . G(2) G(1) and ZUNGBR returns P**H as
+* an N-by-N matrix.
+*
+* Arguments
+* =========
+*
+* VECT (input) CHARACTER*1
+* Specifies whether the matrix Q or the matrix P**H is
+* required, as defined in the transformation applied by ZGEBRD:
+* = 'Q': generate Q;
+* = 'P': generate P**H.
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q or P**H to be returned.
+* M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q or P**H to be returned.
+* N >= 0.
+* If VECT = 'Q', M >= N >= min(M,K);
+* if VECT = 'P', N >= M >= min(N,K).
+*
+* K (input) INTEGER
+* If VECT = 'Q', the number of columns in the original M-by-K
+* matrix reduced by ZGEBRD.
+* If VECT = 'P', the number of rows in the original K-by-N
+* matrix reduced by ZGEBRD.
+* K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the vectors which define the elementary reflectors,
+* as returned by ZGEBRD.
+* On exit, the M-by-N matrix Q or P**H.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= M.
+*
+* TAU (input) COMPLEX*16 array, dimension
+* (min(M,K)) if VECT = 'Q'
+* (min(N,K)) if VECT = 'P'
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i) or G(i), which determines Q or P**H, as
+* returned by ZGEBRD in its array argument TAUQ or TAUP.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,min(M,N)).
+* For optimum performance LWORK >= min(M,N)*NB, where NB
+* is the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, WANTQ
+ INTEGER I, IINFO, J, LWKOPT, MN, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZUNGLQ, ZUNGQR
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ WANTQ = LSAME( VECT, 'Q' )
+ MN = MIN( M, N )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( .NOT.WANTQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN
+ INFO = -1
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( N.LT.0 .OR. ( WANTQ .AND. ( N.GT.M .OR. N.LT.MIN( M,
+ $ K ) ) ) .OR. ( .NOT.WANTQ .AND. ( M.GT.N .OR. M.LT.
+ $ MIN( N, K ) ) ) ) THEN
+ INFO = -3
+ ELSE IF( K.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -6
+ ELSE IF( LWORK.LT.MAX( 1, MN ) .AND. .NOT.LQUERY ) THEN
+ INFO = -9
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( WANTQ ) THEN
+ NB = ILAENV( 1, 'ZUNGQR', ' ', M, N, K, -1 )
+ ELSE
+ NB = ILAENV( 1, 'ZUNGLQ', ' ', M, N, K, -1 )
+ END IF
+ LWKOPT = MAX( 1, MN )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGBR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ IF( WANTQ ) THEN
+*
+* Form Q, determined by a call to ZGEBRD to reduce an m-by-k
+* matrix
+*
+ IF( M.GE.K ) THEN
+*
+* If m >= k, assume m >= n >= k
+*
+ CALL ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, IINFO )
+*
+ ELSE
+*
+* If m < k, assume m = n
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the right, and set the first row and column of Q
+* to those of the unit matrix
+*
+ DO 20 J = M, 2, -1
+ A( 1, J ) = ZERO
+ DO 10 I = J + 1, M
+ A( I, J ) = A( I, J-1 )
+ 10 CONTINUE
+ 20 CONTINUE
+ A( 1, 1 ) = ONE
+ DO 30 I = 2, M
+ A( I, 1 ) = ZERO
+ 30 CONTINUE
+ IF( M.GT.1 ) THEN
+*
+* Form Q(2:m,2:m)
+*
+ CALL ZUNGQR( M-1, M-1, M-1, A( 2, 2 ), LDA, TAU, WORK,
+ $ LWORK, IINFO )
+ END IF
+ END IF
+ ELSE
+*
+* Form P', determined by a call to ZGEBRD to reduce a k-by-n
+* matrix
+*
+ IF( K.LT.N ) THEN
+*
+* If k < n, assume k <= m <= n
+*
+ CALL ZUNGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, IINFO )
+*
+ ELSE
+*
+* If k >= n, assume m = n
+*
+* Shift the vectors which define the elementary reflectors one
+* row downward, and set the first row and column of P' to
+* those of the unit matrix
+*
+ A( 1, 1 ) = ONE
+ DO 40 I = 2, N
+ A( I, 1 ) = ZERO
+ 40 CONTINUE
+ DO 60 J = 2, N
+ DO 50 I = J - 1, 2, -1
+ A( I, J ) = A( I-1, J )
+ 50 CONTINUE
+ A( 1, J ) = ZERO
+ 60 CONTINUE
+ IF( N.GT.1 ) THEN
+*
+* Form P'(2:n,2:n)
+*
+ CALL ZUNGLQ( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK,
+ $ LWORK, IINFO )
+ END IF
+ END IF
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZUNGBR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunghr.f b/2.3-1/src/fortran/lapack/zunghr.f
new file mode 100644
index 00000000..fcf32abf
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunghr.f
@@ -0,0 +1,165 @@
+ SUBROUTINE ZUNGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER IHI, ILO, INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGHR generates a complex unitary matrix Q which is defined as the
+* product of IHI-ILO elementary reflectors of order N, as returned by
+* ZGEHRD:
+*
+* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The order of the matrix Q. N >= 0.
+*
+* ILO (input) INTEGER
+* IHI (input) INTEGER
+* ILO and IHI must have the same values as in the previous call
+* of ZGEHRD. Q is equal to the unit matrix except in the
+* submatrix Q(ilo+1:ihi,ilo+1:ihi).
+* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the vectors which define the elementary reflectors,
+* as returned by ZGEHRD.
+* On exit, the N-by-N unitary matrix Q.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,N).
+*
+* TAU (input) COMPLEX*16 array, dimension (N-1)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEHRD.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= IHI-ILO.
+* For optimum performance LWORK >= (IHI-ILO)*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IINFO, J, LWKOPT, NB, NH
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZUNGQR
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NH = IHI - ILO
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( N.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN
+ INFO = -2
+ ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, NH ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ NB = ILAENV( 1, 'ZUNGQR', ' ', NH, NH, NH, -1 )
+ LWKOPT = MAX( 1, NH )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGHR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the right, and set the first ilo and the last n-ihi
+* rows and columns to those of the unit matrix
+*
+ DO 40 J = IHI, ILO + 1, -1
+ DO 10 I = 1, J - 1
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ DO 20 I = J + 1, IHI
+ A( I, J ) = A( I, J-1 )
+ 20 CONTINUE
+ DO 30 I = IHI + 1, N
+ A( I, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ DO 60 J = 1, ILO
+ DO 50 I = 1, N
+ A( I, J ) = ZERO
+ 50 CONTINUE
+ A( J, J ) = ONE
+ 60 CONTINUE
+ DO 80 J = IHI + 1, N
+ DO 70 I = 1, N
+ A( I, J ) = ZERO
+ 70 CONTINUE
+ A( J, J ) = ONE
+ 80 CONTINUE
+*
+ IF( NH.GT.0 ) THEN
+*
+* Generate Q(ilo+1:ihi,ilo+1:ihi)
+*
+ CALL ZUNGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ),
+ $ WORK, LWORK, IINFO )
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZUNGHR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zungl2.f b/2.3-1/src/fortran/lapack/zungl2.f
new file mode 100644
index 00000000..502411b4
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zungl2.f
@@ -0,0 +1,136 @@
+ SUBROUTINE ZUNGL2( M, N, K, A, LDA, TAU, WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGL2 generates an m-by-n complex matrix Q with orthonormal rows,
+* which is defined as the first m rows of a product of k elementary
+* reflectors of order n
+*
+* Q = H(k)' . . . H(2)' H(1)'
+*
+* as returned by ZGELQF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. N >= M.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. M >= K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the i-th row must contain the vector which defines
+* the elementary reflector H(i), for i = 1,2,...,k, as returned
+* by ZGELQF in the first k rows of its array argument A.
+* On exit, the m by n matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGELQF.
+*
+* WORK (workspace) COMPLEX*16 array, dimension (M)
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE, ZERO
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
+ $ ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ INTEGER I, J, L
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLACGV, ZLARF, ZSCAL
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.M ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGL2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.LE.0 )
+ $ RETURN
+*
+ IF( K.LT.M ) THEN
+*
+* Initialise rows k+1:m to rows of the unit matrix
+*
+ DO 20 J = 1, N
+ DO 10 L = K + 1, M
+ A( L, J ) = ZERO
+ 10 CONTINUE
+ IF( J.GT.K .AND. J.LE.M )
+ $ A( J, J ) = ONE
+ 20 CONTINUE
+ END IF
+*
+ DO 40 I = K, 1, -1
+*
+* Apply H(i)' to A(i:m,i:n) from the right
+*
+ IF( I.LT.N ) THEN
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ IF( I.LT.M ) THEN
+ A( I, I ) = ONE
+ CALL ZLARF( 'Right', M-I, N-I+1, A( I, I ), LDA,
+ $ DCONJG( TAU( I ) ), A( I+1, I ), LDA, WORK )
+ END IF
+ CALL ZSCAL( N-I, -TAU( I ), A( I, I+1 ), LDA )
+ CALL ZLACGV( N-I, A( I, I+1 ), LDA )
+ END IF
+ A( I, I ) = ONE - DCONJG( TAU( I ) )
+*
+* Set A(i,1:i-1) to zero
+*
+ DO 30 L = 1, I - 1
+ A( I, L ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ RETURN
+*
+* End of ZUNGL2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunglq.f b/2.3-1/src/fortran/lapack/zunglq.f
new file mode 100644
index 00000000..ab4a018f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunglq.f
@@ -0,0 +1,215 @@
+ SUBROUTINE ZUNGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGLQ generates an M-by-N complex matrix Q with orthonormal rows,
+* which is defined as the first M rows of a product of K elementary
+* reflectors of order N
+*
+* Q = H(k)' . . . H(2)' H(1)'
+*
+* as returned by ZGELQF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. N >= M.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. M >= K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the i-th row must contain the vector which defines
+* the elementary reflector H(i), for i = 1,2,...,k, as returned
+* by ZGELQF in the first k rows of its array argument A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGELQF.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,M).
+* For optimum performance LWORK >= M*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit;
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK,
+ $ LWKOPT, NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNGL2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'ZUNGLQ', ' ', M, N, K, -1 )
+ LWKOPT = MAX( 1, M )*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.M ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGLQ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.LE.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = M
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'ZUNGLQ', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = M
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZUNGLQ', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the last block.
+* The first kk rows are handled by the block method.
+*
+ KI = ( ( K-NX-1 ) / NB )*NB
+ KK = MIN( K, KI+NB )
+*
+* Set A(kk+1:m,1:kk) to zero.
+*
+ DO 20 J = 1, KK
+ DO 10 I = KK + 1, M
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the last or only block.
+*
+ IF( KK.LT.M )
+ $ CALL ZUNGL2( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA,
+ $ TAU( KK+1 ), WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = KI + 1, 1, -NB
+ IB = MIN( NB, K-I+1 )
+ IF( I+IB.LE.M ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL ZLARFT( 'Forward', 'Rowwise', N-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H' to A(i+ib:m,i:n) from the right
+*
+ CALL ZLARFB( 'Right', 'Conjugate transpose', 'Forward',
+ $ 'Rowwise', M-I-IB+1, N-I+1, IB, A( I, I ),
+ $ LDA, WORK, LDWORK, A( I+IB, I ), LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+*
+* Apply H' to columns i:n of current block
+*
+ CALL ZUNGL2( IB, N-I+1, IB, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+* Set columns 1:i-1 of current block to zero
+*
+ DO 40 J = 1, I - 1
+ DO 30 L = I, I + IB - 1
+ A( L, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZUNGLQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zungql.f b/2.3-1/src/fortran/lapack/zungql.f
new file mode 100644
index 00000000..4232abea
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zungql.f
@@ -0,0 +1,222 @@
+ SUBROUTINE ZUNGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGQL generates an M-by-N complex matrix Q with orthonormal columns,
+* which is defined as the last N columns of a product of K elementary
+* reflectors of order M
+*
+* Q = H(k) . . . H(2) H(1)
+*
+* as returned by ZGEQLF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the (n-k+i)-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by ZGEQLF in the last k columns of its array
+* argument A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEQLF.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, KK, L, LDWORK, LWKOPT,
+ $ NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNG2L
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( N.EQ.0 ) THEN
+ LWKOPT = 1
+ ELSE
+ NB = ILAENV( 1, 'ZUNGQL', ' ', M, N, K, -1 )
+ LWKOPT = N*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGQL', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 ) THEN
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'ZUNGQL', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZUNGQL', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the first block.
+* The last kk columns are handled by the block method.
+*
+ KK = MIN( K, ( ( K-NX+NB-1 ) / NB )*NB )
+*
+* Set A(m-kk+1:m,1:n-kk) to zero.
+*
+ DO 20 J = 1, N - KK
+ DO 10 I = M - KK + 1, M
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the first or only block.
+*
+ CALL ZUNG2L( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = K - KK + 1, K, NB
+ IB = MIN( NB, K-I+1 )
+ IF( N-K+I.GT.1 ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL ZLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB,
+ $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(1:m-k+i+ib-1,1:n-k+i-1) from the left
+*
+ CALL ZLARFB( 'Left', 'No transpose', 'Backward',
+ $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB,
+ $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA,
+ $ WORK( IB+1 ), LDWORK )
+ END IF
+*
+* Apply H to rows 1:m-k+i+ib-1 of current block
+*
+ CALL ZUNG2L( M-K+I+IB-1, IB, IB, A( 1, N-K+I ), LDA,
+ $ TAU( I ), WORK, IINFO )
+*
+* Set rows m-k+i+ib:m of current block to zero
+*
+ DO 40 J = N - K + I, N - K + I + IB - 1
+ DO 30 L = M - K + I + IB, M
+ A( L, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZUNGQL
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zungqr.f b/2.3-1/src/fortran/lapack/zungqr.f
new file mode 100644
index 00000000..bf5c6997
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zungqr.f
@@ -0,0 +1,216 @@
+ SUBROUTINE ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, K, LDA, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGQR generates an M-by-N complex matrix Q with orthonormal columns,
+* which is defined as the first N columns of a product of K elementary
+* reflectors of order M
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by ZGEQRF.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix Q. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix Q. M >= N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines the
+* matrix Q. N >= K >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the i-th column must contain the vector which
+* defines the elementary reflector H(i), for i = 1,2,...,k, as
+* returned by ZGEQRF in the first k columns of its array
+* argument A.
+* On exit, the M-by-N matrix Q.
+*
+* LDA (input) INTEGER
+* The first dimension of the array A. LDA >= max(1,M).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEQRF.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= max(1,N).
+* For optimum performance LWORK >= N*NB, where NB is the
+* optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument has an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK,
+ $ LWKOPT, NB, NBMIN, NX
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNG2R
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ EXTERNAL ILAENV
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ NB = ILAENV( 1, 'ZUNGQR', ' ', M, N, K, -1 )
+ LWKOPT = MAX( 1, N )*NB
+ WORK( 1 ) = LWKOPT
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 .OR. N.GT.M ) THEN
+ INFO = -2
+ ELSE IF( K.LT.0 .OR. K.GT.N ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+ INFO = -8
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGQR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.LE.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ NX = 0
+ IWS = N
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+* Determine when to cross over from blocked to unblocked code.
+*
+ NX = MAX( 0, ILAENV( 3, 'ZUNGQR', ' ', M, N, K, -1 ) )
+ IF( NX.LT.K ) THEN
+*
+* Determine if workspace is large enough for blocked code.
+*
+ LDWORK = N
+ IWS = LDWORK*NB
+ IF( LWORK.LT.IWS ) THEN
+*
+* Not enough workspace to use optimal NB: reduce NB and
+* determine the minimum value of NB.
+*
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZUNGQR', ' ', M, N, K, -1 ) )
+ END IF
+ END IF
+ END IF
+*
+ IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+* Use blocked code after the last block.
+* The first kk columns are handled by the block method.
+*
+ KI = ( ( K-NX-1 ) / NB )*NB
+ KK = MIN( K, KI+NB )
+*
+* Set A(1:kk,kk+1:n) to zero.
+*
+ DO 20 J = KK + 1, N
+ DO 10 I = 1, KK
+ A( I, J ) = ZERO
+ 10 CONTINUE
+ 20 CONTINUE
+ ELSE
+ KK = 0
+ END IF
+*
+* Use unblocked code for the last or only block.
+*
+ IF( KK.LT.N )
+ $ CALL ZUNG2R( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA,
+ $ TAU( KK+1 ), WORK, IINFO )
+*
+ IF( KK.GT.0 ) THEN
+*
+* Use blocked code
+*
+ DO 50 I = KI + 1, 1, -NB
+ IB = MIN( NB, K-I+1 )
+ IF( I+IB.LE.N ) THEN
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL ZLARFT( 'Forward', 'Columnwise', M-I+1, IB,
+ $ A( I, I ), LDA, TAU( I ), WORK, LDWORK )
+*
+* Apply H to A(i:m,i+ib:n) from the left
+*
+ CALL ZLARFB( 'Left', 'No transpose', 'Forward',
+ $ 'Columnwise', M-I+1, N-I-IB+1, IB,
+ $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ),
+ $ LDA, WORK( IB+1 ), LDWORK )
+ END IF
+*
+* Apply H to rows i:m of current block
+*
+ CALL ZUNG2R( M-I+1, IB, IB, A( I, I ), LDA, TAU( I ), WORK,
+ $ IINFO )
+*
+* Set rows 1:i-1 of current block to zero
+*
+ DO 40 J = I, I + IB - 1
+ DO 30 L = 1, I - 1
+ A( L, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+ 50 CONTINUE
+ END IF
+*
+ WORK( 1 ) = IWS
+ RETURN
+*
+* End of ZUNGQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zungtr.f b/2.3-1/src/fortran/lapack/zungtr.f
new file mode 100644
index 00000000..5de7c109
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zungtr.f
@@ -0,0 +1,184 @@
+ SUBROUTINE ZUNGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNGTR generates a complex unitary matrix Q which is defined as the
+* product of n-1 elementary reflectors of order N, as returned by
+* ZHETRD:
+*
+* if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
+*
+* if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
+*
+* Arguments
+* =========
+*
+* UPLO (input) CHARACTER*1
+* = 'U': Upper triangle of A contains elementary reflectors
+* from ZHETRD;
+* = 'L': Lower triangle of A contains elementary reflectors
+* from ZHETRD.
+*
+* N (input) INTEGER
+* The order of the matrix Q. N >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the vectors which define the elementary reflectors,
+* as returned by ZHETRD.
+* On exit, the N-by-N unitary matrix Q.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= N.
+*
+* TAU (input) COMPLEX*16 array, dimension (N-1)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZHETRD.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK. LWORK >= N-1.
+* For optimum performance LWORK >= (N-1)*NB, where NB is
+* the optimal blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ZERO, ONE
+ PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
+ $ ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY, UPPER
+ INTEGER I, IINFO, J, LWKOPT, NB
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZUNGQL, ZUNGQR
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ UPPER = LSAME( UPLO, 'U' )
+ IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
+ INFO = -4
+ ELSE IF( LWORK.LT.MAX( 1, N-1 ) .AND. .NOT.LQUERY ) THEN
+ INFO = -7
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( UPPER ) THEN
+ NB = ILAENV( 1, 'ZUNGQL', ' ', N-1, N-1, N-1, -1 )
+ ELSE
+ NB = ILAENV( 1, 'ZUNGQR', ' ', N-1, N-1, N-1, -1 )
+ END IF
+ LWKOPT = MAX( 1, N-1 )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNGTR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( N.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ IF( UPPER ) THEN
+*
+* Q was determined by a call to ZHETRD with UPLO = 'U'
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the left, and set the last row and column of Q to
+* those of the unit matrix
+*
+ DO 20 J = 1, N - 1
+ DO 10 I = 1, J - 1
+ A( I, J ) = A( I, J+1 )
+ 10 CONTINUE
+ A( N, J ) = ZERO
+ 20 CONTINUE
+ DO 30 I = 1, N - 1
+ A( I, N ) = ZERO
+ 30 CONTINUE
+ A( N, N ) = ONE
+*
+* Generate Q(1:n-1,1:n-1)
+*
+ CALL ZUNGQL( N-1, N-1, N-1, A, LDA, TAU, WORK, LWORK, IINFO )
+*
+ ELSE
+*
+* Q was determined by a call to ZHETRD with UPLO = 'L'.
+*
+* Shift the vectors which define the elementary reflectors one
+* column to the right, and set the first row and column of Q to
+* those of the unit matrix
+*
+ DO 50 J = N, 2, -1
+ A( 1, J ) = ZERO
+ DO 40 I = J + 1, N
+ A( I, J ) = A( I, J-1 )
+ 40 CONTINUE
+ 50 CONTINUE
+ A( 1, 1 ) = ONE
+ DO 60 I = 2, N
+ A( I, 1 ) = ZERO
+ 60 CONTINUE
+ IF( N.GT.1 ) THEN
+*
+* Generate Q(2:n,2:n)
+*
+ CALL ZUNGQR( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK,
+ $ LWORK, IINFO )
+ END IF
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZUNGTR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunm2r.f b/2.3-1/src/fortran/lapack/zunm2r.f
new file mode 100644
index 00000000..7d4c067a
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunm2r.f
@@ -0,0 +1,201 @@
+ SUBROUTINE ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNM2R overwrites the general complex m-by-n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'C', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'C',
+*
+* where Q is a complex unitary matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by ZGEQRF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'C': apply Q' (Conjugate transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,K)
+* The i-th column must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* ZGEQRF in the first k columns of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If SIDE = 'L', LDA >= max(1,M);
+* if SIDE = 'R', LDA >= max(1,N).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEQRF.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the m-by-n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, IC, JC, MI, NI, NQ
+ COMPLEX*16 AII, TAUI
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARF
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNM2R', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN .OR. .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) or H(i)' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H(i) or H(i)' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H(i) or H(i)'
+*
+ IF( NOTRAN ) THEN
+ TAUI = TAU( I )
+ ELSE
+ TAUI = DCONJG( TAU( I ) )
+ END IF
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL ZLARF( SIDE, MI, NI, A( I, I ), 1, TAUI, C( IC, JC ), LDC,
+ $ WORK )
+ A( I, I ) = AII
+ 10 CONTINUE
+ RETURN
+*
+* End of ZUNM2R
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunmbr.f b/2.3-1/src/fortran/lapack/zunmbr.f
new file mode 100644
index 00000000..b32ce338
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunmbr.f
@@ -0,0 +1,288 @@
+ SUBROUTINE ZUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
+ $ LDC, WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS, VECT
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* If VECT = 'Q', ZUNMBR overwrites the general complex M-by-N matrix C
+* with
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'C': Q**H * C C * Q**H
+*
+* If VECT = 'P', ZUNMBR overwrites the general complex M-by-N matrix C
+* with
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': P * C C * P
+* TRANS = 'C': P**H * C C * P**H
+*
+* Here Q and P**H are the unitary matrices determined by ZGEBRD when
+* reducing a complex matrix A to bidiagonal form: A = Q * B * P**H. Q
+* and P**H are defined as products of elementary reflectors H(i) and
+* G(i) respectively.
+*
+* Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the
+* order of the unitary matrix Q or P**H that is applied.
+*
+* If VECT = 'Q', A is assumed to have been an NQ-by-K matrix:
+* if nq >= k, Q = H(1) H(2) . . . H(k);
+* if nq < k, Q = H(1) H(2) . . . H(nq-1).
+*
+* If VECT = 'P', A is assumed to have been a K-by-NQ matrix:
+* if k < nq, P = G(1) G(2) . . . G(k);
+* if k >= nq, P = G(1) G(2) . . . G(nq-1).
+*
+* Arguments
+* =========
+*
+* VECT (input) CHARACTER*1
+* = 'Q': apply Q or Q**H;
+* = 'P': apply P or P**H.
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q, Q**H, P or P**H from the Left;
+* = 'R': apply Q, Q**H, P or P**H from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q or P;
+* = 'C': Conjugate transpose, apply Q**H or P**H.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* If VECT = 'Q', the number of columns in the original
+* matrix reduced by ZGEBRD.
+* If VECT = 'P', the number of rows in the original
+* matrix reduced by ZGEBRD.
+* K >= 0.
+*
+* A (input) COMPLEX*16 array, dimension
+* (LDA,min(nq,K)) if VECT = 'Q'
+* (LDA,nq) if VECT = 'P'
+* The vectors which define the elementary reflectors H(i) and
+* G(i), whose products determine the matrices Q and P, as
+* returned by ZGEBRD.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If VECT = 'Q', LDA >= max(1,nq);
+* if VECT = 'P', LDA >= max(1,min(nq,K)).
+*
+* TAU (input) COMPLEX*16 array, dimension (min(nq,K))
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i) or G(i) which determines Q or P, as returned
+* by ZGEBRD in the array argument TAUQ or TAUP.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q
+* or P*C or P**H*C or C*P or C*P**H.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M);
+* if N = 0 or M = 0, LWORK >= 1.
+* For optimum performance LWORK >= max(1,N*NB) if SIDE = 'L',
+* and LWORK >= max(1,M*NB) if SIDE = 'R', where NB is the
+* optimal blocksize. (NB = 0 if M = 0 or N = 0.)
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL APPLYQ, LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZUNMLQ, ZUNMQR
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ APPLYQ = LSAME( VECT, 'Q' )
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q or P and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ NW = 0
+ END IF
+ IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -2
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -3
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -5
+ ELSE IF( K.LT.0 ) THEN
+ INFO = -6
+ ELSE IF( ( APPLYQ .AND. LDA.LT.MAX( 1, NQ ) ) .OR.
+ $ ( .NOT.APPLYQ .AND. LDA.LT.MAX( 1, MIN( NQ, K ) ) ) )
+ $ THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( NW.GT.0 ) THEN
+ IF( APPLYQ ) THEN
+ IF( LEFT ) THEN
+ NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M-1, N, M-1,
+ $ -1 )
+ ELSE
+ NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N-1, N-1,
+ $ -1 )
+ END IF
+ ELSE
+ IF( LEFT ) THEN
+ NB = ILAENV( 1, 'ZUNMLQ', SIDE // TRANS, M-1, N, M-1,
+ $ -1 )
+ ELSE
+ NB = ILAENV( 1, 'ZUNMLQ', SIDE // TRANS, M, N-1, N-1,
+ $ -1 )
+ END IF
+ END IF
+ LWKOPT = MAX( 1, NW*NB )
+ ELSE
+ LWKOPT = 1
+ END IF
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNMBR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 )
+ $ RETURN
+*
+ IF( APPLYQ ) THEN
+*
+* Apply Q
+*
+ IF( NQ.GE.K ) THEN
+*
+* Q was determined by a call to ZGEBRD with nq >= k
+*
+ CALL ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, IINFO )
+ ELSE IF( NQ.GT.1 ) THEN
+*
+* Q was determined by a call to ZGEBRD with nq < k
+*
+ IF( LEFT ) THEN
+ MI = M - 1
+ NI = N
+ I1 = 2
+ I2 = 1
+ ELSE
+ MI = M
+ NI = N - 1
+ I1 = 1
+ I2 = 2
+ END IF
+ CALL ZUNMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU,
+ $ C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+ END IF
+ ELSE
+*
+* Apply P
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'C'
+ ELSE
+ TRANST = 'N'
+ END IF
+ IF( NQ.GT.K ) THEN
+*
+* P was determined by a call to ZGEBRD with nq > k
+*
+ CALL ZUNMLQ( SIDE, TRANST, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, IINFO )
+ ELSE IF( NQ.GT.1 ) THEN
+*
+* P was determined by a call to ZGEBRD with nq <= k
+*
+ IF( LEFT ) THEN
+ MI = M - 1
+ NI = N
+ I1 = 2
+ I2 = 1
+ ELSE
+ MI = M
+ NI = N - 1
+ I1 = 1
+ I2 = 2
+ END IF
+ CALL ZUNMLQ( SIDE, TRANST, MI, NI, NQ-1, A( 1, 2 ), LDA,
+ $ TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+ END IF
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZUNMBR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunml2.f b/2.3-1/src/fortran/lapack/zunml2.f
new file mode 100644
index 00000000..cced4a77
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunml2.f
@@ -0,0 +1,205 @@
+ SUBROUTINE ZUNML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNML2 overwrites the general complex m-by-n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'C', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'C',
+*
+* where Q is a complex unitary matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(k)' . . . H(2)' H(1)'
+*
+* as returned by ZGELQF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'C': apply Q' (Conjugate transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) COMPLEX*16 array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* ZGELQF in the first k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGELQF.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the m-by-n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ COMPLEX*16 ONE
+ PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, IC, JC, MI, NI, NQ
+ COMPLEX*16 AII, TAUI
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLACGV, ZLARF
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNML2', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. NOTRAN .OR. .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) or H(i)' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H(i) or H(i)' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H(i) or H(i)'
+*
+ IF( NOTRAN ) THEN
+ TAUI = DCONJG( TAU( I ) )
+ ELSE
+ TAUI = TAU( I )
+ END IF
+ IF( I.LT.NQ )
+ $ CALL ZLACGV( NQ-I, A( I, I+1 ), LDA )
+ AII = A( I, I )
+ A( I, I ) = ONE
+ CALL ZLARF( SIDE, MI, NI, A( I, I ), LDA, TAUI, C( IC, JC ),
+ $ LDC, WORK )
+ A( I, I ) = AII
+ IF( I.LT.NQ )
+ $ CALL ZLACGV( NQ-I, A( I, I+1 ), LDA )
+ 10 CONTINUE
+ RETURN
+*
+* End of ZUNML2
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunmlq.f b/2.3-1/src/fortran/lapack/zunmlq.f
new file mode 100644
index 00000000..b1708757
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunmlq.f
@@ -0,0 +1,267 @@
+ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNMLQ overwrites the general complex M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'C': Q**H * C C * Q**H
+*
+* where Q is a complex unitary matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(k)' . . . H(2)' H(1)'
+*
+* as returned by ZGELQF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**H from the Left;
+* = 'R': apply Q or Q**H from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'C': Conjugate transpose, apply Q**H.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) COMPLEX*16 array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* ZGELQF in the first k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGELQF.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK,
+ $ LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNML2
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size. NB may be at most NBMAX, where NBMAX
+* is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'ZUNMLQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ LWKOPT = MAX( 1, NW )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNMLQ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZUNMLQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL ZUNML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+ $ IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'C'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL ZLARFT( 'Forward', 'Rowwise', NQ-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), T, LDT )
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H or H' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H or H'
+*
+ CALL ZLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, IB,
+ $ A( I, I ), LDA, T, LDT, C( IC, JC ), LDC, WORK,
+ $ LDWORK )
+ 10 CONTINUE
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZUNMLQ
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunmqr.f b/2.3-1/src/fortran/lapack/zunmqr.f
new file mode 100644
index 00000000..f9b1e98f
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunmqr.f
@@ -0,0 +1,260 @@
+ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNMQR overwrites the general complex M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'C': Q**H * C C * Q**H
+*
+* where Q is a complex unitary matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by ZGEQRF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**H from the Left;
+* = 'R': apply Q or Q**H from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'C': Conjugate transpose, apply Q**H.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* A (input) COMPLEX*16 array, dimension (LDA,K)
+* The i-th column must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* ZGEQRF in the first k columns of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A.
+* If SIDE = 'L', LDA >= max(1,M);
+* if SIDE = 'R', LDA >= max(1,N).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZGEQRF.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK,
+ $ LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNM2R
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = N
+ ELSE
+ NQ = N
+ NW = M
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+ INFO = -7
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -10
+ ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+*
+* Determine the block size. NB may be at most NBMAX, where NBMAX
+* is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ LWKOPT = MAX( 1, NW )*NB
+ WORK( 1 ) = LWKOPT
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNMQR', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN
+ WORK( 1 ) = 1
+ RETURN
+ END IF
+*
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQR', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+ $ IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ ELSE
+ MI = M
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i) H(i+1) . . . H(i+ib-1)
+*
+ CALL ZLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ),
+ $ LDA, TAU( I ), T, LDT )
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H or H' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H or H'
+*
+ CALL ZLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI,
+ $ IB, A( I, I ), LDA, T, LDT, C( IC, JC ), LDC,
+ $ WORK, LDWORK )
+ 10 CONTINUE
+ END IF
+ WORK( 1 ) = LWKOPT
+ RETURN
+*
+* End of ZUNMQR
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunmr3.f b/2.3-1/src/fortran/lapack/zunmr3.f
new file mode 100644
index 00000000..111c1c95
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunmr3.f
@@ -0,0 +1,212 @@
+ SUBROUTINE ZUNMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+ $ WORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, L, LDA, LDC, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNMR3 overwrites the general complex m by n matrix C with
+*
+* Q * C if SIDE = 'L' and TRANS = 'N', or
+*
+* Q'* C if SIDE = 'L' and TRANS = 'C', or
+*
+* C * Q if SIDE = 'R' and TRANS = 'N', or
+*
+* C * Q' if SIDE = 'R' and TRANS = 'C',
+*
+* where Q is a complex unitary matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by ZTZRZF. Q is of order m if SIDE = 'L' and of order n
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q' from the Left
+* = 'R': apply Q or Q' from the Right
+*
+* TRANS (input) CHARACTER*1
+* = 'N': apply Q (No transpose)
+* = 'C': apply Q' (Conjugate transpose)
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* L (input) INTEGER
+* The number of columns of the matrix A containing
+* the meaningful part of the Householder reflectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* A (input) COMPLEX*16 array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* ZTZRZF in the last k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZTZRZF.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the m-by-n matrix C.
+* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace) COMPLEX*16 array, dimension
+* (N) if SIDE = 'L',
+* (M) if SIDE = 'R'
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ LOGICAL LEFT, NOTRAN
+ INTEGER I, I1, I2, I3, IC, JA, JC, MI, NI, NQ
+ COMPLEX*16 TAUI
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ EXTERNAL LSAME
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARZ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DCONJG, MAX
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+*
+* NQ is the order of Q
+*
+ IF( LEFT ) THEN
+ NQ = M
+ ELSE
+ NQ = N
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( L.LT.0 .OR. ( LEFT .AND. ( L.GT.M ) ) .OR.
+ $ ( .NOT.LEFT .AND. ( L.GT.N ) ) ) THEN
+ INFO = -6
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ END IF
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNMR3', -INFO )
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+ $ RETURN
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN .OR. .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = 1
+ ELSE
+ I1 = K
+ I2 = 1
+ I3 = -1
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JA = M - L + 1
+ JC = 1
+ ELSE
+ MI = M
+ JA = N - L + 1
+ IC = 1
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IF( LEFT ) THEN
+*
+* H(i) or H(i)' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H(i) or H(i)' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H(i) or H(i)'
+*
+ IF( NOTRAN ) THEN
+ TAUI = TAU( I )
+ ELSE
+ TAUI = DCONJG( TAU( I ) )
+ END IF
+ CALL ZLARZ( SIDE, MI, NI, L, A( I, JA ), LDA, TAUI,
+ $ C( IC, JC ), LDC, WORK )
+*
+ 10 CONTINUE
+*
+ RETURN
+*
+* End of ZUNMR3
+*
+ END
diff --git a/2.3-1/src/fortran/lapack/zunmrz.f b/2.3-1/src/fortran/lapack/zunmrz.f
new file mode 100644
index 00000000..c7637050
--- /dev/null
+++ b/2.3-1/src/fortran/lapack/zunmrz.f
@@ -0,0 +1,296 @@
+ SUBROUTINE ZUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER SIDE, TRANS
+ INTEGER INFO, K, L, LDA, LDC, LWORK, M, N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZUNMRZ overwrites the general complex M-by-N matrix C with
+*
+* SIDE = 'L' SIDE = 'R'
+* TRANS = 'N': Q * C C * Q
+* TRANS = 'C': Q**H * C C * Q**H
+*
+* where Q is a complex unitary matrix defined as the product of k
+* elementary reflectors
+*
+* Q = H(1) H(2) . . . H(k)
+*
+* as returned by ZTZRZF. Q is of order M if SIDE = 'L' and of order N
+* if SIDE = 'R'.
+*
+* Arguments
+* =========
+*
+* SIDE (input) CHARACTER*1
+* = 'L': apply Q or Q**H from the Left;
+* = 'R': apply Q or Q**H from the Right.
+*
+* TRANS (input) CHARACTER*1
+* = 'N': No transpose, apply Q;
+* = 'C': Conjugate transpose, apply Q**H.
+*
+* M (input) INTEGER
+* The number of rows of the matrix C. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix C. N >= 0.
+*
+* K (input) INTEGER
+* The number of elementary reflectors whose product defines
+* the matrix Q.
+* If SIDE = 'L', M >= K >= 0;
+* if SIDE = 'R', N >= K >= 0.
+*
+* L (input) INTEGER
+* The number of columns of the matrix A containing
+* the meaningful part of the Householder reflectors.
+* If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+* A (input) COMPLEX*16 array, dimension
+* (LDA,M) if SIDE = 'L',
+* (LDA,N) if SIDE = 'R'
+* The i-th row must contain the vector which defines the
+* elementary reflector H(i), for i = 1,2,...,k, as returned by
+* ZTZRZF in the last k rows of its array argument A.
+* A is modified by the routine but restored on exit.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,K).
+*
+* TAU (input) COMPLEX*16 array, dimension (K)
+* TAU(i) must contain the scalar factor of the elementary
+* reflector H(i), as returned by ZTZRZF.
+*
+* C (input/output) COMPLEX*16 array, dimension (LDC,N)
+* On entry, the M-by-N matrix C.
+* On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
+*
+* LDC (input) INTEGER
+* The leading dimension of the array C. LDC >= max(1,M).
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* If SIDE = 'L', LWORK >= max(1,N);
+* if SIDE = 'R', LWORK >= max(1,M).
+* For optimum performance LWORK >= N*NB if SIDE = 'L', and
+* LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+* blocksize.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* INFO (output) INTEGER
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NBMAX, LDT
+ PARAMETER ( NBMAX = 64, LDT = NBMAX+1 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LEFT, LQUERY, NOTRAN
+ CHARACTER TRANST
+ INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JA, JC,
+ $ LDWORK, LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+* ..
+* .. Local Arrays ..
+ COMPLEX*16 T( LDT, NBMAX )
+* ..
+* .. External Functions ..
+ LOGICAL LSAME
+ INTEGER ILAENV
+ EXTERNAL LSAME, ILAENV
+* ..
+* .. External Subroutines ..
+ EXTERNAL XERBLA, ZLARZB, ZLARZT, ZUNMR3
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
+ INFO = 0
+ LEFT = LSAME( SIDE, 'L' )
+ NOTRAN = LSAME( TRANS, 'N' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
+* NQ is the order of Q and NW is the minimum dimension of WORK
+*
+ IF( LEFT ) THEN
+ NQ = M
+ NW = MAX( 1, N )
+ ELSE
+ NQ = N
+ NW = MAX( 1, M )
+ END IF
+ IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+ INFO = -1
+ ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN
+ INFO = -2
+ ELSE IF( M.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -4
+ ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+ INFO = -5
+ ELSE IF( L.LT.0 .OR. ( LEFT .AND. ( L.GT.M ) ) .OR.
+ $ ( .NOT.LEFT .AND. ( L.GT.N ) ) ) THEN
+ INFO = -6
+ ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+ INFO = -8
+ ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+ INFO = -11
+ END IF
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ LWKOPT = 1
+*
+* Determine the block size. NB may be at most NBMAX, where
+* NBMAX is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'ZUNMRQ', SIDE // TRANS, M, N,
+ $ K, -1 ) )
+ LWKOPT = NW*NB
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+ INFO = -13
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZUNMRZ', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+ RETURN
+ END IF
+*
+* Determine the block size. NB may be at most NBMAX, where NBMAX
+* is used to define the local array T.
+*
+ NB = MIN( NBMAX, ILAENV( 1, 'ZUNMRQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ NBMIN = 2
+ LDWORK = NW
+ IF( NB.GT.1 .AND. NB.LT.K ) THEN
+ IWS = NW*NB
+ IF( LWORK.LT.IWS ) THEN
+ NB = LWORK / LDWORK
+ NBMIN = MAX( 2, ILAENV( 2, 'ZUNMRQ', SIDE // TRANS, M, N, K,
+ $ -1 ) )
+ END IF
+ ELSE
+ IWS = NW
+ END IF
+*
+ IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+* Use unblocked code
+*
+ CALL ZUNMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+ $ WORK, IINFO )
+ ELSE
+*
+* Use blocked code
+*
+ IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+ $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+ I1 = 1
+ I2 = K
+ I3 = NB
+ ELSE
+ I1 = ( ( K-1 ) / NB )*NB + 1
+ I2 = 1
+ I3 = -NB
+ END IF
+*
+ IF( LEFT ) THEN
+ NI = N
+ JC = 1
+ JA = M - L + 1
+ ELSE
+ MI = M
+ IC = 1
+ JA = N - L + 1
+ END IF
+*
+ IF( NOTRAN ) THEN
+ TRANST = 'C'
+ ELSE
+ TRANST = 'N'
+ END IF
+*
+ DO 10 I = I1, I2, I3
+ IB = MIN( NB, K-I+1 )
+*
+* Form the triangular factor of the block reflector
+* H = H(i+ib-1) . . . H(i+1) H(i)
+*
+ CALL ZLARZT( 'Backward', 'Rowwise', L, IB, A( I, JA ), LDA,
+ $ TAU( I ), T, LDT )
+*
+ IF( LEFT ) THEN
+*
+* H or H' is applied to C(i:m,1:n)
+*
+ MI = M - I + 1
+ IC = I
+ ELSE
+*
+* H or H' is applied to C(1:m,i:n)
+*
+ NI = N - I + 1
+ JC = I
+ END IF
+*
+* Apply H or H'
+*
+ CALL ZLARZB( SIDE, TRANST, 'Backward', 'Rowwise', MI, NI,
+ $ IB, L, A( I, JA ), LDA, T, LDT, C( IC, JC ),
+ $ LDC, WORK, LDWORK )
+ 10 CONTINUE
+*
+ END IF
+*
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of ZUNMRZ
+*
+ END
diff --git a/2.3-1/tests/unit_tests/Moebius.dia.ref b/2.3-1/tests/unit_tests/Moebius.dia.ref
new file mode 100644
index 00000000..d331e043
--- /dev/null
+++ b/2.3-1/tests/unit_tests/Moebius.dia.ref
@@ -0,0 +1,3200 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/test305_Moebius/Moebius.sci",TMPDIR, SCI2CHOME+"/tests/unit_tests/test305_Moebius");
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ x(1:10)
+
+ 19.6
+ 18.645391
+ 15.872572
+ 11.546217
+ 6.0803399
+ 1.207D-15
+ - 6.1076856
+ - 11.648965
+ - 16.08034
+ - 18.961619
+
+ y(1:10)
+
+ 0.
+ 6.0582549
+ 11.532098
+ 15.892004
+ 18.713362
+ 19.717157
+ 18.797524
+ 16.033425
+ 11.683051
+ 6.1610035
+
+ z(1:10)
+
+ 0.
+ - 0.0625738
+ - 0.1236068
+ - 0.1815962
+ - 0.2351141
+ - 0.2828427
+ - 0.3236068
+ - 0.3564026
+ - 0.3804226
+ - 0.3950753
+
+ x1(1:10)
+
+ 2.4142136
+ 2.4063283
+ 2.3827967
+ 2.34399
+ 2.2905202
+ 2.2232306
+ 2.1431822
+ 2.0516376
+ 1.9500404
+ 1.8399929
+
+ y1(1:10)
+
+ 0.
+ 0.
+ 0.
+ 0.
+ 0.
+ 0.
+ 0.
+ 0.
+ 0.
+ 0.
+
+ z1(1:10)
+
+ 0.
+ 0.1243449
+ 0.2408768
+ 0.3422736
+ 0.4221640
+ 0.4755283
+ 0.4990134
+ 0.4911436
+ 0.4524135
+ 0.3852566
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "Moebius"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/Moebius/Moebius_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/Moebius/Moebius_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //the program construct moebius
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // and klein bottle surface from
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //http://www.metlin.org/mathematics/
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // topological-constructs/non-orientable-surfaces/
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ---------------------
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // --- Moebius strip ---
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ---------------------
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: num_points = 20;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: R = 20;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = -0.4;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = 0.4;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: step=(b-a)./(num_points-1);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: step1=(2*%pi)./num_points;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: s=a:step:b;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: t=0:step1:2*%pi;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: [S, T] = XYgrid(s, t);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: x = [R + (S.*cos(T./2))].*cos(T);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: y = [R + (S.*cos(T./2))].*sin(T);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z = S.*sin(T./2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp('x(1:10)')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(x(1:10))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp('y(1:10)')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(y(1:10))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp('z(1:10)')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z(1:10))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ENABLE/DISABLE PLOT
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // scf(0); surf(x, y, z);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // -----------------------
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // --- Klein Bottle II ---
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // -----------------------
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: num_points = 50;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //u = linspace (0, 2*(%pi), num_points);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //v = linspace (0, 2*(%pi), num_points);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: step_u = (2*%pi)./num_points
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: u = 0:step_u:2*%pi;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: v = u;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: [U,V] = XYgrid(u,v);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: x1 = cos(U).*(cos(U./2).*(sqrt(2)+cos(V))+(sin(U./2).*sin(
+ V).*cos(V)));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: y1 = sin(U).*(cos(U./2).*(sqrt(2)+cos(V))+(sin(U./2).*sin(
+ V).*cos(V)));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z1 = -1.*sin(U./2).*(sqrt(2)+cos(V))+cos(U./2).*sin(V).*co
+ s(V);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp('x1(1:10)');
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(x1(1:10));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp('y1(1:10)')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(y1(1:10))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp('z1(1:10)')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z1(1:10))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ENABLE/DISABLE PLOT
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // scf(1) ;surf(x1, y1, z1)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Start translation of function "XYgrid"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/XYgrid/XYgrid_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/XYgrid/XYgrid_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/d2d2XYgridd2d2.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: n = length(x);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: m = length(y);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: X=zeros(m,n);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: Y=zeros(m,n);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: for k=1:m
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: X(k,1:n)=x;
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: end
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: for h=1:n
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: Y(1:m,h)=y';
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: end
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: //SCI2C: DEFAULT_PRECISION= DOUBLE !
+! !
+! SCI2C: !
+! !
+! SCI2C: function Moebius() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double num_points = 20; !
+! !
+! !
+! !
+! double R = 20; !
+! !
+! !
+! !
+! double a = -0.4; !
+! !
+! !
+! !
+! double b = 0.4; !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double __temp2; !
+! !
+! !
+! !
+! double step; !
+! !
+! !
+! !
+! double __temp3; !
+! !
+! !
+! !
+! double step1; !
+! !
+! !
+! !
+! double* s = NULL; !
+! !
+! int __sSize[2]; !
+! !
+! !
+! !
+! double __temp4; !
+! !
+! !
+! !
+! double* t = NULL; !
+! !
+! int __tSize[2]; !
+! !
+! !
+! !
+! double* S = NULL; !
+! !
+! int __SSize[2]; !
+! !
+! !
+! !
+! double* T = NULL; !
+! !
+! int __TSize[2]; !
+! !
+! !
+! !
+! double* __temp5 = NULL; !
+! !
+! int ____temp5Size[2]; !
+! !
+! !
+! !
+! double* __temp6 = NULL; !
+! !
+! int ____temp6Size[2]; !
+! !
+! !
+! !
+! double* __temp7 = NULL; !
+! !
+! int ____temp7Size[2]; !
+! !
+! !
+! !
+! double* __temp8 = NULL; !
+! !
+! int ____temp8Size[2]; !
+! !
+! !
+! !
+! double* __temp9 = NULL; !
+! !
+! int ____temp9Size[2]; !
+! !
+! !
+! !
+! double* x = NULL; !
+! !
+! int __xSize[2]; !
+! !
+! !
+! !
+! double* __temp10 = NULL; !
+! !
+! int ____temp10Size[2]; !
+! !
+! !
+! !
+! double* __temp11 = NULL; !
+! !
+! int ____temp11Size[2]; !
+! !
+! !
+! !
+! double* __temp12 = NULL; !
+! !
+! int ____temp12Size[2]; !
+! !
+! !
+! !
+! double* __temp13 = NULL; !
+! !
+! int ____temp13Size[2]; !
+! !
+! !
+! !
+! double* __temp14 = NULL; !
+! !
+! int ____temp14Size[2]; !
+! !
+! !
+! !
+! double* y = NULL; !
+! !
+! int __ySize[2]; !
+! !
+! !
+! !
+! double* __temp15 = NULL; !
+! !
+! int ____temp15Size[2]; !
+! !
+! !
+! !
+! double* __temp16 = NULL; !
+! !
+! int ____temp16Size[2]; !
+! !
+! !
+! !
+! double* z = NULL; !
+! !
+! int __zSize[2]; !
+! !
+! !
+! !
+! char __temp17[1*8] = {"x(1:10)"}; !
+! !
+! int ____temp17Size[2] = {1,8}; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[1 * 10]; !
+! !
+! int ____temp18Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp19[10 * 1]; !
+! !
+! int ____temp19Size[2] = {10, 1};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! char __temp20[1*8] = {"y(1:10)"}; !
+! !
+! int ____temp20Size[2] = {1,8}; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp21[1 * 10]; !
+! !
+! int ____temp21Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp22[10 * 1]; !
+! !
+! int ____temp22Size[2] = {10, 1};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! char __temp23[1*8] = {"z(1:10)"}; !
+! !
+! int ____temp23Size[2] = {1,8}; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp24[1 * 10]; !
+! !
+! int ____temp24Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp25[10 * 1]; !
+! !
+! int ____temp25Size[2] = {10, 1};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp26; !
+! !
+! !
+! !
+! double step_u; !
+! !
+! !
+! !
+! double __temp27; !
+! !
+! !
+! !
+! double* u = NULL; !
+! !
+! int __uSize[2]; !
+! !
+! !
+! !
+! double* v = NULL; !
+! !
+! int __vSize[2]; !
+! !
+! !
+! !
+! double* U = NULL; !
+! !
+! int __USize[2]; !
+! !
+! !
+! !
+! double* V = NULL; !
+! !
+! int __VSize[2]; !
+! !
+! !
+! !
+! double* __temp28 = NULL; !
+! !
+! int ____temp28Size[2]; !
+! !
+! !
+! !
+! double* __temp29 = NULL; !
+! !
+! int ____temp29Size[2]; !
+! !
+! !
+! !
+! double* __temp30 = NULL; !
+! !
+! int ____temp30Size[2]; !
+! !
+! !
+! !
+! double __temp31; !
+! !
+! !
+! !
+! double* __temp32 = NULL; !
+! !
+! int ____temp32Size[2]; !
+! !
+! !
+! !
+! double* __temp33 = NULL; !
+! !
+! int ____temp33Size[2]; !
+! !
+! !
+! !
+! double* __temp34 = NULL; !
+! !
+! int ____temp34Size[2]; !
+! !
+! !
+! !
+! double* __temp35 = NULL; !
+! !
+! int ____temp35Size[2]; !
+! !
+! !
+! !
+! double* __temp36 = NULL; !
+! !
+! int ____temp36Size[2]; !
+! !
+! !
+! !
+! double* __temp37 = NULL; !
+! !
+! int ____temp37Size[2]; !
+! !
+! !
+! !
+! double* __temp38 = NULL; !
+! !
+! int ____temp38Size[2]; !
+! !
+! !
+! !
+! double* __temp39 = NULL; !
+! !
+! int ____temp39Size[2]; !
+! !
+! !
+! !
+! double* __temp40 = NULL; !
+! !
+! int ____temp40Size[2]; !
+! !
+! !
+! !
+! double* __temp41 = NULL; !
+! !
+! int ____temp41Size[2]; !
+! !
+! !
+! !
+! double* x1 = NULL; !
+! !
+! int __x1Size[2]; !
+! !
+! !
+! !
+! double* __temp42 = NULL; !
+! !
+! int ____temp42Size[2]; !
+! !
+! !
+! !
+! double* __temp43 = NULL; !
+! !
+! int ____temp43Size[2]; !
+! !
+! !
+! !
+! double* __temp44 = NULL; !
+! !
+! int ____temp44Size[2]; !
+! !
+! !
+! !
+! double __temp45; !
+! !
+! !
+! !
+! double* __temp46 = NULL; !
+! !
+! int ____temp46Size[2]; !
+! !
+! !
+! !
+! double* __temp47 = NULL; !
+! !
+! int ____temp47Size[2]; !
+! !
+! !
+! !
+! double* __temp48 = NULL; !
+! !
+! int ____temp48Size[2]; !
+! !
+! !
+! !
+! double* __temp49 = NULL; !
+! !
+! int ____temp49Size[2]; !
+! !
+! !
+! !
+! double* __temp50 = NULL; !
+! !
+! int ____temp50Size[2]; !
+! !
+! !
+! !
+! double* __temp51 = NULL; !
+! !
+! int ____temp51Size[2]; !
+! !
+! !
+! !
+! double* __temp52 = NULL; !
+! !
+! int ____temp52Size[2]; !
+! !
+! !
+! !
+! double* __temp53 = NULL; !
+! !
+! int ____temp53Size[2]; !
+! !
+! !
+! !
+! double* __temp54 = NULL; !
+! !
+! int ____temp54Size[2]; !
+! !
+! !
+! !
+! double* __temp55 = NULL; !
+! !
+! int ____temp55Size[2]; !
+! !
+! !
+! !
+! double* y1 = NULL; !
+! !
+! int __y1Size[2]; !
+! !
+! !
+! !
+! double* __temp56 = NULL; !
+! !
+! int ____temp56Size[2]; !
+! !
+! !
+! !
+! double* __temp57 = NULL; !
+! !
+! int ____temp57Size[2]; !
+! !
+! !
+! !
+! double* __temp58 = NULL; !
+! !
+! int ____temp58Size[2]; !
+! !
+! !
+! !
+! double __temp59; !
+! !
+! !
+! !
+! double* __temp60 = NULL; !
+! !
+! int ____temp60Size[2]; !
+! !
+! !
+! !
+! double* __temp61 = NULL; !
+! !
+! int ____temp61Size[2]; !
+! !
+! !
+! !
+! double* __temp62 = NULL; !
+! !
+! int ____temp62Size[2]; !
+! !
+! !
+! !
+! double* __temp63 = NULL; !
+! !
+! int ____temp63Size[2]; !
+! !
+! !
+! !
+! double* __temp64 = NULL; !
+! !
+! int ____temp64Size[2]; !
+! !
+! !
+! !
+! double* __temp65 = NULL; !
+! !
+! int ____temp65Size[2]; !
+! !
+! !
+! !
+! double* __temp66 = NULL; !
+! !
+! int ____temp66Size[2]; !
+! !
+! !
+! !
+! double* __temp67 = NULL; !
+! !
+! int ____temp67Size[2]; !
+! !
+! !
+! !
+! double* __temp68 = NULL; !
+! !
+! int ____temp68Size[2]; !
+! !
+! !
+! !
+! double* __temp69 = NULL; !
+! !
+! int ____temp69Size[2]; !
+! !
+! !
+! !
+! double* z1 = NULL; !
+! !
+! int __z1Size[2]; !
+! !
+! !
+! !
+! char __temp70[1*9] = {"x1(1:10)"}; !
+! !
+! int ____temp70Size[2] = {1,9}; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp71[1 * 10]; !
+! !
+! int ____temp71Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp72[10 * 1]; !
+! !
+! int ____temp72Size[2] = {10, 1};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! char __temp73[1*9] = {"y1(1:10)"}; !
+! !
+! int ____temp73Size[2] = {1,9}; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp74[1 * 10]; !
+! !
+! int ____temp74Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp75[10 * 1]; !
+! !
+! int ____temp75Size[2] = {10, 1};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! char __temp76[1*9] = {"z1(1:10)"}; !
+! !
+! int ____temp76Size[2] = {1,9}; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp77[1 * 10]; !
+! !
+! int ____temp77Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp78[10 * 1]; !
+! !
+! int ____temp78Size[2] = {10, 1};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //the program construct moebius !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // and klein bottle surface from !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //http://www.metlin.org/mathematics/ !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // topological-constructs/non-orientable-surfaces/ !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // --------------------- !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // --- Moebius strip --- !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // --------------------- !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: num_points = 20; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! num_points = d0OpEquald0(20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: R = 20; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! R = d0OpEquald0(20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = -0.4; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = 0.4; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! b = d0OpEquald0(0.4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: step=(b-a)./(num_points-1); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0d0OpMinusd0(b,a); !
+! !
+! __temp2 = d0d0OpMinusd0(num_points,1); !
+! !
+! step = d0d0OpDotSlashd0(__temp1,__temp2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: step1=(2*%pi)./num_points; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp3 = d0d0OpStard0(2,SCI2C_PI); !
+! !
+! step1 = d0d0OpDotSlashd0(__temp3,num_points); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: s=a:step:b; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __sSize[0]=1; !
+! !
+! __sSize[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! s = (double*) realloc(s,(1)*(d0absd0(d0floord0(((0.8/d0reald0(step)!
+! )+1))))*sizeof(double)); !
+! !
+! d0d0d0OpColond2(a,step,b,s); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: t=0:step1:2*%pi; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp4 = d0d0OpStard0(2,SCI2C_PI); !
+! !
+! __tSize[0]=1; !
+! !
+! __tSize[1]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0(step1!
+! ))+1))); !
+! !
+! t = (double*) realloc(t,(1)*(d0absd0(d0floord0((((d0reald0(__temp4)!
+! -0)/d0reald0(step1))+1))))*sizeof(double)); !
+! !
+! d0d0d0OpColond2(0,step1,__temp4,t); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: [S, T] = XYgrid(s, t); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __SSize[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0(step1!
+! ))+1))); !
+! !
+! __SSize[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! S = (double*) realloc(S,(d0absd0(d0floord0((((d0reald0(__temp4)-0)/!
+! d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0reald0(step))+1!
+! ))))*sizeof(double)); !
+! !
+! __TSize[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0(step1!
+! ))+1))); !
+! !
+! __TSize[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! T = (double*) realloc(T,(d0absd0(d0floord0((((d0reald0(__temp4)-0)/!
+! d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0reald0(step))+1!
+! ))))*sizeof(double)); !
+! !
+! d2d2XYgridd2d2(s, __sSize,t, __tSize,S,T); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: x = [R + (S.*cos(T./2))].*cos(T); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ____temp5Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0!
+! (step1))+1))); !
+! !
+! ____temp5Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp5 = (double*) realloc(__temp5,(d0absd0(d0floord0((((d0reald0(!
+! __temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0rea!
+! ld0(step))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(T, __TSize,2,__temp5); !
+! !
+! ____temp6Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0!
+! (step1))+1))); !
+! !
+! ____temp6Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp6 = (double*) realloc(__temp6,(d0absd0(d0floord0((((d0reald0(!
+! __temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0rea!
+! ld0(step))+1))))*sizeof(double)); !
+! !
+! d2cosd2(__temp5, ____temp5Size,__temp6); !
+! !
+! ____temp7Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0!
+! (step1))+1))); !
+! !
+! ____temp7Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp7 = (double*) realloc(__temp7,(d0absd0(d0floord0((((d0reald0(!
+! __temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0rea!
+! ld0(step))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(S, __SSize,__temp6, ____temp6Size,__temp7); !
+! !
+! ____temp8Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0!
+! (step1))+1))); !
+! !
+! ____temp8Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp8 = (double*) realloc(__temp8,(d0absd0(d0floord0((((d0reald0(!
+! __temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0rea!
+! ld0(step))+1))))*sizeof(double)); !
+! !
+! d0d2OpPlusd2(R,__temp7, ____temp7Size,__temp8); !
+! !
+! ____temp9Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0!
+! (step1))+1))); !
+! !
+! ____temp9Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp9 = (double*) realloc(__temp9,(d0absd0(d0floord0((((d0reald0(!
+! __temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0rea!
+! ld0(step))+1))))*sizeof(double)); !
+! !
+! d2cosd2(T, __TSize,__temp9); !
+! !
+! __xSize[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0(step1!
+! ))+1))); !
+! !
+! __xSize[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! x = (double*) realloc(x,(d0absd0(d0floord0((((d0reald0(__temp4)-0)/!
+! d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0reald0(step))+1!
+! ))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp8, ____temp8Size,__temp9, ____temp9Size,x);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: y = [R + (S.*cos(T./2))].*sin(T); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ____temp10Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp10Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp10 = (double*) realloc(__temp10,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(T, __TSize,2,__temp10); !
+! !
+! ____temp11Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp11Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp11 = (double*) realloc(__temp11,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d2cosd2(__temp10, ____temp10Size,__temp11); !
+! !
+! ____temp12Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp12Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp12 = (double*) realloc(__temp12,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(S, __SSize,__temp11, ____temp11Size,__temp12); !
+! !
+! ____temp13Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp13Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp13 = (double*) realloc(__temp13,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d0d2OpPlusd2(R,__temp12, ____temp12Size,__temp13); !
+! !
+! ____temp14Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp14Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp14 = (double*) realloc(__temp14,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d2sind2(T, __TSize,__temp14); !
+! !
+! __ySize[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0(step1!
+! ))+1))); !
+! !
+! __ySize[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! y = (double*) realloc(y,(d0absd0(d0floord0((((d0reald0(__temp4)-0)/!
+! d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0reald0(step))+1!
+! ))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp13, ____temp13Size,__temp14, ____temp14Size!
+! ,y); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z = S.*sin(T./2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ____temp15Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp15Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp15 = (double*) realloc(__temp15,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(T, __TSize,2,__temp15); !
+! !
+! ____temp16Size[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald!
+! 0(step1))+1))); !
+! !
+! ____temp16Size[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! __temp16 = (double*) realloc(__temp16,(d0absd0(d0floord0((((d0reald!
+! 0(__temp4)-0)/d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0r!
+! eald0(step))+1))))*sizeof(double)); !
+! !
+! d2sind2(__temp15, ____temp15Size,__temp16); !
+! !
+! __zSize[0]=d0absd0(d0floord0((((d0reald0(__temp4)-0)/d0reald0(step1!
+! ))+1))); !
+! !
+! __zSize[1]=d0absd0(d0floord0(((0.8/d0reald0(step))+1))); !
+! !
+! z = (double*) realloc(z,(d0absd0(d0floord0((((d0reald0(__temp4)-0)/!
+! d0reald0(step1))+1))))*(d0absd0(d0floord0(((0.8/d0reald0(step))+1!
+! ))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(S, __SSize,__temp16, ____temp16Size,z); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp('x(1:10)') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = g2dispd0(__temp17, ____temp17Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(x(1:10)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(1,10,__temp18); !
+! !
+! d2d2OpExtd2(x, __xSize,__temp18, ____temp18Size,__temp19); !
+! !
+! ans2 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp('y(1:10)') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = g2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(y(1:10)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(1,10,__temp21); !
+! !
+! d2d2OpExtd2(y, __ySize,__temp21, ____temp21Size,__temp22); !
+! !
+! ans4 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp('z(1:10)') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = g2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z(1:10)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(1,10,__temp24); !
+! !
+! d2d2OpExtd2(z, __zSize,__temp24, ____temp24Size,__temp25); !
+! !
+! ans6 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ENABLE/DISABLE PLOT !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // scf(0); surf(x, y, z); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ----------------------- !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // --- Klein Bottle II --- !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ----------------------- !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: num_points = 50; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! num_points = d0OpEquald0(50); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //u = linspace (0, 2*(%pi), num_points); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //v = linspace (0, 2*(%pi), num_points); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: step_u = (2*%pi)./num_points !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = d0d0OpStard0(2,SCI2C_PI); !
+! !
+! step_u = d0d0OpDotSlashd0(__temp26,num_points); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: u = 0:step_u:2*%pi; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp27 = d0d0OpStard0(2,SCI2C_PI); !
+! !
+! __uSize[0]=1; !
+! !
+! __uSize[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(step!
+! _u))+1))); !
+! !
+! u = (double*) realloc(u,(1)*(d0absd0(d0floord0((((d0reald0(__temp27!
+! )-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d0d0d0OpColond2(0,step_u,__temp27,u); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: v = u; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __vSize[0]=1; !
+! !
+! __vSize[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(step!
+! _u))+1))); !
+! !
+! v = (double*) realloc(v,(1)*(d0absd0(d0floord0((((d0reald0(__temp27!
+! )-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2OpEquald2(u, __uSize,v); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: [U,V] = XYgrid(u,v); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __USize[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(step!
+! _u))+1))); !
+! !
+! __USize[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(step!
+! _u))+1))); !
+! !
+! U = (double*) realloc(U,(d0absd0(d0floord0((((d0reald0(__temp27)-0)!
+! /d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0reald0(__temp27)!
+! -0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! __VSize[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(step!
+! _u))+1))); !
+! !
+! __VSize[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(step!
+! _u))+1))); !
+! !
+! V = (double*) realloc(V,(d0absd0(d0floord0((((d0reald0(__temp27)-0)!
+! /d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0reald0(__temp27)!
+! -0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2XYgridd2d2(u, __uSize,v, __vSize,U,V); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: x1 = cos(U).*(cos(U./2).*(sqrt(2)+cos(V))+(sin(U./2).*sin(!
+! V).*cos(V))); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ____temp28Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp28Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp28 = (double*) realloc(__temp28,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(U, __USize,__temp28); !
+! !
+! ____temp29Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp29Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp29 = (double*) realloc(__temp29,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(U, __USize,2,__temp29); !
+! !
+! ____temp30Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp30Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp30 = (double*) realloc(__temp30,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(__temp29, ____temp29Size,__temp30); !
+! !
+! __temp31 = d0sqrtd0(2); !
+! !
+! ____temp32Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp32Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp32 = (double*) realloc(__temp32,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(V, __VSize,__temp32); !
+! !
+! ____temp33Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp33Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp33 = (double*) realloc(__temp33,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d0d2OpPlusd2(__temp31,__temp32, ____temp32Size,__temp33); !
+! !
+! ____temp34Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp34Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp34 = (double*) realloc(__temp34,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp30, ____temp30Size,__temp33, ____temp33Size!
+! ,__temp34); !
+! !
+! ____temp35Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp35Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp35 = (double*) realloc(__temp35,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(U, __USize,2,__temp35); !
+! !
+! ____temp36Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp36Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp36 = (double*) realloc(__temp36,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(__temp35, ____temp35Size,__temp36); !
+! !
+! ____temp37Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp37Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp37 = (double*) realloc(__temp37,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(V, __VSize,__temp37); !
+! !
+! ____temp38Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp38Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp38 = (double*) realloc(__temp38,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp36, ____temp36Size,__temp37, ____temp37Size!
+! ,__temp38); !
+! !
+! ____temp39Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp39Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp39 = (double*) realloc(__temp39,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(V, __VSize,__temp39); !
+! !
+! ____temp40Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp40Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp40 = (double*) realloc(__temp40,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp38, ____temp38Size,__temp39, ____temp39Size!
+! ,__temp40); !
+! !
+! ____temp41Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp41Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp41 = (double*) realloc(__temp41,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpPlusd2(__temp34, ____temp34Size,__temp40, ____temp40Size,__!
+! temp41); !
+! !
+! __x1Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(ste!
+! p_u))+1))); !
+! !
+! __x1Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(ste!
+! p_u))+1))); !
+! !
+! x1 = (double*) realloc(x1,(d0absd0(d0floord0((((d0reald0(__temp27)-!
+! 0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0reald0(__temp2!
+! 7)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp28, ____temp28Size,__temp41, ____temp41Size!
+! ,x1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: y1 = sin(U).*(cos(U./2).*(sqrt(2)+cos(V))+(sin(U./2).*sin(!
+! V).*cos(V))); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ____temp42Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp42Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp42 = (double*) realloc(__temp42,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(U, __USize,__temp42); !
+! !
+! ____temp43Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp43Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp43 = (double*) realloc(__temp43,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(U, __USize,2,__temp43); !
+! !
+! ____temp44Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp44Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp44 = (double*) realloc(__temp44,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(__temp43, ____temp43Size,__temp44); !
+! !
+! __temp45 = d0sqrtd0(2); !
+! !
+! ____temp46Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp46Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp46 = (double*) realloc(__temp46,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(V, __VSize,__temp46); !
+! !
+! ____temp47Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp47Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp47 = (double*) realloc(__temp47,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d0d2OpPlusd2(__temp45,__temp46, ____temp46Size,__temp47); !
+! !
+! ____temp48Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp48Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp48 = (double*) realloc(__temp48,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp44, ____temp44Size,__temp47, ____temp47Size!
+! ,__temp48); !
+! !
+! ____temp49Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp49Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp49 = (double*) realloc(__temp49,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(U, __USize,2,__temp49); !
+! !
+! ____temp50Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp50Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp50 = (double*) realloc(__temp50,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(__temp49, ____temp49Size,__temp50); !
+! !
+! ____temp51Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp51Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp51 = (double*) realloc(__temp51,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(V, __VSize,__temp51); !
+! !
+! ____temp52Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp52Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp52 = (double*) realloc(__temp52,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp50, ____temp50Size,__temp51, ____temp51Size!
+! ,__temp52); !
+! !
+! ____temp53Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp53Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp53 = (double*) realloc(__temp53,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(V, __VSize,__temp53); !
+! !
+! ____temp54Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp54Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp54 = (double*) realloc(__temp54,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp52, ____temp52Size,__temp53, ____temp53Size!
+! ,__temp54); !
+! !
+! ____temp55Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp55Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp55 = (double*) realloc(__temp55,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpPlusd2(__temp48, ____temp48Size,__temp54, ____temp54Size,__!
+! temp55); !
+! !
+! __y1Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(ste!
+! p_u))+1))); !
+! !
+! __y1Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(ste!
+! p_u))+1))); !
+! !
+! y1 = (double*) realloc(y1,(d0absd0(d0floord0((((d0reald0(__temp27)-!
+! 0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0reald0(__temp2!
+! 7)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp42, ____temp42Size,__temp55, ____temp55Size!
+! ,y1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z1 = -1.*sin(U./2).*(sqrt(2)+cos(V))+cos(U./2).*sin(V).*co!
+! s(V); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ____temp56Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp56Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp56 = (double*) realloc(__temp56,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(U, __USize,2,__temp56); !
+! !
+! ____temp57Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp57Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp57 = (double*) realloc(__temp57,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(__temp56, ____temp56Size,__temp57); !
+! !
+! ____temp58Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp58Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp58 = (double*) realloc(__temp58,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d0d2OpStard2(1,__temp57, ____temp57Size,__temp58); !
+! !
+! __temp59 = d0sqrtd0(2); !
+! !
+! ____temp60Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp60Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp60 = (double*) realloc(__temp60,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(V, __VSize,__temp60); !
+! !
+! ____temp61Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp61Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp61 = (double*) realloc(__temp61,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d0d2OpPlusd2(__temp59,__temp60, ____temp60Size,__temp61); !
+! !
+! ____temp62Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp62Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp62 = (double*) realloc(__temp62,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp58, ____temp58Size,__temp61, ____temp61Size!
+! ,__temp62); !
+! !
+! ____temp63Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp63Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp63 = (double*) realloc(__temp63,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2OpMinusd2(__temp62, ____temp62Size,__temp63); !
+! !
+! ____temp64Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp64Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp64 = (double*) realloc(__temp64,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d0OpDotSlashd2(U, __USize,2,__temp64); !
+! !
+! ____temp65Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp65Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp65 = (double*) realloc(__temp65,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(__temp64, ____temp64Size,__temp65); !
+! !
+! ____temp66Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp66Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp66 = (double*) realloc(__temp66,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2sind2(V, __VSize,__temp66); !
+! !
+! ____temp67Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp67Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp67 = (double*) realloc(__temp67,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp65, ____temp65Size,__temp66, ____temp66Size!
+! ,__temp67); !
+! !
+! ____temp68Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp68Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp68 = (double*) realloc(__temp68,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2cosd2(V, __VSize,__temp68); !
+! !
+! ____temp69Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! ____temp69Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0real!
+! d0(step_u))+1))); !
+! !
+! __temp69 = (double*) realloc(__temp69,(d0absd0(d0floord0((((d0reald!
+! 0(__temp27)-0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0re!
+! ald0(__temp27)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpDotStard2(__temp67, ____temp67Size,__temp68, ____temp68Size!
+! ,__temp69); !
+! !
+! __z1Size[0]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(ste!
+! p_u))+1))); !
+! !
+! __z1Size[1]=d0absd0(d0floord0((((d0reald0(__temp27)-0)/d0reald0(ste!
+! p_u))+1))); !
+! !
+! z1 = (double*) realloc(z1,(d0absd0(d0floord0((((d0reald0(__temp27)-!
+! 0)/d0reald0(step_u))+1))))*(d0absd0(d0floord0((((d0reald0(__temp2!
+! 7)-0)/d0reald0(step_u))+1))))*sizeof(double)); !
+! !
+! d2d2OpPlusd2(__temp63, ____temp63Size,__temp69, ____temp69Size,z1!
+! ); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp('x1(1:10)'); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans7 = g2dispd0(__temp70, ____temp70Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(x1(1:10)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(1,10,__temp71); !
+! !
+! d2d2OpExtd2(x1, __x1Size,__temp71, ____temp71Size,__temp72); !
+! !
+! ans8 = d2dispd0(__temp72, ____temp72Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp('y1(1:10)') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = g2dispd0(__temp73, ____temp73Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(y1(1:10)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(1,10,__temp74); !
+! !
+! d2d2OpExtd2(y1, __y1Size,__temp74, ____temp74Size,__temp75); !
+! !
+! ans10 = d2dispd0(__temp75, ____temp75Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp('z1(1:10)') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans11 = g2dispd0(__temp76, ____temp76Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z1(1:10)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(1,10,__temp77); !
+! !
+! d2d2OpExtd2(z1, __z1Size,__temp77, ____temp77Size,__temp78); !
+! !
+! ans12 = d2dispd0(__temp78, ____temp78Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ENABLE/DISABLE PLOT !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // scf(1) ;surf(x1, y1, z1) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! free(s); !
+! !
+! free(t); !
+! !
+! free(S); !
+! !
+! free(T); !
+! !
+! free(__temp5); !
+! !
+! free(__temp6); !
+! !
+! free(__temp7); !
+! !
+! free(__temp8); !
+! !
+! free(__temp9); !
+! !
+! free(x); !
+! !
+! free(__temp10); !
+! !
+! free(__temp11); !
+! !
+! free(__temp12); !
+! !
+! free(__temp13); !
+! !
+! free(__temp14); !
+! !
+! free(y); !
+! !
+! free(__temp15); !
+! !
+! free(__temp16); !
+! !
+! free(z); !
+! !
+! free(u); !
+! !
+! free(v); !
+! !
+! free(U); !
+! !
+! free(V); !
+! !
+! free(__temp28); !
+! !
+! free(__temp29); !
+! !
+! free(__temp30); !
+! !
+! free(__temp32); !
+! !
+! free(__temp33); !
+! !
+! free(__temp34); !
+! !
+! free(__temp35); !
+! !
+! free(__temp36); !
+! !
+! free(__temp37); !
+! !
+! free(__temp38); !
+! !
+! free(__temp39); !
+! !
+! free(__temp40); !
+! !
+! free(__temp41); !
+! !
+! free(x1); !
+! !
+! free(__temp42); !
+! !
+! free(__temp43); !
+! !
+! free(__temp44); !
+! !
+! free(__temp46); !
+! !
+! free(__temp47); !
+! !
+! free(__temp48); !
+! !
+! free(__temp49); !
+! !
+! free(__temp50); !
+! !
+! free(__temp51); !
+! !
+! free(__temp52); !
+! !
+! free(__temp53); !
+! !
+! free(__temp54); !
+! !
+! free(__temp55); !
+! !
+! free(y1); !
+! !
+! free(__temp56); !
+! !
+! free(__temp57); !
+! !
+! free(__temp58); !
+! !
+! free(__temp60); !
+! !
+! free(__temp61); !
+! !
+! free(__temp62); !
+! !
+! free(__temp63); !
+! !
+! free(__temp64); !
+! !
+! free(__temp65); !
+! !
+! free(__temp66); !
+! !
+! free(__temp67); !
+! !
+! free(__temp68); !
+! !
+! free(__temp69); !
+! !
+! free(z1); !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/Moebius.tst b/2.3-1/tests/unit_tests/Moebius.tst
new file mode 100644
index 00000000..3c9e382d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/Moebius.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/test305_Moebius/Moebius.sci",TMPDIR, SCI2CHOME+"/tests/unit_tests/test305_Moebius");
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Convol.sci b/2.3-1/tests/unit_tests/double/test_Convol.sci
new file mode 100644
index 00000000..a7b1cc07
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Convol.sci
@@ -0,0 +1,124 @@
+function test_Convol()
+
+
+ disp(convol(4,4.5)); //d0d0Convold0
+ disp(convol(%i + 3 ,2*%i + 4)); // z0z0Convolz0
+
+
+ a = [1 2 3 4 5 %e %pi];
+ b = [1 7 8 5 1 6 ];
+
+ disp(convol(a,b));
+ disp(convol(b,b)); // d2d2Convold2
+
+
+ disp(convol(4,a)); //d0d2Convold2
+ disp(convol(a,4)); // d2d0Convold2
+
+
+ c = [1 2 3 4 5 %e %pi] * %i;
+ d = [1 7 8 5 1 6 ] * %i;
+
+ disp(convol(c,d));
+ disp(convol(d,d)); // z2z2Convolz2
+
+
+ disp(convol(%i + 3 ,c)); // z0z2Convolz2
+ disp(convol(d ,2*%i + 4)); // z2z0Convolz2
+
+// with 2 outputs
+
+
+// [zz yy] = convol(4,4.5); //d0d0Convold0d0
+// disp( zz );
+ //disp( yy );
+
+// [xx ww ] = convol(%i + 3 ,2*%i + 4); // z0z0Convolz0z0
+// disp( xx);
+// disp( ww );
+
+// [vv uu] =convol(a,b);
+// disp( vv); // d2d2Convold2d2
+// disp( uu );
+
+
+// [tt ss] = convol(4,a); //d0d2Convold2d2
+// disp( tt);
+// disp( ss );
+
+
+
+// [rr qq] = convol(a,4); // d2d0Convold2d2
+// disp( rr );
+// disp( qq );
+
+
+
+// with 2 outputs
+
+// [pp oo] =convol(c,d);
+// disp( pp); // z2z2Convolz2z2
+// disp( oo );
+
+
+// [mm nn] = convol(4,c); //z0z2Convolz2z2
+// disp( mm);
+// disp( nn );
+
+
+
+// [ll kk] = convol(c,4); // z2z0Convolz2z2
+// disp( ll );
+ //disp( kk);
+
+
+// three input i
+
+// with 2 outputs
+
+
+ //[zzz yyy] = convol(4,4.5,18); //d0d0d0Convold0d0
+ //disp( zzz );
+ //disp( yyy );
+
+ //[xxx www ] = convol(%i + 3 ,2*%i + 4,%i); // z0z0z0Convolz0z0
+ //disp( xxx);
+ //disp( www );
+
+// bbis = [4 7 9 10];
+
+ //[vvv uuu] =convol(a,b,bbis);
+// disp( vvv); // d2d2d2Convold2d2
+// disp( uuu );
+//
+
+ //[ttt sss] = convol(4,a, 8); //d0d2d0Convold2d0
+ //disp( ttt);
+ //disp( sss );
+
+// with 2 outputs
+//dbis = [10 13 14] *%i;
+// [ppp ooo] =convol(c,d, dbis);
+// disp( ppp); // z2z2z2Convolz2z2
+// disp( ooo );
+
+
+// [mmm nnn] = convol(4 * %i ,c , %i); //z0z2z0Convolz2z0
+// disp( mmm);
+// disp( nnn);
+
+//mixed up
+
+// disp(convol(a,c)); //d2z2Convolz2
+// disp(convol(c,a)); // z2d2Convolz2
+// disp(convol(4,c)); //d0z2Convolz2
+// disp(convol(%i + 3 ,a)); // z0d2Convolz2
+
+// disp(convol(a, %i)); //d2z0Convolz2
+// disp(convol(c , 4)); // z2d0Convolz2
+
+
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Convol.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Convol.sci.dia.ref
new file mode 100644
index 00000000..0c98d231
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Convol.sci.dia.ref
@@ -0,0 +1,2919 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Convol.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 18.
+
+ 10. + 10.i
+
+
+ column 1 to 7
+
+ 1. 9. 25. 46. 68. 92.718282 97.169565
+
+ column 8 to 12
+
+ 90.737403 67.72415 48.426245 19.451284 18.849556
+
+
+ column 1 to 9
+
+ 1. 14. 65. 122. 136. 106. 125. 106. 61.
+
+ column 10 to 11
+
+ 12. 36.
+
+ 4. 8. 12. 16. 20. 10.873127 12.566371
+
+ 4. 8. 12. 16. 20. 10.873127 12.566371
+
+
+ column 1 to 7
+
+ - 1. - 9. - 25. - 46. - 68. - 92.718282 - 97.169565
+
+ column 8 to 12
+
+ - 90.737403 - 67.72415 - 48.426245 - 19.451284 - 18.849556
+
+
+ column 1 to 9
+
+ - 1. - 14. - 65. - 122. - 136. - 106. - 125. - 106. - 61.
+
+ column 10 to 11
+
+ - 12. - 36.
+
+
+ column 1 to 5
+
+ - 1. + 3.i - 2. + 6.i - 3. + 9.i - 4. + 12.i - 5. + 15.i
+
+ column 6 to 7
+
+ - 2.7182818 + 8.1548455i - 3.1415927 + 9.424778i
+
+
+ column 1 to 5
+
+ - 2. + 4.i - 14. + 28.i - 16. + 32.i - 10. + 20.i - 2. + 4.i
+
+ column 6
+
+ - 12. + 24.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Convol"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Convol/test_Convol_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Convol/test_Convol_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(4,4.5)); //d0d0Convold0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(%i + 3 ,2*%i + 4)); // z0z0Convolz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3 4 5 %e %pi];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 7 8 5 1 6 ];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(a,b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(b,b)); // d2d2Convold2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(4,a)); //d0d2Convold2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(a,4)); // d2d0Convold2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = [1 2 3 4 5 %e %pi] * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [1 7 8 5 1 6 ] * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(c,d));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(d,d)); // z2z2Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(%i + 3 ,c)); // z0z2Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(convol(d ,2*%i + 4)); // z2z0Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // with 2 outputs
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [zz yy] = convol(4,4.5); //d0d0Convold0d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( zz );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( yy );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [xx ww ] = convol(%i + 3 ,2*%i + 4); // z0z0Convolz0z0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( xx);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( ww );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [vv uu] =convol(a,b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( vv); // d2d2Convold2d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( uu );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [tt ss] = convol(4,a); //d0d2Convold2d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( tt);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( ss );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [rr qq] = convol(a,4); // d2d0Convold2d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( rr );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( qq );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // with 2 outputs
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [pp oo] =convol(c,d);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( pp); // z2z2Convolz2z2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( oo );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [mm nn] = convol(4,c); //z0z2Convolz2z2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( mm);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( nn );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [ll kk] = convol(c,4); // z2z0Convolz2z2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( ll );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( kk);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // three input i
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // with 2 outputs
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //[zzz yyy] = convol(4,4.5,18); //d0d0d0Convold0d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( zzz );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( yyy );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //[xxx www ] = convol(%i + 3 ,2*%i + 4,%i); // z0z0z0Conv
+ olz0z0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( xxx);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( www );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // bbis = [4 7 9 10];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //[vvv uuu] =convol(a,b,bbis);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( vvv); // d2d2d2Convold2d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( uuu );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //[ttt sss] = convol(4,a, 8); //d0d2d0Convold2d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( ttt);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp( sss );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // with 2 outputs
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //dbis = [10 13 14] *%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [ppp ooo] =convol(c,d, dbis);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( ppp); // z2z2z2Convolz2z2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( ooo );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // [mmm nnn] = convol(4 * %i ,c , %i); //z0z2z0Convolz2z0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( mmm);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp( nnn);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //mixed up
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(convol(a,c)); //d2z2Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(convol(c,a)); // z2d2Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(convol(4,c)); //d0z2Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(convol(%i + 3 ,a)); // z0d2Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(convol(a, %i)); //d2z0Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(convol(c , 4)); // z2d0Convolz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Convol() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! doubleComplex __temp4; !
+! !
+! !
+! !
+! doubleComplex __temp5; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp7[1 * 3]; !
+! !
+! int ____temp7Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp8[1 * 4]; !
+! !
+! int ____temp8Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp9[1 * 5]; !
+! !
+! int ____temp9Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp10[1 * 6]; !
+! !
+! int ____temp10Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double a[1 * 7]; !
+! !
+! int __aSize[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp11[1 * 2]; !
+! !
+! int ____temp11Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp12[1 * 3]; !
+! !
+! int ____temp12Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp13[1 * 4]; !
+! !
+! int ____temp13Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp14[1 * 5]; !
+! !
+! int ____temp14Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double b[1 * 6]; !
+! !
+! int __bSize[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp15[1 * 12]; !
+! !
+! int ____temp15Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp16[1 * 11]; !
+! !
+! int ____temp16Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp17[1 * 7]; !
+! !
+! int ____temp17Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp18[1 * 7]; !
+! !
+! int ____temp18Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp19[1 * 2]; !
+! !
+! int ____temp19Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp20[1 * 3]; !
+! !
+! int ____temp20Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp21[1 * 4]; !
+! !
+! int ____temp21Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp22[1 * 5]; !
+! !
+! int ____temp22Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp23[1 * 6]; !
+! !
+! int ____temp23Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp24[1 * 7]; !
+! !
+! int ____temp24Size[2] = {1, 7};; !
+! !
+! !
+! !
+! doubleComplex c[1 * 7]; !
+! !
+! int __cSize[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp25[1 * 2]; !
+! !
+! int ____temp25Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp26[1 * 3]; !
+! !
+! int ____temp26Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp27[1 * 4]; !
+! !
+! int ____temp27Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp28[1 * 5]; !
+! !
+! int ____temp28Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp29[1 * 6]; !
+! !
+! int ____temp29Size[2] = {1, 6};; !
+! !
+! !
+! !
+! doubleComplex d[1 * 6]; !
+! !
+! int __dSize[2] = {1, 6};; !
+! !
+! !
+! !
+! doubleComplex __temp30[1 * 12]; !
+! !
+! int ____temp30Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp31[1 * 11]; !
+! !
+! int ____temp31Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp32; !
+! !
+! !
+! !
+! doubleComplex __temp33[1 * 7]; !
+! !
+! int ____temp33Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp34; !
+! !
+! !
+! !
+! doubleComplex __temp35; !
+! !
+! !
+! !
+! doubleComplex __temp36[1 * 6]; !
+! !
+! int ____temp36Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(4,4.5)); //d0d0Convold0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0d0convold0(4,4.5); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(%i + 3 ,2*%i + 4)); // z0z0Convolz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = z0d0OpPlusz0(DoubleComplex(0,1),3); !
+! !
+! __temp3 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! __temp4 = z0d0OpPlusz0(__temp3,4); !
+! !
+! __temp5 = z0z0convolz0(__temp2,__temp4); !
+! !
+! ans2 = z0dispd0(__temp5); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3 4 5 %e %pi]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp6); !
+! !
+! d2d0OpRcd2(__temp6, ____temp6Size,3,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,4,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,5,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,SCI2C_E,__temp10); !
+! !
+! d2d0OpRcd2(__temp10, ____temp10Size,SCI2C_PI,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 7 8 5 1 6 ]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,7,__temp11); !
+! !
+! d2d0OpRcd2(__temp11, ____temp11Size,8,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,5,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,1,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,6,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(a,b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2convold2(a, __aSize,b, __bSize,__temp15); !
+! !
+! ans3 = d2dispd0(__temp15, ____temp15Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(b,b)); // d2d2Convold2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2convold2(b, __bSize,b, __bSize,__temp16); !
+! !
+! ans4 = d2dispd0(__temp16, ____temp16Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(4,a)); //d0d2Convold2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2convold2(4,a, __aSize,__temp17); !
+! !
+! ans5 = d2dispd0(__temp17, ____temp17Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(a,4)); // d2d0Convold2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0convold2(a, __aSize,4,__temp18); !
+! !
+! ans6 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = [1 2 3 4 5 %e %pi] * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,3,__temp20); !
+! !
+! d2d0OpRcd2(__temp20, ____temp20Size,4,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,5,__temp22); !
+! !
+! d2d0OpRcd2(__temp22, ____temp22Size,SCI2C_E,__temp23); !
+! !
+! d2d0OpRcd2(__temp23, ____temp23Size,SCI2C_PI,__temp24); !
+! !
+! d2z0OpStarz2(__temp24, ____temp24Size,DoubleComplex(0,1),c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [1 7 8 5 1 6 ] * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,7,__temp25); !
+! !
+! d2d0OpRcd2(__temp25, ____temp25Size,8,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,5,__temp27); !
+! !
+! d2d0OpRcd2(__temp27, ____temp27Size,1,__temp28); !
+! !
+! d2d0OpRcd2(__temp28, ____temp28Size,6,__temp29); !
+! !
+! d2z0OpStarz2(__temp29, ____temp29Size,DoubleComplex(0,1),d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(c,d)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2convolz2(c, __cSize,d, __dSize,__temp30); !
+! !
+! ans7 = z2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(d,d)); // z2z2Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2convolz2(d, __dSize,d, __dSize,__temp31); !
+! !
+! ans8 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(%i + 3 ,c)); // z0z2Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp32 = z0d0OpPlusz0(DoubleComplex(0,1),3); !
+! !
+! z0z2convolz2(__temp32,c, __cSize,__temp33); !
+! !
+! ans9 = z2dispd0(__temp33, ____temp33Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(convol(d ,2*%i + 4)); // z2z0Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp34 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! __temp35 = z0d0OpPlusz0(__temp34,4); !
+! !
+! z2z0convolz2(d, __dSize,__temp35,__temp36); !
+! !
+! ans10 = z2dispd0(__temp36, ____temp36Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // with 2 outputs !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [zz yy] = convol(4,4.5); //d0d0Convold0d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( zz ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( yy ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [xx ww ] = convol(%i + 3 ,2*%i + 4); // z0z0Convolz0z0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( xx); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( ww ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [vv uu] =convol(a,b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( vv); // d2d2Convold2d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( uu ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [tt ss] = convol(4,a); //d0d2Convold2d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( tt); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( ss ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [rr qq] = convol(a,4); // d2d0Convold2d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( rr ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( qq ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // with 2 outputs !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [pp oo] =convol(c,d); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( pp); // z2z2Convolz2z2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( oo ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [mm nn] = convol(4,c); //z0z2Convolz2z2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( mm); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( nn ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [ll kk] = convol(c,4); // z2z0Convolz2z2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( ll ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( kk); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // three input i !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // with 2 outputs !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //[zzz yyy] = convol(4,4.5,18); //d0d0d0Convold0d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( zzz ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( yyy ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //[xxx www ] = convol(%i + 3 ,2*%i + 4,%i); // z0z0z0Conv!
+! olz0z0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( xxx); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( www ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // bbis = [4 7 9 10]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //[vvv uuu] =convol(a,b,bbis); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( vvv); // d2d2d2Convold2d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( uuu ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //[ttt sss] = convol(4,a, 8); //d0d2d0Convold2d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( ttt); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp( sss ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // with 2 outputs !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //dbis = [10 13 14] *%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [ppp ooo] =convol(c,d, dbis); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( ppp); // z2z2z2Convolz2z2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( ooo ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // [mmm nnn] = convol(4 * %i ,c , %i); //z0z2z0Convolz2z0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( mmm); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp( nnn); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //mixed up !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(convol(a,c)); //d2z2Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(convol(c,a)); // z2d2Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(convol(4,c)); //d0z2Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(convol(%i + 3 ,a)); // z0d2Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(convol(a, %i)); //d2z0Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(convol(c , 4)); // z2d0Convolz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Convol.sci.tst b/2.3-1/tests/unit_tests/double/test_Convol.sci.tst
new file mode 100644
index 00000000..13377a51
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Convol.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Convol.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Det.sci b/2.3-1/tests/unit_tests/double/test_Det.sci
new file mode 100644
index 00000000..cf923152
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Det.sci
@@ -0,0 +1,15 @@
+function test_Det()
+
+ a = [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(det(a));
+
+ b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(det(b));
+
+
+ disp(det(5));
+
+ disp(det(%i));
+endfunction
+
+
diff --git a/2.3-1/tests/unit_tests/double/test_Det.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Det.sci.dia.ref
new file mode 100644
index 00000000..cedddf60
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Det.sci.dia.ref
@@ -0,0 +1,670 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Det.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ - 28.128316
+
+ 28.128316i
+
+ 5.
+
+ i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Det"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Det/test_Det_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Det/test_Det_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3; 4 %pi 5; 4.5 -3 2];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(det(a));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(det(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(det(5));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(det(%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Det() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp5[2 * 3]; !
+! !
+! int ____temp5Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp7[1 * 3]; !
+! !
+! int ____temp7Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[3 * 3]; !
+! !
+! int __aSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp8; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp9[1 * 2]; !
+! !
+! int ____temp9Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp10[1 * 3]; !
+! !
+! int ____temp10Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp11[1 * 2]; !
+! !
+! int ____temp11Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp12[1 * 3]; !
+! !
+! int ____temp12Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp13[2 * 3]; !
+! !
+! int ____temp13Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp16[3 * 3]; !
+! !
+! int ____temp16Size[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex b[3 * 3]; !
+! !
+! int __bSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3; 4 %pi 5; 4.5 -3 2]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d0d0OpRcd2(4,SCI2C_PI,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,5,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,__temp5)!
+! ; !
+! !
+! d0d0OpRcd2(4.5,-3,__temp6); !
+! !
+! d2d0OpRcd2(__temp6, ____temp6Size,2,__temp7); !
+! !
+! d2d2OpCcd2(__temp5, ____temp5Size,__temp7, ____temp7Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(det(a)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp8 = d2detd0(a, __aSize); !
+! !
+! ans1 = d0dispd0(__temp8); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,3,__temp10); !
+! !
+! d0d0OpRcd2(4,SCI2C_PI,__temp11); !
+! !
+! d2d0OpRcd2(__temp11, ____temp11Size,5,__temp12); !
+! !
+! d2d2OpCcd2(__temp10, ____temp10Size,__temp12, ____temp12Size,__te!
+! mp13); !
+! !
+! d0d0OpRcd2(4.5,-3,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,2,__temp15); !
+! !
+! d2d2OpCcd2(__temp13, ____temp13Size,__temp15, ____temp15Size,__te!
+! mp16); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp16, ____temp16Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(det(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = z2detz0(b, __bSize); !
+! !
+! ans2 = z0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(det(5)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0detd0(5); !
+! !
+! ans3 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(det(%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0detz0(DoubleComplex(0,1)); !
+! !
+! ans4 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Det.sci.tst b/2.3-1/tests/unit_tests/double/test_Det.sci.tst
new file mode 100644
index 00000000..c61543db
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Det.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Det.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Disp.sci b/2.3-1/tests/unit_tests/double/test_Disp.sci
new file mode 100644
index 00000000..fd50ed3b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Disp.sci
@@ -0,0 +1,13 @@
+function test_Disp ()
+
+ disp(4.5);
+ disp(4+3*%i);
+ disp("a");
+
+ disp([1 2 3 4 5 ; 6 7 8 9 10]);
+ disp(%i*[1 2 3 4 5 ; 6 7 8 9 10]);
+ disp("plop");
+
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/double/test_Disp.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Disp.sci.dia.ref
new file mode 100644
index 00000000..e186bb93
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Disp.sci.dia.ref
@@ -0,0 +1,686 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Disp.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 4.5
+
+ 4. + 3.i
+
+ a
+
+ 1. 2. 3. 4. 5.
+ 6. 7. 8. 9. 10.
+
+ i 2.i 3.i 4.i 5.i
+ 6.i 7.i 8.i 9.i 10.i
+
+ plop
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Disp"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Disp/test_Disp_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Disp/test_Disp_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(4.5);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(4+3*%i);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("a");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp([1 2 3 4 5 ; 6 7 8 9 10]);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(%i*[1 2 3 4 5 ; 6 7 8 9 10]);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("plop");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Disp () !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! char __temp3[1*2] = {"a"}; !
+! !
+! int ____temp3Size[2] = {1,2}; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[1 * 5]; !
+! !
+! int ____temp7Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[1 * 5]; !
+! !
+! int ____temp11Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp12[2 * 5]; !
+! !
+! int ____temp12Size[2] = {2, 5};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp13[1 * 2]; !
+! !
+! int ____temp13Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp14[1 * 3]; !
+! !
+! int ____temp14Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp15[1 * 4]; !
+! !
+! int ____temp15Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp16[1 * 5]; !
+! !
+! int ____temp16Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp17[1 * 2]; !
+! !
+! int ____temp17Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp18[1 * 3]; !
+! !
+! int ____temp18Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp19[1 * 4]; !
+! !
+! int ____temp19Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp20[1 * 5]; !
+! !
+! int ____temp20Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp21[2 * 5]; !
+! !
+! int ____temp21Size[2] = {2, 5};; !
+! !
+! !
+! !
+! doubleComplex __temp22[2 * 5]; !
+! !
+! int ____temp22Size[2] = {2, 5};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! char __temp23[1*5] = {"plop"}; !
+! !
+! int ____temp23Size[2] = {1,5}; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(4.5); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0dispd0(4.5); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(4+3*%i); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp2 = d0z0OpPlusz0(4,__temp1); !
+! !
+! ans2 = z0dispd0(__temp2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("a"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = g2dispd0(__temp3, ____temp3Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp([1 2 3 4 5 ; 6 7 8 9 10]); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,3,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,4,__temp6); !
+! !
+! d2d0OpRcd2(__temp6, ____temp6Size,5,__temp7); !
+! !
+! d0d0OpRcd2(6,7,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,8,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,9,__temp10); !
+! !
+! d2d0OpRcd2(__temp10, ____temp10Size,10,__temp11); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp11, ____temp11Size,__temp!
+! 12); !
+! !
+! ans4 = d2dispd0(__temp12, ____temp12Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(%i*[1 2 3 4 5 ; 6 7 8 9 10]); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,3,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,4,__temp15); !
+! !
+! d2d0OpRcd2(__temp15, ____temp15Size,5,__temp16); !
+! !
+! d0d0OpRcd2(6,7,__temp17); !
+! !
+! d2d0OpRcd2(__temp17, ____temp17Size,8,__temp18); !
+! !
+! d2d0OpRcd2(__temp18, ____temp18Size,9,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,10,__temp20); !
+! !
+! d2d2OpCcd2(__temp16, ____temp16Size,__temp20, ____temp20Size,__te!
+! mp21); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp21, ____temp21Size,__temp22)!
+! ; !
+! !
+! ans5 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("plop"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = g2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Disp.sci.tst b/2.3-1/tests/unit_tests/double/test_Disp.sci.tst
new file mode 100644
index 00000000..6e5bd333
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Disp.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Disp.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Expm.sci b/2.3-1/tests/unit_tests/double/test_Expm.sci
new file mode 100644
index 00000000..a0a1b137
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Expm.sci
@@ -0,0 +1,9 @@
+function test_Expm()
+ b = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16];
+ c = b*%i ;
+
+ disp(expm(b));
+ disp(expm(c));
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Expm.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Expm.sci.dia.ref
new file mode 100644
index 00000000..c093cd7c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Expm.sci.dia.ref
@@ -0,0 +1,583 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Expm.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.0D+14 *
+
+ 3.5232353 3.9897442 4.4562531 4.922762
+ 8.1403247 9.2181789 10.296033 11.373887
+ 12.757414 14.446614 16.135813 17.825012
+ 17.374503 19.675048 21.975593 24.276138
+
+
+ column 1 to 2
+
+ - 0.0723612 - 0.5749056i - 0.5876033 - 0.3357227i
+ - 0.5347368 - 0.3508537i 0.6385973 - 0.2744886i
+ 0.0028876 - 0.1268019i - 0.1352022 - 0.2132544i
+ 0.5405119 + 0.0972500i 0.0909984 - 0.1520203i
+
+ column 3 to 4
+
+ - 0.1028454 - 0.0965399i 0.3819125 + 0.1426430i
+ - 0.1880687 - 0.1981234i - 0.0147346 - 0.1217582i
+ 0.7267081 - 0.2997069i - 0.4113816 - 0.3861595i
+ - 0.3585152 - 0.4012905i 0.1919713 - 0.6505607i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Expm"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Expm/test_Expm_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Expm/test_Expm_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = b*%i ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(expm(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(expm(c));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Expm() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double b[4 * 4]; !
+! !
+! int __bSize[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex c[4 * 4]; !
+! !
+! int __cSize[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp15[4 * 4]; !
+! !
+! int ____temp15Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = b*%i ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpStarz2(b, __bSize,DoubleComplex(0,1),c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(expm(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2expmd2(b, __bSize,__temp15); !
+! !
+! ans1 = d2dispd0(__temp15, ____temp15Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(expm(c)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2expmz2(c, __cSize,__temp16); !
+! !
+! ans2 = z2dispd0(__temp16, ____temp16Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Expm.sci.tst b/2.3-1/tests/unit_tests/double/test_Expm.sci.tst
new file mode 100644
index 00000000..bfb51c21
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Expm.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Expm.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_FFTShift.sci b/2.3-1/tests/unit_tests/double/test_FFTShift.sci
new file mode 100644
index 00000000..bc325ac6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_FFTShift.sci
@@ -0,0 +1,37 @@
+function test_FFTShift()
+
+ disp(fftshift(5.3));// d0*d0
+ disp(fftshift(5.3*%i));// z0*z0
+ disp(fftshift(5.3 + 5.6*%i ));// z0*z0
+
+
+ a = fft ([10 1 15 3.5 ]);
+ disp(fftshift(a));
+
+ b = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ];
+ disp(fftshift(b));
+ disp(fftshift(b , 1));
+ disp(fftshift(b , 2));
+ //disp(fftshift(b , "all"));
+
+
+ c = [10 1 15 3.5 ]*%i;
+ disp(fftshift(c));
+
+ d = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i;
+ disp(fftshift(b));
+ disp(fftshift(b , 1));
+ disp(fftshift(b , 2));
+ //disp(fftshift(b , "all"));
+
+
+ e = c + [10 1 15 3.5 ]*%i;
+ disp(fftshift(e));
+
+ f = [ 18 15 7 6 ; 1 5 6 4 ; 43.5 1 9.3 1 ] + [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i;
+ disp(fftshift(f));
+ disp(fftshift(f , 1));
+ disp(fftshift(f , 2));
+ //disp(fftshift(f , "all"));
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_FFTShift.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_FFTShift.sci.dia.ref
new file mode 100644
index 00000000..ecb4c0ff
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_FFTShift.sci.dia.ref
@@ -0,0 +1,1669 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_FFTShift.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 5.3
+
+ 5.3i
+
+ 5.3 + 5.6i
+
+ 20.5 - 5. - 2.5i 29.5 - 5. + 2.5i
+
+ 9.3 1. 48.5 3.
+ 2. 6. 14. 15.
+ 6. 4. 1. 2.
+
+ 48.5 3. 9.3 1.
+ 14. 15. 2. 6.
+ 1. 2. 6. 4.
+
+ 2. 6. 14. 15.
+ 6. 4. 1. 2.
+ 9.3 1. 48.5 3.
+
+ 15.i 3.5i 10.i i
+
+ 9.3 1. 48.5 3.
+ 2. 6. 14. 15.
+ 6. 4. 1. 2.
+
+ 48.5 3. 9.3 1.
+ 14. 15. 2. 6.
+ 1. 2. 6. 4.
+
+ 2. 6. 14. 15.
+ 6. 4. 1. 2.
+ 9.3 1. 48.5 3.
+
+ 30.i 7.i 20.i 2.i
+
+ 9.3 + 9.3i 1. + i 43.5 + 48.5i 1. + 3.i
+ 7. + 2.i 6. + 6.i 18. + 14.i 15. + 15.i
+ 6. + 6.i 4. + 4.i 1. + i 5. + 2.i
+
+ 43.5 + 48.5i 1. + 3.i 9.3 + 9.3i 1. + i
+ 18. + 14.i 15. + 15.i 7. + 2.i 6. + 6.i
+ 1. + i 5. + 2.i 6. + 6.i 4. + 4.i
+
+ 7. + 2.i 6. + 6.i 18. + 14.i 15. + 15.i
+ 6. + 6.i 4. + 4.i 1. + i 5. + 2.i
+ 9.3 + 9.3i 1. + i 43.5 + 48.5i 1. + 3.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_FFTShift"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_FFTShift/test_FFTShift_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_FFTShift/test_FFTShift_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(5.3));// d0*d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(5.3*%i));// z0*z0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(5.3 + 5.6*%i ));// z0*z0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = fft ([10 1 15 3.5 ]);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(a));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(b , 1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(b , 2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(fftshift(b , "all"));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = [10 1 15 3.5 ]*%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(c));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(b , 1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(b , 2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(fftshift(b , "all"));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = c + [10 1 15 3.5 ]*%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(e));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = [ 18 15 7 6 ; 1 5 6 4 ; 43.5 1 9.3 1 ] + [ 14 15 2 6
+ ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(f));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(f , 1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fftshift(f , 2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(fftshift(f , "all"));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_FFTShift() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp4; !
+! !
+! !
+! !
+! doubleComplex __temp5; !
+! !
+! !
+! !
+! doubleComplex __temp6; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[1 * 4]; !
+! !
+! int ____temp9Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double a[1 * 4]; !
+! !
+! int __aSize[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp11[1 * 2]; !
+! !
+! int ____temp11Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp12[1 * 3]; !
+! !
+! int ____temp12Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp13[1 * 4]; !
+! !
+! int ____temp13Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp16[1 * 4]; !
+! !
+! int ____temp16Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp17[2 * 4]; !
+! !
+! int ____temp17Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp18[1 * 2]; !
+! !
+! int ____temp18Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp19[1 * 3]; !
+! !
+! int ____temp19Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp20[1 * 4]; !
+! !
+! int ____temp20Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double b[3 * 4]; !
+! !
+! int __bSize[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp21[3 * 4]; !
+! !
+! int ____temp21Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[3 * 4]; !
+! !
+! int ____temp22Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[3 * 4]; !
+! !
+! int ____temp23Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp25[1 * 3]; !
+! !
+! int ____temp25Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 4]; !
+! !
+! int ____temp26Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex c[1 * 4]; !
+! !
+! int __cSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp27[1 * 4]; !
+! !
+! int ____temp27Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp28[1 * 2]; !
+! !
+! int ____temp28Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp29[1 * 3]; !
+! !
+! int ____temp29Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp30[1 * 4]; !
+! !
+! int ____temp30Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp31[1 * 2]; !
+! !
+! int ____temp31Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp32[1 * 3]; !
+! !
+! int ____temp32Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp33[1 * 4]; !
+! !
+! int ____temp33Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp34[2 * 4]; !
+! !
+! int ____temp34Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp35[1 * 2]; !
+! !
+! int ____temp35Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp36[1 * 3]; !
+! !
+! int ____temp36Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp37[1 * 4]; !
+! !
+! int ____temp37Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp38[3 * 4]; !
+! !
+! int ____temp38Size[2] = {3, 4};; !
+! !
+! !
+! !
+! doubleComplex d[3 * 4]; !
+! !
+! int __dSize[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp39[3 * 4]; !
+! !
+! int ____temp39Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp40[3 * 4]; !
+! !
+! int ____temp40Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp41[3 * 4]; !
+! !
+! int ____temp41Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp42[1 * 2]; !
+! !
+! int ____temp42Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp43[1 * 3]; !
+! !
+! int ____temp43Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp44[1 * 4]; !
+! !
+! int ____temp44Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp45[1 * 4]; !
+! !
+! int ____temp45Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex e[1 * 4]; !
+! !
+! int __eSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp46[1 * 4]; !
+! !
+! int ____temp46Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp47[1 * 2]; !
+! !
+! int ____temp47Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp48[1 * 3]; !
+! !
+! int ____temp48Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp49[1 * 4]; !
+! !
+! int ____temp49Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp50[1 * 2]; !
+! !
+! int ____temp50Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp51[1 * 3]; !
+! !
+! int ____temp51Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp52[1 * 4]; !
+! !
+! int ____temp52Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp53[2 * 4]; !
+! !
+! int ____temp53Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp54[1 * 2]; !
+! !
+! int ____temp54Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp55[1 * 3]; !
+! !
+! int ____temp55Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp56[1 * 4]; !
+! !
+! int ____temp56Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp57[3 * 4]; !
+! !
+! int ____temp57Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp58[1 * 2]; !
+! !
+! int ____temp58Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp59[1 * 3]; !
+! !
+! int ____temp59Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp60[1 * 4]; !
+! !
+! int ____temp60Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp61[1 * 2]; !
+! !
+! int ____temp61Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp62[1 * 3]; !
+! !
+! int ____temp62Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp63[1 * 4]; !
+! !
+! int ____temp63Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp64[2 * 4]; !
+! !
+! int ____temp64Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp65[1 * 2]; !
+! !
+! int ____temp65Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp66[1 * 3]; !
+! !
+! int ____temp66Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp67[1 * 4]; !
+! !
+! int ____temp67Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp68[3 * 4]; !
+! !
+! int ____temp68Size[2] = {3, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp69[3 * 4]; !
+! !
+! int ____temp69Size[2] = {3, 4};; !
+! !
+! !
+! !
+! doubleComplex f[3 * 4]; !
+! !
+! int __fSize[2] = {3, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp70[3 * 4]; !
+! !
+! int ____temp70Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp71[3 * 4]; !
+! !
+! int ____temp71Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp72[3 * 4]; !
+! !
+! int ____temp72Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(5.3));// d0*d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0fftshiftd0(5.3); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(5.3*%i));// z0*z0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = d0z0OpStarz0(5.3,DoubleComplex(0,1)); !
+! !
+! __temp3 = z0fftshiftz0(__temp2); !
+! !
+! ans2 = z0dispd0(__temp3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(5.3 + 5.6*%i ));// z0*z0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp4 = d0z0OpStarz0(5.6,DoubleComplex(0,1)); !
+! !
+! __temp5 = d0z0OpPlusz0(5.3,__temp4); !
+! !
+! __temp6 = z0fftshiftz0(__temp5); !
+! !
+! ans3 = z0dispd0(__temp6); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = fft ([10 1 15 3.5 ]); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,15,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,3.5,__temp9); !
+! !
+! d2fftd2(__temp9, ____temp9Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(a)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftshiftd2(a, __aSize,__temp10); !
+! !
+! ans4 = d2dispd0(__temp10, ____temp10Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(14,15,__temp11); !
+! !
+! d2d0OpRcd2(__temp11, ____temp11Size,2,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,6,__temp13); !
+! !
+! d0d0OpRcd2(1,2,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,6,__temp15); !
+! !
+! d2d0OpRcd2(__temp15, ____temp15Size,4,__temp16); !
+! !
+! d2d2OpCcd2(__temp13, ____temp13Size,__temp16, ____temp16Size,__te!
+! mp17); !
+! !
+! d0d0OpRcd2(48.5,3,__temp18); !
+! !
+! d2d0OpRcd2(__temp18, ____temp18Size,9.3,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,1,__temp20); !
+! !
+! d2d2OpCcd2(__temp17, ____temp17Size,__temp20, ____temp20Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftshiftd2(b, __bSize,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(b , 1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftshiftd2(b, __bSize,1,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(b , 2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftshiftd2(b, __bSize,2,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(fftshift(b , "all")); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = [10 1 15 3.5 ]*%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp24); !
+! !
+! d2d0OpRcd2(__temp24, ____temp24Size,15,__temp25); !
+! !
+! d2d0OpRcd2(__temp25, ____temp25Size,3.5,__temp26); !
+! !
+! d2z0OpStarz2(__temp26, ____temp26Size,DoubleComplex(0,1),c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(c)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftshiftz2(c, __cSize,__temp27); !
+! !
+! ans8 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(14,15,__temp28); !
+! !
+! d2d0OpRcd2(__temp28, ____temp28Size,2,__temp29); !
+! !
+! d2d0OpRcd2(__temp29, ____temp29Size,6,__temp30); !
+! !
+! d0d0OpRcd2(1,2,__temp31); !
+! !
+! d2d0OpRcd2(__temp31, ____temp31Size,6,__temp32); !
+! !
+! d2d0OpRcd2(__temp32, ____temp32Size,4,__temp33); !
+! !
+! d2d2OpCcd2(__temp30, ____temp30Size,__temp33, ____temp33Size,__te!
+! mp34); !
+! !
+! d0d0OpRcd2(48.5,3,__temp35); !
+! !
+! d2d0OpRcd2(__temp35, ____temp35Size,9.3,__temp36); !
+! !
+! d2d0OpRcd2(__temp36, ____temp36Size,1,__temp37); !
+! !
+! d2d2OpCcd2(__temp34, ____temp34Size,__temp37, ____temp37Size,__te!
+! mp38); !
+! !
+! d2z0OpStarz2(__temp38, ____temp38Size,DoubleComplex(0,1),d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftshiftd2(b, __bSize,__temp39); !
+! !
+! ans9 = d2dispd0(__temp39, ____temp39Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(b , 1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftshiftd2(b, __bSize,1,__temp40); !
+! !
+! ans10 = d2dispd0(__temp40, ____temp40Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(b , 2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftshiftd2(b, __bSize,2,__temp41); !
+! !
+! ans11 = d2dispd0(__temp41, ____temp41Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(fftshift(b , "all")); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = c + [10 1 15 3.5 ]*%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp42); !
+! !
+! d2d0OpRcd2(__temp42, ____temp42Size,15,__temp43); !
+! !
+! d2d0OpRcd2(__temp43, ____temp43Size,3.5,__temp44); !
+! !
+! d2z0OpStarz2(__temp44, ____temp44Size,DoubleComplex(0,1),__temp45)!
+! ; !
+! !
+! z2z2OpPlusz2(c, __cSize,__temp45, ____temp45Size,e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(e)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftshiftz2(e, __eSize,__temp46); !
+! !
+! ans12 = z2dispd0(__temp46, ____temp46Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = [ 18 15 7 6 ; 1 5 6 4 ; 43.5 1 9.3 1 ] + [ 14 15 2 6 !
+! ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(18,15,__temp47); !
+! !
+! d2d0OpRcd2(__temp47, ____temp47Size,7,__temp48); !
+! !
+! d2d0OpRcd2(__temp48, ____temp48Size,6,__temp49); !
+! !
+! d0d0OpRcd2(1,5,__temp50); !
+! !
+! d2d0OpRcd2(__temp50, ____temp50Size,6,__temp51); !
+! !
+! d2d0OpRcd2(__temp51, ____temp51Size,4,__temp52); !
+! !
+! d2d2OpCcd2(__temp49, ____temp49Size,__temp52, ____temp52Size,__te!
+! mp53); !
+! !
+! d0d0OpRcd2(43.5,1,__temp54); !
+! !
+! d2d0OpRcd2(__temp54, ____temp54Size,9.3,__temp55); !
+! !
+! d2d0OpRcd2(__temp55, ____temp55Size,1,__temp56); !
+! !
+! d2d2OpCcd2(__temp53, ____temp53Size,__temp56, ____temp56Size,__te!
+! mp57); !
+! !
+! d0d0OpRcd2(14,15,__temp58); !
+! !
+! d2d0OpRcd2(__temp58, ____temp58Size,2,__temp59); !
+! !
+! d2d0OpRcd2(__temp59, ____temp59Size,6,__temp60); !
+! !
+! d0d0OpRcd2(1,2,__temp61); !
+! !
+! d2d0OpRcd2(__temp61, ____temp61Size,6,__temp62); !
+! !
+! d2d0OpRcd2(__temp62, ____temp62Size,4,__temp63); !
+! !
+! d2d2OpCcd2(__temp60, ____temp60Size,__temp63, ____temp63Size,__te!
+! mp64); !
+! !
+! d0d0OpRcd2(48.5,3,__temp65); !
+! !
+! d2d0OpRcd2(__temp65, ____temp65Size,9.3,__temp66); !
+! !
+! d2d0OpRcd2(__temp66, ____temp66Size,1,__temp67); !
+! !
+! d2d2OpCcd2(__temp64, ____temp64Size,__temp67, ____temp67Size,__te!
+! mp68); !
+! !
+! d2z0OpStarz2(__temp68, ____temp68Size,DoubleComplex(0,1),__temp69)!
+! ; !
+! !
+! d2z2OpPlusz2(__temp57, ____temp57Size,__temp69, ____temp69Size,f)!
+! ; !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(f)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftshiftz2(f, __fSize,__temp70); !
+! !
+! ans13 = z2dispd0(__temp70, ____temp70Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(f , 1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftshiftz2(f, __fSize,1,__temp71); !
+! !
+! ans14 = z2dispd0(__temp71, ____temp71Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fftshift(f , 2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftshiftz2(f, __fSize,2,__temp72); !
+! !
+! ans15 = z2dispd0(__temp72, ____temp72Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(fftshift(f , "all")); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_FFTShift.sci.tst b/2.3-1/tests/unit_tests/double/test_FFTShift.sci.tst
new file mode 100644
index 00000000..e4f1fae5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_FFTShift.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_FFTShift.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Fft.sci b/2.3-1/tests/unit_tests/double/test_Fft.sci
new file mode 100644
index 00000000..e44183af
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Fft.sci
@@ -0,0 +1,172 @@
+function test_Fft()
+
+disp(fft(4.4))
+disp(fft(%i + 3.4))
+
+
+// one input
+ a = [10 1 15 3.5 ]; //d2Fftz2
+ disp(fft(a));
+ disp("");
+ b = [25 3.6]; // d2Fftd2
+ disp(fft(b));
+ disp("");
+ c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(fft(c));
+ disp("");
+ // pure imaginary
+ d = [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(fft(d));
+ disp("");
+ e = [25 3.6]*%i; // z2Fftd2
+ disp(fft(e));
+ disp("");
+ f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(fft(f));
+ disp("");
+ // full complex
+
+ g = a + [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(fft(g));
+ disp("");
+ h = b + [25 3.6]*%i; // z2Fftd2
+ disp(fft(h));
+ disp("");
+ j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(fft(j));
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+// two output
+// call ifft
+ disp(fft(a,1));
+ disp("");
+ disp(fft(b,1));
+ disp("");
+ disp(fft(c,1));
+ disp("");
+ disp(fft(d,1));
+ disp("");
+ disp(fft(e,1));
+ disp("");
+ disp(fft(f,1));
+ disp("");
+ // full complex
+ disp(fft(g,1));
+ disp("");
+ disp(fft(h,1));
+ disp("");
+ disp(fft(j,1));
+ disp("");
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+//
+ disp(fft(a,-1));
+ disp("");
+ disp(fft(b,-1));
+ disp("");
+ disp(fft(c,-1));
+ disp("");
+ disp(fft(d,-1));
+ disp("");
+ disp(fft(e,-1));
+ disp("");
+ disp(fft(f,-1));
+ disp("");
+ // full complex
+ disp(fft(g,-1));
+ disp("");
+ disp(fft(h,-1));
+ disp("");
+ disp(fft(j,-1));
+ disp("");
+
+
+// ********************
+// MATRIX
+// ********************
+// one input
+ aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2
+ disp(fft(aa));
+ disp("");
+ bb = [25 3.6 ; 4 3.2]; // d2Fftd2
+ disp(fft(bb));
+ disp("");
+ cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+ disp(fft(cc));
+ disp("");
+ // pure imaginary
+ dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2
+ disp(fft(dd));
+ disp("");
+ ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2
+ disp(fft(ee));
+ disp("");
+ ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+
+ disp(fft(ff));
+ disp("");
+ // full complex
+
+ gg = aa + dd; //z2Fftz2
+ disp(fft(gg));
+ disp("");
+ hh = bb + ee; // z2Fftd2
+ disp(fft(hh));
+ disp("");
+ jj= cc + ff
+ disp(fft(jj));
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+// two output
+// call ifft
+ disp(fft(aa,1));
+ disp("");
+ disp(fft(bb,1));
+ disp("");
+ disp(fft(cc,1));
+ disp("");
+ disp(fft(dd,1));
+ disp("");
+ disp(fft(ee,1));
+ disp("");
+ disp(fft(ff,1));
+ disp("");
+ // full complex
+ disp(fft(gg,1));
+ disp("");
+ disp(fft(hh,1));
+ disp("");
+ disp(fft(jj,1));
+ disp("");
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+//
+ disp(fft(aa,-1));
+ disp("");
+ disp(fft(bb,-1));
+ disp("");
+ disp(fft(cc,-1));
+ disp("");
+ disp(fft(dd,-1));
+ disp("");
+ disp(fft(ee,-1));
+ disp("");
+ disp(fft(ff,-1));
+ disp("");
+ // full complex
+ disp(fft(gg,-1));
+ disp("");
+ disp(fft(hh,-1));
+ disp("");
+ disp(fft(jj,-1));
+ disp("");
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Fft.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Fft.sci.dia.ref
new file mode 100644
index 00000000..448fc66e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Fft.sci.dia.ref
@@ -0,0 +1,7610 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Fft.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 4.4
+
+ 3.4 + i
+
+ 29.5 - 5. + 2.5i 20.5 - 5. - 2.5i
+
+
+
+ 28.6 21.4
+
+
+
+
+ column 1 to 3
+
+ 46956.66 37649.155 + 25942.95i 16159.453 + 43157.112i
+
+ column 4 to 5
+
+ - 10147.782 + 44450.191i - 33654.98 + 30098.399i
+
+ column 6 to 7
+
+ - 44774.991 + 7152.5438i - 40436.917 - 19350.167i
+
+ column 8 to 9
+
+ - 23240.79 - 39351.935i 2481.4511 - 45156.176i
+
+ column 10 to 11
+
+ 28842.369 - 36297.202i 43749.702 - 13985.054i
+
+ column 12 to 13
+
+ 43749.702 + 13985.054i 28842.369 + 36297.202i
+
+ column 14 to 15
+
+ 2481.4511 + 45156.176i - 23240.79 + 39351.935i
+
+ column 16 to 17
+
+ - 40436.917 + 19350.167i - 44774.991 - 7152.5438i
+
+ column 18 to 19
+
+ - 33654.98 - 30098.399i - 10147.782 - 44450.191i
+
+ column 20 to 21
+
+ 16159.453 - 43157.112i 37649.155 - 25942.95i
+
+
+
+ 29.5i - 2.5 - 5.i 20.5i 2.5 - 5.i
+
+
+
+ 28.6i 21.4i
+
+
+
+
+ column 1 to 3
+
+ 46956.66i - 25942.95 + 37649.155i - 43157.112 + 16159.453i
+
+ column 4 to 5
+
+ - 44450.191 - 10147.782i - 30098.399 - 33654.98i
+
+ column 6 to 7
+
+ - 7152.5438 - 44774.991i 19350.167 - 40436.917i
+
+ column 8 to 9
+
+ 39351.935 - 23240.79i 45156.176 + 2481.4511i
+
+ column 10 to 11
+
+ 36297.202 + 28842.369i 13985.054 + 43749.702i
+
+ column 12 to 13
+
+ - 13985.054 + 43749.702i - 36297.202 + 28842.369i
+
+ column 14 to 15
+
+ - 45156.176 + 2481.4511i - 39351.935 - 23240.79i
+
+ column 16 to 17
+
+ - 19350.167 - 40436.917i 7152.5438 - 44774.991i
+
+ column 18 to 19
+
+ 30098.399 - 33654.98i 44450.191 - 10147.782i
+
+ column 20 to 21
+
+ 43157.112 + 16159.453i 25942.95 + 37649.155i
+
+
+
+ 29.5 + 29.5i - 7.5 - 2.5i 20.5 + 20.5i - 2.5 - 7.5i
+
+
+
+ 28.6 + 28.6i 21.4 + 21.4i
+
+
+
+
+ column 1 to 2
+
+ 46956.66 + 46956.66i 11706.205 + 63592.105i
+
+ column 3 to 4
+
+ - 26997.659 + 59316.565i - 54597.974 + 34302.409i
+
+ column 5 to 6
+
+ - 63753.379 - 3556.5812i - 51927.535 - 37622.447i
+
+ column 7 to 8
+
+ - 21086.749 - 59787.084i 16111.145 - 62592.725i
+
+ column 9 to 10
+
+ 47637.627 - 42674.724i 65139.571 - 7454.8327i
+
+ column 11 to 12
+
+ 57734.756 + 29764.648i 29764.648 + 57734.756i
+
+ column 13 to 14
+
+ - 7454.8327 + 65139.571i - 42674.724 + 47637.627i
+
+ column 15 to 16
+
+ - 62592.725 + 16111.145i - 59787.084 - 21086.749i
+
+ column 17 to 18
+
+ - 37622.447 - 51927.535i - 3556.5812 - 63753.379i
+
+ column 19 to 20
+
+ 34302.409 - 54597.974i 59316.565 - 26997.659i
+
+ column 21
+
+ 63592.105 + 11706.205i
+
+
+
+ *******************
+
+ *******************
+
+
+
+ 7.375 - 1.25 - 0.625i 5.125 - 1.25 + 0.625i
+
+
+
+ 14.3 10.7
+
+
+
+
+ column 1 to 3
+
+ 2236.0314 1792.8169 - 1235.3786i 769.49776 - 2055.1006i
+
+ column 4 to 5
+
+ - 483.22773 - 2116.6758i - 1602.6181 - 1433.2571i
+
+ column 6 to 7
+
+ - 2132.1424 - 340.59732i - 1925.5675 + 921.43654i
+
+ column 8 to 9
+
+ - 1106.7043 + 1873.9016i 118.16434 + 2150.2941i
+
+ column 10 to 11
+
+ 1373.4461 + 1728.4382i 2083.3191 + 665.95496i
+
+ column 12 to 13
+
+ 2083.3191 - 665.95496i 1373.4461 - 1728.4382i
+
+ column 14 to 15
+
+ 118.16434 - 2150.2941i - 1106.7043 - 1873.9016i
+
+ column 16 to 17
+
+ - 1925.5675 - 921.43654i - 2132.1424 + 340.59732i
+
+ column 18 to 19
+
+ - 1602.6181 + 1433.2571i - 483.22773 + 2116.6758i
+
+ column 20 to 21
+
+ 769.49776 + 2055.1006i 1792.8169 + 1235.3786i
+
+
+
+ 7.375i 0.625 - 1.25i 5.125i - 0.625 - 1.25i
+
+
+
+ 14.3i 10.7i
+
+
+
+
+ column 1 to 3
+
+ 2236.0314i 1235.3786 + 1792.8169i 2055.1006 + 769.49776i
+
+ column 4 to 5
+
+ 2116.6758 - 483.22773i 1433.2571 - 1602.6181i
+
+ column 6 to 7
+
+ 340.59732 - 2132.1424i - 921.43654 - 1925.5675i
+
+ column 8 to 9
+
+ - 1873.9016 - 1106.7043i - 2150.2941 + 118.16434i
+
+ column 10 to 11
+
+ - 1728.4382 + 1373.4461i - 665.95496 + 2083.3191i
+
+ column 12 to 13
+
+ 665.95496 + 2083.3191i 1728.4382 + 1373.4461i
+
+ column 14 to 15
+
+ 2150.2941 + 118.16434i 1873.9016 - 1106.7043i
+
+ column 16 to 17
+
+ 921.43654 - 1925.5675i - 340.59732 - 2132.1424i
+
+ column 18 to 19
+
+ - 1433.2571 - 1602.6181i - 2116.6758 - 483.22773i
+
+ column 20 to 21
+
+ - 2055.1006 + 769.49776i - 1235.3786 + 1792.8169i
+
+
+
+
+ column 1 to 3
+
+ 7.375 + 7.375i - 0.625 - 1.875i 5.125 + 5.125i
+
+ column 4
+
+ - 1.875 - 0.625i
+
+
+
+ 14.3 + 14.3i 10.7 + 10.7i
+
+
+
+
+ column 1 to 2
+
+ 2236.0314 + 2236.0314i 3028.1955 + 557.43835i
+
+ column 3 to 4
+
+ 2824.5983 - 1285.6028i 1633.448 - 2599.9035i
+
+ column 5 to 6
+
+ - 169.36101 - 3035.8752i - 1791.5451 - 2472.7397i
+
+ column 7 to 8
+
+ - 2847.004 - 1004.1309i - 2980.6059 + 767.19736i
+
+ column 9 to 10
+
+ - 2032.1297 + 2268.4584i - 354.99203 + 3101.8843i
+
+ column 11 to 12
+
+ 1417.3642 + 2749.2741i 2749.2741 + 1417.3642i
+
+ column 13 to 14
+
+ 3101.8843 - 354.99203i 2268.4584 - 2032.1297i
+
+ column 15 to 16
+
+ 767.19736 - 2980.6059i - 1004.1309 - 2847.004i
+
+ column 17 to 18
+
+ - 2472.7397 - 1791.5451i - 3035.8752 - 169.36101i
+
+ column 19 to 20
+
+ - 2599.9035 + 1633.448i - 1285.6028 + 2824.5983i
+
+ column 21
+
+ 557.43835 + 3028.1955i
+
+
+
+
+
+ *******************
+
+ *******************
+
+
+
+ 29.5 - 5. + 2.5i 20.5 - 5. - 2.5i
+
+
+
+ 28.6 21.4
+
+
+
+
+ column 1 to 3
+
+ 46956.66 37649.155 + 25942.95i 16159.453 + 43157.112i
+
+ column 4 to 5
+
+ - 10147.782 + 44450.191i - 33654.98 + 30098.399i
+
+ column 6 to 7
+
+ - 44774.991 + 7152.5438i - 40436.917 - 19350.167i
+
+ column 8 to 9
+
+ - 23240.79 - 39351.935i 2481.4511 - 45156.176i
+
+ column 10 to 11
+
+ 28842.369 - 36297.202i 43749.702 - 13985.054i
+
+ column 12 to 13
+
+ 43749.702 + 13985.054i 28842.369 + 36297.202i
+
+ column 14 to 15
+
+ 2481.4511 + 45156.176i - 23240.79 + 39351.935i
+
+ column 16 to 17
+
+ - 40436.917 + 19350.167i - 44774.991 - 7152.5438i
+
+ column 18 to 19
+
+ - 33654.98 - 30098.399i - 10147.782 - 44450.191i
+
+ column 20 to 21
+
+ 16159.453 - 43157.112i 37649.155 - 25942.95i
+
+
+
+ 29.5i - 2.5 - 5.i 20.5i 2.5 - 5.i
+
+
+
+ 28.6i 21.4i
+
+
+
+
+ column 1 to 3
+
+ 46956.66i - 25942.95 + 37649.155i - 43157.112 + 16159.453i
+
+ column 4 to 5
+
+ - 44450.191 - 10147.782i - 30098.399 - 33654.98i
+
+ column 6 to 7
+
+ - 7152.5438 - 44774.991i 19350.167 - 40436.917i
+
+ column 8 to 9
+
+ 39351.935 - 23240.79i 45156.176 + 2481.4511i
+
+ column 10 to 11
+
+ 36297.202 + 28842.369i 13985.054 + 43749.702i
+
+ column 12 to 13
+
+ - 13985.054 + 43749.702i - 36297.202 + 28842.369i
+
+ column 14 to 15
+
+ - 45156.176 + 2481.4511i - 39351.935 - 23240.79i
+
+ column 16 to 17
+
+ - 19350.167 - 40436.917i 7152.5438 - 44774.991i
+
+ column 18 to 19
+
+ 30098.399 - 33654.98i 44450.191 - 10147.782i
+
+ column 20 to 21
+
+ 43157.112 + 16159.453i 25942.95 + 37649.155i
+
+
+
+ 29.5 + 29.5i - 7.5 - 2.5i 20.5 + 20.5i - 2.5 - 7.5i
+
+
+
+ 28.6 + 28.6i 21.4 + 21.4i
+
+
+
+
+ column 1 to 2
+
+ 46956.66 + 46956.66i 11706.205 + 63592.105i
+
+ column 3 to 4
+
+ - 26997.659 + 59316.565i - 54597.974 + 34302.409i
+
+ column 5 to 6
+
+ - 63753.379 - 3556.5812i - 51927.535 - 37622.447i
+
+ column 7 to 8
+
+ - 21086.749 - 59787.084i 16111.145 - 62592.725i
+
+ column 9 to 10
+
+ 47637.627 - 42674.724i 65139.571 - 7454.8327i
+
+ column 11 to 12
+
+ 57734.756 + 29764.648i 29764.648 + 57734.756i
+
+ column 13 to 14
+
+ - 7454.8327 + 65139.571i - 42674.724 + 47637.627i
+
+ column 15 to 16
+
+ - 62592.725 + 16111.145i - 59787.084 - 21086.749i
+
+ column 17 to 18
+
+ - 37622.447 - 51927.535i - 3556.5812 - 63753.379i
+
+ column 19 to 20
+
+ 34302.409 - 54597.974i 59316.565 - 26997.659i
+
+ column 21
+
+ 63592.105 + 11706.205i
+
+
+
+ 52.5 - 9. + 5.5i 25.5 - 9. - 5.5i
+ 6.5 - 1. - 0.5i 15.5 - 1. + 0.5i
+
+
+
+ 35.8 22.2
+ 21.4 20.6
+
+
+
+
+ column 1 to 3
+
+ 113488.56 91298.041 + 63197.662i 40252.729 + 103897.63i
+ - 19575.24 - 15999.73 - 11311.762i - 7933.8229 - 17583.403i
+
+ column 4 to 5
+
+ - 24798.095 + 108809.32i - 81891.1 + 73933.22i
+ 4502.5298 - 19908.937i 14581.14 - 13736.422i
+
+ column 6 to 7
+
+ - 109154.53 + 17344.19i - 99678.848 - 47906.484i
+ 19604.55 - 3039.1025i 18805.015 + 9206.1497i
+
+ column 8 to 9
+
+ - 55618.56 - 96028.292i 6651.8052 - 110263.77i
+ 9136.98 + 17324.423i - 1688.903 + 19951.423i
+
+ column 10 to 11
+
+ 70200.163 - 88119.902i 106319.62 - 32925.274i
+ - 12515.425 + 15525.498i - 18820.214 + 4955.1655i
+
+ column 12 to 13
+
+ 106319.62 + 32925.274i 70200.163 + 88119.902i
+ - 18820.214 - 4955.1655i - 12515.425 - 15525.498i
+
+ column 14 to 15
+
+ 6651.8052 + 110263.77i - 55618.56 + 96028.292i
+ - 1688.903 - 19951.423i 9136.98 - 17324.423i
+
+ column 16 to 17
+
+ - 99678.848 + 47906.484i - 109154.53 - 17344.19i
+ 18805.015 - 9206.1497i 19604.55 + 3039.1025i
+
+ column 18 to 19
+
+ - 81891.1 - 73933.22i - 24798.095 - 108809.32i
+ 14581.14 + 13736.422i 4502.5298 + 19908.937i
+
+ column 20 to 21
+
+ 40252.729 - 103897.63i 91298.041 - 63197.662i
+ - 7933.8229 + 17583.403i - 15999.73 + 11311.762i
+
+
+
+ 51.5i 2.5 - 6.i 20.5i - 2.5 - 6.i
+ 7.5i - 7.5 - 4.i 20.5i 7.5 - 4.i
+
+
+
+ 38.5i 19.5i
+ 18.7i 23.3i
+
+
+
+
+ column 1 to 3
+
+ 113488.56i - 63197.662 + 91298.041i - 103897.63 + 40252.729i
+ - 19575.24i 11311.762 - 15999.73i 17583.403 - 7933.8229i
+
+ column 4 to 5
+
+ - 108809.32 - 24798.095i - 73933.22 - 81891.1i
+ 19908.937 + 4502.5298i 13736.422 + 14581.14i
+
+ column 6 to 7
+
+ - 17344.19 - 109154.53i 47906.484 - 99678.848i
+ 3039.1025 + 19604.55i - 9206.1497 + 18805.015i
+
+ column 8 to 9
+
+ 96028.292 - 55618.56i 110263.77 + 6651.8052i
+ - 17324.423 + 9136.98i - 19951.423 - 1688.903i
+
+ column 10 to 11
+
+ 88119.902 + 70200.163i 32925.274 + 106319.62i
+ - 15525.498 - 12515.425i - 4955.1655 - 18820.214i
+
+ column 12 to 13
+
+ - 32925.274 + 106319.62i - 88119.902 + 70200.163i
+ 4955.1655 - 18820.214i 15525.498 - 12515.425i
+
+ column 14 to 15
+
+ - 110263.77 + 6651.8052i - 96028.292 - 55618.56i
+ 19951.423 - 1688.903i 17324.423 + 9136.98i
+
+ column 16 to 17
+
+ - 47906.484 - 99678.848i 17344.19 - 109154.53i
+ 9206.1497 + 18805.015i - 3039.1025 + 19604.55i
+
+ column 18 to 19
+
+ 73933.22 - 81891.1i 108809.32 - 24798.095i
+ - 13736.422 + 14581.14i - 19908.937 + 4502.5298i
+
+ column 20 to 21
+
+ 103897.63 + 40252.729i 63197.662 + 91298.041i
+ - 17583.403 - 7933.8229i - 11311.762 - 15999.73i
+
+
+
+ 52.5 + 51.5i - 6.5 - 0.5i 25.5 + 20.5i - 11.5 - 11.5i
+ 6.5 + 7.5i - 8.5 - 4.5i 15.5 + 20.5i 6.5 - 3.5i
+
+
+
+ 35.8 + 38.5i 22.2 + 19.5i
+ 21.4 + 18.7i 20.6 + 23.3i
+
+
+
+
+ column 1 to 2
+
+ 113488.56 + 113488.56i 28100.379 + 154495.7i
+ - 19575.24 - 19575.24i - 4687.9679 - 27311.493i
+
+ column 3 to 4
+
+ - 63644.897 + 144150.35i - 133607.41 + 84011.224i
+ 9649.5797 - 25517.226i 24411.466 - 15406.407i
+
+ column 5 to 6
+
+ - 155824.32 - 7957.8803i - 126498.72 - 91810.342i
+ 28317.561 + 844.71798i 22643.653 + 16565.448i
+
+ column 7 to 8
+
+ - 51772.364 - 147585.33i 40409.732 - 151646.85i
+ 9598.8654 + 28011.165i - 8187.4425 + 26461.403i
+
+ column 9 to 10
+
+ 116915.58 - 103611.97i 158320.06 - 17919.739i
+ - 21640.326 + 18262.52i - 28040.923 + 3010.0734i
+
+ column 11 to 12
+
+ 139244.89 + 73394.344i 73394.344 + 139244.89i
+ - 23775.379 - 13865.048i - 13865.048 - 23775.379i
+
+ column 13 to 14
+
+ - 17919.739 + 158320.06i - 103611.97 + 116915.58i
+ 3010.0734 - 28040.923i 18262.52 - 21640.326i
+
+ column 15 to 16
+
+ - 151646.85 + 40409.732i - 147585.33 - 51772.364i
+ 26461.403 - 8187.4425i 28011.165 + 9598.8654i
+
+ column 17 to 18
+
+ - 91810.342 - 126498.72i - 7957.8803 - 155824.32i
+ 16565.448 + 22643.653i 844.71798 + 28317.561i
+
+ column 19 to 20
+
+ 84011.224 - 133607.41i 144150.35 - 63644.897i
+ - 15406.407 + 24411.466i - 25517.226 + 9649.5797i
+
+ column 21
+
+ 154495.7 + 28100.379i
+ - 27311.493 - 4687.9679i
+
+
+
+ *******************
+
+ *******************
+
+
+
+ 6.5625 - 1.125 - 0.6875i 3.1875 - 1.125 + 0.6875i
+ 0.8125 - 0.125 + 0.0625i 1.9375 - 0.125 - 0.0625i
+
+
+
+ 8.95 5.55
+ 5.35 5.15
+
+
+
+
+ column 1 to 3
+
+ 2702.1086 2173.7629 - 1504.7062i 958.3983 - 2473.753i
+ - 466.07714 - 380.94596 + 269.32767i - 188.90055 + 418.65244i
+
+ column 4 to 5
+
+ - 590.43082 - 2590.6981i - 1949.7881 - 1760.3148i
+ 107.20309 + 474.0223i 347.16999 + 327.05766i
+
+ column 6 to 7
+
+ - 2598.9174 - 412.95691i - 2373.3059 + 1140.6306i
+ 466.775 + 72.359584i 447.73845 - 219.19404i
+
+ column 8 to 9
+
+ - 1324.2514 + 2286.3879i 158.37631 + 2625.3279i
+ 217.54714 - 412.48625i - 40.211977 - 475.03387i
+
+ column 10 to 11
+
+ 1671.4325 + 2098.0929i 2531.4195 + 783.93509i
+ - 297.98631 - 369.65472i - 448.10032 - 117.98013i
+
+ column 12 to 13
+
+ 2531.4195 - 783.93509i 1671.4325 - 2098.0929i
+ - 448.10032 + 117.98013i - 297.98631 + 369.65472i
+
+ column 14 to 15
+
+ 158.37631 - 2625.3279i - 1324.2514 - 2286.3879i
+ - 40.211977 + 475.03387i 217.54714 + 412.48625i
+
+ column 16 to 17
+
+ - 2373.3059 - 1140.6306i - 2598.9174 + 412.95691i
+ 447.73845 + 219.19404i 466.775 - 72.359584i
+
+ column 18 to 19
+
+ - 1949.7881 + 1760.3148i - 590.43082 + 2590.6981i
+ 347.16999 - 327.05766i 107.20309 - 474.0223i
+
+ column 20 to 21
+
+ 958.3983 + 2473.753i 2173.7629 + 1504.7062i
+ - 188.90055 - 418.65244i - 380.94596 - 269.32767i
+
+
+
+ 6.4375i - 0.3125 - 0.75i 2.5625i 0.3125 - 0.75i
+ 0.9375i 0.9375 - 0.5i 2.5625i - 0.9375 - 0.5i
+
+
+
+ 9.625i 4.875i
+ 4.675i 5.825i
+
+
+
+
+ column 1 to 3
+
+ 2702.1086i 1504.7062 + 2173.7629i 2473.753 + 958.3983i
+ - 466.07714i - 269.32767 - 380.94596i - 418.65244 - 188.90055i
+
+ column 4 to 5
+
+ 2590.6981 - 590.43082i 1760.3148 - 1949.7881i
+ - 474.0223 + 107.20309i - 327.05766 + 347.16999i
+
+ column 6 to 7
+
+ 412.95691 - 2598.9174i - 1140.6306 - 2373.3059i
+ - 72.359584 + 466.775i 219.19404 + 447.73845i
+
+ column 8 to 9
+
+ - 2286.3879 - 1324.2514i - 2625.3279 + 158.37631i
+ 412.48625 + 217.54714i 475.03387 - 40.211977i
+
+ column 10 to 11
+
+ - 2098.0929 + 1671.4325i - 783.93509 + 2531.4195i
+ 369.65472 - 297.98631i 117.98013 - 448.10032i
+
+ column 12 to 13
+
+ 783.93509 + 2531.4195i 2098.0929 + 1671.4325i
+ - 117.98013 - 448.10032i - 369.65472 - 297.98631i
+
+ column 14 to 15
+
+ 2625.3279 + 158.37631i 2286.3879 - 1324.2514i
+ - 475.03387 - 40.211977i - 412.48625 + 217.54714i
+
+ column 16 to 17
+
+ 1140.6306 - 2373.3059i - 412.95691 - 2598.9174i
+ - 219.19404 + 447.73845i 72.359584 + 466.775i
+
+ column 18 to 19
+
+ - 1760.3148 - 1949.7881i - 2590.6981 - 590.43082i
+ 327.05766 + 347.16999i 474.0223 + 107.20309i
+
+ column 20 to 21
+
+ - 2473.753 + 958.3983i - 1504.7062 + 2173.7629i
+ 418.65244 - 188.90055i 269.32767 - 380.94596i
+
+
+
+
+ column 1 to 3
+
+ 6.5625 + 6.4375i - 1.4375 - 1.4375i 3.1875 + 2.5625i
+ 0.8125 + 0.9375i 0.8125 - 0.4375i 1.9375 + 2.5625i
+
+ column 4
+
+ - 0.8125 - 0.0625i
+ - 1.0625 - 0.5625i
+
+
+
+ 8.95 + 9.625i 5.55 + 4.875i
+ 5.35 + 4.675i 5.15 + 5.825i
+
+
+
+
+ column 1 to 2
+
+ 2702.1086 + 2702.1086i 3678.4691 + 669.05664i
+ - 466.07714 - 466.07714i - 650.27363 - 111.61828i
+
+ column 3 to 4
+
+ 3432.1513 - 1515.3547i 2000.2672 - 3181.1289i
+ - 607.55299 + 229.7519i - 366.81921 + 581.22539i
+
+ column 5 to 6
+
+ - 189.47334 - 3710.1029i - 2185.9605 - 3011.8743i
+ 20.112333 + 674.22765i 394.41542 + 539.13459i
+
+ column 7 to 8
+
+ - 3513.9365 - 1232.6753i - 3610.6393 + 962.13647i
+ 666.93249 + 228.54441i 630.03339 - 194.93911i
+
+ column 9 to 10
+
+ - 2466.9516 + 2783.7043i - 426.66045 + 3769.5253i
+ 434.8219 - 515.24585i 71.668414 - 667.64102i
+
+ column 11 to 12
+
+ 1747.4844 + 3315.3546i 3315.3546 + 1747.4844i
+ - 330.12019 - 566.08045i - 566.08045 - 330.12019i
+
+ column 13 to 14
+
+ 3769.5253 - 426.66045i 2783.7043 - 2466.9516i
+ - 667.64102 + 71.668414i - 515.24585 + 434.8219i
+
+ column 15 to 16
+
+ 962.13647 - 3610.6393i - 1232.6753 - 3513.9365i
+ - 194.93911 + 630.03339i 228.54441 + 666.93249i
+
+ column 17 to 18
+
+ - 3011.8743 - 2185.9605i - 3710.1029 - 189.47334i
+ 539.13459 + 394.41542i 674.22765 + 20.112333i
+
+ column 19 to 20
+
+ - 3181.1289 + 2000.2672i - 1515.3547 + 3432.1513i
+ 581.22539 - 366.81921i 229.7519 - 607.55299i
+
+ column 21
+
+ 669.05664 + 3678.4691i
+ - 111.61828 - 650.27363i
+
+
+
+
+
+ *******************
+
+ *******************
+
+
+
+ 52.5 - 9. + 5.5i 25.5 - 9. - 5.5i
+ 6.5 - 1. - 0.5i 15.5 - 1. + 0.5i
+
+
+
+ 35.8 22.2
+ 21.4 20.6
+
+
+
+
+ column 1 to 3
+
+ 113488.56 91298.041 + 63197.662i 40252.729 + 103897.63i
+ - 19575.24 - 15999.73 - 11311.762i - 7933.8229 - 17583.403i
+
+ column 4 to 5
+
+ - 24798.095 + 108809.32i - 81891.1 + 73933.22i
+ 4502.5298 - 19908.937i 14581.14 - 13736.422i
+
+ column 6 to 7
+
+ - 109154.53 + 17344.19i - 99678.848 - 47906.484i
+ 19604.55 - 3039.1025i 18805.015 + 9206.1497i
+
+ column 8 to 9
+
+ - 55618.56 - 96028.292i 6651.8052 - 110263.77i
+ 9136.98 + 17324.423i - 1688.903 + 19951.423i
+
+ column 10 to 11
+
+ 70200.163 - 88119.902i 106319.62 - 32925.274i
+ - 12515.425 + 15525.498i - 18820.214 + 4955.1655i
+
+ column 12 to 13
+
+ 106319.62 + 32925.274i 70200.163 + 88119.902i
+ - 18820.214 - 4955.1655i - 12515.425 - 15525.498i
+
+ column 14 to 15
+
+ 6651.8052 + 110263.77i - 55618.56 + 96028.292i
+ - 1688.903 - 19951.423i 9136.98 - 17324.423i
+
+ column 16 to 17
+
+ - 99678.848 + 47906.484i - 109154.53 - 17344.19i
+ 18805.015 - 9206.1497i 19604.55 + 3039.1025i
+
+ column 18 to 19
+
+ - 81891.1 - 73933.22i - 24798.095 - 108809.32i
+ 14581.14 + 13736.422i 4502.5298 + 19908.937i
+
+ column 20 to 21
+
+ 40252.729 - 103897.63i 91298.041 - 63197.662i
+ - 7933.8229 + 17583.403i - 15999.73 + 11311.762i
+
+
+
+ 51.5i 2.5 - 6.i 20.5i - 2.5 - 6.i
+ 7.5i - 7.5 - 4.i 20.5i 7.5 - 4.i
+
+
+
+ 38.5i 19.5i
+ 18.7i 23.3i
+
+
+
+
+ column 1 to 3
+
+ 113488.56i - 63197.662 + 91298.041i - 103897.63 + 40252.729i
+ - 19575.24i 11311.762 - 15999.73i 17583.403 - 7933.8229i
+
+ column 4 to 5
+
+ - 108809.32 - 24798.095i - 73933.22 - 81891.1i
+ 19908.937 + 4502.5298i 13736.422 + 14581.14i
+
+ column 6 to 7
+
+ - 17344.19 - 109154.53i 47906.484 - 99678.848i
+ 3039.1025 + 19604.55i - 9206.1497 + 18805.015i
+
+ column 8 to 9
+
+ 96028.292 - 55618.56i 110263.77 + 6651.8052i
+ - 17324.423 + 9136.98i - 19951.423 - 1688.903i
+
+ column 10 to 11
+
+ 88119.902 + 70200.163i 32925.274 + 106319.62i
+ - 15525.498 - 12515.425i - 4955.1655 - 18820.214i
+
+ column 12 to 13
+
+ - 32925.274 + 106319.62i - 88119.902 + 70200.163i
+ 4955.1655 - 18820.214i 15525.498 - 12515.425i
+
+ column 14 to 15
+
+ - 110263.77 + 6651.8052i - 96028.292 - 55618.56i
+ 19951.423 - 1688.903i 17324.423 + 9136.98i
+
+ column 16 to 17
+
+ - 47906.484 - 99678.848i 17344.19 - 109154.53i
+ 9206.1497 + 18805.015i - 3039.1025 + 19604.55i
+
+ column 18 to 19
+
+ 73933.22 - 81891.1i 108809.32 - 24798.095i
+ - 13736.422 + 14581.14i - 19908.937 + 4502.5298i
+
+ column 20 to 21
+
+ 103897.63 + 40252.729i 63197.662 + 91298.041i
+ - 17583.403 - 7933.8229i - 11311.762 - 15999.73i
+
+
+
+ 52.5 + 51.5i - 6.5 - 0.5i 25.5 + 20.5i - 11.5 - 11.5i
+ 6.5 + 7.5i - 8.5 - 4.5i 15.5 + 20.5i 6.5 - 3.5i
+
+
+
+ 35.8 + 38.5i 22.2 + 19.5i
+ 21.4 + 18.7i 20.6 + 23.3i
+
+
+
+
+ column 1 to 2
+
+ 113488.56 + 113488.56i 28100.379 + 154495.7i
+ - 19575.24 - 19575.24i - 4687.9679 - 27311.493i
+
+ column 3 to 4
+
+ - 63644.897 + 144150.35i - 133607.41 + 84011.224i
+ 9649.5797 - 25517.226i 24411.466 - 15406.407i
+
+ column 5 to 6
+
+ - 155824.32 - 7957.8803i - 126498.72 - 91810.342i
+ 28317.561 + 844.71798i 22643.653 + 16565.448i
+
+ column 7 to 8
+
+ - 51772.364 - 147585.33i 40409.732 - 151646.85i
+ 9598.8654 + 28011.165i - 8187.4425 + 26461.403i
+
+ column 9 to 10
+
+ 116915.58 - 103611.97i 158320.06 - 17919.739i
+ - 21640.326 + 18262.52i - 28040.923 + 3010.0734i
+
+ column 11 to 12
+
+ 139244.89 + 73394.344i 73394.344 + 139244.89i
+ - 23775.379 - 13865.048i - 13865.048 - 23775.379i
+
+ column 13 to 14
+
+ - 17919.739 + 158320.06i - 103611.97 + 116915.58i
+ 3010.0734 - 28040.923i 18262.52 - 21640.326i
+
+ column 15 to 16
+
+ - 151646.85 + 40409.732i - 147585.33 - 51772.364i
+ 26461.403 - 8187.4425i 28011.165 + 9598.8654i
+
+ column 17 to 18
+
+ - 91810.342 - 126498.72i - 7957.8803 - 155824.32i
+ 16565.448 + 22643.653i 844.71798 + 28317.561i
+
+ column 19 to 20
+
+ 84011.224 - 133607.41i 144150.35 - 63644.897i
+ - 15406.407 + 24411.466i - 25517.226 + 9649.5797i
+
+ column 21
+
+ 154495.7 + 28100.379i
+ - 27311.493 - 4687.9679i
+
+
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Fft"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Fft/test_Fft_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Fft/test_Fft_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(4.4))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(%i + 3.4))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // one input
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [10 1 15 3.5 ]; //d2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(a));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [25 3.6]; // d2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 456
+ 56 72.3 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(c));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // pure imaginary
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [10 1 15 3.5 ]*%i; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(d));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = [25 3.6]*%i; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(e));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36
+ 45656 72.3 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(f));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = a + [10 1 15 3.5 ]*%i; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(g));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = b + [25 3.6]*%i; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(h));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.
+ 36 45656 72.3 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(j));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // two output
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // call ifft
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(a,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(b,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(c,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(d,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(e,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(f,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(g,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(h,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(j,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(a,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(b,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(c,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(d,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(e,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(f,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(g,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(h,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(j,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ********************
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // MATRIX
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ********************
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // one input
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(aa));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: bb = [25 3.6 ; 4 3.2]; // d2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(bb));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45
+ 656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 6554
+ 6 1.78 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(cc));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // pure imaginary
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(dd));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(ee));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36
+ 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12
+ 65546 1.78 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(ff));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: gg = aa + dd; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(gg));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: hh = bb + ee; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(hh));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: jj= cc + ff
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(jj));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // two output
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // call ifft
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(aa,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(bb,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(cc,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(dd,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(ee,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(ff,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(gg,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(hh,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(jj,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(aa,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(bb,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(cc,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(dd,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(ee,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(ff,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(gg,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(hh,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(fft(jj,-1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Fft() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[1 * 4]; !
+! !
+! int __aSize[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! char __temp7[1*1] = {""}; !
+! !
+! int ____temp7Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double b[1 * 2]; !
+! !
+! int __bSize[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! char __temp9[1*1] = {""}; !
+! !
+! int ____temp9Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp10[1 * 2]; !
+! !
+! int ____temp10Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp11[1 * 3]; !
+! !
+! int ____temp11Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp12[1 * 4]; !
+! !
+! int ____temp12Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp13[1 * 5]; !
+! !
+! int ____temp13Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp14[1 * 6]; !
+! !
+! int ____temp14Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp15[1 * 7]; !
+! !
+! int ____temp15Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp16[1 * 8]; !
+! !
+! int ____temp16Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp17[1 * 9]; !
+! !
+! int ____temp17Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp18[1 * 10]; !
+! !
+! int ____temp18Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp19[1 * 11]; !
+! !
+! int ____temp19Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp20[1 * 12]; !
+! !
+! int ____temp20Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp21[1 * 13]; !
+! !
+! int ____temp21Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp22[1 * 14]; !
+! !
+! int ____temp22Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp23[1 * 15]; !
+! !
+! int ____temp23Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp24[1 * 16]; !
+! !
+! int ____temp24Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp25[1 * 17]; !
+! !
+! int ____temp25Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp26[1 * 18]; !
+! !
+! int ____temp26Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp27[1 * 19]; !
+! !
+! int ____temp27Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp28[1 * 20]; !
+! !
+! int ____temp28Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double c[1 * 21]; !
+! !
+! int __cSize[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp29[1 * 21]; !
+! !
+! int ____temp29Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! char __temp30[1*1] = {""}; !
+! !
+! int ____temp30Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp31[1 * 2]; !
+! !
+! int ____temp31Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp32[1 * 3]; !
+! !
+! int ____temp32Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp33[1 * 4]; !
+! !
+! int ____temp33Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex d[1 * 4]; !
+! !
+! int __dSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp34[1 * 4]; !
+! !
+! int ____temp34Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! char __temp35[1*1] = {""}; !
+! !
+! int ____temp35Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp36[1 * 2]; !
+! !
+! int ____temp36Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex e[1 * 2]; !
+! !
+! int __eSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp37[1 * 2]; !
+! !
+! int ____temp37Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! char __temp38[1*1] = {""}; !
+! !
+! int ____temp38Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp39[1 * 2]; !
+! !
+! int ____temp39Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp40[1 * 3]; !
+! !
+! int ____temp40Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp41[1 * 4]; !
+! !
+! int ____temp41Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp42[1 * 5]; !
+! !
+! int ____temp42Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp43[1 * 6]; !
+! !
+! int ____temp43Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp44[1 * 7]; !
+! !
+! int ____temp44Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp45[1 * 8]; !
+! !
+! int ____temp45Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp46[1 * 9]; !
+! !
+! int ____temp46Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp47[1 * 10]; !
+! !
+! int ____temp47Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp48[1 * 11]; !
+! !
+! int ____temp48Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp49[1 * 12]; !
+! !
+! int ____temp49Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp50[1 * 13]; !
+! !
+! int ____temp50Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp51[1 * 14]; !
+! !
+! int ____temp51Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp52[1 * 15]; !
+! !
+! int ____temp52Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp53[1 * 16]; !
+! !
+! int ____temp53Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp54[1 * 17]; !
+! !
+! int ____temp54Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp55[1 * 18]; !
+! !
+! int ____temp55Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp56[1 * 19]; !
+! !
+! int ____temp56Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp57[1 * 20]; !
+! !
+! int ____temp57Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp58[1 * 21]; !
+! !
+! int ____temp58Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex f[1 * 21]; !
+! !
+! int __fSize[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp59[1 * 21]; !
+! !
+! int ____temp59Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! char __temp60[1*1] = {""}; !
+! !
+! int ____temp60Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp61[1 * 2]; !
+! !
+! int ____temp61Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp62[1 * 3]; !
+! !
+! int ____temp62Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp63[1 * 4]; !
+! !
+! int ____temp63Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp64[1 * 4]; !
+! !
+! int ____temp64Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex g[1 * 4]; !
+! !
+! int __gSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp65[1 * 4]; !
+! !
+! int ____temp65Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! char __temp66[1*1] = {""}; !
+! !
+! int ____temp66Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! double __temp67[1 * 2]; !
+! !
+! int ____temp67Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp68[1 * 2]; !
+! !
+! int ____temp68Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex h[1 * 2]; !
+! !
+! int __hSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp69[1 * 2]; !
+! !
+! int ____temp69Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! char __temp70[1*1] = {""}; !
+! !
+! int ____temp70Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! double __temp71[1 * 2]; !
+! !
+! int ____temp71Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp72[1 * 3]; !
+! !
+! int ____temp72Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp73[1 * 4]; !
+! !
+! int ____temp73Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp74[1 * 5]; !
+! !
+! int ____temp74Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp75[1 * 6]; !
+! !
+! int ____temp75Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp76[1 * 7]; !
+! !
+! int ____temp76Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp77[1 * 8]; !
+! !
+! int ____temp77Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp78[1 * 9]; !
+! !
+! int ____temp78Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp79[1 * 10]; !
+! !
+! int ____temp79Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp80[1 * 11]; !
+! !
+! int ____temp80Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp81[1 * 12]; !
+! !
+! int ____temp81Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp82[1 * 13]; !
+! !
+! int ____temp82Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp83[1 * 14]; !
+! !
+! int ____temp83Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp84[1 * 15]; !
+! !
+! int ____temp84Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp85[1 * 16]; !
+! !
+! int ____temp85Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp86[1 * 17]; !
+! !
+! int ____temp86Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp87[1 * 18]; !
+! !
+! int ____temp87Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp88[1 * 19]; !
+! !
+! int ____temp88Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp89[1 * 20]; !
+! !
+! int ____temp89Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp90[1 * 21]; !
+! !
+! int ____temp90Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp91[1 * 21]; !
+! !
+! int ____temp91Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex j[1 * 21]; !
+! !
+! int __jSize[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp92[1 * 21]; !
+! !
+! int ____temp92Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! char __temp93[1*1] = {""}; !
+! !
+! int ____temp93Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! char __temp94[1*20] = {"*******************"}; !
+! !
+! int ____temp94Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans21; !
+! !
+! !
+! !
+! char __temp95[1*20] = {"*******************"}; !
+! !
+! int ____temp95Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans22; !
+! !
+! !
+! !
+! char __temp96[1*1] = {""}; !
+! !
+! int ____temp96Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans23; !
+! !
+! !
+! !
+! double __temp97[1 * 4]; !
+! !
+! int ____temp97Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans24; !
+! !
+! !
+! !
+! char __temp98[1*1] = {""}; !
+! !
+! int ____temp98Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans25; !
+! !
+! !
+! !
+! double __temp99[1 * 2]; !
+! !
+! int ____temp99Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans26; !
+! !
+! !
+! !
+! char __temp100[1*1] = {""}; !
+! !
+! int ____temp100Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans27; !
+! !
+! !
+! !
+! double __temp101[1 * 21]; !
+! !
+! int ____temp101Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans28; !
+! !
+! !
+! !
+! char __temp102[1*1] = {""}; !
+! !
+! int ____temp102Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans29; !
+! !
+! !
+! !
+! doubleComplex __temp103[1 * 4]; !
+! !
+! int ____temp103Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans30; !
+! !
+! !
+! !
+! char __temp104[1*1] = {""}; !
+! !
+! int ____temp104Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans31; !
+! !
+! !
+! !
+! doubleComplex __temp105[1 * 2]; !
+! !
+! int ____temp105Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans32; !
+! !
+! !
+! !
+! char __temp106[1*1] = {""}; !
+! !
+! int ____temp106Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans33; !
+! !
+! !
+! !
+! doubleComplex __temp107[1 * 21]; !
+! !
+! int ____temp107Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans34; !
+! !
+! !
+! !
+! char __temp108[1*1] = {""}; !
+! !
+! int ____temp108Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans35; !
+! !
+! !
+! !
+! doubleComplex __temp109[1 * 4]; !
+! !
+! int ____temp109Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans36; !
+! !
+! !
+! !
+! char __temp110[1*1] = {""}; !
+! !
+! int ____temp110Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans37; !
+! !
+! !
+! !
+! doubleComplex __temp111[1 * 2]; !
+! !
+! int ____temp111Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans38; !
+! !
+! !
+! !
+! char __temp112[1*1] = {""}; !
+! !
+! int ____temp112Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans39; !
+! !
+! !
+! !
+! doubleComplex __temp113[1 * 21]; !
+! !
+! int ____temp113Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans40; !
+! !
+! !
+! !
+! char __temp114[1*1] = {""}; !
+! !
+! int ____temp114Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans41; !
+! !
+! !
+! !
+! char __temp115[1*1] = {""}; !
+! !
+! int ____temp115Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans42; !
+! !
+! !
+! !
+! char __temp116[1*20] = {"*******************"}; !
+! !
+! int ____temp116Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans43; !
+! !
+! !
+! !
+! char __temp117[1*20] = {"*******************"}; !
+! !
+! int ____temp117Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans44; !
+! !
+! !
+! !
+! char __temp118[1*1] = {""}; !
+! !
+! int ____temp118Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans45; !
+! !
+! !
+! !
+! double __temp119[1 * 4]; !
+! !
+! int ____temp119Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans46; !
+! !
+! !
+! !
+! char __temp120[1*1] = {""}; !
+! !
+! int ____temp120Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans47; !
+! !
+! !
+! !
+! double __temp121[1 * 2]; !
+! !
+! int ____temp121Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans48; !
+! !
+! !
+! !
+! char __temp122[1*1] = {""}; !
+! !
+! int ____temp122Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans49; !
+! !
+! !
+! !
+! double __temp123[1 * 21]; !
+! !
+! int ____temp123Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans50; !
+! !
+! !
+! !
+! char __temp124[1*1] = {""}; !
+! !
+! int ____temp124Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans51; !
+! !
+! !
+! !
+! doubleComplex __temp125[1 * 4]; !
+! !
+! int ____temp125Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans52; !
+! !
+! !
+! !
+! char __temp126[1*1] = {""}; !
+! !
+! int ____temp126Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans53; !
+! !
+! !
+! !
+! doubleComplex __temp127[1 * 2]; !
+! !
+! int ____temp127Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans54; !
+! !
+! !
+! !
+! char __temp128[1*1] = {""}; !
+! !
+! int ____temp128Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans55; !
+! !
+! !
+! !
+! doubleComplex __temp129[1 * 21]; !
+! !
+! int ____temp129Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans56; !
+! !
+! !
+! !
+! char __temp130[1*1] = {""}; !
+! !
+! int ____temp130Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans57; !
+! !
+! !
+! !
+! doubleComplex __temp131[1 * 4]; !
+! !
+! int ____temp131Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans58; !
+! !
+! !
+! !
+! char __temp132[1*1] = {""}; !
+! !
+! int ____temp132Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans59; !
+! !
+! !
+! !
+! doubleComplex __temp133[1 * 2]; !
+! !
+! int ____temp133Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans60; !
+! !
+! !
+! !
+! char __temp134[1*1] = {""}; !
+! !
+! int ____temp134Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans61; !
+! !
+! !
+! !
+! doubleComplex __temp135[1 * 21]; !
+! !
+! int ____temp135Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans62; !
+! !
+! !
+! !
+! char __temp136[1*1] = {""}; !
+! !
+! int ____temp136Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans63; !
+! !
+! !
+! !
+! double __temp137[1 * 2]; !
+! !
+! int ____temp137Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp138[1 * 3]; !
+! !
+! int ____temp138Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp139[1 * 4]; !
+! !
+! int ____temp139Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp140[1 * 2]; !
+! !
+! int ____temp140Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp141[1 * 3]; !
+! !
+! int ____temp141Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp142[1 * 4]; !
+! !
+! int ____temp142Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double aa[2 * 4]; !
+! !
+! int __aaSize[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp143[2 * 4]; !
+! !
+! int ____temp143Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans64; !
+! !
+! !
+! !
+! char __temp144[1*1] = {""}; !
+! !
+! int ____temp144Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans65; !
+! !
+! !
+! !
+! double __temp145[1 * 2]; !
+! !
+! int ____temp145Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp146[1 * 2]; !
+! !
+! int ____temp146Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double bb[2 * 2]; !
+! !
+! int __bbSize[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp147[2 * 2]; !
+! !
+! int ____temp147Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans66; !
+! !
+! !
+! !
+! char __temp148[1*1] = {""}; !
+! !
+! int ____temp148Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans67; !
+! !
+! !
+! !
+! double __temp149[1 * 2]; !
+! !
+! int ____temp149Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp150[1 * 3]; !
+! !
+! int ____temp150Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp151[1 * 4]; !
+! !
+! int ____temp151Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp152[1 * 5]; !
+! !
+! int ____temp152Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp153[1 * 6]; !
+! !
+! int ____temp153Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp154[1 * 7]; !
+! !
+! int ____temp154Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp155[1 * 8]; !
+! !
+! int ____temp155Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp156[1 * 9]; !
+! !
+! int ____temp156Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp157[1 * 10]; !
+! !
+! int ____temp157Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp158[1 * 11]; !
+! !
+! int ____temp158Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp159[1 * 12]; !
+! !
+! int ____temp159Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp160[1 * 13]; !
+! !
+! int ____temp160Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp161[1 * 14]; !
+! !
+! int ____temp161Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp162[1 * 15]; !
+! !
+! int ____temp162Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp163[1 * 16]; !
+! !
+! int ____temp163Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp164[1 * 17]; !
+! !
+! int ____temp164Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp165[1 * 18]; !
+! !
+! int ____temp165Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp166[1 * 19]; !
+! !
+! int ____temp166Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp167[1 * 20]; !
+! !
+! int ____temp167Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp168[1 * 21]; !
+! !
+! int ____temp168Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp169[1 * 2]; !
+! !
+! int ____temp169Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp170[1 * 3]; !
+! !
+! int ____temp170Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp171[1 * 4]; !
+! !
+! int ____temp171Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp172[1 * 5]; !
+! !
+! int ____temp172Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp173[1 * 6]; !
+! !
+! int ____temp173Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp174[1 * 7]; !
+! !
+! int ____temp174Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp175[1 * 8]; !
+! !
+! int ____temp175Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp176[1 * 9]; !
+! !
+! int ____temp176Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp177[1 * 10]; !
+! !
+! int ____temp177Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp178[1 * 11]; !
+! !
+! int ____temp178Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp179[1 * 12]; !
+! !
+! int ____temp179Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp180[1 * 13]; !
+! !
+! int ____temp180Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp181[1 * 14]; !
+! !
+! int ____temp181Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp182[1 * 15]; !
+! !
+! int ____temp182Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp183[1 * 16]; !
+! !
+! int ____temp183Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp184[1 * 17]; !
+! !
+! int ____temp184Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp185[1 * 18]; !
+! !
+! int ____temp185Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp186[1 * 19]; !
+! !
+! int ____temp186Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp187[1 * 20]; !
+! !
+! int ____temp187Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp188[1 * 21]; !
+! !
+! int ____temp188Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double cc[2 * 21]; !
+! !
+! int __ccSize[2] = {2, 21};; !
+! !
+! !
+! !
+! double __temp189[2 * 21]; !
+! !
+! int ____temp189Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans68; !
+! !
+! !
+! !
+! char __temp190[1*1] = {""}; !
+! !
+! int ____temp190Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans69; !
+! !
+! !
+! !
+! double __temp191[1 * 2]; !
+! !
+! int ____temp191Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp192[1 * 3]; !
+! !
+! int ____temp192Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp193[1 * 4]; !
+! !
+! int ____temp193Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp194[1 * 2]; !
+! !
+! int ____temp194Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp195[1 * 3]; !
+! !
+! int ____temp195Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp196[1 * 4]; !
+! !
+! int ____temp196Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp197[2 * 4]; !
+! !
+! int ____temp197Size[2] = {2, 4};; !
+! !
+! !
+! !
+! doubleComplex dd[2 * 4]; !
+! !
+! int __ddSize[2] = {2, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp198[2 * 4]; !
+! !
+! int ____temp198Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans70; !
+! !
+! !
+! !
+! char __temp199[1*1] = {""}; !
+! !
+! int ____temp199Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans71; !
+! !
+! !
+! !
+! double __temp200[1 * 2]; !
+! !
+! int ____temp200Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp201[1 * 2]; !
+! !
+! int ____temp201Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp202[2 * 2]; !
+! !
+! int ____temp202Size[2] = {2, 2};; !
+! !
+! !
+! !
+! doubleComplex ee[2 * 2]; !
+! !
+! int __eeSize[2] = {2, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp203[2 * 2]; !
+! !
+! int ____temp203Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans72; !
+! !
+! !
+! !
+! char __temp204[1*1] = {""}; !
+! !
+! int ____temp204Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans73; !
+! !
+! !
+! !
+! double __temp205[1 * 2]; !
+! !
+! int ____temp205Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp206[1 * 3]; !
+! !
+! int ____temp206Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp207[1 * 4]; !
+! !
+! int ____temp207Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp208[1 * 5]; !
+! !
+! int ____temp208Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp209[1 * 6]; !
+! !
+! int ____temp209Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp210[1 * 7]; !
+! !
+! int ____temp210Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp211[1 * 8]; !
+! !
+! int ____temp211Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp212[1 * 9]; !
+! !
+! int ____temp212Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp213[1 * 10]; !
+! !
+! int ____temp213Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp214[1 * 11]; !
+! !
+! int ____temp214Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp215[1 * 12]; !
+! !
+! int ____temp215Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp216[1 * 13]; !
+! !
+! int ____temp216Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp217[1 * 14]; !
+! !
+! int ____temp217Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp218[1 * 15]; !
+! !
+! int ____temp218Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp219[1 * 16]; !
+! !
+! int ____temp219Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp220[1 * 17]; !
+! !
+! int ____temp220Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp221[1 * 18]; !
+! !
+! int ____temp221Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp222[1 * 19]; !
+! !
+! int ____temp222Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp223[1 * 20]; !
+! !
+! int ____temp223Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp224[1 * 21]; !
+! !
+! int ____temp224Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp225[1 * 2]; !
+! !
+! int ____temp225Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp226[1 * 3]; !
+! !
+! int ____temp226Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp227[1 * 4]; !
+! !
+! int ____temp227Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp228[1 * 5]; !
+! !
+! int ____temp228Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp229[1 * 6]; !
+! !
+! int ____temp229Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp230[1 * 7]; !
+! !
+! int ____temp230Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp231[1 * 8]; !
+! !
+! int ____temp231Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp232[1 * 9]; !
+! !
+! int ____temp232Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp233[1 * 10]; !
+! !
+! int ____temp233Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp234[1 * 11]; !
+! !
+! int ____temp234Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp235[1 * 12]; !
+! !
+! int ____temp235Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp236[1 * 13]; !
+! !
+! int ____temp236Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp237[1 * 14]; !
+! !
+! int ____temp237Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp238[1 * 15]; !
+! !
+! int ____temp238Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp239[1 * 16]; !
+! !
+! int ____temp239Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp240[1 * 17]; !
+! !
+! int ____temp240Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp241[1 * 18]; !
+! !
+! int ____temp241Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp242[1 * 19]; !
+! !
+! int ____temp242Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp243[1 * 20]; !
+! !
+! int ____temp243Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp244[1 * 21]; !
+! !
+! int ____temp244Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp245[2 * 21]; !
+! !
+! int ____temp245Size[2] = {2, 21};; !
+! !
+! !
+! !
+! doubleComplex ff[2 * 21]; !
+! !
+! int __ffSize[2] = {2, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp246[2 * 21]; !
+! !
+! int ____temp246Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans74; !
+! !
+! !
+! !
+! char __temp247[1*1] = {""}; !
+! !
+! int ____temp247Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans75; !
+! !
+! !
+! !
+! doubleComplex gg[2 * 4]; !
+! !
+! int __ggSize[2] = {2, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp248[2 * 4]; !
+! !
+! int ____temp248Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans76; !
+! !
+! !
+! !
+! char __temp249[1*1] = {""}; !
+! !
+! int ____temp249Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans77; !
+! !
+! !
+! !
+! doubleComplex hh[2 * 2]; !
+! !
+! int __hhSize[2] = {2, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp250[2 * 2]; !
+! !
+! int ____temp250Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans78; !
+! !
+! !
+! !
+! char __temp251[1*1] = {""}; !
+! !
+! int ____temp251Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans79; !
+! !
+! !
+! !
+! doubleComplex jj[2 * 21]; !
+! !
+! int __jjSize[2] = {2, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp252[2 * 21]; !
+! !
+! int ____temp252Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans80; !
+! !
+! !
+! !
+! char __temp253[1*1] = {""}; !
+! !
+! int ____temp253Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans81; !
+! !
+! !
+! !
+! char __temp254[1*20] = {"*******************"}; !
+! !
+! int ____temp254Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans82; !
+! !
+! !
+! !
+! char __temp255[1*20] = {"*******************"}; !
+! !
+! int ____temp255Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans83; !
+! !
+! !
+! !
+! char __temp256[1*1] = {""}; !
+! !
+! int ____temp256Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans84; !
+! !
+! !
+! !
+! double __temp257[2 * 4]; !
+! !
+! int ____temp257Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans85; !
+! !
+! !
+! !
+! char __temp258[1*1] = {""}; !
+! !
+! int ____temp258Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans86; !
+! !
+! !
+! !
+! double __temp259[2 * 2]; !
+! !
+! int ____temp259Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans87; !
+! !
+! !
+! !
+! char __temp260[1*1] = {""}; !
+! !
+! int ____temp260Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans88; !
+! !
+! !
+! !
+! double __temp261[2 * 21]; !
+! !
+! int ____temp261Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans89; !
+! !
+! !
+! !
+! char __temp262[1*1] = {""}; !
+! !
+! int ____temp262Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans90; !
+! !
+! !
+! !
+! doubleComplex __temp263[2 * 4]; !
+! !
+! int ____temp263Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans91; !
+! !
+! !
+! !
+! char __temp264[1*1] = {""}; !
+! !
+! int ____temp264Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans92; !
+! !
+! !
+! !
+! doubleComplex __temp265[2 * 2]; !
+! !
+! int ____temp265Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans93; !
+! !
+! !
+! !
+! char __temp266[1*1] = {""}; !
+! !
+! int ____temp266Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans94; !
+! !
+! !
+! !
+! doubleComplex __temp267[2 * 21]; !
+! !
+! int ____temp267Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans95; !
+! !
+! !
+! !
+! char __temp268[1*1] = {""}; !
+! !
+! int ____temp268Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans96; !
+! !
+! !
+! !
+! doubleComplex __temp269[2 * 4]; !
+! !
+! int ____temp269Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans97; !
+! !
+! !
+! !
+! char __temp270[1*1] = {""}; !
+! !
+! int ____temp270Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans98; !
+! !
+! !
+! !
+! doubleComplex __temp271[2 * 2]; !
+! !
+! int ____temp271Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans99; !
+! !
+! !
+! !
+! char __temp272[1*1] = {""}; !
+! !
+! int ____temp272Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans100; !
+! !
+! !
+! !
+! doubleComplex __temp273[2 * 21]; !
+! !
+! int ____temp273Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans101; !
+! !
+! !
+! !
+! char __temp274[1*1] = {""}; !
+! !
+! int ____temp274Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans102; !
+! !
+! !
+! !
+! char __temp275[1*1] = {""}; !
+! !
+! int ____temp275Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans103; !
+! !
+! !
+! !
+! char __temp276[1*20] = {"*******************"}; !
+! !
+! int ____temp276Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans104; !
+! !
+! !
+! !
+! char __temp277[1*20] = {"*******************"}; !
+! !
+! int ____temp277Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans105; !
+! !
+! !
+! !
+! char __temp278[1*1] = {""}; !
+! !
+! int ____temp278Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans106; !
+! !
+! !
+! !
+! double __temp279[2 * 4]; !
+! !
+! int ____temp279Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans107; !
+! !
+! !
+! !
+! char __temp280[1*1] = {""}; !
+! !
+! int ____temp280Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans108; !
+! !
+! !
+! !
+! double __temp281[2 * 2]; !
+! !
+! int ____temp281Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans109; !
+! !
+! !
+! !
+! char __temp282[1*1] = {""}; !
+! !
+! int ____temp282Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans110; !
+! !
+! !
+! !
+! double __temp283[2 * 21]; !
+! !
+! int ____temp283Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans111; !
+! !
+! !
+! !
+! char __temp284[1*1] = {""}; !
+! !
+! int ____temp284Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans112; !
+! !
+! !
+! !
+! doubleComplex __temp285[2 * 4]; !
+! !
+! int ____temp285Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans113; !
+! !
+! !
+! !
+! char __temp286[1*1] = {""}; !
+! !
+! int ____temp286Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans114; !
+! !
+! !
+! !
+! doubleComplex __temp287[2 * 2]; !
+! !
+! int ____temp287Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans115; !
+! !
+! !
+! !
+! char __temp288[1*1] = {""}; !
+! !
+! int ____temp288Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans116; !
+! !
+! !
+! !
+! doubleComplex __temp289[2 * 21]; !
+! !
+! int ____temp289Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans117; !
+! !
+! !
+! !
+! char __temp290[1*1] = {""}; !
+! !
+! int ____temp290Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans118; !
+! !
+! !
+! !
+! doubleComplex __temp291[2 * 4]; !
+! !
+! int ____temp291Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans119; !
+! !
+! !
+! !
+! char __temp292[1*1] = {""}; !
+! !
+! int ____temp292Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans120; !
+! !
+! !
+! !
+! doubleComplex __temp293[2 * 2]; !
+! !
+! int ____temp293Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans121; !
+! !
+! !
+! !
+! char __temp294[1*1] = {""}; !
+! !
+! int ____temp294Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans122; !
+! !
+! !
+! !
+! doubleComplex __temp295[2 * 21]; !
+! !
+! int ____temp295Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans123; !
+! !
+! !
+! !
+! char __temp296[1*1] = {""}; !
+! !
+! int ____temp296Size[2] = {1,1}; !
+! !
+! !
+! !
+! double ans124; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(4.4)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0fftd0(4.4); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(%i + 3.4)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = z0d0OpPlusz0(DoubleComplex(0,1),3.4); !
+! !
+! __temp3 = z0fftz0(__temp2); !
+! !
+! ans2 = z0dispd0(__temp3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // one input !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [10 1 15 3.5 ]; //d2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,15,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,3.5,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(a)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftd2(a, __aSize,__temp6); !
+! !
+! ans3 = d2dispd0(__temp6, ____temp6Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = g2dispd0(__temp7, ____temp7Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [25 3.6]; // d2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftd2(b, __bSize,__temp8); !
+! !
+! ans5 = d2dispd0(__temp8, ____temp8Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = g2dispd0(__temp9, ____temp9Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 456!
+! 56 72.3 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp10); !
+! !
+! d2d0OpRcd2(__temp10, ____temp10Size,5,__temp11); !
+! !
+! d2d0OpRcd2(__temp11, ____temp11Size,6,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,3,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,8,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,9,__temp15); !
+! !
+! d2d0OpRcd2(__temp15, ____temp15Size,445,__temp16); !
+! !
+! d2d0OpRcd2(__temp16, ____temp16Size,1,__temp17); !
+! !
+! d2d0OpRcd2(__temp17, ____temp17Size,2,__temp18); !
+! !
+! d2d0OpRcd2(__temp18, ____temp18Size,3,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,0,__temp20); !
+! !
+! d2d0OpRcd2(__temp20, ____temp20Size,125,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,5,__temp22); !
+! !
+! d2d0OpRcd2(__temp22, ____temp22Size,41,__temp23); !
+! !
+! d2d0OpRcd2(__temp23, ____temp23Size,4,__temp24); !
+! !
+! d2d0OpRcd2(__temp24, ____temp24Size,5,__temp25); !
+! !
+! d2d0OpRcd2(__temp25, ____temp25Size,552,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,2.36,__temp27); !
+! !
+! d2d0OpRcd2(__temp27, ____temp27Size,45656,__temp28); !
+! !
+! d2d0OpRcd2(__temp28, ____temp28Size,72.3,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(c)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftd2(c, __cSize,__temp29); !
+! !
+! ans7 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = g2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // pure imaginary !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [10 1 15 3.5 ]*%i; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp31); !
+! !
+! d2d0OpRcd2(__temp31, ____temp31Size,15,__temp32); !
+! !
+! d2d0OpRcd2(__temp32, ____temp32Size,3.5,__temp33); !
+! !
+! d2z0OpStarz2(__temp33, ____temp33Size,DoubleComplex(0,1),d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(d)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(d, __dSize,__temp34); !
+! !
+! ans9 = z2dispd0(__temp34, ____temp34Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = g2dispd0(__temp35, ____temp35Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = [25 3.6]*%i; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp36); !
+! !
+! d2z0OpStarz2(__temp36, ____temp36Size,DoubleComplex(0,1),e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(e)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(e, __eSize,__temp37); !
+! !
+! ans11 = z2dispd0(__temp37, ____temp37Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = g2dispd0(__temp38, ____temp38Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 !
+! 45656 72.3 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp39); !
+! !
+! d2d0OpRcd2(__temp39, ____temp39Size,5,__temp40); !
+! !
+! d2d0OpRcd2(__temp40, ____temp40Size,6,__temp41); !
+! !
+! d2d0OpRcd2(__temp41, ____temp41Size,3,__temp42); !
+! !
+! d2d0OpRcd2(__temp42, ____temp42Size,8,__temp43); !
+! !
+! d2d0OpRcd2(__temp43, ____temp43Size,9,__temp44); !
+! !
+! d2d0OpRcd2(__temp44, ____temp44Size,445,__temp45); !
+! !
+! d2d0OpRcd2(__temp45, ____temp45Size,1,__temp46); !
+! !
+! d2d0OpRcd2(__temp46, ____temp46Size,2,__temp47); !
+! !
+! d2d0OpRcd2(__temp47, ____temp47Size,3,__temp48); !
+! !
+! d2d0OpRcd2(__temp48, ____temp48Size,0,__temp49); !
+! !
+! d2d0OpRcd2(__temp49, ____temp49Size,125,__temp50); !
+! !
+! d2d0OpRcd2(__temp50, ____temp50Size,5,__temp51); !
+! !
+! d2d0OpRcd2(__temp51, ____temp51Size,41,__temp52); !
+! !
+! d2d0OpRcd2(__temp52, ____temp52Size,4,__temp53); !
+! !
+! d2d0OpRcd2(__temp53, ____temp53Size,5,__temp54); !
+! !
+! d2d0OpRcd2(__temp54, ____temp54Size,552,__temp55); !
+! !
+! d2d0OpRcd2(__temp55, ____temp55Size,2.36,__temp56); !
+! !
+! d2d0OpRcd2(__temp56, ____temp56Size,45656,__temp57); !
+! !
+! d2d0OpRcd2(__temp57, ____temp57Size,72.3,__temp58); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp58, ____temp58Size,f); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(f)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(f, __fSize,__temp59); !
+! !
+! ans13 = z2dispd0(__temp59, ____temp59Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans14 = g2dispd0(__temp60, ____temp60Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = a + [10 1 15 3.5 ]*%i; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp61); !
+! !
+! d2d0OpRcd2(__temp61, ____temp61Size,15,__temp62); !
+! !
+! d2d0OpRcd2(__temp62, ____temp62Size,3.5,__temp63); !
+! !
+! d2z0OpStarz2(__temp63, ____temp63Size,DoubleComplex(0,1),__temp64)!
+! ; !
+! !
+! d2z2OpPlusz2(a, __aSize,__temp64, ____temp64Size,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(g)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(g, __gSize,__temp65); !
+! !
+! ans15 = z2dispd0(__temp65, ____temp65Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans16 = g2dispd0(__temp66, ____temp66Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = b + [25 3.6]*%i; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp67); !
+! !
+! d2z0OpStarz2(__temp67, ____temp67Size,DoubleComplex(0,1),__temp68)!
+! ; !
+! !
+! d2z2OpPlusz2(b, __bSize,__temp68, ____temp68Size,h); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(h)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(h, __hSize,__temp69); !
+! !
+! ans17 = z2dispd0(__temp69, ____temp69Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans18 = g2dispd0(__temp70, ____temp70Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.!
+! 36 45656 72.3 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp71); !
+! !
+! d2d0OpRcd2(__temp71, ____temp71Size,5,__temp72); !
+! !
+! d2d0OpRcd2(__temp72, ____temp72Size,6,__temp73); !
+! !
+! d2d0OpRcd2(__temp73, ____temp73Size,3,__temp74); !
+! !
+! d2d0OpRcd2(__temp74, ____temp74Size,8,__temp75); !
+! !
+! d2d0OpRcd2(__temp75, ____temp75Size,9,__temp76); !
+! !
+! d2d0OpRcd2(__temp76, ____temp76Size,445,__temp77); !
+! !
+! d2d0OpRcd2(__temp77, ____temp77Size,1,__temp78); !
+! !
+! d2d0OpRcd2(__temp78, ____temp78Size,2,__temp79); !
+! !
+! d2d0OpRcd2(__temp79, ____temp79Size,3,__temp80); !
+! !
+! d2d0OpRcd2(__temp80, ____temp80Size,0,__temp81); !
+! !
+! d2d0OpRcd2(__temp81, ____temp81Size,125,__temp82); !
+! !
+! d2d0OpRcd2(__temp82, ____temp82Size,5,__temp83); !
+! !
+! d2d0OpRcd2(__temp83, ____temp83Size,41,__temp84); !
+! !
+! d2d0OpRcd2(__temp84, ____temp84Size,4,__temp85); !
+! !
+! d2d0OpRcd2(__temp85, ____temp85Size,5,__temp86); !
+! !
+! d2d0OpRcd2(__temp86, ____temp86Size,552,__temp87); !
+! !
+! d2d0OpRcd2(__temp87, ____temp87Size,2.36,__temp88); !
+! !
+! d2d0OpRcd2(__temp88, ____temp88Size,45656,__temp89); !
+! !
+! d2d0OpRcd2(__temp89, ____temp89Size,72.3,__temp90); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp90, ____temp90Size,__temp91)!
+! ; !
+! !
+! d2z2OpPlusz2(c, __cSize,__temp91, ____temp91Size,j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(j)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(j, __jSize,__temp92); !
+! !
+! ans19 = z2dispd0(__temp92, ____temp92Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans20 = g2dispd0(__temp93, ____temp93Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans21 = g2dispd0(__temp94, ____temp94Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans22 = g2dispd0(__temp95, ____temp95Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans23 = g2dispd0(__temp96, ____temp96Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // two output !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // call ifft !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(a,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(a, __aSize,1,__temp97); !
+! !
+! ans24 = d2dispd0(__temp97, ____temp97Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans25 = g2dispd0(__temp98, ____temp98Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(b,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(b, __bSize,1,__temp99); !
+! !
+! ans26 = d2dispd0(__temp99, ____temp99Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans27 = g2dispd0(__temp100, ____temp100Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(c,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(c, __cSize,1,__temp101); !
+! !
+! ans28 = d2dispd0(__temp101, ____temp101Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans29 = g2dispd0(__temp102, ____temp102Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(d,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(d, __dSize,1,__temp103); !
+! !
+! ans30 = z2dispd0(__temp103, ____temp103Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans31 = g2dispd0(__temp104, ____temp104Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(e,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(e, __eSize,1,__temp105); !
+! !
+! ans32 = z2dispd0(__temp105, ____temp105Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans33 = g2dispd0(__temp106, ____temp106Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(f,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(f, __fSize,1,__temp107); !
+! !
+! ans34 = z2dispd0(__temp107, ____temp107Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans35 = g2dispd0(__temp108, ____temp108Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(g,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(g, __gSize,1,__temp109); !
+! !
+! ans36 = z2dispd0(__temp109, ____temp109Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans37 = g2dispd0(__temp110, ____temp110Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(h,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(h, __hSize,1,__temp111); !
+! !
+! ans38 = z2dispd0(__temp111, ____temp111Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans39 = g2dispd0(__temp112, ____temp112Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(j,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(j, __jSize,1,__temp113); !
+! !
+! ans40 = z2dispd0(__temp113, ____temp113Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans41 = g2dispd0(__temp114, ____temp114Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans42 = g2dispd0(__temp115, ____temp115Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans43 = g2dispd0(__temp116, ____temp116Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans44 = g2dispd0(__temp117, ____temp117Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans45 = g2dispd0(__temp118, ____temp118Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(a,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(a, __aSize,-1,__temp119); !
+! !
+! ans46 = d2dispd0(__temp119, ____temp119Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(b,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans47 = g2dispd0(__temp120, ____temp120Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(b, __bSize,-1,__temp121); !
+! !
+! ans48 = d2dispd0(__temp121, ____temp121Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(c,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans49 = g2dispd0(__temp122, ____temp122Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(c, __cSize,-1,__temp123); !
+! !
+! ans50 = d2dispd0(__temp123, ____temp123Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(d,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans51 = g2dispd0(__temp124, ____temp124Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(d, __dSize,-1,__temp125); !
+! !
+! ans52 = z2dispd0(__temp125, ____temp125Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(e,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans53 = g2dispd0(__temp126, ____temp126Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(e, __eSize,-1,__temp127); !
+! !
+! ans54 = z2dispd0(__temp127, ____temp127Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(f,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans55 = g2dispd0(__temp128, ____temp128Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(f, __fSize,-1,__temp129); !
+! !
+! ans56 = z2dispd0(__temp129, ____temp129Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans57 = g2dispd0(__temp130, ____temp130Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(g,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(g, __gSize,-1,__temp131); !
+! !
+! ans58 = z2dispd0(__temp131, ____temp131Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(h,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans59 = g2dispd0(__temp132, ____temp132Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(h, __hSize,-1,__temp133); !
+! !
+! ans60 = z2dispd0(__temp133, ____temp133Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(j,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans61 = g2dispd0(__temp134, ____temp134Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(j, __jSize,-1,__temp135); !
+! !
+! ans62 = z2dispd0(__temp135, ____temp135Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans63 = g2dispd0(__temp136, ____temp136Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ******************** !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // MATRIX !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ******************** !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // one input !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(aa)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp137); !
+! !
+! d2d0OpRcd2(__temp137, ____temp137Size,15,__temp138); !
+! !
+! d2d0OpRcd2(__temp138, ____temp138Size,3.5,__temp139); !
+! !
+! d0d0OpRcd2(5,3,__temp140); !
+! !
+! d2d0OpRcd2(__temp140, ____temp140Size,9,__temp141); !
+! !
+! d2d0OpRcd2(__temp141, ____temp141Size,6,__temp142); !
+! !
+! d2d2OpCcd2(__temp139, ____temp139Size,__temp142, ____temp142Size,!
+! aa); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftd2(aa, __aaSize,__temp143); !
+! !
+! ans64 = d2dispd0(__temp143, ____temp143Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: bb = [25 3.6 ; 4 3.2]; // d2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans65 = g2dispd0(__temp144, ____temp144Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(bb)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp145); !
+! !
+! d0d0OpRcd2(4,3.2,__temp146); !
+! !
+! d2d2OpCcd2(__temp145, ____temp145Size,__temp146, ____temp146Size,!
+! bb); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftd2(bb, __bbSize,__temp147); !
+! !
+! ans66 = d2dispd0(__temp147, ____temp147Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45!
+! 656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 6554!
+! 6 1.78 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans67 = g2dispd0(__temp148, ____temp148Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(cc)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp149); !
+! !
+! d2d0OpRcd2(__temp149, ____temp149Size,5,__temp150); !
+! !
+! d2d0OpRcd2(__temp150, ____temp150Size,6,__temp151); !
+! !
+! d2d0OpRcd2(__temp151, ____temp151Size,3,__temp152); !
+! !
+! d2d0OpRcd2(__temp152, ____temp152Size,8,__temp153); !
+! !
+! d2d0OpRcd2(__temp153, ____temp153Size,9,__temp154); !
+! !
+! d2d0OpRcd2(__temp154, ____temp154Size,445,__temp155); !
+! !
+! d2d0OpRcd2(__temp155, ____temp155Size,1,__temp156); !
+! !
+! d2d0OpRcd2(__temp156, ____temp156Size,2,__temp157); !
+! !
+! d2d0OpRcd2(__temp157, ____temp157Size,3,__temp158); !
+! !
+! d2d0OpRcd2(__temp158, ____temp158Size,0,__temp159); !
+! !
+! d2d0OpRcd2(__temp159, ____temp159Size,125,__temp160); !
+! !
+! d2d0OpRcd2(__temp160, ____temp160Size,5,__temp161); !
+! !
+! d2d0OpRcd2(__temp161, ____temp161Size,41,__temp162); !
+! !
+! d2d0OpRcd2(__temp162, ____temp162Size,4,__temp163); !
+! !
+! d2d0OpRcd2(__temp163, ____temp163Size,5,__temp164); !
+! !
+! d2d0OpRcd2(__temp164, ____temp164Size,552,__temp165); !
+! !
+! d2d0OpRcd2(__temp165, ____temp165Size,2.36,__temp166); !
+! !
+! d2d0OpRcd2(__temp166, ____temp166Size,45656,__temp167); !
+! !
+! d2d0OpRcd2(__temp167, ____temp167Size,72.3,__temp168); !
+! !
+! d0d0OpRcd2(21,8,__temp169); !
+! !
+! d2d0OpRcd2(__temp169, ____temp169Size,2,__temp170); !
+! !
+! d2d0OpRcd2(__temp170, ____temp170Size,5,__temp171); !
+! !
+! d2d0OpRcd2(__temp171, ____temp171Size,6,__temp172); !
+! !
+! d2d0OpRcd2(__temp172, ____temp172Size,3,__temp173); !
+! !
+! d2d0OpRcd2(__temp173, ____temp173Size,4,__temp174); !
+! !
+! d2d0OpRcd2(__temp174, ____temp174Size,123,__temp175); !
+! !
+! d2d0OpRcd2(__temp175, ____temp175Size,5,__temp176); !
+! !
+! d2d0OpRcd2(__temp176, ____temp176Size,6,__temp177); !
+! !
+! d2d0OpRcd2(__temp177, ____temp177Size,0,__temp178); !
+! !
+! d2d0OpRcd2(__temp178, ____temp178Size,5,__temp179); !
+! !
+! d2d0OpRcd2(__temp179, ____temp179Size,548,__temp180); !
+! !
+! d2d0OpRcd2(__temp180, ____temp180Size,7,__temp181); !
+! !
+! d2d0OpRcd2(__temp181, ____temp181Size,65,__temp182); !
+! !
+! d2d0OpRcd2(__temp182, ____temp182Size,4,__temp183); !
+! !
+! d2d0OpRcd2(__temp183, ____temp183Size,2,__temp184); !
+! !
+! d2d0OpRcd2(__temp184, ____temp184Size,166,__temp185); !
+! !
+! d2d0OpRcd2(__temp185, ____temp185Size,4.12,__temp186); !
+! !
+! d2d0OpRcd2(__temp186, ____temp186Size,65546,__temp187); !
+! !
+! d2d0OpRcd2(__temp187, ____temp187Size,1.78,__temp188); !
+! !
+! d2d2OpCcd2(__temp168, ____temp168Size,__temp188, ____temp188Size,!
+! cc); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fftd2(cc, __ccSize,__temp189); !
+! !
+! ans68 = d2dispd0(__temp189, ____temp189Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // pure imaginary !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans69 = g2dispd0(__temp190, ____temp190Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(dd)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp191); !
+! !
+! d2d0OpRcd2(__temp191, ____temp191Size,15,__temp192); !
+! !
+! d2d0OpRcd2(__temp192, ____temp192Size,3.5,__temp193); !
+! !
+! d0d0OpRcd2(5,8,__temp194); !
+! !
+! d2d0OpRcd2(__temp194, ____temp194Size,6,__temp195); !
+! !
+! d2d0OpRcd2(__temp195, ____temp195Size,3,__temp196); !
+! !
+! d2d2OpCcd2(__temp193, ____temp193Size,__temp196, ____temp196Size,!
+! __temp197); !
+! !
+! d2z0OpStarz2(__temp197, ____temp197Size,DoubleComplex(0,1),dd); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(dd, __ddSize,__temp198); !
+! !
+! ans70 = z2dispd0(__temp198, ____temp198Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans71 = g2dispd0(__temp199, ____temp199Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(ee)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp200); !
+! !
+! d0d0OpRcd2(4,5.9,__temp201); !
+! !
+! d2d2OpCcd2(__temp200, ____temp200Size,__temp201, ____temp201Size,!
+! __temp202); !
+! !
+! d2z0OpStarz2(__temp202, ____temp202Size,DoubleComplex(0,1),ee); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(ee, __eeSize,__temp203); !
+! !
+! ans72 = z2dispd0(__temp203, ____temp203Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36!
+! 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 !
+! 65546 1.78 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans73 = g2dispd0(__temp204, ____temp204Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp205); !
+! !
+! d2d0OpRcd2(__temp205, ____temp205Size,5,__temp206); !
+! !
+! d2d0OpRcd2(__temp206, ____temp206Size,6,__temp207); !
+! !
+! d2d0OpRcd2(__temp207, ____temp207Size,3,__temp208); !
+! !
+! d2d0OpRcd2(__temp208, ____temp208Size,8,__temp209); !
+! !
+! d2d0OpRcd2(__temp209, ____temp209Size,9,__temp210); !
+! !
+! d2d0OpRcd2(__temp210, ____temp210Size,445,__temp211); !
+! !
+! d2d0OpRcd2(__temp211, ____temp211Size,1,__temp212); !
+! !
+! d2d0OpRcd2(__temp212, ____temp212Size,2,__temp213); !
+! !
+! d2d0OpRcd2(__temp213, ____temp213Size,3,__temp214); !
+! !
+! d2d0OpRcd2(__temp214, ____temp214Size,0,__temp215); !
+! !
+! d2d0OpRcd2(__temp215, ____temp215Size,125,__temp216); !
+! !
+! d2d0OpRcd2(__temp216, ____temp216Size,5,__temp217); !
+! !
+! d2d0OpRcd2(__temp217, ____temp217Size,41,__temp218); !
+! !
+! d2d0OpRcd2(__temp218, ____temp218Size,4,__temp219); !
+! !
+! d2d0OpRcd2(__temp219, ____temp219Size,5,__temp220); !
+! !
+! d2d0OpRcd2(__temp220, ____temp220Size,552,__temp221); !
+! !
+! d2d0OpRcd2(__temp221, ____temp221Size,2.36,__temp222); !
+! !
+! d2d0OpRcd2(__temp222, ____temp222Size,45656,__temp223); !
+! !
+! d2d0OpRcd2(__temp223, ____temp223Size,72.3,__temp224); !
+! !
+! d0d0OpRcd2(21,8,__temp225); !
+! !
+! d2d0OpRcd2(__temp225, ____temp225Size,2,__temp226); !
+! !
+! d2d0OpRcd2(__temp226, ____temp226Size,5,__temp227); !
+! !
+! d2d0OpRcd2(__temp227, ____temp227Size,6,__temp228); !
+! !
+! d2d0OpRcd2(__temp228, ____temp228Size,3,__temp229); !
+! !
+! d2d0OpRcd2(__temp229, ____temp229Size,4,__temp230); !
+! !
+! d2d0OpRcd2(__temp230, ____temp230Size,123,__temp231); !
+! !
+! d2d0OpRcd2(__temp231, ____temp231Size,5,__temp232); !
+! !
+! d2d0OpRcd2(__temp232, ____temp232Size,6,__temp233); !
+! !
+! d2d0OpRcd2(__temp233, ____temp233Size,0,__temp234); !
+! !
+! d2d0OpRcd2(__temp234, ____temp234Size,5,__temp235); !
+! !
+! d2d0OpRcd2(__temp235, ____temp235Size,548,__temp236); !
+! !
+! d2d0OpRcd2(__temp236, ____temp236Size,7,__temp237); !
+! !
+! d2d0OpRcd2(__temp237, ____temp237Size,65,__temp238); !
+! !
+! d2d0OpRcd2(__temp238, ____temp238Size,4,__temp239); !
+! !
+! d2d0OpRcd2(__temp239, ____temp239Size,2,__temp240); !
+! !
+! d2d0OpRcd2(__temp240, ____temp240Size,166,__temp241); !
+! !
+! d2d0OpRcd2(__temp241, ____temp241Size,4.12,__temp242); !
+! !
+! d2d0OpRcd2(__temp242, ____temp242Size,65546,__temp243); !
+! !
+! d2d0OpRcd2(__temp243, ____temp243Size,1.78,__temp244); !
+! !
+! d2d2OpCcd2(__temp224, ____temp224Size,__temp244, ____temp244Size,!
+! __temp245); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp245, ____temp245Size,ff); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(ff)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(ff, __ffSize,__temp246); !
+! !
+! ans74 = z2dispd0(__temp246, ____temp246Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans75 = g2dispd0(__temp247, ____temp247Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: gg = aa + dd; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(gg)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(aa, __aaSize,dd, __ddSize,gg); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(gg, __ggSize,__temp248); !
+! !
+! ans76 = z2dispd0(__temp248, ____temp248Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: hh = bb + ee; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans77 = g2dispd0(__temp249, ____temp249Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(hh)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(bb, __bbSize,ee, __eeSize,hh); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(hh, __hhSize,__temp250); !
+! !
+! ans78 = z2dispd0(__temp250, ____temp250Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: jj= cc + ff !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans79 = g2dispd0(__temp251, ____temp251Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(jj)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(cc, __ccSize,ff, __ffSize,jj); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fftz2(jj, __jjSize,__temp252); !
+! !
+! ans80 = z2dispd0(__temp252, ____temp252Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans81 = g2dispd0(__temp253, ____temp253Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans82 = g2dispd0(__temp254, ____temp254Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans83 = g2dispd0(__temp255, ____temp255Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // two output !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans84 = g2dispd0(__temp256, ____temp256Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // call ifft !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(aa,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(aa, __aaSize,1,__temp257); !
+! !
+! ans85 = d2dispd0(__temp257, ____temp257Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(bb,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans86 = g2dispd0(__temp258, ____temp258Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(bb, __bbSize,1,__temp259); !
+! !
+! ans87 = d2dispd0(__temp259, ____temp259Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(cc,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans88 = g2dispd0(__temp260, ____temp260Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(cc, __ccSize,1,__temp261); !
+! !
+! ans89 = d2dispd0(__temp261, ____temp261Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(dd,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans90 = g2dispd0(__temp262, ____temp262Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(dd, __ddSize,1,__temp263); !
+! !
+! ans91 = z2dispd0(__temp263, ____temp263Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(ee,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans92 = g2dispd0(__temp264, ____temp264Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(ee, __eeSize,1,__temp265); !
+! !
+! ans93 = z2dispd0(__temp265, ____temp265Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(ff,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans94 = g2dispd0(__temp266, ____temp266Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(ff, __ffSize,1,__temp267); !
+! !
+! ans95 = z2dispd0(__temp267, ____temp267Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans96 = g2dispd0(__temp268, ____temp268Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(gg,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(gg, __ggSize,1,__temp269); !
+! !
+! ans97 = z2dispd0(__temp269, ____temp269Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(hh,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans98 = g2dispd0(__temp270, ____temp270Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(hh, __hhSize,1,__temp271); !
+! !
+! ans99 = z2dispd0(__temp271, ____temp271Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(jj,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans100 = g2dispd0(__temp272, ____temp272Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(jj, __jjSize,1,__temp273); !
+! !
+! ans101 = z2dispd0(__temp273, ____temp273Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans102 = g2dispd0(__temp274, ____temp274Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans103 = g2dispd0(__temp275, ____temp275Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans104 = g2dispd0(__temp276, ____temp276Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans105 = g2dispd0(__temp277, ____temp277Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans106 = g2dispd0(__temp278, ____temp278Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(aa,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(bb,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(aa, __aaSize,-1,__temp279); !
+! !
+! ans107 = d2dispd0(__temp279, ____temp279Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans108 = g2dispd0(__temp280, ____temp280Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(cc,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(bb, __bbSize,-1,__temp281); !
+! !
+! ans109 = d2dispd0(__temp281, ____temp281Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans110 = g2dispd0(__temp282, ____temp282Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(dd,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0fftd2(cc, __ccSize,-1,__temp283); !
+! !
+! ans111 = d2dispd0(__temp283, ____temp283Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans112 = g2dispd0(__temp284, ____temp284Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(ee,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(dd, __ddSize,-1,__temp285); !
+! !
+! ans113 = z2dispd0(__temp285, ____temp285Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans114 = g2dispd0(__temp286, ____temp286Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(ff,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(ee, __eeSize,-1,__temp287); !
+! !
+! ans115 = z2dispd0(__temp287, ____temp287Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans116 = g2dispd0(__temp288, ____temp288Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(ff, __ffSize,-1,__temp289); !
+! !
+! ans117 = z2dispd0(__temp289, ____temp289Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(gg,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans118 = g2dispd0(__temp290, ____temp290Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(hh,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(gg, __ggSize,-1,__temp291); !
+! !
+! ans119 = z2dispd0(__temp291, ____temp291Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans120 = g2dispd0(__temp292, ____temp292Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(fft(jj,-1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(hh, __hhSize,-1,__temp293); !
+! !
+! ans121 = z2dispd0(__temp293, ____temp293Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(""); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans122 = g2dispd0(__temp294, ____temp294Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0fftz2(jj, __jjSize,-1,__temp295); !
+! !
+! ans123 = z2dispd0(__temp295, ____temp295Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans124 = g2dispd0(__temp296, ____temp296Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Fft.sci.tst b/2.3-1/tests/unit_tests/double/test_Fft.sci.tst
new file mode 100644
index 00000000..73956c4c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Fft.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Fft.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Find.sci b/2.3-1/tests/unit_tests/double/test_Find.sci
new file mode 100644
index 00000000..0f5681f8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Find.sci
@@ -0,0 +1,31 @@
+function test_Find ()
+
+ disp (find( 1 == 3 )); // d0Findd0
+
+ a = [1 2 3; 4 5 6];
+ b = [1 8 3; 9 5 6];
+ disp (find( a == b )); // d2Findd2
+
+ [ z , j ] = find (1 == 3); // d0Findd0d0
+ [ k , l ] = find (a == b); // d2Findd2d2
+
+ disp(z);
+ disp(j);
+ disp(k);
+ disp(l);
+
+ disp ( find( 1 == 3 , 2 )); // d0d0Findd0
+
+ c = [1 2 3; 4 5 6];
+ d = [1 8 3; 9 5 6];
+ disp (find( c == d , 2 )); // d2d0Findd2
+
+ [ o , p ] = find (1 == 3 , 2); // d0d0Findd0d0
+ [ q , s ] = find (c == d , 2); // d2d0Findd2d2
+
+ disp(o);
+ disp(p);
+ disp(q);
+ disp(s);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Find.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Find.sci.dia.ref
new file mode 100644
index 00000000..89d20014
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Find.sci.dia.ref
@@ -0,0 +1,1187 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Find.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ []
+
+ 1. 4. 5. 6.
+
+ []
+
+ []
+
+ 1. 2. 1. 2.
+
+ 1. 2. 3. 3.
+
+ []
+
+ 1. 4.
+
+ []
+
+ []
+
+ 1. 2.
+
+ 1. 2.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Find"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Find/test_Find_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Find/test_Find_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (find( 1 == 3 )); // d0Findd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 8 3; 9 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (find( a == b )); // d2Findd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: [ z , j ] = find (1 == 3); // d0Findd0d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: [ k , l ] = find (a == b); // d2Findd2d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(j);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(k);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(l);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ( find( 1 == 3 , 2 )); // d0d0Findd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = [1 2 3; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [1 8 3; 9 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (find( c == d , 2 )); // d2d0Findd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: [ o , p ] = find (1 == 3 , 2); // d0d0Findd0d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: [ q , s ] = find (c == d , 2); // d2d0Findd2d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(o);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(p);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(q);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(s);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Find () !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double __temp2; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[2 * 3]; !
+! !
+! int __aSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[1 * 2]; !
+! !
+! int ____temp9Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp10[1 * 3]; !
+! !
+! int ____temp10Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double b[2 * 3]; !
+! !
+! int __bSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp11[2 * 3]; !
+! !
+! int ____temp11Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp12[1 * 6]; !
+! !
+! int ____temp12Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp13; !
+! !
+! !
+! !
+! double z; !
+! !
+! !
+! !
+! double j; !
+! !
+! !
+! !
+! double __temp14[2 * 3]; !
+! !
+! int ____temp14Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double k[1 * 1 * 6 * 6]; !
+! !
+! int __kSize[4] = {1, 1, 6, 6};; !
+! !
+! !
+! !
+! double l[1 * 1 * 6 * 6]; !
+! !
+! int __lSize[4] = {1, 1, 6, 6};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp15; !
+! !
+! !
+! !
+! double __temp16; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp17[1 * 2]; !
+! !
+! int ____temp17Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp18[1 * 3]; !
+! !
+! int ____temp18Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp19[1 * 2]; !
+! !
+! int ____temp19Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp20[1 * 3]; !
+! !
+! int ____temp20Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double c[2 * 3]; !
+! !
+! int __cSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp21[1 * 2]; !
+! !
+! int ____temp21Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp22[1 * 3]; !
+! !
+! int ____temp22Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp23[1 * 2]; !
+! !
+! int ____temp23Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp24[1 * 3]; !
+! !
+! int ____temp24Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double d[2 * 3]; !
+! !
+! int __dSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp25[2 * 3]; !
+! !
+! int ____temp25Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp27; !
+! !
+! !
+! !
+! double o; !
+! !
+! !
+! !
+! double p; !
+! !
+! !
+! !
+! double __temp28[2 * 3]; !
+! !
+! int ____temp28Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double q[1 * 1 * 2 * 2]; !
+! !
+! int __qSize[4] = {1, 1, 2, 2};; !
+! !
+! !
+! !
+! double s[1 * 1 * 2 * 2]; !
+! !
+! int __sSize[4] = {1, 1, 2, 2};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (find( 1 == 3 )); // d0Findd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0d0OpLogEqd0(1,3); !
+! !
+! __temp2 = d0findd0(__temp1); !
+! !
+! ans1 = d0dispd0(__temp2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,3,__temp4); !
+! !
+! d0d0OpRcd2(4,5,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,6,__temp6); !
+! !
+! d2d2OpCcd2(__temp4, ____temp4Size,__temp6, ____temp6Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 8 3; 9 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,8,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,3,__temp8); !
+! !
+! d0d0OpRcd2(9,5,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,6,__temp10); !
+! !
+! d2d2OpCcd2(__temp8, ____temp8Size,__temp10, ____temp10Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (find( a == b )); // d2Findd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogEqd2(a, __aSize,b, __bSize,__temp11); !
+! !
+! d2findd2(__temp11, ____temp11Size,__temp12); !
+! !
+! ans2 = d2dispd0(__temp12, ____temp12Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: [ z , j ] = find (1 == 3); // d0Findd0d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp13 = d0d0OpLogEqd0(1,3); !
+! !
+! z = d0findd0d0(__temp13,&j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: [ k , l ] = find (a == b); // d2Findd2d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogEqd2(a, __aSize,b, __bSize,__temp14); !
+! !
+! d2findd2d2(__temp14, ____temp14Size,k,l); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = d0dispd0(z); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(j); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = d0dispd0(j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(k); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = d2dispd0(k, __kSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(l); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = d2dispd0(l, __lSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ( find( 1 == 3 , 2 )); // d0d0Findd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = d0d0OpLogEqd0(1,3); !
+! !
+! __temp16 = d0d0findd0(__temp15,2); !
+! !
+! ans7 = d0dispd0(__temp16); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = [1 2 3; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp17); !
+! !
+! d2d0OpRcd2(__temp17, ____temp17Size,3,__temp18); !
+! !
+! d0d0OpRcd2(4,5,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,6,__temp20); !
+! !
+! d2d2OpCcd2(__temp18, ____temp18Size,__temp20, ____temp20Size,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [1 8 3; 9 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,8,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,3,__temp22); !
+! !
+! d0d0OpRcd2(9,5,__temp23); !
+! !
+! d2d0OpRcd2(__temp23, ____temp23Size,6,__temp24); !
+! !
+! d2d2OpCcd2(__temp22, ____temp22Size,__temp24, ____temp24Size,d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (find( c == d , 2 )); // d2d0Findd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogEqd2(c, __cSize,d, __dSize,__temp25); !
+! !
+! d2d0findd2(__temp25, ____temp25Size,2,__temp26); !
+! !
+! ans8 = d2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: [ o , p ] = find (1 == 3 , 2); // d0d0Findd0d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp27 = d0d0OpLogEqd0(1,3); !
+! !
+! o = d0d0findd0d0(__temp27,2,&p); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: [ q , s ] = find (c == d , 2); // d2d0Findd2d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogEqd2(c, __cSize,d, __dSize,__temp28); !
+! !
+! d2d0findd2d2(__temp28, ____temp28Size,2,q,s); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(o); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = d0dispd0(o); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(p); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = d0dispd0(p); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(q); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans11 = d2dispd0(q, __qSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(s); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = d2dispd0(s, __sSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Find.sci.tst b/2.3-1/tests/unit_tests/double/test_Find.sci.tst
new file mode 100644
index 00000000..c50721c2
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Find.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Find.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_IFFT.sci b/2.3-1/tests/unit_tests/double/test_IFFT.sci
new file mode 100644
index 00000000..b49cf726
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_IFFT.sci
@@ -0,0 +1,89 @@
+function test_IFFT()
+
+
+disp(ifft(2)); // d0IFFTd0
+disp(ifft(%i + 4)) // z0IFFTz0
+
+disp(ifft([1 2])); // d2IFFTd2
+disp(ifft([1 -2 3] + zeros(1 , 3)*%i )); // d2IFFTz2
+disp(ifft([1 2]*%i)); // z2IFFTz2
+
+disp(ifft(4.4))
+disp(ifft(%i + 3.4))
+
+
+// one input
+ a = [10 1 15 3.5 ]; //d2Fftz2
+ Abis = a + zeros(a)*%i ;
+ disp(ifft(Abis));
+ disp("********1*******");
+ b = [25 3.6]; // d2Fftd2
+ disp(ifft(b));
+ disp("********2*******");
+ c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ cbis = c + zeros(c)*%i ;
+ disp(ifft(cbis));
+ disp("********3*********");
+ // pure imaginary
+ d = [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(ifft(d));
+ disp("********4*********");
+ e = [25 3.6]*%i; // z2Fftd2
+ disp(ifft(e));
+ disp("********5***********");
+ f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(ifft(f));
+ disp("********6***********");
+ // full complex
+
+ g = a + [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(ifft(g));
+ disp("********7***********");
+ h = b + [25 3.6]*%i; // z2Fftd2
+ disp(ifft(h));
+ disp("********8***********");
+ j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(ifft(j));
+ disp("********************");
+ disp("*******************");
+ disp("*******************");
+ disp("********************");
+
+
+// ********************
+// MATRIX
+// ********************
+// one input
+ aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2
+ disp(ifft(aa));
+ disp("********9***********");
+ bb = [25 3.6 ; 4 3.2]; // d2Fftd2
+ disp(ifft(bb));
+ disp("********10**********");
+ cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+ disp(ifft(cc));
+ disp("********11**********");
+ // pure imaginary
+ dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2
+ disp(ifft(dd));
+ disp("********12**********");
+ ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2
+ disp(ifft(ee));
+ disp("********13**********");
+ ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+
+ disp(ifft(ff));
+ disp("********14**********");
+ // full complex
+
+ gg = aa + dd; //z2Fftz2
+ disp(ifft(gg));
+ disp("********15**********");
+ hh = bb + ee; // z2Fftd2
+ disp(ifft(hh));
+ disp("********16**********");
+ jj= cc + ff
+ disp(ifft(jj));
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_IFFT.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_IFFT.sci.dia.ref
new file mode 100644
index 00000000..b1023a1b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_IFFT.sci.dia.ref
@@ -0,0 +1,4472 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_IFFT.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 2.
+
+ 4. + i
+
+ 1.5 - 0.5
+
+ 0.6666667 0.1666667 - 1.4433757i 0.1666667 + 1.4433757i
+
+ 1.5i - 0.5i
+
+ 4.4
+
+ 3.4 + i
+
+ 7.375 - 1.25 - 0.625i 5.125 - 1.25 + 0.625i
+
+ ********1*******
+
+ 14.3 10.7
+
+ ********2*******
+
+
+ column 1 to 3
+
+ 2236.0314 1792.8169 - 1235.3786i 769.49776 - 2055.1006i
+
+ column 4 to 5
+
+ - 483.22773 - 2116.6758i - 1602.6181 - 1433.2571i
+
+ column 6 to 7
+
+ - 2132.1424 - 340.59732i - 1925.5675 + 921.43654i
+
+ column 8 to 9
+
+ - 1106.7043 + 1873.9016i 118.16434 + 2150.2941i
+
+ column 10 to 11
+
+ 1373.4461 + 1728.4382i 2083.3191 + 665.95496i
+
+ column 12 to 13
+
+ 2083.3191 - 665.95496i 1373.4461 - 1728.4382i
+
+ column 14 to 15
+
+ 118.16434 - 2150.2941i - 1106.7043 - 1873.9016i
+
+ column 16 to 17
+
+ - 1925.5675 - 921.43654i - 2132.1424 + 340.59732i
+
+ column 18 to 19
+
+ - 1602.6181 + 1433.2571i - 483.22773 + 2116.6758i
+
+ column 20 to 21
+
+ 769.49776 + 2055.1006i 1792.8169 + 1235.3786i
+
+ ********3*********
+
+ 7.375i 0.625 - 1.25i 5.125i - 0.625 - 1.25i
+
+ ********4*********
+
+ 14.3i 10.7i
+
+ ********5***********
+
+
+ column 1 to 3
+
+ 2236.0314i 1235.3786 + 1792.8169i 2055.1006 + 769.49776i
+
+ column 4 to 5
+
+ 2116.6758 - 483.22773i 1433.2571 - 1602.6181i
+
+ column 6 to 7
+
+ 340.59732 - 2132.1424i - 921.43654 - 1925.5675i
+
+ column 8 to 9
+
+ - 1873.9016 - 1106.7043i - 2150.2941 + 118.16434i
+
+ column 10 to 11
+
+ - 1728.4382 + 1373.4461i - 665.95496 + 2083.3191i
+
+ column 12 to 13
+
+ 665.95496 + 2083.3191i 1728.4382 + 1373.4461i
+
+ column 14 to 15
+
+ 2150.2941 + 118.16434i 1873.9016 - 1106.7043i
+
+ column 16 to 17
+
+ 921.43654 - 1925.5675i - 340.59732 - 2132.1424i
+
+ column 18 to 19
+
+ - 1433.2571 - 1602.6181i - 2116.6758 - 483.22773i
+
+ column 20 to 21
+
+ - 2055.1006 + 769.49776i - 1235.3786 + 1792.8169i
+
+ ********6***********
+
+
+ column 1 to 3
+
+ 7.375 + 7.375i - 0.625 - 1.875i 5.125 + 5.125i
+
+ column 4
+
+ - 1.875 - 0.625i
+
+ ********7***********
+
+ 14.3 + 14.3i 10.7 + 10.7i
+
+ ********8***********
+
+
+ column 1 to 2
+
+ 2236.0314 + 2236.0314i 3028.1955 + 557.43835i
+
+ column 3 to 4
+
+ 2824.5983 - 1285.6028i 1633.448 - 2599.9035i
+
+ column 5 to 6
+
+ - 169.36101 - 3035.8752i - 1791.5451 - 2472.7397i
+
+ column 7 to 8
+
+ - 2847.004 - 1004.1309i - 2980.6059 + 767.19736i
+
+ column 9 to 10
+
+ - 2032.1297 + 2268.4584i - 354.99203 + 3101.8843i
+
+ column 11 to 12
+
+ 1417.3642 + 2749.2741i 2749.2741 + 1417.3642i
+
+ column 13 to 14
+
+ 3101.8843 - 354.99203i 2268.4584 - 2032.1297i
+
+ column 15 to 16
+
+ 767.19736 - 2980.6059i - 1004.1309 - 2847.004i
+
+ column 17 to 18
+
+ - 2472.7397 - 1791.5451i - 3035.8752 - 169.36101i
+
+ column 19 to 20
+
+ - 2599.9035 + 1633.448i - 1285.6028 + 2824.5983i
+
+ column 21
+
+ 557.43835 + 3028.1955i
+
+ ********************
+
+ *******************
+
+ *******************
+
+ ********************
+
+ 6.5625 - 1.125 - 0.6875i 3.1875 - 1.125 + 0.6875i
+ 0.8125 - 0.125 + 0.0625i 1.9375 - 0.125 - 0.0625i
+
+ ********9***********
+
+ 8.95 5.55
+ 5.35 5.15
+
+ ********10**********
+
+
+ column 1 to 3
+
+ 2702.1086 2173.7629 - 1504.7062i 958.3983 - 2473.753i
+ - 466.07714 - 380.94596 + 269.32767i - 188.90055 + 418.65244i
+
+ column 4 to 5
+
+ - 590.43082 - 2590.6981i - 1949.7881 - 1760.3148i
+ 107.20309 + 474.0223i 347.16999 + 327.05766i
+
+ column 6 to 7
+
+ - 2598.9174 - 412.95691i - 2373.3059 + 1140.6306i
+ 466.775 + 72.359584i 447.73845 - 219.19404i
+
+ column 8 to 9
+
+ - 1324.2514 + 2286.3879i 158.37631 + 2625.3279i
+ 217.54714 - 412.48625i - 40.211977 - 475.03387i
+
+ column 10 to 11
+
+ 1671.4325 + 2098.0929i 2531.4195 + 783.93509i
+ - 297.98631 - 369.65472i - 448.10032 - 117.98013i
+
+ column 12 to 13
+
+ 2531.4195 - 783.93509i 1671.4325 - 2098.0929i
+ - 448.10032 + 117.98013i - 297.98631 + 369.65472i
+
+ column 14 to 15
+
+ 158.37631 - 2625.3279i - 1324.2514 - 2286.3879i
+ - 40.211977 + 475.03387i 217.54714 + 412.48625i
+
+ column 16 to 17
+
+ - 2373.3059 - 1140.6306i - 2598.9174 + 412.95691i
+ 447.73845 + 219.19404i 466.775 - 72.359584i
+
+ column 18 to 19
+
+ - 1949.7881 + 1760.3148i - 590.43082 + 2590.6981i
+ 347.16999 - 327.05766i 107.20309 - 474.0223i
+
+ column 20 to 21
+
+ 958.3983 + 2473.753i 2173.7629 + 1504.7062i
+ - 188.90055 - 418.65244i - 380.94596 - 269.32767i
+
+ ********11**********
+
+ 6.4375i - 0.3125 - 0.75i 2.5625i 0.3125 - 0.75i
+ 0.9375i 0.9375 - 0.5i 2.5625i - 0.9375 - 0.5i
+
+ ********12**********
+
+ 9.625i 4.875i
+ 4.675i 5.825i
+
+ ********13**********
+
+
+ column 1 to 3
+
+ 2702.1086i 1504.7062 + 2173.7629i 2473.753 + 958.3983i
+ - 466.07714i - 269.32767 - 380.94596i - 418.65244 - 188.90055i
+
+ column 4 to 5
+
+ 2590.6981 - 590.43082i 1760.3148 - 1949.7881i
+ - 474.0223 + 107.20309i - 327.05766 + 347.16999i
+
+ column 6 to 7
+
+ 412.95691 - 2598.9174i - 1140.6306 - 2373.3059i
+ - 72.359584 + 466.775i 219.19404 + 447.73845i
+
+ column 8 to 9
+
+ - 2286.3879 - 1324.2514i - 2625.3279 + 158.37631i
+ 412.48625 + 217.54714i 475.03387 - 40.211977i
+
+ column 10 to 11
+
+ - 2098.0929 + 1671.4325i - 783.93509 + 2531.4195i
+ 369.65472 - 297.98631i 117.98013 - 448.10032i
+
+ column 12 to 13
+
+ 783.93509 + 2531.4195i 2098.0929 + 1671.4325i
+ - 117.98013 - 448.10032i - 369.65472 - 297.98631i
+
+ column 14 to 15
+
+ 2625.3279 + 158.37631i 2286.3879 - 1324.2514i
+ - 475.03387 - 40.211977i - 412.48625 + 217.54714i
+
+ column 16 to 17
+
+ 1140.6306 - 2373.3059i - 412.95691 - 2598.9174i
+ - 219.19404 + 447.73845i 72.359584 + 466.775i
+
+ column 18 to 19
+
+ - 1760.3148 - 1949.7881i - 2590.6981 - 590.43082i
+ 327.05766 + 347.16999i 474.0223 + 107.20309i
+
+ column 20 to 21
+
+ - 2473.753 + 958.3983i - 1504.7062 + 2173.7629i
+ 418.65244 - 188.90055i 269.32767 - 380.94596i
+
+ ********14**********
+
+
+ column 1 to 3
+
+ 6.5625 + 6.4375i - 1.4375 - 1.4375i 3.1875 + 2.5625i
+ 0.8125 + 0.9375i 0.8125 - 0.4375i 1.9375 + 2.5625i
+
+ column 4
+
+ - 0.8125 - 0.0625i
+ - 1.0625 - 0.5625i
+
+ ********15**********
+
+ 8.95 + 9.625i 5.55 + 4.875i
+ 5.35 + 4.675i 5.15 + 5.825i
+
+ ********16**********
+
+
+ column 1 to 2
+
+ 2702.1086 + 2702.1086i 3678.4691 + 669.05664i
+ - 466.07714 - 466.07714i - 650.27363 - 111.61828i
+
+ column 3 to 4
+
+ 3432.1513 - 1515.3547i 2000.2672 - 3181.1289i
+ - 607.55299 + 229.7519i - 366.81921 + 581.22539i
+
+ column 5 to 6
+
+ - 189.47334 - 3710.1029i - 2185.9605 - 3011.8743i
+ 20.112333 + 674.22765i 394.41542 + 539.13459i
+
+ column 7 to 8
+
+ - 3513.9365 - 1232.6753i - 3610.6393 + 962.13647i
+ 666.93249 + 228.54441i 630.03339 - 194.93911i
+
+ column 9 to 10
+
+ - 2466.9516 + 2783.7043i - 426.66045 + 3769.5253i
+ 434.8219 - 515.24585i 71.668414 - 667.64102i
+
+ column 11 to 12
+
+ 1747.4844 + 3315.3546i 3315.3546 + 1747.4844i
+ - 330.12019 - 566.08045i - 566.08045 - 330.12019i
+
+ column 13 to 14
+
+ 3769.5253 - 426.66045i 2783.7043 - 2466.9516i
+ - 667.64102 + 71.668414i - 515.24585 + 434.8219i
+
+ column 15 to 16
+
+ 962.13647 - 3610.6393i - 1232.6753 - 3513.9365i
+ - 194.93911 + 630.03339i 228.54441 + 666.93249i
+
+ column 17 to 18
+
+ - 3011.8743 - 2185.9605i - 3710.1029 - 189.47334i
+ 539.13459 + 394.41542i 674.22765 + 20.112333i
+
+ column 19 to 20
+
+ - 3181.1289 + 2000.2672i - 1515.3547 + 3432.1513i
+ 581.22539 - 366.81921i 229.7519 - 607.55299i
+
+ column 21
+
+ 669.05664 + 3678.4691i
+ - 111.61828 - 650.27363i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_IFFT"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_IFFT/test_IFFT_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_IFFT/test_IFFT_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(2)); // d0IFFTd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(%i + 4)) // z0IFFTz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft([1 2])); // d2IFFTd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft([1 -2 3] + zeros(1 , 3)*%i )); // d2IFFTz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft([1 2]*%i)); // z2IFFTz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(4.4))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(%i + 3.4))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // one input
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [10 1 15 3.5 ]; //d2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: Abis = a + zeros(a)*%i ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(Abis));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********1*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [25 3.6]; // d2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********2*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 456
+ 56 72.3 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cbis = c + zeros(c)*%i ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(cbis));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********3*********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // pure imaginary
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [10 1 15 3.5 ]*%i; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(d));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********4*********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = [25 3.6]*%i; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(e));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********5***********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36
+ 45656 72.3 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(f));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********6***********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = a + [10 1 15 3.5 ]*%i; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(g));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********7***********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = b + [25 3.6]*%i; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(h));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********8***********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.
+ 36 45656 72.3 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(j));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("*******************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********************");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ********************
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // MATRIX
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ********************
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // one input
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(aa));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********9***********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: bb = [25 3.6 ; 4 3.2]; // d2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(bb));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********10**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45
+ 656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 6554
+ 6 1.78 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(cc));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********11**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // pure imaginary
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(dd));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********12**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(ee));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********13**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36
+ 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12
+ 65546 1.78 ]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(ff));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********14**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // full complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: gg = aa + dd; //z2Fftz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(gg));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********15**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: hh = bb + ee; // z2Fftd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(hh));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp("********16**********");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: jj= cc + ff
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ifft(jj));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_IFFT() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp7[1 * 3]; !
+! !
+! int ____temp7Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp10[1 * 3]; !
+! !
+! int ____temp10Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp11[1 * 3]; !
+! !
+! int ____temp11Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp13[1 * 2]; !
+! !
+! int ____temp13Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp15; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex __temp16; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp18[1 * 2]; !
+! !
+! int ____temp18Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp19[1 * 3]; !
+! !
+! int ____temp19Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[1 * 4]; !
+! !
+! int __aSize[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp20[1 * 4]; !
+! !
+! int ____temp20Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp21[1 * 4]; !
+! !
+! int ____temp21Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex Abis[1 * 4]; !
+! !
+! int __AbisSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp22[1 * 4]; !
+! !
+! int ____temp22Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! char __temp23[1*17] = {"********1*******"}; !
+! !
+! int ____temp23Size[2] = {1,17}; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double b[1 * 2]; !
+! !
+! int __bSize[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! char __temp25[1*17] = {"********2*******"}; !
+! !
+! int ____temp25Size[2] = {1,17}; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp27[1 * 3]; !
+! !
+! int ____temp27Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp28[1 * 4]; !
+! !
+! int ____temp28Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp29[1 * 5]; !
+! !
+! int ____temp29Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp30[1 * 6]; !
+! !
+! int ____temp30Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp31[1 * 7]; !
+! !
+! int ____temp31Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp32[1 * 8]; !
+! !
+! int ____temp32Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp33[1 * 9]; !
+! !
+! int ____temp33Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp34[1 * 10]; !
+! !
+! int ____temp34Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp35[1 * 11]; !
+! !
+! int ____temp35Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp36[1 * 12]; !
+! !
+! int ____temp36Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp37[1 * 13]; !
+! !
+! int ____temp37Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp38[1 * 14]; !
+! !
+! int ____temp38Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp39[1 * 15]; !
+! !
+! int ____temp39Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp40[1 * 16]; !
+! !
+! int ____temp40Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp41[1 * 17]; !
+! !
+! int ____temp41Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp42[1 * 18]; !
+! !
+! int ____temp42Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp43[1 * 19]; !
+! !
+! int ____temp43Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp44[1 * 20]; !
+! !
+! int ____temp44Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double c[1 * 21]; !
+! !
+! int __cSize[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp45[1 * 21]; !
+! !
+! int ____temp45Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp46[1 * 21]; !
+! !
+! int ____temp46Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex cbis[1 * 21]; !
+! !
+! int __cbisSize[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp47[1 * 21]; !
+! !
+! int ____temp47Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! char __temp48[1*19] = {"********3*********"}; !
+! !
+! int ____temp48Size[2] = {1,19}; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double __temp49[1 * 2]; !
+! !
+! int ____temp49Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp50[1 * 3]; !
+! !
+! int ____temp50Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp51[1 * 4]; !
+! !
+! int ____temp51Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex d[1 * 4]; !
+! !
+! int __dSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp52[1 * 4]; !
+! !
+! int ____temp52Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! char __temp53[1*19] = {"********4*********"}; !
+! !
+! int ____temp53Size[2] = {1,19}; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double __temp54[1 * 2]; !
+! !
+! int ____temp54Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex e[1 * 2]; !
+! !
+! int __eSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp55[1 * 2]; !
+! !
+! int ____temp55Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! char __temp56[1*21] = {"********5***********"}; !
+! !
+! int ____temp56Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! double __temp57[1 * 2]; !
+! !
+! int ____temp57Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp58[1 * 3]; !
+! !
+! int ____temp58Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp59[1 * 4]; !
+! !
+! int ____temp59Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp60[1 * 5]; !
+! !
+! int ____temp60Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp61[1 * 6]; !
+! !
+! int ____temp61Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp62[1 * 7]; !
+! !
+! int ____temp62Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp63[1 * 8]; !
+! !
+! int ____temp63Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp64[1 * 9]; !
+! !
+! int ____temp64Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp65[1 * 10]; !
+! !
+! int ____temp65Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp66[1 * 11]; !
+! !
+! int ____temp66Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp67[1 * 12]; !
+! !
+! int ____temp67Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp68[1 * 13]; !
+! !
+! int ____temp68Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp69[1 * 14]; !
+! !
+! int ____temp69Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp70[1 * 15]; !
+! !
+! int ____temp70Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp71[1 * 16]; !
+! !
+! int ____temp71Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp72[1 * 17]; !
+! !
+! int ____temp72Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp73[1 * 18]; !
+! !
+! int ____temp73Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp74[1 * 19]; !
+! !
+! int ____temp74Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp75[1 * 20]; !
+! !
+! int ____temp75Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp76[1 * 21]; !
+! !
+! int ____temp76Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex f[1 * 21]; !
+! !
+! int __fSize[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp77[1 * 21]; !
+! !
+! int ____temp77Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! char __temp78[1*21] = {"********6***********"}; !
+! !
+! int ____temp78Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! double __temp79[1 * 2]; !
+! !
+! int ____temp79Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp80[1 * 3]; !
+! !
+! int ____temp80Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp81[1 * 4]; !
+! !
+! int ____temp81Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp82[1 * 4]; !
+! !
+! int ____temp82Size[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex g[1 * 4]; !
+! !
+! int __gSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp83[1 * 4]; !
+! !
+! int ____temp83Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! char __temp84[1*21] = {"********7***********"}; !
+! !
+! int ____temp84Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans21; !
+! !
+! !
+! !
+! double __temp85[1 * 2]; !
+! !
+! int ____temp85Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp86[1 * 2]; !
+! !
+! int ____temp86Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex h[1 * 2]; !
+! !
+! int __hSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp87[1 * 2]; !
+! !
+! int ____temp87Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans22; !
+! !
+! !
+! !
+! char __temp88[1*21] = {"********8***********"}; !
+! !
+! int ____temp88Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans23; !
+! !
+! !
+! !
+! double __temp89[1 * 2]; !
+! !
+! int ____temp89Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp90[1 * 3]; !
+! !
+! int ____temp90Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp91[1 * 4]; !
+! !
+! int ____temp91Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp92[1 * 5]; !
+! !
+! int ____temp92Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp93[1 * 6]; !
+! !
+! int ____temp93Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp94[1 * 7]; !
+! !
+! int ____temp94Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp95[1 * 8]; !
+! !
+! int ____temp95Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp96[1 * 9]; !
+! !
+! int ____temp96Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp97[1 * 10]; !
+! !
+! int ____temp97Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp98[1 * 11]; !
+! !
+! int ____temp98Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp99[1 * 12]; !
+! !
+! int ____temp99Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp100[1 * 13]; !
+! !
+! int ____temp100Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp101[1 * 14]; !
+! !
+! int ____temp101Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp102[1 * 15]; !
+! !
+! int ____temp102Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp103[1 * 16]; !
+! !
+! int ____temp103Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp104[1 * 17]; !
+! !
+! int ____temp104Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp105[1 * 18]; !
+! !
+! int ____temp105Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp106[1 * 19]; !
+! !
+! int ____temp106Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp107[1 * 20]; !
+! !
+! int ____temp107Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp108[1 * 21]; !
+! !
+! int ____temp108Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp109[1 * 21]; !
+! !
+! int ____temp109Size[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex j[1 * 21]; !
+! !
+! int __jSize[2] = {1, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp110[1 * 21]; !
+! !
+! int ____temp110Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double ans24; !
+! !
+! !
+! !
+! char __temp111[1*21] = {"********************"}; !
+! !
+! int ____temp111Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans25; !
+! !
+! !
+! !
+! char __temp112[1*20] = {"*******************"}; !
+! !
+! int ____temp112Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans26; !
+! !
+! !
+! !
+! char __temp113[1*20] = {"*******************"}; !
+! !
+! int ____temp113Size[2] = {1,20}; !
+! !
+! !
+! !
+! double ans27; !
+! !
+! !
+! !
+! char __temp114[1*21] = {"********************"}; !
+! !
+! int ____temp114Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans28; !
+! !
+! !
+! !
+! double __temp115[1 * 2]; !
+! !
+! int ____temp115Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp116[1 * 3]; !
+! !
+! int ____temp116Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp117[1 * 4]; !
+! !
+! int ____temp117Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp118[1 * 2]; !
+! !
+! int ____temp118Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp119[1 * 3]; !
+! !
+! int ____temp119Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp120[1 * 4]; !
+! !
+! int ____temp120Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double aa[2 * 4]; !
+! !
+! int __aaSize[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp121[2 * 4]; !
+! !
+! int ____temp121Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans29; !
+! !
+! !
+! !
+! char __temp122[1*21] = {"********9***********"}; !
+! !
+! int ____temp122Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans30; !
+! !
+! !
+! !
+! double __temp123[1 * 2]; !
+! !
+! int ____temp123Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp124[1 * 2]; !
+! !
+! int ____temp124Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double bb[2 * 2]; !
+! !
+! int __bbSize[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp125[2 * 2]; !
+! !
+! int ____temp125Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans31; !
+! !
+! !
+! !
+! char __temp126[1*21] = {"********10**********"}; !
+! !
+! int ____temp126Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans32; !
+! !
+! !
+! !
+! double __temp127[1 * 2]; !
+! !
+! int ____temp127Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp128[1 * 3]; !
+! !
+! int ____temp128Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp129[1 * 4]; !
+! !
+! int ____temp129Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp130[1 * 5]; !
+! !
+! int ____temp130Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp131[1 * 6]; !
+! !
+! int ____temp131Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp132[1 * 7]; !
+! !
+! int ____temp132Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp133[1 * 8]; !
+! !
+! int ____temp133Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp134[1 * 9]; !
+! !
+! int ____temp134Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp135[1 * 10]; !
+! !
+! int ____temp135Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp136[1 * 11]; !
+! !
+! int ____temp136Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp137[1 * 12]; !
+! !
+! int ____temp137Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp138[1 * 13]; !
+! !
+! int ____temp138Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp139[1 * 14]; !
+! !
+! int ____temp139Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp140[1 * 15]; !
+! !
+! int ____temp140Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp141[1 * 16]; !
+! !
+! int ____temp141Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp142[1 * 17]; !
+! !
+! int ____temp142Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp143[1 * 18]; !
+! !
+! int ____temp143Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp144[1 * 19]; !
+! !
+! int ____temp144Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp145[1 * 20]; !
+! !
+! int ____temp145Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp146[1 * 21]; !
+! !
+! int ____temp146Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp147[1 * 2]; !
+! !
+! int ____temp147Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp148[1 * 3]; !
+! !
+! int ____temp148Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp149[1 * 4]; !
+! !
+! int ____temp149Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp150[1 * 5]; !
+! !
+! int ____temp150Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp151[1 * 6]; !
+! !
+! int ____temp151Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp152[1 * 7]; !
+! !
+! int ____temp152Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp153[1 * 8]; !
+! !
+! int ____temp153Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp154[1 * 9]; !
+! !
+! int ____temp154Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp155[1 * 10]; !
+! !
+! int ____temp155Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp156[1 * 11]; !
+! !
+! int ____temp156Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp157[1 * 12]; !
+! !
+! int ____temp157Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp158[1 * 13]; !
+! !
+! int ____temp158Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp159[1 * 14]; !
+! !
+! int ____temp159Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp160[1 * 15]; !
+! !
+! int ____temp160Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp161[1 * 16]; !
+! !
+! int ____temp161Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp162[1 * 17]; !
+! !
+! int ____temp162Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp163[1 * 18]; !
+! !
+! int ____temp163Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp164[1 * 19]; !
+! !
+! int ____temp164Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp165[1 * 20]; !
+! !
+! int ____temp165Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp166[1 * 21]; !
+! !
+! int ____temp166Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double cc[2 * 21]; !
+! !
+! int __ccSize[2] = {2, 21};; !
+! !
+! !
+! !
+! double __temp167[2 * 21]; !
+! !
+! int ____temp167Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans33; !
+! !
+! !
+! !
+! char __temp168[1*21] = {"********11**********"}; !
+! !
+! int ____temp168Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans34; !
+! !
+! !
+! !
+! double __temp169[1 * 2]; !
+! !
+! int ____temp169Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp170[1 * 3]; !
+! !
+! int ____temp170Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp171[1 * 4]; !
+! !
+! int ____temp171Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp172[1 * 2]; !
+! !
+! int ____temp172Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp173[1 * 3]; !
+! !
+! int ____temp173Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp174[1 * 4]; !
+! !
+! int ____temp174Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp175[2 * 4]; !
+! !
+! int ____temp175Size[2] = {2, 4};; !
+! !
+! !
+! !
+! doubleComplex dd[2 * 4]; !
+! !
+! int __ddSize[2] = {2, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp176[2 * 4]; !
+! !
+! int ____temp176Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans35; !
+! !
+! !
+! !
+! char __temp177[1*21] = {"********12**********"}; !
+! !
+! int ____temp177Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans36; !
+! !
+! !
+! !
+! double __temp178[1 * 2]; !
+! !
+! int ____temp178Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp179[1 * 2]; !
+! !
+! int ____temp179Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp180[2 * 2]; !
+! !
+! int ____temp180Size[2] = {2, 2};; !
+! !
+! !
+! !
+! doubleComplex ee[2 * 2]; !
+! !
+! int __eeSize[2] = {2, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp181[2 * 2]; !
+! !
+! int ____temp181Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans37; !
+! !
+! !
+! !
+! char __temp182[1*21] = {"********13**********"}; !
+! !
+! int ____temp182Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans38; !
+! !
+! !
+! !
+! double __temp183[1 * 2]; !
+! !
+! int ____temp183Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp184[1 * 3]; !
+! !
+! int ____temp184Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp185[1 * 4]; !
+! !
+! int ____temp185Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp186[1 * 5]; !
+! !
+! int ____temp186Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp187[1 * 6]; !
+! !
+! int ____temp187Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp188[1 * 7]; !
+! !
+! int ____temp188Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp189[1 * 8]; !
+! !
+! int ____temp189Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp190[1 * 9]; !
+! !
+! int ____temp190Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp191[1 * 10]; !
+! !
+! int ____temp191Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp192[1 * 11]; !
+! !
+! int ____temp192Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp193[1 * 12]; !
+! !
+! int ____temp193Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp194[1 * 13]; !
+! !
+! int ____temp194Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp195[1 * 14]; !
+! !
+! int ____temp195Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp196[1 * 15]; !
+! !
+! int ____temp196Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp197[1 * 16]; !
+! !
+! int ____temp197Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp198[1 * 17]; !
+! !
+! int ____temp198Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp199[1 * 18]; !
+! !
+! int ____temp199Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp200[1 * 19]; !
+! !
+! int ____temp200Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp201[1 * 20]; !
+! !
+! int ____temp201Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp202[1 * 21]; !
+! !
+! int ____temp202Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp203[1 * 2]; !
+! !
+! int ____temp203Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp204[1 * 3]; !
+! !
+! int ____temp204Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp205[1 * 4]; !
+! !
+! int ____temp205Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp206[1 * 5]; !
+! !
+! int ____temp206Size[2] = {1, 5};; !
+! !
+! !
+! !
+! double __temp207[1 * 6]; !
+! !
+! int ____temp207Size[2] = {1, 6};; !
+! !
+! !
+! !
+! double __temp208[1 * 7]; !
+! !
+! int ____temp208Size[2] = {1, 7};; !
+! !
+! !
+! !
+! double __temp209[1 * 8]; !
+! !
+! int ____temp209Size[2] = {1, 8};; !
+! !
+! !
+! !
+! double __temp210[1 * 9]; !
+! !
+! int ____temp210Size[2] = {1, 9};; !
+! !
+! !
+! !
+! double __temp211[1 * 10]; !
+! !
+! int ____temp211Size[2] = {1, 10};; !
+! !
+! !
+! !
+! double __temp212[1 * 11]; !
+! !
+! int ____temp212Size[2] = {1, 11};; !
+! !
+! !
+! !
+! double __temp213[1 * 12]; !
+! !
+! int ____temp213Size[2] = {1, 12};; !
+! !
+! !
+! !
+! double __temp214[1 * 13]; !
+! !
+! int ____temp214Size[2] = {1, 13};; !
+! !
+! !
+! !
+! double __temp215[1 * 14]; !
+! !
+! int ____temp215Size[2] = {1, 14};; !
+! !
+! !
+! !
+! double __temp216[1 * 15]; !
+! !
+! int ____temp216Size[2] = {1, 15};; !
+! !
+! !
+! !
+! double __temp217[1 * 16]; !
+! !
+! int ____temp217Size[2] = {1, 16};; !
+! !
+! !
+! !
+! double __temp218[1 * 17]; !
+! !
+! int ____temp218Size[2] = {1, 17};; !
+! !
+! !
+! !
+! double __temp219[1 * 18]; !
+! !
+! int ____temp219Size[2] = {1, 18};; !
+! !
+! !
+! !
+! double __temp220[1 * 19]; !
+! !
+! int ____temp220Size[2] = {1, 19};; !
+! !
+! !
+! !
+! double __temp221[1 * 20]; !
+! !
+! int ____temp221Size[2] = {1, 20};; !
+! !
+! !
+! !
+! double __temp222[1 * 21]; !
+! !
+! int ____temp222Size[2] = {1, 21};; !
+! !
+! !
+! !
+! double __temp223[2 * 21]; !
+! !
+! int ____temp223Size[2] = {2, 21};; !
+! !
+! !
+! !
+! doubleComplex ff[2 * 21]; !
+! !
+! int __ffSize[2] = {2, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp224[2 * 21]; !
+! !
+! int ____temp224Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans39; !
+! !
+! !
+! !
+! char __temp225[1*21] = {"********14**********"}; !
+! !
+! int ____temp225Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans40; !
+! !
+! !
+! !
+! doubleComplex gg[2 * 4]; !
+! !
+! int __ggSize[2] = {2, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp226[2 * 4]; !
+! !
+! int ____temp226Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double ans41; !
+! !
+! !
+! !
+! char __temp227[1*21] = {"********15**********"}; !
+! !
+! int ____temp227Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans42; !
+! !
+! !
+! !
+! doubleComplex hh[2 * 2]; !
+! !
+! int __hhSize[2] = {2, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp228[2 * 2]; !
+! !
+! int ____temp228Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans43; !
+! !
+! !
+! !
+! char __temp229[1*21] = {"********16**********"}; !
+! !
+! int ____temp229Size[2] = {1,21}; !
+! !
+! !
+! !
+! double ans44; !
+! !
+! !
+! !
+! doubleComplex jj[2 * 21]; !
+! !
+! int __jjSize[2] = {2, 21};; !
+! !
+! !
+! !
+! doubleComplex __temp230[2 * 21]; !
+! !
+! int ____temp230Size[2] = {2, 21};; !
+! !
+! !
+! !
+! double ans45; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(2)); // d0IFFTd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0ifftd0(2); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(%i + 4)) // z0IFFTz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = z0d0OpPlusz0(DoubleComplex(0,1),4); !
+! !
+! __temp3 = z0ifftz0(__temp2); !
+! !
+! ans2 = z0dispd0(__temp3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft([1 2])); // d2IFFTd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp4); !
+! !
+! d2ifftd2(__temp4, ____temp4Size,__temp5); !
+! !
+! ans3 = d2dispd0(__temp5, ____temp5Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft([1 -2 3] + zeros(1 , 3)*%i )); // d2IFFTz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,-2,__temp6); !
+! !
+! d2d0OpRcd2(__temp6, ____temp6Size,3,__temp7); !
+! !
+! d0d0zerosd2(1,3,__temp8); !
+! !
+! d2z0OpStarz2(__temp8, ____temp8Size,DoubleComplex(0,1),__temp9); !
+! !
+! d2z2OpPlusz2(__temp7, ____temp7Size,__temp9, ____temp9Size,__temp!
+! 10); !
+! !
+! z2ifftz2(__temp10, ____temp10Size,__temp11); !
+! !
+! ans4 = z2dispd0(__temp11, ____temp11Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft([1 2]*%i)); // z2IFFTz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp12); !
+! !
+! d2z0OpStarz2(__temp12, ____temp12Size,DoubleComplex(0,1),__temp13)!
+! ; !
+! !
+! z2ifftz2(__temp13, ____temp13Size,__temp14); !
+! !
+! ans5 = z2dispd0(__temp14, ____temp14Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(4.4)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = d0ifftd0(4.4); !
+! !
+! ans6 = d0dispd0(__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(%i + 3.4)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp16 = z0d0OpPlusz0(DoubleComplex(0,1),3.4); !
+! !
+! __temp17 = z0ifftz0(__temp16); !
+! !
+! ans7 = z0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // one input !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [10 1 15 3.5 ]; //d2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp18); !
+! !
+! d2d0OpRcd2(__temp18, ____temp18Size,15,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,3.5,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: Abis = a + zeros(a)*%i ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2zerosd2(a, __aSize,__temp20); !
+! !
+! d2z0OpStarz2(__temp20, ____temp20Size,DoubleComplex(0,1),__temp21)!
+! ; !
+! !
+! d2z2OpPlusz2(a, __aSize,__temp21, ____temp21Size,Abis); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(Abis)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(Abis, __AbisSize,__temp22); !
+! !
+! ans8 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********1*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = g2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [25 3.6]; // d2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2ifftd2(b, __bSize,__temp24); !
+! !
+! ans10 = d2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********2*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans11 = g2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 456!
+! 56 72.3 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,5,__temp27); !
+! !
+! d2d0OpRcd2(__temp27, ____temp27Size,6,__temp28); !
+! !
+! d2d0OpRcd2(__temp28, ____temp28Size,3,__temp29); !
+! !
+! d2d0OpRcd2(__temp29, ____temp29Size,8,__temp30); !
+! !
+! d2d0OpRcd2(__temp30, ____temp30Size,9,__temp31); !
+! !
+! d2d0OpRcd2(__temp31, ____temp31Size,445,__temp32); !
+! !
+! d2d0OpRcd2(__temp32, ____temp32Size,1,__temp33); !
+! !
+! d2d0OpRcd2(__temp33, ____temp33Size,2,__temp34); !
+! !
+! d2d0OpRcd2(__temp34, ____temp34Size,3,__temp35); !
+! !
+! d2d0OpRcd2(__temp35, ____temp35Size,0,__temp36); !
+! !
+! d2d0OpRcd2(__temp36, ____temp36Size,125,__temp37); !
+! !
+! d2d0OpRcd2(__temp37, ____temp37Size,5,__temp38); !
+! !
+! d2d0OpRcd2(__temp38, ____temp38Size,41,__temp39); !
+! !
+! d2d0OpRcd2(__temp39, ____temp39Size,4,__temp40); !
+! !
+! d2d0OpRcd2(__temp40, ____temp40Size,5,__temp41); !
+! !
+! d2d0OpRcd2(__temp41, ____temp41Size,552,__temp42); !
+! !
+! d2d0OpRcd2(__temp42, ____temp42Size,2.36,__temp43); !
+! !
+! d2d0OpRcd2(__temp43, ____temp43Size,45656,__temp44); !
+! !
+! d2d0OpRcd2(__temp44, ____temp44Size,72.3,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cbis = c + zeros(c)*%i ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2zerosd2(c, __cSize,__temp45); !
+! !
+! d2z0OpStarz2(__temp45, ____temp45Size,DoubleComplex(0,1),__temp46)!
+! ; !
+! !
+! d2z2OpPlusz2(c, __cSize,__temp46, ____temp46Size,cbis); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(cbis)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(cbis, __cbisSize,__temp47); !
+! !
+! ans12 = z2dispd0(__temp47, ____temp47Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********3*********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans13 = g2dispd0(__temp48, ____temp48Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // pure imaginary !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [10 1 15 3.5 ]*%i; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp49); !
+! !
+! d2d0OpRcd2(__temp49, ____temp49Size,15,__temp50); !
+! !
+! d2d0OpRcd2(__temp50, ____temp50Size,3.5,__temp51); !
+! !
+! d2z0OpStarz2(__temp51, ____temp51Size,DoubleComplex(0,1),d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(d)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(d, __dSize,__temp52); !
+! !
+! ans14 = z2dispd0(__temp52, ____temp52Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********4*********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans15 = g2dispd0(__temp53, ____temp53Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = [25 3.6]*%i; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp54); !
+! !
+! d2z0OpStarz2(__temp54, ____temp54Size,DoubleComplex(0,1),e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(e)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(e, __eSize,__temp55); !
+! !
+! ans16 = z2dispd0(__temp55, ____temp55Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********5***********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans17 = g2dispd0(__temp56, ____temp56Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 !
+! 45656 72.3 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp57); !
+! !
+! d2d0OpRcd2(__temp57, ____temp57Size,5,__temp58); !
+! !
+! d2d0OpRcd2(__temp58, ____temp58Size,6,__temp59); !
+! !
+! d2d0OpRcd2(__temp59, ____temp59Size,3,__temp60); !
+! !
+! d2d0OpRcd2(__temp60, ____temp60Size,8,__temp61); !
+! !
+! d2d0OpRcd2(__temp61, ____temp61Size,9,__temp62); !
+! !
+! d2d0OpRcd2(__temp62, ____temp62Size,445,__temp63); !
+! !
+! d2d0OpRcd2(__temp63, ____temp63Size,1,__temp64); !
+! !
+! d2d0OpRcd2(__temp64, ____temp64Size,2,__temp65); !
+! !
+! d2d0OpRcd2(__temp65, ____temp65Size,3,__temp66); !
+! !
+! d2d0OpRcd2(__temp66, ____temp66Size,0,__temp67); !
+! !
+! d2d0OpRcd2(__temp67, ____temp67Size,125,__temp68); !
+! !
+! d2d0OpRcd2(__temp68, ____temp68Size,5,__temp69); !
+! !
+! d2d0OpRcd2(__temp69, ____temp69Size,41,__temp70); !
+! !
+! d2d0OpRcd2(__temp70, ____temp70Size,4,__temp71); !
+! !
+! d2d0OpRcd2(__temp71, ____temp71Size,5,__temp72); !
+! !
+! d2d0OpRcd2(__temp72, ____temp72Size,552,__temp73); !
+! !
+! d2d0OpRcd2(__temp73, ____temp73Size,2.36,__temp74); !
+! !
+! d2d0OpRcd2(__temp74, ____temp74Size,45656,__temp75); !
+! !
+! d2d0OpRcd2(__temp75, ____temp75Size,72.3,__temp76); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp76, ____temp76Size,f); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(f)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(f, __fSize,__temp77); !
+! !
+! ans18 = z2dispd0(__temp77, ____temp77Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********6***********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans19 = g2dispd0(__temp78, ____temp78Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = a + [10 1 15 3.5 ]*%i; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp79); !
+! !
+! d2d0OpRcd2(__temp79, ____temp79Size,15,__temp80); !
+! !
+! d2d0OpRcd2(__temp80, ____temp80Size,3.5,__temp81); !
+! !
+! d2z0OpStarz2(__temp81, ____temp81Size,DoubleComplex(0,1),__temp82)!
+! ; !
+! !
+! d2z2OpPlusz2(a, __aSize,__temp82, ____temp82Size,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(g)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(g, __gSize,__temp83); !
+! !
+! ans20 = z2dispd0(__temp83, ____temp83Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********7***********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans21 = g2dispd0(__temp84, ____temp84Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = b + [25 3.6]*%i; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp85); !
+! !
+! d2z0OpStarz2(__temp85, ____temp85Size,DoubleComplex(0,1),__temp86)!
+! ; !
+! !
+! d2z2OpPlusz2(b, __bSize,__temp86, ____temp86Size,h); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(h)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(h, __hSize,__temp87); !
+! !
+! ans22 = z2dispd0(__temp87, ____temp87Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********8***********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans23 = g2dispd0(__temp88, ____temp88Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.!
+! 36 45656 72.3 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp89); !
+! !
+! d2d0OpRcd2(__temp89, ____temp89Size,5,__temp90); !
+! !
+! d2d0OpRcd2(__temp90, ____temp90Size,6,__temp91); !
+! !
+! d2d0OpRcd2(__temp91, ____temp91Size,3,__temp92); !
+! !
+! d2d0OpRcd2(__temp92, ____temp92Size,8,__temp93); !
+! !
+! d2d0OpRcd2(__temp93, ____temp93Size,9,__temp94); !
+! !
+! d2d0OpRcd2(__temp94, ____temp94Size,445,__temp95); !
+! !
+! d2d0OpRcd2(__temp95, ____temp95Size,1,__temp96); !
+! !
+! d2d0OpRcd2(__temp96, ____temp96Size,2,__temp97); !
+! !
+! d2d0OpRcd2(__temp97, ____temp97Size,3,__temp98); !
+! !
+! d2d0OpRcd2(__temp98, ____temp98Size,0,__temp99); !
+! !
+! d2d0OpRcd2(__temp99, ____temp99Size,125,__temp100); !
+! !
+! d2d0OpRcd2(__temp100, ____temp100Size,5,__temp101); !
+! !
+! d2d0OpRcd2(__temp101, ____temp101Size,41,__temp102); !
+! !
+! d2d0OpRcd2(__temp102, ____temp102Size,4,__temp103); !
+! !
+! d2d0OpRcd2(__temp103, ____temp103Size,5,__temp104); !
+! !
+! d2d0OpRcd2(__temp104, ____temp104Size,552,__temp105); !
+! !
+! d2d0OpRcd2(__temp105, ____temp105Size,2.36,__temp106); !
+! !
+! d2d0OpRcd2(__temp106, ____temp106Size,45656,__temp107); !
+! !
+! d2d0OpRcd2(__temp107, ____temp107Size,72.3,__temp108); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp108, ____temp108Size,__temp1!
+! 09); !
+! !
+! d2z2OpPlusz2(c, __cSize,__temp109, ____temp109Size,j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(j)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(j, __jSize,__temp110); !
+! !
+! ans24 = z2dispd0(__temp110, ____temp110Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans25 = g2dispd0(__temp111, ____temp111Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans26 = g2dispd0(__temp112, ____temp112Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("*******************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans27 = g2dispd0(__temp113, ____temp113Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********************"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans28 = g2dispd0(__temp114, ____temp114Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ******************** !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // MATRIX !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ******************** !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // one input !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp115); !
+! !
+! d2d0OpRcd2(__temp115, ____temp115Size,15,__temp116); !
+! !
+! d2d0OpRcd2(__temp116, ____temp116Size,3.5,__temp117); !
+! !
+! d0d0OpRcd2(5,3,__temp118); !
+! !
+! d2d0OpRcd2(__temp118, ____temp118Size,9,__temp119); !
+! !
+! d2d0OpRcd2(__temp119, ____temp119Size,6,__temp120); !
+! !
+! d2d2OpCcd2(__temp117, ____temp117Size,__temp120, ____temp120Size,!
+! aa); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(aa)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2ifftd2(aa, __aaSize,__temp121); !
+! !
+! ans29 = d2dispd0(__temp121, ____temp121Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********9***********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans30 = g2dispd0(__temp122, ____temp122Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: bb = [25 3.6 ; 4 3.2]; // d2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp123); !
+! !
+! d0d0OpRcd2(4,3.2,__temp124); !
+! !
+! d2d2OpCcd2(__temp123, ____temp123Size,__temp124, ____temp124Size,!
+! bb); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(bb)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2ifftd2(bb, __bbSize,__temp125); !
+! !
+! ans31 = d2dispd0(__temp125, ____temp125Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********10**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans32 = g2dispd0(__temp126, ____temp126Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45!
+! 656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 6554!
+! 6 1.78 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp127); !
+! !
+! d2d0OpRcd2(__temp127, ____temp127Size,5,__temp128); !
+! !
+! d2d0OpRcd2(__temp128, ____temp128Size,6,__temp129); !
+! !
+! d2d0OpRcd2(__temp129, ____temp129Size,3,__temp130); !
+! !
+! d2d0OpRcd2(__temp130, ____temp130Size,8,__temp131); !
+! !
+! d2d0OpRcd2(__temp131, ____temp131Size,9,__temp132); !
+! !
+! d2d0OpRcd2(__temp132, ____temp132Size,445,__temp133); !
+! !
+! d2d0OpRcd2(__temp133, ____temp133Size,1,__temp134); !
+! !
+! d2d0OpRcd2(__temp134, ____temp134Size,2,__temp135); !
+! !
+! d2d0OpRcd2(__temp135, ____temp135Size,3,__temp136); !
+! !
+! d2d0OpRcd2(__temp136, ____temp136Size,0,__temp137); !
+! !
+! d2d0OpRcd2(__temp137, ____temp137Size,125,__temp138); !
+! !
+! d2d0OpRcd2(__temp138, ____temp138Size,5,__temp139); !
+! !
+! d2d0OpRcd2(__temp139, ____temp139Size,41,__temp140); !
+! !
+! d2d0OpRcd2(__temp140, ____temp140Size,4,__temp141); !
+! !
+! d2d0OpRcd2(__temp141, ____temp141Size,5,__temp142); !
+! !
+! d2d0OpRcd2(__temp142, ____temp142Size,552,__temp143); !
+! !
+! d2d0OpRcd2(__temp143, ____temp143Size,2.36,__temp144); !
+! !
+! d2d0OpRcd2(__temp144, ____temp144Size,45656,__temp145); !
+! !
+! d2d0OpRcd2(__temp145, ____temp145Size,72.3,__temp146); !
+! !
+! d0d0OpRcd2(21,8,__temp147); !
+! !
+! d2d0OpRcd2(__temp147, ____temp147Size,2,__temp148); !
+! !
+! d2d0OpRcd2(__temp148, ____temp148Size,5,__temp149); !
+! !
+! d2d0OpRcd2(__temp149, ____temp149Size,6,__temp150); !
+! !
+! d2d0OpRcd2(__temp150, ____temp150Size,3,__temp151); !
+! !
+! d2d0OpRcd2(__temp151, ____temp151Size,4,__temp152); !
+! !
+! d2d0OpRcd2(__temp152, ____temp152Size,123,__temp153); !
+! !
+! d2d0OpRcd2(__temp153, ____temp153Size,5,__temp154); !
+! !
+! d2d0OpRcd2(__temp154, ____temp154Size,6,__temp155); !
+! !
+! d2d0OpRcd2(__temp155, ____temp155Size,0,__temp156); !
+! !
+! d2d0OpRcd2(__temp156, ____temp156Size,5,__temp157); !
+! !
+! d2d0OpRcd2(__temp157, ____temp157Size,548,__temp158); !
+! !
+! d2d0OpRcd2(__temp158, ____temp158Size,7,__temp159); !
+! !
+! d2d0OpRcd2(__temp159, ____temp159Size,65,__temp160); !
+! !
+! d2d0OpRcd2(__temp160, ____temp160Size,4,__temp161); !
+! !
+! d2d0OpRcd2(__temp161, ____temp161Size,2,__temp162); !
+! !
+! d2d0OpRcd2(__temp162, ____temp162Size,166,__temp163); !
+! !
+! d2d0OpRcd2(__temp163, ____temp163Size,4.12,__temp164); !
+! !
+! d2d0OpRcd2(__temp164, ____temp164Size,65546,__temp165); !
+! !
+! d2d0OpRcd2(__temp165, ____temp165Size,1.78,__temp166); !
+! !
+! d2d2OpCcd2(__temp146, ____temp146Size,__temp166, ____temp166Size,!
+! cc); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(cc)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2ifftd2(cc, __ccSize,__temp167); !
+! !
+! ans33 = d2dispd0(__temp167, ____temp167Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********11**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans34 = g2dispd0(__temp168, ____temp168Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // pure imaginary !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,1,__temp169); !
+! !
+! d2d0OpRcd2(__temp169, ____temp169Size,15,__temp170); !
+! !
+! d2d0OpRcd2(__temp170, ____temp170Size,3.5,__temp171); !
+! !
+! d0d0OpRcd2(5,8,__temp172); !
+! !
+! d2d0OpRcd2(__temp172, ____temp172Size,6,__temp173); !
+! !
+! d2d0OpRcd2(__temp173, ____temp173Size,3,__temp174); !
+! !
+! d2d2OpCcd2(__temp171, ____temp171Size,__temp174, ____temp174Size,!
+! __temp175); !
+! !
+! d2z0OpStarz2(__temp175, ____temp175Size,DoubleComplex(0,1),dd); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(dd)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(dd, __ddSize,__temp176); !
+! !
+! ans35 = z2dispd0(__temp176, ____temp176Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********12**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans36 = g2dispd0(__temp177, ____temp177Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(25,3.6,__temp178); !
+! !
+! d0d0OpRcd2(4,5.9,__temp179); !
+! !
+! d2d2OpCcd2(__temp178, ____temp178Size,__temp179, ____temp179Size,!
+! __temp180); !
+! !
+! d2z0OpStarz2(__temp180, ____temp180Size,DoubleComplex(0,1),ee); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(ee)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(ee, __eeSize,__temp181); !
+! !
+! ans37 = z2dispd0(__temp181, ____temp181Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********13**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans38 = g2dispd0(__temp182, ____temp182Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36!
+! 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 !
+! 65546 1.78 ] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(10,2,__temp183); !
+! !
+! d2d0OpRcd2(__temp183, ____temp183Size,5,__temp184); !
+! !
+! d2d0OpRcd2(__temp184, ____temp184Size,6,__temp185); !
+! !
+! d2d0OpRcd2(__temp185, ____temp185Size,3,__temp186); !
+! !
+! d2d0OpRcd2(__temp186, ____temp186Size,8,__temp187); !
+! !
+! d2d0OpRcd2(__temp187, ____temp187Size,9,__temp188); !
+! !
+! d2d0OpRcd2(__temp188, ____temp188Size,445,__temp189); !
+! !
+! d2d0OpRcd2(__temp189, ____temp189Size,1,__temp190); !
+! !
+! d2d0OpRcd2(__temp190, ____temp190Size,2,__temp191); !
+! !
+! d2d0OpRcd2(__temp191, ____temp191Size,3,__temp192); !
+! !
+! d2d0OpRcd2(__temp192, ____temp192Size,0,__temp193); !
+! !
+! d2d0OpRcd2(__temp193, ____temp193Size,125,__temp194); !
+! !
+! d2d0OpRcd2(__temp194, ____temp194Size,5,__temp195); !
+! !
+! d2d0OpRcd2(__temp195, ____temp195Size,41,__temp196); !
+! !
+! d2d0OpRcd2(__temp196, ____temp196Size,4,__temp197); !
+! !
+! d2d0OpRcd2(__temp197, ____temp197Size,5,__temp198); !
+! !
+! d2d0OpRcd2(__temp198, ____temp198Size,552,__temp199); !
+! !
+! d2d0OpRcd2(__temp199, ____temp199Size,2.36,__temp200); !
+! !
+! d2d0OpRcd2(__temp200, ____temp200Size,45656,__temp201); !
+! !
+! d2d0OpRcd2(__temp201, ____temp201Size,72.3,__temp202); !
+! !
+! d0d0OpRcd2(21,8,__temp203); !
+! !
+! d2d0OpRcd2(__temp203, ____temp203Size,2,__temp204); !
+! !
+! d2d0OpRcd2(__temp204, ____temp204Size,5,__temp205); !
+! !
+! d2d0OpRcd2(__temp205, ____temp205Size,6,__temp206); !
+! !
+! d2d0OpRcd2(__temp206, ____temp206Size,3,__temp207); !
+! !
+! d2d0OpRcd2(__temp207, ____temp207Size,4,__temp208); !
+! !
+! d2d0OpRcd2(__temp208, ____temp208Size,123,__temp209); !
+! !
+! d2d0OpRcd2(__temp209, ____temp209Size,5,__temp210); !
+! !
+! d2d0OpRcd2(__temp210, ____temp210Size,6,__temp211); !
+! !
+! d2d0OpRcd2(__temp211, ____temp211Size,0,__temp212); !
+! !
+! d2d0OpRcd2(__temp212, ____temp212Size,5,__temp213); !
+! !
+! d2d0OpRcd2(__temp213, ____temp213Size,548,__temp214); !
+! !
+! d2d0OpRcd2(__temp214, ____temp214Size,7,__temp215); !
+! !
+! d2d0OpRcd2(__temp215, ____temp215Size,65,__temp216); !
+! !
+! d2d0OpRcd2(__temp216, ____temp216Size,4,__temp217); !
+! !
+! d2d0OpRcd2(__temp217, ____temp217Size,2,__temp218); !
+! !
+! d2d0OpRcd2(__temp218, ____temp218Size,166,__temp219); !
+! !
+! d2d0OpRcd2(__temp219, ____temp219Size,4.12,__temp220); !
+! !
+! d2d0OpRcd2(__temp220, ____temp220Size,65546,__temp221); !
+! !
+! d2d0OpRcd2(__temp221, ____temp221Size,1.78,__temp222); !
+! !
+! d2d2OpCcd2(__temp202, ____temp202Size,__temp222, ____temp222Size,!
+! __temp223); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp223, ____temp223Size,ff); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(ff)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(ff, __ffSize,__temp224); !
+! !
+! ans39 = z2dispd0(__temp224, ____temp224Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********14**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans40 = g2dispd0(__temp225, ____temp225Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // full complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: gg = aa + dd; //z2Fftz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(aa, __aaSize,dd, __ddSize,gg); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(gg)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(gg, __ggSize,__temp226); !
+! !
+! ans41 = z2dispd0(__temp226, ____temp226Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********15**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans42 = g2dispd0(__temp227, ____temp227Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: hh = bb + ee; // z2Fftd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(bb, __bbSize,ee, __eeSize,hh); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(hh)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(hh, __hhSize,__temp228); !
+! !
+! ans43 = z2dispd0(__temp228, ____temp228Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp("********16**********"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans44 = g2dispd0(__temp229, ____temp229Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: jj= cc + ff !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(cc, __ccSize,ff, __ffSize,jj); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ifft(jj)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ifftz2(jj, __jjSize,__temp230); !
+! !
+! ans45 = z2dispd0(__temp230, ____temp230Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_IFFT.sci.tst b/2.3-1/tests/unit_tests/double/test_IFFT.sci.tst
new file mode 100644
index 00000000..2c2ed0ea
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_IFFT.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_IFFT.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Length.sci b/2.3-1/tests/unit_tests/double/test_Length.sci
new file mode 100644
index 00000000..75ecf26c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Length.sci
@@ -0,0 +1,32 @@
+function test_Length()
+ disp(length(4));
+ disp(length(2+3*%i));
+ disp(length([1 2 3 ; 4 5 6]));
+ disp(length([1 2 3 ; 4 5 6]*%i));
+ e = %pi ;
+ disp(length(e)); // d0Lengthd0
+
+ f = e * %i;
+ disp(length(f));// z0Lengthd0
+
+ a = [1 2 3 ; 4 5 6];
+ disp(length(a));// d2Lengthd0
+
+ b = [1 2 3 ; 4 5 6] * %i;
+ disp(length(b));// z2Lengthd0
+
+
+ g = "pouet" ;
+ h = "a" ;
+
+ disp(length(g)); // g0Lengthd0
+ disp(length(h)); // g2Lengthd0
+
+ disp(length("pouet"));
+ disp(length("a"));
+
+
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Length.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Length.sci.dia.ref
new file mode 100644
index 00000000..091633bd
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Length.sci.dia.ref
@@ -0,0 +1,1229 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Length.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 1.
+
+ 6.
+
+ 6.
+
+ 1.
+
+ 1.
+
+ 6.
+
+ 6.
+
+ 5.
+
+ 1.
+
+ 5.
+
+ 1.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Length"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Length/test_Length_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Length/test_Length_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(4));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(2+3*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length([1 2 3 ; 4 5 6]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length([1 2 3 ; 4 5 6]*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = %pi ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(e)); // d0Lengthd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = e * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(f));// z0Lengthd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3 ; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(a));// d2Lengthd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 2 3 ; 4 5 6] * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(b));// z2Lengthd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = "pouet" ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = "a" ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(g)); // g0Lengthd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length(h)); // g2Lengthd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length("pouet"));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(length("a"));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Length() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! double __temp4; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[2 * 3]; !
+! !
+! int ____temp9Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp10; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp11[1 * 2]; !
+! !
+! int ____temp11Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp12[1 * 3]; !
+! !
+! int ____temp12Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp13[1 * 2]; !
+! !
+! int ____temp13Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp14[1 * 3]; !
+! !
+! int ____temp14Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp15[2 * 3]; !
+! !
+! int ____temp15Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp16[2 * 3]; !
+! !
+! int ____temp16Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double e = 3.1415927; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex f; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp20[1 * 2]; !
+! !
+! int ____temp20Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp21[1 * 3]; !
+! !
+! int ____temp21Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp22[1 * 2]; !
+! !
+! int ____temp22Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp23[1 * 3]; !
+! !
+! int ____temp23Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[2 * 3]; !
+! !
+! int __aSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp24; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp25[1 * 2]; !
+! !
+! int ____temp25Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp26[1 * 3]; !
+! !
+! int ____temp26Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp27[1 * 2]; !
+! !
+! int ____temp27Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp28[1 * 3]; !
+! !
+! int ____temp28Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp29[2 * 3]; !
+! !
+! int ____temp29Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex b[2 * 3]; !
+! !
+! int __bSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp30; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! char __temp31[1*6] = {"pouet"}; !
+! !
+! int ____temp31Size[2] = {1,6}; !
+! !
+! !
+! !
+! char g[1*6] = {"pouet"}; !
+! !
+! int __gSize[2] = {1,6}; !
+! !
+! !
+! !
+! char __temp32[1*2] = {"a"}; !
+! !
+! int ____temp32Size[2] = {1,2}; !
+! !
+! !
+! !
+! char h[1*2] = {"a"}; !
+! !
+! int __hSize[2] = {1,2}; !
+! !
+! !
+! !
+! double __temp33; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp34; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! char __temp35[1*6] = {"pouet"}; !
+! !
+! int ____temp35Size[2] = {1,6}; !
+! !
+! !
+! !
+! double __temp36; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! char __temp37[1*2] = {"a"}; !
+! !
+! int ____temp37Size[2] = {1,2}; !
+! !
+! !
+! !
+! double __temp38; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(4)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0lengthd0(4); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(2+3*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp3 = d0z0OpPlusz0(2,__temp2); !
+! !
+! __temp4 = z0lengthd0(__temp3); !
+! !
+! ans2 = d0dispd0(__temp4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length([1 2 3 ; 4 5 6])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,3,__temp6); !
+! !
+! d0d0OpRcd2(4,5,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,6,__temp8); !
+! !
+! d2d2OpCcd2(__temp6, ____temp6Size,__temp8, ____temp8Size,__temp9)!
+! ; !
+! !
+! __temp10 = d2lengthd0(__temp9, ____temp9Size); !
+! !
+! ans3 = d0dispd0(__temp10); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length([1 2 3 ; 4 5 6]*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp11); !
+! !
+! d2d0OpRcd2(__temp11, ____temp11Size,3,__temp12); !
+! !
+! d0d0OpRcd2(4,5,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,6,__temp14); !
+! !
+! d2d2OpCcd2(__temp12, ____temp12Size,__temp14, ____temp14Size,__te!
+! mp15); !
+! !
+! d2z0OpStarz2(__temp15, ____temp15Size,DoubleComplex(0,1),__temp16)!
+! ; !
+! !
+! __temp17 = z2lengthd0(__temp16, ____temp16Size); !
+! !
+! ans4 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = %pi ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! e = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(e)); // d0Lengthd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0lengthd0(e); !
+! !
+! ans5 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = e * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! f = d0z0OpStarz0(e,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(f));// z0Lengthd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0lengthd0(f); !
+! !
+! ans6 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3 ; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp20); !
+! !
+! d2d0OpRcd2(__temp20, ____temp20Size,3,__temp21); !
+! !
+! d0d0OpRcd2(4,5,__temp22); !
+! !
+! d2d0OpRcd2(__temp22, ____temp22Size,6,__temp23); !
+! !
+! d2d2OpCcd2(__temp21, ____temp21Size,__temp23, ____temp23Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(a));// d2Lengthd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp24 = d2lengthd0(a, __aSize); !
+! !
+! ans7 = d0dispd0(__temp24); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 2 3 ; 4 5 6] * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp25); !
+! !
+! d2d0OpRcd2(__temp25, ____temp25Size,3,__temp26); !
+! !
+! d0d0OpRcd2(4,5,__temp27); !
+! !
+! d2d0OpRcd2(__temp27, ____temp27Size,6,__temp28); !
+! !
+! d2d2OpCcd2(__temp26, ____temp26Size,__temp28, ____temp28Size,__te!
+! mp29); !
+! !
+! d2z0OpStarz2(__temp29, ____temp29Size,DoubleComplex(0,1),b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(b));// z2Lengthd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp30 = z2lengthd0(b, __bSize); !
+! !
+! ans8 = d0dispd0(__temp30); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = "pouet" ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp31, ____temp31Size,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = "a" ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp32, ____temp32Size,h); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(g)); // g0Lengthd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp33 = g2lengthd0(g, __gSize); !
+! !
+! ans9 = d0dispd0(__temp33); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length(h)); // g2Lengthd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp34 = g2lengthd0(h, __hSize); !
+! !
+! ans10 = d0dispd0(__temp34); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length("pouet")); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp36 = g2lengthd0(__temp35, ____temp35Size); !
+! !
+! ans11 = d0dispd0(__temp36); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(length("a")); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp38 = g2lengthd0(__temp37, ____temp37Size); !
+! !
+! ans12 = d0dispd0(__temp38); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Length.sci.tst b/2.3-1/tests/unit_tests/double/test_Length.sci.tst
new file mode 100644
index 00000000..68c15ba3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Length.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Length.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Lev.sci b/2.3-1/tests/unit_tests/double/test_Lev.sci
new file mode 100644
index 00000000..d3d01936
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Lev.sci
@@ -0,0 +1,31 @@
+function test_Lev()
+
+ a = [1 2 3 4 5 6 7 8 9 10] ;
+
+ disp(lev(a)) ;
+
+ [aa aaa] = lev(a);
+ disp(aa);
+ disp(aaa)
+
+ [a1 aa1 aaa1] = lev (a);
+ disp(a1);
+ disp(aa1);
+ disp(aaa1);
+
+// complex
+ b =%i * [1 2 3 4 5 6 7 8 9 10] ;
+
+ disp(lev(b)) ;
+
+ [bb bbb] = lev(b);
+ disp(bb);
+ disp(bbb)
+
+ [b1 bb1 bbb1] = lev (b);
+ disp(b1);
+ disp(bb1);
+ disp(bbb1);
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Lev.sci.tst b/2.3-1/tests/unit_tests/double/test_Lev.sci.tst
new file mode 100644
index 00000000..70a7f418
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Lev.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Lev.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Meanf.sci b/2.3-1/tests/unit_tests/double/test_Meanf.sci
new file mode 100644
index 00000000..139432ce
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Meanf.sci
@@ -0,0 +1,48 @@
+
+function test_Meanf()
+
+ disp (meanf (4 , 5 )) ;
+ disp ("*******1*******");
+ disp (meanf ([4 5 6], [1 2 3]));
+ disp ("*******2*******");
+ disp (meanf (4 , 5*%i )) ;
+ disp ("*******3*******");
+ disp (meanf ([4 5 6], [1 2 3]*%i));
+ disp ("*******4*******");
+
+
+
+ disp (meanf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1));
+ disp ("*******5*******");
+ disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2));
+// complex
+ disp ("*******6*******");
+ disp (meanf (4 +4*%i , 5 )) ;
+ disp ("*******7*******");
+ disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]));
+ disp ("*******8*******");
+ disp (meanf (4 +4*%i , 5*%i )) ;
+ disp ("*******9*******");
+ disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]*%i));
+ disp ("******10*******");
+
+
+ disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1));
+ disp ("******11*******");
+ disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2));
+ disp ("******12*******");
+ disp (meanf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******13*******");
+ disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2));
+ disp ("******14*******");
+
+ disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******15*******");
+ disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));
+ disp ("******16*******");
+//
+
+
+//
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Meanf.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Meanf.sci.dia.ref
new file mode 100644
index 00000000..51e9bc98
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Meanf.sci.dia.ref
@@ -0,0 +1,2615 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Meanf.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 4.
+
+ *******1*******
+
+ 5.3333333
+
+ *******2*******
+
+ 4.
+
+ *******3*******
+
+ 5.3333333
+
+ *******4*******
+
+ 6.4 7.1428571 8.
+
+ *******5*******
+
+ 6.4
+ 7.1428571
+ 8.
+
+ *******6*******
+
+ 4. + 4.i
+
+ *******7*******
+
+ 4.6666667 + 2.6666667i
+
+ *******8*******
+
+ 4. + 4.i
+
+ *******9*******
+
+ 4.6666667 + 2.6666667i
+
+ ******10*******
+
+ 6.4i 7.1428571i 8.i
+
+ ******11*******
+
+ 6.4
+ 7.1428571
+ 8.
+
+ ******12*******
+
+ 6.4 7.3154362 - 0.1208054i 8.16 - 0.12i
+
+ ******13*******
+
+ 6.4i
+ 7.1428571i
+ 8.i
+
+ ******14*******
+
+ 6.4i 7.1428571i 8.i
+
+ ******15*******
+
+ 6.4i
+ 7.1428571i
+ 8.i
+
+ ******16*******
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Meanf"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Meanf/test_Meanf_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Meanf/test_Meanf_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf (4 , 5 )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******1*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 5 6], [1 2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******2*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf (4 , 5*%i )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******3*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 5 6], [1 2 3]*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******4*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******5*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******6*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf (4 +4*%i , 5 )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******7*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******8*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf (4 +4*%i , 5*%i )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******9*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******10*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******11*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******12*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ;
+ 4 5 6]*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******13*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******14*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******15*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******16*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: !
+! !
+! SCI2C: function test_Meanf() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! char __temp2[1*16] = {"*******1*******"}; !
+! !
+! int ____temp2Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp7; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! char __temp8[1*16] = {"*******2*******"}; !
+! !
+! int ____temp8Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! doubleComplex __temp9; !
+! !
+! !
+! !
+! doubleComplex __temp10; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! char __temp11[1*16] = {"*******3*******"}; !
+! !
+! int ____temp11Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp16[1 * 3]; !
+! !
+! int ____temp16Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! char __temp18[1*16] = {"*******4*******"}; !
+! !
+! int ____temp18Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp19[1 * 2]; !
+! !
+! int ____temp19Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp20[1 * 3]; !
+! !
+! int ____temp20Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp21[1 * 2]; !
+! !
+! int ____temp21Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp22[1 * 3]; !
+! !
+! int ____temp22Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp23[2 * 3]; !
+! !
+! int ____temp23Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp25[1 * 3]; !
+! !
+! int ____temp25Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp27[1 * 3]; !
+! !
+! int ____temp27Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp28[2 * 3]; !
+! !
+! int ____temp28Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp29[1 * 3]; !
+! !
+! int ____temp29Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! char __temp30[1*16] = {"*******5*******"}; !
+! !
+! int ____temp30Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp31[1 * 2]; !
+! !
+! int ____temp31Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp32[1 * 2]; !
+! !
+! int ____temp32Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp33[2 * 2]; !
+! !
+! int ____temp33Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp34[1 * 2]; !
+! !
+! int ____temp34Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp35[3 * 2]; !
+! !
+! int ____temp35Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp36[1 * 2]; !
+! !
+! int ____temp36Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp37[1 * 2]; !
+! !
+! int ____temp37Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp38[2 * 2]; !
+! !
+! int ____temp38Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp39[1 * 2]; !
+! !
+! int ____temp39Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp40[3 * 2]; !
+! !
+! int ____temp40Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp41[3 * 1]; !
+! !
+! int ____temp41Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! char __temp42[1*16] = {"*******6*******"}; !
+! !
+! int ____temp42Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp43; !
+! !
+! !
+! !
+! doubleComplex __temp44; !
+! !
+! !
+! !
+! doubleComplex __temp45; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! char __temp46[1*16] = {"*******7*******"}; !
+! !
+! int ____temp46Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp47; !
+! !
+! !
+! !
+! doubleComplex __temp48; !
+! !
+! !
+! !
+! doubleComplex __temp49; !
+! !
+! !
+! !
+! doubleComplex __temp50[1 * 2]; !
+! !
+! int ____temp50Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp51[1 * 3]; !
+! !
+! int ____temp51Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp52[1 * 2]; !
+! !
+! int ____temp52Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp53[1 * 3]; !
+! !
+! int ____temp53Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp54; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! char __temp55[1*16] = {"*******8*******"}; !
+! !
+! int ____temp55Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! doubleComplex __temp56; !
+! !
+! !
+! !
+! doubleComplex __temp57; !
+! !
+! !
+! !
+! doubleComplex __temp58; !
+! !
+! !
+! !
+! doubleComplex __temp59; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! char __temp60[1*16] = {"*******9*******"}; !
+! !
+! int ____temp60Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! doubleComplex __temp61; !
+! !
+! !
+! !
+! doubleComplex __temp62; !
+! !
+! !
+! !
+! doubleComplex __temp63; !
+! !
+! !
+! !
+! doubleComplex __temp64[1 * 2]; !
+! !
+! int ____temp64Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp65[1 * 3]; !
+! !
+! int ____temp65Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp66[1 * 2]; !
+! !
+! int ____temp66Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp67[1 * 3]; !
+! !
+! int ____temp67Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp68[1 * 3]; !
+! !
+! int ____temp68Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp69; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! char __temp70[1*16] = {"******10*******"}; !
+! !
+! int ____temp70Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! double __temp71[1 * 2]; !
+! !
+! int ____temp71Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp72[1 * 3]; !
+! !
+! int ____temp72Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp73[1 * 2]; !
+! !
+! int ____temp73Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp74[1 * 3]; !
+! !
+! int ____temp74Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp75[2 * 3]; !
+! !
+! int ____temp75Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp76[2 * 3]; !
+! !
+! int ____temp76Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp77[1 * 2]; !
+! !
+! int ____temp77Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp78[1 * 3]; !
+! !
+! int ____temp78Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp79[1 * 2]; !
+! !
+! int ____temp79Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp80[1 * 3]; !
+! !
+! int ____temp80Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp81[2 * 3]; !
+! !
+! int ____temp81Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp82[1 * 3]; !
+! !
+! int ____temp82Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans21; !
+! !
+! !
+! !
+! char __temp83[1*16] = {"******11*******"}; !
+! !
+! int ____temp83Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans22; !
+! !
+! !
+! !
+! double __temp84[1 * 2]; !
+! !
+! int ____temp84Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp85[1 * 2]; !
+! !
+! int ____temp85Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp86[2 * 2]; !
+! !
+! int ____temp86Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp87[1 * 2]; !
+! !
+! int ____temp87Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp88[3 * 2]; !
+! !
+! int ____temp88Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp89[1 * 2]; !
+! !
+! int ____temp89Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp90[1 * 2]; !
+! !
+! int ____temp90Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp91[2 * 2]; !
+! !
+! int ____temp91Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp92[1 * 2]; !
+! !
+! int ____temp92Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp93[3 * 2]; !
+! !
+! int ____temp93Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp94[3 * 2]; !
+! !
+! int ____temp94Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp95[3 * 1]; !
+! !
+! int ____temp95Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans23; !
+! !
+! !
+! !
+! char __temp96[1*16] = {"******12*******"}; !
+! !
+! int ____temp96Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans24; !
+! !
+! !
+! !
+! double __temp97[1 * 2]; !
+! !
+! int ____temp97Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp98[1 * 3]; !
+! !
+! int ____temp98Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp99[1 * 2]; !
+! !
+! int ____temp99Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp100[1 * 3]; !
+! !
+! int ____temp100Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp101[2 * 3]; !
+! !
+! int ____temp101Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp102[1 * 2]; !
+! !
+! int ____temp102Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp103[1 * 3]; !
+! !
+! int ____temp103Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp104[1 * 2]; !
+! !
+! int ____temp104Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp105[1 * 3]; !
+! !
+! int ____temp105Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp106[2 * 3]; !
+! !
+! int ____temp106Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp107[1 * 2]; !
+! !
+! int ____temp107Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp108[1 * 3]; !
+! !
+! int ____temp108Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp109[1 * 2]; !
+! !
+! int ____temp109Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp110[1 * 3]; !
+! !
+! int ____temp110Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp111[2 * 3]; !
+! !
+! int ____temp111Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp112[2 * 3]; !
+! !
+! int ____temp112Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp113[2 * 3]; !
+! !
+! int ____temp113Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp114[1 * 3]; !
+! !
+! int ____temp114Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans25; !
+! !
+! !
+! !
+! char __temp115[1*16] = {"******13*******"}; !
+! !
+! int ____temp115Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans26; !
+! !
+! !
+! !
+! double __temp116[1 * 2]; !
+! !
+! int ____temp116Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp117[1 * 2]; !
+! !
+! int ____temp117Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp118[2 * 2]; !
+! !
+! int ____temp118Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp119[1 * 2]; !
+! !
+! int ____temp119Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp120[3 * 2]; !
+! !
+! int ____temp120Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp121[3 * 2]; !
+! !
+! int ____temp121Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp122[1 * 2]; !
+! !
+! int ____temp122Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp123[1 * 2]; !
+! !
+! int ____temp123Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp124[2 * 2]; !
+! !
+! int ____temp124Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp125[1 * 2]; !
+! !
+! int ____temp125Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp126[3 * 2]; !
+! !
+! int ____temp126Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp127[3 * 1]; !
+! !
+! int ____temp127Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans27; !
+! !
+! !
+! !
+! char __temp128[1*16] = {"******14*******"}; !
+! !
+! int ____temp128Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans28; !
+! !
+! !
+! !
+! double __temp129[1 * 2]; !
+! !
+! int ____temp129Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp130[1 * 3]; !
+! !
+! int ____temp130Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp131[1 * 2]; !
+! !
+! int ____temp131Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp132[1 * 3]; !
+! !
+! int ____temp132Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp133[2 * 3]; !
+! !
+! int ____temp133Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp134[2 * 3]; !
+! !
+! int ____temp134Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp135[1 * 2]; !
+! !
+! int ____temp135Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp136[1 * 3]; !
+! !
+! int ____temp136Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp137[1 * 2]; !
+! !
+! int ____temp137Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp138[1 * 3]; !
+! !
+! int ____temp138Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp139[2 * 3]; !
+! !
+! int ____temp139Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp140[2 * 3]; !
+! !
+! int ____temp140Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp141[1 * 3]; !
+! !
+! int ____temp141Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans29; !
+! !
+! !
+! !
+! char __temp142[1*16] = {"******15*******"}; !
+! !
+! int ____temp142Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans30; !
+! !
+! !
+! !
+! double __temp143[1 * 2]; !
+! !
+! int ____temp143Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp144[1 * 2]; !
+! !
+! int ____temp144Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp145[2 * 2]; !
+! !
+! int ____temp145Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp146[1 * 2]; !
+! !
+! int ____temp146Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp147[3 * 2]; !
+! !
+! int ____temp147Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp148[3 * 2]; !
+! !
+! int ____temp148Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp149[1 * 2]; !
+! !
+! int ____temp149Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp150[1 * 2]; !
+! !
+! int ____temp150Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp151[2 * 2]; !
+! !
+! int ____temp151Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp152[1 * 2]; !
+! !
+! int ____temp152Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp153[3 * 2]; !
+! !
+! int ____temp153Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp154[3 * 2]; !
+! !
+! int ____temp154Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp155[3 * 1]; !
+! !
+! int ____temp155Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans31; !
+! !
+! !
+! !
+! char __temp156[1*16] = {"******16*******"}; !
+! !
+! int ____temp156Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans32; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf (4 , 5 )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0d0meanfd0(4,5); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******1*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = g2dispd0(__temp2, ____temp2Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 5 6], [1 2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,6,__temp4); !
+! !
+! d0d0OpRcd2(1,2,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,3,__temp6); !
+! !
+! __temp7 = d2d2meanfd0(__temp4, ____temp4Size,__temp6, ____temp6Si!
+! ze); !
+! !
+! ans3 = d0dispd0(__temp7); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******2*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = g2dispd0(__temp8, ____temp8Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf (4 , 5*%i )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp9 = d0z0OpStarz0(5,DoubleComplex(0,1)); !
+! !
+! __temp10 = d0z0meanfz0(4,__temp9); !
+! !
+! ans5 = z0dispd0(__temp10); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******3*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = g2dispd0(__temp11, ____temp11Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 5 6], [1 2 3]*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,6,__temp13); !
+! !
+! d0d0OpRcd2(1,2,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,3,__temp15); !
+! !
+! d2z0OpStarz2(__temp15, ____temp15Size,DoubleComplex(0,1),__temp16)!
+! ; !
+! !
+! __temp17 = d2z2meanfz0(__temp13, ____temp13Size,__temp16, ____tem!
+! p16Size); !
+! !
+! ans7 = z0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******4*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = g2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,6,__temp20); !
+! !
+! d0d0OpRcd2(7,8,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,9,__temp22); !
+! !
+! d2d2OpCcd2(__temp20, ____temp20Size,__temp22, ____temp22Size,__te!
+! mp23); !
+! !
+! d0d0OpRcd2(1,2,__temp24); !
+! !
+! d2d0OpRcd2(__temp24, ____temp24Size,3,__temp25); !
+! !
+! d0d0OpRcd2(4,5,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,6,__temp27); !
+! !
+! d2d2OpCcd2(__temp25, ____temp25Size,__temp27, ____temp27Size,__te!
+! mp28); !
+! !
+! d2d2d0meanfd2(__temp23, ____temp23Size,__temp28, ____temp28Size,1!
+! ,__temp29); !
+! !
+! ans9 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******5*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = g2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp31); !
+! !
+! d0d0OpRcd2(5,8,__temp32); !
+! !
+! d2d2OpCcd2(__temp31, ____temp31Size,__temp32, ____temp32Size,__te!
+! mp33); !
+! !
+! d0d0OpRcd2(6,9,__temp34); !
+! !
+! d2d2OpCcd2(__temp33, ____temp33Size,__temp34, ____temp34Size,__te!
+! mp35); !
+! !
+! d0d0OpRcd2(1,4,__temp36); !
+! !
+! d0d0OpRcd2(2,5,__temp37); !
+! !
+! d2d2OpCcd2(__temp36, ____temp36Size,__temp37, ____temp37Size,__te!
+! mp38); !
+! !
+! d0d0OpRcd2(3,6,__temp39); !
+! !
+! d2d2OpCcd2(__temp38, ____temp38Size,__temp39, ____temp39Size,__te!
+! mp40); !
+! !
+! d2d2d0meanfd2(__temp35, ____temp35Size,__temp40, ____temp40Size,2!
+! ,__temp41); !
+! !
+! ans11 = d2dispd0(__temp41, ____temp41Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******6*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = g2dispd0(__temp42, ____temp42Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf (4 +4*%i , 5 )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp43 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp44 = d0z0OpPlusz0(4,__temp43); !
+! !
+! __temp45 = z0d0meanfz0(__temp44,5); !
+! !
+! ans13 = z0dispd0(__temp45); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******7*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans14 = g2dispd0(__temp46, ____temp46Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp47 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp48 = d0z0OpStarz0(6,DoubleComplex(0,1)); !
+! !
+! __temp49 = d0z0OpPlusz0(5,__temp48); !
+! !
+! z0z0OpRcz2(__temp47,__temp49,__temp50); !
+! !
+! z2d0OpRcz2(__temp50, ____temp50Size,6,__temp51); !
+! !
+! d0d0OpRcd2(1,2,__temp52); !
+! !
+! d2d0OpRcd2(__temp52, ____temp52Size,3,__temp53); !
+! !
+! __temp54 = z2d2meanfz0(__temp51, ____temp51Size,__temp53, ____tem!
+! p53Size); !
+! !
+! ans15 = z0dispd0(__temp54); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******8*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans16 = g2dispd0(__temp55, ____temp55Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf (4 +4*%i , 5*%i )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp56 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp57 = d0z0OpPlusz0(4,__temp56); !
+! !
+! __temp58 = d0z0OpStarz0(5,DoubleComplex(0,1)); !
+! !
+! __temp59 = z0z0meanfz0(__temp57,__temp58); !
+! !
+! ans17 = z0dispd0(__temp59); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******9*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans18 = g2dispd0(__temp60, ____temp60Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp61 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp62 = d0z0OpStarz0(6,DoubleComplex(0,1)); !
+! !
+! __temp63 = d0z0OpPlusz0(5,__temp62); !
+! !
+! z0z0OpRcz2(__temp61,__temp63,__temp64); !
+! !
+! z2d0OpRcz2(__temp64, ____temp64Size,6,__temp65); !
+! !
+! d0d0OpRcd2(1,2,__temp66); !
+! !
+! d2d0OpRcd2(__temp66, ____temp66Size,3,__temp67); !
+! !
+! d2z0OpStarz2(__temp67, ____temp67Size,DoubleComplex(0,1),__temp68)!
+! ; !
+! !
+! __temp69 = z2z2meanfz0(__temp65, ____temp65Size,__temp68, ____tem!
+! p68Size); !
+! !
+! ans19 = z0dispd0(__temp69); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******10*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans20 = g2dispd0(__temp70, ____temp70Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp71); !
+! !
+! d2d0OpRcd2(__temp71, ____temp71Size,6,__temp72); !
+! !
+! d0d0OpRcd2(7,8,__temp73); !
+! !
+! d2d0OpRcd2(__temp73, ____temp73Size,9,__temp74); !
+! !
+! d2d2OpCcd2(__temp72, ____temp72Size,__temp74, ____temp74Size,__te!
+! mp75); !
+! !
+! d2z0OpStarz2(__temp75, ____temp75Size,DoubleComplex(0,1),__temp76)!
+! ; !
+! !
+! d0d0OpRcd2(1,2,__temp77); !
+! !
+! d2d0OpRcd2(__temp77, ____temp77Size,3,__temp78); !
+! !
+! d0d0OpRcd2(4,5,__temp79); !
+! !
+! d2d0OpRcd2(__temp79, ____temp79Size,6,__temp80); !
+! !
+! d2d2OpCcd2(__temp78, ____temp78Size,__temp80, ____temp80Size,__te!
+! mp81); !
+! !
+! z2d2d0meanfz2(__temp76, ____temp76Size,__temp81, ____temp81Size,1!
+! ,__temp82); !
+! !
+! ans21 = z2dispd0(__temp82, ____temp82Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******11*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans22 = g2dispd0(__temp83, ____temp83Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp84); !
+! !
+! d0d0OpRcd2(5,8,__temp85); !
+! !
+! d2d2OpCcd2(__temp84, ____temp84Size,__temp85, ____temp85Size,__te!
+! mp86); !
+! !
+! d0d0OpRcd2(6,9,__temp87); !
+! !
+! d2d2OpCcd2(__temp86, ____temp86Size,__temp87, ____temp87Size,__te!
+! mp88); !
+! !
+! d0d0OpRcd2(1,4,__temp89); !
+! !
+! d0d0OpRcd2(2,5,__temp90); !
+! !
+! d2d2OpCcd2(__temp89, ____temp89Size,__temp90, ____temp90Size,__te!
+! mp91); !
+! !
+! d0d0OpRcd2(3,6,__temp92); !
+! !
+! d2d2OpCcd2(__temp91, ____temp91Size,__temp92, ____temp92Size,__te!
+! mp93); !
+! !
+! d2z0OpStarz2(__temp93, ____temp93Size,DoubleComplex(0,1),__temp94)!
+! ; !
+! !
+! d2z2d0meanfz2(__temp88, ____temp88Size,__temp94, ____temp94Size,2!
+! ,__temp95); !
+! !
+! ans23 = z2dispd0(__temp95, ____temp95Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******12*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans24 = g2dispd0(__temp96, ____temp96Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ; !
+! 4 5 6]*%i,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp97); !
+! !
+! d2d0OpRcd2(__temp97, ____temp97Size,6,__temp98); !
+! !
+! d0d0OpRcd2(7,8,__temp99); !
+! !
+! d2d0OpRcd2(__temp99, ____temp99Size,9,__temp100); !
+! !
+! d2d2OpCcd2(__temp98, ____temp98Size,__temp100, ____temp100Size,__!
+! temp101); !
+! !
+! d0d0OpRcd2(1,2,__temp102); !
+! !
+! d2d0OpRcd2(__temp102, ____temp102Size,3,__temp103); !
+! !
+! d0d0OpRcd2(4,8,__temp104); !
+! !
+! d2d0OpRcd2(__temp104, ____temp104Size,9,__temp105); !
+! !
+! d2d2OpCcd2(__temp103, ____temp103Size,__temp105, ____temp105Size,!
+! __temp106); !
+! !
+! d0d0OpRcd2(1,2,__temp107); !
+! !
+! d2d0OpRcd2(__temp107, ____temp107Size,3,__temp108); !
+! !
+! d0d0OpRcd2(4,5,__temp109); !
+! !
+! d2d0OpRcd2(__temp109, ____temp109Size,6,__temp110); !
+! !
+! d2d2OpCcd2(__temp108, ____temp108Size,__temp110, ____temp110Size,!
+! __temp111); !
+! !
+! d2z0OpStarz2(__temp111, ____temp111Size,DoubleComplex(0,1),__temp1!
+! 12); !
+! !
+! d2z2OpPlusz2(__temp106, ____temp106Size,__temp112, ____temp112Siz!
+! e,__temp113); !
+! !
+! d2z2d0meanfz2(__temp101, ____temp101Size,__temp113, ____temp113Si!
+! ze,1,__temp114); !
+! !
+! ans25 = z2dispd0(__temp114, ____temp114Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******13*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans26 = g2dispd0(__temp115, ____temp115Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp116); !
+! !
+! d0d0OpRcd2(5,8,__temp117); !
+! !
+! d2d2OpCcd2(__temp116, ____temp116Size,__temp117, ____temp117Size,!
+! __temp118); !
+! !
+! d0d0OpRcd2(6,9,__temp119); !
+! !
+! d2d2OpCcd2(__temp118, ____temp118Size,__temp119, ____temp119Size,!
+! __temp120); !
+! !
+! d2z0OpStarz2(__temp120, ____temp120Size,DoubleComplex(0,1),__temp1!
+! 21); !
+! !
+! d0d0OpRcd2(1,4,__temp122); !
+! !
+! d0d0OpRcd2(2,5,__temp123); !
+! !
+! d2d2OpCcd2(__temp122, ____temp122Size,__temp123, ____temp123Size,!
+! __temp124); !
+! !
+! d0d0OpRcd2(3,6,__temp125); !
+! !
+! d2d2OpCcd2(__temp124, ____temp124Size,__temp125, ____temp125Size,!
+! __temp126); !
+! !
+! z2d2d0meanfz2(__temp121, ____temp121Size,__temp126, ____temp126Si!
+! ze,2,__temp127); !
+! !
+! ans27 = z2dispd0(__temp127, ____temp127Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******14*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans28 = g2dispd0(__temp128, ____temp128Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp129); !
+! !
+! d2d0OpRcd2(__temp129, ____temp129Size,6,__temp130); !
+! !
+! d0d0OpRcd2(7,8,__temp131); !
+! !
+! d2d0OpRcd2(__temp131, ____temp131Size,9,__temp132); !
+! !
+! d2d2OpCcd2(__temp130, ____temp130Size,__temp132, ____temp132Size,!
+! __temp133); !
+! !
+! d2z0OpStarz2(__temp133, ____temp133Size,DoubleComplex(0,1),__temp1!
+! 34); !
+! !
+! d0d0OpRcd2(1,2,__temp135); !
+! !
+! d2d0OpRcd2(__temp135, ____temp135Size,3,__temp136); !
+! !
+! d0d0OpRcd2(4,5,__temp137); !
+! !
+! d2d0OpRcd2(__temp137, ____temp137Size,6,__temp138); !
+! !
+! d2d2OpCcd2(__temp136, ____temp136Size,__temp138, ____temp138Size,!
+! __temp139); !
+! !
+! d2z0OpStarz2(__temp139, ____temp139Size,DoubleComplex(0,1),__temp1!
+! 40); !
+! !
+! z2z2d0meanfz2(__temp134, ____temp134Size,__temp140, ____temp140Si!
+! ze,1,__temp141); !
+! !
+! ans29 = z2dispd0(__temp141, ____temp141Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******15*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans30 = g2dispd0(__temp142, ____temp142Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp143); !
+! !
+! d0d0OpRcd2(5,8,__temp144); !
+! !
+! d2d2OpCcd2(__temp143, ____temp143Size,__temp144, ____temp144Size,!
+! __temp145); !
+! !
+! d0d0OpRcd2(6,9,__temp146); !
+! !
+! d2d2OpCcd2(__temp145, ____temp145Size,__temp146, ____temp146Size,!
+! __temp147); !
+! !
+! d2z0OpStarz2(__temp147, ____temp147Size,DoubleComplex(0,1),__temp1!
+! 48); !
+! !
+! d0d0OpRcd2(1,4,__temp149); !
+! !
+! d0d0OpRcd2(2,5,__temp150); !
+! !
+! d2d2OpCcd2(__temp149, ____temp149Size,__temp150, ____temp150Size,!
+! __temp151); !
+! !
+! d0d0OpRcd2(3,6,__temp152); !
+! !
+! d2d2OpCcd2(__temp151, ____temp151Size,__temp152, ____temp152Size,!
+! __temp153); !
+! !
+! d2z0OpStarz2(__temp153, ____temp153Size,DoubleComplex(0,1),__temp1!
+! 54); !
+! !
+! z2z2d0meanfz2(__temp148, ____temp148Size,__temp154, ____temp154Si!
+! ze,2,__temp155); !
+! !
+! ans31 = z2dispd0(__temp155, ____temp155Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******16*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans32 = g2dispd0(__temp156, ____temp156Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Meanf.sci.tst b/2.3-1/tests/unit_tests/double/test_Meanf.sci.tst
new file mode 100644
index 00000000..8de8479d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Meanf.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Meanf.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpApex.sci b/2.3-1/tests/unit_tests/double/test_OpApex.sci
new file mode 100644
index 00000000..40c00da8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpApex.sci
@@ -0,0 +1,11 @@
+function test_OpApex()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0')
+ disp(d2')
+ disp(z0')
+ disp(z2')
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpApex.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpApex.sci.dia.ref
new file mode 100644
index 00000000..384ddbc3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpApex.sci.dia.ref
@@ -0,0 +1,661 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpApex.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 1. 5. 9. 13.
+ 2. 6. 10. 14.
+ 3. 7. 11. 15.
+ 4. 8. 12. 16.
+
+ 3.1415927 - 3.1415927i
+
+ 1. - i 5. - 5.i 9. - 9.i 13. - 13.i
+ 2. - 2.i 6. - 6.i 10. - 10.i 14. - 14.i
+ 3. - 3.i 7. - 7.i 11. - 11.i 15. - 15.i
+ 4. - 4.i 8. - 8.i 12. - 12.i 16. - 16.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpApex"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpApex/test_OpApex_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpApex/test_OpApex_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpApex() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0OpApexd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2OpApexd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0OpApexz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2OpApexz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpApex.sci.tst b/2.3-1/tests/unit_tests/double/test_OpApex.sci.tst
new file mode 100644
index 00000000..d115cc09
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpApex.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpApex.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpCc.sci b/2.3-1/tests/unit_tests/double/test_OpCc.sci
new file mode 100644
index 00000000..929c9c0a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpCc.sci
@@ -0,0 +1,46 @@
+
+
+function test_OpCc()
+
+ a = [1 ; 2 ; 3 ; 4]; // d0d0OpCcs2
+ b = [7 ; a];// d0d2OpCcs2
+ c = [a ; 7];// d2d0OpCcs2
+ d = [a ; b];// d2d2OpCcs2
+ disp(a);
+ disp(b);
+ disp(c);
+ disp(d);
+
+ e = [1*%i ; 2*%i ; 3*%i ; 4*%i ];// z0z0OpCcz2
+ f = [7 ; e];// z0z2OpCcz2
+ g = [e ; 7];// z2z0OpCcz2
+ h = [e ; f];// z2z2OpCcz2
+
+ disp(e);
+ disp(f);
+ disp(g);
+ disp(h);
+
+
+ i = [%i ; 4.5]; // z0d0OpCcz2
+ j = [4.5 ; %i ]; // d0z0OpCcz2
+ k = [4.5 ; i ]; // d0z2OpCcz2
+ l = [i ; 4.5]; // z2d0OpCcz2
+
+ disp(i);
+ disp(j);
+ disp(k);
+ disp(l);
+
+ m = [1 ; 4.5];
+ n = [%i ; m ]; // z0d2OpCcz2
+ o = [m ; %i ]; // d0z2OpCcz2
+ p = [m ; n ]; // d2z2OpCcz2
+ q = [n ; m ]; // z2d2OpCcz2
+
+ disp(n);
+ disp(o);
+ disp(p);
+ disp(q);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpCc.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpCc.sci.dia.ref
new file mode 100644
index 00000000..f6f6b65b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpCc.sci.dia.ref
@@ -0,0 +1,1413 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpCc.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+ 2.
+ 3.
+ 4.
+
+ 7.
+ 1.
+ 2.
+ 3.
+ 4.
+
+ 1.
+ 2.
+ 3.
+ 4.
+ 7.
+
+ 1.
+ 2.
+ 3.
+ 4.
+ 7.
+ 1.
+ 2.
+ 3.
+ 4.
+
+ i
+ 2.i
+ 3.i
+ 4.i
+
+ 7.
+ i
+ 2.i
+ 3.i
+ 4.i
+
+ i
+ 2.i
+ 3.i
+ 4.i
+ 7.
+
+ i
+ 2.i
+ 3.i
+ 4.i
+ 7.
+ i
+ 2.i
+ 3.i
+ 4.i
+
+ i
+ 4.5
+
+ 4.5
+ i
+
+ 4.5
+ i
+ 4.5
+
+ i
+ 4.5
+ 4.5
+
+ i
+ 1.
+ 4.5
+
+ 1.
+ 4.5
+ i
+
+ 1.
+ 4.5
+ i
+ 1.
+ 4.5
+
+ i
+ 1.
+ 4.5
+ 1.
+ 4.5
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpCc"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpCc/test_OpCc_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpCc/test_OpCc_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 ; 2 ; 3 ; 4]; // d0d0OpCcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [7 ; a];// d0d2OpCcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = [a ; 7];// d2d0OpCcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [a ; b];// d2d2OpCcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(c);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = [1*%i ; 2*%i ; 3*%i ; 4*%i ];// z0z0OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = [7 ; e];// z0z2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = [e ; 7];// z2z0OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = [e ; f];// z2z2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(e);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(f);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(g);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(h);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: i = [%i ; 4.5]; // z0d0OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: j = [4.5 ; %i ]; // d0z0OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: k = [4.5 ; i ]; // d0z2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: l = [i ; 4.5]; // z2d0OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(i);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(j);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(k);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(l);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: m = [1 ; 4.5];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: n = [%i ; m ]; // z0d2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: o = [m ; %i ]; // d0z2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: p = [m ; n ]; // d2z2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: q = [n ; m ]; // z2d2OpCcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(n);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(o);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(p);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(q);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: !
+! !
+! SCI2C: !
+! !
+! SCI2C: function test_OpCc() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[2 * 1]; !
+! !
+! int ____temp1Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double __temp2[3 * 1]; !
+! !
+! int ____temp2Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double a[4 * 1]; !
+! !
+! int __aSize[2] = {4, 1};; !
+! !
+! !
+! !
+! double b[5 * 1]; !
+! !
+! int __bSize[2] = {5, 1};; !
+! !
+! !
+! !
+! double c[5 * 1]; !
+! !
+! int __cSize[2] = {5, 1};; !
+! !
+! !
+! !
+! double d[9 * 1]; !
+! !
+! int __dSize[2] = {9, 1};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! doubleComplex __temp4; !
+! !
+! !
+! !
+! doubleComplex __temp5[2 * 1]; !
+! !
+! int ____temp5Size[2] = {2, 1};; !
+! !
+! !
+! !
+! doubleComplex __temp6; !
+! !
+! !
+! !
+! doubleComplex __temp7[3 * 1]; !
+! !
+! int ____temp7Size[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex __temp8; !
+! !
+! !
+! !
+! doubleComplex e[4 * 1]; !
+! !
+! int __eSize[2] = {4, 1};; !
+! !
+! !
+! !
+! doubleComplex f[5 * 1]; !
+! !
+! int __fSize[2] = {5, 1};; !
+! !
+! !
+! !
+! doubleComplex g[5 * 1]; !
+! !
+! int __gSize[2] = {5, 1};; !
+! !
+! !
+! !
+! doubleComplex h[9 * 1]; !
+! !
+! int __hSize[2] = {9, 1};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex i[2 * 1]; !
+! !
+! int __iSize[2] = {2, 1};; !
+! !
+! !
+! !
+! doubleComplex j[2 * 1]; !
+! !
+! int __jSize[2] = {2, 1};; !
+! !
+! !
+! !
+! doubleComplex k[3 * 1]; !
+! !
+! int __kSize[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex l[3 * 1]; !
+! !
+! int __lSize[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double m[2 * 1]; !
+! !
+! int __mSize[2] = {2, 1};; !
+! !
+! !
+! !
+! doubleComplex n[3 * 1]; !
+! !
+! int __nSize[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex o[3 * 1]; !
+! !
+! int __oSize[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex p[5 * 1]; !
+! !
+! int __pSize[2] = {5, 1};; !
+! !
+! !
+! !
+! doubleComplex q[5 * 1]; !
+! !
+! int __qSize[2] = {5, 1};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 ; 2 ; 3 ; 4]; // d0d0OpCcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpCcd2(1,2,__temp1); !
+! !
+! d2d0OpCcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpCcd2(__temp2, ____temp2Size,4,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [7 ; a];// d0d2OpCcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpCcd2(7,a, __aSize,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = [a ; 7];// d2d0OpCcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpCcd2(a, __aSize,7,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [a ; b];// d2d2OpCcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpCcd2(a, __aSize,b, __bSize,d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = d2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(c); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = d2dispd0(c, __cSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = d2dispd0(d, __dSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = [1*%i ; 2*%i ; 3*%i ; 4*%i ];// z0z0OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp3 = d0z0OpStarz0(1,DoubleComplex(0,1)); !
+! !
+! __temp4 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! z0z0OpCcz2(__temp3,__temp4,__temp5); !
+! !
+! __temp6 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! z2z0OpCcz2(__temp5, ____temp5Size,__temp6,__temp7); !
+! !
+! __temp8 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! z2z0OpCcz2(__temp7, ____temp7Size,__temp8,e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = [7 ; e];// z0z2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpCcz2(7,e, __eSize,f); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = [e ; 7];// z2z0OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpCcz2(e, __eSize,7,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = [e ; f];// z2z2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpCcz2(e, __eSize,f, __fSize,h); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(e); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = z2dispd0(e, __eSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(f); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = z2dispd0(f, __fSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(g); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans7 = z2dispd0(g, __gSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(h); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = z2dispd0(h, __hSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: i = [%i ; 4.5]; // z0d0OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d0OpCcz2(DoubleComplex(0,1),4.5,i); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: j = [4.5 ; %i ]; // d0z0OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z0OpCcz2(4.5,DoubleComplex(0,1),j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: k = [4.5 ; i ]; // d0z2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpCcz2(4.5,i, __iSize,k); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: l = [i ; 4.5]; // z2d0OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpCcz2(i, __iSize,4.5,l); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(i); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = z2dispd0(i, __iSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(j); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = z2dispd0(j, __jSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(k); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans11 = z2dispd0(k, __kSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(l); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = z2dispd0(l, __lSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: m = [1 ; 4.5]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpCcd2(1,4.5,m); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: n = [%i ; m ]; // z0d2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpCcz2(DoubleComplex(0,1),m, __mSize,n); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: o = [m ; %i ]; // d0z2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpCcz2(m, __mSize,DoubleComplex(0,1),o); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: p = [m ; n ]; // d2z2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpCcz2(m, __mSize,n, __nSize,p); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: q = [n ; m ]; // z2d2OpCcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpCcz2(n, __nSize,m, __mSize,q); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(n); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans13 = z2dispd0(n, __nSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(o); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans14 = z2dispd0(o, __oSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(p); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans15 = z2dispd0(p, __pSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(q); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans16 = z2dispd0(q, __qSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpCc.sci.tst b/2.3-1/tests/unit_tests/double/test_OpCc.sci.tst
new file mode 100644
index 00000000..1ad14e08
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpCc.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpCc.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpColon.sci b/2.3-1/tests/unit_tests/double/test_OpColon.sci
new file mode 100644
index 00000000..f3e03b4e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpColon.sci
@@ -0,0 +1,41 @@
+function test_OpColon()
+
+
+// A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12];
+// B = A * %i ;
+d = %i ;
+a = %pi ;
+b = %e ;
+c = [7 8 5 ];
+disp(zeros ( a , %e ));
+
+disp(zeros ( %pi , %e));
+disp(zeros(c));
+disp(zeros ([4 5 6 ; 4 5 6]) );
+
+ disp(0:1:3);
+ disp(1:1);
+ disp(4+53*%i:0);
+//
+
+ disp(2:5);
+ disp(4+3*%i:8+%i);
+//
+
+ disp(1:5:1);
+ disp(%i:%i+1:2);
+//
+
+ disp(2:7:5);
+ disp(4+3*%i:4:8+%i);
+//a =4 + 53 *%i : 0 ;
+endfunction
+//OUT(1).SZ(2)= FA_INT(
+// FA_ADD(
+// FA_DIV(
+// FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REAL(IN(1).VAL, IN(3).TP))
+// ,FA_REAL(IN(2).VAL,IN(2).TP)
+// )
+// ,''1''
+// )
+// )
diff --git a/2.3-1/tests/unit_tests/double/test_OpColon.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpColon.sci.dia.ref
new file mode 100644
index 00000000..9770ca72
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpColon.sci.dia.ref
@@ -0,0 +1,1249 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpColon.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0. 0.
+ 0. 0.
+ 0. 0.
+
+ 0. 0.
+ 0. 0.
+ 0. 0.
+
+ 0. 0. 0.
+
+ 0. 0. 0.
+ 0. 0. 0.
+
+ 0. 1. 2. 3.
+
+ 1.
+
+ []
+
+ 2. 3. 4. 5.
+
+ 4. 5. 6. 7. 8.
+
+ 1.
+
+ 0. 1. 2.
+
+ 2.
+
+ 4. 8.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpColon"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpColon/test_OpColon_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpColon/test_OpColon_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // B = A * %i ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = %i ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = %pi ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = %e ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = [7 8 5 ];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros ( a , %e ));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros ( %pi , %e));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(c));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros ([4 5 6 ; 4 5 6]) );
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(0:1:3);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(1:1);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(4+53*%i:0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(2:5);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(4+3*%i:8+%i);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(1:5:1);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(%i:%i+1:2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(2:7:5);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(4+3*%i:4:8+%i);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //a =4 + 53 *%i : 0 ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //OUT(1).SZ(2)= FA_INT(
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // FA_ADD(
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // FA_DIV(
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REA
+ L(IN(1).VAL, IN(3).TP))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // ,FA_REAL(IN(2).VAL,IN
+ (2).TP)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpColon() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! doubleComplex d = DoubleComplex(0,1); !
+! !
+! !
+! !
+! double a = 3.1415927; !
+! !
+! !
+! !
+! double b = 2.7182818; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double c[1 * 3]; !
+! !
+! int __cSize[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp2[3 * 2]; !
+! !
+! int ____temp2Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp3[3 * 2]; !
+! !
+! int ____temp3Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[2 * 3]; !
+! !
+! int ____temp9Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp10[2 * 3]; !
+! !
+! int ____temp10Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp11[1 * 4]; !
+! !
+! int ____temp11Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp12; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex __temp13; !
+! !
+! !
+! !
+! doubleComplex __temp14; !
+! !
+! !
+! !
+! double* __temp15 = NULL; !
+! !
+! int ____temp15Size[2]; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp16[1 * 4]; !
+! !
+! int ____temp16Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double* __temp20 = NULL; !
+! !
+! int ____temp20Size[2]; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp22; !
+! !
+! !
+! !
+! double* __temp23 = NULL; !
+! !
+! int ____temp23Size[2]; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp24; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp25; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! doubleComplex __temp27; !
+! !
+! !
+! !
+! double* __temp28 = NULL; !
+! !
+! int ____temp28Size[2]; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // B = A * %i ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = %i ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d = z0OpEqualz0(DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = %pi ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! a = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = %e ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! b = d0OpEquald0(SCI2C_E); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = [7 8 5 ]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(7,8,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,5,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros ( a , %e )); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0zerosd2(a,SCI2C_E,__temp2); !
+! !
+! ans1 = d2dispd0(__temp2, ____temp2Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros ( %pi , %e)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0zerosd2(SCI2C_PI,SCI2C_E,__temp3); !
+! !
+! ans2 = d2dispd0(__temp3, ____temp3Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(c)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2zerosd2(c, __cSize,__temp4); !
+! !
+! ans3 = d2dispd0(__temp4, ____temp4Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros ([4 5 6 ; 4 5 6]) ); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,6,__temp6); !
+! !
+! d0d0OpRcd2(4,5,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,6,__temp8); !
+! !
+! d2d2OpCcd2(__temp6, ____temp6Size,__temp8, ____temp8Size,__temp9)!
+! ; !
+! !
+! d2zerosd2(__temp9, ____temp9Size,__temp10); !
+! !
+! ans4 = d2dispd0(__temp10, ____temp10Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(0:1:3); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0d0OpColond2(0,1,3,__temp11); !
+! !
+! ans5 = d2dispd0(__temp11, ____temp11Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(1:1); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp12 = d0d0OpColond0(1,1); !
+! !
+! ans6 = d0dispd0(__temp12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(4+53*%i:0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp13 = d0z0OpStarz0(53,DoubleComplex(0,1)); !
+! !
+! __temp14 = d0z0OpPlusz0(4,__temp13); !
+! !
+! ____temp15Size[0]=1; !
+! !
+! ____temp15Size[1]=d0absd0(d0floord0(((0-z0reald0(__temp14))+1))); !
+! !
+! __temp15 = (double*) realloc(__temp15,(1)*(d0absd0(d0floord0(((0-z0!
+! reald0(__temp14))+1))))*sizeof(double)); !
+! !
+! z0d0OpColond2(__temp14,0,__temp15); !
+! !
+! ans7 = d2dispd0(__temp15, ____temp15Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(2:5); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(4+3*%i:8+%i); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpColond2(2,5,__temp16); !
+! !
+! ans8 = d2dispd0(__temp16, ____temp16Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp18 = d0z0OpPlusz0(4,__temp17); !
+! !
+! __temp19 = d0z0OpPlusz0(8,DoubleComplex(0,1)); !
+! !
+! ____temp20Size[0]=1; !
+! !
+! ____temp20Size[1]=d0absd0(d0floord0(((z0reald0(__temp19)-z0reald0(_!
+! _temp18))+1))); !
+! !
+! __temp20 = (double*) realloc(__temp20,(1)*(d0absd0(d0floord0(((z0re!
+! ald0(__temp19)-z0reald0(__temp18))+1))))*sizeof(double)); !
+! !
+! z0z0OpColond2(__temp18,__temp19,__temp20); !
+! !
+! ans9 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(1:5:1); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(%i:%i+1:2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0d0OpColond0(1,5,1); !
+! !
+! ans10 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp22 = z0d0OpPlusz0(DoubleComplex(0,1),1); !
+! !
+! ____temp23Size[0]=1; !
+! !
+! ____temp23Size[1]=d0absd0(d0floord0(((2/z0reald0(__temp22))+1))); !
+! !
+! __temp23 = (double*) realloc(__temp23,(1)*(d0absd0(d0floord0(((2/z0!
+! reald0(__temp22))+1))))*sizeof(double)); !
+! !
+! z0z0d0OpColond2(DoubleComplex(0,1),__temp22,2,__temp23); !
+! !
+! ans11 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(2:7:5); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(4+3*%i:4:8+%i); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //a =4 + 53 *%i : 0 ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp24 = d0d0d0OpColond0(2,7,5); !
+! !
+! ans12 = d0dispd0(__temp24); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //OUT(1).SZ(2)= FA_INT( !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp26 = d0z0OpPlusz0(4,__temp25); !
+! !
+! __temp27 = d0z0OpPlusz0(8,DoubleComplex(0,1)); !
+! !
+! ____temp28Size[0]=1; !
+! !
+! ____temp28Size[1]=d0absd0(d0floord0((((z0reald0(__temp27)-z0reald0(!
+! __temp26))/4)+1))); !
+! !
+! __temp28 = (double*) realloc(__temp28,(1)*(d0absd0(d0floord0((((z0r!
+! eald0(__temp27)-z0reald0(__temp26))/4)+1))))*sizeof(double)); !
+! !
+! z0d0z0OpColond2(__temp26,4,__temp27,__temp28); !
+! !
+! ans13 = d2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // FA_ADD( !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // FA_DIV( !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REA!
+! L(IN(1).VAL, IN(3).TP)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! free(__temp15); !
+! !
+! free(__temp20); !
+! !
+! free(__temp23); !
+! !
+! free(__temp28); !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // ,FA_REAL(IN(2).VAL,IN!
+! (2).TP) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpColon.sci.tst b/2.3-1/tests/unit_tests/double/test_OpColon.sci.tst
new file mode 100644
index 00000000..a3265916
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpColon.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpColon.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotApex.sci b/2.3-1/tests/unit_tests/double/test_OpDotApex.sci
new file mode 100644
index 00000000..88974899
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotApex.sci
@@ -0,0 +1,11 @@
+function test_OpDotApex()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.')
+ disp(d2.')
+ disp(z0.')
+ disp(z2.')
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotApex.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpDotApex.sci.dia.ref
new file mode 100644
index 00000000..d710d9df
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotApex.sci.dia.ref
@@ -0,0 +1,661 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotApex.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 1. 5. 9. 13.
+ 2. 6. 10. 14.
+ 3. 7. 11. 15.
+ 4. 8. 12. 16.
+
+ 3.1415927 + 3.1415927i
+
+ 1. + i 5. + 5.i 9. + 9.i 13. + 13.i
+ 2. + 2.i 6. + 6.i 10. + 10.i 14. + 14.i
+ 3. + 3.i 7. + 7.i 11. + 11.i 15. + 15.i
+ 4. + 4.i 8. + 8.i 12. + 12.i 16. + 16.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpDotApex"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotApex/test_OpDotApex_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotApex/test_OpDotApex_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.')
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpDotApex() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0OpDotApexd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2OpDotApexd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0OpDotApexz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.') !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2OpDotApexz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotApex.sci.tst b/2.3-1/tests/unit_tests/double/test_OpDotApex.sci.tst
new file mode 100644
index 00000000..593f4a76
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotApex.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotApex.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci b/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci
new file mode 100644
index 00000000..a994a614
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci
@@ -0,0 +1,30 @@
+function test_OpDotBackSlash()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.\d0)
+ disp(z0.\z0)
+ disp(d2.\d0)
+ disp(z2.\z0)
+
+ disp(d0.\d2)
+ disp(z0.\z2)
+
+ disp(d2.\d2)
+ disp(z2.\z2)
+
+ disp(d2.\z0)
+ disp(z2.\d0)
+
+ disp(d0.\z2)
+ disp(z0.\d2)
+
+ disp(d0.\z0)
+ disp(z0.\d0)
+
+ disp(d2.\z2)
+ disp(z2.\d2)
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.dia.ref
new file mode 100644
index 00000000..0bcc17b7
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.dia.ref
@@ -0,0 +1,1261 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotBackSlash.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 1.
+
+ 3.1415927 1.5707963 1.0471976 0.7853982
+ 0.6283185 0.5235988 0.4487990 0.3926991
+ 0.3490659 0.3141593 0.2855993 0.2617994
+ 0.2416610 0.2243995 0.2094395 0.1963495
+
+ 3.1415927 1.5707963 1.0471976 0.7853982
+ 0.6283185 0.5235988 0.4487990 0.3926991
+ 0.3490659 0.3141593 0.2855993 0.2617994
+ 0.2416610 0.2243995 0.2094395 0.1963495
+
+ 0.3183099 0.6366198 0.9549297 1.2732395
+ 1.5915494 1.9098593 2.2281692 2.5464791
+ 2.864789 3.1830989 3.5014087 3.8197186
+ 4.1380285 4.4563384 4.7746483 5.0929582
+
+ 0.3183099 0.6366198 0.9549297 1.2732395
+ 1.5915494 1.9098593 2.2281692 2.5464791
+ 2.864789 3.1830989 3.5014087 3.8197186
+ 4.1380285 4.4563384 4.7746483 5.0929582
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 1.5707963 + 1.5707963i
+ 0.6283185 + 0.6283185i 0.5235988 + 0.5235988i
+ 0.3490659 + 0.3490659i 0.3141593 + 0.3141593i
+ 0.2416610 + 0.2416610i 0.2243995 + 0.2243995i
+
+ column 3 to 4
+
+ 1.0471976 + 1.0471976i 0.7853982 + 0.7853982i
+ 0.4487990 + 0.4487990i 0.3926991 + 0.3926991i
+ 0.2855993 + 0.2855993i 0.2617994 + 0.2617994i
+ 0.2094395 + 0.2094395i 0.1963495 + 0.1963495i
+
+
+ column 1 to 2
+
+ 1.5707963 - 1.5707963i 0.7853982 - 0.7853982i
+ 0.3141593 - 0.3141593i 0.2617994 - 0.2617994i
+ 0.1745329 - 0.1745329i 0.1570796 - 0.1570796i
+ 0.1208305 - 0.1208305i 0.1121997 - 0.1121997i
+
+ column 3 to 4
+
+ 0.5235988 - 0.5235988i 0.3926991 - 0.3926991i
+ 0.2243995 - 0.2243995i 0.1963495 - 0.1963495i
+ 0.1427997 - 0.1427997i 0.1308997 - 0.1308997i
+ 0.1047198 - 0.1047198i 0.0981748 - 0.0981748i
+
+
+ column 1 to 2
+
+ 0.3183099 + 0.3183099i 0.6366198 + 0.6366198i
+ 1.5915494 + 1.5915494i 1.9098593 + 1.9098593i
+ 2.864789 + 2.864789i 3.1830989 + 3.1830989i
+ 4.1380285 + 4.1380285i 4.4563384 + 4.4563384i
+
+ column 3 to 4
+
+ 0.9549297 + 0.9549297i 1.2732395 + 1.2732395i
+ 2.2281692 + 2.2281692i 2.5464791 + 2.5464791i
+ 3.5014087 + 3.5014087i 3.8197186 + 3.8197186i
+ 4.7746483 + 4.7746483i 5.0929582 + 5.0929582i
+
+
+ column 1 to 2
+
+ 0.1591549 - 0.1591549i 0.3183099 - 0.3183099i
+ 0.7957747 - 0.7957747i 0.9549297 - 0.9549297i
+ 1.4323945 - 1.4323945i 1.5915494 - 1.5915494i
+ 2.0690143 - 2.0690143i 2.2281692 - 2.2281692i
+
+ column 3 to 4
+
+ 0.4774648 - 0.4774648i 0.6366198 - 0.6366198i
+ 1.1140846 - 1.1140846i 1.2732395 - 1.2732395i
+ 1.7507044 - 1.7507044i 1.9098593 - 1.9098593i
+ 2.3873241 - 2.3873241i 2.5464791 - 2.5464791i
+
+ 1. + i
+
+ 0.5 - 0.5i
+
+ 1. + i 1. + i 1. + i 1. + i
+ 1. + i 1. + i 1. + i 1. + i
+ 1. + i 1. + i 1. + i 1. + i
+ 1. + i 1. + i 1. + i 1. + i
+
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpDotBackSlash"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotBackSlash/test_OpDotBackSlash_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotBackSlash/test_OpDotBackSlash_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.\d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.\z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.\d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.\z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.\d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.\z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.\d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.\z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.\z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.\d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.\z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.\d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.\z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.\d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.\z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.\d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpDotBackSlash() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp29; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp30; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.\d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpDotBackSlashd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.\z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0z0OpDotBackSlashz0(z0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.\d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpDotBackSlashd2(d2, __d2Size,d0,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.\z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpDotBackSlashz2(z2, __z2Size,z0,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.\d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpDotBackSlashd2(d0,d2, __d2Size,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.\z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpDotBackSlashz2(z0,z2, __z2Size,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.\d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpDotBackSlashd2(d2, __d2Size,d2, __d2Size,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.\z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpDotBackSlashz2(z2, __z2Size,z2, __z2Size,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.\z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpDotBackSlashz2(d2, __d2Size,z0,__temp25); !
+! !
+! ans9 = z2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.\d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpDotBackSlashz2(z2, __z2Size,d0,__temp26); !
+! !
+! ans10 = z2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.\z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpDotBackSlashz2(d0,z2, __z2Size,__temp27); !
+! !
+! ans11 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.\d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpDotBackSlashz2(z0,d2, __d2Size,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.\z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp29 = d0z0OpDotBackSlashz0(d0,z0); !
+! !
+! ans13 = z0dispd0(__temp29); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.\d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp30 = z0d0OpDotBackSlashz0(z0,d0); !
+! !
+! ans14 = z0dispd0(__temp30); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.\z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpDotBackSlashz2(d2, __d2Size,z2, __z2Size,__temp31); !
+! !
+! ans15 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.\d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpDotBackSlashz2(z2, __z2Size,d2, __d2Size,__temp32); !
+! !
+! ans16 = z2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.tst b/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.tst
new file mode 100644
index 00000000..338868c1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotBackSlash.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotBackSlash.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotHat.sci b/2.3-1/tests/unit_tests/double/test_OpDotHat.sci
new file mode 100644
index 00000000..0a8af079
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotHat.sci
@@ -0,0 +1,29 @@
+function test_OpDotHat()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.^d0)
+ disp(z0.^z0)
+ disp(d2.^d0)
+ disp(z2.^z0)
+
+ disp(d0.^d2)
+ disp(z0.^z2)
+
+ disp(d2.^d2)
+ disp(z2.^z2)
+
+ disp(d2.^z0)
+ disp(z2.^d0)
+
+ disp(d0.^z2)
+ disp(z0.^d2)
+
+ disp(d0.^z0)
+ disp(z0.^d0)
+
+ disp(d2.^z2)
+ disp(z2.^d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotHat.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpDotHat.sci.dia.ref
new file mode 100644
index 00000000..c23404a8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotHat.sci.dia.ref
@@ -0,0 +1,1293 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotHat.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 36.46216
+
+ 5.9283225 + 7.016786i
+
+ 1. 8.8249778 31.544281 77.880234
+ 156.99255 278.37758 451.80787 687.29134
+ 995.04164 1385.4557 1869.096 2456.676
+ 3159.0482 3987.1945 4952.2169 6065.3308
+
+
+ column 1 to 2
+
+ - 0.2305848 - 0.1014833i 1.8960812 - 1.1609458i
+ - 27.20192 + 28.711233i - 68.127844 + 16.643533i
+ - 128.15078 - 215.44779i - 71.255924 - 341.68558i
+ 461.54269 - 648.35545i 755.6226 - 661.84161i
+
+ column 3 to 4
+
+ 5.9514188 + 5.2663201i - 1.1252863 + 19.587992i
+ - 110.43344 - 27.572522i - 136.3417 - 106.73041i
+ 44.117831 - 468.80814i 222.18104 - 577.65261i
+ 1093.3278 - 600.96383i 1459.8611 - 451.31942i
+
+ 3.1415927 9.8696044 31.006277 97.409091
+ 306.01968 961.38919 3020.2932 9488.531
+ 29809.099 93648.047 294204.02 924269.18
+ 2903677.3 9122171.2 28658146. 90032221.
+
+
+ column 1 to 2
+
+ - 1.3141052 + 1.541592i - 0.6496337 - 4.0516281i
+ 12.902191 - 31.573352i 31.718393 + 61.38062i
+ - 40.146534 + 572.8927i - 830.41006 - 814.73083i
+ - 2373.7017 - 9373.9919i 17570.165 + 8659.1315i
+
+ column 3 to 4
+
+ 7.0996445 + 4.3227953i - 15.993666 + 5.2641479i
+ - 136.30518 - 31.763766i 228.08611 - 168.38605i
+ 2347.2287 - 209.51156i - 2761.524 + 3893.7893i
+ - 36437.892 + 15707.017i 23669.41 - 76813.037i
+
+ 1. 4. 27. 256.
+ 3125. 46656. 823543. 16777216.
+ 3.874D+08 1.000D+10 2.853D+11 8.916D+12
+ 3.029D+14 1.111D+16 4.379D+17 1.845D+19
+
+
+ column 1 to 2
+
+ 0.2739573 + 0.5837008i - 1.4525046 - 0.8098895i
+ 145.23402 + 316.57634i 873.73919 - 3237.1528i
+ 876015.4 - 7412399.9i - 1.214D+08 + 26132892.i
+ - 5.981D+11 - 8.122D+11i - 1.952D+13 + 1.372D+13i
+
+ column 3 to 4
+
+ 6.6423696 + 2.8756701i - 35.273382 - 26.719734i
+ - 34429.512 + 16460.776i 425100.32 + 265667.49i
+ 9.762D+08 + 2.066D+09i 3.852D+10 - 2.523D+10i
+ 3.008D+14 + 5.264D+14i 1.542D+16 - 5.784D+15i
+
+
+ column 1 to 2
+
+ 1. - 5.0322958 + 7.2495678i
+ 52.91841 - 147.80494i 220.90118 - 169.40114i
+ 810.07457 + 577.82962i 805.22086 + 1127.4338i
+ - 640.12268 + 3093.5139i - 1686.9732 + 3612.7332i
+
+ column 3 to 4
+
+ - 30.042605 - 9.6168362i - 27.232232 - 72.963939i
+ 445.30044 - 76.40598i 665.99766 + 169.75421i
+ 589.32366 + 1773.758i 116.44495 + 2453.9147i
+ - 3011.2228 + 3931.5378i - 4582.1419 + 3973.9418i
+
+
+ column 1 to 2
+
+ - 2.3207356 + 1.8544984i - 20.48044 + 16.365907i
+ - 364.33818 + 291.14242i - 646.04074 + 516.25077i
+ - 2309.2285 + 1845.3031i - 3215.2764 + 2569.3254i
+ - 7331.3155 + 5858.4498i - 9253.224 + 7394.2457i
+
+ column 3 to 4
+
+ - 73.205934 + 58.498818i - 180.73943 + 144.42877i
+ - 1048.5266 + 837.87697i - 1595.0214 + 1274.5807i
+ - 4337.6776 + 3466.2355i - 5701.2952 + 4555.9016i
+ - 11492.786 + 9183.8783i - 14076.029 + 11248.146i
+
+
+ column 1 to 2
+
+ 1.2983955 + 2.8607296i - 6.4979428 + 7.4287166i
+ 259.35216 - 162.43308i 801.41878 + 531.03401i
+ - 19043.607 - 22933.021i 40879.037 - 84254.74i
+ - 1967162.8 + 2135793.1i - 8664081.7 - 2854416.7i
+
+ column 3 to 4
+
+ - 29.688449 - 8.9434449i - 12.96257 - 96.542751i
+ - 478.58617 + 2982.1345i - 9152.4746 + 2502.8844i
+ 294107.18 + 7547.8967i 360274.94 + 851161.26i
+ - 3083690.3 - 28491756.i 77503360. - 45815172.i
+
+
+ column 1 to 3
+
+ 3.1415927 + 3.1415927i 19.739209i - 62.012553 + 62.012553i
+ - 1224.0787 - 1224.0787i - 7691.1135i 24162.346 - 24162.346i
+ 476945.59 + 476945.59i 2996737.5i - 9414528.6 + 9414528.6i
+ - 1.858D+08 - 1.858D+08i - 1.168D+09i 3.668D+09 - 3.668D+09i
+
+ column 4
+
+ - 389.63636
+ 151816.5
+ - 59153228.
+ 2.305D+10
+
+ - 32.757625 - 16.01334i
+
+ - 84.61903 + 67.619016i
+
+
+ column 1 to 2
+
+ 1. 0.7338279 + 3.932111i
+ - 600.02537 + 3066.8542i - 11317.499 - 45262.529i
+ 2.330D+08 + 3.095D+08i - 5.108D+09 - 8.597D+09i
+ - 1.060D+14 + 2.837D+14i 8.113D+15 - 7.593D+15i
+
+ column 3 to 4
+
+ - 26.679454 - 4.1480999i 189.39145 - 172.24075i
+ 406193.94 + 716400.42i - 10062654. - 13424529.i
+ 9.156D+10 + 2.702D+11i - 2.340D+11 - 8.913D+12i
+ - 4.273D+17 + 9.554D+16i 1.714D+19 + 6.827D+18i
+
+
+ column 1 to 3
+
+ 1. + i 8.i - 54. + 54.i
+ - 12500. - 12500.i - 373248.i 6588344. - 6588344.i
+ 6.199D+09 + 6.199D+09i 3.200D+11i - 9.130D+12 + 9.130D+12i
+ - 1.938D+16 - 1.938D+16i - 1.422D+18i 5.605D+19 - 5.605D+19i
+
+ column 4
+
+ - 1024.
+ 2.684D+08
+ - 5.706D+14
+ 4.722D+21
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpDotHat"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotHat/test_OpDotHat_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotHat/test_OpDotHat_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.^d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.^z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.^d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.^z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.^z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.^d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.^z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.^d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpDotHat() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp29; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp30; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpDotHatd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0z0OpDotHatz0(z0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpDotHatd2(d2, __d2Size,d0,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpDotHatz2(z2, __z2Size,z0,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.^d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpDotHatd2(d0,d2, __d2Size,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.^z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpDotHatz2(z0,z2, __z2Size,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.^d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpDotHatd2(d2, __d2Size,d2, __d2Size,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.^z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpDotHatz2(z2, __z2Size,z2, __z2Size,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpDotHatz2(d2, __d2Size,z0,__temp25); !
+! !
+! ans9 = z2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpDotHatz2(z2, __z2Size,d0,__temp26); !
+! !
+! ans10 = z2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.^z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpDotHatz2(d0,z2, __z2Size,__temp27); !
+! !
+! ans11 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.^d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpDotHatz2(z0,d2, __d2Size,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp29 = d0z0OpDotHatz0(d0,z0); !
+! !
+! ans13 = z0dispd0(__temp29); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp30 = z0d0OpDotHatz0(z0,d0); !
+! !
+! ans14 = z0dispd0(__temp30); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.^z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpDotHatz2(d2, __d2Size,z2, __z2Size,__temp31); !
+! !
+! ans15 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.^d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpDotHatz2(z2, __z2Size,d2, __d2Size,__temp32); !
+! !
+! ans16 = z2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotHat.sci.tst b/2.3-1/tests/unit_tests/double/test_OpDotHat.sci.tst
new file mode 100644
index 00000000..cc185800
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotHat.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotHat.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci b/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci
new file mode 100644
index 00000000..eef4806d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci
@@ -0,0 +1,26 @@
+function test_OpDotSlash()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0./d0)
+ disp(d0./z0)
+ disp(d0./d2)
+ disp(d0./z2)
+
+ disp(d2./d0)
+ disp(d2./z0)
+ disp(d2./d2)
+ disp(d2./z2)
+
+ disp(z0./d0)
+ disp(z0./z0)
+ disp(z0./d2)
+ disp(z0./z2)
+
+ disp(z2./d0)
+ disp(z2./z0)
+ disp(z2./d2)
+ disp(z2./z2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.dia.ref
new file mode 100644
index 00000000..0e39516b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.dia.ref
@@ -0,0 +1,1189 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotSlash.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 0.5 - 0.5i
+
+ 3.1415927 1.5707963 1.0471976 0.7853982
+ 0.6283185 0.5235988 0.4487990 0.3926991
+ 0.3490659 0.3141593 0.2855993 0.2617994
+ 0.2416610 0.2243995 0.2094395 0.1963495
+
+
+ column 1 to 2
+
+ 1.5707963 - 1.5707963i 0.7853982 - 0.7853982i
+ 0.3141593 - 0.3141593i 0.2617994 - 0.2617994i
+ 0.1745329 - 0.1745329i 0.1570796 - 0.1570796i
+ 0.1208305 - 0.1208305i 0.1121997 - 0.1121997i
+
+ column 3 to 4
+
+ 0.5235988 - 0.5235988i 0.3926991 - 0.3926991i
+ 0.2243995 - 0.2243995i 0.1963495 - 0.1963495i
+ 0.1427997 - 0.1427997i 0.1308997 - 0.1308997i
+ 0.1047198 - 0.1047198i 0.0981748 - 0.0981748i
+
+ 0.3183099 0.6366198 0.9549297 1.2732395
+ 1.5915494 1.9098593 2.2281692 2.5464791
+ 2.864789 3.1830989 3.5014087 3.8197186
+ 4.1380285 4.4563384 4.7746483 5.0929582
+
+
+ column 1 to 2
+
+ 0.1591549 - 0.1591549i 0.3183099 - 0.3183099i
+ 0.7957747 - 0.7957747i 0.9549297 - 0.9549297i
+ 1.4323945 - 1.4323945i 1.5915494 - 1.5915494i
+ 2.0690143 - 2.0690143i 2.2281692 - 2.2281692i
+
+ column 3 to 4
+
+ 0.4774648 - 0.4774648i 0.6366198 - 0.6366198i
+ 1.1140846 - 1.1140846i 1.2732395 - 1.2732395i
+ 1.7507044 - 1.7507044i 1.9098593 - 1.9098593i
+ 2.3873241 - 2.3873241i 2.5464791 - 2.5464791i
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+ 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i 0.5 - 0.5i
+
+ 1. + i
+
+ 1.
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 1.5707963 + 1.5707963i
+ 0.6283185 + 0.6283185i 0.5235988 + 0.5235988i
+ 0.3490659 + 0.3490659i 0.3141593 + 0.3141593i
+ 0.2416610 + 0.2416610i 0.2243995 + 0.2243995i
+
+ column 3 to 4
+
+ 1.0471976 + 1.0471976i 0.7853982 + 0.7853982i
+ 0.4487990 + 0.4487990i 0.3926991 + 0.3926991i
+ 0.2855993 + 0.2855993i 0.2617994 + 0.2617994i
+ 0.2094395 + 0.2094395i 0.1963495 + 0.1963495i
+
+ 3.1415927 1.5707963 1.0471976 0.7853982
+ 0.6283185 0.5235988 0.4487990 0.3926991
+ 0.3490659 0.3141593 0.2855993 0.2617994
+ 0.2416610 0.2243995 0.2094395 0.1963495
+
+
+ column 1 to 2
+
+ 0.3183099 + 0.3183099i 0.6366198 + 0.6366198i
+ 1.5915494 + 1.5915494i 1.9098593 + 1.9098593i
+ 2.864789 + 2.864789i 3.1830989 + 3.1830989i
+ 4.1380285 + 4.1380285i 4.4563384 + 4.4563384i
+
+ column 3 to 4
+
+ 0.9549297 + 0.9549297i 1.2732395 + 1.2732395i
+ 2.2281692 + 2.2281692i 2.5464791 + 2.5464791i
+ 3.5014087 + 3.5014087i 3.8197186 + 3.8197186i
+ 4.7746483 + 4.7746483i 5.0929582 + 5.0929582i
+
+ 0.3183099 0.6366198 0.9549297 1.2732395
+ 1.5915494 1.9098593 2.2281692 2.5464791
+ 2.864789 3.1830989 3.5014087 3.8197186
+ 4.1380285 4.4563384 4.7746483 5.0929582
+
+ 1. + i 1. + i 1. + i 1. + i
+ 1. + i 1. + i 1. + i 1. + i
+ 1. + i 1. + i 1. + i 1. + i
+ 1. + i 1. + i 1. + i 1. + i
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpDotSlash"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotSlash/test_OpDotSlash_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotSlash/test_OpDotSlash_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0./d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0./z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0./d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0./z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2./d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2./z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2./d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2./z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0./d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0./z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0./d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0./z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2./d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2./z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2./d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2./z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpDotSlash() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp25; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp29[4 * 4]; !
+! !
+! int ____temp29Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp30[4 * 4]; !
+! !
+! int ____temp30Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0./d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpDotSlashd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0./z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0z0OpDotSlashz0(d0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0./d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpDotSlashd2(d0,d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0./z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpDotSlashz2(d0,z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2./d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpDotSlashd2(d2, __d2Size,d0,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2./z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpDotSlashz2(d2, __d2Size,z0,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2./d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpDotSlashd2(d2, __d2Size,d2, __d2Size,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2./z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpDotSlashz2(d2, __d2Size,z2, __z2Size,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0./d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = z0d0OpDotSlashz0(z0,d0); !
+! !
+! ans9 = z0dispd0(__temp25); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0./z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = z0z0OpDotSlashz0(z0,z0); !
+! !
+! ans10 = z0dispd0(__temp26); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0./d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpDotSlashz2(z0,d2, __d2Size,__temp27); !
+! !
+! ans11 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0./z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpDotSlashz2(z0,z2, __z2Size,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2./d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpDotSlashz2(z2, __z2Size,d0,__temp29); !
+! !
+! ans13 = z2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2./z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpDotSlashz2(z2, __z2Size,z0,__temp30); !
+! !
+! ans14 = z2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2./d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpDotSlashz2(z2, __z2Size,d2, __d2Size,__temp31); !
+! !
+! ans15 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2./z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpDotSlashz2(z2, __z2Size,z2, __z2Size,__temp32); !
+! !
+! ans16 = z2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.tst b/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.tst
new file mode 100644
index 00000000..d3cb92d5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotSlash.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotSlash.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotStar.sci b/2.3-1/tests/unit_tests/double/test_OpDotStar.sci
new file mode 100644
index 00000000..3e17f509
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotStar.sci
@@ -0,0 +1,26 @@
+function test_OpDotStar()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.*d0)
+ disp(d0.*z0)
+ disp(d0.*d2)
+ disp(d0.*z2)
+
+ disp(d2.*d0)
+ disp(d2.*z0)
+ disp(d2.*d2)
+ disp(d2.*z2)
+
+ disp(z0.*d0)
+ disp(z0.*z0)
+ disp(z0.*d2)
+ disp(z0.*z2)
+
+ disp(z2.*d0)
+ disp(z2.*z0)
+ disp(z2.*d2)
+ disp(z2.*z2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotStar.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpDotStar.sci.dia.ref
new file mode 100644
index 00000000..f4787d9e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotStar.sci.dia.ref
@@ -0,0 +1,1189 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotStar.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 9.8696044
+
+ 9.8696044 + 9.8696044i
+
+ 3.1415927 6.2831853 9.424778 12.566371
+ 15.707963 18.849556 21.991149 25.132741
+ 28.274334 31.415927 34.557519 37.699112
+ 40.840704 43.982297 47.12389 50.265482
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+ 3.1415927 6.2831853 9.424778 12.566371
+ 15.707963 18.849556 21.991149 25.132741
+ 28.274334 31.415927 34.557519 37.699112
+ 40.840704 43.982297 47.12389 50.265482
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+ 1. 4. 9. 16.
+ 25. 36. 49. 64.
+ 81. 100. 121. 144.
+ 169. 196. 225. 256.
+
+ 1. + i 4. + 4.i 9. + 9.i 16. + 16.i
+ 25. + 25.i 36. + 36.i 49. + 49.i 64. + 64.i
+ 81. + 81.i 100. + 100.i 121. + 121.i 144. + 144.i
+ 169. + 169.i 196. + 196.i 225. + 225.i 256. + 256.i
+
+ 9.8696044 + 9.8696044i
+
+ 19.739209i
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+ 6.2831853i 12.566371i 18.849556i 25.132741i
+ 31.415927i 37.699112i 43.982297i 50.265482i
+ 56.548668i 62.831853i 69.115038i 75.398224i
+ 81.681409i 87.964594i 94.24778i 100.53096i
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+ 6.2831853i 12.566371i 18.849556i 25.132741i
+ 31.415927i 37.699112i 43.982297i 50.265482i
+ 56.548668i 62.831853i 69.115038i 75.398224i
+ 81.681409i 87.964594i 94.24778i 100.53096i
+
+ 1. + i 4. + 4.i 9. + 9.i 16. + 16.i
+ 25. + 25.i 36. + 36.i 49. + 49.i 64. + 64.i
+ 81. + 81.i 100. + 100.i 121. + 121.i 144. + 144.i
+ 169. + 169.i 196. + 196.i 225. + 225.i 256. + 256.i
+
+ 2.i 8.i 18.i 32.i
+ 50.i 72.i 98.i 128.i
+ 162.i 200.i 242.i 288.i
+ 338.i 392.i 450.i 512.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpDotStar"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotStar/test_OpDotStar_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpDotStar/test_OpDotStar_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0.*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2.*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0.*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2.*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpDotStar() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp25; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp29[4 * 4]; !
+! !
+! int ____temp29Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp30[4 * 4]; !
+! !
+! int ____temp30Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpDotStard0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0z0OpDotStarz0(d0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpDotStard2(d0,d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0.*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpDotStarz2(d0,z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpDotStard2(d2, __d2Size,d0,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpDotStarz2(d2, __d2Size,z0,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpDotStard2(d2, __d2Size,d2, __d2Size,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2.*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpDotStarz2(d2, __d2Size,z2, __z2Size,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = z0d0OpDotStarz0(z0,d0); !
+! !
+! ans9 = z0dispd0(__temp25); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = z0z0OpDotStarz0(z0,z0); !
+! !
+! ans10 = z0dispd0(__temp26); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpDotStarz2(z0,d2, __d2Size,__temp27); !
+! !
+! ans11 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0.*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpDotStarz2(z0,z2, __z2Size,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpDotStarz2(z2, __z2Size,d0,__temp29); !
+! !
+! ans13 = z2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpDotStarz2(z2, __z2Size,z0,__temp30); !
+! !
+! ans14 = z2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpDotStarz2(z2, __z2Size,d2, __d2Size,__temp31); !
+! !
+! ans15 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2.*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpDotStarz2(z2, __z2Size,z2, __z2Size,__temp32); !
+! !
+! ans16 = z2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpDotStar.sci.tst b/2.3-1/tests/unit_tests/double/test_OpDotStar.sci.tst
new file mode 100644
index 00000000..7f95e3bb
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpDotStar.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpDotStar.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpEqual.sci b/2.3-1/tests/unit_tests/double/test_OpEqual.sci
new file mode 100644
index 00000000..25adb3ec
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpEqual.sci
@@ -0,0 +1,24 @@
+function test_OpEqual()
+
+ a = %pi;
+ disp(a);
+
+
+ b = %pi + %i;
+ disp(b);
+
+
+ c = "a";
+ disp(c);
+
+
+ d =[ %pi 4 5];
+ disp(d);
+
+ e = [7 8 9]*%i;
+ disp(e);
+
+ f = "plopilou" ;
+ disp(f);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpEqual.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpEqual.sci.dia.ref
new file mode 100644
index 00000000..fc326674
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpEqual.sci.dia.ref
@@ -0,0 +1,801 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpEqual.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 3.1415927 + i
+
+ a
+
+ 3.1415927 4. 5.
+
+ 7.i 8.i 9.i
+
+ plopilou
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpEqual"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpEqual/test_OpEqual_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpEqual/test_OpEqual_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = %pi;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = %pi + %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = "a";
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(c);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d =[ %pi 4 5];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = [7 8 9]*%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(e);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = "plopilou" ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(f);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpEqual() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double a = 3.1415927; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex b; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! char __temp1[1*2] = {"a"}; !
+! !
+! int ____temp1Size[2] = {1,2}; !
+! !
+! !
+! !
+! char c[1*2] = {"a"}; !
+! !
+! int __cSize[2] = {1,2}; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp2[1 * 2]; !
+! !
+! int ____temp2Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double d[1 * 3]; !
+! !
+! int __dSize[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex e[1 * 3]; !
+! !
+! int __eSize[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! char __temp5[1*9] = {"plopilou"}; !
+! !
+! int ____temp5Size[2] = {1,9}; !
+! !
+! !
+! !
+! char f[1*9] = {"plopilou"}; !
+! !
+! int __fSize[2] = {1,9}; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = %pi; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! a = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0dispd0(a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = %pi + %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! b = d0z0OpPlusz0(SCI2C_PI,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = z0dispd0(b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = "a"; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp1, ____temp1Size,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(c); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = g2dispd0(c, __cSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d =[ %pi 4 5]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(SCI2C_PI,4,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,5,d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = d2dispd0(d, __dSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = [7 8 9]*%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(7,8,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,9,__temp4); !
+! !
+! d2z0OpStarz2(__temp4, ____temp4Size,DoubleComplex(0,1),e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(e); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = z2dispd0(e, __eSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = "plopilou" ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp5, ____temp5Size,f); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(f); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = g2dispd0(f, __fSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpEqual.sci.tst b/2.3-1/tests/unit_tests/double/test_OpEqual.sci.tst
new file mode 100644
index 00000000..284d232c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpEqual.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpEqual.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpExt.sci b/2.3-1/tests/unit_tests/double/test_OpExt.sci
new file mode 100644
index 00000000..f49be76d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpExt.sci
@@ -0,0 +1,25 @@
+function test_OpExt ()
+
+ a = [1 2 3 ; 4 5 6];
+
+
+ disp(a(2));
+ disp(a([3 5]));
+ disp(a(2,3));
+ disp(a(2,[2 3]));
+ disp(a ([1 2],1));
+ disp(a ([1 2],[2 3]));
+
+
+ b = [1 2 3 ; 4 5 6] * %i;
+
+
+ disp(b(2));
+ disp(b([3 5]));
+ disp(b(2,3));
+ disp(b(2,[2 3]));
+ disp(b ([1 2],1));
+ disp(b ([1 2],[2 3]));
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpExt.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpExt.sci.dia.ref
new file mode 100644
index 00000000..06c4c442
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpExt.sci.dia.ref
@@ -0,0 +1,1052 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpExt.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 4.
+
+ 2.
+ 3.
+
+ 6.
+
+ 5. 6.
+
+ 1.
+ 4.
+
+ 2. 3.
+ 5. 6.
+
+ 4.i
+
+ 2.i
+ 3.i
+
+ 6.i
+
+ 5.i 6.i
+
+ i
+ 4.i
+
+ 2.i 3.i
+ 5.i 6.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpExt"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpExt/test_OpExt_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpExt/test_OpExt_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3 ; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a(2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a([3 5]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a(2,3));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a(2,[2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a ([1 2],1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a ([1 2],[2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 2 3 ; 4 5 6] * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b(2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b([3 5]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b(2,3));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b(2,[2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b ([1 2],1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b ([1 2],[2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpExt () !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[2 * 3]; !
+! !
+! int __aSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp5; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp7[2 * 1]; !
+! !
+! int ____temp7Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp8; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp9[1 * 2]; !
+! !
+! int ____temp9Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp10[1 * 2]; !
+! !
+! int ____temp10Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp11[1 * 2]; !
+! !
+! int ____temp11Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp12[2 * 1]; !
+! !
+! int ____temp12Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp13[1 * 2]; !
+! !
+! int ____temp13Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[2 * 2]; !
+! !
+! int ____temp15Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp16[1 * 2]; !
+! !
+! int ____temp16Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp17[1 * 3]; !
+! !
+! int ____temp17Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp18[1 * 2]; !
+! !
+! int ____temp18Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp19[1 * 3]; !
+! !
+! int ____temp19Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp20[2 * 3]; !
+! !
+! int ____temp20Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex b[2 * 3]; !
+! !
+! int __bSize[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp21; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp22[1 * 2]; !
+! !
+! int ____temp22Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp23[2 * 1]; !
+! !
+! int ____temp23Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp24; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp25[1 * 2]; !
+! !
+! int ____temp25Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[1 * 2]; !
+! !
+! int ____temp27Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp28[2 * 1]; !
+! !
+! int ____temp28Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp29[1 * 2]; !
+! !
+! int ____temp29Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp30[1 * 2]; !
+! !
+! int ____temp30Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp31[2 * 2]; !
+! !
+! int ____temp31Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3 ; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d0d0OpRcd2(4,5,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,6,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a(2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp5 = d2d0OpExtd0(a, __aSize,2); !
+! !
+! ans1 = d0dispd0(__temp5); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a([3 5])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(3,5,__temp6); !
+! !
+! d2d2OpExtd2(a, __aSize,__temp6, ____temp6Size,__temp7); !
+! !
+! ans2 = d2dispd0(__temp7, ____temp7Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a(2,3)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp8 = d2d0d0OpExtd0(a, __aSize,2,3); !
+! !
+! ans3 = d0dispd0(__temp8); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a(2,[2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(2,3,__temp9); !
+! !
+! d2d0d2OpExtd2(a, __aSize,2,__temp9, ____temp9Size,__temp10); !
+! !
+! ans4 = d2dispd0(__temp10, ____temp10Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a ([1 2],1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp11); !
+! !
+! d2d2d0OpExtd2(a, __aSize,__temp11, ____temp11Size,1,__temp12); !
+! !
+! ans5 = d2dispd0(__temp12, ____temp12Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a ([1 2],[2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp13); !
+! !
+! d0d0OpRcd2(2,3,__temp14); !
+! !
+! d2d2d2OpExtd2(a, __aSize,__temp13, ____temp13Size,__temp14, ____!
+! temp14Size,__temp15); !
+! !
+! ans6 = d2dispd0(__temp15, ____temp15Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 2 3 ; 4 5 6] * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp16); !
+! !
+! d2d0OpRcd2(__temp16, ____temp16Size,3,__temp17); !
+! !
+! d0d0OpRcd2(4,5,__temp18); !
+! !
+! d2d0OpRcd2(__temp18, ____temp18Size,6,__temp19); !
+! !
+! d2d2OpCcd2(__temp17, ____temp17Size,__temp19, ____temp19Size,__te!
+! mp20); !
+! !
+! d2z0OpStarz2(__temp20, ____temp20Size,DoubleComplex(0,1),b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b(2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = z2d0OpExtz0(b, __bSize,2); !
+! !
+! ans7 = z0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b([3 5])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(3,5,__temp22); !
+! !
+! z2d2OpExtz2(b, __bSize,__temp22, ____temp22Size,__temp23); !
+! !
+! ans8 = z2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b(2,3)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp24 = z2d0d0OpExtz0(b, __bSize,2,3); !
+! !
+! ans9 = z0dispd0(__temp24); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b(2,[2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(2,3,__temp25); !
+! !
+! z2d0d2OpExtz2(b, __bSize,2,__temp25, ____temp25Size,__temp26); !
+! !
+! ans10 = z2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b ([1 2],1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp27); !
+! !
+! z2d2d0OpExtz2(b, __bSize,__temp27, ____temp27Size,1,__temp28); !
+! !
+! ans11 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b ([1 2],[2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp29); !
+! !
+! d0d0OpRcd2(2,3,__temp30); !
+! !
+! z2d2d2OpExtz2(b, __bSize,__temp29, ____temp29Size,__temp30, ____!
+! temp30Size,__temp31); !
+! !
+! ans12 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpExt.sci.tst b/2.3-1/tests/unit_tests/double/test_OpExt.sci.tst
new file mode 100644
index 00000000..19c3b075
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpExt.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpExt.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpHat.sci b/2.3-1/tests/unit_tests/double/test_OpHat.sci
new file mode 100644
index 00000000..0f029ab8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpHat.sci
@@ -0,0 +1,29 @@
+function test_OpHat()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0^d0)
+ disp(z0^z0)
+ disp(d2^d0)
+ disp(z2^z0)
+
+ disp(d0^d2)
+ disp(z0^z2)
+
+ //disp(d2^d2) // ! Not implemented in Scilab !
+ //disp(z2^z2) // ! Not implemented in Scilab !
+
+ disp(d2^z0)
+ disp(z2^d0)
+
+ disp(d0^z2)
+ disp(z0^d2)
+
+ disp(d0^z0)
+ disp(z0^d0)
+
+ //disp(d2^z2) // ! Not implemented in Scilab !
+ //disp(z2^d2) // ! Not implemented in Scilab !
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpHat.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpHat.sci.dia.ref
new file mode 100644
index 00000000..7945551a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpHat.sci.dia.ref
@@ -0,0 +1,1197 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpHat.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 36.46216
+
+ 5.9283225 + 7.016786i
+
+
+ column 1 to 2
+
+ 5224.1794 - 3.2901821i 5920.186 - 1.6870476i
+ 12083.561 - 1.2816291i 13685.202 - 0.6571580i
+ 18942.943 + 0.7269239i 21450.219 + 0.3727317i
+ 25802.325 + 2.7354768i 29215.235 + 1.4026214i
+
+ column 3 to 4
+
+ 6616.1926 - 0.0839132i 7312.1992 + 1.5192213i
+ 15286.844 - 0.0326868i 16888.485 + 0.5917844i
+ 23957.495 + 0.0185395i 26464.77 - 0.3356526i
+ 32628.146 + 0.0697659i 36041.056 - 1.2630896i
+
+
+ column 1 to 2
+
+ - 29769.003 + 24471.882i - 15787.197 + 13175.111i
+ - 13217.507 + 11476.587i - 7985.8634 + 7333.5474i
+ 3333.9879 - 1518.7071i - 184.52977 + 1491.9834i
+ 19885.483 - 14514.002i 7616.8039 - 4349.5807i
+
+ column 3 to 4
+
+ - 1805.3913 + 1878.3411i 12176.414 - 9418.4292i
+ - 2754.2193 + 3190.5075i 2477.4247 - 952.53243i
+ - 3703.0474 + 4502.6739i - 7221.5651 + 7513.3644i
+ - 4651.8755 + 5814.8403i - 16920.555 + 15979.261i
+
+ 3.1415927 9.8696044 31.006277 97.409091
+ 306.01968 961.38919 3020.2932 9488.531
+ 29809.099 93648.047 294204.02 924269.18
+ 2903677.3 9122171.2 28658146. 90032221.
+
+
+ column 1 to 2
+
+ - 1.3141052 + 1.541592i - 0.6496337 - 4.0516281i
+ 12.902191 - 31.573352i 31.718393 + 61.38062i
+ - 40.146534 + 572.8927i - 830.41006 - 814.73083i
+ - 2373.7017 - 9373.9919i 17570.165 + 8659.1315i
+
+ column 3 to 4
+
+ 7.0996445 + 4.3227953i - 15.993666 + 5.2641479i
+ - 136.30518 - 31.763766i 228.08611 - 168.38605i
+ 2347.2287 - 209.51156i - 2761.524 + 3893.7893i
+ - 36437.892 + 15707.017i 23669.41 - 76813.037i
+
+
+ column 1 to 2
+
+ 1448.6594 - 5026.4901i 1640.475 - 5692.0437i
+ 3347.0813 - 11613.548i 3790.2657 - 13151.288i
+ 5245.5032 - 18200.605i 5940.0564 - 20610.533i
+ 7143.9251 - 24787.662i 8089.847 - 28069.778i
+
+ column 3 to 4
+
+ 1832.2907 - 6357.5974i 2024.1063 - 7023.1511i
+ 4233.4501 - 14689.029i 4676.6345 - 16226.77i
+ 6634.6095 - 23020.461i 7329.1626 - 25430.39i
+ 9035.7689 - 31351.893i 9981.6908 - 34634.009i
+
+
+ column 1 to 2
+
+ - 12130.041 + 9680.5967i - 13742.315 + 10975.06i
+ - 28045.127 + 22405.971i - 31760.955 + 25377.661i
+ - 43960.214 + 35131.345i - 49779.595 + 39780.261i
+ - 59875.3 + 47856.719i - 67798.235 + 54182.862i
+
+ column 3 to 4
+
+ - 15354.589 + 12269.524i - 16966.863 + 13563.987i
+ - 35476.782 + 28349.351i - 39192.61 + 31321.041i
+ - 55598.975 + 44429.178i - 61418.356 + 49078.095i
+ - 75721.169 + 60509.006i - 83644.103 + 66835.149i
+
+
+ column 1 to 2
+
+ 1.2983955 + 2.8607296i - 6.4979428 + 7.4287166i
+ 259.35216 - 162.43308i 801.41878 + 531.03401i
+ - 19043.607 - 22933.021i 40879.037 - 84254.74i
+ - 1967162.8 + 2135793.1i - 8664081.7 - 2854416.7i
+
+ column 3 to 4
+
+ - 29.688449 - 8.9434449i - 12.96257 - 96.542751i
+ - 478.58617 + 2982.1345i - 9152.4746 + 2502.8844i
+ 294107.18 + 7547.8967i 360274.94 + 851161.26i
+ - 3083690.3 - 28491756.i 77503360. - 45815172.i
+
+
+ column 1 to 3
+
+ 3.1415927 + 3.1415927i 19.739209i - 62.012553 + 62.012553i
+ - 1224.0787 - 1224.0787i - 7691.1135i 24162.346 - 24162.346i
+ 476945.59 + 476945.59i 2996737.5i - 9414528.6 + 9414528.6i
+ - 1.858D+08 - 1.858D+08i - 1.168D+09i 3.668D+09 - 3.668D+09i
+
+ column 4
+
+ - 389.63636
+ 151816.5
+ - 59153228.
+ 2.305D+10
+
+ - 32.757625 - 16.01334i
+
+ - 84.61903 + 67.619016i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpHat"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpHat/test_OpHat_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpHat/test_OpHat_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0^d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0^z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2^d2) // ! Not implemented in Scilab !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2^z2) // ! Not implemented in Scilab !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0^z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0^d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0^z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0^d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2^z2) // ! Not implemented in Scilab !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2^d2) // ! Not implemented in Scilab !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpHat() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpHatd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0z0OpHatz0(z0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpHatd2(d2, __d2Size,d0,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpHatz2(z2, __z2Size,z0,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0^d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpHatd2(d0,d2, __d2Size,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0^z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpHatz2(z0,z2, __z2Size,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2^d2) // ! Not implemented in Scilab ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2^z2) // ! Not implemented in Scilab ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpHatz2(d2, __d2Size,z0,__temp23); !
+! !
+! ans7 = z2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpHatz2(z2, __z2Size,d0,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0^z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpHatz2(d0,z2, __z2Size,__temp25); !
+! !
+! ans9 = z2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0^d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpHatz2(z0,d2, __d2Size,__temp26); !
+! !
+! ans10 = z2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0^z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp27 = d0z0OpHatz0(d0,z0); !
+! !
+! ans11 = z0dispd0(__temp27); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0^d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp28 = z0d0OpHatz0(z0,d0); !
+! !
+! ans12 = z0dispd0(__temp28); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2^z2) // ! Not implemented in Scilab ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2^d2) // ! Not implemented in Scilab ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpHat.sci.tst b/2.3-1/tests/unit_tests/double/test_OpHat.sci.tst
new file mode 100644
index 00000000..2cadee1e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpHat.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpHat.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpIns.sci b/2.3-1/tests/unit_tests/double/test_OpIns.sci
new file mode 100644
index 00000000..bb7691a2
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpIns.sci
@@ -0,0 +1,129 @@
+function test_OpIns()
+ //reals
+a=[1 2 3; 4 5 6]
+
+a(3)=-2
+disp(a);
+
+a(3)=-4+%i
+disp(a);
+
+a(1,3)=-12;
+disp(a);
+
+a(1,3)=-5+%i;
+disp(a);
+
+a([1,2],1)=-12;
+disp(a);
+
+a([1,2],1)=-5+%i;
+disp(a);
+
+a(2,[2,3])=-12;
+disp(a);
+
+a(2,[2,3])=-5+%i;
+disp(a);
+
+a([1 2],[1,2,3])=4;
+disp(a);
+
+a([1 2],[1,2,3])=3+%i;
+disp(a);
+
+a([1,3])=7;
+disp(a);
+
+a([1,3])=2+%i;
+disp(a);
+
+a([1,3])=[1,0];
+disp(a);
+
+a([1,3])=[3-%i,1+%i];
+disp(a);
+
+a(2,[1,3])=[-2,-7];
+disp(a);
+
+a(2,[1,3])=[-4+%i,-5+%i];
+disp(a);
+
+a([1,2],3)=[-9;-1];
+disp(a);
+
+a([1,2],3)=[-4+%i;-5+%i];
+disp(a);
+
+a([1,2],[2,3])=[-31 -45;-29 -51];
+disp(a);
+
+a([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+disp(a);
+
+
+//complexes
+
+b=[1-3*%i 2+%i 3+2*%i; 4 5+4*%i 6]
+
+b(3)=-2
+disp(b);
+
+b(3)=-4+%i
+disp(b);
+
+b(1,3)=-12;
+disp(b);
+
+b(1,3)=-5+%i;
+disp(b);
+
+b([1,2],1)=-12;
+disp(b);
+
+b([1,2],1)=-5+%i;
+disp(b);
+
+b(2,[2,3])=-12;
+disp(b);
+
+b(2,[2,3])=-5+%i;
+disp(b);
+
+b([1 2],[1,2,3])=4;
+disp(b);
+
+b([1 2],[1,2,3])=3+%i;
+disp(b);
+
+b([1,3])=7;
+disp(b);
+
+b([1,3])=2+%i;
+disp(b);
+
+b([1,3])=[1,0];
+disp(b);
+
+b([1,3])=[3-%i,1+%i];
+disp(b);
+
+b(2,[1,3])=[-2,-7];
+disp(b);
+
+b(2,[1,3])=[-4+%i,-5+%i];
+disp(b);
+
+b([1,2],3)=[-9;-1];
+disp(b);
+
+b([1,2],3)=[-4+%i;-5+%i];
+disp(b);
+
+b([1,2],[2,3])=[-31 -45;-29 -51];
+disp(b);
+
+b([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+disp(b);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpIns.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpIns.sci.dia.ref
new file mode 100644
index 00000000..5b8afc46
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpIns.sci.dia.ref
@@ -0,0 +1,3885 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpIns.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1. - 2. 3.
+ 4. 5. 6.
+
+ 1. - 4. + i 3.
+ 4. 5. 6.
+
+ 1. - 4. + i - 12.
+ 4. 5. 6.
+
+ 1. - 4. + i - 5. + i
+ 4. 5. 6.
+
+ - 12. - 4. + i - 5. + i
+ - 12. 5. 6.
+
+ - 5. + i - 4. + i - 5. + i
+ - 5. + i 5. 6.
+
+ - 5. + i - 4. + i - 5. + i
+ - 5. + i - 12. - 12.
+
+ - 5. + i - 4. + i - 5. + i
+ - 5. + i - 5. + i - 5. + i
+
+ 4. 4. 4.
+ 4. 4. 4.
+
+ 3. + i 3. + i 3. + i
+ 3. + i 3. + i 3. + i
+
+ 7. 7. 3. + i
+ 3. + i 3. + i 3. + i
+
+ 2. + i 2. + i 3. + i
+ 3. + i 3. + i 3. + i
+
+ 1. 0 3. + i
+ 3. + i 3. + i 3. + i
+
+ 3. - i 1. + i 3. + i
+ 3. + i 3. + i 3. + i
+
+ 3. - i 1. + i 3. + i
+ - 2. 3. + i - 7.
+
+ 3. - i 1. + i 3. + i
+ - 4. + i 3. + i - 5. + i
+
+ 3. - i 1. + i - 9.
+ - 4. + i 3. + i - 1.
+
+ 3. - i 1. + i - 4. + i
+ - 4. + i 3. + i - 5. + i
+
+ 3. - i - 31. - 45.
+ - 4. + i - 29. - 51.
+
+ 3. - i - 4. + i - 5. + i
+ - 4. + i - 4. + i - 5. + i
+
+ 1. - 3.i - 2. 3. + 2.i
+ 4. 5. + 4.i 6.
+
+ 1. - 3.i - 4. + i 3. + 2.i
+ 4. 5. + 4.i 6.
+
+ 1. - 3.i - 4. + i - 12.
+ 4. 5. + 4.i 6.
+
+ 1. - 3.i - 4. + i - 5. + i
+ 4. 5. + 4.i 6.
+
+ - 12. - 4. + i - 5. + i
+ - 12. 5. + 4.i 6.
+
+ - 5. + i - 4. + i - 5. + i
+ - 5. + i 5. + 4.i 6.
+
+ - 5. + i - 4. + i - 5. + i
+ - 5. + i - 12. - 12.
+
+ - 5. + i - 4. + i - 5. + i
+ - 5. + i - 5. + i - 5. + i
+
+ 4. 4. 4.
+ 4. 4. 4.
+
+ 3. + i 3. + i 3. + i
+ 3. + i 3. + i 3. + i
+
+ 7. 7. 3. + i
+ 3. + i 3. + i 3. + i
+
+ 2. + i 2. + i 3. + i
+ 3. + i 3. + i 3. + i
+
+ 1. 0 3. + i
+ 3. + i 3. + i 3. + i
+
+ 3. - i 1. + i 3. + i
+ 3. + i 3. + i 3. + i
+
+ 3. - i 1. + i 3. + i
+ - 2. 3. + i - 7.
+
+ 3. - i 1. + i 3. + i
+ - 4. + i 3. + i - 5. + i
+
+ 3. - i 1. + i - 9.
+ - 4. + i 3. + i - 1.
+
+ 3. - i 1. + i - 4. + i
+ - 4. + i 3. + i - 5. + i
+
+ 3. - i - 31. - 45.
+ - 4. + i - 29. - 51.
+
+ 3. - i - 4. + i - 5. + i
+ - 4. + i - 4. + i - 5. + i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpIns"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpIns/test_OpIns_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpIns/test_OpIns_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //reals
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a=[1 2 3; 4 5 6]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(3)=-2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(3)=-4+%i
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(1,3)=-12;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(1,3)=-5+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,2],1)=-12;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,2],1)=-5+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(2,[2,3])=-12;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(2,[2,3])=-5+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1 2],[1,2,3])=4;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1 2],[1,2,3])=3+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,3])=7;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,3])=2+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,3])=[1,0];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,3])=[3-%i,1+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(2,[1,3])=[-2,-7];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a(2,[1,3])=[-4+%i,-5+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,2],3)=[-9;-1];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,2],3)=[-4+%i;-5+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,2],[2,3])=[-31 -45;-29 -51];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //complexes
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b=[1-3*%i 2+%i 3+2*%i; 4 5+4*%i 6]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(3)=-2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(3)=-4+%i
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(1,3)=-12;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(1,3)=-5+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,2],1)=-12;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,2],1)=-5+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(2,[2,3])=-12;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(2,[2,3])=-5+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1 2],[1,2,3])=4;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1 2],[1,2,3])=3+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,3])=7;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,3])=2+%i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,3])=[1,0];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,3])=[3-%i,1+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(2,[1,3])=[-2,-7];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b(2,[1,3])=[-4+%i,-5+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,2],3)=[-9;-1];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,2],3)=[-4+%i;-5+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,2],[2,3])=[-31 -45;-29 -51];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpIns() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[2 * 3]; !
+! !
+! int __aSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp5; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp6; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp8; !
+! !
+! !
+! !
+! double __temp9[1 * 2]; !
+! !
+! int ____temp9Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp10[1 * 2]; !
+! !
+! int ____temp10Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp11; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp13[1 * 2]; !
+! !
+! int ____temp13Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp16; !
+! !
+! !
+! !
+! double __temp17[1 * 2]; !
+! !
+! int ____temp17Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp18[1 * 2]; !
+! !
+! int ____temp18Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp19[1 * 3]; !
+! !
+! int ____temp19Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp20[1 * 2]; !
+! !
+! int ____temp20Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp21; !
+! !
+! !
+! !
+! double __temp22[1 * 2]; !
+! !
+! int ____temp22Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp23[1 * 2]; !
+! !
+! int ____temp23Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp25; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! doubleComplex __temp27[1 * 2]; !
+! !
+! int ____temp27Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp28[1 * 2]; !
+! !
+! int ____temp28Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp29[1 * 2]; !
+! !
+! int ____temp29Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp30[1 * 2]; !
+! !
+! int ____temp30Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp31; !
+! !
+! !
+! !
+! doubleComplex __temp32; !
+! !
+! !
+! !
+! doubleComplex __temp33[1 * 2]; !
+! !
+! int ____temp33Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp34[1 * 2]; !
+! !
+! int ____temp34Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! double __temp35[2 * 1]; !
+! !
+! int ____temp35Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double __temp36[1 * 2]; !
+! !
+! int ____temp36Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! doubleComplex __temp37; !
+! !
+! !
+! !
+! doubleComplex __temp38; !
+! !
+! !
+! !
+! doubleComplex __temp39[2 * 1]; !
+! !
+! int ____temp39Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double __temp40[1 * 2]; !
+! !
+! int ____temp40Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! double __temp41[1 * 2]; !
+! !
+! int ____temp41Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp42[1 * 2]; !
+! !
+! int ____temp42Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp43[2 * 2]; !
+! !
+! int ____temp43Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp44[1 * 2]; !
+! !
+! int ____temp44Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp45[1 * 2]; !
+! !
+! int ____temp45Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! doubleComplex __temp46; !
+! !
+! !
+! !
+! doubleComplex __temp47; !
+! !
+! !
+! !
+! doubleComplex __temp48[1 * 2]; !
+! !
+! int ____temp48Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp49; !
+! !
+! !
+! !
+! doubleComplex __temp50; !
+! !
+! !
+! !
+! doubleComplex __temp51[1 * 2]; !
+! !
+! int ____temp51Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp52[2 * 2]; !
+! !
+! int ____temp52Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp53[1 * 2]; !
+! !
+! int ____temp53Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp54[1 * 2]; !
+! !
+! int ____temp54Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! doubleComplex __temp55; !
+! !
+! !
+! !
+! doubleComplex __temp56; !
+! !
+! !
+! !
+! doubleComplex __temp57; !
+! !
+! !
+! !
+! doubleComplex __temp58[1 * 2]; !
+! !
+! int ____temp58Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp59; !
+! !
+! !
+! !
+! doubleComplex __temp60; !
+! !
+! !
+! !
+! doubleComplex __temp61[1 * 3]; !
+! !
+! int ____temp61Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp62; !
+! !
+! !
+! !
+! doubleComplex __temp63; !
+! !
+! !
+! !
+! doubleComplex __temp64[1 * 2]; !
+! !
+! int ____temp64Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp65[1 * 3]; !
+! !
+! int ____temp65Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex b[2 * 3]; !
+! !
+! int __bSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double ans21; !
+! !
+! !
+! !
+! doubleComplex __temp66; !
+! !
+! !
+! !
+! double ans22; !
+! !
+! !
+! !
+! double ans23; !
+! !
+! !
+! !
+! doubleComplex __temp67; !
+! !
+! !
+! !
+! double ans24; !
+! !
+! !
+! !
+! double __temp68[1 * 2]; !
+! !
+! int ____temp68Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans25; !
+! !
+! !
+! !
+! doubleComplex __temp69; !
+! !
+! !
+! !
+! double __temp70[1 * 2]; !
+! !
+! int ____temp70Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans26; !
+! !
+! !
+! !
+! double __temp71[1 * 2]; !
+! !
+! int ____temp71Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans27; !
+! !
+! !
+! !
+! doubleComplex __temp72; !
+! !
+! !
+! !
+! double __temp73[1 * 2]; !
+! !
+! int ____temp73Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans28; !
+! !
+! !
+! !
+! double __temp74[1 * 2]; !
+! !
+! int ____temp74Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp75[1 * 2]; !
+! !
+! int ____temp75Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp76[1 * 3]; !
+! !
+! int ____temp76Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans29; !
+! !
+! !
+! !
+! doubleComplex __temp77; !
+! !
+! !
+! !
+! double __temp78[1 * 2]; !
+! !
+! int ____temp78Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp79[1 * 2]; !
+! !
+! int ____temp79Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp80[1 * 3]; !
+! !
+! int ____temp80Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans30; !
+! !
+! !
+! !
+! double __temp81[1 * 2]; !
+! !
+! int ____temp81Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans31; !
+! !
+! !
+! !
+! doubleComplex __temp82; !
+! !
+! !
+! !
+! double __temp83[1 * 2]; !
+! !
+! int ____temp83Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans32; !
+! !
+! !
+! !
+! double __temp84[1 * 2]; !
+! !
+! int ____temp84Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp85[1 * 2]; !
+! !
+! int ____temp85Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans33; !
+! !
+! !
+! !
+! doubleComplex __temp86; !
+! !
+! !
+! !
+! doubleComplex __temp87; !
+! !
+! !
+! !
+! doubleComplex __temp88[1 * 2]; !
+! !
+! int ____temp88Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp89[1 * 2]; !
+! !
+! int ____temp89Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans34; !
+! !
+! !
+! !
+! double __temp90[1 * 2]; !
+! !
+! int ____temp90Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp91[1 * 2]; !
+! !
+! int ____temp91Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans35; !
+! !
+! !
+! !
+! doubleComplex __temp92; !
+! !
+! !
+! !
+! doubleComplex __temp93; !
+! !
+! !
+! !
+! doubleComplex __temp94[1 * 2]; !
+! !
+! int ____temp94Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp95[1 * 2]; !
+! !
+! int ____temp95Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans36; !
+! !
+! !
+! !
+! double __temp96[2 * 1]; !
+! !
+! int ____temp96Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double __temp97[1 * 2]; !
+! !
+! int ____temp97Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans37; !
+! !
+! !
+! !
+! doubleComplex __temp98; !
+! !
+! !
+! !
+! doubleComplex __temp99; !
+! !
+! !
+! !
+! doubleComplex __temp100[2 * 1]; !
+! !
+! int ____temp100Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double __temp101[1 * 2]; !
+! !
+! int ____temp101Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans38; !
+! !
+! !
+! !
+! double __temp102[1 * 2]; !
+! !
+! int ____temp102Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp103[1 * 2]; !
+! !
+! int ____temp103Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp104[2 * 2]; !
+! !
+! int ____temp104Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp105[1 * 2]; !
+! !
+! int ____temp105Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp106[1 * 2]; !
+! !
+! int ____temp106Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans39; !
+! !
+! !
+! !
+! doubleComplex __temp107; !
+! !
+! !
+! !
+! doubleComplex __temp108; !
+! !
+! !
+! !
+! doubleComplex __temp109[1 * 2]; !
+! !
+! int ____temp109Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp110; !
+! !
+! !
+! !
+! doubleComplex __temp111; !
+! !
+! !
+! !
+! doubleComplex __temp112[1 * 2]; !
+! !
+! int ____temp112Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp113[2 * 2]; !
+! !
+! int ____temp113Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp114[1 * 2]; !
+! !
+! int ____temp114Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp115[1 * 2]; !
+! !
+! int ____temp115Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans40; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //reals !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a=[1 2 3; 4 5 6] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d0d0OpRcd2(4,5,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,6,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(3)=-2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0d0OpIns(a, __aSize,3,-2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(3)=-4+%i !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp5 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! d2d0z0OpIns(a, __aSize,3,__temp5); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(1,3)=-12; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0d0d0OpIns(a, __aSize,1,3,-12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(1,3)=-5+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp6 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! d2d0d0z0OpIns(a, __aSize,1,3,__temp6); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,2],1)=-12; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp7); !
+! !
+! d2d2d0d0OpIns(a, __aSize,__temp7, ____temp7Size,1,-12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,2],1)=-5+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp8 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(1,2,__temp9); !
+! !
+! d2d2d0z0OpIns(a, __aSize,__temp9, ____temp9Size,1,__temp8); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(2,[2,3])=-12; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(2,3,__temp10); !
+! !
+! d2d0d2d0OpIns(a, __aSize,2,__temp10, ____temp10Size,-12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans7 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(2,[2,3])=-5+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp11 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(2,3,__temp12); !
+! !
+! d2d0d2z0OpIns(a, __aSize,2,__temp12, ____temp12Size,__temp11); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1 2],[1,2,3])=4; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp13); !
+! !
+! d0d0OpRcd2(1,2,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,3,__temp15); !
+! !
+! d2d2d2d0OpIns(a, __aSize,__temp13, ____temp13Size,__temp15, ____!
+! temp15Size,4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1 2],[1,2,3])=3+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp16 = d0z0OpPlusz0(3,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(1,2,__temp17); !
+! !
+! d0d0OpRcd2(1,2,__temp18); !
+! !
+! d2d0OpRcd2(__temp18, ____temp18Size,3,__temp19); !
+! !
+! d2d2d2z0OpIns(a, __aSize,__temp17, ____temp17Size,__temp19, ____!
+! temp19Size,__temp16); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,3])=7; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,3,__temp20); !
+! !
+! d2d2d0OpIns(a, __aSize,__temp20, ____temp20Size,7); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans11 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,3])=2+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0z0OpPlusz0(2,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(1,3,__temp22); !
+! !
+! d2d2z0OpIns(a, __aSize,__temp22, ____temp22Size,__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,3])=[1,0]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,0,__temp23); !
+! !
+! d0d0OpRcd2(1,3,__temp24); !
+! !
+! d2d2d2OpIns(a, __aSize,__temp24, ____temp24Size,__temp23, ____te!
+! mp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans13 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,3])=[3-%i,1+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = d0z0OpMinusz0(3,DoubleComplex(0,1)); !
+! !
+! __temp26 = d0z0OpPlusz0(1,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp25,__temp26,__temp27); !
+! !
+! d0d0OpRcd2(1,3,__temp28); !
+! !
+! d2d2z2OpIns(a, __aSize,__temp28, ____temp28Size,__temp27, ____te!
+! mp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans14 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(2,[1,3])=[-2,-7]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(-2,-7,__temp29); !
+! !
+! d0d0OpRcd2(1,3,__temp30); !
+! !
+! d2d0d2d2OpIns(a, __aSize,2,__temp30, ____temp30Size,__temp29, __!
+! __temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans15 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a(2,[1,3])=[-4+%i,-5+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp31 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp32 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp31,__temp32,__temp33); !
+! !
+! d0d0OpRcd2(1,3,__temp34); !
+! !
+! d2d0d2z2OpIns(a, __aSize,2,__temp34, ____temp34Size,__temp33, __!
+! __temp33Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans16 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,2],3)=[-9;-1]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpCcd2(-9,-1,__temp35); !
+! !
+! d0d0OpRcd2(1,2,__temp36); !
+! !
+! d2d2d0d2OpIns(a, __aSize,__temp36, ____temp36Size,3,__temp35, __!
+! __temp35Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans17 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,2],3)=[-4+%i;-5+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp37 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp38 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpCcz2(__temp37,__temp38,__temp39); !
+! !
+! d0d0OpRcd2(1,2,__temp40); !
+! !
+! d2d2d0z2OpIns(a, __aSize,__temp40, ____temp40Size,3,__temp39, __!
+! __temp39Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans18 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,2],[2,3])=[-31 -45;-29 -51]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(-31,-45,__temp41); !
+! !
+! d0d0OpRcd2(-29,-51,__temp42); !
+! !
+! d2d2OpCcd2(__temp41, ____temp41Size,__temp42, ____temp42Size,__te!
+! mp43); !
+! !
+! d0d0OpRcd2(1,2,__temp44); !
+! !
+! d0d0OpRcd2(2,3,__temp45); !
+! !
+! d2d2d2d2OpIns(a, __aSize,__temp44, ____temp44Size,__temp45, ____!
+! temp45Size,__temp43, ____temp43Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans19 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp46 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp47 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp46,__temp47,__temp48); !
+! !
+! __temp49 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp50 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp49,__temp50,__temp51); !
+! !
+! z2z2OpCcz2(__temp48, ____temp48Size,__temp51, ____temp51Size,__te!
+! mp52); !
+! !
+! d0d0OpRcd2(1,2,__temp53); !
+! !
+! d0d0OpRcd2(2,3,__temp54); !
+! !
+! d2d2d2z2OpIns(a, __aSize,__temp53, ____temp53Size,__temp54, ____!
+! temp54Size,__temp52, ____temp52Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans20 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //complexes !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b=[1-3*%i 2+%i 3+2*%i; 4 5+4*%i 6] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp55 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp56 = d0z0OpMinusz0(1,__temp55); !
+! !
+! __temp57 = d0z0OpPlusz0(2,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp56,__temp57,__temp58); !
+! !
+! __temp59 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! __temp60 = d0z0OpPlusz0(3,__temp59); !
+! !
+! z2z0OpRcz2(__temp58, ____temp58Size,__temp60,__temp61); !
+! !
+! __temp62 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp63 = d0z0OpPlusz0(5,__temp62); !
+! !
+! d0z0OpRcz2(4,__temp63,__temp64); !
+! !
+! z2d0OpRcz2(__temp64, ____temp64Size,6,__temp65); !
+! !
+! z2z2OpCcz2(__temp61, ____temp61Size,__temp65, ____temp65Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(3)=-2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0d0OpIns(b, __bSize,3,-2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans21 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(3)=-4+%i !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp66 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! z2d0z0OpIns(b, __bSize,3,__temp66); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans22 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(1,3)=-12; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0d0d0OpIns(b, __bSize,1,3,-12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans23 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(1,3)=-5+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp67 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z2d0d0z0OpIns(b, __bSize,1,3,__temp67); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans24 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,2],1)=-12; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp68); !
+! !
+! z2d2d0d0OpIns(b, __bSize,__temp68, ____temp68Size,1,-12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans25 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,2],1)=-5+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp69 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(1,2,__temp70); !
+! !
+! z2d2d0z0OpIns(b, __bSize,__temp70, ____temp70Size,1,__temp69); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans26 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(2,[2,3])=-12; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(2,3,__temp71); !
+! !
+! z2d0d2d0OpIns(b, __bSize,2,__temp71, ____temp71Size,-12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans27 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(2,[2,3])=-5+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp72 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(2,3,__temp73); !
+! !
+! z2d0d2z0OpIns(b, __bSize,2,__temp73, ____temp73Size,__temp72); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans28 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1 2],[1,2,3])=4; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp74); !
+! !
+! d0d0OpRcd2(1,2,__temp75); !
+! !
+! d2d0OpRcd2(__temp75, ____temp75Size,3,__temp76); !
+! !
+! z2d2d2d0OpIns(b, __bSize,__temp74, ____temp74Size,__temp76, ____!
+! temp76Size,4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans29 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1 2],[1,2,3])=3+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp77 = d0z0OpPlusz0(3,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(1,2,__temp78); !
+! !
+! d0d0OpRcd2(1,2,__temp79); !
+! !
+! d2d0OpRcd2(__temp79, ____temp79Size,3,__temp80); !
+! !
+! z2d2d2z0OpIns(b, __bSize,__temp78, ____temp78Size,__temp80, ____!
+! temp80Size,__temp77); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans30 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,3])=7; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,3,__temp81); !
+! !
+! z2d2d0OpIns(b, __bSize,__temp81, ____temp81Size,7); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans31 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,3])=2+%i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp82 = d0z0OpPlusz0(2,DoubleComplex(0,1)); !
+! !
+! d0d0OpRcd2(1,3,__temp83); !
+! !
+! z2d2z0OpIns(b, __bSize,__temp83, ____temp83Size,__temp82); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans32 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,3])=[1,0]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,0,__temp84); !
+! !
+! d0d0OpRcd2(1,3,__temp85); !
+! !
+! z2d2d2OpIns(b, __bSize,__temp85, ____temp85Size,__temp84, ____te!
+! mp84Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans33 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,3])=[3-%i,1+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp86 = d0z0OpMinusz0(3,DoubleComplex(0,1)); !
+! !
+! __temp87 = d0z0OpPlusz0(1,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp86,__temp87,__temp88); !
+! !
+! d0d0OpRcd2(1,3,__temp89); !
+! !
+! z2d2z2OpIns(b, __bSize,__temp89, ____temp89Size,__temp88, ____te!
+! mp88Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans34 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(2,[1,3])=[-2,-7]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(-2,-7,__temp90); !
+! !
+! d0d0OpRcd2(1,3,__temp91); !
+! !
+! z2d0d2d2OpIns(b, __bSize,2,__temp91, ____temp91Size,__temp90, __!
+! __temp90Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans35 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b(2,[1,3])=[-4+%i,-5+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp92 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp93 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp92,__temp93,__temp94); !
+! !
+! d0d0OpRcd2(1,3,__temp95); !
+! !
+! z2d0d2z2OpIns(b, __bSize,2,__temp95, ____temp95Size,__temp94, __!
+! __temp94Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans36 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,2],3)=[-9;-1]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpCcd2(-9,-1,__temp96); !
+! !
+! d0d0OpRcd2(1,2,__temp97); !
+! !
+! z2d2d0d2OpIns(b, __bSize,__temp97, ____temp97Size,3,__temp96, __!
+! __temp96Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans37 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,2],3)=[-4+%i;-5+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp98 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp99 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpCcz2(__temp98,__temp99,__temp100); !
+! !
+! d0d0OpRcd2(1,2,__temp101); !
+! !
+! z2d2d0z2OpIns(b, __bSize,__temp101, ____temp101Size,3,__temp100, !
+! ____temp100Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans38 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,2],[2,3])=[-31 -45;-29 -51]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(-31,-45,__temp102); !
+! !
+! d0d0OpRcd2(-29,-51,__temp103); !
+! !
+! d2d2OpCcd2(__temp102, ____temp102Size,__temp103, ____temp103Size,!
+! __temp104); !
+! !
+! d0d0OpRcd2(1,2,__temp105); !
+! !
+! d0d0OpRcd2(2,3,__temp106); !
+! !
+! z2d2d2d2OpIns(b, __bSize,__temp105, ____temp105Size,__temp106, _!
+! ___temp106Size,__temp104, ____temp104Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans39 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp107 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp108 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp107,__temp108,__temp109); !
+! !
+! __temp110 = d0z0OpPlusz0(-4,DoubleComplex(0,1)); !
+! !
+! __temp111 = d0z0OpPlusz0(-5,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp110,__temp111,__temp112); !
+! !
+! z2z2OpCcz2(__temp109, ____temp109Size,__temp112, ____temp112Size,!
+! __temp113); !
+! !
+! d0d0OpRcd2(1,2,__temp114); !
+! !
+! d0d0OpRcd2(2,3,__temp115); !
+! !
+! z2d2d2z2OpIns(b, __bSize,__temp114, ____temp114Size,__temp115, _!
+! ___temp115Size,__temp113, ____temp113Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans40 = z2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpIns.sci.tst b/2.3-1/tests/unit_tests/double/test_OpIns.sci.tst
new file mode 100644
index 00000000..3eaa5aef
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpIns.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpIns.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci b/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci
new file mode 100644
index 00000000..e7648c67
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci
@@ -0,0 +1,29 @@
+function test_OpLogAnd()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0&d0)
+ disp(z0&z0)
+ disp(d2&d0)
+ disp(z2&z0)
+
+ disp(d0&d2)
+ disp(z0&z2)
+
+ disp(d2&d2)
+ disp(z2&z2)
+
+ disp(d2&z0)
+ disp(z2&d0)
+
+ disp(d0&z2)
+ disp(z0&d2)
+
+ disp(d0&z0)
+ disp(z0&d0)
+
+ disp(d2&z2)
+ disp(z2&d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.dia.ref
new file mode 100644
index 00000000..89e29521
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.dia.ref
@@ -0,0 +1,1203 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogAnd.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ T
+
+ T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T
+
+ T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogAnd"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogAnd/test_OpLogAnd_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogAnd/test_OpLogAnd_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0&d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0&z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2&d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2&z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0&d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0&z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2&d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2&z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2&z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2&d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0&z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0&d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0&z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0&d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2&z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2&d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogAnd() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp29; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double __temp30; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0&d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpLogAndd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0&z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0z0OpLogAndd0(z0,z0); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2&d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogAndd2(d2, __d2Size,d0,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2&z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpLogAndd2(z2, __z2Size,z0,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0&d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogAndd2(d0,d2, __d2Size,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0&z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpLogAndd2(z0,z2, __z2Size,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2&d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogAndd2(d2, __d2Size,d2, __d2Size,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2&z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpLogAndd2(z2, __z2Size,z2, __z2Size,__temp24); !
+! !
+! ans8 = d2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2&z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpLogAndd2(d2, __d2Size,z0,__temp25); !
+! !
+! ans9 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2&d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpLogAndd2(z2, __z2Size,d0,__temp26); !
+! !
+! ans10 = d2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0&z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpLogAndd2(d0,z2, __z2Size,__temp27); !
+! !
+! ans11 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0&d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpLogAndd2(z0,d2, __d2Size,__temp28); !
+! !
+! ans12 = d2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0&z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp29 = d0z0OpLogAndd0(d0,z0); !
+! !
+! ans13 = d0dispd0(__temp29); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0&d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp30 = z0d0OpLogAndd0(z0,d0); !
+! !
+! ans14 = d0dispd0(__temp30); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2&z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpLogAndd2(d2, __d2Size,z2, __z2Size,__temp31); !
+! !
+! ans15 = d2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2&d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpLogAndd2(z2, __z2Size,d2, __d2Size,__temp32); !
+! !
+! ans16 = d2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.tst
new file mode 100644
index 00000000..f74e4101
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogAnd.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogAnd.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogEq.sci b/2.3-1/tests/unit_tests/double/test_OpLogEq.sci
new file mode 100644
index 00000000..f42ecbe3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogEq.sci
@@ -0,0 +1,33 @@
+function test_OpLogEq()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+ g0 = 'A'
+ g2 = "foo"
+
+ //disp(g0==g0) // ! Unable to manage this case !
+
+ disp(d0==d0)
+ disp(z0==z0)
+ disp(d2==d0)
+ disp(z2==z0)
+
+ disp(d0==d2)
+ disp(z0==z2)
+
+ disp(d2==d2)
+ disp(z2==z2)
+
+ disp(d2==z0)
+ disp(z2==d0)
+
+ disp(d0==z2)
+ disp(z0==d2)
+
+ disp(d0==z0)
+ disp(z0==d0)
+
+ disp(d2==z2)
+ disp(z2==d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogEq.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogEq.sci.dia.ref
new file mode 100644
index 00000000..6b7b1df6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogEq.sci.dia.ref
@@ -0,0 +1,1303 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogEq.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ T
+
+ T
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F
+
+ F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogEq"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogEq/test_OpLogEq_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogEq/test_OpLogEq_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g0 = 'A'
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g2 = "foo"
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(g0==g0) // ! Unable to manage this case !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0==d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0==z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2==d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2==z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0==d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0==z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2==d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2==z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2==z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2==d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0==z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0==d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0==z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0==d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2==z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2==d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogEq() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! char __temp17[1*2] = {"A"}; !
+! !
+! int ____temp17Size[2] = {1,2}; !
+! !
+! !
+! !
+! char g0[1*2] = {"A"}; !
+! !
+! int __g0Size[2] = {1,2}; !
+! !
+! !
+! !
+! char __temp18[1*4] = {"foo"}; !
+! !
+! int ____temp18Size[2] = {1,4}; !
+! !
+! !
+! !
+! char g2[1*4] = {"foo"}; !
+! !
+! int __g2Size[2] = {1,4}; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp20; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp29[4 * 4]; !
+! !
+! int ____temp29Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp30[4 * 4]; !
+! !
+! int ____temp30Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp31; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double __temp32; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp33[4 * 4]; !
+! !
+! int ____temp33Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double __temp34[4 * 4]; !
+! !
+! int ____temp34Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g0 = 'A' !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp17, ____temp17Size,g0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g2 = "foo" !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp18, ____temp18Size,g2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(g0==g0) // ! Unable to manage this case ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0==d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0d0OpLogEqd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0==z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z0z0OpLogEqd0(z0,z0); !
+! !
+! ans2 = d0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2==d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogEqd2(d2, __d2Size,d0,__temp21); !
+! !
+! ans3 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2==z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpLogEqd2(z2, __z2Size,z0,__temp22); !
+! !
+! ans4 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0==d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogEqd2(d0,d2, __d2Size,__temp23); !
+! !
+! ans5 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0==z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpLogEqd2(z0,z2, __z2Size,__temp24); !
+! !
+! ans6 = d2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2==d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogEqd2(d2, __d2Size,d2, __d2Size,__temp25); !
+! !
+! ans7 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2==z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpLogEqd2(z2, __z2Size,z2, __z2Size,__temp26); !
+! !
+! ans8 = d2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2==z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpLogEqd2(d2, __d2Size,z0,__temp27); !
+! !
+! ans9 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2==d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpLogEqd2(z2, __z2Size,d0,__temp28); !
+! !
+! ans10 = d2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0==z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpLogEqd2(d0,z2, __z2Size,__temp29); !
+! !
+! ans11 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0==d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpLogEqd2(z0,d2, __d2Size,__temp30); !
+! !
+! ans12 = d2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0==z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp31 = d0z0OpLogEqd0(d0,z0); !
+! !
+! ans13 = d0dispd0(__temp31); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0==d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp32 = z0d0OpLogEqd0(z0,d0); !
+! !
+! ans14 = d0dispd0(__temp32); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2==z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpLogEqd2(d2, __d2Size,z2, __z2Size,__temp33); !
+! !
+! ans15 = d2dispd0(__temp33, ____temp33Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2==d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpLogEqd2(z2, __z2Size,d2, __d2Size,__temp34); !
+! !
+! ans16 = d2dispd0(__temp34, ____temp34Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogEq.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogEq.sci.tst
new file mode 100644
index 00000000..ac0081f5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogEq.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogEq.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogGe.sci b/2.3-1/tests/unit_tests/double/test_OpLogGe.sci
new file mode 100644
index 00000000..01c9b781
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogGe.sci
@@ -0,0 +1,29 @@
+function test_OpLogGe()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0>=d0)
+ //disp(z0>=z0)
+ disp(d2>=d0)
+ //disp(z2>=z0)
+
+ disp(d0>=d2)
+ //disp(z0>=z2)
+
+ disp(d2>=d2)
+ //disp(z2>=z2)
+
+ //disp(d2>=z0)
+ //disp(z2>=d0)
+
+ //disp(d0>=z2)
+ //disp(z0>=d2)
+
+ //disp(d0>=z0)
+ //disp(z0>=d0)
+
+ //disp(d2>=z2)
+ //disp(z2>=d2)
+ endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogGe.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogGe.sci.dia.ref
new file mode 100644
index 00000000..edc8bc38
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogGe.sci.dia.ref
@@ -0,0 +1,990 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogGe.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ T
+
+ F F F T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T F
+ F F F F
+ F F F F
+ F F F F
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogGe"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogGe/test_OpLogGe_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogGe/test_OpLogGe_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0>=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2>=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0>=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2>=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2>=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0>=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0>=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2>=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogGe() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0>=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpLogGed0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2>=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogGed2(d2, __d2Size,d0,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0>=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogGed2(d0,d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2>=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogGed2(d2, __d2Size,d2, __d2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2>=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0>=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0>=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2>=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogGe.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogGe.sci.tst
new file mode 100644
index 00000000..42d2cb34
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogGe.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogGe.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogGt.sci b/2.3-1/tests/unit_tests/double/test_OpLogGt.sci
new file mode 100644
index 00000000..168f090b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogGt.sci
@@ -0,0 +1,30 @@
+function test_OpLogGt()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0>d0)
+ //disp(z0>z0)
+ disp(d2>d0)
+ //disp(z2>z0)
+
+ disp(d0>d2)
+ //disp(z0>z2)
+
+ disp(d2>d2)
+ //disp(z2>z2)
+
+ //disp(d2>z0)
+ //disp(z2>d0)
+
+ //disp(d0>z2)
+ //disp(z0>d2)
+
+ //disp(d0>z0)
+ //disp(z0>d0)
+
+ //disp(d2>z2)
+ //disp(z2>d2)
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogGt.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogGt.sci.dia.ref
new file mode 100644
index 00000000..e1564189
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogGt.sci.dia.ref
@@ -0,0 +1,1008 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogGt.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ F
+
+ F F F T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogGt"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogGt/test_OpLogGt_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogGt/test_OpLogGt_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogGt() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpLogGtd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogGtd2(d2, __d2Size,d0,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogGtd2(d0,d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogGtd2(d2, __d2Size,d2, __d2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogGt.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogGt.sci.tst
new file mode 100644
index 00000000..d6a45a6e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogGt.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogGt.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogLe.sci b/2.3-1/tests/unit_tests/double/test_OpLogLe.sci
new file mode 100644
index 00000000..18bd3cfe
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogLe.sci
@@ -0,0 +1,29 @@
+function test_OpLogLe()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0<=d0)
+ //disp(z0<=z0)
+ disp(d2<=d0)
+ //disp(z2<=z0)
+
+ disp(d0<=d2)
+ //disp(z0<=z2)
+
+ disp(d2<=d2)
+ //disp(z2<=z2)
+
+ //disp(d2<=z0)
+ //disp(z2<=d0)
+
+ //disp(d0<=z2)
+ //disp(z0<=d2)
+
+ //disp(d0<=z0)
+ //disp(z0<=d0)
+
+ //disp(d2<=z2)
+ //disp(z2<=d2)
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogLe.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogLe.sci.dia.ref
new file mode 100644
index 00000000..fb151a28
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogLe.sci.dia.ref
@@ -0,0 +1,990 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogLe.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ T
+
+ T T T F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogLe"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogLe/test_OpLogLe_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogLe/test_OpLogLe_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2<=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0<=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0<=z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<=d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2<=z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<=d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogLe() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpLogLed0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogLed2(d2, __d2Size,d0,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogLed2(d0,d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogLed2(d2, __d2Size,d2, __d2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2<=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0<=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0<=z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<=d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2<=z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<=d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogLe.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogLe.sci.tst
new file mode 100644
index 00000000..9c761e9d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogLe.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogLe.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogLt.sci b/2.3-1/tests/unit_tests/double/test_OpLogLt.sci
new file mode 100644
index 00000000..5e1a5e30
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogLt.sci
@@ -0,0 +1,29 @@
+function test_OpLogLt()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0<d0)
+ //disp(z0<z0)
+ disp(d2<d0)
+ //disp(z2<z0)
+
+ disp(d0<d2)
+ //disp(z0<z2)
+
+ disp(d2<d2)
+ //disp(z2<z2)
+
+ //disp(d2<z0)
+ //disp(z2<d0)
+
+ //disp(d0<z2)
+ //disp(z0<d2)
+
+ //disp(d0<z0)
+ //disp(z0<d0)
+
+ //disp(d2<z2)
+ //disp(z2<d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogLt.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogLt.sci.dia.ref
new file mode 100644
index 00000000..fda14673
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogLt.sci.dia.ref
@@ -0,0 +1,990 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogLt.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ F
+
+ T T T F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F T
+ T T T T
+ T T T T
+ T T T T
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogLt"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogLt/test_OpLogLt_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogLt/test_OpLogLt_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2<z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0<z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d0<z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z0<d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(d2<z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(z2<d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogLt() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpLogLtd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogLtd2(d2, __d2Size,d0,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogLtd2(d0,d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogLtd2(d2, __d2Size,d2, __d2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2<z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0<z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d0<z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z0<d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(d2<z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(z2<d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogLt.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogLt.sci.tst
new file mode 100644
index 00000000..89cc9ee6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogLt.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogLt.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogNe.sci b/2.3-1/tests/unit_tests/double/test_OpLogNe.sci
new file mode 100644
index 00000000..393e1ede
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogNe.sci
@@ -0,0 +1,33 @@
+function test_OpLogNe()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+ g0 = 'A'
+ g2 = "foo"
+
+ //disp(g0<>g0)
+
+ disp(d0<>d0)
+ disp(z0<>z0)
+ disp(d2<>d0)
+ disp(z2<>z0)
+
+ disp(d0<>d2)
+ disp(z0<>z2)
+
+ disp(d2<>d2)
+ disp(z2<>z2)
+
+ disp(d2<>z0)
+ disp(z2<>d0)
+
+ disp(d0<>z2)
+ disp(z0<>d2)
+
+ disp(d0<>z0)
+ disp(z0<>d0)
+
+ disp(d2<>z2)
+ disp(z2<>d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogNe.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogNe.sci.dia.ref
new file mode 100644
index 00000000..d0ba8e25
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogNe.sci.dia.ref
@@ -0,0 +1,1303 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogNe.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ F
+
+ F
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T
+
+ T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogNe"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogNe/test_OpLogNe_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogNe/test_OpLogNe_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g0 = 'A'
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g2 = "foo"
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(g0<>g0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0<>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2<>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0<>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2<>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2<>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0<>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0<>z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0<>d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2<>z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2<>d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogNe() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! char __temp17[1*2] = {"A"}; !
+! !
+! int ____temp17Size[2] = {1,2}; !
+! !
+! !
+! !
+! char g0[1*2] = {"A"}; !
+! !
+! int __g0Size[2] = {1,2}; !
+! !
+! !
+! !
+! char __temp18[1*4] = {"foo"}; !
+! !
+! int ____temp18Size[2] = {1,4}; !
+! !
+! !
+! !
+! char g2[1*4] = {"foo"}; !
+! !
+! int __g2Size[2] = {1,4}; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp20; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp29[4 * 4]; !
+! !
+! int ____temp29Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp30[4 * 4]; !
+! !
+! int ____temp30Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp31; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double __temp32; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp33[4 * 4]; !
+! !
+! int ____temp33Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double __temp34[4 * 4]; !
+! !
+! int ____temp34Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g0 = 'A' !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp17, ____temp17Size,g0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g2 = "foo" !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! g2OpEqualg2(__temp18, ____temp18Size,g2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(g0<>g0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0d0OpLogNed0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0<>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z0z0OpLogNed0(z0,z0); !
+! !
+! ans2 = d0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogNed2(d2, __d2Size,d0,__temp21); !
+! !
+! ans3 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2<>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpLogNed2(z2, __z2Size,z0,__temp22); !
+! !
+! ans4 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogNed2(d0,d2, __d2Size,__temp23); !
+! !
+! ans5 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0<>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpLogNed2(z0,z2, __z2Size,__temp24); !
+! !
+! ans6 = d2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogNed2(d2, __d2Size,d2, __d2Size,__temp25); !
+! !
+! ans7 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2<>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpLogNed2(z2, __z2Size,z2, __z2Size,__temp26); !
+! !
+! ans8 = d2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpLogNed2(d2, __d2Size,z0,__temp27); !
+! !
+! ans9 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2<>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpLogNed2(z2, __z2Size,d0,__temp28); !
+! !
+! ans10 = d2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpLogNed2(d0,z2, __z2Size,__temp29); !
+! !
+! ans11 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0<>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpLogNed2(z0,d2, __d2Size,__temp30); !
+! !
+! ans12 = d2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0<>z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp31 = d0z0OpLogNed0(d0,z0); !
+! !
+! ans13 = d0dispd0(__temp31); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0<>d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp32 = z0d0OpLogNed0(z0,d0); !
+! !
+! ans14 = d0dispd0(__temp32); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2<>z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpLogNed2(d2, __d2Size,z2, __z2Size,__temp33); !
+! !
+! ans15 = d2dispd0(__temp33, ____temp33Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2<>d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpLogNed2(z2, __z2Size,d2, __d2Size,__temp34); !
+! !
+! ans16 = d2dispd0(__temp34, ____temp34Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogNe.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogNe.sci.tst
new file mode 100644
index 00000000..05bdfd2a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogNe.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogNe.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogNot.sci b/2.3-1/tests/unit_tests/double/test_OpLogNot.sci
new file mode 100644
index 00000000..70ef4969
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogNot.sci
@@ -0,0 +1,23 @@
+function test_OpLogNot()
+// test OpLogNot
+
+ disp(~(-2))
+ disp(~(0))
+ disp(~(3))
+
+ disp(~(0-2*%i))
+ disp(~(0+0*%i))
+ disp(~(0+3*%i))
+ disp(~(3-5*%i))
+ disp(~(3+0*%i))
+ disp(~(3+6*%i))
+
+ a=[-1 2 3; 0 -1 4; 2 -0 5];
+
+ disp(~(a))
+
+ b=[0+3*%i 2-%i 1 ; 0-2*%i 2+2*%i 1-%i; 0+0*%i 4+0*%i 5-0*%i]
+
+ disp(~(b))
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogNot.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogNot.sci.dia.ref
new file mode 100644
index 00000000..4a8ab13a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogNot.sci.dia.ref
@@ -0,0 +1,1105 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogNot.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ F
+
+ T
+
+ F
+
+ T
+
+ T
+
+ T
+
+ F
+
+ F
+
+ F
+
+ F F F
+ T F F
+ F T F
+
+ T F F
+ T F F
+ T F F
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogNot"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogNot/test_OpLogNot_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogNot/test_OpLogNot_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // test OpLogNot
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(-2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(3))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(0-2*%i))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(0+0*%i))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(0+3*%i))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(3-5*%i))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(3+0*%i))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(3+6*%i))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a=[-1 2 3; 0 -1 4; 2 -0 5];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(a))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b=[0+3*%i 2-%i 1 ; 0-2*%i 2+2*%i 1-%i; 0+0*%i 4+0*%i 5-0
+ *%i]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(~(b))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogNot() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp2; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp3; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp4; !
+! !
+! !
+! !
+! doubleComplex __temp5; !
+! !
+! !
+! !
+! doubleComplex __temp6; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! doubleComplex __temp7; !
+! !
+! !
+! !
+! doubleComplex __temp8; !
+! !
+! !
+! !
+! doubleComplex __temp9; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp10; !
+! !
+! !
+! !
+! doubleComplex __temp11; !
+! !
+! !
+! !
+! doubleComplex __temp12; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex __temp13; !
+! !
+! !
+! !
+! doubleComplex __temp14; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp16; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! doubleComplex __temp21; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp22[1 * 2]; !
+! !
+! int ____temp22Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp23[1 * 3]; !
+! !
+! int ____temp23Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp25[1 * 3]; !
+! !
+! int ____temp25Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp26[2 * 3]; !
+! !
+! int ____temp26Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp27[1 * 2]; !
+! !
+! int ____temp27Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp28[1 * 3]; !
+! !
+! int ____temp28Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[3 * 3]; !
+! !
+! int __aSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp29[3 * 3]; !
+! !
+! int ____temp29Size[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp30; !
+! !
+! !
+! !
+! doubleComplex __temp31; !
+! !
+! !
+! !
+! doubleComplex __temp32; !
+! !
+! !
+! !
+! doubleComplex __temp33[1 * 2]; !
+! !
+! int ____temp33Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp34[1 * 3]; !
+! !
+! int ____temp34Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp35; !
+! !
+! !
+! !
+! doubleComplex __temp36; !
+! !
+! !
+! !
+! doubleComplex __temp37; !
+! !
+! !
+! !
+! doubleComplex __temp38; !
+! !
+! !
+! !
+! doubleComplex __temp39[1 * 2]; !
+! !
+! int ____temp39Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp40; !
+! !
+! !
+! !
+! doubleComplex __temp41[1 * 3]; !
+! !
+! int ____temp41Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp42[2 * 3]; !
+! !
+! int ____temp42Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp43; !
+! !
+! !
+! !
+! doubleComplex __temp44; !
+! !
+! !
+! !
+! doubleComplex __temp45; !
+! !
+! !
+! !
+! doubleComplex __temp46; !
+! !
+! !
+! !
+! doubleComplex __temp47[1 * 2]; !
+! !
+! int ____temp47Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp48; !
+! !
+! !
+! !
+! doubleComplex __temp49; !
+! !
+! !
+! !
+! doubleComplex __temp50[1 * 3]; !
+! !
+! int ____temp50Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex b[3 * 3]; !
+! !
+! int __bSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp51[3 * 3]; !
+! !
+! int ____temp51Size[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // test OpLogNot !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(-2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0OpLogNotd0(-2); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = d0OpLogNotd0(0); !
+! !
+! ans2 = d0dispd0(__temp2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(3)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp3 = d0OpLogNotd0(3); !
+! !
+! ans3 = d0dispd0(__temp3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(0-2*%i)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp4 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! __temp5 = d0z0OpMinusz0(0,__temp4); !
+! !
+! __temp6 = z0OpLogNotz0(__temp5); !
+! !
+! ans4 = z0dispd0(__temp6); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(0+0*%i)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp7 = d0z0OpStarz0(0,DoubleComplex(0,1)); !
+! !
+! __temp8 = d0z0OpPlusz0(0,__temp7); !
+! !
+! __temp9 = z0OpLogNotz0(__temp8); !
+! !
+! ans5 = z0dispd0(__temp9); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(0+3*%i)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp10 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp11 = d0z0OpPlusz0(0,__temp10); !
+! !
+! __temp12 = z0OpLogNotz0(__temp11); !
+! !
+! ans6 = z0dispd0(__temp12); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(3-5*%i)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp13 = d0z0OpStarz0(5,DoubleComplex(0,1)); !
+! !
+! __temp14 = d0z0OpMinusz0(3,__temp13); !
+! !
+! __temp15 = z0OpLogNotz0(__temp14); !
+! !
+! ans7 = z0dispd0(__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(3+0*%i)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp16 = d0z0OpStarz0(0,DoubleComplex(0,1)); !
+! !
+! __temp17 = d0z0OpPlusz0(3,__temp16); !
+! !
+! __temp18 = z0OpLogNotz0(__temp17); !
+! !
+! ans8 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(3+6*%i)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0z0OpStarz0(6,DoubleComplex(0,1)); !
+! !
+! __temp20 = d0z0OpPlusz0(3,__temp19); !
+! !
+! __temp21 = z0OpLogNotz0(__temp20); !
+! !
+! ans9 = z0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a=[-1 2 3; 0 -1 4; 2 -0 5]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(-1,2,__temp22); !
+! !
+! d2d0OpRcd2(__temp22, ____temp22Size,3,__temp23); !
+! !
+! d0d0OpRcd2(0,-1,__temp24); !
+! !
+! d2d0OpRcd2(__temp24, ____temp24Size,4,__temp25); !
+! !
+! d2d2OpCcd2(__temp23, ____temp23Size,__temp25, ____temp25Size,__te!
+! mp26); !
+! !
+! d0d0OpRcd2(2,-0,__temp27); !
+! !
+! d2d0OpRcd2(__temp27, ____temp27Size,5,__temp28); !
+! !
+! d2d2OpCcd2(__temp26, ____temp26Size,__temp28, ____temp28Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(a)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2OpLogNotd2(a, __aSize,__temp29); !
+! !
+! ans10 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b=[0+3*%i 2-%i 1 ; 0-2*%i 2+2*%i 1-%i; 0+0*%i 4+0*%i 5-0!
+! *%i] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp30 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp31 = d0z0OpPlusz0(0,__temp30); !
+! !
+! __temp32 = d0z0OpMinusz0(2,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp31,__temp32,__temp33); !
+! !
+! z2d0OpRcz2(__temp33, ____temp33Size,1,__temp34); !
+! !
+! __temp35 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! __temp36 = d0z0OpMinusz0(0,__temp35); !
+! !
+! __temp37 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! __temp38 = d0z0OpPlusz0(2,__temp37); !
+! !
+! z0z0OpRcz2(__temp36,__temp38,__temp39); !
+! !
+! __temp40 = d0z0OpMinusz0(1,DoubleComplex(0,1)); !
+! !
+! z2z0OpRcz2(__temp39, ____temp39Size,__temp40,__temp41); !
+! !
+! z2z2OpCcz2(__temp34, ____temp34Size,__temp41, ____temp41Size,__te!
+! mp42); !
+! !
+! __temp43 = d0z0OpStarz0(0,DoubleComplex(0,1)); !
+! !
+! __temp44 = d0z0OpPlusz0(0,__temp43); !
+! !
+! __temp45 = d0z0OpStarz0(0,DoubleComplex(0,1)); !
+! !
+! __temp46 = d0z0OpPlusz0(4,__temp45); !
+! !
+! z0z0OpRcz2(__temp44,__temp46,__temp47); !
+! !
+! __temp48 = d0z0OpStarz0(0,DoubleComplex(0,1)); !
+! !
+! __temp49 = d0z0OpMinusz0(5,__temp48); !
+! !
+! z2z0OpRcz2(__temp47, ____temp47Size,__temp49,__temp50); !
+! !
+! z2z2OpCcz2(__temp42, ____temp42Size,__temp50, ____temp50Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(~(b)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2OpLogNotz2(b, __bSize,__temp51); !
+! !
+! ans11 = z2dispd0(__temp51, ____temp51Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogNot.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogNot.sci.tst
new file mode 100644
index 00000000..55a2ec2a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogNot.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogNot.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogOr.sci b/2.3-1/tests/unit_tests/double/test_OpLogOr.sci
new file mode 100644
index 00000000..18416b75
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogOr.sci
@@ -0,0 +1,29 @@
+function test_OpLogOr()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0|d0)
+ disp(z0|z0)
+ disp(d2|d0)
+ disp(z2|z0)
+
+ disp(d0|d2)
+ disp(z0|z2)
+
+ disp(d2|d2)
+ disp(z2|z2)
+
+ disp(d2|z0)
+ disp(z2|d0)
+
+ disp(d0|z2)
+ disp(z0|d2)
+
+ disp(d0|z0)
+ disp(z0|d0)
+
+ disp(d2|z2)
+ disp(z2|d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogOr.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpLogOr.sci.dia.ref
new file mode 100644
index 00000000..4e9dfc57
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogOr.sci.dia.ref
@@ -0,0 +1,1203 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogOr.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ T
+
+ T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T
+
+ T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ T T T T
+ T T T T
+ T T T T
+ T T T T
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpLogOr"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogOr/test_OpLogOr_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpLogOr/test_OpLogOr_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0|d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0|z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2|d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2|z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0|d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0|z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2|d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2|z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2|z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2|d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0|z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0|d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0|z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0|d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2|z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2|d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpLogOr() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp29; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double __temp30; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0|d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpLogOrd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0|z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0z0OpLogOrd0(z0,z0); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2|d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpLogOrd2(d2, __d2Size,d0,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2|z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpLogOrd2(z2, __z2Size,z0,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0|d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpLogOrd2(d0,d2, __d2Size,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0|z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpLogOrd2(z0,z2, __z2Size,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2|d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpLogOrd2(d2, __d2Size,d2, __d2Size,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2|z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpLogOrd2(z2, __z2Size,z2, __z2Size,__temp24); !
+! !
+! ans8 = d2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2|z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpLogOrd2(d2, __d2Size,z0,__temp25); !
+! !
+! ans9 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2|d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpLogOrd2(z2, __z2Size,d0,__temp26); !
+! !
+! ans10 = d2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0|z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpLogOrd2(d0,z2, __z2Size,__temp27); !
+! !
+! ans11 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0|d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpLogOrd2(z0,d2, __d2Size,__temp28); !
+! !
+! ans12 = d2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0|z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp29 = d0z0OpLogOrd0(d0,z0); !
+! !
+! ans13 = d0dispd0(__temp29); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0|d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp30 = z0d0OpLogOrd0(z0,d0); !
+! !
+! ans14 = d0dispd0(__temp30); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2|z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpLogOrd2(d2, __d2Size,z2, __z2Size,__temp31); !
+! !
+! ans15 = d2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2|d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpLogOrd2(z2, __z2Size,d2, __d2Size,__temp32); !
+! !
+! ans16 = d2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpLogOr.sci.tst b/2.3-1/tests/unit_tests/double/test_OpLogOr.sci.tst
new file mode 100644
index 00000000..ce483b07
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpLogOr.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpLogOr.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpMinus.sci b/2.3-1/tests/unit_tests/double/test_OpMinus.sci
new file mode 100644
index 00000000..f196980d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpMinus.sci
@@ -0,0 +1,45 @@
+function test_OpMinus()
+ a = 1;
+ b = 2;
+ c = a - b; // d0d0OpMinusd0
+ disp(c);
+
+ d = 1 - %i; // d0z0OpMinusz0
+ e = %i - 3; // z0d0OpMinusz0
+ f = d - e; // z0z0OpMinusz0
+
+ disp(f);
+
+ g = [1 2 3; 4 5 6];
+ h = 10;
+ w = g - h; // d2d0OpMinusd2
+ j = h - g; // d0d2OpMinusd2
+
+ disp(j);
+
+ k = [9 8 7; 6 5 4; 3 2 1]
+ l = [1 2 3; 4 5 6; 7 8 9]
+ m = k - l // d2d2OpMinusd2
+
+ disp(m);
+ n = k - 2 * %i; //d2z0OpMinusz2
+ o = 3 * %i - l; //z0d2OpMinusz2
+ p = n - o; // z2z2OpMinusz2
+
+ disp(p);
+ q = [1 2 3 ; 4 5 6 ; 7 8 9]
+ r = %pi * %i;
+ s = q - r; // d2z0OpMinusz2
+ t = r - q; // z0d2OpMinusz2
+
+ disp(s);
+ disp(t);
+ u = [1 2 3] - %i * [4 5 6]
+ v = [7 8 9]
+ x = u - v; // z2d2OpMinusz2
+ y = v - u; // d2z2OpMinusz2
+
+ disp(x);
+
+ disp(y);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpMinus.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpMinus.sci.dia.ref
new file mode 100644
index 00000000..16d50380
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpMinus.sci.dia.ref
@@ -0,0 +1,1573 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpMinus.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ - 1.
+
+ 4. - 2.i
+
+ 9. 8. 7.
+ 6. 5. 4.
+
+ 8. 6. 4.
+ 2. 0. - 2.
+ - 4. - 6. - 8.
+
+ 10. - 5.i 10. - 5.i 10. - 5.i
+ 10. - 5.i 10. - 5.i 10. - 5.i
+ 10. - 5.i 10. - 5.i 10. - 5.i
+
+ 1. - 3.1415927i 2. - 3.1415927i 3. - 3.1415927i
+ 4. - 3.1415927i 5. - 3.1415927i 6. - 3.1415927i
+ 7. - 3.1415927i 8. - 3.1415927i 9. - 3.1415927i
+
+ - 1. + 3.1415927i - 2. + 3.1415927i - 3. + 3.1415927i
+ - 4. + 3.1415927i - 5. + 3.1415927i - 6. + 3.1415927i
+ - 7. + 3.1415927i - 8. + 3.1415927i - 9. + 3.1415927i
+
+ - 6. - 4.i - 6. - 5.i - 6. - 6.i
+
+ 6. + 4.i 6. + 5.i 6. + 6.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpMinus"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpMinus/test_OpMinus_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpMinus/test_OpMinus_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = 1;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = 2;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = a - b; // d0d0OpMinusd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(c);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = 1 - %i; // d0z0OpMinusz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = %i - 3; // z0d0OpMinusz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = d - e; // z0z0OpMinusz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(f);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = [1 2 3; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = 10;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: w = g - h; // d2d0OpMinusd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: j = h - g; // d0d2OpMinusd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(j);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: k = [9 8 7; 6 5 4; 3 2 1]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: l = [1 2 3; 4 5 6; 7 8 9]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: m = k - l // d2d2OpMinusd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(m);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: n = k - 2 * %i; //d2z0OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: o = 3 * %i - l; //z0d2OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: p = n - o; // z2z2OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(p);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: q = [1 2 3 ; 4 5 6 ; 7 8 9]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: r = %pi * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: s = q - r; // d2z0OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: t = r - q; // z0d2OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(s);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(t);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: u = [1 2 3] - %i * [4 5 6]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: v = [7 8 9]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: x = u - v; // z2d2OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: y = v - u; // d2z2OpMinusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(x);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(y);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpMinus() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double a = 1; !
+! !
+! !
+! !
+! double b = 2; !
+! !
+! !
+! !
+! double c; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex d; !
+! !
+! !
+! !
+! doubleComplex e; !
+! !
+! !
+! !
+! doubleComplex f; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double g[2 * 3]; !
+! !
+! int __gSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double h = 10; !
+! !
+! !
+! !
+! double w[2 * 3]; !
+! !
+! int __wSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double j[2 * 3]; !
+! !
+! int __jSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[2 * 3]; !
+! !
+! int ____temp9Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 2]; !
+! !
+! int ____temp10Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp11[1 * 3]; !
+! !
+! int ____temp11Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double k[3 * 3]; !
+! !
+! int __kSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp16[2 * 3]; !
+! !
+! int ____temp16Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp17[1 * 2]; !
+! !
+! int ____temp17Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp18[1 * 3]; !
+! !
+! int ____temp18Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double l[3 * 3]; !
+! !
+! int __lSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double m[3 * 3]; !
+! !
+! int __mSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! doubleComplex n[3 * 3]; !
+! !
+! int __nSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! doubleComplex o[3 * 3]; !
+! !
+! int __oSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex p[3 * 3]; !
+! !
+! int __pSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp21[1 * 2]; !
+! !
+! int ____temp21Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp22[1 * 3]; !
+! !
+! int ____temp22Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp23[1 * 2]; !
+! !
+! int ____temp23Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp24[1 * 3]; !
+! !
+! int ____temp24Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp25[2 * 3]; !
+! !
+! int ____temp25Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp27[1 * 3]; !
+! !
+! int ____temp27Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double q[3 * 3]; !
+! !
+! int __qSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex r; !
+! !
+! !
+! !
+! doubleComplex s[3 * 3]; !
+! !
+! int __sSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex t[3 * 3]; !
+! !
+! int __tSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp28[1 * 2]; !
+! !
+! int ____temp28Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp29[1 * 3]; !
+! !
+! int ____temp29Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp30[1 * 2]; !
+! !
+! int ____temp30Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp31[1 * 3]; !
+! !
+! int ____temp31Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp32[1 * 3]; !
+! !
+! int ____temp32Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex u[1 * 3]; !
+! !
+! int __uSize[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp33[1 * 2]; !
+! !
+! int ____temp33Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double v[1 * 3]; !
+! !
+! int __vSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex x[1 * 3]; !
+! !
+! int __xSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex y[1 * 3]; !
+! !
+! int __ySize[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = 1; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! a = d0OpEquald0(1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = 2; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! b = d0OpEquald0(2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = a - b; // d0d0OpMinusd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! c = d0d0OpMinusd0(a,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(c); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0dispd0(c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = 1 - %i; // d0z0OpMinusz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d = d0z0OpMinusz0(1,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = %i - 3; // z0d0OpMinusz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! e = z0d0OpMinusz0(DoubleComplex(0,1),3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = d - e; // z0z0OpMinusz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! f = z0z0OpMinusz0(d,e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(f); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = z0dispd0(f); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = [1 2 3; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d0d0OpRcd2(4,5,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,6,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = 10; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! h = d0OpEquald0(10); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: w = g - h; // d2d0OpMinusd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpMinusd2(g, __gSize,h,w); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: j = h - g; // d0d2OpMinusd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpMinusd2(h,g, __gSize,j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(j); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = d2dispd0(j, __jSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: k = [9 8 7; 6 5 4; 3 2 1] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(9,8,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,7,__temp6); !
+! !
+! d0d0OpRcd2(6,5,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,4,__temp8); !
+! !
+! d2d2OpCcd2(__temp6, ____temp6Size,__temp8, ____temp8Size,__temp9)!
+! ; !
+! !
+! d0d0OpRcd2(3,2,__temp10); !
+! !
+! d2d0OpRcd2(__temp10, ____temp10Size,1,__temp11); !
+! !
+! d2d2OpCcd2(__temp9, ____temp9Size,__temp11, ____temp11Size,k); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: l = [1 2 3; 4 5 6; 7 8 9] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,3,__temp13); !
+! !
+! d0d0OpRcd2(4,5,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,6,__temp15); !
+! !
+! d2d2OpCcd2(__temp13, ____temp13Size,__temp15, ____temp15Size,__te!
+! mp16); !
+! !
+! d0d0OpRcd2(7,8,__temp17); !
+! !
+! d2d0OpRcd2(__temp17, ____temp17Size,9,__temp18); !
+! !
+! d2d2OpCcd2(__temp16, ____temp16Size,__temp18, ____temp18Size,l); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: m = k - l // d2d2OpMinusd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpMinusd2(k, __kSize,l, __lSize,m); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(m); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = d2dispd0(m, __mSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: n = k - 2 * %i; //d2z0OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! d2z0OpMinusz2(k, __kSize,__temp19,n); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: o = 3 * %i - l; //z0d2OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! z0d2OpMinusz2(__temp20,l, __lSize,o); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: p = n - o; // z2z2OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpMinusz2(n, __nSize,o, __oSize,p); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(p); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = z2dispd0(p, __pSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: q = [1 2 3 ; 4 5 6 ; 7 8 9] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,3,__temp22); !
+! !
+! d0d0OpRcd2(4,5,__temp23); !
+! !
+! d2d0OpRcd2(__temp23, ____temp23Size,6,__temp24); !
+! !
+! d2d2OpCcd2(__temp22, ____temp22Size,__temp24, ____temp24Size,__te!
+! mp25); !
+! !
+! d0d0OpRcd2(7,8,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,9,__temp27); !
+! !
+! d2d2OpCcd2(__temp25, ____temp25Size,__temp27, ____temp27Size,q); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: r = %pi * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! r = d0z0OpStarz0(SCI2C_PI,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: s = q - r; // d2z0OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpMinusz2(q, __qSize,r,s); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: t = r - q; // z0d2OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpMinusz2(r,q, __qSize,t); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(s); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = z2dispd0(s, __sSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(t); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans7 = z2dispd0(t, __tSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: u = [1 2 3] - %i * [4 5 6] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp28); !
+! !
+! d2d0OpRcd2(__temp28, ____temp28Size,3,__temp29); !
+! !
+! d0d0OpRcd2(4,5,__temp30); !
+! !
+! d2d0OpRcd2(__temp30, ____temp30Size,6,__temp31); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp31, ____temp31Size,__temp32)!
+! ; !
+! !
+! d2z2OpMinusz2(__temp29, ____temp29Size,__temp32, ____temp32Size,u!
+! ); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: v = [7 8 9] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(7,8,__temp33); !
+! !
+! d2d0OpRcd2(__temp33, ____temp33Size,9,v); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: x = u - v; // z2d2OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpMinusz2(u, __uSize,v, __vSize,x); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: y = v - u; // d2z2OpMinusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpMinusz2(v, __vSize,u, __uSize,y); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(x); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = z2dispd0(x, __xSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(y); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = z2dispd0(y, __ySize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpMinus.sci.tst b/2.3-1/tests/unit_tests/double/test_OpMinus.sci.tst
new file mode 100644
index 00000000..324992e3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpMinus.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpMinus.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpPlus.sci b/2.3-1/tests/unit_tests/double/test_OpPlus.sci
new file mode 100644
index 00000000..ccdba91f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpPlus.sci
@@ -0,0 +1,32 @@
+function test_OpPlus()
+ a = 1;
+ b = 2;
+ c = a + b; // d0d0OpPlusd0
+
+ d = 1 + %i; // d0z0OpPlusz0
+ e = %i + 3; // z0d0OpPlusz0
+ f = d + e; // z0z0OpPlusz0
+
+ g = [1 2 3; 4 5 6];
+ h = 10;
+ w = g + h; // d2d0OpPlusd2
+ j = h + g; // d0d2OpPlusd2
+
+ k = [9 8 7; 6 5 4; 3 2 1]
+ l = [1 2 3; 4 5 6; 7 8 9]
+ m = k + l // d2d2OpPlusd2
+
+ n = k + 2 * %i; //d2z0OpPlusz2
+ o = 3 * %i + l; //z0d2OpPlusz2
+ p = n + o; // z2z2OpPlusz2
+
+ q = [1 2 3 ; 4 5 6 ; 7 8 9]
+ r = 3 * %i;
+ s = q + r; // d2z0OpPlusz2
+ t = r + q; // z0d2OpPlusz2
+
+ u = [1 2 3] + %i * [4 5 6]
+ v = [7 8 9]
+ x = u + v; // z2d2OpPlusz2
+ y = v + u; // d2z2OpPlusz2
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpPlus.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpPlus.sci.dia.ref
new file mode 100644
index 00000000..f7447b83
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpPlus.sci.dia.ref
@@ -0,0 +1,1258 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpPlus.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpPlus"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpPlus/test_OpPlus_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpPlus/test_OpPlus_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = 1;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = 2;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = a + b; // d0d0OpPlusd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = 1 + %i; // d0z0OpPlusz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = %i + 3; // z0d0OpPlusz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = d + e; // z0z0OpPlusz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = [1 2 3; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = 10;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: w = g + h; // d2d0OpPlusd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: j = h + g; // d0d2OpPlusd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: k = [9 8 7; 6 5 4; 3 2 1]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: l = [1 2 3; 4 5 6; 7 8 9]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: m = k + l // d2d2OpPlusd2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: n = k + 2 * %i; //d2z0OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: o = 3 * %i + l; //z0d2OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: p = n + o; // z2z2OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: q = [1 2 3 ; 4 5 6 ; 7 8 9]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: r = 3 * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: s = q + r; // d2z0OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: t = r + q; // z0d2OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: u = [1 2 3] + %i * [4 5 6]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: v = [7 8 9]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: x = u + v; // z2d2OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: y = v + u; // d2z2OpPlusz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpPlus() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double a = 1; !
+! !
+! !
+! !
+! double b = 2; !
+! !
+! !
+! !
+! double c; !
+! !
+! !
+! !
+! doubleComplex d; !
+! !
+! !
+! !
+! doubleComplex e; !
+! !
+! !
+! !
+! doubleComplex f; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double g[2 * 3]; !
+! !
+! int __gSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double h = 10; !
+! !
+! !
+! !
+! double w[2 * 3]; !
+! !
+! int __wSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double j[2 * 3]; !
+! !
+! int __jSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[2 * 3]; !
+! !
+! int ____temp9Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 2]; !
+! !
+! int ____temp10Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp11[1 * 3]; !
+! !
+! int ____temp11Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double k[3 * 3]; !
+! !
+! int __kSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp16[2 * 3]; !
+! !
+! int ____temp16Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp17[1 * 2]; !
+! !
+! int ____temp17Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp18[1 * 3]; !
+! !
+! int ____temp18Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double l[3 * 3]; !
+! !
+! int __lSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double m[3 * 3]; !
+! !
+! int __mSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! doubleComplex n[3 * 3]; !
+! !
+! int __nSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! doubleComplex o[3 * 3]; !
+! !
+! int __oSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex p[3 * 3]; !
+! !
+! int __pSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp21[1 * 2]; !
+! !
+! int ____temp21Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp22[1 * 3]; !
+! !
+! int ____temp22Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp23[1 * 2]; !
+! !
+! int ____temp23Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp24[1 * 3]; !
+! !
+! int ____temp24Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp25[2 * 3]; !
+! !
+! int ____temp25Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp27[1 * 3]; !
+! !
+! int ____temp27Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double q[3 * 3]; !
+! !
+! int __qSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex r; !
+! !
+! !
+! !
+! doubleComplex s[3 * 3]; !
+! !
+! int __sSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex t[3 * 3]; !
+! !
+! int __tSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp28[1 * 2]; !
+! !
+! int ____temp28Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp29[1 * 3]; !
+! !
+! int ____temp29Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp30[1 * 2]; !
+! !
+! int ____temp30Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp31[1 * 3]; !
+! !
+! int ____temp31Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp32[1 * 3]; !
+! !
+! int ____temp32Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex u[1 * 3]; !
+! !
+! int __uSize[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp33[1 * 2]; !
+! !
+! int ____temp33Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double v[1 * 3]; !
+! !
+! int __vSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex x[1 * 3]; !
+! !
+! int __xSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex y[1 * 3]; !
+! !
+! int __ySize[2] = {1, 3};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = 1; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! a = d0OpEquald0(1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = 2; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! b = d0OpEquald0(2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = a + b; // d0d0OpPlusd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! c = d0d0OpPlusd0(a,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = 1 + %i; // d0z0OpPlusz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d = d0z0OpPlusz0(1,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = %i + 3; // z0d0OpPlusz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! e = z0d0OpPlusz0(DoubleComplex(0,1),3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = d + e; // z0z0OpPlusz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! f = z0z0OpPlusz0(d,e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = [1 2 3; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d0d0OpRcd2(4,5,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,6,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = 10; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! h = d0OpEquald0(10); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: w = g + h; // d2d0OpPlusd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpPlusd2(g, __gSize,h,w); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: j = h + g; // d0d2OpPlusd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpPlusd2(h,g, __gSize,j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: k = [9 8 7; 6 5 4; 3 2 1] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(9,8,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,7,__temp6); !
+! !
+! d0d0OpRcd2(6,5,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,4,__temp8); !
+! !
+! d2d2OpCcd2(__temp6, ____temp6Size,__temp8, ____temp8Size,__temp9)!
+! ; !
+! !
+! d0d0OpRcd2(3,2,__temp10); !
+! !
+! d2d0OpRcd2(__temp10, ____temp10Size,1,__temp11); !
+! !
+! d2d2OpCcd2(__temp9, ____temp9Size,__temp11, ____temp11Size,k); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: l = [1 2 3; 4 5 6; 7 8 9] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,3,__temp13); !
+! !
+! d0d0OpRcd2(4,5,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,6,__temp15); !
+! !
+! d2d2OpCcd2(__temp13, ____temp13Size,__temp15, ____temp15Size,__te!
+! mp16); !
+! !
+! d0d0OpRcd2(7,8,__temp17); !
+! !
+! d2d0OpRcd2(__temp17, ____temp17Size,9,__temp18); !
+! !
+! d2d2OpCcd2(__temp16, ____temp16Size,__temp18, ____temp18Size,l); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: m = k + l // d2d2OpPlusd2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpPlusd2(k, __kSize,l, __lSize,m); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: n = k + 2 * %i; //d2z0OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! d2z0OpPlusz2(k, __kSize,__temp19,n); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: o = 3 * %i + l; //z0d2OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! z0d2OpPlusz2(__temp20,l, __lSize,o); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: p = n + o; // z2z2OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpPlusz2(n, __nSize,o, __oSize,p); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: q = [1 2 3 ; 4 5 6 ; 7 8 9] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,3,__temp22); !
+! !
+! d0d0OpRcd2(4,5,__temp23); !
+! !
+! d2d0OpRcd2(__temp23, ____temp23Size,6,__temp24); !
+! !
+! d2d2OpCcd2(__temp22, ____temp22Size,__temp24, ____temp24Size,__te!
+! mp25); !
+! !
+! d0d0OpRcd2(7,8,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,9,__temp27); !
+! !
+! d2d2OpCcd2(__temp25, ____temp25Size,__temp27, ____temp27Size,q); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: r = 3 * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! r = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: s = q + r; // d2z0OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpPlusz2(q, __qSize,r,s); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: t = r + q; // z0d2OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpPlusz2(r,q, __qSize,t); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: u = [1 2 3] + %i * [4 5 6] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp28); !
+! !
+! d2d0OpRcd2(__temp28, ____temp28Size,3,__temp29); !
+! !
+! d0d0OpRcd2(4,5,__temp30); !
+! !
+! d2d0OpRcd2(__temp30, ____temp30Size,6,__temp31); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp31, ____temp31Size,__temp32)!
+! ; !
+! !
+! d2z2OpPlusz2(__temp29, ____temp29Size,__temp32, ____temp32Size,u)!
+! ; !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: v = [7 8 9] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(7,8,__temp33); !
+! !
+! d2d0OpRcd2(__temp33, ____temp33Size,9,v); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: x = u + v; // z2d2OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpPlusz2(u, __uSize,v, __vSize,x); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: y = v + u; // d2z2OpPlusz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpPlusz2(v, __vSize,u, __uSize,y); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpPlus.sci.tst b/2.3-1/tests/unit_tests/double/test_OpPlus.sci.tst
new file mode 100644
index 00000000..cf0ddf3e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpPlus.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpPlus.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpRc.sci b/2.3-1/tests/unit_tests/double/test_OpRc.sci
new file mode 100644
index 00000000..5d264b77
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpRc.sci
@@ -0,0 +1,45 @@
+
+function test_OpRc()
+
+ a = [1 , 2 , 3 , 4]; // d0d0OpRcs2
+ b = [7 , a];// d0d2OpRcs2
+ c = [a , 7];// d2d0OpRcs2
+ d = [a , b];// d2d2OpRcs2
+ disp(a);
+ disp(b);
+ disp(c);
+ disp(d);
+
+ e = [1*%i , 2*%i , 3*%i , 4*%i ];// z0z0OpRcz2
+ f = [7 , e];// z0z2OpRcz2
+ g = [e , 7];// z2z0OpRcz2
+ h = [e , f];// z2z2OpRcz2
+
+ disp(e);
+ disp(f);
+ disp(g);
+ disp(h);
+
+
+ i = [%i , 4.5]; // z0d0OpRcz2
+ j = [4.5 , %i ]; // d0z0OpRcz2
+ k = [4.5 , i ]; // d0z2OpRcz2
+ l = [i , 4.5]; // z2d0OpRcz2
+
+ disp(i);
+ disp(j);
+ disp(k);
+ disp(l);
+
+ m = [1 , 4.5];
+ n = [%i , m ]; // z0d2OpRcz2
+ o = [m , %i ]; // d0z2OpRcz2
+ p = [m , n ]; // d2z2OpRcz2
+ q = [n , m ]; // z2d2OpRcz2
+
+ disp(n);
+ disp(o);
+ disp(p);
+ disp(q);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpRc.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpRc.sci.dia.ref
new file mode 100644
index 00000000..5aa38fcd
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpRc.sci.dia.ref
@@ -0,0 +1,1355 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpRc.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1. 2. 3. 4.
+
+ 7. 1. 2. 3. 4.
+
+ 1. 2. 3. 4. 7.
+
+ 1. 2. 3. 4. 7. 1. 2. 3. 4.
+
+ i 2.i 3.i 4.i
+
+ 7. i 2.i 3.i 4.i
+
+ i 2.i 3.i 4.i 7.
+
+ i 2.i 3.i 4.i 7. i 2.i 3.i 4.i
+
+ i 4.5
+
+ 4.5 i
+
+ 4.5 i 4.5
+
+ i 4.5 4.5
+
+ i 1. 4.5
+
+ 1. 4.5 i
+
+ 1. 4.5 i 1. 4.5
+
+ i 1. 4.5 1. 4.5
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpRc"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpRc/test_OpRc_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpRc/test_OpRc_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 , 2 , 3 , 4]; // d0d0OpRcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [7 , a];// d0d2OpRcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: c = [a , 7];// d2d0OpRcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d = [a , b];// d2d2OpRcs2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(c);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = [1*%i , 2*%i , 3*%i , 4*%i ];// z0z0OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = [7 , e];// z0z2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: g = [e , 7];// z2z0OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: h = [e , f];// z2z2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(e);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(f);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(g);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(h);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: i = [%i , 4.5]; // z0d0OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: j = [4.5 , %i ]; // d0z0OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: k = [4.5 , i ]; // d0z2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: l = [i , 4.5]; // z2d0OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(i);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(j);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(k);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(l);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: m = [1 , 4.5];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: n = [%i , m ]; // z0d2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: o = [m , %i ]; // d0z2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: p = [m , n ]; // d2z2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: q = [n , m ]; // z2d2OpRcz2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(n);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(o);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(p);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(q);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: !
+! !
+! SCI2C: function test_OpRc() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[1 * 4]; !
+! !
+! int __aSize[2] = {1, 4};; !
+! !
+! !
+! !
+! double b[1 * 5]; !
+! !
+! int __bSize[2] = {1, 5};; !
+! !
+! !
+! !
+! double c[1 * 5]; !
+! !
+! int __cSize[2] = {1, 5};; !
+! !
+! !
+! !
+! double d[1 * 9]; !
+! !
+! int __dSize[2] = {1, 9};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! doubleComplex __temp3; !
+! !
+! !
+! !
+! doubleComplex __temp4; !
+! !
+! !
+! !
+! doubleComplex __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp6; !
+! !
+! !
+! !
+! doubleComplex __temp7[1 * 3]; !
+! !
+! int ____temp7Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp8; !
+! !
+! !
+! !
+! doubleComplex e[1 * 4]; !
+! !
+! int __eSize[2] = {1, 4};; !
+! !
+! !
+! !
+! doubleComplex f[1 * 5]; !
+! !
+! int __fSize[2] = {1, 5};; !
+! !
+! !
+! !
+! doubleComplex g[1 * 5]; !
+! !
+! int __gSize[2] = {1, 5};; !
+! !
+! !
+! !
+! doubleComplex h[1 * 9]; !
+! !
+! int __hSize[2] = {1, 9};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! doubleComplex i[1 * 2]; !
+! !
+! int __iSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex j[1 * 2]; !
+! !
+! int __jSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex k[1 * 3]; !
+! !
+! int __kSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex l[1 * 3]; !
+! !
+! int __lSize[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double m[1 * 2]; !
+! !
+! int __mSize[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex n[1 * 3]; !
+! !
+! int __nSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex o[1 * 3]; !
+! !
+! int __oSize[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex p[1 * 5]; !
+! !
+! int __pSize[2] = {1, 5};; !
+! !
+! !
+! !
+! doubleComplex q[1 * 5]; !
+! !
+! int __qSize[2] = {1, 5};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 , 2 , 3 , 4]; // d0d0OpRcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [7 , a];// d0d2OpRcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpRcd2(7,a, __aSize,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: c = [a , 7];// d2d0OpRcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpRcd2(a, __aSize,7,c); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d = [a , b];// d2d2OpRcs2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpRcd2(a, __aSize,b, __bSize,d); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d2dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = d2dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(c); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = d2dispd0(c, __cSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = d2dispd0(d, __dSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = [1*%i , 2*%i , 3*%i , 4*%i ];// z0z0OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp3 = d0z0OpStarz0(1,DoubleComplex(0,1)); !
+! !
+! __temp4 = d0z0OpStarz0(2,DoubleComplex(0,1)); !
+! !
+! z0z0OpRcz2(__temp3,__temp4,__temp5); !
+! !
+! __temp6 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! z2z0OpRcz2(__temp5, ____temp5Size,__temp6,__temp7); !
+! !
+! __temp8 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! z2z0OpRcz2(__temp7, ____temp7Size,__temp8,e); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = [7 , e];// z0z2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpRcz2(7,e, __eSize,f); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: g = [e , 7];// z2z0OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpRcz2(e, __eSize,7,g); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: h = [e , f];// z2z2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpRcz2(e, __eSize,f, __fSize,h); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(e); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans5 = z2dispd0(e, __eSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(f); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = z2dispd0(f, __fSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(g); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans7 = z2dispd0(g, __gSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(h); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = z2dispd0(h, __hSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: i = [%i , 4.5]; // z0d0OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d0OpRcz2(DoubleComplex(0,1),4.5,i); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: j = [4.5 , %i ]; // d0z0OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z0OpRcz2(4.5,DoubleComplex(0,1),j); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: k = [4.5 , i ]; // d0z2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpRcz2(4.5,i, __iSize,k); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: l = [i , 4.5]; // z2d0OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpRcz2(i, __iSize,4.5,l); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(i); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans9 = z2dispd0(i, __iSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(j); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = z2dispd0(j, __jSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(k); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans11 = z2dispd0(k, __kSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(l); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = z2dispd0(l, __lSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: m = [1 , 4.5]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,4.5,m); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: n = [%i , m ]; // z0d2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpRcz2(DoubleComplex(0,1),m, __mSize,n); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: o = [m , %i ]; // d0z2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpRcz2(m, __mSize,DoubleComplex(0,1),o); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: p = [m , n ]; // d2z2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpRcz2(m, __mSize,n, __nSize,p); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: q = [n , m ]; // z2d2OpRcz2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpRcz2(n, __nSize,m, __mSize,q); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(n); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans13 = z2dispd0(n, __nSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(o); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans14 = z2dispd0(o, __oSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(p); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans15 = z2dispd0(p, __pSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(q); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans16 = z2dispd0(q, __qSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpRc.sci.tst b/2.3-1/tests/unit_tests/double/test_OpRc.sci.tst
new file mode 100644
index 00000000..b18f395a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpRc.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpRc.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpSlash.sci b/2.3-1/tests/unit_tests/double/test_OpSlash.sci
new file mode 100644
index 00000000..bd853871
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpSlash.sci
@@ -0,0 +1,32 @@
+function test_OpSlash()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0/d0)
+ disp(d0/z0)
+ disp(z0/d0)
+ disp(z0/z0)
+
+ disp(d2/d0)
+ disp(d2/z0)
+ disp(z2/d0)
+ disp(z2/z0)
+
+ disp(d0/d2)
+ disp(d0/z2)
+ disp(z0/d2)
+ disp(z0/z2)
+
+ disp(d2/d2)
+ disp(d2/z2)
+ disp(z2/d2)
+ disp(z2/z2)
+
+ disp([1 2 3]/[1 2 3]) //d2d2OpSlashd0
+ disp([1 2 3]/(%i * [1 2 3])) //d2z2OpSlashz0
+ disp((%i * [1 2 3])/[1 2 3]) //z2d2OpSlashz0
+ disp((%i * [1 2 3])/(%i * [1 2 3])) //z2z2OpSlashz0
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_OpSlash.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpSlash.sci.dia.ref
new file mode 100644
index 00000000..f91fc56b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpSlash.sci.dia.ref
@@ -0,0 +1,1533 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpSlash.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 0.5 - 0.5i
+
+ 1. + i
+
+ 1.
+
+ 0.3183099 0.6366198 0.9549297 1.2732395
+ 1.5915494 1.9098593 2.2281692 2.5464791
+ 2.864789 3.1830989 3.5014087 3.8197186
+ 4.1380285 4.4563384 4.7746483 5.0929582
+
+
+ column 1 to 2
+
+ 0.1591549 - 0.1591549i 0.3183099 - 0.3183099i
+ 0.7957747 - 0.7957747i 0.9549297 - 0.9549297i
+ 1.4323945 - 1.4323945i 1.5915494 - 1.5915494i
+ 2.0690143 - 2.0690143i 2.2281692 - 2.2281692i
+
+ column 3 to 4
+
+ 0.4774648 - 0.4774648i 0.6366198 - 0.6366198i
+ 1.1140846 - 1.1140846i 1.2732395 - 1.2732395i
+ 1.7507044 - 1.7507044i 1.9098593 - 1.9098593i
+ 2.3873241 - 2.3873241i 2.5464791 - 2.5464791i
+
+
+ column 1 to 2
+
+ 0.3183099 + 0.3183099i 0.6366198 + 0.6366198i
+ 1.5915494 + 1.5915494i 1.9098593 + 1.9098593i
+ 2.864789 + 2.864789i 3.1830989 + 3.1830989i
+ 4.1380285 + 4.1380285i 4.4563384 + 4.4563384i
+
+ column 3 to 4
+
+ 0.9549297 + 0.9549297i 1.2732395 + 1.2732395i
+ 2.2281692 + 2.2281692i 2.5464791 + 2.5464791i
+ 3.5014087 + 3.5014087i 3.8197186 + 3.8197186i
+ 4.7746483 + 4.7746483i 5.0929582 + 5.0929582i
+
+ 0.3183099 0.6366198 0.9549297 1.2732395
+ 1.5915494 1.9098593 2.2281692 2.5464791
+ 2.864789 3.1830989 3.5014087 3.8197186
+ 4.1380285 4.4563384 4.7746483 5.0929582
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ - 1.2042772 0. 0. 0.2617994
+ - 0.4450590 0. 0. 0.1308997
+ 0.3141593 0. 0. 3.054D-17
+ 1.0733775 0. 0. - 0.1308997
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ - 0.6021386 + 0.6021386i 0 0 0.1308997 - 0.1308997i
+ - 0.2225295 + 0.2225295i 0 0 0.0654498 - 0.0654498i
+ 0.1570796 - 0.1570796i 0 0 2.159D-17 - 2.699D-17i
+ 0.5366887 - 0.5366887i 0 0 - 0.0654498 + 0.0654498i
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ - 1.2042772 - 1.2042772i 0 0 0.2617994 + 0.2617994i
+ - 0.4450590 - 0.4450590i 0 0 0.1308997 + 0.1308997i
+ 0.3141593 + 0.3141593i 0 0 3.054D-17 + 3.054D-17i
+ 1.0733775 + 1.0733775i 0 0 - 0.1308997 - 0.1308997i
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ - 1.2042772 + 2.553D-16i 0 0 0.2617994 - 4.306D-17i
+ - 0.4450590 - 1.702D-16i 0 0 0.1308997 + 3.903D-17i
+ 0.3141593 + 1.064D-16i 0 0 3.239D-17 - 2.765D-17i
+ 1.0733775 + 6.382D-17i 0 0 - 0.1308997 - 2.021D-17i
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ 1. 0. 0. 6.107D-17
+ 0.6666667 0. 0. 0.3333333
+ 0.3333333 0. 0. 0.6666667
+ - 2.522D-15 0. 0. 1.
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ 0.5 - 0.5i 0 0 - 2.159D-17
+ 0.3333333 - 0.3333333i 0 0 0.1666667 - 0.1666667i
+ 0.1666667 - 0.1666667i 0 0 0.3333333 - 0.3333333i
+ - 6.421D-17 + 6.838D-16i 0 0 0.5 - 0.5i
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ 1. + i 0 0 3.054D-17 + 3.054D-17i
+ 0.6666667 + 0.6666667i 0 0 0.3333333 + 0.3333333i
+ 0.3333333 + 0.3333333i 0 0 0.6666667 + 0.6666667i
+ - 2.942D-15 - 2.942D-15i 0 0 1. + i
+Warning :
+matrix is close to singular or badly scaled. rcond = 0.0000D+00
+computing least squares solution. (see lsq).
+
+
+ 1. + 1.064D-16i 0 0 4.318D-17 - 1.886D-17i
+ 0.6666667 + 7.978D-16i 0 0 0.3333333 - 1.702D-16i
+ 0.3333333 - 1.143D-16i 0 0 0.6666667 + 5.986D-17i
+ - 1.456D-15 + 1.607D-15i 0 0 1. - 3.281D-16i
+
+ 1.
+
+ - 2.967D-17 - i
+
+ i
+
+ 1. - 2.967D-17i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpSlash"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpSlash/test_OpSlash_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpSlash/test_OpSlash_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0/d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0/z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0/d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0/z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2/d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2/z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2/d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2/z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0/d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0/z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0/d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0/z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2/d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2/z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2/d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2/z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp([1 2 3]/[1 2 3]) //d2d2OpSlashd0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp([1 2 3]/(%i * [1 2 3])) //d2z2OpSlashz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp((%i * [1 2 3])/[1 2 3]) //z2d2OpSlashz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp((%i * [1 2 3])/(%i * [1 2 3])) //z2z2OpSlashz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpSlash() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp29[4 * 4]; !
+! !
+! int ____temp29Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp30[4 * 4]; !
+! !
+! int ____temp30Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! double __temp33[1 * 2]; !
+! !
+! int ____temp33Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp34[1 * 3]; !
+! !
+! int ____temp34Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp35[1 * 2]; !
+! !
+! int ____temp35Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp36[1 * 3]; !
+! !
+! int ____temp36Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp37; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! double __temp38[1 * 2]; !
+! !
+! int ____temp38Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp39[1 * 3]; !
+! !
+! int ____temp39Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp40[1 * 2]; !
+! !
+! int ____temp40Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp41[1 * 3]; !
+! !
+! int ____temp41Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp42[1 * 3]; !
+! !
+! int ____temp42Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp43; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! double __temp44[1 * 2]; !
+! !
+! int ____temp44Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp45[1 * 3]; !
+! !
+! int ____temp45Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp46[1 * 3]; !
+! !
+! int ____temp46Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp47[1 * 2]; !
+! !
+! int ____temp47Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp48[1 * 3]; !
+! !
+! int ____temp48Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp49; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! double __temp50[1 * 2]; !
+! !
+! int ____temp50Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp51[1 * 3]; !
+! !
+! int ____temp51Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp52[1 * 3]; !
+! !
+! int ____temp52Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp53[1 * 2]; !
+! !
+! int ____temp53Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp54[1 * 3]; !
+! !
+! int ____temp54Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp55[1 * 3]; !
+! !
+! int ____temp55Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp56; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0/d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpSlashd0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0/z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0z0OpSlashz0(d0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0/d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0d0OpSlashz0(z0,d0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0/z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z0z0OpSlashz0(z0,z0); !
+! !
+! ans4 = z0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2/d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpSlashd2(d2, __d2Size,d0,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2/z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpSlashz2(d2, __d2Size,z0,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2/d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpSlashz2(z2, __z2Size,d0,__temp23); !
+! !
+! ans7 = z2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2/z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpSlashz2(z2, __z2Size,z0,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0/d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpSlashd2(d0,d2, __d2Size,__temp25); !
+! !
+! ans9 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0/z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpSlashz2(d0,z2, __z2Size,__temp26); !
+! !
+! ans10 = z2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0/d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpSlashz2(z0,d2, __d2Size,__temp27); !
+! !
+! ans11 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0/z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpSlashz2(z0,z2, __z2Size,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2/d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpSlashd2(d2, __d2Size,d2, __d2Size,__temp29); !
+! !
+! ans13 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2/z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpSlashz2(d2, __d2Size,z2, __z2Size,__temp30); !
+! !
+! ans14 = z2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2/d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpSlashz2(z2, __z2Size,d2, __d2Size,__temp31); !
+! !
+! ans15 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2/z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpSlashz2(z2, __z2Size,z2, __z2Size,__temp32); !
+! !
+! ans16 = z2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp([1 2 3]/[1 2 3]) //d2d2OpSlashd0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp33); !
+! !
+! d2d0OpRcd2(__temp33, ____temp33Size,3,__temp34); !
+! !
+! d0d0OpRcd2(1,2,__temp35); !
+! !
+! d2d0OpRcd2(__temp35, ____temp35Size,3,__temp36); !
+! !
+! __temp37 = d2d2OpSlashd0(__temp34, ____temp34Size,__temp36, ____t!
+! emp36Size); !
+! !
+! ans17 = d0dispd0(__temp37); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp([1 2 3]/(%i * [1 2 3])) //d2z2OpSlashz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp38); !
+! !
+! d2d0OpRcd2(__temp38, ____temp38Size,3,__temp39); !
+! !
+! d0d0OpRcd2(1,2,__temp40); !
+! !
+! d2d0OpRcd2(__temp40, ____temp40Size,3,__temp41); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp41, ____temp41Size,__temp42)!
+! ; !
+! !
+! __temp43 = d2z2OpSlashz0(__temp39, ____temp39Size,__temp42, ____t!
+! emp42Size); !
+! !
+! ans18 = z0dispd0(__temp43); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp((%i * [1 2 3])/[1 2 3]) //z2d2OpSlashz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp44); !
+! !
+! d2d0OpRcd2(__temp44, ____temp44Size,3,__temp45); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp45, ____temp45Size,__temp46)!
+! ; !
+! !
+! d0d0OpRcd2(1,2,__temp47); !
+! !
+! d2d0OpRcd2(__temp47, ____temp47Size,3,__temp48); !
+! !
+! __temp49 = z2d2OpSlashz0(__temp46, ____temp46Size,__temp48, ____t!
+! emp48Size); !
+! !
+! ans19 = z0dispd0(__temp49); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp((%i * [1 2 3])/(%i * [1 2 3])) //z2z2OpSlashz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp50); !
+! !
+! d2d0OpRcd2(__temp50, ____temp50Size,3,__temp51); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp51, ____temp51Size,__temp52)!
+! ; !
+! !
+! d0d0OpRcd2(1,2,__temp53); !
+! !
+! d2d0OpRcd2(__temp53, ____temp53Size,3,__temp54); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp54, ____temp54Size,__temp55)!
+! ; !
+! !
+! __temp56 = z2z2OpSlashz0(__temp52, ____temp52Size,__temp55, ____t!
+! emp55Size); !
+! !
+! ans20 = z0dispd0(__temp56); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpSlash.sci.tst b/2.3-1/tests/unit_tests/double/test_OpSlash.sci.tst
new file mode 100644
index 00000000..30eaca03
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpSlash.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpSlash.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpStar.sci b/2.3-1/tests/unit_tests/double/test_OpStar.sci
new file mode 100644
index 00000000..06989ec8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpStar.sci
@@ -0,0 +1,31 @@
+function test_OpStar()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0*d0)
+ disp(d0*z0)
+ disp(z0*d0)
+ disp(z0*z0)
+
+ disp(d2*d0)
+ disp(d2*z0)
+ disp(z2*d0)
+ disp(z2*z0)
+
+ disp(d0*d2)
+ disp(d0*z2)
+ disp(z0*d2)
+ disp(z0*z2)
+
+ disp(d2*d2)
+ disp(d2*z2)
+ disp(z2*d2)
+ disp(z2*z2)
+
+ disp([1 2 3]*[1 2 3]') //d2d2OpStard0
+ disp([1 2 3]*(%i * [1 2 3])') //d2z2OpStarz0
+ disp((%i * [1 2 3])*[1 2 3]') //z2d2OpStarz0
+ disp((%i * [1 2 3])*(%i * [1 2 3])') //z2z2OpStarz0
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_OpStar.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_OpStar.sci.dia.ref
new file mode 100644
index 00000000..4e004236
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpStar.sci.dia.ref
@@ -0,0 +1,1535 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpStar.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 9.8696044
+
+ 9.8696044 + 9.8696044i
+
+ 9.8696044 + 9.8696044i
+
+ 19.739209i
+
+ 3.1415927 6.2831853 9.424778 12.566371
+ 15.707963 18.849556 21.991149 25.132741
+ 28.274334 31.415927 34.557519 37.699112
+ 40.840704 43.982297 47.12389 50.265482
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+ 6.2831853i 12.566371i 18.849556i 25.132741i
+ 31.415927i 37.699112i 43.982297i 50.265482i
+ 56.548668i 62.831853i 69.115038i 75.398224i
+ 81.681409i 87.964594i 94.24778i 100.53096i
+
+ 3.1415927 6.2831853 9.424778 12.566371
+ 15.707963 18.849556 21.991149 25.132741
+ 28.274334 31.415927 34.557519 37.699112
+ 40.840704 43.982297 47.12389 50.265482
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+
+ column 1 to 2
+
+ 3.1415927 + 3.1415927i 6.2831853 + 6.2831853i
+ 15.707963 + 15.707963i 18.849556 + 18.849556i
+ 28.274334 + 28.274334i 31.415927 + 31.415927i
+ 40.840704 + 40.840704i 43.982297 + 43.982297i
+
+ column 3 to 4
+
+ 9.424778 + 9.424778i 12.566371 + 12.566371i
+ 21.991149 + 21.991149i 25.132741 + 25.132741i
+ 34.557519 + 34.557519i 37.699112 + 37.699112i
+ 47.12389 + 47.12389i 50.265482 + 50.265482i
+
+ 6.2831853i 12.566371i 18.849556i 25.132741i
+ 31.415927i 37.699112i 43.982297i 50.265482i
+ 56.548668i 62.831853i 69.115038i 75.398224i
+ 81.681409i 87.964594i 94.24778i 100.53096i
+
+ 90. 100. 110. 120.
+ 202. 228. 254. 280.
+ 314. 356. 398. 440.
+ 426. 484. 542. 600.
+
+ 90. + 90.i 100. + 100.i 110. + 110.i 120. + 120.i
+ 202. + 202.i 228. + 228.i 254. + 254.i 280. + 280.i
+ 314. + 314.i 356. + 356.i 398. + 398.i 440. + 440.i
+ 426. + 426.i 484. + 484.i 542. + 542.i 600. + 600.i
+
+ 90. + 90.i 100. + 100.i 110. + 110.i 120. + 120.i
+ 202. + 202.i 228. + 228.i 254. + 254.i 280. + 280.i
+ 314. + 314.i 356. + 356.i 398. + 398.i 440. + 440.i
+ 426. + 426.i 484. + 484.i 542. + 542.i 600. + 600.i
+
+ 180.i 200.i 220.i 240.i
+ 404.i 456.i 508.i 560.i
+ 628.i 712.i 796.i 880.i
+ 852.i 968.i 1084.i 1200.i
+
+ 14.
+
+ - 14.i
+
+ 14.i
+
+ 14.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_OpStar"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpStar/test_OpStar_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_OpStar/test_OpStar_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2*d0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2*z0)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d0*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z0*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(d2*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2*d2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(z2*z2)
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp([1 2 3]*[1 2 3]') //d2d2OpStard0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp([1 2 3]*(%i * [1 2 3])') //d2z2OpStarz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp((%i * [1 2 3])*[1 2 3]') //z2d2OpStarz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp((%i * [1 2 3])*(%i * [1 2 3])') //z2z2OpStarz0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_OpStar() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21[4 * 4]; !
+! !
+! int ____temp21Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25[4 * 4]; !
+! !
+! int ____temp25Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26[4 * 4]; !
+! !
+! int ____temp26Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp27[4 * 4]; !
+! !
+! int ____temp27Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 4]; !
+! !
+! int ____temp28Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp29[4 * 4]; !
+! !
+! int ____temp29Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! doubleComplex __temp30[4 * 4]; !
+! !
+! int ____temp30Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp31[4 * 4]; !
+! !
+! int ____temp31Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! doubleComplex __temp32[4 * 4]; !
+! !
+! int ____temp32Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! double __temp33[1 * 2]; !
+! !
+! int ____temp33Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp34[1 * 3]; !
+! !
+! int ____temp34Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp35[1 * 2]; !
+! !
+! int ____temp35Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp36[1 * 3]; !
+! !
+! int ____temp36Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp37[3 * 1]; !
+! !
+! int ____temp37Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double __temp38; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! double __temp39[1 * 2]; !
+! !
+! int ____temp39Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp40[1 * 3]; !
+! !
+! int ____temp40Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp41[1 * 2]; !
+! !
+! int ____temp41Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp42[1 * 3]; !
+! !
+! int ____temp42Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp43[1 * 3]; !
+! !
+! int ____temp43Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp44[3 * 1]; !
+! !
+! int ____temp44Size[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex __temp45; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! double __temp46[1 * 2]; !
+! !
+! int ____temp46Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp47[1 * 3]; !
+! !
+! int ____temp47Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp48[1 * 3]; !
+! !
+! int ____temp48Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp49[1 * 2]; !
+! !
+! int ____temp49Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp50[1 * 3]; !
+! !
+! int ____temp50Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp51[3 * 1]; !
+! !
+! int ____temp51Size[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex __temp52; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! double __temp53[1 * 2]; !
+! !
+! int ____temp53Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp54[1 * 3]; !
+! !
+! int ____temp54Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp55[1 * 3]; !
+! !
+! int ____temp55Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp56[1 * 2]; !
+! !
+! int ____temp56Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp57[1 * 3]; !
+! !
+! int ____temp57Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp58[1 * 3]; !
+! !
+! int ____temp58Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp59[3 * 1]; !
+! !
+! int ____temp59Size[2] = {3, 1};; !
+! !
+! !
+! !
+! doubleComplex __temp60; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0d0OpStard0(d0,d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0z0OpStarz0(d0,z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0d0OpStarz0(z0,d0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z0z0OpStarz0(z0,z0); !
+! !
+! ans4 = z0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0OpStard2(d2, __d2Size,d0,__temp21); !
+! !
+! ans5 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z0OpStarz2(d2, __d2Size,z0,__temp22); !
+! !
+! ans6 = z2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2*d0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0OpStarz2(z2, __z2Size,d0,__temp23); !
+! !
+! ans7 = z2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2*z0) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z0OpStarz2(z2, __z2Size,z0,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d2OpStard2(d0,d2, __d2Size,__temp25); !
+! !
+! ans9 = d2dispd0(__temp25, ____temp25Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d0*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z2OpStarz2(d0,z2, __z2Size,__temp26); !
+! !
+! ans10 = z2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(z0,d2, __d2Size,__temp27); !
+! !
+! ans11 = z2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z0*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0z2OpStarz2(z0,z2, __z2Size,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2OpStard2(d2, __d2Size,d2, __d2Size,__temp29); !
+! !
+! ans13 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(d2*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2z2OpStarz2(d2, __d2Size,z2, __z2Size,__temp30); !
+! !
+! ans14 = z2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2*d2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d2OpStarz2(z2, __z2Size,d2, __d2Size,__temp31); !
+! !
+! ans15 = z2dispd0(__temp31, ____temp31Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(z2*z2) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2z2OpStarz2(z2, __z2Size,z2, __z2Size,__temp32); !
+! !
+! ans16 = z2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp([1 2 3]*[1 2 3]') //d2d2OpStard0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp33); !
+! !
+! d2d0OpRcd2(__temp33, ____temp33Size,3,__temp34); !
+! !
+! d0d0OpRcd2(1,2,__temp35); !
+! !
+! d2d0OpRcd2(__temp35, ____temp35Size,3,__temp36); !
+! !
+! d2OpApexd2(__temp36, ____temp36Size,__temp37); !
+! !
+! __temp38 = d2d2OpStard0(__temp34, ____temp34Size,__temp37, ____te!
+! mp37Size); !
+! !
+! ans17 = d0dispd0(__temp38); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp([1 2 3]*(%i * [1 2 3])') //d2z2OpStarz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp39); !
+! !
+! d2d0OpRcd2(__temp39, ____temp39Size,3,__temp40); !
+! !
+! d0d0OpRcd2(1,2,__temp41); !
+! !
+! d2d0OpRcd2(__temp41, ____temp41Size,3,__temp42); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp42, ____temp42Size,__temp43)!
+! ; !
+! !
+! z2OpApexz2(__temp43, ____temp43Size,__temp44); !
+! !
+! __temp45 = d2z2OpStarz0(__temp40, ____temp40Size,__temp44, ____te!
+! mp44Size); !
+! !
+! ans18 = z0dispd0(__temp45); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp((%i * [1 2 3])*[1 2 3]') //z2d2OpStarz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp46); !
+! !
+! d2d0OpRcd2(__temp46, ____temp46Size,3,__temp47); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp47, ____temp47Size,__temp48)!
+! ; !
+! !
+! d0d0OpRcd2(1,2,__temp49); !
+! !
+! d2d0OpRcd2(__temp49, ____temp49Size,3,__temp50); !
+! !
+! d2OpApexd2(__temp50, ____temp50Size,__temp51); !
+! !
+! __temp52 = z2d2OpStarz0(__temp48, ____temp48Size,__temp51, ____te!
+! mp51Size); !
+! !
+! ans19 = z0dispd0(__temp52); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp((%i * [1 2 3])*(%i * [1 2 3])') //z2z2OpStarz0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp53); !
+! !
+! d2d0OpRcd2(__temp53, ____temp53Size,3,__temp54); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp54, ____temp54Size,__temp55)!
+! ; !
+! !
+! d0d0OpRcd2(1,2,__temp56); !
+! !
+! d2d0OpRcd2(__temp56, ____temp56Size,3,__temp57); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp57, ____temp57Size,__temp58)!
+! ; !
+! !
+! z2OpApexz2(__temp58, ____temp58Size,__temp59); !
+! !
+! __temp60 = z2z2OpStarz0(__temp55, ____temp55Size,__temp59, ____te!
+! mp59Size); !
+! !
+! ans20 = z0dispd0(__temp60); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_OpStar.sci.tst b/2.3-1/tests/unit_tests/double/test_OpStar.sci.tst
new file mode 100644
index 00000000..590b5c51
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_OpStar.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_OpStar.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Size.sci b/2.3-1/tests/unit_tests/double/test_Size.sci
new file mode 100644
index 00000000..c9866ff4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Size.sci
@@ -0,0 +1,41 @@
+function test_Size()
+ disp(size(4));
+ disp(size([1 2]))
+ disp(size(2+3*%i));
+ disp(size([1 2 3 ; 4 5 6]));
+ disp(size([1 2 3 ; 4 5 6]*%i));
+ e = %pi ;
+ disp(size(e)); // d0Sized0
+
+ f = e * %i;
+ disp(size(f));// z0Sized0
+
+ a = [1 2 3 ; 4 5 6];
+ disp(size(a));// d2Sized0
+
+ b = [1 2 3 ; 4 5 6] * %i;
+ disp(size(b));// z2Sized0
+
+// with a second argument
+ o=1;
+
+ disp(size(4,1));
+ disp(size(2+3*%i,1));
+ disp(size([1 2 3 ; 4 5 6],o));
+ disp(size([1 2 3 ; 4 5 6]*%i,1));
+ e = %pi ;
+ disp(size(e,1)); // d0Sized0
+
+ f = e * %i;
+ disp(size(f,1));// z0Sized0
+
+ a = [1 2 3 ; 4 5 6];
+ disp(size(a,o));// d2Sized0
+
+ b = [1 2 3 ; 4 5 6] * %i;
+ disp(size(b,1));// z2Sized0
+
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Size.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Size.sci.dia.ref
new file mode 100644
index 00000000..171f633b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Size.sci.dia.ref
@@ -0,0 +1,1637 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Size.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1. 1.
+
+ 1. 2.
+
+ 1. 1.
+
+ 2. 3.
+
+ 2. 3.
+
+ 1. 1.
+
+ 1. 1.
+
+ 2. 3.
+
+ 2. 3.
+
+ 1.
+
+ 1.
+
+ 2.
+
+ 2.
+
+ 1.
+
+ 1.
+
+ 2.
+
+ 2.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Size"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Size/test_Size_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Size/test_Size_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(4));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size([1 2]))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(2+3*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size([1 2 3 ; 4 5 6]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size([1 2 3 ; 4 5 6]*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = %pi ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(e)); // d0Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = e * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(f));// z0Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3 ; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(a));// d2Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 2 3 ; 4 5 6] * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(b));// z2Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // with a second argument
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: o=1;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(4,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(2+3*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size([1 2 3 ; 4 5 6],o));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size([1 2 3 ; 4 5 6]*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: e = %pi ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(e,1)); // d0Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: f = e * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(f,1));// z0Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3 ; 4 5 6];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(a,o));// d2Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = [1 2 3 ; 4 5 6] * %i;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(size(b,1));// z2Sized0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Size() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp2[1 * 2]; !
+! !
+! int ____temp2Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp4; !
+! !
+! !
+! !
+! doubleComplex __temp5; !
+! !
+! !
+! !
+! double __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp7[1 * 2]; !
+! !
+! int ____temp7Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp8[1 * 3]; !
+! !
+! int ____temp8Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp9[1 * 2]; !
+! !
+! int ____temp9Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp10[1 * 3]; !
+! !
+! int ____temp10Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp11[2 * 3]; !
+! !
+! int ____temp11Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp13[1 * 2]; !
+! !
+! int ____temp13Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp14[1 * 3]; !
+! !
+! int ____temp14Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp15[1 * 2]; !
+! !
+! int ____temp15Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp16[1 * 3]; !
+! !
+! int ____temp16Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp17[2 * 3]; !
+! !
+! int ____temp17Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp18[2 * 3]; !
+! !
+! int ____temp18Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp19[1 * 2]; !
+! !
+! int ____temp19Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double e = 3.1415927; !
+! !
+! !
+! !
+! double __temp20[1 * 2]; !
+! !
+! int ____temp20Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! doubleComplex f; !
+! !
+! !
+! !
+! double __temp21[1 * 2]; !
+! !
+! int ____temp21Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! double __temp22[1 * 2]; !
+! !
+! int ____temp22Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp23[1 * 3]; !
+! !
+! int ____temp23Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp25[1 * 3]; !
+! !
+! int ____temp25Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[2 * 3]; !
+! !
+! int __aSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp27[1 * 2]; !
+! !
+! int ____temp27Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp28[1 * 3]; !
+! !
+! int ____temp28Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp29[1 * 2]; !
+! !
+! int ____temp29Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp30[1 * 3]; !
+! !
+! int ____temp30Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp31[2 * 3]; !
+! !
+! int ____temp31Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex b[2 * 3]; !
+! !
+! int __bSize[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp32[1 * 2]; !
+! !
+! int ____temp32Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! double o = 1; !
+! !
+! !
+! !
+! double __temp33; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! doubleComplex __temp34; !
+! !
+! !
+! !
+! doubleComplex __temp35; !
+! !
+! !
+! !
+! double __temp36; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! double __temp37[1 * 2]; !
+! !
+! int ____temp37Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp38[1 * 3]; !
+! !
+! int ____temp38Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp39[1 * 2]; !
+! !
+! int ____temp39Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp40[1 * 3]; !
+! !
+! int ____temp40Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp41[2 * 3]; !
+! !
+! int ____temp41Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp42; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! double __temp43[1 * 2]; !
+! !
+! int ____temp43Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp44[1 * 3]; !
+! !
+! int ____temp44Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp45[1 * 2]; !
+! !
+! int ____temp45Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp46[1 * 3]; !
+! !
+! int ____temp46Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp47[2 * 3]; !
+! !
+! int ____temp47Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp48[2 * 3]; !
+! !
+! int ____temp48Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp49; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! double __temp50; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! double __temp51; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! double __temp52[1 * 2]; !
+! !
+! int ____temp52Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp53[1 * 3]; !
+! !
+! int ____temp53Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp54[1 * 2]; !
+! !
+! int ____temp54Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp55[1 * 3]; !
+! !
+! int ____temp55Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp56; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! double __temp57[1 * 2]; !
+! !
+! int ____temp57Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp58[1 * 3]; !
+! !
+! int ____temp58Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp59[1 * 2]; !
+! !
+! int ____temp59Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp60[1 * 3]; !
+! !
+! int ____temp60Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp61[2 * 3]; !
+! !
+! int ____temp61Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp62; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(4)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0sized2(4,__temp1); !
+! !
+! ans1 = d2dispd0(__temp1, ____temp1Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size([1 2])) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp2); !
+! !
+! d2sized2(__temp2, ____temp2Size,__temp3); !
+! !
+! ans2 = d2dispd0(__temp3, ____temp3Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(2+3*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp4 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp5 = d0z0OpPlusz0(2,__temp4); !
+! !
+! z0sized2(__temp5,__temp6); !
+! !
+! ans3 = d2dispd0(__temp6, ____temp6Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size([1 2 3 ; 4 5 6])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp7); !
+! !
+! d2d0OpRcd2(__temp7, ____temp7Size,3,__temp8); !
+! !
+! d0d0OpRcd2(4,5,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,6,__temp10); !
+! !
+! d2d2OpCcd2(__temp8, ____temp8Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d2sized2(__temp11, ____temp11Size,__temp12); !
+! !
+! ans4 = d2dispd0(__temp12, ____temp12Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size([1 2 3 ; 4 5 6]*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,3,__temp14); !
+! !
+! d0d0OpRcd2(4,5,__temp15); !
+! !
+! d2d0OpRcd2(__temp15, ____temp15Size,6,__temp16); !
+! !
+! d2d2OpCcd2(__temp14, ____temp14Size,__temp16, ____temp16Size,__te!
+! mp17); !
+! !
+! d2z0OpStarz2(__temp17, ____temp17Size,DoubleComplex(0,1),__temp18)!
+! ; !
+! !
+! z2sized2(__temp18, ____temp18Size,__temp19); !
+! !
+! ans5 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = %pi ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! e = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(e)); // d0Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0sized2(e,__temp20); !
+! !
+! ans6 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = e * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! f = d0z0OpStarz0(e,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(f));// z0Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0sized2(f,__temp21); !
+! !
+! ans7 = d2dispd0(__temp21, ____temp21Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3 ; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp22); !
+! !
+! d2d0OpRcd2(__temp22, ____temp22Size,3,__temp23); !
+! !
+! d0d0OpRcd2(4,5,__temp24); !
+! !
+! d2d0OpRcd2(__temp24, ____temp24Size,6,__temp25); !
+! !
+! d2d2OpCcd2(__temp23, ____temp23Size,__temp25, ____temp25Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(a));// d2Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2sized2(a, __aSize,__temp26); !
+! !
+! ans8 = d2dispd0(__temp26, ____temp26Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 2 3 ; 4 5 6] * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp27); !
+! !
+! d2d0OpRcd2(__temp27, ____temp27Size,3,__temp28); !
+! !
+! d0d0OpRcd2(4,5,__temp29); !
+! !
+! d2d0OpRcd2(__temp29, ____temp29Size,6,__temp30); !
+! !
+! d2d2OpCcd2(__temp28, ____temp28Size,__temp30, ____temp30Size,__te!
+! mp31); !
+! !
+! d2z0OpStarz2(__temp31, ____temp31Size,DoubleComplex(0,1),b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(b));// z2Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2sized2(b, __bSize,__temp32); !
+! !
+! ans9 = d2dispd0(__temp32, ____temp32Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // with a second argument !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: o=1; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! o = d0OpEquald0(1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(4,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp33 = d0d0sized0(4,1); !
+! !
+! ans10 = d0dispd0(__temp33); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(2+3*%i,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp34 = d0z0OpStarz0(3,DoubleComplex(0,1)); !
+! !
+! __temp35 = d0z0OpPlusz0(2,__temp34); !
+! !
+! __temp36 = z0d0sized0(__temp35,1); !
+! !
+! ans11 = d0dispd0(__temp36); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size([1 2 3 ; 4 5 6],o)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp37); !
+! !
+! d2d0OpRcd2(__temp37, ____temp37Size,3,__temp38); !
+! !
+! d0d0OpRcd2(4,5,__temp39); !
+! !
+! d2d0OpRcd2(__temp39, ____temp39Size,6,__temp40); !
+! !
+! d2d2OpCcd2(__temp38, ____temp38Size,__temp40, ____temp40Size,__te!
+! mp41); !
+! !
+! __temp42 = d2d0sized0(__temp41, ____temp41Size,o); !
+! !
+! ans12 = d0dispd0(__temp42); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size([1 2 3 ; 4 5 6]*%i,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp43); !
+! !
+! d2d0OpRcd2(__temp43, ____temp43Size,3,__temp44); !
+! !
+! d0d0OpRcd2(4,5,__temp45); !
+! !
+! d2d0OpRcd2(__temp45, ____temp45Size,6,__temp46); !
+! !
+! d2d2OpCcd2(__temp44, ____temp44Size,__temp46, ____temp46Size,__te!
+! mp47); !
+! !
+! d2z0OpStarz2(__temp47, ____temp47Size,DoubleComplex(0,1),__temp48)!
+! ; !
+! !
+! __temp49 = z2d0sized0(__temp48, ____temp48Size,1); !
+! !
+! ans13 = d0dispd0(__temp49); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: e = %pi ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! e = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(e,1)); // d0Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp50 = d0d0sized0(e,1); !
+! !
+! ans14 = d0dispd0(__temp50); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: f = e * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! f = d0z0OpStarz0(e,DoubleComplex(0,1)); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(f,1));// z0Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp51 = z0d0sized0(f,1); !
+! !
+! ans15 = d0dispd0(__temp51); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3 ; 4 5 6]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp52); !
+! !
+! d2d0OpRcd2(__temp52, ____temp52Size,3,__temp53); !
+! !
+! d0d0OpRcd2(4,5,__temp54); !
+! !
+! d2d0OpRcd2(__temp54, ____temp54Size,6,__temp55); !
+! !
+! d2d2OpCcd2(__temp53, ____temp53Size,__temp55, ____temp55Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(a,o));// d2Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp56 = d2d0sized0(a, __aSize,o); !
+! !
+! ans16 = d0dispd0(__temp56); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = [1 2 3 ; 4 5 6] * %i; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp57); !
+! !
+! d2d0OpRcd2(__temp57, ____temp57Size,3,__temp58); !
+! !
+! d0d0OpRcd2(4,5,__temp59); !
+! !
+! d2d0OpRcd2(__temp59, ____temp59Size,6,__temp60); !
+! !
+! d2d2OpCcd2(__temp58, ____temp58Size,__temp60, ____temp60Size,__te!
+! mp61); !
+! !
+! d2z0OpStarz2(__temp61, ____temp61Size,DoubleComplex(0,1),b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(size(b,1));// z2Sized0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp62 = z2d0sized0(b, __bSize,1); !
+! !
+! ans17 = d0dispd0(__temp62); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Size.sci.tst b/2.3-1/tests/unit_tests/double/test_Size.sci.tst
new file mode 100644
index 00000000..6af1d2f4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Size.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Size.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Spec.sci b/2.3-1/tests/unit_tests/double/test_Spec.sci
new file mode 100644
index 00000000..8ef11466
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Spec.sci
@@ -0,0 +1,41 @@
+function test_Spec()
+
+
+ disp(spec(45)) ; // d0Spec
+ disp(spec(4+3*%i)); // z0Spec
+
+ a = [1 2 3; -4 5 98 ; 7 8 5] ;
+ b = [1 2 3; -4 5 98 ; 7 -100000 5] ;
+
+
+ disp(spec(a));
+ disp(spec(b));
+
+ disp(spec(a*%i));
+ // 2 outputs
+
+ [aa bb] = spec(45) ; // d0Spec
+ disp(aa);
+ disp(bb);
+
+ [cc dd] = spec(4+3*%i); // z0Spec
+
+ disp(cc);
+ disp(dd);
+
+ a = [1 2 3; -4 5 98 ; 7 8 5] ;
+ b = [1 2 3; -4 5 98 ; 7 -100000 5] ;
+
+
+ [ee ff] = spec(a);
+ disp(ee);
+ disp(ff);
+ [gg hh] = spec(b);
+ disp(gg);
+ disp(hh);
+
+ [ii jj] = spec(a*%i);
+ disp(ii);
+ disp(jj);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Spec.sci.tst b/2.3-1/tests/unit_tests/double/test_Spec.sci.tst
new file mode 100644
index 00000000..a21881f0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Spec.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Spec.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Stdevf.sci b/2.3-1/tests/unit_tests/double/test_Stdevf.sci
new file mode 100644
index 00000000..3f381834
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Stdevf.sci
@@ -0,0 +1,45 @@
+
+function test_Stdevf()
+ disp (stdevf (4 , 5 )) ;
+ disp ("*******1*******");
+ disp (stdevf ([4 5 6], [1 2 3]));
+ disp ("*******2*******");
+ disp (stdevf (4 , 5*%i )) ;
+ disp ("*******3*******");
+ disp (stdevf ([4 5 6], [1 2 3]*%i));
+ disp ("*******4*******");
+
+
+
+ disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1));
+ disp ("*******5*******");
+ disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2));
+// complex
+ disp ("*******6*******");
+ disp (stdevf (4 +4*%i , 5 )) ;
+ disp ("*******7*******");
+ disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]));
+ disp ("*******8*******");
+ disp (stdevf (4 +4*%i , 5*%i )) ;
+ disp ("*******9*******");
+ disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]*%i));
+ disp ("******10*******");
+
+
+ disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1));
+ disp ("******11*******");
+ disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2));
+ disp (stdevf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******12*******");
+ disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******13*******");
+ disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2));
+ disp ("******14*******");
+
+ disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******15*******");
+ disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));
+ disp ("******16*******");
+//
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Stdevf.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Stdevf.sci.dia.ref
new file mode 100644
index 00000000..ff14bf0a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Stdevf.sci.dia.ref
@@ -0,0 +1,2672 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Stdevf.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.
+
+ *******1*******
+
+ 0.
+
+ *******2*******
+
+ 0
+
+ *******3*******
+
+ 0
+
+ *******4*******
+
+ 1.3416408 1.4638501 1.5
+
+ *******5*******
+
+ 1.3416408
+ 1.4638501
+ 1.5
+
+ *******6*******
+
+ 0
+
+ *******7*******
+
+ 0
+
+ *******8*******
+
+ 0
+
+ *******9*******
+
+ 0
+
+ ******10*******
+
+ 1.3416408i 1.4638501i 1.5i
+
+ ******11*******
+
+ 1.1825083 - 0.1170914i
+ 1.3450417 - 0.0955892i
+ 1.4077246 - 0.0779670i
+
+
+ column 1 to 2
+
+ 1.2591072 - 0.0697358i 1.3127305 + 0.0474288i
+
+ column 3
+
+ 1.3915424 + 0.0307373i
+
+ ******12*******
+
+
+ column 1 to 2
+
+ 1.1825083 - 0.1170914i 1.3450417 - 0.0955892i
+
+ column 3
+
+ 1.4077246 - 0.0779670i
+
+ ******13*******
+
+ 1.3416408i
+ 1.4638501i
+ 1.5i
+
+ ******14*******
+
+
+ column 1 to 2
+
+ 0.1170914 + 1.1825083i 0.0955892 + 1.3450417i
+
+ column 3
+
+ 0.0779670 + 1.4077246i
+
+ ******15*******
+
+ 0.1170914 + 1.1825083i
+ 0.0955892 + 1.3450417i
+ 0.0779670 + 1.4077246i
+
+ ******16*******
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Stdevf"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Stdevf/test_Stdevf_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Stdevf/test_Stdevf_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf (4 , 5 )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******1*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6], [1 2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******2*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf (4 , 5*%i )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******3*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6], [1 2 3]*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******4*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******5*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // complex
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******6*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf (4 +4*%i , 5 )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******7*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******8*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf (4 +4*%i , 5*%i )) ;
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("*******9*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]*%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******10*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******11*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ;
+ 4 5 6]*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******12*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6]*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******13*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******14*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******15*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp ("******16*******");
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: !
+! !
+! SCI2C: function test_Stdevf() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! char __temp2[1*16] = {"*******1*******"}; !
+! !
+! int ____temp2Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp5[1 * 2]; !
+! !
+! int ____temp5Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp6[1 * 3]; !
+! !
+! int ____temp6Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp7; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! char __temp8[1*16] = {"*******2*******"}; !
+! !
+! int ____temp8Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! doubleComplex __temp9; !
+! !
+! !
+! !
+! doubleComplex __temp10; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! char __temp11[1*16] = {"*******3*******"}; !
+! !
+! int ____temp11Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp16[1 * 3]; !
+! !
+! int ____temp16Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! char __temp18[1*16] = {"*******4*******"}; !
+! !
+! int ____temp18Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp19[1 * 2]; !
+! !
+! int ____temp19Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp20[1 * 3]; !
+! !
+! int ____temp20Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp21[1 * 2]; !
+! !
+! int ____temp21Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp22[1 * 3]; !
+! !
+! int ____temp22Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp23[2 * 3]; !
+! !
+! int ____temp23Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp24[1 * 2]; !
+! !
+! int ____temp24Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp25[1 * 3]; !
+! !
+! int ____temp25Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp26[1 * 2]; !
+! !
+! int ____temp26Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp27[1 * 3]; !
+! !
+! int ____temp27Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp28[2 * 3]; !
+! !
+! int ____temp28Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp29[1 * 3]; !
+! !
+! int ____temp29Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! char __temp30[1*16] = {"*******5*******"}; !
+! !
+! int ____temp30Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp31[1 * 2]; !
+! !
+! int ____temp31Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp32[1 * 2]; !
+! !
+! int ____temp32Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp33[2 * 2]; !
+! !
+! int ____temp33Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp34[1 * 2]; !
+! !
+! int ____temp34Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp35[3 * 2]; !
+! !
+! int ____temp35Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp36[1 * 2]; !
+! !
+! int ____temp36Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp37[1 * 2]; !
+! !
+! int ____temp37Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp38[2 * 2]; !
+! !
+! int ____temp38Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp39[1 * 2]; !
+! !
+! int ____temp39Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp40[3 * 2]; !
+! !
+! int ____temp40Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp41[3 * 1]; !
+! !
+! int ____temp41Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! char __temp42[1*16] = {"*******6*******"}; !
+! !
+! int ____temp42Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! doubleComplex __temp43; !
+! !
+! !
+! !
+! doubleComplex __temp44; !
+! !
+! !
+! !
+! doubleComplex __temp45; !
+! !
+! !
+! !
+! double ans13; !
+! !
+! !
+! !
+! char __temp46[1*16] = {"*******7*******"}; !
+! !
+! int ____temp46Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans14; !
+! !
+! !
+! !
+! doubleComplex __temp47; !
+! !
+! !
+! !
+! doubleComplex __temp48; !
+! !
+! !
+! !
+! doubleComplex __temp49; !
+! !
+! !
+! !
+! doubleComplex __temp50[1 * 2]; !
+! !
+! int ____temp50Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp51[1 * 3]; !
+! !
+! int ____temp51Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp52[1 * 2]; !
+! !
+! int ____temp52Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp53[1 * 3]; !
+! !
+! int ____temp53Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp54; !
+! !
+! !
+! !
+! double ans15; !
+! !
+! !
+! !
+! char __temp55[1*16] = {"*******8*******"}; !
+! !
+! int ____temp55Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans16; !
+! !
+! !
+! !
+! doubleComplex __temp56; !
+! !
+! !
+! !
+! doubleComplex __temp57; !
+! !
+! !
+! !
+! doubleComplex __temp58; !
+! !
+! !
+! !
+! doubleComplex __temp59; !
+! !
+! !
+! !
+! double ans17; !
+! !
+! !
+! !
+! char __temp60[1*16] = {"*******9*******"}; !
+! !
+! int ____temp60Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans18; !
+! !
+! !
+! !
+! doubleComplex __temp61; !
+! !
+! !
+! !
+! doubleComplex __temp62; !
+! !
+! !
+! !
+! doubleComplex __temp63; !
+! !
+! !
+! !
+! doubleComplex __temp64[1 * 2]; !
+! !
+! int ____temp64Size[2] = {1, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp65[1 * 3]; !
+! !
+! int ____temp65Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp66[1 * 2]; !
+! !
+! int ____temp66Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp67[1 * 3]; !
+! !
+! int ____temp67Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp68[1 * 3]; !
+! !
+! int ____temp68Size[2] = {1, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp69; !
+! !
+! !
+! !
+! double ans19; !
+! !
+! !
+! !
+! char __temp70[1*16] = {"******10*******"}; !
+! !
+! int ____temp70Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans20; !
+! !
+! !
+! !
+! double __temp71[1 * 2]; !
+! !
+! int ____temp71Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp72[1 * 3]; !
+! !
+! int ____temp72Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp73[1 * 2]; !
+! !
+! int ____temp73Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp74[1 * 3]; !
+! !
+! int ____temp74Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp75[2 * 3]; !
+! !
+! int ____temp75Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp76[2 * 3]; !
+! !
+! int ____temp76Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp77[1 * 2]; !
+! !
+! int ____temp77Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp78[1 * 3]; !
+! !
+! int ____temp78Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp79[1 * 2]; !
+! !
+! int ____temp79Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp80[1 * 3]; !
+! !
+! int ____temp80Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp81[2 * 3]; !
+! !
+! int ____temp81Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp82[1 * 3]; !
+! !
+! int ____temp82Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans21; !
+! !
+! !
+! !
+! char __temp83[1*16] = {"******11*******"}; !
+! !
+! int ____temp83Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans22; !
+! !
+! !
+! !
+! double __temp84[1 * 2]; !
+! !
+! int ____temp84Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp85[1 * 2]; !
+! !
+! int ____temp85Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp86[2 * 2]; !
+! !
+! int ____temp86Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp87[1 * 2]; !
+! !
+! int ____temp87Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp88[3 * 2]; !
+! !
+! int ____temp88Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp89[1 * 2]; !
+! !
+! int ____temp89Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp90[1 * 2]; !
+! !
+! int ____temp90Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp91[2 * 2]; !
+! !
+! int ____temp91Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp92[1 * 2]; !
+! !
+! int ____temp92Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp93[3 * 2]; !
+! !
+! int ____temp93Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp94[3 * 2]; !
+! !
+! int ____temp94Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp95[3 * 1]; !
+! !
+! int ____temp95Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans23; !
+! !
+! !
+! !
+! double __temp96[1 * 2]; !
+! !
+! int ____temp96Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp97[1 * 3]; !
+! !
+! int ____temp97Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp98[1 * 2]; !
+! !
+! int ____temp98Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp99[1 * 3]; !
+! !
+! int ____temp99Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp100[2 * 3]; !
+! !
+! int ____temp100Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp101[1 * 2]; !
+! !
+! int ____temp101Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp102[1 * 3]; !
+! !
+! int ____temp102Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp103[1 * 2]; !
+! !
+! int ____temp103Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp104[1 * 3]; !
+! !
+! int ____temp104Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp105[2 * 3]; !
+! !
+! int ____temp105Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp106[1 * 2]; !
+! !
+! int ____temp106Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp107[1 * 3]; !
+! !
+! int ____temp107Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp108[1 * 2]; !
+! !
+! int ____temp108Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp109[1 * 3]; !
+! !
+! int ____temp109Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp110[2 * 3]; !
+! !
+! int ____temp110Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp111[2 * 3]; !
+! !
+! int ____temp111Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp112[2 * 3]; !
+! !
+! int ____temp112Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp113[1 * 3]; !
+! !
+! int ____temp113Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans24; !
+! !
+! !
+! !
+! char __temp114[1*16] = {"******12*******"}; !
+! !
+! int ____temp114Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans25; !
+! !
+! !
+! !
+! double __temp115[1 * 2]; !
+! !
+! int ____temp115Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp116[1 * 3]; !
+! !
+! int ____temp116Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp117[1 * 2]; !
+! !
+! int ____temp117Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp118[1 * 3]; !
+! !
+! int ____temp118Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp119[2 * 3]; !
+! !
+! int ____temp119Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp120[1 * 2]; !
+! !
+! int ____temp120Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp121[1 * 3]; !
+! !
+! int ____temp121Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp122[1 * 2]; !
+! !
+! int ____temp122Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp123[1 * 3]; !
+! !
+! int ____temp123Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp124[2 * 3]; !
+! !
+! int ____temp124Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp125[2 * 3]; !
+! !
+! int ____temp125Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp126[1 * 3]; !
+! !
+! int ____temp126Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans26; !
+! !
+! !
+! !
+! char __temp127[1*16] = {"******13*******"}; !
+! !
+! int ____temp127Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans27; !
+! !
+! !
+! !
+! double __temp128[1 * 2]; !
+! !
+! int ____temp128Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp129[1 * 2]; !
+! !
+! int ____temp129Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp130[2 * 2]; !
+! !
+! int ____temp130Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp131[1 * 2]; !
+! !
+! int ____temp131Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp132[3 * 2]; !
+! !
+! int ____temp132Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp133[3 * 2]; !
+! !
+! int ____temp133Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp134[1 * 2]; !
+! !
+! int ____temp134Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp135[1 * 2]; !
+! !
+! int ____temp135Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp136[2 * 2]; !
+! !
+! int ____temp136Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp137[1 * 2]; !
+! !
+! int ____temp137Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp138[3 * 2]; !
+! !
+! int ____temp138Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp139[3 * 1]; !
+! !
+! int ____temp139Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans28; !
+! !
+! !
+! !
+! char __temp140[1*16] = {"******14*******"}; !
+! !
+! int ____temp140Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans29; !
+! !
+! !
+! !
+! double __temp141[1 * 2]; !
+! !
+! int ____temp141Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp142[1 * 3]; !
+! !
+! int ____temp142Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp143[1 * 2]; !
+! !
+! int ____temp143Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp144[1 * 3]; !
+! !
+! int ____temp144Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp145[2 * 3]; !
+! !
+! int ____temp145Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp146[2 * 3]; !
+! !
+! int ____temp146Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp147[1 * 2]; !
+! !
+! int ____temp147Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp148[1 * 3]; !
+! !
+! int ____temp148Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp149[1 * 2]; !
+! !
+! int ____temp149Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp150[1 * 3]; !
+! !
+! int ____temp150Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp151[2 * 3]; !
+! !
+! int ____temp151Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp152[2 * 3]; !
+! !
+! int ____temp152Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp153[1 * 3]; !
+! !
+! int ____temp153Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans30; !
+! !
+! !
+! !
+! char __temp154[1*16] = {"******15*******"}; !
+! !
+! int ____temp154Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans31; !
+! !
+! !
+! !
+! double __temp155[1 * 2]; !
+! !
+! int ____temp155Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp156[1 * 2]; !
+! !
+! int ____temp156Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp157[2 * 2]; !
+! !
+! int ____temp157Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp158[1 * 2]; !
+! !
+! int ____temp158Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp159[3 * 2]; !
+! !
+! int ____temp159Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp160[3 * 2]; !
+! !
+! int ____temp160Size[2] = {3, 2};; !
+! !
+! !
+! !
+! double __temp161[1 * 2]; !
+! !
+! int ____temp161Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp162[1 * 2]; !
+! !
+! int ____temp162Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp163[2 * 2]; !
+! !
+! int ____temp163Size[2] = {2, 2};; !
+! !
+! !
+! !
+! double __temp164[1 * 2]; !
+! !
+! int ____temp164Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp165[3 * 2]; !
+! !
+! int ____temp165Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp166[3 * 2]; !
+! !
+! int ____temp166Size[2] = {3, 2};; !
+! !
+! !
+! !
+! doubleComplex __temp167[3 * 1]; !
+! !
+! int ____temp167Size[2] = {3, 1};; !
+! !
+! !
+! !
+! double ans32; !
+! !
+! !
+! !
+! char __temp168[1*16] = {"******16*******"}; !
+! !
+! int ____temp168Size[2] = {1,16}; !
+! !
+! !
+! !
+! double ans33; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf (4 , 5 )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0d0stdevfd0(4,5); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******1*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans2 = g2dispd0(__temp2, ____temp2Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6], [1 2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,6,__temp4); !
+! !
+! d0d0OpRcd2(1,2,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,3,__temp6); !
+! !
+! __temp7 = d2d2stdevfd0(__temp4, ____temp4Size,__temp6, ____temp6S!
+! ize); !
+! !
+! ans3 = d0dispd0(__temp7); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******2*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans4 = g2dispd0(__temp8, ____temp8Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf (4 , 5*%i )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp9 = d0z0OpStarz0(5,DoubleComplex(0,1)); !
+! !
+! __temp10 = d0z0stdevfz0(4,__temp9); !
+! !
+! ans5 = z0dispd0(__temp10); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******3*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans6 = g2dispd0(__temp11, ____temp11Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6], [1 2 3]*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,6,__temp13); !
+! !
+! d0d0OpRcd2(1,2,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,3,__temp15); !
+! !
+! d2z0OpStarz2(__temp15, ____temp15Size,DoubleComplex(0,1),__temp16)!
+! ; !
+! !
+! __temp17 = d2z2stdevfz0(__temp13, ____temp13Size,__temp16, ____te!
+! mp16Size); !
+! !
+! ans7 = z0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******4*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans8 = g2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp19); !
+! !
+! d2d0OpRcd2(__temp19, ____temp19Size,6,__temp20); !
+! !
+! d0d0OpRcd2(7,8,__temp21); !
+! !
+! d2d0OpRcd2(__temp21, ____temp21Size,9,__temp22); !
+! !
+! d2d2OpCcd2(__temp20, ____temp20Size,__temp22, ____temp22Size,__te!
+! mp23); !
+! !
+! d0d0OpRcd2(1,2,__temp24); !
+! !
+! d2d0OpRcd2(__temp24, ____temp24Size,3,__temp25); !
+! !
+! d0d0OpRcd2(4,5,__temp26); !
+! !
+! d2d0OpRcd2(__temp26, ____temp26Size,6,__temp27); !
+! !
+! d2d2OpCcd2(__temp25, ____temp25Size,__temp27, ____temp27Size,__te!
+! mp28); !
+! !
+! d2d2d0stdevfd2(__temp23, ____temp23Size,__temp28, ____temp28Size,!
+! 1,__temp29); !
+! !
+! ans9 = d2dispd0(__temp29, ____temp29Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******5*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans10 = g2dispd0(__temp30, ____temp30Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp31); !
+! !
+! d0d0OpRcd2(5,8,__temp32); !
+! !
+! d2d2OpCcd2(__temp31, ____temp31Size,__temp32, ____temp32Size,__te!
+! mp33); !
+! !
+! d0d0OpRcd2(6,9,__temp34); !
+! !
+! d2d2OpCcd2(__temp33, ____temp33Size,__temp34, ____temp34Size,__te!
+! mp35); !
+! !
+! d0d0OpRcd2(1,4,__temp36); !
+! !
+! d0d0OpRcd2(2,5,__temp37); !
+! !
+! d2d2OpCcd2(__temp36, ____temp36Size,__temp37, ____temp37Size,__te!
+! mp38); !
+! !
+! d0d0OpRcd2(3,6,__temp39); !
+! !
+! d2d2OpCcd2(__temp38, ____temp38Size,__temp39, ____temp39Size,__te!
+! mp40); !
+! !
+! d2d2d0stdevfd2(__temp35, ____temp35Size,__temp40, ____temp40Size,!
+! 2,__temp41); !
+! !
+! ans11 = d2dispd0(__temp41, ____temp41Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // complex !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******6*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans12 = g2dispd0(__temp42, ____temp42Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf (4 +4*%i , 5 )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp43 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp44 = d0z0OpPlusz0(4,__temp43); !
+! !
+! __temp45 = z0d0stdevfz0(__temp44,5); !
+! !
+! ans13 = z0dispd0(__temp45); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******7*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans14 = g2dispd0(__temp46, ____temp46Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp47 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp48 = d0z0OpStarz0(6,DoubleComplex(0,1)); !
+! !
+! __temp49 = d0z0OpPlusz0(5,__temp48); !
+! !
+! z0z0OpRcz2(__temp47,__temp49,__temp50); !
+! !
+! z2d0OpRcz2(__temp50, ____temp50Size,6,__temp51); !
+! !
+! d0d0OpRcd2(1,2,__temp52); !
+! !
+! d2d0OpRcd2(__temp52, ____temp52Size,3,__temp53); !
+! !
+! __temp54 = z2d2stdevfz0(__temp51, ____temp51Size,__temp53, ____te!
+! mp53Size); !
+! !
+! ans15 = z0dispd0(__temp54); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******8*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans16 = g2dispd0(__temp55, ____temp55Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf (4 +4*%i , 5*%i )) ; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp56 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp57 = d0z0OpPlusz0(4,__temp56); !
+! !
+! __temp58 = d0z0OpStarz0(5,DoubleComplex(0,1)); !
+! !
+! __temp59 = z0z0stdevfz0(__temp57,__temp58); !
+! !
+! ans17 = z0dispd0(__temp59); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("*******9*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans18 = g2dispd0(__temp60, ____temp60Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]*%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp61 = d0z0OpStarz0(4,DoubleComplex(0,1)); !
+! !
+! __temp62 = d0z0OpStarz0(6,DoubleComplex(0,1)); !
+! !
+! __temp63 = d0z0OpPlusz0(5,__temp62); !
+! !
+! z0z0OpRcz2(__temp61,__temp63,__temp64); !
+! !
+! z2d0OpRcz2(__temp64, ____temp64Size,6,__temp65); !
+! !
+! d0d0OpRcd2(1,2,__temp66); !
+! !
+! d2d0OpRcd2(__temp66, ____temp66Size,3,__temp67); !
+! !
+! d2z0OpStarz2(__temp67, ____temp67Size,DoubleComplex(0,1),__temp68)!
+! ; !
+! !
+! __temp69 = z2z2stdevfz0(__temp65, ____temp65Size,__temp68, ____te!
+! mp68Size); !
+! !
+! ans19 = z0dispd0(__temp69); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******10*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans20 = g2dispd0(__temp70, ____temp70Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp71); !
+! !
+! d2d0OpRcd2(__temp71, ____temp71Size,6,__temp72); !
+! !
+! d0d0OpRcd2(7,8,__temp73); !
+! !
+! d2d0OpRcd2(__temp73, ____temp73Size,9,__temp74); !
+! !
+! d2d2OpCcd2(__temp72, ____temp72Size,__temp74, ____temp74Size,__te!
+! mp75); !
+! !
+! d2z0OpStarz2(__temp75, ____temp75Size,DoubleComplex(0,1),__temp76)!
+! ; !
+! !
+! d0d0OpRcd2(1,2,__temp77); !
+! !
+! d2d0OpRcd2(__temp77, ____temp77Size,3,__temp78); !
+! !
+! d0d0OpRcd2(4,5,__temp79); !
+! !
+! d2d0OpRcd2(__temp79, ____temp79Size,6,__temp80); !
+! !
+! d2d2OpCcd2(__temp78, ____temp78Size,__temp80, ____temp80Size,__te!
+! mp81); !
+! !
+! z2d2d0stdevfz2(__temp76, ____temp76Size,__temp81, ____temp81Size,!
+! 1,__temp82); !
+! !
+! ans21 = z2dispd0(__temp82, ____temp82Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******11*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans22 = g2dispd0(__temp83, ____temp83Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp84); !
+! !
+! d0d0OpRcd2(5,8,__temp85); !
+! !
+! d2d2OpCcd2(__temp84, ____temp84Size,__temp85, ____temp85Size,__te!
+! mp86); !
+! !
+! d0d0OpRcd2(6,9,__temp87); !
+! !
+! d2d2OpCcd2(__temp86, ____temp86Size,__temp87, ____temp87Size,__te!
+! mp88); !
+! !
+! d0d0OpRcd2(1,4,__temp89); !
+! !
+! d0d0OpRcd2(2,5,__temp90); !
+! !
+! d2d2OpCcd2(__temp89, ____temp89Size,__temp90, ____temp90Size,__te!
+! mp91); !
+! !
+! d0d0OpRcd2(3,6,__temp92); !
+! !
+! d2d2OpCcd2(__temp91, ____temp91Size,__temp92, ____temp92Size,__te!
+! mp93); !
+! !
+! d2z0OpStarz2(__temp93, ____temp93Size,DoubleComplex(0,1),__temp94)!
+! ; !
+! !
+! d2z2d0stdevfz2(__temp88, ____temp88Size,__temp94, ____temp94Size,!
+! 2,__temp95); !
+! !
+! ans23 = z2dispd0(__temp95, ____temp95Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ;!
+! 4 5 6]*%i,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp96); !
+! !
+! d2d0OpRcd2(__temp96, ____temp96Size,6,__temp97); !
+! !
+! d0d0OpRcd2(7,8,__temp98); !
+! !
+! d2d0OpRcd2(__temp98, ____temp98Size,9,__temp99); !
+! !
+! d2d2OpCcd2(__temp97, ____temp97Size,__temp99, ____temp99Size,__te!
+! mp100); !
+! !
+! d0d0OpRcd2(1,2,__temp101); !
+! !
+! d2d0OpRcd2(__temp101, ____temp101Size,3,__temp102); !
+! !
+! d0d0OpRcd2(4,8,__temp103); !
+! !
+! d2d0OpRcd2(__temp103, ____temp103Size,9,__temp104); !
+! !
+! d2d2OpCcd2(__temp102, ____temp102Size,__temp104, ____temp104Size,!
+! __temp105); !
+! !
+! d0d0OpRcd2(1,2,__temp106); !
+! !
+! d2d0OpRcd2(__temp106, ____temp106Size,3,__temp107); !
+! !
+! d0d0OpRcd2(4,5,__temp108); !
+! !
+! d2d0OpRcd2(__temp108, ____temp108Size,6,__temp109); !
+! !
+! d2d2OpCcd2(__temp107, ____temp107Size,__temp109, ____temp109Size,!
+! __temp110); !
+! !
+! d2z0OpStarz2(__temp110, ____temp110Size,DoubleComplex(0,1),__temp1!
+! 11); !
+! !
+! d2z2OpPlusz2(__temp105, ____temp105Size,__temp111, ____temp111Siz!
+! e,__temp112); !
+! !
+! d2z2d0stdevfz2(__temp100, ____temp100Size,__temp112, ____temp112S!
+! ize,1,__temp113); !
+! !
+! ans24 = z2dispd0(__temp113, ____temp113Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******12*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans25 = g2dispd0(__temp114, ____temp114Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6]*%i,1)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp115); !
+! !
+! d2d0OpRcd2(__temp115, ____temp115Size,6,__temp116); !
+! !
+! d0d0OpRcd2(7,8,__temp117); !
+! !
+! d2d0OpRcd2(__temp117, ____temp117Size,9,__temp118); !
+! !
+! d2d2OpCcd2(__temp116, ____temp116Size,__temp118, ____temp118Size,!
+! __temp119); !
+! !
+! d0d0OpRcd2(1,2,__temp120); !
+! !
+! d2d0OpRcd2(__temp120, ____temp120Size,3,__temp121); !
+! !
+! d0d0OpRcd2(4,5,__temp122); !
+! !
+! d2d0OpRcd2(__temp122, ____temp122Size,6,__temp123); !
+! !
+! d2d2OpCcd2(__temp121, ____temp121Size,__temp123, ____temp123Size,!
+! __temp124); !
+! !
+! d2z0OpStarz2(__temp124, ____temp124Size,DoubleComplex(0,1),__temp1!
+! 25); !
+! !
+! d2z2d0stdevfz2(__temp119, ____temp119Size,__temp125, ____temp125S!
+! ize,1,__temp126); !
+! !
+! ans26 = z2dispd0(__temp126, ____temp126Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******13*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans27 = g2dispd0(__temp127, ____temp127Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp128); !
+! !
+! d0d0OpRcd2(5,8,__temp129); !
+! !
+! d2d2OpCcd2(__temp128, ____temp128Size,__temp129, ____temp129Size,!
+! __temp130); !
+! !
+! d0d0OpRcd2(6,9,__temp131); !
+! !
+! d2d2OpCcd2(__temp130, ____temp130Size,__temp131, ____temp131Size,!
+! __temp132); !
+! !
+! d2z0OpStarz2(__temp132, ____temp132Size,DoubleComplex(0,1),__temp1!
+! 33); !
+! !
+! d0d0OpRcd2(1,4,__temp134); !
+! !
+! d0d0OpRcd2(2,5,__temp135); !
+! !
+! d2d2OpCcd2(__temp134, ____temp134Size,__temp135, ____temp135Size,!
+! __temp136); !
+! !
+! d0d0OpRcd2(3,6,__temp137); !
+! !
+! d2d2OpCcd2(__temp136, ____temp136Size,__temp137, ____temp137Size,!
+! __temp138); !
+! !
+! z2d2d0stdevfz2(__temp133, ____temp133Size,__temp138, ____temp138S!
+! ize,2,__temp139); !
+! !
+! ans28 = z2dispd0(__temp139, ____temp139Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******14*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans29 = g2dispd0(__temp140, ____temp140Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));!
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,5,__temp141); !
+! !
+! d2d0OpRcd2(__temp141, ____temp141Size,6,__temp142); !
+! !
+! d0d0OpRcd2(7,8,__temp143); !
+! !
+! d2d0OpRcd2(__temp143, ____temp143Size,9,__temp144); !
+! !
+! d2d2OpCcd2(__temp142, ____temp142Size,__temp144, ____temp144Size,!
+! __temp145); !
+! !
+! d2z0OpStarz2(__temp145, ____temp145Size,DoubleComplex(0,1),__temp1!
+! 46); !
+! !
+! d0d0OpRcd2(1,2,__temp147); !
+! !
+! d2d0OpRcd2(__temp147, ____temp147Size,3,__temp148); !
+! !
+! d0d0OpRcd2(4,5,__temp149); !
+! !
+! d2d0OpRcd2(__temp149, ____temp149Size,6,__temp150); !
+! !
+! d2d2OpCcd2(__temp148, ____temp148Size,__temp150, ____temp150Size,!
+! __temp151); !
+! !
+! d2z0OpStarz2(__temp151, ____temp151Size,DoubleComplex(0,1),__temp1!
+! 52); !
+! !
+! z2z2d0stdevfz2(__temp146, ____temp146Size,__temp152, ____temp152S!
+! ize,1,__temp153); !
+! !
+! ans30 = z2dispd0(__temp153, ____temp153Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******15*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans31 = g2dispd0(__temp154, ____temp154Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));!
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(4,7,__temp155); !
+! !
+! d0d0OpRcd2(5,8,__temp156); !
+! !
+! d2d2OpCcd2(__temp155, ____temp155Size,__temp156, ____temp156Size,!
+! __temp157); !
+! !
+! d0d0OpRcd2(6,9,__temp158); !
+! !
+! d2d2OpCcd2(__temp157, ____temp157Size,__temp158, ____temp158Size,!
+! __temp159); !
+! !
+! d2z0OpStarz2(__temp159, ____temp159Size,DoubleComplex(0,1),__temp1!
+! 60); !
+! !
+! d0d0OpRcd2(1,4,__temp161); !
+! !
+! d0d0OpRcd2(2,5,__temp162); !
+! !
+! d2d2OpCcd2(__temp161, ____temp161Size,__temp162, ____temp162Size,!
+! __temp163); !
+! !
+! d0d0OpRcd2(3,6,__temp164); !
+! !
+! d2d2OpCcd2(__temp163, ____temp163Size,__temp164, ____temp164Size,!
+! __temp165); !
+! !
+! d2z0OpStarz2(__temp165, ____temp165Size,DoubleComplex(0,1),__temp1!
+! 66); !
+! !
+! z2z2d0stdevfz2(__temp160, ____temp160Size,__temp166, ____temp166S!
+! ize,2,__temp167); !
+! !
+! ans32 = z2dispd0(__temp167, ____temp167Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp ("******16*******"); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans33 = g2dispd0(__temp168, ____temp168Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Stdevf.sci.tst b/2.3-1/tests/unit_tests/double/test_Stdevf.sci.tst
new file mode 100644
index 00000000..54b9cd96
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Stdevf.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Stdevf.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Trace.sci b/2.3-1/tests/unit_tests/double/test_Trace.sci
new file mode 100644
index 00000000..5fde91d9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Trace.sci
@@ -0,0 +1,13 @@
+function test_Trace()
+
+ a = [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(trace(a));
+
+ b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(trace(b));
+
+
+ disp(trace(5));
+
+ disp(trace(%i));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Trace.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Trace.sci.dia.ref
new file mode 100644
index 00000000..0c2b972e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Trace.sci.dia.ref
@@ -0,0 +1,670 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Trace.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 6.1415927
+
+ 6.1415927i
+
+ 5.
+
+ i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Trace"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Trace/test_Trace_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Trace/test_Trace_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = [1 2 3; 4 %pi 5; 4.5 -3 2];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(trace(a));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2];
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(trace(b));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(trace(5));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(trace(%i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Trace() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp5[2 * 3]; !
+! !
+! int ____temp5Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp7[1 * 3]; !
+! !
+! int ____temp7Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double a[3 * 3]; !
+! !
+! int __aSize[2] = {3, 3};; !
+! !
+! !
+! !
+! double __temp8; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp9[1 * 2]; !
+! !
+! int ____temp9Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp10[1 * 3]; !
+! !
+! int ____temp10Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp11[1 * 2]; !
+! !
+! int ____temp11Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp12[1 * 3]; !
+! !
+! int ____temp12Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp13[2 * 3]; !
+! !
+! int ____temp13Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 2]; !
+! !
+! int ____temp14Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp15[1 * 3]; !
+! !
+! int ____temp15Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp16[3 * 3]; !
+! !
+! int ____temp16Size[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex b[3 * 3]; !
+! !
+! int __bSize[2] = {3, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp17; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = [1 2 3; 4 %pi 5; 4.5 -3 2]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d0d0OpRcd2(4,SCI2C_PI,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,5,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,__temp5)!
+! ; !
+! !
+! d0d0OpRcd2(4.5,-3,__temp6); !
+! !
+! d2d0OpRcd2(__temp6, ____temp6Size,2,__temp7); !
+! !
+! d2d2OpCcd2(__temp5, ____temp5Size,__temp7, ____temp7Size,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(trace(a)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp8 = d2traced0(a, __aSize); !
+! !
+! ans1 = d0dispd0(__temp8); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2]; !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,3,__temp10); !
+! !
+! d0d0OpRcd2(4,SCI2C_PI,__temp11); !
+! !
+! d2d0OpRcd2(__temp11, ____temp11Size,5,__temp12); !
+! !
+! d2d2OpCcd2(__temp10, ____temp10Size,__temp12, ____temp12Size,__te!
+! mp13); !
+! !
+! d0d0OpRcd2(4.5,-3,__temp14); !
+! !
+! d2d0OpRcd2(__temp14, ____temp14Size,2,__temp15); !
+! !
+! d2d2OpCcd2(__temp13, ____temp13Size,__temp15, ____temp15Size,__te!
+! mp16); !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),__temp16, ____temp16Size,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(trace(b)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = z2tracez0(b, __bSize); !
+! !
+! ans2 = z0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(trace(5)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d0traced0(5); !
+! !
+! ans3 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(trace(%i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0tracez0(DoubleComplex(0,1)); !
+! !
+! ans4 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Trace.sci.tst b/2.3-1/tests/unit_tests/double/test_Trace.sci.tst
new file mode 100644
index 00000000..b456e2ca
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Trace.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Trace.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_Type.sci b/2.3-1/tests/unit_tests/double/test_Type.sci
new file mode 100644
index 00000000..093f458e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Type.sci
@@ -0,0 +1,8 @@
+function test_Type()
+
+ disp(type(%pi));
+ disp(type(%pi + %i));
+ disp(type([%pi 4]));
+ disp(type([%pi %i]));
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_Type.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_Type.sci.dia.ref
new file mode 100644
index 00000000..3559470f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Type.sci.dia.ref
@@ -0,0 +1,463 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Type.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 1.
+
+ 1.
+
+ 1.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_Type"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Type/test_Type_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_Type/test_Type_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(type(%pi));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(type(%pi + %i));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(type([%pi 4]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(type([%pi %i]));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_Type() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp2; !
+! !
+! !
+! !
+! double __temp3; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp6[1 * 2]; !
+! !
+! int ____temp6Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp7; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(type(%pi)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp1 = d0typed0(SCI2C_PI); !
+! !
+! ans1 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(type(%pi + %i)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp2 = d0z0OpPlusz0(SCI2C_PI,DoubleComplex(0,1)); !
+! !
+! __temp3 = z0typed0(__temp2); !
+! !
+! ans2 = d0dispd0(__temp3); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(type([%pi 4])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(SCI2C_PI,4,__temp4); !
+! !
+! __temp5 = d2typed0(__temp4, ____temp4Size); !
+! !
+! ans3 = d0dispd0(__temp5); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(type([%pi %i])); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0z0OpRcz2(SCI2C_PI,DoubleComplex(0,1),__temp6); !
+! !
+! __temp7 = z2typed0(__temp6, ____temp6Size); !
+! !
+! ans4 = d0dispd0(__temp7); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_Type.sci.tst b/2.3-1/tests/unit_tests/double/test_Type.sci.tst
new file mode 100644
index 00000000..c25999d8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_Type.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_Type.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_abs.sci b/2.3-1/tests/unit_tests/double/test_abs.sci
new file mode 100644
index 00000000..ad820874
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_abs.sci
@@ -0,0 +1,11 @@
+function test_abs()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(abs(d0))
+ disp(abs(z0))
+ disp(abs(d2))
+ disp(abs(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_abs.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_abs.sci.dia.ref
new file mode 100644
index 00000000..a19109bb
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_abs.sci.dia.ref
@@ -0,0 +1,661 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_abs.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 4.4428829
+
+ 1. 2. 3. 4.
+ 5. 6. 7. 8.
+ 9. 10. 11. 12.
+ 13. 14. 15. 16.
+
+ 1.4142136 2.8284271 4.2426407 5.6568542
+ 7.0710678 8.4852814 9.8994949 11.313708
+ 12.727922 14.142136 15.556349 16.970563
+ 18.384776 19.79899 21.213203 22.627417
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_abs"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_abs/test_abs_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_abs/test_abs_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(abs(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(abs(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(abs(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(abs(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_abs() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(abs(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0absd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(abs(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0absd0(z0); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(abs(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2absd2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(abs(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2absd2(z2, __z2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_abs.sci.tst b/2.3-1/tests/unit_tests/double/test_abs.sci.tst
new file mode 100644
index 00000000..7e2defde
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_abs.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_abs.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_acos.sci b/2.3-1/tests/unit_tests/double/test_acos.sci
new file mode 100644
index 00000000..7d70675f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_acos.sci
@@ -0,0 +1,11 @@
+function test_acos()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ acos(d0);
+ acos(d2);
+ acos(z0);
+ acos(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_acos.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_acos.sci.dia.ref
new file mode 100644
index 00000000..a255bab6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_acos.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_acos.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_acos"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_acos/test_acos_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_acos/test_acos_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: acos(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: acos(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: acos(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: acos(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_acos() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: acos(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0acosd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: acos(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2acosd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: acos(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0acosz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: acos(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2acosz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_acos.sci.tst b/2.3-1/tests/unit_tests/double/test_acos.sci.tst
new file mode 100644
index 00000000..43bbba42
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_acos.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_acos.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_acosh.sci b/2.3-1/tests/unit_tests/double/test_acosh.sci
new file mode 100644
index 00000000..a4917208
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_acosh.sci
@@ -0,0 +1,11 @@
+function test_acosh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(acosh(d0));
+ disp(acosh(d2));
+ disp(acosh(z0));
+ disp(acosh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_acosh.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_acosh.sci.dia.ref
new file mode 100644
index 00000000..04253e53
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_acosh.sci.dia.ref
@@ -0,0 +1,671 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_acosh.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.8115263
+
+ 0. 1.3169579 1.7627472 2.0634371
+ 2.0634371 2.2924317 2.4778887 2.7686594
+ 2.887271 2.9932228 3.0889699 3.1763132
+ 3.256614 3.3309266 3.4000844 3.4647579
+
+ 2.184691 + 0.7980565i
+
+
+ column 1 to 2
+
+ 1.0612751 + 0.9045569i 1.7343245 + 0.8165472i
+ 2.4261067 + 0.7932091i 2.6491962 + 0.7903977i
+ 3.2369489 + 0.7869414i 3.3423082 + 0.7866482i
+ 3.6046709 + 0.7861378i 3.6787787 + 0.7860359i
+
+ column 3 to 4
+
+ 2.1386221 + 0.7992781i 2.4261067 + 0.7932091i
+ 2.8314983 + 0.7888702i 3.119168 + 0.7873513i
+ 3.4376176 + 0.7864312i 3.5246286 + 0.7862662i
+ 3.7477714 + 0.7859537i 3.8123099 + 0.7858864i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_acosh"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_acosh/test_acosh_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_acosh/test_acosh_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(acosh(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(acosh(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(acosh(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(acosh(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_acosh() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(acosh(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0acoshd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(acosh(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2acoshd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(acosh(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0acoshz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(acosh(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2acoshz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_acosh.sci.tst b/2.3-1/tests/unit_tests/double/test_acosh.sci.tst
new file mode 100644
index 00000000..12e0137c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_acosh.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_acosh.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_asin.sci b/2.3-1/tests/unit_tests/double/test_asin.sci
new file mode 100644
index 00000000..371af42b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_asin.sci
@@ -0,0 +1,11 @@
+function test_asin()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(asin(d0));
+ disp(asin(d2));
+ disp(asin(z0));
+ disp(asin(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_asin.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_asin.sci.dia.ref
new file mode 100644
index 00000000..4bbfc5f6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_asin.sci.dia.ref
@@ -0,0 +1,681 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_asin.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.5707963 + 1.8115263i
+
+
+ column 1 to 2
+
+ 1.5707963 1.5707963 + 1.3169579i
+ 1.5707963 + 2.0634371i 1.5707963 + 2.2924317i
+ 1.5707963 + 2.887271i 1.5707963 + 2.9932228i
+ 1.5707963 + 3.256614i 1.5707963 + 3.3309266i
+
+ column 3 to 4
+
+ 1.5707963 + 1.7627472i 1.5707963 + 2.0634371i
+ 1.5707963 + 2.4778887i 1.5707963 + 2.7686594i
+ 1.5707963 + 3.0889699i 1.5707963 + 3.1763132i
+ 1.5707963 + 3.4000844i 1.5707963 + 3.4647579i
+
+ 0.7727398 + 2.184691i
+
+
+ column 1 to 2
+
+ 0.6662394 + 1.0612751i 0.7542491 + 1.7343245i
+ 0.7775873 + 2.4261067i 0.7803986 + 2.6491962i
+ 0.7838550 + 3.2369489i 0.7841482 + 3.3423082i
+ 0.7846585 + 3.6046709i 0.7847604 + 3.6787787i
+
+ column 3 to 4
+
+ 0.7715182 + 2.1386221i 0.7775873 + 2.4261067i
+ 0.7819261 + 2.8314983i 0.7834451 + 3.119168i
+ 0.7843651 + 3.4376176i 0.7845301 + 3.5246286i
+ 0.7848426 + 3.7477714i 0.7849099 + 3.8123099i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_asin"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_asin/test_asin_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_asin/test_asin_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(asin(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(asin(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(asin(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(asin(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_asin() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(asin(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0asind0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(asin(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2asind2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(asin(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0asinz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(asin(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2asinz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_asin.sci.tst b/2.3-1/tests/unit_tests/double/test_asin.sci.tst
new file mode 100644
index 00000000..c87ff1b6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_asin.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_asin.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_asinh.sci b/2.3-1/tests/unit_tests/double/test_asinh.sci
new file mode 100644
index 00000000..d7c152dc
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_asinh.sci
@@ -0,0 +1,11 @@
+function test_asinh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ asinh(d0);
+ asinh(d2);
+ asinh(z0);
+ asinh(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_asinh.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_asinh.sci.dia.ref
new file mode 100644
index 00000000..821ca9e2
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_asinh.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_asinh.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_asinh"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_asinh/test_asinh_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_asinh/test_asinh_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: asinh(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: asinh(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: asinh(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: asinh(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_asinh() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: asinh(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0asinhd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: asinh(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2asinhd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: asinh(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0asinhz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: asinh(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2asinhz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_asinh.sci.tst b/2.3-1/tests/unit_tests/double/test_asinh.sci.tst
new file mode 100644
index 00000000..67098ec4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_asinh.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_asinh.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_atan.sci b/2.3-1/tests/unit_tests/double/test_atan.sci
new file mode 100644
index 00000000..9f309432
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_atan.sci
@@ -0,0 +1,14 @@
+function test_atan()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(atan(d0));
+ disp(atan(d2));
+ disp(atan(z0));
+ disp(atan(z2));
+
+ disp(atan(d0,d0));
+ disp(atan(d2,d2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_atan.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_atan.sci.dia.ref
new file mode 100644
index 00000000..1878019d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_atan.sci.dia.ref
@@ -0,0 +1,758 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_atan.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.2626273
+
+ 0.7853982 1.1071487 1.2490458 1.3258177
+ 1.3258177 1.3734008 1.4056476 1.4464413
+ 1.4601391 1.4711277 1.4801364 1.4876551
+ 1.4940244 1.4994889 1.5042282 1.5083775
+
+ 1.4090383 + 0.1563887i
+
+
+ column 1 to 2
+
+ 1.017222 + 0.4023595i 1.3112233 + 0.2388779i
+ 1.4445192 + 0.1236741i 1.4701378 + 0.0993254i
+ 1.5151269 + 0.0554408i 1.5207132 + 0.0499164i
+ 1.5322969 + 0.0384235i 1.5350517 + 0.0356839i
+
+ column 3 to 4
+
+ 1.40115 + 0.1634816i 1.4445192 + 0.1236741i
+ 1.4870804 + 0.0829443i 1.5081343 + 0.0623365i
+ 1.5252793 + 0.0453918i 1.5290815 + 0.0416183i
+ 1.5374383 + 0.0333086i 1.539526 + 0.0312296i
+
+ 0.7853982
+
+ 0.7853982 0.7853982 0.7853982 0.7853982
+ 0.7853982 0.7853982 0.7853982 0.7853982
+ 0.7853982 0.7853982 0.7853982 0.7853982
+ 0.7853982 0.7853982 0.7853982 0.7853982
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_atan"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_atan/test_atan_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_atan/test_atan_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atan(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atan(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atan(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atan(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atan(d0,d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atan(d2,d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_atan() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atan(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0atand0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atan(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2atand2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atan(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0atanz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atan(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2atanz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atan(d0,d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0atand0(d0,d0); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atan(d2,d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d2atand2(d2, __d2Size,d2, __d2Size,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_atan.sci.tst b/2.3-1/tests/unit_tests/double/test_atan.sci.tst
new file mode 100644
index 00000000..7adecd10
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_atan.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_atan.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_atanh.sci b/2.3-1/tests/unit_tests/double/test_atanh.sci
new file mode 100644
index 00000000..eb163a1b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_atanh.sci
@@ -0,0 +1,11 @@
+function test_atanh()
+ d0 = %pi
+ d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(atanh(d0));
+ disp(atanh(d2));
+ disp(atanh(z0));
+ disp(atanh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_atanh.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_atanh.sci.dia.ref
new file mode 100644
index 00000000..ed859a85
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_atanh.sci.dia.ref
@@ -0,0 +1,681 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_atanh.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.3297653 - 1.5707963i
+
+
+ column 1 to 2
+
+ 0.5493061 - 1.5707963i 0.5493061 - 1.5707963i
+ 0.2554128 - 1.5707963i 0.2027326 - 1.5707963i
+ 0.1115718 - 1.5707963i 0.1003353 - 1.5707963i
+ 0.0770753 - 1.5707963i 0.0715504 - 1.5707963i
+
+ column 3 to 4
+
+ 0.3465736 - 1.5707963i 0.2554128 - 1.5707963i
+ 0.1682361 - 1.5707963i 0.1256572 - 1.5707963i
+ 0.0911608 - 1.5707963i 0.0835270 - 1.5707963i
+ 0.0667657 - 1.5707963i 0.0625816 - 1.5707963i
+
+ 0.1563887 + 1.4090383i
+
+
+ column 1 to 2
+
+ 0.2388779 + 1.3112233i 0.2388779 + 1.3112233i
+ 0.1236741 + 1.4445192i 0.0993254 + 1.4701378i
+ 0.0554408 + 1.5151269i 0.0499164 + 1.5207132i
+ 0.0384235 + 1.5322969i 0.0356839 + 1.5350517i
+
+ column 3 to 4
+
+ 0.1634816 + 1.40115i 0.1236741 + 1.4445192i
+ 0.0829443 + 1.4870804i 0.0623365 + 1.5081343i
+ 0.0453918 + 1.5252793i 0.0416183 + 1.5290815i
+ 0.0333086 + 1.5374383i 0.0312296 + 1.539526i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_atanh"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_atanh/test_atanh_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_atanh/test_atanh_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atanh(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atanh(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atanh(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(atanh(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_atanh() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(2,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atanh(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0atanhd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atanh(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2atanhd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atanh(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0atanhz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(atanh(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2atanhz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_atanh.sci.tst b/2.3-1/tests/unit_tests/double/test_atanh.sci.tst
new file mode 100644
index 00000000..c15ae27d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_atanh.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_atanh.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_ceil.sci b/2.3-1/tests/unit_tests/double/test_ceil.sci
new file mode 100644
index 00000000..f8c31cc8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_ceil.sci
@@ -0,0 +1,11 @@
+function test_ceil()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ ceil(d0);
+ ceil(d2);
+ ceil(z0);
+ ceil(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_ceil.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_ceil.sci.dia.ref
new file mode 100644
index 00000000..d742ed92
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_ceil.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_ceil.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_ceil"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_ceil/test_ceil_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_ceil/test_ceil_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ceil(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ceil(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ceil(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: ceil(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_ceil() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ceil(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0ceild0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ceil(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2ceild2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ceil(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0ceilz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: ceil(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2ceilz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_ceil.sci.tst b/2.3-1/tests/unit_tests/double/test_ceil.sci.tst
new file mode 100644
index 00000000..da75d851
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_ceil.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_ceil.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_chol.sci b/2.3-1/tests/unit_tests/double/test_chol.sci
new file mode 100644
index 00000000..7720af09
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_chol.sci
@@ -0,0 +1,11 @@
+function test_chol()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(chol(d0));
+ disp(chol(d2*d2'));
+ disp(chol(z0));
+ disp(chol(z2*z2'));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_chol.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_chol.sci.dia.ref
new file mode 100644
index 00000000..fb1f4925
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_chol.sci.dia.ref
@@ -0,0 +1,693 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_chol.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.7724539
+
+ 5.4772256 11.684748 20.08316 27.386128
+ 0. 2.113449 6.308803 9.4632045
+ 0. 0. 1.6928295 2.5392442
+ 0. 0. 0. 0.0000003
+
+ 1.7724539
+
+ 7.7459667 16.524729 28.401878 38.729833
+ 0 2.9888682 8.9219947 13.382992
+ 0 0 2.3940224 3.5910336
+ 0 0 0 0.0000004
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_chol"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_chol/test_chol_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_chol/test_chol_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(chol(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(chol(d2*d2'));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(chol(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(chol(z2*z2'));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_chol() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp21; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp23[4 * 4]; !
+! !
+! int ____temp23Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp24[4 * 4]; !
+! !
+! int ____temp24Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(chol(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0chold0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(chol(d2*d2')); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2OpApexd2(d2, __d2Size,__temp18); !
+! !
+! d2d2OpStard2(d2, __d2Size,__temp18, ____temp18Size,__temp19); !
+! !
+! d2chold2(__temp19, ____temp19Size,__temp20); !
+! !
+! ans2 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(chol(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = z0cholz0(z0); !
+! !
+! ans3 = z0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(chol(z2*z2')); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2OpApexz2(z2, __z2Size,__temp22); !
+! !
+! z2z2OpStarz2(z2, __z2Size,__temp22, ____temp22Size,__temp23); !
+! !
+! z2cholz2(__temp23, ____temp23Size,__temp24); !
+! !
+! ans4 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_chol.sci.tst b/2.3-1/tests/unit_tests/double/test_chol.sci.tst
new file mode 100644
index 00000000..8adfc44e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_chol.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_chol.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_conj.sci b/2.3-1/tests/unit_tests/double/test_conj.sci
new file mode 100644
index 00000000..839d4c2c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_conj.sci
@@ -0,0 +1,11 @@
+function test_conj()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ conj(d0);
+ conj(d2);
+ conj(z0);
+ conj(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_conj.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_conj.sci.dia.ref
new file mode 100644
index 00000000..54686b93
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_conj.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_conj.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_conj"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_conj/test_conj_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_conj/test_conj_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: conj(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: conj(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: conj(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: conj(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_conj() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: conj(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0conjd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: conj(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2conjd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: conj(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0conjz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: conj(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2conjz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_conj.sci.tst b/2.3-1/tests/unit_tests/double/test_conj.sci.tst
new file mode 100644
index 00000000..b5fb2d1f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_conj.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_conj.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_cos.sci b/2.3-1/tests/unit_tests/double/test_cos.sci
new file mode 100644
index 00000000..16ce91d3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_cos.sci
@@ -0,0 +1,11 @@
+function test_cos()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ cos(d0);
+ cos(d2);
+ cos(z0);
+ cos(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_cos.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_cos.sci.dia.ref
new file mode 100644
index 00000000..dc4d3922
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_cos.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_cos.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_cos"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_cos/test_cos_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_cos/test_cos_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cos(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cos(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cos(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cos(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_cos() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cos(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0cosd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cos(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2cosd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cos(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0cosz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cos(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2cosz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_cos.sci.tst b/2.3-1/tests/unit_tests/double/test_cos.sci.tst
new file mode 100644
index 00000000..643c04a0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_cos.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_cos.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_cosh.sci b/2.3-1/tests/unit_tests/double/test_cosh.sci
new file mode 100644
index 00000000..92512be5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_cosh.sci
@@ -0,0 +1,11 @@
+function test_cosh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ cosh(d0);
+ cosh(d2);
+ cosh(z0);
+ cosh(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_cosh.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_cosh.sci.dia.ref
new file mode 100644
index 00000000..df5d0047
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_cosh.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_cosh.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_cosh"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_cosh/test_cosh_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_cosh/test_cosh_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cosh(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cosh(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cosh(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: cosh(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_cosh() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cosh(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0coshd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cosh(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2coshd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cosh(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0coshz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: cosh(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2coshz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_cosh.sci.tst b/2.3-1/tests/unit_tests/double/test_cosh.sci.tst
new file mode 100644
index 00000000..84581d45
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_cosh.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_cosh.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_exp.sci b/2.3-1/tests/unit_tests/double/test_exp.sci
new file mode 100644
index 00000000..35fad912
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_exp.sci
@@ -0,0 +1,11 @@
+function test_exp()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ exp(d0);
+ exp(d2);
+ exp(z0);
+ exp(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_exp.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_exp.sci.dia.ref
new file mode 100644
index 00000000..228956b5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_exp.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_exp.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_exp"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_exp/test_exp_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_exp/test_exp_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: exp(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: exp(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: exp(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: exp(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_exp() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: exp(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0expd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: exp(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2expd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: exp(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0expz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: exp(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2expz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_exp.sci.tst b/2.3-1/tests/unit_tests/double/test_exp.sci.tst
new file mode 100644
index 00000000..fdbb58ba
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_exp.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_exp.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_eye.sci b/2.3-1/tests/unit_tests/double/test_eye.sci
new file mode 100644
index 00000000..1241e86d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_eye.sci
@@ -0,0 +1,14 @@
+function test_eye()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(eye(d0))
+ disp(eye(z0))
+ disp(eye(d2))
+ disp(eye(z2))
+ //disp(eye(0,0)) // ! sci2c does not manage [] !
+ disp(eye(1,1))
+ disp(eye(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_eye.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_eye.sci.dia.ref
new file mode 100644
index 00000000..3a8bcae8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_eye.sci.dia.ref
@@ -0,0 +1,747 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_eye.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 1.
+
+ 1. 0. 0. 0.
+ 0. 1. 0. 0.
+ 0. 0. 1. 0.
+ 0. 0. 0. 1.
+
+ 1. 0. 0. 0.
+ 0. 1. 0. 0.
+ 0. 0. 1. 0.
+ 0. 0. 0. 1.
+
+ 1.
+
+ 1. 0. 0.
+ 0. 1. 0.
+ 0. 0. 1.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_eye"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_eye/test_eye_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_eye/test_eye_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(eye(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(eye(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(eye(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(eye(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(eye(0,0)) // ! sci2c does not manage [] !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(eye(1,1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(eye(d0,d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_eye() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[3 * 3]; !
+! !
+! int ____temp22Size[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(eye(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0eyed0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(eye(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0eyez0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(eye(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2eyed2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(eye(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2eyez2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(eye(0,0)) // ! sci2c does not manage [] ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(eye(1,1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0eyed0(1,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(eye(d0,d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0eyed2(d0,d0,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_eye.sci.tst b/2.3-1/tests/unit_tests/double/test_eye.sci.tst
new file mode 100644
index 00000000..f6f23220
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_eye.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_eye.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_fix.sci b/2.3-1/tests/unit_tests/double/test_fix.sci
new file mode 100644
index 00000000..d484c439
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_fix.sci
@@ -0,0 +1,11 @@
+function test_fix()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ fix(d0);
+ fix(d2);
+ fix(z0);
+ fix(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_fix.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_fix.sci.dia.ref
new file mode 100644
index 00000000..8eba7631
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_fix.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_fix.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_fix"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_fix/test_fix_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_fix/test_fix_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: fix(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: fix(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: fix(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: fix(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_fix() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: fix(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0fixd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: fix(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2fixd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: fix(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0fixz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: fix(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2fixz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_fix.sci.tst b/2.3-1/tests/unit_tests/double/test_fix.sci.tst
new file mode 100644
index 00000000..cd7ca479
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_fix.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_fix.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_floor.sci b/2.3-1/tests/unit_tests/double/test_floor.sci
new file mode 100644
index 00000000..d9bbc8d5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_floor.sci
@@ -0,0 +1,11 @@
+function test_floor()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ floor(d0);
+ floor(d2);
+ floor(z0);
+ floor(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_floor.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_floor.sci.dia.ref
new file mode 100644
index 00000000..5f4beec3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_floor.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_floor.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_floor"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_floor/test_floor_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_floor/test_floor_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: floor(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: floor(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: floor(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: floor(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_floor() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: floor(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0floord0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: floor(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2floord2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: floor(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0floorz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: floor(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2floorz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_floor.sci.tst b/2.3-1/tests/unit_tests/double/test_floor.sci.tst
new file mode 100644
index 00000000..e0fddf04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_floor.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_floor.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_imag.sci b/2.3-1/tests/unit_tests/double/test_imag.sci
new file mode 100644
index 00000000..b89fec27
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_imag.sci
@@ -0,0 +1,11 @@
+function test_imag()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(imag(d0))
+ disp(imag(z0))
+ disp(imag(d2))
+ disp(imag(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_imag.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_imag.sci.dia.ref
new file mode 100644
index 00000000..2231b94c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_imag.sci.dia.ref
@@ -0,0 +1,661 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_imag.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.
+
+ 3.1415927
+
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+
+ 1. 2. 3. 4.
+ 5. 6. 7. 8.
+ 9. 10. 11. 12.
+ 13. 14. 15. 16.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_imag"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_imag/test_imag_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_imag/test_imag_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(imag(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(imag(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(imag(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(imag(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_imag() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(imag(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0imagd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(imag(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0imagd0(z0); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(imag(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2imagd2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(imag(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2imagd2(z2, __z2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_imag.sci.tst b/2.3-1/tests/unit_tests/double/test_imag.sci.tst
new file mode 100644
index 00000000..b5e106af
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_imag.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_imag.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_int.sci b/2.3-1/tests/unit_tests/double/test_int.sci
new file mode 100644
index 00000000..9afdb3ce
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_int.sci
@@ -0,0 +1,11 @@
+function test_int()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ int(d0);
+ int(d2);
+ int(z0);
+ int(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_int.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_int.sci.dia.ref
new file mode 100644
index 00000000..2dc5b0db
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_int.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_int.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_int"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_int/test_int_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_int/test_int_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: int(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: int(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: int(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: int(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_int() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: int(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0intd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: int(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2intd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: int(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0intz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: int(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2intz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_int.sci.tst b/2.3-1/tests/unit_tests/double/test_int.sci.tst
new file mode 100644
index 00000000..45a01690
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_int.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_int.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_inv.sci b/2.3-1/tests/unit_tests/double/test_inv.sci
new file mode 100644
index 00000000..020c1821
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_inv.sci
@@ -0,0 +1,11 @@
+function test_inv()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ inv(d0);
+ inv(d2);
+ inv(z0);
+ inv(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_inv.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_inv.sci.dia.ref
new file mode 100644
index 00000000..82c4c521
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_inv.sci.dia.ref
@@ -0,0 +1,629 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_inv.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+Warning :
+matrix is close to singular or badly scaled. rcond = 1.8293D-38
+
+Warning :
+matrix is close to singular or badly scaled. rcond = 1.1102D-17
+
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_inv"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_inv/test_inv_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_inv/test_inv_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: inv(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: inv(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: inv(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: inv(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_inv() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: inv(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0invd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: inv(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2invd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: inv(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0invz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: inv(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2invz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_inv.sci.tst b/2.3-1/tests/unit_tests/double/test_inv.sci.tst
new file mode 100644
index 00000000..66b4fd2e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_inv.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_inv.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_isnan.sci b/2.3-1/tests/unit_tests/double/test_isnan.sci
new file mode 100644
index 00000000..e0370562
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_isnan.sci
@@ -0,0 +1,11 @@
+function test_isnan()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(isnan(d0))
+ disp(isnan(d2))
+ disp(isnan(z0))
+ disp(isnan(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_isnan.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_isnan.sci.dia.ref
new file mode 100644
index 00000000..e12db381
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_isnan.sci.dia.ref
@@ -0,0 +1,661 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_isnan.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ F
+
+ F F F F
+ F F F F
+ F F F F
+ F F F F
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_isnan"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_isnan/test_isnan_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_isnan/test_isnan_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(isnan(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(isnan(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(isnan(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(isnan(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_isnan() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(isnan(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0isnand0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(isnan(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2isnand2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(isnan(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0isnand0(z0); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(isnan(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2isnand2(z2, __z2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_isnan.sci.tst b/2.3-1/tests/unit_tests/double/test_isnan.sci.tst
new file mode 100644
index 00000000..6fe4c068
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_isnan.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_isnan.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_log.sci b/2.3-1/tests/unit_tests/double/test_log.sci
new file mode 100644
index 00000000..d3967899
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log.sci
@@ -0,0 +1,11 @@
+function test_log()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(log(d0));
+ disp(log(d2));
+ disp(log(z0));
+ disp(log(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_log.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_log.sci.dia.ref
new file mode 100644
index 00000000..2441352f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log.sci.dia.ref
@@ -0,0 +1,671 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_log.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.1447299
+
+ 0. 0.6931472 1.0986123 1.3862944
+ 1.3862944 1.6094379 1.7917595 2.0794415
+ 2.1972246 2.3025851 2.3978953 2.4849066
+ 2.5649494 2.6390573 2.7080502 2.7725887
+
+ 1.4913035 + 0.7853982i
+
+
+ column 1 to 2
+
+ 0.3465736 + 0.7853982i 1.0397208 + 0.7853982i
+ 1.732868 + 0.7853982i 1.9560115 + 0.7853982i
+ 2.5437982 + 0.7853982i 2.6491587 + 0.7853982i
+ 2.9115229 + 0.7853982i 2.9856309 + 0.7853982i
+
+ column 3 to 4
+
+ 1.4451859 + 0.7853982i 1.732868 + 0.7853982i
+ 2.1383331 + 0.7853982i 2.4260151 + 0.7853982i
+ 2.7444689 + 0.7853982i 2.8314802 + 0.7853982i
+ 3.0546238 + 0.7853982i 3.1191623 + 0.7853982i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_log"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_log/test_log_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_log/test_log_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_log() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0logd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2logd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0logz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2logz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_log.sci.tst b/2.3-1/tests/unit_tests/double/test_log.sci.tst
new file mode 100644
index 00000000..4a0332ed
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_log.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_log10.sci b/2.3-1/tests/unit_tests/double/test_log10.sci
new file mode 100644
index 00000000..e4ef7b68
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log10.sci
@@ -0,0 +1,11 @@
+ function test_log10()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(log10(d0));
+ disp(log10(d2));
+ disp(log10(z0));
+ disp(log10(z2));
+ endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_log10.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_log10.sci.dia.ref
new file mode 100644
index 00000000..b22b0ded
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log10.sci.dia.ref
@@ -0,0 +1,671 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_log10.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.4971499
+
+ 0. 0.30103 0.4771213 0.6020600
+ 0.6020600 0.69897 0.7781513 0.9030900
+ 0.9542425 1. 1.0413927 1.0791812
+ 1.1139434 1.146128 1.1760913 1.20412
+
+ 0.6476649 + 0.3410941i
+
+
+ column 1 to 2
+
+ 0.150515 + 0.3410941i 0.4515450 + 0.3410941i
+ 0.7525750 + 0.3410941i 0.849485 + 0.3410941i
+ 1.1047575 + 0.3410941i 1.150515 + 0.3410941i
+ 1.2644584 + 0.3410941i 1.296643 + 0.3410941i
+
+ column 3 to 4
+
+ 0.6276363 + 0.3410941i 0.7525750 + 0.3410941i
+ 0.9286662 + 0.3410941i 1.053605 + 0.3410941i
+ 1.1919077 + 0.3410941i 1.2296962 + 0.3410941i
+ 1.3266063 + 0.3410941i 1.354635 + 0.3410941i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_log10"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_log10/test_log10_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_log10/test_log10_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log10(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log10(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log10(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log10(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_log10() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log10(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0log10d0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log10(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2log10d2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log10(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0log10z0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log10(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2log10z2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_log10.sci.tst b/2.3-1/tests/unit_tests/double/test_log10.sci.tst
new file mode 100644
index 00000000..3988cef5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log10.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_log10.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_log1p.sci b/2.3-1/tests/unit_tests/double/test_log1p.sci
new file mode 100644
index 00000000..cf02842c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log1p.sci
@@ -0,0 +1,12 @@
+function test_log1p()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(log1p(d0));
+ disp(log1p(d2));
+ //disp(log1p(z0)); // ! Not Implemented in Scilab !
+ //disp(log1p(z2)); // ! Not Implemented in Scilab !
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_log1p.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_log1p.sci.dia.ref
new file mode 100644
index 00000000..4e008c79
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log1p.sci.dia.ref
@@ -0,0 +1,646 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_log1p.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.4210804
+
+ 0.6931472 1.0986123 1.3862944 1.6094379
+ 1.6094379 1.7917595 1.9459101 2.1972246
+ 2.3025851 2.3978953 2.4849066 2.5649494
+ 2.6390573 2.7080502 2.7725887 2.8332133
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_log1p"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_log1p/test_log1p_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_log1p/test_log1p_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log1p(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(log1p(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(log1p(z0)); // ! Not Implemented in Scilab !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(log1p(z2)); // ! Not Implemented in Scilab !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_log1p() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log1p(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0log1pd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(log1p(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2log1pd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(log1p(z0)); // ! Not Implemented in Scilab ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(log1p(z2)); // ! Not Implemented in Scilab ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_log1p.sci.tst b/2.3-1/tests/unit_tests/double/test_log1p.sci.tst
new file mode 100644
index 00000000..46dfedc1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_log1p.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_log1p.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_max.sci b/2.3-1/tests/unit_tests/double/test_max.sci
new file mode 100644
index 00000000..ab601f1e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_max.sci
@@ -0,0 +1,32 @@
+function test_max()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(max(d0))
+ //disp(max(z0))
+ disp(max(d2))
+ //disp(max(z2))
+
+ disp(max(d0, 1))
+ //disp(max(z0, 1))
+ disp(max(d2, 1))
+ //disp(max(z2, 1))
+
+ disp(max(d0, 2))
+ //disp(max(z0, 2))
+ disp(max(d2, 2))
+ //disp(max(z2, 2))
+
+// disp(max(d0, 'r'))
+// disp(max(z0, 'r'))
+// disp(max(d2, 'r'))
+// disp(max(z2, 'r'))
+
+// disp(max(d0, 'c'))
+// disp(max(z0, 'c'))
+// disp(max(d2, 'c'))
+// disp(max(z2, 'c'))
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_max.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_max.sci.dia.ref
new file mode 100644
index 00000000..13639a72
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_max.sci.dia.ref
@@ -0,0 +1,1067 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_max.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 16.
+
+ 3.1415927
+
+ 1. 2. 3. 4.
+ 5. 6. 7. 8.
+ 9. 10. 11. 12.
+ 13. 14. 15. 16.
+
+ 3.1415927
+
+ 2. 2. 3. 4.
+ 5. 6. 7. 8.
+ 9. 10. 11. 12.
+ 13. 14. 15. 16.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_max"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_max/test_max_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_max/test_max_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(max(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(max(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(max(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(max(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(max(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(max(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(max(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(max(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(max(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(max(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(max(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(max(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(max(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_max() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(max(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0maxd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(max(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(max(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d2maxd0(d2, __d2Size); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(max(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(max(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0d0maxd0(d0,1); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(max(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(max(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0maxd2(d2, __d2Size,1,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(max(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(max(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0maxd0(d0,2); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(max(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(max(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0maxd2(d2, __d2Size,2,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(max(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(max(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_max.sci.tst b/2.3-1/tests/unit_tests/double/test_max.sci.tst
new file mode 100644
index 00000000..b6b8ca87
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_max.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_max.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_mean.sci b/2.3-1/tests/unit_tests/double/test_mean.sci
new file mode 100644
index 00000000..b0b3434a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_mean.sci
@@ -0,0 +1,31 @@
+function test_mean()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(mean(d0))
+ disp(mean(z0))
+ disp(mean(d2))
+ disp(mean(z2))
+
+ disp(mean(d0, 1))
+ disp(mean(z0, 1))
+ disp(mean(d2, 1))
+ disp(mean(z2, 1))
+
+ disp(mean(d0, 2))
+ disp(mean(z0, 2))
+ disp(mean(d2, 2))
+ disp(mean(z2, 2))
+
+// disp(mean(d0, 'r'))
+// disp(mean(z0, 'r'))
+// disp(mean(d2, 'r'))
+// disp(mean(z2, 'r'))
+
+// disp(mean(d0, 'c'))
+// disp(mean(z0, 'c'))
+// disp(mean(d2, 'c'))
+// disp(mean(z2, 'c'))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_mean.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_mean.sci.dia.ref
new file mode 100644
index 00000000..82e39356
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_mean.sci.dia.ref
@@ -0,0 +1,1137 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_mean.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 8.3125
+
+ 8.3125 + 8.3125i
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 6.75 7.75 8.75 10.
+
+ 6.75 + 6.75i 7.75 + 7.75i 8.75 + 8.75i 10. + 10.i
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 2.5
+ 5.75
+ 10.5
+ 14.5
+
+ 2.5 + 2.5i
+ 5.75 + 5.75i
+ 10.5 + 10.5i
+ 14.5 + 14.5i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_mean"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_mean/test_mean_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_mean/test_mean_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(mean(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(mean(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_mean() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[1 * 4]; !
+! !
+! int ____temp23Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[1 * 4]; !
+! !
+! int ____temp24Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[4 * 1]; !
+! !
+! int ____temp27Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 1]; !
+! !
+! int ____temp28Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0meand0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0meanz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d2meand0(d2, __d2Size); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z2meanz0(z2, __z2Size); !
+! !
+! ans4 = z0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0meand0(d0,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp22 = z0d0meanz0(z0,1); !
+! !
+! ans6 = z0dispd0(__temp22); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0meand2(d2, __d2Size,1,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0meanz2(z2, __z2Size,1,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = d0d0meand0(d0,2); !
+! !
+! ans9 = d0dispd0(__temp25); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = z0d0meanz0(z0,2); !
+! !
+! ans10 = z0dispd0(__temp26); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0meand2(d2, __d2Size,2,__temp27); !
+! !
+! ans11 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(mean(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0meanz2(z2, __z2Size,2,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(mean(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_mean.sci.tst b/2.3-1/tests/unit_tests/double/test_mean.sci.tst
new file mode 100644
index 00000000..8e1b0df2
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_mean.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_mean.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_min.sci b/2.3-1/tests/unit_tests/double/test_min.sci
new file mode 100644
index 00000000..a99e8b36
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_min.sci
@@ -0,0 +1,32 @@
+function test_min()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(min(d0))
+ //disp(min(z0))
+ disp(min(d2))
+ //disp(min(z2))
+
+ disp(min(d0, 1))
+ //disp(min(z0, 1))
+ disp(min(d2, 1))
+ //disp(min(z2, 1))
+
+ disp(min(d0, 2))
+ //disp(min(z0, 2))
+ disp(min(d2, 2))
+ //disp(min(z2, 2))
+
+// disp(min(d0, 'r'))
+// disp(min(z0, 'r'))
+// disp(min(d2, 'r'))
+// disp(min(z2, 'r'))
+
+// disp(min(d0, 'c'))
+// disp(min(z0, 'c'))
+// disp(min(d2, 'c'))
+// disp(min(z2, 'c'))
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_min.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_min.sci.dia.ref
new file mode 100644
index 00000000..1beac875
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_min.sci.dia.ref
@@ -0,0 +1,1067 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_min.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 1.
+
+ 1.
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+ 2.
+
+ 1. 2. 2. 2.
+ 2. 2. 2. 2.
+ 2. 2. 2. 2.
+ 2. 2. 2. 2.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_min"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_min/test_min_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_min/test_min_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(min(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(min(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(min(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(min(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(min(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(min(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(min(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(min(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(min(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(min(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(min(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(min(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(min(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_min() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[4 * 4]; !
+! !
+! int ____temp22Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(min(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0mind0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(min(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(min(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = d2mind0(d2, __d2Size); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(min(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(min(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d0d0mind0(d0,1); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(min(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(min(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0mind2(d2, __d2Size,1,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(min(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(min(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0mind0(d0,2); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(min(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(min(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0mind2(d2, __d2Size,2,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(min(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(min(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_min.sci.tst b/2.3-1/tests/unit_tests/double/test_min.sci.tst
new file mode 100644
index 00000000..4ab37ae5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_min.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_min.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_ones.sci b/2.3-1/tests/unit_tests/double/test_ones.sci
new file mode 100644
index 00000000..056330b9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_ones.sci
@@ -0,0 +1,14 @@
+function test_ones()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(ones(d0))
+ disp(ones(z0))
+ disp(ones(d2))
+ disp(ones(z2))
+ //disp(ones(0,0)) // ! sci2c does not manage [] !
+ disp(ones(1,1))
+ disp(ones(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_ones.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_ones.sci.dia.ref
new file mode 100644
index 00000000..cdf97ab5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_ones.sci.dia.ref
@@ -0,0 +1,747 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_ones.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.
+
+ 1.
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+ 1. 1. 1. 1.
+
+ 1.
+
+ 1. 1. 1.
+ 1. 1. 1.
+ 1. 1. 1.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_ones"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_ones/test_ones_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_ones/test_ones_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ones(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ones(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ones(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ones(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(ones(0,0)) // ! sci2c does not manage [] !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ones(1,1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(ones(d0,d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_ones() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[3 * 3]; !
+! !
+! int ____temp22Size[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ones(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0onesd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ones(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0onesz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ones(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2onesd2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ones(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2onesz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(ones(0,0)) // ! sci2c does not manage [] ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ones(1,1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0onesd0(1,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(ones(d0,d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0onesd2(d0,d0,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_ones.sci.tst b/2.3-1/tests/unit_tests/double/test_ones.sci.tst
new file mode 100644
index 00000000..552427f1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_ones.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_ones.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_prod.sci b/2.3-1/tests/unit_tests/double/test_prod.sci
new file mode 100644
index 00000000..cddb081e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_prod.sci
@@ -0,0 +1,31 @@
+function test_prod()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(prod(d0))
+ disp(prod(z0))
+ disp(prod(d2))
+ disp(prod(z2))
+
+ disp(prod(d0, 1))
+ disp(prod(z0, 1))
+ disp(prod(d2, 1))
+ disp(prod(z2, 1))
+
+ disp(prod(d0, 2))
+ disp(prod(z0, 2))
+ disp(prod(d2, 2))
+ disp(prod(z2, 2))
+
+// disp(prod(d0, 'r'))
+// disp(prod(z0, 'r'))
+// disp(prod(d2, 'r'))
+// disp(prod(z2, 'r'))
+
+// disp(prod(d0, 'c'))
+// disp(prod(z0, 'c'))
+// disp(prod(d2, 'c'))
+// disp(prod(z2, 'c'))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_prod.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_prod.sci.dia.ref
new file mode 100644
index 00000000..0232536e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_prod.sci.dia.ref
@@ -0,0 +1,1137 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_prod.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 1.196D+13
+
+ 3.061D+15
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 468. 1400. 2970. 6144.
+
+ - 1872. - 5600. - 11880. - 24576.
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 24.
+ 960.
+ 11880.
+ 43680.
+
+ - 96.
+ - 3840.
+ - 47520.
+ - 174720.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_prod"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_prod/test_prod_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_prod/test_prod_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(prod(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(prod(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_prod() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[1 * 4]; !
+! !
+! int ____temp23Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[1 * 4]; !
+! !
+! int ____temp24Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[4 * 1]; !
+! !
+! int ____temp27Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 1]; !
+! !
+! int ____temp28Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0prodd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0prodz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d2prodd0(d2, __d2Size); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z2prodz0(z2, __z2Size); !
+! !
+! ans4 = z0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0prodd0(d0,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp22 = z0d0prodz0(z0,1); !
+! !
+! ans6 = z0dispd0(__temp22); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0prodd2(d2, __d2Size,1,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0prodz2(z2, __z2Size,1,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = d0d0prodd0(d0,2); !
+! !
+! ans9 = d0dispd0(__temp25); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = z0d0prodz0(z0,2); !
+! !
+! ans10 = z0dispd0(__temp26); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0prodd2(d2, __d2Size,2,__temp27); !
+! !
+! ans11 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(prod(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0prodz2(z2, __z2Size,2,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(prod(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_prod.sci.tst b/2.3-1/tests/unit_tests/double/test_prod.sci.tst
new file mode 100644
index 00000000..c86d1589
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_prod.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_prod.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_rand.sci b/2.3-1/tests/unit_tests/double/test_rand.sci
new file mode 100644
index 00000000..1f82dbab
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_rand.sci
@@ -0,0 +1,14 @@
+function test_rand()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(rand(d0))
+ disp(rand(z0))
+ disp(rand(d2))
+ disp(rand(z2))
+ //disp(rand(0,0)) // ! sci2c does not manage [] !
+ disp(rand(1,1))
+ disp(rand(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_rand.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_rand.sci.dia.ref
new file mode 100644
index 00000000..dfb3f84c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_rand.sci.dia.ref
@@ -0,0 +1,757 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_rand.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.2113249
+
+ 0.7560439 + 0.0002211i
+
+ 0.3303271 0.6857310 0.6623569 0.2320748
+ 0.6653811 0.8782165 0.7263507 0.2312237
+ 0.6283918 0.0683740 0.1985144 0.2164633
+ 0.8497452 0.5608486 0.5442573 0.8833888
+
+
+ column 1 to 2
+
+ 0.6525135 + 0.9184708i 0.312642 + 0.4148104i
+ 0.3076091 + 0.0437334i 0.3616361 + 0.2806498i
+ 0.9329616 + 0.4818509i 0.2922267 + 0.1280058i
+ 0.2146008 + 0.2639556i 0.5664249 + 0.7783129i
+
+ column 3 to 4
+
+ 0.4826472 + 0.2119030i 0.4368588 + 0.6970851i
+ 0.3321719 + 0.1121355i 0.2693125 + 0.8415518i
+ 0.5935095 + 0.6856896i 0.6325745 + 0.4062025i
+ 0.5015342 + 0.1531217i 0.4051954 + 0.4094825i
+
+ 0.8784126
+
+ 0.1138360 0.5896177 0.5042213
+ 0.1998338 0.6853980 0.3493615
+ 0.5618661 0.8906225 0.3873779
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_rand"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_rand/test_rand_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_rand/test_rand_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(rand(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(rand(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(rand(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(rand(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(rand(0,0)) // ! sci2c does not manage [] !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(rand(1,1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(rand(d0,d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_rand() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[3 * 3]; !
+! !
+! int ____temp22Size[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(rand(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0randd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(rand(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0randz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(rand(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2randd2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(rand(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2randz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(rand(0,0)) // ! sci2c does not manage [] ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(rand(1,1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0randd0(1,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(rand(d0,d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0randd2(d0,d0,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_rand.sci.tst b/2.3-1/tests/unit_tests/double/test_rand.sci.tst
new file mode 100644
index 00000000..3854d839
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_rand.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_rand.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_real.sci b/2.3-1/tests/unit_tests/double/test_real.sci
new file mode 100644
index 00000000..102efc3c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_real.sci
@@ -0,0 +1,11 @@
+function test_real()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(real(d0))
+ disp(real(z0))
+ disp(real(d2))
+ disp(real(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_real.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_real.sci.dia.ref
new file mode 100644
index 00000000..b4f3acd2
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_real.sci.dia.ref
@@ -0,0 +1,661 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_real.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 3.1415927
+
+ 1. 2. 3. 4.
+ 5. 6. 7. 8.
+ 9. 10. 11. 12.
+ 13. 14. 15. 16.
+
+ 1. 2. 3. 4.
+ 5. 6. 7. 8.
+ 9. 10. 11. 12.
+ 13. 14. 15. 16.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_real"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_real/test_real_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_real/test_real_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(real(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(real(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(real(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(real(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_real() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(5,6,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,7,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(real(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0reald0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(real(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0reald0(z0); !
+! !
+! ans2 = d0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(real(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2reald2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(real(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2reald2(z2, __z2Size,__temp20); !
+! !
+! ans4 = d2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_real.sci.tst b/2.3-1/tests/unit_tests/double/test_real.sci.tst
new file mode 100644
index 00000000..e15cb37b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_real.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_real.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_round.sci b/2.3-1/tests/unit_tests/double/test_round.sci
new file mode 100644
index 00000000..90e8cf73
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_round.sci
@@ -0,0 +1,11 @@
+function test_round()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ round(d0);
+ round(d2);
+ round(z0);
+ round(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_round.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_round.sci.dia.ref
new file mode 100644
index 00000000..c27aa643
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_round.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_round.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_round"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_round/test_round_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_round/test_round_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: round(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: round(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: round(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: round(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_round() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: round(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0roundd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: round(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2roundd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: round(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0roundz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: round(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2roundz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_round.sci.tst b/2.3-1/tests/unit_tests/double/test_round.sci.tst
new file mode 100644
index 00000000..cdfcfacb
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_round.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_round.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sign.sci b/2.3-1/tests/unit_tests/double/test_sign.sci
new file mode 100644
index 00000000..eb348e1b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sign.sci
@@ -0,0 +1,11 @@
+function test_sign()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ sign(d0);
+ sign(d2);
+ sign(z0);
+ sign(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sign.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_sign.sci.dia.ref
new file mode 100644
index 00000000..bb9cf78d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sign.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sign.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_sign"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sign/test_sign_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sign/test_sign_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sign(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sign(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sign(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sign(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_sign() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sign(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0signd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sign(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2signd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sign(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0signz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sign(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2signz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_sign.sci.tst b/2.3-1/tests/unit_tests/double/test_sign.sci.tst
new file mode 100644
index 00000000..7938ae73
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sign.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sign.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sin.sci b/2.3-1/tests/unit_tests/double/test_sin.sci
new file mode 100644
index 00000000..8d61a42e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sin.sci
@@ -0,0 +1,11 @@
+function test_sin()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ sin(d0);
+ sin(d2);
+ sin(z0);
+ sin(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_sin.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_sin.sci.dia.ref
new file mode 100644
index 00000000..0ac55aec
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sin.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sin.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_sin"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sin/test_sin_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sin/test_sin_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sin(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sin(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sin(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sin(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_sin() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sin(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0sind0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sin(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2sind2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sin(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0sinz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sin(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2sinz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_sin.sci.tst b/2.3-1/tests/unit_tests/double/test_sin.sci.tst
new file mode 100644
index 00000000..bf272c09
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sin.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sin.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sinh.sci b/2.3-1/tests/unit_tests/double/test_sinh.sci
new file mode 100644
index 00000000..b489ede6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sinh.sci
@@ -0,0 +1,11 @@
+function test_sinh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ sinh(d0);
+ sinh(d2);
+ sinh(z0);
+ sinh(z2);
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_sinh.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_sinh.sci.dia.ref
new file mode 100644
index 00000000..91990861
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sinh.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sinh.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_sinh"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sinh/test_sinh_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sinh/test_sinh_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sinh(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sinh(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sinh(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: sinh(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_sinh() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sinh(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0sinhd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sinh(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2sinhd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sinh(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0sinhz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: sinh(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2sinhz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_sinh.sci.tst b/2.3-1/tests/unit_tests/double/test_sinh.sci.tst
new file mode 100644
index 00000000..cd0903f3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sinh.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sinh.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sqrt.sci b/2.3-1/tests/unit_tests/double/test_sqrt.sci
new file mode 100644
index 00000000..aceecc94
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sqrt.sci
@@ -0,0 +1,11 @@
+function test_sqrt()
+ d0 = %pi
+ d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sqrt(d0));
+ disp(sqrt(d2));
+ disp(sqrt(z0));
+ disp(sqrt(z2));
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sqrt.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_sqrt.sci.dia.ref
new file mode 100644
index 00000000..114b4648
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sqrt.sci.dia.ref
@@ -0,0 +1,671 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sqrt.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 1.7724539
+
+ 1.4142136 1.4142136 1.7320508 2.
+ 2. 2.236068 2.4494897 2.8284271
+ 3. 3.1622777 3.3166248 3.4641016
+ 3.6055513 3.7416574 3.8729833 4.
+
+ 1.9473669 + 0.8066258i
+
+
+ column 1 to 2
+
+ 1.553774 + 0.6435943i 1.553774 + 0.6435943i
+ 2.1973682 + 0.9101797i 2.4567324 + 1.0176119i
+ 3.2960523 + 1.3652696i 3.4743442 + 1.4391205i
+ 3.9613619 + 1.6408498i 4.1108995 + 1.7027903i
+
+ column 3 to 4
+
+ 1.9029767 + 0.7882388i 2.1973682 + 0.9101797i
+ 2.6912155 + 1.1147379i 3.1075479 + 1.2871885i
+ 3.643923 + 1.5093623i 3.8059534 + 1.5764775i
+ 4.2551853 + 1.7625555i 4.3947365 + 1.8203594i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_sqrt"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sqrt/test_sqrt_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sqrt/test_sqrt_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sqrt(d0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sqrt(d2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sqrt(z0));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sqrt(z2));
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_sqrt() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp18[4 * 4]; !
+! !
+! int ____temp18Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! doubleComplex __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(2,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sqrt(d0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0sqrtd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sqrt(d2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2sqrtd2(d2, __d2Size,__temp18); !
+! !
+! ans2 = d2dispd0(__temp18, ____temp18Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sqrt(z0)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = z0sqrtz0(z0); !
+! !
+! ans3 = z0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sqrt(z2)); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2sqrtz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_sqrt.sci.tst b/2.3-1/tests/unit_tests/double/test_sqrt.sci.tst
new file mode 100644
index 00000000..547c0121
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sqrt.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sqrt.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_st_deviation.sci b/2.3-1/tests/unit_tests/double/test_st_deviation.sci
new file mode 100644
index 00000000..f2d0aa6e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_st_deviation.sci
@@ -0,0 +1,31 @@
+function test_st_deviation()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(st_deviation(d0))
+ disp(st_deviation(z0))
+ disp(st_deviation(d2))
+ disp(st_deviation(z2))
+
+ disp(st_deviation(d0, 1))
+ disp(st_deviation(z0, 1))
+ disp(st_deviation(d2, 1))
+ disp(st_deviation(z2, 1))
+
+ disp(st_deviation(d0, 2))
+ disp(st_deviation(z0, 2))
+ disp(st_deviation(d2, 2))
+ disp(st_deviation(z2, 2))
+
+// disp(st_deviation(d0, 'r'))
+// disp(st_deviation(z0, 'r'))
+// disp(st_deviation(d2, 'r'))
+// disp(st_deviation(z2, 'r'))
+
+// disp(st_deviation(d0, 'c'))
+// disp(st_deviation(z0, 'c'))
+// disp(st_deviation(d2, 'c'))
+// disp(st_deviation(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_st_deviation.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_st_deviation.sci.dia.ref
new file mode 100644
index 00000000..249f2ef0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_st_deviation.sci.dia.ref
@@ -0,0 +1,1144 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_st_deviation.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.
+
+ 0.
+
+ 4.8815127
+
+ 4.8815127 + 4.8815127i
+
+ 0.
+
+ 0.
+
+ 5.3150729 5.3150729 5.3150729 5.1639778
+
+
+ column 1 to 2
+
+ 5.3150729 + 5.3150729i 5.3150729 + 5.3150729i
+
+ column 3 to 4
+
+ 5.3150729 + 5.3150729i 5.1639778 + 5.1639778i
+
+ 0.
+
+ 0.
+
+ 1.2909944
+ 1.7078251
+ 1.2909944
+ 1.2909944
+
+ 1.2909944 + 1.2909944i
+ 1.7078251 + 1.7078251i
+ 1.2909944 + 1.2909944i
+ 1.2909944 + 1.2909944i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_st_deviation"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_st_deviation/test_st_deviation_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_st_deviation/test_st_deviation_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(st_deviation(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(st_deviation(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_st_deviation() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[1 * 4]; !
+! !
+! int ____temp23Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[1 * 4]; !
+! !
+! int ____temp24Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[4 * 1]; !
+! !
+! int ____temp27Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 1]; !
+! !
+! int ____temp28Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0st_deviationd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0st_deviationz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d2st_deviationd0(d2, __d2Size); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z2st_deviationz0(z2, __z2Size); !
+! !
+! ans4 = z0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0st_deviationd0(d0,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp22 = z0d0st_deviationz0(z0,1); !
+! !
+! ans6 = z0dispd0(__temp22); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0st_deviationd2(d2, __d2Size,1,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0st_deviationz2(z2, __z2Size,1,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = d0d0st_deviationd0(d0,2); !
+! !
+! ans9 = d0dispd0(__temp25); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = z0d0st_deviationz0(z0,2); !
+! !
+! ans10 = z0dispd0(__temp26); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0st_deviationd2(d2, __d2Size,2,__temp27); !
+! !
+! ans11 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(st_deviation(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0st_deviationz2(z2, __z2Size,2,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(st_deviation(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_st_deviation.sci.tst b/2.3-1/tests/unit_tests/double/test_st_deviation.sci.tst
new file mode 100644
index 00000000..57193bab
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_st_deviation.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_st_deviation.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sum.sci b/2.3-1/tests/unit_tests/double/test_sum.sci
new file mode 100644
index 00000000..88b1d456
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sum.sci
@@ -0,0 +1,31 @@
+function test_sum()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sum(d0))
+ disp(sum(z0))
+ disp(sum(d2))
+ disp(sum(z2))
+
+ disp(sum(d0, 1))
+ disp(sum(z0, 1))
+ disp(sum(d2, 1))
+ disp(sum(z2, 1))
+
+ disp(sum(d0, 2))
+ disp(sum(z0, 2))
+ disp(sum(d2, 2))
+ disp(sum(z2, 2))
+
+// disp(sum(d0, 'r'))
+// disp(sum(z0, 'r'))
+// disp(sum(d2, 'r'))
+// disp(sum(z2, 'r'))
+
+// disp(sum(d0, 'c'))
+// disp(sum(z0, 'c'))
+// disp(sum(d2, 'c'))
+// disp(sum(z2, 'c'))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_sum.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_sum.sci.dia.ref
new file mode 100644
index 00000000..7507b98e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sum.sci.dia.ref
@@ -0,0 +1,1137 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sum.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 133.
+
+ 133. + 133.i
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 27. 31. 35. 40.
+
+ 27. + 27.i 31. + 31.i 35. + 35.i 40. + 40.i
+
+ 3.1415927
+
+ 3.1415927 + 3.1415927i
+
+ 10.
+ 23.
+ 42.
+ 58.
+
+ 10. + 10.i
+ 23. + 23.i
+ 42. + 42.i
+ 58. + 58.i
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_sum"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sum/test_sum_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_sum/test_sum_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(sum(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(sum(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_sum() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp22; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! double __temp23[1 * 4]; !
+! !
+! int ____temp23Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans7; !
+! !
+! !
+! !
+! doubleComplex __temp24[1 * 4]; !
+! !
+! int ____temp24Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double ans8; !
+! !
+! !
+! !
+! double __temp25; !
+! !
+! !
+! !
+! double ans9; !
+! !
+! !
+! !
+! doubleComplex __temp26; !
+! !
+! !
+! !
+! double ans10; !
+! !
+! !
+! !
+! double __temp27[4 * 1]; !
+! !
+! int ____temp27Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans11; !
+! !
+! !
+! !
+! doubleComplex __temp28[4 * 1]; !
+! !
+! int ____temp28Size[2] = {4, 1};; !
+! !
+! !
+! !
+! double ans12; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0sumd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0sumz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp19 = d2sumd0(d2, __d2Size); !
+! !
+! ans3 = d0dispd0(__temp19); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp20 = z2sumz0(z2, __z2Size); !
+! !
+! ans4 = z0dispd0(__temp20); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0sumd0(d0,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp22 = z0d0sumz0(z0,1); !
+! !
+! ans6 = z0dispd0(__temp22); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0sumd2(d2, __d2Size,1,__temp23); !
+! !
+! ans7 = d2dispd0(__temp23, ____temp23Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0sumz2(z2, __z2Size,1,__temp24); !
+! !
+! ans8 = z2dispd0(__temp24, ____temp24Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp25 = d0d0sumd0(d0,2); !
+! !
+! ans9 = d0dispd0(__temp25); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp26 = z0d0sumz0(z0,2); !
+! !
+! ans10 = z0dispd0(__temp26); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0sumd2(d2, __d2Size,2,__temp27); !
+! !
+! ans11 = d2dispd0(__temp27, ____temp27Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(sum(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0sumz2(z2, __z2Size,2,__temp28); !
+! !
+! ans12 = z2dispd0(__temp28, ____temp28Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(sum(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_sum.sci.tst b/2.3-1/tests/unit_tests/double/test_sum.sci.tst
new file mode 100644
index 00000000..d886db9b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_sum.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_sum.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_tanh.sci b/2.3-1/tests/unit_tests/double/test_tanh.sci
new file mode 100644
index 00000000..cf9a3650
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_tanh.sci
@@ -0,0 +1,11 @@
+function test_tanh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ tanh(d0);
+ tanh(d2);
+ tanh(z0);
+ tanh(z2);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_tanh.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_tanh.sci.dia.ref
new file mode 100644
index 00000000..4b73e62a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_tanh.sci.dia.ref
@@ -0,0 +1,623 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_tanh.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_tanh"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_tanh/test_tanh_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_tanh/test_tanh_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: tanh(d0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: tanh(d2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: tanh(z0);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: tanh(z2);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_tanh() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double ans2[4 * 4]; !
+! !
+! int __ans2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex ans3; !
+! !
+! !
+! !
+! doubleComplex ans4[4 * 4]; !
+! !
+! int __ans4Size[2] = {4, 4};; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: tanh(d0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d0tanhd0(d0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: tanh(d2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2tanhd2(d2, __d2Size,ans2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: tanh(z0); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = z0tanhz0(z0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: tanh(z2); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2tanhz2(z2, __z2Size,ans4); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_tanh.sci.tst b/2.3-1/tests/unit_tests/double/test_tanh.sci.tst
new file mode 100644
index 00000000..febcb811
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_tanh.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_tanh.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_variance.sci b/2.3-1/tests/unit_tests/double/test_variance.sci
new file mode 100644
index 00000000..a5acac33
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_variance.sci
@@ -0,0 +1,31 @@
+function test_variance()
+ d0 = 0.2113249
+ d2 = [0.2113249 0.0002211 0.6653811;0.7560439 0.4453586 0.6283918]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ //disp(variance(d0))
+ //disp(variance(z0))
+ disp(variance(d2))
+ disp(variance(z2))
+
+ //disp(variance(d0, 1))
+ //disp(variance(z0, 1))
+ disp(variance(d2, 1))
+ disp(variance(z2, 1))
+
+ //disp(variance(d0, 2))
+ //disp(variance(z0, 2))
+ disp(variance(d2, 2))
+ disp(variance(z2, 2))
+
+// disp(variance(d0, 'r'))
+// disp(variance(z0, 'r'))
+// disp(variance(d2, 'r'))
+// disp(variance(z2, 'r'))
+
+// disp(variance(d0, 'c'))
+// disp(variance(z0, 'c'))
+// disp(variance(d2, 'c'))
+// disp(variance(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/double/test_variance.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_variance.sci.dia.ref
new file mode 100644
index 00000000..ae90d569
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_variance.sci.dia.ref
@@ -0,0 +1,969 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_variance.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.0862313
+
+ 0.1724626i
+
+ 0.1483594 0.0990737 0.0006841
+
+ 0.2967188 0.1981474 0.0013682
+
+ 0.1155283
+ 0.0243869
+
+ 0.2310566
+ 0.0487739
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_variance"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_variance/test_variance_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_variance/test_variance_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = 0.2113249
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [0.2113249 0.0002211 0.6653811;0.7560439 0.4453586
+ 0.6283918]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(variance(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(variance(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(variance(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(variance(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(variance(d0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(variance(z0, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(variance(d2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(variance(z2, 1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(variance(d0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(variance(z0, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(variance(d2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(variance(z2, 2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(d0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(z0, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(d2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(z2, 'r'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(d0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(z0, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(d2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: // disp(variance(z2, 'c'))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_variance() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 0.2113249; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 2]; !
+! !
+! int ____temp3Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp4[1 * 3]; !
+! !
+! int ____temp4Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double d2[2 * 3]; !
+! !
+! int __d2Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex __temp5; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp6[2 * 3]; !
+! !
+! int ____temp6Size[2] = {2, 3};; !
+! !
+! !
+! !
+! doubleComplex z2[2 * 3]; !
+! !
+! int __z2Size[2] = {2, 3};; !
+! !
+! !
+! !
+! double __temp7; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp8; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp10[1 * 3]; !
+! !
+! int ____temp10Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp11[2 * 1]; !
+! !
+! int ____temp11Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! doubleComplex __temp12[2 * 1]; !
+! !
+! int ____temp12Size[2] = {2, 1};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = 0.2113249 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(0.2113249); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [0.2113249 0.0002211 0.6653811;0.7560439 0.4453586 !
+! 0.6283918] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(0.2113249,0.0002211,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,0.6653811,__temp2); !
+! !
+! d0d0OpRcd2(0.7560439,0.4453586,__temp3); !
+! !
+! d2d0OpRcd2(__temp3, ____temp3Size,0.6283918,__temp4); !
+! !
+! d2d2OpCcd2(__temp2, ____temp2Size,__temp4, ____temp4Size,d2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp5 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp5); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp6); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp6, ____temp6Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(variance(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(variance(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(variance(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp7 = d2varianced0(d2, __d2Size); !
+! !
+! ans1 = d0dispd0(__temp7); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(variance(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp8 = z2variancez0(z2, __z2Size); !
+! !
+! ans2 = z0dispd0(__temp8); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(variance(d0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(variance(z0, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(variance(d2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0varianced2(d2, __d2Size,1,__temp9); !
+! !
+! ans3 = d2dispd0(__temp9, ____temp9Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(variance(z2, 1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0variancez2(z2, __z2Size,1,__temp10); !
+! !
+! ans4 = z2dispd0(__temp10, ____temp10Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(variance(d0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(variance(z0, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(variance(d2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2d0varianced2(d2, __d2Size,2,__temp11); !
+! !
+! ans5 = d2dispd0(__temp11, ____temp11Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(variance(z2, 2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2d0variancez2(z2, __z2Size,2,__temp12); !
+! !
+! ans6 = z2dispd0(__temp12, ____temp12Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(d0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(z0, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(d2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(z2, 'r')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(d0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(z0, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(d2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: // disp(variance(z2, 'c')) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_variance.sci.tst b/2.3-1/tests/unit_tests/double/test_variance.sci.tst
new file mode 100644
index 00000000..2cd7f114
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_variance.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_variance.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_zeros.sci b/2.3-1/tests/unit_tests/double/test_zeros.sci
new file mode 100644
index 00000000..be4196dd
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_zeros.sci
@@ -0,0 +1,14 @@
+function test_zeros()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(zeros(d0))
+ disp(zeros(z0))
+ disp(zeros(d2))
+ disp(zeros(z2))
+ //disp(zeros(0,0)) // ! sci2c does not manage [] !
+ disp(zeros(1,1))
+ disp(zeros(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/double/test_zeros.sci.dia.ref b/2.3-1/tests/unit_tests/double/test_zeros.sci.dia.ref
new file mode 100644
index 00000000..47ae7816
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_zeros.sci.dia.ref
@@ -0,0 +1,747 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_zeros.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+ 0.
+
+ 0.
+
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+ 0. 0. 0. 0.
+
+ 0.
+
+ 0. 0. 0.
+ 0. 0. 0.
+ 0. 0. 0.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_zeros"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_zeros/test_zeros_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_zeros/test_zeros_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d0 = %pi
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z0 = d0 + %i * d0
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: z2 = d2 + %i * d2
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(z0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(d2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(z2))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: //disp(zeros(0,0)) // ! sci2c does not manage [] !
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(1,1))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(zeros(d0,d0))
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: function test_zeros() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double d0 = 3.1415927; !
+! !
+! !
+! !
+! double __temp1[1 * 2]; !
+! !
+! int ____temp1Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp2[1 * 3]; !
+! !
+! int ____temp2Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp3[1 * 4]; !
+! !
+! int ____temp3Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp4[1 * 2]; !
+! !
+! int ____temp4Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp5[1 * 3]; !
+! !
+! int ____temp5Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp6[1 * 4]; !
+! !
+! int ____temp6Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp7[2 * 4]; !
+! !
+! int ____temp7Size[2] = {2, 4};; !
+! !
+! !
+! !
+! double __temp8[1 * 2]; !
+! !
+! int ____temp8Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp9[1 * 3]; !
+! !
+! int ____temp9Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp10[1 * 4]; !
+! !
+! int ____temp10Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double __temp11[3 * 4]; !
+! !
+! int ____temp11Size[2] = {3, 4};; !
+! !
+! !
+! !
+! double __temp12[1 * 2]; !
+! !
+! int ____temp12Size[2] = {1, 2};; !
+! !
+! !
+! !
+! double __temp13[1 * 3]; !
+! !
+! int ____temp13Size[2] = {1, 3};; !
+! !
+! !
+! !
+! double __temp14[1 * 4]; !
+! !
+! int ____temp14Size[2] = {1, 4};; !
+! !
+! !
+! !
+! double d2[4 * 4]; !
+! !
+! int __d2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex __temp15; !
+! !
+! !
+! !
+! doubleComplex z0; !
+! !
+! !
+! !
+! doubleComplex __temp16[4 * 4]; !
+! !
+! int ____temp16Size[2] = {4, 4};; !
+! !
+! !
+! !
+! doubleComplex z2[4 * 4]; !
+! !
+! int __z2Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double __temp17; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! doubleComplex __temp18; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double __temp19[4 * 4]; !
+! !
+! int ____temp19Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! doubleComplex __temp20[4 * 4]; !
+! !
+! int ____temp20Size[2] = {4, 4};; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! double __temp21; !
+! !
+! !
+! !
+! double ans5; !
+! !
+! !
+! !
+! double __temp22[3 * 3]; !
+! !
+! int ____temp22Size[2] = {3, 3};; !
+! !
+! !
+! !
+! double ans6; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d0 = %pi !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0 = d0OpEquald0(SCI2C_PI); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: d2 = [1 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16] !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0OpRcd2(1,2,__temp1); !
+! !
+! d2d0OpRcd2(__temp1, ____temp1Size,3,__temp2); !
+! !
+! d2d0OpRcd2(__temp2, ____temp2Size,4,__temp3); !
+! !
+! d0d0OpRcd2(4,5,__temp4); !
+! !
+! d2d0OpRcd2(__temp4, ____temp4Size,6,__temp5); !
+! !
+! d2d0OpRcd2(__temp5, ____temp5Size,8,__temp6); !
+! !
+! d2d2OpCcd2(__temp3, ____temp3Size,__temp6, ____temp6Size,__temp7)!
+! ; !
+! !
+! d0d0OpRcd2(9,10,__temp8); !
+! !
+! d2d0OpRcd2(__temp8, ____temp8Size,11,__temp9); !
+! !
+! d2d0OpRcd2(__temp9, ____temp9Size,12,__temp10); !
+! !
+! d2d2OpCcd2(__temp7, ____temp7Size,__temp10, ____temp10Size,__temp!
+! 11); !
+! !
+! d0d0OpRcd2(13,14,__temp12); !
+! !
+! d2d0OpRcd2(__temp12, ____temp12Size,15,__temp13); !
+! !
+! d2d0OpRcd2(__temp13, ____temp13Size,16,__temp14); !
+! !
+! d2d2OpCcd2(__temp11, ____temp11Size,__temp14, ____temp14Size,d2);!
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z0 = d0 + %i * d0 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp15 = z0d0OpStarz0(DoubleComplex(0,1),d0); !
+! !
+! z0 = d0z0OpPlusz0(d0,__temp15); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: z2 = d2 + %i * d2 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z0d2OpStarz2(DoubleComplex(0,1),d2, __d2Size,__temp16); !
+! !
+! d2z2OpPlusz2(d2, __d2Size,__temp16, ____temp16Size,z2); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp17 = d0zerosd0(d0); !
+! !
+! ans1 = d0dispd0(__temp17); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(z0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp18 = z0zerosz0(z0); !
+! !
+! ans2 = z0dispd0(__temp18); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(d2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d2zerosd2(d2, __d2Size,__temp19); !
+! !
+! ans3 = d2dispd0(__temp19, ____temp19Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(z2)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! z2zerosz2(z2, __z2Size,__temp20); !
+! !
+! ans4 = z2dispd0(__temp20, ____temp20Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: //disp(zeros(0,0)) // ! sci2c does not manage [] ! !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(1,1)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! __temp21 = d0d0zerosd0(1,1); !
+! !
+! ans5 = d0dispd0(__temp21); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(zeros(d0,d0)) !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0zerosd2(d0,d0,__temp22); !
+! !
+! ans6 = d2dispd0(__temp22, ____temp22Size); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/double/test_zeros.sci.tst b/2.3-1/tests/unit_tests/double/test_zeros.sci.tst
new file mode 100644
index 00000000..af835d68
--- /dev/null
+++ b/2.3-1/tests/unit_tests/double/test_zeros.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/double/test_zeros.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_Convol.sci b/2.3-1/tests/unit_tests/float/test_float_Convol.sci
new file mode 100644
index 00000000..6b099b22
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Convol.sci
@@ -0,0 +1,125 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Convol()
+
+
+ disp(convol(4,4.5)); //d0d0Convold0
+ disp(convol(%i + 3 ,2*%i + 4)); // z0z0Convolz0
+
+
+ a = [1 2 3 4 5 %e %pi];
+ b = [1 7 8 5 1 6 ];
+
+ disp(convol(a,b));
+ disp(convol(b,b)); // d2d2Convold2
+
+
+ disp(convol(4,a)); //d0d2Convold2
+ disp(convol(a,4)); // d2d0Convold2
+
+
+ c = [1 2 3 4 5 %e %pi] * %i;
+ d = [1 7 8 5 1 6 ] * %i;
+
+ disp(convol(c,d));
+ disp(convol(d,d)); // z2z2Convolz2
+
+
+ disp(convol(%i + 3 ,c)); // z0z2Convolz2
+ disp(convol(d ,2*%i + 4)); // z2z0Convolz2
+
+// with 2 outputs
+
+
+// [zz yy] = convol(4,4.5); //d0d0Convold0d0
+// disp( zz );
+ //disp( yy );
+
+// [xx ww ] = convol(%i + 3 ,2*%i + 4); // z0z0Convolz0z0
+// disp( xx);
+// disp( ww );
+
+// [vv uu] =convol(a,b);
+// disp( vv); // d2d2Convold2d2
+// disp( uu );
+
+
+// [tt ss] = convol(4,a); //d0d2Convold2d2
+// disp( tt);
+// disp( ss );
+
+
+
+// [rr qq] = convol(a,4); // d2d0Convold2d2
+// disp( rr );
+// disp( qq );
+
+
+
+// with 2 outputs
+
+// [pp oo] =convol(c,d);
+// disp( pp); // z2z2Convolz2z2
+// disp( oo );
+
+
+// [mm nn] = convol(4,c); //z0z2Convolz2z2
+// disp( mm);
+// disp( nn );
+
+
+
+// [ll kk] = convol(c,4); // z2z0Convolz2z2
+// disp( ll );
+ //disp( kk);
+
+
+// three input i
+
+// with 2 outputs
+
+
+ //[zzz yyy] = convol(4,4.5,18); //d0d0d0Convold0d0
+ //disp( zzz );
+ //disp( yyy );
+
+ //[xxx www ] = convol(%i + 3 ,2*%i + 4,%i); // z0z0z0Convolz0z0
+ //disp( xxx);
+ //disp( www );
+
+// bbis = [4 7 9 10];
+
+ //[vvv uuu] =convol(a,b,bbis);
+// disp( vvv); // d2d2d2Convold2d2
+// disp( uuu );
+//
+
+ //[ttt sss] = convol(4,a, 8); //d0d2d0Convold2d0
+ //disp( ttt);
+ //disp( sss );
+
+// with 2 outputs
+//dbis = [10 13 14] *%i;
+// [ppp ooo] =convol(c,d, dbis);
+// disp( ppp); // z2z2z2Convolz2z2
+// disp( ooo );
+
+
+// [mmm nnn] = convol(4 * %i ,c , %i); //z0z2z0Convolz2z0
+// disp( mmm);
+// disp( nnn);
+
+//mixed up
+
+// disp(convol(a,c)); //d2z2Convolz2
+// disp(convol(c,a)); // z2d2Convolz2
+// disp(convol(4,c)); //d0z2Convolz2
+// disp(convol(%i + 3 ,a)); // z0d2Convolz2
+
+// disp(convol(a, %i)); //d2z0Convolz2
+// disp(convol(c , 4)); // z2d0Convolz2
+
+
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Det.sci b/2.3-1/tests/unit_tests/float/test_float_Det.sci
new file mode 100644
index 00000000..66519d97
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Det.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Det()
+
+ a = [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(det(a));
+
+ b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(det(b));
+
+
+ disp(det(5));
+
+ disp(det(%i));
+endfunction
+
+
diff --git a/2.3-1/tests/unit_tests/float/test_float_Disp.sci b/2.3-1/tests/unit_tests/float/test_float_Disp.sci
new file mode 100644
index 00000000..2c6044ed
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Disp.sci
@@ -0,0 +1,14 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Disp ()
+
+ disp(4.5);
+ disp(4+3*%i);
+ disp("a");
+
+ disp([1 2 3 4 5 ; 6 7 8 9 10]);
+ disp(%i*[1 2 3 4 5 ; 6 7 8 9 10]);
+ disp("plop");
+
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/float/test_float_Expm.sci b/2.3-1/tests/unit_tests/float/test_float_Expm.sci
new file mode 100644
index 00000000..239161a7
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Expm.sci
@@ -0,0 +1,10 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Expm()
+ b = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16];
+ c = b*%i ;
+
+ disp(expm(b));
+ disp(expm(c));
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_FFTShift.sci b/2.3-1/tests/unit_tests/float/test_float_FFTShift.sci
new file mode 100644
index 00000000..e3a076f8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_FFTShift.sci
@@ -0,0 +1,38 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_FFTShift()
+
+ disp(fftshift(5.3));// d0*d0
+ disp(fftshift(5.3*%i));// z0*z0
+ disp(fftshift(5.3 + 5.6*%i ));// z0*z0
+
+
+ a = fft ([10 1 15 3.5 ]);
+ disp(fftshift(a));
+
+ b = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ];
+ disp(fftshift(b));
+ disp(fftshift(b , 1));
+ disp(fftshift(b , 2));
+ //disp(fftshift(b , "all"));
+
+
+ c = [10 1 15 3.5 ]*%i;
+ disp(fftshift(c));
+
+ d = [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i;
+ disp(fftshift(b));
+ disp(fftshift(b , 1));
+ disp(fftshift(b , 2));
+ //disp(fftshift(b , "all"));
+
+
+ e = c + [10 1 15 3.5 ]*%i;
+ disp(fftshift(e));
+
+ f = [ 18 15 7 6 ; 1 5 6 4 ; 43.5 1 9.3 1 ] + [ 14 15 2 6 ; 1 2 6 4 ; 48.5 3 9.3 1 ]*%i;
+ disp(fftshift(f));
+ disp(fftshift(f , 1));
+ disp(fftshift(f , 2));
+ //disp(fftshift(f , "all"));
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Fft.sci b/2.3-1/tests/unit_tests/float/test_float_Fft.sci
new file mode 100644
index 00000000..601e9587
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Fft.sci
@@ -0,0 +1,173 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Fft()
+
+disp(fft(4.4))
+disp(fft(%i + 3.4))
+
+
+// one input
+ a = [10 1 15 3.5 ]; //d2Fftz2
+ disp(fft(a));
+ disp("");
+ b = [25 3.6]; // d2Fftd2
+ disp(fft(b));
+ disp("");
+ c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(fft(c));
+ disp("");
+ // pure imaginary
+ d = [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(fft(d));
+ disp("");
+ e = [25 3.6]*%i; // z2Fftd2
+ disp(fft(e));
+ disp("");
+ f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(fft(f));
+ disp("");
+ // full complex
+
+ g = a + [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(fft(g));
+ disp("");
+ h = b + [25 3.6]*%i; // z2Fftd2
+ disp(fft(h));
+ disp("");
+ j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(fft(j));
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+// two output
+// call ifft
+ disp(fft(a,1));
+ disp("");
+ disp(fft(b,1));
+ disp("");
+ disp(fft(c,1));
+ disp("");
+ disp(fft(d,1));
+ disp("");
+ disp(fft(e,1));
+ disp("");
+ disp(fft(f,1));
+ disp("");
+ // full complex
+ disp(fft(g,1));
+ disp("");
+ disp(fft(h,1));
+ disp("");
+ disp(fft(j,1));
+ disp("");
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+//
+ disp(fft(a,-1));
+ disp("");
+ disp(fft(b,-1));
+ disp("");
+ disp(fft(c,-1));
+ disp("");
+ disp(fft(d,-1));
+ disp("");
+ disp(fft(e,-1));
+ disp("");
+ disp(fft(f,-1));
+ disp("");
+ // full complex
+ disp(fft(g,-1));
+ disp("");
+ disp(fft(h,-1));
+ disp("");
+ disp(fft(j,-1));
+ disp("");
+
+
+// ********************
+// MATRIX
+// ********************
+// one input
+ aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2
+ disp(fft(aa));
+ disp("");
+ bb = [25 3.6 ; 4 3.2]; // d2Fftd2
+ disp(fft(bb));
+ disp("");
+ cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+ disp(fft(cc));
+ disp("");
+ // pure imaginary
+ dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2
+ disp(fft(dd));
+ disp("");
+ ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2
+ disp(fft(ee));
+ disp("");
+ ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+
+ disp(fft(ff));
+ disp("");
+ // full complex
+
+ gg = aa + dd; //z2Fftz2
+ disp(fft(gg));
+ disp("");
+ hh = bb + ee; // z2Fftd2
+ disp(fft(hh));
+ disp("");
+ jj= cc + ff
+ disp(fft(jj));
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+// two output
+// call ifft
+ disp(fft(aa,1));
+ disp("");
+ disp(fft(bb,1));
+ disp("");
+ disp(fft(cc,1));
+ disp("");
+ disp(fft(dd,1));
+ disp("");
+ disp(fft(ee,1));
+ disp("");
+ disp(fft(ff,1));
+ disp("");
+ // full complex
+ disp(fft(gg,1));
+ disp("");
+ disp(fft(hh,1));
+ disp("");
+ disp(fft(jj,1));
+ disp("");
+ disp("");
+ disp("*******************");
+ disp("*******************");
+ disp("");
+//
+ disp(fft(aa,-1));
+ disp("");
+ disp(fft(bb,-1));
+ disp("");
+ disp(fft(cc,-1));
+ disp("");
+ disp(fft(dd,-1));
+ disp("");
+ disp(fft(ee,-1));
+ disp("");
+ disp(fft(ff,-1));
+ disp("");
+ // full complex
+ disp(fft(gg,-1));
+ disp("");
+ disp(fft(hh,-1));
+ disp("");
+ disp(fft(jj,-1));
+ disp("");
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Find.sci b/2.3-1/tests/unit_tests/float/test_float_Find.sci
new file mode 100644
index 00000000..a8d642c0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Find.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Find ()
+
+ disp (find( 1 == 3 )); // d0Findd0
+
+ a = [1 2 3; 4 5 6];
+ b = [1 8 3; 9 5 6];
+ disp (find( a == b )); // d2Findd2
+
+ [ z , j ] = find (1 == 3); // d0Findd0d0
+ [ k , l ] = find (a == b); // d2Findd2d2
+
+ disp(z);
+ disp(j);
+ disp(k);
+ disp(l);
+
+ disp ( find( 1 == 3 , 2 )); // d0d0Findd0
+
+ c = [1 2 3; 4 5 6];
+ d = [1 8 3; 9 5 6];
+ disp (find( c == d , 2 )); // d2d0Findd2
+
+ [ o , p ] = find (1 == 3 , 2); // d0d0Findd0d0
+ [ q , s ] = find (c == d , 2); // d2d0Findd2d2
+
+ disp(o);
+ disp(p);
+ disp(q);
+ disp(s);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_IFFT.sci b/2.3-1/tests/unit_tests/float/test_float_IFFT.sci
new file mode 100644
index 00000000..196d3798
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_IFFT.sci
@@ -0,0 +1,90 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_IFFT()
+
+
+disp(ifft(2)); // d0IFFTd0
+disp(ifft(%i + 4)) // z0IFFTz0
+
+disp(ifft([1 2])); // d2IFFTd2
+disp(ifft([1 -2 3] + zeros(1 , 3)*%i )); // d2IFFTz2
+disp(ifft([1 2]*%i)); // z2IFFTz2
+
+disp(ifft(4.4))
+disp(ifft(%i + 3.4))
+
+
+// one input
+ a = [10 1 15 3.5 ]; //d2Fftz2
+ Abis = a + zeros(a)*%i ;
+ disp(ifft(Abis));
+ disp("********1*******");
+ b = [25 3.6]; // d2Fftd2
+ disp(ifft(b));
+ disp("********2*******");
+ c= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ cbis = c + zeros(c)*%i ;
+ disp(ifft(cbis));
+ disp("********3*********");
+ // pure imaginary
+ d = [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(ifft(d));
+ disp("********4*********");
+ e = [25 3.6]*%i; // z2Fftd2
+ disp(ifft(e));
+ disp("********5***********");
+ f= %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(ifft(f));
+ disp("********6***********");
+ // full complex
+
+ g = a + [10 1 15 3.5 ]*%i; //z2Fftz2
+ disp(ifft(g));
+ disp("********7***********");
+ h = b + [25 3.6]*%i; // z2Fftd2
+ disp(ifft(h));
+ disp("********8***********");
+ j= c + %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ]
+ disp(ifft(j));
+ disp("********************");
+ disp("*******************");
+ disp("*******************");
+ disp("********************");
+
+
+// ********************
+// MATRIX
+// ********************
+// one input
+ aa = [10 1 15 3.5 ; 5 3 9 6 ]; //d2Fftz2
+ disp(ifft(aa));
+ disp("********9***********");
+ bb = [25 3.6 ; 4 3.2]; // d2Fftd2
+ disp(ifft(bb));
+ disp("********10**********");
+ cc= [10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3 ; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+ disp(ifft(cc));
+ disp("********11**********");
+ // pure imaginary
+ dd = [10 1 15 3.5 ; 5 8 6 3 ]*%i; //z2Fftz2
+ disp(ifft(dd));
+ disp("********12**********");
+ ee = [25 3.6 ; 4 5.9 ]*%i; // z2Fftd2
+ disp(ifft(ee));
+ disp("********13**********");
+ ff = %i*[10 2 5 6 3 8 9 445 1 2 3 0 125 5 41 4 5 552 2.36 45656 72.3; 21 8 2 5 6 3 4 123 5 6 0 5 548 7 65 4 2 166 4.12 65546 1.78 ]
+
+ disp(ifft(ff));
+ disp("********14**********");
+ // full complex
+
+ gg = aa + dd; //z2Fftz2
+ disp(ifft(gg));
+ disp("********15**********");
+ hh = bb + ee; // z2Fftd2
+ disp(ifft(hh));
+ disp("********16**********");
+ jj= cc + ff
+ disp(ifft(jj));
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Length.sci b/2.3-1/tests/unit_tests/float/test_float_Length.sci
new file mode 100644
index 00000000..744dc5b1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Length.sci
@@ -0,0 +1,33 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Length()
+ disp(length(4));
+ disp(length(2+3*%i));
+ disp(length([1 2 3 ; 4 5 6]));
+ disp(length([1 2 3 ; 4 5 6]*%i));
+ e = %pi ;
+ disp(length(e)); // d0Lengthd0
+
+ f = e * %i;
+ disp(length(f));// z0Lengthd0
+
+ a = [1 2 3 ; 4 5 6];
+ disp(length(a));// d2Lengthd0
+
+ b = [1 2 3 ; 4 5 6] * %i;
+ disp(length(b));// z2Lengthd0
+
+
+ g = "pouet" ;
+ h = "a" ;
+
+ disp(length(g)); // g0Lengthd0
+ disp(length(h)); // g2Lengthd0
+
+ disp(length("pouet"));
+ disp(length("a"));
+
+
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Lev.sci b/2.3-1/tests/unit_tests/float/test_float_Lev.sci
new file mode 100644
index 00000000..195d0232
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Lev.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Lev()
+
+ a = [1 2 3 4 5 6 7 8 9 10] ;
+
+ disp(lev(a)) ;
+
+ [aa aaa] = lev(a);
+ disp(aa);
+ disp(aaa)
+
+ [a1 aa1 aaa1] = lev (a);
+ disp(a1);
+ disp(aa1);
+ disp(aaa1);
+
+// complex
+ b =%i * [1 2 3 4 5 6 7 8 9 10] ;
+
+ disp(lev(b)) ;
+
+ [bb bbb] = lev(b);
+ disp(bb);
+ disp(bbb)
+
+ [b1 bb1 bbb1] = lev (b);
+ disp(b1);
+ disp(bb1);
+ disp(bbb1);
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Meanf.sci b/2.3-1/tests/unit_tests/float/test_float_Meanf.sci
new file mode 100644
index 00000000..44b3dac4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Meanf.sci
@@ -0,0 +1,49 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function test_float_Meanf()
+
+ disp (meanf (4 , 5 )) ;
+ disp ("*******1*******");
+ disp (meanf ([4 5 6], [1 2 3]));
+ disp ("*******2*******");
+ disp (meanf (4 , 5*%i )) ;
+ disp ("*******3*******");
+ disp (meanf ([4 5 6], [1 2 3]*%i));
+ disp ("*******4*******");
+
+
+
+ disp (meanf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1));
+ disp ("*******5*******");
+ disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2));
+// complex
+ disp ("*******6*******");
+ disp (meanf (4 +4*%i , 5 )) ;
+ disp ("*******7*******");
+ disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]));
+ disp ("*******8*******");
+ disp (meanf (4 +4*%i , 5*%i )) ;
+ disp ("*******9*******");
+ disp (meanf ([4*%i, 5+6*%i, 6], [1 2 3]*%i));
+ disp ("******10*******");
+
+
+ disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1));
+ disp ("******11*******");
+ disp (meanf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2));
+ disp ("******12*******");
+ disp (meanf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******13*******");
+ disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2));
+ disp ("******14*******");
+
+ disp (meanf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******15*******");
+ disp (meanf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));
+ disp ("******16*******");
+//
+
+
+//
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpApex.sci b/2.3-1/tests/unit_tests/float/test_float_OpApex.sci
new file mode 100644
index 00000000..6e8ec187
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpApex.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpApex()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0')
+ disp(d2')
+ disp(z0')
+ disp(z2')
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpCc.sci b/2.3-1/tests/unit_tests/float/test_float_OpCc.sci
new file mode 100644
index 00000000..e04ede06
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpCc.sci
@@ -0,0 +1,47 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+
+function test_float_OpCc()
+
+ a = [1 ; 2 ; 3 ; 4]; // d0d0OpCcs2
+ b = [7 ; a];// d0d2OpCcs2
+ c = [a ; 7];// d2d0OpCcs2
+ d = [a ; b];// d2d2OpCcs2
+ disp(a);
+ disp(b);
+ disp(c);
+ disp(d);
+
+ e = [1*%i ; 2*%i ; 3*%i ; 4*%i ];// z0z0OpCcz2
+ f = [7 ; e];// z0z2OpCcz2
+ g = [e ; 7];// z2z0OpCcz2
+ h = [e ; f];// z2z2OpCcz2
+
+ disp(e);
+ disp(f);
+ disp(g);
+ disp(h);
+
+
+ i = [%i ; 4.5]; // z0d0OpCcz2
+ j = [4.5 ; %i ]; // d0z0OpCcz2
+ k = [4.5 ; i ]; // d0z2OpCcz2
+ l = [i ; 4.5]; // z2d0OpCcz2
+
+ disp(i);
+ disp(j);
+ disp(k);
+ disp(l);
+
+ m = [1 ; 4.5];
+ n = [%i ; m ]; // z0d2OpCcz2
+ o = [m ; %i ]; // d0z2OpCcz2
+ p = [m ; n ]; // d2z2OpCcz2
+ q = [n ; m ]; // z2d2OpCcz2
+
+ disp(n);
+ disp(o);
+ disp(p);
+ disp(q);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpColon.sci b/2.3-1/tests/unit_tests/float/test_float_OpColon.sci
new file mode 100644
index 00000000..b87608b9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpColon.sci
@@ -0,0 +1,42 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpColon()
+
+
+// A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12];
+// B = A * %i ;
+d = %i ;
+a = %pi ;
+b = %e ;
+c = [7 8 5 ];
+disp(zeros ( a , %e ));
+
+disp(zeros ( %pi , %e));
+disp(zeros(c));
+disp(zeros ([4 5 6 ; 4 5 6]) );
+
+ disp(0:1:3);
+ disp(1:1);
+ disp(4+53*%i:0);
+//
+
+ disp(2:5);
+ disp(4+3*%i:8+%i);
+//
+
+ disp(1:5:1);
+ disp(%i:%i+1:2);
+//
+
+ disp(2:7:5);
+ disp(4+3*%i:4:8+%i);
+//a =4 + 53 *%i : 0 ;
+endfunction
+//OUT(1).SZ(2)= FA_INT(
+// FA_ADD(
+// FA_DIV(
+// FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REAL(IN(1).VAL, IN(3).TP))
+// ,FA_REAL(IN(2).VAL,IN(2).TP)
+// )
+// ,''1''
+// )
+// )
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpDotApex.sci b/2.3-1/tests/unit_tests/float/test_float_OpDotApex.sci
new file mode 100644
index 00000000..5d9ed92a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpDotApex.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpDotApex()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.')
+ disp(d2.')
+ disp(z0.')
+ disp(z2.')
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpDotBackSlas.sci b/2.3-1/tests/unit_tests/float/test_float_OpDotBackSlas.sci
new file mode 100644
index 00000000..5df04b1e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpDotBackSlas.sci
@@ -0,0 +1,31 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpDotBackSlas()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.\d0)
+ disp(z0.\z0)
+ disp(d2.\d0)
+ disp(z2.\z0)
+
+ disp(d0.\d2)
+ disp(z0.\z2)
+
+ disp(d2.\d2)
+ disp(z2.\z2)
+
+ disp(d2.\z0)
+ disp(z2.\d0)
+
+ disp(d0.\z2)
+ disp(z0.\d2)
+
+ disp(d0.\z0)
+ disp(z0.\d0)
+
+ disp(d2.\z2)
+ disp(z2.\d2)
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpDotHat.sci b/2.3-1/tests/unit_tests/float/test_float_OpDotHat.sci
new file mode 100644
index 00000000..119af7b9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpDotHat.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpDotHat()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.^d0)
+ disp(z0.^z0)
+ disp(d2.^d0)
+ disp(z2.^z0)
+
+ disp(d0.^d2)
+ disp(z0.^z2)
+
+ disp(d2.^d2)
+ disp(z2.^z2)
+
+ disp(d2.^z0)
+ disp(z2.^d0)
+
+ disp(d0.^z2)
+ disp(z0.^d2)
+
+ disp(d0.^z0)
+ disp(z0.^d0)
+
+ disp(d2.^z2)
+ disp(z2.^d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpDotSlash.sci b/2.3-1/tests/unit_tests/float/test_float_OpDotSlash.sci
new file mode 100644
index 00000000..d6efb3c5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpDotSlash.sci
@@ -0,0 +1,27 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpDotSlash()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0./d0)
+ disp(d0./z0)
+ disp(d0./d2)
+ disp(d0./z2)
+
+ disp(d2./d0)
+ disp(d2./z0)
+ disp(d2./d2)
+ disp(d2./z2)
+
+ disp(z0./d0)
+ disp(z0./z0)
+ disp(z0./d2)
+ disp(z0./z2)
+
+ disp(z2./d0)
+ disp(z2./z0)
+ disp(z2./d2)
+ disp(z2./z2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpDotStar.sci b/2.3-1/tests/unit_tests/float/test_float_OpDotStar.sci
new file mode 100644
index 00000000..e0392e9c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpDotStar.sci
@@ -0,0 +1,27 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpDotStar()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0.*d0)
+ disp(d0.*z0)
+ disp(d0.*d2)
+ disp(d0.*z2)
+
+ disp(d2.*d0)
+ disp(d2.*z0)
+ disp(d2.*d2)
+ disp(d2.*z2)
+
+ disp(z0.*d0)
+ disp(z0.*z0)
+ disp(z0.*d2)
+ disp(z0.*z2)
+
+ disp(z2.*d0)
+ disp(z2.*z0)
+ disp(z2.*d2)
+ disp(z2.*z2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpEqual.sci b/2.3-1/tests/unit_tests/float/test_float_OpEqual.sci
new file mode 100644
index 00000000..494a5859
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpEqual.sci
@@ -0,0 +1,25 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpEqual()
+
+ a = %pi;
+ disp(a);
+
+
+ b = %pi + %i;
+ disp(b);
+
+
+ c = "a";
+ disp(c);
+
+
+ d =[ %pi 4 5];
+ disp(d);
+
+ e = [7 8 9]*%i;
+ disp(e);
+
+ f = "plopilou" ;
+ disp(f);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpExt.sci b/2.3-1/tests/unit_tests/float/test_float_OpExt.sci
new file mode 100644
index 00000000..eaf0e43c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpExt.sci
@@ -0,0 +1,26 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpExt ()
+
+ a = [1 2 3 ; 4 5 6];
+
+
+ disp(a(2));
+ disp(a([3 5]));
+ disp(a(2,3));
+ disp(a(2,[2 3]));
+ disp(a ([1 2],1));
+ disp(a ([1 2],[2 3]));
+
+
+ b = [1 2 3 ; 4 5 6] * %i;
+
+
+ disp(b(2));
+ disp(b([3 5]));
+ disp(b(2,3));
+ disp(b(2,[2 3]));
+ disp(b ([1 2],1));
+ disp(b ([1 2],[2 3]));
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpHat.sci b/2.3-1/tests/unit_tests/float/test_float_OpHat.sci
new file mode 100644
index 00000000..22dd5e93
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpHat.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpHat()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+// disp(d0^d0)
+ // disp(z0^z0)
+ // disp(d2^d0)
+ //disp(z2^z0)
+
+ //disp(d0^d2)
+ //disp(z0^z2)
+
+ //disp(d2^d2) // ! Not implemented in Scilab !
+ //disp(z2^z2) // ! Not implemented in Scilab !
+
+ //disp(d2^z0)
+ //disp(z2^d0)
+
+ disp(d0^z2)
+ disp(z0^d2)
+
+ //disp(d0^z0)
+ //disp(z0^d0)
+
+ //disp(d2^z2) // ! Not implemented in Scilab !
+ //disp(z2^d2) // ! Not implemented in Scilab !
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpIns.sci b/2.3-1/tests/unit_tests/float/test_float_OpIns.sci
new file mode 100644
index 00000000..0fd6590c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpIns.sci
@@ -0,0 +1,130 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpIns()
+ //reals
+a=[1 2 3; 4 5 6]
+
+a(3)=-2
+disp(a);
+
+a(3)=-4+%i
+disp(a);
+
+a(1,3)=-12;
+disp(a);
+
+a(1,3)=-5+%i;
+disp(a);
+
+a([1,2],1)=-12;
+disp(a);
+
+a([1,2],1)=-5+%i;
+disp(a);
+
+a(2,[2,3])=-12;
+disp(a);
+
+a(2,[2,3])=-5+%i;
+disp(a);
+
+a([1 2],[1,2,3])=4;
+disp(a);
+
+a([1 2],[1,2,3])=3+%i;
+disp(a);
+
+a([1,3])=7;
+disp(a);
+
+a([1,3])=2+%i;
+disp(a);
+
+a([1,3])=[1,0];
+disp(a);
+
+a([1,3])=[3-%i,1+%i];
+disp(a);
+
+a(2,[1,3])=[-2,-7];
+disp(a);
+
+a(2,[1,3])=[-4+%i,-5+%i];
+disp(a);
+
+a([1,2],3)=[-9;-1];
+disp(a);
+
+a([1,2],3)=[-4+%i;-5+%i];
+disp(a);
+
+a([1,2],[2,3])=[-31 -45;-29 -51];
+disp(a);
+
+a([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+disp(a);
+
+
+//complexes
+
+b=[1-3*%i 2+%i 3+2*%i; 4 5+4*%i 6]
+
+b(3)=-2
+disp(b);
+
+b(3)=-4+%i
+disp(b);
+
+b(1,3)=-12;
+disp(b);
+
+b(1,3)=-5+%i;
+disp(b);
+
+b([1,2],1)=-12;
+disp(b);
+
+b([1,2],1)=-5+%i;
+disp(b);
+
+b(2,[2,3])=-12;
+disp(b);
+
+b(2,[2,3])=-5+%i;
+disp(b);
+
+b([1 2],[1,2,3])=4;
+disp(b);
+
+b([1 2],[1,2,3])=3+%i;
+disp(b);
+
+b([1,3])=7;
+disp(b);
+
+b([1,3])=2+%i;
+disp(b);
+
+b([1,3])=[1,0];
+disp(b);
+
+b([1,3])=[3-%i,1+%i];
+disp(b);
+
+b(2,[1,3])=[-2,-7];
+disp(b);
+
+b(2,[1,3])=[-4+%i,-5+%i];
+disp(b);
+
+b([1,2],3)=[-9;-1];
+disp(b);
+
+b([1,2],3)=[-4+%i;-5+%i];
+disp(b);
+
+b([1,2],[2,3])=[-31 -45;-29 -51];
+disp(b);
+
+b([1,2],[2,3])=[-4+%i,-5+%i;-4+%i,-5+%i];
+disp(b);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogAnd.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogAnd.sci
new file mode 100644
index 00000000..3a919dc9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogAnd.sci
@@ -0,0 +1,38 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogAnd()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0&d0)
+ disp(z0&z0)
+ disp(d2&d0)
+ disp(z2&z0)
+
+ disp(d0&d2)
+ disp(z0&z2)
+
+ disp(d2&d2)
+ disp(z2&z2)
+
+ disp(d2&z0)
+ disp(z2&d0)
+
+ disp(d0&z2)
+ disp(z0&d2)
+
+ disp(d0&z0)
+ disp(z0&d0)
+
+ disp(d2&z2)
+ disp(z2&d2)
+
+ disp('');
+ disp(%t&%f)
+ disp(%f&%t)
+ disp(%t&%t)
+ disp(%f&%f)
+ disp('');
+ disp([%t %f] &%f)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogEq.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogEq.sci
new file mode 100644
index 00000000..8a753ec4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogEq.sci
@@ -0,0 +1,34 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogEq()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+ g0 = 'A'
+ g2 = "foo"
+
+ //disp(g0==g0) // ! Unable to manage this case !
+
+ disp(d0==d0)
+ disp(z0==z0)
+ disp(d2==d0)
+ disp(z2==z0)
+
+ disp(d0==d2)
+ disp(z0==z2)
+
+ disp(d2==d2)
+ disp(z2==z2)
+
+ disp(d2==z0)
+ disp(z2==d0)
+
+ disp(d0==z2)
+ disp(z0==d2)
+
+ disp(d0==z0)
+ disp(z0==d0)
+
+ disp(d2==z2)
+ disp(z2==d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogGe.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogGe.sci
new file mode 100644
index 00000000..a1e0ef2f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogGe.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogGe()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0>=d0)
+ //disp(z0>=z0)
+ disp(d2>=d0)
+ //disp(z2>=z0)
+
+ disp(d0>=d2)
+ //disp(z0>=z2)
+
+ disp(d2>=d2)
+ //disp(z2>=z2)
+
+ //disp(d2>=z0)
+ //disp(z2>=d0)
+
+ //disp(d0>=z2)
+ //disp(z0>=d2)
+
+ //disp(d0>=z0)
+ //disp(z0>=d0)
+
+ //disp(d2>=z2)
+ //disp(z2>=d2)
+ endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogGt.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogGt.sci
new file mode 100644
index 00000000..f51b3195
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogGt.sci
@@ -0,0 +1,31 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogGt()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0>d0)
+ //disp(z0>z0)
+ disp(d2>d0)
+ //disp(z2>z0)
+
+ disp(d0>d2)
+ //disp(z0>z2)
+
+ disp(d2>d2)
+ //disp(z2>z2)
+
+ //disp(d2>z0)
+ //disp(z2>d0)
+
+ //disp(d0>z2)
+ //disp(z0>d2)
+
+ //disp(d0>z0)
+ //disp(z0>d0)
+
+ //disp(d2>z2)
+ //disp(z2>d2)
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogLe.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogLe.sci
new file mode 100644
index 00000000..435940c6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogLe.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogLe()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0<=d0)
+ //disp(z0<=z0)
+ disp(d2<=d0)
+ //disp(z2<=z0)
+
+ disp(d0<=d2)
+ //disp(z0<=z2)
+
+ disp(d2<=d2)
+ //disp(z2<=z2)
+
+ //disp(d2<=z0)
+ //disp(z2<=d0)
+
+ //disp(d0<=z2)
+ //disp(z0<=d2)
+
+ //disp(d0<=z0)
+ //disp(z0<=d0)
+
+ //disp(d2<=z2)
+ //disp(z2<=d2)
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogLt.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogLt.sci
new file mode 100644
index 00000000..02deb345
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogLt.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogLt()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0<d0)
+ //disp(z0<z0)
+ disp(d2<d0)
+ //disp(z2<z0)
+
+ disp(d0<d2)
+ //disp(z0<z2)
+
+ disp(d2<d2)
+ //disp(z2<z2)
+
+ //disp(d2<z0)
+ //disp(z2<d0)
+
+ //disp(d0<z2)
+ //disp(z0<d2)
+
+ //disp(d0<z0)
+ //disp(z0<d0)
+
+ //disp(d2<z2)
+ //disp(z2<d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogNe.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogNe.sci
new file mode 100644
index 00000000..858b9c8b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogNe.sci
@@ -0,0 +1,34 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogNe()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+ g0 = 'A'
+ g2 = "foo"
+
+ //disp(g0<>g0)
+
+ disp(d0<>d0)
+ disp(z0<>z0)
+ disp(d2<>d0)
+ disp(z2<>z0)
+
+ disp(d0<>d2)
+ disp(z0<>z2)
+
+ disp(d2<>d2)
+ disp(z2<>z2)
+
+ disp(d2<>z0)
+ disp(z2<>d0)
+
+ disp(d0<>z2)
+ disp(z0<>d2)
+
+ disp(d0<>z0)
+ disp(z0<>d0)
+
+ disp(d2<>z2)
+ disp(z2<>d2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogNot.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogNot.sci
new file mode 100644
index 00000000..b4fc390e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogNot.sci
@@ -0,0 +1,24 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogNot()
+// test OpLogNot
+
+ disp(~(-2))
+ disp(~(0))
+ disp(~(3))
+
+ disp(~(0-2*%i))
+ disp(~(0+0*%i))
+ disp(~(0+3*%i))
+ disp(~(3-5*%i))
+ disp(~(3+0*%i))
+ disp(~(3+6*%i))
+
+ a=[-1 2 3; 0 -1 4; 2 -0 5];
+
+ disp(~(a))
+
+ b=[0+3*%i 2-%i 1 ; 0-2*%i 2+2*%i 1-%i; 0+0*%i 4+0*%i 5-0*%i]
+
+ disp(~(b))
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpLogOr.sci b/2.3-1/tests/unit_tests/float/test_float_OpLogOr.sci
new file mode 100644
index 00000000..c2309b83
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpLogOr.sci
@@ -0,0 +1,37 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpLogOr()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0|d0)
+ disp(z0|z0)
+ disp(d2|d0)
+ disp(z2|z0)
+
+ disp(d0|d2)
+disp(z0|z2)
+
+disp(d2|d2)
+disp(z2|z2)
+
+disp(d2|z0)
+disp(z2|d0)
+
+disp(d0|z2)
+disp(z0|d2)
+
+ disp(d0|z0)
+ disp(z0|d0)
+
+disp(d2|z2)
+disp(z2|d2)
+ disp('');
+ disp(%t|%f)
+ disp(%f|%t)
+ disp(%t|%t)
+ disp(%f|%f)
+ disp('');
+ disp([%t %f] |%f)
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpMinus.sci b/2.3-1/tests/unit_tests/float/test_float_OpMinus.sci
new file mode 100644
index 00000000..4dee75a6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpMinus.sci
@@ -0,0 +1,46 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpMinus()
+ a = 1;
+ b = 2;
+ c = a - b; // d0d0OpMinusd0
+ disp(c);
+
+ d = 1 - %i; // d0z0OpMinusz0
+ e = %i - 3; // z0d0OpMinusz0
+ f = d - e; // z0z0OpMinusz0
+
+ disp(f);
+
+ g = [1 2 3; 4 5 6];
+ h = 10;
+ w = g - h; // d2d0OpMinusd2
+ j = h - g; // d0d2OpMinusd2
+
+ disp(j);
+
+ k = [9 8 7; 6 5 4; 3 2 1]
+ l = [1 2 3; 4 5 6; 7 8 9]
+ m = k - l // d2d2OpMinusd2
+
+ disp(m);
+ n = k - 2 * %i; //d2z0OpMinusz2
+ o = 3 * %i - l; //z0d2OpMinusz2
+ p = n - o; // z2z2OpMinusz2
+
+ disp(p);
+ q = [1 2 3 ; 4 5 6 ; 7 8 9]
+ r = %pi * %i;
+ s = q - r; // d2z0OpMinusz2
+ t = r - q; // z0d2OpMinusz2
+
+ disp(s);
+ disp(t);
+ u = [1 2 3] - %i * [4 5 6]
+ v = [7 8 9]
+ x = u - v; // z2d2OpMinusz2
+ y = v - u; // d2z2OpMinusz2
+
+ disp(x);
+
+ disp(y);
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpPlus.sci b/2.3-1/tests/unit_tests/float/test_float_OpPlus.sci
new file mode 100644
index 00000000..0f2b96e8
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpPlus.sci
@@ -0,0 +1,49 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpPlus()
+ a = 1;
+ b = 2;
+ c = a + b; // d0d0OpPlusd0
+
+ d = 1 + %i; // d0z0OpPlusz0
+ e = %i + 3; // z0d0OpPlusz0
+ f = d + e; // z0z0OpPlusz0
+
+ g = [1 2 3; 4 5 6];
+ h = 10;
+ w = g + h; // d2d0OpPlusd2
+ j = h + g; // d0d2OpPlusd2
+
+ k = [9 8 7; 6 5 4; 3 2 1]
+ l = [1 2 3; 4 5 6; 7 8 9]
+ m = k + l // d2d2OpPlusd2
+
+ n = k + 2 * %i; //d2z0OpPlusz2
+ o = 3 * %i + l; //z0d2OpPlusz2
+ p = n + o; // z2z2OpPlusz2
+
+ q = [1 2 3 ; 4 5 6 ; 7 8 9]
+ r = 3 * %i;
+ s = q + r; // d2z0OpPlusz2
+ t = r + q; // z0d2OpPlusz2
+
+ u = [1 2 3] + %i * [4 5 6]
+ v = [7 8 9]
+ x = u + v; // z2d2OpPlusz2
+ y = v + u; // d2z2OpPlusz2
+
+
+ disp(c);
+ disp(d);
+ disp(e);
+ disp(f);
+ disp("");
+ disp(w);
+ disp(j);
+ disp(m);
+ disp(p);
+ disp(s);
+ disp(t);
+ disp(x);
+ disp(y);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpRc.sci b/2.3-1/tests/unit_tests/float/test_float_OpRc.sci
new file mode 100644
index 00000000..3e084595
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpRc.sci
@@ -0,0 +1,46 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function test_float_OpRc()
+
+ a = [1 , 2 , 3 , 4]; // d0d0OpRcs2
+ b = [7 , a];// d0d2OpRcs2
+ c = [a , 7];// d2d0OpRcs2
+ d = [a , b];// d2d2OpRcs2
+ disp(a);
+ disp(b);
+ disp(c);
+ disp(d);
+
+ e = [1*%i , 2*%i , 3*%i , 4*%i ];// z0z0OpRcz2
+ f = [7 , e];// z0z2OpRcz2
+ g = [e , 7];// z2z0OpRcz2
+ h = [e , f];// z2z2OpRcz2
+
+ disp(e);
+ disp(f);
+ disp(g);
+ disp(h);
+
+
+ i = [%i , 4.5]; // z0d0OpRcz2
+ j = [4.5 , %i ]; // d0z0OpRcz2
+ k = [4.5 , i ]; // d0z2OpRcz2
+ l = [i , 4.5]; // z2d0OpRcz2
+
+ disp(i);
+ disp(j);
+ disp(k);
+ disp(l);
+
+ m = [1 , 4.5];
+ n = [%i , m ]; // z0d2OpRcz2
+ o = [m , %i ]; // d0z2OpRcz2
+ p = [m , n ]; // d2z2OpRcz2
+ q = [n , m ]; // z2d2OpRcz2
+
+ disp(n);
+ disp(o);
+ disp(p);
+ disp(q);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpSlash.sci b/2.3-1/tests/unit_tests/float/test_float_OpSlash.sci
new file mode 100644
index 00000000..1312a72d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpSlash.sci
@@ -0,0 +1,33 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpSlash()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0/d0)
+ disp(d0/z0)
+ disp(z0/d0)
+ disp(z0/z0)
+
+ disp(d2/d0)
+ disp(d2/z0)
+ disp(z2/d0)
+ disp(z2/z0)
+
+ disp(d0/d2)
+ disp(d0/z2)
+ disp(z0/d2)
+ disp(z0/z2)
+
+ disp(d2/d2)
+ disp(d2/z2)
+ disp(z2/d2)
+ disp(z2/z2)
+
+ disp([1 2 3]/[1 2 3]) //d2d2OpSlashd0
+ disp([1 2 3]/(%i * [1 2 3])) //d2z2OpSlashz0
+ disp((%i * [1 2 3])/[1 2 3]) //z2d2OpSlashz0
+ disp((%i * [1 2 3])/(%i * [1 2 3])) //z2z2OpSlashz0
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_OpStar.sci b/2.3-1/tests/unit_tests/float/test_float_OpStar.sci
new file mode 100644
index 00000000..fa6d388b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_OpStar.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_OpStar()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(d0*d0)
+ disp(d0*z0)
+ disp(z0*d0)
+ disp(z0*z0)
+
+ disp(d2*d0)
+ disp(d2*z0)
+ disp(z2*d0)
+ disp(z2*z0)
+
+ disp(d0*d2)
+ disp(d0*z2)
+ disp(z0*d2)
+ disp(z0*z2)
+
+ disp(d2*d2)
+ disp(d2*z2)
+ disp(z2*d2)
+ disp(z2*z2)
+
+ disp([1 2 3]*[1 2 3]') //d2d2OpStard0
+ disp([1 2 3]*(%i * [1 2 3])') //d2z2OpStarz0
+ disp((%i * [1 2 3])*[1 2 3]') //z2d2OpStarz0
+ disp((%i * [1 2 3])*(%i * [1 2 3])') //z2z2OpStarz0
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_Size.sci b/2.3-1/tests/unit_tests/float/test_float_Size.sci
new file mode 100644
index 00000000..cd80e8f0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Size.sci
@@ -0,0 +1,42 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Size()
+ disp(size(4));
+ disp(size([1 2]))
+ disp(size(2+3*%i));
+ disp(size([1 2 3 ; 4 5 6]));
+ disp(size([1 2 3 ; 4 5 6]*%i));
+ e = %pi ;
+ disp(size(e)); // d0Sized0
+
+ f = e * %i;
+ disp(size(f));// z0Sized0
+
+ a = [1 2 3 ; 4 5 6];
+ disp(size(a));// d2Sized0
+
+ b = [1 2 3 ; 4 5 6] * %i;
+ disp(size(b));// z2Sized0
+
+// with a second argument
+ o=1;
+
+ disp(size(4,1));
+ disp(size(2+3*%i,1));
+ disp(size([1 2 3 ; 4 5 6],o));
+ disp(size([1 2 3 ; 4 5 6]*%i,1));
+ e = %pi ;
+ disp(size(e,1)); // d0Sized0
+
+ f = e * %i;
+ disp(size(f,1));// z0Sized0
+
+ a = [1 2 3 ; 4 5 6];
+ disp(size(a,o));// d2Sized0
+
+ b = [1 2 3 ; 4 5 6] * %i;
+ disp(size(b,1));// z2Sized0
+
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Spec.sci b/2.3-1/tests/unit_tests/float/test_float_Spec.sci
new file mode 100644
index 00000000..42041925
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Spec.sci
@@ -0,0 +1,42 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Spec()
+
+
+ disp(spec(45)) ; // d0Spec
+ disp(spec(4+3*%i)); // z0Spec
+
+ a = [1 2 3; -4 5 98 ; 7 8 5] ;
+ b = [1 2 3; -4 5 98 ; 7 -100000 5] ;
+
+
+ disp(spec(a));
+ disp(spec(b));
+
+ disp(spec(a*%i));
+ // 2 outputs
+
+ [aa bb] = spec(45) ; // d0Spec
+ disp(aa);
+ disp(bb);
+
+ [cc dd] = spec(4+3*%i); // z0Spec
+
+ disp(cc);
+ disp(dd);
+
+ a = [1 2 3; -4 5 98 ; 7 8 5] ;
+ b = [1 2 3; -4 5 98 ; 7 -100000 5] ;
+
+
+ [ee ff] = spec(a);
+ disp(ee);
+ disp(ff);
+ [gg hh] = spec(b);
+ disp(gg);
+ disp(hh);
+
+ [ii jj] = spec(a*%i);
+ disp(ii);
+ disp(jj);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Stdevf.sci b/2.3-1/tests/unit_tests/float/test_float_Stdevf.sci
new file mode 100644
index 00000000..d429e557
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Stdevf.sci
@@ -0,0 +1,46 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function test_float_Stdevf()
+ disp (stdevf (4 , 5 )) ;
+ disp ("*******1*******");
+ disp (stdevf ([4 5 6], [1 2 3]));
+ disp ("*******2*******");
+ disp (stdevf (4 , 5*%i )) ;
+ disp ("*******3*******");
+ disp (stdevf ([4 5 6], [1 2 3]*%i));
+ disp ("*******4*******");
+
+
+
+ disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6],1));
+ disp ("*******5*******");
+ disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6],2));
+// complex
+ disp ("*******6*******");
+ disp (stdevf (4 +4*%i , 5 )) ;
+ disp ("*******7*******");
+ disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]));
+ disp ("*******8*******");
+ disp (stdevf (4 +4*%i , 5*%i )) ;
+ disp ("*******9*******");
+ disp (stdevf ([4*%i, 5+6*%i, 6], [1 2 3]*%i));
+ disp ("******10*******");
+
+
+ disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6],1));
+ disp ("******11*******");
+ disp (stdevf ([4 7; 5 8; 6 9], [1 4; 2 5; 3 6]*%i,2));
+ disp (stdevf ([4 5 6 ; 7 8 9],[1 2 3 ; 4 8 9] + [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******12*******");
+ disp (stdevf ([4 5 6 ; 7 8 9], [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******13*******");
+ disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6],2));
+ disp ("******14*******");
+
+ disp (stdevf ([4 5 6 ; 7 8 9]*%i, [1 2 3 ; 4 5 6]*%i,1));
+ disp ("******15*******");
+ disp (stdevf ([4 7; 5 8; 6 9]*%i, [1 4; 2 5; 3 6]*%i,2));
+ disp ("******16*******");
+//
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Trace.sci b/2.3-1/tests/unit_tests/float/test_float_Trace.sci
new file mode 100644
index 00000000..74d20d93
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Trace.sci
@@ -0,0 +1,14 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Trace()
+
+ a = [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(trace(a));
+
+ b = %i * [1 2 3; 4 %pi 5; 4.5 -3 2];
+ disp(trace(b));
+
+
+ disp(trace(5));
+
+ disp(trace(%i));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_Type.sci b/2.3-1/tests/unit_tests/float/test_float_Type.sci
new file mode 100644
index 00000000..7e10aaa7
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_Type.sci
@@ -0,0 +1,9 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_Type()
+
+ disp(type(%pi));
+ disp(type(%pi + %i));
+ disp(type([%pi 4]));
+ disp(type([%pi %i]));
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_abs.sci b/2.3-1/tests/unit_tests/float/test_float_abs.sci
new file mode 100644
index 00000000..05dfa95c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_abs.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_abs()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(abs(d0))
+ disp(abs(z0))
+ disp(abs(d2))
+ disp(abs(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_acos.sci b/2.3-1/tests/unit_tests/float/test_float_acos.sci
new file mode 100644
index 00000000..9abb6ba1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_acos.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_acos()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(acos(d0));
+ disp(acos(d2));
+ disp(acos(z0));
+ disp(acos(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_acosh.sci b/2.3-1/tests/unit_tests/float/test_float_acosh.sci
new file mode 100644
index 00000000..1fa1556f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_acosh.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_acosh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(acosh(d0));
+ disp(acosh(d2));
+ disp(acosh(z0));
+ disp(acosh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_asin.sci b/2.3-1/tests/unit_tests/float/test_float_asin.sci
new file mode 100644
index 00000000..72b2234a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_asin.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_asin()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(asin(d0));
+ disp(asin(d2));
+ disp(asin(z0));
+ disp(asin(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_asinh.sci b/2.3-1/tests/unit_tests/float/test_float_asinh.sci
new file mode 100644
index 00000000..f952001e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_asinh.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_asinh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(asinh(d0));
+ disp(asinh(d2));
+ disp(asinh(z0));
+ disp(asinh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_atan.sci b/2.3-1/tests/unit_tests/float/test_float_atan.sci
new file mode 100644
index 00000000..864ea65e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_atan.sci
@@ -0,0 +1,15 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_atan()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(atan(d0));
+ disp(atan(d2));
+ disp(atan(z0));
+ disp(atan(z2));
+
+ disp(atan(d0,d0));
+ disp(atan(d2,d2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_atanh.sci b/2.3-1/tests/unit_tests/float/test_float_atanh.sci
new file mode 100644
index 00000000..9f693a42
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_atanh.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_atanh()
+ d0 = %pi
+ d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(atanh(d0));
+ disp(atanh(d2));
+ disp(atanh(z0));
+ disp(atanh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_ceil.sci b/2.3-1/tests/unit_tests/float/test_float_ceil.sci
new file mode 100644
index 00000000..0cda6c5e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_ceil.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_ceil()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(ceil(d0));
+ disp(ceil(d2));
+ disp(ceil(z0));
+ disp(ceil(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_chol.sci b/2.3-1/tests/unit_tests/float/test_float_chol.sci
new file mode 100644
index 00000000..d8306e6b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_chol.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_chol()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(chol(d0));
+ disp(chol(d2*d2'));
+ disp(chol(z0));
+ disp(chol(z2*z2'));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_conj.sci b/2.3-1/tests/unit_tests/float/test_float_conj.sci
new file mode 100644
index 00000000..c3141379
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_conj.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_conj()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(conj(d0));
+ disp(conj(d2));
+ disp(conj(z0));
+ disp(conj(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_cos.sci b/2.3-1/tests/unit_tests/float/test_float_cos.sci
new file mode 100644
index 00000000..bcb53b36
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_cos.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_cos()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(cos(d0));
+ disp(cos(d2));
+ disp(cos(z0));
+ disp(cos(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_cosh.sci b/2.3-1/tests/unit_tests/float/test_float_cosh.sci
new file mode 100644
index 00000000..cd393494
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_cosh.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_cosh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(cosh(d0));
+ disp(cosh(d2));
+ disp(cosh(z0));
+ disp(cosh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_exp.sci b/2.3-1/tests/unit_tests/float/test_float_exp.sci
new file mode 100644
index 00000000..583a5fc9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_exp.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_exp()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(exp(d0));
+ disp(exp(d2));
+ disp(exp(z0));
+ disp(exp(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_eye.sci b/2.3-1/tests/unit_tests/float/test_float_eye.sci
new file mode 100644
index 00000000..fe1c6d7f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_eye.sci
@@ -0,0 +1,15 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_eye()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(eye(d0))
+ disp(eye(z0))
+ disp(eye(d2))
+ disp(eye(z2))
+ //disp(eye(0,0)) // ! sci2c does not manage [] !
+ disp(eye(1,1))
+ disp(eye(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_fix.sci b/2.3-1/tests/unit_tests/float/test_float_fix.sci
new file mode 100644
index 00000000..cf6d5f1e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_fix.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_fix()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(fix(d0));
+ disp(fix(d2));
+ disp(fix(z0));
+ disp(fix(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_floor.sci b/2.3-1/tests/unit_tests/float/test_float_floor.sci
new file mode 100644
index 00000000..34723a21
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_floor.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_floor()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(floor(d0));
+ disp(floor(d2));
+ disp(floor(z0));
+ disp(floor(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_imag.sci b/2.3-1/tests/unit_tests/float/test_float_imag.sci
new file mode 100644
index 00000000..248588ed
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_imag.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_imag()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(imag(d0))
+ disp(imag(z0))
+ disp(imag(d2))
+ disp(imag(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_int.sci b/2.3-1/tests/unit_tests/float/test_float_int.sci
new file mode 100644
index 00000000..43be0058
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_int.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_int()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(int(d0));
+ disp(int(d2));
+ disp(int(z0));
+ disp(int(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_inv.sci b/2.3-1/tests/unit_tests/float/test_float_inv.sci
new file mode 100644
index 00000000..84b79350
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_inv.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_inv()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(inv(d0));
+ disp(inv(d2));
+ disp(inv(z0));
+ disp(inv(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_isnan.sci b/2.3-1/tests/unit_tests/float/test_float_isnan.sci
new file mode 100644
index 00000000..e8c6edcb
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_isnan.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_isnan()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(isnan(d0))
+ disp(isnan(d2))
+ disp(isnan(z0))
+ disp(isnan(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_log.sci b/2.3-1/tests/unit_tests/float/test_float_log.sci
new file mode 100644
index 00000000..e3fca7d1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_log.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_log()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(log(d0));
+ disp(log(d2));
+ disp(log(z0));
+ disp(log(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_log10.sci b/2.3-1/tests/unit_tests/float/test_float_log10.sci
new file mode 100644
index 00000000..28831699
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_log10.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+ function test_float_log10()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(log10(d0));
+ disp(log10(d2));
+ disp(log10(z0));
+ disp(log10(z2));
+ endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_log1p.sci b/2.3-1/tests/unit_tests/float/test_float_log1p.sci
new file mode 100644
index 00000000..64d154c3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_log1p.sci
@@ -0,0 +1,13 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_log1p()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(log1p(d0));
+ disp(log1p(d2));
+ //disp(log1p(z0)); // ! Not Implemented in Scilab !
+ //disp(log1p(z2)); // ! Not Implemented in Scilab !
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_max.sci b/2.3-1/tests/unit_tests/float/test_float_max.sci
new file mode 100644
index 00000000..5001e029
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_max.sci
@@ -0,0 +1,17 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_max()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ d3 = [1 2 9 4 ; 5 6 7 8 ; 9 10 17 12 ; 14 14 15 16]
+
+ disp(max(d0))
+ disp(max(d2))
+
+ disp(max(d0, 8))
+ disp(max(d0, d2))
+ disp(max(d2, 8))
+ disp(max(d3, d2))
+
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_mean.sci b/2.3-1/tests/unit_tests/float/test_float_mean.sci
new file mode 100644
index 00000000..7da964a1
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_mean.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_mean()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(mean(d0))
+ disp(mean(z0))
+ disp(mean(d2))
+ disp(mean(z2))
+
+ disp(mean(d0, 1))
+ disp(mean(z0, 1))
+ disp(mean(d2, 1))
+ disp(mean(z2, 1))
+
+ disp(mean(d0, 2))
+ disp(mean(z0, 2))
+ disp(mean(d2, 2))
+ disp(mean(z2, 2))
+
+disp(mean(d0, 'r'))
+disp(mean(z0, 'r'))
+disp(mean(d2, 'r'))
+disp(mean(z2, 'r'))
+
+disp(mean(d0, 'c'))
+disp(mean(z0, 'c'))
+disp(mean(d2, 'c'))
+disp(mean(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_min.sci b/2.3-1/tests/unit_tests/float/test_float_min.sci
new file mode 100644
index 00000000..3f96abfa
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_min.sci
@@ -0,0 +1,19 @@
+
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_min()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ d3 = [1 2 9 4 ; 5 6 7 8 ; 9 10 17 12 ; 14 14 15 16]
+
+ disp(min(d0))
+ disp(min(d2))
+
+ disp(min(d0, 8))
+ disp(min(d0, d2))
+ disp(min(d2, 8))
+ disp(min(d3, d2))
+
+
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/float/test_float_ones.sci b/2.3-1/tests/unit_tests/float/test_float_ones.sci
new file mode 100644
index 00000000..00e526b0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_ones.sci
@@ -0,0 +1,15 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_ones()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(ones(d0))
+ disp(ones(z0))
+ disp(ones(d2))
+ disp(ones(z2))
+ //disp(ones(0,0)) // ! sci2c does not manage [] !
+ disp(ones(1,1))
+ disp(ones(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_prod.sci b/2.3-1/tests/unit_tests/float/test_float_prod.sci
new file mode 100644
index 00000000..b687a88a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_prod.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_prod()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(prod(d0))
+ disp(prod(z0))
+ disp(prod(d2))
+ disp(prod(z2))
+
+ disp(prod(d0, 1))
+ disp(prod(z0, 1))
+ disp(prod(d2, 1))
+ disp(prod(z2, 1))
+
+ disp(prod(d0, 2))
+ disp(prod(z0, 2))
+ disp(prod(d2, 2))
+ disp(prod(z2, 2))
+
+ disp(prod(d0, 'r'))
+ disp(prod(z0, 'r'))
+ disp(prod(d2, 'r'))
+ disp(prod(z2, 'r'))
+
+ disp(prod(d0, 'c'))
+ disp(prod(z0, 'c'))
+ disp(prod(d2, 'c'))
+ disp(prod(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_rand.sci b/2.3-1/tests/unit_tests/float/test_float_rand.sci
new file mode 100644
index 00000000..9ad2a378
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_rand.sci
@@ -0,0 +1,15 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_rand()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(rand(d0))
+ disp(rand(z0))
+ disp(rand(d2))
+ disp(rand(z2))
+ //disp(rand(0,0)) // ! sci2c does not manage [] !
+ disp(rand(1,1))
+ disp(rand(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_real.sci b/2.3-1/tests/unit_tests/float/test_float_real.sci
new file mode 100644
index 00000000..28632f06
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_real.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_real()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(real(d0))
+ disp(real(z0))
+ disp(real(d2))
+ disp(real(z2))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_round.sci b/2.3-1/tests/unit_tests/float/test_float_round.sci
new file mode 100644
index 00000000..94fb4f17
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_round.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_round()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(round(d0));
+ disp(round(d2));
+ disp(round(z0));
+ disp(round(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_sign.sci b/2.3-1/tests/unit_tests/float/test_float_sign.sci
new file mode 100644
index 00000000..1f7e32a4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_sign.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_sign()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sign(d0));
+ disp(sign(d2));
+ disp(sign(z0));
+ disp(sign(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_sin.sci b/2.3-1/tests/unit_tests/float/test_float_sin.sci
new file mode 100644
index 00000000..6fe5eb12
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_sin.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_sin()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sin(d0));
+ disp(sin(d2));
+ disp(sin(z0));
+ disp(sin(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_sinh.sci b/2.3-1/tests/unit_tests/float/test_float_sinh.sci
new file mode 100644
index 00000000..0897290b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_sinh.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_sinh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sinh(d0));
+ disp(sinh(d2));
+ disp(sinh(z0));
+ disp(sinh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_sqrt.sci b/2.3-1/tests/unit_tests/float/test_float_sqrt.sci
new file mode 100644
index 00000000..52c9dd83
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_sqrt.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_sqrt()
+ d0 = %pi
+ d2 = [2 2 3 4 ; 4 5 6 8 ; 9 10 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sqrt(d0));
+ disp(sqrt(d2));
+ disp(sqrt(z0));
+ disp(sqrt(z2));
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/float/test_float_st_deviation.sci b/2.3-1/tests/unit_tests/float/test_float_st_deviation.sci
new file mode 100644
index 00000000..568d1a31
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_st_deviation.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_st_deviation()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(st_deviation(d0))
+ disp(st_deviation(z0))
+ disp(st_deviation(d2))
+ disp(st_deviation(z2))
+
+ disp(st_deviation(d0, 1))
+ disp(st_deviation(z0, 1))
+ disp(st_deviation(d2, 1))
+ disp(st_deviation(z2, 1))
+
+ disp(st_deviation(d0, 2))
+ disp(st_deviation(z0, 2))
+ disp(st_deviation(d2, 2))
+ disp(st_deviation(z2, 2))
+
+// disp(st_deviation(d0, 'r'))
+// disp(st_deviation(z0, 'r'))
+// disp(st_deviation(d2, 'r'))
+// disp(st_deviation(z2, 'r'))
+
+// disp(st_deviation(d0, 'c'))
+// disp(st_deviation(z0, 'c'))
+// disp(st_deviation(d2, 'c'))
+// disp(st_deviation(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_sum.sci b/2.3-1/tests/unit_tests/float/test_float_sum.sci
new file mode 100644
index 00000000..86ff0fd5
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_sum.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_sum()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(sum(d0))
+ disp(sum(z0))
+ disp(sum(d2))
+ disp(sum(z2))
+
+ disp(sum(d0, 1))
+ disp(sum(z0, 1))
+ disp(sum(d2, 1))
+ disp(sum(z2, 1))
+
+ disp(sum(d0, 2))
+ disp(sum(z0, 2))
+ disp(sum(d2, 2))
+ disp(sum(z2, 2))
+
+ disp(sum(d0, 'r'))
+ disp(sum(z0, 'r'))
+ disp(sum(d2, 'r'))
+ disp(sum(z2, 'r'))
+
+ disp(sum(d0, 'c'))
+ disp(sum(z0, 'c'))
+ disp(sum(d2, 'c'))
+ disp(sum(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_tanh.sci b/2.3-1/tests/unit_tests/float/test_float_tanh.sci
new file mode 100644
index 00000000..af0f12e3
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_tanh.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_tanh()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(tanh(d0));
+ disp(tanh(d2));
+ disp(tanh(z0));
+ disp(tanh(z2));
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_variance.sci b/2.3-1/tests/unit_tests/float/test_float_variance.sci
new file mode 100644
index 00000000..fae69a1b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_variance.sci
@@ -0,0 +1,32 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_variance()
+ d0 = 0.2113249
+ d2 = [0.2113249 0.0002211 0.6653811;0.7560439 0.4453586 0.6283918]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ //disp(variance(d0))
+ //disp(variance(z0))
+ disp(variance(d2))
+ disp(variance(z2))
+
+ //disp(variance(d0, 1))
+ //disp(variance(z0, 1))
+ disp(variance(d2, 1))
+ disp(variance(z2, 1))
+
+ //disp(variance(d0, 2))
+ //disp(variance(z0, 2))
+ disp(variance(d2, 2))
+ disp(variance(z2, 2))
+
+//disp(variance(d0, 'r'))
+//disp(variance(z0, 'r'))
+disp(variance(d2, 'r'))
+disp(variance(z2, 'r'))
+
+//disp(variance(d0, 'c'))
+//disp(variance(z0, 'c'))
+disp(variance(d2, 'c'))
+disp(variance(z2, 'c'))
+endfunction
diff --git a/2.3-1/tests/unit_tests/float/test_float_zeros.sci b/2.3-1/tests/unit_tests/float/test_float_zeros.sci
new file mode 100644
index 00000000..27f4ced0
--- /dev/null
+++ b/2.3-1/tests/unit_tests/float/test_float_zeros.sci
@@ -0,0 +1,15 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function test_float_zeros()
+ d0 = %pi
+ d2 = [1 2 3 4 ; 4 5 1 8 ; 9 1 11 12 ; 13 14 15 16]
+ z0 = d0 + %i * d0
+ z2 = d2 + %i * d2
+
+ disp(zeros(d0))
+ disp(zeros(z0))
+ disp(zeros(d2))
+ disp(zeros(z2))
+ //disp(zeros(0,0)) // ! sci2c does not manage [] !
+ disp(zeros(1,1))
+ disp(zeros(d0,d0))
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/test000_TrigonIdentity/launchConversion.sci b/2.3-1/tests/unit_tests/test000_TrigonIdentity/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test000_TrigonIdentity/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..b19fc009
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test000_TrigonIdentity/scilabcode/mainfunction.sci
@@ -0,0 +1,30 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+// ------------------------------
+// --- Simple Scalar Addition ---
+// ------------------------------
+a = 1;
+b = 2;
+c = 0;
+c = a + b;
+disp(c);
+
+// ------------------------------
+// --- Trigonometric Identity ---
+// ------------------------------
+x = (1:3)' * (4:9);
+y = (sin(x).^2) + (cos(x).^2);
+disp(x);
+disp(y-ones(3,6));
+
+// -------------------------------
+// --- Computation of Distance ---
+// -------------------------------
+// generate a vector w
+w = cos(sin(cos(x*3)*2).* x+ones(3,6).*cos(x-sin(y*2)));
+distxw = sqrt(x.^2 + w.^2);
+disp(distxw);
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test001_LinearRegression/launchConversion.sci b/2.3-1/tests/unit_tests/test001_LinearRegression/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test001_LinearRegression/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..13624cfb
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test001_LinearRegression/scilabcode/mainfunction.sci
@@ -0,0 +1,56 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+// Knowing that
+// (1) P * (V^gamma) = C
+// Where
+// P = Pressure
+// V = Volume
+// gamma,C = constants depending on the particular gas used.
+// (2) log10(P) = log10(C) - gamma*log10(V)
+// (3) x = log10(V)
+// (4) y = log10(P)
+// than (2) becomes:
+// y = a + b*x;
+// Where
+// a = log10(C)
+// b = -gamma
+// Then thanks to this transformation it is possible to perform
+// a linear regression to estimate gamma and C!
+
+Volume = [54.3 61.8 72.4 88.7 118.6 194.0];
+Pressure = [61.2 49.5 37.6 28.4 19.2 10.1];
+x = log10(Volume);
+y = log10(Pressure);
+
+a = (sum(y)*sum(x.^2)-sum(x)*sum(x.*y))./(length(x)*sum(x.^2)-sum(x).*sum(x));
+b = (length(x)*sum(x.*y)-sum(x)*sum(y))./(length(x)*sum(x.^2)-sum(x).*sum(x));
+
+// Other way to compute a and b
+beq = sum((x-mean(x)).*(y-mean(y)))./sum((x-mean(x)).^2);
+aeq = mean(y)-mean(x)*beq;
+
+C = 10 .^a;
+gamma = -b;
+
+disp('C')
+disp(C)
+
+disp('gamma');
+disp(gamma);
+
+disp('a');
+disp(a)
+disp('aeq');
+disp(aeq)
+
+disp('b');
+disp(b)
+disp('beq');
+disp(beq)
+
+ //plot(Volume,Pressure);
+ //plot(Volume,(C ./(Volume.^gamma)),'r')
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test002_Symbols/launchConversion.sci b/2.3-1/tests/unit_tests/test002_Symbols/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test002_Symbols/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..f5d40b0d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test002_Symbols/scilabcode/mainfunction.sci
@@ -0,0 +1,21 @@
+function mainfunction()
+
+// ---------------------------------------
+// --- Initialization of the operands. ---
+// ---------------------------------------
+
+v1 = %inf;
+v2 = %nan;
+v3 = %T;
+v4 = %F;
+v5 = %pi;
+
+disp(-v1)
+disp(v1+v2)
+disp(v2)
+disp(v3)
+disp(v4)
+disp(v5)
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test003_VerySimple/launchConversion.sci b/2.3-1/tests/unit_tests/test003_VerySimple/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test003_VerySimple/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test003_VerySimple/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test003_VerySimple/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..12cc8944
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test003_VerySimple/scilabcode/mainfunction.sci
@@ -0,0 +1,10 @@
+function mainfunction()
+
+// ---------------------------------------
+// --- Initialization of the operands. ---
+// ---------------------------------------
+powerfactor = 3;
+disp(powerfactor)
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test004_Filter/scilabcode/high_pass.sci b/2.3-1/tests/unit_tests/test004_Filter/scilabcode/high_pass.sci
new file mode 100644
index 00000000..04eea9d7
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test004_Filter/scilabcode/high_pass.sci
@@ -0,0 +1,16 @@
+// Return RC high-pass filter output_signal samples,
+// given input_signal samples,
+// time interval dt,
+// R and C
+//SCI2C: NIN= 4
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= IN(1).SZ(1)
+//SCI2C: OUT(1).SZ(2)= IN(1).SZ(2)
+function output_signal = high_pass(input_signal, dt, R, C)
+ alpha = R * C / (R * C + dt)
+ output_signal(1) = input_signal(1)
+ for i = 2 : size(input_signal, 2)
+ output_signal(i) = alpha * output_signal(i-1) + alpha * (input_signal(i) - input_signal(i-1))
+ end
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/test004_Filter/scilabcode/main.sci b/2.3-1/tests/unit_tests/test004_Filter/scilabcode/main.sci
new file mode 100644
index 00000000..832ea120
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test004_Filter/scilabcode/main.sci
@@ -0,0 +1,15 @@
+function main()
+ sup = 500;
+ M = 50 * rand(1,sup);
+ disp("M=")
+ disp(M)
+ //scf(1);
+ //plot(1:sup, M);
+
+
+ N = high_pass(M, 0.1, 1, 1);
+ disp("N=")
+ disp(N);
+ //scf(2);
+ //plot(1:sup, N);
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/test004_LinearCombination/launchConversion.sci b/2.3-1/tests/unit_tests/test004_LinearCombination/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test004_LinearCombination/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test004_LinearCombination/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test004_LinearCombination/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..d02cdc22
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test004_LinearCombination/scilabcode/mainfunction.sci
@@ -0,0 +1,16 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+s1 = 2; s2 = 3;
+
+a = 2; b = 4;
+
+A = ones(3,4); B = ones(3,4);
+
+C = LinComb(s1,a,s2,b); // s1*a+s2*b
+D = LinComb(s1,A,s2,B); // s1*A+s2*B
+
+disp(C);
+disp(D);
+endfunction
diff --git a/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/launchConversion.sci b/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/LinComb.sci b/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/LinComb.sci
new file mode 100644
index 00000000..9f74b454
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/LinComb.sci
@@ -0,0 +1,16 @@
+//SCI2C: NIN= 6
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= IN(2).SZ(1)
+//SCI2C: OUT(1).SZ(2)= IN(2).SZ(2)
+
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function z = LinComb(a,x,b,y,t1,t2)
+
+t1 = a*x;
+t2 = b*y;
+z = t1+t2;
+// z = a*x+b*y;
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..35d5456d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test005_LinearCombinationNoTempVars/scilabcode/mainfunction.sci
@@ -0,0 +1,21 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+s1 = 2; s2 = 3;
+
+a = 2; b = 4;
+
+A = ones(3,4); B = ones(3,4);
+
+t1 = 0;
+t2 = 0;
+C = LinComb(s1,a,s2,b,t1,t2); // s1*a+s2*b
+
+T1 = A;
+T2 = A;
+D = LinComb(s1,A,s2,B,T1,T2); // s1*A+s2*B
+
+disp(C);
+disp(D);
+endfunction
diff --git a/2.3-1/tests/unit_tests/test011_InsExtfunctions/launchConversion.sci b/2.3-1/tests/unit_tests/test011_InsExtfunctions/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test011_InsExtfunctions/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test011_InsExtfunctions/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test011_InsExtfunctions/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..d50ed6bb
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test011_InsExtfunctions/scilabcode/mainfunction.sci
@@ -0,0 +1,24 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+M1 = 22.3*ones(3,4);
+M2 = 44.5*ones(M1);
+v1 = 1:4;
+s1 = 3;
+
+//[M1(1,1),M1(1,2)] = twooutputs(1);
+
+M1(3,3) = M2(1,3);
+
+M1(5) = 4;
+M1(2,2) = M2(6);
+
+M2(3,2) = s1;
+
+M2(1:4)=11.3*(1:4);
+M2(4:7)=M1(3:6);
+
+disp(M1)
+disp(M2)
+endfunction
diff --git a/2.3-1/tests/unit_tests/test012_OpMinus/launchConversion.sci b/2.3-1/tests/unit_tests/test012_OpMinus/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test012_OpMinus/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test012_OpMinus/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test012_OpMinus/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..555ee296
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test012_OpMinus/scilabcode/mainfunction.sci
@@ -0,0 +1,10 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+s1 = -3;
+a = s1*ones(3,4);
+disp(a)
+b = -a;
+disp(b)
+endfunction
diff --git a/2.3-1/tests/unit_tests/test013_TestOpRcCC/launchConversion.sci b/2.3-1/tests/unit_tests/test013_TestOpRcCC/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test013_TestOpRcCC/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test013_TestOpRcCC/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test013_TestOpRcCC/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..eda20c46
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test013_TestOpRcCC/scilabcode/mainfunction.sci
@@ -0,0 +1,15 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+vr1 = [1 2];
+vr2 = [3 4];
+vc1 = [11;12]
+vc2 = [13;14]
+M1 = [vr1 vr2;vr2 vr1];
+M2 = [vc1 vc2];
+
+disp(M1);
+disp(M2);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test018_NestedWhile/launchConversion.sci b/2.3-1/tests/unit_tests/test018_NestedWhile/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test018_NestedWhile/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test018_NestedWhile/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test018_NestedWhile/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..8142e6ff
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test018_NestedWhile/scilabcode/mainfunction.sci
@@ -0,0 +1,19 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+a = 0;
+b = 5;
+while (a+b < 36)
+ disp('a');
+ disp(a);
+ a = a + b;
+ while (b < 9)
+ disp('b');
+ disp(b);
+ b = b + 1;
+ a = a + 1;
+ end
+end
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test024_test_if_pi/launchConversion.sci b/2.3-1/tests/unit_tests/test024_test_if_pi/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test024_test_if_pi/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test024_test_if_pi/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test024_test_if_pi/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..6b1652fd
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test024_test_if_pi/scilabcode/mainfunction.sci
@@ -0,0 +1,24 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+a=%pi*70;
+b=1;
+c=0;
+M = (1:3)'*(1:5)
+if a<=1
+ c=b;
+ disp(c)
+else
+ if b==10
+ c=5;
+ disp(c)
+ else
+ c=2;
+ disp(c)
+ S = c.^M;
+ disp(S);
+ disp(a)
+ end
+end
+endfunction
diff --git a/2.3-1/tests/unit_tests/test038_FindI2O1Float/launchConversion.sci b/2.3-1/tests/unit_tests/test038_FindI2O1Float/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test038_FindI2O1Float/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test038_FindI2O1Float/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test038_FindI2O1Float/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..789f3b73
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test038_FindI2O1Float/scilabcode/mainfunction.sci
@@ -0,0 +1,57 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function mainfunction()
+
+s1 = -5.4;
+disp('s1');
+disp(s1);
+
+s2 = 2.2;
+disp('s2');
+disp(s2);
+
+A = ((1.2:0.99:4.9)')*(-2.3:1.1:3.9)
+disp('A = ((1.2:0.99:4.9)'')*(-2.3:1.1:3.9)');
+disp(A);
+
+disp('o1 = -s1 + s2;');
+o1 = -s1 + s2;
+disp(o1);
+
+disp('o1 = -3.4 + 4.5;');
+o1 = -3.4 + 4.5;
+disp(o1);
+
+disp('o2 = -3.4 + A;');
+o2 = -3.4 + A;
+disp(o2);
+
+disp('o3 = A + (-3.4);');
+o3 = A + (-3.4);
+disp(o3);
+
+disp('o4 = A + A;');
+o4 = A + A;
+disp(o4);
+
+disp('o5 = +A;');
+o5 = +A;
+disp(o5);
+
+st0 = '#';
+disp('st0')
+disp(st0)
+
+st1 = 'ciao';
+disp('st1')
+disp(st1)
+
+st2 = 'bye';
+disp('st2')
+disp(st2)
+
+st3 = st0+st1+st2;
+disp('st3 = st0+st1+st2;')
+disp(st3)
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test061_SumShortTest/launchConversion.sci b/2.3-1/tests/unit_tests/test061_SumShortTest/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test061_SumShortTest/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test061_SumShortTest/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test061_SumShortTest/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..78895afa
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test061_SumShortTest/scilabcode/mainfunction.sci
@@ -0,0 +1,22 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+s1 = (1:4)' * (1:3);
+disp('s1');
+disp(s1);
+
+s2 = sum(s1);
+disp('s2 = sum(s1);');
+disp(s2);
+
+s3 = sum(s1,1);
+disp('s3 = sum(s1,1);');
+disp(s3);
+
+s4 = sum(s1,2);
+disp('s4 = sum(s1,2);');
+disp(s4);
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/launchConversion.sci b/2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..a1e0d8c6
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test064_OpMinusFloatComplex/scilabcode/mainfunction.sci
@@ -0,0 +1,43 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function mainfunction()
+
+s1 = -5.4;
+disp('s1');
+disp(s1);
+
+s2 = -2.2-4*%i;
+disp('s2');
+disp(s2);
+
+A = ((1.2:0.99:4.9)')*(-2.3:1.1:3.9)
+disp('A = ((1.2:0.99:4.9)'')*(-2.3:1.1:3.9)');
+disp(A);
+
+B = -2.11*A-%i*A;
+disp('B');
+
+disp('o1 = -s1 - s2;');
+o1 = -s1 - s2;
+disp(o1);
+
+disp('o1 = -3.4 - 4.5;');
+o1 = (-3.4-%i) - (4.5-%i);
+disp(o1);
+
+disp('o2 = -3.4 - B - A;');
+o2 = -3.4 - B - A;
+disp(o2);
+
+disp('o3 = A - (-3.4);');
+o3 = A - (-3.4);
+disp(o3);
+
+disp('o4 = A - A;');
+o4 = A - B;
+disp(o4);
+
+disp('o5 = -A;');
+o5 = -B;
+disp(o5);
+endfunction
diff --git a/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun1.sci b/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun1.sci
new file mode 100644
index 00000000..3584aa28
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun1.sci
@@ -0,0 +1,10 @@
+//SCI2C: NIN= 1
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= IN(1).SZ(1)
+//SCI2C: OUT(1).SZ(2)= IN(1).SZ(2)
+
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function out = fun1(in1)
+out = -in1;
+endfunction
diff --git a/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun2.sci b/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun2.sci
new file mode 100644
index 00000000..56a2f162
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/fun2.sci
@@ -0,0 +1,14 @@
+//SCI2C: NIN= 1
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= '1'
+//SCI2C: OUT(1).SZ(2)= '1'
+
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function out = fun2(in1)
+a = 999;
+disp("a");
+disp(a);
+b = fun1(1);
+out = 99;
+endfunction
diff --git a/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..728b3c3e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test081_twoFunctions/scilabcode/mainfunction.sci
@@ -0,0 +1,12 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+b = fun2(2);
+disp("b")
+disp(b)
+a=1;
+b = fun1(1);
+disp("b")
+disp(b)
+endfunction
diff --git a/2.3-1/tests/unit_tests/test088_SimpleFor/launchConversion.sci b/2.3-1/tests/unit_tests/test088_SimpleFor/launchConversion.sci
new file mode 100644
index 00000000..fc3f6fd4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test088_SimpleFor/launchConversion.sci
@@ -0,0 +1,4 @@
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test088_SimpleFor/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test088_SimpleFor/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..df2c028c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test088_SimpleFor/scilabcode/mainfunction.sci
@@ -0,0 +1,17 @@
+function mainfunction()
+
+// ---------------------------------------
+// --- Initialization of the operands. ---
+// ---------------------------------------
+
+v1 = zeros(1,5);
+disp('v1, before initialization.')
+disp(v1)
+for cnt = 1:5
+ v1(cnt) = cnt;
+end
+disp('v1, after initialization.')
+disp(v1)
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test089_SimpleFor/launchConversion.sci b/2.3-1/tests/unit_tests/test089_SimpleFor/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test089_SimpleFor/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test089_SimpleFor/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test089_SimpleFor/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..df2c028c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test089_SimpleFor/scilabcode/mainfunction.sci
@@ -0,0 +1,17 @@
+function mainfunction()
+
+// ---------------------------------------
+// --- Initialization of the operands. ---
+// ---------------------------------------
+
+v1 = zeros(1,5);
+disp('v1, before initialization.')
+disp(v1)
+for cnt = 1:5
+ v1(cnt) = cnt;
+end
+disp('v1, after initialization.')
+disp(v1)
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test100_recursivefunctions/launchConversion.sci b/2.3-1/tests/unit_tests/test100_recursivefunctions/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test100_recursivefunctions/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/IterativePower.sci b/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/IterativePower.sci
new file mode 100644
index 00000000..d3ee3469
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/IterativePower.sci
@@ -0,0 +1,17 @@
+//SCI2C: NIN= 2
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= FA_SZ_1(IN(1).SZ)
+//SCI2C: OUT(1).SZ(2)= FA_SZ_2(IN(1).SZ)
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function outiter = IterativePower(in,pwrfct)
+
+outiter = ones(in);
+
+for cnt = 1:pwrfct
+ mytmp = outiter .* in;
+ outiter = mytmp;
+end
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/RecursivePower.sci b/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/RecursivePower.sci
new file mode 100644
index 00000000..87430bba
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/RecursivePower.sci
@@ -0,0 +1,23 @@
+//SCI2C: NIN= 2
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= FA_SZ_1(IN(1).SZ)
+//SCI2C: OUT(1).SZ(2)= FA_SZ_2(IN(1).SZ)
+//SCI2C: DEFAULT_PRECISION= FLOAT
+
+function outrec = RecursivePower(in,pwrfct)
+
+
+if (pwrfct == 0)
+ outrec = ones(in);
+end
+
+if (pwrfct == 1)
+ outrec = in;
+end
+
+if (pwrfct > 1)
+ outrec = in .* RecursivePower(in,pwrfct-1);
+end
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..d1dd1dbd
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test100_recursivefunctions/scilabcode/mainfunction.sci
@@ -0,0 +1,57 @@
+//SCI2C: DEFAULT_PRECISION= FLOAT
+function mainfunction()
+
+// ---------------------------------------
+// --- Initialization of the operands. ---
+// ---------------------------------------
+powerfactor = 3;
+disp('Power Factor: ');
+disp(powerfactor)
+
+s1 = 2;
+disp('Input Scalar Value');
+disp(s1)
+
+V1 = 1:3;
+V2 = 1:2;
+V1tr = V1';
+
+M1 = V1tr * V2;
+disp('Input Matrix Value');
+disp(M1)
+
+// -----------------------
+// --- Compute powers. ---
+// -----------------------
+// --- Iterative/Scalar. ---
+outs1It = IterativePower(s1,powerfactor);
+disp('Output Scalar Value Iterative');
+disp(outs1It);
+
+// --- Iterative/Matrix. ---
+outM1It = IterativePower(M1,powerfactor);
+disp('Output Matrix Iterative');
+disp(outM1It);
+
+// --- Recursive/Scalar. ---
+outs1Re = RecursivePower(s1,powerfactor);
+disp('Output Scalar Value Recursive');
+disp(outs1Re);
+
+// --- Recursive/Matrix. ---
+outM1Re = RecursivePower(M1,powerfactor);
+disp('Output Matrix Recursive');
+disp(outM1Re);
+
+//~ // --- Solution/Scalar. ---
+//~ outs1So = s1.^powerfactor;
+//~ disp('Output Scalar Value Solution');
+//~ disp(outs1So);
+
+//~ // --- Solution/Matrix. ---
+//~ outM1So = M1.^powerfactor;
+//~ disp('Output Matrix Value Solution');
+//~ disp(outM1So);
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/launchConversion.sci b/2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..ec01e894
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test101_SimpleStringConcatenation/scilabcode/mainfunction.sci
@@ -0,0 +1,18 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+
+st0 = '#';
+disp('st0')
+disp(st0)
+
+st1 = 'ciao';
+disp('st1')
+disp(st1)
+
+st2 = st0+st1;
+disp('st2 = st0+st1;')
+disp(st2)
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test104_ScalarProduct/launchConversion.sci b/2.3-1/tests/unit_tests/test104_ScalarProduct/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test104_ScalarProduct/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test104_ScalarProduct/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test104_ScalarProduct/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..235b2e5f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test104_ScalarProduct/scilabcode/mainfunction.sci
@@ -0,0 +1,10 @@
+function mainfunction()
+
+a = 1:4;
+b = a * a';
+disp('input array:')
+disp(a)
+disp('scalar product a * a''');
+disp(b)
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test200_malloc/launchConversion.sci b/2.3-1/tests/unit_tests/test200_malloc/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test200_malloc/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test200_malloc/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test200_malloc/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..c63992e4
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test200_malloc/scilabcode/mainfunction.sci
@@ -0,0 +1,18 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+
+N = 2;
+B = myinit(N+4-2,2);
+disp('B')
+disp(B)
+
+N = 4;
+C = myinit(N,3);
+disp('C')
+disp(C)
+
+D=B+2.*C;
+disp('D')
+disp(D)
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test200_malloc/scilabcode/myinit.sci b/2.3-1/tests/unit_tests/test200_malloc/scilabcode/myinit.sci
new file mode 100644
index 00000000..af38cf5c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test200_malloc/scilabcode/myinit.sci
@@ -0,0 +1,13 @@
+//SCI2C: NIN= 2
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= IN(1).VAL
+//SCI2C: OUT(1).SZ(2)= IN(1).VAL
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function out = myinit(n,m)
+
+out1 = m+ones(n,n);
+out = out1+2*ones(n,n);
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test200_malloc/scilabcode/myzeros.sci b/2.3-1/tests/unit_tests/test200_malloc/scilabcode/myzeros.sci
new file mode 100644
index 00000000..a2cdc36b
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test200_malloc/scilabcode/myzeros.sci
@@ -0,0 +1,11 @@
+//SCI2C: NIN= 1
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= IN(1).SZ(1)
+//SCI2C: OUT(1).SZ(2)= IN(1).SZ(2)
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function out = myzeros(in)
+
+out = 3+zeros(in);
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test301_cchirp/launchConversion.sci b/2.3-1/tests/unit_tests/test301_cchirp/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test301_cchirp/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test301_cchirp/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test301_cchirp/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..5719fc08
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test301_cchirp/scilabcode/mainfunction.sci
@@ -0,0 +1,59 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+//---> MOREA: commentare meglio lo scopo di questa funzione
+//---> NUTRICATO: annotare anche le funzioni di plot facendole puntare a funzioni dummy che non fanno nulla.
+//---> NUTRICATO: la convoluzione e' stata stostituita con una custom in quanto non ancora implementata da INRIA.
+
+
+// sampling parameters
+fs = 1000; //Hz
+Tmax = .01; //----> NUTRICATO: VALORE VERO 1
+t = 0 : 1 ./ fs : Tmax;
+
+// chirp parameters
+fo = 10
+k = 150
+
+tau=0.7
+
+c=exp(2*%i*%pi*(fo*t+k./2*t.^2));//chirp signal in complex form
+// figure
+// subplot(2,2,1)
+// plot(t(1:250),real(c(1:250)));
+//title('chirp(t)')
+
+cr=exp(2*%i*%pi*(fo*(t-tau)+k./2*(t-tau).^2));//chirp signal delayed in complex form
+// subplot(2,2,2)
+
+// plot(t(1:250),real(c(1:250)),'r',t(1:250),real(cr(1:250)),'g');
+// title('chirp(t) e chirp(t-tau)')
+
+// filter response
+// subplot(2,2,3)
+h=conj(exp(2*%i*%pi*(fo*(-t)+k./2*(-t).^2)));
+
+
+// plot(t(1:250),real(h(1:250)));
+// title('conj(chirp(-t))')
+//---> NUTRICATO: la convoluzione e' stata commentata in quanto non ancora implementata.
+y=myconvol(h,cr);
+
+
+tch=0:1 ./ fs:2*Tmax;
+// subplot(2,2,4)
+// plot(tch,abs(y))
+// title(' y(t)')
+
+disp('t')
+disp(t)
+disp('c')
+disp(c)
+disp('cr')
+disp(cr)
+disp('h')
+disp(h)
+disp('y')
+disp(y)
+endfunction
+
+
diff --git a/2.3-1/tests/unit_tests/test301_cchirp/scilabcode/myconvol.sci b/2.3-1/tests/unit_tests/test301_cchirp/scilabcode/myconvol.sci
new file mode 100644
index 00000000..6640c372
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test301_cchirp/scilabcode/myconvol.sci
@@ -0,0 +1,31 @@
+//SCI2C: NIN= 2
+//SCI2C: NOUT= 1
+//SCI2C: OUT(1).TP= FA_TP_MAX(IN(1).TP,IN(2).TP)
+//SCI2C: OUT(1).SZ(1)= '1'
+//SCI2C: OUT(1).SZ(2)= FA_SUB(FA_ADD(IN(1).SZ(2),IN(2).SZ(2)),'1')
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function y = myconvol(h,x)
+hlen = length(h);
+xlen = length(x);
+//y = zeros(1,hlen+xlen-1);
+
+for cnt1 = 1:xlen
+ y(cnt1) = 0+%i*0;
+ for cnt2 = 1:cnt1
+ if ((cnt1-cnt2+1) <= hlen)
+ y(cnt1) = y(cnt1) + h(cnt1-cnt2+1)*x(cnt2);
+ else
+ y(cnt1) = y(cnt1) + 0;
+ end
+ end
+end
+
+for cnt1 = xlen+1:xlen+hlen-1
+ y(cnt1) = 0+%i*0;
+ for cnt2 = cnt1-hlen+1:xlen
+ y(cnt1) = y(cnt1) + h(cnt1-cnt2+1)*x(cnt2);
+ end
+end
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test305_Moebius/Moebius.sci b/2.3-1/tests/unit_tests/test305_Moebius/Moebius.sci
new file mode 100644
index 00000000..cb598c0a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test305_Moebius/Moebius.sci
@@ -0,0 +1,66 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+function Moebius()
+
+//the program construct moebius
+// and klein bottle surface from
+//http://www.metlin.org/mathematics/
+// topological-constructs/non-orientable-surfaces/
+
+
+// ---------------------
+// --- Moebius strip ---
+// ---------------------
+num_points = 20;
+R = 20;
+a = -0.4;
+b = 0.4;
+
+step=(b-a)./(num_points-1);
+step1=(2*%pi)./num_points;
+s=a:step:b;
+t=0:step1:2*%pi;
+
+[S, T] = XYgrid(s, t);
+x = [R + (S.*cos(T./2))].*cos(T);
+y = [R + (S.*cos(T./2))].*sin(T);
+z = S.*sin(T./2);
+
+disp('x(1:10)')
+disp(x(1:10))
+disp('y(1:10)')
+disp(y(1:10))
+disp('z(1:10)')
+disp(z(1:10))
+
+// ENABLE/DISABLE PLOT
+// scf(0); surf(x, y, z);
+
+// -----------------------
+// --- Klein Bottle II ---
+// -----------------------
+num_points = 50;
+
+//u = linspace (0, 2*(%pi), num_points);
+//v = linspace (0, 2*(%pi), num_points);
+step_u = (2*%pi)./num_points
+u = 0:step_u:2*%pi;
+v = u;
+
+[U,V] = XYgrid(u,v);
+
+x1 = cos(U).*(cos(U./2).*(sqrt(2)+cos(V))+(sin(U./2).*sin(V).*cos(V)));
+y1 = sin(U).*(cos(U./2).*(sqrt(2)+cos(V))+(sin(U./2).*sin(V).*cos(V)));
+z1 = -1.*sin(U./2).*(sqrt(2)+cos(V))+cos(U./2).*sin(V).*cos(V);
+
+disp('x1(1:10)');
+disp(x1(1:10));
+disp('y1(1:10)')
+disp(y1(1:10))
+disp('z1(1:10)')
+disp(z1(1:10))
+// ENABLE/DISABLE PLOT
+// scf(1) ;surf(x1, y1, z1)
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test305_Moebius/XYgrid.sci b/2.3-1/tests/unit_tests/test305_Moebius/XYgrid.sci
new file mode 100644
index 00000000..0957237d
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test305_Moebius/XYgrid.sci
@@ -0,0 +1,32 @@
+//SCI2C: NIN= 2
+//SCI2C: NOUT= 2
+//SCI2C: OUT(1).TP= IN(1).TP
+//SCI2C: OUT(1).SZ(1)= IN(2).SZ(2)
+//SCI2C: OUT(1).SZ(2)= IN(1).SZ(2)
+//SCI2C: OUT(2).TP= IN(1).TP
+//SCI2C: OUT(2).SZ(1)= IN(2).SZ(2)
+//SCI2C: OUT(2).SZ(2)= IN(1).SZ(2)
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+
+// ------------------------------------
+// this script emulate the matlab meshgrid
+// only for bidimensional mesh.
+// ------------------------------------
+
+function [X,Y] = XYgrid(x,y)
+
+n = length(x);
+m = length(y);
+
+X=zeros(m,n);
+Y=zeros(m,n);
+
+for k=1:m
+ X(k,1:n)=x;
+end
+
+for h=1:n
+ Y(1:m,h)=y';
+end
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test600_SimpleFindDouble/launchConversion.sci b/2.3-1/tests/unit_tests/test600_SimpleFindDouble/launchConversion.sci
new file mode 100644
index 00000000..41be0f04
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test600_SimpleFindDouble/launchConversion.sci
@@ -0,0 +1,5 @@
+lines(0)
+clear all
+tmpPWD = pwd;
+
+scilab2c(pwd()+"/scilabcode/mainfunction.sci", pwd(), pwd()+"/scilabcode/");
diff --git a/2.3-1/tests/unit_tests/test600_SimpleFindDouble/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test600_SimpleFindDouble/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..8455ac70
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test600_SimpleFindDouble/scilabcode/mainfunction.sci
@@ -0,0 +1,17 @@
+//SCi0C: DEFAULT_PRECISION= DOUBLE
+
+function mainfunction()
+
+s1 = [1 -3.56 4 -50.20 -7 -8 9 -3 4];
+disp('s1');
+disp(s1);
+
+i0 = find(s1<0.5);
+disp('i0');
+disp(i0);
+
+disp('s1(i0)');
+disp(s1(i0));
+
+endfunction
+
diff --git a/2.3-1/tests/unit_tests/test9999_WorkingDir/scilabcode/mainfunction.sci b/2.3-1/tests/unit_tests/test9999_WorkingDir/scilabcode/mainfunction.sci
new file mode 100644
index 00000000..5719fc08
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test9999_WorkingDir/scilabcode/mainfunction.sci
@@ -0,0 +1,59 @@
+//SCI2C: DEFAULT_PRECISION= DOUBLE
+function mainfunction()
+//---> MOREA: commentare meglio lo scopo di questa funzione
+//---> NUTRICATO: annotare anche le funzioni di plot facendole puntare a funzioni dummy che non fanno nulla.
+//---> NUTRICATO: la convoluzione e' stata stostituita con una custom in quanto non ancora implementata da INRIA.
+
+
+// sampling parameters
+fs = 1000; //Hz
+Tmax = .01; //----> NUTRICATO: VALORE VERO 1
+t = 0 : 1 ./ fs : Tmax;
+
+// chirp parameters
+fo = 10
+k = 150
+
+tau=0.7
+
+c=exp(2*%i*%pi*(fo*t+k./2*t.^2));//chirp signal in complex form
+// figure
+// subplot(2,2,1)
+// plot(t(1:250),real(c(1:250)));
+//title('chirp(t)')
+
+cr=exp(2*%i*%pi*(fo*(t-tau)+k./2*(t-tau).^2));//chirp signal delayed in complex form
+// subplot(2,2,2)
+
+// plot(t(1:250),real(c(1:250)),'r',t(1:250),real(cr(1:250)),'g');
+// title('chirp(t) e chirp(t-tau)')
+
+// filter response
+// subplot(2,2,3)
+h=conj(exp(2*%i*%pi*(fo*(-t)+k./2*(-t).^2)));
+
+
+// plot(t(1:250),real(h(1:250)));
+// title('conj(chirp(-t))')
+//---> NUTRICATO: la convoluzione e' stata commentata in quanto non ancora implementata.
+y=myconvol(h,cr);
+
+
+tch=0:1 ./ fs:2*Tmax;
+// subplot(2,2,4)
+// plot(tch,abs(y))
+// title(' y(t)')
+
+disp('t')
+disp(t)
+disp('c')
+disp(c)
+disp('cr')
+disp(cr)
+disp('h')
+disp(h)
+disp('y')
+disp(y)
+endfunction
+
+
diff --git a/2.3-1/tests/unit_tests/testArduino/analog_check.sci b/2.3-1/tests/unit_tests/testArduino/analog_check.sci
new file mode 100644
index 00000000..779f5b7f
--- /dev/null
+++ b/2.3-1/tests/unit_tests/testArduino/analog_check.sci
@@ -0,0 +1,7 @@
+function analog_check()
+ cmd_analog_out(1,3,50)
+ cmd_analog_out(1,5,100)
+ cmd_analog_out(1,6,175)
+ cmd_analog_out(1,9,255)
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/testArduino/analog_in_check_volt.sci b/2.3-1/tests/unit_tests/testArduino/analog_in_check_volt.sci
new file mode 100644
index 00000000..16e79054
--- /dev/null
+++ b/2.3-1/tests/unit_tests/testArduino/analog_in_check_volt.sci
@@ -0,0 +1,4 @@
+function analog_in_check_volt()
+ val = cmd_analog_in_volt(1,0)
+ cmd_analog_out_volt(1,6,val)
+endfunction
diff --git a/2.3-1/tests/unit_tests/testArduino/blink_13.sci b/2.3-1/tests/unit_tests/testArduino/blink_13.sci
new file mode 100644
index 00000000..37dc93fd
--- /dev/null
+++ b/2.3-1/tests/unit_tests/testArduino/blink_13.sci
@@ -0,0 +1,6 @@
+function blink_13()
+ cmd_digital_out(1,13,1) //--To turn on the LED on pin no. 13
+ sleep(1000) //---delay of 1 second
+ cmd_digital_out(1,13,0) //--To turn on the LED off pin no. 13
+ sleep(1000) //---delay of 1 second
+endfunction
diff --git a/2.3-1/tests/unit_tests/testArduino/board_test_release2.sci b/2.3-1/tests/unit_tests/testArduino/board_test_release2.sci
new file mode 100644
index 00000000..fd21cff7
--- /dev/null
+++ b/2.3-1/tests/unit_tests/testArduino/board_test_release2.sci
@@ -0,0 +1,11 @@
+function board_test_release2()
+ cmd_dcmotor_setup(1,3,1,9,10)
+ cmd_dcmotor_run(1,1,255)
+ sleep(3000)
+ cmd_dcmotor_release(1,1)
+ sleep(3000)
+ cmd_dcmotor_run(1,1,-255)
+ sleep(3000)
+ cmd_dcmotor_release(1,1)
+ sleep(3000)
+endfunction
diff --git a/2.3-1/tests/unit_tests/testArduino/digital_in_check.sci b/2.3-1/tests/unit_tests/testArduino/digital_in_check.sci
new file mode 100644
index 00000000..4dfbeb6e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/testArduino/digital_in_check.sci
@@ -0,0 +1,10 @@
+function digital_in_check()
+ a=cmd_digital_in(1,7)
+ if a==1 then
+ cmd_digital_out(1,13,1)
+ cmd_digital_out(1,9,0)
+ else
+ cmd_digital_out(1,9,1)
+ cmd_digital_out(1,13,0)
+ end
+endfunction
diff --git a/2.3-1/tests/unit_tests/testArduino/i2c_master.sci b/2.3-1/tests/unit_tests/testArduino/i2c_master.sci
new file mode 100644
index 00000000..2636185a
--- /dev/null
+++ b/2.3-1/tests/unit_tests/testArduino/i2c_master.sci
@@ -0,0 +1,9 @@
+function i2c_master()
+
+ dev1 = cmd_i2c_dev(1);
+ cmd_i2c_write(dev1,10);
+ sleep(1000);
+ cmd_i2c_write(dev1,9);
+ sleep(1000);
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test_CDG/D2Q9.sci b/2.3-1/tests/unit_tests/test_CDG/D2Q9.sci
new file mode 100644
index 00000000..ca344f0e
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test_CDG/D2Q9.sci
@@ -0,0 +1,189 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Vincent LEJEUNE
+//
+// 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
+//
+//
+
+//lines(0);
+
+//abs_path=get_absolute_file_path("D2Q9.sce");
+//exec(abs_path+"circshift.sce");
+
+// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+// % cylinder.m: Channel flow past a cylinderical
+// % obstacle, using a LB method
+// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+// % Lattice Boltzmann sample in Matlab
+// % Copyright (C) 2006-2008 Jonas Latt
+// % Address: EPFL, 1015 Lausanne, Switzerland
+// % E-mail: jonas@lbmethod.org
+// % Get the most recent version of this file on LBMethod.org:
+// % http://www.lbmethod.org/_media/numerics:cylinder.m
+// %
+// % Original implementaion of Zou/He boundary condition by
+// % Adriano Sciacovelli (see example "cavity.m")
+// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+// % This program is free software; you can redistribute it and/or
+// % modify it under the terms of the GNU General Public License
+// % as published by the Free Software Foundation; either version 2
+// % of the License, or (at your option) any later version.
+// % This program is distributed in the hope that it will be useful,
+// % but WITHOUT ANY WARRANTY; without even the implied warranty of
+// % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// % GNU General Public License for more details.
+// % You should have received a copy of the GNU General Public
+// % License along with this program; if not, write to the Free
+// % Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// % Boston, MA 02110-1301, USA.
+// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+// Translated to scilab language by Vincent Lejeune
+
+function D2Q9()
+
+// GENERAL FLOW CONSTANTS
+lx = 400; //number of cells in x-direction
+ly = 100; // number of cells in y-direction
+obst_x = lx/5+1; // position of the cylinder; (exact
+obst_y = ly/2+3; // y-symmetry is avoided)
+obst_r = ly/10+1; // radius of the cylinder
+uMax = 0.1; // maximum velocity of Poiseuille inflow
+Re = 100; // Reynolds number
+nu = uMax * 2.*obst_r / Re; // kinematic viscosity
+omega = 1. / (3*nu+1./2.); // relaxation parameter
+maxT = 4; // total number of iterations
+tPlot = 50; // cycles
+
+// D2Q9 LATTICE CONSTANTS
+t = [4/9, 1/9,1/9,1/9,1/9, 1/36,1/36,1/36,1/36];
+cx = [ 0, 1, 0, -1, 0, 1, -1, -1, 1];
+cy = [ 0, 0, 1, 0, -1, 1, 1, -1, -1];
+opp = [ 1, 4, 5, 2, 3, 8, 9, 6, 7];
+col = [2:(ly-1)];
+in = 1; // position of inlet
+out = lx; // position of outlet
+
+// [y,x] = meshgrid(1:ly,1:lx); // get coordinate of matrix indices
+
+// BJ : Alternative implementation to have C Code generation
+y = ones(lx,1) * (1:ly);
+x = (1:lx)' * ones(1,ly)
+
+obst = ... // Location of cylinder
+ (x-obst_x).^2 + (y-obst_y).^2 <= obst_r.^2;
+//obst(:,[1,ly]) = 1; // Location of top/bottom boundary
+
+// BJ : alternative implementation
+[obst_height, obst_width] = size(obst);
+obst(1:obst_height,1) = 1; // Location of top/bottom boundary
+obst(1:obst_height,ly) = 1; // Location of top/bottom boundary
+
+bbRegion = find(obst); // Boolean mask for bounce-back cells
+
+// INITIAL CONDITION: Poiseuille profile at equilibrium
+L = ly-2; y_phys = y-1.5;
+ux = 4 * uMax / (L*L) * (y_phys.*L-y_phys.*y_phys);
+uy = zeros(lx,ly);
+rho = 1;
+fIn=zeros(9,lx,ly);
+fEq=zeros(9,lx,ly);
+fOut=zeros(9,lx,ly);
+for i=1:9
+ cu = 3*(cx(i)*ux+cy(i)*uy);
+ fIn(i,:,:) = rho .* t(i) .* ...
+ ( 1 + cu + 1/2*(cu.*cu) - 3/2*(ux.^2+uy.^2) );
+end
+
+//Matplot();
+//f=gcf();
+//f.color_map=jetcolormap(256);
+
+
+// // MAIN LOOP (TIME CYCLES)
+for cycle = 1:maxT
+
+//
+// // MACROSCOPIC VARIABLES
+ rho = sum(fIn,'m');
+ tmpx=cx*matrix(fIn,9,lx*ly);
+ tmpy=cy * matrix(fIn,9,lx*ly);
+ ux = matrix ( tmpx, 1,lx,ly) ./rho;
+ uy = matrix ( tmpy, 1,lx,ly) ./rho;
+
+// MACROSCOPIC (DIRICHLET) BOUNDARY CONDITIONS
+// Inlet: Poiseuille profile
+ y_phys = col-1.5;
+ ux(1,in,col) = 4 * uMax / (L*L) * (y_phys.*L-y_phys.*y_phys);
+ uy(1,in,col) = 0;
+ tmp=sum(fIn([1,3,5],in,col),'m') + 2*sum(fIn([4,7,8],in,col),'m');
+ rho(:,in,col) = ones(1,1,98) ./ (1-ux(:,in,col)) .* tmp;
+// Outlet: Constant pressure
+ rho(:,out,col) = 1;
+ ux(:,out,col) = -ones(1,1,98) + ones(1,1,98) ./ (rho(:,out,col)) .* ( ...
+ sum(fIn([1,3,5],out,col),'m') + 2*sum(fIn([2,6,9],out,col),'m'));
+ uy(:,out,col) = 0;
+
+// MICROSCOPIC BOUNDARY CONDITIONS: INLET (Zou/He BC)
+ fIn(2,in,col) = fIn(4,in,col) + 2/3*rho(:,in,col).*ux(:,in,col);
+ fIn(6,in,col) = fIn(8,in,col) + 1/2*(fIn(5,in,col)-fIn(3,in,col)) ...
+ + 1/2*rho(:,in,col).*uy(:,in,col) ...
+ + 1/6*rho(:,in,col).*ux(:,in,col);
+ fIn(9,in,col) = fIn(7,in,col) + 1/2*(fIn(3,in,col)-fIn(5,in,col)) ...
+ - 1/2*rho(:,in,col).*uy(:,in,col) ...
+ + 1/6*rho(:,in,col).*ux(:,in,col);
+
+// MICROSCOPIC BOUNDARY CONDITIONS: OUTLET (Zou/He BC)
+ fIn(4,out,col) = fIn(2,out,col) - 2/3*rho(:,out,col).*ux(:,out,col);
+ fIn(8,out,col) = fIn(6,out,col) + 1/2*(fIn(3,out,col)-fIn(5,out,col)) ...
+ - 1/2*rho(:,out,col).*uy(:,out,col) ...
+ - 1/6*rho(:,out,col).*ux(:,out,col);
+ fIn(7,out,col) = fIn(9,out,col) + 1/2*(fIn(5,out,col)-fIn(3,out,col)) ...
+ + 1/2*rho(:,out,col).*uy(:,out,col) ...
+ - 1/6*rho(:,out,col).*ux(:,out,col);
+
+// COLLISION STEP
+ for i=1:9
+ cu = 3*(cx(i)*ux+cy(i)*uy);
+ fEq(i,:,:) = rho .* t(i) .*( 1 + cu + 1/2*(cu.*cu) - 3/2*(ux.^2+uy.^2) );
+ fOut(i,:,:) = fIn(i,:,:) - omega .* (fIn(i,:,:)-fEq(i,:,:));
+ end
+
+// OBSTACLE (BOUNCE-BACK)
+ for i=1:9
+ fOut(i,bbRegion) = fIn(opp(i),bbRegion);
+ end
+
+// STREAMING STEP
+ for i=1:9
+ tmpmat=matrix(fOut(i,:,:),lx,ly);
+ tmp=cs(tmpmat,cx(i),cy(i));
+ fIn(i,:,:) = matrix(tmp,1,lx,ly);
+ end
+//
+// VISUALIZATION
+//if (pmodulo(cycle,tPlot)==1)
+u = matrix(sqrt(ux.^2+uy.^2),lx,ly);
+u(bbRegion) = %nan;
+//classe=linspace(0,1,1000);
+//histplot(classe,u/max(u));
+img=abs(255*u/max(u));
+//disp(img);
+//imshow(img');
+//e=gce();
+//e.data=img';
+//xs2png(gcf(),'img-'+string(cycle)+'.png');
+//imagesc(u');
+//axis equal off; drawnow
+// end
+
+//tim=toc()
+//disp(tim);
+end
+
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/test_CDG/cs.sci b/2.3-1/tests/unit_tests/test_CDG/cs.sci
new file mode 100644
index 00000000..496b23a9
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test_CDG/cs.sci
@@ -0,0 +1,25 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Vincent LEJEUNE
+//
+// 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
+//
+//
+
+function ret=cs(A,m1,m2)
+ [m,n]=size(A);
+ rettmp=zeros(m,n);
+ ret=zeros(m,n);
+ for i=1:m
+ id=pmodulo(i-m1-1,m)+1;
+ rettmp(i,:)=A(id,:);
+ end
+ for j=1:n
+ jd=pmodulo(j-m2-1,n)+1;
+ ret(:,j)=rettmp(:,jd);
+ end
+endfunction \ No newline at end of file
diff --git a/2.3-1/tests/unit_tests/test_hypermat.sci b/2.3-1/tests/unit_tests/test_hypermat.sci
new file mode 100644
index 00000000..fe427a9c
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test_hypermat.sci
@@ -0,0 +1,47 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+function test_hypermat()
+ a = zeros(2,3,4);
+
+ for i = 1:24
+ a(i) = i
+ end
+
+ disp(a);
+
+ for i = 1:24
+ disp(a(i))
+ end
+
+ b = zeros(4,5,6);
+
+ for i = 1:4
+ for j = 1:5
+ for k = 1:6
+ b(i,j,k) = (i - 1) + 4 * (j - 1) + 4 * 5 * (k - 1);
+ end
+ end
+ end
+
+ disp(b);
+
+ for k = 1:6
+ for j = 1:5
+ for i = 1:4
+ disp(b(i,j,k));
+ end
+ end
+ end
+
+
+endfunction
diff --git a/2.3-1/tests/unit_tests/test_hypermat.sci.dia.ref b/2.3-1/tests/unit_tests/test_hypermat.sci.dia.ref
new file mode 100644
index 00000000..163460fa
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test_hypermat.sci.dia.ref
@@ -0,0 +1,1455 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+// <-- ENGLISH IMPOSED -->
+// <-- JVM NOT MANDATORY -->
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/test_hypermat.sci", TMPDIR);
+
+ -----------------------------------
+
+ --- Executing your SCILAB code. ---
+
+ -----------------------------------
+
+(:,:,1)
+
+ 1. 3. 5.
+ 2. 4. 6.
+(:,:,2)
+
+ 7. 9. 11.
+ 8. 10. 12.
+(:,:,3)
+
+ 13. 15. 17.
+ 14. 16. 18.
+(:,:,4)
+
+ 19. 21. 23.
+ 20. 22. 24.
+
+ 1.
+
+ 2.
+
+ 3.
+
+ 4.
+
+ 5.
+
+ 6.
+
+ 7.
+
+ 8.
+
+ 9.
+
+ 10.
+
+ 11.
+
+ 12.
+
+ 13.
+
+ 14.
+
+ 15.
+
+ 16.
+
+ 17.
+
+ 18.
+
+ 19.
+
+ 20.
+
+ 21.
+
+ 22.
+
+ 23.
+
+ 24.
+
+(:,:,1)
+
+ 0. 4. 8. 12. 16.
+ 1. 5. 9. 13. 17.
+ 2. 6. 10. 14. 18.
+ 3. 7. 11. 15. 19.
+(:,:,2)
+
+ 20. 24. 28. 32. 36.
+ 21. 25. 29. 33. 37.
+ 22. 26. 30. 34. 38.
+ 23. 27. 31. 35. 39.
+(:,:,3)
+
+ 40. 44. 48. 52. 56.
+ 41. 45. 49. 53. 57.
+ 42. 46. 50. 54. 58.
+ 43. 47. 51. 55. 59.
+(:,:,4)
+
+ 60. 64. 68. 72. 76.
+ 61. 65. 69. 73. 77.
+ 62. 66. 70. 74. 78.
+ 63. 67. 71. 75. 79.
+(:,:,5)
+
+ 80. 84. 88. 92. 96.
+ 81. 85. 89. 93. 97.
+ 82. 86. 90. 94. 98.
+ 83. 87. 91. 95. 99.
+(:,:,6)
+
+ 100. 104. 108. 112. 116.
+ 101. 105. 109. 113. 117.
+ 102. 106. 110. 114. 118.
+ 103. 107. 111. 115. 119.
+
+ 0.
+
+ 1.
+
+ 2.
+
+ 3.
+
+ 4.
+
+ 5.
+
+ 6.
+
+ 7.
+
+ 8.
+
+ 9.
+
+ 10.
+
+ 11.
+
+ 12.
+
+ 13.
+
+ 14.
+
+ 15.
+
+ 16.
+
+ 17.
+
+ 18.
+
+ 19.
+
+ 20.
+
+ 21.
+
+ 22.
+
+ 23.
+
+ 24.
+
+ 25.
+
+ 26.
+
+ 27.
+
+ 28.
+
+ 29.
+
+ 30.
+
+ 31.
+
+ 32.
+
+ 33.
+
+ 34.
+
+ 35.
+
+ 36.
+
+ 37.
+
+ 38.
+
+ 39.
+
+ 40.
+
+ 41.
+
+ 42.
+
+ 43.
+
+ 44.
+
+ 45.
+
+ 46.
+
+ 47.
+
+ 48.
+
+ 49.
+
+ 50.
+
+ 51.
+
+ 52.
+
+ 53.
+
+ 54.
+
+ 55.
+
+ 56.
+
+ 57.
+
+ 58.
+
+ 59.
+
+ 60.
+
+ 61.
+
+ 62.
+
+ 63.
+
+ 64.
+
+ 65.
+
+ 66.
+
+ 67.
+
+ 68.
+
+ 69.
+
+ 70.
+
+ 71.
+
+ 72.
+
+ 73.
+
+ 74.
+
+ 75.
+
+ 76.
+
+ 77.
+
+ 78.
+
+ 79.
+
+ 80.
+
+ 81.
+
+ 82.
+
+ 83.
+
+ 84.
+
+ 85.
+
+ 86.
+
+ 87.
+
+ 88.
+
+ 89.
+
+ 90.
+
+ 91.
+
+ 92.
+
+ 93.
+
+ 94.
+
+ 95.
+
+ 96.
+
+ 97.
+
+ 98.
+
+ 99.
+
+ 100.
+
+ 101.
+
+ 102.
+
+ 103.
+
+ 104.
+
+ 105.
+
+ 106.
+
+ 107.
+
+ 108.
+
+ 109.
+
+ 110.
+
+ 111.
+
+ 112.
+
+ 113.
+
+ 114.
+
+ 115.
+
+ 116.
+
+ 117.
+
+ 118.
+
+ 119.
+
+ ------------------------------------------
+
+ --- End Execution of your SCILAB code. ---
+
+ ------------------------------------------
+
+ ==> SCI2C hArtes/POLIBA Tool!!!
+
+ Removing directory: TMPDIR/SCI2CTmpResultsReports
+
+ Removing directory: TMPDIR
+
+ ==> Initialize SCI2C and USER2C Libraries.
+
+ ==> Load SCI2C and USER2C Libraries.
+
+ ==> Start translation of function "test_hypermat"
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_hypermat/test_hypermat_copy.sci' already opened in Scilab.
+Warning: file 'TMPDIR/SCI2CTmpResultsReports/test_hypermat/test_hypermat_copy.sci' already opened in Scilab.
+
+ ==> Generate the AST.
+
+ ==> Generate C code in TMPDIR/main.c
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: a = zeros(2,3,4);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: for i = 1:24
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: a(i) = i
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: end
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(a);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: for i = 1:24
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: disp(a(i))
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: end
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: b = zeros(4,5,6);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: for i = 1:4
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: for j = 1:5
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ####################################################
+ ##############
+
+ SCI2C: for k = 1:6
+
+ SCI2C: ####################################################
+ ##############*/
+
+ /*SCI2C: #################################################
+ #################
+
+ SCI2C: b(i,j,k) = (i - 1) + 4 * (j - 1) + 4 * 5
+ * (k - 1);
+
+ SCI2C: #################################################
+ #################*/
+
+ /*SCI2C: #################################################
+ #################
+
+ SCI2C: end
+
+ SCI2C: #################################################
+ #################*/
+
+ /*SCI2C: ####################################################
+ ##############
+
+ SCI2C: end
+
+ SCI2C: ####################################################
+ ##############*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: end
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: disp(b);
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: for k = 1:6
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: for j = 1:5
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ####################################################
+ ##############
+
+ SCI2C: for i = 1:4
+
+ SCI2C: ####################################################
+ ##############*/
+
+ /*SCI2C: #################################################
+ #################
+
+ SCI2C: disp(b(i,j,k));
+
+ SCI2C: #################################################
+ #################*/
+
+ /*SCI2C: #################################################
+ #################
+
+ SCI2C: end
+
+ SCI2C: #################################################
+ #################*/
+
+ /*SCI2C: ####################################################
+ ##############
+
+ SCI2C: end
+
+ SCI2C: ####################################################
+ ##############*/
+
+ /*SCI2C: #######################################################
+ ###########
+
+ SCI2C: end
+
+ SCI2C: #######################################################
+ ###########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C: endfunction
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ /*SCI2C: ##########################################################
+ ########
+
+ SCI2C:
+
+ SCI2C: ##########################################################
+ ########*/
+
+ ==> Copying sources
+
+ ==> Copying headers
+
+ ==> Copying interfaces
+
+ ==> Generating Builder TMPDIR/Makefile
+
+ ==> Translation Successfully Completed!!!
+//editor(TMPDIR + "/main.c");
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+ ans =
+
+!/* !
+! !
+!** ************************************************ !
+! !
+!** This file has been generated using !
+! !
+!** Scilab2C (Version 2.0) !
+! !
+!** !
+! !
+!** Please visit following links for more informations: !
+! !
+!** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c !
+! !
+!** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/ !
+! !
+!** ************************************************ !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------- !
+! !
+!** --- Includes. --- !
+! !
+!** ----------------- !
+! !
+!*/ !
+! !
+!#include "main.h" !
+! !
+!/* !
+! !
+!** --------------------- !
+! !
+!** --- End Includes. --- !
+! !
+!** --------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ------------------------------------- !
+! !
+!** --- Global Variables Declaration. --- !
+! !
+!** ------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** ----------------------------------------- !
+! !
+!** --- End Global Variables Declaration. --- !
+! !
+!** ----------------------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+!/* !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+! SCI2C: // !
+! !
+! SCI2C: // Scilab ( http://www.scilab.org/ ) - This file is part of S!
+! cilab !
+! !
+! SCI2C: // Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET !
+! !
+! SCI2C: // !
+! !
+! SCI2C: // This file must be used under the terms of the CeCILL. !
+! !
+! SCI2C: // This source file is licensed as described in the file COPY!
+! ING, which !
+! !
+! SCI2C: // you should have received as part of this distribution. Th!
+! e terms !
+! !
+! SCI2C: // are also available at !
+! !
+! SCI2C: // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt !
+! !
+! SCI2C: // !
+! !
+! SCI2C: // !
+! !
+! SCI2C: !
+! !
+! SCI2C: function test_hypermat() !
+! !
+! SCI2C: -------------------------------------------------------------!
+! ----- !
+! !
+!*/ !
+! !
+!int main() !
+! !
+!{ !
+! !
+!/* !
+! !
+!** ----------------------------- !
+! !
+!** --- Variable Declaration. --- !
+! !
+!** ----------------------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! double a[2 * 3 * 4]; !
+! !
+! int __aSize[3] = {2, 3, 4};; !
+! !
+! !
+! !
+! double i; !
+! !
+! !
+! !
+! double ans1; !
+! !
+! !
+! !
+! double __temp1; !
+! !
+! !
+! !
+! double ans2; !
+! !
+! !
+! !
+! double b[4 * 5 * 6]; !
+! !
+! int __bSize[3] = {4, 5, 6};; !
+! !
+! !
+! !
+! double j; !
+! !
+! !
+! !
+! double k; !
+! !
+! !
+! !
+! double __temp2; !
+! !
+! !
+! !
+! double __temp3; !
+! !
+! !
+! !
+! double __temp4; !
+! !
+! !
+! !
+! double __temp5; !
+! !
+! !
+! !
+! double __temp6; !
+! !
+! !
+! !
+! double __temp7; !
+! !
+! !
+! !
+! double __temp8; !
+! !
+! !
+! !
+! double __temp9; !
+! !
+! !
+! !
+! double ans3; !
+! !
+! !
+! !
+! double __temp10; !
+! !
+! !
+! !
+! double ans4; !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+! !
+!/* !
+! !
+!** --------------------------------- !
+! !
+!** --- End Variable Declaration. --- !
+! !
+!** --------------------------------- !
+! !
+!*/ !
+! !
+!/* !
+! !
+!** --------------- !
+! !
+!** --- C code. --- !
+! !
+!** --------------- !
+! !
+!*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: a = zeros(2,3,4); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0d0zerosd3(2,3,4,a); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: for i = 1:24 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! for(i = 1; i <= 24; i += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: a(i) = i !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! d3d0d0OpIns(a, __aSize,i,i); !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: end !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(a); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans1 = d3dispd0(a, __aSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: for i = 1:24 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! for(i = 1; i <= 24; i += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: disp(a(i)) !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! __temp1 = d3d0OpExtd0(a, __aSize,i); !
+! !
+! ans2 = d0dispd0(__temp1); !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: end !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: b = zeros(4,5,6); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! d0d0d0zerosd3(4,5,6,b); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: for i = 1:4 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! for(i = 1; i <= 4; i += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: for j = 1:5 !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! !
+! !
+! for(j = 1; j <= 5; j += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: ####################################################!
+! ############## !
+! !
+! SCI2C: for k = 1:6 !
+! !
+! SCI2C: ####################################################!
+! ##############*/ !
+! !
+! !
+! !
+! for(k = 1; k <= 6; k += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: #################################################!
+! ################# !
+! !
+! SCI2C: b(i,j,k) = (i - 1) + 4 * (j - 1) + 4 * 5 !
+! * (k - 1); !
+! !
+! SCI2C: #################################################!
+! #################*/ !
+! !
+! __temp2 = d0d0OpMinusd0(i,1); !
+! !
+! __temp3 = d0d0OpMinusd0(j,1); !
+! !
+! __temp4 = d0d0OpStard0(4,__temp3); !
+! !
+! __temp5 = d0d0OpPlusd0(__temp2,__temp4); !
+! !
+! __temp6 = d0d0OpStard0(4,5); !
+! !
+! __temp7 = d0d0OpMinusd0(k,1); !
+! !
+! __temp8 = d0d0OpStard0(__temp6,__temp7); !
+! !
+! __temp9 = d0d0OpPlusd0(__temp5,__temp8); !
+! !
+! d3d0d0d0d0OpIns(b, __bSize,i,j,k,__temp9); !
+! !
+! !
+! !
+! /*SCI2C: #################################################!
+! ################# !
+! !
+! SCI2C: end !
+! !
+! SCI2C: #################################################!
+! #################*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: ####################################################!
+! ############## !
+! !
+! SCI2C: end !
+! !
+! SCI2C: ####################################################!
+! ##############*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: end !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: disp(b); !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! ans3 = d3dispd0(b, __bSize); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: for k = 1:6 !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! for(k = 1; k <= 6; k += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: for j = 1:5 !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! !
+! !
+! for(j = 1; j <= 5; j += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: ####################################################!
+! ############## !
+! !
+! SCI2C: for i = 1:4 !
+! !
+! SCI2C: ####################################################!
+! ##############*/ !
+! !
+! !
+! !
+! for(i = 1; i <= 4; i += 1) !
+! !
+! { !
+! !
+! !
+! !
+! /*SCI2C: #################################################!
+! ################# !
+! !
+! SCI2C: disp(b(i,j,k)); !
+! !
+! SCI2C: #################################################!
+! #################*/ !
+! !
+! __temp10 = d3d0d0d0OpExtd0(b, __bSize,i,j,k); !
+! !
+! ans4 = d0dispd0(__temp10); !
+! !
+! !
+! !
+! /*SCI2C: #################################################!
+! ################# !
+! !
+! SCI2C: end !
+! !
+! SCI2C: #################################################!
+! #################*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: ####################################################!
+! ############## !
+! !
+! SCI2C: end !
+! !
+! SCI2C: ####################################################!
+! ##############*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: #######################################################!
+! ########### !
+! !
+! SCI2C: end !
+! !
+! SCI2C: #######################################################!
+! ###########*/ !
+! !
+! !
+! !
+! !
+! !
+! } !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: endfunction !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+! !
+! !
+! /* !
+! !
+! ** --------------------- !
+! !
+! ** --- Free Section. --- !
+! !
+! ** --------------------- !
+! !
+! */ !
+! !
+! /* !
+! !
+! ** ------------------------- !
+! !
+! ** --- End Free Section. --- !
+! !
+! ** ------------------------- !
+! !
+! */ !
+! !
+! !
+! !
+! return(0); !
+! !
+! !
+! !
+! /*SCI2C: ##########################################################!
+! ######## !
+! !
+! SCI2C: !
+! !
+! SCI2C: ##########################################################!
+! ########*/ !
+! !
+!} !
+! !
+! !
+mclose(fd);
diff --git a/2.3-1/tests/unit_tests/test_hypermat.sci.tst b/2.3-1/tests/unit_tests/test_hypermat.sci.tst
new file mode 100644
index 00000000..10737336
--- /dev/null
+++ b/2.3-1/tests/unit_tests/test_hypermat.sci.tst
@@ -0,0 +1,22 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+//
+// 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
+//
+//
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- JVM NOT MANDATORY -->
+
+global SCI2CHOME;
+scilab2c(SCI2CHOME+"/tests/unit_tests/test_hypermat.sci", TMPDIR);
+
+fd = mopen(TMPDIR+"/main.c");
+mgetl(fd)
+mclose(fd); \ No newline at end of file
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cv.h b/2.3-1/thirdparty/includes/OpenCV/opencv/cv.h
new file mode 100644
index 00000000..77d0971a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cv.h
@@ -0,0 +1,82 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_CV_H__
+#define __OPENCV_OLD_CV_H__
+
+#if defined(_MSC_VER)
+ #define CV_DO_PRAGMA(x) __pragma(x)
+ #define __CVSTR2__(x) #x
+ #define __CVSTR1__(x) __CVSTR2__(x)
+ #define __CVMSVCLOC__ __FILE__ "("__CVSTR1__(__LINE__)") : "
+ #define CV_MSG_PRAGMA(_msg) CV_DO_PRAGMA(message (__CVMSVCLOC__ _msg))
+#elif defined(__GNUC__)
+ #define CV_DO_PRAGMA(x) _Pragma (#x)
+ #define CV_MSG_PRAGMA(_msg) CV_DO_PRAGMA(message (_msg))
+#else
+ #define CV_DO_PRAGMA(x)
+ #define CV_MSG_PRAGMA(_msg)
+#endif
+#define CV_WARNING(x) CV_MSG_PRAGMA("Warning: " #x)
+
+//CV_WARNING("This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module")
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc_c.h"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/video/tracking.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/flann/flann.hpp"
+#include "opencv2/calib3d/calib3d.hpp"
+#include "opencv2/objdetect/objdetect.hpp"
+#include "opencv2/legacy/compat.hpp"
+
+#if !defined(CV_IMPL)
+#define CV_IMPL extern "C"
+#endif //CV_IMPL
+
+#if defined(__cplusplus)
+#include "opencv2/core/internal.hpp"
+#endif //__cplusplus
+
+#endif // __OPENCV_OLD_CV_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cv.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv/cv.hpp
new file mode 100644
index 00000000..37b523b3
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cv.hpp
@@ -0,0 +1,52 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_CV_HPP__
+#define __OPENCV_OLD_CV_HPP__
+
+//#if defined(__GNUC__)
+//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module"
+//#endif
+
+#include <cv.h>
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.h b/2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.h
new file mode 100644
index 00000000..b15d0686
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.h
@@ -0,0 +1,65 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_AUX_H__
+#define __OPENCV_OLD_AUX_H__
+
+//#if defined(__GNUC__)
+//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module"
+//#endif
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc_c.h"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/video/tracking.hpp"
+#include "opencv2/video/background_segm.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/calib3d/calib3d.hpp"
+#include "opencv2/objdetect/objdetect.hpp"
+#include "opencv2/legacy/legacy.hpp"
+#include "opencv2/legacy/compat.hpp"
+#include "opencv2/legacy/blobtrack.hpp"
+#include "opencv2/contrib/contrib.hpp"
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.hpp
new file mode 100644
index 00000000..952210b0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cvaux.hpp
@@ -0,0 +1,51 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_AUX_HPP__
+#define __OPENCV_OLD_AUX_HPP__
+
+//#if defined(__GNUC__)
+//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module"
+//#endif
+
+#include <cvaux.h>
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cvwimage.h b/2.3-1/thirdparty/includes/OpenCV/opencv/cvwimage.h
new file mode 100644
index 00000000..de89c927
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cvwimage.h
@@ -0,0 +1,46 @@
+///////////////////////////////////////////////////////////////////////////////
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to
+// this license. If you do not agree to this license, do not download,
+// install, copy or use the software.
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2008, Google, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation or contributors may not be used to endorse
+// or promote products derived from this software without specific
+// prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is"
+// and any express or implied warranties, including, but not limited to, the
+// implied warranties of merchantability and fitness for a particular purpose
+// are disclaimed. In no event shall the Intel Corporation or contributors be
+// liable for any direct, indirect, incidental, special, exemplary, or
+// consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+
+
+#ifndef __OPENCV_OLD_WIMAGE_HPP__
+#define __OPENCV_OLD_WIMAGE_HPP__
+
+#include "opencv2/core/wimage.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.h b/2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.h
new file mode 100644
index 00000000..d52ad4fb
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.h
@@ -0,0 +1,53 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_CXCORE_H__
+#define __OPENCV_OLD_CXCORE_H__
+
+//#if defined(__GNUC__)
+//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module"
+//#endif
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.hpp
new file mode 100644
index 00000000..033b3655
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cxcore.hpp
@@ -0,0 +1,52 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_CXCORE_HPP__
+#define __OPENCV_OLD_CXCORE_HPP__
+
+//#if defined(__GNUC__)
+//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module"
+//#endif
+
+#include <cxcore.h>
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cxeigen.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv/cxeigen.hpp
new file mode 100644
index 00000000..1f04d1a3
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cxeigen.hpp
@@ -0,0 +1,48 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_EIGEN_HPP__
+#define __OPENCV_OLD_EIGEN_HPP__
+
+#include "opencv2/core/eigen.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/cxmisc.h b/2.3-1/thirdparty/includes/OpenCV/opencv/cxmisc.h
new file mode 100644
index 00000000..3a766562
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/cxmisc.h
@@ -0,0 +1,48 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+ * //
+ * // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+ * //
+ * // By downloading, copying, installing or using the software you agree to this license.
+ * // If you do not agree to this license, do not download, install,
+ * // copy or use the software.
+ * //
+ * //
+ * // License Agreement
+ * // For Open Source Computer Vision Library
+ * //
+ * // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+ * // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+ * // Third party copyrights are property of their respective owners.
+ * //
+ * // Redistribution and use in source and binary forms, with or without modification,
+ * // are permitted provided that the following conditions are met:
+ * //
+ * // * Redistribution's of source code must retain the above copyright notice,
+ * // this list of conditions and the following disclaimer.
+ * //
+ * // * Redistribution's in binary form must reproduce the above copyright notice,
+ * // this list of conditions and the following disclaimer in the documentation
+ * // and/or other materials provided with the distribution.
+ * //
+ * // * The name of the copyright holders may not be used to endorse or promote products
+ * // derived from this software without specific prior written permission.
+ * //
+ * // This software is provided by the copyright holders and contributors "as is" and
+ * // any express or implied warranties, including, but not limited to, the implied
+ * // warranties of merchantability and fitness for a particular purpose are disclaimed.
+ * // In no event shall the Intel Corporation or contributors be liable for any direct,
+ * // indirect, incidental, special, exemplary, or consequential damages
+ * // (including, but not limited to, procurement of substitute goods or services;
+ * // loss of use, data, or profits; or business interruption) however caused
+ * // and on any theory of liability, whether in contract, strict liability,
+ * // or tort (including negligence or otherwise) arising in any way out of
+ * // the use of this software, even if advised of the possibility of such damage.
+ * //
+ * //M*/
+
+#ifndef __OPENCV_OLD_CXMISC_H__
+#define __OPENCV_OLD_CXMISC_H__
+
+#include "opencv2/core/internal.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/highgui.h b/2.3-1/thirdparty/includes/OpenCV/opencv/highgui.h
new file mode 100644
index 00000000..9725c9f7
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/highgui.h
@@ -0,0 +1,50 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_HIGHGUI_H__
+#define __OPENCV_OLD_HIGHGUI_H__
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui_c.h"
+#include "opencv2/highgui/highgui.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv/ml.h b/2.3-1/thirdparty/includes/OpenCV/opencv/ml.h
new file mode 100644
index 00000000..0383a2f1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv/ml.h
@@ -0,0 +1,48 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OLD_ML_H__
+#define __OPENCV_OLD_ML_H__
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/ml/ml.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d.hpp
new file mode 100644
index 00000000..7356c151
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/calib3d/calib3d.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d/calib3d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d/calib3d.hpp
new file mode 100644
index 00000000..5e9cde8e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/calib3d/calib3d.hpp
@@ -0,0 +1,811 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CALIB3D_HPP__
+#define __OPENCV_CALIB3D_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/core/affine.hpp"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************************\
+* Camera Calibration, Pose Estimation and Stereo *
+\****************************************************************************************/
+
+typedef struct CvPOSITObject CvPOSITObject;
+
+/* Allocates and initializes CvPOSITObject structure before doing cvPOSIT */
+CVAPI(CvPOSITObject*) cvCreatePOSITObject( CvPoint3D32f* points, int point_count );
+
+
+/* Runs POSIT (POSe from ITeration) algorithm for determining 3d position of
+ an object given its model and projection in a weak-perspective case */
+CVAPI(void) cvPOSIT( CvPOSITObject* posit_object, CvPoint2D32f* image_points,
+ double focal_length, CvTermCriteria criteria,
+ float* rotation_matrix, float* translation_vector);
+
+/* Releases CvPOSITObject structure */
+CVAPI(void) cvReleasePOSITObject( CvPOSITObject** posit_object );
+
+/* updates the number of RANSAC iterations */
+CVAPI(int) cvRANSACUpdateNumIters( double p, double err_prob,
+ int model_points, int max_iters );
+
+CVAPI(void) cvConvertPointsHomogeneous( const CvMat* src, CvMat* dst );
+
+/* Calculates fundamental matrix given a set of corresponding points */
+#define CV_FM_7POINT 1
+#define CV_FM_8POINT 2
+
+#define CV_LMEDS 4
+#define CV_RANSAC 8
+
+#define CV_FM_LMEDS_ONLY CV_LMEDS
+#define CV_FM_RANSAC_ONLY CV_RANSAC
+#define CV_FM_LMEDS CV_LMEDS
+#define CV_FM_RANSAC CV_RANSAC
+
+enum
+{
+ CV_ITERATIVE = 0,
+ CV_EPNP = 1, // F.Moreno-Noguer, V.Lepetit and P.Fua "EPnP: Efficient Perspective-n-Point Camera Pose Estimation"
+ CV_P3P = 2 // X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang; "Complete Solution Classification for the Perspective-Three-Point Problem"
+};
+
+CVAPI(int) cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
+ CvMat* fundamental_matrix,
+ int method CV_DEFAULT(CV_FM_RANSAC),
+ double param1 CV_DEFAULT(3.), double param2 CV_DEFAULT(0.99),
+ CvMat* status CV_DEFAULT(NULL) );
+
+/* For each input point on one of images
+ computes parameters of the corresponding
+ epipolar line on the other image */
+CVAPI(void) cvComputeCorrespondEpilines( const CvMat* points,
+ int which_image,
+ const CvMat* fundamental_matrix,
+ CvMat* correspondent_lines );
+
+/* Triangulation functions */
+
+CVAPI(void) cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2,
+ CvMat* projPoints1, CvMat* projPoints2,
+ CvMat* points4D);
+
+CVAPI(void) cvCorrectMatches(CvMat* F, CvMat* points1, CvMat* points2,
+ CvMat* new_points1, CvMat* new_points2);
+
+
+/* Computes the optimal new camera matrix according to the free scaling parameter alpha:
+ alpha=0 - only valid pixels will be retained in the undistorted image
+ alpha=1 - all the source image pixels will be retained in the undistorted image
+*/
+CVAPI(void) cvGetOptimalNewCameraMatrix( const CvMat* camera_matrix,
+ const CvMat* dist_coeffs,
+ CvSize image_size, double alpha,
+ CvMat* new_camera_matrix,
+ CvSize new_imag_size CV_DEFAULT(cvSize(0,0)),
+ CvRect* valid_pixel_ROI CV_DEFAULT(0),
+ int center_principal_point CV_DEFAULT(0));
+
+/* Converts rotation vector to rotation matrix or vice versa */
+CVAPI(int) cvRodrigues2( const CvMat* src, CvMat* dst,
+ CvMat* jacobian CV_DEFAULT(0) );
+
+/* Finds perspective transformation between the object plane and image (view) plane */
+CVAPI(int) cvFindHomography( const CvMat* src_points,
+ const CvMat* dst_points,
+ CvMat* homography,
+ int method CV_DEFAULT(0),
+ double ransacReprojThreshold CV_DEFAULT(3),
+ CvMat* mask CV_DEFAULT(0));
+
+/* Computes RQ decomposition for 3x3 matrices */
+CVAPI(void) cvRQDecomp3x3( const CvMat *matrixM, CvMat *matrixR, CvMat *matrixQ,
+ CvMat *matrixQx CV_DEFAULT(NULL),
+ CvMat *matrixQy CV_DEFAULT(NULL),
+ CvMat *matrixQz CV_DEFAULT(NULL),
+ CvPoint3D64f *eulerAngles CV_DEFAULT(NULL));
+
+/* Computes projection matrix decomposition */
+CVAPI(void) cvDecomposeProjectionMatrix( const CvMat *projMatr, CvMat *calibMatr,
+ CvMat *rotMatr, CvMat *posVect,
+ CvMat *rotMatrX CV_DEFAULT(NULL),
+ CvMat *rotMatrY CV_DEFAULT(NULL),
+ CvMat *rotMatrZ CV_DEFAULT(NULL),
+ CvPoint3D64f *eulerAngles CV_DEFAULT(NULL));
+
+/* Computes d(AB)/dA and d(AB)/dB */
+CVAPI(void) cvCalcMatMulDeriv( const CvMat* A, const CvMat* B, CvMat* dABdA, CvMat* dABdB );
+
+/* Computes r3 = rodrigues(rodrigues(r2)*rodrigues(r1)),
+ t3 = rodrigues(r2)*t1 + t2 and the respective derivatives */
+CVAPI(void) cvComposeRT( const CvMat* _rvec1, const CvMat* _tvec1,
+ const CvMat* _rvec2, const CvMat* _tvec2,
+ CvMat* _rvec3, CvMat* _tvec3,
+ CvMat* dr3dr1 CV_DEFAULT(0), CvMat* dr3dt1 CV_DEFAULT(0),
+ CvMat* dr3dr2 CV_DEFAULT(0), CvMat* dr3dt2 CV_DEFAULT(0),
+ CvMat* dt3dr1 CV_DEFAULT(0), CvMat* dt3dt1 CV_DEFAULT(0),
+ CvMat* dt3dr2 CV_DEFAULT(0), CvMat* dt3dt2 CV_DEFAULT(0) );
+
+/* Projects object points to the view plane using
+ the specified extrinsic and intrinsic camera parameters */
+CVAPI(void) cvProjectPoints2( const CvMat* object_points, const CvMat* rotation_vector,
+ const CvMat* translation_vector, const CvMat* camera_matrix,
+ const CvMat* distortion_coeffs, CvMat* image_points,
+ CvMat* dpdrot CV_DEFAULT(NULL), CvMat* dpdt CV_DEFAULT(NULL),
+ CvMat* dpdf CV_DEFAULT(NULL), CvMat* dpdc CV_DEFAULT(NULL),
+ CvMat* dpddist CV_DEFAULT(NULL),
+ double aspect_ratio CV_DEFAULT(0));
+
+/* Finds extrinsic camera parameters from
+ a few known corresponding point pairs and intrinsic parameters */
+CVAPI(void) cvFindExtrinsicCameraParams2( const CvMat* object_points,
+ const CvMat* image_points,
+ const CvMat* camera_matrix,
+ const CvMat* distortion_coeffs,
+ CvMat* rotation_vector,
+ CvMat* translation_vector,
+ int use_extrinsic_guess CV_DEFAULT(0) );
+
+/* Computes initial estimate of the intrinsic camera parameters
+ in case of planar calibration target (e.g. chessboard) */
+CVAPI(void) cvInitIntrinsicParams2D( const CvMat* object_points,
+ const CvMat* image_points,
+ const CvMat* npoints, CvSize image_size,
+ CvMat* camera_matrix,
+ double aspect_ratio CV_DEFAULT(1.) );
+
+#define CV_CALIB_CB_ADAPTIVE_THRESH 1
+#define CV_CALIB_CB_NORMALIZE_IMAGE 2
+#define CV_CALIB_CB_FILTER_QUADS 4
+#define CV_CALIB_CB_FAST_CHECK 8
+
+// Performs a fast check if a chessboard is in the input image. This is a workaround to
+// a problem of cvFindChessboardCorners being slow on images with no chessboard
+// - src: input image
+// - size: chessboard size
+// Returns 1 if a chessboard can be in this image and findChessboardCorners should be called,
+// 0 if there is no chessboard, -1 in case of error
+CVAPI(int) cvCheckChessboard(IplImage* src, CvSize size);
+
+ /* Detects corners on a chessboard calibration pattern */
+CVAPI(int) cvFindChessboardCorners( const void* image, CvSize pattern_size,
+ CvPoint2D32f* corners,
+ int* corner_count CV_DEFAULT(NULL),
+ int flags CV_DEFAULT(CV_CALIB_CB_ADAPTIVE_THRESH+CV_CALIB_CB_NORMALIZE_IMAGE) );
+
+/* Draws individual chessboard corners or the whole chessboard detected */
+CVAPI(void) cvDrawChessboardCorners( CvArr* image, CvSize pattern_size,
+ CvPoint2D32f* corners,
+ int count, int pattern_was_found );
+
+#define CV_CALIB_USE_INTRINSIC_GUESS 1
+#define CV_CALIB_FIX_ASPECT_RATIO 2
+#define CV_CALIB_FIX_PRINCIPAL_POINT 4
+#define CV_CALIB_ZERO_TANGENT_DIST 8
+#define CV_CALIB_FIX_FOCAL_LENGTH 16
+#define CV_CALIB_FIX_K1 32
+#define CV_CALIB_FIX_K2 64
+#define CV_CALIB_FIX_K3 128
+#define CV_CALIB_FIX_K4 2048
+#define CV_CALIB_FIX_K5 4096
+#define CV_CALIB_FIX_K6 8192
+#define CV_CALIB_RATIONAL_MODEL 16384
+
+/* Finds intrinsic and extrinsic camera parameters
+ from a few views of known calibration pattern */
+CVAPI(double) cvCalibrateCamera2( const CvMat* object_points,
+ const CvMat* image_points,
+ const CvMat* point_counts,
+ CvSize image_size,
+ CvMat* camera_matrix,
+ CvMat* distortion_coeffs,
+ CvMat* rotation_vectors CV_DEFAULT(NULL),
+ CvMat* translation_vectors CV_DEFAULT(NULL),
+ int flags CV_DEFAULT(0),
+ CvTermCriteria term_crit CV_DEFAULT(cvTermCriteria(
+ CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,DBL_EPSILON)) );
+
+/* Computes various useful characteristics of the camera from the data computed by
+ cvCalibrateCamera2 */
+CVAPI(void) cvCalibrationMatrixValues( const CvMat *camera_matrix,
+ CvSize image_size,
+ double aperture_width CV_DEFAULT(0),
+ double aperture_height CV_DEFAULT(0),
+ double *fovx CV_DEFAULT(NULL),
+ double *fovy CV_DEFAULT(NULL),
+ double *focal_length CV_DEFAULT(NULL),
+ CvPoint2D64f *principal_point CV_DEFAULT(NULL),
+ double *pixel_aspect_ratio CV_DEFAULT(NULL));
+
+#define CV_CALIB_FIX_INTRINSIC 256
+#define CV_CALIB_SAME_FOCAL_LENGTH 512
+
+/* Computes the transformation from one camera coordinate system to another one
+ from a few correspondent views of the same calibration target. Optionally, calibrates
+ both cameras */
+CVAPI(double) cvStereoCalibrate( const CvMat* object_points, const CvMat* image_points1,
+ const CvMat* image_points2, const CvMat* npoints,
+ CvMat* camera_matrix1, CvMat* dist_coeffs1,
+ CvMat* camera_matrix2, CvMat* dist_coeffs2,
+ CvSize image_size, CvMat* R, CvMat* T,
+ CvMat* E CV_DEFAULT(0), CvMat* F CV_DEFAULT(0),
+ CvTermCriteria term_crit CV_DEFAULT(cvTermCriteria(
+ CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,1e-6)),
+ int flags CV_DEFAULT(CV_CALIB_FIX_INTRINSIC));
+
+#define CV_CALIB_ZERO_DISPARITY 1024
+
+/* Computes 3D rotations (+ optional shift) for each camera coordinate system to make both
+ views parallel (=> to make all the epipolar lines horizontal or vertical) */
+CVAPI(void) cvStereoRectify( const CvMat* camera_matrix1, const CvMat* camera_matrix2,
+ const CvMat* dist_coeffs1, const CvMat* dist_coeffs2,
+ CvSize image_size, const CvMat* R, const CvMat* T,
+ CvMat* R1, CvMat* R2, CvMat* P1, CvMat* P2,
+ CvMat* Q CV_DEFAULT(0),
+ int flags CV_DEFAULT(CV_CALIB_ZERO_DISPARITY),
+ double alpha CV_DEFAULT(-1),
+ CvSize new_image_size CV_DEFAULT(cvSize(0,0)),
+ CvRect* valid_pix_ROI1 CV_DEFAULT(0),
+ CvRect* valid_pix_ROI2 CV_DEFAULT(0));
+
+/* Computes rectification transformations for uncalibrated pair of images using a set
+ of point correspondences */
+CVAPI(int) cvStereoRectifyUncalibrated( const CvMat* points1, const CvMat* points2,
+ const CvMat* F, CvSize img_size,
+ CvMat* H1, CvMat* H2,
+ double threshold CV_DEFAULT(5));
+
+
+
+/* stereo correspondence parameters and functions */
+
+#define CV_STEREO_BM_NORMALIZED_RESPONSE 0
+#define CV_STEREO_BM_XSOBEL 1
+
+/* Block matching algorithm structure */
+typedef struct CvStereoBMState
+{
+ // pre-filtering (normalization of input images)
+ int preFilterType; // =CV_STEREO_BM_NORMALIZED_RESPONSE now
+ int preFilterSize; // averaging window size: ~5x5..21x21
+ int preFilterCap; // the output of pre-filtering is clipped by [-preFilterCap,preFilterCap]
+
+ // correspondence using Sum of Absolute Difference (SAD)
+ int SADWindowSize; // ~5x5..21x21
+ int minDisparity; // minimum disparity (can be negative)
+ int numberOfDisparities; // maximum disparity - minimum disparity (> 0)
+
+ // post-filtering
+ int textureThreshold; // the disparity is only computed for pixels
+ // with textured enough neighborhood
+ int uniquenessRatio; // accept the computed disparity d* only if
+ // SAD(d) >= SAD(d*)*(1 + uniquenessRatio/100.)
+ // for any d != d*+/-1 within the search range.
+ int speckleWindowSize; // disparity variation window
+ int speckleRange; // acceptable range of variation in window
+
+ int trySmallerWindows; // if 1, the results may be more accurate,
+ // at the expense of slower processing
+ CvRect roi1, roi2;
+ int disp12MaxDiff;
+
+ // temporary buffers
+ CvMat* preFilteredImg0;
+ CvMat* preFilteredImg1;
+ CvMat* slidingSumBuf;
+ CvMat* cost;
+ CvMat* disp;
+} CvStereoBMState;
+
+#define CV_STEREO_BM_BASIC 0
+#define CV_STEREO_BM_FISH_EYE 1
+#define CV_STEREO_BM_NARROW 2
+
+CVAPI(CvStereoBMState*) cvCreateStereoBMState(int preset CV_DEFAULT(CV_STEREO_BM_BASIC),
+ int numberOfDisparities CV_DEFAULT(0));
+
+CVAPI(void) cvReleaseStereoBMState( CvStereoBMState** state );
+
+CVAPI(void) cvFindStereoCorrespondenceBM( const CvArr* left, const CvArr* right,
+ CvArr* disparity, CvStereoBMState* state );
+
+CVAPI(CvRect) cvGetValidDisparityROI( CvRect roi1, CvRect roi2, int minDisparity,
+ int numberOfDisparities, int SADWindowSize );
+
+CVAPI(void) cvValidateDisparity( CvArr* disparity, const CvArr* cost,
+ int minDisparity, int numberOfDisparities,
+ int disp12MaxDiff CV_DEFAULT(1) );
+
+/* Reprojects the computed disparity image to the 3D space using the specified 4x4 matrix */
+CVAPI(void) cvReprojectImageTo3D( const CvArr* disparityImage,
+ CvArr* _3dImage, const CvMat* Q,
+ int handleMissingValues CV_DEFAULT(0) );
+
+
+#ifdef __cplusplus
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+class CV_EXPORTS CvLevMarq
+{
+public:
+ CvLevMarq();
+ CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria=
+ cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON),
+ bool completeSymmFlag=false );
+ ~CvLevMarq();
+ void init( int nparams, int nerrs, CvTermCriteria criteria=
+ cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON),
+ bool completeSymmFlag=false );
+ bool update( const CvMat*& param, CvMat*& J, CvMat*& err );
+ bool updateAlt( const CvMat*& param, CvMat*& JtJ, CvMat*& JtErr, double*& errNorm );
+
+ void clear();
+ void step();
+ enum { DONE=0, STARTED=1, CALC_J=2, CHECK_ERR=3 };
+
+ cv::Ptr<CvMat> mask;
+ cv::Ptr<CvMat> prevParam;
+ cv::Ptr<CvMat> param;
+ cv::Ptr<CvMat> J;
+ cv::Ptr<CvMat> err;
+ cv::Ptr<CvMat> JtJ;
+ cv::Ptr<CvMat> JtJN;
+ cv::Ptr<CvMat> JtErr;
+ cv::Ptr<CvMat> JtJV;
+ cv::Ptr<CvMat> JtJW;
+ double prevErrNorm, errNorm;
+ int lambdaLg10;
+ CvTermCriteria criteria;
+ int state;
+ int iters;
+ bool completeSymmFlag;
+};
+
+namespace cv
+{
+//! converts rotation vector to rotation matrix or vice versa using Rodrigues transformation
+CV_EXPORTS_W void Rodrigues(InputArray src, OutputArray dst, OutputArray jacobian=noArray());
+
+//! type of the robust estimation algorithm
+enum
+{
+ LMEDS=CV_LMEDS, //!< least-median algorithm
+ RANSAC=CV_RANSAC //!< RANSAC algorithm
+};
+
+//! computes the best-fit perspective transformation mapping srcPoints to dstPoints.
+CV_EXPORTS_W Mat findHomography( InputArray srcPoints, InputArray dstPoints,
+ int method=0, double ransacReprojThreshold=3,
+ OutputArray mask=noArray());
+
+//! variant of findHomography for backward compatibility
+CV_EXPORTS Mat findHomography( InputArray srcPoints, InputArray dstPoints,
+ OutputArray mask, int method=0, double ransacReprojThreshold=3);
+
+//! Computes RQ decomposition of 3x3 matrix
+CV_EXPORTS_W Vec3d RQDecomp3x3( InputArray src, OutputArray mtxR, OutputArray mtxQ,
+ OutputArray Qx=noArray(),
+ OutputArray Qy=noArray(),
+ OutputArray Qz=noArray());
+
+//! Decomposes the projection matrix into camera matrix and the rotation martix and the translation vector
+CV_EXPORTS_W void decomposeProjectionMatrix( InputArray projMatrix, OutputArray cameraMatrix,
+ OutputArray rotMatrix, OutputArray transVect,
+ OutputArray rotMatrixX=noArray(),
+ OutputArray rotMatrixY=noArray(),
+ OutputArray rotMatrixZ=noArray(),
+ OutputArray eulerAngles=noArray() );
+
+//! computes derivatives of the matrix product w.r.t each of the multiplied matrix coefficients
+CV_EXPORTS_W void matMulDeriv( InputArray A, InputArray B,
+ OutputArray dABdA,
+ OutputArray dABdB );
+
+//! composes 2 [R|t] transformations together. Also computes the derivatives of the result w.r.t the arguments
+CV_EXPORTS_W void composeRT( InputArray rvec1, InputArray tvec1,
+ InputArray rvec2, InputArray tvec2,
+ OutputArray rvec3, OutputArray tvec3,
+ OutputArray dr3dr1=noArray(), OutputArray dr3dt1=noArray(),
+ OutputArray dr3dr2=noArray(), OutputArray dr3dt2=noArray(),
+ OutputArray dt3dr1=noArray(), OutputArray dt3dt1=noArray(),
+ OutputArray dt3dr2=noArray(), OutputArray dt3dt2=noArray() );
+
+//! projects points from the model coordinate space to the image coordinates. Also computes derivatives of the image coordinates w.r.t the intrinsic and extrinsic camera parameters
+CV_EXPORTS_W void projectPoints( InputArray objectPoints,
+ InputArray rvec, InputArray tvec,
+ InputArray cameraMatrix, InputArray distCoeffs,
+ OutputArray imagePoints,
+ OutputArray jacobian=noArray(),
+ double aspectRatio=0 );
+
+//! computes the camera pose from a few 3D points and the corresponding projections. The outliers are not handled.
+enum
+{
+ ITERATIVE=CV_ITERATIVE,
+ EPNP=CV_EPNP,
+ P3P=CV_P3P
+};
+CV_EXPORTS_W bool solvePnP( InputArray objectPoints, InputArray imagePoints,
+ InputArray cameraMatrix, InputArray distCoeffs,
+ OutputArray rvec, OutputArray tvec,
+ bool useExtrinsicGuess=false, int flags=ITERATIVE);
+
+//! computes the camera pose from a few 3D points and the corresponding projections. The outliers are possible.
+CV_EXPORTS_W void solvePnPRansac( InputArray objectPoints,
+ InputArray imagePoints,
+ InputArray cameraMatrix,
+ InputArray distCoeffs,
+ OutputArray rvec,
+ OutputArray tvec,
+ bool useExtrinsicGuess = false,
+ int iterationsCount = 100,
+ float reprojectionError = 8.0,
+ int minInliersCount = 100,
+ OutputArray inliers = noArray(),
+ int flags = ITERATIVE);
+
+//! initializes camera matrix from a few 3D points and the corresponding projections.
+CV_EXPORTS_W Mat initCameraMatrix2D( InputArrayOfArrays objectPoints,
+ InputArrayOfArrays imagePoints,
+ Size imageSize, double aspectRatio=1. );
+
+enum { CALIB_CB_ADAPTIVE_THRESH = 1, CALIB_CB_NORMALIZE_IMAGE = 2,
+ CALIB_CB_FILTER_QUADS = 4, CALIB_CB_FAST_CHECK = 8 };
+
+//! finds checkerboard pattern of the specified size in the image
+CV_EXPORTS_W bool findChessboardCorners( InputArray image, Size patternSize,
+ OutputArray corners,
+ int flags=CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE );
+
+//! finds subpixel-accurate positions of the chessboard corners
+CV_EXPORTS bool find4QuadCornerSubpix(InputArray img, InputOutputArray corners, Size region_size);
+
+//! draws the checkerboard pattern (found or partly found) in the image
+CV_EXPORTS_W void drawChessboardCorners( InputOutputArray image, Size patternSize,
+ InputArray corners, bool patternWasFound );
+
+enum { CALIB_CB_SYMMETRIC_GRID = 1, CALIB_CB_ASYMMETRIC_GRID = 2,
+ CALIB_CB_CLUSTERING = 4 };
+
+//! finds circles' grid pattern of the specified size in the image
+CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize,
+ OutputArray centers, int flags=CALIB_CB_SYMMETRIC_GRID,
+ const Ptr<FeatureDetector> &blobDetector = new SimpleBlobDetector());
+
+//! the deprecated function. Use findCirclesGrid() instead of it.
+CV_EXPORTS_W bool findCirclesGridDefault( InputArray image, Size patternSize,
+ OutputArray centers, int flags=CALIB_CB_SYMMETRIC_GRID );
+enum
+{
+ CALIB_USE_INTRINSIC_GUESS = CV_CALIB_USE_INTRINSIC_GUESS,
+ CALIB_FIX_ASPECT_RATIO = CV_CALIB_FIX_ASPECT_RATIO,
+ CALIB_FIX_PRINCIPAL_POINT = CV_CALIB_FIX_PRINCIPAL_POINT,
+ CALIB_ZERO_TANGENT_DIST = CV_CALIB_ZERO_TANGENT_DIST,
+ CALIB_FIX_FOCAL_LENGTH = CV_CALIB_FIX_FOCAL_LENGTH,
+ CALIB_FIX_K1 = CV_CALIB_FIX_K1,
+ CALIB_FIX_K2 = CV_CALIB_FIX_K2,
+ CALIB_FIX_K3 = CV_CALIB_FIX_K3,
+ CALIB_FIX_K4 = CV_CALIB_FIX_K4,
+ CALIB_FIX_K5 = CV_CALIB_FIX_K5,
+ CALIB_FIX_K6 = CV_CALIB_FIX_K6,
+ CALIB_RATIONAL_MODEL = CV_CALIB_RATIONAL_MODEL,
+ // only for stereo
+ CALIB_FIX_INTRINSIC = CV_CALIB_FIX_INTRINSIC,
+ CALIB_SAME_FOCAL_LENGTH = CV_CALIB_SAME_FOCAL_LENGTH,
+ // for stereo rectification
+ CALIB_ZERO_DISPARITY = CV_CALIB_ZERO_DISPARITY
+};
+
+//! finds intrinsic and extrinsic camera parameters from several fews of a known calibration pattern.
+CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints,
+ InputArrayOfArrays imagePoints,
+ Size imageSize,
+ CV_OUT InputOutputArray cameraMatrix,
+ CV_OUT InputOutputArray distCoeffs,
+ OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
+ int flags=0, TermCriteria criteria = TermCriteria(
+ TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON) );
+
+//! computes several useful camera characteristics from the camera matrix, camera frame resolution and the physical sensor size.
+CV_EXPORTS_W void calibrationMatrixValues( InputArray cameraMatrix,
+ Size imageSize,
+ double apertureWidth,
+ double apertureHeight,
+ CV_OUT double& fovx,
+ CV_OUT double& fovy,
+ CV_OUT double& focalLength,
+ CV_OUT Point2d& principalPoint,
+ CV_OUT double& aspectRatio );
+
+//! finds intrinsic and extrinsic parameters of a stereo camera
+CV_EXPORTS_W double stereoCalibrate( InputArrayOfArrays objectPoints,
+ InputArrayOfArrays imagePoints1,
+ InputArrayOfArrays imagePoints2,
+ CV_OUT InputOutputArray cameraMatrix1,
+ CV_OUT InputOutputArray distCoeffs1,
+ CV_OUT InputOutputArray cameraMatrix2,
+ CV_OUT InputOutputArray distCoeffs2,
+ Size imageSize, OutputArray R,
+ OutputArray T, OutputArray E, OutputArray F,
+ TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6),
+ int flags=CALIB_FIX_INTRINSIC );
+
+
+//! computes the rectification transformation for a stereo camera from its intrinsic and extrinsic parameters
+CV_EXPORTS_W void stereoRectify( InputArray cameraMatrix1, InputArray distCoeffs1,
+ InputArray cameraMatrix2, InputArray distCoeffs2,
+ Size imageSize, InputArray R, InputArray T,
+ OutputArray R1, OutputArray R2,
+ OutputArray P1, OutputArray P2,
+ OutputArray Q, int flags=CALIB_ZERO_DISPARITY,
+ double alpha=-1, Size newImageSize=Size(),
+ CV_OUT Rect* validPixROI1=0, CV_OUT Rect* validPixROI2=0 );
+
+//! computes the rectification transformation for an uncalibrated stereo camera (zero distortion is assumed)
+CV_EXPORTS_W bool stereoRectifyUncalibrated( InputArray points1, InputArray points2,
+ InputArray F, Size imgSize,
+ OutputArray H1, OutputArray H2,
+ double threshold=5 );
+
+//! computes the rectification transformations for 3-head camera, where all the heads are on the same line.
+CV_EXPORTS_W float rectify3Collinear( InputArray cameraMatrix1, InputArray distCoeffs1,
+ InputArray cameraMatrix2, InputArray distCoeffs2,
+ InputArray cameraMatrix3, InputArray distCoeffs3,
+ InputArrayOfArrays imgpt1, InputArrayOfArrays imgpt3,
+ Size imageSize, InputArray R12, InputArray T12,
+ InputArray R13, InputArray T13,
+ OutputArray R1, OutputArray R2, OutputArray R3,
+ OutputArray P1, OutputArray P2, OutputArray P3,
+ OutputArray Q, double alpha, Size newImgSize,
+ CV_OUT Rect* roi1, CV_OUT Rect* roi2, int flags );
+
+//! returns the optimal new camera matrix
+CV_EXPORTS_W Mat getOptimalNewCameraMatrix( InputArray cameraMatrix, InputArray distCoeffs,
+ Size imageSize, double alpha, Size newImgSize=Size(),
+ CV_OUT Rect* validPixROI=0, bool centerPrincipalPoint=false);
+
+//! converts point coordinates from normal pixel coordinates to homogeneous coordinates ((x,y)->(x,y,1))
+CV_EXPORTS_W void convertPointsToHomogeneous( InputArray src, OutputArray dst );
+
+//! converts point coordinates from homogeneous to normal pixel coordinates ((x,y,z)->(x/z, y/z))
+CV_EXPORTS_W void convertPointsFromHomogeneous( InputArray src, OutputArray dst );
+
+//! for backward compatibility
+CV_EXPORTS void convertPointsHomogeneous( InputArray src, OutputArray dst );
+
+//! the algorithm for finding fundamental matrix
+enum
+{
+ FM_7POINT = CV_FM_7POINT, //!< 7-point algorithm
+ FM_8POINT = CV_FM_8POINT, //!< 8-point algorithm
+ FM_LMEDS = CV_FM_LMEDS, //!< least-median algorithm
+ FM_RANSAC = CV_FM_RANSAC //!< RANSAC algorithm
+};
+
+//! finds fundamental matrix from a set of corresponding 2D points
+CV_EXPORTS_W Mat findFundamentalMat( InputArray points1, InputArray points2,
+ int method=FM_RANSAC,
+ double param1=3., double param2=0.99,
+ OutputArray mask=noArray());
+
+//! variant of findFundamentalMat for backward compatibility
+CV_EXPORTS Mat findFundamentalMat( InputArray points1, InputArray points2,
+ OutputArray mask, int method=FM_RANSAC,
+ double param1=3., double param2=0.99);
+
+//! finds coordinates of epipolar lines corresponding the specified points
+CV_EXPORTS_W void computeCorrespondEpilines( InputArray points,
+ int whichImage, InputArray F,
+ OutputArray lines );
+
+CV_EXPORTS_W void triangulatePoints( InputArray projMatr1, InputArray projMatr2,
+ InputArray projPoints1, InputArray projPoints2,
+ OutputArray points4D );
+
+CV_EXPORTS_W void correctMatches( InputArray F, InputArray points1, InputArray points2,
+ OutputArray newPoints1, OutputArray newPoints2 );
+
+template<> CV_EXPORTS void Ptr<CvStereoBMState>::delete_obj();
+
+/*!
+ Block Matching Stereo Correspondence Algorithm
+
+ The class implements BM stereo correspondence algorithm by K. Konolige.
+*/
+class CV_EXPORTS_W StereoBM
+{
+public:
+ enum { PREFILTER_NORMALIZED_RESPONSE = 0, PREFILTER_XSOBEL = 1,
+ BASIC_PRESET=0, FISH_EYE_PRESET=1, NARROW_PRESET=2 };
+
+ //! the default constructor
+ CV_WRAP StereoBM();
+ //! the full constructor taking the camera-specific preset, number of disparities and the SAD window size
+ CV_WRAP StereoBM(int preset, int ndisparities=0, int SADWindowSize=21);
+ //! the method that reinitializes the state. The previous content is destroyed
+ void init(int preset, int ndisparities=0, int SADWindowSize=21);
+ //! the stereo correspondence operator. Finds the disparity for the specified rectified stereo pair
+ CV_WRAP_AS(compute) void operator()( InputArray left, InputArray right,
+ OutputArray disparity, int disptype=CV_16S );
+
+ //! pointer to the underlying CvStereoBMState
+ Ptr<CvStereoBMState> state;
+};
+
+
+/*!
+ Semi-Global Block Matching Stereo Correspondence Algorithm
+
+ The class implements the original SGBM stereo correspondence algorithm by H. Hirschmuller and some its modification.
+ */
+class CV_EXPORTS_W StereoSGBM
+{
+public:
+ enum { DISP_SHIFT=4, DISP_SCALE = (1<<DISP_SHIFT) };
+
+ //! the default constructor
+ CV_WRAP StereoSGBM();
+
+ //! the full constructor taking all the necessary algorithm parameters
+ CV_WRAP StereoSGBM(int minDisparity, int numDisparities, int SADWindowSize,
+ int P1=0, int P2=0, int disp12MaxDiff=0,
+ int preFilterCap=0, int uniquenessRatio=0,
+ int speckleWindowSize=0, int speckleRange=0,
+ bool fullDP=false);
+ //! the destructor
+ virtual ~StereoSGBM();
+
+ //! the stereo correspondence operator that computes disparity map for the specified rectified stereo pair
+ CV_WRAP_AS(compute) virtual void operator()(InputArray left, InputArray right,
+ OutputArray disp);
+
+ CV_PROP_RW int minDisparity;
+ CV_PROP_RW int numberOfDisparities;
+ CV_PROP_RW int SADWindowSize;
+ CV_PROP_RW int preFilterCap;
+ CV_PROP_RW int uniquenessRatio;
+ CV_PROP_RW int P1;
+ CV_PROP_RW int P2;
+ CV_PROP_RW int speckleWindowSize;
+ CV_PROP_RW int speckleRange;
+ CV_PROP_RW int disp12MaxDiff;
+ CV_PROP_RW bool fullDP;
+
+protected:
+ Mat buffer;
+};
+
+//! filters off speckles (small regions of incorrectly computed disparity)
+CV_EXPORTS_W void filterSpeckles( InputOutputArray img, double newVal, int maxSpeckleSize, double maxDiff,
+ InputOutputArray buf=noArray() );
+
+//! computes valid disparity ROI from the valid ROIs of the rectified images (that are returned by cv::stereoRectify())
+CV_EXPORTS_W Rect getValidDisparityROI( Rect roi1, Rect roi2,
+ int minDisparity, int numberOfDisparities,
+ int SADWindowSize );
+
+//! validates disparity using the left-right check. The matrix "cost" should be computed by the stereo correspondence algorithm
+CV_EXPORTS_W void validateDisparity( InputOutputArray disparity, InputArray cost,
+ int minDisparity, int numberOfDisparities,
+ int disp12MaxDisp=1 );
+
+//! reprojects disparity image to 3D: (x,y,d)->(X,Y,Z) using the matrix Q returned by cv::stereoRectify
+CV_EXPORTS_W void reprojectImageTo3D( InputArray disparity,
+ OutputArray _3dImage, InputArray Q,
+ bool handleMissingValues=false,
+ int ddepth=-1 );
+
+CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst,
+ OutputArray out, OutputArray inliers,
+ double ransacThreshold=3, double confidence=0.99);
+
+namespace fisheye
+{
+ enum{
+ CALIB_USE_INTRINSIC_GUESS = 1,
+ CALIB_RECOMPUTE_EXTRINSIC = 2,
+ CALIB_CHECK_COND = 4,
+ CALIB_FIX_SKEW = 8,
+ CALIB_FIX_K1 = 16,
+ CALIB_FIX_K2 = 32,
+ CALIB_FIX_K3 = 64,
+ CALIB_FIX_K4 = 128,
+ CALIB_FIX_INTRINSIC = 256
+ };
+
+ //! projects 3D points using fisheye model
+ CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine,
+ InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray());
+
+ //! projects points using fisheye model
+ CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec,
+ InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray());
+
+ //! distorts 2D points using fisheye model
+ CV_EXPORTS void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0);
+
+ //! undistorts 2D points using fisheye model
+ CV_EXPORTS void undistortPoints(InputArray distorted, OutputArray undistorted,
+ InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray());
+
+ //! computing undistortion and rectification maps for image transform by cv::remap()
+ //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used
+ CV_EXPORTS void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P,
+ const cv::Size& size, int m1type, OutputArray map1, OutputArray map2);
+
+ //! undistorts image, optionally changes resolution and camera matrix. If Knew zero identity matrix is used
+ CV_EXPORTS void undistortImage(InputArray distorted, OutputArray undistorted,
+ InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size());
+
+ //! estimates new camera matrix for undistortion or rectification
+ CV_EXPORTS void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R,
+ OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0);
+
+ //! performs camera calibaration
+ CV_EXPORTS double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size,
+ InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0,
+ TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON));
+
+ //! stereo rectification estimation
+ CV_EXPORTS void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec,
+ OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(),
+ double balance = 0.0, double fov_scale = 1.0);
+
+ //! performs stereo calibaration
+ CV_EXPORTS double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2,
+ InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize,
+ OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC,
+ TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON));
+
+}
+
+}
+
+#endif
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/contrib.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/contrib.hpp
new file mode 100644
index 00000000..d5879424
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/contrib.hpp
@@ -0,0 +1,998 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CONTRIB_HPP__
+#define __OPENCV_CONTRIB_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/objdetect/objdetect.hpp"
+
+#ifdef __cplusplus
+
+/****************************************************************************************\
+* Adaptive Skin Detector *
+\****************************************************************************************/
+
+class CV_EXPORTS CvAdaptiveSkinDetector
+{
+private:
+ enum {
+ GSD_HUE_LT = 3,
+ GSD_HUE_UT = 33,
+ GSD_INTENSITY_LT = 15,
+ GSD_INTENSITY_UT = 250
+ };
+
+ class CV_EXPORTS Histogram
+ {
+ private:
+ enum {
+ HistogramSize = (GSD_HUE_UT - GSD_HUE_LT + 1)
+ };
+
+ protected:
+ int findCoverageIndex(double surfaceToCover, int defaultValue = 0);
+
+ public:
+ CvHistogram *fHistogram;
+ Histogram();
+ virtual ~Histogram();
+
+ void findCurveThresholds(int &x1, int &x2, double percent = 0.05);
+ void mergeWith(Histogram *source, double weight);
+ };
+
+ int nStartCounter, nFrameCount, nSkinHueLowerBound, nSkinHueUpperBound, nMorphingMethod, nSamplingDivider;
+ double fHistogramMergeFactor, fHuePercentCovered;
+ Histogram histogramHueMotion, skinHueHistogram;
+ IplImage *imgHueFrame, *imgSaturationFrame, *imgLastGrayFrame, *imgMotionFrame, *imgFilteredFrame;
+ IplImage *imgShrinked, *imgTemp, *imgGrayFrame, *imgHSVFrame;
+
+protected:
+ void initData(IplImage *src, int widthDivider, int heightDivider);
+ void adaptiveFilter();
+
+public:
+
+ enum {
+ MORPHING_METHOD_NONE = 0,
+ MORPHING_METHOD_ERODE = 1,
+ MORPHING_METHOD_ERODE_ERODE = 2,
+ MORPHING_METHOD_ERODE_DILATE = 3
+ };
+
+ CvAdaptiveSkinDetector(int samplingDivider = 1, int morphingMethod = MORPHING_METHOD_NONE);
+ virtual ~CvAdaptiveSkinDetector();
+
+ virtual void process(IplImage *inputBGRImage, IplImage *outputHueMask);
+};
+
+
+/****************************************************************************************\
+ * Fuzzy MeanShift Tracker *
+ \****************************************************************************************/
+
+class CV_EXPORTS CvFuzzyPoint {
+public:
+ double x, y, value;
+
+ CvFuzzyPoint(double _x, double _y);
+};
+
+class CV_EXPORTS CvFuzzyCurve {
+private:
+ std::vector<CvFuzzyPoint> points;
+ double value, centre;
+
+ bool between(double x, double x1, double x2);
+
+public:
+ CvFuzzyCurve();
+ ~CvFuzzyCurve();
+
+ void setCentre(double _centre);
+ double getCentre();
+ void clear();
+ void addPoint(double x, double y);
+ double calcValue(double param);
+ double getValue();
+ void setValue(double _value);
+};
+
+class CV_EXPORTS CvFuzzyFunction {
+public:
+ std::vector<CvFuzzyCurve> curves;
+
+ CvFuzzyFunction();
+ ~CvFuzzyFunction();
+ void addCurve(CvFuzzyCurve *curve, double value = 0);
+ void resetValues();
+ double calcValue();
+ CvFuzzyCurve *newCurve();
+};
+
+class CV_EXPORTS CvFuzzyRule {
+private:
+ CvFuzzyCurve *fuzzyInput1, *fuzzyInput2;
+ CvFuzzyCurve *fuzzyOutput;
+public:
+ CvFuzzyRule();
+ ~CvFuzzyRule();
+ void setRule(CvFuzzyCurve *c1, CvFuzzyCurve *c2, CvFuzzyCurve *o1);
+ double calcValue(double param1, double param2);
+ CvFuzzyCurve *getOutputCurve();
+};
+
+class CV_EXPORTS CvFuzzyController {
+private:
+ std::vector<CvFuzzyRule*> rules;
+public:
+ CvFuzzyController();
+ ~CvFuzzyController();
+ void addRule(CvFuzzyCurve *c1, CvFuzzyCurve *c2, CvFuzzyCurve *o1);
+ double calcOutput(double param1, double param2);
+};
+
+class CV_EXPORTS CvFuzzyMeanShiftTracker
+{
+private:
+ class FuzzyResizer
+ {
+ private:
+ CvFuzzyFunction iInput, iOutput;
+ CvFuzzyController fuzzyController;
+ public:
+ FuzzyResizer();
+ int calcOutput(double edgeDensity, double density);
+ };
+
+ class SearchWindow
+ {
+ public:
+ FuzzyResizer *fuzzyResizer;
+ int x, y;
+ int width, height, maxWidth, maxHeight, ellipseHeight, ellipseWidth;
+ int ldx, ldy, ldw, ldh, numShifts, numIters;
+ int xGc, yGc;
+ long m00, m01, m10, m11, m02, m20;
+ double ellipseAngle;
+ double density;
+ unsigned int depthLow, depthHigh;
+ int verticalEdgeLeft, verticalEdgeRight, horizontalEdgeTop, horizontalEdgeBottom;
+
+ SearchWindow();
+ ~SearchWindow();
+ void setSize(int _x, int _y, int _width, int _height);
+ void initDepthValues(IplImage *maskImage, IplImage *depthMap);
+ bool shift();
+ void extractInfo(IplImage *maskImage, IplImage *depthMap, bool initDepth);
+ void getResizeAttribsEdgeDensityLinear(int &resizeDx, int &resizeDy, int &resizeDw, int &resizeDh);
+ void getResizeAttribsInnerDensity(int &resizeDx, int &resizeDy, int &resizeDw, int &resizeDh);
+ void getResizeAttribsEdgeDensityFuzzy(int &resizeDx, int &resizeDy, int &resizeDw, int &resizeDh);
+ bool meanShift(IplImage *maskImage, IplImage *depthMap, int maxIteration, bool initDepth);
+ };
+
+public:
+ enum TrackingState
+ {
+ tsNone = 0,
+ tsSearching = 1,
+ tsTracking = 2,
+ tsSetWindow = 3,
+ tsDisabled = 10
+ };
+
+ enum ResizeMethod {
+ rmEdgeDensityLinear = 0,
+ rmEdgeDensityFuzzy = 1,
+ rmInnerDensity = 2
+ };
+
+ enum {
+ MinKernelMass = 1000
+ };
+
+ SearchWindow kernel;
+ int searchMode;
+
+private:
+ enum
+ {
+ MaxMeanShiftIteration = 5,
+ MaxSetSizeIteration = 5
+ };
+
+ void findOptimumSearchWindow(SearchWindow &searchWindow, IplImage *maskImage, IplImage *depthMap, int maxIteration, int resizeMethod, bool initDepth);
+
+public:
+ CvFuzzyMeanShiftTracker();
+ ~CvFuzzyMeanShiftTracker();
+
+ void track(IplImage *maskImage, IplImage *depthMap, int resizeMethod, bool resetSearch, int minKernelMass = MinKernelMass);
+};
+
+
+namespace cv
+{
+
+ class CV_EXPORTS Octree
+ {
+ public:
+ struct Node
+ {
+ Node() {}
+ int begin, end;
+ float x_min, x_max, y_min, y_max, z_min, z_max;
+ int maxLevels;
+ bool isLeaf;
+ int children[8];
+ };
+
+ Octree();
+ Octree( const vector<Point3f>& points, int maxLevels = 10, int minPoints = 20 );
+ virtual ~Octree();
+
+ virtual void buildTree( const vector<Point3f>& points, int maxLevels = 10, int minPoints = 20 );
+ virtual void getPointsWithinSphere( const Point3f& center, float radius,
+ vector<Point3f>& points ) const;
+ const vector<Node>& getNodes() const { return nodes; }
+ private:
+ int minPoints;
+ vector<Point3f> points;
+ vector<Node> nodes;
+
+ virtual void buildNext(size_t node_ind);
+ };
+
+
+ class CV_EXPORTS Mesh3D
+ {
+ public:
+ struct EmptyMeshException {};
+
+ Mesh3D();
+ Mesh3D(const vector<Point3f>& vtx);
+ ~Mesh3D();
+
+ void buildOctree();
+ void clearOctree();
+ float estimateResolution(float tryRatio = 0.1f);
+ void computeNormals(float normalRadius, int minNeighbors = 20);
+ void computeNormals(const vector<int>& subset, float normalRadius, int minNeighbors = 20);
+
+ void writeAsVrml(const String& file, const vector<Scalar>& colors = vector<Scalar>()) const;
+
+ vector<Point3f> vtx;
+ vector<Point3f> normals;
+ float resolution;
+ Octree octree;
+
+ const static Point3f allzero;
+ };
+
+ class CV_EXPORTS SpinImageModel
+ {
+ public:
+
+ /* model parameters, leave unset for default or auto estimate */
+ float normalRadius;
+ int minNeighbors;
+
+ float binSize;
+ int imageWidth;
+
+ float lambda;
+ float gamma;
+
+ float T_GeometriccConsistency;
+ float T_GroupingCorespondances;
+
+ /* public interface */
+ SpinImageModel();
+ explicit SpinImageModel(const Mesh3D& mesh);
+ ~SpinImageModel();
+
+ void setLogger(std::ostream* log);
+ void selectRandomSubset(float ratio);
+ void setSubset(const vector<int>& subset);
+ void compute();
+
+ void match(const SpinImageModel& scene, vector< vector<Vec2i> >& result);
+
+ Mat packRandomScaledSpins(bool separateScale = false, size_t xCount = 10, size_t yCount = 10) const;
+
+ size_t getSpinCount() const { return spinImages.rows; }
+ Mat getSpinImage(size_t index) const { return spinImages.row((int)index); }
+ const Point3f& getSpinVertex(size_t index) const { return mesh.vtx[subset[index]]; }
+ const Point3f& getSpinNormal(size_t index) const { return mesh.normals[subset[index]]; }
+
+ const Mesh3D& getMesh() const { return mesh; }
+ Mesh3D& getMesh() { return mesh; }
+
+ /* static utility functions */
+ static bool spinCorrelation(const Mat& spin1, const Mat& spin2, float lambda, float& result);
+
+ static Point2f calcSpinMapCoo(const Point3f& point, const Point3f& vertex, const Point3f& normal);
+
+ static float geometricConsistency(const Point3f& pointScene1, const Point3f& normalScene1,
+ const Point3f& pointModel1, const Point3f& normalModel1,
+ const Point3f& pointScene2, const Point3f& normalScene2,
+ const Point3f& pointModel2, const Point3f& normalModel2);
+
+ static float groupingCreteria(const Point3f& pointScene1, const Point3f& normalScene1,
+ const Point3f& pointModel1, const Point3f& normalModel1,
+ const Point3f& pointScene2, const Point3f& normalScene2,
+ const Point3f& pointModel2, const Point3f& normalModel2,
+ float gamma);
+ protected:
+ void defaultParams();
+
+ void matchSpinToModel(const Mat& spin, vector<int>& indeces,
+ vector<float>& corrCoeffs, bool useExtremeOutliers = true) const;
+
+ void repackSpinImages(const vector<uchar>& mask, Mat& spinImages, bool reAlloc = true) const;
+
+ vector<int> subset;
+ Mesh3D mesh;
+ Mat spinImages;
+ std::ostream* out;
+ };
+
+ class CV_EXPORTS TickMeter
+ {
+ public:
+ TickMeter();
+ void start();
+ void stop();
+
+ int64 getTimeTicks() const;
+ double getTimeMicro() const;
+ double getTimeMilli() const;
+ double getTimeSec() const;
+ int64 getCounter() const;
+
+ void reset();
+ private:
+ int64 counter;
+ int64 sumTime;
+ int64 startTime;
+ };
+
+ CV_EXPORTS std::ostream& operator<<(std::ostream& out, const TickMeter& tm);
+
+ class CV_EXPORTS SelfSimDescriptor
+ {
+ public:
+ SelfSimDescriptor();
+ SelfSimDescriptor(int _ssize, int _lsize,
+ int _startDistanceBucket=DEFAULT_START_DISTANCE_BUCKET,
+ int _numberOfDistanceBuckets=DEFAULT_NUM_DISTANCE_BUCKETS,
+ int _nangles=DEFAULT_NUM_ANGLES);
+ SelfSimDescriptor(const SelfSimDescriptor& ss);
+ virtual ~SelfSimDescriptor();
+ SelfSimDescriptor& operator = (const SelfSimDescriptor& ss);
+
+ size_t getDescriptorSize() const;
+ Size getGridSize( Size imgsize, Size winStride ) const;
+
+ virtual void compute(const Mat& img, vector<float>& descriptors, Size winStride=Size(),
+ const vector<Point>& locations=vector<Point>()) const;
+ virtual void computeLogPolarMapping(Mat& mappingMask) const;
+ virtual void SSD(const Mat& img, Point pt, Mat& ssd) const;
+
+ int smallSize;
+ int largeSize;
+ int startDistanceBucket;
+ int numberOfDistanceBuckets;
+ int numberOfAngles;
+
+ enum { DEFAULT_SMALL_SIZE = 5, DEFAULT_LARGE_SIZE = 41,
+ DEFAULT_NUM_ANGLES = 20, DEFAULT_START_DISTANCE_BUCKET = 3,
+ DEFAULT_NUM_DISTANCE_BUCKETS = 7 };
+ };
+
+
+ typedef bool (*BundleAdjustCallback)(int iteration, double norm_error, void* user_data);
+
+ class CV_EXPORTS LevMarqSparse {
+ public:
+ LevMarqSparse();
+ LevMarqSparse(int npoints, // number of points
+ int ncameras, // number of cameras
+ int nPointParams, // number of params per one point (3 in case of 3D points)
+ int nCameraParams, // number of parameters per one camera
+ int nErrParams, // number of parameters in measurement vector
+ // for 1 point at one camera (2 in case of 2D projections)
+ Mat& visibility, // visibility matrix. rows correspond to points, columns correspond to cameras
+ // 1 - point is visible for the camera, 0 - invisible
+ Mat& P0, // starting vector of parameters, first cameras then points
+ Mat& X, // measurements, in order of visibility. non visible cases are skipped
+ TermCriteria criteria, // termination criteria
+
+ // callback for estimation of Jacobian matrices
+ void (CV_CDECL * fjac)(int i, int j, Mat& point_params,
+ Mat& cam_params, Mat& A, Mat& B, void* data),
+ // callback for estimation of backprojection errors
+ void (CV_CDECL * func)(int i, int j, Mat& point_params,
+ Mat& cam_params, Mat& estim, void* data),
+ void* data, // user-specific data passed to the callbacks
+ BundleAdjustCallback cb, void* user_data
+ );
+
+ virtual ~LevMarqSparse();
+
+ virtual void run( int npoints, // number of points
+ int ncameras, // number of cameras
+ int nPointParams, // number of params per one point (3 in case of 3D points)
+ int nCameraParams, // number of parameters per one camera
+ int nErrParams, // number of parameters in measurement vector
+ // for 1 point at one camera (2 in case of 2D projections)
+ Mat& visibility, // visibility matrix. rows correspond to points, columns correspond to cameras
+ // 1 - point is visible for the camera, 0 - invisible
+ Mat& P0, // starting vector of parameters, first cameras then points
+ Mat& X, // measurements, in order of visibility. non visible cases are skipped
+ TermCriteria criteria, // termination criteria
+
+ // callback for estimation of Jacobian matrices
+ void (CV_CDECL * fjac)(int i, int j, Mat& point_params,
+ Mat& cam_params, Mat& A, Mat& B, void* data),
+ // callback for estimation of backprojection errors
+ void (CV_CDECL * func)(int i, int j, Mat& point_params,
+ Mat& cam_params, Mat& estim, void* data),
+ void* data // user-specific data passed to the callbacks
+ );
+
+ virtual void clear();
+
+ // useful function to do simple bundle adjustment tasks
+ static void bundleAdjust(vector<Point3d>& points, // positions of points in global coordinate system (input and output)
+ const vector<vector<Point2d> >& imagePoints, // projections of 3d points for every camera
+ const vector<vector<int> >& visibility, // visibility of 3d points for every camera
+ vector<Mat>& cameraMatrix, // intrinsic matrices of all cameras (input and output)
+ vector<Mat>& R, // rotation matrices of all cameras (input and output)
+ vector<Mat>& T, // translation vector of all cameras (input and output)
+ vector<Mat>& distCoeffs, // distortion coefficients of all cameras (input and output)
+ const TermCriteria& criteria=
+ TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON),
+ BundleAdjustCallback cb = 0, void* user_data = 0);
+
+ public:
+ virtual void optimize(CvMat &_vis); //main function that runs minimization
+
+ //iteratively asks for measurement for visible camera-point pairs
+ void ask_for_proj(CvMat &_vis,bool once=false);
+ //iteratively asks for Jacobians for every camera_point pair
+ void ask_for_projac(CvMat &_vis);
+
+ CvMat* err; //error X-hX
+ double prevErrNorm, errNorm;
+ double lambda;
+ CvTermCriteria criteria;
+ int iters;
+
+ CvMat** U; //size of array is equal to number of cameras
+ CvMat** V; //size of array is equal to number of points
+ CvMat** inv_V_star; //inverse of V*
+
+ CvMat** A;
+ CvMat** B;
+ CvMat** W;
+
+ CvMat* X; //measurement
+ CvMat* hX; //current measurement extimation given new parameter vector
+
+ CvMat* prevP; //current already accepted parameter.
+ CvMat* P; // parameters used to evaluate function with new params
+ // this parameters may be rejected
+
+ CvMat* deltaP; //computed increase of parameters (result of normal system solution )
+
+ CvMat** ea; // sum_i AijT * e_ij , used as right part of normal equation
+ // length of array is j = number of cameras
+ CvMat** eb; // sum_j BijT * e_ij , used as right part of normal equation
+ // length of array is i = number of points
+
+ CvMat** Yj; //length of array is i = num_points
+
+ CvMat* S; //big matrix of block Sjk , each block has size num_cam_params x num_cam_params
+
+ CvMat* JtJ_diag; //diagonal of JtJ, used to backup diagonal elements before augmentation
+
+ CvMat* Vis_index; // matrix which element is index of measurement for point i and camera j
+
+ int num_cams;
+ int num_points;
+ int num_err_param;
+ int num_cam_param;
+ int num_point_param;
+
+ //target function and jacobian pointers, which needs to be initialized
+ void (*fjac)(int i, int j, Mat& point_params, Mat& cam_params, Mat& A, Mat& B, void* data);
+ void (*func)(int i, int j, Mat& point_params, Mat& cam_params, Mat& estim, void* data);
+
+ void* data;
+
+ BundleAdjustCallback cb;
+ void* user_data;
+ };
+
+ CV_EXPORTS_W int chamerMatching( Mat& img, Mat& templ,
+ CV_OUT vector<vector<Point> >& results, CV_OUT vector<float>& cost,
+ double templScale=1, int maxMatches = 20,
+ double minMatchDistance = 1.0, int padX = 3,
+ int padY = 3, int scales = 5, double minScale = 0.6, double maxScale = 1.6,
+ double orientationWeight = 0.5, double truncate = 20);
+
+
+ class CV_EXPORTS_W StereoVar
+ {
+ public:
+ // Flags
+ enum {USE_INITIAL_DISPARITY = 1, USE_EQUALIZE_HIST = 2, USE_SMART_ID = 4, USE_AUTO_PARAMS = 8, USE_MEDIAN_FILTERING = 16};
+ enum {CYCLE_O, CYCLE_V};
+ enum {PENALIZATION_TICHONOV, PENALIZATION_CHARBONNIER, PENALIZATION_PERONA_MALIK};
+
+ //! the default constructor
+ CV_WRAP StereoVar();
+
+ //! the full constructor taking all the necessary algorithm parameters
+ CV_WRAP StereoVar(int levels, double pyrScale, int nIt, int minDisp, int maxDisp, int poly_n, double poly_sigma, float fi, float lambda, int penalization, int cycle, int flags);
+
+ //! the destructor
+ virtual ~StereoVar();
+
+ //! the stereo correspondence operator that computes disparity map for the specified rectified stereo pair
+ CV_WRAP_AS(compute) virtual void operator()(const Mat& left, const Mat& right, CV_OUT Mat& disp);
+
+ CV_PROP_RW int levels;
+ CV_PROP_RW double pyrScale;
+ CV_PROP_RW int nIt;
+ CV_PROP_RW int minDisp;
+ CV_PROP_RW int maxDisp;
+ CV_PROP_RW int poly_n;
+ CV_PROP_RW double poly_sigma;
+ CV_PROP_RW float fi;
+ CV_PROP_RW float lambda;
+ CV_PROP_RW int penalization;
+ CV_PROP_RW int cycle;
+ CV_PROP_RW int flags;
+
+ private:
+ void autoParams();
+ void FMG(Mat &I1, Mat &I2, Mat &I2x, Mat &u, int level);
+ void VCycle_MyFAS(Mat &I1_h, Mat &I2_h, Mat &I2x_h, Mat &u_h, int level);
+ void VariationalSolver(Mat &I1_h, Mat &I2_h, Mat &I2x_h, Mat &u_h, int level);
+ };
+
+ CV_EXPORTS void polyfit(const Mat& srcx, const Mat& srcy, Mat& dst, int order);
+
+ class CV_EXPORTS Directory
+ {
+ public:
+ static std::vector<std::string> GetListFiles ( const std::string& path, const std::string & exten = "*", bool addPath = true );
+ static std::vector<std::string> GetListFilesR ( const std::string& path, const std::string & exten = "*", bool addPath = true );
+ static std::vector<std::string> GetListFolders( const std::string& path, const std::string & exten = "*", bool addPath = true );
+ };
+
+ /*
+ * Generation of a set of different colors by the following way:
+ * 1) generate more then need colors (in "factor" times) in RGB,
+ * 2) convert them to Lab,
+ * 3) choose the needed count of colors from the set that are more different from
+ * each other,
+ * 4) convert the colors back to RGB
+ */
+ CV_EXPORTS void generateColors( std::vector<Scalar>& colors, size_t count, size_t factor=100 );
+
+
+ /*
+ * Estimate the rigid body motion from frame0 to frame1. The method is based on the paper
+ * "Real-Time Visual Odometry from Dense RGB-D Images", F. Steinbucker, J. Strum, D. Cremers, ICCV, 2011.
+ */
+ enum { ROTATION = 1,
+ TRANSLATION = 2,
+ RIGID_BODY_MOTION = 4
+ };
+ CV_EXPORTS bool RGBDOdometry( Mat& Rt, const Mat& initRt,
+ const Mat& image0, const Mat& depth0, const Mat& mask0,
+ const Mat& image1, const Mat& depth1, const Mat& mask1,
+ const Mat& cameraMatrix, float minDepth=0.f, float maxDepth=4.f, float maxDepthDiff=0.07f,
+ const std::vector<int>& iterCounts=std::vector<int>(),
+ const std::vector<float>& minGradientMagnitudes=std::vector<float>(),
+ int transformType=RIGID_BODY_MOTION );
+
+ /**
+ *Bilinear interpolation technique.
+ *
+ *The value of a desired cortical pixel is obtained through a bilinear interpolation of the values
+ *of the four nearest neighbouring Cartesian pixels to the center of the RF.
+ *The same principle is applied to the inverse transformation.
+ *
+ *More details can be found in http://dx.doi.org/10.1007/978-3-642-23968-7_5
+ */
+ class CV_EXPORTS LogPolar_Interp
+ {
+ public:
+
+ LogPolar_Interp() {}
+
+ /**
+ *Constructor
+ *\param w the width of the input image
+ *\param h the height of the input image
+ *\param center the transformation center: where the output precision is maximal
+ *\param R the number of rings of the cortical image (default value 70 pixel)
+ *\param ro0 the radius of the blind spot (default value 3 pixel)
+ *\param interp interpolation algorithm
+ *\param full \a 1 (default value) means that the retinal image (the inverse transform) is computed within the circumscribing circle.
+ * \a 0 means that the retinal image is computed within the inscribed circle.
+ *\param S the number of sectors of the cortical image (default value 70 pixel).
+ * Its value is usually internally computed to obtain a pixel aspect ratio equals to 1.
+ *\param sp \a 1 (default value) means that the parameter \a S is internally computed.
+ * \a 0 means that the parameter \a S is provided by the user.
+ */
+ LogPolar_Interp(int w, int h, Point2i center, int R=70, double ro0=3.0,
+ int interp=INTER_LINEAR, int full=1, int S=117, int sp=1);
+ /**
+ *Transformation from Cartesian image to cortical (log-polar) image.
+ *\param source the Cartesian image
+ *\return the transformed image (cortical image)
+ */
+ const Mat to_cortical(const Mat &source);
+ /**
+ *Transformation from cortical image to retinal (inverse log-polar) image.
+ *\param source the cortical image
+ *\return the transformed image (retinal image)
+ */
+ const Mat to_cartesian(const Mat &source);
+ /**
+ *Destructor
+ */
+ ~LogPolar_Interp();
+
+ protected:
+
+ Mat Rsri;
+ Mat Csri;
+
+ int S, R, M, N;
+ int top, bottom,left,right;
+ double ro0, romax, a, q;
+ int interp;
+
+ Mat ETAyx;
+ Mat CSIyx;
+
+ void create_map(int M, int N, int R, int S, double ro0);
+ };
+
+ /**
+ *Overlapping circular receptive fields technique
+ *
+ *The Cartesian plane is divided in two regions: the fovea and the periphery.
+ *The fovea (oversampling) is handled by using the bilinear interpolation technique described above, whereas in
+ *the periphery we use the overlapping Gaussian circular RFs.
+ *
+ *More details can be found in http://dx.doi.org/10.1007/978-3-642-23968-7_5
+ */
+ class CV_EXPORTS LogPolar_Overlapping
+ {
+ public:
+ LogPolar_Overlapping() {}
+
+ /**
+ *Constructor
+ *\param w the width of the input image
+ *\param h the height of the input image
+ *\param center the transformation center: where the output precision is maximal
+ *\param R the number of rings of the cortical image (default value 70 pixel)
+ *\param ro0 the radius of the blind spot (default value 3 pixel)
+ *\param full \a 1 (default value) means that the retinal image (the inverse transform) is computed within the circumscribing circle.
+ * \a 0 means that the retinal image is computed within the inscribed circle.
+ *\param S the number of sectors of the cortical image (default value 70 pixel).
+ * Its value is usually internally computed to obtain a pixel aspect ratio equals to 1.
+ *\param sp \a 1 (default value) means that the parameter \a S is internally computed.
+ * \a 0 means that the parameter \a S is provided by the user.
+ */
+ LogPolar_Overlapping(int w, int h, Point2i center, int R=70,
+ double ro0=3.0, int full=1, int S=117, int sp=1);
+ /**
+ *Transformation from Cartesian image to cortical (log-polar) image.
+ *\param source the Cartesian image
+ *\return the transformed image (cortical image)
+ */
+ const Mat to_cortical(const Mat &source);
+ /**
+ *Transformation from cortical image to retinal (inverse log-polar) image.
+ *\param source the cortical image
+ *\return the transformed image (retinal image)
+ */
+ const Mat to_cartesian(const Mat &source);
+ /**
+ *Destructor
+ */
+ ~LogPolar_Overlapping();
+
+ protected:
+
+ Mat Rsri;
+ Mat Csri;
+ vector<int> Rsr;
+ vector<int> Csr;
+ vector<double> Wsr;
+
+ int S, R, M, N, ind1;
+ int top, bottom,left,right;
+ double ro0, romax, a, q;
+
+ struct kernel
+ {
+ kernel() { w = 0; }
+ vector<double> weights;
+ int w;
+ };
+
+ Mat ETAyx;
+ Mat CSIyx;
+ vector<kernel> w_ker_2D;
+
+ void create_map(int M, int N, int R, int S, double ro0);
+ };
+
+ /**
+ * Adjacent receptive fields technique
+ *
+ *All the Cartesian pixels, whose coordinates in the cortical domain share the same integer part, are assigned to the same RF.
+ *The precision of the boundaries of the RF can be improved by breaking each pixel into subpixels and assigning each of them to the correct RF.
+ *This technique is implemented from: Traver, V., Pla, F.: Log-polar mapping template design: From task-level requirements
+ *to geometry parameters. Image Vision Comput. 26(10) (2008) 1354-1370
+ *
+ *More details can be found in http://dx.doi.org/10.1007/978-3-642-23968-7_5
+ */
+ class CV_EXPORTS LogPolar_Adjacent
+ {
+ public:
+ LogPolar_Adjacent() {}
+
+ /**
+ *Constructor
+ *\param w the width of the input image
+ *\param h the height of the input image
+ *\param center the transformation center: where the output precision is maximal
+ *\param R the number of rings of the cortical image (default value 70 pixel)
+ *\param ro0 the radius of the blind spot (default value 3 pixel)
+ *\param smin the size of the subpixel (default value 0.25 pixel)
+ *\param full \a 1 (default value) means that the retinal image (the inverse transform) is computed within the circumscribing circle.
+ * \a 0 means that the retinal image is computed within the inscribed circle.
+ *\param S the number of sectors of the cortical image (default value 70 pixel).
+ * Its value is usually internally computed to obtain a pixel aspect ratio equals to 1.
+ *\param sp \a 1 (default value) means that the parameter \a S is internally computed.
+ * \a 0 means that the parameter \a S is provided by the user.
+ */
+ LogPolar_Adjacent(int w, int h, Point2i center, int R=70, double ro0=3.0, double smin=0.25, int full=1, int S=117, int sp=1);
+ /**
+ *Transformation from Cartesian image to cortical (log-polar) image.
+ *\param source the Cartesian image
+ *\return the transformed image (cortical image)
+ */
+ const Mat to_cortical(const Mat &source);
+ /**
+ *Transformation from cortical image to retinal (inverse log-polar) image.
+ *\param source the cortical image
+ *\return the transformed image (retinal image)
+ */
+ const Mat to_cartesian(const Mat &source);
+ /**
+ *Destructor
+ */
+ ~LogPolar_Adjacent();
+
+ protected:
+ struct pixel
+ {
+ pixel() { u = v = 0; a = 0.; }
+ int u;
+ int v;
+ double a;
+ };
+ int S, R, M, N;
+ int top, bottom,left,right;
+ double ro0, romax, a, q;
+ vector<vector<pixel> > L;
+ vector<double> A;
+
+ void subdivide_recursively(double x, double y, int i, int j, double length, double smin);
+ bool get_uv(double x, double y, int&u, int&v);
+ void create_map(int M, int N, int R, int S, double ro0, double smin);
+ };
+
+ CV_EXPORTS Mat subspaceProject(InputArray W, InputArray mean, InputArray src);
+ CV_EXPORTS Mat subspaceReconstruct(InputArray W, InputArray mean, InputArray src);
+
+ class CV_EXPORTS LDA
+ {
+ public:
+ // Initializes a LDA with num_components (default 0).
+ LDA(int num_components = 0) :
+ _num_components(num_components) {};
+
+ // Initializes and performs a Discriminant Analysis with Fisher's
+ // Optimization Criterion on given data in src and corresponding labels
+ // in labels. If 0 (or less) number of components are given, they are
+ // automatically determined for given data in computation.
+ LDA(const Mat& src, vector<int> labels,
+ int num_components = 0) :
+ _num_components(num_components)
+ {
+ this->compute(src, labels); //! compute eigenvectors and eigenvalues
+ }
+
+ // Initializes and performs a Discriminant Analysis with Fisher's
+ // Optimization Criterion on given data in src and corresponding labels
+ // in labels. If 0 (or less) number of components are given, they are
+ // automatically determined for given data in computation.
+ LDA(InputArrayOfArrays src, InputArray labels,
+ int num_components = 0) :
+ _num_components(num_components)
+ {
+ this->compute(src, labels); //! compute eigenvectors and eigenvalues
+ }
+
+ // Serializes this object to a given filename.
+ void save(const string& filename) const;
+
+ // Deserializes this object from a given filename.
+ void load(const string& filename);
+
+ // Serializes this object to a given cv::FileStorage.
+ void save(FileStorage& fs) const;
+
+ // Deserializes this object from a given cv::FileStorage.
+ void load(const FileStorage& node);
+
+ // Destructor.
+ ~LDA() {}
+
+ /** Compute the discriminants for data in src (row aligned) and labels.
+ */
+ void compute(InputArrayOfArrays src, InputArray labels);
+
+ /** Projects samples into the LDA subspace.
+ src may be one or more row aligned samples.
+ */
+ Mat project(InputArray src);
+
+ /** Reconstructs projections from the LDA subspace.
+ src may be one or more row aligned projections.
+ */
+ Mat reconstruct(InputArray src);
+
+ // Returns the eigenvectors of this LDA.
+ Mat eigenvectors() const { return _eigenvectors; };
+
+ // Returns the eigenvalues of this LDA.
+ Mat eigenvalues() const { return _eigenvalues; }
+
+ protected:
+ bool _dataAsRow; // unused, but needed for ABI compatibility.
+ int _num_components;
+ Mat _eigenvectors;
+ Mat _eigenvalues;
+
+ void lda(InputArrayOfArrays src, InputArray labels);
+ };
+
+ class CV_EXPORTS_W FaceRecognizer : public Algorithm
+ {
+ public:
+ //! virtual destructor
+ virtual ~FaceRecognizer() {}
+
+ // Trains a FaceRecognizer.
+ CV_WRAP virtual void train(InputArrayOfArrays src, InputArray labels) = 0;
+
+ // Updates a FaceRecognizer.
+ CV_WRAP void update(InputArrayOfArrays src, InputArray labels);
+
+ // Gets a prediction from a FaceRecognizer.
+ virtual int predict(InputArray src) const = 0;
+
+ // Predicts the label and confidence for a given sample.
+ CV_WRAP virtual void predict(InputArray src, CV_OUT int &label, CV_OUT double &confidence) const = 0;
+
+ // Serializes this object to a given filename.
+ CV_WRAP virtual void save(const string& filename) const;
+
+ // Deserializes this object from a given filename.
+ CV_WRAP virtual void load(const string& filename);
+
+ // Serializes this object to a given cv::FileStorage.
+ virtual void save(FileStorage& fs) const = 0;
+
+ // Deserializes this object from a given cv::FileStorage.
+ virtual void load(const FileStorage& fs) = 0;
+
+ // Sets additional information as pairs label - info.
+ void setLabelsInfo(const std::map<int, string>& labelsInfo);
+
+ // Gets string information by label
+ string getLabelInfo(const int &label);
+
+ // Gets labels by string
+ vector<int> getLabelsByString(const string& str);
+ };
+
+ CV_EXPORTS_W Ptr<FaceRecognizer> createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX);
+ CV_EXPORTS_W Ptr<FaceRecognizer> createFisherFaceRecognizer(int num_components = 0, double threshold = DBL_MAX);
+ CV_EXPORTS_W Ptr<FaceRecognizer> createLBPHFaceRecognizer(int radius=1, int neighbors=8,
+ int grid_x=8, int grid_y=8, double threshold = DBL_MAX);
+
+ enum
+ {
+ COLORMAP_AUTUMN = 0,
+ COLORMAP_BONE = 1,
+ COLORMAP_JET = 2,
+ COLORMAP_WINTER = 3,
+ COLORMAP_RAINBOW = 4,
+ COLORMAP_OCEAN = 5,
+ COLORMAP_SUMMER = 6,
+ COLORMAP_SPRING = 7,
+ COLORMAP_COOL = 8,
+ COLORMAP_HSV = 9,
+ COLORMAP_PINK = 10,
+ COLORMAP_HOT = 11
+ };
+
+ CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap);
+
+ CV_EXPORTS bool initModule_contrib();
+}
+
+#include "opencv2/contrib/retina.hpp"
+
+#include "opencv2/contrib/openfabmap.hpp"
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/detection_based_tracker.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/detection_based_tracker.hpp
new file mode 100644
index 00000000..56aa1ccb
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/detection_based_tracker.hpp
@@ -0,0 +1,106 @@
+#pragma once
+
+#if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(ANDROID)
+
+#include <opencv2/core/core.hpp>
+#include <opencv2/objdetect/objdetect.hpp>
+
+#include <vector>
+
+class DetectionBasedTracker
+{
+ public:
+ struct Parameters
+ {
+ int minObjectSize;
+ int maxObjectSize;
+ double scaleFactor;
+ int maxTrackLifetime;
+ int minNeighbors;
+ int minDetectionPeriod; //the minimal time between run of the big object detector (on the whole frame) in ms (1000 mean 1 sec), default=0
+
+ Parameters();
+ };
+
+ DetectionBasedTracker(const std::string& cascadeFilename, const Parameters& params);
+ virtual ~DetectionBasedTracker();
+
+ virtual bool run();
+ virtual void stop();
+ virtual void resetTracking();
+
+ virtual void process(const cv::Mat& imageGray);
+
+ bool setParameters(const Parameters& params);
+ const Parameters& getParameters();
+
+
+ typedef std::pair<cv::Rect, int> Object;
+ virtual void getObjects(std::vector<cv::Rect>& result) const;
+ virtual void getObjects(std::vector<Object>& result) const;
+
+ protected:
+ class SeparateDetectionWork;
+ cv::Ptr<SeparateDetectionWork> separateDetectionWork;
+ friend void* workcycleObjectDetectorFunction(void* p);
+
+
+ struct InnerParameters
+ {
+ int numLastPositionsToTrack;
+ int numStepsToWaitBeforeFirstShow;
+ int numStepsToTrackWithoutDetectingIfObjectHasNotBeenShown;
+ int numStepsToShowWithoutDetecting;
+
+ float coeffTrackingWindowSize;
+ float coeffObjectSizeToTrack;
+ float coeffObjectSpeedUsingInPrediction;
+
+ InnerParameters();
+ };
+ Parameters parameters;
+ InnerParameters innerParameters;
+
+ struct TrackedObject
+ {
+ typedef std::vector<cv::Rect> PositionsVector;
+
+ PositionsVector lastPositions;
+
+ int numDetectedFrames;
+ int numFramesNotDetected;
+ int id;
+
+ TrackedObject(const cv::Rect& rect):numDetectedFrames(1), numFramesNotDetected(0)
+ {
+ lastPositions.push_back(rect);
+ id=getNextId();
+ };
+
+ static int getNextId()
+ {
+ static int _id=0;
+ return _id++;
+ }
+ };
+
+ int numTrackedSteps;
+ std::vector<TrackedObject> trackedObjects;
+
+ std::vector<float> weightsPositionsSmoothing;
+ std::vector<float> weightsSizesSmoothing;
+
+ cv::CascadeClassifier cascadeForTracking;
+
+
+ void updateTrackedObjects(const std::vector<cv::Rect>& detectedObjects);
+ cv::Rect calcTrackedObjectPositionToShow(int i) const;
+ void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions);
+};
+
+namespace cv
+{
+ using ::DetectionBasedTracker;
+} //end of cv namespace
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/hybridtracker.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/hybridtracker.hpp
new file mode 100644
index 00000000..3a1f722d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/hybridtracker.hpp
@@ -0,0 +1,220 @@
+//*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2008-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_HYBRIDTRACKER_H_
+#define __OPENCV_HYBRIDTRACKER_H_
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/operations.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/video/tracking.hpp"
+#include "opencv2/ml/ml.hpp"
+
+#ifdef __cplusplus
+
+namespace cv
+{
+
+// Motion model for tracking algorithm. Currently supports objects that do not move much.
+// To add Kalman filter
+struct CV_EXPORTS CvMotionModel
+{
+ enum {LOW_PASS_FILTER = 0, KALMAN_FILTER = 1, EM = 2};
+
+ CvMotionModel()
+ {
+ }
+
+ float low_pass_gain; // low pass gain
+};
+
+// Mean Shift Tracker parameters for specifying use of HSV channel and CamShift parameters.
+struct CV_EXPORTS CvMeanShiftTrackerParams
+{
+ enum { H = 0, HS = 1, HSV = 2 };
+ CvMeanShiftTrackerParams(int tracking_type = CvMeanShiftTrackerParams::HS,
+ CvTermCriteria term_crit = CvTermCriteria());
+
+ int tracking_type;
+ vector<float> h_range;
+ vector<float> s_range;
+ vector<float> v_range;
+ CvTermCriteria term_crit;
+};
+
+// Feature tracking parameters
+struct CV_EXPORTS CvFeatureTrackerParams
+{
+ enum { SIFT = 0, SURF = 1, OPTICAL_FLOW = 2 };
+ CvFeatureTrackerParams(int featureType = 0, int windowSize = 0)
+ {
+ feature_type = featureType;
+ window_size = windowSize;
+ }
+
+ int feature_type; // Feature type to use
+ int window_size; // Window size in pixels around which to search for new window
+};
+
+// Hybrid Tracking parameters for specifying weights of individual trackers and motion model.
+struct CV_EXPORTS CvHybridTrackerParams
+{
+ CvHybridTrackerParams(float ft_tracker_weight = 0.5, float ms_tracker_weight = 0.5,
+ CvFeatureTrackerParams ft_params = CvFeatureTrackerParams(),
+ CvMeanShiftTrackerParams ms_params = CvMeanShiftTrackerParams(),
+ CvMotionModel model = CvMotionModel());
+
+ float ft_tracker_weight;
+ float ms_tracker_weight;
+ CvFeatureTrackerParams ft_params;
+ CvMeanShiftTrackerParams ms_params;
+ int motion_model;
+ float low_pass_gain;
+};
+
+// Performs Camshift using parameters from MeanShiftTrackerParams
+class CV_EXPORTS CvMeanShiftTracker
+{
+private:
+ Mat hsv, hue;
+ Mat backproj;
+ Mat mask, maskroi;
+ MatND hist;
+ Rect prev_trackwindow;
+ RotatedRect prev_trackbox;
+ Point2f prev_center;
+
+public:
+ CvMeanShiftTrackerParams params;
+
+ CvMeanShiftTracker();
+ explicit CvMeanShiftTracker(CvMeanShiftTrackerParams _params);
+ ~CvMeanShiftTracker();
+ void newTrackingWindow(Mat image, Rect selection);
+ RotatedRect updateTrackingWindow(Mat image);
+ Mat getHistogramProjection(int type);
+ void setTrackingWindow(Rect _window);
+ Rect getTrackingWindow();
+ RotatedRect getTrackingEllipse();
+ Point2f getTrackingCenter();
+};
+
+// Performs SIFT/SURF feature tracking using parameters from FeatureTrackerParams
+class CV_EXPORTS CvFeatureTracker
+{
+private:
+ Ptr<Feature2D> dd;
+ Ptr<DescriptorMatcher> matcher;
+ vector<DMatch> matches;
+
+ Mat prev_image;
+ Mat prev_image_bw;
+ Rect prev_trackwindow;
+ Point2d prev_center;
+
+ int ittr;
+ vector<Point2f> features[2];
+
+public:
+ Mat disp_matches;
+ CvFeatureTrackerParams params;
+
+ CvFeatureTracker();
+ explicit CvFeatureTracker(CvFeatureTrackerParams params);
+ ~CvFeatureTracker();
+ void newTrackingWindow(Mat image, Rect selection);
+ Rect updateTrackingWindow(Mat image);
+ Rect updateTrackingWindowWithSIFT(Mat image);
+ Rect updateTrackingWindowWithFlow(Mat image);
+ void setTrackingWindow(Rect _window);
+ Rect getTrackingWindow();
+ Point2f getTrackingCenter();
+};
+
+// Performs Hybrid Tracking and combines individual trackers using EM or filters
+class CV_EXPORTS CvHybridTracker
+{
+private:
+ CvMeanShiftTracker* mstracker;
+ CvFeatureTracker* fttracker;
+
+ CvMat* samples;
+ CvMat* labels;
+
+ Rect prev_window;
+ Point2f prev_center;
+ Mat prev_proj;
+ RotatedRect trackbox;
+
+ int ittr;
+ Point2f curr_center;
+
+ inline float getL2Norm(Point2f p1, Point2f p2);
+ Mat getDistanceProjection(Mat image, Point2f center);
+ Mat getGaussianProjection(Mat image, int ksize, double sigma, Point2f center);
+ void updateTrackerWithEM(Mat image);
+ void updateTrackerWithLowPassFilter(Mat image);
+
+public:
+ CvHybridTrackerParams params;
+ CvHybridTracker();
+ explicit CvHybridTracker(CvHybridTrackerParams params);
+ ~CvHybridTracker();
+
+ void newTracker(Mat image, Rect selection);
+ void updateTracker(Mat image);
+ Rect getTrackingWindow();
+};
+
+typedef CvMotionModel MotionModel;
+typedef CvMeanShiftTrackerParams MeanShiftTrackerParams;
+typedef CvFeatureTrackerParams FeatureTrackerParams;
+typedef CvHybridTrackerParams HybridTrackerParams;
+typedef CvMeanShiftTracker MeanShiftTracker;
+typedef CvFeatureTracker FeatureTracker;
+typedef CvHybridTracker HybridTracker;
+}
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/openfabmap.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/openfabmap.hpp
new file mode 100644
index 00000000..6b2834ed
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/openfabmap.hpp
@@ -0,0 +1,405 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+// This file originates from the openFABMAP project:
+// [http://code.google.com/p/openfabmap/]
+//
+// For published work which uses all or part of OpenFABMAP, please cite:
+// [http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6224843]
+//
+// Original Algorithm by Mark Cummins and Paul Newman:
+// [http://ijr.sagepub.com/content/27/6/647.short]
+// [http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5613942]
+// [http://ijr.sagepub.com/content/30/9/1100.abstract]
+//
+// License Agreement
+//
+// Copyright (C) 2012 Arren Glover [aj.glover@qut.edu.au] and
+// Will Maddern [w.maddern@qut.edu.au], all rights reserved.
+//
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OPENFABMAP_H_
+#define __OPENCV_OPENFABMAP_H_
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/features2d/features2d.hpp"
+
+#include <vector>
+#include <list>
+#include <map>
+#include <set>
+#include <valarray>
+
+namespace cv {
+
+namespace of2 {
+
+using std::list;
+using std::map;
+using std::multiset;
+
+/*
+ Return data format of a FABMAP compare call
+*/
+struct CV_EXPORTS IMatch {
+
+ IMatch() :
+ queryIdx(-1), imgIdx(-1), likelihood(-DBL_MAX), match(-DBL_MAX) {
+ }
+ IMatch(int _queryIdx, int _imgIdx, double _likelihood, double _match) :
+ queryIdx(_queryIdx), imgIdx(_imgIdx), likelihood(_likelihood), match(
+ _match) {
+ }
+
+ int queryIdx; //query index
+ int imgIdx; //test index
+
+ double likelihood; //raw loglikelihood
+ double match; //normalised probability
+
+ bool operator<(const IMatch& m) const {
+ return match < m.match;
+ }
+
+};
+
+/*
+ Base FabMap class. Each FabMap method inherits from this class.
+*/
+class CV_EXPORTS FabMap {
+public:
+
+ //FabMap options
+ enum {
+ MEAN_FIELD = 1,
+ SAMPLED = 2,
+ NAIVE_BAYES = 4,
+ CHOW_LIU = 8,
+ MOTION_MODEL = 16
+ };
+
+ FabMap(const Mat& clTree, double PzGe, double PzGNe, int flags,
+ int numSamples = 0);
+ virtual ~FabMap();
+
+ //methods to add training data for sampling method
+ virtual void addTraining(const Mat& queryImgDescriptor);
+ virtual void addTraining(const vector<Mat>& queryImgDescriptors);
+
+ //methods to add to the test data
+ virtual void add(const Mat& queryImgDescriptor);
+ virtual void add(const vector<Mat>& queryImgDescriptors);
+
+ //accessors
+ const vector<Mat>& getTrainingImgDescriptors() const;
+ const vector<Mat>& getTestImgDescriptors() const;
+
+ //Main FabMap image comparison
+ void compare(const Mat& queryImgDescriptor,
+ vector<IMatch>& matches, bool addQuery = false,
+ const Mat& mask = Mat());
+ void compare(const Mat& queryImgDescriptor,
+ const Mat& testImgDescriptors, vector<IMatch>& matches,
+ const Mat& mask = Mat());
+ void compare(const Mat& queryImgDescriptor,
+ const vector<Mat>& testImgDescriptors,
+ vector<IMatch>& matches, const Mat& mask = Mat());
+ void compare(const vector<Mat>& queryImgDescriptors, vector<
+ IMatch>& matches, bool addQuery = false, const Mat& mask =
+ Mat());
+ void compare(const vector<Mat>& queryImgDescriptors,
+ const vector<Mat>& testImgDescriptors,
+ vector<IMatch>& matches, const Mat& mask = Mat());
+
+protected:
+
+ void compareImgDescriptor(const Mat& queryImgDescriptor,
+ int queryIndex, const vector<Mat>& testImgDescriptors,
+ vector<IMatch>& matches);
+
+ void addImgDescriptor(const Mat& queryImgDescriptor);
+
+ //the getLikelihoods method is overwritten for each different FabMap
+ //method.
+ virtual void getLikelihoods(const Mat& queryImgDescriptor,
+ const vector<Mat>& testImgDescriptors,
+ vector<IMatch>& matches);
+ virtual double getNewPlaceLikelihood(const Mat& queryImgDescriptor);
+
+ //turn likelihoods into probabilities (also add in motion model if used)
+ void normaliseDistribution(vector<IMatch>& matches);
+
+ //Chow-Liu Tree
+ int pq(int q);
+ double Pzq(int q, bool zq);
+ double PzqGzpq(int q, bool zq, bool zpq);
+
+ //FAB-MAP Core
+ double PzqGeq(bool zq, bool eq);
+ double PeqGL(int q, bool Lzq, bool eq);
+ double PzqGL(int q, bool zq, bool zpq, bool Lzq);
+ double PzqGzpqL(int q, bool zq, bool zpq, bool Lzq);
+ double (FabMap::*PzGL)(int q, bool zq, bool zpq, bool Lzq);
+
+ //data
+ Mat clTree;
+ vector<Mat> trainingImgDescriptors;
+ vector<Mat> testImgDescriptors;
+ vector<IMatch> priorMatches;
+
+ //parameters
+ double PzGe;
+ double PzGNe;
+ double Pnew;
+
+ double mBias;
+ double sFactor;
+
+ int flags;
+ int numSamples;
+
+};
+
+/*
+ The original FAB-MAP algorithm, developed based on:
+ http://ijr.sagepub.com/content/27/6/647.short
+*/
+class CV_EXPORTS FabMap1: public FabMap {
+public:
+ FabMap1(const Mat& clTree, double PzGe, double PzGNe, int flags,
+ int numSamples = 0);
+ virtual ~FabMap1();
+protected:
+
+ //FabMap1 implementation of likelihood comparison
+ void getLikelihoods(const Mat& queryImgDescriptor, const vector<
+ Mat>& testImgDescriptors, vector<IMatch>& matches);
+};
+
+/*
+ A computationally faster version of the original FAB-MAP algorithm. A look-
+ up-table is used to precompute many of the reoccuring calculations
+*/
+class CV_EXPORTS FabMapLUT: public FabMap {
+public:
+ FabMapLUT(const Mat& clTree, double PzGe, double PzGNe,
+ int flags, int numSamples = 0, int precision = 6);
+ virtual ~FabMapLUT();
+protected:
+
+ //FabMap look-up-table implementation of the likelihood comparison
+ void getLikelihoods(const Mat& queryImgDescriptor, const vector<
+ Mat>& testImgDescriptors, vector<IMatch>& matches);
+
+ //precomputed data
+ int (*table)[8];
+
+ //data precision
+ int precision;
+};
+
+/*
+ The Accelerated FAB-MAP algorithm, developed based on:
+ http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5613942
+*/
+class CV_EXPORTS FabMapFBO: public FabMap {
+public:
+ FabMapFBO(const Mat& clTree, double PzGe, double PzGNe, int flags,
+ int numSamples = 0, double rejectionThreshold = 1e-8, double PsGd =
+ 1e-8, int bisectionStart = 512, int bisectionIts = 9);
+ virtual ~FabMapFBO();
+
+protected:
+
+ //FabMap Fast Bail-out implementation of the likelihood comparison
+ void getLikelihoods(const Mat& queryImgDescriptor, const vector<
+ Mat>& testImgDescriptors, vector<IMatch>& matches);
+
+ //stucture used to determine word comparison order
+ struct WordStats {
+ WordStats() :
+ q(0), info(0), V(0), M(0) {
+ }
+
+ WordStats(int _q, double _info) :
+ q(_q), info(_info), V(0), M(0) {
+ }
+
+ int q;
+ double info;
+ mutable double V;
+ mutable double M;
+
+ bool operator<(const WordStats& w) const {
+ return info < w.info;
+ }
+
+ };
+
+ //private fast bail-out necessary functions
+ void setWordStatistics(const Mat& queryImgDescriptor, multiset<WordStats>& wordData);
+ double limitbisection(double v, double m);
+ double bennettInequality(double v, double m, double delta);
+ static bool compInfo(const WordStats& first, const WordStats& second);
+
+ //parameters
+ double PsGd;
+ double rejectionThreshold;
+ int bisectionStart;
+ int bisectionIts;
+};
+
+/*
+ The FAB-MAP2.0 algorithm, developed based on:
+ http://ijr.sagepub.com/content/30/9/1100.abstract
+*/
+class CV_EXPORTS FabMap2: public FabMap {
+public:
+
+ FabMap2(const Mat& clTree, double PzGe, double PzGNe, int flags);
+ virtual ~FabMap2();
+
+ //FabMap2 builds the inverted index and requires an additional training/test
+ //add function
+ void addTraining(const Mat& queryImgDescriptors) {
+ FabMap::addTraining(queryImgDescriptors);
+ }
+ void addTraining(const vector<Mat>& queryImgDescriptors);
+
+ void add(const Mat& queryImgDescriptors) {
+ FabMap::add(queryImgDescriptors);
+ }
+ void add(const vector<Mat>& queryImgDescriptors);
+
+protected:
+
+ //FabMap2 implementation of the likelihood comparison
+ void getLikelihoods(const Mat& queryImgDescriptor, const vector<
+ Mat>& testImgDescriptors, vector<IMatch>& matches);
+ double getNewPlaceLikelihood(const Mat& queryImgDescriptor);
+
+ //the likelihood function using the inverted index
+ void getIndexLikelihoods(const Mat& queryImgDescriptor, vector<
+ double>& defaults, map<int, vector<int> >& invertedMap,
+ vector<IMatch>& matches);
+ void addToIndex(const Mat& queryImgDescriptor,
+ vector<double>& defaults,
+ map<int, vector<int> >& invertedMap);
+
+ //data
+ vector<double> d1, d2, d3, d4;
+ vector<vector<int> > children;
+
+ // TODO: inverted map a vector?
+
+ vector<double> trainingDefaults;
+ map<int, vector<int> > trainingInvertedMap;
+
+ vector<double> testDefaults;
+ map<int, vector<int> > testInvertedMap;
+
+};
+/*
+ A Chow-Liu tree is required by FAB-MAP. The Chow-Liu tree provides an
+ estimate of the full distribution of visual words using a minimum spanning
+ tree. The tree is generated through training data.
+*/
+class CV_EXPORTS ChowLiuTree {
+public:
+ ChowLiuTree();
+ virtual ~ChowLiuTree();
+
+ //add data to the chow-liu tree before calling make
+ void add(const Mat& imgDescriptor);
+ void add(const vector<Mat>& imgDescriptors);
+
+ const vector<Mat>& getImgDescriptors() const;
+
+ Mat make(double infoThreshold = 0.0);
+
+private:
+ vector<Mat> imgDescriptors;
+ Mat mergedImgDescriptors;
+
+ typedef struct info {
+ float score;
+ short word1;
+ short word2;
+ } info;
+
+ //probabilities extracted from mergedImgDescriptors
+ double P(int a, bool za);
+ double JP(int a, bool za, int b, bool zb); //a & b
+ double CP(int a, bool za, int b, bool zb); // a | b
+
+ //calculating mutual information of all edges
+ void createBaseEdges(list<info>& edges, double infoThreshold);
+ double calcMutInfo(int word1, int word2);
+ static bool sortInfoScores(const info& first, const info& second);
+
+ //selecting minimum spanning egdges with maximum information
+ bool reduceEdgesToMinSpan(list<info>& edges);
+
+ //building the tree sctructure
+ Mat buildTree(int root_word, list<info> &edges);
+ void recAddToTree(Mat &cltree, int q, int pq,
+ list<info> &remaining_edges);
+ vector<int> extractChildren(list<info> &remaining_edges, int q);
+
+};
+
+/*
+ A custom vocabulary training method based on:
+ http://www.springerlink.com/content/d1h6j8x552532003/
+*/
+class CV_EXPORTS BOWMSCTrainer: public BOWTrainer {
+public:
+ BOWMSCTrainer(double clusterSize = 0.4);
+ virtual ~BOWMSCTrainer();
+
+ // Returns trained vocabulary (i.e. cluster centers).
+ virtual Mat cluster() const;
+ virtual Mat cluster(const Mat& descriptors) const;
+
+protected:
+
+ double clusterSize;
+
+};
+
+}
+
+}
+
+#endif /* OPENFABMAP_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/retina.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/retina.hpp
new file mode 100644
index 00000000..f261bb45
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/contrib/retina.hpp
@@ -0,0 +1,354 @@
+/*#******************************************************************************
+ ** IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+ **
+ ** By downloading, copying, installing or using the software you agree to this license.
+ ** If you do not agree to this license, do not download, install,
+ ** copy or use the software.
+ **
+ **
+ ** HVStools : interfaces allowing OpenCV users to integrate Human Vision System models. Presented models originate from Jeanny Herault's original research and have been reused and adapted by the author&collaborators for computed vision applications since his thesis with Alice Caplier at Gipsa-Lab.
+ ** Use: extract still images & image sequences features, from contours details to motion spatio-temporal features, etc. for high level visual scene analysis. Also contribute to image enhancement/compression such as tone mapping.
+ **
+ ** Maintainers : Listic lab (code author current affiliation & applications) and Gipsa Lab (original research origins & applications)
+ **
+ ** Creation - enhancement process 2007-2011
+ ** Author: Alexandre Benoit (benoit.alexandre.vision@gmail.com), LISTIC lab, Annecy le vieux, France
+ **
+ ** Theses algorithm have been developped by Alexandre BENOIT since his thesis with Alice Caplier at Gipsa-Lab (www.gipsa-lab.inpg.fr) and the research he pursues at LISTIC Lab (www.listic.univ-savoie.fr).
+ ** Refer to the following research paper for more information:
+ ** Benoit A., Caplier A., Durette B., Herault, J., "USING HUMAN VISUAL SYSTEM MODELING FOR BIO-INSPIRED LOW LEVEL IMAGE PROCESSING", Elsevier, Computer Vision and Image Understanding 114 (2010), pp. 758-773, DOI: http://dx.doi.org/10.1016/j.cviu.2010.01.011
+ ** This work have been carried out thanks to Jeanny Herault who's research and great discussions are the basis of all this work, please take a look at his book:
+ ** Vision: Images, Signals and Neural Networks: Models of Neural Processing in Visual Perception (Progress in Neural Processing),By: Jeanny Herault, ISBN: 9814273686. WAPI (Tower ID): 113266891.
+ **
+ ** The retina filter includes the research contributions of phd/research collegues from which code has been redrawn by the author :
+ ** _take a look at the retinacolor.hpp module to discover Brice Chaix de Lavarene color mosaicing/demosaicing and the reference paper:
+ ** ====> B. Chaix de Lavarene, D. Alleysson, B. Durette, J. Herault (2007). "Efficient demosaicing through recursive filtering", IEEE International Conference on Image Processing ICIP 2007
+ ** _take a look at imagelogpolprojection.hpp to discover retina spatial log sampling which originates from Barthelemy Durette phd with Jeanny Herault. A Retina / V1 cortex projection is also proposed and originates from Jeanny's discussions.
+ ** ====> more informations in the above cited Jeanny Heraults's book.
+ **
+ ** License Agreement
+ ** For Open Source Computer Vision Library
+ **
+ ** Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+ ** Copyright (C) 2008-2011, Willow Garage Inc., all rights reserved.
+ **
+ ** For Human Visual System tools (hvstools)
+ ** Copyright (C) 2007-2011, LISTIC Lab, Annecy le Vieux and GIPSA Lab, Grenoble, France, all rights reserved.
+ **
+ ** Third party copyrights are property of their respective owners.
+ **
+ ** Redistribution and use in source and binary forms, with or without modification,
+ ** are permitted provided that the following conditions are met:
+ **
+ ** * Redistributions of source code must retain the above copyright notice,
+ ** this list of conditions and the following disclaimer.
+ **
+ ** * Redistributions in binary form must reproduce the above copyright notice,
+ ** this list of conditions and the following disclaimer in the documentation
+ ** and/or other materials provided with the distribution.
+ **
+ ** * The name of the copyright holders may not be used to endorse or promote products
+ ** derived from this software without specific prior written permission.
+ **
+ ** This software is provided by the copyright holders and contributors "as is" and
+ ** any express or implied warranties, including, but not limited to, the implied
+ ** warranties of merchantability and fitness for a particular purpose are disclaimed.
+ ** In no event shall the Intel Corporation or contributors be liable for any direct,
+ ** indirect, incidental, special, exemplary, or consequential damages
+ ** (including, but not limited to, procurement of substitute goods or services;
+ ** loss of use, data, or profits; or business interruption) however caused
+ ** and on any theory of liability, whether in contract, strict liability,
+ ** or tort (including negligence or otherwise) arising in any way out of
+ ** the use of this software, even if advised of the possibility of such damage.
+ *******************************************************************************/
+
+#ifndef __OPENCV_CONTRIB_RETINA_HPP__
+#define __OPENCV_CONTRIB_RETINA_HPP__
+
+/*
+ * Retina.hpp
+ *
+ * Created on: Jul 19, 2011
+ * Author: Alexandre Benoit
+ */
+
+#include "opencv2/core/core.hpp" // for all OpenCV core functionalities access, including cv::Exception support
+#include <valarray>
+
+namespace cv
+{
+
+enum RETINA_COLORSAMPLINGMETHOD
+{
+ RETINA_COLOR_RANDOM, //!< each pixel position is either R, G or B in a random choice
+ RETINA_COLOR_DIAGONAL,//!< color sampling is RGBRGBRGB..., line 2 BRGBRGBRG..., line 3, GBRGBRGBR...
+ RETINA_COLOR_BAYER//!< standard bayer sampling
+};
+
+class RetinaFilter;
+
+/**
+ * a wrapper class which allows the Gipsa/Listic Labs model to be used.
+ * This retina model allows spatio-temporal image processing (applied on still images, video sequences).
+ * As a summary, these are the retina model properties:
+ * => It applies a spectral whithening (mid-frequency details enhancement)
+ * => high frequency spatio-temporal noise reduction
+ * => low frequency luminance to be reduced (luminance range compression)
+ * => local logarithmic luminance compression allows details to be enhanced in low light conditions
+ *
+ * USE : this model can be used basically for spatio-temporal video effects but also for :
+ * _using the getParvo method output matrix : texture analysiswith enhanced signal to noise ratio and enhanced details robust against input images luminance ranges
+ * _using the getMagno method output matrix : motion analysis also with the previously cited properties
+ *
+ * for more information, reer to the following papers :
+ * Benoit A., Caplier A., Durette B., Herault, J., "USING HUMAN VISUAL SYSTEM MODELING FOR BIO-INSPIRED LOW LEVEL IMAGE PROCESSING", Elsevier, Computer Vision and Image Understanding 114 (2010), pp. 758-773, DOI: http://dx.doi.org/10.1016/j.cviu.2010.01.011
+ * Vision: Images, Signals and Neural Networks: Models of Neural Processing in Visual Perception (Progress in Neural Processing),By: Jeanny Herault, ISBN: 9814273686. WAPI (Tower ID): 113266891.
+ *
+ * The retina filter includes the research contributions of phd/research collegues from which code has been redrawn by the author :
+ * _take a look at the retinacolor.hpp module to discover Brice Chaix de Lavarene color mosaicing/demosaicing and the reference paper:
+ * ====> B. Chaix de Lavarene, D. Alleysson, B. Durette, J. Herault (2007). "Efficient demosaicing through recursive filtering", IEEE International Conference on Image Processing ICIP 2007
+ * _take a look at imagelogpolprojection.hpp to discover retina spatial log sampling which originates from Barthelemy Durette phd with Jeanny Herault. A Retina / V1 cortex projection is also proposed and originates from Jeanny's discussions.
+ * ====> more informations in the above cited Jeanny Heraults's book.
+ */
+class CV_EXPORTS Retina {
+
+public:
+
+ // parameters structure for better clarity, check explenations on the comments of methods : setupOPLandIPLParvoChannel and setupIPLMagnoChannel
+ struct RetinaParameters{
+ struct OPLandIplParvoParameters{ // Outer Plexiform Layer (OPL) and Inner Plexiform Layer Parvocellular (IplParvo) parameters
+ OPLandIplParvoParameters():colorMode(true),
+ normaliseOutput(true),
+ photoreceptorsLocalAdaptationSensitivity(0.7f),
+ photoreceptorsTemporalConstant(0.5f),
+ photoreceptorsSpatialConstant(0.53f),
+ horizontalCellsGain(0.0f),
+ hcellsTemporalConstant(1.f),
+ hcellsSpatialConstant(7.f),
+ ganglionCellsSensitivity(0.7f){};// default setup
+ bool colorMode, normaliseOutput;
+ float photoreceptorsLocalAdaptationSensitivity, photoreceptorsTemporalConstant, photoreceptorsSpatialConstant, horizontalCellsGain, hcellsTemporalConstant, hcellsSpatialConstant, ganglionCellsSensitivity;
+ };
+ struct IplMagnoParameters{ // Inner Plexiform Layer Magnocellular channel (IplMagno)
+ IplMagnoParameters():
+ normaliseOutput(true),
+ parasolCells_beta(0.f),
+ parasolCells_tau(0.f),
+ parasolCells_k(7.f),
+ amacrinCellsTemporalCutFrequency(1.2f),
+ V0CompressionParameter(0.95f),
+ localAdaptintegration_tau(0.f),
+ localAdaptintegration_k(7.f){};// default setup
+ bool normaliseOutput;
+ float parasolCells_beta, parasolCells_tau, parasolCells_k, amacrinCellsTemporalCutFrequency, V0CompressionParameter, localAdaptintegration_tau, localAdaptintegration_k;
+ };
+ struct OPLandIplParvoParameters OPLandIplParvo;
+ struct IplMagnoParameters IplMagno;
+ };
+
+ /**
+ * Main constructor with most commun use setup : create an instance of color ready retina model
+ * @param inputSize : the input frame size
+ */
+ Retina(Size inputSize);
+
+ /**
+ * Complete Retina filter constructor which allows all basic structural parameters definition
+ * @param inputSize : the input frame size
+ * @param colorMode : the chosen processing mode : with or without color processing
+ * @param colorSamplingMethod: specifies which kind of color sampling will be used
+ * @param useRetinaLogSampling: activate retina log sampling, if true, the 2 following parameters can be used
+ * @param reductionFactor: only usefull if param useRetinaLogSampling=true, specifies the reduction factor of the output frame (as the center (fovea) is high resolution and corners can be underscaled, then a reduction of the output is allowed without precision leak
+ * @param samplingStrenght: only usefull if param useRetinaLogSampling=true, specifies the strenght of the log scale that is applied
+ */
+ Retina(Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod=RETINA_COLOR_BAYER, const bool useRetinaLogSampling=false, const double reductionFactor=1.0, const double samplingStrenght=10.0);
+
+ virtual ~Retina();
+
+ /**
+ * retreive retina input buffer size
+ */
+ Size inputSize();
+
+ /**
+ * retreive retina output buffer size
+ */
+ Size outputSize();
+
+ /**
+ * try to open an XML retina parameters file to adjust current retina instance setup
+ * => if the xml file does not exist, then default setup is applied
+ * => warning, Exceptions are thrown if read XML file is not valid
+ * @param retinaParameterFile : the parameters filename
+ * @param applyDefaultSetupOnFailure : set to true if an error must be thrown on error
+ */
+ void setup(std::string retinaParameterFile="", const bool applyDefaultSetupOnFailure=true);
+
+
+ /**
+ * try to open an XML retina parameters file to adjust current retina instance setup
+ * => if the xml file does not exist, then default setup is applied
+ * => warning, Exceptions are thrown if read XML file is not valid
+ * @param fs : the open Filestorage which contains retina parameters
+ * @param applyDefaultSetupOnFailure : set to true if an error must be thrown on error
+ */
+ void setup(cv::FileStorage &fs, const bool applyDefaultSetupOnFailure=true);
+
+ /**
+ * try to open an XML retina parameters file to adjust current retina instance setup
+ * => if the xml file does not exist, then default setup is applied
+ * => warning, Exceptions are thrown if read XML file is not valid
+ * @param newParameters : a parameters structures updated with the new target configuration
+ */
+ void setup(RetinaParameters newParameters);
+
+ /**
+ * @return the current parameters setup
+ */
+ Retina::RetinaParameters getParameters();
+
+ /**
+ * parameters setup display method
+ * @return a string which contains formatted parameters information
+ */
+ const std::string printSetup();
+
+ /**
+ * write xml/yml formated parameters information
+ * @param fs : the filename of the xml file that will be open and writen with formatted parameters information
+ */
+ virtual void write( std::string fs ) const;
+
+
+ /**
+ * write xml/yml formated parameters information
+ * @param fs : a cv::Filestorage object ready to be filled
+ */
+ virtual void write( FileStorage& fs ) const;
+
+ /**
+ * setup the OPL and IPL parvo channels (see biologocal model)
+ * OPL is referred as Outer Plexiform Layer of the retina, it allows the spatio-temporal filtering which withens the spectrum and reduces spatio-temporal noise while attenuating global luminance (low frequency energy)
+ * IPL parvo is the OPL next processing stage, it refers to Inner Plexiform layer of the retina, it allows high contours sensitivity in foveal vision.
+ * for more informations, please have a look at the paper Benoit A., Caplier A., Durette B., Herault, J., "USING HUMAN VISUAL SYSTEM MODELING FOR BIO-INSPIRED LOW LEVEL IMAGE PROCESSING", Elsevier, Computer Vision and Image Understanding 114 (2010), pp. 758-773, DOI: http://dx.doi.org/10.1016/j.cviu.2010.01.011
+ * @param colorMode : specifies if (true) color is processed of not (false) to then processing gray level image
+ * @param normaliseOutput : specifies if (true) output is rescaled between 0 and 255 of not (false)
+ * @param photoreceptorsLocalAdaptationSensitivity: the photoreceptors sensitivity renage is 0-1 (more log compression effect when value increases)
+ * @param photoreceptorsTemporalConstant: the time constant of the first order low pass filter of the photoreceptors, use it to cut high temporal frequencies (noise or fast motion), unit is frames, typical value is 1 frame
+ * @param photoreceptorsSpatialConstant: the spatial constant of the first order low pass filter of the photoreceptors, use it to cut high spatial frequencies (noise or thick contours), unit is pixels, typical value is 1 pixel
+ * @param horizontalCellsGain: gain of the horizontal cells network, if 0, then the mean value of the output is zero, if the parameter is near 1, then, the luminance is not filtered and is still reachable at the output, typicall value is 0
+ * @param HcellsTemporalConstant: the time constant of the first order low pass filter of the horizontal cells, use it to cut low temporal frequencies (local luminance variations), unit is frames, typical value is 1 frame, as the photoreceptors
+ * @param HcellsSpatialConstant: the spatial constant of the first order low pass filter of the horizontal cells, use it to cut low spatial frequencies (local luminance), unit is pixels, typical value is 5 pixel, this value is also used for local contrast computing when computing the local contrast adaptation at the ganglion cells level (Inner Plexiform Layer parvocellular channel model)
+ * @param ganglionCellsSensitivity: the compression strengh of the ganglion cells local adaptation output, set a value between 160 and 250 for best results, a high value increases more the low value sensitivity... and the output saturates faster, recommended value: 230
+ */
+ void setupOPLandIPLParvoChannel(const bool colorMode=true, const bool normaliseOutput = true, const float photoreceptorsLocalAdaptationSensitivity=0.7f, const float photoreceptorsTemporalConstant=0.5f, const float photoreceptorsSpatialConstant=0.53f, const float horizontalCellsGain=0, const float HcellsTemporalConstant=1, const float HcellsSpatialConstant=7, const float ganglionCellsSensitivity=0.7f);
+
+ /**
+ * set parameters values for the Inner Plexiform Layer (IPL) magnocellular channel
+ * this channel processes signals outpint from OPL processing stage in peripheral vision, it allows motion information enhancement. It is decorrelated from the details channel. See reference paper for more details.
+ * @param normaliseOutput : specifies if (true) output is rescaled between 0 and 255 of not (false)
+ * @param parasolCells_beta: the low pass filter gain used for local contrast adaptation at the IPL level of the retina (for ganglion cells local adaptation), typical value is 0
+ * @param parasolCells_tau: the low pass filter time constant used for local contrast adaptation at the IPL level of the retina (for ganglion cells local adaptation), unit is frame, typical value is 0 (immediate response)
+ * @param parasolCells_k: the low pass filter spatial constant used for local contrast adaptation at the IPL level of the retina (for ganglion cells local adaptation), unit is pixels, typical value is 5
+ * @param amacrinCellsTemporalCutFrequency: the time constant of the first order high pass fiter of the magnocellular way (motion information channel), unit is frames, tipicall value is 5
+ * @param V0CompressionParameter: the compression strengh of the ganglion cells local adaptation output, set a value between 160 and 250 for best results, a high value increases more the low value sensitivity... and the output saturates faster, recommended value: 200
+ * @param localAdaptintegration_tau: specifies the temporal constant of the low pas filter involved in the computation of the local "motion mean" for the local adaptation computation
+ * @param localAdaptintegration_k: specifies the spatial constant of the low pas filter involved in the computation of the local "motion mean" for the local adaptation computation
+ */
+ void setupIPLMagnoChannel(const bool normaliseOutput = true, const float parasolCells_beta=0, const float parasolCells_tau=0, const float parasolCells_k=7, const float amacrinCellsTemporalCutFrequency=1.2f, const float V0CompressionParameter=0.95f, const float localAdaptintegration_tau=0, const float localAdaptintegration_k=7);
+
+ /**
+ * method which allows retina to be applied on an input image, after run, encapsulated retina module is ready to deliver its outputs using dedicated acccessors, see getParvo and getMagno methods
+ * @param inputImage : the input cv::Mat image to be processed, can be gray level or BGR coded in any format (from 8bit to 16bits)
+ */
+ void run(const Mat &inputImage);
+
+ /**
+ * accessor of the details channel of the retina (models foveal vision)
+ * @param retinaOutput_parvo : the output buffer (reallocated if necessary), this output is rescaled for standard 8bits image processing use in OpenCV
+ */
+ void getParvo(Mat &retinaOutput_parvo);
+
+ /**
+ * accessor of the details channel of the retina (models foveal vision)
+ * @param retinaOutput_parvo : the output buffer (reallocated if necessary), this output is the original retina filter model output, without any quantification or rescaling
+ */
+ void getParvo(std::valarray<float> &retinaOutput_parvo);
+
+ /**
+ * accessor of the motion channel of the retina (models peripheral vision)
+ * @param retinaOutput_magno : the output buffer (reallocated if necessary), this output is rescaled for standard 8bits image processing use in OpenCV
+ */
+ void getMagno(Mat &retinaOutput_magno);
+
+ /**
+ * accessor of the motion channel of the retina (models peripheral vision)
+ * @param retinaOutput_magno : the output buffer (reallocated if necessary), this output is the original retina filter model output, without any quantification or rescaling
+ */
+ void getMagno(std::valarray<float> &retinaOutput_magno);
+
+ // original API level data accessors : get buffers addresses...
+ const std::valarray<float> & getMagno() const;
+ const std::valarray<float> & getParvo() const;
+
+ /**
+ * activate color saturation as the final step of the color demultiplexing process
+ * -> this saturation is a sigmoide function applied to each channel of the demultiplexed image.
+ * @param saturateColors: boolean that activates color saturation (if true) or desactivate (if false)
+ * @param colorSaturationValue: the saturation factor
+ */
+ void setColorSaturation(const bool saturateColors=true, const float colorSaturationValue=4.0);
+
+ /**
+ * clear all retina buffers (equivalent to opening the eyes after a long period of eye close ;o)
+ */
+ void clearBuffers();
+
+ /**
+ * Activate/desactivate the Magnocellular pathway processing (motion information extraction), by default, it is activated
+ * @param activate: true if Magnocellular output should be activated, false if not
+ */
+ void activateMovingContoursProcessing(const bool activate);
+
+ /**
+ * Activate/desactivate the Parvocellular pathway processing (contours information extraction), by default, it is activated
+ * @param activate: true if Parvocellular (contours information extraction) output should be activated, false if not
+ */
+ void activateContoursProcessing(const bool activate);
+
+protected:
+ // Parameteres setup members
+ RetinaParameters _retinaParameters; // structure of parameters
+
+ // Retina model related modules
+ std::valarray<float> _inputBuffer; //!< buffer used to convert input cv::Mat to internal retina buffers format (valarrays)
+
+ // pointer to retina model
+ RetinaFilter* _retinaFilter; //!< the pointer to the retina module, allocated with instance construction
+
+ /**
+ * exports a valarray buffer outing from HVStools objects to a cv::Mat in CV_8UC1 (gray level picture) or CV_8UC3 (color) format
+ * @param grayMatrixToConvert the valarray to export to OpenCV
+ * @param nbRows : the number of rows of the valarray flatten matrix
+ * @param nbColumns : the number of rows of the valarray flatten matrix
+ * @param colorMode : a flag which mentions if matrix is color (true) or graylevel (false)
+ * @param outBuffer : the output matrix which is reallocated to satisfy Retina output buffer dimensions
+ */
+ void _convertValarrayBuffer2cvMat(const std::valarray<float> &grayMatrixToConvert, const unsigned int nbRows, const unsigned int nbColumns, const bool colorMode, Mat &outBuffer);
+
+ /**
+ *
+ * @param inputMatToConvert : the OpenCV cv::Mat that has to be converted to gray or RGB valarray buffer that will be processed by the retina model
+ * @param outputValarrayMatrix : the output valarray
+ * @return the input image color mode (color=true, gray levels=false)
+ */
+ bool _convertCvMat2ValarrayBuffer(const cv::Mat inputMatToConvert, std::valarray<float> &outputValarrayMatrix);
+
+ //! private method called by constructors, gathers their parameters and use them in a unified way
+ void _init(const Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod=RETINA_COLOR_BAYER, const bool useRetinaLogSampling=false, const double reductionFactor=1.0, const double samplingStrenght=10.0);
+
+
+};
+
+}
+#endif /* __OPENCV_CONTRIB_RETINA_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core.hpp
new file mode 100644
index 00000000..12773f8c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/core/core.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/affine.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/affine.hpp
new file mode 100644
index 00000000..1b560c8e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/affine.hpp
@@ -0,0 +1,513 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_AFFINE3_HPP__
+#define __OPENCV_CORE_AFFINE3_HPP__
+
+#ifdef __cplusplus
+
+#include <opencv2/core/core.hpp>
+
+/*! @file */
+
+namespace cv
+{
+ template<typename T>
+ class Affine3
+ {
+ public:
+ typedef T float_type;
+ typedef Matx<float_type, 3, 3> Mat3;
+ typedef Matx<float_type, 4, 4> Mat4;
+ typedef Vec<float_type, 3> Vec3;
+
+ Affine3();
+
+ //Augmented affine matrix
+ Affine3(const Mat4& affine);
+
+ //Rotation matrix
+ Affine3(const Mat3& R, const Vec3& t = Vec3::all(0));
+
+ //Rodrigues vector
+ Affine3(const Vec3& rvec, const Vec3& t = Vec3::all(0));
+
+ //Combines all contructors above. Supports 4x4, 4x3, 3x3, 1x3, 3x1 sizes of data matrix
+ explicit Affine3(const Mat& data, const Vec3& t = Vec3::all(0));
+
+ //From 16th element array
+ explicit Affine3(const float_type* vals);
+
+ static Affine3 Identity();
+
+ //Rotation matrix
+ void rotation(const Mat3& R);
+
+ //Rodrigues vector
+ void rotation(const Vec3& rvec);
+
+ //Combines rotation methods above. Suports 3x3, 1x3, 3x1 sizes of data matrix;
+ void rotation(const Mat& data);
+
+ void linear(const Mat3& L);
+ void translation(const Vec3& t);
+
+ Mat3 rotation() const;
+ Mat3 linear() const;
+ Vec3 translation() const;
+
+ //Rodrigues vector
+ Vec3 rvec() const;
+
+ Affine3 inv(int method = cv::DECOMP_SVD) const;
+
+ // a.rotate(R) is equivalent to Affine(R, 0) * a;
+ Affine3 rotate(const Mat3& R) const;
+
+ // a.rotate(R) is equivalent to Affine(rvec, 0) * a;
+ Affine3 rotate(const Vec3& rvec) const;
+
+ // a.translate(t) is equivalent to Affine(E, t) * a;
+ Affine3 translate(const Vec3& t) const;
+
+ // a.concatenate(affine) is equivalent to affine * a;
+ Affine3 concatenate(const Affine3& affine) const;
+
+ template <typename Y> operator Affine3<Y>() const;
+
+ template <typename Y> Affine3<Y> cast() const;
+
+ Mat4 matrix;
+
+#if defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H
+ Affine3(const Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>& affine);
+ Affine3(const Eigen::Transform<T, 3, Eigen::Affine>& affine);
+ operator Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>() const;
+ operator Eigen::Transform<T, 3, Eigen::Affine>() const;
+#endif
+ };
+
+ template<typename T> static
+ Affine3<T> operator*(const Affine3<T>& affine1, const Affine3<T>& affine2);
+
+ template<typename T, typename V> static
+ V operator*(const Affine3<T>& affine, const V& vector);
+
+ typedef Affine3<float> Affine3f;
+ typedef Affine3<double> Affine3d;
+
+ static Vec3f operator*(const Affine3f& affine, const Vec3f& vector);
+ static Vec3d operator*(const Affine3d& affine, const Vec3d& vector);
+
+ template<typename _Tp> class DataType< Affine3<_Tp> >
+ {
+ public:
+ typedef Affine3<_Tp> value_type;
+ typedef Affine3<typename DataType<_Tp>::work_type> work_type;
+ typedef _Tp channel_type;
+
+ enum { generic_type = 0,
+ depth = DataType<channel_type>::depth,
+ channels = 16,
+ fmt = DataType<channel_type>::fmt + ((channels - 1) << 8),
+ type = CV_MAKETYPE(depth, channels)
+ };
+
+ typedef Vec<channel_type, channels> vec_type;
+ };
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////
+/// Implementaiton
+
+template<typename T> inline
+cv::Affine3<T>::Affine3()
+ : matrix(Mat4::eye())
+{}
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const Mat4& affine)
+ : matrix(affine)
+{}
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const Mat3& R, const Vec3& t)
+{
+ rotation(R);
+ translation(t);
+ matrix.val[12] = matrix.val[13] = matrix.val[14] = 0;
+ matrix.val[15] = 1;
+}
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const Vec3& _rvec, const Vec3& t)
+{
+ rotation(_rvec);
+ translation(t);
+ matrix.val[12] = matrix.val[13] = matrix.val[14] = 0;
+ matrix.val[15] = 1;
+}
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const cv::Mat& data, const Vec3& t)
+{
+ CV_Assert(data.type() == cv::DataType<T>::type);
+
+ if (data.cols == 4 && data.rows == 4)
+ {
+ data.copyTo(matrix);
+ return;
+ }
+ else if (data.cols == 4 && data.rows == 3)
+ {
+ rotation(data(Rect(0, 0, 3, 3)));
+ translation(data(Rect(3, 0, 1, 3)));
+ return;
+ }
+
+ rotation(data);
+ translation(t);
+ matrix.val[12] = matrix.val[13] = matrix.val[14] = 0;
+ matrix.val[15] = 1;
+}
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const float_type* vals) : matrix(vals)
+{}
+
+template<typename T> inline
+cv::Affine3<T> cv::Affine3<T>::Identity()
+{
+ return Affine3<T>(cv::Affine3<T>::Mat4::eye());
+}
+
+template<typename T> inline
+void cv::Affine3<T>::rotation(const Mat3& R)
+{
+ linear(R);
+}
+
+template<typename T> inline
+void cv::Affine3<T>::rotation(const Vec3& _rvec)
+{
+ double rx = _rvec[0], ry = _rvec[1], rz = _rvec[2];
+ double theta = std::sqrt(rx*rx + ry*ry + rz*rz);
+
+ if (theta < DBL_EPSILON)
+ rotation(Mat3::eye());
+ else
+ {
+ const double I[] = { 1, 0, 0, 0, 1, 0, 0, 0, 1 };
+
+ double c = std::cos(theta);
+ double s = std::sin(theta);
+ double c1 = 1. - c;
+ double itheta = (theta != 0) ? 1./theta : 0.;
+
+ rx *= itheta; ry *= itheta; rz *= itheta;
+
+ double rrt[] = { rx*rx, rx*ry, rx*rz, rx*ry, ry*ry, ry*rz, rx*rz, ry*rz, rz*rz };
+ double _r_x_[] = { 0, -rz, ry, rz, 0, -rx, -ry, rx, 0 };
+ Mat3 R;
+
+ // R = cos(theta)*I + (1 - cos(theta))*r*rT + sin(theta)*[r_x]
+ // where [r_x] is [0 -rz ry; rz 0 -rx; -ry rx 0]
+ for(int k = 0; k < 9; ++k)
+ R.val[k] = static_cast<float_type>(c*I[k] + c1*rrt[k] + s*_r_x_[k]);
+
+ rotation(R);
+ }
+}
+
+//Combines rotation methods above. Suports 3x3, 1x3, 3x1 sizes of data matrix;
+template<typename T> inline
+void cv::Affine3<T>::rotation(const cv::Mat& data)
+{
+ CV_Assert(data.type() == cv::DataType<T>::type);
+
+ if (data.cols == 3 && data.rows == 3)
+ {
+ Mat3 R;
+ data.copyTo(R);
+ rotation(R);
+ }
+ else if ((data.cols == 3 && data.rows == 1) || (data.cols == 1 && data.rows == 3))
+ {
+ Vec3 _rvec;
+ data.reshape(1, 3).copyTo(_rvec);
+ rotation(_rvec);
+ }
+ else
+ CV_Assert(!"Input marix can be 3x3, 1x3 or 3x1");
+}
+
+template<typename T> inline
+void cv::Affine3<T>::linear(const Mat3& L)
+{
+ matrix.val[0] = L.val[0]; matrix.val[1] = L.val[1]; matrix.val[ 2] = L.val[2];
+ matrix.val[4] = L.val[3]; matrix.val[5] = L.val[4]; matrix.val[ 6] = L.val[5];
+ matrix.val[8] = L.val[6]; matrix.val[9] = L.val[7]; matrix.val[10] = L.val[8];
+}
+
+template<typename T> inline
+void cv::Affine3<T>::translation(const Vec3& t)
+{
+ matrix.val[3] = t[0]; matrix.val[7] = t[1]; matrix.val[11] = t[2];
+}
+
+template<typename T> inline
+typename cv::Affine3<T>::Mat3 cv::Affine3<T>::rotation() const
+{
+ return linear();
+}
+
+template<typename T> inline
+typename cv::Affine3<T>::Mat3 cv::Affine3<T>::linear() const
+{
+ typename cv::Affine3<T>::Mat3 R;
+ R.val[0] = matrix.val[0]; R.val[1] = matrix.val[1]; R.val[2] = matrix.val[ 2];
+ R.val[3] = matrix.val[4]; R.val[4] = matrix.val[5]; R.val[5] = matrix.val[ 6];
+ R.val[6] = matrix.val[8]; R.val[7] = matrix.val[9]; R.val[8] = matrix.val[10];
+ return R;
+}
+
+template<typename T> inline
+typename cv::Affine3<T>::Vec3 cv::Affine3<T>::translation() const
+{
+ return Vec3(matrix.val[3], matrix.val[7], matrix.val[11]);
+}
+
+template<typename T> inline
+typename cv::Affine3<T>::Vec3 cv::Affine3<T>::rvec() const
+{
+ cv::Vec3d w;
+ cv::Matx33d u, vt, R = rotation();
+ cv::SVD::compute(R, w, u, vt, cv::SVD::FULL_UV + cv::SVD::MODIFY_A);
+ R = u * vt;
+
+ double rx = R.val[7] - R.val[5];
+ double ry = R.val[2] - R.val[6];
+ double rz = R.val[3] - R.val[1];
+
+ double s = std::sqrt((rx*rx + ry*ry + rz*rz)*0.25);
+ double c = (R.val[0] + R.val[4] + R.val[8] - 1) * 0.5;
+ c = c > 1.0 ? 1.0 : c < -1.0 ? -1.0 : c;
+ double theta = acos(c);
+
+ if( s < 1e-5 )
+ {
+ if( c > 0 )
+ rx = ry = rz = 0;
+ else
+ {
+ double t;
+ t = (R.val[0] + 1) * 0.5;
+ rx = std::sqrt(std::max(t, 0.0));
+ t = (R.val[4] + 1) * 0.5;
+ ry = std::sqrt(std::max(t, 0.0)) * (R.val[1] < 0 ? -1.0 : 1.0);
+ t = (R.val[8] + 1) * 0.5;
+ rz = std::sqrt(std::max(t, 0.0)) * (R.val[2] < 0 ? -1.0 : 1.0);
+
+ if( fabs(rx) < fabs(ry) && fabs(rx) < fabs(rz) && (R.val[5] > 0) != (ry*rz > 0) )
+ rz = -rz;
+ theta /= std::sqrt(rx*rx + ry*ry + rz*rz);
+ rx *= theta;
+ ry *= theta;
+ rz *= theta;
+ }
+ }
+ else
+ {
+ double vth = 1/(2*s);
+ vth *= theta;
+ rx *= vth; ry *= vth; rz *= vth;
+ }
+
+ return cv::Vec3d(rx, ry, rz);
+}
+
+template<typename T> inline
+cv::Affine3<T> cv::Affine3<T>::inv(int method) const
+{
+ return matrix.inv(method);
+}
+
+template<typename T> inline
+cv::Affine3<T> cv::Affine3<T>::rotate(const Mat3& R) const
+{
+ Mat3 Lc = linear();
+ Vec3 tc = translation();
+ Mat4 result;
+ result.val[12] = result.val[13] = result.val[14] = 0;
+ result.val[15] = 1;
+
+ for(int j = 0; j < 3; ++j)
+ {
+ for(int i = 0; i < 3; ++i)
+ {
+ float_type value = 0;
+ for(int k = 0; k < 3; ++k)
+ value += R(j, k) * Lc(k, i);
+ result(j, i) = value;
+ }
+
+ result(j, 3) = R.row(j).dot(tc.t());
+ }
+ return result;
+}
+
+template<typename T> inline
+cv::Affine3<T> cv::Affine3<T>::rotate(const Vec3& _rvec) const
+{
+ return rotate(Affine3f(_rvec).rotation());
+}
+
+template<typename T> inline
+cv::Affine3<T> cv::Affine3<T>::translate(const Vec3& t) const
+{
+ Mat4 m = matrix;
+ m.val[ 3] += t[0];
+ m.val[ 7] += t[1];
+ m.val[11] += t[2];
+ return m;
+}
+
+template<typename T> inline
+cv::Affine3<T> cv::Affine3<T>::concatenate(const Affine3<T>& affine) const
+{
+ return (*this).rotate(affine.rotation()).translate(affine.translation());
+}
+
+template<typename T> template <typename Y> inline
+cv::Affine3<T>::operator Affine3<Y>() const
+{
+ return Affine3<Y>(matrix);
+}
+
+template<typename T> template <typename Y> inline
+cv::Affine3<Y> cv::Affine3<T>::cast() const
+{
+ return Affine3<Y>(matrix);
+}
+
+/** @cond IGNORED */
+template<typename T> inline
+cv::Affine3<T> cv::operator*(const cv::Affine3<T>& affine1, const cv::Affine3<T>& affine2)
+{
+ return affine2.concatenate(affine1);
+}
+
+template<typename T, typename V> inline
+V cv::operator*(const cv::Affine3<T>& affine, const V& v)
+{
+ const typename Affine3<T>::Mat4& m = affine.matrix;
+
+ V r;
+ r.x = m.val[0] * v.x + m.val[1] * v.y + m.val[ 2] * v.z + m.val[ 3];
+ r.y = m.val[4] * v.x + m.val[5] * v.y + m.val[ 6] * v.z + m.val[ 7];
+ r.z = m.val[8] * v.x + m.val[9] * v.y + m.val[10] * v.z + m.val[11];
+ return r;
+}
+/** @endcond */
+
+static inline
+cv::Vec3f cv::operator*(const cv::Affine3f& affine, const cv::Vec3f& v)
+{
+ const cv::Matx44f& m = affine.matrix;
+ cv::Vec3f r;
+ r.val[0] = m.val[0] * v[0] + m.val[1] * v[1] + m.val[ 2] * v[2] + m.val[ 3];
+ r.val[1] = m.val[4] * v[0] + m.val[5] * v[1] + m.val[ 6] * v[2] + m.val[ 7];
+ r.val[2] = m.val[8] * v[0] + m.val[9] * v[1] + m.val[10] * v[2] + m.val[11];
+ return r;
+}
+
+static inline
+cv::Vec3d cv::operator*(const cv::Affine3d& affine, const cv::Vec3d& v)
+{
+ const cv::Matx44d& m = affine.matrix;
+ cv::Vec3d r;
+ r.val[0] = m.val[0] * v[0] + m.val[1] * v[1] + m.val[ 2] * v[2] + m.val[ 3];
+ r.val[1] = m.val[4] * v[0] + m.val[5] * v[1] + m.val[ 6] * v[2] + m.val[ 7];
+ r.val[2] = m.val[8] * v[0] + m.val[9] * v[1] + m.val[10] * v[2] + m.val[11];
+ return r;
+}
+
+
+
+#if defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>& affine)
+{
+ cv::Mat(4, 4, cv::DataType<T>::type, affine.matrix().data()).copyTo(matrix);
+}
+
+template<typename T> inline
+cv::Affine3<T>::Affine3(const Eigen::Transform<T, 3, Eigen::Affine>& affine)
+{
+ Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)> a = affine;
+ cv::Mat(4, 4, cv::DataType<T>::type, a.matrix().data()).copyTo(matrix);
+}
+
+template<typename T> inline
+cv::Affine3<T>::operator Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>() const
+{
+ Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)> r;
+ cv::Mat hdr(4, 4, cv::DataType<T>::type, r.matrix().data());
+ cv::Mat(matrix, false).copyTo(hdr);
+ return r;
+}
+
+template<typename T> inline
+cv::Affine3<T>::operator Eigen::Transform<T, 3, Eigen::Affine>() const
+{
+ return this->operator Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>();
+}
+
+#endif /* defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H */
+
+
+#endif /* __cplusplus */
+
+#endif /* __OPENCV_CORE_AFFINE3_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/core.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/core.hpp
new file mode 100644
index 00000000..591d50ad
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/core.hpp
@@ -0,0 +1,4924 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_HPP__
+#define __OPENCV_CORE_HPP__
+
+#include "opencv2/core/types_c.h"
+#include "opencv2/core/version.hpp"
+
+#ifdef __cplusplus
+
+#ifndef SKIP_INCLUDES
+#include <limits.h>
+#include <algorithm>
+#include <cmath>
+#include <cstddef>
+#include <complex>
+#include <map>
+#include <new>
+#include <string>
+#include <vector>
+#include <sstream>
+#endif // SKIP_INCLUDES
+
+/*! \namespace cv
+ Namespace where all the C++ OpenCV functionality resides
+*/
+namespace cv {
+
+#undef abs
+#undef min
+#undef max
+#undef Complex
+
+using std::vector;
+using std::string;
+using std::ptrdiff_t;
+
+template<typename _Tp> class Size_;
+template<typename _Tp> class Point_;
+template<typename _Tp> class Rect_;
+template<typename _Tp, int cn> class Vec;
+template<typename _Tp, int m, int n> class Matx;
+
+typedef std::string String;
+
+class Mat;
+class SparseMat;
+typedef Mat MatND;
+
+namespace ogl {
+ class Buffer;
+ class Texture2D;
+ class Arrays;
+}
+
+// < Deprecated
+class GlBuffer;
+class GlTexture;
+class GlArrays;
+class GlCamera;
+// >
+
+namespace gpu {
+ class GpuMat;
+}
+
+class CV_EXPORTS MatExpr;
+class CV_EXPORTS MatOp_Base;
+class CV_EXPORTS MatArg;
+class CV_EXPORTS MatConstIterator;
+
+template<typename _Tp> class Mat_;
+template<typename _Tp> class MatIterator_;
+template<typename _Tp> class MatConstIterator_;
+template<typename _Tp> class MatCommaInitializer_;
+
+#if !defined(ANDROID) || (defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_WCHAR_T)
+typedef std::basic_string<wchar_t> WString;
+
+CV_EXPORTS string fromUtf16(const WString& str);
+CV_EXPORTS WString toUtf16(const string& str);
+#endif
+
+CV_EXPORTS string format( const char* fmt, ... );
+CV_EXPORTS string tempfile( const char* suffix CV_DEFAULT(0));
+
+// matrix decomposition types
+enum { DECOMP_LU=0, DECOMP_SVD=1, DECOMP_EIG=2, DECOMP_CHOLESKY=3, DECOMP_QR=4, DECOMP_NORMAL=16 };
+enum { NORM_INF=1, NORM_L1=2, NORM_L2=4, NORM_L2SQR=5, NORM_HAMMING=6, NORM_HAMMING2=7, NORM_TYPE_MASK=7, NORM_RELATIVE=8, NORM_MINMAX=32 };
+enum { CMP_EQ=0, CMP_GT=1, CMP_GE=2, CMP_LT=3, CMP_LE=4, CMP_NE=5 };
+enum { GEMM_1_T=1, GEMM_2_T=2, GEMM_3_T=4 };
+enum { DFT_INVERSE=1, DFT_SCALE=2, DFT_ROWS=4, DFT_COMPLEX_OUTPUT=16, DFT_REAL_OUTPUT=32,
+ DCT_INVERSE = DFT_INVERSE, DCT_ROWS=DFT_ROWS };
+
+
+/*!
+ The standard OpenCV exception class.
+ Instances of the class are thrown by various functions and methods in the case of critical errors.
+ */
+class CV_EXPORTS Exception : public std::exception
+{
+public:
+ /*!
+ Default constructor
+ */
+ Exception();
+ /*!
+ Full constructor. Normally the constuctor is not called explicitly.
+ Instead, the macros CV_Error(), CV_Error_() and CV_Assert() are used.
+ */
+ Exception(int _code, const string& _err, const string& _func, const string& _file, int _line);
+ virtual ~Exception() throw();
+
+ /*!
+ \return the error description and the context as a text string.
+ */
+ virtual const char *what() const throw();
+ void formatMessage();
+
+ string msg; ///< the formatted error message
+
+ int code; ///< error code @see CVStatus
+ string err; ///< error description
+ string func; ///< function name. Available only when the compiler supports getting it
+ string file; ///< source file name where the error has occured
+ int line; ///< line number in the source file where the error has occured
+};
+
+
+//! Signals an error and raises the exception.
+
+/*!
+ By default the function prints information about the error to stderr,
+ then it either stops if setBreakOnError() had been called before or raises the exception.
+ It is possible to alternate error processing by using redirectError().
+
+ \param exc the exception raisen.
+ */
+CV_EXPORTS void error( const Exception& exc );
+
+//! Sets/resets the break-on-error mode.
+
+/*!
+ When the break-on-error mode is set, the default error handler
+ issues a hardware exception, which can make debugging more convenient.
+
+ \return the previous state
+ */
+CV_EXPORTS bool setBreakOnError(bool flag);
+
+typedef int (CV_CDECL *ErrorCallback)( int status, const char* func_name,
+ const char* err_msg, const char* file_name,
+ int line, void* userdata );
+
+//! Sets the new error handler and the optional user data.
+
+/*!
+ The function sets the new error handler, called from cv::error().
+
+ \param errCallback the new error handler. If NULL, the default error handler is used.
+ \param userdata the optional user data pointer, passed to the callback.
+ \param prevUserdata the optional output parameter where the previous user data pointer is stored
+
+ \return the previous error handler
+*/
+CV_EXPORTS ErrorCallback redirectError( ErrorCallback errCallback,
+ void* userdata=0, void** prevUserdata=0);
+
+
+#if defined __GNUC__
+#define CV_Func __func__
+#elif defined _MSC_VER
+#define CV_Func __FUNCTION__
+#else
+#define CV_Func ""
+#endif
+
+#define CV_Error( code, msg ) cv::error( cv::Exception(code, msg, CV_Func, __FILE__, __LINE__) )
+#define CV_Error_( code, args ) cv::error( cv::Exception(code, cv::format args, CV_Func, __FILE__, __LINE__) )
+#define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Exception(CV_StsAssert, #expr, CV_Func, __FILE__, __LINE__) )
+
+#ifdef _DEBUG
+#define CV_DbgAssert(expr) CV_Assert(expr)
+#else
+#define CV_DbgAssert(expr)
+#endif
+
+CV_EXPORTS void glob(String pattern, std::vector<String>& result, bool recursive = false);
+
+CV_EXPORTS_W void setNumThreads(int nthreads);
+CV_EXPORTS_W int getNumThreads();
+CV_EXPORTS_W int getThreadNum();
+
+CV_EXPORTS_W const string& getBuildInformation();
+
+//! Returns the number of ticks.
+
+/*!
+ The function returns the number of ticks since the certain event (e.g. when the machine was turned on).
+ It can be used to initialize cv::RNG or to measure a function execution time by reading the tick count
+ before and after the function call. The granularity of ticks depends on the hardware and OS used. Use
+ cv::getTickFrequency() to convert ticks to seconds.
+*/
+CV_EXPORTS_W int64 getTickCount();
+
+/*!
+ Returns the number of ticks per seconds.
+
+ The function returns the number of ticks (as returned by cv::getTickCount()) per second.
+ The following code computes the execution time in milliseconds:
+
+ \code
+ double exec_time = (double)getTickCount();
+ // do something ...
+ exec_time = ((double)getTickCount() - exec_time)*1000./getTickFrequency();
+ \endcode
+*/
+CV_EXPORTS_W double getTickFrequency();
+
+/*!
+ Returns the number of CPU ticks.
+
+ On platforms where the feature is available, the function returns the number of CPU ticks
+ since the certain event (normally, the system power-on moment). Using this function
+ one can accurately measure the execution time of very small code fragments,
+ for which cv::getTickCount() granularity is not enough.
+*/
+CV_EXPORTS_W int64 getCPUTickCount();
+
+/*!
+ Returns SSE etc. support status
+
+ The function returns true if certain hardware features are available.
+ Currently, the following features are recognized:
+ - CV_CPU_MMX - MMX
+ - CV_CPU_SSE - SSE
+ - CV_CPU_SSE2 - SSE 2
+ - CV_CPU_SSE3 - SSE 3
+ - CV_CPU_SSSE3 - SSSE 3
+ - CV_CPU_SSE4_1 - SSE 4.1
+ - CV_CPU_SSE4_2 - SSE 4.2
+ - CV_CPU_POPCNT - POPCOUNT
+ - CV_CPU_AVX - AVX
+ - CV_CPU_AVX2 - AVX2
+
+ \note {Note that the function output is not static. Once you called cv::useOptimized(false),
+ most of the hardware acceleration is disabled and thus the function will returns false,
+ until you call cv::useOptimized(true)}
+*/
+CV_EXPORTS_W bool checkHardwareSupport(int feature);
+
+//! returns the number of CPUs (including hyper-threading)
+CV_EXPORTS_W int getNumberOfCPUs();
+
+/*!
+ Allocates memory buffer
+
+ This is specialized OpenCV memory allocation function that returns properly aligned memory buffers.
+ The usage is identical to malloc(). The allocated buffers must be freed with cv::fastFree().
+ If there is not enough memory, the function calls cv::error(), which raises an exception.
+
+ \param bufSize buffer size in bytes
+ \return the allocated memory buffer.
+*/
+CV_EXPORTS void* fastMalloc(size_t bufSize);
+
+/*!
+ Frees the memory allocated with cv::fastMalloc
+
+ This is the corresponding deallocation function for cv::fastMalloc().
+ When ptr==NULL, the function has no effect.
+*/
+CV_EXPORTS void fastFree(void* ptr);
+
+template<typename _Tp> static inline _Tp* allocate(size_t n)
+{
+ return new _Tp[n];
+}
+
+template<typename _Tp> static inline void deallocate(_Tp* ptr, size_t)
+{
+ delete[] ptr;
+}
+
+/*!
+ Aligns pointer by the certain number of bytes
+
+ This small inline function aligns the pointer by the certian number of bytes by shifting
+ it forward by 0 or a positive offset.
+*/
+template<typename _Tp> static inline _Tp* alignPtr(_Tp* ptr, int n=(int)sizeof(_Tp))
+{
+ return (_Tp*)(((size_t)ptr + n-1) & -n);
+}
+
+/*!
+ Aligns buffer size by the certain number of bytes
+
+ This small inline function aligns a buffer size by the certian number of bytes by enlarging it.
+*/
+static inline size_t alignSize(size_t sz, int n)
+{
+ assert((n & (n - 1)) == 0); // n is a power of 2
+ return (sz + n-1) & -n;
+}
+
+/*!
+ Turns on/off available optimization
+
+ The function turns on or off the optimized code in OpenCV. Some optimization can not be enabled
+ or disabled, but, for example, most of SSE code in OpenCV can be temporarily turned on or off this way.
+
+ \note{Since optimization may imply using special data structures, it may be unsafe
+ to call this function anywhere in the code. Instead, call it somewhere at the top level.}
+*/
+CV_EXPORTS_W void setUseOptimized(bool onoff);
+
+/*!
+ Returns the current optimization status
+
+ The function returns the current optimization status, which is controlled by cv::setUseOptimized().
+*/
+CV_EXPORTS_W bool useOptimized();
+
+/*!
+ The STL-compilant memory Allocator based on cv::fastMalloc() and cv::fastFree()
+*/
+template<typename _Tp> class Allocator
+{
+public:
+ typedef _Tp value_type;
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ template<typename U> class rebind { typedef Allocator<U> other; };
+
+ explicit Allocator() {}
+ ~Allocator() {}
+ explicit Allocator(Allocator const&) {}
+ template<typename U>
+ explicit Allocator(Allocator<U> const&) {}
+
+ // address
+ pointer address(reference r) { return &r; }
+ const_pointer address(const_reference r) { return &r; }
+
+ pointer allocate(size_type count, const void* =0)
+ { return reinterpret_cast<pointer>(fastMalloc(count * sizeof (_Tp))); }
+
+ void deallocate(pointer p, size_type) {fastFree(p); }
+
+ size_type max_size() const
+ { return max(static_cast<_Tp>(-1)/sizeof(_Tp), 1); }
+
+ void construct(pointer p, const _Tp& v) { new(static_cast<void*>(p)) _Tp(v); }
+ void destroy(pointer p) { p->~_Tp(); }
+};
+
+/////////////////////// Vec (used as element of multi-channel images /////////////////////
+
+/*!
+ A helper class for cv::DataType
+
+ The class is specialized for each fundamental numerical data type supported by OpenCV.
+ It provides DataDepth<T>::value constant.
+*/
+template<typename _Tp> class DataDepth {};
+
+template<> class DataDepth<bool> { public: enum { value = CV_8U, fmt=(int)'u' }; };
+template<> class DataDepth<uchar> { public: enum { value = CV_8U, fmt=(int)'u' }; };
+template<> class DataDepth<schar> { public: enum { value = CV_8S, fmt=(int)'c' }; };
+template<> class DataDepth<char> { public: enum { value = CV_8S, fmt=(int)'c' }; };
+template<> class DataDepth<ushort> { public: enum { value = CV_16U, fmt=(int)'w' }; };
+template<> class DataDepth<short> { public: enum { value = CV_16S, fmt=(int)'s' }; };
+template<> class DataDepth<int> { public: enum { value = CV_32S, fmt=(int)'i' }; };
+// this is temporary solution to support 32-bit unsigned integers
+template<> class DataDepth<unsigned> { public: enum { value = CV_32S, fmt=(int)'i' }; };
+template<> class DataDepth<float> { public: enum { value = CV_32F, fmt=(int)'f' }; };
+template<> class DataDepth<double> { public: enum { value = CV_64F, fmt=(int)'d' }; };
+template<typename _Tp> class DataDepth<_Tp*> { public: enum { value = CV_USRTYPE1, fmt=(int)'r' }; };
+
+
+////////////////////////////// Small Matrix ///////////////////////////
+
+/*!
+ A short numerical vector.
+
+ This template class represents short numerical vectors (of 1, 2, 3, 4 ... elements)
+ on which you can perform basic arithmetical operations, access individual elements using [] operator etc.
+ The vectors are allocated on stack, as opposite to std::valarray, std::vector, cv::Mat etc.,
+ which elements are dynamically allocated in the heap.
+
+ The template takes 2 parameters:
+ -# _Tp element type
+ -# cn the number of elements
+
+ In addition to the universal notation like Vec<float, 3>, you can use shorter aliases
+ for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec<float, 3>.
+ */
+
+struct CV_EXPORTS Matx_AddOp {};
+struct CV_EXPORTS Matx_SubOp {};
+struct CV_EXPORTS Matx_ScaleOp {};
+struct CV_EXPORTS Matx_MulOp {};
+struct CV_EXPORTS Matx_MatMulOp {};
+struct CV_EXPORTS Matx_TOp {};
+
+template<typename _Tp, int m, int n> class Matx
+{
+public:
+ typedef _Tp value_type;
+ typedef Matx<_Tp, (m < n ? m : n), 1> diag_type;
+ typedef Matx<_Tp, m, n> mat_type;
+ enum { depth = DataDepth<_Tp>::value, rows = m, cols = n, channels = rows*cols,
+ type = CV_MAKETYPE(depth, channels) };
+
+ //! default constructor
+ Matx();
+
+ Matx(_Tp v0); //!< 1x1 matrix
+ Matx(_Tp v0, _Tp v1); //!< 1x2 or 2x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2); //!< 1x3 or 3x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3); //!< 1x4, 2x2 or 4x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4); //!< 1x5 or 5x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5); //!< 1x6, 2x3, 3x2 or 6x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6); //!< 1x7 or 7x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7); //!< 1x8, 2x4, 4x2 or 8x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8); //!< 1x9, 3x3 or 9x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9); //!< 1x10, 2x5 or 5x2 or 10x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8, _Tp v9, _Tp v10, _Tp v11); //!< 1x12, 2x6, 3x4, 4x3, 6x2 or 12x1 matrix
+ Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8, _Tp v9, _Tp v10, _Tp v11,
+ _Tp v12, _Tp v13, _Tp v14, _Tp v15); //!< 1x16, 4x4 or 16x1 matrix
+ explicit Matx(const _Tp* vals); //!< initialize from a plain array
+
+ static Matx all(_Tp alpha);
+ static Matx zeros();
+ static Matx ones();
+ static Matx eye();
+ static Matx diag(const diag_type& d);
+ static Matx randu(_Tp a, _Tp b);
+ static Matx randn(_Tp a, _Tp b);
+
+ //! dot product computed with the default precision
+ _Tp dot(const Matx<_Tp, m, n>& v) const;
+
+ //! dot product computed in double-precision arithmetics
+ double ddot(const Matx<_Tp, m, n>& v) const;
+
+ //! conversion to another data type
+ template<typename T2> operator Matx<T2, m, n>() const;
+
+ //! change the matrix shape
+ template<int m1, int n1> Matx<_Tp, m1, n1> reshape() const;
+
+ //! extract part of the matrix
+ template<int m1, int n1> Matx<_Tp, m1, n1> get_minor(int i, int j) const;
+
+ //! extract the matrix row
+ Matx<_Tp, 1, n> row(int i) const;
+
+ //! extract the matrix column
+ Matx<_Tp, m, 1> col(int i) const;
+
+ //! extract the matrix diagonal
+ diag_type diag() const;
+
+ //! transpose the matrix
+ Matx<_Tp, n, m> t() const;
+
+ //! invert matrix the matrix
+ Matx<_Tp, n, m> inv(int method=DECOMP_LU) const;
+
+ //! solve linear system
+ template<int l> Matx<_Tp, n, l> solve(const Matx<_Tp, m, l>& rhs, int flags=DECOMP_LU) const;
+ Vec<_Tp, n> solve(const Vec<_Tp, m>& rhs, int method) const;
+
+ //! multiply two matrices element-wise
+ Matx<_Tp, m, n> mul(const Matx<_Tp, m, n>& a) const;
+
+ //! element access
+ const _Tp& operator ()(int i, int j) const;
+ _Tp& operator ()(int i, int j);
+
+ //! 1D element access
+ const _Tp& operator ()(int i) const;
+ _Tp& operator ()(int i);
+
+ Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_AddOp);
+ Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_SubOp);
+ template<typename _T2> Matx(const Matx<_Tp, m, n>& a, _T2 alpha, Matx_ScaleOp);
+ Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_MulOp);
+ template<int l> Matx(const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b, Matx_MatMulOp);
+ Matx(const Matx<_Tp, n, m>& a, Matx_TOp);
+
+ _Tp val[m*n]; //< matrix elements
+};
+
+
+typedef Matx<float, 1, 2> Matx12f;
+typedef Matx<double, 1, 2> Matx12d;
+typedef Matx<float, 1, 3> Matx13f;
+typedef Matx<double, 1, 3> Matx13d;
+typedef Matx<float, 1, 4> Matx14f;
+typedef Matx<double, 1, 4> Matx14d;
+typedef Matx<float, 1, 6> Matx16f;
+typedef Matx<double, 1, 6> Matx16d;
+
+typedef Matx<float, 2, 1> Matx21f;
+typedef Matx<double, 2, 1> Matx21d;
+typedef Matx<float, 3, 1> Matx31f;
+typedef Matx<double, 3, 1> Matx31d;
+typedef Matx<float, 4, 1> Matx41f;
+typedef Matx<double, 4, 1> Matx41d;
+typedef Matx<float, 6, 1> Matx61f;
+typedef Matx<double, 6, 1> Matx61d;
+
+typedef Matx<float, 2, 2> Matx22f;
+typedef Matx<double, 2, 2> Matx22d;
+typedef Matx<float, 2, 3> Matx23f;
+typedef Matx<double, 2, 3> Matx23d;
+typedef Matx<float, 3, 2> Matx32f;
+typedef Matx<double, 3, 2> Matx32d;
+
+typedef Matx<float, 3, 3> Matx33f;
+typedef Matx<double, 3, 3> Matx33d;
+
+typedef Matx<float, 3, 4> Matx34f;
+typedef Matx<double, 3, 4> Matx34d;
+typedef Matx<float, 4, 3> Matx43f;
+typedef Matx<double, 4, 3> Matx43d;
+
+typedef Matx<float, 4, 4> Matx44f;
+typedef Matx<double, 4, 4> Matx44d;
+typedef Matx<float, 6, 6> Matx66f;
+typedef Matx<double, 6, 6> Matx66d;
+
+
+/*!
+ A short numerical vector.
+
+ This template class represents short numerical vectors (of 1, 2, 3, 4 ... elements)
+ on which you can perform basic arithmetical operations, access individual elements using [] operator etc.
+ The vectors are allocated on stack, as opposite to std::valarray, std::vector, cv::Mat etc.,
+ which elements are dynamically allocated in the heap.
+
+ The template takes 2 parameters:
+ -# _Tp element type
+ -# cn the number of elements
+
+ In addition to the universal notation like Vec<float, 3>, you can use shorter aliases
+ for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec<float, 3>.
+*/
+template<typename _Tp, int cn> class Vec : public Matx<_Tp, cn, 1>
+{
+public:
+ typedef _Tp value_type;
+ enum { depth = DataDepth<_Tp>::value, channels = cn, type = CV_MAKETYPE(depth, channels) };
+
+ //! default constructor
+ Vec();
+
+ Vec(_Tp v0); //!< 1-element vector constructor
+ Vec(_Tp v0, _Tp v1); //!< 2-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2); //!< 3-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3); //!< 4-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4); //!< 5-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5); //!< 6-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6); //!< 7-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7); //!< 8-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8); //!< 9-element vector constructor
+ Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9); //!< 10-element vector constructor
+ explicit Vec(const _Tp* values);
+
+ Vec(const Vec<_Tp, cn>& v);
+
+ static Vec all(_Tp alpha);
+
+ //! per-element multiplication
+ Vec mul(const Vec<_Tp, cn>& v) const;
+
+ //! conjugation (makes sense for complex numbers and quaternions)
+ Vec conj() const;
+
+ /*!
+ cross product of the two 3D vectors.
+
+ For other dimensionalities the exception is raised
+ */
+ Vec cross(const Vec& v) const;
+ //! conversion to another data type
+ template<typename T2> operator Vec<T2, cn>() const;
+ //! conversion to 4-element CvScalar.
+ operator CvScalar() const;
+
+ /*! element access */
+ const _Tp& operator [](int i) const;
+ _Tp& operator[](int i);
+ const _Tp& operator ()(int i) const;
+ _Tp& operator ()(int i);
+
+ Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_AddOp);
+ Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_SubOp);
+ template<typename _T2> Vec(const Matx<_Tp, cn, 1>& a, _T2 alpha, Matx_ScaleOp);
+};
+
+
+/* \typedef
+
+ Shorter aliases for the most popular specializations of Vec<T,n>
+*/
+typedef Vec<uchar, 2> Vec2b;
+typedef Vec<uchar, 3> Vec3b;
+typedef Vec<uchar, 4> Vec4b;
+
+typedef Vec<short, 2> Vec2s;
+typedef Vec<short, 3> Vec3s;
+typedef Vec<short, 4> Vec4s;
+
+typedef Vec<ushort, 2> Vec2w;
+typedef Vec<ushort, 3> Vec3w;
+typedef Vec<ushort, 4> Vec4w;
+
+typedef Vec<int, 2> Vec2i;
+typedef Vec<int, 3> Vec3i;
+typedef Vec<int, 4> Vec4i;
+typedef Vec<int, 6> Vec6i;
+typedef Vec<int, 8> Vec8i;
+
+typedef Vec<float, 2> Vec2f;
+typedef Vec<float, 3> Vec3f;
+typedef Vec<float, 4> Vec4f;
+typedef Vec<float, 6> Vec6f;
+
+typedef Vec<double, 2> Vec2d;
+typedef Vec<double, 3> Vec3d;
+typedef Vec<double, 4> Vec4d;
+typedef Vec<double, 6> Vec6d;
+
+
+//////////////////////////////// Complex //////////////////////////////
+
+/*!
+ A complex number class.
+
+ The template class is similar and compatible with std::complex, however it provides slightly
+ more convenient access to the real and imaginary parts using through the simple field access, as opposite
+ to std::complex::real() and std::complex::imag().
+*/
+template<typename _Tp> class Complex
+{
+public:
+
+ //! constructors
+ Complex();
+ Complex( _Tp _re, _Tp _im=0 );
+ Complex( const std::complex<_Tp>& c );
+
+ //! conversion to another data type
+ template<typename T2> operator Complex<T2>() const;
+ //! conjugation
+ Complex conj() const;
+ //! conversion to std::complex
+ operator std::complex<_Tp>() const;
+
+ _Tp re, im; //< the real and the imaginary parts
+};
+
+
+typedef Complex<float> Complexf;
+typedef Complex<double> Complexd;
+
+
+//////////////////////////////// Point_ ////////////////////////////////
+
+/*!
+ template 2D point class.
+
+ The class defines a point in 2D space. Data type of the point coordinates is specified
+ as a template parameter. There are a few shorter aliases available for user convenience.
+ See cv::Point, cv::Point2i, cv::Point2f and cv::Point2d.
+*/
+template<typename _Tp> class Point_
+{
+public:
+ typedef _Tp value_type;
+
+ // various constructors
+ Point_();
+ Point_(_Tp _x, _Tp _y);
+ Point_(const Point_& pt);
+ Point_(const CvPoint& pt);
+ Point_(const CvPoint2D32f& pt);
+ Point_(const Size_<_Tp>& sz);
+ Point_(const Vec<_Tp, 2>& v);
+
+ Point_& operator = (const Point_& pt);
+ //! conversion to another data type
+ template<typename _Tp2> operator Point_<_Tp2>() const;
+
+ //! conversion to the old-style C structures
+ operator CvPoint() const;
+ operator CvPoint2D32f() const;
+ operator Vec<_Tp, 2>() const;
+
+ //! dot product
+ _Tp dot(const Point_& pt) const;
+ //! dot product computed in double-precision arithmetics
+ double ddot(const Point_& pt) const;
+ //! cross-product
+ double cross(const Point_& pt) const;
+ //! checks whether the point is inside the specified rectangle
+ bool inside(const Rect_<_Tp>& r) const;
+
+ _Tp x, y; //< the point coordinates
+};
+
+/*!
+ template 3D point class.
+
+ The class defines a point in 3D space. Data type of the point coordinates is specified
+ as a template parameter.
+
+ \see cv::Point3i, cv::Point3f and cv::Point3d
+*/
+template<typename _Tp> class Point3_
+{
+public:
+ typedef _Tp value_type;
+
+ // various constructors
+ Point3_();
+ Point3_(_Tp _x, _Tp _y, _Tp _z);
+ Point3_(const Point3_& pt);
+ explicit Point3_(const Point_<_Tp>& pt);
+ Point3_(const CvPoint3D32f& pt);
+ Point3_(const Vec<_Tp, 3>& v);
+
+ Point3_& operator = (const Point3_& pt);
+ //! conversion to another data type
+ template<typename _Tp2> operator Point3_<_Tp2>() const;
+ //! conversion to the old-style CvPoint...
+ operator CvPoint3D32f() const;
+ //! conversion to cv::Vec<>
+ operator Vec<_Tp, 3>() const;
+
+ //! dot product
+ _Tp dot(const Point3_& pt) const;
+ //! dot product computed in double-precision arithmetics
+ double ddot(const Point3_& pt) const;
+ //! cross product of the 2 3D points
+ Point3_ cross(const Point3_& pt) const;
+
+ _Tp x, y, z; //< the point coordinates
+};
+
+//////////////////////////////// Size_ ////////////////////////////////
+
+/*!
+ The 2D size class
+
+ The class represents the size of a 2D rectangle, image size, matrix size etc.
+ Normally, cv::Size ~ cv::Size_<int> is used.
+*/
+template<typename _Tp> class Size_
+{
+public:
+ typedef _Tp value_type;
+
+ //! various constructors
+ Size_();
+ Size_(_Tp _width, _Tp _height);
+ Size_(const Size_& sz);
+ Size_(const CvSize& sz);
+ Size_(const CvSize2D32f& sz);
+ Size_(const Point_<_Tp>& pt);
+
+ Size_& operator = (const Size_& sz);
+ //! the area (width*height)
+ _Tp area() const;
+
+ //! conversion of another data type.
+ template<typename _Tp2> operator Size_<_Tp2>() const;
+
+ //! conversion to the old-style OpenCV types
+ operator CvSize() const;
+ operator CvSize2D32f() const;
+
+ _Tp width, height; // the width and the height
+};
+
+//////////////////////////////// Rect_ ////////////////////////////////
+
+/*!
+ The 2D up-right rectangle class
+
+ The class represents a 2D rectangle with coordinates of the specified data type.
+ Normally, cv::Rect ~ cv::Rect_<int> is used.
+*/
+template<typename _Tp> class Rect_
+{
+public:
+ typedef _Tp value_type;
+
+ //! various constructors
+ Rect_();
+ Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height);
+ Rect_(const Rect_& r);
+ Rect_(const CvRect& r);
+ Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz);
+ Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2);
+
+ Rect_& operator = ( const Rect_& r );
+ //! the top-left corner
+ Point_<_Tp> tl() const;
+ //! the bottom-right corner
+ Point_<_Tp> br() const;
+
+ //! size (width, height) of the rectangle
+ Size_<_Tp> size() const;
+ //! area (width*height) of the rectangle
+ _Tp area() const;
+
+ //! conversion to another data type
+ template<typename _Tp2> operator Rect_<_Tp2>() const;
+ //! conversion to the old-style CvRect
+ operator CvRect() const;
+
+ //! checks whether the rectangle contains the point
+ bool contains(const Point_<_Tp>& pt) const;
+
+ _Tp x, y, width, height; //< the top-left corner, as well as width and height of the rectangle
+};
+
+
+typedef Point_<int> Point2i;
+typedef Point2i Point;
+typedef Size_<int> Size2i;
+typedef Size_<double> Size2d;
+typedef Size2i Size;
+typedef Rect_<int> Rect;
+typedef Point_<float> Point2f;
+typedef Point_<double> Point2d;
+typedef Size_<float> Size2f;
+typedef Point3_<int> Point3i;
+typedef Point3_<float> Point3f;
+typedef Point3_<double> Point3d;
+
+
+/*!
+ The rotated 2D rectangle.
+
+ The class represents rotated (i.e. not up-right) rectangles on a plane.
+ Each rectangle is described by the center point (mass center), length of each side
+ (represented by cv::Size2f structure) and the rotation angle in degrees.
+*/
+class CV_EXPORTS RotatedRect
+{
+public:
+ //! various constructors
+ RotatedRect();
+ RotatedRect(const Point2f& center, const Size2f& size, float angle);
+ RotatedRect(const CvBox2D& box);
+
+ //! returns 4 vertices of the rectangle
+ void points(Point2f pts[]) const;
+ //! returns the minimal up-right rectangle containing the rotated rectangle
+ Rect boundingRect() const;
+ //! conversion to the old-style CvBox2D structure
+ operator CvBox2D() const;
+
+ Point2f center; //< the rectangle mass center
+ Size2f size; //< width and height of the rectangle
+ float angle; //< the rotation angle. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle.
+};
+
+//////////////////////////////// Scalar_ ///////////////////////////////
+
+/*!
+ The template scalar class.
+
+ This is partially specialized cv::Vec class with the number of elements = 4, i.e. a short vector of four elements.
+ Normally, cv::Scalar ~ cv::Scalar_<double> is used.
+*/
+template<typename _Tp> class Scalar_ : public Vec<_Tp, 4>
+{
+public:
+ //! various constructors
+ Scalar_();
+ Scalar_(_Tp v0, _Tp v1, _Tp v2=0, _Tp v3=0);
+ Scalar_(const CvScalar& s);
+ Scalar_(_Tp v0);
+
+ //! returns a scalar with all elements set to v0
+ static Scalar_<_Tp> all(_Tp v0);
+ //! conversion to the old-style CvScalar
+ operator CvScalar() const;
+
+ //! conversion to another data type
+ template<typename T2> operator Scalar_<T2>() const;
+
+ //! per-element product
+ Scalar_<_Tp> mul(const Scalar_<_Tp>& t, double scale=1 ) const;
+
+ // returns (v0, -v1, -v2, -v3)
+ Scalar_<_Tp> conj() const;
+
+ // returns true iff v1 == v2 == v3 == 0
+ bool isReal() const;
+};
+
+typedef Scalar_<double> Scalar;
+
+CV_EXPORTS void scalarToRawData(const Scalar& s, void* buf, int type, int unroll_to=0);
+
+//////////////////////////////// Range /////////////////////////////////
+
+/*!
+ The 2D range class
+
+ This is the class used to specify a continuous subsequence, i.e. part of a contour, or a column span in a matrix.
+*/
+class CV_EXPORTS Range
+{
+public:
+ Range();
+ Range(int _start, int _end);
+ Range(const CvSlice& slice);
+ int size() const;
+ bool empty() const;
+ static Range all();
+ operator CvSlice() const;
+
+ int start, end;
+};
+
+/////////////////////////////// DataType ////////////////////////////////
+
+/*!
+ Informative template class for OpenCV "scalars".
+
+ The class is specialized for each primitive numerical type supported by OpenCV (such as unsigned char or float),
+ as well as for more complex types, like cv::Complex<>, std::complex<>, cv::Vec<> etc.
+ The common property of all such types (called "scalars", do not confuse it with cv::Scalar_)
+ is that each of them is basically a tuple of numbers of the same type. Each "scalar" can be represented
+ by the depth id (CV_8U ... CV_64F) and the number of channels.
+ OpenCV matrices, 2D or nD, dense or sparse, can store "scalars",
+ as long as the number of channels does not exceed CV_CN_MAX.
+*/
+template<typename _Tp> class DataType
+{
+public:
+ typedef _Tp value_type;
+ typedef value_type work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 1, depth = -1, channels = 1, fmt=0,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<bool>
+{
+public:
+ typedef bool value_type;
+ typedef int work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<uchar>
+{
+public:
+ typedef uchar value_type;
+ typedef int work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<schar>
+{
+public:
+ typedef schar value_type;
+ typedef int work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<char>
+{
+public:
+ typedef schar value_type;
+ typedef int work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<ushort>
+{
+public:
+ typedef ushort value_type;
+ typedef int work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<short>
+{
+public:
+ typedef short value_type;
+ typedef int work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<int>
+{
+public:
+ typedef int value_type;
+ typedef value_type work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<float>
+{
+public:
+ typedef float value_type;
+ typedef value_type work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<> class DataType<double>
+{
+public:
+ typedef double value_type;
+ typedef value_type work_type;
+ typedef value_type channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 1,
+ fmt=DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<typename _Tp, int m, int n> class DataType<Matx<_Tp, m, n> >
+{
+public:
+ typedef Matx<_Tp, m, n> value_type;
+ typedef Matx<typename DataType<_Tp>::work_type, m, n> work_type;
+ typedef _Tp channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = m*n,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<typename _Tp, int cn> class DataType<Vec<_Tp, cn> >
+{
+public:
+ typedef Vec<_Tp, cn> value_type;
+ typedef Vec<typename DataType<_Tp>::work_type, cn> work_type;
+ typedef _Tp channel_type;
+ typedef value_type vec_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = cn,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+};
+
+template<typename _Tp> class DataType<std::complex<_Tp> >
+{
+public:
+ typedef std::complex<_Tp> value_type;
+ typedef value_type work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 2,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<typename _Tp> class DataType<Complex<_Tp> >
+{
+public:
+ typedef Complex<_Tp> value_type;
+ typedef value_type work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 2,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<typename _Tp> class DataType<Point_<_Tp> >
+{
+public:
+ typedef Point_<_Tp> value_type;
+ typedef Point_<typename DataType<_Tp>::work_type> work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 2,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<typename _Tp> class DataType<Point3_<_Tp> >
+{
+public:
+ typedef Point3_<_Tp> value_type;
+ typedef Point3_<typename DataType<_Tp>::work_type> work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 3,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<typename _Tp> class DataType<Size_<_Tp> >
+{
+public:
+ typedef Size_<_Tp> value_type;
+ typedef Size_<typename DataType<_Tp>::work_type> work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 2,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<typename _Tp> class DataType<Rect_<_Tp> >
+{
+public:
+ typedef Rect_<_Tp> value_type;
+ typedef Rect_<typename DataType<_Tp>::work_type> work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 4,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<typename _Tp> class DataType<Scalar_<_Tp> >
+{
+public:
+ typedef Scalar_<_Tp> value_type;
+ typedef Scalar_<typename DataType<_Tp>::work_type> work_type;
+ typedef _Tp channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 4,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+template<> class DataType<Range>
+{
+public:
+ typedef Range value_type;
+ typedef value_type work_type;
+ typedef int channel_type;
+ enum { generic_type = 0, depth = DataDepth<channel_type>::value, channels = 2,
+ fmt = ((channels-1)<<8) + DataDepth<channel_type>::fmt,
+ type = CV_MAKETYPE(depth, channels) };
+ typedef Vec<channel_type, channels> vec_type;
+};
+
+//////////////////// generic_type ref-counting pointer class for C/C++ objects ////////////////////////
+
+/*!
+ Smart pointer to dynamically allocated objects.
+
+ This is template pointer-wrapping class that stores the associated reference counter along with the
+ object pointer. The class is similar to std::smart_ptr<> from the recent addons to the C++ standard,
+ but is shorter to write :) and self-contained (i.e. does add any dependency on the compiler or an external library).
+
+ Basically, you can use "Ptr<MyObjectType> ptr" (or faster "const Ptr<MyObjectType>& ptr" for read-only access)
+ everywhere instead of "MyObjectType* ptr", where MyObjectType is some C structure or a C++ class.
+ To make it all work, you need to specialize Ptr<>::delete_obj(), like:
+
+ \code
+ template<> void Ptr<MyObjectType>::delete_obj() { call_destructor_func(obj); }
+ \endcode
+
+ \note{if MyObjectType is a C++ class with a destructor, you do not need to specialize delete_obj(),
+ since the default implementation calls "delete obj;"}
+
+ \note{Another good property of the class is that the operations on the reference counter are atomic,
+ i.e. it is safe to use the class in multi-threaded applications}
+*/
+template<typename _Tp> class Ptr
+{
+public:
+ //! empty constructor
+ Ptr();
+ //! take ownership of the pointer. The associated reference counter is allocated and set to 1
+ Ptr(_Tp* _obj);
+ //! calls release()
+ ~Ptr();
+ //! copy constructor. Copies the members and calls addref()
+ Ptr(const Ptr& ptr);
+ template<typename _Tp2> Ptr(const Ptr<_Tp2>& ptr);
+ //! copy operator. Calls ptr.addref() and release() before copying the members
+ Ptr& operator = (const Ptr& ptr);
+ //! increments the reference counter
+ void addref();
+ //! decrements the reference counter. If it reaches 0, delete_obj() is called
+ void release();
+ //! deletes the object. Override if needed
+ void delete_obj();
+ //! returns true iff obj==NULL
+ bool empty() const;
+
+ //! cast pointer to another type
+ template<typename _Tp2> Ptr<_Tp2> ptr();
+ template<typename _Tp2> const Ptr<_Tp2> ptr() const;
+
+ //! helper operators making "Ptr<T> ptr" use very similar to "T* ptr".
+ _Tp* operator -> ();
+ const _Tp* operator -> () const;
+
+ operator _Tp* ();
+ operator const _Tp*() const;
+
+ _Tp* obj; //< the object pointer.
+ int* refcount; //< the associated reference counter
+};
+
+template<typename T>
+Ptr<T> makePtr();
+
+template<typename T, typename A1>
+Ptr<T> makePtr(const A1& a1);
+
+template<typename T, typename A1, typename A2>
+Ptr<T> makePtr(const A1& a1, const A2& a2);
+
+template<typename T, typename A1, typename A2, typename A3>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9);
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9, const A10& a10);
+
+//////////////////////// Input/Output Array Arguments /////////////////////////////////
+
+/*!
+ Proxy datatype for passing Mat's and vector<>'s as input parameters
+ */
+class CV_EXPORTS _InputArray
+{
+public:
+ enum {
+ KIND_SHIFT = 16,
+ FIXED_TYPE = 0x8000 << KIND_SHIFT,
+ FIXED_SIZE = 0x4000 << KIND_SHIFT,
+ KIND_MASK = ~(FIXED_TYPE|FIXED_SIZE) - (1 << KIND_SHIFT) + 1,
+
+ NONE = 0 << KIND_SHIFT,
+ MAT = 1 << KIND_SHIFT,
+ MATX = 2 << KIND_SHIFT,
+ STD_VECTOR = 3 << KIND_SHIFT,
+ STD_VECTOR_VECTOR = 4 << KIND_SHIFT,
+ STD_VECTOR_MAT = 5 << KIND_SHIFT,
+ EXPR = 6 << KIND_SHIFT,
+ OPENGL_BUFFER = 7 << KIND_SHIFT,
+ OPENGL_TEXTURE = 8 << KIND_SHIFT,
+ GPU_MAT = 9 << KIND_SHIFT,
+ OCL_MAT =10 << KIND_SHIFT
+ };
+ _InputArray();
+
+ _InputArray(const Mat& m);
+ _InputArray(const MatExpr& expr);
+ template<typename _Tp> _InputArray(const _Tp* vec, int n);
+ template<typename _Tp> _InputArray(const vector<_Tp>& vec);
+ template<typename _Tp> _InputArray(const vector<vector<_Tp> >& vec);
+ _InputArray(const vector<Mat>& vec);
+ template<typename _Tp> _InputArray(const vector<Mat_<_Tp> >& vec);
+ template<typename _Tp> _InputArray(const Mat_<_Tp>& m);
+ template<typename _Tp, int m, int n> _InputArray(const Matx<_Tp, m, n>& matx);
+ _InputArray(const Scalar& s);
+ _InputArray(const double& val);
+ // < Deprecated
+ _InputArray(const GlBuffer& buf);
+ _InputArray(const GlTexture& tex);
+ // >
+ _InputArray(const gpu::GpuMat& d_mat);
+ _InputArray(const ogl::Buffer& buf);
+ _InputArray(const ogl::Texture2D& tex);
+
+ virtual Mat getMat(int i=-1) const;
+ virtual void getMatVector(vector<Mat>& mv) const;
+ // < Deprecated
+ virtual GlBuffer getGlBuffer() const;
+ virtual GlTexture getGlTexture() const;
+ // >
+ virtual gpu::GpuMat getGpuMat() const;
+ /*virtual*/ ogl::Buffer getOGlBuffer() const;
+ /*virtual*/ ogl::Texture2D getOGlTexture2D() const;
+
+ virtual int kind() const;
+ virtual Size size(int i=-1) const;
+ virtual size_t total(int i=-1) const;
+ virtual int type(int i=-1) const;
+ virtual int depth(int i=-1) const;
+ virtual int channels(int i=-1) const;
+ virtual bool empty() const;
+
+#ifdef OPENCV_CAN_BREAK_BINARY_COMPATIBILITY
+ virtual ~_InputArray();
+#endif
+
+ int flags;
+ void* obj;
+ Size sz;
+};
+
+
+enum
+{
+ DEPTH_MASK_8U = 1 << CV_8U,
+ DEPTH_MASK_8S = 1 << CV_8S,
+ DEPTH_MASK_16U = 1 << CV_16U,
+ DEPTH_MASK_16S = 1 << CV_16S,
+ DEPTH_MASK_32S = 1 << CV_32S,
+ DEPTH_MASK_32F = 1 << CV_32F,
+ DEPTH_MASK_64F = 1 << CV_64F,
+ DEPTH_MASK_ALL = (DEPTH_MASK_64F<<1)-1,
+ DEPTH_MASK_ALL_BUT_8S = DEPTH_MASK_ALL & ~DEPTH_MASK_8S,
+ DEPTH_MASK_FLT = DEPTH_MASK_32F + DEPTH_MASK_64F
+};
+
+
+/*!
+ Proxy datatype for passing Mat's and vector<>'s as input parameters
+ */
+class CV_EXPORTS _OutputArray : public _InputArray
+{
+public:
+ _OutputArray();
+
+ _OutputArray(Mat& m);
+ template<typename _Tp> _OutputArray(vector<_Tp>& vec);
+ template<typename _Tp> _OutputArray(vector<vector<_Tp> >& vec);
+ _OutputArray(vector<Mat>& vec);
+ template<typename _Tp> _OutputArray(vector<Mat_<_Tp> >& vec);
+ template<typename _Tp> _OutputArray(Mat_<_Tp>& m);
+ template<typename _Tp, int m, int n> _OutputArray(Matx<_Tp, m, n>& matx);
+ template<typename _Tp> _OutputArray(_Tp* vec, int n);
+ _OutputArray(gpu::GpuMat& d_mat);
+ _OutputArray(ogl::Buffer& buf);
+ _OutputArray(ogl::Texture2D& tex);
+
+ _OutputArray(const Mat& m);
+ template<typename _Tp> _OutputArray(const vector<_Tp>& vec);
+ template<typename _Tp> _OutputArray(const vector<vector<_Tp> >& vec);
+ _OutputArray(const vector<Mat>& vec);
+ template<typename _Tp> _OutputArray(const vector<Mat_<_Tp> >& vec);
+ template<typename _Tp> _OutputArray(const Mat_<_Tp>& m);
+ template<typename _Tp, int m, int n> _OutputArray(const Matx<_Tp, m, n>& matx);
+ template<typename _Tp> _OutputArray(const _Tp* vec, int n);
+ _OutputArray(const gpu::GpuMat& d_mat);
+ _OutputArray(const ogl::Buffer& buf);
+ _OutputArray(const ogl::Texture2D& tex);
+
+ virtual bool fixedSize() const;
+ virtual bool fixedType() const;
+ virtual bool needed() const;
+ virtual Mat& getMatRef(int i=-1) const;
+ /*virtual*/ gpu::GpuMat& getGpuMatRef() const;
+ /*virtual*/ ogl::Buffer& getOGlBufferRef() const;
+ /*virtual*/ ogl::Texture2D& getOGlTexture2DRef() const;
+ virtual void create(Size sz, int type, int i=-1, bool allowTransposed=false, int fixedDepthMask=0) const;
+ virtual void create(int rows, int cols, int type, int i=-1, bool allowTransposed=false, int fixedDepthMask=0) const;
+ virtual void create(int dims, const int* size, int type, int i=-1, bool allowTransposed=false, int fixedDepthMask=0) const;
+ virtual void release() const;
+ virtual void clear() const;
+
+#ifdef OPENCV_CAN_BREAK_BINARY_COMPATIBILITY
+ virtual ~_OutputArray();
+#endif
+};
+
+typedef const _InputArray& InputArray;
+typedef InputArray InputArrayOfArrays;
+typedef const _OutputArray& OutputArray;
+typedef OutputArray OutputArrayOfArrays;
+typedef OutputArray InputOutputArray;
+typedef OutputArray InputOutputArrayOfArrays;
+
+CV_EXPORTS OutputArray noArray();
+
+/////////////////////////////////////// Mat ///////////////////////////////////////////
+
+enum { MAGIC_MASK=0xFFFF0000, TYPE_MASK=0x00000FFF, DEPTH_MASK=7 };
+
+static inline size_t getElemSize(int type) { return CV_ELEM_SIZE(type); }
+
+/*!
+ Custom array allocator
+
+*/
+class CV_EXPORTS MatAllocator
+{
+public:
+ MatAllocator() {}
+ virtual ~MatAllocator() {}
+ virtual void allocate(int dims, const int* sizes, int type, int*& refcount,
+ uchar*& datastart, uchar*& data, size_t* step) = 0;
+ virtual void deallocate(int* refcount, uchar* datastart, uchar* data) = 0;
+};
+
+/*!
+ The n-dimensional matrix class.
+
+ The class represents an n-dimensional dense numerical array that can act as
+ a matrix, image, optical flow map, 3-focal tensor etc.
+ It is very similar to CvMat and CvMatND types from earlier versions of OpenCV,
+ and similarly to those types, the matrix can be multi-channel. It also fully supports ROI mechanism.
+
+ There are many different ways to create cv::Mat object. Here are the some popular ones:
+ <ul>
+ <li> using cv::Mat::create(nrows, ncols, type) method or
+ the similar constructor cv::Mat::Mat(nrows, ncols, type[, fill_value]) constructor.
+ A new matrix of the specified size and specifed type will be allocated.
+ "type" has the same meaning as in cvCreateMat function,
+ e.g. CV_8UC1 means 8-bit single-channel matrix, CV_32FC2 means 2-channel (i.e. complex)
+ floating-point matrix etc:
+
+ \code
+ // make 7x7 complex matrix filled with 1+3j.
+ cv::Mat M(7,7,CV_32FC2,Scalar(1,3));
+ // and now turn M to 100x60 15-channel 8-bit matrix.
+ // The old content will be deallocated
+ M.create(100,60,CV_8UC(15));
+ \endcode
+
+ As noted in the introduction of this chapter, Mat::create()
+ will only allocate a new matrix when the current matrix dimensionality
+ or type are different from the specified.
+
+ <li> by using a copy constructor or assignment operator, where on the right side it can
+ be a matrix or expression, see below. Again, as noted in the introduction,
+ matrix assignment is O(1) operation because it only copies the header
+ and increases the reference counter. cv::Mat::clone() method can be used to get a full
+ (a.k.a. deep) copy of the matrix when you need it.
+
+ <li> by constructing a header for a part of another matrix. It can be a single row, single column,
+ several rows, several columns, rectangular region in the matrix (called a minor in algebra) or
+ a diagonal. Such operations are also O(1), because the new header will reference the same data.
+ You can actually modify a part of the matrix using this feature, e.g.
+
+ \code
+ // add 5-th row, multiplied by 3 to the 3rd row
+ M.row(3) = M.row(3) + M.row(5)*3;
+
+ // now copy 7-th column to the 1-st column
+ // M.col(1) = M.col(7); // this will not work
+ Mat M1 = M.col(1);
+ M.col(7).copyTo(M1);
+
+ // create new 320x240 image
+ cv::Mat img(Size(320,240),CV_8UC3);
+ // select a roi
+ cv::Mat roi(img, Rect(10,10,100,100));
+ // fill the ROI with (0,255,0) (which is green in RGB space);
+ // the original 320x240 image will be modified
+ roi = Scalar(0,255,0);
+ \endcode
+
+ Thanks to the additional cv::Mat::datastart and cv::Mat::dataend members, it is possible to
+ compute the relative sub-matrix position in the main "container" matrix using cv::Mat::locateROI():
+
+ \code
+ Mat A = Mat::eye(10, 10, CV_32S);
+ // extracts A columns, 1 (inclusive) to 3 (exclusive).
+ Mat B = A(Range::all(), Range(1, 3));
+ // extracts B rows, 5 (inclusive) to 9 (exclusive).
+ // that is, C ~ A(Range(5, 9), Range(1, 3))
+ Mat C = B(Range(5, 9), Range::all());
+ Size size; Point ofs;
+ C.locateROI(size, ofs);
+ // size will be (width=10,height=10) and the ofs will be (x=1, y=5)
+ \endcode
+
+ As in the case of whole matrices, if you need a deep copy, use cv::Mat::clone() method
+ of the extracted sub-matrices.
+
+ <li> by making a header for user-allocated-data. It can be useful for
+ <ol>
+ <li> processing "foreign" data using OpenCV (e.g. when you implement
+ a DirectShow filter or a processing module for gstreamer etc.), e.g.
+
+ \code
+ void process_video_frame(const unsigned char* pixels,
+ int width, int height, int step)
+ {
+ cv::Mat img(height, width, CV_8UC3, pixels, step);
+ cv::GaussianBlur(img, img, cv::Size(7,7), 1.5, 1.5);
+ }
+ \endcode
+
+ <li> for quick initialization of small matrices and/or super-fast element access
+
+ \code
+ double m[3][3] = {{a, b, c}, {d, e, f}, {g, h, i}};
+ cv::Mat M = cv::Mat(3, 3, CV_64F, m).inv();
+ \endcode
+ </ol>
+
+ partial yet very common cases of this "user-allocated data" case are conversions
+ from CvMat and IplImage to cv::Mat. For this purpose there are special constructors
+ taking pointers to CvMat or IplImage and the optional
+ flag indicating whether to copy the data or not.
+
+ Backward conversion from cv::Mat to CvMat or IplImage is provided via cast operators
+ cv::Mat::operator CvMat() an cv::Mat::operator IplImage().
+ The operators do not copy the data.
+
+
+ \code
+ IplImage* img = cvLoadImage("greatwave.jpg", 1);
+ Mat mtx(img); // convert IplImage* -> cv::Mat
+ CvMat oldmat = mtx; // convert cv::Mat -> CvMat
+ CV_Assert(oldmat.cols == img->width && oldmat.rows == img->height &&
+ oldmat.data.ptr == (uchar*)img->imageData && oldmat.step == img->widthStep);
+ \endcode
+
+ <li> by using MATLAB-style matrix initializers, cv::Mat::zeros(), cv::Mat::ones(), cv::Mat::eye(), e.g.:
+
+ \code
+ // create a double-precision identity martix and add it to M.
+ M += Mat::eye(M.rows, M.cols, CV_64F);
+ \endcode
+
+ <li> by using comma-separated initializer:
+
+ \code
+ // create 3x3 double-precision identity matrix
+ Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
+ \endcode
+
+ here we first call constructor of cv::Mat_ class (that we describe further) with the proper matrix,
+ and then we just put "<<" operator followed by comma-separated values that can be constants,
+ variables, expressions etc. Also, note the extra parentheses that are needed to avoid compiler errors.
+
+ </ul>
+
+ Once matrix is created, it will be automatically managed by using reference-counting mechanism
+ (unless the matrix header is built on top of user-allocated data,
+ in which case you should handle the data by yourself).
+ The matrix data will be deallocated when no one points to it;
+ if you want to release the data pointed by a matrix header before the matrix destructor is called,
+ use cv::Mat::release().
+
+ The next important thing to learn about the matrix class is element access. Here is how the matrix is stored.
+ The elements are stored in row-major order (row by row). The cv::Mat::data member points to the first element of the first row,
+ cv::Mat::rows contains the number of matrix rows and cv::Mat::cols - the number of matrix columns. There is yet another member,
+ cv::Mat::step that is used to actually compute address of a matrix element. cv::Mat::step is needed because the matrix can be
+ a part of another matrix or because there can some padding space in the end of each row for a proper alignment.
+
+ Given these parameters, address of the matrix element M_{ij} is computed as following:
+
+ addr(M_{ij})=M.data + M.step*i + j*M.elemSize()
+
+ if you know the matrix element type, e.g. it is float, then you can use cv::Mat::at() method:
+
+ addr(M_{ij})=&M.at<float>(i,j)
+
+ (where & is used to convert the reference returned by cv::Mat::at() to a pointer).
+ if you need to process a whole row of matrix, the most efficient way is to get
+ the pointer to the row first, and then just use plain C operator []:
+
+ \code
+ // compute sum of positive matrix elements
+ // (assuming that M is double-precision matrix)
+ double sum=0;
+ for(int i = 0; i < M.rows; i++)
+ {
+ const double* Mi = M.ptr<double>(i);
+ for(int j = 0; j < M.cols; j++)
+ sum += std::max(Mi[j], 0.);
+ }
+ \endcode
+
+ Some operations, like the above one, do not actually depend on the matrix shape,
+ they just process elements of a matrix one by one (or elements from multiple matrices
+ that are sitting in the same place, e.g. matrix addition). Such operations are called
+ element-wise and it makes sense to check whether all the input/output matrices are continuous,
+ i.e. have no gaps in the end of each row, and if yes, process them as a single long row:
+
+ \code
+ // compute sum of positive matrix elements, optimized variant
+ double sum=0;
+ int cols = M.cols, rows = M.rows;
+ if(M.isContinuous())
+ {
+ cols *= rows;
+ rows = 1;
+ }
+ for(int i = 0; i < rows; i++)
+ {
+ const double* Mi = M.ptr<double>(i);
+ for(int j = 0; j < cols; j++)
+ sum += std::max(Mi[j], 0.);
+ }
+ \endcode
+ in the case of continuous matrix the outer loop body will be executed just once,
+ so the overhead will be smaller, which will be especially noticeable in the case of small matrices.
+
+ Finally, there are STL-style iterators that are smart enough to skip gaps between successive rows:
+ \code
+ // compute sum of positive matrix elements, iterator-based variant
+ double sum=0;
+ MatConstIterator_<double> it = M.begin<double>(), it_end = M.end<double>();
+ for(; it != it_end; ++it)
+ sum += std::max(*it, 0.);
+ \endcode
+
+ The matrix iterators are random-access iterators, so they can be passed
+ to any STL algorithm, including std::sort().
+*/
+class CV_EXPORTS Mat
+{
+public:
+ //! default constructor
+ Mat();
+ //! constructs 2D matrix of the specified size and type
+ // (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.)
+ Mat(int rows, int cols, int type);
+ Mat(Size size, int type);
+ //! constucts 2D matrix and fills it with the specified value _s.
+ Mat(int rows, int cols, int type, const Scalar& s);
+ Mat(Size size, int type, const Scalar& s);
+
+ //! constructs n-dimensional matrix
+ Mat(int ndims, const int* sizes, int type);
+ Mat(int ndims, const int* sizes, int type, const Scalar& s);
+
+ //! copy constructor
+ Mat(const Mat& m);
+ //! constructor for matrix headers pointing to user-allocated data
+ Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP);
+ Mat(Size size, int type, void* data, size_t step=AUTO_STEP);
+ Mat(int ndims, const int* sizes, int type, void* data, const size_t* steps=0);
+
+ //! creates a matrix header for a part of the bigger matrix
+ Mat(const Mat& m, const Range& rowRange, const Range& colRange=Range::all());
+ Mat(const Mat& m, const Rect& roi);
+ Mat(const Mat& m, const Range* ranges);
+ //! converts old-style CvMat to the new matrix; the data is not copied by default
+ Mat(const CvMat* m, bool copyData=false);
+ //! converts old-style CvMatND to the new matrix; the data is not copied by default
+ Mat(const CvMatND* m, bool copyData=false);
+ //! converts old-style IplImage to the new matrix; the data is not copied by default
+ Mat(const IplImage* img, bool copyData=false);
+ //! builds matrix from std::vector with or without copying the data
+ template<typename _Tp> explicit Mat(const vector<_Tp>& vec, bool copyData=false);
+ //! builds matrix from cv::Vec; the data is copied by default
+ template<typename _Tp, int n> explicit Mat(const Vec<_Tp, n>& vec, bool copyData=true);
+ //! builds matrix from cv::Matx; the data is copied by default
+ template<typename _Tp, int m, int n> explicit Mat(const Matx<_Tp, m, n>& mtx, bool copyData=true);
+ //! builds matrix from a 2D point
+ template<typename _Tp> explicit Mat(const Point_<_Tp>& pt, bool copyData=true);
+ //! builds matrix from a 3D point
+ template<typename _Tp> explicit Mat(const Point3_<_Tp>& pt, bool copyData=true);
+ //! builds matrix from comma initializer
+ template<typename _Tp> explicit Mat(const MatCommaInitializer_<_Tp>& commaInitializer);
+
+ //! download data from GpuMat
+ explicit Mat(const gpu::GpuMat& m);
+
+ //! destructor - calls release()
+ ~Mat();
+ //! assignment operators
+ Mat& operator = (const Mat& m);
+ Mat& operator = (const MatExpr& expr);
+
+ //! returns a new matrix header for the specified row
+ Mat row(int y) const;
+ //! returns a new matrix header for the specified column
+ Mat col(int x) const;
+ //! ... for the specified row span
+ Mat rowRange(int startrow, int endrow) const;
+ Mat rowRange(const Range& r) const;
+ //! ... for the specified column span
+ Mat colRange(int startcol, int endcol) const;
+ Mat colRange(const Range& r) const;
+ //! ... for the specified diagonal
+ // (d=0 - the main diagonal,
+ // >0 - a diagonal from the lower half,
+ // <0 - a diagonal from the upper half)
+ Mat diag(int d=0) const;
+ //! constructs a square diagonal matrix which main diagonal is vector "d"
+ static Mat diag(const Mat& d);
+
+ //! returns deep copy of the matrix, i.e. the data is copied
+ Mat clone() const;
+ //! copies the matrix content to "m".
+ // It calls m.create(this->size(), this->type()).
+ void copyTo( OutputArray m ) const;
+ //! copies those matrix elements to "m" that are marked with non-zero mask elements.
+ void copyTo( OutputArray m, InputArray mask ) const;
+ //! converts matrix to another datatype with optional scalng. See cvConvertScale.
+ void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const;
+
+ void assignTo( Mat& m, int type=-1 ) const;
+
+ //! sets every matrix element to s
+ Mat& operator = (const Scalar& s);
+ //! sets some of the matrix elements to s, according to the mask
+ Mat& setTo(InputArray value, InputArray mask=noArray());
+ //! creates alternative matrix header for the same data, with different
+ // number of channels and/or different number of rows. see cvReshape.
+ Mat reshape(int cn, int rows=0) const;
+ Mat reshape(int cn, int newndims, const int* newsz) const;
+
+ //! matrix transposition by means of matrix expressions
+ MatExpr t() const;
+ //! matrix inversion by means of matrix expressions
+ MatExpr inv(int method=DECOMP_LU) const;
+ //! per-element matrix multiplication by means of matrix expressions
+ MatExpr mul(InputArray m, double scale=1) const;
+
+ //! computes cross-product of 2 3D vectors
+ Mat cross(InputArray m) const;
+ //! computes dot-product
+ double dot(InputArray m) const;
+
+ //! Matlab-style matrix initialization
+ static MatExpr zeros(int rows, int cols, int type);
+ static MatExpr zeros(Size size, int type);
+ static MatExpr zeros(int ndims, const int* sz, int type);
+ static MatExpr ones(int rows, int cols, int type);
+ static MatExpr ones(Size size, int type);
+ static MatExpr ones(int ndims, const int* sz, int type);
+ static MatExpr eye(int rows, int cols, int type);
+ static MatExpr eye(Size size, int type);
+
+ //! allocates new matrix data unless the matrix already has specified size and type.
+ // previous data is unreferenced if needed.
+ void create(int rows, int cols, int type);
+ void create(Size size, int type);
+ void create(int ndims, const int* sizes, int type);
+
+ //! increases the reference counter; use with care to avoid memleaks
+ void addref();
+ //! decreases reference counter;
+ // deallocates the data when reference counter reaches 0.
+ void release();
+
+ //! deallocates the matrix data
+ void deallocate();
+ //! internal use function; properly re-allocates _size, _step arrays
+ void copySize(const Mat& m);
+
+ //! reserves enough space to fit sz hyper-planes
+ void reserve(size_t sz);
+ //! resizes matrix to the specified number of hyper-planes
+ void resize(size_t sz);
+ //! resizes matrix to the specified number of hyper-planes; initializes the newly added elements
+ void resize(size_t sz, const Scalar& s);
+ //! internal function
+ void push_back_(const void* elem);
+ //! adds element to the end of 1d matrix (or possibly multiple elements when _Tp=Mat)
+ template<typename _Tp> void push_back(const _Tp& elem);
+ template<typename _Tp> void push_back(const Mat_<_Tp>& elem);
+ void push_back(const Mat& m);
+ //! removes several hyper-planes from bottom of the matrix
+ void pop_back(size_t nelems=1);
+
+ //! locates matrix header within a parent matrix. See below
+ void locateROI( Size& wholeSize, Point& ofs ) const;
+ //! moves/resizes the current matrix ROI inside the parent matrix.
+ Mat& adjustROI( int dtop, int dbottom, int dleft, int dright );
+ //! extracts a rectangular sub-matrix
+ // (this is a generalized form of row, rowRange etc.)
+ Mat operator()( Range rowRange, Range colRange ) const;
+ Mat operator()( const Rect& roi ) const;
+ Mat operator()( const Range* ranges ) const;
+
+ //! converts header to CvMat; no data is copied
+ operator CvMat() const;
+ //! converts header to CvMatND; no data is copied
+ operator CvMatND() const;
+ //! converts header to IplImage; no data is copied
+ operator IplImage() const;
+
+ template<typename _Tp> operator vector<_Tp>() const;
+ template<typename _Tp, int n> operator Vec<_Tp, n>() const;
+ template<typename _Tp, int m, int n> operator Matx<_Tp, m, n>() const;
+
+ //! returns true iff the matrix data is continuous
+ // (i.e. when there are no gaps between successive rows).
+ // similar to CV_IS_MAT_CONT(cvmat->type)
+ bool isContinuous() const;
+
+ //! returns true if the matrix is a submatrix of another matrix
+ bool isSubmatrix() const;
+
+ //! returns element size in bytes,
+ // similar to CV_ELEM_SIZE(cvmat->type)
+ size_t elemSize() const;
+ //! returns the size of element channel in bytes.
+ size_t elemSize1() const;
+ //! returns element type, similar to CV_MAT_TYPE(cvmat->type)
+ int type() const;
+ //! returns element type, similar to CV_MAT_DEPTH(cvmat->type)
+ int depth() const;
+ //! returns element type, similar to CV_MAT_CN(cvmat->type)
+ int channels() const;
+ //! returns step/elemSize1()
+ size_t step1(int i=0) const;
+ //! returns true if matrix data is NULL
+ bool empty() const;
+ //! returns the total number of matrix elements
+ size_t total() const;
+
+ //! returns N if the matrix is 1-channel (N x ptdim) or ptdim-channel (1 x N) or (N x 1); negative number otherwise
+ int checkVector(int elemChannels, int depth=-1, bool requireContinuous=true) const;
+
+ //! returns pointer to i0-th submatrix along the dimension #0
+ uchar* ptr(int i0=0);
+ const uchar* ptr(int i0=0) const;
+
+ //! returns pointer to (i0,i1) submatrix along the dimensions #0 and #1
+ uchar* ptr(int i0, int i1);
+ const uchar* ptr(int i0, int i1) const;
+
+ //! returns pointer to (i0,i1,i3) submatrix along the dimensions #0, #1, #2
+ uchar* ptr(int i0, int i1, int i2);
+ const uchar* ptr(int i0, int i1, int i2) const;
+
+ //! returns pointer to the matrix element
+ uchar* ptr(const int* idx);
+ //! returns read-only pointer to the matrix element
+ const uchar* ptr(const int* idx) const;
+
+ template<int n> uchar* ptr(const Vec<int, n>& idx);
+ template<int n> const uchar* ptr(const Vec<int, n>& idx) const;
+
+ //! template version of the above method
+ template<typename _Tp> _Tp* ptr(int i0=0);
+ template<typename _Tp> const _Tp* ptr(int i0=0) const;
+
+ template<typename _Tp> _Tp* ptr(int i0, int i1);
+ template<typename _Tp> const _Tp* ptr(int i0, int i1) const;
+
+ template<typename _Tp> _Tp* ptr(int i0, int i1, int i2);
+ template<typename _Tp> const _Tp* ptr(int i0, int i1, int i2) const;
+
+ template<typename _Tp> _Tp* ptr(const int* idx);
+ template<typename _Tp> const _Tp* ptr(const int* idx) const;
+
+ template<typename _Tp, int n> _Tp* ptr(const Vec<int, n>& idx);
+ template<typename _Tp, int n> const _Tp* ptr(const Vec<int, n>& idx) const;
+
+ //! the same as above, with the pointer dereferencing
+ template<typename _Tp> _Tp& at(int i0=0);
+ template<typename _Tp> const _Tp& at(int i0=0) const;
+
+ template<typename _Tp> _Tp& at(int i0, int i1);
+ template<typename _Tp> const _Tp& at(int i0, int i1) const;
+
+ template<typename _Tp> _Tp& at(int i0, int i1, int i2);
+ template<typename _Tp> const _Tp& at(int i0, int i1, int i2) const;
+
+ template<typename _Tp> _Tp& at(const int* idx);
+ template<typename _Tp> const _Tp& at(const int* idx) const;
+
+ template<typename _Tp, int n> _Tp& at(const Vec<int, n>& idx);
+ template<typename _Tp, int n> const _Tp& at(const Vec<int, n>& idx) const;
+
+ //! special versions for 2D arrays (especially convenient for referencing image pixels)
+ template<typename _Tp> _Tp& at(Point pt);
+ template<typename _Tp> const _Tp& at(Point pt) const;
+
+ //! template methods for iteration over matrix elements.
+ // the iterators take care of skipping gaps in the end of rows (if any)
+ template<typename _Tp> MatIterator_<_Tp> begin();
+ template<typename _Tp> MatIterator_<_Tp> end();
+ template<typename _Tp> MatConstIterator_<_Tp> begin() const;
+ template<typename _Tp> MatConstIterator_<_Tp> end() const;
+
+ enum { MAGIC_VAL=0x42FF0000, AUTO_STEP=0, CONTINUOUS_FLAG=CV_MAT_CONT_FLAG, SUBMATRIX_FLAG=CV_SUBMAT_FLAG };
+
+ /*! includes several bit-fields:
+ - the magic signature
+ - continuity flag
+ - depth
+ - number of channels
+ */
+ int flags;
+ //! the matrix dimensionality, >= 2
+ int dims;
+ //! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
+ int rows, cols;
+ //! pointer to the data
+ uchar* data;
+
+ //! pointer to the reference counter;
+ // when matrix points to user-allocated data, the pointer is NULL
+ int* refcount;
+
+ //! helper fields used in locateROI and adjustROI
+ uchar* datastart;
+ uchar* dataend;
+ uchar* datalimit;
+
+ //! custom allocator
+ MatAllocator* allocator;
+
+ struct CV_EXPORTS MSize
+ {
+ MSize(int* _p);
+ Size operator()() const;
+ const int& operator[](int i) const;
+ int& operator[](int i);
+ operator const int*() const;
+ bool operator == (const MSize& sz) const;
+ bool operator != (const MSize& sz) const;
+
+ int* p;
+ };
+
+ struct CV_EXPORTS MStep
+ {
+ MStep();
+ MStep(size_t s);
+ const size_t& operator[](int i) const;
+ size_t& operator[](int i);
+ operator size_t() const;
+ MStep& operator = (size_t s);
+
+ size_t* p;
+ size_t buf[2];
+ protected:
+ MStep& operator = (const MStep&);
+ };
+
+ MSize size;
+ MStep step;
+
+protected:
+ void initEmpty();
+};
+
+
+/*!
+ Random Number Generator
+
+ The class implements RNG using Multiply-with-Carry algorithm
+*/
+class CV_EXPORTS RNG
+{
+public:
+ enum { UNIFORM=0, NORMAL=1 };
+
+ RNG();
+ RNG(uint64 state);
+ //! updates the state and returns the next 32-bit unsigned integer random number
+ unsigned next();
+
+ operator uchar();
+ operator schar();
+ operator ushort();
+ operator short();
+ operator unsigned();
+ //! returns a random integer sampled uniformly from [0, N).
+ unsigned operator ()(unsigned N);
+ unsigned operator ()();
+ operator int();
+ operator float();
+ operator double();
+ //! returns uniformly distributed integer random number from [a,b) range
+ int uniform(int a, int b);
+ //! returns uniformly distributed floating-point random number from [a,b) range
+ float uniform(float a, float b);
+ //! returns uniformly distributed double-precision floating-point random number from [a,b) range
+ double uniform(double a, double b);
+ void fill( InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange=false );
+ //! returns Gaussian random variate with mean zero.
+ double gaussian(double sigma);
+
+ uint64 state;
+};
+
+/*!
+ Random Number Generator - MT
+
+ The class implements RNG using the Mersenne Twister algorithm
+*/
+class CV_EXPORTS RNG_MT19937
+{
+public:
+ RNG_MT19937();
+ RNG_MT19937(unsigned s);
+ void seed(unsigned s);
+
+ unsigned next();
+
+ operator int();
+ operator unsigned();
+ operator float();
+ operator double();
+
+ unsigned operator ()(unsigned N);
+ unsigned operator ()();
+
+ //! returns uniformly distributed integer random number from [a,b) range
+ int uniform(int a, int b);
+ //! returns uniformly distributed floating-point random number from [a,b) range
+ float uniform(float a, float b);
+ //! returns uniformly distributed double-precision floating-point random number from [a,b) range
+ double uniform(double a, double b);
+
+private:
+ enum PeriodParameters {N = 624, M = 397};
+ unsigned state[N];
+ int mti;
+};
+
+/*!
+ Termination criteria in iterative algorithms
+ */
+class CV_EXPORTS TermCriteria
+{
+public:
+ enum
+ {
+ COUNT=1, //!< the maximum number of iterations or elements to compute
+ MAX_ITER=COUNT, //!< ditto
+ EPS=2 //!< the desired accuracy or change in parameters at which the iterative algorithm stops
+ };
+
+ //! default constructor
+ TermCriteria();
+ //! full constructor
+ TermCriteria(int type, int maxCount, double epsilon);
+ //! conversion from CvTermCriteria
+ TermCriteria(const CvTermCriteria& criteria);
+ //! conversion to CvTermCriteria
+ operator CvTermCriteria() const;
+
+ int type; //!< the type of termination criteria: COUNT, EPS or COUNT + EPS
+ int maxCount; // the maximum number of iterations/elements
+ double epsilon; // the desired accuracy
+};
+
+
+typedef void (*BinaryFunc)(const uchar* src1, size_t step1,
+ const uchar* src2, size_t step2,
+ uchar* dst, size_t step, Size sz,
+ void*);
+
+CV_EXPORTS BinaryFunc getConvertFunc(int sdepth, int ddepth);
+CV_EXPORTS BinaryFunc getConvertScaleFunc(int sdepth, int ddepth);
+CV_EXPORTS BinaryFunc getCopyMaskFunc(size_t esz);
+
+//! swaps two matrices
+CV_EXPORTS void swap(Mat& a, Mat& b);
+
+//! converts array (CvMat or IplImage) to cv::Mat
+CV_EXPORTS Mat cvarrToMat(const CvArr* arr, bool copyData=false,
+ bool allowND=true, int coiMode=0);
+//! extracts Channel of Interest from CvMat or IplImage and makes cv::Mat out of it.
+CV_EXPORTS void extractImageCOI(const CvArr* arr, OutputArray coiimg, int coi=-1);
+//! inserts single-channel cv::Mat into a multi-channel CvMat or IplImage
+CV_EXPORTS void insertImageCOI(InputArray coiimg, CvArr* arr, int coi=-1);
+
+//! adds one matrix to another (dst = src1 + src2)
+CV_EXPORTS_W void add(InputArray src1, InputArray src2, OutputArray dst,
+ InputArray mask=noArray(), int dtype=-1);
+//! subtracts one matrix from another (dst = src1 - src2)
+CV_EXPORTS_W void subtract(InputArray src1, InputArray src2, OutputArray dst,
+ InputArray mask=noArray(), int dtype=-1);
+
+//! computes element-wise weighted product of the two arrays (dst = scale*src1*src2)
+CV_EXPORTS_W void multiply(InputArray src1, InputArray src2,
+ OutputArray dst, double scale=1, int dtype=-1);
+
+//! computes element-wise weighted quotient of the two arrays (dst = scale*src1/src2)
+CV_EXPORTS_W void divide(InputArray src1, InputArray src2, OutputArray dst,
+ double scale=1, int dtype=-1);
+
+//! computes element-wise weighted reciprocal of an array (dst = scale/src2)
+CV_EXPORTS_W void divide(double scale, InputArray src2,
+ OutputArray dst, int dtype=-1);
+
+//! adds scaled array to another one (dst = alpha*src1 + src2)
+CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst);
+
+//! computes weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
+CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
+ double beta, double gamma, OutputArray dst, int dtype=-1);
+
+//! scales array elements, computes absolute values and converts the results to 8-bit unsigned integers: dst(i)=saturate_cast<uchar>abs(src(i)*alpha+beta)
+CV_EXPORTS_W void convertScaleAbs(InputArray src, OutputArray dst,
+ double alpha=1, double beta=0);
+//! transforms array of numbers using a lookup table: dst(i)=lut(src(i))
+CV_EXPORTS_W void LUT(InputArray src, InputArray lut, OutputArray dst,
+ int interpolation=0);
+
+//! computes sum of array elements
+CV_EXPORTS_AS(sumElems) Scalar sum(InputArray src);
+//! computes the number of nonzero array elements
+CV_EXPORTS_W int countNonZero( InputArray src );
+//! returns the list of locations of non-zero pixels
+CV_EXPORTS_W void findNonZero( InputArray src, OutputArray idx );
+
+//! computes mean value of selected array elements
+CV_EXPORTS_W Scalar mean(InputArray src, InputArray mask=noArray());
+//! computes mean value and standard deviation of all or selected array elements
+CV_EXPORTS_W void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev,
+ InputArray mask=noArray());
+//! computes norm of the selected array part
+CV_EXPORTS_W double norm(InputArray src1, int normType=NORM_L2, InputArray mask=noArray());
+//! computes norm of selected part of the difference between two arrays
+CV_EXPORTS_W double norm(InputArray src1, InputArray src2,
+ int normType=NORM_L2, InputArray mask=noArray());
+
+//! naive nearest neighbor finder
+CV_EXPORTS_W void batchDistance(InputArray src1, InputArray src2,
+ OutputArray dist, int dtype, OutputArray nidx,
+ int normType=NORM_L2, int K=0,
+ InputArray mask=noArray(), int update=0,
+ bool crosscheck=false);
+
+//! scales and shifts array elements so that either the specified norm (alpha) or the minimum (alpha) and maximum (beta) array values get the specified values
+CV_EXPORTS_W void normalize( InputArray src, OutputArray dst, double alpha=1, double beta=0,
+ int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray());
+
+//! finds global minimum and maximum array elements and returns their values and their locations
+CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,
+ CV_OUT double* maxVal=0, CV_OUT Point* minLoc=0,
+ CV_OUT Point* maxLoc=0, InputArray mask=noArray());
+CV_EXPORTS void minMaxIdx(InputArray src, double* minVal, double* maxVal,
+ int* minIdx=0, int* maxIdx=0, InputArray mask=noArray());
+
+//! transforms 2D matrix to 1D row or column vector by taking sum, minimum, maximum or mean value over all the rows
+CV_EXPORTS_W void reduce(InputArray src, OutputArray dst, int dim, int rtype, int dtype=-1);
+
+//! makes multi-channel array out of several single-channel arrays
+CV_EXPORTS void merge(const Mat* mv, size_t count, OutputArray dst);
+CV_EXPORTS void merge(const vector<Mat>& mv, OutputArray dst );
+
+//! makes multi-channel array out of several single-channel arrays
+CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst);
+
+//! copies each plane of a multi-channel array to a dedicated array
+CV_EXPORTS void split(const Mat& src, Mat* mvbegin);
+CV_EXPORTS void split(const Mat& m, vector<Mat>& mv );
+
+//! copies each plane of a multi-channel array to a dedicated array
+CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv);
+
+//! copies selected channels from the input arrays to the selected channels of the output arrays
+CV_EXPORTS void mixChannels(const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts,
+ const int* fromTo, size_t npairs);
+CV_EXPORTS void mixChannels(const vector<Mat>& src, vector<Mat>& dst,
+ const int* fromTo, size_t npairs);
+CV_EXPORTS_W void mixChannels(InputArrayOfArrays src, InputArrayOfArrays dst,
+ const vector<int>& fromTo);
+
+//! extracts a single channel from src (coi is 0-based index)
+CV_EXPORTS_W void extractChannel(InputArray src, OutputArray dst, int coi);
+
+//! inserts a single channel to dst (coi is 0-based index)
+CV_EXPORTS_W void insertChannel(InputArray src, InputOutputArray dst, int coi);
+
+//! reverses the order of the rows, columns or both in a matrix
+CV_EXPORTS_W void flip(InputArray src, OutputArray dst, int flipCode);
+
+//! replicates the input matrix the specified number of times in the horizontal and/or vertical direction
+CV_EXPORTS_W void repeat(InputArray src, int ny, int nx, OutputArray dst);
+CV_EXPORTS Mat repeat(const Mat& src, int ny, int nx);
+
+CV_EXPORTS void hconcat(const Mat* src, size_t nsrc, OutputArray dst);
+CV_EXPORTS void hconcat(InputArray src1, InputArray src2, OutputArray dst);
+CV_EXPORTS_W void hconcat(InputArrayOfArrays src, OutputArray dst);
+
+CV_EXPORTS void vconcat(const Mat* src, size_t nsrc, OutputArray dst);
+CV_EXPORTS void vconcat(InputArray src1, InputArray src2, OutputArray dst);
+CV_EXPORTS_W void vconcat(InputArrayOfArrays src, OutputArray dst);
+
+//! computes bitwise conjunction of the two arrays (dst = src1 & src2)
+CV_EXPORTS_W void bitwise_and(InputArray src1, InputArray src2,
+ OutputArray dst, InputArray mask=noArray());
+//! computes bitwise disjunction of the two arrays (dst = src1 | src2)
+CV_EXPORTS_W void bitwise_or(InputArray src1, InputArray src2,
+ OutputArray dst, InputArray mask=noArray());
+//! computes bitwise exclusive-or of the two arrays (dst = src1 ^ src2)
+CV_EXPORTS_W void bitwise_xor(InputArray src1, InputArray src2,
+ OutputArray dst, InputArray mask=noArray());
+//! inverts each bit of array (dst = ~src)
+CV_EXPORTS_W void bitwise_not(InputArray src, OutputArray dst,
+ InputArray mask=noArray());
+//! computes element-wise absolute difference of two arrays (dst = abs(src1 - src2))
+CV_EXPORTS_W void absdiff(InputArray src1, InputArray src2, OutputArray dst);
+//! set mask elements for those array elements which are within the element-specific bounding box (dst = lowerb <= src && src < upperb)
+CV_EXPORTS_W void inRange(InputArray src, InputArray lowerb,
+ InputArray upperb, OutputArray dst);
+//! compares elements of two arrays (dst = src1 \<cmpop\> src2)
+CV_EXPORTS_W void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop);
+//! computes per-element minimum of two arrays (dst = min(src1, src2))
+CV_EXPORTS_W void min(InputArray src1, InputArray src2, OutputArray dst);
+//! computes per-element maximum of two arrays (dst = max(src1, src2))
+CV_EXPORTS_W void max(InputArray src1, InputArray src2, OutputArray dst);
+
+//! computes per-element minimum of two arrays (dst = min(src1, src2))
+CV_EXPORTS void min(const Mat& src1, const Mat& src2, Mat& dst);
+//! computes per-element minimum of array and scalar (dst = min(src1, src2))
+CV_EXPORTS void min(const Mat& src1, double src2, Mat& dst);
+//! computes per-element maximum of two arrays (dst = max(src1, src2))
+CV_EXPORTS void max(const Mat& src1, const Mat& src2, Mat& dst);
+//! computes per-element maximum of array and scalar (dst = max(src1, src2))
+CV_EXPORTS void max(const Mat& src1, double src2, Mat& dst);
+
+//! computes square root of each matrix element (dst = src**0.5)
+CV_EXPORTS_W void sqrt(InputArray src, OutputArray dst);
+//! raises the input matrix elements to the specified power (b = a**power)
+CV_EXPORTS_W void pow(InputArray src, double power, OutputArray dst);
+//! computes exponent of each matrix element (dst = e**src)
+CV_EXPORTS_W void exp(InputArray src, OutputArray dst);
+//! computes natural logarithm of absolute value of each matrix element: dst = log(abs(src))
+CV_EXPORTS_W void log(InputArray src, OutputArray dst);
+//! computes cube root of the argument
+CV_EXPORTS_W float cubeRoot(float val);
+//! computes the angle in degrees (0..360) of the vector (x,y)
+CV_EXPORTS_W float fastAtan2(float y, float x);
+
+CV_EXPORTS void exp(const float* src, float* dst, int n);
+CV_EXPORTS void log(const float* src, float* dst, int n);
+CV_EXPORTS void fastAtan2(const float* y, const float* x, float* dst, int n, bool angleInDegrees);
+CV_EXPORTS void magnitude(const float* x, const float* y, float* dst, int n);
+
+//! converts polar coordinates to Cartesian
+CV_EXPORTS_W void polarToCart(InputArray magnitude, InputArray angle,
+ OutputArray x, OutputArray y, bool angleInDegrees=false);
+//! converts Cartesian coordinates to polar
+CV_EXPORTS_W void cartToPolar(InputArray x, InputArray y,
+ OutputArray magnitude, OutputArray angle,
+ bool angleInDegrees=false);
+//! computes angle (angle(i)) of each (x(i), y(i)) vector
+CV_EXPORTS_W void phase(InputArray x, InputArray y, OutputArray angle,
+ bool angleInDegrees=false);
+//! computes magnitude (magnitude(i)) of each (x(i), y(i)) vector
+CV_EXPORTS_W void magnitude(InputArray x, InputArray y, OutputArray magnitude);
+//! checks that each matrix element is within the specified range.
+CV_EXPORTS_W bool checkRange(InputArray a, bool quiet=true, CV_OUT Point* pos=0,
+ double minVal=-DBL_MAX, double maxVal=DBL_MAX);
+//! converts NaN's to the given number
+CV_EXPORTS_W void patchNaNs(InputOutputArray a, double val=0);
+
+//! implements generalized matrix product algorithm GEMM from BLAS
+CV_EXPORTS_W void gemm(InputArray src1, InputArray src2, double alpha,
+ InputArray src3, double beta, OutputArray dst, int flags=0);
+//! multiplies matrix by its transposition from the left or from the right
+CV_EXPORTS_W void mulTransposed( InputArray src, OutputArray dst, bool aTa,
+ InputArray delta=noArray(),
+ double scale=1, int dtype=-1 );
+//! transposes the matrix
+CV_EXPORTS_W void transpose(InputArray src, OutputArray dst);
+//! performs affine transformation of each element of multi-channel input matrix
+CV_EXPORTS_W void transform(InputArray src, OutputArray dst, InputArray m );
+//! performs perspective transformation of each element of multi-channel input matrix
+CV_EXPORTS_W void perspectiveTransform(InputArray src, OutputArray dst, InputArray m );
+
+//! extends the symmetrical matrix from the lower half or from the upper half
+CV_EXPORTS_W void completeSymm(InputOutputArray mtx, bool lowerToUpper=false);
+//! initializes scaled identity matrix
+CV_EXPORTS_W void setIdentity(InputOutputArray mtx, const Scalar& s=Scalar(1));
+//! computes determinant of a square matrix
+CV_EXPORTS_W double determinant(InputArray mtx);
+//! computes trace of a matrix
+CV_EXPORTS_W Scalar trace(InputArray mtx);
+//! computes inverse or pseudo-inverse matrix
+CV_EXPORTS_W double invert(InputArray src, OutputArray dst, int flags=DECOMP_LU);
+//! solves linear system or a least-square problem
+CV_EXPORTS_W bool solve(InputArray src1, InputArray src2,
+ OutputArray dst, int flags=DECOMP_LU);
+
+enum
+{
+ SORT_EVERY_ROW=0,
+ SORT_EVERY_COLUMN=1,
+ SORT_ASCENDING=0,
+ SORT_DESCENDING=16
+};
+
+//! sorts independently each matrix row or each matrix column
+CV_EXPORTS_W void sort(InputArray src, OutputArray dst, int flags);
+//! sorts independently each matrix row or each matrix column
+CV_EXPORTS_W void sortIdx(InputArray src, OutputArray dst, int flags);
+//! finds real roots of a cubic polynomial
+CV_EXPORTS_W int solveCubic(InputArray coeffs, OutputArray roots);
+//! finds real and complex roots of a polynomial
+CV_EXPORTS_W double solvePoly(InputArray coeffs, OutputArray roots, int maxIters=300);
+//! finds eigenvalues of a symmetric matrix
+CV_EXPORTS bool eigen(InputArray src, OutputArray eigenvalues, int lowindex=-1,
+ int highindex=-1);
+//! finds eigenvalues and eigenvectors of a symmetric matrix
+CV_EXPORTS bool eigen(InputArray src, OutputArray eigenvalues,
+ OutputArray eigenvectors,
+ int lowindex=-1, int highindex=-1);
+CV_EXPORTS_W bool eigen(InputArray src, bool computeEigenvectors,
+ OutputArray eigenvalues, OutputArray eigenvectors);
+
+enum
+{
+ COVAR_SCRAMBLED=0,
+ COVAR_NORMAL=1,
+ COVAR_USE_AVG=2,
+ COVAR_SCALE=4,
+ COVAR_ROWS=8,
+ COVAR_COLS=16
+};
+
+//! computes covariation matrix of a set of samples
+CV_EXPORTS void calcCovarMatrix( const Mat* samples, int nsamples, Mat& covar, Mat& mean,
+ int flags, int ctype=CV_64F);
+//! computes covariation matrix of a set of samples
+CV_EXPORTS_W void calcCovarMatrix( InputArray samples, OutputArray covar,
+ OutputArray mean, int flags, int ctype=CV_64F);
+
+/*!
+ Principal Component Analysis
+
+ The class PCA is used to compute the special basis for a set of vectors.
+ The basis will consist of eigenvectors of the covariance matrix computed
+ from the input set of vectors. After PCA is performed, vectors can be transformed from
+ the original high-dimensional space to the subspace formed by a few most
+ prominent eigenvectors (called the principal components),
+ corresponding to the largest eigenvalues of the covariation matrix.
+ Thus the dimensionality of the vector and the correlation between the coordinates is reduced.
+
+ The following sample is the function that takes two matrices. The first one stores the set
+ of vectors (a row per vector) that is used to compute PCA, the second one stores another
+ "test" set of vectors (a row per vector) that are first compressed with PCA,
+ then reconstructed back and then the reconstruction error norm is computed and printed for each vector.
+
+ \code
+ using namespace cv;
+
+ PCA compressPCA(const Mat& pcaset, int maxComponents,
+ const Mat& testset, Mat& compressed)
+ {
+ PCA pca(pcaset, // pass the data
+ Mat(), // we do not have a pre-computed mean vector,
+ // so let the PCA engine to compute it
+ CV_PCA_DATA_AS_ROW, // indicate that the vectors
+ // are stored as matrix rows
+ // (use CV_PCA_DATA_AS_COL if the vectors are
+ // the matrix columns)
+ maxComponents // specify, how many principal components to retain
+ );
+ // if there is no test data, just return the computed basis, ready-to-use
+ if( !testset.data )
+ return pca;
+ CV_Assert( testset.cols == pcaset.cols );
+
+ compressed.create(testset.rows, maxComponents, testset.type());
+
+ Mat reconstructed;
+ for( int i = 0; i < testset.rows; i++ )
+ {
+ Mat vec = testset.row(i), coeffs = compressed.row(i), reconstructed;
+ // compress the vector, the result will be stored
+ // in the i-th row of the output matrix
+ pca.project(vec, coeffs);
+ // and then reconstruct it
+ pca.backProject(coeffs, reconstructed);
+ // and measure the error
+ printf("%d. diff = %g\n", i, norm(vec, reconstructed, NORM_L2));
+ }
+ return pca;
+ }
+ \endcode
+*/
+class CV_EXPORTS PCA
+{
+public:
+ //! default constructor
+ PCA();
+ //! the constructor that performs PCA
+ PCA(InputArray data, InputArray mean, int flags, int maxComponents=0);
+ PCA(InputArray data, InputArray mean, int flags, double retainedVariance);
+ //! operator that performs PCA. The previously stored data, if any, is released
+ PCA& operator()(InputArray data, InputArray mean, int flags, int maxComponents=0);
+ PCA& computeVar(InputArray data, InputArray mean, int flags, double retainedVariance);
+ //! projects vector from the original space to the principal components subspace
+ Mat project(InputArray vec) const;
+ //! projects vector from the original space to the principal components subspace
+ void project(InputArray vec, OutputArray result) const;
+ //! reconstructs the original vector from the projection
+ Mat backProject(InputArray vec) const;
+ //! reconstructs the original vector from the projection
+ void backProject(InputArray vec, OutputArray result) const;
+
+ Mat eigenvectors; //!< eigenvectors of the covariation matrix
+ Mat eigenvalues; //!< eigenvalues of the covariation matrix
+ Mat mean; //!< mean value subtracted before the projection and added after the back projection
+};
+
+CV_EXPORTS_W void PCACompute(InputArray data, CV_OUT InputOutputArray mean,
+ OutputArray eigenvectors, int maxComponents=0);
+
+CV_EXPORTS_W void PCAComputeVar(InputArray data, CV_OUT InputOutputArray mean,
+ OutputArray eigenvectors, double retainedVariance);
+
+CV_EXPORTS_W void PCAProject(InputArray data, InputArray mean,
+ InputArray eigenvectors, OutputArray result);
+
+CV_EXPORTS_W void PCABackProject(InputArray data, InputArray mean,
+ InputArray eigenvectors, OutputArray result);
+
+
+/*!
+ Singular Value Decomposition class
+
+ The class is used to compute Singular Value Decomposition of a floating-point matrix and then
+ use it to solve least-square problems, under-determined linear systems, invert matrices,
+ compute condition numbers etc.
+
+ For a bit faster operation you can pass flags=SVD::MODIFY_A|... to modify the decomposed matrix
+ when it is not necessarily to preserve it. If you want to compute condition number of a matrix
+ or absolute value of its determinant - you do not need SVD::u or SVD::vt,
+ so you can pass flags=SVD::NO_UV|... . Another flag SVD::FULL_UV indicates that the full-size SVD::u and SVD::vt
+ must be computed, which is not necessary most of the time.
+*/
+class CV_EXPORTS SVD
+{
+public:
+ enum { MODIFY_A=1, NO_UV=2, FULL_UV=4 };
+ //! the default constructor
+ SVD();
+ //! the constructor that performs SVD
+ SVD( InputArray src, int flags=0 );
+ //! the operator that performs SVD. The previously allocated SVD::u, SVD::w are SVD::vt are released.
+ SVD& operator ()( InputArray src, int flags=0 );
+
+ //! decomposes matrix and stores the results to user-provided matrices
+ static void compute( InputArray src, OutputArray w,
+ OutputArray u, OutputArray vt, int flags=0 );
+ //! computes singular values of a matrix
+ static void compute( InputArray src, OutputArray w, int flags=0 );
+ //! performs back substitution
+ static void backSubst( InputArray w, InputArray u,
+ InputArray vt, InputArray rhs,
+ OutputArray dst );
+
+ template<typename _Tp, int m, int n, int nm> static void compute( const Matx<_Tp, m, n>& a,
+ Matx<_Tp, nm, 1>& w, Matx<_Tp, m, nm>& u, Matx<_Tp, n, nm>& vt );
+ template<typename _Tp, int m, int n, int nm> static void compute( const Matx<_Tp, m, n>& a,
+ Matx<_Tp, nm, 1>& w );
+ template<typename _Tp, int m, int n, int nm, int nb> static void backSubst( const Matx<_Tp, nm, 1>& w,
+ const Matx<_Tp, m, nm>& u, const Matx<_Tp, n, nm>& vt, const Matx<_Tp, m, nb>& rhs, Matx<_Tp, n, nb>& dst );
+
+ //! finds dst = arg min_{|dst|=1} |m*dst|
+ static void solveZ( InputArray src, OutputArray dst );
+ //! performs back substitution, so that dst is the solution or pseudo-solution of m*dst = rhs, where m is the decomposed matrix
+ void backSubst( InputArray rhs, OutputArray dst ) const;
+
+ Mat u, w, vt;
+};
+
+//! computes SVD of src
+CV_EXPORTS_W void SVDecomp( InputArray src, CV_OUT OutputArray w,
+ CV_OUT OutputArray u, CV_OUT OutputArray vt, int flags=0 );
+
+//! performs back substitution for the previously computed SVD
+CV_EXPORTS_W void SVBackSubst( InputArray w, InputArray u, InputArray vt,
+ InputArray rhs, CV_OUT OutputArray dst );
+
+//! computes Mahalanobis distance between two vectors: sqrt((v1-v2)'*icovar*(v1-v2)), where icovar is the inverse covariation matrix
+CV_EXPORTS_W double Mahalanobis(InputArray v1, InputArray v2, InputArray icovar);
+//! a synonym for Mahalanobis
+CV_EXPORTS double Mahalonobis(InputArray v1, InputArray v2, InputArray icovar);
+
+//! performs forward or inverse 1D or 2D Discrete Fourier Transformation
+CV_EXPORTS_W void dft(InputArray src, OutputArray dst, int flags=0, int nonzeroRows=0);
+//! performs inverse 1D or 2D Discrete Fourier Transformation
+CV_EXPORTS_W void idft(InputArray src, OutputArray dst, int flags=0, int nonzeroRows=0);
+//! performs forward or inverse 1D or 2D Discrete Cosine Transformation
+CV_EXPORTS_W void dct(InputArray src, OutputArray dst, int flags=0);
+//! performs inverse 1D or 2D Discrete Cosine Transformation
+CV_EXPORTS_W void idct(InputArray src, OutputArray dst, int flags=0);
+//! computes element-wise product of the two Fourier spectrums. The second spectrum can optionally be conjugated before the multiplication
+CV_EXPORTS_W void mulSpectrums(InputArray a, InputArray b, OutputArray c,
+ int flags, bool conjB=false);
+//! computes the minimal vector size vecsize1 >= vecsize so that the dft() of the vector of length vecsize1 can be computed efficiently
+CV_EXPORTS_W int getOptimalDFTSize(int vecsize);
+
+/*!
+ Various k-Means flags
+*/
+enum
+{
+ KMEANS_RANDOM_CENTERS=0, // Chooses random centers for k-Means initialization
+ KMEANS_PP_CENTERS=2, // Uses k-Means++ algorithm for initialization
+ KMEANS_USE_INITIAL_LABELS=1 // Uses the user-provided labels for K-Means initialization
+};
+//! clusters the input data using k-Means algorithm
+CV_EXPORTS_W double kmeans( InputArray data, int K, CV_OUT InputOutputArray bestLabels,
+ TermCriteria criteria, int attempts,
+ int flags, OutputArray centers=noArray() );
+
+//! returns the thread-local Random number generator
+CV_EXPORTS RNG& theRNG();
+
+//! sets state of the thread-local Random number generator
+CV_EXPORTS_W void setRNGSeed(int seed);
+
+//! returns the next unifomly-distributed random number of the specified type
+template<typename _Tp> static inline _Tp randu() { return (_Tp)theRNG(); }
+
+//! fills array with uniformly-distributed random numbers from the range [low, high)
+CV_EXPORTS_W void randu(InputOutputArray dst, InputArray low, InputArray high);
+
+//! fills array with normally-distributed random numbers with the specified mean and the standard deviation
+CV_EXPORTS_W void randn(InputOutputArray dst, InputArray mean, InputArray stddev);
+
+//! shuffles the input array elements
+CV_EXPORTS void randShuffle(InputOutputArray dst, double iterFactor=1., RNG* rng=0);
+CV_EXPORTS_AS(randShuffle) void randShuffle_(InputOutputArray dst, double iterFactor=1.);
+
+//! draws the line segment (pt1, pt2) in the image
+CV_EXPORTS_W void line(CV_IN_OUT Mat& img, Point pt1, Point pt2, const Scalar& color,
+ int thickness=1, int lineType=8, int shift=0);
+
+//! draws an arrow from pt1 to pt2 in the image
+CV_EXPORTS_W void arrowedLine(CV_IN_OUT Mat& img, Point pt1, Point pt2, const Scalar& color,
+ int thickness=1, int line_type=8, int shift=0, double tipLength=0.1);
+
+//! draws the rectangle outline or a solid rectangle with the opposite corners pt1 and pt2 in the image
+CV_EXPORTS_W void rectangle(CV_IN_OUT Mat& img, Point pt1, Point pt2,
+ const Scalar& color, int thickness=1,
+ int lineType=8, int shift=0);
+
+//! draws the rectangle outline or a solid rectangle covering rec in the image
+CV_EXPORTS void rectangle(CV_IN_OUT Mat& img, Rect rec,
+ const Scalar& color, int thickness=1,
+ int lineType=8, int shift=0);
+
+//! draws the circle outline or a solid circle in the image
+CV_EXPORTS_W void circle(CV_IN_OUT Mat& img, Point center, int radius,
+ const Scalar& color, int thickness=1,
+ int lineType=8, int shift=0);
+
+//! draws an elliptic arc, ellipse sector or a rotated ellipse in the image
+CV_EXPORTS_W void ellipse(CV_IN_OUT Mat& img, Point center, Size axes,
+ double angle, double startAngle, double endAngle,
+ const Scalar& color, int thickness=1,
+ int lineType=8, int shift=0);
+
+//! draws a rotated ellipse in the image
+CV_EXPORTS_W void ellipse(CV_IN_OUT Mat& img, const RotatedRect& box, const Scalar& color,
+ int thickness=1, int lineType=8);
+
+/* ----------------------------------------------------------------------------------------- */
+/* ADDING A SET OF PREDEFINED MARKERS WHICH COULD BE USED TO HIGHLIGHT POSITIONS IN AN IMAGE */
+/* ----------------------------------------------------------------------------------------- */
+
+//! Possible set of marker types used for the drawMarker function
+enum MarkerTypes
+{
+ MARKER_CROSS = 0, // A crosshair marker shape
+ MARKER_TILTED_CROSS = 1, // A 45 degree tilted crosshair marker shape
+ MARKER_STAR = 2, // A star marker shape, combination of cross and tilted cross
+ MARKER_DIAMOND = 3, // A diamond marker shape
+ MARKER_SQUARE = 4, // A square marker shape
+ MARKER_TRIANGLE_UP = 5, // An upwards pointing triangle marker shape
+ MARKER_TRIANGLE_DOWN = 6 // A downwards pointing triangle marker shape
+};
+
+/** @brief Draws a marker on a predefined position in an image.
+
+The function drawMarker draws a marker on a given position in the image. For the moment several
+marker types are supported (`MARKER_CROSS`, `MARKER_TILTED_CROSS`, `MARKER_STAR`, `MARKER_DIAMOND`, `MARKER_SQUARE`,
+`MARKER_TRIANGLE_UP` and `MARKER_TRIANGLE_DOWN`).
+
+@param img Image.
+@param position The point where the crosshair is positioned.
+@param markerType The specific type of marker you want to use, see
+@param color Line color.
+@param thickness Line thickness.
+@param line_type Type of the line, see cv::LineTypes
+@param markerSize The length of the marker axis [default = 20 pixels]
+ */
+CV_EXPORTS_W void drawMarker(CV_IN_OUT Mat& img, Point position, const Scalar& color,
+ int markerType = MARKER_CROSS, int markerSize=20, int thickness=1,
+ int line_type=8);
+
+/* ----------------------------------------------------------------------------------------- */
+/* END OF MARKER SECTION */
+/* ----------------------------------------------------------------------------------------- */
+
+//! draws a filled convex polygon in the image
+CV_EXPORTS void fillConvexPoly(Mat& img, const Point* pts, int npts,
+ const Scalar& color, int lineType=8,
+ int shift=0);
+CV_EXPORTS_W void fillConvexPoly(InputOutputArray img, InputArray points,
+ const Scalar& color, int lineType=8,
+ int shift=0);
+
+//! fills an area bounded by one or more polygons
+CV_EXPORTS void fillPoly(Mat& img, const Point** pts,
+ const int* npts, int ncontours,
+ const Scalar& color, int lineType=8, int shift=0,
+ Point offset=Point() );
+
+CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,
+ const Scalar& color, int lineType=8, int shift=0,
+ Point offset=Point() );
+
+//! draws one or more polygonal curves
+CV_EXPORTS void polylines(Mat& img, const Point** pts, const int* npts,
+ int ncontours, bool isClosed, const Scalar& color,
+ int thickness=1, int lineType=8, int shift=0 );
+
+CV_EXPORTS_W void polylines(InputOutputArray img, InputArrayOfArrays pts,
+ bool isClosed, const Scalar& color,
+ int thickness=1, int lineType=8, int shift=0 );
+
+//! clips the line segment by the rectangle Rect(0, 0, imgSize.width, imgSize.height)
+CV_EXPORTS bool clipLine(Size imgSize, CV_IN_OUT Point& pt1, CV_IN_OUT Point& pt2);
+
+//! clips the line segment by the rectangle imgRect
+CV_EXPORTS_W bool clipLine(Rect imgRect, CV_OUT CV_IN_OUT Point& pt1, CV_OUT CV_IN_OUT Point& pt2);
+
+/*!
+ Line iterator class
+
+ The class is used to iterate over all the pixels on the raster line
+ segment connecting two specified points.
+*/
+class CV_EXPORTS LineIterator
+{
+public:
+ //! intializes the iterator
+ LineIterator( const Mat& img, Point pt1, Point pt2,
+ int connectivity=8, bool leftToRight=false );
+ //! returns pointer to the current pixel
+ uchar* operator *();
+ //! prefix increment operator (++it). shifts iterator to the next pixel
+ LineIterator& operator ++();
+ //! postfix increment operator (it++). shifts iterator to the next pixel
+ LineIterator operator ++(int);
+ //! returns coordinates of the current pixel
+ Point pos() const;
+
+ uchar* ptr;
+ const uchar* ptr0;
+ int step, elemSize;
+ int err, count;
+ int minusDelta, plusDelta;
+ int minusStep, plusStep;
+};
+
+//! converts elliptic arc to a polygonal curve
+CV_EXPORTS_W void ellipse2Poly( Point center, Size axes, int angle,
+ int arcStart, int arcEnd, int delta,
+ CV_OUT vector<Point>& pts );
+
+enum
+{
+ FONT_HERSHEY_SIMPLEX = 0,
+ FONT_HERSHEY_PLAIN = 1,
+ FONT_HERSHEY_DUPLEX = 2,
+ FONT_HERSHEY_COMPLEX = 3,
+ FONT_HERSHEY_TRIPLEX = 4,
+ FONT_HERSHEY_COMPLEX_SMALL = 5,
+ FONT_HERSHEY_SCRIPT_SIMPLEX = 6,
+ FONT_HERSHEY_SCRIPT_COMPLEX = 7,
+ FONT_ITALIC = 16
+};
+
+//! renders text string in the image
+CV_EXPORTS_W void putText( Mat& img, const string& text, Point org,
+ int fontFace, double fontScale, Scalar color,
+ int thickness=1, int lineType=8,
+ bool bottomLeftOrigin=false );
+
+//! returns bounding box of the text string
+CV_EXPORTS_W Size getTextSize(const string& text, int fontFace,
+ double fontScale, int thickness,
+ CV_OUT int* baseLine);
+
+///////////////////////////////// Mat_<_Tp> ////////////////////////////////////
+
+/*!
+ Template matrix class derived from Mat
+
+ The class Mat_ is a "thin" template wrapper on top of cv::Mat. It does not have any extra data fields,
+ nor it or cv::Mat have any virtual methods and thus references or pointers to these two classes
+ can be safely converted one to another. But do it with care, for example:
+
+ \code
+ // create 100x100 8-bit matrix
+ Mat M(100,100,CV_8U);
+ // this will compile fine. no any data conversion will be done.
+ Mat_<float>& M1 = (Mat_<float>&)M;
+ // the program will likely crash at the statement below
+ M1(99,99) = 1.f;
+ \endcode
+
+ While cv::Mat is sufficient in most cases, cv::Mat_ can be more convenient if you use a lot of element
+ access operations and if you know matrix type at compile time.
+ Note that cv::Mat::at\<_Tp\>(int y, int x) and cv::Mat_\<_Tp\>::operator ()(int y, int x) do absolutely the
+ same thing and run at the same speed, but the latter is certainly shorter:
+
+ \code
+ Mat_<double> M(20,20);
+ for(int i = 0; i < M.rows; i++)
+ for(int j = 0; j < M.cols; j++)
+ M(i,j) = 1./(i+j+1);
+ Mat E, V;
+ eigen(M,E,V);
+ cout << E.at<double>(0,0)/E.at<double>(M.rows-1,0);
+ \endcode
+
+ It is easy to use Mat_ for multi-channel images/matrices - just pass cv::Vec as cv::Mat_ template parameter:
+
+ \code
+ // allocate 320x240 color image and fill it with green (in RGB space)
+ Mat_<Vec3b> img(240, 320, Vec3b(0,255,0));
+ // now draw a diagonal white line
+ for(int i = 0; i < 100; i++)
+ img(i,i)=Vec3b(255,255,255);
+ // and now modify the 2nd (red) channel of each pixel
+ for(int i = 0; i < img.rows; i++)
+ for(int j = 0; j < img.cols; j++)
+ img(i,j)[2] ^= (uchar)(i ^ j); // img(y,x)[c] accesses c-th channel of the pixel (x,y)
+ \endcode
+*/
+template<typename _Tp> class Mat_ : public Mat
+{
+public:
+ typedef _Tp value_type;
+ typedef typename DataType<_Tp>::channel_type channel_type;
+ typedef MatIterator_<_Tp> iterator;
+ typedef MatConstIterator_<_Tp> const_iterator;
+
+ //! default constructor
+ Mat_();
+ //! equivalent to Mat(_rows, _cols, DataType<_Tp>::type)
+ Mat_(int _rows, int _cols);
+ //! constructor that sets each matrix element to specified value
+ Mat_(int _rows, int _cols, const _Tp& value);
+ //! equivalent to Mat(_size, DataType<_Tp>::type)
+ explicit Mat_(Size _size);
+ //! constructor that sets each matrix element to specified value
+ Mat_(Size _size, const _Tp& value);
+ //! n-dim array constructor
+ Mat_(int _ndims, const int* _sizes);
+ //! n-dim array constructor that sets each matrix element to specified value
+ Mat_(int _ndims, const int* _sizes, const _Tp& value);
+ //! copy/conversion contructor. If m is of different type, it's converted
+ Mat_(const Mat& m);
+ //! copy constructor
+ Mat_(const Mat_& m);
+ //! constructs a matrix on top of user-allocated data. step is in bytes(!!!), regardless of the type
+ Mat_(int _rows, int _cols, _Tp* _data, size_t _step=AUTO_STEP);
+ //! constructs n-dim matrix on top of user-allocated data. steps are in bytes(!!!), regardless of the type
+ Mat_(int _ndims, const int* _sizes, _Tp* _data, const size_t* _steps=0);
+ //! selects a submatrix
+ Mat_(const Mat_& m, const Range& rowRange, const Range& colRange=Range::all());
+ //! selects a submatrix
+ Mat_(const Mat_& m, const Rect& roi);
+ //! selects a submatrix, n-dim version
+ Mat_(const Mat_& m, const Range* ranges);
+ //! from a matrix expression
+ explicit Mat_(const MatExpr& e);
+ //! makes a matrix out of Vec, std::vector, Point_ or Point3_. The matrix will have a single column
+ explicit Mat_(const vector<_Tp>& vec, bool copyData=false);
+ template<int n> explicit Mat_(const Vec<typename DataType<_Tp>::channel_type, n>& vec, bool copyData=true);
+ template<int m, int n> explicit Mat_(const Matx<typename DataType<_Tp>::channel_type, m, n>& mtx, bool copyData=true);
+ explicit Mat_(const Point_<typename DataType<_Tp>::channel_type>& pt, bool copyData=true);
+ explicit Mat_(const Point3_<typename DataType<_Tp>::channel_type>& pt, bool copyData=true);
+ explicit Mat_(const MatCommaInitializer_<_Tp>& commaInitializer);
+
+ Mat_& operator = (const Mat& m);
+ Mat_& operator = (const Mat_& m);
+ //! set all the elements to s.
+ Mat_& operator = (const _Tp& s);
+ //! assign a matrix expression
+ Mat_& operator = (const MatExpr& e);
+
+ //! iterators; they are smart enough to skip gaps in the end of rows
+ iterator begin();
+ iterator end();
+ const_iterator begin() const;
+ const_iterator end() const;
+
+ //! equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type)
+ void create(int _rows, int _cols);
+ //! equivalent to Mat::create(_size, DataType<_Tp>::type)
+ void create(Size _size);
+ //! equivalent to Mat::create(_ndims, _sizes, DatType<_Tp>::type)
+ void create(int _ndims, const int* _sizes);
+ //! cross-product
+ Mat_ cross(const Mat_& m) const;
+ //! data type conversion
+ template<typename T2> operator Mat_<T2>() const;
+ //! overridden forms of Mat::row() etc.
+ Mat_ row(int y) const;
+ Mat_ col(int x) const;
+ Mat_ diag(int d=0) const;
+ Mat_ clone() const;
+
+ //! overridden forms of Mat::elemSize() etc.
+ size_t elemSize() const;
+ size_t elemSize1() const;
+ int type() const;
+ int depth() const;
+ int channels() const;
+ size_t step1(int i=0) const;
+ //! returns step()/sizeof(_Tp)
+ size_t stepT(int i=0) const;
+
+ //! overridden forms of Mat::zeros() etc. Data type is omitted, of course
+ static MatExpr zeros(int rows, int cols);
+ static MatExpr zeros(Size size);
+ static MatExpr zeros(int _ndims, const int* _sizes);
+ static MatExpr ones(int rows, int cols);
+ static MatExpr ones(Size size);
+ static MatExpr ones(int _ndims, const int* _sizes);
+ static MatExpr eye(int rows, int cols);
+ static MatExpr eye(Size size);
+
+ //! some more overriden methods
+ Mat_& adjustROI( int dtop, int dbottom, int dleft, int dright );
+ Mat_ operator()( const Range& rowRange, const Range& colRange ) const;
+ Mat_ operator()( const Rect& roi ) const;
+ Mat_ operator()( const Range* ranges ) const;
+
+ //! more convenient forms of row and element access operators
+ _Tp* operator [](int y);
+ const _Tp* operator [](int y) const;
+
+ //! returns reference to the specified element
+ _Tp& operator ()(const int* idx);
+ //! returns read-only reference to the specified element
+ const _Tp& operator ()(const int* idx) const;
+
+ //! returns reference to the specified element
+ template<int n> _Tp& operator ()(const Vec<int, n>& idx);
+ //! returns read-only reference to the specified element
+ template<int n> const _Tp& operator ()(const Vec<int, n>& idx) const;
+
+ //! returns reference to the specified element (1D case)
+ _Tp& operator ()(int idx0);
+ //! returns read-only reference to the specified element (1D case)
+ const _Tp& operator ()(int idx0) const;
+ //! returns reference to the specified element (2D case)
+ _Tp& operator ()(int idx0, int idx1);
+ //! returns read-only reference to the specified element (2D case)
+ const _Tp& operator ()(int idx0, int idx1) const;
+ //! returns reference to the specified element (3D case)
+ _Tp& operator ()(int idx0, int idx1, int idx2);
+ //! returns read-only reference to the specified element (3D case)
+ const _Tp& operator ()(int idx0, int idx1, int idx2) const;
+
+ _Tp& operator ()(Point pt);
+ const _Tp& operator ()(Point pt) const;
+
+ //! conversion to vector.
+ operator vector<_Tp>() const;
+ //! conversion to Vec
+ template<int n> operator Vec<typename DataType<_Tp>::channel_type, n>() const;
+ //! conversion to Matx
+ template<int m, int n> operator Matx<typename DataType<_Tp>::channel_type, m, n>() const;
+};
+
+typedef Mat_<uchar> Mat1b;
+typedef Mat_<Vec2b> Mat2b;
+typedef Mat_<Vec3b> Mat3b;
+typedef Mat_<Vec4b> Mat4b;
+
+typedef Mat_<short> Mat1s;
+typedef Mat_<Vec2s> Mat2s;
+typedef Mat_<Vec3s> Mat3s;
+typedef Mat_<Vec4s> Mat4s;
+
+typedef Mat_<ushort> Mat1w;
+typedef Mat_<Vec2w> Mat2w;
+typedef Mat_<Vec3w> Mat3w;
+typedef Mat_<Vec4w> Mat4w;
+
+typedef Mat_<int> Mat1i;
+typedef Mat_<Vec2i> Mat2i;
+typedef Mat_<Vec3i> Mat3i;
+typedef Mat_<Vec4i> Mat4i;
+
+typedef Mat_<float> Mat1f;
+typedef Mat_<Vec2f> Mat2f;
+typedef Mat_<Vec3f> Mat3f;
+typedef Mat_<Vec4f> Mat4f;
+
+typedef Mat_<double> Mat1d;
+typedef Mat_<Vec2d> Mat2d;
+typedef Mat_<Vec3d> Mat3d;
+typedef Mat_<Vec4d> Mat4d;
+
+//////////// Iterators & Comma initializers //////////////////
+
+class CV_EXPORTS MatConstIterator
+{
+public:
+ typedef uchar* value_type;
+ typedef ptrdiff_t difference_type;
+ typedef const uchar** pointer;
+ typedef uchar* reference;
+ typedef std::random_access_iterator_tag iterator_category;
+
+ //! default constructor
+ MatConstIterator();
+ //! constructor that sets the iterator to the beginning of the matrix
+ MatConstIterator(const Mat* _m);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatConstIterator(const Mat* _m, int _row, int _col=0);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatConstIterator(const Mat* _m, Point _pt);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatConstIterator(const Mat* _m, const int* _idx);
+ //! copy constructor
+ MatConstIterator(const MatConstIterator& it);
+
+ //! copy operator
+ MatConstIterator& operator = (const MatConstIterator& it);
+ //! returns the current matrix element
+ uchar* operator *() const;
+ //! returns the i-th matrix element, relative to the current
+ uchar* operator [](ptrdiff_t i) const;
+
+ //! shifts the iterator forward by the specified number of elements
+ MatConstIterator& operator += (ptrdiff_t ofs);
+ //! shifts the iterator backward by the specified number of elements
+ MatConstIterator& operator -= (ptrdiff_t ofs);
+ //! decrements the iterator
+ MatConstIterator& operator --();
+ //! decrements the iterator
+ MatConstIterator operator --(int);
+ //! increments the iterator
+ MatConstIterator& operator ++();
+ //! increments the iterator
+ MatConstIterator operator ++(int);
+ //! returns the current iterator position
+ Point pos() const;
+ //! returns the current iterator position
+ void pos(int* _idx) const;
+ ptrdiff_t lpos() const;
+ void seek(ptrdiff_t ofs, bool relative=false);
+ void seek(const int* _idx, bool relative=false);
+
+ const Mat* m;
+ size_t elemSize;
+ uchar* ptr;
+ uchar* sliceStart;
+ uchar* sliceEnd;
+};
+
+/*!
+ Matrix read-only iterator
+
+ */
+template<typename _Tp>
+class MatConstIterator_ : public MatConstIterator
+{
+public:
+ typedef _Tp value_type;
+ typedef ptrdiff_t difference_type;
+ typedef const _Tp* pointer;
+ typedef const _Tp& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+
+ //! default constructor
+ MatConstIterator_();
+ //! constructor that sets the iterator to the beginning of the matrix
+ MatConstIterator_(const Mat_<_Tp>* _m);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatConstIterator_(const Mat_<_Tp>* _m, int _row, int _col=0);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatConstIterator_(const Mat_<_Tp>* _m, Point _pt);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatConstIterator_(const Mat_<_Tp>* _m, const int* _idx);
+ //! copy constructor
+ MatConstIterator_(const MatConstIterator_& it);
+
+ //! copy operator
+ MatConstIterator_& operator = (const MatConstIterator_& it);
+ //! returns the current matrix element
+ _Tp operator *() const;
+ //! returns the i-th matrix element, relative to the current
+ _Tp operator [](ptrdiff_t i) const;
+
+ //! shifts the iterator forward by the specified number of elements
+ MatConstIterator_& operator += (ptrdiff_t ofs);
+ //! shifts the iterator backward by the specified number of elements
+ MatConstIterator_& operator -= (ptrdiff_t ofs);
+ //! decrements the iterator
+ MatConstIterator_& operator --();
+ //! decrements the iterator
+ MatConstIterator_ operator --(int);
+ //! increments the iterator
+ MatConstIterator_& operator ++();
+ //! increments the iterator
+ MatConstIterator_ operator ++(int);
+ //! returns the current iterator position
+ Point pos() const;
+};
+
+
+/*!
+ Matrix read-write iterator
+
+*/
+template<typename _Tp>
+class MatIterator_ : public MatConstIterator_<_Tp>
+{
+public:
+ typedef _Tp* pointer;
+ typedef _Tp& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+
+ //! the default constructor
+ MatIterator_();
+ //! constructor that sets the iterator to the beginning of the matrix
+ MatIterator_(Mat_<_Tp>* _m);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatIterator_(Mat_<_Tp>* _m, int _row, int _col=0);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatIterator_(const Mat_<_Tp>* _m, Point _pt);
+ //! constructor that sets the iterator to the specified element of the matrix
+ MatIterator_(const Mat_<_Tp>* _m, const int* _idx);
+ //! copy constructor
+ MatIterator_(const MatIterator_& it);
+ //! copy operator
+ MatIterator_& operator = (const MatIterator_<_Tp>& it );
+
+ //! returns the current matrix element
+ _Tp& operator *() const;
+ //! returns the i-th matrix element, relative to the current
+ _Tp& operator [](ptrdiff_t i) const;
+
+ //! shifts the iterator forward by the specified number of elements
+ MatIterator_& operator += (ptrdiff_t ofs);
+ //! shifts the iterator backward by the specified number of elements
+ MatIterator_& operator -= (ptrdiff_t ofs);
+ //! decrements the iterator
+ MatIterator_& operator --();
+ //! decrements the iterator
+ MatIterator_ operator --(int);
+ //! increments the iterator
+ MatIterator_& operator ++();
+ //! increments the iterator
+ MatIterator_ operator ++(int);
+};
+
+template<typename _Tp> class MatOp_Iter_;
+
+/*!
+ Comma-separated Matrix Initializer
+
+ The class instances are usually not created explicitly.
+ Instead, they are created on "matrix << firstValue" operator.
+
+ The sample below initializes 2x2 rotation matrix:
+
+ \code
+ double angle = 30, a = cos(angle*CV_PI/180), b = sin(angle*CV_PI/180);
+ Mat R = (Mat_<double>(2,2) << a, -b, b, a);
+ \endcode
+*/
+template<typename _Tp> class MatCommaInitializer_
+{
+public:
+ //! the constructor, created by "matrix << firstValue" operator, where matrix is cv::Mat
+ MatCommaInitializer_(Mat_<_Tp>* _m);
+ //! the operator that takes the next value and put it to the matrix
+ template<typename T2> MatCommaInitializer_<_Tp>& operator , (T2 v);
+ //! another form of conversion operator
+ Mat_<_Tp> operator *() const;
+ operator Mat_<_Tp>() const;
+protected:
+ MatIterator_<_Tp> it;
+};
+
+
+template<typename _Tp, int m, int n> class MatxCommaInitializer
+{
+public:
+ MatxCommaInitializer(Matx<_Tp, m, n>* _mtx);
+ template<typename T2> MatxCommaInitializer<_Tp, m, n>& operator , (T2 val);
+ Matx<_Tp, m, n> operator *() const;
+
+ Matx<_Tp, m, n>* dst;
+ int idx;
+};
+
+template<typename _Tp, int m> class VecCommaInitializer : public MatxCommaInitializer<_Tp, m, 1>
+{
+public:
+ VecCommaInitializer(Vec<_Tp, m>* _vec);
+ template<typename T2> VecCommaInitializer<_Tp, m>& operator , (T2 val);
+ Vec<_Tp, m> operator *() const;
+};
+
+/*!
+ Automatically Allocated Buffer Class
+
+ The class is used for temporary buffers in functions and methods.
+ If a temporary buffer is usually small (a few K's of memory),
+ but its size depends on the parameters, it makes sense to create a small
+ fixed-size array on stack and use it if it's large enough. If the required buffer size
+ is larger than the fixed size, another buffer of sufficient size is allocated dynamically
+ and released after the processing. Therefore, in typical cases, when the buffer size is small,
+ there is no overhead associated with malloc()/free().
+ At the same time, there is no limit on the size of processed data.
+
+ This is what AutoBuffer does. The template takes 2 parameters - type of the buffer elements and
+ the number of stack-allocated elements. Here is how the class is used:
+
+ \code
+ void my_func(const cv::Mat& m)
+ {
+ cv::AutoBuffer<float, 1000> buf; // create automatic buffer containing 1000 floats
+
+ buf.allocate(m.rows); // if m.rows <= 1000, the pre-allocated buffer is used,
+ // otherwise the buffer of "m.rows" floats will be allocated
+ // dynamically and deallocated in cv::AutoBuffer destructor
+ ...
+ }
+ \endcode
+*/
+template<typename _Tp, size_t fixed_size=4096/sizeof(_Tp)+8> class AutoBuffer
+{
+public:
+ typedef _Tp value_type;
+ enum { buffer_padding = (int)((16 + sizeof(_Tp) - 1)/sizeof(_Tp)) };
+
+ //! the default contructor
+ AutoBuffer();
+ //! constructor taking the real buffer size
+ AutoBuffer(size_t _size);
+ //! destructor. calls deallocate()
+ ~AutoBuffer();
+
+ //! allocates the new buffer of size _size. if the _size is small enough, stack-allocated buffer is used
+ void allocate(size_t _size);
+ //! deallocates the buffer if it was dynamically allocated
+ void deallocate();
+ //! returns pointer to the real buffer, stack-allocated or head-allocated
+ operator _Tp* ();
+ //! returns read-only pointer to the real buffer, stack-allocated or head-allocated
+ operator const _Tp* () const;
+
+protected:
+ //! pointer to the real buffer, can point to buf if the buffer is small enough
+ _Tp* ptr;
+ //! size of the real buffer
+ size_t size;
+ //! pre-allocated buffer
+ _Tp buf[fixed_size+buffer_padding];
+};
+
+/////////////////////////// multi-dimensional dense matrix //////////////////////////
+
+/*!
+ n-Dimensional Dense Matrix Iterator Class.
+
+ The class cv::NAryMatIterator is used for iterating over one or more n-dimensional dense arrays (cv::Mat's).
+
+ The iterator is completely different from cv::Mat_ and cv::SparseMat_ iterators.
+ It iterates through the slices (or planes), not the elements, where "slice" is a continuous part of the arrays.
+
+ Here is the example on how the iterator can be used to normalize 3D histogram:
+
+ \code
+ void normalizeColorHist(Mat& hist)
+ {
+ #if 1
+ // intialize iterator (the style is different from STL).
+ // after initialization the iterator will contain
+ // the number of slices or planes
+ // the iterator will go through
+ Mat* arrays[] = { &hist, 0 };
+ Mat planes[1];
+ NAryMatIterator it(arrays, planes);
+ double s = 0;
+ // iterate through the matrix. on each iteration
+ // it.planes[i] (of type Mat) will be set to the current plane of
+ // i-th n-dim matrix passed to the iterator constructor.
+ for(int p = 0; p < it.nplanes; p++, ++it)
+ s += sum(it.planes[0])[0];
+ it = NAryMatIterator(hist);
+ s = 1./s;
+ for(int p = 0; p < it.nplanes; p++, ++it)
+ it.planes[0] *= s;
+ #elif 1
+ // this is a shorter implementation of the above
+ // using built-in operations on Mat
+ double s = sum(hist)[0];
+ hist.convertTo(hist, hist.type(), 1./s, 0);
+ #else
+ // and this is even shorter one
+ // (assuming that the histogram elements are non-negative)
+ normalize(hist, hist, 1, 0, NORM_L1);
+ #endif
+ }
+ \endcode
+
+ You can iterate through several matrices simultaneously as long as they have the same geometry
+ (dimensionality and all the dimension sizes are the same), which is useful for binary
+ and n-ary operations on such matrices. Just pass those matrices to cv::MatNDIterator.
+ Then, during the iteration it.planes[0], it.planes[1], ... will
+ be the slices of the corresponding matrices
+*/
+class CV_EXPORTS NAryMatIterator
+{
+public:
+ //! the default constructor
+ NAryMatIterator();
+ //! the full constructor taking arbitrary number of n-dim matrices
+ NAryMatIterator(const Mat** arrays, uchar** ptrs, int narrays=-1);
+ //! the full constructor taking arbitrary number of n-dim matrices
+ NAryMatIterator(const Mat** arrays, Mat* planes, int narrays=-1);
+ //! the separate iterator initialization method
+ void init(const Mat** arrays, Mat* planes, uchar** ptrs, int narrays=-1);
+
+ //! proceeds to the next plane of every iterated matrix
+ NAryMatIterator& operator ++();
+ //! proceeds to the next plane of every iterated matrix (postfix increment operator)
+ NAryMatIterator operator ++(int);
+
+ //! the iterated arrays
+ const Mat** arrays;
+ //! the current planes
+ Mat* planes;
+ //! data pointers
+ uchar** ptrs;
+ //! the number of arrays
+ int narrays;
+ //! the number of hyper-planes that the iterator steps through
+ size_t nplanes;
+ //! the size of each segment (in elements)
+ size_t size;
+protected:
+ int iterdepth;
+ size_t idx;
+};
+
+//typedef NAryMatIterator NAryMatNDIterator;
+
+typedef void (*ConvertData)(const void* from, void* to, int cn);
+typedef void (*ConvertScaleData)(const void* from, void* to, int cn, double alpha, double beta);
+
+//! returns the function for converting pixels from one data type to another
+CV_EXPORTS ConvertData getConvertElem(int fromType, int toType);
+//! returns the function for converting pixels from one data type to another with the optional scaling
+CV_EXPORTS ConvertScaleData getConvertScaleElem(int fromType, int toType);
+
+
+/////////////////////////// multi-dimensional sparse matrix //////////////////////////
+
+class SparseMatIterator;
+class SparseMatConstIterator;
+template<typename _Tp> class SparseMatIterator_;
+template<typename _Tp> class SparseMatConstIterator_;
+
+/*!
+ Sparse matrix class.
+
+ The class represents multi-dimensional sparse numerical arrays. Such a sparse array can store elements
+ of any type that cv::Mat is able to store. "Sparse" means that only non-zero elements
+ are stored (though, as a result of some operations on a sparse matrix, some of its stored elements
+ can actually become 0. It's user responsibility to detect such elements and delete them using cv::SparseMat::erase().
+ The non-zero elements are stored in a hash table that grows when it's filled enough,
+ so that the search time remains O(1) in average. Elements can be accessed using the following methods:
+
+ <ol>
+ <li>Query operations: cv::SparseMat::ptr() and the higher-level cv::SparseMat::ref(),
+ cv::SparseMat::value() and cv::SparseMat::find, for example:
+ \code
+ const int dims = 5;
+ int size[] = {10, 10, 10, 10, 10};
+ SparseMat sparse_mat(dims, size, CV_32F);
+ for(int i = 0; i < 1000; i++)
+ {
+ int idx[dims];
+ for(int k = 0; k < dims; k++)
+ idx[k] = rand()%sparse_mat.size(k);
+ sparse_mat.ref<float>(idx) += 1.f;
+ }
+ \endcode
+
+ <li>Sparse matrix iterators. Like cv::Mat iterators and unlike cv::Mat iterators, the sparse matrix iterators are STL-style,
+ that is, the iteration is done as following:
+ \code
+ // prints elements of a sparse floating-point matrix and the sum of elements.
+ SparseMatConstIterator_<float>
+ it = sparse_mat.begin<float>(),
+ it_end = sparse_mat.end<float>();
+ double s = 0;
+ int dims = sparse_mat.dims();
+ for(; it != it_end; ++it)
+ {
+ // print element indices and the element value
+ const Node* n = it.node();
+ printf("(")
+ for(int i = 0; i < dims; i++)
+ printf("%3d%c", n->idx[i], i < dims-1 ? ',' : ')');
+ printf(": %f\n", *it);
+ s += *it;
+ }
+ printf("Element sum is %g\n", s);
+ \endcode
+ If you run this loop, you will notice that elements are enumerated
+ in no any logical order (lexicographical etc.),
+ they come in the same order as they stored in the hash table, i.e. semi-randomly.
+
+ You may collect pointers to the nodes and sort them to get the proper ordering.
+ Note, however, that pointers to the nodes may become invalid when you add more
+ elements to the matrix; this is because of possible buffer reallocation.
+
+ <li>A combination of the above 2 methods when you need to process 2 or more sparse
+ matrices simultaneously, e.g. this is how you can compute unnormalized
+ cross-correlation of the 2 floating-point sparse matrices:
+ \code
+ double crossCorr(const SparseMat& a, const SparseMat& b)
+ {
+ const SparseMat *_a = &a, *_b = &b;
+ // if b contains less elements than a,
+ // it's faster to iterate through b
+ if(_a->nzcount() > _b->nzcount())
+ std::swap(_a, _b);
+ SparseMatConstIterator_<float> it = _a->begin<float>(),
+ it_end = _a->end<float>();
+ double ccorr = 0;
+ for(; it != it_end; ++it)
+ {
+ // take the next element from the first matrix
+ float avalue = *it;
+ const Node* anode = it.node();
+ // and try to find element with the same index in the second matrix.
+ // since the hash value depends only on the element index,
+ // we reuse hashvalue stored in the node
+ float bvalue = _b->value<float>(anode->idx,&anode->hashval);
+ ccorr += avalue*bvalue;
+ }
+ return ccorr;
+ }
+ \endcode
+ </ol>
+*/
+class CV_EXPORTS SparseMat
+{
+public:
+ typedef SparseMatIterator iterator;
+ typedef SparseMatConstIterator const_iterator;
+
+ //! the sparse matrix header
+ struct CV_EXPORTS Hdr
+ {
+ Hdr(int _dims, const int* _sizes, int _type);
+ void clear();
+ int refcount;
+ int dims;
+ int valueOffset;
+ size_t nodeSize;
+ size_t nodeCount;
+ size_t freeList;
+ vector<uchar> pool;
+ vector<size_t> hashtab;
+ int size[CV_MAX_DIM];
+ };
+
+ //! sparse matrix node - element of a hash table
+ struct CV_EXPORTS Node
+ {
+ //! hash value
+ size_t hashval;
+ //! index of the next node in the same hash table entry
+ size_t next;
+ //! index of the matrix element
+ int idx[CV_MAX_DIM];
+ };
+
+ //! default constructor
+ SparseMat();
+ //! creates matrix of the specified size and type
+ SparseMat(int dims, const int* _sizes, int _type);
+ //! copy constructor
+ SparseMat(const SparseMat& m);
+ //! converts dense 2d matrix to the sparse form
+ /*!
+ \param m the input matrix
+ */
+ explicit SparseMat(const Mat& m);
+ //! converts old-style sparse matrix to the new-style. All the data is copied
+ SparseMat(const CvSparseMat* m);
+ //! the destructor
+ ~SparseMat();
+
+ //! assignment operator. This is O(1) operation, i.e. no data is copied
+ SparseMat& operator = (const SparseMat& m);
+ //! equivalent to the corresponding constructor
+ SparseMat& operator = (const Mat& m);
+
+ //! creates full copy of the matrix
+ SparseMat clone() const;
+
+ //! copies all the data to the destination matrix. All the previous content of m is erased
+ void copyTo( SparseMat& m ) const;
+ //! converts sparse matrix to dense matrix.
+ void copyTo( Mat& m ) const;
+ //! multiplies all the matrix elements by the specified scale factor alpha and converts the results to the specified data type
+ void convertTo( SparseMat& m, int rtype, double alpha=1 ) const;
+ //! converts sparse matrix to dense n-dim matrix with optional type conversion and scaling.
+ /*!
+ \param m Destination matrix
+ \param rtype The output matrix data type. When it is =-1, the output array will have the same data type as (*this)
+ \param alpha The scale factor
+ \param beta The optional delta added to the scaled values before the conversion
+ */
+ void convertTo( Mat& m, int rtype, double alpha=1, double beta=0 ) const;
+
+ // not used now
+ void assignTo( SparseMat& m, int type=-1 ) const;
+
+ //! reallocates sparse matrix.
+ /*!
+ If the matrix already had the proper size and type,
+ it is simply cleared with clear(), otherwise,
+ the old matrix is released (using release()) and the new one is allocated.
+ */
+ void create(int dims, const int* _sizes, int _type);
+ //! sets all the sparse matrix elements to 0, which means clearing the hash table.
+ void clear();
+ //! manually increments the reference counter to the header.
+ void addref();
+ // decrements the header reference counter. When the counter reaches 0, the header and all the underlying data are deallocated.
+ void release();
+
+ //! converts sparse matrix to the old-style representation; all the elements are copied.
+ operator CvSparseMat*() const;
+ //! returns the size of each element in bytes (not including the overhead - the space occupied by SparseMat::Node elements)
+ size_t elemSize() const;
+ //! returns elemSize()/channels()
+ size_t elemSize1() const;
+
+ //! returns type of sparse matrix elements
+ int type() const;
+ //! returns the depth of sparse matrix elements
+ int depth() const;
+ //! returns the number of channels
+ int channels() const;
+
+ //! returns the array of sizes, or NULL if the matrix is not allocated
+ const int* size() const;
+ //! returns the size of i-th matrix dimension (or 0)
+ int size(int i) const;
+ //! returns the matrix dimensionality
+ int dims() const;
+ //! returns the number of non-zero elements (=the number of hash table nodes)
+ size_t nzcount() const;
+
+ //! computes the element hash value (1D case)
+ size_t hash(int i0) const;
+ //! computes the element hash value (2D case)
+ size_t hash(int i0, int i1) const;
+ //! computes the element hash value (3D case)
+ size_t hash(int i0, int i1, int i2) const;
+ //! computes the element hash value (nD case)
+ size_t hash(const int* idx) const;
+
+ //@{
+ /*!
+ specialized variants for 1D, 2D, 3D cases and the generic_type one for n-D case.
+
+ return pointer to the matrix element.
+ <ul>
+ <li>if the element is there (it's non-zero), the pointer to it is returned
+ <li>if it's not there and createMissing=false, NULL pointer is returned
+ <li>if it's not there and createMissing=true, then the new element
+ is created and initialized with 0. Pointer to it is returned
+ <li>if the optional hashval pointer is not NULL, the element hash value is
+ not computed, but *hashval is taken instead.
+ </ul>
+ */
+ //! returns pointer to the specified element (1D case)
+ uchar* ptr(int i0, bool createMissing, size_t* hashval=0);
+ //! returns pointer to the specified element (2D case)
+ uchar* ptr(int i0, int i1, bool createMissing, size_t* hashval=0);
+ //! returns pointer to the specified element (3D case)
+ uchar* ptr(int i0, int i1, int i2, bool createMissing, size_t* hashval=0);
+ //! returns pointer to the specified element (nD case)
+ uchar* ptr(const int* idx, bool createMissing, size_t* hashval=0);
+ //@}
+
+ //@{
+ /*!
+ return read-write reference to the specified sparse matrix element.
+
+ ref<_Tp>(i0,...[,hashval]) is equivalent to *(_Tp*)ptr(i0,...,true[,hashval]).
+ The methods always return a valid reference.
+ If the element did not exist, it is created and initialiazed with 0.
+ */
+ //! returns reference to the specified element (1D case)
+ template<typename _Tp> _Tp& ref(int i0, size_t* hashval=0);
+ //! returns reference to the specified element (2D case)
+ template<typename _Tp> _Tp& ref(int i0, int i1, size_t* hashval=0);
+ //! returns reference to the specified element (3D case)
+ template<typename _Tp> _Tp& ref(int i0, int i1, int i2, size_t* hashval=0);
+ //! returns reference to the specified element (nD case)
+ template<typename _Tp> _Tp& ref(const int* idx, size_t* hashval=0);
+ //@}
+
+ //@{
+ /*!
+ return value of the specified sparse matrix element.
+
+ value<_Tp>(i0,...[,hashval]) is equivalent
+
+ \code
+ { const _Tp* p = find<_Tp>(i0,...[,hashval]); return p ? *p : _Tp(); }
+ \endcode
+
+ That is, if the element did not exist, the methods return 0.
+ */
+ //! returns value of the specified element (1D case)
+ template<typename _Tp> _Tp value(int i0, size_t* hashval=0) const;
+ //! returns value of the specified element (2D case)
+ template<typename _Tp> _Tp value(int i0, int i1, size_t* hashval=0) const;
+ //! returns value of the specified element (3D case)
+ template<typename _Tp> _Tp value(int i0, int i1, int i2, size_t* hashval=0) const;
+ //! returns value of the specified element (nD case)
+ template<typename _Tp> _Tp value(const int* idx, size_t* hashval=0) const;
+ //@}
+
+ //@{
+ /*!
+ Return pointer to the specified sparse matrix element if it exists
+
+ find<_Tp>(i0,...[,hashval]) is equivalent to (_const Tp*)ptr(i0,...false[,hashval]).
+
+ If the specified element does not exist, the methods return NULL.
+ */
+ //! returns pointer to the specified element (1D case)
+ template<typename _Tp> const _Tp* find(int i0, size_t* hashval=0) const;
+ //! returns pointer to the specified element (2D case)
+ template<typename _Tp> const _Tp* find(int i0, int i1, size_t* hashval=0) const;
+ //! returns pointer to the specified element (3D case)
+ template<typename _Tp> const _Tp* find(int i0, int i1, int i2, size_t* hashval=0) const;
+ //! returns pointer to the specified element (nD case)
+ template<typename _Tp> const _Tp* find(const int* idx, size_t* hashval=0) const;
+
+ //! erases the specified element (2D case)
+ void erase(int i0, int i1, size_t* hashval=0);
+ //! erases the specified element (3D case)
+ void erase(int i0, int i1, int i2, size_t* hashval=0);
+ //! erases the specified element (nD case)
+ void erase(const int* idx, size_t* hashval=0);
+
+ //@{
+ /*!
+ return the sparse matrix iterator pointing to the first sparse matrix element
+ */
+ //! returns the sparse matrix iterator at the matrix beginning
+ SparseMatIterator begin();
+ //! returns the sparse matrix iterator at the matrix beginning
+ template<typename _Tp> SparseMatIterator_<_Tp> begin();
+ //! returns the read-only sparse matrix iterator at the matrix beginning
+ SparseMatConstIterator begin() const;
+ //! returns the read-only sparse matrix iterator at the matrix beginning
+ template<typename _Tp> SparseMatConstIterator_<_Tp> begin() const;
+ //@}
+ /*!
+ return the sparse matrix iterator pointing to the element following the last sparse matrix element
+ */
+ //! returns the sparse matrix iterator at the matrix end
+ SparseMatIterator end();
+ //! returns the read-only sparse matrix iterator at the matrix end
+ SparseMatConstIterator end() const;
+ //! returns the typed sparse matrix iterator at the matrix end
+ template<typename _Tp> SparseMatIterator_<_Tp> end();
+ //! returns the typed read-only sparse matrix iterator at the matrix end
+ template<typename _Tp> SparseMatConstIterator_<_Tp> end() const;
+
+ //! returns the value stored in the sparse martix node
+ template<typename _Tp> _Tp& value(Node* n);
+ //! returns the value stored in the sparse martix node
+ template<typename _Tp> const _Tp& value(const Node* n) const;
+
+ ////////////// some internal-use methods ///////////////
+ Node* node(size_t nidx);
+ const Node* node(size_t nidx) const;
+
+ uchar* newNode(const int* idx, size_t hashval);
+ void removeNode(size_t hidx, size_t nidx, size_t previdx);
+ void resizeHashTab(size_t newsize);
+
+ enum { MAGIC_VAL=0x42FD0000, MAX_DIM=CV_MAX_DIM, HASH_SCALE=0x5bd1e995, HASH_BIT=0x80000000 };
+
+ int flags;
+ Hdr* hdr;
+};
+
+//! finds global minimum and maximum sparse array elements and returns their values and their locations
+CV_EXPORTS void minMaxLoc(const SparseMat& a, double* minVal,
+ double* maxVal, int* minIdx=0, int* maxIdx=0);
+//! computes norm of a sparse matrix
+CV_EXPORTS double norm( const SparseMat& src, int normType );
+//! scales and shifts array elements so that either the specified norm (alpha) or the minimum (alpha) and maximum (beta) array values get the specified values
+CV_EXPORTS void normalize( const SparseMat& src, SparseMat& dst, double alpha, int normType );
+
+/*!
+ Read-Only Sparse Matrix Iterator.
+ Here is how to use the iterator to compute the sum of floating-point sparse matrix elements:
+
+ \code
+ SparseMatConstIterator it = m.begin(), it_end = m.end();
+ double s = 0;
+ CV_Assert( m.type() == CV_32F );
+ for( ; it != it_end; ++it )
+ s += it.value<float>();
+ \endcode
+*/
+class CV_EXPORTS SparseMatConstIterator
+{
+public:
+ //! the default constructor
+ SparseMatConstIterator();
+ //! the full constructor setting the iterator to the first sparse matrix element
+ SparseMatConstIterator(const SparseMat* _m);
+ //! the copy constructor
+ SparseMatConstIterator(const SparseMatConstIterator& it);
+
+ //! the assignment operator
+ SparseMatConstIterator& operator = (const SparseMatConstIterator& it);
+
+ //! template method returning the current matrix element
+ template<typename _Tp> const _Tp& value() const;
+ //! returns the current node of the sparse matrix. it.node->idx is the current element index
+ const SparseMat::Node* node() const;
+
+ //! moves iterator to the previous element
+ SparseMatConstIterator& operator --();
+ //! moves iterator to the previous element
+ SparseMatConstIterator operator --(int);
+ //! moves iterator to the next element
+ SparseMatConstIterator& operator ++();
+ //! moves iterator to the next element
+ SparseMatConstIterator operator ++(int);
+
+ //! moves iterator to the element after the last element
+ void seekEnd();
+
+ const SparseMat* m;
+ size_t hashidx;
+ uchar* ptr;
+};
+
+/*!
+ Read-write Sparse Matrix Iterator
+
+ The class is similar to cv::SparseMatConstIterator,
+ but can be used for in-place modification of the matrix elements.
+*/
+class CV_EXPORTS SparseMatIterator : public SparseMatConstIterator
+{
+public:
+ //! the default constructor
+ SparseMatIterator();
+ //! the full constructor setting the iterator to the first sparse matrix element
+ SparseMatIterator(SparseMat* _m);
+ //! the full constructor setting the iterator to the specified sparse matrix element
+ SparseMatIterator(SparseMat* _m, const int* idx);
+ //! the copy constructor
+ SparseMatIterator(const SparseMatIterator& it);
+
+ //! the assignment operator
+ SparseMatIterator& operator = (const SparseMatIterator& it);
+ //! returns read-write reference to the current sparse matrix element
+ template<typename _Tp> _Tp& value() const;
+ //! returns pointer to the current sparse matrix node. it.node->idx is the index of the current element (do not modify it!)
+ SparseMat::Node* node() const;
+
+ //! moves iterator to the next element
+ SparseMatIterator& operator ++();
+ //! moves iterator to the next element
+ SparseMatIterator operator ++(int);
+};
+
+/*!
+ The Template Sparse Matrix class derived from cv::SparseMat
+
+ The class provides slightly more convenient operations for accessing elements.
+
+ \code
+ SparseMat m;
+ ...
+ SparseMat_<int> m_ = (SparseMat_<int>&)m;
+ m_.ref(1)++; // equivalent to m.ref<int>(1)++;
+ m_.ref(2) += m_(3); // equivalent to m.ref<int>(2) += m.value<int>(3);
+ \endcode
+*/
+template<typename _Tp> class SparseMat_ : public SparseMat
+{
+public:
+ typedef SparseMatIterator_<_Tp> iterator;
+ typedef SparseMatConstIterator_<_Tp> const_iterator;
+
+ //! the default constructor
+ SparseMat_();
+ //! the full constructor equivelent to SparseMat(dims, _sizes, DataType<_Tp>::type)
+ SparseMat_(int dims, const int* _sizes);
+ //! the copy constructor. If DataType<_Tp>.type != m.type(), the m elements are converted
+ SparseMat_(const SparseMat& m);
+ //! the copy constructor. This is O(1) operation - no data is copied
+ SparseMat_(const SparseMat_& m);
+ //! converts dense matrix to the sparse form
+ SparseMat_(const Mat& m);
+ //! converts the old-style sparse matrix to the C++ class. All the elements are copied
+ SparseMat_(const CvSparseMat* m);
+ //! the assignment operator. If DataType<_Tp>.type != m.type(), the m elements are converted
+ SparseMat_& operator = (const SparseMat& m);
+ //! the assignment operator. This is O(1) operation - no data is copied
+ SparseMat_& operator = (const SparseMat_& m);
+ //! converts dense matrix to the sparse form
+ SparseMat_& operator = (const Mat& m);
+
+ //! makes full copy of the matrix. All the elements are duplicated
+ SparseMat_ clone() const;
+ //! equivalent to cv::SparseMat::create(dims, _sizes, DataType<_Tp>::type)
+ void create(int dims, const int* _sizes);
+ //! converts sparse matrix to the old-style CvSparseMat. All the elements are copied
+ operator CvSparseMat*() const;
+
+ //! returns type of the matrix elements
+ int type() const;
+ //! returns depth of the matrix elements
+ int depth() const;
+ //! returns the number of channels in each matrix element
+ int channels() const;
+
+ //! equivalent to SparseMat::ref<_Tp>(i0, hashval)
+ _Tp& ref(int i0, size_t* hashval=0);
+ //! equivalent to SparseMat::ref<_Tp>(i0, i1, hashval)
+ _Tp& ref(int i0, int i1, size_t* hashval=0);
+ //! equivalent to SparseMat::ref<_Tp>(i0, i1, i2, hashval)
+ _Tp& ref(int i0, int i1, int i2, size_t* hashval=0);
+ //! equivalent to SparseMat::ref<_Tp>(idx, hashval)
+ _Tp& ref(const int* idx, size_t* hashval=0);
+
+ //! equivalent to SparseMat::value<_Tp>(i0, hashval)
+ _Tp operator()(int i0, size_t* hashval=0) const;
+ //! equivalent to SparseMat::value<_Tp>(i0, i1, hashval)
+ _Tp operator()(int i0, int i1, size_t* hashval=0) const;
+ //! equivalent to SparseMat::value<_Tp>(i0, i1, i2, hashval)
+ _Tp operator()(int i0, int i1, int i2, size_t* hashval=0) const;
+ //! equivalent to SparseMat::value<_Tp>(idx, hashval)
+ _Tp operator()(const int* idx, size_t* hashval=0) const;
+
+ //! returns sparse matrix iterator pointing to the first sparse matrix element
+ SparseMatIterator_<_Tp> begin();
+ //! returns read-only sparse matrix iterator pointing to the first sparse matrix element
+ SparseMatConstIterator_<_Tp> begin() const;
+ //! returns sparse matrix iterator pointing to the element following the last sparse matrix element
+ SparseMatIterator_<_Tp> end();
+ //! returns read-only sparse matrix iterator pointing to the element following the last sparse matrix element
+ SparseMatConstIterator_<_Tp> end() const;
+};
+
+
+/*!
+ Template Read-Only Sparse Matrix Iterator Class.
+
+ This is the derived from SparseMatConstIterator class that
+ introduces more convenient operator *() for accessing the current element.
+*/
+template<typename _Tp> class SparseMatConstIterator_ : public SparseMatConstIterator
+{
+public:
+ typedef std::forward_iterator_tag iterator_category;
+
+ //! the default constructor
+ SparseMatConstIterator_();
+ //! the full constructor setting the iterator to the first sparse matrix element
+ SparseMatConstIterator_(const SparseMat_<_Tp>* _m);
+ SparseMatConstIterator_(const SparseMat* _m);
+ //! the copy constructor
+ SparseMatConstIterator_(const SparseMatConstIterator_& it);
+
+ //! the assignment operator
+ SparseMatConstIterator_& operator = (const SparseMatConstIterator_& it);
+ //! the element access operator
+ const _Tp& operator *() const;
+
+ //! moves iterator to the next element
+ SparseMatConstIterator_& operator ++();
+ //! moves iterator to the next element
+ SparseMatConstIterator_ operator ++(int);
+};
+
+/*!
+ Template Read-Write Sparse Matrix Iterator Class.
+
+ This is the derived from cv::SparseMatConstIterator_ class that
+ introduces more convenient operator *() for accessing the current element.
+*/
+template<typename _Tp> class SparseMatIterator_ : public SparseMatConstIterator_<_Tp>
+{
+public:
+ typedef std::forward_iterator_tag iterator_category;
+
+ //! the default constructor
+ SparseMatIterator_();
+ //! the full constructor setting the iterator to the first sparse matrix element
+ SparseMatIterator_(SparseMat_<_Tp>* _m);
+ SparseMatIterator_(SparseMat* _m);
+ //! the copy constructor
+ SparseMatIterator_(const SparseMatIterator_& it);
+
+ //! the assignment operator
+ SparseMatIterator_& operator = (const SparseMatIterator_& it);
+ //! returns the reference to the current element
+ _Tp& operator *() const;
+
+ //! moves the iterator to the next element
+ SparseMatIterator_& operator ++();
+ //! moves the iterator to the next element
+ SparseMatIterator_ operator ++(int);
+};
+
+//////////////////// Fast Nearest-Neighbor Search Structure ////////////////////
+
+/*!
+ Fast Nearest Neighbor Search Class.
+
+ The class implements D. Lowe BBF (Best-Bin-First) algorithm for the last
+ approximate (or accurate) nearest neighbor search in multi-dimensional spaces.
+
+ First, a set of vectors is passed to KDTree::KDTree() constructor
+ or KDTree::build() method, where it is reordered.
+
+ Then arbitrary vectors can be passed to KDTree::findNearest() methods, which
+ find the K nearest neighbors among the vectors from the initial set.
+ The user can balance between the speed and accuracy of the search by varying Emax
+ parameter, which is the number of leaves that the algorithm checks.
+ The larger parameter values yield more accurate results at the expense of lower processing speed.
+
+ \code
+ KDTree T(points, false);
+ const int K = 3, Emax = INT_MAX;
+ int idx[K];
+ float dist[K];
+ T.findNearest(query_vec, K, Emax, idx, 0, dist);
+ CV_Assert(dist[0] <= dist[1] && dist[1] <= dist[2]);
+ \endcode
+*/
+class CV_EXPORTS_W KDTree
+{
+public:
+ /*!
+ The node of the search tree.
+ */
+ struct Node
+ {
+ Node() : idx(-1), left(-1), right(-1), boundary(0.f) {}
+ Node(int _idx, int _left, int _right, float _boundary)
+ : idx(_idx), left(_left), right(_right), boundary(_boundary) {}
+ //! split dimension; >=0 for nodes (dim), < 0 for leaves (index of the point)
+ int idx;
+ //! node indices of the left and the right branches
+ int left, right;
+ //! go to the left if query_vec[node.idx]<=node.boundary, otherwise go to the right
+ float boundary;
+ };
+
+ //! the default constructor
+ CV_WRAP KDTree();
+ //! the full constructor that builds the search tree
+ CV_WRAP KDTree(InputArray points, bool copyAndReorderPoints=false);
+ //! the full constructor that builds the search tree
+ CV_WRAP KDTree(InputArray points, InputArray _labels,
+ bool copyAndReorderPoints=false);
+ //! builds the search tree
+ CV_WRAP void build(InputArray points, bool copyAndReorderPoints=false);
+ //! builds the search tree
+ CV_WRAP void build(InputArray points, InputArray labels,
+ bool copyAndReorderPoints=false);
+ //! finds the K nearest neighbors of "vec" while looking at Emax (at most) leaves
+ CV_WRAP int findNearest(InputArray vec, int K, int Emax,
+ OutputArray neighborsIdx,
+ OutputArray neighbors=noArray(),
+ OutputArray dist=noArray(),
+ OutputArray labels=noArray()) const;
+ //! finds all the points from the initial set that belong to the specified box
+ CV_WRAP void findOrthoRange(InputArray minBounds,
+ InputArray maxBounds,
+ OutputArray neighborsIdx,
+ OutputArray neighbors=noArray(),
+ OutputArray labels=noArray()) const;
+ //! returns vectors with the specified indices
+ CV_WRAP void getPoints(InputArray idx, OutputArray pts,
+ OutputArray labels=noArray()) const;
+ //! return a vector with the specified index
+ const float* getPoint(int ptidx, int* label=0) const;
+ //! returns the search space dimensionality
+ CV_WRAP int dims() const;
+
+ vector<Node> nodes; //!< all the tree nodes
+ CV_PROP Mat points; //!< all the points. It can be a reordered copy of the input vector set or the original vector set.
+ CV_PROP vector<int> labels; //!< the parallel array of labels.
+ CV_PROP int maxDepth; //!< maximum depth of the search tree. Do not modify it
+ CV_PROP_RW int normType; //!< type of the distance (cv::NORM_L1 or cv::NORM_L2) used for search. Initially set to cv::NORM_L2, but you can modify it
+};
+
+//////////////////////////////////////// XML & YAML I/O ////////////////////////////////////
+
+class CV_EXPORTS FileNode;
+
+/*!
+ XML/YAML File Storage Class.
+
+ The class describes an object associated with XML or YAML file.
+ It can be used to store data to such a file or read and decode the data.
+
+ The storage is organized as a tree of nested sequences (or lists) and mappings.
+ Sequence is a heterogenious array, which elements are accessed by indices or sequentially using an iterator.
+ Mapping is analogue of std::map or C structure, which elements are accessed by names.
+ The most top level structure is a mapping.
+ Leaves of the file storage tree are integers, floating-point numbers and text strings.
+
+ For example, the following code:
+
+ \code
+ // open file storage for writing. Type of the file is determined from the extension
+ FileStorage fs("test.yml", FileStorage::WRITE);
+ fs << "test_int" << 5 << "test_real" << 3.1 << "test_string" << "ABCDEFGH";
+ fs << "test_mat" << Mat::eye(3,3,CV_32F);
+
+ fs << "test_list" << "[" << 0.0000000000001 << 2 << CV_PI << -3435345 << "2-502 2-029 3egegeg" <<
+ "{:" << "month" << 12 << "day" << 31 << "year" << 1969 << "}" << "]";
+ fs << "test_map" << "{" << "x" << 1 << "y" << 2 << "width" << 100 << "height" << 200 << "lbp" << "[:";
+
+ const uchar arr[] = {0, 1, 1, 0, 1, 1, 0, 1};
+ fs.writeRaw("u", arr, (int)(sizeof(arr)/sizeof(arr[0])));
+
+ fs << "]" << "}";
+ \endcode
+
+ will produce the following file:
+
+ \verbatim
+ %YAML:1.0
+ test_int: 5
+ test_real: 3.1000000000000001e+00
+ test_string: ABCDEFGH
+ test_mat: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: f
+ data: [ 1., 0., 0., 0., 1., 0., 0., 0., 1. ]
+ test_list:
+ - 1.0000000000000000e-13
+ - 2
+ - 3.1415926535897931e+00
+ - -3435345
+ - "2-502 2-029 3egegeg"
+ - { month:12, day:31, year:1969 }
+ test_map:
+ x: 1
+ y: 2
+ width: 100
+ height: 200
+ lbp: [ 0, 1, 1, 0, 1, 1, 0, 1 ]
+ \endverbatim
+
+ and to read the file above, the following code can be used:
+
+ \code
+ // open file storage for reading.
+ // Type of the file is determined from the content, not the extension
+ FileStorage fs("test.yml", FileStorage::READ);
+ int test_int = (int)fs["test_int"];
+ double test_real = (double)fs["test_real"];
+ string test_string = (string)fs["test_string"];
+
+ Mat M;
+ fs["test_mat"] >> M;
+
+ FileNode tl = fs["test_list"];
+ CV_Assert(tl.type() == FileNode::SEQ && tl.size() == 6);
+ double tl0 = (double)tl[0];
+ int tl1 = (int)tl[1];
+ double tl2 = (double)tl[2];
+ int tl3 = (int)tl[3];
+ string tl4 = (string)tl[4];
+ CV_Assert(tl[5].type() == FileNode::MAP && tl[5].size() == 3);
+
+ int month = (int)tl[5]["month"];
+ int day = (int)tl[5]["day"];
+ int year = (int)tl[5]["year"];
+
+ FileNode tm = fs["test_map"];
+
+ int x = (int)tm["x"];
+ int y = (int)tm["y"];
+ int width = (int)tm["width"];
+ int height = (int)tm["height"];
+
+ int lbp_val = 0;
+ FileNodeIterator it = tm["lbp"].begin();
+
+ for(int k = 0; k < 8; k++, ++it)
+ lbp_val |= ((int)*it) << k;
+ \endcode
+*/
+class CV_EXPORTS_W FileStorage
+{
+public:
+ //! file storage mode
+ enum
+ {
+ READ=0, //! read mode
+ WRITE=1, //! write mode
+ APPEND=2, //! append mode
+ MEMORY=4,
+ FORMAT_MASK=(7<<3),
+ FORMAT_AUTO=0,
+ FORMAT_XML=(1<<3),
+ FORMAT_YAML=(2<<3)
+ };
+ enum
+ {
+ UNDEFINED=0,
+ VALUE_EXPECTED=1,
+ NAME_EXPECTED=2,
+ INSIDE_MAP=4
+ };
+ //! the default constructor
+ CV_WRAP FileStorage();
+ //! the full constructor that opens file storage for reading or writing
+ CV_WRAP FileStorage(const string& source, int flags, const string& encoding=string());
+ //! the constructor that takes pointer to the C FileStorage structure
+ FileStorage(CvFileStorage* fs);
+ //! the destructor. calls release()
+ virtual ~FileStorage();
+
+ //! opens file storage for reading or writing. The previous storage is closed with release()
+ CV_WRAP virtual bool open(const string& filename, int flags, const string& encoding=string());
+ //! returns true if the object is associated with currently opened file.
+ CV_WRAP virtual bool isOpened() const;
+ //! closes the file and releases all the memory buffers
+ CV_WRAP virtual void release();
+ //! closes the file, releases all the memory buffers and returns the text string
+ CV_WRAP string releaseAndGetString();
+
+ //! returns the first element of the top-level mapping
+ CV_WRAP FileNode getFirstTopLevelNode() const;
+ //! returns the top-level mapping. YAML supports multiple streams
+ CV_WRAP FileNode root(int streamidx=0) const;
+ //! returns the specified element of the top-level mapping
+ FileNode operator[](const string& nodename) const;
+ //! returns the specified element of the top-level mapping
+ CV_WRAP FileNode operator[](const char* nodename) const;
+
+ //! returns pointer to the underlying C FileStorage structure
+ CvFileStorage* operator *() { return fs; }
+ //! returns pointer to the underlying C FileStorage structure
+ const CvFileStorage* operator *() const { return fs; }
+ //! writes one or more numbers of the specified format to the currently written structure
+ void writeRaw( const string& fmt, const uchar* vec, size_t len );
+ //! writes the registered C structure (CvMat, CvMatND, CvSeq). See cvWrite()
+ void writeObj( const string& name, const void* obj );
+
+ //! returns the normalized object name for the specified file name
+ static string getDefaultObjectName(const string& filename);
+
+ Ptr<CvFileStorage> fs; //!< the underlying C FileStorage structure
+ string elname; //!< the currently written element
+ vector<char> structs; //!< the stack of written structures
+ int state; //!< the writer state
+};
+
+class CV_EXPORTS FileNodeIterator;
+
+/*!
+ File Storage Node class
+
+ The node is used to store each and every element of the file storage opened for reading -
+ from the primitive objects, such as numbers and text strings, to the complex nodes:
+ sequences, mappings and the registered objects.
+
+ Note that file nodes are only used for navigating file storages opened for reading.
+ When a file storage is opened for writing, no data is stored in memory after it is written.
+*/
+class CV_EXPORTS_W_SIMPLE FileNode
+{
+public:
+ //! type of the file storage node
+ enum
+ {
+ NONE=0, //!< empty node
+ INT=1, //!< an integer
+ REAL=2, //!< floating-point number
+ FLOAT=REAL, //!< synonym or REAL
+ STR=3, //!< text string in UTF-8 encoding
+ STRING=STR, //!< synonym for STR
+ REF=4, //!< integer of size size_t. Typically used for storing complex dynamic structures where some elements reference the others
+ SEQ=5, //!< sequence
+ MAP=6, //!< mapping
+ TYPE_MASK=7,
+ FLOW=8, //!< compact representation of a sequence or mapping. Used only by YAML writer
+ USER=16, //!< a registered object (e.g. a matrix)
+ EMPTY=32, //!< empty structure (sequence or mapping)
+ NAMED=64 //!< the node has a name (i.e. it is element of a mapping)
+ };
+ //! the default constructor
+ CV_WRAP FileNode();
+ //! the full constructor wrapping CvFileNode structure.
+ FileNode(const CvFileStorage* fs, const CvFileNode* node);
+ //! the copy constructor
+ FileNode(const FileNode& node);
+ //! returns element of a mapping node
+ FileNode operator[](const string& nodename) const;
+ //! returns element of a mapping node
+ CV_WRAP FileNode operator[](const char* nodename) const;
+ //! returns element of a sequence node
+ CV_WRAP FileNode operator[](int i) const;
+ //! returns type of the node
+ CV_WRAP int type() const;
+
+ //! returns true if the node is empty
+ CV_WRAP bool empty() const;
+ //! returns true if the node is a "none" object
+ CV_WRAP bool isNone() const;
+ //! returns true if the node is a sequence
+ CV_WRAP bool isSeq() const;
+ //! returns true if the node is a mapping
+ CV_WRAP bool isMap() const;
+ //! returns true if the node is an integer
+ CV_WRAP bool isInt() const;
+ //! returns true if the node is a floating-point number
+ CV_WRAP bool isReal() const;
+ //! returns true if the node is a text string
+ CV_WRAP bool isString() const;
+ //! returns true if the node has a name
+ CV_WRAP bool isNamed() const;
+ //! returns the node name or an empty string if the node is nameless
+ CV_WRAP string name() const;
+ //! returns the number of elements in the node, if it is a sequence or mapping, or 1 otherwise.
+ CV_WRAP size_t size() const;
+ //! returns the node content as an integer. If the node stores floating-point number, it is rounded.
+ operator int() const;
+ //! returns the node content as float
+ operator float() const;
+ //! returns the node content as double
+ operator double() const;
+ //! returns the node content as text string
+ operator string() const;
+
+ //! returns pointer to the underlying file node
+ CvFileNode* operator *();
+ //! returns pointer to the underlying file node
+ const CvFileNode* operator* () const;
+
+ //! returns iterator pointing to the first node element
+ FileNodeIterator begin() const;
+ //! returns iterator pointing to the element following the last node element
+ FileNodeIterator end() const;
+
+ //! reads node elements to the buffer with the specified format
+ void readRaw( const string& fmt, uchar* vec, size_t len ) const;
+ //! reads the registered object and returns pointer to it
+ void* readObj() const;
+
+ // do not use wrapper pointer classes for better efficiency
+ const CvFileStorage* fs;
+ const CvFileNode* node;
+};
+
+
+/*!
+ File Node Iterator
+
+ The class is used for iterating sequences (usually) and mappings.
+ */
+class CV_EXPORTS FileNodeIterator
+{
+public:
+ //! the default constructor
+ FileNodeIterator();
+ //! the full constructor set to the ofs-th element of the node
+ FileNodeIterator(const CvFileStorage* fs, const CvFileNode* node, size_t ofs=0);
+ //! the copy constructor
+ FileNodeIterator(const FileNodeIterator& it);
+ //! returns the currently observed element
+ FileNode operator *() const;
+ //! accesses the currently observed element methods
+ FileNode operator ->() const;
+
+ //! moves iterator to the next node
+ FileNodeIterator& operator ++ ();
+ //! moves iterator to the next node
+ FileNodeIterator operator ++ (int);
+ //! moves iterator to the previous node
+ FileNodeIterator& operator -- ();
+ //! moves iterator to the previous node
+ FileNodeIterator operator -- (int);
+ //! moves iterator forward by the specified offset (possibly negative)
+ FileNodeIterator& operator += (int ofs);
+ //! moves iterator backward by the specified offset (possibly negative)
+ FileNodeIterator& operator -= (int ofs);
+
+ //! reads the next maxCount elements (or less, if the sequence/mapping last element occurs earlier) to the buffer with the specified format
+ FileNodeIterator& readRaw( const string& fmt, uchar* vec,
+ size_t maxCount=(size_t)INT_MAX );
+
+ const CvFileStorage* fs;
+ const CvFileNode* container;
+ CvSeqReader reader;
+ size_t remaining;
+};
+
+////////////// convenient wrappers for operating old-style dynamic structures //////////////
+
+template<typename _Tp> class SeqIterator;
+
+typedef Ptr<CvMemStorage> MemStorage;
+
+/*!
+ Template Sequence Class derived from CvSeq
+
+ The class provides more convenient access to sequence elements,
+ STL-style operations and iterators.
+
+ \note The class is targeted for simple data types,
+ i.e. no constructors or destructors
+ are called for the sequence elements.
+*/
+template<typename _Tp> class Seq
+{
+public:
+ typedef SeqIterator<_Tp> iterator;
+ typedef SeqIterator<_Tp> const_iterator;
+
+ //! the default constructor
+ Seq();
+ //! the constructor for wrapping CvSeq structure. The real element type in CvSeq should match _Tp.
+ Seq(const CvSeq* seq);
+ //! creates the empty sequence that resides in the specified storage
+ Seq(MemStorage& storage, int headerSize = sizeof(CvSeq));
+ //! returns read-write reference to the specified element
+ _Tp& operator [](int idx);
+ //! returns read-only reference to the specified element
+ const _Tp& operator[](int idx) const;
+ //! returns iterator pointing to the beginning of the sequence
+ SeqIterator<_Tp> begin() const;
+ //! returns iterator pointing to the element following the last sequence element
+ SeqIterator<_Tp> end() const;
+ //! returns the number of elements in the sequence
+ size_t size() const;
+ //! returns the type of sequence elements (CV_8UC1 ... CV_64FC(CV_CN_MAX) ...)
+ int type() const;
+ //! returns the depth of sequence elements (CV_8U ... CV_64F)
+ int depth() const;
+ //! returns the number of channels in each sequence element
+ int channels() const;
+ //! returns the size of each sequence element
+ size_t elemSize() const;
+ //! returns index of the specified sequence element
+ size_t index(const _Tp& elem) const;
+ //! appends the specified element to the end of the sequence
+ void push_back(const _Tp& elem);
+ //! appends the specified element to the front of the sequence
+ void push_front(const _Tp& elem);
+ //! appends zero or more elements to the end of the sequence
+ void push_back(const _Tp* elems, size_t count);
+ //! appends zero or more elements to the front of the sequence
+ void push_front(const _Tp* elems, size_t count);
+ //! inserts the specified element to the specified position
+ void insert(int idx, const _Tp& elem);
+ //! inserts zero or more elements to the specified position
+ void insert(int idx, const _Tp* elems, size_t count);
+ //! removes element at the specified position
+ void remove(int idx);
+ //! removes the specified subsequence
+ void remove(const Range& r);
+
+ //! returns reference to the first sequence element
+ _Tp& front();
+ //! returns read-only reference to the first sequence element
+ const _Tp& front() const;
+ //! returns reference to the last sequence element
+ _Tp& back();
+ //! returns read-only reference to the last sequence element
+ const _Tp& back() const;
+ //! returns true iff the sequence contains no elements
+ bool empty() const;
+
+ //! removes all the elements from the sequence
+ void clear();
+ //! removes the first element from the sequence
+ void pop_front();
+ //! removes the last element from the sequence
+ void pop_back();
+ //! removes zero or more elements from the beginning of the sequence
+ void pop_front(_Tp* elems, size_t count);
+ //! removes zero or more elements from the end of the sequence
+ void pop_back(_Tp* elems, size_t count);
+
+ //! copies the whole sequence or the sequence slice to the specified vector
+ void copyTo(vector<_Tp>& vec, const Range& range=Range::all()) const;
+ //! returns the vector containing all the sequence elements
+ operator vector<_Tp>() const;
+
+ CvSeq* seq;
+};
+
+
+/*!
+ STL-style Sequence Iterator inherited from the CvSeqReader structure
+*/
+template<typename _Tp> class SeqIterator : public CvSeqReader
+{
+public:
+ //! the default constructor
+ SeqIterator();
+ //! the constructor setting the iterator to the beginning or to the end of the sequence
+ SeqIterator(const Seq<_Tp>& seq, bool seekEnd=false);
+ //! positions the iterator within the sequence
+ void seek(size_t pos);
+ //! reports the current iterator position
+ size_t tell() const;
+ //! returns reference to the current sequence element
+ _Tp& operator *();
+ //! returns read-only reference to the current sequence element
+ const _Tp& operator *() const;
+ //! moves iterator to the next sequence element
+ SeqIterator& operator ++();
+ //! moves iterator to the next sequence element
+ SeqIterator operator ++(int) const;
+ //! moves iterator to the previous sequence element
+ SeqIterator& operator --();
+ //! moves iterator to the previous sequence element
+ SeqIterator operator --(int) const;
+
+ //! moves iterator forward by the specified offset (possibly negative)
+ SeqIterator& operator +=(int);
+ //! moves iterator backward by the specified offset (possibly negative)
+ SeqIterator& operator -=(int);
+
+ // this is index of the current element module seq->total*2
+ // (to distinguish between 0 and seq->total)
+ int index;
+};
+
+
+class CV_EXPORTS Algorithm;
+class CV_EXPORTS AlgorithmInfo;
+struct CV_EXPORTS AlgorithmInfoData;
+
+template<typename _Tp> struct ParamType {};
+
+/*!
+ Base class for high-level OpenCV algorithms
+*/
+class CV_EXPORTS_W Algorithm
+{
+public:
+ Algorithm();
+ virtual ~Algorithm();
+ string name() const;
+
+ template<typename _Tp> typename ParamType<_Tp>::member_type get(const string& name) const;
+ template<typename _Tp> typename ParamType<_Tp>::member_type get(const char* name) const;
+
+ CV_WRAP int getInt(const string& name) const;
+ CV_WRAP double getDouble(const string& name) const;
+ CV_WRAP bool getBool(const string& name) const;
+ CV_WRAP string getString(const string& name) const;
+ CV_WRAP Mat getMat(const string& name) const;
+ CV_WRAP vector<Mat> getMatVector(const string& name) const;
+ CV_WRAP Ptr<Algorithm> getAlgorithm(const string& name) const;
+
+ void set(const string& name, int value);
+ void set(const string& name, double value);
+ void set(const string& name, bool value);
+ void set(const string& name, const string& value);
+ void set(const string& name, const Mat& value);
+ void set(const string& name, const vector<Mat>& value);
+ void set(const string& name, const Ptr<Algorithm>& value);
+ template<typename _Tp> void set(const string& name, const Ptr<_Tp>& value);
+
+ CV_WRAP void setInt(const string& name, int value);
+ CV_WRAP void setDouble(const string& name, double value);
+ CV_WRAP void setBool(const string& name, bool value);
+ CV_WRAP void setString(const string& name, const string& value);
+ CV_WRAP void setMat(const string& name, const Mat& value);
+ CV_WRAP void setMatVector(const string& name, const vector<Mat>& value);
+ CV_WRAP void setAlgorithm(const string& name, const Ptr<Algorithm>& value);
+ template<typename _Tp> void setAlgorithm(const string& name, const Ptr<_Tp>& value);
+
+ void set(const char* name, int value);
+ void set(const char* name, double value);
+ void set(const char* name, bool value);
+ void set(const char* name, const string& value);
+ void set(const char* name, const Mat& value);
+ void set(const char* name, const vector<Mat>& value);
+ void set(const char* name, const Ptr<Algorithm>& value);
+ template<typename _Tp> void set(const char* name, const Ptr<_Tp>& value);
+
+ void setInt(const char* name, int value);
+ void setDouble(const char* name, double value);
+ void setBool(const char* name, bool value);
+ void setString(const char* name, const string& value);
+ void setMat(const char* name, const Mat& value);
+ void setMatVector(const char* name, const vector<Mat>& value);
+ void setAlgorithm(const char* name, const Ptr<Algorithm>& value);
+ template<typename _Tp> void setAlgorithm(const char* name, const Ptr<_Tp>& value);
+
+ CV_WRAP string paramHelp(const string& name) const;
+ int paramType(const char* name) const;
+ CV_WRAP int paramType(const string& name) const;
+ CV_WRAP void getParams(CV_OUT vector<string>& names) const;
+
+
+ virtual void write(FileStorage& fs) const;
+ virtual void read(const FileNode& fn);
+
+ typedef Algorithm* (*Constructor)(void);
+ typedef int (Algorithm::*Getter)() const;
+ typedef void (Algorithm::*Setter)(int);
+
+ CV_WRAP static void getList(CV_OUT vector<string>& algorithms);
+ CV_WRAP static Ptr<Algorithm> _create(const string& name);
+ template<typename _Tp> static Ptr<_Tp> create(const string& name);
+
+ virtual AlgorithmInfo* info() const /* TODO: make it = 0;*/ { return 0; }
+};
+
+
+class CV_EXPORTS AlgorithmInfo
+{
+public:
+ friend class Algorithm;
+ AlgorithmInfo(const string& name, Algorithm::Constructor create);
+ ~AlgorithmInfo();
+ void get(const Algorithm* algo, const char* name, int argType, void* value) const;
+ void addParam_(Algorithm& algo, const char* name, int argType,
+ void* value, bool readOnly,
+ Algorithm::Getter getter, Algorithm::Setter setter,
+ const string& help=string());
+ string paramHelp(const char* name) const;
+ int paramType(const char* name) const;
+ void getParams(vector<string>& names) const;
+
+ void write(const Algorithm* algo, FileStorage& fs) const;
+ void read(Algorithm* algo, const FileNode& fn) const;
+ string name() const;
+
+ void addParam(Algorithm& algo, const char* name,
+ int& value, bool readOnly=false,
+ int (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(int)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ short& value, bool readOnly=false,
+ int (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(int)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ bool& value, bool readOnly=false,
+ int (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(int)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ double& value, bool readOnly=false,
+ double (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(double)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ string& value, bool readOnly=false,
+ string (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(const string&)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ Mat& value, bool readOnly=false,
+ Mat (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(const Mat&)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ vector<Mat>& value, bool readOnly=false,
+ vector<Mat> (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(const vector<Mat>&)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ Ptr<Algorithm>& value, bool readOnly=false,
+ Ptr<Algorithm> (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(const Ptr<Algorithm>&)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ float& value, bool readOnly=false,
+ float (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(float)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ unsigned int& value, bool readOnly=false,
+ unsigned int (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(unsigned int)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ uint64& value, bool readOnly=false,
+ uint64 (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(uint64)=0,
+ const string& help=string());
+ void addParam(Algorithm& algo, const char* name,
+ uchar& value, bool readOnly=false,
+ uchar (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(uchar)=0,
+ const string& help=string());
+ template<typename _Tp, typename _Base> void addParam(Algorithm& algo, const char* name,
+ Ptr<_Tp>& value, bool readOnly=false,
+ Ptr<_Tp> (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(const Ptr<_Tp>&)=0,
+ const string& help=string());
+ template<typename _Tp> void addParam(Algorithm& algo, const char* name,
+ Ptr<_Tp>& value, bool readOnly=false,
+ Ptr<_Tp> (Algorithm::*getter)()=0,
+ void (Algorithm::*setter)(const Ptr<_Tp>&)=0,
+ const string& help=string());
+protected:
+ AlgorithmInfoData* data;
+ void set(Algorithm* algo, const char* name, int argType,
+ const void* value, bool force=false) const;
+};
+
+
+struct CV_EXPORTS Param
+{
+ enum { INT=0, BOOLEAN=1, REAL=2, STRING=3, MAT=4, MAT_VECTOR=5, ALGORITHM=6, FLOAT=7, UNSIGNED_INT=8, UINT64=9, SHORT=10, UCHAR=11 };
+
+ Param();
+ Param(int _type, bool _readonly, int _offset,
+ Algorithm::Getter _getter=0,
+ Algorithm::Setter _setter=0,
+ const string& _help=string());
+ int type;
+ int offset;
+ bool readonly;
+ Algorithm::Getter getter;
+ Algorithm::Setter setter;
+ string help;
+};
+
+template<> struct ParamType<bool>
+{
+ typedef bool const_param_type;
+ typedef bool member_type;
+
+ enum { type = Param::BOOLEAN };
+};
+
+template<> struct ParamType<int>
+{
+ typedef int const_param_type;
+ typedef int member_type;
+
+ enum { type = Param::INT };
+};
+
+template<> struct ParamType<short>
+{
+ typedef int const_param_type;
+ typedef int member_type;
+
+ enum { type = Param::SHORT };
+};
+
+template<> struct ParamType<double>
+{
+ typedef double const_param_type;
+ typedef double member_type;
+
+ enum { type = Param::REAL };
+};
+
+template<> struct ParamType<string>
+{
+ typedef const string& const_param_type;
+ typedef string member_type;
+
+ enum { type = Param::STRING };
+};
+
+template<> struct ParamType<Mat>
+{
+ typedef const Mat& const_param_type;
+ typedef Mat member_type;
+
+ enum { type = Param::MAT };
+};
+
+template<> struct ParamType<vector<Mat> >
+{
+ typedef const vector<Mat>& const_param_type;
+ typedef vector<Mat> member_type;
+
+ enum { type = Param::MAT_VECTOR };
+};
+
+template<> struct ParamType<Algorithm>
+{
+ typedef const Ptr<Algorithm>& const_param_type;
+ typedef Ptr<Algorithm> member_type;
+
+ enum { type = Param::ALGORITHM };
+};
+
+template<> struct ParamType<float>
+{
+ typedef float const_param_type;
+ typedef float member_type;
+
+ enum { type = Param::FLOAT };
+};
+
+template<> struct ParamType<unsigned>
+{
+ typedef unsigned const_param_type;
+ typedef unsigned member_type;
+
+ enum { type = Param::UNSIGNED_INT };
+};
+
+template<> struct ParamType<uint64>
+{
+ typedef uint64 const_param_type;
+ typedef uint64 member_type;
+
+ enum { type = Param::UINT64 };
+};
+
+template<> struct ParamType<uchar>
+{
+ typedef uchar const_param_type;
+ typedef uchar member_type;
+
+ enum { type = Param::UCHAR };
+};
+
+/*!
+"\nThe CommandLineParser class is designed for command line arguments parsing\n"
+ "Keys map: \n"
+ "Before you start to work with CommandLineParser you have to create a map for keys.\n"
+ " It will look like this\n"
+ " const char* keys =\n"
+ " {\n"
+ " { s| string| 123asd |string parameter}\n"
+ " { d| digit | 100 |digit parameter }\n"
+ " { c|noCamera|false |without camera }\n"
+ " { 1| |some text|help }\n"
+ " { 2| |333 |another help }\n"
+ " };\n"
+ "Usage syntax: \n"
+ " \"{\" - start of parameter string.\n"
+ " \"}\" - end of parameter string\n"
+ " \"|\" - separator between short name, full name, default value and help\n"
+ "Supported syntax: \n"
+ " --key1=arg1 <If a key with '--' must has an argument\n"
+ " you have to assign it through '=' sign.> \n"
+ "<If the key with '--' doesn't have any argument, it means that it is a bool key>\n"
+ " -key2=arg2 <If a key with '-' must has an argument \n"
+ " you have to assign it through '=' sign.> \n"
+ "If the key with '-' doesn't have any argument, it means that it is a bool key\n"
+ " key3 <This key can't has any parameter> \n"
+ "Usage: \n"
+ " Imagine that the input parameters are next:\n"
+ " -s=string_value --digit=250 --noCamera lena.jpg 10000\n"
+ " CommandLineParser parser(argc, argv, keys) - create a parser object\n"
+ " parser.get<string>(\"s\" or \"string\") will return you first parameter value\n"
+ " parser.get<string>(\"s\", false or \"string\", false) will return you first parameter value\n"
+ " without spaces in end and begin\n"
+ " parser.get<int>(\"d\" or \"digit\") will return you second parameter value.\n"
+ " It also works with 'unsigned int', 'double', and 'float' types>\n"
+ " parser.get<bool>(\"c\" or \"noCamera\") will return you true .\n"
+ " If you enter this key in commandline>\n"
+ " It return you false otherwise.\n"
+ " parser.get<string>(\"1\") will return you the first argument without parameter (lena.jpg) \n"
+ " parser.get<int>(\"2\") will return you the second argument without parameter (10000)\n"
+ " It also works with 'unsigned int', 'double', and 'float' types \n"
+*/
+class CV_EXPORTS CommandLineParser
+{
+ public:
+
+ //! the default constructor
+ CommandLineParser(int argc, const char* const argv[], const char* key_map);
+
+ //! get parameter, you can choose: delete spaces in end and begin or not
+ template<typename _Tp>
+ _Tp get(const std::string& name, bool space_delete=true)
+ {
+ if (!has(name))
+ {
+ return _Tp();
+ }
+ std::string str = getString(name);
+ return analyzeValue<_Tp>(str, space_delete);
+ }
+
+ //! print short name, full name, current value and help for all params
+ void printParams();
+
+ protected:
+ std::map<std::string, std::vector<std::string> > data;
+ std::string getString(const std::string& name);
+
+ bool has(const std::string& keys);
+
+ template<typename _Tp>
+ _Tp analyzeValue(const std::string& str, bool space_delete=false);
+
+ template<typename _Tp>
+ static _Tp getData(const std::string& str)
+ {
+ _Tp res = _Tp();
+ std::stringstream s1(str);
+ s1 >> res;
+ return res;
+ }
+
+ template<typename _Tp>
+ _Tp fromStringNumber(const std::string& str);//the default conversion function for numbers
+
+ };
+
+template<> CV_EXPORTS
+bool CommandLineParser::get<bool>(const std::string& name, bool space_delete);
+
+template<> CV_EXPORTS
+std::string CommandLineParser::analyzeValue<std::string>(const std::string& str, bool space_delete);
+
+template<> CV_EXPORTS
+int CommandLineParser::analyzeValue<int>(const std::string& str, bool space_delete);
+
+template<> CV_EXPORTS
+unsigned int CommandLineParser::analyzeValue<unsigned int>(const std::string& str, bool space_delete);
+
+template<> CV_EXPORTS
+uint64 CommandLineParser::analyzeValue<uint64>(const std::string& str, bool space_delete);
+
+template<> CV_EXPORTS
+float CommandLineParser::analyzeValue<float>(const std::string& str, bool space_delete);
+
+template<> CV_EXPORTS
+double CommandLineParser::analyzeValue<double>(const std::string& str, bool space_delete);
+
+
+/////////////////////////////// Parallel Primitives //////////////////////////////////
+
+// a base body class
+class CV_EXPORTS ParallelLoopBody
+{
+public:
+ virtual ~ParallelLoopBody();
+ virtual void operator() (const Range& range) const = 0;
+};
+
+CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body, double nstripes=-1.);
+
+/////////////////////////// Synchronization Primitives ///////////////////////////////
+
+class CV_EXPORTS Mutex
+{
+public:
+ Mutex();
+ ~Mutex();
+ Mutex(const Mutex& m);
+ Mutex& operator = (const Mutex& m);
+
+ void lock();
+ bool trylock();
+ void unlock();
+
+ struct Impl;
+protected:
+ Impl* impl;
+};
+
+class CV_EXPORTS AutoLock
+{
+public:
+ AutoLock(Mutex& m) : mutex(&m) { mutex->lock(); }
+ ~AutoLock() { mutex->unlock(); }
+protected:
+ Mutex* mutex;
+private:
+ AutoLock(const AutoLock&);
+ AutoLock& operator = (const AutoLock&);
+};
+
+class TLSDataContainer
+{
+private:
+ int key_;
+protected:
+ CV_EXPORTS TLSDataContainer();
+ CV_EXPORTS ~TLSDataContainer(); // virtual is not required
+public:
+ virtual void* createDataInstance() const = 0;
+ virtual void deleteDataInstance(void* data) const = 0;
+
+ CV_EXPORTS void* getData() const;
+};
+
+template <typename T>
+class TLSData : protected TLSDataContainer
+{
+public:
+ inline TLSData() {}
+ inline ~TLSData() {}
+ inline T* get() const { return (T*)getData(); }
+private:
+ virtual void* createDataInstance() const { return new T; }
+ virtual void deleteDataInstance(void* data) const { delete (T*)data; }
+};
+
+}
+
+#endif // __cplusplus
+
+#include "opencv2/core/operations.hpp"
+#include "opencv2/core/mat.hpp"
+
+#endif /*__OPENCV_CORE_HPP__*/
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/core_c.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/core_c.h
new file mode 100644
index 00000000..b9f1090a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/core_c.h
@@ -0,0 +1,1886 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+
+#ifndef __OPENCV_CORE_C_H__
+#define __OPENCV_CORE_C_H__
+
+#include "opencv2/core/types_c.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************************\
+* Array allocation, deallocation, initialization and access to elements *
+\****************************************************************************************/
+
+/* <malloc> wrapper.
+ If there is no enough memory, the function
+ (as well as other OpenCV functions that call cvAlloc)
+ raises an error. */
+CVAPI(void*) cvAlloc( size_t size );
+
+/* <free> wrapper.
+ Here and further all the memory releasing functions
+ (that all call cvFree) take double pointer in order to
+ to clear pointer to the data after releasing it.
+ Passing pointer to NULL pointer is Ok: nothing happens in this case
+*/
+CVAPI(void) cvFree_( void* ptr );
+#define cvFree(ptr) (cvFree_(*(ptr)), *(ptr)=0)
+
+/* Allocates and initializes IplImage header */
+CVAPI(IplImage*) cvCreateImageHeader( CvSize size, int depth, int channels );
+
+/* Inializes IplImage header */
+CVAPI(IplImage*) cvInitImageHeader( IplImage* image, CvSize size, int depth,
+ int channels, int origin CV_DEFAULT(0),
+ int align CV_DEFAULT(4));
+
+/* Creates IPL image (header and data) */
+CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels );
+
+/* Releases (i.e. deallocates) IPL image header */
+CVAPI(void) cvReleaseImageHeader( IplImage** image );
+
+/* Releases IPL image header and data */
+CVAPI(void) cvReleaseImage( IplImage** image );
+
+/* Creates a copy of IPL image (widthStep may differ) */
+CVAPI(IplImage*) cvCloneImage( const IplImage* image );
+
+/* Sets a Channel Of Interest (only a few functions support COI) -
+ use cvCopy to extract the selected channel and/or put it back */
+CVAPI(void) cvSetImageCOI( IplImage* image, int coi );
+
+/* Retrieves image Channel Of Interest */
+CVAPI(int) cvGetImageCOI( const IplImage* image );
+
+/* Sets image ROI (region of interest) (COI is not changed) */
+CVAPI(void) cvSetImageROI( IplImage* image, CvRect rect );
+
+/* Resets image ROI and COI */
+CVAPI(void) cvResetImageROI( IplImage* image );
+
+/* Retrieves image ROI */
+CVAPI(CvRect) cvGetImageROI( const IplImage* image );
+
+/* Allocates and initializes CvMat header */
+CVAPI(CvMat*) cvCreateMatHeader( int rows, int cols, int type );
+
+#define CV_AUTOSTEP 0x7fffffff
+
+/* Initializes CvMat header */
+CVAPI(CvMat*) cvInitMatHeader( CvMat* mat, int rows, int cols,
+ int type, void* data CV_DEFAULT(NULL),
+ int step CV_DEFAULT(CV_AUTOSTEP) );
+
+/* Allocates and initializes CvMat header and allocates data */
+CVAPI(CvMat*) cvCreateMat( int rows, int cols, int type );
+
+/* Releases CvMat header and deallocates matrix data
+ (reference counting is used for data) */
+CVAPI(void) cvReleaseMat( CvMat** mat );
+
+/* Decrements CvMat data reference counter and deallocates the data if
+ it reaches 0 */
+CV_INLINE void cvDecRefData( CvArr* arr )
+{
+ if( CV_IS_MAT( arr ))
+ {
+ CvMat* mat = (CvMat*)arr;
+ mat->data.ptr = NULL;
+ if( mat->refcount != NULL && --*mat->refcount == 0 )
+ cvFree( &mat->refcount );
+ mat->refcount = NULL;
+ }
+ else if( CV_IS_MATND( arr ))
+ {
+ CvMatND* mat = (CvMatND*)arr;
+ mat->data.ptr = NULL;
+ if( mat->refcount != NULL && --*mat->refcount == 0 )
+ cvFree( &mat->refcount );
+ mat->refcount = NULL;
+ }
+}
+
+/* Increments CvMat data reference counter */
+CV_INLINE int cvIncRefData( CvArr* arr )
+{
+ int refcount = 0;
+ if( CV_IS_MAT( arr ))
+ {
+ CvMat* mat = (CvMat*)arr;
+ if( mat->refcount != NULL )
+ refcount = ++*mat->refcount;
+ }
+ else if( CV_IS_MATND( arr ))
+ {
+ CvMatND* mat = (CvMatND*)arr;
+ if( mat->refcount != NULL )
+ refcount = ++*mat->refcount;
+ }
+ return refcount;
+}
+
+
+/* Creates an exact copy of the input matrix (except, may be, step value) */
+CVAPI(CvMat*) cvCloneMat( const CvMat* mat );
+
+
+/* Makes a new matrix from <rect> subrectangle of input array.
+ No data is copied */
+CVAPI(CvMat*) cvGetSubRect( const CvArr* arr, CvMat* submat, CvRect rect );
+#define cvGetSubArr cvGetSubRect
+
+/* Selects row span of the input array: arr(start_row:delta_row:end_row,:)
+ (end_row is not included into the span). */
+CVAPI(CvMat*) cvGetRows( const CvArr* arr, CvMat* submat,
+ int start_row, int end_row,
+ int delta_row CV_DEFAULT(1));
+
+CV_INLINE CvMat* cvGetRow( const CvArr* arr, CvMat* submat, int row )
+{
+ return cvGetRows( arr, submat, row, row + 1, 1 );
+}
+
+
+/* Selects column span of the input array: arr(:,start_col:end_col)
+ (end_col is not included into the span) */
+CVAPI(CvMat*) cvGetCols( const CvArr* arr, CvMat* submat,
+ int start_col, int end_col );
+
+CV_INLINE CvMat* cvGetCol( const CvArr* arr, CvMat* submat, int col )
+{
+ return cvGetCols( arr, submat, col, col + 1 );
+}
+
+/* Select a diagonal of the input array.
+ (diag = 0 means the main diagonal, >0 means a diagonal above the main one,
+ <0 - below the main one).
+ The diagonal will be represented as a column (nx1 matrix). */
+CVAPI(CvMat*) cvGetDiag( const CvArr* arr, CvMat* submat,
+ int diag CV_DEFAULT(0));
+
+/* low-level scalar <-> raw data conversion functions */
+CVAPI(void) cvScalarToRawData( const CvScalar* scalar, void* data, int type,
+ int extend_to_12 CV_DEFAULT(0) );
+
+CVAPI(void) cvRawDataToScalar( const void* data, int type, CvScalar* scalar );
+
+/* Allocates and initializes CvMatND header */
+CVAPI(CvMatND*) cvCreateMatNDHeader( int dims, const int* sizes, int type );
+
+/* Allocates and initializes CvMatND header and allocates data */
+CVAPI(CvMatND*) cvCreateMatND( int dims, const int* sizes, int type );
+
+/* Initializes preallocated CvMatND header */
+CVAPI(CvMatND*) cvInitMatNDHeader( CvMatND* mat, int dims, const int* sizes,
+ int type, void* data CV_DEFAULT(NULL) );
+
+/* Releases CvMatND */
+CV_INLINE void cvReleaseMatND( CvMatND** mat )
+{
+ cvReleaseMat( (CvMat**)mat );
+}
+
+/* Creates a copy of CvMatND (except, may be, steps) */
+CVAPI(CvMatND*) cvCloneMatND( const CvMatND* mat );
+
+/* Allocates and initializes CvSparseMat header and allocates data */
+CVAPI(CvSparseMat*) cvCreateSparseMat( int dims, const int* sizes, int type );
+
+/* Releases CvSparseMat */
+CVAPI(void) cvReleaseSparseMat( CvSparseMat** mat );
+
+/* Creates a copy of CvSparseMat (except, may be, zero items) */
+CVAPI(CvSparseMat*) cvCloneSparseMat( const CvSparseMat* mat );
+
+/* Initializes sparse array iterator
+ (returns the first node or NULL if the array is empty) */
+CVAPI(CvSparseNode*) cvInitSparseMatIterator( const CvSparseMat* mat,
+ CvSparseMatIterator* mat_iterator );
+
+// returns next sparse array node (or NULL if there is no more nodes)
+CV_INLINE CvSparseNode* cvGetNextSparseNode( CvSparseMatIterator* mat_iterator )
+{
+ if( mat_iterator->node->next )
+ return mat_iterator->node = mat_iterator->node->next;
+ else
+ {
+ int idx;
+ for( idx = ++mat_iterator->curidx; idx < mat_iterator->mat->hashsize; idx++ )
+ {
+ CvSparseNode* node = (CvSparseNode*)mat_iterator->mat->hashtable[idx];
+ if( node )
+ {
+ mat_iterator->curidx = idx;
+ return mat_iterator->node = node;
+ }
+ }
+ return NULL;
+ }
+}
+
+/**************** matrix iterator: used for n-ary operations on dense arrays *********/
+
+#define CV_MAX_ARR 10
+
+typedef struct CvNArrayIterator
+{
+ int count; /* number of arrays */
+ int dims; /* number of dimensions to iterate */
+ CvSize size; /* maximal common linear size: { width = size, height = 1 } */
+ uchar* ptr[CV_MAX_ARR]; /* pointers to the array slices */
+ int stack[CV_MAX_DIM]; /* for internal use */
+ CvMatND* hdr[CV_MAX_ARR]; /* pointers to the headers of the
+ matrices that are processed */
+}
+CvNArrayIterator;
+
+#define CV_NO_DEPTH_CHECK 1
+#define CV_NO_CN_CHECK 2
+#define CV_NO_SIZE_CHECK 4
+
+/* initializes iterator that traverses through several arrays simulteneously
+ (the function together with cvNextArraySlice is used for
+ N-ari element-wise operations) */
+CVAPI(int) cvInitNArrayIterator( int count, CvArr** arrs,
+ const CvArr* mask, CvMatND* stubs,
+ CvNArrayIterator* array_iterator,
+ int flags CV_DEFAULT(0) );
+
+/* returns zero value if iteration is finished, non-zero (slice length) otherwise */
+CVAPI(int) cvNextNArraySlice( CvNArrayIterator* array_iterator );
+
+
+/* Returns type of array elements:
+ CV_8UC1 ... CV_64FC4 ... */
+CVAPI(int) cvGetElemType( const CvArr* arr );
+
+/* Retrieves number of an array dimensions and
+ optionally sizes of the dimensions */
+CVAPI(int) cvGetDims( const CvArr* arr, int* sizes CV_DEFAULT(NULL) );
+
+
+/* Retrieves size of a particular array dimension.
+ For 2d arrays cvGetDimSize(arr,0) returns number of rows (image height)
+ and cvGetDimSize(arr,1) returns number of columns (image width) */
+CVAPI(int) cvGetDimSize( const CvArr* arr, int index );
+
+
+/* ptr = &arr(idx0,idx1,...). All indexes are zero-based,
+ the major dimensions go first (e.g. (y,x) for 2D, (z,y,x) for 3D */
+CVAPI(uchar*) cvPtr1D( const CvArr* arr, int idx0, int* type CV_DEFAULT(NULL));
+CVAPI(uchar*) cvPtr2D( const CvArr* arr, int idx0, int idx1, int* type CV_DEFAULT(NULL) );
+CVAPI(uchar*) cvPtr3D( const CvArr* arr, int idx0, int idx1, int idx2,
+ int* type CV_DEFAULT(NULL));
+
+/* For CvMat or IplImage number of indices should be 2
+ (row index (y) goes first, column index (x) goes next).
+ For CvMatND or CvSparseMat number of infices should match number of <dims> and
+ indices order should match the array dimension order. */
+CVAPI(uchar*) cvPtrND( const CvArr* arr, const int* idx, int* type CV_DEFAULT(NULL),
+ int create_node CV_DEFAULT(1),
+ unsigned* precalc_hashval CV_DEFAULT(NULL));
+
+/* value = arr(idx0,idx1,...) */
+CVAPI(CvScalar) cvGet1D( const CvArr* arr, int idx0 );
+CVAPI(CvScalar) cvGet2D( const CvArr* arr, int idx0, int idx1 );
+CVAPI(CvScalar) cvGet3D( const CvArr* arr, int idx0, int idx1, int idx2 );
+CVAPI(CvScalar) cvGetND( const CvArr* arr, const int* idx );
+
+/* for 1-channel arrays */
+CVAPI(double) cvGetReal1D( const CvArr* arr, int idx0 );
+CVAPI(double) cvGetReal2D( const CvArr* arr, int idx0, int idx1 );
+CVAPI(double) cvGetReal3D( const CvArr* arr, int idx0, int idx1, int idx2 );
+CVAPI(double) cvGetRealND( const CvArr* arr, const int* idx );
+
+/* arr(idx0,idx1,...) = value */
+CVAPI(void) cvSet1D( CvArr* arr, int idx0, CvScalar value );
+CVAPI(void) cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value );
+CVAPI(void) cvSet3D( CvArr* arr, int idx0, int idx1, int idx2, CvScalar value );
+CVAPI(void) cvSetND( CvArr* arr, const int* idx, CvScalar value );
+
+/* for 1-channel arrays */
+CVAPI(void) cvSetReal1D( CvArr* arr, int idx0, double value );
+CVAPI(void) cvSetReal2D( CvArr* arr, int idx0, int idx1, double value );
+CVAPI(void) cvSetReal3D( CvArr* arr, int idx0,
+ int idx1, int idx2, double value );
+CVAPI(void) cvSetRealND( CvArr* arr, const int* idx, double value );
+
+/* clears element of ND dense array,
+ in case of sparse arrays it deletes the specified node */
+CVAPI(void) cvClearND( CvArr* arr, const int* idx );
+
+/* Converts CvArr (IplImage or CvMat,...) to CvMat.
+ If the last parameter is non-zero, function can
+ convert multi(>2)-dimensional array to CvMat as long as
+ the last array's dimension is continous. The resultant
+ matrix will be have appropriate (a huge) number of rows */
+CVAPI(CvMat*) cvGetMat( const CvArr* arr, CvMat* header,
+ int* coi CV_DEFAULT(NULL),
+ int allowND CV_DEFAULT(0));
+
+/* Converts CvArr (IplImage or CvMat) to IplImage */
+CVAPI(IplImage*) cvGetImage( const CvArr* arr, IplImage* image_header );
+
+
+/* Changes a shape of multi-dimensional array.
+ new_cn == 0 means that number of channels remains unchanged.
+ new_dims == 0 means that number and sizes of dimensions remain the same
+ (unless they need to be changed to set the new number of channels)
+ if new_dims == 1, there is no need to specify new dimension sizes
+ The resultant configuration should be achievable w/o data copying.
+ If the resultant array is sparse, CvSparseMat header should be passed
+ to the function else if the result is 1 or 2 dimensional,
+ CvMat header should be passed to the function
+ else CvMatND header should be passed */
+CVAPI(CvArr*) cvReshapeMatND( const CvArr* arr,
+ int sizeof_header, CvArr* header,
+ int new_cn, int new_dims, int* new_sizes );
+
+#define cvReshapeND( arr, header, new_cn, new_dims, new_sizes ) \
+ cvReshapeMatND( (arr), sizeof(*(header)), (header), \
+ (new_cn), (new_dims), (new_sizes))
+
+CVAPI(CvMat*) cvReshape( const CvArr* arr, CvMat* header,
+ int new_cn, int new_rows CV_DEFAULT(0) );
+
+/* Repeats source 2d array several times in both horizontal and
+ vertical direction to fill destination array */
+CVAPI(void) cvRepeat( const CvArr* src, CvArr* dst );
+
+/* Allocates array data */
+CVAPI(void) cvCreateData( CvArr* arr );
+
+/* Releases array data */
+CVAPI(void) cvReleaseData( CvArr* arr );
+
+/* Attaches user data to the array header. The step is reffered to
+ the pre-last dimension. That is, all the planes of the array
+ must be joint (w/o gaps) */
+CVAPI(void) cvSetData( CvArr* arr, void* data, int step );
+
+/* Retrieves raw data of CvMat, IplImage or CvMatND.
+ In the latter case the function raises an error if
+ the array can not be represented as a matrix */
+CVAPI(void) cvGetRawData( const CvArr* arr, uchar** data,
+ int* step CV_DEFAULT(NULL),
+ CvSize* roi_size CV_DEFAULT(NULL));
+
+/* Returns width and height of array in elements */
+CVAPI(CvSize) cvGetSize( const CvArr* arr );
+
+/* Copies source array to destination array */
+CVAPI(void) cvCopy( const CvArr* src, CvArr* dst,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Sets all or "masked" elements of input array
+ to the same value*/
+CVAPI(void) cvSet( CvArr* arr, CvScalar value,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Clears all the array elements (sets them to 0) */
+CVAPI(void) cvSetZero( CvArr* arr );
+#define cvZero cvSetZero
+
+
+/* Splits a multi-channel array into the set of single-channel arrays or
+ extracts particular [color] plane */
+CVAPI(void) cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1,
+ CvArr* dst2, CvArr* dst3 );
+
+/* Merges a set of single-channel arrays into the single multi-channel array
+ or inserts one particular [color] plane to the array */
+CVAPI(void) cvMerge( const CvArr* src0, const CvArr* src1,
+ const CvArr* src2, const CvArr* src3,
+ CvArr* dst );
+
+/* Copies several channels from input arrays to
+ certain channels of output arrays */
+CVAPI(void) cvMixChannels( const CvArr** src, int src_count,
+ CvArr** dst, int dst_count,
+ const int* from_to, int pair_count );
+
+/* Performs linear transformation on every source array element:
+ dst(x,y,c) = scale*src(x,y,c)+shift.
+ Arbitrary combination of input and output array depths are allowed
+ (number of channels must be the same), thus the function can be used
+ for type conversion */
+CVAPI(void) cvConvertScale( const CvArr* src, CvArr* dst,
+ double scale CV_DEFAULT(1),
+ double shift CV_DEFAULT(0) );
+#define cvCvtScale cvConvertScale
+#define cvScale cvConvertScale
+#define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 )
+
+
+/* Performs linear transformation on every source array element,
+ stores absolute value of the result:
+ dst(x,y,c) = abs(scale*src(x,y,c)+shift).
+ destination array must have 8u type.
+ In other cases one may use cvConvertScale + cvAbsDiffS */
+CVAPI(void) cvConvertScaleAbs( const CvArr* src, CvArr* dst,
+ double scale CV_DEFAULT(1),
+ double shift CV_DEFAULT(0) );
+#define cvCvtScaleAbs cvConvertScaleAbs
+
+
+/* checks termination criteria validity and
+ sets eps to default_eps (if it is not set),
+ max_iter to default_max_iters (if it is not set)
+*/
+CVAPI(CvTermCriteria) cvCheckTermCriteria( CvTermCriteria criteria,
+ double default_eps,
+ int default_max_iters );
+
+/****************************************************************************************\
+* Arithmetic, logic and comparison operations *
+\****************************************************************************************/
+
+/* dst(mask) = src1(mask) + src2(mask) */
+CVAPI(void) cvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst,
+ const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(mask) = src(mask) + value */
+CVAPI(void) cvAddS( const CvArr* src, CvScalar value, CvArr* dst,
+ const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(mask) = src1(mask) - src2(mask) */
+CVAPI(void) cvSub( const CvArr* src1, const CvArr* src2, CvArr* dst,
+ const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(mask) = src(mask) - value = src(mask) + (-value) */
+CV_INLINE void cvSubS( const CvArr* src, CvScalar value, CvArr* dst,
+ const CvArr* mask CV_DEFAULT(NULL))
+{
+ cvAddS( src, cvScalar( -value.val[0], -value.val[1], -value.val[2], -value.val[3]),
+ dst, mask );
+}
+
+/* dst(mask) = value - src(mask) */
+CVAPI(void) cvSubRS( const CvArr* src, CvScalar value, CvArr* dst,
+ const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = src1(idx) * src2(idx) * scale
+ (scaled element-wise multiplication of 2 arrays) */
+CVAPI(void) cvMul( const CvArr* src1, const CvArr* src2,
+ CvArr* dst, double scale CV_DEFAULT(1) );
+
+/* element-wise division/inversion with scaling:
+ dst(idx) = src1(idx) * scale / src2(idx)
+ or dst(idx) = scale / src2(idx) if src1 == 0 */
+CVAPI(void) cvDiv( const CvArr* src1, const CvArr* src2,
+ CvArr* dst, double scale CV_DEFAULT(1));
+
+/* dst = src1 * scale + src2 */
+CVAPI(void) cvScaleAdd( const CvArr* src1, CvScalar scale,
+ const CvArr* src2, CvArr* dst );
+#define cvAXPY( A, real_scalar, B, C ) cvScaleAdd(A, cvRealScalar(real_scalar), B, C)
+
+/* dst = src1 * alpha + src2 * beta + gamma */
+CVAPI(void) cvAddWeighted( const CvArr* src1, double alpha,
+ const CvArr* src2, double beta,
+ double gamma, CvArr* dst );
+
+/* result = sum_i(src1(i) * src2(i)) (results for all channels are accumulated together) */
+CVAPI(double) cvDotProduct( const CvArr* src1, const CvArr* src2 );
+
+/* dst(idx) = src1(idx) & src2(idx) */
+CVAPI(void) cvAnd( const CvArr* src1, const CvArr* src2,
+ CvArr* dst, const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = src(idx) & value */
+CVAPI(void) cvAndS( const CvArr* src, CvScalar value,
+ CvArr* dst, const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = src1(idx) | src2(idx) */
+CVAPI(void) cvOr( const CvArr* src1, const CvArr* src2,
+ CvArr* dst, const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = src(idx) | value */
+CVAPI(void) cvOrS( const CvArr* src, CvScalar value,
+ CvArr* dst, const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = src1(idx) ^ src2(idx) */
+CVAPI(void) cvXor( const CvArr* src1, const CvArr* src2,
+ CvArr* dst, const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = src(idx) ^ value */
+CVAPI(void) cvXorS( const CvArr* src, CvScalar value,
+ CvArr* dst, const CvArr* mask CV_DEFAULT(NULL));
+
+/* dst(idx) = ~src(idx) */
+CVAPI(void) cvNot( const CvArr* src, CvArr* dst );
+
+/* dst(idx) = lower(idx) <= src(idx) < upper(idx) */
+CVAPI(void) cvInRange( const CvArr* src, const CvArr* lower,
+ const CvArr* upper, CvArr* dst );
+
+/* dst(idx) = lower <= src(idx) < upper */
+CVAPI(void) cvInRangeS( const CvArr* src, CvScalar lower,
+ CvScalar upper, CvArr* dst );
+
+#define CV_CMP_EQ 0
+#define CV_CMP_GT 1
+#define CV_CMP_GE 2
+#define CV_CMP_LT 3
+#define CV_CMP_LE 4
+#define CV_CMP_NE 5
+
+/* The comparison operation support single-channel arrays only.
+ Destination image should be 8uC1 or 8sC1 */
+
+/* dst(idx) = src1(idx) _cmp_op_ src2(idx) */
+CVAPI(void) cvCmp( const CvArr* src1, const CvArr* src2, CvArr* dst, int cmp_op );
+
+/* dst(idx) = src1(idx) _cmp_op_ value */
+CVAPI(void) cvCmpS( const CvArr* src, double value, CvArr* dst, int cmp_op );
+
+/* dst(idx) = min(src1(idx),src2(idx)) */
+CVAPI(void) cvMin( const CvArr* src1, const CvArr* src2, CvArr* dst );
+
+/* dst(idx) = max(src1(idx),src2(idx)) */
+CVAPI(void) cvMax( const CvArr* src1, const CvArr* src2, CvArr* dst );
+
+/* dst(idx) = min(src(idx),value) */
+CVAPI(void) cvMinS( const CvArr* src, double value, CvArr* dst );
+
+/* dst(idx) = max(src(idx),value) */
+CVAPI(void) cvMaxS( const CvArr* src, double value, CvArr* dst );
+
+/* dst(x,y,c) = abs(src1(x,y,c) - src2(x,y,c)) */
+CVAPI(void) cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );
+
+/* dst(x,y,c) = abs(src(x,y,c) - value(c)) */
+CVAPI(void) cvAbsDiffS( const CvArr* src, CvArr* dst, CvScalar value );
+#define cvAbs( src, dst ) cvAbsDiffS( (src), (dst), cvScalarAll(0))
+
+/****************************************************************************************\
+* Math operations *
+\****************************************************************************************/
+
+/* Does cartesian->polar coordinates conversion.
+ Either of output components (magnitude or angle) is optional */
+CVAPI(void) cvCartToPolar( const CvArr* x, const CvArr* y,
+ CvArr* magnitude, CvArr* angle CV_DEFAULT(NULL),
+ int angle_in_degrees CV_DEFAULT(0));
+
+/* Does polar->cartesian coordinates conversion.
+ Either of output components (magnitude or angle) is optional.
+ If magnitude is missing it is assumed to be all 1's */
+CVAPI(void) cvPolarToCart( const CvArr* magnitude, const CvArr* angle,
+ CvArr* x, CvArr* y,
+ int angle_in_degrees CV_DEFAULT(0));
+
+/* Does powering: dst(idx) = src(idx)^power */
+CVAPI(void) cvPow( const CvArr* src, CvArr* dst, double power );
+
+/* Does exponention: dst(idx) = exp(src(idx)).
+ Overflow is not handled yet. Underflow is handled.
+ Maximal relative error is ~7e-6 for single-precision input */
+CVAPI(void) cvExp( const CvArr* src, CvArr* dst );
+
+/* Calculates natural logarithms: dst(idx) = log(abs(src(idx))).
+ Logarithm of 0 gives large negative number(~-700)
+ Maximal relative error is ~3e-7 for single-precision output
+*/
+CVAPI(void) cvLog( const CvArr* src, CvArr* dst );
+
+/* Fast arctangent calculation */
+CVAPI(float) cvFastArctan( float y, float x );
+
+/* Fast cubic root calculation */
+CVAPI(float) cvCbrt( float value );
+
+/* Checks array values for NaNs, Infs or simply for too large numbers
+ (if CV_CHECK_RANGE is set). If CV_CHECK_QUIET is set,
+ no runtime errors is raised (function returns zero value in case of "bad" values).
+ Otherwise cvError is called */
+#define CV_CHECK_RANGE 1
+#define CV_CHECK_QUIET 2
+CVAPI(int) cvCheckArr( const CvArr* arr, int flags CV_DEFAULT(0),
+ double min_val CV_DEFAULT(0), double max_val CV_DEFAULT(0));
+#define cvCheckArray cvCheckArr
+
+#define CV_RAND_UNI 0
+#define CV_RAND_NORMAL 1
+CVAPI(void) cvRandArr( CvRNG* rng, CvArr* arr, int dist_type,
+ CvScalar param1, CvScalar param2 );
+
+CVAPI(void) cvRandShuffle( CvArr* mat, CvRNG* rng,
+ double iter_factor CV_DEFAULT(1.));
+
+#define CV_SORT_EVERY_ROW 0
+#define CV_SORT_EVERY_COLUMN 1
+#define CV_SORT_ASCENDING 0
+#define CV_SORT_DESCENDING 16
+
+CVAPI(void) cvSort( const CvArr* src, CvArr* dst CV_DEFAULT(NULL),
+ CvArr* idxmat CV_DEFAULT(NULL),
+ int flags CV_DEFAULT(0));
+
+/* Finds real roots of a cubic equation */
+CVAPI(int) cvSolveCubic( const CvMat* coeffs, CvMat* roots );
+
+/* Finds all real and complex roots of a polynomial equation */
+CVAPI(void) cvSolvePoly(const CvMat* coeffs, CvMat *roots2,
+ int maxiter CV_DEFAULT(20), int fig CV_DEFAULT(100));
+
+/****************************************************************************************\
+* Matrix operations *
+\****************************************************************************************/
+
+/* Calculates cross product of two 3d vectors */
+CVAPI(void) cvCrossProduct( const CvArr* src1, const CvArr* src2, CvArr* dst );
+
+/* Matrix transform: dst = A*B + C, C is optional */
+#define cvMatMulAdd( src1, src2, src3, dst ) cvGEMM( (src1), (src2), 1., (src3), 1., (dst), 0 )
+#define cvMatMul( src1, src2, dst ) cvMatMulAdd( (src1), (src2), NULL, (dst))
+
+#define CV_GEMM_A_T 1
+#define CV_GEMM_B_T 2
+#define CV_GEMM_C_T 4
+/* Extended matrix transform:
+ dst = alpha*op(A)*op(B) + beta*op(C), where op(X) is X or X^T */
+CVAPI(void) cvGEMM( const CvArr* src1, const CvArr* src2, double alpha,
+ const CvArr* src3, double beta, CvArr* dst,
+ int tABC CV_DEFAULT(0));
+#define cvMatMulAddEx cvGEMM
+
+/* Transforms each element of source array and stores
+ resultant vectors in destination array */
+CVAPI(void) cvTransform( const CvArr* src, CvArr* dst,
+ const CvMat* transmat,
+ const CvMat* shiftvec CV_DEFAULT(NULL));
+#define cvMatMulAddS cvTransform
+
+/* Does perspective transform on every element of input array */
+CVAPI(void) cvPerspectiveTransform( const CvArr* src, CvArr* dst,
+ const CvMat* mat );
+
+/* Calculates (A-delta)*(A-delta)^T (order=0) or (A-delta)^T*(A-delta) (order=1) */
+CVAPI(void) cvMulTransposed( const CvArr* src, CvArr* dst, int order,
+ const CvArr* delta CV_DEFAULT(NULL),
+ double scale CV_DEFAULT(1.) );
+
+/* Tranposes matrix. Square matrices can be transposed in-place */
+CVAPI(void) cvTranspose( const CvArr* src, CvArr* dst );
+#define cvT cvTranspose
+
+/* Completes the symmetric matrix from the lower (LtoR=0) or from the upper (LtoR!=0) part */
+CVAPI(void) cvCompleteSymm( CvMat* matrix, int LtoR CV_DEFAULT(0) );
+
+/* Mirror array data around horizontal (flip=0),
+ vertical (flip=1) or both(flip=-1) axises:
+ cvFlip(src) flips images vertically and sequences horizontally (inplace) */
+CVAPI(void) cvFlip( const CvArr* src, CvArr* dst CV_DEFAULT(NULL),
+ int flip_mode CV_DEFAULT(0));
+#define cvMirror cvFlip
+
+
+#define CV_SVD_MODIFY_A 1
+#define CV_SVD_U_T 2
+#define CV_SVD_V_T 4
+
+/* Performs Singular Value Decomposition of a matrix */
+CVAPI(void) cvSVD( CvArr* A, CvArr* W, CvArr* U CV_DEFAULT(NULL),
+ CvArr* V CV_DEFAULT(NULL), int flags CV_DEFAULT(0));
+
+/* Performs Singular Value Back Substitution (solves A*X = B):
+ flags must be the same as in cvSVD */
+CVAPI(void) cvSVBkSb( const CvArr* W, const CvArr* U,
+ const CvArr* V, const CvArr* B,
+ CvArr* X, int flags );
+
+#define CV_LU 0
+#define CV_SVD 1
+#define CV_SVD_SYM 2
+#define CV_CHOLESKY 3
+#define CV_QR 4
+#define CV_NORMAL 16
+
+/* Inverts matrix */
+CVAPI(double) cvInvert( const CvArr* src, CvArr* dst,
+ int method CV_DEFAULT(CV_LU));
+#define cvInv cvInvert
+
+/* Solves linear system (src1)*(dst) = (src2)
+ (returns 0 if src1 is a singular and CV_LU method is used) */
+CVAPI(int) cvSolve( const CvArr* src1, const CvArr* src2, CvArr* dst,
+ int method CV_DEFAULT(CV_LU));
+
+/* Calculates determinant of input matrix */
+CVAPI(double) cvDet( const CvArr* mat );
+
+/* Calculates trace of the matrix (sum of elements on the main diagonal) */
+CVAPI(CvScalar) cvTrace( const CvArr* mat );
+
+/* Finds eigen values and vectors of a symmetric matrix */
+CVAPI(void) cvEigenVV( CvArr* mat, CvArr* evects, CvArr* evals,
+ double eps CV_DEFAULT(0),
+ int lowindex CV_DEFAULT(-1),
+ int highindex CV_DEFAULT(-1));
+
+///* Finds selected eigen values and vectors of a symmetric matrix */
+//CVAPI(void) cvSelectedEigenVV( CvArr* mat, CvArr* evects, CvArr* evals,
+// int lowindex, int highindex );
+
+/* Makes an identity matrix (mat_ij = i == j) */
+CVAPI(void) cvSetIdentity( CvArr* mat, CvScalar value CV_DEFAULT(cvRealScalar(1)) );
+
+/* Fills matrix with given range of numbers */
+CVAPI(CvArr*) cvRange( CvArr* mat, double start, double end );
+
+/* Calculates covariation matrix for a set of vectors */
+/* transpose([v1-avg, v2-avg,...]) * [v1-avg,v2-avg,...] */
+#define CV_COVAR_SCRAMBLED 0
+
+/* [v1-avg, v2-avg,...] * transpose([v1-avg,v2-avg,...]) */
+#define CV_COVAR_NORMAL 1
+
+/* do not calc average (i.e. mean vector) - use the input vector instead
+ (useful for calculating covariance matrix by parts) */
+#define CV_COVAR_USE_AVG 2
+
+/* scale the covariance matrix coefficients by number of the vectors */
+#define CV_COVAR_SCALE 4
+
+/* all the input vectors are stored in a single matrix, as its rows */
+#define CV_COVAR_ROWS 8
+
+/* all the input vectors are stored in a single matrix, as its columns */
+#define CV_COVAR_COLS 16
+
+CVAPI(void) cvCalcCovarMatrix( const CvArr** vects, int count,
+ CvArr* cov_mat, CvArr* avg, int flags );
+
+#define CV_PCA_DATA_AS_ROW 0
+#define CV_PCA_DATA_AS_COL 1
+#define CV_PCA_USE_AVG 2
+CVAPI(void) cvCalcPCA( const CvArr* data, CvArr* mean,
+ CvArr* eigenvals, CvArr* eigenvects, int flags );
+
+CVAPI(void) cvProjectPCA( const CvArr* data, const CvArr* mean,
+ const CvArr* eigenvects, CvArr* result );
+
+CVAPI(void) cvBackProjectPCA( const CvArr* proj, const CvArr* mean,
+ const CvArr* eigenvects, CvArr* result );
+
+/* Calculates Mahalanobis(weighted) distance */
+CVAPI(double) cvMahalanobis( const CvArr* vec1, const CvArr* vec2, const CvArr* mat );
+#define cvMahalonobis cvMahalanobis
+
+/****************************************************************************************\
+* Array Statistics *
+\****************************************************************************************/
+
+/* Finds sum of array elements */
+CVAPI(CvScalar) cvSum( const CvArr* arr );
+
+/* Calculates number of non-zero pixels */
+CVAPI(int) cvCountNonZero( const CvArr* arr );
+
+/* Calculates mean value of array elements */
+CVAPI(CvScalar) cvAvg( const CvArr* arr, const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Calculates mean and standard deviation of pixel values */
+CVAPI(void) cvAvgSdv( const CvArr* arr, CvScalar* mean, CvScalar* std_dev,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Finds global minimum, maximum and their positions */
+CVAPI(void) cvMinMaxLoc( const CvArr* arr, double* min_val, double* max_val,
+ CvPoint* min_loc CV_DEFAULT(NULL),
+ CvPoint* max_loc CV_DEFAULT(NULL),
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* types of array norm */
+#define CV_C 1
+#define CV_L1 2
+#define CV_L2 4
+#define CV_NORM_MASK 7
+#define CV_RELATIVE 8
+#define CV_DIFF 16
+#define CV_MINMAX 32
+
+#define CV_DIFF_C (CV_DIFF | CV_C)
+#define CV_DIFF_L1 (CV_DIFF | CV_L1)
+#define CV_DIFF_L2 (CV_DIFF | CV_L2)
+#define CV_RELATIVE_C (CV_RELATIVE | CV_C)
+#define CV_RELATIVE_L1 (CV_RELATIVE | CV_L1)
+#define CV_RELATIVE_L2 (CV_RELATIVE | CV_L2)
+
+/* Finds norm, difference norm or relative difference norm for an array (or two arrays) */
+CVAPI(double) cvNorm( const CvArr* arr1, const CvArr* arr2 CV_DEFAULT(NULL),
+ int norm_type CV_DEFAULT(CV_L2),
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+CVAPI(void) cvNormalize( const CvArr* src, CvArr* dst,
+ double a CV_DEFAULT(1.), double b CV_DEFAULT(0.),
+ int norm_type CV_DEFAULT(CV_L2),
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+
+#define CV_REDUCE_SUM 0
+#define CV_REDUCE_AVG 1
+#define CV_REDUCE_MAX 2
+#define CV_REDUCE_MIN 3
+
+CVAPI(void) cvReduce( const CvArr* src, CvArr* dst, int dim CV_DEFAULT(-1),
+ int op CV_DEFAULT(CV_REDUCE_SUM) );
+
+/****************************************************************************************\
+* Discrete Linear Transforms and Related Functions *
+\****************************************************************************************/
+
+#define CV_DXT_FORWARD 0
+#define CV_DXT_INVERSE 1
+#define CV_DXT_SCALE 2 /* divide result by size of array */
+#define CV_DXT_INV_SCALE (CV_DXT_INVERSE + CV_DXT_SCALE)
+#define CV_DXT_INVERSE_SCALE CV_DXT_INV_SCALE
+#define CV_DXT_ROWS 4 /* transform each row individually */
+#define CV_DXT_MUL_CONJ 8 /* conjugate the second argument of cvMulSpectrums */
+
+/* Discrete Fourier Transform:
+ complex->complex,
+ real->ccs (forward),
+ ccs->real (inverse) */
+CVAPI(void) cvDFT( const CvArr* src, CvArr* dst, int flags,
+ int nonzero_rows CV_DEFAULT(0) );
+#define cvFFT cvDFT
+
+/* Multiply results of DFTs: DFT(X)*DFT(Y) or DFT(X)*conj(DFT(Y)) */
+CVAPI(void) cvMulSpectrums( const CvArr* src1, const CvArr* src2,
+ CvArr* dst, int flags );
+
+/* Finds optimal DFT vector size >= size0 */
+CVAPI(int) cvGetOptimalDFTSize( int size0 );
+
+/* Discrete Cosine Transform */
+CVAPI(void) cvDCT( const CvArr* src, CvArr* dst, int flags );
+
+/****************************************************************************************\
+* Dynamic data structures *
+\****************************************************************************************/
+
+/* Calculates length of sequence slice (with support of negative indices). */
+CVAPI(int) cvSliceLength( CvSlice slice, const CvSeq* seq );
+
+
+/* Creates new memory storage.
+ block_size == 0 means that default,
+ somewhat optimal size, is used (currently, it is 64K) */
+CVAPI(CvMemStorage*) cvCreateMemStorage( int block_size CV_DEFAULT(0));
+
+
+/* Creates a memory storage that will borrow memory blocks from parent storage */
+CVAPI(CvMemStorage*) cvCreateChildMemStorage( CvMemStorage* parent );
+
+
+/* Releases memory storage. All the children of a parent must be released before
+ the parent. A child storage returns all the blocks to parent when it is released */
+CVAPI(void) cvReleaseMemStorage( CvMemStorage** storage );
+
+
+/* Clears memory storage. This is the only way(!!!) (besides cvRestoreMemStoragePos)
+ to reuse memory allocated for the storage - cvClearSeq,cvClearSet ...
+ do not free any memory.
+ A child storage returns all the blocks to the parent when it is cleared */
+CVAPI(void) cvClearMemStorage( CvMemStorage* storage );
+
+/* Remember a storage "free memory" position */
+CVAPI(void) cvSaveMemStoragePos( const CvMemStorage* storage, CvMemStoragePos* pos );
+
+/* Restore a storage "free memory" position */
+CVAPI(void) cvRestoreMemStoragePos( CvMemStorage* storage, CvMemStoragePos* pos );
+
+/* Allocates continuous buffer of the specified size in the storage */
+CVAPI(void*) cvMemStorageAlloc( CvMemStorage* storage, size_t size );
+
+/* Allocates string in memory storage */
+CVAPI(CvString) cvMemStorageAllocString( CvMemStorage* storage, const char* ptr,
+ int len CV_DEFAULT(-1) );
+
+/* Creates new empty sequence that will reside in the specified storage */
+CVAPI(CvSeq*) cvCreateSeq( int seq_flags, size_t header_size,
+ size_t elem_size, CvMemStorage* storage );
+
+/* Changes default size (granularity) of sequence blocks.
+ The default size is ~1Kbyte */
+CVAPI(void) cvSetSeqBlockSize( CvSeq* seq, int delta_elems );
+
+
+/* Adds new element to the end of sequence. Returns pointer to the element */
+CVAPI(schar*) cvSeqPush( CvSeq* seq, const void* element CV_DEFAULT(NULL));
+
+
+/* Adds new element to the beginning of sequence. Returns pointer to it */
+CVAPI(schar*) cvSeqPushFront( CvSeq* seq, const void* element CV_DEFAULT(NULL));
+
+
+/* Removes the last element from sequence and optionally saves it */
+CVAPI(void) cvSeqPop( CvSeq* seq, void* element CV_DEFAULT(NULL));
+
+
+/* Removes the first element from sequence and optioanally saves it */
+CVAPI(void) cvSeqPopFront( CvSeq* seq, void* element CV_DEFAULT(NULL));
+
+
+#define CV_FRONT 1
+#define CV_BACK 0
+/* Adds several new elements to the end of sequence */
+CVAPI(void) cvSeqPushMulti( CvSeq* seq, const void* elements,
+ int count, int in_front CV_DEFAULT(0) );
+
+/* Removes several elements from the end of sequence and optionally saves them */
+CVAPI(void) cvSeqPopMulti( CvSeq* seq, void* elements,
+ int count, int in_front CV_DEFAULT(0) );
+
+/* Inserts a new element in the middle of sequence.
+ cvSeqInsert(seq,0,elem) == cvSeqPushFront(seq,elem) */
+CVAPI(schar*) cvSeqInsert( CvSeq* seq, int before_index,
+ const void* element CV_DEFAULT(NULL));
+
+/* Removes specified sequence element */
+CVAPI(void) cvSeqRemove( CvSeq* seq, int index );
+
+
+/* Removes all the elements from the sequence. The freed memory
+ can be reused later only by the same sequence unless cvClearMemStorage
+ or cvRestoreMemStoragePos is called */
+CVAPI(void) cvClearSeq( CvSeq* seq );
+
+
+/* Retrieves pointer to specified sequence element.
+ Negative indices are supported and mean counting from the end
+ (e.g -1 means the last sequence element) */
+CVAPI(schar*) cvGetSeqElem( const CvSeq* seq, int index );
+
+/* Calculates index of the specified sequence element.
+ Returns -1 if element does not belong to the sequence */
+CVAPI(int) cvSeqElemIdx( const CvSeq* seq, const void* element,
+ CvSeqBlock** block CV_DEFAULT(NULL) );
+
+/* Initializes sequence writer. The new elements will be added to the end of sequence */
+CVAPI(void) cvStartAppendToSeq( CvSeq* seq, CvSeqWriter* writer );
+
+
+/* Combination of cvCreateSeq and cvStartAppendToSeq */
+CVAPI(void) cvStartWriteSeq( int seq_flags, int header_size,
+ int elem_size, CvMemStorage* storage,
+ CvSeqWriter* writer );
+
+/* Closes sequence writer, updates sequence header and returns pointer
+ to the resultant sequence
+ (which may be useful if the sequence was created using cvStartWriteSeq))
+*/
+CVAPI(CvSeq*) cvEndWriteSeq( CvSeqWriter* writer );
+
+
+/* Updates sequence header. May be useful to get access to some of previously
+ written elements via cvGetSeqElem or sequence reader */
+CVAPI(void) cvFlushSeqWriter( CvSeqWriter* writer );
+
+
+/* Initializes sequence reader.
+ The sequence can be read in forward or backward direction */
+CVAPI(void) cvStartReadSeq( const CvSeq* seq, CvSeqReader* reader,
+ int reverse CV_DEFAULT(0) );
+
+
+/* Returns current sequence reader position (currently observed sequence element) */
+CVAPI(int) cvGetSeqReaderPos( CvSeqReader* reader );
+
+
+/* Changes sequence reader position. It may seek to an absolute or
+ to relative to the current position */
+CVAPI(void) cvSetSeqReaderPos( CvSeqReader* reader, int index,
+ int is_relative CV_DEFAULT(0));
+
+/* Copies sequence content to a continuous piece of memory */
+CVAPI(void*) cvCvtSeqToArray( const CvSeq* seq, void* elements,
+ CvSlice slice CV_DEFAULT(CV_WHOLE_SEQ) );
+
+/* Creates sequence header for array.
+ After that all the operations on sequences that do not alter the content
+ can be applied to the resultant sequence */
+CVAPI(CvSeq*) cvMakeSeqHeaderForArray( int seq_type, int header_size,
+ int elem_size, void* elements, int total,
+ CvSeq* seq, CvSeqBlock* block );
+
+/* Extracts sequence slice (with or without copying sequence elements) */
+CVAPI(CvSeq*) cvSeqSlice( const CvSeq* seq, CvSlice slice,
+ CvMemStorage* storage CV_DEFAULT(NULL),
+ int copy_data CV_DEFAULT(0));
+
+CV_INLINE CvSeq* cvCloneSeq( const CvSeq* seq, CvMemStorage* storage CV_DEFAULT(NULL))
+{
+ return cvSeqSlice( seq, CV_WHOLE_SEQ, storage, 1 );
+}
+
+/* Removes sequence slice */
+CVAPI(void) cvSeqRemoveSlice( CvSeq* seq, CvSlice slice );
+
+/* Inserts a sequence or array into another sequence */
+CVAPI(void) cvSeqInsertSlice( CvSeq* seq, int before_index, const CvArr* from_arr );
+
+/* a < b ? -1 : a > b ? 1 : 0 */
+typedef int (CV_CDECL* CvCmpFunc)(const void* a, const void* b, void* userdata );
+
+/* Sorts sequence in-place given element comparison function */
+CVAPI(void) cvSeqSort( CvSeq* seq, CvCmpFunc func, void* userdata CV_DEFAULT(NULL) );
+
+/* Finds element in a [sorted] sequence */
+CVAPI(schar*) cvSeqSearch( CvSeq* seq, const void* elem, CvCmpFunc func,
+ int is_sorted, int* elem_idx,
+ void* userdata CV_DEFAULT(NULL) );
+
+/* Reverses order of sequence elements in-place */
+CVAPI(void) cvSeqInvert( CvSeq* seq );
+
+/* Splits sequence into one or more equivalence classes using the specified criteria */
+CVAPI(int) cvSeqPartition( const CvSeq* seq, CvMemStorage* storage,
+ CvSeq** labels, CvCmpFunc is_equal, void* userdata );
+
+/************ Internal sequence functions ************/
+CVAPI(void) cvChangeSeqBlock( void* reader, int direction );
+CVAPI(void) cvCreateSeqBlock( CvSeqWriter* writer );
+
+
+/* Creates a new set */
+CVAPI(CvSet*) cvCreateSet( int set_flags, int header_size,
+ int elem_size, CvMemStorage* storage );
+
+/* Adds new element to the set and returns pointer to it */
+CVAPI(int) cvSetAdd( CvSet* set_header, CvSetElem* elem CV_DEFAULT(NULL),
+ CvSetElem** inserted_elem CV_DEFAULT(NULL) );
+
+/* Fast variant of cvSetAdd */
+CV_INLINE CvSetElem* cvSetNew( CvSet* set_header )
+{
+ CvSetElem* elem = set_header->free_elems;
+ if( elem )
+ {
+ set_header->free_elems = elem->next_free;
+ elem->flags = elem->flags & CV_SET_ELEM_IDX_MASK;
+ set_header->active_count++;
+ }
+ else
+ cvSetAdd( set_header, NULL, &elem );
+ return elem;
+}
+
+/* Removes set element given its pointer */
+CV_INLINE void cvSetRemoveByPtr( CvSet* set_header, void* elem )
+{
+ CvSetElem* _elem = (CvSetElem*)elem;
+ assert( _elem->flags >= 0 /*&& (elem->flags & CV_SET_ELEM_IDX_MASK) < set_header->total*/ );
+ _elem->next_free = set_header->free_elems;
+ _elem->flags = (_elem->flags & CV_SET_ELEM_IDX_MASK) | CV_SET_ELEM_FREE_FLAG;
+ set_header->free_elems = _elem;
+ set_header->active_count--;
+}
+
+/* Removes element from the set by its index */
+CVAPI(void) cvSetRemove( CvSet* set_header, int index );
+
+/* Returns a set element by index. If the element doesn't belong to the set,
+ NULL is returned */
+CV_INLINE CvSetElem* cvGetSetElem( const CvSet* set_header, int idx )
+{
+ CvSetElem* elem = (CvSetElem*)(void *)cvGetSeqElem( (CvSeq*)set_header, idx );
+ return elem && CV_IS_SET_ELEM( elem ) ? elem : 0;
+}
+
+/* Removes all the elements from the set */
+CVAPI(void) cvClearSet( CvSet* set_header );
+
+/* Creates new graph */
+CVAPI(CvGraph*) cvCreateGraph( int graph_flags, int header_size,
+ int vtx_size, int edge_size,
+ CvMemStorage* storage );
+
+/* Adds new vertex to the graph */
+CVAPI(int) cvGraphAddVtx( CvGraph* graph, const CvGraphVtx* vtx CV_DEFAULT(NULL),
+ CvGraphVtx** inserted_vtx CV_DEFAULT(NULL) );
+
+
+/* Removes vertex from the graph together with all incident edges */
+CVAPI(int) cvGraphRemoveVtx( CvGraph* graph, int index );
+CVAPI(int) cvGraphRemoveVtxByPtr( CvGraph* graph, CvGraphVtx* vtx );
+
+
+/* Link two vertices specifed by indices or pointers if they
+ are not connected or return pointer to already existing edge
+ connecting the vertices.
+ Functions return 1 if a new edge was created, 0 otherwise */
+CVAPI(int) cvGraphAddEdge( CvGraph* graph,
+ int start_idx, int end_idx,
+ const CvGraphEdge* edge CV_DEFAULT(NULL),
+ CvGraphEdge** inserted_edge CV_DEFAULT(NULL) );
+
+CVAPI(int) cvGraphAddEdgeByPtr( CvGraph* graph,
+ CvGraphVtx* start_vtx, CvGraphVtx* end_vtx,
+ const CvGraphEdge* edge CV_DEFAULT(NULL),
+ CvGraphEdge** inserted_edge CV_DEFAULT(NULL) );
+
+/* Remove edge connecting two vertices */
+CVAPI(void) cvGraphRemoveEdge( CvGraph* graph, int start_idx, int end_idx );
+CVAPI(void) cvGraphRemoveEdgeByPtr( CvGraph* graph, CvGraphVtx* start_vtx,
+ CvGraphVtx* end_vtx );
+
+/* Find edge connecting two vertices */
+CVAPI(CvGraphEdge*) cvFindGraphEdge( const CvGraph* graph, int start_idx, int end_idx );
+CVAPI(CvGraphEdge*) cvFindGraphEdgeByPtr( const CvGraph* graph,
+ const CvGraphVtx* start_vtx,
+ const CvGraphVtx* end_vtx );
+#define cvGraphFindEdge cvFindGraphEdge
+#define cvGraphFindEdgeByPtr cvFindGraphEdgeByPtr
+
+/* Remove all vertices and edges from the graph */
+CVAPI(void) cvClearGraph( CvGraph* graph );
+
+
+/* Count number of edges incident to the vertex */
+CVAPI(int) cvGraphVtxDegree( const CvGraph* graph, int vtx_idx );
+CVAPI(int) cvGraphVtxDegreeByPtr( const CvGraph* graph, const CvGraphVtx* vtx );
+
+
+/* Retrieves graph vertex by given index */
+#define cvGetGraphVtx( graph, idx ) (CvGraphVtx*)cvGetSetElem((CvSet*)(graph), (idx))
+
+/* Retrieves index of a graph vertex given its pointer */
+#define cvGraphVtxIdx( graph, vtx ) ((vtx)->flags & CV_SET_ELEM_IDX_MASK)
+
+/* Retrieves index of a graph edge given its pointer */
+#define cvGraphEdgeIdx( graph, edge ) ((edge)->flags & CV_SET_ELEM_IDX_MASK)
+
+#define cvGraphGetVtxCount( graph ) ((graph)->active_count)
+#define cvGraphGetEdgeCount( graph ) ((graph)->edges->active_count)
+
+#define CV_GRAPH_VERTEX 1
+#define CV_GRAPH_TREE_EDGE 2
+#define CV_GRAPH_BACK_EDGE 4
+#define CV_GRAPH_FORWARD_EDGE 8
+#define CV_GRAPH_CROSS_EDGE 16
+#define CV_GRAPH_ANY_EDGE 30
+#define CV_GRAPH_NEW_TREE 32
+#define CV_GRAPH_BACKTRACKING 64
+#define CV_GRAPH_OVER -1
+
+#define CV_GRAPH_ALL_ITEMS -1
+
+/* flags for graph vertices and edges */
+#define CV_GRAPH_ITEM_VISITED_FLAG (1 << 30)
+#define CV_IS_GRAPH_VERTEX_VISITED(vtx) \
+ (((CvGraphVtx*)(vtx))->flags & CV_GRAPH_ITEM_VISITED_FLAG)
+#define CV_IS_GRAPH_EDGE_VISITED(edge) \
+ (((CvGraphEdge*)(edge))->flags & CV_GRAPH_ITEM_VISITED_FLAG)
+#define CV_GRAPH_SEARCH_TREE_NODE_FLAG (1 << 29)
+#define CV_GRAPH_FORWARD_EDGE_FLAG (1 << 28)
+
+typedef struct CvGraphScanner
+{
+ CvGraphVtx* vtx; /* current graph vertex (or current edge origin) */
+ CvGraphVtx* dst; /* current graph edge destination vertex */
+ CvGraphEdge* edge; /* current edge */
+
+ CvGraph* graph; /* the graph */
+ CvSeq* stack; /* the graph vertex stack */
+ int index; /* the lower bound of certainly visited vertices */
+ int mask; /* event mask */
+}
+CvGraphScanner;
+
+/* Creates new graph scanner. */
+CVAPI(CvGraphScanner*) cvCreateGraphScanner( CvGraph* graph,
+ CvGraphVtx* vtx CV_DEFAULT(NULL),
+ int mask CV_DEFAULT(CV_GRAPH_ALL_ITEMS));
+
+/* Releases graph scanner. */
+CVAPI(void) cvReleaseGraphScanner( CvGraphScanner** scanner );
+
+/* Get next graph element */
+CVAPI(int) cvNextGraphItem( CvGraphScanner* scanner );
+
+/* Creates a copy of graph */
+CVAPI(CvGraph*) cvCloneGraph( const CvGraph* graph, CvMemStorage* storage );
+
+/****************************************************************************************\
+* Drawing *
+\****************************************************************************************/
+
+/****************************************************************************************\
+* Drawing functions work with images/matrices of arbitrary type. *
+* For color images the channel order is BGR[A] *
+* Antialiasing is supported only for 8-bit image now. *
+* All the functions include parameter color that means rgb value (that may be *
+* constructed with CV_RGB macro) for color images and brightness *
+* for grayscale images. *
+* If a drawn figure is partially or completely outside of the image, it is clipped.*
+\****************************************************************************************/
+
+#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r), 0 )
+#define CV_FILLED -1
+
+#define CV_AA 16
+
+/* Draws 4-connected, 8-connected or antialiased line segment connecting two points */
+CVAPI(void) cvLine( CvArr* img, CvPoint pt1, CvPoint pt2,
+ CvScalar color, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );
+
+/* Draws a rectangle given two opposite corners of the rectangle (pt1 & pt2),
+ if thickness<0 (e.g. thickness == CV_FILLED), the filled box is drawn */
+CVAPI(void) cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2,
+ CvScalar color, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8),
+ int shift CV_DEFAULT(0));
+
+/* Draws a rectangle specified by a CvRect structure */
+CVAPI(void) cvRectangleR( CvArr* img, CvRect r,
+ CvScalar color, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8),
+ int shift CV_DEFAULT(0));
+
+
+/* Draws a circle with specified center and radius.
+ Thickness works in the same way as with cvRectangle */
+CVAPI(void) cvCircle( CvArr* img, CvPoint center, int radius,
+ CvScalar color, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));
+
+/* Draws ellipse outline, filled ellipse, elliptic arc or filled elliptic sector,
+ depending on <thickness>, <start_angle> and <end_angle> parameters. The resultant figure
+ is rotated by <angle>. All the angles are in degrees */
+CVAPI(void) cvEllipse( CvArr* img, CvPoint center, CvSize axes,
+ double angle, double start_angle, double end_angle,
+ CvScalar color, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));
+
+CV_INLINE void cvEllipseBox( CvArr* img, CvBox2D box, CvScalar color,
+ int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) )
+{
+ CvSize axes;
+ axes.width = cvRound(box.size.width*0.5);
+ axes.height = cvRound(box.size.height*0.5);
+
+ cvEllipse( img, cvPointFrom32f( box.center ), axes, box.angle,
+ 0, 360, color, thickness, line_type, shift );
+}
+
+/* Fills convex or monotonous polygon. */
+CVAPI(void) cvFillConvexPoly( CvArr* img, const CvPoint* pts, int npts, CvScalar color,
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));
+
+/* Fills an area bounded by one or more arbitrary polygons */
+CVAPI(void) cvFillPoly( CvArr* img, CvPoint** pts, const int* npts,
+ int contours, CvScalar color,
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );
+
+/* Draws one or more polygonal curves */
+CVAPI(void) cvPolyLine( CvArr* img, CvPoint** pts, const int* npts, int contours,
+ int is_closed, CvScalar color, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );
+
+#define cvDrawRect cvRectangle
+#define cvDrawLine cvLine
+#define cvDrawCircle cvCircle
+#define cvDrawEllipse cvEllipse
+#define cvDrawPolyLine cvPolyLine
+
+/* Clips the line segment connecting *pt1 and *pt2
+ by the rectangular window
+ (0<=x<img_size.width, 0<=y<img_size.height). */
+CVAPI(int) cvClipLine( CvSize img_size, CvPoint* pt1, CvPoint* pt2 );
+
+/* Initializes line iterator. Initially, line_iterator->ptr will point
+ to pt1 (or pt2, see left_to_right description) location in the image.
+ Returns the number of pixels on the line between the ending points. */
+CVAPI(int) cvInitLineIterator( const CvArr* image, CvPoint pt1, CvPoint pt2,
+ CvLineIterator* line_iterator,
+ int connectivity CV_DEFAULT(8),
+ int left_to_right CV_DEFAULT(0));
+
+/* Moves iterator to the next line point */
+#define CV_NEXT_LINE_POINT( line_iterator ) \
+{ \
+ int _line_iterator_mask = (line_iterator).err < 0 ? -1 : 0; \
+ (line_iterator).err += (line_iterator).minus_delta + \
+ ((line_iterator).plus_delta & _line_iterator_mask); \
+ (line_iterator).ptr += (line_iterator).minus_step + \
+ ((line_iterator).plus_step & _line_iterator_mask); \
+}
+
+
+/* basic font types */
+#define CV_FONT_HERSHEY_SIMPLEX 0
+#define CV_FONT_HERSHEY_PLAIN 1
+#define CV_FONT_HERSHEY_DUPLEX 2
+#define CV_FONT_HERSHEY_COMPLEX 3
+#define CV_FONT_HERSHEY_TRIPLEX 4
+#define CV_FONT_HERSHEY_COMPLEX_SMALL 5
+#define CV_FONT_HERSHEY_SCRIPT_SIMPLEX 6
+#define CV_FONT_HERSHEY_SCRIPT_COMPLEX 7
+
+/* font flags */
+#define CV_FONT_ITALIC 16
+
+#define CV_FONT_VECTOR0 CV_FONT_HERSHEY_SIMPLEX
+
+
+/* Font structure */
+typedef struct CvFont
+{
+ const char* nameFont; //Qt:nameFont
+ CvScalar color; //Qt:ColorFont -> cvScalar(blue_component, green_component, red\_component[, alpha_component])
+ int font_face; //Qt: bool italic /* =CV_FONT_* */
+ const int* ascii; /* font data and metrics */
+ const int* greek;
+ const int* cyrillic;
+ float hscale, vscale;
+ float shear; /* slope coefficient: 0 - normal, >0 - italic */
+ int thickness; //Qt: weight /* letters thickness */
+ float dx; /* horizontal interval between letters */
+ int line_type; //Qt: PointSize
+}
+CvFont;
+
+/* Initializes font structure used further in cvPutText */
+CVAPI(void) cvInitFont( CvFont* font, int font_face,
+ double hscale, double vscale,
+ double shear CV_DEFAULT(0),
+ int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8));
+
+CV_INLINE CvFont cvFont( double scale, int thickness CV_DEFAULT(1) )
+{
+ CvFont font;
+ cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, scale, scale, 0, thickness, CV_AA );
+ return font;
+}
+
+/* Renders text stroke with specified font and color at specified location.
+ CvFont should be initialized with cvInitFont */
+CVAPI(void) cvPutText( CvArr* img, const char* text, CvPoint org,
+ const CvFont* font, CvScalar color );
+
+/* Calculates bounding box of text stroke (useful for alignment) */
+CVAPI(void) cvGetTextSize( const char* text_string, const CvFont* font,
+ CvSize* text_size, int* baseline );
+
+
+
+/* Unpacks color value, if arrtype is CV_8UC?, <color> is treated as
+ packed color value, otherwise the first channels (depending on arrtype)
+ of destination scalar are set to the same value = <color> */
+CVAPI(CvScalar) cvColorToScalar( double packed_color, int arrtype );
+
+/* Returns the polygon points which make up the given ellipse. The ellipse is define by
+ the box of size 'axes' rotated 'angle' around the 'center'. A partial sweep
+ of the ellipse arc can be done by spcifying arc_start and arc_end to be something
+ other than 0 and 360, respectively. The input array 'pts' must be large enough to
+ hold the result. The total number of points stored into 'pts' is returned by this
+ function. */
+CVAPI(int) cvEllipse2Poly( CvPoint center, CvSize axes,
+ int angle, int arc_start, int arc_end, CvPoint * pts, int delta );
+
+/* Draws contour outlines or filled interiors on the image */
+CVAPI(void) cvDrawContours( CvArr *img, CvSeq* contour,
+ CvScalar external_color, CvScalar hole_color,
+ int max_level, int thickness CV_DEFAULT(1),
+ int line_type CV_DEFAULT(8),
+ CvPoint offset CV_DEFAULT(cvPoint(0,0)));
+
+/* Does look-up transformation. Elements of the source array
+ (that should be 8uC1 or 8sC1) are used as indexes in lutarr 256-element table */
+CVAPI(void) cvLUT( const CvArr* src, CvArr* dst, const CvArr* lut );
+
+
+/******************* Iteration through the sequence tree *****************/
+typedef struct CvTreeNodeIterator
+{
+ const void* node;
+ int level;
+ int max_level;
+}
+CvTreeNodeIterator;
+
+CVAPI(void) cvInitTreeNodeIterator( CvTreeNodeIterator* tree_iterator,
+ const void* first, int max_level );
+CVAPI(void*) cvNextTreeNode( CvTreeNodeIterator* tree_iterator );
+CVAPI(void*) cvPrevTreeNode( CvTreeNodeIterator* tree_iterator );
+
+/* Inserts sequence into tree with specified "parent" sequence.
+ If parent is equal to frame (e.g. the most external contour),
+ then added contour will have null pointer to parent. */
+CVAPI(void) cvInsertNodeIntoTree( void* node, void* parent, void* frame );
+
+/* Removes contour from tree (together with the contour children). */
+CVAPI(void) cvRemoveNodeFromTree( void* node, void* frame );
+
+/* Gathers pointers to all the sequences,
+ accessible from the <first>, to the single sequence */
+CVAPI(CvSeq*) cvTreeToNodeSeq( const void* first, int header_size,
+ CvMemStorage* storage );
+
+/* The function implements the K-means algorithm for clustering an array of sample
+ vectors in a specified number of classes */
+#define CV_KMEANS_USE_INITIAL_LABELS 1
+CVAPI(int) cvKMeans2( const CvArr* samples, int cluster_count, CvArr* labels,
+ CvTermCriteria termcrit, int attempts CV_DEFAULT(1),
+ CvRNG* rng CV_DEFAULT(0), int flags CV_DEFAULT(0),
+ CvArr* _centers CV_DEFAULT(0), double* compactness CV_DEFAULT(0) );
+
+/****************************************************************************************\
+* System functions *
+\****************************************************************************************/
+
+/* Add the function pointers table with associated information to the IPP primitives list */
+CVAPI(int) cvRegisterModule( const CvModuleInfo* module_info );
+
+/* Loads optimized functions from IPP, MKL etc. or switches back to pure C code */
+CVAPI(int) cvUseOptimized( int on_off );
+
+/* Retrieves information about the registered modules and loaded optimized plugins */
+CVAPI(void) cvGetModuleInfo( const char* module_name,
+ const char** version,
+ const char** loaded_addon_plugins );
+
+typedef void* (CV_CDECL *CvAllocFunc)(size_t size, void* userdata);
+typedef int (CV_CDECL *CvFreeFunc)(void* pptr, void* userdata);
+
+/* Set user-defined memory managment functions (substitutors for malloc and free) that
+ will be called by cvAlloc, cvFree and higher-level functions (e.g. cvCreateImage) */
+CVAPI(void) cvSetMemoryManager( CvAllocFunc alloc_func CV_DEFAULT(NULL),
+ CvFreeFunc free_func CV_DEFAULT(NULL),
+ void* userdata CV_DEFAULT(NULL));
+
+
+typedef IplImage* (CV_STDCALL* Cv_iplCreateImageHeader)
+ (int,int,int,char*,char*,int,int,int,int,int,
+ IplROI*,IplImage*,void*,IplTileInfo*);
+typedef void (CV_STDCALL* Cv_iplAllocateImageData)(IplImage*,int,int);
+typedef void (CV_STDCALL* Cv_iplDeallocate)(IplImage*,int);
+typedef IplROI* (CV_STDCALL* Cv_iplCreateROI)(int,int,int,int,int);
+typedef IplImage* (CV_STDCALL* Cv_iplCloneImage)(const IplImage*);
+
+/* Makes OpenCV use IPL functions for IplImage allocation/deallocation */
+CVAPI(void) cvSetIPLAllocators( Cv_iplCreateImageHeader create_header,
+ Cv_iplAllocateImageData allocate_data,
+ Cv_iplDeallocate deallocate,
+ Cv_iplCreateROI create_roi,
+ Cv_iplCloneImage clone_image );
+
+#define CV_TURN_ON_IPL_COMPATIBILITY() \
+ cvSetIPLAllocators( iplCreateImageHeader, iplAllocateImage, \
+ iplDeallocate, iplCreateROI, iplCloneImage )
+
+/****************************************************************************************\
+* Data Persistence *
+\****************************************************************************************/
+
+/********************************** High-level functions ********************************/
+
+/* opens existing or creates new file storage */
+CVAPI(CvFileStorage*) cvOpenFileStorage( const char* filename, CvMemStorage* memstorage,
+ int flags, const char* encoding CV_DEFAULT(NULL) );
+
+/* closes file storage and deallocates buffers */
+CVAPI(void) cvReleaseFileStorage( CvFileStorage** fs );
+
+/* returns attribute value or 0 (NULL) if there is no such attribute */
+CVAPI(const char*) cvAttrValue( const CvAttrList* attr, const char* attr_name );
+
+/* starts writing compound structure (map or sequence) */
+CVAPI(void) cvStartWriteStruct( CvFileStorage* fs, const char* name,
+ int struct_flags, const char* type_name CV_DEFAULT(NULL),
+ CvAttrList attributes CV_DEFAULT(cvAttrList()));
+
+/* finishes writing compound structure */
+CVAPI(void) cvEndWriteStruct( CvFileStorage* fs );
+
+/* writes an integer */
+CVAPI(void) cvWriteInt( CvFileStorage* fs, const char* name, int value );
+
+/* writes a floating-point number */
+CVAPI(void) cvWriteReal( CvFileStorage* fs, const char* name, double value );
+
+/* writes a string */
+CVAPI(void) cvWriteString( CvFileStorage* fs, const char* name,
+ const char* str, int quote CV_DEFAULT(0) );
+
+/* writes a comment */
+CVAPI(void) cvWriteComment( CvFileStorage* fs, const char* comment,
+ int eol_comment );
+
+/* writes instance of a standard type (matrix, image, sequence, graph etc.)
+ or user-defined type */
+CVAPI(void) cvWrite( CvFileStorage* fs, const char* name, const void* ptr,
+ CvAttrList attributes CV_DEFAULT(cvAttrList()));
+
+/* starts the next stream */
+CVAPI(void) cvStartNextStream( CvFileStorage* fs );
+
+/* helper function: writes multiple integer or floating-point numbers */
+CVAPI(void) cvWriteRawData( CvFileStorage* fs, const void* src,
+ int len, const char* dt );
+
+/* returns the hash entry corresponding to the specified literal key string or 0
+ if there is no such a key in the storage */
+CVAPI(CvStringHashNode*) cvGetHashedKey( CvFileStorage* fs, const char* name,
+ int len CV_DEFAULT(-1),
+ int create_missing CV_DEFAULT(0));
+
+/* returns file node with the specified key within the specified map
+ (collection of named nodes) */
+CVAPI(CvFileNode*) cvGetRootFileNode( const CvFileStorage* fs,
+ int stream_index CV_DEFAULT(0) );
+
+/* returns file node with the specified key within the specified map
+ (collection of named nodes) */
+CVAPI(CvFileNode*) cvGetFileNode( CvFileStorage* fs, CvFileNode* map,
+ const CvStringHashNode* key,
+ int create_missing CV_DEFAULT(0) );
+
+/* this is a slower version of cvGetFileNode that takes the key as a literal string */
+CVAPI(CvFileNode*) cvGetFileNodeByName( const CvFileStorage* fs,
+ const CvFileNode* map,
+ const char* name );
+
+CV_INLINE int cvReadInt( const CvFileNode* node, int default_value CV_DEFAULT(0) )
+{
+ return !node ? default_value :
+ CV_NODE_IS_INT(node->tag) ? node->data.i :
+ CV_NODE_IS_REAL(node->tag) ? cvRound(node->data.f) : 0x7fffffff;
+}
+
+
+CV_INLINE int cvReadIntByName( const CvFileStorage* fs, const CvFileNode* map,
+ const char* name, int default_value CV_DEFAULT(0) )
+{
+ return cvReadInt( cvGetFileNodeByName( fs, map, name ), default_value );
+}
+
+
+CV_INLINE double cvReadReal( const CvFileNode* node, double default_value CV_DEFAULT(0.) )
+{
+ return !node ? default_value :
+ CV_NODE_IS_INT(node->tag) ? (double)node->data.i :
+ CV_NODE_IS_REAL(node->tag) ? node->data.f : 1e300;
+}
+
+
+CV_INLINE double cvReadRealByName( const CvFileStorage* fs, const CvFileNode* map,
+ const char* name, double default_value CV_DEFAULT(0.) )
+{
+ return cvReadReal( cvGetFileNodeByName( fs, map, name ), default_value );
+}
+
+
+CV_INLINE const char* cvReadString( const CvFileNode* node,
+ const char* default_value CV_DEFAULT(NULL) )
+{
+ return !node ? default_value : CV_NODE_IS_STRING(node->tag) ? node->data.str.ptr : 0;
+}
+
+
+CV_INLINE const char* cvReadStringByName( const CvFileStorage* fs, const CvFileNode* map,
+ const char* name, const char* default_value CV_DEFAULT(NULL) )
+{
+ return cvReadString( cvGetFileNodeByName( fs, map, name ), default_value );
+}
+
+
+/* decodes standard or user-defined object and returns it */
+CVAPI(void*) cvRead( CvFileStorage* fs, CvFileNode* node,
+ CvAttrList* attributes CV_DEFAULT(NULL));
+
+/* decodes standard or user-defined object and returns it */
+CV_INLINE void* cvReadByName( CvFileStorage* fs, const CvFileNode* map,
+ const char* name, CvAttrList* attributes CV_DEFAULT(NULL) )
+{
+ return cvRead( fs, cvGetFileNodeByName( fs, map, name ), attributes );
+}
+
+
+/* starts reading data from sequence or scalar numeric node */
+CVAPI(void) cvStartReadRawData( const CvFileStorage* fs, const CvFileNode* src,
+ CvSeqReader* reader );
+
+/* reads multiple numbers and stores them to array */
+CVAPI(void) cvReadRawDataSlice( const CvFileStorage* fs, CvSeqReader* reader,
+ int count, void* dst, const char* dt );
+
+/* combination of two previous functions for easier reading of whole sequences */
+CVAPI(void) cvReadRawData( const CvFileStorage* fs, const CvFileNode* src,
+ void* dst, const char* dt );
+
+/* writes a copy of file node to file storage */
+CVAPI(void) cvWriteFileNode( CvFileStorage* fs, const char* new_node_name,
+ const CvFileNode* node, int embed );
+
+/* returns name of file node */
+CVAPI(const char*) cvGetFileNodeName( const CvFileNode* node );
+
+/*********************************** Adding own types ***********************************/
+
+CVAPI(void) cvRegisterType( const CvTypeInfo* info );
+CVAPI(void) cvUnregisterType( const char* type_name );
+CVAPI(CvTypeInfo*) cvFirstType(void);
+CVAPI(CvTypeInfo*) cvFindType( const char* type_name );
+CVAPI(CvTypeInfo*) cvTypeOf( const void* struct_ptr );
+
+/* universal functions */
+CVAPI(void) cvRelease( void** struct_ptr );
+CVAPI(void*) cvClone( const void* struct_ptr );
+
+/* simple API for reading/writing data */
+CVAPI(void) cvSave( const char* filename, const void* struct_ptr,
+ const char* name CV_DEFAULT(NULL),
+ const char* comment CV_DEFAULT(NULL),
+ CvAttrList attributes CV_DEFAULT(cvAttrList()));
+CVAPI(void*) cvLoad( const char* filename,
+ CvMemStorage* memstorage CV_DEFAULT(NULL),
+ const char* name CV_DEFAULT(NULL),
+ const char** real_name CV_DEFAULT(NULL) );
+
+/*********************************** Measuring Execution Time ***************************/
+
+/* helper functions for RNG initialization and accurate time measurement:
+ uses internal clock counter on x86 */
+CVAPI(int64) cvGetTickCount( void );
+CVAPI(double) cvGetTickFrequency( void );
+
+/*********************************** CPU capabilities ***********************************/
+
+#define CV_CPU_NONE 0
+#define CV_CPU_MMX 1
+#define CV_CPU_SSE 2
+#define CV_CPU_SSE2 3
+#define CV_CPU_SSE3 4
+#define CV_CPU_SSSE3 5
+#define CV_CPU_SSE4_1 6
+#define CV_CPU_SSE4_2 7
+#define CV_CPU_POPCNT 8
+#define CV_CPU_AVX 10
+#define CV_CPU_AVX2 11
+#define CV_HARDWARE_MAX_FEATURE 255
+
+CVAPI(int) cvCheckHardwareSupport(int feature);
+
+/*********************************** Multi-Threading ************************************/
+
+/* retrieve/set the number of threads used in OpenMP implementations */
+CVAPI(int) cvGetNumThreads( void );
+CVAPI(void) cvSetNumThreads( int threads CV_DEFAULT(0) );
+/* get index of the thread being executed */
+CVAPI(int) cvGetThreadNum( void );
+
+
+/********************************** Error Handling **************************************/
+
+/* Get current OpenCV error status */
+CVAPI(int) cvGetErrStatus( void );
+
+/* Sets error status silently */
+CVAPI(void) cvSetErrStatus( int status );
+
+#define CV_ErrModeLeaf 0 /* Print error and exit program */
+#define CV_ErrModeParent 1 /* Print error and continue */
+#define CV_ErrModeSilent 2 /* Don't print and continue */
+
+/* Retrives current error processing mode */
+CVAPI(int) cvGetErrMode( void );
+
+/* Sets error processing mode, returns previously used mode */
+CVAPI(int) cvSetErrMode( int mode );
+
+/* Sets error status and performs some additonal actions (displaying message box,
+ writing message to stderr, terminating application etc.)
+ depending on the current error mode */
+CVAPI(void) cvError( int status, const char* func_name,
+ const char* err_msg, const char* file_name, int line );
+
+/* Retrieves textual description of the error given its code */
+CVAPI(const char*) cvErrorStr( int status );
+
+/* Retrieves detailed information about the last error occured */
+CVAPI(int) cvGetErrInfo( const char** errcode_desc, const char** description,
+ const char** filename, int* line );
+
+/* Maps IPP error codes to the counterparts from OpenCV */
+CVAPI(int) cvErrorFromIppStatus( int ipp_status );
+
+typedef int (CV_CDECL *CvErrorCallback)( int status, const char* func_name,
+ const char* err_msg, const char* file_name, int line, void* userdata );
+
+/* Assigns a new error-handling function */
+CVAPI(CvErrorCallback) cvRedirectError( CvErrorCallback error_handler,
+ void* userdata CV_DEFAULT(NULL),
+ void** prev_userdata CV_DEFAULT(NULL) );
+
+/*
+ Output to:
+ cvNulDevReport - nothing
+ cvStdErrReport - console(fprintf(stderr,...))
+ cvGuiBoxReport - MessageBox(WIN32)
+ */
+CVAPI(int) cvNulDevReport( int status, const char* func_name, const char* err_msg,
+ const char* file_name, int line, void* userdata );
+
+CVAPI(int) cvStdErrReport( int status, const char* func_name, const char* err_msg,
+ const char* file_name, int line, void* userdata );
+
+CVAPI(int) cvGuiBoxReport( int status, const char* func_name, const char* err_msg,
+ const char* file_name, int line, void* userdata );
+
+#define OPENCV_ERROR(status,func,context) \
+cvError((status),(func),(context),__FILE__,__LINE__)
+
+#define OPENCV_ERRCHK(func,context) \
+{if (cvGetErrStatus() >= 0) \
+{OPENCV_ERROR(CV_StsBackTrace,(func),(context));}}
+
+#define OPENCV_ASSERT(expr,func,context) \
+{if (! (expr)) \
+{OPENCV_ERROR(CV_StsInternal,(func),(context));}}
+
+#define OPENCV_RSTERR() (cvSetErrStatus(CV_StsOk))
+
+#define OPENCV_CALL( Func ) \
+{ \
+Func; \
+}
+
+
+/* CV_FUNCNAME macro defines icvFuncName constant which is used by CV_ERROR macro */
+#ifdef CV_NO_FUNC_NAMES
+#define CV_FUNCNAME( Name )
+#define cvFuncName ""
+#else
+#define CV_FUNCNAME( Name ) \
+static char cvFuncName[] = Name
+#endif
+
+
+/*
+ CV_ERROR macro unconditionally raises error with passed code and message.
+ After raising error, control will be transferred to the exit label.
+ */
+#define CV_ERROR( Code, Msg ) \
+{ \
+ cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ ); \
+ __CV_EXIT__; \
+}
+
+/* Simplified form of CV_ERROR */
+#define CV_ERROR_FROM_CODE( code ) \
+ CV_ERROR( code, "" )
+
+/*
+ CV_CHECK macro checks error status after CV (or IPL)
+ function call. If error detected, control will be transferred to the exit
+ label.
+ */
+#define CV_CHECK() \
+{ \
+ if( cvGetErrStatus() < 0 ) \
+ CV_ERROR( CV_StsBackTrace, "Inner function failed." ); \
+}
+
+
+/*
+ CV_CALL macro calls CV (or IPL) function, checks error status and
+ signals a error if the function failed. Useful in "parent node"
+ error procesing mode
+ */
+#define CV_CALL( Func ) \
+{ \
+ Func; \
+ CV_CHECK(); \
+}
+
+
+/* Runtime assertion macro */
+#define CV_ASSERT( Condition ) \
+{ \
+ if( !(Condition) ) \
+ CV_ERROR( CV_StsInternal, "Assertion: " #Condition " failed" ); \
+}
+
+#define __CV_BEGIN__ {
+#define __CV_END__ goto exit; exit: ; }
+#define __CV_EXIT__ goto exit
+
+#ifdef __cplusplus
+}
+
+// classes for automatic module/RTTI data registration/unregistration
+struct CV_EXPORTS CvModule
+{
+ CvModule( CvModuleInfo* _info );
+ ~CvModule();
+ CvModuleInfo* info;
+
+ static CvModuleInfo* first;
+ static CvModuleInfo* last;
+};
+
+struct CV_EXPORTS CvType
+{
+ CvType( const char* type_name,
+ CvIsInstanceFunc is_instance, CvReleaseFunc release=0,
+ CvReadFunc read=0, CvWriteFunc write=0, CvCloneFunc clone=0 );
+ ~CvType();
+ CvTypeInfo* info;
+
+ static CvTypeInfo* first;
+ static CvTypeInfo* last;
+};
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/cuda_devptrs.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/cuda_devptrs.hpp
new file mode 100644
index 00000000..15340455
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/cuda_devptrs.hpp
@@ -0,0 +1,199 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_DEVPTRS_HPP__
+#define __OPENCV_CORE_DEVPTRS_HPP__
+
+#ifdef __cplusplus
+
+#ifdef __CUDACC__
+ #define __CV_GPU_HOST_DEVICE__ __host__ __device__ __forceinline__
+#else
+ #define __CV_GPU_HOST_DEVICE__
+#endif
+
+namespace cv
+{
+ namespace gpu
+ {
+ // Simple lightweight structures that encapsulates information about an image on device.
+ // It is intended to pass to nvcc-compiled code. GpuMat depends on headers that nvcc can't compile
+
+ template <bool expr> struct StaticAssert;
+ template <> struct StaticAssert<true> {static __CV_GPU_HOST_DEVICE__ void check(){}};
+
+ template<typename T> struct DevPtr
+ {
+ typedef T elem_type;
+ typedef int index_type;
+
+ enum { elem_size = sizeof(elem_type) };
+
+ T* data;
+
+ __CV_GPU_HOST_DEVICE__ DevPtr() : data(0) {}
+ __CV_GPU_HOST_DEVICE__ DevPtr(T* data_) : data(data_) {}
+
+ __CV_GPU_HOST_DEVICE__ size_t elemSize() const { return elem_size; }
+ __CV_GPU_HOST_DEVICE__ operator T*() { return data; }
+ __CV_GPU_HOST_DEVICE__ operator const T*() const { return data; }
+ };
+
+ template<typename T> struct PtrSz : public DevPtr<T>
+ {
+ __CV_GPU_HOST_DEVICE__ PtrSz() : size(0) {}
+ __CV_GPU_HOST_DEVICE__ PtrSz(T* data_, size_t size_) : DevPtr<T>(data_), size(size_) {}
+
+ size_t size;
+ };
+
+ template<typename T> struct PtrStep : public DevPtr<T>
+ {
+ __CV_GPU_HOST_DEVICE__ PtrStep() : step(0) {}
+ __CV_GPU_HOST_DEVICE__ PtrStep(T* data_, size_t step_) : DevPtr<T>(data_), step(step_) {}
+
+ /** \brief stride between two consecutive rows in bytes. Step is stored always and everywhere in bytes!!! */
+ size_t step;
+
+ __CV_GPU_HOST_DEVICE__ T* ptr(int y = 0) { return ( T*)( ( char*)DevPtr<T>::data + y * step); }
+ __CV_GPU_HOST_DEVICE__ const T* ptr(int y = 0) const { return (const T*)( (const char*)DevPtr<T>::data + y * step); }
+
+ __CV_GPU_HOST_DEVICE__ T& operator ()(int y, int x) { return ptr(y)[x]; }
+ __CV_GPU_HOST_DEVICE__ const T& operator ()(int y, int x) const { return ptr(y)[x]; }
+ };
+
+ template <typename T> struct PtrStepSz : public PtrStep<T>
+ {
+ __CV_GPU_HOST_DEVICE__ PtrStepSz() : cols(0), rows(0) {}
+ __CV_GPU_HOST_DEVICE__ PtrStepSz(int rows_, int cols_, T* data_, size_t step_)
+ : PtrStep<T>(data_, step_), cols(cols_), rows(rows_) {}
+
+ template <typename U>
+ explicit PtrStepSz(const PtrStepSz<U>& d) : PtrStep<T>((T*)d.data, d.step), cols(d.cols), rows(d.rows){}
+
+ int cols;
+ int rows;
+ };
+
+ typedef PtrStepSz<unsigned char> PtrStepSzb;
+ typedef PtrStepSz<float> PtrStepSzf;
+ typedef PtrStepSz<int> PtrStepSzi;
+
+ typedef PtrStep<unsigned char> PtrStepb;
+ typedef PtrStep<float> PtrStepf;
+ typedef PtrStep<int> PtrStepi;
+
+
+#if defined __GNUC__
+ #define __CV_GPU_DEPR_BEFORE__
+ #define __CV_GPU_DEPR_AFTER__ __attribute__ ((deprecated))
+#elif defined(__MSVC__) //|| defined(__CUDACC__)
+ #pragma deprecated(DevMem2D_)
+ #define __CV_GPU_DEPR_BEFORE__ __declspec(deprecated)
+ #define __CV_GPU_DEPR_AFTER__
+#else
+ #define __CV_GPU_DEPR_BEFORE__
+ #define __CV_GPU_DEPR_AFTER__
+#endif
+
+ template <typename T> struct __CV_GPU_DEPR_BEFORE__ DevMem2D_ : public PtrStepSz<T>
+ {
+ DevMem2D_() {}
+ DevMem2D_(int rows_, int cols_, T* data_, size_t step_) : PtrStepSz<T>(rows_, cols_, data_, step_) {}
+
+ template <typename U>
+ explicit __CV_GPU_DEPR_BEFORE__ DevMem2D_(const DevMem2D_<U>& d) : PtrStepSz<T>(d.rows, d.cols, (T*)d.data, d.step) {}
+ } __CV_GPU_DEPR_AFTER__ ;
+
+ typedef DevMem2D_<unsigned char> DevMem2Db;
+ typedef DevMem2Db DevMem2D;
+ typedef DevMem2D_<float> DevMem2Df;
+ typedef DevMem2D_<int> DevMem2Di;
+
+ template<typename T> struct PtrElemStep_ : public PtrStep<T>
+ {
+ PtrElemStep_(const DevMem2D_<T>& mem) : PtrStep<T>(mem.data, mem.step)
+ {
+ StaticAssert<256 % sizeof(T) == 0>::check();
+
+ PtrStep<T>::step /= PtrStep<T>::elem_size;
+ }
+ __CV_GPU_HOST_DEVICE__ T* ptr(int y = 0) { return PtrStep<T>::data + y * PtrStep<T>::step; }
+ __CV_GPU_HOST_DEVICE__ const T* ptr(int y = 0) const { return PtrStep<T>::data + y * PtrStep<T>::step; }
+
+ __CV_GPU_HOST_DEVICE__ T& operator ()(int y, int x) { return ptr(y)[x]; }
+ __CV_GPU_HOST_DEVICE__ const T& operator ()(int y, int x) const { return ptr(y)[x]; }
+ };
+
+ template<typename T> struct PtrStep_ : public PtrStep<T>
+ {
+ PtrStep_() {}
+ PtrStep_(const DevMem2D_<T>& mem) : PtrStep<T>(mem.data, mem.step) {}
+ };
+
+ typedef PtrElemStep_<unsigned char> PtrElemStep;
+ typedef PtrElemStep_<float> PtrElemStepf;
+ typedef PtrElemStep_<int> PtrElemStepi;
+
+//#undef __CV_GPU_DEPR_BEFORE__
+//#undef __CV_GPU_DEPR_AFTER__
+
+ namespace device
+ {
+ using cv::gpu::PtrSz;
+ using cv::gpu::PtrStep;
+ using cv::gpu::PtrStepSz;
+
+ using cv::gpu::PtrStepSzb;
+ using cv::gpu::PtrStepSzf;
+ using cv::gpu::PtrStepSzi;
+
+ using cv::gpu::PtrStepb;
+ using cv::gpu::PtrStepf;
+ using cv::gpu::PtrStepi;
+ }
+ }
+}
+
+#endif // __cplusplus
+
+#endif /* __OPENCV_CORE_DEVPTRS_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/devmem2d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/devmem2d.hpp
new file mode 100644
index 00000000..18dfcd8a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/devmem2d.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/core/cuda_devptrs.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/eigen.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/eigen.hpp
new file mode 100644
index 00000000..a7b237f9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/eigen.hpp
@@ -0,0 +1,280 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_EIGEN_HPP__
+#define __OPENCV_CORE_EIGEN_HPP__
+
+#ifdef __cplusplus
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+
+#if defined _MSC_VER && _MSC_VER >= 1200
+#pragma warning( disable: 4714 ) //__forceinline is not inlined
+#pragma warning( disable: 4127 ) //conditional expression is constant
+#pragma warning( disable: 4244 ) //conversion from '__int64' to 'int', possible loss of data
+#endif
+
+namespace cv
+{
+
+template<typename _Tp, int _rows, int _cols, int _options, int _maxRows, int _maxCols>
+void eigen2cv( const Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& src, Mat& dst )
+{
+ if( !(src.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _src(src.cols(), src.rows(), DataType<_Tp>::type,
+ (void*)src.data(), src.stride()*sizeof(_Tp));
+ transpose(_src, dst);
+ }
+ else
+ {
+ Mat _src(src.rows(), src.cols(), DataType<_Tp>::type,
+ (void*)src.data(), src.stride()*sizeof(_Tp));
+ _src.copyTo(dst);
+ }
+}
+
+template<typename _Tp, int _rows, int _cols, int _options, int _maxRows, int _maxCols>
+void cv2eigen( const Mat& src,
+ Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst )
+{
+ CV_DbgAssert(src.rows == _rows && src.cols == _cols);
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(src.cols, src.rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ if( src.type() == _dst.type() )
+ transpose(src, _dst);
+ else if( src.cols == src.rows )
+ {
+ src.convertTo(_dst, _dst.type());
+ transpose(_dst, _dst);
+ }
+ else
+ Mat(src.t()).convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ src.convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+// Matx case
+template<typename _Tp, int _rows, int _cols, int _options, int _maxRows, int _maxCols>
+void cv2eigen( const Matx<_Tp, _rows, _cols>& src,
+ Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst )
+{
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(_cols, _rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ transpose(src, _dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(_rows, _cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ Mat(src).copyTo(_dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+template<typename _Tp>
+void cv2eigen( const Mat& src,
+ Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst )
+{
+ dst.resize(src.rows, src.cols);
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(src.cols, src.rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ if( src.type() == _dst.type() )
+ transpose(src, _dst);
+ else if( src.cols == src.rows )
+ {
+ src.convertTo(_dst, _dst.type());
+ transpose(_dst, _dst);
+ }
+ else
+ Mat(src.t()).convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ src.convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+// Matx case
+template<typename _Tp, int _rows, int _cols>
+void cv2eigen( const Matx<_Tp, _rows, _cols>& src,
+ Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst )
+{
+ dst.resize(_rows, _cols);
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(_cols, _rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ transpose(src, _dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(_rows, _cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ Mat(src).copyTo(_dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+template<typename _Tp>
+void cv2eigen( const Mat& src,
+ Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst )
+{
+ CV_Assert(src.cols == 1);
+ dst.resize(src.rows);
+
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(src.cols, src.rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ if( src.type() == _dst.type() )
+ transpose(src, _dst);
+ else
+ Mat(src.t()).convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ src.convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+// Matx case
+template<typename _Tp, int _rows>
+void cv2eigen( const Matx<_Tp, _rows, 1>& src,
+ Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst )
+{
+ dst.resize(_rows);
+
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(1, _rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ transpose(src, _dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(_rows, 1, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ src.copyTo(_dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+
+template<typename _Tp>
+void cv2eigen( const Mat& src,
+ Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst )
+{
+ CV_Assert(src.rows == 1);
+ dst.resize(src.cols);
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(src.cols, src.rows, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ if( src.type() == _dst.type() )
+ transpose(src, _dst);
+ else
+ Mat(src.t()).convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ src.convertTo(_dst, _dst.type());
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+//Matx
+template<typename _Tp, int _cols>
+void cv2eigen( const Matx<_Tp, 1, _cols>& src,
+ Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst )
+{
+ dst.resize(_cols);
+ if( !(dst.Flags & Eigen::RowMajorBit) )
+ {
+ Mat _dst(_cols, 1, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ transpose(src, _dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+ else
+ {
+ Mat _dst(1, _cols, DataType<_Tp>::type,
+ dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
+ Mat(src).copyTo(_dst);
+ CV_DbgAssert(_dst.data == (uchar*)dst.data());
+ }
+}
+
+
+}
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/gpumat.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/gpumat.hpp
new file mode 100644
index 00000000..68647d9b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/gpumat.hpp
@@ -0,0 +1,564 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPUMAT_HPP__
+#define __OPENCV_GPUMAT_HPP__
+
+#ifdef __cplusplus
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/cuda_devptrs.hpp"
+
+namespace cv { namespace gpu
+{
+ //////////////////////////////// Initialization & Info ////////////////////////
+
+ //! This is the only function that do not throw exceptions if the library is compiled without Cuda.
+ CV_EXPORTS int getCudaEnabledDeviceCount();
+
+ //! Functions below throw cv::Expception if the library is compiled without Cuda.
+
+ CV_EXPORTS void setDevice(int device);
+ CV_EXPORTS int getDevice();
+
+ //! Explicitly destroys and cleans up all resources associated with the current device in the current process.
+ //! Any subsequent API call to this device will reinitialize the device.
+ CV_EXPORTS void resetDevice();
+
+ enum FeatureSet
+ {
+ FEATURE_SET_COMPUTE_10 = 10,
+ FEATURE_SET_COMPUTE_11 = 11,
+ FEATURE_SET_COMPUTE_12 = 12,
+ FEATURE_SET_COMPUTE_13 = 13,
+ FEATURE_SET_COMPUTE_20 = 20,
+ FEATURE_SET_COMPUTE_21 = 21,
+ FEATURE_SET_COMPUTE_30 = 30,
+ FEATURE_SET_COMPUTE_35 = 35,
+
+ GLOBAL_ATOMICS = FEATURE_SET_COMPUTE_11,
+ SHARED_ATOMICS = FEATURE_SET_COMPUTE_12,
+ NATIVE_DOUBLE = FEATURE_SET_COMPUTE_13,
+ WARP_SHUFFLE_FUNCTIONS = FEATURE_SET_COMPUTE_30,
+ DYNAMIC_PARALLELISM = FEATURE_SET_COMPUTE_35
+ };
+
+ // Checks whether current device supports the given feature
+ CV_EXPORTS bool deviceSupports(FeatureSet feature_set);
+
+ // Gives information about what GPU archs this OpenCV GPU module was
+ // compiled for
+ class CV_EXPORTS TargetArchs
+ {
+ public:
+ static bool builtWith(FeatureSet feature_set);
+ static bool has(int major, int minor);
+ static bool hasPtx(int major, int minor);
+ static bool hasBin(int major, int minor);
+ static bool hasEqualOrLessPtx(int major, int minor);
+ static bool hasEqualOrGreater(int major, int minor);
+ static bool hasEqualOrGreaterPtx(int major, int minor);
+ static bool hasEqualOrGreaterBin(int major, int minor);
+ private:
+ TargetArchs();
+ };
+
+ // Gives information about the given GPU
+ class CV_EXPORTS DeviceInfo
+ {
+ public:
+ // Creates DeviceInfo object for the current GPU
+ DeviceInfo() : device_id_(getDevice()) { query(); }
+
+ // Creates DeviceInfo object for the given GPU
+ DeviceInfo(int device_id) : device_id_(device_id) { query(); }
+
+ std::string name() const { return name_; }
+
+ // Return compute capability versions
+ int majorVersion() const { return majorVersion_; }
+ int minorVersion() const { return minorVersion_; }
+
+ int multiProcessorCount() const { return multi_processor_count_; }
+
+ size_t sharedMemPerBlock() const;
+
+ void queryMemory(size_t& totalMemory, size_t& freeMemory) const;
+ size_t freeMemory() const;
+ size_t totalMemory() const;
+
+ // Checks whether device supports the given feature
+ bool supports(FeatureSet feature_set) const;
+
+ // Checks whether the GPU module can be run on the given device
+ bool isCompatible() const;
+
+ int deviceID() const { return device_id_; }
+
+ private:
+ void query();
+
+ int device_id_;
+
+ std::string name_;
+ int multi_processor_count_;
+ int majorVersion_;
+ int minorVersion_;
+ };
+
+ CV_EXPORTS void printCudaDeviceInfo(int device);
+ CV_EXPORTS void printShortCudaDeviceInfo(int device);
+
+ //////////////////////////////// GpuMat ///////////////////////////////
+
+ //! Smart pointer for GPU memory with reference counting. Its interface is mostly similar with cv::Mat.
+ class CV_EXPORTS GpuMat
+ {
+ public:
+ //! default constructor
+ GpuMat();
+
+ //! constructs GpuMatrix of the specified size and type (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.)
+ GpuMat(int rows, int cols, int type);
+ GpuMat(Size size, int type);
+
+ //! constucts GpuMatrix and fills it with the specified value _s.
+ GpuMat(int rows, int cols, int type, Scalar s);
+ GpuMat(Size size, int type, Scalar s);
+
+ //! copy constructor
+ GpuMat(const GpuMat& m);
+
+ //! constructor for GpuMatrix headers pointing to user-allocated data
+ GpuMat(int rows, int cols, int type, void* data, size_t step = Mat::AUTO_STEP);
+ GpuMat(Size size, int type, void* data, size_t step = Mat::AUTO_STEP);
+
+ //! creates a matrix header for a part of the bigger matrix
+ GpuMat(const GpuMat& m, Range rowRange, Range colRange);
+ GpuMat(const GpuMat& m, Rect roi);
+
+ //! builds GpuMat from Mat. Perfom blocking upload to device.
+ explicit GpuMat(const Mat& m);
+
+ //! destructor - calls release()
+ ~GpuMat();
+
+ //! assignment operators
+ GpuMat& operator = (const GpuMat& m);
+
+ //! pefroms blocking upload data to GpuMat.
+ void upload(const Mat& m);
+
+ //! downloads data from device to host memory. Blocking calls.
+ void download(Mat& m) const;
+
+ //! returns a new GpuMatrix header for the specified row
+ GpuMat row(int y) const;
+ //! returns a new GpuMatrix header for the specified column
+ GpuMat col(int x) const;
+ //! ... for the specified row span
+ GpuMat rowRange(int startrow, int endrow) const;
+ GpuMat rowRange(Range r) const;
+ //! ... for the specified column span
+ GpuMat colRange(int startcol, int endcol) const;
+ GpuMat colRange(Range r) const;
+
+ //! returns deep copy of the GpuMatrix, i.e. the data is copied
+ GpuMat clone() const;
+ //! copies the GpuMatrix content to "m".
+ // It calls m.create(this->size(), this->type()).
+ void copyTo(GpuMat& m) const;
+ //! copies those GpuMatrix elements to "m" that are marked with non-zero mask elements.
+ void copyTo(GpuMat& m, const GpuMat& mask) const;
+ //! converts GpuMatrix to another datatype with optional scalng. See cvConvertScale.
+ void convertTo(GpuMat& m, int rtype, double alpha = 1, double beta = 0) const;
+
+ void assignTo(GpuMat& m, int type=-1) const;
+
+ //! sets every GpuMatrix element to s
+ GpuMat& operator = (Scalar s);
+ //! sets some of the GpuMatrix elements to s, according to the mask
+ GpuMat& setTo(Scalar s, const GpuMat& mask = GpuMat());
+ //! creates alternative GpuMatrix header for the same data, with different
+ // number of channels and/or different number of rows. see cvReshape.
+ GpuMat reshape(int cn, int rows = 0) const;
+
+ //! allocates new GpuMatrix data unless the GpuMatrix already has specified size and type.
+ // previous data is unreferenced if needed.
+ void create(int rows, int cols, int type);
+ void create(Size size, int type);
+ //! decreases reference counter;
+ // deallocate the data when reference counter reaches 0.
+ void release();
+
+ //! swaps with other smart pointer
+ void swap(GpuMat& mat);
+
+ //! locates GpuMatrix header within a parent GpuMatrix. See below
+ void locateROI(Size& wholeSize, Point& ofs) const;
+ //! moves/resizes the current GpuMatrix ROI inside the parent GpuMatrix.
+ GpuMat& adjustROI(int dtop, int dbottom, int dleft, int dright);
+ //! extracts a rectangular sub-GpuMatrix
+ // (this is a generalized form of row, rowRange etc.)
+ GpuMat operator()(Range rowRange, Range colRange) const;
+ GpuMat operator()(Rect roi) const;
+
+ //! returns true iff the GpuMatrix data is continuous
+ // (i.e. when there are no gaps between successive rows).
+ // similar to CV_IS_GpuMat_CONT(cvGpuMat->type)
+ bool isContinuous() const;
+ //! returns element size in bytes,
+ // similar to CV_ELEM_SIZE(cvMat->type)
+ size_t elemSize() const;
+ //! returns the size of element channel in bytes.
+ size_t elemSize1() const;
+ //! returns element type, similar to CV_MAT_TYPE(cvMat->type)
+ int type() const;
+ //! returns element type, similar to CV_MAT_DEPTH(cvMat->type)
+ int depth() const;
+ //! returns element type, similar to CV_MAT_CN(cvMat->type)
+ int channels() const;
+ //! returns step/elemSize1()
+ size_t step1() const;
+ //! returns GpuMatrix size:
+ // width == number of columns, height == number of rows
+ Size size() const;
+ //! returns true if GpuMatrix data is NULL
+ bool empty() const;
+
+ //! returns pointer to y-th row
+ uchar* ptr(int y = 0);
+ const uchar* ptr(int y = 0) const;
+
+ //! template version of the above method
+ template<typename _Tp> _Tp* ptr(int y = 0);
+ template<typename _Tp> const _Tp* ptr(int y = 0) const;
+
+ template <typename _Tp> operator PtrStepSz<_Tp>() const;
+ template <typename _Tp> operator PtrStep<_Tp>() const;
+
+ // Deprecated function
+ __CV_GPU_DEPR_BEFORE__ template <typename _Tp> operator DevMem2D_<_Tp>() const __CV_GPU_DEPR_AFTER__;
+ __CV_GPU_DEPR_BEFORE__ template <typename _Tp> operator PtrStep_<_Tp>() const __CV_GPU_DEPR_AFTER__;
+ #undef __CV_GPU_DEPR_BEFORE__
+ #undef __CV_GPU_DEPR_AFTER__
+
+ /*! includes several bit-fields:
+ - the magic signature
+ - continuity flag
+ - depth
+ - number of channels
+ */
+ int flags;
+
+ //! the number of rows and columns
+ int rows, cols;
+
+ //! a distance between successive rows in bytes; includes the gap if any
+ size_t step;
+
+ //! pointer to the data
+ uchar* data;
+
+ //! pointer to the reference counter;
+ // when GpuMatrix points to user-allocated data, the pointer is NULL
+ int* refcount;
+
+ //! helper fields used in locateROI and adjustROI
+ uchar* datastart;
+ uchar* dataend;
+ };
+
+ //! Creates continuous GPU matrix
+ CV_EXPORTS void createContinuous(int rows, int cols, int type, GpuMat& m);
+ CV_EXPORTS GpuMat createContinuous(int rows, int cols, int type);
+ CV_EXPORTS void createContinuous(Size size, int type, GpuMat& m);
+ CV_EXPORTS GpuMat createContinuous(Size size, int type);
+
+ //! Ensures that size of the given matrix is not less than (rows, cols) size
+ //! and matrix type is match specified one too
+ CV_EXPORTS void ensureSizeIsEnough(int rows, int cols, int type, GpuMat& m);
+ CV_EXPORTS void ensureSizeIsEnough(Size size, int type, GpuMat& m);
+
+ CV_EXPORTS GpuMat allocMatFromBuf(int rows, int cols, int type, GpuMat &mat);
+
+ ////////////////////////////////////////////////////////////////////////
+ // Error handling
+
+ CV_EXPORTS void error(const char* error_string, const char* file, const int line, const char* func = "");
+
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+
+ inline GpuMat::GpuMat()
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0)
+ {
+ }
+
+ inline GpuMat::GpuMat(int rows_, int cols_, int type_)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0)
+ {
+ if (rows_ > 0 && cols_ > 0)
+ create(rows_, cols_, type_);
+ }
+
+ inline GpuMat::GpuMat(Size size_, int type_)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0)
+ {
+ if (size_.height > 0 && size_.width > 0)
+ create(size_.height, size_.width, type_);
+ }
+
+ inline GpuMat::GpuMat(int rows_, int cols_, int type_, Scalar s_)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0)
+ {
+ if (rows_ > 0 && cols_ > 0)
+ {
+ create(rows_, cols_, type_);
+ setTo(s_);
+ }
+ }
+
+ inline GpuMat::GpuMat(Size size_, int type_, Scalar s_)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0)
+ {
+ if (size_.height > 0 && size_.width > 0)
+ {
+ create(size_.height, size_.width, type_);
+ setTo(s_);
+ }
+ }
+
+ inline GpuMat::~GpuMat()
+ {
+ release();
+ }
+
+ inline GpuMat GpuMat::clone() const
+ {
+ GpuMat m;
+ copyTo(m);
+ return m;
+ }
+
+ inline void GpuMat::assignTo(GpuMat& m, int _type) const
+ {
+ if (_type < 0)
+ m = *this;
+ else
+ convertTo(m, _type);
+ }
+
+ inline size_t GpuMat::step1() const
+ {
+ return step / elemSize1();
+ }
+
+ inline bool GpuMat::empty() const
+ {
+ return data == 0;
+ }
+
+ template<typename _Tp> inline _Tp* GpuMat::ptr(int y)
+ {
+ return (_Tp*)ptr(y);
+ }
+
+ template<typename _Tp> inline const _Tp* GpuMat::ptr(int y) const
+ {
+ return (const _Tp*)ptr(y);
+ }
+
+ inline void swap(GpuMat& a, GpuMat& b)
+ {
+ a.swap(b);
+ }
+
+ inline GpuMat GpuMat::row(int y) const
+ {
+ return GpuMat(*this, Range(y, y+1), Range::all());
+ }
+
+ inline GpuMat GpuMat::col(int x) const
+ {
+ return GpuMat(*this, Range::all(), Range(x, x+1));
+ }
+
+ inline GpuMat GpuMat::rowRange(int startrow, int endrow) const
+ {
+ return GpuMat(*this, Range(startrow, endrow), Range::all());
+ }
+
+ inline GpuMat GpuMat::rowRange(Range r) const
+ {
+ return GpuMat(*this, r, Range::all());
+ }
+
+ inline GpuMat GpuMat::colRange(int startcol, int endcol) const
+ {
+ return GpuMat(*this, Range::all(), Range(startcol, endcol));
+ }
+
+ inline GpuMat GpuMat::colRange(Range r) const
+ {
+ return GpuMat(*this, Range::all(), r);
+ }
+
+ inline void GpuMat::create(Size size_, int type_)
+ {
+ create(size_.height, size_.width, type_);
+ }
+
+ inline GpuMat GpuMat::operator()(Range _rowRange, Range _colRange) const
+ {
+ return GpuMat(*this, _rowRange, _colRange);
+ }
+
+ inline GpuMat GpuMat::operator()(Rect roi) const
+ {
+ return GpuMat(*this, roi);
+ }
+
+ inline bool GpuMat::isContinuous() const
+ {
+ return (flags & Mat::CONTINUOUS_FLAG) != 0;
+ }
+
+ inline size_t GpuMat::elemSize() const
+ {
+ return CV_ELEM_SIZE(flags);
+ }
+
+ inline size_t GpuMat::elemSize1() const
+ {
+ return CV_ELEM_SIZE1(flags);
+ }
+
+ inline int GpuMat::type() const
+ {
+ return CV_MAT_TYPE(flags);
+ }
+
+ inline int GpuMat::depth() const
+ {
+ return CV_MAT_DEPTH(flags);
+ }
+
+ inline int GpuMat::channels() const
+ {
+ return CV_MAT_CN(flags);
+ }
+
+ inline Size GpuMat::size() const
+ {
+ return Size(cols, rows);
+ }
+
+ inline uchar* GpuMat::ptr(int y)
+ {
+ CV_DbgAssert((unsigned)y < (unsigned)rows);
+ return data + step * y;
+ }
+
+ inline const uchar* GpuMat::ptr(int y) const
+ {
+ CV_DbgAssert((unsigned)y < (unsigned)rows);
+ return data + step * y;
+ }
+
+ inline GpuMat& GpuMat::operator = (Scalar s)
+ {
+ setTo(s);
+ return *this;
+ }
+
+ /** @cond IGNORED */
+ template <class T> inline GpuMat::operator PtrStepSz<T>() const
+ {
+ return PtrStepSz<T>(rows, cols, (T*)data, step);
+ }
+
+ template <class T> inline GpuMat::operator PtrStep<T>() const
+ {
+ return PtrStep<T>((T*)data, step);
+ }
+
+ template <class T> inline GpuMat::operator DevMem2D_<T>() const
+ {
+ return DevMem2D_<T>(rows, cols, (T*)data, step);
+ }
+
+ template <class T> inline GpuMat::operator PtrStep_<T>() const
+ {
+ return PtrStep_<T>(static_cast< DevMem2D_<T> >(*this));
+ }
+ /** @endcond */
+
+ inline GpuMat createContinuous(int rows, int cols, int type)
+ {
+ GpuMat m;
+ createContinuous(rows, cols, type, m);
+ return m;
+ }
+
+ inline void createContinuous(Size size, int type, GpuMat& m)
+ {
+ createContinuous(size.height, size.width, type, m);
+ }
+
+ inline GpuMat createContinuous(Size size, int type)
+ {
+ GpuMat m;
+ createContinuous(size, type, m);
+ return m;
+ }
+
+ inline void ensureSizeIsEnough(Size size, int type, GpuMat& m)
+ {
+ ensureSizeIsEnough(size.height, size.width, type, m);
+ }
+}}
+
+#endif // __cplusplus
+
+#endif // __OPENCV_GPUMAT_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/internal.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/internal.hpp
new file mode 100644
index 00000000..c2c89613
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/internal.hpp
@@ -0,0 +1,795 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+/* The header is for internal use and it is likely to change.
+ It contains some macro definitions that are used in cxcore, cv, cvaux
+ and, probably, other libraries. If you need some of this functionality,
+ the safe way is to copy it into your code and rename the macros.
+*/
+#ifndef __OPENCV_CORE_INTERNAL_HPP__
+#define __OPENCV_CORE_INTERNAL_HPP__
+
+#include <vector>
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/types_c.h"
+
+#if defined WIN32 || defined _WIN32
+# ifndef WIN32
+# define WIN32
+# endif
+# ifndef _WIN32
+# define _WIN32
+# endif
+#endif
+
+#if !defined WIN32 && !defined WINCE
+# include <pthread.h>
+#endif
+
+#ifdef __BORLANDC__
+# ifndef WIN32
+# define WIN32
+# endif
+# ifndef _WIN32
+# define _WIN32
+# endif
+# define CV_DLL
+# undef _CV_ALWAYS_PROFILE_
+# define _CV_ALWAYS_NO_PROFILE_
+#endif
+
+#ifndef FALSE
+# define FALSE 0
+#endif
+#ifndef TRUE
+# define TRUE 1
+#endif
+
+#define __BEGIN__ __CV_BEGIN__
+#define __END__ __CV_END__
+#define EXIT __CV_EXIT__
+
+#ifdef HAVE_IPP
+# include "ipp.h"
+
+CV_INLINE IppiSize ippiSize(int width, int height)
+{
+ IppiSize size = { width, height };
+ return size;
+}
+
+CV_INLINE IppiSize ippiSize(const cv::Size & _size)
+{
+ IppiSize size = { _size.width, _size.height };
+ return size;
+}
+
+#endif
+
+#ifndef IPPI_CALL
+# define IPPI_CALL(func) CV_Assert((func) >= 0)
+#endif
+
+#if defined __SSE2__ || defined _M_X64 || (defined _M_IX86_FP && _M_IX86_FP >= 2)
+# include "emmintrin.h"
+# define CV_SSE 1
+# define CV_SSE2 1
+# if defined __SSE3__ || (defined _MSC_VER && _MSC_VER >= 1500)
+# include "pmmintrin.h"
+# define CV_SSE3 1
+# endif
+# if defined __SSSE3__ || (defined _MSC_VER && _MSC_VER >= 1500)
+# include "tmmintrin.h"
+# define CV_SSSE3 1
+# endif
+# if defined __SSE4_1__ || (defined _MSC_VER && _MSC_VER >= 1500)
+# include <smmintrin.h>
+# define CV_SSE4_1 1
+# endif
+# if defined __SSE4_2__ || (defined _MSC_VER && _MSC_VER >= 1500)
+# include <nmmintrin.h>
+# define CV_SSE4_2 1
+# endif
+# if defined __AVX__ || (defined _MSC_FULL_VER && _MSC_FULL_VER >= 160040219)
+// MS Visual Studio 2010 (2012?) has no macro pre-defined to identify the use of /arch:AVX
+// See: http://connect.microsoft.com/VisualStudio/feedback/details/605858/arch-avx-should-define-a-predefined-macro-in-x64-and-set-a-unique-value-for-m-ix86-fp-in-win32
+# include <immintrin.h>
+# define CV_AVX 1
+# if defined(_XCR_XFEATURE_ENABLED_MASK)
+# define __xgetbv() _xgetbv(_XCR_XFEATURE_ENABLED_MASK)
+# else
+# define __xgetbv() 0
+# endif
+# endif
+# if defined __AVX2__
+# include <immintrin.h>
+# define CV_AVX2 1
+# endif
+#endif
+
+
+#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)
+# include <Intrin.h>
+# include "arm_neon.h"
+# define CV_NEON 1
+# define CPU_HAS_NEON_FEATURE (true)
+#elif defined(__ARM_NEON__) || defined(__ARM_NEON)
+# include <arm_neon.h>
+# define CV_NEON 1
+# define CPU_HAS_NEON_FEATURE (true)
+#endif
+
+#ifndef CV_SSE
+# define CV_SSE 0
+#endif
+#ifndef CV_SSE2
+# define CV_SSE2 0
+#endif
+#ifndef CV_SSE3
+# define CV_SSE3 0
+#endif
+#ifndef CV_SSSE3
+# define CV_SSSE3 0
+#endif
+#ifndef CV_SSE4_1
+# define CV_SSE4_1 0
+#endif
+#ifndef CV_SSE4_2
+# define CV_SSE4_2 0
+#endif
+#ifndef CV_AVX
+# define CV_AVX 0
+#endif
+#ifndef CV_AVX2
+# define CV_AVX2 0
+#endif
+#ifndef CV_NEON
+# define CV_NEON 0
+#endif
+
+#ifdef HAVE_TBB
+# include "tbb/tbb_stddef.h"
+# if TBB_VERSION_MAJOR*100 + TBB_VERSION_MINOR >= 202
+# include "tbb/tbb.h"
+# include "tbb/task.h"
+# undef min
+# undef max
+# else
+# undef HAVE_TBB
+# endif
+#endif
+
+#ifdef HAVE_EIGEN
+# if defined __GNUC__ && defined __APPLE__
+# pragma GCC diagnostic ignored "-Wshadow"
+# endif
+# include <Eigen/Core>
+# include "opencv2/core/eigen.hpp"
+#endif
+
+#ifdef __cplusplus
+
+namespace cv
+{
+#ifdef HAVE_TBB
+
+ typedef tbb::blocked_range<int> BlockedRange;
+
+ template<typename Body> static inline
+ void parallel_for( const BlockedRange& range, const Body& body )
+ {
+ tbb::parallel_for(range, body);
+ }
+
+ template<typename Iterator, typename Body> static inline
+ void parallel_do( Iterator first, Iterator last, const Body& body )
+ {
+ tbb::parallel_do(first, last, body);
+ }
+
+ typedef tbb::split Split;
+
+ template<typename Body> static inline
+ void parallel_reduce( const BlockedRange& range, Body& body )
+ {
+ tbb::parallel_reduce(range, body);
+ }
+
+ typedef tbb::concurrent_vector<Rect> ConcurrentRectVector;
+ typedef tbb::concurrent_vector<double> ConcurrentDoubleVector;
+#else
+ class BlockedRange
+ {
+ public:
+ BlockedRange() : _begin(0), _end(0), _grainsize(0) {}
+ BlockedRange(int b, int e, int g=1) : _begin(b), _end(e), _grainsize(g) {}
+ int begin() const { return _begin; }
+ int end() const { return _end; }
+ int grainsize() const { return _grainsize; }
+
+ protected:
+ int _begin, _end, _grainsize;
+ };
+
+ template<typename Body> static inline
+ void parallel_for( const BlockedRange& range, const Body& body )
+ {
+ body(range);
+ }
+ typedef std::vector<Rect> ConcurrentRectVector;
+ typedef std::vector<double> ConcurrentDoubleVector;
+
+ template<typename Iterator, typename Body> static inline
+ void parallel_do( Iterator first, Iterator last, const Body& body )
+ {
+ for( ; first != last; ++first )
+ body(*first);
+ }
+
+ class Split {};
+
+ template<typename Body> static inline
+ void parallel_reduce( const BlockedRange& range, Body& body )
+ {
+ body(range);
+ }
+#endif
+
+ // Returns a static string if there is a parallel framework,
+ // NULL otherwise.
+ CV_EXPORTS const char* currentParallelFramework();
+} //namespace cv
+
+#define CV_INIT_ALGORITHM(classname, algname, memberinit) \
+ static ::cv::Algorithm* create##classname() \
+ { \
+ return new classname; \
+ } \
+ \
+ static ::cv::AlgorithmInfo& classname##_info() \
+ { \
+ static ::cv::AlgorithmInfo classname##_info_var(algname, create##classname); \
+ return classname##_info_var; \
+ } \
+ \
+ static ::cv::AlgorithmInfo& classname##_info_auto = classname##_info(); \
+ \
+ ::cv::AlgorithmInfo* classname::info() const \
+ { \
+ static volatile bool initialized = false; \
+ \
+ if( !initialized ) \
+ { \
+ initialized = true; \
+ classname obj; \
+ memberinit; \
+ } \
+ return &classname##_info(); \
+ }
+
+#endif //__cplusplus
+
+/* maximal size of vector to run matrix operations on it inline (i.e. w/o ipp calls) */
+#define CV_MAX_INLINE_MAT_OP_SIZE 10
+
+/* maximal linear size of matrix to allocate it on stack. */
+#define CV_MAX_LOCAL_MAT_SIZE 32
+
+/* maximal size of local memory storage */
+#define CV_MAX_LOCAL_SIZE \
+ (CV_MAX_LOCAL_MAT_SIZE*CV_MAX_LOCAL_MAT_SIZE*(int)sizeof(double))
+
+/* default image row align (in bytes) */
+#define CV_DEFAULT_IMAGE_ROW_ALIGN 4
+
+/* matrices are continuous by default */
+#define CV_DEFAULT_MAT_ROW_ALIGN 1
+
+/* maximum size of dynamic memory buffer.
+ cvAlloc reports an error if a larger block is requested. */
+#define CV_MAX_ALLOC_SIZE (((size_t)1 << (sizeof(size_t)*8-2)))
+
+/* the alignment of all the allocated buffers */
+#define CV_MALLOC_ALIGN 16
+
+/* default alignment for dynamic data strucutures, resided in storages. */
+#define CV_STRUCT_ALIGN ((int)sizeof(double))
+
+/* default storage block size */
+#define CV_STORAGE_BLOCK_SIZE ((1<<16) - 128)
+
+/* default memory block for sparse array elements */
+#define CV_SPARSE_MAT_BLOCK (1<<12)
+
+/* initial hash table size */
+#define CV_SPARSE_HASH_SIZE0 (1<<10)
+
+/* maximal average node_count/hash_size ratio beyond which hash table is resized */
+#define CV_SPARSE_HASH_RATIO 3
+
+/* max length of strings */
+#define CV_MAX_STRLEN 1024
+
+#if 0 /*def CV_CHECK_FOR_NANS*/
+# define CV_CHECK_NANS( arr ) cvCheckArray((arr))
+#else
+# define CV_CHECK_NANS( arr )
+#endif
+
+/****************************************************************************************\
+* Common declarations *
+\****************************************************************************************/
+
+#ifdef __GNUC__
+# define CV_DECL_ALIGNED(x) __attribute__ ((aligned (x)))
+#elif defined _MSC_VER
+# define CV_DECL_ALIGNED(x) __declspec(align(x))
+#else
+# define CV_DECL_ALIGNED(x)
+#endif
+
+#ifndef CV_IMPL
+# define CV_IMPL CV_EXTERN_C
+#endif
+
+#define CV_DBG_BREAK() { volatile int* crashMe = 0; *crashMe = 0; }
+
+/* default step, set in case of continuous data
+ to work around checks for valid step in some ipp functions */
+#define CV_STUB_STEP (1 << 30)
+
+#define CV_SIZEOF_FLOAT ((int)sizeof(float))
+#define CV_SIZEOF_SHORT ((int)sizeof(short))
+
+#define CV_ORIGIN_TL 0
+#define CV_ORIGIN_BL 1
+
+/* IEEE754 constants and macros */
+#define CV_POS_INF 0x7f800000
+#define CV_NEG_INF 0x807fffff /* CV_TOGGLE_FLT(0xff800000) */
+#define CV_1F 0x3f800000
+#define CV_TOGGLE_FLT(x) ((x)^((int)(x) < 0 ? 0x7fffffff : 0))
+#define CV_TOGGLE_DBL(x) \
+ ((x)^((int64)(x) < 0 ? CV_BIG_INT(0x7fffffffffffffff) : 0))
+
+#define CV_NOP(a) (a)
+#define CV_ADD(a, b) ((a) + (b))
+#define CV_SUB(a, b) ((a) - (b))
+#define CV_MUL(a, b) ((a) * (b))
+#define CV_AND(a, b) ((a) & (b))
+#define CV_OR(a, b) ((a) | (b))
+#define CV_XOR(a, b) ((a) ^ (b))
+#define CV_ANDN(a, b) (~(a) & (b))
+#define CV_ORN(a, b) (~(a) | (b))
+#define CV_SQR(a) ((a) * (a))
+
+#define CV_LT(a, b) ((a) < (b))
+#define CV_LE(a, b) ((a) <= (b))
+#define CV_EQ(a, b) ((a) == (b))
+#define CV_NE(a, b) ((a) != (b))
+#define CV_GT(a, b) ((a) > (b))
+#define CV_GE(a, b) ((a) >= (b))
+
+#define CV_NONZERO(a) ((a) != 0)
+#define CV_NONZERO_FLT(a) (((a)+(a)) != 0)
+
+/* general-purpose saturation macros */
+#define CV_CAST_8U(t) (uchar)(!((t) & ~255) ? (t) : (t) > 0 ? 255 : 0)
+#define CV_CAST_8S(t) (schar)(!(((t)+128) & ~255) ? (t) : (t) > 0 ? 127 : -128)
+#define CV_CAST_16U(t) (ushort)(!((t) & ~65535) ? (t) : (t) > 0 ? 65535 : 0)
+#define CV_CAST_16S(t) (short)(!(((t)+32768) & ~65535) ? (t) : (t) > 0 ? 32767 : -32768)
+#define CV_CAST_32S(t) (int)(t)
+#define CV_CAST_64S(t) (int64)(t)
+#define CV_CAST_32F(t) (float)(t)
+#define CV_CAST_64F(t) (double)(t)
+
+#define CV_PASTE2(a,b) a##b
+#define CV_PASTE(a,b) CV_PASTE2(a,b)
+
+#define CV_EMPTY
+#define CV_MAKE_STR(a) #a
+
+#define CV_ZERO_OBJ(x) memset((x), 0, sizeof(*(x)))
+
+#define CV_DIM(static_array) ((int)(sizeof(static_array)/sizeof((static_array)[0])))
+
+#define cvUnsupportedFormat "Unsupported format"
+
+CV_INLINE void* cvAlignPtr( const void* ptr, int align CV_DEFAULT(32) )
+{
+ assert( (align & (align-1)) == 0 );
+ return (void*)( ((size_t)ptr + align - 1) & ~(size_t)(align-1) );
+}
+
+CV_INLINE int cvAlign( int size, int align )
+{
+ assert( (align & (align-1)) == 0 && size < INT_MAX );
+ return (size + align - 1) & -align;
+}
+
+CV_INLINE CvSize cvGetMatSize( const CvMat* mat )
+{
+ CvSize size;
+ size.width = mat->cols;
+ size.height = mat->rows;
+ return size;
+}
+
+#define CV_DESCALE(x,n) (((x) + (1 << ((n)-1))) >> (n))
+#define CV_FLT_TO_FIX(x,n) cvRound((x)*(1<<(n)))
+
+/****************************************************************************************\
+
+ Generic implementation of QuickSort algorithm.
+ ----------------------------------------------
+ Using this macro user can declare customized sort function that can be much faster
+ than built-in qsort function because of lower overhead on elements
+ comparison and exchange. The macro takes less_than (or LT) argument - a macro or function
+ that takes 2 arguments returns non-zero if the first argument should be before the second
+ one in the sorted sequence and zero otherwise.
+
+ Example:
+
+ Suppose that the task is to sort points by ascending of y coordinates and if
+ y's are equal x's should ascend.
+
+ The code is:
+ ------------------------------------------------------------------------------
+ #define cmp_pts( pt1, pt2 ) \
+ ((pt1).y < (pt2).y || ((pt1).y < (pt2).y && (pt1).x < (pt2).x))
+
+ [static] CV_IMPLEMENT_QSORT( icvSortPoints, CvPoint, cmp_pts )
+ ------------------------------------------------------------------------------
+
+ After that the function "void icvSortPoints( CvPoint* array, size_t total, int aux );"
+ is available to user.
+
+ aux is an additional parameter, which can be used when comparing elements.
+ The current implementation was derived from *BSD system qsort():
+
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+
+\****************************************************************************************/
+
+#define CV_IMPLEMENT_QSORT_EX( func_name, T, LT, user_data_type ) \
+void func_name( T *array, size_t total, user_data_type aux ) \
+{ \
+ int isort_thresh = 7; \
+ T t; \
+ int sp = 0; \
+ \
+ struct \
+ { \
+ T *lb; \
+ T *ub; \
+ } \
+ stack[48]; \
+ \
+ aux = aux; \
+ \
+ if( total <= 1 ) \
+ return; \
+ \
+ stack[0].lb = array; \
+ stack[0].ub = array + (total - 1); \
+ \
+ while( sp >= 0 ) \
+ { \
+ T* left = stack[sp].lb; \
+ T* right = stack[sp--].ub; \
+ \
+ for(;;) \
+ { \
+ int i, n = (int)(right - left) + 1, m; \
+ T* ptr; \
+ T* ptr2; \
+ \
+ if( n <= isort_thresh ) \
+ { \
+ insert_sort: \
+ for( ptr = left + 1; ptr <= right; ptr++ ) \
+ { \
+ for( ptr2 = ptr; ptr2 > left && LT(ptr2[0],ptr2[-1]); ptr2--) \
+ CV_SWAP( ptr2[0], ptr2[-1], t ); \
+ } \
+ break; \
+ } \
+ else \
+ { \
+ T* left0; \
+ T* left1; \
+ T* right0; \
+ T* right1; \
+ T* pivot; \
+ T* a; \
+ T* b; \
+ T* c; \
+ int swap_cnt = 0; \
+ \
+ left0 = left; \
+ right0 = right; \
+ pivot = left + (n/2); \
+ \
+ if( n > 40 ) \
+ { \
+ int d = n / 8; \
+ a = left, b = left + d, c = left + 2*d; \
+ left = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a)) \
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c)); \
+ \
+ a = pivot - d, b = pivot, c = pivot + d; \
+ pivot = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a)) \
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c)); \
+ \
+ a = right - 2*d, b = right - d, c = right; \
+ right = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a)) \
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c)); \
+ } \
+ \
+ a = left, b = pivot, c = right; \
+ pivot = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a)) \
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c)); \
+ if( pivot != left0 ) \
+ { \
+ CV_SWAP( *pivot, *left0, t ); \
+ pivot = left0; \
+ } \
+ left = left1 = left0 + 1; \
+ right = right1 = right0; \
+ \
+ for(;;) \
+ { \
+ while( left <= right && !LT(*pivot, *left) ) \
+ { \
+ if( !LT(*left, *pivot) ) \
+ { \
+ if( left > left1 ) \
+ CV_SWAP( *left1, *left, t ); \
+ swap_cnt = 1; \
+ left1++; \
+ } \
+ left++; \
+ } \
+ \
+ while( left <= right && !LT(*right, *pivot) ) \
+ { \
+ if( !LT(*pivot, *right) ) \
+ { \
+ if( right < right1 ) \
+ CV_SWAP( *right1, *right, t ); \
+ swap_cnt = 1; \
+ right1--; \
+ } \
+ right--; \
+ } \
+ \
+ if( left > right ) \
+ break; \
+ CV_SWAP( *left, *right, t ); \
+ swap_cnt = 1; \
+ left++; \
+ right--; \
+ } \
+ \
+ if( swap_cnt == 0 ) \
+ { \
+ left = left0, right = right0; \
+ goto insert_sort; \
+ } \
+ \
+ n = MIN( (int)(left1 - left0), (int)(left - left1) ); \
+ for( i = 0; i < n; i++ ) \
+ CV_SWAP( left0[i], left[i-n], t ); \
+ \
+ n = MIN( (int)(right0 - right1), (int)(right1 - right) ); \
+ for( i = 0; i < n; i++ ) \
+ CV_SWAP( left[i], right0[i-n+1], t ); \
+ n = (int)(left - left1); \
+ m = (int)(right1 - right); \
+ if( n > 1 ) \
+ { \
+ if( m > 1 ) \
+ { \
+ if( n > m ) \
+ { \
+ stack[++sp].lb = left0; \
+ stack[sp].ub = left0 + n - 1; \
+ left = right0 - m + 1, right = right0; \
+ } \
+ else \
+ { \
+ stack[++sp].lb = right0 - m + 1; \
+ stack[sp].ub = right0; \
+ left = left0, right = left0 + n - 1; \
+ } \
+ } \
+ else \
+ left = left0, right = left0 + n - 1; \
+ } \
+ else if( m > 1 ) \
+ left = right0 - m + 1, right = right0; \
+ else \
+ break; \
+ } \
+ } \
+ } \
+}
+
+#define CV_IMPLEMENT_QSORT( func_name, T, cmp ) \
+ CV_IMPLEMENT_QSORT_EX( func_name, T, cmp, int )
+
+/****************************************************************************************\
+* Structures and macros for integration with IPP *
+\****************************************************************************************/
+
+/* IPP-compatible return codes */
+typedef enum CvStatus
+{
+ CV_BADMEMBLOCK_ERR = -113,
+ CV_INPLACE_NOT_SUPPORTED_ERR= -112,
+ CV_UNMATCHED_ROI_ERR = -111,
+ CV_NOTFOUND_ERR = -110,
+ CV_BADCONVERGENCE_ERR = -109,
+
+ CV_BADDEPTH_ERR = -107,
+ CV_BADROI_ERR = -106,
+ CV_BADHEADER_ERR = -105,
+ CV_UNMATCHED_FORMATS_ERR = -104,
+ CV_UNSUPPORTED_COI_ERR = -103,
+ CV_UNSUPPORTED_CHANNELS_ERR = -102,
+ CV_UNSUPPORTED_DEPTH_ERR = -101,
+ CV_UNSUPPORTED_FORMAT_ERR = -100,
+
+ CV_BADARG_ERR = -49, //ipp comp
+ CV_NOTDEFINED_ERR = -48, //ipp comp
+
+ CV_BADCHANNELS_ERR = -47, //ipp comp
+ CV_BADRANGE_ERR = -44, //ipp comp
+ CV_BADSTEP_ERR = -29, //ipp comp
+
+ CV_BADFLAG_ERR = -12,
+ CV_DIV_BY_ZERO_ERR = -11, //ipp comp
+ CV_BADCOEF_ERR = -10,
+
+ CV_BADFACTOR_ERR = -7,
+ CV_BADPOINT_ERR = -6,
+ CV_BADSCALE_ERR = -4,
+ CV_OUTOFMEM_ERR = -3,
+ CV_NULLPTR_ERR = -2,
+ CV_BADSIZE_ERR = -1,
+ CV_NO_ERR = 0,
+ CV_OK = CV_NO_ERR
+}
+CvStatus;
+
+#define CV_NOTHROW throw()
+
+typedef struct CvFuncTable
+{
+ void* fn_2d[CV_DEPTH_MAX];
+}
+CvFuncTable;
+
+typedef struct CvBigFuncTable
+{
+ void* fn_2d[CV_DEPTH_MAX*4];
+} CvBigFuncTable;
+
+#define CV_INIT_FUNC_TAB( tab, FUNCNAME, FLAG ) \
+ (tab).fn_2d[CV_8U] = (void*)FUNCNAME##_8u##FLAG; \
+ (tab).fn_2d[CV_8S] = 0; \
+ (tab).fn_2d[CV_16U] = (void*)FUNCNAME##_16u##FLAG; \
+ (tab).fn_2d[CV_16S] = (void*)FUNCNAME##_16s##FLAG; \
+ (tab).fn_2d[CV_32S] = (void*)FUNCNAME##_32s##FLAG; \
+ (tab).fn_2d[CV_32F] = (void*)FUNCNAME##_32f##FLAG; \
+ (tab).fn_2d[CV_64F] = (void*)FUNCNAME##_64f##FLAG
+
+#ifdef __cplusplus
+
+// < Deprecated
+
+class CV_EXPORTS CvOpenGlFuncTab
+{
+public:
+ virtual ~CvOpenGlFuncTab();
+
+ virtual void genBuffers(int n, unsigned int* buffers) const = 0;
+ virtual void deleteBuffers(int n, const unsigned int* buffers) const = 0;
+
+ virtual void bufferData(unsigned int target, ptrdiff_t size, const void* data, unsigned int usage) const = 0;
+ virtual void bufferSubData(unsigned int target, ptrdiff_t offset, ptrdiff_t size, const void* data) const = 0;
+
+ virtual void bindBuffer(unsigned int target, unsigned int buffer) const = 0;
+
+ virtual void* mapBuffer(unsigned int target, unsigned int access) const = 0;
+ virtual void unmapBuffer(unsigned int target) const = 0;
+
+ virtual void generateBitmapFont(const std::string& family, int height, int weight, bool italic, bool underline, int start, int count, int base) const = 0;
+
+ virtual bool isGlContextInitialized() const = 0;
+};
+
+CV_EXPORTS void icvSetOpenGlFuncTab(const CvOpenGlFuncTab* tab);
+
+CV_EXPORTS bool icvCheckGlError(const char* file, const int line, const char* func = "");
+
+// >
+
+namespace cv { namespace ogl {
+CV_EXPORTS bool checkError(const char* file, const int line, const char* func = "");
+}}
+
+#define CV_CheckGlError() CV_DbgAssert( (cv::ogl::checkError(__FILE__, __LINE__, CV_Func)) )
+
+#endif //__cplusplus
+
+#endif // __OPENCV_CORE_INTERNAL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/mat.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/mat.hpp
new file mode 100644
index 00000000..631c6980
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/mat.hpp
@@ -0,0 +1,2625 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_MATRIX_OPERATIONS_HPP__
+#define __OPENCV_CORE_MATRIX_OPERATIONS_HPP__
+
+#ifndef SKIP_INCLUDES
+#include <limits.h>
+#include <string.h>
+#endif // SKIP_INCLUDES
+
+#ifdef __cplusplus
+
+namespace cv
+{
+
+//////////////////////////////// Mat ////////////////////////////////
+
+inline void Mat::initEmpty()
+{
+ flags = MAGIC_VAL;
+ dims = rows = cols = 0;
+ data = datastart = dataend = datalimit = 0;
+ refcount = 0;
+ allocator = 0;
+}
+
+inline Mat::Mat() : size(&rows)
+{
+ initEmpty();
+}
+
+inline Mat::Mat(int _rows, int _cols, int _type) : size(&rows)
+{
+ initEmpty();
+ create(_rows, _cols, _type);
+}
+
+inline Mat::Mat(int _rows, int _cols, int _type, const Scalar& _s) : size(&rows)
+{
+ initEmpty();
+ create(_rows, _cols, _type);
+ *this = _s;
+}
+
+inline Mat::Mat(Size _sz, int _type) : size(&rows)
+{
+ initEmpty();
+ create( _sz.height, _sz.width, _type );
+}
+
+inline Mat::Mat(Size _sz, int _type, const Scalar& _s) : size(&rows)
+{
+ initEmpty();
+ create(_sz.height, _sz.width, _type);
+ *this = _s;
+}
+
+inline Mat::Mat(int _dims, const int* _sz, int _type) : size(&rows)
+{
+ initEmpty();
+ create(_dims, _sz, _type);
+}
+
+inline Mat::Mat(int _dims, const int* _sz, int _type, const Scalar& _s) : size(&rows)
+{
+ initEmpty();
+ create(_dims, _sz, _type);
+ *this = _s;
+}
+
+inline Mat::Mat(const Mat& m)
+ : flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), data(m.data),
+ refcount(m.refcount), datastart(m.datastart), dataend(m.dataend),
+ datalimit(m.datalimit), allocator(m.allocator), size(&rows)
+{
+ if( refcount )
+ CV_XADD(refcount, 1);
+ if( m.dims <= 2 )
+ {
+ step[0] = m.step[0]; step[1] = m.step[1];
+ }
+ else
+ {
+ dims = 0;
+ copySize(m);
+ }
+}
+
+inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)
+ : flags(MAGIC_VAL + (_type & TYPE_MASK)), dims(2), rows(_rows), cols(_cols),
+ data((uchar*)_data), refcount(0), datastart((uchar*)_data), dataend(0),
+ datalimit(0), allocator(0), size(&rows)
+{
+ size_t esz = CV_ELEM_SIZE(_type), minstep = cols*esz;
+ if( _step == AUTO_STEP )
+ {
+ _step = minstep;
+ flags |= CONTINUOUS_FLAG;
+ }
+ else
+ {
+ if( rows == 1 ) _step = minstep;
+ CV_DbgAssert( _step >= minstep );
+ flags |= _step == minstep ? CONTINUOUS_FLAG : 0;
+ }
+ step[0] = _step; step[1] = esz;
+ datalimit = datastart + _step*rows;
+ dataend = datalimit - _step + minstep;
+}
+
+inline Mat::Mat(Size _sz, int _type, void* _data, size_t _step)
+ : flags(MAGIC_VAL + (_type & TYPE_MASK)), dims(2), rows(_sz.height), cols(_sz.width),
+ data((uchar*)_data), refcount(0), datastart((uchar*)_data), dataend(0),
+ datalimit(0), allocator(0), size(&rows)
+{
+ size_t esz = CV_ELEM_SIZE(_type), minstep = cols*esz;
+ if( _step == AUTO_STEP )
+ {
+ _step = minstep;
+ flags |= CONTINUOUS_FLAG;
+ }
+ else
+ {
+ if( rows == 1 ) _step = minstep;
+ CV_DbgAssert( _step >= minstep );
+ flags |= _step == minstep ? CONTINUOUS_FLAG : 0;
+ }
+ step[0] = _step; step[1] = esz;
+ datalimit = datastart + _step*rows;
+ dataend = datalimit - _step + minstep;
+}
+
+
+template<typename _Tp> inline Mat::Mat(const vector<_Tp>& vec, bool copyData)
+ : flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG),
+ dims(2), rows((int)vec.size()), cols(1), data(0), refcount(0),
+ datastart(0), dataend(0), allocator(0), size(&rows)
+{
+ if(vec.empty())
+ return;
+ if( !copyData )
+ {
+ step[0] = step[1] = sizeof(_Tp);
+ data = datastart = (uchar*)&vec[0];
+ datalimit = dataend = datastart + rows*step[0];
+ }
+ else
+ Mat((int)vec.size(), 1, DataType<_Tp>::type, (uchar*)&vec[0]).copyTo(*this);
+}
+
+
+template<typename _Tp, int n> inline Mat::Mat(const Vec<_Tp, n>& vec, bool copyData)
+ : flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG),
+ dims(2), rows(n), cols(1), data(0), refcount(0),
+ datastart(0), dataend(0), allocator(0), size(&rows)
+{
+ if( !copyData )
+ {
+ step[0] = step[1] = sizeof(_Tp);
+ data = datastart = (uchar*)vec.val;
+ datalimit = dataend = datastart + rows*step[0];
+ }
+ else
+ Mat(n, 1, DataType<_Tp>::type, (void*)vec.val).copyTo(*this);
+}
+
+
+template<typename _Tp, int m, int n> inline Mat::Mat(const Matx<_Tp,m,n>& M, bool copyData)
+ : flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG),
+ dims(2), rows(m), cols(n), data(0), refcount(0),
+ datastart(0), dataend(0), allocator(0), size(&rows)
+{
+ if( !copyData )
+ {
+ step[0] = cols*sizeof(_Tp);
+ step[1] = sizeof(_Tp);
+ data = datastart = (uchar*)M.val;
+ datalimit = dataend = datastart + rows*step[0];
+ }
+ else
+ Mat(m, n, DataType<_Tp>::type, (uchar*)M.val).copyTo(*this);
+}
+
+
+template<typename _Tp> inline Mat::Mat(const Point_<_Tp>& pt, bool copyData)
+ : flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG),
+ dims(2), rows(2), cols(1), data(0), refcount(0),
+ datastart(0), dataend(0), allocator(0), size(&rows)
+{
+ if( !copyData )
+ {
+ step[0] = step[1] = sizeof(_Tp);
+ data = datastart = (uchar*)&pt.x;
+ datalimit = dataend = datastart + rows*step[0];
+ }
+ else
+ {
+ create(2, 1, DataType<_Tp>::type);
+ ((_Tp*)data)[0] = pt.x;
+ ((_Tp*)data)[1] = pt.y;
+ }
+}
+
+
+template<typename _Tp> inline Mat::Mat(const Point3_<_Tp>& pt, bool copyData)
+ : flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG),
+ dims(2), rows(3), cols(1), data(0), refcount(0),
+ datastart(0), dataend(0), allocator(0), size(&rows)
+{
+ if( !copyData )
+ {
+ step[0] = step[1] = sizeof(_Tp);
+ data = datastart = (uchar*)&pt.x;
+ datalimit = dataend = datastart + rows*step[0];
+ }
+ else
+ {
+ create(3, 1, DataType<_Tp>::type);
+ ((_Tp*)data)[0] = pt.x;
+ ((_Tp*)data)[1] = pt.y;
+ ((_Tp*)data)[2] = pt.z;
+ }
+}
+
+
+template<typename _Tp> inline Mat::Mat(const MatCommaInitializer_<_Tp>& commaInitializer)
+ : flags(MAGIC_VAL | DataType<_Tp>::type | CV_MAT_CONT_FLAG),
+ dims(0), rows(0), cols(0), data(0), refcount(0),
+ datastart(0), dataend(0), allocator(0), size(&rows)
+{
+ *this = *commaInitializer;
+}
+
+inline Mat::~Mat()
+{
+ release();
+ if( step.p != step.buf )
+ fastFree(step.p);
+}
+
+inline Mat& Mat::operator = (const Mat& m)
+{
+ if( this != &m )
+ {
+ if( m.refcount )
+ CV_XADD(m.refcount, 1);
+ release();
+ flags = m.flags;
+ if( dims <= 2 && m.dims <= 2 )
+ {
+ dims = m.dims;
+ rows = m.rows;
+ cols = m.cols;
+ step[0] = m.step[0];
+ step[1] = m.step[1];
+ }
+ else
+ copySize(m);
+ data = m.data;
+ datastart = m.datastart;
+ dataend = m.dataend;
+ datalimit = m.datalimit;
+ refcount = m.refcount;
+ allocator = m.allocator;
+ }
+ return *this;
+}
+
+inline Mat Mat::row(int y) const { return Mat(*this, Range(y, y+1), Range::all()); }
+inline Mat Mat::col(int x) const { return Mat(*this, Range::all(), Range(x, x+1)); }
+inline Mat Mat::rowRange(int startrow, int endrow) const
+ { return Mat(*this, Range(startrow, endrow), Range::all()); }
+inline Mat Mat::rowRange(const Range& r) const
+ { return Mat(*this, r, Range::all()); }
+inline Mat Mat::colRange(int startcol, int endcol) const
+ { return Mat(*this, Range::all(), Range(startcol, endcol)); }
+inline Mat Mat::colRange(const Range& r) const
+ { return Mat(*this, Range::all(), r); }
+
+inline Mat Mat::diag(const Mat& d)
+{
+ CV_Assert( d.cols == 1 || d.rows == 1 );
+ int len = d.rows + d.cols - 1;
+ Mat m(len, len, d.type(), Scalar(0)), md = m.diag();
+ if( d.cols == 1 )
+ d.copyTo(md);
+ else
+ transpose(d, md);
+ return m;
+}
+
+inline Mat Mat::clone() const
+{
+ Mat m;
+ copyTo(m);
+ return m;
+}
+
+inline void Mat::assignTo( Mat& m, int _type ) const
+{
+ if( _type < 0 )
+ m = *this;
+ else
+ convertTo(m, _type);
+}
+
+inline void Mat::create(int _rows, int _cols, int _type)
+{
+ _type &= TYPE_MASK;
+ if( dims <= 2 && rows == _rows && cols == _cols && type() == _type && data )
+ return;
+ int sz[] = {_rows, _cols};
+ create(2, sz, _type);
+}
+
+inline void Mat::create(Size _sz, int _type)
+{
+ create(_sz.height, _sz.width, _type);
+}
+
+inline void Mat::addref()
+{ if( refcount ) CV_XADD(refcount, 1); }
+
+inline void Mat::release()
+{
+ if( refcount && CV_XADD(refcount, -1) == 1 )
+ deallocate();
+ data = datastart = dataend = datalimit = 0;
+ for(int i = 0; i < dims; i++)
+ size.p[i] = 0;
+ refcount = 0;
+}
+
+inline Mat Mat::operator()( Range _rowRange, Range _colRange ) const
+{
+ return Mat(*this, _rowRange, _colRange);
+}
+
+inline Mat Mat::operator()( const Rect& roi ) const
+{ return Mat(*this, roi); }
+
+inline Mat Mat::operator()(const Range* ranges) const
+{
+ return Mat(*this, ranges);
+}
+
+inline Mat::operator CvMat() const
+{
+ CV_DbgAssert(dims <= 2);
+ CvMat m = cvMat(rows, dims == 1 ? 1 : cols, type(), data);
+ m.step = (int)step[0];
+ m.type = (m.type & ~CONTINUOUS_FLAG) | (flags & CONTINUOUS_FLAG);
+ return m;
+}
+
+inline bool Mat::isContinuous() const { return (flags & CONTINUOUS_FLAG) != 0; }
+inline bool Mat::isSubmatrix() const { return (flags & SUBMATRIX_FLAG) != 0; }
+inline size_t Mat::elemSize() const { return dims > 0 ? step.p[dims-1] : 0; }
+inline size_t Mat::elemSize1() const { return CV_ELEM_SIZE1(flags); }
+inline int Mat::type() const { return CV_MAT_TYPE(flags); }
+inline int Mat::depth() const { return CV_MAT_DEPTH(flags); }
+inline int Mat::channels() const { return CV_MAT_CN(flags); }
+inline size_t Mat::step1(int i) const { return step.p[i]/elemSize1(); }
+inline bool Mat::empty() const { return data == 0 || total() == 0; }
+inline size_t Mat::total() const
+{
+ if( dims <= 2 )
+ return (size_t)rows*cols;
+ size_t p = 1;
+ for( int i = 0; i < dims; i++ )
+ p *= size[i];
+ return p;
+}
+
+inline uchar* Mat::ptr(int y)
+{
+ CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
+ return data + step.p[0]*y;
+}
+
+inline const uchar* Mat::ptr(int y) const
+{
+ CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
+ return data + step.p[0]*y;
+}
+
+template<typename _Tp> inline _Tp* Mat::ptr(int y)
+{
+ CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
+ return (_Tp*)(data + step.p[0]*y);
+}
+
+template<typename _Tp> inline const _Tp* Mat::ptr(int y) const
+{
+ CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
+ return (const _Tp*)(data + step.p[0]*y);
+}
+
+
+inline uchar* Mat::ptr(int i0, int i1)
+{
+ CV_DbgAssert( dims >= 2 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] );
+ return data + i0*step.p[0] + i1*step.p[1];
+}
+
+inline const uchar* Mat::ptr(int i0, int i1) const
+{
+ CV_DbgAssert( dims >= 2 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] );
+ return data + i0*step.p[0] + i1*step.p[1];
+}
+
+template<typename _Tp> inline _Tp* Mat::ptr(int i0, int i1)
+{
+ CV_DbgAssert( dims >= 2 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] );
+ return (_Tp*)(data + i0*step.p[0] + i1*step.p[1]);
+}
+
+template<typename _Tp> inline const _Tp* Mat::ptr(int i0, int i1) const
+{
+ CV_DbgAssert( dims >= 2 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] );
+ return (const _Tp*)(data + i0*step.p[0] + i1*step.p[1]);
+}
+
+inline uchar* Mat::ptr(int i0, int i1, int i2)
+{
+ CV_DbgAssert( dims >= 3 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] &&
+ (unsigned)i2 < (unsigned)size.p[2] );
+ return data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2];
+}
+
+inline const uchar* Mat::ptr(int i0, int i1, int i2) const
+{
+ CV_DbgAssert( dims >= 3 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] &&
+ (unsigned)i2 < (unsigned)size.p[2] );
+ return data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2];
+}
+
+template<typename _Tp> inline _Tp* Mat::ptr(int i0, int i1, int i2)
+{
+ CV_DbgAssert( dims >= 3 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] &&
+ (unsigned)i2 < (unsigned)size.p[2] );
+ return (_Tp*)(data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2]);
+}
+
+template<typename _Tp> inline const _Tp* Mat::ptr(int i0, int i1, int i2) const
+{
+ CV_DbgAssert( dims >= 3 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] &&
+ (unsigned)i2 < (unsigned)size.p[2] );
+ return (const _Tp*)(data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2]);
+}
+
+inline uchar* Mat::ptr(const int* idx)
+{
+ int i, d = dims;
+ uchar* p = data;
+ CV_DbgAssert( d >= 1 && p );
+ for( i = 0; i < d; i++ )
+ {
+ CV_DbgAssert( (unsigned)idx[i] < (unsigned)size.p[i] );
+ p += idx[i]*step.p[i];
+ }
+ return p;
+}
+
+inline const uchar* Mat::ptr(const int* idx) const
+{
+ int i, d = dims;
+ uchar* p = data;
+ CV_DbgAssert( d >= 1 && p );
+ for( i = 0; i < d; i++ )
+ {
+ CV_DbgAssert( (unsigned)idx[i] < (unsigned)size.p[i] );
+ p += idx[i]*step.p[i];
+ }
+ return p;
+}
+
+template<typename _Tp> inline _Tp& Mat::at(int i0, int i1)
+{
+ CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
+ CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
+ return ((_Tp*)(data + step.p[0]*i0))[i1];
+}
+
+template<typename _Tp> inline const _Tp& Mat::at(int i0, int i1) const
+{
+ CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
+ CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
+ return ((const _Tp*)(data + step.p[0]*i0))[i1];
+}
+
+template<typename _Tp> inline _Tp& Mat::at(Point pt)
+{
+ CV_DbgAssert( dims <= 2 && data && (unsigned)pt.y < (unsigned)size.p[0] &&
+ (unsigned)(pt.x*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
+ CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
+ return ((_Tp*)(data + step.p[0]*pt.y))[pt.x];
+}
+
+template<typename _Tp> inline const _Tp& Mat::at(Point pt) const
+{
+ CV_DbgAssert( dims <= 2 && data && (unsigned)pt.y < (unsigned)size.p[0] &&
+ (unsigned)(pt.x*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
+ CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
+ return ((const _Tp*)(data + step.p[0]*pt.y))[pt.x];
+}
+
+template<typename _Tp> inline _Tp& Mat::at(int i0)
+{
+ CV_DbgAssert( dims <= 2 && data &&
+ (unsigned)i0 < (unsigned)(size.p[0]*size.p[1]) &&
+ elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ if( isContinuous() || size.p[0] == 1 )
+ return ((_Tp*)data)[i0];
+ if( size.p[1] == 1 )
+ return *(_Tp*)(data + step.p[0]*i0);
+ int i = i0/cols, j = i0 - i*cols;
+ return ((_Tp*)(data + step.p[0]*i))[j];
+}
+
+template<typename _Tp> inline const _Tp& Mat::at(int i0) const
+{
+ CV_DbgAssert( dims <= 2 && data &&
+ (unsigned)i0 < (unsigned)(size.p[0]*size.p[1]) &&
+ elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ if( isContinuous() || size.p[0] == 1 )
+ return ((const _Tp*)data)[i0];
+ if( size.p[1] == 1 )
+ return *(const _Tp*)(data + step.p[0]*i0);
+ int i = i0/cols, j = i0 - i*cols;
+ return ((const _Tp*)(data + step.p[0]*i))[j];
+}
+
+template<typename _Tp> inline _Tp& Mat::at(int i0, int i1, int i2)
+{
+ CV_DbgAssert( elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ return *(_Tp*)ptr(i0, i1, i2);
+}
+template<typename _Tp> inline const _Tp& Mat::at(int i0, int i1, int i2) const
+{
+ CV_DbgAssert( elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ return *(const _Tp*)ptr(i0, i1, i2);
+}
+template<typename _Tp> inline _Tp& Mat::at(const int* idx)
+{
+ CV_DbgAssert( elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ return *(_Tp*)ptr(idx);
+}
+template<typename _Tp> inline const _Tp& Mat::at(const int* idx) const
+{
+ CV_DbgAssert( elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ return *(const _Tp*)ptr(idx);
+}
+template<typename _Tp, int n> _Tp& Mat::at(const Vec<int, n>& idx)
+{
+ CV_DbgAssert( elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ return *(_Tp*)ptr(idx.val);
+}
+template<typename _Tp, int n> inline const _Tp& Mat::at(const Vec<int, n>& idx) const
+{
+ CV_DbgAssert( elemSize() == CV_ELEM_SIZE(DataType<_Tp>::type) );
+ return *(const _Tp*)ptr(idx.val);
+}
+
+
+template<typename _Tp> inline MatConstIterator_<_Tp> Mat::begin() const
+{
+ CV_DbgAssert( elemSize() == sizeof(_Tp) );
+ return MatConstIterator_<_Tp>((const Mat_<_Tp>*)this);
+}
+
+template<typename _Tp> inline MatConstIterator_<_Tp> Mat::end() const
+{
+ CV_DbgAssert( elemSize() == sizeof(_Tp) );
+ MatConstIterator_<_Tp> it((const Mat_<_Tp>*)this);
+ it += total();
+ return it;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp> Mat::begin()
+{
+ CV_DbgAssert( elemSize() == sizeof(_Tp) );
+ return MatIterator_<_Tp>((Mat_<_Tp>*)this);
+}
+
+template<typename _Tp> inline MatIterator_<_Tp> Mat::end()
+{
+ CV_DbgAssert( elemSize() == sizeof(_Tp) );
+ MatIterator_<_Tp> it((Mat_<_Tp>*)this);
+ it += total();
+ return it;
+}
+
+template<typename _Tp> inline Mat::operator vector<_Tp>() const
+{
+ vector<_Tp> v;
+ copyTo(v);
+ return v;
+}
+
+template<typename _Tp, int n> inline Mat::operator Vec<_Tp, n>() const
+{
+ CV_Assert( data && dims <= 2 && (rows == 1 || cols == 1) &&
+ rows + cols - 1 == n && channels() == 1 );
+
+ if( isContinuous() && type() == DataType<_Tp>::type )
+ return Vec<_Tp, n>((_Tp*)data);
+ Vec<_Tp, n> v; Mat tmp(rows, cols, DataType<_Tp>::type, v.val);
+ convertTo(tmp, tmp.type());
+ return v;
+}
+
+template<typename _Tp, int m, int n> inline Mat::operator Matx<_Tp, m, n>() const
+{
+ CV_Assert( data && dims <= 2 && rows == m && cols == n && channels() == 1 );
+
+ if( isContinuous() && type() == DataType<_Tp>::type )
+ return Matx<_Tp, m, n>((_Tp*)data);
+ Matx<_Tp, m, n> mtx; Mat tmp(rows, cols, DataType<_Tp>::type, mtx.val);
+ convertTo(tmp, tmp.type());
+ return mtx;
+}
+
+
+template<typename _Tp> inline void Mat::push_back(const _Tp& elem)
+{
+ if( !data )
+ {
+ CV_Assert((type()==0) || (DataType<_Tp>::type == type()));
+
+ *this = Mat(1, 1, DataType<_Tp>::type, (void*)&elem).clone();
+ return;
+ }
+ CV_Assert(DataType<_Tp>::type == type() && cols == 1
+ /* && dims == 2 (cols == 1 implies dims == 2) */);
+ uchar* tmp = dataend + step[0];
+ if( !isSubmatrix() && isContinuous() && tmp <= datalimit )
+ {
+ *(_Tp*)(data + (size.p[0]++)*step.p[0]) = elem;
+ dataend = tmp;
+ }
+ else
+ push_back_(&elem);
+}
+
+template<typename _Tp> inline void Mat::push_back(const Mat_<_Tp>& m)
+{
+ push_back((const Mat&)m);
+}
+
+inline Mat::MSize::MSize(int* _p) : p(_p) {}
+inline Size Mat::MSize::operator()() const
+{
+ CV_DbgAssert(p[-1] <= 2);
+ return Size(p[1], p[0]);
+}
+inline const int& Mat::MSize::operator[](int i) const { return p[i]; }
+inline int& Mat::MSize::operator[](int i) { return p[i]; }
+inline Mat::MSize::operator const int*() const { return p; }
+
+inline bool Mat::MSize::operator == (const MSize& sz) const
+{
+ int d = p[-1], dsz = sz.p[-1];
+ if( d != dsz )
+ return false;
+ if( d == 2 )
+ return p[0] == sz.p[0] && p[1] == sz.p[1];
+
+ for( int i = 0; i < d; i++ )
+ if( p[i] != sz.p[i] )
+ return false;
+ return true;
+}
+
+inline bool Mat::MSize::operator != (const MSize& sz) const
+{
+ return !(*this == sz);
+}
+
+inline Mat::MStep::MStep() { p = buf; p[0] = p[1] = 0; }
+inline Mat::MStep::MStep(size_t s) { p = buf; p[0] = s; p[1] = 0; }
+inline const size_t& Mat::MStep::operator[](int i) const { return p[i]; }
+inline size_t& Mat::MStep::operator[](int i) { return p[i]; }
+inline Mat::MStep::operator size_t() const
+{
+ CV_DbgAssert( p == buf );
+ return buf[0];
+}
+inline Mat::MStep& Mat::MStep::operator = (size_t s)
+{
+ CV_DbgAssert( p == buf );
+ buf[0] = s;
+ return *this;
+}
+
+static inline Mat cvarrToMatND(const CvArr* arr, bool copyData=false, int coiMode=0)
+{
+ return cvarrToMat(arr, copyData, true, coiMode);
+}
+
+///////////////////////////////////////////// SVD //////////////////////////////////////////////////////
+
+inline SVD::SVD() {}
+inline SVD::SVD( InputArray m, int flags ) { operator ()(m, flags); }
+inline void SVD::solveZ( InputArray m, OutputArray _dst )
+{
+ Mat mtx = m.getMat();
+ SVD svd(mtx, (mtx.rows >= mtx.cols ? 0 : SVD::FULL_UV));
+ _dst.create(svd.vt.cols, 1, svd.vt.type());
+ Mat dst = _dst.getMat();
+ svd.vt.row(svd.vt.rows-1).reshape(1,svd.vt.cols).copyTo(dst);
+}
+
+template<typename _Tp, int m, int n, int nm> inline void
+ SVD::compute( const Matx<_Tp, m, n>& a, Matx<_Tp, nm, 1>& w, Matx<_Tp, m, nm>& u, Matx<_Tp, n, nm>& vt )
+{
+ assert( nm == MIN(m, n));
+ Mat _a(a, false), _u(u, false), _w(w, false), _vt(vt, false);
+ SVD::compute(_a, _w, _u, _vt);
+ CV_Assert(_w.data == (uchar*)&w.val[0] && _u.data == (uchar*)&u.val[0] && _vt.data == (uchar*)&vt.val[0]);
+}
+
+template<typename _Tp, int m, int n, int nm> inline void
+SVD::compute( const Matx<_Tp, m, n>& a, Matx<_Tp, nm, 1>& w )
+{
+ assert( nm == MIN(m, n));
+ Mat _a(a, false), _w(w, false);
+ SVD::compute(_a, _w);
+ CV_Assert(_w.data == (uchar*)&w.val[0]);
+}
+
+template<typename _Tp, int m, int n, int nm, int nb> inline void
+SVD::backSubst( const Matx<_Tp, nm, 1>& w, const Matx<_Tp, m, nm>& u,
+ const Matx<_Tp, n, nm>& vt, const Matx<_Tp, m, nb>& rhs,
+ Matx<_Tp, n, nb>& dst )
+{
+ assert( nm == MIN(m, n));
+ Mat _u(u, false), _w(w, false), _vt(vt, false), _rhs(rhs, false), _dst(dst, false);
+ SVD::backSubst(_w, _u, _vt, _rhs, _dst);
+ CV_Assert(_dst.data == (uchar*)&dst.val[0]);
+}
+
+///////////////////////////////// Mat_<_Tp> ////////////////////////////////////
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_()
+ : Mat() { flags = (flags & ~CV_MAT_TYPE_MASK) | DataType<_Tp>::type; }
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(int _rows, int _cols)
+ : Mat(_rows, _cols, DataType<_Tp>::type) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(int _rows, int _cols, const _Tp& value)
+ : Mat(_rows, _cols, DataType<_Tp>::type) { *this = value; }
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(Size _sz)
+ : Mat(_sz.height, _sz.width, DataType<_Tp>::type) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(Size _sz, const _Tp& value)
+ : Mat(_sz.height, _sz.width, DataType<_Tp>::type) { *this = value; }
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(int _dims, const int* _sz)
+ : Mat(_dims, _sz, DataType<_Tp>::type) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(int _dims, const int* _sz, const _Tp& _s)
+ : Mat(_dims, _sz, DataType<_Tp>::type, Scalar(_s)) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(int _dims, const int* _sz, _Tp* _data, const size_t* _steps)
+ : Mat(_dims, _sz, DataType<_Tp>::type, _data, _steps) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Mat_<_Tp>& m, const Range* ranges)
+ : Mat(m, ranges) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Mat& m)
+ : Mat() { flags = (flags & ~CV_MAT_TYPE_MASK) | DataType<_Tp>::type; *this = m; }
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Mat_& m)
+ : Mat(m) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(int _rows, int _cols, _Tp* _data, size_t steps)
+ : Mat(_rows, _cols, DataType<_Tp>::type, _data, steps) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Mat_& m, const Range& _rowRange, const Range& _colRange)
+ : Mat(m, _rowRange, _colRange) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Mat_& m, const Rect& roi)
+ : Mat(m, roi) {}
+
+template<typename _Tp> template<int n> inline
+ Mat_<_Tp>::Mat_(const Vec<typename DataType<_Tp>::channel_type, n>& vec, bool copyData)
+ : Mat(n/DataType<_Tp>::channels, 1, DataType<_Tp>::type, (void*)&vec)
+{
+ CV_Assert(n%DataType<_Tp>::channels == 0);
+ if( copyData )
+ *this = clone();
+}
+
+template<typename _Tp> template<int m, int n> inline
+ Mat_<_Tp>::Mat_(const Matx<typename DataType<_Tp>::channel_type,m,n>& M, bool copyData)
+ : Mat(m, n/DataType<_Tp>::channels, DataType<_Tp>::type, (void*)&M)
+{
+ CV_Assert(n % DataType<_Tp>::channels == 0);
+ if( copyData )
+ *this = clone();
+}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Point_<typename DataType<_Tp>::channel_type>& pt, bool copyData)
+ : Mat(2/DataType<_Tp>::channels, 1, DataType<_Tp>::type, (void*)&pt)
+{
+ CV_Assert(2 % DataType<_Tp>::channels == 0);
+ if( copyData )
+ *this = clone();
+}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const Point3_<typename DataType<_Tp>::channel_type>& pt, bool copyData)
+ : Mat(3/DataType<_Tp>::channels, 1, DataType<_Tp>::type, (void*)&pt)
+{
+ CV_Assert(3 % DataType<_Tp>::channels == 0);
+ if( copyData )
+ *this = clone();
+}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const MatCommaInitializer_<_Tp>& commaInitializer)
+ : Mat(commaInitializer) {}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const vector<_Tp>& vec, bool copyData)
+ : Mat(vec, copyData) {}
+
+template<typename _Tp> inline Mat_<_Tp>& Mat_<_Tp>::operator = (const Mat& m)
+{
+ if( DataType<_Tp>::type == m.type() )
+ {
+ Mat::operator = (m);
+ return *this;
+ }
+ if( DataType<_Tp>::depth == m.depth() )
+ {
+ return (*this = m.reshape(DataType<_Tp>::channels, m.dims, 0));
+ }
+ CV_DbgAssert(DataType<_Tp>::channels == m.channels());
+ m.convertTo(*this, type());
+ return *this;
+}
+
+template<typename _Tp> inline Mat_<_Tp>& Mat_<_Tp>::operator = (const Mat_& m)
+{
+ Mat::operator=(m);
+ return *this;
+}
+
+template<typename _Tp> inline Mat_<_Tp>& Mat_<_Tp>::operator = (const _Tp& s)
+{
+ typedef typename DataType<_Tp>::vec_type VT;
+ Mat::operator=(Scalar((const VT&)s));
+ return *this;
+}
+
+template<typename _Tp> inline void Mat_<_Tp>::create(int _rows, int _cols)
+{
+ Mat::create(_rows, _cols, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline void Mat_<_Tp>::create(Size _sz)
+{
+ Mat::create(_sz, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline void Mat_<_Tp>::create(int _dims, const int* _sz)
+{
+ Mat::create(_dims, _sz, DataType<_Tp>::type);
+}
+
+
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::cross(const Mat_& m) const
+{ return Mat_<_Tp>(Mat::cross(m)); }
+
+template<typename _Tp> template<typename T2> inline Mat_<_Tp>::operator Mat_<T2>() const
+{ return Mat_<T2>(*this); }
+
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::row(int y) const
+{ return Mat_(*this, Range(y, y+1), Range::all()); }
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::col(int x) const
+{ return Mat_(*this, Range::all(), Range(x, x+1)); }
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::diag(int d) const
+{ return Mat_(Mat::diag(d)); }
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::clone() const
+{ return Mat_(Mat::clone()); }
+
+template<typename _Tp> inline size_t Mat_<_Tp>::elemSize() const
+{
+ CV_DbgAssert( Mat::elemSize() == sizeof(_Tp) );
+ return sizeof(_Tp);
+}
+
+template<typename _Tp> inline size_t Mat_<_Tp>::elemSize1() const
+{
+ CV_DbgAssert( Mat::elemSize1() == sizeof(_Tp)/DataType<_Tp>::channels );
+ return sizeof(_Tp)/DataType<_Tp>::channels;
+}
+template<typename _Tp> inline int Mat_<_Tp>::type() const
+{
+ CV_DbgAssert( Mat::type() == DataType<_Tp>::type );
+ return DataType<_Tp>::type;
+}
+template<typename _Tp> inline int Mat_<_Tp>::depth() const
+{
+ CV_DbgAssert( Mat::depth() == DataType<_Tp>::depth );
+ return DataType<_Tp>::depth;
+}
+template<typename _Tp> inline int Mat_<_Tp>::channels() const
+{
+ CV_DbgAssert( Mat::channels() == DataType<_Tp>::channels );
+ return DataType<_Tp>::channels;
+}
+template<typename _Tp> inline size_t Mat_<_Tp>::stepT(int i) const { return step.p[i]/elemSize(); }
+template<typename _Tp> inline size_t Mat_<_Tp>::step1(int i) const { return step.p[i]/elemSize1(); }
+
+template<typename _Tp> inline Mat_<_Tp>& Mat_<_Tp>::adjustROI( int dtop, int dbottom, int dleft, int dright )
+{ return (Mat_<_Tp>&)(Mat::adjustROI(dtop, dbottom, dleft, dright)); }
+
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::operator()( const Range& _rowRange, const Range& _colRange ) const
+{ return Mat_<_Tp>(*this, _rowRange, _colRange); }
+
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::operator()( const Rect& roi ) const
+{ return Mat_<_Tp>(*this, roi); }
+
+template<typename _Tp> inline Mat_<_Tp> Mat_<_Tp>::operator()( const Range* ranges ) const
+{ return Mat_<_Tp>(*this, ranges); }
+
+template<typename _Tp> inline _Tp* Mat_<_Tp>::operator [](int y)
+{ return (_Tp*)ptr(y); }
+template<typename _Tp> inline const _Tp* Mat_<_Tp>::operator [](int y) const
+{ return (const _Tp*)ptr(y); }
+
+template<typename _Tp> inline _Tp& Mat_<_Tp>::operator ()(int i0, int i1)
+{
+ CV_DbgAssert( dims <= 2 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] &&
+ type() == DataType<_Tp>::type );
+ return ((_Tp*)(data + step.p[0]*i0))[i1];
+}
+
+template<typename _Tp> inline const _Tp& Mat_<_Tp>::operator ()(int i0, int i1) const
+{
+ CV_DbgAssert( dims <= 2 && data &&
+ (unsigned)i0 < (unsigned)size.p[0] &&
+ (unsigned)i1 < (unsigned)size.p[1] &&
+ type() == DataType<_Tp>::type );
+ return ((const _Tp*)(data + step.p[0]*i0))[i1];
+}
+
+template<typename _Tp> inline _Tp& Mat_<_Tp>::operator ()(Point pt)
+{
+ CV_DbgAssert( dims <= 2 && data &&
+ (unsigned)pt.y < (unsigned)size.p[0] &&
+ (unsigned)pt.x < (unsigned)size.p[1] &&
+ type() == DataType<_Tp>::type );
+ return ((_Tp*)(data + step.p[0]*pt.y))[pt.x];
+}
+
+template<typename _Tp> inline const _Tp& Mat_<_Tp>::operator ()(Point pt) const
+{
+ CV_DbgAssert( dims <= 2 && data &&
+ (unsigned)pt.y < (unsigned)size.p[0] &&
+ (unsigned)pt.x < (unsigned)size.p[1] &&
+ type() == DataType<_Tp>::type );
+ return ((const _Tp*)(data + step.p[0]*pt.y))[pt.x];
+}
+
+template<typename _Tp> inline _Tp& Mat_<_Tp>::operator ()(const int* idx)
+{
+ return Mat::at<_Tp>(idx);
+}
+
+template<typename _Tp> inline const _Tp& Mat_<_Tp>::operator ()(const int* idx) const
+{
+ return Mat::at<_Tp>(idx);
+}
+
+template<typename _Tp> template<int n> inline _Tp& Mat_<_Tp>::operator ()(const Vec<int, n>& idx)
+{
+ return Mat::at<_Tp>(idx);
+}
+
+template<typename _Tp> template<int n> inline const _Tp& Mat_<_Tp>::operator ()(const Vec<int, n>& idx) const
+{
+ return Mat::at<_Tp>(idx);
+}
+
+template<typename _Tp> inline _Tp& Mat_<_Tp>::operator ()(int i0)
+{
+ return this->at<_Tp>(i0);
+}
+
+template<typename _Tp> inline const _Tp& Mat_<_Tp>::operator ()(int i0) const
+{
+ return this->at<_Tp>(i0);
+}
+
+template<typename _Tp> inline _Tp& Mat_<_Tp>::operator ()(int i0, int i1, int i2)
+{
+ return this->at<_Tp>(i0, i1, i2);
+}
+
+template<typename _Tp> inline const _Tp& Mat_<_Tp>::operator ()(int i0, int i1, int i2) const
+{
+ return this->at<_Tp>(i0, i1, i2);
+}
+
+
+template<typename _Tp> inline Mat_<_Tp>::operator vector<_Tp>() const
+{
+ vector<_Tp> v;
+ copyTo(v);
+ return v;
+}
+
+template<typename _Tp> template<int n> inline Mat_<_Tp>::operator Vec<typename DataType<_Tp>::channel_type, n>() const
+{
+ CV_Assert(n % DataType<_Tp>::channels == 0);
+ return this->Mat::operator Vec<typename DataType<_Tp>::channel_type, n>();
+}
+
+template<typename _Tp> template<int m, int n> inline Mat_<_Tp>::operator Matx<typename DataType<_Tp>::channel_type, m, n>() const
+{
+ CV_Assert(n % DataType<_Tp>::channels == 0);
+
+ Matx<typename DataType<_Tp>::channel_type, m, n> res = this->Mat::operator Matx<typename DataType<_Tp>::channel_type, m, n>();
+ return res;
+}
+
+template<typename T1, typename T2, typename Op> inline void
+process( const Mat_<T1>& m1, Mat_<T2>& m2, Op op )
+{
+ int y, x, rows = m1.rows, cols = m1.cols;
+
+ CV_DbgAssert( m1.size() == m2.size() );
+
+ for( y = 0; y < rows; y++ )
+ {
+ const T1* src = m1[y];
+ T2* dst = m2[y];
+
+ for( x = 0; x < cols; x++ )
+ dst[x] = op(src[x]);
+ }
+}
+
+template<typename T1, typename T2, typename T3, typename Op> inline void
+process( const Mat_<T1>& m1, const Mat_<T2>& m2, Mat_<T3>& m3, Op op )
+{
+ int y, x, rows = m1.rows, cols = m1.cols;
+
+ CV_DbgAssert( m1.size() == m2.size() );
+
+ for( y = 0; y < rows; y++ )
+ {
+ const T1* src1 = m1[y];
+ const T2* src2 = m2[y];
+ T3* dst = m3[y];
+
+ for( x = 0; x < cols; x++ )
+ dst[x] = op( src1[x], src2[x] );
+ }
+}
+
+
+/////////////////////////////// Input/Output Arrays /////////////////////////////////
+
+template<typename _Tp> inline _InputArray::_InputArray(const vector<_Tp>& vec)
+ : flags(FIXED_TYPE + STD_VECTOR + DataType<_Tp>::type), obj((void*)&vec) {}
+
+template<typename _Tp> inline _InputArray::_InputArray(const vector<vector<_Tp> >& vec)
+ : flags(FIXED_TYPE + STD_VECTOR_VECTOR + DataType<_Tp>::type), obj((void*)&vec) {}
+
+template<typename _Tp> inline _InputArray::_InputArray(const vector<Mat_<_Tp> >& vec)
+ : flags(FIXED_TYPE + STD_VECTOR_MAT + DataType<_Tp>::type), obj((void*)&vec) {}
+
+template<typename _Tp, int m, int n> inline _InputArray::_InputArray(const Matx<_Tp, m, n>& mtx)
+ : flags(FIXED_TYPE + FIXED_SIZE + MATX + DataType<_Tp>::type), obj((void*)&mtx), sz(n, m) {}
+
+template<typename _Tp> inline _InputArray::_InputArray(const _Tp* vec, int n)
+ : flags(FIXED_TYPE + FIXED_SIZE + MATX + DataType<_Tp>::type), obj((void*)vec), sz(n, 1) {}
+
+inline _InputArray::_InputArray(const Scalar& s)
+ : flags(FIXED_TYPE + FIXED_SIZE + MATX + CV_64F), obj((void*)&s), sz(1, 4) {}
+
+template<typename _Tp> inline _InputArray::_InputArray(const Mat_<_Tp>& m)
+ : flags(FIXED_TYPE + MAT + DataType<_Tp>::type), obj((void*)&m) {}
+
+template<typename _Tp> inline _OutputArray::_OutputArray(vector<_Tp>& vec)
+ : _InputArray(vec) {}
+template<typename _Tp> inline _OutputArray::_OutputArray(vector<vector<_Tp> >& vec)
+ : _InputArray(vec) {}
+template<typename _Tp> inline _OutputArray::_OutputArray(vector<Mat_<_Tp> >& vec)
+ : _InputArray(vec) {}
+template<typename _Tp> inline _OutputArray::_OutputArray(Mat_<_Tp>& m)
+ : _InputArray(m) {}
+template<typename _Tp, int m, int n> inline _OutputArray::_OutputArray(Matx<_Tp, m, n>& mtx)
+ : _InputArray(mtx) {}
+template<typename _Tp> inline _OutputArray::_OutputArray(_Tp* vec, int n)
+ : _InputArray(vec, n) {}
+
+template<typename _Tp> inline _OutputArray::_OutputArray(const vector<_Tp>& vec)
+ : _InputArray(vec) {flags |= FIXED_SIZE;}
+template<typename _Tp> inline _OutputArray::_OutputArray(const vector<vector<_Tp> >& vec)
+ : _InputArray(vec) {flags |= FIXED_SIZE;}
+template<typename _Tp> inline _OutputArray::_OutputArray(const vector<Mat_<_Tp> >& vec)
+ : _InputArray(vec) {flags |= FIXED_SIZE;}
+
+template<typename _Tp> inline _OutputArray::_OutputArray(const Mat_<_Tp>& m)
+ : _InputArray(m) {flags |= FIXED_SIZE;}
+template<typename _Tp, int m, int n> inline _OutputArray::_OutputArray(const Matx<_Tp, m, n>& mtx)
+ : _InputArray(mtx) {}
+template<typename _Tp> inline _OutputArray::_OutputArray(const _Tp* vec, int n)
+ : _InputArray(vec, n) {}
+
+//////////////////////////////////// Matrix Expressions /////////////////////////////////////////
+
+class CV_EXPORTS MatOp
+{
+public:
+ MatOp() {};
+ virtual ~MatOp() {};
+
+ virtual bool elementWise(const MatExpr& expr) const;
+ virtual void assign(const MatExpr& expr, Mat& m, int type=-1) const = 0;
+ virtual void roi(const MatExpr& expr, const Range& rowRange,
+ const Range& colRange, MatExpr& res) const;
+ virtual void diag(const MatExpr& expr, int d, MatExpr& res) const;
+ virtual void augAssignAdd(const MatExpr& expr, Mat& m) const;
+ virtual void augAssignSubtract(const MatExpr& expr, Mat& m) const;
+ virtual void augAssignMultiply(const MatExpr& expr, Mat& m) const;
+ virtual void augAssignDivide(const MatExpr& expr, Mat& m) const;
+ virtual void augAssignAnd(const MatExpr& expr, Mat& m) const;
+ virtual void augAssignOr(const MatExpr& expr, Mat& m) const;
+ virtual void augAssignXor(const MatExpr& expr, Mat& m) const;
+
+ virtual void add(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res) const;
+ virtual void add(const MatExpr& expr1, const Scalar& s, MatExpr& res) const;
+
+ virtual void subtract(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res) const;
+ virtual void subtract(const Scalar& s, const MatExpr& expr, MatExpr& res) const;
+
+ virtual void multiply(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res, double scale=1) const;
+ virtual void multiply(const MatExpr& expr1, double s, MatExpr& res) const;
+
+ virtual void divide(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res, double scale=1) const;
+ virtual void divide(double s, const MatExpr& expr, MatExpr& res) const;
+
+ virtual void abs(const MatExpr& expr, MatExpr& res) const;
+
+ virtual void transpose(const MatExpr& expr, MatExpr& res) const;
+ virtual void matmul(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res) const;
+ virtual void invert(const MatExpr& expr, int method, MatExpr& res) const;
+
+ virtual Size size(const MatExpr& expr) const;
+ virtual int type(const MatExpr& expr) const;
+};
+
+
+class CV_EXPORTS MatExpr
+{
+public:
+ MatExpr() : op(0), flags(0), a(Mat()), b(Mat()), c(Mat()), alpha(0), beta(0), s(Scalar()) {}
+ MatExpr(const MatOp* _op, int _flags, const Mat& _a=Mat(), const Mat& _b=Mat(),
+ const Mat& _c=Mat(), double _alpha=1, double _beta=1, const Scalar& _s=Scalar())
+ : op(_op), flags(_flags), a(_a), b(_b), c(_c), alpha(_alpha), beta(_beta), s(_s) {}
+ explicit MatExpr(const Mat& m);
+ operator Mat() const
+ {
+ Mat m;
+ op->assign(*this, m);
+ return m;
+ }
+
+ template<typename _Tp> operator Mat_<_Tp>() const
+ {
+ Mat_<_Tp> m;
+ op->assign(*this, m, DataType<_Tp>::type);
+ return m;
+ }
+
+ MatExpr row(int y) const;
+ MatExpr col(int x) const;
+ MatExpr diag(int d=0) const;
+ MatExpr operator()( const Range& rowRange, const Range& colRange ) const;
+ MatExpr operator()( const Rect& roi ) const;
+
+ Mat cross(const Mat& m) const;
+ double dot(const Mat& m) const;
+
+ MatExpr t() const;
+ MatExpr inv(int method = DECOMP_LU) const;
+ MatExpr mul(const MatExpr& e, double scale=1) const;
+ MatExpr mul(const Mat& m, double scale=1) const;
+
+ Size size() const;
+ int type() const;
+
+ const MatOp* op;
+ int flags;
+
+ Mat a, b, c;
+ double alpha, beta;
+ Scalar s;
+};
+
+
+CV_EXPORTS MatExpr operator + (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator + (const Mat& a, const Scalar& s);
+CV_EXPORTS MatExpr operator + (const Scalar& s, const Mat& a);
+CV_EXPORTS MatExpr operator + (const MatExpr& e, const Mat& m);
+CV_EXPORTS MatExpr operator + (const Mat& m, const MatExpr& e);
+CV_EXPORTS MatExpr operator + (const MatExpr& e, const Scalar& s);
+CV_EXPORTS MatExpr operator + (const Scalar& s, const MatExpr& e);
+CV_EXPORTS MatExpr operator + (const MatExpr& e1, const MatExpr& e2);
+
+CV_EXPORTS MatExpr operator - (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator - (const Mat& a, const Scalar& s);
+CV_EXPORTS MatExpr operator - (const Scalar& s, const Mat& a);
+CV_EXPORTS MatExpr operator - (const MatExpr& e, const Mat& m);
+CV_EXPORTS MatExpr operator - (const Mat& m, const MatExpr& e);
+CV_EXPORTS MatExpr operator - (const MatExpr& e, const Scalar& s);
+CV_EXPORTS MatExpr operator - (const Scalar& s, const MatExpr& e);
+CV_EXPORTS MatExpr operator - (const MatExpr& e1, const MatExpr& e2);
+
+CV_EXPORTS MatExpr operator - (const Mat& m);
+CV_EXPORTS MatExpr operator - (const MatExpr& e);
+
+CV_EXPORTS MatExpr operator * (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator * (const Mat& a, double s);
+CV_EXPORTS MatExpr operator * (double s, const Mat& a);
+CV_EXPORTS MatExpr operator * (const MatExpr& e, const Mat& m);
+CV_EXPORTS MatExpr operator * (const Mat& m, const MatExpr& e);
+CV_EXPORTS MatExpr operator * (const MatExpr& e, double s);
+CV_EXPORTS MatExpr operator * (double s, const MatExpr& e);
+CV_EXPORTS MatExpr operator * (const MatExpr& e1, const MatExpr& e2);
+
+CV_EXPORTS MatExpr operator / (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator / (const Mat& a, double s);
+CV_EXPORTS MatExpr operator / (double s, const Mat& a);
+CV_EXPORTS MatExpr operator / (const MatExpr& e, const Mat& m);
+CV_EXPORTS MatExpr operator / (const Mat& m, const MatExpr& e);
+CV_EXPORTS MatExpr operator / (const MatExpr& e, double s);
+CV_EXPORTS MatExpr operator / (double s, const MatExpr& e);
+CV_EXPORTS MatExpr operator / (const MatExpr& e1, const MatExpr& e2);
+
+CV_EXPORTS MatExpr operator < (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator < (const Mat& a, double s);
+CV_EXPORTS MatExpr operator < (double s, const Mat& a);
+
+CV_EXPORTS MatExpr operator <= (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator <= (const Mat& a, double s);
+CV_EXPORTS MatExpr operator <= (double s, const Mat& a);
+
+CV_EXPORTS MatExpr operator == (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator == (const Mat& a, double s);
+CV_EXPORTS MatExpr operator == (double s, const Mat& a);
+
+CV_EXPORTS MatExpr operator != (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator != (const Mat& a, double s);
+CV_EXPORTS MatExpr operator != (double s, const Mat& a);
+
+CV_EXPORTS MatExpr operator >= (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator >= (const Mat& a, double s);
+CV_EXPORTS MatExpr operator >= (double s, const Mat& a);
+
+CV_EXPORTS MatExpr operator > (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator > (const Mat& a, double s);
+CV_EXPORTS MatExpr operator > (double s, const Mat& a);
+
+CV_EXPORTS MatExpr min(const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr min(const Mat& a, double s);
+CV_EXPORTS MatExpr min(double s, const Mat& a);
+
+CV_EXPORTS MatExpr max(const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr max(const Mat& a, double s);
+CV_EXPORTS MatExpr max(double s, const Mat& a);
+
+template<typename _Tp> static inline MatExpr min(const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ return cv::min((const Mat&)a, (const Mat&)b);
+}
+
+template<typename _Tp> static inline MatExpr min(const Mat_<_Tp>& a, double s)
+{
+ return cv::min((const Mat&)a, s);
+}
+
+template<typename _Tp> static inline MatExpr min(double s, const Mat_<_Tp>& a)
+{
+ return cv::min((const Mat&)a, s);
+}
+
+template<typename _Tp> static inline MatExpr max(const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ return cv::max((const Mat&)a, (const Mat&)b);
+}
+
+template<typename _Tp> static inline MatExpr max(const Mat_<_Tp>& a, double s)
+{
+ return cv::max((const Mat&)a, s);
+}
+
+template<typename _Tp> static inline MatExpr max(double s, const Mat_<_Tp>& a)
+{
+ return cv::max((const Mat&)a, s);
+}
+
+template<typename _Tp> static inline void min(const Mat_<_Tp>& a, const Mat_<_Tp>& b, Mat_<_Tp>& c)
+{
+ cv::min((const Mat&)a, (const Mat&)b, (Mat&)c);
+}
+
+template<typename _Tp> static inline void min(const Mat_<_Tp>& a, double s, Mat_<_Tp>& c)
+{
+ cv::min((const Mat&)a, s, (Mat&)c);
+}
+
+template<typename _Tp> static inline void min(double s, const Mat_<_Tp>& a, Mat_<_Tp>& c)
+{
+ cv::min((const Mat&)a, s, (Mat&)c);
+}
+
+template<typename _Tp> static inline void max(const Mat_<_Tp>& a, const Mat_<_Tp>& b, Mat_<_Tp>& c)
+{
+ cv::max((const Mat&)a, (const Mat&)b, (Mat&)c);
+}
+
+template<typename _Tp> static inline void max(const Mat_<_Tp>& a, double s, Mat_<_Tp>& c)
+{
+ cv::max((const Mat&)a, s, (Mat&)c);
+}
+
+template<typename _Tp> static inline void max(double s, const Mat_<_Tp>& a, Mat_<_Tp>& c)
+{
+ cv::max((const Mat&)a, s, (Mat&)c);
+}
+
+
+CV_EXPORTS MatExpr operator & (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator & (const Mat& a, const Scalar& s);
+CV_EXPORTS MatExpr operator & (const Scalar& s, const Mat& a);
+
+CV_EXPORTS MatExpr operator | (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator | (const Mat& a, const Scalar& s);
+CV_EXPORTS MatExpr operator | (const Scalar& s, const Mat& a);
+
+CV_EXPORTS MatExpr operator ^ (const Mat& a, const Mat& b);
+CV_EXPORTS MatExpr operator ^ (const Mat& a, const Scalar& s);
+CV_EXPORTS MatExpr operator ^ (const Scalar& s, const Mat& a);
+
+CV_EXPORTS MatExpr operator ~(const Mat& m);
+
+CV_EXPORTS MatExpr abs(const Mat& m);
+CV_EXPORTS MatExpr abs(const MatExpr& e);
+
+template<typename _Tp> static inline MatExpr abs(const Mat_<_Tp>& m)
+{
+ return cv::abs((const Mat&)m);
+}
+
+////////////////////////////// Augmenting algebraic operations //////////////////////////////////
+
+inline Mat& Mat::operator = (const MatExpr& e)
+{
+ e.op->assign(e, *this);
+ return *this;
+}
+
+template<typename _Tp> inline Mat_<_Tp>::Mat_(const MatExpr& e)
+{
+ e.op->assign(e, *this, DataType<_Tp>::type);
+}
+
+template<typename _Tp> Mat_<_Tp>& Mat_<_Tp>::operator = (const MatExpr& e)
+{
+ e.op->assign(e, *this, DataType<_Tp>::type);
+ return *this;
+}
+
+static inline Mat& operator += (const Mat& a, const Mat& b)
+{
+ add(a, b, (Mat&)a);
+ return (Mat&)a;
+}
+
+static inline Mat& operator += (const Mat& a, const Scalar& s)
+{
+ add(a, s, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator += (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ add(a, b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator += (const Mat_<_Tp>& a, const Scalar& s)
+{
+ add(a, s, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator += (const Mat& a, const MatExpr& b)
+{
+ b.op->augAssignAdd(b, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator += (const Mat_<_Tp>& a, const MatExpr& b)
+{
+ b.op->augAssignAdd(b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator -= (const Mat& a, const Mat& b)
+{
+ subtract(a, b, (Mat&)a);
+ return (Mat&)a;
+}
+
+static inline Mat& operator -= (const Mat& a, const Scalar& s)
+{
+ subtract(a, s, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator -= (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ subtract(a, b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator -= (const Mat_<_Tp>& a, const Scalar& s)
+{
+ subtract(a, s, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator -= (const Mat& a, const MatExpr& b)
+{
+ b.op->augAssignSubtract(b, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator -= (const Mat_<_Tp>& a, const MatExpr& b)
+{
+ b.op->augAssignSubtract(b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator *= (const Mat& a, const Mat& b)
+{
+ gemm(a, b, 1, Mat(), 0, (Mat&)a, 0);
+ return (Mat&)a;
+}
+
+static inline Mat& operator *= (const Mat& a, double s)
+{
+ a.convertTo((Mat&)a, -1, s);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator *= (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ gemm(a, b, 1, Mat(), 0, (Mat&)a, 0);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator *= (const Mat_<_Tp>& a, double s)
+{
+ a.convertTo((Mat&)a, -1, s);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator *= (const Mat& a, const MatExpr& b)
+{
+ b.op->augAssignMultiply(b, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator *= (const Mat_<_Tp>& a, const MatExpr& b)
+{
+ b.op->augAssignMultiply(b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator /= (const Mat& a, const Mat& b)
+{
+ divide(a, b, (Mat&)a);
+ return (Mat&)a;
+}
+
+static inline Mat& operator /= (const Mat& a, double s)
+{
+ a.convertTo((Mat&)a, -1, 1./s);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator /= (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ divide(a, b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator /= (const Mat_<_Tp>& a, double s)
+{
+ a.convertTo((Mat&)a, -1, 1./s);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator /= (const Mat& a, const MatExpr& b)
+{
+ b.op->augAssignDivide(b, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline
+Mat_<_Tp>& operator /= (const Mat_<_Tp>& a, const MatExpr& b)
+{
+ b.op->augAssignDivide(b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+////////////////////////////// Logical operations ///////////////////////////////
+
+static inline Mat& operator &= (const Mat& a, const Mat& b)
+{
+ bitwise_and(a, b, (Mat&)a);
+ return (Mat&)a;
+}
+
+static inline Mat& operator &= (const Mat& a, const Scalar& s)
+{
+ bitwise_and(a, s, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline Mat_<_Tp>&
+operator &= (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ bitwise_and(a, b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline Mat_<_Tp>&
+operator &= (const Mat_<_Tp>& a, const Scalar& s)
+{
+ bitwise_and(a, s, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator |= (const Mat& a, const Mat& b)
+{
+ bitwise_or(a, b, (Mat&)a);
+ return (Mat&)a;
+}
+
+static inline Mat& operator |= (const Mat& a, const Scalar& s)
+{
+ bitwise_or(a, s, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline Mat_<_Tp>&
+operator |= (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ bitwise_or(a, b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline Mat_<_Tp>&
+operator |= (const Mat_<_Tp>& a, const Scalar& s)
+{
+ bitwise_or(a, s, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+static inline Mat& operator ^= (const Mat& a, const Mat& b)
+{
+ bitwise_xor(a, b, (Mat&)a);
+ return (Mat&)a;
+}
+
+static inline Mat& operator ^= (const Mat& a, const Scalar& s)
+{
+ bitwise_xor(a, s, (Mat&)a);
+ return (Mat&)a;
+}
+
+template<typename _Tp> static inline Mat_<_Tp>&
+operator ^= (const Mat_<_Tp>& a, const Mat_<_Tp>& b)
+{
+ bitwise_xor(a, b, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+template<typename _Tp> static inline Mat_<_Tp>&
+operator ^= (const Mat_<_Tp>& a, const Scalar& s)
+{
+ bitwise_xor(a, s, (Mat&)a);
+ return (Mat_<_Tp>&)a;
+}
+
+/////////////////////////////// Miscellaneous operations //////////////////////////////
+
+template<typename _Tp> void split(const Mat& src, vector<Mat_<_Tp> >& mv)
+{ split(src, (vector<Mat>&)mv ); }
+
+//////////////////////////////////////////////////////////////
+
+template<typename _Tp> inline MatExpr Mat_<_Tp>::zeros(int rows, int cols)
+{
+ return Mat::zeros(rows, cols, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline MatExpr Mat_<_Tp>::zeros(Size sz)
+{
+ return Mat::zeros(sz, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline MatExpr Mat_<_Tp>::ones(int rows, int cols)
+{
+ return Mat::ones(rows, cols, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline MatExpr Mat_<_Tp>::ones(Size sz)
+{
+ return Mat::ones(sz, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline MatExpr Mat_<_Tp>::eye(int rows, int cols)
+{
+ return Mat::eye(rows, cols, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline MatExpr Mat_<_Tp>::eye(Size sz)
+{
+ return Mat::eye(sz, DataType<_Tp>::type);
+}
+
+//////////////////////////////// Iterators & Comma initializers //////////////////////////////////
+
+inline MatConstIterator::MatConstIterator()
+ : m(0), elemSize(0), ptr(0), sliceStart(0), sliceEnd(0) {}
+
+inline MatConstIterator::MatConstIterator(const Mat* _m)
+ : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0)
+{
+ if( m && m->isContinuous() )
+ {
+ sliceStart = m->data;
+ sliceEnd = sliceStart + m->total()*elemSize;
+ }
+ seek((const int*)0);
+}
+
+inline MatConstIterator::MatConstIterator(const Mat* _m, int _row, int _col)
+ : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0)
+{
+ CV_Assert(m && m->dims <= 2);
+ if( m->isContinuous() )
+ {
+ sliceStart = m->data;
+ sliceEnd = sliceStart + m->total()*elemSize;
+ }
+ int idx[]={_row, _col};
+ seek(idx);
+}
+
+inline MatConstIterator::MatConstIterator(const Mat* _m, Point _pt)
+ : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0)
+{
+ CV_Assert(m && m->dims <= 2);
+ if( m->isContinuous() )
+ {
+ sliceStart = m->data;
+ sliceEnd = sliceStart + m->total()*elemSize;
+ }
+ int idx[]={_pt.y, _pt.x};
+ seek(idx);
+}
+
+inline MatConstIterator::MatConstIterator(const MatConstIterator& it)
+ : m(it.m), elemSize(it.elemSize), ptr(it.ptr), sliceStart(it.sliceStart), sliceEnd(it.sliceEnd)
+{}
+
+inline MatConstIterator& MatConstIterator::operator = (const MatConstIterator& it )
+{
+ m = it.m; elemSize = it.elemSize; ptr = it.ptr;
+ sliceStart = it.sliceStart; sliceEnd = it.sliceEnd;
+ return *this;
+}
+
+inline uchar* MatConstIterator::operator *() const { return ptr; }
+
+inline MatConstIterator& MatConstIterator::operator += (ptrdiff_t ofs)
+{
+ if( !m || ofs == 0 )
+ return *this;
+ ptrdiff_t ofsb = ofs*elemSize;
+ ptr += ofsb;
+ if( ptr < sliceStart || sliceEnd <= ptr )
+ {
+ ptr -= ofsb;
+ seek(ofs, true);
+ }
+ return *this;
+}
+
+inline MatConstIterator& MatConstIterator::operator -= (ptrdiff_t ofs)
+{ return (*this += -ofs); }
+
+inline MatConstIterator& MatConstIterator::operator --()
+{
+ if( m && (ptr -= elemSize) < sliceStart )
+ {
+ ptr += elemSize;
+ seek(-1, true);
+ }
+ return *this;
+}
+
+inline MatConstIterator MatConstIterator::operator --(int)
+{
+ MatConstIterator b = *this;
+ *this += -1;
+ return b;
+}
+
+inline MatConstIterator& MatConstIterator::operator ++()
+{
+ if( m && (ptr += elemSize) >= sliceEnd )
+ {
+ ptr -= elemSize;
+ seek(1, true);
+ }
+ return *this;
+}
+
+inline MatConstIterator MatConstIterator::operator ++(int)
+{
+ MatConstIterator b = *this;
+ *this += 1;
+ return b;
+}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>::MatConstIterator_() {}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>::MatConstIterator_(const Mat_<_Tp>* _m)
+ : MatConstIterator(_m) {}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>::
+ MatConstIterator_(const Mat_<_Tp>* _m, int _row, int _col)
+ : MatConstIterator(_m, _row, _col) {}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>::
+ MatConstIterator_(const Mat_<_Tp>* _m, Point _pt)
+ : MatConstIterator(_m, _pt) {}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>::
+ MatConstIterator_(const MatConstIterator_& it)
+ : MatConstIterator(it) {}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>&
+ MatConstIterator_<_Tp>::operator = (const MatConstIterator_& it )
+{
+ MatConstIterator::operator = (it);
+ return *this;
+}
+
+template<typename _Tp> inline _Tp MatConstIterator_<_Tp>::operator *() const { return *(_Tp*)(this->ptr); }
+
+template<typename _Tp> inline MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator += (ptrdiff_t ofs)
+{
+ MatConstIterator::operator += (ofs);
+ return *this;
+}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator -= (ptrdiff_t ofs)
+{ return (*this += -ofs); }
+
+template<typename _Tp> inline MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator --()
+{
+ MatConstIterator::operator --();
+ return *this;
+}
+
+template<typename _Tp> inline MatConstIterator_<_Tp> MatConstIterator_<_Tp>::operator --(int)
+{
+ MatConstIterator_ b = *this;
+ MatConstIterator::operator --();
+ return b;
+}
+
+template<typename _Tp> inline MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator ++()
+{
+ MatConstIterator::operator ++();
+ return *this;
+}
+
+template<typename _Tp> inline MatConstIterator_<_Tp> MatConstIterator_<_Tp>::operator ++(int)
+{
+ MatConstIterator_ b = *this;
+ MatConstIterator::operator ++();
+ return b;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp>::MatIterator_() : MatConstIterator_<_Tp>() {}
+
+template<typename _Tp> inline MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m)
+ : MatConstIterator_<_Tp>(_m) {}
+
+template<typename _Tp> inline MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, int _row, int _col)
+ : MatConstIterator_<_Tp>(_m, _row, _col) {}
+
+template<typename _Tp> inline MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, Point _pt)
+ : MatConstIterator_<_Tp>(_m, _pt) {}
+
+template<typename _Tp> inline MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, const int* _idx)
+ : MatConstIterator_<_Tp>(_m, _idx) {}
+
+template<typename _Tp> inline MatIterator_<_Tp>::MatIterator_(const MatIterator_& it)
+ : MatConstIterator_<_Tp>(it) {}
+
+template<typename _Tp> inline MatIterator_<_Tp>& MatIterator_<_Tp>::operator = (const MatIterator_<_Tp>& it )
+{
+ MatConstIterator::operator = (it);
+ return *this;
+}
+
+template<typename _Tp> inline _Tp& MatIterator_<_Tp>::operator *() const { return *(_Tp*)(this->ptr); }
+
+template<typename _Tp> inline MatIterator_<_Tp>& MatIterator_<_Tp>::operator += (ptrdiff_t ofs)
+{
+ MatConstIterator::operator += (ofs);
+ return *this;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp>& MatIterator_<_Tp>::operator -= (ptrdiff_t ofs)
+{
+ MatConstIterator::operator += (-ofs);
+ return *this;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp>& MatIterator_<_Tp>::operator --()
+{
+ MatConstIterator::operator --();
+ return *this;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp> MatIterator_<_Tp>::operator --(int)
+{
+ MatIterator_ b = *this;
+ MatConstIterator::operator --();
+ return b;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp>& MatIterator_<_Tp>::operator ++()
+{
+ MatConstIterator::operator ++();
+ return *this;
+}
+
+template<typename _Tp> inline MatIterator_<_Tp> MatIterator_<_Tp>::operator ++(int)
+{
+ MatIterator_ b = *this;
+ MatConstIterator::operator ++();
+ return b;
+}
+
+template<typename _Tp> inline Point MatConstIterator_<_Tp>::pos() const
+{
+ if( !m )
+ return Point();
+ CV_DbgAssert( m->dims <= 2 );
+ if( m->isContinuous() )
+ {
+ ptrdiff_t ofs = (const _Tp*)ptr - (const _Tp*)m->data;
+ int y = (int)(ofs / m->cols), x = (int)(ofs - (ptrdiff_t)y*m->cols);
+ return Point(x, y);
+ }
+ else
+ {
+ ptrdiff_t ofs = (uchar*)ptr - m->data;
+ int y = (int)(ofs / m->step), x = (int)((ofs - y*m->step)/sizeof(_Tp));
+ return Point(x, y);
+ }
+}
+
+static inline bool
+operator == (const MatConstIterator& a, const MatConstIterator& b)
+{ return a.m == b.m && a.ptr == b.ptr; }
+
+template<typename _Tp> static inline bool
+operator != (const MatConstIterator& a, const MatConstIterator& b)
+{ return !(a == b); }
+
+template<typename _Tp> static inline bool
+operator == (const MatConstIterator_<_Tp>& a, const MatConstIterator_<_Tp>& b)
+{ return a.m == b.m && a.ptr == b.ptr; }
+
+template<typename _Tp> static inline bool
+operator != (const MatConstIterator_<_Tp>& a, const MatConstIterator_<_Tp>& b)
+{ return a.m != b.m || a.ptr != b.ptr; }
+
+template<typename _Tp> static inline bool
+operator == (const MatIterator_<_Tp>& a, const MatIterator_<_Tp>& b)
+{ return a.m == b.m && a.ptr == b.ptr; }
+
+template<typename _Tp> static inline bool
+operator != (const MatIterator_<_Tp>& a, const MatIterator_<_Tp>& b)
+{ return a.m != b.m || a.ptr != b.ptr; }
+
+static inline bool
+operator < (const MatConstIterator& a, const MatConstIterator& b)
+{ return a.ptr < b.ptr; }
+
+static inline bool
+operator > (const MatConstIterator& a, const MatConstIterator& b)
+{ return a.ptr > b.ptr; }
+
+static inline bool
+operator <= (const MatConstIterator& a, const MatConstIterator& b)
+{ return a.ptr <= b.ptr; }
+
+static inline bool
+operator >= (const MatConstIterator& a, const MatConstIterator& b)
+{ return a.ptr >= b.ptr; }
+
+CV_EXPORTS ptrdiff_t operator - (const MatConstIterator& b, const MatConstIterator& a);
+
+static inline MatConstIterator operator + (const MatConstIterator& a, ptrdiff_t ofs)
+{ MatConstIterator b = a; return b += ofs; }
+
+static inline MatConstIterator operator + (ptrdiff_t ofs, const MatConstIterator& a)
+{ MatConstIterator b = a; return b += ofs; }
+
+static inline MatConstIterator operator - (const MatConstIterator& a, ptrdiff_t ofs)
+{ MatConstIterator b = a; return b += -ofs; }
+
+template<typename _Tp> static inline MatConstIterator_<_Tp>
+operator + (const MatConstIterator_<_Tp>& a, ptrdiff_t ofs)
+{ MatConstIterator t = (const MatConstIterator&)a + ofs; return (MatConstIterator_<_Tp>&)t; }
+
+template<typename _Tp> static inline MatConstIterator_<_Tp>
+operator + (ptrdiff_t ofs, const MatConstIterator_<_Tp>& a)
+{ MatConstIterator t = (const MatConstIterator&)a + ofs; return (MatConstIterator_<_Tp>&)t; }
+
+template<typename _Tp> static inline MatConstIterator_<_Tp>
+operator - (const MatConstIterator_<_Tp>& a, ptrdiff_t ofs)
+{ MatConstIterator t = (const MatConstIterator&)a - ofs; return (MatConstIterator_<_Tp>&)t; }
+
+inline uchar* MatConstIterator::operator [](ptrdiff_t i) const
+{ return *(*this + i); }
+
+template<typename _Tp> inline _Tp MatConstIterator_<_Tp>::operator [](ptrdiff_t i) const
+{ return *(_Tp*)MatConstIterator::operator [](i); }
+
+template<typename _Tp> static inline MatIterator_<_Tp>
+operator + (const MatIterator_<_Tp>& a, ptrdiff_t ofs)
+{ MatConstIterator t = (const MatConstIterator&)a + ofs; return (MatIterator_<_Tp>&)t; }
+
+template<typename _Tp> static inline MatIterator_<_Tp>
+operator + (ptrdiff_t ofs, const MatIterator_<_Tp>& a)
+{ MatConstIterator t = (const MatConstIterator&)a + ofs; return (MatIterator_<_Tp>&)t; }
+
+template<typename _Tp> static inline MatIterator_<_Tp>
+operator - (const MatIterator_<_Tp>& a, ptrdiff_t ofs)
+{ MatConstIterator t = (const MatConstIterator&)a - ofs; return (MatIterator_<_Tp>&)t; }
+
+template<typename _Tp> inline _Tp& MatIterator_<_Tp>::operator [](ptrdiff_t i) const
+{ return *(*this + i); }
+
+template<typename _Tp> inline MatConstIterator_<_Tp> Mat_<_Tp>::begin() const
+{ return Mat::begin<_Tp>(); }
+
+template<typename _Tp> inline MatConstIterator_<_Tp> Mat_<_Tp>::end() const
+{ return Mat::end<_Tp>(); }
+
+template<typename _Tp> inline MatIterator_<_Tp> Mat_<_Tp>::begin()
+{ return Mat::begin<_Tp>(); }
+
+template<typename _Tp> inline MatIterator_<_Tp> Mat_<_Tp>::end()
+{ return Mat::end<_Tp>(); }
+
+template<typename _Tp> inline MatCommaInitializer_<_Tp>::MatCommaInitializer_(Mat_<_Tp>* _m) : it(_m) {}
+
+template<typename _Tp> template<typename T2> inline MatCommaInitializer_<_Tp>&
+MatCommaInitializer_<_Tp>::operator , (T2 v)
+{
+ CV_DbgAssert( this->it < ((const Mat_<_Tp>*)this->it.m)->end() );
+ *this->it = _Tp(v); ++this->it;
+ return *this;
+}
+
+template<typename _Tp> inline Mat_<_Tp> MatCommaInitializer_<_Tp>::operator *() const
+{
+ CV_DbgAssert( this->it == ((const Mat_<_Tp>*)this->it.m)->end() );
+ return Mat_<_Tp>(*this->it.m);
+}
+
+template<typename _Tp> inline MatCommaInitializer_<_Tp>::operator Mat_<_Tp>() const
+{
+ CV_DbgAssert( this->it == ((const Mat_<_Tp>*)this->it.m)->end() );
+ return Mat_<_Tp>(*this->it.m);
+}
+
+template<typename _Tp, typename T2> static inline MatCommaInitializer_<_Tp>
+operator << (const Mat_<_Tp>& m, T2 val)
+{
+ MatCommaInitializer_<_Tp> commaInitializer((Mat_<_Tp>*)&m);
+ return (commaInitializer, val);
+}
+
+//////////////////////////////// SparseMat ////////////////////////////////
+
+inline SparseMat::SparseMat()
+: flags(MAGIC_VAL), hdr(0)
+{
+}
+
+inline SparseMat::SparseMat(int _dims, const int* _sizes, int _type)
+: flags(MAGIC_VAL), hdr(0)
+{
+ create(_dims, _sizes, _type);
+}
+
+inline SparseMat::SparseMat(const SparseMat& m)
+: flags(m.flags), hdr(m.hdr)
+{
+ addref();
+}
+
+inline SparseMat::~SparseMat()
+{
+ release();
+}
+
+inline SparseMat& SparseMat::operator = (const SparseMat& m)
+{
+ if( this != &m )
+ {
+ if( m.hdr )
+ CV_XADD(&m.hdr->refcount, 1);
+ release();
+ flags = m.flags;
+ hdr = m.hdr;
+ }
+ return *this;
+}
+
+inline SparseMat& SparseMat::operator = (const Mat& m)
+{ return (*this = SparseMat(m)); }
+
+inline SparseMat SparseMat::clone() const
+{
+ SparseMat temp;
+ this->copyTo(temp);
+ return temp;
+}
+
+
+inline void SparseMat::assignTo( SparseMat& m, int _type ) const
+{
+ if( _type < 0 )
+ m = *this;
+ else
+ convertTo(m, _type);
+}
+
+inline void SparseMat::addref()
+{ if( hdr ) CV_XADD(&hdr->refcount, 1); }
+
+inline void SparseMat::release()
+{
+ if( hdr && CV_XADD(&hdr->refcount, -1) == 1 )
+ delete hdr;
+ hdr = 0;
+}
+
+inline size_t SparseMat::elemSize() const
+{ return CV_ELEM_SIZE(flags); }
+
+inline size_t SparseMat::elemSize1() const
+{ return CV_ELEM_SIZE1(flags); }
+
+inline int SparseMat::type() const
+{ return CV_MAT_TYPE(flags); }
+
+inline int SparseMat::depth() const
+{ return CV_MAT_DEPTH(flags); }
+
+inline int SparseMat::channels() const
+{ return CV_MAT_CN(flags); }
+
+inline const int* SparseMat::size() const
+{
+ return hdr ? hdr->size : 0;
+}
+
+inline int SparseMat::size(int i) const
+{
+ if( hdr )
+ {
+ CV_DbgAssert((unsigned)i < (unsigned)hdr->dims);
+ return hdr->size[i];
+ }
+ return 0;
+}
+
+inline int SparseMat::dims() const
+{
+ return hdr ? hdr->dims : 0;
+}
+
+inline size_t SparseMat::nzcount() const
+{
+ return hdr ? hdr->nodeCount : 0;
+}
+
+inline size_t SparseMat::hash(int i0) const
+{
+ return (size_t)i0;
+}
+
+inline size_t SparseMat::hash(int i0, int i1) const
+{
+ return (size_t)(unsigned)i0*HASH_SCALE + (unsigned)i1;
+}
+
+inline size_t SparseMat::hash(int i0, int i1, int i2) const
+{
+ return ((size_t)(unsigned)i0*HASH_SCALE + (unsigned)i1)*HASH_SCALE + (unsigned)i2;
+}
+
+inline size_t SparseMat::hash(const int* idx) const
+{
+ size_t h = (unsigned)idx[0];
+ if( !hdr )
+ return 0;
+ int i, d = hdr->dims;
+ for( i = 1; i < d; i++ )
+ h = h*HASH_SCALE + (unsigned)idx[i];
+ return h;
+}
+
+template<typename _Tp> inline _Tp& SparseMat::ref(int i0, size_t* hashval)
+{ return *(_Tp*)((SparseMat*)this)->ptr(i0, true, hashval); }
+
+template<typename _Tp> inline _Tp& SparseMat::ref(int i0, int i1, size_t* hashval)
+{ return *(_Tp*)((SparseMat*)this)->ptr(i0, i1, true, hashval); }
+
+template<typename _Tp> inline _Tp& SparseMat::ref(int i0, int i1, int i2, size_t* hashval)
+{ return *(_Tp*)((SparseMat*)this)->ptr(i0, i1, i2, true, hashval); }
+
+template<typename _Tp> inline _Tp& SparseMat::ref(const int* idx, size_t* hashval)
+{ return *(_Tp*)((SparseMat*)this)->ptr(idx, true, hashval); }
+
+template<typename _Tp> inline _Tp SparseMat::value(int i0, size_t* hashval) const
+{
+ const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(i0, false, hashval);
+ return p ? *p : _Tp();
+}
+
+template<typename _Tp> inline _Tp SparseMat::value(int i0, int i1, size_t* hashval) const
+{
+ const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(i0, i1, false, hashval);
+ return p ? *p : _Tp();
+}
+
+template<typename _Tp> inline _Tp SparseMat::value(int i0, int i1, int i2, size_t* hashval) const
+{
+ const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(i0, i1, i2, false, hashval);
+ return p ? *p : _Tp();
+}
+
+template<typename _Tp> inline _Tp SparseMat::value(const int* idx, size_t* hashval) const
+{
+ const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(idx, false, hashval);
+ return p ? *p : _Tp();
+}
+
+template<typename _Tp> inline const _Tp* SparseMat::find(int i0, size_t* hashval) const
+{ return (const _Tp*)((SparseMat*)this)->ptr(i0, false, hashval); }
+
+template<typename _Tp> inline const _Tp* SparseMat::find(int i0, int i1, size_t* hashval) const
+{ return (const _Tp*)((SparseMat*)this)->ptr(i0, i1, false, hashval); }
+
+template<typename _Tp> inline const _Tp* SparseMat::find(int i0, int i1, int i2, size_t* hashval) const
+{ return (const _Tp*)((SparseMat*)this)->ptr(i0, i1, i2, false, hashval); }
+
+template<typename _Tp> inline const _Tp* SparseMat::find(const int* idx, size_t* hashval) const
+{ return (const _Tp*)((SparseMat*)this)->ptr(idx, false, hashval); }
+
+template<typename _Tp> inline _Tp& SparseMat::value(Node* n)
+{ return *(_Tp*)((uchar*)n + hdr->valueOffset); }
+
+template<typename _Tp> inline const _Tp& SparseMat::value(const Node* n) const
+{ return *(const _Tp*)((const uchar*)n + hdr->valueOffset); }
+
+inline SparseMat::Node* SparseMat::node(size_t nidx)
+{ return (Node*)(void*)&hdr->pool[nidx]; }
+
+inline const SparseMat::Node* SparseMat::node(size_t nidx) const
+{ return (const Node*)(void*)&hdr->pool[nidx]; }
+
+inline SparseMatIterator SparseMat::begin()
+{ return SparseMatIterator(this); }
+
+inline SparseMatConstIterator SparseMat::begin() const
+{ return SparseMatConstIterator(this); }
+
+inline SparseMatIterator SparseMat::end()
+{ SparseMatIterator it(this); it.seekEnd(); return it; }
+
+inline SparseMatConstIterator SparseMat::end() const
+{ SparseMatConstIterator it(this); it.seekEnd(); return it; }
+
+template<typename _Tp> inline SparseMatIterator_<_Tp> SparseMat::begin()
+{ return SparseMatIterator_<_Tp>(this); }
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp> SparseMat::begin() const
+{ return SparseMatConstIterator_<_Tp>(this); }
+
+template<typename _Tp> inline SparseMatIterator_<_Tp> SparseMat::end()
+{ SparseMatIterator_<_Tp> it(this); it.seekEnd(); return it; }
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp> SparseMat::end() const
+{ SparseMatConstIterator_<_Tp> it(this); it.seekEnd(); return it; }
+
+
+inline SparseMatConstIterator::SparseMatConstIterator()
+: m(0), hashidx(0), ptr(0)
+{
+}
+
+inline SparseMatConstIterator::SparseMatConstIterator(const SparseMatConstIterator& it)
+: m(it.m), hashidx(it.hashidx), ptr(it.ptr)
+{
+}
+
+static inline bool operator == (const SparseMatConstIterator& it1, const SparseMatConstIterator& it2)
+{ return it1.m == it2.m && it1.ptr == it2.ptr; }
+
+static inline bool operator != (const SparseMatConstIterator& it1, const SparseMatConstIterator& it2)
+{ return !(it1 == it2); }
+
+
+inline SparseMatConstIterator& SparseMatConstIterator::operator = (const SparseMatConstIterator& it)
+{
+ if( this != &it )
+ {
+ m = it.m;
+ hashidx = it.hashidx;
+ ptr = it.ptr;
+ }
+ return *this;
+}
+
+template<typename _Tp> inline const _Tp& SparseMatConstIterator::value() const
+{ return *(_Tp*)ptr; }
+
+inline const SparseMat::Node* SparseMatConstIterator::node() const
+{
+ return ptr && m && m->hdr ?
+ (const SparseMat::Node*)(void*)(ptr - m->hdr->valueOffset) : 0;
+}
+
+inline SparseMatConstIterator SparseMatConstIterator::operator ++(int)
+{
+ SparseMatConstIterator it = *this;
+ ++*this;
+ return it;
+}
+
+
+inline void SparseMatConstIterator::seekEnd()
+{
+ if( m && m->hdr )
+ {
+ hashidx = m->hdr->hashtab.size();
+ ptr = 0;
+ }
+}
+
+inline SparseMatIterator::SparseMatIterator()
+{}
+
+inline SparseMatIterator::SparseMatIterator(SparseMat* _m)
+: SparseMatConstIterator(_m)
+{}
+
+inline SparseMatIterator::SparseMatIterator(const SparseMatIterator& it)
+: SparseMatConstIterator(it)
+{
+}
+
+inline SparseMatIterator& SparseMatIterator::operator = (const SparseMatIterator& it)
+{
+ (SparseMatConstIterator&)*this = it;
+ return *this;
+}
+
+template<typename _Tp> inline _Tp& SparseMatIterator::value() const
+{ return *(_Tp*)ptr; }
+
+inline SparseMat::Node* SparseMatIterator::node() const
+{
+ return (SparseMat::Node*)SparseMatConstIterator::node();
+}
+
+inline SparseMatIterator& SparseMatIterator::operator ++()
+{
+ SparseMatConstIterator::operator ++();
+ return *this;
+}
+
+inline SparseMatIterator SparseMatIterator::operator ++(int)
+{
+ SparseMatIterator it = *this;
+ ++*this;
+ return it;
+}
+
+
+template<typename _Tp> inline SparseMat_<_Tp>::SparseMat_()
+{ flags = MAGIC_VAL | DataType<_Tp>::type; }
+
+template<typename _Tp> inline SparseMat_<_Tp>::SparseMat_(int _dims, const int* _sizes)
+: SparseMat(_dims, _sizes, DataType<_Tp>::type)
+{}
+
+template<typename _Tp> inline SparseMat_<_Tp>::SparseMat_(const SparseMat& m)
+{
+ if( m.type() == DataType<_Tp>::type )
+ *this = (const SparseMat_<_Tp>&)m;
+ else
+ m.convertTo(*this, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline SparseMat_<_Tp>::SparseMat_(const SparseMat_<_Tp>& m)
+{
+ this->flags = m.flags;
+ this->hdr = m.hdr;
+ if( this->hdr )
+ CV_XADD(&this->hdr->refcount, 1);
+}
+
+template<typename _Tp> inline SparseMat_<_Tp>::SparseMat_(const Mat& m)
+{
+ SparseMat sm(m);
+ *this = sm;
+}
+
+template<typename _Tp> inline SparseMat_<_Tp>::SparseMat_(const CvSparseMat* m)
+{
+ SparseMat sm(m);
+ *this = sm;
+}
+
+template<typename _Tp> inline SparseMat_<_Tp>&
+SparseMat_<_Tp>::operator = (const SparseMat_<_Tp>& m)
+{
+ if( this != &m )
+ {
+ if( m.hdr ) CV_XADD(&m.hdr->refcount, 1);
+ release();
+ flags = m.flags;
+ hdr = m.hdr;
+ }
+ return *this;
+}
+
+template<typename _Tp> inline SparseMat_<_Tp>&
+SparseMat_<_Tp>::operator = (const SparseMat& m)
+{
+ if( m.type() == DataType<_Tp>::type )
+ return (*this = (const SparseMat_<_Tp>&)m);
+ m.convertTo(*this, DataType<_Tp>::type);
+ return *this;
+}
+
+template<typename _Tp> inline SparseMat_<_Tp>&
+SparseMat_<_Tp>::operator = (const Mat& m)
+{ return (*this = SparseMat(m)); }
+
+template<typename _Tp> inline SparseMat_<_Tp>
+SparseMat_<_Tp>::clone() const
+{
+ SparseMat_<_Tp> m;
+ this->copyTo(m);
+ return m;
+}
+
+template<typename _Tp> inline void
+SparseMat_<_Tp>::create(int _dims, const int* _sizes)
+{
+ SparseMat::create(_dims, _sizes, DataType<_Tp>::type);
+}
+
+template<typename _Tp> inline
+SparseMat_<_Tp>::operator CvSparseMat*() const
+{
+ return SparseMat::operator CvSparseMat*();
+}
+
+template<typename _Tp> inline int SparseMat_<_Tp>::type() const
+{ return DataType<_Tp>::type; }
+
+template<typename _Tp> inline int SparseMat_<_Tp>::depth() const
+{ return DataType<_Tp>::depth; }
+
+template<typename _Tp> inline int SparseMat_<_Tp>::channels() const
+{ return DataType<_Tp>::channels; }
+
+template<typename _Tp> inline _Tp&
+SparseMat_<_Tp>::ref(int i0, size_t* hashval)
+{ return SparseMat::ref<_Tp>(i0, hashval); }
+
+template<typename _Tp> inline _Tp
+SparseMat_<_Tp>::operator()(int i0, size_t* hashval) const
+{ return SparseMat::value<_Tp>(i0, hashval); }
+
+template<typename _Tp> inline _Tp&
+SparseMat_<_Tp>::ref(int i0, int i1, size_t* hashval)
+{ return SparseMat::ref<_Tp>(i0, i1, hashval); }
+
+template<typename _Tp> inline _Tp
+SparseMat_<_Tp>::operator()(int i0, int i1, size_t* hashval) const
+{ return SparseMat::value<_Tp>(i0, i1, hashval); }
+
+template<typename _Tp> inline _Tp&
+SparseMat_<_Tp>::ref(int i0, int i1, int i2, size_t* hashval)
+{ return SparseMat::ref<_Tp>(i0, i1, i2, hashval); }
+
+template<typename _Tp> inline _Tp
+SparseMat_<_Tp>::operator()(int i0, int i1, int i2, size_t* hashval) const
+{ return SparseMat::value<_Tp>(i0, i1, i2, hashval); }
+
+template<typename _Tp> inline _Tp&
+SparseMat_<_Tp>::ref(const int* idx, size_t* hashval)
+{ return SparseMat::ref<_Tp>(idx, hashval); }
+
+template<typename _Tp> inline _Tp
+SparseMat_<_Tp>::operator()(const int* idx, size_t* hashval) const
+{ return SparseMat::value<_Tp>(idx, hashval); }
+
+template<typename _Tp> inline SparseMatIterator_<_Tp> SparseMat_<_Tp>::begin()
+{ return SparseMatIterator_<_Tp>(this); }
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp> SparseMat_<_Tp>::begin() const
+{ return SparseMatConstIterator_<_Tp>(this); }
+
+template<typename _Tp> inline SparseMatIterator_<_Tp> SparseMat_<_Tp>::end()
+{ SparseMatIterator_<_Tp> it(this); it.seekEnd(); return it; }
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp> SparseMat_<_Tp>::end() const
+{ SparseMatConstIterator_<_Tp> it(this); it.seekEnd(); return it; }
+
+template<typename _Tp> inline
+SparseMatConstIterator_<_Tp>::SparseMatConstIterator_()
+{}
+
+template<typename _Tp> inline
+SparseMatConstIterator_<_Tp>::SparseMatConstIterator_(const SparseMat_<_Tp>* _m)
+: SparseMatConstIterator(_m)
+{}
+
+template<typename _Tp> inline
+SparseMatConstIterator_<_Tp>::SparseMatConstIterator_(const SparseMat* _m)
+: SparseMatConstIterator(_m)
+{
+ CV_Assert( _m->type() == DataType<_Tp>::type );
+}
+
+template<typename _Tp> inline
+SparseMatConstIterator_<_Tp>::SparseMatConstIterator_(const SparseMatConstIterator_<_Tp>& it)
+: SparseMatConstIterator(it)
+{}
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp>&
+SparseMatConstIterator_<_Tp>::operator = (const SparseMatConstIterator_<_Tp>& it)
+{ return reinterpret_cast<SparseMatConstIterator_<_Tp>&>
+ (*reinterpret_cast<SparseMatConstIterator*>(this) =
+ reinterpret_cast<const SparseMatConstIterator&>(it)); }
+
+template<typename _Tp> inline const _Tp&
+SparseMatConstIterator_<_Tp>::operator *() const
+{ return *(const _Tp*)this->ptr; }
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp>&
+SparseMatConstIterator_<_Tp>::operator ++()
+{
+ SparseMatConstIterator::operator ++();
+ return *this;
+}
+
+template<typename _Tp> inline SparseMatConstIterator_<_Tp>
+SparseMatConstIterator_<_Tp>::operator ++(int)
+{
+ SparseMatConstIterator_<_Tp> it = *this;
+ SparseMatConstIterator::operator ++();
+ return it;
+}
+
+template<typename _Tp> inline
+SparseMatIterator_<_Tp>::SparseMatIterator_()
+{}
+
+template<typename _Tp> inline
+SparseMatIterator_<_Tp>::SparseMatIterator_(SparseMat_<_Tp>* _m)
+: SparseMatConstIterator_<_Tp>(_m)
+{}
+
+template<typename _Tp> inline
+SparseMatIterator_<_Tp>::SparseMatIterator_(SparseMat* _m)
+: SparseMatConstIterator_<_Tp>(_m)
+{}
+
+template<typename _Tp> inline
+SparseMatIterator_<_Tp>::SparseMatIterator_(const SparseMatIterator_<_Tp>& it)
+: SparseMatConstIterator_<_Tp>(it)
+{}
+
+template<typename _Tp> inline SparseMatIterator_<_Tp>&
+SparseMatIterator_<_Tp>::operator = (const SparseMatIterator_<_Tp>& it)
+{ return reinterpret_cast<SparseMatIterator_<_Tp>&>
+ (*reinterpret_cast<SparseMatConstIterator*>(this) =
+ reinterpret_cast<const SparseMatConstIterator&>(it)); }
+
+template<typename _Tp> inline _Tp&
+SparseMatIterator_<_Tp>::operator *() const
+{ return *(_Tp*)this->ptr; }
+
+template<typename _Tp> inline SparseMatIterator_<_Tp>&
+SparseMatIterator_<_Tp>::operator ++()
+{
+ SparseMatConstIterator::operator ++();
+ return *this;
+}
+
+template<typename _Tp> inline SparseMatIterator_<_Tp>
+SparseMatIterator_<_Tp>::operator ++(int)
+{
+ SparseMatIterator_<_Tp> it = *this;
+ SparseMatConstIterator::operator ++();
+ return it;
+}
+
+}
+
+#endif
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop.hpp
new file mode 100644
index 00000000..7ecaa8e2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop.hpp
@@ -0,0 +1,284 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OPENGL_INTEROP_HPP__
+#define __OPENCV_OPENGL_INTEROP_HPP__
+
+#ifdef __cplusplus
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/opengl_interop_deprecated.hpp"
+
+namespace cv { namespace ogl {
+
+/////////////////// OpenGL Objects ///////////////////
+
+//! Smart pointer for OpenGL buffer memory with reference counting.
+class CV_EXPORTS Buffer
+{
+public:
+ enum Target
+ {
+ ARRAY_BUFFER = 0x8892, //!< The buffer will be used as a source for vertex data
+ ELEMENT_ARRAY_BUFFER = 0x8893, //!< The buffer will be used for indices (in glDrawElements, for example)
+ PIXEL_PACK_BUFFER = 0x88EB, //!< The buffer will be used for reading from OpenGL textures
+ PIXEL_UNPACK_BUFFER = 0x88EC //!< The buffer will be used for writing to OpenGL textures
+ };
+
+ enum Access
+ {
+ READ_ONLY = 0x88B8,
+ WRITE_ONLY = 0x88B9,
+ READ_WRITE = 0x88BA
+ };
+
+ //! create empty buffer
+ Buffer();
+
+ //! create buffer from existed buffer id
+ Buffer(int arows, int acols, int atype, unsigned int abufId, bool autoRelease = false);
+ Buffer(Size asize, int atype, unsigned int abufId, bool autoRelease = false);
+
+ //! create buffer
+ Buffer(int arows, int acols, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false);
+ Buffer(Size asize, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false);
+
+ //! copy from host/device memory
+ explicit Buffer(InputArray arr, Target target = ARRAY_BUFFER, bool autoRelease = false);
+
+ //! create buffer
+ void create(int arows, int acols, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false);
+ void create(Size asize, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false) { create(asize.height, asize.width, atype, target, autoRelease); }
+
+ //! release memory and delete buffer object
+ void release();
+
+ //! set auto release mode (if true, release will be called in object's destructor)
+ void setAutoRelease(bool flag);
+
+ //! copy from host/device memory
+ void copyFrom(InputArray arr, Target target = ARRAY_BUFFER, bool autoRelease = false);
+
+ //! copy to host/device memory
+ void copyTo(OutputArray arr, Target target = ARRAY_BUFFER, bool autoRelease = false) const;
+
+ //! create copy of current buffer
+ Buffer clone(Target target = ARRAY_BUFFER, bool autoRelease = false) const;
+
+ //! bind buffer for specified target
+ void bind(Target target) const;
+
+ //! unbind any buffers from specified target
+ static void unbind(Target target);
+
+ //! map to host memory
+ Mat mapHost(Access access);
+ void unmapHost();
+
+ //! map to device memory
+ gpu::GpuMat mapDevice();
+ void unmapDevice();
+
+ int rows() const { return rows_; }
+ int cols() const { return cols_; }
+ Size size() const { return Size(cols_, rows_); }
+ bool empty() const { return rows_ == 0 || cols_ == 0; }
+
+ int type() const { return type_; }
+ int depth() const { return CV_MAT_DEPTH(type_); }
+ int channels() const { return CV_MAT_CN(type_); }
+ int elemSize() const { return CV_ELEM_SIZE(type_); }
+ int elemSize1() const { return CV_ELEM_SIZE1(type_); }
+
+ unsigned int bufId() const;
+
+ class Impl;
+
+private:
+ Ptr<Impl> impl_;
+ int rows_;
+ int cols_;
+ int type_;
+};
+
+//! Smart pointer for OpenGL 2D texture memory with reference counting.
+class CV_EXPORTS Texture2D
+{
+public:
+ enum Format
+ {
+ NONE = 0,
+ DEPTH_COMPONENT = 0x1902, //!< Depth
+ RGB = 0x1907, //!< Red, Green, Blue
+ RGBA = 0x1908 //!< Red, Green, Blue, Alpha
+ };
+
+ //! create empty texture
+ Texture2D();
+
+ //! create texture from existed texture id
+ Texture2D(int arows, int acols, Format aformat, unsigned int atexId, bool autoRelease = false);
+ Texture2D(Size asize, Format aformat, unsigned int atexId, bool autoRelease = false);
+
+ //! create texture
+ Texture2D(int arows, int acols, Format aformat, bool autoRelease = false);
+ Texture2D(Size asize, Format aformat, bool autoRelease = false);
+
+ //! copy from host/device memory
+ explicit Texture2D(InputArray arr, bool autoRelease = false);
+
+ //! create texture
+ void create(int arows, int acols, Format aformat, bool autoRelease = false);
+ void create(Size asize, Format aformat, bool autoRelease = false) { create(asize.height, asize.width, aformat, autoRelease); }
+
+ //! release memory and delete texture object
+ void release();
+
+ //! set auto release mode (if true, release will be called in object's destructor)
+ void setAutoRelease(bool flag);
+
+ //! copy from host/device memory
+ void copyFrom(InputArray arr, bool autoRelease = false);
+
+ //! copy to host/device memory
+ void copyTo(OutputArray arr, int ddepth = CV_32F, bool autoRelease = false) const;
+
+ //! bind texture to current active texture unit for GL_TEXTURE_2D target
+ void bind() const;
+
+ int rows() const { return rows_; }
+ int cols() const { return cols_; }
+ Size size() const { return Size(cols_, rows_); }
+ bool empty() const { return rows_ == 0 || cols_ == 0; }
+
+ Format format() const { return format_; }
+
+ unsigned int texId() const;
+
+ class Impl;
+
+private:
+ Ptr<Impl> impl_;
+ int rows_;
+ int cols_;
+ Format format_;
+};
+
+//! OpenGL Arrays
+class CV_EXPORTS Arrays
+{
+public:
+ Arrays();
+
+ void setVertexArray(InputArray vertex);
+ void resetVertexArray();
+
+ void setColorArray(InputArray color);
+ void resetColorArray();
+
+ void setNormalArray(InputArray normal);
+ void resetNormalArray();
+
+ void setTexCoordArray(InputArray texCoord);
+ void resetTexCoordArray();
+
+ void release();
+
+ void setAutoRelease(bool flag);
+
+ void bind() const;
+
+ int size() const { return size_; }
+ bool empty() const { return size_ == 0; }
+
+private:
+ int size_;
+ Buffer vertex_;
+ Buffer color_;
+ Buffer normal_;
+ Buffer texCoord_;
+};
+
+/////////////////// Render Functions ///////////////////
+
+//! render texture rectangle in window
+CV_EXPORTS void render(const Texture2D& tex,
+ Rect_<double> wndRect = Rect_<double>(0.0, 0.0, 1.0, 1.0),
+ Rect_<double> texRect = Rect_<double>(0.0, 0.0, 1.0, 1.0));
+
+//! render mode
+enum {
+ POINTS = 0x0000,
+ LINES = 0x0001,
+ LINE_LOOP = 0x0002,
+ LINE_STRIP = 0x0003,
+ TRIANGLES = 0x0004,
+ TRIANGLE_STRIP = 0x0005,
+ TRIANGLE_FAN = 0x0006,
+ QUADS = 0x0007,
+ QUAD_STRIP = 0x0008,
+ POLYGON = 0x0009
+};
+
+//! render OpenGL arrays
+CV_EXPORTS void render(const Arrays& arr, int mode = POINTS, Scalar color = Scalar::all(255));
+CV_EXPORTS void render(const Arrays& arr, InputArray indices, int mode = POINTS, Scalar color = Scalar::all(255));
+
+}} // namespace cv::gl
+
+namespace cv { namespace gpu {
+
+//! set a CUDA device to use OpenGL interoperability
+CV_EXPORTS void setGlDevice(int device = 0);
+
+}}
+
+namespace cv {
+
+template <> CV_EXPORTS void Ptr<cv::ogl::Buffer::Impl>::delete_obj();
+template <> CV_EXPORTS void Ptr<cv::ogl::Texture2D::Impl>::delete_obj();
+
+}
+
+#endif // __cplusplus
+
+#endif // __OPENCV_OPENGL_INTEROP_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop_deprecated.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop_deprecated.hpp
new file mode 100644
index 00000000..04e3fc0c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/opengl_interop_deprecated.hpp
@@ -0,0 +1,300 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OPENGL_INTEROP_DEPRECATED_HPP__
+#define __OPENCV_OPENGL_INTEROP_DEPRECATED_HPP__
+
+#ifdef __cplusplus
+
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+//! Smart pointer for OpenGL buffer memory with reference counting.
+class CV_EXPORTS GlBuffer
+{
+public:
+ enum Usage
+ {
+ ARRAY_BUFFER = 0x8892, // buffer will use for OpenGL arrays (vertices, colors, normals, etc)
+ TEXTURE_BUFFER = 0x88EC // buffer will ise for OpenGL textures
+ };
+
+ //! create empty buffer
+ explicit GlBuffer(Usage usage);
+
+ //! create buffer
+ GlBuffer(int rows, int cols, int type, Usage usage);
+ GlBuffer(Size size, int type, Usage usage);
+
+ //! copy from host/device memory
+ GlBuffer(InputArray mat, Usage usage);
+
+ void create(int rows, int cols, int type, Usage usage);
+ void create(Size size, int type, Usage usage);
+ void create(int rows, int cols, int type);
+ void create(Size size, int type);
+
+ void release();
+
+ //! copy from host/device memory
+ void copyFrom(InputArray mat);
+
+ void bind() const;
+ void unbind() const;
+
+ //! map to host memory
+ Mat mapHost();
+ void unmapHost();
+
+ //! map to device memory
+ gpu::GpuMat mapDevice();
+ void unmapDevice();
+
+ inline int rows() const { return rows_; }
+ inline int cols() const { return cols_; }
+ inline Size size() const { return Size(cols_, rows_); }
+ inline bool empty() const { return rows_ == 0 || cols_ == 0; }
+
+ inline int type() const { return type_; }
+ inline int depth() const { return CV_MAT_DEPTH(type_); }
+ inline int channels() const { return CV_MAT_CN(type_); }
+ inline int elemSize() const { return CV_ELEM_SIZE(type_); }
+ inline int elemSize1() const { return CV_ELEM_SIZE1(type_); }
+
+ inline Usage usage() const { return usage_; }
+
+ class Impl;
+private:
+ int rows_;
+ int cols_;
+ int type_;
+ Usage usage_;
+
+ Ptr<Impl> impl_;
+};
+
+template <> CV_EXPORTS void Ptr<GlBuffer::Impl>::delete_obj();
+
+//! Smart pointer for OpenGL 2d texture memory with reference counting.
+class CV_EXPORTS GlTexture
+{
+public:
+ //! create empty texture
+ GlTexture();
+
+ //! create texture
+ GlTexture(int rows, int cols, int type);
+ GlTexture(Size size, int type);
+
+ //! copy from host/device memory
+ explicit GlTexture(InputArray mat, bool bgra = true);
+
+ void create(int rows, int cols, int type);
+ void create(Size size, int type);
+ void release();
+
+ //! copy from host/device memory
+ void copyFrom(InputArray mat, bool bgra = true);
+
+ void bind() const;
+ void unbind() const;
+
+ inline int rows() const { return rows_; }
+ inline int cols() const { return cols_; }
+ inline Size size() const { return Size(cols_, rows_); }
+ inline bool empty() const { return rows_ == 0 || cols_ == 0; }
+
+ inline int type() const { return type_; }
+ inline int depth() const { return CV_MAT_DEPTH(type_); }
+ inline int channels() const { return CV_MAT_CN(type_); }
+ inline int elemSize() const { return CV_ELEM_SIZE(type_); }
+ inline int elemSize1() const { return CV_ELEM_SIZE1(type_); }
+
+ class Impl;
+private:
+ int rows_;
+ int cols_;
+ int type_;
+
+ Ptr<Impl> impl_;
+ GlBuffer buf_;
+};
+
+template <> CV_EXPORTS void Ptr<GlTexture::Impl>::delete_obj();
+
+//! OpenGL Arrays
+class CV_EXPORTS GlArrays
+{
+public:
+ inline GlArrays()
+ : vertex_(GlBuffer::ARRAY_BUFFER), color_(GlBuffer::ARRAY_BUFFER), normal_(GlBuffer::ARRAY_BUFFER), texCoord_(GlBuffer::ARRAY_BUFFER)
+ {
+ }
+
+ void setVertexArray(InputArray vertex);
+ inline void resetVertexArray() { vertex_.release(); }
+
+ void setColorArray(InputArray color, bool bgra = true);
+ inline void resetColorArray() { color_.release(); }
+
+ void setNormalArray(InputArray normal);
+ inline void resetNormalArray() { normal_.release(); }
+
+ void setTexCoordArray(InputArray texCoord);
+ inline void resetTexCoordArray() { texCoord_.release(); }
+
+ void bind() const;
+ void unbind() const;
+
+ inline int rows() const { return vertex_.rows(); }
+ inline int cols() const { return vertex_.cols(); }
+ inline Size size() const { return vertex_.size(); }
+ inline bool empty() const { return vertex_.empty(); }
+
+private:
+ GlBuffer vertex_;
+ GlBuffer color_;
+ GlBuffer normal_;
+ GlBuffer texCoord_;
+};
+
+//! OpenGL Font
+class CV_EXPORTS GlFont
+{
+public:
+ enum Weight
+ {
+ WEIGHT_LIGHT = 300,
+ WEIGHT_NORMAL = 400,
+ WEIGHT_SEMIBOLD = 600,
+ WEIGHT_BOLD = 700,
+ WEIGHT_BLACK = 900
+ };
+
+ enum Style
+ {
+ STYLE_NORMAL = 0,
+ STYLE_ITALIC = 1,
+ STYLE_UNDERLINE = 2
+ };
+
+ static Ptr<GlFont> get(const std::string& family, int height = 12, Weight weight = WEIGHT_NORMAL, Style style = STYLE_NORMAL);
+
+ void draw(const char* str, int len) const;
+
+ inline const std::string& family() const { return family_; }
+ inline int height() const { return height_; }
+ inline Weight weight() const { return weight_; }
+ inline Style style() const { return style_; }
+
+private:
+ GlFont(const std::string& family, int height, Weight weight, Style style);
+
+ std::string family_;
+ int height_;
+ Weight weight_;
+ Style style_;
+
+ unsigned int base_;
+
+ GlFont(const GlFont&);
+ GlFont& operator =(const GlFont&);
+};
+
+//! render functions
+
+//! render texture rectangle in window
+CV_EXPORTS void render(const GlTexture& tex,
+ Rect_<double> wndRect = Rect_<double>(0.0, 0.0, 1.0, 1.0),
+ Rect_<double> texRect = Rect_<double>(0.0, 0.0, 1.0, 1.0));
+
+//! render mode
+namespace RenderMode {
+ enum {
+ POINTS = 0x0000,
+ LINES = 0x0001,
+ LINE_LOOP = 0x0002,
+ LINE_STRIP = 0x0003,
+ TRIANGLES = 0x0004,
+ TRIANGLE_STRIP = 0x0005,
+ TRIANGLE_FAN = 0x0006,
+ QUADS = 0x0007,
+ QUAD_STRIP = 0x0008,
+ POLYGON = 0x0009
+ };
+}
+
+//! render OpenGL arrays
+CV_EXPORTS void render(const GlArrays& arr, int mode = RenderMode::POINTS, Scalar color = Scalar::all(255));
+
+CV_EXPORTS void render(const std::string& str, const Ptr<GlFont>& font, Scalar color, Point2d pos);
+
+//! OpenGL camera
+class CV_EXPORTS GlCamera
+{
+public:
+ GlCamera();
+
+ void lookAt(Point3d eye, Point3d center, Point3d up);
+ void setCameraPos(Point3d pos, double yaw, double pitch, double roll);
+
+ void setScale(Point3d scale);
+
+ void setProjectionMatrix(const Mat& projectionMatrix, bool transpose = true);
+ void setPerspectiveProjection(double fov, double aspect, double zNear, double zFar);
+ void setOrthoProjection(double left, double right, double bottom, double top, double zNear, double zFar);
+
+ void setupProjectionMatrix() const;
+ void setupModelViewMatrix() const;
+};
+
+inline void GlBuffer::create(Size _size, int _type, Usage _usage) { create(_size.height, _size.width, _type, _usage); }
+inline void GlBuffer::create(int _rows, int _cols, int _type) { create(_rows, _cols, _type, usage()); }
+inline void GlBuffer::create(Size _size, int _type) { create(_size.height, _size.width, _type, usage()); }
+inline void GlTexture::create(Size _size, int _type) { create(_size.height, _size.width, _type); }
+
+} // namespace cv
+
+#endif // __cplusplus
+
+#endif // __OPENCV_OPENGL_INTEROP_DEPRECATED_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/operations.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/operations.hpp
new file mode 100644
index 00000000..0ae51c69
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/operations.hpp
@@ -0,0 +1,4123 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_OPERATIONS_HPP__
+#define __OPENCV_CORE_OPERATIONS_HPP__
+
+#ifndef SKIP_INCLUDES
+ #include <string.h>
+ #include <limits.h>
+#endif // SKIP_INCLUDES
+
+
+#ifdef __cplusplus
+
+/////// exchange-add operation for atomic operations on reference counters ///////
+#if defined __INTEL_COMPILER && !(defined WIN32 || defined _WIN32) // atomic increment on the linux version of the Intel(tm) compiler
+ #define CV_XADD(addr,delta) _InterlockedExchangeAdd(const_cast<void*>(reinterpret_cast<volatile void*>(addr)), delta)
+#elif defined __GNUC__
+
+ #if defined __clang__ && __clang_major__ >= 3 && !defined __ANDROID__ && !defined __EMSCRIPTEN__ && !defined(__CUDACC__)
+ #ifdef __ATOMIC_SEQ_CST
+ #define CV_XADD(addr, delta) __c11_atomic_fetch_add((_Atomic(int)*)(addr), (delta), __ATOMIC_SEQ_CST)
+ #else
+ #define CV_XADD(addr, delta) __atomic_fetch_add((_Atomic(int)*)(addr), (delta), 5)
+ #endif
+ #elif __GNUC__*10 + __GNUC_MINOR__ >= 42
+
+ #if !(defined WIN32 || defined _WIN32) && (defined __i486__ || defined __i586__ || \
+ defined __i686__ || defined __MMX__ || defined __SSE__ || defined __ppc__) || \
+ (defined __GNUC__ && defined _STLPORT_MAJOR) || \
+ defined __EMSCRIPTEN__
+
+ #define CV_XADD __sync_fetch_and_add
+ #else
+ #include <ext/atomicity.h>
+ #define CV_XADD __gnu_cxx::__exchange_and_add
+ #endif
+
+ #else
+ #include <bits/atomicity.h>
+ #if __GNUC__*10 + __GNUC_MINOR__ >= 34
+ #define CV_XADD __gnu_cxx::__exchange_and_add
+ #else
+ #define CV_XADD __exchange_and_add
+ #endif
+ #endif
+
+#elif defined WIN32 || defined _WIN32 || defined WINCE
+ namespace cv { CV_EXPORTS int _interlockedExchangeAdd(int* addr, int delta); }
+ #define CV_XADD cv::_interlockedExchangeAdd
+
+#else
+ static inline int CV_XADD(int* addr, int delta)
+ { int tmp = *addr; *addr += delta; return tmp; }
+#endif
+
+#include <limits>
+
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4127) //conditional expression is constant
+#endif
+
+namespace cv
+{
+
+using std::cos;
+using std::sin;
+using std::max;
+using std::min;
+using std::exp;
+using std::log;
+using std::pow;
+using std::sqrt;
+
+
+/////////////// saturate_cast (used in image & signal processing) ///////////////////
+
+template<typename _Tp> static inline _Tp saturate_cast(uchar v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(schar v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(ushort v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(short v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(unsigned v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(int v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(float v) { return _Tp(v); }
+template<typename _Tp> static inline _Tp saturate_cast(double v) { return _Tp(v); }
+
+template<> inline uchar saturate_cast<uchar>(schar v)
+{ return (uchar)std::max((int)v, 0); }
+template<> inline uchar saturate_cast<uchar>(ushort v)
+{ return (uchar)std::min((unsigned)v, (unsigned)UCHAR_MAX); }
+template<> inline uchar saturate_cast<uchar>(int v)
+{ return (uchar)((unsigned)v <= UCHAR_MAX ? v : v > 0 ? UCHAR_MAX : 0); }
+template<> inline uchar saturate_cast<uchar>(short v)
+{ return saturate_cast<uchar>((int)v); }
+template<> inline uchar saturate_cast<uchar>(unsigned v)
+{ return (uchar)std::min(v, (unsigned)UCHAR_MAX); }
+template<> inline uchar saturate_cast<uchar>(float v)
+{ int iv = cvRound(v); return saturate_cast<uchar>(iv); }
+template<> inline uchar saturate_cast<uchar>(double v)
+{ int iv = cvRound(v); return saturate_cast<uchar>(iv); }
+
+template<> inline schar saturate_cast<schar>(uchar v)
+{ return (schar)std::min((int)v, SCHAR_MAX); }
+template<> inline schar saturate_cast<schar>(ushort v)
+{ return (schar)std::min((unsigned)v, (unsigned)SCHAR_MAX); }
+template<> inline schar saturate_cast<schar>(int v)
+{
+ return (schar)((unsigned)(v-SCHAR_MIN) <= (unsigned)UCHAR_MAX ?
+ v : v > 0 ? SCHAR_MAX : SCHAR_MIN);
+}
+template<> inline schar saturate_cast<schar>(short v)
+{ return saturate_cast<schar>((int)v); }
+template<> inline schar saturate_cast<schar>(unsigned v)
+{ return (schar)std::min(v, (unsigned)SCHAR_MAX); }
+
+template<> inline schar saturate_cast<schar>(float v)
+{ int iv = cvRound(v); return saturate_cast<schar>(iv); }
+template<> inline schar saturate_cast<schar>(double v)
+{ int iv = cvRound(v); return saturate_cast<schar>(iv); }
+
+template<> inline ushort saturate_cast<ushort>(schar v)
+{ return (ushort)std::max((int)v, 0); }
+template<> inline ushort saturate_cast<ushort>(short v)
+{ return (ushort)std::max((int)v, 0); }
+template<> inline ushort saturate_cast<ushort>(int v)
+{ return (ushort)((unsigned)v <= (unsigned)USHRT_MAX ? v : v > 0 ? USHRT_MAX : 0); }
+template<> inline ushort saturate_cast<ushort>(unsigned v)
+{ return (ushort)std::min(v, (unsigned)USHRT_MAX); }
+template<> inline ushort saturate_cast<ushort>(float v)
+{ int iv = cvRound(v); return saturate_cast<ushort>(iv); }
+template<> inline ushort saturate_cast<ushort>(double v)
+{ int iv = cvRound(v); return saturate_cast<ushort>(iv); }
+
+template<> inline short saturate_cast<short>(ushort v)
+{ return (short)std::min((int)v, SHRT_MAX); }
+template<> inline short saturate_cast<short>(int v)
+{
+ return (short)((unsigned)(v - SHRT_MIN) <= (unsigned)USHRT_MAX ?
+ v : v > 0 ? SHRT_MAX : SHRT_MIN);
+}
+template<> inline short saturate_cast<short>(unsigned v)
+{ return (short)std::min(v, (unsigned)SHRT_MAX); }
+template<> inline short saturate_cast<short>(float v)
+{ int iv = cvRound(v); return saturate_cast<short>(iv); }
+template<> inline short saturate_cast<short>(double v)
+{ int iv = cvRound(v); return saturate_cast<short>(iv); }
+
+template<> inline int saturate_cast<int>(float v) { return cvRound(v); }
+template<> inline int saturate_cast<int>(double v) { return cvRound(v); }
+
+// we intentionally do not clip negative numbers, to make -1 become 0xffffffff etc.
+template<> inline unsigned saturate_cast<unsigned>(float v){ return cvRound(v); }
+template<> inline unsigned saturate_cast<unsigned>(double v) { return cvRound(v); }
+
+inline int fast_abs(uchar v) { return v; }
+inline int fast_abs(schar v) { return std::abs((int)v); }
+inline int fast_abs(ushort v) { return v; }
+inline int fast_abs(short v) { return std::abs((int)v); }
+inline int fast_abs(int v) { return std::abs(v); }
+inline float fast_abs(float v) { return std::abs(v); }
+inline double fast_abs(double v) { return std::abs(v); }
+
+//////////////////////////////// Matx /////////////////////////////////
+
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx()
+{
+ for(int i = 0; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0)
+{
+ val[0] = v0;
+ for(int i = 1; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1)
+{
+ assert(channels >= 2);
+ val[0] = v0; val[1] = v1;
+ for(int i = 2; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2)
+{
+ assert(channels >= 3);
+ val[0] = v0; val[1] = v1; val[2] = v2;
+ for(int i = 3; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3)
+{
+ assert(channels >= 4);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ for(int i = 4; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4)
+{
+ assert(channels >= 5);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; val[4] = v4;
+ for(int i = 5; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5)
+{
+ assert(channels >= 6);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5;
+ for(int i = 6; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6)
+{
+ assert(channels >= 7);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5; val[6] = v6;
+ for(int i = 7; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7)
+{
+ assert(channels >= 8);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7;
+ for(int i = 8; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8)
+{
+ assert(channels >= 9);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7;
+ val[8] = v8;
+ for(int i = 9; i < channels; i++) val[i] = _Tp(0);
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8, _Tp v9)
+{
+ assert(channels >= 10);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7;
+ val[8] = v8; val[9] = v9;
+ for(int i = 10; i < channels; i++) val[i] = _Tp(0);
+}
+
+
+template<typename _Tp, int m, int n>
+inline Matx<_Tp,m,n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8, _Tp v9, _Tp v10, _Tp v11)
+{
+ assert(channels == 12);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7;
+ val[8] = v8; val[9] = v9; val[10] = v10; val[11] = v11;
+}
+
+template<typename _Tp, int m, int n>
+inline Matx<_Tp,m,n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8, _Tp v9, _Tp v10, _Tp v11,
+ _Tp v12, _Tp v13, _Tp v14, _Tp v15)
+{
+ assert(channels == 16);
+ val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3;
+ val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7;
+ val[8] = v8; val[9] = v9; val[10] = v10; val[11] = v11;
+ val[12] = v12; val[13] = v13; val[14] = v14; val[15] = v15;
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n>::Matx(const _Tp* values)
+{
+ for( int i = 0; i < channels; i++ ) val[i] = values[i];
+}
+
+template<typename _Tp, int m, int n> inline Matx<_Tp, m, n> Matx<_Tp, m, n>::all(_Tp alpha)
+{
+ Matx<_Tp, m, n> M;
+ for( int i = 0; i < m*n; i++ ) M.val[i] = alpha;
+ return M;
+}
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n> Matx<_Tp,m,n>::zeros()
+{
+ return all(0);
+}
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n> Matx<_Tp,m,n>::ones()
+{
+ return all(1);
+}
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n> Matx<_Tp,m,n>::eye()
+{
+ Matx<_Tp,m,n> M;
+ for(int i = 0; i < MIN(m,n); i++)
+ M(i,i) = 1;
+ return M;
+}
+
+template<typename _Tp, int m, int n> inline _Tp Matx<_Tp, m, n>::dot(const Matx<_Tp, m, n>& M) const
+{
+ _Tp s = 0;
+ for( int i = 0; i < m*n; i++ ) s += val[i]*M.val[i];
+ return s;
+}
+
+
+template<typename _Tp, int m, int n> inline double Matx<_Tp, m, n>::ddot(const Matx<_Tp, m, n>& M) const
+{
+ double s = 0;
+ for( int i = 0; i < m*n; i++ ) s += (double)val[i]*M.val[i];
+ return s;
+}
+
+
+/** @cond IGNORED */
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n> Matx<_Tp,m,n>::diag(const typename Matx<_Tp,m,n>::diag_type& d)
+{
+ Matx<_Tp,m,n> M;
+ for(int i = 0; i < MIN(m,n); i++)
+ M(i,i) = d(i, 0);
+ return M;
+}
+/** @endcond */
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n> Matx<_Tp,m,n>::randu(_Tp a, _Tp b)
+{
+ Matx<_Tp,m,n> M;
+ Mat matM(M, false);
+ cv::randu(matM, Scalar(a), Scalar(b));
+ return M;
+}
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n> Matx<_Tp,m,n>::randn(_Tp a, _Tp b)
+{
+ Matx<_Tp,m,n> M;
+ Mat matM(M, false);
+ cv::randn(matM, Scalar(a), Scalar(b));
+ return M;
+}
+
+template<typename _Tp, int m, int n> template<typename T2>
+inline Matx<_Tp, m, n>::operator Matx<T2, m, n>() const
+{
+ Matx<T2, m, n> M;
+ for( int i = 0; i < m*n; i++ ) M.val[i] = saturate_cast<T2>(val[i]);
+ return M;
+}
+
+
+template<typename _Tp, int m, int n> template<int m1, int n1> inline
+Matx<_Tp, m1, n1> Matx<_Tp, m, n>::reshape() const
+{
+ CV_DbgAssert(m1*n1 == m*n);
+ return (const Matx<_Tp, m1, n1>&)*this;
+}
+
+
+template<typename _Tp, int m, int n>
+template<int m1, int n1> inline
+Matx<_Tp, m1, n1> Matx<_Tp, m, n>::get_minor(int i, int j) const
+{
+ CV_DbgAssert(0 <= i && i+m1 <= m && 0 <= j && j+n1 <= n);
+ Matx<_Tp, m1, n1> s;
+ for( int di = 0; di < m1; di++ )
+ for( int dj = 0; dj < n1; dj++ )
+ s(di, dj) = (*this)(i+di, j+dj);
+ return s;
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp, 1, n> Matx<_Tp, m, n>::row(int i) const
+{
+ CV_DbgAssert((unsigned)i < (unsigned)m);
+ return Matx<_Tp, 1, n>(&val[i*n]);
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp, m, 1> Matx<_Tp, m, n>::col(int j) const
+{
+ CV_DbgAssert((unsigned)j < (unsigned)n);
+ Matx<_Tp, m, 1> v;
+ for( int i = 0; i < m; i++ )
+ v.val[i] = val[i*n + j];
+ return v;
+}
+
+
+template<typename _Tp, int m, int n> inline
+typename Matx<_Tp, m, n>::diag_type Matx<_Tp, m, n>::diag() const
+{
+ diag_type d;
+ for( int i = 0; i < MIN(m, n); i++ )
+ d.val[i] = val[i*n + i];
+ return d;
+}
+
+
+template<typename _Tp, int m, int n> inline
+const _Tp& Matx<_Tp, m, n>::operator ()(int i, int j) const
+{
+ CV_DbgAssert( (unsigned)i < (unsigned)m && (unsigned)j < (unsigned)n );
+ return this->val[i*n + j];
+}
+
+
+template<typename _Tp, int m, int n> inline
+_Tp& Matx<_Tp, m, n>::operator ()(int i, int j)
+{
+ CV_DbgAssert( (unsigned)i < (unsigned)m && (unsigned)j < (unsigned)n );
+ return val[i*n + j];
+}
+
+
+template<typename _Tp, int m, int n> inline
+const _Tp& Matx<_Tp, m, n>::operator ()(int i) const
+{
+ CV_DbgAssert( (m == 1 || n == 1) && (unsigned)i < (unsigned)(m+n-1) );
+ return val[i];
+}
+
+
+template<typename _Tp, int m, int n> inline
+_Tp& Matx<_Tp, m, n>::operator ()(int i)
+{
+ CV_DbgAssert( (m == 1 || n == 1) && (unsigned)i < (unsigned)(m+n-1) );
+ return val[i];
+}
+
+
+template<typename _Tp1, typename _Tp2, int m, int n> static inline
+Matx<_Tp1, m, n>& operator += (Matx<_Tp1, m, n>& a, const Matx<_Tp2, m, n>& b)
+{
+ for( int i = 0; i < m*n; i++ )
+ a.val[i] = saturate_cast<_Tp1>(a.val[i] + b.val[i]);
+ return a;
+}
+
+
+template<typename _Tp1, typename _Tp2, int m, int n> static inline
+Matx<_Tp1, m, n>& operator -= (Matx<_Tp1, m, n>& a, const Matx<_Tp2, m, n>& b)
+{
+ for( int i = 0; i < m*n; i++ )
+ a.val[i] = saturate_cast<_Tp1>(a.val[i] - b.val[i]);
+ return a;
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_AddOp)
+{
+ for( int i = 0; i < m*n; i++ )
+ val[i] = saturate_cast<_Tp>(a.val[i] + b.val[i]);
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_SubOp)
+{
+ for( int i = 0; i < m*n; i++ )
+ val[i] = saturate_cast<_Tp>(a.val[i] - b.val[i]);
+}
+
+
+template<typename _Tp, int m, int n> template<typename _T2> inline
+Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, _T2 alpha, Matx_ScaleOp)
+{
+ for( int i = 0; i < m*n; i++ )
+ val[i] = saturate_cast<_Tp>(a.val[i] * alpha);
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_MulOp)
+{
+ for( int i = 0; i < m*n; i++ )
+ val[i] = saturate_cast<_Tp>(a.val[i] * b.val[i]);
+}
+
+
+template<typename _Tp, int m, int n> template<int l> inline
+Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b, Matx_MatMulOp)
+{
+ for( int i = 0; i < m; i++ )
+ for( int j = 0; j < n; j++ )
+ {
+ _Tp s = 0;
+ for( int k = 0; k < l; k++ )
+ s += a(i, k) * b(k, j);
+ val[i*n + j] = s;
+ }
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp,m,n>::Matx(const Matx<_Tp, n, m>& a, Matx_TOp)
+{
+ for( int i = 0; i < m; i++ )
+ for( int j = 0; j < n; j++ )
+ val[i*n + j] = a(j, i);
+}
+
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator + (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b)
+{
+ return Matx<_Tp, m, n>(a, b, Matx_AddOp());
+}
+
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator - (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b)
+{
+ return Matx<_Tp, m, n>(a, b, Matx_SubOp());
+}
+
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n>& operator *= (Matx<_Tp, m, n>& a, int alpha)
+{
+ for( int i = 0; i < m*n; i++ )
+ a.val[i] = saturate_cast<_Tp>(a.val[i] * alpha);
+ return a;
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n>& operator *= (Matx<_Tp, m, n>& a, float alpha)
+{
+ for( int i = 0; i < m*n; i++ )
+ a.val[i] = saturate_cast<_Tp>(a.val[i] * alpha);
+ return a;
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n>& operator *= (Matx<_Tp, m, n>& a, double alpha)
+{
+ for( int i = 0; i < m*n; i++ )
+ a.val[i] = saturate_cast<_Tp>(a.val[i] * alpha);
+ return a;
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator * (const Matx<_Tp, m, n>& a, int alpha)
+{
+ return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator * (const Matx<_Tp, m, n>& a, float alpha)
+{
+ return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator * (const Matx<_Tp, m, n>& a, double alpha)
+{
+ return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator * (int alpha, const Matx<_Tp, m, n>& a)
+{
+ return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator * (float alpha, const Matx<_Tp, m, n>& a)
+{
+ return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator * (double alpha, const Matx<_Tp, m, n>& a)
+{
+ return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int m, int n> static inline
+Matx<_Tp, m, n> operator - (const Matx<_Tp, m, n>& a)
+{
+ return Matx<_Tp, m, n>(a, -1, Matx_ScaleOp());
+}
+
+
+template<typename _Tp, int m, int n, int l> static inline
+Matx<_Tp, m, n> operator * (const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b)
+{
+ return Matx<_Tp, m, n>(a, b, Matx_MatMulOp());
+}
+
+
+template<typename _Tp, int m, int n> static inline
+Vec<_Tp, m> operator * (const Matx<_Tp, m, n>& a, const Vec<_Tp, n>& b)
+{
+ Matx<_Tp, m, 1> c(a, b, Matx_MatMulOp());
+ return reinterpret_cast<const Vec<_Tp, m>&>(c);
+}
+
+
+template<typename _Tp> static inline
+Point_<_Tp> operator * (const Matx<_Tp, 2, 2>& a, const Point_<_Tp>& b)
+{
+ Matx<_Tp, 2, 1> tmp = a*Vec<_Tp,2>(b.x, b.y);
+ return Point_<_Tp>(tmp.val[0], tmp.val[1]);
+}
+
+
+template<typename _Tp> static inline
+Point3_<_Tp> operator * (const Matx<_Tp, 3, 3>& a, const Point3_<_Tp>& b)
+{
+ Matx<_Tp, 3, 1> tmp = a*Vec<_Tp,3>(b.x, b.y, b.z);
+ return Point3_<_Tp>(tmp.val[0], tmp.val[1], tmp.val[2]);
+}
+
+
+template<typename _Tp> static inline
+Point3_<_Tp> operator * (const Matx<_Tp, 3, 3>& a, const Point_<_Tp>& b)
+{
+ Matx<_Tp, 3, 1> tmp = a*Vec<_Tp,3>(b.x, b.y, 1);
+ return Point3_<_Tp>(tmp.val[0], tmp.val[1], tmp.val[2]);
+}
+
+
+template<typename _Tp> static inline
+Matx<_Tp, 4, 1> operator * (const Matx<_Tp, 4, 4>& a, const Point3_<_Tp>& b)
+{
+ return a*Matx<_Tp, 4, 1>(b.x, b.y, b.z, 1);
+}
+
+
+template<typename _Tp> static inline
+Scalar operator * (const Matx<_Tp, 4, 4>& a, const Scalar& b)
+{
+ Matx<double, 4, 1> c(Matx<double, 4, 4>(a), b, Matx_MatMulOp());
+ return static_cast<const Scalar&>(c);
+}
+
+
+static inline
+Scalar operator * (const Matx<double, 4, 4>& a, const Scalar& b)
+{
+ Matx<double, 4, 1> c(a, b, Matx_MatMulOp());
+ return static_cast<const Scalar&>(c);
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp, m, n> Matx<_Tp, m, n>::mul(const Matx<_Tp, m, n>& a) const
+{
+ return Matx<_Tp, m, n>(*this, a, Matx_MulOp());
+}
+
+
+CV_EXPORTS int LU(float* A, size_t astep, int m, float* b, size_t bstep, int n);
+CV_EXPORTS int LU(double* A, size_t astep, int m, double* b, size_t bstep, int n);
+CV_EXPORTS bool Cholesky(float* A, size_t astep, int m, float* b, size_t bstep, int n);
+CV_EXPORTS bool Cholesky(double* A, size_t astep, int m, double* b, size_t bstep, int n);
+
+
+template<typename _Tp, int m> struct Matx_DetOp
+{
+ double operator ()(const Matx<_Tp, m, m>& a) const
+ {
+ Matx<_Tp, m, m> temp = a;
+ double p = LU(temp.val, m*sizeof(_Tp), m, 0, 0, 0);
+ if( p == 0 )
+ return p;
+ for( int i = 0; i < m; i++ )
+ p *= temp(i, i);
+ return 1./p;
+ }
+};
+
+
+template<typename _Tp> struct Matx_DetOp<_Tp, 1>
+{
+ double operator ()(const Matx<_Tp, 1, 1>& a) const
+ {
+ return a(0,0);
+ }
+};
+
+
+template<typename _Tp> struct Matx_DetOp<_Tp, 2>
+{
+ double operator ()(const Matx<_Tp, 2, 2>& a) const
+ {
+ return a(0,0)*a(1,1) - a(0,1)*a(1,0);
+ }
+};
+
+
+template<typename _Tp> struct Matx_DetOp<_Tp, 3>
+{
+ double operator ()(const Matx<_Tp, 3, 3>& a) const
+ {
+ return a(0,0)*(a(1,1)*a(2,2) - a(2,1)*a(1,2)) -
+ a(0,1)*(a(1,0)*a(2,2) - a(2,0)*a(1,2)) +
+ a(0,2)*(a(1,0)*a(2,1) - a(2,0)*a(1,1));
+ }
+};
+
+template<typename _Tp, int m> static inline
+double determinant(const Matx<_Tp, m, m>& a)
+{
+ return Matx_DetOp<_Tp, m>()(a);
+}
+
+
+template<typename _Tp, int m, int n> static inline
+double trace(const Matx<_Tp, m, n>& a)
+{
+ _Tp s = 0;
+ for( int i = 0; i < std::min(m, n); i++ )
+ s += a(i,i);
+ return s;
+}
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp, n, m> Matx<_Tp, m, n>::t() const
+{
+ return Matx<_Tp, n, m>(*this, Matx_TOp());
+}
+
+
+template<typename _Tp, int m> struct Matx_FastInvOp
+{
+ bool operator()(const Matx<_Tp, m, m>& a, Matx<_Tp, m, m>& b, int method) const
+ {
+ Matx<_Tp, m, m> temp = a;
+
+ // assume that b is all 0's on input => make it a unity matrix
+ for( int i = 0; i < m; i++ )
+ b(i, i) = (_Tp)1;
+
+ if( method == DECOMP_CHOLESKY )
+ return Cholesky(temp.val, m*sizeof(_Tp), m, b.val, m*sizeof(_Tp), m);
+
+ return LU(temp.val, m*sizeof(_Tp), m, b.val, m*sizeof(_Tp), m) != 0;
+ }
+};
+
+
+template<typename _Tp> struct Matx_FastInvOp<_Tp, 2>
+{
+ bool operator()(const Matx<_Tp, 2, 2>& a, Matx<_Tp, 2, 2>& b, int) const
+ {
+ _Tp d = determinant(a);
+ if( d == 0 )
+ return false;
+ d = 1/d;
+ b(1,1) = a(0,0)*d;
+ b(0,0) = a(1,1)*d;
+ b(0,1) = -a(0,1)*d;
+ b(1,0) = -a(1,0)*d;
+ return true;
+ }
+};
+
+
+template<typename _Tp> struct Matx_FastInvOp<_Tp, 3>
+{
+ bool operator()(const Matx<_Tp, 3, 3>& a, Matx<_Tp, 3, 3>& b, int) const
+ {
+ _Tp d = (_Tp)determinant(a);
+ if( d == 0 )
+ return false;
+ d = 1/d;
+ b(0,0) = (a(1,1) * a(2,2) - a(1,2) * a(2,1)) * d;
+ b(0,1) = (a(0,2) * a(2,1) - a(0,1) * a(2,2)) * d;
+ b(0,2) = (a(0,1) * a(1,2) - a(0,2) * a(1,1)) * d;
+
+ b(1,0) = (a(1,2) * a(2,0) - a(1,0) * a(2,2)) * d;
+ b(1,1) = (a(0,0) * a(2,2) - a(0,2) * a(2,0)) * d;
+ b(1,2) = (a(0,2) * a(1,0) - a(0,0) * a(1,2)) * d;
+
+ b(2,0) = (a(1,0) * a(2,1) - a(1,1) * a(2,0)) * d;
+ b(2,1) = (a(0,1) * a(2,0) - a(0,0) * a(2,1)) * d;
+ b(2,2) = (a(0,0) * a(1,1) - a(0,1) * a(1,0)) * d;
+ return true;
+ }
+};
+
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp, n, m> Matx<_Tp, m, n>::inv(int method) const
+{
+ Matx<_Tp, n, m> b;
+ bool ok;
+ if( method == DECOMP_LU || method == DECOMP_CHOLESKY )
+ ok = Matx_FastInvOp<_Tp, m>()(*this, b, method);
+ else
+ {
+ Mat A(*this, false), B(b, false);
+ ok = (invert(A, B, method) != 0);
+ }
+ return ok ? b : Matx<_Tp, n, m>::zeros();
+}
+
+
+template<typename _Tp, int m, int n> struct Matx_FastSolveOp
+{
+ bool operator()(const Matx<_Tp, m, m>& a, const Matx<_Tp, m, n>& b,
+ Matx<_Tp, m, n>& x, int method) const
+ {
+ Matx<_Tp, m, m> temp = a;
+ x = b;
+ if( method == DECOMP_CHOLESKY )
+ return Cholesky(temp.val, m*sizeof(_Tp), m, x.val, n*sizeof(_Tp), n);
+
+ return LU(temp.val, m*sizeof(_Tp), m, x.val, n*sizeof(_Tp), n) != 0;
+ }
+};
+
+
+template<typename _Tp> struct Matx_FastSolveOp<_Tp, 2, 1>
+{
+ bool operator()(const Matx<_Tp, 2, 2>& a, const Matx<_Tp, 2, 1>& b,
+ Matx<_Tp, 2, 1>& x, int) const
+ {
+ _Tp d = determinant(a);
+ if( d == 0 )
+ return false;
+ d = 1/d;
+ x(0) = (b(0)*a(1,1) - b(1)*a(0,1))*d;
+ x(1) = (b(1)*a(0,0) - b(0)*a(1,0))*d;
+ return true;
+ }
+};
+
+
+template<typename _Tp> struct Matx_FastSolveOp<_Tp, 3, 1>
+{
+ bool operator()(const Matx<_Tp, 3, 3>& a, const Matx<_Tp, 3, 1>& b,
+ Matx<_Tp, 3, 1>& x, int) const
+ {
+ _Tp d = (_Tp)determinant(a);
+ if( d == 0 )
+ return false;
+ d = 1/d;
+ x(0) = d*(b(0)*(a(1,1)*a(2,2) - a(1,2)*a(2,1)) -
+ a(0,1)*(b(1)*a(2,2) - a(1,2)*b(2)) +
+ a(0,2)*(b(1)*a(2,1) - a(1,1)*b(2)));
+
+ x(1) = d*(a(0,0)*(b(1)*a(2,2) - a(1,2)*b(2)) -
+ b(0)*(a(1,0)*a(2,2) - a(1,2)*a(2,0)) +
+ a(0,2)*(a(1,0)*b(2) - b(1)*a(2,0)));
+
+ x(2) = d*(a(0,0)*(a(1,1)*b(2) - b(1)*a(2,1)) -
+ a(0,1)*(a(1,0)*b(2) - b(1)*a(2,0)) +
+ b(0)*(a(1,0)*a(2,1) - a(1,1)*a(2,0)));
+ return true;
+ }
+};
+
+
+template<typename _Tp, int m, int n> template<int l> inline
+Matx<_Tp, n, l> Matx<_Tp, m, n>::solve(const Matx<_Tp, m, l>& rhs, int method) const
+{
+ Matx<_Tp, n, l> x;
+ bool ok;
+ if( method == DECOMP_LU || method == DECOMP_CHOLESKY )
+ ok = Matx_FastSolveOp<_Tp, m, l>()(*this, rhs, x, method);
+ else
+ {
+ Mat A(*this, false), B(rhs, false), X(x, false);
+ ok = cv::solve(A, B, X, method);
+ }
+
+ return ok ? x : Matx<_Tp, n, l>::zeros();
+}
+
+template<typename _Tp, int m, int n> inline
+Vec<_Tp, n> Matx<_Tp, m, n>::solve(const Vec<_Tp, m>& rhs, int method) const
+{
+ Matx<_Tp, n, 1> x = solve(reinterpret_cast<const Matx<_Tp, m, 1>&>(rhs), method);
+ return reinterpret_cast<Vec<_Tp, n>&>(x);
+}
+
+template<typename _Tp, typename _AccTp> static inline
+_AccTp normL2Sqr(const _Tp* a, int n)
+{
+ _AccTp s = 0;
+ int i=0;
+ #if CV_ENABLE_UNROLLED
+ for( ; i <= n - 4; i += 4 )
+ {
+ _AccTp v0 = a[i], v1 = a[i+1], v2 = a[i+2], v3 = a[i+3];
+ s += v0*v0 + v1*v1 + v2*v2 + v3*v3;
+ }
+#endif
+ for( ; i < n; i++ )
+ {
+ _AccTp v = a[i];
+ s += v*v;
+ }
+ return s;
+}
+
+
+template<typename _Tp, typename _AccTp> static inline
+_AccTp normL1(const _Tp* a, int n)
+{
+ _AccTp s = 0;
+ int i = 0;
+#if CV_ENABLE_UNROLLED
+ for(; i <= n - 4; i += 4 )
+ {
+ s += (_AccTp)fast_abs(a[i]) + (_AccTp)fast_abs(a[i+1]) +
+ (_AccTp)fast_abs(a[i+2]) + (_AccTp)fast_abs(a[i+3]);
+ }
+#endif
+ for( ; i < n; i++ )
+ s += fast_abs(a[i]);
+ return s;
+}
+
+
+template<typename _Tp, typename _AccTp> static inline
+_AccTp normInf(const _Tp* a, int n)
+{
+ _AccTp s = 0;
+ for( int i = 0; i < n; i++ )
+ s = std::max(s, (_AccTp)fast_abs(a[i]));
+ return s;
+}
+
+
+template<typename _Tp, typename _AccTp> static inline
+_AccTp normL2Sqr(const _Tp* a, const _Tp* b, int n)
+{
+ _AccTp s = 0;
+ int i= 0;
+#if CV_ENABLE_UNROLLED
+ for(; i <= n - 4; i += 4 )
+ {
+ _AccTp v0 = _AccTp(a[i] - b[i]), v1 = _AccTp(a[i+1] - b[i+1]), v2 = _AccTp(a[i+2] - b[i+2]), v3 = _AccTp(a[i+3] - b[i+3]);
+ s += v0*v0 + v1*v1 + v2*v2 + v3*v3;
+ }
+#endif
+ for( ; i < n; i++ )
+ {
+ _AccTp v = _AccTp(a[i] - b[i]);
+ s += v*v;
+ }
+ return s;
+}
+
+CV_EXPORTS float normL2Sqr_(const float* a, const float* b, int n);
+CV_EXPORTS float normL1_(const float* a, const float* b, int n);
+CV_EXPORTS int normL1_(const uchar* a, const uchar* b, int n);
+CV_EXPORTS int normHamming(const uchar* a, const uchar* b, int n);
+CV_EXPORTS int normHamming(const uchar* a, const uchar* b, int n, int cellSize);
+
+template<> inline float normL2Sqr(const float* a, const float* b, int n)
+{
+ if( n >= 8 )
+ return normL2Sqr_(a, b, n);
+ float s = 0;
+ for( int i = 0; i < n; i++ )
+ {
+ float v = a[i] - b[i];
+ s += v*v;
+ }
+ return s;
+}
+
+
+template<typename _Tp, typename _AccTp> static inline
+_AccTp normL1(const _Tp* a, const _Tp* b, int n)
+{
+ _AccTp s = 0;
+ int i= 0;
+#if CV_ENABLE_UNROLLED
+ for(; i <= n - 4; i += 4 )
+ {
+ _AccTp v0 = _AccTp(a[i] - b[i]), v1 = _AccTp(a[i+1] - b[i+1]), v2 = _AccTp(a[i+2] - b[i+2]), v3 = _AccTp(a[i+3] - b[i+3]);
+ s += std::abs(v0) + std::abs(v1) + std::abs(v2) + std::abs(v3);
+ }
+#endif
+ for( ; i < n; i++ )
+ {
+ _AccTp v = _AccTp(a[i] - b[i]);
+ s += std::abs(v);
+ }
+ return s;
+}
+
+template<> inline float normL1(const float* a, const float* b, int n)
+{
+ if( n >= 8 )
+ return normL1_(a, b, n);
+ float s = 0;
+ for( int i = 0; i < n; i++ )
+ {
+ float v = a[i] - b[i];
+ s += std::abs(v);
+ }
+ return s;
+}
+
+template<> inline int normL1(const uchar* a, const uchar* b, int n)
+{
+ return normL1_(a, b, n);
+}
+
+template<typename _Tp, typename _AccTp> static inline
+_AccTp normInf(const _Tp* a, const _Tp* b, int n)
+{
+ _AccTp s = 0;
+ for( int i = 0; i < n; i++ )
+ {
+ _AccTp v0 = a[i] - b[i];
+ s = std::max(s, std::abs(v0));
+ }
+ return s;
+}
+
+
+template<typename _Tp, int m, int n> static inline
+double norm(const Matx<_Tp, m, n>& M)
+{
+ return std::sqrt(normL2Sqr<_Tp, double>(M.val, m*n));
+}
+
+
+template<typename _Tp, int m, int n> static inline
+double norm(const Matx<_Tp, m, n>& M, int normType)
+{
+ return normType == NORM_INF ? (double)normInf<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n) :
+ normType == NORM_L1 ? (double)normL1<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n) :
+ std::sqrt((double)normL2Sqr<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n));
+}
+
+
+template<typename _Tp, int m, int n> static inline
+bool operator == (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b)
+{
+ for( int i = 0; i < m*n; i++ )
+ if( a.val[i] != b.val[i] ) return false;
+ return true;
+}
+
+template<typename _Tp, int m, int n> static inline
+bool operator != (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b)
+{
+ return !(a == b);
+}
+
+
+template<typename _Tp, typename _T2, int m, int n> static inline
+MatxCommaInitializer<_Tp, m, n> operator << (const Matx<_Tp, m, n>& mtx, _T2 val)
+{
+ MatxCommaInitializer<_Tp, m, n> commaInitializer((Matx<_Tp, m, n>*)&mtx);
+ return (commaInitializer, val);
+}
+
+template<typename _Tp, int m, int n> inline
+MatxCommaInitializer<_Tp, m, n>::MatxCommaInitializer(Matx<_Tp, m, n>* _mtx)
+ : dst(_mtx), idx(0)
+{}
+
+template<typename _Tp, int m, int n> template<typename _T2> inline
+MatxCommaInitializer<_Tp, m, n>& MatxCommaInitializer<_Tp, m, n>::operator , (_T2 value)
+{
+ CV_DbgAssert( idx < m*n );
+ dst->val[idx++] = saturate_cast<_Tp>(value);
+ return *this;
+}
+
+template<typename _Tp, int m, int n> inline
+Matx<_Tp, m, n> MatxCommaInitializer<_Tp, m, n>::operator *() const
+{
+ CV_DbgAssert( idx == n*m );
+ return *dst;
+}
+
+/////////////////////////// short vector (Vec) /////////////////////////////
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec()
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0)
+ : Matx<_Tp, cn, 1>(v0)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1)
+ : Matx<_Tp, cn, 1>(v0, v1)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2)
+ : Matx<_Tp, cn, 1>(v0, v1, v2)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7, v8)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3,
+ _Tp v4, _Tp v5, _Tp v6, _Tp v7,
+ _Tp v8, _Tp v9)
+ : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(const _Tp* values)
+ : Matx<_Tp, cn, 1>(values)
+{}
+
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::Vec(const Vec<_Tp, cn>& m)
+ : Matx<_Tp, cn, 1>(m.val)
+{}
+
+template<typename _Tp, int cn> inline
+Vec<_Tp, cn>::Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_AddOp op)
+: Matx<_Tp, cn, 1>(a, b, op)
+{}
+
+template<typename _Tp, int cn> inline
+Vec<_Tp, cn>::Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_SubOp op)
+: Matx<_Tp, cn, 1>(a, b, op)
+{}
+
+template<typename _Tp, int cn> template<typename _T2> inline
+Vec<_Tp, cn>::Vec(const Matx<_Tp, cn, 1>& a, _T2 alpha, Matx_ScaleOp op)
+: Matx<_Tp, cn, 1>(a, alpha, op)
+{}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn> Vec<_Tp, cn>::all(_Tp alpha)
+{
+ Vec v;
+ for( int i = 0; i < cn; i++ ) v.val[i] = alpha;
+ return v;
+}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn> Vec<_Tp, cn>::mul(const Vec<_Tp, cn>& v) const
+{
+ Vec<_Tp, cn> w;
+ for( int i = 0; i < cn; i++ ) w.val[i] = saturate_cast<_Tp>(this->val[i]*v.val[i]);
+ return w;
+}
+
+template<typename _Tp> Vec<_Tp, 2> conjugate(const Vec<_Tp, 2>& v)
+{
+ return Vec<_Tp, 2>(v[0], -v[1]);
+}
+
+template<typename _Tp> Vec<_Tp, 4> conjugate(const Vec<_Tp, 4>& v)
+{
+ return Vec<_Tp, 4>(v[0], -v[1], -v[2], -v[3]);
+}
+
+template<> inline Vec<float, 2> Vec<float, 2>::conj() const
+{
+ return conjugate(*this);
+}
+
+template<> inline Vec<double, 2> Vec<double, 2>::conj() const
+{
+ return conjugate(*this);
+}
+
+template<> inline Vec<float, 4> Vec<float, 4>::conj() const
+{
+ return conjugate(*this);
+}
+
+template<> inline Vec<double, 4> Vec<double, 4>::conj() const
+{
+ return conjugate(*this);
+}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn> Vec<_Tp, cn>::cross(const Vec<_Tp, cn>&) const
+{
+ CV_Error(CV_StsError, "for arbitrary-size vector there is no cross-product defined");
+ return Vec<_Tp, cn>();
+}
+
+template<typename _Tp, int cn> template<typename T2>
+inline Vec<_Tp, cn>::operator Vec<T2, cn>() const
+{
+ Vec<T2, cn> v;
+ for( int i = 0; i < cn; i++ ) v.val[i] = saturate_cast<T2>(this->val[i]);
+ return v;
+}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn>::operator CvScalar() const
+{
+ CvScalar s = {{0,0,0,0}};
+ int i;
+ for( i = 0; i < std::min(cn, 4); i++ ) s.val[i] = this->val[i];
+ for( ; i < 4; i++ ) s.val[i] = 0;
+ return s;
+}
+
+template<typename _Tp, int cn> inline const _Tp& Vec<_Tp, cn>::operator [](int i) const
+{
+ CV_DbgAssert( (unsigned)i < (unsigned)cn );
+ return this->val[i];
+}
+
+template<typename _Tp, int cn> inline _Tp& Vec<_Tp, cn>::operator [](int i)
+{
+ CV_DbgAssert( (unsigned)i < (unsigned)cn );
+ return this->val[i];
+}
+
+template<typename _Tp, int cn> inline const _Tp& Vec<_Tp, cn>::operator ()(int i) const
+{
+ CV_DbgAssert( (unsigned)i < (unsigned)cn );
+ return this->val[i];
+}
+
+template<typename _Tp, int cn> inline _Tp& Vec<_Tp, cn>::operator ()(int i)
+{
+ CV_DbgAssert( (unsigned)i < (unsigned)cn );
+ return this->val[i];
+}
+
+template<typename _Tp1, typename _Tp2, int cn> static inline Vec<_Tp1, cn>&
+operator += (Vec<_Tp1, cn>& a, const Vec<_Tp2, cn>& b)
+{
+ for( int i = 0; i < cn; i++ )
+ a.val[i] = saturate_cast<_Tp1>(a.val[i] + b.val[i]);
+ return a;
+}
+
+template<typename _Tp1, typename _Tp2, int cn> static inline Vec<_Tp1, cn>&
+operator -= (Vec<_Tp1, cn>& a, const Vec<_Tp2, cn>& b)
+{
+ for( int i = 0; i < cn; i++ )
+ a.val[i] = saturate_cast<_Tp1>(a.val[i] - b.val[i]);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator + (const Vec<_Tp, cn>& a, const Vec<_Tp, cn>& b)
+{
+ return Vec<_Tp, cn>(a, b, Matx_AddOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator - (const Vec<_Tp, cn>& a, const Vec<_Tp, cn>& b)
+{
+ return Vec<_Tp, cn>(a, b, Matx_SubOp());
+}
+
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, int alpha)
+{
+ for( int i = 0; i < cn; i++ )
+ a[i] = saturate_cast<_Tp>(a[i]*alpha);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, float alpha)
+{
+ for( int i = 0; i < cn; i++ )
+ a[i] = saturate_cast<_Tp>(a[i]*alpha);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, double alpha)
+{
+ for( int i = 0; i < cn; i++ )
+ a[i] = saturate_cast<_Tp>(a[i]*alpha);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator /= (Vec<_Tp, cn>& a, int alpha)
+{
+ double ialpha = 1./alpha;
+ for( int i = 0; i < cn; i++ )
+ a[i] = saturate_cast<_Tp>(a[i]*ialpha);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator /= (Vec<_Tp, cn>& a, float alpha)
+{
+ float ialpha = 1.f/alpha;
+ for( int i = 0; i < cn; i++ )
+ a[i] = saturate_cast<_Tp>(a[i]*ialpha);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator /= (Vec<_Tp, cn>& a, double alpha)
+{
+ double ialpha = 1./alpha;
+ for( int i = 0; i < cn; i++ )
+ a[i] = saturate_cast<_Tp>(a[i]*ialpha);
+ return a;
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator * (const Vec<_Tp, cn>& a, int alpha)
+{
+ return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator * (int alpha, const Vec<_Tp, cn>& a)
+{
+ return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator * (const Vec<_Tp, cn>& a, float alpha)
+{
+ return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator * (float alpha, const Vec<_Tp, cn>& a)
+{
+ return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator * (const Vec<_Tp, cn>& a, double alpha)
+{
+ return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator * (double alpha, const Vec<_Tp, cn>& a)
+{
+ return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator / (const Vec<_Tp, cn>& a, int alpha)
+{
+ return Vec<_Tp, cn>(a, 1./alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator / (const Vec<_Tp, cn>& a, float alpha)
+{
+ return Vec<_Tp, cn>(a, 1.f/alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator / (const Vec<_Tp, cn>& a, double alpha)
+{
+ return Vec<_Tp, cn>(a, 1./alpha, Matx_ScaleOp());
+}
+
+template<typename _Tp, int cn> static inline Vec<_Tp, cn>
+operator - (const Vec<_Tp, cn>& a)
+{
+ Vec<_Tp,cn> t;
+ for( int i = 0; i < cn; i++ ) t.val[i] = saturate_cast<_Tp>(-a.val[i]);
+ return t;
+}
+
+template<typename _Tp> inline Vec<_Tp, 4> operator * (const Vec<_Tp, 4>& v1, const Vec<_Tp, 4>& v2)
+{
+ return Vec<_Tp, 4>(saturate_cast<_Tp>(v1[0]*v2[0] - v1[1]*v2[1] - v1[2]*v2[2] - v1[3]*v2[3]),
+ saturate_cast<_Tp>(v1[0]*v2[1] + v1[1]*v2[0] + v1[2]*v2[3] - v1[3]*v2[2]),
+ saturate_cast<_Tp>(v1[0]*v2[2] - v1[1]*v2[3] + v1[2]*v2[0] + v1[3]*v2[1]),
+ saturate_cast<_Tp>(v1[0]*v2[3] + v1[1]*v2[2] - v1[2]*v2[1] + v1[3]*v2[0]));
+}
+
+template<typename _Tp> inline Vec<_Tp, 4>& operator *= (Vec<_Tp, 4>& v1, const Vec<_Tp, 4>& v2)
+{
+ v1 = v1 * v2;
+ return v1;
+}
+
+template<> inline Vec<float, 3> Vec<float, 3>::cross(const Vec<float, 3>& v) const
+{
+ return Vec<float,3>(val[1]*v.val[2] - val[2]*v.val[1],
+ val[2]*v.val[0] - val[0]*v.val[2],
+ val[0]*v.val[1] - val[1]*v.val[0]);
+}
+
+template<> inline Vec<double, 3> Vec<double, 3>::cross(const Vec<double, 3>& v) const
+{
+ return Vec<double,3>(val[1]*v.val[2] - val[2]*v.val[1],
+ val[2]*v.val[0] - val[0]*v.val[2],
+ val[0]*v.val[1] - val[1]*v.val[0]);
+}
+
+template<typename _Tp, int cn> inline Vec<_Tp, cn> normalize(const Vec<_Tp, cn>& v)
+{
+ double nv = norm(v);
+ return v * (nv ? 1./nv : 0.);
+}
+
+template<typename _Tp, typename _T2, int cn> static inline
+VecCommaInitializer<_Tp, cn> operator << (const Vec<_Tp, cn>& vec, _T2 val)
+{
+ VecCommaInitializer<_Tp, cn> commaInitializer((Vec<_Tp, cn>*)&vec);
+ return (commaInitializer, val);
+}
+
+template<typename _Tp, int cn> inline
+VecCommaInitializer<_Tp, cn>::VecCommaInitializer(Vec<_Tp, cn>* _vec)
+ : MatxCommaInitializer<_Tp, cn, 1>(_vec)
+{}
+
+template<typename _Tp, int cn> template<typename _T2> inline
+VecCommaInitializer<_Tp, cn>& VecCommaInitializer<_Tp, cn>::operator , (_T2 value)
+{
+ CV_DbgAssert( this->idx < cn );
+ this->dst->val[this->idx++] = saturate_cast<_Tp>(value);
+ return *this;
+}
+
+template<typename _Tp, int cn> inline
+Vec<_Tp, cn> VecCommaInitializer<_Tp, cn>::operator *() const
+{
+ CV_DbgAssert( this->idx == cn );
+ return *this->dst;
+}
+
+//////////////////////////////// Complex //////////////////////////////
+
+template<typename _Tp> inline Complex<_Tp>::Complex() : re(0), im(0) {}
+template<typename _Tp> inline Complex<_Tp>::Complex( _Tp _re, _Tp _im ) : re(_re), im(_im) {}
+template<typename _Tp> template<typename T2> inline Complex<_Tp>::operator Complex<T2>() const
+{ return Complex<T2>(saturate_cast<T2>(re), saturate_cast<T2>(im)); }
+template<typename _Tp> inline Complex<_Tp> Complex<_Tp>::conj() const
+{ return Complex<_Tp>(re, -im); }
+
+template<typename _Tp> static inline
+bool operator == (const Complex<_Tp>& a, const Complex<_Tp>& b)
+{ return a.re == b.re && a.im == b.im; }
+
+template<typename _Tp> static inline
+bool operator != (const Complex<_Tp>& a, const Complex<_Tp>& b)
+{ return a.re != b.re || a.im != b.im; }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator + (const Complex<_Tp>& a, const Complex<_Tp>& b)
+{ return Complex<_Tp>( a.re + b.re, a.im + b.im ); }
+
+template<typename _Tp> static inline
+Complex<_Tp>& operator += (Complex<_Tp>& a, const Complex<_Tp>& b)
+{ a.re += b.re; a.im += b.im; return a; }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator - (const Complex<_Tp>& a, const Complex<_Tp>& b)
+{ return Complex<_Tp>( a.re - b.re, a.im - b.im ); }
+
+template<typename _Tp> static inline
+Complex<_Tp>& operator -= (Complex<_Tp>& a, const Complex<_Tp>& b)
+{ a.re -= b.re; a.im -= b.im; return a; }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator - (const Complex<_Tp>& a)
+{ return Complex<_Tp>(-a.re, -a.im); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator * (const Complex<_Tp>& a, const Complex<_Tp>& b)
+{ return Complex<_Tp>( a.re*b.re - a.im*b.im, a.re*b.im + a.im*b.re ); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator * (const Complex<_Tp>& a, _Tp b)
+{ return Complex<_Tp>( a.re*b, a.im*b ); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator * (_Tp b, const Complex<_Tp>& a)
+{ return Complex<_Tp>( a.re*b, a.im*b ); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator + (const Complex<_Tp>& a, _Tp b)
+{ return Complex<_Tp>( a.re + b, a.im ); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator - (const Complex<_Tp>& a, _Tp b)
+{ return Complex<_Tp>( a.re - b, a.im ); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator + (_Tp b, const Complex<_Tp>& a)
+{ return Complex<_Tp>( a.re + b, a.im ); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator - (_Tp b, const Complex<_Tp>& a)
+{ return Complex<_Tp>( b - a.re, -a.im ); }
+
+template<typename _Tp> static inline
+Complex<_Tp>& operator += (Complex<_Tp>& a, _Tp b)
+{ a.re += b; return a; }
+
+template<typename _Tp> static inline
+Complex<_Tp>& operator -= (Complex<_Tp>& a, _Tp b)
+{ a.re -= b; return a; }
+
+template<typename _Tp> static inline
+Complex<_Tp>& operator *= (Complex<_Tp>& a, _Tp b)
+{ a.re *= b; a.im *= b; return a; }
+
+template<typename _Tp> static inline
+double abs(const Complex<_Tp>& a)
+{ return std::sqrt( (double)a.re*a.re + (double)a.im*a.im); }
+
+template<typename _Tp> static inline
+Complex<_Tp> operator / (const Complex<_Tp>& a, const Complex<_Tp>& b)
+{
+ double t = 1./((double)b.re*b.re + (double)b.im*b.im);
+ return Complex<_Tp>( (_Tp)((a.re*b.re + a.im*b.im)*t),
+ (_Tp)((-a.re*b.im + a.im*b.re)*t) );
+}
+
+template<typename _Tp> static inline
+Complex<_Tp>& operator /= (Complex<_Tp>& a, const Complex<_Tp>& b)
+{
+ return (a = a / b);
+}
+
+template<typename _Tp> static inline
+Complex<_Tp> operator / (const Complex<_Tp>& a, _Tp b)
+{
+ _Tp t = (_Tp)1/b;
+ return Complex<_Tp>( a.re*t, a.im*t );
+}
+
+template<typename _Tp> static inline
+Complex<_Tp> operator / (_Tp b, const Complex<_Tp>& a)
+{
+ return Complex<_Tp>(b)/a;
+}
+
+template<typename _Tp> static inline
+Complex<_Tp> operator /= (const Complex<_Tp>& a, _Tp b)
+{
+ _Tp t = (_Tp)1/b;
+ a.re *= t; a.im *= t; return a;
+}
+
+//////////////////////////////// 2D Point ////////////////////////////////
+
+template<typename _Tp> inline Point_<_Tp>::Point_() : x(0), y(0) {}
+template<typename _Tp> inline Point_<_Tp>::Point_(_Tp _x, _Tp _y) : x(_x), y(_y) {}
+template<typename _Tp> inline Point_<_Tp>::Point_(const Point_& pt) : x(pt.x), y(pt.y) {}
+template<typename _Tp> inline Point_<_Tp>::Point_(const CvPoint& pt) : x((_Tp)pt.x), y((_Tp)pt.y) {}
+template<typename _Tp> inline Point_<_Tp>::Point_(const CvPoint2D32f& pt)
+ : x(saturate_cast<_Tp>(pt.x)), y(saturate_cast<_Tp>(pt.y)) {}
+template<typename _Tp> inline Point_<_Tp>::Point_(const Size_<_Tp>& sz) : x(sz.width), y(sz.height) {}
+template<typename _Tp> inline Point_<_Tp>::Point_(const Vec<_Tp,2>& v) : x(v[0]), y(v[1]) {}
+template<typename _Tp> inline Point_<_Tp>& Point_<_Tp>::operator = (const Point_& pt)
+{ x = pt.x; y = pt.y; return *this; }
+
+template<typename _Tp> template<typename _Tp2> inline Point_<_Tp>::operator Point_<_Tp2>() const
+{ return Point_<_Tp2>(saturate_cast<_Tp2>(x), saturate_cast<_Tp2>(y)); }
+template<typename _Tp> inline Point_<_Tp>::operator CvPoint() const
+{ return cvPoint(saturate_cast<int>(x), saturate_cast<int>(y)); }
+template<typename _Tp> inline Point_<_Tp>::operator CvPoint2D32f() const
+{ return cvPoint2D32f((float)x, (float)y); }
+template<typename _Tp> inline Point_<_Tp>::operator Vec<_Tp, 2>() const
+{ return Vec<_Tp, 2>(x, y); }
+
+template<typename _Tp> inline _Tp Point_<_Tp>::dot(const Point_& pt) const
+{ return saturate_cast<_Tp>(x*pt.x + y*pt.y); }
+template<typename _Tp> inline double Point_<_Tp>::ddot(const Point_& pt) const
+{ return (double)x*pt.x + (double)y*pt.y; }
+
+template<typename _Tp> inline double Point_<_Tp>::cross(const Point_& pt) const
+{ return (double)x*pt.y - (double)y*pt.x; }
+
+template<typename _Tp> static inline Point_<_Tp>&
+operator += (Point_<_Tp>& a, const Point_<_Tp>& b)
+{
+ a.x = saturate_cast<_Tp>(a.x + b.x);
+ a.y = saturate_cast<_Tp>(a.y + b.y);
+ return a;
+}
+
+template<typename _Tp> static inline Point_<_Tp>&
+operator -= (Point_<_Tp>& a, const Point_<_Tp>& b)
+{
+ a.x = saturate_cast<_Tp>(a.x - b.x);
+ a.y = saturate_cast<_Tp>(a.y - b.y);
+ return a;
+}
+
+template<typename _Tp> static inline Point_<_Tp>&
+operator *= (Point_<_Tp>& a, int b)
+{
+ a.x = saturate_cast<_Tp>(a.x*b);
+ a.y = saturate_cast<_Tp>(a.y*b);
+ return a;
+}
+
+template<typename _Tp> static inline Point_<_Tp>&
+operator *= (Point_<_Tp>& a, float b)
+{
+ a.x = saturate_cast<_Tp>(a.x*b);
+ a.y = saturate_cast<_Tp>(a.y*b);
+ return a;
+}
+
+template<typename _Tp> static inline Point_<_Tp>&
+operator *= (Point_<_Tp>& a, double b)
+{
+ a.x = saturate_cast<_Tp>(a.x*b);
+ a.y = saturate_cast<_Tp>(a.y*b);
+ return a;
+}
+
+template<typename _Tp> static inline double norm(const Point_<_Tp>& pt)
+{ return std::sqrt((double)pt.x*pt.x + (double)pt.y*pt.y); }
+
+template<typename _Tp> static inline bool operator == (const Point_<_Tp>& a, const Point_<_Tp>& b)
+{ return a.x == b.x && a.y == b.y; }
+
+template<typename _Tp> static inline bool operator != (const Point_<_Tp>& a, const Point_<_Tp>& b)
+{ return a.x != b.x || a.y != b.y; }
+
+template<typename _Tp> static inline Point_<_Tp> operator + (const Point_<_Tp>& a, const Point_<_Tp>& b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(a.x + b.x), saturate_cast<_Tp>(a.y + b.y) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator - (const Point_<_Tp>& a, const Point_<_Tp>& b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(a.x - b.x), saturate_cast<_Tp>(a.y - b.y) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator - (const Point_<_Tp>& a)
+{ return Point_<_Tp>( saturate_cast<_Tp>(-a.x), saturate_cast<_Tp>(-a.y) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator * (const Point_<_Tp>& a, int b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator * (int a, const Point_<_Tp>& b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(b.x*a), saturate_cast<_Tp>(b.y*a) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator * (const Point_<_Tp>& a, float b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator * (float a, const Point_<_Tp>& b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(b.x*a), saturate_cast<_Tp>(b.y*a) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator * (const Point_<_Tp>& a, double b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b) ); }
+
+template<typename _Tp> static inline Point_<_Tp> operator * (double a, const Point_<_Tp>& b)
+{ return Point_<_Tp>( saturate_cast<_Tp>(b.x*a), saturate_cast<_Tp>(b.y*a) ); }
+
+//////////////////////////////// 3D Point ////////////////////////////////
+
+template<typename _Tp> inline Point3_<_Tp>::Point3_() : x(0), y(0), z(0) {}
+template<typename _Tp> inline Point3_<_Tp>::Point3_(_Tp _x, _Tp _y, _Tp _z) : x(_x), y(_y), z(_z) {}
+template<typename _Tp> inline Point3_<_Tp>::Point3_(const Point3_& pt) : x(pt.x), y(pt.y), z(pt.z) {}
+template<typename _Tp> inline Point3_<_Tp>::Point3_(const Point_<_Tp>& pt) : x(pt.x), y(pt.y), z(_Tp()) {}
+template<typename _Tp> inline Point3_<_Tp>::Point3_(const CvPoint3D32f& pt) :
+ x(saturate_cast<_Tp>(pt.x)), y(saturate_cast<_Tp>(pt.y)), z(saturate_cast<_Tp>(pt.z)) {}
+template<typename _Tp> inline Point3_<_Tp>::Point3_(const Vec<_Tp, 3>& v) : x(v[0]), y(v[1]), z(v[2]) {}
+
+template<typename _Tp> template<typename _Tp2> inline Point3_<_Tp>::operator Point3_<_Tp2>() const
+{ return Point3_<_Tp2>(saturate_cast<_Tp2>(x), saturate_cast<_Tp2>(y), saturate_cast<_Tp2>(z)); }
+
+template<typename _Tp> inline Point3_<_Tp>::operator CvPoint3D32f() const
+{ return cvPoint3D32f((float)x, (float)y, (float)z); }
+
+template<typename _Tp> inline Point3_<_Tp>::operator Vec<_Tp, 3>() const
+{ return Vec<_Tp, 3>(x, y, z); }
+
+template<typename _Tp> inline Point3_<_Tp>& Point3_<_Tp>::operator = (const Point3_& pt)
+{ x = pt.x; y = pt.y; z = pt.z; return *this; }
+
+template<typename _Tp> inline _Tp Point3_<_Tp>::dot(const Point3_& pt) const
+{ return saturate_cast<_Tp>(x*pt.x + y*pt.y + z*pt.z); }
+template<typename _Tp> inline double Point3_<_Tp>::ddot(const Point3_& pt) const
+{ return (double)x*pt.x + (double)y*pt.y + (double)z*pt.z; }
+
+template<typename _Tp> inline Point3_<_Tp> Point3_<_Tp>::cross(const Point3_<_Tp>& pt) const
+{
+ return Point3_<_Tp>(y*pt.z - z*pt.y, z*pt.x - x*pt.z, x*pt.y - y*pt.x);
+}
+
+template<typename _Tp> static inline Point3_<_Tp>&
+operator += (Point3_<_Tp>& a, const Point3_<_Tp>& b)
+{
+ a.x = saturate_cast<_Tp>(a.x + b.x);
+ a.y = saturate_cast<_Tp>(a.y + b.y);
+ a.z = saturate_cast<_Tp>(a.z + b.z);
+ return a;
+}
+
+template<typename _Tp> static inline Point3_<_Tp>&
+operator -= (Point3_<_Tp>& a, const Point3_<_Tp>& b)
+{
+ a.x = saturate_cast<_Tp>(a.x - b.x);
+ a.y = saturate_cast<_Tp>(a.y - b.y);
+ a.z = saturate_cast<_Tp>(a.z - b.z);
+ return a;
+}
+
+template<typename _Tp> static inline Point3_<_Tp>&
+operator *= (Point3_<_Tp>& a, int b)
+{
+ a.x = saturate_cast<_Tp>(a.x*b);
+ a.y = saturate_cast<_Tp>(a.y*b);
+ a.z = saturate_cast<_Tp>(a.z*b);
+ return a;
+}
+
+template<typename _Tp> static inline Point3_<_Tp>&
+operator *= (Point3_<_Tp>& a, float b)
+{
+ a.x = saturate_cast<_Tp>(a.x*b);
+ a.y = saturate_cast<_Tp>(a.y*b);
+ a.z = saturate_cast<_Tp>(a.z*b);
+ return a;
+}
+
+template<typename _Tp> static inline Point3_<_Tp>&
+operator *= (Point3_<_Tp>& a, double b)
+{
+ a.x = saturate_cast<_Tp>(a.x*b);
+ a.y = saturate_cast<_Tp>(a.y*b);
+ a.z = saturate_cast<_Tp>(a.z*b);
+ return a;
+}
+
+template<typename _Tp> static inline double norm(const Point3_<_Tp>& pt)
+{ return std::sqrt((double)pt.x*pt.x + (double)pt.y*pt.y + (double)pt.z*pt.z); }
+
+template<typename _Tp> static inline bool operator == (const Point3_<_Tp>& a, const Point3_<_Tp>& b)
+{ return a.x == b.x && a.y == b.y && a.z == b.z; }
+
+template<typename _Tp> static inline bool operator != (const Point3_<_Tp>& a, const Point3_<_Tp>& b)
+{ return a.x != b.x || a.y != b.y || a.z != b.z; }
+
+template<typename _Tp> static inline Point3_<_Tp> operator + (const Point3_<_Tp>& a, const Point3_<_Tp>& b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(a.x + b.x),
+ saturate_cast<_Tp>(a.y + b.y),
+ saturate_cast<_Tp>(a.z + b.z)); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator - (const Point3_<_Tp>& a, const Point3_<_Tp>& b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(a.x - b.x),
+ saturate_cast<_Tp>(a.y - b.y),
+ saturate_cast<_Tp>(a.z - b.z)); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator - (const Point3_<_Tp>& a)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(-a.x),
+ saturate_cast<_Tp>(-a.y),
+ saturate_cast<_Tp>(-a.z) ); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator * (const Point3_<_Tp>& a, int b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(a.x*b),
+ saturate_cast<_Tp>(a.y*b),
+ saturate_cast<_Tp>(a.z*b) ); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator * (int a, const Point3_<_Tp>& b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(b.x*a),
+ saturate_cast<_Tp>(b.y*a),
+ saturate_cast<_Tp>(b.z*a) ); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator * (const Point3_<_Tp>& a, float b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(a.x*b),
+ saturate_cast<_Tp>(a.y*b),
+ saturate_cast<_Tp>(a.z*b) ); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator * (float a, const Point3_<_Tp>& b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(b.x*a),
+ saturate_cast<_Tp>(b.y*a),
+ saturate_cast<_Tp>(b.z*a) ); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator * (const Point3_<_Tp>& a, double b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(a.x*b),
+ saturate_cast<_Tp>(a.y*b),
+ saturate_cast<_Tp>(a.z*b) ); }
+
+template<typename _Tp> static inline Point3_<_Tp> operator * (double a, const Point3_<_Tp>& b)
+{ return Point3_<_Tp>( saturate_cast<_Tp>(b.x*a),
+ saturate_cast<_Tp>(b.y*a),
+ saturate_cast<_Tp>(b.z*a) ); }
+
+//////////////////////////////// Size ////////////////////////////////
+
+template<typename _Tp> inline Size_<_Tp>::Size_()
+ : width(0), height(0) {}
+template<typename _Tp> inline Size_<_Tp>::Size_(_Tp _width, _Tp _height)
+ : width(_width), height(_height) {}
+template<typename _Tp> inline Size_<_Tp>::Size_(const Size_& sz)
+ : width(sz.width), height(sz.height) {}
+template<typename _Tp> inline Size_<_Tp>::Size_(const CvSize& sz)
+ : width(saturate_cast<_Tp>(sz.width)), height(saturate_cast<_Tp>(sz.height)) {}
+template<typename _Tp> inline Size_<_Tp>::Size_(const CvSize2D32f& sz)
+ : width(saturate_cast<_Tp>(sz.width)), height(saturate_cast<_Tp>(sz.height)) {}
+template<typename _Tp> inline Size_<_Tp>::Size_(const Point_<_Tp>& pt) : width(pt.x), height(pt.y) {}
+
+template<typename _Tp> template<typename _Tp2> inline Size_<_Tp>::operator Size_<_Tp2>() const
+{ return Size_<_Tp2>(saturate_cast<_Tp2>(width), saturate_cast<_Tp2>(height)); }
+template<typename _Tp> inline Size_<_Tp>::operator CvSize() const
+{ return cvSize(saturate_cast<int>(width), saturate_cast<int>(height)); }
+template<typename _Tp> inline Size_<_Tp>::operator CvSize2D32f() const
+{ return cvSize2D32f((float)width, (float)height); }
+
+template<typename _Tp> inline Size_<_Tp>& Size_<_Tp>::operator = (const Size_<_Tp>& sz)
+{ width = sz.width; height = sz.height; return *this; }
+template<typename _Tp> static inline Size_<_Tp> operator * (const Size_<_Tp>& a, _Tp b)
+{ return Size_<_Tp>(a.width * b, a.height * b); }
+template<typename _Tp> static inline Size_<_Tp> operator + (const Size_<_Tp>& a, const Size_<_Tp>& b)
+{ return Size_<_Tp>(a.width + b.width, a.height + b.height); }
+template<typename _Tp> static inline Size_<_Tp> operator - (const Size_<_Tp>& a, const Size_<_Tp>& b)
+{ return Size_<_Tp>(a.width - b.width, a.height - b.height); }
+template<typename _Tp> inline _Tp Size_<_Tp>::area() const { return width*height; }
+
+template<typename _Tp> static inline Size_<_Tp>& operator += (Size_<_Tp>& a, const Size_<_Tp>& b)
+{ a.width += b.width; a.height += b.height; return a; }
+template<typename _Tp> static inline Size_<_Tp>& operator -= (Size_<_Tp>& a, const Size_<_Tp>& b)
+{ a.width -= b.width; a.height -= b.height; return a; }
+
+template<typename _Tp> static inline bool operator == (const Size_<_Tp>& a, const Size_<_Tp>& b)
+{ return a.width == b.width && a.height == b.height; }
+template<typename _Tp> static inline bool operator != (const Size_<_Tp>& a, const Size_<_Tp>& b)
+{ return a.width != b.width || a.height != b.height; }
+
+//////////////////////////////// Rect ////////////////////////////////
+
+
+template<typename _Tp> inline Rect_<_Tp>::Rect_() : x(0), y(0), width(0), height(0) {}
+template<typename _Tp> inline Rect_<_Tp>::Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height) : x(_x), y(_y), width(_width), height(_height) {}
+template<typename _Tp> inline Rect_<_Tp>::Rect_(const Rect_<_Tp>& r) : x(r.x), y(r.y), width(r.width), height(r.height) {}
+template<typename _Tp> inline Rect_<_Tp>::Rect_(const CvRect& r) : x((_Tp)r.x), y((_Tp)r.y), width((_Tp)r.width), height((_Tp)r.height) {}
+template<typename _Tp> inline Rect_<_Tp>::Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz) :
+ x(org.x), y(org.y), width(sz.width), height(sz.height) {}
+template<typename _Tp> inline Rect_<_Tp>::Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2)
+{
+ x = std::min(pt1.x, pt2.x); y = std::min(pt1.y, pt2.y);
+ width = std::max(pt1.x, pt2.x) - x; height = std::max(pt1.y, pt2.y) - y;
+}
+template<typename _Tp> inline Rect_<_Tp>& Rect_<_Tp>::operator = ( const Rect_<_Tp>& r )
+{ x = r.x; y = r.y; width = r.width; height = r.height; return *this; }
+
+template<typename _Tp> inline Point_<_Tp> Rect_<_Tp>::tl() const { return Point_<_Tp>(x,y); }
+template<typename _Tp> inline Point_<_Tp> Rect_<_Tp>::br() const { return Point_<_Tp>(x+width, y+height); }
+
+template<typename _Tp> static inline Rect_<_Tp>& operator += ( Rect_<_Tp>& a, const Point_<_Tp>& b )
+{ a.x += b.x; a.y += b.y; return a; }
+template<typename _Tp> static inline Rect_<_Tp>& operator -= ( Rect_<_Tp>& a, const Point_<_Tp>& b )
+{ a.x -= b.x; a.y -= b.y; return a; }
+
+template<typename _Tp> static inline Rect_<_Tp>& operator += ( Rect_<_Tp>& a, const Size_<_Tp>& b )
+{ a.width += b.width; a.height += b.height; return a; }
+
+template<typename _Tp> static inline Rect_<_Tp>& operator -= ( Rect_<_Tp>& a, const Size_<_Tp>& b )
+{ a.width -= b.width; a.height -= b.height; return a; }
+
+template<typename _Tp> static inline Rect_<_Tp>& operator &= ( Rect_<_Tp>& a, const Rect_<_Tp>& b )
+{
+ _Tp x1 = std::max(a.x, b.x), y1 = std::max(a.y, b.y);
+ a.width = std::min(a.x + a.width, b.x + b.width) - x1;
+ a.height = std::min(a.y + a.height, b.y + b.height) - y1;
+ a.x = x1; a.y = y1;
+ if( a.width <= 0 || a.height <= 0 )
+ a = Rect();
+ return a;
+}
+
+template<typename _Tp> static inline Rect_<_Tp>& operator |= ( Rect_<_Tp>& a, const Rect_<_Tp>& b )
+{
+ _Tp x1 = std::min(a.x, b.x), y1 = std::min(a.y, b.y);
+ a.width = std::max(a.x + a.width, b.x + b.width) - x1;
+ a.height = std::max(a.y + a.height, b.y + b.height) - y1;
+ a.x = x1; a.y = y1;
+ return a;
+}
+
+template<typename _Tp> inline Size_<_Tp> Rect_<_Tp>::size() const { return Size_<_Tp>(width, height); }
+template<typename _Tp> inline _Tp Rect_<_Tp>::area() const { return width*height; }
+
+template<typename _Tp> template<typename _Tp2> inline Rect_<_Tp>::operator Rect_<_Tp2>() const
+{ return Rect_<_Tp2>(saturate_cast<_Tp2>(x), saturate_cast<_Tp2>(y),
+ saturate_cast<_Tp2>(width), saturate_cast<_Tp2>(height)); }
+template<typename _Tp> inline Rect_<_Tp>::operator CvRect() const
+{ return cvRect(saturate_cast<int>(x), saturate_cast<int>(y),
+ saturate_cast<int>(width), saturate_cast<int>(height)); }
+
+template<typename _Tp> inline bool Rect_<_Tp>::contains(const Point_<_Tp>& pt) const
+{ return x <= pt.x && pt.x < x + width && y <= pt.y && pt.y < y + height; }
+
+template<typename _Tp> static inline bool operator == (const Rect_<_Tp>& a, const Rect_<_Tp>& b)
+{
+ return a.x == b.x && a.y == b.y && a.width == b.width && a.height == b.height;
+}
+
+template<typename _Tp> static inline bool operator != (const Rect_<_Tp>& a, const Rect_<_Tp>& b)
+{
+ return a.x != b.x || a.y != b.y || a.width != b.width || a.height != b.height;
+}
+
+template<typename _Tp> static inline Rect_<_Tp> operator + (const Rect_<_Tp>& a, const Point_<_Tp>& b)
+{
+ return Rect_<_Tp>( a.x + b.x, a.y + b.y, a.width, a.height );
+}
+
+template<typename _Tp> static inline Rect_<_Tp> operator - (const Rect_<_Tp>& a, const Point_<_Tp>& b)
+{
+ return Rect_<_Tp>( a.x - b.x, a.y - b.y, a.width, a.height );
+}
+
+template<typename _Tp> static inline Rect_<_Tp> operator + (const Rect_<_Tp>& a, const Size_<_Tp>& b)
+{
+ return Rect_<_Tp>( a.x, a.y, a.width + b.width, a.height + b.height );
+}
+
+template<typename _Tp> static inline Rect_<_Tp> operator & (const Rect_<_Tp>& a, const Rect_<_Tp>& b)
+{
+ Rect_<_Tp> c = a;
+ return c &= b;
+}
+
+template<typename _Tp> static inline Rect_<_Tp> operator | (const Rect_<_Tp>& a, const Rect_<_Tp>& b)
+{
+ Rect_<_Tp> c = a;
+ return c |= b;
+}
+
+template<typename _Tp> inline bool Point_<_Tp>::inside( const Rect_<_Tp>& r ) const
+{
+ return r.contains(*this);
+}
+
+inline RotatedRect::RotatedRect() { angle = 0; }
+inline RotatedRect::RotatedRect(const Point2f& _center, const Size2f& _size, float _angle)
+ : center(_center), size(_size), angle(_angle) {}
+inline RotatedRect::RotatedRect(const CvBox2D& box)
+ : center(box.center), size(box.size), angle(box.angle) {}
+inline RotatedRect::operator CvBox2D() const
+{
+ CvBox2D box; box.center = center; box.size = size; box.angle = angle;
+ return box;
+}
+
+//////////////////////////////// Scalar_ ///////////////////////////////
+
+template<typename _Tp> inline Scalar_<_Tp>::Scalar_()
+{ this->val[0] = this->val[1] = this->val[2] = this->val[3] = 0; }
+
+template<typename _Tp> inline Scalar_<_Tp>::Scalar_(_Tp v0, _Tp v1, _Tp v2, _Tp v3)
+{ this->val[0] = v0; this->val[1] = v1; this->val[2] = v2; this->val[3] = v3; }
+
+template<typename _Tp> inline Scalar_<_Tp>::Scalar_(const CvScalar& s)
+{
+ this->val[0] = saturate_cast<_Tp>(s.val[0]);
+ this->val[1] = saturate_cast<_Tp>(s.val[1]);
+ this->val[2] = saturate_cast<_Tp>(s.val[2]);
+ this->val[3] = saturate_cast<_Tp>(s.val[3]);
+}
+
+template<typename _Tp> inline Scalar_<_Tp>::Scalar_(_Tp v0)
+{ this->val[0] = v0; this->val[1] = this->val[2] = this->val[3] = 0; }
+
+template<typename _Tp> inline Scalar_<_Tp> Scalar_<_Tp>::all(_Tp v0)
+{ return Scalar_<_Tp>(v0, v0, v0, v0); }
+template<typename _Tp> inline Scalar_<_Tp>::operator CvScalar() const
+{ return cvScalar(this->val[0], this->val[1], this->val[2], this->val[3]); }
+
+template<typename _Tp> template<typename T2> inline Scalar_<_Tp>::operator Scalar_<T2>() const
+{
+ return Scalar_<T2>(saturate_cast<T2>(this->val[0]),
+ saturate_cast<T2>(this->val[1]),
+ saturate_cast<T2>(this->val[2]),
+ saturate_cast<T2>(this->val[3]));
+}
+
+template<typename _Tp> static inline Scalar_<_Tp>& operator += (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ a.val[0] = saturate_cast<_Tp>(a.val[0] + b.val[0]);
+ a.val[1] = saturate_cast<_Tp>(a.val[1] + b.val[1]);
+ a.val[2] = saturate_cast<_Tp>(a.val[2] + b.val[2]);
+ a.val[3] = saturate_cast<_Tp>(a.val[3] + b.val[3]);
+ return a;
+}
+
+template<typename _Tp> static inline Scalar_<_Tp>& operator -= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ a.val[0] = saturate_cast<_Tp>(a.val[0] - b.val[0]);
+ a.val[1] = saturate_cast<_Tp>(a.val[1] - b.val[1]);
+ a.val[2] = saturate_cast<_Tp>(a.val[2] - b.val[2]);
+ a.val[3] = saturate_cast<_Tp>(a.val[3] - b.val[3]);
+ return a;
+}
+
+template<typename _Tp> static inline Scalar_<_Tp>& operator *= ( Scalar_<_Tp>& a, _Tp v )
+{
+ a.val[0] = saturate_cast<_Tp>(a.val[0] * v);
+ a.val[1] = saturate_cast<_Tp>(a.val[1] * v);
+ a.val[2] = saturate_cast<_Tp>(a.val[2] * v);
+ a.val[3] = saturate_cast<_Tp>(a.val[3] * v);
+ return a;
+}
+
+template<typename _Tp> inline Scalar_<_Tp> Scalar_<_Tp>::mul(const Scalar_<_Tp>& t, double scale ) const
+{
+ return Scalar_<_Tp>( saturate_cast<_Tp>(this->val[0]*t.val[0]*scale),
+ saturate_cast<_Tp>(this->val[1]*t.val[1]*scale),
+ saturate_cast<_Tp>(this->val[2]*t.val[2]*scale),
+ saturate_cast<_Tp>(this->val[3]*t.val[3]*scale));
+}
+
+template<typename _Tp> static inline bool operator == ( const Scalar_<_Tp>& a, const Scalar_<_Tp>& b )
+{
+ return a.val[0] == b.val[0] && a.val[1] == b.val[1] &&
+ a.val[2] == b.val[2] && a.val[3] == b.val[3];
+}
+
+template<typename _Tp> static inline bool operator != ( const Scalar_<_Tp>& a, const Scalar_<_Tp>& b )
+{
+ return a.val[0] != b.val[0] || a.val[1] != b.val[1] ||
+ a.val[2] != b.val[2] || a.val[3] != b.val[3];
+}
+
+template<typename _Tp> static inline Scalar_<_Tp> operator + (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(a.val[0] + b.val[0]),
+ saturate_cast<_Tp>(a.val[1] + b.val[1]),
+ saturate_cast<_Tp>(a.val[2] + b.val[2]),
+ saturate_cast<_Tp>(a.val[3] + b.val[3]));
+}
+
+template<typename _Tp> static inline Scalar_<_Tp> operator - (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(a.val[0] - b.val[0]),
+ saturate_cast<_Tp>(a.val[1] - b.val[1]),
+ saturate_cast<_Tp>(a.val[2] - b.val[2]),
+ saturate_cast<_Tp>(a.val[3] - b.val[3]));
+}
+
+template<typename _Tp> static inline Scalar_<_Tp> operator * (const Scalar_<_Tp>& a, _Tp alpha)
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(a.val[0] * alpha),
+ saturate_cast<_Tp>(a.val[1] * alpha),
+ saturate_cast<_Tp>(a.val[2] * alpha),
+ saturate_cast<_Tp>(a.val[3] * alpha));
+}
+
+template<typename _Tp> static inline Scalar_<_Tp> operator * (_Tp alpha, const Scalar_<_Tp>& a)
+{
+ return a*alpha;
+}
+
+template<typename _Tp> static inline Scalar_<_Tp> operator - (const Scalar_<_Tp>& a)
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(-a.val[0]), saturate_cast<_Tp>(-a.val[1]),
+ saturate_cast<_Tp>(-a.val[2]), saturate_cast<_Tp>(-a.val[3]));
+}
+
+
+template<typename _Tp> static inline Scalar_<_Tp>
+operator * (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(a[0]*b[0] - a[1]*b[1] - a[2]*b[2] - a[3]*b[3]),
+ saturate_cast<_Tp>(a[0]*b[1] + a[1]*b[0] + a[2]*b[3] - a[3]*b[2]),
+ saturate_cast<_Tp>(a[0]*b[2] - a[1]*b[3] + a[2]*b[0] + a[3]*b[1]),
+ saturate_cast<_Tp>(a[0]*b[3] + a[1]*b[2] - a[2]*b[1] + a[3]*b[0]));
+}
+
+template<typename _Tp> static inline Scalar_<_Tp>&
+operator *= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ a = a*b;
+ return a;
+}
+
+template<typename _Tp> inline Scalar_<_Tp> Scalar_<_Tp>::conj() const
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(this->val[0]),
+ saturate_cast<_Tp>(-this->val[1]),
+ saturate_cast<_Tp>(-this->val[2]),
+ saturate_cast<_Tp>(-this->val[3]));
+}
+
+template<typename _Tp> inline bool Scalar_<_Tp>::isReal() const
+{
+ return this->val[1] == 0 && this->val[2] == 0 && this->val[3] == 0;
+}
+
+template<typename _Tp> static inline
+Scalar_<_Tp> operator / (const Scalar_<_Tp>& a, _Tp alpha)
+{
+ return Scalar_<_Tp>(saturate_cast<_Tp>(a.val[0] / alpha),
+ saturate_cast<_Tp>(a.val[1] / alpha),
+ saturate_cast<_Tp>(a.val[2] / alpha),
+ saturate_cast<_Tp>(a.val[3] / alpha));
+}
+
+template<typename _Tp> static inline
+Scalar_<float> operator / (const Scalar_<float>& a, float alpha)
+{
+ float s = 1/alpha;
+ return Scalar_<float>(a.val[0]*s, a.val[1]*s, a.val[2]*s, a.val[3]*s);
+}
+
+template<typename _Tp> static inline
+Scalar_<double> operator / (const Scalar_<double>& a, double alpha)
+{
+ double s = 1/alpha;
+ return Scalar_<double>(a.val[0]*s, a.val[1]*s, a.val[2]*s, a.val[3]*s);
+}
+
+template<typename _Tp> static inline
+Scalar_<_Tp>& operator /= (Scalar_<_Tp>& a, _Tp alpha)
+{
+ a = a/alpha;
+ return a;
+}
+
+template<typename _Tp> static inline
+Scalar_<_Tp> operator / (_Tp a, const Scalar_<_Tp>& b)
+{
+ _Tp s = a/(b[0]*b[0] + b[1]*b[1] + b[2]*b[2] + b[3]*b[3]);
+ return b.conj()*s;
+}
+
+template<typename _Tp> static inline
+Scalar_<_Tp> operator / (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ return a*((_Tp)1/b);
+}
+
+template<typename _Tp> static inline
+Scalar_<_Tp>& operator /= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
+{
+ a = a/b;
+ return a;
+}
+
+//////////////////////////////// Range /////////////////////////////////
+
+inline Range::Range() : start(0), end(0) {}
+inline Range::Range(int _start, int _end) : start(_start), end(_end) {}
+inline Range::Range(const CvSlice& slice) : start(slice.start_index), end(slice.end_index)
+{
+ if( start == 0 && end == CV_WHOLE_SEQ_END_INDEX )
+ *this = Range::all();
+}
+
+inline int Range::size() const { return end - start; }
+inline bool Range::empty() const { return start == end; }
+inline Range Range::all() { return Range(INT_MIN, INT_MAX); }
+
+static inline bool operator == (const Range& r1, const Range& r2)
+{ return r1.start == r2.start && r1.end == r2.end; }
+
+static inline bool operator != (const Range& r1, const Range& r2)
+{ return !(r1 == r2); }
+
+static inline bool operator !(const Range& r)
+{ return r.start == r.end; }
+
+static inline Range operator & (const Range& r1, const Range& r2)
+{
+ Range r(std::max(r1.start, r2.start), std::min(r1.end, r2.end));
+ r.end = std::max(r.end, r.start);
+ return r;
+}
+
+static inline Range& operator &= (Range& r1, const Range& r2)
+{
+ r1 = r1 & r2;
+ return r1;
+}
+
+static inline Range operator + (const Range& r1, int delta)
+{
+ return Range(r1.start + delta, r1.end + delta);
+}
+
+static inline Range operator + (int delta, const Range& r1)
+{
+ return Range(r1.start + delta, r1.end + delta);
+}
+
+static inline Range operator - (const Range& r1, int delta)
+{
+ return r1 + (-delta);
+}
+
+inline Range::operator CvSlice() const
+{ return *this != Range::all() ? cvSlice(start, end) : CV_WHOLE_SEQ; }
+
+
+
+//////////////////////////////// Vector ////////////////////////////////
+
+// template vector class. It is similar to STL's vector,
+// with a few important differences:
+// 1) it can be created on top of user-allocated data w/o copying it
+// 2) vector b = a means copying the header,
+// not the underlying data (use clone() to make a deep copy)
+template <typename _Tp> class Vector
+{
+public:
+ typedef _Tp value_type;
+ typedef _Tp* iterator;
+ typedef const _Tp* const_iterator;
+ typedef _Tp& reference;
+ typedef const _Tp& const_reference;
+
+ struct Hdr
+ {
+ Hdr() : data(0), datastart(0), refcount(0), size(0), capacity(0) {};
+ _Tp* data;
+ _Tp* datastart;
+ int* refcount;
+ size_t size;
+ size_t capacity;
+ };
+
+ Vector() {}
+ Vector(size_t _size) { resize(_size); }
+ Vector(size_t _size, const _Tp& val)
+ {
+ resize(_size);
+ for(size_t i = 0; i < _size; i++)
+ hdr.data[i] = val;
+ }
+ Vector(_Tp* _data, size_t _size, bool _copyData=false)
+ { set(_data, _size, _copyData); }
+
+ template<int n> Vector(const Vec<_Tp, n>& vec)
+ { set((_Tp*)&vec.val[0], n, true); }
+
+ Vector(const std::vector<_Tp>& vec, bool _copyData=false)
+ { set(!vec.empty() ? (_Tp*)&vec[0] : 0, vec.size(), _copyData); }
+
+ Vector(const Vector& d) { *this = d; }
+
+ Vector(const Vector& d, const Range& r_)
+ {
+ Range r = r_ == Range::all() ? Range(0, d.size()) : r_;
+ /*if( r == Range::all() )
+ r = Range(0, d.size());*/
+ if( r.size() > 0 && r.start >= 0 && r.end <= d.size() )
+ {
+ if( d.hdr.refcount )
+ CV_XADD(d.hdr.refcount, 1);
+ hdr.refcount = d.hdr.refcount;
+ hdr.datastart = d.hdr.datastart;
+ hdr.data = d.hdr.data + r.start;
+ hdr.capacity = hdr.size = r.size();
+ }
+ }
+
+ Vector<_Tp>& operator = (const Vector& d)
+ {
+ if( this != &d )
+ {
+ if( d.hdr.refcount )
+ CV_XADD(d.hdr.refcount, 1);
+ release();
+ hdr = d.hdr;
+ }
+ return *this;
+ }
+
+ ~Vector() { release(); }
+
+ Vector<_Tp> clone() const
+ { return hdr.data ? Vector<_Tp>(hdr.data, hdr.size, true) : Vector<_Tp>(); }
+
+ void copyTo(Vector<_Tp>& vec) const
+ {
+ size_t i, sz = size();
+ vec.resize(sz);
+ const _Tp* src = hdr.data;
+ _Tp* dst = vec.hdr.data;
+ for( i = 0; i < sz; i++ )
+ dst[i] = src[i];
+ }
+
+ void copyTo(std::vector<_Tp>& vec) const
+ {
+ size_t i, sz = size();
+ vec.resize(sz);
+ const _Tp* src = hdr.data;
+ _Tp* dst = sz ? &vec[0] : 0;
+ for( i = 0; i < sz; i++ )
+ dst[i] = src[i];
+ }
+
+ operator CvMat() const
+ { return cvMat((int)size(), 1, type(), (void*)hdr.data); }
+
+ _Tp& operator [] (size_t i) { CV_DbgAssert( i < size() ); return hdr.data[i]; }
+ const _Tp& operator [] (size_t i) const { CV_DbgAssert( i < size() ); return hdr.data[i]; }
+ Vector operator() (const Range& r) const { return Vector(*this, r); }
+ _Tp& back() { CV_DbgAssert(!empty()); return hdr.data[hdr.size-1]; }
+ const _Tp& back() const { CV_DbgAssert(!empty()); return hdr.data[hdr.size-1]; }
+ _Tp& front() { CV_DbgAssert(!empty()); return hdr.data[0]; }
+ const _Tp& front() const { CV_DbgAssert(!empty()); return hdr.data[0]; }
+
+ _Tp* begin() { return hdr.data; }
+ _Tp* end() { return hdr.data + hdr.size; }
+ const _Tp* begin() const { return hdr.data; }
+ const _Tp* end() const { return hdr.data + hdr.size; }
+
+ void addref() { if( hdr.refcount ) CV_XADD(hdr.refcount, 1); }
+ void release()
+ {
+ if( hdr.refcount && CV_XADD(hdr.refcount, -1) == 1 )
+ {
+ delete[] hdr.datastart;
+ delete hdr.refcount;
+ }
+ hdr = Hdr();
+ }
+
+ void set(_Tp* _data, size_t _size, bool _copyData=false)
+ {
+ if( !_copyData )
+ {
+ release();
+ hdr.data = hdr.datastart = _data;
+ hdr.size = hdr.capacity = _size;
+ hdr.refcount = 0;
+ }
+ else
+ {
+ reserve(_size);
+ for( size_t i = 0; i < _size; i++ )
+ hdr.data[i] = _data[i];
+ hdr.size = _size;
+ }
+ }
+
+ void reserve(size_t newCapacity)
+ {
+ _Tp* newData;
+ int* newRefcount;
+ size_t i, oldSize = hdr.size;
+ if( (!hdr.refcount || *hdr.refcount == 1) && hdr.capacity >= newCapacity )
+ return;
+ newCapacity = std::max(newCapacity, oldSize);
+ newData = new _Tp[newCapacity];
+ newRefcount = new int(1);
+ for( i = 0; i < oldSize; i++ )
+ newData[i] = hdr.data[i];
+ release();
+ hdr.data = hdr.datastart = newData;
+ hdr.capacity = newCapacity;
+ hdr.size = oldSize;
+ hdr.refcount = newRefcount;
+ }
+
+ void resize(size_t newSize)
+ {
+ size_t i;
+ newSize = std::max(newSize, (size_t)0);
+ if( (!hdr.refcount || *hdr.refcount == 1) && hdr.size == newSize )
+ return;
+ if( newSize > hdr.capacity )
+ reserve(std::max(newSize, std::max((size_t)4, hdr.capacity*2)));
+ for( i = hdr.size; i < newSize; i++ )
+ hdr.data[i] = _Tp();
+ hdr.size = newSize;
+ }
+
+ Vector<_Tp>& push_back(const _Tp& elem)
+ {
+ if( hdr.size == hdr.capacity )
+ reserve( std::max((size_t)4, hdr.capacity*2) );
+ hdr.data[hdr.size++] = elem;
+ return *this;
+ }
+
+ Vector<_Tp>& pop_back()
+ {
+ if( hdr.size > 0 )
+ --hdr.size;
+ return *this;
+ }
+
+ size_t size() const { return hdr.size; }
+ size_t capacity() const { return hdr.capacity; }
+ bool empty() const { return hdr.size == 0; }
+ void clear() { resize(0); }
+ int type() const { return DataType<_Tp>::type; }
+
+protected:
+ Hdr hdr;
+};
+
+
+template<typename _Tp> inline typename DataType<_Tp>::work_type
+dot(const Vector<_Tp>& v1, const Vector<_Tp>& v2)
+{
+ typedef typename DataType<_Tp>::work_type _Tw;
+ size_t i = 0, n = v1.size();
+ assert(v1.size() == v2.size());
+
+ _Tw s = 0;
+ const _Tp *ptr1 = &v1[0], *ptr2 = &v2[0];
+ for( ; i < n; i++ )
+ s += (_Tw)ptr1[i]*ptr2[i];
+
+ return s;
+}
+
+// Multiply-with-Carry RNG
+inline RNG::RNG() { state = 0xffffffff; }
+inline RNG::RNG(uint64 _state) { state = _state ? _state : 0xffffffff; }
+inline unsigned RNG::next()
+{
+ state = (uint64)(unsigned)state*CV_RNG_COEFF + (unsigned)(state >> 32);
+ return (unsigned)state;
+}
+
+inline RNG::operator uchar() { return (uchar)next(); }
+inline RNG::operator schar() { return (schar)next(); }
+inline RNG::operator ushort() { return (ushort)next(); }
+inline RNG::operator short() { return (short)next(); }
+inline RNG::operator unsigned() { return next(); }
+inline unsigned RNG::operator ()(unsigned N) {return (unsigned)uniform(0,N);}
+inline unsigned RNG::operator ()() {return next();}
+inline RNG::operator int() { return (int)next(); }
+// * (2^32-1)^-1
+inline RNG::operator float() { return next()*2.3283064365386962890625e-10f; }
+inline RNG::operator double()
+{
+ unsigned t = next();
+ return (((uint64)t << 32) | next())*5.4210108624275221700372640043497e-20;
+}
+inline int RNG::uniform(int a, int b) { return a == b ? a : (int)(next()%(b - a) + a); }
+inline float RNG::uniform(float a, float b) { return ((float)*this)*(b - a) + a; }
+inline double RNG::uniform(double a, double b) { return ((double)*this)*(b - a) + a; }
+
+inline TermCriteria::TermCriteria() : type(0), maxCount(0), epsilon(0) {}
+inline TermCriteria::TermCriteria(int _type, int _maxCount, double _epsilon)
+ : type(_type), maxCount(_maxCount), epsilon(_epsilon) {}
+inline TermCriteria::TermCriteria(const CvTermCriteria& criteria)
+ : type(criteria.type), maxCount(criteria.max_iter), epsilon(criteria.epsilon) {}
+inline TermCriteria::operator CvTermCriteria() const
+{ return cvTermCriteria(type, maxCount, epsilon); }
+
+inline uchar* LineIterator::operator *() { return ptr; }
+inline LineIterator& LineIterator::operator ++()
+{
+ int mask = err < 0 ? -1 : 0;
+ err += minusDelta + (plusDelta & mask);
+ ptr += minusStep + (plusStep & mask);
+ return *this;
+}
+inline LineIterator LineIterator::operator ++(int)
+{
+ LineIterator it = *this;
+ ++(*this);
+ return it;
+}
+inline Point LineIterator::pos() const
+{
+ Point p;
+ p.y = (int)((ptr - ptr0)/step);
+ p.x = (int)(((ptr - ptr0) - p.y*step)/elemSize);
+ return p;
+}
+
+/////////////////////////////// AutoBuffer ////////////////////////////////////////
+
+template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::AutoBuffer()
+{
+ ptr = buf;
+ size = fixed_size;
+}
+
+template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::AutoBuffer(size_t _size)
+{
+ ptr = buf;
+ size = fixed_size;
+ allocate(_size);
+}
+
+template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::~AutoBuffer()
+{ deallocate(); }
+
+template<typename _Tp, size_t fixed_size> inline void AutoBuffer<_Tp, fixed_size>::allocate(size_t _size)
+{
+ if(_size <= size)
+ return;
+ deallocate();
+ if(_size > fixed_size)
+ {
+ ptr = cv::allocate<_Tp>(_size);
+ size = _size;
+ }
+}
+
+template<typename _Tp, size_t fixed_size> inline void AutoBuffer<_Tp, fixed_size>::deallocate()
+{
+ if( ptr != buf )
+ {
+ cv::deallocate<_Tp>(ptr, size);
+ ptr = buf;
+ size = fixed_size;
+ }
+}
+
+template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::operator _Tp* ()
+{ return ptr; }
+
+template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::operator const _Tp* () const
+{ return ptr; }
+
+
+/////////////////////////////////// Ptr ////////////////////////////////////////
+
+template<typename _Tp> inline Ptr<_Tp>::Ptr() : obj(0), refcount(0) {}
+template<typename _Tp> inline Ptr<_Tp>::Ptr(_Tp* _obj) : obj(_obj)
+{
+ if(obj)
+ {
+ refcount = (int*)fastMalloc(sizeof(*refcount));
+ *refcount = 1;
+ }
+ else
+ refcount = 0;
+}
+
+template<typename _Tp> inline void Ptr<_Tp>::addref()
+{ if( refcount ) CV_XADD(refcount, 1); }
+
+template<typename _Tp> inline void Ptr<_Tp>::release()
+{
+ if( refcount && CV_XADD(refcount, -1) == 1 )
+ {
+ delete_obj();
+ fastFree(refcount);
+ }
+ refcount = 0;
+ obj = 0;
+}
+
+template<typename _Tp> inline void Ptr<_Tp>::delete_obj()
+{
+ if( obj ) delete obj;
+}
+
+template<typename _Tp> inline Ptr<_Tp>::~Ptr() { release(); }
+
+template<typename _Tp> inline Ptr<_Tp>::Ptr(const Ptr<_Tp>& _ptr)
+{
+ obj = _ptr.obj;
+ refcount = _ptr.refcount;
+ addref();
+}
+
+template<typename _Tp> inline Ptr<_Tp>& Ptr<_Tp>::operator = (const Ptr<_Tp>& _ptr)
+{
+ if (this != &_ptr)
+ {
+ int* _refcount = _ptr.refcount;
+ if( _refcount )
+ CV_XADD(_refcount, 1);
+ release();
+ obj = _ptr.obj;
+ refcount = _refcount;
+ }
+ return *this;
+}
+
+template<typename _Tp> inline _Tp* Ptr<_Tp>::operator -> () { return obj; }
+template<typename _Tp> inline const _Tp* Ptr<_Tp>::operator -> () const { return obj; }
+
+template<typename _Tp> inline Ptr<_Tp>::operator _Tp* () { return obj; }
+template<typename _Tp> inline Ptr<_Tp>::operator const _Tp*() const { return obj; }
+
+template<typename _Tp> inline bool Ptr<_Tp>::empty() const { return obj == 0; }
+
+template<typename _Tp> template<typename _Tp2> Ptr<_Tp>::Ptr(const Ptr<_Tp2>& p)
+ : obj(0), refcount(0)
+{
+ if (p.empty())
+ return;
+
+ _Tp* p_casted = dynamic_cast<_Tp*>(p.obj);
+ if (!p_casted)
+ return;
+
+ obj = p_casted;
+ refcount = p.refcount;
+ addref();
+}
+
+template<typename _Tp> template<typename _Tp2> inline Ptr<_Tp2> Ptr<_Tp>::ptr()
+{
+ Ptr<_Tp2> p;
+ if( !obj )
+ return p;
+
+ _Tp2* obj_casted = dynamic_cast<_Tp2*>(obj);
+ if (!obj_casted)
+ return p;
+
+ if( refcount )
+ CV_XADD(refcount, 1);
+
+ p.obj = obj_casted;
+ p.refcount = refcount;
+ return p;
+}
+
+template<typename _Tp> template<typename _Tp2> inline const Ptr<_Tp2> Ptr<_Tp>::ptr() const
+{
+ Ptr<_Tp2> p;
+ if( !obj )
+ return p;
+
+ _Tp2* obj_casted = dynamic_cast<_Tp2*>(obj);
+ if (!obj_casted)
+ return p;
+
+ if( refcount )
+ CV_XADD(refcount, 1);
+
+ p.obj = obj_casted;
+ p.refcount = refcount;
+ return p;
+}
+
+template<typename T>
+Ptr<T> makePtr()
+{
+ return Ptr<T>(new T());
+}
+
+template<typename T, typename A1>
+Ptr<T> makePtr(const A1& a1)
+{
+ return Ptr<T>(new T(a1));
+}
+
+template<typename T, typename A1, typename A2>
+Ptr<T> makePtr(const A1& a1, const A2& a2)
+{
+ return Ptr<T>(new T(a1, a2));
+}
+
+template<typename T, typename A1, typename A2, typename A3>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3)
+{
+ return Ptr<T>(new T(a1, a2, a3));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4, a5));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4, a5, a6));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9, const A10& a10)
+{
+ return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));
+}
+
+//// specializied implementations of Ptr::delete_obj() for classic OpenCV types
+
+template<> CV_EXPORTS void Ptr<CvMat>::delete_obj();
+template<> CV_EXPORTS void Ptr<IplImage>::delete_obj();
+template<> CV_EXPORTS void Ptr<CvMatND>::delete_obj();
+template<> CV_EXPORTS void Ptr<CvSparseMat>::delete_obj();
+template<> CV_EXPORTS void Ptr<CvMemStorage>::delete_obj();
+template<> CV_EXPORTS void Ptr<CvFileStorage>::delete_obj();
+
+//////////////////////////////////////// XML & YAML I/O ////////////////////////////////////
+
+CV_EXPORTS_W void write( FileStorage& fs, const string& name, int value );
+CV_EXPORTS_W void write( FileStorage& fs, const string& name, float value );
+CV_EXPORTS_W void write( FileStorage& fs, const string& name, double value );
+CV_EXPORTS_W void write( FileStorage& fs, const string& name, const string& value );
+
+template<typename _Tp> inline void write(FileStorage& fs, const _Tp& value)
+{ write(fs, string(), value); }
+
+CV_EXPORTS void writeScalar( FileStorage& fs, int value );
+CV_EXPORTS void writeScalar( FileStorage& fs, float value );
+CV_EXPORTS void writeScalar( FileStorage& fs, double value );
+CV_EXPORTS void writeScalar( FileStorage& fs, const string& value );
+
+template<> inline void write( FileStorage& fs, const int& value )
+{
+ writeScalar(fs, value);
+}
+
+template<> inline void write( FileStorage& fs, const float& value )
+{
+ writeScalar(fs, value);
+}
+
+template<> inline void write( FileStorage& fs, const double& value )
+{
+ writeScalar(fs, value);
+}
+
+template<> inline void write( FileStorage& fs, const string& value )
+{
+ writeScalar(fs, value);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const Point_<_Tp>& pt )
+{
+ write(fs, pt.x);
+ write(fs, pt.y);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const Point3_<_Tp>& pt )
+{
+ write(fs, pt.x);
+ write(fs, pt.y);
+ write(fs, pt.z);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const Size_<_Tp>& sz )
+{
+ write(fs, sz.width);
+ write(fs, sz.height);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const Complex<_Tp>& c )
+{
+ write(fs, c.re);
+ write(fs, c.im);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const Rect_<_Tp>& r )
+{
+ write(fs, r.x);
+ write(fs, r.y);
+ write(fs, r.width);
+ write(fs, r.height);
+}
+
+template<typename _Tp, int cn> inline void write(FileStorage& fs, const Vec<_Tp, cn>& v )
+{
+ for(int i = 0; i < cn; i++)
+ write(fs, v.val[i]);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const Scalar_<_Tp>& s )
+{
+ write(fs, s.val[0]);
+ write(fs, s.val[1]);
+ write(fs, s.val[2]);
+ write(fs, s.val[3]);
+}
+
+inline void write(FileStorage& fs, const Range& r )
+{
+ write(fs, r.start);
+ write(fs, r.end);
+}
+
+class CV_EXPORTS WriteStructContext
+{
+public:
+ WriteStructContext(FileStorage& _fs, const string& name,
+ int flags, const string& typeName=string());
+ ~WriteStructContext();
+ FileStorage* fs;
+};
+
+template<typename _Tp> inline void write(FileStorage& fs, const string& name, const Point_<_Tp>& pt )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, pt.x);
+ write(fs, pt.y);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const string& name, const Point3_<_Tp>& pt )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, pt.x);
+ write(fs, pt.y);
+ write(fs, pt.z);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const string& name, const Size_<_Tp>& sz )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, sz.width);
+ write(fs, sz.height);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const string& name, const Complex<_Tp>& c )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, c.re);
+ write(fs, c.im);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const string& name, const Rect_<_Tp>& r )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, r.x);
+ write(fs, r.y);
+ write(fs, r.width);
+ write(fs, r.height);
+}
+
+template<typename _Tp, int cn> inline void write(FileStorage& fs, const string& name, const Vec<_Tp, cn>& v )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ for(int i = 0; i < cn; i++)
+ write(fs, v.val[i]);
+}
+
+template<typename _Tp> inline void write(FileStorage& fs, const string& name, const Scalar_<_Tp>& s )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, s.val[0]);
+ write(fs, s.val[1]);
+ write(fs, s.val[2]);
+ write(fs, s.val[3]);
+}
+
+inline void write(FileStorage& fs, const string& name, const Range& r )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+CV_NODE_FLOW);
+ write(fs, r.start);
+ write(fs, r.end);
+}
+
+template<typename _Tp, int numflag> class VecWriterProxy
+{
+public:
+ VecWriterProxy( FileStorage* _fs ) : fs(_fs) {}
+ void operator()(const vector<_Tp>& vec) const
+ {
+ size_t i, count = vec.size();
+ for( i = 0; i < count; i++ )
+ write( *fs, vec[i] );
+ }
+ FileStorage* fs;
+};
+
+template<typename _Tp> class VecWriterProxy<_Tp,1>
+{
+public:
+ VecWriterProxy( FileStorage* _fs ) : fs(_fs) {}
+ void operator()(const vector<_Tp>& vec) const
+ {
+ int _fmt = DataType<_Tp>::fmt;
+ char fmt[] = { (char)((_fmt>>8)+'1'), (char)_fmt, '\0' };
+ fs->writeRaw( string(fmt), !vec.empty() ? (uchar*)&vec[0] : 0, vec.size()*sizeof(_Tp) );
+ }
+ FileStorage* fs;
+};
+
+template<typename _Tp> static inline void write( FileStorage& fs, const vector<_Tp>& vec )
+{
+ VecWriterProxy<_Tp, DataType<_Tp>::fmt != 0> w(&fs);
+ w(vec);
+}
+
+template<typename _Tp> static inline void write( FileStorage& fs, const string& name,
+ const vector<_Tp>& vec )
+{
+ WriteStructContext ws(fs, name, CV_NODE_SEQ+(DataType<_Tp>::fmt != 0 ? CV_NODE_FLOW : 0));
+ write(fs, vec);
+}
+
+CV_EXPORTS_W void write( FileStorage& fs, const string& name, const Mat& value );
+CV_EXPORTS void write( FileStorage& fs, const string& name, const SparseMat& value );
+
+template<typename _Tp> static inline FileStorage& operator << (FileStorage& fs, const _Tp& value)
+{
+ if( !fs.isOpened() )
+ return fs;
+ if( fs.state == FileStorage::NAME_EXPECTED + FileStorage::INSIDE_MAP )
+ CV_Error( CV_StsError, "No element name has been given" );
+ write( fs, fs.elname, value );
+ if( fs.state & FileStorage::INSIDE_MAP )
+ fs.state = FileStorage::NAME_EXPECTED + FileStorage::INSIDE_MAP;
+ return fs;
+}
+
+CV_EXPORTS FileStorage& operator << (FileStorage& fs, const string& str);
+
+static inline FileStorage& operator << (FileStorage& fs, const char* str)
+{ return (fs << string(str)); }
+
+static inline FileStorage& operator << (FileStorage& fs, char* value)
+{ return (fs << string(value)); }
+
+inline FileNode::FileNode() : fs(0), node(0) {}
+inline FileNode::FileNode(const CvFileStorage* _fs, const CvFileNode* _node)
+ : fs(_fs), node(_node) {}
+
+inline FileNode::FileNode(const FileNode& _node) : fs(_node.fs), node(_node.node) {}
+
+inline int FileNode::type() const { return !node ? NONE : (node->tag & TYPE_MASK); }
+inline bool FileNode::empty() const { return node == 0; }
+inline bool FileNode::isNone() const { return type() == NONE; }
+inline bool FileNode::isSeq() const { return type() == SEQ; }
+inline bool FileNode::isMap() const { return type() == MAP; }
+inline bool FileNode::isInt() const { return type() == INT; }
+inline bool FileNode::isReal() const { return type() == REAL; }
+inline bool FileNode::isString() const { return type() == STR; }
+inline bool FileNode::isNamed() const { return !node ? false : (node->tag & NAMED) != 0; }
+inline size_t FileNode::size() const
+{
+ int t = type();
+ return t == MAP ? (size_t)((CvSet*)node->data.map)->active_count :
+ t == SEQ ? (size_t)node->data.seq->total : (size_t)!isNone();
+}
+
+inline CvFileNode* FileNode::operator *() { return (CvFileNode*)node; }
+inline const CvFileNode* FileNode::operator* () const { return node; }
+
+static inline void read(const FileNode& node, int& value, int default_value)
+{
+ value = !node.node ? default_value :
+ CV_NODE_IS_INT(node.node->tag) ? node.node->data.i :
+ CV_NODE_IS_REAL(node.node->tag) ? cvRound(node.node->data.f) : 0x7fffffff;
+}
+
+static inline void read(const FileNode& node, bool& value, bool default_value)
+{
+ int temp; read(node, temp, (int)default_value);
+ value = temp != 0;
+}
+
+static inline void read(const FileNode& node, uchar& value, uchar default_value)
+{
+ int temp; read(node, temp, (int)default_value);
+ value = saturate_cast<uchar>(temp);
+}
+
+static inline void read(const FileNode& node, schar& value, schar default_value)
+{
+ int temp; read(node, temp, (int)default_value);
+ value = saturate_cast<schar>(temp);
+}
+
+static inline void read(const FileNode& node, ushort& value, ushort default_value)
+{
+ int temp; read(node, temp, (int)default_value);
+ value = saturate_cast<ushort>(temp);
+}
+
+static inline void read(const FileNode& node, short& value, short default_value)
+{
+ int temp; read(node, temp, (int)default_value);
+ value = saturate_cast<short>(temp);
+}
+
+static inline void read(const FileNode& node, float& value, float default_value)
+{
+ value = !node.node ? default_value :
+ CV_NODE_IS_INT(node.node->tag) ? (float)node.node->data.i :
+ CV_NODE_IS_REAL(node.node->tag) ? (float)node.node->data.f : 1e30f;
+}
+
+static inline void read(const FileNode& node, double& value, double default_value)
+{
+ value = !node.node ? default_value :
+ CV_NODE_IS_INT(node.node->tag) ? (double)node.node->data.i :
+ CV_NODE_IS_REAL(node.node->tag) ? node.node->data.f : 1e300;
+}
+
+static inline void read(const FileNode& node, string& value, const string& default_value)
+{
+ value = !node.node ? default_value : CV_NODE_IS_STRING(node.node->tag) ? string(node.node->data.str.ptr) : string("");
+}
+
+template<typename _Tp> static inline void read(const FileNode& node, Point_<_Tp>& value, const Point_<_Tp>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != 2 ? default_value : Point_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]));
+}
+
+template<typename _Tp> static inline void read(const FileNode& node, Point3_<_Tp>& value, const Point3_<_Tp>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != 3 ? default_value : Point3_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]),
+ saturate_cast<_Tp>(temp[2]));
+}
+
+template<typename _Tp> static inline void read(const FileNode& node, Size_<_Tp>& value, const Size_<_Tp>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != 2 ? default_value : Size_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]));
+}
+
+template<typename _Tp> static inline void read(const FileNode& node, Complex<_Tp>& value, const Complex<_Tp>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != 2 ? default_value : Complex<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]));
+}
+
+template<typename _Tp> static inline void read(const FileNode& node, Rect_<_Tp>& value, const Rect_<_Tp>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != 4 ? default_value : Rect_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]),
+ saturate_cast<_Tp>(temp[2]), saturate_cast<_Tp>(temp[3]));
+}
+
+template<typename _Tp, int cn> static inline void read(const FileNode& node, Vec<_Tp, cn>& value, const Vec<_Tp, cn>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != cn ? default_value : Vec<_Tp, cn>(&temp[0]);
+}
+
+template<typename _Tp> static inline void read(const FileNode& node, Scalar_<_Tp>& value, const Scalar_<_Tp>& default_value)
+{
+ vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp;
+ value = temp.size() != 4 ? default_value : Scalar_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]),
+ saturate_cast<_Tp>(temp[2]), saturate_cast<_Tp>(temp[3]));
+}
+
+static inline void read(const FileNode& node, Range& value, const Range& default_value)
+{
+ Point2i temp(value.start, value.end); const Point2i default_temp = Point2i(default_value.start, default_value.end);
+ read(node, temp, default_temp);
+ value.start = temp.x; value.end = temp.y;
+}
+
+CV_EXPORTS_W void read(const FileNode& node, Mat& mat, const Mat& default_mat=Mat() );
+CV_EXPORTS void read(const FileNode& node, SparseMat& mat, const SparseMat& default_mat=SparseMat() );
+
+inline FileNode::operator int() const
+{
+ int value;
+ read(*this, value, 0);
+ return value;
+}
+inline FileNode::operator float() const
+{
+ float value;
+ read(*this, value, 0.f);
+ return value;
+}
+inline FileNode::operator double() const
+{
+ double value;
+ read(*this, value, 0.);
+ return value;
+}
+inline FileNode::operator string() const
+{
+ string value;
+ read(*this, value, value);
+ return value;
+}
+
+inline void FileNode::readRaw( const string& fmt, uchar* vec, size_t len ) const
+{
+ begin().readRaw( fmt, vec, len );
+}
+
+template<typename _Tp, int numflag> class VecReaderProxy
+{
+public:
+ VecReaderProxy( FileNodeIterator* _it ) : it(_it) {}
+ void operator()(vector<_Tp>& vec, size_t count) const
+ {
+ count = std::min(count, it->remaining);
+ vec.resize(count);
+ for( size_t i = 0; i < count; i++, ++(*it) )
+ read(**it, vec[i], _Tp());
+ }
+ FileNodeIterator* it;
+};
+
+template<typename _Tp> class VecReaderProxy<_Tp,1>
+{
+public:
+ VecReaderProxy( FileNodeIterator* _it ) : it(_it) {}
+ void operator()(vector<_Tp>& vec, size_t count) const
+ {
+ size_t remaining = it->remaining, cn = DataType<_Tp>::channels;
+ int _fmt = DataType<_Tp>::fmt;
+ char fmt[] = { (char)((_fmt>>8)+'1'), (char)_fmt, '\0' };
+ size_t remaining1 = remaining/cn;
+ count = count < remaining1 ? count : remaining1;
+ vec.resize(count);
+ it->readRaw( string(fmt), !vec.empty() ? (uchar*)&vec[0] : 0, count*sizeof(_Tp) );
+ }
+ FileNodeIterator* it;
+};
+
+template<typename _Tp> static inline void
+read( FileNodeIterator& it, vector<_Tp>& vec, size_t maxCount=(size_t)INT_MAX )
+{
+ VecReaderProxy<_Tp, DataType<_Tp>::fmt != 0> r(&it);
+ r(vec, maxCount);
+}
+
+template<typename _Tp> static inline void
+read( const FileNode& node, vector<_Tp>& vec, const vector<_Tp>& default_value=vector<_Tp>() )
+{
+ if(!node.node)
+ vec = default_value;
+ else
+ {
+ FileNodeIterator it = node.begin();
+ read( it, vec );
+ }
+}
+
+inline FileNodeIterator FileNode::begin() const
+{
+ return FileNodeIterator(fs, node);
+}
+
+inline FileNodeIterator FileNode::end() const
+{
+ return FileNodeIterator(fs, node, size());
+}
+
+inline FileNode FileNodeIterator::operator *() const
+{ return FileNode(fs, (const CvFileNode*)(void*)reader.ptr); }
+
+inline FileNode FileNodeIterator::operator ->() const
+{ return FileNode(fs, (const CvFileNode*)(void*)reader.ptr); }
+
+template<typename _Tp> static inline FileNodeIterator& operator >> (FileNodeIterator& it, _Tp& value)
+{ read( *it, value, _Tp()); return ++it; }
+
+template<typename _Tp> static inline
+FileNodeIterator& operator >> (FileNodeIterator& it, vector<_Tp>& vec)
+{
+ VecReaderProxy<_Tp, DataType<_Tp>::fmt != 0> r(&it);
+ r(vec, (size_t)INT_MAX);
+ return it;
+}
+
+template<typename _Tp> static inline void operator >> (const FileNode& n, _Tp& value)
+{ read( n, value, _Tp()); }
+
+template<typename _Tp> static inline void operator >> (const FileNode& n, vector<_Tp>& vec)
+{ FileNodeIterator it = n.begin(); it >> vec; }
+
+static inline bool operator == (const FileNodeIterator& it1, const FileNodeIterator& it2)
+{
+ return it1.fs == it2.fs && it1.container == it2.container &&
+ it1.reader.ptr == it2.reader.ptr && it1.remaining == it2.remaining;
+}
+
+static inline bool operator != (const FileNodeIterator& it1, const FileNodeIterator& it2)
+{
+ return !(it1 == it2);
+}
+
+static inline ptrdiff_t operator - (const FileNodeIterator& it1, const FileNodeIterator& it2)
+{
+ return it2.remaining - it1.remaining;
+}
+
+static inline bool operator < (const FileNodeIterator& it1, const FileNodeIterator& it2)
+{
+ return it1.remaining > it2.remaining;
+}
+
+inline FileNode FileStorage::getFirstTopLevelNode() const
+{
+ FileNode r = root();
+ FileNodeIterator it = r.begin();
+ return it != r.end() ? *it : FileNode();
+}
+
+//////////////////////////////////////// Various algorithms ////////////////////////////////////
+
+template<typename _Tp> static inline _Tp gcd(_Tp a, _Tp b)
+{
+ if( a < b )
+ std::swap(a, b);
+ while( b > 0 )
+ {
+ _Tp r = a % b;
+ a = b;
+ b = r;
+ }
+ return a;
+}
+
+/****************************************************************************************\
+
+ Generic implementation of QuickSort algorithm
+ Use it as: vector<_Tp> a; ... sort(a,<less_than_predictor>);
+
+ The current implementation was derived from *BSD system qsort():
+
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+
+\****************************************************************************************/
+
+template<typename _Tp, class _LT> void sort( vector<_Tp>& vec, _LT LT=_LT() )
+{
+ int isort_thresh = 7;
+ int sp = 0;
+
+ struct
+ {
+ _Tp *lb;
+ _Tp *ub;
+ } stack[48];
+
+ size_t total = vec.size();
+
+ if( total <= 1 )
+ return;
+
+ _Tp* arr = &vec[0];
+ stack[0].lb = arr;
+ stack[0].ub = arr + (total - 1);
+
+ while( sp >= 0 )
+ {
+ _Tp* left = stack[sp].lb;
+ _Tp* right = stack[sp--].ub;
+
+ for(;;)
+ {
+ int i, n = (int)(right - left) + 1, m;
+ _Tp* ptr;
+ _Tp* ptr2;
+
+ if( n <= isort_thresh )
+ {
+ insert_sort:
+ for( ptr = left + 1; ptr <= right; ptr++ )
+ {
+ for( ptr2 = ptr; ptr2 > left && LT(ptr2[0],ptr2[-1]); ptr2--)
+ std::swap( ptr2[0], ptr2[-1] );
+ }
+ break;
+ }
+ else
+ {
+ _Tp* left0;
+ _Tp* left1;
+ _Tp* right0;
+ _Tp* right1;
+ _Tp* pivot;
+ _Tp* a;
+ _Tp* b;
+ _Tp* c;
+ int swap_cnt = 0;
+
+ left0 = left;
+ right0 = right;
+ pivot = left + (n/2);
+
+ if( n > 40 )
+ {
+ int d = n / 8;
+ a = left, b = left + d, c = left + 2*d;
+ left = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));
+
+ a = pivot - d, b = pivot, c = pivot + d;
+ pivot = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));
+
+ a = right - 2*d, b = right - d, c = right;
+ right = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));
+ }
+
+ a = left, b = pivot, c = right;
+ pivot = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))
+ : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));
+ if( pivot != left0 )
+ {
+ std::swap( *pivot, *left0 );
+ pivot = left0;
+ }
+ left = left1 = left0 + 1;
+ right = right1 = right0;
+
+ for(;;)
+ {
+ while( left <= right && !LT(*pivot, *left) )
+ {
+ if( !LT(*left, *pivot) )
+ {
+ if( left > left1 )
+ std::swap( *left1, *left );
+ swap_cnt = 1;
+ left1++;
+ }
+ left++;
+ }
+
+ while( left <= right && !LT(*right, *pivot) )
+ {
+ if( !LT(*pivot, *right) )
+ {
+ if( right < right1 )
+ std::swap( *right1, *right );
+ swap_cnt = 1;
+ right1--;
+ }
+ right--;
+ }
+
+ if( left > right )
+ break;
+ std::swap( *left, *right );
+ swap_cnt = 1;
+ left++;
+ right--;
+ }
+
+ if( swap_cnt == 0 )
+ {
+ left = left0, right = right0;
+ goto insert_sort;
+ }
+
+ n = std::min( (int)(left1 - left0), (int)(left - left1) );
+ for( i = 0; i < n; i++ )
+ std::swap( left0[i], left[i-n] );
+
+ n = std::min( (int)(right0 - right1), (int)(right1 - right) );
+ for( i = 0; i < n; i++ )
+ std::swap( left[i], right0[i-n+1] );
+ n = (int)(left - left1);
+ m = (int)(right1 - right);
+ if( n > 1 )
+ {
+ if( m > 1 )
+ {
+ if( n > m )
+ {
+ stack[++sp].lb = left0;
+ stack[sp].ub = left0 + n - 1;
+ left = right0 - m + 1, right = right0;
+ }
+ else
+ {
+ stack[++sp].lb = right0 - m + 1;
+ stack[sp].ub = right0;
+ left = left0, right = left0 + n - 1;
+ }
+ }
+ else
+ left = left0, right = left0 + n - 1;
+ }
+ else if( m > 1 )
+ left = right0 - m + 1, right = right0;
+ else
+ break;
+ }
+ }
+ }
+}
+
+template<typename _Tp> class LessThan
+{
+public:
+ bool operator()(const _Tp& a, const _Tp& b) const { return a < b; }
+};
+
+template<typename _Tp> class GreaterEq
+{
+public:
+ bool operator()(const _Tp& a, const _Tp& b) const { return a >= b; }
+};
+
+template<typename _Tp> class LessThanIdx
+{
+public:
+ LessThanIdx( const _Tp* _arr ) : arr(_arr) {}
+ bool operator()(int a, int b) const { return arr[a] < arr[b]; }
+ const _Tp* arr;
+};
+
+template<typename _Tp> class GreaterEqIdx
+{
+public:
+ GreaterEqIdx( const _Tp* _arr ) : arr(_arr) {}
+ bool operator()(int a, int b) const { return arr[a] >= arr[b]; }
+ const _Tp* arr;
+};
+
+
+// This function splits the input sequence or set into one or more equivalence classes and
+// returns the vector of labels - 0-based class indexes for each element.
+// predicate(a,b) returns true if the two sequence elements certainly belong to the same class.
+//
+// The algorithm is described in "Introduction to Algorithms"
+// by Cormen, Leiserson and Rivest, the chapter "Data structures for disjoint sets"
+template<typename _Tp, class _EqPredicate> int
+partition( const vector<_Tp>& _vec, vector<int>& labels,
+ _EqPredicate predicate=_EqPredicate())
+{
+ int i, j, N = (int)_vec.size();
+ const _Tp* vec = &_vec[0];
+
+ const int PARENT=0;
+ const int RANK=1;
+
+ vector<int> _nodes(N*2);
+ int (*nodes)[2] = (int(*)[2])&_nodes[0];
+
+ // The first O(N) pass: create N single-vertex trees
+ for(i = 0; i < N; i++)
+ {
+ nodes[i][PARENT]=-1;
+ nodes[i][RANK] = 0;
+ }
+
+ // The main O(N^2) pass: merge connected components
+ for( i = 0; i < N; i++ )
+ {
+ int root = i;
+
+ // find root
+ while( nodes[root][PARENT] >= 0 )
+ root = nodes[root][PARENT];
+
+ for( j = 0; j < N; j++ )
+ {
+ if( i == j || !predicate(vec[i], vec[j]))
+ continue;
+ int root2 = j;
+
+ while( nodes[root2][PARENT] >= 0 )
+ root2 = nodes[root2][PARENT];
+
+ if( root2 != root )
+ {
+ // unite both trees
+ int rank = nodes[root][RANK], rank2 = nodes[root2][RANK];
+ if( rank > rank2 )
+ nodes[root2][PARENT] = root;
+ else
+ {
+ nodes[root][PARENT] = root2;
+ nodes[root2][RANK] += rank == rank2;
+ root = root2;
+ }
+ assert( nodes[root][PARENT] < 0 );
+
+ int k = j, parent;
+
+ // compress the path from node2 to root
+ while( (parent = nodes[k][PARENT]) >= 0 )
+ {
+ nodes[k][PARENT] = root;
+ k = parent;
+ }
+
+ // compress the path from node to root
+ k = i;
+ while( (parent = nodes[k][PARENT]) >= 0 )
+ {
+ nodes[k][PARENT] = root;
+ k = parent;
+ }
+ }
+ }
+ }
+
+ // Final O(N) pass: enumerate classes
+ labels.resize(N);
+ int nclasses = 0;
+
+ for( i = 0; i < N; i++ )
+ {
+ int root = i;
+ while( nodes[root][PARENT] >= 0 )
+ root = nodes[root][PARENT];
+ // re-use the rank as the class label
+ if( nodes[root][RANK] >= 0 )
+ nodes[root][RANK] = ~nclasses++;
+ labels[i] = ~nodes[root][RANK];
+ }
+
+ return nclasses;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+
+// bridge C++ => C Seq API
+CV_EXPORTS schar* seqPush( CvSeq* seq, const void* element=0);
+CV_EXPORTS schar* seqPushFront( CvSeq* seq, const void* element=0);
+CV_EXPORTS void seqPop( CvSeq* seq, void* element=0);
+CV_EXPORTS void seqPopFront( CvSeq* seq, void* element=0);
+CV_EXPORTS void seqPopMulti( CvSeq* seq, void* elements,
+ int count, int in_front=0 );
+CV_EXPORTS void seqRemove( CvSeq* seq, int index );
+CV_EXPORTS void clearSeq( CvSeq* seq );
+CV_EXPORTS schar* getSeqElem( const CvSeq* seq, int index );
+CV_EXPORTS void seqRemoveSlice( CvSeq* seq, CvSlice slice );
+CV_EXPORTS void seqInsertSlice( CvSeq* seq, int before_index, const CvArr* from_arr );
+
+template<typename _Tp> inline Seq<_Tp>::Seq() : seq(0) {}
+template<typename _Tp> inline Seq<_Tp>::Seq( const CvSeq* _seq ) : seq((CvSeq*)_seq)
+{
+ CV_Assert(!_seq || _seq->elem_size == sizeof(_Tp));
+}
+
+template<typename _Tp> inline Seq<_Tp>::Seq( MemStorage& storage,
+ int headerSize )
+{
+ CV_Assert(headerSize >= (int)sizeof(CvSeq));
+ seq = cvCreateSeq(DataType<_Tp>::type, headerSize, sizeof(_Tp), storage);
+}
+
+template<typename _Tp> inline _Tp& Seq<_Tp>::operator [](int idx)
+{ return *(_Tp*)getSeqElem(seq, idx); }
+
+template<typename _Tp> inline const _Tp& Seq<_Tp>::operator [](int idx) const
+{ return *(_Tp*)getSeqElem(seq, idx); }
+
+template<typename _Tp> inline SeqIterator<_Tp> Seq<_Tp>::begin() const
+{ return SeqIterator<_Tp>(*this); }
+
+template<typename _Tp> inline SeqIterator<_Tp> Seq<_Tp>::end() const
+{ return SeqIterator<_Tp>(*this, true); }
+
+template<typename _Tp> inline size_t Seq<_Tp>::size() const
+{ return seq ? seq->total : 0; }
+
+template<typename _Tp> inline int Seq<_Tp>::type() const
+{ return seq ? CV_MAT_TYPE(seq->flags) : 0; }
+
+template<typename _Tp> inline int Seq<_Tp>::depth() const
+{ return seq ? CV_MAT_DEPTH(seq->flags) : 0; }
+
+template<typename _Tp> inline int Seq<_Tp>::channels() const
+{ return seq ? CV_MAT_CN(seq->flags) : 0; }
+
+template<typename _Tp> inline size_t Seq<_Tp>::elemSize() const
+{ return seq ? seq->elem_size : 0; }
+
+template<typename _Tp> inline size_t Seq<_Tp>::index(const _Tp& elem) const
+{ return cvSeqElemIdx(seq, &elem); }
+
+template<typename _Tp> inline void Seq<_Tp>::push_back(const _Tp& elem)
+{ cvSeqPush(seq, &elem); }
+
+template<typename _Tp> inline void Seq<_Tp>::push_front(const _Tp& elem)
+{ cvSeqPushFront(seq, &elem); }
+
+template<typename _Tp> inline void Seq<_Tp>::push_back(const _Tp* elem, size_t count)
+{ cvSeqPushMulti(seq, elem, (int)count, 0); }
+
+template<typename _Tp> inline void Seq<_Tp>::push_front(const _Tp* elem, size_t count)
+{ cvSeqPushMulti(seq, elem, (int)count, 1); }
+
+template<typename _Tp> inline _Tp& Seq<_Tp>::back()
+{ return *(_Tp*)getSeqElem(seq, -1); }
+
+template<typename _Tp> inline const _Tp& Seq<_Tp>::back() const
+{ return *(const _Tp*)getSeqElem(seq, -1); }
+
+template<typename _Tp> inline _Tp& Seq<_Tp>::front()
+{ return *(_Tp*)getSeqElem(seq, 0); }
+
+template<typename _Tp> inline const _Tp& Seq<_Tp>::front() const
+{ return *(const _Tp*)getSeqElem(seq, 0); }
+
+template<typename _Tp> inline bool Seq<_Tp>::empty() const
+{ return !seq || seq->total == 0; }
+
+template<typename _Tp> inline void Seq<_Tp>::clear()
+{ if(seq) clearSeq(seq); }
+
+template<typename _Tp> inline void Seq<_Tp>::pop_back()
+{ seqPop(seq); }
+
+template<typename _Tp> inline void Seq<_Tp>::pop_front()
+{ seqPopFront(seq); }
+
+template<typename _Tp> inline void Seq<_Tp>::pop_back(_Tp* elem, size_t count)
+{ seqPopMulti(seq, elem, (int)count, 0); }
+
+template<typename _Tp> inline void Seq<_Tp>::pop_front(_Tp* elem, size_t count)
+{ seqPopMulti(seq, elem, (int)count, 1); }
+
+template<typename _Tp> inline void Seq<_Tp>::insert(int idx, const _Tp& elem)
+{ seqInsert(seq, idx, &elem); }
+
+template<typename _Tp> inline void Seq<_Tp>::insert(int idx, const _Tp* elems, size_t count)
+{
+ CvMat m = cvMat(1, count, DataType<_Tp>::type, elems);
+ seqInsertSlice(seq, idx, &m);
+}
+
+template<typename _Tp> inline void Seq<_Tp>::remove(int idx)
+{ seqRemove(seq, idx); }
+
+template<typename _Tp> inline void Seq<_Tp>::remove(const Range& r)
+{ seqRemoveSlice(seq, r); }
+
+template<typename _Tp> inline void Seq<_Tp>::copyTo(vector<_Tp>& vec, const Range& range) const
+{
+ size_t len = !seq ? 0 : range == Range::all() ? seq->total : range.end - range.start;
+ vec.resize(len);
+ if( seq && len )
+ cvCvtSeqToArray(seq, &vec[0], range);
+}
+
+template<typename _Tp> inline Seq<_Tp>::operator vector<_Tp>() const
+{
+ vector<_Tp> vec;
+ copyTo(vec);
+ return vec;
+}
+
+template<typename _Tp> inline SeqIterator<_Tp>::SeqIterator()
+{ memset(this, 0, sizeof(*this)); }
+
+template<typename _Tp> inline SeqIterator<_Tp>::SeqIterator(const Seq<_Tp>& _seq, bool seekEnd)
+{
+ cvStartReadSeq(_seq.seq, this);
+ index = seekEnd ? _seq.seq->total : 0;
+}
+
+template<typename _Tp> inline void SeqIterator<_Tp>::seek(size_t pos)
+{
+ cvSetSeqReaderPos(this, (int)pos, false);
+ index = pos;
+}
+
+template<typename _Tp> inline size_t SeqIterator<_Tp>::tell() const
+{ return index; }
+
+template<typename _Tp> inline _Tp& SeqIterator<_Tp>::operator *()
+{ return *(_Tp*)ptr; }
+
+template<typename _Tp> inline const _Tp& SeqIterator<_Tp>::operator *() const
+{ return *(const _Tp*)ptr; }
+
+template<typename _Tp> inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator ++()
+{
+ CV_NEXT_SEQ_ELEM(sizeof(_Tp), *this);
+ if( ++index >= seq->total*2 )
+ index = 0;
+ return *this;
+}
+
+template<typename _Tp> inline SeqIterator<_Tp> SeqIterator<_Tp>::operator ++(int) const
+{
+ SeqIterator<_Tp> it = *this;
+ ++*this;
+ return it;
+}
+
+template<typename _Tp> inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator --()
+{
+ CV_PREV_SEQ_ELEM(sizeof(_Tp), *this);
+ if( --index < 0 )
+ index = seq->total*2-1;
+ return *this;
+}
+
+template<typename _Tp> inline SeqIterator<_Tp> SeqIterator<_Tp>::operator --(int) const
+{
+ SeqIterator<_Tp> it = *this;
+ --*this;
+ return it;
+}
+
+template<typename _Tp> inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator +=(int delta)
+{
+ cvSetSeqReaderPos(this, delta, 1);
+ index += delta;
+ int n = seq->total*2;
+ if( index < 0 )
+ index += n;
+ if( index >= n )
+ index -= n;
+ return *this;
+}
+
+template<typename _Tp> inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator -=(int delta)
+{
+ return (*this += -delta);
+}
+
+template<typename _Tp> inline ptrdiff_t operator - (const SeqIterator<_Tp>& a,
+ const SeqIterator<_Tp>& b)
+{
+ ptrdiff_t delta = a.index - b.index, n = a.seq->total;
+#if defined(__QNX__)
+ // No long std::abs(long) in QNX
+ long absdelta = (delta < 0) ? -delta : delta;
+ if( absdelta > n )
+#else
+ if( std::abs(static_cast<long>(delta)) > n )
+#endif
+ delta += delta < 0 ? n : -n;
+
+ return delta;
+}
+
+template<typename _Tp> inline bool operator == (const SeqIterator<_Tp>& a,
+ const SeqIterator<_Tp>& b)
+{
+ return a.seq == b.seq && a.index == b.index;
+}
+
+template<typename _Tp> inline bool operator != (const SeqIterator<_Tp>& a,
+ const SeqIterator<_Tp>& b)
+{
+ return !(a == b);
+}
+
+
+template<typename _ClsName> struct RTTIImpl
+{
+public:
+ static int isInstance(const void* ptr)
+ {
+ static _ClsName dummy;
+ static void* dummyp = &dummy;
+ union
+ {
+ const void* p;
+ const void** pp;
+ } a, b;
+ a.p = dummyp;
+ b.p = ptr;
+ return *a.pp == *b.pp;
+ }
+ static void release(void** dbptr)
+ {
+ if(dbptr && *dbptr)
+ {
+ delete (_ClsName*)*dbptr;
+ *dbptr = 0;
+ }
+ }
+ static void* read(CvFileStorage* fs, CvFileNode* n)
+ {
+ FileNode fn(fs, n);
+ _ClsName* obj = new _ClsName;
+ if(obj->read(fn))
+ return obj;
+ delete obj;
+ return 0;
+ }
+
+ static void write(CvFileStorage* _fs, const char* name, const void* ptr, CvAttrList)
+ {
+ if(ptr && _fs)
+ {
+ FileStorage fs(_fs);
+ fs.fs.addref();
+ ((const _ClsName*)ptr)->write(fs, string(name));
+ }
+ }
+
+ static void* clone(const void* ptr)
+ {
+ if(!ptr)
+ return 0;
+ return new _ClsName(*(const _ClsName*)ptr);
+ }
+};
+
+
+class CV_EXPORTS Formatter
+{
+public:
+ virtual ~Formatter() {}
+ virtual void write(std::ostream& out, const Mat& m, const int* params=0, int nparams=0) const = 0;
+ virtual void write(std::ostream& out, const void* data, int nelems, int type,
+ const int* params=0, int nparams=0) const = 0;
+ static const Formatter* get(const char* fmt="");
+ static const Formatter* setDefault(const Formatter* fmt);
+};
+
+
+struct CV_EXPORTS Formatted
+{
+ Formatted(const Mat& m, const Formatter* fmt,
+ const vector<int>& params);
+ Formatted(const Mat& m, const Formatter* fmt,
+ const int* params=0);
+ Mat mtx;
+ const Formatter* fmt;
+ vector<int> params;
+};
+
+static inline Formatted format(const Mat& mtx, const char* fmt,
+ const vector<int>& params=vector<int>())
+{
+ return Formatted(mtx, Formatter::get(fmt), params);
+}
+
+template<typename _Tp> static inline Formatted format(const vector<Point_<_Tp> >& vec,
+ const char* fmt, const vector<int>& params=vector<int>())
+{
+ return Formatted(Mat(vec), Formatter::get(fmt), params);
+}
+
+template<typename _Tp> static inline Formatted format(const vector<Point3_<_Tp> >& vec,
+ const char* fmt, const vector<int>& params=vector<int>())
+{
+ return Formatted(Mat(vec), Formatter::get(fmt), params);
+}
+
+/** \brief prints Mat to the output stream in Matlab notation
+ * use like
+ @verbatim
+ Mat my_mat = Mat::eye(3,3,CV_32F);
+ std::cout << my_mat;
+ @endverbatim
+ */
+static inline std::ostream& operator << (std::ostream& out, const Mat& mtx)
+{
+ Formatter::get()->write(out, mtx);
+ return out;
+}
+
+/** \brief prints Mat to the output stream allows in the specified notation (see format)
+ * use like
+ @verbatim
+ Mat my_mat = Mat::eye(3,3,CV_32F);
+ std::cout << my_mat;
+ @endverbatim
+ */
+static inline std::ostream& operator << (std::ostream& out, const Formatted& fmtd)
+{
+ fmtd.fmt->write(out, fmtd.mtx);
+ return out;
+}
+
+
+template<typename _Tp> static inline std::ostream& operator << (std::ostream& out,
+ const vector<Point_<_Tp> >& vec)
+{
+ Formatter::get()->write(out, Mat(vec));
+ return out;
+}
+
+
+template<typename _Tp> static inline std::ostream& operator << (std::ostream& out,
+ const vector<Point3_<_Tp> >& vec)
+{
+ Formatter::get()->write(out, Mat(vec));
+ return out;
+}
+
+
+/** Writes a Matx to an output stream.
+ */
+template<typename _Tp, int m, int n> inline std::ostream& operator<<(std::ostream& out, const Matx<_Tp, m, n>& matx)
+{
+ out << cv::Mat(matx);
+ return out;
+}
+
+/** Writes a point to an output stream in Matlab notation
+ */
+template<typename _Tp> inline std::ostream& operator<<(std::ostream& out, const Point_<_Tp>& p)
+{
+ out << "[" << p.x << ", " << p.y << "]";
+ return out;
+}
+
+/** Writes a point to an output stream in Matlab notation
+ */
+template<typename _Tp> inline std::ostream& operator<<(std::ostream& out, const Point3_<_Tp>& p)
+{
+ out << "[" << p.x << ", " << p.y << ", " << p.z << "]";
+ return out;
+}
+
+/** Writes a Vec to an output stream. Format example : [10, 20, 30]
+ */
+template<typename _Tp, int n> inline std::ostream& operator<<(std::ostream& out, const Vec<_Tp, n>& vec)
+{
+ out << "[";
+
+ if(Vec<_Tp, n>::depth < CV_32F)
+ {
+ for (int i = 0; i < n - 1; ++i) {
+ out << (int)vec[i] << ", ";
+ }
+ out << (int)vec[n-1] << "]";
+ }
+ else
+ {
+ for (int i = 0; i < n - 1; ++i) {
+ out << vec[i] << ", ";
+ }
+ out << vec[n-1] << "]";
+ }
+
+ return out;
+}
+
+/** Writes a Size_ to an output stream. Format example : [640 x 480]
+ */
+template<typename _Tp> inline std::ostream& operator<<(std::ostream& out, const Size_<_Tp>& size)
+{
+ out << "[" << size.width << " x " << size.height << "]";
+ return out;
+}
+
+/** Writes a Rect_ to an output stream. Format example : [640 x 480 from (10, 20)]
+ */
+template<typename _Tp> inline std::ostream& operator<<(std::ostream& out, const Rect_<_Tp>& rect)
+{
+ out << "[" << rect.width << " x " << rect.height << " from (" << rect.x << ", " << rect.y << ")]";
+ return out;
+}
+
+
+template<typename _Tp> inline Ptr<_Tp> Algorithm::create(const string& name)
+{
+ return _create(name).ptr<_Tp>();
+}
+
+template<typename _Tp>
+inline void Algorithm::set(const char* _name, const Ptr<_Tp>& value)
+{
+ Ptr<Algorithm> algo_ptr = value. template ptr<cv::Algorithm>();
+ if (algo_ptr.empty()) {
+ CV_Error( CV_StsUnsupportedFormat, "unknown/unsupported Ptr type of the second parameter of the method Algorithm::set");
+ }
+ info()->set(this, _name, ParamType<Algorithm>::type, &algo_ptr);
+}
+
+template<typename _Tp>
+inline void Algorithm::set(const string& _name, const Ptr<_Tp>& value)
+{
+ this->set<_Tp>(_name.c_str(), value);
+}
+
+template<typename _Tp>
+inline void Algorithm::setAlgorithm(const char* _name, const Ptr<_Tp>& value)
+{
+ Ptr<Algorithm> algo_ptr = value. template ptr<cv::Algorithm>();
+ if (algo_ptr.empty()) {
+ CV_Error( CV_StsUnsupportedFormat, "unknown/unsupported Ptr type of the second parameter of the method Algorithm::set");
+ }
+ info()->set(this, _name, ParamType<Algorithm>::type, &algo_ptr);
+}
+
+template<typename _Tp>
+inline void Algorithm::setAlgorithm(const string& _name, const Ptr<_Tp>& value)
+{
+ this->set<_Tp>(_name.c_str(), value);
+}
+
+template<typename _Tp> inline typename ParamType<_Tp>::member_type Algorithm::get(const string& _name) const
+{
+ typename ParamType<_Tp>::member_type value;
+ info()->get(this, _name.c_str(), ParamType<_Tp>::type, &value);
+ return value;
+}
+
+template<typename _Tp> inline typename ParamType<_Tp>::member_type Algorithm::get(const char* _name) const
+{
+ typename ParamType<_Tp>::member_type value;
+ info()->get(this, _name, ParamType<_Tp>::type, &value);
+ return value;
+}
+
+template<typename _Tp, typename _Base> inline void AlgorithmInfo::addParam(Algorithm& algo, const char* parameter,
+ Ptr<_Tp>& value, bool readOnly, Ptr<_Tp> (Algorithm::*getter)(), void (Algorithm::*setter)(const Ptr<_Tp>&),
+ const string& help)
+{
+ //TODO: static assert: _Tp inherits from _Base
+ addParam_(algo, parameter, ParamType<_Base>::type, &value, readOnly,
+ (Algorithm::Getter)getter, (Algorithm::Setter)setter, help);
+}
+
+template<typename _Tp> inline void AlgorithmInfo::addParam(Algorithm& algo, const char* parameter,
+ Ptr<_Tp>& value, bool readOnly, Ptr<_Tp> (Algorithm::*getter)(), void (Algorithm::*setter)(const Ptr<_Tp>&),
+ const string& help)
+{
+ //TODO: static assert: _Tp inherits from Algorithm
+ addParam_(algo, parameter, ParamType<Algorithm>::type, &value, readOnly,
+ (Algorithm::Getter)getter, (Algorithm::Setter)setter, help);
+}
+
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+#endif // __cplusplus
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/types_c.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/types_c.h
new file mode 100644
index 00000000..c21cd2c7
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/types_c.h
@@ -0,0 +1,1923 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CORE_TYPES_H__
+#define __OPENCV_CORE_TYPES_H__
+
+#if !defined _CRT_SECURE_NO_DEPRECATE && defined _MSC_VER
+# if _MSC_VER > 1300
+# define _CRT_SECURE_NO_DEPRECATE /* to avoid multiple Visual Studio 2005 warnings */
+# endif
+#endif
+
+
+#ifndef SKIP_INCLUDES
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <float.h>
+
+#if !defined _MSC_VER && !defined __BORLANDC__
+# include <stdint.h>
+#endif
+
+#if defined __ICL
+# define CV_ICC __ICL
+#elif defined __ICC
+# define CV_ICC __ICC
+#elif defined __ECL
+# define CV_ICC __ECL
+#elif defined __ECC
+# define CV_ICC __ECC
+#elif defined __INTEL_COMPILER
+# define CV_ICC __INTEL_COMPILER
+#endif
+
+#if defined CV_ICC && !defined CV_ENABLE_UNROLLED
+# define CV_ENABLE_UNROLLED 0
+#else
+# define CV_ENABLE_UNROLLED 1
+#endif
+
+#if (defined _M_X64 && defined _MSC_VER && _MSC_VER >= 1400) || (__GNUC__ >= 4 && defined __x86_64__)
+# if defined WIN32
+# include <intrin.h>
+# endif
+# if defined __SSE2__ || !defined __GNUC__
+# include <emmintrin.h>
+# endif
+#endif
+
+#if defined __BORLANDC__
+# include <fastmath.h>
+#else
+# include <math.h>
+#endif
+
+#ifdef HAVE_IPL
+# ifndef __IPL_H__
+# if defined WIN32 || defined _WIN32
+# include <ipl.h>
+# else
+# include <ipl/ipl.h>
+# endif
+# endif
+#elif defined __IPL_H__
+# define HAVE_IPL
+#endif
+
+#endif // SKIP_INCLUDES
+
+#if defined WIN32 || defined _WIN32
+# define CV_CDECL __cdecl
+# define CV_STDCALL __stdcall
+#else
+# define CV_CDECL
+# define CV_STDCALL
+#endif
+
+#ifndef CV_EXTERN_C
+# ifdef __cplusplus
+# define CV_EXTERN_C extern "C"
+# define CV_DEFAULT(val) = val
+# else
+# define CV_EXTERN_C
+# define CV_DEFAULT(val)
+# endif
+#endif
+
+#ifndef CV_EXTERN_C_FUNCPTR
+# ifdef __cplusplus
+# define CV_EXTERN_C_FUNCPTR(x) extern "C" { typedef x; }
+# else
+# define CV_EXTERN_C_FUNCPTR(x) typedef x
+# endif
+#endif
+
+#ifndef CV_INLINE
+# if defined __cplusplus
+# define CV_INLINE inline
+# elif defined _MSC_VER
+# define CV_INLINE __inline
+# else
+# define CV_INLINE static
+# endif
+#endif /* CV_INLINE */
+
+#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS
+# define CV_EXPORTS __declspec(dllexport)
+#else
+# define CV_EXPORTS
+#endif
+
+#ifndef CVAPI
+# define CVAPI(rettype) CV_EXTERN_C CV_EXPORTS rettype CV_CDECL
+#endif
+
+#if defined _MSC_VER || defined __BORLANDC__
+ typedef __int64 int64;
+ typedef unsigned __int64 uint64;
+# define CV_BIG_INT(n) n##I64
+# define CV_BIG_UINT(n) n##UI64
+#else
+ typedef int64_t int64;
+ typedef uint64_t uint64;
+# define CV_BIG_INT(n) n##LL
+# define CV_BIG_UINT(n) n##ULL
+#endif
+
+#ifndef HAVE_IPL
+ typedef unsigned char uchar;
+ typedef unsigned short ushort;
+#endif
+
+typedef signed char schar;
+
+/* special informative macros for wrapper generators */
+#define CV_CARRAY(counter)
+#define CV_CUSTOM_CARRAY(args)
+#define CV_EXPORTS_W CV_EXPORTS
+#define CV_EXPORTS_W_SIMPLE CV_EXPORTS
+#define CV_EXPORTS_AS(synonym) CV_EXPORTS
+#define CV_EXPORTS_W_MAP CV_EXPORTS
+#define CV_IN_OUT
+#define CV_OUT
+#define CV_PROP
+#define CV_PROP_RW
+#define CV_WRAP
+#define CV_WRAP_AS(synonym)
+#define CV_WRAP_DEFAULT(value)
+
+/* CvArr* is used to pass arbitrary
+ * array-like data structures
+ * into functions where the particular
+ * array type is recognized at runtime:
+ */
+typedef void CvArr;
+
+typedef union Cv32suf
+{
+ int i;
+ unsigned u;
+ float f;
+}
+Cv32suf;
+
+typedef union Cv64suf
+{
+ int64 i;
+ uint64 u;
+ double f;
+}
+Cv64suf;
+
+typedef int CVStatus;
+
+enum {
+ CV_StsOk= 0, /* everithing is ok */
+ CV_StsBackTrace= -1, /* pseudo error for back trace */
+ CV_StsError= -2, /* unknown /unspecified error */
+ CV_StsInternal= -3, /* internal error (bad state) */
+ CV_StsNoMem= -4, /* insufficient memory */
+ CV_StsBadArg= -5, /* function arg/param is bad */
+ CV_StsBadFunc= -6, /* unsupported function */
+ CV_StsNoConv= -7, /* iter. didn't converge */
+ CV_StsAutoTrace= -8, /* tracing */
+ CV_HeaderIsNull= -9, /* image header is NULL */
+ CV_BadImageSize= -10, /* image size is invalid */
+ CV_BadOffset= -11, /* offset is invalid */
+ CV_BadDataPtr= -12, /**/
+ CV_BadStep= -13, /**/
+ CV_BadModelOrChSeq= -14, /**/
+ CV_BadNumChannels= -15, /**/
+ CV_BadNumChannel1U= -16, /**/
+ CV_BadDepth= -17, /**/
+ CV_BadAlphaChannel= -18, /**/
+ CV_BadOrder= -19, /**/
+ CV_BadOrigin= -20, /**/
+ CV_BadAlign= -21, /**/
+ CV_BadCallBack= -22, /**/
+ CV_BadTileSize= -23, /**/
+ CV_BadCOI= -24, /**/
+ CV_BadROISize= -25, /**/
+ CV_MaskIsTiled= -26, /**/
+ CV_StsNullPtr= -27, /* null pointer */
+ CV_StsVecLengthErr= -28, /* incorrect vector length */
+ CV_StsFilterStructContentErr= -29, /* incorr. filter structure content */
+ CV_StsKernelStructContentErr= -30, /* incorr. transform kernel content */
+ CV_StsFilterOffsetErr= -31, /* incorrect filter offset value */
+ CV_StsBadSize= -201, /* the input/output structure size is incorrect */
+ CV_StsDivByZero= -202, /* division by zero */
+ CV_StsInplaceNotSupported= -203, /* in-place operation is not supported */
+ CV_StsObjectNotFound= -204, /* request can't be completed */
+ CV_StsUnmatchedFormats= -205, /* formats of input/output arrays differ */
+ CV_StsBadFlag= -206, /* flag is wrong or not supported */
+ CV_StsBadPoint= -207, /* bad CvPoint */
+ CV_StsBadMask= -208, /* bad format of mask (neither 8uC1 nor 8sC1)*/
+ CV_StsUnmatchedSizes= -209, /* sizes of input/output structures do not match */
+ CV_StsUnsupportedFormat= -210, /* the data format/type is not supported by the function*/
+ CV_StsOutOfRange= -211, /* some of parameters are out of range */
+ CV_StsParseError= -212, /* invalid syntax/structure of the parsed file */
+ CV_StsNotImplemented= -213, /* the requested function/feature is not implemented */
+ CV_StsBadMemBlock= -214, /* an allocated block has been corrupted */
+ CV_StsAssert= -215, /* assertion failed */
+ CV_GpuNotSupported= -216,
+ CV_GpuApiCallError= -217,
+ CV_OpenGlNotSupported= -218,
+ CV_OpenGlApiCallError= -219,
+ CV_OpenCLDoubleNotSupported= -220,
+ CV_OpenCLInitError= -221,
+ CV_OpenCLNoAMDBlasFft= -222
+};
+
+/****************************************************************************************\
+* Common macros and inline functions *
+\****************************************************************************************/
+
+#ifdef HAVE_TEGRA_OPTIMIZATION
+# include "tegra_round.hpp"
+#endif
+
+#define CV_PI 3.1415926535897932384626433832795
+#define CV_LOG2 0.69314718055994530941723212145818
+
+#define CV_SWAP(a,b,t) ((t) = (a), (a) = (b), (b) = (t))
+
+#ifndef MIN
+# define MIN(a,b) ((a) > (b) ? (b) : (a))
+#endif
+
+#ifndef MAX
+# define MAX(a,b) ((a) < (b) ? (b) : (a))
+#endif
+
+/* min & max without jumps */
+#define CV_IMIN(a, b) ((a) ^ (((a)^(b)) & (((a) < (b)) - 1)))
+
+#define CV_IMAX(a, b) ((a) ^ (((a)^(b)) & (((a) > (b)) - 1)))
+
+/* absolute value without jumps */
+#ifndef __cplusplus
+# define CV_IABS(a) (((a) ^ ((a) < 0 ? -1 : 0)) - ((a) < 0 ? -1 : 0))
+#else
+# define CV_IABS(a) abs(a)
+#endif
+#define CV_CMP(a,b) (((a) > (b)) - ((a) < (b)))
+#define CV_SIGN(a) CV_CMP((a),0)
+
+#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__)
+# define CV_VFP 1
+#else
+# define CV_VFP 0
+#endif
+
+
+#if CV_VFP
+// 1. general scheme
+#define ARM_ROUND(_value, _asm_string) \
+ int res; \
+ float temp; \
+ (void)temp; \
+ asm(_asm_string : [res] "=r" (res), [temp] "=w" (temp) : [value] "w" (_value)); \
+ return res;
+// 2. version for double
+#ifdef __clang__
+#define ARM_ROUND_DBL(value) ARM_ROUND(value, "vcvtr.s32.f64 %[temp], %[value] \n vmov %[res], %[temp]")
+#else
+#define ARM_ROUND_DBL(value) ARM_ROUND(value, "vcvtr.s32.f64 %[temp], %P[value] \n vmov %[res], %[temp]")
+#endif
+// 3. version for float
+#define ARM_ROUND_FLT(value) ARM_ROUND(value, "vcvtr.s32.f32 %[temp], %[value]\n vmov %[res], %[temp]")
+#endif // CV_VFP
+
+CV_INLINE int cvRound( double value )
+{
+#if (defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ && defined __SSE2__ && !defined __APPLE__)
+ __m128d t = _mm_set_sd( value );
+ return _mm_cvtsd_si32(t);
+#elif defined _MSC_VER && defined _M_IX86
+ int t;
+ __asm
+ {
+ fld value;
+ fistp t;
+ }
+ return t;
+#elif defined _MSC_VER && defined _M_ARM && defined HAVE_TEGRA_OPTIMIZATION
+ TEGRA_ROUND(value);
+#elif defined CV_ICC || defined __GNUC__
+# ifdef HAVE_TEGRA_OPTIMIZATION
+ TEGRA_ROUND(value);
+# elif CV_VFP
+ ARM_ROUND_DBL(value)
+# else
+ return (int)lrint(value);
+# endif
+#else
+ double intpart, fractpart;
+ fractpart = modf(value, &intpart);
+ if ((fabs(fractpart) != 0.5) || ((((int)intpart) % 2) != 0))
+ return (int)(value + (value >= 0 ? 0.5 : -0.5));
+ else
+ return (int)intpart;
+#endif
+}
+
+#if defined __SSE2__ || (defined _M_IX86_FP && 2 == _M_IX86_FP)
+# include "emmintrin.h"
+#endif
+
+CV_INLINE int cvFloor( double value )
+{
+#if defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__ && !defined __APPLE__)
+ __m128d t = _mm_set_sd( value );
+ int i = _mm_cvtsd_si32(t);
+ return i - _mm_movemask_pd(_mm_cmplt_sd(t, _mm_cvtsi32_sd(t,i)));
+#elif defined __GNUC__
+ int i = (int)value;
+ return i - (i > value);
+#else
+ int i = cvRound(value);
+ float diff = (float)(value - i);
+ return i - (diff < 0);
+#endif
+}
+
+
+CV_INLINE int cvCeil( double value )
+{
+#if defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__&& !defined __APPLE__)
+ __m128d t = _mm_set_sd( value );
+ int i = _mm_cvtsd_si32(t);
+ return i + _mm_movemask_pd(_mm_cmplt_sd(_mm_cvtsi32_sd(t,i), t));
+#elif defined __GNUC__
+ int i = (int)value;
+ return i + (i < value);
+#else
+ int i = cvRound(value);
+ float diff = (float)(i - value);
+ return i + (diff < 0);
+#endif
+}
+
+#define cvInvSqrt(value) ((float)(1./sqrt(value)))
+#define cvSqrt(value) ((float)sqrt(value))
+
+CV_INLINE int cvIsNaN( double value )
+{
+ Cv64suf ieee754;
+ ieee754.f = value;
+ return ((unsigned)(ieee754.u >> 32) & 0x7fffffff) +
+ ((unsigned)ieee754.u != 0) > 0x7ff00000;
+}
+
+
+CV_INLINE int cvIsInf( double value )
+{
+ Cv64suf ieee754;
+ ieee754.f = value;
+ return ((unsigned)(ieee754.u >> 32) & 0x7fffffff) == 0x7ff00000 &&
+ (unsigned)ieee754.u == 0;
+}
+
+
+/*************** Random number generation *******************/
+
+typedef uint64 CvRNG;
+
+#define CV_RNG_COEFF 4164903690U
+
+CV_INLINE CvRNG cvRNG( int64 seed CV_DEFAULT(-1))
+{
+ CvRNG rng = seed ? (uint64)seed : (uint64)(int64)-1;
+ return rng;
+}
+
+/* Return random 32-bit unsigned integer: */
+CV_INLINE unsigned cvRandInt( CvRNG* rng )
+{
+ uint64 temp = *rng;
+ temp = (uint64)(unsigned)temp*CV_RNG_COEFF + (temp >> 32);
+ *rng = temp;
+ return (unsigned)temp;
+}
+
+/* Returns random floating-point number between 0 and 1: */
+CV_INLINE double cvRandReal( CvRNG* rng )
+{
+ return cvRandInt(rng)*2.3283064365386962890625e-10 /* 2^-32 */;
+}
+
+/****************************************************************************************\
+* Image type (IplImage) *
+\****************************************************************************************/
+
+#ifndef HAVE_IPL
+
+/*
+ * The following definitions (until #endif)
+ * is an extract from IPL headers.
+ * Copyright (c) 1995 Intel Corporation.
+ */
+#define IPL_DEPTH_SIGN 0x80000000
+
+#define IPL_DEPTH_1U 1
+#define IPL_DEPTH_8U 8
+#define IPL_DEPTH_16U 16
+#define IPL_DEPTH_32F 32
+
+#define IPL_DEPTH_8S (IPL_DEPTH_SIGN| 8)
+#define IPL_DEPTH_16S (IPL_DEPTH_SIGN|16)
+#define IPL_DEPTH_32S (IPL_DEPTH_SIGN|32)
+
+#define IPL_DATA_ORDER_PIXEL 0
+#define IPL_DATA_ORDER_PLANE 1
+
+#define IPL_ORIGIN_TL 0
+#define IPL_ORIGIN_BL 1
+
+#define IPL_ALIGN_4BYTES 4
+#define IPL_ALIGN_8BYTES 8
+#define IPL_ALIGN_16BYTES 16
+#define IPL_ALIGN_32BYTES 32
+
+#define IPL_ALIGN_DWORD IPL_ALIGN_4BYTES
+#define IPL_ALIGN_QWORD IPL_ALIGN_8BYTES
+
+#define IPL_BORDER_CONSTANT 0
+#define IPL_BORDER_REPLICATE 1
+#define IPL_BORDER_REFLECT 2
+#define IPL_BORDER_WRAP 3
+
+typedef struct _IplImage
+{
+ int nSize; /* sizeof(IplImage) */
+ int ID; /* version (=0)*/
+ int nChannels; /* Most of OpenCV functions support 1,2,3 or 4 channels */
+ int alphaChannel; /* Ignored by OpenCV */
+ int depth; /* Pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S,
+ IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported. */
+ char colorModel[4]; /* Ignored by OpenCV */
+ char channelSeq[4]; /* ditto */
+ int dataOrder; /* 0 - interleaved color channels, 1 - separate color channels.
+ cvCreateImage can only create interleaved images */
+ int origin; /* 0 - top-left origin,
+ 1 - bottom-left origin (Windows bitmaps style). */
+ int align; /* Alignment of image rows (4 or 8).
+ OpenCV ignores it and uses widthStep instead. */
+ int width; /* Image width in pixels. */
+ int height; /* Image height in pixels. */
+ struct _IplROI *roi; /* Image ROI. If NULL, the whole image is selected. */
+ struct _IplImage *maskROI; /* Must be NULL. */
+ void *imageId; /* " " */
+ struct _IplTileInfo *tileInfo; /* " " */
+ int imageSize; /* Image data size in bytes
+ (==image->height*image->widthStep
+ in case of interleaved data)*/
+ char *imageData; /* Pointer to aligned image data. */
+ int widthStep; /* Size of aligned image row in bytes. */
+ int BorderMode[4]; /* Ignored by OpenCV. */
+ int BorderConst[4]; /* Ditto. */
+ char *imageDataOrigin; /* Pointer to very origin of image data
+ (not necessarily aligned) -
+ needed for correct deallocation */
+}
+IplImage;
+
+typedef struct _IplTileInfo IplTileInfo;
+
+typedef struct _IplROI
+{
+ int coi; /* 0 - no COI (all channels are selected), 1 - 0th channel is selected ...*/
+ int xOffset;
+ int yOffset;
+ int width;
+ int height;
+}
+IplROI;
+
+typedef struct _IplConvKernel
+{
+ int nCols;
+ int nRows;
+ int anchorX;
+ int anchorY;
+ int *values;
+ int nShiftR;
+}
+IplConvKernel;
+
+typedef struct _IplConvKernelFP
+{
+ int nCols;
+ int nRows;
+ int anchorX;
+ int anchorY;
+ float *values;
+}
+IplConvKernelFP;
+
+#define IPL_IMAGE_HEADER 1
+#define IPL_IMAGE_DATA 2
+#define IPL_IMAGE_ROI 4
+
+#endif/*HAVE_IPL*/
+
+/* extra border mode */
+#define IPL_BORDER_REFLECT_101 4
+#define IPL_BORDER_TRANSPARENT 5
+
+#define IPL_IMAGE_MAGIC_VAL ((int)sizeof(IplImage))
+#define CV_TYPE_NAME_IMAGE "opencv-image"
+
+#define CV_IS_IMAGE_HDR(img) \
+ ((img) != NULL && ((const IplImage*)(img))->nSize == sizeof(IplImage))
+
+#define CV_IS_IMAGE(img) \
+ (CV_IS_IMAGE_HDR(img) && ((IplImage*)img)->imageData != NULL)
+
+/* for storing double-precision
+ floating point data in IplImage's */
+#define IPL_DEPTH_64F 64
+
+/* get reference to pixel at (col,row),
+ for multi-channel images (col) should be multiplied by number of channels */
+#define CV_IMAGE_ELEM( image, elemtype, row, col ) \
+ (((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)])
+
+/****************************************************************************************\
+* Matrix type (CvMat) *
+\****************************************************************************************/
+
+#define CV_CN_MAX 512
+#define CV_CN_SHIFT 3
+#define CV_DEPTH_MAX (1 << CV_CN_SHIFT)
+
+#define CV_8U 0
+#define CV_8S 1
+#define CV_16U 2
+#define CV_16S 3
+#define CV_32S 4
+#define CV_32F 5
+#define CV_64F 6
+#define CV_USRTYPE1 7
+
+#define CV_MAT_DEPTH_MASK (CV_DEPTH_MAX - 1)
+#define CV_MAT_DEPTH(flags) ((flags) & CV_MAT_DEPTH_MASK)
+
+#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))
+#define CV_MAKE_TYPE CV_MAKETYPE
+
+#define CV_8UC1 CV_MAKETYPE(CV_8U,1)
+#define CV_8UC2 CV_MAKETYPE(CV_8U,2)
+#define CV_8UC3 CV_MAKETYPE(CV_8U,3)
+#define CV_8UC4 CV_MAKETYPE(CV_8U,4)
+#define CV_8UC(n) CV_MAKETYPE(CV_8U,(n))
+
+#define CV_8SC1 CV_MAKETYPE(CV_8S,1)
+#define CV_8SC2 CV_MAKETYPE(CV_8S,2)
+#define CV_8SC3 CV_MAKETYPE(CV_8S,3)
+#define CV_8SC4 CV_MAKETYPE(CV_8S,4)
+#define CV_8SC(n) CV_MAKETYPE(CV_8S,(n))
+
+#define CV_16UC1 CV_MAKETYPE(CV_16U,1)
+#define CV_16UC2 CV_MAKETYPE(CV_16U,2)
+#define CV_16UC3 CV_MAKETYPE(CV_16U,3)
+#define CV_16UC4 CV_MAKETYPE(CV_16U,4)
+#define CV_16UC(n) CV_MAKETYPE(CV_16U,(n))
+
+#define CV_16SC1 CV_MAKETYPE(CV_16S,1)
+#define CV_16SC2 CV_MAKETYPE(CV_16S,2)
+#define CV_16SC3 CV_MAKETYPE(CV_16S,3)
+#define CV_16SC4 CV_MAKETYPE(CV_16S,4)
+#define CV_16SC(n) CV_MAKETYPE(CV_16S,(n))
+
+#define CV_32SC1 CV_MAKETYPE(CV_32S,1)
+#define CV_32SC2 CV_MAKETYPE(CV_32S,2)
+#define CV_32SC3 CV_MAKETYPE(CV_32S,3)
+#define CV_32SC4 CV_MAKETYPE(CV_32S,4)
+#define CV_32SC(n) CV_MAKETYPE(CV_32S,(n))
+
+#define CV_32FC1 CV_MAKETYPE(CV_32F,1)
+#define CV_32FC2 CV_MAKETYPE(CV_32F,2)
+#define CV_32FC3 CV_MAKETYPE(CV_32F,3)
+#define CV_32FC4 CV_MAKETYPE(CV_32F,4)
+#define CV_32FC(n) CV_MAKETYPE(CV_32F,(n))
+
+#define CV_64FC1 CV_MAKETYPE(CV_64F,1)
+#define CV_64FC2 CV_MAKETYPE(CV_64F,2)
+#define CV_64FC3 CV_MAKETYPE(CV_64F,3)
+#define CV_64FC4 CV_MAKETYPE(CV_64F,4)
+#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))
+
+#define CV_AUTO_STEP 0x7fffffff
+#define CV_WHOLE_ARR cvSlice( 0, 0x3fffffff )
+
+#define CV_MAT_CN_MASK ((CV_CN_MAX - 1) << CV_CN_SHIFT)
+#define CV_MAT_CN(flags) ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1)
+#define CV_MAT_TYPE_MASK (CV_DEPTH_MAX*CV_CN_MAX - 1)
+#define CV_MAT_TYPE(flags) ((flags) & CV_MAT_TYPE_MASK)
+#define CV_MAT_CONT_FLAG_SHIFT 14
+#define CV_MAT_CONT_FLAG (1 << CV_MAT_CONT_FLAG_SHIFT)
+#define CV_IS_MAT_CONT(flags) ((flags) & CV_MAT_CONT_FLAG)
+#define CV_IS_CONT_MAT CV_IS_MAT_CONT
+#define CV_SUBMAT_FLAG_SHIFT 15
+#define CV_SUBMAT_FLAG (1 << CV_SUBMAT_FLAG_SHIFT)
+#define CV_IS_SUBMAT(flags) ((flags) & CV_MAT_SUBMAT_FLAG)
+
+#define CV_MAGIC_MASK 0xFFFF0000
+#define CV_MAT_MAGIC_VAL 0x42420000
+#define CV_TYPE_NAME_MAT "opencv-matrix"
+
+typedef struct CvMat
+{
+ int type;
+ int step;
+
+ /* for internal use only */
+ int* refcount;
+ int hdr_refcount;
+
+ union
+ {
+ uchar* ptr;
+ short* s;
+ int* i;
+ float* fl;
+ double* db;
+ } data;
+
+#ifdef __cplusplus
+ union
+ {
+ int rows;
+ int height;
+ };
+
+ union
+ {
+ int cols;
+ int width;
+ };
+#else
+ int rows;
+ int cols;
+#endif
+
+}
+CvMat;
+
+
+#define CV_IS_MAT_HDR(mat) \
+ ((mat) != NULL && \
+ (((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \
+ ((const CvMat*)(mat))->cols > 0 && ((const CvMat*)(mat))->rows > 0)
+
+#define CV_IS_MAT_HDR_Z(mat) \
+ ((mat) != NULL && \
+ (((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \
+ ((const CvMat*)(mat))->cols >= 0 && ((const CvMat*)(mat))->rows >= 0)
+
+#define CV_IS_MAT(mat) \
+ (CV_IS_MAT_HDR(mat) && ((const CvMat*)(mat))->data.ptr != NULL)
+
+#define CV_IS_MASK_ARR(mat) \
+ (((mat)->type & (CV_MAT_TYPE_MASK & ~CV_8SC1)) == 0)
+
+#define CV_ARE_TYPES_EQ(mat1, mat2) \
+ ((((mat1)->type ^ (mat2)->type) & CV_MAT_TYPE_MASK) == 0)
+
+#define CV_ARE_CNS_EQ(mat1, mat2) \
+ ((((mat1)->type ^ (mat2)->type) & CV_MAT_CN_MASK) == 0)
+
+#define CV_ARE_DEPTHS_EQ(mat1, mat2) \
+ ((((mat1)->type ^ (mat2)->type) & CV_MAT_DEPTH_MASK) == 0)
+
+#define CV_ARE_SIZES_EQ(mat1, mat2) \
+ ((mat1)->rows == (mat2)->rows && (mat1)->cols == (mat2)->cols)
+
+#define CV_IS_MAT_CONST(mat) \
+ (((mat)->rows|(mat)->cols) == 1)
+
+/* Size of each channel item,
+ 0x124489 = 1000 0100 0100 0010 0010 0001 0001 ~ array of sizeof(arr_type_elem) */
+#define CV_ELEM_SIZE1(type) \
+ ((((sizeof(size_t)<<28)|0x8442211) >> CV_MAT_DEPTH(type)*4) & 15)
+
+/* 0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) */
+#define CV_ELEM_SIZE(type) \
+ (CV_MAT_CN(type) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3))
+
+#define IPL2CV_DEPTH(depth) \
+ ((((CV_8U)+(CV_16U<<4)+(CV_32F<<8)+(CV_64F<<16)+(CV_8S<<20)+ \
+ (CV_16S<<24)+(CV_32S<<28)) >> ((((depth) & 0xF0) >> 2) + \
+ (((depth) & IPL_DEPTH_SIGN) ? 20 : 0))) & 15)
+
+/* Inline constructor. No data is allocated internally!!!
+ * (Use together with cvCreateData, or use cvCreateMat instead to
+ * get a matrix with allocated data):
+ */
+CV_INLINE CvMat cvMat( int rows, int cols, int type, void* data CV_DEFAULT(NULL))
+{
+ CvMat m;
+
+ assert( (unsigned)CV_MAT_DEPTH(type) <= CV_64F );
+ type = CV_MAT_TYPE(type);
+ m.type = CV_MAT_MAGIC_VAL | CV_MAT_CONT_FLAG | type;
+ m.cols = cols;
+ m.rows = rows;
+ m.step = m.cols*CV_ELEM_SIZE(type);
+ m.data.ptr = (uchar*)data;
+ m.refcount = NULL;
+ m.hdr_refcount = 0;
+
+ return m;
+}
+
+
+#define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size ) \
+ (assert( (unsigned)(row) < (unsigned)(mat).rows && \
+ (unsigned)(col) < (unsigned)(mat).cols ), \
+ (mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))
+
+#define CV_MAT_ELEM_PTR( mat, row, col ) \
+ CV_MAT_ELEM_PTR_FAST( mat, row, col, CV_ELEM_SIZE((mat).type) )
+
+#define CV_MAT_ELEM( mat, elemtype, row, col ) \
+ (*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))
+
+
+CV_INLINE double cvmGet( const CvMat* mat, int row, int col )
+{
+ int type;
+
+ type = CV_MAT_TYPE(mat->type);
+ assert( (unsigned)row < (unsigned)mat->rows &&
+ (unsigned)col < (unsigned)mat->cols );
+
+ if( type == CV_32FC1 )
+ return ((float*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col];
+ else
+ {
+ assert( type == CV_64FC1 );
+ return ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col];
+ }
+}
+
+
+CV_INLINE void cvmSet( CvMat* mat, int row, int col, double value )
+{
+ int type;
+ type = CV_MAT_TYPE(mat->type);
+ assert( (unsigned)row < (unsigned)mat->rows &&
+ (unsigned)col < (unsigned)mat->cols );
+
+ if( type == CV_32FC1 )
+ ((float*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (float)value;
+ else
+ {
+ assert( type == CV_64FC1 );
+ ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = value;
+ }
+}
+
+
+CV_INLINE int cvIplDepth( int type )
+{
+ int depth = CV_MAT_DEPTH(type);
+ return CV_ELEM_SIZE1(depth)*8 | (depth == CV_8S || depth == CV_16S ||
+ depth == CV_32S ? IPL_DEPTH_SIGN : 0);
+}
+
+
+/****************************************************************************************\
+* Multi-dimensional dense array (CvMatND) *
+\****************************************************************************************/
+
+#define CV_MATND_MAGIC_VAL 0x42430000
+#define CV_TYPE_NAME_MATND "opencv-nd-matrix"
+
+#define CV_MAX_DIM 32
+#define CV_MAX_DIM_HEAP 1024
+
+typedef struct CvMatND
+{
+ int type;
+ int dims;
+
+ int* refcount;
+ int hdr_refcount;
+
+ union
+ {
+ uchar* ptr;
+ float* fl;
+ double* db;
+ int* i;
+ short* s;
+ } data;
+
+ struct
+ {
+ int size;
+ int step;
+ }
+ dim[CV_MAX_DIM];
+}
+CvMatND;
+
+#define CV_IS_MATND_HDR(mat) \
+ ((mat) != NULL && (((const CvMatND*)(mat))->type & CV_MAGIC_MASK) == CV_MATND_MAGIC_VAL)
+
+#define CV_IS_MATND(mat) \
+ (CV_IS_MATND_HDR(mat) && ((const CvMatND*)(mat))->data.ptr != NULL)
+
+
+/****************************************************************************************\
+* Multi-dimensional sparse array (CvSparseMat) *
+\****************************************************************************************/
+
+#define CV_SPARSE_MAT_MAGIC_VAL 0x42440000
+#define CV_TYPE_NAME_SPARSE_MAT "opencv-sparse-matrix"
+
+struct CvSet;
+
+typedef struct CvSparseMat
+{
+ int type;
+ int dims;
+ int* refcount;
+ int hdr_refcount;
+
+ struct CvSet* heap;
+ void** hashtable;
+ int hashsize;
+ int valoffset;
+ int idxoffset;
+ int size[CV_MAX_DIM];
+}
+CvSparseMat;
+
+#define CV_IS_SPARSE_MAT_HDR(mat) \
+ ((mat) != NULL && \
+ (((const CvSparseMat*)(mat))->type & CV_MAGIC_MASK) == CV_SPARSE_MAT_MAGIC_VAL)
+
+#define CV_IS_SPARSE_MAT(mat) \
+ CV_IS_SPARSE_MAT_HDR(mat)
+
+/**************** iteration through a sparse array *****************/
+
+typedef struct CvSparseNode
+{
+ unsigned hashval;
+ struct CvSparseNode* next;
+}
+CvSparseNode;
+
+typedef struct CvSparseMatIterator
+{
+ CvSparseMat* mat;
+ CvSparseNode* node;
+ int curidx;
+}
+CvSparseMatIterator;
+
+#define CV_NODE_VAL(mat,node) ((void*)((uchar*)(node) + (mat)->valoffset))
+#define CV_NODE_IDX(mat,node) ((int*)((uchar*)(node) + (mat)->idxoffset))
+
+/****************************************************************************************\
+* Histogram *
+\****************************************************************************************/
+
+typedef int CvHistType;
+
+#define CV_HIST_MAGIC_VAL 0x42450000
+#define CV_HIST_UNIFORM_FLAG (1 << 10)
+
+/* indicates whether bin ranges are set already or not */
+#define CV_HIST_RANGES_FLAG (1 << 11)
+
+#define CV_HIST_ARRAY 0
+#define CV_HIST_SPARSE 1
+#define CV_HIST_TREE CV_HIST_SPARSE
+
+/* should be used as a parameter only,
+ it turns to CV_HIST_UNIFORM_FLAG of hist->type */
+#define CV_HIST_UNIFORM 1
+
+typedef struct CvHistogram
+{
+ int type;
+ CvArr* bins;
+ float thresh[CV_MAX_DIM][2]; /* For uniform histograms. */
+ float** thresh2; /* For non-uniform histograms. */
+ CvMatND mat; /* Embedded matrix header for array histograms. */
+}
+CvHistogram;
+
+#define CV_IS_HIST( hist ) \
+ ((hist) != NULL && \
+ (((CvHistogram*)(hist))->type & CV_MAGIC_MASK) == CV_HIST_MAGIC_VAL && \
+ (hist)->bins != NULL)
+
+#define CV_IS_UNIFORM_HIST( hist ) \
+ (((hist)->type & CV_HIST_UNIFORM_FLAG) != 0)
+
+#define CV_IS_SPARSE_HIST( hist ) \
+ CV_IS_SPARSE_MAT((hist)->bins)
+
+#define CV_HIST_HAS_RANGES( hist ) \
+ (((hist)->type & CV_HIST_RANGES_FLAG) != 0)
+
+/****************************************************************************************\
+* Other supplementary data type definitions *
+\****************************************************************************************/
+
+/*************************************** CvRect *****************************************/
+
+typedef struct CvRect
+{
+ int x;
+ int y;
+ int width;
+ int height;
+}
+CvRect;
+
+CV_INLINE CvRect cvRect( int x, int y, int width, int height )
+{
+ CvRect r;
+
+ r.x = x;
+ r.y = y;
+ r.width = width;
+ r.height = height;
+
+ return r;
+}
+
+
+CV_INLINE IplROI cvRectToROI( CvRect rect, int coi )
+{
+ IplROI roi;
+ roi.xOffset = rect.x;
+ roi.yOffset = rect.y;
+ roi.width = rect.width;
+ roi.height = rect.height;
+ roi.coi = coi;
+
+ return roi;
+}
+
+
+CV_INLINE CvRect cvROIToRect( IplROI roi )
+{
+ return cvRect( roi.xOffset, roi.yOffset, roi.width, roi.height );
+}
+
+/*********************************** CvTermCriteria *************************************/
+
+#define CV_TERMCRIT_ITER 1
+#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
+#define CV_TERMCRIT_EPS 2
+
+typedef struct CvTermCriteria
+{
+ int type; /* may be combination of
+ CV_TERMCRIT_ITER
+ CV_TERMCRIT_EPS */
+ int max_iter;
+ double epsilon;
+}
+CvTermCriteria;
+
+CV_INLINE CvTermCriteria cvTermCriteria( int type, int max_iter, double epsilon )
+{
+ CvTermCriteria t;
+
+ t.type = type;
+ t.max_iter = max_iter;
+ t.epsilon = (float)epsilon;
+
+ return t;
+}
+
+
+/******************************* CvPoint and variants ***********************************/
+
+typedef struct CvPoint
+{
+ int x;
+ int y;
+}
+CvPoint;
+
+
+CV_INLINE CvPoint cvPoint( int x, int y )
+{
+ CvPoint p;
+
+ p.x = x;
+ p.y = y;
+
+ return p;
+}
+
+
+typedef struct CvPoint2D32f
+{
+ float x;
+ float y;
+}
+CvPoint2D32f;
+
+
+CV_INLINE CvPoint2D32f cvPoint2D32f( double x, double y )
+{
+ CvPoint2D32f p;
+
+ p.x = (float)x;
+ p.y = (float)y;
+
+ return p;
+}
+
+
+CV_INLINE CvPoint2D32f cvPointTo32f( CvPoint point )
+{
+ return cvPoint2D32f( (float)point.x, (float)point.y );
+}
+
+
+CV_INLINE CvPoint cvPointFrom32f( CvPoint2D32f point )
+{
+ CvPoint ipt;
+ ipt.x = cvRound(point.x);
+ ipt.y = cvRound(point.y);
+
+ return ipt;
+}
+
+
+typedef struct CvPoint3D32f
+{
+ float x;
+ float y;
+ float z;
+}
+CvPoint3D32f;
+
+
+CV_INLINE CvPoint3D32f cvPoint3D32f( double x, double y, double z )
+{
+ CvPoint3D32f p;
+
+ p.x = (float)x;
+ p.y = (float)y;
+ p.z = (float)z;
+
+ return p;
+}
+
+
+typedef struct CvPoint2D64f
+{
+ double x;
+ double y;
+}
+CvPoint2D64f;
+
+
+CV_INLINE CvPoint2D64f cvPoint2D64f( double x, double y )
+{
+ CvPoint2D64f p;
+
+ p.x = x;
+ p.y = y;
+
+ return p;
+}
+
+
+typedef struct CvPoint3D64f
+{
+ double x;
+ double y;
+ double z;
+}
+CvPoint3D64f;
+
+
+CV_INLINE CvPoint3D64f cvPoint3D64f( double x, double y, double z )
+{
+ CvPoint3D64f p;
+
+ p.x = x;
+ p.y = y;
+ p.z = z;
+
+ return p;
+}
+
+
+/******************************** CvSize's & CvBox **************************************/
+
+typedef struct CvSize
+{
+ int width;
+ int height;
+}
+CvSize;
+
+CV_INLINE CvSize cvSize( int width, int height )
+{
+ CvSize s;
+
+ s.width = width;
+ s.height = height;
+
+ return s;
+}
+
+typedef struct CvSize2D32f
+{
+ float width;
+ float height;
+}
+CvSize2D32f;
+
+
+CV_INLINE CvSize2D32f cvSize2D32f( double width, double height )
+{
+ CvSize2D32f s;
+
+ s.width = (float)width;
+ s.height = (float)height;
+
+ return s;
+}
+
+typedef struct CvBox2D
+{
+ CvPoint2D32f center; /* Center of the box. */
+ CvSize2D32f size; /* Box width and length. */
+ float angle; /* Angle between the horizontal axis */
+ /* and the first side (i.e. length) in degrees */
+}
+CvBox2D;
+
+
+/* Line iterator state: */
+typedef struct CvLineIterator
+{
+ /* Pointer to the current point: */
+ uchar* ptr;
+
+ /* Bresenham algorithm state: */
+ int err;
+ int plus_delta;
+ int minus_delta;
+ int plus_step;
+ int minus_step;
+}
+CvLineIterator;
+
+
+
+/************************************* CvSlice ******************************************/
+
+typedef struct CvSlice
+{
+ int start_index, end_index;
+}
+CvSlice;
+
+CV_INLINE CvSlice cvSlice( int start, int end )
+{
+ CvSlice slice;
+ slice.start_index = start;
+ slice.end_index = end;
+
+ return slice;
+}
+
+#define CV_WHOLE_SEQ_END_INDEX 0x3fffffff
+#define CV_WHOLE_SEQ cvSlice(0, CV_WHOLE_SEQ_END_INDEX)
+
+
+/************************************* CvScalar *****************************************/
+
+typedef struct CvScalar
+{
+ double val[4];
+}
+CvScalar;
+
+CV_INLINE CvScalar cvScalar( double val0, double val1 CV_DEFAULT(0),
+ double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
+{
+ CvScalar scalar;
+ scalar.val[0] = val0; scalar.val[1] = val1;
+ scalar.val[2] = val2; scalar.val[3] = val3;
+ return scalar;
+}
+
+
+CV_INLINE CvScalar cvRealScalar( double val0 )
+{
+ CvScalar scalar;
+ scalar.val[0] = val0;
+ scalar.val[1] = scalar.val[2] = scalar.val[3] = 0;
+ return scalar;
+}
+
+CV_INLINE CvScalar cvScalarAll( double val0123 )
+{
+ CvScalar scalar;
+ scalar.val[0] = val0123;
+ scalar.val[1] = val0123;
+ scalar.val[2] = val0123;
+ scalar.val[3] = val0123;
+ return scalar;
+}
+
+/****************************************************************************************\
+* Dynamic Data structures *
+\****************************************************************************************/
+
+/******************************** Memory storage ****************************************/
+
+typedef struct CvMemBlock
+{
+ struct CvMemBlock* prev;
+ struct CvMemBlock* next;
+}
+CvMemBlock;
+
+#define CV_STORAGE_MAGIC_VAL 0x42890000
+
+typedef struct CvMemStorage
+{
+ int signature;
+ CvMemBlock* bottom; /* First allocated block. */
+ CvMemBlock* top; /* Current memory block - top of the stack. */
+ struct CvMemStorage* parent; /* We get new blocks from parent as needed. */
+ int block_size; /* Block size. */
+ int free_space; /* Remaining free space in current block. */
+}
+CvMemStorage;
+
+#define CV_IS_STORAGE(storage) \
+ ((storage) != NULL && \
+ (((CvMemStorage*)(storage))->signature & CV_MAGIC_MASK) == CV_STORAGE_MAGIC_VAL)
+
+
+typedef struct CvMemStoragePos
+{
+ CvMemBlock* top;
+ int free_space;
+}
+CvMemStoragePos;
+
+
+/*********************************** Sequence *******************************************/
+
+typedef struct CvSeqBlock
+{
+ struct CvSeqBlock* prev; /* Previous sequence block. */
+ struct CvSeqBlock* next; /* Next sequence block. */
+ int start_index; /* Index of the first element in the block + */
+ /* sequence->first->start_index. */
+ int count; /* Number of elements in the block. */
+ schar* data; /* Pointer to the first element of the block. */
+}
+CvSeqBlock;
+
+
+#define CV_TREE_NODE_FIELDS(node_type) \
+ int flags; /* Miscellaneous flags. */ \
+ int header_size; /* Size of sequence header. */ \
+ struct node_type* h_prev; /* Previous sequence. */ \
+ struct node_type* h_next; /* Next sequence. */ \
+ struct node_type* v_prev; /* 2nd previous sequence. */ \
+ struct node_type* v_next /* 2nd next sequence. */
+
+/*
+ Read/Write sequence.
+ Elements can be dynamically inserted to or deleted from the sequence.
+*/
+#define CV_SEQUENCE_FIELDS() \
+ CV_TREE_NODE_FIELDS(CvSeq); \
+ int total; /* Total number of elements. */ \
+ int elem_size; /* Size of sequence element in bytes. */ \
+ schar* block_max; /* Maximal bound of the last block. */ \
+ schar* ptr; /* Current write pointer. */ \
+ int delta_elems; /* Grow seq this many at a time. */ \
+ CvMemStorage* storage; /* Where the seq is stored. */ \
+ CvSeqBlock* free_blocks; /* Free blocks list. */ \
+ CvSeqBlock* first; /* Pointer to the first sequence block. */
+
+typedef struct CvSeq
+{
+ CV_SEQUENCE_FIELDS()
+}
+CvSeq;
+
+#define CV_TYPE_NAME_SEQ "opencv-sequence"
+#define CV_TYPE_NAME_SEQ_TREE "opencv-sequence-tree"
+
+/*************************************** Set ********************************************/
+/*
+ Set.
+ Order is not preserved. There can be gaps between sequence elements.
+ After the element has been inserted it stays in the same place all the time.
+ The MSB(most-significant or sign bit) of the first field (flags) is 0 iff the element exists.
+*/
+#define CV_SET_ELEM_FIELDS(elem_type) \
+ int flags; \
+ struct elem_type* next_free;
+
+typedef struct CvSetElem
+{
+ CV_SET_ELEM_FIELDS(CvSetElem)
+}
+CvSetElem;
+
+#define CV_SET_FIELDS() \
+ CV_SEQUENCE_FIELDS() \
+ CvSetElem* free_elems; \
+ int active_count;
+
+typedef struct CvSet
+{
+ CV_SET_FIELDS()
+}
+CvSet;
+
+
+#define CV_SET_ELEM_IDX_MASK ((1 << 26) - 1)
+#define CV_SET_ELEM_FREE_FLAG (1 << (sizeof(int)*8-1))
+
+/* Checks whether the element pointed by ptr belongs to a set or not */
+#define CV_IS_SET_ELEM( ptr ) (((CvSetElem*)(ptr))->flags >= 0)
+
+/************************************* Graph ********************************************/
+
+/*
+ We represent a graph as a set of vertices.
+ Vertices contain their adjacency lists (more exactly, pointers to first incoming or
+ outcoming edge (or 0 if isolated vertex)). Edges are stored in another set.
+ There is a singly-linked list of incoming/outcoming edges for each vertex.
+
+ Each edge consists of
+
+ o Two pointers to the starting and ending vertices
+ (vtx[0] and vtx[1] respectively).
+
+ A graph may be oriented or not. In the latter case, edges between
+ vertex i to vertex j are not distinguished during search operations.
+
+ o Two pointers to next edges for the starting and ending vertices, where
+ next[0] points to the next edge in the vtx[0] adjacency list and
+ next[1] points to the next edge in the vtx[1] adjacency list.
+*/
+#define CV_GRAPH_EDGE_FIELDS() \
+ int flags; \
+ float weight; \
+ struct CvGraphEdge* next[2]; \
+ struct CvGraphVtx* vtx[2];
+
+
+#define CV_GRAPH_VERTEX_FIELDS() \
+ int flags; \
+ struct CvGraphEdge* first;
+
+
+typedef struct CvGraphEdge
+{
+ CV_GRAPH_EDGE_FIELDS()
+}
+CvGraphEdge;
+
+typedef struct CvGraphVtx
+{
+ CV_GRAPH_VERTEX_FIELDS()
+}
+CvGraphVtx;
+
+typedef struct CvGraphVtx2D
+{
+ CV_GRAPH_VERTEX_FIELDS()
+ CvPoint2D32f* ptr;
+}
+CvGraphVtx2D;
+
+/*
+ Graph is "derived" from the set (this is set a of vertices)
+ and includes another set (edges)
+*/
+#define CV_GRAPH_FIELDS() \
+ CV_SET_FIELDS() \
+ CvSet* edges;
+
+typedef struct CvGraph
+{
+ CV_GRAPH_FIELDS()
+}
+CvGraph;
+
+#define CV_TYPE_NAME_GRAPH "opencv-graph"
+
+/*********************************** Chain/Countour *************************************/
+
+typedef struct CvChain
+{
+ CV_SEQUENCE_FIELDS()
+ CvPoint origin;
+}
+CvChain;
+
+#define CV_CONTOUR_FIELDS() \
+ CV_SEQUENCE_FIELDS() \
+ CvRect rect; \
+ int color; \
+ int reserved[3];
+
+typedef struct CvContour
+{
+ CV_CONTOUR_FIELDS()
+}
+CvContour;
+
+typedef CvContour CvPoint2DSeq;
+
+/****************************************************************************************\
+* Sequence types *
+\****************************************************************************************/
+
+#define CV_SEQ_MAGIC_VAL 0x42990000
+
+#define CV_IS_SEQ(seq) \
+ ((seq) != NULL && (((CvSeq*)(seq))->flags & CV_MAGIC_MASK) == CV_SEQ_MAGIC_VAL)
+
+#define CV_SET_MAGIC_VAL 0x42980000
+#define CV_IS_SET(set) \
+ ((set) != NULL && (((CvSeq*)(set))->flags & CV_MAGIC_MASK) == CV_SET_MAGIC_VAL)
+
+#define CV_SEQ_ELTYPE_BITS 12
+#define CV_SEQ_ELTYPE_MASK ((1 << CV_SEQ_ELTYPE_BITS) - 1)
+
+#define CV_SEQ_ELTYPE_POINT CV_32SC2 /* (x,y) */
+#define CV_SEQ_ELTYPE_CODE CV_8UC1 /* freeman code: 0..7 */
+#define CV_SEQ_ELTYPE_GENERIC 0
+#define CV_SEQ_ELTYPE_PTR CV_USRTYPE1
+#define CV_SEQ_ELTYPE_PPOINT CV_SEQ_ELTYPE_PTR /* &(x,y) */
+#define CV_SEQ_ELTYPE_INDEX CV_32SC1 /* #(x,y) */
+#define CV_SEQ_ELTYPE_GRAPH_EDGE 0 /* &next_o, &next_d, &vtx_o, &vtx_d */
+#define CV_SEQ_ELTYPE_GRAPH_VERTEX 0 /* first_edge, &(x,y) */
+#define CV_SEQ_ELTYPE_TRIAN_ATR 0 /* vertex of the binary tree */
+#define CV_SEQ_ELTYPE_CONNECTED_COMP 0 /* connected component */
+#define CV_SEQ_ELTYPE_POINT3D CV_32FC3 /* (x,y,z) */
+
+#define CV_SEQ_KIND_BITS 2
+#define CV_SEQ_KIND_MASK (((1 << CV_SEQ_KIND_BITS) - 1)<<CV_SEQ_ELTYPE_BITS)
+
+/* types of sequences */
+#define CV_SEQ_KIND_GENERIC (0 << CV_SEQ_ELTYPE_BITS)
+#define CV_SEQ_KIND_CURVE (1 << CV_SEQ_ELTYPE_BITS)
+#define CV_SEQ_KIND_BIN_TREE (2 << CV_SEQ_ELTYPE_BITS)
+
+/* types of sparse sequences (sets) */
+#define CV_SEQ_KIND_GRAPH (1 << CV_SEQ_ELTYPE_BITS)
+#define CV_SEQ_KIND_SUBDIV2D (2 << CV_SEQ_ELTYPE_BITS)
+
+#define CV_SEQ_FLAG_SHIFT (CV_SEQ_KIND_BITS + CV_SEQ_ELTYPE_BITS)
+
+/* flags for curves */
+#define CV_SEQ_FLAG_CLOSED (1 << CV_SEQ_FLAG_SHIFT)
+#define CV_SEQ_FLAG_SIMPLE (0 << CV_SEQ_FLAG_SHIFT)
+#define CV_SEQ_FLAG_CONVEX (0 << CV_SEQ_FLAG_SHIFT)
+#define CV_SEQ_FLAG_HOLE (2 << CV_SEQ_FLAG_SHIFT)
+
+/* flags for graphs */
+#define CV_GRAPH_FLAG_ORIENTED (1 << CV_SEQ_FLAG_SHIFT)
+
+#define CV_GRAPH CV_SEQ_KIND_GRAPH
+#define CV_ORIENTED_GRAPH (CV_SEQ_KIND_GRAPH|CV_GRAPH_FLAG_ORIENTED)
+
+/* point sets */
+#define CV_SEQ_POINT_SET (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT)
+#define CV_SEQ_POINT3D_SET (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT3D)
+#define CV_SEQ_POLYLINE (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_POINT)
+#define CV_SEQ_POLYGON (CV_SEQ_FLAG_CLOSED | CV_SEQ_POLYLINE )
+#define CV_SEQ_CONTOUR CV_SEQ_POLYGON
+#define CV_SEQ_SIMPLE_POLYGON (CV_SEQ_FLAG_SIMPLE | CV_SEQ_POLYGON )
+
+/* chain-coded curves */
+#define CV_SEQ_CHAIN (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_CODE)
+#define CV_SEQ_CHAIN_CONTOUR (CV_SEQ_FLAG_CLOSED | CV_SEQ_CHAIN)
+
+/* binary tree for the contour */
+#define CV_SEQ_POLYGON_TREE (CV_SEQ_KIND_BIN_TREE | CV_SEQ_ELTYPE_TRIAN_ATR)
+
+/* sequence of the connected components */
+#define CV_SEQ_CONNECTED_COMP (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_CONNECTED_COMP)
+
+/* sequence of the integer numbers */
+#define CV_SEQ_INDEX (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_INDEX)
+
+#define CV_SEQ_ELTYPE( seq ) ((seq)->flags & CV_SEQ_ELTYPE_MASK)
+#define CV_SEQ_KIND( seq ) ((seq)->flags & CV_SEQ_KIND_MASK )
+
+/* flag checking */
+#define CV_IS_SEQ_INDEX( seq ) ((CV_SEQ_ELTYPE(seq) == CV_SEQ_ELTYPE_INDEX) && \
+ (CV_SEQ_KIND(seq) == CV_SEQ_KIND_GENERIC))
+
+#define CV_IS_SEQ_CURVE( seq ) (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE)
+#define CV_IS_SEQ_CLOSED( seq ) (((seq)->flags & CV_SEQ_FLAG_CLOSED) != 0)
+#define CV_IS_SEQ_CONVEX( seq ) 0
+#define CV_IS_SEQ_HOLE( seq ) (((seq)->flags & CV_SEQ_FLAG_HOLE) != 0)
+#define CV_IS_SEQ_SIMPLE( seq ) 1
+
+/* type checking macros */
+#define CV_IS_SEQ_POINT_SET( seq ) \
+ ((CV_SEQ_ELTYPE(seq) == CV_32SC2 || CV_SEQ_ELTYPE(seq) == CV_32FC2))
+
+#define CV_IS_SEQ_POINT_SUBSET( seq ) \
+ (CV_IS_SEQ_INDEX( seq ) || CV_SEQ_ELTYPE(seq) == CV_SEQ_ELTYPE_PPOINT)
+
+#define CV_IS_SEQ_POLYLINE( seq ) \
+ (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && CV_IS_SEQ_POINT_SET(seq))
+
+#define CV_IS_SEQ_POLYGON( seq ) \
+ (CV_IS_SEQ_POLYLINE(seq) && CV_IS_SEQ_CLOSED(seq))
+
+#define CV_IS_SEQ_CHAIN( seq ) \
+ (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && (seq)->elem_size == 1)
+
+#define CV_IS_SEQ_CONTOUR( seq ) \
+ (CV_IS_SEQ_CLOSED(seq) && (CV_IS_SEQ_POLYLINE(seq) || CV_IS_SEQ_CHAIN(seq)))
+
+#define CV_IS_SEQ_CHAIN_CONTOUR( seq ) \
+ (CV_IS_SEQ_CHAIN( seq ) && CV_IS_SEQ_CLOSED( seq ))
+
+#define CV_IS_SEQ_POLYGON_TREE( seq ) \
+ (CV_SEQ_ELTYPE (seq) == CV_SEQ_ELTYPE_TRIAN_ATR && \
+ CV_SEQ_KIND( seq ) == CV_SEQ_KIND_BIN_TREE )
+
+#define CV_IS_GRAPH( seq ) \
+ (CV_IS_SET(seq) && CV_SEQ_KIND((CvSet*)(seq)) == CV_SEQ_KIND_GRAPH)
+
+#define CV_IS_GRAPH_ORIENTED( seq ) \
+ (((seq)->flags & CV_GRAPH_FLAG_ORIENTED) != 0)
+
+#define CV_IS_SUBDIV2D( seq ) \
+ (CV_IS_SET(seq) && CV_SEQ_KIND((CvSet*)(seq)) == CV_SEQ_KIND_SUBDIV2D)
+
+/****************************************************************************************/
+/* Sequence writer & reader */
+/****************************************************************************************/
+
+#define CV_SEQ_WRITER_FIELDS() \
+ int header_size; \
+ CvSeq* seq; /* the sequence written */ \
+ CvSeqBlock* block; /* current block */ \
+ schar* ptr; /* pointer to free space */ \
+ schar* block_min; /* pointer to the beginning of block*/\
+ schar* block_max; /* pointer to the end of block */
+
+typedef struct CvSeqWriter
+{
+ CV_SEQ_WRITER_FIELDS()
+}
+CvSeqWriter;
+
+
+#define CV_SEQ_READER_FIELDS() \
+ int header_size; \
+ CvSeq* seq; /* sequence, beign read */ \
+ CvSeqBlock* block; /* current block */ \
+ schar* ptr; /* pointer to element be read next */ \
+ schar* block_min; /* pointer to the beginning of block */\
+ schar* block_max; /* pointer to the end of block */ \
+ int delta_index;/* = seq->first->start_index */ \
+ schar* prev_elem; /* pointer to previous element */
+
+
+typedef struct CvSeqReader
+{
+ CV_SEQ_READER_FIELDS()
+}
+CvSeqReader;
+
+/****************************************************************************************/
+/* Operations on sequences */
+/****************************************************************************************/
+
+#define CV_SEQ_ELEM( seq, elem_type, index ) \
+/* assert gives some guarantee that <seq> parameter is valid */ \
+( assert(sizeof((seq)->first[0]) == sizeof(CvSeqBlock) && \
+ (seq)->elem_size == sizeof(elem_type)), \
+ (elem_type*)((seq)->first && (unsigned)index < \
+ (unsigned)((seq)->first->count) ? \
+ (seq)->first->data + (index) * sizeof(elem_type) : \
+ cvGetSeqElem( (CvSeq*)(seq), (index) )))
+#define CV_GET_SEQ_ELEM( elem_type, seq, index ) CV_SEQ_ELEM( (seq), elem_type, (index) )
+
+/* Add element to sequence: */
+#define CV_WRITE_SEQ_ELEM_VAR( elem_ptr, writer ) \
+{ \
+ if( (writer).ptr >= (writer).block_max ) \
+ { \
+ cvCreateSeqBlock( &writer); \
+ } \
+ memcpy((writer).ptr, elem_ptr, (writer).seq->elem_size);\
+ (writer).ptr += (writer).seq->elem_size; \
+}
+
+#define CV_WRITE_SEQ_ELEM( elem, writer ) \
+{ \
+ assert( (writer).seq->elem_size == sizeof(elem)); \
+ if( (writer).ptr >= (writer).block_max ) \
+ { \
+ cvCreateSeqBlock( &writer); \
+ } \
+ assert( (writer).ptr <= (writer).block_max - sizeof(elem));\
+ memcpy((writer).ptr, &(elem), sizeof(elem)); \
+ (writer).ptr += sizeof(elem); \
+}
+
+
+/* Move reader position forward: */
+#define CV_NEXT_SEQ_ELEM( elem_size, reader ) \
+{ \
+ if( ((reader).ptr += (elem_size)) >= (reader).block_max ) \
+ { \
+ cvChangeSeqBlock( &(reader), 1 ); \
+ } \
+}
+
+
+/* Move reader position backward: */
+#define CV_PREV_SEQ_ELEM( elem_size, reader ) \
+{ \
+ if( ((reader).ptr -= (elem_size)) < (reader).block_min ) \
+ { \
+ cvChangeSeqBlock( &(reader), -1 ); \
+ } \
+}
+
+/* Read element and move read position forward: */
+#define CV_READ_SEQ_ELEM( elem, reader ) \
+{ \
+ assert( (reader).seq->elem_size == sizeof(elem)); \
+ memcpy( &(elem), (reader).ptr, sizeof((elem))); \
+ CV_NEXT_SEQ_ELEM( sizeof(elem), reader ) \
+}
+
+/* Read element and move read position backward: */
+#define CV_REV_READ_SEQ_ELEM( elem, reader ) \
+{ \
+ assert( (reader).seq->elem_size == sizeof(elem)); \
+ memcpy(&(elem), (reader).ptr, sizeof((elem))); \
+ CV_PREV_SEQ_ELEM( sizeof(elem), reader ) \
+}
+
+
+#define CV_READ_CHAIN_POINT( _pt, reader ) \
+{ \
+ (_pt) = (reader).pt; \
+ if( (reader).ptr ) \
+ { \
+ CV_READ_SEQ_ELEM( (reader).code, (reader)); \
+ assert( ((reader).code & ~7) == 0 ); \
+ (reader).pt.x += (reader).deltas[(int)(reader).code][0]; \
+ (reader).pt.y += (reader).deltas[(int)(reader).code][1]; \
+ } \
+}
+
+#define CV_CURRENT_POINT( reader ) (*((CvPoint*)((reader).ptr)))
+#define CV_PREV_POINT( reader ) (*((CvPoint*)((reader).prev_elem)))
+
+#define CV_READ_EDGE( pt1, pt2, reader ) \
+{ \
+ assert( sizeof(pt1) == sizeof(CvPoint) && \
+ sizeof(pt2) == sizeof(CvPoint) && \
+ reader.seq->elem_size == sizeof(CvPoint)); \
+ (pt1) = CV_PREV_POINT( reader ); \
+ (pt2) = CV_CURRENT_POINT( reader ); \
+ (reader).prev_elem = (reader).ptr; \
+ CV_NEXT_SEQ_ELEM( sizeof(CvPoint), (reader)); \
+}
+
+/************ Graph macros ************/
+
+/* Return next graph edge for given vertex: */
+#define CV_NEXT_GRAPH_EDGE( edge, vertex ) \
+ (assert((edge)->vtx[0] == (vertex) || (edge)->vtx[1] == (vertex)), \
+ (edge)->next[(edge)->vtx[1] == (vertex)])
+
+
+
+/****************************************************************************************\
+* Data structures for persistence (a.k.a serialization) functionality *
+\****************************************************************************************/
+
+/* "black box" file storage */
+typedef struct CvFileStorage CvFileStorage;
+
+/* Storage flags: */
+#define CV_STORAGE_READ 0
+#define CV_STORAGE_WRITE 1
+#define CV_STORAGE_WRITE_TEXT CV_STORAGE_WRITE
+#define CV_STORAGE_WRITE_BINARY CV_STORAGE_WRITE
+#define CV_STORAGE_APPEND 2
+#define CV_STORAGE_MEMORY 4
+#define CV_STORAGE_FORMAT_MASK (7<<3)
+#define CV_STORAGE_FORMAT_AUTO 0
+#define CV_STORAGE_FORMAT_XML 8
+#define CV_STORAGE_FORMAT_YAML 16
+
+/* List of attributes: */
+typedef struct CvAttrList
+{
+ const char** attr; /* NULL-terminated array of (attribute_name,attribute_value) pairs. */
+ struct CvAttrList* next; /* Pointer to next chunk of the attributes list. */
+}
+CvAttrList;
+
+CV_INLINE CvAttrList cvAttrList( const char** attr CV_DEFAULT(NULL),
+ CvAttrList* next CV_DEFAULT(NULL) )
+{
+ CvAttrList l;
+ l.attr = attr;
+ l.next = next;
+
+ return l;
+}
+
+struct CvTypeInfo;
+
+#define CV_NODE_NONE 0
+#define CV_NODE_INT 1
+#define CV_NODE_INTEGER CV_NODE_INT
+#define CV_NODE_REAL 2
+#define CV_NODE_FLOAT CV_NODE_REAL
+#define CV_NODE_STR 3
+#define CV_NODE_STRING CV_NODE_STR
+#define CV_NODE_REF 4 /* not used */
+#define CV_NODE_SEQ 5
+#define CV_NODE_MAP 6
+#define CV_NODE_TYPE_MASK 7
+
+#define CV_NODE_TYPE(flags) ((flags) & CV_NODE_TYPE_MASK)
+
+/* file node flags */
+#define CV_NODE_FLOW 8 /* Used only for writing structures in YAML format. */
+#define CV_NODE_USER 16
+#define CV_NODE_EMPTY 32
+#define CV_NODE_NAMED 64
+
+#define CV_NODE_IS_INT(flags) (CV_NODE_TYPE(flags) == CV_NODE_INT)
+#define CV_NODE_IS_REAL(flags) (CV_NODE_TYPE(flags) == CV_NODE_REAL)
+#define CV_NODE_IS_STRING(flags) (CV_NODE_TYPE(flags) == CV_NODE_STRING)
+#define CV_NODE_IS_SEQ(flags) (CV_NODE_TYPE(flags) == CV_NODE_SEQ)
+#define CV_NODE_IS_MAP(flags) (CV_NODE_TYPE(flags) == CV_NODE_MAP)
+#define CV_NODE_IS_COLLECTION(flags) (CV_NODE_TYPE(flags) >= CV_NODE_SEQ)
+#define CV_NODE_IS_FLOW(flags) (((flags) & CV_NODE_FLOW) != 0)
+#define CV_NODE_IS_EMPTY(flags) (((flags) & CV_NODE_EMPTY) != 0)
+#define CV_NODE_IS_USER(flags) (((flags) & CV_NODE_USER) != 0)
+#define CV_NODE_HAS_NAME(flags) (((flags) & CV_NODE_NAMED) != 0)
+
+#define CV_NODE_SEQ_SIMPLE 256
+#define CV_NODE_SEQ_IS_SIMPLE(seq) (((seq)->flags & CV_NODE_SEQ_SIMPLE) != 0)
+
+typedef struct CvString
+{
+ int len;
+ char* ptr;
+}
+CvString;
+
+/* All the keys (names) of elements in the readed file storage
+ are stored in the hash to speed up the lookup operations: */
+typedef struct CvStringHashNode
+{
+ unsigned hashval;
+ CvString str;
+ struct CvStringHashNode* next;
+}
+CvStringHashNode;
+
+typedef struct CvGenericHash CvFileNodeHash;
+
+/* Basic element of the file storage - scalar or collection: */
+typedef struct CvFileNode
+{
+ int tag;
+ struct CvTypeInfo* info; /* type information
+ (only for user-defined object, for others it is 0) */
+ union
+ {
+ double f; /* scalar floating-point number */
+ int i; /* scalar integer number */
+ CvString str; /* text string */
+ CvSeq* seq; /* sequence (ordered collection of file nodes) */
+ CvFileNodeHash* map; /* map (collection of named file nodes) */
+ } data;
+}
+CvFileNode;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int (CV_CDECL *CvIsInstanceFunc)( const void* struct_ptr );
+typedef void (CV_CDECL *CvReleaseFunc)( void** struct_dblptr );
+typedef void* (CV_CDECL *CvReadFunc)( CvFileStorage* storage, CvFileNode* node );
+typedef void (CV_CDECL *CvWriteFunc)( CvFileStorage* storage, const char* name,
+ const void* struct_ptr, CvAttrList attributes );
+typedef void* (CV_CDECL *CvCloneFunc)( const void* struct_ptr );
+#ifdef __cplusplus
+}
+#endif
+
+typedef struct CvTypeInfo
+{
+ int flags;
+ int header_size;
+ struct CvTypeInfo* prev;
+ struct CvTypeInfo* next;
+ const char* type_name;
+ CvIsInstanceFunc is_instance;
+ CvReleaseFunc release;
+ CvReadFunc read;
+ CvWriteFunc write;
+ CvCloneFunc clone;
+}
+CvTypeInfo;
+
+
+/**** System data types ******/
+
+typedef struct CvPluginFuncInfo
+{
+ void** func_addr;
+ void* default_func_addr;
+ const char* func_names;
+ int search_modules;
+ int loaded_from;
+}
+CvPluginFuncInfo;
+
+typedef struct CvModuleInfo
+{
+ struct CvModuleInfo* next;
+ const char* name;
+ const char* version;
+ CvPluginFuncInfo* func_tab;
+}
+CvModuleInfo;
+
+#endif /*__OPENCV_CORE_TYPES_H__*/
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/version.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/version.hpp
new file mode 100644
index 00000000..2dbb3c34
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/version.hpp
@@ -0,0 +1,72 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright( C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+//(including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort(including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+/*
+ definition of the current version of OpenCV
+ Usefull to test in user programs
+*/
+
+#ifndef __OPENCV_VERSION_HPP__
+#define __OPENCV_VERSION_HPP__
+
+#define CV_VERSION_EPOCH 2
+#define CV_VERSION_MAJOR 4
+#define CV_VERSION_MINOR 13
+#define CV_VERSION_REVISION 0
+
+#define CVAUX_STR_EXP(__A) #__A
+#define CVAUX_STR(__A) CVAUX_STR_EXP(__A)
+
+#define CVAUX_STRW_EXP(__A) L#__A
+#define CVAUX_STRW(__A) CVAUX_STRW_EXP(__A)
+
+#if CV_VERSION_REVISION
+# define CV_VERSION CVAUX_STR(CV_VERSION_EPOCH) "." CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION)
+#else
+# define CV_VERSION CVAUX_STR(CV_VERSION_EPOCH) "." CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR)
+#endif
+
+/* old style version constants*/
+#define CV_MAJOR_VERSION CV_VERSION_EPOCH
+#define CV_MINOR_VERSION CV_VERSION_MAJOR
+#define CV_SUBMINOR_VERSION CV_VERSION_MINOR
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/core/wimage.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/wimage.hpp
new file mode 100644
index 00000000..c7afa8c5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/core/wimage.hpp
@@ -0,0 +1,621 @@
+///////////////////////////////////////////////////////////////////////////////
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to
+// this license. If you do not agree to this license, do not download,
+// install, copy or use the software.
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2008, Google, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation or contributors may not be used to endorse
+// or promote products derived from this software without specific
+// prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is"
+// and any express or implied warranties, including, but not limited to, the
+// implied warranties of merchantability and fitness for a particular purpose
+// are disclaimed. In no event shall the Intel Corporation or contributors be
+// liable for any direct, indirect, incidental, special, exemplary, or
+// consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+// Image class which provides a thin layer around an IplImage. The goals
+// of the class design are:
+// 1. All the data has explicit ownership to avoid memory leaks
+// 2. No hidden allocations or copies for performance.
+// 3. Easy access to OpenCV methods (which will access IPP if available)
+// 4. Can easily treat external data as an image
+// 5. Easy to create images which are subsets of other images
+// 6. Fast pixel access which can take advantage of number of channels
+// if known at compile time.
+//
+// The WImage class is the image class which provides the data accessors.
+// The 'W' comes from the fact that it is also a wrapper around the popular
+// but inconvenient IplImage class. A WImage can be constructed either using a
+// WImageBuffer class which allocates and frees the data,
+// or using a WImageView class which constructs a subimage or a view into
+// external data. The view class does no memory management. Each class
+// actually has two versions, one when the number of channels is known at
+// compile time and one when it isn't. Using the one with the number of
+// channels specified can provide some compile time optimizations by using the
+// fact that the number of channels is a constant.
+//
+// We use the convention (c,r) to refer to column c and row r with (0,0) being
+// the upper left corner. This is similar to standard Euclidean coordinates
+// with the first coordinate varying in the horizontal direction and the second
+// coordinate varying in the vertical direction.
+// Thus (c,r) is usually in the domain [0, width) X [0, height)
+//
+// Example usage:
+// WImageBuffer3_b im(5,7); // Make a 5X7 3 channel image of type uchar
+// WImageView3_b sub_im(im, 2,2, 3,3); // 3X3 submatrix
+// vector<float> vec(10, 3.0f);
+// WImageView1_f user_im(&vec[0], 2, 5); // 2X5 image w/ supplied data
+//
+// im.SetZero(); // same as cvSetZero(im.Ipl())
+// *im(2, 3) = 15; // Modify the element at column 2, row 3
+// MySetRand(&sub_im);
+//
+// // Copy the second row into the first. This can be done with no memory
+// // allocation and will use SSE if IPP is available.
+// int w = im.Width();
+// im.View(0,0, w,1).CopyFrom(im.View(0,1, w,1));
+//
+// // Doesn't care about source of data since using WImage
+// void MySetRand(WImage_b* im) { // Works with any number of channels
+// for (int r = 0; r < im->Height(); ++r) {
+// float* row = im->Row(r);
+// for (int c = 0; c < im->Width(); ++c) {
+// for (int ch = 0; ch < im->Channels(); ++ch, ++row) {
+// *row = uchar(rand() & 255);
+// }
+// }
+// }
+// }
+//
+// Functions that are not part of the basic image allocation, viewing, and
+// access should come from OpenCV, except some useful functions that are not
+// part of OpenCV can be found in wimage_util.h
+#ifndef __OPENCV_CORE_WIMAGE_HPP__
+#define __OPENCV_CORE_WIMAGE_HPP__
+
+#include "opencv2/core/core_c.h"
+
+#ifdef __cplusplus
+
+namespace cv {
+
+template <typename T> class WImage;
+template <typename T> class WImageBuffer;
+template <typename T> class WImageView;
+
+template<typename T, int C> class WImageC;
+template<typename T, int C> class WImageBufferC;
+template<typename T, int C> class WImageViewC;
+
+// Commonly used typedefs.
+typedef WImage<uchar> WImage_b;
+typedef WImageView<uchar> WImageView_b;
+typedef WImageBuffer<uchar> WImageBuffer_b;
+
+typedef WImageC<uchar, 1> WImage1_b;
+typedef WImageViewC<uchar, 1> WImageView1_b;
+typedef WImageBufferC<uchar, 1> WImageBuffer1_b;
+
+typedef WImageC<uchar, 3> WImage3_b;
+typedef WImageViewC<uchar, 3> WImageView3_b;
+typedef WImageBufferC<uchar, 3> WImageBuffer3_b;
+
+typedef WImage<float> WImage_f;
+typedef WImageView<float> WImageView_f;
+typedef WImageBuffer<float> WImageBuffer_f;
+
+typedef WImageC<float, 1> WImage1_f;
+typedef WImageViewC<float, 1> WImageView1_f;
+typedef WImageBufferC<float, 1> WImageBuffer1_f;
+
+typedef WImageC<float, 3> WImage3_f;
+typedef WImageViewC<float, 3> WImageView3_f;
+typedef WImageBufferC<float, 3> WImageBuffer3_f;
+
+// There isn't a standard for signed and unsigned short so be more
+// explicit in the typename for these cases.
+typedef WImage<short> WImage_16s;
+typedef WImageView<short> WImageView_16s;
+typedef WImageBuffer<short> WImageBuffer_16s;
+
+typedef WImageC<short, 1> WImage1_16s;
+typedef WImageViewC<short, 1> WImageView1_16s;
+typedef WImageBufferC<short, 1> WImageBuffer1_16s;
+
+typedef WImageC<short, 3> WImage3_16s;
+typedef WImageViewC<short, 3> WImageView3_16s;
+typedef WImageBufferC<short, 3> WImageBuffer3_16s;
+
+typedef WImage<ushort> WImage_16u;
+typedef WImageView<ushort> WImageView_16u;
+typedef WImageBuffer<ushort> WImageBuffer_16u;
+
+typedef WImageC<ushort, 1> WImage1_16u;
+typedef WImageViewC<ushort, 1> WImageView1_16u;
+typedef WImageBufferC<ushort, 1> WImageBuffer1_16u;
+
+typedef WImageC<ushort, 3> WImage3_16u;
+typedef WImageViewC<ushort, 3> WImageView3_16u;
+typedef WImageBufferC<ushort, 3> WImageBuffer3_16u;
+
+//
+// WImage definitions
+//
+// This WImage class gives access to the data it refers to. It can be
+// constructed either by allocating the data with a WImageBuffer class or
+// using the WImageView class to refer to a subimage or outside data.
+template<typename T>
+class WImage
+{
+public:
+ typedef T BaseType;
+
+ // WImage is an abstract class with no other virtual methods so make the
+ // destructor virtual.
+ virtual ~WImage() = 0;
+
+ // Accessors
+ IplImage* Ipl() {return image_; }
+ const IplImage* Ipl() const {return image_; }
+ T* ImageData() { return reinterpret_cast<T*>(image_->imageData); }
+ const T* ImageData() const {
+ return reinterpret_cast<const T*>(image_->imageData);
+ }
+
+ int Width() const {return image_->width; }
+ int Height() const {return image_->height; }
+
+ // WidthStep is the number of bytes to go to the pixel with the next y coord
+ int WidthStep() const {return image_->widthStep; }
+
+ int Channels() const {return image_->nChannels; }
+ int ChannelSize() const {return sizeof(T); } // number of bytes per channel
+
+ // Number of bytes per pixel
+ int PixelSize() const {return Channels() * ChannelSize(); }
+
+ // Return depth type (e.g. IPL_DEPTH_8U, IPL_DEPTH_32F) which is the number
+ // of bits per channel and with the signed bit set.
+ // This is known at compile time using specializations.
+ int Depth() const;
+
+ inline const T* Row(int r) const {
+ return reinterpret_cast<T*>(image_->imageData + r*image_->widthStep);
+ }
+
+ inline T* Row(int r) {
+ return reinterpret_cast<T*>(image_->imageData + r*image_->widthStep);
+ }
+
+ // Pixel accessors which returns a pointer to the start of the channel
+ inline T* operator() (int c, int r) {
+ return reinterpret_cast<T*>(image_->imageData + r*image_->widthStep) +
+ c*Channels();
+ }
+
+ inline const T* operator() (int c, int r) const {
+ return reinterpret_cast<T*>(image_->imageData + r*image_->widthStep) +
+ c*Channels();
+ }
+
+ // Copy the contents from another image which is just a convenience to cvCopy
+ void CopyFrom(const WImage<T>& src) { cvCopy(src.Ipl(), image_); }
+
+ // Set contents to zero which is just a convenient to cvSetZero
+ void SetZero() { cvSetZero(image_); }
+
+ // Construct a view into a region of this image
+ WImageView<T> View(int c, int r, int width, int height);
+
+protected:
+ // Disallow copy and assignment
+ WImage(const WImage&);
+ void operator=(const WImage&);
+
+ explicit WImage(IplImage* img) : image_(img) {
+ assert(!img || img->depth == Depth());
+ }
+
+ void SetIpl(IplImage* image) {
+ assert(!image || image->depth == Depth());
+ image_ = image;
+ }
+
+ IplImage* image_;
+};
+
+
+
+// Image class when both the pixel type and number of channels
+// are known at compile time. This wrapper will speed up some of the operations
+// like accessing individual pixels using the () operator.
+template<typename T, int C>
+class WImageC : public WImage<T>
+{
+public:
+ typedef typename WImage<T>::BaseType BaseType;
+ enum { kChannels = C };
+
+ explicit WImageC(IplImage* img) : WImage<T>(img) {
+ assert(!img || img->nChannels == Channels());
+ }
+
+ // Construct a view into a region of this image
+ WImageViewC<T, C> View(int c, int r, int width, int height);
+
+ // Copy the contents from another image which is just a convenience to cvCopy
+ void CopyFrom(const WImageC<T, C>& src) {
+ cvCopy(src.Ipl(), WImage<T>::image_);
+ }
+
+ // WImageC is an abstract class with no other virtual methods so make the
+ // destructor virtual.
+ virtual ~WImageC() = 0;
+
+ int Channels() const {return C; }
+
+protected:
+ // Disallow copy and assignment
+ WImageC(const WImageC&);
+ void operator=(const WImageC&);
+
+ void SetIpl(IplImage* image) {
+ assert(!image || image->depth == WImage<T>::Depth());
+ WImage<T>::SetIpl(image);
+ }
+};
+
+//
+// WImageBuffer definitions
+//
+// Image class which owns the data, so it can be allocated and is always
+// freed. It cannot be copied but can be explicity cloned.
+//
+template<typename T>
+class WImageBuffer : public WImage<T>
+{
+public:
+ typedef typename WImage<T>::BaseType BaseType;
+
+ // Default constructor which creates an object that can be
+ WImageBuffer() : WImage<T>(0) {}
+
+ WImageBuffer(int width, int height, int nchannels) : WImage<T>(0) {
+ Allocate(width, height, nchannels);
+ }
+
+ // Constructor which takes ownership of a given IplImage so releases
+ // the image on destruction.
+ explicit WImageBuffer(IplImage* img) : WImage<T>(img) {}
+
+ // Allocate an image. Does nothing if current size is the same as
+ // the new size.
+ void Allocate(int width, int height, int nchannels);
+
+ // Set the data to point to an image, releasing the old data
+ void SetIpl(IplImage* img) {
+ ReleaseImage();
+ WImage<T>::SetIpl(img);
+ }
+
+ // Clone an image which reallocates the image if of a different dimension.
+ void CloneFrom(const WImage<T>& src) {
+ Allocate(src.Width(), src.Height(), src.Channels());
+ CopyFrom(src);
+ }
+
+ ~WImageBuffer() {
+ ReleaseImage();
+ }
+
+ // Release the image if it isn't null.
+ void ReleaseImage() {
+ if (WImage<T>::image_) {
+ IplImage* image = WImage<T>::image_;
+ cvReleaseImage(&image);
+ WImage<T>::SetIpl(0);
+ }
+ }
+
+ bool IsNull() const {return WImage<T>::image_ == NULL; }
+
+private:
+ // Disallow copy and assignment
+ WImageBuffer(const WImageBuffer&);
+ void operator=(const WImageBuffer&);
+};
+
+// Like a WImageBuffer class but when the number of channels is known
+// at compile time.
+template<typename T, int C>
+class WImageBufferC : public WImageC<T, C>
+{
+public:
+ typedef typename WImage<T>::BaseType BaseType;
+ enum { kChannels = C };
+
+ // Default constructor which creates an object that can be
+ WImageBufferC() : WImageC<T, C>(0) {}
+
+ WImageBufferC(int width, int height) : WImageC<T, C>(0) {
+ Allocate(width, height);
+ }
+
+ // Constructor which takes ownership of a given IplImage so releases
+ // the image on destruction.
+ explicit WImageBufferC(IplImage* img) : WImageC<T, C>(img) {}
+
+ // Allocate an image. Does nothing if current size is the same as
+ // the new size.
+ void Allocate(int width, int height);
+
+ // Set the data to point to an image, releasing the old data
+ void SetIpl(IplImage* img) {
+ ReleaseImage();
+ WImageC<T, C>::SetIpl(img);
+ }
+
+ // Clone an image which reallocates the image if of a different dimension.
+ void CloneFrom(const WImageC<T, C>& src) {
+ Allocate(src.Width(), src.Height());
+ CopyFrom(src);
+ }
+
+ ~WImageBufferC() {
+ ReleaseImage();
+ }
+
+ // Release the image if it isn't null.
+ void ReleaseImage() {
+ if (WImage<T>::image_) {
+ IplImage* image = WImage<T>::image_;
+ cvReleaseImage(&image);
+ WImageC<T, C>::SetIpl(0);
+ }
+ }
+
+ bool IsNull() const {return WImage<T>::image_ == NULL; }
+
+private:
+ // Disallow copy and assignment
+ WImageBufferC(const WImageBufferC&);
+ void operator=(const WImageBufferC&);
+};
+
+//
+// WImageView definitions
+//
+// View into an image class which allows treating a subimage as an image
+// or treating external data as an image
+//
+template<typename T>
+class WImageView : public WImage<T>
+{
+public:
+ typedef typename WImage<T>::BaseType BaseType;
+
+ // Construct a subimage. No checks are done that the subimage lies
+ // completely inside the original image.
+ WImageView(WImage<T>* img, int c, int r, int width, int height);
+
+ // Refer to external data.
+ // If not given width_step assumed to be same as width.
+ WImageView(T* data, int width, int height, int channels, int width_step = -1);
+
+ // Refer to external data. This does NOT take ownership
+ // of the supplied IplImage.
+ WImageView(IplImage* img) : WImage<T>(img) {}
+
+ // Copy constructor
+ WImageView(const WImage<T>& img) : WImage<T>(0) {
+ header_ = *(img.Ipl());
+ WImage<T>::SetIpl(&header_);
+ }
+
+ WImageView& operator=(const WImage<T>& img) {
+ header_ = *(img.Ipl());
+ WImage<T>::SetIpl(&header_);
+ return *this;
+ }
+
+protected:
+ IplImage header_;
+};
+
+
+template<typename T, int C>
+class WImageViewC : public WImageC<T, C>
+{
+public:
+ typedef typename WImage<T>::BaseType BaseType;
+ enum { kChannels = C };
+
+ // Default constructor needed for vectors of views.
+ WImageViewC();
+
+ virtual ~WImageViewC() {}
+
+ // Construct a subimage. No checks are done that the subimage lies
+ // completely inside the original image.
+ WImageViewC(WImageC<T, C>* img,
+ int c, int r, int width, int height);
+
+ // Refer to external data
+ WImageViewC(T* data, int width, int height, int width_step = -1);
+
+ // Refer to external data. This does NOT take ownership
+ // of the supplied IplImage.
+ WImageViewC(IplImage* img) : WImageC<T, C>(img) {}
+
+ // Copy constructor which does a shallow copy to allow multiple views
+ // of same data. gcc-4.1.1 gets confused if both versions of
+ // the constructor and assignment operator are not provided.
+ WImageViewC(const WImageC<T, C>& img) : WImageC<T, C>(0) {
+ header_ = *(img.Ipl());
+ WImageC<T, C>::SetIpl(&header_);
+ }
+ WImageViewC(const WImageViewC<T, C>& img) : WImageC<T, C>(0) {
+ header_ = *(img.Ipl());
+ WImageC<T, C>::SetIpl(&header_);
+ }
+
+ WImageViewC& operator=(const WImageC<T, C>& img) {
+ header_ = *(img.Ipl());
+ WImageC<T, C>::SetIpl(&header_);
+ return *this;
+ }
+ WImageViewC& operator=(const WImageViewC<T, C>& img) {
+ header_ = *(img.Ipl());
+ WImageC<T, C>::SetIpl(&header_);
+ return *this;
+ }
+
+protected:
+ IplImage header_;
+};
+
+
+// Specializations for depth
+template<>
+inline int WImage<uchar>::Depth() const {return IPL_DEPTH_8U; }
+template<>
+inline int WImage<signed char>::Depth() const {return IPL_DEPTH_8S; }
+template<>
+inline int WImage<short>::Depth() const {return IPL_DEPTH_16S; }
+template<>
+inline int WImage<ushort>::Depth() const {return IPL_DEPTH_16U; }
+template<>
+inline int WImage<int>::Depth() const {return IPL_DEPTH_32S; }
+template<>
+inline int WImage<float>::Depth() const {return IPL_DEPTH_32F; }
+template<>
+inline int WImage<double>::Depth() const {return IPL_DEPTH_64F; }
+
+//
+// Pure virtual destructors still need to be defined.
+//
+template<typename T> inline WImage<T>::~WImage() {}
+template<typename T, int C> inline WImageC<T, C>::~WImageC() {}
+
+//
+// Allocate ImageData
+//
+template<typename T>
+inline void WImageBuffer<T>::Allocate(int width, int height, int nchannels)
+{
+ if (IsNull() || WImage<T>::Width() != width ||
+ WImage<T>::Height() != height || WImage<T>::Channels() != nchannels) {
+ ReleaseImage();
+ WImage<T>::image_ = cvCreateImage(cvSize(width, height),
+ WImage<T>::Depth(), nchannels);
+ }
+}
+
+template<typename T, int C>
+inline void WImageBufferC<T, C>::Allocate(int width, int height)
+{
+ if (IsNull() || WImage<T>::Width() != width || WImage<T>::Height() != height) {
+ ReleaseImage();
+ WImageC<T, C>::SetIpl(cvCreateImage(cvSize(width, height),WImage<T>::Depth(), C));
+ }
+}
+
+//
+// ImageView methods
+//
+template<typename T>
+WImageView<T>::WImageView(WImage<T>* img, int c, int r, int width, int height)
+ : WImage<T>(0)
+{
+ header_ = *(img->Ipl());
+ header_.imageData = reinterpret_cast<char*>((*img)(c, r));
+ header_.width = width;
+ header_.height = height;
+ WImage<T>::SetIpl(&header_);
+}
+
+template<typename T>
+WImageView<T>::WImageView(T* data, int width, int height, int nchannels, int width_step)
+ : WImage<T>(0)
+{
+ cvInitImageHeader(&header_, cvSize(width, height), WImage<T>::Depth(), nchannels);
+ header_.imageData = reinterpret_cast<char*>(data);
+ if (width_step > 0) {
+ header_.widthStep = width_step;
+ }
+ WImage<T>::SetIpl(&header_);
+}
+
+template<typename T, int C>
+WImageViewC<T, C>::WImageViewC(WImageC<T, C>* img, int c, int r, int width, int height)
+ : WImageC<T, C>(0)
+{
+ header_ = *(img->Ipl());
+ header_.imageData = reinterpret_cast<char*>((*img)(c, r));
+ header_.width = width;
+ header_.height = height;
+ WImageC<T, C>::SetIpl(&header_);
+}
+
+template<typename T, int C>
+WImageViewC<T, C>::WImageViewC() : WImageC<T, C>(0) {
+ cvInitImageHeader(&header_, cvSize(0, 0), WImage<T>::Depth(), C);
+ header_.imageData = reinterpret_cast<char*>(0);
+ WImageC<T, C>::SetIpl(&header_);
+}
+
+template<typename T, int C>
+WImageViewC<T, C>::WImageViewC(T* data, int width, int height, int width_step)
+ : WImageC<T, C>(0)
+{
+ cvInitImageHeader(&header_, cvSize(width, height), WImage<T>::Depth(), C);
+ header_.imageData = reinterpret_cast<char*>(data);
+ if (width_step > 0) {
+ header_.widthStep = width_step;
+ }
+ WImageC<T, C>::SetIpl(&header_);
+}
+
+// Construct a view into a region of an image
+template<typename T>
+WImageView<T> WImage<T>::View(int c, int r, int width, int height) {
+ return WImageView<T>(this, c, r, width, height);
+}
+
+template<typename T, int C>
+WImageViewC<T, C> WImageC<T, C>::View(int c, int r, int width, int height) {
+ return WImageViewC<T, C>(this, c, r, width, height);
+}
+
+} // end of namespace
+
+#endif // __cplusplus
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/features2d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/features2d.hpp
new file mode 100644
index 00000000..3ab3273f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/features2d.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/features2d/features2d.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/features2d/features2d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/features2d/features2d.hpp
new file mode 100644
index 00000000..e4e796fb
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/features2d/features2d.hpp
@@ -0,0 +1,1616 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_FEATURES_2D_HPP__
+#define __OPENCV_FEATURES_2D_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/flann/miniflann.hpp"
+
+#ifdef __cplusplus
+#include <limits>
+
+namespace cv
+{
+
+CV_EXPORTS bool initModule_features2d();
+
+/*!
+ The Keypoint Class
+
+ The class instance stores a keypoint, i.e. a point feature found by one of many available keypoint detectors, such as
+ Harris corner detector, cv::FAST, cv::StarDetector, cv::SURF, cv::SIFT, cv::LDetector etc.
+
+ The keypoint is characterized by the 2D position, scale
+ (proportional to the diameter of the neighborhood that needs to be taken into account),
+ orientation and some other parameters. The keypoint neighborhood is then analyzed by another algorithm that builds a descriptor
+ (usually represented as a feature vector). The keypoints representing the same object in different images can then be matched using
+ cv::KDTree or another method.
+*/
+class CV_EXPORTS_W_SIMPLE KeyPoint
+{
+public:
+ //! the default constructor
+ CV_WRAP KeyPoint() : pt(0,0), size(0), angle(-1), response(0), octave(0), class_id(-1) {}
+ //! the full constructor
+ KeyPoint(Point2f _pt, float _size, float _angle=-1,
+ float _response=0, int _octave=0, int _class_id=-1)
+ : pt(_pt), size(_size), angle(_angle),
+ response(_response), octave(_octave), class_id(_class_id) {}
+ //! another form of the full constructor
+ CV_WRAP KeyPoint(float x, float y, float _size, float _angle=-1,
+ float _response=0, int _octave=0, int _class_id=-1)
+ : pt(x, y), size(_size), angle(_angle),
+ response(_response), octave(_octave), class_id(_class_id) {}
+
+ size_t hash() const;
+
+ //! converts vector of keypoints to vector of points
+ static void convert(const vector<KeyPoint>& keypoints,
+ CV_OUT vector<Point2f>& points2f,
+ const vector<int>& keypointIndexes=vector<int>());
+ //! converts vector of points to the vector of keypoints, where each keypoint is assigned the same size and the same orientation
+ static void convert(const vector<Point2f>& points2f,
+ CV_OUT vector<KeyPoint>& keypoints,
+ float size=1, float response=1, int octave=0, int class_id=-1);
+
+ //! computes overlap for pair of keypoints;
+ //! overlap is a ratio between area of keypoint regions intersection and
+ //! area of keypoint regions union (now keypoint region is circle)
+ static float overlap(const KeyPoint& kp1, const KeyPoint& kp2);
+
+ CV_PROP_RW Point2f pt; //!< coordinates of the keypoints
+ CV_PROP_RW float size; //!< diameter of the meaningful keypoint neighborhood
+ CV_PROP_RW float angle; //!< computed orientation of the keypoint (-1 if not applicable);
+ //!< it's in [0,360) degrees and measured relative to
+ //!< image coordinate system, ie in clockwise.
+ CV_PROP_RW float response; //!< the response by which the most strong keypoints have been selected. Can be used for the further sorting or subsampling
+ CV_PROP_RW int octave; //!< octave (pyramid layer) from which the keypoint has been extracted
+ CV_PROP_RW int class_id; //!< object class (if the keypoints need to be clustered by an object they belong to)
+};
+
+//! writes vector of keypoints to the file storage
+CV_EXPORTS void write(FileStorage& fs, const string& name, const vector<KeyPoint>& keypoints);
+//! reads vector of keypoints from the specified file storage node
+CV_EXPORTS void read(const FileNode& node, CV_OUT vector<KeyPoint>& keypoints);
+
+/*
+ * A class filters a vector of keypoints.
+ * Because now it is difficult to provide a convenient interface for all usage scenarios of the keypoints filter class,
+ * it has only several needed by now static methods.
+ */
+class CV_EXPORTS KeyPointsFilter
+{
+public:
+ KeyPointsFilter(){}
+
+ /*
+ * Remove keypoints within borderPixels of an image edge.
+ */
+ static void runByImageBorder( vector<KeyPoint>& keypoints, Size imageSize, int borderSize );
+ /*
+ * Remove keypoints of sizes out of range.
+ */
+ static void runByKeypointSize( vector<KeyPoint>& keypoints, float minSize,
+ float maxSize=FLT_MAX );
+ /*
+ * Remove keypoints from some image by mask for pixels of this image.
+ */
+ static void runByPixelsMask( vector<KeyPoint>& keypoints, const Mat& mask );
+ /*
+ * Remove duplicated keypoints.
+ */
+ static void removeDuplicated( vector<KeyPoint>& keypoints );
+
+ /*
+ * Retain the specified number of the best keypoints (according to the response)
+ */
+ static void retainBest( vector<KeyPoint>& keypoints, int npoints );
+};
+
+
+/************************************ Base Classes ************************************/
+
+/*
+ * Abstract base class for 2D image feature detectors.
+ */
+class CV_EXPORTS_W FeatureDetector : public virtual Algorithm
+{
+public:
+ virtual ~FeatureDetector();
+
+ /*
+ * Detect keypoints in an image.
+ * image The image.
+ * keypoints The detected keypoints.
+ * mask Mask specifying where to look for keypoints (optional). Must be a char
+ * matrix with non-zero values in the region of interest.
+ */
+ CV_WRAP void detect( const Mat& image, CV_OUT vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ /*
+ * Detect keypoints in an image set.
+ * images Image collection.
+ * keypoints Collection of keypoints detected in an input images. keypoints[i] is a set of keypoints detected in an images[i].
+ * masks Masks for image set. masks[i] is a mask for images[i].
+ */
+ void detect( const vector<Mat>& images, vector<vector<KeyPoint> >& keypoints, const vector<Mat>& masks=vector<Mat>() ) const;
+
+ // Return true if detector object is empty
+ CV_WRAP virtual bool empty() const;
+
+ // Create feature detector by detector name.
+ CV_WRAP static Ptr<FeatureDetector> create( const string& detectorType );
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const = 0;
+
+ /*
+ * Remove keypoints that are not in the mask.
+ * Helper function, useful when wrapping a library call for keypoint detection that
+ * does not support a mask argument.
+ */
+ static void removeInvalidPoints( const Mat& mask, vector<KeyPoint>& keypoints );
+};
+
+
+/*
+ * Abstract base class for computing descriptors for image keypoints.
+ *
+ * In this interface we assume a keypoint descriptor can be represented as a
+ * dense, fixed-dimensional vector of some basic type. Most descriptors used
+ * in practice follow this pattern, as it makes it very easy to compute
+ * distances between descriptors. Therefore we represent a collection of
+ * descriptors as a Mat, where each row is one keypoint descriptor.
+ */
+class CV_EXPORTS_W DescriptorExtractor : public virtual Algorithm
+{
+public:
+ virtual ~DescriptorExtractor();
+
+ /*
+ * Compute the descriptors for a set of keypoints in an image.
+ * image The image.
+ * keypoints The input keypoints. Keypoints for which a descriptor cannot be computed are removed.
+ * descriptors Copmputed descriptors. Row i is the descriptor for keypoint i.
+ */
+ CV_WRAP void compute( const Mat& image, CV_OUT CV_IN_OUT vector<KeyPoint>& keypoints, CV_OUT Mat& descriptors ) const;
+
+ /*
+ * Compute the descriptors for a keypoints collection detected in image collection.
+ * images Image collection.
+ * keypoints Input keypoints collection. keypoints[i] is keypoints detected in images[i].
+ * Keypoints for which a descriptor cannot be computed are removed.
+ * descriptors Descriptor collection. descriptors[i] are descriptors computed for set keypoints[i].
+ */
+ void compute( const vector<Mat>& images, vector<vector<KeyPoint> >& keypoints, vector<Mat>& descriptors ) const;
+
+ CV_WRAP virtual int descriptorSize() const = 0;
+ CV_WRAP virtual int descriptorType() const = 0;
+
+ CV_WRAP virtual bool empty() const;
+
+ CV_WRAP static Ptr<DescriptorExtractor> create( const string& descriptorExtractorType );
+
+protected:
+ virtual void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const = 0;
+
+ /*
+ * Remove keypoints within borderPixels of an image edge.
+ */
+ static void removeBorderKeypoints( vector<KeyPoint>& keypoints,
+ Size imageSize, int borderSize );
+};
+
+
+
+/*
+ * Abstract base class for simultaneous 2D feature detection descriptor extraction.
+ */
+class CV_EXPORTS_W Feature2D : public FeatureDetector, public DescriptorExtractor
+{
+public:
+ /*
+ * Detect keypoints in an image.
+ * image The image.
+ * keypoints The detected keypoints.
+ * mask Mask specifying where to look for keypoints (optional). Must be a char
+ * matrix with non-zero values in the region of interest.
+ * useProvidedKeypoints If true, the method will skip the detection phase and will compute
+ * descriptors for the provided keypoints
+ */
+ CV_WRAP_AS(detectAndCompute) virtual void operator()( InputArray image, InputArray mask,
+ CV_OUT vector<KeyPoint>& keypoints,
+ OutputArray descriptors,
+ bool useProvidedKeypoints=false ) const = 0;
+
+ CV_WRAP void compute( const Mat& image, CV_OUT CV_IN_OUT std::vector<KeyPoint>& keypoints, CV_OUT Mat& descriptors ) const;
+
+ // Create feature detector and descriptor extractor by name.
+ CV_WRAP static Ptr<Feature2D> create( const string& name );
+};
+
+/*!
+ BRISK implementation
+*/
+class CV_EXPORTS_W BRISK : public Feature2D
+{
+public:
+ CV_WRAP explicit BRISK(int thresh=30, int octaves=3, float patternScale=1.0f);
+
+ virtual ~BRISK();
+
+ // returns the descriptor size in bytes
+ int descriptorSize() const;
+ // returns the descriptor type
+ int descriptorType() const;
+
+ // Compute the BRISK features on an image
+ void operator()(InputArray image, InputArray mask, vector<KeyPoint>& keypoints) const;
+
+ // Compute the BRISK features and descriptors on an image
+ void operator()( InputArray image, InputArray mask, vector<KeyPoint>& keypoints,
+ OutputArray descriptors, bool useProvidedKeypoints=false ) const;
+
+ AlgorithmInfo* info() const;
+
+ // custom setup
+ CV_WRAP explicit BRISK(std::vector<float> &radiusList, std::vector<int> &numberList,
+ float dMax=5.85f, float dMin=8.2f, std::vector<int> indexChange=std::vector<int>());
+
+ // call this to generate the kernel:
+ // circle of radius r (pixels), with n points;
+ // short pairings with dMax, long pairings with dMin
+ CV_WRAP void generateKernel(std::vector<float> &radiusList,
+ std::vector<int> &numberList, float dMax=5.85f, float dMin=8.2f,
+ std::vector<int> indexChange=std::vector<int>());
+
+protected:
+
+ void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ void computeKeypointsNoOrientation(InputArray image, InputArray mask, vector<KeyPoint>& keypoints) const;
+ void computeDescriptorsAndOrOrientation(InputArray image, InputArray mask, vector<KeyPoint>& keypoints,
+ OutputArray descriptors, bool doDescriptors, bool doOrientation,
+ bool useProvidedKeypoints) const;
+
+ // Feature parameters
+ CV_PROP_RW int threshold;
+ CV_PROP_RW int octaves;
+
+ // some helper structures for the Brisk pattern representation
+ struct BriskPatternPoint{
+ float x; // x coordinate relative to center
+ float y; // x coordinate relative to center
+ float sigma; // Gaussian smoothing sigma
+ };
+ struct BriskShortPair{
+ unsigned int i; // index of the first pattern point
+ unsigned int j; // index of other pattern point
+ };
+ struct BriskLongPair{
+ unsigned int i; // index of the first pattern point
+ unsigned int j; // index of other pattern point
+ int weighted_dx; // 1024.0/dx
+ int weighted_dy; // 1024.0/dy
+ };
+ inline int smoothedIntensity(const cv::Mat& image,
+ const cv::Mat& integral,const float key_x,
+ const float key_y, const unsigned int scale,
+ const unsigned int rot, const unsigned int point) const;
+ // pattern properties
+ BriskPatternPoint* patternPoints_; //[i][rotation][scale]
+ unsigned int points_; // total number of collocation points
+ float* scaleList_; // lists the scaling per scale index [scale]
+ unsigned int* sizeList_; // lists the total pattern size per scale index [scale]
+ static const unsigned int scales_; // scales discretization
+ static const float scalerange_; // span of sizes 40->4 Octaves - else, this needs to be adjusted...
+ static const unsigned int n_rot_; // discretization of the rotation look-up
+
+ // pairs
+ int strings_; // number of uchars the descriptor consists of
+ float dMax_; // short pair maximum distance
+ float dMin_; // long pair maximum distance
+ BriskShortPair* shortPairs_; // d<_dMax
+ BriskLongPair* longPairs_; // d>_dMin
+ unsigned int noShortPairs_; // number of shortParis
+ unsigned int noLongPairs_; // number of longParis
+
+ // general
+ static const float basicSize_;
+};
+
+
+/*!
+ ORB implementation.
+*/
+class CV_EXPORTS_W ORB : public Feature2D
+{
+public:
+ // the size of the signature in bytes
+ enum { kBytes = 32, HARRIS_SCORE=0, FAST_SCORE=1 };
+
+ CV_WRAP explicit ORB(int nfeatures = 500, float scaleFactor = 1.2f, int nlevels = 8, int edgeThreshold = 31,
+ int firstLevel = 0, int WTA_K=2, int scoreType=ORB::HARRIS_SCORE, int patchSize=31 );
+
+ // returns the descriptor size in bytes
+ int descriptorSize() const;
+ // returns the descriptor type
+ int descriptorType() const;
+
+ // Compute the ORB features and descriptors on an image
+ void operator()(InputArray image, InputArray mask, vector<KeyPoint>& keypoints) const;
+
+ // Compute the ORB features and descriptors on an image
+ void operator()( InputArray image, InputArray mask, vector<KeyPoint>& keypoints,
+ OutputArray descriptors, bool useProvidedKeypoints=false ) const;
+
+ AlgorithmInfo* info() const;
+
+protected:
+
+ void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ CV_PROP_RW int nfeatures;
+ CV_PROP_RW double scaleFactor;
+ CV_PROP_RW int nlevels;
+ CV_PROP_RW int edgeThreshold;
+ CV_PROP_RW int firstLevel;
+ CV_PROP_RW int WTA_K;
+ CV_PROP_RW int scoreType;
+ CV_PROP_RW int patchSize;
+};
+
+typedef ORB OrbFeatureDetector;
+typedef ORB OrbDescriptorExtractor;
+
+/*!
+ FREAK implementation
+*/
+class CV_EXPORTS FREAK : public DescriptorExtractor
+{
+public:
+ /** Constructor
+ * @param orientationNormalized enable orientation normalization
+ * @param scaleNormalized enable scale normalization
+ * @param patternScale scaling of the description pattern
+ * @param nOctaves number of octaves covered by the detected keypoints
+ * @param selectedPairs (optional) user defined selected pairs
+ */
+ explicit FREAK( bool orientationNormalized = true,
+ bool scaleNormalized = true,
+ float patternScale = 22.0f,
+ int nOctaves = 4,
+ const vector<int>& selectedPairs = vector<int>());
+ FREAK( const FREAK& rhs );
+ FREAK& operator=( const FREAK& );
+
+ virtual ~FREAK();
+
+ /** returns the descriptor length in bytes */
+ virtual int descriptorSize() const;
+
+ /** returns the descriptor type */
+ virtual int descriptorType() const;
+
+ /** select the 512 "best description pairs"
+ * @param images grayscale images set
+ * @param keypoints set of detected keypoints
+ * @param corrThresh correlation threshold
+ * @param verbose print construction information
+ * @return list of best pair indexes
+ */
+ vector<int> selectPairs( const vector<Mat>& images, vector<vector<KeyPoint> >& keypoints,
+ const double corrThresh = 0.7, bool verbose = true );
+
+ AlgorithmInfo* info() const;
+
+ enum
+ {
+ NB_SCALES = 64, NB_PAIRS = 512, NB_ORIENPAIRS = 45
+ };
+
+protected:
+ virtual void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+ void buildPattern();
+ uchar meanIntensity( const Mat& image, const Mat& integral, const float kp_x, const float kp_y,
+ const unsigned int scale, const unsigned int rot, const unsigned int point ) const;
+
+ bool orientationNormalized; //true if the orientation is normalized, false otherwise
+ bool scaleNormalized; //true if the scale is normalized, false otherwise
+ double patternScale; //scaling of the pattern
+ int nOctaves; //number of octaves
+ bool extAll; // true if all pairs need to be extracted for pairs selection
+
+ double patternScale0;
+ int nOctaves0;
+ vector<int> selectedPairs0;
+
+ struct PatternPoint
+ {
+ float x; // x coordinate relative to center
+ float y; // x coordinate relative to center
+ float sigma; // Gaussian smoothing sigma
+ };
+
+ struct DescriptionPair
+ {
+ uchar i; // index of the first point
+ uchar j; // index of the second point
+ };
+
+ struct OrientationPair
+ {
+ uchar i; // index of the first point
+ uchar j; // index of the second point
+ int weight_dx; // dx/(norm_sq))*4096
+ int weight_dy; // dy/(norm_sq))*4096
+ };
+
+ vector<PatternPoint> patternLookup; // look-up table for the pattern points (position+sigma of all points at all scales and orientation)
+ int patternSizes[NB_SCALES]; // size of the pattern at a specific scale (used to check if a point is within image boundaries)
+ DescriptionPair descriptionPairs[NB_PAIRS];
+ OrientationPair orientationPairs[NB_ORIENPAIRS];
+};
+
+
+/*!
+ Maximal Stable Extremal Regions class.
+
+ The class implements MSER algorithm introduced by J. Matas.
+ Unlike SIFT, SURF and many other detectors in OpenCV, this is salient region detector,
+ not the salient point detector.
+
+ It returns the regions, each of those is encoded as a contour.
+*/
+class CV_EXPORTS_W MSER : public FeatureDetector
+{
+public:
+ //! the full constructor
+ CV_WRAP explicit MSER( int _delta=5, int _min_area=60, int _max_area=14400,
+ double _max_variation=0.25, double _min_diversity=.2,
+ int _max_evolution=200, double _area_threshold=1.01,
+ double _min_margin=0.003, int _edge_blur_size=5 );
+
+ //! the operator that extracts the MSERs from the image or the specific part of it
+ CV_WRAP_AS(detect) void operator()( const Mat& image, CV_OUT vector<vector<Point> >& msers,
+ const Mat& mask=Mat() ) const;
+ AlgorithmInfo* info() const;
+
+protected:
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ int delta;
+ int minArea;
+ int maxArea;
+ double maxVariation;
+ double minDiversity;
+ int maxEvolution;
+ double areaThreshold;
+ double minMargin;
+ int edgeBlurSize;
+};
+
+typedef MSER MserFeatureDetector;
+
+/*!
+ The "Star" Detector.
+
+ The class implements the keypoint detector introduced by K. Konolige.
+*/
+class CV_EXPORTS_W StarDetector : public FeatureDetector
+{
+public:
+ //! the full constructor
+ CV_WRAP StarDetector(int _maxSize=45, int _responseThreshold=30,
+ int _lineThresholdProjected=10,
+ int _lineThresholdBinarized=8,
+ int _suppressNonmaxSize=5);
+
+ //! finds the keypoints in the image
+ CV_WRAP_AS(detect) void operator()(const Mat& image,
+ CV_OUT vector<KeyPoint>& keypoints) const;
+
+ AlgorithmInfo* info() const;
+
+protected:
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ int maxSize;
+ int responseThreshold;
+ int lineThresholdProjected;
+ int lineThresholdBinarized;
+ int suppressNonmaxSize;
+};
+
+//! detects corners using FAST algorithm by E. Rosten
+CV_EXPORTS void FAST( InputArray image, CV_OUT vector<KeyPoint>& keypoints,
+ int threshold, bool nonmaxSuppression=true );
+
+CV_EXPORTS void FASTX( InputArray image, CV_OUT vector<KeyPoint>& keypoints,
+ int threshold, bool nonmaxSuppression, int type );
+
+class CV_EXPORTS_W FastFeatureDetector : public FeatureDetector
+{
+public:
+
+ enum
+ { // Define it in old class to simplify migration to 2.5
+ TYPE_5_8 = 0, TYPE_7_12 = 1, TYPE_9_16 = 2
+ };
+
+ CV_WRAP FastFeatureDetector( int threshold=10, bool nonmaxSuppression=true );
+ AlgorithmInfo* info() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ int threshold;
+ bool nonmaxSuppression;
+};
+
+
+class CV_EXPORTS_W GFTTDetector : public FeatureDetector
+{
+public:
+ CV_WRAP GFTTDetector( int maxCorners=1000, double qualityLevel=0.01, double minDistance=1,
+ int blockSize=3, bool useHarrisDetector=false, double k=0.04 );
+ AlgorithmInfo* info() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ int nfeatures;
+ double qualityLevel;
+ double minDistance;
+ int blockSize;
+ bool useHarrisDetector;
+ double k;
+};
+
+typedef GFTTDetector GoodFeaturesToTrackDetector;
+typedef StarDetector StarFeatureDetector;
+
+class CV_EXPORTS_W SimpleBlobDetector : public FeatureDetector
+{
+public:
+ struct CV_EXPORTS_W_SIMPLE Params
+ {
+ CV_WRAP Params();
+ CV_PROP_RW float thresholdStep;
+ CV_PROP_RW float minThreshold;
+ CV_PROP_RW float maxThreshold;
+ CV_PROP_RW size_t minRepeatability;
+ CV_PROP_RW float minDistBetweenBlobs;
+
+ CV_PROP_RW bool filterByColor;
+ CV_PROP_RW uchar blobColor;
+
+ CV_PROP_RW bool filterByArea;
+ CV_PROP_RW float minArea, maxArea;
+
+ CV_PROP_RW bool filterByCircularity;
+ CV_PROP_RW float minCircularity, maxCircularity;
+
+ CV_PROP_RW bool filterByInertia;
+ CV_PROP_RW float minInertiaRatio, maxInertiaRatio;
+
+ CV_PROP_RW bool filterByConvexity;
+ CV_PROP_RW float minConvexity, maxConvexity;
+
+ void read( const FileNode& fn );
+ void write( FileStorage& fs ) const;
+ };
+
+ CV_WRAP SimpleBlobDetector(const SimpleBlobDetector::Params &parameters = SimpleBlobDetector::Params());
+
+ virtual void read( const FileNode& fn );
+ virtual void write( FileStorage& fs ) const;
+
+protected:
+ struct CV_EXPORTS Center
+ {
+ Point2d location;
+ double radius;
+ double confidence;
+ };
+
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+ virtual void findBlobs(const Mat &image, const Mat &binaryImage, vector<Center> &centers) const;
+
+ Params params;
+ AlgorithmInfo* info() const;
+};
+
+
+class CV_EXPORTS DenseFeatureDetector : public FeatureDetector
+{
+public:
+ explicit DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1,
+ float featureScaleMul=0.1f,
+ int initXyStep=6, int initImgBound=0,
+ bool varyXyStepWithScale=true,
+ bool varyImgBoundWithScale=false );
+ AlgorithmInfo* info() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ double initFeatureScale;
+ int featureScaleLevels;
+ double featureScaleMul;
+
+ int initXyStep;
+ int initImgBound;
+
+ bool varyXyStepWithScale;
+ bool varyImgBoundWithScale;
+};
+
+/*
+ * Adapts a detector to partition the source image into a grid and detect
+ * points in each cell.
+ */
+class CV_EXPORTS_W GridAdaptedFeatureDetector : public FeatureDetector
+{
+public:
+ /*
+ * detector Detector that will be adapted.
+ * maxTotalKeypoints Maximum count of keypoints detected on the image. Only the strongest keypoints
+ * will be keeped.
+ * gridRows Grid rows count.
+ * gridCols Grid column count.
+ */
+ CV_WRAP GridAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector=0,
+ int maxTotalKeypoints=1000,
+ int gridRows=4, int gridCols=4 );
+
+ // TODO implement read/write
+ virtual bool empty() const;
+
+ AlgorithmInfo* info() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ Ptr<FeatureDetector> detector;
+ int maxTotalKeypoints;
+ int gridRows;
+ int gridCols;
+};
+
+/*
+ * Adapts a detector to detect points over multiple levels of a Gaussian
+ * pyramid. Useful for detectors that are not inherently scaled.
+ */
+class CV_EXPORTS_W PyramidAdaptedFeatureDetector : public FeatureDetector
+{
+public:
+ // maxLevel - The 0-based index of the last pyramid layer
+ CV_WRAP PyramidAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector, int maxLevel=2 );
+
+ // TODO implement read/write
+ virtual bool empty() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ Ptr<FeatureDetector> detector;
+ int maxLevel;
+};
+
+/** \brief A feature detector parameter adjuster, this is used by the DynamicAdaptedFeatureDetector
+ * and is a wrapper for FeatureDetector that allow them to be adjusted after a detection
+ */
+class CV_EXPORTS AdjusterAdapter: public FeatureDetector
+{
+public:
+ /** pure virtual interface
+ */
+ virtual ~AdjusterAdapter() {}
+ /** too few features were detected so, adjust the detector params accordingly
+ * \param min the minimum number of desired features
+ * \param n_detected the number previously detected
+ */
+ virtual void tooFew(int min, int n_detected) = 0;
+ /** too many features were detected so, adjust the detector params accordingly
+ * \param max the maximum number of desired features
+ * \param n_detected the number previously detected
+ */
+ virtual void tooMany(int max, int n_detected) = 0;
+ /** are params maxed out or still valid?
+ * \return false if the parameters can't be adjusted any more
+ */
+ virtual bool good() const = 0;
+
+ virtual Ptr<AdjusterAdapter> clone() const = 0;
+
+ static Ptr<AdjusterAdapter> create( const string& detectorType );
+};
+/** \brief an adaptively adjusting detector that iteratively detects until the desired number
+ * of features are detected.
+ * Beware that this is not thread safe - as the adjustment of parameters breaks the const
+ * of the detection routine...
+ * /TODO Make this const correct and thread safe
+ *
+ * sample usage:
+ //will create a detector that attempts to find 100 - 110 FAST Keypoints, and will at most run
+ //FAST feature detection 10 times until that number of keypoints are found
+ Ptr<FeatureDetector> detector(new DynamicAdaptedFeatureDetector(new FastAdjuster(20,true),100, 110, 10));
+
+ */
+class CV_EXPORTS DynamicAdaptedFeatureDetector: public FeatureDetector
+{
+public:
+
+ /** \param adjuster an AdjusterAdapter that will do the detection and parameter adjustment
+ * \param max_features the maximum desired number of features
+ * \param max_iters the maximum number of times to try to adjust the feature detector params
+ * for the FastAdjuster this can be high, but with Star or Surf this can get time consuming
+ * \param min_features the minimum desired features
+ */
+ DynamicAdaptedFeatureDetector( const Ptr<AdjusterAdapter>& adjuster, int min_features=400, int max_features=500, int max_iters=5 );
+
+ virtual bool empty() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+private:
+ DynamicAdaptedFeatureDetector& operator=(const DynamicAdaptedFeatureDetector&);
+ DynamicAdaptedFeatureDetector(const DynamicAdaptedFeatureDetector&);
+
+ int escape_iters_;
+ int min_features_, max_features_;
+ const Ptr<AdjusterAdapter> adjuster_;
+};
+
+/**\brief an adjust for the FAST detector. This will basically decrement or increment the
+ * threshold by 1
+ */
+class CV_EXPORTS FastAdjuster: public AdjusterAdapter
+{
+public:
+ /**\param init_thresh the initial threshold to start with, default = 20
+ * \param nonmax whether to use non max or not for fast feature detection
+ * \param min_thresh
+ * \param max_thresh
+ */
+ FastAdjuster(int init_thresh=20, bool nonmax=true, int min_thresh=1, int max_thresh=200);
+
+ virtual void tooFew(int minv, int n_detected);
+ virtual void tooMany(int maxv, int n_detected);
+ virtual bool good() const;
+
+ virtual Ptr<AdjusterAdapter> clone() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ int thresh_;
+ bool nonmax_;
+ int init_thresh_, min_thresh_, max_thresh_;
+};
+
+
+/** An adjuster for StarFeatureDetector, this one adjusts the responseThreshold for now
+ * TODO find a faster way to converge the parameters for Star - use CvStarDetectorParams
+ */
+class CV_EXPORTS StarAdjuster: public AdjusterAdapter
+{
+public:
+ StarAdjuster(double initial_thresh=30.0, double min_thresh=2., double max_thresh=200.);
+
+ virtual void tooFew(int minv, int n_detected);
+ virtual void tooMany(int maxv, int n_detected);
+ virtual bool good() const;
+
+ virtual Ptr<AdjusterAdapter> clone() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ double thresh_, init_thresh_, min_thresh_, max_thresh_;
+};
+
+class CV_EXPORTS SurfAdjuster: public AdjusterAdapter
+{
+public:
+ SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 );
+
+ virtual void tooFew(int minv, int n_detected);
+ virtual void tooMany(int maxv, int n_detected);
+ virtual bool good() const;
+
+ virtual Ptr<AdjusterAdapter> clone() const;
+
+protected:
+ virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+
+ double thresh_, init_thresh_, min_thresh_, max_thresh_;
+};
+
+CV_EXPORTS Mat windowedMatchingMask( const vector<KeyPoint>& keypoints1, const vector<KeyPoint>& keypoints2,
+ float maxDeltaX, float maxDeltaY );
+
+
+
+/*
+ * OpponentColorDescriptorExtractor
+ *
+ * Adapts a descriptor extractor to compute descriptors in Opponent Color Space
+ * (refer to van de Sande et al., CGIV 2008 "Color Descriptors for Object Category Recognition").
+ * Input RGB image is transformed in Opponent Color Space. Then unadapted descriptor extractor
+ * (set in constructor) computes descriptors on each of the three channel and concatenate
+ * them into a single color descriptor.
+ */
+class CV_EXPORTS OpponentColorDescriptorExtractor : public DescriptorExtractor
+{
+public:
+ OpponentColorDescriptorExtractor( const Ptr<DescriptorExtractor>& descriptorExtractor );
+
+ virtual void read( const FileNode& );
+ virtual void write( FileStorage& ) const;
+
+ virtual int descriptorSize() const;
+ virtual int descriptorType() const;
+
+ virtual bool empty() const;
+
+protected:
+ virtual void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+
+ Ptr<DescriptorExtractor> descriptorExtractor;
+};
+
+/*
+ * BRIEF Descriptor
+ */
+class CV_EXPORTS BriefDescriptorExtractor : public DescriptorExtractor
+{
+public:
+ static const int PATCH_SIZE = 48;
+ static const int KERNEL_SIZE = 9;
+
+ // bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes.
+ BriefDescriptorExtractor( int bytes = 32 );
+
+ virtual void read( const FileNode& );
+ virtual void write( FileStorage& ) const;
+
+ virtual int descriptorSize() const;
+ virtual int descriptorType() const;
+
+ /// @todo read and write for brief
+
+ AlgorithmInfo* info() const;
+
+protected:
+ virtual void computeImpl(const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors) const;
+
+ typedef void(*PixelTestFn)(const Mat&, const vector<KeyPoint>&, Mat&);
+
+ int bytes_;
+ PixelTestFn test_fn_;
+};
+
+
+/****************************************************************************************\
+* Distance *
+\****************************************************************************************/
+
+template<typename T>
+struct CV_EXPORTS Accumulator
+{
+ typedef T Type;
+};
+
+template<> struct Accumulator<unsigned char> { typedef float Type; };
+template<> struct Accumulator<unsigned short> { typedef float Type; };
+template<> struct Accumulator<char> { typedef float Type; };
+template<> struct Accumulator<short> { typedef float Type; };
+
+/*
+ * Squared Euclidean distance functor
+ */
+template<class T>
+struct CV_EXPORTS SL2
+{
+ enum { normType = NORM_L2SQR };
+ typedef T ValueType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ ResultType operator()( const T* a, const T* b, int size ) const
+ {
+ return normL2Sqr<ValueType, ResultType>(a, b, size);
+ }
+};
+
+/*
+ * Euclidean distance functor
+ */
+template<class T>
+struct CV_EXPORTS L2
+{
+ enum { normType = NORM_L2 };
+ typedef T ValueType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ ResultType operator()( const T* a, const T* b, int size ) const
+ {
+ return (ResultType)sqrt((double)normL2Sqr<ValueType, ResultType>(a, b, size));
+ }
+};
+
+/*
+ * Manhattan distance (city block distance) functor
+ */
+template<class T>
+struct CV_EXPORTS L1
+{
+ enum { normType = NORM_L1 };
+ typedef T ValueType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ ResultType operator()( const T* a, const T* b, int size ) const
+ {
+ return normL1<ValueType, ResultType>(a, b, size);
+ }
+};
+
+/*
+ * Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor
+ * bit count of A exclusive XOR'ed with B
+ */
+struct CV_EXPORTS Hamming
+{
+ enum { normType = NORM_HAMMING };
+ typedef unsigned char ValueType;
+ typedef int ResultType;
+
+ /** this will count the bits in a ^ b
+ */
+ ResultType operator()( const unsigned char* a, const unsigned char* b, int size ) const
+ {
+ return normHamming(a, b, size);
+ }
+};
+
+typedef Hamming HammingLUT;
+
+template<int cellsize> struct HammingMultilevel
+{
+ enum { normType = NORM_HAMMING + (cellsize>1) };
+ typedef unsigned char ValueType;
+ typedef int ResultType;
+
+ ResultType operator()( const unsigned char* a, const unsigned char* b, int size ) const
+ {
+ return normHamming(a, b, size, cellsize);
+ }
+};
+
+/****************************************************************************************\
+* DMatch *
+\****************************************************************************************/
+/*
+ * Struct for matching: query descriptor index, train descriptor index, train image index and distance between descriptors.
+ */
+struct CV_EXPORTS_W_SIMPLE DMatch
+{
+ CV_WRAP DMatch() : queryIdx(-1), trainIdx(-1), imgIdx(-1), distance(FLT_MAX) {}
+ CV_WRAP DMatch( int _queryIdx, int _trainIdx, float _distance ) :
+ queryIdx(_queryIdx), trainIdx(_trainIdx), imgIdx(-1), distance(_distance) {}
+ CV_WRAP DMatch( int _queryIdx, int _trainIdx, int _imgIdx, float _distance ) :
+ queryIdx(_queryIdx), trainIdx(_trainIdx), imgIdx(_imgIdx), distance(_distance) {}
+
+ CV_PROP_RW int queryIdx; // query descriptor index
+ CV_PROP_RW int trainIdx; // train descriptor index
+ CV_PROP_RW int imgIdx; // train image index
+
+ CV_PROP_RW float distance;
+
+ // less is better
+ bool operator<( const DMatch &m ) const
+ {
+ return distance < m.distance;
+ }
+};
+
+/****************************************************************************************\
+* DescriptorMatcher *
+\****************************************************************************************/
+/*
+ * Abstract base class for matching two sets of descriptors.
+ */
+class CV_EXPORTS_W DescriptorMatcher : public Algorithm
+{
+public:
+ virtual ~DescriptorMatcher();
+
+ /*
+ * Add descriptors to train descriptor collection.
+ * descriptors Descriptors to add. Each descriptors[i] is a descriptors set from one image.
+ */
+ CV_WRAP virtual void add( const vector<Mat>& descriptors );
+ /*
+ * Get train descriptors collection.
+ */
+ CV_WRAP const vector<Mat>& getTrainDescriptors() const;
+ /*
+ * Clear train descriptors collection.
+ */
+ CV_WRAP virtual void clear();
+
+ /*
+ * Return true if there are not train descriptors in collection.
+ */
+ CV_WRAP virtual bool empty() const;
+ /*
+ * Return true if the matcher supports mask in match methods.
+ */
+ CV_WRAP virtual bool isMaskSupported() const = 0;
+
+ /*
+ * Train matcher (e.g. train flann index).
+ * In all methods to match the method train() is run every time before matching.
+ * Some descriptor matchers (e.g. BruteForceMatcher) have empty implementation
+ * of this method, other matchers really train their inner structures
+ * (e.g. FlannBasedMatcher trains flann::Index). So nonempty implementation
+ * of train() should check the class object state and do traing/retraining
+ * only if the state requires that (e.g. FlannBasedMatcher trains flann::Index
+ * if it has not trained yet or if new descriptors have been added to the train
+ * collection).
+ */
+ CV_WRAP virtual void train();
+ /*
+ * Group of methods to match descriptors from image pair.
+ * Method train() is run in this methods.
+ */
+ // Find one best match for each query descriptor (if mask is empty).
+ CV_WRAP void match( const Mat& queryDescriptors, const Mat& trainDescriptors,
+ CV_OUT vector<DMatch>& matches, const Mat& mask=Mat() ) const;
+ // Find k best matches for each query descriptor (in increasing order of distances).
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ CV_WRAP void knnMatch( const Mat& queryDescriptors, const Mat& trainDescriptors,
+ CV_OUT vector<vector<DMatch> >& matches, int k,
+ const Mat& mask=Mat(), bool compactResult=false ) const;
+ // Find best matches for each query descriptor which have distance less than
+ // maxDistance (in increasing order of distances).
+ void radiusMatch( const Mat& queryDescriptors, const Mat& trainDescriptors,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const Mat& mask=Mat(), bool compactResult=false ) const;
+ /*
+ * Group of methods to match descriptors from one image to image set.
+ * See description of similar methods for matching image pair above.
+ */
+ CV_WRAP void match( const Mat& queryDescriptors, CV_OUT vector<DMatch>& matches,
+ const vector<Mat>& masks=vector<Mat>() );
+ CV_WRAP void knnMatch( const Mat& queryDescriptors, CV_OUT vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+ void radiusMatch( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+
+ // Reads matcher object from a file node
+ virtual void read( const FileNode& );
+ // Writes matcher object to a file storage
+ virtual void write( FileStorage& ) const;
+
+ // Clone the matcher. If emptyTrainData is false the method create deep copy of the object, i.e. copies
+ // both parameters and train data. If emptyTrainData is true the method create object copy with current parameters
+ // but with empty train data.
+ virtual Ptr<DescriptorMatcher> clone( bool emptyTrainData=false ) const = 0;
+
+ CV_WRAP static Ptr<DescriptorMatcher> create( const string& descriptorMatcherType );
+protected:
+ /*
+ * Class to work with descriptors from several images as with one merged matrix.
+ * It is used e.g. in FlannBasedMatcher.
+ */
+ class CV_EXPORTS DescriptorCollection
+ {
+ public:
+ DescriptorCollection();
+ DescriptorCollection( const DescriptorCollection& collection );
+ virtual ~DescriptorCollection();
+
+ // Vector of matrices "descriptors" will be merged to one matrix "mergedDescriptors" here.
+ void set( const vector<Mat>& descriptors );
+ virtual void clear();
+
+ const Mat& getDescriptors() const;
+ const Mat getDescriptor( int imgIdx, int localDescIdx ) const;
+ const Mat getDescriptor( int globalDescIdx ) const;
+ void getLocalIdx( int globalDescIdx, int& imgIdx, int& localDescIdx ) const;
+
+ int size() const;
+
+ protected:
+ Mat mergedDescriptors;
+ vector<int> startIdxs;
+ };
+
+ // In fact the matching is implemented only by the following two methods. These methods suppose
+ // that the class object has been trained already. Public match methods call these methods
+ // after calling train().
+ virtual void knnMatchImpl( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false ) = 0;
+ virtual void radiusMatchImpl( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false ) = 0;
+
+ static bool isPossibleMatch( const Mat& mask, int queryIdx, int trainIdx );
+ static bool isMaskedOut( const vector<Mat>& masks, int queryIdx );
+
+ static Mat clone_op( Mat m ) { return m.clone(); }
+ void checkMasks( const vector<Mat>& masks, int queryDescriptorsCount ) const;
+
+ // Collection of descriptors from train images.
+ vector<Mat> trainDescCollection;
+};
+
+/*
+ * Brute-force descriptor matcher.
+ *
+ * For each descriptor in the first set, this matcher finds the closest
+ * descriptor in the second set by trying each one.
+ *
+ * For efficiency, BruteForceMatcher is templated on the distance metric.
+ * For float descriptors, a common choice would be cv::L2<float>.
+ */
+class CV_EXPORTS_W BFMatcher : public DescriptorMatcher
+{
+public:
+ CV_WRAP BFMatcher( int normType=NORM_L2, bool crossCheck=false );
+ virtual ~BFMatcher() {}
+
+ virtual bool isMaskSupported() const { return true; }
+
+ virtual Ptr<DescriptorMatcher> clone( bool emptyTrainData=false ) const;
+
+ AlgorithmInfo* info() const;
+protected:
+ virtual void knnMatchImpl( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+ virtual void radiusMatchImpl( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+
+ int normType;
+ bool crossCheck;
+};
+
+
+/*
+ * Flann based matcher
+ */
+class CV_EXPORTS_W FlannBasedMatcher : public DescriptorMatcher
+{
+public:
+ CV_WRAP FlannBasedMatcher( const Ptr<flann::IndexParams>& indexParams=new flann::KDTreeIndexParams(),
+ const Ptr<flann::SearchParams>& searchParams=new flann::SearchParams() );
+
+ virtual void add( const vector<Mat>& descriptors );
+ virtual void clear();
+
+ // Reads matcher object from a file node
+ virtual void read( const FileNode& );
+ // Writes matcher object to a file storage
+ virtual void write( FileStorage& ) const;
+
+ virtual void train();
+ virtual bool isMaskSupported() const;
+
+ virtual Ptr<DescriptorMatcher> clone( bool emptyTrainData=false ) const;
+
+ AlgorithmInfo* info() const;
+protected:
+ static void convertToDMatches( const DescriptorCollection& descriptors,
+ const Mat& indices, const Mat& distances,
+ vector<vector<DMatch> >& matches );
+
+ virtual void knnMatchImpl( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+ virtual void radiusMatchImpl( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+
+ Ptr<flann::IndexParams> indexParams;
+ Ptr<flann::SearchParams> searchParams;
+ Ptr<flann::Index> flannIndex;
+
+ DescriptorCollection mergedDescriptors;
+ int addedDescCount;
+};
+
+/****************************************************************************************\
+* GenericDescriptorMatcher *
+\****************************************************************************************/
+/*
+ * Abstract interface for a keypoint descriptor and matcher
+ */
+class GenericDescriptorMatcher;
+typedef GenericDescriptorMatcher GenericDescriptorMatch;
+
+class CV_EXPORTS GenericDescriptorMatcher
+{
+public:
+ GenericDescriptorMatcher();
+ virtual ~GenericDescriptorMatcher();
+
+ /*
+ * Add train collection: images and keypoints from them.
+ * images A set of train images.
+ * ketpoints Keypoint collection that have been detected on train images.
+ *
+ * Keypoints for which a descriptor cannot be computed are removed. Such keypoints
+ * must be filtered in this method befor adding keypoints to train collection "trainPointCollection".
+ * If inheritor class need perform such prefiltering the method add() must be overloaded.
+ * In the other class methods programmer has access to the train keypoints by a constant link.
+ */
+ virtual void add( const vector<Mat>& images,
+ vector<vector<KeyPoint> >& keypoints );
+
+ const vector<Mat>& getTrainImages() const;
+ const vector<vector<KeyPoint> >& getTrainKeypoints() const;
+
+ /*
+ * Clear images and keypoints storing in train collection.
+ */
+ virtual void clear();
+ /*
+ * Returns true if matcher supports mask to match descriptors.
+ */
+ virtual bool isMaskSupported() = 0;
+ /*
+ * Train some inner structures (e.g. flann index or decision trees).
+ * train() methods is run every time in matching methods. So the method implementation
+ * should has a check whether these inner structures need be trained/retrained or not.
+ */
+ virtual void train();
+
+ /*
+ * Classifies query keypoints.
+ * queryImage The query image
+ * queryKeypoints Keypoints from the query image
+ * trainImage The train image
+ * trainKeypoints Keypoints from the train image
+ */
+ // Classify keypoints from query image under one train image.
+ void classify( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ const Mat& trainImage, vector<KeyPoint>& trainKeypoints ) const;
+ // Classify keypoints from query image under train image collection.
+ void classify( const Mat& queryImage, vector<KeyPoint>& queryKeypoints );
+
+ /*
+ * Group of methods to match keypoints from image pair.
+ * Keypoints for which a descriptor cannot be computed are removed.
+ * train() method is called here.
+ */
+ // Find one best match for each query descriptor (if mask is empty).
+ void match( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ const Mat& trainImage, vector<KeyPoint>& trainKeypoints,
+ vector<DMatch>& matches, const Mat& mask=Mat() ) const;
+ // Find k best matches for each query keypoint (in increasing order of distances).
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows.
+ // If compactResult is true matches vector will not contain matches for fully masked out query descriptors.
+ void knnMatch( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ const Mat& trainImage, vector<KeyPoint>& trainKeypoints,
+ vector<vector<DMatch> >& matches, int k,
+ const Mat& mask=Mat(), bool compactResult=false ) const;
+ // Find best matches for each query descriptor which have distance less than maxDistance (in increasing order of distances).
+ void radiusMatch( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ const Mat& trainImage, vector<KeyPoint>& trainKeypoints,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const Mat& mask=Mat(), bool compactResult=false ) const;
+ /*
+ * Group of methods to match keypoints from one image to image set.
+ * See description of similar methods for matching image pair above.
+ */
+ void match( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<DMatch>& matches, const vector<Mat>& masks=vector<Mat>() );
+ void knnMatch( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+ void radiusMatch( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );
+
+ // Reads matcher object from a file node
+ virtual void read( const FileNode& fn );
+ // Writes matcher object to a file storage
+ virtual void write( FileStorage& fs ) const;
+
+ // Return true if matching object is empty (e.g. feature detector or descriptor matcher are empty)
+ virtual bool empty() const;
+
+ // Clone the matcher. If emptyTrainData is false the method create deep copy of the object, i.e. copies
+ // both parameters and train data. If emptyTrainData is true the method create object copy with current parameters
+ // but with empty train data.
+ virtual Ptr<GenericDescriptorMatcher> clone( bool emptyTrainData=false ) const = 0;
+
+ static Ptr<GenericDescriptorMatcher> create( const string& genericDescritptorMatcherType,
+ const string &paramsFilename=string() );
+
+protected:
+ // In fact the matching is implemented only by the following two methods. These methods suppose
+ // that the class object has been trained already. Public match methods call these methods
+ // after calling train().
+ virtual void knnMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks, bool compactResult ) = 0;
+ virtual void radiusMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks, bool compactResult ) = 0;
+ /*
+ * A storage for sets of keypoints together with corresponding images and class IDs
+ */
+ class CV_EXPORTS KeyPointCollection
+ {
+ public:
+ KeyPointCollection();
+ KeyPointCollection( const KeyPointCollection& collection );
+ void add( const vector<Mat>& images, const vector<vector<KeyPoint> >& keypoints );
+ void clear();
+
+ // Returns the total number of keypoints in the collection
+ size_t keypointCount() const;
+ size_t imageCount() const;
+
+ const vector<vector<KeyPoint> >& getKeypoints() const;
+ const vector<KeyPoint>& getKeypoints( int imgIdx ) const;
+ const KeyPoint& getKeyPoint( int imgIdx, int localPointIdx ) const;
+ const KeyPoint& getKeyPoint( int globalPointIdx ) const;
+ void getLocalIdx( int globalPointIdx, int& imgIdx, int& localPointIdx ) const;
+
+ const vector<Mat>& getImages() const;
+ const Mat& getImage( int imgIdx ) const;
+
+ protected:
+ int pointCount;
+
+ vector<Mat> images;
+ vector<vector<KeyPoint> > keypoints;
+ // global indices of the first points in each image, startIndices.size() = keypoints.size()
+ vector<int> startIndices;
+
+ private:
+ static Mat clone_op( Mat m ) { return m.clone(); }
+ };
+
+ KeyPointCollection trainPointCollection;
+};
+
+
+/****************************************************************************************\
+* VectorDescriptorMatcher *
+\****************************************************************************************/
+
+/*
+ * A class used for matching descriptors that can be described as vectors in a finite-dimensional space
+ */
+class VectorDescriptorMatcher;
+typedef VectorDescriptorMatcher VectorDescriptorMatch;
+
+class CV_EXPORTS VectorDescriptorMatcher : public GenericDescriptorMatcher
+{
+public:
+ VectorDescriptorMatcher( const Ptr<DescriptorExtractor>& extractor, const Ptr<DescriptorMatcher>& matcher );
+ virtual ~VectorDescriptorMatcher();
+
+ virtual void add( const vector<Mat>& imgCollection,
+ vector<vector<KeyPoint> >& pointCollection );
+
+ virtual void clear();
+
+ virtual void train();
+
+ virtual bool isMaskSupported();
+
+ virtual void read( const FileNode& fn );
+ virtual void write( FileStorage& fs ) const;
+ virtual bool empty() const;
+
+ virtual Ptr<GenericDescriptorMatcher> clone( bool emptyTrainData=false ) const;
+
+protected:
+ virtual void knnMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks, bool compactResult );
+ virtual void radiusMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks, bool compactResult );
+
+ Ptr<DescriptorExtractor> extractor;
+ Ptr<DescriptorMatcher> matcher;
+};
+
+/****************************************************************************************\
+* Drawing functions *
+\****************************************************************************************/
+struct CV_EXPORTS DrawMatchesFlags
+{
+ enum{ DEFAULT = 0, // Output image matrix will be created (Mat::create),
+ // i.e. existing memory of output image may be reused.
+ // Two source image, matches and single keypoints will be drawn.
+ // For each keypoint only the center point will be drawn (without
+ // the circle around keypoint with keypoint size and orientation).
+ DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create).
+ // Matches will be drawn on existing content of output image.
+ NOT_DRAW_SINGLE_POINTS = 2, // Single keypoints will not be drawn.
+ DRAW_RICH_KEYPOINTS = 4 // For each keypoint the circle around keypoint with keypoint size and
+ // orientation will be drawn.
+ };
+};
+
+// Draw keypoints.
+CV_EXPORTS_W void drawKeypoints( const Mat& image, const vector<KeyPoint>& keypoints, CV_OUT Mat& outImage,
+ const Scalar& color=Scalar::all(-1), int flags=DrawMatchesFlags::DEFAULT );
+
+// Draws matches of keypints from two images on output image.
+CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1,
+ const Mat& img2, const vector<KeyPoint>& keypoints2,
+ const vector<DMatch>& matches1to2, Mat& outImg,
+ const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1),
+ const vector<char>& matchesMask=vector<char>(), int flags=DrawMatchesFlags::DEFAULT );
+
+CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1,
+ const Mat& img2, const vector<KeyPoint>& keypoints2,
+ const vector<vector<DMatch> >& matches1to2, Mat& outImg,
+ const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1),
+ const vector<vector<char> >& matchesMask=vector<vector<char> >(), int flags=DrawMatchesFlags::DEFAULT );
+
+/****************************************************************************************\
+* Functions to evaluate the feature detectors and [generic] descriptor extractors *
+\****************************************************************************************/
+
+CV_EXPORTS void evaluateFeatureDetector( const Mat& img1, const Mat& img2, const Mat& H1to2,
+ vector<KeyPoint>* keypoints1, vector<KeyPoint>* keypoints2,
+ float& repeatability, int& correspCount,
+ const Ptr<FeatureDetector>& fdetector=Ptr<FeatureDetector>() );
+
+CV_EXPORTS void computeRecallPrecisionCurve( const vector<vector<DMatch> >& matches1to2,
+ const vector<vector<uchar> >& correctMatches1to2Mask,
+ vector<Point2f>& recallPrecisionCurve );
+
+CV_EXPORTS float getRecall( const vector<Point2f>& recallPrecisionCurve, float l_precision );
+CV_EXPORTS int getNearestPoint( const vector<Point2f>& recallPrecisionCurve, float l_precision );
+
+CV_EXPORTS void evaluateGenericDescriptorMatcher( const Mat& img1, const Mat& img2, const Mat& H1to2,
+ vector<KeyPoint>& keypoints1, vector<KeyPoint>& keypoints2,
+ vector<vector<DMatch> >* matches1to2, vector<vector<uchar> >* correctMatches1to2Mask,
+ vector<Point2f>& recallPrecisionCurve,
+ const Ptr<GenericDescriptorMatcher>& dmatch=Ptr<GenericDescriptorMatcher>() );
+
+
+/****************************************************************************************\
+* Bag of visual words *
+\****************************************************************************************/
+/*
+ * Abstract base class for training of a 'bag of visual words' vocabulary from a set of descriptors
+ */
+class CV_EXPORTS_W BOWTrainer
+{
+public:
+ BOWTrainer();
+ virtual ~BOWTrainer();
+
+ CV_WRAP void add( const Mat& descriptors );
+ CV_WRAP const vector<Mat>& getDescriptors() const;
+ CV_WRAP int descripotorsCount() const;
+
+ CV_WRAP virtual void clear();
+
+ /*
+ * Train visual words vocabulary, that is cluster training descriptors and
+ * compute cluster centers.
+ * Returns cluster centers.
+ *
+ * descriptors Training descriptors computed on images keypoints.
+ */
+ CV_WRAP virtual Mat cluster() const = 0;
+ CV_WRAP virtual Mat cluster( const Mat& descriptors ) const = 0;
+
+protected:
+ vector<Mat> descriptors;
+ int size;
+};
+
+/*
+ * This is BOWTrainer using cv::kmeans to get vocabulary.
+ */
+class CV_EXPORTS_W BOWKMeansTrainer : public BOWTrainer
+{
+public:
+ CV_WRAP BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(),
+ int attempts=3, int flags=KMEANS_PP_CENTERS );
+ virtual ~BOWKMeansTrainer();
+
+ // Returns trained vocabulary (i.e. cluster centers).
+ CV_WRAP virtual Mat cluster() const;
+ CV_WRAP virtual Mat cluster( const Mat& descriptors ) const;
+
+protected:
+
+ int clusterCount;
+ TermCriteria termcrit;
+ int attempts;
+ int flags;
+};
+
+/*
+ * Class to compute image descriptor using bag of visual words.
+ */
+class CV_EXPORTS_W BOWImgDescriptorExtractor
+{
+public:
+ CV_WRAP BOWImgDescriptorExtractor( const Ptr<DescriptorExtractor>& dextractor,
+ const Ptr<DescriptorMatcher>& dmatcher );
+ virtual ~BOWImgDescriptorExtractor();
+
+ CV_WRAP void setVocabulary( const Mat& vocabulary );
+ CV_WRAP const Mat& getVocabulary() const;
+ void compute( const Mat& image, vector<KeyPoint>& keypoints, Mat& imgDescriptor,
+ vector<vector<int> >* pointIdxsOfClusters=0, Mat* descriptors=0 );
+ // compute() is not constant because DescriptorMatcher::match is not constant
+
+ CV_WRAP_AS(compute) void compute2( const Mat& image, vector<KeyPoint>& keypoints, CV_OUT Mat& imgDescriptor )
+ { compute(image,keypoints,imgDescriptor); }
+
+ CV_WRAP int descriptorSize() const;
+ CV_WRAP int descriptorType() const;
+
+protected:
+ Mat vocabulary;
+ Ptr<DescriptorExtractor> dextractor;
+ Ptr<DescriptorMatcher> dmatcher;
+};
+
+} /* namespace cv */
+
+#endif /* __cplusplus */
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann.hpp
new file mode 100644
index 00000000..ea8fcd73
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/flann/flann.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/all_indices.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/all_indices.h
new file mode 100644
index 00000000..ff53fd84
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/all_indices.h
@@ -0,0 +1,155 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+
+#ifndef OPENCV_FLANN_ALL_INDICES_H_
+#define OPENCV_FLANN_ALL_INDICES_H_
+
+#include "general.h"
+
+#include "nn_index.h"
+#include "kdtree_index.h"
+#include "kdtree_single_index.h"
+#include "kmeans_index.h"
+#include "composite_index.h"
+#include "linear_index.h"
+#include "hierarchical_clustering_index.h"
+#include "lsh_index.h"
+#include "autotuned_index.h"
+
+
+namespace cvflann
+{
+
+template<typename KDTreeCapability, typename VectorSpace, typename Distance>
+struct index_creator
+{
+ static NNIndex<Distance>* create(const Matrix<typename Distance::ElementType>& dataset, const IndexParams& params, const Distance& distance)
+ {
+ flann_algorithm_t index_type = get_param<flann_algorithm_t>(params, "algorithm");
+
+ NNIndex<Distance>* nnIndex;
+ switch (index_type) {
+ case FLANN_INDEX_LINEAR:
+ nnIndex = new LinearIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_KDTREE_SINGLE:
+ nnIndex = new KDTreeSingleIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_KDTREE:
+ nnIndex = new KDTreeIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_KMEANS:
+ nnIndex = new KMeansIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_COMPOSITE:
+ nnIndex = new CompositeIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_AUTOTUNED:
+ nnIndex = new AutotunedIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_HIERARCHICAL:
+ nnIndex = new HierarchicalClusteringIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_LSH:
+ nnIndex = new LshIndex<Distance>(dataset, params, distance);
+ break;
+ default:
+ throw FLANNException("Unknown index type");
+ }
+
+ return nnIndex;
+ }
+};
+
+template<typename VectorSpace, typename Distance>
+struct index_creator<False,VectorSpace,Distance>
+{
+ static NNIndex<Distance>* create(const Matrix<typename Distance::ElementType>& dataset, const IndexParams& params, const Distance& distance)
+ {
+ flann_algorithm_t index_type = get_param<flann_algorithm_t>(params, "algorithm");
+
+ NNIndex<Distance>* nnIndex;
+ switch (index_type) {
+ case FLANN_INDEX_LINEAR:
+ nnIndex = new LinearIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_KMEANS:
+ nnIndex = new KMeansIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_HIERARCHICAL:
+ nnIndex = new HierarchicalClusteringIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_LSH:
+ nnIndex = new LshIndex<Distance>(dataset, params, distance);
+ break;
+ default:
+ throw FLANNException("Unknown index type");
+ }
+
+ return nnIndex;
+ }
+};
+
+template<typename Distance>
+struct index_creator<False,False,Distance>
+{
+ static NNIndex<Distance>* create(const Matrix<typename Distance::ElementType>& dataset, const IndexParams& params, const Distance& distance)
+ {
+ flann_algorithm_t index_type = get_param<flann_algorithm_t>(params, "algorithm");
+
+ NNIndex<Distance>* nnIndex;
+ switch (index_type) {
+ case FLANN_INDEX_LINEAR:
+ nnIndex = new LinearIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_HIERARCHICAL:
+ nnIndex = new HierarchicalClusteringIndex<Distance>(dataset, params, distance);
+ break;
+ case FLANN_INDEX_LSH:
+ nnIndex = new LshIndex<Distance>(dataset, params, distance);
+ break;
+ default:
+ throw FLANNException("Unknown index type");
+ }
+
+ return nnIndex;
+ }
+};
+
+template<typename Distance>
+NNIndex<Distance>* create_index_by_type(const Matrix<typename Distance::ElementType>& dataset, const IndexParams& params, const Distance& distance)
+{
+ return index_creator<typename Distance::is_kdtree_distance,
+ typename Distance::is_vector_space_distance,
+ Distance>::create(dataset, params,distance);
+}
+
+}
+
+#endif /* OPENCV_FLANN_ALL_INDICES_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/allocator.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/allocator.h
new file mode 100644
index 00000000..26091d0c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/allocator.h
@@ -0,0 +1,188 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_ALLOCATOR_H_
+#define OPENCV_FLANN_ALLOCATOR_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+
+
+namespace cvflann
+{
+
+/**
+ * Allocates (using C's malloc) a generic type T.
+ *
+ * Params:
+ * count = number of instances to allocate.
+ * Returns: pointer (of type T*) to memory buffer
+ */
+template <typename T>
+T* allocate(size_t count = 1)
+{
+ T* mem = (T*) ::malloc(sizeof(T)*count);
+ return mem;
+}
+
+
+/**
+ * Pooled storage allocator
+ *
+ * The following routines allow for the efficient allocation of storage in
+ * small chunks from a specified pool. Rather than allowing each structure
+ * to be freed individually, an entire pool of storage is freed at once.
+ * This method has two advantages over just using malloc() and free(). First,
+ * it is far more efficient for allocating small objects, as there is
+ * no overhead for remembering all the information needed to free each
+ * object or consolidating fragmented memory. Second, the decision about
+ * how long to keep an object is made at the time of allocation, and there
+ * is no need to track down all the objects to free them.
+ *
+ */
+
+const size_t WORDSIZE=16;
+const size_t BLOCKSIZE=8192;
+
+class PooledAllocator
+{
+ /* We maintain memory alignment to word boundaries by requiring that all
+ allocations be in multiples of the machine wordsize. */
+ /* Size of machine word in bytes. Must be power of 2. */
+ /* Minimum number of bytes requested at a time from the system. Must be multiple of WORDSIZE. */
+
+
+ int remaining; /* Number of bytes left in current block of storage. */
+ void* base; /* Pointer to base of current block of storage. */
+ void* loc; /* Current location in block to next allocate memory. */
+ int blocksize;
+
+
+public:
+ int usedMemory;
+ int wastedMemory;
+
+ /**
+ Default constructor. Initializes a new pool.
+ */
+ PooledAllocator(int blockSize = BLOCKSIZE)
+ {
+ blocksize = blockSize;
+ remaining = 0;
+ base = NULL;
+
+ usedMemory = 0;
+ wastedMemory = 0;
+ }
+
+ /**
+ * Destructor. Frees all the memory allocated in this pool.
+ */
+ ~PooledAllocator()
+ {
+ void* prev;
+
+ while (base != NULL) {
+ prev = *((void**) base); /* Get pointer to prev block. */
+ ::free(base);
+ base = prev;
+ }
+ }
+
+ /**
+ * Returns a pointer to a piece of new memory of the given size in bytes
+ * allocated from the pool.
+ */
+ void* allocateMemory(int size)
+ {
+ int blockSize;
+
+ /* Round size up to a multiple of wordsize. The following expression
+ only works for WORDSIZE that is a power of 2, by masking last bits of
+ incremented size to zero.
+ */
+ size = (size + (WORDSIZE - 1)) & ~(WORDSIZE - 1);
+
+ /* Check whether a new block must be allocated. Note that the first word
+ of a block is reserved for a pointer to the previous block.
+ */
+ if (size > remaining) {
+
+ wastedMemory += remaining;
+
+ /* Allocate new storage. */
+ blockSize = (size + sizeof(void*) + (WORDSIZE-1) > BLOCKSIZE) ?
+ size + sizeof(void*) + (WORDSIZE-1) : BLOCKSIZE;
+
+ // use the standard C malloc to allocate memory
+ void* m = ::malloc(blockSize);
+ if (!m) {
+ fprintf(stderr,"Failed to allocate memory.\n");
+ return NULL;
+ }
+
+ /* Fill first word of new block with pointer to previous block. */
+ ((void**) m)[0] = base;
+ base = m;
+
+ int shift = 0;
+ //int shift = (WORDSIZE - ( (((size_t)m) + sizeof(void*)) & (WORDSIZE-1))) & (WORDSIZE-1);
+
+ remaining = blockSize - sizeof(void*) - shift;
+ loc = ((char*)m + sizeof(void*) + shift);
+ }
+ void* rloc = loc;
+ loc = (char*)loc + size;
+ remaining -= size;
+
+ usedMemory += size;
+
+ return rloc;
+ }
+
+ /**
+ * Allocates (using this pool) a generic type T.
+ *
+ * Params:
+ * count = number of instances to allocate.
+ * Returns: pointer (of type T*) to memory buffer
+ */
+ template <typename T>
+ T* allocate(size_t count = 1)
+ {
+ T* mem = (T*) this->allocateMemory((int)(sizeof(T)*count));
+ return mem;
+ }
+
+};
+
+}
+
+#endif //OPENCV_FLANN_ALLOCATOR_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/any.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/any.h
new file mode 100644
index 00000000..7e3fd797
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/any.h
@@ -0,0 +1,318 @@
+#ifndef OPENCV_FLANN_ANY_H_
+#define OPENCV_FLANN_ANY_H_
+/*
+ * (C) Copyright Christopher Diggins 2005-2011
+ * (C) Copyright Pablo Aguilar 2005
+ * (C) Copyright Kevlin Henney 2001
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt
+ *
+ * Adapted for FLANN by Marius Muja
+ */
+
+#include "defines.h"
+#include <stdexcept>
+#include <ostream>
+#include <typeinfo>
+
+namespace cvflann
+{
+
+namespace anyimpl
+{
+
+struct bad_any_cast
+{
+};
+
+struct empty_any
+{
+};
+
+inline std::ostream& operator <<(std::ostream& out, const empty_any&)
+{
+ out << "[empty_any]";
+ return out;
+}
+
+struct base_any_policy
+{
+ virtual void static_delete(void** x) = 0;
+ virtual void copy_from_value(void const* src, void** dest) = 0;
+ virtual void clone(void* const* src, void** dest) = 0;
+ virtual void move(void* const* src, void** dest) = 0;
+ virtual void* get_value(void** src) = 0;
+ virtual ::size_t get_size() = 0;
+ virtual const std::type_info& type() = 0;
+ virtual void print(std::ostream& out, void* const* src) = 0;
+
+#ifdef OPENCV_CAN_BREAK_BINARY_COMPATIBILITY
+ virtual ~base_any_policy() {}
+#endif
+};
+
+template<typename T>
+struct typed_base_any_policy : base_any_policy
+{
+ virtual ::size_t get_size() { return sizeof(T); }
+ virtual const std::type_info& type() { return typeid(T); }
+
+};
+
+template<typename T>
+struct small_any_policy : typed_base_any_policy<T>
+{
+ virtual void static_delete(void**) { }
+ virtual void copy_from_value(void const* src, void** dest)
+ {
+ new (dest) T(* reinterpret_cast<T const*>(src));
+ }
+ virtual void clone(void* const* src, void** dest) { *dest = *src; }
+ virtual void move(void* const* src, void** dest) { *dest = *src; }
+ virtual void* get_value(void** src) { return reinterpret_cast<void*>(src); }
+ virtual void print(std::ostream& out, void* const* src) { out << *reinterpret_cast<T const*>(src); }
+};
+
+template<typename T>
+struct big_any_policy : typed_base_any_policy<T>
+{
+ virtual void static_delete(void** x)
+ {
+ if (* x) delete (* reinterpret_cast<T**>(x)); *x = NULL;
+ }
+ virtual void copy_from_value(void const* src, void** dest)
+ {
+ *dest = new T(*reinterpret_cast<T const*>(src));
+ }
+ virtual void clone(void* const* src, void** dest)
+ {
+ *dest = new T(**reinterpret_cast<T* const*>(src));
+ }
+ virtual void move(void* const* src, void** dest)
+ {
+ (*reinterpret_cast<T**>(dest))->~T();
+ **reinterpret_cast<T**>(dest) = **reinterpret_cast<T* const*>(src);
+ }
+ virtual void* get_value(void** src) { return *src; }
+ virtual void print(std::ostream& out, void* const* src) { out << *reinterpret_cast<T const*>(*src); }
+};
+
+template<> inline void big_any_policy<flann_centers_init_t>::print(std::ostream& out, void* const* src)
+{
+ out << int(*reinterpret_cast<flann_centers_init_t const*>(*src));
+}
+
+template<> inline void big_any_policy<flann_algorithm_t>::print(std::ostream& out, void* const* src)
+{
+ out << int(*reinterpret_cast<flann_algorithm_t const*>(*src));
+}
+
+template<typename T>
+struct choose_policy
+{
+ typedef big_any_policy<T> type;
+};
+
+template<typename T>
+struct choose_policy<T*>
+{
+ typedef small_any_policy<T*> type;
+};
+
+struct any;
+
+/// Choosing the policy for an any type is illegal, but should never happen.
+/// This is designed to throw a compiler error.
+template<>
+struct choose_policy<any>
+{
+ typedef void type;
+};
+
+/// Specializations for small types.
+#define SMALL_POLICY(TYPE) \
+ template<> \
+ struct choose_policy<TYPE> { typedef small_any_policy<TYPE> type; \
+ }
+
+SMALL_POLICY(signed char);
+SMALL_POLICY(unsigned char);
+SMALL_POLICY(signed short);
+SMALL_POLICY(unsigned short);
+SMALL_POLICY(signed int);
+SMALL_POLICY(unsigned int);
+SMALL_POLICY(signed long);
+SMALL_POLICY(unsigned long);
+SMALL_POLICY(float);
+SMALL_POLICY(bool);
+
+#undef SMALL_POLICY
+
+template <typename T>
+class SinglePolicy
+{
+ SinglePolicy();
+ SinglePolicy(const SinglePolicy& other);
+ SinglePolicy& operator=(const SinglePolicy& other);
+
+public:
+ static base_any_policy* get_policy();
+
+private:
+ static typename choose_policy<T>::type policy;
+};
+
+template <typename T>
+typename choose_policy<T>::type SinglePolicy<T>::policy;
+
+/// This function will return a different policy for each type.
+template <typename T>
+inline base_any_policy* SinglePolicy<T>::get_policy() { return &policy; }
+
+} // namespace anyimpl
+
+struct any
+{
+private:
+ // fields
+ anyimpl::base_any_policy* policy;
+ void* object;
+
+public:
+ /// Initializing constructor.
+ template <typename T>
+ any(const T& x)
+ : policy(anyimpl::SinglePolicy<anyimpl::empty_any>::get_policy()), object(NULL)
+ {
+ assign(x);
+ }
+
+ /// Empty constructor.
+ any()
+ : policy(anyimpl::SinglePolicy<anyimpl::empty_any>::get_policy()), object(NULL)
+ { }
+
+ /// Special initializing constructor for string literals.
+ any(const char* x)
+ : policy(anyimpl::SinglePolicy<anyimpl::empty_any>::get_policy()), object(NULL)
+ {
+ assign(x);
+ }
+
+ /// Copy constructor.
+ any(const any& x)
+ : policy(anyimpl::SinglePolicy<anyimpl::empty_any>::get_policy()), object(NULL)
+ {
+ assign(x);
+ }
+
+ /// Destructor.
+ ~any()
+ {
+ policy->static_delete(&object);
+ }
+
+ /// Assignment function from another any.
+ any& assign(const any& x)
+ {
+ reset();
+ policy = x.policy;
+ policy->clone(&x.object, &object);
+ return *this;
+ }
+
+ /// Assignment function.
+ template <typename T>
+ any& assign(const T& x)
+ {
+ reset();
+ policy = anyimpl::SinglePolicy<T>::get_policy();
+ policy->copy_from_value(&x, &object);
+ return *this;
+ }
+
+ /// Assignment operator.
+ template<typename T>
+ any& operator=(const T& x)
+ {
+ return assign(x);
+ }
+
+ /// Assignment operator, specialed for literal strings.
+ /// They have types like const char [6] which don't work as expected.
+ any& operator=(const char* x)
+ {
+ return assign(x);
+ }
+
+ /// Utility functions
+ any& swap(any& x)
+ {
+ std::swap(policy, x.policy);
+ std::swap(object, x.object);
+ return *this;
+ }
+
+ /// Cast operator. You can only cast to the original type.
+ template<typename T>
+ T& cast()
+ {
+ if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast();
+ T* r = reinterpret_cast<T*>(policy->get_value(&object));
+ return *r;
+ }
+
+ /// Cast operator. You can only cast to the original type.
+ template<typename T>
+ const T& cast() const
+ {
+ if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast();
+ T* r = reinterpret_cast<T*>(policy->get_value(const_cast<void **>(&object)));
+ return *r;
+ }
+
+ /// Returns true if the any contains no value.
+ bool empty() const
+ {
+ return policy->type() == typeid(anyimpl::empty_any);
+ }
+
+ /// Frees any allocated memory, and sets the value to NULL.
+ void reset()
+ {
+ policy->static_delete(&object);
+ policy = anyimpl::SinglePolicy<anyimpl::empty_any>::get_policy();
+ }
+
+ /// Returns true if the two types are the same.
+ bool compatible(const any& x) const
+ {
+ return policy->type() == x.policy->type();
+ }
+
+ /// Returns if the type is compatible with the policy
+ template<typename T>
+ bool has_type()
+ {
+ return policy->type() == typeid(T);
+ }
+
+ const std::type_info& type() const
+ {
+ return policy->type();
+ }
+
+ friend std::ostream& operator <<(std::ostream& out, const any& any_val);
+};
+
+inline std::ostream& operator <<(std::ostream& out, const any& any_val)
+{
+ any_val.policy->print(out,&any_val.object);
+ return out;
+}
+
+}
+
+#endif // OPENCV_FLANN_ANY_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/autotuned_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/autotuned_index.h
new file mode 100644
index 00000000..454641e6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/autotuned_index.h
@@ -0,0 +1,595 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+#ifndef OPENCV_FLANN_AUTOTUNED_INDEX_H_
+#define OPENCV_FLANN_AUTOTUNED_INDEX_H_
+
+#include "general.h"
+#include "nn_index.h"
+#include "ground_truth.h"
+#include "index_testing.h"
+#include "sampling.h"
+#include "kdtree_index.h"
+#include "kdtree_single_index.h"
+#include "kmeans_index.h"
+#include "composite_index.h"
+#include "linear_index.h"
+#include "logger.h"
+
+namespace cvflann
+{
+
+template<typename Distance>
+NNIndex<Distance>* create_index_by_type(const Matrix<typename Distance::ElementType>& dataset, const IndexParams& params, const Distance& distance);
+
+
+struct AutotunedIndexParams : public IndexParams
+{
+ AutotunedIndexParams(float target_precision = 0.8, float build_weight = 0.01, float memory_weight = 0, float sample_fraction = 0.1)
+ {
+ (*this)["algorithm"] = FLANN_INDEX_AUTOTUNED;
+ // precision desired (used for autotuning, -1 otherwise)
+ (*this)["target_precision"] = target_precision;
+ // build tree time weighting factor
+ (*this)["build_weight"] = build_weight;
+ // index memory weighting factor
+ (*this)["memory_weight"] = memory_weight;
+ // what fraction of the dataset to use for autotuning
+ (*this)["sample_fraction"] = sample_fraction;
+ }
+};
+
+
+template <typename Distance>
+class AutotunedIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+ AutotunedIndex(const Matrix<ElementType>& inputData, const IndexParams& params = AutotunedIndexParams(), Distance d = Distance()) :
+ dataset_(inputData), distance_(d)
+ {
+ target_precision_ = get_param(params, "target_precision",0.8f);
+ build_weight_ = get_param(params,"build_weight", 0.01f);
+ memory_weight_ = get_param(params, "memory_weight", 0.0f);
+ sample_fraction_ = get_param(params,"sample_fraction", 0.1f);
+ bestIndex_ = NULL;
+ }
+
+ AutotunedIndex(const AutotunedIndex&);
+ AutotunedIndex& operator=(const AutotunedIndex&);
+
+ virtual ~AutotunedIndex()
+ {
+ if (bestIndex_ != NULL) {
+ delete bestIndex_;
+ bestIndex_ = NULL;
+ }
+ }
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ /**
+ * Method responsible with building the index.
+ */
+ virtual void buildIndex()
+ {
+ std::ostringstream stream;
+ bestParams_ = estimateBuildParams();
+ print_params(bestParams_, stream);
+ Logger::info("----------------------------------------------------\n");
+ Logger::info("Autotuned parameters:\n");
+ Logger::info("%s", stream.str().c_str());
+ Logger::info("----------------------------------------------------\n");
+
+ bestIndex_ = create_index_by_type(dataset_, bestParams_, distance_);
+ bestIndex_->buildIndex();
+ speedup_ = estimateSearchParams(bestSearchParams_);
+ stream.str(std::string());
+ print_params(bestSearchParams_, stream);
+ Logger::info("----------------------------------------------------\n");
+ Logger::info("Search parameters:\n");
+ Logger::info("%s", stream.str().c_str());
+ Logger::info("----------------------------------------------------\n");
+ }
+
+ /**
+ * Saves the index to a stream
+ */
+ virtual void saveIndex(FILE* stream)
+ {
+ save_value(stream, (int)bestIndex_->getType());
+ bestIndex_->saveIndex(stream);
+ save_value(stream, get_param<int>(bestSearchParams_, "checks"));
+ }
+
+ /**
+ * Loads the index from a stream
+ */
+ virtual void loadIndex(FILE* stream)
+ {
+ int index_type;
+
+ load_value(stream, index_type);
+ IndexParams params;
+ params["algorithm"] = (flann_algorithm_t)index_type;
+ bestIndex_ = create_index_by_type<Distance>(dataset_, params, distance_);
+ bestIndex_->loadIndex(stream);
+ int checks;
+ load_value(stream, checks);
+ bestSearchParams_["checks"] = checks;
+ }
+
+ /**
+ * Method that searches for nearest-neighbors
+ */
+ virtual void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+ int checks = get_param<int>(searchParams,"checks",FLANN_CHECKS_AUTOTUNED);
+ if (checks == FLANN_CHECKS_AUTOTUNED) {
+ bestIndex_->findNeighbors(result, vec, bestSearchParams_);
+ }
+ else {
+ bestIndex_->findNeighbors(result, vec, searchParams);
+ }
+ }
+
+
+ IndexParams getParameters() const
+ {
+ return bestIndex_->getParameters();
+ }
+
+ SearchParams getSearchParameters() const
+ {
+ return bestSearchParams_;
+ }
+
+ float getSpeedup() const
+ {
+ return speedup_;
+ }
+
+
+ /**
+ * Number of features in this index.
+ */
+ virtual size_t size() const
+ {
+ return bestIndex_->size();
+ }
+
+ /**
+ * The length of each vector in this index.
+ */
+ virtual size_t veclen() const
+ {
+ return bestIndex_->veclen();
+ }
+
+ /**
+ * The amount of memory (in bytes) this index uses.
+ */
+ virtual int usedMemory() const
+ {
+ return bestIndex_->usedMemory();
+ }
+
+ /**
+ * Algorithm name
+ */
+ virtual flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_AUTOTUNED;
+ }
+
+private:
+
+ struct CostData
+ {
+ float searchTimeCost;
+ float buildTimeCost;
+ float memoryCost;
+ float totalCost;
+ IndexParams params;
+ };
+
+ void evaluate_kmeans(CostData& cost)
+ {
+ StartStopTimer t;
+ int checks;
+ const int nn = 1;
+
+ Logger::info("KMeansTree using params: max_iterations=%d, branching=%d\n",
+ get_param<int>(cost.params,"iterations"),
+ get_param<int>(cost.params,"branching"));
+ KMeansIndex<Distance> kmeans(sampledDataset_, cost.params, distance_);
+ // measure index build time
+ t.start();
+ kmeans.buildIndex();
+ t.stop();
+ float buildTime = (float)t.value;
+
+ // measure search time
+ float searchTime = test_index_precision(kmeans, sampledDataset_, testDataset_, gt_matches_, target_precision_, checks, distance_, nn);
+
+ float datasetMemory = float(sampledDataset_.rows * sampledDataset_.cols * sizeof(float));
+ cost.memoryCost = (kmeans.usedMemory() + datasetMemory) / datasetMemory;
+ cost.searchTimeCost = searchTime;
+ cost.buildTimeCost = buildTime;
+ Logger::info("KMeansTree buildTime=%g, searchTime=%g, build_weight=%g\n", buildTime, searchTime, build_weight_);
+ }
+
+
+ void evaluate_kdtree(CostData& cost)
+ {
+ StartStopTimer t;
+ int checks;
+ const int nn = 1;
+
+ Logger::info("KDTree using params: trees=%d\n", get_param<int>(cost.params,"trees"));
+ KDTreeIndex<Distance> kdtree(sampledDataset_, cost.params, distance_);
+
+ t.start();
+ kdtree.buildIndex();
+ t.stop();
+ float buildTime = (float)t.value;
+
+ //measure search time
+ float searchTime = test_index_precision(kdtree, sampledDataset_, testDataset_, gt_matches_, target_precision_, checks, distance_, nn);
+
+ float datasetMemory = float(sampledDataset_.rows * sampledDataset_.cols * sizeof(float));
+ cost.memoryCost = (kdtree.usedMemory() + datasetMemory) / datasetMemory;
+ cost.searchTimeCost = searchTime;
+ cost.buildTimeCost = buildTime;
+ Logger::info("KDTree buildTime=%g, searchTime=%g\n", buildTime, searchTime);
+ }
+
+
+ // struct KMeansSimpleDownhillFunctor {
+ //
+ // Autotune& autotuner;
+ // KMeansSimpleDownhillFunctor(Autotune& autotuner_) : autotuner(autotuner_) {};
+ //
+ // float operator()(int* params) {
+ //
+ // float maxFloat = numeric_limits<float>::max();
+ //
+ // if (params[0]<2) return maxFloat;
+ // if (params[1]<0) return maxFloat;
+ //
+ // CostData c;
+ // c.params["algorithm"] = KMEANS;
+ // c.params["centers-init"] = CENTERS_RANDOM;
+ // c.params["branching"] = params[0];
+ // c.params["max-iterations"] = params[1];
+ //
+ // autotuner.evaluate_kmeans(c);
+ //
+ // return c.timeCost;
+ //
+ // }
+ // };
+ //
+ // struct KDTreeSimpleDownhillFunctor {
+ //
+ // Autotune& autotuner;
+ // KDTreeSimpleDownhillFunctor(Autotune& autotuner_) : autotuner(autotuner_) {};
+ //
+ // float operator()(int* params) {
+ // float maxFloat = numeric_limits<float>::max();
+ //
+ // if (params[0]<1) return maxFloat;
+ //
+ // CostData c;
+ // c.params["algorithm"] = KDTREE;
+ // c.params["trees"] = params[0];
+ //
+ // autotuner.evaluate_kdtree(c);
+ //
+ // return c.timeCost;
+ //
+ // }
+ // };
+
+
+
+ void optimizeKMeans(std::vector<CostData>& costs)
+ {
+ Logger::info("KMEANS, Step 1: Exploring parameter space\n");
+
+ // explore kmeans parameters space using combinations of the parameters below
+ int maxIterations[] = { 1, 5, 10, 15 };
+ int branchingFactors[] = { 16, 32, 64, 128, 256 };
+
+ int kmeansParamSpaceSize = FLANN_ARRAY_LEN(maxIterations) * FLANN_ARRAY_LEN(branchingFactors);
+ costs.reserve(costs.size() + kmeansParamSpaceSize);
+
+ // evaluate kmeans for all parameter combinations
+ for (size_t i = 0; i < FLANN_ARRAY_LEN(maxIterations); ++i) {
+ for (size_t j = 0; j < FLANN_ARRAY_LEN(branchingFactors); ++j) {
+ CostData cost;
+ cost.params["algorithm"] = FLANN_INDEX_KMEANS;
+ cost.params["centers_init"] = FLANN_CENTERS_RANDOM;
+ cost.params["iterations"] = maxIterations[i];
+ cost.params["branching"] = branchingFactors[j];
+
+ evaluate_kmeans(cost);
+ costs.push_back(cost);
+ }
+ }
+
+ // Logger::info("KMEANS, Step 2: simplex-downhill optimization\n");
+ //
+ // const int n = 2;
+ // // choose initial simplex points as the best parameters so far
+ // int kmeansNMPoints[n*(n+1)];
+ // float kmeansVals[n+1];
+ // for (int i=0;i<n+1;++i) {
+ // kmeansNMPoints[i*n] = (int)kmeansCosts[i].params["branching"];
+ // kmeansNMPoints[i*n+1] = (int)kmeansCosts[i].params["max-iterations"];
+ // kmeansVals[i] = kmeansCosts[i].timeCost;
+ // }
+ // KMeansSimpleDownhillFunctor kmeans_cost_func(*this);
+ // // run optimization
+ // optimizeSimplexDownhill(kmeansNMPoints,n,kmeans_cost_func,kmeansVals);
+ // // store results
+ // for (int i=0;i<n+1;++i) {
+ // kmeansCosts[i].params["branching"] = kmeansNMPoints[i*2];
+ // kmeansCosts[i].params["max-iterations"] = kmeansNMPoints[i*2+1];
+ // kmeansCosts[i].timeCost = kmeansVals[i];
+ // }
+ }
+
+
+ void optimizeKDTree(std::vector<CostData>& costs)
+ {
+ Logger::info("KD-TREE, Step 1: Exploring parameter space\n");
+
+ // explore kd-tree parameters space using the parameters below
+ int testTrees[] = { 1, 4, 8, 16, 32 };
+
+ // evaluate kdtree for all parameter combinations
+ for (size_t i = 0; i < FLANN_ARRAY_LEN(testTrees); ++i) {
+ CostData cost;
+ cost.params["algorithm"] = FLANN_INDEX_KDTREE;
+ cost.params["trees"] = testTrees[i];
+
+ evaluate_kdtree(cost);
+ costs.push_back(cost);
+ }
+
+ // Logger::info("KD-TREE, Step 2: simplex-downhill optimization\n");
+ //
+ // const int n = 1;
+ // // choose initial simplex points as the best parameters so far
+ // int kdtreeNMPoints[n*(n+1)];
+ // float kdtreeVals[n+1];
+ // for (int i=0;i<n+1;++i) {
+ // kdtreeNMPoints[i] = (int)kdtreeCosts[i].params["trees"];
+ // kdtreeVals[i] = kdtreeCosts[i].timeCost;
+ // }
+ // KDTreeSimpleDownhillFunctor kdtree_cost_func(*this);
+ // // run optimization
+ // optimizeSimplexDownhill(kdtreeNMPoints,n,kdtree_cost_func,kdtreeVals);
+ // // store results
+ // for (int i=0;i<n+1;++i) {
+ // kdtreeCosts[i].params["trees"] = kdtreeNMPoints[i];
+ // kdtreeCosts[i].timeCost = kdtreeVals[i];
+ // }
+ }
+
+ /**
+ * Chooses the best nearest-neighbor algorithm and estimates the optimal
+ * parameters to use when building the index (for a given precision).
+ * Returns a dictionary with the optimal parameters.
+ */
+ IndexParams estimateBuildParams()
+ {
+ std::vector<CostData> costs;
+
+ int sampleSize = int(sample_fraction_ * dataset_.rows);
+ int testSampleSize = std::min(sampleSize / 10, 1000);
+
+ Logger::info("Entering autotuning, dataset size: %d, sampleSize: %d, testSampleSize: %d, target precision: %g\n", dataset_.rows, sampleSize, testSampleSize, target_precision_);
+
+ // For a very small dataset, it makes no sense to build any fancy index, just
+ // use linear search
+ if (testSampleSize < 10) {
+ Logger::info("Choosing linear, dataset too small\n");
+ return LinearIndexParams();
+ }
+
+ // We use a fraction of the original dataset to speedup the autotune algorithm
+ sampledDataset_ = random_sample(dataset_, sampleSize);
+ // We use a cross-validation approach, first we sample a testset from the dataset
+ testDataset_ = random_sample(sampledDataset_, testSampleSize, true);
+
+ // We compute the ground truth using linear search
+ Logger::info("Computing ground truth... \n");
+ gt_matches_ = Matrix<int>(new int[testDataset_.rows], testDataset_.rows, 1);
+ StartStopTimer t;
+ t.start();
+ compute_ground_truth<Distance>(sampledDataset_, testDataset_, gt_matches_, 0, distance_);
+ t.stop();
+
+ CostData linear_cost;
+ linear_cost.searchTimeCost = (float)t.value;
+ linear_cost.buildTimeCost = 0;
+ linear_cost.memoryCost = 0;
+ linear_cost.params["algorithm"] = FLANN_INDEX_LINEAR;
+
+ costs.push_back(linear_cost);
+
+ // Start parameter autotune process
+ Logger::info("Autotuning parameters...\n");
+
+ optimizeKMeans(costs);
+ optimizeKDTree(costs);
+
+ float bestTimeCost = costs[0].searchTimeCost;
+ for (size_t i = 0; i < costs.size(); ++i) {
+ float timeCost = costs[i].buildTimeCost * build_weight_ + costs[i].searchTimeCost;
+ if (timeCost < bestTimeCost) {
+ bestTimeCost = timeCost;
+ }
+ }
+
+ float bestCost = costs[0].searchTimeCost / bestTimeCost;
+ IndexParams bestParams = costs[0].params;
+ if (bestTimeCost > 0) {
+ for (size_t i = 0; i < costs.size(); ++i) {
+ float crtCost = (costs[i].buildTimeCost * build_weight_ + costs[i].searchTimeCost) / bestTimeCost +
+ memory_weight_ * costs[i].memoryCost;
+ if (crtCost < bestCost) {
+ bestCost = crtCost;
+ bestParams = costs[i].params;
+ }
+ }
+ }
+
+ delete[] gt_matches_.data;
+ delete[] testDataset_.data;
+ delete[] sampledDataset_.data;
+
+ return bestParams;
+ }
+
+
+
+ /**
+ * Estimates the search time parameters needed to get the desired precision.
+ * Precondition: the index is built
+ * Postcondition: the searchParams will have the optimum params set, also the speedup obtained over linear search.
+ */
+ float estimateSearchParams(SearchParams& searchParams)
+ {
+ const int nn = 1;
+ const size_t SAMPLE_COUNT = 1000;
+
+ assert(bestIndex_ != NULL); // must have a valid index
+
+ float speedup = 0;
+
+ int samples = (int)std::min(dataset_.rows / 10, SAMPLE_COUNT);
+ if (samples > 0) {
+ Matrix<ElementType> testDataset = random_sample(dataset_, samples);
+
+ Logger::info("Computing ground truth\n");
+
+ // we need to compute the ground truth first
+ Matrix<int> gt_matches(new int[testDataset.rows], testDataset.rows, 1);
+ StartStopTimer t;
+ t.start();
+ compute_ground_truth<Distance>(dataset_, testDataset, gt_matches, 1, distance_);
+ t.stop();
+ float linear = (float)t.value;
+
+ int checks;
+ Logger::info("Estimating number of checks\n");
+
+ float searchTime;
+ float cb_index;
+ if (bestIndex_->getType() == FLANN_INDEX_KMEANS) {
+ Logger::info("KMeans algorithm, estimating cluster border factor\n");
+ KMeansIndex<Distance>* kmeans = (KMeansIndex<Distance>*)bestIndex_;
+ float bestSearchTime = -1;
+ float best_cb_index = -1;
+ int best_checks = -1;
+ for (cb_index = 0; cb_index < 1.1f; cb_index += 0.2f) {
+ kmeans->set_cb_index(cb_index);
+ searchTime = test_index_precision(*kmeans, dataset_, testDataset, gt_matches, target_precision_, checks, distance_, nn, 1);
+ if ((searchTime < bestSearchTime) || (bestSearchTime == -1)) {
+ bestSearchTime = searchTime;
+ best_cb_index = cb_index;
+ best_checks = checks;
+ }
+ }
+ searchTime = bestSearchTime;
+ cb_index = best_cb_index;
+ checks = best_checks;
+
+ kmeans->set_cb_index(best_cb_index);
+ Logger::info("Optimum cb_index: %g\n", cb_index);
+ bestParams_["cb_index"] = cb_index;
+ }
+ else {
+ searchTime = test_index_precision(*bestIndex_, dataset_, testDataset, gt_matches, target_precision_, checks, distance_, nn, 1);
+ }
+
+ Logger::info("Required number of checks: %d \n", checks);
+ searchParams["checks"] = checks;
+
+ speedup = linear / searchTime;
+
+ delete[] gt_matches.data;
+ delete[] testDataset.data;
+ }
+
+ return speedup;
+ }
+
+private:
+ NNIndex<Distance>* bestIndex_;
+
+ IndexParams bestParams_;
+ SearchParams bestSearchParams_;
+
+ Matrix<ElementType> sampledDataset_;
+ Matrix<ElementType> testDataset_;
+ Matrix<int> gt_matches_;
+
+ float speedup_;
+
+ /**
+ * The dataset used by this index
+ */
+ const Matrix<ElementType> dataset_;
+
+ /**
+ * Index parameters
+ */
+ float target_precision_;
+ float build_weight_;
+ float memory_weight_;
+ float sample_fraction_;
+
+ Distance distance_;
+
+
+};
+}
+
+#endif /* OPENCV_FLANN_AUTOTUNED_INDEX_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/composite_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/composite_index.h
new file mode 100644
index 00000000..02b7bc1f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/composite_index.h
@@ -0,0 +1,201 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_COMPOSITE_INDEX_H_
+#define OPENCV_FLANN_COMPOSITE_INDEX_H_
+
+#include "general.h"
+#include "nn_index.h"
+#include "kdtree_index.h"
+#include "kmeans_index.h"
+
+namespace cvflann
+{
+
+/**
+ * Index parameters for the CompositeIndex.
+ */
+struct CompositeIndexParams : public IndexParams
+{
+ CompositeIndexParams(int trees = 4, int branching = 32, int iterations = 11,
+ flann_centers_init_t centers_init = FLANN_CENTERS_RANDOM, float cb_index = 0.2 )
+ {
+ (*this)["algorithm"] = FLANN_INDEX_KMEANS;
+ // number of randomized trees to use (for kdtree)
+ (*this)["trees"] = trees;
+ // branching factor
+ (*this)["branching"] = branching;
+ // max iterations to perform in one kmeans clustering (kmeans tree)
+ (*this)["iterations"] = iterations;
+ // algorithm used for picking the initial cluster centers for kmeans tree
+ (*this)["centers_init"] = centers_init;
+ // cluster boundary index. Used when searching the kmeans tree
+ (*this)["cb_index"] = cb_index;
+ }
+};
+
+
+/**
+ * This index builds a kd-tree index and a k-means index and performs nearest
+ * neighbour search both indexes. This gives a slight boost in search performance
+ * as some of the neighbours that are missed by one index are found by the other.
+ */
+template <typename Distance>
+class CompositeIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+ /**
+ * Index constructor
+ * @param inputData dataset containing the points to index
+ * @param params Index parameters
+ * @param d Distance functor
+ * @return
+ */
+ CompositeIndex(const Matrix<ElementType>& inputData, const IndexParams& params = CompositeIndexParams(),
+ Distance d = Distance()) : index_params_(params)
+ {
+ kdtree_index_ = new KDTreeIndex<Distance>(inputData, params, d);
+ kmeans_index_ = new KMeansIndex<Distance>(inputData, params, d);
+
+ }
+
+ CompositeIndex(const CompositeIndex&);
+ CompositeIndex& operator=(const CompositeIndex&);
+
+ virtual ~CompositeIndex()
+ {
+ delete kdtree_index_;
+ delete kmeans_index_;
+ }
+
+ /**
+ * @return The index type
+ */
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_COMPOSITE;
+ }
+
+ /**
+ * @return Size of the index
+ */
+ size_t size() const
+ {
+ return kdtree_index_->size();
+ }
+
+ /**
+ * \returns The dimensionality of the features in this index.
+ */
+ size_t veclen() const
+ {
+ return kdtree_index_->veclen();
+ }
+
+ /**
+ * \returns The amount of memory (in bytes) used by the index.
+ */
+ int usedMemory() const
+ {
+ return kmeans_index_->usedMemory() + kdtree_index_->usedMemory();
+ }
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ /**
+ * \brief Builds the index
+ */
+ void buildIndex()
+ {
+ Logger::info("Building kmeans tree...\n");
+ kmeans_index_->buildIndex();
+ Logger::info("Building kdtree tree...\n");
+ kdtree_index_->buildIndex();
+ }
+
+ /**
+ * \brief Saves the index to a stream
+ * \param stream The stream to save the index to
+ */
+ void saveIndex(FILE* stream)
+ {
+ kmeans_index_->saveIndex(stream);
+ kdtree_index_->saveIndex(stream);
+ }
+
+ /**
+ * \brief Loads the index from a stream
+ * \param stream The stream from which the index is loaded
+ */
+ void loadIndex(FILE* stream)
+ {
+ kmeans_index_->loadIndex(stream);
+ kdtree_index_->loadIndex(stream);
+ }
+
+ /**
+ * \returns The index parameters
+ */
+ IndexParams getParameters() const
+ {
+ return index_params_;
+ }
+
+ /**
+ * \brief Method that searches for nearest-neighbours
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+ kmeans_index_->findNeighbors(result, vec, searchParams);
+ kdtree_index_->findNeighbors(result, vec, searchParams);
+ }
+
+private:
+ /** The k-means index */
+ KMeansIndex<Distance>* kmeans_index_;
+
+ /** The kd-tree index */
+ KDTreeIndex<Distance>* kdtree_index_;
+
+ /** The index parameters */
+ const IndexParams index_params_;
+};
+
+}
+
+#endif //OPENCV_FLANN_COMPOSITE_INDEX_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/config.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/config.h
new file mode 100644
index 00000000..56832fd3
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/config.h
@@ -0,0 +1,38 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+
+#ifndef OPENCV_FLANN_CONFIG_H_
+#define OPENCV_FLANN_CONFIG_H_
+
+#ifdef FLANN_VERSION_
+#undef FLANN_VERSION_
+#endif
+#define FLANN_VERSION_ "1.6.10"
+
+#endif /* OPENCV_FLANN_CONFIG_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/defines.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/defines.h
new file mode 100644
index 00000000..13833b3c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/defines.h
@@ -0,0 +1,176 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+
+#ifndef OPENCV_FLANN_DEFINES_H_
+#define OPENCV_FLANN_DEFINES_H_
+
+#include "config.h"
+
+#ifdef FLANN_EXPORT
+#undef FLANN_EXPORT
+#endif
+#ifdef WIN32
+/* win32 dll export/import directives */
+ #ifdef FLANN_EXPORTS
+ #define FLANN_EXPORT __declspec(dllexport)
+ #elif defined(FLANN_STATIC)
+ #define FLANN_EXPORT
+ #else
+ #define FLANN_EXPORT __declspec(dllimport)
+ #endif
+#else
+/* unix needs nothing */
+ #define FLANN_EXPORT
+#endif
+
+
+#ifdef FLANN_DEPRECATED
+#undef FLANN_DEPRECATED
+#endif
+#ifdef __GNUC__
+#define FLANN_DEPRECATED __attribute__ ((deprecated))
+#elif defined(_MSC_VER)
+#define FLANN_DEPRECATED __declspec(deprecated)
+#else
+#pragma message("WARNING: You need to implement FLANN_DEPRECATED for this compiler")
+#define FLANN_DEPRECATED
+#endif
+
+
+#undef FLANN_PLATFORM_32_BIT
+#undef FLANN_PLATFORM_64_BIT
+#if defined __amd64__ || defined __x86_64__ || defined _WIN64 || defined _M_X64
+#define FLANN_PLATFORM_64_BIT
+#else
+#define FLANN_PLATFORM_32_BIT
+#endif
+
+
+#undef FLANN_ARRAY_LEN
+#define FLANN_ARRAY_LEN(a) (sizeof(a)/sizeof(a[0]))
+
+namespace cvflann {
+
+/* Nearest neighbour index algorithms */
+enum flann_algorithm_t
+{
+ FLANN_INDEX_LINEAR = 0,
+ FLANN_INDEX_KDTREE = 1,
+ FLANN_INDEX_KMEANS = 2,
+ FLANN_INDEX_COMPOSITE = 3,
+ FLANN_INDEX_KDTREE_SINGLE = 4,
+ FLANN_INDEX_HIERARCHICAL = 5,
+ FLANN_INDEX_LSH = 6,
+ FLANN_INDEX_SAVED = 254,
+ FLANN_INDEX_AUTOTUNED = 255,
+
+ // deprecated constants, should use the FLANN_INDEX_* ones instead
+ LINEAR = 0,
+ KDTREE = 1,
+ KMEANS = 2,
+ COMPOSITE = 3,
+ KDTREE_SINGLE = 4,
+ SAVED = 254,
+ AUTOTUNED = 255
+};
+
+
+
+enum flann_centers_init_t
+{
+ FLANN_CENTERS_RANDOM = 0,
+ FLANN_CENTERS_GONZALES = 1,
+ FLANN_CENTERS_KMEANSPP = 2,
+
+ // deprecated constants, should use the FLANN_CENTERS_* ones instead
+ CENTERS_RANDOM = 0,
+ CENTERS_GONZALES = 1,
+ CENTERS_KMEANSPP = 2
+};
+
+enum flann_log_level_t
+{
+ FLANN_LOG_NONE = 0,
+ FLANN_LOG_FATAL = 1,
+ FLANN_LOG_ERROR = 2,
+ FLANN_LOG_WARN = 3,
+ FLANN_LOG_INFO = 4
+};
+
+enum flann_distance_t
+{
+ FLANN_DIST_EUCLIDEAN = 1,
+ FLANN_DIST_L2 = 1,
+ FLANN_DIST_MANHATTAN = 2,
+ FLANN_DIST_L1 = 2,
+ FLANN_DIST_MINKOWSKI = 3,
+ FLANN_DIST_MAX = 4,
+ FLANN_DIST_HIST_INTERSECT = 5,
+ FLANN_DIST_HELLINGER = 6,
+ FLANN_DIST_CHI_SQUARE = 7,
+ FLANN_DIST_CS = 7,
+ FLANN_DIST_KULLBACK_LEIBLER = 8,
+ FLANN_DIST_KL = 8,
+ FLANN_DIST_HAMMING = 9,
+
+ // deprecated constants, should use the FLANN_DIST_* ones instead
+ EUCLIDEAN = 1,
+ MANHATTAN = 2,
+ MINKOWSKI = 3,
+ MAX_DIST = 4,
+ HIST_INTERSECT = 5,
+ HELLINGER = 6,
+ CS = 7,
+ KL = 8,
+ KULLBACK_LEIBLER = 8
+};
+
+enum flann_datatype_t
+{
+ FLANN_INT8 = 0,
+ FLANN_INT16 = 1,
+ FLANN_INT32 = 2,
+ FLANN_INT64 = 3,
+ FLANN_UINT8 = 4,
+ FLANN_UINT16 = 5,
+ FLANN_UINT32 = 6,
+ FLANN_UINT64 = 7,
+ FLANN_FLOAT32 = 8,
+ FLANN_FLOAT64 = 9
+};
+
+enum
+{
+ FLANN_CHECKS_UNLIMITED = -1,
+ FLANN_CHECKS_AUTOTUNED = -2
+};
+
+}
+
+#endif /* OPENCV_FLANN_DEFINES_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dist.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dist.h
new file mode 100644
index 00000000..5ba3d345
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dist.h
@@ -0,0 +1,937 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_DIST_H_
+#define OPENCV_FLANN_DIST_H_
+
+#include <cmath>
+#include <cstdlib>
+#include <string.h>
+#ifdef _MSC_VER
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <stdint.h>
+#endif
+
+#include "defines.h"
+
+#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)
+# include <Intrin.h>
+#endif
+
+#if defined(__ARM_NEON__) || defined(__ARM_NEON)
+# include "arm_neon.h"
+#endif
+
+namespace cvflann
+{
+
+template<typename T>
+inline T abs(T x) { return (x<0) ? -x : x; }
+
+template<>
+inline int abs<int>(int x) { return ::abs(x); }
+
+template<>
+inline float abs<float>(float x) { return fabsf(x); }
+
+template<>
+inline double abs<double>(double x) { return fabs(x); }
+
+template<typename T>
+struct Accumulator { typedef T Type; };
+template<>
+struct Accumulator<unsigned char> { typedef float Type; };
+template<>
+struct Accumulator<unsigned short> { typedef float Type; };
+template<>
+struct Accumulator<unsigned int> { typedef float Type; };
+template<>
+struct Accumulator<char> { typedef float Type; };
+template<>
+struct Accumulator<short> { typedef float Type; };
+template<>
+struct Accumulator<int> { typedef float Type; };
+
+#undef True
+#undef False
+
+class True
+{
+};
+
+class False
+{
+};
+
+
+/**
+ * Squared Euclidean distance functor.
+ *
+ * This is the simpler, unrolled version. This is preferable for
+ * very low dimensionality data (eg 3D points)
+ */
+template<class T>
+struct L2_Simple
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType diff;
+ for(size_t i = 0; i < size; ++i ) {
+ diff = *a++ - *b++;
+ result += diff*diff;
+ }
+ return result;
+ }
+
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ return (a-b)*(a-b);
+ }
+};
+
+
+
+/**
+ * Squared Euclidean distance functor, optimized version
+ */
+template<class T>
+struct L2
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the squared Euclidean distance between two vectors.
+ *
+ * This is highly optimised, with loop unrolling, as it is one
+ * of the most expensive inner loops.
+ *
+ * The computation of squared root at the end is omitted for
+ * efficiency.
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType diff0, diff1, diff2, diff3;
+ Iterator1 last = a + size;
+ Iterator1 lastgroup = last - 3;
+
+ /* Process 4 items with each loop for efficiency. */
+ while (a < lastgroup) {
+ diff0 = (ResultType)(a[0] - b[0]);
+ diff1 = (ResultType)(a[1] - b[1]);
+ diff2 = (ResultType)(a[2] - b[2]);
+ diff3 = (ResultType)(a[3] - b[3]);
+ result += diff0 * diff0 + diff1 * diff1 + diff2 * diff2 + diff3 * diff3;
+ a += 4;
+ b += 4;
+
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ /* Process last 0-3 pixels. Not needed for standard vector lengths. */
+ while (a < last) {
+ diff0 = (ResultType)(*a++ - *b++);
+ result += diff0 * diff0;
+ }
+ return result;
+ }
+
+ /**
+ * Partial euclidean distance, using just one dimension. This is used by the
+ * kd-tree when computing partial distances while traversing the tree.
+ *
+ * Squared root is omitted for efficiency.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ return (a-b)*(a-b);
+ }
+};
+
+
+/*
+ * Manhattan distance functor, optimized version
+ */
+template<class T>
+struct L1
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the Manhattan (L_1) distance between two vectors.
+ *
+ * This is highly optimised, with loop unrolling, as it is one
+ * of the most expensive inner loops.
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType diff0, diff1, diff2, diff3;
+ Iterator1 last = a + size;
+ Iterator1 lastgroup = last - 3;
+
+ /* Process 4 items with each loop for efficiency. */
+ while (a < lastgroup) {
+ diff0 = (ResultType)abs(a[0] - b[0]);
+ diff1 = (ResultType)abs(a[1] - b[1]);
+ diff2 = (ResultType)abs(a[2] - b[2]);
+ diff3 = (ResultType)abs(a[3] - b[3]);
+ result += diff0 + diff1 + diff2 + diff3;
+ a += 4;
+ b += 4;
+
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ /* Process last 0-3 pixels. Not needed for standard vector lengths. */
+ while (a < last) {
+ diff0 = (ResultType)abs(*a++ - *b++);
+ result += diff0;
+ }
+ return result;
+ }
+
+ /**
+ * Partial distance, used by the kd-tree.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ return abs(a-b);
+ }
+};
+
+
+
+template<class T>
+struct MinkowskiDistance
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ int order;
+
+ MinkowskiDistance(int order_) : order(order_) {}
+
+ /**
+ * Compute the Minkowsky (L_p) distance between two vectors.
+ *
+ * This is highly optimised, with loop unrolling, as it is one
+ * of the most expensive inner loops.
+ *
+ * The computation of squared root at the end is omitted for
+ * efficiency.
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType diff0, diff1, diff2, diff3;
+ Iterator1 last = a + size;
+ Iterator1 lastgroup = last - 3;
+
+ /* Process 4 items with each loop for efficiency. */
+ while (a < lastgroup) {
+ diff0 = (ResultType)abs(a[0] - b[0]);
+ diff1 = (ResultType)abs(a[1] - b[1]);
+ diff2 = (ResultType)abs(a[2] - b[2]);
+ diff3 = (ResultType)abs(a[3] - b[3]);
+ result += pow(diff0,order) + pow(diff1,order) + pow(diff2,order) + pow(diff3,order);
+ a += 4;
+ b += 4;
+
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ /* Process last 0-3 pixels. Not needed for standard vector lengths. */
+ while (a < last) {
+ diff0 = (ResultType)abs(*a++ - *b++);
+ result += pow(diff0,order);
+ }
+ return result;
+ }
+
+ /**
+ * Partial distance, used by the kd-tree.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ return pow(static_cast<ResultType>(abs(a-b)),order);
+ }
+};
+
+
+
+template<class T>
+struct MaxDistance
+{
+ typedef False is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the max distance (L_infinity) between two vectors.
+ *
+ * This distance is not a valid kdtree distance, it's not dimensionwise additive.
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType diff0, diff1, diff2, diff3;
+ Iterator1 last = a + size;
+ Iterator1 lastgroup = last - 3;
+
+ /* Process 4 items with each loop for efficiency. */
+ while (a < lastgroup) {
+ diff0 = abs(a[0] - b[0]);
+ diff1 = abs(a[1] - b[1]);
+ diff2 = abs(a[2] - b[2]);
+ diff3 = abs(a[3] - b[3]);
+ if (diff0>result) {result = diff0; }
+ if (diff1>result) {result = diff1; }
+ if (diff2>result) {result = diff2; }
+ if (diff3>result) {result = diff3; }
+ a += 4;
+ b += 4;
+
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ /* Process last 0-3 pixels. Not needed for standard vector lengths. */
+ while (a < last) {
+ diff0 = abs(*a++ - *b++);
+ result = (diff0>result) ? diff0 : result;
+ }
+ return result;
+ }
+
+ /* This distance functor is not dimension-wise additive, which
+ * makes it an invalid kd-tree distance, not implementing the accum_dist method */
+
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor
+ * bit count of A exclusive XOR'ed with B
+ */
+struct HammingLUT
+{
+ typedef False is_kdtree_distance;
+ typedef False is_vector_space_distance;
+
+ typedef unsigned char ElementType;
+ typedef int ResultType;
+
+ /** this will count the bits in a ^ b
+ */
+ ResultType operator()(const unsigned char* a, const unsigned char* b, int size) const
+ {
+ static const uchar popCountTable[] =
+ {
+ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
+ };
+ ResultType result = 0;
+ for (int i = 0; i < size; i++) {
+ result += popCountTable[a[i] ^ b[i]];
+ }
+ return result;
+ }
+};
+
+/**
+ * Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor
+ * bit count of A exclusive XOR'ed with B
+ */
+struct HammingLUT2
+{
+ typedef False is_kdtree_distance;
+ typedef False is_vector_space_distance;
+
+ typedef unsigned char ElementType;
+ typedef int ResultType;
+
+ /** this will count the bits in a ^ b
+ */
+ ResultType operator()(const unsigned char* a, const unsigned char* b, size_t size) const
+ {
+ static const uchar popCountTable[] =
+ {
+ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
+ };
+ ResultType result = 0;
+ for (size_t i = 0; i < size; i++) {
+ result += popCountTable[a[i] ^ b[i]];
+ }
+ return result;
+ }
+};
+
+/**
+ * Hamming distance functor (pop count between two binary vectors, i.e. xor them and count the number of bits set)
+ * That code was taken from brief.cpp in OpenCV
+ */
+template<class T>
+struct Hamming
+{
+ typedef False is_kdtree_distance;
+ typedef False is_vector_space_distance;
+
+
+ typedef T ElementType;
+ typedef int ResultType;
+
+ template<typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const
+ {
+ ResultType result = 0;
+#if defined(__ARM_NEON__) || defined(__ARM_NEON)
+ {
+ uint32x4_t bits = vmovq_n_u32(0);
+ for (size_t i = 0; i < size; i += 16) {
+ uint8x16_t A_vec = vld1q_u8 (a + i);
+ uint8x16_t B_vec = vld1q_u8 (b + i);
+ uint8x16_t AxorB = veorq_u8 (A_vec, B_vec);
+ uint8x16_t bitsSet = vcntq_u8 (AxorB);
+ uint16x8_t bitSet8 = vpaddlq_u8 (bitsSet);
+ uint32x4_t bitSet4 = vpaddlq_u16 (bitSet8);
+ bits = vaddq_u32(bits, bitSet4);
+ }
+ uint64x2_t bitSet2 = vpaddlq_u32 (bits);
+ result = vgetq_lane_s32 (vreinterpretq_s32_u64(bitSet2),0);
+ result += vgetq_lane_s32 (vreinterpretq_s32_u64(bitSet2),2);
+ }
+#elif __GNUC__
+ {
+ //for portability just use unsigned long -- and use the __builtin_popcountll (see docs for __builtin_popcountll)
+ typedef unsigned long long pop_t;
+ const size_t modulo = size % sizeof(pop_t);
+ const pop_t* a2 = reinterpret_cast<const pop_t*> (a);
+ const pop_t* b2 = reinterpret_cast<const pop_t*> (b);
+ const pop_t* a2_end = a2 + (size / sizeof(pop_t));
+
+ for (; a2 != a2_end; ++a2, ++b2) result += __builtin_popcountll((*a2) ^ (*b2));
+
+ if (modulo) {
+ //in the case where size is not dividable by sizeof(size_t)
+ //need to mask off the bits at the end
+ pop_t a_final = 0, b_final = 0;
+ memcpy(&a_final, a2, modulo);
+ memcpy(&b_final, b2, modulo);
+ result += __builtin_popcountll(a_final ^ b_final);
+ }
+ }
+#else // NO NEON and NOT GNUC
+ typedef unsigned long long pop_t;
+ HammingLUT lut;
+ result = lut(reinterpret_cast<const unsigned char*> (a),
+ reinterpret_cast<const unsigned char*> (b), size * sizeof(pop_t));
+#endif
+ return result;
+ }
+};
+
+template<typename T>
+struct Hamming2
+{
+ typedef False is_kdtree_distance;
+ typedef False is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef int ResultType;
+
+ /** This is popcount_3() from:
+ * http://en.wikipedia.org/wiki/Hamming_weight */
+ unsigned int popcnt32(uint32_t n) const
+ {
+ n -= ((n >> 1) & 0x55555555);
+ n = (n & 0x33333333) + ((n >> 2) & 0x33333333);
+ return (((n + (n >> 4))& 0xF0F0F0F)* 0x1010101) >> 24;
+ }
+
+#ifdef FLANN_PLATFORM_64_BIT
+ unsigned int popcnt64(uint64_t n) const
+ {
+ n -= ((n >> 1) & 0x5555555555555555);
+ n = (n & 0x3333333333333333) + ((n >> 2) & 0x3333333333333333);
+ return (((n + (n >> 4))& 0x0f0f0f0f0f0f0f0f)* 0x0101010101010101) >> 56;
+ }
+#endif
+
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const
+ {
+#ifdef FLANN_PLATFORM_64_BIT
+ const uint64_t* pa = reinterpret_cast<const uint64_t*>(a);
+ const uint64_t* pb = reinterpret_cast<const uint64_t*>(b);
+ ResultType result = 0;
+ size /= (sizeof(uint64_t)/sizeof(unsigned char));
+ for(size_t i = 0; i < size; ++i ) {
+ result += popcnt64(*pa ^ *pb);
+ ++pa;
+ ++pb;
+ }
+#else
+ const uint32_t* pa = reinterpret_cast<const uint32_t*>(a);
+ const uint32_t* pb = reinterpret_cast<const uint32_t*>(b);
+ ResultType result = 0;
+ size /= (sizeof(uint32_t)/sizeof(unsigned char));
+ for(size_t i = 0; i < size; ++i ) {
+ result += popcnt32(*pa ^ *pb);
+ ++pa;
+ ++pb;
+ }
+#endif
+ return result;
+ }
+};
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+template<class T>
+struct HistIntersectionDistance
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the histogram intersection distance
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType min0, min1, min2, min3;
+ Iterator1 last = a + size;
+ Iterator1 lastgroup = last - 3;
+
+ /* Process 4 items with each loop for efficiency. */
+ while (a < lastgroup) {
+ min0 = (ResultType)(a[0] < b[0] ? a[0] : b[0]);
+ min1 = (ResultType)(a[1] < b[1] ? a[1] : b[1]);
+ min2 = (ResultType)(a[2] < b[2] ? a[2] : b[2]);
+ min3 = (ResultType)(a[3] < b[3] ? a[3] : b[3]);
+ result += min0 + min1 + min2 + min3;
+ a += 4;
+ b += 4;
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ /* Process last 0-3 pixels. Not needed for standard vector lengths. */
+ while (a < last) {
+ min0 = (ResultType)(*a < *b ? *a : *b);
+ result += min0;
+ ++a;
+ ++b;
+ }
+ return result;
+ }
+
+ /**
+ * Partial distance, used by the kd-tree.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ return a<b ? a : b;
+ }
+};
+
+
+
+template<class T>
+struct HellingerDistance
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the histogram intersection distance
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType diff0, diff1, diff2, diff3;
+ Iterator1 last = a + size;
+ Iterator1 lastgroup = last - 3;
+
+ /* Process 4 items with each loop for efficiency. */
+ while (a < lastgroup) {
+ diff0 = sqrt(static_cast<ResultType>(a[0])) - sqrt(static_cast<ResultType>(b[0]));
+ diff1 = sqrt(static_cast<ResultType>(a[1])) - sqrt(static_cast<ResultType>(b[1]));
+ diff2 = sqrt(static_cast<ResultType>(a[2])) - sqrt(static_cast<ResultType>(b[2]));
+ diff3 = sqrt(static_cast<ResultType>(a[3])) - sqrt(static_cast<ResultType>(b[3]));
+ result += diff0 * diff0 + diff1 * diff1 + diff2 * diff2 + diff3 * diff3;
+ a += 4;
+ b += 4;
+ }
+ while (a < last) {
+ diff0 = sqrt(static_cast<ResultType>(*a++)) - sqrt(static_cast<ResultType>(*b++));
+ result += diff0 * diff0;
+ }
+ return result;
+ }
+
+ /**
+ * Partial distance, used by the kd-tree.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ return sqrt(static_cast<ResultType>(a)) - sqrt(static_cast<ResultType>(b));
+ }
+};
+
+
+template<class T>
+struct ChiSquareDistance
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the chi-square distance
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ ResultType sum, diff;
+ Iterator1 last = a + size;
+
+ while (a < last) {
+ sum = (ResultType)(*a + *b);
+ if (sum>0) {
+ diff = (ResultType)(*a - *b);
+ result += diff*diff/sum;
+ }
+ ++a;
+ ++b;
+
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Partial distance, used by the kd-tree.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ ResultType result = ResultType();
+ ResultType sum, diff;
+
+ sum = (ResultType)(a+b);
+ if (sum>0) {
+ diff = (ResultType)(a-b);
+ result = diff*diff/sum;
+ }
+ return result;
+ }
+};
+
+
+template<class T>
+struct KL_Divergence
+{
+ typedef True is_kdtree_distance;
+ typedef True is_vector_space_distance;
+
+ typedef T ElementType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ /**
+ * Compute the Kullback–Leibler divergence
+ */
+ template <typename Iterator1, typename Iterator2>
+ ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
+ {
+ ResultType result = ResultType();
+ Iterator1 last = a + size;
+
+ while (a < last) {
+ if (* a != 0) {
+ ResultType ratio = (ResultType)(*a / *b);
+ if (ratio>0) {
+ result += *a * log(ratio);
+ }
+ }
+ ++a;
+ ++b;
+
+ if ((worst_dist>0)&&(result>worst_dist)) {
+ return result;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Partial distance, used by the kd-tree.
+ */
+ template <typename U, typename V>
+ inline ResultType accum_dist(const U& a, const V& b, int) const
+ {
+ ResultType result = ResultType();
+ ResultType ratio = (ResultType)(a / b);
+ if (ratio>0) {
+ result = a * log(ratio);
+ }
+ return result;
+ }
+};
+
+
+
+/*
+ * This is a "zero iterator". It basically behaves like a zero filled
+ * array to all algorithms that use arrays as iterators (STL style).
+ * It's useful when there's a need to compute the distance between feature
+ * and origin it and allows for better compiler optimisation than using a
+ * zero-filled array.
+ */
+template <typename T>
+struct ZeroIterator
+{
+
+ T operator*()
+ {
+ return 0;
+ }
+
+ T operator[](int)
+ {
+ return 0;
+ }
+
+ const ZeroIterator<T>& operator ++()
+ {
+ return *this;
+ }
+
+ ZeroIterator<T> operator ++(int)
+ {
+ return *this;
+ }
+
+ ZeroIterator<T>& operator+=(int)
+ {
+ return *this;
+ }
+
+};
+
+
+/*
+ * Depending on processed distances, some of them are already squared (e.g. L2)
+ * and some are not (e.g.Hamming). In KMeans++ for instance we want to be sure
+ * we are working on ^2 distances, thus following templates to ensure that.
+ */
+template <typename Distance, typename ElementType>
+struct squareDistance
+{
+ typedef typename Distance::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist*dist; }
+};
+
+
+template <typename ElementType>
+struct squareDistance<L2_Simple<ElementType>, ElementType>
+{
+ typedef typename L2_Simple<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist; }
+};
+
+template <typename ElementType>
+struct squareDistance<L2<ElementType>, ElementType>
+{
+ typedef typename L2<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist; }
+};
+
+
+template <typename ElementType>
+struct squareDistance<MinkowskiDistance<ElementType>, ElementType>
+{
+ typedef typename MinkowskiDistance<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist; }
+};
+
+template <typename ElementType>
+struct squareDistance<HellingerDistance<ElementType>, ElementType>
+{
+ typedef typename HellingerDistance<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist; }
+};
+
+template <typename ElementType>
+struct squareDistance<ChiSquareDistance<ElementType>, ElementType>
+{
+ typedef typename ChiSquareDistance<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist; }
+};
+
+
+template <typename Distance>
+typename Distance::ResultType ensureSquareDistance( typename Distance::ResultType dist )
+{
+ typedef typename Distance::ElementType ElementType;
+
+ squareDistance<Distance, ElementType> dummy;
+ return dummy( dist );
+}
+
+
+/*
+ * ...and a template to ensure the user that he will process the normal distance,
+ * and not squared distance, without loosing processing time calling sqrt(ensureSquareDistance)
+ * that will result in doing actually sqrt(dist*dist) for L1 distance for instance.
+ */
+template <typename Distance, typename ElementType>
+struct simpleDistance
+{
+ typedef typename Distance::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return dist; }
+};
+
+
+template <typename ElementType>
+struct simpleDistance<L2_Simple<ElementType>, ElementType>
+{
+ typedef typename L2_Simple<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return sqrt(dist); }
+};
+
+template <typename ElementType>
+struct simpleDistance<L2<ElementType>, ElementType>
+{
+ typedef typename L2<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return sqrt(dist); }
+};
+
+
+template <typename ElementType>
+struct simpleDistance<MinkowskiDistance<ElementType>, ElementType>
+{
+ typedef typename MinkowskiDistance<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return sqrt(dist); }
+};
+
+template <typename ElementType>
+struct simpleDistance<HellingerDistance<ElementType>, ElementType>
+{
+ typedef typename HellingerDistance<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return sqrt(dist); }
+};
+
+template <typename ElementType>
+struct simpleDistance<ChiSquareDistance<ElementType>, ElementType>
+{
+ typedef typename ChiSquareDistance<ElementType>::ResultType ResultType;
+ ResultType operator()( ResultType dist ) { return sqrt(dist); }
+};
+
+
+template <typename Distance>
+typename Distance::ResultType ensureSimpleDistance( typename Distance::ResultType dist )
+{
+ typedef typename Distance::ElementType ElementType;
+
+ simpleDistance<Distance, ElementType> dummy;
+ return dummy( dist );
+}
+
+}
+
+#endif //OPENCV_FLANN_DIST_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dummy.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dummy.h
new file mode 100644
index 00000000..33909818
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dummy.h
@@ -0,0 +1,45 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_DUMMY_H_
+#define OPENCV_FLANN_DUMMY_H_
+
+namespace cvflann
+{
+
+#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS
+__declspec(dllexport)
+#endif
+void dummyfunc();
+
+}
+
+
+#endif /* OPENCV_FLANN_DUMMY_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dynamic_bitset.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dynamic_bitset.h
new file mode 100644
index 00000000..d795b5d6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/dynamic_bitset.h
@@ -0,0 +1,159 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+/***********************************************************************
+ * Author: Vincent Rabaud
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_DYNAMIC_BITSET_H_
+#define OPENCV_FLANN_DYNAMIC_BITSET_H_
+
+#ifndef FLANN_USE_BOOST
+# define FLANN_USE_BOOST 0
+#endif
+//#define FLANN_USE_BOOST 1
+#if FLANN_USE_BOOST
+#include <boost/dynamic_bitset.hpp>
+typedef boost::dynamic_bitset<> DynamicBitset;
+#else
+
+#include <limits.h>
+
+#include "dist.h"
+
+namespace cvflann {
+
+/** Class re-implementing the boost version of it
+ * This helps not depending on boost, it also does not do the bound checks
+ * and has a way to reset a block for speed
+ */
+class DynamicBitset
+{
+public:
+ /** default constructor
+ */
+ DynamicBitset()
+ {
+ }
+
+ /** only constructor we use in our code
+ * @param sz the size of the bitset (in bits)
+ */
+ DynamicBitset(size_t sz)
+ {
+ resize(sz);
+ reset();
+ }
+
+ /** Sets all the bits to 0
+ */
+ void clear()
+ {
+ std::fill(bitset_.begin(), bitset_.end(), 0);
+ }
+
+ /** @brief checks if the bitset is empty
+ * @return true if the bitset is empty
+ */
+ bool empty() const
+ {
+ return bitset_.empty();
+ }
+
+ /** set all the bits to 0
+ */
+ void reset()
+ {
+ std::fill(bitset_.begin(), bitset_.end(), 0);
+ }
+
+ /** @brief set one bit to 0
+ * @param index
+ */
+ void reset(size_t index)
+ {
+ bitset_[index / cell_bit_size_] &= ~(size_t(1) << (index % cell_bit_size_));
+ }
+
+ /** @brief sets a specific bit to 0, and more bits too
+ * This function is useful when resetting a given set of bits so that the
+ * whole bitset ends up being 0: if that's the case, we don't care about setting
+ * other bits to 0
+ * @param index
+ */
+ void reset_block(size_t index)
+ {
+ bitset_[index / cell_bit_size_] = 0;
+ }
+
+ /** resize the bitset so that it contains at least sz bits
+ * @param sz
+ */
+ void resize(size_t sz)
+ {
+ size_ = sz;
+ bitset_.resize(sz / cell_bit_size_ + 1);
+ }
+
+ /** set a bit to true
+ * @param index the index of the bit to set to 1
+ */
+ void set(size_t index)
+ {
+ bitset_[index / cell_bit_size_] |= size_t(1) << (index % cell_bit_size_);
+ }
+
+ /** gives the number of contained bits
+ */
+ size_t size() const
+ {
+ return size_;
+ }
+
+ /** check if a bit is set
+ * @param index the index of the bit to check
+ * @return true if the bit is set
+ */
+ bool test(size_t index) const
+ {
+ return (bitset_[index / cell_bit_size_] & (size_t(1) << (index % cell_bit_size_))) != 0;
+ }
+
+private:
+ std::vector<size_t> bitset_;
+ size_t size_;
+ static const unsigned int cell_bit_size_ = CHAR_BIT * sizeof(size_t);
+};
+
+} // namespace cvflann
+
+#endif
+
+#endif // OPENCV_FLANN_DYNAMIC_BITSET_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann.hpp
new file mode 100644
index 00000000..d053488e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann.hpp
@@ -0,0 +1,427 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef _OPENCV_FLANN_HPP_
+#define _OPENCV_FLANN_HPP_
+
+#ifdef __cplusplus
+
+#include "opencv2/core/types_c.h"
+#include "opencv2/core/core.hpp"
+#include "opencv2/flann/flann_base.hpp"
+#include "opencv2/flann/miniflann.hpp"
+
+namespace cvflann
+{
+ CV_EXPORTS flann_distance_t flann_distance_type();
+ FLANN_DEPRECATED CV_EXPORTS void set_distance_type(flann_distance_t distance_type, int order);
+}
+
+
+namespace cv
+{
+namespace flann
+{
+
+template <typename T> struct CvType {};
+template <> struct CvType<unsigned char> { static int type() { return CV_8U; } };
+template <> struct CvType<char> { static int type() { return CV_8S; } };
+template <> struct CvType<unsigned short> { static int type() { return CV_16U; } };
+template <> struct CvType<short> { static int type() { return CV_16S; } };
+template <> struct CvType<int> { static int type() { return CV_32S; } };
+template <> struct CvType<float> { static int type() { return CV_32F; } };
+template <> struct CvType<double> { static int type() { return CV_64F; } };
+
+
+// bring the flann parameters into this namespace
+using ::cvflann::get_param;
+using ::cvflann::print_params;
+
+// bring the flann distances into this namespace
+using ::cvflann::L2_Simple;
+using ::cvflann::L2;
+using ::cvflann::L1;
+using ::cvflann::MinkowskiDistance;
+using ::cvflann::MaxDistance;
+using ::cvflann::HammingLUT;
+using ::cvflann::Hamming;
+using ::cvflann::Hamming2;
+using ::cvflann::HistIntersectionDistance;
+using ::cvflann::HellingerDistance;
+using ::cvflann::ChiSquareDistance;
+using ::cvflann::KL_Divergence;
+
+
+
+template <typename Distance>
+class GenericIndex
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+ GenericIndex(const Mat& features, const ::cvflann::IndexParams& params, Distance distance = Distance());
+
+ ~GenericIndex();
+
+ void knnSearch(const vector<ElementType>& query, vector<int>& indices,
+ vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& params);
+ void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& params);
+
+ int radiusSearch(const vector<ElementType>& query, vector<int>& indices,
+ vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& params);
+ int radiusSearch(const Mat& query, Mat& indices, Mat& dists,
+ DistanceType radius, const ::cvflann::SearchParams& params);
+
+ void save(std::string filename) { nnIndex->save(filename); }
+
+ int veclen() const { return nnIndex->veclen(); }
+
+ int size() const { return nnIndex->size(); }
+
+ ::cvflann::IndexParams getParameters() { return nnIndex->getParameters(); }
+
+ FLANN_DEPRECATED const ::cvflann::IndexParams* getIndexParameters() { return nnIndex->getIndexParameters(); }
+
+private:
+ ::cvflann::Index<Distance>* nnIndex;
+};
+
+
+#define FLANN_DISTANCE_CHECK \
+ if ( ::cvflann::flann_distance_type() != cvflann::FLANN_DIST_L2) { \
+ printf("[WARNING] You are using cv::flann::Index (or cv::flann::GenericIndex) and have also changed "\
+ "the distance using cvflann::set_distance_type. This is no longer working as expected "\
+ "(cv::flann::Index always uses L2). You should create the index templated on the distance, "\
+ "for example for L1 distance use: GenericIndex< L1<float> > \n"); \
+ }
+
+
+template <typename Distance>
+GenericIndex<Distance>::GenericIndex(const Mat& dataset, const ::cvflann::IndexParams& params, Distance distance)
+{
+ CV_Assert(dataset.type() == CvType<ElementType>::type());
+ CV_Assert(dataset.isContinuous());
+ ::cvflann::Matrix<ElementType> m_dataset((ElementType*)dataset.ptr<ElementType>(0), dataset.rows, dataset.cols);
+
+ nnIndex = new ::cvflann::Index<Distance>(m_dataset, params, distance);
+
+ FLANN_DISTANCE_CHECK
+
+ nnIndex->buildIndex();
+}
+
+template <typename Distance>
+GenericIndex<Distance>::~GenericIndex()
+{
+ delete nnIndex;
+}
+
+template <typename Distance>
+void GenericIndex<Distance>::knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& searchParams)
+{
+ ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
+ ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
+ ::cvflann::Matrix<DistanceType> m_dists(&dists[0], 1, dists.size());
+
+ FLANN_DISTANCE_CHECK
+
+ nnIndex->knnSearch(m_query,m_indices,m_dists,knn,searchParams);
+}
+
+
+template <typename Distance>
+void GenericIndex<Distance>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& searchParams)
+{
+ CV_Assert(queries.type() == CvType<ElementType>::type());
+ CV_Assert(queries.isContinuous());
+ ::cvflann::Matrix<ElementType> m_queries((ElementType*)queries.ptr<ElementType>(0), queries.rows, queries.cols);
+
+ CV_Assert(indices.type() == CV_32S);
+ CV_Assert(indices.isContinuous());
+ ::cvflann::Matrix<int> m_indices((int*)indices.ptr<int>(0), indices.rows, indices.cols);
+
+ CV_Assert(dists.type() == CvType<DistanceType>::type());
+ CV_Assert(dists.isContinuous());
+ ::cvflann::Matrix<DistanceType> m_dists((DistanceType*)dists.ptr<DistanceType>(0), dists.rows, dists.cols);
+
+ FLANN_DISTANCE_CHECK
+
+ nnIndex->knnSearch(m_queries,m_indices,m_dists,knn, searchParams);
+}
+
+template <typename Distance>
+int GenericIndex<Distance>::radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
+{
+ ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
+ ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
+ ::cvflann::Matrix<DistanceType> m_dists(&dists[0], 1, dists.size());
+
+ FLANN_DISTANCE_CHECK
+
+ return nnIndex->radiusSearch(m_query,m_indices,m_dists,radius,searchParams);
+}
+
+template <typename Distance>
+int GenericIndex<Distance>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
+{
+ CV_Assert(query.type() == CvType<ElementType>::type());
+ CV_Assert(query.isContinuous());
+ ::cvflann::Matrix<ElementType> m_query((ElementType*)query.ptr<ElementType>(0), query.rows, query.cols);
+
+ CV_Assert(indices.type() == CV_32S);
+ CV_Assert(indices.isContinuous());
+ ::cvflann::Matrix<int> m_indices((int*)indices.ptr<int>(0), indices.rows, indices.cols);
+
+ CV_Assert(dists.type() == CvType<DistanceType>::type());
+ CV_Assert(dists.isContinuous());
+ ::cvflann::Matrix<DistanceType> m_dists((DistanceType*)dists.ptr<DistanceType>(0), dists.rows, dists.cols);
+
+ FLANN_DISTANCE_CHECK
+
+ return nnIndex->radiusSearch(m_query,m_indices,m_dists,radius,searchParams);
+}
+
+/**
+ * @deprecated Use GenericIndex class instead
+ */
+template <typename T>
+class
+#ifndef _MSC_VER
+ FLANN_DEPRECATED
+#endif
+ Index_ {
+public:
+ typedef typename L2<T>::ElementType ElementType;
+ typedef typename L2<T>::ResultType DistanceType;
+
+ Index_(const Mat& features, const ::cvflann::IndexParams& params);
+
+ ~Index_();
+
+ void knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& params);
+ void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& params);
+
+ int radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& params);
+ int radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& params);
+
+ void save(std::string filename)
+ {
+ if (nnIndex_L1) nnIndex_L1->save(filename);
+ if (nnIndex_L2) nnIndex_L2->save(filename);
+ }
+
+ int veclen() const
+ {
+ if (nnIndex_L1) return nnIndex_L1->veclen();
+ if (nnIndex_L2) return nnIndex_L2->veclen();
+ }
+
+ int size() const
+ {
+ if (nnIndex_L1) return nnIndex_L1->size();
+ if (nnIndex_L2) return nnIndex_L2->size();
+ }
+
+ ::cvflann::IndexParams getParameters()
+ {
+ if (nnIndex_L1) return nnIndex_L1->getParameters();
+ if (nnIndex_L2) return nnIndex_L2->getParameters();
+
+ }
+
+ FLANN_DEPRECATED const ::cvflann::IndexParams* getIndexParameters()
+ {
+ if (nnIndex_L1) return nnIndex_L1->getIndexParameters();
+ if (nnIndex_L2) return nnIndex_L2->getIndexParameters();
+ }
+
+private:
+ // providing backwards compatibility for L2 and L1 distances (most common)
+ ::cvflann::Index< L2<ElementType> >* nnIndex_L2;
+ ::cvflann::Index< L1<ElementType> >* nnIndex_L1;
+};
+
+#ifdef _MSC_VER
+template <typename T>
+class FLANN_DEPRECATED Index_;
+#endif
+
+template <typename T>
+Index_<T>::Index_(const Mat& dataset, const ::cvflann::IndexParams& params)
+{
+ printf("[WARNING] The cv::flann::Index_<T> class is deperecated, use cv::flann::GenericIndex<Distance> instead\n");
+
+ CV_Assert(dataset.type() == CvType<ElementType>::type());
+ CV_Assert(dataset.isContinuous());
+ ::cvflann::Matrix<ElementType> m_dataset((ElementType*)dataset.ptr<ElementType>(0), dataset.rows, dataset.cols);
+
+ if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L2 ) {
+ nnIndex_L1 = NULL;
+ nnIndex_L2 = new ::cvflann::Index< L2<ElementType> >(m_dataset, params);
+ }
+ else if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L1 ) {
+ nnIndex_L1 = new ::cvflann::Index< L1<ElementType> >(m_dataset, params);
+ nnIndex_L2 = NULL;
+ }
+ else {
+ printf("[ERROR] cv::flann::Index_<T> only provides backwards compatibility for the L1 and L2 distances. "
+ "For other distance types you must use cv::flann::GenericIndex<Distance>\n");
+ CV_Assert(0);
+ }
+ if (nnIndex_L1) nnIndex_L1->buildIndex();
+ if (nnIndex_L2) nnIndex_L2->buildIndex();
+}
+
+template <typename T>
+Index_<T>::~Index_()
+{
+ if (nnIndex_L1) delete nnIndex_L1;
+ if (nnIndex_L2) delete nnIndex_L2;
+}
+
+template <typename T>
+void Index_<T>::knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& searchParams)
+{
+ ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
+ ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
+ ::cvflann::Matrix<DistanceType> m_dists(&dists[0], 1, dists.size());
+
+ if (nnIndex_L1) nnIndex_L1->knnSearch(m_query,m_indices,m_dists,knn,searchParams);
+ if (nnIndex_L2) nnIndex_L2->knnSearch(m_query,m_indices,m_dists,knn,searchParams);
+}
+
+
+template <typename T>
+void Index_<T>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& searchParams)
+{
+ CV_Assert(queries.type() == CvType<ElementType>::type());
+ CV_Assert(queries.isContinuous());
+ ::cvflann::Matrix<ElementType> m_queries((ElementType*)queries.ptr<ElementType>(0), queries.rows, queries.cols);
+
+ CV_Assert(indices.type() == CV_32S);
+ CV_Assert(indices.isContinuous());
+ ::cvflann::Matrix<int> m_indices((int*)indices.ptr<int>(0), indices.rows, indices.cols);
+
+ CV_Assert(dists.type() == CvType<DistanceType>::type());
+ CV_Assert(dists.isContinuous());
+ ::cvflann::Matrix<DistanceType> m_dists((DistanceType*)dists.ptr<DistanceType>(0), dists.rows, dists.cols);
+
+ if (nnIndex_L1) nnIndex_L1->knnSearch(m_queries,m_indices,m_dists,knn, searchParams);
+ if (nnIndex_L2) nnIndex_L2->knnSearch(m_queries,m_indices,m_dists,knn, searchParams);
+}
+
+template <typename T>
+int Index_<T>::radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
+{
+ ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
+ ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
+ ::cvflann::Matrix<DistanceType> m_dists(&dists[0], 1, dists.size());
+
+ if (nnIndex_L1) return nnIndex_L1->radiusSearch(m_query,m_indices,m_dists,radius,searchParams);
+ if (nnIndex_L2) return nnIndex_L2->radiusSearch(m_query,m_indices,m_dists,radius,searchParams);
+}
+
+template <typename T>
+int Index_<T>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
+{
+ CV_Assert(query.type() == CvType<ElementType>::type());
+ CV_Assert(query.isContinuous());
+ ::cvflann::Matrix<ElementType> m_query((ElementType*)query.ptr<ElementType>(0), query.rows, query.cols);
+
+ CV_Assert(indices.type() == CV_32S);
+ CV_Assert(indices.isContinuous());
+ ::cvflann::Matrix<int> m_indices((int*)indices.ptr<int>(0), indices.rows, indices.cols);
+
+ CV_Assert(dists.type() == CvType<DistanceType>::type());
+ CV_Assert(dists.isContinuous());
+ ::cvflann::Matrix<DistanceType> m_dists((DistanceType*)dists.ptr<DistanceType>(0), dists.rows, dists.cols);
+
+ if (nnIndex_L1) return nnIndex_L1->radiusSearch(m_query,m_indices,m_dists,radius,searchParams);
+ if (nnIndex_L2) return nnIndex_L2->radiusSearch(m_query,m_indices,m_dists,radius,searchParams);
+}
+
+
+template <typename Distance>
+int hierarchicalClustering(const Mat& features, Mat& centers, const ::cvflann::KMeansIndexParams& params,
+ Distance d = Distance())
+{
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+ CV_Assert(features.type() == CvType<ElementType>::type());
+ CV_Assert(features.isContinuous());
+ ::cvflann::Matrix<ElementType> m_features((ElementType*)features.ptr<ElementType>(0), features.rows, features.cols);
+
+ CV_Assert(centers.type() == CvType<DistanceType>::type());
+ CV_Assert(centers.isContinuous());
+ ::cvflann::Matrix<DistanceType> m_centers((DistanceType*)centers.ptr<DistanceType>(0), centers.rows, centers.cols);
+
+ return ::cvflann::hierarchicalClustering<Distance>(m_features, m_centers, params, d);
+}
+
+
+template <typename ELEM_TYPE, typename DIST_TYPE>
+FLANN_DEPRECATED int hierarchicalClustering(const Mat& features, Mat& centers, const ::cvflann::KMeansIndexParams& params)
+{
+ printf("[WARNING] cv::flann::hierarchicalClustering<ELEM_TYPE,DIST_TYPE> is deprecated, use "
+ "cv::flann::hierarchicalClustering<Distance> instead\n");
+
+ if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L2 ) {
+ return hierarchicalClustering< L2<ELEM_TYPE> >(features, centers, params);
+ }
+ else if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L1 ) {
+ return hierarchicalClustering< L1<ELEM_TYPE> >(features, centers, params);
+ }
+ else {
+ printf("[ERROR] cv::flann::hierarchicalClustering<ELEM_TYPE,DIST_TYPE> only provides backwards "
+ "compatibility for the L1 and L2 distances. "
+ "For other distance types you must use cv::flann::hierarchicalClustering<Distance>\n");
+ CV_Assert(0);
+ }
+}
+
+} } // namespace cv::flann
+
+#endif // __cplusplus
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann_base.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann_base.hpp
new file mode 100644
index 00000000..bb5b1200
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/flann_base.hpp
@@ -0,0 +1,301 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_BASE_HPP_
+#define OPENCV_FLANN_BASE_HPP_
+
+#include <vector>
+#include <string>
+#include <cassert>
+#include <cstdio>
+
+#include "general.h"
+#include "matrix.h"
+#include "params.h"
+#include "saving.h"
+
+#include "all_indices.h"
+
+namespace cvflann
+{
+
+/**
+ * Sets the log level used for all flann functions
+ * @param level Verbosity level
+ */
+inline void log_verbosity(int level)
+{
+ if (level >= 0) {
+ Logger::setLevel(level);
+ }
+}
+
+/**
+ * (Deprecated) Index parameters for creating a saved index.
+ */
+struct SavedIndexParams : public IndexParams
+{
+ SavedIndexParams(std::string filename)
+ {
+ (* this)["algorithm"] = FLANN_INDEX_SAVED;
+ (*this)["filename"] = filename;
+ }
+};
+
+
+template<typename Distance>
+NNIndex<Distance>* load_saved_index(const Matrix<typename Distance::ElementType>& dataset, const std::string& filename, Distance distance)
+{
+ typedef typename Distance::ElementType ElementType;
+
+ FILE* fin = fopen(filename.c_str(), "rb");
+ if (fin == NULL) {
+ return NULL;
+ }
+ IndexHeader header = load_header(fin);
+ if (header.data_type != Datatype<ElementType>::type()) {
+ throw FLANNException("Datatype of saved index is different than of the one to be created.");
+ }
+ if ((size_t(header.rows) != dataset.rows)||(size_t(header.cols) != dataset.cols)) {
+ throw FLANNException("The index saved belongs to a different dataset");
+ }
+
+ IndexParams params;
+ params["algorithm"] = header.index_type;
+ NNIndex<Distance>* nnIndex = create_index_by_type<Distance>(dataset, params, distance);
+ nnIndex->loadIndex(fin);
+ fclose(fin);
+
+ return nnIndex;
+}
+
+
+template<typename Distance>
+class Index : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+ Index(const Matrix<ElementType>& features, const IndexParams& params, Distance distance = Distance() )
+ : index_params_(params)
+ {
+ flann_algorithm_t index_type = get_param<flann_algorithm_t>(params,"algorithm");
+ loaded_ = false;
+
+ if (index_type == FLANN_INDEX_SAVED) {
+ nnIndex_ = load_saved_index<Distance>(features, get_param<std::string>(params,"filename"), distance);
+ loaded_ = true;
+ }
+ else {
+ nnIndex_ = create_index_by_type<Distance>(features, params, distance);
+ }
+ }
+
+ ~Index()
+ {
+ delete nnIndex_;
+ }
+
+ /**
+ * implementation for algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& wholeData, const Matrix<ElementType>& additionalData)
+ {
+ if (!loaded_) {
+ nnIndex_->addIndex(wholeData, additionalData);
+ }
+ }
+
+ /**
+ * Builds the index.
+ */
+ void buildIndex()
+ {
+ if (!loaded_) {
+ nnIndex_->buildIndex();
+ }
+ }
+
+ void save(std::string filename)
+ {
+ FILE* fout = fopen(filename.c_str(), "wb");
+ if (fout == NULL) {
+ throw FLANNException("Cannot open file");
+ }
+ save_header(fout, *nnIndex_);
+ saveIndex(fout);
+ fclose(fout);
+ }
+
+ /**
+ * \brief Saves the index to a stream
+ * \param stream The stream to save the index to
+ */
+ virtual void saveIndex(FILE* stream)
+ {
+ nnIndex_->saveIndex(stream);
+ }
+
+ /**
+ * \brief Loads the index from a stream
+ * \param stream The stream from which the index is loaded
+ */
+ virtual void loadIndex(FILE* stream)
+ {
+ nnIndex_->loadIndex(stream);
+ }
+
+ /**
+ * \returns number of features in this index.
+ */
+ size_t veclen() const
+ {
+ return nnIndex_->veclen();
+ }
+
+ /**
+ * \returns The dimensionality of the features in this index.
+ */
+ size_t size() const
+ {
+ return nnIndex_->size();
+ }
+
+ /**
+ * \returns The index type (kdtree, kmeans,...)
+ */
+ flann_algorithm_t getType() const
+ {
+ return nnIndex_->getType();
+ }
+
+ /**
+ * \returns The amount of memory (in bytes) used by the index.
+ */
+ virtual int usedMemory() const
+ {
+ return nnIndex_->usedMemory();
+ }
+
+
+ /**
+ * \returns The index parameters
+ */
+ IndexParams getParameters() const
+ {
+ return nnIndex_->getParameters();
+ }
+
+ /**
+ * \brief Perform k-nearest neighbor search
+ * \param[in] queries The query points for which to find the nearest neighbors
+ * \param[out] indices The indices of the nearest neighbors found
+ * \param[out] dists Distances to the nearest neighbors found
+ * \param[in] knn Number of nearest neighbors to return
+ * \param[in] params Search parameters
+ */
+ void knnSearch(const Matrix<ElementType>& queries, Matrix<int>& indices, Matrix<DistanceType>& dists, int knn, const SearchParams& params)
+ {
+ nnIndex_->knnSearch(queries, indices, dists, knn, params);
+ }
+
+ /**
+ * \brief Perform radius search
+ * \param[in] query The query point
+ * \param[out] indices The indinces of the neighbors found within the given radius
+ * \param[out] dists The distances to the nearest neighbors found
+ * \param[in] radius The radius used for search
+ * \param[in] params Search parameters
+ * \returns Number of neighbors found
+ */
+ int radiusSearch(const Matrix<ElementType>& query, Matrix<int>& indices, Matrix<DistanceType>& dists, float radius, const SearchParams& params)
+ {
+ return nnIndex_->radiusSearch(query, indices, dists, radius, params);
+ }
+
+ /**
+ * \brief Method that searches for nearest-neighbours
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+ nnIndex_->findNeighbors(result, vec, searchParams);
+ }
+
+ /**
+ * \brief Returns actual index
+ */
+ FLANN_DEPRECATED NNIndex<Distance>* getIndex()
+ {
+ return nnIndex_;
+ }
+
+ /**
+ * \brief Returns index parameters.
+ * \deprecated use getParameters() instead.
+ */
+ FLANN_DEPRECATED const IndexParams* getIndexParameters()
+ {
+ return &index_params_;
+ }
+
+private:
+ /** Pointer to actual index class */
+ NNIndex<Distance>* nnIndex_;
+ /** Indices if the index was loaded from a file */
+ bool loaded_;
+ /** Parameters passed to the index */
+ IndexParams index_params_;
+};
+
+/**
+ * Performs a hierarchical clustering of the points passed as argument and then takes a cut in the
+ * the clustering tree to return a flat clustering.
+ * @param[in] points Points to be clustered
+ * @param centers The computed cluster centres. Matrix should be preallocated and centers.rows is the
+ * number of clusters requested.
+ * @param params Clustering parameters (The same as for cvflann::KMeansIndex)
+ * @param d Distance to be used for clustering (eg: cvflann::L2)
+ * @return number of clusters computed (can be different than clusters.rows and is the highest number
+ * of the form (branching-1)*K+1 smaller than clusters.rows).
+ */
+template <typename Distance>
+int hierarchicalClustering(const Matrix<typename Distance::ElementType>& points, Matrix<typename Distance::ResultType>& centers,
+ const KMeansIndexParams& params, Distance d = Distance())
+{
+ KMeansIndex<Distance> kmeans(points, params, d);
+ kmeans.buildIndex();
+
+ int clusterNum = kmeans.getClusterCenters(centers);
+ return clusterNum;
+}
+
+}
+#endif /* OPENCV_FLANN_BASE_HPP_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/general.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/general.h
new file mode 100644
index 00000000..87e7e2f2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/general.h
@@ -0,0 +1,52 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_GENERAL_H_
+#define OPENCV_FLANN_GENERAL_H_
+
+#include "defines.h"
+#include <stdexcept>
+#include <cassert>
+
+namespace cvflann
+{
+
+class FLANNException : public std::runtime_error
+{
+public:
+ FLANNException(const char* message) : std::runtime_error(message) { }
+
+ FLANNException(const std::string& message) : std::runtime_error(message) { }
+};
+
+}
+
+
+#endif /* OPENCV_FLANN_GENERAL_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/ground_truth.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/ground_truth.h
new file mode 100644
index 00000000..fd8f3ae7
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/ground_truth.h
@@ -0,0 +1,94 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_GROUND_TRUTH_H_
+#define OPENCV_FLANN_GROUND_TRUTH_H_
+
+#include "dist.h"
+#include "matrix.h"
+
+
+namespace cvflann
+{
+
+template <typename Distance>
+void find_nearest(const Matrix<typename Distance::ElementType>& dataset, typename Distance::ElementType* query, int* matches, int nn,
+ int skip = 0, Distance distance = Distance())
+{
+ typedef typename Distance::ResultType DistanceType;
+ int n = nn + skip;
+
+ std::vector<int> match(n);
+ std::vector<DistanceType> dists(n);
+
+ dists[0] = distance(dataset[0], query, dataset.cols);
+ match[0] = 0;
+ int dcnt = 1;
+
+ for (size_t i=1; i<dataset.rows; ++i) {
+ DistanceType tmp = distance(dataset[i], query, dataset.cols);
+
+ if (dcnt<n) {
+ match[dcnt] = (int)i;
+ dists[dcnt++] = tmp;
+ }
+ else if (tmp < dists[dcnt-1]) {
+ dists[dcnt-1] = tmp;
+ match[dcnt-1] = (int)i;
+ }
+
+ int j = dcnt-1;
+ // bubble up
+ while (j>=1 && dists[j]<dists[j-1]) {
+ std::swap(dists[j],dists[j-1]);
+ std::swap(match[j],match[j-1]);
+ j--;
+ }
+ }
+
+ for (int i=0; i<nn; ++i) {
+ matches[i] = match[i+skip];
+ }
+}
+
+
+template <typename Distance>
+void compute_ground_truth(const Matrix<typename Distance::ElementType>& dataset, const Matrix<typename Distance::ElementType>& testset, Matrix<int>& matches,
+ int skip=0, Distance d = Distance())
+{
+ for (size_t i=0; i<testset.rows; ++i) {
+ find_nearest<Distance>(dataset, testset[i], matches[i], (int)matches.cols, skip, d);
+ }
+}
+
+
+}
+
+#endif //OPENCV_FLANN_GROUND_TRUTH_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hdf5.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hdf5.h
new file mode 100644
index 00000000..ef3e9997
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hdf5.h
@@ -0,0 +1,231 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+
+#ifndef OPENCV_FLANN_HDF5_H_
+#define OPENCV_FLANN_HDF5_H_
+
+#include <hdf5.h>
+
+#include "matrix.h"
+
+
+namespace cvflann
+{
+
+namespace
+{
+
+template<typename T>
+hid_t get_hdf5_type()
+{
+ throw FLANNException("Unsupported type for IO operations");
+}
+
+template<>
+hid_t get_hdf5_type<char>() { return H5T_NATIVE_CHAR; }
+template<>
+hid_t get_hdf5_type<unsigned char>() { return H5T_NATIVE_UCHAR; }
+template<>
+hid_t get_hdf5_type<short int>() { return H5T_NATIVE_SHORT; }
+template<>
+hid_t get_hdf5_type<unsigned short int>() { return H5T_NATIVE_USHORT; }
+template<>
+hid_t get_hdf5_type<int>() { return H5T_NATIVE_INT; }
+template<>
+hid_t get_hdf5_type<unsigned int>() { return H5T_NATIVE_UINT; }
+template<>
+hid_t get_hdf5_type<long>() { return H5T_NATIVE_LONG; }
+template<>
+hid_t get_hdf5_type<unsigned long>() { return H5T_NATIVE_ULONG; }
+template<>
+hid_t get_hdf5_type<float>() { return H5T_NATIVE_FLOAT; }
+template<>
+hid_t get_hdf5_type<double>() { return H5T_NATIVE_DOUBLE; }
+}
+
+
+#define CHECK_ERROR(x,y) if ((x)<0) throw FLANNException((y));
+
+template<typename T>
+void save_to_file(const cvflann::Matrix<T>& dataset, const std::string& filename, const std::string& name)
+{
+
+#if H5Eset_auto_vers == 2
+ H5Eset_auto( H5E_DEFAULT, NULL, NULL );
+#else
+ H5Eset_auto( NULL, NULL );
+#endif
+
+ herr_t status;
+ hid_t file_id;
+ file_id = H5Fopen(filename.c_str(), H5F_ACC_RDWR, H5P_DEFAULT);
+ if (file_id < 0) {
+ file_id = H5Fcreate(filename.c_str(), H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT);
+ }
+ CHECK_ERROR(file_id,"Error creating hdf5 file.");
+
+ hsize_t dimsf[2]; // dataset dimensions
+ dimsf[0] = dataset.rows;
+ dimsf[1] = dataset.cols;
+
+ hid_t space_id = H5Screate_simple(2, dimsf, NULL);
+ hid_t memspace_id = H5Screate_simple(2, dimsf, NULL);
+
+ hid_t dataset_id;
+#if H5Dcreate_vers == 2
+ dataset_id = H5Dcreate2(file_id, name.c_str(), get_hdf5_type<T>(), space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+#else
+ dataset_id = H5Dcreate(file_id, name.c_str(), get_hdf5_type<T>(), space_id, H5P_DEFAULT);
+#endif
+
+ if (dataset_id<0) {
+#if H5Dopen_vers == 2
+ dataset_id = H5Dopen2(file_id, name.c_str(), H5P_DEFAULT);
+#else
+ dataset_id = H5Dopen(file_id, name.c_str());
+#endif
+ }
+ CHECK_ERROR(dataset_id,"Error creating or opening dataset in file.");
+
+ status = H5Dwrite(dataset_id, get_hdf5_type<T>(), memspace_id, space_id, H5P_DEFAULT, dataset.data );
+ CHECK_ERROR(status, "Error writing to dataset");
+
+ H5Sclose(memspace_id);
+ H5Sclose(space_id);
+ H5Dclose(dataset_id);
+ H5Fclose(file_id);
+
+}
+
+
+template<typename T>
+void load_from_file(cvflann::Matrix<T>& dataset, const std::string& filename, const std::string& name)
+{
+ herr_t status;
+ hid_t file_id = H5Fopen(filename.c_str(), H5F_ACC_RDWR, H5P_DEFAULT);
+ CHECK_ERROR(file_id,"Error opening hdf5 file.");
+
+ hid_t dataset_id;
+#if H5Dopen_vers == 2
+ dataset_id = H5Dopen2(file_id, name.c_str(), H5P_DEFAULT);
+#else
+ dataset_id = H5Dopen(file_id, name.c_str());
+#endif
+ CHECK_ERROR(dataset_id,"Error opening dataset in file.");
+
+ hid_t space_id = H5Dget_space(dataset_id);
+
+ hsize_t dims_out[2];
+ H5Sget_simple_extent_dims(space_id, dims_out, NULL);
+
+ dataset = cvflann::Matrix<T>(new T[dims_out[0]*dims_out[1]], dims_out[0], dims_out[1]);
+
+ status = H5Dread(dataset_id, get_hdf5_type<T>(), H5S_ALL, H5S_ALL, H5P_DEFAULT, dataset[0]);
+ CHECK_ERROR(status, "Error reading dataset");
+
+ H5Sclose(space_id);
+ H5Dclose(dataset_id);
+ H5Fclose(file_id);
+}
+
+
+#ifdef HAVE_MPI
+
+namespace mpi
+{
+/**
+ * Loads a the hyperslice corresponding to this processor from a hdf5 file.
+ * @param flann_dataset Dataset where the data is loaded
+ * @param filename HDF5 file name
+ * @param name Name of dataset inside file
+ */
+template<typename T>
+void load_from_file(cvflann::Matrix<T>& dataset, const std::string& filename, const std::string& name)
+{
+ MPI_Comm comm = MPI_COMM_WORLD;
+ MPI_Info info = MPI_INFO_NULL;
+
+ int mpi_size, mpi_rank;
+ MPI_Comm_size(comm, &mpi_size);
+ MPI_Comm_rank(comm, &mpi_rank);
+
+ herr_t status;
+
+ hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS);
+ H5Pset_fapl_mpio(plist_id, comm, info);
+ hid_t file_id = H5Fopen(filename.c_str(), H5F_ACC_RDWR, plist_id);
+ CHECK_ERROR(file_id,"Error opening hdf5 file.");
+ H5Pclose(plist_id);
+ hid_t dataset_id;
+#if H5Dopen_vers == 2
+ dataset_id = H5Dopen2(file_id, name.c_str(), H5P_DEFAULT);
+#else
+ dataset_id = H5Dopen(file_id, name.c_str());
+#endif
+ CHECK_ERROR(dataset_id,"Error opening dataset in file.");
+
+ hid_t space_id = H5Dget_space(dataset_id);
+ hsize_t dims[2];
+ H5Sget_simple_extent_dims(space_id, dims, NULL);
+
+ hsize_t count[2];
+ hsize_t offset[2];
+
+ hsize_t item_cnt = dims[0]/mpi_size+(dims[0]%mpi_size==0 ? 0 : 1);
+ hsize_t cnt = (mpi_rank<mpi_size-1 ? item_cnt : dims[0]-item_cnt*(mpi_size-1));
+
+ count[0] = cnt;
+ count[1] = dims[1];
+ offset[0] = mpi_rank*item_cnt;
+ offset[1] = 0;
+
+ hid_t memspace_id = H5Screate_simple(2,count,NULL);
+
+ H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL);
+
+ dataset.rows = count[0];
+ dataset.cols = count[1];
+ dataset.data = new T[dataset.rows*dataset.cols];
+
+ plist_id = H5Pcreate(H5P_DATASET_XFER);
+ H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE);
+ status = H5Dread(dataset_id, get_hdf5_type<T>(), memspace_id, space_id, plist_id, dataset.data);
+ CHECK_ERROR(status, "Error reading dataset");
+
+ H5Pclose(plist_id);
+ H5Sclose(space_id);
+ H5Sclose(memspace_id);
+ H5Dclose(dataset_id);
+ H5Fclose(file_id);
+}
+}
+#endif // HAVE_MPI
+} // namespace cvflann::mpi
+
+#endif /* OPENCV_FLANN_HDF5_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/heap.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/heap.h
new file mode 100644
index 00000000..92a6ea61
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/heap.h
@@ -0,0 +1,165 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_HEAP_H_
+#define OPENCV_FLANN_HEAP_H_
+
+#include <algorithm>
+#include <vector>
+
+namespace cvflann
+{
+
+/**
+ * Priority Queue Implementation
+ *
+ * The priority queue is implemented with a heap. A heap is a complete
+ * (full) binary tree in which each parent is less than both of its
+ * children, but the order of the children is unspecified.
+ */
+template <typename T>
+class Heap
+{
+
+ /**
+ * Storage array for the heap.
+ * Type T must be comparable.
+ */
+ std::vector<T> heap;
+ int length;
+
+ /**
+ * Number of element in the heap
+ */
+ int count;
+
+
+
+public:
+ /**
+ * Constructor.
+ *
+ * Params:
+ * sz = heap size
+ */
+
+ Heap(int sz)
+ {
+ length = sz;
+ heap.reserve(length);
+ count = 0;
+ }
+
+ /**
+ *
+ * Returns: heap size
+ */
+ int size()
+ {
+ return count;
+ }
+
+ /**
+ * Tests if the heap is empty
+ *
+ * Returns: true is heap empty, false otherwise
+ */
+ bool empty()
+ {
+ return size()==0;
+ }
+
+ /**
+ * Clears the heap.
+ */
+ void clear()
+ {
+ heap.clear();
+ count = 0;
+ }
+
+ struct CompareT
+ {
+ bool operator()(const T& t_1, const T& t_2) const
+ {
+ return t_2 < t_1;
+ }
+ };
+
+ /**
+ * Insert a new element in the heap.
+ *
+ * We select the next empty leaf node, and then keep moving any larger
+ * parents down until the right location is found to store this element.
+ *
+ * Params:
+ * value = the new element to be inserted in the heap
+ */
+ void insert(T value)
+ {
+ /* If heap is full, then return without adding this element. */
+ if (count == length) {
+ return;
+ }
+
+ heap.push_back(value);
+ static CompareT compareT;
+ std::push_heap(heap.begin(), heap.end(), compareT);
+ ++count;
+ }
+
+
+
+ /**
+ * Returns the node of minimum value from the heap (top of the heap).
+ *
+ * Params:
+ * value = out parameter used to return the min element
+ * Returns: false if heap empty
+ */
+ bool popMin(T& value)
+ {
+ if (count == 0) {
+ return false;
+ }
+
+ value = heap[0];
+ static CompareT compareT;
+ std::pop_heap(heap.begin(), heap.end(), compareT);
+ heap.pop_back();
+ --count;
+
+ return true; /* Return old last node. */
+ }
+};
+
+}
+
+#endif //OPENCV_FLANN_HEAP_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hierarchical_clustering_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hierarchical_clustering_index.h
new file mode 100644
index 00000000..59423ae0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/hierarchical_clustering_index.h
@@ -0,0 +1,776 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_HIERARCHICAL_CLUSTERING_INDEX_H_
+#define OPENCV_FLANN_HIERARCHICAL_CLUSTERING_INDEX_H_
+
+#include <algorithm>
+#include <string>
+#include <map>
+#include <cassert>
+#include <limits>
+#include <cmath>
+
+#include "general.h"
+#include "nn_index.h"
+#include "dist.h"
+#include "matrix.h"
+#include "result_set.h"
+#include "heap.h"
+#include "allocator.h"
+#include "random.h"
+#include "saving.h"
+
+
+namespace cvflann
+{
+
+struct HierarchicalClusteringIndexParams : public IndexParams
+{
+ HierarchicalClusteringIndexParams(int branching = 32,
+ flann_centers_init_t centers_init = FLANN_CENTERS_RANDOM,
+ int trees = 4, int leaf_size = 100)
+ {
+ (*this)["algorithm"] = FLANN_INDEX_HIERARCHICAL;
+ // The branching factor used in the hierarchical clustering
+ (*this)["branching"] = branching;
+ // Algorithm used for picking the initial cluster centers
+ (*this)["centers_init"] = centers_init;
+ // number of parallel trees to build
+ (*this)["trees"] = trees;
+ // maximum leaf size
+ (*this)["leaf_size"] = leaf_size;
+ }
+};
+
+
+/**
+ * Hierarchical index
+ *
+ * Contains a tree constructed through a hierarchical clustering
+ * and other information for indexing a set of points for nearest-neighbour matching.
+ */
+template <typename Distance>
+class HierarchicalClusteringIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+private:
+
+
+ typedef void (HierarchicalClusteringIndex::* centersAlgFunction)(int, int*, int, int*, int&);
+
+ /**
+ * The function used for choosing the cluster centers.
+ */
+ centersAlgFunction chooseCenters;
+
+
+
+ /**
+ * Chooses the initial centers in the k-means clustering in a random manner.
+ *
+ * Params:
+ * k = number of centers
+ * vecs = the dataset of points
+ * indices = indices in the dataset
+ * indices_length = length of indices vector
+ *
+ */
+ void chooseCentersRandom(int k, int* dsindices, int indices_length, int* centers, int& centers_length)
+ {
+ UniqueRandom r(indices_length);
+
+ int index;
+ for (index=0; index<k; ++index) {
+ bool duplicate = true;
+ int rnd;
+ while (duplicate) {
+ duplicate = false;
+ rnd = r.next();
+ if (rnd<0) {
+ centers_length = index;
+ return;
+ }
+
+ centers[index] = dsindices[rnd];
+
+ for (int j=0; j<index; ++j) {
+ DistanceType sq = distance(dataset[centers[index]], dataset[centers[j]], dataset.cols);
+ if (sq<1e-16) {
+ duplicate = true;
+ }
+ }
+ }
+ }
+
+ centers_length = index;
+ }
+
+
+ /**
+ * Chooses the initial centers in the k-means using Gonzales' algorithm
+ * so that the centers are spaced apart from each other.
+ *
+ * Params:
+ * k = number of centers
+ * vecs = the dataset of points
+ * indices = indices in the dataset
+ * Returns:
+ */
+ void chooseCentersGonzales(int k, int* dsindices, int indices_length, int* centers, int& centers_length)
+ {
+ int n = indices_length;
+
+ int rnd = rand_int(n);
+ assert(rnd >=0 && rnd < n);
+
+ centers[0] = dsindices[rnd];
+
+ int index;
+ for (index=1; index<k; ++index) {
+
+ int best_index = -1;
+ DistanceType best_val = 0;
+ for (int j=0; j<n; ++j) {
+ DistanceType dist = distance(dataset[centers[0]],dataset[dsindices[j]],dataset.cols);
+ for (int i=1; i<index; ++i) {
+ DistanceType tmp_dist = distance(dataset[centers[i]],dataset[dsindices[j]],dataset.cols);
+ if (tmp_dist<dist) {
+ dist = tmp_dist;
+ }
+ }
+ if (dist>best_val) {
+ best_val = dist;
+ best_index = j;
+ }
+ }
+ if (best_index!=-1) {
+ centers[index] = dsindices[best_index];
+ }
+ else {
+ break;
+ }
+ }
+ centers_length = index;
+ }
+
+
+ /**
+ * Chooses the initial centers in the k-means using the algorithm
+ * proposed in the KMeans++ paper:
+ * Arthur, David; Vassilvitskii, Sergei - k-means++: The Advantages of Careful Seeding
+ *
+ * Implementation of this function was converted from the one provided in Arthur's code.
+ *
+ * Params:
+ * k = number of centers
+ * vecs = the dataset of points
+ * indices = indices in the dataset
+ * Returns:
+ */
+ void chooseCentersKMeanspp(int k, int* dsindices, int indices_length, int* centers, int& centers_length)
+ {
+ int n = indices_length;
+
+ double currentPot = 0;
+ DistanceType* closestDistSq = new DistanceType[n];
+
+ // Choose one random center and set the closestDistSq values
+ int index = rand_int(n);
+ assert(index >=0 && index < n);
+ centers[0] = dsindices[index];
+
+ // Computing distance^2 will have the advantage of even higher probability further to pick new centers
+ // far from previous centers (and this complies to "k-means++: the advantages of careful seeding" article)
+ for (int i = 0; i < n; i++) {
+ closestDistSq[i] = distance(dataset[dsindices[i]], dataset[dsindices[index]], dataset.cols);
+ closestDistSq[i] = ensureSquareDistance<Distance>( closestDistSq[i] );
+ currentPot += closestDistSq[i];
+ }
+
+
+ const int numLocalTries = 1;
+
+ // Choose each center
+ int centerCount;
+ for (centerCount = 1; centerCount < k; centerCount++) {
+
+ // Repeat several trials
+ double bestNewPot = -1;
+ int bestNewIndex = 0;
+ for (int localTrial = 0; localTrial < numLocalTries; localTrial++) {
+
+ // Choose our center - have to be slightly careful to return a valid answer even accounting
+ // for possible rounding errors
+ double randVal = rand_double(currentPot);
+ for (index = 0; index < n-1; index++) {
+ if (randVal <= closestDistSq[index]) break;
+ else randVal -= closestDistSq[index];
+ }
+
+ // Compute the new potential
+ double newPot = 0;
+ for (int i = 0; i < n; i++) {
+ DistanceType dist = distance(dataset[dsindices[i]], dataset[dsindices[index]], dataset.cols);
+ newPot += std::min( ensureSquareDistance<Distance>(dist), closestDistSq[i] );
+ }
+
+ // Store the best result
+ if ((bestNewPot < 0)||(newPot < bestNewPot)) {
+ bestNewPot = newPot;
+ bestNewIndex = index;
+ }
+ }
+
+ // Add the appropriate center
+ centers[centerCount] = dsindices[bestNewIndex];
+ currentPot = bestNewPot;
+ for (int i = 0; i < n; i++) {
+ DistanceType dist = distance(dataset[dsindices[i]], dataset[dsindices[bestNewIndex]], dataset.cols);
+ closestDistSq[i] = std::min( ensureSquareDistance<Distance>(dist), closestDistSq[i] );
+ }
+ }
+
+ centers_length = centerCount;
+
+ delete[] closestDistSq;
+ }
+
+
+public:
+
+
+ /**
+ * Index constructor
+ *
+ * Params:
+ * inputData = dataset with the input features
+ * params = parameters passed to the hierarchical k-means algorithm
+ */
+ HierarchicalClusteringIndex(const Matrix<ElementType>& inputData, const IndexParams& index_params = HierarchicalClusteringIndexParams(),
+ Distance d = Distance())
+ : dataset(inputData), params(index_params), root(NULL), indices(NULL), distance(d)
+ {
+ memoryCounter = 0;
+
+ size_ = dataset.rows;
+ veclen_ = dataset.cols;
+
+ branching_ = get_param(params,"branching",32);
+ centers_init_ = get_param(params,"centers_init", FLANN_CENTERS_RANDOM);
+ trees_ = get_param(params,"trees",4);
+ leaf_size_ = get_param(params,"leaf_size",100);
+
+ if (centers_init_==FLANN_CENTERS_RANDOM) {
+ chooseCenters = &HierarchicalClusteringIndex::chooseCentersRandom;
+ }
+ else if (centers_init_==FLANN_CENTERS_GONZALES) {
+ chooseCenters = &HierarchicalClusteringIndex::chooseCentersGonzales;
+ }
+ else if (centers_init_==FLANN_CENTERS_KMEANSPP) {
+ chooseCenters = &HierarchicalClusteringIndex::chooseCentersKMeanspp;
+ }
+ else {
+ throw FLANNException("Unknown algorithm for choosing initial centers.");
+ }
+
+ trees_ = get_param(params,"trees",4);
+ root = new NodePtr[trees_];
+ indices = new int*[trees_];
+
+ for (int i=0; i<trees_; ++i) {
+ root[i] = NULL;
+ indices[i] = NULL;
+ }
+ }
+
+ HierarchicalClusteringIndex(const HierarchicalClusteringIndex&);
+ HierarchicalClusteringIndex& operator=(const HierarchicalClusteringIndex&);
+
+ /**
+ * Index destructor.
+ *
+ * Release the memory used by the index.
+ */
+ virtual ~HierarchicalClusteringIndex()
+ {
+ free_elements();
+
+ if (root!=NULL) {
+ delete[] root;
+ }
+
+ if (indices!=NULL) {
+ delete[] indices;
+ }
+ }
+
+
+ /**
+ * Release the inner elements of indices[]
+ */
+ void free_elements()
+ {
+ if (indices!=NULL) {
+ for(int i=0; i<trees_; ++i) {
+ if (indices[i]!=NULL) {
+ delete[] indices[i];
+ indices[i] = NULL;
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Returns size of index.
+ */
+ size_t size() const
+ {
+ return size_;
+ }
+
+ /**
+ * Returns the length of an index feature.
+ */
+ size_t veclen() const
+ {
+ return veclen_;
+ }
+
+
+ /**
+ * Computes the inde memory usage
+ * Returns: memory used by the index
+ */
+ int usedMemory() const
+ {
+ return pool.usedMemory+pool.wastedMemory+memoryCounter;
+ }
+
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ /**
+ * Builds the index
+ */
+ void buildIndex()
+ {
+ if (branching_<2) {
+ throw FLANNException("Branching factor must be at least 2");
+ }
+
+ free_elements();
+
+ for (int i=0; i<trees_; ++i) {
+ indices[i] = new int[size_];
+ for (size_t j=0; j<size_; ++j) {
+ indices[i][j] = (int)j;
+ }
+ root[i] = pool.allocate<Node>();
+ computeClustering(root[i], indices[i], (int)size_, branching_,0);
+ }
+ }
+
+
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_HIERARCHICAL;
+ }
+
+
+ void saveIndex(FILE* stream)
+ {
+ save_value(stream, branching_);
+ save_value(stream, trees_);
+ save_value(stream, centers_init_);
+ save_value(stream, leaf_size_);
+ save_value(stream, memoryCounter);
+ for (int i=0; i<trees_; ++i) {
+ save_value(stream, *indices[i], size_);
+ save_tree(stream, root[i], i);
+ }
+
+ }
+
+
+ void loadIndex(FILE* stream)
+ {
+ free_elements();
+
+ if (root!=NULL) {
+ delete[] root;
+ }
+
+ if (indices!=NULL) {
+ delete[] indices;
+ }
+
+ load_value(stream, branching_);
+ load_value(stream, trees_);
+ load_value(stream, centers_init_);
+ load_value(stream, leaf_size_);
+ load_value(stream, memoryCounter);
+
+ indices = new int*[trees_];
+ root = new NodePtr[trees_];
+ for (int i=0; i<trees_; ++i) {
+ indices[i] = new int[size_];
+ load_value(stream, *indices[i], size_);
+ load_tree(stream, root[i], i);
+ }
+
+ params["algorithm"] = getType();
+ params["branching"] = branching_;
+ params["trees"] = trees_;
+ params["centers_init"] = centers_init_;
+ params["leaf_size"] = leaf_size_;
+ }
+
+
+ /**
+ * Find set of nearest neighbors to vec. Their indices are stored inside
+ * the result object.
+ *
+ * Params:
+ * result = the result object in which the indices of the nearest-neighbors are stored
+ * vec = the vector for which to search the nearest neighbors
+ * searchParams = parameters that influence the search algorithm (checks)
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+
+ int maxChecks = get_param(searchParams,"checks",32);
+
+ // Priority queue storing intermediate branches in the best-bin-first search
+ Heap<BranchSt>* heap = new Heap<BranchSt>((int)size_);
+
+ std::vector<bool> checked(size_,false);
+ int checks = 0;
+ for (int i=0; i<trees_; ++i) {
+ findNN(root[i], result, vec, checks, maxChecks, heap, checked);
+ }
+
+ BranchSt branch;
+ while (heap->popMin(branch) && (checks<maxChecks || !result.full())) {
+ NodePtr node = branch.node;
+ findNN(node, result, vec, checks, maxChecks, heap, checked);
+ }
+ assert(result.full());
+
+ delete heap;
+
+ }
+
+ IndexParams getParameters() const
+ {
+ return params;
+ }
+
+
+private:
+
+ /**
+ * Struture representing a node in the hierarchical k-means tree.
+ */
+ struct Node
+ {
+ /**
+ * The cluster center index
+ */
+ int pivot;
+ /**
+ * The cluster size (number of points in the cluster)
+ */
+ int size;
+ /**
+ * Child nodes (only for non-terminal nodes)
+ */
+ Node** childs;
+ /**
+ * Node points (only for terminal nodes)
+ */
+ int* indices;
+ /**
+ * Level
+ */
+ int level;
+ };
+ typedef Node* NodePtr;
+
+
+
+ /**
+ * Alias definition for a nicer syntax.
+ */
+ typedef BranchStruct<NodePtr, DistanceType> BranchSt;
+
+
+
+ void save_tree(FILE* stream, NodePtr node, int num)
+ {
+ save_value(stream, *node);
+ if (node->childs==NULL) {
+ int indices_offset = (int)(node->indices - indices[num]);
+ save_value(stream, indices_offset);
+ }
+ else {
+ for(int i=0; i<branching_; ++i) {
+ save_tree(stream, node->childs[i], num);
+ }
+ }
+ }
+
+
+ void load_tree(FILE* stream, NodePtr& node, int num)
+ {
+ node = pool.allocate<Node>();
+ load_value(stream, *node);
+ if (node->childs==NULL) {
+ int indices_offset;
+ load_value(stream, indices_offset);
+ node->indices = indices[num] + indices_offset;
+ }
+ else {
+ node->childs = pool.allocate<NodePtr>(branching_);
+ for(int i=0; i<branching_; ++i) {
+ load_tree(stream, node->childs[i], num);
+ }
+ }
+ }
+
+
+
+
+ void computeLabels(int* dsindices, int indices_length, int* centers, int centers_length, int* labels, DistanceType& cost)
+ {
+ cost = 0;
+ for (int i=0; i<indices_length; ++i) {
+ ElementType* point = dataset[dsindices[i]];
+ DistanceType dist = distance(point, dataset[centers[0]], veclen_);
+ labels[i] = 0;
+ for (int j=1; j<centers_length; ++j) {
+ DistanceType new_dist = distance(point, dataset[centers[j]], veclen_);
+ if (dist>new_dist) {
+ labels[i] = j;
+ dist = new_dist;
+ }
+ }
+ cost += dist;
+ }
+ }
+
+ /**
+ * The method responsible with actually doing the recursive hierarchical
+ * clustering
+ *
+ * Params:
+ * node = the node to cluster
+ * indices = indices of the points belonging to the current node
+ * branching = the branching factor to use in the clustering
+ *
+ * TODO: for 1-sized clusters don't store a cluster center (it's the same as the single cluster point)
+ */
+ void computeClustering(NodePtr node, int* dsindices, int indices_length, int branching, int level)
+ {
+ node->size = indices_length;
+ node->level = level;
+
+ if (indices_length < leaf_size_) { // leaf node
+ node->indices = dsindices;
+ std::sort(node->indices,node->indices+indices_length);
+ node->childs = NULL;
+ return;
+ }
+
+ std::vector<int> centers(branching);
+ std::vector<int> labels(indices_length);
+
+ int centers_length;
+ (this->*chooseCenters)(branching, dsindices, indices_length, &centers[0], centers_length);
+
+ if (centers_length<branching) {
+ node->indices = dsindices;
+ std::sort(node->indices,node->indices+indices_length);
+ node->childs = NULL;
+ return;
+ }
+
+
+ // assign points to clusters
+ DistanceType cost;
+ computeLabels(dsindices, indices_length, &centers[0], centers_length, &labels[0], cost);
+
+ node->childs = pool.allocate<NodePtr>(branching);
+ int start = 0;
+ int end = start;
+ for (int i=0; i<branching; ++i) {
+ for (int j=0; j<indices_length; ++j) {
+ if (labels[j]==i) {
+ std::swap(dsindices[j],dsindices[end]);
+ std::swap(labels[j],labels[end]);
+ end++;
+ }
+ }
+
+ node->childs[i] = pool.allocate<Node>();
+ node->childs[i]->pivot = centers[i];
+ node->childs[i]->indices = NULL;
+ computeClustering(node->childs[i],dsindices+start, end-start, branching, level+1);
+ start=end;
+ }
+ }
+
+
+
+ /**
+ * Performs one descent in the hierarchical k-means tree. The branches not
+ * visited are stored in a priority queue.
+ *
+ * Params:
+ * node = node to explore
+ * result = container for the k-nearest neighbors found
+ * vec = query points
+ * checks = how many points in the dataset have been checked so far
+ * maxChecks = maximum dataset points to checks
+ */
+
+
+ void findNN(NodePtr node, ResultSet<DistanceType>& result, const ElementType* vec, int& checks, int maxChecks,
+ Heap<BranchSt>* heap, std::vector<bool>& checked)
+ {
+ if (node->childs==NULL) {
+ if (checks>=maxChecks) {
+ if (result.full()) return;
+ }
+ for (int i=0; i<node->size; ++i) {
+ int index = node->indices[i];
+ if (!checked[index]) {
+ DistanceType dist = distance(dataset[index], vec, veclen_);
+ result.addPoint(dist, index);
+ checked[index] = true;
+ ++checks;
+ }
+ }
+ }
+ else {
+ DistanceType* domain_distances = new DistanceType[branching_];
+ int best_index = 0;
+ domain_distances[best_index] = distance(vec, dataset[node->childs[best_index]->pivot], veclen_);
+ for (int i=1; i<branching_; ++i) {
+ domain_distances[i] = distance(vec, dataset[node->childs[i]->pivot], veclen_);
+ if (domain_distances[i]<domain_distances[best_index]) {
+ best_index = i;
+ }
+ }
+ for (int i=0; i<branching_; ++i) {
+ if (i!=best_index) {
+ heap->insert(BranchSt(node->childs[i],domain_distances[i]));
+ }
+ }
+ delete[] domain_distances;
+ findNN(node->childs[best_index],result,vec, checks, maxChecks, heap, checked);
+ }
+ }
+
+private:
+
+
+ /**
+ * The dataset used by this index
+ */
+ const Matrix<ElementType> dataset;
+
+ /**
+ * Parameters used by this index
+ */
+ IndexParams params;
+
+
+ /**
+ * Number of features in the dataset.
+ */
+ size_t size_;
+
+ /**
+ * Length of each feature.
+ */
+ size_t veclen_;
+
+ /**
+ * The root node in the tree.
+ */
+ NodePtr* root;
+
+ /**
+ * Array of indices to vectors in the dataset.
+ */
+ int** indices;
+
+
+ /**
+ * The distance
+ */
+ Distance distance;
+
+ /**
+ * Pooled memory allocator.
+ *
+ * Using a pooled memory allocator is more efficient
+ * than allocating memory directly when there is a large
+ * number small of memory allocations.
+ */
+ PooledAllocator pool;
+
+ /**
+ * Memory occupied by the index.
+ */
+ int memoryCounter;
+
+ /** index parameters */
+ int branching_;
+ int trees_;
+ flann_centers_init_t centers_init_;
+ int leaf_size_;
+
+
+};
+
+}
+
+#endif /* OPENCV_FLANN_HIERARCHICAL_CLUSTERING_INDEX_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/index_testing.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/index_testing.h
new file mode 100644
index 00000000..d7640040
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/index_testing.h
@@ -0,0 +1,318 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_INDEX_TESTING_H_
+#define OPENCV_FLANN_INDEX_TESTING_H_
+
+#include <cstring>
+#include <cassert>
+#include <cmath>
+
+#include "matrix.h"
+#include "nn_index.h"
+#include "result_set.h"
+#include "logger.h"
+#include "timer.h"
+
+
+namespace cvflann
+{
+
+inline int countCorrectMatches(int* neighbors, int* groundTruth, int n)
+{
+ int count = 0;
+ for (int i=0; i<n; ++i) {
+ for (int k=0; k<n; ++k) {
+ if (neighbors[i]==groundTruth[k]) {
+ count++;
+ break;
+ }
+ }
+ }
+ return count;
+}
+
+
+template <typename Distance>
+typename Distance::ResultType computeDistanceRaport(const Matrix<typename Distance::ElementType>& inputData, typename Distance::ElementType* target,
+ int* neighbors, int* groundTruth, int veclen, int n, const Distance& distance)
+{
+ typedef typename Distance::ResultType DistanceType;
+
+ DistanceType ret = 0;
+ for (int i=0; i<n; ++i) {
+ DistanceType den = distance(inputData[groundTruth[i]], target, veclen);
+ DistanceType num = distance(inputData[neighbors[i]], target, veclen);
+
+ if ((den==0)&&(num==0)) {
+ ret += 1;
+ }
+ else {
+ ret += num/den;
+ }
+ }
+
+ return ret;
+}
+
+template <typename Distance>
+float search_with_ground_truth(NNIndex<Distance>& index, const Matrix<typename Distance::ElementType>& inputData,
+ const Matrix<typename Distance::ElementType>& testData, const Matrix<int>& matches, int nn, int checks,
+ float& time, typename Distance::ResultType& dist, const Distance& distance, int skipMatches)
+{
+ typedef typename Distance::ResultType DistanceType;
+
+ if (matches.cols<size_t(nn)) {
+ Logger::info("matches.cols=%d, nn=%d\n",matches.cols,nn);
+
+ throw FLANNException("Ground truth is not computed for as many neighbors as requested");
+ }
+
+ KNNResultSet<DistanceType> resultSet(nn+skipMatches);
+ SearchParams searchParams(checks);
+
+ std::vector<int> indices(nn+skipMatches);
+ std::vector<DistanceType> dists(nn+skipMatches);
+ int* neighbors = &indices[skipMatches];
+
+ int correct = 0;
+ DistanceType distR = 0;
+ StartStopTimer t;
+ int repeats = 0;
+ while (t.value<0.2) {
+ repeats++;
+ t.start();
+ correct = 0;
+ distR = 0;
+ for (size_t i = 0; i < testData.rows; i++) {
+ resultSet.init(&indices[0], &dists[0]);
+ index.findNeighbors(resultSet, testData[i], searchParams);
+
+ correct += countCorrectMatches(neighbors,matches[i], nn);
+ distR += computeDistanceRaport<Distance>(inputData, testData[i], neighbors, matches[i], (int)testData.cols, nn, distance);
+ }
+ t.stop();
+ }
+ time = float(t.value/repeats);
+
+ float precicion = (float)correct/(nn*testData.rows);
+
+ dist = distR/(testData.rows*nn);
+
+ Logger::info("%8d %10.4g %10.5g %10.5g %10.5g\n",
+ checks, precicion, time, 1000.0 * time / testData.rows, dist);
+
+ return precicion;
+}
+
+
+template <typename Distance>
+float test_index_checks(NNIndex<Distance>& index, const Matrix<typename Distance::ElementType>& inputData,
+ const Matrix<typename Distance::ElementType>& testData, const Matrix<int>& matches,
+ int checks, float& precision, const Distance& distance, int nn = 1, int skipMatches = 0)
+{
+ typedef typename Distance::ResultType DistanceType;
+
+ Logger::info(" Nodes Precision(%) Time(s) Time/vec(ms) Mean dist\n");
+ Logger::info("---------------------------------------------------------\n");
+
+ float time = 0;
+ DistanceType dist = 0;
+ precision = search_with_ground_truth(index, inputData, testData, matches, nn, checks, time, dist, distance, skipMatches);
+
+ return time;
+}
+
+template <typename Distance>
+float test_index_precision(NNIndex<Distance>& index, const Matrix<typename Distance::ElementType>& inputData,
+ const Matrix<typename Distance::ElementType>& testData, const Matrix<int>& matches,
+ float precision, int& checks, const Distance& distance, int nn = 1, int skipMatches = 0)
+{
+ typedef typename Distance::ResultType DistanceType;
+ const float SEARCH_EPS = 0.001f;
+
+ Logger::info(" Nodes Precision(%) Time(s) Time/vec(ms) Mean dist\n");
+ Logger::info("---------------------------------------------------------\n");
+
+ int c2 = 1;
+ float p2;
+ int c1 = 1;
+ //float p1;
+ float time;
+ DistanceType dist;
+
+ p2 = search_with_ground_truth(index, inputData, testData, matches, nn, c2, time, dist, distance, skipMatches);
+
+ if (p2>precision) {
+ Logger::info("Got as close as I can\n");
+ checks = c2;
+ return time;
+ }
+
+ while (p2<precision) {
+ c1 = c2;
+ //p1 = p2;
+ c2 *=2;
+ p2 = search_with_ground_truth(index, inputData, testData, matches, nn, c2, time, dist, distance, skipMatches);
+ }
+
+ int cx;
+ float realPrecision;
+ if (fabs(p2-precision)>SEARCH_EPS) {
+ Logger::info("Start linear estimation\n");
+ // after we got to values in the vecinity of the desired precision
+ // use linear approximation get a better estimation
+
+ cx = (c1+c2)/2;
+ realPrecision = search_with_ground_truth(index, inputData, testData, matches, nn, cx, time, dist, distance, skipMatches);
+ while (fabs(realPrecision-precision)>SEARCH_EPS) {
+
+ if (realPrecision<precision) {
+ c1 = cx;
+ }
+ else {
+ c2 = cx;
+ }
+ cx = (c1+c2)/2;
+ if (cx==c1) {
+ Logger::info("Got as close as I can\n");
+ break;
+ }
+ realPrecision = search_with_ground_truth(index, inputData, testData, matches, nn, cx, time, dist, distance, skipMatches);
+ }
+
+ c2 = cx;
+ p2 = realPrecision;
+
+ }
+ else {
+ Logger::info("No need for linear estimation\n");
+ cx = c2;
+ realPrecision = p2;
+ }
+
+ checks = cx;
+ return time;
+}
+
+
+template <typename Distance>
+void test_index_precisions(NNIndex<Distance>& index, const Matrix<typename Distance::ElementType>& inputData,
+ const Matrix<typename Distance::ElementType>& testData, const Matrix<int>& matches,
+ float* precisions, int precisions_length, const Distance& distance, int nn = 1, int skipMatches = 0, float maxTime = 0)
+{
+ typedef typename Distance::ResultType DistanceType;
+
+ const float SEARCH_EPS = 0.001;
+
+ // make sure precisions array is sorted
+ std::sort(precisions, precisions+precisions_length);
+
+ int pindex = 0;
+ float precision = precisions[pindex];
+
+ Logger::info(" Nodes Precision(%) Time(s) Time/vec(ms) Mean dist\n");
+ Logger::info("---------------------------------------------------------\n");
+
+ int c2 = 1;
+ float p2;
+
+ int c1 = 1;
+ float p1;
+
+ float time;
+ DistanceType dist;
+
+ p2 = search_with_ground_truth(index, inputData, testData, matches, nn, c2, time, dist, distance, skipMatches);
+
+ // if precision for 1 run down the tree is already
+ // better then some of the requested precisions, then
+ // skip those
+ while (precisions[pindex]<p2 && pindex<precisions_length) {
+ pindex++;
+ }
+
+ if (pindex==precisions_length) {
+ Logger::info("Got as close as I can\n");
+ return;
+ }
+
+ for (int i=pindex; i<precisions_length; ++i) {
+
+ precision = precisions[i];
+ while (p2<precision) {
+ c1 = c2;
+ p1 = p2;
+ c2 *=2;
+ p2 = search_with_ground_truth(index, inputData, testData, matches, nn, c2, time, dist, distance, skipMatches);
+ if ((maxTime> 0)&&(time > maxTime)&&(p2<precision)) return;
+ }
+
+ int cx;
+ float realPrecision;
+ if (fabs(p2-precision)>SEARCH_EPS) {
+ Logger::info("Start linear estimation\n");
+ // after we got to values in the vecinity of the desired precision
+ // use linear approximation get a better estimation
+
+ cx = (c1+c2)/2;
+ realPrecision = search_with_ground_truth(index, inputData, testData, matches, nn, cx, time, dist, distance, skipMatches);
+ while (fabs(realPrecision-precision)>SEARCH_EPS) {
+
+ if (realPrecision<precision) {
+ c1 = cx;
+ }
+ else {
+ c2 = cx;
+ }
+ cx = (c1+c2)/2;
+ if (cx==c1) {
+ Logger::info("Got as close as I can\n");
+ break;
+ }
+ realPrecision = search_with_ground_truth(index, inputData, testData, matches, nn, cx, time, dist, distance, skipMatches);
+ }
+
+ c2 = cx;
+ p2 = realPrecision;
+
+ }
+ else {
+ Logger::info("No need for linear estimation\n");
+ cx = c2;
+ realPrecision = p2;
+ }
+
+ }
+}
+
+}
+
+#endif //OPENCV_FLANN_INDEX_TESTING_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_index.h
new file mode 100644
index 00000000..1b8af4a5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_index.h
@@ -0,0 +1,628 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_KDTREE_INDEX_H_
+#define OPENCV_FLANN_KDTREE_INDEX_H_
+
+#include <algorithm>
+#include <map>
+#include <cassert>
+#include <cstring>
+
+#include "general.h"
+#include "nn_index.h"
+#include "dynamic_bitset.h"
+#include "matrix.h"
+#include "result_set.h"
+#include "heap.h"
+#include "allocator.h"
+#include "random.h"
+#include "saving.h"
+
+
+namespace cvflann
+{
+
+struct KDTreeIndexParams : public IndexParams
+{
+ KDTreeIndexParams(int trees = 4)
+ {
+ (*this)["algorithm"] = FLANN_INDEX_KDTREE;
+ (*this)["trees"] = trees;
+ }
+};
+
+
+/**
+ * Randomized kd-tree index
+ *
+ * Contains the k-d trees and other information for indexing a set of points
+ * for nearest-neighbor matching.
+ */
+template <typename Distance>
+class KDTreeIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+
+ /**
+ * KDTree constructor
+ *
+ * Params:
+ * inputData = dataset with the input features
+ * params = parameters passed to the kdtree algorithm
+ */
+ KDTreeIndex(const Matrix<ElementType>& inputData, const IndexParams& params = KDTreeIndexParams(),
+ Distance d = Distance() ) :
+ dataset_(inputData), index_params_(params), distance_(d)
+ {
+ size_ = dataset_.rows;
+ veclen_ = dataset_.cols;
+
+ trees_ = get_param(index_params_,"trees",4);
+ tree_roots_ = new NodePtr[trees_];
+
+ // Create a permutable array of indices to the input vectors.
+ vind_.resize(size_);
+ for (size_t i = 0; i < size_; ++i) {
+ vind_[i] = int(i);
+ }
+
+ mean_ = new DistanceType[veclen_];
+ var_ = new DistanceType[veclen_];
+ }
+
+
+ KDTreeIndex(const KDTreeIndex&);
+ KDTreeIndex& operator=(const KDTreeIndex&);
+
+ /**
+ * Standard destructor
+ */
+ ~KDTreeIndex()
+ {
+ if (tree_roots_!=NULL) {
+ delete[] tree_roots_;
+ }
+ delete[] mean_;
+ delete[] var_;
+ }
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ /**
+ * Builds the index
+ */
+ void buildIndex()
+ {
+ /* Construct the randomized trees. */
+ for (int i = 0; i < trees_; i++) {
+ /* Randomize the order of vectors to allow for unbiased sampling. */
+ std::random_shuffle(vind_.begin(), vind_.end());
+ tree_roots_[i] = divideTree(&vind_[0], int(size_) );
+ }
+ }
+
+
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_KDTREE;
+ }
+
+
+ void saveIndex(FILE* stream)
+ {
+ save_value(stream, trees_);
+ for (int i=0; i<trees_; ++i) {
+ save_tree(stream, tree_roots_[i]);
+ }
+ }
+
+
+
+ void loadIndex(FILE* stream)
+ {
+ load_value(stream, trees_);
+ if (tree_roots_!=NULL) {
+ delete[] tree_roots_;
+ }
+ tree_roots_ = new NodePtr[trees_];
+ for (int i=0; i<trees_; ++i) {
+ load_tree(stream,tree_roots_[i]);
+ }
+
+ index_params_["algorithm"] = getType();
+ index_params_["trees"] = tree_roots_;
+ }
+
+ /**
+ * Returns size of index.
+ */
+ size_t size() const
+ {
+ return size_;
+ }
+
+ /**
+ * Returns the length of an index feature.
+ */
+ size_t veclen() const
+ {
+ return veclen_;
+ }
+
+ /**
+ * Computes the inde memory usage
+ * Returns: memory used by the index
+ */
+ int usedMemory() const
+ {
+ return int(pool_.usedMemory+pool_.wastedMemory+dataset_.rows*sizeof(int)); // pool memory and vind array memory
+ }
+
+ /**
+ * Find set of nearest neighbors to vec. Their indices are stored inside
+ * the result object.
+ *
+ * Params:
+ * result = the result object in which the indices of the nearest-neighbors are stored
+ * vec = the vector for which to search the nearest neighbors
+ * maxCheck = the maximum number of restarts (in a best-bin-first manner)
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+ int maxChecks = get_param(searchParams,"checks", 32);
+ float epsError = 1+get_param(searchParams,"eps",0.0f);
+
+ if (maxChecks==FLANN_CHECKS_UNLIMITED) {
+ getExactNeighbors(result, vec, epsError);
+ }
+ else {
+ getNeighbors(result, vec, maxChecks, epsError);
+ }
+ }
+
+ IndexParams getParameters() const
+ {
+ return index_params_;
+ }
+
+private:
+
+
+ /*--------------------- Internal Data Structures --------------------------*/
+ struct Node
+ {
+ /**
+ * Dimension used for subdivision.
+ */
+ int divfeat;
+ /**
+ * The values used for subdivision.
+ */
+ DistanceType divval;
+ /**
+ * The child nodes.
+ */
+ Node* child1, * child2;
+ };
+ typedef Node* NodePtr;
+ typedef BranchStruct<NodePtr, DistanceType> BranchSt;
+ typedef BranchSt* Branch;
+
+
+
+ void save_tree(FILE* stream, NodePtr tree)
+ {
+ save_value(stream, *tree);
+ if (tree->child1!=NULL) {
+ save_tree(stream, tree->child1);
+ }
+ if (tree->child2!=NULL) {
+ save_tree(stream, tree->child2);
+ }
+ }
+
+
+ void load_tree(FILE* stream, NodePtr& tree)
+ {
+ tree = pool_.allocate<Node>();
+ load_value(stream, *tree);
+ if (tree->child1!=NULL) {
+ load_tree(stream, tree->child1);
+ }
+ if (tree->child2!=NULL) {
+ load_tree(stream, tree->child2);
+ }
+ }
+
+
+ /**
+ * Create a tree node that subdivides the list of vecs from vind[first]
+ * to vind[last]. The routine is called recursively on each sublist.
+ * Place a pointer to this new tree node in the location pTree.
+ *
+ * Params: pTree = the new node to create
+ * first = index of the first vector
+ * last = index of the last vector
+ */
+ NodePtr divideTree(int* ind, int count)
+ {
+ NodePtr node = pool_.allocate<Node>(); // allocate memory
+
+ /* If too few exemplars remain, then make this a leaf node. */
+ if ( count == 1) {
+ node->child1 = node->child2 = NULL; /* Mark as leaf node. */
+ node->divfeat = *ind; /* Store index of this vec. */
+ }
+ else {
+ int idx;
+ int cutfeat;
+ DistanceType cutval;
+ meanSplit(ind, count, idx, cutfeat, cutval);
+
+ node->divfeat = cutfeat;
+ node->divval = cutval;
+ node->child1 = divideTree(ind, idx);
+ node->child2 = divideTree(ind+idx, count-idx);
+ }
+
+ return node;
+ }
+
+
+ /**
+ * Choose which feature to use in order to subdivide this set of vectors.
+ * Make a random choice among those with the highest variance, and use
+ * its variance as the threshold value.
+ */
+ void meanSplit(int* ind, int count, int& index, int& cutfeat, DistanceType& cutval)
+ {
+ memset(mean_,0,veclen_*sizeof(DistanceType));
+ memset(var_,0,veclen_*sizeof(DistanceType));
+
+ /* Compute mean values. Only the first SAMPLE_MEAN values need to be
+ sampled to get a good estimate.
+ */
+ int cnt = std::min((int)SAMPLE_MEAN+1, count);
+ for (int j = 0; j < cnt; ++j) {
+ ElementType* v = dataset_[ind[j]];
+ for (size_t k=0; k<veclen_; ++k) {
+ mean_[k] += v[k];
+ }
+ }
+ for (size_t k=0; k<veclen_; ++k) {
+ mean_[k] /= cnt;
+ }
+
+ /* Compute variances (no need to divide by count). */
+ for (int j = 0; j < cnt; ++j) {
+ ElementType* v = dataset_[ind[j]];
+ for (size_t k=0; k<veclen_; ++k) {
+ DistanceType dist = v[k] - mean_[k];
+ var_[k] += dist * dist;
+ }
+ }
+ /* Select one of the highest variance indices at random. */
+ cutfeat = selectDivision(var_);
+ cutval = mean_[cutfeat];
+
+ int lim1, lim2;
+ planeSplit(ind, count, cutfeat, cutval, lim1, lim2);
+
+ if (lim1>count/2) index = lim1;
+ else if (lim2<count/2) index = lim2;
+ else index = count/2;
+
+ /* If either list is empty, it means that all remaining features
+ * are identical. Split in the middle to maintain a balanced tree.
+ */
+ if ((lim1==count)||(lim2==0)) index = count/2;
+ }
+
+
+ /**
+ * Select the top RAND_DIM largest values from v and return the index of
+ * one of these selected at random.
+ */
+ int selectDivision(DistanceType* v)
+ {
+ int num = 0;
+ size_t topind[RAND_DIM];
+
+ /* Create a list of the indices of the top RAND_DIM values. */
+ for (size_t i = 0; i < veclen_; ++i) {
+ if ((num < RAND_DIM)||(v[i] > v[topind[num-1]])) {
+ /* Put this element at end of topind. */
+ if (num < RAND_DIM) {
+ topind[num++] = i; /* Add to list. */
+ }
+ else {
+ topind[num-1] = i; /* Replace last element. */
+ }
+ /* Bubble end value down to right location by repeated swapping. */
+ int j = num - 1;
+ while (j > 0 && v[topind[j]] > v[topind[j-1]]) {
+ std::swap(topind[j], topind[j-1]);
+ --j;
+ }
+ }
+ }
+ /* Select a random integer in range [0,num-1], and return that index. */
+ int rnd = rand_int(num);
+ return (int)topind[rnd];
+ }
+
+
+ /**
+ * Subdivide the list of points by a plane perpendicular on axe corresponding
+ * to the 'cutfeat' dimension at 'cutval' position.
+ *
+ * On return:
+ * dataset[ind[0..lim1-1]][cutfeat]<cutval
+ * dataset[ind[lim1..lim2-1]][cutfeat]==cutval
+ * dataset[ind[lim2..count]][cutfeat]>cutval
+ */
+ void planeSplit(int* ind, int count, int cutfeat, DistanceType cutval, int& lim1, int& lim2)
+ {
+ /* Move vector indices for left subtree to front of list. */
+ int left = 0;
+ int right = count-1;
+ for (;; ) {
+ while (left<=right && dataset_[ind[left]][cutfeat]<cutval) ++left;
+ while (left<=right && dataset_[ind[right]][cutfeat]>=cutval) --right;
+ if (left>right) break;
+ std::swap(ind[left], ind[right]); ++left; --right;
+ }
+ lim1 = left;
+ right = count-1;
+ for (;; ) {
+ while (left<=right && dataset_[ind[left]][cutfeat]<=cutval) ++left;
+ while (left<=right && dataset_[ind[right]][cutfeat]>cutval) --right;
+ if (left>right) break;
+ std::swap(ind[left], ind[right]); ++left; --right;
+ }
+ lim2 = left;
+ }
+
+ /**
+ * Performs an exact nearest neighbor search. The exact search performs a full
+ * traversal of the tree.
+ */
+ void getExactNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, float epsError)
+ {
+ // checkID -= 1; /* Set a different unique ID for each search. */
+
+ if (trees_ > 1) {
+ fprintf(stderr,"It doesn't make any sense to use more than one tree for exact search");
+ }
+ if (trees_>0) {
+ searchLevelExact(result, vec, tree_roots_[0], 0.0, epsError);
+ }
+ assert(result.full());
+ }
+
+ /**
+ * Performs the approximate nearest-neighbor search. The search is approximate
+ * because the tree traversal is abandoned after a given number of descends in
+ * the tree.
+ */
+ void getNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, int maxCheck, float epsError)
+ {
+ int i;
+ BranchSt branch;
+
+ int checkCount = 0;
+ Heap<BranchSt>* heap = new Heap<BranchSt>((int)size_);
+ DynamicBitset checked(size_);
+
+ /* Search once through each tree down to root. */
+ for (i = 0; i < trees_; ++i) {
+ searchLevel(result, vec, tree_roots_[i], 0, checkCount, maxCheck, epsError, heap, checked);
+ }
+
+ /* Keep searching other branches from heap until finished. */
+ while ( heap->popMin(branch) && (checkCount < maxCheck || !result.full() )) {
+ searchLevel(result, vec, branch.node, branch.mindist, checkCount, maxCheck, epsError, heap, checked);
+ }
+
+ delete heap;
+
+ assert(result.full());
+ }
+
+
+ /**
+ * Search starting from a given node of the tree. Based on any mismatches at
+ * higher levels, all exemplars below this level must have a distance of
+ * at least "mindistsq".
+ */
+ void searchLevel(ResultSet<DistanceType>& result_set, const ElementType* vec, NodePtr node, DistanceType mindist, int& checkCount, int maxCheck,
+ float epsError, Heap<BranchSt>* heap, DynamicBitset& checked)
+ {
+ if (result_set.worstDist()<mindist) {
+ // printf("Ignoring branch, too far\n");
+ return;
+ }
+
+ /* If this is a leaf node, then do check and return. */
+ if ((node->child1 == NULL)&&(node->child2 == NULL)) {
+ /* Do not check same node more than once when searching multiple trees.
+ Once a vector is checked, we set its location in vind to the
+ current checkID.
+ */
+ int index = node->divfeat;
+ if ( checked.test(index) || ((checkCount>=maxCheck)&& result_set.full()) ) return;
+ checked.set(index);
+ checkCount++;
+
+ DistanceType dist = distance_(dataset_[index], vec, veclen_);
+ result_set.addPoint(dist,index);
+
+ return;
+ }
+
+ /* Which child branch should be taken first? */
+ ElementType val = vec[node->divfeat];
+ DistanceType diff = val - node->divval;
+ NodePtr bestChild = (diff < 0) ? node->child1 : node->child2;
+ NodePtr otherChild = (diff < 0) ? node->child2 : node->child1;
+
+ /* Create a branch record for the branch not taken. Add distance
+ of this feature boundary (we don't attempt to correct for any
+ use of this feature in a parent node, which is unlikely to
+ happen and would have only a small effect). Don't bother
+ adding more branches to heap after halfway point, as cost of
+ adding exceeds their value.
+ */
+
+ DistanceType new_distsq = mindist + distance_.accum_dist(val, node->divval, node->divfeat);
+ // if (2 * checkCount < maxCheck || !result.full()) {
+ if ((new_distsq*epsError < result_set.worstDist())|| !result_set.full()) {
+ heap->insert( BranchSt(otherChild, new_distsq) );
+ }
+
+ /* Call recursively to search next level down. */
+ searchLevel(result_set, vec, bestChild, mindist, checkCount, maxCheck, epsError, heap, checked);
+ }
+
+ /**
+ * Performs an exact search in the tree starting from a node.
+ */
+ void searchLevelExact(ResultSet<DistanceType>& result_set, const ElementType* vec, const NodePtr node, DistanceType mindist, const float epsError)
+ {
+ /* If this is a leaf node, then do check and return. */
+ if ((node->child1 == NULL)&&(node->child2 == NULL)) {
+ int index = node->divfeat;
+ DistanceType dist = distance_(dataset_[index], vec, veclen_);
+ result_set.addPoint(dist,index);
+ return;
+ }
+
+ /* Which child branch should be taken first? */
+ ElementType val = vec[node->divfeat];
+ DistanceType diff = val - node->divval;
+ NodePtr bestChild = (diff < 0) ? node->child1 : node->child2;
+ NodePtr otherChild = (diff < 0) ? node->child2 : node->child1;
+
+ /* Create a branch record for the branch not taken. Add distance
+ of this feature boundary (we don't attempt to correct for any
+ use of this feature in a parent node, which is unlikely to
+ happen and would have only a small effect). Don't bother
+ adding more branches to heap after halfway point, as cost of
+ adding exceeds their value.
+ */
+
+ DistanceType new_distsq = mindist + distance_.accum_dist(val, node->divval, node->divfeat);
+
+ /* Call recursively to search next level down. */
+ searchLevelExact(result_set, vec, bestChild, mindist, epsError);
+
+ if (new_distsq*epsError<=result_set.worstDist()) {
+ searchLevelExact(result_set, vec, otherChild, new_distsq, epsError);
+ }
+ }
+
+
+private:
+
+ enum
+ {
+ /**
+ * To improve efficiency, only SAMPLE_MEAN random values are used to
+ * compute the mean and variance at each level when building a tree.
+ * A value of 100 seems to perform as well as using all values.
+ */
+ SAMPLE_MEAN = 100,
+ /**
+ * Top random dimensions to consider
+ *
+ * When creating random trees, the dimension on which to subdivide is
+ * selected at random from among the top RAND_DIM dimensions with the
+ * highest variance. A value of 5 works well.
+ */
+ RAND_DIM=5
+ };
+
+
+ /**
+ * Number of randomized trees that are used
+ */
+ int trees_;
+
+ /**
+ * Array of indices to vectors in the dataset.
+ */
+ std::vector<int> vind_;
+
+ /**
+ * The dataset used by this index
+ */
+ const Matrix<ElementType> dataset_;
+
+ IndexParams index_params_;
+
+ size_t size_;
+ size_t veclen_;
+
+
+ DistanceType* mean_;
+ DistanceType* var_;
+
+
+ /**
+ * Array of k-d trees used to find neighbours.
+ */
+ NodePtr* tree_roots_;
+
+ /**
+ * Pooled memory allocator.
+ *
+ * Using a pooled memory allocator is more efficient
+ * than allocating memory directly when there is a large
+ * number small of memory allocations.
+ */
+ PooledAllocator pool_;
+
+ Distance distance_;
+
+
+}; // class KDTreeForest
+
+}
+
+#endif //OPENCV_FLANN_KDTREE_INDEX_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_single_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_single_index.h
new file mode 100644
index 00000000..252fc4c5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kdtree_single_index.h
@@ -0,0 +1,641 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_KDTREE_SINGLE_INDEX_H_
+#define OPENCV_FLANN_KDTREE_SINGLE_INDEX_H_
+
+#include <algorithm>
+#include <map>
+#include <cassert>
+#include <cstring>
+
+#include "general.h"
+#include "nn_index.h"
+#include "matrix.h"
+#include "result_set.h"
+#include "heap.h"
+#include "allocator.h"
+#include "random.h"
+#include "saving.h"
+
+namespace cvflann
+{
+
+struct KDTreeSingleIndexParams : public IndexParams
+{
+ KDTreeSingleIndexParams(int leaf_max_size = 10, bool reorder = true, int dim = -1)
+ {
+ (*this)["algorithm"] = FLANN_INDEX_KDTREE_SINGLE;
+ (*this)["leaf_max_size"] = leaf_max_size;
+ (*this)["reorder"] = reorder;
+ (*this)["dim"] = dim;
+ }
+};
+
+
+/**
+ * Randomized kd-tree index
+ *
+ * Contains the k-d trees and other information for indexing a set of points
+ * for nearest-neighbor matching.
+ */
+template <typename Distance>
+class KDTreeSingleIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+
+ /**
+ * KDTree constructor
+ *
+ * Params:
+ * inputData = dataset with the input features
+ * params = parameters passed to the kdtree algorithm
+ */
+ KDTreeSingleIndex(const Matrix<ElementType>& inputData, const IndexParams& params = KDTreeSingleIndexParams(),
+ Distance d = Distance() ) :
+ dataset_(inputData), index_params_(params), distance_(d)
+ {
+ size_ = dataset_.rows;
+ dim_ = dataset_.cols;
+ int dim_param = get_param(params,"dim",-1);
+ if (dim_param>0) dim_ = dim_param;
+ leaf_max_size_ = get_param(params,"leaf_max_size",10);
+ reorder_ = get_param(params,"reorder",true);
+
+ // Create a permutable array of indices to the input vectors.
+ vind_.resize(size_);
+ for (size_t i = 0; i < size_; i++) {
+ vind_[i] = (int)i;
+ }
+ }
+
+ KDTreeSingleIndex(const KDTreeSingleIndex&);
+ KDTreeSingleIndex& operator=(const KDTreeSingleIndex&);
+
+ /**
+ * Standard destructor
+ */
+ ~KDTreeSingleIndex()
+ {
+ if (reorder_) delete[] data_.data;
+ }
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ /**
+ * Builds the index
+ */
+ void buildIndex()
+ {
+ computeBoundingBox(root_bbox_);
+ root_node_ = divideTree(0, (int)size_, root_bbox_ ); // construct the tree
+
+ if (reorder_) {
+ delete[] data_.data;
+ data_ = cvflann::Matrix<ElementType>(new ElementType[size_*dim_], size_, dim_);
+ for (size_t i=0; i<size_; ++i) {
+ for (size_t j=0; j<dim_; ++j) {
+ data_[i][j] = dataset_[vind_[i]][j];
+ }
+ }
+ }
+ else {
+ data_ = dataset_;
+ }
+ }
+
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_KDTREE_SINGLE;
+ }
+
+
+ void saveIndex(FILE* stream)
+ {
+ save_value(stream, size_);
+ save_value(stream, dim_);
+ save_value(stream, root_bbox_);
+ save_value(stream, reorder_);
+ save_value(stream, leaf_max_size_);
+ save_value(stream, vind_);
+ if (reorder_) {
+ save_value(stream, data_);
+ }
+ save_tree(stream, root_node_);
+ }
+
+
+ void loadIndex(FILE* stream)
+ {
+ load_value(stream, size_);
+ load_value(stream, dim_);
+ load_value(stream, root_bbox_);
+ load_value(stream, reorder_);
+ load_value(stream, leaf_max_size_);
+ load_value(stream, vind_);
+ if (reorder_) {
+ load_value(stream, data_);
+ }
+ else {
+ data_ = dataset_;
+ }
+ load_tree(stream, root_node_);
+
+
+ index_params_["algorithm"] = getType();
+ index_params_["leaf_max_size"] = leaf_max_size_;
+ index_params_["reorder"] = reorder_;
+ }
+
+ /**
+ * Returns size of index.
+ */
+ size_t size() const
+ {
+ return size_;
+ }
+
+ /**
+ * Returns the length of an index feature.
+ */
+ size_t veclen() const
+ {
+ return dim_;
+ }
+
+ /**
+ * Computes the inde memory usage
+ * Returns: memory used by the index
+ */
+ int usedMemory() const
+ {
+ return (int)(pool_.usedMemory+pool_.wastedMemory+dataset_.rows*sizeof(int)); // pool memory and vind array memory
+ }
+
+
+ /**
+ * \brief Perform k-nearest neighbor search
+ * \param[in] queries The query points for which to find the nearest neighbors
+ * \param[out] indices The indices of the nearest neighbors found
+ * \param[out] dists Distances to the nearest neighbors found
+ * \param[in] knn Number of nearest neighbors to return
+ * \param[in] params Search parameters
+ */
+ void knnSearch(const Matrix<ElementType>& queries, Matrix<int>& indices, Matrix<DistanceType>& dists, int knn, const SearchParams& params)
+ {
+ assert(queries.cols == veclen());
+ assert(indices.rows >= queries.rows);
+ assert(dists.rows >= queries.rows);
+ assert(int(indices.cols) >= knn);
+ assert(int(dists.cols) >= knn);
+
+ KNNSimpleResultSet<DistanceType> resultSet(knn);
+ for (size_t i = 0; i < queries.rows; i++) {
+ resultSet.init(indices[i], dists[i]);
+ findNeighbors(resultSet, queries[i], params);
+ }
+ }
+
+ IndexParams getParameters() const
+ {
+ return index_params_;
+ }
+
+ /**
+ * Find set of nearest neighbors to vec. Their indices are stored inside
+ * the result object.
+ *
+ * Params:
+ * result = the result object in which the indices of the nearest-neighbors are stored
+ * vec = the vector for which to search the nearest neighbors
+ * maxCheck = the maximum number of restarts (in a best-bin-first manner)
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+ float epsError = 1+get_param(searchParams,"eps",0.0f);
+
+ std::vector<DistanceType> dists(dim_,0);
+ DistanceType distsq = computeInitialDistances(vec, dists);
+ searchLevel(result, vec, root_node_, distsq, dists, epsError);
+ }
+
+private:
+
+
+ /*--------------------- Internal Data Structures --------------------------*/
+ struct Node
+ {
+ /**
+ * Indices of points in leaf node
+ */
+ int left, right;
+ /**
+ * Dimension used for subdivision.
+ */
+ int divfeat;
+ /**
+ * The values used for subdivision.
+ */
+ DistanceType divlow, divhigh;
+ /**
+ * The child nodes.
+ */
+ Node* child1, * child2;
+ };
+ typedef Node* NodePtr;
+
+
+ struct Interval
+ {
+ DistanceType low, high;
+ };
+
+ typedef std::vector<Interval> BoundingBox;
+
+ typedef BranchStruct<NodePtr, DistanceType> BranchSt;
+ typedef BranchSt* Branch;
+
+
+
+
+ void save_tree(FILE* stream, NodePtr tree)
+ {
+ save_value(stream, *tree);
+ if (tree->child1!=NULL) {
+ save_tree(stream, tree->child1);
+ }
+ if (tree->child2!=NULL) {
+ save_tree(stream, tree->child2);
+ }
+ }
+
+
+ void load_tree(FILE* stream, NodePtr& tree)
+ {
+ tree = pool_.allocate<Node>();
+ load_value(stream, *tree);
+ if (tree->child1!=NULL) {
+ load_tree(stream, tree->child1);
+ }
+ if (tree->child2!=NULL) {
+ load_tree(stream, tree->child2);
+ }
+ }
+
+
+ void computeBoundingBox(BoundingBox& bbox)
+ {
+ bbox.resize(dim_);
+ for (size_t i=0; i<dim_; ++i) {
+ bbox[i].low = (DistanceType)dataset_[0][i];
+ bbox[i].high = (DistanceType)dataset_[0][i];
+ }
+ for (size_t k=1; k<dataset_.rows; ++k) {
+ for (size_t i=0; i<dim_; ++i) {
+ if (dataset_[k][i]<bbox[i].low) bbox[i].low = (DistanceType)dataset_[k][i];
+ if (dataset_[k][i]>bbox[i].high) bbox[i].high = (DistanceType)dataset_[k][i];
+ }
+ }
+ }
+
+
+ /**
+ * Create a tree node that subdivides the list of vecs from vind[first]
+ * to vind[last]. The routine is called recursively on each sublist.
+ * Place a pointer to this new tree node in the location pTree.
+ *
+ * Params: pTree = the new node to create
+ * first = index of the first vector
+ * last = index of the last vector
+ */
+ NodePtr divideTree(int left, int right, BoundingBox& bbox)
+ {
+ NodePtr node = pool_.allocate<Node>(); // allocate memory
+
+ /* If too few exemplars remain, then make this a leaf node. */
+ if ( (right-left) <= leaf_max_size_) {
+ node->child1 = node->child2 = NULL; /* Mark as leaf node. */
+ node->left = left;
+ node->right = right;
+
+ // compute bounding-box of leaf points
+ for (size_t i=0; i<dim_; ++i) {
+ bbox[i].low = (DistanceType)dataset_[vind_[left]][i];
+ bbox[i].high = (DistanceType)dataset_[vind_[left]][i];
+ }
+ for (int k=left+1; k<right; ++k) {
+ for (size_t i=0; i<dim_; ++i) {
+ if (bbox[i].low>dataset_[vind_[k]][i]) bbox[i].low=(DistanceType)dataset_[vind_[k]][i];
+ if (bbox[i].high<dataset_[vind_[k]][i]) bbox[i].high=(DistanceType)dataset_[vind_[k]][i];
+ }
+ }
+ }
+ else {
+ int idx;
+ int cutfeat;
+ DistanceType cutval;
+ middleSplit_(&vind_[0]+left, right-left, idx, cutfeat, cutval, bbox);
+
+ node->divfeat = cutfeat;
+
+ BoundingBox left_bbox(bbox);
+ left_bbox[cutfeat].high = cutval;
+ node->child1 = divideTree(left, left+idx, left_bbox);
+
+ BoundingBox right_bbox(bbox);
+ right_bbox[cutfeat].low = cutval;
+ node->child2 = divideTree(left+idx, right, right_bbox);
+
+ node->divlow = left_bbox[cutfeat].high;
+ node->divhigh = right_bbox[cutfeat].low;
+
+ for (size_t i=0; i<dim_; ++i) {
+ bbox[i].low = std::min(left_bbox[i].low, right_bbox[i].low);
+ bbox[i].high = std::max(left_bbox[i].high, right_bbox[i].high);
+ }
+ }
+
+ return node;
+ }
+
+ void computeMinMax(int* ind, int count, int dim, ElementType& min_elem, ElementType& max_elem)
+ {
+ min_elem = dataset_[ind[0]][dim];
+ max_elem = dataset_[ind[0]][dim];
+ for (int i=1; i<count; ++i) {
+ ElementType val = dataset_[ind[i]][dim];
+ if (val<min_elem) min_elem = val;
+ if (val>max_elem) max_elem = val;
+ }
+ }
+
+ void middleSplit(int* ind, int count, int& index, int& cutfeat, DistanceType& cutval, const BoundingBox& bbox)
+ {
+ // find the largest span from the approximate bounding box
+ ElementType max_span = bbox[0].high-bbox[0].low;
+ cutfeat = 0;
+ cutval = (bbox[0].high+bbox[0].low)/2;
+ for (size_t i=1; i<dim_; ++i) {
+ ElementType span = bbox[i].high-bbox[i].low;
+ if (span>max_span) {
+ max_span = span;
+ cutfeat = i;
+ cutval = (bbox[i].high+bbox[i].low)/2;
+ }
+ }
+
+ // compute exact span on the found dimension
+ ElementType min_elem, max_elem;
+ computeMinMax(ind, count, cutfeat, min_elem, max_elem);
+ cutval = (min_elem+max_elem)/2;
+ max_span = max_elem - min_elem;
+
+ // check if a dimension of a largest span exists
+ size_t k = cutfeat;
+ for (size_t i=0; i<dim_; ++i) {
+ if (i==k) continue;
+ ElementType span = bbox[i].high-bbox[i].low;
+ if (span>max_span) {
+ computeMinMax(ind, count, i, min_elem, max_elem);
+ span = max_elem - min_elem;
+ if (span>max_span) {
+ max_span = span;
+ cutfeat = i;
+ cutval = (min_elem+max_elem)/2;
+ }
+ }
+ }
+ int lim1, lim2;
+ planeSplit(ind, count, cutfeat, cutval, lim1, lim2);
+
+ if (lim1>count/2) index = lim1;
+ else if (lim2<count/2) index = lim2;
+ else index = count/2;
+ }
+
+
+ void middleSplit_(int* ind, int count, int& index, int& cutfeat, DistanceType& cutval, const BoundingBox& bbox)
+ {
+ const float EPS=0.00001f;
+ DistanceType max_span = bbox[0].high-bbox[0].low;
+ for (size_t i=1; i<dim_; ++i) {
+ DistanceType span = bbox[i].high-bbox[i].low;
+ if (span>max_span) {
+ max_span = span;
+ }
+ }
+ DistanceType max_spread = -1;
+ cutfeat = 0;
+ for (size_t i=0; i<dim_; ++i) {
+ DistanceType span = bbox[i].high-bbox[i].low;
+ if (span>(DistanceType)((1-EPS)*max_span)) {
+ ElementType min_elem, max_elem;
+ computeMinMax(ind, count, cutfeat, min_elem, max_elem);
+ DistanceType spread = (DistanceType)(max_elem-min_elem);
+ if (spread>max_spread) {
+ cutfeat = (int)i;
+ max_spread = spread;
+ }
+ }
+ }
+ // split in the middle
+ DistanceType split_val = (bbox[cutfeat].low+bbox[cutfeat].high)/2;
+ ElementType min_elem, max_elem;
+ computeMinMax(ind, count, cutfeat, min_elem, max_elem);
+
+ if (split_val<min_elem) cutval = (DistanceType)min_elem;
+ else if (split_val>max_elem) cutval = (DistanceType)max_elem;
+ else cutval = split_val;
+
+ int lim1, lim2;
+ planeSplit(ind, count, cutfeat, cutval, lim1, lim2);
+
+ if (lim1>count/2) index = lim1;
+ else if (lim2<count/2) index = lim2;
+ else index = count/2;
+ }
+
+
+ /**
+ * Subdivide the list of points by a plane perpendicular on axe corresponding
+ * to the 'cutfeat' dimension at 'cutval' position.
+ *
+ * On return:
+ * dataset[ind[0..lim1-1]][cutfeat]<cutval
+ * dataset[ind[lim1..lim2-1]][cutfeat]==cutval
+ * dataset[ind[lim2..count]][cutfeat]>cutval
+ */
+ void planeSplit(int* ind, int count, int cutfeat, DistanceType cutval, int& lim1, int& lim2)
+ {
+ /* Move vector indices for left subtree to front of list. */
+ int left = 0;
+ int right = count-1;
+ for (;; ) {
+ while (left<=right && dataset_[ind[left]][cutfeat]<cutval) ++left;
+ while (left<=right && dataset_[ind[right]][cutfeat]>=cutval) --right;
+ if (left>right) break;
+ std::swap(ind[left], ind[right]); ++left; --right;
+ }
+ /* If either list is empty, it means that all remaining features
+ * are identical. Split in the middle to maintain a balanced tree.
+ */
+ lim1 = left;
+ right = count-1;
+ for (;; ) {
+ while (left<=right && dataset_[ind[left]][cutfeat]<=cutval) ++left;
+ while (left<=right && dataset_[ind[right]][cutfeat]>cutval) --right;
+ if (left>right) break;
+ std::swap(ind[left], ind[right]); ++left; --right;
+ }
+ lim2 = left;
+ }
+
+ DistanceType computeInitialDistances(const ElementType* vec, std::vector<DistanceType>& dists)
+ {
+ DistanceType distsq = 0.0;
+
+ for (size_t i = 0; i < dim_; ++i) {
+ if (vec[i] < root_bbox_[i].low) {
+ dists[i] = distance_.accum_dist(vec[i], root_bbox_[i].low, (int)i);
+ distsq += dists[i];
+ }
+ if (vec[i] > root_bbox_[i].high) {
+ dists[i] = distance_.accum_dist(vec[i], root_bbox_[i].high, (int)i);
+ distsq += dists[i];
+ }
+ }
+
+ return distsq;
+ }
+
+ /**
+ * Performs an exact search in the tree starting from a node.
+ */
+ void searchLevel(ResultSet<DistanceType>& result_set, const ElementType* vec, const NodePtr node, DistanceType mindistsq,
+ std::vector<DistanceType>& dists, const float epsError)
+ {
+ /* If this is a leaf node, then do check and return. */
+ if ((node->child1 == NULL)&&(node->child2 == NULL)) {
+ DistanceType worst_dist = result_set.worstDist();
+ for (int i=node->left; i<node->right; ++i) {
+ int index = reorder_ ? i : vind_[i];
+ DistanceType dist = distance_(vec, data_[index], dim_, worst_dist);
+ if (dist<worst_dist) {
+ result_set.addPoint(dist,vind_[i]);
+ }
+ }
+ return;
+ }
+
+ /* Which child branch should be taken first? */
+ int idx = node->divfeat;
+ ElementType val = vec[idx];
+ DistanceType diff1 = val - node->divlow;
+ DistanceType diff2 = val - node->divhigh;
+
+ NodePtr bestChild;
+ NodePtr otherChild;
+ DistanceType cut_dist;
+ if ((diff1+diff2)<0) {
+ bestChild = node->child1;
+ otherChild = node->child2;
+ cut_dist = distance_.accum_dist(val, node->divhigh, idx);
+ }
+ else {
+ bestChild = node->child2;
+ otherChild = node->child1;
+ cut_dist = distance_.accum_dist( val, node->divlow, idx);
+ }
+
+ /* Call recursively to search next level down. */
+ searchLevel(result_set, vec, bestChild, mindistsq, dists, epsError);
+
+ DistanceType dst = dists[idx];
+ mindistsq = mindistsq + cut_dist - dst;
+ dists[idx] = cut_dist;
+ if (mindistsq*epsError<=result_set.worstDist()) {
+ searchLevel(result_set, vec, otherChild, mindistsq, dists, epsError);
+ }
+ dists[idx] = dst;
+ }
+
+private:
+
+ /**
+ * The dataset used by this index
+ */
+ const Matrix<ElementType> dataset_;
+
+ IndexParams index_params_;
+
+ int leaf_max_size_;
+ bool reorder_;
+
+
+ /**
+ * Array of indices to vectors in the dataset.
+ */
+ std::vector<int> vind_;
+
+ Matrix<ElementType> data_;
+
+ size_t size_;
+ size_t dim_;
+
+ /**
+ * Array of k-d trees used to find neighbours.
+ */
+ NodePtr root_node_;
+
+ BoundingBox root_bbox_;
+
+ /**
+ * Pooled memory allocator.
+ *
+ * Using a pooled memory allocator is more efficient
+ * than allocating memory directly when there is a large
+ * number small of memory allocations.
+ */
+ PooledAllocator pool_;
+
+ Distance distance_;
+}; // class KDTree
+
+}
+
+#endif //OPENCV_FLANN_KDTREE_SINGLE_INDEX_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kmeans_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kmeans_index.h
new file mode 100644
index 00000000..e119ceb2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/kmeans_index.h
@@ -0,0 +1,1133 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_KMEANS_INDEX_H_
+#define OPENCV_FLANN_KMEANS_INDEX_H_
+
+#include <algorithm>
+#include <string>
+#include <map>
+#include <cassert>
+#include <limits>
+#include <cmath>
+
+#include "general.h"
+#include "nn_index.h"
+#include "dist.h"
+#include "matrix.h"
+#include "result_set.h"
+#include "heap.h"
+#include "allocator.h"
+#include "random.h"
+#include "saving.h"
+#include "logger.h"
+
+
+namespace cvflann
+{
+
+struct KMeansIndexParams : public IndexParams
+{
+ KMeansIndexParams(int branching = 32, int iterations = 11,
+ flann_centers_init_t centers_init = FLANN_CENTERS_RANDOM, float cb_index = 0.2 )
+ {
+ (*this)["algorithm"] = FLANN_INDEX_KMEANS;
+ // branching factor
+ (*this)["branching"] = branching;
+ // max iterations to perform in one kmeans clustering (kmeans tree)
+ (*this)["iterations"] = iterations;
+ // algorithm used for picking the initial cluster centers for kmeans tree
+ (*this)["centers_init"] = centers_init;
+ // cluster boundary index. Used when searching the kmeans tree
+ (*this)["cb_index"] = cb_index;
+ }
+};
+
+
+/**
+ * Hierarchical kmeans index
+ *
+ * Contains a tree constructed through a hierarchical kmeans clustering
+ * and other information for indexing a set of points for nearest-neighbour matching.
+ */
+template <typename Distance>
+class KMeansIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+
+
+ typedef void (KMeansIndex::* centersAlgFunction)(int, int*, int, int*, int&);
+
+ /**
+ * The function used for choosing the cluster centers.
+ */
+ centersAlgFunction chooseCenters;
+
+
+
+ /**
+ * Chooses the initial centers in the k-means clustering in a random manner.
+ *
+ * Params:
+ * k = number of centers
+ * vecs = the dataset of points
+ * indices = indices in the dataset
+ * indices_length = length of indices vector
+ *
+ */
+ void chooseCentersRandom(int k, int* indices, int indices_length, int* centers, int& centers_length)
+ {
+ UniqueRandom r(indices_length);
+
+ int index;
+ for (index=0; index<k; ++index) {
+ bool duplicate = true;
+ int rnd;
+ while (duplicate) {
+ duplicate = false;
+ rnd = r.next();
+ if (rnd<0) {
+ centers_length = index;
+ return;
+ }
+
+ centers[index] = indices[rnd];
+
+ for (int j=0; j<index; ++j) {
+ DistanceType sq = distance_(dataset_[centers[index]], dataset_[centers[j]], dataset_.cols);
+ if (sq<1e-16) {
+ duplicate = true;
+ }
+ }
+ }
+ }
+
+ centers_length = index;
+ }
+
+
+ /**
+ * Chooses the initial centers in the k-means using Gonzales' algorithm
+ * so that the centers are spaced apart from each other.
+ *
+ * Params:
+ * k = number of centers
+ * vecs = the dataset of points
+ * indices = indices in the dataset
+ * Returns:
+ */
+ void chooseCentersGonzales(int k, int* indices, int indices_length, int* centers, int& centers_length)
+ {
+ int n = indices_length;
+
+ int rnd = rand_int(n);
+ assert(rnd >=0 && rnd < n);
+
+ centers[0] = indices[rnd];
+
+ int index;
+ for (index=1; index<k; ++index) {
+
+ int best_index = -1;
+ DistanceType best_val = 0;
+ for (int j=0; j<n; ++j) {
+ DistanceType dist = distance_(dataset_[centers[0]],dataset_[indices[j]],dataset_.cols);
+ for (int i=1; i<index; ++i) {
+ DistanceType tmp_dist = distance_(dataset_[centers[i]],dataset_[indices[j]],dataset_.cols);
+ if (tmp_dist<dist) {
+ dist = tmp_dist;
+ }
+ }
+ if (dist>best_val) {
+ best_val = dist;
+ best_index = j;
+ }
+ }
+ if (best_index!=-1) {
+ centers[index] = indices[best_index];
+ }
+ else {
+ break;
+ }
+ }
+ centers_length = index;
+ }
+
+
+ /**
+ * Chooses the initial centers in the k-means using the algorithm
+ * proposed in the KMeans++ paper:
+ * Arthur, David; Vassilvitskii, Sergei - k-means++: The Advantages of Careful Seeding
+ *
+ * Implementation of this function was converted from the one provided in Arthur's code.
+ *
+ * Params:
+ * k = number of centers
+ * vecs = the dataset of points
+ * indices = indices in the dataset
+ * Returns:
+ */
+ void chooseCentersKMeanspp(int k, int* indices, int indices_length, int* centers, int& centers_length)
+ {
+ int n = indices_length;
+
+ double currentPot = 0;
+ DistanceType* closestDistSq = new DistanceType[n];
+
+ // Choose one random center and set the closestDistSq values
+ int index = rand_int(n);
+ assert(index >=0 && index < n);
+ centers[0] = indices[index];
+
+ for (int i = 0; i < n; i++) {
+ closestDistSq[i] = distance_(dataset_[indices[i]], dataset_[indices[index]], dataset_.cols);
+ closestDistSq[i] = ensureSquareDistance<Distance>( closestDistSq[i] );
+ currentPot += closestDistSq[i];
+ }
+
+
+ const int numLocalTries = 1;
+
+ // Choose each center
+ int centerCount;
+ for (centerCount = 1; centerCount < k; centerCount++) {
+
+ // Repeat several trials
+ double bestNewPot = -1;
+ int bestNewIndex = -1;
+ for (int localTrial = 0; localTrial < numLocalTries; localTrial++) {
+
+ // Choose our center - have to be slightly careful to return a valid answer even accounting
+ // for possible rounding errors
+ double randVal = rand_double(currentPot);
+ for (index = 0; index < n-1; index++) {
+ if (randVal <= closestDistSq[index]) break;
+ else randVal -= closestDistSq[index];
+ }
+
+ // Compute the new potential
+ double newPot = 0;
+ for (int i = 0; i < n; i++) {
+ DistanceType dist = distance_(dataset_[indices[i]], dataset_[indices[index]], dataset_.cols);
+ newPot += std::min( ensureSquareDistance<Distance>(dist), closestDistSq[i] );
+ }
+
+ // Store the best result
+ if ((bestNewPot < 0)||(newPot < bestNewPot)) {
+ bestNewPot = newPot;
+ bestNewIndex = index;
+ }
+ }
+
+ // Add the appropriate center
+ centers[centerCount] = indices[bestNewIndex];
+ currentPot = bestNewPot;
+ for (int i = 0; i < n; i++) {
+ DistanceType dist = distance_(dataset_[indices[i]], dataset_[indices[bestNewIndex]], dataset_.cols);
+ closestDistSq[i] = std::min( ensureSquareDistance<Distance>(dist), closestDistSq[i] );
+ }
+ }
+
+ centers_length = centerCount;
+
+ delete[] closestDistSq;
+ }
+
+
+
+public:
+
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_KMEANS;
+ }
+
+ /**
+ * Index constructor
+ *
+ * Params:
+ * inputData = dataset with the input features
+ * params = parameters passed to the hierarchical k-means algorithm
+ */
+ KMeansIndex(const Matrix<ElementType>& inputData, const IndexParams& params = KMeansIndexParams(),
+ Distance d = Distance())
+ : dataset_(inputData), index_params_(params), root_(NULL), indices_(NULL), distance_(d)
+ {
+ memoryCounter_ = 0;
+
+ size_ = dataset_.rows;
+ veclen_ = dataset_.cols;
+
+ branching_ = get_param(params,"branching",32);
+ iterations_ = get_param(params,"iterations",11);
+ if (iterations_<0) {
+ iterations_ = (std::numeric_limits<int>::max)();
+ }
+ centers_init_ = get_param(params,"centers_init",FLANN_CENTERS_RANDOM);
+
+ if (centers_init_==FLANN_CENTERS_RANDOM) {
+ chooseCenters = &KMeansIndex::chooseCentersRandom;
+ }
+ else if (centers_init_==FLANN_CENTERS_GONZALES) {
+ chooseCenters = &KMeansIndex::chooseCentersGonzales;
+ }
+ else if (centers_init_==FLANN_CENTERS_KMEANSPP) {
+ chooseCenters = &KMeansIndex::chooseCentersKMeanspp;
+ }
+ else {
+ throw FLANNException("Unknown algorithm for choosing initial centers.");
+ }
+ cb_index_ = 0.4f;
+
+ }
+
+
+ KMeansIndex(const KMeansIndex&);
+ KMeansIndex& operator=(const KMeansIndex&);
+
+
+ /**
+ * Index destructor.
+ *
+ * Release the memory used by the index.
+ */
+ virtual ~KMeansIndex()
+ {
+ if (root_ != NULL) {
+ free_centers(root_);
+ }
+ if (indices_!=NULL) {
+ delete[] indices_;
+ }
+ }
+
+ /**
+ * Returns size of index.
+ */
+ size_t size() const
+ {
+ return size_;
+ }
+
+ /**
+ * Returns the length of an index feature.
+ */
+ size_t veclen() const
+ {
+ return veclen_;
+ }
+
+
+ void set_cb_index( float index)
+ {
+ cb_index_ = index;
+ }
+
+ /**
+ * Computes the inde memory usage
+ * Returns: memory used by the index
+ */
+ int usedMemory() const
+ {
+ return pool_.usedMemory+pool_.wastedMemory+memoryCounter_;
+ }
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ /**
+ * Builds the index
+ */
+ void buildIndex()
+ {
+ if (branching_<2) {
+ throw FLANNException("Branching factor must be at least 2");
+ }
+
+ indices_ = new int[size_];
+ for (size_t i=0; i<size_; ++i) {
+ indices_[i] = int(i);
+ }
+
+ root_ = pool_.allocate<KMeansNode>();
+ std::memset(root_, 0, sizeof(KMeansNode));
+
+ computeNodeStatistics(root_, indices_, (int)size_);
+ computeClustering(root_, indices_, (int)size_, branching_,0);
+ }
+
+
+ void saveIndex(FILE* stream)
+ {
+ save_value(stream, branching_);
+ save_value(stream, iterations_);
+ save_value(stream, memoryCounter_);
+ save_value(stream, cb_index_);
+ save_value(stream, *indices_, (int)size_);
+
+ save_tree(stream, root_);
+ }
+
+
+ void loadIndex(FILE* stream)
+ {
+ load_value(stream, branching_);
+ load_value(stream, iterations_);
+ load_value(stream, memoryCounter_);
+ load_value(stream, cb_index_);
+ if (indices_!=NULL) {
+ delete[] indices_;
+ }
+ indices_ = new int[size_];
+ load_value(stream, *indices_, size_);
+
+ if (root_!=NULL) {
+ free_centers(root_);
+ }
+ load_tree(stream, root_);
+
+ index_params_["algorithm"] = getType();
+ index_params_["branching"] = branching_;
+ index_params_["iterations"] = iterations_;
+ index_params_["centers_init"] = centers_init_;
+ index_params_["cb_index"] = cb_index_;
+
+ }
+
+
+ /**
+ * Find set of nearest neighbors to vec. Their indices are stored inside
+ * the result object.
+ *
+ * Params:
+ * result = the result object in which the indices of the nearest-neighbors are stored
+ * vec = the vector for which to search the nearest neighbors
+ * searchParams = parameters that influence the search algorithm (checks, cb_index)
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams)
+ {
+
+ int maxChecks = get_param(searchParams,"checks",32);
+
+ if (maxChecks==FLANN_CHECKS_UNLIMITED) {
+ findExactNN(root_, result, vec);
+ }
+ else {
+ // Priority queue storing intermediate branches in the best-bin-first search
+ Heap<BranchSt>* heap = new Heap<BranchSt>((int)size_);
+
+ int checks = 0;
+ findNN(root_, result, vec, checks, maxChecks, heap);
+
+ BranchSt branch;
+ while (heap->popMin(branch) && (checks<maxChecks || !result.full())) {
+ KMeansNodePtr node = branch.node;
+ findNN(node, result, vec, checks, maxChecks, heap);
+ }
+ assert(result.full());
+
+ delete heap;
+ }
+
+ }
+
+ /**
+ * Clustering function that takes a cut in the hierarchical k-means
+ * tree and return the clusters centers of that clustering.
+ * Params:
+ * numClusters = number of clusters to have in the clustering computed
+ * Returns: number of cluster centers
+ */
+ int getClusterCenters(Matrix<DistanceType>& centers)
+ {
+ int numClusters = centers.rows;
+ if (numClusters<1) {
+ throw FLANNException("Number of clusters must be at least 1");
+ }
+
+ DistanceType variance;
+ KMeansNodePtr* clusters = new KMeansNodePtr[numClusters];
+
+ int clusterCount = getMinVarianceClusters(root_, clusters, numClusters, variance);
+
+ Logger::info("Clusters requested: %d, returning %d\n",numClusters, clusterCount);
+
+ for (int i=0; i<clusterCount; ++i) {
+ DistanceType* center = clusters[i]->pivot;
+ for (size_t j=0; j<veclen_; ++j) {
+ centers[i][j] = center[j];
+ }
+ }
+ delete[] clusters;
+
+ return clusterCount;
+ }
+
+ IndexParams getParameters() const
+ {
+ return index_params_;
+ }
+
+
+private:
+ /**
+ * Struture representing a node in the hierarchical k-means tree.
+ */
+ struct KMeansNode
+ {
+ /**
+ * The cluster center.
+ */
+ DistanceType* pivot;
+ /**
+ * The cluster radius.
+ */
+ DistanceType radius;
+ /**
+ * The cluster mean radius.
+ */
+ DistanceType mean_radius;
+ /**
+ * The cluster variance.
+ */
+ DistanceType variance;
+ /**
+ * The cluster size (number of points in the cluster)
+ */
+ int size;
+ /**
+ * Child nodes (only for non-terminal nodes)
+ */
+ KMeansNode** childs;
+ /**
+ * Node points (only for terminal nodes)
+ */
+ int* indices;
+ /**
+ * Level
+ */
+ int level;
+ };
+ typedef KMeansNode* KMeansNodePtr;
+
+ /**
+ * Alias definition for a nicer syntax.
+ */
+ typedef BranchStruct<KMeansNodePtr, DistanceType> BranchSt;
+
+
+
+
+ void save_tree(FILE* stream, KMeansNodePtr node)
+ {
+ save_value(stream, *node);
+ save_value(stream, *(node->pivot), (int)veclen_);
+ if (node->childs==NULL) {
+ int indices_offset = (int)(node->indices - indices_);
+ save_value(stream, indices_offset);
+ }
+ else {
+ for(int i=0; i<branching_; ++i) {
+ save_tree(stream, node->childs[i]);
+ }
+ }
+ }
+
+
+ void load_tree(FILE* stream, KMeansNodePtr& node)
+ {
+ node = pool_.allocate<KMeansNode>();
+ load_value(stream, *node);
+ node->pivot = new DistanceType[veclen_];
+ load_value(stream, *(node->pivot), (int)veclen_);
+ if (node->childs==NULL) {
+ int indices_offset;
+ load_value(stream, indices_offset);
+ node->indices = indices_ + indices_offset;
+ }
+ else {
+ node->childs = pool_.allocate<KMeansNodePtr>(branching_);
+ for(int i=0; i<branching_; ++i) {
+ load_tree(stream, node->childs[i]);
+ }
+ }
+ }
+
+
+ /**
+ * Helper function
+ */
+ void free_centers(KMeansNodePtr node)
+ {
+ delete[] node->pivot;
+ if (node->childs!=NULL) {
+ for (int k=0; k<branching_; ++k) {
+ free_centers(node->childs[k]);
+ }
+ }
+ }
+
+ /**
+ * Computes the statistics of a node (mean, radius, variance).
+ *
+ * Params:
+ * node = the node to use
+ * indices = the indices of the points belonging to the node
+ */
+ void computeNodeStatistics(KMeansNodePtr node, int* indices, int indices_length)
+ {
+
+ DistanceType radius = 0;
+ DistanceType variance = 0;
+ DistanceType* mean = new DistanceType[veclen_];
+ memoryCounter_ += int(veclen_*sizeof(DistanceType));
+
+ memset(mean,0,veclen_*sizeof(DistanceType));
+
+ for (size_t i=0; i<size_; ++i) {
+ ElementType* vec = dataset_[indices[i]];
+ for (size_t j=0; j<veclen_; ++j) {
+ mean[j] += vec[j];
+ }
+ variance += distance_(vec, ZeroIterator<ElementType>(), veclen_);
+ }
+ for (size_t j=0; j<veclen_; ++j) {
+ mean[j] /= size_;
+ }
+ variance /= size_;
+ variance -= distance_(mean, ZeroIterator<ElementType>(), veclen_);
+
+ DistanceType tmp = 0;
+ for (int i=0; i<indices_length; ++i) {
+ tmp = distance_(mean, dataset_[indices[i]], veclen_);
+ if (tmp>radius) {
+ radius = tmp;
+ }
+ }
+
+ node->variance = variance;
+ node->radius = radius;
+ node->pivot = mean;
+ }
+
+
+ /**
+ * The method responsible with actually doing the recursive hierarchical
+ * clustering
+ *
+ * Params:
+ * node = the node to cluster
+ * indices = indices of the points belonging to the current node
+ * branching = the branching factor to use in the clustering
+ *
+ * TODO: for 1-sized clusters don't store a cluster center (it's the same as the single cluster point)
+ */
+ void computeClustering(KMeansNodePtr node, int* indices, int indices_length, int branching, int level)
+ {
+ node->size = indices_length;
+ node->level = level;
+
+ if (indices_length < branching) {
+ node->indices = indices;
+ std::sort(node->indices,node->indices+indices_length);
+ node->childs = NULL;
+ return;
+ }
+
+ int* centers_idx = new int[branching];
+ int centers_length;
+ (this->*chooseCenters)(branching, indices, indices_length, centers_idx, centers_length);
+
+ if (centers_length<branching) {
+ node->indices = indices;
+ std::sort(node->indices,node->indices+indices_length);
+ node->childs = NULL;
+ delete [] centers_idx;
+ return;
+ }
+
+
+ Matrix<double> dcenters(new double[branching*veclen_],branching,veclen_);
+ for (int i=0; i<centers_length; ++i) {
+ ElementType* vec = dataset_[centers_idx[i]];
+ for (size_t k=0; k<veclen_; ++k) {
+ dcenters[i][k] = double(vec[k]);
+ }
+ }
+ delete[] centers_idx;
+
+ std::vector<DistanceType> radiuses(branching);
+ int* count = new int[branching];
+ for (int i=0; i<branching; ++i) {
+ radiuses[i] = 0;
+ count[i] = 0;
+ }
+
+ // assign points to clusters
+ int* belongs_to = new int[indices_length];
+ for (int i=0; i<indices_length; ++i) {
+
+ DistanceType sq_dist = distance_(dataset_[indices[i]], dcenters[0], veclen_);
+ belongs_to[i] = 0;
+ for (int j=1; j<branching; ++j) {
+ DistanceType new_sq_dist = distance_(dataset_[indices[i]], dcenters[j], veclen_);
+ if (sq_dist>new_sq_dist) {
+ belongs_to[i] = j;
+ sq_dist = new_sq_dist;
+ }
+ }
+ if (sq_dist>radiuses[belongs_to[i]]) {
+ radiuses[belongs_to[i]] = sq_dist;
+ }
+ count[belongs_to[i]]++;
+ }
+
+ bool converged = false;
+ int iteration = 0;
+ while (!converged && iteration<iterations_) {
+ converged = true;
+ iteration++;
+
+ // compute the new cluster centers
+ for (int i=0; i<branching; ++i) {
+ memset(dcenters[i],0,sizeof(double)*veclen_);
+ radiuses[i] = 0;
+ }
+ for (int i=0; i<indices_length; ++i) {
+ ElementType* vec = dataset_[indices[i]];
+ double* center = dcenters[belongs_to[i]];
+ for (size_t k=0; k<veclen_; ++k) {
+ center[k] += vec[k];
+ }
+ }
+ for (int i=0; i<branching; ++i) {
+ int cnt = count[i];
+ for (size_t k=0; k<veclen_; ++k) {
+ dcenters[i][k] /= cnt;
+ }
+ }
+
+ // reassign points to clusters
+ for (int i=0; i<indices_length; ++i) {
+ DistanceType sq_dist = distance_(dataset_[indices[i]], dcenters[0], veclen_);
+ int new_centroid = 0;
+ for (int j=1; j<branching; ++j) {
+ DistanceType new_sq_dist = distance_(dataset_[indices[i]], dcenters[j], veclen_);
+ if (sq_dist>new_sq_dist) {
+ new_centroid = j;
+ sq_dist = new_sq_dist;
+ }
+ }
+ if (sq_dist>radiuses[new_centroid]) {
+ radiuses[new_centroid] = sq_dist;
+ }
+ if (new_centroid != belongs_to[i]) {
+ count[belongs_to[i]]--;
+ count[new_centroid]++;
+ belongs_to[i] = new_centroid;
+
+ converged = false;
+ }
+ }
+
+ for (int i=0; i<branching; ++i) {
+ // if one cluster converges to an empty cluster,
+ // move an element into that cluster
+ if (count[i]==0) {
+ int j = (i+1)%branching;
+ while (count[j]<=1) {
+ j = (j+1)%branching;
+ }
+
+ for (int k=0; k<indices_length; ++k) {
+ if (belongs_to[k]==j) {
+ // for cluster j, we move the furthest element from the center to the empty cluster i
+ if ( distance_(dataset_[indices[k]], dcenters[j], veclen_) == radiuses[j] ) {
+ belongs_to[k] = i;
+ count[j]--;
+ count[i]++;
+ break;
+ }
+ }
+ }
+ converged = false;
+ }
+ }
+
+ }
+
+ DistanceType** centers = new DistanceType*[branching];
+
+ for (int i=0; i<branching; ++i) {
+ centers[i] = new DistanceType[veclen_];
+ memoryCounter_ += (int)(veclen_*sizeof(DistanceType));
+ for (size_t k=0; k<veclen_; ++k) {
+ centers[i][k] = (DistanceType)dcenters[i][k];
+ }
+ }
+
+
+ // compute kmeans clustering for each of the resulting clusters
+ node->childs = pool_.allocate<KMeansNodePtr>(branching);
+ int start = 0;
+ int end = start;
+ for (int c=0; c<branching; ++c) {
+ int s = count[c];
+
+ DistanceType variance = 0;
+ DistanceType mean_radius =0;
+ for (int i=0; i<indices_length; ++i) {
+ if (belongs_to[i]==c) {
+ DistanceType d = distance_(dataset_[indices[i]], ZeroIterator<ElementType>(), veclen_);
+ variance += d;
+ mean_radius += sqrt(d);
+ std::swap(indices[i],indices[end]);
+ std::swap(belongs_to[i],belongs_to[end]);
+ end++;
+ }
+ }
+ variance /= s;
+ mean_radius /= s;
+ variance -= distance_(centers[c], ZeroIterator<ElementType>(), veclen_);
+
+ node->childs[c] = pool_.allocate<KMeansNode>();
+ std::memset(node->childs[c], 0, sizeof(KMeansNode));
+ node->childs[c]->radius = radiuses[c];
+ node->childs[c]->pivot = centers[c];
+ node->childs[c]->variance = variance;
+ node->childs[c]->mean_radius = mean_radius;
+ computeClustering(node->childs[c],indices+start, end-start, branching, level+1);
+ start=end;
+ }
+
+ delete[] dcenters.data;
+ delete[] centers;
+ delete[] count;
+ delete[] belongs_to;
+ }
+
+
+
+ /**
+ * Performs one descent in the hierarchical k-means tree. The branches not
+ * visited are stored in a priority queue.
+ *
+ * Params:
+ * node = node to explore
+ * result = container for the k-nearest neighbors found
+ * vec = query points
+ * checks = how many points in the dataset have been checked so far
+ * maxChecks = maximum dataset points to checks
+ */
+
+
+ void findNN(KMeansNodePtr node, ResultSet<DistanceType>& result, const ElementType* vec, int& checks, int maxChecks,
+ Heap<BranchSt>* heap)
+ {
+ // Ignore those clusters that are too far away
+ {
+ DistanceType bsq = distance_(vec, node->pivot, veclen_);
+ DistanceType rsq = node->radius;
+ DistanceType wsq = result.worstDist();
+
+ DistanceType val = bsq-rsq-wsq;
+ DistanceType val2 = val*val-4*rsq*wsq;
+
+ //if (val>0) {
+ if ((val>0)&&(val2>0)) {
+ return;
+ }
+ }
+
+ if (node->childs==NULL) {
+ if (checks>=maxChecks) {
+ if (result.full()) return;
+ }
+ checks += node->size;
+ for (int i=0; i<node->size; ++i) {
+ int index = node->indices[i];
+ DistanceType dist = distance_(dataset_[index], vec, veclen_);
+ result.addPoint(dist, index);
+ }
+ }
+ else {
+ DistanceType* domain_distances = new DistanceType[branching_];
+ int closest_center = exploreNodeBranches(node, vec, domain_distances, heap);
+ delete[] domain_distances;
+ findNN(node->childs[closest_center],result,vec, checks, maxChecks, heap);
+ }
+ }
+
+ /**
+ * Helper function that computes the nearest childs of a node to a given query point.
+ * Params:
+ * node = the node
+ * q = the query point
+ * distances = array with the distances to each child node.
+ * Returns:
+ */
+ int exploreNodeBranches(KMeansNodePtr node, const ElementType* q, DistanceType* domain_distances, Heap<BranchSt>* heap)
+ {
+
+ int best_index = 0;
+ domain_distances[best_index] = distance_(q, node->childs[best_index]->pivot, veclen_);
+ for (int i=1; i<branching_; ++i) {
+ domain_distances[i] = distance_(q, node->childs[i]->pivot, veclen_);
+ if (domain_distances[i]<domain_distances[best_index]) {
+ best_index = i;
+ }
+ }
+
+ // float* best_center = node->childs[best_index]->pivot;
+ for (int i=0; i<branching_; ++i) {
+ if (i != best_index) {
+ domain_distances[i] -= cb_index_*node->childs[i]->variance;
+
+ // float dist_to_border = getDistanceToBorder(node.childs[i].pivot,best_center,q);
+ // if (domain_distances[i]<dist_to_border) {
+ // domain_distances[i] = dist_to_border;
+ // }
+ heap->insert(BranchSt(node->childs[i],domain_distances[i]));
+ }
+ }
+
+ return best_index;
+ }
+
+
+ /**
+ * Function the performs exact nearest neighbor search by traversing the entire tree.
+ */
+ void findExactNN(KMeansNodePtr node, ResultSet<DistanceType>& result, const ElementType* vec)
+ {
+ // Ignore those clusters that are too far away
+ {
+ DistanceType bsq = distance_(vec, node->pivot, veclen_);
+ DistanceType rsq = node->radius;
+ DistanceType wsq = result.worstDist();
+
+ DistanceType val = bsq-rsq-wsq;
+ DistanceType val2 = val*val-4*rsq*wsq;
+
+ // if (val>0) {
+ if ((val>0)&&(val2>0)) {
+ return;
+ }
+ }
+
+
+ if (node->childs==NULL) {
+ for (int i=0; i<node->size; ++i) {
+ int index = node->indices[i];
+ DistanceType dist = distance_(dataset_[index], vec, veclen_);
+ result.addPoint(dist, index);
+ }
+ }
+ else {
+ int* sort_indices = new int[branching_];
+
+ getCenterOrdering(node, vec, sort_indices);
+
+ for (int i=0; i<branching_; ++i) {
+ findExactNN(node->childs[sort_indices[i]],result,vec);
+ }
+
+ delete[] sort_indices;
+ }
+ }
+
+
+ /**
+ * Helper function.
+ *
+ * I computes the order in which to traverse the child nodes of a particular node.
+ */
+ void getCenterOrdering(KMeansNodePtr node, const ElementType* q, int* sort_indices)
+ {
+ DistanceType* domain_distances = new DistanceType[branching_];
+ for (int i=0; i<branching_; ++i) {
+ DistanceType dist = distance_(q, node->childs[i]->pivot, veclen_);
+
+ int j=0;
+ while (domain_distances[j]<dist && j<i) j++;
+ for (int k=i; k>j; --k) {
+ domain_distances[k] = domain_distances[k-1];
+ sort_indices[k] = sort_indices[k-1];
+ }
+ domain_distances[j] = dist;
+ sort_indices[j] = i;
+ }
+ delete[] domain_distances;
+ }
+
+ /**
+ * Method that computes the squared distance from the query point q
+ * from inside region with center c to the border between this
+ * region and the region with center p
+ */
+ DistanceType getDistanceToBorder(DistanceType* p, DistanceType* c, DistanceType* q)
+ {
+ DistanceType sum = 0;
+ DistanceType sum2 = 0;
+
+ for (int i=0; i<veclen_; ++i) {
+ DistanceType t = c[i]-p[i];
+ sum += t*(q[i]-(c[i]+p[i])/2);
+ sum2 += t*t;
+ }
+
+ return sum*sum/sum2;
+ }
+
+
+ /**
+ * Helper function the descends in the hierarchical k-means tree by spliting those clusters that minimize
+ * the overall variance of the clustering.
+ * Params:
+ * root = root node
+ * clusters = array with clusters centers (return value)
+ * varianceValue = variance of the clustering (return value)
+ * Returns:
+ */
+ int getMinVarianceClusters(KMeansNodePtr root, KMeansNodePtr* clusters, int clusters_length, DistanceType& varianceValue)
+ {
+ int clusterCount = 1;
+ clusters[0] = root;
+
+ DistanceType meanVariance = root->variance*root->size;
+
+ while (clusterCount<clusters_length) {
+ DistanceType minVariance = (std::numeric_limits<DistanceType>::max)();
+ int splitIndex = -1;
+
+ for (int i=0; i<clusterCount; ++i) {
+ if (clusters[i]->childs != NULL) {
+
+ DistanceType variance = meanVariance - clusters[i]->variance*clusters[i]->size;
+
+ for (int j=0; j<branching_; ++j) {
+ variance += clusters[i]->childs[j]->variance*clusters[i]->childs[j]->size;
+ }
+ if (variance<minVariance) {
+ minVariance = variance;
+ splitIndex = i;
+ }
+ }
+ }
+
+ if (splitIndex==-1) break;
+ if ( (branching_+clusterCount-1) > clusters_length) break;
+
+ meanVariance = minVariance;
+
+ // split node
+ KMeansNodePtr toSplit = clusters[splitIndex];
+ clusters[splitIndex] = toSplit->childs[0];
+ for (int i=1; i<branching_; ++i) {
+ clusters[clusterCount++] = toSplit->childs[i];
+ }
+ }
+
+ varianceValue = meanVariance/root->size;
+ return clusterCount;
+ }
+
+private:
+ /** The branching factor used in the hierarchical k-means clustering */
+ int branching_;
+
+ /** Maximum number of iterations to use when performing k-means clustering */
+ int iterations_;
+
+ /** Algorithm for choosing the cluster centers */
+ flann_centers_init_t centers_init_;
+
+ /**
+ * Cluster border index. This is used in the tree search phase when determining
+ * the closest cluster to explore next. A zero value takes into account only
+ * the cluster centres, a value greater then zero also take into account the size
+ * of the cluster.
+ */
+ float cb_index_;
+
+ /**
+ * The dataset used by this index
+ */
+ const Matrix<ElementType> dataset_;
+
+ /** Index parameters */
+ IndexParams index_params_;
+
+ /**
+ * Number of features in the dataset.
+ */
+ size_t size_;
+
+ /**
+ * Length of each feature.
+ */
+ size_t veclen_;
+
+ /**
+ * The root node in the tree.
+ */
+ KMeansNodePtr root_;
+
+ /**
+ * Array of indices to vectors in the dataset.
+ */
+ int* indices_;
+
+ /**
+ * The distance
+ */
+ Distance distance_;
+
+ /**
+ * Pooled memory allocator.
+ */
+ PooledAllocator pool_;
+
+ /**
+ * Memory occupied by the index.
+ */
+ int memoryCounter_;
+};
+
+}
+
+#endif //OPENCV_FLANN_KMEANS_INDEX_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/linear_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/linear_index.h
new file mode 100644
index 00000000..0ea084a5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/linear_index.h
@@ -0,0 +1,139 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_LINEAR_INDEX_H_
+#define OPENCV_FLANN_LINEAR_INDEX_H_
+
+#include "general.h"
+#include "nn_index.h"
+
+namespace cvflann
+{
+
+struct LinearIndexParams : public IndexParams
+{
+ LinearIndexParams()
+ {
+ (* this)["algorithm"] = FLANN_INDEX_LINEAR;
+ }
+};
+
+template <typename Distance>
+class LinearIndex : public NNIndex<Distance>
+{
+public:
+
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+
+ LinearIndex(const Matrix<ElementType>& inputData, const IndexParams& params = LinearIndexParams(),
+ Distance d = Distance()) :
+ dataset_(inputData), index_params_(params), distance_(d)
+ {
+ }
+
+ LinearIndex(const LinearIndex&);
+ LinearIndex& operator=(const LinearIndex&);
+
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_LINEAR;
+ }
+
+
+ size_t size() const
+ {
+ return dataset_.rows;
+ }
+
+ size_t veclen() const
+ {
+ return dataset_.cols;
+ }
+
+
+ int usedMemory() const
+ {
+ return 0;
+ }
+
+ /**
+ * Dummy implementation for other algorithms of addable indexes after that.
+ */
+ void addIndex(const Matrix<ElementType>& /*wholeData*/, const Matrix<ElementType>& /*additionalData*/)
+ {
+ }
+
+ void buildIndex()
+ {
+ /* nothing to do here for linear search */
+ }
+
+ void saveIndex(FILE*)
+ {
+ /* nothing to do here for linear search */
+ }
+
+
+ void loadIndex(FILE*)
+ {
+ /* nothing to do here for linear search */
+
+ index_params_["algorithm"] = getType();
+ }
+
+ void findNeighbors(ResultSet<DistanceType>& resultSet, const ElementType* vec, const SearchParams& /*searchParams*/)
+ {
+ ElementType* data = dataset_.data;
+ for (size_t i = 0; i < dataset_.rows; ++i, data += dataset_.cols) {
+ DistanceType dist = distance_(data, vec, dataset_.cols);
+ resultSet.addPoint(dist, (int)i);
+ }
+ }
+
+ IndexParams getParameters() const
+ {
+ return index_params_;
+ }
+
+private:
+ /** The dataset */
+ const Matrix<ElementType> dataset_;
+ /** Index parameters */
+ IndexParams index_params_;
+ /** Index distance */
+ Distance distance_;
+
+};
+
+}
+
+#endif // OPENCV_FLANN_LINEAR_INDEX_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/logger.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/logger.h
new file mode 100644
index 00000000..24f3fb69
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/logger.h
@@ -0,0 +1,130 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_LOGGER_H
+#define OPENCV_FLANN_LOGGER_H
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "defines.h"
+
+
+namespace cvflann
+{
+
+class Logger
+{
+ Logger() : stream(stdout), logLevel(FLANN_LOG_WARN) {}
+
+ ~Logger()
+ {
+ if ((stream!=NULL)&&(stream!=stdout)) {
+ fclose(stream);
+ }
+ }
+
+ static Logger& instance()
+ {
+ static Logger logger;
+ return logger;
+ }
+
+ void _setDestination(const char* name)
+ {
+ if (name==NULL) {
+ stream = stdout;
+ }
+ else {
+ stream = fopen(name,"w");
+ if (stream == NULL) {
+ stream = stdout;
+ }
+ }
+ }
+
+ int _log(int level, const char* fmt, va_list arglist)
+ {
+ if (level > logLevel ) return -1;
+ int ret = vfprintf(stream, fmt, arglist);
+ return ret;
+ }
+
+public:
+ /**
+ * Sets the logging level. All messages with lower priority will be ignored.
+ * @param level Logging level
+ */
+ static void setLevel(int level) { instance().logLevel = level; }
+
+ /**
+ * Sets the logging destination
+ * @param name Filename or NULL for console
+ */
+ static void setDestination(const char* name) { instance()._setDestination(name); }
+
+ /**
+ * Print log message
+ * @param level Log level
+ * @param fmt Message format
+ * @return
+ */
+ static int log(int level, const char* fmt, ...)
+ {
+ va_list arglist;
+ va_start(arglist, fmt);
+ int ret = instance()._log(level,fmt,arglist);
+ va_end(arglist);
+ return ret;
+ }
+
+#define LOG_METHOD(NAME,LEVEL) \
+ static int NAME(const char* fmt, ...) \
+ { \
+ va_list ap; \
+ va_start(ap, fmt); \
+ int ret = instance()._log(LEVEL, fmt, ap); \
+ va_end(ap); \
+ return ret; \
+ }
+
+ LOG_METHOD(fatal, FLANN_LOG_FATAL)
+ LOG_METHOD(error, FLANN_LOG_ERROR)
+ LOG_METHOD(warn, FLANN_LOG_WARN)
+ LOG_METHOD(info, FLANN_LOG_INFO)
+
+private:
+ FILE* stream;
+ int logLevel;
+};
+
+}
+
+#endif //OPENCV_FLANN_LOGGER_H
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_index.h
new file mode 100644
index 00000000..2b89337d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_index.h
@@ -0,0 +1,420 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+/***********************************************************************
+ * Author: Vincent Rabaud
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_LSH_INDEX_H_
+#define OPENCV_FLANN_LSH_INDEX_H_
+
+#include <algorithm>
+#include <cassert>
+#include <cstring>
+#include <map>
+#include <vector>
+
+#include "general.h"
+#include "nn_index.h"
+#include "matrix.h"
+#include "result_set.h"
+#include "heap.h"
+#include "lsh_table.h"
+#include "allocator.h"
+#include "random.h"
+#include "saving.h"
+
+namespace cvflann
+{
+
+struct LshIndexParams : public IndexParams
+{
+ LshIndexParams(unsigned int table_number = 12, unsigned int key_size = 20, unsigned int multi_probe_level = 2)
+ {
+ (* this)["algorithm"] = FLANN_INDEX_LSH;
+ // The number of hash tables to use
+ (*this)["table_number"] = table_number;
+ // The length of the key in the hash tables
+ (*this)["key_size"] = key_size;
+ // Number of levels to use in multi-probe (0 for standard LSH)
+ (*this)["multi_probe_level"] = multi_probe_level;
+ }
+};
+
+/**
+ * Randomized kd-tree index
+ *
+ * Contains the k-d trees and other information for indexing a set of points
+ * for nearest-neighbor matching.
+ */
+template<typename Distance>
+class LshIndex : public NNIndex<Distance>
+{
+public:
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+ /** Constructor
+ * @param input_data dataset with the input features
+ * @param params parameters passed to the LSH algorithm
+ * @param d the distance used
+ */
+ LshIndex(const Matrix<ElementType>& input_data, const IndexParams& params = LshIndexParams(),
+ Distance d = Distance()) :
+ dataset_(input_data), index_params_(params), distance_(d)
+ {
+ // cv::flann::IndexParams sets integer params as 'int', so it is used with get_param
+ // in place of 'unsigned int'
+ table_number_ = (unsigned int)get_param<int>(index_params_,"table_number",12);
+ key_size_ = (unsigned int)get_param<int>(index_params_,"key_size",20);
+ multi_probe_level_ = (unsigned int)get_param<int>(index_params_,"multi_probe_level",2);
+
+ feature_size_ = (unsigned)dataset_.cols;
+ fill_xor_mask(0, key_size_, multi_probe_level_, xor_masks_);
+ }
+
+
+ LshIndex(const LshIndex&);
+ LshIndex& operator=(const LshIndex&);
+
+ /**
+ * Implementation for the LSH addable indexes after that.
+ * @param wholeData whole dataset with the input features
+ * @param additionalData additional dataset with the input features
+ */
+ void addIndex(const Matrix<ElementType>& wholeData, const Matrix<ElementType>& additionalData)
+ {
+ tables_.resize(table_number_);
+ for (unsigned int i = 0; i < table_number_; ++i) {
+ lsh::LshTable<ElementType>& table = tables_[i];
+ // Add the features to the table with indexed offset
+ table.add((int)(wholeData.rows - additionalData.rows), additionalData);
+ }
+ dataset_ = wholeData;
+ }
+
+ /**
+ * Builds the index
+ */
+ void buildIndex()
+ {
+ std::vector<size_t> indices(feature_size_ * CHAR_BIT);
+
+ tables_.resize(table_number_);
+ for (unsigned int i = 0; i < table_number_; ++i) {
+
+ //re-initialize the random indices table that the LshTable will use to pick its sub-dimensions
+ if( (indices.size() == feature_size_ * CHAR_BIT) || (indices.size() < key_size_) )
+ {
+ indices.resize( feature_size_ * CHAR_BIT );
+ for (size_t j = 0; j < feature_size_ * CHAR_BIT; ++j)
+ indices[j] = j;
+ std::random_shuffle(indices.begin(), indices.end());
+ }
+
+ lsh::LshTable<ElementType>& table = tables_[i];
+ table = lsh::LshTable<ElementType>(feature_size_, key_size_, indices);
+
+ // Add the features to the table with offset 0
+ table.add(0, dataset_);
+ }
+ }
+
+ flann_algorithm_t getType() const
+ {
+ return FLANN_INDEX_LSH;
+ }
+
+
+ void saveIndex(FILE* stream)
+ {
+ save_value(stream,table_number_);
+ save_value(stream,key_size_);
+ save_value(stream,multi_probe_level_);
+ save_value(stream, dataset_);
+ }
+
+ void loadIndex(FILE* stream)
+ {
+ load_value(stream, table_number_);
+ load_value(stream, key_size_);
+ load_value(stream, multi_probe_level_);
+ load_value(stream, dataset_);
+ // Building the index is so fast we can afford not storing it
+ buildIndex();
+
+ index_params_["algorithm"] = getType();
+ index_params_["table_number"] = table_number_;
+ index_params_["key_size"] = key_size_;
+ index_params_["multi_probe_level"] = multi_probe_level_;
+ }
+
+ /**
+ * Returns size of index.
+ */
+ size_t size() const
+ {
+ return dataset_.rows;
+ }
+
+ /**
+ * Returns the length of an index feature.
+ */
+ size_t veclen() const
+ {
+ return feature_size_;
+ }
+
+ /**
+ * Computes the index memory usage
+ * Returns: memory used by the index
+ */
+ int usedMemory() const
+ {
+ return (int)(dataset_.rows * sizeof(int));
+ }
+
+
+ IndexParams getParameters() const
+ {
+ return index_params_;
+ }
+
+ /**
+ * \brief Perform k-nearest neighbor search
+ * \param[in] queries The query points for which to find the nearest neighbors
+ * \param[out] indices The indices of the nearest neighbors found
+ * \param[out] dists Distances to the nearest neighbors found
+ * \param[in] knn Number of nearest neighbors to return
+ * \param[in] params Search parameters
+ */
+ virtual void knnSearch(const Matrix<ElementType>& queries, Matrix<int>& indices, Matrix<DistanceType>& dists, int knn, const SearchParams& params)
+ {
+ assert(queries.cols == veclen());
+ assert(indices.rows >= queries.rows);
+ assert(dists.rows >= queries.rows);
+ assert(int(indices.cols) >= knn);
+ assert(int(dists.cols) >= knn);
+
+
+ KNNUniqueResultSet<DistanceType> resultSet(knn);
+ for (size_t i = 0; i < queries.rows; i++) {
+ resultSet.clear();
+ std::fill_n(indices[i], knn, -1);
+ std::fill_n(dists[i], knn, std::numeric_limits<DistanceType>::max());
+ findNeighbors(resultSet, queries[i], params);
+ if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices[i], dists[i], knn);
+ else resultSet.copy(indices[i], dists[i], knn);
+ }
+ }
+
+
+ /**
+ * Find set of nearest neighbors to vec. Their indices are stored inside
+ * the result object.
+ *
+ * Params:
+ * result = the result object in which the indices of the nearest-neighbors are stored
+ * vec = the vector for which to search the nearest neighbors
+ * maxCheck = the maximum number of restarts (in a best-bin-first manner)
+ */
+ void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& /*searchParams*/)
+ {
+ getNeighbors(vec, result);
+ }
+
+private:
+ /** Defines the comparator on score and index
+ */
+ typedef std::pair<float, unsigned int> ScoreIndexPair;
+ struct SortScoreIndexPairOnSecond
+ {
+ bool operator()(const ScoreIndexPair& left, const ScoreIndexPair& right) const
+ {
+ return left.second < right.second;
+ }
+ };
+
+ /** Fills the different xor masks to use when getting the neighbors in multi-probe LSH
+ * @param key the key we build neighbors from
+ * @param lowest_index the lowest index of the bit set
+ * @param level the multi-probe level we are at
+ * @param xor_masks all the xor mask
+ */
+ void fill_xor_mask(lsh::BucketKey key, int lowest_index, unsigned int level,
+ std::vector<lsh::BucketKey>& xor_masks)
+ {
+ xor_masks.push_back(key);
+ if (level == 0) return;
+ for (int index = lowest_index - 1; index >= 0; --index) {
+ // Create a new key
+ lsh::BucketKey new_key = key | (1 << index);
+ fill_xor_mask(new_key, index, level - 1, xor_masks);
+ }
+ }
+
+ /** Performs the approximate nearest-neighbor search.
+ * @param vec the feature to analyze
+ * @param do_radius flag indicating if we check the radius too
+ * @param radius the radius if it is a radius search
+ * @param do_k flag indicating if we limit the number of nn
+ * @param k_nn the number of nearest neighbors
+ * @param checked_average used for debugging
+ */
+ void getNeighbors(const ElementType* vec, bool /*do_radius*/, float radius, bool do_k, unsigned int k_nn,
+ float& /*checked_average*/)
+ {
+ static std::vector<ScoreIndexPair> score_index_heap;
+
+ if (do_k) {
+ unsigned int worst_score = std::numeric_limits<unsigned int>::max();
+ typename std::vector<lsh::LshTable<ElementType> >::const_iterator table = tables_.begin();
+ typename std::vector<lsh::LshTable<ElementType> >::const_iterator table_end = tables_.end();
+ for (; table != table_end; ++table) {
+ size_t key = table->getKey(vec);
+ std::vector<lsh::BucketKey>::const_iterator xor_mask = xor_masks_.begin();
+ std::vector<lsh::BucketKey>::const_iterator xor_mask_end = xor_masks_.end();
+ for (; xor_mask != xor_mask_end; ++xor_mask) {
+ size_t sub_key = key ^ (*xor_mask);
+ const lsh::Bucket* bucket = table->getBucketFromKey(sub_key);
+ if (bucket == 0) continue;
+
+ // Go over each descriptor index
+ std::vector<lsh::FeatureIndex>::const_iterator training_index = bucket->begin();
+ std::vector<lsh::FeatureIndex>::const_iterator last_training_index = bucket->end();
+ DistanceType hamming_distance;
+
+ // Process the rest of the candidates
+ for (; training_index < last_training_index; ++training_index) {
+ hamming_distance = distance_(vec, dataset_[*training_index], dataset_.cols);
+
+ if (hamming_distance < worst_score) {
+ // Insert the new element
+ score_index_heap.push_back(ScoreIndexPair(hamming_distance, training_index));
+ std::push_heap(score_index_heap.begin(), score_index_heap.end());
+
+ if (score_index_heap.size() > (unsigned int)k_nn) {
+ // Remove the highest distance value as we have too many elements
+ std::pop_heap(score_index_heap.begin(), score_index_heap.end());
+ score_index_heap.pop_back();
+ // Keep track of the worst score
+ worst_score = score_index_heap.front().first;
+ }
+ }
+ }
+ }
+ }
+ }
+ else {
+ typename std::vector<lsh::LshTable<ElementType> >::const_iterator table = tables_.begin();
+ typename std::vector<lsh::LshTable<ElementType> >::const_iterator table_end = tables_.end();
+ for (; table != table_end; ++table) {
+ size_t key = table->getKey(vec);
+ std::vector<lsh::BucketKey>::const_iterator xor_mask = xor_masks_.begin();
+ std::vector<lsh::BucketKey>::const_iterator xor_mask_end = xor_masks_.end();
+ for (; xor_mask != xor_mask_end; ++xor_mask) {
+ size_t sub_key = key ^ (*xor_mask);
+ const lsh::Bucket* bucket = table->getBucketFromKey(sub_key);
+ if (bucket == 0) continue;
+
+ // Go over each descriptor index
+ std::vector<lsh::FeatureIndex>::const_iterator training_index = bucket->begin();
+ std::vector<lsh::FeatureIndex>::const_iterator last_training_index = bucket->end();
+ DistanceType hamming_distance;
+
+ // Process the rest of the candidates
+ for (; training_index < last_training_index; ++training_index) {
+ // Compute the Hamming distance
+ hamming_distance = distance_(vec, dataset_[*training_index], dataset_.cols);
+ if (hamming_distance < radius) score_index_heap.push_back(ScoreIndexPair(hamming_distance, training_index));
+ }
+ }
+ }
+ }
+ }
+
+ /** Performs the approximate nearest-neighbor search.
+ * This is a slower version than the above as it uses the ResultSet
+ * @param vec the feature to analyze
+ */
+ void getNeighbors(const ElementType* vec, ResultSet<DistanceType>& result)
+ {
+ typename std::vector<lsh::LshTable<ElementType> >::const_iterator table = tables_.begin();
+ typename std::vector<lsh::LshTable<ElementType> >::const_iterator table_end = tables_.end();
+ for (; table != table_end; ++table) {
+ size_t key = table->getKey(vec);
+ std::vector<lsh::BucketKey>::const_iterator xor_mask = xor_masks_.begin();
+ std::vector<lsh::BucketKey>::const_iterator xor_mask_end = xor_masks_.end();
+ for (; xor_mask != xor_mask_end; ++xor_mask) {
+ size_t sub_key = key ^ (*xor_mask);
+ const lsh::Bucket* bucket = table->getBucketFromKey((lsh::BucketKey)sub_key);
+ if (bucket == 0) continue;
+
+ // Go over each descriptor index
+ std::vector<lsh::FeatureIndex>::const_iterator training_index = bucket->begin();
+ std::vector<lsh::FeatureIndex>::const_iterator last_training_index = bucket->end();
+ DistanceType hamming_distance;
+
+ // Process the rest of the candidates
+ for (; training_index < last_training_index; ++training_index) {
+ // Compute the Hamming distance
+ hamming_distance = distance_(vec, dataset_[*training_index], (int)dataset_.cols);
+ result.addPoint(hamming_distance, *training_index);
+ }
+ }
+ }
+ }
+
+ /** The different hash tables */
+ std::vector<lsh::LshTable<ElementType> > tables_;
+
+ /** The data the LSH tables where built from */
+ Matrix<ElementType> dataset_;
+
+ /** The size of the features (as ElementType[]) */
+ unsigned int feature_size_;
+
+ IndexParams index_params_;
+
+ /** table number */
+ unsigned int table_number_;
+ /** key size */
+ unsigned int key_size_;
+ /** How far should we look for neighbors in multi-probe LSH */
+ unsigned int multi_probe_level_;
+
+ /** The XOR masks to apply to a key to get the neighboring buckets */
+ std::vector<lsh::BucketKey> xor_masks_;
+
+ Distance distance_;
+};
+}
+
+#endif //OPENCV_FLANN_LSH_INDEX_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_table.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_table.h
new file mode 100644
index 00000000..cef01b2e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/lsh_table.h
@@ -0,0 +1,497 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+/***********************************************************************
+ * Author: Vincent Rabaud
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_LSH_TABLE_H_
+#define OPENCV_FLANN_LSH_TABLE_H_
+
+#include <algorithm>
+#include <iostream>
+#include <iomanip>
+#include <limits.h>
+// TODO as soon as we use C++0x, use the code in USE_UNORDERED_MAP
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# define USE_UNORDERED_MAP 1
+#else
+# define USE_UNORDERED_MAP 0
+#endif
+#if USE_UNORDERED_MAP
+#include <unordered_map>
+#else
+#include <map>
+#endif
+#include <math.h>
+#include <stddef.h>
+
+#include "dynamic_bitset.h"
+#include "matrix.h"
+
+namespace cvflann
+{
+
+namespace lsh
+{
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** What is stored in an LSH bucket
+ */
+typedef uint32_t FeatureIndex;
+/** The id from which we can get a bucket back in an LSH table
+ */
+typedef unsigned int BucketKey;
+
+/** A bucket in an LSH table
+ */
+typedef std::vector<FeatureIndex> Bucket;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** POD for stats about an LSH table
+ */
+struct LshStats
+{
+ std::vector<unsigned int> bucket_sizes_;
+ size_t n_buckets_;
+ size_t bucket_size_mean_;
+ size_t bucket_size_median_;
+ size_t bucket_size_min_;
+ size_t bucket_size_max_;
+ size_t bucket_size_std_dev;
+ /** Each contained vector contains three value: beginning/end for interval, number of elements in the bin
+ */
+ std::vector<std::vector<unsigned int> > size_histogram_;
+};
+
+/** Overload the << operator for LshStats
+ * @param out the streams
+ * @param stats the stats to display
+ * @return the streams
+ */
+inline std::ostream& operator <<(std::ostream& out, const LshStats& stats)
+{
+ int w = 20;
+ out << "Lsh Table Stats:\n" << std::setw(w) << std::setiosflags(std::ios::right) << "N buckets : "
+ << stats.n_buckets_ << "\n" << std::setw(w) << std::setiosflags(std::ios::right) << "mean size : "
+ << std::setiosflags(std::ios::left) << stats.bucket_size_mean_ << "\n" << std::setw(w)
+ << std::setiosflags(std::ios::right) << "median size : " << stats.bucket_size_median_ << "\n" << std::setw(w)
+ << std::setiosflags(std::ios::right) << "min size : " << std::setiosflags(std::ios::left)
+ << stats.bucket_size_min_ << "\n" << std::setw(w) << std::setiosflags(std::ios::right) << "max size : "
+ << std::setiosflags(std::ios::left) << stats.bucket_size_max_;
+
+ // Display the histogram
+ out << std::endl << std::setw(w) << std::setiosflags(std::ios::right) << "histogram : "
+ << std::setiosflags(std::ios::left);
+ for (std::vector<std::vector<unsigned int> >::const_iterator iterator = stats.size_histogram_.begin(), end =
+ stats.size_histogram_.end(); iterator != end; ++iterator) out << (*iterator)[0] << "-" << (*iterator)[1] << ": " << (*iterator)[2] << ", ";
+
+ return out;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** Lsh hash table. As its key is a sub-feature, and as usually
+ * the size of it is pretty small, we keep it as a continuous memory array.
+ * The value is an index in the corpus of features (we keep it as an unsigned
+ * int for pure memory reasons, it could be a size_t)
+ */
+template<typename ElementType>
+class LshTable
+{
+public:
+ /** A container of all the feature indices. Optimized for space
+ */
+#if USE_UNORDERED_MAP
+ typedef std::unordered_map<BucketKey, Bucket> BucketsSpace;
+#else
+ typedef std::map<BucketKey, Bucket> BucketsSpace;
+#endif
+
+ /** A container of all the feature indices. Optimized for speed
+ */
+ typedef std::vector<Bucket> BucketsSpeed;
+
+ /** Default constructor
+ */
+ LshTable()
+ {
+ }
+
+ /** Default constructor
+ * Create the mask and allocate the memory
+ * @param feature_size is the size of the feature (considered as a ElementType[])
+ * @param key_size is the number of bits that are turned on in the feature
+ * @param indices
+ */
+ LshTable(unsigned int feature_size, unsigned int key_size, std::vector<size_t> & indices)
+ {
+ (void)feature_size;
+ (void)key_size;
+ (void)indices;
+ std::cerr << "LSH is not implemented for that type" << std::endl;
+ assert(0);
+ }
+
+ /** Add a feature to the table
+ * @param value the value to store for that feature
+ * @param feature the feature itself
+ */
+ void add(unsigned int value, const ElementType* feature)
+ {
+ // Add the value to the corresponding bucket
+ BucketKey key = (lsh::BucketKey)getKey(feature);
+
+ switch (speed_level_) {
+ case kArray:
+ // That means we get the buckets from an array
+ buckets_speed_[key].push_back(value);
+ break;
+ case kBitsetHash:
+ // That means we can check the bitset for the presence of a key
+ key_bitset_.set(key);
+ buckets_space_[key].push_back(value);
+ break;
+ case kHash:
+ {
+ // That means we have to check for the hash table for the presence of a key
+ buckets_space_[key].push_back(value);
+ break;
+ }
+ }
+ }
+
+ /** Add a set of features to the table
+ * @param indexed_ofst previous indexed offset
+ * @param dataset the values to store
+ */
+ void add(int indexed_ofst, Matrix<ElementType> dataset)
+ {
+#if USE_UNORDERED_MAP
+ buckets_space_.rehash((buckets_space_.size() + dataset.rows) * 1.2);
+#endif
+ // Add the features to the table
+ for (unsigned int i = 0; i < dataset.rows; ++i) add(i + indexed_ofst, dataset[i]);
+ // Now that the table is full, optimize it for speed/space
+ optimize();
+ }
+
+ /** Get a bucket given the key
+ * @param key
+ * @return
+ */
+ inline const Bucket* getBucketFromKey(BucketKey key) const
+ {
+ // Generate other buckets
+ switch (speed_level_) {
+ case kArray:
+ // That means we get the buckets from an array
+ return &buckets_speed_[key];
+ break;
+ case kBitsetHash:
+ // That means we can check the bitset for the presence of a key
+ if (key_bitset_.test(key)) return &buckets_space_.find(key)->second;
+ else return 0;
+ break;
+ case kHash:
+ {
+ // That means we have to check for the hash table for the presence of a key
+ BucketsSpace::const_iterator bucket_it, bucket_end = buckets_space_.end();
+ bucket_it = buckets_space_.find(key);
+ // Stop here if that bucket does not exist
+ if (bucket_it == bucket_end) return 0;
+ else return &bucket_it->second;
+ break;
+ }
+ }
+ return 0;
+ }
+
+ /** Compute the sub-signature of a feature
+ */
+ size_t getKey(const ElementType* /*feature*/) const
+ {
+ std::cerr << "LSH is not implemented for that type" << std::endl;
+ assert(0);
+ return 1;
+ }
+
+ /** Get statistics about the table
+ * @return
+ */
+ LshStats getStats() const;
+
+private:
+ /** defines the speed fo the implementation
+ * kArray uses a vector for storing data
+ * kBitsetHash uses a hash map but checks for the validity of a key with a bitset
+ * kHash uses a hash map only
+ */
+ enum SpeedLevel
+ {
+ kArray, kBitsetHash, kHash
+ };
+
+ /** Initialize some variables
+ */
+ void initialize(size_t key_size)
+ {
+ const size_t key_size_lower_bound = 1;
+ //a value (size_t(1) << key_size) must fit the size_t type so key_size has to be strictly less than size of size_t
+ const size_t key_size_upper_bound = std::min(sizeof(BucketKey) * CHAR_BIT + 1, sizeof(size_t) * CHAR_BIT);
+ if (key_size < key_size_lower_bound || key_size >= key_size_upper_bound)
+ {
+ std::stringstream errorMessage;
+ errorMessage << "Invalid key_size (=" << key_size << "). Valid values for your system are " << key_size_lower_bound << " <= key_size < " << key_size_upper_bound << ".";
+ CV_Error(CV_StsBadArg, errorMessage.str());
+ }
+
+ speed_level_ = kHash;
+ key_size_ = (unsigned)key_size;
+ }
+
+ /** Optimize the table for speed/space
+ */
+ void optimize()
+ {
+ // If we are already using the fast storage, no need to do anything
+ if (speed_level_ == kArray) return;
+
+ // Use an array if it will be more than half full
+ if (buckets_space_.size() > ((size_t(1) << key_size_) / 2)) {
+ speed_level_ = kArray;
+ // Fill the array version of it
+ buckets_speed_.resize(size_t(1) << key_size_);
+ for (BucketsSpace::const_iterator key_bucket = buckets_space_.begin(); key_bucket != buckets_space_.end(); ++key_bucket) buckets_speed_[key_bucket->first] = key_bucket->second;
+
+ // Empty the hash table
+ buckets_space_.clear();
+ return;
+ }
+
+ // If the bitset is going to use less than 10% of the RAM of the hash map (at least 1 size_t for the key and two
+ // for the vector) or less than 512MB (key_size_ <= 30)
+ if (((std::max(buckets_space_.size(), buckets_speed_.size()) * CHAR_BIT * 3 * sizeof(BucketKey)) / 10
+ >= (size_t(1) << key_size_)) || (key_size_ <= 32)) {
+ speed_level_ = kBitsetHash;
+ key_bitset_.resize(size_t(1) << key_size_);
+ key_bitset_.reset();
+ // Try with the BucketsSpace
+ for (BucketsSpace::const_iterator key_bucket = buckets_space_.begin(); key_bucket != buckets_space_.end(); ++key_bucket) key_bitset_.set(key_bucket->first);
+ }
+ else {
+ speed_level_ = kHash;
+ key_bitset_.clear();
+ }
+ }
+
+ /** The vector of all the buckets if they are held for speed
+ */
+ BucketsSpeed buckets_speed_;
+
+ /** The hash table of all the buckets in case we cannot use the speed version
+ */
+ BucketsSpace buckets_space_;
+
+ /** What is used to store the data */
+ SpeedLevel speed_level_;
+
+ /** If the subkey is small enough, it will keep track of which subkeys are set through that bitset
+ * That is just a speedup so that we don't look in the hash table (which can be mush slower that checking a bitset)
+ */
+ DynamicBitset key_bitset_;
+
+ /** The size of the sub-signature in bits
+ */
+ unsigned int key_size_;
+
+ // Members only used for the unsigned char specialization
+ /** The mask to apply to a feature to get the hash key
+ * Only used in the unsigned char case
+ */
+ std::vector<size_t> mask_;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Specialization for unsigned char
+
+template<>
+inline LshTable<unsigned char>::LshTable( unsigned int feature_size,
+ unsigned int subsignature_size,
+ std::vector<size_t> & indices )
+{
+ initialize(subsignature_size);
+ // Allocate the mask
+ mask_ = std::vector<size_t>((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0);
+
+ // Generate a random set of order of subsignature_size_ bits
+ for (unsigned int i = 0; i < key_size_; ++i) {
+ //Ensure the Nth bit will be selected only once among the different LshTables
+ //to avoid having two different tables with signatures sharing many dimensions/many bits
+ size_t index = indices[0];
+ indices.erase( indices.begin() );
+
+ // Set that bit in the mask
+ size_t divisor = CHAR_BIT * sizeof(size_t);
+ size_t idx = index / divisor; //pick the right size_t index
+ mask_[idx] |= size_t(1) << (index % divisor); //use modulo to find the bit offset
+ }
+
+ // Set to 1 if you want to display the mask for debug
+#if 0
+ {
+ size_t bcount = 0;
+ BOOST_FOREACH(size_t mask_block, mask_){
+ out << std::setw(sizeof(size_t) * CHAR_BIT / 4) << std::setfill('0') << std::hex << mask_block
+ << std::endl;
+ bcount += __builtin_popcountll(mask_block);
+ }
+ out << "bit count : " << std::dec << bcount << std::endl;
+ out << "mask size : " << mask_.size() << std::endl;
+ return out;
+ }
+#endif
+}
+
+/** Return the Subsignature of a feature
+ * @param feature the feature to analyze
+ */
+template<>
+inline size_t LshTable<unsigned char>::getKey(const unsigned char* feature) const
+{
+ // no need to check if T is dividable by sizeof(size_t) like in the Hamming
+ // distance computation as we have a mask
+ const size_t* feature_block_ptr = reinterpret_cast<const size_t*> ((const void*)feature);
+
+ // Figure out the subsignature of the feature
+ // Given the feature ABCDEF, and the mask 001011, the output will be
+ // 000CEF
+ size_t subsignature = 0;
+ size_t bit_index = 1;
+
+ for (std::vector<size_t>::const_iterator pmask_block = mask_.begin(); pmask_block != mask_.end(); ++pmask_block) {
+ // get the mask and signature blocks
+ size_t feature_block = *feature_block_ptr;
+ size_t mask_block = *pmask_block;
+ while (mask_block) {
+ // Get the lowest set bit in the mask block
+ size_t lowest_bit = mask_block & (-(ptrdiff_t)mask_block);
+ // Add it to the current subsignature if necessary
+ subsignature += (feature_block & lowest_bit) ? bit_index : 0;
+ // Reset the bit in the mask block
+ mask_block ^= lowest_bit;
+ // increment the bit index for the subsignature
+ bit_index <<= 1;
+ }
+ // Check the next feature block
+ ++feature_block_ptr;
+ }
+ return subsignature;
+}
+
+template<>
+inline LshStats LshTable<unsigned char>::getStats() const
+{
+ LshStats stats;
+ stats.bucket_size_mean_ = 0;
+ if ((buckets_speed_.empty()) && (buckets_space_.empty())) {
+ stats.n_buckets_ = 0;
+ stats.bucket_size_median_ = 0;
+ stats.bucket_size_min_ = 0;
+ stats.bucket_size_max_ = 0;
+ return stats;
+ }
+
+ if (!buckets_speed_.empty()) {
+ for (BucketsSpeed::const_iterator pbucket = buckets_speed_.begin(); pbucket != buckets_speed_.end(); ++pbucket) {
+ stats.bucket_sizes_.push_back((lsh::FeatureIndex)pbucket->size());
+ stats.bucket_size_mean_ += pbucket->size();
+ }
+ stats.bucket_size_mean_ /= buckets_speed_.size();
+ stats.n_buckets_ = buckets_speed_.size();
+ }
+ else {
+ for (BucketsSpace::const_iterator x = buckets_space_.begin(); x != buckets_space_.end(); ++x) {
+ stats.bucket_sizes_.push_back((lsh::FeatureIndex)x->second.size());
+ stats.bucket_size_mean_ += x->second.size();
+ }
+ stats.bucket_size_mean_ /= buckets_space_.size();
+ stats.n_buckets_ = buckets_space_.size();
+ }
+
+ std::sort(stats.bucket_sizes_.begin(), stats.bucket_sizes_.end());
+
+ // BOOST_FOREACH(int size, stats.bucket_sizes_)
+ // std::cout << size << " ";
+ // std::cout << std::endl;
+ stats.bucket_size_median_ = stats.bucket_sizes_[stats.bucket_sizes_.size() / 2];
+ stats.bucket_size_min_ = stats.bucket_sizes_.front();
+ stats.bucket_size_max_ = stats.bucket_sizes_.back();
+
+ // TODO compute mean and std
+ /*float mean, stddev;
+ stats.bucket_size_mean_ = mean;
+ stats.bucket_size_std_dev = stddev;*/
+
+ // Include a histogram of the buckets
+ unsigned int bin_start = 0;
+ unsigned int bin_end = 20;
+ bool is_new_bin = true;
+ for (std::vector<unsigned int>::iterator iterator = stats.bucket_sizes_.begin(), end = stats.bucket_sizes_.end(); iterator
+ != end; )
+ if (*iterator < bin_end) {
+ if (is_new_bin) {
+ stats.size_histogram_.push_back(std::vector<unsigned int>(3, 0));
+ stats.size_histogram_.back()[0] = bin_start;
+ stats.size_histogram_.back()[1] = bin_end - 1;
+ is_new_bin = false;
+ }
+ ++stats.size_histogram_.back()[2];
+ ++iterator;
+ }
+ else {
+ bin_start += 20;
+ bin_end += 20;
+ is_new_bin = true;
+ }
+
+ return stats;
+}
+
+// End the two namespaces
+}
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif /* OPENCV_FLANN_LSH_TABLE_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/matrix.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/matrix.h
new file mode 100644
index 00000000..51b6c635
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/matrix.h
@@ -0,0 +1,116 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_DATASET_H_
+#define OPENCV_FLANN_DATASET_H_
+
+#include <stdio.h>
+
+#include "general.h"
+
+namespace cvflann
+{
+
+/**
+ * Class that implements a simple rectangular matrix stored in a memory buffer and
+ * provides convenient matrix-like access using the [] operators.
+ */
+template <typename T>
+class Matrix
+{
+public:
+ typedef T type;
+
+ size_t rows;
+ size_t cols;
+ size_t stride;
+ T* data;
+
+ Matrix() : rows(0), cols(0), stride(0), data(NULL)
+ {
+ }
+
+ Matrix(T* data_, size_t rows_, size_t cols_, size_t stride_ = 0) :
+ rows(rows_), cols(cols_), stride(stride_), data(data_)
+ {
+ if (stride==0) stride = cols;
+ }
+
+ /**
+ * Convenience function for deallocating the storage data.
+ */
+ FLANN_DEPRECATED void free()
+ {
+ fprintf(stderr, "The cvflann::Matrix<T>::free() method is deprecated "
+ "and it does not do any memory deallocation any more. You are"
+ "responsible for deallocating the matrix memory (by doing"
+ "'delete[] matrix.data' for example)");
+ }
+
+ /**
+ * Operator that return a (pointer to a) row of the data.
+ */
+ T* operator[](size_t index) const
+ {
+ return data+index*stride;
+ }
+};
+
+
+class UntypedMatrix
+{
+public:
+ size_t rows;
+ size_t cols;
+ void* data;
+ flann_datatype_t type;
+
+ UntypedMatrix(void* data_, long rows_, long cols_) :
+ rows(rows_), cols(cols_), data(data_)
+ {
+ }
+
+ ~UntypedMatrix()
+ {
+ }
+
+
+ template<typename T>
+ Matrix<T> as()
+ {
+ return Matrix<T>((T*)data, rows, cols);
+ }
+};
+
+
+
+}
+
+#endif //OPENCV_FLANN_DATASET_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/miniflann.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/miniflann.hpp
new file mode 100644
index 00000000..121f8d05
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/miniflann.hpp
@@ -0,0 +1,163 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef _OPENCV_MINIFLANN_HPP_
+#define _OPENCV_MINIFLANN_HPP_
+
+#ifdef __cplusplus
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/flann/defines.h"
+
+namespace cv
+{
+
+namespace flann
+{
+
+struct CV_EXPORTS IndexParams
+{
+ IndexParams();
+ ~IndexParams();
+
+ std::string getString(const std::string& key, const std::string& defaultVal=std::string()) const;
+ int getInt(const std::string& key, int defaultVal=-1) const;
+ double getDouble(const std::string& key, double defaultVal=-1) const;
+
+ void setString(const std::string& key, const std::string& value);
+ void setInt(const std::string& key, int value);
+ void setDouble(const std::string& key, double value);
+ void setFloat(const std::string& key, float value);
+ void setBool(const std::string& key, bool value);
+ void setAlgorithm(int value);
+
+ void getAll(std::vector<std::string>& names,
+ std::vector<int>& types,
+ std::vector<std::string>& strValues,
+ std::vector<double>& numValues) const;
+
+ void* params;
+};
+
+struct CV_EXPORTS KDTreeIndexParams : public IndexParams
+{
+ KDTreeIndexParams(int trees=4);
+};
+
+struct CV_EXPORTS LinearIndexParams : public IndexParams
+{
+ LinearIndexParams();
+};
+
+struct CV_EXPORTS CompositeIndexParams : public IndexParams
+{
+ CompositeIndexParams(int trees = 4, int branching = 32, int iterations = 11,
+ cvflann::flann_centers_init_t centers_init = cvflann::FLANN_CENTERS_RANDOM, float cb_index = 0.2f );
+};
+
+struct CV_EXPORTS AutotunedIndexParams : public IndexParams
+{
+ AutotunedIndexParams(float target_precision = 0.8f, float build_weight = 0.01f,
+ float memory_weight = 0, float sample_fraction = 0.1f);
+};
+
+struct CV_EXPORTS HierarchicalClusteringIndexParams : public IndexParams
+{
+ HierarchicalClusteringIndexParams(int branching = 32,
+ cvflann::flann_centers_init_t centers_init = cvflann::FLANN_CENTERS_RANDOM, int trees = 4, int leaf_size = 100 );
+};
+
+struct CV_EXPORTS KMeansIndexParams : public IndexParams
+{
+ KMeansIndexParams(int branching = 32, int iterations = 11,
+ cvflann::flann_centers_init_t centers_init = cvflann::FLANN_CENTERS_RANDOM, float cb_index = 0.2f );
+};
+
+struct CV_EXPORTS LshIndexParams : public IndexParams
+{
+ LshIndexParams(int table_number, int key_size, int multi_probe_level);
+};
+
+struct CV_EXPORTS SavedIndexParams : public IndexParams
+{
+ SavedIndexParams(const std::string& filename);
+};
+
+struct CV_EXPORTS SearchParams : public IndexParams
+{
+ SearchParams( int checks = 32, float eps = 0, bool sorted = true );
+};
+
+class CV_EXPORTS_W Index
+{
+public:
+ CV_WRAP Index();
+ CV_WRAP Index(InputArray features, const IndexParams& params, cvflann::flann_distance_t distType=cvflann::FLANN_DIST_L2);
+ virtual ~Index();
+
+ CV_WRAP virtual void build(InputArray wholefeatures, InputArray additionalfeatures, const IndexParams& params, cvflann::flann_distance_t distType=cvflann::FLANN_DIST_L2);
+
+ CV_WRAP virtual void knnSearch(InputArray query, OutputArray indices,
+ OutputArray dists, int knn, const SearchParams& params=SearchParams());
+
+ CV_WRAP virtual int radiusSearch(InputArray query, OutputArray indices,
+ OutputArray dists, double radius, int maxResults,
+ const SearchParams& params=SearchParams());
+
+ CV_WRAP virtual void save(const std::string& filename) const;
+ CV_WRAP virtual bool load(InputArray features, const std::string& filename);
+ CV_WRAP virtual void release();
+ CV_WRAP cvflann::flann_distance_t getDistance() const;
+ CV_WRAP cvflann::flann_algorithm_t getAlgorithm() const;
+
+protected:
+ cvflann::flann_distance_t distType;
+ cvflann::flann_algorithm_t algo;
+ int featureType;
+ void* index;
+};
+
+} } // namespace cv::flann
+
+#endif // __cplusplus
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/nn_index.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/nn_index.h
new file mode 100644
index 00000000..4a874f58
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/nn_index.h
@@ -0,0 +1,184 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_NNINDEX_H
+#define OPENCV_FLANN_NNINDEX_H
+
+#include <string>
+
+#include "general.h"
+#include "matrix.h"
+#include "result_set.h"
+#include "params.h"
+
+namespace cvflann
+{
+
+/**
+ * Nearest-neighbour index base class
+ */
+template <typename Distance>
+class NNIndex
+{
+ typedef typename Distance::ElementType ElementType;
+ typedef typename Distance::ResultType DistanceType;
+
+public:
+
+ virtual ~NNIndex() {}
+
+ /**
+ * \brief Builds the index
+ */
+ virtual void buildIndex() = 0;
+
+ /**
+ * \brief implementation for algorithms of addable indexes after that.
+ */
+ virtual void addIndex(const Matrix<ElementType>& wholeData, const Matrix<ElementType>& additionalData) = 0;
+
+ /**
+ * \brief Perform k-nearest neighbor search
+ * \param[in] queries The query points for which to find the nearest neighbors
+ * \param[out] indices The indices of the nearest neighbors found
+ * \param[out] dists Distances to the nearest neighbors found
+ * \param[in] knn Number of nearest neighbors to return
+ * \param[in] params Search parameters
+ */
+ virtual void knnSearch(const Matrix<ElementType>& queries, Matrix<int>& indices, Matrix<DistanceType>& dists, int knn, const SearchParams& params)
+ {
+ assert(queries.cols == veclen());
+ assert(indices.rows >= queries.rows);
+ assert(dists.rows >= queries.rows);
+ assert(int(indices.cols) >= knn);
+ assert(int(dists.cols) >= knn);
+
+#if 0
+ KNNResultSet<DistanceType> resultSet(knn);
+ for (size_t i = 0; i < queries.rows; i++) {
+ resultSet.init(indices[i], dists[i]);
+ findNeighbors(resultSet, queries[i], params);
+ }
+#else
+ KNNUniqueResultSet<DistanceType> resultSet(knn);
+ for (size_t i = 0; i < queries.rows; i++) {
+ resultSet.clear();
+ findNeighbors(resultSet, queries[i], params);
+ if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices[i], dists[i], knn);
+ else resultSet.copy(indices[i], dists[i], knn);
+ }
+#endif
+ }
+
+ /**
+ * \brief Perform radius search
+ * \param[in] query The query point
+ * \param[out] indices The indinces of the neighbors found within the given radius
+ * \param[out] dists The distances to the nearest neighbors found
+ * \param[in] radius The radius used for search
+ * \param[in] params Search parameters
+ * \returns Number of neighbors found
+ */
+ virtual int radiusSearch(const Matrix<ElementType>& query, Matrix<int>& indices, Matrix<DistanceType>& dists, float radius, const SearchParams& params)
+ {
+ if (query.rows != 1) {
+ fprintf(stderr, "I can only search one feature at a time for range search\n");
+ return -1;
+ }
+ assert(query.cols == veclen());
+ assert(indices.cols == dists.cols);
+
+ int n = 0;
+ int* indices_ptr = NULL;
+ DistanceType* dists_ptr = NULL;
+ if (indices.cols > 0) {
+ n = (int)indices.cols;
+ indices_ptr = indices[0];
+ dists_ptr = dists[0];
+ }
+
+ RadiusUniqueResultSet<DistanceType> resultSet((DistanceType)radius);
+ resultSet.clear();
+ findNeighbors(resultSet, query[0], params);
+ if (n>0) {
+ if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices_ptr, dists_ptr, n);
+ else resultSet.copy(indices_ptr, dists_ptr, n);
+ }
+
+ return (int)resultSet.size();
+ }
+
+ /**
+ * \brief Saves the index to a stream
+ * \param stream The stream to save the index to
+ */
+ virtual void saveIndex(FILE* stream) = 0;
+
+ /**
+ * \brief Loads the index from a stream
+ * \param stream The stream from which the index is loaded
+ */
+ virtual void loadIndex(FILE* stream) = 0;
+
+ /**
+ * \returns number of features in this index.
+ */
+ virtual size_t size() const = 0;
+
+ /**
+ * \returns The dimensionality of the features in this index.
+ */
+ virtual size_t veclen() const = 0;
+
+ /**
+ * \returns The amount of memory (in bytes) used by the index.
+ */
+ virtual int usedMemory() const = 0;
+
+ /**
+ * \returns The index type (kdtree, kmeans,...)
+ */
+ virtual flann_algorithm_t getType() const = 0;
+
+ /**
+ * \returns The index parameters
+ */
+ virtual IndexParams getParameters() const = 0;
+
+
+ /**
+ * \brief Method that searches for nearest-neighbours
+ */
+ virtual void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams) = 0;
+};
+
+}
+
+#endif //OPENCV_FLANN_NNINDEX_H
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/object_factory.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/object_factory.h
new file mode 100644
index 00000000..7f971c5a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/object_factory.h
@@ -0,0 +1,91 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_OBJECT_FACTORY_H_
+#define OPENCV_FLANN_OBJECT_FACTORY_H_
+
+#include <map>
+
+namespace cvflann
+{
+
+class CreatorNotFound
+{
+};
+
+template<typename BaseClass,
+ typename UniqueIdType,
+ typename ObjectCreator = BaseClass* (*)()>
+class ObjectFactory
+{
+ typedef ObjectFactory<BaseClass,UniqueIdType,ObjectCreator> ThisClass;
+ typedef std::map<UniqueIdType, ObjectCreator> ObjectRegistry;
+
+ // singleton class, private constructor
+ ObjectFactory() {}
+
+public:
+
+ bool subscribe(UniqueIdType id, ObjectCreator creator)
+ {
+ if (object_registry.find(id) != object_registry.end()) return false;
+
+ object_registry[id] = creator;
+ return true;
+ }
+
+ bool unregister(UniqueIdType id)
+ {
+ return object_registry.erase(id) == 1;
+ }
+
+ ObjectCreator create(UniqueIdType id)
+ {
+ typename ObjectRegistry::const_iterator iter = object_registry.find(id);
+
+ if (iter == object_registry.end()) {
+ throw CreatorNotFound();
+ }
+
+ return iter->second;
+ }
+
+ static ThisClass& instance()
+ {
+ static ThisClass the_factory;
+ return the_factory;
+ }
+private:
+ ObjectRegistry object_registry;
+};
+
+}
+
+#endif /* OPENCV_FLANN_OBJECT_FACTORY_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/params.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/params.h
new file mode 100644
index 00000000..b40c39e3
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/params.h
@@ -0,0 +1,99 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+
+#ifndef OPENCV_FLANN_PARAMS_H_
+#define OPENCV_FLANN_PARAMS_H_
+
+#include "any.h"
+#include "general.h"
+#include <iostream>
+#include <map>
+
+
+namespace cvflann
+{
+
+typedef std::map<std::string, any> IndexParams;
+
+struct SearchParams : public IndexParams
+{
+ SearchParams(int checks = 32, float eps = 0, bool sorted = true )
+ {
+ // how many leafs to visit when searching for neighbours (-1 for unlimited)
+ (*this)["checks"] = checks;
+ // search for eps-approximate neighbours (default: 0)
+ (*this)["eps"] = eps;
+ // only for radius search, require neighbours sorted by distance (default: true)
+ (*this)["sorted"] = sorted;
+ }
+};
+
+
+template<typename T>
+T get_param(const IndexParams& params, std::string name, const T& default_value)
+{
+ IndexParams::const_iterator it = params.find(name);
+ if (it != params.end()) {
+ return it->second.cast<T>();
+ }
+ else {
+ return default_value;
+ }
+}
+
+template<typename T>
+T get_param(const IndexParams& params, std::string name)
+{
+ IndexParams::const_iterator it = params.find(name);
+ if (it != params.end()) {
+ return it->second.cast<T>();
+ }
+ else {
+ throw FLANNException(std::string("Missing parameter '")+name+std::string("' in the parameters given"));
+ }
+}
+
+inline void print_params(const IndexParams& params, std::ostream& stream)
+{
+ IndexParams::const_iterator it;
+
+ for(it=params.begin(); it!=params.end(); ++it) {
+ stream << it->first << " : " << it->second << std::endl;
+ }
+}
+
+inline void print_params(const IndexParams& params)
+{
+ print_params(params, std::cout);
+}
+
+}
+
+
+#endif /* OPENCV_FLANN_PARAMS_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/random.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/random.h
new file mode 100644
index 00000000..a3cf5ec5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/random.h
@@ -0,0 +1,133 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_RANDOM_H
+#define OPENCV_FLANN_RANDOM_H
+
+#include <algorithm>
+#include <cstdlib>
+#include <vector>
+
+#include "general.h"
+
+namespace cvflann
+{
+
+/**
+ * Seeds the random number generator
+ * @param seed Random seed
+ */
+inline void seed_random(unsigned int seed)
+{
+ srand(seed);
+}
+
+/*
+ * Generates a random double value.
+ */
+/**
+ * Generates a random double value.
+ * @param high Upper limit
+ * @param low Lower limit
+ * @return Random double value
+ */
+inline double rand_double(double high = 1.0, double low = 0)
+{
+ return low + ((high-low) * (std::rand() / (RAND_MAX + 1.0)));
+}
+
+/**
+ * Generates a random integer value.
+ * @param high Upper limit
+ * @param low Lower limit
+ * @return Random integer value
+ */
+inline int rand_int(int high = RAND_MAX, int low = 0)
+{
+ return low + (int) ( double(high-low) * (std::rand() / (RAND_MAX + 1.0)));
+}
+
+/**
+ * Random number generator that returns a distinct number from
+ * the [0,n) interval each time.
+ */
+class UniqueRandom
+{
+ std::vector<int> vals_;
+ int size_;
+ int counter_;
+
+public:
+ /**
+ * Constructor.
+ * @param n Size of the interval from which to generate
+ * @return
+ */
+ UniqueRandom(int n)
+ {
+ init(n);
+ }
+
+ /**
+ * Initializes the number generator.
+ * @param n the size of the interval from which to generate random numbers.
+ */
+ void init(int n)
+ {
+ // create and initialize an array of size n
+ vals_.resize(n);
+ size_ = n;
+ for (int i = 0; i < size_; ++i) vals_[i] = i;
+
+ // shuffle the elements in the array
+ std::random_shuffle(vals_.begin(), vals_.end());
+
+ counter_ = 0;
+ }
+
+ /**
+ * Return a distinct random integer in greater or equal to 0 and less
+ * than 'n' on each call. It should be called maximum 'n' times.
+ * Returns: a random integer
+ */
+ int next()
+ {
+ if (counter_ == size_) {
+ return -1;
+ }
+ else {
+ return vals_[counter_++];
+ }
+ }
+};
+
+}
+
+#endif //OPENCV_FLANN_RANDOM_H
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/result_set.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/result_set.h
new file mode 100644
index 00000000..97500195
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/result_set.h
@@ -0,0 +1,543 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_RESULTSET_H
+#define OPENCV_FLANN_RESULTSET_H
+
+#include <algorithm>
+#include <cstring>
+#include <iostream>
+#include <limits>
+#include <set>
+#include <vector>
+
+namespace cvflann
+{
+
+/* This record represents a branch point when finding neighbors in
+ the tree. It contains a record of the minimum distance to the query
+ point, as well as the node at which the search resumes.
+ */
+
+template <typename T, typename DistanceType>
+struct BranchStruct
+{
+ T node; /* Tree node at which search resumes */
+ DistanceType mindist; /* Minimum distance to query for all nodes below. */
+
+ BranchStruct() {}
+ BranchStruct(const T& aNode, DistanceType dist) : node(aNode), mindist(dist) {}
+
+ bool operator<(const BranchStruct<T, DistanceType>& rhs) const
+ {
+ return mindist<rhs.mindist;
+ }
+};
+
+
+template <typename DistanceType>
+class ResultSet
+{
+public:
+ virtual ~ResultSet() {}
+
+ virtual bool full() const = 0;
+
+ virtual void addPoint(DistanceType dist, int index) = 0;
+
+ virtual DistanceType worstDist() const = 0;
+
+};
+
+/**
+ * KNNSimpleResultSet does not ensure that the element it holds are unique.
+ * Is used in those cases where the nearest neighbour algorithm used does not
+ * attempt to insert the same element multiple times.
+ */
+template <typename DistanceType>
+class KNNSimpleResultSet : public ResultSet<DistanceType>
+{
+ int* indices;
+ DistanceType* dists;
+ int capacity;
+ int count;
+ DistanceType worst_distance_;
+
+public:
+ KNNSimpleResultSet(int capacity_) : capacity(capacity_), count(0)
+ {
+ }
+
+ void init(int* indices_, DistanceType* dists_)
+ {
+ indices = indices_;
+ dists = dists_;
+ count = 0;
+ worst_distance_ = (std::numeric_limits<DistanceType>::max)();
+ dists[capacity-1] = worst_distance_;
+ }
+
+ size_t size() const
+ {
+ return count;
+ }
+
+ bool full() const
+ {
+ return count == capacity;
+ }
+
+
+ void addPoint(DistanceType dist, int index)
+ {
+ if (dist >= worst_distance_) return;
+ int i;
+ for (i=count; i>0; --i) {
+#ifdef FLANN_FIRST_MATCH
+ if ( (dists[i-1]>dist) || ((dist==dists[i-1])&&(indices[i-1]>index)) )
+#else
+ if (dists[i-1]>dist)
+#endif
+ {
+ if (i<capacity) {
+ dists[i] = dists[i-1];
+ indices[i] = indices[i-1];
+ }
+ }
+ else break;
+ }
+ if (count < capacity) ++count;
+ dists[i] = dist;
+ indices[i] = index;
+ worst_distance_ = dists[capacity-1];
+ }
+
+ DistanceType worstDist() const
+ {
+ return worst_distance_;
+ }
+};
+
+/**
+ * K-Nearest neighbour result set. Ensures that the elements inserted are unique
+ */
+template <typename DistanceType>
+class KNNResultSet : public ResultSet<DistanceType>
+{
+ int* indices;
+ DistanceType* dists;
+ int capacity;
+ int count;
+ DistanceType worst_distance_;
+
+public:
+ KNNResultSet(int capacity_) : capacity(capacity_), count(0)
+ {
+ }
+
+ void init(int* indices_, DistanceType* dists_)
+ {
+ indices = indices_;
+ dists = dists_;
+ count = 0;
+ worst_distance_ = (std::numeric_limits<DistanceType>::max)();
+ dists[capacity-1] = worst_distance_;
+ }
+
+ size_t size() const
+ {
+ return count;
+ }
+
+ bool full() const
+ {
+ return count == capacity;
+ }
+
+
+ void addPoint(DistanceType dist, int index)
+ {
+ if (dist >= worst_distance_) return;
+ int i;
+ for (i = count; i > 0; --i) {
+#ifdef FLANN_FIRST_MATCH
+ if ( (dists[i-1]<=dist) && ((dist!=dists[i-1])||(indices[i-1]<=index)) )
+#else
+ if (dists[i-1]<=dist)
+#endif
+ {
+ // Check for duplicate indices
+ int j = i - 1;
+ while ((j >= 0) && (dists[j] == dist)) {
+ if (indices[j] == index) {
+ return;
+ }
+ --j;
+ }
+ break;
+ }
+ }
+
+ if (count < capacity) ++count;
+ for (int j = count-1; j > i; --j) {
+ dists[j] = dists[j-1];
+ indices[j] = indices[j-1];
+ }
+ dists[i] = dist;
+ indices[i] = index;
+ worst_distance_ = dists[capacity-1];
+ }
+
+ DistanceType worstDist() const
+ {
+ return worst_distance_;
+ }
+};
+
+
+/**
+ * A result-set class used when performing a radius based search.
+ */
+template <typename DistanceType>
+class RadiusResultSet : public ResultSet<DistanceType>
+{
+ DistanceType radius;
+ int* indices;
+ DistanceType* dists;
+ size_t capacity;
+ size_t count;
+
+public:
+ RadiusResultSet(DistanceType radius_, int* indices_, DistanceType* dists_, int capacity_) :
+ radius(radius_), indices(indices_), dists(dists_), capacity(capacity_)
+ {
+ init();
+ }
+
+ ~RadiusResultSet()
+ {
+ }
+
+ void init()
+ {
+ count = 0;
+ }
+
+ size_t size() const
+ {
+ return count;
+ }
+
+ bool full() const
+ {
+ return true;
+ }
+
+ void addPoint(DistanceType dist, int index)
+ {
+ if (dist<radius) {
+ if ((capacity>0)&&(count < capacity)) {
+ dists[count] = dist;
+ indices[count] = index;
+ }
+ count++;
+ }
+ }
+
+ DistanceType worstDist() const
+ {
+ return radius;
+ }
+
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** Class that holds the k NN neighbors
+ * Faster than KNNResultSet as it uses a binary heap and does not maintain two arrays
+ */
+template<typename DistanceType>
+class UniqueResultSet : public ResultSet<DistanceType>
+{
+public:
+ struct DistIndex
+ {
+ DistIndex(DistanceType dist, unsigned int index) :
+ dist_(dist), index_(index)
+ {
+ }
+ bool operator<(const DistIndex dist_index) const
+ {
+ return (dist_ < dist_index.dist_) || ((dist_ == dist_index.dist_) && index_ < dist_index.index_);
+ }
+ DistanceType dist_;
+ unsigned int index_;
+ };
+
+ /** Default cosntructor */
+ UniqueResultSet() :
+ worst_distance_(std::numeric_limits<DistanceType>::max())
+ {
+ }
+
+ /** Check the status of the set
+ * @return true if we have k NN
+ */
+ inline bool full() const
+ {
+ return is_full_;
+ }
+
+ /** Remove all elements in the set
+ */
+ virtual void clear() = 0;
+
+ /** Copy the set to two C arrays
+ * @param indices pointer to a C array of indices
+ * @param dist pointer to a C array of distances
+ * @param n_neighbors the number of neighbors to copy
+ */
+ virtual void copy(int* indices, DistanceType* dist, int n_neighbors = -1) const
+ {
+ if (n_neighbors < 0) {
+ for (typename std::set<DistIndex>::const_iterator dist_index = dist_indices_.begin(), dist_index_end =
+ dist_indices_.end(); dist_index != dist_index_end; ++dist_index, ++indices, ++dist) {
+ *indices = dist_index->index_;
+ *dist = dist_index->dist_;
+ }
+ }
+ else {
+ int i = 0;
+ for (typename std::set<DistIndex>::const_iterator dist_index = dist_indices_.begin(), dist_index_end =
+ dist_indices_.end(); (dist_index != dist_index_end) && (i < n_neighbors); ++dist_index, ++indices, ++dist, ++i) {
+ *indices = dist_index->index_;
+ *dist = dist_index->dist_;
+ }
+ }
+ }
+
+ /** Copy the set to two C arrays but sort it according to the distance first
+ * @param indices pointer to a C array of indices
+ * @param dist pointer to a C array of distances
+ * @param n_neighbors the number of neighbors to copy
+ */
+ virtual void sortAndCopy(int* indices, DistanceType* dist, int n_neighbors = -1) const
+ {
+ copy(indices, dist, n_neighbors);
+ }
+
+ /** The number of neighbors in the set
+ * @return
+ */
+ size_t size() const
+ {
+ return dist_indices_.size();
+ }
+
+ /** The distance of the furthest neighbor
+ * If we don't have enough neighbors, it returns the max possible value
+ * @return
+ */
+ inline DistanceType worstDist() const
+ {
+ return worst_distance_;
+ }
+protected:
+ /** Flag to say if the set is full */
+ bool is_full_;
+
+ /** The worst distance found so far */
+ DistanceType worst_distance_;
+
+ /** The best candidates so far */
+ std::set<DistIndex> dist_indices_;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** Class that holds the k NN neighbors
+ * Faster than KNNResultSet as it uses a binary heap and does not maintain two arrays
+ */
+template<typename DistanceType>
+class KNNUniqueResultSet : public UniqueResultSet<DistanceType>
+{
+public:
+ /** Constructor
+ * @param capacity the number of neighbors to store at max
+ */
+ KNNUniqueResultSet(unsigned int capacity) : capacity_(capacity)
+ {
+ this->is_full_ = false;
+ this->clear();
+ }
+
+ /** Add a possible candidate to the best neighbors
+ * @param dist distance for that neighbor
+ * @param index index of that neighbor
+ */
+ inline void addPoint(DistanceType dist, int index)
+ {
+ // Don't do anything if we are worse than the worst
+ if (dist >= worst_distance_) return;
+ dist_indices_.insert(DistIndex(dist, index));
+
+ if (is_full_) {
+ if (dist_indices_.size() > capacity_) {
+ dist_indices_.erase(*dist_indices_.rbegin());
+ worst_distance_ = dist_indices_.rbegin()->dist_;
+ }
+ }
+ else if (dist_indices_.size() == capacity_) {
+ is_full_ = true;
+ worst_distance_ = dist_indices_.rbegin()->dist_;
+ }
+ }
+
+ /** Remove all elements in the set
+ */
+ void clear()
+ {
+ dist_indices_.clear();
+ worst_distance_ = std::numeric_limits<DistanceType>::max();
+ is_full_ = false;
+ }
+
+protected:
+ typedef typename UniqueResultSet<DistanceType>::DistIndex DistIndex;
+ using UniqueResultSet<DistanceType>::is_full_;
+ using UniqueResultSet<DistanceType>::worst_distance_;
+ using UniqueResultSet<DistanceType>::dist_indices_;
+
+ /** The number of neighbors to keep */
+ unsigned int capacity_;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** Class that holds the radius nearest neighbors
+ * It is more accurate than RadiusResult as it is not limited in the number of neighbors
+ */
+template<typename DistanceType>
+class RadiusUniqueResultSet : public UniqueResultSet<DistanceType>
+{
+public:
+ /** Constructor
+ * @param radius the maximum distance of a neighbor
+ */
+ RadiusUniqueResultSet(DistanceType radius) :
+ radius_(radius)
+ {
+ is_full_ = true;
+ }
+
+ /** Add a possible candidate to the best neighbors
+ * @param dist distance for that neighbor
+ * @param index index of that neighbor
+ */
+ void addPoint(DistanceType dist, int index)
+ {
+ if (dist <= radius_) dist_indices_.insert(DistIndex(dist, index));
+ }
+
+ /** Remove all elements in the set
+ */
+ inline void clear()
+ {
+ dist_indices_.clear();
+ }
+
+
+ /** Check the status of the set
+ * @return alwys false
+ */
+ inline bool full() const
+ {
+ return true;
+ }
+
+ /** The distance of the furthest neighbor
+ * If we don't have enough neighbors, it returns the max possible value
+ * @return
+ */
+ inline DistanceType worstDist() const
+ {
+ return radius_;
+ }
+private:
+ typedef typename UniqueResultSet<DistanceType>::DistIndex DistIndex;
+ using UniqueResultSet<DistanceType>::dist_indices_;
+ using UniqueResultSet<DistanceType>::is_full_;
+
+ /** The furthest distance a neighbor can be */
+ DistanceType radius_;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/** Class that holds the k NN neighbors within a radius distance
+ */
+template<typename DistanceType>
+class KNNRadiusUniqueResultSet : public KNNUniqueResultSet<DistanceType>
+{
+public:
+ /** Constructor
+ * @param capacity the number of neighbors to store at max
+ * @param radius the maximum distance of a neighbor
+ */
+ KNNRadiusUniqueResultSet(unsigned int capacity, DistanceType radius)
+ {
+ this->capacity_ = capacity;
+ this->radius_ = radius;
+ this->dist_indices_.reserve(capacity_);
+ this->clear();
+ }
+
+ /** Remove all elements in the set
+ */
+ void clear()
+ {
+ dist_indices_.clear();
+ worst_distance_ = radius_;
+ is_full_ = false;
+ }
+private:
+ using KNNUniqueResultSet<DistanceType>::dist_indices_;
+ using KNNUniqueResultSet<DistanceType>::is_full_;
+ using KNNUniqueResultSet<DistanceType>::worst_distance_;
+
+ /** The maximum number of neighbors to consider */
+ unsigned int capacity_;
+
+ /** The maximum distance of a neighbor */
+ DistanceType radius_;
+};
+}
+
+#endif //OPENCV_FLANN_RESULTSET_H
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/sampling.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/sampling.h
new file mode 100644
index 00000000..396f177a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/sampling.h
@@ -0,0 +1,81 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+
+#ifndef OPENCV_FLANN_SAMPLING_H_
+#define OPENCV_FLANN_SAMPLING_H_
+
+#include "matrix.h"
+#include "random.h"
+
+namespace cvflann
+{
+
+template<typename T>
+Matrix<T> random_sample(Matrix<T>& srcMatrix, long size, bool remove = false)
+{
+ Matrix<T> newSet(new T[size * srcMatrix.cols], size,srcMatrix.cols);
+
+ T* src,* dest;
+ for (long i=0; i<size; ++i) {
+ long r = rand_int((int)(srcMatrix.rows-i));
+ dest = newSet[i];
+ src = srcMatrix[r];
+ std::copy(src, src+srcMatrix.cols, dest);
+ if (remove) {
+ src = srcMatrix[srcMatrix.rows-i-1];
+ dest = srcMatrix[r];
+ std::copy(src, src+srcMatrix.cols, dest);
+ }
+ }
+ if (remove) {
+ srcMatrix.rows -= size;
+ }
+ return newSet;
+}
+
+template<typename T>
+Matrix<T> random_sample(const Matrix<T>& srcMatrix, size_t size)
+{
+ UniqueRandom rand((int)srcMatrix.rows);
+ Matrix<T> newSet(new T[size * srcMatrix.cols], size,srcMatrix.cols);
+
+ T* src,* dest;
+ for (size_t i=0; i<size; ++i) {
+ long r = rand.next();
+ dest = newSet[i];
+ src = srcMatrix[r];
+ std::copy(src, src+srcMatrix.cols, dest);
+ }
+ return newSet;
+}
+
+} // namespace
+
+
+#endif /* OPENCV_FLANN_SAMPLING_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/saving.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/saving.h
new file mode 100644
index 00000000..7e3bea56
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/saving.h
@@ -0,0 +1,187 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE NNIndexGOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_SAVING_H_
+#define OPENCV_FLANN_SAVING_H_
+
+#include <cstring>
+#include <vector>
+
+#include "general.h"
+#include "nn_index.h"
+
+#ifdef FLANN_SIGNATURE_
+#undef FLANN_SIGNATURE_
+#endif
+#define FLANN_SIGNATURE_ "FLANN_INDEX"
+
+namespace cvflann
+{
+
+template <typename T>
+struct Datatype {};
+template<>
+struct Datatype<char> { static flann_datatype_t type() { return FLANN_INT8; } };
+template<>
+struct Datatype<short> { static flann_datatype_t type() { return FLANN_INT16; } };
+template<>
+struct Datatype<int> { static flann_datatype_t type() { return FLANN_INT32; } };
+template<>
+struct Datatype<unsigned char> { static flann_datatype_t type() { return FLANN_UINT8; } };
+template<>
+struct Datatype<unsigned short> { static flann_datatype_t type() { return FLANN_UINT16; } };
+template<>
+struct Datatype<unsigned int> { static flann_datatype_t type() { return FLANN_UINT32; } };
+template<>
+struct Datatype<float> { static flann_datatype_t type() { return FLANN_FLOAT32; } };
+template<>
+struct Datatype<double> { static flann_datatype_t type() { return FLANN_FLOAT64; } };
+
+
+/**
+ * Structure representing the index header.
+ */
+struct IndexHeader
+{
+ char signature[16];
+ char version[16];
+ flann_datatype_t data_type;
+ flann_algorithm_t index_type;
+ size_t rows;
+ size_t cols;
+};
+
+/**
+ * Saves index header to stream
+ *
+ * @param stream - Stream to save to
+ * @param index - The index to save
+ */
+template<typename Distance>
+void save_header(FILE* stream, const NNIndex<Distance>& index)
+{
+ IndexHeader header;
+ memset(header.signature, 0, sizeof(header.signature));
+ strcpy(header.signature, FLANN_SIGNATURE_);
+ memset(header.version, 0, sizeof(header.version));
+ strcpy(header.version, FLANN_VERSION_);
+ header.data_type = Datatype<typename Distance::ElementType>::type();
+ header.index_type = index.getType();
+ header.rows = index.size();
+ header.cols = index.veclen();
+
+ std::fwrite(&header, sizeof(header),1,stream);
+}
+
+
+/**
+ *
+ * @param stream - Stream to load from
+ * @return Index header
+ */
+inline IndexHeader load_header(FILE* stream)
+{
+ IndexHeader header;
+ size_t read_size = fread(&header,sizeof(header),1,stream);
+
+ if (read_size!=(size_t)1) {
+ throw FLANNException("Invalid index file, cannot read");
+ }
+
+ if (strcmp(header.signature,FLANN_SIGNATURE_)!=0) {
+ throw FLANNException("Invalid index file, wrong signature");
+ }
+
+ return header;
+
+}
+
+
+template<typename T>
+void save_value(FILE* stream, const T& value, size_t count = 1)
+{
+ fwrite(&value, sizeof(value),count, stream);
+}
+
+template<typename T>
+void save_value(FILE* stream, const cvflann::Matrix<T>& value)
+{
+ fwrite(&value, sizeof(value),1, stream);
+ fwrite(value.data, sizeof(T),value.rows*value.cols, stream);
+}
+
+template<typename T>
+void save_value(FILE* stream, const std::vector<T>& value)
+{
+ size_t size = value.size();
+ fwrite(&size, sizeof(size_t), 1, stream);
+ fwrite(&value[0], sizeof(T), size, stream);
+}
+
+template<typename T>
+void load_value(FILE* stream, T& value, size_t count = 1)
+{
+ size_t read_cnt = fread(&value, sizeof(value), count, stream);
+ if (read_cnt != count) {
+ throw FLANNException("Cannot read from file");
+ }
+}
+
+template<typename T>
+void load_value(FILE* stream, cvflann::Matrix<T>& value)
+{
+ size_t read_cnt = fread(&value, sizeof(value), 1, stream);
+ if (read_cnt != 1) {
+ throw FLANNException("Cannot read from file");
+ }
+ value.data = new T[value.rows*value.cols];
+ read_cnt = fread(value.data, sizeof(T), value.rows*value.cols, stream);
+ if (read_cnt != (size_t)(value.rows*value.cols)) {
+ throw FLANNException("Cannot read from file");
+ }
+}
+
+
+template<typename T>
+void load_value(FILE* stream, std::vector<T>& value)
+{
+ size_t size;
+ size_t read_cnt = fread(&size, sizeof(size_t), 1, stream);
+ if (read_cnt!=1) {
+ throw FLANNException("Cannot read from file");
+ }
+ value.resize(size);
+ read_cnt = fread(&value[0], sizeof(T), size, stream);
+ if (read_cnt != size) {
+ throw FLANNException("Cannot read from file");
+ }
+}
+
+}
+
+#endif /* OPENCV_FLANN_SAVING_H_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/simplex_downhill.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/simplex_downhill.h
new file mode 100644
index 00000000..145901ab
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/simplex_downhill.h
@@ -0,0 +1,186 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_SIMPLEX_DOWNHILL_H_
+#define OPENCV_FLANN_SIMPLEX_DOWNHILL_H_
+
+namespace cvflann
+{
+
+/**
+ Adds val to array vals (and point to array points) and keeping the arrays sorted by vals.
+ */
+template <typename T>
+void addValue(int pos, float val, float* vals, T* point, T* points, int n)
+{
+ vals[pos] = val;
+ for (int i=0; i<n; ++i) {
+ points[pos*n+i] = point[i];
+ }
+
+ // bubble down
+ int j=pos;
+ while (j>0 && vals[j]<vals[j-1]) {
+ swap(vals[j],vals[j-1]);
+ for (int i=0; i<n; ++i) {
+ swap(points[j*n+i],points[(j-1)*n+i]);
+ }
+ --j;
+ }
+}
+
+
+/**
+ Simplex downhill optimization function.
+ Preconditions: points is a 2D mattrix of size (n+1) x n
+ func is the cost function taking n an array of n params and returning float
+ vals is the cost function in the n+1 simplex points, if NULL it will be computed
+
+ Postcondition: returns optimum value and points[0..n] are the optimum parameters
+ */
+template <typename T, typename F>
+float optimizeSimplexDownhill(T* points, int n, F func, float* vals = NULL )
+{
+ const int MAX_ITERATIONS = 10;
+
+ assert(n>0);
+
+ T* p_o = new T[n];
+ T* p_r = new T[n];
+ T* p_e = new T[n];
+
+ int alpha = 1;
+
+ int iterations = 0;
+
+ bool ownVals = false;
+ if (vals == NULL) {
+ ownVals = true;
+ vals = new float[n+1];
+ for (int i=0; i<n+1; ++i) {
+ float val = func(points+i*n);
+ addValue(i, val, vals, points+i*n, points, n);
+ }
+ }
+ int nn = n*n;
+
+ while (true) {
+
+ if (iterations++ > MAX_ITERATIONS) break;
+
+ // compute average of simplex points (except the highest point)
+ for (int j=0; j<n; ++j) {
+ p_o[j] = 0;
+ for (int i=0; i<n; ++i) {
+ p_o[i] += points[j*n+i];
+ }
+ }
+ for (int i=0; i<n; ++i) {
+ p_o[i] /= n;
+ }
+
+ bool converged = true;
+ for (int i=0; i<n; ++i) {
+ if (p_o[i] != points[nn+i]) {
+ converged = false;
+ }
+ }
+ if (converged) break;
+
+ // trying a reflection
+ for (int i=0; i<n; ++i) {
+ p_r[i] = p_o[i] + alpha*(p_o[i]-points[nn+i]);
+ }
+ float val_r = func(p_r);
+
+ if ((val_r>=vals[0])&&(val_r<vals[n])) {
+ // reflection between second highest and lowest
+ // add it to the simplex
+ Logger::info("Choosing reflection\n");
+ addValue(n, val_r,vals, p_r, points, n);
+ continue;
+ }
+
+ if (val_r<vals[0]) {
+ // value is smaller than smalest in simplex
+
+ // expand some more to see if it drops further
+ for (int i=0; i<n; ++i) {
+ p_e[i] = 2*p_r[i]-p_o[i];
+ }
+ float val_e = func(p_e);
+
+ if (val_e<val_r) {
+ Logger::info("Choosing reflection and expansion\n");
+ addValue(n, val_e,vals,p_e,points,n);
+ }
+ else {
+ Logger::info("Choosing reflection\n");
+ addValue(n, val_r,vals,p_r,points,n);
+ }
+ continue;
+ }
+ if (val_r>=vals[n]) {
+ for (int i=0; i<n; ++i) {
+ p_e[i] = (p_o[i]+points[nn+i])/2;
+ }
+ float val_e = func(p_e);
+
+ if (val_e<vals[n]) {
+ Logger::info("Choosing contraction\n");
+ addValue(n,val_e,vals,p_e,points,n);
+ continue;
+ }
+ }
+ {
+ Logger::info("Full contraction\n");
+ for (int j=1; j<=n; ++j) {
+ for (int i=0; i<n; ++i) {
+ points[j*n+i] = (points[j*n+i]+points[i])/2;
+ }
+ float val = func(points+j*n);
+ addValue(j,val,vals,points+j*n,points,n);
+ }
+ }
+ }
+
+ float bestVal = vals[0];
+
+ delete[] p_r;
+ delete[] p_o;
+ delete[] p_e;
+ if (ownVals) delete[] vals;
+
+ return bestVal;
+}
+
+}
+
+#endif //OPENCV_FLANN_SIMPLEX_DOWNHILL_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/timer.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/timer.h
new file mode 100644
index 00000000..107371ec
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/flann/timer.h
@@ -0,0 +1,93 @@
+/***********************************************************************
+ * Software License Agreement (BSD License)
+ *
+ * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
+ * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
+ *
+ * THE BSD LICENSE
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *************************************************************************/
+
+#ifndef OPENCV_FLANN_TIMER_H
+#define OPENCV_FLANN_TIMER_H
+
+#include <time.h>
+
+
+namespace cvflann
+{
+
+/**
+ * A start-stop timer class.
+ *
+ * Can be used to time portions of code.
+ */
+class StartStopTimer
+{
+ clock_t startTime;
+
+public:
+ /**
+ * Value of the timer.
+ */
+ double value;
+
+
+ /**
+ * Constructor.
+ */
+ StartStopTimer()
+ {
+ reset();
+ }
+
+ /**
+ * Starts the timer.
+ */
+ void start()
+ {
+ startTime = clock();
+ }
+
+ /**
+ * Stops the timer and updates timer value.
+ */
+ void stop()
+ {
+ clock_t stopTime = clock();
+ value += ( (double)stopTime - startTime) / CLOCKS_PER_SEC;
+ }
+
+ /**
+ * Resets the timer value to 0.
+ */
+ void reset()
+ {
+ value = 0;
+ }
+
+};
+
+}
+
+#endif // FLANN_TIMER_H
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/block.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/block.hpp
new file mode 100644
index 00000000..6cc00aed
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/block.hpp
@@ -0,0 +1,203 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_DEVICE_BLOCK_HPP__
+#define __OPENCV_GPU_DEVICE_BLOCK_HPP__
+
+namespace cv { namespace gpu { namespace device
+{
+ struct Block
+ {
+ static __device__ __forceinline__ unsigned int id()
+ {
+ return blockIdx.x;
+ }
+
+ static __device__ __forceinline__ unsigned int stride()
+ {
+ return blockDim.x * blockDim.y * blockDim.z;
+ }
+
+ static __device__ __forceinline__ void sync()
+ {
+ __syncthreads();
+ }
+
+ static __device__ __forceinline__ int flattenedThreadId()
+ {
+ return threadIdx.z * blockDim.x * blockDim.y + threadIdx.y * blockDim.x + threadIdx.x;
+ }
+
+ template<typename It, typename T>
+ static __device__ __forceinline__ void fill(It beg, It end, const T& value)
+ {
+ int STRIDE = stride();
+ It t = beg + flattenedThreadId();
+
+ for(; t < end; t += STRIDE)
+ *t = value;
+ }
+
+ template<typename OutIt, typename T>
+ static __device__ __forceinline__ void yota(OutIt beg, OutIt end, T value)
+ {
+ int STRIDE = stride();
+ int tid = flattenedThreadId();
+ value += tid;
+
+ for(OutIt t = beg + tid; t < end; t += STRIDE, value += STRIDE)
+ *t = value;
+ }
+
+ template<typename InIt, typename OutIt>
+ static __device__ __forceinline__ void copy(InIt beg, InIt end, OutIt out)
+ {
+ int STRIDE = stride();
+ InIt t = beg + flattenedThreadId();
+ OutIt o = out + (t - beg);
+
+ for(; t < end; t += STRIDE, o += STRIDE)
+ *o = *t;
+ }
+
+ template<typename InIt, typename OutIt, class UnOp>
+ static __device__ __forceinline__ void transfrom(InIt beg, InIt end, OutIt out, UnOp op)
+ {
+ int STRIDE = stride();
+ InIt t = beg + flattenedThreadId();
+ OutIt o = out + (t - beg);
+
+ for(; t < end; t += STRIDE, o += STRIDE)
+ *o = op(*t);
+ }
+
+ template<typename InIt1, typename InIt2, typename OutIt, class BinOp>
+ static __device__ __forceinline__ void transfrom(InIt1 beg1, InIt1 end1, InIt2 beg2, OutIt out, BinOp op)
+ {
+ int STRIDE = stride();
+ InIt1 t1 = beg1 + flattenedThreadId();
+ InIt2 t2 = beg2 + flattenedThreadId();
+ OutIt o = out + (t1 - beg1);
+
+ for(; t1 < end1; t1 += STRIDE, t2 += STRIDE, o += STRIDE)
+ *o = op(*t1, *t2);
+ }
+
+ template<int CTA_SIZE, typename T, class BinOp>
+ static __device__ __forceinline__ void reduce(volatile T* buffer, BinOp op)
+ {
+ int tid = flattenedThreadId();
+ T val = buffer[tid];
+
+ if (CTA_SIZE >= 1024) { if (tid < 512) buffer[tid] = val = op(val, buffer[tid + 512]); __syncthreads(); }
+ if (CTA_SIZE >= 512) { if (tid < 256) buffer[tid] = val = op(val, buffer[tid + 256]); __syncthreads(); }
+ if (CTA_SIZE >= 256) { if (tid < 128) buffer[tid] = val = op(val, buffer[tid + 128]); __syncthreads(); }
+ if (CTA_SIZE >= 128) { if (tid < 64) buffer[tid] = val = op(val, buffer[tid + 64]); __syncthreads(); }
+
+ if (tid < 32)
+ {
+ if (CTA_SIZE >= 64) { buffer[tid] = val = op(val, buffer[tid + 32]); }
+ if (CTA_SIZE >= 32) { buffer[tid] = val = op(val, buffer[tid + 16]); }
+ if (CTA_SIZE >= 16) { buffer[tid] = val = op(val, buffer[tid + 8]); }
+ if (CTA_SIZE >= 8) { buffer[tid] = val = op(val, buffer[tid + 4]); }
+ if (CTA_SIZE >= 4) { buffer[tid] = val = op(val, buffer[tid + 2]); }
+ if (CTA_SIZE >= 2) { buffer[tid] = val = op(val, buffer[tid + 1]); }
+ }
+ }
+
+ template<int CTA_SIZE, typename T, class BinOp>
+ static __device__ __forceinline__ T reduce(volatile T* buffer, T init, BinOp op)
+ {
+ int tid = flattenedThreadId();
+ T val = buffer[tid] = init;
+ __syncthreads();
+
+ if (CTA_SIZE >= 1024) { if (tid < 512) buffer[tid] = val = op(val, buffer[tid + 512]); __syncthreads(); }
+ if (CTA_SIZE >= 512) { if (tid < 256) buffer[tid] = val = op(val, buffer[tid + 256]); __syncthreads(); }
+ if (CTA_SIZE >= 256) { if (tid < 128) buffer[tid] = val = op(val, buffer[tid + 128]); __syncthreads(); }
+ if (CTA_SIZE >= 128) { if (tid < 64) buffer[tid] = val = op(val, buffer[tid + 64]); __syncthreads(); }
+
+ if (tid < 32)
+ {
+ if (CTA_SIZE >= 64) { buffer[tid] = val = op(val, buffer[tid + 32]); }
+ if (CTA_SIZE >= 32) { buffer[tid] = val = op(val, buffer[tid + 16]); }
+ if (CTA_SIZE >= 16) { buffer[tid] = val = op(val, buffer[tid + 8]); }
+ if (CTA_SIZE >= 8) { buffer[tid] = val = op(val, buffer[tid + 4]); }
+ if (CTA_SIZE >= 4) { buffer[tid] = val = op(val, buffer[tid + 2]); }
+ if (CTA_SIZE >= 2) { buffer[tid] = val = op(val, buffer[tid + 1]); }
+ }
+ __syncthreads();
+ return buffer[0];
+ }
+
+ template <typename T, class BinOp>
+ static __device__ __forceinline__ void reduce_n(T* data, unsigned int n, BinOp op)
+ {
+ int ftid = flattenedThreadId();
+ int sft = stride();
+
+ if (sft < n)
+ {
+ for (unsigned int i = sft + ftid; i < n; i += sft)
+ data[ftid] = op(data[ftid], data[i]);
+
+ __syncthreads();
+
+ n = sft;
+ }
+
+ while (n > 1)
+ {
+ unsigned int half = n/2;
+
+ if (ftid < half)
+ data[ftid] = op(data[ftid], data[n - ftid - 1]);
+
+ __syncthreads();
+
+ n = n - half;
+ }
+ }
+ };
+}}}
+
+#endif /* __OPENCV_GPU_DEVICE_BLOCK_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/border_interpolate.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/border_interpolate.hpp
new file mode 100644
index 00000000..693ba216
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/border_interpolate.hpp
@@ -0,0 +1,714 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_BORDER_INTERPOLATE_HPP__
+#define __OPENCV_GPU_BORDER_INTERPOLATE_HPP__
+
+#include "saturate_cast.hpp"
+#include "vec_traits.hpp"
+#include "vec_math.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ //////////////////////////////////////////////////////////////
+ // BrdConstant
+
+ template <typename D> struct BrdRowConstant
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdRowConstant(int width_, const D& val_ = VecTraits<D>::all(0)) : width(width_), val(val_) {}
+
+ template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const
+ {
+ return x >= 0 ? saturate_cast<D>(data[x]) : val;
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const
+ {
+ return x < width ? saturate_cast<D>(data[x]) : val;
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int x, const T* data) const
+ {
+ return (x >= 0 && x < width) ? saturate_cast<D>(data[x]) : val;
+ }
+
+ const int width;
+ const D val;
+ };
+
+ template <typename D> struct BrdColConstant
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdColConstant(int height_, const D& val_ = VecTraits<D>::all(0)) : height(height_), val(val_) {}
+
+ template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const
+ {
+ return y >= 0 ? saturate_cast<D>(*(const T*)((const char*)data + y * step)) : val;
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const
+ {
+ return y < height ? saturate_cast<D>(*(const T*)((const char*)data + y * step)) : val;
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const
+ {
+ return (y >= 0 && y < height) ? saturate_cast<D>(*(const T*)((const char*)data + y * step)) : val;
+ }
+
+ const int height;
+ const D val;
+ };
+
+ template <typename D> struct BrdConstant
+ {
+ typedef D result_type;
+
+ __host__ __device__ __forceinline__ BrdConstant(int height_, int width_, const D& val_ = VecTraits<D>::all(0)) : height(height_), width(width_), val(val_)
+ {
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const
+ {
+ return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast<D>(((const T*)((const uchar*)data + y * step))[x]) : val;
+ }
+
+ template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const
+ {
+ return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast<D>(src(y, x)) : val;
+ }
+
+ const int height;
+ const int width;
+ const D val;
+ };
+
+ //////////////////////////////////////////////////////////////
+ // BrdReplicate
+
+ template <typename D> struct BrdRowReplicate
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdRowReplicate(int width) : last_col(width - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdRowReplicate(int width, U) : last_col(width - 1) {}
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return ::max(x, 0);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return ::min(x, last_col);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_low(idx_col_high(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_low(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_high(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col(x)]);
+ }
+
+ const int last_col;
+ };
+
+ template <typename D> struct BrdColReplicate
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdColReplicate(int height) : last_row(height - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdColReplicate(int height, U) : last_row(height - 1) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return ::max(y, 0);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return ::min(y, last_row);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_low(idx_row_high(y));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const T*)((const char*)data + idx_row_low(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const T*)((const char*)data + idx_row_high(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const T*)((const char*)data + idx_row(y) * step));
+ }
+
+ const int last_row;
+ };
+
+ template <typename D> struct BrdReplicate
+ {
+ typedef D result_type;
+
+ __host__ __device__ __forceinline__ BrdReplicate(int height, int width) : last_row(height - 1), last_col(width - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdReplicate(int height, int width, U) : last_row(height - 1), last_col(width - 1) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return ::max(y, 0);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return ::min(y, last_row);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_low(idx_row_high(y));
+ }
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return ::max(x, 0);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return ::min(x, last_col);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_low(idx_col_high(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]);
+ }
+
+ template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const
+ {
+ return saturate_cast<D>(src(idx_row(y), idx_col(x)));
+ }
+
+ const int last_row;
+ const int last_col;
+ };
+
+ //////////////////////////////////////////////////////////////
+ // BrdReflect101
+
+ template <typename D> struct BrdRowReflect101
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdRowReflect101(int width) : last_col(width - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdRowReflect101(int width, U) : last_col(width - 1) {}
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return ::abs(x) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return ::abs(last_col - ::abs(last_col - x)) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_low(idx_col_high(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_low(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_high(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col(x)]);
+ }
+
+ const int last_col;
+ };
+
+ template <typename D> struct BrdColReflect101
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdColReflect101(int height) : last_row(height - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdColReflect101(int height, U) : last_row(height - 1) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return ::abs(y) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return ::abs(last_row - ::abs(last_row - y)) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_low(idx_row_high(y));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row_low(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row_high(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row(y) * step));
+ }
+
+ const int last_row;
+ };
+
+ template <typename D> struct BrdReflect101
+ {
+ typedef D result_type;
+
+ __host__ __device__ __forceinline__ BrdReflect101(int height, int width) : last_row(height - 1), last_col(width - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdReflect101(int height, int width, U) : last_row(height - 1), last_col(width - 1) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return ::abs(y) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return ::abs(last_row - ::abs(last_row - y)) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_low(idx_row_high(y));
+ }
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return ::abs(x) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return ::abs(last_col - ::abs(last_col - x)) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_low(idx_col_high(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]);
+ }
+
+ template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const
+ {
+ return saturate_cast<D>(src(idx_row(y), idx_col(x)));
+ }
+
+ const int last_row;
+ const int last_col;
+ };
+
+ //////////////////////////////////////////////////////////////
+ // BrdReflect
+
+ template <typename D> struct BrdRowReflect
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdRowReflect(int width) : last_col(width - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdRowReflect(int width, U) : last_col(width - 1) {}
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return (::abs(x) - (x < 0)) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return ::abs(last_col - ::abs(last_col - x) + (x > last_col)) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_high(::abs(x) - (x < 0));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_low(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_high(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col(x)]);
+ }
+
+ const int last_col;
+ };
+
+ template <typename D> struct BrdColReflect
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdColReflect(int height) : last_row(height - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdColReflect(int height, U) : last_row(height - 1) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return (::abs(y) - (y < 0)) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return ::abs(last_row - ::abs(last_row - y) + (y > last_row)) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_high(::abs(y) - (y < 0));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row_low(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row_high(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row(y) * step));
+ }
+
+ const int last_row;
+ };
+
+ template <typename D> struct BrdReflect
+ {
+ typedef D result_type;
+
+ __host__ __device__ __forceinline__ BrdReflect(int height, int width) : last_row(height - 1), last_col(width - 1) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdReflect(int height, int width, U) : last_row(height - 1), last_col(width - 1) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return (::abs(y) - (y < 0)) % (last_row + 1);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return /*::abs*/(last_row - ::abs(last_row - y) + (y > last_row)) /*% (last_row + 1)*/;
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_low(idx_row_high(y));
+ }
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return (::abs(x) - (x < 0)) % (last_col + 1);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return (last_col - ::abs(last_col - x) + (x > last_col));
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_low(idx_col_high(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]);
+ }
+
+ template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const
+ {
+ return saturate_cast<D>(src(idx_row(y), idx_col(x)));
+ }
+
+ const int last_row;
+ const int last_col;
+ };
+
+ //////////////////////////////////////////////////////////////
+ // BrdWrap
+
+ template <typename D> struct BrdRowWrap
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdRowWrap(int width_) : width(width_) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdRowWrap(int width_, U) : width(width_) {}
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return (x >= 0) * x + (x < 0) * (x - ((x - width + 1) / width) * width);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return (x < width) * x + (x >= width) * (x % width);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_high(idx_col_low(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_low(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col_high(x)]);
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int x, const T* data) const
+ {
+ return saturate_cast<D>(data[idx_col(x)]);
+ }
+
+ const int width;
+ };
+
+ template <typename D> struct BrdColWrap
+ {
+ typedef D result_type;
+
+ explicit __host__ __device__ __forceinline__ BrdColWrap(int height_) : height(height_) {}
+ template <typename U> __host__ __device__ __forceinline__ BrdColWrap(int height_, U) : height(height_) {}
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return (y >= 0) * y + (y < 0) * (y - ((y - height + 1) / height) * height);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return (y < height) * y + (y >= height) * (y % height);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_high(idx_row_low(y));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row_low(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row_high(y) * step));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(*(const D*)((const char*)data + idx_row(y) * step));
+ }
+
+ const int height;
+ };
+
+ template <typename D> struct BrdWrap
+ {
+ typedef D result_type;
+
+ __host__ __device__ __forceinline__ BrdWrap(int height_, int width_) :
+ height(height_), width(width_)
+ {
+ }
+ template <typename U>
+ __host__ __device__ __forceinline__ BrdWrap(int height_, int width_, U) :
+ height(height_), width(width_)
+ {
+ }
+
+ __device__ __forceinline__ int idx_row_low(int y) const
+ {
+ return (y >= 0) ? y : (y - ((y - height + 1) / height) * height);
+ }
+
+ __device__ __forceinline__ int idx_row_high(int y) const
+ {
+ return (y < height) ? y : (y % height);
+ }
+
+ __device__ __forceinline__ int idx_row(int y) const
+ {
+ return idx_row_high(idx_row_low(y));
+ }
+
+ __device__ __forceinline__ int idx_col_low(int x) const
+ {
+ return (x >= 0) ? x : (x - ((x - width + 1) / width) * width);
+ }
+
+ __device__ __forceinline__ int idx_col_high(int x) const
+ {
+ return (x < width) ? x : (x % width);
+ }
+
+ __device__ __forceinline__ int idx_col(int x) const
+ {
+ return idx_col_high(idx_col_low(x));
+ }
+
+ template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const
+ {
+ return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]);
+ }
+
+ template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const
+ {
+ return saturate_cast<D>(src(idx_row(y), idx_col(x)));
+ }
+
+ const int height;
+ const int width;
+ };
+
+ //////////////////////////////////////////////////////////////
+ // BorderReader
+
+ template <typename Ptr2D, typename B> struct BorderReader
+ {
+ typedef typename B::result_type elem_type;
+ typedef typename Ptr2D::index_type index_type;
+
+ __host__ __device__ __forceinline__ BorderReader(const Ptr2D& ptr_, const B& b_) : ptr(ptr_), b(b_) {}
+
+ __device__ __forceinline__ elem_type operator ()(index_type y, index_type x) const
+ {
+ return b.at(y, x, ptr);
+ }
+
+ const Ptr2D ptr;
+ const B b;
+ };
+
+ // under win32 there is some bug with templated types that passed as kernel parameters
+ // with this specialization all works fine
+ template <typename Ptr2D, typename D> struct BorderReader< Ptr2D, BrdConstant<D> >
+ {
+ typedef typename BrdConstant<D>::result_type elem_type;
+ typedef typename Ptr2D::index_type index_type;
+
+ __host__ __device__ __forceinline__ BorderReader(const Ptr2D& src_, const BrdConstant<D>& b) :
+ src(src_), height(b.height), width(b.width), val(b.val)
+ {
+ }
+
+ __device__ __forceinline__ D operator ()(index_type y, index_type x) const
+ {
+ return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast<D>(src(y, x)) : val;
+ }
+
+ const Ptr2D src;
+ const int height;
+ const int width;
+ const D val;
+ };
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_BORDER_INTERPOLATE_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/color.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/color.hpp
new file mode 100644
index 00000000..5af64bf6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/color.hpp
@@ -0,0 +1,301 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_COLOR_HPP__
+#define __OPENCV_GPU_COLOR_HPP__
+
+#include "detail/color_detail.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ // All OPENCV_GPU_IMPLEMENT_*_TRAITS(ColorSpace1_to_ColorSpace2, ...) macros implements
+ // template <typename T> class ColorSpace1_to_ColorSpace2_traits
+ // {
+ // typedef ... functor_type;
+ // static __host__ __device__ functor_type create_functor();
+ // };
+
+ OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_rgb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_bgra, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_rgba, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_bgr, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_rgb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_rgba, 4, 4, 2)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(bgr_to_bgr555, 3, 0, 5)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(bgr_to_bgr565, 3, 0, 6)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(rgb_to_bgr555, 3, 2, 5)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(rgb_to_bgr565, 3, 2, 6)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(bgra_to_bgr555, 4, 0, 5)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(bgra_to_bgr565, 4, 0, 6)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(rgba_to_bgr555, 4, 2, 5)
+ OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(rgba_to_bgr565, 4, 2, 6)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_rgb, 3, 2, 5)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_rgb, 3, 2, 6)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_bgr, 3, 0, 5)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_bgr, 3, 0, 6)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_rgba, 4, 2, 5)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_rgba, 4, 2, 6)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_bgra, 4, 0, 5)
+ OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_bgra, 4, 0, 6)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_GRAY2RGB_TRAITS(gray_to_bgr, 3)
+ OPENCV_GPU_IMPLEMENT_GRAY2RGB_TRAITS(gray_to_bgra, 4)
+
+ #undef OPENCV_GPU_IMPLEMENT_GRAY2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_GRAY2RGB5x5_TRAITS(gray_to_bgr555, 5)
+ OPENCV_GPU_IMPLEMENT_GRAY2RGB5x5_TRAITS(gray_to_bgr565, 6)
+
+ #undef OPENCV_GPU_IMPLEMENT_GRAY2RGB5x5_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB5x52GRAY_TRAITS(bgr555_to_gray, 5)
+ OPENCV_GPU_IMPLEMENT_RGB5x52GRAY_TRAITS(bgr565_to_gray, 6)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB5x52GRAY_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2GRAY_TRAITS(rgb_to_gray, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2GRAY_TRAITS(bgr_to_gray, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2GRAY_TRAITS(rgba_to_gray, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2GRAY_TRAITS(bgra_to_gray, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2GRAY_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(rgb_to_yuv, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(rgba_to_yuv, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(rgb_to_yuv4, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(rgba_to_yuv4, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(bgr_to_yuv, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(bgra_to_yuv, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(bgr_to_yuv4, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(bgra_to_yuv4, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_rgb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_rgba, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_rgb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_rgba, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_bgr, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_bgra, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_bgr, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_bgra, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(rgb_to_YCrCb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(rgba_to_YCrCb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(rgb_to_YCrCb4, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(rgba_to_YCrCb4, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(bgr_to_YCrCb, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(bgra_to_YCrCb, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(bgr_to_YCrCb4, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(bgra_to_YCrCb4, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_rgb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_rgba, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_rgb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_rgba, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_bgr, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_bgra, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_bgr, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_bgra, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(rgb_to_xyz, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(rgba_to_xyz, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(rgb_to_xyz4, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(rgba_to_xyz4, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(bgr_to_xyz, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(bgra_to_xyz, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(bgr_to_xyz4, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(bgra_to_xyz4, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_rgb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_rgb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_rgba, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_rgba, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_bgr, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_bgr, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_bgra, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_bgra, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(rgb_to_hsv, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(rgba_to_hsv, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(rgb_to_hsv4, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(rgba_to_hsv4, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(bgr_to_hsv, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(bgra_to_hsv, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(bgr_to_hsv4, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(bgra_to_hsv4, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_rgb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_rgba, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_rgb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_rgba, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_bgr, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_bgra, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_bgr, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_bgra, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(rgb_to_hls, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(rgba_to_hls, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(rgb_to_hls4, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(rgba_to_hls4, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(bgr_to_hls, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(bgra_to_hls, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(bgr_to_hls4, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(bgra_to_hls4, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls_to_rgb, 3, 3, 2)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls_to_rgba, 3, 4, 2)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_rgb, 4, 3, 2)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_rgba, 4, 4, 2)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls_to_bgr, 3, 3, 0)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls_to_bgra, 3, 4, 0)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_bgr, 4, 3, 0)
+ OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_bgra, 4, 4, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(rgb_to_lab, 3, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(rgba_to_lab, 4, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(rgb_to_lab4, 3, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(rgba_to_lab4, 4, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(bgr_to_lab, 3, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(bgra_to_lab, 4, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(bgr_to_lab4, 3, 4, true, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(bgra_to_lab4, 4, 4, true, 0)
+
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lrgb_to_lab, 3, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lrgba_to_lab, 4, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lrgb_to_lab4, 3, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lrgba_to_lab4, 4, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lbgr_to_lab, 3, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lbgra_to_lab, 4, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lbgr_to_lab4, 3, 4, false, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(lbgra_to_lab4, 4, 4, false, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_rgb, 3, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_rgb, 4, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_rgba, 3, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_rgba, 4, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_bgr, 3, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_bgr, 4, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_bgra, 3, 4, true, 0)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_bgra, 4, 4, true, 0)
+
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lrgb, 3, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lrgb, 4, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lrgba, 3, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lrgba, 4, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lbgr, 3, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lbgr, 4, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lbgra, 3, 4, false, 0)
+ OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lbgra, 4, 4, false, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(rgb_to_luv, 3, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(rgba_to_luv, 4, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(rgb_to_luv4, 3, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(rgba_to_luv4, 4, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(bgr_to_luv, 3, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(bgra_to_luv, 4, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(bgr_to_luv4, 3, 4, true, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(bgra_to_luv4, 4, 4, true, 0)
+
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lrgb_to_luv, 3, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lrgba_to_luv, 4, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lrgb_to_luv4, 3, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lrgba_to_luv4, 4, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lbgr_to_luv, 3, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lbgra_to_luv, 4, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lbgr_to_luv4, 3, 4, false, 0)
+ OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(lbgra_to_luv4, 4, 4, false, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS
+
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_rgb, 3, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_rgb, 4, 3, true, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_rgba, 3, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_rgba, 4, 4, true, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_bgr, 3, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_bgr, 4, 3, true, 0)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_bgra, 3, 4, true, 0)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_bgra, 4, 4, true, 0)
+
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lrgb, 3, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lrgb, 4, 3, false, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lrgba, 3, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lrgba, 4, 4, false, 2)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lbgr, 3, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lbgr, 4, 3, false, 0)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lbgra, 3, 4, false, 0)
+ OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lbgra, 4, 4, false, 0)
+
+ #undef OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_BORDER_INTERPOLATE_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/common.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/common.hpp
new file mode 100644
index 00000000..26a349ff
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/common.hpp
@@ -0,0 +1,118 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_COMMON_HPP__
+#define __OPENCV_GPU_COMMON_HPP__
+
+#include <cuda_runtime.h>
+#include "opencv2/core/cuda_devptrs.hpp"
+
+#ifndef CV_PI
+ #define CV_PI 3.1415926535897932384626433832795
+#endif
+
+#ifndef CV_PI_F
+ #ifndef CV_PI
+ #define CV_PI_F 3.14159265f
+ #else
+ #define CV_PI_F ((float)CV_PI)
+ #endif
+#endif
+
+#if defined(__GNUC__)
+ #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__, __func__)
+#else /* defined(__CUDACC__) || defined(__MSVC__) */
+ #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__)
+#endif
+
+namespace cv { namespace gpu
+{
+ void error(const char *error_string, const char *file, const int line, const char *func);
+
+ template <typename T> static inline bool isAligned(const T* ptr, size_t size)
+ {
+ return reinterpret_cast<size_t>(ptr) % size == 0;
+ }
+
+ static inline bool isAligned(size_t step, size_t size)
+ {
+ return step % size == 0;
+ }
+}}
+
+static inline void ___cudaSafeCall(cudaError_t err, const char *file, const int line, const char *func = "")
+{
+ if (cudaSuccess != err)
+ cv::gpu::error(cudaGetErrorString(err), file, line, func);
+}
+
+namespace cv { namespace gpu
+{
+ __host__ __device__ __forceinline__ int divUp(int total, int grain)
+ {
+ return (total + grain - 1) / grain;
+ }
+
+ namespace device
+ {
+ using cv::gpu::divUp;
+
+#ifdef __CUDACC__
+ typedef unsigned char uchar;
+ typedef unsigned short ushort;
+ typedef signed char schar;
+ #if defined (_WIN32) || defined (__APPLE__) || defined (__QNX__)
+ typedef unsigned int uint;
+ #endif
+
+ template<class T> inline void bindTexture(const textureReference* tex, const PtrStepSz<T>& img)
+ {
+ cudaChannelFormatDesc desc = cudaCreateChannelDesc<T>();
+ cudaSafeCall( cudaBindTexture2D(0, tex, img.ptr(), &desc, img.cols, img.rows, img.step) );
+ }
+#endif // __CUDACC__
+ }
+}}
+
+
+
+#endif // __OPENCV_GPU_COMMON_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/datamov_utils.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/datamov_utils.hpp
new file mode 100644
index 00000000..a3f62fba
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/datamov_utils.hpp
@@ -0,0 +1,105 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_DATAMOV_UTILS_HPP__
+#define __OPENCV_GPU_DATAMOV_UTILS_HPP__
+
+#include "common.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 200
+
+ // for Fermi memory space is detected automatically
+ template <typename T> struct ForceGlob
+ {
+ __device__ __forceinline__ static void Load(const T* ptr, int offset, T& val) { val = ptr[offset]; }
+ };
+
+ #else // __CUDA_ARCH__ >= 200
+
+ #if defined(_WIN64) || defined(__LP64__)
+ // 64-bit register modifier for inlined asm
+ #define OPENCV_GPU_ASM_PTR "l"
+ #else
+ // 32-bit register modifier for inlined asm
+ #define OPENCV_GPU_ASM_PTR "r"
+ #endif
+
+ template<class T> struct ForceGlob;
+
+ #define OPENCV_GPU_DEFINE_FORCE_GLOB(base_type, ptx_type, reg_mod) \
+ template <> struct ForceGlob<base_type> \
+ { \
+ __device__ __forceinline__ static void Load(const base_type* ptr, int offset, base_type& val) \
+ { \
+ asm("ld.global."#ptx_type" %0, [%1];" : "="#reg_mod(val) : OPENCV_GPU_ASM_PTR(ptr + offset)); \
+ } \
+ };
+
+ #define OPENCV_GPU_DEFINE_FORCE_GLOB_B(base_type, ptx_type) \
+ template <> struct ForceGlob<base_type> \
+ { \
+ __device__ __forceinline__ static void Load(const base_type* ptr, int offset, base_type& val) \
+ { \
+ asm("ld.global."#ptx_type" %0, [%1];" : "=r"(*reinterpret_cast<uint*>(&val)) : OPENCV_GPU_ASM_PTR(ptr + offset)); \
+ } \
+ };
+
+ OPENCV_GPU_DEFINE_FORCE_GLOB_B(uchar, u8)
+ OPENCV_GPU_DEFINE_FORCE_GLOB_B(schar, s8)
+ OPENCV_GPU_DEFINE_FORCE_GLOB_B(char, b8)
+ OPENCV_GPU_DEFINE_FORCE_GLOB (ushort, u16, h)
+ OPENCV_GPU_DEFINE_FORCE_GLOB (short, s16, h)
+ OPENCV_GPU_DEFINE_FORCE_GLOB (uint, u32, r)
+ OPENCV_GPU_DEFINE_FORCE_GLOB (int, s32, r)
+ OPENCV_GPU_DEFINE_FORCE_GLOB (float, f32, f)
+ OPENCV_GPU_DEFINE_FORCE_GLOB (double, f64, d)
+
+ #undef OPENCV_GPU_DEFINE_FORCE_GLOB
+ #undef OPENCV_GPU_DEFINE_FORCE_GLOB_B
+ #undef OPENCV_GPU_ASM_PTR
+
+ #endif // __CUDA_ARCH__ >= 200
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_DATAMOV_UTILS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/color_detail.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/color_detail.hpp
new file mode 100644
index 00000000..c4ec64b5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/color_detail.hpp
@@ -0,0 +1,2219 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_COLOR_DETAIL_HPP__
+#define __OPENCV_GPU_COLOR_DETAIL_HPP__
+
+#include "../common.hpp"
+#include "../vec_traits.hpp"
+#include "../saturate_cast.hpp"
+#include "../limits.hpp"
+#include "../functional.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ #ifndef CV_DESCALE
+ #define CV_DESCALE(x, n) (((x) + (1 << ((n)-1))) >> (n))
+ #endif
+
+ namespace color_detail
+ {
+ template<typename T> struct ColorChannel
+ {
+ typedef float worktype_f;
+ static __device__ __forceinline__ T max() { return numeric_limits<T>::max(); }
+ static __device__ __forceinline__ T half() { return (T)(max()/2 + 1); }
+ };
+
+ template<> struct ColorChannel<float>
+ {
+ typedef float worktype_f;
+ static __device__ __forceinline__ float max() { return 1.f; }
+ static __device__ __forceinline__ float half() { return 0.5f; }
+ };
+
+ template <typename T> static __device__ __forceinline__ void setAlpha(typename TypeVec<T, 3>::vec_type& vec, T val)
+ {
+ }
+
+ template <typename T> static __device__ __forceinline__ void setAlpha(typename TypeVec<T, 4>::vec_type& vec, T val)
+ {
+ vec.w = val;
+ }
+
+ template <typename T> static __device__ __forceinline__ T getAlpha(const typename TypeVec<T, 3>::vec_type& vec)
+ {
+ return ColorChannel<T>::max();
+ }
+
+ template <typename T> static __device__ __forceinline__ T getAlpha(const typename TypeVec<T, 4>::vec_type& vec)
+ {
+ return vec.w;
+ }
+
+ enum
+ {
+ yuv_shift = 14,
+ xyz_shift = 12,
+ R2Y = 4899,
+ G2Y = 9617,
+ B2Y = 1868,
+ BLOCK_SIZE = 256
+ };
+ }
+
+////////////////// Various 3/4-channel to 3/4-channel RGB transformations /////////////////
+
+ namespace color_detail
+ {
+ template <typename T, int scn, int dcn, int bidx> struct RGB2RGB
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ dst.x = bidx == 0 ? src.x : src.z;
+ dst.y = src.y;
+ dst.z = bidx == 0 ? src.z : src.x;
+ setAlpha(dst, getAlpha<T>(src));
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2RGB() {}
+ __host__ __device__ __forceinline__ RGB2RGB(const RGB2RGB&) {}
+ };
+
+ template <> struct RGB2RGB<uchar, 4, 4, 2> : unary_function<uint, uint>
+ {
+ __device__ uint operator()(uint src) const
+ {
+ uint dst = 0;
+
+ dst |= (0xffu & (src >> 16));
+ dst |= (0xffu & (src >> 8)) << 8;
+ dst |= (0xffu & (src)) << 16;
+ dst |= (0xffu & (src >> 24)) << 24;
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2RGB() {}
+ __host__ __device__ __forceinline__ RGB2RGB(const RGB2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2RGB_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2RGB<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+/////////// Transforming 16-bit (565 or 555) RGB to/from 24/32-bit (888[8]) RGB //////////
+
+ namespace color_detail
+ {
+ template <int green_bits, int bidx> struct RGB2RGB5x5Converter;
+
+ template<int bidx> struct RGB2RGB5x5Converter<6, bidx>
+ {
+ template <typename T>
+ static __device__ __forceinline__ ushort cvt(const T& src)
+ {
+ uint b = bidx == 0 ? src.x : src.z;
+ uint g = src.y;
+ uint r = bidx == 0 ? src.z : src.x;
+ return (ushort)((b >> 3) | ((g & ~3) << 3) | ((r & ~7) << 8));
+ }
+ };
+
+ template<int bidx> struct RGB2RGB5x5Converter<5, bidx>
+ {
+ static __device__ __forceinline__ ushort cvt(const uchar3& src)
+ {
+ uint b = bidx == 0 ? src.x : src.z;
+ uint g = src.y;
+ uint r = bidx == 0 ? src.z : src.x;
+ return (ushort)((b >> 3) | ((g & ~7) << 2) | ((r & ~7) << 7));
+ }
+
+ static __device__ __forceinline__ ushort cvt(const uchar4& src)
+ {
+ uint b = bidx == 0 ? src.x : src.z;
+ uint g = src.y;
+ uint r = bidx == 0 ? src.z : src.x;
+ uint a = src.w;
+ return (ushort)((b >> 3) | ((g & ~7) << 2) | ((r & ~7) << 7) | (a * 0x8000));
+ }
+ };
+
+ template<int scn, int bidx, int green_bits> struct RGB2RGB5x5:
+ unary_function<typename TypeVec<uchar, scn>::vec_type, ushort>
+ {
+ __device__ __forceinline__ ushort operator()(const typename TypeVec<uchar, scn>::vec_type& src) const
+ {
+ return RGB2RGB5x5Converter<green_bits, bidx>::cvt(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2RGB5x5() {}
+ __host__ __device__ __forceinline__ RGB2RGB5x5(const RGB2RGB5x5&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2RGB5x5_TRAITS(name, scn, bidx, green_bits) \
+ struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2RGB5x5<scn, bidx, green_bits> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ template <int green_bits, int bidx> struct RGB5x52RGBConverter;
+
+ template <int bidx> struct RGB5x52RGBConverter<5, bidx>
+ {
+ static __device__ __forceinline__ void cvt(uint src, uchar3& dst)
+ {
+ (bidx == 0 ? dst.x : dst.z) = src << 3;
+ dst.y = (src >> 2) & ~7;
+ (bidx == 0 ? dst.z : dst.x) = (src >> 7) & ~7;
+ }
+
+ static __device__ __forceinline__ void cvt(uint src, uint& dst)
+ {
+ dst = 0;
+
+ dst |= (0xffu & (src << 3)) << (bidx * 8);
+ dst |= (0xffu & ((src >> 2) & ~7)) << 8;
+ dst |= (0xffu & ((src >> 7) & ~7)) << ((bidx ^ 2) * 8);
+ dst |= ((src & 0x8000) * 0xffu) << 24;
+ }
+ };
+
+ template <int bidx> struct RGB5x52RGBConverter<6, bidx>
+ {
+ static __device__ __forceinline__ void cvt(uint src, uchar3& dst)
+ {
+ (bidx == 0 ? dst.x : dst.z) = src << 3;
+ dst.y = (src >> 3) & ~3;
+ (bidx == 0 ? dst.z : dst.x) = (src >> 8) & ~7;
+ }
+
+ static __device__ __forceinline__ void cvt(uint src, uint& dst)
+ {
+ dst = 0xffu << 24;
+
+ dst |= (0xffu & (src << 3)) << (bidx * 8);
+ dst |= (0xffu &((src >> 3) & ~3)) << 8;
+ dst |= (0xffu & ((src >> 8) & ~7)) << ((bidx ^ 2) * 8);
+ }
+ };
+
+ template <int dcn, int bidx, int green_bits> struct RGB5x52RGB;
+
+ template <int bidx, int green_bits> struct RGB5x52RGB<3, bidx, green_bits> : unary_function<ushort, uchar3>
+ {
+ __device__ __forceinline__ uchar3 operator()(ushort src) const
+ {
+ uchar3 dst;
+ RGB5x52RGBConverter<green_bits, bidx>::cvt(src, dst);
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB5x52RGB() {}
+ __host__ __device__ __forceinline__ RGB5x52RGB(const RGB5x52RGB&) {}
+ };
+
+ template <int bidx, int green_bits> struct RGB5x52RGB<4, bidx, green_bits> : unary_function<ushort, uint>
+ {
+ __device__ __forceinline__ uint operator()(ushort src) const
+ {
+ uint dst;
+ RGB5x52RGBConverter<green_bits, bidx>::cvt(src, dst);
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB5x52RGB() {}
+ __host__ __device__ __forceinline__ RGB5x52RGB(const RGB5x52RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB5x52RGB_TRAITS(name, dcn, bidx, green_bits) \
+ struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB5x52RGB<dcn, bidx, green_bits> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+///////////////////////////////// Grayscale to Color ////////////////////////////////
+
+ namespace color_detail
+ {
+ template <typename T, int dcn> struct Gray2RGB : unary_function<T, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(T src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ dst.z = dst.y = dst.x = src;
+ setAlpha(dst, ColorChannel<T>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ Gray2RGB() {}
+ __host__ __device__ __forceinline__ Gray2RGB(const Gray2RGB&) {}
+ };
+
+ template <> struct Gray2RGB<uchar, 4> : unary_function<uchar, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ uint dst = 0xffu << 24;
+
+ dst |= src;
+ dst |= src << 8;
+ dst |= src << 16;
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ Gray2RGB() {}
+ __host__ __device__ __forceinline__ Gray2RGB(const Gray2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_GRAY2RGB_TRAITS(name, dcn) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::Gray2RGB<T, dcn> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ template <int green_bits> struct Gray2RGB5x5Converter;
+
+ template<> struct Gray2RGB5x5Converter<6>
+ {
+ static __device__ __forceinline__ ushort cvt(uint t)
+ {
+ return (ushort)((t >> 3) | ((t & ~3) << 3) | ((t & ~7) << 8));
+ }
+ };
+
+ template<> struct Gray2RGB5x5Converter<5>
+ {
+ static __device__ __forceinline__ ushort cvt(uint t)
+ {
+ t >>= 3;
+ return (ushort)(t | (t << 5) | (t << 10));
+ }
+ };
+
+ template<int green_bits> struct Gray2RGB5x5 : unary_function<uchar, ushort>
+ {
+ __device__ __forceinline__ ushort operator()(uint src) const
+ {
+ return Gray2RGB5x5Converter<green_bits>::cvt(src);
+ }
+
+ __host__ __device__ __forceinline__ Gray2RGB5x5() {}
+ __host__ __device__ __forceinline__ Gray2RGB5x5(const Gray2RGB5x5&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_GRAY2RGB5x5_TRAITS(name, green_bits) \
+ struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::Gray2RGB5x5<green_bits> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+///////////////////////////////// Color to Grayscale ////////////////////////////////
+
+ namespace color_detail
+ {
+ template <int green_bits> struct RGB5x52GrayConverter;
+
+ template <> struct RGB5x52GrayConverter<6>
+ {
+ static __device__ __forceinline__ uchar cvt(uint t)
+ {
+ return (uchar)CV_DESCALE(((t << 3) & 0xf8) * B2Y + ((t >> 3) & 0xfc) * G2Y + ((t >> 8) & 0xf8) * R2Y, yuv_shift);
+ }
+ };
+
+ template <> struct RGB5x52GrayConverter<5>
+ {
+ static __device__ __forceinline__ uchar cvt(uint t)
+ {
+ return (uchar)CV_DESCALE(((t << 3) & 0xf8) * B2Y + ((t >> 2) & 0xf8) * G2Y + ((t >> 7) & 0xf8) * R2Y, yuv_shift);
+ }
+ };
+
+ template<int green_bits> struct RGB5x52Gray : unary_function<ushort, uchar>
+ {
+ __device__ __forceinline__ uchar operator()(uint src) const
+ {
+ return RGB5x52GrayConverter<green_bits>::cvt(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB5x52Gray() {}
+ __host__ __device__ __forceinline__ RGB5x52Gray(const RGB5x52Gray&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB5x52GRAY_TRAITS(name, green_bits) \
+ struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB5x52Gray<green_bits> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ template <int bidx, typename T> static __device__ __forceinline__ uint RGB2GrayConvert_8U(const T& src)
+ {
+ uint b = bidx == 0 ? src.x : src.z;
+ uint g = src.y;
+ uint r = bidx == 0 ? src.z : src.x;
+ return CV_DESCALE((uint)(b * B2Y + g * G2Y + r * R2Y), yuv_shift);
+ }
+
+ template <int bidx> static __device__ __forceinline__ uchar RGB2GrayConvert_8UC4(uint src)
+ {
+ uint b = 0xffu & (src >> (bidx * 8));
+ uint g = 0xffu & (src >> 8);
+ uint r = 0xffu & (src >> ((bidx ^ 2) * 8));
+ return CV_DESCALE((uint)(b * B2Y + g * G2Y + r * R2Y), yuv_shift);
+ }
+
+ template <int bidx, typename T> static __device__ __forceinline__ float RGB2GrayConvert_32F(const T& src)
+ {
+ float b = bidx == 0 ? src.x : src.z;
+ float g = src.y;
+ float r = bidx == 0 ? src.z : src.x;
+ return b * 0.114f + g * 0.587f + r * 0.299f;
+ }
+
+ template <typename T, int scn, int bidx> struct RGB2Gray : unary_function<typename TypeVec<T, scn>::vec_type, T>
+ {
+ __device__ __forceinline__ T operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ return RGB2GrayConvert_8U<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2Gray() {}
+ __host__ __device__ __forceinline__ RGB2Gray(const RGB2Gray&) {}
+ };
+
+ template <int scn, int bidx> struct RGB2Gray<float, scn, bidx> :
+ unary_function<typename TypeVec<float, scn>::vec_type, float>
+ {
+ __device__ __forceinline__ float operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ return RGB2GrayConvert_32F<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2Gray() {}
+ __host__ __device__ __forceinline__ RGB2Gray(const RGB2Gray&) {}
+ };
+
+ template <int bidx> struct RGB2Gray<uchar, 4, bidx> : unary_function<uint, uchar>
+ {
+ __device__ __forceinline__ uchar operator()(uint src) const
+ {
+ return RGB2GrayConvert_8UC4<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2Gray() {}
+ __host__ __device__ __forceinline__ RGB2Gray(const RGB2Gray&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2GRAY_TRAITS(name, scn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2Gray<T, scn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+///////////////////////////////////// RGB <-> YUV //////////////////////////////////////
+
+ namespace color_detail
+ {
+ __constant__ float c_RGB2YUVCoeffs_f[5] = { 0.114f, 0.587f, 0.299f, 0.492f, 0.877f };
+ __constant__ int c_RGB2YUVCoeffs_i[5] = { B2Y, G2Y, R2Y, 8061, 14369 };
+
+ template <int bidx, typename T, typename D> static __device__ void RGB2YUVConvert(const T& src, D& dst)
+ {
+ const int delta = ColorChannel<typename VecTraits<T>::elem_type>::half() * (1 << yuv_shift);
+
+ const int b = bidx == 0 ? src.x : src.z;
+ const int g = src.y;
+ const int r = bidx == 0 ? src.z : src.x;
+
+ const int Y = CV_DESCALE(b * c_RGB2YUVCoeffs_i[2] + g * c_RGB2YUVCoeffs_i[1] + r * c_RGB2YUVCoeffs_i[0], yuv_shift);
+ const int Cr = CV_DESCALE((r - Y) * c_RGB2YUVCoeffs_i[3] + delta, yuv_shift);
+ const int Cb = CV_DESCALE((b - Y) * c_RGB2YUVCoeffs_i[4] + delta, yuv_shift);
+
+ dst.x = saturate_cast<typename VecTraits<T>::elem_type>(Y);
+ dst.y = saturate_cast<typename VecTraits<T>::elem_type>(Cr);
+ dst.z = saturate_cast<typename VecTraits<T>::elem_type>(Cb);
+ }
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void RGB2YUVConvert_32F(const T& src, D& dst)
+ {
+ const float b = bidx == 0 ? src.x : src.z;
+ const float g = src.y;
+ const float r = bidx == 0 ? src.z : src.x;
+
+ dst.x = b * c_RGB2YUVCoeffs_f[2] + g * c_RGB2YUVCoeffs_f[1] + r * c_RGB2YUVCoeffs_f[0];
+ dst.y = (r - dst.x) * c_RGB2YUVCoeffs_f[3] + ColorChannel<float>::half();
+ dst.z = (b - dst.x) * c_RGB2YUVCoeffs_f[4] + ColorChannel<float>::half();
+ }
+
+ template <typename T, int scn, int dcn, int bidx> struct RGB2YUV
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator ()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+ RGB2YUVConvert<bidx>(src, dst);
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2YUV() {}
+ __host__ __device__ __forceinline__ RGB2YUV(const RGB2YUV&) {}
+ };
+
+ template <int scn, int dcn, int bidx> struct RGB2YUV<float, scn, dcn, bidx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+ RGB2YUVConvert_32F<bidx>(src, dst);
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2YUV() {}
+ __host__ __device__ __forceinline__ RGB2YUV(const RGB2YUV&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2YUV_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2YUV<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ __constant__ float c_YUV2RGBCoeffs_f[5] = { 2.032f, -0.395f, -0.581f, 1.140f };
+ __constant__ int c_YUV2RGBCoeffs_i[5] = { 33292, -6472, -9519, 18678 };
+
+ template <int bidx, typename T, typename D> static __device__ void YUV2RGBConvert(const T& src, D& dst)
+ {
+ const int b = src.x + CV_DESCALE((src.z - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YUV2RGBCoeffs_i[3], yuv_shift);
+
+ const int g = src.x + CV_DESCALE((src.z - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YUV2RGBCoeffs_i[2]
+ + (src.y - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YUV2RGBCoeffs_i[1], yuv_shift);
+
+ const int r = src.x + CV_DESCALE((src.y - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YUV2RGBCoeffs_i[0], yuv_shift);
+
+ (bidx == 0 ? dst.x : dst.z) = saturate_cast<typename VecTraits<D>::elem_type>(b);
+ dst.y = saturate_cast<typename VecTraits<D>::elem_type>(g);
+ (bidx == 0 ? dst.z : dst.x) = saturate_cast<typename VecTraits<D>::elem_type>(r);
+ }
+
+ template <int bidx> static __device__ uint YUV2RGBConvert_8UC4(uint src)
+ {
+ const int x = 0xff & (src);
+ const int y = 0xff & (src >> 8);
+ const int z = 0xff & (src >> 16);
+
+ const int b = x + CV_DESCALE((z - ColorChannel<uchar>::half()) * c_YUV2RGBCoeffs_i[3], yuv_shift);
+
+ const int g = x + CV_DESCALE((z - ColorChannel<uchar>::half()) * c_YUV2RGBCoeffs_i[2]
+ + (y - ColorChannel<uchar>::half()) * c_YUV2RGBCoeffs_i[1], yuv_shift);
+
+ const int r = x + CV_DESCALE((y - ColorChannel<uchar>::half()) * c_YUV2RGBCoeffs_i[0], yuv_shift);
+
+ uint dst = 0xffu << 24;
+
+ dst |= saturate_cast<uchar>(b) << (bidx * 8);
+ dst |= saturate_cast<uchar>(g) << 8;
+ dst |= saturate_cast<uchar>(r) << ((bidx ^ 2) * 8);
+
+ return dst;
+ }
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void YUV2RGBConvert_32F(const T& src, D& dst)
+ {
+ (bidx == 0 ? dst.x : dst.z) = src.x + (src.z - ColorChannel<float>::half()) * c_YUV2RGBCoeffs_f[3];
+
+ dst.y = src.x + (src.z - ColorChannel<float>::half()) * c_YUV2RGBCoeffs_f[2]
+ + (src.y - ColorChannel<float>::half()) * c_YUV2RGBCoeffs_f[1];
+
+ (bidx == 0 ? dst.z : dst.x) = src.x + (src.y - ColorChannel<float>::half()) * c_YUV2RGBCoeffs_f[0];
+ }
+
+ template <typename T, int scn, int dcn, int bidx> struct YUV2RGB
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator ()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ YUV2RGBConvert<bidx>(src, dst);
+ setAlpha(dst, ColorChannel<T>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ YUV2RGB() {}
+ __host__ __device__ __forceinline__ YUV2RGB(const YUV2RGB&) {}
+ };
+
+ template <int scn, int dcn, int bidx> struct YUV2RGB<float, scn, dcn, bidx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ YUV2RGBConvert_32F<bidx>(src, dst);
+ setAlpha(dst, ColorChannel<float>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ YUV2RGB() {}
+ __host__ __device__ __forceinline__ YUV2RGB(const YUV2RGB&) {}
+ };
+
+ template <int bidx> struct YUV2RGB<uchar, 4, 4, bidx> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator ()(uint src) const
+ {
+ return YUV2RGBConvert_8UC4<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ YUV2RGB() {}
+ __host__ __device__ __forceinline__ YUV2RGB(const YUV2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_YUV2RGB_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::YUV2RGB<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+///////////////////////////////////// RGB <-> YCrCb //////////////////////////////////////
+
+ namespace color_detail
+ {
+ __constant__ float c_RGB2YCrCbCoeffs_f[5] = {0.299f, 0.587f, 0.114f, 0.713f, 0.564f};
+ __constant__ int c_RGB2YCrCbCoeffs_i[5] = {R2Y, G2Y, B2Y, 11682, 9241};
+
+ template <int bidx, typename T, typename D> static __device__ void RGB2YCrCbConvert(const T& src, D& dst)
+ {
+ const int delta = ColorChannel<typename VecTraits<T>::elem_type>::half() * (1 << yuv_shift);
+
+ const int b = bidx == 0 ? src.x : src.z;
+ const int g = src.y;
+ const int r = bidx == 0 ? src.z : src.x;
+
+ const int Y = CV_DESCALE(b * c_RGB2YCrCbCoeffs_i[2] + g * c_RGB2YCrCbCoeffs_i[1] + r * c_RGB2YCrCbCoeffs_i[0], yuv_shift);
+ const int Cr = CV_DESCALE((r - Y) * c_RGB2YCrCbCoeffs_i[3] + delta, yuv_shift);
+ const int Cb = CV_DESCALE((b - Y) * c_RGB2YCrCbCoeffs_i[4] + delta, yuv_shift);
+
+ dst.x = saturate_cast<typename VecTraits<T>::elem_type>(Y);
+ dst.y = saturate_cast<typename VecTraits<T>::elem_type>(Cr);
+ dst.z = saturate_cast<typename VecTraits<T>::elem_type>(Cb);
+ }
+
+ template <int bidx> static __device__ uint RGB2YCrCbConvert_8UC4(uint src)
+ {
+ const int delta = ColorChannel<uchar>::half() * (1 << yuv_shift);
+
+ const int Y = CV_DESCALE((0xffu & src) * c_RGB2YCrCbCoeffs_i[bidx^2] + (0xffu & (src >> 8)) * c_RGB2YCrCbCoeffs_i[1] + (0xffu & (src >> 16)) * c_RGB2YCrCbCoeffs_i[bidx], yuv_shift);
+ const int Cr = CV_DESCALE(((0xffu & (src >> ((bidx ^ 2) * 8))) - Y) * c_RGB2YCrCbCoeffs_i[3] + delta, yuv_shift);
+ const int Cb = CV_DESCALE(((0xffu & (src >> (bidx * 8))) - Y) * c_RGB2YCrCbCoeffs_i[4] + delta, yuv_shift);
+
+ uint dst = 0;
+
+ dst |= saturate_cast<uchar>(Y);
+ dst |= saturate_cast<uchar>(Cr) << 8;
+ dst |= saturate_cast<uchar>(Cb) << 16;
+
+ return dst;
+ }
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void RGB2YCrCbConvert_32F(const T& src, D& dst)
+ {
+ const float b = bidx == 0 ? src.x : src.z;
+ const float g = src.y;
+ const float r = bidx == 0 ? src.z : src.x;
+
+ dst.x = b * c_RGB2YCrCbCoeffs_f[2] + g * c_RGB2YCrCbCoeffs_f[1] + r * c_RGB2YCrCbCoeffs_f[0];
+ dst.y = (r - dst.x) * c_RGB2YCrCbCoeffs_f[3] + ColorChannel<float>::half();
+ dst.z = (b - dst.x) * c_RGB2YCrCbCoeffs_f[4] + ColorChannel<float>::half();
+ }
+
+ template <typename T, int scn, int dcn, int bidx> struct RGB2YCrCb
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator ()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+ RGB2YCrCbConvert<bidx>(src, dst);
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2YCrCb() {}
+ __host__ __device__ __forceinline__ RGB2YCrCb(const RGB2YCrCb&) {}
+ };
+
+ template <int scn, int dcn, int bidx> struct RGB2YCrCb<float, scn, dcn, bidx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+ RGB2YCrCbConvert_32F<bidx>(src, dst);
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2YCrCb() {}
+ __host__ __device__ __forceinline__ RGB2YCrCb(const RGB2YCrCb&) {}
+ };
+
+ template <int bidx> struct RGB2YCrCb<uchar, 4, 4, bidx> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator ()(uint src) const
+ {
+ return RGB2YCrCbConvert_8UC4<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2YCrCb() {}
+ __host__ __device__ __forceinline__ RGB2YCrCb(const RGB2YCrCb&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2YCrCb_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2YCrCb<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ __constant__ float c_YCrCb2RGBCoeffs_f[5] = {1.403f, -0.714f, -0.344f, 1.773f};
+ __constant__ int c_YCrCb2RGBCoeffs_i[5] = {22987, -11698, -5636, 29049};
+
+ template <int bidx, typename T, typename D> static __device__ void YCrCb2RGBConvert(const T& src, D& dst)
+ {
+ const int b = src.x + CV_DESCALE((src.z - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YCrCb2RGBCoeffs_i[3], yuv_shift);
+ const int g = src.x + CV_DESCALE((src.z - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YCrCb2RGBCoeffs_i[2] +
+ (src.y - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YCrCb2RGBCoeffs_i[1], yuv_shift);
+ const int r = src.x + CV_DESCALE((src.y - ColorChannel<typename VecTraits<D>::elem_type>::half()) * c_YCrCb2RGBCoeffs_i[0], yuv_shift);
+
+ (bidx == 0 ? dst.x : dst.z) = saturate_cast<typename VecTraits<D>::elem_type>(b);
+ dst.y = saturate_cast<typename VecTraits<D>::elem_type>(g);
+ (bidx == 0 ? dst.z : dst.x) = saturate_cast<typename VecTraits<D>::elem_type>(r);
+ }
+
+ template <int bidx> static __device__ uint YCrCb2RGBConvert_8UC4(uint src)
+ {
+ const int x = 0xff & (src);
+ const int y = 0xff & (src >> 8);
+ const int z = 0xff & (src >> 16);
+
+ const int b = x + CV_DESCALE((z - ColorChannel<uchar>::half()) * c_YCrCb2RGBCoeffs_i[3], yuv_shift);
+ const int g = x + CV_DESCALE((z - ColorChannel<uchar>::half()) * c_YCrCb2RGBCoeffs_i[2] + (y - ColorChannel<uchar>::half()) * c_YCrCb2RGBCoeffs_i[1], yuv_shift);
+ const int r = x + CV_DESCALE((y - ColorChannel<uchar>::half()) * c_YCrCb2RGBCoeffs_i[0], yuv_shift);
+
+ uint dst = 0xffu << 24;
+
+ dst |= saturate_cast<uchar>(b) << (bidx * 8);
+ dst |= saturate_cast<uchar>(g) << 8;
+ dst |= saturate_cast<uchar>(r) << ((bidx ^ 2) * 8);
+
+ return dst;
+ }
+
+ template <int bidx, typename T, typename D> __device__ __forceinline__ void YCrCb2RGBConvert_32F(const T& src, D& dst)
+ {
+ (bidx == 0 ? dst.x : dst.z) = src.x + (src.z - ColorChannel<float>::half()) * c_YCrCb2RGBCoeffs_f[3];
+ dst.y = src.x + (src.z - ColorChannel<float>::half()) * c_YCrCb2RGBCoeffs_f[2] + (src.y - ColorChannel<float>::half()) * c_YCrCb2RGBCoeffs_f[1];
+ (bidx == 0 ? dst.z : dst.x) = src.x + (src.y - ColorChannel<float>::half()) * c_YCrCb2RGBCoeffs_f[0];
+ }
+
+ template <typename T, int scn, int dcn, int bidx> struct YCrCb2RGB
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator ()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ YCrCb2RGBConvert<bidx>(src, dst);
+ setAlpha(dst, ColorChannel<T>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ YCrCb2RGB() {}
+ __host__ __device__ __forceinline__ YCrCb2RGB(const YCrCb2RGB&) {}
+ };
+
+ template <int scn, int dcn, int bidx> struct YCrCb2RGB<float, scn, dcn, bidx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ YCrCb2RGBConvert_32F<bidx>(src, dst);
+ setAlpha(dst, ColorChannel<float>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ YCrCb2RGB() {}
+ __host__ __device__ __forceinline__ YCrCb2RGB(const YCrCb2RGB&) {}
+ };
+
+ template <int bidx> struct YCrCb2RGB<uchar, 4, 4, bidx> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator ()(uint src) const
+ {
+ return YCrCb2RGBConvert_8UC4<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ YCrCb2RGB() {}
+ __host__ __device__ __forceinline__ YCrCb2RGB(const YCrCb2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_YCrCb2RGB_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::YCrCb2RGB<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+////////////////////////////////////// RGB <-> XYZ ///////////////////////////////////////
+
+ namespace color_detail
+ {
+ __constant__ float c_RGB2XYZ_D65f[9] = { 0.412453f, 0.357580f, 0.180423f, 0.212671f, 0.715160f, 0.072169f, 0.019334f, 0.119193f, 0.950227f };
+ __constant__ int c_RGB2XYZ_D65i[9] = { 1689, 1465, 739, 871, 2929, 296, 79, 488, 3892 };
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void RGB2XYZConvert_8U(const T& src, D& dst)
+ {
+ const uint b = bidx == 0 ? src.x : src.z;
+ const uint g = src.y;
+ const uint r = bidx == 0 ? src.z : src.x;
+
+ dst.x = saturate_cast<typename VecTraits<D>::elem_type>(CV_DESCALE(r * c_RGB2XYZ_D65i[0] + g * c_RGB2XYZ_D65i[1] + b * c_RGB2XYZ_D65i[2], xyz_shift));
+ dst.y = saturate_cast<typename VecTraits<D>::elem_type>(CV_DESCALE(r * c_RGB2XYZ_D65i[3] + g * c_RGB2XYZ_D65i[4] + b * c_RGB2XYZ_D65i[5], xyz_shift));
+ dst.z = saturate_cast<typename VecTraits<D>::elem_type>(CV_DESCALE(r * c_RGB2XYZ_D65i[6] + g * c_RGB2XYZ_D65i[7] + b * c_RGB2XYZ_D65i[8], xyz_shift));
+ }
+
+ template <int bidx> static __device__ __forceinline__ uint RGB2XYZConvert_8UC4(uint src)
+ {
+ const uint b = 0xffu & (src >> (bidx * 8));
+ const uint g = 0xffu & (src >> 8);
+ const uint r = 0xffu & (src >> ((bidx ^ 2) * 8));
+
+ const uint x = saturate_cast<uchar>(CV_DESCALE(r * c_RGB2XYZ_D65i[0] + g * c_RGB2XYZ_D65i[1] + b * c_RGB2XYZ_D65i[2], xyz_shift));
+ const uint y = saturate_cast<uchar>(CV_DESCALE(r * c_RGB2XYZ_D65i[3] + g * c_RGB2XYZ_D65i[4] + b * c_RGB2XYZ_D65i[5], xyz_shift));
+ const uint z = saturate_cast<uchar>(CV_DESCALE(r * c_RGB2XYZ_D65i[6] + g * c_RGB2XYZ_D65i[7] + b * c_RGB2XYZ_D65i[8], xyz_shift));
+
+ uint dst = 0;
+
+ dst |= x;
+ dst |= y << 8;
+ dst |= z << 16;
+
+ return dst;
+ }
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void RGB2XYZConvert_32F(const T& src, D& dst)
+ {
+ const float b = bidx == 0 ? src.x : src.z;
+ const float g = src.y;
+ const float r = bidx == 0 ? src.z : src.x;
+
+ dst.x = r * c_RGB2XYZ_D65f[0] + g * c_RGB2XYZ_D65f[1] + b * c_RGB2XYZ_D65f[2];
+ dst.y = r * c_RGB2XYZ_D65f[3] + g * c_RGB2XYZ_D65f[4] + b * c_RGB2XYZ_D65f[5];
+ dst.z = r * c_RGB2XYZ_D65f[6] + g * c_RGB2XYZ_D65f[7] + b * c_RGB2XYZ_D65f[8];
+ }
+
+ template <typename T, int scn, int dcn, int bidx> struct RGB2XYZ
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ RGB2XYZConvert_8U<bidx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2XYZ() {}
+ __host__ __device__ __forceinline__ RGB2XYZ(const RGB2XYZ&) {}
+ };
+
+ template <int scn, int dcn, int bidx> struct RGB2XYZ<float, scn, dcn, bidx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ RGB2XYZConvert_32F<bidx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2XYZ() {}
+ __host__ __device__ __forceinline__ RGB2XYZ(const RGB2XYZ&) {}
+ };
+
+ template <int bidx> struct RGB2XYZ<uchar, 4, 4, bidx> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ return RGB2XYZConvert_8UC4<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2XYZ() {}
+ __host__ __device__ __forceinline__ RGB2XYZ(const RGB2XYZ&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2XYZ_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2XYZ<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ __constant__ float c_XYZ2sRGB_D65f[9] = { 3.240479f, -1.53715f, -0.498535f, -0.969256f, 1.875991f, 0.041556f, 0.055648f, -0.204043f, 1.057311f };
+ __constant__ int c_XYZ2sRGB_D65i[9] = { 13273, -6296, -2042, -3970, 7684, 170, 228, -836, 4331 };
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void XYZ2RGBConvert_8U(const T& src, D& dst)
+ {
+ (bidx == 0 ? dst.z : dst.x) = saturate_cast<typename VecTraits<D>::elem_type>(CV_DESCALE(src.x * c_XYZ2sRGB_D65i[0] + src.y * c_XYZ2sRGB_D65i[1] + src.z * c_XYZ2sRGB_D65i[2], xyz_shift));
+ dst.y = saturate_cast<typename VecTraits<D>::elem_type>(CV_DESCALE(src.x * c_XYZ2sRGB_D65i[3] + src.y * c_XYZ2sRGB_D65i[4] + src.z * c_XYZ2sRGB_D65i[5], xyz_shift));
+ (bidx == 0 ? dst.x : dst.z) = saturate_cast<typename VecTraits<D>::elem_type>(CV_DESCALE(src.x * c_XYZ2sRGB_D65i[6] + src.y * c_XYZ2sRGB_D65i[7] + src.z * c_XYZ2sRGB_D65i[8], xyz_shift));
+ }
+
+ template <int bidx> static __device__ __forceinline__ uint XYZ2RGBConvert_8UC4(uint src)
+ {
+ const int x = 0xff & src;
+ const int y = 0xff & (src >> 8);
+ const int z = 0xff & (src >> 16);
+
+ const uint r = saturate_cast<uchar>(CV_DESCALE(x * c_XYZ2sRGB_D65i[0] + y * c_XYZ2sRGB_D65i[1] + z * c_XYZ2sRGB_D65i[2], xyz_shift));
+ const uint g = saturate_cast<uchar>(CV_DESCALE(x * c_XYZ2sRGB_D65i[3] + y * c_XYZ2sRGB_D65i[4] + z * c_XYZ2sRGB_D65i[5], xyz_shift));
+ const uint b = saturate_cast<uchar>(CV_DESCALE(x * c_XYZ2sRGB_D65i[6] + y * c_XYZ2sRGB_D65i[7] + z * c_XYZ2sRGB_D65i[8], xyz_shift));
+
+ uint dst = 0xffu << 24;
+
+ dst |= b << (bidx * 8);
+ dst |= g << 8;
+ dst |= r << ((bidx ^ 2) * 8);
+
+ return dst;
+ }
+
+ template <int bidx, typename T, typename D> static __device__ __forceinline__ void XYZ2RGBConvert_32F(const T& src, D& dst)
+ {
+ (bidx == 0 ? dst.z : dst.x) = src.x * c_XYZ2sRGB_D65f[0] + src.y * c_XYZ2sRGB_D65f[1] + src.z * c_XYZ2sRGB_D65f[2];
+ dst.y = src.x * c_XYZ2sRGB_D65f[3] + src.y * c_XYZ2sRGB_D65f[4] + src.z * c_XYZ2sRGB_D65f[5];
+ (bidx == 0 ? dst.x : dst.z) = src.x * c_XYZ2sRGB_D65f[6] + src.y * c_XYZ2sRGB_D65f[7] + src.z * c_XYZ2sRGB_D65f[8];
+ }
+
+ template <typename T, int scn, int dcn, int bidx> struct XYZ2RGB
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ XYZ2RGBConvert_8U<bidx>(src, dst);
+ setAlpha(dst, ColorChannel<T>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ XYZ2RGB() {}
+ __host__ __device__ __forceinline__ XYZ2RGB(const XYZ2RGB&) {}
+ };
+
+ template <int scn, int dcn, int bidx> struct XYZ2RGB<float, scn, dcn, bidx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ XYZ2RGBConvert_32F<bidx>(src, dst);
+ setAlpha(dst, ColorChannel<float>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ XYZ2RGB() {}
+ __host__ __device__ __forceinline__ XYZ2RGB(const XYZ2RGB&) {}
+ };
+
+ template <int bidx> struct XYZ2RGB<uchar, 4, 4, bidx> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ return XYZ2RGBConvert_8UC4<bidx>(src);
+ }
+
+ __host__ __device__ __forceinline__ XYZ2RGB() {}
+ __host__ __device__ __forceinline__ XYZ2RGB(const XYZ2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_XYZ2RGB_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::XYZ2RGB<T, scn, dcn, bidx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+////////////////////////////////////// RGB <-> HSV ///////////////////////////////////////
+
+ namespace color_detail
+ {
+ __constant__ int c_HsvDivTable [256] = {0, 1044480, 522240, 348160, 261120, 208896, 174080, 149211, 130560, 116053, 104448, 94953, 87040, 80345, 74606, 69632, 65280, 61440, 58027, 54973, 52224, 49737, 47476, 45412, 43520, 41779, 40172, 38684, 37303, 36017, 34816, 33693, 32640, 31651, 30720, 29842, 29013, 28229, 27486, 26782, 26112, 25475, 24869, 24290, 23738, 23211, 22706, 22223, 21760, 21316, 20890, 20480, 20086, 19707, 19342, 18991, 18651, 18324, 18008, 17703, 17408, 17123, 16846, 16579, 16320, 16069, 15825, 15589, 15360, 15137, 14921, 14711, 14507, 14308, 14115, 13926, 13743, 13565, 13391, 13221, 13056, 12895, 12738, 12584, 12434, 12288, 12145, 12006, 11869, 11736, 11605, 11478, 11353, 11231, 11111, 10995, 10880, 10768, 10658, 10550, 10445, 10341, 10240, 10141, 10043, 9947, 9854, 9761, 9671, 9582, 9495, 9410, 9326, 9243, 9162, 9082, 9004, 8927, 8852, 8777, 8704, 8632, 8561, 8492, 8423, 8356, 8290, 8224, 8160, 8097, 8034, 7973, 7913, 7853, 7795, 7737, 7680, 7624, 7569, 7514, 7461, 7408, 7355, 7304, 7253, 7203, 7154, 7105, 7057, 7010, 6963, 6917, 6872, 6827, 6782, 6739, 6695, 6653, 6611, 6569, 6528, 6487, 6447, 6408, 6369, 6330, 6292, 6254, 6217, 6180, 6144, 6108, 6073, 6037, 6003, 5968, 5935, 5901, 5868, 5835, 5803, 5771, 5739, 5708, 5677, 5646, 5615, 5585, 5556, 5526, 5497, 5468, 5440, 5412, 5384, 5356, 5329, 5302, 5275, 5249, 5222, 5196, 5171, 5145, 5120, 5095, 5070, 5046, 5022, 4998, 4974, 4950, 4927, 4904, 4881, 4858, 4836, 4813, 4791, 4769, 4748, 4726, 4705, 4684, 4663, 4642, 4622, 4601, 4581, 4561, 4541, 4522, 4502, 4483, 4464, 4445, 4426, 4407, 4389, 4370, 4352, 4334, 4316, 4298, 4281, 4263, 4246, 4229, 4212, 4195, 4178, 4161, 4145, 4128, 4112, 4096};
+ __constant__ int c_HsvDivTable180[256] = {0, 122880, 61440, 40960, 30720, 24576, 20480, 17554, 15360, 13653, 12288, 11171, 10240, 9452, 8777, 8192, 7680, 7228, 6827, 6467, 6144, 5851, 5585, 5343, 5120, 4915, 4726, 4551, 4389, 4237, 4096, 3964, 3840, 3724, 3614, 3511, 3413, 3321, 3234, 3151, 3072, 2997, 2926, 2858, 2793, 2731, 2671, 2614, 2560, 2508, 2458, 2409, 2363, 2318, 2276, 2234, 2194, 2156, 2119, 2083, 2048, 2014, 1982, 1950, 1920, 1890, 1862, 1834, 1807, 1781, 1755, 1731, 1707, 1683, 1661, 1638, 1617, 1596, 1575, 1555, 1536, 1517, 1499, 1480, 1463, 1446, 1429, 1412, 1396, 1381, 1365, 1350, 1336, 1321, 1307, 1293, 1280, 1267, 1254, 1241, 1229, 1217, 1205, 1193, 1182, 1170, 1159, 1148, 1138, 1127, 1117, 1107, 1097, 1087, 1078, 1069, 1059, 1050, 1041, 1033, 1024, 1016, 1007, 999, 991, 983, 975, 968, 960, 953, 945, 938, 931, 924, 917, 910, 904, 897, 890, 884, 878, 871, 865, 859, 853, 847, 842, 836, 830, 825, 819, 814, 808, 803, 798, 793, 788, 783, 778, 773, 768, 763, 759, 754, 749, 745, 740, 736, 731, 727, 723, 719, 714, 710, 706, 702, 698, 694, 690, 686, 683, 679, 675, 671, 668, 664, 661, 657, 654, 650, 647, 643, 640, 637, 633, 630, 627, 624, 621, 617, 614, 611, 608, 605, 602, 599, 597, 594, 591, 588, 585, 582, 580, 577, 574, 572, 569, 566, 564, 561, 559, 556, 554, 551, 549, 546, 544, 541, 539, 537, 534, 532, 530, 527, 525, 523, 521, 518, 516, 514, 512, 510, 508, 506, 504, 502, 500, 497, 495, 493, 492, 490, 488, 486, 484, 482};
+ __constant__ int c_HsvDivTable256[256] = {0, 174763, 87381, 58254, 43691, 34953, 29127, 24966, 21845, 19418, 17476, 15888, 14564, 13443, 12483, 11651, 10923, 10280, 9709, 9198, 8738, 8322, 7944, 7598, 7282, 6991, 6722, 6473, 6242, 6026, 5825, 5638, 5461, 5296, 5140, 4993, 4855, 4723, 4599, 4481, 4369, 4263, 4161, 4064, 3972, 3884, 3799, 3718, 3641, 3567, 3495, 3427, 3361, 3297, 3236, 3178, 3121, 3066, 3013, 2962, 2913, 2865, 2819, 2774, 2731, 2689, 2648, 2608, 2570, 2533, 2497, 2461, 2427, 2394, 2362, 2330, 2300, 2270, 2241, 2212, 2185, 2158, 2131, 2106, 2081, 2056, 2032, 2009, 1986, 1964, 1942, 1920, 1900, 1879, 1859, 1840, 1820, 1802, 1783, 1765, 1748, 1730, 1713, 1697, 1680, 1664, 1649, 1633, 1618, 1603, 1589, 1574, 1560, 1547, 1533, 1520, 1507, 1494, 1481, 1469, 1456, 1444, 1432, 1421, 1409, 1398, 1387, 1376, 1365, 1355, 1344, 1334, 1324, 1314, 1304, 1295, 1285, 1276, 1266, 1257, 1248, 1239, 1231, 1222, 1214, 1205, 1197, 1189, 1181, 1173, 1165, 1157, 1150, 1142, 1135, 1128, 1120, 1113, 1106, 1099, 1092, 1085, 1079, 1072, 1066, 1059, 1053, 1046, 1040, 1034, 1028, 1022, 1016, 1010, 1004, 999, 993, 987, 982, 976, 971, 966, 960, 955, 950, 945, 940, 935, 930, 925, 920, 915, 910, 906, 901, 896, 892, 887, 883, 878, 874, 869, 865, 861, 857, 853, 848, 844, 840, 836, 832, 828, 824, 820, 817, 813, 809, 805, 802, 798, 794, 791, 787, 784, 780, 777, 773, 770, 767, 763, 760, 757, 753, 750, 747, 744, 741, 737, 734, 731, 728, 725, 722, 719, 716, 713, 710, 708, 705, 702, 699, 696, 694, 691, 688, 685};
+
+ template <int bidx, int hr, typename T, typename D> static __device__ void RGB2HSVConvert_8U(const T& src, D& dst)
+ {
+ const int hsv_shift = 12;
+ const int* hdiv_table = hr == 180 ? c_HsvDivTable180 : c_HsvDivTable256;
+
+ int b = bidx == 0 ? src.x : src.z;
+ int g = src.y;
+ int r = bidx == 0 ? src.z : src.x;
+
+ int h, s, v = b;
+ int vmin = b, diff;
+ int vr, vg;
+
+ v = ::max(v, g);
+ v = ::max(v, r);
+ vmin = ::min(vmin, g);
+ vmin = ::min(vmin, r);
+
+ diff = v - vmin;
+ vr = (v == r) * -1;
+ vg = (v == g) * -1;
+
+ s = (diff * c_HsvDivTable[v] + (1 << (hsv_shift-1))) >> hsv_shift;
+ h = (vr & (g - b)) + (~vr & ((vg & (b - r + 2 * diff)) + ((~vg) & (r - g + 4 * diff))));
+ h = (h * hdiv_table[diff] + (1 << (hsv_shift-1))) >> hsv_shift;
+ h += (h < 0) * hr;
+
+ dst.x = saturate_cast<uchar>(h);
+ dst.y = (uchar)s;
+ dst.z = (uchar)v;
+ }
+
+ template <int bidx, int hr> static __device__ uint RGB2HSVConvert_8UC4(uint src)
+ {
+ const int hsv_shift = 12;
+ const int* hdiv_table = hr == 180 ? c_HsvDivTable180 : c_HsvDivTable256;
+
+ const int b = 0xff & (src >> (bidx * 8));
+ const int g = 0xff & (src >> 8);
+ const int r = 0xff & (src >> ((bidx ^ 2) * 8));
+
+ int h, s, v = b;
+ int vmin = b, diff;
+ int vr, vg;
+
+ v = ::max(v, g);
+ v = ::max(v, r);
+ vmin = ::min(vmin, g);
+ vmin = ::min(vmin, r);
+
+ diff = v - vmin;
+ vr = (v == r) * -1;
+ vg = (v == g) * -1;
+
+ s = (diff * c_HsvDivTable[v] + (1 << (hsv_shift-1))) >> hsv_shift;
+ h = (vr & (g - b)) + (~vr & ((vg & (b - r + 2 * diff)) + ((~vg) & (r - g + 4 * diff))));
+ h = (h * hdiv_table[diff] + (1 << (hsv_shift-1))) >> hsv_shift;
+ h += (h < 0) * hr;
+
+ uint dst = 0;
+
+ dst |= saturate_cast<uchar>(h);
+ dst |= (0xffu & s) << 8;
+ dst |= (0xffu & v) << 16;
+
+ return dst;
+ }
+
+ template <int bidx, int hr, typename T, typename D> static __device__ void RGB2HSVConvert_32F(const T& src, D& dst)
+ {
+ const float hscale = hr * (1.f / 360.f);
+
+ float b = bidx == 0 ? src.x : src.z;
+ float g = src.y;
+ float r = bidx == 0 ? src.z : src.x;
+
+ float h, s, v;
+
+ float vmin, diff;
+
+ v = vmin = r;
+ v = fmax(v, g);
+ v = fmax(v, b);
+ vmin = fmin(vmin, g);
+ vmin = fmin(vmin, b);
+
+ diff = v - vmin;
+ s = diff / (float)(::fabs(v) + numeric_limits<float>::epsilon());
+ diff = (float)(60. / (diff + numeric_limits<float>::epsilon()));
+
+ h = (v == r) * (g - b) * diff;
+ h += (v != r && v == g) * ((b - r) * diff + 120.f);
+ h += (v != r && v != g) * ((r - g) * diff + 240.f);
+ h += (h < 0) * 360.f;
+
+ dst.x = h * hscale;
+ dst.y = s;
+ dst.z = v;
+ }
+
+ template <typename T, int scn, int dcn, int bidx, int hr> struct RGB2HSV
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ RGB2HSVConvert_8U<bidx, hr>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2HSV() {}
+ __host__ __device__ __forceinline__ RGB2HSV(const RGB2HSV&) {}
+ };
+
+ template <int scn, int dcn, int bidx, int hr> struct RGB2HSV<float, scn, dcn, bidx, hr>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ RGB2HSVConvert_32F<bidx, hr>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2HSV() {}
+ __host__ __device__ __forceinline__ RGB2HSV(const RGB2HSV&) {}
+ };
+
+ template <int bidx, int hr> struct RGB2HSV<uchar, 4, 4, bidx, hr> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ return RGB2HSVConvert_8UC4<bidx, hr>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2HSV() {}
+ __host__ __device__ __forceinline__ RGB2HSV(const RGB2HSV&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2HSV_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HSV<T, scn, dcn, bidx, 180> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <typename T> struct name ## _full_traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HSV<T, scn, dcn, bidx, 256> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HSV<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _full_traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HSV<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ __constant__ int c_HsvSectorData[6][3] = { {1,3,0}, {1,0,2}, {3,0,1}, {0,2,1}, {0,1,3}, {2,1,0} };
+
+ template <int bidx, int hr, typename T, typename D> static __device__ void HSV2RGBConvert_32F(const T& src, D& dst)
+ {
+ const float hscale = 6.f / hr;
+
+ float h = src.x, s = src.y, v = src.z;
+ float b = v, g = v, r = v;
+
+ if (s != 0)
+ {
+ h *= hscale;
+
+ if( h < 0 )
+ do h += 6; while( h < 0 );
+ else if( h >= 6 )
+ do h -= 6; while( h >= 6 );
+
+ int sector = __float2int_rd(h);
+ h -= sector;
+
+ if ( (unsigned)sector >= 6u )
+ {
+ sector = 0;
+ h = 0.f;
+ }
+
+ float tab[4];
+ tab[0] = v;
+ tab[1] = v * (1.f - s);
+ tab[2] = v * (1.f - s * h);
+ tab[3] = v * (1.f - s * (1.f - h));
+
+ b = tab[c_HsvSectorData[sector][0]];
+ g = tab[c_HsvSectorData[sector][1]];
+ r = tab[c_HsvSectorData[sector][2]];
+ }
+
+ dst.x = (bidx == 0 ? b : r);
+ dst.y = g;
+ dst.z = (bidx == 0 ? r : b);
+ }
+
+ template <int bidx, int HR, typename T, typename D> static __device__ void HSV2RGBConvert_8U(const T& src, D& dst)
+ {
+ float3 buf;
+
+ buf.x = src.x;
+ buf.y = src.y * (1.f / 255.f);
+ buf.z = src.z * (1.f / 255.f);
+
+ HSV2RGBConvert_32F<bidx, HR>(buf, buf);
+
+ dst.x = saturate_cast<uchar>(buf.x * 255.f);
+ dst.y = saturate_cast<uchar>(buf.y * 255.f);
+ dst.z = saturate_cast<uchar>(buf.z * 255.f);
+ }
+
+ template <int bidx, int hr> static __device__ uint HSV2RGBConvert_8UC4(uint src)
+ {
+ float3 buf;
+
+ buf.x = src & 0xff;
+ buf.y = ((src >> 8) & 0xff) * (1.f/255.f);
+ buf.z = ((src >> 16) & 0xff) * (1.f/255.f);
+
+ HSV2RGBConvert_32F<bidx, hr>(buf, buf);
+
+ uint dst = 0xffu << 24;
+
+ dst |= saturate_cast<uchar>(buf.x * 255.f);
+ dst |= saturate_cast<uchar>(buf.y * 255.f) << 8;
+ dst |= saturate_cast<uchar>(buf.z * 255.f) << 16;
+
+ return dst;
+ }
+
+ template <typename T, int scn, int dcn, int bidx, int hr> struct HSV2RGB
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ HSV2RGBConvert_8U<bidx, hr>(src, dst);
+ setAlpha(dst, ColorChannel<T>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ HSV2RGB() {}
+ __host__ __device__ __forceinline__ HSV2RGB(const HSV2RGB&) {}
+ };
+
+ template <int scn, int dcn, int bidx, int hr> struct HSV2RGB<float, scn, dcn, bidx, hr>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ HSV2RGBConvert_32F<bidx, hr>(src, dst);
+ setAlpha(dst, ColorChannel<float>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ HSV2RGB() {}
+ __host__ __device__ __forceinline__ HSV2RGB(const HSV2RGB&) {}
+ };
+
+ template <int bidx, int hr> struct HSV2RGB<uchar, 4, 4, bidx, hr> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ return HSV2RGBConvert_8UC4<bidx, hr>(src);
+ }
+
+ __host__ __device__ __forceinline__ HSV2RGB() {}
+ __host__ __device__ __forceinline__ HSV2RGB(const HSV2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_HSV2RGB_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::HSV2RGB<T, scn, dcn, bidx, 180> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <typename T> struct name ## _full_traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::HSV2RGB<T, scn, dcn, bidx, 255> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::HSV2RGB<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _full_traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::HSV2RGB<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+/////////////////////////////////////// RGB <-> HLS ////////////////////////////////////////
+
+ namespace color_detail
+ {
+ template <int bidx, int hr, typename T, typename D> static __device__ void RGB2HLSConvert_32F(const T& src, D& dst)
+ {
+ const float hscale = hr * (1.f / 360.f);
+
+ float b = bidx == 0 ? src.x : src.z;
+ float g = src.y;
+ float r = bidx == 0 ? src.z : src.x;
+
+ float h = 0.f, s = 0.f, l;
+ float vmin, vmax, diff;
+
+ vmax = vmin = r;
+ vmax = fmax(vmax, g);
+ vmax = fmax(vmax, b);
+ vmin = fmin(vmin, g);
+ vmin = fmin(vmin, b);
+
+ diff = vmax - vmin;
+ l = (vmax + vmin) * 0.5f;
+
+ if (diff > numeric_limits<float>::epsilon())
+ {
+ s = (l < 0.5f) * diff / (vmax + vmin);
+ s += (l >= 0.5f) * diff / (2.0f - vmax - vmin);
+
+ diff = 60.f / diff;
+
+ h = (vmax == r) * (g - b) * diff;
+ h += (vmax != r && vmax == g) * ((b - r) * diff + 120.f);
+ h += (vmax != r && vmax != g) * ((r - g) * diff + 240.f);
+ h += (h < 0.f) * 360.f;
+ }
+
+ dst.x = h * hscale;
+ dst.y = l;
+ dst.z = s;
+ }
+
+ template <int bidx, int hr, typename T, typename D> static __device__ void RGB2HLSConvert_8U(const T& src, D& dst)
+ {
+ float3 buf;
+
+ buf.x = src.x * (1.f / 255.f);
+ buf.y = src.y * (1.f / 255.f);
+ buf.z = src.z * (1.f / 255.f);
+
+ RGB2HLSConvert_32F<bidx, hr>(buf, buf);
+
+ dst.x = saturate_cast<uchar>(buf.x);
+ dst.y = saturate_cast<uchar>(buf.y*255.f);
+ dst.z = saturate_cast<uchar>(buf.z*255.f);
+ }
+
+ template <int bidx, int hr> static __device__ uint RGB2HLSConvert_8UC4(uint src)
+ {
+ float3 buf;
+
+ buf.x = (0xff & src) * (1.f / 255.f);
+ buf.y = (0xff & (src >> 8)) * (1.f / 255.f);
+ buf.z = (0xff & (src >> 16)) * (1.f / 255.f);
+
+ RGB2HLSConvert_32F<bidx, hr>(buf, buf);
+
+ uint dst = 0xffu << 24;
+
+ dst |= saturate_cast<uchar>(buf.x);
+ dst |= saturate_cast<uchar>(buf.y * 255.f) << 8;
+ dst |= saturate_cast<uchar>(buf.z * 255.f) << 16;
+
+ return dst;
+ }
+
+ template <typename T, int scn, int dcn, int bidx, int hr> struct RGB2HLS
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ RGB2HLSConvert_8U<bidx, hr>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2HLS() {}
+ __host__ __device__ __forceinline__ RGB2HLS(const RGB2HLS&) {}
+ };
+
+ template <int scn, int dcn, int bidx, int hr> struct RGB2HLS<float, scn, dcn, bidx, hr>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ RGB2HLSConvert_32F<bidx, hr>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2HLS() {}
+ __host__ __device__ __forceinline__ RGB2HLS(const RGB2HLS&) {}
+ };
+
+ template <int bidx, int hr> struct RGB2HLS<uchar, 4, 4, bidx, hr> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ return RGB2HLSConvert_8UC4<bidx, hr>(src);
+ }
+
+ __host__ __device__ __forceinline__ RGB2HLS() {}
+ __host__ __device__ __forceinline__ RGB2HLS(const RGB2HLS&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2HLS_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HLS<T, scn, dcn, bidx, 180> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <typename T> struct name ## _full_traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HLS<T, scn, dcn, bidx, 256> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HLS<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _full_traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2HLS<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ __constant__ int c_HlsSectorData[6][3] = { {1,3,0}, {1,0,2}, {3,0,1}, {0,2,1}, {0,1,3}, {2,1,0} };
+
+ template <int bidx, int hr, typename T, typename D> static __device__ void HLS2RGBConvert_32F(const T& src, D& dst)
+ {
+ const float hscale = 6.0f / hr;
+
+ float h = src.x, l = src.y, s = src.z;
+ float b = l, g = l, r = l;
+
+ if (s != 0)
+ {
+ float p2 = (l <= 0.5f) * l * (1 + s);
+ p2 += (l > 0.5f) * (l + s - l * s);
+ float p1 = 2 * l - p2;
+
+ h *= hscale;
+
+ if( h < 0 )
+ do h += 6; while( h < 0 );
+ else if( h >= 6 )
+ do h -= 6; while( h >= 6 );
+
+ int sector;
+ sector = __float2int_rd(h);
+
+ h -= sector;
+
+ float tab[4];
+ tab[0] = p2;
+ tab[1] = p1;
+ tab[2] = p1 + (p2 - p1) * (1 - h);
+ tab[3] = p1 + (p2 - p1) * h;
+
+ b = tab[c_HlsSectorData[sector][0]];
+ g = tab[c_HlsSectorData[sector][1]];
+ r = tab[c_HlsSectorData[sector][2]];
+ }
+
+ dst.x = bidx == 0 ? b : r;
+ dst.y = g;
+ dst.z = bidx == 0 ? r : b;
+ }
+
+ template <int bidx, int hr, typename T, typename D> static __device__ void HLS2RGBConvert_8U(const T& src, D& dst)
+ {
+ float3 buf;
+
+ buf.x = src.x;
+ buf.y = src.y * (1.f / 255.f);
+ buf.z = src.z * (1.f / 255.f);
+
+ HLS2RGBConvert_32F<bidx, hr>(buf, buf);
+
+ dst.x = saturate_cast<uchar>(buf.x * 255.f);
+ dst.y = saturate_cast<uchar>(buf.y * 255.f);
+ dst.z = saturate_cast<uchar>(buf.z * 255.f);
+ }
+
+ template <int bidx, int hr> static __device__ uint HLS2RGBConvert_8UC4(uint src)
+ {
+ float3 buf;
+
+ buf.x = 0xff & src;
+ buf.y = (0xff & (src >> 8)) * (1.f / 255.f);
+ buf.z = (0xff & (src >> 16)) * (1.f / 255.f);
+
+ HLS2RGBConvert_32F<bidx, hr>(buf, buf);
+
+ uint dst = 0xffu << 24;
+
+ dst |= saturate_cast<uchar>(buf.x * 255.f);
+ dst |= saturate_cast<uchar>(buf.y * 255.f) << 8;
+ dst |= saturate_cast<uchar>(buf.z * 255.f) << 16;
+
+ return dst;
+ }
+
+ template <typename T, int scn, int dcn, int bidx, int hr> struct HLS2RGB
+ : unary_function<typename TypeVec<T, scn>::vec_type, typename TypeVec<T, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<T, dcn>::vec_type operator()(const typename TypeVec<T, scn>::vec_type& src) const
+ {
+ typename TypeVec<T, dcn>::vec_type dst;
+
+ HLS2RGBConvert_8U<bidx, hr>(src, dst);
+ setAlpha(dst, ColorChannel<T>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ HLS2RGB() {}
+ __host__ __device__ __forceinline__ HLS2RGB(const HLS2RGB&) {}
+ };
+
+ template <int scn, int dcn, int bidx, int hr> struct HLS2RGB<float, scn, dcn, bidx, hr>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ HLS2RGBConvert_32F<bidx, hr>(src, dst);
+ setAlpha(dst, ColorChannel<float>::max());
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ HLS2RGB() {}
+ __host__ __device__ __forceinline__ HLS2RGB(const HLS2RGB&) {}
+ };
+
+ template <int bidx, int hr> struct HLS2RGB<uchar, 4, 4, bidx, hr> : unary_function<uint, uint>
+ {
+ __device__ __forceinline__ uint operator()(uint src) const
+ {
+ return HLS2RGBConvert_8UC4<bidx, hr>(src);
+ }
+
+ __host__ __device__ __forceinline__ HLS2RGB() {}
+ __host__ __device__ __forceinline__ HLS2RGB(const HLS2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_HLS2RGB_TRAITS(name, scn, dcn, bidx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::HLS2RGB<T, scn, dcn, bidx, 180> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <typename T> struct name ## _full_traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::HLS2RGB<T, scn, dcn, bidx, 255> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::HLS2RGB<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ }; \
+ template <> struct name ## _full_traits<float> \
+ { \
+ typedef ::cv::gpu::device::color_detail::HLS2RGB<float, scn, dcn, bidx, 360> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+///////////////////////////////////// RGB <-> Lab /////////////////////////////////////
+
+ namespace color_detail
+ {
+ enum
+ {
+ LAB_CBRT_TAB_SIZE = 1024,
+ GAMMA_TAB_SIZE = 1024,
+ lab_shift = xyz_shift,
+ gamma_shift = 3,
+ lab_shift2 = (lab_shift + gamma_shift),
+ LAB_CBRT_TAB_SIZE_B = (256 * 3 / 2 * (1 << gamma_shift))
+ };
+
+ __constant__ ushort c_sRGBGammaTab_b[] = {0,1,1,2,2,3,4,4,5,6,6,7,8,8,9,10,11,11,12,13,14,15,16,17,19,20,21,22,24,25,26,28,29,31,33,34,36,38,40,41,43,45,47,49,51,54,56,58,60,63,65,68,70,73,75,78,81,83,86,89,92,95,98,101,105,108,111,115,118,121,125,129,132,136,140,144,147,151,155,160,164,168,172,176,181,185,190,194,199,204,209,213,218,223,228,233,239,244,249,255,260,265,271,277,282,288,294,300,306,312,318,324,331,337,343,350,356,363,370,376,383,390,397,404,411,418,426,433,440,448,455,463,471,478,486,494,502,510,518,527,535,543,552,560,569,578,586,595,604,613,622,631,641,650,659,669,678,688,698,707,717,727,737,747,757,768,778,788,799,809,820,831,842,852,863,875,886,897,908,920,931,943,954,966,978,990,1002,1014,1026,1038,1050,1063,1075,1088,1101,1113,1126,1139,1152,1165,1178,1192,1205,1218,1232,1245,1259,1273,1287,1301,1315,1329,1343,1357,1372,1386,1401,1415,1430,1445,1460,1475,1490,1505,1521,1536,1551,1567,1583,1598,1614,1630,1646,1662,1678,1695,1711,1728,1744,1761,1778,1794,1811,1828,1846,1863,1880,1897,1915,1933,1950,1968,1986,2004,2022,2040};
+
+ __device__ __forceinline__ int LabCbrt_b(int i)
+ {
+ float x = i * (1.f / (255.f * (1 << gamma_shift)));
+ return (1 << lab_shift2) * (x < 0.008856f ? x * 7.787f + 0.13793103448275862f : ::cbrtf(x));
+ }
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void RGB2LabConvert_8U(const T& src, D& dst)
+ {
+ const int Lscale = (116 * 255 + 50) / 100;
+ const int Lshift = -((16 * 255 * (1 << lab_shift2) + 50) / 100);
+
+ int B = blueIdx == 0 ? src.x : src.z;
+ int G = src.y;
+ int R = blueIdx == 0 ? src.z : src.x;
+
+ if (srgb)
+ {
+ B = c_sRGBGammaTab_b[B];
+ G = c_sRGBGammaTab_b[G];
+ R = c_sRGBGammaTab_b[R];
+ }
+ else
+ {
+ B <<= 3;
+ G <<= 3;
+ R <<= 3;
+ }
+
+ int fX = LabCbrt_b(CV_DESCALE(B * 778 + G * 1541 + R * 1777, lab_shift));
+ int fY = LabCbrt_b(CV_DESCALE(B * 296 + G * 2929 + R * 871, lab_shift));
+ int fZ = LabCbrt_b(CV_DESCALE(B * 3575 + G * 448 + R * 73, lab_shift));
+
+ int L = CV_DESCALE(Lscale * fY + Lshift, lab_shift2);
+ int a = CV_DESCALE(500 * (fX - fY) + 128 * (1 << lab_shift2), lab_shift2);
+ int b = CV_DESCALE(200 * (fY - fZ) + 128 * (1 << lab_shift2), lab_shift2);
+
+ dst.x = saturate_cast<uchar>(L);
+ dst.y = saturate_cast<uchar>(a);
+ dst.z = saturate_cast<uchar>(b);
+ }
+
+ __device__ __forceinline__ float splineInterpolate(float x, const float* tab, int n)
+ {
+ int ix = ::min(::max(int(x), 0), n-1);
+ x -= ix;
+ tab += ix * 4;
+ return ((tab[3] * x + tab[2]) * x + tab[1]) * x + tab[0];
+ }
+
+ __constant__ float c_sRGBGammaTab[] = {0,7.55853e-05,0.,-7.51331e-13,7.55853e-05,7.55853e-05,-2.25399e-12,3.75665e-12,0.000151171,7.55853e-05,9.01597e-12,-6.99932e-12,0.000226756,7.55853e-05,-1.1982e-11,2.41277e-12,0.000302341,7.55853e-05,-4.74369e-12,1.19001e-11,0.000377927,7.55853e-05,3.09568e-11,-2.09095e-11,0.000453512,7.55853e-05,-3.17718e-11,1.35303e-11,0.000529097,7.55853e-05,8.81905e-12,-4.10782e-12,0.000604683,7.55853e-05,-3.50439e-12,2.90097e-12,0.000680268,7.55853e-05,5.19852e-12,-7.49607e-12,0.000755853,7.55853e-05,-1.72897e-11,2.70833e-11,0.000831439,7.55854e-05,6.39602e-11,-4.26295e-11,0.000907024,7.55854e-05,-6.39282e-11,2.70193e-11,0.000982609,7.55853e-05,1.71298e-11,-7.24017e-12,0.00105819,7.55853e-05,-4.59077e-12,1.94137e-12,0.00113378,7.55853e-05,1.23333e-12,-5.25291e-13,0.00120937,7.55853e-05,-3.42545e-13,1.59799e-13,0.00128495,7.55853e-05,1.36852e-13,-1.13904e-13,0.00136054,7.55853e-05,-2.04861e-13,2.95818e-13,0.00143612,7.55853e-05,6.82594e-13,-1.06937e-12,0.00151171,7.55853e-05,-2.52551e-12,3.98166e-12,0.00158729,7.55853e-05,9.41946e-12,-1.48573e-11,0.00166288,7.55853e-05,-3.51523e-11,5.54474e-11,0.00173846,7.55854e-05,1.3119e-10,-9.0517e-11,0.00181405,7.55854e-05,-1.40361e-10,7.37899e-11,0.00188963,7.55853e-05,8.10085e-11,-8.82272e-11,0.00196522,7.55852e-05,-1.83673e-10,1.62704e-10,0.0020408,7.55853e-05,3.04438e-10,-2.13341e-10,0.00211639,7.55853e-05,-3.35586e-10,2.25e-10,0.00219197,7.55853e-05,3.39414e-10,-2.20997e-10,0.00226756,7.55853e-05,-3.23576e-10,1.93326e-10,0.00234315,7.55853e-05,2.564e-10,-8.66446e-11,0.00241873,7.55855e-05,-3.53328e-12,-7.9578e-11,0.00249432,7.55853e-05,-2.42267e-10,1.72126e-10,0.0025699,7.55853e-05,2.74111e-10,-1.43265e-10,0.00264549,7.55854e-05,-1.55683e-10,-6.47292e-11,0.00272107,7.55849e-05,-3.4987e-10,8.67842e-10,0.00279666,7.55868e-05,2.25366e-09,-3.8723e-09,0.00287224,7.55797e-05,-9.36325e-09,1.5087e-08,0.00294783,7.56063e-05,3.58978e-08,-5.69415e-08,0.00302341,7.55072e-05,-1.34927e-07,2.13144e-07,0.003099,7.58768e-05,5.04507e-07,1.38713e-07,0.00317552,7.7302e-05,9.20646e-07,-1.55186e-07,0.00325359,7.86777e-05,4.55087e-07,4.26813e-08,0.00333276,7.97159e-05,5.83131e-07,-1.06495e-08,0.00341305,8.08502e-05,5.51182e-07,3.87467e-09,0.00349446,8.19642e-05,5.62806e-07,-1.92586e-10,0.00357698,8.30892e-05,5.62228e-07,1.0866e-09,0.00366063,8.4217e-05,5.65488e-07,5.02818e-10,0.00374542,8.53494e-05,5.66997e-07,8.60211e-10,0.00383133,8.6486e-05,5.69577e-07,7.13044e-10,0.00391839,8.76273e-05,5.71716e-07,4.78527e-10,0.00400659,8.87722e-05,5.73152e-07,1.09818e-09,0.00409594,8.99218e-05,5.76447e-07,2.50964e-10,0.00418644,9.10754e-05,5.772e-07,1.15762e-09,0.00427809,9.22333e-05,5.80672e-07,2.40865e-10,0.0043709,9.33954e-05,5.81395e-07,1.13854e-09,0.00446488,9.45616e-05,5.84811e-07,3.27267e-10,0.00456003,9.57322e-05,5.85792e-07,8.1197e-10,0.00465635,9.69062e-05,5.88228e-07,6.15823e-10,0.00475384,9.80845e-05,5.90076e-07,9.15747e-10,0.00485252,9.92674e-05,5.92823e-07,3.778e-10,0.00495238,0.000100454,5.93956e-07,8.32623e-10,0.00505343,0.000101645,5.96454e-07,4.82695e-10,0.00515567,0.000102839,5.97902e-07,9.61904e-10,0.00525911,0.000104038,6.00788e-07,3.26281e-10,0.00536375,0.00010524,6.01767e-07,9.926e-10,0.00546959,0.000106447,6.04745e-07,3.59933e-10,0.00557664,0.000107657,6.05824e-07,8.2728e-10,0.0056849,0.000108871,6.08306e-07,5.21898e-10,0.00579438,0.00011009,6.09872e-07,8.10492e-10,0.00590508,0.000111312,6.12303e-07,4.27046e-10,0.00601701,0.000112538,6.13585e-07,7.40878e-10,0.00613016,0.000113767,6.15807e-07,8.00469e-10,0.00624454,0.000115001,6.18209e-07,2.48178e-10,0.00636016,0.000116238,6.18953e-07,1.00073e-09,0.00647702,0.000117479,6.21955e-07,4.05654e-10,0.00659512,0.000118724,6.23172e-07,6.36192e-10,0.00671447,0.000119973,6.25081e-07,7.74927e-10,0.00683507,0.000121225,6.27406e-07,4.54975e-10,0.00695692,0.000122481,6.28771e-07,6.64841e-10,0.00708003,0.000123741,6.30765e-07,6.10972e-10,0.00720441,0.000125004,6.32598e-07,6.16543e-10,0.00733004,0.000126271,6.34448e-07,6.48204e-10,0.00745695,0.000127542,6.36392e-07,5.15835e-10,0.00758513,0.000128816,6.3794e-07,5.48103e-10,0.00771458,0.000130094,6.39584e-07,1.01706e-09,0.00784532,0.000131376,6.42635e-07,4.0283e-11,0.00797734,0.000132661,6.42756e-07,6.84471e-10,0.00811064,0.000133949,6.4481e-07,9.47144e-10,0.00824524,0.000135241,6.47651e-07,1.83472e-10,0.00838112,0.000136537,6.48201e-07,1.11296e-09,0.00851831,0.000137837,6.5154e-07,2.13163e-11,0.0086568,0.00013914,6.51604e-07,6.64462e-10,0.00879659,0.000140445,6.53598e-07,1.04613e-09,0.00893769,0.000141756,6.56736e-07,-1.92377e-10,0.0090801,0.000143069,6.56159e-07,1.58601e-09,0.00922383,0.000144386,6.60917e-07,-5.63754e-10,0.00936888,0.000145706,6.59226e-07,1.60033e-09,0.00951524,0.000147029,6.64027e-07,-2.49543e-10,0.00966294,0.000148356,6.63278e-07,1.26043e-09,0.00981196,0.000149687,6.67059e-07,-1.35572e-10,0.00996231,0.00015102,6.66653e-07,1.14458e-09,0.010114,0.000152357,6.70086e-07,2.13864e-10,0.010267,0.000153698,6.70728e-07,7.93856e-10,0.0104214,0.000155042,6.73109e-07,3.36077e-10,0.0105771,0.000156389,6.74118e-07,6.55765e-10,0.0107342,0.000157739,6.76085e-07,7.66211e-10,0.0108926,0.000159094,6.78384e-07,4.66116e-12,0.0110524,0.000160451,6.78398e-07,1.07775e-09,0.0112135,0.000161811,6.81631e-07,3.41023e-10,0.011376,0.000163175,6.82654e-07,3.5205e-10,0.0115398,0.000164541,6.8371e-07,1.04473e-09,0.0117051,0.000165912,6.86844e-07,1.25757e-10,0.0118717,0.000167286,6.87222e-07,3.14818e-10,0.0120396,0.000168661,6.88166e-07,1.40886e-09,0.012209,0.000170042,6.92393e-07,-3.62244e-10,0.0123797,0.000171425,6.91306e-07,9.71397e-10,0.0125518,0.000172811,6.9422e-07,2.02003e-10,0.0127253,0.0001742,6.94826e-07,1.01448e-09,0.0129002,0.000175593,6.97869e-07,3.96653e-10,0.0130765,0.00017699,6.99059e-07,1.92927e-10,0.0132542,0.000178388,6.99638e-07,6.94305e-10,0.0134333,0.00017979,7.01721e-07,7.55108e-10,0.0136138,0.000181195,7.03986e-07,1.05918e-11,0.0137957,0.000182603,7.04018e-07,1.06513e-09,0.013979,0.000184015,7.07214e-07,3.85512e-10,0.0141637,0.00018543,7.0837e-07,1.86769e-10,0.0143499,0.000186848,7.0893e-07,7.30116e-10,0.0145374,0.000188268,7.11121e-07,6.17983e-10,0.0147264,0.000189692,7.12975e-07,5.23282e-10,0.0149168,0.000191119,7.14545e-07,8.28398e-11,0.0151087,0.000192549,7.14793e-07,1.0081e-09,0.0153019,0.000193981,7.17817e-07,5.41244e-10,0.0154966,0.000195418,7.19441e-07,-3.7907e-10,0.0156928,0.000196856,7.18304e-07,1.90641e-09,0.0158903,0.000198298,7.24023e-07,-7.27387e-10,0.0160893,0.000199744,7.21841e-07,1.00317e-09,0.0162898,0.000201191,7.24851e-07,4.39949e-10,0.0164917,0.000202642,7.2617e-07,9.6234e-10,0.0166951,0.000204097,7.29057e-07,-5.64019e-10,0.0168999,0.000205554,7.27365e-07,1.29374e-09,0.0171062,0.000207012,7.31247e-07,9.77025e-10,0.017314,0.000208478,7.34178e-07,-1.47651e-09,0.0175232,0.000209942,7.29748e-07,3.06636e-09,0.0177338,0.00021141,7.38947e-07,-1.47573e-09,0.017946,0.000212884,7.3452e-07,9.7386e-10,0.0181596,0.000214356,7.37442e-07,1.30562e-09,0.0183747,0.000215835,7.41358e-07,-6.08376e-10,0.0185913,0.000217315,7.39533e-07,1.12785e-09,0.0188093,0.000218798,7.42917e-07,-1.77711e-10,0.0190289,0.000220283,7.42384e-07,1.44562e-09,0.0192499,0.000221772,7.46721e-07,-1.68825e-11,0.0194724,0.000223266,7.4667e-07,4.84533e-10,0.0196964,0.000224761,7.48124e-07,-5.85298e-11,0.0199219,0.000226257,7.47948e-07,1.61217e-09,0.0201489,0.000227757,7.52785e-07,-8.02136e-10,0.0203775,0.00022926,7.50378e-07,1.59637e-09,0.0206075,0.000230766,7.55167e-07,4.47168e-12,0.020839,0.000232276,7.55181e-07,2.48387e-10,0.021072,0.000233787,7.55926e-07,8.6474e-10,0.0213066,0.000235302,7.5852e-07,1.78299e-11,0.0215426,0.000236819,7.58573e-07,9.26567e-10,0.0217802,0.000238339,7.61353e-07,1.34529e-12,0.0220193,0.000239862,7.61357e-07,9.30659e-10,0.0222599,0.000241387,7.64149e-07,1.34529e-12,0.0225021,0.000242915,7.64153e-07,9.26567e-10,0.0227458,0.000244447,7.66933e-07,1.76215e-11,0.022991,0.00024598,7.66986e-07,8.65536e-10,0.0232377,0.000247517,7.69582e-07,2.45677e-10,0.023486,0.000249057,7.70319e-07,1.44193e-11,0.0237358,0.000250598,7.70363e-07,1.55918e-09,0.0239872,0.000252143,7.7504e-07,-6.63173e-10,0.0242401,0.000253691,7.73051e-07,1.09357e-09,0.0244946,0.000255241,7.76331e-07,1.41919e-11,0.0247506,0.000256793,7.76374e-07,7.12248e-10,0.0250082,0.000258348,7.78511e-07,8.62049e-10,0.0252673,0.000259908,7.81097e-07,-4.35061e-10,0.025528,0.000261469,7.79792e-07,8.7825e-10,0.0257902,0.000263031,7.82426e-07,6.47181e-10,0.0260541,0.000264598,7.84368e-07,2.58448e-10,0.0263194,0.000266167,7.85143e-07,1.81558e-10,0.0265864,0.000267738,7.85688e-07,8.78041e-10,0.0268549,0.000269312,7.88322e-07,3.15102e-11,0.027125,0.000270889,7.88417e-07,8.58525e-10,0.0273967,0.000272468,7.90992e-07,2.59812e-10,0.02767,0.000274051,7.91772e-07,-3.5224e-11,0.0279448,0.000275634,7.91666e-07,1.74377e-09,0.0282212,0.000277223,7.96897e-07,-1.35196e-09,0.0284992,0.000278813,7.92841e-07,1.80141e-09,0.0287788,0.000280404,7.98246e-07,-2.65629e-10,0.0290601,0.000281999,7.97449e-07,1.12374e-09,0.0293428,0.000283598,8.0082e-07,-5.04106e-10,0.0296272,0.000285198,7.99308e-07,8.92764e-10,0.0299132,0.000286799,8.01986e-07,6.58379e-10,0.0302008,0.000288405,8.03961e-07,1.98971e-10,0.0304901,0.000290014,8.04558e-07,4.08382e-10,0.0307809,0.000291624,8.05783e-07,3.01839e-11,0.0310733,0.000293236,8.05874e-07,1.33343e-09,0.0313673,0.000294851,8.09874e-07,2.2419e-10,0.031663,0.000296472,8.10547e-07,-3.67606e-10,0.0319603,0.000298092,8.09444e-07,1.24624e-09,0.0322592,0.000299714,8.13182e-07,-8.92025e-10,0.0325597,0.000301338,8.10506e-07,2.32183e-09,0.0328619,0.000302966,8.17472e-07,-9.44719e-10,0.0331657,0.000304598,8.14638e-07,1.45703e-09,0.0334711,0.000306232,8.19009e-07,-1.15805e-09,0.0337781,0.000307866,8.15535e-07,3.17507e-09,0.0340868,0.000309507,8.2506e-07,-4.09161e-09,0.0343971,0.000311145,8.12785e-07,5.74079e-09,0.0347091,0.000312788,8.30007e-07,-3.97034e-09,0.0350227,0.000314436,8.18096e-07,2.68985e-09,0.035338,0.00031608,8.26166e-07,6.61676e-10,0.0356549,0.000317734,8.28151e-07,-1.61123e-09,0.0359734,0.000319386,8.23317e-07,2.05786e-09,0.0362936,0.000321038,8.29491e-07,8.30388e-10,0.0366155,0.0003227,8.31982e-07,-1.65424e-09,0.036939,0.000324359,8.27019e-07,2.06129e-09,0.0372642,0.000326019,8.33203e-07,8.59719e-10,0.0375911,0.000327688,8.35782e-07,-1.77488e-09,0.0379196,0.000329354,8.30458e-07,2.51464e-09,0.0382498,0.000331023,8.38002e-07,-8.33135e-10,0.0385817,0.000332696,8.35502e-07,8.17825e-10,0.0389152,0.00033437,8.37956e-07,1.28718e-09,0.0392504,0.00033605,8.41817e-07,-2.2413e-09,0.0395873,0.000337727,8.35093e-07,3.95265e-09,0.0399258,0.000339409,8.46951e-07,-2.39332e-09,0.0402661,0.000341095,8.39771e-07,1.89533e-09,0.040608,0.000342781,8.45457e-07,-1.46271e-09,0.0409517,0.000344467,8.41069e-07,3.95554e-09,0.041297,0.000346161,8.52936e-07,-3.18369e-09,0.041644,0.000347857,8.43385e-07,1.32873e-09,0.0419927,0.000349548,8.47371e-07,1.59402e-09,0.0423431,0.000351248,8.52153e-07,-2.54336e-10,0.0426952,0.000352951,8.5139e-07,-5.76676e-10,0.043049,0.000354652,8.4966e-07,2.56114e-09,0.0434045,0.000356359,8.57343e-07,-2.21744e-09,0.0437617,0.000358067,8.50691e-07,2.58344e-09,0.0441206,0.000359776,8.58441e-07,-6.65826e-10,0.0444813,0.000361491,8.56444e-07,7.99218e-11,0.0448436,0.000363204,8.56684e-07,3.46063e-10,0.0452077,0.000364919,8.57722e-07,2.26116e-09,0.0455734,0.000366641,8.64505e-07,-1.94005e-09,0.045941,0.000368364,8.58685e-07,1.77384e-09,0.0463102,0.000370087,8.64007e-07,-1.43005e-09,0.0466811,0.000371811,8.59717e-07,3.94634e-09,0.0470538,0.000373542,8.71556e-07,-3.17946e-09,0.0474282,0.000375276,8.62017e-07,1.32104e-09,0.0478043,0.000377003,8.6598e-07,1.62045e-09,0.0481822,0.00037874,8.70842e-07,-3.52297e-10,0.0485618,0.000380481,8.69785e-07,-2.11211e-10,0.0489432,0.00038222,8.69151e-07,1.19716e-09,0.0493263,0.000383962,8.72743e-07,-8.52026e-10,0.0497111,0.000385705,8.70187e-07,2.21092e-09,0.0500977,0.000387452,8.76819e-07,-5.41339e-10,0.050486,0.000389204,8.75195e-07,-4.5361e-11,0.0508761,0.000390954,8.75059e-07,7.22669e-10,0.0512679,0.000392706,8.77227e-07,8.79936e-10,0.0516615,0.000394463,8.79867e-07,-5.17048e-10,0.0520568,0.000396222,8.78316e-07,1.18833e-09,0.0524539,0.000397982,8.81881e-07,-5.11022e-10,0.0528528,0.000399744,8.80348e-07,8.55683e-10,0.0532534,0.000401507,8.82915e-07,8.13562e-10,0.0536558,0.000403276,8.85356e-07,-3.84603e-10,0.05406,0.000405045,8.84202e-07,7.24962e-10,0.0544659,0.000406816,8.86377e-07,1.20986e-09,0.0548736,0.000408592,8.90006e-07,-1.83896e-09,0.0552831,0.000410367,8.84489e-07,2.42071e-09,0.0556944,0.000412143,8.91751e-07,-3.93413e-10,0.0561074,0.000413925,8.90571e-07,-8.46967e-10,0.0565222,0.000415704,8.8803e-07,3.78122e-09,0.0569388,0.000417491,8.99374e-07,-3.1021e-09,0.0573572,0.000419281,8.90068e-07,1.17658e-09,0.0577774,0.000421064,8.93597e-07,2.12117e-09,0.0581993,0.000422858,8.99961e-07,-2.21068e-09,0.0586231,0.000424651,8.93329e-07,2.9961e-09,0.0590486,0.000426447,9.02317e-07,-2.32311e-09,0.059476,0.000428244,8.95348e-07,2.57122e-09,0.0599051,0.000430043,9.03062e-07,-5.11098e-10,0.0603361,0.000431847,9.01528e-07,-5.27166e-10,0.0607688,0.000433649,8.99947e-07,2.61984e-09,0.0612034,0.000435457,9.07806e-07,-2.50141e-09,0.0616397,0.000437265,9.00302e-07,3.66045e-09,0.0620779,0.000439076,9.11283e-07,-4.68977e-09,0.0625179,0.000440885,8.97214e-07,7.64783e-09,0.0629597,0.000442702,9.20158e-07,-7.27499e-09,0.0634033,0.000444521,8.98333e-07,6.55113e-09,0.0638487,0.000446337,9.17986e-07,-4.02844e-09,0.0642959,0.000448161,9.05901e-07,2.11196e-09,0.064745,0.000449979,9.12236e-07,3.03125e-09,0.0651959,0.000451813,9.2133e-07,-6.78648e-09,0.0656486,0.000453635,9.00971e-07,9.21375e-09,0.0661032,0.000455464,9.28612e-07,-7.71684e-09,0.0665596,0.000457299,9.05462e-07,6.7522e-09,0.0670178,0.00045913,9.25718e-07,-4.3907e-09,0.0674778,0.000460968,9.12546e-07,3.36e-09,0.0679397,0.000462803,9.22626e-07,-1.59876e-09,0.0684034,0.000464644,9.1783e-07,3.0351e-09,0.068869,0.000466488,9.26935e-07,-3.09101e-09,0.0693364,0.000468333,9.17662e-07,1.8785e-09,0.0698057,0.000470174,9.23298e-07,3.02733e-09,0.0702768,0.00047203,9.3238e-07,-6.53722e-09,0.0707497,0.000473875,9.12768e-07,8.22054e-09,0.0712245,0.000475725,9.37429e-07,-3.99325e-09,0.0717012,0.000477588,9.2545e-07,3.01839e-10,0.0721797,0.00047944,9.26355e-07,2.78597e-09,0.0726601,0.000481301,9.34713e-07,-3.99507e-09,0.0731423,0.000483158,9.22728e-07,5.7435e-09,0.0736264,0.000485021,9.39958e-07,-4.07776e-09,0.0741123,0.000486888,9.27725e-07,3.11695e-09,0.0746002,0.000488753,9.37076e-07,-9.39394e-10,0.0750898,0.000490625,9.34258e-07,6.4055e-10,0.0755814,0.000492495,9.3618e-07,-1.62265e-09,0.0760748,0.000494363,9.31312e-07,5.84995e-09,0.0765701,0.000496243,9.48861e-07,-6.87601e-09,0.0770673,0.00049812,9.28233e-07,6.75296e-09,0.0775664,0.000499997,9.48492e-07,-5.23467e-09,0.0780673,0.000501878,9.32788e-07,6.73523e-09,0.0785701,0.000503764,9.52994e-07,-6.80514e-09,0.0790748,0.000505649,9.32578e-07,5.5842e-09,0.0795814,0.000507531,9.49331e-07,-6.30583e-10,0.0800899,0.000509428,9.47439e-07,-3.0618e-09,0.0806003,0.000511314,9.38254e-07,5.4273e-09,0.0811125,0.000513206,9.54536e-07,-3.74627e-09,0.0816267,0.000515104,9.43297e-07,2.10713e-09,0.0821427,0.000516997,9.49618e-07,2.76839e-09,0.0826607,0.000518905,9.57924e-07,-5.73006e-09,0.0831805,0.000520803,9.40733e-07,5.25072e-09,0.0837023,0.0005227,9.56486e-07,-3.71718e-10,0.084226,0.000524612,9.5537e-07,-3.76404e-09,0.0847515,0.000526512,9.44078e-07,7.97735e-09,0.085279,0.000528424,9.6801e-07,-5.79367e-09,0.0858084,0.000530343,9.50629e-07,2.96268e-10,0.0863397,0.000532245,9.51518e-07,4.6086e-09,0.0868729,0.000534162,9.65344e-07,-3.82947e-09,0.087408,0.000536081,9.53856e-07,3.25861e-09,0.087945,0.000537998,9.63631e-07,-1.7543e-09,0.088484,0.00053992,9.58368e-07,3.75849e-09,0.0890249,0.000541848,9.69644e-07,-5.82891e-09,0.0895677,0.00054377,9.52157e-07,4.65593e-09,0.0901124,0.000545688,9.66125e-07,2.10643e-09,0.0906591,0.000547627,9.72444e-07,-5.63099e-09,0.0912077,0.000549555,9.55551e-07,5.51627e-09,0.0917582,0.000551483,9.721e-07,-1.53292e-09,0.0923106,0.000553422,9.67501e-07,6.15311e-10,0.092865,0.000555359,9.69347e-07,-9.28291e-10,0.0934213,0.000557295,9.66562e-07,3.09774e-09,0.0939796,0.000559237,9.75856e-07,-4.01186e-09,0.0945398,0.000561177,9.6382e-07,5.49892e-09,0.095102,0.000563121,9.80317e-07,-3.08258e-09,0.0956661,0.000565073,9.71069e-07,-6.19176e-10,0.0962321,0.000567013,9.69212e-07,5.55932e-09,0.0968001,0.000568968,9.8589e-07,-6.71704e-09,0.09737,0.00057092,9.65738e-07,6.40762e-09,0.0979419,0.00057287,9.84961e-07,-4.0122e-09,0.0985158,0.000574828,9.72925e-07,2.19059e-09,0.0990916,0.000576781,9.79496e-07,2.70048e-09,0.0996693,0.000578748,9.87598e-07,-5.54193e-09,0.100249,0.000580706,9.70972e-07,4.56597e-09,0.100831,0.000582662,9.8467e-07,2.17923e-09,0.101414,0.000584638,9.91208e-07,-5.83232e-09,0.102,0.000586603,9.73711e-07,6.24884e-09,0.102588,0.000588569,9.92457e-07,-4.26178e-09,0.103177,0.000590541,9.79672e-07,3.34781e-09,0.103769,0.00059251,9.89715e-07,-1.67904e-09,0.104362,0.000594485,9.84678e-07,3.36839e-09,0.104958,0.000596464,9.94783e-07,-4.34397e-09,0.105555,0.000598441,9.81751e-07,6.55696e-09,0.106155,0.000600424,1.00142e-06,-6.98272e-09,0.106756,0.000602406,9.80474e-07,6.4728e-09,0.107359,0.000604386,9.99893e-07,-4.00742e-09,0.107965,0.000606374,9.8787e-07,2.10654e-09,0.108572,0.000608356,9.9419e-07,3.0318e-09,0.109181,0.000610353,1.00329e-06,-6.7832e-09,0.109793,0.00061234,9.82936e-07,9.1998e-09,0.110406,0.000614333,1.01054e-06,-7.6642e-09,0.111021,0.000616331,9.87543e-07,6.55579e-09,0.111639,0.000618326,1.00721e-06,-3.65791e-09,0.112258,0.000620329,9.96236e-07,6.25467e-10,0.112879,0.000622324,9.98113e-07,1.15593e-09,0.113503,0.000624323,1.00158e-06,2.20158e-09,0.114128,0.000626333,1.00819e-06,-2.51191e-09,0.114755,0.000628342,1.00065e-06,3.95517e-10,0.115385,0.000630345,1.00184e-06,9.29807e-10,0.116016,0.000632351,1.00463e-06,3.33599e-09,0.116649,0.00063437,1.01463e-06,-6.82329e-09,0.117285,0.000636379,9.94163e-07,9.05595e-09,0.117922,0.000638395,1.02133e-06,-7.04862e-09,0.118562,0.000640416,1.00019e-06,4.23737e-09,0.119203,0.000642429,1.0129e-06,-2.45033e-09,0.119847,0.000644448,1.00555e-06,5.56395e-09,0.120492,0.000646475,1.02224e-06,-4.9043e-09,0.121139,0.000648505,1.00753e-06,-8.47952e-10,0.121789,0.000650518,1.00498e-06,8.29622e-09,0.122441,0.000652553,1.02987e-06,-9.98538e-09,0.123094,0.000654582,9.99914e-07,9.2936e-09,0.12375,0.00065661,1.02779e-06,-4.83707e-09,0.124407,0.000658651,1.01328e-06,2.60411e-09,0.125067,0.000660685,1.0211e-06,-5.57945e-09,0.125729,0.000662711,1.00436e-06,1.22631e-08,0.126392,0.000664756,1.04115e-06,-1.36704e-08,0.127058,0.000666798,1.00014e-06,1.26161e-08,0.127726,0.000668836,1.03798e-06,-6.99155e-09,0.128396,0.000670891,1.01701e-06,4.48836e-10,0.129068,0.000672926,1.01836e-06,5.19606e-09,0.129742,0.000674978,1.03394e-06,-6.3319e-09,0.130418,0.000677027,1.01495e-06,5.2305e-09,0.131096,0.000679073,1.03064e-06,3.11123e-10,0.131776,0.000681135,1.03157e-06,-6.47511e-09,0.132458,0.000683179,1.01215e-06,1.06882e-08,0.133142,0.000685235,1.04421e-06,-6.47519e-09,0.133829,0.000687304,1.02479e-06,3.11237e-10,0.134517,0.000689355,1.02572e-06,5.23035e-09,0.135207,0.000691422,1.04141e-06,-6.3316e-09,0.1359,0.000693486,1.02242e-06,5.19484e-09,0.136594,0.000695546,1.038e-06,4.53497e-10,0.137291,0.000697623,1.03936e-06,-7.00891e-09,0.137989,0.000699681,1.01834e-06,1.2681e-08,0.13869,0.000701756,1.05638e-06,-1.39128e-08,0.139393,0.000703827,1.01464e-06,1.31679e-08,0.140098,0.000705896,1.05414e-06,-8.95659e-09,0.140805,0.000707977,1.02727e-06,7.75742e-09,0.141514,0.000710055,1.05055e-06,-7.17182e-09,0.142225,0.000712135,1.02903e-06,6.02862e-09,0.142938,0.000714211,1.04712e-06,-2.04163e-09,0.143653,0.000716299,1.04099e-06,2.13792e-09,0.144371,0.000718387,1.04741e-06,-6.51009e-09,0.14509,0.000720462,1.02787e-06,9.00123e-09,0.145812,0.000722545,1.05488e-06,3.07523e-10,0.146535,0.000724656,1.0558e-06,-1.02312e-08,0.147261,0.000726737,1.02511e-06,1.0815e-08,0.147989,0.000728819,1.05755e-06,-3.22681e-09,0.148719,0.000730925,1.04787e-06,2.09244e-09,0.14945,0.000733027,1.05415e-06,-5.143e-09,0.150185,0.00073512,1.03872e-06,3.57844e-09,0.150921,0.000737208,1.04946e-06,5.73027e-09,0.151659,0.000739324,1.06665e-06,-1.15983e-08,0.152399,0.000741423,1.03185e-06,1.08605e-08,0.153142,0.000743519,1.06443e-06,-2.04106e-09,0.153886,0.000745642,1.05831e-06,-2.69642e-09,0.154633,0.00074775,1.05022e-06,-2.07425e-09,0.155382,0.000749844,1.044e-06,1.09934e-08,0.156133,0.000751965,1.07698e-06,-1.20972e-08,0.156886,0.000754083,1.04069e-06,7.59288e-09,0.157641,0.000756187,1.06347e-06,-3.37305e-09,0.158398,0.000758304,1.05335e-06,5.89921e-09,0.159158,0.000760428,1.07104e-06,-5.32248e-09,0.159919,0.000762554,1.05508e-06,4.8927e-10,0.160683,0.000764666,1.05654e-06,3.36547e-09,0.161448,0.000766789,1.06664e-06,9.50081e-10,0.162216,0.000768925,1.06949e-06,-7.16568e-09,0.162986,0.000771043,1.04799e-06,1.28114e-08,0.163758,0.000773177,1.08643e-06,-1.42774e-08,0.164533,0.000775307,1.0436e-06,1.44956e-08,0.165309,0.000777438,1.08708e-06,-1.39025e-08,0.166087,0.00077957,1.04538e-06,1.13118e-08,0.166868,0.000781695,1.07931e-06,-1.54224e-09,0.167651,0.000783849,1.07468e-06,-5.14312e-09,0.168436,0.000785983,1.05925e-06,7.21381e-09,0.169223,0.000788123,1.0809e-06,-8.81096e-09,0.170012,0.000790259,1.05446e-06,1.31289e-08,0.170803,0.000792407,1.09385e-06,-1.39022e-08,0.171597,0.000794553,1.05214e-06,1.26775e-08,0.172392,0.000796695,1.09018e-06,-7.00557e-09,0.17319,0.000798855,1.06916e-06,4.43796e-10,0.17399,0.000800994,1.07049e-06,5.23031e-09,0.174792,0.000803151,1.08618e-06,-6.46397e-09,0.175596,0.000805304,1.06679e-06,5.72444e-09,0.176403,0.000807455,1.08396e-06,-1.53254e-09,0.177211,0.000809618,1.07937e-06,4.05673e-10,0.178022,0.000811778,1.08058e-06,-9.01916e-11,0.178835,0.000813939,1.08031e-06,-4.49821e-11,0.17965,0.000816099,1.08018e-06,2.70234e-10,0.180467,0.00081826,1.08099e-06,-1.03603e-09,0.181286,0.000820419,1.07788e-06,3.87392e-09,0.182108,0.000822587,1.0895e-06,4.41522e-10,0.182932,0.000824767,1.09083e-06,-5.63997e-09,0.183758,0.000826932,1.07391e-06,7.21707e-09,0.184586,0.000829101,1.09556e-06,-8.32718e-09,0.185416,0.000831267,1.07058e-06,1.11907e-08,0.186248,0.000833442,1.10415e-06,-6.63336e-09,0.187083,0.00083563,1.08425e-06,4.41484e-10,0.187919,0.0008378,1.08557e-06,4.86754e-09,0.188758,0.000839986,1.10017e-06,-5.01041e-09,0.189599,0.000842171,1.08514e-06,2.72811e-10,0.190443,0.000844342,1.08596e-06,3.91916e-09,0.191288,0.000846526,1.09772e-06,-1.04819e-09,0.192136,0.000848718,1.09457e-06,2.73531e-10,0.192985,0.000850908,1.0954e-06,-4.58916e-11,0.193837,0.000853099,1.09526e-06,-9.01158e-11,0.194692,0.000855289,1.09499e-06,4.06506e-10,0.195548,0.00085748,1.09621e-06,-1.53595e-09,0.196407,0.000859668,1.0916e-06,5.73717e-09,0.197267,0.000861869,1.10881e-06,-6.51164e-09,0.19813,0.000864067,1.08928e-06,5.40831e-09,0.198995,0.000866261,1.1055e-06,-2.20401e-10,0.199863,0.000868472,1.10484e-06,-4.52652e-09,0.200732,0.000870668,1.09126e-06,3.42508e-09,0.201604,0.000872861,1.10153e-06,5.72762e-09,0.202478,0.000875081,1.11872e-06,-1.14344e-08,0.203354,0.000877284,1.08441e-06,1.02076e-08,0.204233,0.000879484,1.11504e-06,4.06355e-10,0.205113,0.000881715,1.11626e-06,-1.18329e-08,0.205996,0.000883912,1.08076e-06,1.71227e-08,0.206881,0.000886125,1.13213e-06,-1.19546e-08,0.207768,0.000888353,1.09626e-06,8.93465e-10,0.208658,0.000890548,1.09894e-06,8.38062e-09,0.209549,0.000892771,1.12408e-06,-4.61353e-09,0.210443,0.000895006,1.11024e-06,-4.82756e-09,0.211339,0.000897212,1.09576e-06,9.02245e-09,0.212238,0.00089943,1.12283e-06,-1.45997e-09,0.213138,0.000901672,1.11845e-06,-3.18255e-09,0.214041,0.000903899,1.1089e-06,-7.11073e-10,0.214946,0.000906115,1.10677e-06,6.02692e-09,0.215853,0.000908346,1.12485e-06,-8.49548e-09,0.216763,0.00091057,1.09936e-06,1.30537e-08,0.217675,0.000912808,1.13852e-06,-1.3917e-08,0.218588,0.000915044,1.09677e-06,1.28121e-08,0.219505,0.000917276,1.13521e-06,-7.5288e-09,0.220423,0.000919523,1.11262e-06,2.40205e-09,0.221344,0.000921756,1.11983e-06,-2.07941e-09,0.222267,0.000923989,1.11359e-06,5.91551e-09,0.223192,0.000926234,1.13134e-06,-6.68149e-09,0.224119,0.000928477,1.11129e-06,5.90929e-09,0.225049,0.000930717,1.12902e-06,-2.05436e-09,0.22598,0.000932969,1.12286e-06,2.30807e-09,0.226915,0.000935222,1.12978e-06,-7.17796e-09,0.227851,0.00093746,1.10825e-06,1.15028e-08,0.228789,0.000939711,1.14276e-06,-9.03083e-09,0.22973,0.000941969,1.11566e-06,9.71932e-09,0.230673,0.00094423,1.14482e-06,-1.49452e-08,0.231619,0.000946474,1.09998e-06,2.02591e-08,0.232566,0.000948735,1.16076e-06,-2.13879e-08,0.233516,0.000950993,1.0966e-06,2.05888e-08,0.234468,0.000953247,1.15837e-06,-1.62642e-08,0.235423,0.000955515,1.10957e-06,1.46658e-08,0.236379,0.000957779,1.15357e-06,-1.25966e-08,0.237338,0.000960048,1.11578e-06,5.91793e-09,0.238299,0.000962297,1.13353e-06,3.82602e-09,0.239263,0.000964576,1.14501e-06,-6.3208e-09,0.240229,0.000966847,1.12605e-06,6.55613e-09,0.241197,0.000969119,1.14572e-06,-5.00268e-09,0.242167,0.000971395,1.13071e-06,-1.44659e-09,0.243139,0.000973652,1.12637e-06,1.07891e-08,0.244114,0.000975937,1.15874e-06,-1.19073e-08,0.245091,0.000978219,1.12302e-06,7.03782e-09,0.246071,0.000980486,1.14413e-06,-1.34276e-09,0.247052,0.00098277,1.1401e-06,-1.66669e-09,0.248036,0.000985046,1.1351e-06,8.00935e-09,0.249022,0.00098734,1.15913e-06,-1.54694e-08,0.250011,0.000989612,1.11272e-06,2.4066e-08,0.251002,0.000991909,1.18492e-06,-2.11901e-08,0.251995,0.000994215,1.12135e-06,1.08973e-09,0.25299,0.000996461,1.12462e-06,1.68311e-08,0.253988,0.000998761,1.17511e-06,-8.8094e-09,0.254987,0.00100109,1.14868e-06,-1.13958e-08,0.25599,0.00100335,1.1145e-06,2.45902e-08,0.256994,0.00100565,1.18827e-06,-2.73603e-08,0.258001,0.00100795,1.10618e-06,2.52464e-08,0.25901,0.00101023,1.18192e-06,-1.40207e-08,0.260021,0.00101256,1.13986e-06,1.03387e-09,0.261035,0.00101484,1.14296e-06,9.8853e-09,0.262051,0.00101715,1.17262e-06,-1.07726e-08,0.263069,0.00101947,1.1403e-06,3.40272e-09,0.26409,0.00102176,1.15051e-06,-2.83827e-09,0.265113,0.00102405,1.142e-06,7.95039e-09,0.266138,0.00102636,1.16585e-06,8.39047e-10,0.267166,0.00102869,1.16836e-06,-1.13066e-08,0.268196,0.00103099,1.13444e-06,1.4585e-08,0.269228,0.00103331,1.1782e-06,-1.72314e-08,0.270262,0.00103561,1.1265e-06,2.45382e-08,0.271299,0.00103794,1.20012e-06,-2.13166e-08,0.272338,0.00104028,1.13617e-06,1.12364e-09,0.273379,0.00104255,1.13954e-06,1.68221e-08,0.274423,0.00104488,1.19001e-06,-8.80736e-09,0.275469,0.00104723,1.16358e-06,-1.13948e-08,0.276518,0.00104953,1.1294e-06,2.45839e-08,0.277568,0.00105186,1.20315e-06,-2.73361e-08,0.278621,0.00105418,1.12114e-06,2.51559e-08,0.279677,0.0010565,1.19661e-06,-1.36832e-08,0.280734,0.00105885,1.15556e-06,-2.25706e-10,0.281794,0.00106116,1.15488e-06,1.45862e-08,0.282857,0.00106352,1.19864e-06,-2.83167e-08,0.283921,0.00106583,1.11369e-06,3.90759e-08,0.284988,0.00106817,1.23092e-06,-3.85801e-08,0.286058,0.00107052,1.11518e-06,2.58375e-08,0.287129,0.00107283,1.19269e-06,-5.16498e-09,0.288203,0.0010752,1.1772e-06,-5.17768e-09,0.28928,0.00107754,1.16167e-06,-3.92671e-09,0.290358,0.00107985,1.14988e-06,2.08846e-08,0.29144,0.00108221,1.21254e-06,-2.00072e-08,0.292523,0.00108458,1.15252e-06,-4.60659e-10,0.293609,0.00108688,1.15114e-06,2.18499e-08,0.294697,0.00108925,1.21669e-06,-2.73343e-08,0.295787,0.0010916,1.13468e-06,2.78826e-08,0.29688,0.00109395,1.21833e-06,-2.45915e-08,0.297975,0.00109632,1.14456e-06,1.08787e-08,0.299073,0.00109864,1.17719e-06,1.08788e-08,0.300172,0.00110102,1.20983e-06,-2.45915e-08,0.301275,0.00110337,1.13605e-06,2.78828e-08,0.302379,0.00110573,1.2197e-06,-2.73348e-08,0.303486,0.00110808,1.1377e-06,2.18518e-08,0.304595,0.00111042,1.20325e-06,-4.67556e-10,0.305707,0.00111283,1.20185e-06,-1.99816e-08,0.306821,0.00111517,1.14191e-06,2.07891e-08,0.307937,0.00111752,1.20427e-06,-3.57026e-09,0.309056,0.00111992,1.19356e-06,-6.50797e-09,0.310177,0.00112228,1.17404e-06,-2.00165e-10,0.3113,0.00112463,1.17344e-06,7.30874e-09,0.312426,0.001127,1.19536e-06,7.67424e-10,0.313554,0.00112939,1.19767e-06,-1.03784e-08,0.314685,0.00113176,1.16653e-06,1.09437e-08,0.315818,0.00113412,1.19936e-06,-3.59406e-09,0.316953,0.00113651,1.18858e-06,3.43251e-09,0.318091,0.0011389,1.19888e-06,-1.0136e-08,0.319231,0.00114127,1.16847e-06,7.30915e-09,0.320374,0.00114363,1.1904e-06,1.07018e-08,0.321518,0.00114604,1.2225e-06,-2.03137e-08,0.322666,0.00114842,1.16156e-06,1.09484e-08,0.323815,0.00115078,1.19441e-06,6.32224e-09,0.324967,0.00115319,1.21337e-06,-6.43509e-09,0.326122,0.00115559,1.19407e-06,-1.03842e-08,0.327278,0.00115795,1.16291e-06,1.81697e-08,0.328438,0.00116033,1.21742e-06,-2.6901e-09,0.329599,0.00116276,1.20935e-06,-7.40939e-09,0.330763,0.00116515,1.18713e-06,2.52533e-09,0.331929,0.00116754,1.1947e-06,-2.69191e-09,0.333098,0.00116992,1.18663e-06,8.24218e-09,0.334269,0.00117232,1.21135e-06,-4.74377e-10,0.335443,0.00117474,1.20993e-06,-6.34471e-09,0.336619,0.00117714,1.1909e-06,-3.94922e-09,0.337797,0.00117951,1.17905e-06,2.21417e-08,0.338978,0.00118193,1.24547e-06,-2.50128e-08,0.340161,0.00118435,1.17043e-06,1.8305e-08,0.341346,0.00118674,1.22535e-06,-1.84048e-08,0.342534,0.00118914,1.17013e-06,2.55121e-08,0.343725,0.00119156,1.24667e-06,-2.40389e-08,0.344917,0.00119398,1.17455e-06,1.10389e-08,0.346113,0.00119636,1.20767e-06,9.68574e-09,0.34731,0.0011988,1.23673e-06,-1.99797e-08,0.34851,0.00120122,1.17679e-06,1.06284e-08,0.349713,0.0012036,1.20867e-06,7.26868e-09,0.350917,0.00120604,1.23048e-06,-9.90072e-09,0.352125,0.00120847,1.20078e-06,2.53177e-09,0.353334,0.00121088,1.20837e-06,-2.26199e-10,0.354546,0.0012133,1.20769e-06,-1.62705e-09,0.355761,0.00121571,1.20281e-06,6.73435e-09,0.356978,0.00121813,1.22302e-06,4.49207e-09,0.358197,0.00122059,1.23649e-06,-2.47027e-08,0.359419,0.00122299,1.16238e-06,3.47142e-08,0.360643,0.00122542,1.26653e-06,-2.47472e-08,0.36187,0.00122788,1.19229e-06,4.66965e-09,0.363099,0.00123028,1.20629e-06,6.06872e-09,0.36433,0.00123271,1.2245e-06,8.57729e-10,0.365564,0.00123516,1.22707e-06,-9.49952e-09,0.366801,0.00123759,1.19858e-06,7.33792e-09,0.36804,0.00124001,1.22059e-06,9.95025e-09,0.369281,0.00124248,1.25044e-06,-1.73366e-08,0.370525,0.00124493,1.19843e-06,-2.08464e-10,0.371771,0.00124732,1.1978e-06,1.81704e-08,0.373019,0.00124977,1.25232e-06,-1.28683e-08,0.37427,0.00125224,1.21371e-06,3.50042e-09,0.375524,0.00125468,1.22421e-06,-1.1335e-09,0.37678,0.00125712,1.22081e-06,1.03345e-09,0.378038,0.00125957,1.22391e-06,-3.00023e-09,0.379299,0.00126201,1.21491e-06,1.09676e-08,0.380562,0.00126447,1.24781e-06,-1.10676e-08,0.381828,0.00126693,1.21461e-06,3.50042e-09,0.383096,0.00126937,1.22511e-06,-2.93403e-09,0.384366,0.00127181,1.21631e-06,8.23574e-09,0.385639,0.00127427,1.24102e-06,-2.06607e-10,0.386915,0.00127675,1.2404e-06,-7.40935e-09,0.388193,0.00127921,1.21817e-06,4.1761e-11,0.389473,0.00128165,1.21829e-06,7.24223e-09,0.390756,0.0012841,1.24002e-06,7.91564e-10,0.392042,0.00128659,1.2424e-06,-1.04086e-08,0.393329,0.00128904,1.21117e-06,1.10405e-08,0.39462,0.0012915,1.24429e-06,-3.951e-09,0.395912,0.00129397,1.23244e-06,4.7634e-09,0.397208,0.00129645,1.24673e-06,-1.51025e-08,0.398505,0.0012989,1.20142e-06,2.58443e-08,0.399805,0.00130138,1.27895e-06,-2.86702e-08,0.401108,0.00130385,1.19294e-06,2.92318e-08,0.402413,0.00130632,1.28064e-06,-2.86524e-08,0.403721,0.0013088,1.19468e-06,2.57731e-08,0.405031,0.00131127,1.272e-06,-1.48355e-08,0.406343,0.00131377,1.2275e-06,3.76652e-09,0.407658,0.00131623,1.23879e-06,-2.30784e-10,0.408976,0.00131871,1.2381e-06,-2.84331e-09,0.410296,0.00132118,1.22957e-06,1.16041e-08,0.411618,0.00132367,1.26438e-06,-1.37708e-08,0.412943,0.00132616,1.22307e-06,1.36768e-08,0.41427,0.00132865,1.2641e-06,-1.1134e-08,0.4156,0.00133114,1.2307e-06,1.05714e-09,0.416933,0.00133361,1.23387e-06,6.90538e-09,0.418267,0.00133609,1.25459e-06,1.12372e-09,0.419605,0.00133861,1.25796e-06,-1.14002e-08,0.420945,0.00134109,1.22376e-06,1.46747e-08,0.422287,0.00134358,1.26778e-06,-1.7496e-08,0.423632,0.00134606,1.21529e-06,2.5507e-08,0.424979,0.00134857,1.29182e-06,-2.49272e-08,0.426329,0.00135108,1.21703e-06,1.45972e-08,0.427681,0.00135356,1.26083e-06,-3.65935e-09,0.429036,0.00135607,1.24985e-06,4.00178e-11,0.430393,0.00135857,1.24997e-06,3.49917e-09,0.431753,0.00136108,1.26047e-06,-1.40366e-08,0.433116,0.00136356,1.21836e-06,2.28448e-08,0.43448,0.00136606,1.28689e-06,-1.77378e-08,0.435848,0.00136858,1.23368e-06,1.83043e-08,0.437218,0.0013711,1.28859e-06,-2.56769e-08,0.43859,0.0013736,1.21156e-06,2.47987e-08,0.439965,0.0013761,1.28595e-06,-1.39133e-08,0.441342,0.00137863,1.24421e-06,1.05202e-09,0.442722,0.00138112,1.24737e-06,9.70507e-09,0.444104,0.00138365,1.27649e-06,-1.00698e-08,0.445489,0.00138617,1.24628e-06,7.72123e-10,0.446877,0.00138867,1.24859e-06,6.98132e-09,0.448267,0.00139118,1.26954e-06,1.10477e-09,0.449659,0.00139373,1.27285e-06,-1.14003e-08,0.451054,0.00139624,1.23865e-06,1.4694e-08,0.452452,0.00139876,1.28273e-06,-1.75734e-08,0.453852,0.00140127,1.23001e-06,2.5797e-08,0.455254,0.00140381,1.3074e-06,-2.60097e-08,0.456659,0.00140635,1.22937e-06,1.86371e-08,0.458067,0.00140886,1.28529e-06,-1.8736e-08,0.459477,0.00141137,1.22908e-06,2.65048e-08,0.46089,0.00141391,1.30859e-06,-2.76784e-08,0.462305,0.00141645,1.22556e-06,2.46043e-08,0.463722,0.00141897,1.29937e-06,-1.11341e-08,0.465143,0.00142154,1.26597e-06,-9.87033e-09,0.466565,0.00142404,1.23636e-06,2.08131e-08,0.467991,0.00142657,1.2988e-06,-1.37773e-08,0.469419,0.00142913,1.25746e-06,4.49378e-09,0.470849,0.00143166,1.27094e-06,-4.19781e-09,0.472282,0.00143419,1.25835e-06,1.22975e-08,0.473717,0.00143674,1.29524e-06,-1.51902e-08,0.475155,0.00143929,1.24967e-06,1.86608e-08,0.476596,0.00144184,1.30566e-06,-2.96506e-08,0.478039,0.00144436,1.2167e-06,4.03368e-08,0.479485,0.00144692,1.33771e-06,-4.22896e-08,0.480933,0.00144947,1.21085e-06,3.94148e-08,0.482384,0.00145201,1.32909e-06,-2.59626e-08,0.483837,0.00145459,1.2512e-06,4.83124e-09,0.485293,0.0014571,1.2657e-06,6.63757e-09,0.486751,0.00145966,1.28561e-06,-1.57911e-09,0.488212,0.00146222,1.28087e-06,-3.21468e-10,0.489676,0.00146478,1.27991e-06,2.86517e-09,0.491142,0.00146735,1.2885e-06,-1.11392e-08,0.49261,0.00146989,1.25508e-06,1.18893e-08,0.494081,0.00147244,1.29075e-06,-6.61574e-09,0.495555,0.001475,1.27091e-06,1.45736e-08,0.497031,0.00147759,1.31463e-06,-2.18759e-08,0.49851,0.00148015,1.249e-06,1.33252e-08,0.499992,0.00148269,1.28897e-06,-1.62277e-09,0.501476,0.00148526,1.28411e-06,-6.83421e-09,0.502962,0.00148781,1.2636e-06,2.89596e-08,0.504451,0.00149042,1.35048e-06,-4.93997e-08,0.505943,0.00149298,1.20228e-06,4.94299e-08,0.507437,0.00149553,1.35057e-06,-2.91107e-08,0.508934,0.00149814,1.26324e-06,7.40848e-09,0.510434,0.00150069,1.28547e-06,-5.23187e-10,0.511936,0.00150326,1.2839e-06,-5.31585e-09,0.51344,0.00150581,1.26795e-06,2.17866e-08,0.514947,0.00150841,1.33331e-06,-2.22257e-08,0.516457,0.00151101,1.26663e-06,7.51178e-09,0.517969,0.00151357,1.28917e-06,-7.82128e-09,0.519484,0.00151613,1.2657e-06,2.37733e-08,0.521002,0.00151873,1.33702e-06,-2.76674e-08,0.522522,0.00152132,1.25402e-06,2.72917e-08,0.524044,0.00152391,1.3359e-06,-2.18949e-08,0.525569,0.00152652,1.27021e-06,6.83372e-10,0.527097,0.00152906,1.27226e-06,1.91613e-08,0.528628,0.00153166,1.32974e-06,-1.77241e-08,0.53016,0.00153427,1.27657e-06,-7.86963e-09,0.531696,0.0015368,1.25296e-06,4.92027e-08,0.533234,0.00153945,1.40057e-06,-6.9732e-08,0.534775,0.00154204,1.19138e-06,5.09114e-08,0.536318,0.00154458,1.34411e-06,-1.4704e-08,0.537864,0.00154722,1.3e-06,7.9048e-09,0.539413,0.00154984,1.32371e-06,-1.69152e-08,0.540964,0.00155244,1.27297e-06,1.51355e-10,0.542517,0.00155499,1.27342e-06,1.63099e-08,0.544074,0.00155758,1.32235e-06,-5.78647e-09,0.545633,0.00156021,1.30499e-06,6.83599e-09,0.547194,0.00156284,1.3255e-06,-2.15575e-08,0.548758,0.00156543,1.26083e-06,1.97892e-08,0.550325,0.00156801,1.32019e-06,2.00525e-09,0.551894,0.00157065,1.32621e-06,-2.78103e-08,0.553466,0.00157322,1.24278e-06,4.96314e-08,0.555041,0.00157586,1.39167e-06,-5.1506e-08,0.556618,0.00157849,1.23716e-06,3.71835e-08,0.558198,0.00158107,1.34871e-06,-3.76233e-08,0.55978,0.00158366,1.23584e-06,5.37052e-08,0.561365,0.00158629,1.39695e-06,-5.79884e-08,0.562953,0.00158891,1.22299e-06,5.90392e-08,0.564543,0.00159153,1.4001e-06,-5.89592e-08,0.566136,0.00159416,1.22323e-06,5.7588e-08,0.567731,0.00159678,1.39599e-06,-5.21835e-08,0.569329,0.00159941,1.23944e-06,3.19369e-08,0.57093,0.00160199,1.33525e-06,-1.59594e-08,0.572533,0.00160461,1.28737e-06,3.19006e-08,0.574139,0.00160728,1.38307e-06,-5.20383e-08,0.575748,0.00160989,1.22696e-06,5.70431e-08,0.577359,0.00161251,1.39809e-06,-5.69247e-08,0.578973,0.00161514,1.22731e-06,5.14463e-08,0.580589,0.00161775,1.38165e-06,-2.9651e-08,0.582208,0.00162042,1.2927e-06,7.55339e-09,0.58383,0.00162303,1.31536e-06,-5.62636e-10,0.585455,0.00162566,1.31367e-06,-5.30281e-09,0.587081,0.00162827,1.29776e-06,2.17738e-08,0.588711,0.00163093,1.36309e-06,-2.21875e-08,0.590343,0.00163359,1.29652e-06,7.37164e-09,0.591978,0.00163621,1.31864e-06,-7.29907e-09,0.593616,0.00163882,1.29674e-06,2.18247e-08,0.595256,0.00164148,1.36221e-06,-2.03952e-08,0.596899,0.00164414,1.30103e-06,1.51241e-10,0.598544,0.00164675,1.30148e-06,1.97902e-08,0.600192,0.00164941,1.36085e-06,-1.97074e-08,0.601843,0.00165207,1.30173e-06,-5.65175e-10,0.603496,0.00165467,1.30004e-06,2.1968e-08,0.605152,0.00165734,1.36594e-06,-2.77024e-08,0.606811,0.00165999,1.28283e-06,2.92369e-08,0.608472,0.00166264,1.37054e-06,-2.96407e-08,0.610136,0.00166529,1.28162e-06,2.97215e-08,0.611803,0.00166795,1.37079e-06,-2.96408e-08,0.613472,0.0016706,1.28186e-06,2.92371e-08,0.615144,0.00167325,1.36957e-06,-2.77031e-08,0.616819,0.00167591,1.28647e-06,2.19708e-08,0.618496,0.00167855,1.35238e-06,-5.75407e-10,0.620176,0.00168125,1.35065e-06,-1.9669e-08,0.621858,0.00168389,1.29164e-06,1.96468e-08,0.623544,0.00168653,1.35058e-06,6.86403e-10,0.625232,0.00168924,1.35264e-06,-2.23924e-08,0.626922,0.00169187,1.28547e-06,2.92788e-08,0.628615,0.00169453,1.3733e-06,-3.51181e-08,0.630311,0.00169717,1.26795e-06,5.15889e-08,0.63201,0.00169987,1.42272e-06,-5.2028e-08,0.633711,0.00170255,1.26663e-06,3.73139e-08,0.635415,0.0017052,1.37857e-06,-3.76227e-08,0.637121,0.00170784,1.2657e-06,5.35722e-08,0.63883,0.00171054,1.42642e-06,-5.74567e-08,0.640542,0.00171322,1.25405e-06,5.70456e-08,0.642257,0.0017159,1.42519e-06,-5.15163e-08,0.643974,0.00171859,1.27064e-06,2.98103e-08,0.645694,0.00172122,1.36007e-06,-8.12016e-09,0.647417,0.00172392,1.33571e-06,2.67039e-09,0.649142,0.0017266,1.34372e-06,-2.56152e-09,0.65087,0.00172928,1.33604e-06,7.57571e-09,0.6526,0.00173197,1.35876e-06,-2.77413e-08,0.654334,0.00173461,1.27554e-06,4.3785e-08,0.65607,0.00173729,1.40689e-06,-2.81896e-08,0.657808,0.00174002,1.32233e-06,9.36893e-09,0.65955,0.00174269,1.35043e-06,-9.28617e-09,0.661294,0.00174536,1.32257e-06,2.77757e-08,0.66304,0.00174809,1.4059e-06,-4.2212e-08,0.66479,0.00175078,1.27926e-06,2.1863e-08,0.666542,0.0017534,1.34485e-06,1.43648e-08,0.668297,0.00175613,1.38795e-06,-1.97177e-08,0.670054,0.00175885,1.3288e-06,4.90115e-09,0.671814,0.00176152,1.3435e-06,1.13232e-10,0.673577,0.00176421,1.34384e-06,-5.3542e-09,0.675343,0.00176688,1.32778e-06,2.13035e-08,0.677111,0.0017696,1.39169e-06,-2.02553e-08,0.678882,0.00177232,1.33092e-06,1.13005e-10,0.680656,0.00177499,1.33126e-06,1.98031e-08,0.682432,0.00177771,1.39067e-06,-1.97211e-08,0.684211,0.00178043,1.33151e-06,-5.2349e-10,0.685993,0.00178309,1.32994e-06,2.18151e-08,0.687777,0.00178582,1.39538e-06,-2.71325e-08,0.689564,0.00178853,1.31398e-06,2.71101e-08,0.691354,0.00179124,1.39531e-06,-2.17035e-08,0.693147,0.00179396,1.3302e-06,9.92865e-11,0.694942,0.00179662,1.3305e-06,2.13063e-08,0.69674,0.00179935,1.39442e-06,-2.57198e-08,0.698541,0.00180206,1.31726e-06,2.19682e-08,0.700344,0.00180476,1.38317e-06,-2.54852e-09,0.70215,0.00180752,1.37552e-06,-1.17741e-08,0.703959,0.00181023,1.3402e-06,-9.95999e-09,0.705771,0.00181288,1.31032e-06,5.16141e-08,0.707585,0.00181566,1.46516e-06,-7.72869e-08,0.709402,0.00181836,1.2333e-06,7.87197e-08,0.711222,0.00182106,1.46946e-06,-5.87781e-08,0.713044,0.00182382,1.29312e-06,3.71834e-08,0.714869,0.00182652,1.40467e-06,-3.03511e-08,0.716697,0.00182924,1.31362e-06,2.46161e-08,0.718528,0.00183194,1.38747e-06,-8.5087e-09,0.720361,0.00183469,1.36194e-06,9.41892e-09,0.722197,0.00183744,1.3902e-06,-2.91671e-08,0.724036,0.00184014,1.3027e-06,4.76448e-08,0.725878,0.00184288,1.44563e-06,-4.22028e-08,0.727722,0.00184565,1.31902e-06,1.95682e-09,0.729569,0.00184829,1.3249e-06,3.43754e-08,0.731419,0.00185104,1.42802e-06,-2.0249e-08,0.733271,0.00185384,1.36727e-06,-1.29838e-08,0.735126,0.00185654,1.32832e-06,1.25794e-08,0.736984,0.00185923,1.36606e-06,2.22711e-08,0.738845,0.00186203,1.43287e-06,-4.20594e-08,0.740708,0.00186477,1.3067e-06,2.67571e-08,0.742574,0.00186746,1.38697e-06,-5.36424e-09,0.744443,0.00187022,1.37087e-06,-5.30023e-09,0.746315,0.00187295,1.35497e-06,2.65653e-08,0.748189,0.00187574,1.43467e-06,-4.13564e-08,0.750066,0.00187848,1.3106e-06,1.9651e-08,0.751946,0.00188116,1.36955e-06,2.23572e-08,0.753828,0.00188397,1.43663e-06,-4.9475e-08,0.755714,0.00188669,1.2882e-06,5.63335e-08,0.757602,0.00188944,1.4572e-06,-5.66499e-08,0.759493,0.00189218,1.28725e-06,5.10567e-08,0.761386,0.00189491,1.44042e-06,-2.83677e-08,0.763283,0.00189771,1.35532e-06,2.80962e-09,0.765182,0.00190042,1.36375e-06,1.71293e-08,0.767083,0.0019032,1.41513e-06,-1.17221e-08,0.768988,0.001906,1.37997e-06,-2.98453e-08,0.770895,0.00190867,1.29043e-06,7.14987e-08,0.772805,0.00191146,1.50493e-06,-7.73354e-08,0.774718,0.00191424,1.27292e-06,5.90292e-08,0.776634,0.00191697,1.45001e-06,-3.9572e-08,0.778552,0.00191975,1.33129e-06,3.9654e-08,0.780473,0.00192253,1.45026e-06,-5.94395e-08,0.782397,0.00192525,1.27194e-06,7.88945e-08,0.784324,0.00192803,1.50862e-06,-7.73249e-08,0.786253,0.00193082,1.27665e-06,5.15913e-08,0.788185,0.00193352,1.43142e-06,-9.83099e-09,0.79012,0.00193636,1.40193e-06,-1.22672e-08,0.792058,0.00193912,1.36513e-06,-7.05275e-10,0.793999,0.00194185,1.36301e-06,1.50883e-08,0.795942,0.00194462,1.40828e-06,-4.33147e-11,0.797888,0.00194744,1.40815e-06,-1.49151e-08,0.799837,0.00195021,1.3634e-06,9.93244e-11,0.801788,0.00195294,1.3637e-06,1.45179e-08,0.803743,0.00195571,1.40725e-06,1.43363e-09,0.8057,0.00195853,1.41155e-06,-2.02525e-08,0.80766,0.00196129,1.35079e-06,1.99718e-08,0.809622,0.00196405,1.41071e-06,-3.01649e-11,0.811588,0.00196687,1.41062e-06,-1.9851e-08,0.813556,0.00196964,1.35107e-06,1.98296e-08,0.815527,0.0019724,1.41056e-06,1.37485e-10,0.817501,0.00197522,1.41097e-06,-2.03796e-08,0.819477,0.00197798,1.34983e-06,2.17763e-08,0.821457,0.00198074,1.41516e-06,-7.12085e-09,0.823439,0.00198355,1.3938e-06,6.70707e-09,0.825424,0.00198636,1.41392e-06,-1.97074e-08,0.827412,0.00198913,1.35479e-06,1.25179e-08,0.829402,0.00199188,1.39235e-06,2.92405e-08,0.831396,0.00199475,1.48007e-06,-6.98755e-08,0.833392,0.0019975,1.27044e-06,7.14477e-08,0.835391,0.00200026,1.48479e-06,-3.71014e-08,0.837392,0.00200311,1.37348e-06,1.73533e-08,0.839397,0.00200591,1.42554e-06,-3.23118e-08,0.841404,0.00200867,1.32861e-06,5.2289e-08,0.843414,0.00201148,1.48547e-06,-5.76348e-08,0.845427,0.00201428,1.31257e-06,5.9041e-08,0.847443,0.00201708,1.48969e-06,-5.93197e-08,0.849461,0.00201988,1.31173e-06,5.90289e-08,0.851482,0.00202268,1.48882e-06,-5.75864e-08,0.853507,0.00202549,1.31606e-06,5.21075e-08,0.855533,0.00202828,1.47238e-06,-3.16344e-08,0.857563,0.00203113,1.37748e-06,1.48257e-08,0.859596,0.00203393,1.42196e-06,-2.76684e-08,0.861631,0.00203669,1.33895e-06,3.62433e-08,0.863669,0.00203947,1.44768e-06,1.90463e-09,0.86571,0.00204237,1.45339e-06,-4.38617e-08,0.867754,0.00204515,1.32181e-06,5.43328e-08,0.8698,0.00204796,1.48481e-06,-5.42603e-08,0.87185,0.00205076,1.32203e-06,4.34989e-08,0.873902,0.00205354,1.45252e-06,-5.26029e-10,0.875957,0.00205644,1.45095e-06,-4.13949e-08,0.878015,0.00205922,1.32676e-06,4.68962e-08,0.880075,0.00206201,1.46745e-06,-2.69807e-08,0.882139,0.00206487,1.38651e-06,1.42181e-09,0.884205,0.00206764,1.39077e-06,2.12935e-08,0.886274,0.00207049,1.45465e-06,-2.69912e-08,0.888346,0.00207332,1.37368e-06,2.70664e-08,0.890421,0.00207615,1.45488e-06,-2.16698e-08,0.892498,0.00207899,1.38987e-06,8.14756e-12,0.894579,0.00208177,1.38989e-06,2.16371e-08,0.896662,0.00208462,1.45481e-06,-2.6952e-08,0.898748,0.00208744,1.37395e-06,2.65663e-08,0.900837,0.00209027,1.45365e-06,-1.97084e-08,0.902928,0.00209312,1.39452e-06,-7.33731e-09,0.905023,0.00209589,1.37251e-06,4.90578e-08,0.90712,0.00209878,1.51968e-06,-6.96845e-08,0.90922,0.00210161,1.31063e-06,5.08664e-08,0.911323,0.00210438,1.46323e-06,-1.45717e-08,0.913429,0.00210727,1.41952e-06,7.42038e-09,0.915538,0.00211013,1.44178e-06,-1.51097e-08,0.917649,0.00211297,1.39645e-06,-6.58618e-09,0.919764,0.00211574,1.37669e-06,4.14545e-08,0.921881,0.00211862,1.50105e-06,-4.00222e-08,0.924001,0.0021215,1.38099e-06,-5.7518e-10,0.926124,0.00212426,1.37926e-06,4.23229e-08,0.92825,0.00212714,1.50623e-06,-4.9507e-08,0.930378,0.00213001,1.35771e-06,3.64958e-08,0.93251,0.00213283,1.4672e-06,-3.68713e-08,0.934644,0.00213566,1.35658e-06,5.13848e-08,0.936781,0.00213852,1.51074e-06,-4.94585e-08,0.938921,0.0021414,1.36236e-06,2.72399e-08,0.941064,0.0021442,1.44408e-06,1.0372e-10,0.943209,0.00214709,1.44439e-06,-2.76547e-08,0.945358,0.0021499,1.36143e-06,5.09106e-08,0.947509,0.00215277,1.51416e-06,-5.67784e-08,0.949663,0.00215563,1.34382e-06,5.69935e-08,0.95182,0.00215849,1.5148e-06,-5.19861e-08,0.95398,0.00216136,1.35885e-06,3.17417e-08,0.956143,0.00216418,1.45407e-06,-1.53758e-08,0.958309,0.00216704,1.40794e-06,2.97615e-08,0.960477,0.00216994,1.49723e-06,-4.40657e-08,0.962649,0.00217281,1.36503e-06,2.72919e-08,0.964823,0.00217562,1.44691e-06,-5.49729e-09,0.967,0.0021785,1.43041e-06,-5.30273e-09,0.96918,0.00218134,1.41451e-06,2.67084e-08,0.971363,0.00218425,1.49463e-06,-4.19265e-08,0.973548,0.00218711,1.36885e-06,2.17881e-08,0.975737,0.00218992,1.43422e-06,1.43789e-08,0.977928,0.00219283,1.47735e-06,-1.96989e-08,0.980122,0.00219572,1.41826e-06,4.81221e-09,0.98232,0.00219857,1.43269e-06,4.50048e-10,0.98452,0.00220144,1.43404e-06,-6.61237e-09,0.986722,0.00220429,1.41421e-06,2.59993e-08,0.988928,0.0022072,1.4922e-06,-3.77803e-08,0.991137,0.00221007,1.37886e-06,5.9127e-09,0.993348,0.00221284,1.3966e-06,1.33339e-07,0.995563,0.00221604,1.79662e-06,-5.98872e-07,0.99778,0.00222015,0.,0.};
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void RGB2LabConvert_32F(const T& src, D& dst)
+ {
+ const float _1_3 = 1.0f / 3.0f;
+ const float _a = 16.0f / 116.0f;
+
+ float B = blueIdx == 0 ? src.x : src.z;
+ float G = src.y;
+ float R = blueIdx == 0 ? src.z : src.x;
+
+ if (srgb)
+ {
+ B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE);
+ G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE);
+ R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE);
+ }
+
+ float X = B * 0.189828f + G * 0.376219f + R * 0.433953f;
+ float Y = B * 0.072169f + G * 0.715160f + R * 0.212671f;
+ float Z = B * 0.872766f + G * 0.109477f + R * 0.017758f;
+
+ float FX = X > 0.008856f ? ::powf(X, _1_3) : (7.787f * X + _a);
+ float FY = Y > 0.008856f ? ::powf(Y, _1_3) : (7.787f * Y + _a);
+ float FZ = Z > 0.008856f ? ::powf(Z, _1_3) : (7.787f * Z + _a);
+
+ float L = Y > 0.008856f ? (116.f * FY - 16.f) : (903.3f * Y);
+ float a = 500.f * (FX - FY);
+ float b = 200.f * (FY - FZ);
+
+ dst.x = L;
+ dst.y = a;
+ dst.z = b;
+ }
+
+ template <typename T, int scn, int dcn, bool srgb, int blueIdx> struct RGB2Lab;
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct RGB2Lab<uchar, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<uchar, scn>::vec_type, typename TypeVec<uchar, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<uchar, dcn>::vec_type operator ()(const typename TypeVec<uchar, scn>::vec_type& src) const
+ {
+ typename TypeVec<uchar, dcn>::vec_type dst;
+
+ RGB2LabConvert_8U<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2Lab() {}
+ __host__ __device__ __forceinline__ RGB2Lab(const RGB2Lab&) {}
+ };
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct RGB2Lab<float, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ RGB2LabConvert_32F<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2Lab() {}
+ __host__ __device__ __forceinline__ RGB2Lab(const RGB2Lab&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2Lab_TRAITS(name, scn, dcn, srgb, blueIdx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2Lab<T, scn, dcn, srgb, blueIdx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ __constant__ float c_sRGBInvGammaTab[] = {0,0.0126255,0.,-8.33961e-06,0.0126172,0.0126005,-2.50188e-05,4.1698e-05,0.0252344,0.0126756,0.000100075,-0.000158451,0.0378516,0.0124004,-0.000375277,-0.000207393,0.0496693,0.0110276,-0.000997456,0.00016837,0.0598678,0.00953783,-0.000492346,2.07235e-05,0.068934,0.00861531,-0.000430176,3.62876e-05,0.0771554,0.00786382,-0.000321313,1.87625e-05,0.0847167,0.00727748,-0.000265025,1.53594e-05,0.0917445,0.00679351,-0.000218947,1.10545e-05,0.0983301,0.00638877,-0.000185784,8.66984e-06,0.104542,0.00604322,-0.000159774,6.82996e-06,0.110432,0.00574416,-0.000139284,5.51008e-06,0.116042,0.00548212,-0.000122754,4.52322e-06,0.121406,0.00525018,-0.000109184,3.75557e-06,0.126551,0.00504308,-9.79177e-05,3.17134e-06,0.131499,0.00485676,-8.84037e-05,2.68469e-06,0.13627,0.004688,-8.03496e-05,2.31725e-06,0.14088,0.00453426,-7.33978e-05,2.00868e-06,0.145343,0.00439349,-6.73718e-05,1.74775e-06,0.149671,0.00426399,-6.21286e-05,1.53547e-06,0.153875,0.00414434,-5.75222e-05,1.364e-06,0.157963,0.00403338,-5.34301e-05,1.20416e-06,0.161944,0.00393014,-4.98177e-05,1.09114e-06,0.165825,0.00383377,-4.65443e-05,9.57987e-07,0.169613,0.00374356,-4.36703e-05,8.88359e-07,0.173314,0.00365888,-4.10052e-05,7.7849e-07,0.176933,0.00357921,-3.86697e-05,7.36254e-07,0.180474,0.00350408,-3.6461e-05,6.42534e-07,0.183942,0.00343308,-3.45334e-05,6.12614e-07,0.187342,0.00336586,-3.26955e-05,5.42894e-07,0.190675,0.00330209,-3.10669e-05,5.08967e-07,0.193947,0.00324149,-2.954e-05,4.75977e-07,0.197159,0.00318383,-2.8112e-05,4.18343e-07,0.200315,0.00312887,-2.6857e-05,4.13651e-07,0.203418,0.00307639,-2.5616e-05,3.70847e-07,0.206469,0.00302627,-2.45035e-05,3.3813e-07,0.209471,0.00297828,-2.34891e-05,3.32999e-07,0.212426,0.0029323,-2.24901e-05,2.96826e-07,0.215336,0.00288821,-2.15996e-05,2.82736e-07,0.218203,0.00284586,-2.07514e-05,2.70961e-07,0.221029,0.00280517,-1.99385e-05,2.42744e-07,0.223814,0.00276602,-1.92103e-05,2.33277e-07,0.226561,0.0027283,-1.85105e-05,2.2486e-07,0.229271,0.00269195,-1.78359e-05,2.08383e-07,0.231945,0.00265691,-1.72108e-05,1.93305e-07,0.234585,0.00262307,-1.66308e-05,1.80687e-07,0.237192,0.00259035,-1.60888e-05,1.86632e-07,0.239766,0.00255873,-1.55289e-05,1.60569e-07,0.24231,0.00252815,-1.50472e-05,1.54566e-07,0.244823,0.00249852,-1.45835e-05,1.59939e-07,0.247307,0.00246983,-1.41037e-05,1.29549e-07,0.249763,0.00244202,-1.3715e-05,1.41429e-07,0.252191,0.00241501,-1.32907e-05,1.39198e-07,0.254593,0.00238885,-1.28731e-05,1.06444e-07,0.256969,0.00236342,-1.25538e-05,1.2048e-07,0.25932,0.00233867,-1.21924e-05,1.26892e-07,0.261647,0.00231467,-1.18117e-05,8.72084e-08,0.26395,0.00229131,-1.15501e-05,1.20323e-07,0.26623,0.00226857,-1.11891e-05,8.71514e-08,0.268487,0.00224645,-1.09276e-05,9.73165e-08,0.270723,0.00222489,-1.06357e-05,8.98259e-08,0.272937,0.00220389,-1.03662e-05,7.98218e-08,0.275131,0.00218339,-1.01267e-05,9.75254e-08,0.277304,0.00216343,-9.83416e-06,6.65195e-08,0.279458,0.00214396,-9.63461e-06,8.34313e-08,0.281592,0.00212494,-9.38431e-06,7.65919e-08,0.283708,0.00210641,-9.15454e-06,5.7236e-08,0.285805,0.00208827,-8.98283e-06,8.18939e-08,0.287885,0.00207055,-8.73715e-06,6.2224e-08,0.289946,0.00205326,-8.55047e-06,5.66388e-08,0.291991,0.00203633,-8.38056e-06,6.88491e-08,0.294019,0.00201978,-8.17401e-06,5.53955e-08,0.296031,0.00200359,-8.00782e-06,6.71971e-08,0.298027,0.00198778,-7.80623e-06,3.34439e-08,0.300007,0.00197227,-7.7059e-06,6.7248e-08,0.301971,0.00195706,-7.50416e-06,5.51915e-08,0.303921,0.00194221,-7.33858e-06,3.98124e-08,0.305856,0.00192766,-7.21915e-06,5.37795e-08,0.307776,0.00191338,-7.05781e-06,4.30919e-08,0.309683,0.00189939,-6.92853e-06,4.20744e-08,0.311575,0.00188566,-6.80231e-06,5.68321e-08,0.313454,0.00187223,-6.63181e-06,2.86195e-08,0.31532,0.00185905,-6.54595e-06,3.73075e-08,0.317172,0.00184607,-6.43403e-06,6.05684e-08,0.319012,0.00183338,-6.25233e-06,1.84426e-08,0.320839,0.00182094,-6.197e-06,4.44757e-08,0.322654,0.00180867,-6.06357e-06,4.20729e-08,0.324456,0.00179667,-5.93735e-06,2.56511e-08,0.326247,0.00178488,-5.8604e-06,3.41368e-08,0.328026,0.00177326,-5.75799e-06,4.64177e-08,0.329794,0.00176188,-5.61874e-06,1.86107e-08,0.33155,0.0017507,-5.5629e-06,2.81511e-08,0.333295,0.00173966,-5.47845e-06,4.75987e-08,0.335029,0.00172884,-5.33565e-06,1.98726e-08,0.336753,0.00171823,-5.27604e-06,2.19226e-08,0.338466,0.00170775,-5.21027e-06,4.14483e-08,0.340169,0.00169745,-5.08592e-06,2.09017e-08,0.341861,0.00168734,-5.02322e-06,2.39561e-08,0.343543,0.00167737,-4.95135e-06,3.22852e-08,0.345216,0.00166756,-4.85449e-06,2.57173e-08,0.346878,0.00165793,-4.77734e-06,1.38569e-08,0.348532,0.00164841,-4.73577e-06,3.80634e-08,0.350175,0.00163906,-4.62158e-06,1.27043e-08,0.35181,0.00162985,-4.58347e-06,3.03279e-08,0.353435,0.00162078,-4.49249e-06,1.49961e-08,0.355051,0.00161184,-4.4475e-06,2.88977e-08,0.356659,0.00160303,-4.3608e-06,1.84241e-08,0.358257,0.00159436,-4.30553e-06,1.6616e-08,0.359848,0.0015858,-4.25568e-06,3.43218e-08,0.361429,0.00157739,-4.15272e-06,-4.89172e-09,0.363002,0.00156907,-4.16739e-06,4.48498e-08,0.364567,0.00156087,-4.03284e-06,4.30676e-09,0.366124,0.00155282,-4.01992e-06,2.73303e-08,0.367673,0.00154486,-3.93793e-06,5.58036e-09,0.369214,0.001537,-3.92119e-06,3.97554e-08,0.370747,0.00152928,-3.80193e-06,-1.55904e-08,0.372272,0.00152163,-3.8487e-06,5.24081e-08,0.37379,0.00151409,-3.69147e-06,-1.52272e-08,0.375301,0.00150666,-3.73715e-06,3.83028e-08,0.376804,0.0014993,-3.62225e-06,1.10278e-08,0.378299,0.00149209,-3.58916e-06,6.99326e-09,0.379788,0.00148493,-3.56818e-06,2.06038e-08,0.381269,0.00147786,-3.50637e-06,2.98009e-08,0.382744,0.00147093,-3.41697e-06,-2.05978e-08,0.384211,0.00146404,-3.47876e-06,5.25899e-08,0.385672,0.00145724,-3.32099e-06,-1.09471e-08,0.387126,0.00145056,-3.35383e-06,2.10009e-08,0.388573,0.00144392,-3.29083e-06,1.63501e-08,0.390014,0.00143739,-3.24178e-06,3.00641e-09,0.391448,0.00143091,-3.23276e-06,3.12282e-08,0.392875,0.00142454,-3.13908e-06,-8.70932e-09,0.394297,0.00141824,-3.16521e-06,3.34114e-08,0.395712,0.00141201,-3.06497e-06,-5.72754e-09,0.397121,0.00140586,-3.08215e-06,1.9301e-08,0.398524,0.00139975,-3.02425e-06,1.7931e-08,0.39992,0.00139376,-2.97046e-06,-1.61822e-09,0.401311,0.00138781,-2.97531e-06,1.83442e-08,0.402696,0.00138192,-2.92028e-06,1.76485e-08,0.404075,0.00137613,-2.86733e-06,4.68617e-10,0.405448,0.00137039,-2.86593e-06,1.02794e-08,0.406816,0.00136469,-2.83509e-06,1.80179e-08,0.408178,0.00135908,-2.78104e-06,7.05594e-09,0.409534,0.00135354,-2.75987e-06,1.33633e-08,0.410885,0.00134806,-2.71978e-06,-9.04568e-10,0.41223,0.00134261,-2.72249e-06,2.0057e-08,0.41357,0.00133723,-2.66232e-06,1.00841e-08,0.414905,0.00133194,-2.63207e-06,-7.88835e-10,0.416234,0.00132667,-2.63444e-06,2.28734e-08,0.417558,0.00132147,-2.56582e-06,-1.29785e-09,0.418877,0.00131633,-2.56971e-06,1.21205e-08,0.420191,0.00131123,-2.53335e-06,1.24202e-08,0.421499,0.0013062,-2.49609e-06,-2.19681e-09,0.422803,0.0013012,-2.50268e-06,2.61696e-08,0.424102,0.00129628,-2.42417e-06,-1.30747e-08,0.425396,0.00129139,-2.46339e-06,2.6129e-08,0.426685,0.00128654,-2.38501e-06,-2.03454e-09,0.427969,0.00128176,-2.39111e-06,1.18115e-08,0.429248,0.00127702,-2.35567e-06,1.43932e-08,0.430523,0.00127235,-2.31249e-06,-9.77965e-09,0.431793,0.00126769,-2.34183e-06,2.47253e-08,0.433058,0.00126308,-2.26766e-06,2.85278e-10,0.434319,0.00125855,-2.2668e-06,3.93614e-09,0.435575,0.00125403,-2.25499e-06,1.37722e-08,0.436827,0.00124956,-2.21368e-06,5.79803e-10,0.438074,0.00124513,-2.21194e-06,1.37112e-08,0.439317,0.00124075,-2.1708e-06,4.17973e-09,0.440556,0.00123642,-2.15826e-06,-6.27703e-10,0.44179,0.0012321,-2.16015e-06,2.81332e-08,0.44302,0.00122787,-2.07575e-06,-2.24985e-08,0.444246,0.00122365,-2.14324e-06,3.20586e-08,0.445467,0.00121946,-2.04707e-06,-1.6329e-08,0.446685,0.00121532,-2.09605e-06,3.32573e-08,0.447898,0.00121122,-1.99628e-06,-2.72927e-08,0.449107,0.00120715,-2.07816e-06,4.6111e-08,0.450312,0.00120313,-1.93983e-06,-3.79416e-08,0.451514,0.00119914,-2.05365e-06,4.60507e-08,0.452711,0.00119517,-1.9155e-06,-2.7052e-08,0.453904,0.00119126,-1.99666e-06,3.23551e-08,0.455093,0.00118736,-1.89959e-06,-1.29613e-08,0.456279,0.00118352,-1.93848e-06,1.94905e-08,0.45746,0.0011797,-1.88e-06,-5.39588e-09,0.458638,0.00117593,-1.89619e-06,2.09282e-09,0.459812,0.00117214,-1.88991e-06,2.68267e-08,0.460982,0.00116844,-1.80943e-06,-1.99925e-08,0.462149,0.00116476,-1.86941e-06,2.3341e-08,0.463312,0.00116109,-1.79939e-06,-1.37674e-08,0.464471,0.00115745,-1.84069e-06,3.17287e-08,0.465627,0.00115387,-1.7455e-06,-2.37407e-08,0.466779,0.00115031,-1.81673e-06,3.34315e-08,0.467927,0.00114677,-1.71643e-06,-2.05786e-08,0.469073,0.00114328,-1.77817e-06,1.90802e-08,0.470214,0.00113978,-1.72093e-06,3.86247e-09,0.471352,0.00113635,-1.70934e-06,-4.72759e-09,0.472487,0.00113292,-1.72352e-06,1.50478e-08,0.473618,0.00112951,-1.67838e-06,4.14108e-09,0.474746,0.00112617,-1.66595e-06,-1.80986e-09,0.47587,0.00112283,-1.67138e-06,3.09816e-09,0.476991,0.0011195,-1.66209e-06,1.92198e-08,0.478109,0.00111623,-1.60443e-06,-2.03726e-08,0.479224,0.00111296,-1.66555e-06,3.2468e-08,0.480335,0.00110973,-1.56814e-06,-2.00922e-08,0.481443,0.00110653,-1.62842e-06,1.80983e-08,0.482548,0.00110333,-1.57413e-06,7.30362e-09,0.48365,0.0011002,-1.55221e-06,-1.75107e-08,0.484749,0.00109705,-1.60475e-06,3.29373e-08,0.485844,0.00109393,-1.50594e-06,-2.48315e-08,0.486937,0.00109085,-1.58043e-06,3.65865e-08,0.488026,0.0010878,-1.47067e-06,-3.21078e-08,0.489112,0.00108476,-1.56699e-06,3.22397e-08,0.490195,0.00108172,-1.47027e-06,-7.44391e-09,0.491276,0.00107876,-1.49261e-06,-2.46428e-09,0.492353,0.00107577,-1.5e-06,1.73011e-08,0.493427,0.00107282,-1.4481e-06,-7.13552e-09,0.494499,0.0010699,-1.4695e-06,1.1241e-08,0.495567,0.001067,-1.43578e-06,-8.02637e-09,0.496633,0.0010641,-1.45986e-06,2.08645e-08,0.497695,0.00106124,-1.39726e-06,-1.58271e-08,0.498755,0.0010584,-1.44475e-06,1.26415e-08,0.499812,0.00105555,-1.40682e-06,2.48655e-08,0.500866,0.00105281,-1.33222e-06,-5.24988e-08,0.501918,0.00104999,-1.48972e-06,6.59206e-08,0.502966,0.00104721,-1.29196e-06,-3.237e-08,0.504012,0.00104453,-1.38907e-06,3.95479e-09,0.505055,0.00104176,-1.3772e-06,1.65509e-08,0.506096,0.00103905,-1.32755e-06,-1.05539e-08,0.507133,0.00103637,-1.35921e-06,2.56648e-08,0.508168,0.00103373,-1.28222e-06,-3.25007e-08,0.509201,0.00103106,-1.37972e-06,4.47336e-08,0.51023,0.00102844,-1.24552e-06,-2.72245e-08,0.511258,0.00102587,-1.32719e-06,4.55952e-09,0.512282,0.00102323,-1.31352e-06,8.98645e-09,0.513304,0.00102063,-1.28656e-06,1.90992e-08,0.514323,0.00101811,-1.22926e-06,-2.57786e-08,0.51534,0.00101557,-1.30659e-06,2.44104e-08,0.516355,0.00101303,-1.23336e-06,-1.22581e-08,0.517366,0.00101053,-1.27014e-06,2.4622e-08,0.518376,0.00100806,-1.19627e-06,-2.66253e-08,0.519383,0.00100559,-1.27615e-06,2.22744e-08,0.520387,0.00100311,-1.20932e-06,-2.8679e-09,0.521389,0.00100068,-1.21793e-06,-1.08029e-08,0.522388,0.000998211,-1.25034e-06,4.60795e-08,0.523385,0.000995849,-1.1121e-06,-5.4306e-08,0.52438,0.000993462,-1.27502e-06,5.19354e-08,0.525372,0.000991067,-1.11921e-06,-3.42262e-08,0.526362,0.000988726,-1.22189e-06,2.53646e-08,0.52735,0.000986359,-1.14579e-06,-7.62782e-09,0.528335,0.000984044,-1.16868e-06,5.14668e-09,0.529318,0.000981722,-1.15324e-06,-1.29589e-08,0.530298,0.000979377,-1.19211e-06,4.66888e-08,0.531276,0.000977133,-1.05205e-06,-5.45868e-08,0.532252,0.000974865,-1.21581e-06,5.24495e-08,0.533226,0.000972591,-1.05846e-06,-3.60019e-08,0.534198,0.000970366,-1.16647e-06,3.19537e-08,0.535167,0.000968129,-1.07061e-06,-3.2208e-08,0.536134,0.000965891,-1.16723e-06,3.72738e-08,0.537099,0.000963668,-1.05541e-06,2.32205e-09,0.538061,0.000961564,-1.04844e-06,-4.65618e-08,0.539022,0.000959328,-1.18813e-06,6.47159e-08,0.53998,0.000957146,-9.93979e-07,-3.3488e-08,0.540936,0.000955057,-1.09444e-06,9.63166e-09,0.54189,0.000952897,-1.06555e-06,-5.03871e-09,0.542842,0.000950751,-1.08066e-06,1.05232e-08,0.543792,0.000948621,-1.04909e-06,2.25503e-08,0.544739,0.000946591,-9.81444e-07,-4.11195e-08,0.545685,0.000944504,-1.1048e-06,2.27182e-08,0.546628,0.000942363,-1.03665e-06,9.85146e-09,0.54757,0.000940319,-1.00709e-06,-2.51938e-09,0.548509,0.000938297,-1.01465e-06,2.25858e-10,0.549446,0.000936269,-1.01397e-06,1.61598e-09,0.550381,0.000934246,-1.00913e-06,-6.68983e-09,0.551315,0.000932207,-1.0292e-06,2.51434e-08,0.552246,0.000930224,-9.53765e-07,-3.42793e-08,0.553175,0.000928214,-1.0566e-06,5.23688e-08,0.554102,0.000926258,-8.99497e-07,-5.59865e-08,0.555028,0.000924291,-1.06746e-06,5.23679e-08,0.555951,0.000922313,-9.10352e-07,-3.42763e-08,0.556872,0.00092039,-1.01318e-06,2.51326e-08,0.557792,0.000918439,-9.37783e-07,-6.64954e-09,0.558709,0.000916543,-9.57732e-07,1.46554e-09,0.559625,0.000914632,-9.53335e-07,7.87281e-10,0.560538,0.000912728,-9.50973e-07,-4.61466e-09,0.56145,0.000910812,-9.64817e-07,1.76713e-08,0.56236,0.000908935,-9.11804e-07,-6.46564e-09,0.563268,0.000907092,-9.312e-07,8.19121e-09,0.564174,0.000905255,-9.06627e-07,-2.62992e-08,0.565078,0.000903362,-9.85524e-07,3.74007e-08,0.565981,0.000901504,-8.73322e-07,-4.0942e-09,0.566882,0.000899745,-8.85605e-07,-2.1024e-08,0.56778,0.00089791,-9.48677e-07,2.85854e-08,0.568677,0.000896099,-8.62921e-07,-3.3713e-08,0.569573,0.000894272,-9.64059e-07,4.6662e-08,0.570466,0.000892484,-8.24073e-07,-3.37258e-08,0.571358,0.000890734,-9.25251e-07,2.86365e-08,0.572247,0.00088897,-8.39341e-07,-2.12155e-08,0.573135,0.000887227,-9.02988e-07,-3.37913e-09,0.574022,0.000885411,-9.13125e-07,3.47319e-08,0.574906,0.000883689,-8.08929e-07,-1.63394e-08,0.575789,0.000882022,-8.57947e-07,-2.8979e-08,0.57667,0.00088022,-9.44885e-07,7.26509e-08,0.57755,0.000878548,-7.26932e-07,-8.28106e-08,0.578427,0.000876845,-9.75364e-07,7.97774e-08,0.579303,0.000875134,-7.36032e-07,-5.74849e-08,0.580178,0.00087349,-9.08486e-07,3.09529e-08,0.58105,0.000871765,-8.15628e-07,-6.72206e-09,0.581921,0.000870114,-8.35794e-07,-4.06451e-09,0.582791,0.00086843,-8.47987e-07,2.29799e-08,0.583658,0.000866803,-7.79048e-07,-2.82503e-08,0.584524,0.00086516,-8.63799e-07,3.04167e-08,0.585388,0.000863524,-7.72548e-07,-3.38119e-08,0.586251,0.000861877,-8.73984e-07,4.52264e-08,0.587112,0.000860265,-7.38305e-07,-2.78842e-08,0.587972,0.000858705,-8.21958e-07,6.70567e-09,0.58883,0.000857081,-8.01841e-07,1.06161e-09,0.589686,0.000855481,-7.98656e-07,-1.09521e-08,0.590541,0.00085385,-8.31512e-07,4.27468e-08,0.591394,0.000852316,-7.03272e-07,-4.08257e-08,0.592245,0.000850787,-8.25749e-07,1.34677e-09,0.593095,0.000849139,-8.21709e-07,3.54387e-08,0.593944,0.000847602,-7.15393e-07,-2.38924e-08,0.59479,0.0008461,-7.8707e-07,5.26143e-10,0.595636,0.000844527,-7.85491e-07,2.17879e-08,0.596479,0.000843021,-7.20127e-07,-2.80733e-08,0.597322,0.000841497,-8.04347e-07,3.09005e-08,0.598162,0.000839981,-7.11646e-07,-3.5924e-08,0.599002,0.00083845,-8.19418e-07,5.3191e-08,0.599839,0.000836971,-6.59845e-07,-5.76307e-08,0.600676,0.000835478,-8.32737e-07,5.81227e-08,0.60151,0.000833987,-6.58369e-07,-5.56507e-08,0.602344,0.000832503,-8.25321e-07,4.52706e-08,0.603175,0.000830988,-6.89509e-07,-6.22236e-09,0.604006,0.000829591,-7.08176e-07,-2.03811e-08,0.604834,0.000828113,-7.6932e-07,2.8142e-08,0.605662,0.000826659,-6.84894e-07,-3.25822e-08,0.606488,0.000825191,-7.8264e-07,4.25823e-08,0.607312,0.000823754,-6.54893e-07,-1.85376e-08,0.608135,0.000822389,-7.10506e-07,-2.80365e-08,0.608957,0.000820883,-7.94616e-07,7.1079e-08,0.609777,0.000819507,-5.81379e-07,-7.74655e-08,0.610596,0.000818112,-8.13775e-07,5.9969e-08,0.611413,0.000816665,-6.33868e-07,-4.32013e-08,0.612229,0.000815267,-7.63472e-07,5.32313e-08,0.613044,0.0008139,-6.03778e-07,-5.05148e-08,0.613857,0.000812541,-7.55323e-07,2.96187e-08,0.614669,0.000811119,-6.66466e-07,-8.35545e-09,0.615479,0.000809761,-6.91533e-07,3.80301e-09,0.616288,0.00080839,-6.80124e-07,-6.85666e-09,0.617096,0.000807009,-7.00694e-07,2.36237e-08,0.617903,0.000805678,-6.29822e-07,-2.80336e-08,0.618708,0.000804334,-7.13923e-07,2.8906e-08,0.619511,0.000802993,-6.27205e-07,-2.79859e-08,0.620314,0.000801655,-7.11163e-07,2.34329e-08,0.621114,0.000800303,-6.40864e-07,-6.14108e-09,0.621914,0.000799003,-6.59287e-07,1.13151e-09,0.622712,0.000797688,-6.55893e-07,1.61507e-09,0.62351,0.000796381,-6.51048e-07,-7.59186e-09,0.624305,0.000795056,-6.73823e-07,2.87524e-08,0.6251,0.000793794,-5.87566e-07,-4.7813e-08,0.625893,0.000792476,-7.31005e-07,4.32901e-08,0.626685,0.000791144,-6.01135e-07,-6.13814e-09,0.627475,0.000789923,-6.19549e-07,-1.87376e-08,0.628264,0.000788628,-6.75762e-07,2.14837e-08,0.629052,0.000787341,-6.11311e-07,-7.59265e-09,0.629839,0.000786095,-6.34089e-07,8.88692e-09,0.630625,0.000784854,-6.07428e-07,-2.7955e-08,0.631409,0.000783555,-6.91293e-07,4.33285e-08,0.632192,0.000782302,-5.61307e-07,-2.61497e-08,0.632973,0.000781101,-6.39757e-07,1.6658e-09,0.633754,0.000779827,-6.34759e-07,1.94866e-08,0.634533,0.000778616,-5.76299e-07,-2.00076e-08,0.635311,0.000777403,-6.36322e-07,9.39091e-10,0.636088,0.000776133,-6.33505e-07,1.62512e-08,0.636863,0.000774915,-5.84751e-07,-6.33937e-09,0.637638,0.000773726,-6.03769e-07,9.10609e-09,0.638411,0.000772546,-5.76451e-07,-3.00849e-08,0.639183,0.000771303,-6.66706e-07,5.1629e-08,0.639953,0.000770125,-5.11819e-07,-5.7222e-08,0.640723,0.000768929,-6.83485e-07,5.80497e-08,0.641491,0.000767736,-5.09336e-07,-5.57674e-08,0.642259,0.000766551,-6.76638e-07,4.58105e-08,0.643024,0.000765335,-5.39206e-07,-8.26541e-09,0.643789,0.000764231,-5.64002e-07,-1.27488e-08,0.644553,0.000763065,-6.02249e-07,-3.44168e-10,0.645315,0.00076186,-6.03281e-07,1.41254e-08,0.646077,0.000760695,-5.60905e-07,3.44727e-09,0.646837,0.000759584,-5.50563e-07,-2.79144e-08,0.647596,0.000758399,-6.34307e-07,4.86057e-08,0.648354,0.000757276,-4.88489e-07,-4.72989e-08,0.64911,0.000756158,-6.30386e-07,2.13807e-08,0.649866,0.000754961,-5.66244e-07,2.13808e-08,0.65062,0.000753893,-5.02102e-07,-4.7299e-08,0.651374,0.000752746,-6.43999e-07,4.86059e-08,0.652126,0.000751604,-4.98181e-07,-2.79154e-08,0.652877,0.000750524,-5.81927e-07,3.45089e-09,0.653627,0.000749371,-5.71575e-07,1.41119e-08,0.654376,0.00074827,-5.29239e-07,-2.93748e-10,0.655123,0.00074721,-5.3012e-07,-1.29368e-08,0.65587,0.000746111,-5.68931e-07,-7.56355e-09,0.656616,0.000744951,-5.91621e-07,4.3191e-08,0.65736,0.000743897,-4.62048e-07,-4.59911e-08,0.658103,0.000742835,-6.00022e-07,2.15642e-08,0.658846,0.0007417,-5.35329e-07,1.93389e-08,0.659587,0.000740687,-4.77312e-07,-3.93152e-08,0.660327,0.000739615,-5.95258e-07,1.87126e-08,0.661066,0.00073848,-5.3912e-07,2.40695e-08,0.661804,0.000737474,-4.66912e-07,-5.53859e-08,0.662541,0.000736374,-6.33069e-07,7.82648e-08,0.663277,0.000735343,-3.98275e-07,-7.88593e-08,0.664012,0.00073431,-6.34853e-07,5.83585e-08,0.664745,0.000733215,-4.59777e-07,-3.53656e-08,0.665478,0.000732189,-5.65874e-07,2.34994e-08,0.66621,0.000731128,-4.95376e-07,9.72743e-10,0.66694,0.00073014,-4.92458e-07,-2.73903e-08,0.66767,0.000729073,-5.74629e-07,4.89839e-08,0.668398,0.000728071,-4.27677e-07,-4.93359e-08,0.669126,0.000727068,-5.75685e-07,2.91504e-08,0.669853,0.000726004,-4.88234e-07,-7.66109e-09,0.670578,0.000725004,-5.11217e-07,1.49392e-09,0.671303,0.000723986,-5.06735e-07,1.68533e-09,0.672026,0.000722978,-5.01679e-07,-8.23525e-09,0.672749,0.00072195,-5.26385e-07,3.12556e-08,0.67347,0.000720991,-4.32618e-07,-5.71825e-08,0.674191,0.000719954,-6.04166e-07,7.8265e-08,0.67491,0.00071898,-3.69371e-07,-7.70634e-08,0.675628,0.00071801,-6.00561e-07,5.11747e-08,0.676346,0.000716963,-4.47037e-07,-8.42615e-09,0.677062,0.000716044,-4.72315e-07,-1.747e-08,0.677778,0.000715046,-5.24725e-07,1.87015e-08,0.678493,0.000714053,-4.68621e-07,2.26856e-09,0.679206,0.000713123,-4.61815e-07,-2.77758e-08,0.679919,0.000712116,-5.45142e-07,4.92298e-08,0.68063,0.000711173,-3.97453e-07,-4.99339e-08,0.681341,0.000710228,-5.47255e-07,3.12967e-08,0.682051,0.000709228,-4.53365e-07,-1.56481e-08,0.68276,0.000708274,-5.00309e-07,3.12958e-08,0.683467,0.000707367,-4.06422e-07,-4.99303e-08,0.684174,0.000706405,-5.56213e-07,4.9216e-08,0.68488,0.00070544,-4.08565e-07,-2.77245e-08,0.685585,0.00070454,-4.91738e-07,2.07748e-09,0.686289,0.000703562,-4.85506e-07,1.94146e-08,0.686992,0.00070265,-4.27262e-07,-2.01314e-08,0.687695,0.000701735,-4.87656e-07,1.50616e-09,0.688396,0.000700764,-4.83137e-07,1.41067e-08,0.689096,0.00069984,-4.40817e-07,1.67168e-09,0.689795,0.000698963,-4.35802e-07,-2.07934e-08,0.690494,0.000698029,-4.98182e-07,2.18972e-08,0.691192,0.000697099,-4.32491e-07,-7.19092e-09,0.691888,0.000696212,-4.54064e-07,6.86642e-09,0.692584,0.000695325,-4.33464e-07,-2.02747e-08,0.693279,0.000694397,-4.94288e-07,1.46279e-08,0.693973,0.000693452,-4.50405e-07,2.13678e-08,0.694666,0.000692616,-3.86301e-07,-4.04945e-08,0.695358,0.000691721,-5.07785e-07,2.14009e-08,0.696049,0.00069077,-4.43582e-07,1.44955e-08,0.69674,0.000689926,-4.00096e-07,-1.97783e-08,0.697429,0.000689067,-4.5943e-07,5.01296e-09,0.698118,0.000688163,-4.44392e-07,-2.73521e-10,0.698805,0.000687273,-4.45212e-07,-3.91893e-09,0.699492,0.000686371,-4.56969e-07,1.59493e-08,0.700178,0.000685505,-4.09121e-07,-2.73351e-10,0.700863,0.000684686,-4.09941e-07,-1.4856e-08,0.701548,0.000683822,-4.54509e-07,9.25979e-11,0.702231,0.000682913,-4.54231e-07,1.44855e-08,0.702913,0.000682048,-4.10775e-07,1.56992e-09,0.703595,0.000681231,-4.06065e-07,-2.07652e-08,0.704276,0.000680357,-4.68361e-07,2.18864e-08,0.704956,0.000679486,-4.02701e-07,-7.17595e-09,0.705635,0.000678659,-4.24229e-07,6.81748e-09,0.706313,0.000677831,-4.03777e-07,-2.0094e-08,0.70699,0.000676963,-4.64059e-07,1.39538e-08,0.707667,0.000676077,-4.22197e-07,2.38835e-08,0.708343,0.000675304,-3.50547e-07,-4.98831e-08,0.709018,0.000674453,-5.00196e-07,5.64395e-08,0.709692,0.000673622,-3.30878e-07,-5.66657e-08,0.710365,0.00067279,-5.00875e-07,5.1014e-08,0.711037,0.000671942,-3.47833e-07,-2.81809e-08,0.711709,0.000671161,-4.32376e-07,2.10513e-09,0.712379,0.000670303,-4.2606e-07,1.97604e-08,0.713049,0.00066951,-3.66779e-07,-2.15422e-08,0.713718,0.000668712,-4.31406e-07,6.8038e-09,0.714387,0.000667869,-4.10994e-07,-5.67295e-09,0.715054,0.00066703,-4.28013e-07,1.5888e-08,0.715721,0.000666222,-3.80349e-07,1.72576e-09,0.716387,0.000665467,-3.75172e-07,-2.27911e-08,0.717052,0.000664648,-4.43545e-07,2.9834e-08,0.717716,0.00066385,-3.54043e-07,-3.69401e-08,0.718379,0.000663031,-4.64864e-07,5.83219e-08,0.719042,0.000662277,-2.89898e-07,-7.71382e-08,0.719704,0.000661465,-5.21313e-07,7.14171e-08,0.720365,0.000660637,-3.07061e-07,-2.97161e-08,0.721025,0.000659934,-3.96209e-07,-1.21575e-08,0.721685,0.000659105,-4.32682e-07,1.87412e-08,0.722343,0.000658296,-3.76458e-07,-3.2029e-09,0.723001,0.000657533,-3.86067e-07,-5.9296e-09,0.723659,0.000656743,-4.03856e-07,2.69213e-08,0.724315,0.000656016,-3.23092e-07,-4.21511e-08,0.724971,0.000655244,-4.49545e-07,2.24737e-08,0.725625,0.000654412,-3.82124e-07,1.18611e-08,0.726279,0.000653683,-3.46541e-07,-1.03132e-08,0.726933,0.000652959,-3.7748e-07,-3.02128e-08,0.727585,0.000652114,-4.68119e-07,7.15597e-08,0.728237,0.000651392,-2.5344e-07,-7.72119e-08,0.728888,0.000650654,-4.85075e-07,5.8474e-08,0.729538,0.000649859,-3.09654e-07,-3.74746e-08,0.730188,0.000649127,-4.22077e-07,3.18197e-08,0.730837,0.000648379,-3.26618e-07,-3.01997e-08,0.731485,0.000647635,-4.17217e-07,2.93747e-08,0.732132,0.000646888,-3.29093e-07,-2.76943e-08,0.732778,0.000646147,-4.12176e-07,2.17979e-08,0.733424,0.000645388,-3.46783e-07,1.07292e-10,0.734069,0.000644695,-3.46461e-07,-2.22271e-08,0.734713,0.000643935,-4.13142e-07,2.91963e-08,0.735357,0.000643197,-3.25553e-07,-3.49536e-08,0.736,0.000642441,-4.30414e-07,5.10133e-08,0.736642,0.000641733,-2.77374e-07,-4.98904e-08,0.737283,0.000641028,-4.27045e-07,2.93392e-08,0.737924,0.000640262,-3.39028e-07,-7.86156e-09,0.738564,0.000639561,-3.62612e-07,2.10703e-09,0.739203,0.000638842,-3.56291e-07,-5.6653e-10,0.739842,0.000638128,-3.57991e-07,1.59086e-10,0.740479,0.000637412,-3.57513e-07,-6.98321e-11,0.741116,0.000636697,-3.57723e-07,1.20214e-10,0.741753,0.000635982,-3.57362e-07,-4.10987e-10,0.742388,0.000635266,-3.58595e-07,1.5237e-09,0.743023,0.000634553,-3.54024e-07,-5.68376e-09,0.743657,0.000633828,-3.71075e-07,2.12113e-08,0.744291,0.00063315,-3.07441e-07,-1.95569e-08,0.744924,0.000632476,-3.66112e-07,-2.58816e-09,0.745556,0.000631736,-3.73877e-07,2.99096e-08,0.746187,0.000631078,-2.84148e-07,-5.74454e-08,0.746818,0.000630337,-4.56484e-07,8.06629e-08,0.747448,0.000629666,-2.14496e-07,-8.63922e-08,0.748077,0.000628978,-4.73672e-07,8.60918e-08,0.748706,0.000628289,-2.15397e-07,-7.91613e-08,0.749334,0.000627621,-4.5288e-07,5.17393e-08,0.749961,0.00062687,-2.97663e-07,-8.58662e-09,0.750588,0.000626249,-3.23422e-07,-1.73928e-08,0.751214,0.00062555,-3.75601e-07,1.85532e-08,0.751839,0.000624855,-3.19941e-07,2.78479e-09,0.752463,0.000624223,-3.11587e-07,-2.96923e-08,0.753087,0.000623511,-4.00664e-07,5.63799e-08,0.75371,0.000622879,-2.31524e-07,-7.66179e-08,0.754333,0.000622186,-4.61378e-07,7.12778e-08,0.754955,0.000621477,-2.47545e-07,-2.96794e-08,0.755576,0.000620893,-3.36583e-07,-1.21648e-08,0.756196,0.000620183,-3.73077e-07,1.87339e-08,0.756816,0.000619493,-3.16875e-07,-3.16622e-09,0.757435,0.00061885,-3.26374e-07,-6.0691e-09,0.758054,0.000618179,-3.44581e-07,2.74426e-08,0.758672,0.000617572,-2.62254e-07,-4.40968e-08,0.759289,0.000616915,-3.94544e-07,2.97352e-08,0.759906,0.000616215,-3.05338e-07,-1.52393e-08,0.760522,0.000615559,-3.51056e-07,3.12221e-08,0.761137,0.000614951,-2.5739e-07,-5.00443e-08,0.761751,0.000614286,-4.07523e-07,4.9746e-08,0.762365,0.00061362,-2.58285e-07,-2.97303e-08,0.762979,0.000613014,-3.47476e-07,9.57079e-09,0.763591,0.000612348,-3.18764e-07,-8.55287e-09,0.764203,0.000611685,-3.44422e-07,2.46407e-08,0.764815,0.00061107,-2.705e-07,-3.04053e-08,0.765426,0.000610437,-3.61716e-07,3.73759e-08,0.766036,0.000609826,-2.49589e-07,-5.94935e-08,0.766645,0.000609149,-4.28069e-07,8.13889e-08,0.767254,0.000608537,-1.83902e-07,-8.72483e-08,0.767862,0.000607907,-4.45647e-07,8.87901e-08,0.76847,0.000607282,-1.79277e-07,-8.90983e-08,0.769077,0.000606656,-4.46572e-07,8.87892e-08,0.769683,0.000606029,-1.80204e-07,-8.72446e-08,0.770289,0.000605407,-4.41938e-07,8.13752e-08,0.770894,0.000604768,-1.97812e-07,-5.94423e-08,0.771498,0.000604194,-3.76139e-07,3.71848e-08,0.772102,0.000603553,-2.64585e-07,-2.96922e-08,0.772705,0.000602935,-3.53661e-07,2.19793e-08,0.773308,0.000602293,-2.87723e-07,1.37955e-09,0.77391,0.000601722,-2.83585e-07,-2.74976e-08,0.774512,0.000601072,-3.66077e-07,4.9006e-08,0.775112,0.000600487,-2.19059e-07,-4.93171e-08,0.775712,0.000599901,-3.67011e-07,2.90531e-08,0.776312,0.000599254,-2.79851e-07,-7.29081e-09,0.776911,0.000598673,-3.01724e-07,1.10077e-10,0.777509,0.00059807,-3.01393e-07,6.85053e-09,0.778107,0.000597487,-2.80842e-07,-2.75123e-08,0.778704,0.000596843,-3.63379e-07,4.35939e-08,0.779301,0.000596247,-2.32597e-07,-2.7654e-08,0.779897,0.000595699,-3.15559e-07,7.41741e-09,0.780492,0.00059509,-2.93307e-07,-2.01562e-09,0.781087,0.000594497,-2.99354e-07,6.45059e-10,0.781681,0.000593901,-2.97418e-07,-5.64635e-10,0.782275,0.000593304,-2.99112e-07,1.61347e-09,0.782868,0.000592711,-2.94272e-07,-5.88926e-09,0.78346,0.000592105,-3.1194e-07,2.19436e-08,0.784052,0.000591546,-2.46109e-07,-2.22805e-08,0.784643,0.000590987,-3.1295e-07,7.57368e-09,0.785234,0.000590384,-2.90229e-07,-8.01428e-09,0.785824,0.00058978,-3.14272e-07,2.44834e-08,0.786414,0.000589225,-2.40822e-07,-3.03148e-08,0.787003,0.000588652,-3.31766e-07,3.7171e-08,0.787591,0.0005881,-2.20253e-07,-5.87646e-08,0.788179,0.000587483,-3.96547e-07,7.86782e-08,0.788766,0.000586926,-1.60512e-07,-7.71342e-08,0.789353,0.000586374,-3.91915e-07,5.10444e-08,0.789939,0.000585743,-2.38782e-07,-7.83422e-09,0.790524,0.000585242,-2.62284e-07,-1.97076e-08,0.791109,0.000584658,-3.21407e-07,2.70598e-08,0.791693,0.000584097,-2.40228e-07,-2.89269e-08,0.792277,0.000583529,-3.27008e-07,2.90431e-08,0.792861,0.000582963,-2.39879e-07,-2.76409e-08,0.793443,0.0005824,-3.22802e-07,2.1916e-08,0.794025,0.00058182,-2.57054e-07,-4.18368e-10,0.794607,0.000581305,-2.58309e-07,-2.02425e-08,0.795188,0.000580727,-3.19036e-07,2.17838e-08,0.795768,0.000580155,-2.53685e-07,-7.28814e-09,0.796348,0.000579625,-2.75549e-07,7.36871e-09,0.796928,0.000579096,-2.53443e-07,-2.21867e-08,0.797506,0.000578523,-3.20003e-07,2.17736e-08,0.798085,0.000577948,-2.54683e-07,-5.30296e-09,0.798662,0.000577423,-2.70592e-07,-5.61698e-10,0.799239,0.00057688,-2.72277e-07,7.54977e-09,0.799816,0.000576358,-2.49627e-07,-2.96374e-08,0.800392,0.00057577,-3.38539e-07,5.1395e-08,0.800968,0.000575247,-1.84354e-07,-5.67335e-08,0.801543,0.000574708,-3.54555e-07,5.63297e-08,0.802117,0.000574168,-1.85566e-07,-4.93759e-08,0.802691,0.000573649,-3.33693e-07,2.19646e-08,0.803264,0.000573047,-2.678e-07,2.1122e-08,0.803837,0.000572575,-2.04433e-07,-4.68482e-08,0.804409,0.000572026,-3.44978e-07,4.70613e-08,0.804981,0.000571477,-2.03794e-07,-2.21877e-08,0.805552,0.000571003,-2.70357e-07,-1.79153e-08,0.806123,0.000570408,-3.24103e-07,3.42443e-08,0.806693,0.000569863,-2.2137e-07,1.47556e-10,0.807263,0.000569421,-2.20928e-07,-3.48345e-08,0.807832,0.000568874,-3.25431e-07,1.99812e-08,0.808401,0.000568283,-2.65487e-07,1.45143e-08,0.808969,0.000567796,-2.21945e-07,-1.84338e-08,0.809536,0.000567297,-2.77246e-07,-3.83608e-10,0.810103,0.000566741,-2.78397e-07,1.99683e-08,0.81067,0.000566244,-2.18492e-07,-1.98848e-08,0.811236,0.000565747,-2.78146e-07,-3.38976e-11,0.811801,0.000565191,-2.78248e-07,2.00204e-08,0.812366,0.000564695,-2.18187e-07,-2.04429e-08,0.812931,0.000564197,-2.79516e-07,2.1467e-09,0.813495,0.000563644,-2.73076e-07,1.18561e-08,0.814058,0.000563134,-2.37507e-07,1.00334e-08,0.814621,0.000562689,-2.07407e-07,-5.19898e-08,0.815183,0.000562118,-3.63376e-07,7.87163e-08,0.815745,0.000561627,-1.27227e-07,-8.40616e-08,0.816306,0.000561121,-3.79412e-07,7.87163e-08,0.816867,0.000560598,-1.43263e-07,-5.19898e-08,0.817428,0.000560156,-2.99233e-07,1.00335e-08,0.817988,0.000559587,-2.69132e-07,1.18559e-08,0.818547,0.000559085,-2.33564e-07,2.14764e-09,0.819106,0.000558624,-2.27122e-07,-2.04464e-08,0.819664,0.000558108,-2.88461e-07,2.00334e-08,0.820222,0.000557591,-2.28361e-07,-8.24277e-11,0.820779,0.000557135,-2.28608e-07,-1.97037e-08,0.821336,0.000556618,-2.87719e-07,1.92925e-08,0.821893,0.000556101,-2.29841e-07,2.13831e-09,0.822448,0.000555647,-2.23427e-07,-2.78458e-08,0.823004,0.000555117,-3.06964e-07,4.96402e-08,0.823559,0.000554652,-1.58043e-07,-5.15058e-08,0.824113,0.000554181,-3.12561e-07,3.71737e-08,0.824667,0.000553668,-2.0104e-07,-3.75844e-08,0.82522,0.000553153,-3.13793e-07,5.35592e-08,0.825773,0.000552686,-1.53115e-07,-5.74431e-08,0.826326,0.000552207,-3.25444e-07,5.7004e-08,0.826878,0.000551728,-1.54433e-07,-5.13635e-08,0.827429,0.000551265,-3.08523e-07,2.92406e-08,0.82798,0.000550735,-2.20801e-07,-5.99424e-09,0.828531,0.000550276,-2.38784e-07,-5.26363e-09,0.829081,0.000549782,-2.54575e-07,2.70488e-08,0.82963,0.000549354,-1.73429e-07,-4.33268e-08,0.83018,0.000548878,-3.03409e-07,2.7049e-08,0.830728,0.000548352,-2.22262e-07,-5.26461e-09,0.831276,0.000547892,-2.38056e-07,-5.99057e-09,0.831824,0.000547397,-2.56027e-07,2.92269e-08,0.832371,0.000546973,-1.68347e-07,-5.13125e-08,0.832918,0.000546482,-3.22284e-07,5.68139e-08,0.833464,0.000546008,-1.51843e-07,-5.67336e-08,0.83401,0.000545534,-3.22043e-07,5.09113e-08,0.834555,0.000545043,-1.6931e-07,-2.77022e-08,0.8351,0.000544621,-2.52416e-07,2.92924e-10,0.835644,0.000544117,-2.51537e-07,2.65305e-08,0.836188,0.000543694,-1.71946e-07,-4.68105e-08,0.836732,0.00054321,-3.12377e-07,4.15021e-08,0.837275,0.000542709,-1.87871e-07,1.13355e-11,0.837817,0.000542334,-1.87837e-07,-4.15474e-08,0.838359,0.000541833,-3.12479e-07,4.69691e-08,0.838901,0.000541349,-1.71572e-07,-2.71196e-08,0.839442,0.000540925,-2.52931e-07,1.90462e-09,0.839983,0.000540425,-2.47217e-07,1.95011e-08,0.840523,0.000539989,-1.88713e-07,-2.03045e-08,0.841063,0.00053955,-2.49627e-07,2.11216e-09,0.841602,0.000539057,-2.4329e-07,1.18558e-08,0.842141,0.000538606,-2.07723e-07,1.00691e-08,0.842679,0.000538221,-1.77516e-07,-5.21324e-08,0.843217,0.00053771,-3.33913e-07,7.92513e-08,0.843755,0.00053728,-9.6159e-08,-8.60587e-08,0.844292,0.000536829,-3.54335e-07,8.61696e-08,0.844828,0.000536379,-9.58263e-08,-7.98057e-08,0.845364,0.000535948,-3.35243e-07,5.42394e-08,0.8459,0.00053544,-1.72525e-07,-1.79426e-08,0.846435,0.000535041,-2.26353e-07,1.75308e-08,0.84697,0.000534641,-1.73761e-07,-5.21806e-08,0.847505,0.000534137,-3.30302e-07,7.19824e-08,0.848038,0.000533692,-1.14355e-07,-5.69349e-08,0.848572,0.000533293,-2.8516e-07,3.65479e-08,0.849105,0.000532832,-1.75516e-07,-2.96519e-08,0.849638,0.000532392,-2.64472e-07,2.2455e-08,0.85017,0.000531931,-1.97107e-07,-5.63451e-10,0.850702,0.000531535,-1.98797e-07,-2.02011e-08,0.851233,0.000531077,-2.59401e-07,2.17634e-08,0.851764,0.000530623,-1.94111e-07,-7.24794e-09,0.852294,0.000530213,-2.15854e-07,7.22832e-09,0.852824,0.000529803,-1.94169e-07,-2.16653e-08,0.853354,0.00052935,-2.59165e-07,1.98283e-08,0.853883,0.000528891,-1.9968e-07,1.95678e-09,0.854412,0.000528497,-1.9381e-07,-2.76554e-08,0.85494,0.000528027,-2.76776e-07,4.90603e-08,0.855468,0.00052762,-1.29596e-07,-4.93764e-08,0.855995,0.000527213,-2.77725e-07,2.92361e-08,0.856522,0.000526745,-1.90016e-07,-7.96341e-09,0.857049,0.000526341,-2.13907e-07,2.61752e-09,0.857575,0.000525922,-2.06054e-07,-2.50665e-09,0.8581,0.000525502,-2.13574e-07,7.40906e-09,0.858626,0.000525097,-1.91347e-07,-2.71296e-08,0.859151,0.000524633,-2.72736e-07,4.15048e-08,0.859675,0.000524212,-1.48221e-07,-1.96802e-08,0.860199,0.000523856,-2.07262e-07,-2.23886e-08,0.860723,0.000523375,-2.74428e-07,4.96299e-08,0.861246,0.000522975,-1.25538e-07,-5.69216e-08,0.861769,0.000522553,-2.96303e-07,5.88473e-08,0.862291,0.000522137,-1.19761e-07,-5.92584e-08,0.862813,0.00052172,-2.97536e-07,5.8977e-08,0.863334,0.000521301,-1.20605e-07,-5.74403e-08,0.863855,0.000520888,-2.92926e-07,5.15751e-08,0.864376,0.000520457,-1.38201e-07,-2.96506e-08,0.864896,0.000520091,-2.27153e-07,7.42277e-09,0.865416,0.000519659,-2.04885e-07,-4.05057e-11,0.865936,0.00051925,-2.05006e-07,-7.26074e-09,0.866455,0.000518818,-2.26788e-07,2.90835e-08,0.866973,0.000518451,-1.39538e-07,-4.94686e-08,0.867492,0.000518024,-2.87944e-07,4.95814e-08,0.868009,0.000517597,-1.39199e-07,-2.96479e-08,0.868527,0.000517229,-2.28143e-07,9.40539e-09,0.869044,0.000516801,-1.99927e-07,-7.9737e-09,0.86956,0.000516378,-2.23848e-07,2.24894e-08,0.870077,0.000515997,-1.5638e-07,-2.23793e-08,0.870592,0.000515617,-2.23517e-07,7.42302e-09,0.871108,0.000515193,-2.01248e-07,-7.31283e-09,0.871623,0.000514768,-2.23187e-07,2.18283e-08,0.872137,0.000514387,-1.57702e-07,-2.03959e-08,0.872652,0.000514011,-2.1889e-07,1.50711e-10,0.873165,0.000513573,-2.18437e-07,1.97931e-08,0.873679,0.000513196,-1.59058e-07,-1.97183e-08,0.874192,0.000512819,-2.18213e-07,-5.24324e-10,0.874704,0.000512381,-2.19786e-07,2.18156e-08,0.875217,0.000512007,-1.54339e-07,-2.71336e-08,0.875728,0.000511616,-2.3574e-07,2.71141e-08,0.87624,0.000511226,-1.54398e-07,-2.17182e-08,0.876751,0.000510852,-2.19552e-07,1.54131e-10,0.877262,0.000510414,-2.1909e-07,2.11017e-08,0.877772,0.000510039,-1.55785e-07,-2.49562e-08,0.878282,0.000509652,-2.30654e-07,1.91183e-08,0.878791,0.000509248,-1.73299e-07,8.08751e-09,0.8793,0.000508926,-1.49036e-07,-5.14684e-08,0.879809,0.000508474,-3.03441e-07,7.85766e-08,0.880317,0.000508103,-6.77112e-08,-8.40242e-08,0.880825,0.000507715,-3.19784e-07,7.87063e-08,0.881333,0.000507312,-8.36649e-08,-5.19871e-08,0.88184,0.000506988,-2.39626e-07,1.00327e-08,0.882346,0.000506539,-2.09528e-07,1.18562e-08,0.882853,0.000506156,-1.73959e-07,2.14703e-09,0.883359,0.000505814,-1.67518e-07,-2.04444e-08,0.883864,0.000505418,-2.28851e-07,2.00258e-08,0.88437,0.00050502,-1.68774e-07,-5.42855e-11,0.884874,0.000504682,-1.68937e-07,-1.98087e-08,0.885379,0.000504285,-2.28363e-07,1.96842e-08,0.885883,0.000503887,-1.6931e-07,6.76342e-10,0.886387,0.000503551,-1.67281e-07,-2.23896e-08,0.88689,0.000503149,-2.3445e-07,2.92774e-08,0.887393,0.000502768,-1.46618e-07,-3.51152e-08,0.887896,0.00050237,-2.51963e-07,5.15787e-08,0.888398,0.00050202,-9.72271e-08,-5.19903e-08,0.8889,0.00050167,-2.53198e-07,3.71732e-08,0.889401,0.000501275,-1.41678e-07,-3.70978e-08,0.889902,0.00050088,-2.52972e-07,5.16132e-08,0.890403,0.000500529,-9.81321e-08,-5.01459e-08,0.890903,0.000500183,-2.4857e-07,2.9761e-08,0.891403,0.000499775,-1.59287e-07,-9.29351e-09,0.891903,0.000499428,-1.87167e-07,7.41301e-09,0.892402,0.000499076,-1.64928e-07,-2.03585e-08,0.892901,0.000498685,-2.26004e-07,1.44165e-08,0.893399,0.000498276,-1.82754e-07,2.22974e-08,0.893898,0.000497978,-1.15862e-07,-4.40013e-08,0.894395,0.000497614,-2.47866e-07,3.44985e-08,0.894893,0.000497222,-1.44371e-07,-3.43882e-08,0.89539,0.00049683,-2.47535e-07,4.34497e-08,0.895886,0.000496465,-1.17186e-07,-2.02012e-08,0.896383,0.00049617,-1.7779e-07,-2.22497e-08,0.896879,0.000495748,-2.44539e-07,4.95952e-08,0.897374,0.000495408,-9.57532e-08,-5.69217e-08,0.89787,0.000495045,-2.66518e-07,5.88823e-08,0.898364,0.000494689,-8.98713e-08,-5.93983e-08,0.898859,0.000494331,-2.68066e-07,5.95017e-08,0.899353,0.000493973,-8.95613e-08,-5.9399e-08,0.899847,0.000493616,-2.67758e-07,5.8885e-08,0.90034,0.000493257,-9.11033e-08,-5.69317e-08,0.900833,0.000492904,-2.61898e-07,4.96326e-08,0.901326,0.000492529,-1.13001e-07,-2.23893e-08,0.901819,0.000492236,-1.80169e-07,-1.968e-08,0.902311,0.000491817,-2.39209e-07,4.15047e-08,0.902802,0.000491463,-1.14694e-07,-2.71296e-08,0.903293,0.000491152,-1.96083e-07,7.409e-09,0.903784,0.000490782,-1.73856e-07,-2.50645e-09,0.904275,0.000490427,-1.81376e-07,2.61679e-09,0.904765,0.000490072,-1.73525e-07,-7.96072e-09,0.905255,0.000489701,-1.97407e-07,2.92261e-08,0.905745,0.000489394,-1.09729e-07,-4.93389e-08,0.906234,0.000489027,-2.57746e-07,4.89204e-08,0.906723,0.000488658,-1.10985e-07,-2.71333e-08,0.907211,0.000488354,-1.92385e-07,8.30861e-12,0.907699,0.00048797,-1.9236e-07,2.71001e-08,0.908187,0.000487666,-1.1106e-07,-4.88041e-08,0.908675,0.000487298,-2.57472e-07,4.89069e-08,0.909162,0.000486929,-1.10751e-07,-2.76143e-08,0.909649,0.000486625,-1.93594e-07,1.9457e-09,0.910135,0.000486244,-1.87757e-07,1.98315e-08,0.910621,0.000485928,-1.28262e-07,-2.16671e-08,0.911107,0.000485606,-1.93264e-07,7.23216e-09,0.911592,0.000485241,-1.71567e-07,-7.26152e-09,0.912077,0.000484877,-1.93352e-07,2.18139e-08,0.912562,0.000484555,-1.2791e-07,-2.03895e-08,0.913047,0.000484238,-1.89078e-07,1.39494e-10,0.913531,0.000483861,-1.8866e-07,1.98315e-08,0.914014,0.000483543,-1.29165e-07,-1.98609e-08,0.914498,0.000483225,-1.88748e-07,7.39912e-12,0.914981,0.000482847,-1.88726e-07,1.98313e-08,0.915463,0.000482529,-1.29232e-07,-1.9728e-08,0.915946,0.000482212,-1.88416e-07,-5.24035e-10,0.916428,0.000481833,-1.89988e-07,2.18241e-08,0.916909,0.000481519,-1.24516e-07,-2.71679e-08,0.917391,0.000481188,-2.06019e-07,2.72427e-08,0.917872,0.000480858,-1.24291e-07,-2.21985e-08,0.918353,0.000480543,-1.90886e-07,1.94644e-09,0.918833,0.000480167,-1.85047e-07,1.44127e-08,0.919313,0.00047984,-1.41809e-07,7.39438e-12,0.919793,0.000479556,-1.41787e-07,-1.44423e-08,0.920272,0.000479229,-1.85114e-07,-1.84291e-09,0.920751,0.000478854,-1.90642e-07,2.18139e-08,0.92123,0.000478538,-1.25201e-07,-2.58081e-08,0.921708,0.00047821,-2.02625e-07,2.18139e-08,0.922186,0.00047787,-1.37183e-07,-1.84291e-09,0.922664,0.00047759,-1.42712e-07,-1.44423e-08,0.923141,0.000477262,-1.86039e-07,7.34701e-12,0.923618,0.00047689,-1.86017e-07,1.44129e-08,0.924095,0.000476561,-1.42778e-07,1.94572e-09,0.924572,0.000476281,-1.36941e-07,-2.21958e-08,0.925048,0.000475941,-2.03528e-07,2.72327e-08,0.925523,0.000475615,-1.2183e-07,-2.71304e-08,0.925999,0.00047529,-2.03221e-07,2.16843e-08,0.926474,0.000474949,-1.38168e-07,-2.16005e-12,0.926949,0.000474672,-1.38175e-07,-2.16756e-08,0.927423,0.000474331,-2.03202e-07,2.71001e-08,0.927897,0.000474006,-1.21902e-07,-2.71201e-08,0.928371,0.000473681,-2.03262e-07,2.17757e-08,0.928845,0.00047334,-1.37935e-07,-3.78028e-10,0.929318,0.000473063,-1.39069e-07,-2.02636e-08,0.929791,0.000472724,-1.9986e-07,2.18276e-08,0.930263,0.000472389,-1.34377e-07,-7.44231e-09,0.930736,0.000472098,-1.56704e-07,7.94165e-09,0.931208,0.000471809,-1.32879e-07,-2.43243e-08,0.931679,0.00047147,-2.05851e-07,2.97508e-08,0.932151,0.000471148,-1.16599e-07,-3.50742e-08,0.932622,0.000470809,-2.21822e-07,5.09414e-08,0.933092,0.000470518,-6.89976e-08,-4.94821e-08,0.933563,0.000470232,-2.17444e-07,2.77775e-08,0.934033,0.00046988,-1.34111e-07,-2.02351e-09,0.934502,0.000469606,-1.40182e-07,-1.96835e-08,0.934972,0.000469267,-1.99232e-07,2.11529e-08,0.935441,0.000468932,-1.35774e-07,-5.32332e-09,0.93591,0.000468644,-1.51743e-07,1.40413e-10,0.936378,0.000468341,-1.51322e-07,4.76166e-09,0.936846,0.000468053,-1.37037e-07,-1.9187e-08,0.937314,0.000467721,-1.94598e-07,1.23819e-08,0.937782,0.000467369,-1.57453e-07,2.92642e-08,0.938249,0.000467142,-6.96601e-08,-6.98342e-08,0.938716,0.000466793,-2.79163e-07,7.12586e-08,0.939183,0.000466449,-6.53869e-08,-3.63863e-08,0.939649,0.000466209,-1.74546e-07,1.46818e-08,0.940115,0.000465904,-1.305e-07,-2.2341e-08,0.940581,0.000465576,-1.97523e-07,1.50774e-08,0.941046,0.000465226,-1.52291e-07,2.16359e-08,0.941511,0.000464986,-8.73832e-08,-4.20162e-08,0.941976,0.000464685,-2.13432e-07,2.72198e-08,0.942441,0.00046434,-1.31773e-07,-7.2581e-09,0.942905,0.000464055,-1.53547e-07,1.81263e-09,0.943369,0.000463753,-1.48109e-07,7.58386e-12,0.943832,0.000463457,-1.48086e-07,-1.84298e-09,0.944296,0.000463155,-1.53615e-07,7.36433e-09,0.944759,0.00046287,-1.31522e-07,-2.76143e-08,0.945221,0.000462524,-2.14365e-07,4.34883e-08,0.945684,0.000462226,-8.39003e-08,-2.71297e-08,0.946146,0.000461977,-1.65289e-07,5.42595e-09,0.946608,0.000461662,-1.49012e-07,5.42593e-09,0.947069,0.000461381,-1.32734e-07,-2.71297e-08,0.94753,0.000461034,-2.14123e-07,4.34881e-08,0.947991,0.000460736,-8.36585e-08,-2.76134e-08,0.948452,0.000460486,-1.66499e-07,7.36083e-09,0.948912,0.000460175,-1.44416e-07,-1.82993e-09,0.949372,0.000459881,-1.49906e-07,-4.11073e-11,0.949832,0.000459581,-1.50029e-07,1.99434e-09,0.950291,0.000459287,-1.44046e-07,-7.93627e-09,0.950751,0.000458975,-1.67855e-07,2.97507e-08,0.951209,0.000458728,-7.86029e-08,-5.1462e-08,0.951668,0.000458417,-2.32989e-07,5.6888e-08,0.952126,0.000458121,-6.2325e-08,-5.68806e-08,0.952584,0.000457826,-2.32967e-07,5.14251e-08,0.953042,0.000457514,-7.86914e-08,-2.96107e-08,0.953499,0.000457268,-1.67523e-07,7.41296e-09,0.953956,0.000456955,-1.45285e-07,-4.11262e-11,0.954413,0.000456665,-1.45408e-07,-7.24847e-09,0.95487,0.000456352,-1.67153e-07,2.9035e-08,0.955326,0.000456105,-8.00484e-08,-4.92869e-08,0.955782,0.000455797,-2.27909e-07,4.89032e-08,0.956238,0.000455488,-8.11994e-08,-2.71166e-08,0.956693,0.000455244,-1.62549e-07,-4.13678e-11,0.957148,0.000454919,-1.62673e-07,2.72821e-08,0.957603,0.000454675,-8.0827e-08,-4.94824e-08,0.958057,0.000454365,-2.29274e-07,5.14382e-08,0.958512,0.000454061,-7.49597e-08,-3.7061e-08,0.958965,0.0004538,-1.86143e-07,3.72013e-08,0.959419,0.000453539,-7.45389e-08,-5.21396e-08,0.959873,0.000453234,-2.30958e-07,5.21476e-08,0.960326,0.000452928,-7.45146e-08,-3.72416e-08,0.960778,0.000452667,-1.8624e-07,3.72143e-08,0.961231,0.000452407,-7.45967e-08,-5.20109e-08,0.961683,0.000452101,-2.30629e-07,5.16199e-08,0.962135,0.000451795,-7.57696e-08,-3.52595e-08,0.962587,0.000451538,-1.81548e-07,2.98133e-08,0.963038,0.000451264,-9.2108e-08,-2.43892e-08,0.963489,0.000451007,-1.65276e-07,8.13892e-09,0.96394,0.000450701,-1.40859e-07,-8.16647e-09,0.964391,0.000450394,-1.65358e-07,2.45269e-08,0.964841,0.000450137,-9.17775e-08,-3.03367e-08,0.965291,0.000449863,-1.82787e-07,3.7215e-08,0.965741,0.000449609,-7.11424e-08,-5.89188e-08,0.96619,0.00044929,-2.47899e-07,7.92509e-08,0.966639,0.000449032,-1.01462e-08,-7.92707e-08,0.967088,0.000448773,-2.47958e-07,5.90181e-08,0.967537,0.000448455,-7.0904e-08,-3.75925e-08,0.967985,0.0004482,-1.83681e-07,3.17471e-08,0.968433,0.000447928,-8.84401e-08,-2.97913e-08,0.968881,0.000447662,-1.77814e-07,2.78133e-08,0.969329,0.000447389,-9.4374e-08,-2.18572e-08,0.969776,0.000447135,-1.59946e-07,1.10134e-11,0.970223,0.000446815,-1.59913e-07,2.18132e-08,0.97067,0.000446561,-9.44732e-08,-2.76591e-08,0.971116,0.000446289,-1.7745e-07,2.92185e-08,0.971562,0.000446022,-8.97948e-08,-2.96104e-08,0.972008,0.000445753,-1.78626e-07,2.96185e-08,0.972454,0.000445485,-8.97706e-08,-2.92588e-08,0.972899,0.000445218,-1.77547e-07,2.78123e-08,0.973344,0.000444946,-9.41103e-08,-2.23856e-08,0.973789,0.000444691,-1.61267e-07,2.12559e-09,0.974233,0.000444374,-1.5489e-07,1.38833e-08,0.974678,0.000444106,-1.13241e-07,1.94591e-09,0.975122,0.000443886,-1.07403e-07,-2.16669e-08,0.975565,0.000443606,-1.72404e-07,2.5117e-08,0.976009,0.000443336,-9.70526e-08,-1.91963e-08,0.976452,0.000443085,-1.54642e-07,-7.93627e-09,0.976895,0.000442752,-1.7845e-07,5.09414e-08,0.977338,0.000442548,-2.56262e-08,-7.66201e-08,0.97778,0.000442266,-2.55486e-07,7.67249e-08,0.978222,0.000441986,-2.53118e-08,-5.14655e-08,0.978664,0.000441781,-1.79708e-07,9.92773e-09,0.979106,0.000441451,-1.49925e-07,1.17546e-08,0.979547,0.000441186,-1.14661e-07,2.65868e-09,0.979988,0.000440965,-1.06685e-07,-2.23893e-08,0.980429,0.000440684,-1.73853e-07,2.72939e-08,0.980869,0.000440419,-9.19716e-08,-2.71816e-08,0.98131,0.000440153,-1.73516e-07,2.18278e-08,0.98175,0.000439872,-1.08033e-07,-5.24833e-10,0.982189,0.000439654,-1.09607e-07,-1.97284e-08,0.982629,0.000439376,-1.68793e-07,1.98339e-08,0.983068,0.000439097,-1.09291e-07,-2.62901e-12,0.983507,0.000438879,-1.09299e-07,-1.98234e-08,0.983946,0.000438601,-1.68769e-07,1.96916e-08,0.984384,0.000438322,-1.09694e-07,6.6157e-10,0.984823,0.000438105,-1.0771e-07,-2.23379e-08,0.985261,0.000437823,-1.74723e-07,2.90855e-08,0.985698,0.00043756,-8.74669e-08,-3.43992e-08,0.986136,0.000437282,-1.90665e-07,4.89068e-08,0.986573,0.000437048,-4.39442e-08,-4.20188e-08,0.98701,0.000436834,-1.7e-07,-4.11073e-11,0.987446,0.000436494,-1.70124e-07,4.21832e-08,0.987883,0.00043628,-4.35742e-08,-4.94824e-08,0.988319,0.000436044,-1.92021e-07,3.6537e-08,0.988755,0.00043577,-8.24102e-08,-3.70611e-08,0.989191,0.000435494,-1.93593e-07,5.21026e-08,0.989626,0.000435263,-3.72855e-08,-5.21402e-08,0.990061,0.000435032,-1.93706e-07,3.7249e-08,0.990496,0.000434756,-8.19592e-08,-3.72512e-08,0.990931,0.000434481,-1.93713e-07,5.21511e-08,0.991365,0.00043425,-3.72595e-08,-5.21439e-08,0.991799,0.000434019,-1.93691e-07,3.72152e-08,0.992233,0.000433743,-8.20456e-08,-3.71123e-08,0.992667,0.000433468,-1.93382e-07,5.16292e-08,0.9931,0.000433236,-3.84947e-08,-5.01953e-08,0.993533,0.000433008,-1.89081e-07,2.99427e-08,0.993966,0.00043272,-9.92525e-08,-9.9708e-09,0.994399,0.000432491,-1.29165e-07,9.94051e-09,0.994831,0.000432263,-9.93434e-08,-2.97912e-08,0.995263,0.000431975,-1.88717e-07,4.96198e-08,0.995695,0.000431746,-3.98578e-08,-4.94785e-08,0.996127,0.000431518,-1.88293e-07,2.9085e-08,0.996558,0.000431229,-1.01038e-07,-7.25675e-09,0.996989,0.000431005,-1.22809e-07,-5.79945e-11,0.99742,0.000430759,-1.22983e-07,7.48873e-09,0.997851,0.000430536,-1.00516e-07,-2.98969e-08,0.998281,0.000430245,-1.90207e-07,5.24942e-08,0.998711,0.000430022,-3.27246e-08,-6.08706e-08,0.999141,0.000429774,-2.15336e-07,7.17788e-08,0.999571,0.000429392,0.,0.};
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void Lab2RGBConvert_32F(const T& src, D& dst)
+ {
+ const float lThresh = 0.008856f * 903.3f;
+ const float fThresh = 7.787f * 0.008856f + 16.0f / 116.0f;
+
+ float Y, fy;
+
+ if (src.x <= lThresh)
+ {
+ Y = src.x / 903.3f;
+ fy = 7.787f * Y + 16.0f / 116.0f;
+ }
+ else
+ {
+ fy = (src.x + 16.0f) / 116.0f;
+ Y = fy * fy * fy;
+ }
+
+ float X = src.y / 500.0f + fy;
+ float Z = fy - src.z / 200.0f;
+
+ if (X <= fThresh)
+ X = (X - 16.0f / 116.0f) / 7.787f;
+ else
+ X = X * X * X;
+
+ if (Z <= fThresh)
+ Z = (Z - 16.0f / 116.0f) / 7.787f;
+ else
+ Z = Z * Z * Z;
+
+ float B = 0.052891f * X - 0.204043f * Y + 1.151152f * Z;
+ float G = -0.921235f * X + 1.875991f * Y + 0.045244f * Z;
+ float R = 3.079933f * X - 1.537150f * Y - 0.542782f * Z;
+
+ if (srgb)
+ {
+ B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE);
+ G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE);
+ R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE);
+ }
+
+ dst.x = blueIdx == 0 ? B : R;
+ dst.y = G;
+ dst.z = blueIdx == 0 ? R : B;
+ setAlpha(dst, ColorChannel<float>::max());
+ }
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void Lab2RGBConvert_8U(const T& src, D& dst)
+ {
+ float3 srcf, dstf;
+
+ srcf.x = src.x * (100.f / 255.f);
+ srcf.y = src.y - 128;
+ srcf.z = src.z - 128;
+
+ Lab2RGBConvert_32F<srgb, blueIdx>(srcf, dstf);
+
+ dst.x = saturate_cast<uchar>(dstf.x * 255.f);
+ dst.y = saturate_cast<uchar>(dstf.y * 255.f);
+ dst.z = saturate_cast<uchar>(dstf.z * 255.f);
+ setAlpha(dst, ColorChannel<uchar>::max());
+ }
+
+ template <typename T, int scn, int dcn, bool srgb, int blueIdx> struct Lab2RGB;
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct Lab2RGB<uchar, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<uchar, scn>::vec_type, typename TypeVec<uchar, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<uchar, dcn>::vec_type operator ()(const typename TypeVec<uchar, scn>::vec_type& src) const
+ {
+ typename TypeVec<uchar, dcn>::vec_type dst;
+
+ Lab2RGBConvert_8U<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ Lab2RGB() {}
+ __host__ __device__ __forceinline__ Lab2RGB(const Lab2RGB&) {}
+ };
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct Lab2RGB<float, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ Lab2RGBConvert_32F<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ Lab2RGB() {}
+ __host__ __device__ __forceinline__ Lab2RGB(const Lab2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_Lab2RGB_TRAITS(name, scn, dcn, srgb, blueIdx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::Lab2RGB<T, scn, dcn, srgb, blueIdx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+///////////////////////////////////// RGB <-> Luv /////////////////////////////////////
+
+ namespace color_detail
+ {
+ __constant__ float c_LabCbrtTab[] = {0.137931,0.0114066,0.,1.18859e-07,0.149338,0.011407,3.56578e-07,-5.79396e-07,0.160745,0.0114059,-1.38161e-06,2.16892e-06,0.172151,0.0114097,5.12516e-06,-8.0814e-06,0.183558,0.0113957,-1.9119e-05,3.01567e-05,0.194965,0.0114479,7.13509e-05,-0.000112545,0.206371,0.011253,-0.000266285,-0.000106493,0.217252,0.0104009,-0.000585765,7.32149e-05,0.22714,0.00944906,-0.00036612,1.21917e-05,0.236235,0.0087534,-0.000329545,2.01753e-05,0.244679,0.00815483,-0.000269019,1.24435e-05,0.252577,0.00765412,-0.000231689,1.05618e-05,0.26001,0.00722243,-0.000200003,8.26662e-06,0.267041,0.00684723,-0.000175203,6.76746e-06,0.27372,0.00651712,-0.000154901,5.61192e-06,0.280088,0.00622416,-0.000138065,4.67009e-06,0.286179,0.00596204,-0.000124055,3.99012e-06,0.292021,0.0057259,-0.000112085,3.36032e-06,0.297638,0.00551181,-0.000102004,2.95338e-06,0.30305,0.00531666,-9.31435e-05,2.52875e-06,0.308277,0.00513796,-8.55572e-05,2.22022e-06,0.313331,0.00497351,-7.88966e-05,1.97163e-06,0.318228,0.00482163,-7.29817e-05,1.7248e-06,0.322978,0.00468084,-6.78073e-05,1.55998e-06,0.327593,0.0045499,-6.31274e-05,1.36343e-06,0.332081,0.00442774,-5.90371e-05,1.27136e-06,0.336451,0.00431348,-5.5223e-05,1.09111e-06,0.34071,0.00420631,-5.19496e-05,1.0399e-06,0.344866,0.00410553,-4.88299e-05,9.18347e-07,0.348923,0.00401062,-4.60749e-05,8.29942e-07,0.352889,0.00392096,-4.35851e-05,7.98478e-07,0.356767,0.00383619,-4.11896e-05,6.84917e-07,0.360562,0.00375586,-3.91349e-05,6.63976e-07,0.36428,0.00367959,-3.7143e-05,5.93086e-07,0.367923,0.00360708,-3.53637e-05,5.6976e-07,0.371495,0.00353806,-3.36544e-05,4.95533e-07,0.375,0.00347224,-3.21678e-05,4.87951e-07,0.378441,0.00340937,-3.0704e-05,4.4349e-07,0.38182,0.00334929,-2.93735e-05,4.20297e-07,0.38514,0.0032918,-2.81126e-05,3.7872e-07,0.388404,0.00323671,-2.69764e-05,3.596e-07,0.391614,0.00318384,-2.58976e-05,3.5845e-07,0.394772,0.00313312,-2.48223e-05,2.92765e-07,0.397881,0.00308435,-2.3944e-05,3.18232e-07,0.400942,0.00303742,-2.29893e-05,2.82046e-07,0.403957,0.00299229,-2.21432e-05,2.52315e-07,0.406927,0.00294876,-2.13862e-05,2.58416e-07,0.409855,0.00290676,-2.0611e-05,2.33939e-07,0.412741,0.00286624,-1.99092e-05,2.36342e-07,0.415587,0.00282713,-1.92001e-05,1.916e-07,0.418396,0.00278931,-1.86253e-05,2.1915e-07,0.421167,0.00275271,-1.79679e-05,1.83498e-07,0.423901,0.00271733,-1.74174e-05,1.79343e-07,0.426602,0.00268303,-1.68794e-05,1.72013e-07,0.429268,0.00264979,-1.63633e-05,1.75686e-07,0.431901,0.00261759,-1.58363e-05,1.3852e-07,0.434503,0.00258633,-1.54207e-05,1.64304e-07,0.437074,0.00255598,-1.49278e-05,1.28136e-07,0.439616,0.00252651,-1.45434e-05,1.57618e-07,0.442128,0.0024979,-1.40705e-05,1.0566e-07,0.444612,0.00247007,-1.37535e-05,1.34998e-07,0.447068,0.00244297,-1.33485e-05,1.29207e-07,0.449498,0.00241666,-1.29609e-05,9.32347e-08,0.451902,0.00239102,-1.26812e-05,1.23703e-07,0.45428,0.00236603,-1.23101e-05,9.74072e-08,0.456634,0.0023417,-1.20179e-05,1.12518e-07,0.458964,0.002318,-1.16803e-05,7.83681e-08,0.46127,0.00229488,-1.14452e-05,1.10452e-07,0.463554,0.00227232,-1.11139e-05,7.58719e-08,0.465815,0.00225032,-1.08863e-05,9.2699e-08,0.468055,0.00222882,-1.06082e-05,8.97738e-08,0.470273,0.00220788,-1.03388e-05,5.4845e-08,0.47247,0.00218736,-1.01743e-05,1.0808e-07,0.474648,0.00216734,-9.85007e-06,4.9277e-08,0.476805,0.00214779,-9.70224e-06,8.22408e-08,0.478943,0.00212863,-9.45551e-06,6.87942e-08,0.481063,0.00210993,-9.24913e-06,5.98144e-08,0.483163,0.00209161,-9.06969e-06,7.93789e-08,0.485246,0.00207371,-8.83155e-06,3.99032e-08,0.487311,0.00205616,-8.71184e-06,8.88325e-08,0.489358,0.002039,-8.44534e-06,2.20004e-08,0.491389,0.00202218,-8.37934e-06,9.13872e-08,0.493403,0.0020057,-8.10518e-06,2.96829e-08,0.495401,0.00198957,-8.01613e-06,5.81028e-08,0.497382,0.00197372,-7.84183e-06,6.5731e-08,0.499348,0.00195823,-7.64463e-06,3.66019e-08,0.501299,0.00194305,-7.53483e-06,2.62811e-08,0.503234,0.00192806,-7.45598e-06,9.66907e-08,0.505155,0.00191344,-7.16591e-06,4.18928e-09,0.507061,0.00189912,-7.15334e-06,6.53665e-08,0.508953,0.00188501,-6.95724e-06,3.23686e-08,0.510831,0.00187119,-6.86014e-06,4.35774e-08,0.512696,0.0018576,-6.72941e-06,3.17406e-08,0.514547,0.00184424,-6.63418e-06,6.78785e-08,0.516384,0.00183117,-6.43055e-06,-5.23126e-09,0.518209,0.0018183,-6.44624e-06,7.22562e-08,0.520021,0.00180562,-6.22947e-06,1.42292e-08,0.52182,0.0017932,-6.18679e-06,4.9641e-08,0.523607,0.00178098,-6.03786e-06,2.56259e-08,0.525382,0.00176898,-5.96099e-06,2.66696e-08,0.527145,0.00175714,-5.88098e-06,4.65094e-08,0.528897,0.00174552,-5.74145e-06,2.57114e-08,0.530637,0.00173411,-5.66431e-06,2.94588e-08,0.532365,0.00172287,-5.57594e-06,3.52667e-08,0.534082,0.00171182,-5.47014e-06,8.28868e-09,0.535789,0.00170091,-5.44527e-06,5.07871e-08,0.537484,0.00169017,-5.29291e-06,2.69817e-08,0.539169,0.00167967,-5.21197e-06,2.01009e-08,0.540844,0.0016693,-5.15166e-06,1.18237e-08,0.542508,0.00165903,-5.11619e-06,5.18135e-08,0.544162,0.00164896,-4.96075e-06,1.9341e-08,0.545806,0.00163909,-4.90273e-06,-9.96867e-09,0.54744,0.00162926,-4.93263e-06,8.01382e-08,0.549064,0.00161963,-4.69222e-06,-1.25601e-08,0.550679,0.00161021,-4.7299e-06,2.97067e-08,0.552285,0.00160084,-4.64078e-06,1.29426e-08,0.553881,0.0015916,-4.60195e-06,3.77327e-08,0.555468,0.00158251,-4.48875e-06,1.49412e-08,0.557046,0.00157357,-4.44393e-06,2.17118e-08,0.558615,0.00156475,-4.3788e-06,1.74206e-08,0.560176,0.00155605,-4.32653e-06,2.78152e-08,0.561727,0.00154748,-4.24309e-06,-9.47239e-09,0.563271,0.00153896,-4.27151e-06,6.9679e-08,0.564805,0.00153063,-4.06247e-06,-3.08246e-08,0.566332,0.00152241,-4.15494e-06,5.36188e-08,0.56785,0.00151426,-3.99409e-06,-4.83594e-09,0.56936,0.00150626,-4.00859e-06,2.53293e-08,0.570863,0.00149832,-3.93261e-06,2.27286e-08,0.572357,0.00149052,-3.86442e-06,2.96541e-09,0.573844,0.0014828,-3.85552e-06,2.50147e-08,0.575323,0.00147516,-3.78048e-06,1.61842e-08,0.576794,0.00146765,-3.73193e-06,2.94582e-08,0.578258,0.00146028,-3.64355e-06,-1.48076e-08,0.579715,0.00145295,-3.68798e-06,2.97724e-08,0.581164,0.00144566,-3.59866e-06,1.49272e-08,0.582606,0.00143851,-3.55388e-06,2.97285e-08,0.584041,0.00143149,-3.46469e-06,-1.46323e-08,0.585469,0.00142451,-3.50859e-06,2.88004e-08,0.58689,0.00141758,-3.42219e-06,1.864e-08,0.588304,0.00141079,-3.36627e-06,1.58482e-08,0.589712,0.00140411,-3.31872e-06,-2.24279e-08,0.591112,0.00139741,-3.38601e-06,7.38639e-08,0.592507,0.00139085,-3.16441e-06,-3.46088e-08,0.593894,0.00138442,-3.26824e-06,4.96675e-09,0.595275,0.0013779,-3.25334e-06,7.4346e-08,0.59665,0.00137162,-3.0303e-06,-6.39319e-08,0.598019,0.00136536,-3.2221e-06,6.21725e-08,0.599381,0.00135911,-3.03558e-06,-5.94423e-09,0.600737,0.00135302,-3.05341e-06,2.12091e-08,0.602087,0.00134697,-2.98979e-06,-1.92876e-08,0.603431,0.00134094,-3.04765e-06,5.5941e-08,0.604769,0.00133501,-2.87983e-06,-2.56622e-08,0.606101,0.00132917,-2.95681e-06,4.67078e-08,0.607427,0.0013234,-2.81669e-06,-4.19592e-08,0.608748,0.00131764,-2.94257e-06,6.15243e-08,0.610062,0.00131194,-2.75799e-06,-2.53244e-08,0.611372,0.00130635,-2.83397e-06,3.97739e-08,0.612675,0.0013008,-2.71465e-06,-1.45618e-08,0.613973,0.00129533,-2.75833e-06,1.84733e-08,0.615266,0.00128986,-2.70291e-06,2.73606e-10,0.616553,0.00128446,-2.70209e-06,4.00367e-08,0.617835,0.00127918,-2.58198e-06,-4.12113e-08,0.619111,0.00127389,-2.70561e-06,6.52039e-08,0.620383,0.00126867,-2.51e-06,-4.07901e-08,0.621649,0.00126353,-2.63237e-06,3.83516e-08,0.62291,0.00125838,-2.51732e-06,6.59315e-09,0.624166,0.00125337,-2.49754e-06,-5.11939e-09,0.625416,0.00124836,-2.5129e-06,1.38846e-08,0.626662,0.00124337,-2.47124e-06,9.18514e-09,0.627903,0.00123846,-2.44369e-06,8.97952e-09,0.629139,0.0012336,-2.41675e-06,1.45012e-08,0.63037,0.00122881,-2.37325e-06,-7.37949e-09,0.631597,0.00122404,-2.39538e-06,1.50169e-08,0.632818,0.00121929,-2.35033e-06,6.91648e-09,0.634035,0.00121461,-2.32958e-06,1.69219e-08,0.635248,0.00121,-2.27882e-06,-1.49997e-08,0.636455,0.0012054,-2.32382e-06,4.30769e-08,0.637659,0.00120088,-2.19459e-06,-3.80986e-08,0.638857,0.00119638,-2.30888e-06,4.97134e-08,0.640051,0.00119191,-2.15974e-06,-4.15463e-08,0.641241,0.00118747,-2.28438e-06,5.68667e-08,0.642426,0.00118307,-2.11378e-06,-7.10641e-09,0.643607,0.00117882,-2.1351e-06,-2.8441e-08,0.644784,0.00117446,-2.22042e-06,6.12658e-08,0.645956,0.00117021,-2.03663e-06,-3.78083e-08,0.647124,0.00116602,-2.15005e-06,3.03627e-08,0.648288,0.00116181,-2.05896e-06,-2.40379e-08,0.649448,0.00115762,-2.13108e-06,6.57887e-08,0.650603,0.00115356,-1.93371e-06,-6.03028e-08,0.651755,0.00114951,-2.11462e-06,5.62134e-08,0.652902,0.00114545,-1.94598e-06,-4.53417e-08,0.654046,0.00114142,-2.082e-06,6.55489e-08,0.655185,0.00113745,-1.88536e-06,-3.80396e-08,0.656321,0.00113357,-1.99948e-06,2.70049e-08,0.657452,0.00112965,-1.91846e-06,-1.03755e-08,0.65858,0.00112578,-1.94959e-06,1.44973e-08,0.659704,0.00112192,-1.9061e-06,1.1991e-08,0.660824,0.00111815,-1.87012e-06,-2.85634e-09,0.66194,0.0011144,-1.87869e-06,-5.65782e-10,0.663053,0.00111064,-1.88039e-06,5.11947e-09,0.664162,0.0011069,-1.86503e-06,3.96924e-08,0.665267,0.00110328,-1.74595e-06,-4.46795e-08,0.666368,0.00109966,-1.87999e-06,1.98161e-08,0.667466,0.00109596,-1.82054e-06,2.502e-08,0.66856,0.00109239,-1.74548e-06,-6.86593e-10,0.669651,0.0010889,-1.74754e-06,-2.22739e-08,0.670738,0.00108534,-1.81437e-06,3.01776e-08,0.671821,0.0010818,-1.72383e-06,2.07732e-08,0.672902,0.00107841,-1.66151e-06,-5.36658e-08,0.673978,0.00107493,-1.82251e-06,7.46802e-08,0.675051,0.00107151,-1.59847e-06,-6.62411e-08,0.676121,0.00106811,-1.79719e-06,7.10748e-08,0.677188,0.00106473,-1.58397e-06,-3.92441e-08,0.678251,0.00106145,-1.7017e-06,2.62973e-08,0.679311,0.00105812,-1.62281e-06,-6.34035e-09,0.680367,0.00105486,-1.64183e-06,-9.36249e-10,0.68142,0.00105157,-1.64464e-06,1.00854e-08,0.68247,0.00104831,-1.61438e-06,2.01995e-08,0.683517,0.00104514,-1.55378e-06,-3.1279e-08,0.68456,0.00104194,-1.64762e-06,4.53114e-08,0.685601,0.00103878,-1.51169e-06,-3.07573e-08,0.686638,0.00103567,-1.60396e-06,1.81133e-08,0.687672,0.00103251,-1.54962e-06,1.79085e-08,0.688703,0.00102947,-1.49589e-06,-3.01428e-08,0.689731,0.00102639,-1.58632e-06,4.30583e-08,0.690756,0.00102334,-1.45715e-06,-2.28814e-08,0.691778,0.00102036,-1.52579e-06,-1.11373e-08,0.692797,0.00101727,-1.5592e-06,6.74305e-08,0.693812,0.00101436,-1.35691e-06,-7.97709e-08,0.694825,0.0010114,-1.59622e-06,7.28391e-08,0.695835,0.00100843,-1.37771e-06,-3.27715e-08,0.696842,0.00100558,-1.47602e-06,-1.35807e-09,0.697846,0.00100262,-1.48009e-06,3.82037e-08,0.698847,0.000999775,-1.36548e-06,-3.22474e-08,0.699846,0.000996948,-1.46223e-06,3.11809e-08,0.700841,0.000994117,-1.36868e-06,-3.28714e-08,0.701834,0.000991281,-1.4673e-06,4.07001e-08,0.702824,0.000988468,-1.3452e-06,-1.07197e-08,0.703811,0.000985746,-1.37736e-06,2.17866e-09,0.704795,0.000982998,-1.37082e-06,2.00521e-09,0.705777,0.000980262,-1.3648e-06,-1.01996e-08,0.706756,0.000977502,-1.3954e-06,3.87931e-08,0.707732,0.000974827,-1.27902e-06,-2.57632e-08,0.708706,0.000972192,-1.35631e-06,4.65513e-09,0.709676,0.000969493,-1.34235e-06,7.14257e-09,0.710645,0.00096683,-1.32092e-06,2.63791e-08,0.71161,0.000964267,-1.24178e-06,-5.30543e-08,0.712573,0.000961625,-1.40095e-06,6.66289e-08,0.713533,0.000959023,-1.20106e-06,-3.46474e-08,0.714491,0.000956517,-1.305e-06,1.23559e-08,0.715446,0.000953944,-1.26793e-06,-1.47763e-08,0.716399,0.000951364,-1.31226e-06,4.67494e-08,0.717349,0.000948879,-1.17201e-06,-5.3012e-08,0.718297,0.000946376,-1.33105e-06,4.60894e-08,0.719242,0.000943852,-1.19278e-06,-1.21366e-08,0.720185,0.00094143,-1.22919e-06,2.45673e-09,0.721125,0.000938979,-1.22182e-06,2.30966e-09,0.722063,0.000936543,-1.21489e-06,-1.16954e-08,0.722998,0.000934078,-1.24998e-06,4.44718e-08,0.723931,0.000931711,-1.11656e-06,-4.69823e-08,0.724861,0.000929337,-1.25751e-06,2.4248e-08,0.725789,0.000926895,-1.18477e-06,9.5949e-09,0.726715,0.000924554,-1.15598e-06,-3.02286e-09,0.727638,0.000922233,-1.16505e-06,2.49649e-09,0.72856,0.00091991,-1.15756e-06,-6.96321e-09,0.729478,0.000917575,-1.17845e-06,2.53564e-08,0.730395,0.000915294,-1.10238e-06,-3.48578e-08,0.731309,0.000912984,-1.20695e-06,5.44704e-08,0.732221,0.000910734,-1.04354e-06,-6.38144e-08,0.73313,0.000908455,-1.23499e-06,8.15781e-08,0.734038,0.00090623,-9.90253e-07,-8.3684e-08,0.734943,0.000903999,-1.2413e-06,7.43441e-08,0.735846,0.000901739,-1.01827e-06,-3.48787e-08,0.736746,0.000899598,-1.12291e-06,5.56596e-09,0.737645,0.000897369,-1.10621e-06,1.26148e-08,0.738541,0.000895194,-1.06837e-06,3.57935e-09,0.739435,0.000893068,-1.05763e-06,-2.69322e-08,0.740327,0.000890872,-1.13842e-06,4.45448e-08,0.741217,0.000888729,-1.00479e-06,-3.20376e-08,0.742105,0.000886623,-1.1009e-06,2.40011e-08,0.74299,0.000884493,-1.0289e-06,-4.36209e-09,0.743874,0.000882422,-1.04199e-06,-6.55268e-09,0.744755,0.000880319,-1.06164e-06,3.05728e-08,0.745634,0.000878287,-9.69926e-07,-5.61338e-08,0.746512,0.000876179,-1.13833e-06,7.4753e-08,0.747387,0.000874127,-9.14068e-07,-6.40644e-08,0.74826,0.000872106,-1.10626e-06,6.22955e-08,0.749131,0.000870081,-9.19375e-07,-6.59083e-08,0.75,0.000868044,-1.1171e-06,8.21284e-08,0.750867,0.000866056,-8.70714e-07,-8.37915e-08,0.751732,0.000864064,-1.12209e-06,7.42237e-08,0.752595,0.000862042,-8.99418e-07,-3.42894e-08,0.753456,0.00086014,-1.00229e-06,3.32955e-09,0.754315,0.000858146,-9.92297e-07,2.09712e-08,0.755173,0.000856224,-9.29384e-07,-2.76096e-08,0.756028,0.000854282,-1.01221e-06,2.98627e-08,0.756881,0.000852348,-9.22625e-07,-3.22365e-08,0.757733,0.000850406,-1.01933e-06,3.94786e-08,0.758582,0.000848485,-9.00898e-07,-6.46833e-09,0.75943,0.000846664,-9.20303e-07,-1.36052e-08,0.760275,0.000844783,-9.61119e-07,1.28447e-09,0.761119,0.000842864,-9.57266e-07,8.4674e-09,0.761961,0.000840975,-9.31864e-07,2.44506e-08,0.762801,0.000839185,-8.58512e-07,-4.6665e-08,0.763639,0.000837328,-9.98507e-07,4.30001e-08,0.764476,0.00083546,-8.69507e-07,-6.12609e-09,0.76531,0.000833703,-8.87885e-07,-1.84959e-08,0.766143,0.000831871,-9.43372e-07,2.05052e-08,0.766974,0.000830046,-8.81857e-07,-3.92026e-09,0.767803,0.000828271,-8.93618e-07,-4.82426e-09,0.768631,0.000826469,-9.0809e-07,2.32172e-08,0.769456,0.000824722,-8.38439e-07,-2.84401e-08,0.77028,0.00082296,-9.23759e-07,3.09386e-08,0.771102,0.000821205,-8.30943e-07,-3.57099e-08,0.771922,0.000819436,-9.38073e-07,5.22963e-08,0.772741,0.000817717,-7.81184e-07,-5.42658e-08,0.773558,0.000815992,-9.43981e-07,4.55579e-08,0.774373,0.000814241,-8.07308e-07,-8.75656e-09,0.775186,0.0008126,-8.33578e-07,-1.05315e-08,0.775998,0.000810901,-8.65172e-07,-8.72188e-09,0.776808,0.000809145,-8.91338e-07,4.54191e-08,0.777616,0.000807498,-7.5508e-07,-5.37454e-08,0.778423,0.000805827,-9.16317e-07,5.03532e-08,0.779228,0.000804145,-7.65257e-07,-2.84584e-08,0.780031,0.000802529,-8.50632e-07,3.87579e-09,0.780833,0.00080084,-8.39005e-07,1.29552e-08,0.781633,0.0007992,-8.00139e-07,3.90804e-09,0.782432,0.000797612,-7.88415e-07,-2.85874e-08,0.783228,0.000795949,-8.74177e-07,5.0837e-08,0.784023,0.000794353,-7.21666e-07,-5.55513e-08,0.784817,0.000792743,-8.8832e-07,5.21587e-08,0.785609,0.000791123,-7.31844e-07,-3.38744e-08,0.786399,0.000789558,-8.33467e-07,2.37342e-08,0.787188,0.000787962,-7.62264e-07,-1.45775e-09,0.787975,0.000786433,-7.66638e-07,-1.79034e-08,0.788761,0.000784846,-8.20348e-07,1.34665e-08,0.789545,0.000783246,-7.79948e-07,2.3642e-08,0.790327,0.000781757,-7.09022e-07,-4.84297e-08,0.791108,0.000780194,-8.54311e-07,5.08674e-08,0.791888,0.000778638,-7.01709e-07,-3.58303e-08,0.792666,0.000777127,-8.092e-07,3.28493e-08,0.793442,0.000775607,-7.10652e-07,-3.59624e-08,0.794217,0.000774078,-8.1854e-07,5.13959e-08,0.79499,0.000772595,-6.64352e-07,-5.04121e-08,0.795762,0.000771115,-8.15588e-07,3.10431e-08,0.796532,0.000769577,-7.22459e-07,-1.41557e-08,0.797301,0.00076809,-7.64926e-07,2.55795e-08,0.798069,0.000766636,-6.88187e-07,-2.85578e-08,0.798835,0.000765174,-7.73861e-07,2.90472e-08,0.799599,0.000763714,-6.86719e-07,-2.80262e-08,0.800362,0.000762256,-7.70798e-07,2.34531e-08,0.801123,0.000760785,-7.00438e-07,-6.18144e-09,0.801884,0.000759366,-7.18983e-07,1.27263e-09,0.802642,0.000757931,-7.15165e-07,1.09101e-09,0.803399,0.000756504,-7.11892e-07,-5.63675e-09,0.804155,0.000755064,-7.28802e-07,2.14559e-08,0.80491,0.00075367,-6.64434e-07,-2.05821e-08,0.805663,0.00075228,-7.26181e-07,1.26812e-09,0.806414,0.000750831,-7.22377e-07,1.55097e-08,0.807164,0.000749433,-6.75848e-07,-3.70216e-09,0.807913,0.00074807,-6.86954e-07,-7.0105e-10,0.80866,0.000746694,-6.89057e-07,6.5063e-09,0.809406,0.000745336,-6.69538e-07,-2.53242e-08,0.810151,0.000743921,-7.45511e-07,3.51858e-08,0.810894,0.000742535,-6.39953e-07,3.79034e-09,0.811636,0.000741267,-6.28582e-07,-5.03471e-08,0.812377,0.000739858,-7.79624e-07,7.83886e-08,0.813116,0.000738534,-5.44458e-07,-8.43935e-08,0.813854,0.000737192,-7.97638e-07,8.03714e-08,0.81459,0.000735838,-5.56524e-07,-5.82784e-08,0.815325,0.00073455,-7.31359e-07,3.35329e-08,0.816059,0.000733188,-6.3076e-07,-1.62486e-08,0.816792,0.000731878,-6.79506e-07,3.14614e-08,0.817523,0.000730613,-5.85122e-07,-4.99925e-08,0.818253,0.000729293,-7.35099e-07,4.92994e-08,0.818982,0.000727971,-5.87201e-07,-2.79959e-08,0.819709,0.000726712,-6.71189e-07,3.07959e-09,0.820435,0.000725379,-6.6195e-07,1.56777e-08,0.82116,0.000724102,-6.14917e-07,-6.18564e-09,0.821883,0.000722854,-6.33474e-07,9.06488e-09,0.822606,0.000721614,-6.06279e-07,-3.00739e-08,0.823327,0.000720311,-6.96501e-07,5.16262e-08,0.824046,0.000719073,-5.41623e-07,-5.72214e-08,0.824765,0.000717818,-7.13287e-07,5.80503e-08,0.825482,0.000716566,-5.39136e-07,-5.57703e-08,0.826198,0.00071532,-7.06447e-07,4.58215e-08,0.826912,0.000714045,-5.68983e-07,-8.30636e-09,0.827626,0.000712882,-5.93902e-07,-1.25961e-08,0.828338,0.000711656,-6.3169e-07,-9.13985e-10,0.829049,0.00071039,-6.34432e-07,1.62519e-08,0.829759,0.00070917,-5.85676e-07,-4.48904e-09,0.830468,0.000707985,-5.99143e-07,1.70418e-09,0.831175,0.000706792,-5.9403e-07,-2.32768e-09,0.831881,0.000705597,-6.01014e-07,7.60648e-09,0.832586,0.000704418,-5.78194e-07,-2.80982e-08,0.83329,0.000703177,-6.62489e-07,4.51817e-08,0.833993,0.000701988,-5.26944e-07,-3.34192e-08,0.834694,0.000700834,-6.27201e-07,2.88904e-08,0.835394,0.000699666,-5.4053e-07,-2.25378e-08,0.836093,0.000698517,-6.08143e-07,1.65589e-09,0.836791,0.000697306,-6.03176e-07,1.59142e-08,0.837488,0.000696147,-5.55433e-07,-5.70801e-09,0.838184,0.000695019,-5.72557e-07,6.91792e-09,0.838878,0.000693895,-5.51803e-07,-2.19637e-08,0.839571,0.000692725,-6.17694e-07,2.13321e-08,0.840263,0.000691554,-5.53698e-07,-3.75996e-09,0.840954,0.000690435,-5.64978e-07,-6.29219e-09,0.841644,0.000689287,-5.83855e-07,2.89287e-08,0.842333,0.000688206,-4.97068e-07,-4.98181e-08,0.843021,0.000687062,-6.46523e-07,5.11344e-08,0.843707,0.000685922,-4.9312e-07,-3.55102e-08,0.844393,0.00068483,-5.9965e-07,3.13019e-08,0.845077,0.000683724,-5.05745e-07,-3.00925e-08,0.84576,0.000682622,-5.96022e-07,2.94636e-08,0.846442,0.000681519,-5.07631e-07,-2.81572e-08,0.847123,0.000680419,-5.92103e-07,2.35606e-08,0.847803,0.000679306,-5.21421e-07,-6.48045e-09,0.848482,0.000678243,-5.40863e-07,2.36124e-09,0.849159,0.000677169,-5.33779e-07,-2.96461e-09,0.849836,0.000676092,-5.42673e-07,9.49728e-09,0.850512,0.000675035,-5.14181e-07,-3.50245e-08,0.851186,0.000673902,-6.19254e-07,7.09959e-08,0.851859,0.000672876,-4.06267e-07,-7.01453e-08,0.852532,0.000671853,-6.16703e-07,3.07714e-08,0.853203,0.000670712,-5.24388e-07,6.66423e-09,0.853873,0.000669684,-5.04396e-07,2.17629e-09,0.854542,0.000668681,-4.97867e-07,-1.53693e-08,0.855211,0.000667639,-5.43975e-07,-3.03752e-10,0.855878,0.000666551,-5.44886e-07,1.65844e-08,0.856544,0.000665511,-4.95133e-07,-6.42907e-09,0.857209,0.000664501,-5.1442e-07,9.13195e-09,0.857873,0.0006635,-4.87024e-07,-3.00987e-08,0.858536,0.000662435,-5.7732e-07,5.16584e-08,0.859198,0.000661436,-4.22345e-07,-5.73255e-08,0.859859,0.000660419,-5.94322e-07,5.84343e-08,0.860518,0.000659406,-4.19019e-07,-5.72022e-08,0.861177,0.000658396,-5.90626e-07,5.11653e-08,0.861835,0.000657368,-4.3713e-07,-2.82495e-08,0.862492,0.000656409,-5.21878e-07,2.22788e-09,0.863148,0.000655372,-5.15195e-07,1.9338e-08,0.863803,0.0006544,-4.5718e-07,-1.99754e-08,0.864457,0.000653425,-5.17107e-07,9.59024e-10,0.86511,0.000652394,-5.1423e-07,1.61393e-08,0.865762,0.000651414,-4.65812e-07,-5.91149e-09,0.866413,0.000650465,-4.83546e-07,7.50665e-09,0.867063,0.00064952,-4.61026e-07,-2.4115e-08,0.867712,0.000648526,-5.33371e-07,2.93486e-08,0.86836,0.000647547,-4.45325e-07,-3.36748e-08,0.869007,0.000646555,-5.4635e-07,4.57461e-08,0.869653,0.0006456,-4.09112e-07,-3.01002e-08,0.870298,0.000644691,-4.99412e-07,1.50501e-08,0.870942,0.000643738,-4.54262e-07,-3.01002e-08,0.871585,0.000642739,-5.44563e-07,4.57461e-08,0.872228,0.000641787,-4.07324e-07,-3.36748e-08,0.872869,0.000640871,-5.08349e-07,2.93486e-08,0.873509,0.000639943,-4.20303e-07,-2.4115e-08,0.874149,0.00063903,-4.92648e-07,7.50655e-09,0.874787,0.000638067,-4.70128e-07,-5.91126e-09,0.875425,0.000637109,-4.87862e-07,1.61385e-08,0.876062,0.000636182,-4.39447e-07,9.61961e-10,0.876697,0.000635306,-4.36561e-07,-1.99863e-08,0.877332,0.000634373,-4.9652e-07,1.93785e-08,0.877966,0.000633438,-4.38384e-07,2.07697e-09,0.878599,0.000632567,-4.32153e-07,-2.76864e-08,0.879231,0.00063162,-5.15212e-07,4.90641e-08,0.879862,0.000630737,-3.6802e-07,-4.93606e-08,0.880493,0.000629852,-5.16102e-07,2.9169e-08,0.881122,0.000628908,-4.28595e-07,-7.71083e-09,0.881751,0.000628027,-4.51727e-07,1.6744e-09,0.882378,0.000627129,-4.46704e-07,1.01317e-09,0.883005,0.000626239,-4.43665e-07,-5.72703e-09,0.883631,0.000625334,-4.60846e-07,2.1895e-08,0.884255,0.000624478,-3.95161e-07,-2.22481e-08,0.88488,0.000623621,-4.61905e-07,7.4928e-09,0.885503,0.00062272,-4.39427e-07,-7.72306e-09,0.886125,0.000621818,-4.62596e-07,2.33995e-08,0.886746,0.000620963,-3.92398e-07,-2.62704e-08,0.887367,0.000620099,-4.71209e-07,2.20775e-08,0.887987,0.000619223,-4.04976e-07,-2.43496e-09,0.888605,0.000618406,-4.12281e-07,-1.23377e-08,0.889223,0.000617544,-4.49294e-07,-7.81876e-09,0.88984,0.000616622,-4.72751e-07,4.36128e-08,0.890457,0.000615807,-3.41912e-07,-4.7423e-08,0.891072,0.000614981,-4.84181e-07,2.68698e-08,0.891687,0.000614093,-4.03572e-07,-4.51384e-10,0.8923,0.000613285,-4.04926e-07,-2.50643e-08,0.892913,0.0006124,-4.80119e-07,4.11038e-08,0.893525,0.000611563,-3.56808e-07,-2.01414e-08,0.894136,0.000610789,-4.17232e-07,-2.01426e-08,0.894747,0.000609894,-4.7766e-07,4.11073e-08,0.895356,0.000609062,-3.54338e-07,-2.50773e-08,0.895965,0.000608278,-4.2957e-07,-4.02954e-10,0.896573,0.000607418,-4.30779e-07,2.66891e-08,0.89718,0.000606636,-3.50711e-07,-4.67489e-08,0.897786,0.000605795,-4.90958e-07,4.10972e-08,0.898391,0.000604936,-3.67666e-07,1.56948e-09,0.898996,0.000604205,-3.62958e-07,-4.73751e-08,0.8996,0.000603337,-5.05083e-07,6.87214e-08,0.900202,0.000602533,-2.98919e-07,-4.86966e-08,0.900805,0.000601789,-4.45009e-07,6.85589e-09,0.901406,0.00060092,-4.24441e-07,2.1273e-08,0.902007,0.000600135,-3.60622e-07,-3.23434e-08,0.902606,0.000599317,-4.57652e-07,4.84959e-08,0.903205,0.000598547,-3.12164e-07,-4.24309e-08,0.903803,0.000597795,-4.39457e-07,2.01844e-09,0.904401,0.000596922,-4.33402e-07,3.43571e-08,0.904997,0.000596159,-3.30331e-07,-2.02374e-08,0.905593,0.000595437,-3.91043e-07,-1.30123e-08,0.906188,0.000594616,-4.3008e-07,1.26819e-08,0.906782,0.000593794,-3.92034e-07,2.18894e-08,0.907376,0.000593076,-3.26366e-07,-4.06349e-08,0.907968,0.000592301,-4.4827e-07,2.1441e-08,0.90856,0.000591469,-3.83947e-07,1.44754e-08,0.909151,0.000590744,-3.40521e-07,-1.97379e-08,0.909742,0.000590004,-3.99735e-07,4.87161e-09,0.910331,0.000589219,-3.8512e-07,2.51532e-10,0.91092,0.00058845,-3.84366e-07,-5.87776e-09,0.911508,0.000587663,-4.01999e-07,2.32595e-08,0.912096,0.000586929,-3.3222e-07,-2.75554e-08,0.912682,0.000586182,-4.14887e-07,2.73573e-08,0.913268,0.000585434,-3.32815e-07,-2.22692e-08,0.913853,0.000584702,-3.99622e-07,2.11486e-09,0.914437,0.000583909,-3.93278e-07,1.38098e-08,0.915021,0.000583164,-3.51848e-07,2.25042e-09,0.915604,0.000582467,-3.45097e-07,-2.28115e-08,0.916186,0.000581708,-4.13531e-07,2.93911e-08,0.916767,0.000580969,-3.25358e-07,-3.51481e-08,0.917348,0.000580213,-4.30803e-07,5.15967e-08,0.917928,0.000579506,-2.76012e-07,-5.20296e-08,0.918507,0.000578798,-4.32101e-07,3.73124e-08,0.919085,0.000578046,-3.20164e-07,-3.76154e-08,0.919663,0.000577293,-4.3301e-07,5.35447e-08,0.92024,0.000576587,-2.72376e-07,-5.7354e-08,0.920816,0.000575871,-4.44438e-07,5.66621e-08,0.921391,0.000575152,-2.74452e-07,-5.00851e-08,0.921966,0.000574453,-4.24707e-07,2.4469e-08,0.92254,0.000573677,-3.513e-07,1.18138e-08,0.923114,0.000573009,-3.15859e-07,-1.21195e-08,0.923686,0.000572341,-3.52217e-07,-2.29403e-08,0.924258,0.000571568,-4.21038e-07,4.4276e-08,0.924829,0.000570859,-2.8821e-07,-3.49546e-08,0.9254,0.000570178,-3.93074e-07,3.59377e-08,0.92597,0.000569499,-2.85261e-07,-4.91915e-08,0.926539,0.000568781,-4.32835e-07,4.16189e-08,0.927107,0.00056804,-3.07979e-07,1.92523e-09,0.927675,0.00056743,-3.02203e-07,-4.93198e-08,0.928242,0.000566678,-4.50162e-07,7.61447e-08,0.928809,0.000566006,-2.21728e-07,-7.6445e-08,0.929374,0.000565333,-4.51063e-07,5.08216e-08,0.929939,0.000564583,-2.98599e-07,-7.63212e-09,0.930503,0.000563963,-3.21495e-07,-2.02931e-08,0.931067,0.000563259,-3.82374e-07,2.92001e-08,0.93163,0.000562582,-2.94774e-07,-3.69025e-08,0.932192,0.000561882,-4.05482e-07,5.88053e-08,0.932754,0.000561247,-2.29066e-07,-7.91094e-08,0.933315,0.000560552,-4.66394e-07,7.88184e-08,0.933875,0.000559856,-2.29939e-07,-5.73501e-08,0.934434,0.000559224,-4.01989e-07,3.13727e-08,0.934993,0.000558514,-3.07871e-07,-8.53611e-09,0.935551,0.000557873,-3.33479e-07,2.77175e-09,0.936109,0.000557214,-3.25164e-07,-2.55091e-09,0.936666,0.000556556,-3.32817e-07,7.43188e-09,0.937222,0.000555913,-3.10521e-07,-2.71766e-08,0.937778,0.00055521,-3.92051e-07,4.167e-08,0.938333,0.000554551,-2.67041e-07,-2.02941e-08,0.938887,0.000553956,-3.27923e-07,-2.00984e-08,0.93944,0.00055324,-3.88218e-07,4.10828e-08,0.939993,0.000552587,-2.6497e-07,-2.50237e-08,0.940546,0.000551982,-3.40041e-07,-5.92583e-10,0.941097,0.0005513,-3.41819e-07,2.7394e-08,0.941648,0.000550698,-2.59637e-07,-4.93788e-08,0.942199,0.000550031,-4.07773e-07,5.09119e-08,0.942748,0.000549368,-2.55038e-07,-3.50595e-08,0.943297,0.000548753,-3.60216e-07,2.97214e-08,0.943846,0.000548122,-2.71052e-07,-2.42215e-08,0.944394,0.000547507,-3.43716e-07,7.55985e-09,0.944941,0.000546842,-3.21037e-07,-6.01796e-09,0.945487,0.000546182,-3.3909e-07,1.65119e-08,0.946033,0.000545553,-2.89555e-07,-4.2498e-10,0.946578,0.000544973,-2.9083e-07,-1.4812e-08,0.947123,0.000544347,-3.35266e-07,6.83068e-11,0.947667,0.000543676,-3.35061e-07,1.45388e-08,0.94821,0.00054305,-2.91444e-07,1.38123e-09,0.948753,0.000542471,-2.87301e-07,-2.00637e-08,0.949295,0.000541836,-3.47492e-07,1.92688e-08,0.949837,0.000541199,-2.89685e-07,2.59298e-09,0.950378,0.000540628,-2.81906e-07,-2.96407e-08,0.950918,0.000539975,-3.70829e-07,5.63652e-08,0.951458,0.000539402,-2.01733e-07,-7.66107e-08,0.951997,0.000538769,-4.31565e-07,7.12638e-08,0.952535,0.00053812,-2.17774e-07,-2.96305e-08,0.953073,0.000537595,-3.06665e-07,-1.23464e-08,0.95361,0.000536945,-3.43704e-07,1.94114e-08,0.954147,0.000536316,-2.8547e-07,-5.69451e-09,0.954683,0.000535728,-3.02554e-07,3.36666e-09,0.955219,0.000535133,-2.92454e-07,-7.77208e-09,0.955753,0.000534525,-3.1577e-07,2.77216e-08,0.956288,0.000533976,-2.32605e-07,-4.35097e-08,0.956821,0.00053338,-3.63134e-07,2.7108e-08,0.957354,0.000532735,-2.8181e-07,-5.31772e-09,0.957887,0.000532156,-2.97764e-07,-5.83718e-09,0.958419,0.000531543,-3.15275e-07,2.86664e-08,0.95895,0.000530998,-2.29276e-07,-4.9224e-08,0.959481,0.000530392,-3.76948e-07,4.90201e-08,0.960011,0.000529785,-2.29887e-07,-2.76471e-08,0.96054,0.000529243,-3.12829e-07,1.96385e-09,0.961069,0.000528623,-3.06937e-07,1.97917e-08,0.961598,0.000528068,-2.47562e-07,-2.15261e-08,0.962125,0.000527508,-3.1214e-07,6.70795e-09,0.962653,0.000526904,-2.92016e-07,-5.30573e-09,0.963179,0.000526304,-3.07934e-07,1.4515e-08,0.963705,0.000525732,-2.64389e-07,6.85048e-09,0.964231,0.000525224,-2.43837e-07,-4.19169e-08,0.964756,0.00052461,-3.69588e-07,4.1608e-08,0.96528,0.000523996,-2.44764e-07,-5.30598e-09,0.965804,0.000523491,-2.60682e-07,-2.03841e-08,0.966327,0.000522908,-3.21834e-07,2.72378e-08,0.966849,0.000522346,-2.40121e-07,-2.89625e-08,0.967371,0.000521779,-3.27008e-07,2.90075e-08,0.967893,0.000521212,-2.39986e-07,-2.74629e-08,0.968414,0.00052065,-3.22374e-07,2.12396e-08,0.968934,0.000520069,-2.58656e-07,2.10922e-09,0.969454,0.000519558,-2.52328e-07,-2.96765e-08,0.969973,0.000518964,-3.41357e-07,5.6992e-08,0.970492,0.000518452,-1.70382e-07,-7.90821e-08,0.97101,0.000517874,-4.07628e-07,8.05224e-08,0.971528,0.000517301,-1.66061e-07,-6.41937e-08,0.972045,0.000516776,-3.58642e-07,5.70429e-08,0.972561,0.00051623,-1.87513e-07,-4.47686e-08,0.973077,0.00051572,-3.21819e-07,2.82237e-09,0.973593,0.000515085,-3.13352e-07,3.34792e-08,0.974108,0.000514559,-2.12914e-07,-1.75298e-08,0.974622,0.000514081,-2.65503e-07,-2.29648e-08,0.975136,0.000513481,-3.34398e-07,4.97843e-08,0.975649,0.000512961,-1.85045e-07,-5.6963e-08,0.976162,0.00051242,-3.55934e-07,5.88585e-08,0.976674,0.000511885,-1.79359e-07,-5.92616e-08,0.977185,0.000511348,-3.57143e-07,5.89785e-08,0.977696,0.000510811,-1.80208e-07,-5.74433e-08,0.978207,0.000510278,-3.52538e-07,5.15854e-08,0.978717,0.000509728,-1.97781e-07,-2.9689e-08,0.979226,0.000509243,-2.86848e-07,7.56591e-09,0.979735,0.000508692,-2.64151e-07,-5.74649e-10,0.980244,0.000508162,-2.65875e-07,-5.26732e-09,0.980752,0.000507615,-2.81677e-07,2.16439e-08,0.981259,0.000507116,-2.16745e-07,-2.17037e-08,0.981766,0.000506618,-2.81856e-07,5.56636e-09,0.982272,0.000506071,-2.65157e-07,-5.61689e-10,0.982778,0.000505539,-2.66842e-07,-3.31963e-09,0.983283,0.000504995,-2.76801e-07,1.38402e-08,0.983788,0.000504483,-2.3528e-07,7.56339e-09,0.984292,0.000504035,-2.1259e-07,-4.40938e-08,0.984796,0.000503478,-3.44871e-07,4.96026e-08,0.985299,0.000502937,-1.96064e-07,-3.51071e-08,0.985802,0.000502439,-3.01385e-07,3.12212e-08,0.986304,0.00050193,-2.07721e-07,-3.0173e-08,0.986806,0.000501424,-2.9824e-07,2.9866e-08,0.987307,0.000500917,-2.08642e-07,-2.96865e-08,0.987808,0.000500411,-2.97702e-07,2.92753e-08,0.988308,0.000499903,-2.09876e-07,-2.78101e-08,0.988807,0.0004994,-2.93306e-07,2.23604e-08,0.989307,0.000498881,-2.26225e-07,-2.02681e-09,0.989805,0.000498422,-2.32305e-07,-1.42531e-08,0.990303,0.000497915,-2.75065e-07,-5.65232e-10,0.990801,0.000497363,-2.76761e-07,1.65141e-08,0.991298,0.000496859,-2.27218e-07,-5.88639e-09,0.991795,0.000496387,-2.44878e-07,7.0315e-09,0.992291,0.000495918,-2.23783e-07,-2.22396e-08,0.992787,0.000495404,-2.90502e-07,2.23224e-08,0.993282,0.00049489,-2.23535e-07,-7.44543e-09,0.993776,0.000494421,-2.45871e-07,7.45924e-09,0.994271,0.000493951,-2.23493e-07,-2.23915e-08,0.994764,0.000493437,-2.90668e-07,2.25021e-08,0.995257,0.000492923,-2.23161e-07,-8.01218e-09,0.99575,0.000492453,-2.47198e-07,9.54669e-09,0.996242,0.000491987,-2.18558e-07,-3.01746e-08,0.996734,0.000491459,-3.09082e-07,5.1547e-08,0.997225,0.000490996,-1.54441e-07,-5.68039e-08,0.997716,0.000490517,-3.24853e-07,5.64594e-08,0.998206,0.000490036,-1.55474e-07,-4.98245e-08,0.998696,0.000489576,-3.04948e-07,2.36292e-08,0.999186,0.000489037,-2.3406e-07,1.49121e-08,0.999674,0.000488613,-1.89324e-07,-2.3673e-08,1.00016,0.000488164,-2.60343e-07,2.01754e-08,1.00065,0.000487704,-1.99816e-07,-5.70288e-08,1.00114,0.000487133,-3.70903e-07,8.87303e-08,1.00162,0.000486657,-1.04712e-07,-5.94737e-08,1.00211,0.000486269,-2.83133e-07,2.99553e-08,1.0026,0.000485793,-1.93267e-07,-6.03474e-08,1.00308,0.000485225,-3.74309e-07,9.2225e-08,1.00357,0.000484754,-9.76345e-08,-7.0134e-08,1.00405,0.000484348,-3.08036e-07,6.91016e-08,1.00454,0.000483939,-1.00731e-07,-8.70633e-08,1.00502,0.000483476,-3.61921e-07,4.07328e-08,1.0055,0.000482875,-2.39723e-07,4.33413e-08,1.00599,0.000482525,-1.09699e-07,-9.48886e-08,1.00647,0.000482021,-3.94365e-07,9.77947e-08,1.00695,0.000481526,-1.00981e-07,-5.78713e-08,1.00743,0.00048115,-2.74595e-07,1.44814e-08,1.00791,0.000480645,-2.31151e-07,-5.42665e-11,1.00839,0.000480182,-2.31314e-07,-1.42643e-08,1.00887,0.000479677,-2.74106e-07,5.71115e-08,1.00935,0.0004793,-1.02772e-07,-9.49724e-08,1.00983,0.000478809,-3.87689e-07,8.43596e-08,1.01031,0.000478287,-1.3461e-07,-4.04755e-09,1.01079,0.000478006,-1.46753e-07,-6.81694e-08,1.01127,0.000477508,-3.51261e-07,3.83067e-08,1.01174,0.00047692,-2.36341e-07,3.41521e-08,1.01222,0.00047655,-1.33885e-07,-5.57058e-08,1.0127,0.000476115,-3.01002e-07,6.94616e-08,1.01317,0.000475721,-9.26174e-08,-1.02931e-07,1.01365,0.000475227,-4.01412e-07,1.03846e-07,1.01412,0.000474736,-8.98751e-08,-7.40321e-08,1.0146,0.000474334,-3.11971e-07,7.30735e-08,1.01507,0.00047393,-9.27508e-08,-9.90527e-08,1.01554,0.000473447,-3.89909e-07,8.47188e-08,1.01602,0.000472921,-1.35753e-07,-1.40381e-09,1.01649,0.000472645,-1.39964e-07,-7.91035e-08,1.01696,0.000472128,-3.77275e-07,7.93993e-08,1.01744,0.000471612,-1.39077e-07,-7.52607e-11,1.01791,0.000471334,-1.39302e-07,-7.90983e-08,1.01838,0.000470818,-3.76597e-07,7.80499e-08,1.01885,0.000470299,-1.42448e-07,5.31733e-09,1.01932,0.00047003,-1.26496e-07,-9.93193e-08,1.01979,0.000469479,-4.24453e-07,1.53541e-07,1.02026,0.00046909,3.617e-08,-1.57217e-07,1.02073,0.000468691,-4.35482e-07,1.177e-07,1.02119,0.000468173,-8.23808e-08,-7.51659e-08,1.02166,0.000467783,-3.07878e-07,6.37538e-08,1.02213,0.000467358,-1.16617e-07,-6.064e-08,1.0226,0.000466943,-2.98537e-07,5.9597e-08,1.02306,0.000466525,-1.19746e-07,-5.85386e-08,1.02353,0.00046611,-2.95362e-07,5.53482e-08,1.024,0.000465685,-1.29317e-07,-4.36449e-08,1.02446,0.000465296,-2.60252e-07,2.20268e-11,1.02493,0.000464775,-2.60186e-07,4.35568e-08,1.02539,0.000464386,-1.29516e-07,-5.50398e-08,1.02586,0.000463961,-2.94635e-07,5.73932e-08,1.02632,0.000463544,-1.22456e-07,-5.53236e-08,1.02678,0.000463133,-2.88426e-07,4.46921e-08,1.02725,0.000462691,-1.5435e-07,-4.23534e-09,1.02771,0.000462369,-1.67056e-07,-2.77507e-08,1.02817,0.000461952,-2.50308e-07,-3.97101e-09,1.02863,0.000461439,-2.62221e-07,4.36348e-08,1.02909,0.000461046,-1.31317e-07,-5.13589e-08,1.02955,0.000460629,-2.85394e-07,4.25913e-08,1.03001,0.000460186,-1.5762e-07,2.0285e-10,1.03047,0.000459871,-1.57011e-07,-4.34027e-08,1.03093,0.000459427,-2.87219e-07,5.41987e-08,1.03139,0.000459015,-1.24623e-07,-5.4183e-08,1.03185,0.000458604,-2.87172e-07,4.33239e-08,1.03231,0.000458159,-1.572e-07,9.65817e-11,1.03277,0.000457845,-1.56911e-07,-4.37103e-08,1.03323,0.0004574,-2.88041e-07,5.55351e-08,1.03368,0.000456991,-1.21436e-07,-5.9221e-08,1.03414,0.00045657,-2.99099e-07,6.21394e-08,1.0346,0.000456158,-1.1268e-07,-7.01275e-08,1.03505,0.000455723,-3.23063e-07,9.91614e-08,1.03551,0.000455374,-2.55788e-08,-8.80996e-08,1.03596,0.000455058,-2.89878e-07,1.48184e-08,1.03642,0.000454523,-2.45422e-07,2.88258e-08,1.03687,0.000454119,-1.58945e-07,-1.09125e-08,1.03733,0.000453768,-1.91682e-07,1.48241e-08,1.03778,0.000453429,-1.4721e-07,-4.83838e-08,1.03823,0.00045299,-2.92361e-07,5.95019e-08,1.03869,0.000452584,-1.13856e-07,-7.04146e-08,1.03914,0.000452145,-3.25099e-07,1.02947e-07,1.03959,0.000451803,-1.62583e-08,-1.02955e-07,1.04004,0.000451462,-3.25123e-07,7.04544e-08,1.04049,0.000451023,-1.1376e-07,-5.96534e-08,1.04094,0.000450616,-2.9272e-07,4.89499e-08,1.04139,0.000450178,-1.45871e-07,-1.69369e-08,1.04184,0.000449835,-1.96681e-07,1.87977e-08,1.04229,0.000449498,-1.40288e-07,-5.82539e-08,1.04274,0.000449043,-3.1505e-07,9.50087e-08,1.04319,0.000448698,-3.00238e-08,-8.33623e-08,1.04364,0.000448388,-2.80111e-07,2.20363e-11,1.04409,0.000447828,-2.80045e-07,8.32742e-08,1.04454,0.000447517,-3.02221e-08,-9.47002e-08,1.04498,0.000447173,-3.14323e-07,5.7108e-08,1.04543,0.000446716,-1.42999e-07,-1.45225e-08,1.04588,0.000446386,-1.86566e-07,9.82022e-10,1.04632,0.000446016,-1.8362e-07,1.05944e-08,1.04677,0.00044568,-1.51837e-07,-4.33597e-08,1.04721,0.000445247,-2.81916e-07,4.36352e-08,1.04766,0.000444814,-1.51011e-07,-1.19717e-08,1.0481,0.000444476,-1.86926e-07,4.25158e-09,1.04855,0.000444115,-1.74171e-07,-5.03461e-09,1.04899,0.000443751,-1.89275e-07,1.58868e-08,1.04944,0.00044342,-1.41614e-07,-5.85127e-08,1.04988,0.000442961,-3.17152e-07,9.89548e-08,1.05032,0.000442624,-2.0288e-08,-9.88878e-08,1.05076,0.000442287,-3.16951e-07,5.81779e-08,1.05121,0.000441827,-1.42418e-07,-1.46144e-08,1.05165,0.000441499,-1.86261e-07,2.79892e-10,1.05209,0.000441127,-1.85421e-07,1.34949e-08,1.05253,0.000440797,-1.44937e-07,-5.42594e-08,1.05297,0.000440344,-3.07715e-07,8.43335e-08,1.05341,0.000439982,-5.47146e-08,-4.46558e-08,1.05385,0.000439738,-1.88682e-07,-2.49193e-08,1.05429,0.000439286,-2.6344e-07,2.5124e-08,1.05473,0.000438835,-1.88068e-07,4.36328e-08,1.05517,0.000438589,-5.71699e-08,-8.04459e-08,1.05561,0.000438234,-2.98508e-07,3.97324e-08,1.05605,0.000437756,-1.79311e-07,4.07258e-08,1.05648,0.000437519,-5.71332e-08,-8.34263e-08,1.05692,0.000437155,-3.07412e-07,5.45608e-08,1.05736,0.000436704,-1.4373e-07,-1.56078e-08,1.05779,0.000436369,-1.90553e-07,7.87043e-09,1.05823,0.000436012,-1.66942e-07,-1.58739e-08,1.05867,0.00043563,-2.14563e-07,5.56251e-08,1.0591,0.000435368,-4.76881e-08,-8.74172e-08,1.05954,0.000435011,-3.0994e-07,5.56251e-08,1.05997,0.000434558,-1.43064e-07,-1.58739e-08,1.06041,0.000434224,-1.90686e-07,7.87042e-09,1.06084,0.000433866,-1.67075e-07,-1.56078e-08,1.06127,0.000433485,-2.13898e-07,5.45609e-08,1.06171,0.000433221,-5.02157e-08,-8.34263e-08,1.06214,0.00043287,-3.00495e-07,4.07258e-08,1.06257,0.000432391,-1.78317e-07,3.97325e-08,1.063,0.000432154,-5.91198e-08,-8.04464e-08,1.06344,0.000431794,-3.00459e-07,4.36347e-08,1.06387,0.000431324,-1.69555e-07,2.5117e-08,1.0643,0.000431061,-9.42041e-08,-2.48934e-08,1.06473,0.000430798,-1.68884e-07,-4.47527e-08,1.06516,0.000430326,-3.03142e-07,8.46951e-08,1.06559,0.000429973,-4.90573e-08,-5.56089e-08,1.06602,0.000429708,-2.15884e-07,1.85314e-08,1.06645,0.000429332,-1.6029e-07,-1.85166e-08,1.06688,0.000428956,-2.1584e-07,5.5535e-08,1.06731,0.000428691,-4.92347e-08,-8.44142e-08,1.06774,0.000428339,-3.02477e-07,4.37032e-08,1.06816,0.000427865,-1.71368e-07,2.88107e-08,1.06859,0.000427609,-8.49356e-08,-3.97367e-08,1.06902,0.00042732,-2.04146e-07,1.09267e-08,1.06945,0.000426945,-1.71365e-07,-3.97023e-09,1.06987,0.00042659,-1.83276e-07,4.9542e-09,1.0703,0.000426238,-1.68414e-07,-1.58466e-08,1.07073,0.000425854,-2.15953e-07,5.84321e-08,1.07115,0.000425597,-4.0657e-08,-9.86725e-08,1.07158,0.00042522,-3.36674e-07,9.78392e-08,1.072,0.00042484,-4.31568e-08,-5.42658e-08,1.07243,0.000424591,-2.05954e-07,1.45377e-11,1.07285,0.000424179,-2.0591e-07,5.42076e-08,1.07328,0.00042393,-4.32877e-08,-9.76357e-08,1.0737,0.00042355,-3.36195e-07,9.79165e-08,1.07412,0.000423172,-4.24451e-08,-5.56118e-08,1.07455,0.00042292,-2.09281e-07,5.32143e-09,1.07497,0.000422518,-1.93316e-07,3.43261e-08,1.07539,0.000422234,-9.0338e-08,-2.34165e-08,1.07581,0.000421983,-1.60588e-07,-5.98692e-08,1.07623,0.000421482,-3.40195e-07,1.43684e-07,1.07666,0.000421233,9.08574e-08,-1.5724e-07,1.07708,0.000420943,-3.80862e-07,1.27647e-07,1.0775,0.000420564,2.0791e-09,-1.1493e-07,1.07792,0.000420223,-3.4271e-07,9.36534e-08,1.07834,0.000419819,-6.17499e-08,-2.12653e-08,1.07876,0.000419632,-1.25546e-07,-8.59219e-09,1.07918,0.000419355,-1.51322e-07,-6.35752e-08,1.0796,0.000418861,-3.42048e-07,1.43684e-07,1.08002,0.000418608,8.90034e-08,-1.53532e-07,1.08043,0.000418326,-3.71593e-07,1.12817e-07,1.08085,0.000417921,-3.31414e-08,-5.93184e-08,1.08127,0.000417677,-2.11097e-07,5.24697e-09,1.08169,0.00041727,-1.95356e-07,3.83305e-08,1.0821,0.000416995,-8.03642e-08,-3.93597e-08,1.08252,0.000416716,-1.98443e-07,-1.0094e-10,1.08294,0.000416319,-1.98746e-07,3.97635e-08,1.08335,0.00041604,-7.94557e-08,-3.97437e-08,1.08377,0.000415762,-1.98687e-07,1.94215e-12,1.08419,0.000415365,-1.98681e-07,3.97359e-08,1.0846,0.000415087,-7.94732e-08,-3.97362e-08,1.08502,0.000414809,-1.98682e-07,-4.31063e-13,1.08543,0.000414411,-1.98683e-07,3.97379e-08,1.08584,0.000414133,-7.94694e-08,-3.97418e-08,1.08626,0.000413855,-1.98695e-07,2.00563e-11,1.08667,0.000413458,-1.98635e-07,3.96616e-08,1.08709,0.000413179,-7.965e-08,-3.9457e-08,1.0875,0.000412902,-1.98021e-07,-1.04281e-09,1.08791,0.000412502,-2.01149e-07,4.36282e-08,1.08832,0.000412231,-7.02648e-08,-5.42608e-08,1.08874,0.000411928,-2.33047e-07,5.42057e-08,1.08915,0.000411624,-7.04301e-08,-4.33527e-08,1.08956,0.000411353,-2.00488e-07,-4.07378e-12,1.08997,0.000410952,-2.005e-07,4.3369e-08,1.09038,0.000410681,-7.03934e-08,-5.42627e-08,1.09079,0.000410378,-2.33182e-07,5.44726e-08,1.0912,0.000410075,-6.97637e-08,-4.44186e-08,1.09161,0.000409802,-2.03019e-07,3.99235e-09,1.09202,0.000409408,-1.91042e-07,2.84491e-08,1.09243,0.000409111,-1.05695e-07,1.42043e-09,1.09284,0.000408904,-1.01434e-07,-3.41308e-08,1.09325,0.000408599,-2.03826e-07,1.58937e-08,1.09366,0.000408239,-1.56145e-07,-2.94438e-08,1.09406,0.000407838,-2.44476e-07,1.01881e-07,1.09447,0.000407655,6.11676e-08,-1.39663e-07,1.09488,0.000407358,-3.57822e-07,9.91432e-08,1.09529,0.00040694,-6.03921e-08,-1.84912e-08,1.09569,0.000406764,-1.15866e-07,-2.51785e-08,1.0961,0.000406457,-1.91401e-07,-4.03115e-12,1.09651,0.000406074,-1.91413e-07,2.51947e-08,1.09691,0.000405767,-1.15829e-07,1.84346e-08,1.09732,0.00040559,-6.05254e-08,-9.89332e-08,1.09772,0.000405172,-3.57325e-07,1.3888e-07,1.09813,0.000404874,5.93136e-08,-9.8957e-08,1.09853,0.000404696,-2.37557e-07,1.853e-08,1.09894,0.000404277,-1.81968e-07,2.48372e-08,1.09934,0.000403987,-1.07456e-07,1.33047e-09,1.09975,0.000403776,-1.03465e-07,-3.01591e-08,1.10015,0.000403479,-1.93942e-07,9.66054e-11,1.10055,0.000403091,-1.93652e-07,2.97727e-08,1.10096,0.000402793,-1.04334e-07,2.19273e-11,1.10136,0.000402585,-1.04268e-07,-2.98604e-08,1.10176,0.000402287,-1.93849e-07,2.10325e-10,1.10216,0.0004019,-1.93218e-07,2.90191e-08,1.10256,0.0004016,-1.06161e-07,2.92264e-09,1.10297,0.000401397,-9.73931e-08,-4.07096e-08,1.10337,0.00040108,-2.19522e-07,4.07067e-08,1.10377,0.000400763,-9.7402e-08,-2.90783e-09,1.10417,0.000400559,-1.06126e-07,-2.90754e-08,1.10457,0.00040026,-1.93352e-07,9.00021e-14,1.10497,0.000399873,-1.93351e-07,2.9075e-08,1.10537,0.000399574,-1.06126e-07,2.90902e-09,1.10577,0.00039937,-9.73992e-08,-4.07111e-08,1.10617,0.000399053,-2.19533e-07,4.07262e-08,1.10657,0.000398736,-9.73541e-08,-2.98424e-09,1.10697,0.000398533,-1.06307e-07,-2.87892e-08,1.10736,0.000398234,-1.92674e-07,-1.06824e-09,1.10776,0.000397845,-1.95879e-07,3.30622e-08,1.10816,0.000397552,-9.66926e-08,-1.19712e-08,1.10856,0.000397323,-1.32606e-07,1.48225e-08,1.10895,0.000397102,-8.81387e-08,-4.73187e-08,1.10935,0.000396784,-2.30095e-07,5.52429e-08,1.10975,0.00039649,-6.4366e-08,-5.44437e-08,1.11014,0.000396198,-2.27697e-07,4.33226e-08,1.11054,0.000395872,-9.77293e-08,3.62656e-10,1.11094,0.000395678,-9.66414e-08,-4.47732e-08,1.11133,0.00039535,-2.30961e-07,5.95208e-08,1.11173,0.000395067,-5.23985e-08,-7.41008e-08,1.11212,0.00039474,-2.74701e-07,1.17673e-07,1.11252,0.000394543,7.83181e-08,-1.58172e-07,1.11291,0.000394225,-3.96199e-07,1.57389e-07,1.1133,0.000393905,7.59679e-08,-1.13756e-07,1.1137,0.000393716,-2.653e-07,5.92165e-08,1.11409,0.000393363,-8.76507e-08,-3.90074e-09,1.11449,0.000393176,-9.93529e-08,-4.36136e-08,1.11488,0.000392846,-2.30194e-07,5.91457e-08,1.11527,0.000392563,-5.27564e-08,-7.376e-08,1.11566,0.000392237,-2.74037e-07,1.16685e-07,1.11606,0.000392039,7.60189e-08,-1.54562e-07,1.11645,0.000391727,-3.87667e-07,1.43935e-07,1.11684,0.000391384,4.4137e-08,-6.35487e-08,1.11723,0.000391281,-1.46509e-07,-8.94896e-09,1.11762,0.000390961,-1.73356e-07,-1.98647e-08,1.11801,0.000390555,-2.3295e-07,8.8408e-08,1.1184,0.000390354,3.22736e-08,-9.53486e-08,1.11879,0.000390133,-2.53772e-07,5.45677e-08,1.11918,0.000389789,-9.0069e-08,-3.71296e-09,1.11957,0.000389598,-1.01208e-07,-3.97159e-08,1.11996,0.000389276,-2.20355e-07,4.33671e-08,1.12035,0.000388966,-9.02542e-08,-1.45431e-08,1.12074,0.000388741,-1.33883e-07,1.48052e-08,1.12113,0.000388518,-8.94678e-08,-4.46778e-08,1.12152,0.000388205,-2.23501e-07,4.46966e-08,1.12191,0.000387892,-8.94114e-08,-1.48992e-08,1.12229,0.000387669,-1.34109e-07,1.49003e-08,1.12268,0.000387445,-8.94082e-08,-4.47019e-08,1.12307,0.000387132,-2.23514e-07,4.4698e-08,1.12345,0.000386819,-8.942e-08,-1.48806e-08,1.12384,0.000386596,-1.34062e-07,1.48245e-08,1.12423,0.000386372,-8.95885e-08,-4.44172e-08,1.12461,0.00038606,-2.2284e-07,4.36351e-08,1.125,0.000385745,-9.19348e-08,-1.09139e-08,1.12539,0.000385528,-1.24677e-07,2.05584e-11,1.12577,0.000385279,-1.24615e-07,1.08317e-08,1.12616,0.000385062,-9.21198e-08,-4.33473e-08,1.12654,0.000384748,-2.22162e-07,4.33481e-08,1.12693,0.000384434,-9.21174e-08,-1.08356e-08,1.12731,0.000384217,-1.24624e-07,-5.50907e-12,1.12769,0.000383968,-1.24641e-07,1.08577e-08,1.12808,0.000383751,-9.20679e-08,-4.34252e-08,1.12846,0.000383437,-2.22343e-07,4.36337e-08,1.12884,0.000383123,-9.14422e-08,-1.19005e-08,1.12923,0.000382904,-1.27144e-07,3.96813e-09,1.12961,0.000382662,-1.15239e-07,-3.97207e-09,1.12999,0.000382419,-1.27155e-07,1.19201e-08,1.13038,0.000382201,-9.1395e-08,-4.37085e-08,1.13076,0.000381887,-2.2252e-07,4.37046e-08,1.13114,0.000381573,-9.14068e-08,-1.19005e-08,1.13152,0.000381355,-1.27108e-07,3.89734e-09,1.1319,0.000381112,-1.15416e-07,-3.68887e-09,1.13228,0.00038087,-1.26483e-07,1.08582e-08,1.13266,0.00038065,-9.39083e-08,-3.97438e-08,1.13304,0.000380343,-2.1314e-07,2.89076e-08,1.13342,0.000380003,-1.26417e-07,4.33225e-08,1.1338,0.00037988,3.55072e-09,-8.29883e-08,1.13418,0.000379638,-2.45414e-07,5.0212e-08,1.13456,0.000379298,-9.47781e-08,1.34964e-09,1.13494,0.000379113,-9.07292e-08,-5.56105e-08,1.13532,0.000378764,-2.57561e-07,1.01883e-07,1.1357,0.000378555,4.80889e-08,-1.13504e-07,1.13608,0.000378311,-2.92423e-07,1.13713e-07,1.13646,0.000378067,4.87176e-08,-1.02931e-07,1.13683,0.000377856,-2.60076e-07,5.95923e-08,1.13721,0.000377514,-8.12988e-08,-1.62288e-08,1.13759,0.000377303,-1.29985e-07,5.32278e-09,1.13797,0.000377059,-1.14017e-07,-5.06237e-09,1.13834,0.000376816,-1.29204e-07,1.49267e-08,1.13872,0.000376602,-8.44237e-08,-5.46444e-08,1.1391,0.000376269,-2.48357e-07,8.44417e-08,1.13947,0.000376026,4.96815e-09,-4.47039e-08,1.13985,0.000375902,-1.29143e-07,-2.48355e-08,1.14023,0.000375569,-2.0365e-07,2.48368e-08,1.1406,0.000375236,-1.2914e-07,4.46977e-08,1.14098,0.000375112,4.95341e-09,-8.44184e-08,1.14135,0.000374869,-2.48302e-07,5.45572e-08,1.14173,0.000374536,-8.463e-08,-1.46013e-08,1.1421,0.000374323,-1.28434e-07,3.8478e-09,1.14247,0.000374077,-1.1689e-07,-7.89941e-10,1.14285,0.000373841,-1.1926e-07,-6.88042e-10,1.14322,0.0003736,-1.21324e-07,3.54213e-09,1.1436,0.000373368,-1.10698e-07,-1.34805e-08,1.14397,0.000373107,-1.51139e-07,5.03798e-08,1.14434,0.000372767,0.,0.};
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void RGB2LuvConvert_32F(const T& src, D& dst)
+ {
+ const float _d = 1.f / (0.950456f + 15 + 1.088754f * 3);
+ const float _un = 13 * (4 * 0.950456f * _d);
+ const float _vn = 13 * (9 * _d);
+
+ float B = blueIdx == 0 ? src.x : src.z;
+ float G = src.y;
+ float R = blueIdx == 0 ? src.z : src.x;
+
+ if (srgb)
+ {
+ B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE);
+ G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE);
+ R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE);
+ }
+
+ float X = R * 0.412453f + G * 0.357580f + B * 0.180423f;
+ float Y = R * 0.212671f + G * 0.715160f + B * 0.072169f;
+ float Z = R * 0.019334f + G * 0.119193f + B * 0.950227f;
+
+ float L = splineInterpolate(Y * (LAB_CBRT_TAB_SIZE / 1.5f), c_LabCbrtTab, LAB_CBRT_TAB_SIZE);
+ L = 116.f * L - 16.f;
+
+ const float d = (4 * 13) / ::fmaxf(X + 15 * Y + 3 * Z, numeric_limits<float>::epsilon());
+ float u = L * (X * d - _un);
+ float v = L * ((9 * 0.25f) * Y * d - _vn);
+
+ dst.x = L;
+ dst.y = u;
+ dst.z = v;
+ }
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void RGB2LuvConvert_8U(const T& src, D& dst)
+ {
+ float3 srcf, dstf;
+
+ srcf.x = src.x * (1.f / 255.f);
+ srcf.y = src.y * (1.f / 255.f);
+ srcf.z = src.z * (1.f / 255.f);
+
+ RGB2LuvConvert_32F<srgb, blueIdx>(srcf, dstf);
+
+ dst.x = saturate_cast<uchar>(dstf.x * 2.55f);
+ dst.y = saturate_cast<uchar>(dstf.y * 0.72033898305084743f + 96.525423728813564f);
+ dst.z = saturate_cast<uchar>(dstf.z * 0.9732824427480916f + 136.259541984732824f);
+ }
+
+ template <typename T, int scn, int dcn, bool srgb, int blueIdx> struct RGB2Luv;
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct RGB2Luv<uchar, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<uchar, scn>::vec_type, typename TypeVec<uchar, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<uchar, dcn>::vec_type operator ()(const typename TypeVec<uchar, scn>::vec_type& src) const
+ {
+ typename TypeVec<uchar, dcn>::vec_type dst;
+
+ RGB2LuvConvert_8U<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2Luv() {}
+ __host__ __device__ __forceinline__ RGB2Luv(const RGB2Luv&) {}
+ };
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct RGB2Luv<float, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ RGB2LuvConvert_32F<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ RGB2Luv() {}
+ __host__ __device__ __forceinline__ RGB2Luv(const RGB2Luv&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_RGB2Luv_TRAITS(name, scn, dcn, srgb, blueIdx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::RGB2Luv<T, scn, dcn, srgb, blueIdx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ namespace color_detail
+ {
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void Luv2RGBConvert_32F(const T& src, D& dst)
+ {
+ const float _d = 1.f / (0.950456f + 15 + 1.088754f * 3);
+ const float _un = 4 * 0.950456f * _d;
+ const float _vn = 9 * _d;
+
+ float L = src.x;
+ float u = src.y;
+ float v = src.z;
+
+ float Y = (L + 16.f) * (1.f / 116.f);
+ Y = Y * Y * Y;
+
+ float d = (1.f / 13.f) / L;
+ u = u * d + _un;
+ v = v * d + _vn;
+
+ float iv = 1.f / v;
+ float X = 2.25f * u * Y * iv;
+ float Z = (12 - 3 * u - 20 * v) * Y * 0.25f * iv;
+
+ float B = 0.055648f * X - 0.204043f * Y + 1.057311f * Z;
+ float G = -0.969256f * X + 1.875991f * Y + 0.041556f * Z;
+ float R = 3.240479f * X - 1.537150f * Y - 0.498535f * Z;
+
+ if (srgb)
+ {
+ B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE);
+ G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE);
+ R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE);
+ }
+
+ dst.x = blueIdx == 0 ? B : R;
+ dst.y = G;
+ dst.z = blueIdx == 0 ? R : B;
+ setAlpha(dst, ColorChannel<float>::max());
+ }
+
+ template <bool srgb, int blueIdx, typename T, typename D>
+ __device__ __forceinline__ void Luv2RGBConvert_8U(const T& src, D& dst)
+ {
+ float3 srcf, dstf;
+
+ srcf.x = src.x * (100.f / 255.f);
+ srcf.y = src.y * 1.388235294117647f - 134.f;
+ srcf.z = src.z * 1.027450980392157f - 140.f;
+
+ Luv2RGBConvert_32F<srgb, blueIdx>(srcf, dstf);
+
+ dst.x = saturate_cast<uchar>(dstf.x * 255.f);
+ dst.y = saturate_cast<uchar>(dstf.y * 255.f);
+ dst.z = saturate_cast<uchar>(dstf.z * 255.f);
+ setAlpha(dst, ColorChannel<uchar>::max());
+ }
+
+ template <typename T, int scn, int dcn, bool srgb, int blueIdx> struct Luv2RGB;
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct Luv2RGB<uchar, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<uchar, scn>::vec_type, typename TypeVec<uchar, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<uchar, dcn>::vec_type operator ()(const typename TypeVec<uchar, scn>::vec_type& src) const
+ {
+ typename TypeVec<uchar, dcn>::vec_type dst;
+
+ Luv2RGBConvert_8U<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ Luv2RGB() {}
+ __host__ __device__ __forceinline__ Luv2RGB(const Luv2RGB&) {}
+ };
+
+ template <int scn, int dcn, bool srgb, int blueIdx>
+ struct Luv2RGB<float, scn, dcn, srgb, blueIdx>
+ : unary_function<typename TypeVec<float, scn>::vec_type, typename TypeVec<float, dcn>::vec_type>
+ {
+ __device__ __forceinline__ typename TypeVec<float, dcn>::vec_type operator ()(const typename TypeVec<float, scn>::vec_type& src) const
+ {
+ typename TypeVec<float, dcn>::vec_type dst;
+
+ Luv2RGBConvert_32F<srgb, blueIdx>(src, dst);
+
+ return dst;
+ }
+
+ __host__ __device__ __forceinline__ Luv2RGB() {}
+ __host__ __device__ __forceinline__ Luv2RGB(const Luv2RGB&) {}
+ };
+ }
+
+#define OPENCV_GPU_IMPLEMENT_Luv2RGB_TRAITS(name, scn, dcn, srgb, blueIdx) \
+ template <typename T> struct name ## _traits \
+ { \
+ typedef ::cv::gpu::device::color_detail::Luv2RGB<T, scn, dcn, srgb, blueIdx> functor_type; \
+ static __host__ __device__ __forceinline__ functor_type create_functor() \
+ { \
+ return functor_type(); \
+ } \
+ };
+
+ #undef CV_DESCALE
+
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_COLOR_DETAIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce.hpp
new file mode 100644
index 00000000..091a160e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce.hpp
@@ -0,0 +1,361 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_REDUCE_DETAIL_HPP__
+#define __OPENCV_GPU_REDUCE_DETAIL_HPP__
+
+#include <thrust/tuple.h>
+#include "../warp.hpp"
+#include "../warp_shuffle.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ namespace reduce_detail
+ {
+ template <typename T> struct GetType;
+ template <typename T> struct GetType<T*>
+ {
+ typedef T type;
+ };
+ template <typename T> struct GetType<volatile T*>
+ {
+ typedef T type;
+ };
+ template <typename T> struct GetType<T&>
+ {
+ typedef T type;
+ };
+
+ template <unsigned int I, unsigned int N>
+ struct For
+ {
+ template <class PointerTuple, class ValTuple>
+ static __device__ void loadToSmem(const PointerTuple& smem, const ValTuple& val, unsigned int tid)
+ {
+ thrust::get<I>(smem)[tid] = thrust::get<I>(val);
+
+ For<I + 1, N>::loadToSmem(smem, val, tid);
+ }
+ template <class PointerTuple, class ValTuple>
+ static __device__ void loadFromSmem(const PointerTuple& smem, const ValTuple& val, unsigned int tid)
+ {
+ thrust::get<I>(val) = thrust::get<I>(smem)[tid];
+
+ For<I + 1, N>::loadFromSmem(smem, val, tid);
+ }
+
+ template <class PointerTuple, class ValTuple, class OpTuple>
+ static __device__ void merge(const PointerTuple& smem, const ValTuple& val, unsigned int tid, unsigned int delta, const OpTuple& op)
+ {
+ typename GetType<typename thrust::tuple_element<I, PointerTuple>::type>::type reg = thrust::get<I>(smem)[tid + delta];
+ thrust::get<I>(smem)[tid] = thrust::get<I>(val) = thrust::get<I>(op)(thrust::get<I>(val), reg);
+
+ For<I + 1, N>::merge(smem, val, tid, delta, op);
+ }
+ template <class ValTuple, class OpTuple>
+ static __device__ void mergeShfl(const ValTuple& val, unsigned int delta, unsigned int width, const OpTuple& op)
+ {
+ typename GetType<typename thrust::tuple_element<I, ValTuple>::type>::type reg = shfl_down(thrust::get<I>(val), delta, width);
+ thrust::get<I>(val) = thrust::get<I>(op)(thrust::get<I>(val), reg);
+
+ For<I + 1, N>::mergeShfl(val, delta, width, op);
+ }
+ };
+ template <unsigned int N>
+ struct For<N, N>
+ {
+ template <class PointerTuple, class ValTuple>
+ static __device__ void loadToSmem(const PointerTuple&, const ValTuple&, unsigned int)
+ {
+ }
+ template <class PointerTuple, class ValTuple>
+ static __device__ void loadFromSmem(const PointerTuple&, const ValTuple&, unsigned int)
+ {
+ }
+
+ template <class PointerTuple, class ValTuple, class OpTuple>
+ static __device__ void merge(const PointerTuple&, const ValTuple&, unsigned int, unsigned int, const OpTuple&)
+ {
+ }
+ template <class ValTuple, class OpTuple>
+ static __device__ void mergeShfl(const ValTuple&, unsigned int, unsigned int, const OpTuple&)
+ {
+ }
+ };
+
+ template <typename T>
+ __device__ __forceinline__ void loadToSmem(volatile T* smem, T& val, unsigned int tid)
+ {
+ smem[tid] = val;
+ }
+ template <typename T>
+ __device__ __forceinline__ void loadFromSmem(volatile T* smem, T& val, unsigned int tid)
+ {
+ val = smem[tid];
+ }
+ template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9,
+ typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9>
+ __device__ __forceinline__ void loadToSmem(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem,
+ const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
+ unsigned int tid)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> >::value>::loadToSmem(smem, val, tid);
+ }
+ template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9,
+ typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9>
+ __device__ __forceinline__ void loadFromSmem(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem,
+ const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
+ unsigned int tid)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> >::value>::loadFromSmem(smem, val, tid);
+ }
+
+ template <typename T, class Op>
+ __device__ __forceinline__ void merge(volatile T* smem, T& val, unsigned int tid, unsigned int delta, const Op& op)
+ {
+ T reg = smem[tid + delta];
+ smem[tid] = val = op(val, reg);
+ }
+ template <typename T, class Op>
+ __device__ __forceinline__ void mergeShfl(T& val, unsigned int delta, unsigned int width, const Op& op)
+ {
+ T reg = shfl_down(val, delta, width);
+ val = op(val, reg);
+ }
+ template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9,
+ typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9,
+ class Op0, class Op1, class Op2, class Op3, class Op4, class Op5, class Op6, class Op7, class Op8, class Op9>
+ __device__ __forceinline__ void merge(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem,
+ const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
+ unsigned int tid,
+ unsigned int delta,
+ const thrust::tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> >::value>::merge(smem, val, tid, delta, op);
+ }
+ template <typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9,
+ class Op0, class Op1, class Op2, class Op3, class Op4, class Op5, class Op6, class Op7, class Op8, class Op9>
+ __device__ __forceinline__ void mergeShfl(const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
+ unsigned int delta,
+ unsigned int width,
+ const thrust::tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9> >::value>::mergeShfl(val, delta, width, op);
+ }
+
+ template <unsigned int N> struct Generic
+ {
+ template <typename Pointer, typename Reference, class Op>
+ static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op)
+ {
+ loadToSmem(smem, val, tid);
+ if (N >= 32)
+ __syncthreads();
+
+ if (N >= 2048)
+ {
+ if (tid < 1024)
+ merge(smem, val, tid, 1024, op);
+
+ __syncthreads();
+ }
+ if (N >= 1024)
+ {
+ if (tid < 512)
+ merge(smem, val, tid, 512, op);
+
+ __syncthreads();
+ }
+ if (N >= 512)
+ {
+ if (tid < 256)
+ merge(smem, val, tid, 256, op);
+
+ __syncthreads();
+ }
+ if (N >= 256)
+ {
+ if (tid < 128)
+ merge(smem, val, tid, 128, op);
+
+ __syncthreads();
+ }
+ if (N >= 128)
+ {
+ if (tid < 64)
+ merge(smem, val, tid, 64, op);
+
+ __syncthreads();
+ }
+ if (N >= 64)
+ {
+ if (tid < 32)
+ merge(smem, val, tid, 32, op);
+ }
+
+ if (tid < 16)
+ {
+ merge(smem, val, tid, 16, op);
+ merge(smem, val, tid, 8, op);
+ merge(smem, val, tid, 4, op);
+ merge(smem, val, tid, 2, op);
+ merge(smem, val, tid, 1, op);
+ }
+ }
+ };
+
+ template <unsigned int I, typename Pointer, typename Reference, class Op>
+ struct Unroll
+ {
+ static __device__ void loopShfl(Reference val, Op op, unsigned int N)
+ {
+ mergeShfl(val, I, N, op);
+ Unroll<I / 2, Pointer, Reference, Op>::loopShfl(val, op, N);
+ }
+ static __device__ void loop(Pointer smem, Reference val, unsigned int tid, Op op)
+ {
+ merge(smem, val, tid, I, op);
+ Unroll<I / 2, Pointer, Reference, Op>::loop(smem, val, tid, op);
+ }
+ };
+ template <typename Pointer, typename Reference, class Op>
+ struct Unroll<0, Pointer, Reference, Op>
+ {
+ static __device__ void loopShfl(Reference, Op, unsigned int)
+ {
+ }
+ static __device__ void loop(Pointer, Reference, unsigned int, Op)
+ {
+ }
+ };
+
+ template <unsigned int N> struct WarpOptimized
+ {
+ template <typename Pointer, typename Reference, class Op>
+ static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op)
+ {
+ #if __CUDA_ARCH__ >= 300
+ (void) smem;
+ (void) tid;
+
+ Unroll<N / 2, Pointer, Reference, Op>::loopShfl(val, op, N);
+ #else
+ loadToSmem(smem, val, tid);
+
+ if (tid < N / 2)
+ Unroll<N / 2, Pointer, Reference, Op>::loop(smem, val, tid, op);
+ #endif
+ }
+ };
+
+ template <unsigned int N> struct GenericOptimized32
+ {
+ enum { M = N / 32 };
+
+ template <typename Pointer, typename Reference, class Op>
+ static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op)
+ {
+ const unsigned int laneId = Warp::laneId();
+
+ #if __CUDA_ARCH__ >= 300
+ Unroll<16, Pointer, Reference, Op>::loopShfl(val, op, warpSize);
+
+ if (laneId == 0)
+ loadToSmem(smem, val, tid / 32);
+ #else
+ loadToSmem(smem, val, tid);
+
+ if (laneId < 16)
+ Unroll<16, Pointer, Reference, Op>::loop(smem, val, tid, op);
+
+ __syncthreads();
+
+ if (laneId == 0)
+ loadToSmem(smem, val, tid / 32);
+ #endif
+
+ __syncthreads();
+
+ loadFromSmem(smem, val, tid);
+
+ if (tid < 32)
+ {
+ #if __CUDA_ARCH__ >= 300
+ Unroll<M / 2, Pointer, Reference, Op>::loopShfl(val, op, M);
+ #else
+ Unroll<M / 2, Pointer, Reference, Op>::loop(smem, val, tid, op);
+ #endif
+ }
+ }
+ };
+
+ template <bool val, class T1, class T2> struct StaticIf;
+ template <class T1, class T2> struct StaticIf<true, T1, T2>
+ {
+ typedef T1 type;
+ };
+ template <class T1, class T2> struct StaticIf<false, T1, T2>
+ {
+ typedef T2 type;
+ };
+
+ template <unsigned int N> struct IsPowerOf2
+ {
+ enum { value = ((N != 0) && !(N & (N - 1))) };
+ };
+
+ template <unsigned int N> struct Dispatcher
+ {
+ typedef typename StaticIf<
+ (N <= 32) && IsPowerOf2<N>::value,
+ WarpOptimized<N>,
+ typename StaticIf<
+ (N <= 1024) && IsPowerOf2<N>::value,
+ GenericOptimized32<N>,
+ Generic<N>
+ >::type
+ >::type reductor;
+ };
+ }
+}}}
+
+#endif // __OPENCV_GPU_REDUCE_DETAIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce_key_val.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce_key_val.hpp
new file mode 100644
index 00000000..a84e0c2f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/reduce_key_val.hpp
@@ -0,0 +1,498 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_PRED_VAL_REDUCE_DETAIL_HPP__
+#define __OPENCV_GPU_PRED_VAL_REDUCE_DETAIL_HPP__
+
+#include <thrust/tuple.h>
+#include "../warp.hpp"
+#include "../warp_shuffle.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ namespace reduce_key_val_detail
+ {
+ template <typename T> struct GetType;
+ template <typename T> struct GetType<T*>
+ {
+ typedef T type;
+ };
+ template <typename T> struct GetType<volatile T*>
+ {
+ typedef T type;
+ };
+ template <typename T> struct GetType<T&>
+ {
+ typedef T type;
+ };
+
+ template <unsigned int I, unsigned int N>
+ struct For
+ {
+ template <class PointerTuple, class ReferenceTuple>
+ static __device__ void loadToSmem(const PointerTuple& smem, const ReferenceTuple& data, unsigned int tid)
+ {
+ thrust::get<I>(smem)[tid] = thrust::get<I>(data);
+
+ For<I + 1, N>::loadToSmem(smem, data, tid);
+ }
+ template <class PointerTuple, class ReferenceTuple>
+ static __device__ void loadFromSmem(const PointerTuple& smem, const ReferenceTuple& data, unsigned int tid)
+ {
+ thrust::get<I>(data) = thrust::get<I>(smem)[tid];
+
+ For<I + 1, N>::loadFromSmem(smem, data, tid);
+ }
+
+ template <class ReferenceTuple>
+ static __device__ void copyShfl(const ReferenceTuple& val, unsigned int delta, int width)
+ {
+ thrust::get<I>(val) = shfl_down(thrust::get<I>(val), delta, width);
+
+ For<I + 1, N>::copyShfl(val, delta, width);
+ }
+ template <class PointerTuple, class ReferenceTuple>
+ static __device__ void copy(const PointerTuple& svals, const ReferenceTuple& val, unsigned int tid, unsigned int delta)
+ {
+ thrust::get<I>(svals)[tid] = thrust::get<I>(val) = thrust::get<I>(svals)[tid + delta];
+
+ For<I + 1, N>::copy(svals, val, tid, delta);
+ }
+
+ template <class KeyReferenceTuple, class ValReferenceTuple, class CmpTuple>
+ static __device__ void mergeShfl(const KeyReferenceTuple& key, const ValReferenceTuple& val, const CmpTuple& cmp, unsigned int delta, int width)
+ {
+ typename GetType<typename thrust::tuple_element<I, KeyReferenceTuple>::type>::type reg = shfl_down(thrust::get<I>(key), delta, width);
+
+ if (thrust::get<I>(cmp)(reg, thrust::get<I>(key)))
+ {
+ thrust::get<I>(key) = reg;
+ thrust::get<I>(val) = shfl_down(thrust::get<I>(val), delta, width);
+ }
+
+ For<I + 1, N>::mergeShfl(key, val, cmp, delta, width);
+ }
+ template <class KeyPointerTuple, class KeyReferenceTuple, class ValPointerTuple, class ValReferenceTuple, class CmpTuple>
+ static __device__ void merge(const KeyPointerTuple& skeys, const KeyReferenceTuple& key,
+ const ValPointerTuple& svals, const ValReferenceTuple& val,
+ const CmpTuple& cmp,
+ unsigned int tid, unsigned int delta)
+ {
+ typename GetType<typename thrust::tuple_element<I, KeyPointerTuple>::type>::type reg = thrust::get<I>(skeys)[tid + delta];
+
+ if (thrust::get<I>(cmp)(reg, thrust::get<I>(key)))
+ {
+ thrust::get<I>(skeys)[tid] = thrust::get<I>(key) = reg;
+ thrust::get<I>(svals)[tid] = thrust::get<I>(val) = thrust::get<I>(svals)[tid + delta];
+ }
+
+ For<I + 1, N>::merge(skeys, key, svals, val, cmp, tid, delta);
+ }
+ };
+ template <unsigned int N>
+ struct For<N, N>
+ {
+ template <class PointerTuple, class ReferenceTuple>
+ static __device__ void loadToSmem(const PointerTuple&, const ReferenceTuple&, unsigned int)
+ {
+ }
+ template <class PointerTuple, class ReferenceTuple>
+ static __device__ void loadFromSmem(const PointerTuple&, const ReferenceTuple&, unsigned int)
+ {
+ }
+
+ template <class ReferenceTuple>
+ static __device__ void copyShfl(const ReferenceTuple&, unsigned int, int)
+ {
+ }
+ template <class PointerTuple, class ReferenceTuple>
+ static __device__ void copy(const PointerTuple&, const ReferenceTuple&, unsigned int, unsigned int)
+ {
+ }
+
+ template <class KeyReferenceTuple, class ValReferenceTuple, class CmpTuple>
+ static __device__ void mergeShfl(const KeyReferenceTuple&, const ValReferenceTuple&, const CmpTuple&, unsigned int, int)
+ {
+ }
+ template <class KeyPointerTuple, class KeyReferenceTuple, class ValPointerTuple, class ValReferenceTuple, class CmpTuple>
+ static __device__ void merge(const KeyPointerTuple&, const KeyReferenceTuple&,
+ const ValPointerTuple&, const ValReferenceTuple&,
+ const CmpTuple&,
+ unsigned int, unsigned int)
+ {
+ }
+ };
+
+ //////////////////////////////////////////////////////
+ // loadToSmem
+
+ template <typename T>
+ __device__ __forceinline__ void loadToSmem(volatile T* smem, T& data, unsigned int tid)
+ {
+ smem[tid] = data;
+ }
+ template <typename T>
+ __device__ __forceinline__ void loadFromSmem(volatile T* smem, T& data, unsigned int tid)
+ {
+ data = smem[tid];
+ }
+ template <typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9>
+ __device__ __forceinline__ void loadToSmem(const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& smem,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& data,
+ unsigned int tid)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::loadToSmem(smem, data, tid);
+ }
+ template <typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9>
+ __device__ __forceinline__ void loadFromSmem(const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& smem,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& data,
+ unsigned int tid)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::loadFromSmem(smem, data, tid);
+ }
+
+ //////////////////////////////////////////////////////
+ // copyVals
+
+ template <typename V>
+ __device__ __forceinline__ void copyValsShfl(V& val, unsigned int delta, int width)
+ {
+ val = shfl_down(val, delta, width);
+ }
+ template <typename V>
+ __device__ __forceinline__ void copyVals(volatile V* svals, V& val, unsigned int tid, unsigned int delta)
+ {
+ svals[tid] = val = svals[tid + delta];
+ }
+ template <typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9>
+ __device__ __forceinline__ void copyValsShfl(const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ unsigned int delta,
+ int width)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9> >::value>::copyShfl(val, delta, width);
+ }
+ template <typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9>
+ __device__ __forceinline__ void copyVals(const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ unsigned int tid, unsigned int delta)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::copy(svals, val, tid, delta);
+ }
+
+ //////////////////////////////////////////////////////
+ // merge
+
+ template <typename K, typename V, class Cmp>
+ __device__ __forceinline__ void mergeShfl(K& key, V& val, const Cmp& cmp, unsigned int delta, int width)
+ {
+ K reg = shfl_down(key, delta, width);
+
+ if (cmp(reg, key))
+ {
+ key = reg;
+ copyValsShfl(val, delta, width);
+ }
+ }
+ template <typename K, typename V, class Cmp>
+ __device__ __forceinline__ void merge(volatile K* skeys, K& key, volatile V* svals, V& val, const Cmp& cmp, unsigned int tid, unsigned int delta)
+ {
+ K reg = skeys[tid + delta];
+
+ if (cmp(reg, key))
+ {
+ skeys[tid] = key = reg;
+ copyVals(svals, val, tid, delta);
+ }
+ }
+ template <typename K,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9,
+ class Cmp>
+ __device__ __forceinline__ void mergeShfl(K& key,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ const Cmp& cmp,
+ unsigned int delta, int width)
+ {
+ K reg = shfl_down(key, delta, width);
+
+ if (cmp(reg, key))
+ {
+ key = reg;
+ copyValsShfl(val, delta, width);
+ }
+ }
+ template <typename K,
+ typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9,
+ class Cmp>
+ __device__ __forceinline__ void merge(volatile K* skeys, K& key,
+ const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ const Cmp& cmp, unsigned int tid, unsigned int delta)
+ {
+ K reg = skeys[tid + delta];
+
+ if (cmp(reg, key))
+ {
+ skeys[tid] = key = reg;
+ copyVals(svals, val, tid, delta);
+ }
+ }
+ template <typename KR0, typename KR1, typename KR2, typename KR3, typename KR4, typename KR5, typename KR6, typename KR7, typename KR8, typename KR9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9,
+ class Cmp0, class Cmp1, class Cmp2, class Cmp3, class Cmp4, class Cmp5, class Cmp6, class Cmp7, class Cmp8, class Cmp9>
+ __device__ __forceinline__ void mergeShfl(const thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ const thrust::tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp,
+ unsigned int delta, int width)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9> >::value>::mergeShfl(key, val, cmp, delta, width);
+ }
+ template <typename KP0, typename KP1, typename KP2, typename KP3, typename KP4, typename KP5, typename KP6, typename KP7, typename KP8, typename KP9,
+ typename KR0, typename KR1, typename KR2, typename KR3, typename KR4, typename KR5, typename KR6, typename KR7, typename KR8, typename KR9,
+ typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9,
+ class Cmp0, class Cmp1, class Cmp2, class Cmp3, class Cmp4, class Cmp5, class Cmp6, class Cmp7, class Cmp8, class Cmp9>
+ __device__ __forceinline__ void merge(const thrust::tuple<KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9>& skeys,
+ const thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key,
+ const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ const thrust::tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp,
+ unsigned int tid, unsigned int delta)
+ {
+ For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::merge(skeys, key, svals, val, cmp, tid, delta);
+ }
+
+ //////////////////////////////////////////////////////
+ // Generic
+
+ template <unsigned int N> struct Generic
+ {
+ template <class KP, class KR, class VP, class VR, class Cmp>
+ static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp)
+ {
+ loadToSmem(skeys, key, tid);
+ loadValsToSmem(svals, val, tid);
+ if (N >= 32)
+ __syncthreads();
+
+ if (N >= 2048)
+ {
+ if (tid < 1024)
+ merge(skeys, key, svals, val, cmp, tid, 1024);
+
+ __syncthreads();
+ }
+ if (N >= 1024)
+ {
+ if (tid < 512)
+ merge(skeys, key, svals, val, cmp, tid, 512);
+
+ __syncthreads();
+ }
+ if (N >= 512)
+ {
+ if (tid < 256)
+ merge(skeys, key, svals, val, cmp, tid, 256);
+
+ __syncthreads();
+ }
+ if (N >= 256)
+ {
+ if (tid < 128)
+ merge(skeys, key, svals, val, cmp, tid, 128);
+
+ __syncthreads();
+ }
+ if (N >= 128)
+ {
+ if (tid < 64)
+ merge(skeys, key, svals, val, cmp, tid, 64);
+
+ __syncthreads();
+ }
+ if (N >= 64)
+ {
+ if (tid < 32)
+ merge(skeys, key, svals, val, cmp, tid, 32);
+ }
+
+ if (tid < 16)
+ {
+ merge(skeys, key, svals, val, cmp, tid, 16);
+ merge(skeys, key, svals, val, cmp, tid, 8);
+ merge(skeys, key, svals, val, cmp, tid, 4);
+ merge(skeys, key, svals, val, cmp, tid, 2);
+ merge(skeys, key, svals, val, cmp, tid, 1);
+ }
+ }
+ };
+
+ template <unsigned int I, class KP, class KR, class VP, class VR, class Cmp>
+ struct Unroll
+ {
+ static __device__ void loopShfl(KR key, VR val, Cmp cmp, unsigned int N)
+ {
+ mergeShfl(key, val, cmp, I, N);
+ Unroll<I / 2, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, N);
+ }
+ static __device__ void loop(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp)
+ {
+ merge(skeys, key, svals, val, cmp, tid, I);
+ Unroll<I / 2, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp);
+ }
+ };
+ template <class KP, class KR, class VP, class VR, class Cmp>
+ struct Unroll<0, KP, KR, VP, VR, Cmp>
+ {
+ static __device__ void loopShfl(KR, VR, Cmp, unsigned int)
+ {
+ }
+ static __device__ void loop(KP, KR, VP, VR, unsigned int, Cmp)
+ {
+ }
+ };
+
+ template <unsigned int N> struct WarpOptimized
+ {
+ template <class KP, class KR, class VP, class VR, class Cmp>
+ static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp)
+ {
+ #if 0 // __CUDA_ARCH__ >= 300
+ (void) skeys;
+ (void) svals;
+ (void) tid;
+
+ Unroll<N / 2, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, N);
+ #else
+ loadToSmem(skeys, key, tid);
+ loadToSmem(svals, val, tid);
+
+ if (tid < N / 2)
+ Unroll<N / 2, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp);
+ #endif
+ }
+ };
+
+ template <unsigned int N> struct GenericOptimized32
+ {
+ enum { M = N / 32 };
+
+ template <class KP, class KR, class VP, class VR, class Cmp>
+ static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp)
+ {
+ const unsigned int laneId = Warp::laneId();
+
+ #if 0 // __CUDA_ARCH__ >= 300
+ Unroll<16, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, warpSize);
+
+ if (laneId == 0)
+ {
+ loadToSmem(skeys, key, tid / 32);
+ loadToSmem(svals, val, tid / 32);
+ }
+ #else
+ loadToSmem(skeys, key, tid);
+ loadToSmem(svals, val, tid);
+
+ if (laneId < 16)
+ Unroll<16, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp);
+
+ __syncthreads();
+
+ if (laneId == 0)
+ {
+ loadToSmem(skeys, key, tid / 32);
+ loadToSmem(svals, val, tid / 32);
+ }
+ #endif
+
+ __syncthreads();
+
+ loadFromSmem(skeys, key, tid);
+
+ if (tid < 32)
+ {
+ #if 0 // __CUDA_ARCH__ >= 300
+ loadFromSmem(svals, val, tid);
+
+ Unroll<M / 2, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, M);
+ #else
+ Unroll<M / 2, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp);
+ #endif
+ }
+ }
+ };
+
+ template <bool val, class T1, class T2> struct StaticIf;
+ template <class T1, class T2> struct StaticIf<true, T1, T2>
+ {
+ typedef T1 type;
+ };
+ template <class T1, class T2> struct StaticIf<false, T1, T2>
+ {
+ typedef T2 type;
+ };
+
+ template <unsigned int N> struct IsPowerOf2
+ {
+ enum { value = ((N != 0) && !(N & (N - 1))) };
+ };
+
+ template <unsigned int N> struct Dispatcher
+ {
+ typedef typename StaticIf<
+ (N <= 32) && IsPowerOf2<N>::value,
+ WarpOptimized<N>,
+ typename StaticIf<
+ (N <= 1024) && IsPowerOf2<N>::value,
+ GenericOptimized32<N>,
+ Generic<N>
+ >::type
+ >::type reductor;
+ };
+ }
+}}}
+
+#endif // __OPENCV_GPU_PRED_VAL_REDUCE_DETAIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/transform_detail.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/transform_detail.hpp
new file mode 100644
index 00000000..10da5938
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/transform_detail.hpp
@@ -0,0 +1,395 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_TRANSFORM_DETAIL_HPP__
+#define __OPENCV_GPU_TRANSFORM_DETAIL_HPP__
+
+#include "../common.hpp"
+#include "../vec_traits.hpp"
+#include "../functional.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ namespace transform_detail
+ {
+ //! Read Write Traits
+
+ template <typename T, typename D, int shift> struct UnaryReadWriteTraits
+ {
+ typedef typename TypeVec<T, shift>::vec_type read_type;
+ typedef typename TypeVec<D, shift>::vec_type write_type;
+ };
+
+ template <typename T1, typename T2, typename D, int shift> struct BinaryReadWriteTraits
+ {
+ typedef typename TypeVec<T1, shift>::vec_type read_type1;
+ typedef typename TypeVec<T2, shift>::vec_type read_type2;
+ typedef typename TypeVec<D, shift>::vec_type write_type;
+ };
+
+ //! Transform kernels
+
+ template <int shift> struct OpUnroller;
+ template <> struct OpUnroller<1>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, UnOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src.x);
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, BinOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src1.x, src2.x);
+ }
+ };
+ template <> struct OpUnroller<2>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, UnOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src.x);
+ if (mask(y, x_shifted + 1))
+ dst.y = op(src.y);
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, BinOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src1.x, src2.x);
+ if (mask(y, x_shifted + 1))
+ dst.y = op(src1.y, src2.y);
+ }
+ };
+ template <> struct OpUnroller<3>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src.x);
+ if (mask(y, x_shifted + 1))
+ dst.y = op(src.y);
+ if (mask(y, x_shifted + 2))
+ dst.z = op(src.z);
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src1.x, src2.x);
+ if (mask(y, x_shifted + 1))
+ dst.y = op(src1.y, src2.y);
+ if (mask(y, x_shifted + 2))
+ dst.z = op(src1.z, src2.z);
+ }
+ };
+ template <> struct OpUnroller<4>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src.x);
+ if (mask(y, x_shifted + 1))
+ dst.y = op(src.y);
+ if (mask(y, x_shifted + 2))
+ dst.z = op(src.z);
+ if (mask(y, x_shifted + 3))
+ dst.w = op(src.w);
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.x = op(src1.x, src2.x);
+ if (mask(y, x_shifted + 1))
+ dst.y = op(src1.y, src2.y);
+ if (mask(y, x_shifted + 2))
+ dst.z = op(src1.z, src2.z);
+ if (mask(y, x_shifted + 3))
+ dst.w = op(src1.w, src2.w);
+ }
+ };
+ template <> struct OpUnroller<8>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.a0 = op(src.a0);
+ if (mask(y, x_shifted + 1))
+ dst.a1 = op(src.a1);
+ if (mask(y, x_shifted + 2))
+ dst.a2 = op(src.a2);
+ if (mask(y, x_shifted + 3))
+ dst.a3 = op(src.a3);
+ if (mask(y, x_shifted + 4))
+ dst.a4 = op(src.a4);
+ if (mask(y, x_shifted + 5))
+ dst.a5 = op(src.a5);
+ if (mask(y, x_shifted + 6))
+ dst.a6 = op(src.a6);
+ if (mask(y, x_shifted + 7))
+ dst.a7 = op(src.a7);
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y)
+ {
+ if (mask(y, x_shifted))
+ dst.a0 = op(src1.a0, src2.a0);
+ if (mask(y, x_shifted + 1))
+ dst.a1 = op(src1.a1, src2.a1);
+ if (mask(y, x_shifted + 2))
+ dst.a2 = op(src1.a2, src2.a2);
+ if (mask(y, x_shifted + 3))
+ dst.a3 = op(src1.a3, src2.a3);
+ if (mask(y, x_shifted + 4))
+ dst.a4 = op(src1.a4, src2.a4);
+ if (mask(y, x_shifted + 5))
+ dst.a5 = op(src1.a5, src2.a5);
+ if (mask(y, x_shifted + 6))
+ dst.a6 = op(src1.a6, src2.a6);
+ if (mask(y, x_shifted + 7))
+ dst.a7 = op(src1.a7, src2.a7);
+ }
+ };
+
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static __global__ void transformSmart(const PtrStepSz<T> src_, PtrStep<D> dst_, const Mask mask, const UnOp op)
+ {
+ typedef TransformFunctorTraits<UnOp> ft;
+ typedef typename UnaryReadWriteTraits<T, D, ft::smart_shift>::read_type read_type;
+ typedef typename UnaryReadWriteTraits<T, D, ft::smart_shift>::write_type write_type;
+
+ const int x = threadIdx.x + blockIdx.x * blockDim.x;
+ const int y = threadIdx.y + blockIdx.y * blockDim.y;
+ const int x_shifted = x * ft::smart_shift;
+
+ if (y < src_.rows)
+ {
+ const T* src = src_.ptr(y);
+ D* dst = dst_.ptr(y);
+
+ if (x_shifted + ft::smart_shift - 1 < src_.cols)
+ {
+ const read_type src_n_el = ((const read_type*)src)[x];
+ write_type dst_n_el = ((const write_type*)dst)[x];
+
+ OpUnroller<ft::smart_shift>::unroll(src_n_el, dst_n_el, mask, op, x_shifted, y);
+
+ ((write_type*)dst)[x] = dst_n_el;
+ }
+ else
+ {
+ for (int real_x = x_shifted; real_x < src_.cols; ++real_x)
+ {
+ if (mask(y, real_x))
+ dst[real_x] = op(src[real_x]);
+ }
+ }
+ }
+ }
+
+ template <typename T, typename D, typename UnOp, typename Mask>
+ __global__ static void transformSimple(const PtrStepSz<T> src, PtrStep<D> dst, const Mask mask, const UnOp op)
+ {
+ const int x = blockDim.x * blockIdx.x + threadIdx.x;
+ const int y = blockDim.y * blockIdx.y + threadIdx.y;
+
+ if (x < src.cols && y < src.rows && mask(y, x))
+ {
+ dst.ptr(y)[x] = op(src.ptr(y)[x]);
+ }
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __global__ void transformSmart(const PtrStepSz<T1> src1_, const PtrStep<T2> src2_, PtrStep<D> dst_,
+ const Mask mask, const BinOp op)
+ {
+ typedef TransformFunctorTraits<BinOp> ft;
+ typedef typename BinaryReadWriteTraits<T1, T2, D, ft::smart_shift>::read_type1 read_type1;
+ typedef typename BinaryReadWriteTraits<T1, T2, D, ft::smart_shift>::read_type2 read_type2;
+ typedef typename BinaryReadWriteTraits<T1, T2, D, ft::smart_shift>::write_type write_type;
+
+ const int x = threadIdx.x + blockIdx.x * blockDim.x;
+ const int y = threadIdx.y + blockIdx.y * blockDim.y;
+ const int x_shifted = x * ft::smart_shift;
+
+ if (y < src1_.rows)
+ {
+ const T1* src1 = src1_.ptr(y);
+ const T2* src2 = src2_.ptr(y);
+ D* dst = dst_.ptr(y);
+
+ if (x_shifted + ft::smart_shift - 1 < src1_.cols)
+ {
+ const read_type1 src1_n_el = ((const read_type1*)src1)[x];
+ const read_type2 src2_n_el = ((const read_type2*)src2)[x];
+ write_type dst_n_el = ((const write_type*)dst)[x];
+
+ OpUnroller<ft::smart_shift>::unroll(src1_n_el, src2_n_el, dst_n_el, mask, op, x_shifted, y);
+
+ ((write_type*)dst)[x] = dst_n_el;
+ }
+ else
+ {
+ for (int real_x = x_shifted; real_x < src1_.cols; ++real_x)
+ {
+ if (mask(y, real_x))
+ dst[real_x] = op(src1[real_x], src2[real_x]);
+ }
+ }
+ }
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static __global__ void transformSimple(const PtrStepSz<T1> src1, const PtrStep<T2> src2, PtrStep<D> dst,
+ const Mask mask, const BinOp op)
+ {
+ const int x = blockDim.x * blockIdx.x + threadIdx.x;
+ const int y = blockDim.y * blockIdx.y + threadIdx.y;
+
+ if (x < src1.cols && y < src1.rows && mask(y, x))
+ {
+ const T1 src1_data = src1.ptr(y)[x];
+ const T2 src2_data = src2.ptr(y)[x];
+ dst.ptr(y)[x] = op(src1_data, src2_data);
+ }
+ }
+
+ template <bool UseSmart> struct TransformDispatcher;
+ template<> struct TransformDispatcher<false>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static void call(PtrStepSz<T> src, PtrStepSz<D> dst, UnOp op, Mask mask, cudaStream_t stream)
+ {
+ typedef TransformFunctorTraits<UnOp> ft;
+
+ const dim3 threads(ft::simple_block_dim_x, ft::simple_block_dim_y, 1);
+ const dim3 grid(divUp(src.cols, threads.x), divUp(src.rows, threads.y), 1);
+
+ transformSimple<T, D><<<grid, threads, 0, stream>>>(src, dst, mask, op);
+ cudaSafeCall( cudaGetLastError() );
+
+ if (stream == 0)
+ cudaSafeCall( cudaDeviceSynchronize() );
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static void call(PtrStepSz<T1> src1, PtrStepSz<T2> src2, PtrStepSz<D> dst, BinOp op, Mask mask, cudaStream_t stream)
+ {
+ typedef TransformFunctorTraits<BinOp> ft;
+
+ const dim3 threads(ft::simple_block_dim_x, ft::simple_block_dim_y, 1);
+ const dim3 grid(divUp(src1.cols, threads.x), divUp(src1.rows, threads.y), 1);
+
+ transformSimple<T1, T2, D><<<grid, threads, 0, stream>>>(src1, src2, dst, mask, op);
+ cudaSafeCall( cudaGetLastError() );
+
+ if (stream == 0)
+ cudaSafeCall( cudaDeviceSynchronize() );
+ }
+ };
+ template<> struct TransformDispatcher<true>
+ {
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static void call(PtrStepSz<T> src, PtrStepSz<D> dst, UnOp op, Mask mask, cudaStream_t stream)
+ {
+ typedef TransformFunctorTraits<UnOp> ft;
+
+ StaticAssert<ft::smart_shift != 1>::check();
+
+ if (!isAligned(src.data, ft::smart_shift * sizeof(T)) || !isAligned(src.step, ft::smart_shift * sizeof(T)) ||
+ !isAligned(dst.data, ft::smart_shift * sizeof(D)) || !isAligned(dst.step, ft::smart_shift * sizeof(D)))
+ {
+ TransformDispatcher<false>::call(src, dst, op, mask, stream);
+ return;
+ }
+
+ const dim3 threads(ft::smart_block_dim_x, ft::smart_block_dim_y, 1);
+ const dim3 grid(divUp(src.cols, threads.x * ft::smart_shift), divUp(src.rows, threads.y), 1);
+
+ transformSmart<T, D><<<grid, threads, 0, stream>>>(src, dst, mask, op);
+ cudaSafeCall( cudaGetLastError() );
+
+ if (stream == 0)
+ cudaSafeCall( cudaDeviceSynchronize() );
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static void call(PtrStepSz<T1> src1, PtrStepSz<T2> src2, PtrStepSz<D> dst, BinOp op, Mask mask, cudaStream_t stream)
+ {
+ typedef TransformFunctorTraits<BinOp> ft;
+
+ StaticAssert<ft::smart_shift != 1>::check();
+
+ if (!isAligned(src1.data, ft::smart_shift * sizeof(T1)) || !isAligned(src1.step, ft::smart_shift * sizeof(T1)) ||
+ !isAligned(src2.data, ft::smart_shift * sizeof(T2)) || !isAligned(src2.step, ft::smart_shift * sizeof(T2)) ||
+ !isAligned(dst.data, ft::smart_shift * sizeof(D)) || !isAligned(dst.step, ft::smart_shift * sizeof(D)))
+ {
+ TransformDispatcher<false>::call(src1, src2, dst, op, mask, stream);
+ return;
+ }
+
+ const dim3 threads(ft::smart_block_dim_x, ft::smart_block_dim_y, 1);
+ const dim3 grid(divUp(src1.cols, threads.x * ft::smart_shift), divUp(src1.rows, threads.y), 1);
+
+ transformSmart<T1, T2, D><<<grid, threads, 0, stream>>>(src1, src2, dst, mask, op);
+ cudaSafeCall( cudaGetLastError() );
+
+ if (stream == 0)
+ cudaSafeCall( cudaDeviceSynchronize() );
+ }
+ };
+ } // namespace transform_detail
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_TRANSFORM_DETAIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/type_traits_detail.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/type_traits_detail.hpp
new file mode 100644
index 00000000..97ff00d8
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/type_traits_detail.hpp
@@ -0,0 +1,187 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_TYPE_TRAITS_DETAIL_HPP__
+#define __OPENCV_GPU_TYPE_TRAITS_DETAIL_HPP__
+
+#include "../common.hpp"
+#include "../vec_traits.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ namespace type_traits_detail
+ {
+ template <bool, typename T1, typename T2> struct Select { typedef T1 type; };
+ template <typename T1, typename T2> struct Select<false, T1, T2> { typedef T2 type; };
+
+ template <typename T> struct IsSignedIntergral { enum {value = 0}; };
+ template <> struct IsSignedIntergral<schar> { enum {value = 1}; };
+ template <> struct IsSignedIntergral<char1> { enum {value = 1}; };
+ template <> struct IsSignedIntergral<short> { enum {value = 1}; };
+ template <> struct IsSignedIntergral<short1> { enum {value = 1}; };
+ template <> struct IsSignedIntergral<int> { enum {value = 1}; };
+ template <> struct IsSignedIntergral<int1> { enum {value = 1}; };
+
+ template <typename T> struct IsUnsignedIntegral { enum {value = 0}; };
+ template <> struct IsUnsignedIntegral<uchar> { enum {value = 1}; };
+ template <> struct IsUnsignedIntegral<uchar1> { enum {value = 1}; };
+ template <> struct IsUnsignedIntegral<ushort> { enum {value = 1}; };
+ template <> struct IsUnsignedIntegral<ushort1> { enum {value = 1}; };
+ template <> struct IsUnsignedIntegral<uint> { enum {value = 1}; };
+ template <> struct IsUnsignedIntegral<uint1> { enum {value = 1}; };
+
+ template <typename T> struct IsIntegral { enum {value = IsSignedIntergral<T>::value || IsUnsignedIntegral<T>::value}; };
+ template <> struct IsIntegral<char> { enum {value = 1}; };
+ template <> struct IsIntegral<bool> { enum {value = 1}; };
+
+ template <typename T> struct IsFloat { enum {value = 0}; };
+ template <> struct IsFloat<float> { enum {value = 1}; };
+ template <> struct IsFloat<double> { enum {value = 1}; };
+
+ template <typename T> struct IsVec { enum {value = 0}; };
+ template <> struct IsVec<uchar1> { enum {value = 1}; };
+ template <> struct IsVec<uchar2> { enum {value = 1}; };
+ template <> struct IsVec<uchar3> { enum {value = 1}; };
+ template <> struct IsVec<uchar4> { enum {value = 1}; };
+ template <> struct IsVec<uchar8> { enum {value = 1}; };
+ template <> struct IsVec<char1> { enum {value = 1}; };
+ template <> struct IsVec<char2> { enum {value = 1}; };
+ template <> struct IsVec<char3> { enum {value = 1}; };
+ template <> struct IsVec<char4> { enum {value = 1}; };
+ template <> struct IsVec<char8> { enum {value = 1}; };
+ template <> struct IsVec<ushort1> { enum {value = 1}; };
+ template <> struct IsVec<ushort2> { enum {value = 1}; };
+ template <> struct IsVec<ushort3> { enum {value = 1}; };
+ template <> struct IsVec<ushort4> { enum {value = 1}; };
+ template <> struct IsVec<ushort8> { enum {value = 1}; };
+ template <> struct IsVec<short1> { enum {value = 1}; };
+ template <> struct IsVec<short2> { enum {value = 1}; };
+ template <> struct IsVec<short3> { enum {value = 1}; };
+ template <> struct IsVec<short4> { enum {value = 1}; };
+ template <> struct IsVec<short8> { enum {value = 1}; };
+ template <> struct IsVec<uint1> { enum {value = 1}; };
+ template <> struct IsVec<uint2> { enum {value = 1}; };
+ template <> struct IsVec<uint3> { enum {value = 1}; };
+ template <> struct IsVec<uint4> { enum {value = 1}; };
+ template <> struct IsVec<uint8> { enum {value = 1}; };
+ template <> struct IsVec<int1> { enum {value = 1}; };
+ template <> struct IsVec<int2> { enum {value = 1}; };
+ template <> struct IsVec<int3> { enum {value = 1}; };
+ template <> struct IsVec<int4> { enum {value = 1}; };
+ template <> struct IsVec<int8> { enum {value = 1}; };
+ template <> struct IsVec<float1> { enum {value = 1}; };
+ template <> struct IsVec<float2> { enum {value = 1}; };
+ template <> struct IsVec<float3> { enum {value = 1}; };
+ template <> struct IsVec<float4> { enum {value = 1}; };
+ template <> struct IsVec<float8> { enum {value = 1}; };
+ template <> struct IsVec<double1> { enum {value = 1}; };
+ template <> struct IsVec<double2> { enum {value = 1}; };
+ template <> struct IsVec<double3> { enum {value = 1}; };
+ template <> struct IsVec<double4> { enum {value = 1}; };
+ template <> struct IsVec<double8> { enum {value = 1}; };
+
+ template <class U> struct AddParameterType { typedef const U& type; };
+ template <class U> struct AddParameterType<U&> { typedef U& type; };
+ template <> struct AddParameterType<void> { typedef void type; };
+
+ template <class U> struct ReferenceTraits
+ {
+ enum { value = false };
+ typedef U type;
+ };
+ template <class U> struct ReferenceTraits<U&>
+ {
+ enum { value = true };
+ typedef U type;
+ };
+
+ template <class U> struct PointerTraits
+ {
+ enum { value = false };
+ typedef void type;
+ };
+ template <class U> struct PointerTraits<U*>
+ {
+ enum { value = true };
+ typedef U type;
+ };
+ template <class U> struct PointerTraits<U*&>
+ {
+ enum { value = true };
+ typedef U type;
+ };
+
+ template <class U> struct UnConst
+ {
+ typedef U type;
+ enum { value = 0 };
+ };
+ template <class U> struct UnConst<const U>
+ {
+ typedef U type;
+ enum { value = 1 };
+ };
+ template <class U> struct UnConst<const U&>
+ {
+ typedef U& type;
+ enum { value = 1 };
+ };
+
+ template <class U> struct UnVolatile
+ {
+ typedef U type;
+ enum { value = 0 };
+ };
+ template <class U> struct UnVolatile<volatile U>
+ {
+ typedef U type;
+ enum { value = 1 };
+ };
+ template <class U> struct UnVolatile<volatile U&>
+ {
+ typedef U& type;
+ enum { value = 1 };
+ };
+ } // namespace type_traits_detail
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_TYPE_TRAITS_DETAIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/vec_distance_detail.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/vec_distance_detail.hpp
new file mode 100644
index 00000000..78ab5565
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/detail/vec_distance_detail.hpp
@@ -0,0 +1,117 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_VEC_DISTANCE_DETAIL_HPP__
+#define __OPENCV_GPU_VEC_DISTANCE_DETAIL_HPP__
+
+#include "../datamov_utils.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ namespace vec_distance_detail
+ {
+ template <int THREAD_DIM, int N> struct UnrollVecDiffCached
+ {
+ template <typename Dist, typename T1, typename T2>
+ static __device__ void calcCheck(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int ind)
+ {
+ if (ind < len)
+ {
+ T1 val1 = *vecCached++;
+
+ T2 val2;
+ ForceGlob<T2>::Load(vecGlob, ind, val2);
+
+ dist.reduceIter(val1, val2);
+
+ UnrollVecDiffCached<THREAD_DIM, N - 1>::calcCheck(vecCached, vecGlob, len, dist, ind + THREAD_DIM);
+ }
+ }
+
+ template <typename Dist, typename T1, typename T2>
+ static __device__ void calcWithoutCheck(const T1* vecCached, const T2* vecGlob, Dist& dist)
+ {
+ T1 val1 = *vecCached++;
+
+ T2 val2;
+ ForceGlob<T2>::Load(vecGlob, 0, val2);
+ vecGlob += THREAD_DIM;
+
+ dist.reduceIter(val1, val2);
+
+ UnrollVecDiffCached<THREAD_DIM, N - 1>::calcWithoutCheck(vecCached, vecGlob, dist);
+ }
+ };
+ template <int THREAD_DIM> struct UnrollVecDiffCached<THREAD_DIM, 0>
+ {
+ template <typename Dist, typename T1, typename T2>
+ static __device__ __forceinline__ void calcCheck(const T1*, const T2*, int, Dist&, int)
+ {
+ }
+
+ template <typename Dist, typename T1, typename T2>
+ static __device__ __forceinline__ void calcWithoutCheck(const T1*, const T2*, Dist&)
+ {
+ }
+ };
+
+ template <int THREAD_DIM, int MAX_LEN, bool LEN_EQ_MAX_LEN> struct VecDiffCachedCalculator;
+ template <int THREAD_DIM, int MAX_LEN> struct VecDiffCachedCalculator<THREAD_DIM, MAX_LEN, false>
+ {
+ template <typename Dist, typename T1, typename T2>
+ static __device__ __forceinline__ void calc(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int tid)
+ {
+ UnrollVecDiffCached<THREAD_DIM, MAX_LEN / THREAD_DIM>::calcCheck(vecCached, vecGlob, len, dist, tid);
+ }
+ };
+ template <int THREAD_DIM, int MAX_LEN> struct VecDiffCachedCalculator<THREAD_DIM, MAX_LEN, true>
+ {
+ template <typename Dist, typename T1, typename T2>
+ static __device__ __forceinline__ void calc(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int tid)
+ {
+ UnrollVecDiffCached<THREAD_DIM, MAX_LEN / THREAD_DIM>::calcWithoutCheck(vecCached, vecGlob + tid, dist);
+ }
+ };
+ } // namespace vec_distance_detail
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_VEC_DISTANCE_DETAIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/dynamic_smem.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/dynamic_smem.hpp
new file mode 100644
index 00000000..cf431d95
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/dynamic_smem.hpp
@@ -0,0 +1,80 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_DYNAMIC_SMEM_HPP__
+#define __OPENCV_GPU_DYNAMIC_SMEM_HPP__
+
+namespace cv { namespace gpu { namespace device
+{
+ template<class T> struct DynamicSharedMem
+ {
+ __device__ __forceinline__ operator T*()
+ {
+ extern __shared__ int __smem[];
+ return (T*)__smem;
+ }
+
+ __device__ __forceinline__ operator const T*() const
+ {
+ extern __shared__ int __smem[];
+ return (T*)__smem;
+ }
+ };
+
+ // specialize for double to avoid unaligned memory access compile errors
+ template<> struct DynamicSharedMem<double>
+ {
+ __device__ __forceinline__ operator double*()
+ {
+ extern __shared__ double __smem_d[];
+ return (double*)__smem_d;
+ }
+
+ __device__ __forceinline__ operator const double*() const
+ {
+ extern __shared__ double __smem_d[];
+ return (double*)__smem_d;
+ }
+ };
+}}}
+
+#endif // __OPENCV_GPU_DYNAMIC_SMEM_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/emulation.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/emulation.hpp
new file mode 100644
index 00000000..bf47bc5f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/emulation.hpp
@@ -0,0 +1,138 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef OPENCV_GPU_EMULATION_HPP_
+#define OPENCV_GPU_EMULATION_HPP_
+
+#include "warp_reduce.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ struct Emulation
+ {
+
+ static __device__ __forceinline__ int syncthreadsOr(int pred)
+ {
+#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 200)
+ // just campilation stab
+ return 0;
+#else
+ return __syncthreads_or(pred);
+#endif
+ }
+
+ template<int CTA_SIZE>
+ static __forceinline__ __device__ int Ballot(int predicate)
+ {
+#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ >= 200)
+ return __ballot(predicate);
+#else
+ __shared__ volatile int cta_buffer[CTA_SIZE];
+
+ int tid = threadIdx.x;
+ cta_buffer[tid] = predicate ? (1 << (tid & 31)) : 0;
+ return warp_reduce(cta_buffer);
+#endif
+ }
+
+ struct smem
+ {
+ enum { TAG_MASK = (1U << ( (sizeof(unsigned int) << 3) - 5U)) - 1U };
+
+ template<typename T>
+ static __device__ __forceinline__ T atomicInc(T* address, T val)
+ {
+#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120)
+ T count;
+ unsigned int tag = threadIdx.x << ( (sizeof(unsigned int) << 3) - 5U);
+ do
+ {
+ count = *address & TAG_MASK;
+ count = tag | (count + 1);
+ *address = count;
+ } while (*address != count);
+
+ return (count & TAG_MASK) - 1;
+#else
+ return ::atomicInc(address, val);
+#endif
+ }
+
+ template<typename T>
+ static __device__ __forceinline__ T atomicAdd(T* address, T val)
+ {
+#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120)
+ T count;
+ unsigned int tag = threadIdx.x << ( (sizeof(unsigned int) << 3) - 5U);
+ do
+ {
+ count = *address & TAG_MASK;
+ count = tag | (count + val);
+ *address = count;
+ } while (*address != count);
+
+ return (count & TAG_MASK) - val;
+#else
+ return ::atomicAdd(address, val);
+#endif
+ }
+
+ template<typename T>
+ static __device__ __forceinline__ T atomicMin(T* address, T val)
+ {
+#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120)
+ T count = ::min(*address, val);
+ do
+ {
+ *address = count;
+ } while (*address > count);
+
+ return count;
+#else
+ return ::atomicMin(address, val);
+#endif
+ }
+ };
+ };
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif /* OPENCV_GPU_EMULATION_HPP_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/filters.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/filters.hpp
new file mode 100644
index 00000000..d193969a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/filters.hpp
@@ -0,0 +1,278 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_FILTERS_HPP__
+#define __OPENCV_GPU_FILTERS_HPP__
+
+#include "saturate_cast.hpp"
+#include "vec_traits.hpp"
+#include "vec_math.hpp"
+#include "type_traits.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template <typename Ptr2D> struct PointFilter
+ {
+ typedef typename Ptr2D::elem_type elem_type;
+ typedef float index_type;
+
+ explicit __host__ __device__ __forceinline__ PointFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f)
+ : src(src_)
+ {
+ (void)fx;
+ (void)fy;
+ }
+
+ __device__ __forceinline__ elem_type operator ()(float y, float x) const
+ {
+ return src(__float2int_rz(y), __float2int_rz(x));
+ }
+
+ const Ptr2D src;
+ };
+
+ template <typename Ptr2D> struct LinearFilter
+ {
+ typedef typename Ptr2D::elem_type elem_type;
+ typedef float index_type;
+
+ explicit __host__ __device__ __forceinline__ LinearFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f)
+ : src(src_)
+ {
+ (void)fx;
+ (void)fy;
+ }
+ __device__ __forceinline__ elem_type operator ()(float y, float x) const
+ {
+ typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type;
+
+ work_type out = VecTraits<work_type>::all(0);
+
+ const int x1 = __float2int_rd(x);
+ const int y1 = __float2int_rd(y);
+ const int x2 = x1 + 1;
+ const int y2 = y1 + 1;
+
+ elem_type src_reg = src(y1, x1);
+ out = out + src_reg * ((x2 - x) * (y2 - y));
+
+ src_reg = src(y1, x2);
+ out = out + src_reg * ((x - x1) * (y2 - y));
+
+ src_reg = src(y2, x1);
+ out = out + src_reg * ((x2 - x) * (y - y1));
+
+ src_reg = src(y2, x2);
+ out = out + src_reg * ((x - x1) * (y - y1));
+
+ return saturate_cast<elem_type>(out);
+ }
+
+ const Ptr2D src;
+ };
+
+ template <typename Ptr2D> struct CubicFilter
+ {
+ typedef typename Ptr2D::elem_type elem_type;
+ typedef float index_type;
+ typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type;
+
+ explicit __host__ __device__ __forceinline__ CubicFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f)
+ : src(src_)
+ {
+ (void)fx;
+ (void)fy;
+ }
+
+ static __device__ __forceinline__ float bicubicCoeff(float x_)
+ {
+ float x = fabsf(x_);
+ if (x <= 1.0f)
+ {
+ return x * x * (1.5f * x - 2.5f) + 1.0f;
+ }
+ else if (x < 2.0f)
+ {
+ return x * (x * (-0.5f * x + 2.5f) - 4.0f) + 2.0f;
+ }
+ else
+ {
+ return 0.0f;
+ }
+ }
+
+ __device__ elem_type operator ()(float y, float x) const
+ {
+ const float xmin = ::ceilf(x - 2.0f);
+ const float xmax = ::floorf(x + 2.0f);
+
+ const float ymin = ::ceilf(y - 2.0f);
+ const float ymax = ::floorf(y + 2.0f);
+
+ work_type sum = VecTraits<work_type>::all(0);
+ float wsum = 0.0f;
+
+ for (float cy = ymin; cy <= ymax; cy += 1.0f)
+ {
+ for (float cx = xmin; cx <= xmax; cx += 1.0f)
+ {
+ const float w = bicubicCoeff(x - cx) * bicubicCoeff(y - cy);
+ sum = sum + w * src(__float2int_rd(cy), __float2int_rd(cx));
+ wsum += w;
+ }
+ }
+
+ work_type res = (!wsum)? VecTraits<work_type>::all(0) : sum / wsum;
+
+ return saturate_cast<elem_type>(res);
+ }
+
+ const Ptr2D src;
+ };
+ // for integer scaling
+ template <typename Ptr2D> struct IntegerAreaFilter
+ {
+ typedef typename Ptr2D::elem_type elem_type;
+ typedef float index_type;
+
+ explicit __host__ __device__ __forceinline__ IntegerAreaFilter(const Ptr2D& src_, float scale_x_, float scale_y_)
+ : src(src_), scale_x(scale_x_), scale_y(scale_y_), scale(1.f / (scale_x * scale_y)) {}
+
+ __device__ __forceinline__ elem_type operator ()(float y, float x) const
+ {
+ float fsx1 = x * scale_x;
+ float fsx2 = fsx1 + scale_x;
+
+ int sx1 = __float2int_ru(fsx1);
+ int sx2 = __float2int_rd(fsx2);
+
+ float fsy1 = y * scale_y;
+ float fsy2 = fsy1 + scale_y;
+
+ int sy1 = __float2int_ru(fsy1);
+ int sy2 = __float2int_rd(fsy2);
+
+ typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type;
+ work_type out = VecTraits<work_type>::all(0.f);
+
+ for(int dy = sy1; dy < sy2; ++dy)
+ for(int dx = sx1; dx < sx2; ++dx)
+ {
+ out = out + src(dy, dx) * scale;
+ }
+
+ return saturate_cast<elem_type>(out);
+ }
+
+ const Ptr2D src;
+ float scale_x, scale_y ,scale;
+ };
+
+ template <typename Ptr2D> struct AreaFilter
+ {
+ typedef typename Ptr2D::elem_type elem_type;
+ typedef float index_type;
+
+ explicit __host__ __device__ __forceinline__ AreaFilter(const Ptr2D& src_, float scale_x_, float scale_y_)
+ : src(src_), scale_x(scale_x_), scale_y(scale_y_){}
+
+ __device__ __forceinline__ elem_type operator ()(float y, float x) const
+ {
+ float fsx1 = x * scale_x;
+ float fsx2 = fsx1 + scale_x;
+
+ int sx1 = __float2int_ru(fsx1);
+ int sx2 = __float2int_rd(fsx2);
+
+ float fsy1 = y * scale_y;
+ float fsy2 = fsy1 + scale_y;
+
+ int sy1 = __float2int_ru(fsy1);
+ int sy2 = __float2int_rd(fsy2);
+
+ float scale = 1.f / (fminf(scale_x, src.width - fsx1) * fminf(scale_y, src.height - fsy1));
+
+ typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type;
+ work_type out = VecTraits<work_type>::all(0.f);
+
+ for (int dy = sy1; dy < sy2; ++dy)
+ {
+ for (int dx = sx1; dx < sx2; ++dx)
+ out = out + src(dy, dx) * scale;
+
+ if (sx1 > fsx1)
+ out = out + src(dy, (sx1 -1) ) * ((sx1 - fsx1) * scale);
+
+ if (sx2 < fsx2)
+ out = out + src(dy, sx2) * ((fsx2 -sx2) * scale);
+ }
+
+ if (sy1 > fsy1)
+ for (int dx = sx1; dx < sx2; ++dx)
+ out = out + src( (sy1 - 1) , dx) * ((sy1 -fsy1) * scale);
+
+ if (sy2 < fsy2)
+ for (int dx = sx1; dx < sx2; ++dx)
+ out = out + src(sy2, dx) * ((fsy2 -sy2) * scale);
+
+ if ((sy1 > fsy1) && (sx1 > fsx1))
+ out = out + src( (sy1 - 1) , (sx1 - 1)) * ((sy1 -fsy1) * (sx1 -fsx1) * scale);
+
+ if ((sy1 > fsy1) && (sx2 < fsx2))
+ out = out + src( (sy1 - 1) , sx2) * ((sy1 -fsy1) * (fsx2 -sx2) * scale);
+
+ if ((sy2 < fsy2) && (sx2 < fsx2))
+ out = out + src(sy2, sx2) * ((fsy2 -sy2) * (fsx2 -sx2) * scale);
+
+ if ((sy2 < fsy2) && (sx1 > fsx1))
+ out = out + src(sy2, (sx1 - 1)) * ((fsy2 -sy2) * (sx1 -fsx1) * scale);
+
+ return saturate_cast<elem_type>(out);
+ }
+
+ const Ptr2D src;
+ float scale_x, scale_y;
+ int width, haight;
+ };
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_FILTERS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/funcattrib.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/funcattrib.hpp
new file mode 100644
index 00000000..2ed79802
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/funcattrib.hpp
@@ -0,0 +1,71 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_DEVICE_FUNCATTRIB_HPP_
+#define __OPENCV_GPU_DEVICE_FUNCATTRIB_HPP_
+
+#include <cstdio>
+
+namespace cv { namespace gpu { namespace device
+{
+ template<class Func>
+ void printFuncAttrib(Func& func)
+ {
+
+ cudaFuncAttributes attrs;
+ cudaFuncGetAttributes(&attrs, func);
+
+ printf("=== Function stats ===\n");
+ printf("Name: \n");
+ printf("sharedSizeBytes = %d\n", attrs.sharedSizeBytes);
+ printf("constSizeBytes = %d\n", attrs.constSizeBytes);
+ printf("localSizeBytes = %d\n", attrs.localSizeBytes);
+ printf("maxThreadsPerBlock = %d\n", attrs.maxThreadsPerBlock);
+ printf("numRegs = %d\n", attrs.numRegs);
+ printf("ptxVersion = %d\n", attrs.ptxVersion);
+ printf("binaryVersion = %d\n", attrs.binaryVersion);
+ printf("\n");
+ fflush(stdout);
+ }
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif /* __OPENCV_GPU_DEVICE_FUNCATTRIB_HPP_ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/functional.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/functional.hpp
new file mode 100644
index 00000000..db264735
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/functional.hpp
@@ -0,0 +1,789 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_FUNCTIONAL_HPP__
+#define __OPENCV_GPU_FUNCTIONAL_HPP__
+
+#include <functional>
+#include "saturate_cast.hpp"
+#include "vec_traits.hpp"
+#include "type_traits.hpp"
+#include "device_functions.h"
+
+namespace cv { namespace gpu { namespace device
+{
+ // Function Objects
+ template<typename Argument, typename Result> struct unary_function : public std::unary_function<Argument, Result> {};
+ template<typename Argument1, typename Argument2, typename Result> struct binary_function : public std::binary_function<Argument1, Argument2, Result> {};
+
+ // Arithmetic Operations
+ template <typename T> struct plus : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a + b;
+ }
+ __host__ __device__ __forceinline__ plus() {}
+ __host__ __device__ __forceinline__ plus(const plus&) {}
+ };
+
+ template <typename T> struct minus : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a - b;
+ }
+ __host__ __device__ __forceinline__ minus() {}
+ __host__ __device__ __forceinline__ minus(const minus&) {}
+ };
+
+ template <typename T> struct multiplies : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a * b;
+ }
+ __host__ __device__ __forceinline__ multiplies() {}
+ __host__ __device__ __forceinline__ multiplies(const multiplies&) {}
+ };
+
+ template <typename T> struct divides : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a / b;
+ }
+ __host__ __device__ __forceinline__ divides() {}
+ __host__ __device__ __forceinline__ divides(const divides&) {}
+ };
+
+ template <typename T> struct modulus : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a % b;
+ }
+ __host__ __device__ __forceinline__ modulus() {}
+ __host__ __device__ __forceinline__ modulus(const modulus&) {}
+ };
+
+ template <typename T> struct negate : unary_function<T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a) const
+ {
+ return -a;
+ }
+ __host__ __device__ __forceinline__ negate() {}
+ __host__ __device__ __forceinline__ negate(const negate&) {}
+ };
+
+ // Comparison Operations
+ template <typename T> struct equal_to : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a == b;
+ }
+ __host__ __device__ __forceinline__ equal_to() {}
+ __host__ __device__ __forceinline__ equal_to(const equal_to&) {}
+ };
+
+ template <typename T> struct not_equal_to : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a != b;
+ }
+ __host__ __device__ __forceinline__ not_equal_to() {}
+ __host__ __device__ __forceinline__ not_equal_to(const not_equal_to&) {}
+ };
+
+ template <typename T> struct greater : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a > b;
+ }
+ __host__ __device__ __forceinline__ greater() {}
+ __host__ __device__ __forceinline__ greater(const greater&) {}
+ };
+
+ template <typename T> struct less : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a < b;
+ }
+ __host__ __device__ __forceinline__ less() {}
+ __host__ __device__ __forceinline__ less(const less&) {}
+ };
+
+ template <typename T> struct greater_equal : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a >= b;
+ }
+ __host__ __device__ __forceinline__ greater_equal() {}
+ __host__ __device__ __forceinline__ greater_equal(const greater_equal&) {}
+ };
+
+ template <typename T> struct less_equal : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a <= b;
+ }
+ __host__ __device__ __forceinline__ less_equal() {}
+ __host__ __device__ __forceinline__ less_equal(const less_equal&) {}
+ };
+
+ // Logical Operations
+ template <typename T> struct logical_and : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a && b;
+ }
+ __host__ __device__ __forceinline__ logical_and() {}
+ __host__ __device__ __forceinline__ logical_and(const logical_and&) {}
+ };
+
+ template <typename T> struct logical_or : binary_function<T, T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a || b;
+ }
+ __host__ __device__ __forceinline__ logical_or() {}
+ __host__ __device__ __forceinline__ logical_or(const logical_or&) {}
+ };
+
+ template <typename T> struct logical_not : unary_function<T, bool>
+ {
+ __device__ __forceinline__ bool operator ()(typename TypeTraits<T>::ParameterType a) const
+ {
+ return !a;
+ }
+ __host__ __device__ __forceinline__ logical_not() {}
+ __host__ __device__ __forceinline__ logical_not(const logical_not&) {}
+ };
+
+ // Bitwise Operations
+ template <typename T> struct bit_and : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a & b;
+ }
+ __host__ __device__ __forceinline__ bit_and() {}
+ __host__ __device__ __forceinline__ bit_and(const bit_and&) {}
+ };
+
+ template <typename T> struct bit_or : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a | b;
+ }
+ __host__ __device__ __forceinline__ bit_or() {}
+ __host__ __device__ __forceinline__ bit_or(const bit_or&) {}
+ };
+
+ template <typename T> struct bit_xor : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType a,
+ typename TypeTraits<T>::ParameterType b) const
+ {
+ return a ^ b;
+ }
+ __host__ __device__ __forceinline__ bit_xor() {}
+ __host__ __device__ __forceinline__ bit_xor(const bit_xor&) {}
+ };
+
+ template <typename T> struct bit_not : unary_function<T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType v) const
+ {
+ return ~v;
+ }
+ __host__ __device__ __forceinline__ bit_not() {}
+ __host__ __device__ __forceinline__ bit_not(const bit_not&) {}
+ };
+
+ // Generalized Identity Operations
+ template <typename T> struct identity : unary_function<T, T>
+ {
+ __device__ __forceinline__ typename TypeTraits<T>::ParameterType operator()(typename TypeTraits<T>::ParameterType x) const
+ {
+ return x;
+ }
+ __host__ __device__ __forceinline__ identity() {}
+ __host__ __device__ __forceinline__ identity(const identity&) {}
+ };
+
+ template <typename T1, typename T2> struct project1st : binary_function<T1, T2, T1>
+ {
+ __device__ __forceinline__ typename TypeTraits<T1>::ParameterType operator()(typename TypeTraits<T1>::ParameterType lhs, typename TypeTraits<T2>::ParameterType rhs) const
+ {
+ return lhs;
+ }
+ __host__ __device__ __forceinline__ project1st() {}
+ __host__ __device__ __forceinline__ project1st(const project1st&) {}
+ };
+
+ template <typename T1, typename T2> struct project2nd : binary_function<T1, T2, T2>
+ {
+ __device__ __forceinline__ typename TypeTraits<T2>::ParameterType operator()(typename TypeTraits<T1>::ParameterType lhs, typename TypeTraits<T2>::ParameterType rhs) const
+ {
+ return rhs;
+ }
+ __host__ __device__ __forceinline__ project2nd() {}
+ __host__ __device__ __forceinline__ project2nd(const project2nd&) {}
+ };
+
+ // Min/Max Operations
+
+#define OPENCV_GPU_IMPLEMENT_MINMAX(name, type, op) \
+ template <> struct name<type> : binary_function<type, type, type> \
+ { \
+ __device__ __forceinline__ type operator()(type lhs, type rhs) const {return op(lhs, rhs);} \
+ __host__ __device__ __forceinline__ name() {}\
+ __host__ __device__ __forceinline__ name(const name&) {}\
+ };
+
+ template <typename T> struct maximum : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType lhs, typename TypeTraits<T>::ParameterType rhs) const
+ {
+ return max(lhs, rhs);
+ }
+ __host__ __device__ __forceinline__ maximum() {}
+ __host__ __device__ __forceinline__ maximum(const maximum&) {}
+ };
+
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, uchar, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, schar, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, char, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, ushort, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, short, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, int, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, uint, ::max)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, float, ::fmax)
+ OPENCV_GPU_IMPLEMENT_MINMAX(maximum, double, ::fmax)
+
+ template <typename T> struct minimum : binary_function<T, T, T>
+ {
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType lhs, typename TypeTraits<T>::ParameterType rhs) const
+ {
+ return min(lhs, rhs);
+ }
+ __host__ __device__ __forceinline__ minimum() {}
+ __host__ __device__ __forceinline__ minimum(const minimum&) {}
+ };
+
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, uchar, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, schar, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, char, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, ushort, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, short, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, int, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, uint, ::min)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, float, ::fmin)
+ OPENCV_GPU_IMPLEMENT_MINMAX(minimum, double, ::fmin)
+
+#undef OPENCV_GPU_IMPLEMENT_MINMAX
+
+ // Math functions
+
+ template <typename T> struct abs_func : unary_function<T, T>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType x) const
+ {
+ return abs(x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<unsigned char> : unary_function<unsigned char, unsigned char>
+ {
+ __device__ __forceinline__ unsigned char operator ()(unsigned char x) const
+ {
+ return x;
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<signed char> : unary_function<signed char, signed char>
+ {
+ __device__ __forceinline__ signed char operator ()(signed char x) const
+ {
+ return ::abs((int)x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<char> : unary_function<char, char>
+ {
+ __device__ __forceinline__ char operator ()(char x) const
+ {
+ return ::abs((int)x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<unsigned short> : unary_function<unsigned short, unsigned short>
+ {
+ __device__ __forceinline__ unsigned short operator ()(unsigned short x) const
+ {
+ return x;
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<short> : unary_function<short, short>
+ {
+ __device__ __forceinline__ short operator ()(short x) const
+ {
+ return ::abs((int)x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<unsigned int> : unary_function<unsigned int, unsigned int>
+ {
+ __device__ __forceinline__ unsigned int operator ()(unsigned int x) const
+ {
+ return x;
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<int> : unary_function<int, int>
+ {
+ __device__ __forceinline__ int operator ()(int x) const
+ {
+ return ::abs(x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<float> : unary_function<float, float>
+ {
+ __device__ __forceinline__ float operator ()(float x) const
+ {
+ return ::fabsf(x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+ template <> struct abs_func<double> : unary_function<double, double>
+ {
+ __device__ __forceinline__ double operator ()(double x) const
+ {
+ return ::fabs(x);
+ }
+
+ __host__ __device__ __forceinline__ abs_func() {}
+ __host__ __device__ __forceinline__ abs_func(const abs_func&) {}
+ };
+
+#define OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(name, func) \
+ template <typename T> struct name ## _func : unary_function<T, float> \
+ { \
+ __device__ __forceinline__ float operator ()(typename TypeTraits<T>::ParameterType v) const \
+ { \
+ return func ## f(v); \
+ } \
+ __host__ __device__ __forceinline__ name ## _func() {} \
+ __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \
+ }; \
+ template <> struct name ## _func<double> : unary_function<double, double> \
+ { \
+ __device__ __forceinline__ double operator ()(double v) const \
+ { \
+ return func(v); \
+ } \
+ __host__ __device__ __forceinline__ name ## _func() {} \
+ __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \
+ };
+
+#define OPENCV_GPU_IMPLEMENT_BIN_FUNCTOR(name, func) \
+ template <typename T> struct name ## _func : binary_function<T, T, float> \
+ { \
+ __device__ __forceinline__ float operator ()(typename TypeTraits<T>::ParameterType v1, typename TypeTraits<T>::ParameterType v2) const \
+ { \
+ return func ## f(v1, v2); \
+ } \
+ __host__ __device__ __forceinline__ name ## _func() {} \
+ __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \
+ }; \
+ template <> struct name ## _func<double> : binary_function<double, double, double> \
+ { \
+ __device__ __forceinline__ double operator ()(double v1, double v2) const \
+ { \
+ return func(v1, v2); \
+ } \
+ __host__ __device__ __forceinline__ name ## _func() {} \
+ __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \
+ };
+
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(sqrt, ::sqrt)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(exp, ::exp)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(exp2, ::exp2)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(exp10, ::exp10)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(log, ::log)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(log2, ::log2)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(log10, ::log10)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(sin, ::sin)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(cos, ::cos)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(tan, ::tan)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(asin, ::asin)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(acos, ::acos)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(atan, ::atan)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(sinh, ::sinh)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(cosh, ::cosh)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(tanh, ::tanh)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(asinh, ::asinh)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(acosh, ::acosh)
+ OPENCV_GPU_IMPLEMENT_UN_FUNCTOR(atanh, ::atanh)
+
+ OPENCV_GPU_IMPLEMENT_BIN_FUNCTOR(hypot, ::hypot)
+ OPENCV_GPU_IMPLEMENT_BIN_FUNCTOR(atan2, ::atan2)
+ OPENCV_GPU_IMPLEMENT_BIN_FUNCTOR(pow, ::pow)
+
+ #undef OPENCV_GPU_IMPLEMENT_UN_FUNCTOR
+ #undef OPENCV_GPU_IMPLEMENT_UN_FUNCTOR_NO_DOUBLE
+ #undef OPENCV_GPU_IMPLEMENT_BIN_FUNCTOR
+
+ template<typename T> struct hypot_sqr_func : binary_function<T, T, float>
+ {
+ __device__ __forceinline__ T operator ()(typename TypeTraits<T>::ParameterType src1, typename TypeTraits<T>::ParameterType src2) const
+ {
+ return src1 * src1 + src2 * src2;
+ }
+ __host__ __device__ __forceinline__ hypot_sqr_func() {}
+ __host__ __device__ __forceinline__ hypot_sqr_func(const hypot_sqr_func&) {}
+ };
+
+ // Saturate Cast Functor
+ template <typename T, typename D> struct saturate_cast_func : unary_function<T, D>
+ {
+ __device__ __forceinline__ D operator ()(typename TypeTraits<T>::ParameterType v) const
+ {
+ return saturate_cast<D>(v);
+ }
+ __host__ __device__ __forceinline__ saturate_cast_func() {}
+ __host__ __device__ __forceinline__ saturate_cast_func(const saturate_cast_func&) {}
+ };
+
+ // Threshold Functors
+ template <typename T> struct thresh_binary_func : unary_function<T, T>
+ {
+ __host__ __device__ __forceinline__ thresh_binary_func(T thresh_, T maxVal_) : thresh(thresh_), maxVal(maxVal_) {}
+
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType src) const
+ {
+ return (src > thresh) * maxVal;
+ }
+
+ __host__ __device__ __forceinline__ thresh_binary_func() {}
+ __host__ __device__ __forceinline__ thresh_binary_func(const thresh_binary_func& other)
+ : thresh(other.thresh), maxVal(other.maxVal) {}
+
+ const T thresh;
+ const T maxVal;
+ };
+
+ template <typename T> struct thresh_binary_inv_func : unary_function<T, T>
+ {
+ __host__ __device__ __forceinline__ thresh_binary_inv_func(T thresh_, T maxVal_) : thresh(thresh_), maxVal(maxVal_) {}
+
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType src) const
+ {
+ return (src <= thresh) * maxVal;
+ }
+
+ __host__ __device__ __forceinline__ thresh_binary_inv_func() {}
+ __host__ __device__ __forceinline__ thresh_binary_inv_func(const thresh_binary_inv_func& other)
+ : thresh(other.thresh), maxVal(other.maxVal) {}
+
+ const T thresh;
+ const T maxVal;
+ };
+
+ template <typename T> struct thresh_trunc_func : unary_function<T, T>
+ {
+ explicit __host__ __device__ __forceinline__ thresh_trunc_func(T thresh_, T maxVal_ = 0) : thresh(thresh_) {(void)maxVal_;}
+
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType src) const
+ {
+ return minimum<T>()(src, thresh);
+ }
+
+ __host__ __device__ __forceinline__ thresh_trunc_func() {}
+ __host__ __device__ __forceinline__ thresh_trunc_func(const thresh_trunc_func& other)
+ : thresh(other.thresh) {}
+
+ const T thresh;
+ };
+
+ template <typename T> struct thresh_to_zero_func : unary_function<T, T>
+ {
+ explicit __host__ __device__ __forceinline__ thresh_to_zero_func(T thresh_, T maxVal_ = 0) : thresh(thresh_) {(void)maxVal_;}
+
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType src) const
+ {
+ return (src > thresh) * src;
+ }
+
+ __host__ __device__ __forceinline__ thresh_to_zero_func() {}
+ __host__ __device__ __forceinline__ thresh_to_zero_func(const thresh_to_zero_func& other)
+ : thresh(other.thresh) {}
+
+ const T thresh;
+ };
+
+ template <typename T> struct thresh_to_zero_inv_func : unary_function<T, T>
+ {
+ explicit __host__ __device__ __forceinline__ thresh_to_zero_inv_func(T thresh_, T maxVal_ = 0) : thresh(thresh_) {(void)maxVal_;}
+
+ __device__ __forceinline__ T operator()(typename TypeTraits<T>::ParameterType src) const
+ {
+ return (src <= thresh) * src;
+ }
+
+ __host__ __device__ __forceinline__ thresh_to_zero_inv_func() {}
+ __host__ __device__ __forceinline__ thresh_to_zero_inv_func(const thresh_to_zero_inv_func& other)
+ : thresh(other.thresh) {}
+
+ const T thresh;
+ };
+
+ // Function Object Adaptors
+ template <typename Predicate> struct unary_negate : unary_function<typename Predicate::argument_type, bool>
+ {
+ explicit __host__ __device__ __forceinline__ unary_negate(const Predicate& p) : pred(p) {}
+
+ __device__ __forceinline__ bool operator()(typename TypeTraits<typename Predicate::argument_type>::ParameterType x) const
+ {
+ return !pred(x);
+ }
+
+ __host__ __device__ __forceinline__ unary_negate() {}
+ __host__ __device__ __forceinline__ unary_negate(const unary_negate& other) : pred(other.pred) {}
+
+ const Predicate pred;
+ };
+
+ template <typename Predicate> __host__ __device__ __forceinline__ unary_negate<Predicate> not1(const Predicate& pred)
+ {
+ return unary_negate<Predicate>(pred);
+ }
+
+ template <typename Predicate> struct binary_negate : binary_function<typename Predicate::first_argument_type, typename Predicate::second_argument_type, bool>
+ {
+ explicit __host__ __device__ __forceinline__ binary_negate(const Predicate& p) : pred(p) {}
+
+ __device__ __forceinline__ bool operator()(typename TypeTraits<typename Predicate::first_argument_type>::ParameterType x,
+ typename TypeTraits<typename Predicate::second_argument_type>::ParameterType y) const
+ {
+ return !pred(x,y);
+ }
+
+ __host__ __device__ __forceinline__ binary_negate() {}
+ __host__ __device__ __forceinline__ binary_negate(const binary_negate& other) : pred(other.pred) {}
+
+ const Predicate pred;
+ };
+
+ template <typename BinaryPredicate> __host__ __device__ __forceinline__ binary_negate<BinaryPredicate> not2(const BinaryPredicate& pred)
+ {
+ return binary_negate<BinaryPredicate>(pred);
+ }
+
+ template <typename Op> struct binder1st : unary_function<typename Op::second_argument_type, typename Op::result_type>
+ {
+ __host__ __device__ __forceinline__ binder1st(const Op& op_, const typename Op::first_argument_type& arg1_) : op(op_), arg1(arg1_) {}
+
+ __device__ __forceinline__ typename Op::result_type operator ()(typename TypeTraits<typename Op::second_argument_type>::ParameterType a) const
+ {
+ return op(arg1, a);
+ }
+
+ __host__ __device__ __forceinline__ binder1st() {}
+ __host__ __device__ __forceinline__ binder1st(const binder1st& other) : op(other.op), arg1(other.arg1) {}
+
+ const Op op;
+ const typename Op::first_argument_type arg1;
+ };
+
+ template <typename Op, typename T> __host__ __device__ __forceinline__ binder1st<Op> bind1st(const Op& op, const T& x)
+ {
+ return binder1st<Op>(op, typename Op::first_argument_type(x));
+ }
+
+ template <typename Op> struct binder2nd : unary_function<typename Op::first_argument_type, typename Op::result_type>
+ {
+ __host__ __device__ __forceinline__ binder2nd(const Op& op_, const typename Op::second_argument_type& arg2_) : op(op_), arg2(arg2_) {}
+
+ __forceinline__ __device__ typename Op::result_type operator ()(typename TypeTraits<typename Op::first_argument_type>::ParameterType a) const
+ {
+ return op(a, arg2);
+ }
+
+ __host__ __device__ __forceinline__ binder2nd() {}
+ __host__ __device__ __forceinline__ binder2nd(const binder2nd& other) : op(other.op), arg2(other.arg2) {}
+
+ const Op op;
+ const typename Op::second_argument_type arg2;
+ };
+
+ template <typename Op, typename T> __host__ __device__ __forceinline__ binder2nd<Op> bind2nd(const Op& op, const T& x)
+ {
+ return binder2nd<Op>(op, typename Op::second_argument_type(x));
+ }
+
+ // Functor Traits
+ template <typename F> struct IsUnaryFunction
+ {
+ typedef char Yes;
+ struct No {Yes a[2];};
+
+ template <typename T, typename D> static Yes check(unary_function<T, D>);
+ static No check(...);
+
+ static F makeF();
+
+ enum { value = (sizeof(check(makeF())) == sizeof(Yes)) };
+ };
+
+ template <typename F> struct IsBinaryFunction
+ {
+ typedef char Yes;
+ struct No {Yes a[2];};
+
+ template <typename T1, typename T2, typename D> static Yes check(binary_function<T1, T2, D>);
+ static No check(...);
+
+ static F makeF();
+
+ enum { value = (sizeof(check(makeF())) == sizeof(Yes)) };
+ };
+
+ namespace functional_detail
+ {
+ template <size_t src_elem_size, size_t dst_elem_size> struct UnOpShift { enum { shift = 1 }; };
+ template <size_t src_elem_size> struct UnOpShift<src_elem_size, 1> { enum { shift = 4 }; };
+ template <size_t src_elem_size> struct UnOpShift<src_elem_size, 2> { enum { shift = 2 }; };
+
+ template <typename T, typename D> struct DefaultUnaryShift
+ {
+ enum { shift = UnOpShift<sizeof(T), sizeof(D)>::shift };
+ };
+
+ template <size_t src_elem_size1, size_t src_elem_size2, size_t dst_elem_size> struct BinOpShift { enum { shift = 1 }; };
+ template <size_t src_elem_size1, size_t src_elem_size2> struct BinOpShift<src_elem_size1, src_elem_size2, 1> { enum { shift = 4 }; };
+ template <size_t src_elem_size1, size_t src_elem_size2> struct BinOpShift<src_elem_size1, src_elem_size2, 2> { enum { shift = 2 }; };
+
+ template <typename T1, typename T2, typename D> struct DefaultBinaryShift
+ {
+ enum { shift = BinOpShift<sizeof(T1), sizeof(T2), sizeof(D)>::shift };
+ };
+
+ template <typename Func, bool unary = IsUnaryFunction<Func>::value> struct ShiftDispatcher;
+ template <typename Func> struct ShiftDispatcher<Func, true>
+ {
+ enum { shift = DefaultUnaryShift<typename Func::argument_type, typename Func::result_type>::shift };
+ };
+ template <typename Func> struct ShiftDispatcher<Func, false>
+ {
+ enum { shift = DefaultBinaryShift<typename Func::first_argument_type, typename Func::second_argument_type, typename Func::result_type>::shift };
+ };
+ }
+
+ template <typename Func> struct DefaultTransformShift
+ {
+ enum { shift = functional_detail::ShiftDispatcher<Func>::shift };
+ };
+
+ template <typename Func> struct DefaultTransformFunctorTraits
+ {
+ enum { simple_block_dim_x = 16 };
+ enum { simple_block_dim_y = 16 };
+
+ enum { smart_block_dim_x = 16 };
+ enum { smart_block_dim_y = 16 };
+ enum { smart_shift = DefaultTransformShift<Func>::shift };
+ };
+
+ template <typename Func> struct TransformFunctorTraits : DefaultTransformFunctorTraits<Func> {};
+
+#define OPENCV_GPU_TRANSFORM_FUNCTOR_TRAITS(type) \
+ template <> struct TransformFunctorTraits< type > : DefaultTransformFunctorTraits< type >
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_FUNCTIONAL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/limits.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/limits.hpp
new file mode 100644
index 00000000..59597800
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/limits.hpp
@@ -0,0 +1,122 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_LIMITS_GPU_HPP__
+#define __OPENCV_GPU_LIMITS_GPU_HPP__
+
+#include <limits.h>
+#include <float.h>
+#include "common.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+
+template <class T> struct numeric_limits;
+
+template <> struct numeric_limits<bool>
+{
+ __device__ __forceinline__ static bool min() { return false; }
+ __device__ __forceinline__ static bool max() { return true; }
+ static const bool is_signed = false;
+};
+
+template <> struct numeric_limits<signed char>
+{
+ __device__ __forceinline__ static signed char min() { return SCHAR_MIN; }
+ __device__ __forceinline__ static signed char max() { return SCHAR_MAX; }
+ static const bool is_signed = true;
+};
+
+template <> struct numeric_limits<unsigned char>
+{
+ __device__ __forceinline__ static unsigned char min() { return 0; }
+ __device__ __forceinline__ static unsigned char max() { return UCHAR_MAX; }
+ static const bool is_signed = false;
+};
+
+template <> struct numeric_limits<short>
+{
+ __device__ __forceinline__ static short min() { return SHRT_MIN; }
+ __device__ __forceinline__ static short max() { return SHRT_MAX; }
+ static const bool is_signed = true;
+};
+
+template <> struct numeric_limits<unsigned short>
+{
+ __device__ __forceinline__ static unsigned short min() { return 0; }
+ __device__ __forceinline__ static unsigned short max() { return USHRT_MAX; }
+ static const bool is_signed = false;
+};
+
+template <> struct numeric_limits<int>
+{
+ __device__ __forceinline__ static int min() { return INT_MIN; }
+ __device__ __forceinline__ static int max() { return INT_MAX; }
+ static const bool is_signed = true;
+};
+
+template <> struct numeric_limits<unsigned int>
+{
+ __device__ __forceinline__ static unsigned int min() { return 0; }
+ __device__ __forceinline__ static unsigned int max() { return UINT_MAX; }
+ static const bool is_signed = false;
+};
+
+template <> struct numeric_limits<float>
+{
+ __device__ __forceinline__ static float min() { return FLT_MIN; }
+ __device__ __forceinline__ static float max() { return FLT_MAX; }
+ __device__ __forceinline__ static float epsilon() { return FLT_EPSILON; }
+ static const bool is_signed = true;
+};
+
+template <> struct numeric_limits<double>
+{
+ __device__ __forceinline__ static double min() { return DBL_MIN; }
+ __device__ __forceinline__ static double max() { return DBL_MAX; }
+ __device__ __forceinline__ static double epsilon() { return DBL_EPSILON; }
+ static const bool is_signed = true;
+};
+
+}}} // namespace cv { namespace gpu { namespace device {
+
+#endif // __OPENCV_GPU_LIMITS_GPU_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/reduce.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/reduce.hpp
new file mode 100644
index 00000000..2161b064
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/reduce.hpp
@@ -0,0 +1,197 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_REDUCE_HPP__
+#define __OPENCV_GPU_REDUCE_HPP__
+
+#include <thrust/tuple.h>
+#include "detail/reduce.hpp"
+#include "detail/reduce_key_val.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template <int N, typename T, class Op>
+ __device__ __forceinline__ void reduce(volatile T* smem, T& val, unsigned int tid, const Op& op)
+ {
+ reduce_detail::Dispatcher<N>::reductor::template reduce<volatile T*, T&, const Op&>(smem, val, tid, op);
+ }
+ template <int N,
+ typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9,
+ typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9,
+ class Op0, class Op1, class Op2, class Op3, class Op4, class Op5, class Op6, class Op7, class Op8, class Op9>
+ __device__ __forceinline__ void reduce(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem,
+ const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val,
+ unsigned int tid,
+ const thrust::tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op)
+ {
+ reduce_detail::Dispatcher<N>::reductor::template reduce<
+ const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>&,
+ const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>&,
+ const thrust::tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>&>(smem, val, tid, op);
+ }
+
+ template <unsigned int N, typename K, typename V, class Cmp>
+ __device__ __forceinline__ void reduceKeyVal(volatile K* skeys, K& key, volatile V* svals, V& val, unsigned int tid, const Cmp& cmp)
+ {
+ reduce_key_val_detail::Dispatcher<N>::reductor::template reduce<volatile K*, K&, volatile V*, V&, const Cmp&>(skeys, key, svals, val, tid, cmp);
+ }
+ template <unsigned int N,
+ typename K,
+ typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9,
+ class Cmp>
+ __device__ __forceinline__ void reduceKeyVal(volatile K* skeys, K& key,
+ const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ unsigned int tid, const Cmp& cmp)
+ {
+ reduce_key_val_detail::Dispatcher<N>::reductor::template reduce<volatile K*, K&,
+ const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>&,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>&,
+ const Cmp&>(skeys, key, svals, val, tid, cmp);
+ }
+ template <unsigned int N,
+ typename KP0, typename KP1, typename KP2, typename KP3, typename KP4, typename KP5, typename KP6, typename KP7, typename KP8, typename KP9,
+ typename KR0, typename KR1, typename KR2, typename KR3, typename KR4, typename KR5, typename KR6, typename KR7, typename KR8, typename KR9,
+ typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9,
+ typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9,
+ class Cmp0, class Cmp1, class Cmp2, class Cmp3, class Cmp4, class Cmp5, class Cmp6, class Cmp7, class Cmp8, class Cmp9>
+ __device__ __forceinline__ void reduceKeyVal(const thrust::tuple<KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9>& skeys,
+ const thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key,
+ const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val,
+ unsigned int tid,
+ const thrust::tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp)
+ {
+ reduce_key_val_detail::Dispatcher<N>::reductor::template reduce<
+ const thrust::tuple<KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9>&,
+ const thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>&,
+ const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>&,
+ const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>&,
+ const thrust::tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>&
+ >(skeys, key, svals, val, tid, cmp);
+ }
+
+ // smem_tuple
+
+ template <typename T0>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*>
+ smem_tuple(T0* t0)
+ {
+ return thrust::make_tuple((volatile T0*) t0);
+ }
+
+ template <typename T0, typename T1>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*>
+ smem_tuple(T0* t0, T1* t1)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1);
+ }
+
+ template <typename T0, typename T1, typename T2>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*>
+ smem_tuple(T0* t0, T1* t1, T2* t2)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*, volatile T7*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6, T7* t7)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6, (volatile T7*) t7);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*, volatile T7*, volatile T8*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6, T7* t7, T8* t8)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6, (volatile T7*) t7, (volatile T8*) t8);
+ }
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
+ __device__ __forceinline__
+ thrust::tuple<volatile T0*, volatile T1*, volatile T2*, volatile T3*, volatile T4*, volatile T5*, volatile T6*, volatile T7*, volatile T8*, volatile T9*>
+ smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6, T7* t7, T8* t8, T9* t9)
+ {
+ return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6, (volatile T7*) t7, (volatile T8*) t8, (volatile T9*) t9);
+ }
+}}}
+
+#endif // __OPENCV_GPU_UTILITY_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/saturate_cast.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/saturate_cast.hpp
new file mode 100644
index 00000000..7a2799fa
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/saturate_cast.hpp
@@ -0,0 +1,284 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_SATURATE_CAST_HPP__
+#define __OPENCV_GPU_SATURATE_CAST_HPP__
+
+#include "common.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(uchar v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(schar v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(ushort v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(short v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(uint v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(int v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(float v) { return _Tp(v); }
+ template<typename _Tp> __device__ __forceinline__ _Tp saturate_cast(double v) { return _Tp(v); }
+
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(schar v)
+ {
+ uint res = 0;
+ int vi = v;
+ asm("cvt.sat.u8.s8 %0, %1;" : "=r"(res) : "r"(vi));
+ return res;
+ }
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(short v)
+ {
+ uint res = 0;
+ asm("cvt.sat.u8.s16 %0, %1;" : "=r"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(ushort v)
+ {
+ uint res = 0;
+ asm("cvt.sat.u8.u16 %0, %1;" : "=r"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(int v)
+ {
+ uint res = 0;
+ asm("cvt.sat.u8.s32 %0, %1;" : "=r"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(uint v)
+ {
+ uint res = 0;
+ asm("cvt.sat.u8.u32 %0, %1;" : "=r"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(float v)
+ {
+ uint res = 0;
+ asm("cvt.rni.sat.u8.f32 %0, %1;" : "=r"(res) : "f"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uchar saturate_cast<uchar>(double v)
+ {
+ #if __CUDA_ARCH__ >= 130
+ uint res = 0;
+ asm("cvt.rni.sat.u8.f64 %0, %1;" : "=r"(res) : "d"(v));
+ return res;
+ #else
+ return saturate_cast<uchar>((float)v);
+ #endif
+ }
+
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(uchar v)
+ {
+ uint res = 0;
+ uint vi = v;
+ asm("cvt.sat.s8.u8 %0, %1;" : "=r"(res) : "r"(vi));
+ return res;
+ }
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(short v)
+ {
+ uint res = 0;
+ asm("cvt.sat.s8.s16 %0, %1;" : "=r"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(ushort v)
+ {
+ uint res = 0;
+ asm("cvt.sat.s8.u16 %0, %1;" : "=r"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(int v)
+ {
+ uint res = 0;
+ asm("cvt.sat.s8.s32 %0, %1;" : "=r"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(uint v)
+ {
+ uint res = 0;
+ asm("cvt.sat.s8.u32 %0, %1;" : "=r"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(float v)
+ {
+ uint res = 0;
+ asm("cvt.rni.sat.s8.f32 %0, %1;" : "=r"(res) : "f"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ schar saturate_cast<schar>(double v)
+ {
+ #if __CUDA_ARCH__ >= 130
+ uint res = 0;
+ asm("cvt.rni.sat.s8.f64 %0, %1;" : "=r"(res) : "d"(v));
+ return res;
+ #else
+ return saturate_cast<schar>((float)v);
+ #endif
+ }
+
+ template<> __device__ __forceinline__ ushort saturate_cast<ushort>(schar v)
+ {
+ ushort res = 0;
+ int vi = v;
+ asm("cvt.sat.u16.s8 %0, %1;" : "=h"(res) : "r"(vi));
+ return res;
+ }
+ template<> __device__ __forceinline__ ushort saturate_cast<ushort>(short v)
+ {
+ ushort res = 0;
+ asm("cvt.sat.u16.s16 %0, %1;" : "=h"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ ushort saturate_cast<ushort>(int v)
+ {
+ ushort res = 0;
+ asm("cvt.sat.u16.s32 %0, %1;" : "=h"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ ushort saturate_cast<ushort>(uint v)
+ {
+ ushort res = 0;
+ asm("cvt.sat.u16.u32 %0, %1;" : "=h"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ ushort saturate_cast<ushort>(float v)
+ {
+ ushort res = 0;
+ asm("cvt.rni.sat.u16.f32 %0, %1;" : "=h"(res) : "f"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ ushort saturate_cast<ushort>(double v)
+ {
+ #if __CUDA_ARCH__ >= 130
+ ushort res = 0;
+ asm("cvt.rni.sat.u16.f64 %0, %1;" : "=h"(res) : "d"(v));
+ return res;
+ #else
+ return saturate_cast<ushort>((float)v);
+ #endif
+ }
+
+ template<> __device__ __forceinline__ short saturate_cast<short>(ushort v)
+ {
+ short res = 0;
+ asm("cvt.sat.s16.u16 %0, %1;" : "=h"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ short saturate_cast<short>(int v)
+ {
+ short res = 0;
+ asm("cvt.sat.s16.s32 %0, %1;" : "=h"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ short saturate_cast<short>(uint v)
+ {
+ short res = 0;
+ asm("cvt.sat.s16.u32 %0, %1;" : "=h"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ short saturate_cast<short>(float v)
+ {
+ short res = 0;
+ asm("cvt.rni.sat.s16.f32 %0, %1;" : "=h"(res) : "f"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ short saturate_cast<short>(double v)
+ {
+ #if __CUDA_ARCH__ >= 130
+ short res = 0;
+ asm("cvt.rni.sat.s16.f64 %0, %1;" : "=h"(res) : "d"(v));
+ return res;
+ #else
+ return saturate_cast<short>((float)v);
+ #endif
+ }
+
+ template<> __device__ __forceinline__ int saturate_cast<int>(uint v)
+ {
+ int res = 0;
+ asm("cvt.sat.s32.u32 %0, %1;" : "=r"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ int saturate_cast<int>(float v)
+ {
+ return __float2int_rn(v);
+ }
+ template<> __device__ __forceinline__ int saturate_cast<int>(double v)
+ {
+ #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130
+ return __double2int_rn(v);
+ #else
+ return saturate_cast<int>((float)v);
+ #endif
+ }
+
+ template<> __device__ __forceinline__ uint saturate_cast<uint>(schar v)
+ {
+ uint res = 0;
+ int vi = v;
+ asm("cvt.sat.u32.s8 %0, %1;" : "=r"(res) : "r"(vi));
+ return res;
+ }
+ template<> __device__ __forceinline__ uint saturate_cast<uint>(short v)
+ {
+ uint res = 0;
+ asm("cvt.sat.u32.s16 %0, %1;" : "=r"(res) : "h"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uint saturate_cast<uint>(int v)
+ {
+ uint res = 0;
+ asm("cvt.sat.u32.s32 %0, %1;" : "=r"(res) : "r"(v));
+ return res;
+ }
+ template<> __device__ __forceinline__ uint saturate_cast<uint>(float v)
+ {
+ return __float2uint_rn(v);
+ }
+ template<> __device__ __forceinline__ uint saturate_cast<uint>(double v)
+ {
+ #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130
+ return __double2uint_rn(v);
+ #else
+ return saturate_cast<uint>((float)v);
+ #endif
+ }
+}}}
+
+#endif /* __OPENCV_GPU_SATURATE_CAST_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/scan.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/scan.hpp
new file mode 100644
index 00000000..3d8da16f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/scan.hpp
@@ -0,0 +1,250 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_SCAN_HPP__
+#define __OPENCV_GPU_SCAN_HPP__
+
+#include "opencv2/gpu/device/common.hpp"
+#include "opencv2/gpu/device/utility.hpp"
+#include "opencv2/gpu/device/warp.hpp"
+#include "opencv2/gpu/device/warp_shuffle.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ enum ScanKind { EXCLUSIVE = 0, INCLUSIVE = 1 };
+
+ template <ScanKind Kind, typename T, typename F> struct WarpScan
+ {
+ __device__ __forceinline__ WarpScan() {}
+ __device__ __forceinline__ WarpScan(const WarpScan& other) { (void)other; }
+
+ __device__ __forceinline__ T operator()( volatile T *ptr , const unsigned int idx)
+ {
+ const unsigned int lane = idx & 31;
+ F op;
+
+ if ( lane >= 1) ptr [idx ] = op(ptr [idx - 1], ptr [idx]);
+ if ( lane >= 2) ptr [idx ] = op(ptr [idx - 2], ptr [idx]);
+ if ( lane >= 4) ptr [idx ] = op(ptr [idx - 4], ptr [idx]);
+ if ( lane >= 8) ptr [idx ] = op(ptr [idx - 8], ptr [idx]);
+ if ( lane >= 16) ptr [idx ] = op(ptr [idx - 16], ptr [idx]);
+
+ if( Kind == INCLUSIVE )
+ return ptr [idx];
+ else
+ return (lane > 0) ? ptr [idx - 1] : 0;
+ }
+
+ __device__ __forceinline__ unsigned int index(const unsigned int tid)
+ {
+ return tid;
+ }
+
+ __device__ __forceinline__ void init(volatile T *ptr){}
+
+ static const int warp_offset = 0;
+
+ typedef WarpScan<INCLUSIVE, T, F> merge;
+ };
+
+ template <ScanKind Kind , typename T, typename F> struct WarpScanNoComp
+ {
+ __device__ __forceinline__ WarpScanNoComp() {}
+ __device__ __forceinline__ WarpScanNoComp(const WarpScanNoComp& other) { (void)other; }
+
+ __device__ __forceinline__ T operator()( volatile T *ptr , const unsigned int idx)
+ {
+ const unsigned int lane = threadIdx.x & 31;
+ F op;
+
+ ptr [idx ] = op(ptr [idx - 1], ptr [idx]);
+ ptr [idx ] = op(ptr [idx - 2], ptr [idx]);
+ ptr [idx ] = op(ptr [idx - 4], ptr [idx]);
+ ptr [idx ] = op(ptr [idx - 8], ptr [idx]);
+ ptr [idx ] = op(ptr [idx - 16], ptr [idx]);
+
+ if( Kind == INCLUSIVE )
+ return ptr [idx];
+ else
+ return (lane > 0) ? ptr [idx - 1] : 0;
+ }
+
+ __device__ __forceinline__ unsigned int index(const unsigned int tid)
+ {
+ return (tid >> warp_log) * warp_smem_stride + 16 + (tid & warp_mask);
+ }
+
+ __device__ __forceinline__ void init(volatile T *ptr)
+ {
+ ptr[threadIdx.x] = 0;
+ }
+
+ static const int warp_smem_stride = 32 + 16 + 1;
+ static const int warp_offset = 16;
+ static const int warp_log = 5;
+ static const int warp_mask = 31;
+
+ typedef WarpScanNoComp<INCLUSIVE, T, F> merge;
+ };
+
+ template <ScanKind Kind , typename T, typename Sc, typename F> struct BlockScan
+ {
+ __device__ __forceinline__ BlockScan() {}
+ __device__ __forceinline__ BlockScan(const BlockScan& other) { (void)other; }
+
+ __device__ __forceinline__ T operator()(volatile T *ptr)
+ {
+ const unsigned int tid = threadIdx.x;
+ const unsigned int lane = tid & warp_mask;
+ const unsigned int warp = tid >> warp_log;
+
+ Sc scan;
+ typename Sc::merge merge_scan;
+ const unsigned int idx = scan.index(tid);
+
+ T val = scan(ptr, idx);
+ __syncthreads ();
+
+ if( warp == 0)
+ scan.init(ptr);
+ __syncthreads ();
+
+ if( lane == 31 )
+ ptr [scan.warp_offset + warp ] = (Kind == INCLUSIVE) ? val : ptr [idx];
+ __syncthreads ();
+
+ if( warp == 0 )
+ merge_scan(ptr, idx);
+ __syncthreads();
+
+ if ( warp > 0)
+ val = ptr [scan.warp_offset + warp - 1] + val;
+ __syncthreads ();
+
+ ptr[idx] = val;
+ __syncthreads ();
+
+ return val ;
+ }
+
+ static const int warp_log = 5;
+ static const int warp_mask = 31;
+ };
+
+ template <typename T>
+ __device__ T warpScanInclusive(T idata, volatile T* s_Data, unsigned int tid)
+ {
+ #if __CUDA_ARCH__ >= 300
+ const unsigned int laneId = cv::gpu::device::Warp::laneId();
+
+ // scan on shuffl functions
+ #pragma unroll
+ for (int i = 1; i <= (OPENCV_GPU_WARP_SIZE / 2); i *= 2)
+ {
+ const T n = cv::gpu::device::shfl_up(idata, i);
+ if (laneId >= i)
+ idata += n;
+ }
+
+ return idata;
+ #else
+ unsigned int pos = 2 * tid - (tid & (OPENCV_GPU_WARP_SIZE - 1));
+ s_Data[pos] = 0;
+ pos += OPENCV_GPU_WARP_SIZE;
+ s_Data[pos] = idata;
+
+ s_Data[pos] += s_Data[pos - 1];
+ s_Data[pos] += s_Data[pos - 2];
+ s_Data[pos] += s_Data[pos - 4];
+ s_Data[pos] += s_Data[pos - 8];
+ s_Data[pos] += s_Data[pos - 16];
+
+ return s_Data[pos];
+ #endif
+ }
+
+ template <typename T>
+ __device__ __forceinline__ T warpScanExclusive(T idata, volatile T* s_Data, unsigned int tid)
+ {
+ return warpScanInclusive(idata, s_Data, tid) - idata;
+ }
+
+ template <int tiNumScanThreads, typename T>
+ __device__ T blockScanInclusive(T idata, volatile T* s_Data, unsigned int tid)
+ {
+ if (tiNumScanThreads > OPENCV_GPU_WARP_SIZE)
+ {
+ //Bottom-level inclusive warp scan
+ T warpResult = warpScanInclusive(idata, s_Data, tid);
+
+ //Save top elements of each warp for exclusive warp scan
+ //sync to wait for warp scans to complete (because s_Data is being overwritten)
+ __syncthreads();
+ if ((tid & (OPENCV_GPU_WARP_SIZE - 1)) == (OPENCV_GPU_WARP_SIZE - 1))
+ {
+ s_Data[tid >> OPENCV_GPU_LOG_WARP_SIZE] = warpResult;
+ }
+
+ //wait for warp scans to complete
+ __syncthreads();
+
+ if (tid < (tiNumScanThreads / OPENCV_GPU_WARP_SIZE) )
+ {
+ //grab top warp elements
+ T val = s_Data[tid];
+ //calculate exclusive scan and write back to shared memory
+ s_Data[tid] = warpScanExclusive(val, s_Data, tid);
+ }
+
+ //return updated warp scans with exclusive scan results
+ __syncthreads();
+
+ return warpResult + s_Data[tid >> OPENCV_GPU_LOG_WARP_SIZE];
+ }
+ else
+ {
+ return warpScanInclusive(idata, s_Data, tid);
+ }
+ }
+}}}
+
+#endif // __OPENCV_GPU_SCAN_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/simd_functions.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/simd_functions.hpp
new file mode 100644
index 00000000..b0377e53
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/simd_functions.hpp
@@ -0,0 +1,909 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+/*
+ * Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of NVIDIA Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __OPENCV_GPU_SIMD_FUNCTIONS_HPP__
+#define __OPENCV_GPU_SIMD_FUNCTIONS_HPP__
+
+#include "common.hpp"
+
+/*
+ This header file contains inline functions that implement intra-word SIMD
+ operations, that are hardware accelerated on sm_3x (Kepler) GPUs. Efficient
+ emulation code paths are provided for earlier architectures (sm_1x, sm_2x)
+ to make the code portable across all GPUs supported by CUDA. The following
+ functions are currently implemented:
+
+ vadd2(a,b) per-halfword unsigned addition, with wrap-around: a + b
+ vsub2(a,b) per-halfword unsigned subtraction, with wrap-around: a - b
+ vabsdiff2(a,b) per-halfword unsigned absolute difference: |a - b|
+ vavg2(a,b) per-halfword unsigned average: (a + b) / 2
+ vavrg2(a,b) per-halfword unsigned rounded average: (a + b + 1) / 2
+ vseteq2(a,b) per-halfword unsigned comparison: a == b ? 1 : 0
+ vcmpeq2(a,b) per-halfword unsigned comparison: a == b ? 0xffff : 0
+ vsetge2(a,b) per-halfword unsigned comparison: a >= b ? 1 : 0
+ vcmpge2(a,b) per-halfword unsigned comparison: a >= b ? 0xffff : 0
+ vsetgt2(a,b) per-halfword unsigned comparison: a > b ? 1 : 0
+ vcmpgt2(a,b) per-halfword unsigned comparison: a > b ? 0xffff : 0
+ vsetle2(a,b) per-halfword unsigned comparison: a <= b ? 1 : 0
+ vcmple2(a,b) per-halfword unsigned comparison: a <= b ? 0xffff : 0
+ vsetlt2(a,b) per-halfword unsigned comparison: a < b ? 1 : 0
+ vcmplt2(a,b) per-halfword unsigned comparison: a < b ? 0xffff : 0
+ vsetne2(a,b) per-halfword unsigned comparison: a != b ? 1 : 0
+ vcmpne2(a,b) per-halfword unsigned comparison: a != b ? 0xffff : 0
+ vmax2(a,b) per-halfword unsigned maximum: max(a, b)
+ vmin2(a,b) per-halfword unsigned minimum: min(a, b)
+
+ vadd4(a,b) per-byte unsigned addition, with wrap-around: a + b
+ vsub4(a,b) per-byte unsigned subtraction, with wrap-around: a - b
+ vabsdiff4(a,b) per-byte unsigned absolute difference: |a - b|
+ vavg4(a,b) per-byte unsigned average: (a + b) / 2
+ vavrg4(a,b) per-byte unsigned rounded average: (a + b + 1) / 2
+ vseteq4(a,b) per-byte unsigned comparison: a == b ? 1 : 0
+ vcmpeq4(a,b) per-byte unsigned comparison: a == b ? 0xff : 0
+ vsetge4(a,b) per-byte unsigned comparison: a >= b ? 1 : 0
+ vcmpge4(a,b) per-byte unsigned comparison: a >= b ? 0xff : 0
+ vsetgt4(a,b) per-byte unsigned comparison: a > b ? 1 : 0
+ vcmpgt4(a,b) per-byte unsigned comparison: a > b ? 0xff : 0
+ vsetle4(a,b) per-byte unsigned comparison: a <= b ? 1 : 0
+ vcmple4(a,b) per-byte unsigned comparison: a <= b ? 0xff : 0
+ vsetlt4(a,b) per-byte unsigned comparison: a < b ? 1 : 0
+ vcmplt4(a,b) per-byte unsigned comparison: a < b ? 0xff : 0
+ vsetne4(a,b) per-byte unsigned comparison: a != b ? 1: 0
+ vcmpne4(a,b) per-byte unsigned comparison: a != b ? 0xff: 0
+ vmax4(a,b) per-byte unsigned maximum: max(a, b)
+ vmin4(a,b) per-byte unsigned minimum: min(a, b)
+*/
+
+namespace cv { namespace gpu { namespace device
+{
+ // 2
+
+ static __device__ __forceinline__ unsigned int vadd2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vadd2.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vadd.u32.u32.u32.sat %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vadd.u32.u32.u32.sat %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s;
+ s = a ^ b; // sum bits
+ r = a + b; // actual sum
+ s = s ^ r; // determine carry-ins for each bit position
+ s = s & 0x00010000; // carry-in to high word (= carry-out from low word)
+ r = r - s; // subtract out carry-out from low word
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsub2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vsub2.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vsub.u32.u32.u32.sat %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vsub.u32.u32.u32.sat %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s;
+ s = a ^ b; // sum bits
+ r = a - b; // actual sum
+ s = s ^ r; // determine carry-ins for each bit position
+ s = s & 0x00010000; // borrow to high word
+ r = r + s; // compensate for borrow from low word
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vabsdiff2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vabsdiff2.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vabsdiff.u32.u32.u32.sat %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vabsdiff.u32.u32.u32.sat %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s, t, u, v;
+ s = a & 0x0000ffff; // extract low halfword
+ r = b & 0x0000ffff; // extract low halfword
+ u = ::max(r, s); // maximum of low halfwords
+ v = ::min(r, s); // minimum of low halfwords
+ s = a & 0xffff0000; // extract high halfword
+ r = b & 0xffff0000; // extract high halfword
+ t = ::max(r, s); // maximum of high halfwords
+ s = ::min(r, s); // minimum of high halfwords
+ r = u | t; // maximum of both halfwords
+ s = v | s; // minimum of both halfwords
+ r = r - s; // |a - b| = max(a,b) - min(a,b);
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vavg2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, s;
+
+ // HAKMEM #23: a + b = 2 * (a & b) + (a ^ b) ==>
+ // (a + b) / 2 = (a & b) + ((a ^ b) >> 1)
+ s = a ^ b;
+ r = a & b;
+ s = s & 0xfffefffe; // ensure shift doesn't cross halfword boundaries
+ s = s >> 1;
+ s = r + s;
+
+ return s;
+ }
+
+ static __device__ __forceinline__ unsigned int vavrg2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vavrg2.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ // HAKMEM #23: a + b = 2 * (a | b) - (a ^ b) ==>
+ // (a + b + 1) / 2 = (a | b) - ((a ^ b) >> 1)
+ unsigned int s;
+ s = a ^ b;
+ r = a | b;
+ s = s & 0xfffefffe; // ensure shift doesn't cross half-word boundaries
+ s = s >> 1;
+ r = r - s;
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vseteq2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset2.u32.u32.eq %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ unsigned int c;
+ r = a ^ b; // 0x0000 if a == b
+ c = r | 0x80008000; // set msbs, to catch carry out
+ r = r ^ c; // extract msbs, msb = 1 if r < 0x8000
+ c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000
+ c = r & ~c; // msb = 1, if r was 0x0000
+ r = c >> 15; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpeq2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vseteq2(a, b);
+ c = r << 16; // convert bool
+ r = c - r; // into mask
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ r = a ^ b; // 0x0000 if a == b
+ c = r | 0x80008000; // set msbs, to catch carry out
+ r = r ^ c; // extract msbs, msb = 1 if r < 0x8000
+ c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000
+ c = r & ~c; // msb = 1, if r was 0x0000
+ r = c >> 15; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetge2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset2.u32.u32.ge %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavrg2(a, b); // (a + ~b + 1) / 2 = (a - b) / 2
+ c = c & 0x80008000; // msb = carry-outs
+ r = c >> 15; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpge2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetge2(a, b);
+ c = r << 16; // convert bool
+ r = c - r; // into mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavrg2(a, b); // (a + ~b + 1) / 2 = (a - b) / 2
+ c = c & 0x80008000; // msb = carry-outs
+ r = c >> 15; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetgt2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset2.u32.u32.gt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavg2(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down]
+ c = c & 0x80008000; // msbs = carry-outs
+ r = c >> 15; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpgt2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetgt2(a, b);
+ c = r << 16; // convert bool
+ r = c - r; // into mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavg2(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down]
+ c = c & 0x80008000; // msbs = carry-outs
+ r = c >> 15; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetle2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset2.u32.u32.le %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavrg2(a, b); // (b + ~a + 1) / 2 = (b - a) / 2
+ c = c & 0x80008000; // msb = carry-outs
+ r = c >> 15; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmple2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetle2(a, b);
+ c = r << 16; // convert bool
+ r = c - r; // into mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavrg2(a, b); // (b + ~a + 1) / 2 = (b - a) / 2
+ c = c & 0x80008000; // msb = carry-outs
+ r = c >> 15; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetlt2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset2.u32.u32.lt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavg2(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down]
+ c = c & 0x80008000; // msb = carry-outs
+ r = c >> 15; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmplt2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetlt2(a, b);
+ c = r << 16; // convert bool
+ r = c - r; // into mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavg2(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down]
+ c = c & 0x80008000; // msb = carry-outs
+ r = c >> 15; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetne2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm ("vset2.u32.u32.ne %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ unsigned int c;
+ r = a ^ b; // 0x0000 if a == b
+ c = r | 0x80008000; // set msbs, to catch carry out
+ c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000
+ c = r | c; // msb = 1, if r was not 0x0000
+ c = c & 0x80008000; // extract msbs
+ r = c >> 15; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpne2(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetne2(a, b);
+ c = r << 16; // convert bool
+ r = c - r; // into mask
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ r = a ^ b; // 0x0000 if a == b
+ c = r | 0x80008000; // set msbs, to catch carry out
+ c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000
+ c = r | c; // msb = 1, if r was not 0x0000
+ c = c & 0x80008000; // extract msbs
+ r = c >> 15; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vmax2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vmax2.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vmax.u32.u32.u32 %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmax.u32.u32.u32 %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s, t, u;
+ r = a & 0x0000ffff; // extract low halfword
+ s = b & 0x0000ffff; // extract low halfword
+ t = ::max(r, s); // maximum of low halfwords
+ r = a & 0xffff0000; // extract high halfword
+ s = b & 0xffff0000; // extract high halfword
+ u = ::max(r, s); // maximum of high halfwords
+ r = t | u; // combine halfword maximums
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vmin2(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vmin2.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vmin.u32.u32.u32 %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmin.u32.u32.u32 %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s, t, u;
+ r = a & 0x0000ffff; // extract low halfword
+ s = b & 0x0000ffff; // extract low halfword
+ t = ::min(r, s); // minimum of low halfwords
+ r = a & 0xffff0000; // extract high halfword
+ s = b & 0xffff0000; // extract high halfword
+ u = ::min(r, s); // minimum of high halfwords
+ r = t | u; // combine halfword minimums
+ #endif
+
+ return r;
+ }
+
+ // 4
+
+ static __device__ __forceinline__ unsigned int vadd4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vadd4.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vadd.u32.u32.u32.sat %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vadd.u32.u32.u32.sat %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vadd.u32.u32.u32.sat %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vadd.u32.u32.u32.sat %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s, t;
+ s = a ^ b; // sum bits
+ r = a & 0x7f7f7f7f; // clear msbs
+ t = b & 0x7f7f7f7f; // clear msbs
+ s = s & 0x80808080; // msb sum bits
+ r = r + t; // add without msbs, record carry-out in msbs
+ r = r ^ s; // sum of msb sum and carry-in bits, w/o carry-out
+ #endif /* __CUDA_ARCH__ >= 300 */
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsub4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vsub4.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vsub.u32.u32.u32.sat %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vsub.u32.u32.u32.sat %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vsub.u32.u32.u32.sat %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vsub.u32.u32.u32.sat %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s, t;
+ s = a ^ ~b; // inverted sum bits
+ r = a | 0x80808080; // set msbs
+ t = b & 0x7f7f7f7f; // clear msbs
+ s = s & 0x80808080; // inverted msb sum bits
+ r = r - t; // subtract w/o msbs, record inverted borrows in msb
+ r = r ^ s; // combine inverted msb sum bits and borrows
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vavg4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, s;
+
+ // HAKMEM #23: a + b = 2 * (a & b) + (a ^ b) ==>
+ // (a + b) / 2 = (a & b) + ((a ^ b) >> 1)
+ s = a ^ b;
+ r = a & b;
+ s = s & 0xfefefefe; // ensure following shift doesn't cross byte boundaries
+ s = s >> 1;
+ s = r + s;
+
+ return s;
+ }
+
+ static __device__ __forceinline__ unsigned int vavrg4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vavrg4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ // HAKMEM #23: a + b = 2 * (a | b) - (a ^ b) ==>
+ // (a + b + 1) / 2 = (a | b) - ((a ^ b) >> 1)
+ unsigned int c;
+ c = a ^ b;
+ r = a | b;
+ c = c & 0xfefefefe; // ensure following shift doesn't cross byte boundaries
+ c = c >> 1;
+ r = r - c;
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vseteq4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset4.u32.u32.eq %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ unsigned int c;
+ r = a ^ b; // 0x00 if a == b
+ c = r | 0x80808080; // set msbs, to catch carry out
+ r = r ^ c; // extract msbs, msb = 1 if r < 0x80
+ c = c - 0x01010101; // msb = 0, if r was 0x00 or 0x80
+ c = r & ~c; // msb = 1, if r was 0x00
+ r = c >> 7; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpeq4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, t;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vseteq4(a, b);
+ t = r << 8; // convert bool
+ r = t - r; // to mask
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ t = a ^ b; // 0x00 if a == b
+ r = t | 0x80808080; // set msbs, to catch carry out
+ t = t ^ r; // extract msbs, msb = 1 if t < 0x80
+ r = r - 0x01010101; // msb = 0, if t was 0x00 or 0x80
+ r = t & ~r; // msb = 1, if t was 0x00
+ t = r >> 7; // build mask
+ t = r - t; // from
+ r = t | r; // msbs
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetle4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset4.u32.u32.le %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavrg4(a, b); // (b + ~a + 1) / 2 = (b - a) / 2
+ c = c & 0x80808080; // msb = carry-outs
+ r = c >> 7; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmple4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetle4(a, b);
+ c = r << 8; // convert bool
+ r = c - r; // to mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavrg4(a, b); // (b + ~a + 1) / 2 = (b - a) / 2
+ c = c & 0x80808080; // msbs = carry-outs
+ r = c >> 7; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetlt4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset4.u32.u32.lt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavg4(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down]
+ c = c & 0x80808080; // msb = carry-outs
+ r = c >> 7; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmplt4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetlt4(a, b);
+ c = r << 8; // convert bool
+ r = c - r; // to mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(a));
+ c = vavg4(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down]
+ c = c & 0x80808080; // msbs = carry-outs
+ r = c >> 7; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetge4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset4.u32.u32.ge %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavrg4(a, b); // (a + ~b + 1) / 2 = (a - b) / 2
+ c = c & 0x80808080; // msb = carry-outs
+ r = c >> 7; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpge4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, s;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetge4(a, b);
+ s = r << 8; // convert bool
+ r = s - r; // to mask
+ #else
+ asm ("not.b32 %0,%0;" : "+r"(b));
+ r = vavrg4 (a, b); // (a + ~b + 1) / 2 = (a - b) / 2
+ r = r & 0x80808080; // msb = carry-outs
+ s = r >> 7; // build mask
+ s = r - s; // from
+ r = s | r; // msbs
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetgt4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset4.u32.u32.gt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int c;
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavg4(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down]
+ c = c & 0x80808080; // msb = carry-outs
+ r = c >> 7; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpgt4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetgt4(a, b);
+ c = r << 8; // convert bool
+ r = c - r; // to mask
+ #else
+ asm("not.b32 %0, %0;" : "+r"(b));
+ c = vavg4(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down]
+ c = c & 0x80808080; // msb = carry-outs
+ r = c >> 7; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vsetne4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vset4.u32.u32.ne %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ unsigned int c;
+ r = a ^ b; // 0x00 if a == b
+ c = r | 0x80808080; // set msbs, to catch carry out
+ c = c - 0x01010101; // msb = 0, if r was 0x00 or 0x80
+ c = r | c; // msb = 1, if r was not 0x00
+ c = c & 0x80808080; // extract msbs
+ r = c >> 7; // convert to bool
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vcmpne4(unsigned int a, unsigned int b)
+ {
+ unsigned int r, c;
+
+ #if __CUDA_ARCH__ >= 300
+ r = vsetne4(a, b);
+ c = r << 8; // convert bool
+ r = c - r; // to mask
+ #else
+ // inspired by Alan Mycroft's null-byte detection algorithm:
+ // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080))
+ r = a ^ b; // 0x00 if a == b
+ c = r | 0x80808080; // set msbs, to catch carry out
+ c = c - 0x01010101; // msb = 0, if r was 0x00 or 0x80
+ c = r | c; // msb = 1, if r was not 0x00
+ c = c & 0x80808080; // extract msbs
+ r = c >> 7; // convert
+ r = c - r; // msbs to
+ r = c | r; // mask
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vabsdiff4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vabsdiff4.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vabsdiff.u32.u32.u32.sat %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vabsdiff.u32.u32.u32.sat %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vabsdiff.u32.u32.u32.sat %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vabsdiff.u32.u32.u32.sat %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s;
+ s = vcmpge4(a, b); // mask = 0xff if a >= b
+ r = a ^ b; //
+ s = (r & s) ^ b; // select a when a >= b, else select b => max(a,b)
+ r = s ^ r; // select a when b >= a, else select b => min(a,b)
+ r = s - r; // |a - b| = max(a,b) - min(a,b);
+ #endif
+
+ return r;
+ }
+
+ static __device__ __forceinline__ unsigned int vmax4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vmax4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vmax.u32.u32.u32 %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmax.u32.u32.u32 %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmax.u32.u32.u32 %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmax.u32.u32.u32 %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s;
+ s = vcmpge4(a, b); // mask = 0xff if a >= b
+ r = a & s; // select a when b >= a
+ s = b & ~s; // select b when b < a
+ r = r | s; // combine byte selections
+ #endif
+
+ return r; // byte-wise unsigned maximum
+ }
+
+ static __device__ __forceinline__ unsigned int vmin4(unsigned int a, unsigned int b)
+ {
+ unsigned int r = 0;
+
+ #if __CUDA_ARCH__ >= 300
+ asm("vmin4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #elif __CUDA_ARCH__ >= 200
+ asm("vmin.u32.u32.u32 %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmin.u32.u32.u32 %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmin.u32.u32.u32 %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ asm("vmin.u32.u32.u32 %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r));
+ #else
+ unsigned int s;
+ s = vcmpge4(b, a); // mask = 0xff if a >= b
+ r = a & s; // select a when b >= a
+ s = b & ~s; // select b when b < a
+ r = r | s; // combine byte selections
+ #endif
+
+ return r;
+ }
+}}}
+
+#endif // __OPENCV_GPU_SIMD_FUNCTIONS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/static_check.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/static_check.hpp
new file mode 100644
index 00000000..e77691b7
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/static_check.hpp
@@ -0,0 +1,67 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_GPU_DEVICE_STATIC_CHECK_HPP__
+#define __OPENCV_GPU_GPU_DEVICE_STATIC_CHECK_HPP__
+
+#if defined(__CUDACC__)
+ #define __OPENCV_GPU_HOST_DEVICE__ __host__ __device__ __forceinline__
+#else
+ #define __OPENCV_GPU_HOST_DEVICE__
+#endif
+
+namespace cv { namespace gpu
+{
+ namespace device
+ {
+ template<bool expr> struct Static {};
+
+ template<> struct Static<true>
+ {
+ __OPENCV_GPU_HOST_DEVICE__ static void check() {};
+ };
+ }
+}}
+
+#undef __OPENCV_GPU_HOST_DEVICE__
+
+#endif /* __OPENCV_GPU_GPU_DEVICE_STATIC_CHECK_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/transform.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/transform.hpp
new file mode 100644
index 00000000..636caac6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/transform.hpp
@@ -0,0 +1,67 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_TRANSFORM_HPP__
+#define __OPENCV_GPU_TRANSFORM_HPP__
+
+#include "common.hpp"
+#include "utility.hpp"
+#include "detail/transform_detail.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template <typename T, typename D, typename UnOp, typename Mask>
+ static inline void transform(PtrStepSz<T> src, PtrStepSz<D> dst, UnOp op, const Mask& mask, cudaStream_t stream)
+ {
+ typedef TransformFunctorTraits<UnOp> ft;
+ transform_detail::TransformDispatcher<VecTraits<T>::cn == 1 && VecTraits<D>::cn == 1 && ft::smart_shift != 1>::call(src, dst, op, mask, stream);
+ }
+
+ template <typename T1, typename T2, typename D, typename BinOp, typename Mask>
+ static inline void transform(PtrStepSz<T1> src1, PtrStepSz<T2> src2, PtrStepSz<D> dst, BinOp op, const Mask& mask, cudaStream_t stream)
+ {
+ typedef TransformFunctorTraits<BinOp> ft;
+ transform_detail::TransformDispatcher<VecTraits<T1>::cn == 1 && VecTraits<T2>::cn == 1 && VecTraits<D>::cn == 1 && ft::smart_shift != 1>::call(src1, src2, dst, op, mask, stream);
+ }
+}}}
+
+#endif // __OPENCV_GPU_TRANSFORM_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/type_traits.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/type_traits.hpp
new file mode 100644
index 00000000..1b36acca
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/type_traits.hpp
@@ -0,0 +1,82 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_TYPE_TRAITS_HPP__
+#define __OPENCV_GPU_TYPE_TRAITS_HPP__
+
+#include "detail/type_traits_detail.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template <typename T> struct IsSimpleParameter
+ {
+ enum {value = type_traits_detail::IsIntegral<T>::value || type_traits_detail::IsFloat<T>::value ||
+ type_traits_detail::PointerTraits<typename type_traits_detail::ReferenceTraits<T>::type>::value};
+ };
+
+ template <typename T> struct TypeTraits
+ {
+ typedef typename type_traits_detail::UnConst<T>::type NonConstType;
+ typedef typename type_traits_detail::UnVolatile<T>::type NonVolatileType;
+ typedef typename type_traits_detail::UnVolatile<typename type_traits_detail::UnConst<T>::type>::type UnqualifiedType;
+ typedef typename type_traits_detail::PointerTraits<UnqualifiedType>::type PointeeType;
+ typedef typename type_traits_detail::ReferenceTraits<T>::type ReferredType;
+
+ enum { isConst = type_traits_detail::UnConst<T>::value };
+ enum { isVolatile = type_traits_detail::UnVolatile<T>::value };
+
+ enum { isReference = type_traits_detail::ReferenceTraits<UnqualifiedType>::value };
+ enum { isPointer = type_traits_detail::PointerTraits<typename type_traits_detail::ReferenceTraits<UnqualifiedType>::type>::value };
+
+ enum { isUnsignedInt = type_traits_detail::IsUnsignedIntegral<UnqualifiedType>::value };
+ enum { isSignedInt = type_traits_detail::IsSignedIntergral<UnqualifiedType>::value };
+ enum { isIntegral = type_traits_detail::IsIntegral<UnqualifiedType>::value };
+ enum { isFloat = type_traits_detail::IsFloat<UnqualifiedType>::value };
+ enum { isArith = isIntegral || isFloat };
+ enum { isVec = type_traits_detail::IsVec<UnqualifiedType>::value };
+
+ typedef typename type_traits_detail::Select<IsSimpleParameter<UnqualifiedType>::value,
+ T, typename type_traits_detail::AddParameterType<T>::type>::type ParameterType;
+ };
+}}}
+
+#endif // __OPENCV_GPU_TYPE_TRAITS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/utility.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/utility.hpp
new file mode 100644
index 00000000..85e81acf
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/utility.hpp
@@ -0,0 +1,213 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_UTILITY_HPP__
+#define __OPENCV_GPU_UTILITY_HPP__
+
+#include "saturate_cast.hpp"
+#include "datamov_utils.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ #define OPENCV_GPU_LOG_WARP_SIZE (5)
+ #define OPENCV_GPU_WARP_SIZE (1 << OPENCV_GPU_LOG_WARP_SIZE)
+ #define OPENCV_GPU_LOG_MEM_BANKS ((__CUDA_ARCH__ >= 200) ? 5 : 4) // 32 banks on fermi, 16 on tesla
+ #define OPENCV_GPU_MEM_BANKS (1 << OPENCV_GPU_LOG_MEM_BANKS)
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // swap
+
+ template <typename T> void __device__ __host__ __forceinline__ swap(T& a, T& b)
+ {
+ const T temp = a;
+ a = b;
+ b = temp;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Mask Reader
+
+ struct SingleMask
+ {
+ explicit __host__ __device__ __forceinline__ SingleMask(PtrStepb mask_) : mask(mask_) {}
+ __host__ __device__ __forceinline__ SingleMask(const SingleMask& mask_): mask(mask_.mask){}
+
+ __device__ __forceinline__ bool operator()(int y, int x) const
+ {
+ return mask.ptr(y)[x] != 0;
+ }
+
+ PtrStepb mask;
+ };
+
+ struct SingleMaskChannels
+ {
+ __host__ __device__ __forceinline__ SingleMaskChannels(PtrStepb mask_, int channels_)
+ : mask(mask_), channels(channels_) {}
+ __host__ __device__ __forceinline__ SingleMaskChannels(const SingleMaskChannels& mask_)
+ :mask(mask_.mask), channels(mask_.channels){}
+
+ __device__ __forceinline__ bool operator()(int y, int x) const
+ {
+ return mask.ptr(y)[x / channels] != 0;
+ }
+
+ PtrStepb mask;
+ int channels;
+ };
+
+ struct MaskCollection
+ {
+ explicit __host__ __device__ __forceinline__ MaskCollection(PtrStepb* maskCollection_)
+ : maskCollection(maskCollection_) {}
+
+ __device__ __forceinline__ MaskCollection(const MaskCollection& masks_)
+ : maskCollection(masks_.maskCollection), curMask(masks_.curMask){}
+
+ __device__ __forceinline__ void next()
+ {
+ curMask = *maskCollection++;
+ }
+ __device__ __forceinline__ void setMask(int z)
+ {
+ curMask = maskCollection[z];
+ }
+
+ __device__ __forceinline__ bool operator()(int y, int x) const
+ {
+ uchar val;
+ return curMask.data == 0 || (ForceGlob<uchar>::Load(curMask.ptr(y), x, val), (val != 0));
+ }
+
+ const PtrStepb* maskCollection;
+ PtrStepb curMask;
+ };
+
+ struct WithOutMask
+ {
+ __host__ __device__ __forceinline__ WithOutMask(){}
+ __host__ __device__ __forceinline__ WithOutMask(const WithOutMask&){}
+
+ __device__ __forceinline__ void next() const
+ {
+ }
+ __device__ __forceinline__ void setMask(int) const
+ {
+ }
+
+ __device__ __forceinline__ bool operator()(int, int) const
+ {
+ return true;
+ }
+
+ __device__ __forceinline__ bool operator()(int, int, int) const
+ {
+ return true;
+ }
+
+ static __device__ __forceinline__ bool check(int, int)
+ {
+ return true;
+ }
+
+ static __device__ __forceinline__ bool check(int, int, int)
+ {
+ return true;
+ }
+ };
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Solve linear system
+
+ // solve 2x2 linear system Ax=b
+ template <typename T> __device__ __forceinline__ bool solve2x2(const T A[2][2], const T b[2], T x[2])
+ {
+ T det = A[0][0] * A[1][1] - A[1][0] * A[0][1];
+
+ if (det != 0)
+ {
+ double invdet = 1.0 / det;
+
+ x[0] = saturate_cast<T>(invdet * (b[0] * A[1][1] - b[1] * A[0][1]));
+
+ x[1] = saturate_cast<T>(invdet * (A[0][0] * b[1] - A[1][0] * b[0]));
+
+ return true;
+ }
+
+ return false;
+ }
+
+ // solve 3x3 linear system Ax=b
+ template <typename T> __device__ __forceinline__ bool solve3x3(const T A[3][3], const T b[3], T x[3])
+ {
+ T det = A[0][0] * (A[1][1] * A[2][2] - A[1][2] * A[2][1])
+ - A[0][1] * (A[1][0] * A[2][2] - A[1][2] * A[2][0])
+ + A[0][2] * (A[1][0] * A[2][1] - A[1][1] * A[2][0]);
+
+ if (det != 0)
+ {
+ double invdet = 1.0 / det;
+
+ x[0] = saturate_cast<T>(invdet *
+ (b[0] * (A[1][1] * A[2][2] - A[1][2] * A[2][1]) -
+ A[0][1] * (b[1] * A[2][2] - A[1][2] * b[2] ) +
+ A[0][2] * (b[1] * A[2][1] - A[1][1] * b[2] )));
+
+ x[1] = saturate_cast<T>(invdet *
+ (A[0][0] * (b[1] * A[2][2] - A[1][2] * b[2] ) -
+ b[0] * (A[1][0] * A[2][2] - A[1][2] * A[2][0]) +
+ A[0][2] * (A[1][0] * b[2] - b[1] * A[2][0])));
+
+ x[2] = saturate_cast<T>(invdet *
+ (A[0][0] * (A[1][1] * b[2] - b[1] * A[2][1]) -
+ A[0][1] * (A[1][0] * b[2] - b[1] * A[2][0]) +
+ b[0] * (A[1][0] * A[2][1] - A[1][1] * A[2][0])));
+
+ return true;
+ }
+
+ return false;
+ }
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_UTILITY_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_distance.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_distance.hpp
new file mode 100644
index 00000000..d5b4bb20
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_distance.hpp
@@ -0,0 +1,224 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_VEC_DISTANCE_HPP__
+#define __OPENCV_GPU_VEC_DISTANCE_HPP__
+
+#include "reduce.hpp"
+#include "functional.hpp"
+#include "detail/vec_distance_detail.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template <typename T> struct L1Dist
+ {
+ typedef int value_type;
+ typedef int result_type;
+
+ __device__ __forceinline__ L1Dist() : mySum(0) {}
+
+ __device__ __forceinline__ void reduceIter(int val1, int val2)
+ {
+ mySum = __sad(val1, val2, mySum);
+ }
+
+ template <int THREAD_DIM> __device__ __forceinline__ void reduceAll(int* smem, int tid)
+ {
+ reduce<THREAD_DIM>(smem, mySum, tid, plus<int>());
+ }
+
+ __device__ __forceinline__ operator int() const
+ {
+ return mySum;
+ }
+
+ int mySum;
+ };
+ template <> struct L1Dist<float>
+ {
+ typedef float value_type;
+ typedef float result_type;
+
+ __device__ __forceinline__ L1Dist() : mySum(0.0f) {}
+
+ __device__ __forceinline__ void reduceIter(float val1, float val2)
+ {
+ mySum += ::fabs(val1 - val2);
+ }
+
+ template <int THREAD_DIM> __device__ __forceinline__ void reduceAll(float* smem, int tid)
+ {
+ reduce<THREAD_DIM>(smem, mySum, tid, plus<float>());
+ }
+
+ __device__ __forceinline__ operator float() const
+ {
+ return mySum;
+ }
+
+ float mySum;
+ };
+
+ struct L2Dist
+ {
+ typedef float value_type;
+ typedef float result_type;
+
+ __device__ __forceinline__ L2Dist() : mySum(0.0f) {}
+
+ __device__ __forceinline__ void reduceIter(float val1, float val2)
+ {
+ float reg = val1 - val2;
+ mySum += reg * reg;
+ }
+
+ template <int THREAD_DIM> __device__ __forceinline__ void reduceAll(float* smem, int tid)
+ {
+ reduce<THREAD_DIM>(smem, mySum, tid, plus<float>());
+ }
+
+ __device__ __forceinline__ operator float() const
+ {
+ return sqrtf(mySum);
+ }
+
+ float mySum;
+ };
+
+ struct HammingDist
+ {
+ typedef int value_type;
+ typedef int result_type;
+
+ __device__ __forceinline__ HammingDist() : mySum(0) {}
+
+ __device__ __forceinline__ void reduceIter(int val1, int val2)
+ {
+ mySum += __popc(val1 ^ val2);
+ }
+
+ template <int THREAD_DIM> __device__ __forceinline__ void reduceAll(int* smem, int tid)
+ {
+ reduce<THREAD_DIM>(smem, mySum, tid, plus<int>());
+ }
+
+ __device__ __forceinline__ operator int() const
+ {
+ return mySum;
+ }
+
+ int mySum;
+ };
+
+ // calc distance between two vectors in global memory
+ template <int THREAD_DIM, typename Dist, typename T1, typename T2>
+ __device__ void calcVecDiffGlobal(const T1* vec1, const T2* vec2, int len, Dist& dist, typename Dist::result_type* smem, int tid)
+ {
+ for (int i = tid; i < len; i += THREAD_DIM)
+ {
+ T1 val1;
+ ForceGlob<T1>::Load(vec1, i, val1);
+
+ T2 val2;
+ ForceGlob<T2>::Load(vec2, i, val2);
+
+ dist.reduceIter(val1, val2);
+ }
+
+ dist.reduceAll<THREAD_DIM>(smem, tid);
+ }
+
+ // calc distance between two vectors, first vector is cached in register or shared memory, second vector is in global memory
+ template <int THREAD_DIM, int MAX_LEN, bool LEN_EQ_MAX_LEN, typename Dist, typename T1, typename T2>
+ __device__ __forceinline__ void calcVecDiffCached(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, typename Dist::result_type* smem, int tid)
+ {
+ vec_distance_detail::VecDiffCachedCalculator<THREAD_DIM, MAX_LEN, LEN_EQ_MAX_LEN>::calc(vecCached, vecGlob, len, dist, tid);
+
+ dist.reduceAll<THREAD_DIM>(smem, tid);
+ }
+
+ // calc distance between two vectors in global memory
+ template <int THREAD_DIM, typename T1> struct VecDiffGlobal
+ {
+ explicit __device__ __forceinline__ VecDiffGlobal(const T1* vec1_, int = 0, void* = 0, int = 0, int = 0)
+ {
+ vec1 = vec1_;
+ }
+
+ template <typename T2, typename Dist>
+ __device__ __forceinline__ void calc(const T2* vec2, int len, Dist& dist, typename Dist::result_type* smem, int tid) const
+ {
+ calcVecDiffGlobal<THREAD_DIM>(vec1, vec2, len, dist, smem, tid);
+ }
+
+ const T1* vec1;
+ };
+
+ // calc distance between two vectors, first vector is cached in register memory, second vector is in global memory
+ template <int THREAD_DIM, int MAX_LEN, bool LEN_EQ_MAX_LEN, typename U> struct VecDiffCachedRegister
+ {
+ template <typename T1> __device__ __forceinline__ VecDiffCachedRegister(const T1* vec1, int len, U* smem, int glob_tid, int tid)
+ {
+ if (glob_tid < len)
+ smem[glob_tid] = vec1[glob_tid];
+ __syncthreads();
+
+ U* vec1ValsPtr = vec1Vals;
+
+ #pragma unroll
+ for (int i = tid; i < MAX_LEN; i += THREAD_DIM)
+ *vec1ValsPtr++ = smem[i];
+
+ __syncthreads();
+ }
+
+ template <typename T2, typename Dist>
+ __device__ __forceinline__ void calc(const T2* vec2, int len, Dist& dist, typename Dist::result_type* smem, int tid) const
+ {
+ calcVecDiffCached<THREAD_DIM, MAX_LEN, LEN_EQ_MAX_LEN>(vec1Vals, vec2, len, dist, smem, tid);
+ }
+
+ U vec1Vals[MAX_LEN / THREAD_DIM];
+ };
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_VEC_DISTANCE_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_math.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_math.hpp
new file mode 100644
index 00000000..a6cb43a2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_math.hpp
@@ -0,0 +1,922 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_VECMATH_HPP__
+#define __OPENCV_GPU_VECMATH_HPP__
+
+#include "vec_traits.hpp"
+#include "saturate_cast.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+
+// saturate_cast
+
+namespace vec_math_detail
+{
+ template <int cn, typename VecD> struct SatCastHelper;
+ template <typename VecD> struct SatCastHelper<1, VecD>
+ {
+ template <typename VecS> static __device__ __forceinline__ VecD cast(const VecS& v)
+ {
+ typedef typename VecTraits<VecD>::elem_type D;
+ return VecTraits<VecD>::make(saturate_cast<D>(v.x));
+ }
+ };
+ template <typename VecD> struct SatCastHelper<2, VecD>
+ {
+ template <typename VecS> static __device__ __forceinline__ VecD cast(const VecS& v)
+ {
+ typedef typename VecTraits<VecD>::elem_type D;
+ return VecTraits<VecD>::make(saturate_cast<D>(v.x), saturate_cast<D>(v.y));
+ }
+ };
+ template <typename VecD> struct SatCastHelper<3, VecD>
+ {
+ template <typename VecS> static __device__ __forceinline__ VecD cast(const VecS& v)
+ {
+ typedef typename VecTraits<VecD>::elem_type D;
+ return VecTraits<VecD>::make(saturate_cast<D>(v.x), saturate_cast<D>(v.y), saturate_cast<D>(v.z));
+ }
+ };
+ template <typename VecD> struct SatCastHelper<4, VecD>
+ {
+ template <typename VecS> static __device__ __forceinline__ VecD cast(const VecS& v)
+ {
+ typedef typename VecTraits<VecD>::elem_type D;
+ return VecTraits<VecD>::make(saturate_cast<D>(v.x), saturate_cast<D>(v.y), saturate_cast<D>(v.z), saturate_cast<D>(v.w));
+ }
+ };
+
+ template <typename VecD, typename VecS> static __device__ __forceinline__ VecD saturate_cast_helper(const VecS& v)
+ {
+ return SatCastHelper<VecTraits<VecD>::cn, VecD>::cast(v);
+ }
+}
+
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uchar1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const char1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const ushort1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const short1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uint1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const int1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const float1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const double1& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uchar2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const char2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const ushort2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const short2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uint2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const int2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const float2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const double2& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uchar3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const char3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const ushort3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const short3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uint3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const int3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const float3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const double3& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uchar4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const char4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const ushort4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const short4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const uint4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const int4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const float4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+template<typename T> static __device__ __forceinline__ T saturate_cast(const double4& v) {return vec_math_detail::saturate_cast_helper<T>(v);}
+
+// unary operators
+
+#define CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(op, input_type, output_type) \
+ __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a) \
+ { \
+ return VecTraits<output_type ## 1>::make(op (a.x)); \
+ } \
+ __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a) \
+ { \
+ return VecTraits<output_type ## 2>::make(op (a.x), op (a.y)); \
+ } \
+ __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a) \
+ { \
+ return VecTraits<output_type ## 3>::make(op (a.x), op (a.y), op (a.z)); \
+ } \
+ __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a) \
+ { \
+ return VecTraits<output_type ## 4>::make(op (a.x), op (a.y), op (a.z), op (a.w)); \
+ }
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, char, char)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, short, short)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, int, int)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, char, char)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, short, short)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, int, int)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, uint, uint)
+
+#undef CV_CUDEV_IMPLEMENT_VEC_UNARY_OP
+
+// unary functions
+
+#define CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(func_name, func, input_type, output_type) \
+ __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a) \
+ { \
+ return VecTraits<output_type ## 1>::make(func (a.x)); \
+ } \
+ __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a) \
+ { \
+ return VecTraits<output_type ## 2>::make(func (a.x), func (a.y)); \
+ } \
+ __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a) \
+ { \
+ return VecTraits<output_type ## 3>::make(func (a.x), func (a.y), func (a.z)); \
+ } \
+ __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a) \
+ { \
+ return VecTraits<output_type ## 4>::make(func (a.x), func (a.y), func (a.z), func (a.w)); \
+ }
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::abs, char, char)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::abs, short, short)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::abs, int, int)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::fabsf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::fabs, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrt, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::exp, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::log, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sin, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cos, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tan, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asin, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acos, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atan, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinh, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::cosh, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanh, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinh, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acosh, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanh, double, double)
+
+#undef CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC
+
+// binary operators (vec & vec)
+
+#define CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(op, input_type, output_type) \
+ __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a, const input_type ## 1 & b) \
+ { \
+ return VecTraits<output_type ## 1>::make(a.x op b.x); \
+ } \
+ __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a, const input_type ## 2 & b) \
+ { \
+ return VecTraits<output_type ## 2>::make(a.x op b.x, a.y op b.y); \
+ } \
+ __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a, const input_type ## 3 & b) \
+ { \
+ return VecTraits<output_type ## 3>::make(a.x op b.x, a.y op b.y, a.z op b.z); \
+ } \
+ __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a, const input_type ## 4 & b) \
+ { \
+ return VecTraits<output_type ## 4>::make(a.x op b.x, a.y op b.y, a.z op b.z, a.w op b.w); \
+ }
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, uchar, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, char, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, ushort, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, short, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, uchar, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, char, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, ushort, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, short, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, uchar, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, char, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, ushort, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, short, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, uchar, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, char, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, ushort, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, short, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, char, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, ushort, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, short, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, int, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, uint, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, float, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, double, uchar)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, char, char)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, short, short)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, uint, uint)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, char, char)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, short, short)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, uint, uint)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, char, char)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, short, short)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, uint, uint)
+
+#undef CV_CUDEV_IMPLEMENT_VEC_BINARY_OP
+
+// binary operators (vec & scalar)
+
+#define CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(op, input_type, scalar_type, output_type) \
+ __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 1>::make(a.x op s); \
+ } \
+ __device__ __forceinline__ output_type ## 1 operator op(scalar_type s, const input_type ## 1 & b) \
+ { \
+ return VecTraits<output_type ## 1>::make(s op b.x); \
+ } \
+ __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 2>::make(a.x op s, a.y op s); \
+ } \
+ __device__ __forceinline__ output_type ## 2 operator op(scalar_type s, const input_type ## 2 & b) \
+ { \
+ return VecTraits<output_type ## 2>::make(s op b.x, s op b.y); \
+ } \
+ __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 3>::make(a.x op s, a.y op s, a.z op s); \
+ } \
+ __device__ __forceinline__ output_type ## 3 operator op(scalar_type s, const input_type ## 3 & b) \
+ { \
+ return VecTraits<output_type ## 3>::make(s op b.x, s op b.y, s op b.z); \
+ } \
+ __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 4>::make(a.x op s, a.y op s, a.z op s, a.w op s); \
+ } \
+ __device__ __forceinline__ output_type ## 4 operator op(scalar_type s, const input_type ## 4 & b) \
+ { \
+ return VecTraits<output_type ## 4>::make(s op b.x, s op b.y, s op b.z, s op b.w); \
+ }
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uchar, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, char, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, ushort, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, short, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uint, uint, uint)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uchar, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, char, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, ushort, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, short, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uint, uint, uint)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uchar, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, char, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, ushort, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, short, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uint, uint, uint)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uchar, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, char, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, ushort, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, short, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uint, uint, uint)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, char, char, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, ushort, ushort, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, short, short, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, int, int, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, uint, uint, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, float, float, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, double, double, uchar)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, char, char, char)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, ushort, ushort, ushort)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, short, short, short)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, uint, uint, uint)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, char, char, char)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, ushort, ushort, ushort)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, short, short, short)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, uint, uint, uint)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, char, char, char)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, ushort, ushort, ushort)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, short, short, short)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, uint, uint, uint)
+
+#undef CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP
+
+// binary function (vec & vec)
+
+#define CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(func_name, func, input_type, output_type) \
+ __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a, const input_type ## 1 & b) \
+ { \
+ return VecTraits<output_type ## 1>::make(func (a.x, b.x)); \
+ } \
+ __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a, const input_type ## 2 & b) \
+ { \
+ return VecTraits<output_type ## 2>::make(func (a.x, b.x), func (a.y, b.y)); \
+ } \
+ __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a, const input_type ## 3 & b) \
+ { \
+ return VecTraits<output_type ## 3>::make(func (a.x, b.x), func (a.y, b.y), func (a.z, b.z)); \
+ } \
+ __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a, const input_type ## 4 & b) \
+ { \
+ return VecTraits<output_type ## 4>::make(func (a.x, b.x), func (a.y, b.y), func (a.z, b.z), func (a.w, b.w)); \
+ }
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, char, char)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, short, short)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::fmaxf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::fmax, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, uchar, uchar)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, char, char)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, ushort, ushort)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, short, short)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, uint, uint)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, int, int)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::fminf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::fmin, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, char, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, short, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, int, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypot, double, double)
+
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, uchar, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, char, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, ushort, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, short, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, uint, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, int, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, float, float)
+CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2, double, double)
+
+#undef CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC
+
+// binary function (vec & scalar)
+
+#define CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(func_name, func, input_type, scalar_type, output_type) \
+ __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 1>::make(func ((output_type) a.x, (output_type) s)); \
+ } \
+ __device__ __forceinline__ output_type ## 1 func_name(scalar_type s, const input_type ## 1 & b) \
+ { \
+ return VecTraits<output_type ## 1>::make(func ((output_type) s, (output_type) b.x)); \
+ } \
+ __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 2>::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s)); \
+ } \
+ __device__ __forceinline__ output_type ## 2 func_name(scalar_type s, const input_type ## 2 & b) \
+ { \
+ return VecTraits<output_type ## 2>::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y)); \
+ } \
+ __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 3>::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s), func ((output_type) a.z, (output_type) s)); \
+ } \
+ __device__ __forceinline__ output_type ## 3 func_name(scalar_type s, const input_type ## 3 & b) \
+ { \
+ return VecTraits<output_type ## 3>::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y), func ((output_type) s, (output_type) b.z)); \
+ } \
+ __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a, scalar_type s) \
+ { \
+ return VecTraits<output_type ## 4>::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s), func ((output_type) a.z, (output_type) s), func ((output_type) a.w, (output_type) s)); \
+ } \
+ __device__ __forceinline__ output_type ## 4 func_name(scalar_type s, const input_type ## 4 & b) \
+ { \
+ return VecTraits<output_type ## 4>::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y), func ((output_type) s, (output_type) b.z), func ((output_type) s, (output_type) b.w)); \
+ }
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, char, char, char)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, ushort, ushort, ushort)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, short, short, short)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, uint, uint, uint)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, uchar, uchar, uchar)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, char, char, char)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, ushort, ushort, ushort)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, short, short, short)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, uint, uint, uint)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, int, int, int)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, double, double, double)
+
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, uchar, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, uchar, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, char, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, char, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, ushort, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, ushort, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, short, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, short, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, uint, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, uint, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, int, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, int, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, float, float, float)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, float, double, double)
+CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, double, double, double)
+
+#undef CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC
+
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_VECMATH_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_traits.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_traits.hpp
new file mode 100644
index 00000000..8d179c83
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/vec_traits.hpp
@@ -0,0 +1,280 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_VEC_TRAITS_HPP__
+#define __OPENCV_GPU_VEC_TRAITS_HPP__
+
+#include "common.hpp"
+
+namespace cv { namespace gpu { namespace device
+{
+ template<typename T, int N> struct TypeVec;
+
+ struct __align__(8) uchar8
+ {
+ uchar a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ uchar8 make_uchar8(uchar a0, uchar a1, uchar a2, uchar a3, uchar a4, uchar a5, uchar a6, uchar a7)
+ {
+ uchar8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct __align__(8) char8
+ {
+ schar a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ char8 make_char8(schar a0, schar a1, schar a2, schar a3, schar a4, schar a5, schar a6, schar a7)
+ {
+ char8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct __align__(16) ushort8
+ {
+ ushort a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ ushort8 make_ushort8(ushort a0, ushort a1, ushort a2, ushort a3, ushort a4, ushort a5, ushort a6, ushort a7)
+ {
+ ushort8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct __align__(16) short8
+ {
+ short a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ short8 make_short8(short a0, short a1, short a2, short a3, short a4, short a5, short a6, short a7)
+ {
+ short8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct __align__(32) uint8
+ {
+ uint a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ uint8 make_uint8(uint a0, uint a1, uint a2, uint a3, uint a4, uint a5, uint a6, uint a7)
+ {
+ uint8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct __align__(32) int8
+ {
+ int a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ int8 make_int8(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7)
+ {
+ int8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct __align__(32) float8
+ {
+ float a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ float8 make_float8(float a0, float a1, float a2, float a3, float a4, float a5, float a6, float a7)
+ {
+ float8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+ struct double8
+ {
+ double a0, a1, a2, a3, a4, a5, a6, a7;
+ };
+ static __host__ __device__ __forceinline__ double8 make_double8(double a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7)
+ {
+ double8 val = {a0, a1, a2, a3, a4, a5, a6, a7};
+ return val;
+ }
+
+#define OPENCV_GPU_IMPLEMENT_TYPE_VEC(type) \
+ template<> struct TypeVec<type, 1> { typedef type vec_type; }; \
+ template<> struct TypeVec<type ## 1, 1> { typedef type ## 1 vec_type; }; \
+ template<> struct TypeVec<type, 2> { typedef type ## 2 vec_type; }; \
+ template<> struct TypeVec<type ## 2, 2> { typedef type ## 2 vec_type; }; \
+ template<> struct TypeVec<type, 3> { typedef type ## 3 vec_type; }; \
+ template<> struct TypeVec<type ## 3, 3> { typedef type ## 3 vec_type; }; \
+ template<> struct TypeVec<type, 4> { typedef type ## 4 vec_type; }; \
+ template<> struct TypeVec<type ## 4, 4> { typedef type ## 4 vec_type; }; \
+ template<> struct TypeVec<type, 8> { typedef type ## 8 vec_type; }; \
+ template<> struct TypeVec<type ## 8, 8> { typedef type ## 8 vec_type; };
+
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(uchar)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(char)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(ushort)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(short)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(int)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(uint)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(float)
+ OPENCV_GPU_IMPLEMENT_TYPE_VEC(double)
+
+ #undef OPENCV_GPU_IMPLEMENT_TYPE_VEC
+
+ template<> struct TypeVec<schar, 1> { typedef schar vec_type; };
+ template<> struct TypeVec<schar, 2> { typedef char2 vec_type; };
+ template<> struct TypeVec<schar, 3> { typedef char3 vec_type; };
+ template<> struct TypeVec<schar, 4> { typedef char4 vec_type; };
+ template<> struct TypeVec<schar, 8> { typedef char8 vec_type; };
+
+ template<> struct TypeVec<bool, 1> { typedef uchar vec_type; };
+ template<> struct TypeVec<bool, 2> { typedef uchar2 vec_type; };
+ template<> struct TypeVec<bool, 3> { typedef uchar3 vec_type; };
+ template<> struct TypeVec<bool, 4> { typedef uchar4 vec_type; };
+ template<> struct TypeVec<bool, 8> { typedef uchar8 vec_type; };
+
+ template<typename T> struct VecTraits;
+
+#define OPENCV_GPU_IMPLEMENT_VEC_TRAITS(type) \
+ template<> struct VecTraits<type> \
+ { \
+ typedef type elem_type; \
+ enum {cn=1}; \
+ static __device__ __host__ __forceinline__ type all(type v) {return v;} \
+ static __device__ __host__ __forceinline__ type make(type x) {return x;} \
+ static __device__ __host__ __forceinline__ type make(const type* v) {return *v;} \
+ }; \
+ template<> struct VecTraits<type ## 1> \
+ { \
+ typedef type elem_type; \
+ enum {cn=1}; \
+ static __device__ __host__ __forceinline__ type ## 1 all(type v) {return make_ ## type ## 1(v);} \
+ static __device__ __host__ __forceinline__ type ## 1 make(type x) {return make_ ## type ## 1(x);} \
+ static __device__ __host__ __forceinline__ type ## 1 make(const type* v) {return make_ ## type ## 1(*v);} \
+ }; \
+ template<> struct VecTraits<type ## 2> \
+ { \
+ typedef type elem_type; \
+ enum {cn=2}; \
+ static __device__ __host__ __forceinline__ type ## 2 all(type v) {return make_ ## type ## 2(v, v);} \
+ static __device__ __host__ __forceinline__ type ## 2 make(type x, type y) {return make_ ## type ## 2(x, y);} \
+ static __device__ __host__ __forceinline__ type ## 2 make(const type* v) {return make_ ## type ## 2(v[0], v[1]);} \
+ }; \
+ template<> struct VecTraits<type ## 3> \
+ { \
+ typedef type elem_type; \
+ enum {cn=3}; \
+ static __device__ __host__ __forceinline__ type ## 3 all(type v) {return make_ ## type ## 3(v, v, v);} \
+ static __device__ __host__ __forceinline__ type ## 3 make(type x, type y, type z) {return make_ ## type ## 3(x, y, z);} \
+ static __device__ __host__ __forceinline__ type ## 3 make(const type* v) {return make_ ## type ## 3(v[0], v[1], v[2]);} \
+ }; \
+ template<> struct VecTraits<type ## 4> \
+ { \
+ typedef type elem_type; \
+ enum {cn=4}; \
+ static __device__ __host__ __forceinline__ type ## 4 all(type v) {return make_ ## type ## 4(v, v, v, v);} \
+ static __device__ __host__ __forceinline__ type ## 4 make(type x, type y, type z, type w) {return make_ ## type ## 4(x, y, z, w);} \
+ static __device__ __host__ __forceinline__ type ## 4 make(const type* v) {return make_ ## type ## 4(v[0], v[1], v[2], v[3]);} \
+ }; \
+ template<> struct VecTraits<type ## 8> \
+ { \
+ typedef type elem_type; \
+ enum {cn=8}; \
+ static __device__ __host__ __forceinline__ type ## 8 all(type v) {return make_ ## type ## 8(v, v, v, v, v, v, v, v);} \
+ static __device__ __host__ __forceinline__ type ## 8 make(type a0, type a1, type a2, type a3, type a4, type a5, type a6, type a7) {return make_ ## type ## 8(a0, a1, a2, a3, a4, a5, a6, a7);} \
+ static __device__ __host__ __forceinline__ type ## 8 make(const type* v) {return make_ ## type ## 8(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);} \
+ };
+
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(uchar)
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(ushort)
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(short)
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(int)
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(uint)
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(float)
+ OPENCV_GPU_IMPLEMENT_VEC_TRAITS(double)
+
+ #undef OPENCV_GPU_IMPLEMENT_VEC_TRAITS
+
+ template<> struct VecTraits<char>
+ {
+ typedef char elem_type;
+ enum {cn=1};
+ static __device__ __host__ __forceinline__ char all(char v) {return v;}
+ static __device__ __host__ __forceinline__ char make(char x) {return x;}
+ static __device__ __host__ __forceinline__ char make(const char* x) {return *x;}
+ };
+ template<> struct VecTraits<schar>
+ {
+ typedef schar elem_type;
+ enum {cn=1};
+ static __device__ __host__ __forceinline__ schar all(schar v) {return v;}
+ static __device__ __host__ __forceinline__ schar make(schar x) {return x;}
+ static __device__ __host__ __forceinline__ schar make(const schar* x) {return *x;}
+ };
+ template<> struct VecTraits<char1>
+ {
+ typedef schar elem_type;
+ enum {cn=1};
+ static __device__ __host__ __forceinline__ char1 all(schar v) {return make_char1(v);}
+ static __device__ __host__ __forceinline__ char1 make(schar x) {return make_char1(x);}
+ static __device__ __host__ __forceinline__ char1 make(const schar* v) {return make_char1(v[0]);}
+ };
+ template<> struct VecTraits<char2>
+ {
+ typedef schar elem_type;
+ enum {cn=2};
+ static __device__ __host__ __forceinline__ char2 all(schar v) {return make_char2(v, v);}
+ static __device__ __host__ __forceinline__ char2 make(schar x, schar y) {return make_char2(x, y);}
+ static __device__ __host__ __forceinline__ char2 make(const schar* v) {return make_char2(v[0], v[1]);}
+ };
+ template<> struct VecTraits<char3>
+ {
+ typedef schar elem_type;
+ enum {cn=3};
+ static __device__ __host__ __forceinline__ char3 all(schar v) {return make_char3(v, v, v);}
+ static __device__ __host__ __forceinline__ char3 make(schar x, schar y, schar z) {return make_char3(x, y, z);}
+ static __device__ __host__ __forceinline__ char3 make(const schar* v) {return make_char3(v[0], v[1], v[2]);}
+ };
+ template<> struct VecTraits<char4>
+ {
+ typedef schar elem_type;
+ enum {cn=4};
+ static __device__ __host__ __forceinline__ char4 all(schar v) {return make_char4(v, v, v, v);}
+ static __device__ __host__ __forceinline__ char4 make(schar x, schar y, schar z, schar w) {return make_char4(x, y, z, w);}
+ static __device__ __host__ __forceinline__ char4 make(const schar* v) {return make_char4(v[0], v[1], v[2], v[3]);}
+ };
+ template<> struct VecTraits<char8>
+ {
+ typedef schar elem_type;
+ enum {cn=8};
+ static __device__ __host__ __forceinline__ char8 all(schar v) {return make_char8(v, v, v, v, v, v, v, v);}
+ static __device__ __host__ __forceinline__ char8 make(schar a0, schar a1, schar a2, schar a3, schar a4, schar a5, schar a6, schar a7) {return make_char8(a0, a1, a2, a3, a4, a5, a6, a7);}
+ static __device__ __host__ __forceinline__ char8 make(const schar* v) {return make_char8(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);}
+ };
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif // __OPENCV_GPU_VEC_TRAITS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp.hpp
new file mode 100644
index 00000000..0f1dc794
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp.hpp
@@ -0,0 +1,131 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_DEVICE_WARP_HPP__
+#define __OPENCV_GPU_DEVICE_WARP_HPP__
+
+namespace cv { namespace gpu { namespace device
+{
+ struct Warp
+ {
+ enum
+ {
+ LOG_WARP_SIZE = 5,
+ WARP_SIZE = 1 << LOG_WARP_SIZE,
+ STRIDE = WARP_SIZE
+ };
+
+ /** \brief Returns the warp lane ID of the calling thread. */
+ static __device__ __forceinline__ unsigned int laneId()
+ {
+ unsigned int ret;
+ asm("mov.u32 %0, %laneid;" : "=r"(ret) );
+ return ret;
+ }
+
+ template<typename It, typename T>
+ static __device__ __forceinline__ void fill(It beg, It end, const T& value)
+ {
+ for(It t = beg + laneId(); t < end; t += STRIDE)
+ *t = value;
+ }
+
+ template<typename InIt, typename OutIt>
+ static __device__ __forceinline__ OutIt copy(InIt beg, InIt end, OutIt out)
+ {
+ for(InIt t = beg + laneId(); t < end; t += STRIDE, out += STRIDE)
+ *out = *t;
+ return out;
+ }
+
+ template<typename InIt, typename OutIt, class UnOp>
+ static __device__ __forceinline__ OutIt transform(InIt beg, InIt end, OutIt out, UnOp op)
+ {
+ for(InIt t = beg + laneId(); t < end; t += STRIDE, out += STRIDE)
+ *out = op(*t);
+ return out;
+ }
+
+ template<typename InIt1, typename InIt2, typename OutIt, class BinOp>
+ static __device__ __forceinline__ OutIt transform(InIt1 beg1, InIt1 end1, InIt2 beg2, OutIt out, BinOp op)
+ {
+ unsigned int lane = laneId();
+
+ InIt1 t1 = beg1 + lane;
+ InIt2 t2 = beg2 + lane;
+ for(; t1 < end1; t1 += STRIDE, t2 += STRIDE, out += STRIDE)
+ *out = op(*t1, *t2);
+ return out;
+ }
+
+ template <class T, class BinOp>
+ static __device__ __forceinline__ T reduce(volatile T *ptr, BinOp op)
+ {
+ const unsigned int lane = laneId();
+
+ if (lane < 16)
+ {
+ T partial = ptr[lane];
+
+ ptr[lane] = partial = op(partial, ptr[lane + 16]);
+ ptr[lane] = partial = op(partial, ptr[lane + 8]);
+ ptr[lane] = partial = op(partial, ptr[lane + 4]);
+ ptr[lane] = partial = op(partial, ptr[lane + 2]);
+ ptr[lane] = partial = op(partial, ptr[lane + 1]);
+ }
+
+ return *ptr;
+ }
+
+ template<typename OutIt, typename T>
+ static __device__ __forceinline__ void yota(OutIt beg, OutIt end, T value)
+ {
+ unsigned int lane = laneId();
+ value += lane;
+
+ for(OutIt t = beg + lane; t < end; t += STRIDE, value += STRIDE)
+ *t = value;
+ }
+ };
+}}} // namespace cv { namespace gpu { namespace device
+
+#endif /* __OPENCV_GPU_DEVICE_WARP_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_reduce.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_reduce.hpp
new file mode 100644
index 00000000..d4e64c46
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_reduce.hpp
@@ -0,0 +1,68 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef OPENCV_GPU_WARP_REDUCE_HPP__
+#define OPENCV_GPU_WARP_REDUCE_HPP__
+
+namespace cv { namespace gpu { namespace device
+{
+ template <class T>
+ __device__ __forceinline__ T warp_reduce(volatile T *ptr , const unsigned int tid = threadIdx.x)
+ {
+ const unsigned int lane = tid & 31; // index of thread in warp (0..31)
+
+ if (lane < 16)
+ {
+ T partial = ptr[tid];
+
+ ptr[tid] = partial = partial + ptr[tid + 16];
+ ptr[tid] = partial = partial + ptr[tid + 8];
+ ptr[tid] = partial = partial + ptr[tid + 4];
+ ptr[tid] = partial = partial + ptr[tid + 2];
+ ptr[tid] = partial = partial + ptr[tid + 1];
+ }
+
+ return ptr[tid - lane];
+ }
+}}} // namespace cv { namespace gpu { namespace device {
+
+#endif /* OPENCV_GPU_WARP_REDUCE_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_shuffle.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_shuffle.hpp
new file mode 100644
index 00000000..8b4479a7
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/device/warp_shuffle.hpp
@@ -0,0 +1,145 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_WARP_SHUFFLE_HPP__
+#define __OPENCV_GPU_WARP_SHUFFLE_HPP__
+
+namespace cv { namespace gpu { namespace device
+{
+ template <typename T>
+ __device__ __forceinline__ T shfl(T val, int srcLane, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ return __shfl(val, srcLane, width);
+ #else
+ return T();
+ #endif
+ }
+ __device__ __forceinline__ unsigned int shfl(unsigned int val, int srcLane, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ return (unsigned int) __shfl((int) val, srcLane, width);
+ #else
+ return 0;
+ #endif
+ }
+ __device__ __forceinline__ double shfl(double val, int srcLane, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ int lo = __double2loint(val);
+ int hi = __double2hiint(val);
+
+ lo = __shfl(lo, srcLane, width);
+ hi = __shfl(hi, srcLane, width);
+
+ return __hiloint2double(hi, lo);
+ #else
+ return 0.0;
+ #endif
+ }
+
+ template <typename T>
+ __device__ __forceinline__ T shfl_down(T val, unsigned int delta, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ return __shfl_down(val, delta, width);
+ #else
+ return T();
+ #endif
+ }
+ __device__ __forceinline__ unsigned int shfl_down(unsigned int val, unsigned int delta, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ return (unsigned int) __shfl_down((int) val, delta, width);
+ #else
+ return 0;
+ #endif
+ }
+ __device__ __forceinline__ double shfl_down(double val, unsigned int delta, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ int lo = __double2loint(val);
+ int hi = __double2hiint(val);
+
+ lo = __shfl_down(lo, delta, width);
+ hi = __shfl_down(hi, delta, width);
+
+ return __hiloint2double(hi, lo);
+ #else
+ return 0.0;
+ #endif
+ }
+
+ template <typename T>
+ __device__ __forceinline__ T shfl_up(T val, unsigned int delta, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ return __shfl_up(val, delta, width);
+ #else
+ return T();
+ #endif
+ }
+ __device__ __forceinline__ unsigned int shfl_up(unsigned int val, unsigned int delta, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ return (unsigned int) __shfl_up((int) val, delta, width);
+ #else
+ return 0;
+ #endif
+ }
+ __device__ __forceinline__ double shfl_up(double val, unsigned int delta, int width = warpSize)
+ {
+ #if __CUDA_ARCH__ >= 300
+ int lo = __double2loint(val);
+ int hi = __double2hiint(val);
+
+ lo = __shfl_up(lo, delta, width);
+ hi = __shfl_up(hi, delta, width);
+
+ return __hiloint2double(hi, lo);
+ #else
+ return 0.0;
+ #endif
+ }
+}}}
+
+#endif // __OPENCV_GPU_WARP_SHUFFLE_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/devmem2d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/devmem2d.hpp
new file mode 100644
index 00000000..18dfcd8a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/devmem2d.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/core/cuda_devptrs.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpu.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpu.hpp
new file mode 100644
index 00000000..de169826
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpu.hpp
@@ -0,0 +1,2530 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_HPP__
+#define __OPENCV_GPU_HPP__
+
+#ifndef SKIP_INCLUDES
+#include <vector>
+#include <memory>
+#include <iosfwd>
+#endif
+
+#include "opencv2/core/gpumat.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/objdetect/objdetect.hpp"
+#include "opencv2/features2d/features2d.hpp"
+
+namespace cv { namespace gpu {
+
+//////////////////////////////// CudaMem ////////////////////////////////
+// CudaMem is limited cv::Mat with page locked memory allocation.
+// Page locked memory is only needed for async and faster coping to GPU.
+// It is convertable to cv::Mat header without reference counting
+// so you can use it with other opencv functions.
+
+// Page-locks the matrix m memory and maps it for the device(s)
+CV_EXPORTS void registerPageLocked(Mat& m);
+// Unmaps the memory of matrix m, and makes it pageable again.
+CV_EXPORTS void unregisterPageLocked(Mat& m);
+
+class CV_EXPORTS CudaMem
+{
+public:
+ enum { ALLOC_PAGE_LOCKED = 1, ALLOC_ZEROCOPY = 2, ALLOC_WRITE_COMBINED = 4 };
+
+ CudaMem();
+ CudaMem(const CudaMem& m);
+
+ CudaMem(int rows, int cols, int type, int _alloc_type = ALLOC_PAGE_LOCKED);
+ CudaMem(Size size, int type, int alloc_type = ALLOC_PAGE_LOCKED);
+
+
+ //! creates from cv::Mat with coping data
+ explicit CudaMem(const Mat& m, int alloc_type = ALLOC_PAGE_LOCKED);
+
+ ~CudaMem();
+
+ CudaMem& operator = (const CudaMem& m);
+
+ //! returns deep copy of the matrix, i.e. the data is copied
+ CudaMem clone() const;
+
+ //! allocates new matrix data unless the matrix already has specified size and type.
+ void create(int rows, int cols, int type, int alloc_type = ALLOC_PAGE_LOCKED);
+ void create(Size size, int type, int alloc_type = ALLOC_PAGE_LOCKED);
+
+ //! decrements reference counter and released memory if needed.
+ void release();
+
+ //! returns matrix header with disabled reference counting for CudaMem data.
+ Mat createMatHeader() const;
+ operator Mat() const;
+
+ //! maps host memory into device address space and returns GpuMat header for it. Throws exception if not supported by hardware.
+ GpuMat createGpuMatHeader() const;
+ operator GpuMat() const;
+
+ //returns if host memory can be mapperd to gpu address space;
+ static bool canMapHostMemory();
+
+ // Please see cv::Mat for descriptions
+ bool isContinuous() const;
+ size_t elemSize() const;
+ size_t elemSize1() const;
+ int type() const;
+ int depth() const;
+ int channels() const;
+ size_t step1() const;
+ Size size() const;
+ bool empty() const;
+
+
+ // Please see cv::Mat for descriptions
+ int flags;
+ int rows, cols;
+ size_t step;
+
+ uchar* data;
+ int* refcount;
+
+ uchar* datastart;
+ uchar* dataend;
+
+ int alloc_type;
+};
+
+//////////////////////////////// CudaStream ////////////////////////////////
+// Encapculates Cuda Stream. Provides interface for async coping.
+// Passed to each function that supports async kernel execution.
+// Reference counting is enabled
+
+class CV_EXPORTS Stream
+{
+public:
+ Stream();
+ ~Stream();
+
+ Stream(const Stream&);
+ Stream& operator =(const Stream&);
+
+ bool queryIfComplete();
+ void waitForCompletion();
+
+ //! downloads asynchronously
+ // Warning! cv::Mat must point to page locked memory (i.e. to CudaMem data or to its subMat)
+ void enqueueDownload(const GpuMat& src, CudaMem& dst);
+ void enqueueDownload(const GpuMat& src, Mat& dst);
+
+ //! uploads asynchronously
+ // Warning! cv::Mat must point to page locked memory (i.e. to CudaMem data or to its ROI)
+ void enqueueUpload(const CudaMem& src, GpuMat& dst);
+ void enqueueUpload(const Mat& src, GpuMat& dst);
+
+ //! copy asynchronously
+ void enqueueCopy(const GpuMat& src, GpuMat& dst);
+
+ //! memory set asynchronously
+ void enqueueMemSet(GpuMat& src, Scalar val);
+ void enqueueMemSet(GpuMat& src, Scalar val, const GpuMat& mask);
+
+ //! converts matrix type, ex from float to uchar depending on type
+ void enqueueConvert(const GpuMat& src, GpuMat& dst, int dtype, double a = 1, double b = 0);
+
+ //! adds a callback to be called on the host after all currently enqueued items in the stream have completed
+ typedef void (*StreamCallback)(Stream& stream, int status, void* userData);
+ void enqueueHostCallback(StreamCallback callback, void* userData);
+
+ static Stream& Null();
+
+ operator bool() const;
+
+private:
+ struct Impl;
+
+ explicit Stream(Impl* impl);
+ void create();
+ void release();
+
+ Impl *impl;
+
+ friend struct StreamAccessor;
+};
+
+
+//////////////////////////////// Filter Engine ////////////////////////////////
+
+/*!
+The Base Class for 1D or Row-wise Filters
+
+This is the base class for linear or non-linear filters that process 1D data.
+In particular, such filters are used for the "horizontal" filtering parts in separable filters.
+*/
+class CV_EXPORTS BaseRowFilter_GPU
+{
+public:
+ BaseRowFilter_GPU(int ksize_, int anchor_) : ksize(ksize_), anchor(anchor_) {}
+ virtual ~BaseRowFilter_GPU() {}
+ virtual void operator()(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null()) = 0;
+ int ksize, anchor;
+};
+
+/*!
+The Base Class for Column-wise Filters
+
+This is the base class for linear or non-linear filters that process columns of 2D arrays.
+Such filters are used for the "vertical" filtering parts in separable filters.
+*/
+class CV_EXPORTS BaseColumnFilter_GPU
+{
+public:
+ BaseColumnFilter_GPU(int ksize_, int anchor_) : ksize(ksize_), anchor(anchor_) {}
+ virtual ~BaseColumnFilter_GPU() {}
+ virtual void operator()(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null()) = 0;
+ int ksize, anchor;
+};
+
+/*!
+The Base Class for Non-Separable 2D Filters.
+
+This is the base class for linear or non-linear 2D filters.
+*/
+class CV_EXPORTS BaseFilter_GPU
+{
+public:
+ BaseFilter_GPU(const Size& ksize_, const Point& anchor_) : ksize(ksize_), anchor(anchor_) {}
+ virtual ~BaseFilter_GPU() {}
+ virtual void operator()(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null()) = 0;
+ Size ksize;
+ Point anchor;
+};
+
+/*!
+The Base Class for Filter Engine.
+
+The class can be used to apply an arbitrary filtering operation to an image.
+It contains all the necessary intermediate buffers.
+*/
+class CV_EXPORTS FilterEngine_GPU
+{
+public:
+ virtual ~FilterEngine_GPU() {}
+
+ virtual void apply(const GpuMat& src, GpuMat& dst, Rect roi = Rect(0,0,-1,-1), Stream& stream = Stream::Null()) = 0;
+};
+
+//! returns the non-separable filter engine with the specified filter
+CV_EXPORTS Ptr<FilterEngine_GPU> createFilter2D_GPU(const Ptr<BaseFilter_GPU>& filter2D, int srcType, int dstType);
+
+//! returns the separable filter engine with the specified filters
+CV_EXPORTS Ptr<FilterEngine_GPU> createSeparableFilter_GPU(const Ptr<BaseRowFilter_GPU>& rowFilter,
+ const Ptr<BaseColumnFilter_GPU>& columnFilter, int srcType, int bufType, int dstType);
+CV_EXPORTS Ptr<FilterEngine_GPU> createSeparableFilter_GPU(const Ptr<BaseRowFilter_GPU>& rowFilter,
+ const Ptr<BaseColumnFilter_GPU>& columnFilter, int srcType, int bufType, int dstType, GpuMat& buf);
+
+//! returns horizontal 1D box filter
+//! supports only CV_8UC1 source type and CV_32FC1 sum type
+CV_EXPORTS Ptr<BaseRowFilter_GPU> getRowSumFilter_GPU(int srcType, int sumType, int ksize, int anchor = -1);
+
+//! returns vertical 1D box filter
+//! supports only CV_8UC1 sum type and CV_32FC1 dst type
+CV_EXPORTS Ptr<BaseColumnFilter_GPU> getColumnSumFilter_GPU(int sumType, int dstType, int ksize, int anchor = -1);
+
+//! returns 2D box filter
+//! supports CV_8UC1 and CV_8UC4 source type, dst type must be the same as source type
+CV_EXPORTS Ptr<BaseFilter_GPU> getBoxFilter_GPU(int srcType, int dstType, const Size& ksize, Point anchor = Point(-1, -1));
+
+//! returns box filter engine
+CV_EXPORTS Ptr<FilterEngine_GPU> createBoxFilter_GPU(int srcType, int dstType, const Size& ksize,
+ const Point& anchor = Point(-1,-1));
+
+//! returns 2D morphological filter
+//! only MORPH_ERODE and MORPH_DILATE are supported
+//! supports CV_8UC1 and CV_8UC4 types
+//! kernel must have CV_8UC1 type, one rows and cols == ksize.width * ksize.height
+CV_EXPORTS Ptr<BaseFilter_GPU> getMorphologyFilter_GPU(int op, int type, const Mat& kernel, const Size& ksize,
+ Point anchor=Point(-1,-1));
+
+//! returns morphological filter engine. Only MORPH_ERODE and MORPH_DILATE are supported.
+CV_EXPORTS Ptr<FilterEngine_GPU> createMorphologyFilter_GPU(int op, int type, const Mat& kernel,
+ const Point& anchor = Point(-1,-1), int iterations = 1);
+CV_EXPORTS Ptr<FilterEngine_GPU> createMorphologyFilter_GPU(int op, int type, const Mat& kernel, GpuMat& buf,
+ const Point& anchor = Point(-1,-1), int iterations = 1);
+
+//! returns 2D filter with the specified kernel
+//! supports CV_8U, CV_16U and CV_32F one and four channel image
+CV_EXPORTS Ptr<BaseFilter_GPU> getLinearFilter_GPU(int srcType, int dstType, const Mat& kernel, Point anchor = Point(-1, -1), int borderType = BORDER_DEFAULT);
+
+//! returns the non-separable linear filter engine
+CV_EXPORTS Ptr<FilterEngine_GPU> createLinearFilter_GPU(int srcType, int dstType, const Mat& kernel,
+ Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT);
+
+//! returns the primitive row filter with the specified kernel.
+//! supports only CV_8UC1, CV_8UC4, CV_16SC1, CV_16SC2, CV_32SC1, CV_32FC1 source type.
+//! there are two version of algorithm: NPP and OpenCV.
+//! NPP calls when srcType == CV_8UC1 or srcType == CV_8UC4 and bufType == srcType,
+//! otherwise calls OpenCV version.
+//! NPP supports only BORDER_CONSTANT border type.
+//! OpenCV version supports only CV_32F as buffer depth and
+//! BORDER_REFLECT101, BORDER_REPLICATE and BORDER_CONSTANT border types.
+CV_EXPORTS Ptr<BaseRowFilter_GPU> getLinearRowFilter_GPU(int srcType, int bufType, const Mat& rowKernel,
+ int anchor = -1, int borderType = BORDER_DEFAULT);
+
+//! returns the primitive column filter with the specified kernel.
+//! supports only CV_8UC1, CV_8UC4, CV_16SC1, CV_16SC2, CV_32SC1, CV_32FC1 dst type.
+//! there are two version of algorithm: NPP and OpenCV.
+//! NPP calls when dstType == CV_8UC1 or dstType == CV_8UC4 and bufType == dstType,
+//! otherwise calls OpenCV version.
+//! NPP supports only BORDER_CONSTANT border type.
+//! OpenCV version supports only CV_32F as buffer depth and
+//! BORDER_REFLECT101, BORDER_REPLICATE and BORDER_CONSTANT border types.
+CV_EXPORTS Ptr<BaseColumnFilter_GPU> getLinearColumnFilter_GPU(int bufType, int dstType, const Mat& columnKernel,
+ int anchor = -1, int borderType = BORDER_DEFAULT);
+
+//! returns the separable linear filter engine
+CV_EXPORTS Ptr<FilterEngine_GPU> createSeparableLinearFilter_GPU(int srcType, int dstType, const Mat& rowKernel,
+ const Mat& columnKernel, const Point& anchor = Point(-1,-1), int rowBorderType = BORDER_DEFAULT,
+ int columnBorderType = -1);
+CV_EXPORTS Ptr<FilterEngine_GPU> createSeparableLinearFilter_GPU(int srcType, int dstType, const Mat& rowKernel,
+ const Mat& columnKernel, GpuMat& buf, const Point& anchor = Point(-1,-1), int rowBorderType = BORDER_DEFAULT,
+ int columnBorderType = -1);
+
+//! returns filter engine for the generalized Sobel operator
+CV_EXPORTS Ptr<FilterEngine_GPU> createDerivFilter_GPU(int srcType, int dstType, int dx, int dy, int ksize,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+CV_EXPORTS Ptr<FilterEngine_GPU> createDerivFilter_GPU(int srcType, int dstType, int dx, int dy, int ksize, GpuMat& buf,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+
+//! returns the Gaussian filter engine
+CV_EXPORTS Ptr<FilterEngine_GPU> createGaussianFilter_GPU(int type, Size ksize, double sigma1, double sigma2 = 0,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+CV_EXPORTS Ptr<FilterEngine_GPU> createGaussianFilter_GPU(int type, Size ksize, GpuMat& buf, double sigma1, double sigma2 = 0,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+
+//! returns maximum filter
+CV_EXPORTS Ptr<BaseFilter_GPU> getMaxFilter_GPU(int srcType, int dstType, const Size& ksize, Point anchor = Point(-1,-1));
+
+//! returns minimum filter
+CV_EXPORTS Ptr<BaseFilter_GPU> getMinFilter_GPU(int srcType, int dstType, const Size& ksize, Point anchor = Point(-1,-1));
+
+//! smooths the image using the normalized box filter
+//! supports CV_8UC1, CV_8UC4 types
+CV_EXPORTS void boxFilter(const GpuMat& src, GpuMat& dst, int ddepth, Size ksize, Point anchor = Point(-1,-1), Stream& stream = Stream::Null());
+
+//! a synonym for normalized box filter
+static inline void blur(const GpuMat& src, GpuMat& dst, Size ksize, Point anchor = Point(-1,-1), Stream& stream = Stream::Null())
+{
+ boxFilter(src, dst, -1, ksize, anchor, stream);
+}
+
+//! erodes the image (applies the local minimum operator)
+CV_EXPORTS void erode(const GpuMat& src, GpuMat& dst, const Mat& kernel, Point anchor = Point(-1, -1), int iterations = 1);
+CV_EXPORTS void erode(const GpuMat& src, GpuMat& dst, const Mat& kernel, GpuMat& buf,
+ Point anchor = Point(-1, -1), int iterations = 1,
+ Stream& stream = Stream::Null());
+
+//! dilates the image (applies the local maximum operator)
+CV_EXPORTS void dilate(const GpuMat& src, GpuMat& dst, const Mat& kernel, Point anchor = Point(-1, -1), int iterations = 1);
+CV_EXPORTS void dilate(const GpuMat& src, GpuMat& dst, const Mat& kernel, GpuMat& buf,
+ Point anchor = Point(-1, -1), int iterations = 1,
+ Stream& stream = Stream::Null());
+
+//! applies an advanced morphological operation to the image
+CV_EXPORTS void morphologyEx(const GpuMat& src, GpuMat& dst, int op, const Mat& kernel, Point anchor = Point(-1, -1), int iterations = 1);
+CV_EXPORTS void morphologyEx(const GpuMat& src, GpuMat& dst, int op, const Mat& kernel, GpuMat& buf1, GpuMat& buf2,
+ Point anchor = Point(-1, -1), int iterations = 1, Stream& stream = Stream::Null());
+
+//! applies non-separable 2D linear filter to the image
+CV_EXPORTS void filter2D(const GpuMat& src, GpuMat& dst, int ddepth, const Mat& kernel, Point anchor=Point(-1,-1), int borderType = BORDER_DEFAULT, Stream& stream = Stream::Null());
+
+//! applies separable 2D linear filter to the image
+CV_EXPORTS void sepFilter2D(const GpuMat& src, GpuMat& dst, int ddepth, const Mat& kernelX, const Mat& kernelY,
+ Point anchor = Point(-1,-1), int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+CV_EXPORTS void sepFilter2D(const GpuMat& src, GpuMat& dst, int ddepth, const Mat& kernelX, const Mat& kernelY, GpuMat& buf,
+ Point anchor = Point(-1,-1), int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1,
+ Stream& stream = Stream::Null());
+
+//! applies generalized Sobel operator to the image
+CV_EXPORTS void Sobel(const GpuMat& src, GpuMat& dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+CV_EXPORTS void Sobel(const GpuMat& src, GpuMat& dst, int ddepth, int dx, int dy, GpuMat& buf, int ksize = 3, double scale = 1,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1, Stream& stream = Stream::Null());
+
+//! applies the vertical or horizontal Scharr operator to the image
+CV_EXPORTS void Scharr(const GpuMat& src, GpuMat& dst, int ddepth, int dx, int dy, double scale = 1,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+CV_EXPORTS void Scharr(const GpuMat& src, GpuMat& dst, int ddepth, int dx, int dy, GpuMat& buf, double scale = 1,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1, Stream& stream = Stream::Null());
+
+//! smooths the image using Gaussian filter.
+CV_EXPORTS void GaussianBlur(const GpuMat& src, GpuMat& dst, Size ksize, double sigma1, double sigma2 = 0,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1);
+CV_EXPORTS void GaussianBlur(const GpuMat& src, GpuMat& dst, Size ksize, GpuMat& buf, double sigma1, double sigma2 = 0,
+ int rowBorderType = BORDER_DEFAULT, int columnBorderType = -1, Stream& stream = Stream::Null());
+
+//! applies Laplacian operator to the image
+//! supports only ksize = 1 and ksize = 3
+CV_EXPORTS void Laplacian(const GpuMat& src, GpuMat& dst, int ddepth, int ksize = 1, double scale = 1, int borderType = BORDER_DEFAULT, Stream& stream = Stream::Null());
+
+
+////////////////////////////// Arithmetics ///////////////////////////////////
+
+//! implements generalized matrix product algorithm GEMM from BLAS
+CV_EXPORTS void gemm(const GpuMat& src1, const GpuMat& src2, double alpha,
+ const GpuMat& src3, double beta, GpuMat& dst, int flags = 0, Stream& stream = Stream::Null());
+
+//! transposes the matrix
+//! supports matrix with element size = 1, 4 and 8 bytes (CV_8UC1, CV_8UC4, CV_16UC2, CV_32FC1, etc)
+CV_EXPORTS void transpose(const GpuMat& src1, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! reverses the order of the rows, columns or both in a matrix
+//! supports 1, 3 and 4 channels images with CV_8U, CV_16U, CV_32S or CV_32F depth
+CV_EXPORTS void flip(const GpuMat& a, GpuMat& b, int flipCode, Stream& stream = Stream::Null());
+
+//! transforms 8-bit unsigned integers using lookup table: dst(i)=lut(src(i))
+//! destination array will have the depth type as lut and the same channels number as source
+//! supports CV_8UC1, CV_8UC3 types
+CV_EXPORTS void LUT(const GpuMat& src, const Mat& lut, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! makes multi-channel array out of several single-channel arrays
+CV_EXPORTS void merge(const GpuMat* src, size_t n, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! makes multi-channel array out of several single-channel arrays
+CV_EXPORTS void merge(const vector<GpuMat>& src, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! copies each plane of a multi-channel array to a dedicated array
+CV_EXPORTS void split(const GpuMat& src, GpuMat* dst, Stream& stream = Stream::Null());
+
+//! copies each plane of a multi-channel array to a dedicated array
+CV_EXPORTS void split(const GpuMat& src, vector<GpuMat>& dst, Stream& stream = Stream::Null());
+
+//! computes magnitude of complex (x(i).re, x(i).im) vector
+//! supports only CV_32FC2 type
+CV_EXPORTS void magnitude(const GpuMat& xy, GpuMat& magnitude, Stream& stream = Stream::Null());
+
+//! computes squared magnitude of complex (x(i).re, x(i).im) vector
+//! supports only CV_32FC2 type
+CV_EXPORTS void magnitudeSqr(const GpuMat& xy, GpuMat& magnitude, Stream& stream = Stream::Null());
+
+//! computes magnitude of each (x(i), y(i)) vector
+//! supports only floating-point source
+CV_EXPORTS void magnitude(const GpuMat& x, const GpuMat& y, GpuMat& magnitude, Stream& stream = Stream::Null());
+
+//! computes squared magnitude of each (x(i), y(i)) vector
+//! supports only floating-point source
+CV_EXPORTS void magnitudeSqr(const GpuMat& x, const GpuMat& y, GpuMat& magnitude, Stream& stream = Stream::Null());
+
+//! computes angle (angle(i)) of each (x(i), y(i)) vector
+//! supports only floating-point source
+CV_EXPORTS void phase(const GpuMat& x, const GpuMat& y, GpuMat& angle, bool angleInDegrees = false, Stream& stream = Stream::Null());
+
+//! converts Cartesian coordinates to polar
+//! supports only floating-point source
+CV_EXPORTS void cartToPolar(const GpuMat& x, const GpuMat& y, GpuMat& magnitude, GpuMat& angle, bool angleInDegrees = false, Stream& stream = Stream::Null());
+
+//! converts polar coordinates to Cartesian
+//! supports only floating-point source
+CV_EXPORTS void polarToCart(const GpuMat& magnitude, const GpuMat& angle, GpuMat& x, GpuMat& y, bool angleInDegrees = false, Stream& stream = Stream::Null());
+
+//! scales and shifts array elements so that either the specified norm (alpha) or the minimum (alpha) and maximum (beta) array values get the specified values
+CV_EXPORTS void normalize(const GpuMat& src, GpuMat& dst, double alpha = 1, double beta = 0,
+ int norm_type = NORM_L2, int dtype = -1, const GpuMat& mask = GpuMat());
+CV_EXPORTS void normalize(const GpuMat& src, GpuMat& dst, double a, double b,
+ int norm_type, int dtype, const GpuMat& mask, GpuMat& norm_buf, GpuMat& cvt_buf);
+
+
+//////////////////////////// Per-element operations ////////////////////////////////////
+
+//! adds one matrix to another (c = a + b)
+CV_EXPORTS void add(const GpuMat& a, const GpuMat& b, GpuMat& c, const GpuMat& mask = GpuMat(), int dtype = -1, Stream& stream = Stream::Null());
+//! adds scalar to a matrix (c = a + s)
+CV_EXPORTS void add(const GpuMat& a, const Scalar& sc, GpuMat& c, const GpuMat& mask = GpuMat(), int dtype = -1, Stream& stream = Stream::Null());
+
+//! subtracts one matrix from another (c = a - b)
+CV_EXPORTS void subtract(const GpuMat& a, const GpuMat& b, GpuMat& c, const GpuMat& mask = GpuMat(), int dtype = -1, Stream& stream = Stream::Null());
+//! subtracts scalar from a matrix (c = a - s)
+CV_EXPORTS void subtract(const GpuMat& a, const Scalar& sc, GpuMat& c, const GpuMat& mask = GpuMat(), int dtype = -1, Stream& stream = Stream::Null());
+
+//! computes element-wise weighted product of the two arrays (c = scale * a * b)
+CV_EXPORTS void multiply(const GpuMat& a, const GpuMat& b, GpuMat& c, double scale = 1, int dtype = -1, Stream& stream = Stream::Null());
+//! weighted multiplies matrix to a scalar (c = scale * a * s)
+CV_EXPORTS void multiply(const GpuMat& a, const Scalar& sc, GpuMat& c, double scale = 1, int dtype = -1, Stream& stream = Stream::Null());
+
+//! computes element-wise weighted quotient of the two arrays (c = a / b)
+CV_EXPORTS void divide(const GpuMat& a, const GpuMat& b, GpuMat& c, double scale = 1, int dtype = -1, Stream& stream = Stream::Null());
+//! computes element-wise weighted quotient of matrix and scalar (c = a / s)
+CV_EXPORTS void divide(const GpuMat& a, const Scalar& sc, GpuMat& c, double scale = 1, int dtype = -1, Stream& stream = Stream::Null());
+//! computes element-wise weighted reciprocal of an array (dst = scale/src2)
+CV_EXPORTS void divide(double scale, const GpuMat& b, GpuMat& c, int dtype = -1, Stream& stream = Stream::Null());
+
+//! computes the weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
+CV_EXPORTS void addWeighted(const GpuMat& src1, double alpha, const GpuMat& src2, double beta, double gamma, GpuMat& dst,
+ int dtype = -1, Stream& stream = Stream::Null());
+
+//! adds scaled array to another one (dst = alpha*src1 + src2)
+static inline void scaleAdd(const GpuMat& src1, double alpha, const GpuMat& src2, GpuMat& dst, Stream& stream = Stream::Null())
+{
+ addWeighted(src1, alpha, src2, 1.0, 0.0, dst, -1, stream);
+}
+
+//! computes element-wise absolute difference of two arrays (c = abs(a - b))
+CV_EXPORTS void absdiff(const GpuMat& a, const GpuMat& b, GpuMat& c, Stream& stream = Stream::Null());
+//! computes element-wise absolute difference of array and scalar (c = abs(a - s))
+CV_EXPORTS void absdiff(const GpuMat& a, const Scalar& s, GpuMat& c, Stream& stream = Stream::Null());
+
+//! computes absolute value of each matrix element
+//! supports CV_16S and CV_32F depth
+CV_EXPORTS void abs(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes square of each pixel in an image
+//! supports CV_8U, CV_16U, CV_16S and CV_32F depth
+CV_EXPORTS void sqr(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes square root of each pixel in an image
+//! supports CV_8U, CV_16U, CV_16S and CV_32F depth
+CV_EXPORTS void sqrt(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes exponent of each matrix element (b = e**a)
+//! supports CV_8U, CV_16U, CV_16S and CV_32F depth
+CV_EXPORTS void exp(const GpuMat& a, GpuMat& b, Stream& stream = Stream::Null());
+
+//! computes natural logarithm of absolute value of each matrix element: b = log(abs(a))
+//! supports CV_8U, CV_16U, CV_16S and CV_32F depth
+CV_EXPORTS void log(const GpuMat& a, GpuMat& b, Stream& stream = Stream::Null());
+
+//! computes power of each matrix element:
+// (dst(i,j) = pow( src(i,j) , power), if src.type() is integer
+// (dst(i,j) = pow(fabs(src(i,j)), power), otherwise
+//! supports all, except depth == CV_64F
+CV_EXPORTS void pow(const GpuMat& src, double power, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! compares elements of two arrays (c = a \<cmpop\> b)
+CV_EXPORTS void compare(const GpuMat& a, const GpuMat& b, GpuMat& c, int cmpop, Stream& stream = Stream::Null());
+CV_EXPORTS void compare(const GpuMat& a, Scalar sc, GpuMat& c, int cmpop, Stream& stream = Stream::Null());
+
+//! performs per-elements bit-wise inversion
+CV_EXPORTS void bitwise_not(const GpuMat& src, GpuMat& dst, const GpuMat& mask=GpuMat(), Stream& stream = Stream::Null());
+
+//! calculates per-element bit-wise disjunction of two arrays
+CV_EXPORTS void bitwise_or(const GpuMat& src1, const GpuMat& src2, GpuMat& dst, const GpuMat& mask=GpuMat(), Stream& stream = Stream::Null());
+//! calculates per-element bit-wise disjunction of array and scalar
+//! supports 1, 3 and 4 channels images with CV_8U, CV_16U or CV_32S depth
+CV_EXPORTS void bitwise_or(const GpuMat& src1, const Scalar& sc, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! calculates per-element bit-wise conjunction of two arrays
+CV_EXPORTS void bitwise_and(const GpuMat& src1, const GpuMat& src2, GpuMat& dst, const GpuMat& mask=GpuMat(), Stream& stream = Stream::Null());
+//! calculates per-element bit-wise conjunction of array and scalar
+//! supports 1, 3 and 4 channels images with CV_8U, CV_16U or CV_32S depth
+CV_EXPORTS void bitwise_and(const GpuMat& src1, const Scalar& sc, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! calculates per-element bit-wise "exclusive or" operation
+CV_EXPORTS void bitwise_xor(const GpuMat& src1, const GpuMat& src2, GpuMat& dst, const GpuMat& mask=GpuMat(), Stream& stream = Stream::Null());
+//! calculates per-element bit-wise "exclusive or" of array and scalar
+//! supports 1, 3 and 4 channels images with CV_8U, CV_16U or CV_32S depth
+CV_EXPORTS void bitwise_xor(const GpuMat& src1, const Scalar& sc, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! pixel by pixel right shift of an image by a constant value
+//! supports 1, 3 and 4 channels images with integers elements
+CV_EXPORTS void rshift(const GpuMat& src, Scalar_<int> sc, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! pixel by pixel left shift of an image by a constant value
+//! supports 1, 3 and 4 channels images with CV_8U, CV_16U or CV_32S depth
+CV_EXPORTS void lshift(const GpuMat& src, Scalar_<int> sc, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes per-element minimum of two arrays (dst = min(src1, src2))
+CV_EXPORTS void min(const GpuMat& src1, const GpuMat& src2, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes per-element minimum of array and scalar (dst = min(src1, src2))
+CV_EXPORTS void min(const GpuMat& src1, double src2, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes per-element maximum of two arrays (dst = max(src1, src2))
+CV_EXPORTS void max(const GpuMat& src1, const GpuMat& src2, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! computes per-element maximum of array and scalar (dst = max(src1, src2))
+CV_EXPORTS void max(const GpuMat& src1, double src2, GpuMat& dst, Stream& stream = Stream::Null());
+
+enum { ALPHA_OVER, ALPHA_IN, ALPHA_OUT, ALPHA_ATOP, ALPHA_XOR, ALPHA_PLUS, ALPHA_OVER_PREMUL, ALPHA_IN_PREMUL, ALPHA_OUT_PREMUL,
+ ALPHA_ATOP_PREMUL, ALPHA_XOR_PREMUL, ALPHA_PLUS_PREMUL, ALPHA_PREMUL};
+
+//! Composite two images using alpha opacity values contained in each image
+//! Supports CV_8UC4, CV_16UC4, CV_32SC4 and CV_32FC4 types
+CV_EXPORTS void alphaComp(const GpuMat& img1, const GpuMat& img2, GpuMat& dst, int alpha_op, Stream& stream = Stream::Null());
+
+
+////////////////////////////// Image processing //////////////////////////////
+
+//! DST[x,y] = SRC[xmap[x,y],ymap[x,y]]
+//! supports only CV_32FC1 map type
+CV_EXPORTS void remap(const GpuMat& src, GpuMat& dst, const GpuMat& xmap, const GpuMat& ymap,
+ int interpolation, int borderMode = BORDER_CONSTANT, Scalar borderValue = Scalar(),
+ Stream& stream = Stream::Null());
+
+//! Does mean shift filtering on GPU.
+CV_EXPORTS void meanShiftFiltering(const GpuMat& src, GpuMat& dst, int sp, int sr,
+ TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1),
+ Stream& stream = Stream::Null());
+
+//! Does mean shift procedure on GPU.
+CV_EXPORTS void meanShiftProc(const GpuMat& src, GpuMat& dstr, GpuMat& dstsp, int sp, int sr,
+ TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1),
+ Stream& stream = Stream::Null());
+
+//! Does mean shift segmentation with elimination of small regions.
+CV_EXPORTS void meanShiftSegmentation(const GpuMat& src, Mat& dst, int sp, int sr, int minsize,
+ TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1));
+
+//! Does coloring of disparity image: [0..ndisp) -> [0..240, 1, 1] in HSV.
+//! Supported types of input disparity: CV_8U, CV_16S.
+//! Output disparity has CV_8UC4 type in BGRA format (alpha = 255).
+CV_EXPORTS void drawColorDisp(const GpuMat& src_disp, GpuMat& dst_disp, int ndisp, Stream& stream = Stream::Null());
+
+//! Reprojects disparity image to 3D space.
+//! Supports CV_8U and CV_16S types of input disparity.
+//! The output is a 3- or 4-channel floating-point matrix.
+//! Each element of this matrix will contain the 3D coordinates of the point (x,y,z,1), computed from the disparity map.
+//! Q is the 4x4 perspective transformation matrix that can be obtained with cvStereoRectify.
+CV_EXPORTS void reprojectImageTo3D(const GpuMat& disp, GpuMat& xyzw, const Mat& Q, int dst_cn = 4, Stream& stream = Stream::Null());
+
+//! converts image from one color space to another
+CV_EXPORTS void cvtColor(const GpuMat& src, GpuMat& dst, int code, int dcn = 0, Stream& stream = Stream::Null());
+
+enum
+{
+ // Bayer Demosaicing (Malvar, He, and Cutler)
+ COLOR_BayerBG2BGR_MHT = 256,
+ COLOR_BayerGB2BGR_MHT = 257,
+ COLOR_BayerRG2BGR_MHT = 258,
+ COLOR_BayerGR2BGR_MHT = 259,
+
+ COLOR_BayerBG2RGB_MHT = COLOR_BayerRG2BGR_MHT,
+ COLOR_BayerGB2RGB_MHT = COLOR_BayerGR2BGR_MHT,
+ COLOR_BayerRG2RGB_MHT = COLOR_BayerBG2BGR_MHT,
+ COLOR_BayerGR2RGB_MHT = COLOR_BayerGB2BGR_MHT,
+
+ COLOR_BayerBG2GRAY_MHT = 260,
+ COLOR_BayerGB2GRAY_MHT = 261,
+ COLOR_BayerRG2GRAY_MHT = 262,
+ COLOR_BayerGR2GRAY_MHT = 263
+};
+CV_EXPORTS void demosaicing(const GpuMat& src, GpuMat& dst, int code, int dcn = -1, Stream& stream = Stream::Null());
+
+//! swap channels
+//! dstOrder - Integer array describing how channel values are permutated. The n-th entry
+//! of the array contains the number of the channel that is stored in the n-th channel of
+//! the output image. E.g. Given an RGBA image, aDstOrder = [3,2,1,0] converts this to ABGR
+//! channel order.
+CV_EXPORTS void swapChannels(GpuMat& image, const int dstOrder[4], Stream& stream = Stream::Null());
+
+//! Routines for correcting image color gamma
+CV_EXPORTS void gammaCorrection(const GpuMat& src, GpuMat& dst, bool forward = true, Stream& stream = Stream::Null());
+
+//! applies fixed threshold to the image
+CV_EXPORTS double threshold(const GpuMat& src, GpuMat& dst, double thresh, double maxval, int type, Stream& stream = Stream::Null());
+
+//! resizes the image
+//! Supports INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, INTER_AREA
+CV_EXPORTS void resize(const GpuMat& src, GpuMat& dst, Size dsize, double fx=0, double fy=0, int interpolation = INTER_LINEAR, Stream& stream = Stream::Null());
+
+//! warps the image using affine transformation
+//! Supports INTER_NEAREST, INTER_LINEAR, INTER_CUBIC
+CV_EXPORTS void warpAffine(const GpuMat& src, GpuMat& dst, const Mat& M, Size dsize, int flags = INTER_LINEAR,
+ int borderMode = BORDER_CONSTANT, Scalar borderValue = Scalar(), Stream& stream = Stream::Null());
+
+CV_EXPORTS void buildWarpAffineMaps(const Mat& M, bool inverse, Size dsize, GpuMat& xmap, GpuMat& ymap, Stream& stream = Stream::Null());
+
+//! warps the image using perspective transformation
+//! Supports INTER_NEAREST, INTER_LINEAR, INTER_CUBIC
+CV_EXPORTS void warpPerspective(const GpuMat& src, GpuMat& dst, const Mat& M, Size dsize, int flags = INTER_LINEAR,
+ int borderMode = BORDER_CONSTANT, Scalar borderValue = Scalar(), Stream& stream = Stream::Null());
+
+CV_EXPORTS void buildWarpPerspectiveMaps(const Mat& M, bool inverse, Size dsize, GpuMat& xmap, GpuMat& ymap, Stream& stream = Stream::Null());
+
+//! builds plane warping maps
+CV_EXPORTS void buildWarpPlaneMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat& R, const Mat &T, float scale,
+ GpuMat& map_x, GpuMat& map_y, Stream& stream = Stream::Null());
+
+//! builds cylindrical warping maps
+CV_EXPORTS void buildWarpCylindricalMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat& R, float scale,
+ GpuMat& map_x, GpuMat& map_y, Stream& stream = Stream::Null());
+
+//! builds spherical warping maps
+CV_EXPORTS void buildWarpSphericalMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat& R, float scale,
+ GpuMat& map_x, GpuMat& map_y, Stream& stream = Stream::Null());
+
+//! rotates an image around the origin (0,0) and then shifts it
+//! supports INTER_NEAREST, INTER_LINEAR, INTER_CUBIC
+//! supports 1, 3 or 4 channels images with CV_8U, CV_16U or CV_32F depth
+CV_EXPORTS void rotate(const GpuMat& src, GpuMat& dst, Size dsize, double angle, double xShift = 0, double yShift = 0,
+ int interpolation = INTER_LINEAR, Stream& stream = Stream::Null());
+
+//! copies 2D array to a larger destination array and pads borders with user-specifiable constant
+CV_EXPORTS void copyMakeBorder(const GpuMat& src, GpuMat& dst, int top, int bottom, int left, int right, int borderType,
+ const Scalar& value = Scalar(), Stream& stream = Stream::Null());
+
+//! computes the integral image
+//! sum will have CV_32S type, but will contain unsigned int values
+//! supports only CV_8UC1 source type
+CV_EXPORTS void integral(const GpuMat& src, GpuMat& sum, Stream& stream = Stream::Null());
+//! buffered version
+CV_EXPORTS void integralBuffered(const GpuMat& src, GpuMat& sum, GpuMat& buffer, Stream& stream = Stream::Null());
+
+//! computes squared integral image
+//! result matrix will have 64F type, but will contain 64U values
+//! supports source images of 8UC1 type only
+CV_EXPORTS void sqrIntegral(const GpuMat& src, GpuMat& sqsum, Stream& stream = Stream::Null());
+
+//! computes vertical sum, supports only CV_32FC1 images
+CV_EXPORTS void columnSum(const GpuMat& src, GpuMat& sum);
+
+//! computes the standard deviation of integral images
+//! supports only CV_32SC1 source type and CV_32FC1 sqr type
+//! output will have CV_32FC1 type
+CV_EXPORTS void rectStdDev(const GpuMat& src, const GpuMat& sqr, GpuMat& dst, const Rect& rect, Stream& stream = Stream::Null());
+
+//! computes Harris cornerness criteria at each image pixel
+CV_EXPORTS void cornerHarris(const GpuMat& src, GpuMat& dst, int blockSize, int ksize, double k, int borderType = BORDER_REFLECT101);
+CV_EXPORTS void cornerHarris(const GpuMat& src, GpuMat& dst, GpuMat& Dx, GpuMat& Dy, int blockSize, int ksize, double k, int borderType = BORDER_REFLECT101);
+CV_EXPORTS void cornerHarris(const GpuMat& src, GpuMat& dst, GpuMat& Dx, GpuMat& Dy, GpuMat& buf, int blockSize, int ksize, double k,
+ int borderType = BORDER_REFLECT101, Stream& stream = Stream::Null());
+
+//! computes minimum eigen value of 2x2 derivative covariation matrix at each pixel - the cornerness criteria
+CV_EXPORTS void cornerMinEigenVal(const GpuMat& src, GpuMat& dst, int blockSize, int ksize, int borderType=BORDER_REFLECT101);
+CV_EXPORTS void cornerMinEigenVal(const GpuMat& src, GpuMat& dst, GpuMat& Dx, GpuMat& Dy, int blockSize, int ksize, int borderType=BORDER_REFLECT101);
+CV_EXPORTS void cornerMinEigenVal(const GpuMat& src, GpuMat& dst, GpuMat& Dx, GpuMat& Dy, GpuMat& buf, int blockSize, int ksize,
+ int borderType=BORDER_REFLECT101, Stream& stream = Stream::Null());
+
+//! performs per-element multiplication of two full (not packed) Fourier spectrums
+//! supports 32FC2 matrices only (interleaved format)
+CV_EXPORTS void mulSpectrums(const GpuMat& a, const GpuMat& b, GpuMat& c, int flags, bool conjB=false, Stream& stream = Stream::Null());
+
+//! performs per-element multiplication of two full (not packed) Fourier spectrums
+//! supports 32FC2 matrices only (interleaved format)
+CV_EXPORTS void mulAndScaleSpectrums(const GpuMat& a, const GpuMat& b, GpuMat& c, int flags, float scale, bool conjB=false, Stream& stream = Stream::Null());
+
+//! Performs a forward or inverse discrete Fourier transform (1D or 2D) of floating point matrix.
+//! Param dft_size is the size of DFT transform.
+//!
+//! If the source matrix is not continous, then additional copy will be done,
+//! so to avoid copying ensure the source matrix is continous one. If you want to use
+//! preallocated output ensure it is continuous too, otherwise it will be reallocated.
+//!
+//! Being implemented via CUFFT real-to-complex transform result contains only non-redundant values
+//! in CUFFT's format. Result as full complex matrix for such kind of transform cannot be retrieved.
+//!
+//! For complex-to-real transform it is assumed that the source matrix is packed in CUFFT's format.
+CV_EXPORTS void dft(const GpuMat& src, GpuMat& dst, Size dft_size, int flags=0, Stream& stream = Stream::Null());
+
+struct CV_EXPORTS ConvolveBuf
+{
+ Size result_size;
+ Size block_size;
+ Size user_block_size;
+ Size dft_size;
+ int spect_len;
+
+ GpuMat image_spect, templ_spect, result_spect;
+ GpuMat image_block, templ_block, result_data;
+
+ void create(Size image_size, Size templ_size);
+ static Size estimateBlockSize(Size result_size, Size templ_size);
+};
+
+
+//! computes convolution (or cross-correlation) of two images using discrete Fourier transform
+//! supports source images of 32FC1 type only
+//! result matrix will have 32FC1 type
+CV_EXPORTS void convolve(const GpuMat& image, const GpuMat& templ, GpuMat& result, bool ccorr = false);
+CV_EXPORTS void convolve(const GpuMat& image, const GpuMat& templ, GpuMat& result, bool ccorr, ConvolveBuf& buf, Stream& stream = Stream::Null());
+
+struct CV_EXPORTS MatchTemplateBuf
+{
+ Size user_block_size;
+ GpuMat imagef, templf;
+ std::vector<GpuMat> images;
+ std::vector<GpuMat> image_sums;
+ std::vector<GpuMat> image_sqsums;
+};
+
+//! computes the proximity map for the raster template and the image where the template is searched for
+CV_EXPORTS void matchTemplate(const GpuMat& image, const GpuMat& templ, GpuMat& result, int method, Stream &stream = Stream::Null());
+
+//! computes the proximity map for the raster template and the image where the template is searched for
+CV_EXPORTS void matchTemplate(const GpuMat& image, const GpuMat& templ, GpuMat& result, int method, MatchTemplateBuf &buf, Stream& stream = Stream::Null());
+
+//! smoothes the source image and downsamples it
+CV_EXPORTS void pyrDown(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! upsamples the source image and then smoothes it
+CV_EXPORTS void pyrUp(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null());
+
+//! performs linear blending of two images
+//! to avoid accuracy errors sum of weigths shouldn't be very close to zero
+CV_EXPORTS void blendLinear(const GpuMat& img1, const GpuMat& img2, const GpuMat& weights1, const GpuMat& weights2,
+ GpuMat& result, Stream& stream = Stream::Null());
+
+//! Performa bilateral filtering of passsed image
+CV_EXPORTS void bilateralFilter(const GpuMat& src, GpuMat& dst, int kernel_size, float sigma_color, float sigma_spatial,
+ int borderMode = BORDER_DEFAULT, Stream& stream = Stream::Null());
+
+//! Brute force non-local means algorith (slow but universal)
+CV_EXPORTS void nonLocalMeans(const GpuMat& src, GpuMat& dst, float h, int search_window = 21, int block_size = 7, int borderMode = BORDER_DEFAULT, Stream& s = Stream::Null());
+
+//! Fast (but approximate)version of non-local means algorith similar to CPU function (running sums technique)
+class CV_EXPORTS FastNonLocalMeansDenoising
+{
+public:
+ //! Simple method, recommended for grayscale images (though it supports multichannel images)
+ void simpleMethod(const GpuMat& src, GpuMat& dst, float h, int search_window = 21, int block_size = 7, Stream& s = Stream::Null());
+
+ //! Processes luminance and color components separatelly
+ void labMethod(const GpuMat& src, GpuMat& dst, float h_luminance, float h_color, int search_window = 21, int block_size = 7, Stream& s = Stream::Null());
+
+private:
+
+ GpuMat buffer, extended_src_buffer;
+ GpuMat lab, l, ab;
+};
+
+struct CV_EXPORTS CannyBuf
+{
+ void create(const Size& image_size, int apperture_size = 3);
+ void release();
+
+ GpuMat dx, dy;
+ GpuMat mag;
+ GpuMat map;
+ GpuMat st1, st2;
+ GpuMat unused;
+ Ptr<FilterEngine_GPU> filterDX, filterDY;
+
+ CannyBuf() {}
+ explicit CannyBuf(const Size& image_size, int apperture_size = 3) {create(image_size, apperture_size);}
+ CannyBuf(const GpuMat& dx_, const GpuMat& dy_);
+};
+
+CV_EXPORTS void Canny(const GpuMat& image, GpuMat& edges, double low_thresh, double high_thresh, int apperture_size = 3, bool L2gradient = false);
+CV_EXPORTS void Canny(const GpuMat& image, CannyBuf& buf, GpuMat& edges, double low_thresh, double high_thresh, int apperture_size = 3, bool L2gradient = false);
+CV_EXPORTS void Canny(const GpuMat& dx, const GpuMat& dy, GpuMat& edges, double low_thresh, double high_thresh, bool L2gradient = false);
+CV_EXPORTS void Canny(const GpuMat& dx, const GpuMat& dy, CannyBuf& buf, GpuMat& edges, double low_thresh, double high_thresh, bool L2gradient = false);
+
+class CV_EXPORTS ImagePyramid
+{
+public:
+ inline ImagePyramid() : nLayers_(0) {}
+ inline ImagePyramid(const GpuMat& img, int nLayers, Stream& stream = Stream::Null())
+ {
+ build(img, nLayers, stream);
+ }
+
+ void build(const GpuMat& img, int nLayers, Stream& stream = Stream::Null());
+
+ void getLayer(GpuMat& outImg, Size outRoi, Stream& stream = Stream::Null()) const;
+
+ inline void release()
+ {
+ layer0_.release();
+ pyramid_.clear();
+ nLayers_ = 0;
+ }
+
+private:
+ GpuMat layer0_;
+ std::vector<GpuMat> pyramid_;
+ int nLayers_;
+};
+
+//! HoughLines
+
+struct HoughLinesBuf
+{
+ GpuMat accum;
+ GpuMat list;
+};
+
+CV_EXPORTS void HoughLines(const GpuMat& src, GpuMat& lines, float rho, float theta, int threshold, bool doSort = false, int maxLines = 4096);
+CV_EXPORTS void HoughLines(const GpuMat& src, GpuMat& lines, HoughLinesBuf& buf, float rho, float theta, int threshold, bool doSort = false, int maxLines = 4096);
+CV_EXPORTS void HoughLinesDownload(const GpuMat& d_lines, OutputArray h_lines, OutputArray h_votes = noArray());
+
+//! HoughLinesP
+
+//! finds line segments in the black-n-white image using probabalistic Hough transform
+CV_EXPORTS void HoughLinesP(const GpuMat& image, GpuMat& lines, HoughLinesBuf& buf, float rho, float theta, int minLineLength, int maxLineGap, int maxLines = 4096);
+
+//! HoughCircles
+
+struct HoughCirclesBuf
+{
+ GpuMat edges;
+ GpuMat accum;
+ GpuMat list;
+ CannyBuf cannyBuf;
+};
+
+CV_EXPORTS void HoughCircles(const GpuMat& src, GpuMat& circles, int method, float dp, float minDist, int cannyThreshold, int votesThreshold, int minRadius, int maxRadius, int maxCircles = 4096);
+CV_EXPORTS void HoughCircles(const GpuMat& src, GpuMat& circles, HoughCirclesBuf& buf, int method, float dp, float minDist, int cannyThreshold, int votesThreshold, int minRadius, int maxRadius, int maxCircles = 4096);
+CV_EXPORTS void HoughCirclesDownload(const GpuMat& d_circles, OutputArray h_circles);
+
+//! finds arbitrary template in the grayscale image using Generalized Hough Transform
+//! Ballard, D.H. (1981). Generalizing the Hough transform to detect arbitrary shapes. Pattern Recognition 13 (2): 111-122.
+//! Guil, N., González-Linares, J.M. and Zapata, E.L. (1999). Bidimensional shape detection using an invariant approach. Pattern Recognition 32 (6): 1025-1038.
+class CV_EXPORTS GeneralizedHough_GPU : public Algorithm
+{
+public:
+ static Ptr<GeneralizedHough_GPU> create(int method);
+
+ virtual ~GeneralizedHough_GPU();
+
+ //! set template to search
+ void setTemplate(const GpuMat& templ, int cannyThreshold = 100, Point templCenter = Point(-1, -1));
+ void setTemplate(const GpuMat& edges, const GpuMat& dx, const GpuMat& dy, Point templCenter = Point(-1, -1));
+
+ //! find template on image
+ void detect(const GpuMat& image, GpuMat& positions, int cannyThreshold = 100);
+ void detect(const GpuMat& edges, const GpuMat& dx, const GpuMat& dy, GpuMat& positions);
+
+ void download(const GpuMat& d_positions, OutputArray h_positions, OutputArray h_votes = noArray());
+
+ void release();
+
+protected:
+ virtual void setTemplateImpl(const GpuMat& edges, const GpuMat& dx, const GpuMat& dy, Point templCenter) = 0;
+ virtual void detectImpl(const GpuMat& edges, const GpuMat& dx, const GpuMat& dy, GpuMat& positions) = 0;
+ virtual void releaseImpl() = 0;
+
+private:
+ GpuMat edges_;
+ CannyBuf cannyBuf_;
+};
+
+////////////////////////////// Matrix reductions //////////////////////////////
+
+//! computes mean value and standard deviation of all or selected array elements
+//! supports only CV_8UC1 type
+CV_EXPORTS void meanStdDev(const GpuMat& mtx, Scalar& mean, Scalar& stddev);
+//! buffered version
+CV_EXPORTS void meanStdDev(const GpuMat& mtx, Scalar& mean, Scalar& stddev, GpuMat& buf);
+
+//! computes norm of array
+//! supports NORM_INF, NORM_L1, NORM_L2
+//! supports all matrices except 64F
+CV_EXPORTS double norm(const GpuMat& src1, int normType=NORM_L2);
+CV_EXPORTS double norm(const GpuMat& src1, int normType, GpuMat& buf);
+CV_EXPORTS double norm(const GpuMat& src1, int normType, const GpuMat& mask, GpuMat& buf);
+
+//! computes norm of the difference between two arrays
+//! supports NORM_INF, NORM_L1, NORM_L2
+//! supports only CV_8UC1 type
+CV_EXPORTS double norm(const GpuMat& src1, const GpuMat& src2, int normType=NORM_L2);
+
+//! computes sum of array elements
+//! supports only single channel images
+CV_EXPORTS Scalar sum(const GpuMat& src);
+CV_EXPORTS Scalar sum(const GpuMat& src, GpuMat& buf);
+CV_EXPORTS Scalar sum(const GpuMat& src, const GpuMat& mask, GpuMat& buf);
+
+//! computes sum of array elements absolute values
+//! supports only single channel images
+CV_EXPORTS Scalar absSum(const GpuMat& src);
+CV_EXPORTS Scalar absSum(const GpuMat& src, GpuMat& buf);
+CV_EXPORTS Scalar absSum(const GpuMat& src, const GpuMat& mask, GpuMat& buf);
+
+//! computes squared sum of array elements
+//! supports only single channel images
+CV_EXPORTS Scalar sqrSum(const GpuMat& src);
+CV_EXPORTS Scalar sqrSum(const GpuMat& src, GpuMat& buf);
+CV_EXPORTS Scalar sqrSum(const GpuMat& src, const GpuMat& mask, GpuMat& buf);
+
+//! finds global minimum and maximum array elements and returns their values
+CV_EXPORTS void minMax(const GpuMat& src, double* minVal, double* maxVal=0, const GpuMat& mask=GpuMat());
+CV_EXPORTS void minMax(const GpuMat& src, double* minVal, double* maxVal, const GpuMat& mask, GpuMat& buf);
+
+//! finds global minimum and maximum array elements and returns their values with locations
+CV_EXPORTS void minMaxLoc(const GpuMat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0,
+ const GpuMat& mask=GpuMat());
+CV_EXPORTS void minMaxLoc(const GpuMat& src, double* minVal, double* maxVal, Point* minLoc, Point* maxLoc,
+ const GpuMat& mask, GpuMat& valbuf, GpuMat& locbuf);
+
+//! counts non-zero array elements
+CV_EXPORTS int countNonZero(const GpuMat& src);
+CV_EXPORTS int countNonZero(const GpuMat& src, GpuMat& buf);
+
+//! reduces a matrix to a vector
+CV_EXPORTS void reduce(const GpuMat& mtx, GpuMat& vec, int dim, int reduceOp, int dtype = -1, Stream& stream = Stream::Null());
+
+
+///////////////////////////// Calibration 3D //////////////////////////////////
+
+CV_EXPORTS void transformPoints(const GpuMat& src, const Mat& rvec, const Mat& tvec,
+ GpuMat& dst, Stream& stream = Stream::Null());
+
+CV_EXPORTS void projectPoints(const GpuMat& src, const Mat& rvec, const Mat& tvec,
+ const Mat& camera_mat, const Mat& dist_coef, GpuMat& dst,
+ Stream& stream = Stream::Null());
+
+CV_EXPORTS void solvePnPRansac(const Mat& object, const Mat& image, const Mat& camera_mat,
+ const Mat& dist_coef, Mat& rvec, Mat& tvec, bool use_extrinsic_guess=false,
+ int num_iters=100, float max_dist=8.0, int min_inlier_count=100,
+ std::vector<int>* inliers=NULL);
+
+//////////////////////////////// Image Labeling ////////////////////////////////
+
+//!performs labeling via graph cuts of a 2D regular 4-connected graph.
+CV_EXPORTS void graphcut(GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& bottom, GpuMat& labels,
+ GpuMat& buf, Stream& stream = Stream::Null());
+
+//!performs labeling via graph cuts of a 2D regular 8-connected graph.
+CV_EXPORTS void graphcut(GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& topLeft, GpuMat& topRight,
+ GpuMat& bottom, GpuMat& bottomLeft, GpuMat& bottomRight,
+ GpuMat& labels,
+ GpuMat& buf, Stream& stream = Stream::Null());
+
+//! compute mask for Generalized Flood fill componetns labeling.
+CV_EXPORTS void connectivityMask(const GpuMat& image, GpuMat& mask, const cv::Scalar& lo, const cv::Scalar& hi, Stream& stream = Stream::Null());
+
+//! performs connected componnents labeling.
+CV_EXPORTS void labelComponents(const GpuMat& mask, GpuMat& components, int flags = 0, Stream& stream = Stream::Null());
+
+////////////////////////////////// Histograms //////////////////////////////////
+
+//! Compute levels with even distribution. levels will have 1 row and nLevels cols and CV_32SC1 type.
+CV_EXPORTS void evenLevels(GpuMat& levels, int nLevels, int lowerLevel, int upperLevel);
+//! Calculates histogram with evenly distributed bins for signle channel source.
+//! Supports CV_8UC1, CV_16UC1 and CV_16SC1 source types.
+//! Output hist will have one row and histSize cols and CV_32SC1 type.
+CV_EXPORTS void histEven(const GpuMat& src, GpuMat& hist, int histSize, int lowerLevel, int upperLevel, Stream& stream = Stream::Null());
+CV_EXPORTS void histEven(const GpuMat& src, GpuMat& hist, GpuMat& buf, int histSize, int lowerLevel, int upperLevel, Stream& stream = Stream::Null());
+//! Calculates histogram with evenly distributed bins for four-channel source.
+//! All channels of source are processed separately.
+//! Supports CV_8UC4, CV_16UC4 and CV_16SC4 source types.
+//! Output hist[i] will have one row and histSize[i] cols and CV_32SC1 type.
+CV_EXPORTS void histEven(const GpuMat& src, GpuMat hist[4], int histSize[4], int lowerLevel[4], int upperLevel[4], Stream& stream = Stream::Null());
+CV_EXPORTS void histEven(const GpuMat& src, GpuMat hist[4], GpuMat& buf, int histSize[4], int lowerLevel[4], int upperLevel[4], Stream& stream = Stream::Null());
+//! Calculates histogram with bins determined by levels array.
+//! levels must have one row and CV_32SC1 type if source has integer type or CV_32FC1 otherwise.
+//! Supports CV_8UC1, CV_16UC1, CV_16SC1 and CV_32FC1 source types.
+//! Output hist will have one row and (levels.cols-1) cols and CV_32SC1 type.
+CV_EXPORTS void histRange(const GpuMat& src, GpuMat& hist, const GpuMat& levels, Stream& stream = Stream::Null());
+CV_EXPORTS void histRange(const GpuMat& src, GpuMat& hist, const GpuMat& levels, GpuMat& buf, Stream& stream = Stream::Null());
+//! Calculates histogram with bins determined by levels array.
+//! All levels must have one row and CV_32SC1 type if source has integer type or CV_32FC1 otherwise.
+//! All channels of source are processed separately.
+//! Supports CV_8UC4, CV_16UC4, CV_16SC4 and CV_32FC4 source types.
+//! Output hist[i] will have one row and (levels[i].cols-1) cols and CV_32SC1 type.
+CV_EXPORTS void histRange(const GpuMat& src, GpuMat hist[4], const GpuMat levels[4], Stream& stream = Stream::Null());
+CV_EXPORTS void histRange(const GpuMat& src, GpuMat hist[4], const GpuMat levels[4], GpuMat& buf, Stream& stream = Stream::Null());
+
+//! Calculates histogram for 8u one channel image
+//! Output hist will have one row, 256 cols and CV32SC1 type.
+CV_EXPORTS void calcHist(const GpuMat& src, GpuMat& hist, Stream& stream = Stream::Null());
+CV_EXPORTS void calcHist(const GpuMat& src, GpuMat& hist, GpuMat& buf, Stream& stream = Stream::Null());
+
+//! normalizes the grayscale image brightness and contrast by normalizing its histogram
+CV_EXPORTS void equalizeHist(const GpuMat& src, GpuMat& dst, Stream& stream = Stream::Null());
+CV_EXPORTS void equalizeHist(const GpuMat& src, GpuMat& dst, GpuMat& hist, Stream& stream = Stream::Null());
+CV_EXPORTS void equalizeHist(const GpuMat& src, GpuMat& dst, GpuMat& hist, GpuMat& buf, Stream& stream = Stream::Null());
+
+class CV_EXPORTS CLAHE : public cv::CLAHE
+{
+public:
+ using cv::CLAHE::apply;
+ virtual void apply(InputArray src, OutputArray dst, Stream& stream) = 0;
+};
+CV_EXPORTS Ptr<cv::gpu::CLAHE> createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8));
+
+//////////////////////////////// StereoBM_GPU ////////////////////////////////
+
+class CV_EXPORTS StereoBM_GPU
+{
+public:
+ enum { BASIC_PRESET = 0, PREFILTER_XSOBEL = 1 };
+
+ enum { DEFAULT_NDISP = 64, DEFAULT_WINSZ = 19 };
+
+ //! the default constructor
+ StereoBM_GPU();
+ //! the full constructor taking the camera-specific preset, number of disparities and the SAD window size. ndisparities must be multiple of 8.
+ StereoBM_GPU(int preset, int ndisparities = DEFAULT_NDISP, int winSize = DEFAULT_WINSZ);
+
+ //! the stereo correspondence operator. Finds the disparity for the specified rectified stereo pair
+ //! Output disparity has CV_8U type.
+ void operator()(const GpuMat& left, const GpuMat& right, GpuMat& disparity, Stream& stream = Stream::Null());
+
+ //! Some heuristics that tries to estmate
+ // if current GPU will be faster than CPU in this algorithm.
+ // It queries current active device.
+ static bool checkIfGpuCallReasonable();
+
+ int preset;
+ int ndisp;
+ int winSize;
+
+ // If avergeTexThreshold == 0 => post procesing is disabled
+ // If avergeTexThreshold != 0 then disparity is set 0 in each point (x,y) where for left image
+ // SumOfHorizontalGradiensInWindow(x, y, winSize) < (winSize * winSize) * avergeTexThreshold
+ // i.e. input left image is low textured.
+ float avergeTexThreshold;
+
+private:
+ GpuMat minSSD, leBuf, riBuf;
+};
+
+////////////////////////// StereoBeliefPropagation ///////////////////////////
+// "Efficient Belief Propagation for Early Vision"
+// P.Felzenszwalb
+
+class CV_EXPORTS StereoBeliefPropagation
+{
+public:
+ enum { DEFAULT_NDISP = 64 };
+ enum { DEFAULT_ITERS = 5 };
+ enum { DEFAULT_LEVELS = 5 };
+
+ static void estimateRecommendedParams(int width, int height, int& ndisp, int& iters, int& levels);
+
+ //! the default constructor
+ explicit StereoBeliefPropagation(int ndisp = DEFAULT_NDISP,
+ int iters = DEFAULT_ITERS,
+ int levels = DEFAULT_LEVELS,
+ int msg_type = CV_32F);
+
+ //! the full constructor taking the number of disparities, number of BP iterations on each level,
+ //! number of levels, truncation of data cost, data weight,
+ //! truncation of discontinuity cost and discontinuity single jump
+ //! DataTerm = data_weight * min(fabs(I2-I1), max_data_term)
+ //! DiscTerm = min(disc_single_jump * fabs(f1-f2), max_disc_term)
+ //! please see paper for more details
+ StereoBeliefPropagation(int ndisp, int iters, int levels,
+ float max_data_term, float data_weight,
+ float max_disc_term, float disc_single_jump,
+ int msg_type = CV_32F);
+
+ //! the stereo correspondence operator. Finds the disparity for the specified rectified stereo pair,
+ //! if disparity is empty output type will be CV_16S else output type will be disparity.type().
+ void operator()(const GpuMat& left, const GpuMat& right, GpuMat& disparity, Stream& stream = Stream::Null());
+
+
+ //! version for user specified data term
+ void operator()(const GpuMat& data, GpuMat& disparity, Stream& stream = Stream::Null());
+
+ int ndisp;
+
+ int iters;
+ int levels;
+
+ float max_data_term;
+ float data_weight;
+ float max_disc_term;
+ float disc_single_jump;
+
+ int msg_type;
+private:
+ GpuMat u, d, l, r, u2, d2, l2, r2;
+ std::vector<GpuMat> datas;
+ GpuMat out;
+};
+
+/////////////////////////// StereoConstantSpaceBP ///////////////////////////
+// "A Constant-Space Belief Propagation Algorithm for Stereo Matching"
+// Qingxiong Yang, Liang Wang, Narendra Ahuja
+// http://vision.ai.uiuc.edu/~qyang6/
+
+class CV_EXPORTS StereoConstantSpaceBP
+{
+public:
+ enum { DEFAULT_NDISP = 128 };
+ enum { DEFAULT_ITERS = 8 };
+ enum { DEFAULT_LEVELS = 4 };
+ enum { DEFAULT_NR_PLANE = 4 };
+
+ static void estimateRecommendedParams(int width, int height, int& ndisp, int& iters, int& levels, int& nr_plane);
+
+ //! the default constructor
+ explicit StereoConstantSpaceBP(int ndisp = DEFAULT_NDISP,
+ int iters = DEFAULT_ITERS,
+ int levels = DEFAULT_LEVELS,
+ int nr_plane = DEFAULT_NR_PLANE,
+ int msg_type = CV_32F);
+
+ //! the full constructor taking the number of disparities, number of BP iterations on each level,
+ //! number of levels, number of active disparity on the first level, truncation of data cost, data weight,
+ //! truncation of discontinuity cost, discontinuity single jump and minimum disparity threshold
+ StereoConstantSpaceBP(int ndisp, int iters, int levels, int nr_plane,
+ float max_data_term, float data_weight, float max_disc_term, float disc_single_jump,
+ int min_disp_th = 0,
+ int msg_type = CV_32F);
+
+ //! the stereo correspondence operator. Finds the disparity for the specified rectified stereo pair,
+ //! if disparity is empty output type will be CV_16S else output type will be disparity.type().
+ void operator()(const GpuMat& left, const GpuMat& right, GpuMat& disparity, Stream& stream = Stream::Null());
+
+ int ndisp;
+
+ int iters;
+ int levels;
+
+ int nr_plane;
+
+ float max_data_term;
+ float data_weight;
+ float max_disc_term;
+ float disc_single_jump;
+
+ int min_disp_th;
+
+ int msg_type;
+
+ bool use_local_init_data_cost;
+private:
+ GpuMat messages_buffers;
+
+ GpuMat temp;
+ GpuMat out;
+};
+
+/////////////////////////// DisparityBilateralFilter ///////////////////////////
+// Disparity map refinement using joint bilateral filtering given a single color image.
+// Qingxiong Yang, Liang Wang, Narendra Ahuja
+// http://vision.ai.uiuc.edu/~qyang6/
+
+class CV_EXPORTS DisparityBilateralFilter
+{
+public:
+ enum { DEFAULT_NDISP = 64 };
+ enum { DEFAULT_RADIUS = 3 };
+ enum { DEFAULT_ITERS = 1 };
+
+ //! the default constructor
+ explicit DisparityBilateralFilter(int ndisp = DEFAULT_NDISP, int radius = DEFAULT_RADIUS, int iters = DEFAULT_ITERS);
+
+ //! the full constructor taking the number of disparities, filter radius,
+ //! number of iterations, truncation of data continuity, truncation of disparity continuity
+ //! and filter range sigma
+ DisparityBilateralFilter(int ndisp, int radius, int iters, float edge_threshold, float max_disc_threshold, float sigma_range);
+
+ //! the disparity map refinement operator. Refine disparity map using joint bilateral filtering given a single color image.
+ //! disparity must have CV_8U or CV_16S type, image must have CV_8UC1 or CV_8UC3 type.
+ void operator()(const GpuMat& disparity, const GpuMat& image, GpuMat& dst, Stream& stream = Stream::Null());
+
+private:
+ int ndisp;
+ int radius;
+ int iters;
+
+ float edge_threshold;
+ float max_disc_threshold;
+ float sigma_range;
+
+ GpuMat table_color;
+ GpuMat table_space;
+};
+
+
+//////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector //////////////
+struct CV_EXPORTS HOGConfidence
+{
+ double scale;
+ vector<Point> locations;
+ vector<double> confidences;
+ vector<double> part_scores[4];
+};
+
+struct CV_EXPORTS HOGDescriptor
+{
+ enum { DEFAULT_WIN_SIGMA = -1 };
+ enum { DEFAULT_NLEVELS = 64 };
+ enum { DESCR_FORMAT_ROW_BY_ROW, DESCR_FORMAT_COL_BY_COL };
+
+ HOGDescriptor(Size win_size=Size(64, 128), Size block_size=Size(16, 16),
+ Size block_stride=Size(8, 8), Size cell_size=Size(8, 8),
+ int nbins=9, double win_sigma=DEFAULT_WIN_SIGMA,
+ double threshold_L2hys=0.2, bool gamma_correction=true,
+ int nlevels=DEFAULT_NLEVELS);
+
+ size_t getDescriptorSize() const;
+ size_t getBlockHistogramSize() const;
+
+ void setSVMDetector(const vector<float>& detector);
+
+ static vector<float> getDefaultPeopleDetector();
+ static vector<float> getPeopleDetector48x96();
+ static vector<float> getPeopleDetector64x128();
+
+ void detect(const GpuMat& img, vector<Point>& found_locations,
+ double hit_threshold=0, Size win_stride=Size(),
+ Size padding=Size());
+
+ void detectMultiScale(const GpuMat& img, vector<Rect>& found_locations,
+ double hit_threshold=0, Size win_stride=Size(),
+ Size padding=Size(), double scale0=1.05,
+ int group_threshold=2);
+
+ void computeConfidence(const GpuMat& img, vector<Point>& hits, double hit_threshold,
+ Size win_stride, Size padding, vector<Point>& locations, vector<double>& confidences);
+
+ void computeConfidenceMultiScale(const GpuMat& img, vector<Rect>& found_locations,
+ double hit_threshold, Size win_stride, Size padding,
+ vector<HOGConfidence> &conf_out, int group_threshold);
+
+ void getDescriptors(const GpuMat& img, Size win_stride,
+ GpuMat& descriptors,
+ int descr_format=DESCR_FORMAT_COL_BY_COL);
+
+ Size win_size;
+ Size block_size;
+ Size block_stride;
+ Size cell_size;
+ int nbins;
+ double win_sigma;
+ double threshold_L2hys;
+ bool gamma_correction;
+ int nlevels;
+
+protected:
+ void computeBlockHistograms(const GpuMat& img);
+ void computeGradient(const GpuMat& img, GpuMat& grad, GpuMat& qangle);
+
+ double getWinSigma() const;
+ bool checkDetectorSize() const;
+
+ static int numPartsWithin(int size, int part_size, int stride);
+ static Size numPartsWithin(Size size, Size part_size, Size stride);
+
+ // Coefficients of the separating plane
+ float free_coef;
+ GpuMat detector;
+
+ // Results of the last classification step
+ GpuMat labels, labels_buf;
+ Mat labels_host;
+
+ // Results of the last histogram evaluation step
+ GpuMat block_hists, block_hists_buf;
+
+ // Gradients conputation results
+ GpuMat grad, qangle, grad_buf, qangle_buf;
+
+ // returns subbuffer with required size, reallocates buffer if nessesary.
+ static GpuMat getBuffer(const Size& sz, int type, GpuMat& buf);
+ static GpuMat getBuffer(int rows, int cols, int type, GpuMat& buf);
+
+ std::vector<GpuMat> image_scales;
+};
+
+
+////////////////////////////////// BruteForceMatcher //////////////////////////////////
+
+class CV_EXPORTS BruteForceMatcher_GPU_base
+{
+public:
+ enum DistType {L1Dist = 0, L2Dist, HammingDist};
+
+ explicit BruteForceMatcher_GPU_base(DistType distType = L2Dist);
+
+ // Add descriptors to train descriptor collection
+ void add(const std::vector<GpuMat>& descCollection);
+
+ // Get train descriptors collection
+ const std::vector<GpuMat>& getTrainDescriptors() const;
+
+ // Clear train descriptors collection
+ void clear();
+
+ // Return true if there are not train descriptors in collection
+ bool empty() const;
+
+ // Return true if the matcher supports mask in match methods
+ bool isMaskSupported() const;
+
+ // Find one best match for each query descriptor
+ void matchSingle(const GpuMat& query, const GpuMat& train,
+ GpuMat& trainIdx, GpuMat& distance,
+ const GpuMat& mask = GpuMat(), Stream& stream = Stream::Null());
+
+ // Download trainIdx and distance and convert it to CPU vector with DMatch
+ static void matchDownload(const GpuMat& trainIdx, const GpuMat& distance, std::vector<DMatch>& matches);
+ // Convert trainIdx and distance to vector with DMatch
+ static void matchConvert(const Mat& trainIdx, const Mat& distance, std::vector<DMatch>& matches);
+
+ // Find one best match for each query descriptor
+ void match(const GpuMat& query, const GpuMat& train, std::vector<DMatch>& matches, const GpuMat& mask = GpuMat());
+
+ // Make gpu collection of trains and masks in suitable format for matchCollection function
+ void makeGpuCollection(GpuMat& trainCollection, GpuMat& maskCollection, const std::vector<GpuMat>& masks = std::vector<GpuMat>());
+
+ // Find one best match from train collection for each query descriptor
+ void matchCollection(const GpuMat& query, const GpuMat& trainCollection,
+ GpuMat& trainIdx, GpuMat& imgIdx, GpuMat& distance,
+ const GpuMat& masks = GpuMat(), Stream& stream = Stream::Null());
+
+ // Download trainIdx, imgIdx and distance and convert it to vector with DMatch
+ static void matchDownload(const GpuMat& trainIdx, const GpuMat& imgIdx, const GpuMat& distance, std::vector<DMatch>& matches);
+ // Convert trainIdx, imgIdx and distance to vector with DMatch
+ static void matchConvert(const Mat& trainIdx, const Mat& imgIdx, const Mat& distance, std::vector<DMatch>& matches);
+
+ // Find one best match from train collection for each query descriptor.
+ void match(const GpuMat& query, std::vector<DMatch>& matches, const std::vector<GpuMat>& masks = std::vector<GpuMat>());
+
+ // Find k best matches for each query descriptor (in increasing order of distances)
+ void knnMatchSingle(const GpuMat& query, const GpuMat& train,
+ GpuMat& trainIdx, GpuMat& distance, GpuMat& allDist, int k,
+ const GpuMat& mask = GpuMat(), Stream& stream = Stream::Null());
+
+ // Download trainIdx and distance and convert it to vector with DMatch
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void knnMatchDownload(const GpuMat& trainIdx, const GpuMat& distance,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+ // Convert trainIdx and distance to vector with DMatch
+ static void knnMatchConvert(const Mat& trainIdx, const Mat& distance,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+
+ // Find k best matches for each query descriptor (in increasing order of distances).
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ void knnMatch(const GpuMat& query, const GpuMat& train,
+ std::vector< std::vector<DMatch> >& matches, int k, const GpuMat& mask = GpuMat(),
+ bool compactResult = false);
+
+ // Find k best matches from train collection for each query descriptor (in increasing order of distances)
+ void knnMatch2Collection(const GpuMat& query, const GpuMat& trainCollection,
+ GpuMat& trainIdx, GpuMat& imgIdx, GpuMat& distance,
+ const GpuMat& maskCollection = GpuMat(), Stream& stream = Stream::Null());
+
+ // Download trainIdx and distance and convert it to vector with DMatch
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void knnMatch2Download(const GpuMat& trainIdx, const GpuMat& imgIdx, const GpuMat& distance,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+ // Convert trainIdx and distance to vector with DMatch
+ static void knnMatch2Convert(const Mat& trainIdx, const Mat& imgIdx, const Mat& distance,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+
+ // Find k best matches for each query descriptor (in increasing order of distances).
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ void knnMatch(const GpuMat& query, std::vector< std::vector<DMatch> >& matches, int k,
+ const std::vector<GpuMat>& masks = std::vector<GpuMat>(), bool compactResult = false);
+
+ // Find best matches for each query descriptor which have distance less than maxDistance.
+ // nMatches.at<int>(0, queryIdx) will contain matches count for queryIdx.
+ // carefully nMatches can be greater than trainIdx.cols - it means that matcher didn't find all matches,
+ // because it didn't have enough memory.
+ // If trainIdx is empty, then trainIdx and distance will be created with size nQuery x max((nTrain / 100), 10),
+ // otherwize user can pass own allocated trainIdx and distance with size nQuery x nMaxMatches
+ // Matches doesn't sorted.
+ void radiusMatchSingle(const GpuMat& query, const GpuMat& train,
+ GpuMat& trainIdx, GpuMat& distance, GpuMat& nMatches, float maxDistance,
+ const GpuMat& mask = GpuMat(), Stream& stream = Stream::Null());
+
+ // Download trainIdx, nMatches and distance and convert it to vector with DMatch.
+ // matches will be sorted in increasing order of distances.
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void radiusMatchDownload(const GpuMat& trainIdx, const GpuMat& distance, const GpuMat& nMatches,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+ // Convert trainIdx, nMatches and distance to vector with DMatch.
+ static void radiusMatchConvert(const Mat& trainIdx, const Mat& distance, const Mat& nMatches,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+
+ // Find best matches for each query descriptor which have distance less than maxDistance
+ // in increasing order of distances).
+ void radiusMatch(const GpuMat& query, const GpuMat& train,
+ std::vector< std::vector<DMatch> >& matches, float maxDistance,
+ const GpuMat& mask = GpuMat(), bool compactResult = false);
+
+ // Find best matches for each query descriptor which have distance less than maxDistance.
+ // If trainIdx is empty, then trainIdx and distance will be created with size nQuery x max((nQuery / 100), 10),
+ // otherwize user can pass own allocated trainIdx and distance with size nQuery x nMaxMatches
+ // Matches doesn't sorted.
+ void radiusMatchCollection(const GpuMat& query, GpuMat& trainIdx, GpuMat& imgIdx, GpuMat& distance, GpuMat& nMatches, float maxDistance,
+ const std::vector<GpuMat>& masks = std::vector<GpuMat>(), Stream& stream = Stream::Null());
+
+ // Download trainIdx, imgIdx, nMatches and distance and convert it to vector with DMatch.
+ // matches will be sorted in increasing order of distances.
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void radiusMatchDownload(const GpuMat& trainIdx, const GpuMat& imgIdx, const GpuMat& distance, const GpuMat& nMatches,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+ // Convert trainIdx, nMatches and distance to vector with DMatch.
+ static void radiusMatchConvert(const Mat& trainIdx, const Mat& imgIdx, const Mat& distance, const Mat& nMatches,
+ std::vector< std::vector<DMatch> >& matches, bool compactResult = false);
+
+ // Find best matches from train collection for each query descriptor which have distance less than
+ // maxDistance (in increasing order of distances).
+ void radiusMatch(const GpuMat& query, std::vector< std::vector<DMatch> >& matches, float maxDistance,
+ const std::vector<GpuMat>& masks = std::vector<GpuMat>(), bool compactResult = false);
+
+ DistType distType;
+
+private:
+ std::vector<GpuMat> trainDescCollection;
+};
+
+template <class Distance>
+class CV_EXPORTS BruteForceMatcher_GPU;
+
+template <typename T>
+class CV_EXPORTS BruteForceMatcher_GPU< L1<T> > : public BruteForceMatcher_GPU_base
+{
+public:
+ explicit BruteForceMatcher_GPU() : BruteForceMatcher_GPU_base(L1Dist) {}
+ explicit BruteForceMatcher_GPU(L1<T> /*d*/) : BruteForceMatcher_GPU_base(L1Dist) {}
+};
+template <typename T>
+class CV_EXPORTS BruteForceMatcher_GPU< L2<T> > : public BruteForceMatcher_GPU_base
+{
+public:
+ explicit BruteForceMatcher_GPU() : BruteForceMatcher_GPU_base(L2Dist) {}
+ explicit BruteForceMatcher_GPU(L2<T> /*d*/) : BruteForceMatcher_GPU_base(L2Dist) {}
+};
+template <> class CV_EXPORTS BruteForceMatcher_GPU< Hamming > : public BruteForceMatcher_GPU_base
+{
+public:
+ explicit BruteForceMatcher_GPU() : BruteForceMatcher_GPU_base(HammingDist) {}
+ explicit BruteForceMatcher_GPU(Hamming /*d*/) : BruteForceMatcher_GPU_base(HammingDist) {}
+};
+
+class CV_EXPORTS BFMatcher_GPU : public BruteForceMatcher_GPU_base
+{
+public:
+ explicit BFMatcher_GPU(int norm = NORM_L2) : BruteForceMatcher_GPU_base(norm == NORM_L1 ? L1Dist : norm == NORM_L2 ? L2Dist : HammingDist) {}
+};
+
+////////////////////////////////// CascadeClassifier_GPU //////////////////////////////////////////
+// The cascade classifier class for object detection: supports old haar and new lbp xlm formats and nvbin for haar cascades olny.
+class CV_EXPORTS CascadeClassifier_GPU
+{
+public:
+ CascadeClassifier_GPU();
+ CascadeClassifier_GPU(const std::string& filename);
+ ~CascadeClassifier_GPU();
+
+ bool empty() const;
+ bool load(const std::string& filename);
+ void release();
+
+ /* returns number of detected objects */
+ int detectMultiScale(const GpuMat& image, GpuMat& objectsBuf, double scaleFactor = 1.2, int minNeighbors = 4, Size minSize = Size());
+ int detectMultiScale(const GpuMat& image, GpuMat& objectsBuf, Size maxObjectSize, Size minSize = Size(), double scaleFactor = 1.1, int minNeighbors = 4);
+
+ bool findLargestObject;
+ bool visualizeInPlace;
+
+ Size getClassifierSize() const;
+
+private:
+ struct CascadeClassifierImpl;
+ CascadeClassifierImpl* impl;
+ struct HaarCascade;
+ struct LbpCascade;
+ friend class CascadeClassifier_GPU_LBP;
+};
+
+////////////////////////////////// FAST //////////////////////////////////////////
+
+class CV_EXPORTS FAST_GPU
+{
+public:
+ enum
+ {
+ LOCATION_ROW = 0,
+ RESPONSE_ROW,
+ ROWS_COUNT
+ };
+
+ // all features have same size
+ static const int FEATURE_SIZE = 7;
+
+ explicit FAST_GPU(int threshold, bool nonmaxSuppression = true, double keypointsRatio = 0.05);
+
+ //! finds the keypoints using FAST detector
+ //! supports only CV_8UC1 images
+ void operator ()(const GpuMat& image, const GpuMat& mask, GpuMat& keypoints);
+ void operator ()(const GpuMat& image, const GpuMat& mask, std::vector<KeyPoint>& keypoints);
+
+ //! download keypoints from device to host memory
+ void downloadKeypoints(const GpuMat& d_keypoints, std::vector<KeyPoint>& keypoints);
+
+ //! convert keypoints to KeyPoint vector
+ void convertKeypoints(const Mat& h_keypoints, std::vector<KeyPoint>& keypoints);
+
+ //! release temporary buffer's memory
+ void release();
+
+ bool nonmaxSuppression;
+
+ int threshold;
+
+ //! max keypoints = keypointsRatio * img.size().area()
+ double keypointsRatio;
+
+ //! find keypoints and compute it's response if nonmaxSuppression is true
+ //! return count of detected keypoints
+ int calcKeyPointsLocation(const GpuMat& image, const GpuMat& mask);
+
+ //! get final array of keypoints
+ //! performs nonmax suppression if needed
+ //! return final count of keypoints
+ int getKeyPoints(GpuMat& keypoints);
+
+private:
+ GpuMat kpLoc_;
+ int count_;
+
+ GpuMat score_;
+
+ GpuMat d_keypoints_;
+};
+
+////////////////////////////////// ORB //////////////////////////////////////////
+
+class CV_EXPORTS ORB_GPU
+{
+public:
+ enum
+ {
+ X_ROW = 0,
+ Y_ROW,
+ RESPONSE_ROW,
+ ANGLE_ROW,
+ OCTAVE_ROW,
+ SIZE_ROW,
+ ROWS_COUNT
+ };
+
+ enum
+ {
+ DEFAULT_FAST_THRESHOLD = 20
+ };
+
+ //! Constructor
+ explicit ORB_GPU(int nFeatures = 500, float scaleFactor = 1.2f, int nLevels = 8, int edgeThreshold = 31,
+ int firstLevel = 0, int WTA_K = 2, int scoreType = 0, int patchSize = 31);
+
+ //! Compute the ORB features on an image
+ //! image - the image to compute the features (supports only CV_8UC1 images)
+ //! mask - the mask to apply
+ //! keypoints - the resulting keypoints
+ void operator()(const GpuMat& image, const GpuMat& mask, std::vector<KeyPoint>& keypoints);
+ void operator()(const GpuMat& image, const GpuMat& mask, GpuMat& keypoints);
+
+ //! Compute the ORB features and descriptors on an image
+ //! image - the image to compute the features (supports only CV_8UC1 images)
+ //! mask - the mask to apply
+ //! keypoints - the resulting keypoints
+ //! descriptors - descriptors array
+ void operator()(const GpuMat& image, const GpuMat& mask, std::vector<KeyPoint>& keypoints, GpuMat& descriptors);
+ void operator()(const GpuMat& image, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors);
+
+ //! download keypoints from device to host memory
+ void downloadKeyPoints(GpuMat& d_keypoints, std::vector<KeyPoint>& keypoints);
+
+ //! convert keypoints to KeyPoint vector
+ void convertKeyPoints(Mat& d_keypoints, std::vector<KeyPoint>& keypoints);
+
+ //! returns the descriptor size in bytes
+ inline int descriptorSize() const { return kBytes; }
+
+ inline void setFastParams(int threshold, bool nonmaxSuppression = true)
+ {
+ fastDetector_.threshold = threshold;
+ fastDetector_.nonmaxSuppression = nonmaxSuppression;
+ }
+
+ //! release temporary buffer's memory
+ void release();
+
+ //! if true, image will be blurred before descriptors calculation
+ bool blurForDescriptor;
+
+private:
+ enum { kBytes = 32 };
+
+ void buildScalePyramids(const GpuMat& image, const GpuMat& mask);
+
+ void computeKeyPointsPyramid();
+
+ void computeDescriptors(GpuMat& descriptors);
+
+ void mergeKeyPoints(GpuMat& keypoints);
+
+ int nFeatures_;
+ float scaleFactor_;
+ int nLevels_;
+ int edgeThreshold_;
+ int firstLevel_;
+ int WTA_K_;
+ int scoreType_;
+ int patchSize_;
+
+ // The number of desired features per scale
+ std::vector<size_t> n_features_per_level_;
+
+ // Points to compute BRIEF descriptors from
+ GpuMat pattern_;
+
+ std::vector<GpuMat> imagePyr_;
+ std::vector<GpuMat> maskPyr_;
+
+ GpuMat buf_;
+
+ std::vector<GpuMat> keyPointsPyr_;
+ std::vector<int> keyPointsCount_;
+
+ FAST_GPU fastDetector_;
+
+ Ptr<FilterEngine_GPU> blurFilter;
+
+ GpuMat d_keypoints_;
+};
+
+////////////////////////////////// Optical Flow //////////////////////////////////////////
+
+class CV_EXPORTS BroxOpticalFlow
+{
+public:
+ BroxOpticalFlow(float alpha_, float gamma_, float scale_factor_, int inner_iterations_, int outer_iterations_, int solver_iterations_) :
+ alpha(alpha_), gamma(gamma_), scale_factor(scale_factor_),
+ inner_iterations(inner_iterations_), outer_iterations(outer_iterations_), solver_iterations(solver_iterations_)
+ {
+ }
+
+ //! Compute optical flow
+ //! frame0 - source frame (supports only CV_32FC1 type)
+ //! frame1 - frame to track (with the same size and type as frame0)
+ //! u - flow horizontal component (along x axis)
+ //! v - flow vertical component (along y axis)
+ void operator ()(const GpuMat& frame0, const GpuMat& frame1, GpuMat& u, GpuMat& v, Stream& stream = Stream::Null());
+
+ //! flow smoothness
+ float alpha;
+
+ //! gradient constancy importance
+ float gamma;
+
+ //! pyramid scale factor
+ float scale_factor;
+
+ //! number of lagged non-linearity iterations (inner loop)
+ int inner_iterations;
+
+ //! number of warping iterations (number of pyramid levels)
+ int outer_iterations;
+
+ //! number of linear system solver iterations
+ int solver_iterations;
+
+ GpuMat buf;
+};
+
+class CV_EXPORTS GoodFeaturesToTrackDetector_GPU
+{
+public:
+ explicit GoodFeaturesToTrackDetector_GPU(int maxCorners = 1000, double qualityLevel = 0.01, double minDistance = 0.0,
+ int blockSize = 3, bool useHarrisDetector = false, double harrisK = 0.04);
+
+ //! return 1 rows matrix with CV_32FC2 type
+ void operator ()(const GpuMat& image, GpuMat& corners, const GpuMat& mask = GpuMat());
+
+ int maxCorners;
+ double qualityLevel;
+ double minDistance;
+
+ int blockSize;
+ bool useHarrisDetector;
+ double harrisK;
+
+ void releaseMemory()
+ {
+ Dx_.release();
+ Dy_.release();
+ buf_.release();
+ eig_.release();
+ minMaxbuf_.release();
+ tmpCorners_.release();
+ }
+
+private:
+ GpuMat Dx_;
+ GpuMat Dy_;
+ GpuMat buf_;
+ GpuMat eig_;
+ GpuMat minMaxbuf_;
+ GpuMat tmpCorners_;
+};
+
+inline GoodFeaturesToTrackDetector_GPU::GoodFeaturesToTrackDetector_GPU(int maxCorners_, double qualityLevel_, double minDistance_,
+ int blockSize_, bool useHarrisDetector_, double harrisK_)
+{
+ maxCorners = maxCorners_;
+ qualityLevel = qualityLevel_;
+ minDistance = minDistance_;
+ blockSize = blockSize_;
+ useHarrisDetector = useHarrisDetector_;
+ harrisK = harrisK_;
+}
+
+
+class CV_EXPORTS PyrLKOpticalFlow
+{
+public:
+ PyrLKOpticalFlow();
+
+ void sparse(const GpuMat& prevImg, const GpuMat& nextImg, const GpuMat& prevPts, GpuMat& nextPts,
+ GpuMat& status, GpuMat* err = 0);
+
+ void dense(const GpuMat& prevImg, const GpuMat& nextImg, GpuMat& u, GpuMat& v, GpuMat* err = 0);
+
+ void releaseMemory();
+
+ Size winSize;
+ int maxLevel;
+ int iters;
+ double derivLambda; //unused
+ bool useInitialFlow;
+ float minEigThreshold; //unused
+ bool getMinEigenVals; //unused
+
+private:
+ GpuMat uPyr_[2];
+ vector<GpuMat> prevPyr_;
+ vector<GpuMat> nextPyr_;
+ GpuMat vPyr_[2];
+ vector<GpuMat> buf_;
+ vector<GpuMat> unused;
+ bool isDeviceArch11_;
+};
+
+
+class CV_EXPORTS FarnebackOpticalFlow
+{
+public:
+ FarnebackOpticalFlow()
+ {
+ numLevels = 5;
+ pyrScale = 0.5;
+ fastPyramids = false;
+ winSize = 13;
+ numIters = 10;
+ polyN = 5;
+ polySigma = 1.1;
+ flags = 0;
+ isDeviceArch11_ = !DeviceInfo().supports(FEATURE_SET_COMPUTE_12);
+ }
+
+ int numLevels;
+ double pyrScale;
+ bool fastPyramids;
+ int winSize;
+ int numIters;
+ int polyN;
+ double polySigma;
+ int flags;
+
+ void operator ()(const GpuMat &frame0, const GpuMat &frame1, GpuMat &flowx, GpuMat &flowy, Stream &s = Stream::Null());
+
+ void releaseMemory()
+ {
+ frames_[0].release();
+ frames_[1].release();
+ pyrLevel_[0].release();
+ pyrLevel_[1].release();
+ M_.release();
+ bufM_.release();
+ R_[0].release();
+ R_[1].release();
+ blurredFrame_[0].release();
+ blurredFrame_[1].release();
+ pyramid0_.clear();
+ pyramid1_.clear();
+ }
+
+private:
+ void prepareGaussian(
+ int n, double sigma, float *g, float *xg, float *xxg,
+ double &ig11, double &ig03, double &ig33, double &ig55);
+
+ void setPolynomialExpansionConsts(int n, double sigma);
+
+ void updateFlow_boxFilter(
+ const GpuMat& R0, const GpuMat& R1, GpuMat& flowx, GpuMat &flowy,
+ GpuMat& M, GpuMat &bufM, int blockSize, bool updateMatrices, Stream streams[]);
+
+ void updateFlow_gaussianBlur(
+ const GpuMat& R0, const GpuMat& R1, GpuMat& flowx, GpuMat& flowy,
+ GpuMat& M, GpuMat &bufM, int blockSize, bool updateMatrices, Stream streams[]);
+
+ GpuMat frames_[2];
+ GpuMat pyrLevel_[2], M_, bufM_, R_[2], blurredFrame_[2];
+ std::vector<GpuMat> pyramid0_, pyramid1_;
+
+ bool isDeviceArch11_;
+};
+
+
+// Implementation of the Zach, Pock and Bischof Dual TV-L1 Optical Flow method
+//
+// see reference:
+// [1] C. Zach, T. Pock and H. Bischof, "A Duality Based Approach for Realtime TV-L1 Optical Flow".
+// [2] Javier Sanchez, Enric Meinhardt-Llopis and Gabriele Facciolo. "TV-L1 Optical Flow Estimation".
+class CV_EXPORTS OpticalFlowDual_TVL1_GPU
+{
+public:
+ OpticalFlowDual_TVL1_GPU();
+
+ void operator ()(const GpuMat& I0, const GpuMat& I1, GpuMat& flowx, GpuMat& flowy);
+
+ void collectGarbage();
+
+ /**
+ * Time step of the numerical scheme.
+ */
+ double tau;
+
+ /**
+ * Weight parameter for the data term, attachment parameter.
+ * This is the most relevant parameter, which determines the smoothness of the output.
+ * The smaller this parameter is, the smoother the solutions we obtain.
+ * It depends on the range of motions of the images, so its value should be adapted to each image sequence.
+ */
+ double lambda;
+
+ /**
+ * Weight parameter for (u - v)^2, tightness parameter.
+ * It serves as a link between the attachment and the regularization terms.
+ * In theory, it should have a small value in order to maintain both parts in correspondence.
+ * The method is stable for a large range of values of this parameter.
+ */
+ double theta;
+
+ /**
+ * Number of scales used to create the pyramid of images.
+ */
+ int nscales;
+
+ /**
+ * Number of warpings per scale.
+ * Represents the number of times that I1(x+u0) and grad( I1(x+u0) ) are computed per scale.
+ * This is a parameter that assures the stability of the method.
+ * It also affects the running time, so it is a compromise between speed and accuracy.
+ */
+ int warps;
+
+ /**
+ * Stopping criterion threshold used in the numerical scheme, which is a trade-off between precision and running time.
+ * A small value will yield more accurate solutions at the expense of a slower convergence.
+ */
+ double epsilon;
+
+ /**
+ * Stopping criterion iterations number used in the numerical scheme.
+ */
+ int iterations;
+
+ bool useInitialFlow;
+
+private:
+ void procOneScale(const GpuMat& I0, const GpuMat& I1, GpuMat& u1, GpuMat& u2);
+
+ std::vector<GpuMat> I0s;
+ std::vector<GpuMat> I1s;
+ std::vector<GpuMat> u1s;
+ std::vector<GpuMat> u2s;
+
+ GpuMat I1x_buf;
+ GpuMat I1y_buf;
+
+ GpuMat I1w_buf;
+ GpuMat I1wx_buf;
+ GpuMat I1wy_buf;
+
+ GpuMat grad_buf;
+ GpuMat rho_c_buf;
+
+ GpuMat p11_buf;
+ GpuMat p12_buf;
+ GpuMat p21_buf;
+ GpuMat p22_buf;
+
+ GpuMat diff_buf;
+ GpuMat norm_buf;
+};
+
+
+//! Calculates optical flow for 2 images using block matching algorithm */
+CV_EXPORTS void calcOpticalFlowBM(const GpuMat& prev, const GpuMat& curr,
+ Size block_size, Size shift_size, Size max_range, bool use_previous,
+ GpuMat& velx, GpuMat& vely, GpuMat& buf,
+ Stream& stream = Stream::Null());
+
+class CV_EXPORTS FastOpticalFlowBM
+{
+public:
+ void operator ()(const GpuMat& I0, const GpuMat& I1, GpuMat& flowx, GpuMat& flowy, int search_window = 21, int block_window = 7, Stream& s = Stream::Null());
+
+private:
+ GpuMat buffer;
+ GpuMat extended_I0;
+ GpuMat extended_I1;
+};
+
+
+//! Interpolate frames (images) using provided optical flow (displacement field).
+//! frame0 - frame 0 (32-bit floating point images, single channel)
+//! frame1 - frame 1 (the same type and size)
+//! fu - forward horizontal displacement
+//! fv - forward vertical displacement
+//! bu - backward horizontal displacement
+//! bv - backward vertical displacement
+//! pos - new frame position
+//! newFrame - new frame
+//! buf - temporary buffer, will have width x 6*height size, CV_32FC1 type and contain 6 GpuMat;
+//! occlusion masks 0, occlusion masks 1,
+//! interpolated forward flow 0, interpolated forward flow 1,
+//! interpolated backward flow 0, interpolated backward flow 1
+//!
+CV_EXPORTS void interpolateFrames(const GpuMat& frame0, const GpuMat& frame1,
+ const GpuMat& fu, const GpuMat& fv,
+ const GpuMat& bu, const GpuMat& bv,
+ float pos, GpuMat& newFrame, GpuMat& buf,
+ Stream& stream = Stream::Null());
+
+CV_EXPORTS void createOpticalFlowNeedleMap(const GpuMat& u, const GpuMat& v, GpuMat& vertex, GpuMat& colors);
+
+
+//////////////////////// Background/foreground segmentation ////////////////////////
+
+// Foreground Object Detection from Videos Containing Complex Background.
+// Liyuan Li, Weimin Huang, Irene Y.H. Gu, and Qi Tian.
+// ACM MM2003 9p
+class CV_EXPORTS FGDStatModel
+{
+public:
+ struct CV_EXPORTS Params
+ {
+ int Lc; // Quantized levels per 'color' component. Power of two, typically 32, 64 or 128.
+ int N1c; // Number of color vectors used to model normal background color variation at a given pixel.
+ int N2c; // Number of color vectors retained at given pixel. Must be > N1c, typically ~ 5/3 of N1c.
+ // Used to allow the first N1c vectors to adapt over time to changing background.
+
+ int Lcc; // Quantized levels per 'color co-occurrence' component. Power of two, typically 16, 32 or 64.
+ int N1cc; // Number of color co-occurrence vectors used to model normal background color variation at a given pixel.
+ int N2cc; // Number of color co-occurrence vectors retained at given pixel. Must be > N1cc, typically ~ 5/3 of N1cc.
+ // Used to allow the first N1cc vectors to adapt over time to changing background.
+
+ bool is_obj_without_holes; // If TRUE we ignore holes within foreground blobs. Defaults to TRUE.
+ int perform_morphing; // Number of erode-dilate-erode foreground-blob cleanup iterations.
+ // These erase one-pixel junk blobs and merge almost-touching blobs. Default value is 1.
+
+ float alpha1; // How quickly we forget old background pixel values seen. Typically set to 0.1.
+ float alpha2; // "Controls speed of feature learning". Depends on T. Typical value circa 0.005.
+ float alpha3; // Alternate to alpha2, used (e.g.) for quicker initial convergence. Typical value 0.1.
+
+ float delta; // Affects color and color co-occurrence quantization, typically set to 2.
+ float T; // A percentage value which determines when new features can be recognized as new background. (Typically 0.9).
+ float minArea; // Discard foreground blobs whose bounding box is smaller than this threshold.
+
+ // default Params
+ Params();
+ };
+
+ // out_cn - channels count in output result (can be 3 or 4)
+ // 4-channels require more memory, but a bit faster
+ explicit FGDStatModel(int out_cn = 3);
+ explicit FGDStatModel(const cv::gpu::GpuMat& firstFrame, const Params& params = Params(), int out_cn = 3);
+
+ ~FGDStatModel();
+
+ void create(const cv::gpu::GpuMat& firstFrame, const Params& params = Params());
+ void release();
+
+ int update(const cv::gpu::GpuMat& curFrame);
+
+ //8UC3 or 8UC4 reference background image
+ cv::gpu::GpuMat background;
+
+ //8UC1 foreground image
+ cv::gpu::GpuMat foreground;
+
+ std::vector< std::vector<cv::Point> > foreground_regions;
+
+private:
+ FGDStatModel(const FGDStatModel&);
+ FGDStatModel& operator=(const FGDStatModel&);
+
+ class Impl;
+ std::auto_ptr<Impl> impl_;
+};
+
+/*!
+ Gaussian Mixture-based Backbround/Foreground Segmentation Algorithm
+
+ The class implements the following algorithm:
+ "An improved adaptive background mixture model for real-time tracking with shadow detection"
+ P. KadewTraKuPong and R. Bowden,
+ Proc. 2nd European Workshp on Advanced Video-Based Surveillance Systems, 2001."
+ http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf
+*/
+class CV_EXPORTS MOG_GPU
+{
+public:
+ //! the default constructor
+ MOG_GPU(int nmixtures = -1);
+
+ //! re-initiaization method
+ void initialize(Size frameSize, int frameType);
+
+ //! the update operator
+ void operator()(const GpuMat& frame, GpuMat& fgmask, float learningRate = 0.0f, Stream& stream = Stream::Null());
+
+ //! computes a background image which are the mean of all background gaussians
+ void getBackgroundImage(GpuMat& backgroundImage, Stream& stream = Stream::Null()) const;
+
+ //! releases all inner buffers
+ void release();
+
+ int history;
+ float varThreshold;
+ float backgroundRatio;
+ float noiseSigma;
+
+private:
+ int nmixtures_;
+
+ Size frameSize_;
+ int frameType_;
+ int nframes_;
+
+ GpuMat weight_;
+ GpuMat sortKey_;
+ GpuMat mean_;
+ GpuMat var_;
+};
+
+/*!
+ The class implements the following algorithm:
+ "Improved adaptive Gausian mixture model for background subtraction"
+ Z.Zivkovic
+ International Conference Pattern Recognition, UK, August, 2004.
+ http://www.zoranz.net/Publications/zivkovic2004ICPR.pdf
+*/
+class CV_EXPORTS MOG2_GPU
+{
+public:
+ //! the default constructor
+ MOG2_GPU(int nmixtures = -1);
+
+ //! re-initiaization method
+ void initialize(Size frameSize, int frameType);
+
+ //! the update operator
+ void operator()(const GpuMat& frame, GpuMat& fgmask, float learningRate = -1.0f, Stream& stream = Stream::Null());
+
+ //! computes a background image which are the mean of all background gaussians
+ void getBackgroundImage(GpuMat& backgroundImage, Stream& stream = Stream::Null()) const;
+
+ //! releases all inner buffers
+ void release();
+
+ // parameters
+ // you should call initialize after parameters changes
+
+ int history;
+
+ //! here it is the maximum allowed number of mixture components.
+ //! Actual number is determined dynamically per pixel
+ float varThreshold;
+ // threshold on the squared Mahalanobis distance to decide if it is well described
+ // by the background model or not. Related to Cthr from the paper.
+ // This does not influence the update of the background. A typical value could be 4 sigma
+ // and that is varThreshold=4*4=16; Corresponds to Tb in the paper.
+
+ /////////////////////////
+ // less important parameters - things you might change but be carefull
+ ////////////////////////
+
+ float backgroundRatio;
+ // corresponds to fTB=1-cf from the paper
+ // TB - threshold when the component becomes significant enough to be included into
+ // the background model. It is the TB=1-cf from the paper. So I use cf=0.1 => TB=0.
+ // For alpha=0.001 it means that the mode should exist for approximately 105 frames before
+ // it is considered foreground
+ // float noiseSigma;
+ float varThresholdGen;
+
+ //correspondts to Tg - threshold on the squared Mahalan. dist. to decide
+ //when a sample is close to the existing components. If it is not close
+ //to any a new component will be generated. I use 3 sigma => Tg=3*3=9.
+ //Smaller Tg leads to more generated components and higher Tg might make
+ //lead to small number of components but they can grow too large
+ float fVarInit;
+ float fVarMin;
+ float fVarMax;
+
+ //initial variance for the newly generated components.
+ //It will will influence the speed of adaptation. A good guess should be made.
+ //A simple way is to estimate the typical standard deviation from the images.
+ //I used here 10 as a reasonable value
+ // min and max can be used to further control the variance
+ float fCT; //CT - complexity reduction prior
+ //this is related to the number of samples needed to accept that a component
+ //actually exists. We use CT=0.05 of all the samples. By setting CT=0 you get
+ //the standard Stauffer&Grimson algorithm (maybe not exact but very similar)
+
+ //shadow detection parameters
+ bool bShadowDetection; //default 1 - do shadow detection
+ unsigned char nShadowDetection; //do shadow detection - insert this value as the detection result - 127 default value
+ float fTau;
+ // Tau - shadow threshold. The shadow is detected if the pixel is darker
+ //version of the background. Tau is a threshold on how much darker the shadow can be.
+ //Tau= 0.5 means that if pixel is more than 2 times darker then it is not shadow
+ //See: Prati,Mikic,Trivedi,Cucchiarra,"Detecting Moving Shadows...",IEEE PAMI,2003.
+
+private:
+ int nmixtures_;
+
+ Size frameSize_;
+ int frameType_;
+ int nframes_;
+
+ GpuMat weight_;
+ GpuMat variance_;
+ GpuMat mean_;
+
+ GpuMat bgmodelUsedModes_; //keep track of number of modes per pixel
+};
+
+/**
+ * Background Subtractor module. Takes a series of images and returns a sequence of mask (8UC1)
+ * images of the same size, where 255 indicates Foreground and 0 represents Background.
+ * This class implements an algorithm described in "Visual Tracking of Human Visitors under
+ * Variable-Lighting Conditions for a Responsive Audio Art Installation," A. Godbehere,
+ * A. Matsukawa, K. Goldberg, American Control Conference, Montreal, June 2012.
+ */
+class CV_EXPORTS GMG_GPU
+{
+public:
+ GMG_GPU();
+
+ /**
+ * Validate parameters and set up data structures for appropriate frame size.
+ * @param frameSize Input frame size
+ * @param min Minimum value taken on by pixels in image sequence. Usually 0
+ * @param max Maximum value taken on by pixels in image sequence. e.g. 1.0 or 255
+ */
+ void initialize(Size frameSize, float min = 0.0f, float max = 255.0f);
+
+ /**
+ * Performs single-frame background subtraction and builds up a statistical background image
+ * model.
+ * @param frame Input frame
+ * @param fgmask Output mask image representing foreground and background pixels
+ * @param learningRate determines how quickly features are “forgotten” from histograms
+ * @param stream Stream for the asynchronous version
+ */
+ void operator ()(const GpuMat& frame, GpuMat& fgmask, float learningRate = -1.0f, Stream& stream = Stream::Null());
+
+ //! Releases all inner buffers
+ void release();
+
+ //! Total number of distinct colors to maintain in histogram.
+ int maxFeatures;
+
+ //! Set between 0.0 and 1.0, determines how quickly features are "forgotten" from histograms.
+ float learningRate;
+
+ //! Number of frames of video to use to initialize histograms.
+ int numInitializationFrames;
+
+ //! Number of discrete levels in each channel to be used in histograms.
+ int quantizationLevels;
+
+ //! Prior probability that any given pixel is a background pixel. A sensitivity parameter.
+ float backgroundPrior;
+
+ //! Value above which pixel is determined to be FG.
+ float decisionThreshold;
+
+ //! Smoothing radius, in pixels, for cleaning up FG image.
+ int smoothingRadius;
+
+ //! Perform background model update.
+ bool updateBackgroundModel;
+
+private:
+ float maxVal_, minVal_;
+
+ Size frameSize_;
+
+ int frameNum_;
+
+ GpuMat nfeatures_;
+ GpuMat colors_;
+ GpuMat weights_;
+
+ Ptr<FilterEngine_GPU> boxFilter_;
+ GpuMat buf_;
+};
+
+////////////////////////////////// Video Encoding //////////////////////////////////
+
+// Works only under Windows
+// Supports olny H264 video codec and AVI files
+class CV_EXPORTS VideoWriter_GPU
+{
+public:
+ struct EncoderParams;
+
+ // Callbacks for video encoder, use it if you want to work with raw video stream
+ class EncoderCallBack;
+
+ enum SurfaceFormat
+ {
+ SF_UYVY = 0,
+ SF_YUY2,
+ SF_YV12,
+ SF_NV12,
+ SF_IYUV,
+ SF_BGR,
+ SF_GRAY = SF_BGR
+ };
+
+ VideoWriter_GPU();
+ VideoWriter_GPU(const std::string& fileName, cv::Size frameSize, double fps, SurfaceFormat format = SF_BGR);
+ VideoWriter_GPU(const std::string& fileName, cv::Size frameSize, double fps, const EncoderParams& params, SurfaceFormat format = SF_BGR);
+ VideoWriter_GPU(const cv::Ptr<EncoderCallBack>& encoderCallback, cv::Size frameSize, double fps, SurfaceFormat format = SF_BGR);
+ VideoWriter_GPU(const cv::Ptr<EncoderCallBack>& encoderCallback, cv::Size frameSize, double fps, const EncoderParams& params, SurfaceFormat format = SF_BGR);
+ ~VideoWriter_GPU();
+
+ // all methods throws cv::Exception if error occurs
+ void open(const std::string& fileName, cv::Size frameSize, double fps, SurfaceFormat format = SF_BGR);
+ void open(const std::string& fileName, cv::Size frameSize, double fps, const EncoderParams& params, SurfaceFormat format = SF_BGR);
+ void open(const cv::Ptr<EncoderCallBack>& encoderCallback, cv::Size frameSize, double fps, SurfaceFormat format = SF_BGR);
+ void open(const cv::Ptr<EncoderCallBack>& encoderCallback, cv::Size frameSize, double fps, const EncoderParams& params, SurfaceFormat format = SF_BGR);
+
+ bool isOpened() const;
+ void close();
+
+ void write(const cv::gpu::GpuMat& image, bool lastFrame = false);
+
+ struct CV_EXPORTS EncoderParams
+ {
+ int P_Interval; // NVVE_P_INTERVAL,
+ int IDR_Period; // NVVE_IDR_PERIOD,
+ int DynamicGOP; // NVVE_DYNAMIC_GOP,
+ int RCType; // NVVE_RC_TYPE,
+ int AvgBitrate; // NVVE_AVG_BITRATE,
+ int PeakBitrate; // NVVE_PEAK_BITRATE,
+ int QP_Level_Intra; // NVVE_QP_LEVEL_INTRA,
+ int QP_Level_InterP; // NVVE_QP_LEVEL_INTER_P,
+ int QP_Level_InterB; // NVVE_QP_LEVEL_INTER_B,
+ int DeblockMode; // NVVE_DEBLOCK_MODE,
+ int ProfileLevel; // NVVE_PROFILE_LEVEL,
+ int ForceIntra; // NVVE_FORCE_INTRA,
+ int ForceIDR; // NVVE_FORCE_IDR,
+ int ClearStat; // NVVE_CLEAR_STAT,
+ int DIMode; // NVVE_SET_DEINTERLACE,
+ int Presets; // NVVE_PRESETS,
+ int DisableCabac; // NVVE_DISABLE_CABAC,
+ int NaluFramingType; // NVVE_CONFIGURE_NALU_FRAMING_TYPE
+ int DisableSPSPPS; // NVVE_DISABLE_SPS_PPS
+
+ EncoderParams();
+ explicit EncoderParams(const std::string& configFile);
+
+ void load(const std::string& configFile);
+ void save(const std::string& configFile) const;
+ };
+
+ EncoderParams getParams() const;
+
+ class CV_EXPORTS EncoderCallBack
+ {
+ public:
+ enum PicType
+ {
+ IFRAME = 1,
+ PFRAME = 2,
+ BFRAME = 3
+ };
+
+ virtual ~EncoderCallBack() {}
+
+ // callback function to signal the start of bitstream that is to be encoded
+ // must return pointer to buffer
+ virtual uchar* acquireBitStream(int* bufferSize) = 0;
+
+ // callback function to signal that the encoded bitstream is ready to be written to file
+ virtual void releaseBitStream(unsigned char* data, int size) = 0;
+
+ // callback function to signal that the encoding operation on the frame has started
+ virtual void onBeginFrame(int frameNumber, PicType picType) = 0;
+
+ // callback function signals that the encoding operation on the frame has finished
+ virtual void onEndFrame(int frameNumber, PicType picType) = 0;
+ };
+
+private:
+ VideoWriter_GPU(const VideoWriter_GPU&);
+ VideoWriter_GPU& operator=(const VideoWriter_GPU&);
+
+ class Impl;
+ std::auto_ptr<Impl> impl_;
+};
+
+
+////////////////////////////////// Video Decoding //////////////////////////////////////////
+
+namespace detail
+{
+ class FrameQueue;
+ class VideoParser;
+}
+
+class CV_EXPORTS VideoReader_GPU
+{
+public:
+ enum Codec
+ {
+ MPEG1 = 0,
+ MPEG2,
+ MPEG4,
+ VC1,
+ H264,
+ JPEG,
+ H264_SVC,
+ H264_MVC,
+
+ Uncompressed_YUV420 = (('I'<<24)|('Y'<<16)|('U'<<8)|('V')), // Y,U,V (4:2:0)
+ Uncompressed_YV12 = (('Y'<<24)|('V'<<16)|('1'<<8)|('2')), // Y,V,U (4:2:0)
+ Uncompressed_NV12 = (('N'<<24)|('V'<<16)|('1'<<8)|('2')), // Y,UV (4:2:0)
+ Uncompressed_YUYV = (('Y'<<24)|('U'<<16)|('Y'<<8)|('V')), // YUYV/YUY2 (4:2:2)
+ Uncompressed_UYVY = (('U'<<24)|('Y'<<16)|('V'<<8)|('Y')) // UYVY (4:2:2)
+ };
+
+ enum ChromaFormat
+ {
+ Monochrome=0,
+ YUV420,
+ YUV422,
+ YUV444
+ };
+
+ struct FormatInfo
+ {
+ Codec codec;
+ ChromaFormat chromaFormat;
+ int width;
+ int height;
+ };
+
+ class VideoSource;
+
+ VideoReader_GPU();
+ explicit VideoReader_GPU(const std::string& filename);
+ explicit VideoReader_GPU(const cv::Ptr<VideoSource>& source);
+
+ ~VideoReader_GPU();
+
+ void open(const std::string& filename);
+ void open(const cv::Ptr<VideoSource>& source);
+ bool isOpened() const;
+
+ void close();
+
+ bool read(GpuMat& image);
+
+ FormatInfo format() const;
+ void dumpFormat(std::ostream& st);
+
+ class CV_EXPORTS VideoSource
+ {
+ public:
+ VideoSource() : frameQueue_(0), videoParser_(0) {}
+ virtual ~VideoSource() {}
+
+ virtual FormatInfo format() const = 0;
+ virtual void start() = 0;
+ virtual void stop() = 0;
+ virtual bool isStarted() const = 0;
+ virtual bool hasError() const = 0;
+
+ void setFrameQueue(detail::FrameQueue* frameQueue) { frameQueue_ = frameQueue; }
+ void setVideoParser(detail::VideoParser* videoParser) { videoParser_ = videoParser; }
+
+ protected:
+ bool parseVideoData(const uchar* data, size_t size, bool endOfStream = false);
+
+ private:
+ VideoSource(const VideoSource&);
+ VideoSource& operator =(const VideoSource&);
+
+ detail::FrameQueue* frameQueue_;
+ detail::VideoParser* videoParser_;
+ };
+
+private:
+ VideoReader_GPU(const VideoReader_GPU&);
+ VideoReader_GPU& operator =(const VideoReader_GPU&);
+
+ class Impl;
+ std::auto_ptr<Impl> impl_;
+};
+
+//! removes points (CV_32FC2, single row matrix) with zero mask value
+CV_EXPORTS void compactPoints(GpuMat &points0, GpuMat &points1, const GpuMat &mask);
+
+CV_EXPORTS void calcWobbleSuppressionMaps(
+ int left, int idx, int right, Size size, const Mat &ml, const Mat &mr,
+ GpuMat &mapx, GpuMat &mapy);
+
+} // namespace gpu
+
+} // namespace cv
+
+#endif /* __OPENCV_GPU_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpumat.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpumat.hpp
new file mode 100644
index 00000000..840398b5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/gpumat.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/core/gpumat.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/stream_accessor.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/stream_accessor.hpp
new file mode 100644
index 00000000..bcd58ba3
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/gpu/stream_accessor.hpp
@@ -0,0 +1,65 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_STREAM_ACCESSOR_HPP__
+#define __OPENCV_GPU_STREAM_ACCESSOR_HPP__
+
+#include "opencv2/gpu/gpu.hpp"
+#include "cuda_runtime_api.h"
+
+namespace cv
+{
+ namespace gpu
+ {
+ // This is only header file that depends on Cuda. All other headers are independent.
+ // So if you use OpenCV binaries you do noot need to install Cuda Toolkit.
+ // But of you wanna use GPU by yourself, may get cuda stream instance using the class below.
+ // In this case you have to install Cuda Toolkit.
+ struct StreamAccessor
+ {
+ CV_EXPORTS static cudaStream_t getStream(const Stream& stream);
+ CV_EXPORTS static Stream wrapStream(cudaStream_t stream);
+ };
+ }
+}
+
+#endif /* __OPENCV_GPU_STREAM_ACCESSOR_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui.hpp
new file mode 100644
index 00000000..c76a020a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/highgui/highgui.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/cap_ios.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/cap_ios.h
new file mode 100644
index 00000000..4c931d40
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/cap_ios.h
@@ -0,0 +1,171 @@
+/* For iOS video I/O
+ * by Eduard Feicho on 29/07/12
+ * Copyright 2012. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import <UIKit/UIKit.h>
+#import <Accelerate/Accelerate.h>
+#import <AVFoundation/AVFoundation.h>
+#import <ImageIO/ImageIO.h>
+#include "opencv2/core/core.hpp"
+
+/////////////////////////////////////// CvAbstractCamera /////////////////////////////////////
+
+@class CvAbstractCamera;
+
+@interface CvAbstractCamera : NSObject
+{
+ AVCaptureSession* captureSession;
+ AVCaptureConnection* videoCaptureConnection;
+ AVCaptureVideoPreviewLayer *captureVideoPreviewLayer;
+
+ UIDeviceOrientation currentDeviceOrientation;
+
+ BOOL cameraAvailable;
+ BOOL captureSessionLoaded;
+ BOOL running;
+ BOOL useAVCaptureVideoPreviewLayer;
+
+ AVCaptureDevicePosition defaultAVCaptureDevicePosition;
+ AVCaptureVideoOrientation defaultAVCaptureVideoOrientation;
+ NSString *const defaultAVCaptureSessionPreset;
+
+ int defaultFPS;
+
+ UIView* parentView;
+
+ int imageWidth;
+ int imageHeight;
+}
+
+@property (nonatomic, retain) AVCaptureSession* captureSession;
+@property (nonatomic, retain) AVCaptureConnection* videoCaptureConnection;
+
+@property (nonatomic, readonly) BOOL running;
+@property (nonatomic, readonly) BOOL captureSessionLoaded;
+
+@property (nonatomic, assign) int defaultFPS;
+@property (nonatomic, readonly) AVCaptureVideoPreviewLayer *captureVideoPreviewLayer;
+@property (nonatomic, assign) AVCaptureDevicePosition defaultAVCaptureDevicePosition;
+@property (nonatomic, assign) AVCaptureVideoOrientation defaultAVCaptureVideoOrientation;
+@property (nonatomic, assign) BOOL useAVCaptureVideoPreviewLayer;
+@property (nonatomic, strong) NSString *const defaultAVCaptureSessionPreset;
+
+@property (nonatomic, assign) int imageWidth;
+@property (nonatomic, assign) int imageHeight;
+
+@property (nonatomic, retain) UIView* parentView;
+
+- (void)start;
+- (void)stop;
+- (void)switchCameras;
+
+- (id)initWithParentView:(UIView*)parent;
+
+- (void)createCaptureOutput;
+- (void)createVideoPreviewLayer;
+- (void)updateOrientation;
+
+- (void)lockFocus;
+- (void)unlockFocus;
+- (void)lockExposure;
+- (void)unlockExposure;
+- (void)lockBalance;
+- (void)unlockBalance;
+
+@end
+
+///////////////////////////////// CvVideoCamera ///////////////////////////////////////////
+
+@class CvVideoCamera;
+
+@protocol CvVideoCameraDelegate <NSObject>
+
+#ifdef __cplusplus
+// delegate method for processing image frames
+- (void)processImage:(cv::Mat&)image;
+#endif
+
+@end
+
+@interface CvVideoCamera : CvAbstractCamera<AVCaptureVideoDataOutputSampleBufferDelegate>
+{
+ AVCaptureVideoDataOutput *videoDataOutput;
+
+ dispatch_queue_t videoDataOutputQueue;
+ CALayer *customPreviewLayer;
+
+ BOOL grayscaleMode;
+
+ BOOL recordVideo;
+ BOOL rotateVideo;
+ AVAssetWriterInput* recordAssetWriterInput;
+ AVAssetWriterInputPixelBufferAdaptor* recordPixelBufferAdaptor;
+ AVAssetWriter* recordAssetWriter;
+
+ CMTime lastSampleTime;
+
+}
+
+@property (nonatomic, assign) id<CvVideoCameraDelegate> delegate;
+@property (nonatomic, assign) BOOL grayscaleMode;
+
+@property (nonatomic, assign) BOOL recordVideo;
+@property (nonatomic, assign) BOOL rotateVideo;
+@property (nonatomic, retain) AVAssetWriterInput* recordAssetWriterInput;
+@property (nonatomic, retain) AVAssetWriterInputPixelBufferAdaptor* recordPixelBufferAdaptor;
+@property (nonatomic, retain) AVAssetWriter* recordAssetWriter;
+
+- (void)adjustLayoutToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
+- (void)layoutPreviewLayer;
+- (void)saveVideo;
+- (NSURL *)videoFileURL;
+- (NSString *)videoFileString;
+
+
+@end
+
+///////////////////////////////// CvPhotoCamera ///////////////////////////////////////////
+
+@class CvPhotoCamera;
+
+@protocol CvPhotoCameraDelegate <NSObject>
+
+- (void)photoCamera:(CvPhotoCamera*)photoCamera capturedImage:(UIImage *)image;
+- (void)photoCameraCancel:(CvPhotoCamera*)photoCamera;
+
+@end
+
+@interface CvPhotoCamera : CvAbstractCamera
+{
+ AVCaptureStillImageOutput *stillImageOutput;
+}
+
+@property (nonatomic, assign) id<CvPhotoCameraDelegate> delegate;
+
+- (void)takePicture;
+
+@end
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui.hpp
new file mode 100644
index 00000000..f6f22930
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui.hpp
@@ -0,0 +1,255 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_HIGHGUI_HPP__
+#define __OPENCV_HIGHGUI_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui_c.h"
+
+#ifdef __cplusplus
+
+struct CvCapture;
+struct CvVideoWriter;
+
+namespace cv
+{
+
+enum {
+ // Flags for namedWindow
+ WINDOW_NORMAL = CV_WINDOW_NORMAL, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
+ WINDOW_AUTOSIZE = CV_WINDOW_AUTOSIZE, // the user cannot resize the window, the size is constrainted by the image displayed
+ WINDOW_OPENGL = CV_WINDOW_OPENGL, // window with opengl support
+
+ // Flags for set / getWindowProperty
+ WND_PROP_FULLSCREEN = CV_WND_PROP_FULLSCREEN, // fullscreen property
+ WND_PROP_AUTOSIZE = CV_WND_PROP_AUTOSIZE, // autosize property
+ WND_PROP_ASPECT_RATIO = CV_WND_PROP_ASPECTRATIO, // window's aspect ration
+ WND_PROP_OPENGL = CV_WND_PROP_OPENGL // opengl support
+};
+
+CV_EXPORTS_W void namedWindow(const string& winname, int flags = WINDOW_AUTOSIZE);
+CV_EXPORTS_W void destroyWindow(const string& winname);
+CV_EXPORTS_W void destroyAllWindows();
+
+CV_EXPORTS_W int startWindowThread();
+
+CV_EXPORTS_W int waitKey(int delay = 0);
+
+CV_EXPORTS_W void imshow(const string& winname, InputArray mat);
+
+CV_EXPORTS_W void resizeWindow(const string& winname, int width, int height);
+CV_EXPORTS_W void moveWindow(const string& winname, int x, int y);
+
+CV_EXPORTS_W void setWindowProperty(const string& winname, int prop_id, double prop_value);//YV
+CV_EXPORTS_W double getWindowProperty(const string& winname, int prop_id);//YV
+
+enum
+{
+ EVENT_MOUSEMOVE =0,
+ EVENT_LBUTTONDOWN =1,
+ EVENT_RBUTTONDOWN =2,
+ EVENT_MBUTTONDOWN =3,
+ EVENT_LBUTTONUP =4,
+ EVENT_RBUTTONUP =5,
+ EVENT_MBUTTONUP =6,
+ EVENT_LBUTTONDBLCLK =7,
+ EVENT_RBUTTONDBLCLK =8,
+ EVENT_MBUTTONDBLCLK =9
+};
+
+enum
+{
+ EVENT_FLAG_LBUTTON =1,
+ EVENT_FLAG_RBUTTON =2,
+ EVENT_FLAG_MBUTTON =4,
+ EVENT_FLAG_CTRLKEY =8,
+ EVENT_FLAG_SHIFTKEY =16,
+ EVENT_FLAG_ALTKEY =32
+};
+
+typedef void (*MouseCallback)(int event, int x, int y, int flags, void* userdata);
+
+//! assigns callback for mouse events
+CV_EXPORTS void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata = 0);
+
+
+typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);
+
+CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,
+ int* value, int count,
+ TrackbarCallback onChange = 0,
+ void* userdata = 0);
+
+CV_EXPORTS_W int getTrackbarPos(const string& trackbarname, const string& winname);
+CV_EXPORTS_W void setTrackbarPos(const string& trackbarname, const string& winname, int pos);
+
+// OpenGL support
+
+typedef void (*OpenGlDrawCallback)(void* userdata);
+CV_EXPORTS void setOpenGlDrawCallback(const string& winname, OpenGlDrawCallback onOpenGlDraw, void* userdata = 0);
+
+CV_EXPORTS void setOpenGlContext(const string& winname);
+
+CV_EXPORTS void updateWindow(const string& winname);
+
+// < Deperecated
+CV_EXPORTS void pointCloudShow(const string& winname, const GlCamera& camera, const GlArrays& arr);
+CV_EXPORTS void pointCloudShow(const string& winname, const GlCamera& camera, InputArray points, InputArray colors = noArray());
+// >
+
+//Only for Qt
+
+CV_EXPORTS CvFont fontQt(const string& nameFont, int pointSize=-1,
+ Scalar color=Scalar::all(0), int weight=CV_FONT_NORMAL,
+ int style=CV_STYLE_NORMAL, int spacing=0);
+CV_EXPORTS void addText( const Mat& img, const string& text, Point org, CvFont font);
+
+CV_EXPORTS void displayOverlay(const string& winname, const string& text, int delayms CV_DEFAULT(0));
+CV_EXPORTS void displayStatusBar(const string& winname, const string& text, int delayms CV_DEFAULT(0));
+
+CV_EXPORTS void saveWindowParameters(const string& windowName);
+CV_EXPORTS void loadWindowParameters(const string& windowName);
+CV_EXPORTS int startLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]);
+CV_EXPORTS void stopLoop();
+
+typedef void (CV_CDECL *ButtonCallback)(int state, void* userdata);
+CV_EXPORTS int createButton( const string& bar_name, ButtonCallback on_change,
+ void* userdata=NULL, int type=CV_PUSH_BUTTON,
+ bool initial_button_state=0);
+
+//-------------------------
+
+enum
+{
+ // 8bit, color or not
+ IMREAD_UNCHANGED =-1,
+ // 8bit, gray
+ IMREAD_GRAYSCALE =0,
+ // ?, color
+ IMREAD_COLOR =1,
+ // any depth, ?
+ IMREAD_ANYDEPTH =2,
+ // ?, any color
+ IMREAD_ANYCOLOR =4
+};
+
+enum
+{
+ IMWRITE_JPEG_QUALITY =1,
+ IMWRITE_PNG_COMPRESSION =16,
+ IMWRITE_PNG_STRATEGY =17,
+ IMWRITE_PNG_BILEVEL =18,
+ IMWRITE_PNG_STRATEGY_DEFAULT =0,
+ IMWRITE_PNG_STRATEGY_FILTERED =1,
+ IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY =2,
+ IMWRITE_PNG_STRATEGY_RLE =3,
+ IMWRITE_PNG_STRATEGY_FIXED =4,
+ IMWRITE_PXM_BINARY =32
+};
+
+CV_EXPORTS_W Mat imread( const string& filename, int flags=1 );
+CV_EXPORTS_W bool imwrite( const string& filename, InputArray img,
+ const vector<int>& params=vector<int>());
+CV_EXPORTS_W Mat imdecode( InputArray buf, int flags );
+CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst );
+CV_EXPORTS_W bool imencode( const string& ext, InputArray img,
+ CV_OUT vector<uchar>& buf,
+ const vector<int>& params=vector<int>());
+
+#ifndef CV_NO_VIDEO_CAPTURE_CPP_API
+
+template<> void CV_EXPORTS Ptr<CvCapture>::delete_obj();
+template<> void CV_EXPORTS Ptr<CvVideoWriter>::delete_obj();
+
+class CV_EXPORTS_W VideoCapture
+{
+public:
+ CV_WRAP VideoCapture();
+ CV_WRAP VideoCapture(const string& filename);
+ CV_WRAP VideoCapture(int device);
+
+ virtual ~VideoCapture();
+ CV_WRAP virtual bool open(const string& filename);
+ CV_WRAP virtual bool open(int device);
+ CV_WRAP virtual bool isOpened() const;
+ CV_WRAP virtual void release();
+
+ CV_WRAP virtual bool grab();
+ CV_WRAP virtual bool retrieve(CV_OUT Mat& image, int channel=0);
+ virtual VideoCapture& operator >> (CV_OUT Mat& image);
+ CV_WRAP virtual bool read(CV_OUT Mat& image);
+
+ CV_WRAP virtual bool set(int propId, double value);
+ CV_WRAP virtual double get(int propId);
+
+protected:
+ Ptr<CvCapture> cap;
+};
+
+
+class CV_EXPORTS_W VideoWriter
+{
+public:
+ CV_WRAP VideoWriter();
+ CV_WRAP VideoWriter(const string& filename, int fourcc, double fps,
+ Size frameSize, bool isColor=true);
+
+ virtual ~VideoWriter();
+ CV_WRAP virtual bool open(const string& filename, int fourcc, double fps,
+ Size frameSize, bool isColor=true);
+ CV_WRAP virtual bool isOpened() const;
+ CV_WRAP virtual void release();
+ virtual VideoWriter& operator << (const Mat& image);
+ CV_WRAP virtual void write(const Mat& image);
+
+protected:
+ Ptr<CvVideoWriter> writer;
+};
+
+#endif
+
+}
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui_c.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui_c.h
new file mode 100644
index 00000000..85a59bb0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/highgui_c.h
@@ -0,0 +1,660 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_HIGHGUI_H__
+#define __OPENCV_HIGHGUI_H__
+
+#include "opencv2/core/core_c.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/****************************************************************************************\
+* Basic GUI functions *
+\****************************************************************************************/
+//YV
+//-----------New for Qt
+/* For font */
+enum { CV_FONT_LIGHT = 25,//QFont::Light,
+ CV_FONT_NORMAL = 50,//QFont::Normal,
+ CV_FONT_DEMIBOLD = 63,//QFont::DemiBold,
+ CV_FONT_BOLD = 75,//QFont::Bold,
+ CV_FONT_BLACK = 87 //QFont::Black
+};
+
+enum { CV_STYLE_NORMAL = 0,//QFont::StyleNormal,
+ CV_STYLE_ITALIC = 1,//QFont::StyleItalic,
+ CV_STYLE_OBLIQUE = 2 //QFont::StyleOblique
+};
+/* ---------*/
+
+//for color cvScalar(blue_component, green_component, red\_component[, alpha_component])
+//and alpha= 0 <-> 0xFF (not transparent <-> transparent)
+CVAPI(CvFont) cvFontQt(const char* nameFont, int pointSize CV_DEFAULT(-1), CvScalar color CV_DEFAULT(cvScalarAll(0)), int weight CV_DEFAULT(CV_FONT_NORMAL), int style CV_DEFAULT(CV_STYLE_NORMAL), int spacing CV_DEFAULT(0));
+
+CVAPI(void) cvAddText(const CvArr* img, const char* text, CvPoint org, CvFont *arg2);
+
+CVAPI(void) cvDisplayOverlay(const char* name, const char* text, int delayms CV_DEFAULT(0));
+CVAPI(void) cvDisplayStatusBar(const char* name, const char* text, int delayms CV_DEFAULT(0));
+
+CVAPI(void) cvSaveWindowParameters(const char* name);
+CVAPI(void) cvLoadWindowParameters(const char* name);
+CVAPI(int) cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]);
+CVAPI(void) cvStopLoop( void );
+
+typedef void (CV_CDECL *CvButtonCallback)(int state, void* userdata);
+enum {CV_PUSH_BUTTON = 0, CV_CHECKBOX = 1, CV_RADIOBOX = 2};
+CVAPI(int) cvCreateButton( const char* button_name CV_DEFAULT(NULL),CvButtonCallback on_change CV_DEFAULT(NULL), void* userdata CV_DEFAULT(NULL) , int button_type CV_DEFAULT(CV_PUSH_BUTTON), int initial_button_state CV_DEFAULT(0));
+//----------------------
+
+
+/* this function is used to set some external parameters in case of X Window */
+CVAPI(int) cvInitSystem( int argc, char** argv );
+
+CVAPI(int) cvStartWindowThread( void );
+
+// --------- YV ---------
+enum
+{
+ //These 3 flags are used by cvSet/GetWindowProperty
+ CV_WND_PROP_FULLSCREEN = 0, //to change/get window's fullscreen property
+ CV_WND_PROP_AUTOSIZE = 1, //to change/get window's autosize property
+ CV_WND_PROP_ASPECTRATIO= 2, //to change/get window's aspectratio property
+ CV_WND_PROP_OPENGL = 3, //to change/get window's opengl support
+
+ //These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty
+ CV_WINDOW_NORMAL = 0x00000000, //the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
+ CV_WINDOW_AUTOSIZE = 0x00000001, //the user cannot resize the window, the size is constrainted by the image displayed
+ CV_WINDOW_OPENGL = 0x00001000, //window with opengl support
+
+ //Those flags are only for Qt
+ CV_GUI_EXPANDED = 0x00000000, //status bar and tool bar
+ CV_GUI_NORMAL = 0x00000010, //old fashious way
+
+ //These 3 flags are used by cvNamedWindow and cvSet/GetWindowProperty
+ CV_WINDOW_FULLSCREEN = 1,//change the window to fullscreen
+ CV_WINDOW_FREERATIO = 0x00000100,//the image expends as much as it can (no ratio constraint)
+ CV_WINDOW_KEEPRATIO = 0x00000000//the ration image is respected.
+};
+
+/* create window */
+CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) );
+
+/* Set and Get Property of the window */
+CVAPI(void) cvSetWindowProperty(const char* name, int prop_id, double prop_value);
+CVAPI(double) cvGetWindowProperty(const char* name, int prop_id);
+
+/* display image within window (highgui windows remember their content) */
+CVAPI(void) cvShowImage( const char* name, const CvArr* image );
+
+/* resize/move window */
+CVAPI(void) cvResizeWindow( const char* name, int width, int height );
+CVAPI(void) cvMoveWindow( const char* name, int x, int y );
+
+
+/* destroy window and all the trackers associated with it */
+CVAPI(void) cvDestroyWindow( const char* name );
+
+CVAPI(void) cvDestroyAllWindows(void);
+
+/* get native window handle (HWND in case of Win32 and Widget in case of X Window) */
+CVAPI(void*) cvGetWindowHandle( const char* name );
+
+/* get name of highgui window given its native handle */
+CVAPI(const char*) cvGetWindowName( void* window_handle );
+
+
+typedef void (CV_CDECL *CvTrackbarCallback)(int pos);
+
+/* create trackbar and display it on top of given window, set callback */
+CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,
+ int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));
+
+typedef void (CV_CDECL *CvTrackbarCallback2)(int pos, void* userdata);
+
+CVAPI(int) cvCreateTrackbar2( const char* trackbar_name, const char* window_name,
+ int* value, int count, CvTrackbarCallback2 on_change,
+ void* userdata CV_DEFAULT(0));
+
+/* retrieve or set trackbar position */
+CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
+CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
+CVAPI(void) cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval);
+
+enum
+{
+ CV_EVENT_MOUSEMOVE =0,
+ CV_EVENT_LBUTTONDOWN =1,
+ CV_EVENT_RBUTTONDOWN =2,
+ CV_EVENT_MBUTTONDOWN =3,
+ CV_EVENT_LBUTTONUP =4,
+ CV_EVENT_RBUTTONUP =5,
+ CV_EVENT_MBUTTONUP =6,
+ CV_EVENT_LBUTTONDBLCLK =7,
+ CV_EVENT_RBUTTONDBLCLK =8,
+ CV_EVENT_MBUTTONDBLCLK =9
+};
+
+enum
+{
+ CV_EVENT_FLAG_LBUTTON =1,
+ CV_EVENT_FLAG_RBUTTON =2,
+ CV_EVENT_FLAG_MBUTTON =4,
+ CV_EVENT_FLAG_CTRLKEY =8,
+ CV_EVENT_FLAG_SHIFTKEY =16,
+ CV_EVENT_FLAG_ALTKEY =32
+};
+
+typedef void (CV_CDECL *CvMouseCallback )(int event, int x, int y, int flags, void* param);
+
+/* assign callback for mouse events */
+CVAPI(void) cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse,
+ void* param CV_DEFAULT(NULL));
+
+enum
+{
+/* 8bit, color or not */
+ CV_LOAD_IMAGE_UNCHANGED =-1,
+/* 8bit, gray */
+ CV_LOAD_IMAGE_GRAYSCALE =0,
+/* ?, color */
+ CV_LOAD_IMAGE_COLOR =1,
+/* any depth, ? */
+ CV_LOAD_IMAGE_ANYDEPTH =2,
+/* ?, any color */
+ CV_LOAD_IMAGE_ANYCOLOR =4
+};
+
+/* load image from file
+ iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED
+ overrides the other flags
+ using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED
+ unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit
+*/
+CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
+CVAPI(CvMat*) cvLoadImageM( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
+
+enum
+{
+ CV_IMWRITE_JPEG_QUALITY =1,
+ CV_IMWRITE_PNG_COMPRESSION =16,
+ CV_IMWRITE_PNG_STRATEGY =17,
+ CV_IMWRITE_PNG_BILEVEL =18,
+ CV_IMWRITE_PNG_STRATEGY_DEFAULT =0,
+ CV_IMWRITE_PNG_STRATEGY_FILTERED =1,
+ CV_IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY =2,
+ CV_IMWRITE_PNG_STRATEGY_RLE =3,
+ CV_IMWRITE_PNG_STRATEGY_FIXED =4,
+ CV_IMWRITE_PXM_BINARY =32
+};
+
+/* save image to file */
+CVAPI(int) cvSaveImage( const char* filename, const CvArr* image,
+ const int* params CV_DEFAULT(0) );
+
+/* decode image stored in the buffer */
+CVAPI(IplImage*) cvDecodeImage( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
+CVAPI(CvMat*) cvDecodeImageM( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
+
+/* encode image and store the result as a byte vector (single-row 8uC1 matrix) */
+CVAPI(CvMat*) cvEncodeImage( const char* ext, const CvArr* image,
+ const int* params CV_DEFAULT(0) );
+
+enum
+{
+ CV_CVTIMG_FLIP =1,
+ CV_CVTIMG_SWAP_RB =2
+};
+
+/* utility function: convert one image to another with optional vertical flip */
+CVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0));
+
+/* wait for key event infinitely (delay<=0) or for "delay" milliseconds */
+CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0));
+
+// OpenGL support
+
+typedef void (CV_CDECL *CvOpenGlDrawCallback)(void* userdata);
+CVAPI(void) cvSetOpenGlDrawCallback(const char* window_name, CvOpenGlDrawCallback callback, void* userdata CV_DEFAULT(NULL));
+
+CVAPI(void) cvSetOpenGlContext(const char* window_name);
+CVAPI(void) cvUpdateWindow(const char* window_name);
+
+
+/****************************************************************************************\
+* Working with Video Files and Cameras *
+\****************************************************************************************/
+
+/* "black box" capture structure */
+typedef struct CvCapture CvCapture;
+
+/* start capturing frames from video file */
+CVAPI(CvCapture*) cvCreateFileCapture( const char* filename );
+
+enum
+{
+ CV_CAP_ANY =0, // autodetect
+
+ CV_CAP_MIL =100, // MIL proprietary drivers
+
+ CV_CAP_VFW =200, // platform native
+ CV_CAP_V4L =200,
+ CV_CAP_V4L2 =200,
+
+ CV_CAP_FIREWARE =300, // IEEE 1394 drivers
+ CV_CAP_FIREWIRE =300,
+ CV_CAP_IEEE1394 =300,
+ CV_CAP_DC1394 =300,
+ CV_CAP_CMU1394 =300,
+
+ CV_CAP_STEREO =400, // TYZX proprietary drivers
+ CV_CAP_TYZX =400,
+ CV_TYZX_LEFT =400,
+ CV_TYZX_RIGHT =401,
+ CV_TYZX_COLOR =402,
+ CV_TYZX_Z =403,
+
+ CV_CAP_QT =500, // QuickTime
+
+ CV_CAP_UNICAP =600, // Unicap drivers
+
+ CV_CAP_DSHOW =700, // DirectShow (via videoInput)
+ CV_CAP_MSMF =1400, // Microsoft Media Foundation (via videoInput)
+
+ CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK
+
+ CV_CAP_OPENNI =900, // OpenNI (for Kinect)
+ CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion)
+
+ CV_CAP_ANDROID =1000, // Android
+ CV_CAP_ANDROID_BACK =CV_CAP_ANDROID+99, // Android back camera
+ CV_CAP_ANDROID_FRONT =CV_CAP_ANDROID+98, // Android front camera
+
+ CV_CAP_XIAPI =1100, // XIMEA Camera API
+
+ CV_CAP_AVFOUNDATION = 1200, // AVFoundation framework for iOS (OS X Lion will have the same API)
+
+ CV_CAP_GIGANETIX = 1300, // Smartek Giganetix GigEVisionSDK
+
+ CV_CAP_INTELPERC = 1500 // Intel Perceptual Computing SDK
+};
+
+/* start capturing frames from camera: index = camera_index + domain_offset (CV_CAP_*) */
+CVAPI(CvCapture*) cvCreateCameraCapture( int index );
+
+/* grab a frame, return 1 on success, 0 on fail.
+ this function is thought to be fast */
+CVAPI(int) cvGrabFrame( CvCapture* capture );
+
+/* get the frame grabbed with cvGrabFrame(..)
+ This function may apply some frame processing like
+ frame decompression, flipping etc.
+ !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */
+CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture, int streamIdx CV_DEFAULT(0) );
+
+/* Just a combination of cvGrabFrame and cvRetrieveFrame
+ !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */
+CVAPI(IplImage*) cvQueryFrame( CvCapture* capture );
+
+/* stop capturing/reading and free resources */
+CVAPI(void) cvReleaseCapture( CvCapture** capture );
+
+enum
+{
+ // modes of the controlling registers (can be: auto, manual, auto single push, absolute Latter allowed with any other mode)
+ // every feature can have only one mode turned on at a time
+ CV_CAP_PROP_DC1394_OFF = -4, //turn the feature off (not controlled manually nor automatically)
+ CV_CAP_PROP_DC1394_MODE_MANUAL = -3, //set automatically when a value of the feature is set by the user
+ CV_CAP_PROP_DC1394_MODE_AUTO = -2,
+ CV_CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO = -1,
+ CV_CAP_PROP_POS_MSEC =0,
+ CV_CAP_PROP_POS_FRAMES =1,
+ CV_CAP_PROP_POS_AVI_RATIO =2,
+ CV_CAP_PROP_FRAME_WIDTH =3,
+ CV_CAP_PROP_FRAME_HEIGHT =4,
+ CV_CAP_PROP_FPS =5,
+ CV_CAP_PROP_FOURCC =6,
+ CV_CAP_PROP_FRAME_COUNT =7,
+ CV_CAP_PROP_FORMAT =8,
+ CV_CAP_PROP_MODE =9,
+ CV_CAP_PROP_BRIGHTNESS =10,
+ CV_CAP_PROP_CONTRAST =11,
+ CV_CAP_PROP_SATURATION =12,
+ CV_CAP_PROP_HUE =13,
+ CV_CAP_PROP_GAIN =14,
+ CV_CAP_PROP_EXPOSURE =15,
+ CV_CAP_PROP_CONVERT_RGB =16,
+ CV_CAP_PROP_WHITE_BALANCE_U =17,
+ CV_CAP_PROP_RECTIFICATION =18,
+ CV_CAP_PROP_MONOCROME =19,
+ CV_CAP_PROP_SHARPNESS =20,
+ CV_CAP_PROP_AUTO_EXPOSURE =21, // exposure control done by camera,
+ // user can adjust refernce level
+ // using this feature
+ CV_CAP_PROP_GAMMA =22,
+ CV_CAP_PROP_TEMPERATURE =23,
+ CV_CAP_PROP_TRIGGER =24,
+ CV_CAP_PROP_TRIGGER_DELAY =25,
+ CV_CAP_PROP_WHITE_BALANCE_V =26,
+ CV_CAP_PROP_ZOOM =27,
+ CV_CAP_PROP_FOCUS =28,
+ CV_CAP_PROP_GUID =29,
+ CV_CAP_PROP_ISO_SPEED =30,
+ CV_CAP_PROP_MAX_DC1394 =31,
+ CV_CAP_PROP_BACKLIGHT =32,
+ CV_CAP_PROP_PAN =33,
+ CV_CAP_PROP_TILT =34,
+ CV_CAP_PROP_ROLL =35,
+ CV_CAP_PROP_IRIS =36,
+ CV_CAP_PROP_SETTINGS =37,
+ CV_CAP_PROP_BUFFERSIZE =38,
+
+ CV_CAP_PROP_AUTOGRAB =1024, // property for highgui class CvCapture_Android only
+ CV_CAP_PROP_SUPPORTED_PREVIEW_SIZES_STRING=1025, // readonly, tricky property, returns cpnst char* indeed
+ CV_CAP_PROP_PREVIEW_FORMAT=1026, // readonly, tricky property, returns cpnst char* indeed
+
+ // OpenNI map generators
+ CV_CAP_OPENNI_DEPTH_GENERATOR = 1 << 31,
+ CV_CAP_OPENNI_IMAGE_GENERATOR = 1 << 30,
+ CV_CAP_OPENNI_GENERATORS_MASK = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_OPENNI_IMAGE_GENERATOR,
+
+ // Properties of cameras available through OpenNI interfaces
+ CV_CAP_PROP_OPENNI_OUTPUT_MODE = 100,
+ CV_CAP_PROP_OPENNI_FRAME_MAX_DEPTH = 101, // in mm
+ CV_CAP_PROP_OPENNI_BASELINE = 102, // in mm
+ CV_CAP_PROP_OPENNI_FOCAL_LENGTH = 103, // in pixels
+ CV_CAP_PROP_OPENNI_REGISTRATION = 104, // flag
+ CV_CAP_PROP_OPENNI_REGISTRATION_ON = CV_CAP_PROP_OPENNI_REGISTRATION, // flag that synchronizes the remapping depth map to image map
+ // by changing depth generator's view point (if the flag is "on") or
+ // sets this view point to its normal one (if the flag is "off").
+ CV_CAP_PROP_OPENNI_APPROX_FRAME_SYNC = 105,
+ CV_CAP_PROP_OPENNI_MAX_BUFFER_SIZE = 106,
+ CV_CAP_PROP_OPENNI_CIRCLE_BUFFER = 107,
+ CV_CAP_PROP_OPENNI_MAX_TIME_DURATION = 108,
+
+ CV_CAP_PROP_OPENNI_GENERATOR_PRESENT = 109,
+
+ CV_CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_GENERATOR_PRESENT,
+ CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_OUTPUT_MODE,
+ CV_CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_BASELINE,
+ CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_FOCAL_LENGTH,
+ CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_REGISTRATION,
+ CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION,
+
+ // Properties of cameras available through GStreamer interface
+ CV_CAP_GSTREAMER_QUEUE_LENGTH = 200, // default is 1
+
+ // PVAPI
+ CV_CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast
+ CV_CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, // FrameStartTriggerMode: Determines how a frame is initiated
+ CV_CAP_PROP_PVAPI_DECIMATIONHORIZONTAL = 302, // Horizontal sub-sampling of the image
+ CV_CAP_PROP_PVAPI_DECIMATIONVERTICAL = 303, // Vertical sub-sampling of the image
+ CV_CAP_PROP_PVAPI_BINNINGX = 304, // Horizontal binning factor
+ CV_CAP_PROP_PVAPI_BINNINGY = 305, // Vertical binning factor
+ CV_CAP_PROP_PVAPI_PIXELFORMAT = 306, // Pixel format
+
+ // Properties of cameras available through XIMEA SDK interface
+ CV_CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping.
+ CV_CAP_PROP_XI_DATA_FORMAT = 401, // Output data format.
+ CV_CAP_PROP_XI_OFFSET_X = 402, // Horizontal offset from the origin to the area of interest (in pixels).
+ CV_CAP_PROP_XI_OFFSET_Y = 403, // Vertical offset from the origin to the area of interest (in pixels).
+ CV_CAP_PROP_XI_TRG_SOURCE = 404, // Defines source of trigger.
+ CV_CAP_PROP_XI_TRG_SOFTWARE = 405, // Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE.
+ CV_CAP_PROP_XI_GPI_SELECTOR = 406, // Selects general purpose input
+ CV_CAP_PROP_XI_GPI_MODE = 407, // Set general purpose input mode
+ CV_CAP_PROP_XI_GPI_LEVEL = 408, // Get general purpose level
+ CV_CAP_PROP_XI_GPO_SELECTOR = 409, // Selects general purpose output
+ CV_CAP_PROP_XI_GPO_MODE = 410, // Set general purpose output mode
+ CV_CAP_PROP_XI_LED_SELECTOR = 411, // Selects camera signalling LED
+ CV_CAP_PROP_XI_LED_MODE = 412, // Define camera signalling LED functionality
+ CV_CAP_PROP_XI_MANUAL_WB = 413, // Calculates White Balance(must be called during acquisition)
+ CV_CAP_PROP_XI_AUTO_WB = 414, // Automatic white balance
+ CV_CAP_PROP_XI_AEAG = 415, // Automatic exposure/gain
+ CV_CAP_PROP_XI_EXP_PRIORITY = 416, // Exposure priority (0.5 - exposure 50%, gain 50%).
+ CV_CAP_PROP_XI_AE_MAX_LIMIT = 417, // Maximum limit of exposure in AEAG procedure
+ CV_CAP_PROP_XI_AG_MAX_LIMIT = 418, // Maximum limit of gain in AEAG procedure
+ CV_CAP_PROP_XI_AEAG_LEVEL = 419, // Average intensity of output signal AEAG should achieve(in %)
+ CV_CAP_PROP_XI_TIMEOUT = 420, // Image capture timeout in milliseconds
+
+ // Properties for Android cameras
+ CV_CAP_PROP_ANDROID_FLASH_MODE = 8001,
+ CV_CAP_PROP_ANDROID_FOCUS_MODE = 8002,
+ CV_CAP_PROP_ANDROID_WHITE_BALANCE = 8003,
+ CV_CAP_PROP_ANDROID_ANTIBANDING = 8004,
+ CV_CAP_PROP_ANDROID_FOCAL_LENGTH = 8005,
+ CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_NEAR = 8006,
+ CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_OPTIMAL = 8007,
+ CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_FAR = 8008,
+ CV_CAP_PROP_ANDROID_EXPOSE_LOCK = 8009,
+ CV_CAP_PROP_ANDROID_WHITEBALANCE_LOCK = 8010,
+
+ // Properties of cameras available through AVFOUNDATION interface
+ CV_CAP_PROP_IOS_DEVICE_FOCUS = 9001,
+ CV_CAP_PROP_IOS_DEVICE_EXPOSURE = 9002,
+ CV_CAP_PROP_IOS_DEVICE_FLASH = 9003,
+ CV_CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004,
+ CV_CAP_PROP_IOS_DEVICE_TORCH = 9005,
+
+ // Properties of cameras available through Smartek Giganetix Ethernet Vision interface
+ /* --- Vladimir Litvinenko (litvinenko.vladimir@gmail.com) --- */
+ CV_CAP_PROP_GIGA_FRAME_OFFSET_X = 10001,
+ CV_CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002,
+ CV_CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003,
+ CV_CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004,
+ CV_CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005,
+ CV_CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006,
+
+ CV_CAP_PROP_INTELPERC_PROFILE_COUNT = 11001,
+ CV_CAP_PROP_INTELPERC_PROFILE_IDX = 11002,
+ CV_CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE = 11003,
+ CV_CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE = 11004,
+ CV_CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD = 11005,
+ CV_CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ = 11006,
+ CV_CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT = 11007,
+
+ // Intel PerC streams
+ CV_CAP_INTELPERC_DEPTH_GENERATOR = 1 << 29,
+ CV_CAP_INTELPERC_IMAGE_GENERATOR = 1 << 28,
+ CV_CAP_INTELPERC_GENERATORS_MASK = CV_CAP_INTELPERC_DEPTH_GENERATOR + CV_CAP_INTELPERC_IMAGE_GENERATOR
+};
+
+enum
+{
+ // Data given from depth generator.
+ CV_CAP_OPENNI_DEPTH_MAP = 0, // Depth values in mm (CV_16UC1)
+ CV_CAP_OPENNI_POINT_CLOUD_MAP = 1, // XYZ in meters (CV_32FC3)
+ CV_CAP_OPENNI_DISPARITY_MAP = 2, // Disparity in pixels (CV_8UC1)
+ CV_CAP_OPENNI_DISPARITY_MAP_32F = 3, // Disparity in pixels (CV_32FC1)
+ CV_CAP_OPENNI_VALID_DEPTH_MASK = 4, // CV_8UC1
+
+ // Data given from RGB image generator.
+ CV_CAP_OPENNI_BGR_IMAGE = 5,
+ CV_CAP_OPENNI_GRAY_IMAGE = 6
+};
+
+// Supported output modes of OpenNI image generator
+enum
+{
+ CV_CAP_OPENNI_VGA_30HZ = 0,
+ CV_CAP_OPENNI_SXGA_15HZ = 1,
+ CV_CAP_OPENNI_SXGA_30HZ = 2,
+ CV_CAP_OPENNI_QVGA_30HZ = 3,
+ CV_CAP_OPENNI_QVGA_60HZ = 4
+};
+
+//supported by Android camera output formats
+enum
+{
+ CV_CAP_ANDROID_COLOR_FRAME_BGR = 0, //BGR
+ CV_CAP_ANDROID_COLOR_FRAME = CV_CAP_ANDROID_COLOR_FRAME_BGR,
+ CV_CAP_ANDROID_GREY_FRAME = 1, //Y
+ CV_CAP_ANDROID_COLOR_FRAME_RGB = 2,
+ CV_CAP_ANDROID_COLOR_FRAME_BGRA = 3,
+ CV_CAP_ANDROID_COLOR_FRAME_RGBA = 4
+};
+
+// supported Android camera flash modes
+enum
+{
+ CV_CAP_ANDROID_FLASH_MODE_AUTO = 0,
+ CV_CAP_ANDROID_FLASH_MODE_OFF,
+ CV_CAP_ANDROID_FLASH_MODE_ON,
+ CV_CAP_ANDROID_FLASH_MODE_RED_EYE,
+ CV_CAP_ANDROID_FLASH_MODE_TORCH
+};
+
+// supported Android camera focus modes
+enum
+{
+ CV_CAP_ANDROID_FOCUS_MODE_AUTO = 0,
+ CV_CAP_ANDROID_FOCUS_MODE_CONTINUOUS_PICTURE,
+ CV_CAP_ANDROID_FOCUS_MODE_CONTINUOUS_VIDEO,
+ CV_CAP_ANDROID_FOCUS_MODE_EDOF,
+ CV_CAP_ANDROID_FOCUS_MODE_FIXED,
+ CV_CAP_ANDROID_FOCUS_MODE_INFINITY,
+ CV_CAP_ANDROID_FOCUS_MODE_MACRO
+};
+
+// supported Android camera white balance modes
+enum
+{
+ CV_CAP_ANDROID_WHITE_BALANCE_AUTO = 0,
+ CV_CAP_ANDROID_WHITE_BALANCE_CLOUDY_DAYLIGHT,
+ CV_CAP_ANDROID_WHITE_BALANCE_DAYLIGHT,
+ CV_CAP_ANDROID_WHITE_BALANCE_FLUORESCENT,
+ CV_CAP_ANDROID_WHITE_BALANCE_INCANDESCENT,
+ CV_CAP_ANDROID_WHITE_BALANCE_SHADE,
+ CV_CAP_ANDROID_WHITE_BALANCE_TWILIGHT,
+ CV_CAP_ANDROID_WHITE_BALANCE_WARM_FLUORESCENT
+};
+
+// supported Android camera antibanding modes
+enum
+{
+ CV_CAP_ANDROID_ANTIBANDING_50HZ = 0,
+ CV_CAP_ANDROID_ANTIBANDING_60HZ,
+ CV_CAP_ANDROID_ANTIBANDING_AUTO,
+ CV_CAP_ANDROID_ANTIBANDING_OFF
+};
+
+enum
+{
+ CV_CAP_INTELPERC_DEPTH_MAP = 0, // Each pixel is a 16-bit integer. The value indicates the distance from an object to the camera's XY plane or the Cartesian depth.
+ CV_CAP_INTELPERC_UVDEPTH_MAP = 1, // Each pixel contains two 32-bit floating point values in the range of 0-1, representing the mapping of depth coordinates to the color coordinates.
+ CV_CAP_INTELPERC_IR_MAP = 2, // Each pixel is a 16-bit integer. The value indicates the intensity of the reflected laser beam.
+ CV_CAP_INTELPERC_IMAGE = 3
+};
+
+/* retrieve or set capture properties */
+CVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id );
+CVAPI(int) cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
+
+// Return the type of the capturer (eg, CV_CAP_V4W, CV_CAP_UNICAP), which is unknown if created with CV_CAP_ANY
+CVAPI(int) cvGetCaptureDomain( CvCapture* capture);
+
+/* "black box" video file writer structure */
+typedef struct CvVideoWriter CvVideoWriter;
+
+#define CV_FOURCC_MACRO(c1, c2, c3, c4) (((c1) & 255) + (((c2) & 255) << 8) + (((c3) & 255) << 16) + (((c4) & 255) << 24))
+
+CV_INLINE int CV_FOURCC(char c1, char c2, char c3, char c4)
+{
+ return CV_FOURCC_MACRO(c1, c2, c3, c4);
+}
+
+#define CV_FOURCC_PROMPT -1 /* Open Codec Selection Dialog (Windows only) */
+#define CV_FOURCC_DEFAULT CV_FOURCC('I', 'Y', 'U', 'V') /* Use default codec for specified filename (Linux only) */
+
+/* initialize video file writer */
+CVAPI(CvVideoWriter*) cvCreateVideoWriter( const char* filename, int fourcc,
+ double fps, CvSize frame_size,
+ int is_color CV_DEFAULT(1));
+
+//CVAPI(CvVideoWriter*) cvCreateImageSequenceWriter( const char* filename,
+// int is_color CV_DEFAULT(1));
+
+/* write frame to video file */
+CVAPI(int) cvWriteFrame( CvVideoWriter* writer, const IplImage* image );
+
+/* close video file writer */
+CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer );
+
+/****************************************************************************************\
+* Obsolete functions/synonyms *
+\****************************************************************************************/
+
+#define cvCaptureFromFile cvCreateFileCapture
+#define cvCaptureFromCAM cvCreateCameraCapture
+#define cvCaptureFromAVI cvCaptureFromFile
+#define cvCreateAVIWriter cvCreateVideoWriter
+#define cvWriteToAVI cvWriteFrame
+#define cvAddSearchPath(path)
+#define cvvInitSystem cvInitSystem
+#define cvvNamedWindow cvNamedWindow
+#define cvvShowImage cvShowImage
+#define cvvResizeWindow cvResizeWindow
+#define cvvDestroyWindow cvDestroyWindow
+#define cvvCreateTrackbar cvCreateTrackbar
+#define cvvLoadImage(name) cvLoadImage((name),1)
+#define cvvSaveImage cvSaveImage
+#define cvvAddSearchPath cvAddSearchPath
+#define cvvWaitKey(name) cvWaitKey(0)
+#define cvvWaitKeyEx(name,delay) cvWaitKey(delay)
+#define cvvConvertImage cvConvertImage
+#define HG_AUTOSIZE CV_WINDOW_AUTOSIZE
+#define set_preprocess_func cvSetPreprocessFuncWin32
+#define set_postprocess_func cvSetPostprocessFuncWin32
+
+#if defined WIN32 || defined _WIN32
+
+CVAPI(void) cvSetPreprocessFuncWin32_(const void* callback);
+CVAPI(void) cvSetPostprocessFuncWin32_(const void* callback);
+#define cvSetPreprocessFuncWin32(callback) cvSetPreprocessFuncWin32_((const void*)(callback))
+#define cvSetPostprocessFuncWin32(callback) cvSetPostprocessFuncWin32_((const void*)(callback))
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/ios.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/ios.h
new file mode 100644
index 00000000..a7f0395d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/highgui/ios.h
@@ -0,0 +1,49 @@
+
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/core/core.hpp"
+#import "opencv2/highgui/cap_ios.h"
+
+UIImage* MatToUIImage(const cv::Mat& image);
+void UIImageToMat(const UIImage* image,
+ cv::Mat& m, bool alphaExist = false);
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc.hpp
new file mode 100644
index 00000000..112f7232
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/imgproc/imgproc.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc.hpp
new file mode 100644
index 00000000..aa6a5f6c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc.hpp
@@ -0,0 +1,1299 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_IMGPROC_HPP__
+#define __OPENCV_IMGPROC_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/types_c.h"
+
+#ifdef __cplusplus
+
+/*! \namespace cv
+ Namespace where all the C++ OpenCV functionality resides
+ */
+namespace cv
+{
+
+//! various border interpolation methods
+enum { BORDER_REPLICATE=IPL_BORDER_REPLICATE, BORDER_CONSTANT=IPL_BORDER_CONSTANT,
+ BORDER_REFLECT=IPL_BORDER_REFLECT, BORDER_WRAP=IPL_BORDER_WRAP,
+ BORDER_REFLECT_101=IPL_BORDER_REFLECT_101, BORDER_REFLECT101=BORDER_REFLECT_101,
+ BORDER_TRANSPARENT=IPL_BORDER_TRANSPARENT,
+ BORDER_DEFAULT=BORDER_REFLECT_101, BORDER_ISOLATED=16 };
+
+//! 1D interpolation function: returns coordinate of the "donor" pixel for the specified location p.
+CV_EXPORTS_W int borderInterpolate( int p, int len, int borderType );
+
+/*!
+ The Base Class for 1D or Row-wise Filters
+
+ This is the base class for linear or non-linear filters that process 1D data.
+ In particular, such filters are used for the "horizontal" filtering parts in separable filters.
+
+ Several functions in OpenCV return Ptr<BaseRowFilter> for the specific types of filters,
+ and those pointers can be used directly or within cv::FilterEngine.
+*/
+class CV_EXPORTS BaseRowFilter
+{
+public:
+ //! the default constructor
+ BaseRowFilter();
+ //! the destructor
+ virtual ~BaseRowFilter();
+ //! the filtering operator. Must be overridden in the derived classes. The horizontal border interpolation is done outside of the class.
+ virtual void operator()(const uchar* src, uchar* dst,
+ int width, int cn) = 0;
+ int ksize, anchor;
+};
+
+
+/*!
+ The Base Class for Column-wise Filters
+
+ This is the base class for linear or non-linear filters that process columns of 2D arrays.
+ Such filters are used for the "vertical" filtering parts in separable filters.
+
+ Several functions in OpenCV return Ptr<BaseColumnFilter> for the specific types of filters,
+ and those pointers can be used directly or within cv::FilterEngine.
+
+ Unlike cv::BaseRowFilter, cv::BaseColumnFilter may have some context information,
+ i.e. box filter keeps the sliding sum of elements. To reset the state BaseColumnFilter::reset()
+ must be called (e.g. the method is called by cv::FilterEngine)
+ */
+class CV_EXPORTS BaseColumnFilter
+{
+public:
+ //! the default constructor
+ BaseColumnFilter();
+ //! the destructor
+ virtual ~BaseColumnFilter();
+ //! the filtering operator. Must be overridden in the derived classes. The vertical border interpolation is done outside of the class.
+ virtual void operator()(const uchar** src, uchar* dst, int dststep,
+ int dstcount, int width) = 0;
+ //! resets the internal buffers, if any
+ virtual void reset();
+ int ksize, anchor;
+};
+
+/*!
+ The Base Class for Non-Separable 2D Filters.
+
+ This is the base class for linear or non-linear 2D filters.
+
+ Several functions in OpenCV return Ptr<BaseFilter> for the specific types of filters,
+ and those pointers can be used directly or within cv::FilterEngine.
+
+ Similar to cv::BaseColumnFilter, the class may have some context information,
+ that should be reset using BaseFilter::reset() method before processing the new array.
+*/
+class CV_EXPORTS BaseFilter
+{
+public:
+ //! the default constructor
+ BaseFilter();
+ //! the destructor
+ virtual ~BaseFilter();
+ //! the filtering operator. The horizontal and the vertical border interpolation is done outside of the class.
+ virtual void operator()(const uchar** src, uchar* dst, int dststep,
+ int dstcount, int width, int cn) = 0;
+ //! resets the internal buffers, if any
+ virtual void reset();
+ Size ksize;
+ Point anchor;
+};
+
+/*!
+ The Main Class for Image Filtering.
+
+ The class can be used to apply an arbitrary filtering operation to an image.
+ It contains all the necessary intermediate buffers, it computes extrapolated values
+ of the "virtual" pixels outside of the image etc.
+ Pointers to the initialized cv::FilterEngine instances
+ are returned by various OpenCV functions, such as cv::createSeparableLinearFilter(),
+ cv::createLinearFilter(), cv::createGaussianFilter(), cv::createDerivFilter(),
+ cv::createBoxFilter() and cv::createMorphologyFilter().
+
+ Using the class you can process large images by parts and build complex pipelines
+ that include filtering as some of the stages. If all you need is to apply some pre-defined
+ filtering operation, you may use cv::filter2D(), cv::erode(), cv::dilate() etc.
+ functions that create FilterEngine internally.
+
+ Here is the example on how to use the class to implement Laplacian operator, which is the sum of
+ second-order derivatives. More complex variant for different types is implemented in cv::Laplacian().
+
+ \code
+ void laplace_f(const Mat& src, Mat& dst)
+ {
+ CV_Assert( src.type() == CV_32F );
+ // make sure the destination array has the proper size and type
+ dst.create(src.size(), src.type());
+
+ // get the derivative and smooth kernels for d2I/dx2.
+ // for d2I/dy2 we could use the same kernels, just swapped
+ Mat kd, ks;
+ getSobelKernels( kd, ks, 2, 0, ksize, false, ktype );
+
+ // let's process 10 source rows at once
+ int DELTA = std::min(10, src.rows);
+ Ptr<FilterEngine> Fxx = createSeparableLinearFilter(src.type(),
+ dst.type(), kd, ks, Point(-1,-1), 0, borderType, borderType, Scalar() );
+ Ptr<FilterEngine> Fyy = createSeparableLinearFilter(src.type(),
+ dst.type(), ks, kd, Point(-1,-1), 0, borderType, borderType, Scalar() );
+
+ int y = Fxx->start(src), dsty = 0, dy = 0;
+ Fyy->start(src);
+ const uchar* sptr = src.data + y*src.step;
+
+ // allocate the buffers for the spatial image derivatives;
+ // the buffers need to have more than DELTA rows, because at the
+ // last iteration the output may take max(kd.rows-1,ks.rows-1)
+ // rows more than the input.
+ Mat Ixx( DELTA + kd.rows - 1, src.cols, dst.type() );
+ Mat Iyy( DELTA + kd.rows - 1, src.cols, dst.type() );
+
+ // inside the loop we always pass DELTA rows to the filter
+ // (note that the "proceed" method takes care of possibe overflow, since
+ // it was given the actual image height in the "start" method)
+ // on output we can get:
+ // * < DELTA rows (the initial buffer accumulation stage)
+ // * = DELTA rows (settled state in the middle)
+ // * > DELTA rows (then the input image is over, but we generate
+ // "virtual" rows using the border mode and filter them)
+ // this variable number of output rows is dy.
+ // dsty is the current output row.
+ // sptr is the pointer to the first input row in the portion to process
+ for( ; dsty < dst.rows; sptr += DELTA*src.step, dsty += dy )
+ {
+ Fxx->proceed( sptr, (int)src.step, DELTA, Ixx.data, (int)Ixx.step );
+ dy = Fyy->proceed( sptr, (int)src.step, DELTA, d2y.data, (int)Iyy.step );
+ if( dy > 0 )
+ {
+ Mat dstripe = dst.rowRange(dsty, dsty + dy);
+ add(Ixx.rowRange(0, dy), Iyy.rowRange(0, dy), dstripe);
+ }
+ }
+ }
+ \endcode
+*/
+class CV_EXPORTS FilterEngine
+{
+public:
+ //! the default constructor
+ FilterEngine();
+ //! the full constructor. Either _filter2D or both _rowFilter and _columnFilter must be non-empty.
+ FilterEngine(const Ptr<BaseFilter>& _filter2D,
+ const Ptr<BaseRowFilter>& _rowFilter,
+ const Ptr<BaseColumnFilter>& _columnFilter,
+ int srcType, int dstType, int bufType,
+ int _rowBorderType=BORDER_REPLICATE,
+ int _columnBorderType=-1,
+ const Scalar& _borderValue=Scalar());
+ //! the destructor
+ virtual ~FilterEngine();
+ //! reinitializes the engine. The previously assigned filters are released.
+ void init(const Ptr<BaseFilter>& _filter2D,
+ const Ptr<BaseRowFilter>& _rowFilter,
+ const Ptr<BaseColumnFilter>& _columnFilter,
+ int srcType, int dstType, int bufType,
+ int _rowBorderType=BORDER_REPLICATE, int _columnBorderType=-1,
+ const Scalar& _borderValue=Scalar());
+ //! starts filtering of the specified ROI of an image of size wholeSize.
+ virtual int start(Size wholeSize, Rect roi, int maxBufRows=-1);
+ //! starts filtering of the specified ROI of the specified image.
+ virtual int start(const Mat& src, const Rect& srcRoi=Rect(0,0,-1,-1),
+ bool isolated=false, int maxBufRows=-1);
+ //! processes the next srcCount rows of the image.
+ virtual int proceed(const uchar* src, int srcStep, int srcCount,
+ uchar* dst, int dstStep);
+ //! applies filter to the specified ROI of the image. if srcRoi=(0,0,-1,-1), the whole image is filtered.
+ virtual void apply( const Mat& src, Mat& dst,
+ const Rect& srcRoi=Rect(0,0,-1,-1),
+ Point dstOfs=Point(0,0),
+ bool isolated=false);
+ //! returns true if the filter is separable
+ bool isSeparable() const { return (const BaseFilter*)filter2D == 0; }
+ //! returns the number
+ int remainingInputRows() const;
+ int remainingOutputRows() const;
+
+ int srcType, dstType, bufType;
+ Size ksize;
+ Point anchor;
+ int maxWidth;
+ Size wholeSize;
+ Rect roi;
+ int dx1, dx2;
+ int rowBorderType, columnBorderType;
+ vector<int> borderTab;
+ int borderElemSize;
+ vector<uchar> ringBuf;
+ vector<uchar> srcRow;
+ vector<uchar> constBorderValue;
+ vector<uchar> constBorderRow;
+ int bufStep, startY, startY0, endY, rowCount, dstY;
+ vector<uchar*> rows;
+
+ Ptr<BaseFilter> filter2D;
+ Ptr<BaseRowFilter> rowFilter;
+ Ptr<BaseColumnFilter> columnFilter;
+};
+
+//! type of the kernel
+enum { KERNEL_GENERAL=0, KERNEL_SYMMETRICAL=1, KERNEL_ASYMMETRICAL=2,
+ KERNEL_SMOOTH=4, KERNEL_INTEGER=8 };
+
+//! returns type (one of KERNEL_*) of 1D or 2D kernel specified by its coefficients.
+CV_EXPORTS int getKernelType(InputArray kernel, Point anchor);
+
+//! returns the primitive row filter with the specified kernel
+CV_EXPORTS Ptr<BaseRowFilter> getLinearRowFilter(int srcType, int bufType,
+ InputArray kernel, int anchor,
+ int symmetryType);
+
+//! returns the primitive column filter with the specified kernel
+CV_EXPORTS Ptr<BaseColumnFilter> getLinearColumnFilter(int bufType, int dstType,
+ InputArray kernel, int anchor,
+ int symmetryType, double delta=0,
+ int bits=0);
+
+//! returns 2D filter with the specified kernel
+CV_EXPORTS Ptr<BaseFilter> getLinearFilter(int srcType, int dstType,
+ InputArray kernel,
+ Point anchor=Point(-1,-1),
+ double delta=0, int bits=0);
+
+//! returns the separable linear filter engine
+CV_EXPORTS Ptr<FilterEngine> createSeparableLinearFilter(int srcType, int dstType,
+ InputArray rowKernel, InputArray columnKernel,
+ Point anchor=Point(-1,-1), double delta=0,
+ int rowBorderType=BORDER_DEFAULT,
+ int columnBorderType=-1,
+ const Scalar& borderValue=Scalar());
+
+//! returns the non-separable linear filter engine
+CV_EXPORTS Ptr<FilterEngine> createLinearFilter(int srcType, int dstType,
+ InputArray kernel, Point _anchor=Point(-1,-1),
+ double delta=0, int rowBorderType=BORDER_DEFAULT,
+ int columnBorderType=-1, const Scalar& borderValue=Scalar());
+
+//! returns the Gaussian kernel with the specified parameters
+CV_EXPORTS_W Mat getGaussianKernel( int ksize, double sigma, int ktype=CV_64F );
+
+//! returns the Gaussian filter engine
+CV_EXPORTS Ptr<FilterEngine> createGaussianFilter( int type, Size ksize,
+ double sigma1, double sigma2=0,
+ int borderType=BORDER_DEFAULT);
+//! initializes kernels of the generalized Sobel operator
+CV_EXPORTS_W void getDerivKernels( OutputArray kx, OutputArray ky,
+ int dx, int dy, int ksize,
+ bool normalize=false, int ktype=CV_32F );
+//! returns filter engine for the generalized Sobel operator
+CV_EXPORTS Ptr<FilterEngine> createDerivFilter( int srcType, int dstType,
+ int dx, int dy, int ksize,
+ int borderType=BORDER_DEFAULT );
+//! returns horizontal 1D box filter
+CV_EXPORTS Ptr<BaseRowFilter> getRowSumFilter(int srcType, int sumType,
+ int ksize, int anchor=-1);
+//! returns vertical 1D box filter
+CV_EXPORTS Ptr<BaseColumnFilter> getColumnSumFilter( int sumType, int dstType,
+ int ksize, int anchor=-1,
+ double scale=1);
+//! returns box filter engine
+CV_EXPORTS Ptr<FilterEngine> createBoxFilter( int srcType, int dstType, Size ksize,
+ Point anchor=Point(-1,-1),
+ bool normalize=true,
+ int borderType=BORDER_DEFAULT);
+
+//! returns the Gabor kernel with the specified parameters
+CV_EXPORTS_W Mat getGaborKernel( Size ksize, double sigma, double theta, double lambd,
+ double gamma, double psi=CV_PI*0.5, int ktype=CV_64F );
+
+//! type of morphological operation
+enum { MORPH_ERODE=CV_MOP_ERODE, MORPH_DILATE=CV_MOP_DILATE,
+ MORPH_OPEN=CV_MOP_OPEN, MORPH_CLOSE=CV_MOP_CLOSE,
+ MORPH_GRADIENT=CV_MOP_GRADIENT, MORPH_TOPHAT=CV_MOP_TOPHAT,
+ MORPH_BLACKHAT=CV_MOP_BLACKHAT, MORPH_HITMISS };
+
+//! returns horizontal 1D morphological filter
+CV_EXPORTS Ptr<BaseRowFilter> getMorphologyRowFilter(int op, int type, int ksize, int anchor=-1);
+//! returns vertical 1D morphological filter
+CV_EXPORTS Ptr<BaseColumnFilter> getMorphologyColumnFilter(int op, int type, int ksize, int anchor=-1);
+//! returns 2D morphological filter
+CV_EXPORTS Ptr<BaseFilter> getMorphologyFilter(int op, int type, InputArray kernel,
+ Point anchor=Point(-1,-1));
+
+//! returns "magic" border value for erosion and dilation. It is automatically transformed to Scalar::all(-DBL_MAX) for dilation.
+static inline Scalar morphologyDefaultBorderValue() { return Scalar::all(DBL_MAX); }
+
+//! returns morphological filter engine. Only MORPH_ERODE and MORPH_DILATE are supported.
+CV_EXPORTS Ptr<FilterEngine> createMorphologyFilter(int op, int type, InputArray kernel,
+ Point anchor=Point(-1,-1), int rowBorderType=BORDER_CONSTANT,
+ int columnBorderType=-1,
+ const Scalar& borderValue=morphologyDefaultBorderValue());
+
+//! shape of the structuring element
+enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };
+//! returns structuring element of the specified shape and size
+CV_EXPORTS_W Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1));
+
+template<> CV_EXPORTS void Ptr<IplConvKernel>::delete_obj();
+
+//! copies 2D array to a larger destination array with extrapolation of the outer part of src using the specified border mode
+CV_EXPORTS_W void copyMakeBorder( InputArray src, OutputArray dst,
+ int top, int bottom, int left, int right,
+ int borderType, const Scalar& value=Scalar() );
+
+//! smooths the image using median filter.
+CV_EXPORTS_W void medianBlur( InputArray src, OutputArray dst, int ksize );
+//! smooths the image using Gaussian filter.
+CV_EXPORTS_W void GaussianBlur( InputArray src,
+ OutputArray dst, Size ksize,
+ double sigmaX, double sigmaY=0,
+ int borderType=BORDER_DEFAULT );
+//! smooths the image using bilateral filter
+CV_EXPORTS_W void bilateralFilter( InputArray src, OutputArray dst, int d,
+ double sigmaColor, double sigmaSpace,
+ int borderType=BORDER_DEFAULT );
+//! smooths the image using adaptive bilateral filter
+CV_EXPORTS_W void adaptiveBilateralFilter( InputArray src, OutputArray dst, Size ksize,
+ double sigmaSpace, double maxSigmaColor = 20.0, Point anchor=Point(-1, -1),
+ int borderType=BORDER_DEFAULT );
+//! smooths the image using the box filter. Each pixel is processed in O(1) time
+CV_EXPORTS_W void boxFilter( InputArray src, OutputArray dst, int ddepth,
+ Size ksize, Point anchor=Point(-1,-1),
+ bool normalize=true,
+ int borderType=BORDER_DEFAULT );
+//! a synonym for normalized box filter
+CV_EXPORTS_W void blur( InputArray src, OutputArray dst,
+ Size ksize, Point anchor=Point(-1,-1),
+ int borderType=BORDER_DEFAULT );
+
+//! applies non-separable 2D linear filter to the image
+CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,
+ InputArray kernel, Point anchor=Point(-1,-1),
+ double delta=0, int borderType=BORDER_DEFAULT );
+
+//! applies separable 2D linear filter to the image
+CV_EXPORTS_W void sepFilter2D( InputArray src, OutputArray dst, int ddepth,
+ InputArray kernelX, InputArray kernelY,
+ Point anchor=Point(-1,-1),
+ double delta=0, int borderType=BORDER_DEFAULT );
+
+//! applies generalized Sobel operator to the image
+CV_EXPORTS_W void Sobel( InputArray src, OutputArray dst, int ddepth,
+ int dx, int dy, int ksize=3,
+ double scale=1, double delta=0,
+ int borderType=BORDER_DEFAULT );
+
+//! applies the vertical or horizontal Scharr operator to the image
+CV_EXPORTS_W void Scharr( InputArray src, OutputArray dst, int ddepth,
+ int dx, int dy, double scale=1, double delta=0,
+ int borderType=BORDER_DEFAULT );
+
+//! applies Laplacian operator to the image
+CV_EXPORTS_W void Laplacian( InputArray src, OutputArray dst, int ddepth,
+ int ksize=1, double scale=1, double delta=0,
+ int borderType=BORDER_DEFAULT );
+
+//! applies Canny edge detector and produces the edge map.
+CV_EXPORTS_W void Canny( InputArray image, OutputArray edges,
+ double threshold1, double threshold2,
+ int apertureSize=3, bool L2gradient=false );
+
+//! computes minimum eigen value of 2x2 derivative covariation matrix at each pixel - the cornerness criteria
+CV_EXPORTS_W void cornerMinEigenVal( InputArray src, OutputArray dst,
+ int blockSize, int ksize=3,
+ int borderType=BORDER_DEFAULT );
+
+//! computes Harris cornerness criteria at each image pixel
+CV_EXPORTS_W void cornerHarris( InputArray src, OutputArray dst, int blockSize,
+ int ksize, double k,
+ int borderType=BORDER_DEFAULT );
+
+// low-level function for computing eigenvalues and eigenvectors of 2x2 matrices
+CV_EXPORTS void eigen2x2( const float* a, float* e, int n );
+
+//! computes both eigenvalues and the eigenvectors of 2x2 derivative covariation matrix at each pixel. The output is stored as 6-channel matrix.
+CV_EXPORTS_W void cornerEigenValsAndVecs( InputArray src, OutputArray dst,
+ int blockSize, int ksize,
+ int borderType=BORDER_DEFAULT );
+
+//! computes another complex cornerness criteria at each pixel
+CV_EXPORTS_W void preCornerDetect( InputArray src, OutputArray dst, int ksize,
+ int borderType=BORDER_DEFAULT );
+
+//! adjusts the corner locations with sub-pixel accuracy to maximize the certain cornerness criteria
+CV_EXPORTS_W void cornerSubPix( InputArray image, InputOutputArray corners,
+ Size winSize, Size zeroZone,
+ TermCriteria criteria );
+
+//! finds the strong enough corners where the cornerMinEigenVal() or cornerHarris() report the local maxima
+CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
+ int maxCorners, double qualityLevel, double minDistance,
+ InputArray mask=noArray(), int blockSize=3,
+ bool useHarrisDetector=false, double k=0.04 );
+
+//! finds lines in the black-n-white image using the standard or pyramid Hough transform
+CV_EXPORTS_W void HoughLines( InputArray image, OutputArray lines,
+ double rho, double theta, int threshold,
+ double srn=0, double stn=0 );
+
+//! finds line segments in the black-n-white image using probabilistic Hough transform
+CV_EXPORTS_W void HoughLinesP( InputArray image, OutputArray lines,
+ double rho, double theta, int threshold,
+ double minLineLength=0, double maxLineGap=0 );
+
+//! finds circles in the grayscale image using 2+1 gradient Hough transform
+CV_EXPORTS_W void HoughCircles( InputArray image, OutputArray circles,
+ int method, double dp, double minDist,
+ double param1=100, double param2=100,
+ int minRadius=0, int maxRadius=0 );
+
+enum
+{
+ GHT_POSITION = 0,
+ GHT_SCALE = 1,
+ GHT_ROTATION = 2
+};
+
+//! finds arbitrary template in the grayscale image using Generalized Hough Transform
+//! Ballard, D.H. (1981). Generalizing the Hough transform to detect arbitrary shapes. Pattern Recognition 13 (2): 111-122.
+//! Guil, N., González-Linares, J.M. and Zapata, E.L. (1999). Bidimensional shape detection using an invariant approach. Pattern Recognition 32 (6): 1025-1038.
+class CV_EXPORTS GeneralizedHough : public Algorithm
+{
+public:
+ static Ptr<GeneralizedHough> create(int method);
+
+ virtual ~GeneralizedHough();
+
+ //! set template to search
+ void setTemplate(InputArray templ, int cannyThreshold = 100, Point templCenter = Point(-1, -1));
+ void setTemplate(InputArray edges, InputArray dx, InputArray dy, Point templCenter = Point(-1, -1));
+
+ //! find template on image
+ void detect(InputArray image, OutputArray positions, OutputArray votes = cv::noArray(), int cannyThreshold = 100);
+ void detect(InputArray edges, InputArray dx, InputArray dy, OutputArray positions, OutputArray votes = cv::noArray());
+
+ void release();
+
+protected:
+ virtual void setTemplateImpl(const Mat& edges, const Mat& dx, const Mat& dy, Point templCenter) = 0;
+ virtual void detectImpl(const Mat& edges, const Mat& dx, const Mat& dy, OutputArray positions, OutputArray votes) = 0;
+ virtual void releaseImpl() = 0;
+
+private:
+ Mat edges_, dx_, dy_;
+};
+
+//! erodes the image (applies the local minimum operator)
+CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel,
+ Point anchor=Point(-1,-1), int iterations=1,
+ int borderType=BORDER_CONSTANT,
+ const Scalar& borderValue=morphologyDefaultBorderValue() );
+
+//! dilates the image (applies the local maximum operator)
+CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,
+ Point anchor=Point(-1,-1), int iterations=1,
+ int borderType=BORDER_CONSTANT,
+ const Scalar& borderValue=morphologyDefaultBorderValue() );
+
+//! applies an advanced morphological operation to the image
+CV_EXPORTS_W void morphologyEx( InputArray src, OutputArray dst,
+ int op, InputArray kernel,
+ Point anchor=Point(-1,-1), int iterations=1,
+ int borderType=BORDER_CONSTANT,
+ const Scalar& borderValue=morphologyDefaultBorderValue() );
+
+//! interpolation algorithm
+enum
+{
+ INTER_NEAREST=CV_INTER_NN, //!< nearest neighbor interpolation
+ INTER_LINEAR=CV_INTER_LINEAR, //!< bilinear interpolation
+ INTER_CUBIC=CV_INTER_CUBIC, //!< bicubic interpolation
+ INTER_AREA=CV_INTER_AREA, //!< area-based (or super) interpolation
+ INTER_LANCZOS4=CV_INTER_LANCZOS4, //!< Lanczos interpolation over 8x8 neighborhood
+ INTER_MAX=7,
+ WARP_INVERSE_MAP=CV_WARP_INVERSE_MAP
+};
+
+//! resizes the image
+CV_EXPORTS_W void resize( InputArray src, OutputArray dst,
+ Size dsize, double fx=0, double fy=0,
+ int interpolation=INTER_LINEAR );
+
+//! warps the image using affine transformation
+CV_EXPORTS_W void warpAffine( InputArray src, OutputArray dst,
+ InputArray M, Size dsize,
+ int flags=INTER_LINEAR,
+ int borderMode=BORDER_CONSTANT,
+ const Scalar& borderValue=Scalar());
+
+//! warps the image using perspective transformation
+CV_EXPORTS_W void warpPerspective( InputArray src, OutputArray dst,
+ InputArray M, Size dsize,
+ int flags=INTER_LINEAR,
+ int borderMode=BORDER_CONSTANT,
+ const Scalar& borderValue=Scalar());
+
+enum
+{
+ INTER_BITS=5, INTER_BITS2=INTER_BITS*2,
+ INTER_TAB_SIZE=(1<<INTER_BITS),
+ INTER_TAB_SIZE2=INTER_TAB_SIZE*INTER_TAB_SIZE
+};
+
+//! warps the image using the precomputed maps. The maps are stored in either floating-point or integer fixed-point format
+CV_EXPORTS_W void remap( InputArray src, OutputArray dst,
+ InputArray map1, InputArray map2,
+ int interpolation, int borderMode=BORDER_CONSTANT,
+ const Scalar& borderValue=Scalar());
+
+//! converts maps for remap from floating-point to fixed-point format or backwards
+CV_EXPORTS_W void convertMaps( InputArray map1, InputArray map2,
+ OutputArray dstmap1, OutputArray dstmap2,
+ int dstmap1type, bool nninterpolation=false );
+
+//! returns 2x3 affine transformation matrix for the planar rotation.
+CV_EXPORTS_W Mat getRotationMatrix2D( Point2f center, double angle, double scale );
+//! returns 3x3 perspective transformation for the corresponding 4 point pairs.
+CV_EXPORTS Mat getPerspectiveTransform( const Point2f src[], const Point2f dst[] );
+//! returns 2x3 affine transformation for the corresponding 3 point pairs.
+CV_EXPORTS Mat getAffineTransform( const Point2f src[], const Point2f dst[] );
+//! computes 2x3 affine transformation matrix that is inverse to the specified 2x3 affine transformation.
+CV_EXPORTS_W void invertAffineTransform( InputArray M, OutputArray iM );
+
+CV_EXPORTS_W Mat getPerspectiveTransform( InputArray src, InputArray dst );
+CV_EXPORTS_W Mat getAffineTransform( InputArray src, InputArray dst );
+
+//! extracts rectangle from the image at sub-pixel location
+CV_EXPORTS_W void getRectSubPix( InputArray image, Size patchSize,
+ Point2f center, OutputArray patch, int patchType=-1 );
+
+//! computes the integral image
+CV_EXPORTS_W void integral( InputArray src, OutputArray sum, int sdepth=-1 );
+
+//! computes the integral image and integral for the squared image
+CV_EXPORTS_AS(integral2) void integral( InputArray src, OutputArray sum,
+ OutputArray sqsum, int sdepth=-1 );
+//! computes the integral image, integral for the squared image and the tilted integral image
+CV_EXPORTS_AS(integral3) void integral( InputArray src, OutputArray sum,
+ OutputArray sqsum, OutputArray tilted,
+ int sdepth=-1 );
+
+//! adds image to the accumulator (dst += src). Unlike cv::add, dst and src can have different types.
+CV_EXPORTS_W void accumulate( InputArray src, InputOutputArray dst,
+ InputArray mask=noArray() );
+//! adds squared src image to the accumulator (dst += src*src).
+CV_EXPORTS_W void accumulateSquare( InputArray src, InputOutputArray dst,
+ InputArray mask=noArray() );
+//! adds product of the 2 images to the accumulator (dst += src1*src2).
+CV_EXPORTS_W void accumulateProduct( InputArray src1, InputArray src2,
+ InputOutputArray dst, InputArray mask=noArray() );
+//! updates the running average (dst = dst*(1-alpha) + src*alpha)
+CV_EXPORTS_W void accumulateWeighted( InputArray src, InputOutputArray dst,
+ double alpha, InputArray mask=noArray() );
+
+//! computes PSNR image/video quality metric
+CV_EXPORTS_W double PSNR(InputArray src1, InputArray src2);
+
+CV_EXPORTS_W Point2d phaseCorrelate(InputArray src1, InputArray src2,
+ InputArray window = noArray());
+CV_EXPORTS_W Point2d phaseCorrelateRes(InputArray src1, InputArray src2,
+ InputArray window, CV_OUT double* response = 0);
+CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type);
+
+//! type of the threshold operation
+enum { THRESH_BINARY=CV_THRESH_BINARY, THRESH_BINARY_INV=CV_THRESH_BINARY_INV,
+ THRESH_TRUNC=CV_THRESH_TRUNC, THRESH_TOZERO=CV_THRESH_TOZERO,
+ THRESH_TOZERO_INV=CV_THRESH_TOZERO_INV, THRESH_MASK=CV_THRESH_MASK,
+ THRESH_OTSU=CV_THRESH_OTSU };
+
+//! applies fixed threshold to the image
+CV_EXPORTS_W double threshold( InputArray src, OutputArray dst,
+ double thresh, double maxval, int type );
+
+//! adaptive threshold algorithm
+enum { ADAPTIVE_THRESH_MEAN_C=0, ADAPTIVE_THRESH_GAUSSIAN_C=1 };
+
+//! applies variable (adaptive) threshold to the image
+CV_EXPORTS_W void adaptiveThreshold( InputArray src, OutputArray dst,
+ double maxValue, int adaptiveMethod,
+ int thresholdType, int blockSize, double C );
+
+//! smooths and downsamples the image
+CV_EXPORTS_W void pyrDown( InputArray src, OutputArray dst,
+ const Size& dstsize=Size(), int borderType=BORDER_DEFAULT );
+//! upsamples and smoothes the image
+CV_EXPORTS_W void pyrUp( InputArray src, OutputArray dst,
+ const Size& dstsize=Size(), int borderType=BORDER_DEFAULT );
+
+//! builds the gaussian pyramid using pyrDown() as a basic operation
+CV_EXPORTS void buildPyramid( InputArray src, OutputArrayOfArrays dst,
+ int maxlevel, int borderType=BORDER_DEFAULT );
+
+//! corrects lens distortion for the given camera matrix and distortion coefficients
+CV_EXPORTS_W void undistort( InputArray src, OutputArray dst,
+ InputArray cameraMatrix,
+ InputArray distCoeffs,
+ InputArray newCameraMatrix=noArray() );
+
+//! initializes maps for cv::remap() to correct lens distortion and optionally rectify the image
+CV_EXPORTS_W void initUndistortRectifyMap( InputArray cameraMatrix, InputArray distCoeffs,
+ InputArray R, InputArray newCameraMatrix,
+ Size size, int m1type, OutputArray map1, OutputArray map2 );
+
+enum
+{
+ PROJ_SPHERICAL_ORTHO = 0,
+ PROJ_SPHERICAL_EQRECT = 1
+};
+
+//! initializes maps for cv::remap() for wide-angle
+CV_EXPORTS_W float initWideAngleProjMap( InputArray cameraMatrix, InputArray distCoeffs,
+ Size imageSize, int destImageWidth,
+ int m1type, OutputArray map1, OutputArray map2,
+ int projType=PROJ_SPHERICAL_EQRECT, double alpha=0);
+
+//! returns the default new camera matrix (by default it is the same as cameraMatrix unless centerPricipalPoint=true)
+CV_EXPORTS_W Mat getDefaultNewCameraMatrix( InputArray cameraMatrix, Size imgsize=Size(),
+ bool centerPrincipalPoint=false );
+
+//! returns points' coordinates after lens distortion correction
+CV_EXPORTS_W void undistortPoints( InputArray src, OutputArray dst,
+ InputArray cameraMatrix, InputArray distCoeffs,
+ InputArray R=noArray(), InputArray P=noArray());
+
+template<> CV_EXPORTS void Ptr<CvHistogram>::delete_obj();
+
+//! computes the joint dense histogram for a set of images.
+CV_EXPORTS void calcHist( const Mat* images, int nimages,
+ const int* channels, InputArray mask,
+ OutputArray hist, int dims, const int* histSize,
+ const float** ranges, bool uniform=true, bool accumulate=false );
+
+//! computes the joint sparse histogram for a set of images.
+CV_EXPORTS void calcHist( const Mat* images, int nimages,
+ const int* channels, InputArray mask,
+ SparseMat& hist, int dims,
+ const int* histSize, const float** ranges,
+ bool uniform=true, bool accumulate=false );
+
+CV_EXPORTS_W void calcHist( InputArrayOfArrays images,
+ const vector<int>& channels,
+ InputArray mask, OutputArray hist,
+ const vector<int>& histSize,
+ const vector<float>& ranges,
+ bool accumulate=false );
+
+//! computes back projection for the set of images
+CV_EXPORTS void calcBackProject( const Mat* images, int nimages,
+ const int* channels, InputArray hist,
+ OutputArray backProject, const float** ranges,
+ double scale=1, bool uniform=true );
+
+//! computes back projection for the set of images
+CV_EXPORTS void calcBackProject( const Mat* images, int nimages,
+ const int* channels, const SparseMat& hist,
+ OutputArray backProject, const float** ranges,
+ double scale=1, bool uniform=true );
+
+CV_EXPORTS_W void calcBackProject( InputArrayOfArrays images, const vector<int>& channels,
+ InputArray hist, OutputArray dst,
+ const vector<float>& ranges,
+ double scale );
+
+/*CV_EXPORTS void calcBackProjectPatch( const Mat* images, int nimages, const int* channels,
+ InputArray hist, OutputArray dst, Size patchSize,
+ int method, double factor=1 );
+
+CV_EXPORTS_W void calcBackProjectPatch( InputArrayOfArrays images, const vector<int>& channels,
+ InputArray hist, OutputArray dst, Size patchSize,
+ int method, double factor=1 );*/
+
+//! compares two histograms stored in dense arrays
+CV_EXPORTS_W double compareHist( InputArray H1, InputArray H2, int method );
+
+//! compares two histograms stored in sparse arrays
+CV_EXPORTS double compareHist( const SparseMat& H1, const SparseMat& H2, int method );
+
+//! normalizes the grayscale image brightness and contrast by normalizing its histogram
+CV_EXPORTS_W void equalizeHist( InputArray src, OutputArray dst );
+
+class CV_EXPORTS_W CLAHE : public Algorithm
+{
+public:
+ CV_WRAP virtual void apply(InputArray src, OutputArray dst) = 0;
+
+ CV_WRAP virtual void setClipLimit(double clipLimit) = 0;
+ CV_WRAP virtual double getClipLimit() const = 0;
+
+ CV_WRAP virtual void setTilesGridSize(Size tileGridSize) = 0;
+ CV_WRAP virtual Size getTilesGridSize() const = 0;
+
+ CV_WRAP virtual void collectGarbage() = 0;
+};
+CV_EXPORTS_W Ptr<CLAHE> createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8));
+
+CV_EXPORTS float EMD( InputArray signature1, InputArray signature2,
+ int distType, InputArray cost=noArray(),
+ float* lowerBound=0, OutputArray flow=noArray() );
+
+//! segments the image using watershed algorithm
+CV_EXPORTS_W void watershed( InputArray image, InputOutputArray markers );
+
+//! filters image using meanshift algorithm
+CV_EXPORTS_W void pyrMeanShiftFiltering( InputArray src, OutputArray dst,
+ double sp, double sr, int maxLevel=1,
+ TermCriteria termcrit=TermCriteria(
+ TermCriteria::MAX_ITER+TermCriteria::EPS,5,1) );
+
+//! class of the pixel in GrabCut algorithm
+enum
+{
+ GC_BGD = 0, //!< background
+ GC_FGD = 1, //!< foreground
+ GC_PR_BGD = 2, //!< most probably background
+ GC_PR_FGD = 3 //!< most probably foreground
+};
+
+//! GrabCut algorithm flags
+enum
+{
+ GC_INIT_WITH_RECT = 0,
+ GC_INIT_WITH_MASK = 1,
+ GC_EVAL = 2
+};
+
+//! segments the image using GrabCut algorithm
+CV_EXPORTS_W void grabCut( InputArray img, InputOutputArray mask, Rect rect,
+ InputOutputArray bgdModel, InputOutputArray fgdModel,
+ int iterCount, int mode = GC_EVAL );
+
+enum
+{
+ DIST_LABEL_CCOMP = 0,
+ DIST_LABEL_PIXEL = 1
+};
+
+//! builds the discrete Voronoi diagram
+CV_EXPORTS_AS(distanceTransformWithLabels) void distanceTransform( InputArray src, OutputArray dst,
+ OutputArray labels, int distanceType, int maskSize,
+ int labelType=DIST_LABEL_CCOMP );
+
+//! computes the distance transform map
+CV_EXPORTS_W void distanceTransform( InputArray src, OutputArray dst,
+ int distanceType, int maskSize );
+
+enum { FLOODFILL_FIXED_RANGE = 1 << 16, FLOODFILL_MASK_ONLY = 1 << 17 };
+
+//! fills the semi-uniform image region starting from the specified seed point
+CV_EXPORTS int floodFill( InputOutputArray image,
+ Point seedPoint, Scalar newVal, CV_OUT Rect* rect=0,
+ Scalar loDiff=Scalar(), Scalar upDiff=Scalar(),
+ int flags=4 );
+
+//! fills the semi-uniform image region and/or the mask starting from the specified seed point
+CV_EXPORTS_W int floodFill( InputOutputArray image, InputOutputArray mask,
+ Point seedPoint, Scalar newVal, CV_OUT Rect* rect=0,
+ Scalar loDiff=Scalar(), Scalar upDiff=Scalar(),
+ int flags=4 );
+
+
+enum
+{
+ COLOR_BGR2BGRA =0,
+ COLOR_RGB2RGBA =COLOR_BGR2BGRA,
+
+ COLOR_BGRA2BGR =1,
+ COLOR_RGBA2RGB =COLOR_BGRA2BGR,
+
+ COLOR_BGR2RGBA =2,
+ COLOR_RGB2BGRA =COLOR_BGR2RGBA,
+
+ COLOR_RGBA2BGR =3,
+ COLOR_BGRA2RGB =COLOR_RGBA2BGR,
+
+ COLOR_BGR2RGB =4,
+ COLOR_RGB2BGR =COLOR_BGR2RGB,
+
+ COLOR_BGRA2RGBA =5,
+ COLOR_RGBA2BGRA =COLOR_BGRA2RGBA,
+
+ COLOR_BGR2GRAY =6,
+ COLOR_RGB2GRAY =7,
+ COLOR_GRAY2BGR =8,
+ COLOR_GRAY2RGB =COLOR_GRAY2BGR,
+ COLOR_GRAY2BGRA =9,
+ COLOR_GRAY2RGBA =COLOR_GRAY2BGRA,
+ COLOR_BGRA2GRAY =10,
+ COLOR_RGBA2GRAY =11,
+
+ COLOR_BGR2BGR565 =12,
+ COLOR_RGB2BGR565 =13,
+ COLOR_BGR5652BGR =14,
+ COLOR_BGR5652RGB =15,
+ COLOR_BGRA2BGR565 =16,
+ COLOR_RGBA2BGR565 =17,
+ COLOR_BGR5652BGRA =18,
+ COLOR_BGR5652RGBA =19,
+
+ COLOR_GRAY2BGR565 =20,
+ COLOR_BGR5652GRAY =21,
+
+ COLOR_BGR2BGR555 =22,
+ COLOR_RGB2BGR555 =23,
+ COLOR_BGR5552BGR =24,
+ COLOR_BGR5552RGB =25,
+ COLOR_BGRA2BGR555 =26,
+ COLOR_RGBA2BGR555 =27,
+ COLOR_BGR5552BGRA =28,
+ COLOR_BGR5552RGBA =29,
+
+ COLOR_GRAY2BGR555 =30,
+ COLOR_BGR5552GRAY =31,
+
+ COLOR_BGR2XYZ =32,
+ COLOR_RGB2XYZ =33,
+ COLOR_XYZ2BGR =34,
+ COLOR_XYZ2RGB =35,
+
+ COLOR_BGR2YCrCb =36,
+ COLOR_RGB2YCrCb =37,
+ COLOR_YCrCb2BGR =38,
+ COLOR_YCrCb2RGB =39,
+
+ COLOR_BGR2HSV =40,
+ COLOR_RGB2HSV =41,
+
+ COLOR_BGR2Lab =44,
+ COLOR_RGB2Lab =45,
+
+ COLOR_BayerBG2BGR =46,
+ COLOR_BayerGB2BGR =47,
+ COLOR_BayerRG2BGR =48,
+ COLOR_BayerGR2BGR =49,
+
+ COLOR_BayerBG2RGB =COLOR_BayerRG2BGR,
+ COLOR_BayerGB2RGB =COLOR_BayerGR2BGR,
+ COLOR_BayerRG2RGB =COLOR_BayerBG2BGR,
+ COLOR_BayerGR2RGB =COLOR_BayerGB2BGR,
+
+ COLOR_BGR2Luv =50,
+ COLOR_RGB2Luv =51,
+ COLOR_BGR2HLS =52,
+ COLOR_RGB2HLS =53,
+
+ COLOR_HSV2BGR =54,
+ COLOR_HSV2RGB =55,
+
+ COLOR_Lab2BGR =56,
+ COLOR_Lab2RGB =57,
+ COLOR_Luv2BGR =58,
+ COLOR_Luv2RGB =59,
+ COLOR_HLS2BGR =60,
+ COLOR_HLS2RGB =61,
+
+ COLOR_BayerBG2BGR_VNG =62,
+ COLOR_BayerGB2BGR_VNG =63,
+ COLOR_BayerRG2BGR_VNG =64,
+ COLOR_BayerGR2BGR_VNG =65,
+
+ COLOR_BayerBG2RGB_VNG =COLOR_BayerRG2BGR_VNG,
+ COLOR_BayerGB2RGB_VNG =COLOR_BayerGR2BGR_VNG,
+ COLOR_BayerRG2RGB_VNG =COLOR_BayerBG2BGR_VNG,
+ COLOR_BayerGR2RGB_VNG =COLOR_BayerGB2BGR_VNG,
+
+ COLOR_BGR2HSV_FULL = 66,
+ COLOR_RGB2HSV_FULL = 67,
+ COLOR_BGR2HLS_FULL = 68,
+ COLOR_RGB2HLS_FULL = 69,
+
+ COLOR_HSV2BGR_FULL = 70,
+ COLOR_HSV2RGB_FULL = 71,
+ COLOR_HLS2BGR_FULL = 72,
+ COLOR_HLS2RGB_FULL = 73,
+
+ COLOR_LBGR2Lab = 74,
+ COLOR_LRGB2Lab = 75,
+ COLOR_LBGR2Luv = 76,
+ COLOR_LRGB2Luv = 77,
+
+ COLOR_Lab2LBGR = 78,
+ COLOR_Lab2LRGB = 79,
+ COLOR_Luv2LBGR = 80,
+ COLOR_Luv2LRGB = 81,
+
+ COLOR_BGR2YUV = 82,
+ COLOR_RGB2YUV = 83,
+ COLOR_YUV2BGR = 84,
+ COLOR_YUV2RGB = 85,
+
+ COLOR_BayerBG2GRAY = 86,
+ COLOR_BayerGB2GRAY = 87,
+ COLOR_BayerRG2GRAY = 88,
+ COLOR_BayerGR2GRAY = 89,
+
+ //YUV 4:2:0 formats family
+ COLOR_YUV2RGB_NV12 = 90,
+ COLOR_YUV2BGR_NV12 = 91,
+ COLOR_YUV2RGB_NV21 = 92,
+ COLOR_YUV2BGR_NV21 = 93,
+ COLOR_YUV420sp2RGB = COLOR_YUV2RGB_NV21,
+ COLOR_YUV420sp2BGR = COLOR_YUV2BGR_NV21,
+
+ COLOR_YUV2RGBA_NV12 = 94,
+ COLOR_YUV2BGRA_NV12 = 95,
+ COLOR_YUV2RGBA_NV21 = 96,
+ COLOR_YUV2BGRA_NV21 = 97,
+ COLOR_YUV420sp2RGBA = COLOR_YUV2RGBA_NV21,
+ COLOR_YUV420sp2BGRA = COLOR_YUV2BGRA_NV21,
+
+ COLOR_YUV2RGB_YV12 = 98,
+ COLOR_YUV2BGR_YV12 = 99,
+ COLOR_YUV2RGB_IYUV = 100,
+ COLOR_YUV2BGR_IYUV = 101,
+ COLOR_YUV2RGB_I420 = COLOR_YUV2RGB_IYUV,
+ COLOR_YUV2BGR_I420 = COLOR_YUV2BGR_IYUV,
+ COLOR_YUV420p2RGB = COLOR_YUV2RGB_YV12,
+ COLOR_YUV420p2BGR = COLOR_YUV2BGR_YV12,
+
+ COLOR_YUV2RGBA_YV12 = 102,
+ COLOR_YUV2BGRA_YV12 = 103,
+ COLOR_YUV2RGBA_IYUV = 104,
+ COLOR_YUV2BGRA_IYUV = 105,
+ COLOR_YUV2RGBA_I420 = COLOR_YUV2RGBA_IYUV,
+ COLOR_YUV2BGRA_I420 = COLOR_YUV2BGRA_IYUV,
+ COLOR_YUV420p2RGBA = COLOR_YUV2RGBA_YV12,
+ COLOR_YUV420p2BGRA = COLOR_YUV2BGRA_YV12,
+
+ COLOR_YUV2GRAY_420 = 106,
+ COLOR_YUV2GRAY_NV21 = COLOR_YUV2GRAY_420,
+ COLOR_YUV2GRAY_NV12 = COLOR_YUV2GRAY_420,
+ COLOR_YUV2GRAY_YV12 = COLOR_YUV2GRAY_420,
+ COLOR_YUV2GRAY_IYUV = COLOR_YUV2GRAY_420,
+ COLOR_YUV2GRAY_I420 = COLOR_YUV2GRAY_420,
+ COLOR_YUV420sp2GRAY = COLOR_YUV2GRAY_420,
+ COLOR_YUV420p2GRAY = COLOR_YUV2GRAY_420,
+
+ //YUV 4:2:2 formats family
+ COLOR_YUV2RGB_UYVY = 107,
+ COLOR_YUV2BGR_UYVY = 108,
+ //COLOR_YUV2RGB_VYUY = 109,
+ //COLOR_YUV2BGR_VYUY = 110,
+ COLOR_YUV2RGB_Y422 = COLOR_YUV2RGB_UYVY,
+ COLOR_YUV2BGR_Y422 = COLOR_YUV2BGR_UYVY,
+ COLOR_YUV2RGB_UYNV = COLOR_YUV2RGB_UYVY,
+ COLOR_YUV2BGR_UYNV = COLOR_YUV2BGR_UYVY,
+
+ COLOR_YUV2RGBA_UYVY = 111,
+ COLOR_YUV2BGRA_UYVY = 112,
+ //COLOR_YUV2RGBA_VYUY = 113,
+ //COLOR_YUV2BGRA_VYUY = 114,
+ COLOR_YUV2RGBA_Y422 = COLOR_YUV2RGBA_UYVY,
+ COLOR_YUV2BGRA_Y422 = COLOR_YUV2BGRA_UYVY,
+ COLOR_YUV2RGBA_UYNV = COLOR_YUV2RGBA_UYVY,
+ COLOR_YUV2BGRA_UYNV = COLOR_YUV2BGRA_UYVY,
+
+ COLOR_YUV2RGB_YUY2 = 115,
+ COLOR_YUV2BGR_YUY2 = 116,
+ COLOR_YUV2RGB_YVYU = 117,
+ COLOR_YUV2BGR_YVYU = 118,
+ COLOR_YUV2RGB_YUYV = COLOR_YUV2RGB_YUY2,
+ COLOR_YUV2BGR_YUYV = COLOR_YUV2BGR_YUY2,
+ COLOR_YUV2RGB_YUNV = COLOR_YUV2RGB_YUY2,
+ COLOR_YUV2BGR_YUNV = COLOR_YUV2BGR_YUY2,
+
+ COLOR_YUV2RGBA_YUY2 = 119,
+ COLOR_YUV2BGRA_YUY2 = 120,
+ COLOR_YUV2RGBA_YVYU = 121,
+ COLOR_YUV2BGRA_YVYU = 122,
+ COLOR_YUV2RGBA_YUYV = COLOR_YUV2RGBA_YUY2,
+ COLOR_YUV2BGRA_YUYV = COLOR_YUV2BGRA_YUY2,
+ COLOR_YUV2RGBA_YUNV = COLOR_YUV2RGBA_YUY2,
+ COLOR_YUV2BGRA_YUNV = COLOR_YUV2BGRA_YUY2,
+
+ COLOR_YUV2GRAY_UYVY = 123,
+ COLOR_YUV2GRAY_YUY2 = 124,
+ //COLOR_YUV2GRAY_VYUY = COLOR_YUV2GRAY_UYVY,
+ COLOR_YUV2GRAY_Y422 = COLOR_YUV2GRAY_UYVY,
+ COLOR_YUV2GRAY_UYNV = COLOR_YUV2GRAY_UYVY,
+ COLOR_YUV2GRAY_YVYU = COLOR_YUV2GRAY_YUY2,
+ COLOR_YUV2GRAY_YUYV = COLOR_YUV2GRAY_YUY2,
+ COLOR_YUV2GRAY_YUNV = COLOR_YUV2GRAY_YUY2,
+
+ // alpha premultiplication
+ COLOR_RGBA2mRGBA = 125,
+ COLOR_mRGBA2RGBA = 126,
+
+ COLOR_RGB2YUV_I420 = 127,
+ COLOR_BGR2YUV_I420 = 128,
+ COLOR_RGB2YUV_IYUV = COLOR_RGB2YUV_I420,
+ COLOR_BGR2YUV_IYUV = COLOR_BGR2YUV_I420,
+
+ COLOR_RGBA2YUV_I420 = 129,
+ COLOR_BGRA2YUV_I420 = 130,
+ COLOR_RGBA2YUV_IYUV = COLOR_RGBA2YUV_I420,
+ COLOR_BGRA2YUV_IYUV = COLOR_BGRA2YUV_I420,
+ COLOR_RGB2YUV_YV12 = 131,
+ COLOR_BGR2YUV_YV12 = 132,
+ COLOR_RGBA2YUV_YV12 = 133,
+ COLOR_BGRA2YUV_YV12 = 134,
+
+ COLOR_COLORCVT_MAX = 135
+};
+
+
+//! converts image from one color space to another
+CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 );
+
+//! raster image moments
+class CV_EXPORTS_W_MAP Moments
+{
+public:
+ //! the default constructor
+ Moments();
+ //! the full constructor
+ Moments(double m00, double m10, double m01, double m20, double m11,
+ double m02, double m30, double m21, double m12, double m03 );
+ //! the conversion from CvMoments
+ Moments( const CvMoments& moments );
+ //! the conversion to CvMoments
+ operator CvMoments() const;
+
+ //! spatial moments
+ CV_PROP_RW double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;
+ //! central moments
+ CV_PROP_RW double mu20, mu11, mu02, mu30, mu21, mu12, mu03;
+ //! central normalized moments
+ CV_PROP_RW double nu20, nu11, nu02, nu30, nu21, nu12, nu03;
+};
+
+//! computes moments of the rasterized shape or a vector of points
+CV_EXPORTS_W Moments moments( InputArray array, bool binaryImage=false );
+
+//! computes 7 Hu invariants from the moments
+CV_EXPORTS void HuMoments( const Moments& moments, double hu[7] );
+CV_EXPORTS_W void HuMoments( const Moments& m, CV_OUT OutputArray hu );
+
+//! type of the template matching operation
+enum { TM_SQDIFF=0, TM_SQDIFF_NORMED=1, TM_CCORR=2, TM_CCORR_NORMED=3, TM_CCOEFF=4, TM_CCOEFF_NORMED=5 };
+
+//! computes the proximity map for the raster template and the image where the template is searched for
+CV_EXPORTS_W void matchTemplate( InputArray image, InputArray templ,
+ OutputArray result, int method );
+
+//! mode of the contour retrieval algorithm
+enum
+{
+ RETR_EXTERNAL=CV_RETR_EXTERNAL, //!< retrieve only the most external (top-level) contours
+ RETR_LIST=CV_RETR_LIST, //!< retrieve all the contours without any hierarchical information
+ RETR_CCOMP=CV_RETR_CCOMP, //!< retrieve the connected components (that can possibly be nested)
+ RETR_TREE=CV_RETR_TREE, //!< retrieve all the contours and the whole hierarchy
+ RETR_FLOODFILL=CV_RETR_FLOODFILL
+};
+
+//! the contour approximation algorithm
+enum
+{
+ CHAIN_APPROX_NONE=CV_CHAIN_APPROX_NONE,
+ CHAIN_APPROX_SIMPLE=CV_CHAIN_APPROX_SIMPLE,
+ CHAIN_APPROX_TC89_L1=CV_CHAIN_APPROX_TC89_L1,
+ CHAIN_APPROX_TC89_KCOS=CV_CHAIN_APPROX_TC89_KCOS
+};
+
+//! retrieves contours and the hierarchical information from black-n-white image.
+CV_EXPORTS_W void findContours( InputOutputArray image, OutputArrayOfArrays contours,
+ OutputArray hierarchy, int mode,
+ int method, Point offset=Point());
+
+//! retrieves contours from black-n-white image.
+CV_EXPORTS void findContours( InputOutputArray image, OutputArrayOfArrays contours,
+ int mode, int method, Point offset=Point());
+
+//! draws contours in the image
+CV_EXPORTS_W void drawContours( InputOutputArray image, InputArrayOfArrays contours,
+ int contourIdx, const Scalar& color,
+ int thickness=1, int lineType=8,
+ InputArray hierarchy=noArray(),
+ int maxLevel=INT_MAX, Point offset=Point() );
+
+//! approximates contour or a curve using Douglas-Peucker algorithm
+CV_EXPORTS_W void approxPolyDP( InputArray curve,
+ OutputArray approxCurve,
+ double epsilon, bool closed );
+
+//! computes the contour perimeter (closed=true) or a curve length
+CV_EXPORTS_W double arcLength( InputArray curve, bool closed );
+//! computes the bounding rectangle for a contour
+CV_EXPORTS_W Rect boundingRect( InputArray points );
+//! computes the contour area
+CV_EXPORTS_W double contourArea( InputArray contour, bool oriented=false );
+//! computes the minimal rotated rectangle for a set of points
+CV_EXPORTS_W RotatedRect minAreaRect( InputArray points );
+//! computes the minimal enclosing circle for a set of points
+CV_EXPORTS_W void minEnclosingCircle( InputArray points,
+ CV_OUT Point2f& center, CV_OUT float& radius );
+//! matches two contours using one of the available algorithms
+CV_EXPORTS_W double matchShapes( InputArray contour1, InputArray contour2,
+ int method, double parameter );
+//! computes convex hull for a set of 2D points.
+CV_EXPORTS_W void convexHull( InputArray points, OutputArray hull,
+ bool clockwise=false, bool returnPoints=true );
+//! computes the contour convexity defects
+CV_EXPORTS_W void convexityDefects( InputArray contour, InputArray convexhull, OutputArray convexityDefects );
+
+//! returns true if the contour is convex. Does not support contours with self-intersection
+CV_EXPORTS_W bool isContourConvex( InputArray contour );
+
+//! finds intersection of two convex polygons
+CV_EXPORTS_W float intersectConvexConvex( InputArray _p1, InputArray _p2,
+ OutputArray _p12, bool handleNested=true );
+
+//! fits ellipse to the set of 2D points
+CV_EXPORTS_W RotatedRect fitEllipse( InputArray points );
+
+//! fits line to the set of 2D points using M-estimator algorithm
+CV_EXPORTS_W void fitLine( InputArray points, OutputArray line, int distType,
+ double param, double reps, double aeps );
+//! checks if the point is inside the contour. Optionally computes the signed distance from the point to the contour boundary
+CV_EXPORTS_W double pointPolygonTest( InputArray contour, Point2f pt, bool measureDist );
+
+
+class CV_EXPORTS_W Subdiv2D
+{
+public:
+ enum
+ {
+ PTLOC_ERROR = -2,
+ PTLOC_OUTSIDE_RECT = -1,
+ PTLOC_INSIDE = 0,
+ PTLOC_VERTEX = 1,
+ PTLOC_ON_EDGE = 2
+ };
+
+ enum
+ {
+ NEXT_AROUND_ORG = 0x00,
+ NEXT_AROUND_DST = 0x22,
+ PREV_AROUND_ORG = 0x11,
+ PREV_AROUND_DST = 0x33,
+ NEXT_AROUND_LEFT = 0x13,
+ NEXT_AROUND_RIGHT = 0x31,
+ PREV_AROUND_LEFT = 0x20,
+ PREV_AROUND_RIGHT = 0x02
+ };
+
+ CV_WRAP Subdiv2D();
+ CV_WRAP Subdiv2D(Rect rect);
+ CV_WRAP void initDelaunay(Rect rect);
+
+ CV_WRAP int insert(Point2f pt);
+ CV_WRAP void insert(const vector<Point2f>& ptvec);
+ CV_WRAP int locate(Point2f pt, CV_OUT int& edge, CV_OUT int& vertex);
+
+ CV_WRAP int findNearest(Point2f pt, CV_OUT Point2f* nearestPt=0);
+ CV_WRAP void getEdgeList(CV_OUT vector<Vec4f>& edgeList) const;
+ CV_WRAP void getTriangleList(CV_OUT vector<Vec6f>& triangleList) const;
+ CV_WRAP void getVoronoiFacetList(const vector<int>& idx, CV_OUT vector<vector<Point2f> >& facetList,
+ CV_OUT vector<Point2f>& facetCenters);
+
+ CV_WRAP Point2f getVertex(int vertex, CV_OUT int* firstEdge=0) const;
+
+ CV_WRAP int getEdge( int edge, int nextEdgeType ) const;
+ CV_WRAP int nextEdge(int edge) const;
+ CV_WRAP int rotateEdge(int edge, int rotate) const;
+ CV_WRAP int symEdge(int edge) const;
+ CV_WRAP int edgeOrg(int edge, CV_OUT Point2f* orgpt=0) const;
+ CV_WRAP int edgeDst(int edge, CV_OUT Point2f* dstpt=0) const;
+
+protected:
+ int newEdge();
+ void deleteEdge(int edge);
+ int newPoint(Point2f pt, bool isvirtual, int firstEdge=0);
+ void deletePoint(int vtx);
+ void setEdgePoints( int edge, int orgPt, int dstPt );
+ void splice( int edgeA, int edgeB );
+ int connectEdges( int edgeA, int edgeB );
+ void swapEdges( int edge );
+ int isRightOf(Point2f pt, int edge) const;
+ void calcVoronoi();
+ void clearVoronoi();
+ void checkSubdiv() const;
+
+ struct CV_EXPORTS Vertex
+ {
+ Vertex();
+ Vertex(Point2f pt, bool _isvirtual, int _firstEdge=0);
+ bool isvirtual() const;
+ bool isfree() const;
+ int firstEdge;
+ int type;
+ Point2f pt;
+ };
+ struct CV_EXPORTS QuadEdge
+ {
+ QuadEdge();
+ QuadEdge(int edgeidx);
+ bool isfree() const;
+ int next[4];
+ int pt[4];
+ };
+
+ vector<Vertex> vtx;
+ vector<QuadEdge> qedges;
+ int freeQEdge;
+ int freePoint;
+ bool validGeometry;
+
+ int recentEdge;
+ Point2f topLeft;
+ Point2f bottomRight;
+};
+
+}
+
+#endif /* __cplusplus */
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc_c.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc_c.h
new file mode 100644
index 00000000..46d9f013
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/imgproc_c.h
@@ -0,0 +1,623 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_IMGPROC_IMGPROC_C_H__
+#define __OPENCV_IMGPROC_IMGPROC_C_H__
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/imgproc/types_c.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*********************** Background statistics accumulation *****************************/
+
+/* Adds image to accumulator */
+CVAPI(void) cvAcc( const CvArr* image, CvArr* sum,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Adds squared image to accumulator */
+CVAPI(void) cvSquareAcc( const CvArr* image, CvArr* sqsum,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Adds a product of two images to accumulator */
+CVAPI(void) cvMultiplyAcc( const CvArr* image1, const CvArr* image2, CvArr* acc,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/* Adds image to accumulator with weights: acc = acc*(1-alpha) + image*alpha */
+CVAPI(void) cvRunningAvg( const CvArr* image, CvArr* acc, double alpha,
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+/****************************************************************************************\
+* Image Processing *
+\****************************************************************************************/
+
+/* Copies source 2D array inside of the larger destination array and
+ makes a border of the specified type (IPL_BORDER_*) around the copied area. */
+CVAPI(void) cvCopyMakeBorder( const CvArr* src, CvArr* dst, CvPoint offset,
+ int bordertype, CvScalar value CV_DEFAULT(cvScalarAll(0)));
+
+/* Smoothes array (removes noise) */
+CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,
+ int smoothtype CV_DEFAULT(CV_GAUSSIAN),
+ int size1 CV_DEFAULT(3),
+ int size2 CV_DEFAULT(0),
+ double sigma1 CV_DEFAULT(0),
+ double sigma2 CV_DEFAULT(0));
+
+/* Convolves the image with the kernel */
+CVAPI(void) cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel,
+ CvPoint anchor CV_DEFAULT(cvPoint(-1,-1)));
+
+/* Finds integral image: SUM(X,Y) = sum(x<X,y<Y)I(x,y) */
+CVAPI(void) cvIntegral( const CvArr* image, CvArr* sum,
+ CvArr* sqsum CV_DEFAULT(NULL),
+ CvArr* tilted_sum CV_DEFAULT(NULL));
+
+/*
+ Smoothes the input image with gaussian kernel and then down-samples it.
+ dst_width = floor(src_width/2)[+1],
+ dst_height = floor(src_height/2)[+1]
+*/
+CVAPI(void) cvPyrDown( const CvArr* src, CvArr* dst,
+ int filter CV_DEFAULT(CV_GAUSSIAN_5x5) );
+
+/*
+ Up-samples image and smoothes the result with gaussian kernel.
+ dst_width = src_width*2,
+ dst_height = src_height*2
+*/
+CVAPI(void) cvPyrUp( const CvArr* src, CvArr* dst,
+ int filter CV_DEFAULT(CV_GAUSSIAN_5x5) );
+
+/* Builds pyramid for an image */
+CVAPI(CvMat**) cvCreatePyramid( const CvArr* img, int extra_layers, double rate,
+ const CvSize* layer_sizes CV_DEFAULT(0),
+ CvArr* bufarr CV_DEFAULT(0),
+ int calc CV_DEFAULT(1),
+ int filter CV_DEFAULT(CV_GAUSSIAN_5x5) );
+
+/* Releases pyramid */
+CVAPI(void) cvReleasePyramid( CvMat*** pyramid, int extra_layers );
+
+
+/* Filters image using meanshift algorithm */
+CVAPI(void) cvPyrMeanShiftFiltering( const CvArr* src, CvArr* dst,
+ double sp, double sr, int max_level CV_DEFAULT(1),
+ CvTermCriteria termcrit CV_DEFAULT(cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,5,1)));
+
+/* Segments image using seed "markers" */
+CVAPI(void) cvWatershed( const CvArr* image, CvArr* markers );
+
+/* Calculates an image derivative using generalized Sobel
+ (aperture_size = 1,3,5,7) or Scharr (aperture_size = -1) operator.
+ Scharr can be used only for the first dx or dy derivative */
+CVAPI(void) cvSobel( const CvArr* src, CvArr* dst,
+ int xorder, int yorder,
+ int aperture_size CV_DEFAULT(3));
+
+/* Calculates the image Laplacian: (d2/dx + d2/dy)I */
+CVAPI(void) cvLaplace( const CvArr* src, CvArr* dst,
+ int aperture_size CV_DEFAULT(3) );
+
+/* Converts input array pixels from one color space to another */
+CVAPI(void) cvCvtColor( const CvArr* src, CvArr* dst, int code );
+
+
+/* Resizes image (input array is resized to fit the destination array) */
+CVAPI(void) cvResize( const CvArr* src, CvArr* dst,
+ int interpolation CV_DEFAULT( CV_INTER_LINEAR ));
+
+/* Warps image with affine transform */
+CVAPI(void) cvWarpAffine( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
+ int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
+ CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
+
+/* Computes affine transform matrix for mapping src[i] to dst[i] (i=0,1,2) */
+CVAPI(CvMat*) cvGetAffineTransform( const CvPoint2D32f * src,
+ const CvPoint2D32f * dst,
+ CvMat * map_matrix );
+
+/* Computes rotation_matrix matrix */
+CVAPI(CvMat*) cv2DRotationMatrix( CvPoint2D32f center, double angle,
+ double scale, CvMat* map_matrix );
+
+/* Warps image with perspective (projective) transform */
+CVAPI(void) cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
+ int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
+ CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
+
+/* Computes perspective transform matrix for mapping src[i] to dst[i] (i=0,1,2,3) */
+CVAPI(CvMat*) cvGetPerspectiveTransform( const CvPoint2D32f* src,
+ const CvPoint2D32f* dst,
+ CvMat* map_matrix );
+
+/* Performs generic geometric transformation using the specified coordinate maps */
+CVAPI(void) cvRemap( const CvArr* src, CvArr* dst,
+ const CvArr* mapx, const CvArr* mapy,
+ int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
+ CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
+
+/* Converts mapx & mapy from floating-point to integer formats for cvRemap */
+CVAPI(void) cvConvertMaps( const CvArr* mapx, const CvArr* mapy,
+ CvArr* mapxy, CvArr* mapalpha );
+
+/* Performs forward or inverse log-polar image transform */
+CVAPI(void) cvLogPolar( const CvArr* src, CvArr* dst,
+ CvPoint2D32f center, double M,
+ int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS));
+
+/* Performs forward or inverse linear-polar image transform */
+CVAPI(void) cvLinearPolar( const CvArr* src, CvArr* dst,
+ CvPoint2D32f center, double maxRadius,
+ int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS));
+
+/* Transforms the input image to compensate lens distortion */
+CVAPI(void) cvUndistort2( const CvArr* src, CvArr* dst,
+ const CvMat* camera_matrix,
+ const CvMat* distortion_coeffs,
+ const CvMat* new_camera_matrix CV_DEFAULT(0) );
+
+/* Computes transformation map from intrinsic camera parameters
+ that can used by cvRemap */
+CVAPI(void) cvInitUndistortMap( const CvMat* camera_matrix,
+ const CvMat* distortion_coeffs,
+ CvArr* mapx, CvArr* mapy );
+
+/* Computes undistortion+rectification map for a head of stereo camera */
+CVAPI(void) cvInitUndistortRectifyMap( const CvMat* camera_matrix,
+ const CvMat* dist_coeffs,
+ const CvMat *R, const CvMat* new_camera_matrix,
+ CvArr* mapx, CvArr* mapy );
+
+/* Computes the original (undistorted) feature coordinates
+ from the observed (distorted) coordinates */
+CVAPI(void) cvUndistortPoints( const CvMat* src, CvMat* dst,
+ const CvMat* camera_matrix,
+ const CvMat* dist_coeffs,
+ const CvMat* R CV_DEFAULT(0),
+ const CvMat* P CV_DEFAULT(0));
+
+/* creates structuring element used for morphological operations */
+CVAPI(IplConvKernel*) cvCreateStructuringElementEx(
+ int cols, int rows, int anchor_x, int anchor_y,
+ int shape, int* values CV_DEFAULT(NULL) );
+
+/* releases structuring element */
+CVAPI(void) cvReleaseStructuringElement( IplConvKernel** element );
+
+/* erodes input image (applies minimum filter) one or more times.
+ If element pointer is NULL, 3x3 rectangular element is used */
+CVAPI(void) cvErode( const CvArr* src, CvArr* dst,
+ IplConvKernel* element CV_DEFAULT(NULL),
+ int iterations CV_DEFAULT(1) );
+
+/* dilates input image (applies maximum filter) one or more times.
+ If element pointer is NULL, 3x3 rectangular element is used */
+CVAPI(void) cvDilate( const CvArr* src, CvArr* dst,
+ IplConvKernel* element CV_DEFAULT(NULL),
+ int iterations CV_DEFAULT(1) );
+
+/* Performs complex morphological transformation */
+CVAPI(void) cvMorphologyEx( const CvArr* src, CvArr* dst,
+ CvArr* temp, IplConvKernel* element,
+ int operation, int iterations CV_DEFAULT(1) );
+
+/* Calculates all spatial and central moments up to the 3rd order */
+CVAPI(void) cvMoments( const CvArr* arr, CvMoments* moments, int binary CV_DEFAULT(0));
+
+/* Retrieve particular spatial, central or normalized central moments */
+CVAPI(double) cvGetSpatialMoment( CvMoments* moments, int x_order, int y_order );
+CVAPI(double) cvGetCentralMoment( CvMoments* moments, int x_order, int y_order );
+CVAPI(double) cvGetNormalizedCentralMoment( CvMoments* moments,
+ int x_order, int y_order );
+
+/* Calculates 7 Hu's invariants from precalculated spatial and central moments */
+CVAPI(void) cvGetHuMoments( CvMoments* moments, CvHuMoments* hu_moments );
+
+/*********************************** data sampling **************************************/
+
+/* Fetches pixels that belong to the specified line segment and stores them to the buffer.
+ Returns the number of retrieved points. */
+CVAPI(int) cvSampleLine( const CvArr* image, CvPoint pt1, CvPoint pt2, void* buffer,
+ int connectivity CV_DEFAULT(8));
+
+/* Retrieves the rectangular image region with specified center from the input array.
+ dst(x,y) <- src(x + center.x - dst_width/2, y + center.y - dst_height/2).
+ Values of pixels with fractional coordinates are retrieved using bilinear interpolation*/
+CVAPI(void) cvGetRectSubPix( const CvArr* src, CvArr* dst, CvPoint2D32f center );
+
+
+/* Retrieves quadrangle from the input array.
+ matrixarr = ( a11 a12 | b1 ) dst(x,y) <- src(A[x y]' + b)
+ ( a21 a22 | b2 ) (bilinear interpolation is used to retrieve pixels
+ with fractional coordinates)
+*/
+CVAPI(void) cvGetQuadrangleSubPix( const CvArr* src, CvArr* dst,
+ const CvMat* map_matrix );
+
+/* Measures similarity between template and overlapped windows in the source image
+ and fills the resultant image with the measurements */
+CVAPI(void) cvMatchTemplate( const CvArr* image, const CvArr* templ,
+ CvArr* result, int method );
+
+/* Computes earth mover distance between
+ two weighted point sets (called signatures) */
+CVAPI(float) cvCalcEMD2( const CvArr* signature1,
+ const CvArr* signature2,
+ int distance_type,
+ CvDistanceFunction distance_func CV_DEFAULT(NULL),
+ const CvArr* cost_matrix CV_DEFAULT(NULL),
+ CvArr* flow CV_DEFAULT(NULL),
+ float* lower_bound CV_DEFAULT(NULL),
+ void* userdata CV_DEFAULT(NULL));
+
+/****************************************************************************************\
+* Contours retrieving *
+\****************************************************************************************/
+
+/* Retrieves outer and optionally inner boundaries of white (non-zero) connected
+ components in the black (zero) background */
+CVAPI(int) cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,
+ int header_size CV_DEFAULT(sizeof(CvContour)),
+ int mode CV_DEFAULT(CV_RETR_LIST),
+ int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
+ CvPoint offset CV_DEFAULT(cvPoint(0,0)));
+
+/* Initializes contour retrieving process.
+ Calls cvStartFindContours.
+ Calls cvFindNextContour until null pointer is returned
+ or some other condition becomes true.
+ Calls cvEndFindContours at the end. */
+CVAPI(CvContourScanner) cvStartFindContours( CvArr* image, CvMemStorage* storage,
+ int header_size CV_DEFAULT(sizeof(CvContour)),
+ int mode CV_DEFAULT(CV_RETR_LIST),
+ int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
+ CvPoint offset CV_DEFAULT(cvPoint(0,0)));
+
+/* Retrieves next contour */
+CVAPI(CvSeq*) cvFindNextContour( CvContourScanner scanner );
+
+
+/* Substitutes the last retrieved contour with the new one
+ (if the substitutor is null, the last retrieved contour is removed from the tree) */
+CVAPI(void) cvSubstituteContour( CvContourScanner scanner, CvSeq* new_contour );
+
+
+/* Releases contour scanner and returns pointer to the first outer contour */
+CVAPI(CvSeq*) cvEndFindContours( CvContourScanner* scanner );
+
+/* Approximates a single Freeman chain or a tree of chains to polygonal curves */
+CVAPI(CvSeq*) cvApproxChains( CvSeq* src_seq, CvMemStorage* storage,
+ int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
+ double parameter CV_DEFAULT(0),
+ int minimal_perimeter CV_DEFAULT(0),
+ int recursive CV_DEFAULT(0));
+
+/* Initializes Freeman chain reader.
+ The reader is used to iteratively get coordinates of all the chain points.
+ If the Freeman codes should be read as is, a simple sequence reader should be used */
+CVAPI(void) cvStartReadChainPoints( CvChain* chain, CvChainPtReader* reader );
+
+/* Retrieves the next chain point */
+CVAPI(CvPoint) cvReadChainPoint( CvChainPtReader* reader );
+
+
+/****************************************************************************************\
+* Contour Processing and Shape Analysis *
+\****************************************************************************************/
+
+/* Approximates a single polygonal curve (contour) or
+ a tree of polygonal curves (contours) */
+CVAPI(CvSeq*) cvApproxPoly( const void* src_seq,
+ int header_size, CvMemStorage* storage,
+ int method, double eps,
+ int recursive CV_DEFAULT(0));
+
+/* Calculates perimeter of a contour or length of a part of contour */
+CVAPI(double) cvArcLength( const void* curve,
+ CvSlice slice CV_DEFAULT(CV_WHOLE_SEQ),
+ int is_closed CV_DEFAULT(-1));
+
+CV_INLINE double cvContourPerimeter( const void* contour )
+{
+ return cvArcLength( contour, CV_WHOLE_SEQ, 1 );
+}
+
+
+/* Calculates contour bounding rectangle (update=1) or
+ just retrieves pre-calculated rectangle (update=0) */
+CVAPI(CvRect) cvBoundingRect( CvArr* points, int update CV_DEFAULT(0) );
+
+/* Calculates area of a contour or contour segment */
+CVAPI(double) cvContourArea( const CvArr* contour,
+ CvSlice slice CV_DEFAULT(CV_WHOLE_SEQ),
+ int oriented CV_DEFAULT(0));
+
+/* Finds minimum area rotated rectangle bounding a set of points */
+CVAPI(CvBox2D) cvMinAreaRect2( const CvArr* points,
+ CvMemStorage* storage CV_DEFAULT(NULL));
+
+/* Finds minimum enclosing circle for a set of points */
+CVAPI(int) cvMinEnclosingCircle( const CvArr* points,
+ CvPoint2D32f* center, float* radius );
+
+/* Compares two contours by matching their moments */
+CVAPI(double) cvMatchShapes( const void* object1, const void* object2,
+ int method, double parameter CV_DEFAULT(0));
+
+/* Calculates exact convex hull of 2d point set */
+CVAPI(CvSeq*) cvConvexHull2( const CvArr* input,
+ void* hull_storage CV_DEFAULT(NULL),
+ int orientation CV_DEFAULT(CV_CLOCKWISE),
+ int return_points CV_DEFAULT(0));
+
+/* Checks whether the contour is convex or not (returns 1 if convex, 0 if not) */
+CVAPI(int) cvCheckContourConvexity( const CvArr* contour );
+
+
+/* Finds convexity defects for the contour */
+CVAPI(CvSeq*) cvConvexityDefects( const CvArr* contour, const CvArr* convexhull,
+ CvMemStorage* storage CV_DEFAULT(NULL));
+
+/* Fits ellipse into a set of 2d points */
+CVAPI(CvBox2D) cvFitEllipse2( const CvArr* points );
+
+/* Finds minimum rectangle containing two given rectangles */
+CVAPI(CvRect) cvMaxRect( const CvRect* rect1, const CvRect* rect2 );
+
+/* Finds coordinates of the box vertices */
+CVAPI(void) cvBoxPoints( CvBox2D box, CvPoint2D32f pt[4] );
+
+/* Initializes sequence header for a matrix (column or row vector) of points -
+ a wrapper for cvMakeSeqHeaderForArray (it does not initialize bounding rectangle!!!) */
+CVAPI(CvSeq*) cvPointSeqFromMat( int seq_kind, const CvArr* mat,
+ CvContour* contour_header,
+ CvSeqBlock* block );
+
+/* Checks whether the point is inside polygon, outside, on an edge (at a vertex).
+ Returns positive, negative or zero value, correspondingly.
+ Optionally, measures a signed distance between
+ the point and the nearest polygon edge (measure_dist=1) */
+CVAPI(double) cvPointPolygonTest( const CvArr* contour,
+ CvPoint2D32f pt, int measure_dist );
+
+/****************************************************************************************\
+* Histogram functions *
+\****************************************************************************************/
+
+/* Creates new histogram */
+CVAPI(CvHistogram*) cvCreateHist( int dims, int* sizes, int type,
+ float** ranges CV_DEFAULT(NULL),
+ int uniform CV_DEFAULT(1));
+
+/* Assignes histogram bin ranges */
+CVAPI(void) cvSetHistBinRanges( CvHistogram* hist, float** ranges,
+ int uniform CV_DEFAULT(1));
+
+/* Creates histogram header for array */
+CVAPI(CvHistogram*) cvMakeHistHeaderForArray(
+ int dims, int* sizes, CvHistogram* hist,
+ float* data, float** ranges CV_DEFAULT(NULL),
+ int uniform CV_DEFAULT(1));
+
+/* Releases histogram */
+CVAPI(void) cvReleaseHist( CvHistogram** hist );
+
+/* Clears all the histogram bins */
+CVAPI(void) cvClearHist( CvHistogram* hist );
+
+/* Finds indices and values of minimum and maximum histogram bins */
+CVAPI(void) cvGetMinMaxHistValue( const CvHistogram* hist,
+ float* min_value, float* max_value,
+ int* min_idx CV_DEFAULT(NULL),
+ int* max_idx CV_DEFAULT(NULL));
+
+
+/* Normalizes histogram by dividing all bins by sum of the bins, multiplied by <factor>.
+ After that sum of histogram bins is equal to <factor> */
+CVAPI(void) cvNormalizeHist( CvHistogram* hist, double factor );
+
+
+/* Clear all histogram bins that are below the threshold */
+CVAPI(void) cvThreshHist( CvHistogram* hist, double threshold );
+
+
+/* Compares two histogram */
+CVAPI(double) cvCompareHist( const CvHistogram* hist1,
+ const CvHistogram* hist2,
+ int method);
+
+/* Copies one histogram to another. Destination histogram is created if
+ the destination pointer is NULL */
+CVAPI(void) cvCopyHist( const CvHistogram* src, CvHistogram** dst );
+
+
+/* Calculates bayesian probabilistic histograms
+ (each or src and dst is an array of <number> histograms */
+CVAPI(void) cvCalcBayesianProb( CvHistogram** src, int number,
+ CvHistogram** dst);
+
+/* Calculates array histogram */
+CVAPI(void) cvCalcArrHist( CvArr** arr, CvHistogram* hist,
+ int accumulate CV_DEFAULT(0),
+ const CvArr* mask CV_DEFAULT(NULL) );
+
+CV_INLINE void cvCalcHist( IplImage** image, CvHistogram* hist,
+ int accumulate CV_DEFAULT(0),
+ const CvArr* mask CV_DEFAULT(NULL) )
+{
+ cvCalcArrHist( (CvArr**)image, hist, accumulate, mask );
+}
+
+/* Calculates back project */
+CVAPI(void) cvCalcArrBackProject( CvArr** image, CvArr* dst,
+ const CvHistogram* hist );
+#define cvCalcBackProject(image, dst, hist) cvCalcArrBackProject((CvArr**)image, dst, hist)
+
+
+/* Does some sort of template matching but compares histograms of
+ template and each window location */
+CVAPI(void) cvCalcArrBackProjectPatch( CvArr** image, CvArr* dst, CvSize range,
+ CvHistogram* hist, int method,
+ double factor );
+#define cvCalcBackProjectPatch( image, dst, range, hist, method, factor ) \
+ cvCalcArrBackProjectPatch( (CvArr**)image, dst, range, hist, method, factor )
+
+
+/* calculates probabilistic density (divides one histogram by another) */
+CVAPI(void) cvCalcProbDensity( const CvHistogram* hist1, const CvHistogram* hist2,
+ CvHistogram* dst_hist, double scale CV_DEFAULT(255) );
+
+/* equalizes histogram of 8-bit single-channel image */
+CVAPI(void) cvEqualizeHist( const CvArr* src, CvArr* dst );
+
+
+/* Applies distance transform to binary image */
+CVAPI(void) cvDistTransform( const CvArr* src, CvArr* dst,
+ int distance_type CV_DEFAULT(CV_DIST_L2),
+ int mask_size CV_DEFAULT(3),
+ const float* mask CV_DEFAULT(NULL),
+ CvArr* labels CV_DEFAULT(NULL),
+ int labelType CV_DEFAULT(CV_DIST_LABEL_CCOMP));
+
+
+/* Applies fixed-level threshold to grayscale image.
+ This is a basic operation applied before retrieving contours */
+CVAPI(double) cvThreshold( const CvArr* src, CvArr* dst,
+ double threshold, double max_value,
+ int threshold_type );
+
+/* Applies adaptive threshold to grayscale image.
+ The two parameters for methods CV_ADAPTIVE_THRESH_MEAN_C and
+ CV_ADAPTIVE_THRESH_GAUSSIAN_C are:
+ neighborhood size (3, 5, 7 etc.),
+ and a constant subtracted from mean (...,-3,-2,-1,0,1,2,3,...) */
+CVAPI(void) cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value,
+ int adaptive_method CV_DEFAULT(CV_ADAPTIVE_THRESH_MEAN_C),
+ int threshold_type CV_DEFAULT(CV_THRESH_BINARY),
+ int block_size CV_DEFAULT(3),
+ double param1 CV_DEFAULT(5));
+
+/* Fills the connected component until the color difference gets large enough */
+CVAPI(void) cvFloodFill( CvArr* image, CvPoint seed_point,
+ CvScalar new_val, CvScalar lo_diff CV_DEFAULT(cvScalarAll(0)),
+ CvScalar up_diff CV_DEFAULT(cvScalarAll(0)),
+ CvConnectedComp* comp CV_DEFAULT(NULL),
+ int flags CV_DEFAULT(4),
+ CvArr* mask CV_DEFAULT(NULL));
+
+/****************************************************************************************\
+* Feature detection *
+\****************************************************************************************/
+
+/* Runs canny edge detector */
+CVAPI(void) cvCanny( const CvArr* image, CvArr* edges, double threshold1,
+ double threshold2, int aperture_size CV_DEFAULT(3) );
+
+/* Calculates constraint image for corner detection
+ Dx^2 * Dyy + Dxx * Dy^2 - 2 * Dx * Dy * Dxy.
+ Applying threshold to the result gives coordinates of corners */
+CVAPI(void) cvPreCornerDetect( const CvArr* image, CvArr* corners,
+ int aperture_size CV_DEFAULT(3) );
+
+/* Calculates eigen values and vectors of 2x2
+ gradient covariation matrix at every image pixel */
+CVAPI(void) cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv,
+ int block_size, int aperture_size CV_DEFAULT(3) );
+
+/* Calculates minimal eigenvalue for 2x2 gradient covariation matrix at
+ every image pixel */
+CVAPI(void) cvCornerMinEigenVal( const CvArr* image, CvArr* eigenval,
+ int block_size, int aperture_size CV_DEFAULT(3) );
+
+/* Harris corner detector:
+ Calculates det(M) - k*(trace(M)^2), where M is 2x2 gradient covariation matrix for each pixel */
+CVAPI(void) cvCornerHarris( const CvArr* image, CvArr* harris_response,
+ int block_size, int aperture_size CV_DEFAULT(3),
+ double k CV_DEFAULT(0.04) );
+
+/* Adjust corner position using some sort of gradient search */
+CVAPI(void) cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
+ int count, CvSize win, CvSize zero_zone,
+ CvTermCriteria criteria );
+
+/* Finds a sparse set of points within the selected region
+ that seem to be easy to track */
+CVAPI(void) cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image,
+ CvArr* temp_image, CvPoint2D32f* corners,
+ int* corner_count, double quality_level,
+ double min_distance,
+ const CvArr* mask CV_DEFAULT(NULL),
+ int block_size CV_DEFAULT(3),
+ int use_harris CV_DEFAULT(0),
+ double k CV_DEFAULT(0.04) );
+
+/* Finds lines on binary image using one of several methods.
+ line_storage is either memory storage or 1 x <max number of lines> CvMat, its
+ number of columns is changed by the function.
+ method is one of CV_HOUGH_*;
+ rho, theta and threshold are used for each of those methods;
+ param1 ~ line length, param2 ~ line gap - for probabilistic,
+ param1 ~ srn, param2 ~ stn - for multi-scale */
+CVAPI(CvSeq*) cvHoughLines2( CvArr* image, void* line_storage, int method,
+ double rho, double theta, int threshold,
+ double param1 CV_DEFAULT(0), double param2 CV_DEFAULT(0));
+
+/* Finds circles in the image */
+CVAPI(CvSeq*) cvHoughCircles( CvArr* image, void* circle_storage,
+ int method, double dp, double min_dist,
+ double param1 CV_DEFAULT(100),
+ double param2 CV_DEFAULT(100),
+ int min_radius CV_DEFAULT(0),
+ int max_radius CV_DEFAULT(0));
+
+/* Fits a line into set of 2d or 3d points in a robust way (M-estimator technique) */
+CVAPI(void) cvFitLine( const CvArr* points, int dist_type, double param,
+ double reps, double aeps, float* line );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/types_c.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/types_c.h
new file mode 100644
index 00000000..4aba0a87
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/imgproc/types_c.h
@@ -0,0 +1,640 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_IMGPROC_TYPES_C_H__
+#define __OPENCV_IMGPROC_TYPES_C_H__
+
+#include "opencv2/core/core_c.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Connected component structure */
+typedef struct CvConnectedComp
+{
+ double area; /* area of the connected component */
+ CvScalar value; /* average color of the connected component */
+ CvRect rect; /* ROI of the component */
+ CvSeq* contour; /* optional component boundary
+ (the contour might have child contours corresponding to the holes)*/
+}
+CvConnectedComp;
+
+/* Image smooth methods */
+enum
+{
+ CV_BLUR_NO_SCALE =0,
+ CV_BLUR =1,
+ CV_GAUSSIAN =2,
+ CV_MEDIAN =3,
+ CV_BILATERAL =4
+};
+
+/* Filters used in pyramid decomposition */
+enum
+{
+ CV_GAUSSIAN_5x5 = 7
+};
+
+/* Special filters */
+enum
+{
+ CV_SCHARR =-1,
+ CV_MAX_SOBEL_KSIZE =7
+};
+
+/* Constants for color conversion */
+enum
+{
+ CV_BGR2BGRA =0,
+ CV_RGB2RGBA =CV_BGR2BGRA,
+
+ CV_BGRA2BGR =1,
+ CV_RGBA2RGB =CV_BGRA2BGR,
+
+ CV_BGR2RGBA =2,
+ CV_RGB2BGRA =CV_BGR2RGBA,
+
+ CV_RGBA2BGR =3,
+ CV_BGRA2RGB =CV_RGBA2BGR,
+
+ CV_BGR2RGB =4,
+ CV_RGB2BGR =CV_BGR2RGB,
+
+ CV_BGRA2RGBA =5,
+ CV_RGBA2BGRA =CV_BGRA2RGBA,
+
+ CV_BGR2GRAY =6,
+ CV_RGB2GRAY =7,
+ CV_GRAY2BGR =8,
+ CV_GRAY2RGB =CV_GRAY2BGR,
+ CV_GRAY2BGRA =9,
+ CV_GRAY2RGBA =CV_GRAY2BGRA,
+ CV_BGRA2GRAY =10,
+ CV_RGBA2GRAY =11,
+
+ CV_BGR2BGR565 =12,
+ CV_RGB2BGR565 =13,
+ CV_BGR5652BGR =14,
+ CV_BGR5652RGB =15,
+ CV_BGRA2BGR565 =16,
+ CV_RGBA2BGR565 =17,
+ CV_BGR5652BGRA =18,
+ CV_BGR5652RGBA =19,
+
+ CV_GRAY2BGR565 =20,
+ CV_BGR5652GRAY =21,
+
+ CV_BGR2BGR555 =22,
+ CV_RGB2BGR555 =23,
+ CV_BGR5552BGR =24,
+ CV_BGR5552RGB =25,
+ CV_BGRA2BGR555 =26,
+ CV_RGBA2BGR555 =27,
+ CV_BGR5552BGRA =28,
+ CV_BGR5552RGBA =29,
+
+ CV_GRAY2BGR555 =30,
+ CV_BGR5552GRAY =31,
+
+ CV_BGR2XYZ =32,
+ CV_RGB2XYZ =33,
+ CV_XYZ2BGR =34,
+ CV_XYZ2RGB =35,
+
+ CV_BGR2YCrCb =36,
+ CV_RGB2YCrCb =37,
+ CV_YCrCb2BGR =38,
+ CV_YCrCb2RGB =39,
+
+ CV_BGR2HSV =40,
+ CV_RGB2HSV =41,
+
+ CV_BGR2Lab =44,
+ CV_RGB2Lab =45,
+
+ CV_BayerBG2BGR =46,
+ CV_BayerGB2BGR =47,
+ CV_BayerRG2BGR =48,
+ CV_BayerGR2BGR =49,
+
+ CV_BayerBG2RGB =CV_BayerRG2BGR,
+ CV_BayerGB2RGB =CV_BayerGR2BGR,
+ CV_BayerRG2RGB =CV_BayerBG2BGR,
+ CV_BayerGR2RGB =CV_BayerGB2BGR,
+
+ CV_BGR2Luv =50,
+ CV_RGB2Luv =51,
+ CV_BGR2HLS =52,
+ CV_RGB2HLS =53,
+
+ CV_HSV2BGR =54,
+ CV_HSV2RGB =55,
+
+ CV_Lab2BGR =56,
+ CV_Lab2RGB =57,
+ CV_Luv2BGR =58,
+ CV_Luv2RGB =59,
+ CV_HLS2BGR =60,
+ CV_HLS2RGB =61,
+
+ CV_BayerBG2BGR_VNG =62,
+ CV_BayerGB2BGR_VNG =63,
+ CV_BayerRG2BGR_VNG =64,
+ CV_BayerGR2BGR_VNG =65,
+
+ CV_BayerBG2RGB_VNG =CV_BayerRG2BGR_VNG,
+ CV_BayerGB2RGB_VNG =CV_BayerGR2BGR_VNG,
+ CV_BayerRG2RGB_VNG =CV_BayerBG2BGR_VNG,
+ CV_BayerGR2RGB_VNG =CV_BayerGB2BGR_VNG,
+
+ CV_BGR2HSV_FULL = 66,
+ CV_RGB2HSV_FULL = 67,
+ CV_BGR2HLS_FULL = 68,
+ CV_RGB2HLS_FULL = 69,
+
+ CV_HSV2BGR_FULL = 70,
+ CV_HSV2RGB_FULL = 71,
+ CV_HLS2BGR_FULL = 72,
+ CV_HLS2RGB_FULL = 73,
+
+ CV_LBGR2Lab = 74,
+ CV_LRGB2Lab = 75,
+ CV_LBGR2Luv = 76,
+ CV_LRGB2Luv = 77,
+
+ CV_Lab2LBGR = 78,
+ CV_Lab2LRGB = 79,
+ CV_Luv2LBGR = 80,
+ CV_Luv2LRGB = 81,
+
+ CV_BGR2YUV = 82,
+ CV_RGB2YUV = 83,
+ CV_YUV2BGR = 84,
+ CV_YUV2RGB = 85,
+
+ CV_BayerBG2GRAY = 86,
+ CV_BayerGB2GRAY = 87,
+ CV_BayerRG2GRAY = 88,
+ CV_BayerGR2GRAY = 89,
+
+ //YUV 4:2:0 formats family
+ CV_YUV2RGB_NV12 = 90,
+ CV_YUV2BGR_NV12 = 91,
+ CV_YUV2RGB_NV21 = 92,
+ CV_YUV2BGR_NV21 = 93,
+ CV_YUV420sp2RGB = CV_YUV2RGB_NV21,
+ CV_YUV420sp2BGR = CV_YUV2BGR_NV21,
+
+ CV_YUV2RGBA_NV12 = 94,
+ CV_YUV2BGRA_NV12 = 95,
+ CV_YUV2RGBA_NV21 = 96,
+ CV_YUV2BGRA_NV21 = 97,
+ CV_YUV420sp2RGBA = CV_YUV2RGBA_NV21,
+ CV_YUV420sp2BGRA = CV_YUV2BGRA_NV21,
+
+ CV_YUV2RGB_YV12 = 98,
+ CV_YUV2BGR_YV12 = 99,
+ CV_YUV2RGB_IYUV = 100,
+ CV_YUV2BGR_IYUV = 101,
+ CV_YUV2RGB_I420 = CV_YUV2RGB_IYUV,
+ CV_YUV2BGR_I420 = CV_YUV2BGR_IYUV,
+ CV_YUV420p2RGB = CV_YUV2RGB_YV12,
+ CV_YUV420p2BGR = CV_YUV2BGR_YV12,
+
+ CV_YUV2RGBA_YV12 = 102,
+ CV_YUV2BGRA_YV12 = 103,
+ CV_YUV2RGBA_IYUV = 104,
+ CV_YUV2BGRA_IYUV = 105,
+ CV_YUV2RGBA_I420 = CV_YUV2RGBA_IYUV,
+ CV_YUV2BGRA_I420 = CV_YUV2BGRA_IYUV,
+ CV_YUV420p2RGBA = CV_YUV2RGBA_YV12,
+ CV_YUV420p2BGRA = CV_YUV2BGRA_YV12,
+
+ CV_YUV2GRAY_420 = 106,
+ CV_YUV2GRAY_NV21 = CV_YUV2GRAY_420,
+ CV_YUV2GRAY_NV12 = CV_YUV2GRAY_420,
+ CV_YUV2GRAY_YV12 = CV_YUV2GRAY_420,
+ CV_YUV2GRAY_IYUV = CV_YUV2GRAY_420,
+ CV_YUV2GRAY_I420 = CV_YUV2GRAY_420,
+ CV_YUV420sp2GRAY = CV_YUV2GRAY_420,
+ CV_YUV420p2GRAY = CV_YUV2GRAY_420,
+
+ //YUV 4:2:2 formats family
+ CV_YUV2RGB_UYVY = 107,
+ CV_YUV2BGR_UYVY = 108,
+ //CV_YUV2RGB_VYUY = 109,
+ //CV_YUV2BGR_VYUY = 110,
+ CV_YUV2RGB_Y422 = CV_YUV2RGB_UYVY,
+ CV_YUV2BGR_Y422 = CV_YUV2BGR_UYVY,
+ CV_YUV2RGB_UYNV = CV_YUV2RGB_UYVY,
+ CV_YUV2BGR_UYNV = CV_YUV2BGR_UYVY,
+
+ CV_YUV2RGBA_UYVY = 111,
+ CV_YUV2BGRA_UYVY = 112,
+ //CV_YUV2RGBA_VYUY = 113,
+ //CV_YUV2BGRA_VYUY = 114,
+ CV_YUV2RGBA_Y422 = CV_YUV2RGBA_UYVY,
+ CV_YUV2BGRA_Y422 = CV_YUV2BGRA_UYVY,
+ CV_YUV2RGBA_UYNV = CV_YUV2RGBA_UYVY,
+ CV_YUV2BGRA_UYNV = CV_YUV2BGRA_UYVY,
+
+ CV_YUV2RGB_YUY2 = 115,
+ CV_YUV2BGR_YUY2 = 116,
+ CV_YUV2RGB_YVYU = 117,
+ CV_YUV2BGR_YVYU = 118,
+ CV_YUV2RGB_YUYV = CV_YUV2RGB_YUY2,
+ CV_YUV2BGR_YUYV = CV_YUV2BGR_YUY2,
+ CV_YUV2RGB_YUNV = CV_YUV2RGB_YUY2,
+ CV_YUV2BGR_YUNV = CV_YUV2BGR_YUY2,
+
+ CV_YUV2RGBA_YUY2 = 119,
+ CV_YUV2BGRA_YUY2 = 120,
+ CV_YUV2RGBA_YVYU = 121,
+ CV_YUV2BGRA_YVYU = 122,
+ CV_YUV2RGBA_YUYV = CV_YUV2RGBA_YUY2,
+ CV_YUV2BGRA_YUYV = CV_YUV2BGRA_YUY2,
+ CV_YUV2RGBA_YUNV = CV_YUV2RGBA_YUY2,
+ CV_YUV2BGRA_YUNV = CV_YUV2BGRA_YUY2,
+
+ CV_YUV2GRAY_UYVY = 123,
+ CV_YUV2GRAY_YUY2 = 124,
+ //CV_YUV2GRAY_VYUY = CV_YUV2GRAY_UYVY,
+ CV_YUV2GRAY_Y422 = CV_YUV2GRAY_UYVY,
+ CV_YUV2GRAY_UYNV = CV_YUV2GRAY_UYVY,
+ CV_YUV2GRAY_YVYU = CV_YUV2GRAY_YUY2,
+ CV_YUV2GRAY_YUYV = CV_YUV2GRAY_YUY2,
+ CV_YUV2GRAY_YUNV = CV_YUV2GRAY_YUY2,
+
+ // alpha premultiplication
+ CV_RGBA2mRGBA = 125,
+ CV_mRGBA2RGBA = 126,
+
+ CV_RGB2YUV_I420 = 127,
+ CV_BGR2YUV_I420 = 128,
+ CV_RGB2YUV_IYUV = CV_RGB2YUV_I420,
+ CV_BGR2YUV_IYUV = CV_BGR2YUV_I420,
+
+ CV_RGBA2YUV_I420 = 129,
+ CV_BGRA2YUV_I420 = 130,
+ CV_RGBA2YUV_IYUV = CV_RGBA2YUV_I420,
+ CV_BGRA2YUV_IYUV = CV_BGRA2YUV_I420,
+ CV_RGB2YUV_YV12 = 131,
+ CV_BGR2YUV_YV12 = 132,
+ CV_RGBA2YUV_YV12 = 133,
+ CV_BGRA2YUV_YV12 = 134,
+
+ CV_COLORCVT_MAX = 135
+};
+
+
+/* Sub-pixel interpolation methods */
+enum
+{
+ CV_INTER_NN =0,
+ CV_INTER_LINEAR =1,
+ CV_INTER_CUBIC =2,
+ CV_INTER_AREA =3,
+ CV_INTER_LANCZOS4 =4
+};
+
+/* ... and other image warping flags */
+enum
+{
+ CV_WARP_FILL_OUTLIERS =8,
+ CV_WARP_INVERSE_MAP =16
+};
+
+/* Shapes of a structuring element for morphological operations */
+enum
+{
+ CV_SHAPE_RECT =0,
+ CV_SHAPE_CROSS =1,
+ CV_SHAPE_ELLIPSE =2,
+ CV_SHAPE_CUSTOM =100
+};
+
+/* Morphological operations */
+enum
+{
+ CV_MOP_ERODE =0,
+ CV_MOP_DILATE =1,
+ CV_MOP_OPEN =2,
+ CV_MOP_CLOSE =3,
+ CV_MOP_GRADIENT =4,
+ CV_MOP_TOPHAT =5,
+ CV_MOP_BLACKHAT =6
+};
+
+/* Spatial and central moments */
+typedef struct CvMoments
+{
+ double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; /* spatial moments */
+ double mu20, mu11, mu02, mu30, mu21, mu12, mu03; /* central moments */
+ double inv_sqrt_m00; /* m00 != 0 ? 1/sqrt(m00) : 0 */
+}
+CvMoments;
+
+/* Hu invariants */
+typedef struct CvHuMoments
+{
+ double hu1, hu2, hu3, hu4, hu5, hu6, hu7; /* Hu invariants */
+}
+CvHuMoments;
+
+/* Template matching methods */
+enum
+{
+ CV_TM_SQDIFF =0,
+ CV_TM_SQDIFF_NORMED =1,
+ CV_TM_CCORR =2,
+ CV_TM_CCORR_NORMED =3,
+ CV_TM_CCOEFF =4,
+ CV_TM_CCOEFF_NORMED =5
+};
+
+typedef float (CV_CDECL * CvDistanceFunction)( const float* a, const float* b, void* user_param );
+
+/* Contour retrieval modes */
+enum
+{
+ CV_RETR_EXTERNAL=0,
+ CV_RETR_LIST=1,
+ CV_RETR_CCOMP=2,
+ CV_RETR_TREE=3,
+ CV_RETR_FLOODFILL=4
+};
+
+/* Contour approximation methods */
+enum
+{
+ CV_CHAIN_CODE=0,
+ CV_CHAIN_APPROX_NONE=1,
+ CV_CHAIN_APPROX_SIMPLE=2,
+ CV_CHAIN_APPROX_TC89_L1=3,
+ CV_CHAIN_APPROX_TC89_KCOS=4,
+ CV_LINK_RUNS=5
+};
+
+/*
+Internal structure that is used for sequental retrieving contours from the image.
+It supports both hierarchical and plane variants of Suzuki algorithm.
+*/
+typedef struct _CvContourScanner* CvContourScanner;
+
+/* Freeman chain reader state */
+typedef struct CvChainPtReader
+{
+ CV_SEQ_READER_FIELDS()
+ char code;
+ CvPoint pt;
+ schar deltas[8][2];
+}
+CvChainPtReader;
+
+/* initializes 8-element array for fast access to 3x3 neighborhood of a pixel */
+#define CV_INIT_3X3_DELTAS( deltas, step, nch ) \
+ ((deltas)[0] = (nch), (deltas)[1] = -(step) + (nch), \
+ (deltas)[2] = -(step), (deltas)[3] = -(step) - (nch), \
+ (deltas)[4] = -(nch), (deltas)[5] = (step) - (nch), \
+ (deltas)[6] = (step), (deltas)[7] = (step) + (nch))
+
+
+/****************************************************************************************\
+* Planar subdivisions *
+\****************************************************************************************/
+
+typedef size_t CvSubdiv2DEdge;
+
+#define CV_QUADEDGE2D_FIELDS() \
+ int flags; \
+ struct CvSubdiv2DPoint* pt[4]; \
+ CvSubdiv2DEdge next[4];
+
+#define CV_SUBDIV2D_POINT_FIELDS()\
+ int flags; \
+ CvSubdiv2DEdge first; \
+ CvPoint2D32f pt; \
+ int id;
+
+#define CV_SUBDIV2D_VIRTUAL_POINT_FLAG (1 << 30)
+
+typedef struct CvQuadEdge2D
+{
+ CV_QUADEDGE2D_FIELDS()
+}
+CvQuadEdge2D;
+
+typedef struct CvSubdiv2DPoint
+{
+ CV_SUBDIV2D_POINT_FIELDS()
+}
+CvSubdiv2DPoint;
+
+#define CV_SUBDIV2D_FIELDS() \
+ CV_GRAPH_FIELDS() \
+ int quad_edges; \
+ int is_geometry_valid; \
+ CvSubdiv2DEdge recent_edge; \
+ CvPoint2D32f topleft; \
+ CvPoint2D32f bottomright;
+
+typedef struct CvSubdiv2D
+{
+ CV_SUBDIV2D_FIELDS()
+}
+CvSubdiv2D;
+
+
+typedef enum CvSubdiv2DPointLocation
+{
+ CV_PTLOC_ERROR = -2,
+ CV_PTLOC_OUTSIDE_RECT = -1,
+ CV_PTLOC_INSIDE = 0,
+ CV_PTLOC_VERTEX = 1,
+ CV_PTLOC_ON_EDGE = 2
+}
+CvSubdiv2DPointLocation;
+
+typedef enum CvNextEdgeType
+{
+ CV_NEXT_AROUND_ORG = 0x00,
+ CV_NEXT_AROUND_DST = 0x22,
+ CV_PREV_AROUND_ORG = 0x11,
+ CV_PREV_AROUND_DST = 0x33,
+ CV_NEXT_AROUND_LEFT = 0x13,
+ CV_NEXT_AROUND_RIGHT = 0x31,
+ CV_PREV_AROUND_LEFT = 0x20,
+ CV_PREV_AROUND_RIGHT = 0x02
+}
+CvNextEdgeType;
+
+/* get the next edge with the same origin point (counterwise) */
+#define CV_SUBDIV2D_NEXT_EDGE( edge ) (((CvQuadEdge2D*)((edge) & ~3))->next[(edge)&3])
+
+
+/* Contour approximation algorithms */
+enum
+{
+ CV_POLY_APPROX_DP = 0
+};
+
+/* Shape matching methods */
+enum
+{
+ CV_CONTOURS_MATCH_I1 =1,
+ CV_CONTOURS_MATCH_I2 =2,
+ CV_CONTOURS_MATCH_I3 =3
+};
+
+/* Shape orientation */
+enum
+{
+ CV_CLOCKWISE =1,
+ CV_COUNTER_CLOCKWISE =2
+};
+
+
+/* Convexity defect */
+typedef struct CvConvexityDefect
+{
+ CvPoint* start; /* point of the contour where the defect begins */
+ CvPoint* end; /* point of the contour where the defect ends */
+ CvPoint* depth_point; /* the farthest from the convex hull point within the defect */
+ float depth; /* distance between the farthest point and the convex hull */
+} CvConvexityDefect;
+
+
+/* Histogram comparison methods */
+enum
+{
+ CV_COMP_CORREL =0,
+ CV_COMP_CHISQR =1,
+ CV_COMP_INTERSECT =2,
+ CV_COMP_BHATTACHARYYA =3,
+ CV_COMP_HELLINGER =CV_COMP_BHATTACHARYYA
+};
+
+/* Mask size for distance transform */
+enum
+{
+ CV_DIST_MASK_3 =3,
+ CV_DIST_MASK_5 =5,
+ CV_DIST_MASK_PRECISE =0
+};
+
+/* Content of output label array: connected components or pixels */
+enum
+{
+ CV_DIST_LABEL_CCOMP = 0,
+ CV_DIST_LABEL_PIXEL = 1
+};
+
+/* Distance types for Distance Transform and M-estimators */
+enum
+{
+ CV_DIST_USER =-1, /* User defined distance */
+ CV_DIST_L1 =1, /* distance = |x1-x2| + |y1-y2| */
+ CV_DIST_L2 =2, /* the simple euclidean distance */
+ CV_DIST_C =3, /* distance = max(|x1-x2|,|y1-y2|) */
+ CV_DIST_L12 =4, /* L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) */
+ CV_DIST_FAIR =5, /* distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998 */
+ CV_DIST_WELSCH =6, /* distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 */
+ CV_DIST_HUBER =7 /* distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345 */
+};
+
+
+/* Threshold types */
+enum
+{
+ CV_THRESH_BINARY =0, /* value = value > threshold ? max_value : 0 */
+ CV_THRESH_BINARY_INV =1, /* value = value > threshold ? 0 : max_value */
+ CV_THRESH_TRUNC =2, /* value = value > threshold ? threshold : value */
+ CV_THRESH_TOZERO =3, /* value = value > threshold ? value : 0 */
+ CV_THRESH_TOZERO_INV =4, /* value = value > threshold ? 0 : value */
+ CV_THRESH_MASK =7,
+ CV_THRESH_OTSU =8 /* use Otsu algorithm to choose the optimal threshold value;
+ combine the flag with one of the above CV_THRESH_* values */
+};
+
+/* Adaptive threshold methods */
+enum
+{
+ CV_ADAPTIVE_THRESH_MEAN_C =0,
+ CV_ADAPTIVE_THRESH_GAUSSIAN_C =1
+};
+
+/* FloodFill flags */
+enum
+{
+ CV_FLOODFILL_FIXED_RANGE =(1 << 16),
+ CV_FLOODFILL_MASK_ONLY =(1 << 17)
+};
+
+
+/* Canny edge detector flags */
+enum
+{
+ CV_CANNY_L2_GRADIENT =(1 << 31)
+};
+
+/* Variants of a Hough transform */
+enum
+{
+ CV_HOUGH_STANDARD =0,
+ CV_HOUGH_PROBABILISTIC =1,
+ CV_HOUGH_MULTI_SCALE =2,
+ CV_HOUGH_GRADIENT =3
+};
+
+
+/* Fast search data structures */
+struct CvFeatureTree;
+struct CvLSH;
+struct CvLSHOperations;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/blobtrack.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/blobtrack.hpp
new file mode 100644
index 00000000..496b8be2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/blobtrack.hpp
@@ -0,0 +1,948 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+
+#ifndef __OPENCV_VIDEOSURVEILLANCE_H__
+#define __OPENCV_VIDEOSURVEILLANCE_H__
+
+/* Turn off the functionality until cvaux/src/Makefile.am gets updated: */
+//#if _MSC_VER >= 1200
+
+#include "opencv2/core/core_c.h"
+#include <stdio.h>
+
+#if (defined _MSC_VER && _MSC_VER >= 1200) || defined __BORLANDC__
+#define cv_stricmp stricmp
+#define cv_strnicmp strnicmp
+#if defined WINCE
+#define strdup _strdup
+#define stricmp _stricmp
+#endif
+#elif defined __GNUC__ || defined __sun
+#define cv_stricmp strcasecmp
+#define cv_strnicmp strncasecmp
+#else
+#error Do not know how to make case-insensitive string comparison on this platform
+#endif
+
+//struct DefParam;
+struct CvDefParam
+{
+ struct CvDefParam* next;
+ char* pName;
+ char* pComment;
+ double* pDouble;
+ double Double;
+ float* pFloat;
+ float Float;
+ int* pInt;
+ int Int;
+ char** pStr;
+ char* Str;
+};
+
+class CV_EXPORTS CvVSModule
+{
+private: /* Internal data: */
+ CvDefParam* m_pParamList;
+ char* m_pModuleTypeName;
+ char* m_pModuleName;
+ char* m_pNickName;
+protected:
+ int m_Wnd;
+public: /* Constructor and destructor: */
+ CvVSModule();
+ virtual ~CvVSModule();
+private: /* Internal functions: */
+ void FreeParam(CvDefParam** pp);
+ CvDefParam* NewParam(const char* name);
+ CvDefParam* GetParamPtr(int index);
+ CvDefParam* GetParamPtr(const char* name);
+protected: /* INTERNAL INTERFACE */
+ int IsParam(const char* name);
+ void AddParam(const char* name, double* pAddr);
+ void AddParam(const char* name, float* pAddr);
+ void AddParam(const char* name, int* pAddr);
+ void AddParam(const char* name, const char** pAddr);
+ void AddParam(const char* name);
+ void CommentParam(const char* name, const char* pComment);
+ void SetTypeName(const char* name);
+ void SetModuleName(const char* name);
+ void DelParam(const char* name);
+
+public: /* EXTERNAL INTERFACE */
+ const char* GetParamName(int index);
+ const char* GetParamComment(const char* name);
+ double GetParam(const char* name);
+ const char* GetParamStr(const char* name);
+ void SetParam(const char* name, double val);
+ void SetParamStr(const char* name, const char* str);
+ void TransferParamsFromChild(CvVSModule* pM, const char* prefix = NULL);
+ void TransferParamsToChild(CvVSModule* pM, char* prefix = NULL);
+ virtual void ParamUpdate();
+ const char* GetTypeName();
+ int IsModuleTypeName(const char* name);
+ char* GetModuleName();
+ int IsModuleName(const char* name);
+ void SetNickName(const char* pStr);
+ const char* GetNickName();
+ virtual void SaveState(CvFileStorage*);
+ virtual void LoadState(CvFileStorage*, CvFileNode*);
+
+ virtual void Release() = 0;
+};/* CvVMModule */
+
+CV_EXPORTS void cvWriteStruct(CvFileStorage* fs, const char* name, void* addr, const char* desc, int num=1);
+CV_EXPORTS void cvReadStructByName(CvFileStorage* fs, CvFileNode* node, const char* name, void* addr, const char* desc);
+
+/* FOREGROUND DETECTOR INTERFACE */
+class CV_EXPORTS CvFGDetector : public CvVSModule
+{
+public:
+ CvFGDetector();
+ virtual IplImage* GetMask() = 0;
+ /* Process current image: */
+ virtual void Process(IplImage* pImg) = 0;
+ /* Release foreground detector: */
+ virtual void Release() = 0;
+};
+
+CV_EXPORTS void cvReleaseFGDetector(CvFGDetector** ppT );
+CV_EXPORTS CvFGDetector* cvCreateFGDetectorBase(int type, void *param);
+
+
+/* BLOB STRUCTURE*/
+struct CvBlob
+{
+ float x,y; /* blob position */
+ float w,h; /* blob sizes */
+ int ID; /* blob ID */
+};
+
+inline CvBlob cvBlob(float x,float y, float w, float h)
+{
+ CvBlob B = {x,y,w,h,0};
+ return B;
+}
+#define CV_BLOB_MINW 5
+#define CV_BLOB_MINH 5
+#define CV_BLOB_ID(pB) (((CvBlob*)(pB))->ID)
+#define CV_BLOB_CENTER(pB) cvPoint2D32f(((CvBlob*)(pB))->x,((CvBlob*)(pB))->y)
+#define CV_BLOB_X(pB) (((CvBlob*)(pB))->x)
+#define CV_BLOB_Y(pB) (((CvBlob*)(pB))->y)
+#define CV_BLOB_WX(pB) (((CvBlob*)(pB))->w)
+#define CV_BLOB_WY(pB) (((CvBlob*)(pB))->h)
+#define CV_BLOB_RX(pB) (0.5f*CV_BLOB_WX(pB))
+#define CV_BLOB_RY(pB) (0.5f*CV_BLOB_WY(pB))
+#define CV_BLOB_RECT(pB) cvRect(cvRound(((CvBlob*)(pB))->x-CV_BLOB_RX(pB)),cvRound(((CvBlob*)(pB))->y-CV_BLOB_RY(pB)),cvRound(CV_BLOB_WX(pB)),cvRound(CV_BLOB_WY(pB)))
+/* END BLOB STRUCTURE*/
+
+
+/* simple BLOBLIST */
+class CV_EXPORTS CvBlobSeq
+{
+public:
+ CvBlobSeq(int BlobSize = sizeof(CvBlob))
+ {
+ m_pMem = cvCreateMemStorage();
+ m_pSeq = cvCreateSeq(0,sizeof(CvSeq),BlobSize,m_pMem);
+ strcpy(m_pElemFormat,"ffffi");
+ }
+ virtual ~CvBlobSeq()
+ {
+ cvReleaseMemStorage(&m_pMem);
+ };
+ virtual CvBlob* GetBlob(int BlobIndex)
+ {
+ return (CvBlob*)cvGetSeqElem(m_pSeq,BlobIndex);
+ };
+ virtual CvBlob* GetBlobByID(int BlobID)
+ {
+ int i;
+ for(i=0; i<m_pSeq->total; ++i)
+ if(BlobID == CV_BLOB_ID(GetBlob(i)))
+ return GetBlob(i);
+ return NULL;
+ };
+ virtual void DelBlob(int BlobIndex)
+ {
+ cvSeqRemove(m_pSeq,BlobIndex);
+ };
+ virtual void DelBlobByID(int BlobID)
+ {
+ int i;
+ for(i=0; i<m_pSeq->total; ++i)
+ {
+ if(BlobID == CV_BLOB_ID(GetBlob(i)))
+ {
+ DelBlob(i);
+ return;
+ }
+ }
+ };
+ virtual void Clear()
+ {
+ cvClearSeq(m_pSeq);
+ };
+ virtual void AddBlob(CvBlob* pB)
+ {
+ cvSeqPush(m_pSeq,pB);
+ };
+ virtual int GetBlobNum()
+ {
+ return m_pSeq->total;
+ };
+ virtual void Write(CvFileStorage* fs, const char* name)
+ {
+ const char* attr[] = {"dt",m_pElemFormat,NULL};
+ if(fs)
+ {
+ cvWrite(fs,name,m_pSeq,cvAttrList(attr,NULL));
+ }
+ }
+ virtual void Load(CvFileStorage* fs, CvFileNode* node)
+ {
+ if(fs==NULL) return;
+ CvSeq* pSeq = (CvSeq*)cvRead(fs, node);
+ if(pSeq)
+ {
+ int i;
+ cvClearSeq(m_pSeq);
+ for(i=0;i<pSeq->total;++i)
+ {
+ void* pB = cvGetSeqElem( pSeq, i );
+ cvSeqPush( m_pSeq, pB );
+ }
+ }
+ }
+ void AddFormat(const char* str){strcat(m_pElemFormat,str);}
+protected:
+ CvMemStorage* m_pMem;
+ CvSeq* m_pSeq;
+ char m_pElemFormat[1024];
+};
+/* simple BLOBLIST */
+
+
+/* simple TRACKLIST */
+struct CvBlobTrack
+{
+ int TrackID;
+ int StartFrame;
+ CvBlobSeq* pBlobSeq;
+};
+
+class CV_EXPORTS CvBlobTrackSeq
+{
+public:
+ CvBlobTrackSeq(int TrackSize = sizeof(CvBlobTrack));
+ virtual ~CvBlobTrackSeq();
+ virtual CvBlobTrack* GetBlobTrack(int TrackIndex);
+ virtual CvBlobTrack* GetBlobTrackByID(int TrackID);
+ virtual void DelBlobTrack(int TrackIndex);
+ virtual void DelBlobTrackByID(int TrackID);
+ virtual void Clear();
+ virtual void AddBlobTrack(int TrackID, int StartFrame = 0);
+ virtual int GetBlobTrackNum();
+protected:
+ CvMemStorage* m_pMem;
+ CvSeq* m_pSeq;
+};
+
+/* simple TRACKLIST */
+
+
+/* BLOB DETECTOR INTERFACE */
+class CV_EXPORTS CvBlobDetector: public CvVSModule
+{
+public:
+ CvBlobDetector(){SetTypeName("BlobDetector");};
+ /* Try to detect new blob entrance based on foreground mask. */
+ /* pFGMask - image of foreground mask */
+ /* pNewBlob - pointer to CvBlob structure which will be filled if new blob entrance detected */
+ /* pOldBlobList - pointer to blob list which already exist on image */
+ virtual int DetectNewBlob(IplImage* pImg, IplImage* pImgFG, CvBlobSeq* pNewBlobList, CvBlobSeq* pOldBlobList) = 0;
+ /* release blob detector */
+ virtual void Release()=0;
+};
+
+/* Release any blob detector: */
+CV_EXPORTS void cvReleaseBlobDetector(CvBlobDetector** ppBD);
+
+/* Declarations of constructors of implemented modules: */
+CV_EXPORTS CvBlobDetector* cvCreateBlobDetectorSimple();
+CV_EXPORTS CvBlobDetector* cvCreateBlobDetectorCC();
+
+struct CV_EXPORTS CvDetectedBlob : public CvBlob
+{
+ float response;
+};
+
+CV_INLINE CvDetectedBlob cvDetectedBlob( float x, float y, float w, float h, int ID = 0, float response = 0.0F )
+{
+ CvDetectedBlob b;
+ b.x = x; b.y = y; b.w = w; b.h = h; b.ID = ID; b.response = response;
+ return b;
+}
+
+
+class CV_EXPORTS CvObjectDetector
+{
+public:
+ CvObjectDetector( const char* /*detector_file_name*/ = 0 );
+ ~CvObjectDetector();
+
+ /*
+ * Release the current detector and load new detector from file
+ * (if detector_file_name is not 0)
+ * Return true on success:
+ */
+ bool Load( const char* /*detector_file_name*/ = 0 );
+
+ /* Return min detector window size: */
+ CvSize GetMinWindowSize() const;
+
+ /* Return max border: */
+ int GetMaxBorderSize() const;
+
+ /*
+ * Detect the object on the image and push the detected
+ * blobs into <detected_blob_seq> which must be the sequence of <CvDetectedBlob>s
+ */
+ void Detect( const CvArr* /*img*/, /* out */ CvBlobSeq* /*detected_blob_seq*/ = 0 );
+
+protected:
+ class CvObjectDetectorImpl* impl;
+};
+
+
+CV_INLINE CvRect cvRectIntersection( const CvRect r1, const CvRect r2 )
+{
+ CvRect r = cvRect( MAX(r1.x, r2.x), MAX(r1.y, r2.y), 0, 0 );
+
+ r.width = MIN(r1.x + r1.width, r2.x + r2.width) - r.x;
+ r.height = MIN(r1.y + r1.height, r2.y + r2.height) - r.y;
+
+ return r;
+}
+
+
+/*
+ * CvImageDrawer
+ *
+ * Draw on an image the specified ROIs from the source image and
+ * given blobs as ellipses or rectangles:
+ */
+
+struct CvDrawShape
+{
+ enum {RECT, ELLIPSE} shape;
+ CvScalar color;
+};
+
+/*extern const CvDrawShape icv_shape[] =
+{
+ { CvDrawShape::ELLIPSE, CV_RGB(255,0,0) },
+ { CvDrawShape::ELLIPSE, CV_RGB(0,255,0) },
+ { CvDrawShape::ELLIPSE, CV_RGB(0,0,255) },
+ { CvDrawShape::ELLIPSE, CV_RGB(255,255,0) },
+ { CvDrawShape::ELLIPSE, CV_RGB(0,255,255) },
+ { CvDrawShape::ELLIPSE, CV_RGB(255,0,255) }
+};*/
+
+class CV_EXPORTS CvImageDrawer
+{
+public:
+ CvImageDrawer() : m_image(0) {}
+ ~CvImageDrawer() { cvReleaseImage( &m_image ); }
+ void SetShapes( const CvDrawShape* shapes, int num );
+ /* <blob_seq> must be the sequence of <CvDetectedBlob>s */
+ IplImage* Draw( const CvArr* src, CvBlobSeq* blob_seq = 0, const CvSeq* roi_seq = 0 );
+ IplImage* GetImage() { return m_image; }
+protected:
+ //static const int MAX_SHAPES = sizeof(icv_shape) / sizeof(icv_shape[0]);;
+
+ IplImage* m_image;
+ CvDrawShape m_shape[16];
+};
+
+
+
+/* Trajectory generation module: */
+class CV_EXPORTS CvBlobTrackGen: public CvVSModule
+{
+public:
+ CvBlobTrackGen(){SetTypeName("BlobTrackGen");};
+ virtual void SetFileName(char* pFileName) = 0;
+ virtual void AddBlob(CvBlob* pBlob) = 0;
+ virtual void Process(IplImage* pImg = NULL, IplImage* pFG = NULL) = 0;
+ virtual void Release() = 0;
+};
+
+inline void cvReleaseBlobTrackGen(CvBlobTrackGen** pBTGen)
+{
+ if(*pBTGen)(*pBTGen)->Release();
+ *pBTGen = 0;
+}
+
+/* Declarations of constructors of implemented modules: */
+CV_EXPORTS CvBlobTrackGen* cvCreateModuleBlobTrackGen1();
+CV_EXPORTS CvBlobTrackGen* cvCreateModuleBlobTrackGenYML();
+
+
+
+/* BLOB TRACKER INTERFACE */
+class CV_EXPORTS CvBlobTracker: public CvVSModule
+{
+public:
+ CvBlobTracker();
+
+ /* Add new blob to track it and assign to this blob personal ID */
+ /* pBlob - pointer to structure with blob parameters (ID is ignored)*/
+ /* pImg - current image */
+ /* pImgFG - current foreground mask */
+ /* Return pointer to new added blob: */
+ virtual CvBlob* AddBlob(CvBlob* pBlob, IplImage* pImg, IplImage* pImgFG = NULL ) = 0;
+
+ /* Return number of currently tracked blobs: */
+ virtual int GetBlobNum() = 0;
+
+ /* Return pointer to specified by index blob: */
+ virtual CvBlob* GetBlob(int BlobIndex) = 0;
+
+ /* Delete blob by its index: */
+ virtual void DelBlob(int BlobIndex) = 0;
+
+ /* Process current image and track all existed blobs: */
+ virtual void Process(IplImage* pImg, IplImage* pImgFG = NULL) = 0;
+
+ /* Release blob tracker: */
+ virtual void Release() = 0;
+
+
+ /* Process one blob (for multi hypothesis tracing): */
+ virtual void ProcessBlob(int BlobIndex, CvBlob* pBlob, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL);
+
+ /* Get confidence/wieght/probability (0-1) for blob: */
+ virtual double GetConfidence(int /*BlobIndex*/, CvBlob* /*pBlob*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL);
+
+ virtual double GetConfidenceList(CvBlobSeq* pBlobList, IplImage* pImg, IplImage* pImgFG = NULL);
+
+ virtual void UpdateBlob(int /*BlobIndex*/, CvBlob* /*pBlob*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL);
+
+ /* Update all blob models: */
+ virtual void Update(IplImage* pImg, IplImage* pImgFG = NULL);
+
+ /* Return pointer to blob by its unique ID: */
+ virtual int GetBlobIndexByID(int BlobID);
+
+ /* Return pointer to blob by its unique ID: */
+ virtual CvBlob* GetBlobByID(int BlobID);
+
+ /* Delete blob by its ID: */
+ virtual void DelBlobByID(int BlobID);
+
+ /* Set new parameters for specified (by index) blob: */
+ virtual void SetBlob(int /*BlobIndex*/, CvBlob* /*pBlob*/);
+
+ /* Set new parameters for specified (by ID) blob: */
+ virtual void SetBlobByID(int BlobID, CvBlob* pBlob);
+
+ /* =============== MULTI HYPOTHESIS INTERFACE ================== */
+
+ /* Return number of position hyposetis of currently tracked blob: */
+ virtual int GetBlobHypNum(int /*BlobIdx*/);
+
+ /* Return pointer to specified blob hypothesis by index blob: */
+ virtual CvBlob* GetBlobHyp(int BlobIndex, int /*hypothesis*/);
+
+ /* Set new parameters for specified (by index) blob hyp
+ * (can be called several times for each hyp ):
+ */
+ virtual void SetBlobHyp(int /*BlobIndex*/, CvBlob* /*pBlob*/);
+};
+
+CV_EXPORTS void cvReleaseBlobTracker(CvBlobTracker**ppT );
+/* BLOB TRACKER INTERFACE */
+
+/*BLOB TRACKER ONE INTERFACE */
+class CV_EXPORTS CvBlobTrackerOne : public CvVSModule
+{
+public:
+ virtual void Init(CvBlob* pBlobInit, IplImage* pImg, IplImage* pImgFG = NULL) = 0;
+ virtual CvBlob* Process(CvBlob* pBlobPrev, IplImage* pImg, IplImage* pImgFG = NULL) = 0;
+ virtual void Release() = 0;
+
+ /* Non-required methods: */
+ virtual void SkipProcess(CvBlob* /*pBlobPrev*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL){};
+ virtual void Update(CvBlob* /*pBlob*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL){};
+ virtual void SetCollision(int /*CollisionFlag*/){}; /* call in case of blob collision situation*/
+ virtual double GetConfidence(CvBlob* /*pBlob*/, IplImage* /*pImg*/,
+ IplImage* /*pImgFG*/ = NULL, IplImage* /*pImgUnusedReg*/ = NULL)
+ {
+ return 1;
+ };
+};
+inline void cvReleaseBlobTrackerOne(CvBlobTrackerOne **ppT )
+{
+ ppT[0]->Release();
+ ppT[0] = 0;
+}
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerList(CvBlobTrackerOne* (*create)());
+/*BLOB TRACKER ONE INTERFACE */
+
+/* Declarations of constructors of implemented modules: */
+
+/* Some declarations for specific MeanShift tracker: */
+#define PROFILE_EPANECHNIKOV 0
+#define PROFILE_DOG 1
+struct CvBlobTrackerParamMS
+{
+ int noOfSigBits;
+ int appearance_profile;
+ int meanshift_profile;
+ float sigma;
+};
+
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS1(CvBlobTrackerParamMS* param);
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS2(CvBlobTrackerParamMS* param);
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS1ByList();
+
+/* Some declarations for specific Likelihood tracker: */
+struct CvBlobTrackerParamLH
+{
+ int HistType; /* see Prob.h */
+ int ScaleAfter;
+};
+
+/* Without scale optimization: */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerLHR(CvBlobTrackerParamLH* /*param*/ = NULL);
+
+/* With scale optimization: */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerLHRS(CvBlobTrackerParamLH* /*param*/ = NULL);
+
+/* Simple blob tracker based on connected component tracking: */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerCC();
+
+/* Connected component tracking and mean-shift particle filter collion-resolver: */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerCCMSPF();
+
+/* Blob tracker that integrates meanshift and connected components: */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMSFG();
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMSFGS();
+
+/* Meanshift without connected-components */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS();
+
+/* Particle filtering via Bhattacharya coefficient, which */
+/* is roughly the dot-product of two probability densities. */
+/* See: Real-Time Tracking of Non-Rigid Objects using Mean Shift */
+/* Comanicius, Ramesh, Meer, 2000, 8p */
+/* http://citeseer.ist.psu.edu/321441.html */
+CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMSPF();
+
+/* =========== tracker integrators trackers =============*/
+
+/* Integrator based on Particle Filtering method: */
+//CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerIPF();
+
+/* Rule based integrator: */
+//CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerIRB();
+
+/* Integrator based on data fusion using particle filtering: */
+//CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerIPFDF();
+
+
+
+
+/* Trajectory postprocessing module: */
+class CV_EXPORTS CvBlobTrackPostProc: public CvVSModule
+{
+public:
+ CvBlobTrackPostProc(){SetTypeName("BlobTrackPostProc");};
+ virtual void AddBlob(CvBlob* pBlob) = 0;
+ virtual void Process() = 0;
+ virtual int GetBlobNum() = 0;
+ virtual CvBlob* GetBlob(int index) = 0;
+ virtual void Release() = 0;
+
+ /* Additional functionality: */
+ virtual CvBlob* GetBlobByID(int BlobID)
+ {
+ int i;
+ for(i=GetBlobNum();i>0;i--)
+ {
+ CvBlob* pB=GetBlob(i-1);
+ if(pB->ID==BlobID) return pB;
+ }
+ return NULL;
+ };
+};
+
+inline void cvReleaseBlobTrackPostProc(CvBlobTrackPostProc** pBTPP)
+{
+ if(pBTPP == NULL) return;
+ if(*pBTPP)(*pBTPP)->Release();
+ *pBTPP = 0;
+}
+
+/* Trajectory generation module: */
+class CV_EXPORTS CvBlobTrackPostProcOne: public CvVSModule
+{
+public:
+ CvBlobTrackPostProcOne(){SetTypeName("BlobTrackPostOne");};
+ virtual CvBlob* Process(CvBlob* pBlob) = 0;
+ virtual void Release() = 0;
+};
+
+/* Create blob tracking post processing module based on simle module: */
+CV_EXPORTS CvBlobTrackPostProc* cvCreateBlobTrackPostProcList(CvBlobTrackPostProcOne* (*create)());
+
+
+/* Declarations of constructors of implemented modules: */
+CV_EXPORTS CvBlobTrackPostProc* cvCreateModuleBlobTrackPostProcKalman();
+CV_EXPORTS CvBlobTrackPostProc* cvCreateModuleBlobTrackPostProcTimeAverRect();
+CV_EXPORTS CvBlobTrackPostProc* cvCreateModuleBlobTrackPostProcTimeAverExp();
+
+
+/* PREDICTORS */
+/* blob PREDICTOR */
+class CvBlobTrackPredictor: public CvVSModule
+{
+public:
+ CvBlobTrackPredictor(){SetTypeName("BlobTrackPredictor");};
+ virtual CvBlob* Predict() = 0;
+ virtual void Update(CvBlob* pBlob) = 0;
+ virtual void Release() = 0;
+};
+CV_EXPORTS CvBlobTrackPredictor* cvCreateModuleBlobTrackPredictKalman();
+
+
+
+/* Trajectory analyser module: */
+class CV_EXPORTS CvBlobTrackAnalysis: public CvVSModule
+{
+public:
+ CvBlobTrackAnalysis(){SetTypeName("BlobTrackAnalysis");};
+ virtual void AddBlob(CvBlob* pBlob) = 0;
+ virtual void Process(IplImage* pImg, IplImage* pFG) = 0;
+ virtual float GetState(int BlobID) = 0;
+ /* return 0 if trajectory is normal
+ return >0 if trajectory abnormal */
+ virtual const char* GetStateDesc(int /*BlobID*/){return NULL;};
+ virtual void SetFileName(char* /*DataBaseName*/){};
+ virtual void Release() = 0;
+};
+
+
+inline void cvReleaseBlobTrackAnalysis(CvBlobTrackAnalysis** pBTPP)
+{
+ if(pBTPP == NULL) return;
+ if(*pBTPP)(*pBTPP)->Release();
+ *pBTPP = 0;
+}
+
+/* Feature-vector generation module: */
+class CV_EXPORTS CvBlobTrackFVGen : public CvVSModule
+{
+public:
+ CvBlobTrackFVGen(){SetTypeName("BlobTrackFVGen");};
+ virtual void AddBlob(CvBlob* pBlob) = 0;
+ virtual void Process(IplImage* pImg, IplImage* pFG) = 0;
+ virtual void Release() = 0;
+ virtual int GetFVSize() = 0;
+ virtual int GetFVNum() = 0;
+ virtual float* GetFV(int index, int* pFVID) = 0; /* Returns pointer to FV, if return 0 then FV not created */
+ virtual float* GetFVVar(){return NULL;}; /* Returns pointer to array of variation of values of FV, if returns 0 then FVVar does not exist. */
+ virtual float* GetFVMin() = 0; /* Returns pointer to array of minimal values of FV, if returns 0 then FVrange does not exist */
+ virtual float* GetFVMax() = 0; /* Returns pointer to array of maximal values of FV, if returns 0 then FVrange does not exist */
+};
+
+
+/* Trajectory Analyser module: */
+class CV_EXPORTS CvBlobTrackAnalysisOne
+{
+public:
+ virtual ~CvBlobTrackAnalysisOne() {};
+ virtual int Process(CvBlob* pBlob, IplImage* pImg, IplImage* pFG) = 0;
+ /* return 0 if trajectory is normal
+ return >0 if trajectory abnormal */
+ virtual void Release() = 0;
+};
+
+/* Create blob tracking post processing module based on simle module: */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateBlobTrackAnalysisList(CvBlobTrackAnalysisOne* (*create)());
+
+/* Declarations of constructors of implemented modules: */
+
+/* Based on histogram analysis of 2D FV (x,y): */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistP();
+
+/* Based on histogram analysis of 4D FV (x,y,vx,vy): */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistPV();
+
+/* Based on histogram analysis of 5D FV (x,y,vx,vy,state): */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistPVS();
+
+/* Based on histogram analysis of 4D FV (startpos,stoppos): */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistSS();
+
+
+
+/* Based on SVM classifier analysis of 2D FV (x,y): */
+//CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMP();
+
+/* Based on SVM classifier analysis of 4D FV (x,y,vx,vy): */
+//CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMPV();
+
+/* Based on SVM classifier analysis of 5D FV (x,y,vx,vy,state): */
+//CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMPVS();
+
+/* Based on SVM classifier analysis of 4D FV (startpos,stoppos): */
+//CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMSS();
+
+/* Track analysis based on distance between tracks: */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisTrackDist();
+
+/* Analyzer based on reation Road and height map: */
+//CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysis3DRoadMap();
+
+/* Analyzer that makes OR decision using set of analyzers: */
+CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisIOR();
+
+/* Estimator of human height: */
+class CV_EXPORTS CvBlobTrackAnalysisHeight: public CvBlobTrackAnalysis
+{
+public:
+ virtual double GetHeight(CvBlob* pB) = 0;
+};
+//CV_EXPORTS CvBlobTrackAnalysisHeight* cvCreateModuleBlobTrackAnalysisHeightScale();
+
+
+
+/* AUTO BLOB TRACKER INTERFACE -- pipeline of 3 modules: */
+class CV_EXPORTS CvBlobTrackerAuto: public CvVSModule
+{
+public:
+ CvBlobTrackerAuto(){SetTypeName("BlobTrackerAuto");};
+ virtual void Process(IplImage* pImg, IplImage* pMask = NULL) = 0;
+ virtual CvBlob* GetBlob(int index) = 0;
+ virtual CvBlob* GetBlobByID(int ID) = 0;
+ virtual int GetBlobNum() = 0;
+ virtual IplImage* GetFGMask(){return NULL;};
+ virtual float GetState(int BlobID) = 0;
+ virtual const char* GetStateDesc(int BlobID) = 0;
+ /* return 0 if trajectory is normal;
+ * return >0 if trajectory abnormal. */
+ virtual void Release() = 0;
+};
+inline void cvReleaseBlobTrackerAuto(CvBlobTrackerAuto** ppT)
+{
+ ppT[0]->Release();
+ ppT[0] = 0;
+}
+/* END AUTO BLOB TRACKER INTERFACE */
+
+
+/* Constructor functions and data for specific BlobTRackerAuto modules: */
+
+/* Parameters of blobtracker auto ver1: */
+struct CvBlobTrackerAutoParam1
+{
+ int FGTrainFrames; /* Number of frames needed for FG (foreground) detector to train. */
+
+ CvFGDetector* pFG; /* FGDetector module. If this field is NULL the Process FG mask is used. */
+
+ CvBlobDetector* pBD; /* Selected blob detector module. */
+ /* If this field is NULL default blobdetector module will be created. */
+
+ CvBlobTracker* pBT; /* Selected blob tracking module. */
+ /* If this field is NULL default blobtracker module will be created. */
+
+ CvBlobTrackGen* pBTGen; /* Selected blob trajectory generator. */
+ /* If this field is NULL no generator is used. */
+
+ CvBlobTrackPostProc* pBTPP; /* Selected blob trajectory postprocessing module. */
+ /* If this field is NULL no postprocessing is done. */
+
+ int UsePPData;
+
+ CvBlobTrackAnalysis* pBTA; /* Selected blob trajectory analysis module. */
+ /* If this field is NULL no track analysis is done. */
+};
+
+/* Create blob tracker auto ver1: */
+CV_EXPORTS CvBlobTrackerAuto* cvCreateBlobTrackerAuto1(CvBlobTrackerAutoParam1* param = NULL);
+
+/* Simple loader for many auto trackers by its type : */
+inline CvBlobTrackerAuto* cvCreateBlobTrackerAuto(int type, void* param)
+{
+ if(type == 0) return cvCreateBlobTrackerAuto1((CvBlobTrackerAutoParam1*)param);
+ return 0;
+}
+
+
+
+struct CvTracksTimePos
+{
+ int len1,len2;
+ int beg1,beg2;
+ int end1,end2;
+ int comLen; //common length for two tracks
+ int shift1,shift2;
+};
+
+/*CV_EXPORTS int cvCompareTracks( CvBlobTrackSeq *groundTruth,
+ CvBlobTrackSeq *result,
+ FILE *file);*/
+
+
+/* Constructor functions: */
+
+CV_EXPORTS void cvCreateTracks_One(CvBlobTrackSeq *TS);
+CV_EXPORTS void cvCreateTracks_Same(CvBlobTrackSeq *TS1, CvBlobTrackSeq *TS2);
+CV_EXPORTS void cvCreateTracks_AreaErr(CvBlobTrackSeq *TS1, CvBlobTrackSeq *TS2, int addW, int addH);
+
+
+/* HIST API */
+class CV_EXPORTS CvProb
+{
+public:
+ virtual ~CvProb() {};
+
+ /* Calculate probability value: */
+ virtual double Value(int* /*comp*/, int /*x*/ = 0, int /*y*/ = 0){return -1;};
+
+ /* Update histograpp Pnew = (1-W)*Pold + W*Padd*/
+ /* W weight of new added prob */
+ /* comps - matrix of new fetature vectors used to update prob */
+ virtual void AddFeature(float W, int* comps, int x =0, int y = 0) = 0;
+ virtual void Scale(float factor = 0, int x = -1, int y = -1) = 0;
+ virtual void Release() = 0;
+};
+inline void cvReleaseProb(CvProb** ppProb){ppProb[0]->Release();ppProb[0]=NULL;}
+/* HIST API */
+
+/* Some Prob: */
+CV_EXPORTS CvProb* cvCreateProbS(int dim, CvSize size, int sample_num);
+CV_EXPORTS CvProb* cvCreateProbMG(int dim, CvSize size, int sample_num);
+CV_EXPORTS CvProb* cvCreateProbMG2(int dim, CvSize size, int sample_num);
+CV_EXPORTS CvProb* cvCreateProbHist(int dim, CvSize size);
+
+#define CV_BT_HIST_TYPE_S 0
+#define CV_BT_HIST_TYPE_MG 1
+#define CV_BT_HIST_TYPE_MG2 2
+#define CV_BT_HIST_TYPE_H 3
+inline CvProb* cvCreateProb(int type, int dim, CvSize size = cvSize(1,1), void* /*param*/ = NULL)
+{
+ if(type == CV_BT_HIST_TYPE_S) return cvCreateProbS(dim, size, -1);
+ if(type == CV_BT_HIST_TYPE_MG) return cvCreateProbMG(dim, size, -1);
+ if(type == CV_BT_HIST_TYPE_MG2) return cvCreateProbMG2(dim, size, -1);
+ if(type == CV_BT_HIST_TYPE_H) return cvCreateProbHist(dim, size);
+ return NULL;
+}
+
+
+
+/* Noise type definitions: */
+#define CV_NOISE_NONE 0
+#define CV_NOISE_GAUSSIAN 1
+#define CV_NOISE_UNIFORM 2
+#define CV_NOISE_SPECKLE 3
+#define CV_NOISE_SALT_AND_PEPPER 4
+
+/* Add some noise to image: */
+/* pImg - (input) image without noise */
+/* pImg - (output) image with noise */
+/* noise_type - type of added noise */
+/* CV_NOISE_GAUSSIAN - pImg += n , n - is gaussian noise with Ampl standart deviation */
+/* CV_NOISE_UNIFORM - pImg += n , n - is uniform noise with Ampl standart deviation */
+/* CV_NOISE_SPECKLE - pImg += n*pImg , n - is gaussian noise with Ampl standart deviation */
+/* CV_NOISE_SALT_AND_PAPPER - pImg = pImg with blacked and whited pixels,
+ Ampl is density of brocken pixels (0-there are not broken pixels, 1 - all pixels are broken)*/
+/* Ampl - "amplitude" of noise */
+//CV_EXPORTS void cvAddNoise(IplImage* pImg, int noise_type, double Ampl, CvRNG* rnd_state = NULL);
+
+/*================== GENERATOR OF TEST VIDEO SEQUENCE ===================== */
+typedef void CvTestSeq;
+
+/* pConfigfile - Name of file (yml or xml) with description of test sequence */
+/* videos - array of names of test videos described in "pConfigfile" file */
+/* numvideos - size of "videos" array */
+CV_EXPORTS CvTestSeq* cvCreateTestSeq(char* pConfigfile, char** videos, int numvideo, float Scale = 1, int noise_type = CV_NOISE_NONE, double noise_ampl = 0);
+CV_EXPORTS void cvReleaseTestSeq(CvTestSeq** ppTestSeq);
+
+/* Generate next frame from test video seq and return pointer to it: */
+CV_EXPORTS IplImage* cvTestSeqQueryFrame(CvTestSeq* pTestSeq);
+
+/* Return pointer to current foreground mask: */
+CV_EXPORTS IplImage* cvTestSeqGetFGMask(CvTestSeq* pTestSeq);
+
+/* Return pointer to current image: */
+CV_EXPORTS IplImage* cvTestSeqGetImage(CvTestSeq* pTestSeq);
+
+/* Return frame size of result test video: */
+CV_EXPORTS CvSize cvTestSeqGetImageSize(CvTestSeq* pTestSeq);
+
+/* Return number of frames result test video: */
+CV_EXPORTS int cvTestSeqFrameNum(CvTestSeq* pTestSeq);
+
+/* Return number of existing objects.
+ * This is general number of any objects.
+ * For example number of trajectories may be equal or less than returned value:
+ */
+CV_EXPORTS int cvTestSeqGetObjectNum(CvTestSeq* pTestSeq);
+
+/* Return 0 if there is not position for current defined on current frame */
+/* Return 1 if there is object position and pPos was filled */
+CV_EXPORTS int cvTestSeqGetObjectPos(CvTestSeq* pTestSeq, int ObjIndex, CvPoint2D32f* pPos);
+CV_EXPORTS int cvTestSeqGetObjectSize(CvTestSeq* pTestSeq, int ObjIndex, CvPoint2D32f* pSize);
+
+/* Add noise to final image: */
+CV_EXPORTS void cvTestSeqAddNoise(CvTestSeq* pTestSeq, int noise_type = CV_NOISE_NONE, double noise_ampl = 0);
+
+/* Add Intensity variation: */
+CV_EXPORTS void cvTestSeqAddIntensityVariation(CvTestSeq* pTestSeq, float DI_per_frame, float MinI, float MaxI);
+CV_EXPORTS void cvTestSeqSetFrame(CvTestSeq* pTestSeq, int n);
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/compat.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/compat.hpp
new file mode 100644
index 00000000..5b5495ed
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/compat.hpp
@@ -0,0 +1,740 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright( C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+//(including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort(including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+/*
+ A few macros and definitions for backward compatibility
+ with the previous versions of OpenCV. They are obsolete and
+ are likely to be removed in future. To check whether your code
+ uses any of these, define CV_NO_BACKWARD_COMPATIBILITY before
+ including cv.h.
+*/
+
+#ifndef __OPENCV_COMPAT_HPP__
+#define __OPENCV_COMPAT_HPP__
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/imgproc/types_c.h"
+
+#include <math.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int CvMatType;
+typedef int CvDisMaskType;
+typedef CvMat CvMatArray;
+
+typedef int CvThreshType;
+typedef int CvAdaptiveThreshMethod;
+typedef int CvCompareMethod;
+typedef int CvFontFace;
+typedef int CvPolyApproxMethod;
+typedef int CvContoursMatchMethod;
+typedef int CvContourTreesMatchMethod;
+typedef int CvCoeffType;
+typedef int CvRodriguesType;
+typedef int CvElementShape;
+typedef int CvMorphOp;
+typedef int CvTemplMatchMethod;
+
+typedef CvPoint2D64f CvPoint2D64d;
+typedef CvPoint3D64f CvPoint3D64d;
+
+enum
+{
+ CV_MAT32F = CV_32FC1,
+ CV_MAT3x1_32F = CV_32FC1,
+ CV_MAT4x1_32F = CV_32FC1,
+ CV_MAT3x3_32F = CV_32FC1,
+ CV_MAT4x4_32F = CV_32FC1,
+
+ CV_MAT64D = CV_64FC1,
+ CV_MAT3x1_64D = CV_64FC1,
+ CV_MAT4x1_64D = CV_64FC1,
+ CV_MAT3x3_64D = CV_64FC1,
+ CV_MAT4x4_64D = CV_64FC1
+};
+
+enum
+{
+ IPL_GAUSSIAN_5x5 = 7
+};
+
+typedef CvBox2D CvBox2D32f;
+
+/* allocation/deallocation macros */
+#define cvCreateImageData cvCreateData
+#define cvReleaseImageData cvReleaseData
+#define cvSetImageData cvSetData
+#define cvGetImageRawData cvGetRawData
+
+#define cvmAlloc cvCreateData
+#define cvmFree cvReleaseData
+#define cvmAllocArray cvCreateData
+#define cvmFreeArray cvReleaseData
+
+#define cvIntegralImage cvIntegral
+#define cvMatchContours cvMatchShapes
+
+CV_EXPORTS CvMat cvMatArray( int rows, int cols, int type,
+ int count, void* data CV_DEFAULT(0));
+
+#define cvUpdateMHIByTime cvUpdateMotionHistory
+
+#define cvAccMask cvAcc
+#define cvSquareAccMask cvSquareAcc
+#define cvMultiplyAccMask cvMultiplyAcc
+#define cvRunningAvgMask(imgY, imgU, mask, alpha) cvRunningAvg(imgY, imgU, alpha, mask)
+
+#define cvSetHistThresh cvSetHistBinRanges
+#define cvCalcHistMask(img, mask, hist, doNotClear) cvCalcHist(img, hist, doNotClear, mask)
+
+CV_EXPORTS double cvMean( const CvArr* image, const CvArr* mask CV_DEFAULT(0));
+CV_EXPORTS double cvSumPixels( const CvArr* image );
+CV_EXPORTS void cvMean_StdDev( const CvArr* image, double* mean, double* sdv,
+ const CvArr* mask CV_DEFAULT(0));
+
+CV_EXPORTS void cvmPerspectiveProject( const CvMat* mat, const CvArr* src, CvArr* dst );
+CV_EXPORTS void cvFillImage( CvArr* mat, double color );
+
+#define cvCvtPixToPlane cvSplit
+#define cvCvtPlaneToPix cvMerge
+
+typedef struct CvRandState
+{
+ CvRNG state; /* RNG state (the current seed and carry)*/
+ int disttype; /* distribution type */
+ CvScalar param[2]; /* parameters of RNG */
+} CvRandState;
+
+/* Changes RNG range while preserving RNG state */
+CV_EXPORTS void cvRandSetRange( CvRandState* state, double param1,
+ double param2, int index CV_DEFAULT(-1));
+
+CV_EXPORTS void cvRandInit( CvRandState* state, double param1,
+ double param2, int seed,
+ int disttype CV_DEFAULT(CV_RAND_UNI));
+
+/* Fills array with random numbers */
+CV_EXPORTS void cvRand( CvRandState* state, CvArr* arr );
+
+#define cvRandNext( _state ) cvRandInt( &(_state)->state )
+
+CV_EXPORTS void cvbRand( CvRandState* state, float* dst, int len );
+
+CV_EXPORTS void cvbCartToPolar( const float* y, const float* x,
+ float* magnitude, float* angle, int len );
+CV_EXPORTS void cvbFastArctan( const float* y, const float* x, float* angle, int len );
+CV_EXPORTS void cvbSqrt( const float* x, float* y, int len );
+CV_EXPORTS void cvbInvSqrt( const float* x, float* y, int len );
+CV_EXPORTS void cvbReciprocal( const float* x, float* y, int len );
+CV_EXPORTS void cvbFastExp( const float* x, double* y, int len );
+CV_EXPORTS void cvbFastLog( const double* x, float* y, int len );
+
+CV_EXPORTS CvRect cvContourBoundingRect( void* point_set, int update CV_DEFAULT(0));
+
+CV_EXPORTS double cvPseudoInverse( const CvArr* src, CvArr* dst );
+#define cvPseudoInv cvPseudoInverse
+
+#define cvContourMoments( contour, moments ) cvMoments( contour, moments, 0 )
+
+#define cvGetPtrAt cvPtr2D
+#define cvGetAt cvGet2D
+#define cvSetAt(arr,val,y,x) cvSet2D((arr),(y),(x),(val))
+
+#define cvMeanMask cvMean
+#define cvMean_StdDevMask(img,mask,mean,sdv) cvMean_StdDev(img,mean,sdv,mask)
+
+#define cvNormMask(imgA,imgB,mask,normType) cvNorm(imgA,imgB,normType,mask)
+
+#define cvMinMaxLocMask(img, mask, min_val, max_val, min_loc, max_loc) \
+ cvMinMaxLoc(img, min_val, max_val, min_loc, max_loc, mask)
+
+#define cvRemoveMemoryManager cvSetMemoryManager
+
+#define cvmSetZero( mat ) cvSetZero( mat )
+#define cvmSetIdentity( mat ) cvSetIdentity( mat )
+#define cvmAdd( src1, src2, dst ) cvAdd( src1, src2, dst, 0 )
+#define cvmSub( src1, src2, dst ) cvSub( src1, src2, dst, 0 )
+#define cvmCopy( src, dst ) cvCopy( src, dst, 0 )
+#define cvmMul( src1, src2, dst ) cvMatMulAdd( src1, src2, 0, dst )
+#define cvmTranspose( src, dst ) cvT( src, dst )
+#define cvmInvert( src, dst ) cvInv( src, dst )
+#define cvmMahalanobis(vec1, vec2, mat) cvMahalanobis( vec1, vec2, mat )
+#define cvmDotProduct( vec1, vec2 ) cvDotProduct( vec1, vec2 )
+#define cvmCrossProduct(vec1, vec2,dst) cvCrossProduct( vec1, vec2, dst )
+#define cvmTrace( mat ) (cvTrace( mat )).val[0]
+#define cvmMulTransposed( src, dst, order ) cvMulTransposed( src, dst, order )
+#define cvmEigenVV( mat, evec, eval, eps) cvEigenVV( mat, evec, eval, eps )
+#define cvmDet( mat ) cvDet( mat )
+#define cvmScale( src, dst, scale ) cvScale( src, dst, scale )
+
+#define cvCopyImage( src, dst ) cvCopy( src, dst, 0 )
+#define cvReleaseMatHeader cvReleaseMat
+
+/* Calculates exact convex hull of 2d point set */
+CV_EXPORTS void cvConvexHull( CvPoint* points, int num_points,
+ CvRect* bound_rect,
+ int orientation, int* hull, int* hullsize );
+
+
+CV_EXPORTS void cvMinAreaRect( CvPoint* points, int n,
+ int left, int bottom,
+ int right, int top,
+ CvPoint2D32f* anchor,
+ CvPoint2D32f* vect1,
+ CvPoint2D32f* vect2 );
+
+typedef int CvDisType;
+typedef int CvChainApproxMethod;
+typedef int CvContourRetrievalMode;
+
+CV_EXPORTS void cvFitLine3D( CvPoint3D32f* points, int count, int dist,
+ void *param, float reps, float aeps, float* line );
+
+/* Fits a line into set of 2d points in a robust way (M-estimator technique) */
+CV_EXPORTS void cvFitLine2D( CvPoint2D32f* points, int count, int dist,
+ void *param, float reps, float aeps, float* line );
+
+CV_EXPORTS void cvFitEllipse( const CvPoint2D32f* points, int count, CvBox2D* box );
+
+/* Projects 2d points to one of standard coordinate planes
+ (i.e. removes one of coordinates) */
+CV_EXPORTS void cvProject3D( CvPoint3D32f* points3D, int count,
+ CvPoint2D32f* points2D,
+ int xIndx CV_DEFAULT(0),
+ int yIndx CV_DEFAULT(1));
+
+/* Retrieves value of the particular bin
+ of x-dimensional (x=1,2,3,...) histogram */
+#define cvQueryHistValue_1D( hist, idx0 ) \
+ ((float)cvGetReal1D( (hist)->bins, (idx0)))
+#define cvQueryHistValue_2D( hist, idx0, idx1 ) \
+ ((float)cvGetReal2D( (hist)->bins, (idx0), (idx1)))
+#define cvQueryHistValue_3D( hist, idx0, idx1, idx2 ) \
+ ((float)cvGetReal3D( (hist)->bins, (idx0), (idx1), (idx2)))
+#define cvQueryHistValue_nD( hist, idx ) \
+ ((float)cvGetRealND( (hist)->bins, (idx)))
+
+/* Returns pointer to the particular bin of x-dimesional histogram.
+ For sparse histogram the bin is created if it didn't exist before */
+#define cvGetHistValue_1D( hist, idx0 ) \
+ ((float*)cvPtr1D( (hist)->bins, (idx0), 0))
+#define cvGetHistValue_2D( hist, idx0, idx1 ) \
+ ((float*)cvPtr2D( (hist)->bins, (idx0), (idx1), 0))
+#define cvGetHistValue_3D( hist, idx0, idx1, idx2 ) \
+ ((float*)cvPtr3D( (hist)->bins, (idx0), (idx1), (idx2), 0))
+#define cvGetHistValue_nD( hist, idx ) \
+ ((float*)cvPtrND( (hist)->bins, (idx), 0))
+
+
+#define CV_IS_SET_ELEM_EXISTS CV_IS_SET_ELEM
+
+
+CV_EXPORTS int cvHoughLines( CvArr* image, double rho,
+ double theta, int threshold,
+ float* lines, int linesNumber );
+
+CV_EXPORTS int cvHoughLinesP( CvArr* image, double rho,
+ double theta, int threshold,
+ int lineLength, int lineGap,
+ int* lines, int linesNumber );
+
+
+CV_EXPORTS int cvHoughLinesSDiv( CvArr* image, double rho, int srn,
+ double theta, int stn, int threshold,
+ float* lines, int linesNumber );
+
+CV_EXPORTS float cvCalcEMD( const float* signature1, int size1,
+ const float* signature2, int size2,
+ int dims, int dist_type CV_DEFAULT(CV_DIST_L2),
+ CvDistanceFunction dist_func CV_DEFAULT(0),
+ float* lower_bound CV_DEFAULT(0),
+ void* user_param CV_DEFAULT(0));
+
+CV_EXPORTS void cvKMeans( int num_clusters, float** samples,
+ int num_samples, int vec_size,
+ CvTermCriteria termcrit, int* cluster_idx );
+
+CV_EXPORTS void cvStartScanGraph( CvGraph* graph, CvGraphScanner* scanner,
+ CvGraphVtx* vtx CV_DEFAULT(NULL),
+ int mask CV_DEFAULT(CV_GRAPH_ALL_ITEMS));
+
+CV_EXPORTS void cvEndScanGraph( CvGraphScanner* scanner );
+
+
+/* old drawing functions */
+CV_EXPORTS void cvLineAA( CvArr* img, CvPoint pt1, CvPoint pt2,
+ double color, int scale CV_DEFAULT(0));
+
+CV_EXPORTS void cvCircleAA( CvArr* img, CvPoint center, int radius,
+ double color, int scale CV_DEFAULT(0) );
+
+CV_EXPORTS void cvEllipseAA( CvArr* img, CvPoint center, CvSize axes,
+ double angle, double start_angle,
+ double end_angle, double color,
+ int scale CV_DEFAULT(0) );
+
+CV_EXPORTS void cvPolyLineAA( CvArr* img, CvPoint** pts, int* npts, int contours,
+ int is_closed, double color, int scale CV_DEFAULT(0) );
+
+/****************************************************************************************\
+* Pixel Access Macros *
+\****************************************************************************************/
+
+typedef struct _CvPixelPosition8u
+{
+ uchar* currline; /* pointer to the start of the current pixel line */
+ uchar* topline; /* pointer to the start of the top pixel line */
+ uchar* bottomline; /* pointer to the start of the first line */
+ /* which is below the image */
+ int x; /* current x coordinate ( in pixels ) */
+ int width; /* width of the image ( in pixels ) */
+ int height; /* height of the image ( in pixels ) */
+ int step; /* distance between lines ( in elements of single */
+ /* plane ) */
+ int step_arr[3]; /* array: ( 0, -step, step ). It is used for */
+ /* vertical moving */
+} CvPixelPosition8u;
+
+/* this structure differs from the above only in data type */
+typedef struct _CvPixelPosition8s
+{
+ schar* currline;
+ schar* topline;
+ schar* bottomline;
+ int x;
+ int width;
+ int height;
+ int step;
+ int step_arr[3];
+} CvPixelPosition8s;
+
+/* this structure differs from the CvPixelPosition8u only in data type */
+typedef struct _CvPixelPosition32f
+{
+ float* currline;
+ float* topline;
+ float* bottomline;
+ int x;
+ int width;
+ int height;
+ int step;
+ int step_arr[3];
+} CvPixelPosition32f;
+
+
+/* Initialize one of the CvPixelPosition structures. */
+/* pos - initialized structure */
+/* origin - pointer to the left-top corner of the ROI */
+/* step - width of the whole image in bytes */
+/* roi - width & height of the ROI */
+/* x, y - initial position */
+#define CV_INIT_PIXEL_POS(pos, origin, _step, roi, _x, _y, orientation) \
+ ( \
+ (pos).step = (_step)/sizeof((pos).currline[0]) * (orientation ? -1 : 1), \
+ (pos).width = (roi).width, \
+ (pos).height = (roi).height, \
+ (pos).bottomline = (origin) + (pos).step*(pos).height, \
+ (pos).topline = (origin) - (pos).step, \
+ (pos).step_arr[0] = 0, \
+ (pos).step_arr[1] = -(pos).step, \
+ (pos).step_arr[2] = (pos).step, \
+ (pos).x = (_x), \
+ (pos).currline = (origin) + (pos).step*(_y) )
+
+
+/* Move to specified point ( absolute shift ) */
+/* pos - position structure */
+/* x, y - coordinates of the new position */
+/* cs - number of the image channels */
+#define CV_MOVE_TO( pos, _x, _y, cs ) \
+((pos).currline = (_y) >= 0 && (_y) < (pos).height ? (pos).topline + ((_y)+1)*(pos).step : 0, \
+ (pos).x = (_x) >= 0 && (_x) < (pos).width ? (_x) : 0, (pos).currline + (_x) * (cs) )
+
+/* Get current coordinates */
+/* pos - position structure */
+/* x, y - coordinates of the new position */
+/* cs - number of the image channels */
+#define CV_GET_CURRENT( pos, cs ) ((pos).currline + (pos).x * (cs))
+
+/* Move by one pixel relatively to current position */
+/* pos - position structure */
+/* cs - number of the image channels */
+
+/* left */
+#define CV_MOVE_LEFT( pos, cs ) \
+ ( --(pos).x >= 0 ? (pos).currline + (pos).x*(cs) : 0 )
+
+/* right */
+#define CV_MOVE_RIGHT( pos, cs ) \
+ ( ++(pos).x < (pos).width ? (pos).currline + (pos).x*(cs) : 0 )
+
+/* up */
+#define CV_MOVE_UP( pos, cs ) \
+ (((pos).currline -= (pos).step) != (pos).topline ? (pos).currline + (pos).x*(cs) : 0 )
+
+/* down */
+#define CV_MOVE_DOWN( pos, cs ) \
+ (((pos).currline += (pos).step) != (pos).bottomline ? (pos).currline + (pos).x*(cs) : 0 )
+
+/* left up */
+#define CV_MOVE_LU( pos, cs ) ( CV_MOVE_LEFT(pos, cs), CV_MOVE_UP(pos, cs))
+
+/* right up */
+#define CV_MOVE_RU( pos, cs ) ( CV_MOVE_RIGHT(pos, cs), CV_MOVE_UP(pos, cs))
+
+/* left down */
+#define CV_MOVE_LD( pos, cs ) ( CV_MOVE_LEFT(pos, cs), CV_MOVE_DOWN(pos, cs))
+
+/* right down */
+#define CV_MOVE_RD( pos, cs ) ( CV_MOVE_RIGHT(pos, cs), CV_MOVE_DOWN(pos, cs))
+
+
+
+/* Move by one pixel relatively to current position with wrapping when the position */
+/* achieves image boundary */
+/* pos - position structure */
+/* cs - number of the image channels */
+
+/* left */
+#define CV_MOVE_LEFT_WRAP( pos, cs ) \
+ ((pos).currline + ( --(pos).x >= 0 ? (pos).x : ((pos).x = (pos).width-1))*(cs))
+
+/* right */
+#define CV_MOVE_RIGHT_WRAP( pos, cs ) \
+ ((pos).currline + ( ++(pos).x < (pos).width ? (pos).x : ((pos).x = 0))*(cs) )
+
+/* up */
+#define CV_MOVE_UP_WRAP( pos, cs ) \
+ ((((pos).currline -= (pos).step) != (pos).topline ? \
+ (pos).currline : ((pos).currline = (pos).bottomline - (pos).step)) + (pos).x*(cs) )
+
+/* down */
+#define CV_MOVE_DOWN_WRAP( pos, cs ) \
+ ((((pos).currline += (pos).step) != (pos).bottomline ? \
+ (pos).currline : ((pos).currline = (pos).topline + (pos).step)) + (pos).x*(cs) )
+
+/* left up */
+#define CV_MOVE_LU_WRAP( pos, cs ) ( CV_MOVE_LEFT_WRAP(pos, cs), CV_MOVE_UP_WRAP(pos, cs))
+/* right up */
+#define CV_MOVE_RU_WRAP( pos, cs ) ( CV_MOVE_RIGHT_WRAP(pos, cs), CV_MOVE_UP_WRAP(pos, cs))
+/* left down */
+#define CV_MOVE_LD_WRAP( pos, cs ) ( CV_MOVE_LEFT_WRAP(pos, cs), CV_MOVE_DOWN_WRAP(pos, cs))
+/* right down */
+#define CV_MOVE_RD_WRAP( pos, cs ) ( CV_MOVE_RIGHT_WRAP(pos, cs), CV_MOVE_DOWN_WRAP(pos, cs))
+
+/* Numeric constants which used for moving in arbitrary direction */
+enum
+{
+ CV_SHIFT_NONE = 2,
+ CV_SHIFT_LEFT = 1,
+ CV_SHIFT_RIGHT = 3,
+ CV_SHIFT_UP = 6,
+ CV_SHIFT_DOWN = 10,
+ CV_SHIFT_LU = 5,
+ CV_SHIFT_RU = 7,
+ CV_SHIFT_LD = 9,
+ CV_SHIFT_RD = 11
+};
+
+/* Move by one pixel in specified direction */
+/* pos - position structure */
+/* shift - direction ( it's value must be one of the CV_SHIFT_Ö constants ) */
+/* cs - number of the image channels */
+#define CV_MOVE_PARAM( pos, shift, cs ) \
+ ( (pos).currline += (pos).step_arr[(shift)>>2], (pos).x += ((shift)&3)-2, \
+ ((pos).currline != (pos).topline && (pos).currline != (pos).bottomline && \
+ (pos).x >= 0 && (pos).x < (pos).width) ? (pos).currline + (pos).x*(cs) : 0 )
+
+/* Move by one pixel in specified direction with wrapping when the */
+/* position achieves image boundary */
+/* pos - position structure */
+/* shift - direction ( it's value must be one of the CV_SHIFT_Ö constants ) */
+/* cs - number of the image channels */
+#define CV_MOVE_PARAM_WRAP( pos, shift, cs ) \
+ ( (pos).currline += (pos).step_arr[(shift)>>2], \
+ (pos).currline = ((pos).currline == (pos).topline ? \
+ (pos).bottomline - (pos).step : \
+ (pos).currline == (pos).bottomline ? \
+ (pos).topline + (pos).step : (pos).currline), \
+ \
+ (pos).x += ((shift)&3)-2, \
+ (pos).x = ((pos).x < 0 ? (pos).width-1 : (pos).x >= (pos).width ? 0 : (pos).x), \
+ \
+ (pos).currline + (pos).x*(cs) )
+
+
+typedef float* CvVect32f;
+typedef float* CvMatr32f;
+typedef double* CvVect64d;
+typedef double* CvMatr64d;
+
+CV_EXPORTS void cvUnDistortOnce( const CvArr* src, CvArr* dst,
+ const float* intrinsic_matrix,
+ const float* distortion_coeffs,
+ int interpolate );
+
+/* the two functions below have quite hackerish implementations, use with care
+ (or, which is better, switch to cvUndistortInitMap and cvRemap instead */
+CV_EXPORTS void cvUnDistortInit( const CvArr* src,
+ CvArr* undistortion_map,
+ const float* A, const float* k,
+ int interpolate );
+
+CV_EXPORTS void cvUnDistort( const CvArr* src, CvArr* dst,
+ const CvArr* undistortion_map,
+ int interpolate );
+
+/* Find fundamental matrix */
+CV_EXPORTS void cvFindFundamentalMatrix( int* points1, int* points2,
+ int numpoints, int method, float* matrix );
+
+
+CV_EXPORTS int cvFindChessBoardCornerGuesses( const void* arr, void* thresharr,
+ CvMemStorage* storage,
+ CvSize pattern_size, CvPoint2D32f * corners,
+ int *corner_count );
+
+/* Calibrates camera using multiple views of calibration pattern */
+CV_EXPORTS void cvCalibrateCamera( int image_count, int* _point_counts,
+ CvSize image_size, CvPoint2D32f* _image_points, CvPoint3D32f* _object_points,
+ float* _distortion_coeffs, float* _camera_matrix, float* _translation_vectors,
+ float* _rotation_matrices, int flags );
+
+
+CV_EXPORTS void cvCalibrateCamera_64d( int image_count, int* _point_counts,
+ CvSize image_size, CvPoint2D64f* _image_points, CvPoint3D64f* _object_points,
+ double* _distortion_coeffs, double* _camera_matrix, double* _translation_vectors,
+ double* _rotation_matrices, int flags );
+
+
+/* Find 3d position of object given intrinsic camera parameters,
+ 3d model of the object and projection of the object into view plane */
+CV_EXPORTS void cvFindExtrinsicCameraParams( int point_count,
+ CvSize image_size, CvPoint2D32f* _image_points,
+ CvPoint3D32f* _object_points, float* focal_length,
+ CvPoint2D32f principal_point, float* _distortion_coeffs,
+ float* _rotation_vector, float* _translation_vector );
+
+/* Variant of the previous function that takes double-precision parameters */
+CV_EXPORTS void cvFindExtrinsicCameraParams_64d( int point_count,
+ CvSize image_size, CvPoint2D64f* _image_points,
+ CvPoint3D64f* _object_points, double* focal_length,
+ CvPoint2D64f principal_point, double* _distortion_coeffs,
+ double* _rotation_vector, double* _translation_vector );
+
+/* Rodrigues transform */
+enum
+{
+ CV_RODRIGUES_M2V = 0,
+ CV_RODRIGUES_V2M = 1
+};
+
+/* Converts rotation_matrix matrix to rotation_matrix vector or vice versa */
+CV_EXPORTS void cvRodrigues( CvMat* rotation_matrix, CvMat* rotation_vector,
+ CvMat* jacobian, int conv_type );
+
+/* Does reprojection of 3d object points to the view plane */
+CV_EXPORTS void cvProjectPoints( int point_count, CvPoint3D64f* _object_points,
+ double* _rotation_vector, double* _translation_vector,
+ double* focal_length, CvPoint2D64f principal_point,
+ double* _distortion, CvPoint2D64f* _image_points,
+ double* _deriv_points_rotation_matrix,
+ double* _deriv_points_translation_vect,
+ double* _deriv_points_focal,
+ double* _deriv_points_principal_point,
+ double* _deriv_points_distortion_coeffs );
+
+
+/* Simpler version of the previous function */
+CV_EXPORTS void cvProjectPointsSimple( int point_count, CvPoint3D64f* _object_points,
+ double* _rotation_matrix, double* _translation_vector,
+ double* _camera_matrix, double* _distortion, CvPoint2D64f* _image_points );
+
+
+#define cvMake2DPoints cvConvertPointsHomogeneous
+#define cvMake3DPoints cvConvertPointsHomogeneous
+
+#define cvWarpPerspectiveQMatrix cvGetPerspectiveTransform
+
+#define cvConvertPointsHomogenious cvConvertPointsHomogeneous
+
+
+//////////////////////////////////// feature extractors: obsolete API //////////////////////////////////
+
+typedef struct CvSURFPoint
+{
+ CvPoint2D32f pt;
+
+ int laplacian;
+ int size;
+ float dir;
+ float hessian;
+
+} CvSURFPoint;
+
+CV_INLINE CvSURFPoint cvSURFPoint( CvPoint2D32f pt, int laplacian,
+ int size, float dir CV_DEFAULT(0),
+ float hessian CV_DEFAULT(0))
+{
+ CvSURFPoint kp;
+
+ kp.pt = pt;
+ kp.laplacian = laplacian;
+ kp.size = size;
+ kp.dir = dir;
+ kp.hessian = hessian;
+
+ return kp;
+}
+
+typedef struct CvSURFParams
+{
+ int extended;
+ int upright;
+ double hessianThreshold;
+
+ int nOctaves;
+ int nOctaveLayers;
+
+} CvSURFParams;
+
+CVAPI(CvSURFParams) cvSURFParams( double hessianThreshold, int extended CV_DEFAULT(0) );
+
+// If useProvidedKeyPts!=0, keypoints are not detected, but descriptors are computed
+// at the locations provided in keypoints (a CvSeq of CvSURFPoint).
+CVAPI(void) cvExtractSURF( const CvArr* img, const CvArr* mask,
+ CvSeq** keypoints, CvSeq** descriptors,
+ CvMemStorage* storage, CvSURFParams params,
+ int useProvidedKeyPts CV_DEFAULT(0) );
+
+/*!
+ Maximal Stable Regions Parameters
+ */
+typedef struct CvMSERParams
+{
+ //! delta, in the code, it compares (size_{i}-size_{i-delta})/size_{i-delta}
+ int delta;
+ //! prune the area which bigger than maxArea
+ int maxArea;
+ //! prune the area which smaller than minArea
+ int minArea;
+ //! prune the area have simliar size to its children
+ float maxVariation;
+ //! trace back to cut off mser with diversity < min_diversity
+ float minDiversity;
+
+ /////// the next few params for MSER of color image
+
+ //! for color image, the evolution steps
+ int maxEvolution;
+ //! the area threshold to cause re-initialize
+ double areaThreshold;
+ //! ignore too small margin
+ double minMargin;
+ //! the aperture size for edge blur
+ int edgeBlurSize;
+} CvMSERParams;
+
+CVAPI(CvMSERParams) cvMSERParams( int delta CV_DEFAULT(5), int min_area CV_DEFAULT(60),
+ int max_area CV_DEFAULT(14400), float max_variation CV_DEFAULT(.25f),
+ float min_diversity CV_DEFAULT(.2f), int max_evolution CV_DEFAULT(200),
+ double area_threshold CV_DEFAULT(1.01),
+ double min_margin CV_DEFAULT(.003),
+ int edge_blur_size CV_DEFAULT(5) );
+
+// Extracts the contours of Maximally Stable Extremal Regions
+CVAPI(void) cvExtractMSER( CvArr* _img, CvArr* _mask, CvSeq** contours, CvMemStorage* storage, CvMSERParams params );
+
+
+typedef struct CvStarKeypoint
+{
+ CvPoint pt;
+ int size;
+ float response;
+} CvStarKeypoint;
+
+CV_INLINE CvStarKeypoint cvStarKeypoint(CvPoint pt, int size, float response)
+{
+ CvStarKeypoint kpt;
+ kpt.pt = pt;
+ kpt.size = size;
+ kpt.response = response;
+ return kpt;
+}
+
+typedef struct CvStarDetectorParams
+{
+ int maxSize;
+ int responseThreshold;
+ int lineThresholdProjected;
+ int lineThresholdBinarized;
+ int suppressNonmaxSize;
+} CvStarDetectorParams;
+
+CV_INLINE CvStarDetectorParams cvStarDetectorParams(
+ int maxSize CV_DEFAULT(45),
+ int responseThreshold CV_DEFAULT(30),
+ int lineThresholdProjected CV_DEFAULT(10),
+ int lineThresholdBinarized CV_DEFAULT(8),
+ int suppressNonmaxSize CV_DEFAULT(5))
+{
+ CvStarDetectorParams params;
+ params.maxSize = maxSize;
+ params.responseThreshold = responseThreshold;
+ params.lineThresholdProjected = lineThresholdProjected;
+ params.lineThresholdBinarized = lineThresholdBinarized;
+ params.suppressNonmaxSize = suppressNonmaxSize;
+
+ return params;
+}
+
+CVAPI(CvSeq*) cvGetStarKeypoints( const CvArr* img, CvMemStorage* storage,
+ CvStarDetectorParams params CV_DEFAULT(cvStarDetectorParams()));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/legacy.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/legacy.hpp
new file mode 100644
index 00000000..96da25c9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/legacy.hpp
@@ -0,0 +1,3436 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_LEGACY_HPP__
+#define __OPENCV_LEGACY_HPP__
+
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/imgproc/imgproc_c.h"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/calib3d/calib3d.hpp"
+#include "opencv2/ml/ml.hpp"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+CVAPI(CvSeq*) cvSegmentImage( const CvArr* srcarr, CvArr* dstarr,
+ double canny_threshold,
+ double ffill_threshold,
+ CvMemStorage* storage );
+
+/****************************************************************************************\
+* Eigen objects *
+\****************************************************************************************/
+
+typedef int (CV_CDECL * CvCallback)(int index, void* buffer, void* user_data);
+typedef union
+{
+ CvCallback callback;
+ void* data;
+}
+CvInput;
+
+#define CV_EIGOBJ_NO_CALLBACK 0
+#define CV_EIGOBJ_INPUT_CALLBACK 1
+#define CV_EIGOBJ_OUTPUT_CALLBACK 2
+#define CV_EIGOBJ_BOTH_CALLBACK 3
+
+/* Calculates covariation matrix of a set of arrays */
+CVAPI(void) cvCalcCovarMatrixEx( int nObjects, void* input, int ioFlags,
+ int ioBufSize, uchar* buffer, void* userData,
+ IplImage* avg, float* covarMatrix );
+
+/* Calculates eigen values and vectors of covariation matrix of a set of
+ arrays */
+CVAPI(void) cvCalcEigenObjects( int nObjects, void* input, void* output,
+ int ioFlags, int ioBufSize, void* userData,
+ CvTermCriteria* calcLimit, IplImage* avg,
+ float* eigVals );
+
+/* Calculates dot product (obj - avg) * eigObj (i.e. projects image to eigen vector) */
+CVAPI(double) cvCalcDecompCoeff( IplImage* obj, IplImage* eigObj, IplImage* avg );
+
+/* Projects image to eigen space (finds all decomposion coefficients */
+CVAPI(void) cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput,
+ int ioFlags, void* userData, IplImage* avg,
+ float* coeffs );
+
+/* Projects original objects used to calculate eigen space basis to that space */
+CVAPI(void) cvEigenProjection( void* eigInput, int nEigObjs, int ioFlags,
+ void* userData, float* coeffs, IplImage* avg,
+ IplImage* proj );
+
+/****************************************************************************************\
+* 1D/2D HMM *
+\****************************************************************************************/
+
+typedef struct CvImgObsInfo
+{
+ int obs_x;
+ int obs_y;
+ int obs_size;
+ float* obs;//consequtive observations
+
+ int* state;/* arr of pairs superstate/state to which observation belong */
+ int* mix; /* number of mixture to which observation belong */
+
+} CvImgObsInfo;/*struct for 1 image*/
+
+typedef CvImgObsInfo Cv1DObsInfo;
+
+typedef struct CvEHMMState
+{
+ int num_mix; /*number of mixtures in this state*/
+ float* mu; /*mean vectors corresponding to each mixture*/
+ float* inv_var; /* square root of inversed variances corresp. to each mixture*/
+ float* log_var_val; /* sum of 0.5 (LN2PI + ln(variance[i]) ) for i=1,n */
+ float* weight; /*array of mixture weights. Summ of all weights in state is 1. */
+
+} CvEHMMState;
+
+typedef struct CvEHMM
+{
+ int level; /* 0 - lowest(i.e its states are real states), ..... */
+ int num_states; /* number of HMM states */
+ float* transP;/*transition probab. matrices for states */
+ float** obsProb; /* if level == 0 - array of brob matrices corresponding to hmm
+ if level == 1 - martix of matrices */
+ union
+ {
+ CvEHMMState* state; /* if level == 0 points to real states array,
+ if not - points to embedded hmms */
+ struct CvEHMM* ehmm; /* pointer to an embedded model or NULL, if it is a leaf */
+ } u;
+
+} CvEHMM;
+
+/*CVAPI(int) icvCreate1DHMM( CvEHMM** this_hmm,
+ int state_number, int* num_mix, int obs_size );
+
+CVAPI(int) icvRelease1DHMM( CvEHMM** phmm );
+
+CVAPI(int) icvUniform1DSegm( Cv1DObsInfo* obs_info, CvEHMM* hmm );
+
+CVAPI(int) icvInit1DMixSegm( Cv1DObsInfo** obs_info_array, int num_img, CvEHMM* hmm);
+
+CVAPI(int) icvEstimate1DHMMStateParams( CvImgObsInfo** obs_info_array, int num_img, CvEHMM* hmm);
+
+CVAPI(int) icvEstimate1DObsProb( CvImgObsInfo* obs_info, CvEHMM* hmm );
+
+CVAPI(int) icvEstimate1DTransProb( Cv1DObsInfo** obs_info_array,
+ int num_seq,
+ CvEHMM* hmm );
+
+CVAPI(float) icvViterbi( Cv1DObsInfo* obs_info, CvEHMM* hmm);
+
+CVAPI(int) icv1DMixSegmL2( CvImgObsInfo** obs_info_array, int num_img, CvEHMM* hmm );*/
+
+/*********************************** Embedded HMMs *************************************/
+
+/* Creates 2D HMM */
+CVAPI(CvEHMM*) cvCreate2DHMM( int* stateNumber, int* numMix, int obsSize );
+
+/* Releases HMM */
+CVAPI(void) cvRelease2DHMM( CvEHMM** hmm );
+
+#define CV_COUNT_OBS(roi, win, delta, numObs ) \
+{ \
+ (numObs)->width =((roi)->width -(win)->width +(delta)->width)/(delta)->width; \
+ (numObs)->height =((roi)->height -(win)->height +(delta)->height)/(delta)->height;\
+}
+
+/* Creates storage for observation vectors */
+CVAPI(CvImgObsInfo*) cvCreateObsInfo( CvSize numObs, int obsSize );
+
+/* Releases storage for observation vectors */
+CVAPI(void) cvReleaseObsInfo( CvImgObsInfo** obs_info );
+
+
+/* The function takes an image on input and and returns the sequnce of observations
+ to be used with an embedded HMM; Each observation is top-left block of DCT
+ coefficient matrix */
+CVAPI(void) cvImgToObs_DCT( const CvArr* arr, float* obs, CvSize dctSize,
+ CvSize obsSize, CvSize delta );
+
+
+/* Uniformly segments all observation vectors extracted from image */
+CVAPI(void) cvUniformImgSegm( CvImgObsInfo* obs_info, CvEHMM* ehmm );
+
+/* Does mixture segmentation of the states of embedded HMM */
+CVAPI(void) cvInitMixSegm( CvImgObsInfo** obs_info_array,
+ int num_img, CvEHMM* hmm );
+
+/* Function calculates means, variances, weights of every Gaussian mixture
+ of every low-level state of embedded HMM */
+CVAPI(void) cvEstimateHMMStateParams( CvImgObsInfo** obs_info_array,
+ int num_img, CvEHMM* hmm );
+
+/* Function computes transition probability matrices of embedded HMM
+ given observations segmentation */
+CVAPI(void) cvEstimateTransProb( CvImgObsInfo** obs_info_array,
+ int num_img, CvEHMM* hmm );
+
+/* Function computes probabilities of appearing observations at any state
+ (i.e. computes P(obs|state) for every pair(obs,state)) */
+CVAPI(void) cvEstimateObsProb( CvImgObsInfo* obs_info,
+ CvEHMM* hmm );
+
+/* Runs Viterbi algorithm for embedded HMM */
+CVAPI(float) cvEViterbi( CvImgObsInfo* obs_info, CvEHMM* hmm );
+
+
+/* Function clusters observation vectors from several images
+ given observations segmentation.
+ Euclidean distance used for clustering vectors.
+ Centers of clusters are given means of every mixture */
+CVAPI(void) cvMixSegmL2( CvImgObsInfo** obs_info_array,
+ int num_img, CvEHMM* hmm );
+
+/****************************************************************************************\
+* A few functions from old stereo gesture recognition demosions *
+\****************************************************************************************/
+
+/* Creates hand mask image given several points on the hand */
+CVAPI(void) cvCreateHandMask( CvSeq* hand_points,
+ IplImage *img_mask, CvRect *roi);
+
+/* Finds hand region in range image data */
+CVAPI(void) cvFindHandRegion (CvPoint3D32f* points, int count,
+ CvSeq* indexs,
+ float* line, CvSize2D32f size, int flag,
+ CvPoint3D32f* center,
+ CvMemStorage* storage, CvSeq **numbers);
+
+/* Finds hand region in range image data (advanced version) */
+CVAPI(void) cvFindHandRegionA( CvPoint3D32f* points, int count,
+ CvSeq* indexs,
+ float* line, CvSize2D32f size, int jc,
+ CvPoint3D32f* center,
+ CvMemStorage* storage, CvSeq **numbers);
+
+/* Calculates the cooficients of the homography matrix */
+CVAPI(void) cvCalcImageHomography( float* line, CvPoint3D32f* center,
+ float* intrinsic, float* homography );
+
+/****************************************************************************************\
+* More operations on sequences *
+\****************************************************************************************/
+
+/*****************************************************************************************/
+
+#define CV_CURRENT_INT( reader ) (*((int *)(reader).ptr))
+#define CV_PREV_INT( reader ) (*((int *)(reader).prev_elem))
+
+#define CV_GRAPH_WEIGHTED_VERTEX_FIELDS() CV_GRAPH_VERTEX_FIELDS()\
+ float weight;
+
+#define CV_GRAPH_WEIGHTED_EDGE_FIELDS() CV_GRAPH_EDGE_FIELDS()
+
+typedef struct CvGraphWeightedVtx
+{
+ CV_GRAPH_WEIGHTED_VERTEX_FIELDS()
+} CvGraphWeightedVtx;
+
+typedef struct CvGraphWeightedEdge
+{
+ CV_GRAPH_WEIGHTED_EDGE_FIELDS()
+} CvGraphWeightedEdge;
+
+typedef enum CvGraphWeightType
+{
+ CV_NOT_WEIGHTED,
+ CV_WEIGHTED_VTX,
+ CV_WEIGHTED_EDGE,
+ CV_WEIGHTED_ALL
+} CvGraphWeightType;
+
+
+/* Calculates histogram of a contour */
+CVAPI(void) cvCalcPGH( const CvSeq* contour, CvHistogram* hist );
+
+#define CV_DOMINANT_IPAN 1
+
+/* Finds high-curvature points of the contour */
+CVAPI(CvSeq*) cvFindDominantPoints( CvSeq* contour, CvMemStorage* storage,
+ int method CV_DEFAULT(CV_DOMINANT_IPAN),
+ double parameter1 CV_DEFAULT(0),
+ double parameter2 CV_DEFAULT(0),
+ double parameter3 CV_DEFAULT(0),
+ double parameter4 CV_DEFAULT(0));
+
+/*****************************************************************************************/
+
+
+/*******************************Stereo correspondence*************************************/
+
+typedef struct CvCliqueFinder
+{
+ CvGraph* graph;
+ int** adj_matr;
+ int N; //graph size
+
+ // stacks, counters etc/
+ int k; //stack size
+ int* current_comp;
+ int** All;
+
+ int* ne;
+ int* ce;
+ int* fixp; //node with minimal disconnections
+ int* nod;
+ int* s; //for selected candidate
+ int status;
+ int best_score;
+ int weighted;
+ int weighted_edges;
+ float best_weight;
+ float* edge_weights;
+ float* vertex_weights;
+ float* cur_weight;
+ float* cand_weight;
+
+} CvCliqueFinder;
+
+#define CLIQUE_TIME_OFF 2
+#define CLIQUE_FOUND 1
+#define CLIQUE_END 0
+
+/*CVAPI(void) cvStartFindCliques( CvGraph* graph, CvCliqueFinder* finder, int reverse,
+ int weighted CV_DEFAULT(0), int weighted_edges CV_DEFAULT(0));
+CVAPI(int) cvFindNextMaximalClique( CvCliqueFinder* finder, int* clock_rest CV_DEFAULT(0) );
+CVAPI(void) cvEndFindCliques( CvCliqueFinder* finder );
+
+CVAPI(void) cvBronKerbosch( CvGraph* graph );*/
+
+
+/*F///////////////////////////////////////////////////////////////////////////////////////
+//
+// Name: cvSubgraphWeight
+// Purpose: finds weight of subgraph in a graph
+// Context:
+// Parameters:
+// graph - input graph.
+// subgraph - sequence of pairwise different ints. These are indices of vertices of subgraph.
+// weight_type - describes the way we measure weight.
+// one of the following:
+// CV_NOT_WEIGHTED - weight of a clique is simply its size
+// CV_WEIGHTED_VTX - weight of a clique is the sum of weights of its vertices
+// CV_WEIGHTED_EDGE - the same but edges
+// CV_WEIGHTED_ALL - the same but both edges and vertices
+// weight_vtx - optional vector of floats, with size = graph->total.
+// If weight_type is either CV_WEIGHTED_VTX or CV_WEIGHTED_ALL
+// weights of vertices must be provided. If weight_vtx not zero
+// these weights considered to be here, otherwise function assumes
+// that vertices of graph are inherited from CvGraphWeightedVtx.
+// weight_edge - optional matrix of floats, of width and height = graph->total.
+// If weight_type is either CV_WEIGHTED_EDGE or CV_WEIGHTED_ALL
+// weights of edges ought to be supplied. If weight_edge is not zero
+// function finds them here, otherwise function expects
+// edges of graph to be inherited from CvGraphWeightedEdge.
+// If this parameter is not zero structure of the graph is determined from matrix
+// rather than from CvGraphEdge's. In particular, elements corresponding to
+// absent edges should be zero.
+// Returns:
+// weight of subgraph.
+// Notes:
+//F*/
+/*CVAPI(float) cvSubgraphWeight( CvGraph *graph, CvSeq *subgraph,
+ CvGraphWeightType weight_type CV_DEFAULT(CV_NOT_WEIGHTED),
+ CvVect32f weight_vtx CV_DEFAULT(0),
+ CvMatr32f weight_edge CV_DEFAULT(0) );*/
+
+
+/*F///////////////////////////////////////////////////////////////////////////////////////
+//
+// Name: cvFindCliqueEx
+// Purpose: tries to find clique with maximum possible weight in a graph
+// Context:
+// Parameters:
+// graph - input graph.
+// storage - memory storage to be used by the result.
+// is_complementary - optional flag showing whether function should seek for clique
+// in complementary graph.
+// weight_type - describes our notion about weight.
+// one of the following:
+// CV_NOT_WEIGHTED - weight of a clique is simply its size
+// CV_WEIGHTED_VTX - weight of a clique is the sum of weights of its vertices
+// CV_WEIGHTED_EDGE - the same but edges
+// CV_WEIGHTED_ALL - the same but both edges and vertices
+// weight_vtx - optional vector of floats, with size = graph->total.
+// If weight_type is either CV_WEIGHTED_VTX or CV_WEIGHTED_ALL
+// weights of vertices must be provided. If weight_vtx not zero
+// these weights considered to be here, otherwise function assumes
+// that vertices of graph are inherited from CvGraphWeightedVtx.
+// weight_edge - optional matrix of floats, of width and height = graph->total.
+// If weight_type is either CV_WEIGHTED_EDGE or CV_WEIGHTED_ALL
+// weights of edges ought to be supplied. If weight_edge is not zero
+// function finds them here, otherwise function expects
+// edges of graph to be inherited from CvGraphWeightedEdge.
+// Note that in case of CV_WEIGHTED_EDGE or CV_WEIGHTED_ALL
+// nonzero is_complementary implies nonzero weight_edge.
+// start_clique - optional sequence of pairwise different ints. They are indices of
+// vertices that shall be present in the output clique.
+// subgraph_of_ban - optional sequence of (maybe equal) ints. They are indices of
+// vertices that shall not be present in the output clique.
+// clique_weight_ptr - optional output parameter. Weight of found clique stored here.
+// num_generations - optional number of generations in evolutionary part of algorithm,
+// zero forces to return first found clique.
+// quality - optional parameter determining degree of required quality/speed tradeoff.
+// Must be in the range from 0 to 9.
+// 0 is fast and dirty, 9 is slow but hopefully yields good clique.
+// Returns:
+// sequence of pairwise different ints.
+// These are indices of vertices that form found clique.
+// Notes:
+// in cases of CV_WEIGHTED_EDGE and CV_WEIGHTED_ALL weights should be nonnegative.
+// start_clique has a priority over subgraph_of_ban.
+//F*/
+/*CVAPI(CvSeq*) cvFindCliqueEx( CvGraph *graph, CvMemStorage *storage,
+ int is_complementary CV_DEFAULT(0),
+ CvGraphWeightType weight_type CV_DEFAULT(CV_NOT_WEIGHTED),
+ CvVect32f weight_vtx CV_DEFAULT(0),
+ CvMatr32f weight_edge CV_DEFAULT(0),
+ CvSeq *start_clique CV_DEFAULT(0),
+ CvSeq *subgraph_of_ban CV_DEFAULT(0),
+ float *clique_weight_ptr CV_DEFAULT(0),
+ int num_generations CV_DEFAULT(3),
+ int quality CV_DEFAULT(2) );*/
+
+
+#define CV_UNDEF_SC_PARAM 12345 //default value of parameters
+
+#define CV_IDP_BIRCHFIELD_PARAM1 25
+#define CV_IDP_BIRCHFIELD_PARAM2 5
+#define CV_IDP_BIRCHFIELD_PARAM3 12
+#define CV_IDP_BIRCHFIELD_PARAM4 15
+#define CV_IDP_BIRCHFIELD_PARAM5 25
+
+
+#define CV_DISPARITY_BIRCHFIELD 0
+
+
+/*F///////////////////////////////////////////////////////////////////////////
+//
+// Name: cvFindStereoCorrespondence
+// Purpose: find stereo correspondence on stereo-pair
+// Context:
+// Parameters:
+// leftImage - left image of stereo-pair (format 8uC1).
+// rightImage - right image of stereo-pair (format 8uC1).
+// mode - mode of correspondence retrieval (now CV_DISPARITY_BIRCHFIELD only)
+// dispImage - destination disparity image
+// maxDisparity - maximal disparity
+// param1, param2, param3, param4, param5 - parameters of algorithm
+// Returns:
+// Notes:
+// Images must be rectified.
+// All images must have format 8uC1.
+//F*/
+CVAPI(void)
+cvFindStereoCorrespondence(
+ const CvArr* leftImage, const CvArr* rightImage,
+ int mode,
+ CvArr* dispImage,
+ int maxDisparity,
+ double param1 CV_DEFAULT(CV_UNDEF_SC_PARAM),
+ double param2 CV_DEFAULT(CV_UNDEF_SC_PARAM),
+ double param3 CV_DEFAULT(CV_UNDEF_SC_PARAM),
+ double param4 CV_DEFAULT(CV_UNDEF_SC_PARAM),
+ double param5 CV_DEFAULT(CV_UNDEF_SC_PARAM) );
+
+/*****************************************************************************************/
+/************ Epiline functions *******************/
+
+
+
+typedef struct CvStereoLineCoeff
+{
+ double Xcoef;
+ double XcoefA;
+ double XcoefB;
+ double XcoefAB;
+
+ double Ycoef;
+ double YcoefA;
+ double YcoefB;
+ double YcoefAB;
+
+ double Zcoef;
+ double ZcoefA;
+ double ZcoefB;
+ double ZcoefAB;
+}CvStereoLineCoeff;
+
+
+typedef struct CvCamera
+{
+ float imgSize[2]; /* size of the camera view, used during calibration */
+ float matrix[9]; /* intinsic camera parameters: [ fx 0 cx; 0 fy cy; 0 0 1 ] */
+ float distortion[4]; /* distortion coefficients - two coefficients for radial distortion
+ and another two for tangential: [ k1 k2 p1 p2 ] */
+ float rotMatr[9];
+ float transVect[3]; /* rotation matrix and transition vector relatively
+ to some reference point in the space. */
+} CvCamera;
+
+typedef struct CvStereoCamera
+{
+ CvCamera* camera[2]; /* two individual camera parameters */
+ float fundMatr[9]; /* fundamental matrix */
+
+ /* New part for stereo */
+ CvPoint3D32f epipole[2];
+ CvPoint2D32f quad[2][4]; /* coordinates of destination quadrangle after
+ epipolar geometry rectification */
+ double coeffs[2][3][3];/* coefficients for transformation */
+ CvPoint2D32f border[2][4];
+ CvSize warpSize;
+ CvStereoLineCoeff* lineCoeffs;
+ int needSwapCameras;/* flag set to 1 if need to swap cameras for good reconstruction */
+ float rotMatrix[9];
+ float transVector[3];
+} CvStereoCamera;
+
+
+typedef struct CvContourOrientation
+{
+ float egvals[2];
+ float egvects[4];
+
+ float max, min; // minimum and maximum projections
+ int imax, imin;
+} CvContourOrientation;
+
+#define CV_CAMERA_TO_WARP 1
+#define CV_WARP_TO_CAMERA 2
+
+CVAPI(int) icvConvertWarpCoordinates(double coeffs[3][3],
+ CvPoint2D32f* cameraPoint,
+ CvPoint2D32f* warpPoint,
+ int direction);
+
+CVAPI(int) icvGetSymPoint3D( CvPoint3D64f pointCorner,
+ CvPoint3D64f point1,
+ CvPoint3D64f point2,
+ CvPoint3D64f *pointSym2);
+
+CVAPI(void) icvGetPieceLength3D(CvPoint3D64f point1,CvPoint3D64f point2,double* dist);
+
+CVAPI(int) icvCompute3DPoint( double alpha,double betta,
+ CvStereoLineCoeff* coeffs,
+ CvPoint3D64f* point);
+
+CVAPI(int) icvCreateConvertMatrVect( double* rotMatr1,
+ double* transVect1,
+ double* rotMatr2,
+ double* transVect2,
+ double* convRotMatr,
+ double* convTransVect);
+
+CVAPI(int) icvConvertPointSystem(CvPoint3D64f M2,
+ CvPoint3D64f* M1,
+ double* rotMatr,
+ double* transVect
+ );
+
+CVAPI(int) icvComputeCoeffForStereo( CvStereoCamera* stereoCamera);
+
+CVAPI(int) icvGetCrossPieceVector(CvPoint2D32f p1_start,CvPoint2D32f p1_end,CvPoint2D32f v2_start,CvPoint2D32f v2_end,CvPoint2D32f *cross);
+CVAPI(int) icvGetCrossLineDirect(CvPoint2D32f p1,CvPoint2D32f p2,float a,float b,float c,CvPoint2D32f* cross);
+CVAPI(float) icvDefinePointPosition(CvPoint2D32f point1,CvPoint2D32f point2,CvPoint2D32f point);
+CVAPI(int) icvStereoCalibration( int numImages,
+ int* nums,
+ CvSize imageSize,
+ CvPoint2D32f* imagePoints1,
+ CvPoint2D32f* imagePoints2,
+ CvPoint3D32f* objectPoints,
+ CvStereoCamera* stereoparams
+ );
+
+
+CVAPI(int) icvComputeRestStereoParams(CvStereoCamera *stereoparams);
+
+CVAPI(void) cvComputePerspectiveMap( const double coeffs[3][3], CvArr* rectMapX, CvArr* rectMapY );
+
+CVAPI(int) icvComCoeffForLine( CvPoint2D64f point1,
+ CvPoint2D64f point2,
+ CvPoint2D64f point3,
+ CvPoint2D64f point4,
+ double* camMatr1,
+ double* rotMatr1,
+ double* transVect1,
+ double* camMatr2,
+ double* rotMatr2,
+ double* transVect2,
+ CvStereoLineCoeff* coeffs,
+ int* needSwapCameras);
+
+CVAPI(int) icvGetDirectionForPoint( CvPoint2D64f point,
+ double* camMatr,
+ CvPoint3D64f* direct);
+
+CVAPI(int) icvGetCrossLines(CvPoint3D64f point11,CvPoint3D64f point12,
+ CvPoint3D64f point21,CvPoint3D64f point22,
+ CvPoint3D64f* midPoint);
+
+CVAPI(int) icvComputeStereoLineCoeffs( CvPoint3D64f pointA,
+ CvPoint3D64f pointB,
+ CvPoint3D64f pointCam1,
+ double gamma,
+ CvStereoLineCoeff* coeffs);
+
+/*CVAPI(int) icvComputeFundMatrEpipoles ( double* camMatr1,
+ double* rotMatr1,
+ double* transVect1,
+ double* camMatr2,
+ double* rotMatr2,
+ double* transVect2,
+ CvPoint2D64f* epipole1,
+ CvPoint2D64f* epipole2,
+ double* fundMatr);*/
+
+CVAPI(int) icvGetAngleLine( CvPoint2D64f startPoint, CvSize imageSize,CvPoint2D64f *point1,CvPoint2D64f *point2);
+
+CVAPI(void) icvGetCoefForPiece( CvPoint2D64f p_start,CvPoint2D64f p_end,
+ double *a,double *b,double *c,
+ int* result);
+
+/*CVAPI(void) icvGetCommonArea( CvSize imageSize,
+ CvPoint2D64f epipole1,CvPoint2D64f epipole2,
+ double* fundMatr,
+ double* coeff11,double* coeff12,
+ double* coeff21,double* coeff22,
+ int* result);*/
+
+CVAPI(void) icvComputeeInfiniteProject1(double* rotMatr,
+ double* camMatr1,
+ double* camMatr2,
+ CvPoint2D32f point1,
+ CvPoint2D32f *point2);
+
+CVAPI(void) icvComputeeInfiniteProject2(double* rotMatr,
+ double* camMatr1,
+ double* camMatr2,
+ CvPoint2D32f* point1,
+ CvPoint2D32f point2);
+
+CVAPI(void) icvGetCrossDirectDirect( double* direct1,double* direct2,
+ CvPoint2D64f *cross,int* result);
+
+CVAPI(void) icvGetCrossPieceDirect( CvPoint2D64f p_start,CvPoint2D64f p_end,
+ double a,double b,double c,
+ CvPoint2D64f *cross,int* result);
+
+CVAPI(void) icvGetCrossPiecePiece( CvPoint2D64f p1_start,CvPoint2D64f p1_end,
+ CvPoint2D64f p2_start,CvPoint2D64f p2_end,
+ CvPoint2D64f* cross,
+ int* result);
+
+CVAPI(void) icvGetPieceLength(CvPoint2D64f point1,CvPoint2D64f point2,double* dist);
+
+CVAPI(void) icvGetCrossRectDirect( CvSize imageSize,
+ double a,double b,double c,
+ CvPoint2D64f *start,CvPoint2D64f *end,
+ int* result);
+
+CVAPI(void) icvProjectPointToImage( CvPoint3D64f point,
+ double* camMatr,double* rotMatr,double* transVect,
+ CvPoint2D64f* projPoint);
+
+CVAPI(void) icvGetQuadsTransform( CvSize imageSize,
+ double* camMatr1,
+ double* rotMatr1,
+ double* transVect1,
+ double* camMatr2,
+ double* rotMatr2,
+ double* transVect2,
+ CvSize* warpSize,
+ double quad1[4][2],
+ double quad2[4][2],
+ double* fundMatr,
+ CvPoint3D64f* epipole1,
+ CvPoint3D64f* epipole2
+ );
+
+CVAPI(void) icvGetQuadsTransformStruct( CvStereoCamera* stereoCamera);
+
+CVAPI(void) icvComputeStereoParamsForCameras(CvStereoCamera* stereoCamera);
+
+CVAPI(void) icvGetCutPiece( double* areaLineCoef1,double* areaLineCoef2,
+ CvPoint2D64f epipole,
+ CvSize imageSize,
+ CvPoint2D64f* point11,CvPoint2D64f* point12,
+ CvPoint2D64f* point21,CvPoint2D64f* point22,
+ int* result);
+
+CVAPI(void) icvGetMiddleAnglePoint( CvPoint2D64f basePoint,
+ CvPoint2D64f point1,CvPoint2D64f point2,
+ CvPoint2D64f* midPoint);
+
+CVAPI(void) icvGetNormalDirect(double* direct,CvPoint2D64f point,double* normDirect);
+
+CVAPI(double) icvGetVect(CvPoint2D64f basePoint,CvPoint2D64f point1,CvPoint2D64f point2);
+
+CVAPI(void) icvProjectPointToDirect( CvPoint2D64f point,double* lineCoeff,
+ CvPoint2D64f* projectPoint);
+
+CVAPI(void) icvGetDistanceFromPointToDirect( CvPoint2D64f point,double* lineCoef,double*dist);
+
+CVAPI(IplImage*) icvCreateIsometricImage( IplImage* src, IplImage* dst,
+ int desired_depth, int desired_num_channels );
+
+CVAPI(void) cvDeInterlace( const CvArr* frame, CvArr* fieldEven, CvArr* fieldOdd );
+
+/*CVAPI(int) icvSelectBestRt( int numImages,
+ int* numPoints,
+ CvSize imageSize,
+ CvPoint2D32f* imagePoints1,
+ CvPoint2D32f* imagePoints2,
+ CvPoint3D32f* objectPoints,
+
+ CvMatr32f cameraMatrix1,
+ CvVect32f distortion1,
+ CvMatr32f rotMatrs1,
+ CvVect32f transVects1,
+
+ CvMatr32f cameraMatrix2,
+ CvVect32f distortion2,
+ CvMatr32f rotMatrs2,
+ CvVect32f transVects2,
+
+ CvMatr32f bestRotMatr,
+ CvVect32f bestTransVect
+ );*/
+
+
+/****************************************************************************************\
+* Contour Tree *
+\****************************************************************************************/
+
+/* Contour tree header */
+typedef struct CvContourTree
+{
+ CV_SEQUENCE_FIELDS()
+ CvPoint p1; /* the first point of the binary tree root segment */
+ CvPoint p2; /* the last point of the binary tree root segment */
+} CvContourTree;
+
+/* Builds hierarhical representation of a contour */
+CVAPI(CvContourTree*) cvCreateContourTree( const CvSeq* contour,
+ CvMemStorage* storage,
+ double threshold );
+
+/* Reconstruct (completelly or partially) contour a from contour tree */
+CVAPI(CvSeq*) cvContourFromContourTree( const CvContourTree* tree,
+ CvMemStorage* storage,
+ CvTermCriteria criteria );
+
+/* Compares two contour trees */
+enum { CV_CONTOUR_TREES_MATCH_I1 = 1 };
+
+CVAPI(double) cvMatchContourTrees( const CvContourTree* tree1,
+ const CvContourTree* tree2,
+ int method, double threshold );
+
+/****************************************************************************************\
+* Contour Morphing *
+\****************************************************************************************/
+
+/* finds correspondence between two contours */
+CvSeq* cvCalcContoursCorrespondence( const CvSeq* contour1,
+ const CvSeq* contour2,
+ CvMemStorage* storage);
+
+/* morphs contours using the pre-calculated correspondence:
+ alpha=0 ~ contour1, alpha=1 ~ contour2 */
+CvSeq* cvMorphContours( const CvSeq* contour1, const CvSeq* contour2,
+ CvSeq* corr, double alpha,
+ CvMemStorage* storage );
+
+
+/****************************************************************************************\
+* Active Contours *
+\****************************************************************************************/
+
+#define CV_VALUE 1
+#define CV_ARRAY 2
+/* Updates active contour in order to minimize its cummulative
+ (internal and external) energy. */
+CVAPI(void) cvSnakeImage( const IplImage* image, CvPoint* points,
+ int length, float* alpha,
+ float* beta, float* gamma,
+ int coeff_usage, CvSize win,
+ CvTermCriteria criteria, int calc_gradient CV_DEFAULT(1));
+
+/****************************************************************************************\
+* Texture Descriptors *
+\****************************************************************************************/
+
+#define CV_GLCM_OPTIMIZATION_NONE -2
+#define CV_GLCM_OPTIMIZATION_LUT -1
+#define CV_GLCM_OPTIMIZATION_HISTOGRAM 0
+
+#define CV_GLCMDESC_OPTIMIZATION_ALLOWDOUBLENEST 10
+#define CV_GLCMDESC_OPTIMIZATION_ALLOWTRIPLENEST 11
+#define CV_GLCMDESC_OPTIMIZATION_HISTOGRAM 4
+
+#define CV_GLCMDESC_ENTROPY 0
+#define CV_GLCMDESC_ENERGY 1
+#define CV_GLCMDESC_HOMOGENITY 2
+#define CV_GLCMDESC_CONTRAST 3
+#define CV_GLCMDESC_CLUSTERTENDENCY 4
+#define CV_GLCMDESC_CLUSTERSHADE 5
+#define CV_GLCMDESC_CORRELATION 6
+#define CV_GLCMDESC_CORRELATIONINFO1 7
+#define CV_GLCMDESC_CORRELATIONINFO2 8
+#define CV_GLCMDESC_MAXIMUMPROBABILITY 9
+
+#define CV_GLCM_ALL 0
+#define CV_GLCM_GLCM 1
+#define CV_GLCM_DESC 2
+
+typedef struct CvGLCM CvGLCM;
+
+CVAPI(CvGLCM*) cvCreateGLCM( const IplImage* srcImage,
+ int stepMagnitude,
+ const int* stepDirections CV_DEFAULT(0),
+ int numStepDirections CV_DEFAULT(0),
+ int optimizationType CV_DEFAULT(CV_GLCM_OPTIMIZATION_NONE));
+
+CVAPI(void) cvReleaseGLCM( CvGLCM** GLCM, int flag CV_DEFAULT(CV_GLCM_ALL));
+
+CVAPI(void) cvCreateGLCMDescriptors( CvGLCM* destGLCM,
+ int descriptorOptimizationType
+ CV_DEFAULT(CV_GLCMDESC_OPTIMIZATION_ALLOWDOUBLENEST));
+
+CVAPI(double) cvGetGLCMDescriptor( CvGLCM* GLCM, int step, int descriptor );
+
+CVAPI(void) cvGetGLCMDescriptorStatistics( CvGLCM* GLCM, int descriptor,
+ double* average, double* standardDeviation );
+
+CVAPI(IplImage*) cvCreateGLCMImage( CvGLCM* GLCM, int step );
+
+/****************************************************************************************\
+* Face eyes&mouth tracking *
+\****************************************************************************************/
+
+
+typedef struct CvFaceTracker CvFaceTracker;
+
+#define CV_NUM_FACE_ELEMENTS 3
+enum CV_FACE_ELEMENTS
+{
+ CV_FACE_MOUTH = 0,
+ CV_FACE_LEFT_EYE = 1,
+ CV_FACE_RIGHT_EYE = 2
+};
+
+CVAPI(CvFaceTracker*) cvInitFaceTracker(CvFaceTracker* pFaceTracking, const IplImage* imgGray,
+ CvRect* pRects, int nRects);
+CVAPI(int) cvTrackFace( CvFaceTracker* pFaceTracker, IplImage* imgGray,
+ CvRect* pRects, int nRects,
+ CvPoint* ptRotate, double* dbAngleRotate);
+CVAPI(void) cvReleaseFaceTracker(CvFaceTracker** ppFaceTracker);
+
+
+typedef struct CvFace
+{
+ CvRect MouthRect;
+ CvRect LeftEyeRect;
+ CvRect RightEyeRect;
+} CvFaceData;
+
+CvSeq * cvFindFace(IplImage * Image,CvMemStorage* storage);
+CvSeq * cvPostBoostingFindFace(IplImage * Image,CvMemStorage* storage);
+
+
+/****************************************************************************************\
+* 3D Tracker *
+\****************************************************************************************/
+
+typedef unsigned char CvBool;
+
+typedef struct Cv3dTracker2dTrackedObject
+{
+ int id;
+ CvPoint2D32f p; // pgruebele: So we do not loose precision, this needs to be float
+} Cv3dTracker2dTrackedObject;
+
+CV_INLINE Cv3dTracker2dTrackedObject cv3dTracker2dTrackedObject(int id, CvPoint2D32f p)
+{
+ Cv3dTracker2dTrackedObject r;
+ r.id = id;
+ r.p = p;
+ return r;
+}
+
+typedef struct Cv3dTrackerTrackedObject
+{
+ int id;
+ CvPoint3D32f p; // location of the tracked object
+} Cv3dTrackerTrackedObject;
+
+CV_INLINE Cv3dTrackerTrackedObject cv3dTrackerTrackedObject(int id, CvPoint3D32f p)
+{
+ Cv3dTrackerTrackedObject r;
+ r.id = id;
+ r.p = p;
+ return r;
+}
+
+typedef struct Cv3dTrackerCameraInfo
+{
+ CvBool valid;
+ float mat[4][4]; /* maps camera coordinates to world coordinates */
+ CvPoint2D32f principal_point; /* copied from intrinsics so this structure */
+ /* has all the info we need */
+} Cv3dTrackerCameraInfo;
+
+typedef struct Cv3dTrackerCameraIntrinsics
+{
+ CvPoint2D32f principal_point;
+ float focal_length[2];
+ float distortion[4];
+} Cv3dTrackerCameraIntrinsics;
+
+CVAPI(CvBool) cv3dTrackerCalibrateCameras(int num_cameras,
+ const Cv3dTrackerCameraIntrinsics camera_intrinsics[], /* size is num_cameras */
+ CvSize etalon_size,
+ float square_size,
+ IplImage *samples[], /* size is num_cameras */
+ Cv3dTrackerCameraInfo camera_info[]); /* size is num_cameras */
+
+CVAPI(int) cv3dTrackerLocateObjects(int num_cameras, int num_objects,
+ const Cv3dTrackerCameraInfo camera_info[], /* size is num_cameras */
+ const Cv3dTracker2dTrackedObject tracking_info[], /* size is num_objects*num_cameras */
+ Cv3dTrackerTrackedObject tracked_objects[]); /* size is num_objects */
+/****************************************************************************************
+ tracking_info is a rectangular array; one row per camera, num_objects elements per row.
+ The id field of any unused slots must be -1. Ids need not be ordered or consecutive. On
+ completion, the return value is the number of objects located; i.e., the number of objects
+ visible by more than one camera. The id field of any unused slots in tracked objects is
+ set to -1.
+****************************************************************************************/
+
+
+/****************************************************************************************\
+* Skeletons and Linear-Contour Models *
+\****************************************************************************************/
+
+typedef enum CvLeeParameters
+{
+ CV_LEE_INT = 0,
+ CV_LEE_FLOAT = 1,
+ CV_LEE_DOUBLE = 2,
+ CV_LEE_AUTO = -1,
+ CV_LEE_ERODE = 0,
+ CV_LEE_ZOOM = 1,
+ CV_LEE_NON = 2
+} CvLeeParameters;
+
+#define CV_NEXT_VORONOISITE2D( SITE ) ((SITE)->edge[0]->site[((SITE)->edge[0]->site[0] == (SITE))])
+#define CV_PREV_VORONOISITE2D( SITE ) ((SITE)->edge[1]->site[((SITE)->edge[1]->site[0] == (SITE))])
+#define CV_FIRST_VORONOIEDGE2D( SITE ) ((SITE)->edge[0])
+#define CV_LAST_VORONOIEDGE2D( SITE ) ((SITE)->edge[1])
+#define CV_NEXT_VORONOIEDGE2D( EDGE, SITE ) ((EDGE)->next[(EDGE)->site[0] != (SITE)])
+#define CV_PREV_VORONOIEDGE2D( EDGE, SITE ) ((EDGE)->next[2 + ((EDGE)->site[0] != (SITE))])
+#define CV_VORONOIEDGE2D_BEGINNODE( EDGE, SITE ) ((EDGE)->node[((EDGE)->site[0] != (SITE))])
+#define CV_VORONOIEDGE2D_ENDNODE( EDGE, SITE ) ((EDGE)->node[((EDGE)->site[0] == (SITE))])
+#define CV_TWIN_VORONOISITE2D( SITE, EDGE ) ( (EDGE)->site[((EDGE)->site[0] == (SITE))])
+
+#define CV_VORONOISITE2D_FIELDS() \
+ struct CvVoronoiNode2D *node[2]; \
+ struct CvVoronoiEdge2D *edge[2];
+
+typedef struct CvVoronoiSite2D
+{
+ CV_VORONOISITE2D_FIELDS()
+ struct CvVoronoiSite2D *next[2];
+} CvVoronoiSite2D;
+
+#define CV_VORONOIEDGE2D_FIELDS() \
+ struct CvVoronoiNode2D *node[2]; \
+ struct CvVoronoiSite2D *site[2]; \
+ struct CvVoronoiEdge2D *next[4];
+
+typedef struct CvVoronoiEdge2D
+{
+ CV_VORONOIEDGE2D_FIELDS()
+} CvVoronoiEdge2D;
+
+#define CV_VORONOINODE2D_FIELDS() \
+ CV_SET_ELEM_FIELDS(CvVoronoiNode2D) \
+ CvPoint2D32f pt; \
+ float radius;
+
+typedef struct CvVoronoiNode2D
+{
+ CV_VORONOINODE2D_FIELDS()
+} CvVoronoiNode2D;
+
+#define CV_VORONOIDIAGRAM2D_FIELDS() \
+ CV_GRAPH_FIELDS() \
+ CvSet *sites;
+
+typedef struct CvVoronoiDiagram2D
+{
+ CV_VORONOIDIAGRAM2D_FIELDS()
+} CvVoronoiDiagram2D;
+
+/* Computes Voronoi Diagram for given polygons with holes */
+CVAPI(int) cvVoronoiDiagramFromContour(CvSeq* ContourSeq,
+ CvVoronoiDiagram2D** VoronoiDiagram,
+ CvMemStorage* VoronoiStorage,
+ CvLeeParameters contour_type CV_DEFAULT(CV_LEE_INT),
+ int contour_orientation CV_DEFAULT(-1),
+ int attempt_number CV_DEFAULT(10));
+
+/* Computes Voronoi Diagram for domains in given image */
+CVAPI(int) cvVoronoiDiagramFromImage(IplImage* pImage,
+ CvSeq** ContourSeq,
+ CvVoronoiDiagram2D** VoronoiDiagram,
+ CvMemStorage* VoronoiStorage,
+ CvLeeParameters regularization_method CV_DEFAULT(CV_LEE_NON),
+ float approx_precision CV_DEFAULT(CV_LEE_AUTO));
+
+/* Deallocates the storage */
+CVAPI(void) cvReleaseVoronoiStorage(CvVoronoiDiagram2D* VoronoiDiagram,
+ CvMemStorage** pVoronoiStorage);
+
+/*********************** Linear-Contour Model ****************************/
+
+struct CvLCMEdge;
+struct CvLCMNode;
+
+typedef struct CvLCMEdge
+{
+ CV_GRAPH_EDGE_FIELDS()
+ CvSeq* chain;
+ float width;
+ int index1;
+ int index2;
+} CvLCMEdge;
+
+typedef struct CvLCMNode
+{
+ CV_GRAPH_VERTEX_FIELDS()
+ CvContour* contour;
+} CvLCMNode;
+
+
+/* Computes hybrid model from Voronoi Diagram */
+CVAPI(CvGraph*) cvLinearContorModelFromVoronoiDiagram(CvVoronoiDiagram2D* VoronoiDiagram,
+ float maxWidth);
+
+/* Releases hybrid model storage */
+CVAPI(int) cvReleaseLinearContorModelStorage(CvGraph** Graph);
+
+
+/* two stereo-related functions */
+
+CVAPI(void) cvInitPerspectiveTransform( CvSize size, const CvPoint2D32f vertex[4], double matrix[3][3],
+ CvArr* rectMap );
+
+/*CVAPI(void) cvInitStereoRectification( CvStereoCamera* params,
+ CvArr* rectMap1, CvArr* rectMap2,
+ int do_undistortion );*/
+
+/*************************** View Morphing Functions ************************/
+
+typedef struct CvMatrix3
+{
+ float m[3][3];
+} CvMatrix3;
+
+/* The order of the function corresponds to the order they should appear in
+ the view morphing pipeline */
+
+/* Finds ending points of scanlines on left and right images of stereo-pair */
+CVAPI(void) cvMakeScanlines( const CvMatrix3* matrix, CvSize img_size,
+ int* scanlines1, int* scanlines2,
+ int* lengths1, int* lengths2,
+ int* line_count );
+
+/* Grab pixel values from scanlines and stores them sequentially
+ (some sort of perspective image transform) */
+CVAPI(void) cvPreWarpImage( int line_count,
+ IplImage* img,
+ uchar* dst,
+ int* dst_nums,
+ int* scanlines);
+
+/* Approximate each grabbed scanline by a sequence of runs
+ (lossy run-length compression) */
+CVAPI(void) cvFindRuns( int line_count,
+ uchar* prewarp1,
+ uchar* prewarp2,
+ int* line_lengths1,
+ int* line_lengths2,
+ int* runs1,
+ int* runs2,
+ int* num_runs1,
+ int* num_runs2);
+
+/* Compares two sets of compressed scanlines */
+CVAPI(void) cvDynamicCorrespondMulti( int line_count,
+ int* first,
+ int* first_runs,
+ int* second,
+ int* second_runs,
+ int* first_corr,
+ int* second_corr);
+
+/* Finds scanline ending coordinates for some intermediate "virtual" camera position */
+CVAPI(void) cvMakeAlphaScanlines( int* scanlines1,
+ int* scanlines2,
+ int* scanlinesA,
+ int* lengths,
+ int line_count,
+ float alpha);
+
+/* Blends data of the left and right image scanlines to get
+ pixel values of "virtual" image scanlines */
+CVAPI(void) cvMorphEpilinesMulti( int line_count,
+ uchar* first_pix,
+ int* first_num,
+ uchar* second_pix,
+ int* second_num,
+ uchar* dst_pix,
+ int* dst_num,
+ float alpha,
+ int* first,
+ int* first_runs,
+ int* second,
+ int* second_runs,
+ int* first_corr,
+ int* second_corr);
+
+/* Does reverse warping of the morphing result to make
+ it fill the destination image rectangle */
+CVAPI(void) cvPostWarpImage( int line_count,
+ uchar* src,
+ int* src_nums,
+ IplImage* img,
+ int* scanlines);
+
+/* Deletes Moire (missed pixels that appear due to discretization) */
+CVAPI(void) cvDeleteMoire( IplImage* img );
+
+
+typedef struct CvConDensation
+{
+ int MP;
+ int DP;
+ float* DynamMatr; /* Matrix of the linear Dynamics system */
+ float* State; /* Vector of State */
+ int SamplesNum; /* Number of the Samples */
+ float** flSamples; /* arr of the Sample Vectors */
+ float** flNewSamples; /* temporary array of the Sample Vectors */
+ float* flConfidence; /* Confidence for each Sample */
+ float* flCumulative; /* Cumulative confidence */
+ float* Temp; /* Temporary vector */
+ float* RandomSample; /* RandomVector to update sample set */
+ struct CvRandState* RandS; /* Array of structures to generate random vectors */
+} CvConDensation;
+
+/* Creates ConDensation filter state */
+CVAPI(CvConDensation*) cvCreateConDensation( int dynam_params,
+ int measure_params,
+ int sample_count );
+
+/* Releases ConDensation filter state */
+CVAPI(void) cvReleaseConDensation( CvConDensation** condens );
+
+/* Updates ConDensation filter by time (predict future state of the system) */
+CVAPI(void) cvConDensUpdateByTime( CvConDensation* condens);
+
+/* Initializes ConDensation filter samples */
+CVAPI(void) cvConDensInitSampleSet( CvConDensation* condens, CvMat* lower_bound, CvMat* upper_bound );
+
+CV_INLINE int iplWidth( const IplImage* img )
+{
+ return !img ? 0 : !img->roi ? img->width : img->roi->width;
+}
+
+CV_INLINE int iplHeight( const IplImage* img )
+{
+ return !img ? 0 : !img->roi ? img->height : img->roi->height;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+
+/****************************************************************************************\
+* Calibration engine *
+\****************************************************************************************/
+
+typedef enum CvCalibEtalonType
+{
+ CV_CALIB_ETALON_USER = -1,
+ CV_CALIB_ETALON_CHESSBOARD = 0,
+ CV_CALIB_ETALON_CHECKERBOARD = CV_CALIB_ETALON_CHESSBOARD
+}
+CvCalibEtalonType;
+
+class CV_EXPORTS CvCalibFilter
+{
+public:
+ /* Constructor & destructor */
+ CvCalibFilter();
+ virtual ~CvCalibFilter();
+
+ /* Sets etalon type - one for all cameras.
+ etalonParams is used in case of pre-defined etalons (such as chessboard).
+ Number of elements in etalonParams is determined by etalonType.
+ E.g., if etalon type is CV_ETALON_TYPE_CHESSBOARD then:
+ etalonParams[0] is number of squares per one side of etalon
+ etalonParams[1] is number of squares per another side of etalon
+ etalonParams[2] is linear size of squares in the board in arbitrary units.
+ pointCount & points are used in case of
+ CV_CALIB_ETALON_USER (user-defined) etalon. */
+ virtual bool
+ SetEtalon( CvCalibEtalonType etalonType, double* etalonParams,
+ int pointCount = 0, CvPoint2D32f* points = 0 );
+
+ /* Retrieves etalon parameters/or and points */
+ virtual CvCalibEtalonType
+ GetEtalon( int* paramCount = 0, const double** etalonParams = 0,
+ int* pointCount = 0, const CvPoint2D32f** etalonPoints = 0 ) const;
+
+ /* Sets number of cameras calibrated simultaneously. It is equal to 1 initially */
+ virtual void SetCameraCount( int cameraCount );
+
+ /* Retrieves number of cameras */
+ int GetCameraCount() const { return cameraCount; }
+
+ /* Starts cameras calibration */
+ virtual bool SetFrames( int totalFrames );
+
+ /* Stops cameras calibration */
+ virtual void Stop( bool calibrate = false );
+
+ /* Retrieves number of cameras */
+ bool IsCalibrated() const { return isCalibrated; }
+
+ /* Feeds another serie of snapshots (one per each camera) to filter.
+ Etalon points on these images are found automatically.
+ If the function can't locate points, it returns false */
+ virtual bool FindEtalon( IplImage** imgs );
+
+ /* The same but takes matrices */
+ virtual bool FindEtalon( CvMat** imgs );
+
+ /* Lower-level function for feeding filter with already found etalon points.
+ Array of point arrays for each camera is passed. */
+ virtual bool Push( const CvPoint2D32f** points = 0 );
+
+ /* Returns total number of accepted frames and, optionally,
+ total number of frames to collect */
+ virtual int GetFrameCount( int* framesTotal = 0 ) const;
+
+ /* Retrieves camera parameters for specified camera.
+ If camera is not calibrated the function returns 0 */
+ virtual const CvCamera* GetCameraParams( int idx = 0 ) const;
+
+ virtual const CvStereoCamera* GetStereoParams() const;
+
+ /* Sets camera parameters for all cameras */
+ virtual bool SetCameraParams( CvCamera* params );
+
+ /* Saves all camera parameters to file */
+ virtual bool SaveCameraParams( const char* filename );
+
+ /* Loads all camera parameters from file */
+ virtual bool LoadCameraParams( const char* filename );
+
+ /* Undistorts images using camera parameters. Some of src pointers can be NULL. */
+ virtual bool Undistort( IplImage** src, IplImage** dst );
+
+ /* Undistorts images using camera parameters. Some of src pointers can be NULL. */
+ virtual bool Undistort( CvMat** src, CvMat** dst );
+
+ /* Returns array of etalon points detected/partally detected
+ on the latest frame for idx-th camera */
+ virtual bool GetLatestPoints( int idx, CvPoint2D32f** pts,
+ int* count, bool* found );
+
+ /* Draw the latest detected/partially detected etalon */
+ virtual void DrawPoints( IplImage** dst );
+
+ /* Draw the latest detected/partially detected etalon */
+ virtual void DrawPoints( CvMat** dst );
+
+ virtual bool Rectify( IplImage** srcarr, IplImage** dstarr );
+ virtual bool Rectify( CvMat** srcarr, CvMat** dstarr );
+
+protected:
+
+ enum { MAX_CAMERAS = 3 };
+
+ /* etalon data */
+ CvCalibEtalonType etalonType;
+ int etalonParamCount;
+ double* etalonParams;
+ int etalonPointCount;
+ CvPoint2D32f* etalonPoints;
+ CvSize imgSize;
+ CvMat* grayImg;
+ CvMat* tempImg;
+ CvMemStorage* storage;
+
+ /* camera data */
+ int cameraCount;
+ CvCamera cameraParams[MAX_CAMERAS];
+ CvStereoCamera stereo;
+ CvPoint2D32f* points[MAX_CAMERAS];
+ CvMat* undistMap[MAX_CAMERAS][2];
+ CvMat* undistImg;
+ int latestCounts[MAX_CAMERAS];
+ CvPoint2D32f* latestPoints[MAX_CAMERAS];
+ CvMat* rectMap[MAX_CAMERAS][2];
+
+ /* Added by Valery */
+ //CvStereoCamera stereoParams;
+
+ int maxPoints;
+ int framesTotal;
+ int framesAccepted;
+ bool isCalibrated;
+};
+
+#include <iosfwd>
+#include <limits>
+
+class CV_EXPORTS CvImage
+{
+public:
+ CvImage() : image(0), refcount(0) {}
+ CvImage( CvSize _size, int _depth, int _channels )
+ {
+ image = cvCreateImage( _size, _depth, _channels );
+ refcount = image ? new int(1) : 0;
+ }
+
+ CvImage( IplImage* img ) : image(img)
+ {
+ refcount = image ? new int(1) : 0;
+ }
+
+ CvImage( const CvImage& img ) : image(img.image), refcount(img.refcount)
+ {
+ if( refcount ) ++(*refcount);
+ }
+
+ CvImage( const char* filename, const char* imgname=0, int color=-1 ) : image(0), refcount(0)
+ { load( filename, imgname, color ); }
+
+ CvImage( CvFileStorage* fs, const char* mapname, const char* imgname ) : image(0), refcount(0)
+ { read( fs, mapname, imgname ); }
+
+ CvImage( CvFileStorage* fs, const char* seqname, int idx ) : image(0), refcount(0)
+ { read( fs, seqname, idx ); }
+
+ ~CvImage()
+ {
+ if( refcount && !(--*refcount) )
+ {
+ cvReleaseImage( &image );
+ delete refcount;
+ }
+ }
+
+ CvImage clone() { return CvImage(image ? cvCloneImage(image) : 0); }
+
+ void create( CvSize _size, int _depth, int _channels )
+ {
+ if( !image || !refcount ||
+ image->width != _size.width || image->height != _size.height ||
+ image->depth != _depth || image->nChannels != _channels )
+ attach( cvCreateImage( _size, _depth, _channels ));
+ }
+
+ void release() { detach(); }
+ void clear() { detach(); }
+
+ void attach( IplImage* img, bool use_refcount=true )
+ {
+ if( refcount && --*refcount == 0 )
+ {
+ cvReleaseImage( &image );
+ delete refcount;
+ }
+ image = img;
+ refcount = use_refcount && image ? new int(1) : 0;
+ }
+
+ void detach()
+ {
+ if( refcount && --*refcount == 0 )
+ {
+ cvReleaseImage( &image );
+ delete refcount;
+ }
+ image = 0;
+ refcount = 0;
+ }
+
+ bool load( const char* filename, const char* imgname=0, int color=-1 );
+ bool read( CvFileStorage* fs, const char* mapname, const char* imgname );
+ bool read( CvFileStorage* fs, const char* seqname, int idx );
+ void save( const char* filename, const char* imgname, const int* params=0 );
+ void write( CvFileStorage* fs, const char* imgname );
+
+ void show( const char* window_name );
+ bool is_valid() { return image != 0; }
+
+ int width() const { return image ? image->width : 0; }
+ int height() const { return image ? image->height : 0; }
+
+ CvSize size() const { return image ? cvSize(image->width, image->height) : cvSize(0,0); }
+
+ CvSize roi_size() const
+ {
+ return !image ? cvSize(0,0) :
+ !image->roi ? cvSize(image->width,image->height) :
+ cvSize(image->roi->width, image->roi->height);
+ }
+
+ CvRect roi() const
+ {
+ return !image ? cvRect(0,0,0,0) :
+ !image->roi ? cvRect(0,0,image->width,image->height) :
+ cvRect(image->roi->xOffset,image->roi->yOffset,
+ image->roi->width,image->roi->height);
+ }
+
+ int coi() const { return !image || !image->roi ? 0 : image->roi->coi; }
+
+ void set_roi(CvRect _roi) { cvSetImageROI(image,_roi); }
+ void reset_roi() { cvResetImageROI(image); }
+ void set_coi(int _coi) { cvSetImageCOI(image,_coi); }
+ int depth() const { return image ? image->depth : 0; }
+ int channels() const { return image ? image->nChannels : 0; }
+ int pix_size() const { return image ? ((image->depth & 255)>>3)*image->nChannels : 0; }
+
+ uchar* data() { return image ? (uchar*)image->imageData : 0; }
+ const uchar* data() const { return image ? (const uchar*)image->imageData : 0; }
+ int step() const { return image ? image->widthStep : 0; }
+ int origin() const { return image ? image->origin : 0; }
+
+ uchar* roi_row(int y)
+ {
+ assert(0<=y);
+ assert(!image ?
+ 1 : image->roi ?
+ y<image->roi->height : y<image->height);
+
+ return !image ? 0 :
+ !image->roi ?
+ (uchar*)(image->imageData + y*image->widthStep) :
+ (uchar*)(image->imageData + (y+image->roi->yOffset)*image->widthStep +
+ image->roi->xOffset*((image->depth & 255)>>3)*image->nChannels);
+ }
+
+ const uchar* roi_row(int y) const
+ {
+ assert(0<=y);
+ assert(!image ?
+ 1 : image->roi ?
+ y<image->roi->height : y<image->height);
+
+ return !image ? 0 :
+ !image->roi ?
+ (const uchar*)(image->imageData + y*image->widthStep) :
+ (const uchar*)(image->imageData + (y+image->roi->yOffset)*image->widthStep +
+ image->roi->xOffset*((image->depth & 255)>>3)*image->nChannels);
+ }
+
+ operator const IplImage* () const { return image; }
+ operator IplImage* () { return image; }
+
+ CvImage& operator = (const CvImage& img)
+ {
+ if( img.refcount )
+ ++*img.refcount;
+ if( refcount && !(--*refcount) )
+ cvReleaseImage( &image );
+ image=img.image;
+ refcount=img.refcount;
+ return *this;
+ }
+
+protected:
+ IplImage* image;
+ int* refcount;
+};
+
+
+class CV_EXPORTS CvMatrix
+{
+public:
+ CvMatrix() : matrix(0) {}
+ CvMatrix( int _rows, int _cols, int _type )
+ { matrix = cvCreateMat( _rows, _cols, _type ); }
+
+ CvMatrix( int _rows, int _cols, int _type, CvMat* hdr,
+ void* _data=0, int _step=CV_AUTOSTEP )
+ { matrix = cvInitMatHeader( hdr, _rows, _cols, _type, _data, _step ); }
+
+ CvMatrix( int rows, int cols, int type, CvMemStorage* storage, bool alloc_data=true );
+
+ CvMatrix( int _rows, int _cols, int _type, void* _data, int _step=CV_AUTOSTEP )
+ { matrix = cvCreateMatHeader( _rows, _cols, _type );
+ cvSetData( matrix, _data, _step ); }
+
+ CvMatrix( CvMat* m )
+ { matrix = m; }
+
+ CvMatrix( const CvMatrix& m )
+ {
+ matrix = m.matrix;
+ addref();
+ }
+
+ CvMatrix( const char* filename, const char* matname=0, int color=-1 ) : matrix(0)
+ { load( filename, matname, color ); }
+
+ CvMatrix( CvFileStorage* fs, const char* mapname, const char* matname ) : matrix(0)
+ { read( fs, mapname, matname ); }
+
+ CvMatrix( CvFileStorage* fs, const char* seqname, int idx ) : matrix(0)
+ { read( fs, seqname, idx ); }
+
+ ~CvMatrix()
+ {
+ release();
+ }
+
+ CvMatrix clone() { return CvMatrix(matrix ? cvCloneMat(matrix) : 0); }
+
+ void set( CvMat* m, bool add_ref )
+ {
+ release();
+ matrix = m;
+ if( add_ref )
+ addref();
+ }
+
+ void create( int _rows, int _cols, int _type )
+ {
+ if( !matrix || !matrix->refcount ||
+ matrix->rows != _rows || matrix->cols != _cols ||
+ CV_MAT_TYPE(matrix->type) != _type )
+ set( cvCreateMat( _rows, _cols, _type ), false );
+ }
+
+ void addref() const
+ {
+ if( matrix )
+ {
+ if( matrix->hdr_refcount )
+ ++matrix->hdr_refcount;
+ else if( matrix->refcount )
+ ++*matrix->refcount;
+ }
+ }
+
+ void release()
+ {
+ if( matrix )
+ {
+ if( matrix->hdr_refcount )
+ {
+ if( --matrix->hdr_refcount == 0 )
+ cvReleaseMat( &matrix );
+ }
+ else if( matrix->refcount )
+ {
+ if( --*matrix->refcount == 0 )
+ cvFree( &matrix->refcount );
+ }
+ matrix = 0;
+ }
+ }
+
+ void clear()
+ {
+ release();
+ }
+
+ bool load( const char* filename, const char* matname=0, int color=-1 );
+ bool read( CvFileStorage* fs, const char* mapname, const char* matname );
+ bool read( CvFileStorage* fs, const char* seqname, int idx );
+ void save( const char* filename, const char* matname, const int* params=0 );
+ void write( CvFileStorage* fs, const char* matname );
+
+ void show( const char* window_name );
+
+ bool is_valid() { return matrix != 0; }
+
+ int rows() const { return matrix ? matrix->rows : 0; }
+ int cols() const { return matrix ? matrix->cols : 0; }
+
+ CvSize size() const
+ {
+ return !matrix ? cvSize(0,0) : cvSize(matrix->rows,matrix->cols);
+ }
+
+ int type() const { return matrix ? CV_MAT_TYPE(matrix->type) : 0; }
+ int depth() const { return matrix ? CV_MAT_DEPTH(matrix->type) : 0; }
+ int channels() const { return matrix ? CV_MAT_CN(matrix->type) : 0; }
+ int pix_size() const { return matrix ? CV_ELEM_SIZE(matrix->type) : 0; }
+
+ uchar* data() { return matrix ? matrix->data.ptr : 0; }
+ const uchar* data() const { return matrix ? matrix->data.ptr : 0; }
+ int step() const { return matrix ? matrix->step : 0; }
+
+ void set_data( void* _data, int _step=CV_AUTOSTEP )
+ { cvSetData( matrix, _data, _step ); }
+
+ uchar* row(int i) { return !matrix ? 0 : matrix->data.ptr + i*matrix->step; }
+ const uchar* row(int i) const
+ { return !matrix ? 0 : matrix->data.ptr + i*matrix->step; }
+
+ operator const CvMat* () const { return matrix; }
+ operator CvMat* () { return matrix; }
+
+ CvMatrix& operator = (const CvMatrix& _m)
+ {
+ _m.addref();
+ release();
+ matrix = _m.matrix;
+ return *this;
+ }
+
+protected:
+ CvMat* matrix;
+};
+
+/****************************************************************************************\
+ * CamShiftTracker *
+ \****************************************************************************************/
+
+class CV_EXPORTS CvCamShiftTracker
+{
+public:
+
+ CvCamShiftTracker();
+ virtual ~CvCamShiftTracker();
+
+ /**** Characteristics of the object that are calculated by track_object method *****/
+ float get_orientation() const // orientation of the object in degrees
+ { return m_box.angle; }
+ float get_length() const // the larger linear size of the object
+ { return m_box.size.height; }
+ float get_width() const // the smaller linear size of the object
+ { return m_box.size.width; }
+ CvPoint2D32f get_center() const // center of the object
+ { return m_box.center; }
+ CvRect get_window() const // bounding rectangle for the object
+ { return m_comp.rect; }
+
+ /*********************** Tracking parameters ************************/
+ int get_threshold() const // thresholding value that applied to back project
+ { return m_threshold; }
+
+ int get_hist_dims( int* dims = 0 ) const // returns number of histogram dimensions and sets
+ { return m_hist ? cvGetDims( m_hist->bins, dims ) : 0; }
+
+ int get_min_ch_val( int channel ) const // get the minimum allowed value of the specified channel
+ { return m_min_ch_val[channel]; }
+
+ int get_max_ch_val( int channel ) const // get the maximum allowed value of the specified channel
+ { return m_max_ch_val[channel]; }
+
+ // set initial object rectangle (must be called before initial calculation of the histogram)
+ bool set_window( CvRect window)
+ { m_comp.rect = window; return true; }
+
+ bool set_threshold( int threshold ) // threshold applied to the histogram bins
+ { m_threshold = threshold; return true; }
+
+ bool set_hist_bin_range( int dim, int min_val, int max_val );
+
+ bool set_hist_dims( int c_dims, int* dims );// set the histogram parameters
+
+ bool set_min_ch_val( int channel, int val ) // set the minimum allowed value of the specified channel
+ { m_min_ch_val[channel] = val; return true; }
+ bool set_max_ch_val( int channel, int val ) // set the maximum allowed value of the specified channel
+ { m_max_ch_val[channel] = val; return true; }
+
+ /************************ The processing methods *********************************/
+ // update object position
+ virtual bool track_object( const IplImage* cur_frame );
+
+ // update object histogram
+ virtual bool update_histogram( const IplImage* cur_frame );
+
+ // reset histogram
+ virtual void reset_histogram();
+
+ /************************ Retrieving internal data *******************************/
+ // get back project image
+ virtual IplImage* get_back_project()
+ { return m_back_project; }
+
+ float query( int* bin ) const
+ { return m_hist ? (float)cvGetRealND(m_hist->bins, bin) : 0.f; }
+
+protected:
+
+ // internal method for color conversion: fills m_color_planes group
+ virtual void color_transform( const IplImage* img );
+
+ CvHistogram* m_hist;
+
+ CvBox2D m_box;
+ CvConnectedComp m_comp;
+
+ float m_hist_ranges_data[CV_MAX_DIM][2];
+ float* m_hist_ranges[CV_MAX_DIM];
+
+ int m_min_ch_val[CV_MAX_DIM];
+ int m_max_ch_val[CV_MAX_DIM];
+ int m_threshold;
+
+ IplImage* m_color_planes[CV_MAX_DIM];
+ IplImage* m_back_project;
+ IplImage* m_temp;
+ IplImage* m_mask;
+};
+
+/****************************************************************************************\
+* Expectation - Maximization *
+\****************************************************************************************/
+struct CV_EXPORTS_W_MAP CvEMParams
+{
+ CvEMParams();
+ CvEMParams( int nclusters, int cov_mat_type=cv::EM::COV_MAT_DIAGONAL,
+ int start_step=cv::EM::START_AUTO_STEP,
+ CvTermCriteria term_crit=cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 100, FLT_EPSILON),
+ const CvMat* probs=0, const CvMat* weights=0, const CvMat* means=0, const CvMat** covs=0 );
+
+ CV_PROP_RW int nclusters;
+ CV_PROP_RW int cov_mat_type;
+ CV_PROP_RW int start_step;
+ const CvMat* probs;
+ const CvMat* weights;
+ const CvMat* means;
+ const CvMat** covs;
+ CV_PROP_RW CvTermCriteria term_crit;
+};
+
+
+class CV_EXPORTS_W CvEM : public CvStatModel
+{
+public:
+ // Type of covariation matrices
+ enum { COV_MAT_SPHERICAL=cv::EM::COV_MAT_SPHERICAL,
+ COV_MAT_DIAGONAL =cv::EM::COV_MAT_DIAGONAL,
+ COV_MAT_GENERIC =cv::EM::COV_MAT_GENERIC };
+
+ // The initial step
+ enum { START_E_STEP=cv::EM::START_E_STEP,
+ START_M_STEP=cv::EM::START_M_STEP,
+ START_AUTO_STEP=cv::EM::START_AUTO_STEP };
+
+ CV_WRAP CvEM();
+ CvEM( const CvMat* samples, const CvMat* sampleIdx=0,
+ CvEMParams params=CvEMParams(), CvMat* labels=0 );
+
+ virtual ~CvEM();
+
+ virtual bool train( const CvMat* samples, const CvMat* sampleIdx=0,
+ CvEMParams params=CvEMParams(), CvMat* labels=0 );
+
+ virtual float predict( const CvMat* sample, CV_OUT CvMat* probs ) const;
+
+ CV_WRAP CvEM( const cv::Mat& samples, const cv::Mat& sampleIdx=cv::Mat(),
+ CvEMParams params=CvEMParams() );
+
+ CV_WRAP virtual bool train( const cv::Mat& samples,
+ const cv::Mat& sampleIdx=cv::Mat(),
+ CvEMParams params=CvEMParams(),
+ CV_OUT cv::Mat* labels=0 );
+
+ CV_WRAP virtual float predict( const cv::Mat& sample, CV_OUT cv::Mat* probs=0 ) const;
+ CV_WRAP virtual double calcLikelihood( const cv::Mat &sample ) const;
+
+ CV_WRAP int getNClusters() const;
+ CV_WRAP cv::Mat getMeans() const;
+ CV_WRAP void getCovs(CV_OUT std::vector<cv::Mat>& covs) const;
+ CV_WRAP cv::Mat getWeights() const;
+ CV_WRAP cv::Mat getProbs() const;
+
+ CV_WRAP inline double getLikelihood() const { return emObj.isTrained() ? logLikelihood : DBL_MAX; }
+
+ CV_WRAP virtual void clear();
+
+ int get_nclusters() const;
+ const CvMat* get_means() const;
+ const CvMat** get_covs() const;
+ const CvMat* get_weights() const;
+ const CvMat* get_probs() const;
+
+ inline double get_log_likelihood() const { return getLikelihood(); }
+
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+ virtual void write( CvFileStorage* fs, const char* name ) const;
+
+protected:
+ void set_mat_hdrs();
+
+ cv::EM emObj;
+ cv::Mat probs;
+ double logLikelihood;
+
+ CvMat meansHdr;
+ std::vector<CvMat> covsHdrs;
+ std::vector<CvMat*> covsPtrs;
+ CvMat weightsHdr;
+ CvMat probsHdr;
+};
+
+namespace cv
+{
+
+typedef CvEMParams EMParams;
+typedef CvEM ExpectationMaximization;
+
+/*!
+ The Patch Generator class
+ */
+class CV_EXPORTS PatchGenerator
+{
+public:
+ PatchGenerator();
+ PatchGenerator(double _backgroundMin, double _backgroundMax,
+ double _noiseRange, bool _randomBlur=true,
+ double _lambdaMin=0.6, double _lambdaMax=1.5,
+ double _thetaMin=-CV_PI, double _thetaMax=CV_PI,
+ double _phiMin=-CV_PI, double _phiMax=CV_PI );
+ void operator()(const Mat& image, Point2f pt, Mat& patch, Size patchSize, RNG& rng) const;
+ void operator()(const Mat& image, const Mat& transform, Mat& patch,
+ Size patchSize, RNG& rng) const;
+ void warpWholeImage(const Mat& image, Mat& matT, Mat& buf,
+ CV_OUT Mat& warped, int border, RNG& rng) const;
+ void generateRandomTransform(Point2f srcCenter, Point2f dstCenter,
+ CV_OUT Mat& transform, RNG& rng,
+ bool inverse=false) const;
+ void setAffineParam(double lambda, double theta, double phi);
+
+ double backgroundMin, backgroundMax;
+ double noiseRange;
+ bool randomBlur;
+ double lambdaMin, lambdaMax;
+ double thetaMin, thetaMax;
+ double phiMin, phiMax;
+};
+
+
+class CV_EXPORTS LDetector
+{
+public:
+ LDetector();
+ LDetector(int _radius, int _threshold, int _nOctaves,
+ int _nViews, double _baseFeatureSize, double _clusteringDistance);
+ void operator()(const Mat& image,
+ CV_OUT vector<KeyPoint>& keypoints,
+ int maxCount=0, bool scaleCoords=true) const;
+ void operator()(const vector<Mat>& pyr,
+ CV_OUT vector<KeyPoint>& keypoints,
+ int maxCount=0, bool scaleCoords=true) const;
+ void getMostStable2D(const Mat& image, CV_OUT vector<KeyPoint>& keypoints,
+ int maxCount, const PatchGenerator& patchGenerator) const;
+ void setVerbose(bool verbose);
+
+ void read(const FileNode& node);
+ void write(FileStorage& fs, const String& name=String()) const;
+
+ int radius;
+ int threshold;
+ int nOctaves;
+ int nViews;
+ bool verbose;
+
+ double baseFeatureSize;
+ double clusteringDistance;
+};
+
+typedef LDetector YAPE;
+
+class CV_EXPORTS FernClassifier
+{
+public:
+ FernClassifier();
+ FernClassifier(const FileNode& node);
+ FernClassifier(const vector<vector<Point2f> >& points,
+ const vector<Mat>& refimgs,
+ const vector<vector<int> >& labels=vector<vector<int> >(),
+ int _nclasses=0, int _patchSize=PATCH_SIZE,
+ int _signatureSize=DEFAULT_SIGNATURE_SIZE,
+ int _nstructs=DEFAULT_STRUCTS,
+ int _structSize=DEFAULT_STRUCT_SIZE,
+ int _nviews=DEFAULT_VIEWS,
+ int _compressionMethod=COMPRESSION_NONE,
+ const PatchGenerator& patchGenerator=PatchGenerator());
+ virtual ~FernClassifier();
+ virtual void read(const FileNode& n);
+ virtual void write(FileStorage& fs, const String& name=String()) const;
+ virtual void trainFromSingleView(const Mat& image,
+ const vector<KeyPoint>& keypoints,
+ int _patchSize=PATCH_SIZE,
+ int _signatureSize=DEFAULT_SIGNATURE_SIZE,
+ int _nstructs=DEFAULT_STRUCTS,
+ int _structSize=DEFAULT_STRUCT_SIZE,
+ int _nviews=DEFAULT_VIEWS,
+ int _compressionMethod=COMPRESSION_NONE,
+ const PatchGenerator& patchGenerator=PatchGenerator());
+ virtual void train(const vector<vector<Point2f> >& points,
+ const vector<Mat>& refimgs,
+ const vector<vector<int> >& labels=vector<vector<int> >(),
+ int _nclasses=0, int _patchSize=PATCH_SIZE,
+ int _signatureSize=DEFAULT_SIGNATURE_SIZE,
+ int _nstructs=DEFAULT_STRUCTS,
+ int _structSize=DEFAULT_STRUCT_SIZE,
+ int _nviews=DEFAULT_VIEWS,
+ int _compressionMethod=COMPRESSION_NONE,
+ const PatchGenerator& patchGenerator=PatchGenerator());
+ virtual int operator()(const Mat& img, Point2f kpt, vector<float>& signature) const;
+ virtual int operator()(const Mat& patch, vector<float>& signature) const;
+ virtual void clear();
+ virtual bool empty() const;
+ void setVerbose(bool verbose);
+
+ int getClassCount() const;
+ int getStructCount() const;
+ int getStructSize() const;
+ int getSignatureSize() const;
+ int getCompressionMethod() const;
+ Size getPatchSize() const;
+
+ struct Feature
+ {
+ uchar x1, y1, x2, y2;
+ Feature() : x1(0), y1(0), x2(0), y2(0) {}
+ Feature(int _x1, int _y1, int _x2, int _y2)
+ : x1((uchar)_x1), y1((uchar)_y1), x2((uchar)_x2), y2((uchar)_y2)
+ {}
+ template<typename _Tp> bool operator ()(const Mat_<_Tp>& patch) const
+ { return patch(y1,x1) > patch(y2, x2); }
+ };
+
+ enum
+ {
+ PATCH_SIZE = 31,
+ DEFAULT_STRUCTS = 50,
+ DEFAULT_STRUCT_SIZE = 9,
+ DEFAULT_VIEWS = 5000,
+ DEFAULT_SIGNATURE_SIZE = 176,
+ COMPRESSION_NONE = 0,
+ COMPRESSION_RANDOM_PROJ = 1,
+ COMPRESSION_PCA = 2,
+ DEFAULT_COMPRESSION_METHOD = COMPRESSION_NONE
+ };
+
+protected:
+ virtual void prepare(int _nclasses, int _patchSize, int _signatureSize,
+ int _nstructs, int _structSize,
+ int _nviews, int _compressionMethod);
+ virtual void finalize(RNG& rng);
+ virtual int getLeaf(int fidx, const Mat& patch) const;
+
+ bool verbose;
+ int nstructs;
+ int structSize;
+ int nclasses;
+ int signatureSize;
+ int compressionMethod;
+ int leavesPerStruct;
+ Size patchSize;
+ vector<Feature> features;
+ vector<int> classCounters;
+ vector<float> posteriors;
+};
+
+
+/****************************************************************************************\
+ * Calonder Classifier *
+ \****************************************************************************************/
+
+struct RTreeNode;
+
+struct CV_EXPORTS BaseKeypoint
+{
+ int x;
+ int y;
+ IplImage* image;
+
+ BaseKeypoint()
+ : x(0), y(0), image(NULL)
+ {}
+
+ BaseKeypoint(int _x, int _y, IplImage* _image)
+ : x(_x), y(_y), image(_image)
+ {}
+};
+
+class CV_EXPORTS RandomizedTree
+{
+public:
+ friend class RTreeClassifier;
+
+ static const uchar PATCH_SIZE = 32;
+ static const int DEFAULT_DEPTH = 9;
+ static const int DEFAULT_VIEWS = 5000;
+ static const size_t DEFAULT_REDUCED_NUM_DIM = 176;
+ static float GET_LOWER_QUANT_PERC() { return .03f; }
+ static float GET_UPPER_QUANT_PERC() { return .92f; }
+
+ RandomizedTree();
+ ~RandomizedTree();
+
+ void train(vector<BaseKeypoint> const& base_set, RNG &rng,
+ int depth, int views, size_t reduced_num_dim, int num_quant_bits);
+ void train(vector<BaseKeypoint> const& base_set, RNG &rng,
+ PatchGenerator &make_patch, int depth, int views, size_t reduced_num_dim,
+ int num_quant_bits);
+
+ // following two funcs are EXPERIMENTAL (do not use unless you know exactly what you do)
+ static void quantizeVector(float *vec, int dim, int N, float bnds[2], int clamp_mode=0);
+ static void quantizeVector(float *src, int dim, int N, float bnds[2], uchar *dst);
+
+ // patch_data must be a 32x32 array (no row padding)
+ float* getPosterior(uchar* patch_data);
+ const float* getPosterior(uchar* patch_data) const;
+ uchar* getPosterior2(uchar* patch_data);
+ const uchar* getPosterior2(uchar* patch_data) const;
+
+ void read(const char* file_name, int num_quant_bits);
+ void read(std::istream &is, int num_quant_bits);
+ void write(const char* file_name) const;
+ void write(std::ostream &os) const;
+
+ int classes() { return classes_; }
+ int depth() { return depth_; }
+
+ //void setKeepFloatPosteriors(bool b) { keep_float_posteriors_ = b; }
+ void discardFloatPosteriors() { freePosteriors(1); }
+
+ inline void applyQuantization(int num_quant_bits) { makePosteriors2(num_quant_bits); }
+
+ // debug
+ void savePosteriors(std::string url, bool append=false);
+ void savePosteriors2(std::string url, bool append=false);
+
+private:
+ int classes_;
+ int depth_;
+ int num_leaves_;
+ vector<RTreeNode> nodes_;
+ float **posteriors_; // 16-bytes aligned posteriors
+ uchar **posteriors2_; // 16-bytes aligned posteriors
+ vector<int> leaf_counts_;
+
+ void createNodes(int num_nodes, RNG &rng);
+ void allocPosteriorsAligned(int num_leaves, int num_classes);
+ void freePosteriors(int which); // which: 1=posteriors_, 2=posteriors2_, 3=both
+ void init(int classes, int depth, RNG &rng);
+ void addExample(int class_id, uchar* patch_data);
+ void finalize(size_t reduced_num_dim, int num_quant_bits);
+ int getIndex(uchar* patch_data) const;
+ inline float* getPosteriorByIndex(int index);
+ inline const float* getPosteriorByIndex(int index) const;
+ inline uchar* getPosteriorByIndex2(int index);
+ inline const uchar* getPosteriorByIndex2(int index) const;
+ //void makeRandomMeasMatrix(float *cs_phi, PHI_DISTR_TYPE dt, size_t reduced_num_dim);
+ void convertPosteriorsToChar();
+ void makePosteriors2(int num_quant_bits);
+ void compressLeaves(size_t reduced_num_dim);
+ void estimateQuantPercForPosteriors(float perc[2]);
+};
+
+
+inline uchar* getData(IplImage* image)
+{
+ return reinterpret_cast<uchar*>(image->imageData);
+}
+
+inline float* RandomizedTree::getPosteriorByIndex(int index)
+{
+ return const_cast<float*>(const_cast<const RandomizedTree*>(this)->getPosteriorByIndex(index));
+}
+
+inline const float* RandomizedTree::getPosteriorByIndex(int index) const
+{
+ return posteriors_[index];
+}
+
+inline uchar* RandomizedTree::getPosteriorByIndex2(int index)
+{
+ return const_cast<uchar*>(const_cast<const RandomizedTree*>(this)->getPosteriorByIndex2(index));
+}
+
+inline const uchar* RandomizedTree::getPosteriorByIndex2(int index) const
+{
+ return posteriors2_[index];
+}
+
+struct CV_EXPORTS RTreeNode
+{
+ short offset1, offset2;
+
+ RTreeNode() {}
+ RTreeNode(uchar x1, uchar y1, uchar x2, uchar y2)
+ : offset1(y1*RandomizedTree::PATCH_SIZE + x1),
+ offset2(y2*RandomizedTree::PATCH_SIZE + x2)
+ {}
+
+ //! Left child on 0, right child on 1
+ inline bool operator() (uchar* patch_data) const
+ {
+ return patch_data[offset1] > patch_data[offset2];
+ }
+};
+
+class CV_EXPORTS RTreeClassifier
+{
+public:
+ static const int DEFAULT_TREES = 48;
+ static const size_t DEFAULT_NUM_QUANT_BITS = 4;
+
+ RTreeClassifier();
+ void train(vector<BaseKeypoint> const& base_set,
+ RNG &rng,
+ int num_trees = RTreeClassifier::DEFAULT_TREES,
+ int depth = RandomizedTree::DEFAULT_DEPTH,
+ int views = RandomizedTree::DEFAULT_VIEWS,
+ size_t reduced_num_dim = RandomizedTree::DEFAULT_REDUCED_NUM_DIM,
+ int num_quant_bits = DEFAULT_NUM_QUANT_BITS);
+ void train(vector<BaseKeypoint> const& base_set,
+ RNG &rng,
+ PatchGenerator &make_patch,
+ int num_trees = RTreeClassifier::DEFAULT_TREES,
+ int depth = RandomizedTree::DEFAULT_DEPTH,
+ int views = RandomizedTree::DEFAULT_VIEWS,
+ size_t reduced_num_dim = RandomizedTree::DEFAULT_REDUCED_NUM_DIM,
+ int num_quant_bits = DEFAULT_NUM_QUANT_BITS);
+
+ // sig must point to a memory block of at least classes()*sizeof(float|uchar) bytes
+ void getSignature(IplImage *patch, uchar *sig) const;
+ void getSignature(IplImage *patch, float *sig) const;
+ void getSparseSignature(IplImage *patch, float *sig, float thresh) const;
+ // TODO: deprecated in favor of getSignature overload, remove
+ void getFloatSignature(IplImage *patch, float *sig) const { getSignature(patch, sig); }
+
+ static int countNonZeroElements(float *vec, int n, double tol=1e-10);
+ static inline void safeSignatureAlloc(uchar **sig, int num_sig=1, int sig_len=176);
+ static inline uchar* safeSignatureAlloc(int num_sig=1, int sig_len=176);
+
+ inline int classes() const { return classes_; }
+ inline int original_num_classes() const { return original_num_classes_; }
+
+ void setQuantization(int num_quant_bits);
+ void discardFloatPosteriors();
+
+ void read(const char* file_name);
+ void read(std::istream &is);
+ void write(const char* file_name) const;
+ void write(std::ostream &os) const;
+
+ // experimental and debug
+ void saveAllFloatPosteriors(std::string file_url);
+ void saveAllBytePosteriors(std::string file_url);
+ void setFloatPosteriorsFromTextfile_176(std::string url);
+ float countZeroElements();
+
+ vector<RandomizedTree> trees_;
+
+private:
+ int classes_;
+ int num_quant_bits_;
+ mutable uchar **posteriors_;
+ mutable unsigned short *ptemp_;
+ int original_num_classes_;
+ bool keep_floats_;
+};
+
+/****************************************************************************************\
+* One-Way Descriptor *
+\****************************************************************************************/
+
+// CvAffinePose: defines a parameterized affine transformation of an image patch.
+// An image patch is rotated on angle phi (in degrees), then scaled lambda1 times
+// along horizontal and lambda2 times along vertical direction, and then rotated again
+// on angle (theta - phi).
+class CV_EXPORTS CvAffinePose
+{
+public:
+ float phi;
+ float theta;
+ float lambda1;
+ float lambda2;
+};
+
+class CV_EXPORTS OneWayDescriptor
+{
+public:
+ OneWayDescriptor();
+ ~OneWayDescriptor();
+
+ // allocates memory for given descriptor parameters
+ void Allocate(int pose_count, CvSize size, int nChannels);
+
+ // GenerateSamples: generates affine transformed patches with averaging them over small transformation variations.
+ // If external poses and transforms were specified, uses them instead of generating random ones
+ // - pose_count: the number of poses to be generated
+ // - frontal: the input patch (can be a roi in a larger image)
+ // - norm: if nonzero, normalizes the output patch so that the sum of pixel intensities is 1
+ void GenerateSamples(int pose_count, IplImage* frontal, int norm = 0);
+
+ // GenerateSamplesFast: generates affine transformed patches with averaging them over small transformation variations.
+ // Uses precalculated transformed pca components.
+ // - frontal: the input patch (can be a roi in a larger image)
+ // - pca_hr_avg: pca average vector
+ // - pca_hr_eigenvectors: pca eigenvectors
+ // - pca_descriptors: an array of precomputed descriptors of pca components containing their affine transformations
+ // pca_descriptors[0] corresponds to the average, pca_descriptors[1]-pca_descriptors[pca_dim] correspond to eigenvectors
+ void GenerateSamplesFast(IplImage* frontal, CvMat* pca_hr_avg,
+ CvMat* pca_hr_eigenvectors, OneWayDescriptor* pca_descriptors);
+
+ // sets the poses and corresponding transforms
+ void SetTransforms(CvAffinePose* poses, CvMat** transforms);
+
+ // Initialize: builds a descriptor.
+ // - pose_count: the number of poses to build. If poses were set externally, uses them rather than generating random ones
+ // - frontal: input patch. Can be a roi in a larger image
+ // - feature_name: the feature name to be associated with the descriptor
+ // - norm: if 1, the affine transformed patches are normalized so that their sum is 1
+ void Initialize(int pose_count, IplImage* frontal, const char* feature_name = 0, int norm = 0);
+
+ // InitializeFast: builds a descriptor using precomputed descriptors of pca components
+ // - pose_count: the number of poses to build
+ // - frontal: input patch. Can be a roi in a larger image
+ // - feature_name: the feature name to be associated with the descriptor
+ // - pca_hr_avg: average vector for PCA
+ // - pca_hr_eigenvectors: PCA eigenvectors (one vector per row)
+ // - pca_descriptors: precomputed descriptors of PCA components, the first descriptor for the average vector
+ // followed by the descriptors for eigenvectors
+ void InitializeFast(int pose_count, IplImage* frontal, const char* feature_name,
+ CvMat* pca_hr_avg, CvMat* pca_hr_eigenvectors, OneWayDescriptor* pca_descriptors);
+
+ // ProjectPCASample: unwarps an image patch into a vector and projects it into PCA space
+ // - patch: input image patch
+ // - avg: PCA average vector
+ // - eigenvectors: PCA eigenvectors, one per row
+ // - pca_coeffs: output PCA coefficients
+ void ProjectPCASample(IplImage* patch, CvMat* avg, CvMat* eigenvectors, CvMat* pca_coeffs) const;
+
+ // InitializePCACoeffs: projects all warped patches into PCA space
+ // - avg: PCA average vector
+ // - eigenvectors: PCA eigenvectors, one per row
+ void InitializePCACoeffs(CvMat* avg, CvMat* eigenvectors);
+
+ // EstimatePose: finds the closest match between an input patch and a set of patches with different poses
+ // - patch: input image patch
+ // - pose_idx: the output index of the closest pose
+ // - distance: the distance to the closest pose (L2 distance)
+ void EstimatePose(IplImage* patch, int& pose_idx, float& distance) const;
+
+ // EstimatePosePCA: finds the closest match between an input patch and a set of patches with different poses.
+ // The distance between patches is computed in PCA space
+ // - patch: input image patch
+ // - pose_idx: the output index of the closest pose
+ // - distance: distance to the closest pose (L2 distance in PCA space)
+ // - avg: PCA average vector. If 0, matching without PCA is used
+ // - eigenvectors: PCA eigenvectors, one per row
+ void EstimatePosePCA(CvArr* patch, int& pose_idx, float& distance, CvMat* avg, CvMat* eigenvalues) const;
+
+ // GetPatchSize: returns the size of each image patch after warping (2 times smaller than the input patch)
+ CvSize GetPatchSize() const
+ {
+ return m_patch_size;
+ }
+
+ // GetInputPatchSize: returns the required size of the patch that the descriptor is built from
+ // (2 time larger than the patch after warping)
+ CvSize GetInputPatchSize() const
+ {
+ return cvSize(m_patch_size.width*2, m_patch_size.height*2);
+ }
+
+ // GetPatch: returns a patch corresponding to specified pose index
+ // - index: pose index
+ // - return value: the patch corresponding to specified pose index
+ IplImage* GetPatch(int index);
+
+ // GetPose: returns a pose corresponding to specified pose index
+ // - index: pose index
+ // - return value: the pose corresponding to specified pose index
+ CvAffinePose GetPose(int index) const;
+
+ // Save: saves all patches with different poses to a specified path
+ void Save(const char* path);
+
+ // ReadByName: reads a descriptor from a file storage
+ // - fs: file storage
+ // - parent: parent node
+ // - name: node name
+ // - return value: 1 if succeeded, 0 otherwise
+ int ReadByName(CvFileStorage* fs, CvFileNode* parent, const char* name);
+
+ // ReadByName: reads a descriptor from a file node
+ // - parent: parent node
+ // - name: node name
+ // - return value: 1 if succeeded, 0 otherwise
+ int ReadByName(const FileNode &parent, const char* name);
+
+ // Write: writes a descriptor into a file storage
+ // - fs: file storage
+ // - name: node name
+ void Write(CvFileStorage* fs, const char* name);
+
+ // GetFeatureName: returns a name corresponding to a feature
+ const char* GetFeatureName() const;
+
+ // GetCenter: returns the center of the feature
+ CvPoint GetCenter() const;
+
+ void SetPCADimHigh(int pca_dim_high) {m_pca_dim_high = pca_dim_high;};
+ void SetPCADimLow(int pca_dim_low) {m_pca_dim_low = pca_dim_low;};
+
+ int GetPCADimLow() const;
+ int GetPCADimHigh() const;
+
+ CvMat** GetPCACoeffs() const {return m_pca_coeffs;}
+
+protected:
+ int m_pose_count; // the number of poses
+ CvSize m_patch_size; // size of each image
+ IplImage** m_samples; // an array of length m_pose_count containing the patch in different poses
+ IplImage* m_input_patch;
+ IplImage* m_train_patch;
+ CvMat** m_pca_coeffs; // an array of length m_pose_count containing pca decomposition of the patch in different poses
+ CvAffinePose* m_affine_poses; // an array of poses
+ CvMat** m_transforms; // an array of affine transforms corresponding to poses
+
+ string m_feature_name; // the name of the feature associated with the descriptor
+ CvPoint m_center; // the coordinates of the feature (the center of the input image ROI)
+
+ int m_pca_dim_high; // the number of descriptor pca components to use for generating affine poses
+ int m_pca_dim_low; // the number of pca components to use for comparison
+};
+
+
+// OneWayDescriptorBase: encapsulates functionality for training/loading a set of one way descriptors
+// and finding the nearest closest descriptor to an input feature
+class CV_EXPORTS OneWayDescriptorBase
+{
+public:
+
+ // creates an instance of OneWayDescriptor from a set of training files
+ // - patch_size: size of the input (large) patch
+ // - pose_count: the number of poses to generate for each descriptor
+ // - train_path: path to training files
+ // - pca_config: the name of the file that contains PCA for small patches (2 times smaller
+ // than patch_size each dimension
+ // - pca_hr_config: the name of the file that contains PCA for large patches (of patch_size size)
+ // - pca_desc_config: the name of the file that contains descriptors of PCA components
+ OneWayDescriptorBase(CvSize patch_size, int pose_count, const char* train_path = 0, const char* pca_config = 0,
+ const char* pca_hr_config = 0, const char* pca_desc_config = 0, int pyr_levels = 1,
+ int pca_dim_high = 100, int pca_dim_low = 100);
+
+ OneWayDescriptorBase(CvSize patch_size, int pose_count, const string &pca_filename, const string &train_path = string(), const string &images_list = string(),
+ float _scale_min = 0.7f, float _scale_max=1.5f, float _scale_step=1.2f, int pyr_levels = 1,
+ int pca_dim_high = 100, int pca_dim_low = 100);
+
+
+ virtual ~OneWayDescriptorBase();
+ void clear ();
+
+
+ // Allocate: allocates memory for a given number of descriptors
+ void Allocate(int train_feature_count);
+
+ // AllocatePCADescriptors: allocates memory for pca descriptors
+ void AllocatePCADescriptors();
+
+ // returns patch size
+ CvSize GetPatchSize() const {return m_patch_size;};
+ // returns the number of poses for each descriptor
+ int GetPoseCount() const {return m_pose_count;};
+
+ // returns the number of pyramid levels
+ int GetPyrLevels() const {return m_pyr_levels;};
+
+ // returns the number of descriptors
+ int GetDescriptorCount() const {return m_train_feature_count;};
+
+ // CreateDescriptorsFromImage: creates descriptors for each of the input features
+ // - src: input image
+ // - features: input features
+ // - pyr_levels: the number of pyramid levels
+ void CreateDescriptorsFromImage(IplImage* src, const vector<KeyPoint>& features);
+
+ // CreatePCADescriptors: generates descriptors for PCA components, needed for fast generation of feature descriptors
+ void CreatePCADescriptors();
+
+ // returns a feature descriptor by feature index
+ const OneWayDescriptor* GetDescriptor(int desc_idx) const {return &m_descriptors[desc_idx];};
+
+ // FindDescriptor: finds the closest descriptor
+ // - patch: input image patch
+ // - desc_idx: output index of the closest descriptor to the input patch
+ // - pose_idx: output index of the closest pose of the closest descriptor to the input patch
+ // - distance: distance from the input patch to the closest feature pose
+ // - _scales: scales of the input patch for each descriptor
+ // - scale_ranges: input scales variation (float[2])
+ void FindDescriptor(IplImage* patch, int& desc_idx, int& pose_idx, float& distance, float* _scale = 0, float* scale_ranges = 0) const;
+
+ // - patch: input image patch
+ // - n: number of the closest indexes
+ // - desc_idxs: output indexes of the closest descriptor to the input patch (n)
+ // - pose_idx: output indexes of the closest pose of the closest descriptor to the input patch (n)
+ // - distances: distance from the input patch to the closest feature pose (n)
+ // - _scales: scales of the input patch
+ // - scale_ranges: input scales variation (float[2])
+ void FindDescriptor(IplImage* patch, int n, vector<int>& desc_idxs, vector<int>& pose_idxs,
+ vector<float>& distances, vector<float>& _scales, float* scale_ranges = 0) const;
+
+ // FindDescriptor: finds the closest descriptor
+ // - src: input image
+ // - pt: center of the feature
+ // - desc_idx: output index of the closest descriptor to the input patch
+ // - pose_idx: output index of the closest pose of the closest descriptor to the input patch
+ // - distance: distance from the input patch to the closest feature pose
+ void FindDescriptor(IplImage* src, cv::Point2f pt, int& desc_idx, int& pose_idx, float& distance) const;
+
+ // InitializePoses: generates random poses
+ void InitializePoses();
+
+ // InitializeTransformsFromPoses: generates 2x3 affine matrices from poses (initializes m_transforms)
+ void InitializeTransformsFromPoses();
+
+ // InitializePoseTransforms: subsequently calls InitializePoses and InitializeTransformsFromPoses
+ void InitializePoseTransforms();
+
+ // InitializeDescriptor: initializes a descriptor
+ // - desc_idx: descriptor index
+ // - train_image: image patch (ROI is supported)
+ // - feature_label: feature textual label
+ void InitializeDescriptor(int desc_idx, IplImage* train_image, const char* feature_label);
+
+ void InitializeDescriptor(int desc_idx, IplImage* train_image, const KeyPoint& keypoint, const char* feature_label);
+
+ // InitializeDescriptors: load features from an image and create descriptors for each of them
+ void InitializeDescriptors(IplImage* train_image, const vector<KeyPoint>& features,
+ const char* feature_label = "", int desc_start_idx = 0);
+
+ // Write: writes this object to a file storage
+ // - fs: output filestorage
+ void Write (FileStorage &fs) const;
+
+ // Read: reads OneWayDescriptorBase object from a file node
+ // - fn: input file node
+ void Read (const FileNode &fn);
+
+ // LoadPCADescriptors: loads PCA descriptors from a file
+ // - filename: input filename
+ int LoadPCADescriptors(const char* filename);
+
+ // LoadPCADescriptors: loads PCA descriptors from a file node
+ // - fn: input file node
+ int LoadPCADescriptors(const FileNode &fn);
+
+ // SavePCADescriptors: saves PCA descriptors to a file
+ // - filename: output filename
+ void SavePCADescriptors(const char* filename);
+
+ // SavePCADescriptors: saves PCA descriptors to a file storage
+ // - fs: output file storage
+ void SavePCADescriptors(CvFileStorage* fs) const;
+
+ // GeneratePCA: calculate and save PCA components and descriptors
+ // - img_path: path to training PCA images directory
+ // - images_list: filename with filenames of training PCA images
+ void GeneratePCA(const char* img_path, const char* images_list, int pose_count=500);
+
+ // SetPCAHigh: sets the high resolution pca matrices (copied to internal structures)
+ void SetPCAHigh(CvMat* avg, CvMat* eigenvectors);
+
+ // SetPCALow: sets the low resolution pca matrices (copied to internal structures)
+ void SetPCALow(CvMat* avg, CvMat* eigenvectors);
+
+ int GetLowPCA(CvMat** avg, CvMat** eigenvectors)
+ {
+ *avg = m_pca_avg;
+ *eigenvectors = m_pca_eigenvectors;
+ return m_pca_dim_low;
+ };
+
+ int GetPCADimLow() const {return m_pca_dim_low;};
+ int GetPCADimHigh() const {return m_pca_dim_high;};
+
+ void ConvertDescriptorsArrayToTree(); // Converting pca_descriptors array to KD tree
+
+ // GetPCAFilename: get default PCA filename
+ static string GetPCAFilename () { return "pca.yml"; }
+
+ virtual bool empty() const { return m_train_feature_count <= 0 ? true : false; }
+
+protected:
+ CvSize m_patch_size; // patch size
+ int m_pose_count; // the number of poses for each descriptor
+ int m_train_feature_count; // the number of the training features
+ OneWayDescriptor* m_descriptors; // array of train feature descriptors
+ CvMat* m_pca_avg; // PCA average Vector for small patches
+ CvMat* m_pca_eigenvectors; // PCA eigenvectors for small patches
+ CvMat* m_pca_hr_avg; // PCA average Vector for large patches
+ CvMat* m_pca_hr_eigenvectors; // PCA eigenvectors for large patches
+ OneWayDescriptor* m_pca_descriptors; // an array of PCA descriptors
+
+ cv::flann::Index* m_pca_descriptors_tree;
+ CvMat* m_pca_descriptors_matrix;
+
+ CvAffinePose* m_poses; // array of poses
+ CvMat** m_transforms; // array of affine transformations corresponding to poses
+
+ int m_pca_dim_high;
+ int m_pca_dim_low;
+
+ int m_pyr_levels;
+ float scale_min;
+ float scale_max;
+ float scale_step;
+
+ // SavePCAall: saves PCA components and descriptors to a file storage
+ // - fs: output file storage
+ void SavePCAall (FileStorage &fs) const;
+
+ // LoadPCAall: loads PCA components and descriptors from a file node
+ // - fn: input file node
+ void LoadPCAall (const FileNode &fn);
+};
+
+class CV_EXPORTS OneWayDescriptorObject : public OneWayDescriptorBase
+{
+public:
+ // creates an instance of OneWayDescriptorObject from a set of training files
+ // - patch_size: size of the input (large) patch
+ // - pose_count: the number of poses to generate for each descriptor
+ // - train_path: path to training files
+ // - pca_config: the name of the file that contains PCA for small patches (2 times smaller
+ // than patch_size each dimension
+ // - pca_hr_config: the name of the file that contains PCA for large patches (of patch_size size)
+ // - pca_desc_config: the name of the file that contains descriptors of PCA components
+ OneWayDescriptorObject(CvSize patch_size, int pose_count, const char* train_path, const char* pca_config,
+ const char* pca_hr_config = 0, const char* pca_desc_config = 0, int pyr_levels = 1);
+
+ OneWayDescriptorObject(CvSize patch_size, int pose_count, const string &pca_filename,
+ const string &train_path = string (), const string &images_list = string (),
+ float _scale_min = 0.7f, float _scale_max=1.5f, float _scale_step=1.2f, int pyr_levels = 1);
+
+
+ virtual ~OneWayDescriptorObject();
+
+ // Allocate: allocates memory for a given number of features
+ // - train_feature_count: the total number of features
+ // - object_feature_count: the number of features extracted from the object
+ void Allocate(int train_feature_count, int object_feature_count);
+
+
+ void SetLabeledFeatures(const vector<KeyPoint>& features) {m_train_features = features;};
+ vector<KeyPoint>& GetLabeledFeatures() {return m_train_features;};
+ const vector<KeyPoint>& GetLabeledFeatures() const {return m_train_features;};
+ vector<KeyPoint> _GetLabeledFeatures() const;
+
+ // IsDescriptorObject: returns 1 if descriptor with specified index is positive, otherwise 0
+ int IsDescriptorObject(int desc_idx) const;
+
+ // MatchPointToPart: returns the part number of a feature if it matches one of the object parts, otherwise -1
+ int MatchPointToPart(CvPoint pt) const;
+
+ // GetDescriptorPart: returns the part number of the feature corresponding to a specified descriptor
+ // - desc_idx: descriptor index
+ int GetDescriptorPart(int desc_idx) const;
+
+
+ void InitializeObjectDescriptors(IplImage* train_image, const vector<KeyPoint>& features,
+ const char* feature_label, int desc_start_idx = 0, float scale = 1.0f,
+ int is_background = 0);
+
+ // GetObjectFeatureCount: returns the number of object features
+ int GetObjectFeatureCount() const {return m_object_feature_count;};
+
+protected:
+ int* m_part_id; // contains part id for each of object descriptors
+ vector<KeyPoint> m_train_features; // train features
+ int m_object_feature_count; // the number of the positive features
+
+};
+
+
+/*
+ * OneWayDescriptorMatcher
+ */
+class OneWayDescriptorMatcher;
+typedef OneWayDescriptorMatcher OneWayDescriptorMatch;
+
+class CV_EXPORTS OneWayDescriptorMatcher : public GenericDescriptorMatcher
+{
+public:
+ class CV_EXPORTS Params
+ {
+ public:
+ static const int POSE_COUNT = 500;
+ static const int PATCH_WIDTH = 24;
+ static const int PATCH_HEIGHT = 24;
+ static float GET_MIN_SCALE() { return 0.7f; }
+ static float GET_MAX_SCALE() { return 1.5f; }
+ static float GET_STEP_SCALE() { return 1.2f; }
+
+ Params( int poseCount = POSE_COUNT,
+ Size patchSize = Size(PATCH_WIDTH, PATCH_HEIGHT),
+ string pcaFilename = string(),
+ string trainPath = string(), string trainImagesList = string(),
+ float minScale = GET_MIN_SCALE(), float maxScale = GET_MAX_SCALE(),
+ float stepScale = GET_STEP_SCALE() );
+
+ int poseCount;
+ Size patchSize;
+ string pcaFilename;
+ string trainPath;
+ string trainImagesList;
+
+ float minScale, maxScale, stepScale;
+ };
+
+ OneWayDescriptorMatcher( const Params& params=Params() );
+ virtual ~OneWayDescriptorMatcher();
+
+ void initialize( const Params& params, const Ptr<OneWayDescriptorBase>& base=Ptr<OneWayDescriptorBase>() );
+
+ // Clears keypoints storing in collection and OneWayDescriptorBase
+ virtual void clear();
+
+ virtual void train();
+
+ virtual bool isMaskSupported();
+
+ virtual void read( const FileNode &fn );
+ virtual void write( FileStorage& fs ) const;
+
+ virtual bool empty() const;
+
+ virtual Ptr<GenericDescriptorMatcher> clone( bool emptyTrainData=false ) const;
+
+protected:
+ // Matches a set of keypoints from a single image of the training set. A rectangle with a center in a keypoint
+ // and size (patch_width/2*scale, patch_height/2*scale) is cropped from the source image for each
+ // keypoint. scale is iterated from DescriptorOneWayParams::min_scale to DescriptorOneWayParams::max_scale.
+ // The minimum distance to each training patch with all its affine poses is found over all scales.
+ // The class ID of a match is returned for each keypoint. The distance is calculated over PCA components
+ // loaded with DescriptorOneWay::Initialize, kd tree is used for finding minimum distances.
+ virtual void knnMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks, bool compactResult );
+ virtual void radiusMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks, bool compactResult );
+
+ Ptr<OneWayDescriptorBase> base;
+ Params params;
+ int prevTrainCount;
+};
+
+/*
+ * FernDescriptorMatcher
+ */
+class FernDescriptorMatcher;
+typedef FernDescriptorMatcher FernDescriptorMatch;
+
+class CV_EXPORTS FernDescriptorMatcher : public GenericDescriptorMatcher
+{
+public:
+ class CV_EXPORTS Params
+ {
+ public:
+ Params( int nclasses=0,
+ int patchSize=FernClassifier::PATCH_SIZE,
+ int signatureSize=FernClassifier::DEFAULT_SIGNATURE_SIZE,
+ int nstructs=FernClassifier::DEFAULT_STRUCTS,
+ int structSize=FernClassifier::DEFAULT_STRUCT_SIZE,
+ int nviews=FernClassifier::DEFAULT_VIEWS,
+ int compressionMethod=FernClassifier::COMPRESSION_NONE,
+ const PatchGenerator& patchGenerator=PatchGenerator() );
+
+ Params( const string& filename );
+
+ int nclasses;
+ int patchSize;
+ int signatureSize;
+ int nstructs;
+ int structSize;
+ int nviews;
+ int compressionMethod;
+ PatchGenerator patchGenerator;
+
+ string filename;
+ };
+
+ FernDescriptorMatcher( const Params& params=Params() );
+ virtual ~FernDescriptorMatcher();
+
+ virtual void clear();
+
+ virtual void train();
+
+ virtual bool isMaskSupported();
+
+ virtual void read( const FileNode &fn );
+ virtual void write( FileStorage& fs ) const;
+ virtual bool empty() const;
+
+ virtual Ptr<GenericDescriptorMatcher> clone( bool emptyTrainData=false ) const;
+
+protected:
+ virtual void knnMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, int k,
+ const vector<Mat>& masks, bool compactResult );
+ virtual void radiusMatchImpl( const Mat& queryImage, vector<KeyPoint>& queryKeypoints,
+ vector<vector<DMatch> >& matches, float maxDistance,
+ const vector<Mat>& masks, bool compactResult );
+
+ void trainFernClassifier();
+ void calcBestProbAndMatchIdx( const Mat& image, const Point2f& pt,
+ float& bestProb, int& bestMatchIdx, vector<float>& signature );
+ Ptr<FernClassifier> classifier;
+ Params params;
+ int prevTrainCount;
+};
+
+
+/*
+ * CalonderDescriptorExtractor
+ */
+template<typename T>
+class CV_EXPORTS CalonderDescriptorExtractor : public DescriptorExtractor
+{
+public:
+ CalonderDescriptorExtractor( const string& classifierFile );
+
+ virtual void read( const FileNode &fn );
+ virtual void write( FileStorage &fs ) const;
+
+ virtual int descriptorSize() const { return classifier_.classes(); }
+ virtual int descriptorType() const { return DataType<T>::type; }
+
+ virtual bool empty() const;
+
+protected:
+ virtual void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+
+ RTreeClassifier classifier_;
+ static const int BORDER_SIZE = 16;
+};
+
+template<typename T>
+CalonderDescriptorExtractor<T>::CalonderDescriptorExtractor(const std::string& classifier_file)
+{
+ classifier_.read( classifier_file.c_str() );
+}
+
+template<typename T>
+void CalonderDescriptorExtractor<T>::computeImpl( const Mat& image,
+ vector<KeyPoint>& keypoints,
+ Mat& descriptors) const
+{
+ // Cannot compute descriptors for keypoints on the image border.
+ KeyPointsFilter::runByImageBorder(keypoints, image.size(), BORDER_SIZE);
+
+ /// @todo Check 16-byte aligned
+ descriptors.create((int)keypoints.size(), classifier_.classes(), cv::DataType<T>::type);
+
+ int patchSize = RandomizedTree::PATCH_SIZE;
+ int offset = patchSize / 2;
+ for (size_t i = 0; i < keypoints.size(); ++i)
+ {
+ cv::Point2f pt = keypoints[i].pt;
+ IplImage ipl = image( Rect((int)(pt.x - offset), (int)(pt.y - offset), patchSize, patchSize) );
+ classifier_.getSignature( &ipl, descriptors.ptr<T>((int)i));
+ }
+}
+
+template<typename T>
+void CalonderDescriptorExtractor<T>::read( const FileNode& )
+{}
+
+template<typename T>
+void CalonderDescriptorExtractor<T>::write( FileStorage& ) const
+{}
+
+template<typename T>
+bool CalonderDescriptorExtractor<T>::empty() const
+{
+ return classifier_.trees_.empty();
+}
+
+
+////////////////////// Brute Force Matcher //////////////////////////
+
+template<class Distance>
+class CV_EXPORTS BruteForceMatcher : public BFMatcher
+{
+public:
+ BruteForceMatcher( Distance d = Distance() ) : BFMatcher(Distance::normType, false) {(void)d;}
+ virtual ~BruteForceMatcher() {}
+};
+
+
+/****************************************************************************************\
+* Planar Object Detection *
+\****************************************************************************************/
+
+class CV_EXPORTS PlanarObjectDetector
+{
+public:
+ PlanarObjectDetector();
+ PlanarObjectDetector(const FileNode& node);
+ PlanarObjectDetector(const vector<Mat>& pyr, int _npoints=300,
+ int _patchSize=FernClassifier::PATCH_SIZE,
+ int _nstructs=FernClassifier::DEFAULT_STRUCTS,
+ int _structSize=FernClassifier::DEFAULT_STRUCT_SIZE,
+ int _nviews=FernClassifier::DEFAULT_VIEWS,
+ const LDetector& detector=LDetector(),
+ const PatchGenerator& patchGenerator=PatchGenerator());
+ virtual ~PlanarObjectDetector();
+ virtual void train(const vector<Mat>& pyr, int _npoints=300,
+ int _patchSize=FernClassifier::PATCH_SIZE,
+ int _nstructs=FernClassifier::DEFAULT_STRUCTS,
+ int _structSize=FernClassifier::DEFAULT_STRUCT_SIZE,
+ int _nviews=FernClassifier::DEFAULT_VIEWS,
+ const LDetector& detector=LDetector(),
+ const PatchGenerator& patchGenerator=PatchGenerator());
+ virtual void train(const vector<Mat>& pyr, const vector<KeyPoint>& keypoints,
+ int _patchSize=FernClassifier::PATCH_SIZE,
+ int _nstructs=FernClassifier::DEFAULT_STRUCTS,
+ int _structSize=FernClassifier::DEFAULT_STRUCT_SIZE,
+ int _nviews=FernClassifier::DEFAULT_VIEWS,
+ const LDetector& detector=LDetector(),
+ const PatchGenerator& patchGenerator=PatchGenerator());
+ Rect getModelROI() const;
+ vector<KeyPoint> getModelPoints() const;
+ const LDetector& getDetector() const;
+ const FernClassifier& getClassifier() const;
+ void setVerbose(bool verbose);
+
+ void read(const FileNode& node);
+ void write(FileStorage& fs, const String& name=String()) const;
+ bool operator()(const Mat& image, CV_OUT Mat& H, CV_OUT vector<Point2f>& corners) const;
+ bool operator()(const vector<Mat>& pyr, const vector<KeyPoint>& keypoints,
+ CV_OUT Mat& H, CV_OUT vector<Point2f>& corners,
+ CV_OUT vector<int>* pairs=0) const;
+
+protected:
+ bool verbose;
+ Rect modelROI;
+ vector<KeyPoint> modelPoints;
+ LDetector ldetector;
+ FernClassifier fernClassifier;
+};
+
+}
+
+// 2009-01-12, Xavier Delacour <xavier.delacour@gmail.com>
+
+struct lsh_hash {
+ int h1, h2;
+};
+
+struct CvLSHOperations
+{
+ virtual ~CvLSHOperations() {}
+
+ virtual int vector_add(const void* data) = 0;
+ virtual void vector_remove(int i) = 0;
+ virtual const void* vector_lookup(int i) = 0;
+ virtual void vector_reserve(int n) = 0;
+ virtual unsigned int vector_count() = 0;
+
+ virtual void hash_insert(lsh_hash h, int l, int i) = 0;
+ virtual void hash_remove(lsh_hash h, int l, int i) = 0;
+ virtual int hash_lookup(lsh_hash h, int l, int* ret_i, int ret_i_max) = 0;
+};
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Splits color or grayscale image into multiple connected components
+ of nearly the same color/brightness using modification of Burt algorithm.
+ comp with contain a pointer to sequence (CvSeq)
+ of connected components (CvConnectedComp) */
+CVAPI(void) cvPyrSegmentation( IplImage* src, IplImage* dst,
+ CvMemStorage* storage, CvSeq** comp,
+ int level, double threshold1,
+ double threshold2 );
+
+/****************************************************************************************\
+* Planar subdivisions *
+\****************************************************************************************/
+
+/* Initializes Delaunay triangulation */
+CVAPI(void) cvInitSubdivDelaunay2D( CvSubdiv2D* subdiv, CvRect rect );
+
+/* Creates new subdivision */
+CVAPI(CvSubdiv2D*) cvCreateSubdiv2D( int subdiv_type, int header_size,
+ int vtx_size, int quadedge_size,
+ CvMemStorage* storage );
+
+/************************* high-level subdivision functions ***************************/
+
+/* Simplified Delaunay diagram creation */
+CV_INLINE CvSubdiv2D* cvCreateSubdivDelaunay2D( CvRect rect, CvMemStorage* storage )
+{
+ CvSubdiv2D* subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*subdiv),
+ sizeof(CvSubdiv2DPoint), sizeof(CvQuadEdge2D), storage );
+
+ cvInitSubdivDelaunay2D( subdiv, rect );
+ return subdiv;
+}
+
+
+/* Inserts new point to the Delaunay triangulation */
+CVAPI(CvSubdiv2DPoint*) cvSubdivDelaunay2DInsert( CvSubdiv2D* subdiv, CvPoint2D32f pt);
+
+/* Locates a point within the Delaunay triangulation (finds the edge
+ the point is left to or belongs to, or the triangulation point the given
+ point coinsides with */
+CVAPI(CvSubdiv2DPointLocation) cvSubdiv2DLocate(
+ CvSubdiv2D* subdiv, CvPoint2D32f pt,
+ CvSubdiv2DEdge* edge,
+ CvSubdiv2DPoint** vertex CV_DEFAULT(NULL) );
+
+/* Calculates Voronoi tesselation (i.e. coordinates of Voronoi points) */
+CVAPI(void) cvCalcSubdivVoronoi2D( CvSubdiv2D* subdiv );
+
+
+/* Removes all Voronoi points from the tesselation */
+CVAPI(void) cvClearSubdivVoronoi2D( CvSubdiv2D* subdiv );
+
+
+/* Finds the nearest to the given point vertex in subdivision. */
+CVAPI(CvSubdiv2DPoint*) cvFindNearestPoint2D( CvSubdiv2D* subdiv, CvPoint2D32f pt );
+
+
+/************ Basic quad-edge navigation and operations ************/
+
+CV_INLINE CvSubdiv2DEdge cvSubdiv2DNextEdge( CvSubdiv2DEdge edge )
+{
+ return CV_SUBDIV2D_NEXT_EDGE(edge);
+}
+
+
+CV_INLINE CvSubdiv2DEdge cvSubdiv2DRotateEdge( CvSubdiv2DEdge edge, int rotate )
+{
+ return (edge & ~3) + ((edge + rotate) & 3);
+}
+
+CV_INLINE CvSubdiv2DEdge cvSubdiv2DSymEdge( CvSubdiv2DEdge edge )
+{
+ return edge ^ 2;
+}
+
+CV_INLINE CvSubdiv2DEdge cvSubdiv2DGetEdge( CvSubdiv2DEdge edge, CvNextEdgeType type )
+{
+ CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
+ edge = e->next[(edge + (int)type) & 3];
+ return (edge & ~3) + ((edge + ((int)type >> 4)) & 3);
+}
+
+
+CV_INLINE CvSubdiv2DPoint* cvSubdiv2DEdgeOrg( CvSubdiv2DEdge edge )
+{
+ CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
+ return (CvSubdiv2DPoint*)e->pt[edge & 3];
+}
+
+
+CV_INLINE CvSubdiv2DPoint* cvSubdiv2DEdgeDst( CvSubdiv2DEdge edge )
+{
+ CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
+ return (CvSubdiv2DPoint*)e->pt[(edge + 2) & 3];
+}
+
+/****************************************************************************************\
+* Additional operations on Subdivisions *
+\****************************************************************************************/
+
+// paints voronoi diagram: just demo function
+CVAPI(void) icvDrawMosaic( CvSubdiv2D* subdiv, IplImage* src, IplImage* dst );
+
+// checks planar subdivision for correctness. It is not an absolute check,
+// but it verifies some relations between quad-edges
+CVAPI(int) icvSubdiv2DCheck( CvSubdiv2D* subdiv );
+
+// returns squared distance between two 2D points with floating-point coordinates.
+CV_INLINE double icvSqDist2D32f( CvPoint2D32f pt1, CvPoint2D32f pt2 )
+{
+ double dx = pt1.x - pt2.x;
+ double dy = pt1.y - pt2.y;
+
+ return dx*dx + dy*dy;
+}
+
+
+
+
+CV_INLINE double cvTriangleArea( CvPoint2D32f a, CvPoint2D32f b, CvPoint2D32f c )
+{
+ return ((double)b.x - a.x) * ((double)c.y - a.y) - ((double)b.y - a.y) * ((double)c.x - a.x);
+}
+
+
+/* Constructs kd-tree from set of feature descriptors */
+CVAPI(struct CvFeatureTree*) cvCreateKDTree(CvMat* desc);
+
+/* Constructs spill-tree from set of feature descriptors */
+CVAPI(struct CvFeatureTree*) cvCreateSpillTree( const CvMat* raw_data,
+ const int naive CV_DEFAULT(50),
+ const double rho CV_DEFAULT(.7),
+ const double tau CV_DEFAULT(.1) );
+
+/* Release feature tree */
+CVAPI(void) cvReleaseFeatureTree(struct CvFeatureTree* tr);
+
+/* Searches feature tree for k nearest neighbors of given reference points,
+ searching (in case of kd-tree/bbf) at most emax leaves. */
+CVAPI(void) cvFindFeatures(struct CvFeatureTree* tr, const CvMat* query_points,
+ CvMat* indices, CvMat* dist, int k, int emax CV_DEFAULT(20));
+
+/* Search feature tree for all points that are inlier to given rect region.
+ Only implemented for kd trees */
+CVAPI(int) cvFindFeaturesBoxed(struct CvFeatureTree* tr,
+ CvMat* bounds_min, CvMat* bounds_max,
+ CvMat* out_indices);
+
+
+/* Construct a Locality Sensitive Hash (LSH) table, for indexing d-dimensional vectors of
+ given type. Vectors will be hashed L times with k-dimensional p-stable (p=2) functions. */
+CVAPI(struct CvLSH*) cvCreateLSH(struct CvLSHOperations* ops, int d,
+ int L CV_DEFAULT(10), int k CV_DEFAULT(10),
+ int type CV_DEFAULT(CV_64FC1), double r CV_DEFAULT(4),
+ int64 seed CV_DEFAULT(-1));
+
+/* Construct in-memory LSH table, with n bins. */
+CVAPI(struct CvLSH*) cvCreateMemoryLSH(int d, int n, int L CV_DEFAULT(10), int k CV_DEFAULT(10),
+ int type CV_DEFAULT(CV_64FC1), double r CV_DEFAULT(4),
+ int64 seed CV_DEFAULT(-1));
+
+/* Free the given LSH structure. */
+CVAPI(void) cvReleaseLSH(struct CvLSH** lsh);
+
+/* Return the number of vectors in the LSH. */
+CVAPI(unsigned int) LSHSize(struct CvLSH* lsh);
+
+/* Add vectors to the LSH structure, optionally returning indices. */
+CVAPI(void) cvLSHAdd(struct CvLSH* lsh, const CvMat* data, CvMat* indices CV_DEFAULT(0));
+
+/* Remove vectors from LSH, as addressed by given indices. */
+CVAPI(void) cvLSHRemove(struct CvLSH* lsh, const CvMat* indices);
+
+/* Query the LSH n times for at most k nearest points; data is n x d,
+ indices and dist are n x k. At most emax stored points will be accessed. */
+CVAPI(void) cvLSHQuery(struct CvLSH* lsh, const CvMat* query_points,
+ CvMat* indices, CvMat* dist, int k, int emax);
+
+/* Kolmogorov-Zabin stereo-correspondence algorithm (a.k.a. KZ1) */
+#define CV_STEREO_GC_OCCLUDED SHRT_MAX
+
+typedef struct CvStereoGCState
+{
+ int Ithreshold;
+ int interactionRadius;
+ float K, lambda, lambda1, lambda2;
+ int occlusionCost;
+ int minDisparity;
+ int numberOfDisparities;
+ int maxIters;
+
+ CvMat* left;
+ CvMat* right;
+ CvMat* dispLeft;
+ CvMat* dispRight;
+ CvMat* ptrLeft;
+ CvMat* ptrRight;
+ CvMat* vtxBuf;
+ CvMat* edgeBuf;
+} CvStereoGCState;
+
+CVAPI(CvStereoGCState*) cvCreateStereoGCState( int numberOfDisparities, int maxIters );
+CVAPI(void) cvReleaseStereoGCState( CvStereoGCState** state );
+
+CVAPI(void) cvFindStereoCorrespondenceGC( const CvArr* left, const CvArr* right,
+ CvArr* disparityLeft, CvArr* disparityRight,
+ CvStereoGCState* state,
+ int useDisparityGuess CV_DEFAULT(0) );
+
+/* Calculates optical flow for 2 images using classical Lucas & Kanade algorithm */
+CVAPI(void) cvCalcOpticalFlowLK( const CvArr* prev, const CvArr* curr,
+ CvSize win_size, CvArr* velx, CvArr* vely );
+
+/* Calculates optical flow for 2 images using block matching algorithm */
+CVAPI(void) cvCalcOpticalFlowBM( const CvArr* prev, const CvArr* curr,
+ CvSize block_size, CvSize shift_size,
+ CvSize max_range, int use_previous,
+ CvArr* velx, CvArr* vely );
+
+/* Calculates Optical flow for 2 images using Horn & Schunck algorithm */
+CVAPI(void) cvCalcOpticalFlowHS( const CvArr* prev, const CvArr* curr,
+ int use_previous, CvArr* velx, CvArr* vely,
+ double lambda, CvTermCriteria criteria );
+
+
+/****************************************************************************************\
+* Background/foreground segmentation *
+\****************************************************************************************/
+
+/* We discriminate between foreground and background pixels
+ * by building and maintaining a model of the background.
+ * Any pixel which does not fit this model is then deemed
+ * to be foreground.
+ *
+ * At present we support two core background models,
+ * one of which has two variations:
+ *
+ * o CV_BG_MODEL_FGD: latest and greatest algorithm, described in
+ *
+ * Foreground Object Detection from Videos Containing Complex Background.
+ * Liyuan Li, Weimin Huang, Irene Y.H. Gu, and Qi Tian.
+ * ACM MM2003 9p
+ *
+ * o CV_BG_MODEL_FGD_SIMPLE:
+ * A code comment describes this as a simplified version of the above,
+ * but the code is in fact currently identical
+ *
+ * o CV_BG_MODEL_MOG: "Mixture of Gaussians", older algorithm, described in
+ *
+ * Moving target classification and tracking from real-time video.
+ * A Lipton, H Fujijoshi, R Patil
+ * Proceedings IEEE Workshop on Application of Computer Vision pp 8-14 1998
+ *
+ * Learning patterns of activity using real-time tracking
+ * C Stauffer and W Grimson August 2000
+ * IEEE Transactions on Pattern Analysis and Machine Intelligence 22(8):747-757
+ */
+
+
+#define CV_BG_MODEL_FGD 0
+#define CV_BG_MODEL_MOG 1 /* "Mixture of Gaussians". */
+#define CV_BG_MODEL_FGD_SIMPLE 2
+
+struct CvBGStatModel;
+
+typedef void (CV_CDECL * CvReleaseBGStatModel)( struct CvBGStatModel** bg_model );
+typedef int (CV_CDECL * CvUpdateBGStatModel)( IplImage* curr_frame, struct CvBGStatModel* bg_model,
+ double learningRate );
+
+#define CV_BG_STAT_MODEL_FIELDS() \
+int type; /*type of BG model*/ \
+CvReleaseBGStatModel release; \
+CvUpdateBGStatModel update; \
+IplImage* background; /*8UC3 reference background image*/ \
+IplImage* foreground; /*8UC1 foreground image*/ \
+IplImage** layers; /*8UC3 reference background image, can be null */ \
+int layer_count; /* can be zero */ \
+CvMemStorage* storage; /*storage for foreground_regions*/ \
+CvSeq* foreground_regions /*foreground object contours*/
+
+typedef struct CvBGStatModel
+{
+ CV_BG_STAT_MODEL_FIELDS();
+} CvBGStatModel;
+
+//
+
+// Releases memory used by BGStatModel
+CVAPI(void) cvReleaseBGStatModel( CvBGStatModel** bg_model );
+
+// Updates statistical model and returns number of found foreground regions
+CVAPI(int) cvUpdateBGStatModel( IplImage* current_frame, CvBGStatModel* bg_model,
+ double learningRate CV_DEFAULT(-1));
+
+// Performs FG post-processing using segmentation
+// (all pixels of a region will be classified as foreground if majority of pixels of the region are FG).
+// parameters:
+// segments - pointer to result of segmentation (for example MeanShiftSegmentation)
+// bg_model - pointer to CvBGStatModel structure
+CVAPI(void) cvRefineForegroundMaskBySegm( CvSeq* segments, CvBGStatModel* bg_model );
+
+/* Common use change detection function */
+CVAPI(int) cvChangeDetection( IplImage* prev_frame,
+ IplImage* curr_frame,
+ IplImage* change_mask );
+
+/*
+ Interface of ACM MM2003 algorithm
+ */
+
+/* Default parameters of foreground detection algorithm: */
+#define CV_BGFG_FGD_LC 128
+#define CV_BGFG_FGD_N1C 15
+#define CV_BGFG_FGD_N2C 25
+
+#define CV_BGFG_FGD_LCC 64
+#define CV_BGFG_FGD_N1CC 25
+#define CV_BGFG_FGD_N2CC 40
+
+/* Background reference image update parameter: */
+#define CV_BGFG_FGD_ALPHA_1 0.1f
+
+/* stat model update parameter
+ * 0.002f ~ 1K frame(~45sec), 0.005 ~ 18sec (if 25fps and absolutely static BG)
+ */
+#define CV_BGFG_FGD_ALPHA_2 0.005f
+
+/* start value for alpha parameter (to fast initiate statistic model) */
+#define CV_BGFG_FGD_ALPHA_3 0.1f
+
+#define CV_BGFG_FGD_DELTA 2
+
+#define CV_BGFG_FGD_T 0.9f
+
+#define CV_BGFG_FGD_MINAREA 15.f
+
+#define CV_BGFG_FGD_BG_UPDATE_TRESH 0.5f
+
+/* See the above-referenced Li/Huang/Gu/Tian paper
+ * for a full description of these background-model
+ * tuning parameters.
+ *
+ * Nomenclature: 'c' == "color", a three-component red/green/blue vector.
+ * We use histograms of these to model the range of
+ * colors we've seen at a given background pixel.
+ *
+ * 'cc' == "color co-occurrence", a six-component vector giving
+ * RGB color for both this frame and preceding frame.
+ * We use histograms of these to model the range of
+ * color CHANGES we've seen at a given background pixel.
+ */
+typedef struct CvFGDStatModelParams
+{
+ int Lc; /* Quantized levels per 'color' component. Power of two, typically 32, 64 or 128. */
+ int N1c; /* Number of color vectors used to model normal background color variation at a given pixel. */
+ int N2c; /* Number of color vectors retained at given pixel. Must be > N1c, typically ~ 5/3 of N1c. */
+ /* Used to allow the first N1c vectors to adapt over time to changing background. */
+
+ int Lcc; /* Quantized levels per 'color co-occurrence' component. Power of two, typically 16, 32 or 64. */
+ int N1cc; /* Number of color co-occurrence vectors used to model normal background color variation at a given pixel. */
+ int N2cc; /* Number of color co-occurrence vectors retained at given pixel. Must be > N1cc, typically ~ 5/3 of N1cc. */
+ /* Used to allow the first N1cc vectors to adapt over time to changing background. */
+
+ int is_obj_without_holes;/* If TRUE we ignore holes within foreground blobs. Defaults to TRUE. */
+ int perform_morphing; /* Number of erode-dilate-erode foreground-blob cleanup iterations. */
+ /* These erase one-pixel junk blobs and merge almost-touching blobs. Default value is 1. */
+
+ float alpha1; /* How quickly we forget old background pixel values seen. Typically set to 0.1 */
+ float alpha2; /* "Controls speed of feature learning". Depends on T. Typical value circa 0.005. */
+ float alpha3; /* Alternate to alpha2, used (e.g.) for quicker initial convergence. Typical value 0.1. */
+
+ float delta; /* Affects color and color co-occurrence quantization, typically set to 2. */
+ float T; /* "A percentage value which determines when new features can be recognized as new background." (Typically 0.9).*/
+ float minArea; /* Discard foreground blobs whose bounding box is smaller than this threshold. */
+} CvFGDStatModelParams;
+
+typedef struct CvBGPixelCStatTable
+{
+ float Pv, Pvb;
+ uchar v[3];
+} CvBGPixelCStatTable;
+
+typedef struct CvBGPixelCCStatTable
+{
+ float Pv, Pvb;
+ uchar v[6];
+} CvBGPixelCCStatTable;
+
+typedef struct CvBGPixelStat
+{
+ float Pbc;
+ float Pbcc;
+ CvBGPixelCStatTable* ctable;
+ CvBGPixelCCStatTable* cctable;
+ uchar is_trained_st_model;
+ uchar is_trained_dyn_model;
+} CvBGPixelStat;
+
+
+typedef struct CvFGDStatModel
+{
+ CV_BG_STAT_MODEL_FIELDS();
+ CvBGPixelStat* pixel_stat;
+ IplImage* Ftd;
+ IplImage* Fbd;
+ IplImage* prev_frame;
+ CvFGDStatModelParams params;
+} CvFGDStatModel;
+
+/* Creates FGD model */
+CVAPI(CvBGStatModel*) cvCreateFGDStatModel( IplImage* first_frame,
+ CvFGDStatModelParams* parameters CV_DEFAULT(NULL));
+
+/*
+ Interface of Gaussian mixture algorithm
+
+ "An improved adaptive background mixture model for real-time tracking with shadow detection"
+ P. KadewTraKuPong and R. Bowden,
+ Proc. 2nd European Workshp on Advanced Video-Based Surveillance Systems, 2001."
+ http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf
+ */
+
+/* Note: "MOG" == "Mixture Of Gaussians": */
+
+#define CV_BGFG_MOG_MAX_NGAUSSIANS 500
+
+/* default parameters of gaussian background detection algorithm */
+#define CV_BGFG_MOG_BACKGROUND_THRESHOLD 0.7 /* threshold sum of weights for background test */
+#define CV_BGFG_MOG_STD_THRESHOLD 2.5 /* lambda=2.5 is 99% */
+#define CV_BGFG_MOG_WINDOW_SIZE 200 /* Learning rate; alpha = 1/CV_GBG_WINDOW_SIZE */
+#define CV_BGFG_MOG_NGAUSSIANS 5 /* = K = number of Gaussians in mixture */
+#define CV_BGFG_MOG_WEIGHT_INIT 0.05
+#define CV_BGFG_MOG_SIGMA_INIT 30
+#define CV_BGFG_MOG_MINAREA 15.f
+
+
+#define CV_BGFG_MOG_NCOLORS 3
+
+typedef struct CvGaussBGStatModelParams
+{
+ int win_size; /* = 1/alpha */
+ int n_gauss;
+ double bg_threshold, std_threshold, minArea;
+ double weight_init, variance_init;
+}CvGaussBGStatModelParams;
+
+typedef struct CvGaussBGValues
+{
+ int match_sum;
+ double weight;
+ double variance[CV_BGFG_MOG_NCOLORS];
+ double mean[CV_BGFG_MOG_NCOLORS];
+} CvGaussBGValues;
+
+typedef struct CvGaussBGPoint
+{
+ CvGaussBGValues* g_values;
+} CvGaussBGPoint;
+
+
+typedef struct CvGaussBGModel
+{
+ CV_BG_STAT_MODEL_FIELDS();
+ CvGaussBGStatModelParams params;
+ CvGaussBGPoint* g_point;
+ int countFrames;
+ void* mog;
+} CvGaussBGModel;
+
+
+/* Creates Gaussian mixture background model */
+CVAPI(CvBGStatModel*) cvCreateGaussianBGModel( IplImage* first_frame,
+ CvGaussBGStatModelParams* parameters CV_DEFAULT(NULL));
+
+
+typedef struct CvBGCodeBookElem
+{
+ struct CvBGCodeBookElem* next;
+ int tLastUpdate;
+ int stale;
+ uchar boxMin[3];
+ uchar boxMax[3];
+ uchar learnMin[3];
+ uchar learnMax[3];
+} CvBGCodeBookElem;
+
+typedef struct CvBGCodeBookModel
+{
+ CvSize size;
+ int t;
+ uchar cbBounds[3];
+ uchar modMin[3];
+ uchar modMax[3];
+ CvBGCodeBookElem** cbmap;
+ CvMemStorage* storage;
+ CvBGCodeBookElem* freeList;
+} CvBGCodeBookModel;
+
+CVAPI(CvBGCodeBookModel*) cvCreateBGCodeBookModel( void );
+CVAPI(void) cvReleaseBGCodeBookModel( CvBGCodeBookModel** model );
+
+CVAPI(void) cvBGCodeBookUpdate( CvBGCodeBookModel* model, const CvArr* image,
+ CvRect roi CV_DEFAULT(cvRect(0,0,0,0)),
+ const CvArr* mask CV_DEFAULT(0) );
+
+CVAPI(int) cvBGCodeBookDiff( const CvBGCodeBookModel* model, const CvArr* image,
+ CvArr* fgmask, CvRect roi CV_DEFAULT(cvRect(0,0,0,0)) );
+
+CVAPI(void) cvBGCodeBookClearStale( CvBGCodeBookModel* model, int staleThresh,
+ CvRect roi CV_DEFAULT(cvRect(0,0,0,0)),
+ const CvArr* mask CV_DEFAULT(0) );
+
+CVAPI(CvSeq*) cvSegmentFGMask( CvArr *fgmask, int poly1Hull0 CV_DEFAULT(1),
+ float perimScale CV_DEFAULT(4.f),
+ CvMemStorage* storage CV_DEFAULT(0),
+ CvPoint offset CV_DEFAULT(cvPoint(0,0)));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/streams.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/streams.hpp
new file mode 100644
index 00000000..e164bf4a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/legacy/streams.hpp
@@ -0,0 +1,92 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_CVSTREAMS_H__
+#define __OPENCV_CVSTREAMS_H__
+
+#ifdef WIN32
+#include <streams.h> /* !!! IF YOU'VE GOT AN ERROR HERE, PLEASE READ BELOW !!! */
+/***************** How to get Visual Studio understand streams.h ****************\
+
+You need DirectShow SDK that is now a part of Platform SDK
+(Windows Server 2003 SP1 SDK or later),
+and DirectX SDK (2006 April or later).
+
+1. Download the Platform SDK from
+ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+ and DirectX SDK from msdn.microsoft.com/directx/
+ (They are huge, but you can download it by parts).
+ If it doesn't work for you, consider HighGUI that can capture video via VFW or MIL
+
+2. Install Platform SDK together with DirectShow SDK.
+ Install DirectX (with or without sample code).
+
+3. Build baseclasses.
+ See <PlatformSDKInstallFolder>\samples\multimedia\directshow\readme.txt.
+
+4. Copy the built libraries (called strmbase.lib and strmbasd.lib
+ in Release and Debug versions, respectively) to
+ <PlatformSDKInstallFolder>\lib.
+
+5. In Developer Studio add the following paths:
+ <DirectXSDKInstallFolder>\include
+ <PlatformSDKInstallFolder>\include
+ <PlatformSDKInstallFolder>\samples\multimedia\directshow\baseclasses
+ to the includes' search path
+ (at Tools->Options->Directories->Include files in case of Visual Studio 6.0,
+ at Tools->Options->Projects and Solutions->VC++ Directories->Include files in case
+ of Visual Studio 2005)
+ Add
+ <DirectXSDKInstallFolder>\lib
+ <PlatformSDKInstallFolder>\lib
+ to the libraries' search path (in the same dialog, ...->"Library files" page)
+
+ NOTE: PUT THE ADDED LINES ON THE VERY TOP OF THE LISTS, OTHERWISE YOU MAY STILL GET
+ COMPILER OR LINKER ERRORS. This is necessary, because Visual Studio
+ may include older versions of the same headers and libraries.
+
+6. Now you can build OpenCV DirectShow filters.
+
+\***********************************************************************************/
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ml.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ml.hpp
new file mode 100644
index 00000000..dc62dcb0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ml.hpp
@@ -0,0 +1,41 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/ml/ml.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ml/ml.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ml/ml.hpp
new file mode 100644
index 00000000..d86ecde4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ml/ml.hpp
@@ -0,0 +1,2147 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// Intel License Agreement
+//
+// Copyright (C) 2000, Intel Corporation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of Intel Corporation may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_ML_HPP__
+#define __OPENCV_ML_HPP__
+
+#include "opencv2/core/core.hpp"
+#include <limits.h>
+
+#ifdef __cplusplus
+
+#include <map>
+#include <string>
+#include <iostream>
+
+// Apple defines a check() macro somewhere in the debug headers
+// that interferes with a method definiton in this header
+#undef check
+
+/****************************************************************************************\
+* Main struct definitions *
+\****************************************************************************************/
+
+/* log(2*PI) */
+#define CV_LOG2PI (1.8378770664093454835606594728112)
+
+/* columns of <trainData> matrix are training samples */
+#define CV_COL_SAMPLE 0
+
+/* rows of <trainData> matrix are training samples */
+#define CV_ROW_SAMPLE 1
+
+#define CV_IS_ROW_SAMPLE(flags) ((flags) & CV_ROW_SAMPLE)
+
+struct CvVectors
+{
+ int type;
+ int dims, count;
+ CvVectors* next;
+ union
+ {
+ uchar** ptr;
+ float** fl;
+ double** db;
+ } data;
+};
+
+#if 0
+/* A structure, representing the lattice range of statmodel parameters.
+ It is used for optimizing statmodel parameters by cross-validation method.
+ The lattice is logarithmic, so <step> must be greater then 1. */
+typedef struct CvParamLattice
+{
+ double min_val;
+ double max_val;
+ double step;
+}
+CvParamLattice;
+
+CV_INLINE CvParamLattice cvParamLattice( double min_val, double max_val,
+ double log_step )
+{
+ CvParamLattice pl;
+ pl.min_val = MIN( min_val, max_val );
+ pl.max_val = MAX( min_val, max_val );
+ pl.step = MAX( log_step, 1. );
+ return pl;
+}
+
+CV_INLINE CvParamLattice cvDefaultParamLattice( void )
+{
+ CvParamLattice pl = {0,0,0};
+ return pl;
+}
+#endif
+
+/* Variable type */
+#define CV_VAR_NUMERICAL 0
+#define CV_VAR_ORDERED 0
+#define CV_VAR_CATEGORICAL 1
+
+#define CV_TYPE_NAME_ML_SVM "opencv-ml-svm"
+#define CV_TYPE_NAME_ML_KNN "opencv-ml-knn"
+#define CV_TYPE_NAME_ML_NBAYES "opencv-ml-bayesian"
+#define CV_TYPE_NAME_ML_EM "opencv-ml-em"
+#define CV_TYPE_NAME_ML_BOOSTING "opencv-ml-boost-tree"
+#define CV_TYPE_NAME_ML_TREE "opencv-ml-tree"
+#define CV_TYPE_NAME_ML_ANN_MLP "opencv-ml-ann-mlp"
+#define CV_TYPE_NAME_ML_CNN "opencv-ml-cnn"
+#define CV_TYPE_NAME_ML_RTREES "opencv-ml-random-trees"
+#define CV_TYPE_NAME_ML_ERTREES "opencv-ml-extremely-randomized-trees"
+#define CV_TYPE_NAME_ML_GBT "opencv-ml-gradient-boosting-trees"
+
+#define CV_TRAIN_ERROR 0
+#define CV_TEST_ERROR 1
+
+class CV_EXPORTS_W CvStatModel
+{
+public:
+ CvStatModel();
+ virtual ~CvStatModel();
+
+ virtual void clear();
+
+ CV_WRAP virtual void save( const char* filename, const char* name=0 ) const;
+ CV_WRAP virtual void load( const char* filename, const char* name=0 );
+
+ virtual void write( CvFileStorage* storage, const char* name ) const;
+ virtual void read( CvFileStorage* storage, CvFileNode* node );
+
+protected:
+ const char* default_model_name;
+};
+
+/****************************************************************************************\
+* Normal Bayes Classifier *
+\****************************************************************************************/
+
+/* The structure, representing the grid range of statmodel parameters.
+ It is used for optimizing statmodel accuracy by varying model parameters,
+ the accuracy estimate being computed by cross-validation.
+ The grid is logarithmic, so <step> must be greater then 1. */
+
+class CvMLData;
+
+struct CV_EXPORTS_W_MAP CvParamGrid
+{
+ // SVM params type
+ enum { SVM_C=0, SVM_GAMMA=1, SVM_P=2, SVM_NU=3, SVM_COEF=4, SVM_DEGREE=5 };
+
+ CvParamGrid()
+ {
+ min_val = max_val = step = 0;
+ }
+
+ CvParamGrid( double min_val, double max_val, double log_step );
+ //CvParamGrid( int param_id );
+ bool check() const;
+
+ CV_PROP_RW double min_val;
+ CV_PROP_RW double max_val;
+ CV_PROP_RW double step;
+};
+
+inline CvParamGrid::CvParamGrid( double _min_val, double _max_val, double _log_step )
+{
+ min_val = _min_val;
+ max_val = _max_val;
+ step = _log_step;
+}
+
+class CV_EXPORTS_W CvNormalBayesClassifier : public CvStatModel
+{
+public:
+ CV_WRAP CvNormalBayesClassifier();
+ virtual ~CvNormalBayesClassifier();
+
+ CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses,
+ const CvMat* varIdx=0, const CvMat* sampleIdx=0 );
+
+ virtual bool train( const CvMat* trainData, const CvMat* responses,
+ const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false );
+
+ virtual float predict( const CvMat* samples, CV_OUT CvMat* results=0 ) const;
+ CV_WRAP virtual void clear();
+
+ CV_WRAP CvNormalBayesClassifier( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat() );
+ CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& varIdx = cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(),
+ bool update=false );
+ CV_WRAP virtual float predict( const cv::Mat& samples, CV_OUT cv::Mat* results=0 ) const;
+
+ virtual void write( CvFileStorage* storage, const char* name ) const;
+ virtual void read( CvFileStorage* storage, CvFileNode* node );
+
+protected:
+ int var_count, var_all;
+ CvMat* var_idx;
+ CvMat* cls_labels;
+ CvMat** count;
+ CvMat** sum;
+ CvMat** productsum;
+ CvMat** avg;
+ CvMat** inv_eigen_values;
+ CvMat** cov_rotate_mats;
+ CvMat* c;
+};
+
+
+/****************************************************************************************\
+* K-Nearest Neighbour Classifier *
+\****************************************************************************************/
+
+// k Nearest Neighbors
+class CV_EXPORTS_W CvKNearest : public CvStatModel
+{
+public:
+
+ CV_WRAP CvKNearest();
+ virtual ~CvKNearest();
+
+ CvKNearest( const CvMat* trainData, const CvMat* responses,
+ const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 );
+
+ virtual bool train( const CvMat* trainData, const CvMat* responses,
+ const CvMat* sampleIdx=0, bool is_regression=false,
+ int maxK=32, bool updateBase=false );
+
+ virtual float find_nearest( const CvMat* samples, int k, CV_OUT CvMat* results=0,
+ const float** neighbors=0, CV_OUT CvMat* neighborResponses=0, CV_OUT CvMat* dist=0 ) const;
+
+ CV_WRAP CvKNearest( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, int max_k=32 );
+
+ CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false,
+ int maxK=32, bool updateBase=false );
+
+ virtual float find_nearest( const cv::Mat& samples, int k, cv::Mat* results=0,
+ const float** neighbors=0, cv::Mat* neighborResponses=0,
+ cv::Mat* dist=0 ) const;
+ CV_WRAP virtual float find_nearest( const cv::Mat& samples, int k, CV_OUT cv::Mat& results,
+ CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const;
+
+ virtual void clear();
+ int get_max_k() const;
+ int get_var_count() const;
+ int get_sample_count() const;
+ bool is_regression() const;
+
+ virtual float write_results( int k, int k1, int start, int end,
+ const float* neighbor_responses, const float* dist, CvMat* _results,
+ CvMat* _neighbor_responses, CvMat* _dist, Cv32suf* sort_buf ) const;
+
+ virtual void find_neighbors_direct( const CvMat* _samples, int k, int start, int end,
+ float* neighbor_responses, const float** neighbors, float* dist ) const;
+
+protected:
+
+ int max_k, var_count;
+ int total;
+ bool regression;
+ CvVectors* samples;
+};
+
+/****************************************************************************************\
+* Support Vector Machines *
+\****************************************************************************************/
+
+// SVM training parameters
+struct CV_EXPORTS_W_MAP CvSVMParams
+{
+ CvSVMParams();
+ CvSVMParams( int svm_type, int kernel_type,
+ double degree, double gamma, double coef0,
+ double Cvalue, double nu, double p,
+ CvMat* class_weights, CvTermCriteria term_crit );
+
+ CV_PROP_RW int svm_type;
+ CV_PROP_RW int kernel_type;
+ CV_PROP_RW double degree; // for poly
+ CV_PROP_RW double gamma; // for poly/rbf/sigmoid
+ CV_PROP_RW double coef0; // for poly/sigmoid
+
+ CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR
+ CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR
+ CV_PROP_RW double p; // for CV_SVM_EPS_SVR
+ CvMat* class_weights; // for CV_SVM_C_SVC
+ CV_PROP_RW CvTermCriteria term_crit; // termination criteria
+};
+
+
+struct CV_EXPORTS CvSVMKernel
+{
+ typedef void (CvSVMKernel::*Calc)( int vec_count, int vec_size, const float** vecs,
+ const float* another, float* results );
+ CvSVMKernel();
+ CvSVMKernel( const CvSVMParams* params, Calc _calc_func );
+ virtual bool create( const CvSVMParams* params, Calc _calc_func );
+ virtual ~CvSVMKernel();
+
+ virtual void clear();
+ virtual void calc( int vcount, int n, const float** vecs, const float* another, float* results );
+
+ const CvSVMParams* params;
+ Calc calc_func;
+
+ virtual void calc_non_rbf_base( int vec_count, int vec_size, const float** vecs,
+ const float* another, float* results,
+ double alpha, double beta );
+
+ virtual void calc_linear( int vec_count, int vec_size, const float** vecs,
+ const float* another, float* results );
+ virtual void calc_rbf( int vec_count, int vec_size, const float** vecs,
+ const float* another, float* results );
+ virtual void calc_poly( int vec_count, int vec_size, const float** vecs,
+ const float* another, float* results );
+ virtual void calc_sigmoid( int vec_count, int vec_size, const float** vecs,
+ const float* another, float* results );
+};
+
+
+struct CvSVMKernelRow
+{
+ CvSVMKernelRow* prev;
+ CvSVMKernelRow* next;
+ float* data;
+};
+
+
+struct CvSVMSolutionInfo
+{
+ double obj;
+ double rho;
+ double upper_bound_p;
+ double upper_bound_n;
+ double r; // for Solver_NU
+};
+
+class CV_EXPORTS CvSVMSolver
+{
+public:
+ typedef bool (CvSVMSolver::*SelectWorkingSet)( int& i, int& j );
+ typedef float* (CvSVMSolver::*GetRow)( int i, float* row, float* dst, bool existed );
+ typedef void (CvSVMSolver::*CalcRho)( double& rho, double& r );
+
+ CvSVMSolver();
+
+ CvSVMSolver( int count, int var_count, const float** samples, schar* y,
+ int alpha_count, double* alpha, double Cp, double Cn,
+ CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row,
+ SelectWorkingSet select_working_set, CalcRho calc_rho );
+ virtual bool create( int count, int var_count, const float** samples, schar* y,
+ int alpha_count, double* alpha, double Cp, double Cn,
+ CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row,
+ SelectWorkingSet select_working_set, CalcRho calc_rho );
+ virtual ~CvSVMSolver();
+
+ virtual void clear();
+ virtual bool solve_generic( CvSVMSolutionInfo& si );
+
+ virtual bool solve_c_svc( int count, int var_count, const float** samples, schar* y,
+ double Cp, double Cn, CvMemStorage* storage,
+ CvSVMKernel* kernel, double* alpha, CvSVMSolutionInfo& si );
+ virtual bool solve_nu_svc( int count, int var_count, const float** samples, schar* y,
+ CvMemStorage* storage, CvSVMKernel* kernel,
+ double* alpha, CvSVMSolutionInfo& si );
+ virtual bool solve_one_class( int count, int var_count, const float** samples,
+ CvMemStorage* storage, CvSVMKernel* kernel,
+ double* alpha, CvSVMSolutionInfo& si );
+
+ virtual bool solve_eps_svr( int count, int var_count, const float** samples, const float* y,
+ CvMemStorage* storage, CvSVMKernel* kernel,
+ double* alpha, CvSVMSolutionInfo& si );
+
+ virtual bool solve_nu_svr( int count, int var_count, const float** samples, const float* y,
+ CvMemStorage* storage, CvSVMKernel* kernel,
+ double* alpha, CvSVMSolutionInfo& si );
+
+ virtual float* get_row_base( int i, bool* _existed );
+ virtual float* get_row( int i, float* dst );
+
+ int sample_count;
+ int var_count;
+ int cache_size;
+ int cache_line_size;
+ const float** samples;
+ const CvSVMParams* params;
+ CvMemStorage* storage;
+ CvSVMKernelRow lru_list;
+ CvSVMKernelRow* rows;
+
+ int alpha_count;
+
+ double* G;
+ double* alpha;
+
+ // -1 - lower bound, 0 - free, 1 - upper bound
+ schar* alpha_status;
+
+ schar* y;
+ double* b;
+ float* buf[2];
+ double eps;
+ int max_iter;
+ double C[2]; // C[0] == Cn, C[1] == Cp
+ CvSVMKernel* kernel;
+
+ SelectWorkingSet select_working_set_func;
+ CalcRho calc_rho_func;
+ GetRow get_row_func;
+
+ virtual bool select_working_set( int& i, int& j );
+ virtual bool select_working_set_nu_svm( int& i, int& j );
+ virtual void calc_rho( double& rho, double& r );
+ virtual void calc_rho_nu_svm( double& rho, double& r );
+
+ virtual float* get_row_svc( int i, float* row, float* dst, bool existed );
+ virtual float* get_row_one_class( int i, float* row, float* dst, bool existed );
+ virtual float* get_row_svr( int i, float* row, float* dst, bool existed );
+};
+
+
+struct CvSVMDecisionFunc
+{
+ double rho;
+ int sv_count;
+ double* alpha;
+ int* sv_index;
+};
+
+
+// SVM model
+class CV_EXPORTS_W CvSVM : public CvStatModel
+{
+public:
+ // SVM type
+ enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };
+
+ // SVM kernel type
+ enum { LINEAR=0, POLY=1, RBF=2, SIGMOID=3 };
+
+ // SVM params type
+ enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 };
+
+ CV_WRAP CvSVM();
+ virtual ~CvSVM();
+
+ CvSVM( const CvMat* trainData, const CvMat* responses,
+ const CvMat* varIdx=0, const CvMat* sampleIdx=0,
+ CvSVMParams params=CvSVMParams() );
+
+ virtual bool train( const CvMat* trainData, const CvMat* responses,
+ const CvMat* varIdx=0, const CvMat* sampleIdx=0,
+ CvSVMParams params=CvSVMParams() );
+
+ virtual bool train_auto( const CvMat* trainData, const CvMat* responses,
+ const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params,
+ int kfold = 10,
+ CvParamGrid Cgrid = get_default_grid(CvSVM::C),
+ CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA),
+ CvParamGrid pGrid = get_default_grid(CvSVM::P),
+ CvParamGrid nuGrid = get_default_grid(CvSVM::NU),
+ CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF),
+ CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE),
+ bool balanced=false );
+
+ virtual float predict( const CvMat* sample, bool returnDFVal=false ) const;
+ virtual float predict( const CvMat* samples, CV_OUT CvMat* results ) const;
+
+ CV_WRAP CvSVM( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(),
+ CvSVMParams params=CvSVMParams() );
+
+ CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(),
+ CvSVMParams params=CvSVMParams() );
+
+ CV_WRAP virtual bool train_auto( const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& varIdx, const cv::Mat& sampleIdx, CvSVMParams params,
+ int k_fold = 10,
+ CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C),
+ CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA),
+ CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P),
+ CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU),
+ CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF),
+ CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE),
+ bool balanced=false);
+ CV_WRAP virtual float predict( const cv::Mat& sample, bool returnDFVal=false ) const;
+ CV_WRAP_AS(predict_all) void predict( cv::InputArray samples, cv::OutputArray results ) const;
+
+ CV_WRAP virtual int get_support_vector_count() const;
+ virtual const float* get_support_vector(int i) const;
+ virtual CvSVMParams get_params() const { return params; };
+ CV_WRAP virtual void clear();
+
+ static CvParamGrid get_default_grid( int param_id );
+
+ virtual void write( CvFileStorage* storage, const char* name ) const;
+ virtual void read( CvFileStorage* storage, CvFileNode* node );
+ CV_WRAP int get_var_count() const { return var_idx ? var_idx->cols : var_all; }
+
+protected:
+
+ virtual bool set_params( const CvSVMParams& params );
+ virtual bool train1( int sample_count, int var_count, const float** samples,
+ const void* responses, double Cp, double Cn,
+ CvMemStorage* _storage, double* alpha, double& rho );
+ virtual bool do_train( int svm_type, int sample_count, int var_count, const float** samples,
+ const CvMat* responses, CvMemStorage* _storage, double* alpha );
+ virtual void create_kernel();
+ virtual void create_solver();
+
+ virtual float predict( const float* row_sample, int row_len, bool returnDFVal=false ) const;
+
+ virtual void write_params( CvFileStorage* fs ) const;
+ virtual void read_params( CvFileStorage* fs, CvFileNode* node );
+
+ void optimize_linear_svm();
+
+ CvSVMParams params;
+ CvMat* class_labels;
+ int var_all;
+ float** sv;
+ int sv_total;
+ CvMat* var_idx;
+ CvMat* class_weights;
+ CvSVMDecisionFunc* decision_func;
+ CvMemStorage* storage;
+
+ CvSVMSolver* solver;
+ CvSVMKernel* kernel;
+
+private:
+ CvSVM(const CvSVM&);
+ CvSVM& operator = (const CvSVM&);
+};
+
+/****************************************************************************************\
+* Expectation - Maximization *
+\****************************************************************************************/
+namespace cv
+{
+class CV_EXPORTS_W EM : public Algorithm
+{
+public:
+ // Type of covariation matrices
+ enum {COV_MAT_SPHERICAL=0, COV_MAT_DIAGONAL=1, COV_MAT_GENERIC=2, COV_MAT_DEFAULT=COV_MAT_DIAGONAL};
+
+ // Default parameters
+ enum {DEFAULT_NCLUSTERS=5, DEFAULT_MAX_ITERS=100};
+
+ // The initial step
+ enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0};
+
+ CV_WRAP EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL,
+ const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS,
+ EM::DEFAULT_MAX_ITERS, FLT_EPSILON));
+
+ virtual ~EM();
+ CV_WRAP virtual void clear();
+
+ CV_WRAP virtual bool train(InputArray samples,
+ OutputArray logLikelihoods=noArray(),
+ OutputArray labels=noArray(),
+ OutputArray probs=noArray());
+
+ CV_WRAP virtual bool trainE(InputArray samples,
+ InputArray means0,
+ InputArray covs0=noArray(),
+ InputArray weights0=noArray(),
+ OutputArray logLikelihoods=noArray(),
+ OutputArray labels=noArray(),
+ OutputArray probs=noArray());
+
+ CV_WRAP virtual bool trainM(InputArray samples,
+ InputArray probs0,
+ OutputArray logLikelihoods=noArray(),
+ OutputArray labels=noArray(),
+ OutputArray probs=noArray());
+
+ CV_WRAP Vec2d predict(InputArray sample,
+ OutputArray probs=noArray()) const;
+
+ CV_WRAP bool isTrained() const;
+
+ AlgorithmInfo* info() const;
+ virtual void read(const FileNode& fn);
+
+protected:
+
+ virtual void setTrainData(int startStep, const Mat& samples,
+ const Mat* probs0,
+ const Mat* means0,
+ const vector<Mat>* covs0,
+ const Mat* weights0);
+
+ bool doTrain(int startStep,
+ OutputArray logLikelihoods,
+ OutputArray labels,
+ OutputArray probs);
+ virtual void eStep();
+ virtual void mStep();
+
+ void clusterTrainSamples();
+ void decomposeCovs();
+ void computeLogWeightDivDet();
+
+ Vec2d computeProbabilities(const Mat& sample, Mat* probs) const;
+
+ // all inner matrices have type CV_64FC1
+ CV_PROP_RW int nclusters;
+ CV_PROP_RW int covMatType;
+ CV_PROP_RW int maxIters;
+ CV_PROP_RW double epsilon;
+
+ Mat trainSamples;
+ Mat trainProbs;
+ Mat trainLogLikelihoods;
+ Mat trainLabels;
+
+ CV_PROP Mat weights;
+ CV_PROP Mat means;
+ CV_PROP vector<Mat> covs;
+
+ vector<Mat> covsEigenValues;
+ vector<Mat> covsRotateMats;
+ vector<Mat> invCovsEigenValues;
+ Mat logWeightDivDet;
+};
+} // namespace cv
+
+/****************************************************************************************\
+* Decision Tree *
+\****************************************************************************************/\
+struct CvPair16u32s
+{
+ unsigned short* u;
+ int* i;
+};
+
+
+#define CV_DTREE_CAT_DIR(idx,subset) \
+ (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1)
+
+struct CvDTreeSplit
+{
+ int var_idx;
+ int condensed_idx;
+ int inversed;
+ float quality;
+ CvDTreeSplit* next;
+ union
+ {
+ int subset[2];
+ struct
+ {
+ float c;
+ int split_point;
+ }
+ ord;
+ };
+};
+
+struct CvDTreeNode
+{
+ int class_idx;
+ int Tn;
+ double value;
+
+ CvDTreeNode* parent;
+ CvDTreeNode* left;
+ CvDTreeNode* right;
+
+ CvDTreeSplit* split;
+
+ int sample_count;
+ int depth;
+ int* num_valid;
+ int offset;
+ int buf_idx;
+ double maxlr;
+
+ // global pruning data
+ int complexity;
+ double alpha;
+ double node_risk, tree_risk, tree_error;
+
+ // cross-validation pruning data
+ int* cv_Tn;
+ double* cv_node_risk;
+ double* cv_node_error;
+
+ int get_num_valid(int vi) { return num_valid ? num_valid[vi] : sample_count; }
+ void set_num_valid(int vi, int n) { if( num_valid ) num_valid[vi] = n; }
+};
+
+
+struct CV_EXPORTS_W_MAP CvDTreeParams
+{
+ CV_PROP_RW int max_categories;
+ CV_PROP_RW int max_depth;
+ CV_PROP_RW int min_sample_count;
+ CV_PROP_RW int cv_folds;
+ CV_PROP_RW bool use_surrogates;
+ CV_PROP_RW bool use_1se_rule;
+ CV_PROP_RW bool truncate_pruned_tree;
+ CV_PROP_RW float regression_accuracy;
+ const float* priors;
+
+ CvDTreeParams();
+ CvDTreeParams( int max_depth, int min_sample_count,
+ float regression_accuracy, bool use_surrogates,
+ int max_categories, int cv_folds,
+ bool use_1se_rule, bool truncate_pruned_tree,
+ const float* priors );
+};
+
+
+struct CV_EXPORTS CvDTreeTrainData
+{
+ CvDTreeTrainData();
+ CvDTreeTrainData( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ const CvDTreeParams& params=CvDTreeParams(),
+ bool _shared=false, bool _add_labels=false );
+ virtual ~CvDTreeTrainData();
+
+ virtual void set_data( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ const CvDTreeParams& params=CvDTreeParams(),
+ bool _shared=false, bool _add_labels=false,
+ bool _update_data=false );
+ virtual void do_responses_copy();
+
+ virtual void get_vectors( const CvMat* _subsample_idx,
+ float* values, uchar* missing, float* responses, bool get_class_idx=false );
+
+ virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx );
+
+ virtual void write_params( CvFileStorage* fs ) const;
+ virtual void read_params( CvFileStorage* fs, CvFileNode* node );
+
+ // release all the data
+ virtual void clear();
+
+ int get_num_classes() const;
+ int get_var_type(int vi) const;
+ int get_work_var_count() const {return work_var_count;}
+
+ virtual const float* get_ord_responses( CvDTreeNode* n, float* values_buf, int* sample_indices_buf );
+ virtual const int* get_class_labels( CvDTreeNode* n, int* labels_buf );
+ virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf );
+ virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf );
+ virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf );
+ virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf,
+ const float** ord_values, const int** sorted_indices, int* sample_indices_buf );
+ virtual int get_child_buf_idx( CvDTreeNode* n );
+
+ ////////////////////////////////////
+
+ virtual bool set_params( const CvDTreeParams& params );
+ virtual CvDTreeNode* new_node( CvDTreeNode* parent, int count,
+ int storage_idx, int offset );
+
+ virtual CvDTreeSplit* new_split_ord( int vi, float cmp_val,
+ int split_point, int inversed, float quality );
+ virtual CvDTreeSplit* new_split_cat( int vi, float quality );
+ virtual void free_node_data( CvDTreeNode* node );
+ virtual void free_train_data();
+ virtual void free_node( CvDTreeNode* node );
+
+ int sample_count, var_all, var_count, max_c_count;
+ int ord_var_count, cat_var_count, work_var_count;
+ bool have_labels, have_priors;
+ bool is_classifier;
+ int tflag;
+
+ const CvMat* train_data;
+ const CvMat* responses;
+ CvMat* responses_copy; // used in Boosting
+
+ int buf_count, buf_size; // buf_size is obsolete, please do not use it, use expression ((int64)buf->rows * (int64)buf->cols / buf_count) instead
+ bool shared;
+ int is_buf_16u;
+
+ CvMat* cat_count;
+ CvMat* cat_ofs;
+ CvMat* cat_map;
+
+ CvMat* counts;
+ CvMat* buf;
+ inline size_t get_length_subbuf() const
+ {
+ size_t res = (size_t)(work_var_count + 1) * (size_t)sample_count;
+ return res;
+ }
+
+ CvMat* direction;
+ CvMat* split_buf;
+
+ CvMat* var_idx;
+ CvMat* var_type; // i-th element =
+ // k<0 - ordered
+ // k>=0 - categorical, see k-th element of cat_* arrays
+ CvMat* priors;
+ CvMat* priors_mult;
+
+ CvDTreeParams params;
+
+ CvMemStorage* tree_storage;
+ CvMemStorage* temp_storage;
+
+ CvDTreeNode* data_root;
+
+ CvSet* node_heap;
+ CvSet* split_heap;
+ CvSet* cv_heap;
+ CvSet* nv_heap;
+
+ cv::RNG* rng;
+};
+
+class CvDTree;
+class CvForestTree;
+
+namespace cv
+{
+ struct DTreeBestSplitFinder;
+ struct ForestTreeBestSplitFinder;
+}
+
+class CV_EXPORTS_W CvDTree : public CvStatModel
+{
+public:
+ CV_WRAP CvDTree();
+ virtual ~CvDTree();
+
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvDTreeParams params=CvDTreeParams() );
+
+ virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() );
+
+ // type in {CV_TRAIN_ERROR, CV_TEST_ERROR}
+ virtual float calc_error( CvMLData* trainData, int type, std::vector<float> *resp = 0 );
+
+ virtual bool train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx );
+
+ virtual CvDTreeNode* predict( const CvMat* sample, const CvMat* missingDataMask=0,
+ bool preprocessedInput=false ) const;
+
+ CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvDTreeParams params=CvDTreeParams() );
+
+ CV_WRAP virtual CvDTreeNode* predict( const cv::Mat& sample, const cv::Mat& missingDataMask=cv::Mat(),
+ bool preprocessedInput=false ) const;
+ CV_WRAP virtual cv::Mat getVarImportance();
+
+ virtual const CvMat* get_var_importance();
+ CV_WRAP virtual void clear();
+
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+ virtual void write( CvFileStorage* fs, const char* name ) const;
+
+ // special read & write methods for trees in the tree ensembles
+ virtual void read( CvFileStorage* fs, CvFileNode* node,
+ CvDTreeTrainData* data );
+ virtual void write( CvFileStorage* fs ) const;
+
+ const CvDTreeNode* get_root() const;
+ int get_pruned_tree_idx() const;
+ CvDTreeTrainData* get_data();
+
+protected:
+ friend struct cv::DTreeBestSplitFinder;
+
+ virtual bool do_train( const CvMat* _subsample_idx );
+
+ virtual void try_split_node( CvDTreeNode* n );
+ virtual void split_node_data( CvDTreeNode* n );
+ virtual CvDTreeSplit* find_best_split( CvDTreeNode* n );
+ virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 );
+ virtual double calc_node_dir( CvDTreeNode* node );
+ virtual void complete_node_dir( CvDTreeNode* node );
+ virtual void cluster_categories( const int* vectors, int vector_count,
+ int var_count, int* sums, int k, int* cluster_labels );
+
+ virtual void calc_node_value( CvDTreeNode* node );
+
+ virtual void prune_cv();
+ virtual double update_tree_rnc( int T, int fold );
+ virtual int cut_tree( int T, int fold, double min_alpha );
+ virtual void free_prune_data(bool cut_tree);
+ virtual void free_tree();
+
+ virtual void write_node( CvFileStorage* fs, CvDTreeNode* node ) const;
+ virtual void write_split( CvFileStorage* fs, CvDTreeSplit* split ) const;
+ virtual CvDTreeNode* read_node( CvFileStorage* fs, CvFileNode* node, CvDTreeNode* parent );
+ virtual CvDTreeSplit* read_split( CvFileStorage* fs, CvFileNode* node );
+ virtual void write_tree_nodes( CvFileStorage* fs ) const;
+ virtual void read_tree_nodes( CvFileStorage* fs, CvFileNode* node );
+
+ CvDTreeNode* root;
+ CvMat* var_importance;
+ CvDTreeTrainData* data;
+
+public:
+ int pruned_tree_idx;
+};
+
+
+/****************************************************************************************\
+* Random Trees Classifier *
+\****************************************************************************************/
+
+class CvRTrees;
+
+class CV_EXPORTS CvForestTree: public CvDTree
+{
+public:
+ CvForestTree();
+ virtual ~CvForestTree();
+
+ virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx, CvRTrees* forest );
+
+ virtual int get_var_count() const {return data ? data->var_count : 0;}
+ virtual void read( CvFileStorage* fs, CvFileNode* node, CvRTrees* forest, CvDTreeTrainData* _data );
+
+ /* dummy methods to avoid warnings: BEGIN */
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvDTreeParams params=CvDTreeParams() );
+
+ virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx );
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+ virtual void read( CvFileStorage* fs, CvFileNode* node,
+ CvDTreeTrainData* data );
+ /* dummy methods to avoid warnings: END */
+
+protected:
+ friend struct cv::ForestTreeBestSplitFinder;
+
+ virtual CvDTreeSplit* find_best_split( CvDTreeNode* n );
+ CvRTrees* forest;
+};
+
+
+struct CV_EXPORTS_W_MAP CvRTParams : public CvDTreeParams
+{
+ //Parameters for the forest
+ CV_PROP_RW bool calc_var_importance; // true <=> RF processes variable importance
+ CV_PROP_RW int nactive_vars;
+ CV_PROP_RW CvTermCriteria term_crit;
+
+ CvRTParams();
+ CvRTParams( int max_depth, int min_sample_count,
+ float regression_accuracy, bool use_surrogates,
+ int max_categories, const float* priors, bool calc_var_importance,
+ int nactive_vars, int max_num_of_trees_in_the_forest,
+ float forest_accuracy, int termcrit_type );
+};
+
+
+class CV_EXPORTS_W CvRTrees : public CvStatModel
+{
+public:
+ CV_WRAP CvRTrees();
+ virtual ~CvRTrees();
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvRTParams params=CvRTParams() );
+
+ virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() );
+ virtual float predict( const CvMat* sample, const CvMat* missing = 0 ) const;
+ virtual float predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const;
+
+ CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvRTParams params=CvRTParams() );
+ CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const;
+ CV_WRAP virtual float predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const;
+ CV_WRAP virtual cv::Mat getVarImportance();
+
+ CV_WRAP virtual void clear();
+
+ virtual const CvMat* get_var_importance();
+ virtual float get_proximity( const CvMat* sample1, const CvMat* sample2,
+ const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const;
+
+ virtual float calc_error( CvMLData* data, int type , std::vector<float>* resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR}
+
+ virtual float get_train_error();
+
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+ virtual void write( CvFileStorage* fs, const char* name ) const;
+
+ CvMat* get_active_var_mask();
+ CvRNG* get_rng();
+
+ int get_tree_count() const;
+ CvForestTree* get_tree(int i) const;
+
+protected:
+ virtual std::string getName() const;
+
+ virtual bool grow_forest( const CvTermCriteria term_crit );
+
+ // array of the trees of the forest
+ CvForestTree** trees;
+ CvDTreeTrainData* data;
+ int ntrees;
+ int nclasses;
+ double oob_error;
+ CvMat* var_importance;
+ int nsamples;
+
+ cv::RNG* rng;
+ CvMat* active_var_mask;
+};
+
+/****************************************************************************************\
+* Extremely randomized trees Classifier *
+\****************************************************************************************/
+struct CV_EXPORTS CvERTreeTrainData : public CvDTreeTrainData
+{
+ virtual void set_data( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ const CvDTreeParams& params=CvDTreeParams(),
+ bool _shared=false, bool _add_labels=false,
+ bool _update_data=false );
+ virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf,
+ const float** ord_values, const int** missing, int* sample_buf = 0 );
+ virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf );
+ virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf );
+ virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf );
+ virtual void get_vectors( const CvMat* _subsample_idx, float* values, uchar* missing,
+ float* responses, bool get_class_idx=false );
+ virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx );
+ const CvMat* missing_mask;
+};
+
+class CV_EXPORTS CvForestERTree : public CvForestTree
+{
+protected:
+ virtual double calc_node_dir( CvDTreeNode* node );
+ virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual void split_node_data( CvDTreeNode* n );
+};
+
+class CV_EXPORTS_W CvERTrees : public CvRTrees
+{
+public:
+ CV_WRAP CvERTrees();
+ virtual ~CvERTrees();
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvRTParams params=CvRTParams());
+ CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvRTParams params=CvRTParams());
+ virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() );
+protected:
+ virtual std::string getName() const;
+ virtual bool grow_forest( const CvTermCriteria term_crit );
+};
+
+
+/****************************************************************************************\
+* Boosted tree classifier *
+\****************************************************************************************/
+
+struct CV_EXPORTS_W_MAP CvBoostParams : public CvDTreeParams
+{
+ CV_PROP_RW int boost_type;
+ CV_PROP_RW int weak_count;
+ CV_PROP_RW int split_criteria;
+ CV_PROP_RW double weight_trim_rate;
+
+ CvBoostParams();
+ CvBoostParams( int boost_type, int weak_count, double weight_trim_rate,
+ int max_depth, bool use_surrogates, const float* priors );
+};
+
+
+class CvBoost;
+
+class CV_EXPORTS CvBoostTree: public CvDTree
+{
+public:
+ CvBoostTree();
+ virtual ~CvBoostTree();
+
+ virtual bool train( CvDTreeTrainData* trainData,
+ const CvMat* subsample_idx, CvBoost* ensemble );
+
+ virtual void scale( double s );
+ virtual void read( CvFileStorage* fs, CvFileNode* node,
+ CvBoost* ensemble, CvDTreeTrainData* _data );
+ virtual void clear();
+
+ /* dummy methods to avoid warnings: BEGIN */
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvDTreeParams params=CvDTreeParams() );
+ virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx );
+
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+ virtual void read( CvFileStorage* fs, CvFileNode* node,
+ CvDTreeTrainData* data );
+ /* dummy methods to avoid warnings: END */
+
+protected:
+
+ virtual void try_split_node( CvDTreeNode* n );
+ virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi,
+ float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 );
+ virtual void calc_node_value( CvDTreeNode* n );
+ virtual double calc_node_dir( CvDTreeNode* n );
+
+ CvBoost* ensemble;
+};
+
+
+class CV_EXPORTS_W CvBoost : public CvStatModel
+{
+public:
+ // Boosting type
+ enum { DISCRETE=0, REAL=1, LOGIT=2, GENTLE=3 };
+
+ // Splitting criteria
+ enum { DEFAULT=0, GINI=1, MISCLASS=3, SQERR=4 };
+
+ CV_WRAP CvBoost();
+ virtual ~CvBoost();
+
+ CvBoost( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvBoostParams params=CvBoostParams() );
+
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvBoostParams params=CvBoostParams(),
+ bool update=false );
+
+ virtual bool train( CvMLData* data,
+ CvBoostParams params=CvBoostParams(),
+ bool update=false );
+
+ virtual float predict( const CvMat* sample, const CvMat* missing=0,
+ CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ,
+ bool raw_mode=false, bool return_sum=false ) const;
+
+ CV_WRAP CvBoost( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvBoostParams params=CvBoostParams() );
+
+ CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvBoostParams params=CvBoostParams(),
+ bool update=false );
+
+ CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(),
+ const cv::Range& slice=cv::Range::all(), bool rawMode=false,
+ bool returnSum=false ) const;
+
+ virtual float calc_error( CvMLData* _data, int type , std::vector<float> *resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR}
+
+ CV_WRAP virtual void prune( CvSlice slice );
+
+ CV_WRAP virtual void clear();
+
+ virtual void write( CvFileStorage* storage, const char* name ) const;
+ virtual void read( CvFileStorage* storage, CvFileNode* node );
+ virtual const CvMat* get_active_vars(bool absolute_idx=true);
+
+ CvSeq* get_weak_predictors();
+
+ CvMat* get_weights();
+ CvMat* get_subtree_weights();
+ CvMat* get_weak_response();
+ const CvBoostParams& get_params() const;
+ const CvDTreeTrainData* get_data() const;
+
+protected:
+
+ void update_weights_impl( CvBoostTree* tree, double initial_weights[2] );
+
+ virtual bool set_params( const CvBoostParams& params );
+ virtual void update_weights( CvBoostTree* tree );
+ virtual void trim_weights();
+ virtual void write_params( CvFileStorage* fs ) const;
+ virtual void read_params( CvFileStorage* fs, CvFileNode* node );
+
+ CvDTreeTrainData* data;
+ CvBoostParams params;
+ CvSeq* weak;
+
+ CvMat* active_vars;
+ CvMat* active_vars_abs;
+ bool have_active_cat_vars;
+
+ CvMat* orig_response;
+ CvMat* sum_response;
+ CvMat* weak_eval;
+ CvMat* subsample_mask;
+ CvMat* weights;
+ CvMat* subtree_weights;
+ bool have_subsample;
+};
+
+
+/****************************************************************************************\
+* Gradient Boosted Trees *
+\****************************************************************************************/
+
+// DataType: STRUCT CvGBTreesParams
+// Parameters of GBT (Gradient Boosted trees model), including single
+// tree settings and ensemble parameters.
+//
+// weak_count - count of trees in the ensemble
+// loss_function_type - loss function used for ensemble training
+// subsample_portion - portion of whole training set used for
+// every single tree training.
+// subsample_portion value is in (0.0, 1.0].
+// subsample_portion == 1.0 when whole dataset is
+// used on each step. Count of sample used on each
+// step is computed as
+// int(total_samples_count * subsample_portion).
+// shrinkage - regularization parameter.
+// Each tree prediction is multiplied on shrinkage value.
+
+
+struct CV_EXPORTS_W_MAP CvGBTreesParams : public CvDTreeParams
+{
+ CV_PROP_RW int weak_count;
+ CV_PROP_RW int loss_function_type;
+ CV_PROP_RW float subsample_portion;
+ CV_PROP_RW float shrinkage;
+
+ CvGBTreesParams();
+ CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage,
+ float subsample_portion, int max_depth, bool use_surrogates );
+};
+
+// DataType: CLASS CvGBTrees
+// Gradient Boosting Trees (GBT) algorithm implementation.
+//
+// data - training dataset
+// params - parameters of the CvGBTrees
+// weak - array[0..(class_count-1)] of CvSeq
+// for storing tree ensembles
+// orig_response - original responses of the training set samples
+// sum_response - predicitons of the current model on the training dataset.
+// this matrix is updated on every iteration.
+// sum_response_tmp - predicitons of the model on the training set on the next
+// step. On every iteration values of sum_responses_tmp are
+// computed via sum_responses values. When the current
+// step is complete sum_response values become equal to
+// sum_responses_tmp.
+// sampleIdx - indices of samples used for training the ensemble.
+// CvGBTrees training procedure takes a set of samples
+// (train_data) and a set of responses (responses).
+// Only pairs (train_data[i], responses[i]), where i is
+// in sample_idx are used for training the ensemble.
+// subsample_train - indices of samples used for training a single decision
+// tree on the current step. This indices are countered
+// relatively to the sample_idx, so that pairs
+// (train_data[sample_idx[i]], responses[sample_idx[i]])
+// are used for training a decision tree.
+// Training set is randomly splited
+// in two parts (subsample_train and subsample_test)
+// on every iteration accordingly to the portion parameter.
+// subsample_test - relative indices of samples from the training set,
+// which are not used for training a tree on the current
+// step.
+// missing - mask of the missing values in the training set. This
+// matrix has the same size as train_data. 1 - missing
+// value, 0 - not a missing value.
+// class_labels - output class labels map.
+// rng - random number generator. Used for spliting the
+// training set.
+// class_count - count of output classes.
+// class_count == 1 in the case of regression,
+// and > 1 in the case of classification.
+// delta - Huber loss function parameter.
+// base_value - start point of the gradient descent procedure.
+// model prediction is
+// f(x) = f_0 + sum_{i=1..weak_count-1}(f_i(x)), where
+// f_0 is the base value.
+
+
+
+class CV_EXPORTS_W CvGBTrees : public CvStatModel
+{
+public:
+
+ /*
+ // DataType: ENUM
+ // Loss functions implemented in CvGBTrees.
+ //
+ // SQUARED_LOSS
+ // problem: regression
+ // loss = (x - x')^2
+ //
+ // ABSOLUTE_LOSS
+ // problem: regression
+ // loss = abs(x - x')
+ //
+ // HUBER_LOSS
+ // problem: regression
+ // loss = delta*( abs(x - x') - delta/2), if abs(x - x') > delta
+ // 1/2*(x - x')^2, if abs(x - x') <= delta,
+ // where delta is the alpha-quantile of pseudo responses from
+ // the training set.
+ //
+ // DEVIANCE_LOSS
+ // problem: classification
+ //
+ */
+ enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS};
+
+
+ /*
+ // Default constructor. Creates a model only (without training).
+ // Should be followed by one form of the train(...) function.
+ //
+ // API
+ // CvGBTrees();
+
+ // INPUT
+ // OUTPUT
+ // RESULT
+ */
+ CV_WRAP CvGBTrees();
+
+
+ /*
+ // Full form constructor. Creates a gradient boosting model and does the
+ // train.
+ //
+ // API
+ // CvGBTrees( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvGBTreesParams params=CvGBTreesParams() );
+
+ // INPUT
+ // trainData - a set of input feature vectors.
+ // size of matrix is
+ // <count of samples> x <variables count>
+ // or <variables count> x <count of samples>
+ // depending on the tflag parameter.
+ // matrix values are float.
+ // tflag - a flag showing how do samples stored in the
+ // trainData matrix row by row (tflag=CV_ROW_SAMPLE)
+ // or column by column (tflag=CV_COL_SAMPLE).
+ // responses - a vector of responses corresponding to the samples
+ // in trainData.
+ // varIdx - indices of used variables. zero value means that all
+ // variables are active.
+ // sampleIdx - indices of used samples. zero value means that all
+ // samples from trainData are in the training set.
+ // varType - vector of <variables count> length. gives every
+ // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED.
+ // varType = 0 means all variables are numerical.
+ // missingDataMask - a mask of misiing values in trainData.
+ // missingDataMask = 0 means that there are no missing
+ // values.
+ // params - parameters of GTB algorithm.
+ // OUTPUT
+ // RESULT
+ */
+ CvGBTrees( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvGBTreesParams params=CvGBTreesParams() );
+
+
+ /*
+ // Destructor.
+ */
+ virtual ~CvGBTrees();
+
+
+ /*
+ // Gradient tree boosting model training
+ //
+ // API
+ // virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvGBTreesParams params=CvGBTreesParams(),
+ bool update=false );
+
+ // INPUT
+ // trainData - a set of input feature vectors.
+ // size of matrix is
+ // <count of samples> x <variables count>
+ // or <variables count> x <count of samples>
+ // depending on the tflag parameter.
+ // matrix values are float.
+ // tflag - a flag showing how do samples stored in the
+ // trainData matrix row by row (tflag=CV_ROW_SAMPLE)
+ // or column by column (tflag=CV_COL_SAMPLE).
+ // responses - a vector of responses corresponding to the samples
+ // in trainData.
+ // varIdx - indices of used variables. zero value means that all
+ // variables are active.
+ // sampleIdx - indices of used samples. zero value means that all
+ // samples from trainData are in the training set.
+ // varType - vector of <variables count> length. gives every
+ // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED.
+ // varType = 0 means all variables are numerical.
+ // missingDataMask - a mask of misiing values in trainData.
+ // missingDataMask = 0 means that there are no missing
+ // values.
+ // params - parameters of GTB algorithm.
+ // update - is not supported now. (!)
+ // OUTPUT
+ // RESULT
+ // Error state.
+ */
+ virtual bool train( const CvMat* trainData, int tflag,
+ const CvMat* responses, const CvMat* varIdx=0,
+ const CvMat* sampleIdx=0, const CvMat* varType=0,
+ const CvMat* missingDataMask=0,
+ CvGBTreesParams params=CvGBTreesParams(),
+ bool update=false );
+
+
+ /*
+ // Gradient tree boosting model training
+ //
+ // API
+ // virtual bool train( CvMLData* data,
+ CvGBTreesParams params=CvGBTreesParams(),
+ bool update=false ) {return false;};
+
+ // INPUT
+ // data - training set.
+ // params - parameters of GTB algorithm.
+ // update - is not supported now. (!)
+ // OUTPUT
+ // RESULT
+ // Error state.
+ */
+ virtual bool train( CvMLData* data,
+ CvGBTreesParams params=CvGBTreesParams(),
+ bool update=false );
+
+
+ /*
+ // Response value prediction
+ //
+ // API
+ // virtual float predict_serial( const CvMat* sample, const CvMat* missing=0,
+ CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ,
+ int k=-1 ) const;
+
+ // INPUT
+ // sample - input sample of the same type as in the training set.
+ // missing - missing values mask. missing=0 if there are no
+ // missing values in sample vector.
+ // weak_responses - predictions of all of the trees.
+ // not implemented (!)
+ // slice - part of the ensemble used for prediction.
+ // slice = CV_WHOLE_SEQ when all trees are used.
+ // k - number of ensemble used.
+ // k is in {-1,0,1,..,<count of output classes-1>}.
+ // in the case of classification problem
+ // <count of output classes-1> ensembles are built.
+ // If k = -1 ordinary prediction is the result,
+ // otherwise function gives the prediction of the
+ // k-th ensemble only.
+ // OUTPUT
+ // RESULT
+ // Predicted value.
+ */
+ virtual float predict_serial( const CvMat* sample, const CvMat* missing=0,
+ CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ,
+ int k=-1 ) const;
+
+ /*
+ // Response value prediction.
+ // Parallel version (in the case of TBB existence)
+ //
+ // API
+ // virtual float predict( const CvMat* sample, const CvMat* missing=0,
+ CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ,
+ int k=-1 ) const;
+
+ // INPUT
+ // sample - input sample of the same type as in the training set.
+ // missing - missing values mask. missing=0 if there are no
+ // missing values in sample vector.
+ // weak_responses - predictions of all of the trees.
+ // not implemented (!)
+ // slice - part of the ensemble used for prediction.
+ // slice = CV_WHOLE_SEQ when all trees are used.
+ // k - number of ensemble used.
+ // k is in {-1,0,1,..,<count of output classes-1>}.
+ // in the case of classification problem
+ // <count of output classes-1> ensembles are built.
+ // If k = -1 ordinary prediction is the result,
+ // otherwise function gives the prediction of the
+ // k-th ensemble only.
+ // OUTPUT
+ // RESULT
+ // Predicted value.
+ */
+ virtual float predict( const CvMat* sample, const CvMat* missing=0,
+ CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ,
+ int k=-1 ) const;
+
+ /*
+ // Deletes all the data.
+ //
+ // API
+ // virtual void clear();
+
+ // INPUT
+ // OUTPUT
+ // delete data, weak, orig_response, sum_response,
+ // weak_eval, subsample_train, subsample_test,
+ // sample_idx, missing, lass_labels
+ // delta = 0.0
+ // RESULT
+ */
+ CV_WRAP virtual void clear();
+
+ /*
+ // Compute error on the train/test set.
+ //
+ // API
+ // virtual float calc_error( CvMLData* _data, int type,
+ // std::vector<float> *resp = 0 );
+ //
+ // INPUT
+ // data - dataset
+ // type - defines which error is to compute: train (CV_TRAIN_ERROR) or
+ // test (CV_TEST_ERROR).
+ // OUTPUT
+ // resp - vector of predicitons
+ // RESULT
+ // Error value.
+ */
+ virtual float calc_error( CvMLData* _data, int type,
+ std::vector<float> *resp = 0 );
+
+ /*
+ //
+ // Write parameters of the gtb model and data. Write learned model.
+ //
+ // API
+ // virtual void write( CvFileStorage* fs, const char* name ) const;
+ //
+ // INPUT
+ // fs - file storage to read parameters from.
+ // name - model name.
+ // OUTPUT
+ // RESULT
+ */
+ virtual void write( CvFileStorage* fs, const char* name ) const;
+
+
+ /*
+ //
+ // Read parameters of the gtb model and data. Read learned model.
+ //
+ // API
+ // virtual void read( CvFileStorage* fs, CvFileNode* node );
+ //
+ // INPUT
+ // fs - file storage to read parameters from.
+ // node - file node.
+ // OUTPUT
+ // RESULT
+ */
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+
+
+ // new-style C++ interface
+ CV_WRAP CvGBTrees( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvGBTreesParams params=CvGBTreesParams() );
+
+ CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
+ const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(),
+ const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(),
+ const cv::Mat& missingDataMask=cv::Mat(),
+ CvGBTreesParams params=CvGBTreesParams(),
+ bool update=false );
+
+ CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(),
+ const cv::Range& slice = cv::Range::all(),
+ int k=-1 ) const;
+
+protected:
+
+ /*
+ // Compute the gradient vector components.
+ //
+ // API
+ // virtual void find_gradient( const int k = 0);
+
+ // INPUT
+ // k - used for classification problem, determining current
+ // tree ensemble.
+ // OUTPUT
+ // changes components of data->responses
+ // which correspond to samples used for training
+ // on the current step.
+ // RESULT
+ */
+ virtual void find_gradient( const int k = 0);
+
+
+ /*
+ //
+ // Change values in tree leaves according to the used loss function.
+ //
+ // API
+ // virtual void change_values(CvDTree* tree, const int k = 0);
+ //
+ // INPUT
+ // tree - decision tree to change.
+ // k - used for classification problem, determining current
+ // tree ensemble.
+ // OUTPUT
+ // changes 'value' fields of the trees' leaves.
+ // changes sum_response_tmp.
+ // RESULT
+ */
+ virtual void change_values(CvDTree* tree, const int k = 0);
+
+
+ /*
+ //
+ // Find optimal constant prediction value according to the used loss
+ // function.
+ // The goal is to find a constant which gives the minimal summary loss
+ // on the _Idx samples.
+ //
+ // API
+ // virtual float find_optimal_value( const CvMat* _Idx );
+ //
+ // INPUT
+ // _Idx - indices of the samples from the training set.
+ // OUTPUT
+ // RESULT
+ // optimal constant value.
+ */
+ virtual float find_optimal_value( const CvMat* _Idx );
+
+
+ /*
+ //
+ // Randomly split the whole training set in two parts according
+ // to params.portion.
+ //
+ // API
+ // virtual void do_subsample();
+ //
+ // INPUT
+ // OUTPUT
+ // subsample_train - indices of samples used for training
+ // subsample_test - indices of samples used for test
+ // RESULT
+ */
+ virtual void do_subsample();
+
+
+ /*
+ //
+ // Internal recursive function giving an array of subtree tree leaves.
+ //
+ // API
+ // void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node );
+ //
+ // INPUT
+ // node - current leaf.
+ // OUTPUT
+ // count - count of leaves in the subtree.
+ // leaves - array of pointers to leaves.
+ // RESULT
+ */
+ void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node );
+
+
+ /*
+ //
+ // Get leaves of the tree.
+ //
+ // API
+ // CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len );
+ //
+ // INPUT
+ // dtree - decision tree.
+ // OUTPUT
+ // len - count of the leaves.
+ // RESULT
+ // CvDTreeNode** - array of pointers to leaves.
+ */
+ CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len );
+
+
+ /*
+ //
+ // Is it a regression or a classification.
+ //
+ // API
+ // bool problem_type();
+ //
+ // INPUT
+ // OUTPUT
+ // RESULT
+ // false if it is a classification problem,
+ // true - if regression.
+ */
+ virtual bool problem_type() const;
+
+
+ /*
+ //
+ // Write parameters of the gtb model.
+ //
+ // API
+ // virtual void write_params( CvFileStorage* fs ) const;
+ //
+ // INPUT
+ // fs - file storage to write parameters to.
+ // OUTPUT
+ // RESULT
+ */
+ virtual void write_params( CvFileStorage* fs ) const;
+
+
+ /*
+ //
+ // Read parameters of the gtb model and data.
+ //
+ // API
+ // virtual void read_params( CvFileStorage* fs );
+ //
+ // INPUT
+ // fs - file storage to read parameters from.
+ // OUTPUT
+ // params - parameters of the gtb model.
+ // data - contains information about the structure
+ // of the data set (count of variables,
+ // their types, etc.).
+ // class_labels - output class labels map.
+ // RESULT
+ */
+ virtual void read_params( CvFileStorage* fs, CvFileNode* fnode );
+ int get_len(const CvMat* mat) const;
+
+
+ CvDTreeTrainData* data;
+ CvGBTreesParams params;
+
+ CvSeq** weak;
+ CvMat* orig_response;
+ CvMat* sum_response;
+ CvMat* sum_response_tmp;
+ CvMat* sample_idx;
+ CvMat* subsample_train;
+ CvMat* subsample_test;
+ CvMat* missing;
+ CvMat* class_labels;
+
+ cv::RNG* rng;
+
+ int class_count;
+ float delta;
+ float base_value;
+
+};
+
+
+
+/****************************************************************************************\
+* Artificial Neural Networks (ANN) *
+\****************************************************************************************/
+
+/////////////////////////////////// Multi-Layer Perceptrons //////////////////////////////
+
+struct CV_EXPORTS_W_MAP CvANN_MLP_TrainParams
+{
+ CvANN_MLP_TrainParams();
+ CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method,
+ double param1, double param2=0 );
+ ~CvANN_MLP_TrainParams();
+
+ enum { BACKPROP=0, RPROP=1 };
+
+ CV_PROP_RW CvTermCriteria term_crit;
+ CV_PROP_RW int train_method;
+
+ // backpropagation parameters
+ CV_PROP_RW double bp_dw_scale, bp_moment_scale;
+
+ // rprop parameters
+ CV_PROP_RW double rp_dw0, rp_dw_plus, rp_dw_minus, rp_dw_min, rp_dw_max;
+};
+
+
+class CV_EXPORTS_W CvANN_MLP : public CvStatModel
+{
+public:
+ CV_WRAP CvANN_MLP();
+ CvANN_MLP( const CvMat* layerSizes,
+ int activateFunc=CvANN_MLP::SIGMOID_SYM,
+ double fparam1=0, double fparam2=0 );
+
+ virtual ~CvANN_MLP();
+
+ virtual void create( const CvMat* layerSizes,
+ int activateFunc=CvANN_MLP::SIGMOID_SYM,
+ double fparam1=0, double fparam2=0 );
+
+ virtual int train( const CvMat* inputs, const CvMat* outputs,
+ const CvMat* sampleWeights, const CvMat* sampleIdx=0,
+ CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(),
+ int flags=0 );
+ virtual float predict( const CvMat* inputs, CV_OUT CvMat* outputs ) const;
+
+ CV_WRAP CvANN_MLP( const cv::Mat& layerSizes,
+ int activateFunc=CvANN_MLP::SIGMOID_SYM,
+ double fparam1=0, double fparam2=0 );
+
+ CV_WRAP virtual void create( const cv::Mat& layerSizes,
+ int activateFunc=CvANN_MLP::SIGMOID_SYM,
+ double fparam1=0, double fparam2=0 );
+
+ CV_WRAP virtual int train( const cv::Mat& inputs, const cv::Mat& outputs,
+ const cv::Mat& sampleWeights, const cv::Mat& sampleIdx=cv::Mat(),
+ CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(),
+ int flags=0 );
+
+ CV_WRAP virtual float predict( const cv::Mat& inputs, CV_OUT cv::Mat& outputs ) const;
+
+ CV_WRAP virtual void clear();
+
+ // possible activation functions
+ enum { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2 };
+
+ // available training flags
+ enum { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 };
+
+ virtual void read( CvFileStorage* fs, CvFileNode* node );
+ virtual void write( CvFileStorage* storage, const char* name ) const;
+
+ int get_layer_count() { return layer_sizes ? layer_sizes->cols : 0; }
+ const CvMat* get_layer_sizes() { return layer_sizes; }
+ double* get_weights(int layer)
+ {
+ return layer_sizes && weights &&
+ (unsigned)layer <= (unsigned)layer_sizes->cols ? weights[layer] : 0;
+ }
+
+ virtual void calc_activ_func_deriv( CvMat* xf, CvMat* deriv, const double* bias ) const;
+
+protected:
+
+ virtual bool prepare_to_train( const CvMat* _inputs, const CvMat* _outputs,
+ const CvMat* _sample_weights, const CvMat* sampleIdx,
+ CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags );
+
+ // sequential random backpropagation
+ virtual int train_backprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw );
+
+ // RPROP algorithm
+ virtual int train_rprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw );
+
+ virtual void calc_activ_func( CvMat* xf, const double* bias ) const;
+ virtual void set_activ_func( int _activ_func=SIGMOID_SYM,
+ double _f_param1=0, double _f_param2=0 );
+ virtual void init_weights();
+ virtual void scale_input( const CvMat* _src, CvMat* _dst ) const;
+ virtual void scale_output( const CvMat* _src, CvMat* _dst ) const;
+ virtual void calc_input_scale( const CvVectors* vecs, int flags );
+ virtual void calc_output_scale( const CvVectors* vecs, int flags );
+
+ virtual void write_params( CvFileStorage* fs ) const;
+ virtual void read_params( CvFileStorage* fs, CvFileNode* node );
+
+ CvMat* layer_sizes;
+ CvMat* wbuf;
+ CvMat* sample_weights;
+ double** weights;
+ double f_param1, f_param2;
+ double min_val, max_val, min_val1, max_val1;
+ int activ_func;
+ int max_count, max_buf_sz;
+ CvANN_MLP_TrainParams params;
+ cv::RNG* rng;
+};
+
+/****************************************************************************************\
+* Auxilary functions declarations *
+\****************************************************************************************/
+
+/* Generates <sample> from multivariate normal distribution, where <mean> - is an
+ average row vector, <cov> - symmetric covariation matrix */
+CVAPI(void) cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample,
+ CvRNG* rng CV_DEFAULT(0) );
+
+/* Generates sample from gaussian mixture distribution */
+CVAPI(void) cvRandGaussMixture( CvMat* means[],
+ CvMat* covs[],
+ float weights[],
+ int clsnum,
+ CvMat* sample,
+ CvMat* sampClasses CV_DEFAULT(0) );
+
+#define CV_TS_CONCENTRIC_SPHERES 0
+
+/* creates test set */
+CVAPI(void) cvCreateTestSet( int type, CvMat** samples,
+ int num_samples,
+ int num_features,
+ CvMat** responses,
+ int num_classes, ... );
+
+/****************************************************************************************\
+* Data *
+\****************************************************************************************/
+
+#define CV_COUNT 0
+#define CV_PORTION 1
+
+struct CV_EXPORTS CvTrainTestSplit
+{
+ CvTrainTestSplit();
+ CvTrainTestSplit( int train_sample_count, bool mix = true);
+ CvTrainTestSplit( float train_sample_portion, bool mix = true);
+
+ union
+ {
+ int count;
+ float portion;
+ } train_sample_part;
+ int train_sample_part_mode;
+
+ bool mix;
+};
+
+class CV_EXPORTS CvMLData
+{
+public:
+ CvMLData();
+ virtual ~CvMLData();
+
+ // returns:
+ // 0 - OK
+ // -1 - file can not be opened or is not correct
+ int read_csv( const char* filename );
+
+ const CvMat* get_values() const;
+ const CvMat* get_responses();
+ const CvMat* get_missing() const;
+
+ void set_response_idx( int idx ); // old response become predictors, new response_idx = idx
+ // if idx < 0 there will be no response
+ int get_response_idx() const;
+
+ void set_train_test_split( const CvTrainTestSplit * spl );
+ const CvMat* get_train_sample_idx() const;
+ const CvMat* get_test_sample_idx() const;
+ void mix_train_and_test_idx();
+
+ const CvMat* get_var_idx();
+ void chahge_var_idx( int vi, bool state ); // misspelled (saved for back compitability),
+ // use change_var_idx
+ void change_var_idx( int vi, bool state ); // state == true to set vi-variable as predictor
+
+ const CvMat* get_var_types();
+ int get_var_type( int var_idx ) const;
+ // following 2 methods enable to change vars type
+ // use these methods to assign CV_VAR_CATEGORICAL type for categorical variable
+ // with numerical labels; in the other cases var types are correctly determined automatically
+ void set_var_types( const char* str ); // str examples:
+ // "ord[0-17],cat[18]", "ord[0,2,4,10-12], cat[1,3,5-9,13,14]",
+ // "cat", "ord" (all vars are categorical/ordered)
+ void change_var_type( int var_idx, int type); // type in { CV_VAR_ORDERED, CV_VAR_CATEGORICAL }
+
+ void set_delimiter( char ch );
+ char get_delimiter() const;
+
+ void set_miss_ch( char ch );
+ char get_miss_ch() const;
+
+ const std::map<std::string, int>& get_class_labels_map() const;
+
+protected:
+ virtual void clear();
+
+ void str_to_flt_elem( const char* token, float& flt_elem, int& type);
+ void free_train_test_idx();
+
+ char delimiter;
+ char miss_ch;
+ //char flt_separator;
+
+ CvMat* values;
+ CvMat* missing;
+ CvMat* var_types;
+ CvMat* var_idx_mask;
+
+ CvMat* response_out; // header
+ CvMat* var_idx_out; // mat
+ CvMat* var_types_out; // mat
+
+ int response_idx;
+
+ int train_sample_count;
+ bool mix;
+
+ int total_class_count;
+ std::map<std::string, int> class_map;
+
+ CvMat* train_sample_idx;
+ CvMat* test_sample_idx;
+ int* sample_idx; // data of train_sample_idx and test_sample_idx
+
+ cv::RNG* rng;
+};
+
+
+namespace cv
+{
+
+typedef CvStatModel StatModel;
+typedef CvParamGrid ParamGrid;
+typedef CvNormalBayesClassifier NormalBayesClassifier;
+typedef CvKNearest KNearest;
+typedef CvSVMParams SVMParams;
+typedef CvSVMKernel SVMKernel;
+typedef CvSVMSolver SVMSolver;
+typedef CvSVM SVM;
+typedef CvDTreeParams DTreeParams;
+typedef CvMLData TrainData;
+typedef CvDTree DecisionTree;
+typedef CvForestTree ForestTree;
+typedef CvRTParams RandomTreeParams;
+typedef CvRTrees RandomTrees;
+typedef CvERTreeTrainData ERTreeTRainData;
+typedef CvForestERTree ERTree;
+typedef CvERTrees ERTrees;
+typedef CvBoostParams BoostParams;
+typedef CvBoostTree BoostTree;
+typedef CvBoost Boost;
+typedef CvANN_MLP_TrainParams ANN_MLP_TrainParams;
+typedef CvANN_MLP NeuralNet_MLP;
+typedef CvGBTreesParams GradientBoostingTreeParams;
+typedef CvGBTrees GradientBoostingTrees;
+
+template<> CV_EXPORTS void Ptr<CvDTreeSplit>::delete_obj();
+
+CV_EXPORTS bool initModule_ml(void);
+
+}
+
+#endif // __cplusplus
+#endif // __OPENCV_ML_HPP__
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/features2d.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/features2d.hpp
new file mode 100644
index 00000000..f23bec8b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/features2d.hpp
@@ -0,0 +1,155 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_NONFREE_FEATURES_2D_HPP__
+#define __OPENCV_NONFREE_FEATURES_2D_HPP__
+
+#include "opencv2/features2d/features2d.hpp"
+
+#ifdef __cplusplus
+
+namespace cv
+{
+
+/*!
+ SIFT implementation.
+
+ The class implements SIFT algorithm by D. Lowe.
+*/
+class CV_EXPORTS_W SIFT : public Feature2D
+{
+public:
+ CV_WRAP explicit SIFT( int nfeatures=0, int nOctaveLayers=3,
+ double contrastThreshold=0.04, double edgeThreshold=10,
+ double sigma=1.6);
+
+ //! returns the descriptor size in floats (128)
+ CV_WRAP int descriptorSize() const;
+
+ //! returns the descriptor type
+ CV_WRAP int descriptorType() const;
+
+ //! finds the keypoints using SIFT algorithm
+ void operator()(InputArray img, InputArray mask,
+ vector<KeyPoint>& keypoints) const;
+ //! finds the keypoints and computes descriptors for them using SIFT algorithm.
+ //! Optionally it can compute descriptors for the user-provided keypoints
+ void operator()(InputArray img, InputArray mask,
+ vector<KeyPoint>& keypoints,
+ OutputArray descriptors,
+ bool useProvidedKeypoints=false) const;
+
+ AlgorithmInfo* info() const;
+
+ void buildGaussianPyramid( const Mat& base, vector<Mat>& pyr, int nOctaves ) const;
+ void buildDoGPyramid( const vector<Mat>& pyr, vector<Mat>& dogpyr ) const;
+ void findScaleSpaceExtrema( const vector<Mat>& gauss_pyr, const vector<Mat>& dog_pyr,
+ vector<KeyPoint>& keypoints ) const;
+
+protected:
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+ void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+
+ CV_PROP_RW int nfeatures;
+ CV_PROP_RW int nOctaveLayers;
+ CV_PROP_RW double contrastThreshold;
+ CV_PROP_RW double edgeThreshold;
+ CV_PROP_RW double sigma;
+};
+
+typedef SIFT SiftFeatureDetector;
+typedef SIFT SiftDescriptorExtractor;
+
+/*!
+ SURF implementation.
+
+ The class implements SURF algorithm by H. Bay et al.
+ */
+class CV_EXPORTS_W SURF : public Feature2D
+{
+public:
+ //! the default constructor
+ CV_WRAP SURF();
+ //! the full constructor taking all the necessary parameters
+ explicit CV_WRAP SURF(double hessianThreshold,
+ int nOctaves=4, int nOctaveLayers=2,
+ bool extended=true, bool upright=false);
+
+ //! returns the descriptor size in float's (64 or 128)
+ CV_WRAP int descriptorSize() const;
+
+ //! returns the descriptor type
+ CV_WRAP int descriptorType() const;
+
+ //! finds the keypoints using fast hessian detector used in SURF
+ void operator()(InputArray img, InputArray mask,
+ CV_OUT vector<KeyPoint>& keypoints) const;
+ //! finds the keypoints and computes their descriptors. Optionally it can compute descriptors for the user-provided keypoints
+ void operator()(InputArray img, InputArray mask,
+ CV_OUT vector<KeyPoint>& keypoints,
+ OutputArray descriptors,
+ bool useProvidedKeypoints=false) const;
+
+ AlgorithmInfo* info() const;
+
+ CV_PROP_RW double hessianThreshold;
+ CV_PROP_RW int nOctaves;
+ CV_PROP_RW int nOctaveLayers;
+ CV_PROP_RW bool extended;
+ CV_PROP_RW bool upright;
+
+protected:
+
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
+ void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
+};
+
+typedef SURF SurfFeatureDetector;
+typedef SURF SurfDescriptorExtractor;
+
+} /* namespace cv */
+
+#endif /* __cplusplus */
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/gpu.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/gpu.hpp
new file mode 100644
index 00000000..722ef26a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/gpu.hpp
@@ -0,0 +1,128 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_NONFREE_GPU_HPP__
+#define __OPENCV_NONFREE_GPU_HPP__
+
+#include "opencv2/core/gpumat.hpp"
+
+namespace cv { namespace gpu {
+
+class CV_EXPORTS SURF_GPU
+{
+public:
+ enum KeypointLayout
+ {
+ X_ROW = 0,
+ Y_ROW,
+ LAPLACIAN_ROW,
+ OCTAVE_ROW,
+ SIZE_ROW,
+ ANGLE_ROW,
+ HESSIAN_ROW,
+ ROWS_COUNT
+ };
+
+ //! the default constructor
+ SURF_GPU();
+ //! the full constructor taking all the necessary parameters
+ explicit SURF_GPU(double _hessianThreshold, int _nOctaves=4,
+ int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f, bool _upright = false);
+
+ //! returns the descriptor size in float's (64 or 128)
+ int descriptorSize() const;
+
+ //! upload host keypoints to device memory
+ void uploadKeypoints(const std::vector<KeyPoint>& keypoints, GpuMat& keypointsGPU);
+ //! download keypoints from device to host memory
+ void downloadKeypoints(const GpuMat& keypointsGPU, std::vector<KeyPoint>& keypoints);
+
+ //! download descriptors from device to host memory
+ void downloadDescriptors(const GpuMat& descriptorsGPU, std::vector<float>& descriptors);
+
+ //! finds the keypoints using fast hessian detector used in SURF
+ //! supports CV_8UC1 images
+ //! keypoints will have nFeature cols and 6 rows
+ //! keypoints.ptr<float>(X_ROW)[i] will contain x coordinate of i'th feature
+ //! keypoints.ptr<float>(Y_ROW)[i] will contain y coordinate of i'th feature
+ //! keypoints.ptr<float>(LAPLACIAN_ROW)[i] will contain laplacian sign of i'th feature
+ //! keypoints.ptr<float>(OCTAVE_ROW)[i] will contain octave of i'th feature
+ //! keypoints.ptr<float>(SIZE_ROW)[i] will contain size of i'th feature
+ //! keypoints.ptr<float>(ANGLE_ROW)[i] will contain orientation of i'th feature
+ //! keypoints.ptr<float>(HESSIAN_ROW)[i] will contain response of i'th feature
+ void operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints);
+ //! finds the keypoints and computes their descriptors.
+ //! Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction
+ void operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors,
+ bool useProvidedKeypoints = false);
+
+ void operator()(const GpuMat& img, const GpuMat& mask, std::vector<KeyPoint>& keypoints);
+ void operator()(const GpuMat& img, const GpuMat& mask, std::vector<KeyPoint>& keypoints, GpuMat& descriptors,
+ bool useProvidedKeypoints = false);
+
+ void operator()(const GpuMat& img, const GpuMat& mask, std::vector<KeyPoint>& keypoints, std::vector<float>& descriptors,
+ bool useProvidedKeypoints = false);
+
+ void releaseMemory();
+
+ // SURF parameters
+ double hessianThreshold;
+ int nOctaves;
+ int nOctaveLayers;
+ bool extended;
+ bool upright;
+
+ //! max keypoints = min(keypointsRatio * img.size().area(), 65535)
+ float keypointsRatio;
+
+ GpuMat sum, mask1, maskSum, intBuffer;
+
+ GpuMat det, trace;
+
+ GpuMat maxPosBuffer;
+};
+
+} // namespace gpu
+
+} // namespace cv
+
+#endif // __OPENCV_NONFREE_GPU_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/nonfree.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/nonfree.hpp
new file mode 100644
index 00000000..c64c566d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/nonfree.hpp
@@ -0,0 +1,57 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2012, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_NONFREE_HPP__
+#define __OPENCV_NONFREE_HPP__
+
+#include "opencv2/nonfree/features2d.hpp"
+
+namespace cv
+{
+
+CV_EXPORTS_W bool initModule_nonfree();
+
+}
+
+#endif
+
+/* End of file. */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/ocl.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/ocl.hpp
new file mode 100644
index 00000000..ba84d244
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/nonfree/ocl.hpp
@@ -0,0 +1,140 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_NONFREE_OCL_HPP__
+#define __OPENCV_NONFREE_OCL_HPP__
+
+#include "opencv2/ocl/ocl.hpp"
+
+namespace cv
+{
+ namespace ocl
+ {
+ //! Speeded up robust features, port from GPU module.
+ ////////////////////////////////// SURF //////////////////////////////////////////
+
+ class CV_EXPORTS SURF_OCL : public cv::Feature2D
+ {
+ public:
+ enum KeypointLayout
+ {
+ X_ROW = 0,
+ Y_ROW,
+ LAPLACIAN_ROW,
+ OCTAVE_ROW,
+ SIZE_ROW,
+ ANGLE_ROW,
+ HESSIAN_ROW,
+ ROWS_COUNT
+ };
+
+ //! the default constructor
+ SURF_OCL();
+ //! the full constructor taking all the necessary parameters
+ explicit SURF_OCL(double _hessianThreshold, int _nOctaves = 4,
+ int _nOctaveLayers = 2, bool _extended = true, float _keypointsRatio = 0.01f, bool _upright = false);
+
+ //! returns the descriptor size in float's (64 or 128)
+ int descriptorSize() const;
+
+ int descriptorType() const;
+
+ //! upload host keypoints to device memory
+ void uploadKeypoints(const vector<cv::KeyPoint> &keypoints, oclMat &keypointsocl);
+ //! download keypoints from device to host memory
+ void downloadKeypoints(const oclMat &keypointsocl, vector<KeyPoint> &keypoints);
+ //! download descriptors from device to host memory
+ void downloadDescriptors(const oclMat &descriptorsocl, vector<float> &descriptors);
+ //! finds the keypoints using fast hessian detector used in SURF
+ //! supports CV_8UC1 images
+ //! keypoints will have nFeature cols and 6 rows
+ //! keypoints.ptr<float>(X_ROW)[i] will contain x coordinate of i'th feature
+ //! keypoints.ptr<float>(Y_ROW)[i] will contain y coordinate of i'th feature
+ //! keypoints.ptr<float>(LAPLACIAN_ROW)[i] will contain laplacian sign of i'th feature
+ //! keypoints.ptr<float>(OCTAVE_ROW)[i] will contain octave of i'th feature
+ //! keypoints.ptr<float>(SIZE_ROW)[i] will contain size of i'th feature
+ //! keypoints.ptr<float>(ANGLE_ROW)[i] will contain orientation of i'th feature
+ //! keypoints.ptr<float>(HESSIAN_ROW)[i] will contain response of i'th feature
+ void operator()(const oclMat &img, const oclMat &mask, oclMat &keypoints);
+ //! finds the keypoints and computes their descriptors.
+ //! Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction
+ void operator()(const oclMat &img, const oclMat &mask, oclMat &keypoints, oclMat &descriptors,
+ bool useProvidedKeypoints = false);
+ void operator()(const oclMat &img, const oclMat &mask, std::vector<KeyPoint> &keypoints);
+ void operator()(const oclMat &img, const oclMat &mask, std::vector<KeyPoint> &keypoints, oclMat &descriptors,
+ bool useProvidedKeypoints = false);
+ void operator()(const oclMat &img, const oclMat &mask, std::vector<KeyPoint> &keypoints, std::vector<float> &descriptors,
+ bool useProvidedKeypoints = false);
+
+ //! finds the keypoints using fast hessian detector used in SURF
+ void operator()(InputArray img, InputArray mask,
+ CV_OUT vector<KeyPoint>& keypoints) const;
+ //! finds the keypoints and computes their descriptors. Optionally it can compute descriptors for the user-provided keypoints
+ void operator()(InputArray img, InputArray mask,
+ CV_OUT vector<KeyPoint>& keypoints,
+ OutputArray descriptors,
+ bool useProvidedKeypoints=false) const;
+
+ AlgorithmInfo* info() const;
+
+ void releaseMemory();
+
+ // SURF parameters
+ float hessianThreshold;
+ int nOctaves;
+ int nOctaveLayers;
+ bool extended;
+ bool upright;
+ //! max keypoints = min(keypointsRatio * img.size().area(), 65535)
+ float keypointsRatio;
+ oclMat sum, mask1, maskSum, intBuffer;
+ oclMat det, trace;
+ oclMat maxPosBuffer;
+ protected:
+ void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask) const;
+ void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors) const;
+ };
+ }
+}
+
+#endif //__OPENCV_NONFREE_OCL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect.hpp
new file mode 100644
index 00000000..71f201c9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/objdetect/objdetect.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect/objdetect.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect/objdetect.hpp
new file mode 100644
index 00000000..d5d6f0b2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/objdetect/objdetect.hpp
@@ -0,0 +1,1073 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OBJDETECT_HPP__
+#define __OPENCV_OBJDETECT_HPP__
+
+#include "opencv2/core/core.hpp"
+
+#ifdef __cplusplus
+#include <map>
+#include <deque>
+
+extern "C" {
+#endif
+
+/****************************************************************************************\
+* Haar-like Object Detection functions *
+\****************************************************************************************/
+
+#define CV_HAAR_MAGIC_VAL 0x42500000
+#define CV_TYPE_NAME_HAAR "opencv-haar-classifier"
+
+#define CV_IS_HAAR_CLASSIFIER( haar ) \
+ ((haar) != NULL && \
+ (((const CvHaarClassifierCascade*)(haar))->flags & CV_MAGIC_MASK)==CV_HAAR_MAGIC_VAL)
+
+#define CV_HAAR_FEATURE_MAX 3
+
+typedef struct CvHaarFeature
+{
+ int tilted;
+ struct
+ {
+ CvRect r;
+ float weight;
+ } rect[CV_HAAR_FEATURE_MAX];
+} CvHaarFeature;
+
+typedef struct CvHaarClassifier
+{
+ int count;
+ CvHaarFeature* haar_feature;
+ float* threshold;
+ int* left;
+ int* right;
+ float* alpha;
+} CvHaarClassifier;
+
+typedef struct CvHaarStageClassifier
+{
+ int count;
+ float threshold;
+ CvHaarClassifier* classifier;
+
+ int next;
+ int child;
+ int parent;
+} CvHaarStageClassifier;
+
+typedef struct CvHidHaarClassifierCascade CvHidHaarClassifierCascade;
+
+typedef struct CvHaarClassifierCascade
+{
+ int flags;
+ int count;
+ CvSize orig_window_size;
+ CvSize real_window_size;
+ double scale;
+ CvHaarStageClassifier* stage_classifier;
+ CvHidHaarClassifierCascade* hid_cascade;
+} CvHaarClassifierCascade;
+
+typedef struct CvAvgComp
+{
+ CvRect rect;
+ int neighbors;
+} CvAvgComp;
+
+/* Loads haar classifier cascade from a directory.
+ It is obsolete: convert your cascade to xml and use cvLoad instead */
+CVAPI(CvHaarClassifierCascade*) cvLoadHaarClassifierCascade(
+ const char* directory, CvSize orig_window_size);
+
+CVAPI(void) cvReleaseHaarClassifierCascade( CvHaarClassifierCascade** cascade );
+
+#define CV_HAAR_DO_CANNY_PRUNING 1
+#define CV_HAAR_SCALE_IMAGE 2
+#define CV_HAAR_FIND_BIGGEST_OBJECT 4
+#define CV_HAAR_DO_ROUGH_SEARCH 8
+
+//CVAPI(CvSeq*) cvHaarDetectObjectsForROC( const CvArr* image,
+// CvHaarClassifierCascade* cascade, CvMemStorage* storage,
+// CvSeq** rejectLevels, CvSeq** levelWeightds,
+// double scale_factor CV_DEFAULT(1.1),
+// int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0),
+// CvSize min_size CV_DEFAULT(cvSize(0,0)), CvSize max_size CV_DEFAULT(cvSize(0,0)),
+// bool outputRejectLevels = false );
+
+
+CVAPI(CvSeq*) cvHaarDetectObjects( const CvArr* image,
+ CvHaarClassifierCascade* cascade, CvMemStorage* storage,
+ double scale_factor CV_DEFAULT(1.1),
+ int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0),
+ CvSize min_size CV_DEFAULT(cvSize(0,0)), CvSize max_size CV_DEFAULT(cvSize(0,0)));
+
+/* sets images for haar classifier cascade */
+CVAPI(void) cvSetImagesForHaarClassifierCascade( CvHaarClassifierCascade* cascade,
+ const CvArr* sum, const CvArr* sqsum,
+ const CvArr* tilted_sum, double scale );
+
+/* runs the cascade on the specified window */
+CVAPI(int) cvRunHaarClassifierCascade( const CvHaarClassifierCascade* cascade,
+ CvPoint pt, int start_stage CV_DEFAULT(0));
+
+
+/****************************************************************************************\
+* Latent SVM Object Detection functions *
+\****************************************************************************************/
+
+// DataType: STRUCT position
+// Structure describes the position of the filter in the feature pyramid
+// l - level in the feature pyramid
+// (x, y) - coordinate in level l
+typedef struct CvLSVMFilterPosition
+{
+ int x;
+ int y;
+ int l;
+} CvLSVMFilterPosition;
+
+// DataType: STRUCT filterObject
+// Description of the filter, which corresponds to the part of the object
+// V - ideal (penalty = 0) position of the partial filter
+// from the root filter position (V_i in the paper)
+// penaltyFunction - vector describes penalty function (d_i in the paper)
+// pf[0] * x + pf[1] * y + pf[2] * x^2 + pf[3] * y^2
+// FILTER DESCRIPTION
+// Rectangular map (sizeX x sizeY),
+// every cell stores feature vector (dimension = p)
+// H - matrix of feature vectors
+// to set and get feature vectors (i,j)
+// used formula H[(j * sizeX + i) * p + k], where
+// k - component of feature vector in cell (i, j)
+// END OF FILTER DESCRIPTION
+typedef struct CvLSVMFilterObject{
+ CvLSVMFilterPosition V;
+ float fineFunction[4];
+ int sizeX;
+ int sizeY;
+ int numFeatures;
+ float *H;
+} CvLSVMFilterObject;
+
+// data type: STRUCT CvLatentSvmDetector
+// structure contains internal representation of trained Latent SVM detector
+// num_filters - total number of filters (root plus part) in model
+// num_components - number of components in model
+// num_part_filters - array containing number of part filters for each component
+// filters - root and part filters for all model components
+// b - biases for all model components
+// score_threshold - confidence level threshold
+typedef struct CvLatentSvmDetector
+{
+ int num_filters;
+ int num_components;
+ int* num_part_filters;
+ CvLSVMFilterObject** filters;
+ float* b;
+ float score_threshold;
+}
+CvLatentSvmDetector;
+
+// data type: STRUCT CvObjectDetection
+// structure contains the bounding box and confidence level for detected object
+// rect - bounding box for a detected object
+// score - confidence level
+typedef struct CvObjectDetection
+{
+ CvRect rect;
+ float score;
+} CvObjectDetection;
+
+//////////////// Object Detection using Latent SVM //////////////
+
+
+/*
+// load trained detector from a file
+//
+// API
+// CvLatentSvmDetector* cvLoadLatentSvmDetector(const char* filename);
+// INPUT
+// filename - path to the file containing the parameters of
+ - trained Latent SVM detector
+// OUTPUT
+// trained Latent SVM detector in internal representation
+*/
+CVAPI(CvLatentSvmDetector*) cvLoadLatentSvmDetector(const char* filename);
+
+/*
+// release memory allocated for CvLatentSvmDetector structure
+//
+// API
+// void cvReleaseLatentSvmDetector(CvLatentSvmDetector** detector);
+// INPUT
+// detector - CvLatentSvmDetector structure to be released
+// OUTPUT
+*/
+CVAPI(void) cvReleaseLatentSvmDetector(CvLatentSvmDetector** detector);
+
+/*
+// find rectangular regions in the given image that are likely
+// to contain objects and corresponding confidence levels
+//
+// API
+// CvSeq* cvLatentSvmDetectObjects(const IplImage* image,
+// CvLatentSvmDetector* detector,
+// CvMemStorage* storage,
+// float overlap_threshold = 0.5f,
+// int numThreads = -1);
+// INPUT
+// image - image to detect objects in
+// detector - Latent SVM detector in internal representation
+// storage - memory storage to store the resultant sequence
+// of the object candidate rectangles
+// overlap_threshold - threshold for the non-maximum suppression algorithm
+ = 0.5f [here will be the reference to original paper]
+// OUTPUT
+// sequence of detected objects (bounding boxes and confidence levels stored in CvObjectDetection structures)
+*/
+CVAPI(CvSeq*) cvLatentSvmDetectObjects(IplImage* image,
+ CvLatentSvmDetector* detector,
+ CvMemStorage* storage,
+ float overlap_threshold CV_DEFAULT(0.5f),
+ int numThreads CV_DEFAULT(-1));
+
+#ifdef __cplusplus
+}
+
+CV_EXPORTS CvSeq* cvHaarDetectObjectsForROC( const CvArr* image,
+ CvHaarClassifierCascade* cascade, CvMemStorage* storage,
+ std::vector<int>& rejectLevels, std::vector<double>& levelWeightds,
+ double scale_factor CV_DEFAULT(1.1),
+ int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0),
+ CvSize min_size CV_DEFAULT(cvSize(0,0)), CvSize max_size CV_DEFAULT(cvSize(0,0)),
+ bool outputRejectLevels = false );
+
+namespace cv
+{
+
+///////////////////////////// Object Detection ////////////////////////////
+
+/*
+ * This is a class wrapping up the structure CvLatentSvmDetector and functions working with it.
+ * The class goals are:
+ * 1) provide c++ interface;
+ * 2) make it possible to load and detect more than one class (model) unlike CvLatentSvmDetector.
+ */
+class CV_EXPORTS LatentSvmDetector
+{
+public:
+ struct CV_EXPORTS ObjectDetection
+ {
+ ObjectDetection();
+ ObjectDetection( const Rect& rect, float score, int classID=-1 );
+ Rect rect;
+ float score;
+ int classID;
+ };
+
+ LatentSvmDetector();
+ LatentSvmDetector( const vector<string>& filenames, const vector<string>& classNames=vector<string>() );
+ virtual ~LatentSvmDetector();
+
+ virtual void clear();
+ virtual bool empty() const;
+ bool load( const vector<string>& filenames, const vector<string>& classNames=vector<string>() );
+
+ virtual void detect( const Mat& image,
+ vector<ObjectDetection>& objectDetections,
+ float overlapThreshold=0.5f,
+ int numThreads=-1 );
+
+ const vector<string>& getClassNames() const;
+ size_t getClassCount() const;
+
+private:
+ vector<CvLatentSvmDetector*> detectors;
+ vector<string> classNames;
+};
+
+// class for grouping object candidates, detected by Cascade Classifier, HOG etc.
+// instance of the class is to be passed to cv::partition (see cxoperations.hpp)
+class CV_EXPORTS SimilarRects
+{
+public:
+ SimilarRects(double _eps) : eps(_eps) {}
+ inline bool operator()(const Rect& r1, const Rect& r2) const
+ {
+ double delta = eps*(std::min(r1.width, r2.width) + std::min(r1.height, r2.height))*0.5;
+ return std::abs(r1.x - r2.x) <= delta &&
+ std::abs(r1.y - r2.y) <= delta &&
+ std::abs(r1.x + r1.width - r2.x - r2.width) <= delta &&
+ std::abs(r1.y + r1.height - r2.y - r2.height) <= delta;
+ }
+ double eps;
+};
+
+CV_EXPORTS void groupRectangles(CV_OUT CV_IN_OUT vector<Rect>& rectList, int groupThreshold, double eps=0.2);
+CV_EXPORTS_W void groupRectangles(CV_OUT CV_IN_OUT vector<Rect>& rectList, CV_OUT vector<int>& weights, int groupThreshold, double eps=0.2);
+CV_EXPORTS void groupRectangles( vector<Rect>& rectList, int groupThreshold, double eps, vector<int>* weights, vector<double>* levelWeights );
+CV_EXPORTS void groupRectangles(vector<Rect>& rectList, vector<int>& rejectLevels,
+ vector<double>& levelWeights, int groupThreshold, double eps=0.2);
+CV_EXPORTS void groupRectangles_meanshift(vector<Rect>& rectList, vector<double>& foundWeights, vector<double>& foundScales,
+ double detectThreshold = 0.0, Size winDetSize = Size(64, 128));
+
+
+class CV_EXPORTS FeatureEvaluator
+{
+public:
+ enum { HAAR = 0, LBP = 1, HOG = 2 };
+ virtual ~FeatureEvaluator();
+
+ virtual bool read(const FileNode& node);
+ virtual Ptr<FeatureEvaluator> clone() const;
+ virtual int getFeatureType() const;
+
+ virtual bool setImage(const Mat& img, Size origWinSize);
+ virtual bool setWindow(Point p);
+
+ virtual double calcOrd(int featureIdx) const;
+ virtual int calcCat(int featureIdx) const;
+
+ static Ptr<FeatureEvaluator> create(int type);
+};
+
+template<> CV_EXPORTS void Ptr<CvHaarClassifierCascade>::delete_obj();
+
+enum
+{
+ CASCADE_DO_CANNY_PRUNING=1,
+ CASCADE_SCALE_IMAGE=2,
+ CASCADE_FIND_BIGGEST_OBJECT=4,
+ CASCADE_DO_ROUGH_SEARCH=8
+};
+
+class CV_EXPORTS_W CascadeClassifier
+{
+public:
+ CV_WRAP CascadeClassifier();
+ CV_WRAP CascadeClassifier( const string& filename );
+ virtual ~CascadeClassifier();
+
+ CV_WRAP virtual bool empty() const;
+ CV_WRAP bool load( const string& filename );
+ virtual bool read( const FileNode& node );
+ CV_WRAP virtual void detectMultiScale( const Mat& image,
+ CV_OUT vector<Rect>& objects,
+ double scaleFactor=1.1,
+ int minNeighbors=3, int flags=0,
+ Size minSize=Size(),
+ Size maxSize=Size() );
+
+ CV_WRAP virtual void detectMultiScale( const Mat& image,
+ CV_OUT vector<Rect>& objects,
+ vector<int>& rejectLevels,
+ vector<double>& levelWeights,
+ double scaleFactor=1.1,
+ int minNeighbors=3, int flags=0,
+ Size minSize=Size(),
+ Size maxSize=Size(),
+ bool outputRejectLevels=false );
+
+
+ bool isOldFormatCascade() const;
+ virtual Size getOriginalWindowSize() const;
+ int getFeatureType() const;
+ bool setImage( const Mat& );
+
+protected:
+ //virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
+ // int stripSize, int yStep, double factor, vector<Rect>& candidates );
+
+ virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
+ int stripSize, int yStep, double factor, vector<Rect>& candidates,
+ vector<int>& rejectLevels, vector<double>& levelWeights, bool outputRejectLevels=false);
+
+protected:
+ enum { BOOST = 0 };
+ enum { DO_CANNY_PRUNING = 1, SCALE_IMAGE = 2,
+ FIND_BIGGEST_OBJECT = 4, DO_ROUGH_SEARCH = 8 };
+
+ friend class CascadeClassifierInvoker;
+
+ template<class FEval>
+ friend int predictOrdered( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);
+
+ template<class FEval>
+ friend int predictCategorical( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);
+
+ template<class FEval>
+ friend int predictOrderedStump( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);
+
+ template<class FEval>
+ friend int predictCategoricalStump( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);
+
+ bool setImage( Ptr<FeatureEvaluator>& feval, const Mat& image);
+ virtual int runAt( Ptr<FeatureEvaluator>& feval, Point pt, double& weight );
+
+ class Data
+ {
+ public:
+ struct CV_EXPORTS DTreeNode
+ {
+ int featureIdx;
+ float threshold; // for ordered features only
+ int left;
+ int right;
+ };
+
+ struct CV_EXPORTS DTree
+ {
+ int nodeCount;
+ };
+
+ struct CV_EXPORTS Stage
+ {
+ int first;
+ int ntrees;
+ float threshold;
+ };
+
+ bool read(const FileNode &node);
+
+ bool isStumpBased;
+
+ int stageType;
+ int featureType;
+ int ncategories;
+ Size origWinSize;
+
+ vector<Stage> stages;
+ vector<DTree> classifiers;
+ vector<DTreeNode> nodes;
+ vector<float> leaves;
+ vector<int> subsets;
+ };
+
+ Data data;
+ Ptr<FeatureEvaluator> featureEvaluator;
+ Ptr<CvHaarClassifierCascade> oldCascade;
+
+public:
+ class CV_EXPORTS MaskGenerator
+ {
+ public:
+ virtual ~MaskGenerator() {}
+ virtual cv::Mat generateMask(const cv::Mat& src)=0;
+ virtual void initializeMask(const cv::Mat& /*src*/) {};
+ };
+ void setMaskGenerator(Ptr<MaskGenerator> maskGenerator);
+ Ptr<MaskGenerator> getMaskGenerator();
+
+ void setFaceDetectionMaskGenerator();
+
+protected:
+ Ptr<MaskGenerator> maskGenerator;
+};
+
+
+//////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector //////////////
+
+// struct for detection region of interest (ROI)
+struct DetectionROI
+{
+ // scale(size) of the bounding box
+ double scale;
+ // set of requrested locations to be evaluated
+ vector<cv::Point> locations;
+ // vector that will contain confidence values for each location
+ vector<double> confidences;
+};
+
+struct CV_EXPORTS_W HOGDescriptor
+{
+public:
+ enum { L2Hys=0 };
+ enum { DEFAULT_NLEVELS=64 };
+
+ CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStride(8,8),
+ cellSize(8,8), nbins(9), derivAperture(1), winSigma(-1),
+ histogramNormType(HOGDescriptor::L2Hys), L2HysThreshold(0.2), gammaCorrection(true),
+ nlevels(HOGDescriptor::DEFAULT_NLEVELS)
+ {}
+
+ CV_WRAP HOGDescriptor(Size _winSize, Size _blockSize, Size _blockStride,
+ Size _cellSize, int _nbins, int _derivAperture=1, double _winSigma=-1,
+ int _histogramNormType=HOGDescriptor::L2Hys,
+ double _L2HysThreshold=0.2, bool _gammaCorrection=false,
+ int _nlevels=HOGDescriptor::DEFAULT_NLEVELS)
+ : winSize(_winSize), blockSize(_blockSize), blockStride(_blockStride), cellSize(_cellSize),
+ nbins(_nbins), derivAperture(_derivAperture), winSigma(_winSigma),
+ histogramNormType(_histogramNormType), L2HysThreshold(_L2HysThreshold),
+ gammaCorrection(_gammaCorrection), nlevels(_nlevels)
+ {}
+
+ CV_WRAP HOGDescriptor(const String& filename)
+ {
+ load(filename);
+ }
+
+ HOGDescriptor(const HOGDescriptor& d)
+ {
+ d.copyTo(*this);
+ }
+
+ virtual ~HOGDescriptor() {}
+
+ CV_WRAP size_t getDescriptorSize() const;
+ CV_WRAP bool checkDetectorSize() const;
+ CV_WRAP double getWinSigma() const;
+
+ CV_WRAP virtual void setSVMDetector(InputArray _svmdetector);
+
+ virtual bool read(FileNode& fn);
+ virtual void write(FileStorage& fs, const String& objname) const;
+
+ CV_WRAP virtual bool load(const String& filename, const String& objname=String());
+ CV_WRAP virtual void save(const String& filename, const String& objname=String()) const;
+ virtual void copyTo(HOGDescriptor& c) const;
+
+ CV_WRAP virtual void compute(const Mat& img,
+ CV_OUT vector<float>& descriptors,
+ Size winStride=Size(), Size padding=Size(),
+ const vector<Point>& locations=vector<Point>()) const;
+ //with found weights output
+ CV_WRAP virtual void detect(const Mat& img, CV_OUT vector<Point>& foundLocations,
+ CV_OUT vector<double>& weights,
+ double hitThreshold=0, Size winStride=Size(),
+ Size padding=Size(),
+ const vector<Point>& searchLocations=vector<Point>()) const;
+ //without found weights output
+ virtual void detect(const Mat& img, CV_OUT vector<Point>& foundLocations,
+ double hitThreshold=0, Size winStride=Size(),
+ Size padding=Size(),
+ const vector<Point>& searchLocations=vector<Point>()) const;
+ //with result weights output
+ CV_WRAP virtual void detectMultiScale(const Mat& img, CV_OUT vector<Rect>& foundLocations,
+ CV_OUT vector<double>& foundWeights, double hitThreshold=0,
+ Size winStride=Size(), Size padding=Size(), double scale=1.05,
+ double finalThreshold=2.0,bool useMeanshiftGrouping = false) const;
+ //without found weights output
+ virtual void detectMultiScale(const Mat& img, CV_OUT vector<Rect>& foundLocations,
+ double hitThreshold=0, Size winStride=Size(),
+ Size padding=Size(), double scale=1.05,
+ double finalThreshold=2.0, bool useMeanshiftGrouping = false) const;
+
+ CV_WRAP virtual void computeGradient(const Mat& img, CV_OUT Mat& grad, CV_OUT Mat& angleOfs,
+ Size paddingTL=Size(), Size paddingBR=Size()) const;
+
+ CV_WRAP static vector<float> getDefaultPeopleDetector();
+ CV_WRAP static vector<float> getDaimlerPeopleDetector();
+
+ CV_PROP Size winSize;
+ CV_PROP Size blockSize;
+ CV_PROP Size blockStride;
+ CV_PROP Size cellSize;
+ CV_PROP int nbins;
+ CV_PROP int derivAperture;
+ CV_PROP double winSigma;
+ CV_PROP int histogramNormType;
+ CV_PROP double L2HysThreshold;
+ CV_PROP bool gammaCorrection;
+ CV_PROP vector<float> svmDetector;
+ CV_PROP int nlevels;
+
+
+ // evaluate specified ROI and return confidence value for each location
+ void detectROI(const cv::Mat& img, const vector<cv::Point> &locations,
+ CV_OUT std::vector<cv::Point>& foundLocations, CV_OUT std::vector<double>& confidences,
+ double hitThreshold = 0, cv::Size winStride = Size(),
+ cv::Size padding = Size()) const;
+
+ // evaluate specified ROI and return confidence value for each location in multiple scales
+ void detectMultiScaleROI(const cv::Mat& img,
+ CV_OUT std::vector<cv::Rect>& foundLocations,
+ std::vector<DetectionROI>& locations,
+ double hitThreshold = 0,
+ int groupThreshold = 0) const;
+
+ // read/parse Dalal's alt model file
+ void readALTModel(std::string modelfile);
+ void groupRectangles(vector<cv::Rect>& rectList, vector<double>& weights, int groupThreshold, double eps) const;
+};
+
+
+CV_EXPORTS_W void findDataMatrix(InputArray image,
+ CV_OUT vector<string>& codes,
+ OutputArray corners=noArray(),
+ OutputArrayOfArrays dmtx=noArray());
+CV_EXPORTS_W void drawDataMatrixCodes(InputOutputArray image,
+ const vector<string>& codes,
+ InputArray corners);
+}
+
+/****************************************************************************************\
+* Datamatrix *
+\****************************************************************************************/
+
+struct CV_EXPORTS CvDataMatrixCode {
+ char msg[4];
+ CvMat *original;
+ CvMat *corners;
+};
+
+CV_EXPORTS std::deque<CvDataMatrixCode> cvFindDataMatrix(CvMat *im);
+
+/****************************************************************************************\
+* LINE-MOD *
+\****************************************************************************************/
+
+namespace cv {
+namespace linemod {
+
+using cv::FileNode;
+using cv::FileStorage;
+using cv::Mat;
+using cv::noArray;
+using cv::OutputArrayOfArrays;
+using cv::Point;
+using cv::Ptr;
+using cv::Rect;
+using cv::Size;
+
+/// @todo Convert doxy comments to rst
+
+/**
+ * \brief Discriminant feature described by its location and label.
+ */
+struct CV_EXPORTS Feature
+{
+ int x; ///< x offset
+ int y; ///< y offset
+ int label; ///< Quantization
+
+ Feature() : x(0), y(0), label(0) {}
+ Feature(int x, int y, int label);
+
+ void read(const FileNode& fn);
+ void write(FileStorage& fs) const;
+};
+
+inline Feature::Feature(int _x, int _y, int _label) : x(_x), y(_y), label(_label) {}
+
+struct CV_EXPORTS Template
+{
+ int width;
+ int height;
+ int pyramid_level;
+ std::vector<Feature> features;
+
+ void read(const FileNode& fn);
+ void write(FileStorage& fs) const;
+};
+
+/**
+ * \brief Represents a modality operating over an image pyramid.
+ */
+class QuantizedPyramid
+{
+public:
+ // Virtual destructor
+ virtual ~QuantizedPyramid() {}
+
+ /**
+ * \brief Compute quantized image at current pyramid level for online detection.
+ *
+ * \param[out] dst The destination 8-bit image. For each pixel at most one bit is set,
+ * representing its classification.
+ */
+ virtual void quantize(Mat& dst) const =0;
+
+ /**
+ * \brief Extract most discriminant features at current pyramid level to form a new template.
+ *
+ * \param[out] templ The new template.
+ */
+ virtual bool extractTemplate(Template& templ) const =0;
+
+ /**
+ * \brief Go to the next pyramid level.
+ *
+ * \todo Allow pyramid scale factor other than 2
+ */
+ virtual void pyrDown() =0;
+
+protected:
+ /// Candidate feature with a score
+ struct Candidate
+ {
+ Candidate(int x, int y, int label, float score);
+
+ /// Sort candidates with high score to the front
+ bool operator<(const Candidate& rhs) const
+ {
+ return score > rhs.score;
+ }
+
+ Feature f;
+ float score;
+ };
+
+ /**
+ * \brief Choose candidate features so that they are not bunched together.
+ *
+ * \param[in] candidates Candidate features sorted by score.
+ * \param[out] features Destination vector of selected features.
+ * \param[in] num_features Number of candidates to select.
+ * \param[in] distance Hint for desired distance between features.
+ */
+ static void selectScatteredFeatures(const std::vector<Candidate>& candidates,
+ std::vector<Feature>& features,
+ size_t num_features, float distance);
+};
+
+inline QuantizedPyramid::Candidate::Candidate(int x, int y, int label, float _score) : f(x, y, label), score(_score) {}
+
+/**
+ * \brief Interface for modalities that plug into the LINE template matching representation.
+ *
+ * \todo Max response, to allow optimization of summing (255/MAX) features as uint8
+ */
+class CV_EXPORTS Modality
+{
+public:
+ // Virtual destructor
+ virtual ~Modality() {}
+
+ /**
+ * \brief Form a quantized image pyramid from a source image.
+ *
+ * \param[in] src The source image. Type depends on the modality.
+ * \param[in] mask Optional mask. If not empty, unmasked pixels are set to zero
+ * in quantized image and cannot be extracted as features.
+ */
+ Ptr<QuantizedPyramid> process(const Mat& src,
+ const Mat& mask = Mat()) const
+ {
+ return processImpl(src, mask);
+ }
+
+ virtual std::string name() const =0;
+
+ virtual void read(const FileNode& fn) =0;
+ virtual void write(FileStorage& fs) const =0;
+
+ /**
+ * \brief Create modality by name.
+ *
+ * The following modality types are supported:
+ * - "ColorGradient"
+ * - "DepthNormal"
+ */
+ static Ptr<Modality> create(const std::string& modality_type);
+
+ /**
+ * \brief Load a modality from file.
+ */
+ static Ptr<Modality> create(const FileNode& fn);
+
+protected:
+ // Indirection is because process() has a default parameter.
+ virtual Ptr<QuantizedPyramid> processImpl(const Mat& src,
+ const Mat& mask) const =0;
+};
+
+/**
+ * \brief Modality that computes quantized gradient orientations from a color image.
+ */
+class CV_EXPORTS ColorGradient : public Modality
+{
+public:
+ /**
+ * \brief Default constructor. Uses reasonable default parameter values.
+ */
+ ColorGradient();
+
+ /**
+ * \brief Constructor.
+ *
+ * \param weak_threshold When quantizing, discard gradients with magnitude less than this.
+ * \param num_features How many features a template must contain.
+ * \param strong_threshold Consider as candidate features only gradients whose norms are
+ * larger than this.
+ */
+ ColorGradient(float weak_threshold, size_t num_features, float strong_threshold);
+
+ virtual std::string name() const;
+
+ virtual void read(const FileNode& fn);
+ virtual void write(FileStorage& fs) const;
+
+ float weak_threshold;
+ size_t num_features;
+ float strong_threshold;
+
+protected:
+ virtual Ptr<QuantizedPyramid> processImpl(const Mat& src,
+ const Mat& mask) const;
+};
+
+/**
+ * \brief Modality that computes quantized surface normals from a dense depth map.
+ */
+class CV_EXPORTS DepthNormal : public Modality
+{
+public:
+ /**
+ * \brief Default constructor. Uses reasonable default parameter values.
+ */
+ DepthNormal();
+
+ /**
+ * \brief Constructor.
+ *
+ * \param distance_threshold Ignore pixels beyond this distance.
+ * \param difference_threshold When computing normals, ignore contributions of pixels whose
+ * depth difference with the central pixel is above this threshold.
+ * \param num_features How many features a template must contain.
+ * \param extract_threshold Consider as candidate feature only if there are no differing
+ * orientations within a distance of extract_threshold.
+ */
+ DepthNormal(int distance_threshold, int difference_threshold, size_t num_features,
+ int extract_threshold);
+
+ virtual std::string name() const;
+
+ virtual void read(const FileNode& fn);
+ virtual void write(FileStorage& fs) const;
+
+ int distance_threshold;
+ int difference_threshold;
+ size_t num_features;
+ int extract_threshold;
+
+protected:
+ virtual Ptr<QuantizedPyramid> processImpl(const Mat& src,
+ const Mat& mask) const;
+};
+
+/**
+ * \brief Debug function to colormap a quantized image for viewing.
+ */
+void colormap(const Mat& quantized, Mat& dst);
+
+/**
+ * \brief Represents a successful template match.
+ */
+struct CV_EXPORTS Match
+{
+ Match()
+ {
+ }
+
+ Match(int x, int y, float similarity, const std::string& class_id, int template_id);
+
+ /// Sort matches with high similarity to the front
+ bool operator<(const Match& rhs) const
+ {
+ // Secondarily sort on template_id for the sake of duplicate removal
+ if (similarity != rhs.similarity)
+ return similarity > rhs.similarity;
+ else
+ return template_id < rhs.template_id;
+ }
+
+ bool operator==(const Match& rhs) const
+ {
+ return x == rhs.x && y == rhs.y && similarity == rhs.similarity && class_id == rhs.class_id;
+ }
+
+ int x;
+ int y;
+ float similarity;
+ std::string class_id;
+ int template_id;
+};
+
+inline Match::Match(int _x, int _y, float _similarity, const std::string& _class_id, int _template_id)
+ : x(_x), y(_y), similarity(_similarity), class_id(_class_id), template_id(_template_id)
+ {
+ }
+
+/**
+ * \brief Object detector using the LINE template matching algorithm with any set of
+ * modalities.
+ */
+class CV_EXPORTS Detector
+{
+public:
+ /**
+ * \brief Empty constructor, initialize with read().
+ */
+ Detector();
+
+ /**
+ * \brief Constructor.
+ *
+ * \param modalities Modalities to use (color gradients, depth normals, ...).
+ * \param T_pyramid Value of the sampling step T at each pyramid level. The
+ * number of pyramid levels is T_pyramid.size().
+ */
+ Detector(const std::vector< Ptr<Modality> >& modalities, const std::vector<int>& T_pyramid);
+
+ /**
+ * \brief Detect objects by template matching.
+ *
+ * Matches globally at the lowest pyramid level, then refines locally stepping up the pyramid.
+ *
+ * \param sources Source images, one for each modality.
+ * \param threshold Similarity threshold, a percentage between 0 and 100.
+ * \param[out] matches Template matches, sorted by similarity score.
+ * \param class_ids If non-empty, only search for the desired object classes.
+ * \param[out] quantized_images Optionally return vector<Mat> of quantized images.
+ * \param masks The masks for consideration during matching. The masks should be CV_8UC1
+ * where 255 represents a valid pixel. If non-empty, the vector must be
+ * the same size as sources. Each element must be
+ * empty or the same size as its corresponding source.
+ */
+ void match(const std::vector<Mat>& sources, float threshold, std::vector<Match>& matches,
+ const std::vector<std::string>& class_ids = std::vector<std::string>(),
+ OutputArrayOfArrays quantized_images = noArray(),
+ const std::vector<Mat>& masks = std::vector<Mat>()) const;
+
+ /**
+ * \brief Add new object template.
+ *
+ * \param sources Source images, one for each modality.
+ * \param class_id Object class ID.
+ * \param object_mask Mask separating object from background.
+ * \param[out] bounding_box Optionally return bounding box of the extracted features.
+ *
+ * \return Template ID, or -1 if failed to extract a valid template.
+ */
+ int addTemplate(const std::vector<Mat>& sources, const std::string& class_id,
+ const Mat& object_mask, Rect* bounding_box = NULL);
+
+ /**
+ * \brief Add a new object template computed by external means.
+ */
+ int addSyntheticTemplate(const std::vector<Template>& templates, const std::string& class_id);
+
+ /**
+ * \brief Get the modalities used by this detector.
+ *
+ * You are not permitted to add/remove modalities, but you may dynamic_cast them to
+ * tweak parameters.
+ */
+ const std::vector< Ptr<Modality> >& getModalities() const { return modalities; }
+
+ /**
+ * \brief Get sampling step T at pyramid_level.
+ */
+ int getT(int pyramid_level) const { return T_at_level[pyramid_level]; }
+
+ /**
+ * \brief Get number of pyramid levels used by this detector.
+ */
+ int pyramidLevels() const { return pyramid_levels; }
+
+ /**
+ * \brief Get the template pyramid identified by template_id.
+ *
+ * For example, with 2 modalities (Gradient, Normal) and two pyramid levels
+ * (L0, L1), the order is (GradientL0, NormalL0, GradientL1, NormalL1).
+ */
+ const std::vector<Template>& getTemplates(const std::string& class_id, int template_id) const;
+
+ int numTemplates() const;
+ int numTemplates(const std::string& class_id) const;
+ int numClasses() const { return static_cast<int>(class_templates.size()); }
+
+ std::vector<std::string> classIds() const;
+
+ void read(const FileNode& fn);
+ void write(FileStorage& fs) const;
+
+ std::string readClass(const FileNode& fn, const std::string &class_id_override = "");
+ void writeClass(const std::string& class_id, FileStorage& fs) const;
+
+ void readClasses(const std::vector<std::string>& class_ids,
+ const std::string& format = "templates_%s.yml.gz");
+ void writeClasses(const std::string& format = "templates_%s.yml.gz") const;
+
+protected:
+ std::vector< Ptr<Modality> > modalities;
+ int pyramid_levels;
+ std::vector<int> T_at_level;
+
+ typedef std::vector<Template> TemplatePyramid;
+ typedef std::map<std::string, std::vector<TemplatePyramid> > TemplatesMap;
+ TemplatesMap class_templates;
+
+ typedef std::vector<Mat> LinearMemories;
+ // Indexed as [pyramid level][modality][quantized label]
+ typedef std::vector< std::vector<LinearMemories> > LinearMemoryPyramid;
+
+ void matchClass(const LinearMemoryPyramid& lm_pyramid,
+ const std::vector<Size>& sizes,
+ float threshold, std::vector<Match>& matches,
+ const std::string& class_id,
+ const std::vector<TemplatePyramid>& template_pyramids) const;
+};
+
+/**
+ * \brief Factory function for detector using LINE algorithm with color gradients.
+ *
+ * Default parameter settings suitable for VGA images.
+ */
+CV_EXPORTS Ptr<Detector> getDefaultLINE();
+
+/**
+ * \brief Factory function for detector using LINE-MOD algorithm with color gradients
+ * and depth normals.
+ *
+ * Default parameter settings suitable for VGA images.
+ */
+CV_EXPORTS Ptr<Detector> getDefaultLINEMOD();
+
+} // namespace linemod
+} // namespace cv
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/matrix_operations.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/matrix_operations.hpp
new file mode 100644
index 00000000..d6f3bb4c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/matrix_operations.hpp
@@ -0,0 +1,490 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2010-2012, Institute Of Software Chinese Academy Of Science, all rights reserved.
+// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved.
+// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OCL_MATRIX_OPERATIONS_HPP__
+#define __OPENCV_OCL_MATRIX_OPERATIONS_HPP__
+
+#include "opencv2/ocl/ocl.hpp"
+
+namespace cv
+{
+
+ namespace ocl
+ {
+
+ enum
+ {
+ MAT_ADD = 1,
+ MAT_SUB,
+ MAT_MUL,
+ MAT_DIV,
+ MAT_NOT,
+ MAT_AND,
+ MAT_OR,
+ MAT_XOR
+ };
+
+ class CV_EXPORTS oclMatExpr
+ {
+ public:
+ oclMatExpr() : a(oclMat()), b(oclMat()), op(0) {}
+ oclMatExpr(const oclMat& _a, const oclMat& _b, int _op)
+ : a(_a), b(_b), op(_op) {}
+ operator oclMat() const;
+ void assign(oclMat& m) const;
+
+ protected:
+ oclMat a, b;
+ int op;
+ };
+ ////////////////////////////////////////////////////////////////////////
+ //////////////////////////////// oclMat ////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+
+ inline oclMat::oclMat() : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0) {}
+
+ inline oclMat::oclMat(int _rows, int _cols, int _type) : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0)
+ {
+ if( _rows > 0 && _cols > 0 )
+ create( _rows, _cols, _type );
+ }
+
+ inline oclMat::oclMat(Size _size, int _type) : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0)
+ {
+ if( _size.height > 0 && _size.width > 0 )
+ create( _size.height, _size.width, _type );
+ }
+
+ inline oclMat::oclMat(int _rows, int _cols, int _type, const Scalar &_s)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0)
+ {
+ if(_rows > 0 && _cols > 0)
+ {
+ create(_rows, _cols, _type);
+ *this = _s;
+ }
+ }
+
+ inline oclMat::oclMat(Size _size, int _type, const Scalar &_s)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0)
+ {
+ if( _size.height > 0 && _size.width > 0 )
+ {
+ create( _size.height, _size.width, _type );
+ *this = _s;
+ }
+ }
+
+ inline oclMat::oclMat(const oclMat &m)
+ : flags(m.flags), rows(m.rows), cols(m.cols), step(m.step), data(m.data),
+ refcount(m.refcount), datastart(m.datastart), dataend(m.dataend), clCxt(m.clCxt), offset(m.offset), wholerows(m.wholerows), wholecols(m.wholecols)
+ {
+ if( refcount )
+ CV_XADD(refcount, 1);
+ }
+
+ inline oclMat::oclMat(int _rows, int _cols, int _type, void *_data, size_t _step)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0),
+ datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0)
+ {
+ cv::Mat m(_rows, _cols, _type, _data, _step);
+ upload(m);
+ //size_t minstep = cols * elemSize();
+ //if( step == Mat::AUTO_STEP )
+ //{
+ // step = minstep;
+ // flags |= Mat::CONTINUOUS_FLAG;
+ //}
+ //else
+ //{
+ // if( rows == 1 ) step = minstep;
+ // CV_DbgAssert( step >= minstep );
+ // flags |= step == minstep ? Mat::CONTINUOUS_FLAG : 0;
+ //}
+ //dataend += step * (rows - 1) + minstep;
+ }
+
+ inline oclMat::oclMat(Size _size, int _type, void *_data, size_t _step)
+ : flags(0), rows(0), cols(0),
+ step(0), data(0), refcount(0),
+ datastart(0), dataend(0), offset(0), wholerows(0), wholecols(0)
+ {
+ cv::Mat m(_size, _type, _data, _step);
+ upload(m);
+ //size_t minstep = cols * elemSize();
+ //if( step == Mat::AUTO_STEP )
+ //{
+ // step = minstep;
+ // flags |= Mat::CONTINUOUS_FLAG;
+ //}
+ //else
+ //{
+ // if( rows == 1 ) step = minstep;
+ // CV_DbgAssert( step >= minstep );
+ // flags |= step == minstep ? Mat::CONTINUOUS_FLAG : 0;
+ //}
+ //dataend += step * (rows - 1) + minstep;
+ }
+
+
+ inline oclMat::oclMat(const oclMat &m, const Range &rRange, const Range &cRange)
+ {
+ flags = m.flags;
+ step = m.step;
+ refcount = m.refcount;
+ data = m.data;
+ datastart = m.datastart;
+ dataend = m.dataend;
+ clCxt = m.clCxt;
+ wholerows = m.wholerows;
+ wholecols = m.wholecols;
+ offset = m.offset;
+ if( rRange == Range::all() )
+ rows = m.rows;
+ else
+ {
+ CV_Assert( 0 <= rRange.start && rRange.start <= rRange.end && rRange.end <= m.rows );
+ rows = rRange.size();
+ offset += step * rRange.start;
+ }
+
+ if( cRange == Range::all() )
+ cols = m.cols;
+ else
+ {
+ CV_Assert( 0 <= cRange.start && cRange.start <= cRange.end && cRange.end <= m.cols );
+ cols = cRange.size();
+ offset += cRange.start * elemSize();
+ flags &= cols < m.cols ? ~Mat::CONTINUOUS_FLAG : -1;
+ }
+
+ if( rows == 1 )
+ flags |= Mat::CONTINUOUS_FLAG;
+
+ if( refcount )
+ CV_XADD(refcount, 1);
+ if( rows <= 0 || cols <= 0 )
+ rows = cols = 0;
+ }
+
+ inline oclMat::oclMat(const oclMat &m, const Rect &roi)
+ : flags(m.flags), rows(roi.height), cols(roi.width),
+ step(m.step), data(m.data), refcount(m.refcount),
+ datastart(m.datastart), dataend(m.dataend), clCxt(m.clCxt), offset(m.offset), wholerows(m.wholerows), wholecols(m.wholecols)
+ {
+ flags &= roi.width < m.cols ? ~Mat::CONTINUOUS_FLAG : -1;
+ offset += roi.y * step + roi.x * elemSize();
+ CV_Assert( 0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.wholecols &&
+ 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.wholerows );
+ if( refcount )
+ CV_XADD(refcount, 1);
+ if( rows <= 0 || cols <= 0 )
+ rows = cols = 0;
+ }
+
+ inline oclMat::oclMat(const Mat &m)
+ : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0) , offset(0), wholerows(0), wholecols(0)
+ {
+ //clCxt = Context::getContext();
+ upload(m);
+ }
+
+ inline oclMat::~oclMat()
+ {
+ release();
+ }
+
+ inline oclMat &oclMat::operator = (const oclMat &m)
+ {
+ if( this != &m )
+ {
+ if( m.refcount )
+ CV_XADD(m.refcount, 1);
+ release();
+ clCxt = m.clCxt;
+ flags = m.flags;
+ rows = m.rows;
+ cols = m.cols;
+ step = m.step;
+ data = m.data;
+ datastart = m.datastart;
+ dataend = m.dataend;
+ offset = m.offset;
+ wholerows = m.wholerows;
+ wholecols = m.wholecols;
+ refcount = m.refcount;
+ }
+ return *this;
+ }
+
+ inline oclMat &oclMat::operator = (const Mat &m)
+ {
+ //clCxt = Context::getContext();
+ upload(m);
+ return *this;
+ }
+
+ inline oclMat& oclMat::operator = (const oclMatExpr& expr)
+ {
+ expr.assign(*this);
+ return *this;
+ }
+
+ /* Fixme! To be supported in OpenCL later. */
+#if 0
+ template <class T> inline oclMat::operator DevMem2D_<T>() const
+ {
+ return DevMem2D_<T>(rows, cols, (T *)data, step);
+ }
+ template <class T> inline oclMat::operator PtrStep_<T>() const
+ {
+ return PtrStep_<T>(static_cast< DevMem2D_<T> >(*this));
+ }
+#endif
+
+ //CPP: void oclMat::upload(const Mat& m);
+
+ inline oclMat::operator Mat() const
+ {
+ Mat m;
+ download(m);
+ return m;
+ }
+
+ //CPP void oclMat::download(cv::Mat& m) const;
+
+ inline oclMat oclMat::row(int y) const
+ {
+ return oclMat(*this, Range(y, y + 1), Range::all());
+ }
+ inline oclMat oclMat::col(int x) const
+ {
+ return oclMat(*this, Range::all(), Range(x, x + 1));
+ }
+ inline oclMat oclMat::rowRange(int startrow, int endrow) const
+ {
+ return oclMat(*this, Range(startrow, endrow), Range::all());
+ }
+ inline oclMat oclMat::rowRange(const Range &r) const
+ {
+ return oclMat(*this, r, Range::all());
+ }
+ inline oclMat oclMat::colRange(int startcol, int endcol) const
+ {
+ return oclMat(*this, Range::all(), Range(startcol, endcol));
+ }
+ inline oclMat oclMat::colRange(const Range &r) const
+ {
+ return oclMat(*this, Range::all(), r);
+ }
+
+ inline oclMat oclMat::clone() const
+ {
+ oclMat m;
+ copyTo(m);
+ return m;
+ }
+
+ //CPP void oclMat::copyTo( oclMat& m ) const;
+ //CPP void oclMat::copyTo( oclMat& m, const oclMat& mask ) const;
+ //CPP void oclMat::convertTo( oclMat& m, int rtype, double alpha=1, double beta=0 ) const;
+
+ inline void oclMat::assignTo( oclMat &m, int mtype ) const
+ {
+ if( mtype < 0 )
+ m = *this;
+ else
+ convertTo(m, mtype);
+ }
+
+ //CPP oclMat& oclMat::operator = (const Scalar& s);
+ //CPP oclMat& oclMat::setTo(const Scalar& s, const oclMat& mask=oclMat());
+ //CPP oclMat oclMat::reshape(int _cn, int _rows=0) const;
+ inline void oclMat::create(Size _size, int _type)
+ {
+ create(_size.height, _size.width, _type);
+ }
+ //CPP void oclMat::create(int _rows, int _cols, int _type);
+ //CPP void oclMat::release();
+
+ inline void oclMat::swap(oclMat &b)
+ {
+ std::swap( flags, b.flags );
+ std::swap( rows, b.rows );
+ std::swap( cols, b.cols );
+ std::swap( step, b.step );
+ std::swap( data, b.data );
+ std::swap( datastart, b.datastart );
+ std::swap( dataend, b.dataend );
+ std::swap( refcount, b.refcount );
+ std::swap( offset, b.offset );
+ std::swap( clCxt, b.clCxt );
+ std::swap( wholerows, b.wholerows );
+ std::swap( wholecols, b.wholecols );
+ }
+
+ inline void oclMat::locateROI( Size &wholeSize, Point &ofs ) const
+ {
+ size_t esz = elemSize();//, minstep;
+ //ptrdiff_t delta1 = offset;//, delta2 = dataend - datastart;
+ CV_DbgAssert( step > 0 );
+ if( offset == 0 )
+ ofs.x = ofs.y = 0;
+ else
+ {
+ ofs.y = (int)(offset / step);
+ ofs.x = (int)((offset - step * ofs.y) / esz);
+ //CV_DbgAssert( data == datastart + ofs.y*step + ofs.x*esz );
+ }
+ //minstep = (ofs.x + cols)*esz;
+ //wholeSize.height = (int)((delta2 - minstep)/step + 1);
+ //wholeSize.height = std::max(wholeSize.height, ofs.y + rows);
+ //wholeSize.width = (int)((delta2 - step*(wholeSize.height-1))/esz);
+ //wholeSize.width = std::max(wholeSize.width, ofs.x + cols);
+ wholeSize.height = wholerows;
+ wholeSize.width = wholecols;
+ }
+
+ inline oclMat &oclMat::adjustROI( int dtop, int dbottom, int dleft, int dright )
+ {
+ Size wholeSize;
+ Point ofs;
+ size_t esz = elemSize();
+ locateROI( wholeSize, ofs );
+ int row1 = std::max(ofs.y - dtop, 0), row2 = std::min(ofs.y + rows + dbottom, wholeSize.height);
+ int col1 = std::max(ofs.x - dleft, 0), col2 = std::min(ofs.x + cols + dright, wholeSize.width);
+ offset += (row1 - ofs.y) * step + (col1 - ofs.x) * esz;
+ rows = row2 - row1;
+ cols = col2 - col1;
+ if( esz * cols == step || rows == 1 )
+ flags |= Mat::CONTINUOUS_FLAG;
+ else
+ flags &= ~Mat::CONTINUOUS_FLAG;
+ return *this;
+ }
+
+ inline oclMat oclMat::operator()( Range rRange, Range cRange ) const
+ {
+ return oclMat(*this, rRange, cRange);
+ }
+ inline oclMat oclMat::operator()( const Rect &roi ) const
+ {
+ return oclMat(*this, roi);
+ }
+
+ inline bool oclMat::isContinuous() const
+ {
+ return (flags & Mat::CONTINUOUS_FLAG) != 0;
+ }
+ inline size_t oclMat::elemSize() const
+ {
+ return CV_ELEM_SIZE((CV_MAKE_TYPE(type(), oclchannels())));
+ }
+ inline size_t oclMat::elemSize1() const
+ {
+ return CV_ELEM_SIZE1(flags);
+ }
+ inline int oclMat::type() const
+ {
+ return CV_MAT_TYPE(flags);
+ }
+ inline int oclMat::ocltype() const
+ {
+ return CV_MAKE_TYPE(depth(), oclchannels());
+ }
+ inline int oclMat::depth() const
+ {
+ return CV_MAT_DEPTH(flags);
+ }
+ inline int oclMat::channels() const
+ {
+ return CV_MAT_CN(flags);
+ }
+ inline int oclMat::oclchannels() const
+ {
+ return (CV_MAT_CN(flags)) == 3 ? 4 : (CV_MAT_CN(flags));
+ }
+ inline size_t oclMat::step1() const
+ {
+ return step / elemSize1();
+ }
+ inline Size oclMat::size() const
+ {
+ return Size(cols, rows);
+ }
+ inline bool oclMat::empty() const
+ {
+ return data == 0;
+ }
+
+ inline oclMat oclMat::t() const
+ {
+ oclMat tmp;
+ transpose(*this, tmp);
+ return tmp;
+ }
+
+ static inline void swap( oclMat &a, oclMat &b )
+ {
+ a.swap(b);
+ }
+
+ inline void ensureSizeIsEnough(int rows, int cols, int type, oclMat &m)
+ {
+ if (m.type() == type && m.rows >= rows && m.cols >= cols)
+ m = m(Rect(0, 0, cols, rows));
+ else
+ m.create(rows, cols, type);
+ }
+
+ inline void ensureSizeIsEnough(Size size, int type, oclMat &m)
+ {
+ ensureSizeIsEnough(size.height, size.width, type, m);
+ }
+
+
+ } /* end of namespace ocl */
+
+} /* end of namespace cv */
+
+#endif /* __OPENCV_OCL_MATRIX_OPERATIONS_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/ocl.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/ocl.hpp
new file mode 100644
index 00000000..e8eb3e85
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ocl/ocl.hpp
@@ -0,0 +1,1998 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2010-2012, Institute Of Software Chinese Academy Of Science, all rights reserved.
+// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved.
+// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_OCL_HPP__
+#define __OPENCV_OCL_HPP__
+
+#include <memory>
+#include <vector>
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/objdetect/objdetect.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/ml/ml.hpp"
+
+namespace cv
+{
+ namespace ocl
+ {
+ enum DeviceType
+ {
+ CVCL_DEVICE_TYPE_DEFAULT = (1 << 0),
+ CVCL_DEVICE_TYPE_CPU = (1 << 1),
+ CVCL_DEVICE_TYPE_GPU = (1 << 2),
+ CVCL_DEVICE_TYPE_ACCELERATOR = (1 << 3),
+ //CVCL_DEVICE_TYPE_CUSTOM = (1 << 4)
+ CVCL_DEVICE_TYPE_ALL = 0xFFFFFFFF
+ };
+
+ enum DevMemRW
+ {
+ DEVICE_MEM_R_W = 0,
+ DEVICE_MEM_R_ONLY,
+ DEVICE_MEM_W_ONLY
+ };
+
+ enum DevMemType
+ {
+ DEVICE_MEM_DEFAULT = 0,
+ DEVICE_MEM_AHP, //alloc host pointer
+ DEVICE_MEM_UHP, //use host pointer
+ DEVICE_MEM_CHP, //copy host pointer
+ DEVICE_MEM_PM //persistent memory
+ };
+
+ // these classes contain OpenCL runtime information
+
+ struct PlatformInfo;
+
+ struct DeviceInfo
+ {
+ int _id; // reserved, don't use it
+
+ DeviceType deviceType;
+ std::string deviceProfile;
+ std::string deviceVersion;
+ std::string deviceName;
+ std::string deviceVendor;
+ int deviceVendorId;
+ std::string deviceDriverVersion;
+ std::string deviceExtensions;
+
+ size_t maxWorkGroupSize;
+ std::vector<size_t> maxWorkItemSizes;
+ int maxComputeUnits;
+ size_t localMemorySize;
+ size_t maxMemAllocSize;
+
+ int deviceVersionMajor;
+ int deviceVersionMinor;
+
+ bool haveDoubleSupport;
+ bool isUnifiedMemory; // 1 means integrated GPU, otherwise this value is 0
+ bool isIntelDevice;
+
+ std::string compilationExtraOptions;
+
+ const PlatformInfo* platform;
+
+ DeviceInfo();
+ ~DeviceInfo();
+ };
+
+ struct PlatformInfo
+ {
+ int _id; // reserved, don't use it
+
+ std::string platformProfile;
+ std::string platformVersion;
+ std::string platformName;
+ std::string platformVendor;
+ std::string platformExtensons;
+
+ int platformVersionMajor;
+ int platformVersionMinor;
+
+ std::vector<const DeviceInfo*> devices;
+
+ PlatformInfo();
+ ~PlatformInfo();
+ };
+
+ //////////////////////////////// Initialization & Info ////////////////////////
+ typedef std::vector<const PlatformInfo*> PlatformsInfo;
+
+ CV_EXPORTS int getOpenCLPlatforms(PlatformsInfo& platforms);
+
+ typedef std::vector<const DeviceInfo*> DevicesInfo;
+
+ CV_EXPORTS int getOpenCLDevices(DevicesInfo& devices, int deviceType = CVCL_DEVICE_TYPE_GPU,
+ const PlatformInfo* platform = NULL);
+
+ // set device you want to use
+ CV_EXPORTS void setDevice(const DeviceInfo* info);
+
+ // Initialize from OpenCL handles directly.
+ // Argument types is (pointers): cl_platform_id*, cl_context*, cl_device_id*
+ CV_EXPORTS void initializeContext(void* pClPlatform, void* pClContext, void* pClDevice);
+
+ //////////////////////////////// Error handling ////////////////////////
+ CV_EXPORTS void error(const char *error_string, const char *file, const int line, const char *func);
+
+ enum FEATURE_TYPE
+ {
+ FEATURE_CL_DOUBLE = 1,
+ FEATURE_CL_UNIFIED_MEM,
+ FEATURE_CL_VER_1_2,
+ FEATURE_CL_INTEL_DEVICE
+ };
+
+ // Represents OpenCL context, interface
+ class CV_EXPORTS Context
+ {
+ protected:
+ Context() { }
+ ~Context() { }
+ public:
+ static Context* getContext();
+
+ bool supportsFeature(FEATURE_TYPE featureType) const;
+ const DeviceInfo& getDeviceInfo() const;
+
+ const void* getOpenCLContextPtr() const;
+ const void* getOpenCLCommandQueuePtr() const;
+ const void* getOpenCLDeviceIDPtr() const;
+ };
+
+ inline const void *getClContextPtr()
+ {
+ return Context::getContext()->getOpenCLContextPtr();
+ }
+
+ inline const void *getClCommandQueuePtr()
+ {
+ return Context::getContext()->getOpenCLCommandQueuePtr();
+ }
+
+ CV_EXPORTS bool supportsFeature(FEATURE_TYPE featureType);
+
+ CV_EXPORTS void finish();
+
+ enum BINARY_CACHE_MODE
+ {
+ CACHE_NONE = 0, // do not cache OpenCL binary
+ CACHE_DEBUG = 0x1 << 0, // cache OpenCL binary when built in debug mode
+ CACHE_RELEASE = 0x1 << 1, // default behavior, only cache when built in release mode
+ CACHE_ALL = CACHE_DEBUG | CACHE_RELEASE // cache opencl binary
+ };
+ //! Enable or disable OpenCL program binary caching onto local disk
+ // After a program (*.cl files in opencl/ folder) is built at runtime, we allow the
+ // compiled OpenCL program to be cached to the path automatically as "path/*.clb"
+ // binary file, which will be reused when the OpenCV executable is started again.
+ //
+ // This feature is enabled by default.
+ CV_EXPORTS void setBinaryDiskCache(int mode = CACHE_RELEASE, cv::String path = "./");
+
+ //! set where binary cache to be saved to
+ CV_EXPORTS void setBinaryPath(const char *path);
+
+ struct ProgramSource
+ {
+ const char* name;
+ const char* programStr;
+ const char* programHash;
+
+ // Cache in memory by name (should be unique). Caching on disk disabled.
+ inline ProgramSource(const char* _name, const char* _programStr)
+ : name(_name), programStr(_programStr), programHash(NULL)
+ {
+ }
+
+ // Cache in memory by name (should be unique). Caching on disk uses programHash mark.
+ inline ProgramSource(const char* _name, const char* _programStr, const char* _programHash)
+ : name(_name), programStr(_programStr), programHash(_programHash)
+ {
+ }
+ };
+
+ //! Calls OpenCL kernel. Pass globalThreads = NULL, and cleanUp = true, to finally clean-up without executing.
+ //! Deprecated, will be replaced
+ CV_EXPORTS void openCLExecuteKernelInterop(Context *clCxt,
+ const cv::ocl::ProgramSource& source, string kernelName,
+ size_t globalThreads[3], size_t localThreads[3],
+ std::vector< std::pair<size_t, const void *> > &args,
+ int channels, int depth, const char *build_options);
+
+ class CV_EXPORTS oclMatExpr;
+ //////////////////////////////// oclMat ////////////////////////////////
+ class CV_EXPORTS oclMat
+ {
+ public:
+ //! default constructor
+ oclMat();
+ //! constructs oclMatrix of the specified size and type (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.)
+ oclMat(int rows, int cols, int type);
+ oclMat(Size size, int type);
+ //! constucts oclMatrix and fills it with the specified value _s.
+ oclMat(int rows, int cols, int type, const Scalar &s);
+ oclMat(Size size, int type, const Scalar &s);
+ //! copy constructor
+ oclMat(const oclMat &m);
+
+ //! constructor for oclMatrix headers pointing to user-allocated data
+ oclMat(int rows, int cols, int type, void *data, size_t step = Mat::AUTO_STEP);
+ oclMat(Size size, int type, void *data, size_t step = Mat::AUTO_STEP);
+
+ //! creates a matrix header for a part of the bigger matrix
+ oclMat(const oclMat &m, const Range &rowRange, const Range &colRange);
+ oclMat(const oclMat &m, const Rect &roi);
+
+ //! builds oclMat from Mat. Perfom blocking upload to device.
+ explicit oclMat (const Mat &m);
+
+ //! destructor - calls release()
+ ~oclMat();
+
+ //! assignment operators
+ oclMat &operator = (const oclMat &m);
+ //! assignment operator. Perfom blocking upload to device.
+ oclMat &operator = (const Mat &m);
+ oclMat &operator = (const oclMatExpr& expr);
+
+ //! pefroms blocking upload data to oclMat.
+ void upload(const cv::Mat &m);
+
+
+ //! downloads data from device to host memory. Blocking calls.
+ operator Mat() const;
+ void download(cv::Mat &m) const;
+
+ //! convert to _InputArray
+ operator _InputArray();
+
+ //! convert to _OutputArray
+ operator _OutputArray();
+
+ //! returns a new oclMatrix header for the specified row
+ oclMat row(int y) const;
+ //! returns a new oclMatrix header for the specified column
+ oclMat col(int x) const;
+ //! ... for the specified row span
+ oclMat rowRange(int startrow, int endrow) const;
+ oclMat rowRange(const Range &r) const;
+ //! ... for the specified column span
+ oclMat colRange(int startcol, int endcol) const;
+ oclMat colRange(const Range &r) const;
+
+ //! returns deep copy of the oclMatrix, i.e. the data is copied
+ oclMat clone() const;
+
+ //! copies those oclMatrix elements to "m" that are marked with non-zero mask elements.
+ // It calls m.create(this->size(), this->type()).
+ // It supports any data type
+ void copyTo( oclMat &m, const oclMat &mask = oclMat()) const;
+
+ //! converts oclMatrix to another datatype with optional scalng. See cvConvertScale.
+ void convertTo( oclMat &m, int rtype, double alpha = 1, double beta = 0 ) const;
+
+ void assignTo( oclMat &m, int type = -1 ) const;
+
+ //! sets every oclMatrix element to s
+ oclMat& operator = (const Scalar &s);
+ //! sets some of the oclMatrix elements to s, according to the mask
+ oclMat& setTo(const Scalar &s, const oclMat &mask = oclMat());
+ //! creates alternative oclMatrix header for the same data, with different
+ // number of channels and/or different number of rows. see cvReshape.
+ oclMat reshape(int cn, int rows = 0) const;
+
+ //! allocates new oclMatrix data unless the oclMatrix already has specified size and type.
+ // previous data is unreferenced if needed.
+ void create(int rows, int cols, int type);
+ void create(Size size, int type);
+
+ //! allocates new oclMatrix with specified device memory type.
+ void createEx(int rows, int cols, int type, DevMemRW rw_type, DevMemType mem_type);
+ void createEx(Size size, int type, DevMemRW rw_type, DevMemType mem_type);
+
+ //! decreases reference counter;
+ // deallocate the data when reference counter reaches 0.
+ void release();
+
+ //! swaps with other smart pointer
+ void swap(oclMat &mat);
+
+ //! locates oclMatrix header within a parent oclMatrix. See below
+ void locateROI( Size &wholeSize, Point &ofs ) const;
+ //! moves/resizes the current oclMatrix ROI inside the parent oclMatrix.
+ oclMat& adjustROI( int dtop, int dbottom, int dleft, int dright );
+ //! extracts a rectangular sub-oclMatrix
+ // (this is a generalized form of row, rowRange etc.)
+ oclMat operator()( Range rowRange, Range colRange ) const;
+ oclMat operator()( const Rect &roi ) const;
+
+ oclMat& operator+=( const oclMat& m );
+ oclMat& operator-=( const oclMat& m );
+ oclMat& operator*=( const oclMat& m );
+ oclMat& operator/=( const oclMat& m );
+
+ //! returns true if the oclMatrix data is continuous
+ // (i.e. when there are no gaps between successive rows).
+ // similar to CV_IS_oclMat_CONT(cvoclMat->type)
+ bool isContinuous() const;
+ //! returns element size in bytes,
+ // similar to CV_ELEM_SIZE(cvMat->type)
+ size_t elemSize() const;
+ //! returns the size of element channel in bytes.
+ size_t elemSize1() const;
+ //! returns element type, similar to CV_MAT_TYPE(cvMat->type)
+ int type() const;
+ //! returns element type, i.e. 8UC3 returns 8UC4 because in ocl
+ //! 3 channels element actually use 4 channel space
+ int ocltype() const;
+ //! returns element type, similar to CV_MAT_DEPTH(cvMat->type)
+ int depth() const;
+ //! returns element type, similar to CV_MAT_CN(cvMat->type)
+ int channels() const;
+ //! returns element type, return 4 for 3 channels element,
+ //!becuase 3 channels element actually use 4 channel space
+ int oclchannels() const;
+ //! returns step/elemSize1()
+ size_t step1() const;
+ //! returns oclMatrix size:
+ // width == number of columns, height == number of rows
+ Size size() const;
+ //! returns true if oclMatrix data is NULL
+ bool empty() const;
+
+ //! matrix transposition
+ oclMat t() const;
+
+ /*! includes several bit-fields:
+ - the magic signature
+ - continuity flag
+ - depth
+ - number of channels
+ */
+ int flags;
+ //! the number of rows and columns
+ int rows, cols;
+ //! a distance between successive rows in bytes; includes the gap if any
+ size_t step;
+ //! pointer to the data(OCL memory object)
+ uchar *data;
+
+ //! pointer to the reference counter;
+ // when oclMatrix points to user-allocated data, the pointer is NULL
+ int *refcount;
+
+ //! helper fields used in locateROI and adjustROI
+ //datastart and dataend are not used in current version
+ uchar *datastart;
+ uchar *dataend;
+
+ //! OpenCL context associated with the oclMat object.
+ Context *clCxt; // TODO clCtx
+ //add offset for handle ROI, calculated in byte
+ int offset;
+ //add wholerows and wholecols for the whole matrix, datastart and dataend are no longer used
+ int wholerows;
+ int wholecols;
+ };
+
+ // convert InputArray/OutputArray to oclMat references
+ CV_EXPORTS oclMat& getOclMatRef(InputArray src);
+ CV_EXPORTS oclMat& getOclMatRef(OutputArray src);
+
+ ///////////////////// mat split and merge /////////////////////////////////
+ //! Compose a multi-channel array from several single-channel arrays
+ // Support all types
+ CV_EXPORTS void merge(const oclMat *src, size_t n, oclMat &dst);
+ CV_EXPORTS void merge(const vector<oclMat> &src, oclMat &dst);
+
+ //! Divides multi-channel array into several single-channel arrays
+ // Support all types
+ CV_EXPORTS void split(const oclMat &src, oclMat *dst);
+ CV_EXPORTS void split(const oclMat &src, vector<oclMat> &dst);
+
+ ////////////////////////////// Arithmetics ///////////////////////////////////
+
+ //! adds one matrix to another with scale (dst = src1 * alpha + src2 * beta + gama)
+ // supports all data types
+ CV_EXPORTS void addWeighted(const oclMat &src1, double alpha, const oclMat &src2, double beta, double gama, oclMat &dst);
+
+ //! adds one matrix to another (dst = src1 + src2)
+ // supports all data types
+ CV_EXPORTS void add(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat &mask = oclMat());
+ //! adds scalar to a matrix (dst = src1 + s)
+ // supports all data types
+ CV_EXPORTS void add(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat());
+
+ //! subtracts one matrix from another (dst = src1 - src2)
+ // supports all data types
+ CV_EXPORTS void subtract(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat &mask = oclMat());
+ //! subtracts scalar from a matrix (dst = src1 - s)
+ // supports all data types
+ CV_EXPORTS void subtract(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat());
+
+ //! computes element-wise product of the two arrays (dst = src1 * scale * src2)
+ // supports all data types
+ CV_EXPORTS void multiply(const oclMat &src1, const oclMat &src2, oclMat &dst, double scale = 1);
+ //! multiplies matrix to a number (dst = scalar * src)
+ // supports all data types
+ CV_EXPORTS void multiply(double scalar, const oclMat &src, oclMat &dst);
+
+ //! computes element-wise quotient of the two arrays (dst = src1 * scale / src2)
+ // supports all data types
+ CV_EXPORTS void divide(const oclMat &src1, const oclMat &src2, oclMat &dst, double scale = 1);
+ //! computes element-wise quotient of the two arrays (dst = scale / src)
+ // supports all data types
+ CV_EXPORTS void divide(double scale, const oclMat &src1, oclMat &dst);
+
+ //! computes element-wise minimum of the two arrays (dst = min(src1, src2))
+ // supports all data types
+ CV_EXPORTS void min(const oclMat &src1, const oclMat &src2, oclMat &dst);
+
+ //! computes element-wise maximum of the two arrays (dst = max(src1, src2))
+ // supports all data types
+ CV_EXPORTS void max(const oclMat &src1, const oclMat &src2, oclMat &dst);
+
+ //! compares elements of two arrays (dst = src1 \verbatim<cmpop>\endverbatim src2)
+ // supports all data types
+ CV_EXPORTS void compare(const oclMat &src1, const oclMat &src2, oclMat &dst, int cmpop);
+
+ //! transposes the matrix
+ // supports all data types
+ CV_EXPORTS void transpose(const oclMat &src, oclMat &dst);
+
+ //! computes element-wise absolute values of an array (dst = abs(src))
+ // supports all data types
+ CV_EXPORTS void abs(const oclMat &src, oclMat &dst);
+
+ //! computes element-wise absolute difference of two arrays (dst = abs(src1 - src2))
+ // supports all data types
+ CV_EXPORTS void absdiff(const oclMat &src1, const oclMat &src2, oclMat &dst);
+ //! computes element-wise absolute difference of array and scalar (dst = abs(src1 - s))
+ // supports all data types
+ CV_EXPORTS void absdiff(const oclMat &src1, const Scalar &s, oclMat &dst);
+
+ //! computes mean value and standard deviation of all or selected array elements
+ // supports all data types
+ CV_EXPORTS void meanStdDev(const oclMat &mtx, Scalar &mean, Scalar &stddev);
+
+ //! computes norm of array
+ // supports NORM_INF, NORM_L1, NORM_L2
+ // supports all data types
+ CV_EXPORTS double norm(const oclMat &src1, int normType = NORM_L2);
+
+ //! computes norm of the difference between two arrays
+ // supports NORM_INF, NORM_L1, NORM_L2
+ // supports all data types
+ CV_EXPORTS double norm(const oclMat &src1, const oclMat &src2, int normType = NORM_L2);
+
+ //! reverses the order of the rows, columns or both in a matrix
+ // supports all types
+ CV_EXPORTS void flip(const oclMat &src, oclMat &dst, int flipCode);
+
+ //! computes sum of array elements
+ // support all types
+ CV_EXPORTS Scalar sum(const oclMat &m);
+ CV_EXPORTS Scalar absSum(const oclMat &m);
+ CV_EXPORTS Scalar sqrSum(const oclMat &m);
+
+ //! finds global minimum and maximum array elements and returns their values
+ // support all C1 types
+ CV_EXPORTS void minMax(const oclMat &src, double *minVal, double *maxVal = 0, const oclMat &mask = oclMat());
+
+ //! finds global minimum and maximum array elements and returns their values with locations
+ // support all C1 types
+ CV_EXPORTS void minMaxLoc(const oclMat &src, double *minVal, double *maxVal = 0, Point *minLoc = 0, Point *maxLoc = 0,
+ const oclMat &mask = oclMat());
+
+ //! counts non-zero array elements
+ // support all types
+ CV_EXPORTS int countNonZero(const oclMat &src);
+
+ //! transforms 8-bit unsigned integers using lookup table: dst(i)=lut(src(i))
+ // destination array will have the depth type as lut and the same channels number as source
+ //It supports 8UC1 8UC4 only
+ CV_EXPORTS void LUT(const oclMat &src, const oclMat &lut, oclMat &dst);
+
+ //! only 8UC1 and 256 bins is supported now
+ CV_EXPORTS void calcHist(const oclMat &mat_src, oclMat &mat_hist);
+ //! only 8UC1 and 256 bins is supported now
+ CV_EXPORTS void equalizeHist(const oclMat &mat_src, oclMat &mat_dst);
+
+ //! only 8UC1 is supported now
+ CV_EXPORTS Ptr<cv::CLAHE> createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8));
+
+ //! bilateralFilter
+ // supports 8UC1 8UC4
+ CV_EXPORTS void bilateralFilter(const oclMat& src, oclMat& dst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT);
+
+ //! Applies an adaptive bilateral filter to the input image
+ // Unlike the usual bilateral filter that uses fixed value for sigmaColor,
+ // the adaptive version calculates the local variance in he ksize neighborhood
+ // and use this as sigmaColor, for the value filtering. However, the local standard deviation is
+ // clamped to the maxSigmaColor.
+ // supports 8UC1, 8UC3
+ CV_EXPORTS void adaptiveBilateralFilter(const oclMat& src, oclMat& dst, Size ksize, double sigmaSpace, double maxSigmaColor=20.0, Point anchor = Point(-1, -1), int borderType=BORDER_DEFAULT);
+
+ //! computes exponent of each matrix element (dst = e**src)
+ // supports only CV_32FC1, CV_64FC1 type
+ CV_EXPORTS void exp(const oclMat &src, oclMat &dst);
+
+ //! computes natural logarithm of absolute value of each matrix element: dst = log(abs(src))
+ // supports only CV_32FC1, CV_64FC1 type
+ CV_EXPORTS void log(const oclMat &src, oclMat &dst);
+
+ //! computes magnitude of each (x(i), y(i)) vector
+ // supports only CV_32F, CV_64F type
+ CV_EXPORTS void magnitude(const oclMat &x, const oclMat &y, oclMat &magnitude);
+
+ //! computes angle (angle(i)) of each (x(i), y(i)) vector
+ // supports only CV_32F, CV_64F type
+ CV_EXPORTS void phase(const oclMat &x, const oclMat &y, oclMat &angle, bool angleInDegrees = false);
+
+ //! the function raises every element of tne input array to p
+ // support only CV_32F, CV_64F type
+ CV_EXPORTS void pow(const oclMat &x, double p, oclMat &y);
+
+ //! converts Cartesian coordinates to polar
+ // supports only CV_32F CV_64F type
+ CV_EXPORTS void cartToPolar(const oclMat &x, const oclMat &y, oclMat &magnitude, oclMat &angle, bool angleInDegrees = false);
+
+ //! converts polar coordinates to Cartesian
+ // supports only CV_32F CV_64F type
+ CV_EXPORTS void polarToCart(const oclMat &magnitude, const oclMat &angle, oclMat &x, oclMat &y, bool angleInDegrees = false);
+
+ //! perfroms per-elements bit-wise inversion
+ // supports all types
+ CV_EXPORTS void bitwise_not(const oclMat &src, oclMat &dst);
+
+ //! calculates per-element bit-wise disjunction of two arrays
+ // supports all types
+ CV_EXPORTS void bitwise_or(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat &mask = oclMat());
+ CV_EXPORTS void bitwise_or(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat());
+
+ //! calculates per-element bit-wise conjunction of two arrays
+ // supports all types
+ CV_EXPORTS void bitwise_and(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat &mask = oclMat());
+ CV_EXPORTS void bitwise_and(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat());
+
+ //! calculates per-element bit-wise "exclusive or" operation
+ // supports all types
+ CV_EXPORTS void bitwise_xor(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat &mask = oclMat());
+ CV_EXPORTS void bitwise_xor(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat());
+
+ //! Logical operators
+ CV_EXPORTS oclMat operator ~ (const oclMat &);
+ CV_EXPORTS oclMat operator | (const oclMat &, const oclMat &);
+ CV_EXPORTS oclMat operator & (const oclMat &, const oclMat &);
+ CV_EXPORTS oclMat operator ^ (const oclMat &, const oclMat &);
+
+
+ //! Mathematics operators
+ CV_EXPORTS oclMatExpr operator + (const oclMat &src1, const oclMat &src2);
+ CV_EXPORTS oclMatExpr operator - (const oclMat &src1, const oclMat &src2);
+ CV_EXPORTS oclMatExpr operator * (const oclMat &src1, const oclMat &src2);
+ CV_EXPORTS oclMatExpr operator / (const oclMat &src1, const oclMat &src2);
+
+ //! computes convolution of two images
+ // support only CV_32FC1 type
+ CV_EXPORTS void convolve(const oclMat &image, const oclMat &temp1, oclMat &result);
+
+ CV_EXPORTS void cvtColor(const oclMat &src, oclMat &dst, int code, int dcn = 0);
+
+ //! initializes a scaled identity matrix
+ CV_EXPORTS void setIdentity(oclMat& src, const Scalar & val = Scalar(1));
+
+ //! fills the output array with repeated copies of the input array
+ CV_EXPORTS void repeat(const oclMat & src, int ny, int nx, oclMat & dst);
+
+ //////////////////////////////// Filter Engine ////////////////////////////////
+
+ /*!
+ The Base Class for 1D or Row-wise Filters
+
+ This is the base class for linear or non-linear filters that process 1D data.
+ In particular, such filters are used for the "horizontal" filtering parts in separable filters.
+ */
+ class CV_EXPORTS BaseRowFilter_GPU
+ {
+ public:
+ BaseRowFilter_GPU(int ksize_, int anchor_, int bordertype_) : ksize(ksize_), anchor(anchor_), bordertype(bordertype_) {}
+ virtual ~BaseRowFilter_GPU() {}
+ virtual void operator()(const oclMat &src, oclMat &dst) = 0;
+ int ksize, anchor, bordertype;
+ };
+
+ /*!
+ The Base Class for Column-wise Filters
+
+ This is the base class for linear or non-linear filters that process columns of 2D arrays.
+ Such filters are used for the "vertical" filtering parts in separable filters.
+ */
+ class CV_EXPORTS BaseColumnFilter_GPU
+ {
+ public:
+ BaseColumnFilter_GPU(int ksize_, int anchor_, int bordertype_) : ksize(ksize_), anchor(anchor_), bordertype(bordertype_) {}
+ virtual ~BaseColumnFilter_GPU() {}
+ virtual void operator()(const oclMat &src, oclMat &dst) = 0;
+ int ksize, anchor, bordertype;
+ };
+
+ /*!
+ The Base Class for Non-Separable 2D Filters.
+
+ This is the base class for linear or non-linear 2D filters.
+ */
+ class CV_EXPORTS BaseFilter_GPU
+ {
+ public:
+ BaseFilter_GPU(const Size &ksize_, const Point &anchor_, const int &borderType_)
+ : ksize(ksize_), anchor(anchor_), borderType(borderType_) {}
+ virtual ~BaseFilter_GPU() {}
+ virtual void operator()(const oclMat &src, oclMat &dst) = 0;
+ Size ksize;
+ Point anchor;
+ int borderType;
+ };
+
+ /*!
+ The Base Class for Filter Engine.
+
+ The class can be used to apply an arbitrary filtering operation to an image.
+ It contains all the necessary intermediate buffers.
+ */
+ class CV_EXPORTS FilterEngine_GPU
+ {
+ public:
+ virtual ~FilterEngine_GPU() {}
+
+ virtual void apply(const oclMat &src, oclMat &dst, Rect roi = Rect(0, 0, -1, -1)) = 0;
+ };
+
+ //! returns the non-separable filter engine with the specified filter
+ CV_EXPORTS Ptr<FilterEngine_GPU> createFilter2D_GPU(const Ptr<BaseFilter_GPU> filter2D);
+
+ //! returns the primitive row filter with the specified kernel
+ CV_EXPORTS Ptr<BaseRowFilter_GPU> getLinearRowFilter_GPU(int srcType, int bufType, const Mat &rowKernel,
+ int anchor = -1, int bordertype = BORDER_DEFAULT);
+
+ //! returns the primitive column filter with the specified kernel
+ CV_EXPORTS Ptr<BaseColumnFilter_GPU> getLinearColumnFilter_GPU(int bufType, int dstType, const Mat &columnKernel,
+ int anchor = -1, int bordertype = BORDER_DEFAULT, double delta = 0.0);
+
+ //! returns the separable linear filter engine
+ CV_EXPORTS Ptr<FilterEngine_GPU> createSeparableLinearFilter_GPU(int srcType, int dstType, const Mat &rowKernel,
+ const Mat &columnKernel, const Point &anchor = Point(-1, -1), double delta = 0.0, int bordertype = BORDER_DEFAULT, Size imgSize = Size(-1,-1));
+
+ //! returns the separable filter engine with the specified filters
+ CV_EXPORTS Ptr<FilterEngine_GPU> createSeparableFilter_GPU(const Ptr<BaseRowFilter_GPU> &rowFilter,
+ const Ptr<BaseColumnFilter_GPU> &columnFilter);
+
+ //! returns the Gaussian filter engine
+ CV_EXPORTS Ptr<FilterEngine_GPU> createGaussianFilter_GPU(int type, Size ksize, double sigma1, double sigma2 = 0, int bordertype = BORDER_DEFAULT, Size imgSize = Size(-1,-1));
+
+ //! returns filter engine for the generalized Sobel operator
+ CV_EXPORTS Ptr<FilterEngine_GPU> createDerivFilter_GPU( int srcType, int dstType, int dx, int dy, int ksize, int borderType = BORDER_DEFAULT, Size imgSize = Size(-1,-1) );
+
+ //! applies Laplacian operator to the image
+ // supports only ksize = 1 and ksize = 3
+ CV_EXPORTS void Laplacian(const oclMat &src, oclMat &dst, int ddepth, int ksize = 1, double scale = 1,
+ double delta=0, int borderType=BORDER_DEFAULT);
+
+ //! returns 2D box filter
+ // dst type must be the same as source type
+ CV_EXPORTS Ptr<BaseFilter_GPU> getBoxFilter_GPU(int srcType, int dstType,
+ const Size &ksize, Point anchor = Point(-1, -1), int borderType = BORDER_DEFAULT);
+
+ //! returns box filter engine
+ CV_EXPORTS Ptr<FilterEngine_GPU> createBoxFilter_GPU(int srcType, int dstType, const Size &ksize,
+ const Point &anchor = Point(-1, -1), int borderType = BORDER_DEFAULT);
+
+ //! returns 2D filter with the specified kernel
+ // supports: dst type must be the same as source type
+ CV_EXPORTS Ptr<BaseFilter_GPU> getLinearFilter_GPU(int srcType, int dstType, const Mat &kernel, const Size &ksize,
+ const Point &anchor = Point(-1, -1), int borderType = BORDER_DEFAULT);
+
+ //! returns the non-separable linear filter engine
+ // supports: dst type must be the same as source type
+ CV_EXPORTS Ptr<FilterEngine_GPU> createLinearFilter_GPU(int srcType, int dstType, const Mat &kernel,
+ const Point &anchor = Point(-1, -1), int borderType = BORDER_DEFAULT);
+
+ //! smooths the image using the normalized box filter
+ CV_EXPORTS void boxFilter(const oclMat &src, oclMat &dst, int ddepth, Size ksize,
+ Point anchor = Point(-1, -1), int borderType = BORDER_DEFAULT);
+
+ //! returns 2D morphological filter
+ //! only MORPH_ERODE and MORPH_DILATE are supported
+ // supports CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4 types
+ // kernel must have CV_8UC1 type, one rows and cols == ksize.width * ksize.height
+ CV_EXPORTS Ptr<BaseFilter_GPU> getMorphologyFilter_GPU(int op, int type, const Mat &kernel, const Size &ksize,
+ Point anchor = Point(-1, -1));
+
+ //! returns morphological filter engine. Only MORPH_ERODE and MORPH_DILATE are supported.
+ CV_EXPORTS Ptr<FilterEngine_GPU> createMorphologyFilter_GPU(int op, int type, const Mat &kernel,
+ const Point &anchor = Point(-1, -1), int iterations = 1);
+
+ //! a synonym for normalized box filter
+ static inline void blur(const oclMat &src, oclMat &dst, Size ksize, Point anchor = Point(-1, -1),
+ int borderType = BORDER_CONSTANT)
+ {
+ boxFilter(src, dst, -1, ksize, anchor, borderType);
+ }
+
+ //! applies non-separable 2D linear filter to the image
+ CV_EXPORTS void filter2D(const oclMat &src, oclMat &dst, int ddepth, const Mat &kernel,
+ Point anchor = Point(-1, -1), double delta = 0.0, int borderType = BORDER_DEFAULT);
+
+ //! applies separable 2D linear filter to the image
+ CV_EXPORTS void sepFilter2D(const oclMat &src, oclMat &dst, int ddepth, const Mat &kernelX, const Mat &kernelY,
+ Point anchor = Point(-1, -1), double delta = 0.0, int bordertype = BORDER_DEFAULT);
+
+ //! applies generalized Sobel operator to the image
+ // dst.type must equalize src.type
+ // supports data type: CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4
+ // supports border type: BORDER_CONSTANT, BORDER_REPLICATE, BORDER_REFLECT,BORDER_REFLECT_101
+ CV_EXPORTS void Sobel(const oclMat &src, oclMat &dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0.0, int bordertype = BORDER_DEFAULT);
+
+ //! applies the vertical or horizontal Scharr operator to the image
+ // dst.type must equalize src.type
+ // supports data type: CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4
+ // supports border type: BORDER_CONSTANT, BORDER_REPLICATE, BORDER_REFLECT,BORDER_REFLECT_101
+ CV_EXPORTS void Scharr(const oclMat &src, oclMat &dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0.0, int bordertype = BORDER_DEFAULT);
+
+ //! smooths the image using Gaussian filter.
+ // dst.type must equalize src.type
+ // supports data type: CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4
+ // supports border type: BORDER_CONSTANT, BORDER_REPLICATE, BORDER_REFLECT,BORDER_REFLECT_101
+ CV_EXPORTS void GaussianBlur(const oclMat &src, oclMat &dst, Size ksize, double sigma1, double sigma2 = 0, int bordertype = BORDER_DEFAULT);
+
+ //! erodes the image (applies the local minimum operator)
+ // supports data type: CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4
+ CV_EXPORTS void erode( const oclMat &src, oclMat &dst, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1,
+
+ int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue());
+
+
+ //! dilates the image (applies the local maximum operator)
+ // supports data type: CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4
+ CV_EXPORTS void dilate( const oclMat &src, oclMat &dst, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1,
+
+ int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue());
+
+
+ //! applies an advanced morphological operation to the image
+ CV_EXPORTS void morphologyEx( const oclMat &src, oclMat &dst, int op, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1,
+
+ int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue());
+
+
+ ////////////////////////////// Image processing //////////////////////////////
+ //! Does mean shift filtering on GPU.
+ CV_EXPORTS void meanShiftFiltering(const oclMat &src, oclMat &dst, int sp, int sr,
+ TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1));
+
+ //! Does mean shift procedure on GPU.
+ CV_EXPORTS void meanShiftProc(const oclMat &src, oclMat &dstr, oclMat &dstsp, int sp, int sr,
+ TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1));
+
+ //! Does mean shift segmentation with elimiation of small regions.
+ CV_EXPORTS void meanShiftSegmentation(const oclMat &src, Mat &dst, int sp, int sr, int minsize,
+ TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1));
+
+ //! applies fixed threshold to the image.
+ // supports CV_8UC1 and CV_32FC1 data type
+ // supports threshold type: THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV
+ CV_EXPORTS double threshold(const oclMat &src, oclMat &dst, double thresh, double maxVal, int type = THRESH_TRUNC);
+
+ //! resizes the image
+ // Supports INTER_NEAREST, INTER_LINEAR
+ // supports CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4 types
+ CV_EXPORTS void resize(const oclMat &src, oclMat &dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR);
+
+ //! Applies a generic geometrical transformation to an image.
+
+ // Supports INTER_NEAREST, INTER_LINEAR.
+ // Map1 supports CV_16SC2, CV_32FC2 types.
+ // Src supports CV_8UC1, CV_8UC2, CV_8UC4.
+ CV_EXPORTS void remap(const oclMat &src, oclMat &dst, oclMat &map1, oclMat &map2, int interpolation, int bordertype, const Scalar &value = Scalar());
+
+ //! copies 2D array to a larger destination array and pads borders with user-specifiable constant
+ // supports CV_8UC1, CV_8UC4, CV_32SC1 types
+ CV_EXPORTS void copyMakeBorder(const oclMat &src, oclMat &dst, int top, int bottom, int left, int right, int boardtype, const Scalar &value = Scalar());
+
+ //! Smoothes image using median filter
+ // The source 1- or 4-channel image. m should be 3 or 5, the image depth should be CV_8U or CV_32F.
+ CV_EXPORTS void medianFilter(const oclMat &src, oclMat &dst, int m);
+
+ //! warps the image using affine transformation
+ // Supports INTER_NEAREST, INTER_LINEAR, INTER_CUBIC
+ // supports CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4 types
+ CV_EXPORTS void warpAffine(const oclMat &src, oclMat &dst, const Mat &M, Size dsize, int flags = INTER_LINEAR);
+
+ //! warps the image using perspective transformation
+ // Supports INTER_NEAREST, INTER_LINEAR, INTER_CUBIC
+ // supports CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4 types
+ CV_EXPORTS void warpPerspective(const oclMat &src, oclMat &dst, const Mat &M, Size dsize, int flags = INTER_LINEAR);
+
+ //! computes the integral image and integral for the squared image
+ // sum will have CV_32S type, sqsum - CV32F type
+ // supports only CV_8UC1 source type
+ CV_EXPORTS void integral(const oclMat &src, oclMat &sum, oclMat &sqsum);
+ CV_EXPORTS void integral(const oclMat &src, oclMat &sum);
+ CV_EXPORTS void cornerHarris(const oclMat &src, oclMat &dst, int blockSize, int ksize, double k, int bordertype = cv::BORDER_DEFAULT);
+ CV_EXPORTS void cornerHarris_dxdy(const oclMat &src, oclMat &dst, oclMat &Dx, oclMat &Dy,
+ int blockSize, int ksize, double k, int bordertype = cv::BORDER_DEFAULT);
+ CV_EXPORTS void cornerMinEigenVal(const oclMat &src, oclMat &dst, int blockSize, int ksize, int bordertype = cv::BORDER_DEFAULT);
+ CV_EXPORTS void cornerMinEigenVal_dxdy(const oclMat &src, oclMat &dst, oclMat &Dx, oclMat &Dy,
+ int blockSize, int ksize, int bordertype = cv::BORDER_DEFAULT);
+ /////////////////////////////////// ML ///////////////////////////////////////////
+
+ //! Compute closest centers for each lines in source and lable it after center's index
+ // supports CV_32FC1/CV_32FC2/CV_32FC4 data type
+ // supports NORM_L1 and NORM_L2 distType
+ // if indices is provided, only the indexed rows will be calculated and their results are in the same
+ // order of indices
+ CV_EXPORTS void distanceToCenters(const oclMat &src, const oclMat &centers, Mat &dists, Mat &labels, int distType = NORM_L2SQR);
+
+ //!Does k-means procedure on GPU
+ // supports CV_32FC1/CV_32FC2/CV_32FC4 data type
+ CV_EXPORTS double kmeans(const oclMat &src, int K, oclMat &bestLabels,
+ TermCriteria criteria, int attemps, int flags, oclMat &centers);
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////CascadeClassifier//////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ class CV_EXPORTS_W OclCascadeClassifier : public cv::CascadeClassifier
+ {
+ public:
+ OclCascadeClassifier() {};
+ ~OclCascadeClassifier() {};
+
+ CvSeq* oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
+ int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0));
+ void detectMultiScale(oclMat &image, CV_OUT std::vector<cv::Rect>& faces,
+ double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0,
+ Size minSize = Size(), Size maxSize = Size());
+ };
+
+ class CV_EXPORTS OclCascadeClassifierBuf : public cv::CascadeClassifier
+ {
+ public:
+ OclCascadeClassifierBuf() :
+ m_flags(0), initialized(false), m_scaleFactor(0), buffers(NULL) {}
+
+ ~OclCascadeClassifierBuf() { release(); }
+
+ void detectMultiScale(oclMat &image, CV_OUT std::vector<cv::Rect>& faces,
+ double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0,
+ Size minSize = Size(), Size maxSize = Size());
+ void release();
+
+ private:
+ void Init(const int rows, const int cols, double scaleFactor, int flags,
+ const int outputsz, const size_t localThreads[],
+ CvSize minSize, CvSize maxSize);
+ void CreateBaseBufs(const int datasize, const int totalclassifier, const int flags, const int outputsz);
+ void CreateFactorRelatedBufs(const int rows, const int cols, const int flags,
+ const double scaleFactor, const size_t localThreads[],
+ CvSize minSize, CvSize maxSize);
+ void GenResult(CV_OUT std::vector<cv::Rect>& faces, const std::vector<cv::Rect> &rectList, const std::vector<int> &rweights);
+
+ int m_rows;
+ int m_cols;
+ int m_flags;
+ int m_loopcount;
+ int m_nodenum;
+ bool findBiggestObject;
+ bool initialized;
+ double m_scaleFactor;
+ Size m_minSize;
+ Size m_maxSize;
+ vector<CvSize> sizev;
+ vector<float> scalev;
+ oclMat gimg1, gsum, gsqsum;
+ void * buffers;
+ };
+
+
+ /////////////////////////////// Pyramid /////////////////////////////////////
+ CV_EXPORTS void pyrDown(const oclMat &src, oclMat &dst);
+
+ //! upsamples the source image and then smoothes it
+ CV_EXPORTS void pyrUp(const oclMat &src, oclMat &dst);
+
+ //! performs linear blending of two images
+ //! to avoid accuracy errors sum of weigths shouldn't be very close to zero
+ // supports only CV_8UC1 source type
+ CV_EXPORTS void blendLinear(const oclMat &img1, const oclMat &img2, const oclMat &weights1, const oclMat &weights2, oclMat &result);
+
+ //! computes vertical sum, supports only CV_32FC1 images
+ CV_EXPORTS void columnSum(const oclMat &src, oclMat &sum);
+
+ ///////////////////////////////////////// match_template /////////////////////////////////////////////////////////////
+ struct CV_EXPORTS MatchTemplateBuf
+ {
+ Size user_block_size;
+ oclMat imagef, templf;
+ std::vector<oclMat> images;
+ std::vector<oclMat> image_sums;
+ std::vector<oclMat> image_sqsums;
+ };
+
+ //! computes the proximity map for the raster template and the image where the template is searched for
+ // Supports TM_SQDIFF, TM_SQDIFF_NORMED, TM_CCORR, TM_CCORR_NORMED, TM_CCOEFF, TM_CCOEFF_NORMED for type 8UC1 and 8UC4
+ // Supports TM_SQDIFF, TM_CCORR for type 32FC1 and 32FC4
+ CV_EXPORTS void matchTemplate(const oclMat &image, const oclMat &templ, oclMat &result, int method);
+
+ //! computes the proximity map for the raster template and the image where the template is searched for
+ // Supports TM_SQDIFF, TM_SQDIFF_NORMED, TM_CCORR, TM_CCORR_NORMED, TM_CCOEFF, TM_CCOEFF_NORMED for type 8UC1 and 8UC4
+ // Supports TM_SQDIFF, TM_CCORR for type 32FC1 and 32FC4
+ CV_EXPORTS void matchTemplate(const oclMat &image, const oclMat &templ, oclMat &result, int method, MatchTemplateBuf &buf);
+
+ ///////////////////////////////////////////// Canny /////////////////////////////////////////////
+ struct CV_EXPORTS CannyBuf;
+ //! compute edges of the input image using Canny operator
+ // Support CV_8UC1 only
+ CV_EXPORTS void Canny(const oclMat &image, oclMat &edges, double low_thresh, double high_thresh, int apperture_size = 3, bool L2gradient = false);
+ CV_EXPORTS void Canny(const oclMat &image, CannyBuf &buf, oclMat &edges, double low_thresh, double high_thresh, int apperture_size = 3, bool L2gradient = false);
+ CV_EXPORTS void Canny(const oclMat &dx, const oclMat &dy, oclMat &edges, double low_thresh, double high_thresh, bool L2gradient = false);
+ CV_EXPORTS void Canny(const oclMat &dx, const oclMat &dy, CannyBuf &buf, oclMat &edges, double low_thresh, double high_thresh, bool L2gradient = false);
+
+ struct CV_EXPORTS CannyBuf
+ {
+ CannyBuf() : counter(1, 1, CV_32S) { }
+ ~CannyBuf()
+ {
+ release();
+ }
+ explicit CannyBuf(const Size &image_size, int apperture_size = 3) : counter(1, 1, CV_32S)
+ {
+ create(image_size, apperture_size);
+ }
+ CannyBuf(const oclMat &dx_, const oclMat &dy_);
+
+ void create(const Size &image_size, int apperture_size = 3);
+ void release();
+ oclMat dx, dy;
+ oclMat dx_buf, dy_buf;
+ oclMat edgeBuf;
+ oclMat trackBuf1, trackBuf2;
+ oclMat counter;
+ Ptr<FilterEngine_GPU> filterDX, filterDY;
+ };
+
+ ///////////////////////////////////////// clAmdFft related /////////////////////////////////////////
+ //! Performs a forward or inverse discrete Fourier transform (1D or 2D) of floating point matrix.
+ //! Param dft_size is the size of DFT transform.
+ //!
+ //! For complex-to-real transform it is assumed that the source matrix is packed in CLFFT's format.
+ // support src type of CV32FC1, CV32FC2
+ // support flags: DFT_INVERSE, DFT_REAL_OUTPUT, DFT_COMPLEX_OUTPUT, DFT_ROWS
+ // dft_size is the size of original input, which is used for transformation from complex to real.
+ // dft_size must be powers of 2, 3 and 5
+ // real to complex dft requires at least v1.8 clAmdFft
+ // real to complex dft output is not the same with cpu version
+ // real to complex and complex to real does not support DFT_ROWS
+ CV_EXPORTS void dft(const oclMat &src, oclMat &dst, Size dft_size = Size(), int flags = 0);
+
+ //! implements generalized matrix product algorithm GEMM from BLAS
+ // The functionality requires clAmdBlas library
+ // only support type CV_32FC1
+ // flag GEMM_3_T is not supported
+ CV_EXPORTS void gemm(const oclMat &src1, const oclMat &src2, double alpha,
+ const oclMat &src3, double beta, oclMat &dst, int flags = 0);
+
+ //////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector //////////////
+ struct CV_EXPORTS HOGDescriptor
+ {
+ enum { DEFAULT_WIN_SIGMA = -1 };
+ enum { DEFAULT_NLEVELS = 64 };
+ enum { DESCR_FORMAT_ROW_BY_ROW, DESCR_FORMAT_COL_BY_COL };
+ HOGDescriptor(Size win_size = Size(64, 128), Size block_size = Size(16, 16),
+ Size block_stride = Size(8, 8), Size cell_size = Size(8, 8),
+ int nbins = 9, double win_sigma = DEFAULT_WIN_SIGMA,
+ double threshold_L2hys = 0.2, bool gamma_correction = true,
+ int nlevels = DEFAULT_NLEVELS);
+
+ size_t getDescriptorSize() const;
+ size_t getBlockHistogramSize() const;
+ void setSVMDetector(const vector<float> &detector);
+ static vector<float> getDefaultPeopleDetector();
+ static vector<float> getPeopleDetector48x96();
+ static vector<float> getPeopleDetector64x128();
+ void detect(const oclMat &img, vector<Point> &found_locations,
+ double hit_threshold = 0, Size win_stride = Size(),
+ Size padding = Size());
+ void detectMultiScale(const oclMat &img, vector<Rect> &found_locations,
+ double hit_threshold = 0, Size win_stride = Size(),
+ Size padding = Size(), double scale0 = 1.05,
+ int group_threshold = 2);
+ void getDescriptors(const oclMat &img, Size win_stride,
+ oclMat &descriptors,
+ int descr_format = DESCR_FORMAT_COL_BY_COL);
+ Size win_size;
+ Size block_size;
+ Size block_stride;
+ Size cell_size;
+
+ int nbins;
+ double win_sigma;
+ double threshold_L2hys;
+ bool gamma_correction;
+ int nlevels;
+
+ protected:
+ // initialize buffers; only need to do once in case of multiscale detection
+ void init_buffer(const oclMat &img, Size win_stride);
+ void computeBlockHistograms(const oclMat &img);
+ void computeGradient(const oclMat &img, oclMat &grad, oclMat &qangle);
+ double getWinSigma() const;
+ bool checkDetectorSize() const;
+
+ static int numPartsWithin(int size, int part_size, int stride);
+ static Size numPartsWithin(Size size, Size part_size, Size stride);
+
+ // Coefficients of the separating plane
+ float free_coef;
+ oclMat detector;
+ // Results of the last classification step
+ oclMat labels;
+ Mat labels_host;
+ // Results of the last histogram evaluation step
+ oclMat block_hists;
+ // Gradients conputation results
+ oclMat grad, qangle;
+ // scaled image
+ oclMat image_scale;
+ // effect size of input image (might be different from original size after scaling)
+ Size effect_size;
+
+ private:
+ oclMat gauss_w_lut;
+ };
+
+
+ ////////////////////////feature2d_ocl/////////////////
+ /****************************************************************************************\
+ * Distance *
+ \****************************************************************************************/
+ template<typename T>
+ struct CV_EXPORTS Accumulator
+ {
+ typedef T Type;
+ };
+ template<> struct Accumulator<unsigned char>
+ {
+ typedef float Type;
+ };
+ template<> struct Accumulator<unsigned short>
+ {
+ typedef float Type;
+ };
+ template<> struct Accumulator<char>
+ {
+ typedef float Type;
+ };
+ template<> struct Accumulator<short>
+ {
+ typedef float Type;
+ };
+
+ /*
+ * Manhattan distance (city block distance) functor
+ */
+ template<class T>
+ struct CV_EXPORTS L1
+ {
+ enum { normType = NORM_L1 };
+ typedef T ValueType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ ResultType operator()( const T *a, const T *b, int size ) const
+ {
+ return normL1<ValueType, ResultType>(a, b, size);
+ }
+ };
+
+ /*
+ * Euclidean distance functor
+ */
+ template<class T>
+ struct CV_EXPORTS L2
+ {
+ enum { normType = NORM_L2 };
+ typedef T ValueType;
+ typedef typename Accumulator<T>::Type ResultType;
+
+ ResultType operator()( const T *a, const T *b, int size ) const
+ {
+ return (ResultType)sqrt((double)normL2Sqr<ValueType, ResultType>(a, b, size));
+ }
+ };
+
+ /*
+ * Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor
+ * bit count of A exclusive XOR'ed with B
+ */
+ struct CV_EXPORTS Hamming
+ {
+ enum { normType = NORM_HAMMING };
+ typedef unsigned char ValueType;
+ typedef int ResultType;
+
+ /** this will count the bits in a ^ b
+ */
+ ResultType operator()( const unsigned char *a, const unsigned char *b, int size ) const
+ {
+ return normHamming(a, b, size);
+ }
+ };
+
+ ////////////////////////////////// BruteForceMatcher //////////////////////////////////
+
+ class CV_EXPORTS BruteForceMatcher_OCL_base
+ {
+ public:
+ enum DistType {L1Dist = 0, L2Dist, HammingDist};
+ explicit BruteForceMatcher_OCL_base(DistType distType = L2Dist);
+ // Add descriptors to train descriptor collection
+ void add(const std::vector<oclMat> &descCollection);
+ // Get train descriptors collection
+ const std::vector<oclMat> &getTrainDescriptors() const;
+ // Clear train descriptors collection
+ void clear();
+ // Return true if there are not train descriptors in collection
+ bool empty() const;
+
+ // Return true if the matcher supports mask in match methods
+ bool isMaskSupported() const;
+
+ // Find one best match for each query descriptor
+ void matchSingle(const oclMat &query, const oclMat &train,
+ oclMat &trainIdx, oclMat &distance,
+ const oclMat &mask = oclMat());
+
+ // Download trainIdx and distance and convert it to CPU vector with DMatch
+ static void matchDownload(const oclMat &trainIdx, const oclMat &distance, std::vector<DMatch> &matches);
+ // Convert trainIdx and distance to vector with DMatch
+ static void matchConvert(const Mat &trainIdx, const Mat &distance, std::vector<DMatch> &matches);
+
+ // Find one best match for each query descriptor
+ void match(const oclMat &query, const oclMat &train, std::vector<DMatch> &matches, const oclMat &mask = oclMat());
+
+ // Make gpu collection of trains and masks in suitable format for matchCollection function
+ void makeGpuCollection(oclMat &trainCollection, oclMat &maskCollection, const std::vector<oclMat> &masks = std::vector<oclMat>());
+
+
+ // Find one best match from train collection for each query descriptor
+ void matchCollection(const oclMat &query, const oclMat &trainCollection,
+ oclMat &trainIdx, oclMat &imgIdx, oclMat &distance,
+ const oclMat &masks = oclMat());
+
+ // Download trainIdx, imgIdx and distance and convert it to vector with DMatch
+ static void matchDownload(const oclMat &trainIdx, const oclMat &imgIdx, const oclMat &distance, std::vector<DMatch> &matches);
+ // Convert trainIdx, imgIdx and distance to vector with DMatch
+ static void matchConvert(const Mat &trainIdx, const Mat &imgIdx, const Mat &distance, std::vector<DMatch> &matches);
+
+ // Find one best match from train collection for each query descriptor.
+ void match(const oclMat &query, std::vector<DMatch> &matches, const std::vector<oclMat> &masks = std::vector<oclMat>());
+
+ // Find k best matches for each query descriptor (in increasing order of distances)
+ void knnMatchSingle(const oclMat &query, const oclMat &train,
+ oclMat &trainIdx, oclMat &distance, oclMat &allDist, int k,
+ const oclMat &mask = oclMat());
+
+ // Download trainIdx and distance and convert it to vector with DMatch
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void knnMatchDownload(const oclMat &trainIdx, const oclMat &distance,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+
+ // Convert trainIdx and distance to vector with DMatch
+ static void knnMatchConvert(const Mat &trainIdx, const Mat &distance,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+
+ // Find k best matches for each query descriptor (in increasing order of distances).
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ void knnMatch(const oclMat &query, const oclMat &train,
+ std::vector< std::vector<DMatch> > &matches, int k, const oclMat &mask = oclMat(),
+ bool compactResult = false);
+
+ // Find k best matches from train collection for each query descriptor (in increasing order of distances)
+ void knnMatch2Collection(const oclMat &query, const oclMat &trainCollection,
+ oclMat &trainIdx, oclMat &imgIdx, oclMat &distance,
+ const oclMat &maskCollection = oclMat());
+
+ // Download trainIdx and distance and convert it to vector with DMatch
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void knnMatch2Download(const oclMat &trainIdx, const oclMat &imgIdx, const oclMat &distance,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+
+ // Convert trainIdx and distance to vector with DMatch
+ static void knnMatch2Convert(const Mat &trainIdx, const Mat &imgIdx, const Mat &distance,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+
+ // Find k best matches for each query descriptor (in increasing order of distances).
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ void knnMatch(const oclMat &query, std::vector< std::vector<DMatch> > &matches, int k,
+ const std::vector<oclMat> &masks = std::vector<oclMat>(), bool compactResult = false);
+
+ // Find best matches for each query descriptor which have distance less than maxDistance.
+ // nMatches.at<int>(0, queryIdx) will contain matches count for queryIdx.
+ // carefully nMatches can be greater than trainIdx.cols - it means that matcher didn't find all matches,
+ // because it didn't have enough memory.
+ // If trainIdx is empty, then trainIdx and distance will be created with size nQuery x max((nTrain / 100), 10),
+ // otherwize user can pass own allocated trainIdx and distance with size nQuery x nMaxMatches
+ // Matches doesn't sorted.
+ void radiusMatchSingle(const oclMat &query, const oclMat &train,
+ oclMat &trainIdx, oclMat &distance, oclMat &nMatches, float maxDistance,
+ const oclMat &mask = oclMat());
+
+ // Download trainIdx, nMatches and distance and convert it to vector with DMatch.
+ // matches will be sorted in increasing order of distances.
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void radiusMatchDownload(const oclMat &trainIdx, const oclMat &distance, const oclMat &nMatches,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+ // Convert trainIdx, nMatches and distance to vector with DMatch.
+ static void radiusMatchConvert(const Mat &trainIdx, const Mat &distance, const Mat &nMatches,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+ // Find best matches for each query descriptor which have distance less than maxDistance
+ // in increasing order of distances).
+ void radiusMatch(const oclMat &query, const oclMat &train,
+ std::vector< std::vector<DMatch> > &matches, float maxDistance,
+ const oclMat &mask = oclMat(), bool compactResult = false);
+ // Find best matches for each query descriptor which have distance less than maxDistance.
+ // If trainIdx is empty, then trainIdx and distance will be created with size nQuery x max((nQuery / 100), 10),
+ // otherwize user can pass own allocated trainIdx and distance with size nQuery x nMaxMatches
+ // Matches doesn't sorted.
+ void radiusMatchCollection(const oclMat &query, oclMat &trainIdx, oclMat &imgIdx, oclMat &distance, oclMat &nMatches, float maxDistance,
+ const std::vector<oclMat> &masks = std::vector<oclMat>());
+ // Download trainIdx, imgIdx, nMatches and distance and convert it to vector with DMatch.
+ // matches will be sorted in increasing order of distances.
+ // compactResult is used when mask is not empty. If compactResult is false matches
+ // vector will have the same size as queryDescriptors rows. If compactResult is true
+ // matches vector will not contain matches for fully masked out query descriptors.
+ static void radiusMatchDownload(const oclMat &trainIdx, const oclMat &imgIdx, const oclMat &distance, const oclMat &nMatches,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+ // Convert trainIdx, nMatches and distance to vector with DMatch.
+ static void radiusMatchConvert(const Mat &trainIdx, const Mat &imgIdx, const Mat &distance, const Mat &nMatches,
+ std::vector< std::vector<DMatch> > &matches, bool compactResult = false);
+ // Find best matches from train collection for each query descriptor which have distance less than
+ // maxDistance (in increasing order of distances).
+ void radiusMatch(const oclMat &query, std::vector< std::vector<DMatch> > &matches, float maxDistance,
+ const std::vector<oclMat> &masks = std::vector<oclMat>(), bool compactResult = false);
+ DistType distType;
+ private:
+ std::vector<oclMat> trainDescCollection;
+ };
+
+ template <class Distance>
+ class CV_EXPORTS BruteForceMatcher_OCL;
+
+ template <typename T>
+ class CV_EXPORTS BruteForceMatcher_OCL< L1<T> > : public BruteForceMatcher_OCL_base
+ {
+ public:
+ explicit BruteForceMatcher_OCL() : BruteForceMatcher_OCL_base(L1Dist) {}
+ explicit BruteForceMatcher_OCL(L1<T> /*d*/) : BruteForceMatcher_OCL_base(L1Dist) {}
+ };
+
+ template <typename T>
+ class CV_EXPORTS BruteForceMatcher_OCL< L2<T> > : public BruteForceMatcher_OCL_base
+ {
+ public:
+ explicit BruteForceMatcher_OCL() : BruteForceMatcher_OCL_base(L2Dist) {}
+ explicit BruteForceMatcher_OCL(L2<T> /*d*/) : BruteForceMatcher_OCL_base(L2Dist) {}
+ };
+
+ template <> class CV_EXPORTS BruteForceMatcher_OCL< Hamming > : public BruteForceMatcher_OCL_base
+ {
+ public:
+ explicit BruteForceMatcher_OCL() : BruteForceMatcher_OCL_base(HammingDist) {}
+ explicit BruteForceMatcher_OCL(Hamming /*d*/) : BruteForceMatcher_OCL_base(HammingDist) {}
+ };
+
+ class CV_EXPORTS BFMatcher_OCL : public BruteForceMatcher_OCL_base
+ {
+ public:
+ explicit BFMatcher_OCL(int norm = NORM_L2) : BruteForceMatcher_OCL_base(norm == NORM_L1 ? L1Dist : norm == NORM_L2 ? L2Dist : HammingDist) {}
+ };
+
+ class CV_EXPORTS GoodFeaturesToTrackDetector_OCL
+ {
+ public:
+ explicit GoodFeaturesToTrackDetector_OCL(int maxCorners = 1000, double qualityLevel = 0.01, double minDistance = 0.0,
+ int blockSize = 3, bool useHarrisDetector = false, double harrisK = 0.04);
+
+ //! return 1 rows matrix with CV_32FC2 type
+ void operator ()(const oclMat& image, oclMat& corners, const oclMat& mask = oclMat());
+ //! download points of type Point2f to a vector. the vector's content will be erased
+ void downloadPoints(const oclMat &points, vector<Point2f> &points_v);
+
+ int maxCorners;
+ double qualityLevel;
+ double minDistance;
+
+ int blockSize;
+ bool useHarrisDetector;
+ double harrisK;
+ void releaseMemory()
+ {
+ Dx_.release();
+ Dy_.release();
+ eig_.release();
+ minMaxbuf_.release();
+ tmpCorners_.release();
+ }
+ private:
+ oclMat Dx_;
+ oclMat Dy_;
+ oclMat eig_;
+ oclMat eig_minmax_;
+ oclMat minMaxbuf_;
+ oclMat tmpCorners_;
+ oclMat counter_;
+ };
+
+ inline GoodFeaturesToTrackDetector_OCL::GoodFeaturesToTrackDetector_OCL(int maxCorners_, double qualityLevel_, double minDistance_,
+ int blockSize_, bool useHarrisDetector_, double harrisK_)
+ {
+ maxCorners = maxCorners_;
+ qualityLevel = qualityLevel_;
+ minDistance = minDistance_;
+ blockSize = blockSize_;
+ useHarrisDetector = useHarrisDetector_;
+ harrisK = harrisK_;
+ }
+
+ /////////////////////////////// PyrLKOpticalFlow /////////////////////////////////////
+ class CV_EXPORTS PyrLKOpticalFlow
+ {
+ public:
+ PyrLKOpticalFlow()
+ {
+ winSize = Size(21, 21);
+ maxLevel = 3;
+ iters = 30;
+ derivLambda = 0.5;
+ useInitialFlow = false;
+ minEigThreshold = 1e-4f;
+ getMinEigenVals = false;
+ isDeviceArch11_ = false;
+ }
+
+ void sparse(const oclMat &prevImg, const oclMat &nextImg, const oclMat &prevPts, oclMat &nextPts,
+ oclMat &status, oclMat *err = 0);
+ void dense(const oclMat &prevImg, const oclMat &nextImg, oclMat &u, oclMat &v, oclMat *err = 0);
+ Size winSize;
+ int maxLevel;
+ int iters;
+ double derivLambda;
+ bool useInitialFlow;
+ float minEigThreshold;
+ bool getMinEigenVals;
+ void releaseMemory()
+ {
+ dx_calcBuf_.release();
+ dy_calcBuf_.release();
+
+ prevPyr_.clear();
+ nextPyr_.clear();
+
+ dx_buf_.release();
+ dy_buf_.release();
+ }
+ private:
+ void calcSharrDeriv(const oclMat &src, oclMat &dx, oclMat &dy);
+ void buildImagePyramid(const oclMat &img0, vector<oclMat> &pyr, bool withBorder);
+
+ oclMat dx_calcBuf_;
+ oclMat dy_calcBuf_;
+
+ vector<oclMat> prevPyr_;
+ vector<oclMat> nextPyr_;
+
+ oclMat dx_buf_;
+ oclMat dy_buf_;
+ oclMat uPyr_[2];
+ oclMat vPyr_[2];
+ bool isDeviceArch11_;
+ };
+
+ class CV_EXPORTS FarnebackOpticalFlow
+ {
+ public:
+ FarnebackOpticalFlow();
+
+ int numLevels;
+ double pyrScale;
+ bool fastPyramids;
+ int winSize;
+ int numIters;
+ int polyN;
+ double polySigma;
+ int flags;
+
+ void operator ()(const oclMat &frame0, const oclMat &frame1, oclMat &flowx, oclMat &flowy);
+
+ void releaseMemory();
+
+ private:
+ void setGaussianBlurKernel(const float *c_gKer, int ksizeHalf);
+
+ void gaussianBlurOcl(const oclMat &src, int ksizeHalf, oclMat &dst);
+
+ void polynomialExpansionOcl(
+ const oclMat &src, int polyN, oclMat &dst);
+
+ void gaussianBlur5Ocl(
+ const oclMat &src, int ksizeHalf, oclMat &dst);
+
+ void prepareGaussian(
+ int n, double sigma, float *g, float *xg, float *xxg,
+ double &ig11, double &ig03, double &ig33, double &ig55);
+
+ void setPolynomialExpansionConsts(int n, double sigma);
+
+ void updateFlow_boxFilter(
+ const oclMat& R0, const oclMat& R1, oclMat& flowx, oclMat &flowy,
+ oclMat& M, oclMat &bufM, int blockSize, bool updateMatrices);
+
+ void updateFlow_gaussianBlur(
+ const oclMat& R0, const oclMat& R1, oclMat& flowx, oclMat& flowy,
+ oclMat& M, oclMat &bufM, int blockSize, bool updateMatrices);
+
+ oclMat frames_[2];
+ oclMat pyrLevel_[2], M_, bufM_, R_[2], blurredFrame_[2];
+ std::vector<oclMat> pyramid0_, pyramid1_;
+ float ig[4];
+ oclMat gMat;
+ oclMat xgMat;
+ oclMat xxgMat;
+ oclMat gKerMat;
+ };
+
+ //////////////// build warping maps ////////////////////
+ //! builds plane warping maps
+ CV_EXPORTS void buildWarpPlaneMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat &R, const Mat &T, float scale, oclMat &map_x, oclMat &map_y);
+ //! builds cylindrical warping maps
+ CV_EXPORTS void buildWarpCylindricalMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat &R, float scale, oclMat &map_x, oclMat &map_y);
+ //! builds spherical warping maps
+ CV_EXPORTS void buildWarpSphericalMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat &R, float scale, oclMat &map_x, oclMat &map_y);
+ //! builds Affine warping maps
+ CV_EXPORTS void buildWarpAffineMaps(const Mat &M, bool inverse, Size dsize, oclMat &xmap, oclMat &ymap);
+
+ //! builds Perspective warping maps
+ CV_EXPORTS void buildWarpPerspectiveMaps(const Mat &M, bool inverse, Size dsize, oclMat &xmap, oclMat &ymap);
+
+ ///////////////////////////////////// interpolate frames //////////////////////////////////////////////
+ //! Interpolate frames (images) using provided optical flow (displacement field).
+ //! frame0 - frame 0 (32-bit floating point images, single channel)
+ //! frame1 - frame 1 (the same type and size)
+ //! fu - forward horizontal displacement
+ //! fv - forward vertical displacement
+ //! bu - backward horizontal displacement
+ //! bv - backward vertical displacement
+ //! pos - new frame position
+ //! newFrame - new frame
+ //! buf - temporary buffer, will have width x 6*height size, CV_32FC1 type and contain 6 oclMat;
+ //! occlusion masks 0, occlusion masks 1,
+ //! interpolated forward flow 0, interpolated forward flow 1,
+ //! interpolated backward flow 0, interpolated backward flow 1
+ //!
+ CV_EXPORTS void interpolateFrames(const oclMat &frame0, const oclMat &frame1,
+ const oclMat &fu, const oclMat &fv,
+ const oclMat &bu, const oclMat &bv,
+ float pos, oclMat &newFrame, oclMat &buf);
+
+ //! computes moments of the rasterized shape or a vector of points
+ //! _array should be a vector a points standing for the contour
+ CV_EXPORTS Moments ocl_moments(InputArray contour);
+ //! src should be a general image uploaded to the GPU.
+ //! the supported oclMat type are CV_8UC1, CV_16UC1, CV_16SC1, CV_32FC1 and CV_64FC1
+ //! to use type of CV_64FC1, the GPU should support CV_64FC1
+ CV_EXPORTS Moments ocl_moments(oclMat& src, bool binary);
+
+ class CV_EXPORTS StereoBM_OCL
+ {
+ public:
+ enum { BASIC_PRESET = 0, PREFILTER_XSOBEL = 1 };
+
+ enum { DEFAULT_NDISP = 64, DEFAULT_WINSZ = 19 };
+
+ //! the default constructor
+ StereoBM_OCL();
+ //! the full constructor taking the camera-specific preset, number of disparities and the SAD window size. ndisparities must be multiple of 8.
+ StereoBM_OCL(int preset, int ndisparities = DEFAULT_NDISP, int winSize = DEFAULT_WINSZ);
+
+ //! the stereo correspondence operator. Finds the disparity for the specified rectified stereo pair
+ //! Output disparity has CV_8U type.
+ void operator() ( const oclMat &left, const oclMat &right, oclMat &disparity);
+
+ //! Some heuristics that tries to estmate
+ // if current GPU will be faster then CPU in this algorithm.
+ // It queries current active device.
+ static bool checkIfGpuCallReasonable();
+
+ int preset;
+ int ndisp;
+ int winSize;
+
+ // If avergeTexThreshold == 0 => post procesing is disabled
+ // If avergeTexThreshold != 0 then disparity is set 0 in each point (x,y) where for left image
+ // SumOfHorizontalGradiensInWindow(x, y, winSize) < (winSize * winSize) * avergeTexThreshold
+ // i.e. input left image is low textured.
+ float avergeTexThreshold;
+ private:
+ oclMat minSSD, leBuf, riBuf;
+ };
+
+ class CV_EXPORTS StereoBeliefPropagation
+ {
+ public:
+ enum { DEFAULT_NDISP = 64 };
+ enum { DEFAULT_ITERS = 5 };
+ enum { DEFAULT_LEVELS = 5 };
+ static void estimateRecommendedParams(int width, int height, int &ndisp, int &iters, int &levels);
+ explicit StereoBeliefPropagation(int ndisp = DEFAULT_NDISP,
+ int iters = DEFAULT_ITERS,
+ int levels = DEFAULT_LEVELS,
+ int msg_type = CV_16S);
+ StereoBeliefPropagation(int ndisp, int iters, int levels,
+ float max_data_term, float data_weight,
+ float max_disc_term, float disc_single_jump,
+ int msg_type = CV_32F);
+ void operator()(const oclMat &left, const oclMat &right, oclMat &disparity);
+ void operator()(const oclMat &data, oclMat &disparity);
+ int ndisp;
+ int iters;
+ int levels;
+ float max_data_term;
+ float data_weight;
+ float max_disc_term;
+ float disc_single_jump;
+ int msg_type;
+ private:
+ oclMat u, d, l, r, u2, d2, l2, r2;
+ std::vector<oclMat> datas;
+ oclMat out;
+ };
+
+ class CV_EXPORTS StereoConstantSpaceBP
+ {
+ public:
+ enum { DEFAULT_NDISP = 128 };
+ enum { DEFAULT_ITERS = 8 };
+ enum { DEFAULT_LEVELS = 4 };
+ enum { DEFAULT_NR_PLANE = 4 };
+ static void estimateRecommendedParams(int width, int height, int &ndisp, int &iters, int &levels, int &nr_plane);
+ explicit StereoConstantSpaceBP(
+ int ndisp = DEFAULT_NDISP,
+ int iters = DEFAULT_ITERS,
+ int levels = DEFAULT_LEVELS,
+ int nr_plane = DEFAULT_NR_PLANE,
+ int msg_type = CV_32F);
+ StereoConstantSpaceBP(int ndisp, int iters, int levels, int nr_plane,
+ float max_data_term, float data_weight, float max_disc_term, float disc_single_jump,
+ int min_disp_th = 0,
+ int msg_type = CV_32F);
+ void operator()(const oclMat &left, const oclMat &right, oclMat &disparity);
+ int ndisp;
+ int iters;
+ int levels;
+ int nr_plane;
+ float max_data_term;
+ float data_weight;
+ float max_disc_term;
+ float disc_single_jump;
+ int min_disp_th;
+ int msg_type;
+ bool use_local_init_data_cost;
+ private:
+ oclMat u[2], d[2], l[2], r[2];
+ oclMat disp_selected_pyr[2];
+ oclMat data_cost;
+ oclMat data_cost_selected;
+ oclMat temp;
+ oclMat out;
+ };
+
+ // Implementation of the Zach, Pock and Bischof Dual TV-L1 Optical Flow method
+ //
+ // see reference:
+ // [1] C. Zach, T. Pock and H. Bischof, "A Duality Based Approach for Realtime TV-L1 Optical Flow".
+ // [2] Javier Sanchez, Enric Meinhardt-Llopis and Gabriele Facciolo. "TV-L1 Optical Flow Estimation".
+ class CV_EXPORTS OpticalFlowDual_TVL1_OCL
+ {
+ public:
+ OpticalFlowDual_TVL1_OCL();
+
+ void operator ()(const oclMat& I0, const oclMat& I1, oclMat& flowx, oclMat& flowy);
+
+ void collectGarbage();
+
+ /**
+ * Time step of the numerical scheme.
+ */
+ double tau;
+
+ /**
+ * Weight parameter for the data term, attachment parameter.
+ * This is the most relevant parameter, which determines the smoothness of the output.
+ * The smaller this parameter is, the smoother the solutions we obtain.
+ * It depends on the range of motions of the images, so its value should be adapted to each image sequence.
+ */
+ double lambda;
+
+ /**
+ * Weight parameter for (u - v)^2, tightness parameter.
+ * It serves as a link between the attachment and the regularization terms.
+ * In theory, it should have a small value in order to maintain both parts in correspondence.
+ * The method is stable for a large range of values of this parameter.
+ */
+ double theta;
+
+ /**
+ * Number of scales used to create the pyramid of images.
+ */
+ int nscales;
+
+ /**
+ * Number of warpings per scale.
+ * Represents the number of times that I1(x+u0) and grad( I1(x+u0) ) are computed per scale.
+ * This is a parameter that assures the stability of the method.
+ * It also affects the running time, so it is a compromise between speed and accuracy.
+ */
+ int warps;
+
+ /**
+ * Stopping criterion threshold used in the numerical scheme, which is a trade-off between precision and running time.
+ * A small value will yield more accurate solutions at the expense of a slower convergence.
+ */
+ double epsilon;
+
+ /**
+ * Stopping criterion iterations number used in the numerical scheme.
+ */
+ int iterations;
+
+ bool useInitialFlow;
+
+ private:
+ void procOneScale(const oclMat& I0, const oclMat& I1, oclMat& u1, oclMat& u2);
+
+ std::vector<oclMat> I0s;
+ std::vector<oclMat> I1s;
+ std::vector<oclMat> u1s;
+ std::vector<oclMat> u2s;
+
+ oclMat I1x_buf;
+ oclMat I1y_buf;
+
+ oclMat I1w_buf;
+ oclMat I1wx_buf;
+ oclMat I1wy_buf;
+
+ oclMat grad_buf;
+ oclMat rho_c_buf;
+
+ oclMat p11_buf;
+ oclMat p12_buf;
+ oclMat p21_buf;
+ oclMat p22_buf;
+
+ oclMat diff_buf;
+ oclMat norm_buf;
+ };
+ // current supported sorting methods
+ enum
+ {
+ SORT_BITONIC, // only support power-of-2 buffer size
+ SORT_SELECTION, // cannot sort duplicate keys
+ SORT_MERGE,
+ SORT_RADIX // only support signed int/float keys(CV_32S/CV_32F)
+ };
+ //! Returns the sorted result of all the elements in input based on equivalent keys.
+ //
+ // The element unit in the values to be sorted is determined from the data type,
+ // i.e., a CV_32FC2 input {a1a2, b1b2} will be considered as two elements, regardless its
+ // matrix dimension.
+ // both keys and values will be sorted inplace
+ // Key needs to be single channel oclMat.
+ //
+ // Example:
+ // input -
+ // keys = {2, 3, 1} (CV_8UC1)
+ // values = {10,5, 4,3, 6,2} (CV_8UC2)
+ // sortByKey(keys, values, SORT_SELECTION, false);
+ // output -
+ // keys = {1, 2, 3} (CV_8UC1)
+ // values = {6,2, 10,5, 4,3} (CV_8UC2)
+ CV_EXPORTS void sortByKey(oclMat& keys, oclMat& values, int method, bool isGreaterThan = false);
+ /*!Base class for MOG and MOG2!*/
+ class CV_EXPORTS BackgroundSubtractor
+ {
+ public:
+ //! the virtual destructor
+ virtual ~BackgroundSubtractor();
+ //! the update operator that takes the next video frame and returns the current foreground mask as 8-bit binary image.
+ virtual void operator()(const oclMat& image, oclMat& fgmask, float learningRate);
+
+ //! computes a background image
+ virtual void getBackgroundImage(oclMat& backgroundImage) const = 0;
+ };
+ /*!
+ Gaussian Mixture-based Backbround/Foreground Segmentation Algorithm
+
+ The class implements the following algorithm:
+ "An improved adaptive background mixture model for real-time tracking with shadow detection"
+ P. KadewTraKuPong and R. Bowden,
+ Proc. 2nd European Workshp on Advanced Video-Based Surveillance Systems, 2001."
+ http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf
+ */
+ class CV_EXPORTS MOG: public cv::ocl::BackgroundSubtractor
+ {
+ public:
+ //! the default constructor
+ MOG(int nmixtures = -1);
+
+ //! re-initiaization method
+ void initialize(Size frameSize, int frameType);
+
+ //! the update operator
+ void operator()(const oclMat& frame, oclMat& fgmask, float learningRate = 0.f);
+
+ //! computes a background image which are the mean of all background gaussians
+ void getBackgroundImage(oclMat& backgroundImage) const;
+
+ //! releases all inner buffers
+ void release();
+
+ int history;
+ float varThreshold;
+ float backgroundRatio;
+ float noiseSigma;
+
+ private:
+ int nmixtures_;
+
+ Size frameSize_;
+ int frameType_;
+ int nframes_;
+
+ oclMat weight_;
+ oclMat sortKey_;
+ oclMat mean_;
+ oclMat var_;
+ };
+
+ /*!
+ The class implements the following algorithm:
+ "Improved adaptive Gausian mixture model for background subtraction"
+ Z.Zivkovic
+ International Conference Pattern Recognition, UK, August, 2004.
+ http://www.zoranz.net/Publications/zivkovic2004ICPR.pdf
+ */
+ class CV_EXPORTS MOG2: public cv::ocl::BackgroundSubtractor
+ {
+ public:
+ //! the default constructor
+ MOG2(int nmixtures = -1);
+
+ //! re-initiaization method
+ void initialize(Size frameSize, int frameType);
+
+ //! the update operator
+ void operator()(const oclMat& frame, oclMat& fgmask, float learningRate = -1.0f);
+
+ //! computes a background image which are the mean of all background gaussians
+ void getBackgroundImage(oclMat& backgroundImage) const;
+
+ //! releases all inner buffers
+ void release();
+
+ // parameters
+ // you should call initialize after parameters changes
+
+ int history;
+
+ //! here it is the maximum allowed number of mixture components.
+ //! Actual number is determined dynamically per pixel
+ float varThreshold;
+ // threshold on the squared Mahalanobis distance to decide if it is well described
+ // by the background model or not. Related to Cthr from the paper.
+ // This does not influence the update of the background. A typical value could be 4 sigma
+ // and that is varThreshold=4*4=16; Corresponds to Tb in the paper.
+
+ /////////////////////////
+ // less important parameters - things you might change but be carefull
+ ////////////////////////
+
+ float backgroundRatio;
+ // corresponds to fTB=1-cf from the paper
+ // TB - threshold when the component becomes significant enough to be included into
+ // the background model. It is the TB=1-cf from the paper. So I use cf=0.1 => TB=0.
+ // For alpha=0.001 it means that the mode should exist for approximately 105 frames before
+ // it is considered foreground
+ // float noiseSigma;
+ float varThresholdGen;
+
+ //correspondts to Tg - threshold on the squared Mahalan. dist. to decide
+ //when a sample is close to the existing components. If it is not close
+ //to any a new component will be generated. I use 3 sigma => Tg=3*3=9.
+ //Smaller Tg leads to more generated components and higher Tg might make
+ //lead to small number of components but they can grow too large
+ float fVarInit;
+ float fVarMin;
+ float fVarMax;
+
+ //initial variance for the newly generated components.
+ //It will will influence the speed of adaptation. A good guess should be made.
+ //A simple way is to estimate the typical standard deviation from the images.
+ //I used here 10 as a reasonable value
+ // min and max can be used to further control the variance
+ float fCT; //CT - complexity reduction prior
+ //this is related to the number of samples needed to accept that a component
+ //actually exists. We use CT=0.05 of all the samples. By setting CT=0 you get
+ //the standard Stauffer&Grimson algorithm (maybe not exact but very similar)
+
+ //shadow detection parameters
+ bool bShadowDetection; //default 1 - do shadow detection
+ unsigned char nShadowDetection; //do shadow detection - insert this value as the detection result - 127 default value
+ float fTau;
+ // Tau - shadow threshold. The shadow is detected if the pixel is darker
+ //version of the background. Tau is a threshold on how much darker the shadow can be.
+ //Tau= 0.5 means that if pixel is more than 2 times darker then it is not shadow
+ //See: Prati,Mikic,Trivedi,Cucchiarra,"Detecting Moving Shadows...",IEEE PAMI,2003.
+
+ private:
+ int nmixtures_;
+
+ Size frameSize_;
+ int frameType_;
+ int nframes_;
+
+ oclMat weight_;
+ oclMat variance_;
+ oclMat mean_;
+
+ oclMat bgmodelUsedModes_; //keep track of number of modes per pixel
+ };
+
+ /*!***************Kalman Filter*************!*/
+ class CV_EXPORTS KalmanFilter
+ {
+ public:
+ KalmanFilter();
+ //! the full constructor taking the dimensionality of the state, of the measurement and of the control vector
+ KalmanFilter(int dynamParams, int measureParams, int controlParams=0, int type=CV_32F);
+ //! re-initializes Kalman filter. The previous content is destroyed.
+ void init(int dynamParams, int measureParams, int controlParams=0, int type=CV_32F);
+
+ const oclMat& predict(const oclMat& control=oclMat());
+ const oclMat& correct(const oclMat& measurement);
+
+ oclMat statePre; //!< predicted state (x'(k)): x(k)=A*x(k-1)+B*u(k)
+ oclMat statePost; //!< corrected state (x(k)): x(k)=x'(k)+K(k)*(z(k)-H*x'(k))
+ oclMat transitionMatrix; //!< state transition matrix (A)
+ oclMat controlMatrix; //!< control matrix (B) (not used if there is no control)
+ oclMat measurementMatrix; //!< measurement matrix (H)
+ oclMat processNoiseCov; //!< process noise covariance matrix (Q)
+ oclMat measurementNoiseCov;//!< measurement noise covariance matrix (R)
+ oclMat errorCovPre; //!< priori error estimate covariance matrix (P'(k)): P'(k)=A*P(k-1)*At + Q)*/
+ oclMat gain; //!< Kalman gain matrix (K(k)): K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R)
+ oclMat errorCovPost; //!< posteriori error estimate covariance matrix (P(k)): P(k)=(I-K(k)*H)*P'(k)
+ private:
+ oclMat temp1;
+ oclMat temp2;
+ oclMat temp3;
+ oclMat temp4;
+ oclMat temp5;
+ };
+
+ /*!***************K Nearest Neighbour*************!*/
+ class CV_EXPORTS KNearestNeighbour: public CvKNearest
+ {
+ public:
+ KNearestNeighbour();
+ ~KNearestNeighbour();
+
+ bool train(const Mat& trainData, Mat& labels, Mat& sampleIdx = Mat().setTo(Scalar::all(0)),
+ bool isRegression = false, int max_k = 32, bool updateBase = false);
+
+ void clear();
+
+ void find_nearest(const oclMat& samples, int k, oclMat& lables);
+
+ private:
+ oclMat samples_ocl;
+ };
+
+ /*!*************** SVM *************!*/
+ class CV_EXPORTS CvSVM_OCL : public CvSVM
+ {
+ public:
+ CvSVM_OCL();
+
+ CvSVM_OCL(const cv::Mat& trainData, const cv::Mat& responses,
+ const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(),
+ CvSVMParams params=CvSVMParams());
+ CV_WRAP float predict( const int row_index, Mat& src, bool returnDFVal=false ) const;
+ CV_WRAP void predict( cv::InputArray samples, cv::OutputArray results ) const;
+ CV_WRAP float predict( const cv::Mat& sample, bool returnDFVal=false ) const;
+ float predict( const CvMat* samples, CV_OUT CvMat* results ) const;
+
+ protected:
+ float predict( const int row_index, int row_len, Mat& src, bool returnDFVal=false ) const;
+ void create_kernel();
+ void create_solver();
+ };
+
+ /*!*************** END *************!*/
+ }
+}
+#if defined _MSC_VER && _MSC_VER >= 1200
+# pragma warning( push)
+# pragma warning( disable: 4267)
+#endif
+#include "opencv2/ocl/matrix_operations.hpp"
+#if defined _MSC_VER && _MSC_VER >= 1200
+# pragma warning( pop)
+#endif
+
+#endif /* __OPENCV_OCL_HPP__ */
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/opencv.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/opencv.hpp
new file mode 100644
index 00000000..f76da92f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/opencv.hpp
@@ -0,0 +1,83 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_ALL_HPP__
+#define __OPENCV_ALL_HPP__
+
+#include "opencv2/opencv_modules.hpp"
+
+#include "opencv2/core/core_c.h"
+#include "opencv2/core/core.hpp"
+#ifdef HAVE_OPENCV_FLANN
+#include "opencv2/flann/miniflann.hpp"
+#endif
+#ifdef HAVE_OPENCV_IMGPROC
+#include "opencv2/imgproc/imgproc_c.h"
+#include "opencv2/imgproc/imgproc.hpp"
+#endif
+#ifdef HAVE_OPENCV_PHOTO
+#include "opencv2/photo/photo.hpp"
+#endif
+#ifdef HAVE_OPENCV_VIDEO
+#include "opencv2/video/video.hpp"
+#endif
+#ifdef HAVE_OPENCV_FEATURES2D
+#include "opencv2/features2d/features2d.hpp"
+#endif
+#ifdef HAVE_OPENCV_OBJDETECT
+#include "opencv2/objdetect/objdetect.hpp"
+#endif
+#ifdef HAVE_OPENCV_CALIB3D
+#include "opencv2/calib3d/calib3d.hpp"
+#endif
+#ifdef HAVE_OPENCV_ML
+#include "opencv2/ml/ml.hpp"
+#endif
+#ifdef HAVE_OPENCV_HIGHGUI
+#include "opencv2/highgui/highgui_c.h"
+#include "opencv2/highgui/highgui.hpp"
+#endif
+#ifdef HAVE_OPENCV_CONTRIB
+#include "opencv2/contrib/contrib.hpp"
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/opencv_modules.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/opencv_modules.hpp
new file mode 100644
index 00000000..4425eec5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/opencv_modules.hpp
@@ -0,0 +1,29 @@
+/*
+ * ** File generated automatically, do not modify **
+ *
+ * This file defines the list of modules available in current build configuration
+ *
+ *
+*/
+
+#define HAVE_OPENCV_CALIB3D
+#define HAVE_OPENCV_CONTRIB
+#define HAVE_OPENCV_CORE
+#define HAVE_OPENCV_FEATURES2D
+#define HAVE_OPENCV_FLANN
+#define HAVE_OPENCV_GPU
+#define HAVE_OPENCV_HIGHGUI
+#define HAVE_OPENCV_IMGPROC
+#define HAVE_OPENCV_LEGACY
+#define HAVE_OPENCV_ML
+#define HAVE_OPENCV_NONFREE
+#define HAVE_OPENCV_OBJDETECT
+#define HAVE_OPENCV_OCL
+#define HAVE_OPENCV_PHOTO
+#define HAVE_OPENCV_STITCHING
+#define HAVE_OPENCV_SUPERRES
+#define HAVE_OPENCV_TS
+#define HAVE_OPENCV_VIDEO
+#define HAVE_OPENCV_VIDEOSTAB
+
+
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/photo.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/photo.hpp
new file mode 100644
index 00000000..521a1ade
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/photo.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/photo/photo.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo.hpp
new file mode 100644
index 00000000..66973772
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo.hpp
@@ -0,0 +1,91 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_PHOTO_HPP__
+#define __OPENCV_PHOTO_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+
+#include "opencv2/photo/photo_c.h"
+
+#ifdef __cplusplus
+
+/*! \namespace cv
+ Namespace where all the C++ OpenCV functionality resides
+ */
+namespace cv
+{
+
+//! the inpainting algorithm
+enum
+{
+ INPAINT_NS=CV_INPAINT_NS, // Navier-Stokes algorithm
+ INPAINT_TELEA=CV_INPAINT_TELEA // A. Telea algorithm
+};
+
+//! restores the damaged image areas using one of the available intpainting algorithms
+CV_EXPORTS_W void inpaint( InputArray src, InputArray inpaintMask,
+ OutputArray dst, double inpaintRadius, int flags );
+
+
+CV_EXPORTS_W void fastNlMeansDenoising( InputArray src, OutputArray dst, float h = 3,
+ int templateWindowSize = 7, int searchWindowSize = 21);
+
+CV_EXPORTS_W void fastNlMeansDenoisingColored( InputArray src, OutputArray dst,
+ float h = 3, float hColor = 3,
+ int templateWindowSize = 7, int searchWindowSize = 21);
+
+CV_EXPORTS_W void fastNlMeansDenoisingMulti( InputArrayOfArrays srcImgs, OutputArray dst,
+ int imgToDenoiseIndex, int temporalWindowSize,
+ float h = 3, int templateWindowSize = 7, int searchWindowSize = 21);
+
+CV_EXPORTS_W void fastNlMeansDenoisingColoredMulti( InputArrayOfArrays srcImgs, OutputArray dst,
+ int imgToDenoiseIndex, int temporalWindowSize,
+ float h = 3, float hColor = 3,
+ int templateWindowSize = 7, int searchWindowSize = 21);
+
+}
+
+#endif //__cplusplus
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo_c.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo_c.h
new file mode 100644
index 00000000..4ca05f25
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/photo/photo_c.h
@@ -0,0 +1,69 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_PHOTO_C_H__
+#define __OPENCV_PHOTO_C_H__
+
+#include "opencv2/core/core_c.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Inpainting algorithms */
+enum
+{
+ CV_INPAINT_NS =0,
+ CV_INPAINT_TELEA =1
+};
+
+
+/* Inpaints the selected region in the image */
+CVAPI(void) cvInpaint( const CvArr* src, const CvArr* inpaint_mask,
+ CvArr* dst, double inpaintRange, int flags );
+
+
+#ifdef __cplusplus
+} //extern "C"
+#endif
+
+#endif //__OPENCV_PHOTO_C_H__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching.hpp
new file mode 100644
index 00000000..ed65bb39
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/stitching/stitcher.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/autocalib.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/autocalib.hpp
new file mode 100644
index 00000000..feb53494
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/autocalib.hpp
@@ -0,0 +1,65 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_AUTOCALIB_HPP__
+#define __OPENCV_STITCHING_AUTOCALIB_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "matchers.hpp"
+
+namespace cv {
+namespace detail {
+
+// See "Construction of Panoramic Image Mosaics with Global and Local Alignment"
+// by Heung-Yeung Shum and Richard Szeliski.
+void CV_EXPORTS focalsFromHomography(const Mat &H, double &f0, double &f1, bool &f0_ok, bool &f1_ok);
+
+void CV_EXPORTS estimateFocal(const std::vector<ImageFeatures> &features,
+ const std::vector<MatchesInfo> &pairwise_matches,
+ std::vector<double> &focals);
+
+bool CV_EXPORTS calibrateRotatingCamera(const std::vector<Mat> &Hs, Mat &K);
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_AUTOCALIB_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/blenders.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/blenders.hpp
new file mode 100644
index 00000000..bd93a717
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/blenders.hpp
@@ -0,0 +1,137 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_BLENDERS_HPP__
+#define __OPENCV_STITCHING_BLENDERS_HPP__
+
+#include "opencv2/core/core.hpp"
+
+namespace cv {
+namespace detail {
+
+
+// Simple blender which puts one image over another
+class CV_EXPORTS Blender
+{
+public:
+ virtual ~Blender() {}
+
+ enum { NO, FEATHER, MULTI_BAND };
+ static Ptr<Blender> createDefault(int type, bool try_gpu = false);
+
+ void prepare(const std::vector<Point> &corners, const std::vector<Size> &sizes);
+ virtual void prepare(Rect dst_roi);
+ virtual void feed(const Mat &img, const Mat &mask, Point tl);
+ virtual void blend(Mat &dst, Mat &dst_mask);
+
+protected:
+ Mat dst_, dst_mask_;
+ Rect dst_roi_;
+};
+
+
+class CV_EXPORTS FeatherBlender : public Blender
+{
+public:
+ FeatherBlender(float sharpness = 0.02f);
+
+ float sharpness() const { return sharpness_; }
+ void setSharpness(float val) { sharpness_ = val; }
+
+ void prepare(Rect dst_roi);
+ void feed(const Mat &img, const Mat &mask, Point tl);
+ void blend(Mat &dst, Mat &dst_mask);
+
+ // Creates weight maps for fixed set of source images by their masks and top-left corners.
+ // Final image can be obtained by simple weighting of the source images.
+ Rect createWeightMaps(const std::vector<Mat> &masks, const std::vector<Point> &corners,
+ std::vector<Mat> &weight_maps);
+
+private:
+ float sharpness_;
+ Mat weight_map_;
+ Mat dst_weight_map_;
+};
+
+inline FeatherBlender::FeatherBlender(float _sharpness) { setSharpness(_sharpness); }
+
+
+class CV_EXPORTS MultiBandBlender : public Blender
+{
+public:
+ MultiBandBlender(int try_gpu = false, int num_bands = 5, int weight_type = CV_32F);
+
+ int numBands() const { return actual_num_bands_; }
+ void setNumBands(int val) { actual_num_bands_ = val; }
+
+ void prepare(Rect dst_roi);
+ void feed(const Mat &img, const Mat &mask, Point tl);
+ void blend(Mat &dst, Mat &dst_mask);
+
+private:
+ int actual_num_bands_, num_bands_;
+ std::vector<Mat> dst_pyr_laplace_;
+ std::vector<Mat> dst_band_weights_;
+ Rect dst_roi_final_;
+ bool can_use_gpu_;
+ int weight_type_; //CV_32F or CV_16S
+};
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Auxiliary functions
+
+void CV_EXPORTS normalizeUsingWeightMap(const Mat& weight, Mat& src);
+
+void CV_EXPORTS createWeightMap(const Mat& mask, float sharpness, Mat& weight);
+
+void CV_EXPORTS createLaplacePyr(const Mat &img, int num_levels, std::vector<Mat>& pyr);
+void CV_EXPORTS createLaplacePyrGpu(const Mat &img, int num_levels, std::vector<Mat>& pyr);
+
+// Restores source image
+void CV_EXPORTS restoreImageFromLaplacePyr(std::vector<Mat>& pyr);
+void CV_EXPORTS restoreImageFromLaplacePyrGpu(std::vector<Mat>& pyr);
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_BLENDERS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/camera.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/camera.hpp
new file mode 100644
index 00000000..a74abcba
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/camera.hpp
@@ -0,0 +1,69 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_CAMERA_HPP__
+#define __OPENCV_STITCHING_CAMERA_HPP__
+
+#include "opencv2/core/core.hpp"
+
+namespace cv {
+namespace detail {
+
+struct CV_EXPORTS CameraParams
+{
+ CameraParams();
+ CameraParams(const CameraParams& other);
+ const CameraParams& operator =(const CameraParams& other);
+ Mat K() const;
+
+ double focal; // Focal length
+ double aspect; // Aspect ratio
+ double ppx; // Principal point X
+ double ppy; // Principal point Y
+ Mat R; // Rotation
+ Mat t; // Translation
+};
+
+} // namespace detail
+} // namespace cv
+
+#endif // #ifndef __OPENCV_STITCHING_CAMERA_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/exposure_compensate.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/exposure_compensate.hpp
new file mode 100644
index 00000000..49676fe9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/exposure_compensate.hpp
@@ -0,0 +1,106 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__
+#define __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__
+
+#include "opencv2/core/core.hpp"
+
+namespace cv {
+namespace detail {
+
+class CV_EXPORTS ExposureCompensator
+{
+public:
+ virtual ~ExposureCompensator() {}
+
+ enum { NO, GAIN, GAIN_BLOCKS };
+ static Ptr<ExposureCompensator> createDefault(int type);
+
+ void feed(const std::vector<Point> &corners, const std::vector<Mat> &images,
+ const std::vector<Mat> &masks);
+ virtual void feed(const std::vector<Point> &corners, const std::vector<Mat> &images,
+ const std::vector<std::pair<Mat,uchar> > &masks) = 0;
+ virtual void apply(int index, Point corner, Mat &image, const Mat &mask) = 0;
+};
+
+
+class CV_EXPORTS NoExposureCompensator : public ExposureCompensator
+{
+public:
+ void feed(const std::vector<Point> &/*corners*/, const std::vector<Mat> &/*images*/,
+ const std::vector<std::pair<Mat,uchar> > &/*masks*/) {};
+ void apply(int /*index*/, Point /*corner*/, Mat &/*image*/, const Mat &/*mask*/) {};
+};
+
+
+class CV_EXPORTS GainCompensator : public ExposureCompensator
+{
+public:
+ void feed(const std::vector<Point> &corners, const std::vector<Mat> &images,
+ const std::vector<std::pair<Mat,uchar> > &masks);
+ void apply(int index, Point corner, Mat &image, const Mat &mask);
+ std::vector<double> gains() const;
+
+private:
+ Mat_<double> gains_;
+};
+
+
+class CV_EXPORTS BlocksGainCompensator : public ExposureCompensator
+{
+public:
+ BlocksGainCompensator(int bl_width = 32, int bl_height = 32)
+ : bl_width_(bl_width), bl_height_(bl_height) {}
+ void feed(const std::vector<Point> &corners, const std::vector<Mat> &images,
+ const std::vector<std::pair<Mat,uchar> > &masks);
+ void apply(int index, Point corner, Mat &image, const Mat &mask);
+
+private:
+ int bl_width_, bl_height_;
+ std::vector<Mat_<float> > gain_maps_;
+};
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/matchers.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/matchers.hpp
new file mode 100644
index 00000000..f319df12
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/matchers.hpp
@@ -0,0 +1,192 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_MATCHERS_HPP__
+#define __OPENCV_STITCHING_MATCHERS_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/gpumat.hpp"
+#include "opencv2/features2d/features2d.hpp"
+
+#include "opencv2/opencv_modules.hpp"
+
+#if defined(HAVE_OPENCV_NONFREE)
+ #include "opencv2/nonfree/gpu.hpp"
+#endif
+
+namespace cv {
+namespace detail {
+
+struct CV_EXPORTS ImageFeatures
+{
+ int img_idx;
+ Size img_size;
+ std::vector<KeyPoint> keypoints;
+ Mat descriptors;
+};
+
+
+class CV_EXPORTS FeaturesFinder
+{
+public:
+ virtual ~FeaturesFinder() {}
+ void operator ()(const Mat &image, ImageFeatures &features);
+ void operator ()(const Mat &image, ImageFeatures &features, const std::vector<cv::Rect> &rois);
+ virtual void collectGarbage() {}
+
+protected:
+ virtual void find(const Mat &image, ImageFeatures &features) = 0;
+};
+
+
+class CV_EXPORTS SurfFeaturesFinder : public FeaturesFinder
+{
+public:
+ SurfFeaturesFinder(double hess_thresh = 300., int num_octaves = 3, int num_layers = 4,
+ int num_octaves_descr = /*4*/3, int num_layers_descr = /*2*/4);
+
+private:
+ void find(const Mat &image, ImageFeatures &features);
+
+ Ptr<FeatureDetector> detector_;
+ Ptr<DescriptorExtractor> extractor_;
+ Ptr<Feature2D> surf;
+};
+
+class CV_EXPORTS OrbFeaturesFinder : public FeaturesFinder
+{
+public:
+ OrbFeaturesFinder(Size _grid_size = Size(3,1), int nfeatures=1500, float scaleFactor=1.3f, int nlevels=5);
+
+private:
+ void find(const Mat &image, ImageFeatures &features);
+
+ Ptr<ORB> orb;
+ Size grid_size;
+};
+
+
+#if defined(HAVE_OPENCV_NONFREE)
+class CV_EXPORTS SurfFeaturesFinderGpu : public FeaturesFinder
+{
+public:
+ SurfFeaturesFinderGpu(double hess_thresh = 300., int num_octaves = 3, int num_layers = 4,
+ int num_octaves_descr = 4, int num_layers_descr = 2);
+
+ void collectGarbage();
+
+private:
+ void find(const Mat &image, ImageFeatures &features);
+
+ gpu::GpuMat image_;
+ gpu::GpuMat gray_image_;
+ gpu::SURF_GPU surf_;
+ gpu::GpuMat keypoints_;
+ gpu::GpuMat descriptors_;
+#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
+ int num_octaves_, num_layers_;
+ int num_octaves_descr_, num_layers_descr_;
+#endif
+};
+#endif
+
+
+struct CV_EXPORTS MatchesInfo
+{
+ MatchesInfo();
+ MatchesInfo(const MatchesInfo &other);
+ const MatchesInfo& operator =(const MatchesInfo &other);
+
+ int src_img_idx, dst_img_idx; // Images indices (optional)
+ std::vector<DMatch> matches;
+ std::vector<uchar> inliers_mask; // Geometrically consistent matches mask
+ int num_inliers; // Number of geometrically consistent matches
+ Mat H; // Estimated homography
+ double confidence; // Confidence two images are from the same panorama
+};
+
+
+class CV_EXPORTS FeaturesMatcher
+{
+public:
+ virtual ~FeaturesMatcher() {}
+
+ void operator ()(const ImageFeatures &features1, const ImageFeatures &features2,
+ MatchesInfo& matches_info) { match(features1, features2, matches_info); }
+
+ void operator ()(const std::vector<ImageFeatures> &features, std::vector<MatchesInfo> &pairwise_matches,
+ const cv::Mat &mask = cv::Mat());
+
+ bool isThreadSafe() const { return is_thread_safe_; }
+
+ virtual void collectGarbage() {}
+
+protected:
+ FeaturesMatcher(bool is_thread_safe = false) : is_thread_safe_(is_thread_safe) {}
+
+ virtual void match(const ImageFeatures &features1, const ImageFeatures &features2,
+ MatchesInfo& matches_info) = 0;
+
+ bool is_thread_safe_;
+};
+
+
+class CV_EXPORTS BestOf2NearestMatcher : public FeaturesMatcher
+{
+public:
+ BestOf2NearestMatcher(bool try_use_gpu = false, float match_conf = 0.3f, int num_matches_thresh1 = 6,
+ int num_matches_thresh2 = 6);
+
+ void collectGarbage();
+
+protected:
+ void match(const ImageFeatures &features1, const ImageFeatures &features2, MatchesInfo &matches_info);
+
+ int num_matches_thresh1_;
+ int num_matches_thresh2_;
+ Ptr<FeaturesMatcher> impl_;
+};
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_MATCHERS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/motion_estimators.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/motion_estimators.hpp
new file mode 100644
index 00000000..9ae11021
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/motion_estimators.hpp
@@ -0,0 +1,205 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_MOTION_ESTIMATORS_HPP__
+#define __OPENCV_STITCHING_MOTION_ESTIMATORS_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "matchers.hpp"
+#include "util.hpp"
+#include "camera.hpp"
+
+namespace cv {
+namespace detail {
+
+class CV_EXPORTS Estimator
+{
+public:
+ virtual ~Estimator() {}
+
+ void operator ()(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches,
+ std::vector<CameraParams> &cameras)
+ { estimate(features, pairwise_matches, cameras); }
+
+protected:
+ virtual void estimate(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches,
+ std::vector<CameraParams> &cameras) = 0;
+};
+
+
+class CV_EXPORTS HomographyBasedEstimator : public Estimator
+{
+public:
+ HomographyBasedEstimator(bool is_focals_estimated = false)
+ : is_focals_estimated_(is_focals_estimated) {}
+
+private:
+ void estimate(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches,
+ std::vector<CameraParams> &cameras);
+
+ bool is_focals_estimated_;
+};
+
+
+class CV_EXPORTS BundleAdjusterBase : public Estimator
+{
+public:
+ const Mat refinementMask() const { return refinement_mask_.clone(); }
+ void setRefinementMask(const Mat &mask)
+ {
+ CV_Assert(mask.type() == CV_8U && mask.size() == Size(3, 3));
+ refinement_mask_ = mask.clone();
+ }
+
+ double confThresh() const { return conf_thresh_; }
+ void setConfThresh(double conf_thresh) { conf_thresh_ = conf_thresh; }
+
+ CvTermCriteria termCriteria() { return term_criteria_; }
+ void setTermCriteria(const CvTermCriteria& term_criteria) { term_criteria_ = term_criteria; }
+
+protected:
+ BundleAdjusterBase(int num_params_per_cam, int num_errs_per_measurement)
+ : num_params_per_cam_(num_params_per_cam),
+ num_errs_per_measurement_(num_errs_per_measurement)
+ {
+ setRefinementMask(Mat::ones(3, 3, CV_8U));
+ setConfThresh(1.);
+ setTermCriteria(cvTermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 1000, DBL_EPSILON));
+ }
+
+ // Runs bundle adjustment
+ virtual void estimate(const std::vector<ImageFeatures> &features,
+ const std::vector<MatchesInfo> &pairwise_matches,
+ std::vector<CameraParams> &cameras);
+
+ virtual void setUpInitialCameraParams(const std::vector<CameraParams> &cameras) = 0;
+ virtual void obtainRefinedCameraParams(std::vector<CameraParams> &cameras) const = 0;
+ virtual void calcError(Mat &err) = 0;
+ virtual void calcJacobian(Mat &jac) = 0;
+
+ // 3x3 8U mask, where 0 means don't refine respective parameter, != 0 means refine
+ Mat refinement_mask_;
+
+ int num_images_;
+ int total_num_matches_;
+
+ int num_params_per_cam_;
+ int num_errs_per_measurement_;
+
+ const ImageFeatures *features_;
+ const MatchesInfo *pairwise_matches_;
+
+ // Threshold to filter out poorly matched image pairs
+ double conf_thresh_;
+
+ //Levenberg–Marquardt algorithm termination criteria
+ CvTermCriteria term_criteria_;
+
+ // Camera parameters matrix (CV_64F)
+ Mat cam_params_;
+
+ // Connected images pairs
+ std::vector<std::pair<int,int> > edges_;
+};
+
+
+// Minimizes reprojection error.
+// It can estimate focal length, aspect ratio, principal point.
+// You can affect only on them via the refinement mask.
+class CV_EXPORTS BundleAdjusterReproj : public BundleAdjusterBase
+{
+public:
+ BundleAdjusterReproj() : BundleAdjusterBase(7, 2) {}
+
+private:
+ void setUpInitialCameraParams(const std::vector<CameraParams> &cameras);
+ void obtainRefinedCameraParams(std::vector<CameraParams> &cameras) const;
+ void calcError(Mat &err);
+ void calcJacobian(Mat &jac);
+
+ Mat err1_, err2_;
+};
+
+
+// Minimizes sun of ray-to-ray distances.
+// It can estimate focal length. It ignores the refinement mask for now.
+class CV_EXPORTS BundleAdjusterRay : public BundleAdjusterBase
+{
+public:
+ BundleAdjusterRay() : BundleAdjusterBase(4, 3) {}
+
+private:
+ void setUpInitialCameraParams(const std::vector<CameraParams> &cameras);
+ void obtainRefinedCameraParams(std::vector<CameraParams> &cameras) const;
+ void calcError(Mat &err);
+ void calcJacobian(Mat &jac);
+
+ Mat err1_, err2_;
+};
+
+
+enum WaveCorrectKind
+{
+ WAVE_CORRECT_HORIZ,
+ WAVE_CORRECT_VERT
+};
+
+void CV_EXPORTS waveCorrect(std::vector<Mat> &rmats, WaveCorrectKind kind);
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Auxiliary functions
+
+// Returns matches graph representation in DOT language
+std::string CV_EXPORTS matchesGraphAsString(std::vector<std::string> &pathes, std::vector<MatchesInfo> &pairwise_matches,
+ float conf_threshold);
+
+std::vector<int> CV_EXPORTS leaveBiggestComponent(std::vector<ImageFeatures> &features, std::vector<MatchesInfo> &pairwise_matches,
+ float conf_threshold);
+
+void CV_EXPORTS findMaxSpanningTree(int num_images, const std::vector<MatchesInfo> &pairwise_matches,
+ Graph &span_tree, std::vector<int> &centers);
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_MOTION_ESTIMATORS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/seam_finders.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/seam_finders.hpp
new file mode 100644
index 00000000..5b1d5d98
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/seam_finders.hpp
@@ -0,0 +1,267 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_SEAM_FINDERS_HPP__
+#define __OPENCV_STITCHING_SEAM_FINDERS_HPP__
+
+#include <set>
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/gpumat.hpp"
+
+namespace cv {
+namespace detail {
+
+class CV_EXPORTS SeamFinder
+{
+public:
+ virtual ~SeamFinder() {}
+ virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
+ std::vector<Mat> &masks) = 0;
+};
+
+
+class CV_EXPORTS NoSeamFinder : public SeamFinder
+{
+public:
+ void find(const std::vector<Mat>&, const std::vector<Point>&, std::vector<Mat>&) {}
+};
+
+
+class CV_EXPORTS PairwiseSeamFinder : public SeamFinder
+{
+public:
+ virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
+ std::vector<Mat> &masks);
+
+protected:
+ void run();
+ virtual void findInPair(size_t first, size_t second, Rect roi) = 0;
+
+ std::vector<Mat> images_;
+ std::vector<Size> sizes_;
+ std::vector<Point> corners_;
+ std::vector<Mat> masks_;
+};
+
+
+class CV_EXPORTS VoronoiSeamFinder : public PairwiseSeamFinder
+{
+public:
+ virtual void find(const std::vector<Size> &size, const std::vector<Point> &corners,
+ std::vector<Mat> &masks);
+private:
+ void findInPair(size_t first, size_t second, Rect roi);
+};
+
+
+class CV_EXPORTS DpSeamFinder : public SeamFinder
+{
+public:
+ enum CostFunction { COLOR, COLOR_GRAD };
+
+ DpSeamFinder(CostFunction costFunc = COLOR);
+
+ CostFunction costFunction() const { return costFunc_; }
+ void setCostFunction(CostFunction val) { costFunc_ = val; }
+
+ virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
+ std::vector<Mat> &masks);
+
+private:
+ enum ComponentState
+ {
+ FIRST = 1, SECOND = 2, INTERS = 4,
+ INTERS_FIRST = INTERS | FIRST,
+ INTERS_SECOND = INTERS | SECOND
+ };
+
+ class ImagePairLess
+ {
+ public:
+ ImagePairLess(const std::vector<Mat> &images, const std::vector<Point> &corners)
+ : src_(&images[0]), corners_(&corners[0]) {}
+
+ bool operator() (const std::pair<size_t, size_t> &l, const std::pair<size_t, size_t> &r) const
+ {
+ Point c1 = corners_[l.first] + Point(src_[l.first].cols / 2, src_[l.first].rows / 2);
+ Point c2 = corners_[l.second] + Point(src_[l.second].cols / 2, src_[l.second].rows / 2);
+ int d1 = (c1 - c2).dot(c1 - c2);
+
+ c1 = corners_[r.first] + Point(src_[r.first].cols / 2, src_[r.first].rows / 2);
+ c2 = corners_[r.second] + Point(src_[r.second].cols / 2, src_[r.second].rows / 2);
+ int d2 = (c1 - c2).dot(c1 - c2);
+
+ return d1 < d2;
+ }
+
+ private:
+ const Mat *src_;
+ const Point *corners_;
+ };
+
+ class ClosePoints
+ {
+ public:
+ ClosePoints(int minDist) : minDist_(minDist) {}
+
+ bool operator() (const Point &p1, const Point &p2) const
+ {
+ int dist2 = (p1.x-p2.x) * (p1.x-p2.x) + (p1.y-p2.y) * (p1.y-p2.y);
+ return dist2 < minDist_ * minDist_;
+ }
+
+ private:
+ int minDist_;
+ };
+
+ void process(
+ const Mat &image1, const Mat &image2, Point tl1, Point tl2, Mat &mask1, Mat &mask2);
+
+ void findComponents();
+
+ void findEdges();
+
+ void resolveConflicts(
+ const Mat &image1, const Mat &image2, Point tl1, Point tl2, Mat &mask1, Mat &mask2);
+
+ void computeGradients(const Mat &image1, const Mat &image2);
+
+ bool hasOnlyOneNeighbor(int comp);
+
+ bool closeToContour(int y, int x, const Mat_<uchar> &contourMask);
+
+ bool getSeamTips(int comp1, int comp2, Point &p1, Point &p2);
+
+ void computeCosts(
+ const Mat &image1, const Mat &image2, Point tl1, Point tl2,
+ int comp, Mat_<float> &costV, Mat_<float> &costH);
+
+ bool estimateSeam(
+ const Mat &image1, const Mat &image2, Point tl1, Point tl2, int comp,
+ Point p1, Point p2, std::vector<Point> &seam, bool &isHorizontal);
+
+ void updateLabelsUsingSeam(
+ int comp1, int comp2, const std::vector<Point> &seam, bool isHorizontalSeam);
+
+ CostFunction costFunc_;
+
+ // processing images pair data
+ Point unionTl_, unionBr_;
+ Size unionSize_;
+ Mat_<uchar> mask1_, mask2_;
+ Mat_<uchar> contour1mask_, contour2mask_;
+ Mat_<float> gradx1_, grady1_;
+ Mat_<float> gradx2_, grady2_;
+
+ // components data
+ int ncomps_;
+ Mat_<int> labels_;
+ std::vector<ComponentState> states_;
+ std::vector<Point> tls_, brs_;
+ std::vector<std::vector<Point> > contours_;
+ std::set<std::pair<int, int> > edges_;
+};
+
+
+class CV_EXPORTS GraphCutSeamFinderBase
+{
+public:
+ enum { COST_COLOR, COST_COLOR_GRAD };
+};
+
+
+class CV_EXPORTS GraphCutSeamFinder : public GraphCutSeamFinderBase, public SeamFinder
+{
+public:
+ GraphCutSeamFinder(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f,
+ float bad_region_penalty = 1000.f);
+
+ ~GraphCutSeamFinder();
+
+ void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
+ std::vector<Mat> &masks);
+
+private:
+ // To avoid GCGraph dependency
+ class Impl;
+ Ptr<PairwiseSeamFinder> impl_;
+};
+
+
+class CV_EXPORTS GraphCutSeamFinderGpu : public GraphCutSeamFinderBase, public PairwiseSeamFinder
+{
+public:
+ GraphCutSeamFinderGpu(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f,
+ float bad_region_penalty = 1000.f)
+#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
+ : cost_type_(cost_type),
+ terminal_cost_(terminal_cost),
+ bad_region_penalty_(bad_region_penalty)
+#endif
+ {
+ (void)cost_type;
+ (void)terminal_cost;
+ (void)bad_region_penalty;
+ }
+
+ void find(const std::vector<cv::Mat> &src, const std::vector<cv::Point> &corners,
+ std::vector<cv::Mat> &masks);
+ void findInPair(size_t first, size_t second, Rect roi);
+
+private:
+ void setGraphWeightsColor(const cv::Mat &img1, const cv::Mat &img2, const cv::Mat &mask1, const cv::Mat &mask2,
+ cv::Mat &terminals, cv::Mat &leftT, cv::Mat &rightT, cv::Mat &top, cv::Mat &bottom);
+ void setGraphWeightsColorGrad(const cv::Mat &img1, const cv::Mat &img2, const cv::Mat &dx1, const cv::Mat &dx2,
+ const cv::Mat &dy1, const cv::Mat &dy2, const cv::Mat &mask1, const cv::Mat &mask2,
+ cv::Mat &terminals, cv::Mat &leftT, cv::Mat &rightT, cv::Mat &top, cv::Mat &bottom);
+ std::vector<Mat> dx_, dy_;
+#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT)
+ int cost_type_;
+ float terminal_cost_;
+ float bad_region_penalty_;
+#endif
+};
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_SEAM_FINDERS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util.hpp
new file mode 100644
index 00000000..a8ba8161
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util.hpp
@@ -0,0 +1,162 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_UTIL_HPP__
+#define __OPENCV_STITCHING_UTIL_HPP__
+
+#include <list>
+#include "opencv2/core/core.hpp"
+
+#define ENABLE_LOG 0
+
+// TODO remove LOG macros, add logging class
+#if ENABLE_LOG
+#ifdef ANDROID
+ #include <iostream>
+ #include <sstream>
+ #include <android/log.h>
+ #define LOG_STITCHING_MSG(msg) \
+ do { \
+ std::stringstream _os; \
+ _os << msg; \
+ __android_log_print(ANDROID_LOG_DEBUG, "STITCHING", "%s", _os.str().c_str()); \
+ } while(0);
+#else
+ #include <iostream>
+ #define LOG_STITCHING_MSG(msg) for(;;) { std::cout << msg; std::cout.flush(); break; }
+#endif
+#else
+ #define LOG_STITCHING_MSG(msg)
+#endif
+
+#define LOG_(_level, _msg) \
+ for(;;) \
+ { \
+ if ((_level) >= ::cv::detail::stitchingLogLevel()) \
+ { \
+ LOG_STITCHING_MSG(_msg); \
+ } \
+ break; \
+ }
+
+
+#define LOG(msg) LOG_(1, msg)
+#define LOG_CHAT(msg) LOG_(0, msg)
+
+#define LOGLN(msg) LOG(msg << std::endl)
+#define LOGLN_CHAT(msg) LOG_CHAT(msg << std::endl)
+
+//#if DEBUG_LOG_CHAT
+// #define LOG_CHAT(msg) LOG(msg)
+// #define LOGLN_CHAT(msg) LOGLN(msg)
+//#else
+// #define LOG_CHAT(msg) do{}while(0)
+// #define LOGLN_CHAT(msg) do{}while(0)
+//#endif
+
+namespace cv {
+namespace detail {
+
+class CV_EXPORTS DisjointSets
+{
+public:
+ DisjointSets(int elem_count = 0) { createOneElemSets(elem_count); }
+
+ void createOneElemSets(int elem_count);
+ int findSetByElem(int elem);
+ int mergeSets(int set1, int set2);
+
+ std::vector<int> parent;
+ std::vector<int> size;
+
+private:
+ std::vector<int> rank_;
+};
+
+
+struct CV_EXPORTS GraphEdge
+{
+ GraphEdge(int from, int to, float weight);
+ bool operator <(const GraphEdge& other) const { return weight < other.weight; }
+ bool operator >(const GraphEdge& other) const { return weight > other.weight; }
+
+ int from, to;
+ float weight;
+};
+
+inline GraphEdge::GraphEdge(int _from, int _to, float _weight) : from(_from), to(_to), weight(_weight) {}
+
+
+class CV_EXPORTS Graph
+{
+public:
+ Graph(int num_vertices = 0) { create(num_vertices); }
+ void create(int num_vertices) { edges_.assign(num_vertices, std::list<GraphEdge>()); }
+ int numVertices() const { return static_cast<int>(edges_.size()); }
+ void addEdge(int from, int to, float weight);
+ template <typename B> B forEach(B body) const;
+ template <typename B> B walkBreadthFirst(int from, B body) const;
+
+private:
+ std::vector< std::list<GraphEdge> > edges_;
+};
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Auxiliary functions
+
+CV_EXPORTS bool overlapRoi(Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi);
+CV_EXPORTS Rect resultRoi(const std::vector<Point> &corners, const std::vector<Mat> &images);
+CV_EXPORTS Rect resultRoi(const std::vector<Point> &corners, const std::vector<Size> &sizes);
+CV_EXPORTS Point resultTl(const std::vector<Point> &corners);
+
+// Returns random 'count' element subset of the {0,1,...,size-1} set
+CV_EXPORTS void selectRandomSubset(int count, int size, std::vector<int> &subset);
+
+CV_EXPORTS int& stitchingLogLevel();
+
+} // namespace detail
+} // namespace cv
+
+#include "util_inl.hpp"
+
+#endif // __OPENCV_STITCHING_UTIL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util_inl.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util_inl.hpp
new file mode 100644
index 00000000..ab5d94b4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/util_inl.hpp
@@ -0,0 +1,127 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_UTIL_INL_HPP__
+#define __OPENCV_STITCHING_UTIL_INL_HPP__
+
+#include <queue>
+#include "opencv2/core/core.hpp"
+#include "util.hpp" // Make your IDE see declarations
+
+namespace cv {
+namespace detail {
+
+template <typename B>
+B Graph::forEach(B body) const
+{
+ for (int i = 0; i < numVertices(); ++i)
+ {
+ std::list<GraphEdge>::const_iterator edge = edges_[i].begin();
+ for (; edge != edges_[i].end(); ++edge)
+ body(*edge);
+ }
+ return body;
+}
+
+
+template <typename B>
+B Graph::walkBreadthFirst(int from, B body) const
+{
+ std::vector<bool> was(numVertices(), false);
+ std::queue<int> vertices;
+
+ was[from] = true;
+ vertices.push(from);
+
+ while (!vertices.empty())
+ {
+ int vertex = vertices.front();
+ vertices.pop();
+
+ std::list<GraphEdge>::const_iterator edge = edges_[vertex].begin();
+ for (; edge != edges_[vertex].end(); ++edge)
+ {
+ if (!was[edge->to])
+ {
+ body(*edge);
+ was[edge->to] = true;
+ vertices.push(edge->to);
+ }
+ }
+ }
+
+ return body;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Some auxiliary math functions
+
+static inline
+float normL2(const Point3f& a)
+{
+ return a.x * a.x + a.y * a.y + a.z * a.z;
+}
+
+
+static inline
+float normL2(const Point3f& a, const Point3f& b)
+{
+ return normL2(a - b);
+}
+
+
+static inline
+double normL2sq(const Mat &r)
+{
+ return r.dot(r);
+}
+
+
+static inline int sqr(int x) { return x * x; }
+static inline float sqr(float x) { return x * x; }
+static inline double sqr(double x) { return x * x; }
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_UTIL_INL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers.hpp
new file mode 100644
index 00000000..60d5e541
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers.hpp
@@ -0,0 +1,510 @@
+ /*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_WARPERS_HPP__
+#define __OPENCV_STITCHING_WARPERS_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/gpumat.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+
+namespace cv {
+namespace detail {
+
+class CV_EXPORTS RotationWarper
+{
+public:
+ virtual ~RotationWarper() {}
+
+ virtual Point2f warpPoint(const Point2f &pt, const Mat &K, const Mat &R) = 0;
+
+ virtual Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap) = 0;
+
+ virtual Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Mat &dst) = 0;
+
+ virtual void warpBackward(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Size dst_size, Mat &dst) = 0;
+
+ virtual Rect warpRoi(Size src_size, const Mat &K, const Mat &R) = 0;
+
+ float getScale() const { return 1.f; }
+ void setScale(float) {}
+};
+
+
+struct CV_EXPORTS ProjectorBase
+{
+ void setCameraParams(const Mat &K = Mat::eye(3, 3, CV_32F),
+ const Mat &R = Mat::eye(3, 3, CV_32F),
+ const Mat &T = Mat::zeros(3, 1, CV_32F));
+
+ float scale;
+ float k[9];
+ float rinv[9];
+ float r_kinv[9];
+ float k_rinv[9];
+ float t[3];
+};
+
+
+template <class P>
+class CV_EXPORTS RotationWarperBase : public RotationWarper
+{
+public:
+ Point2f warpPoint(const Point2f &pt, const Mat &K, const Mat &R);
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap);
+
+ Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Mat &dst);
+
+ void warpBackward(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Size dst_size, Mat &dst);
+
+ Rect warpRoi(Size src_size, const Mat &K, const Mat &R);
+
+ float getScale() const { return projector_.scale; }
+ void setScale(float val) { projector_.scale = val; }
+
+protected:
+
+ // Detects ROI of the destination image. It's correct for any projection.
+ virtual void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br);
+
+ // Detects ROI of the destination image by walking over image border.
+ // Correctness for any projection isn't guaranteed.
+ void detectResultRoiByBorder(Size src_size, Point &dst_tl, Point &dst_br);
+
+ P projector_;
+};
+
+
+struct CV_EXPORTS PlaneProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS PlaneWarper : public RotationWarperBase<PlaneProjector>
+{
+public:
+ PlaneWarper(float scale = 1.f) { projector_.scale = scale; }
+
+ void setScale(float scale) { projector_.scale = scale; }
+
+ Point2f warpPoint(const Point2f &pt, const Mat &K, const Mat &R, const Mat &T);
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, Mat &xmap, Mat &ymap);
+
+ Point warp(const Mat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode,
+ Mat &dst);
+
+ Rect warpRoi(Size src_size, const Mat &K, const Mat &R, const Mat &T);
+
+protected:
+ void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br);
+};
+
+
+struct CV_EXPORTS SphericalProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+// Projects image onto unit sphere with origin at (0, 0, 0).
+// Poles are located at (0, -1, 0) and (0, 1, 0) points.
+class CV_EXPORTS SphericalWarper : public RotationWarperBase<SphericalProjector>
+{
+public:
+ SphericalWarper(float scale) { projector_.scale = scale; }
+
+protected:
+ void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br);
+};
+
+
+struct CV_EXPORTS CylindricalProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+// Projects image onto x * x + z * z = 1 cylinder
+class CV_EXPORTS CylindricalWarper : public RotationWarperBase<CylindricalProjector>
+{
+public:
+ CylindricalWarper(float scale) { projector_.scale = scale; }
+
+protected:
+ void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br)
+ {
+ RotationWarperBase<CylindricalProjector>::detectResultRoiByBorder(src_size, dst_tl, dst_br);
+ }
+};
+
+
+struct CV_EXPORTS FisheyeProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS FisheyeWarper : public RotationWarperBase<FisheyeProjector>
+{
+public:
+ FisheyeWarper(float scale) { projector_.scale = scale; }
+};
+
+
+struct CV_EXPORTS StereographicProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS StereographicWarper : public RotationWarperBase<StereographicProjector>
+{
+public:
+ StereographicWarper(float scale) { projector_.scale = scale; }
+};
+
+
+struct CV_EXPORTS CompressedRectilinearProjector : ProjectorBase
+{
+ float a, b;
+
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS CompressedRectilinearWarper : public RotationWarperBase<CompressedRectilinearProjector>
+{
+public:
+ CompressedRectilinearWarper(float scale, float A = 1, float B = 1)
+ {
+ projector_.a = A;
+ projector_.b = B;
+ projector_.scale = scale;
+ }
+};
+
+
+struct CV_EXPORTS CompressedRectilinearPortraitProjector : ProjectorBase
+{
+ float a, b;
+
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS CompressedRectilinearPortraitWarper : public RotationWarperBase<CompressedRectilinearPortraitProjector>
+{
+public:
+ CompressedRectilinearPortraitWarper(float scale, float A = 1, float B = 1)
+ {
+ projector_.a = A;
+ projector_.b = B;
+ projector_.scale = scale;
+ }
+};
+
+
+struct CV_EXPORTS PaniniProjector : ProjectorBase
+{
+ float a, b;
+
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS PaniniWarper : public RotationWarperBase<PaniniProjector>
+{
+public:
+ PaniniWarper(float scale, float A = 1, float B = 1)
+ {
+ projector_.a = A;
+ projector_.b = B;
+ projector_.scale = scale;
+ }
+};
+
+
+struct CV_EXPORTS PaniniPortraitProjector : ProjectorBase
+{
+ float a, b;
+
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS PaniniPortraitWarper : public RotationWarperBase<PaniniPortraitProjector>
+{
+public:
+ PaniniPortraitWarper(float scale, float A = 1, float B = 1)
+ {
+ projector_.a = A;
+ projector_.b = B;
+ projector_.scale = scale;
+ }
+
+};
+
+
+struct CV_EXPORTS MercatorProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS MercatorWarper : public RotationWarperBase<MercatorProjector>
+{
+public:
+ MercatorWarper(float scale) { projector_.scale = scale; }
+};
+
+
+struct CV_EXPORTS TransverseMercatorProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS TransverseMercatorWarper : public RotationWarperBase<TransverseMercatorProjector>
+{
+public:
+ TransverseMercatorWarper(float scale) { projector_.scale = scale; }
+};
+
+
+class CV_EXPORTS PlaneWarperGpu : public PlaneWarper
+{
+public:
+ PlaneWarperGpu(float scale = 1.f) : PlaneWarper(scale) {}
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap)
+ {
+ Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_);
+ d_xmap_.download(xmap);
+ d_ymap_.download(ymap);
+ return result;
+ }
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, Mat &xmap, Mat &ymap)
+ {
+ Rect result = buildMaps(src_size, K, R, T, d_xmap_, d_ymap_);
+ d_xmap_.download(xmap);
+ d_ymap_.download(ymap);
+ return result;
+ }
+
+ Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Mat &dst)
+ {
+ d_src_.upload(src);
+ Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_);
+ d_dst_.download(dst);
+ return result;
+ }
+
+ Point warp(const Mat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode,
+ Mat &dst)
+ {
+ d_src_.upload(src);
+ Point result = warp(d_src_, K, R, T, interp_mode, border_mode, d_dst_);
+ d_dst_.download(dst);
+ return result;
+ }
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap);
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, gpu::GpuMat &xmap, gpu::GpuMat &ymap);
+
+ Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ gpu::GpuMat &dst);
+
+ Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode,
+ gpu::GpuMat &dst);
+
+private:
+ gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_;
+};
+
+
+class CV_EXPORTS SphericalWarperGpu : public SphericalWarper
+{
+public:
+ SphericalWarperGpu(float scale) : SphericalWarper(scale) {}
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap)
+ {
+ Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_);
+ d_xmap_.download(xmap);
+ d_ymap_.download(ymap);
+ return result;
+ }
+
+ Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Mat &dst)
+ {
+ d_src_.upload(src);
+ Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_);
+ d_dst_.download(dst);
+ return result;
+ }
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap);
+
+ Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ gpu::GpuMat &dst);
+
+private:
+ gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_;
+};
+
+
+class CV_EXPORTS CylindricalWarperGpu : public CylindricalWarper
+{
+public:
+ CylindricalWarperGpu(float scale) : CylindricalWarper(scale) {}
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap)
+ {
+ Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_);
+ d_xmap_.download(xmap);
+ d_ymap_.download(ymap);
+ return result;
+ }
+
+ Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Mat &dst)
+ {
+ d_src_.upload(src);
+ Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_);
+ d_dst_.download(dst);
+ return result;
+ }
+
+ Rect buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap);
+
+ Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ gpu::GpuMat &dst);
+
+private:
+ gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_;
+};
+
+
+struct SphericalPortraitProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+// Projects image onto unit sphere with origin at (0, 0, 0).
+// Poles are located NOT at (0, -1, 0) and (0, 1, 0) points, BUT at (1, 0, 0) and (-1, 0, 0) points.
+class CV_EXPORTS SphericalPortraitWarper : public RotationWarperBase<SphericalPortraitProjector>
+{
+public:
+ SphericalPortraitWarper(float scale) { projector_.scale = scale; }
+
+protected:
+ void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br);
+};
+
+struct CylindricalPortraitProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS CylindricalPortraitWarper : public RotationWarperBase<CylindricalPortraitProjector>
+{
+public:
+ CylindricalPortraitWarper(float scale) { projector_.scale = scale; }
+
+protected:
+ void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br)
+ {
+ RotationWarperBase<CylindricalPortraitProjector>::detectResultRoiByBorder(src_size, dst_tl, dst_br);
+ }
+};
+
+struct PlanePortraitProjector : ProjectorBase
+{
+ void mapForward(float x, float y, float &u, float &v);
+ void mapBackward(float u, float v, float &x, float &y);
+};
+
+
+class CV_EXPORTS PlanePortraitWarper : public RotationWarperBase<PlanePortraitProjector>
+{
+public:
+ PlanePortraitWarper(float scale) { projector_.scale = scale; }
+
+protected:
+ void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br)
+ {
+ RotationWarperBase<PlanePortraitProjector>::detectResultRoiByBorder(src_size, dst_tl, dst_br);
+ }
+};
+
+} // namespace detail
+} // namespace cv
+
+#include "warpers_inl.hpp"
+
+#endif // __OPENCV_STITCHING_WARPERS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers_inl.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers_inl.hpp
new file mode 100644
index 00000000..b1121232
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/detail/warpers_inl.hpp
@@ -0,0 +1,765 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_WARPERS_INL_HPP__
+#define __OPENCV_STITCHING_WARPERS_INL_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "warpers.hpp" // Make your IDE see declarations
+
+namespace cv {
+namespace detail {
+
+template <class P>
+Point2f RotationWarperBase<P>::warpPoint(const Point2f &pt, const Mat &K, const Mat &R)
+{
+ projector_.setCameraParams(K, R);
+ Point2f uv;
+ projector_.mapForward(pt.x, pt.y, uv.x, uv.y);
+ return uv;
+}
+
+
+template <class P>
+Rect RotationWarperBase<P>::buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap)
+{
+ projector_.setCameraParams(K, R);
+
+ Point dst_tl, dst_br;
+ detectResultRoi(src_size, dst_tl, dst_br);
+
+ xmap.create(dst_br.y - dst_tl.y + 1, dst_br.x - dst_tl.x + 1, CV_32F);
+ ymap.create(dst_br.y - dst_tl.y + 1, dst_br.x - dst_tl.x + 1, CV_32F);
+
+ float x, y;
+ for (int v = dst_tl.y; v <= dst_br.y; ++v)
+ {
+ for (int u = dst_tl.x; u <= dst_br.x; ++u)
+ {
+ projector_.mapBackward(static_cast<float>(u), static_cast<float>(v), x, y);
+ xmap.at<float>(v - dst_tl.y, u - dst_tl.x) = x;
+ ymap.at<float>(v - dst_tl.y, u - dst_tl.x) = y;
+ }
+ }
+
+ return Rect(dst_tl, dst_br);
+}
+
+
+template <class P>
+Point RotationWarperBase<P>::warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Mat &dst)
+{
+ Mat xmap, ymap;
+ Rect dst_roi = buildMaps(src.size(), K, R, xmap, ymap);
+
+ dst.create(dst_roi.height + 1, dst_roi.width + 1, src.type());
+ remap(src, dst, xmap, ymap, interp_mode, border_mode);
+
+ return dst_roi.tl();
+}
+
+
+template <class P>
+void RotationWarperBase<P>::warpBackward(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode,
+ Size dst_size, Mat &dst)
+{
+ projector_.setCameraParams(K, R);
+
+ Point src_tl, src_br;
+ detectResultRoi(dst_size, src_tl, src_br);
+ CV_Assert(src_br.x - src_tl.x + 1 == src.cols && src_br.y - src_tl.y + 1 == src.rows);
+
+ Mat xmap(dst_size, CV_32F);
+ Mat ymap(dst_size, CV_32F);
+
+ float u, v;
+ for (int y = 0; y < dst_size.height; ++y)
+ {
+ for (int x = 0; x < dst_size.width; ++x)
+ {
+ projector_.mapForward(static_cast<float>(x), static_cast<float>(y), u, v);
+ xmap.at<float>(y, x) = u - src_tl.x;
+ ymap.at<float>(y, x) = v - src_tl.y;
+ }
+ }
+
+ dst.create(dst_size, src.type());
+ remap(src, dst, xmap, ymap, interp_mode, border_mode);
+}
+
+
+template <class P>
+Rect RotationWarperBase<P>::warpRoi(Size src_size, const Mat &K, const Mat &R)
+{
+ projector_.setCameraParams(K, R);
+
+ Point dst_tl, dst_br;
+ detectResultRoi(src_size, dst_tl, dst_br);
+
+ return Rect(dst_tl, Point(dst_br.x + 1, dst_br.y + 1));
+}
+
+
+template <class P>
+void RotationWarperBase<P>::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br)
+{
+ float tl_uf = std::numeric_limits<float>::max();
+ float tl_vf = std::numeric_limits<float>::max();
+ float br_uf = -std::numeric_limits<float>::max();
+ float br_vf = -std::numeric_limits<float>::max();
+
+ float u, v;
+ for (int y = 0; y < src_size.height; ++y)
+ {
+ for (int x = 0; x < src_size.width; ++x)
+ {
+ projector_.mapForward(static_cast<float>(x), static_cast<float>(y), u, v);
+ tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v);
+ br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v);
+ }
+ }
+
+ dst_tl.x = static_cast<int>(tl_uf);
+ dst_tl.y = static_cast<int>(tl_vf);
+ dst_br.x = static_cast<int>(br_uf);
+ dst_br.y = static_cast<int>(br_vf);
+}
+
+
+template <class P>
+void RotationWarperBase<P>::detectResultRoiByBorder(Size src_size, Point &dst_tl, Point &dst_br)
+{
+ float tl_uf = std::numeric_limits<float>::max();
+ float tl_vf = std::numeric_limits<float>::max();
+ float br_uf = -std::numeric_limits<float>::max();
+ float br_vf = -std::numeric_limits<float>::max();
+
+ float u, v;
+ for (float x = 0; x < src_size.width; ++x)
+ {
+ projector_.mapForward(static_cast<float>(x), 0, u, v);
+ tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v);
+ br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v);
+
+ projector_.mapForward(static_cast<float>(x), static_cast<float>(src_size.height - 1), u, v);
+ tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v);
+ br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v);
+ }
+ for (int y = 0; y < src_size.height; ++y)
+ {
+ projector_.mapForward(0, static_cast<float>(y), u, v);
+ tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v);
+ br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v);
+
+ projector_.mapForward(static_cast<float>(src_size.width - 1), static_cast<float>(y), u, v);
+ tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v);
+ br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v);
+ }
+
+ dst_tl.x = static_cast<int>(tl_uf);
+ dst_tl.y = static_cast<int>(tl_vf);
+ dst_br.x = static_cast<int>(br_uf);
+ dst_br.y = static_cast<int>(br_vf);
+}
+
+
+inline
+void PlaneProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ x_ = t[0] + x_ / z_ * (1 - t[2]);
+ y_ = t[1] + y_ / z_ * (1 - t[2]);
+
+ u = scale * x_;
+ v = scale * y_;
+}
+
+
+inline
+void PlaneProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u = u / scale - t[0];
+ v = v / scale - t[1];
+
+ float z;
+ x = k_rinv[0] * u + k_rinv[1] * v + k_rinv[2] * (1 - t[2]);
+ y = k_rinv[3] * u + k_rinv[4] * v + k_rinv[5] * (1 - t[2]);
+ z = k_rinv[6] * u + k_rinv[7] * v + k_rinv[8] * (1 - t[2]);
+
+ x /= z;
+ y /= z;
+}
+
+
+inline
+void SphericalProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ u = scale * atan2f(x_, z_);
+ float w = y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_);
+ v = scale * (static_cast<float>(CV_PI) - acosf(w == w ? w : 0));
+}
+
+
+inline
+void SphericalProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float sinv = sinf(static_cast<float>(CV_PI) - v);
+ float x_ = sinv * sinf(u);
+ float y_ = cosf(static_cast<float>(CV_PI) - v);
+ float z_ = sinv * cosf(u);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+
+inline
+void CylindricalProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ u = scale * atan2f(x_, z_);
+ v = scale * y_ / sqrtf(x_ * x_ + z_ * z_);
+}
+
+
+inline
+void CylindricalProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float x_ = sinf(u);
+ float y_ = v;
+ float z_ = cosf(u);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void FisheyeProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = (float)CV_PI - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ u = scale * v_ * cosf(u_);
+ v = scale * v_ * sinf(u_);
+}
+
+inline
+void FisheyeProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float u_ = atan2f(v, u);
+ float v_ = sqrtf(u*u + v*v);
+
+ float sinv = sinf((float)CV_PI - v_);
+ float x_ = sinv * sinf(u_);
+ float y_ = cosf((float)CV_PI - v_);
+ float z_ = sinv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void StereographicProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = (float)CV_PI - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ float r = sinf(v_) / (1 - cosf(v_));
+
+ u = scale * r * cos(u_);
+ v = scale * r * sin(u_);
+}
+
+inline
+void StereographicProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float u_ = atan2f(v, u);
+ float r = sqrtf(u*u + v*v);
+ float v_ = 2 * atanf(1.f / r);
+
+ float sinv = sinf((float)CV_PI - v_);
+ float x_ = sinv * sinf(u_);
+ float y_ = cosf((float)CV_PI - v_);
+ float z_ = sinv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void CompressedRectilinearProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ u = scale * a * tanf(u_ / a);
+ v = scale * b * tanf(v_) / cosf(u_);
+}
+
+inline
+void CompressedRectilinearProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float aatg = a * atanf(u / a);
+ float u_ = aatg;
+ float v_ = atanf(v * cosf(aatg) / b);
+
+ float cosv = cosf(v_);
+ float x_ = cosv * sinf(u_);
+ float y_ = sinf(v_);
+ float z_ = cosv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void CompressedRectilinearPortraitProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float y_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float x_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ u = - scale * a * tanf(u_ / a);
+ v = scale * b * tanf(v_) / cosf(u_);
+}
+
+inline
+void CompressedRectilinearPortraitProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= - scale;
+ v /= scale;
+
+ float aatg = a * atanf(u / a);
+ float u_ = aatg;
+ float v_ = atanf(v * cosf( aatg ) / b);
+
+ float cosv = cosf(v_);
+ float y_ = cosv * sinf(u_);
+ float x_ = sinf(v_);
+ float z_ = cosv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void PaniniProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ float tg = a * tanf(u_ / a);
+ u = scale * tg;
+
+ float sinu = sinf(u_);
+ if ( fabs(sinu) < 1E-7 )
+ v = scale * b * tanf(v_);
+ else
+ v = scale * b * tg * tanf(v_) / sinu;
+}
+
+inline
+void PaniniProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float lamda = a * atanf(u / a);
+ float u_ = lamda;
+
+ float v_;
+ if ( fabs(lamda) > 1E-7)
+ v_ = atanf(v * sinf(lamda) / (b * a * tanf(lamda / a)));
+ else
+ v_ = atanf(v / b);
+
+ float cosv = cosf(v_);
+ float x_ = cosv * sinf(u_);
+ float y_ = sinf(v_);
+ float z_ = cosv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void PaniniPortraitProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float y_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float x_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ float tg = a * tanf(u_ / a);
+ u = - scale * tg;
+
+ float sinu = sinf( u_ );
+ if ( fabs(sinu) < 1E-7 )
+ v = scale * b * tanf(v_);
+ else
+ v = scale * b * tg * tanf(v_) / sinu;
+}
+
+inline
+void PaniniPortraitProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= - scale;
+ v /= scale;
+
+ float lamda = a * atanf(u / a);
+ float u_ = lamda;
+
+ float v_;
+ if ( fabs(lamda) > 1E-7)
+ v_ = atanf(v * sinf(lamda) / (b * a * tanf(lamda/a)));
+ else
+ v_ = atanf(v / b);
+
+ float cosv = cosf(v_);
+ float y_ = cosv * sinf(u_);
+ float x_ = sinf(v_);
+ float z_ = cosv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void MercatorProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ u = scale * u_;
+ v = scale * logf( tanf( (float)(CV_PI/4) + v_/2 ) );
+}
+
+inline
+void MercatorProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float v_ = atanf( sinhf(v) );
+ float u_ = u;
+
+ float cosv = cosf(v_);
+ float x_ = cosv * sinf(u_);
+ float y_ = sinf(v_);
+ float z_ = cosv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void TransverseMercatorProjector::mapForward(float x, float y, float &u, float &v)
+{
+ float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float u_ = atan2f(x_, z_);
+ float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_));
+
+ float B = cosf(v_) * sinf(u_);
+
+ u = scale / 2 * logf( (1+B) / (1-B) );
+ v = scale * atan2f(tanf(v_), cosf(u_));
+}
+
+inline
+void TransverseMercatorProjector::mapBackward(float u, float v, float &x, float &y)
+{
+ u /= scale;
+ v /= scale;
+
+ float v_ = asinf( sinf(v) / coshf(u) );
+ float u_ = atan2f( sinhf(u), cos(v) );
+
+ float cosv = cosf(v_);
+ float x_ = cosv * sinf(u_);
+ float y_ = sinf(v_);
+ float z_ = cosv * cosf(u_);
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void SphericalPortraitProjector::mapForward(float x, float y, float &u0, float &v0)
+{
+ float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float x_ = y0_;
+ float y_ = x0_;
+ float u, v;
+
+ u = scale * atan2f(x_, z_);
+ v = scale * (static_cast<float>(CV_PI) - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)));
+
+ u0 = -u;//v;
+ v0 = v;//u;
+}
+
+
+inline
+void SphericalPortraitProjector::mapBackward(float u0, float v0, float &x, float &y)
+{
+ float u, v;
+ u = -u0;//v0;
+ v = v0;//u0;
+
+ u /= scale;
+ v /= scale;
+
+ float sinv = sinf(static_cast<float>(CV_PI) - v);
+ float x0_ = sinv * sinf(u);
+ float y0_ = cosf(static_cast<float>(CV_PI) - v);
+ float z_ = sinv * cosf(u);
+
+ float x_ = y0_;
+ float y_ = x0_;
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void CylindricalPortraitProjector::mapForward(float x, float y, float &u0, float &v0)
+{
+ float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float x_ = y0_;
+ float y_ = x0_;
+ float u, v;
+
+ u = scale * atan2f(x_, z_);
+ v = scale * y_ / sqrtf(x_ * x_ + z_ * z_);
+
+ u0 = -u;//v;
+ v0 = v;//u;
+}
+
+
+inline
+void CylindricalPortraitProjector::mapBackward(float u0, float v0, float &x, float &y)
+{
+ float u, v;
+ u = -u0;//v0;
+ v = v0;//u0;
+
+ u /= scale;
+ v /= scale;
+
+ float x0_ = sinf(u);
+ float y0_ = v;
+ float z_ = cosf(u);
+
+ float x_ = y0_;
+ float y_ = x0_;
+
+ float z;
+ x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_;
+ y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_;
+ z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_;
+
+ if (z > 0) { x /= z; y /= z; }
+ else x = y = -1;
+}
+
+inline
+void PlanePortraitProjector::mapForward(float x, float y, float &u0, float &v0)
+{
+ float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2];
+ float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5];
+ float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8];
+
+ float x_ = y0_;
+ float y_ = x0_;
+
+ x_ = t[0] + x_ / z_ * (1 - t[2]);
+ y_ = t[1] + y_ / z_ * (1 - t[2]);
+
+ float u,v;
+ u = scale * x_;
+ v = scale * y_;
+
+ u0 = -u;
+ v0 = v;
+}
+
+
+inline
+void PlanePortraitProjector::mapBackward(float u0, float v0, float &x, float &y)
+{
+ float u, v;
+ u = -u0;
+ v = v0;
+
+ u = u / scale - t[0];
+ v = v / scale - t[1];
+
+ float z;
+ x = k_rinv[0] * v + k_rinv[1] * u + k_rinv[2] * (1 - t[2]);
+ y = k_rinv[3] * v + k_rinv[4] * u + k_rinv[5] * (1 - t[2]);
+ z = k_rinv[6] * v + k_rinv[7] * u + k_rinv[8] * (1 - t[2]);
+
+ x /= z;
+ y /= z;
+}
+
+
+} // namespace detail
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_WARPERS_INL_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/stitcher.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/stitcher.hpp
new file mode 100644
index 00000000..e274deb1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/stitcher.hpp
@@ -0,0 +1,174 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_STITCHER_HPP__
+#define __OPENCV_STITCHING_STITCHER_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/stitching/warpers.hpp"
+#include "opencv2/stitching/detail/matchers.hpp"
+#include "opencv2/stitching/detail/motion_estimators.hpp"
+#include "opencv2/stitching/detail/exposure_compensate.hpp"
+#include "opencv2/stitching/detail/seam_finders.hpp"
+#include "opencv2/stitching/detail/blenders.hpp"
+#include "opencv2/stitching/detail/camera.hpp"
+
+namespace cv {
+
+class CV_EXPORTS Stitcher
+{
+public:
+ enum { ORIG_RESOL = -1 };
+ enum Status { OK, ERR_NEED_MORE_IMGS };
+
+ // Creates stitcher with default parameters
+ static Stitcher createDefault(bool try_use_gpu = false);
+
+ double registrationResol() const { return registr_resol_; }
+ void setRegistrationResol(double resol_mpx) { registr_resol_ = resol_mpx; }
+
+ double seamEstimationResol() const { return seam_est_resol_; }
+ void setSeamEstimationResol(double resol_mpx) { seam_est_resol_ = resol_mpx; }
+
+ double compositingResol() const { return compose_resol_; }
+ void setCompositingResol(double resol_mpx) { compose_resol_ = resol_mpx; }
+
+ double panoConfidenceThresh() const { return conf_thresh_; }
+ void setPanoConfidenceThresh(double conf_thresh) { conf_thresh_ = conf_thresh; }
+
+ bool waveCorrection() const { return do_wave_correct_; }
+ void setWaveCorrection(bool flag) { do_wave_correct_ = flag; }
+
+ detail::WaveCorrectKind waveCorrectKind() const { return wave_correct_kind_; }
+ void setWaveCorrectKind(detail::WaveCorrectKind kind) { wave_correct_kind_ = kind; }
+
+ Ptr<detail::FeaturesFinder> featuresFinder() { return features_finder_; }
+ const Ptr<detail::FeaturesFinder> featuresFinder() const { return features_finder_; }
+ void setFeaturesFinder(Ptr<detail::FeaturesFinder> features_finder)
+ { features_finder_ = features_finder; }
+
+ Ptr<detail::FeaturesMatcher> featuresMatcher() { return features_matcher_; }
+ const Ptr<detail::FeaturesMatcher> featuresMatcher() const { return features_matcher_; }
+ void setFeaturesMatcher(Ptr<detail::FeaturesMatcher> features_matcher)
+ { features_matcher_ = features_matcher; }
+
+ const cv::Mat& matchingMask() const { return matching_mask_; }
+ void setMatchingMask(const cv::Mat &mask)
+ {
+ CV_Assert(mask.type() == CV_8U && mask.cols == mask.rows);
+ matching_mask_ = mask.clone();
+ }
+
+ Ptr<detail::BundleAdjusterBase> bundleAdjuster() { return bundle_adjuster_; }
+ const Ptr<detail::BundleAdjusterBase> bundleAdjuster() const { return bundle_adjuster_; }
+ void setBundleAdjuster(Ptr<detail::BundleAdjusterBase> bundle_adjuster)
+ { bundle_adjuster_ = bundle_adjuster; }
+
+ Ptr<WarperCreator> warper() { return warper_; }
+ const Ptr<WarperCreator> warper() const { return warper_; }
+ void setWarper(Ptr<WarperCreator> creator) { warper_ = creator; }
+
+ Ptr<detail::ExposureCompensator> exposureCompensator() { return exposure_comp_; }
+ const Ptr<detail::ExposureCompensator> exposureCompensator() const { return exposure_comp_; }
+ void setExposureCompensator(Ptr<detail::ExposureCompensator> exposure_comp)
+ { exposure_comp_ = exposure_comp; }
+
+ Ptr<detail::SeamFinder> seamFinder() { return seam_finder_; }
+ const Ptr<detail::SeamFinder> seamFinder() const { return seam_finder_; }
+ void setSeamFinder(Ptr<detail::SeamFinder> seam_finder) { seam_finder_ = seam_finder; }
+
+ Ptr<detail::Blender> blender() { return blender_; }
+ const Ptr<detail::Blender> blender() const { return blender_; }
+ void setBlender(Ptr<detail::Blender> b) { blender_ = b; }
+
+ Status estimateTransform(InputArray images);
+ Status estimateTransform(InputArray images, const std::vector<std::vector<Rect> > &rois);
+
+ Status composePanorama(OutputArray pano);
+ Status composePanorama(InputArray images, OutputArray pano);
+
+ Status stitch(InputArray images, OutputArray pano);
+ Status stitch(InputArray images, const std::vector<std::vector<Rect> > &rois, OutputArray pano);
+
+ std::vector<int> component() const { return indices_; }
+ std::vector<detail::CameraParams> cameras() const { return cameras_; }
+ double workScale() const { return work_scale_; }
+
+private:
+ Stitcher() {}
+
+ Status matchImages();
+ void estimateCameraParams();
+
+ double registr_resol_;
+ double seam_est_resol_;
+ double compose_resol_;
+ double conf_thresh_;
+ Ptr<detail::FeaturesFinder> features_finder_;
+ Ptr<detail::FeaturesMatcher> features_matcher_;
+ cv::Mat matching_mask_;
+ Ptr<detail::BundleAdjusterBase> bundle_adjuster_;
+ bool do_wave_correct_;
+ detail::WaveCorrectKind wave_correct_kind_;
+ Ptr<WarperCreator> warper_;
+ Ptr<detail::ExposureCompensator> exposure_comp_;
+ Ptr<detail::SeamFinder> seam_finder_;
+ Ptr<detail::Blender> blender_;
+
+ std::vector<cv::Mat> imgs_;
+ std::vector<std::vector<cv::Rect> > rois_;
+ std::vector<cv::Size> full_img_sizes_;
+ std::vector<detail::ImageFeatures> features_;
+ std::vector<detail::MatchesInfo> pairwise_matches_;
+ std::vector<cv::Mat> seam_est_imgs_;
+ std::vector<int> indices_;
+ std::vector<detail::CameraParams> cameras_;
+ double work_scale_;
+ double seam_scale_;
+ double seam_work_aspect_;
+ double warped_image_scale_;
+};
+
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_STITCHER_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/warpers.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/warpers.hpp
new file mode 100644
index 00000000..11e012ff
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/stitching/warpers.hpp
@@ -0,0 +1,170 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_STITCHING_WARPER_CREATORS_HPP__
+#define __OPENCV_STITCHING_WARPER_CREATORS_HPP__
+
+#include "opencv2/stitching/detail/warpers.hpp"
+
+namespace cv {
+
+class WarperCreator
+{
+public:
+ virtual ~WarperCreator() {}
+ virtual Ptr<detail::RotationWarper> create(float scale) const = 0;
+};
+
+
+class PlaneWarper : public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::PlaneWarper(scale); }
+};
+
+
+class CylindricalWarper: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::CylindricalWarper(scale); }
+};
+
+
+class SphericalWarper: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::SphericalWarper(scale); }
+};
+
+class FisheyeWarper : public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::FisheyeWarper(scale); }
+};
+
+class StereographicWarper: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::StereographicWarper(scale); }
+};
+
+class CompressedRectilinearWarper: public WarperCreator
+{
+ float a, b;
+public:
+ CompressedRectilinearWarper(float A = 1, float B = 1)
+ {
+ a = A; b = B;
+ }
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::CompressedRectilinearWarper(scale, a, b); }
+};
+
+class CompressedRectilinearPortraitWarper: public WarperCreator
+{
+ float a, b;
+public:
+ CompressedRectilinearPortraitWarper(float A = 1, float B = 1)
+ {
+ a = A; b = B;
+ }
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::CompressedRectilinearPortraitWarper(scale, a, b); }
+};
+
+class PaniniWarper: public WarperCreator
+{
+ float a, b;
+public:
+ PaniniWarper(float A = 1, float B = 1)
+ {
+ a = A; b = B;
+ }
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::PaniniWarper(scale, a, b); }
+};
+
+class PaniniPortraitWarper: public WarperCreator
+{
+ float a, b;
+public:
+ PaniniPortraitWarper(float A = 1, float B = 1)
+ {
+ a = A; b = B;
+ }
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::PaniniPortraitWarper(scale, a, b); }
+};
+
+class MercatorWarper: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::MercatorWarper(scale); }
+};
+
+class TransverseMercatorWarper: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::TransverseMercatorWarper(scale); }
+};
+
+
+
+class PlaneWarperGpu: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::PlaneWarperGpu(scale); }
+};
+
+
+class CylindricalWarperGpu: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::CylindricalWarperGpu(scale); }
+};
+
+
+class SphericalWarperGpu: public WarperCreator
+{
+public:
+ Ptr<detail::RotationWarper> create(float scale) const { return new detail::SphericalWarperGpu(scale); }
+};
+
+} // namespace cv
+
+#endif // __OPENCV_STITCHING_WARPER_CREATORS_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/superres.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/superres.hpp
new file mode 100644
index 00000000..8c344ca4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/superres.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/superres/superres.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/superres/optical_flow.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/superres/optical_flow.hpp
new file mode 100644
index 00000000..d51ce793
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/superres/optical_flow.hpp
@@ -0,0 +1,76 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_SUPERRES_OPTICAL_FLOW_HPP__
+#define __OPENCV_SUPERRES_OPTICAL_FLOW_HPP__
+
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+ namespace superres
+ {
+ class CV_EXPORTS DenseOpticalFlowExt : public cv::Algorithm
+ {
+ public:
+ virtual void calc(InputArray frame0, InputArray frame1, OutputArray flow1, OutputArray flow2 = noArray()) = 0;
+ virtual void collectGarbage() = 0;
+ };
+
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_Farneback();
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_Farneback_GPU();
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_Farneback_OCL();
+
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_Simple();
+
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_DualTVL1();
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_DualTVL1_GPU();
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_DualTVL1_OCL();
+
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_Brox_GPU();
+
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_PyrLK_GPU();
+ CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_PyrLK_OCL();
+ }
+}
+
+#endif // __OPENCV_SUPERRES_OPTICAL_FLOW_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/superres/superres.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/superres/superres.hpp
new file mode 100644
index 00000000..8daeb5ba
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/superres/superres.hpp
@@ -0,0 +1,99 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_SUPERRES_HPP__
+#define __OPENCV_SUPERRES_HPP__
+
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+ namespace superres
+ {
+ CV_EXPORTS bool initModule_superres();
+
+ class CV_EXPORTS FrameSource
+ {
+ public:
+ virtual ~FrameSource();
+
+ virtual void nextFrame(OutputArray frame) = 0;
+ virtual void reset() = 0;
+ };
+
+ CV_EXPORTS Ptr<FrameSource> createFrameSource_Empty();
+
+ CV_EXPORTS Ptr<FrameSource> createFrameSource_Video(const std::string& fileName);
+ CV_EXPORTS Ptr<FrameSource> createFrameSource_Video_GPU(const std::string& fileName);
+
+ CV_EXPORTS Ptr<FrameSource> createFrameSource_Camera(int deviceId = 0);
+
+ class CV_EXPORTS SuperResolution : public cv::Algorithm, public FrameSource
+ {
+ public:
+ void setInput(const Ptr<FrameSource>& frameSource);
+
+ void nextFrame(OutputArray frame);
+ void reset();
+
+ virtual void collectGarbage();
+
+ protected:
+ SuperResolution();
+
+ virtual void initImpl(Ptr<FrameSource>& frameSource) = 0;
+ virtual void processImpl(Ptr<FrameSource>& frameSource, OutputArray output) = 0;
+
+ private:
+ Ptr<FrameSource> frameSource_;
+ bool firstCall_;
+ };
+
+ // S. Farsiu , D. Robinson, M. Elad, P. Milanfar. Fast and robust multiframe super resolution.
+ // Dennis Mitzel, Thomas Pock, Thomas Schoenemann, Daniel Cremers. Video Super Resolution using Duality Based TV-L1 Optical Flow.
+ CV_EXPORTS Ptr<SuperResolution> createSuperResolution_BTVL1();
+ CV_EXPORTS Ptr<SuperResolution> createSuperResolution_BTVL1_GPU();
+ CV_EXPORTS Ptr<SuperResolution> createSuperResolution_BTVL1_OCL();
+ }
+}
+
+#endif // __OPENCV_SUPERRES_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ts.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts.hpp
new file mode 100644
index 00000000..e96b101e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/ts/ts.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_perf.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_perf.hpp
new file mode 100644
index 00000000..87f1737c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_perf.hpp
@@ -0,0 +1,115 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_PERF_UTILITY_HPP__
+#define __OPENCV_GPU_PERF_UTILITY_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/ts/ts_perf.hpp"
+
+namespace perf
+{
+#ifdef OPENCV_TINY_GPU_MODULE
+ #define ALL_BORDER_MODES testing::Values(BorderMode(cv::BORDER_REFLECT101), BorderMode(cv::BORDER_REPLICATE), BorderMode(cv::BORDER_CONSTANT), BorderMode(cv::BORDER_REFLECT))
+ #define ALL_INTERPOLATIONS testing::Values(Interpolation(cv::INTER_NEAREST), Interpolation(cv::INTER_LINEAR), Interpolation(cv::INTER_AREA))
+#else
+ #define ALL_BORDER_MODES BorderMode::all()
+ #define ALL_INTERPOLATIONS Interpolation::all()
+#endif
+
+ CV_ENUM(BorderMode, BORDER_REFLECT101, BORDER_REPLICATE, BORDER_CONSTANT, BORDER_REFLECT, BORDER_WRAP)
+ CV_ENUM(Interpolation, INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, INTER_AREA)
+ CV_ENUM(NormType, NORM_INF, NORM_L1, NORM_L2, NORM_HAMMING, NORM_MINMAX)
+
+ enum { Gray = 1, TwoChannel = 2, BGR = 3, BGRA = 4 };
+ CV_ENUM(MatCn, Gray, TwoChannel, BGR, BGRA)
+
+ #define GPU_CHANNELS_1_3_4 testing::Values(MatCn(Gray), MatCn(BGR), MatCn(BGRA))
+ #define GPU_CHANNELS_1_3 testing::Values(MatCn(Gray), MatCn(BGR))
+
+ #define GET_PARAM(k) std::tr1::get< k >(GetParam())
+
+ #define DEF_PARAM_TEST(name, ...) typedef ::perf::TestBaseWithParam< std::tr1::tuple< __VA_ARGS__ > > name
+ #define DEF_PARAM_TEST_1(name, param_type) typedef ::perf::TestBaseWithParam< param_type > name
+
+ DEF_PARAM_TEST_1(Sz, cv::Size);
+ typedef ::perf::Size_MatType Sz_Type;
+ DEF_PARAM_TEST(Sz_Depth, cv::Size, ::perf::MatDepth);
+ DEF_PARAM_TEST(Sz_Depth_Cn, cv::Size, ::perf::MatDepth, MatCn);
+
+ #define GPU_TYPICAL_MAT_SIZES testing::Values(perf::sz720p, perf::szSXGA, perf::sz1080p)
+
+ #define FAIL_NO_CPU() FAIL() << "No such CPU implementation analogy"
+
+ #define GPU_SANITY_CHECK(mat, ...) \
+ do{ \
+ cv::Mat gpu_##mat(mat); \
+ SANITY_CHECK(gpu_##mat, ## __VA_ARGS__); \
+ } while(0)
+
+ #define CPU_SANITY_CHECK(mat, ...) \
+ do{ \
+ cv::Mat cpu_##mat(mat); \
+ SANITY_CHECK(cpu_##mat, ## __VA_ARGS__); \
+ } while(0)
+
+ CV_EXPORTS cv::Mat readImage(const std::string& fileName, int flags = cv::IMREAD_COLOR);
+
+ struct CvtColorInfo
+ {
+ int scn;
+ int dcn;
+ int code;
+
+ CvtColorInfo() {}
+ explicit CvtColorInfo(int scn_, int dcn_, int code_) : scn(scn_), dcn(dcn_), code(code_) {}
+ };
+ CV_EXPORTS void PrintTo(const CvtColorInfo& info, std::ostream* os);
+
+ CV_EXPORTS void printCudaInfo();
+
+ CV_EXPORTS void sortKeyPoints(std::vector<cv::KeyPoint>& keypoints, cv::InputOutputArray _descriptors = cv::noArray());
+}
+
+#endif // __OPENCV_GPU_PERF_UTILITY_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_test.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_test.hpp
new file mode 100644
index 00000000..01737bc9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/gpu_test.hpp
@@ -0,0 +1,360 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GPU_TEST_UTILITY_HPP__
+#define __OPENCV_GPU_TEST_UTILITY_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/core/gpumat.hpp"
+#include "opencv2/highgui/highgui.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/ts/ts.hpp"
+#include "opencv2/ts/ts_perf.hpp"
+
+namespace cvtest
+{
+ //////////////////////////////////////////////////////////////////////
+ // random generators
+
+ CV_EXPORTS int randomInt(int minVal, int maxVal);
+ CV_EXPORTS double randomDouble(double minVal, double maxVal);
+ CV_EXPORTS cv::Size randomSize(int minVal, int maxVal);
+ CV_EXPORTS cv::Scalar randomScalar(double minVal, double maxVal);
+ CV_EXPORTS cv::Mat randomMat(cv::Size size, int type, double minVal = 0.0, double maxVal = 255.0);
+
+ //////////////////////////////////////////////////////////////////////
+ // GpuMat create
+
+ CV_EXPORTS cv::gpu::GpuMat createMat(cv::Size size, int type, bool useRoi = false);
+ CV_EXPORTS cv::gpu::GpuMat loadMat(const cv::Mat& m, bool useRoi = false);
+
+ //////////////////////////////////////////////////////////////////////
+ // Image load
+
+ //! read image from testdata folder
+ CV_EXPORTS cv::Mat readImage(const std::string& fileName, int flags = cv::IMREAD_COLOR);
+
+ //! read image from testdata folder and convert it to specified type
+ CV_EXPORTS cv::Mat readImageType(const std::string& fname, int type);
+
+ //////////////////////////////////////////////////////////////////////
+ // Gpu devices
+
+ //! return true if device supports specified feature and gpu module was built with support the feature.
+ CV_EXPORTS bool supportFeature(const cv::gpu::DeviceInfo& info, cv::gpu::FeatureSet feature);
+
+ class CV_EXPORTS DeviceManager
+ {
+ public:
+ static DeviceManager& instance();
+
+ void load(int i);
+ void loadAll();
+
+ const std::vector<cv::gpu::DeviceInfo>& values() const { return devices_; }
+
+ private:
+ std::vector<cv::gpu::DeviceInfo> devices_;
+ };
+
+ #define ALL_DEVICES testing::ValuesIn(cvtest::DeviceManager::instance().values())
+
+ //////////////////////////////////////////////////////////////////////
+ // Additional assertion
+
+ CV_EXPORTS void minMaxLocGold(const cv::Mat& src, double* minVal_, double* maxVal_ = 0, cv::Point* minLoc_ = 0, cv::Point* maxLoc_ = 0, const cv::Mat& mask = cv::Mat());
+
+ CV_EXPORTS cv::Mat getMat(cv::InputArray arr);
+
+ CV_EXPORTS testing::AssertionResult assertMatNear(const char* expr1, const char* expr2, const char* eps_expr, cv::InputArray m1, cv::InputArray m2, double eps);
+
+ #define EXPECT_MAT_NEAR(m1, m2, eps) EXPECT_PRED_FORMAT3(cvtest::assertMatNear, m1, m2, eps)
+ #define ASSERT_MAT_NEAR(m1, m2, eps) ASSERT_PRED_FORMAT3(cvtest::assertMatNear, m1, m2, eps)
+
+ #define EXPECT_SCALAR_NEAR(s1, s2, eps) \
+ { \
+ EXPECT_NEAR(s1[0], s2[0], eps); \
+ EXPECT_NEAR(s1[1], s2[1], eps); \
+ EXPECT_NEAR(s1[2], s2[2], eps); \
+ EXPECT_NEAR(s1[3], s2[3], eps); \
+ }
+ #define ASSERT_SCALAR_NEAR(s1, s2, eps) \
+ { \
+ ASSERT_NEAR(s1[0], s2[0], eps); \
+ ASSERT_NEAR(s1[1], s2[1], eps); \
+ ASSERT_NEAR(s1[2], s2[2], eps); \
+ ASSERT_NEAR(s1[3], s2[3], eps); \
+ }
+
+ #define EXPECT_POINT2_NEAR(p1, p2, eps) \
+ { \
+ EXPECT_NEAR(p1.x, p2.x, eps); \
+ EXPECT_NEAR(p1.y, p2.y, eps); \
+ }
+ #define ASSERT_POINT2_NEAR(p1, p2, eps) \
+ { \
+ ASSERT_NEAR(p1.x, p2.x, eps); \
+ ASSERT_NEAR(p1.y, p2.y, eps); \
+ }
+
+ #define EXPECT_POINT3_NEAR(p1, p2, eps) \
+ { \
+ EXPECT_NEAR(p1.x, p2.x, eps); \
+ EXPECT_NEAR(p1.y, p2.y, eps); \
+ EXPECT_NEAR(p1.z, p2.z, eps); \
+ }
+ #define ASSERT_POINT3_NEAR(p1, p2, eps) \
+ { \
+ ASSERT_NEAR(p1.x, p2.x, eps); \
+ ASSERT_NEAR(p1.y, p2.y, eps); \
+ ASSERT_NEAR(p1.z, p2.z, eps); \
+ }
+
+ CV_EXPORTS double checkSimilarity(cv::InputArray m1, cv::InputArray m2);
+
+ #define EXPECT_MAT_SIMILAR(mat1, mat2, eps) \
+ { \
+ ASSERT_EQ(mat1.type(), mat2.type()); \
+ ASSERT_EQ(mat1.size(), mat2.size()); \
+ EXPECT_LE(checkSimilarity(mat1, mat2), eps); \
+ }
+ #define ASSERT_MAT_SIMILAR(mat1, mat2, eps) \
+ { \
+ ASSERT_EQ(mat1.type(), mat2.type()); \
+ ASSERT_EQ(mat1.size(), mat2.size()); \
+ ASSERT_LE(checkSimilarity(mat1, mat2), eps); \
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // Helper structs for value-parameterized tests
+
+ #define GPU_TEST_P(test_case_name, test_name) \
+ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+ : public test_case_name { \
+ public: \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
+ virtual void TestBody(); \
+ private: \
+ void UnsafeTestBody(); \
+ static int AddToRegistry() { \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
+ #test_case_name, \
+ #test_name, \
+ new ::testing::internal::TestMetaFactory< \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
+ return 0; \
+ } \
+ static int gtest_registering_dummy_; \
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
+ }; \
+ int GTEST_TEST_CLASS_NAME_(test_case_name, \
+ test_name)::gtest_registering_dummy_ = \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
+ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() \
+ { \
+ try \
+ { \
+ UnsafeTestBody(); \
+ } \
+ catch (...) \
+ { \
+ cv::gpu::resetDevice(); \
+ throw; \
+ } \
+ } \
+ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::UnsafeTestBody()
+
+ #define PARAM_TEST_CASE(name, ...) struct name : testing::TestWithParam< std::tr1::tuple< __VA_ARGS__ > >
+ #define GET_PARAM(k) std::tr1::get< k >(GetParam())
+
+ #define DIFFERENT_SIZES testing::Values(cv::Size(128, 128), cv::Size(113, 113))
+
+ // Depth
+
+ using perf::MatDepth;
+
+#ifdef OPENCV_TINY_GPU_MODULE
+ #define ALL_DEPTH testing::Values(MatDepth(CV_8U), MatDepth(CV_32F))
+
+ #define DEPTH_PAIRS testing::Values(std::make_pair(MatDepth(CV_8U), MatDepth(CV_8U)), \
+ std::make_pair(MatDepth(CV_32F), MatDepth(CV_32F)))
+#else
+ #define ALL_DEPTH testing::Values(MatDepth(CV_8U), MatDepth(CV_8S), MatDepth(CV_16U), MatDepth(CV_16S), MatDepth(CV_32S), MatDepth(CV_32F), MatDepth(CV_64F))
+
+ #define DEPTH_PAIRS testing::Values(std::make_pair(MatDepth(CV_8U), MatDepth(CV_8U)), \
+ std::make_pair(MatDepth(CV_8U), MatDepth(CV_16U)), \
+ std::make_pair(MatDepth(CV_8U), MatDepth(CV_16S)), \
+ std::make_pair(MatDepth(CV_8U), MatDepth(CV_32S)), \
+ std::make_pair(MatDepth(CV_8U), MatDepth(CV_32F)), \
+ std::make_pair(MatDepth(CV_8U), MatDepth(CV_64F)), \
+ \
+ std::make_pair(MatDepth(CV_16U), MatDepth(CV_16U)), \
+ std::make_pair(MatDepth(CV_16U), MatDepth(CV_32S)), \
+ std::make_pair(MatDepth(CV_16U), MatDepth(CV_32F)), \
+ std::make_pair(MatDepth(CV_16U), MatDepth(CV_64F)), \
+ \
+ std::make_pair(MatDepth(CV_16S), MatDepth(CV_16S)), \
+ std::make_pair(MatDepth(CV_16S), MatDepth(CV_32S)), \
+ std::make_pair(MatDepth(CV_16S), MatDepth(CV_32F)), \
+ std::make_pair(MatDepth(CV_16S), MatDepth(CV_64F)), \
+ \
+ std::make_pair(MatDepth(CV_32S), MatDepth(CV_32S)), \
+ std::make_pair(MatDepth(CV_32S), MatDepth(CV_32F)), \
+ std::make_pair(MatDepth(CV_32S), MatDepth(CV_64F)), \
+ \
+ std::make_pair(MatDepth(CV_32F), MatDepth(CV_32F)), \
+ std::make_pair(MatDepth(CV_32F), MatDepth(CV_64F)), \
+ \
+ std::make_pair(MatDepth(CV_64F), MatDepth(CV_64F)))
+#endif
+
+ // Type
+
+ using perf::MatType;
+
+ //! return vector with types from specified range.
+ CV_EXPORTS std::vector<MatType> types(int depth_start, int depth_end, int cn_start, int cn_end);
+
+ //! return vector with all types (depth: CV_8U-CV_64F, channels: 1-4).
+ CV_EXPORTS const std::vector<MatType>& all_types();
+
+ #define ALL_TYPES testing::ValuesIn(all_types())
+ #define TYPES(depth_start, depth_end, cn_start, cn_end) testing::ValuesIn(types(depth_start, depth_end, cn_start, cn_end))
+
+ // ROI
+
+ class UseRoi
+ {
+ public:
+ inline UseRoi(bool val = false) : val_(val) {}
+
+ inline operator bool() const { return val_; }
+
+ private:
+ bool val_;
+ };
+
+ CV_EXPORTS void PrintTo(const UseRoi& useRoi, std::ostream* os);
+
+ #define WHOLE_SUBMAT testing::Values(UseRoi(false), UseRoi(true))
+
+ // Direct/Inverse
+
+ class Inverse
+ {
+ public:
+ inline Inverse(bool val = false) : val_(val) {}
+
+ inline operator bool() const { return val_; }
+
+ private:
+ bool val_;
+ };
+
+ CV_EXPORTS void PrintTo(const Inverse& useRoi, std::ostream* os);
+
+ #define DIRECT_INVERSE testing::Values(Inverse(false), Inverse(true))
+
+ // Param class
+
+ #define IMPLEMENT_PARAM_CLASS(name, type) \
+ class name \
+ { \
+ public: \
+ name ( type arg = type ()) : val_(arg) {} \
+ operator type () const {return val_;} \
+ private: \
+ type val_; \
+ }; \
+ inline void PrintTo( name param, std::ostream* os) \
+ { \
+ *os << #name << "(" << testing::PrintToString(static_cast< type >(param)) << ")"; \
+ }
+
+ IMPLEMENT_PARAM_CLASS(Channels, int)
+
+ #define ALL_CHANNELS testing::Values(Channels(1), Channels(2), Channels(3), Channels(4))
+ #define IMAGE_CHANNELS testing::Values(Channels(1), Channels(3), Channels(4))
+
+ // Flags and enums
+
+ CV_ENUM(NormCode, NORM_INF, NORM_L1, NORM_L2, NORM_TYPE_MASK, NORM_RELATIVE, NORM_MINMAX)
+
+ CV_ENUM(Interpolation, INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, INTER_AREA)
+
+ CV_ENUM(BorderType, BORDER_REFLECT101, BORDER_REPLICATE, BORDER_CONSTANT, BORDER_REFLECT, BORDER_WRAP)
+#ifdef OPENCV_TINY_GPU_MODULE
+ #define ALL_BORDER_TYPES testing::Values(BorderType(cv::BORDER_REFLECT101), BorderType(cv::BORDER_REPLICATE), BorderType(cv::BORDER_CONSTANT), BorderType(cv::BORDER_REFLECT))
+#else
+ #define ALL_BORDER_TYPES testing::Values(BorderType(cv::BORDER_REFLECT101), BorderType(cv::BORDER_REPLICATE), BorderType(cv::BORDER_CONSTANT), BorderType(cv::BORDER_REFLECT), BorderType(cv::BORDER_WRAP))
+#endif
+
+ CV_FLAGS(WarpFlags, INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, WARP_INVERSE_MAP)
+
+ //////////////////////////////////////////////////////////////////////
+ // Features2D
+
+ CV_EXPORTS testing::AssertionResult assertKeyPointsEquals(const char* gold_expr, const char* actual_expr, std::vector<cv::KeyPoint>& gold, std::vector<cv::KeyPoint>& actual);
+
+ #define ASSERT_KEYPOINTS_EQ(gold, actual) EXPECT_PRED_FORMAT2(assertKeyPointsEquals, gold, actual)
+
+ CV_EXPORTS int getMatchedPointsCount(std::vector<cv::KeyPoint>& gold, std::vector<cv::KeyPoint>& actual);
+ CV_EXPORTS int getMatchedPointsCount(const std::vector<cv::KeyPoint>& keypoints1, const std::vector<cv::KeyPoint>& keypoints2, const std::vector<cv::DMatch>& matches);
+
+ //////////////////////////////////////////////////////////////////////
+ // Other
+
+ CV_EXPORTS void dumpImage(const std::string& fileName, const cv::Mat& image);
+ CV_EXPORTS void showDiff(cv::InputArray gold, cv::InputArray actual, double eps);
+
+ CV_EXPORTS void printCudaInfo();
+}
+
+namespace cv { namespace gpu
+{
+ CV_EXPORTS void PrintTo(const DeviceInfo& info, std::ostream* os);
+}}
+
+#endif // __OPENCV_GPU_TEST_UTILITY_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts.hpp
new file mode 100644
index 00000000..d3c17657
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts.hpp
@@ -0,0 +1,638 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_GTESTCV_HPP__
+#define __OPENCV_GTESTCV_HPP__
+
+#include <stdarg.h> // for va_list
+
+#ifdef HAVE_WINRT
+ #pragma warning(disable:4447) // Disable warning 'main' signature found without threading model
+#endif
+
+#ifdef _MSC_VER
+#pragma warning( disable: 4127 )
+#endif
+
+#define GTEST_DONT_DEFINE_FAIL 0
+#define GTEST_DONT_DEFINE_SUCCEED 0
+#define GTEST_DONT_DEFINE_ASSERT_EQ 0
+#define GTEST_DONT_DEFINE_ASSERT_NE 0
+#define GTEST_DONT_DEFINE_ASSERT_LE 0
+#define GTEST_DONT_DEFINE_ASSERT_LT 0
+#define GTEST_DONT_DEFINE_ASSERT_GE 0
+#define GTEST_DONT_DEFINE_ASSERT_GT 0
+#define GTEST_DONT_DEFINE_TEST 0
+
+#include "opencv2/ts/ts_gtest.h"
+
+#ifndef GTEST_USES_SIMPLE_RE
+# define GTEST_USES_SIMPLE_RE 0
+#endif
+#ifndef GTEST_USES_POSIX_RE
+# define GTEST_USES_POSIX_RE 0
+#endif
+
+#include "opencv2/core/core.hpp"
+
+namespace cvtest
+{
+
+using std::vector;
+using std::string;
+using cv::RNG;
+using cv::Mat;
+using cv::Scalar;
+using cv::Size;
+using cv::Point;
+using cv::Rect;
+
+class CV_EXPORTS TS;
+
+CV_EXPORTS int64 readSeed(const char* str);
+
+CV_EXPORTS void randUni( RNG& rng, Mat& a, const Scalar& param1, const Scalar& param2 );
+
+inline unsigned randInt( RNG& rng )
+{
+ return (unsigned)rng;
+}
+
+inline double randReal( RNG& rng )
+{
+ return (double)rng;
+}
+
+
+CV_EXPORTS const char* getTypeName( int type );
+CV_EXPORTS int typeByName( const char* type_name );
+
+CV_EXPORTS string vec2str(const string& sep, const int* v, size_t nelems);
+
+inline int clipInt( int val, int min_val, int max_val )
+{
+ if( val < min_val )
+ val = min_val;
+ if( val > max_val )
+ val = max_val;
+ return val;
+}
+
+CV_EXPORTS double getMinVal(int depth);
+CV_EXPORTS double getMaxVal(int depth);
+
+CV_EXPORTS Size randomSize(RNG& rng, double maxSizeLog);
+CV_EXPORTS void randomSize(RNG& rng, int minDims, int maxDims, double maxSizeLog, vector<int>& sz);
+CV_EXPORTS int randomType(RNG& rng, int typeMask, int minChannels, int maxChannels);
+CV_EXPORTS Mat randomMat(RNG& rng, Size size, int type, double minVal, double maxVal, bool useRoi);
+CV_EXPORTS Mat randomMat(RNG& rng, const vector<int>& size, int type, double minVal, double maxVal, bool useRoi);
+CV_EXPORTS void add(const Mat& a, double alpha, const Mat& b, double beta,
+ Scalar gamma, Mat& c, int ctype, bool calcAbs=false);
+CV_EXPORTS void multiply(const Mat& a, const Mat& b, Mat& c, double alpha=1);
+CV_EXPORTS void divide(const Mat& a, const Mat& b, Mat& c, double alpha=1);
+
+CV_EXPORTS void convert(const Mat& src, Mat& dst, int dtype, double alpha=1, double beta=0);
+CV_EXPORTS void copy(const Mat& src, Mat& dst, const Mat& mask=Mat(), bool invertMask=false);
+CV_EXPORTS void set(Mat& dst, const Scalar& gamma, const Mat& mask=Mat());
+
+// working with multi-channel arrays
+CV_EXPORTS void extract( const Mat& a, Mat& plane, int coi );
+CV_EXPORTS void insert( const Mat& plane, Mat& a, int coi );
+
+// checks that the array does not have NaNs and/or Infs and all the elements are
+// within [min_val,max_val). idx is the index of the first "bad" element.
+CV_EXPORTS int check( const Mat& data, double min_val, double max_val, vector<int>* idx );
+
+// modifies values that are close to zero
+CV_EXPORTS void patchZeros( Mat& mat, double level );
+
+CV_EXPORTS void transpose(const Mat& src, Mat& dst);
+CV_EXPORTS void erode(const Mat& src, Mat& dst, const Mat& _kernel, Point anchor=Point(-1,-1),
+ int borderType=IPL_BORDER_CONSTANT, const Scalar& borderValue=Scalar());
+CV_EXPORTS void dilate(const Mat& src, Mat& dst, const Mat& _kernel, Point anchor=Point(-1,-1),
+ int borderType=IPL_BORDER_CONSTANT, const Scalar& borderValue=Scalar());
+CV_EXPORTS void filter2D(const Mat& src, Mat& dst, int ddepth, const Mat& kernel,
+ Point anchor, double delta, int borderType,
+ const Scalar& borderValue=Scalar());
+CV_EXPORTS void copyMakeBorder(const Mat& src, Mat& dst, int top, int bottom, int left, int right,
+ int borderType, const Scalar& borderValue=Scalar());
+CV_EXPORTS Mat calcSobelKernel2D( int dx, int dy, int apertureSize, int origin=0 );
+CV_EXPORTS Mat calcLaplaceKernel2D( int aperture_size );
+
+CV_EXPORTS void initUndistortMap( const Mat& a, const Mat& k, Size sz, Mat& mapx, Mat& mapy );
+
+CV_EXPORTS void minMaxLoc(const Mat& src, double* minval, double* maxval,
+ vector<int>* minloc, vector<int>* maxloc, const Mat& mask=Mat());
+CV_EXPORTS double norm(const Mat& src, int normType, const Mat& mask=Mat());
+CV_EXPORTS double norm(const Mat& src1, const Mat& src2, int normType, const Mat& mask=Mat());
+CV_EXPORTS Scalar mean(const Mat& src, const Mat& mask=Mat());
+
+CV_EXPORTS bool cmpUlps(const Mat& data, const Mat& refdata, int expMaxDiff, double* realMaxDiff, vector<int>* idx);
+
+// compares two arrays. max_diff is the maximum actual difference,
+// success_err_level is maximum allowed difference, idx is the index of the first
+// element for which difference is >success_err_level
+// (or index of element with the maximum difference)
+CV_EXPORTS int cmpEps( const Mat& data, const Mat& refdata, double* max_diff,
+ double success_err_level, vector<int>* idx,
+ bool element_wise_relative_error );
+
+// a wrapper for the previous function. in case of error prints the message to log file.
+CV_EXPORTS int cmpEps2( TS* ts, const Mat& data, const Mat& refdata, double success_err_level,
+ bool element_wise_relative_error, const char* desc );
+
+CV_EXPORTS int cmpEps2_64f( TS* ts, const double* val, const double* refval, int len,
+ double eps, const char* param_name );
+
+CV_EXPORTS void logicOp(const Mat& src1, const Mat& src2, Mat& dst, char c);
+CV_EXPORTS void logicOp(const Mat& src, const Scalar& s, Mat& dst, char c);
+CV_EXPORTS void min(const Mat& src1, const Mat& src2, Mat& dst);
+CV_EXPORTS void min(const Mat& src, double s, Mat& dst);
+CV_EXPORTS void max(const Mat& src1, const Mat& src2, Mat& dst);
+CV_EXPORTS void max(const Mat& src, double s, Mat& dst);
+
+CV_EXPORTS void compare(const Mat& src1, const Mat& src2, Mat& dst, int cmpop);
+CV_EXPORTS void compare(const Mat& src, double s, Mat& dst, int cmpop);
+CV_EXPORTS void gemm(const Mat& src1, const Mat& src2, double alpha,
+ const Mat& src3, double beta, Mat& dst, int flags);
+ CV_EXPORTS void transform( const Mat& src, Mat& dst, const Mat& transmat, const Mat& shift );
+CV_EXPORTS double crossCorr(const Mat& src1, const Mat& src2);
+
+struct CV_EXPORTS MatInfo
+{
+ MatInfo(const Mat& _m) : m(&_m) {}
+ const Mat* m;
+};
+
+CV_EXPORTS std::ostream& operator << (std::ostream& out, const MatInfo& m);
+
+struct CV_EXPORTS MatComparator
+{
+public:
+ MatComparator(double maxdiff, int context);
+
+ ::testing::AssertionResult operator()(const char* expr1, const char* expr2,
+ const Mat& m1, const Mat& m2);
+
+ double maxdiff;
+ double realmaxdiff;
+ vector<int> loc0;
+ int context;
+};
+
+
+
+class BaseTest;
+class TS;
+
+class CV_EXPORTS BaseTest
+{
+public:
+ // constructor(s) and destructor
+ BaseTest();
+ virtual ~BaseTest();
+
+ // the main procedure of the test
+ virtual void run( int start_from );
+
+ // the wrapper for run that cares of exceptions
+ virtual void safe_run( int start_from=0 );
+
+ const string& get_name() const { return name; }
+
+ // returns true if and only if the different test cases do not depend on each other
+ // (so that test system could get right to a problematic test case)
+ virtual bool can_do_fast_forward();
+
+ // deallocates all the memory.
+ // called by init() (before initialization) and by the destructor
+ virtual void clear();
+
+protected:
+ int test_case_count; // the total number of test cases
+
+ // read test params
+ virtual int read_params( CvFileStorage* fs );
+
+ // returns the number of tests or -1 if it is unknown a-priori
+ virtual int get_test_case_count();
+
+ // prepares data for the next test case. rng seed is updated by the function
+ virtual int prepare_test_case( int test_case_idx );
+
+ // checks if the test output is valid and accurate
+ virtual int validate_test_results( int test_case_idx );
+
+ // calls the tested function. the method is called from run_test_case()
+ virtual void run_func(); // runs tested func(s)
+
+ // updates progress bar
+ virtual int update_progress( int progress, int test_case_idx, int count, double dt );
+
+ // finds test parameter
+ const CvFileNode* find_param( CvFileStorage* fs, const char* param_name );
+
+ // name of the test (it is possible to locate a test by its name)
+ string name;
+
+ // pointer to the system that includes the test
+ TS* ts;
+};
+
+
+/*****************************************************************************************\
+* Information about a failed test *
+\*****************************************************************************************/
+
+struct TestInfo
+{
+ TestInfo();
+
+ // pointer to the test
+ BaseTest* test;
+
+ // failure code (CV_FAIL*)
+ int code;
+
+ // seed value right before the data for the failed test case is prepared.
+ uint64 rng_seed;
+
+ // seed value right before running the test
+ uint64 rng_seed0;
+
+ // index of test case, can be then passed to BaseTest::proceed_to_test_case()
+ int test_case_idx;
+};
+
+/*****************************************************************************************\
+* Base Class for test system *
+\*****************************************************************************************/
+
+// common parameters:
+struct CV_EXPORTS TSParams
+{
+ TSParams();
+
+ // RNG seed, passed to and updated by every test executed.
+ uint64 rng_seed;
+
+ // whether to use IPP, MKL etc. or not
+ bool use_optimized;
+
+ // extensivity of the tests, scale factor for test_case_count
+ double test_case_count_scale;
+};
+
+
+class CV_EXPORTS TS
+{
+public:
+ // constructor(s) and destructor
+ TS();
+ virtual ~TS();
+
+ enum
+ {
+ NUL=0,
+ SUMMARY_IDX=0,
+ SUMMARY=1 << SUMMARY_IDX,
+ LOG_IDX=1,
+ LOG=1 << LOG_IDX,
+ CSV_IDX=2,
+ CSV=1 << CSV_IDX,
+ CONSOLE_IDX=3,
+ CONSOLE=1 << CONSOLE_IDX,
+ MAX_IDX=4
+ };
+
+ static TS* ptr();
+
+ // initialize test system before running the first test
+ virtual void init( const string& modulename );
+
+ // low-level printing functions that are used by individual tests and by the system itself
+ virtual void printf( int streams, const char* fmt, ... );
+ virtual void vprintf( int streams, const char* fmt, va_list arglist );
+
+ // updates the context: current test, test case, rng state
+ virtual void update_context( BaseTest* test, int test_case_idx, bool update_ts_context );
+
+ const TestInfo* get_current_test_info() { return &current_test_info; }
+
+ // sets information about a failed test
+ virtual void set_failed_test_info( int fail_code );
+
+ virtual void set_gtest_status();
+
+ // test error codes
+ enum
+ {
+ // everything is Ok
+ OK=0,
+
+ // generic error: stub value to be used
+ // temporarily if the error's cause is unknown
+ FAIL_GENERIC=-1,
+
+ // the test is missing some essential data to proceed further
+ FAIL_MISSING_TEST_DATA=-2,
+
+ // the tested function raised an error via cxcore error handler
+ FAIL_ERROR_IN_CALLED_FUNC=-3,
+
+ // an exception has been raised;
+ // for memory and arithmetic exception
+ // there are two specialized codes (see below...)
+ FAIL_EXCEPTION=-4,
+
+ // a memory exception
+ // (access violation, access to missed page, stack overflow etc.)
+ FAIL_MEMORY_EXCEPTION=-5,
+
+ // arithmetic exception (overflow, division by zero etc.)
+ FAIL_ARITHM_EXCEPTION=-6,
+
+ // the tested function corrupted memory (no exception have been raised)
+ FAIL_MEMORY_CORRUPTION_BEGIN=-7,
+ FAIL_MEMORY_CORRUPTION_END=-8,
+
+ // the tested function (or test ifself) do not deallocate some memory
+ FAIL_MEMORY_LEAK=-9,
+
+ // the tested function returned invalid object, e.g. matrix, containing NaNs,
+ // structure with NULL or out-of-range fields (while it should not)
+ FAIL_INVALID_OUTPUT=-10,
+
+ // the tested function returned valid object, but it does not match to
+ // the original (or produced by the test) object
+ FAIL_MISMATCH=-11,
+
+ // the tested function returned valid object (a single number or numerical array),
+ // but it differs too much from the original (or produced by the test) object
+ FAIL_BAD_ACCURACY=-12,
+
+ // the tested function hung. Sometimes, can be determined by unexpectedly long
+ // processing time (in this case there should be possibility to interrupt such a function
+ FAIL_HANG=-13,
+
+ // unexpected response on passing bad arguments to the tested function
+ // (the function crashed, proceed successfully (while it should not), or returned
+ // error code that is different from what is expected)
+ FAIL_BAD_ARG_CHECK=-14,
+
+ // the test data (in whole or for the particular test case) is invalid
+ FAIL_INVALID_TEST_DATA=-15,
+
+ // the test has been skipped because it is not in the selected subset of the tests to run,
+ // because it has been run already within the same run with the same parameters, or because
+ // of some other reason and this is not considered as an error.
+ // Normally TS::run() (or overridden method in the derived class) takes care of what
+ // needs to be run, so this code should not occur.
+ SKIPPED=1
+ };
+
+ // get file storage
+ CvFileStorage* get_file_storage();
+
+ // get RNG to generate random input data for a test
+ RNG& get_rng() { return rng; }
+
+ // returns the current error code
+ int get_err_code() { return current_test_info.code; }
+
+ // returns the test extensivity scale
+ double get_test_case_count_scale() { return params.test_case_count_scale; }
+
+ const string& get_data_path() const { return data_path; }
+
+ // returns textual description of failure code
+ static string str_from_code( int code );
+
+protected:
+
+ // these are allocated within a test to try keep them valid in case of stack corruption
+ RNG rng;
+
+ // information about the current test
+ TestInfo current_test_info;
+
+ // the path to data files used by tests
+ string data_path;
+
+ TSParams params;
+ std::string output_buf[MAX_IDX];
+};
+
+
+/*****************************************************************************************\
+* Subclass of BaseTest for testing functions that process dense arrays *
+\*****************************************************************************************/
+
+class CV_EXPORTS ArrayTest : public BaseTest
+{
+public:
+ // constructor(s) and destructor
+ ArrayTest();
+ virtual ~ArrayTest();
+
+ virtual void clear();
+
+protected:
+
+ virtual int read_params( CvFileStorage* fs );
+ virtual int prepare_test_case( int test_case_idx );
+ virtual int validate_test_results( int test_case_idx );
+
+ virtual void prepare_to_validation( int test_case_idx );
+ virtual void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types );
+ virtual void fill_array( int test_case_idx, int i, int j, Mat& arr );
+ virtual void get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high );
+ virtual double get_success_error_level( int test_case_idx, int i, int j );
+
+ bool cvmat_allowed;
+ bool iplimage_allowed;
+ bool optional_mask;
+ bool element_wise_relative_error;
+
+ int min_log_array_size;
+ int max_log_array_size;
+
+ enum { INPUT, INPUT_OUTPUT, OUTPUT, REF_INPUT_OUTPUT, REF_OUTPUT, TEMP, MASK, MAX_ARR };
+
+ vector<vector<void*> > test_array;
+ vector<vector<Mat> > test_mat;
+ float buf[4];
+};
+
+
+class CV_EXPORTS BadArgTest : public BaseTest
+{
+public:
+ // constructor(s) and destructor
+ BadArgTest();
+ virtual ~BadArgTest();
+
+protected:
+ virtual int run_test_case( int expected_code, const string& descr );
+ virtual void run_func(void) = 0;
+ int test_case_idx;
+ int progress;
+ double t, freq;
+
+ template<class F>
+ int run_test_case( int expected_code, const string& _descr, F f)
+ {
+ double new_t = (double)cv::getTickCount(), dt;
+ if( test_case_idx < 0 )
+ {
+ test_case_idx = 0;
+ progress = 0;
+ dt = 0;
+ }
+ else
+ {
+ dt = (new_t - t)/(freq*1000);
+ t = new_t;
+ }
+ progress = update_progress(progress, test_case_idx, 0, dt);
+
+ int errcount = 0;
+ bool thrown = false;
+ const char* descr = _descr.c_str() ? _descr.c_str() : "";
+
+ try
+ {
+ f();
+ }
+ catch(const cv::Exception& e)
+ {
+ thrown = true;
+ if( e.code != expected_code )
+ {
+ ts->printf(TS::LOG, "%s (test case #%d): the error code %d is different from the expected %d\n",
+ descr, test_case_idx, e.code, expected_code);
+ errcount = 1;
+ }
+ }
+ catch(...)
+ {
+ thrown = true;
+ ts->printf(TS::LOG, "%s (test case #%d): unknown exception was thrown (the function has likely crashed)\n",
+ descr, test_case_idx);
+ errcount = 1;
+ }
+ if(!thrown)
+ {
+ ts->printf(TS::LOG, "%s (test case #%d): no expected exception was thrown\n",
+ descr, test_case_idx);
+ errcount = 1;
+ }
+ test_case_idx++;
+
+ return errcount;
+ }
+};
+
+struct CV_EXPORTS DefaultRngAuto
+{
+ const uint64 old_state;
+
+ DefaultRngAuto() : old_state(cv::theRNG().state) { cv::theRNG().state = (uint64)-1; }
+ ~DefaultRngAuto() { cv::theRNG().state = old_state; }
+
+ DefaultRngAuto& operator=(const DefaultRngAuto&);
+};
+
+}
+
+namespace cvtest
+{
+
+// test images generation functions
+CV_EXPORTS void fillGradient(Mat& img, int delta = 5);
+CV_EXPORTS void smoothBorder(Mat& img, const Scalar& color, int delta = 3);
+
+CV_EXPORTS void printVersionInfo(bool useStdOut = true);
+} //namespace cvtest
+
+// fills c with zeros
+CV_EXPORTS void cvTsZero( CvMat* c, const CvMat* mask=0 );
+
+// copies a to b (whole matrix or only the selected region)
+CV_EXPORTS void cvTsCopy( const CvMat* a, CvMat* b, const CvMat* mask=0 );
+
+// converts one array to another
+CV_EXPORTS void cvTsConvert( const CvMat* src, CvMat* dst );
+
+CV_EXPORTS void cvTsGEMM( const CvMat* a, const CvMat* b, double alpha,
+ const CvMat* c, double beta, CvMat* d, int flags );
+
+#ifndef __CV_TEST_EXEC_ARGS
+#if defined(_MSC_VER) && (_MSC_VER <= 1400)
+#define __CV_TEST_EXEC_ARGS(...) \
+ while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/
+#else
+#define __CV_TEST_EXEC_ARGS(...) \
+ __VA_ARGS__;
+#endif
+#endif
+
+#define CV_TEST_MAIN(resourcesubdir, ...) \
+int main(int argc, char **argv) \
+{ \
+ cvtest::TS::ptr()->init(resourcesubdir); \
+ ::testing::InitGoogleTest(&argc, argv); \
+ cvtest::printVersionInfo(); \
+ __CV_TEST_EXEC_ARGS(__VA_ARGS__) \
+ return RUN_ALL_TESTS(); \
+}
+
+// This usually only makes sense in perf tests with several implementations,
+// some of which are not available.
+#define CV_TEST_FAIL_NO_IMPL() do { \
+ ::testing::Test::RecordProperty("custom_status", "noimpl"); \
+ FAIL() << "No equivalent implementation."; \
+} while (0)
+
+#endif
+
+#include "ts_perf.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_gtest.h b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_gtest.h
new file mode 100644
index 00000000..75453d20
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_gtest.h
@@ -0,0 +1,20125 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the public API for Google Test. It should be
+// included by any test program that uses Google Test.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
+// program!
+//
+// Acknowledgment: Google Test borrowed the idea of automatic test
+// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
+// easyUnit framework.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_H_
+
+#include <limits>
+#include <ostream>
+#include <vector>
+
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file declares functions and macros used internally by
+// Google Test. They are subject to change without notice.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan)
+//
+// Low-level types and utilities for porting Google Test to various
+// platforms. They are subject to change without notice. DO NOT USE
+// THEM IN USER CODE.
+//
+// This file is fundamental to Google Test. All other Google Test source
+// files are expected to #include this. Therefore, it cannot #include
+// any other Google Test header.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+
+// The user can define the following macros in the build script to
+// control Google Test's behavior. If the user doesn't define a macro
+// in this list, Google Test will define it.
+//
+// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
+// is/isn't available.
+// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
+// are enabled.
+// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string
+// is/isn't available (some systems define
+// ::string, which is different to std::string).
+// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string
+// is/isn't available (some systems define
+// ::wstring, which is different to std::wstring).
+// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
+// expressions are/aren't available.
+// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
+// is/isn't available.
+// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
+// enabled.
+// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
+// std::wstring does/doesn't work (Google Test can
+// be used where std::wstring is unavailable).
+// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple
+// is/isn't available.
+// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
+// compiler supports Microsoft's "Structured
+// Exception Handling".
+// GTEST_HAS_STREAM_REDIRECTION
+// - Define it to 1/0 to indicate whether the
+// platform supports I/O stream redirection using
+// dup() and dup2().
+// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google
+// Test's own tr1 tuple implementation should be
+// used. Unused when the user sets
+// GTEST_HAS_TR1_TUPLE to 0.
+// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test
+// is building in C++11/C++98 mode.
+// GTEST_LINKED_AS_SHARED_LIBRARY
+// - Define to 1 when compiling tests that use
+// Google Test as a shared library (known as
+// DLL on Windows).
+// GTEST_CREATE_SHARED_LIBRARY
+// - Define to 1 when compiling Google Test itself
+// as a shared library.
+
+// This header defines the following utilities:
+//
+// Macros indicating the current platform (defined to 1 if compiled on
+// the given platform; otherwise undefined):
+// GTEST_OS_AIX - IBM AIX
+// GTEST_OS_CYGWIN - Cygwin
+// GTEST_OS_HPUX - HP-UX
+// GTEST_OS_LINUX - Linux
+// GTEST_OS_LINUX_ANDROID - Google Android
+// GTEST_OS_MAC - Mac OS X
+// GTEST_OS_IOS - iOS
+// GTEST_OS_IOS_SIMULATOR - iOS simulator
+// GTEST_OS_NACL - Google Native Client (NaCl)
+// GTEST_OS_OPENBSD - OpenBSD
+// GTEST_OS_QNX - QNX
+// GTEST_OS_SOLARIS - Sun Solaris
+// GTEST_OS_SYMBIAN - Symbian
+// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
+// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
+// GTEST_OS_WINDOWS_MINGW - MinGW
+// GTEST_OS_WINDOWS_MOBILE - Windows Mobile
+// GTEST_OS_ZOS - z/OS
+//
+// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the
+// most stable support. Since core members of the Google Test project
+// don't have access to other platforms, support for them may be less
+// stable. If you notice any problems on your platform, please notify
+// googletestframework@googlegroups.com (patches for fixing them are
+// even more welcome!).
+//
+// Note that it is possible that none of the GTEST_OS_* macros are defined.
+//
+// Macros indicating available Google Test features (defined to 1 if
+// the corresponding feature is supported; otherwise undefined):
+// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized
+// tests)
+// GTEST_HAS_DEATH_TEST - death tests
+// GTEST_HAS_PARAM_TEST - value-parameterized tests
+// GTEST_HAS_TYPED_TEST - typed tests
+// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
+// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
+// GTEST_HAS_POSIX_RE (see above) which users can
+// define themselves.
+// GTEST_USES_SIMPLE_RE - our own simple regex is used;
+// the above two are mutually exclusive.
+// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ().
+//
+// Macros for basic C++ coding:
+// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
+// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
+// variable don't have to be used.
+// GTEST_DISALLOW_ASSIGN_ - disables operator=.
+// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
+// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
+//
+// Synchronization:
+// Mutex, MutexLock, ThreadLocal, GetThreadCount()
+// - synchronization primitives.
+// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above
+// synchronization primitives have real implementations
+// and Google Test is thread-safe; or 0 otherwise.
+//
+// Template meta programming:
+// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only.
+// IteratorTraits - partial implementation of std::iterator_traits, which
+// is not available in libCstd when compiled with Sun C++.
+//
+// Smart pointers:
+// scoped_ptr - as in TR2.
+//
+// Regular expressions:
+// RE - a simple regular expression class using the POSIX
+// Extended Regular Expression syntax on UNIX-like
+// platforms, or a reduced regular exception syntax on
+// other platforms, including Windows.
+//
+// Logging:
+// GTEST_LOG_() - logs messages at the specified severity level.
+// LogToStderr() - directs all log messages to stderr.
+// FlushInfoLog() - flushes informational log messages.
+//
+// Stdout and stderr capturing:
+// CaptureStdout() - starts capturing stdout.
+// GetCapturedStdout() - stops capturing stdout and returns the captured
+// string.
+// CaptureStderr() - starts capturing stderr.
+// GetCapturedStderr() - stops capturing stderr and returns the captured
+// string.
+//
+// Integer types:
+// TypeWithSize - maps an integer to a int type.
+// Int32, UInt32, Int64, UInt64, TimeInMillis
+// - integers of known sizes.
+// BiggestInt - the biggest signed integer type.
+//
+// Command-line utilities:
+// GTEST_FLAG() - references a flag.
+// GTEST_DECLARE_*() - declares a flag.
+// GTEST_DEFINE_*() - defines a flag.
+// GetInjectableArgvs() - returns the command line as a vector of strings.
+//
+// Environment variable utilities:
+// GetEnv() - gets the value of an environment variable.
+// BoolFromGTestEnv() - parses a bool environment variable.
+// Int32FromGTestEnv() - parses an Int32 environment variable.
+// StringFromGTestEnv() - parses a string environment variable.
+
+#include <ctype.h> // for isspace, etc
+#include <stddef.h> // for ptrdiff_t
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#ifndef _WIN32_WCE
+# include <sys/types.h>
+# include <sys/stat.h>
+#endif // !_WIN32_WCE
+
+#if defined __APPLE__
+# include <AvailabilityMacros.h>
+# include <TargetConditionals.h>
+#endif
+
+#include <iostream> // NOLINT
+#include <sstream> // NOLINT
+#include <string> // NOLINT
+
+#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
+#define GTEST_FLAG_PREFIX_ "gtest_"
+#define GTEST_FLAG_PREFIX_DASH_ "gtest-"
+#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
+#define GTEST_NAME_ "Google Test"
+#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/"
+
+// Determines the version of gcc that is used to compile this.
+#ifdef __GNUC__
+// 40302 means version 4.3.2.
+# define GTEST_GCC_VER_ \
+ (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+#endif // __GNUC__
+
+// Determines the platform on which Google Test is compiled.
+#define GTEST_OS_CYGWIN 0
+#define GTEST_OS_SYMBIAN 0
+#define GTEST_OS_WINDOWS 0
+#define GTEST_OS_WINDOWS_MOBILE 0
+#define GTEST_OS_WINDOWS_MINGW 0
+#define GTEST_OS_WINDOWS_DESKTOP 0
+#define GTEST_OS_MAC 0
+#define GTEST_OS_LINUX 0
+#define GTEST_OS_LINUX_ANDROID 0
+#define GTEST_OS_ZOS 0
+#define GTEST_OS_SOLARIS 0
+#define GTEST_OS_AIX 0
+#define GTEST_OS_HPUX 0
+#define GTEST_OS_NACL 0
+#define GTEST_OS_OPENBSD 0
+#define GTEST_OS_QNX 0
+#define GTEST_OS_IOS 0
+#define GTEST_OS_IOS_SIMULATOR 0
+
+#ifdef __CYGWIN__
+# undef GTEST_OS_CYGWIN
+# define GTEST_OS_CYGWIN 1
+#elif defined __SYMBIAN32__
+# undef GTEST_OS_SYMBIAN
+# define GTEST_OS_SYMBIAN 1
+#elif defined _WIN32
+# undef GTEST_OS_WINDOWS
+# define GTEST_OS_WINDOWS 1
+# ifdef _WIN32_WCE
+# undef GTEST_OS_WINDOWS_MOBILE
+# define GTEST_OS_WINDOWS_MOBILE 1
+# elif defined(__MINGW__) || defined(__MINGW32__)
+# undef GTEST_OS_WINDOWS_MINGW
+# define GTEST_OS_WINDOWS_MINGW 1
+# else
+# undef GTEST_OS_WINDOWS_DESKTOP
+# define GTEST_OS_WINDOWS_DESKTOP 1
+# endif // _WIN32_WCE
+#elif defined __APPLE__
+# undef GTEST_OS_MAC
+# define GTEST_OS_MAC 1
+# if TARGET_OS_IPHONE
+# undef GTEST_OS_IOS
+# define GTEST_OS_IOS 1
+# if TARGET_IPHONE_SIMULATOR
+# undef GTEST_OS_IOS_SIMULATOR
+# define GTEST_OS_IOS_SIMULATOR 1
+# endif
+# endif
+#elif defined __linux__
+# undef GTEST_OS_LINUX
+# define GTEST_OS_LINUX 1
+# if defined __ANDROID__
+# undef GTEST_OS_LINUX_ANDROID
+# define GTEST_OS_LINUX_ANDROID 1
+# endif
+#elif defined __MVS__
+# undef GTEST_OS_ZOS
+# define GTEST_OS_ZOS 1
+#elif defined(__sun) && defined(__SVR4)
+# undef GTEST_OS_SOLARIS
+# define GTEST_OS_SOLARIS 1
+#elif defined(_AIX)
+# undef GTEST_OS_AIX
+# define GTEST_OS_AIX 1
+#elif defined(__hpux)
+# undef GTEST_OS_HPUX
+# define GTEST_OS_HPUX 1
+#elif defined __native_client__
+# undef GTEST_OS_NACL
+# define GTEST_OS_NACL 1
+#elif defined __OpenBSD__
+# undef GTEST_OS_OPENBSD
+# define GTEST_OS_OPENBSD 1
+#elif defined __QNX__
+# undef GTEST_OS_QNX
+# define GTEST_OS_QNX 1
+#endif // __CYGWIN__
+
+#ifndef GTEST_LANG_CXX11
+// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when
+// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a
+// value for __cplusplus, and recent versions of clang, gcc, and
+// probably other compilers set that too in C++11 mode.
+# if defined __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L
+// Compiling in at least C++11 mode.
+# define GTEST_LANG_CXX11 1
+# else
+# define GTEST_LANG_CXX11 0
+# endif
+#endif
+
+// Brings in definitions for functions used in the testing::internal::posix
+// namespace (read, write, close, chdir, isatty, stat). We do not currently
+// use them on Windows Mobile.
+#if !GTEST_OS_WINDOWS
+// This assumes that non-Windows OSes provide unistd.h. For OSes where this
+// is not the case, we need to include headers that provide the functions
+// mentioned above.
+# include <unistd.h>
+# include <strings.h>
+#elif !GTEST_OS_WINDOWS_MOBILE
+# include <direct.h>
+# include <io.h>
+#endif
+
+#if GTEST_OS_LINUX_ANDROID
+// Used to define __ANDROID_API__ matching the target NDK API level.
+# include <android/api-level.h> // NOLINT
+#endif
+
+// Defines this to true iff Google Test can use POSIX regular expressions.
+#ifndef GTEST_HAS_POSIX_RE
+# if GTEST_OS_LINUX_ANDROID
+// On Android, <regex.h> is only available starting with Froyo.
+# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 8)
+# else
+# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
+#endif
+#endif
+
+#if GTEST_HAS_POSIX_RE
+
+// On some platforms, <regex.h> needs someone to define size_t, and
+// won't compile otherwise. We can #include it here as we already
+// included <stdlib.h>, which is guaranteed to define size_t through
+// <stddef.h>.
+# include <regex.h> // NOLINT
+
+# define GTEST_USES_POSIX_RE 1
+# define GTEST_USES_SIMPLE_RE 0
+
+#elif GTEST_OS_WINDOWS
+
+// <regex.h> is not available on Windows. Use our own simple regex
+// implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+# define GTEST_USES_POSIX_RE 0
+
+#else
+
+// <regex.h> may not be available on this platform. Use our own
+// simple regex implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+# define GTEST_USES_POSIX_RE 0
+
+#endif // GTEST_HAS_POSIX_RE
+
+#ifndef GTEST_HAS_EXCEPTIONS
+// The user didn't tell us whether exceptions are enabled, so we need
+// to figure it out.
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS
+// macro to enable exceptions, so we'll do the same.
+// Assumes that exceptions are enabled by default.
+# ifndef _HAS_EXCEPTIONS
+# define _HAS_EXCEPTIONS 1
+# endif // _HAS_EXCEPTIONS
+# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
+# elif defined(__GNUC__) && __EXCEPTIONS
+// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__SUNPRO_CC)
+// Sun Pro CC supports exceptions. However, there is no compile-time way of
+// detecting whether they are enabled or not. Therefore, we assume that
+// they are enabled unless the user tells us otherwise.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__IBMCPP__) && __EXCEPTIONS
+// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__HP_aCC)
+// Exception handling is in effect by default in HP aCC compiler. It has to
+// be turned of by +noeh compiler option if desired.
+# define GTEST_HAS_EXCEPTIONS 1
+# else
+// For other compilers, we assume exceptions are disabled to be
+// conservative.
+# define GTEST_HAS_EXCEPTIONS 0
+# endif // defined(_MSC_VER) || defined(__BORLANDC__)
+#endif // GTEST_HAS_EXCEPTIONS
+
+#if !defined(GTEST_HAS_STD_STRING)
+// Even though we don't use this macro any longer, we keep it in case
+// some clients still depend on it.
+# define GTEST_HAS_STD_STRING 1
+#elif !GTEST_HAS_STD_STRING
+// The user told us that ::std::string isn't available.
+# error "Google Test cannot be used where ::std::string isn't available."
+#endif // !defined(GTEST_HAS_STD_STRING)
+
+#ifndef GTEST_HAS_GLOBAL_STRING
+// The user didn't tell us whether ::string is available, so we need
+// to figure it out.
+
+# define GTEST_HAS_GLOBAL_STRING 0
+
+#endif // GTEST_HAS_GLOBAL_STRING
+
+#ifndef GTEST_HAS_STD_WSTRING
+// The user didn't tell us whether ::std::wstring is available, so we need
+// to figure it out.
+// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring
+// is available.
+
+// Cygwin 1.7 and below doesn't support ::std::wstring.
+// Solaris' libc++ doesn't support it either. Android has
+// no support for it at least as recent as Froyo (2.2).
+# define GTEST_HAS_STD_WSTRING \
+ (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
+
+#endif // GTEST_HAS_STD_WSTRING
+
+#ifndef GTEST_HAS_GLOBAL_WSTRING
+// The user didn't tell us whether ::wstring is available, so we need
+// to figure it out.
+# define GTEST_HAS_GLOBAL_WSTRING \
+ (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+// Determines whether RTTI is available.
+#ifndef GTEST_HAS_RTTI
+// The user didn't tell us whether RTTI is enabled, so we need to
+// figure it out.
+
+# ifdef _MSC_VER
+
+# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled.
+# define GTEST_HAS_RTTI 1
+# else
+# define GTEST_HAS_RTTI 0
+# endif
+
+// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
+# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
+
+# ifdef __GXX_RTTI
+// When building against STLport with the Android NDK and with
+// -frtti -fno-exceptions, the build fails at link time with undefined
+// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
+// so disable RTTI when detected.
+# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
+ !defined(__EXCEPTIONS)
+# define GTEST_HAS_RTTI 0
+# else
+# define GTEST_HAS_RTTI 1
+# endif // GTEST_OS_LINUX_ANDROID && _STLPORT_MAJOR && !__EXCEPTIONS
+# else
+# define GTEST_HAS_RTTI 0
+# endif // __GXX_RTTI
+
+// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
+// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
+// first version with C++ support.
+# elif defined(__clang__)
+
+# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
+
+// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
+// both the typeid and dynamic_cast features are present.
+# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
+
+# ifdef __RTTI_ALL__
+# define GTEST_HAS_RTTI 1
+# else
+# define GTEST_HAS_RTTI 0
+# endif
+
+# else
+
+// For all other compilers, we assume RTTI is enabled.
+# define GTEST_HAS_RTTI 1
+
+# endif // _MSC_VER
+
+#endif // GTEST_HAS_RTTI
+
+// It's this header's responsibility to #include <typeinfo> when RTTI
+// is enabled.
+#if GTEST_HAS_RTTI
+# include <typeinfo>
+#endif
+
+// Determines whether Google Test can use the pthreads library.
+#ifndef GTEST_HAS_PTHREAD
+// The user didn't tell us explicitly, so we assume pthreads support is
+// available on Linux and Mac.
+//
+// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
+// to your compiler flags.
+# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \
+ || GTEST_OS_QNX)
+#endif // GTEST_HAS_PTHREAD
+
+#if GTEST_HAS_PTHREAD
+// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
+// true.
+# include <pthread.h> // NOLINT
+
+// For timespec and nanosleep, used below.
+# include <time.h> // NOLINT
+#endif
+
+// Determines whether Google Test can use tr1/tuple. You can define
+// this macro to 0 to prevent Google Test from using tuple (any
+// feature depending on tuple with be disabled in this mode).
+#ifndef GTEST_HAS_TR1_TUPLE
+# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
+// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.
+# define GTEST_HAS_TR1_TUPLE 0
+# else
+// The user didn't tell us not to do it, so we assume it's OK.
+# define GTEST_HAS_TR1_TUPLE 1
+# endif
+#endif // GTEST_HAS_TR1_TUPLE
+
+// Determines whether Google Test's own tr1 tuple implementation
+// should be used.
+#ifndef GTEST_USE_OWN_TR1_TUPLE
+// The user didn't tell us, so we need to figure it out.
+
+// We use our own TR1 tuple if we aren't sure the user has an
+// implementation of it already. At this time, libstdc++ 4.0.0+ and
+// MSVC 2010 are the only mainstream standard libraries that come
+// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler
+// pretends to be GCC by defining __GNUC__ and friends, but cannot
+// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1
+// tuple in a 323 MB Feature Pack download, which we cannot assume the
+// user has. QNX's QCC compiler is a modified GCC but it doesn't
+// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode,
+// and it can be used with some compilers that define __GNUC__.
+# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
+ && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) && !defined(_STLPORT_MAJOR) \
+ || (defined(_MSC_VER) && _MSC_VER >= 1600)
+# define GTEST_ENV_HAS_TR1_TUPLE_ 1
+# else
+# define GTEST_ENV_HAS_TR1_TUPLE_ 0
+# endif
+
+// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
+// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
+// can build with clang but need to use gcc4.2's libstdc++).
+# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
+# define GTEST_ENV_HAS_STD_TUPLE_ 1
+# else
+# define GTEST_ENV_HAS_STD_TUPLE_ 0
+# endif
+
+# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
+# define GTEST_USE_OWN_TR1_TUPLE 0
+# else
+# define GTEST_USE_OWN_TR1_TUPLE 1
+# undef GTEST_HAS_TR1_TUPLE
+# define GTEST_HAS_TR1_TUPLE 1
+# endif
+
+#endif // GTEST_USE_OWN_TR1_TUPLE
+
+// To avoid conditional compilation everywhere, we make it
+// gtest-port.h's responsibility to #include the header implementing
+// tr1/tuple.
+#if GTEST_HAS_TR1_TUPLE
+
+# if GTEST_USE_OWN_TR1_TUPLE
+// This file was GENERATED by command:
+// pump.py gtest-tuple.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2009 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+
+#include <utility> // For ::std::pair.
+
+// The compiler used in Symbian has a bug that prevents us from declaring the
+// tuple template as a friend (it complains that tuple is redefined). This
+// hack bypasses the bug by declaring the members that should otherwise be
+// private as public.
+// Sun Studio versions < 12 also have the above bug.
+#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
+#else
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
+ template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
+ private:
+#endif
+
+// GTEST_n_TUPLE_(T) is the type of an n-tuple.
+#define GTEST_0_TUPLE_(T) tuple<>
+#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \
+ void, void, void>
+#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \
+ void, void, void>
+#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \
+ void, void, void>
+#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \
+ void, void, void>
+#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \
+ void, void, void>
+#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \
+ void, void, void>
+#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ void, void, void>
+#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ T##7, void, void>
+#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ T##7, T##8, void>
+#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ T##7, T##8, T##9>
+
+// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
+#define GTEST_0_TYPENAMES_(T)
+#define GTEST_1_TYPENAMES_(T) typename T##0
+#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1
+#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2
+#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3
+#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4
+#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5
+#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6
+#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6, typename T##7
+#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6, \
+ typename T##7, typename T##8
+#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6, \
+ typename T##7, typename T##8, typename T##9
+
+// In theory, defining stuff in the ::std namespace is undefined
+// behavior. We can do this as we are playing the role of a standard
+// library vendor.
+namespace std {
+namespace tr1 {
+
+template <typename T0 = void, typename T1 = void, typename T2 = void,
+ typename T3 = void, typename T4 = void, typename T5 = void,
+ typename T6 = void, typename T7 = void, typename T8 = void,
+ typename T9 = void>
+class tuple;
+
+// Anything in namespace gtest_internal is Google Test's INTERNAL
+// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
+namespace gtest_internal {
+
+// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
+template <typename T>
+struct ByRef { typedef const T& type; }; // NOLINT
+template <typename T>
+struct ByRef<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper for ByRef.
+#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
+
+// AddRef<T>::type is T if T is a reference; otherwise it's T&. This
+// is the same as tr1::add_reference<T>::type.
+template <typename T>
+struct AddRef { typedef T& type; }; // NOLINT
+template <typename T>
+struct AddRef<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper for AddRef.
+#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
+
+// A helper for implementing get<k>().
+template <int k> class Get;
+
+// A helper for implementing tuple_element<k, T>. kIndexValid is true
+// iff k < the number of fields in tuple type T.
+template <bool kIndexValid, int kIndex, class Tuple>
+struct TupleElement;
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 0, GTEST_10_TUPLE_(T)> {
+ typedef T0 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 1, GTEST_10_TUPLE_(T)> {
+ typedef T1 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 2, GTEST_10_TUPLE_(T)> {
+ typedef T2 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 3, GTEST_10_TUPLE_(T)> {
+ typedef T3 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 4, GTEST_10_TUPLE_(T)> {
+ typedef T4 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 5, GTEST_10_TUPLE_(T)> {
+ typedef T5 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 6, GTEST_10_TUPLE_(T)> {
+ typedef T6 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 7, GTEST_10_TUPLE_(T)> {
+ typedef T7 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 8, GTEST_10_TUPLE_(T)> {
+ typedef T8 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 9, GTEST_10_TUPLE_(T)> {
+ typedef T9 type;
+};
+
+} // namespace gtest_internal
+
+template <>
+class tuple<> {
+ public:
+ tuple() {}
+ tuple(const tuple& /* t */) {}
+ tuple& operator=(const tuple& /* t */) { return *this; }
+};
+
+template <GTEST_1_TYPENAMES_(T)>
+class GTEST_1_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {}
+
+ tuple(const tuple& t) : f0_(t.f0_) {}
+
+ template <GTEST_1_TYPENAMES_(U)>
+ tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_1_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_1_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_1_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ return *this;
+ }
+
+ T0 f0_;
+};
+
+template <GTEST_2_TYPENAMES_(T)>
+class GTEST_2_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0),
+ f1_(f1) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
+
+ template <GTEST_2_TYPENAMES_(U)>
+ tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {}
+ template <typename U0, typename U1>
+ tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_2_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_2_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+ template <typename U0, typename U1>
+ tuple& operator=(const ::std::pair<U0, U1>& p) {
+ f0_ = p.first;
+ f1_ = p.second;
+ return *this;
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_2_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+};
+
+template <GTEST_3_TYPENAMES_(T)>
+class GTEST_3_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
+
+ template <GTEST_3_TYPENAMES_(U)>
+ tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_3_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_3_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_3_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+};
+
+template <GTEST_4_TYPENAMES_(T)>
+class GTEST_4_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2),
+ f3_(f3) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
+
+ template <GTEST_4_TYPENAMES_(U)>
+ tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_4_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_4_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_4_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+};
+
+template <GTEST_5_TYPENAMES_(T)>
+class GTEST_5_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3,
+ GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_) {}
+
+ template <GTEST_5_TYPENAMES_(U)>
+ tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_5_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_5_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_5_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+};
+
+template <GTEST_6_TYPENAMES_(T)>
+class GTEST_6_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+ f5_(f5) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_) {}
+
+ template <GTEST_6_TYPENAMES_(U)>
+ tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_6_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_6_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_6_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+};
+
+template <GTEST_7_TYPENAMES_(T)>
+class GTEST_7_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2),
+ f3_(f3), f4_(f4), f5_(f5), f6_(f6) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
+
+ template <GTEST_7_TYPENAMES_(U)>
+ tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_7_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_7_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_7_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+};
+
+template <GTEST_8_TYPENAMES_(T)>
+class GTEST_8_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6,
+ GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+ f5_(f5), f6_(f6), f7_(f7) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
+
+ template <GTEST_8_TYPENAMES_(U)>
+ tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_8_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_8_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_8_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ f7_ = t.f7_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+ T7 f7_;
+};
+
+template <GTEST_9_TYPENAMES_(T)>
+class GTEST_9_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
+ GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+ f5_(f5), f6_(f6), f7_(f7), f8_(f8) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
+
+ template <GTEST_9_TYPENAMES_(U)>
+ tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_9_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_9_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_9_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ f7_ = t.f7_;
+ f8_ = t.f8_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+ T7 f7_;
+ T8 f8_;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+class tuple {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
+ f9_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
+ GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2),
+ f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
+
+ template <GTEST_10_TYPENAMES_(U)>
+ tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
+ f9_(t.f9_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_10_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_10_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_10_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ f7_ = t.f7_;
+ f8_ = t.f8_;
+ f9_ = t.f9_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+ T7 f7_;
+ T8 f8_;
+ T9 f9_;
+};
+
+// 6.1.3.2 Tuple creation functions.
+
+// Known limitations: we don't support passing an
+// std::tr1::reference_wrapper<T> to make_tuple(). And we don't
+// implement tie().
+
+inline tuple<> make_tuple() { return tuple<>(); }
+
+template <GTEST_1_TYPENAMES_(T)>
+inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) {
+ return GTEST_1_TUPLE_(T)(f0);
+}
+
+template <GTEST_2_TYPENAMES_(T)>
+inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) {
+ return GTEST_2_TUPLE_(T)(f0, f1);
+}
+
+template <GTEST_3_TYPENAMES_(T)>
+inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) {
+ return GTEST_3_TUPLE_(T)(f0, f1, f2);
+}
+
+template <GTEST_4_TYPENAMES_(T)>
+inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3) {
+ return GTEST_4_TUPLE_(T)(f0, f1, f2, f3);
+}
+
+template <GTEST_5_TYPENAMES_(T)>
+inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4) {
+ return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4);
+}
+
+template <GTEST_6_TYPENAMES_(T)>
+inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5) {
+ return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5);
+}
+
+template <GTEST_7_TYPENAMES_(T)>
+inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6) {
+ return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6);
+}
+
+template <GTEST_8_TYPENAMES_(T)>
+inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) {
+ return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7);
+}
+
+template <GTEST_9_TYPENAMES_(T)>
+inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
+ const T8& f8) {
+ return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8);
+}
+
+template <GTEST_10_TYPENAMES_(T)>
+inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
+ const T8& f8, const T9& f9) {
+ return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9);
+}
+
+// 6.1.3.3 Tuple helper classes.
+
+template <typename Tuple> struct tuple_size;
+
+template <GTEST_0_TYPENAMES_(T)>
+struct tuple_size<GTEST_0_TUPLE_(T)> {
+ static const int value = 0;
+};
+
+template <GTEST_1_TYPENAMES_(T)>
+struct tuple_size<GTEST_1_TUPLE_(T)> {
+ static const int value = 1;
+};
+
+template <GTEST_2_TYPENAMES_(T)>
+struct tuple_size<GTEST_2_TUPLE_(T)> {
+ static const int value = 2;
+};
+
+template <GTEST_3_TYPENAMES_(T)>
+struct tuple_size<GTEST_3_TUPLE_(T)> {
+ static const int value = 3;
+};
+
+template <GTEST_4_TYPENAMES_(T)>
+struct tuple_size<GTEST_4_TUPLE_(T)> {
+ static const int value = 4;
+};
+
+template <GTEST_5_TYPENAMES_(T)>
+struct tuple_size<GTEST_5_TUPLE_(T)> {
+ static const int value = 5;
+};
+
+template <GTEST_6_TYPENAMES_(T)>
+struct tuple_size<GTEST_6_TUPLE_(T)> {
+ static const int value = 6;
+};
+
+template <GTEST_7_TYPENAMES_(T)>
+struct tuple_size<GTEST_7_TUPLE_(T)> {
+ static const int value = 7;
+};
+
+template <GTEST_8_TYPENAMES_(T)>
+struct tuple_size<GTEST_8_TUPLE_(T)> {
+ static const int value = 8;
+};
+
+template <GTEST_9_TYPENAMES_(T)>
+struct tuple_size<GTEST_9_TUPLE_(T)> {
+ static const int value = 9;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct tuple_size<GTEST_10_TUPLE_(T)> {
+ static const int value = 10;
+};
+
+template <int k, class Tuple>
+struct tuple_element {
+ typedef typename gtest_internal::TupleElement<
+ k < (tuple_size<Tuple>::value), k, Tuple>::type type;
+};
+
+#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
+
+// 6.1.3.4 Element access.
+
+namespace gtest_internal {
+
+template <>
+class Get<0> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
+ Field(Tuple& t) { return t.f0_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
+ ConstField(const Tuple& t) { return t.f0_; }
+};
+
+template <>
+class Get<1> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
+ Field(Tuple& t) { return t.f1_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
+ ConstField(const Tuple& t) { return t.f1_; }
+};
+
+template <>
+class Get<2> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
+ Field(Tuple& t) { return t.f2_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
+ ConstField(const Tuple& t) { return t.f2_; }
+};
+
+template <>
+class Get<3> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
+ Field(Tuple& t) { return t.f3_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
+ ConstField(const Tuple& t) { return t.f3_; }
+};
+
+template <>
+class Get<4> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
+ Field(Tuple& t) { return t.f4_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
+ ConstField(const Tuple& t) { return t.f4_; }
+};
+
+template <>
+class Get<5> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
+ Field(Tuple& t) { return t.f5_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
+ ConstField(const Tuple& t) { return t.f5_; }
+};
+
+template <>
+class Get<6> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
+ Field(Tuple& t) { return t.f6_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
+ ConstField(const Tuple& t) { return t.f6_; }
+};
+
+template <>
+class Get<7> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
+ Field(Tuple& t) { return t.f7_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
+ ConstField(const Tuple& t) { return t.f7_; }
+};
+
+template <>
+class Get<8> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
+ Field(Tuple& t) { return t.f8_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
+ ConstField(const Tuple& t) { return t.f8_; }
+};
+
+template <>
+class Get<9> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
+ Field(Tuple& t) { return t.f9_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
+ ConstField(const Tuple& t) { return t.f9_; }
+};
+
+} // namespace gtest_internal
+
+template <int k, GTEST_10_TYPENAMES_(T)>
+GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
+get(GTEST_10_TUPLE_(T)& t) {
+ return gtest_internal::Get<k>::Field(t);
+}
+
+template <int k, GTEST_10_TYPENAMES_(T)>
+GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
+get(const GTEST_10_TUPLE_(T)& t) {
+ return gtest_internal::Get<k>::ConstField(t);
+}
+
+// 6.1.3.5 Relational operators
+
+// We only implement == and !=, as we don't have a need for the rest yet.
+
+namespace gtest_internal {
+
+// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
+// first k fields of t1 equals the first k fields of t2.
+// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
+// k1 != k2.
+template <int kSize1, int kSize2>
+struct SameSizeTuplePrefixComparator;
+
+template <>
+struct SameSizeTuplePrefixComparator<0, 0> {
+ template <class Tuple1, class Tuple2>
+ static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
+ return true;
+ }
+};
+
+template <int k>
+struct SameSizeTuplePrefixComparator<k, k> {
+ template <class Tuple1, class Tuple2>
+ static bool Eq(const Tuple1& t1, const Tuple2& t2) {
+ return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
+ ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
+ }
+};
+
+} // namespace gtest_internal
+
+template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
+inline bool operator==(const GTEST_10_TUPLE_(T)& t,
+ const GTEST_10_TUPLE_(U)& u) {
+ return gtest_internal::SameSizeTuplePrefixComparator<
+ tuple_size<GTEST_10_TUPLE_(T)>::value,
+ tuple_size<GTEST_10_TUPLE_(U)>::value>::Eq(t, u);
+}
+
+template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
+inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
+ const GTEST_10_TUPLE_(U)& u) { return !(t == u); }
+
+// 6.1.4 Pairs.
+// Unimplemented.
+
+} // namespace tr1
+} // namespace std
+
+#undef GTEST_0_TUPLE_
+#undef GTEST_1_TUPLE_
+#undef GTEST_2_TUPLE_
+#undef GTEST_3_TUPLE_
+#undef GTEST_4_TUPLE_
+#undef GTEST_5_TUPLE_
+#undef GTEST_6_TUPLE_
+#undef GTEST_7_TUPLE_
+#undef GTEST_8_TUPLE_
+#undef GTEST_9_TUPLE_
+#undef GTEST_10_TUPLE_
+
+#undef GTEST_0_TYPENAMES_
+#undef GTEST_1_TYPENAMES_
+#undef GTEST_2_TYPENAMES_
+#undef GTEST_3_TYPENAMES_
+#undef GTEST_4_TYPENAMES_
+#undef GTEST_5_TYPENAMES_
+#undef GTEST_6_TYPENAMES_
+#undef GTEST_7_TYPENAMES_
+#undef GTEST_8_TYPENAMES_
+#undef GTEST_9_TYPENAMES_
+#undef GTEST_10_TYPENAMES_
+
+#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
+#undef GTEST_BY_REF_
+#undef GTEST_ADD_REF_
+#undef GTEST_TUPLE_ELEMENT_
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+# elif GTEST_ENV_HAS_STD_TUPLE_
+# include <tuple>
+// C++11 puts its tuple into the ::std namespace rather than
+// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there.
+// This causes undefined behavior, but supported compilers react in
+// the way we intend.
+namespace std {
+namespace tr1 {
+using ::std::get;
+using ::std::make_tuple;
+using ::std::tuple;
+using ::std::tuple_element;
+using ::std::tuple_size;
+}
+}
+
+# elif GTEST_OS_SYMBIAN
+
+// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
+// use STLport's tuple implementation, which unfortunately doesn't
+// work as the copy of STLport distributed with Symbian is incomplete.
+// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
+// use its own tuple implementation.
+# ifdef BOOST_HAS_TR1_TUPLE
+# undef BOOST_HAS_TR1_TUPLE
+# endif // BOOST_HAS_TR1_TUPLE
+
+// This prevents <boost/tr1/detail/config.hpp>, which defines
+// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
+# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
+# include <tuple>
+
+# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
+// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header. This does
+// not conform to the TR1 spec, which requires the header to be <tuple>.
+
+# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
+// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
+// which is #included by <tr1/tuple>, to not compile when RTTI is
+// disabled. _TR1_FUNCTIONAL is the header guard for
+// <tr1/functional>. Hence the following #define is a hack to prevent
+// <tr1/functional> from being included.
+# define _TR1_FUNCTIONAL 1
+# include <tr1/tuple>
+# undef _TR1_FUNCTIONAL // Allows the user to #include
+ // <tr1/functional> if he chooses to.
+# else
+# include <tr1/tuple> // NOLINT
+# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
+
+# else
+// If the compiler is not GCC 4.0+, we assume the user is using a
+// spec-conforming TR1 implementation.
+# include <tuple> // NOLINT
+# endif // GTEST_USE_OWN_TR1_TUPLE
+
+#endif // GTEST_HAS_TR1_TUPLE
+
+// Determines whether clone(2) is supported.
+// Usually it will only be available on Linux, excluding
+// Linux on the Itanium architecture.
+// Also see http://linux.die.net/man/2/clone.
+#ifndef GTEST_HAS_CLONE
+// The user didn't tell us, so we need to figure it out.
+
+# if GTEST_OS_LINUX && !defined(__ia64__)
+# if GTEST_OS_LINUX_ANDROID
+// On Android, clone() is only available on ARM starting with Gingerbread.
+# if (defined(__arm__) || defined(__mips__)) && __ANDROID_API__ >= 9
+# define GTEST_HAS_CLONE 1
+# else
+# define GTEST_HAS_CLONE 0
+# endif
+# else
+# define GTEST_HAS_CLONE 1
+# endif
+# else
+# define GTEST_HAS_CLONE 0
+# endif // GTEST_OS_LINUX && !defined(__ia64__)
+
+#endif // GTEST_HAS_CLONE
+
+// Determines whether to support stream redirection. This is used to test
+// output correctness and to implement death tests.
+#ifndef GTEST_HAS_STREAM_REDIRECTION
+// By default, we assume that stream redirection is supported on all
+// platforms except known mobile ones.
+# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN
+# define GTEST_HAS_STREAM_REDIRECTION 0
+# else
+# define GTEST_HAS_STREAM_REDIRECTION 1
+# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+// Determines whether to support death tests.
+// Google Test does not support death tests for VC 7.1 and earlier as
+// abort() in a VC 7.1 application compiled as GUI in debug config
+// pops up a dialog window that cannot be suppressed programmatically.
+#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
+ (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \
+ (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
+ GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
+ GTEST_OS_OPENBSD || GTEST_OS_QNX)
+# define GTEST_HAS_DEATH_TEST 1
+# include <vector> // NOLINT
+#else
+# define GTEST_HAS_DEATH_TEST 0
+#endif
+
+// We don't support MSVC 7.1 with exceptions disabled now. Therefore
+// all the compilers we care about are adequate for supporting
+// value-parameterized tests.
+#define GTEST_HAS_PARAM_TEST 1
+
+// Determines whether to support type-driven tests.
+
+// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
+// Sun Pro CC, IBM Visual Age, and HP aCC support.
+#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
+ defined(__IBMCPP__) || defined(__HP_aCC)
+# define GTEST_HAS_TYPED_TEST 1
+# define GTEST_HAS_TYPED_TEST_P 1
+#endif
+
+// Determines whether to support Combine(). This only makes sense when
+// value-parameterized tests are enabled. The implementation doesn't
+// work on Sun Studio since it doesn't understand templated conversion
+// operators.
+#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)
+# define GTEST_HAS_COMBINE 1
+#endif
+
+// Determines whether the system compiler uses UTF-16 for encoding wide strings.
+#define GTEST_WIDE_STRING_USES_UTF16_ \
+ (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
+
+// Determines whether test results can be streamed to a socket.
+#if GTEST_OS_LINUX
+# define GTEST_CAN_STREAM_RESULTS_ 1
+#else
+# define GTEST_CAN_STREAM_RESULTS_ 0
+#endif
+
+// Defines some utility macros.
+
+// The GNU compiler emits a warning if nested "if" statements are followed by
+// an "else" statement and braces are not used to explicitly disambiguate the
+// "else" binding. This leads to problems with code like:
+//
+// if (gate)
+// ASSERT_*(condition) << "Some message";
+//
+// The "switch (0) case 0:" idiom is used to suppress this.
+#ifdef __INTEL_COMPILER
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
+#else
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
+#endif
+
+// Use this annotation at the end of a struct/class definition to
+// prevent the compiler from optimizing away instances that are never
+// used. This is useful when all interesting logic happens inside the
+// c'tor and / or d'tor. Example:
+//
+// struct Foo {
+// Foo() { ... }
+// } GTEST_ATTRIBUTE_UNUSED_;
+//
+// Also use it after a variable or parameter declaration to tell the
+// compiler the variable/parameter does not have to be used.
+#if defined(__GNUC__) && !defined(COMPILER_ICC)
+# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
+#else
+# define GTEST_ATTRIBUTE_UNUSED_
+#endif
+
+// A macro to disallow operator=
+// This should be used in the private: declarations for a class.
+#define GTEST_DISALLOW_ASSIGN_(type)\
+ void operator=(type const &)
+
+// A macro to disallow copy constructor and operator=
+// This should be used in the private: declarations for a class.
+#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\
+ type(type const &);\
+ GTEST_DISALLOW_ASSIGN_(type)
+
+// Tell the compiler to warn about unused return values for functions declared
+// with this macro. The macro should be used on function declarations
+// following the argument list:
+//
+// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
+#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
+# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
+#else
+# define GTEST_MUST_USE_RESULT_
+#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
+
+// Determine whether the compiler supports Microsoft's Structured Exception
+// Handling. This is supported by several Windows compilers but generally
+// does not exist on any other system.
+#ifndef GTEST_HAS_SEH
+// The user didn't tell us, so we need to figure it out.
+
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// These two compilers are known to support SEH.
+# define GTEST_HAS_SEH 1
+# else
+// Assume no SEH.
+# define GTEST_HAS_SEH 0
+# endif
+
+#endif // GTEST_HAS_SEH
+
+#ifdef _MSC_VER
+
+# if GTEST_LINKED_AS_SHARED_LIBRARY
+# define GTEST_API_ __declspec(dllimport)
+# elif GTEST_CREATE_SHARED_LIBRARY
+# define GTEST_API_ __declspec(dllexport)
+# endif
+
+#endif // _MSC_VER
+
+#ifndef GTEST_API_
+# define GTEST_API_
+#endif
+
+#ifdef __GNUC__
+// Ask the compiler to never inline a given function.
+# define GTEST_NO_INLINE_ __attribute__((noinline))
+#else
+# define GTEST_NO_INLINE_
+#endif
+
+// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
+#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
+# define GTEST_HAS_CXXABI_H_ 1
+#else
+# define GTEST_HAS_CXXABI_H_ 0
+#endif
+
+namespace testing {
+
+class Message;
+
+namespace internal {
+
+// A secret type that Google Test users don't know about. It has no
+// definition on purpose. Therefore it's impossible to create a
+// Secret object, which is what we want.
+class Secret;
+
+// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
+// expression is true. For example, you could use it to verify the
+// size of a static array:
+//
+// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES,
+// content_type_names_incorrect_size);
+//
+// or to make sure a struct is smaller than a certain size:
+//
+// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large);
+//
+// The second argument to the macro is the name of the variable. If
+// the expression is false, most compilers will issue a warning/error
+// containing the name of the variable.
+
+template <bool>
+struct CompileAssert {
+};
+
+#define GTEST_COMPILE_ASSERT_(expr, msg) \
+ typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \
+ msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_
+
+// Implementation details of GTEST_COMPILE_ASSERT_:
+//
+// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1
+// elements (and thus is invalid) when the expression is false.
+//
+// - The simpler definition
+//
+// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1]
+//
+// does not work, as gcc supports variable-length arrays whose sizes
+// are determined at run-time (this is gcc's extension and not part
+// of the C++ standard). As a result, gcc fails to reject the
+// following code with the simple definition:
+//
+// int foo;
+// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is
+// // not a compile-time constant.
+//
+// - By using the type CompileAssert<(bool(expr))>, we ensures that
+// expr is a compile-time constant. (Template arguments must be
+// determined at compile-time.)
+//
+// - The outter parentheses in CompileAssert<(bool(expr))> are necessary
+// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written
+//
+// CompileAssert<bool(expr)>
+//
+// instead, these compilers will refuse to compile
+//
+// GTEST_COMPILE_ASSERT_(5 > 0, some_message);
+//
+// (They seem to think the ">" in "5 > 0" marks the end of the
+// template argument list.)
+//
+// - The array size is (bool(expr) ? 1 : -1), instead of simply
+//
+// ((expr) ? 1 : -1).
+//
+// This is to avoid running into a bug in MS VC 7.1, which
+// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1.
+
+// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.
+//
+// This template is declared, but intentionally undefined.
+template <typename T1, typename T2>
+struct StaticAssertTypeEqHelper;
+
+template <typename T>
+struct StaticAssertTypeEqHelper<T, T> {};
+
+#if GTEST_HAS_GLOBAL_STRING
+typedef ::string string;
+#else
+typedef ::std::string string;
+#endif // GTEST_HAS_GLOBAL_STRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+typedef ::wstring wstring;
+#elif GTEST_HAS_STD_WSTRING
+typedef ::std::wstring wstring;
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+// A helper for suppressing warnings on constant condition. It just
+// returns 'condition'.
+GTEST_API_ bool IsTrue(bool condition);
+
+// Defines scoped_ptr.
+
+// This implementation of scoped_ptr is PARTIAL - it only contains
+// enough stuff to satisfy Google Test's need.
+template <typename T>
+class scoped_ptr {
+ public:
+ typedef T element_type;
+
+ explicit scoped_ptr(T* p = NULL) : ptr_(p) {}
+ ~scoped_ptr() { reset(); }
+
+ T& operator*() const { return *ptr_; }
+ T* operator->() const { return ptr_; }
+ T* get() const { return ptr_; }
+
+ T* release() {
+ T* const ptr = ptr_;
+ ptr_ = NULL;
+ return ptr;
+ }
+
+ void reset(T* p = NULL) {
+ if (p != ptr_) {
+ if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type.
+ delete ptr_;
+ }
+ ptr_ = p;
+ }
+ }
+
+ private:
+ T* ptr_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr);
+};
+
+// Defines RE.
+
+// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
+// Regular Expression syntax.
+class GTEST_API_ RE {
+ public:
+ // A copy constructor is required by the Standard to initialize object
+ // references from r-values.
+ RE(const RE& other) { Init(other.pattern()); }
+
+ // Constructs an RE from a string.
+ RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
+
+#if GTEST_HAS_GLOBAL_STRING
+
+ RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT
+
+#endif // GTEST_HAS_GLOBAL_STRING
+
+ RE(const char* regex) { Init(regex); } // NOLINT
+ ~RE();
+
+ // Returns the string representation of the regex.
+ const char* pattern() const { return pattern_; }
+
+ // FullMatch(str, re) returns true iff regular expression re matches
+ // the entire str.
+ // PartialMatch(str, re) returns true iff regular expression re
+ // matches a substring of str (including str itself).
+ //
+ // TODO(wan@google.com): make FullMatch() and PartialMatch() work
+ // when str contains NUL characters.
+ static bool FullMatch(const ::std::string& str, const RE& re) {
+ return FullMatch(str.c_str(), re);
+ }
+ static bool PartialMatch(const ::std::string& str, const RE& re) {
+ return PartialMatch(str.c_str(), re);
+ }
+
+#if GTEST_HAS_GLOBAL_STRING
+
+ static bool FullMatch(const ::string& str, const RE& re) {
+ return FullMatch(str.c_str(), re);
+ }
+ static bool PartialMatch(const ::string& str, const RE& re) {
+ return PartialMatch(str.c_str(), re);
+ }
+
+#endif // GTEST_HAS_GLOBAL_STRING
+
+ static bool FullMatch(const char* str, const RE& re);
+ static bool PartialMatch(const char* str, const RE& re);
+
+ private:
+ void Init(const char* regex);
+
+ // We use a const char* instead of an std::string, as Google Test used to be
+ // used where std::string is not available. TODO(wan@google.com): change to
+ // std::string.
+ const char* pattern_;
+ bool is_valid_;
+
+#if GTEST_USES_POSIX_RE
+
+ regex_t full_regex_; // For FullMatch().
+ regex_t partial_regex_; // For PartialMatch().
+
+#else // GTEST_USES_SIMPLE_RE
+
+ const char* full_pattern_; // For FullMatch();
+
+#endif
+
+ GTEST_DISALLOW_ASSIGN_(RE);
+};
+
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
+ int line);
+
+// Defines logging utilities:
+// GTEST_LOG_(severity) - logs messages at the specified severity level. The
+// message itself is streamed into the macro.
+// LogToStderr() - directs all log messages to stderr.
+// FlushInfoLog() - flushes informational log messages.
+
+enum GTestLogSeverity {
+ GTEST_INFO,
+ GTEST_WARNING,
+ GTEST_ERROR,
+ GTEST_FATAL
+};
+
+// Formats log entry severity, provides a stream object for streaming the
+// log message, and terminates the message with a newline when going out of
+// scope.
+class GTEST_API_ GTestLog {
+ public:
+ GTestLog(GTestLogSeverity severity, const char* file, int line);
+
+ // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+ ~GTestLog();
+
+ ::std::ostream& GetStream() { return ::std::cerr; }
+
+ private:
+ const GTestLogSeverity severity_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
+};
+
+#define GTEST_LOG_(severity) \
+ ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
+ __FILE__, __LINE__).GetStream()
+
+inline void LogToStderr() {}
+inline void FlushInfoLog() { fflush(NULL); }
+
+// INTERNAL IMPLEMENTATION - DO NOT USE.
+//
+// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
+// is not satisfied.
+// Synopsys:
+// GTEST_CHECK_(boolean_condition);
+// or
+// GTEST_CHECK_(boolean_condition) << "Additional message";
+//
+// This checks the condition and if the condition is not satisfied
+// it prints message about the condition violation, including the
+// condition itself, plus additional message streamed into it, if any,
+// and then it aborts the program. It aborts the program irrespective of
+// whether it is built in the debug mode or not.
+#define GTEST_CHECK_(condition) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::IsTrue(condition)) \
+ ; \
+ else \
+ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+
+// An all-mode assert to verify that the given POSIX-style function
+// call returns 0 (indicating success). Known limitation: this
+// doesn't expand to a balanced 'if' statement, so enclose the macro
+// in {} if you need to use it as the only statement in an 'if'
+// branch.
+#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
+ if (const int gtest_error = (posix_call)) \
+ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
+ << gtest_error
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Use ImplicitCast_ as a safe version of static_cast for upcasting in
+// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
+// const Foo*). When you use ImplicitCast_, the compiler checks that
+// the cast is safe. Such explicit ImplicitCast_s are necessary in
+// surprisingly many situations where C++ demands an exact type match
+// instead of an argument type convertable to a target type.
+//
+// The syntax for using ImplicitCast_ is the same as for static_cast:
+//
+// ImplicitCast_<ToType>(expr)
+//
+// ImplicitCast_ would have been part of the C++ standard library,
+// but the proposal was submitted too late. It will probably make
+// its way into the language in the future.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., implicit_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To>
+inline To ImplicitCast_(To x) { return x; }
+
+// When you upcast (that is, cast a pointer from type Foo to type
+// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
+// always succeed. When you downcast (that is, cast a pointer from
+// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
+// how do you know the pointer is really of type SubclassOfFoo? It
+// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
+// when you downcast, you should use this macro. In debug mode, we
+// use dynamic_cast<> to double-check the downcast is legal (we die
+// if it's not). In normal mode, we do the efficient static_cast<>
+// instead. Thus, it's important to test in debug mode to make sure
+// the cast is legal!
+// This is the only place in the code we should use dynamic_cast<>.
+// In particular, you SHOULDN'T be using dynamic_cast<> in order to
+// do RTTI (eg code like this:
+// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
+// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
+// You should design the code some other way not to need this.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., down_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To, typename From> // use like this: DownCast_<T*>(foo);
+inline To DownCast_(From* f) { // so we only accept pointers
+ // Ensures that To is a sub-type of From *. This test is here only
+ // for compile-time type checking, and has no overhead in an
+ // optimized build at run-time, as it will be optimized away
+ // completely.
+ if (false) {
+ const To to = NULL;
+ ::testing::internal::ImplicitCast_<From*>(to);
+ }
+
+#if GTEST_HAS_RTTI
+ // RTTI: debug mode only!
+ GTEST_CHECK_(f == NULL || dynamic_cast<To>(f) != NULL);
+#endif
+ return static_cast<To>(f);
+}
+
+// Downcasts the pointer of type Base to Derived.
+// Derived must be a subclass of Base. The parameter MUST
+// point to a class of type Derived, not any subclass of it.
+// When RTTI is available, the function performs a runtime
+// check to enforce this.
+template <class Derived, class Base>
+Derived* CheckedDowncastToActualType(Base* base) {
+#if GTEST_HAS_RTTI
+ GTEST_CHECK_(typeid(*base) == typeid(Derived));
+ return dynamic_cast<Derived*>(base); // NOLINT
+#else
+ return static_cast<Derived*>(base); // Poor man's downcast.
+#endif
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Defines the stderr capturer:
+// CaptureStdout - starts capturing stdout.
+// GetCapturedStdout - stops capturing stdout and returns the captured string.
+// CaptureStderr - starts capturing stderr.
+// GetCapturedStderr - stops capturing stderr and returns the captured string.
+//
+GTEST_API_ void CaptureStdout();
+GTEST_API_ std::string GetCapturedStdout();
+GTEST_API_ void CaptureStderr();
+GTEST_API_ std::string GetCapturedStderr();
+
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+
+#if GTEST_HAS_DEATH_TEST
+
+const ::std::vector<testing::internal::string>& GetInjectableArgvs();
+void SetInjectableArgvs(const ::std::vector<testing::internal::string>*
+ new_argvs);
+
+// A copy of all command line arguments. Set by InitGoogleTest().
+extern ::std::vector<testing::internal::string> g_argvs;
+
+#endif // GTEST_HAS_DEATH_TEST
+
+// Defines synchronization primitives.
+
+#if GTEST_HAS_PTHREAD
+
+// Sleeps for (roughly) n milli-seconds. This function is only for
+// testing Google Test's own constructs. Don't use it in user tests,
+// either directly or indirectly.
+inline void SleepMilliseconds(int n) {
+ const timespec time = {
+ 0, // 0 seconds.
+ n * 1000L * 1000L, // And n ms.
+ };
+ nanosleep(&time, NULL);
+}
+
+// Allows a controller thread to pause execution of newly created
+// threads until notified. Instances of this class must be created
+// and destroyed in the controller thread.
+//
+// This class is only for testing Google Test's own constructs. Do not
+// use it in user tests, either directly or indirectly.
+class Notification {
+ public:
+ Notification() : notified_(false) {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
+ }
+ ~Notification() {
+ pthread_mutex_destroy(&mutex_);
+ }
+
+ // Notifies all threads created with this notification to start. Must
+ // be called from the controller thread.
+ void Notify() {
+ pthread_mutex_lock(&mutex_);
+ notified_ = true;
+ pthread_mutex_unlock(&mutex_);
+ }
+
+ // Blocks until the controller thread notifies. Must be called from a test
+ // thread.
+ void WaitForNotification() {
+ for (;;) {
+ pthread_mutex_lock(&mutex_);
+ const bool notified = notified_;
+ pthread_mutex_unlock(&mutex_);
+ if (notified)
+ break;
+ SleepMilliseconds(10);
+ }
+ }
+
+ private:
+ pthread_mutex_t mutex_;
+ bool notified_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
+};
+
+// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
+// Consequently, it cannot select a correct instantiation of ThreadWithParam
+// in order to call its Run(). Introducing ThreadWithParamBase as a
+// non-templated base class for ThreadWithParam allows us to bypass this
+// problem.
+class ThreadWithParamBase {
+ public:
+ virtual ~ThreadWithParamBase() {}
+ virtual void Run() = 0;
+};
+
+// pthread_create() accepts a pointer to a function type with the C linkage.
+// According to the Standard (7.5/1), function types with different linkages
+// are different even if they are otherwise identical. Some compilers (for
+// example, SunStudio) treat them as different types. Since class methods
+// cannot be defined with C-linkage we need to define a free C-function to
+// pass into pthread_create().
+extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
+ static_cast<ThreadWithParamBase*>(thread)->Run();
+ return NULL;
+}
+
+// Helper class for testing Google Test's multi-threading constructs.
+// To use it, write:
+//
+// void ThreadFunc(int param) { /* Do things with param */ }
+// Notification thread_can_start;
+// ...
+// // The thread_can_start parameter is optional; you can supply NULL.
+// ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
+// thread_can_start.Notify();
+//
+// These classes are only for testing Google Test's own constructs. Do
+// not use them in user tests, either directly or indirectly.
+template <typename T>
+class ThreadWithParam : public ThreadWithParamBase {
+ public:
+ typedef void (*UserThreadFunc)(T);
+
+ ThreadWithParam(
+ UserThreadFunc func, T param, Notification* thread_can_start)
+ : func_(func),
+ param_(param),
+ thread_can_start_(thread_can_start),
+ finished_(false) {
+ ThreadWithParamBase* const base = this;
+ // The thread can be created only after all fields except thread_
+ // have been initialized.
+ GTEST_CHECK_POSIX_SUCCESS_(
+ pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));
+ }
+ ~ThreadWithParam() { Join(); }
+
+ void Join() {
+ if (!finished_) {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0));
+ finished_ = true;
+ }
+ }
+
+ virtual void Run() {
+ if (thread_can_start_ != NULL)
+ thread_can_start_->WaitForNotification();
+ func_(param_);
+ }
+
+ private:
+ const UserThreadFunc func_; // User-supplied thread function.
+ const T param_; // User-supplied parameter to the thread function.
+ // When non-NULL, used to block execution until the controller thread
+ // notifies.
+ Notification* const thread_can_start_;
+ bool finished_; // true iff we know that the thread function has finished.
+ pthread_t thread_; // The native thread object.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
+};
+
+// MutexBase and Mutex implement mutex on pthreads-based platforms. They
+// are used in conjunction with class MutexLock:
+//
+// Mutex mutex;
+// ...
+// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end
+// // of the current scope.
+//
+// MutexBase implements behavior for both statically and dynamically
+// allocated mutexes. Do not use MutexBase directly. Instead, write
+// the following to define a static mutex:
+//
+// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
+//
+// You can forward declare a static mutex like this:
+//
+// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
+//
+// To create a dynamic mutex, just define an object of type Mutex.
+class MutexBase {
+ public:
+ // Acquires this mutex.
+ void Lock() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
+ owner_ = pthread_self();
+ has_owner_ = true;
+ }
+
+ // Releases this mutex.
+ void Unlock() {
+ // Since the lock is being released the owner_ field should no longer be
+ // considered valid. We don't protect writing to has_owner_ here, as it's
+ // the caller's responsibility to ensure that the current thread holds the
+ // mutex when this is called.
+ has_owner_ = false;
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
+ }
+
+ // Does nothing if the current thread holds the mutex. Otherwise, crashes
+ // with high probability.
+ void AssertHeld() const {
+ GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
+ << "The current thread is not holding the mutex @" << this;
+ }
+
+ // A static mutex may be used before main() is entered. It may even
+ // be used before the dynamic initialization stage. Therefore we
+ // must be able to initialize a static mutex object at link time.
+ // This means MutexBase has to be a POD and its member variables
+ // have to be public.
+ public:
+ pthread_mutex_t mutex_; // The underlying pthread mutex.
+ // has_owner_ indicates whether the owner_ field below contains a valid thread
+ // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
+ // accesses to the owner_ field should be protected by a check of this field.
+ // An alternative might be to memset() owner_ to all zeros, but there's no
+ // guarantee that a zero'd pthread_t is necessarily invalid or even different
+ // from pthread_self().
+ bool has_owner_;
+ pthread_t owner_; // The thread holding the mutex.
+};
+
+// Forward-declares a static mutex.
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::MutexBase mutex
+
+// Defines and statically (i.e. at link time) initializes a static mutex.
+// The initialization list here does not explicitly initialize each field,
+// instead relying on default initialization for the unspecified fields. In
+// particular, the owner_ field (a pthread_t) is not explicitly initialized.
+// This allows initialization to work whether pthread_t is a scalar or struct.
+// The flag -Wmissing-field-initializers must not be specified for this to work.
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
+ ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false }
+
+// The Mutex class can only be used for mutexes created at runtime. It
+// shares its API with MutexBase otherwise.
+class Mutex : public MutexBase {
+ public:
+ Mutex() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
+ has_owner_ = false;
+ }
+ ~Mutex() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
+ }
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
+};
+
+// We cannot name this class MutexLock as the ctor declaration would
+// conflict with a macro named MutexLock, which is defined on some
+// platforms. Hence the typedef trick below.
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(MutexBase* mutex)
+ : mutex_(mutex) { mutex_->Lock(); }
+
+ ~GTestMutexLock() { mutex_->Unlock(); }
+
+ private:
+ MutexBase* const mutex_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
+};
+
+typedef GTestMutexLock MutexLock;
+
+// Helpers for ThreadLocal.
+
+// pthread_key_create() requires DeleteThreadLocalValue() to have
+// C-linkage. Therefore it cannot be templatized to access
+// ThreadLocal<T>. Hence the need for class
+// ThreadLocalValueHolderBase.
+class ThreadLocalValueHolderBase {
+ public:
+ virtual ~ThreadLocalValueHolderBase() {}
+};
+
+// Called by pthread to delete thread-local data stored by
+// pthread_setspecific().
+extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
+ delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
+}
+
+// Implements thread-local storage on pthreads-based systems.
+//
+// // Thread 1
+// ThreadLocal<int> tl(100); // 100 is the default value for each thread.
+//
+// // Thread 2
+// tl.set(150); // Changes the value for thread 2 only.
+// EXPECT_EQ(150, tl.get());
+//
+// // Thread 1
+// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
+// tl.set(200);
+// EXPECT_EQ(200, tl.get());
+//
+// The template type argument T must have a public copy constructor.
+// In addition, the default ThreadLocal constructor requires T to have
+// a public default constructor.
+//
+// An object managed for a thread by a ThreadLocal instance is deleted
+// when the thread exits. Or, if the ThreadLocal instance dies in
+// that thread, when the ThreadLocal dies. It's the user's
+// responsibility to ensure that all other threads using a ThreadLocal
+// have exited when it dies, or the per-thread objects for those
+// threads will not be deleted.
+//
+// Google Test only uses global ThreadLocal objects. That means they
+// will die after main() has returned. Therefore, no per-thread
+// object managed by Google Test will be leaked as long as all threads
+// using Google Test have exited when main() returns.
+template <typename T>
+class ThreadLocal {
+ public:
+ ThreadLocal() : key_(CreateKey()),
+ default_() {}
+ explicit ThreadLocal(const T& value) : key_(CreateKey()),
+ default_(value) {}
+
+ ~ThreadLocal() {
+ // Destroys the managed object for the current thread, if any.
+ DeleteThreadLocalValue(pthread_getspecific(key_));
+
+ // Releases resources associated with the key. This will *not*
+ // delete managed objects for other threads.
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
+ }
+
+ T* pointer() { return GetOrCreateValue(); }
+ const T* pointer() const { return GetOrCreateValue(); }
+ const T& get() const { return *pointer(); }
+ void set(const T& value) { *pointer() = value; }
+
+ private:
+ // Holds a value of type T.
+ class ValueHolder : public ThreadLocalValueHolderBase {
+ public:
+ explicit ValueHolder(const T& value) : value_(value) {}
+
+ T* pointer() { return &value_; }
+
+ private:
+ T value_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
+ };
+
+ static pthread_key_t CreateKey() {
+ pthread_key_t key;
+ // When a thread exits, DeleteThreadLocalValue() will be called on
+ // the object managed for that thread.
+ GTEST_CHECK_POSIX_SUCCESS_(
+ pthread_key_create(&key, &DeleteThreadLocalValue));
+ return key;
+ }
+
+ T* GetOrCreateValue() const {
+ ThreadLocalValueHolderBase* const holder =
+ static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
+ if (holder != NULL) {
+ return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
+ }
+
+ ValueHolder* const new_holder = new ValueHolder(default_);
+ ThreadLocalValueHolderBase* const holder_base = new_holder;
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
+ return new_holder->pointer();
+ }
+
+ // A key pthreads uses for looking up per-thread values.
+ const pthread_key_t key_;
+ const T default_; // The default value for each thread.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
+};
+
+# define GTEST_IS_THREADSAFE 1
+
+#else // GTEST_HAS_PTHREAD
+
+// A dummy implementation of synchronization primitives (mutex, lock,
+// and thread-local variable). Necessary for compiling Google Test where
+// mutex is not supported - using Google Test in multiple threads is not
+// supported on such platforms.
+
+class Mutex {
+ public:
+ Mutex() {}
+ void Lock() {}
+ void Unlock() {}
+ void AssertHeld() const {}
+};
+
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::Mutex mutex
+
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
+
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(Mutex*) {} // NOLINT
+};
+
+typedef GTestMutexLock MutexLock;
+
+template <typename T>
+class ThreadLocal {
+ public:
+ ThreadLocal() : value_() {}
+ explicit ThreadLocal(const T& value) : value_(value) {}
+ T* pointer() { return &value_; }
+ const T* pointer() const { return &value_; }
+ const T& get() const { return value_; }
+ void set(const T& value) { value_ = value; }
+ private:
+ T value_;
+};
+
+// The above synchronization primitives have dummy implementations.
+// Therefore Google Test is not thread-safe.
+# define GTEST_IS_THREADSAFE 0
+
+#endif // GTEST_HAS_PTHREAD
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+GTEST_API_ size_t GetThreadCount();
+
+// Passing non-POD classes through ellipsis (...) crashes the ARM
+// compiler and generates a warning in Sun Studio. The Nokia Symbian
+// and the IBM XL C/C++ compiler try to instantiate a copy constructor
+// for objects passed through ellipsis (...), failing for uncopyable
+// objects. We define this to ensure that only POD is passed through
+// ellipsis on these systems.
+#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
+// We lose support for NULL detection where the compiler doesn't like
+// passing non-POD classes through ellipsis (...).
+# define GTEST_ELLIPSIS_NEEDS_POD_ 1
+#else
+# define GTEST_CAN_COMPARE_NULL 1
+#endif
+
+// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between
+// const T& and const T* in a function template. These compilers
+// _can_ decide between class template specializations for T and T*,
+// so a tr1::type_traits-like is_pointer works.
+#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
+# define GTEST_NEEDS_IS_POINTER_ 1
+#endif
+
+template <bool bool_value>
+struct bool_constant {
+ typedef bool_constant<bool_value> type;
+ static const bool value = bool_value;
+};
+template <bool bool_value> const bool bool_constant<bool_value>::value;
+
+typedef bool_constant<false> false_type;
+typedef bool_constant<true> true_type;
+
+template <typename T>
+struct is_pointer : public false_type {};
+
+template <typename T>
+struct is_pointer<T*> : public true_type {};
+
+template <typename Iterator>
+struct IteratorTraits {
+ typedef typename Iterator::value_type value_type;
+};
+
+template <typename T>
+struct IteratorTraits<T*> {
+ typedef T value_type;
+};
+
+template <typename T>
+struct IteratorTraits<const T*> {
+ typedef T value_type;
+};
+
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_SEP_ "\\"
+# define GTEST_HAS_ALT_PATH_SEP_ 1
+// The biggest signed integer type the compiler supports.
+typedef __int64 BiggestInt;
+#else
+# define GTEST_PATH_SEP_ "/"
+# define GTEST_HAS_ALT_PATH_SEP_ 0
+typedef long long BiggestInt; // NOLINT
+#endif // GTEST_OS_WINDOWS
+
+// Utilities for char.
+
+// isspace(int ch) and friends accept an unsigned char or EOF. char
+// may be signed, depending on the compiler (or compiler flags).
+// Therefore we need to cast a char to unsigned char before calling
+// isspace(), etc.
+
+inline bool IsAlpha(char ch) {
+ return isalpha(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsAlNum(char ch) {
+ return isalnum(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsDigit(char ch) {
+ return isdigit(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsLower(char ch) {
+ return islower(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsSpace(char ch) {
+ return isspace(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsUpper(char ch) {
+ return isupper(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsXDigit(char ch) {
+ return isxdigit(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsXDigit(wchar_t ch) {
+ const unsigned char low_byte = static_cast<unsigned char>(ch);
+ return ch == low_byte && isxdigit(low_byte) != 0;
+}
+
+inline char ToLower(char ch) {
+ return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
+}
+inline char ToUpper(char ch) {
+ return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
+}
+
+// The testing::internal::posix namespace holds wrappers for common
+// POSIX functions. These wrappers hide the differences between
+// Windows/MSVC and POSIX systems. Since some compilers define these
+// standard functions as macros, the wrapper cannot have the same name
+// as the wrapped function.
+
+namespace posix {
+
+// Functions with a different name on Windows.
+
+#if GTEST_OS_WINDOWS
+
+typedef struct _stat StatStruct;
+
+# ifdef __BORLANDC__
+inline int IsATTY(int fd) { return isatty(fd); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+# else // !__BORLANDC__
+# if GTEST_OS_WINDOWS_MOBILE
+inline int IsATTY(int /* fd */) { return 0; }
+# else
+inline int IsATTY(int fd) { return _isatty(fd); }
+# endif // GTEST_OS_WINDOWS_MOBILE
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return _stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return _strdup(src); }
+# endif // __BORLANDC__
+
+# if GTEST_OS_WINDOWS_MOBILE
+inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
+// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
+// time and thus not defined there.
+# else
+inline int FileNo(FILE* file) { return _fileno(file); }
+inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
+inline int RmDir(const char* dir) { return _rmdir(dir); }
+inline bool IsDir(const StatStruct& st) {
+ return (_S_IFDIR & st.st_mode) != 0;
+}
+# endif // GTEST_OS_WINDOWS_MOBILE
+
+#else
+
+typedef struct stat StatStruct;
+
+inline int FileNo(FILE* file) { return fileno(file); }
+inline int IsATTY(int fd) { return isatty(fd); }
+inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return strcasecmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+inline int RmDir(const char* dir) { return rmdir(dir); }
+inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
+
+#endif // GTEST_OS_WINDOWS
+
+// Functions deprecated by MSVC 8.0.
+
+#ifdef _MSC_VER
+// Temporarily disable warning 4996 (deprecated function).
+# pragma warning(push)
+# pragma warning(disable:4996)
+#endif
+
+inline const char* StrNCpy(char* dest, const char* src, size_t n) {
+ return strncpy(dest, src, n);
+}
+
+// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
+// StrError() aren't needed on Windows CE at this time and thus not
+// defined there.
+
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int ChDir(const char* dir) { return chdir(dir); }
+#endif
+inline FILE* FOpen(const char* path, const char* mode) {
+ return fopen(path, mode);
+}
+#if !GTEST_OS_WINDOWS_MOBILE
+inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
+ return freopen(path, mode, stream);
+}
+inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
+#endif
+inline int FClose(FILE* fp) { return fclose(fp); }
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int Read(int fd, void* buf, unsigned int count) {
+ return static_cast<int>(read(fd, buf, count));
+}
+inline int Write(int fd, const void* buf, unsigned int count) {
+ return static_cast<int>(write(fd, buf, count));
+}
+inline int Close(int fd) { return close(fd); }
+inline const char* StrError(int errnum) { return strerror(errnum); }
+#endif
+inline const char* GetEnv(const char* name) {
+#if GTEST_OS_WINDOWS_MOBILE
+ // We are on Windows CE, which has no environment variables.
+ return NULL;
+#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
+ // Environment variables which we programmatically clear will be set to the
+ // empty string rather than unset (NULL). Handle that case.
+ const char* const env = getenv(name);
+ return (env != NULL && env[0] != '\0') ? env : NULL;
+#else
+ return getenv(name);
+#endif
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Windows CE has no C library. The abort() function is used in
+// several places in Google Test. This implementation provides a reasonable
+// imitation of standard behaviour.
+void Abort();
+#else
+inline void Abort() { abort(); }
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+} // namespace posix
+
+// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
+// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
+// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
+// function in order to achieve that. We use macro definition here because
+// snprintf is a variadic function.
+#if defined(_MSC_VER) && _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
+// MSVC 2005 and above support variadic macros.
+# define GTEST_SNPRINTF_(buffer, size, format, ...) \
+ _snprintf_s(buffer, size, size, format, __VA_ARGS__)
+#elif defined(_MSC_VER)
+// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't
+// complain about _snprintf.
+# define GTEST_SNPRINTF_ _snprintf
+#else
+# define GTEST_SNPRINTF_ snprintf
+#endif
+
+// The maximum number a BiggestInt can represent. This definition
+// works no matter BiggestInt is represented in one's complement or
+// two's complement.
+//
+// We cannot rely on numeric_limits in STL, as __int64 and long long
+// are not part of standard C++ and numeric_limits doesn't need to be
+// defined for them.
+const BiggestInt kMaxBiggestInt =
+ ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
+
+// This template class serves as a compile-time function from size to
+// type. It maps a size in bytes to a primitive type with that
+// size. e.g.
+//
+// TypeWithSize<4>::UInt
+//
+// is typedef-ed to be unsigned int (unsigned integer made up of 4
+// bytes).
+//
+// Such functionality should belong to STL, but I cannot find it
+// there.
+//
+// Google Test uses this class in the implementation of floating-point
+// comparison.
+//
+// For now it only handles UInt (unsigned int) as that's all Google Test
+// needs. Other types can be easily added in the future if need
+// arises.
+template <size_t size>
+class TypeWithSize {
+ public:
+ // This prevents the user from using TypeWithSize<N> with incorrect
+ // values of N.
+ typedef void UInt;
+};
+
+// The specialization for size 4.
+template <>
+class TypeWithSize<4> {
+ public:
+ // unsigned int has size 4 in both gcc and MSVC.
+ //
+ // As base/basictypes.h doesn't compile on Windows, we cannot use
+ // uint32, uint64, and etc here.
+ typedef int Int;
+ typedef unsigned int UInt;
+};
+
+// The specialization for size 8.
+template <>
+class TypeWithSize<8> {
+ public:
+#if GTEST_OS_WINDOWS
+ typedef __int64 Int;
+ typedef unsigned __int64 UInt;
+#else
+ typedef long long Int; // NOLINT
+ typedef unsigned long long UInt; // NOLINT
+#endif // GTEST_OS_WINDOWS
+};
+
+// Integer types of known sizes.
+typedef TypeWithSize<4>::Int Int32;
+typedef TypeWithSize<4>::UInt UInt32;
+typedef TypeWithSize<8>::Int Int64;
+typedef TypeWithSize<8>::UInt UInt64;
+typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
+
+// Utilities for command line flags and environment variables.
+
+// Macro for referencing flags.
+#define GTEST_FLAG(name) FLAGS_gtest_##name
+
+// Macros for declaring flags.
+#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
+#define GTEST_DECLARE_int32_(name) \
+ GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
+#define GTEST_DECLARE_string_(name) \
+ GTEST_API_ extern ::std::string GTEST_FLAG(name)
+
+// Macros for defining flags.
+#define GTEST_DEFINE_bool_(name, default_val, doc) \
+ GTEST_API_ bool GTEST_FLAG(name) = (default_val)
+#define GTEST_DEFINE_int32_(name, default_val, doc) \
+ GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
+#define GTEST_DEFINE_string_(name, default_val, doc) \
+ GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
+
+// Thread annotations
+#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
+#define GTEST_LOCK_EXCLUDED_(locks)
+
+// Parses 'str' for a 32-bit signed integer. If successful, writes the result
+// to *value and returns true; otherwise leaves *value unchanged and returns
+// false.
+// TODO(chandlerc): Find a better way to refactor flag and environment parsing
+// out of both gtest-port.cc and gtest.cc to avoid exporting this utility
+// function.
+bool ParseInt32(const Message& src_text, const char* str, Int32* value);
+
+// Parses a bool/Int32/string from the environment variable
+// corresponding to the given Google Test flag.
+bool BoolFromGTestEnv(const char* flag, bool default_val);
+GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
+const char* StringFromGTestEnv(const char* flag, const char* default_val);
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+
+#if GTEST_OS_LINUX
+# include <stdlib.h>
+# include <sys/types.h>
+# include <sys/wait.h>
+# include <unistd.h>
+#endif // GTEST_OS_LINUX
+
+#if GTEST_HAS_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#include <ctype.h>
+#include <float.h>
+#include <string.h>
+#include <iomanip>
+#include <limits>
+#include <set>
+
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the Message class.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
+// program!
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+
+#include <limits>
+
+
+// Ensures that there is at least one operator<< in the global namespace.
+// See Message& operator<<(...) below for why.
+void operator<<(const testing::internal::Secret&, int);
+
+namespace testing {
+
+// The Message class works like an ostream repeater.
+//
+// Typical usage:
+//
+// 1. You stream a bunch of values to a Message object.
+// It will remember the text in a stringstream.
+// 2. Then you stream the Message object to an ostream.
+// This causes the text in the Message to be streamed
+// to the ostream.
+//
+// For example;
+//
+// testing::Message foo;
+// foo << 1 << " != " << 2;
+// std::cout << foo;
+//
+// will print "1 != 2".
+//
+// Message is not intended to be inherited from. In particular, its
+// destructor is not virtual.
+//
+// Note that stringstream behaves differently in gcc and in MSVC. You
+// can stream a NULL char pointer to it in the former, but not in the
+// latter (it causes an access violation if you do). The Message
+// class hides this difference by treating a NULL char pointer as
+// "(null)".
+class GTEST_API_ Message {
+ private:
+ // The type of basic IO manipulators (endl, ends, and flush) for
+ // narrow streams.
+ typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
+
+ public:
+ // Constructs an empty Message.
+ Message();
+
+ // Copy constructor.
+ Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
+ *ss_ << msg.GetString();
+ }
+
+ // Constructs a Message from a C-string.
+ explicit Message(const char* str) : ss_(new ::std::stringstream) {
+ *ss_ << str;
+ }
+
+#if GTEST_OS_SYMBIAN
+ // Streams a value (either a pointer or not) to this object.
+ template <typename T>
+ inline Message& operator <<(const T& value) {
+ StreamHelper(typename internal::is_pointer<T>::type(), value);
+ return *this;
+ }
+#else
+ // Streams a non-pointer value to this object.
+ template <typename T>
+ inline Message& operator <<(const T& val) {
+ // Some libraries overload << for STL containers. These
+ // overloads are defined in the global namespace instead of ::std.
+ //
+ // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
+ // overloads are visible in either the std namespace or the global
+ // namespace, but not other namespaces, including the testing
+ // namespace which Google Test's Message class is in.
+ //
+ // To allow STL containers (and other types that has a << operator
+ // defined in the global namespace) to be used in Google Test
+ // assertions, testing::Message must access the custom << operator
+ // from the global namespace. With this using declaration,
+ // overloads of << defined in the global namespace and those
+ // visible via Koenig lookup are both exposed in this function.
+ using ::operator <<;
+ *ss_ << val;
+ return *this;
+ }
+
+ // Streams a pointer value to this object.
+ //
+ // This function is an overload of the previous one. When you
+ // stream a pointer to a Message, this definition will be used as it
+ // is more specialized. (The C++ Standard, section
+ // [temp.func.order].) If you stream a non-pointer, then the
+ // previous definition will be used.
+ //
+ // The reason for this overload is that streaming a NULL pointer to
+ // ostream is undefined behavior. Depending on the compiler, you
+ // may get "0", "(nil)", "(null)", or an access violation. To
+ // ensure consistent result across compilers, we always treat NULL
+ // as "(null)".
+ template <typename T>
+ inline Message& operator <<(T* const& pointer) { // NOLINT
+ if (pointer == NULL) {
+ *ss_ << "(null)";
+ } else {
+ *ss_ << pointer;
+ }
+ return *this;
+ }
+#endif // GTEST_OS_SYMBIAN
+
+ // Since the basic IO manipulators are overloaded for both narrow
+ // and wide streams, we have to provide this specialized definition
+ // of operator <<, even though its body is the same as the
+ // templatized version above. Without this definition, streaming
+ // endl or other basic IO manipulators to Message will confuse the
+ // compiler.
+ Message& operator <<(BasicNarrowIoManip val) {
+ *ss_ << val;
+ return *this;
+ }
+
+ // Instead of 1/0, we want to see true/false for bool values.
+ Message& operator <<(bool b) {
+ return *this << (b ? "true" : "false");
+ }
+
+ // These two overloads allow streaming a wide C string to a Message
+ // using the UTF-8 encoding.
+ Message& operator <<(const wchar_t* wide_c_str);
+ Message& operator <<(wchar_t* wide_c_str);
+
+#if GTEST_HAS_STD_WSTRING
+ // Converts the given wide string to a narrow string using the UTF-8
+ // encoding, and streams the result to this Message object.
+ Message& operator <<(const ::std::wstring& wstr);
+#endif // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+ // Converts the given wide string to a narrow string using the UTF-8
+ // encoding, and streams the result to this Message object.
+ Message& operator <<(const ::wstring& wstr);
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+ // Gets the text streamed to this object so far as an std::string.
+ // Each '\0' character in the buffer is replaced with "\\0".
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ std::string GetString() const;
+
+ private:
+
+#if GTEST_OS_SYMBIAN
+ // These are needed as the Nokia Symbian Compiler cannot decide between
+ // const T& and const T* in a function template. The Nokia compiler _can_
+ // decide between class template specializations for T and T*, so a
+ // tr1::type_traits-like is_pointer works, and we can overload on that.
+ template <typename T>
+ inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) {
+ if (pointer == NULL) {
+ *ss_ << "(null)";
+ } else {
+ *ss_ << pointer;
+ }
+ }
+ template <typename T>
+ inline void StreamHelper(internal::false_type /*is_pointer*/,
+ const T& value) {
+ // See the comments in Message& operator <<(const T&) above for why
+ // we need this using statement.
+ using ::operator <<;
+ *ss_ << value;
+ }
+#endif // GTEST_OS_SYMBIAN
+
+ // We'll hold the text streamed to this object here.
+ const internal::scoped_ptr< ::std::stringstream> ss_;
+
+ // We declare (but don't implement) this to prevent the compiler
+ // from implementing the assignment operator.
+ void operator=(const Message&);
+};
+
+// Streams a Message to an ostream.
+inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
+ return os << sb.GetString();
+}
+
+namespace internal {
+
+// Converts a streamable value to an std::string. A NULL pointer is
+// converted to "(null)". When the input value is a ::string,
+// ::std::string, ::wstring, or ::std::wstring object, each NUL
+// character in it is replaced with "\\0".
+template <typename T>
+std::string StreamableToString(const T& streamable) {
+ return (Message() << streamable).GetString();
+}
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file declares the String class and functions used internally by
+// Google Test. They are subject to change without notice. They should not used
+// by code external to Google Test.
+//
+// This header file is #included by <gtest/internal/gtest-internal.h>.
+// It should not be #included by other files.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+
+#ifdef __BORLANDC__
+// string.h is not guaranteed to provide strcpy on C++ Builder.
+# include <mem.h>
+#endif
+
+#include <string.h>
+#include <string>
+
+
+namespace testing {
+namespace internal {
+
+// String - an abstract class holding static string utilities.
+class GTEST_API_ String {
+ public:
+ // Static utility methods
+
+ // Clones a 0-terminated C string, allocating memory using new. The
+ // caller is responsible for deleting the return value using
+ // delete[]. Returns the cloned string, or NULL if the input is
+ // NULL.
+ //
+ // This is different from strdup() in string.h, which allocates
+ // memory using malloc().
+ static const char* CloneCString(const char* c_str);
+
+#if GTEST_OS_WINDOWS_MOBILE
+ // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
+ // able to pass strings to Win32 APIs on CE we need to convert them
+ // to 'Unicode', UTF-16.
+
+ // Creates a UTF-16 wide string from the given ANSI string, allocating
+ // memory using new. The caller is responsible for deleting the return
+ // value using delete[]. Returns the wide string, or NULL if the
+ // input is NULL.
+ //
+ // The wide string is created using the ANSI codepage (CP_ACP) to
+ // match the behaviour of the ANSI versions of Win32 calls and the
+ // C runtime.
+ static LPCWSTR AnsiToUtf16(const char* c_str);
+
+ // Creates an ANSI string from the given wide string, allocating
+ // memory using new. The caller is responsible for deleting the return
+ // value using delete[]. Returns the ANSI string, or NULL if the
+ // input is NULL.
+ //
+ // The returned string is created using the ANSI codepage (CP_ACP) to
+ // match the behaviour of the ANSI versions of Win32 calls and the
+ // C runtime.
+ static const char* Utf16ToAnsi(LPCWSTR utf16_str);
+#endif
+
+ // Compares two C strings. Returns true iff they have the same content.
+ //
+ // Unlike strcmp(), this function can handle NULL argument(s). A
+ // NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool CStringEquals(const char* lhs, const char* rhs);
+
+ // Converts a wide C string to a String using the UTF-8 encoding.
+ // NULL will be converted to "(null)". If an error occurred during
+ // the conversion, "(failed to convert from wide string)" is
+ // returned.
+ static std::string ShowWideCString(const wchar_t* wide_c_str);
+
+ // Compares two wide C strings. Returns true iff they have the same
+ // content.
+ //
+ // Unlike wcscmp(), this function can handle NULL argument(s). A
+ // NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
+
+ // Compares two C strings, ignoring case. Returns true iff they
+ // have the same content.
+ //
+ // Unlike strcasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool CaseInsensitiveCStringEquals(const char* lhs,
+ const char* rhs);
+
+ // Compares two wide C strings, ignoring case. Returns true iff they
+ // have the same content.
+ //
+ // Unlike wcscasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL wide C string,
+ // including the empty string.
+ // NB: The implementations on different platforms slightly differ.
+ // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
+ // environment variable. On GNU platform this method uses wcscasecmp
+ // which compares according to LC_CTYPE category of the current locale.
+ // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
+ // current locale.
+ static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+ const wchar_t* rhs);
+
+ // Returns true iff the given string ends with the given suffix, ignoring
+ // case. Any string is considered to end with an empty suffix.
+ static bool EndsWithCaseInsensitive(
+ const std::string& str, const std::string& suffix);
+
+ // Formats an int value as "%02d".
+ static std::string FormatIntWidth2(int value); // "%02d" for width == 2
+
+ // Formats an int value as "%X".
+ static std::string FormatHexInt(int value);
+
+ // Formats a byte as "%02X".
+ static std::string FormatByte(unsigned char value);
+
+ private:
+ String(); // Not meant to be instantiated.
+}; // class String
+
+// Gets the content of the stringstream's buffer as an std::string. Each '\0'
+// character in the buffer is replaced with "\\0".
+GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: keith.ray@gmail.com (Keith Ray)
+//
+// Google Test filepath utilities
+//
+// This header file declares classes and functions used internally by
+// Google Test. They are subject to change without notice.
+//
+// This file is #included in <gtest/internal/gtest-internal.h>.
+// Do not include this header file separately!
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+
+
+namespace testing {
+namespace internal {
+
+// FilePath - a class for file and directory pathname manipulation which
+// handles platform-specific conventions (like the pathname separator).
+// Used for helper functions for naming files in a directory for xml output.
+// Except for Set methods, all methods are const or static, which provides an
+// "immutable value object" -- useful for peace of mind.
+// A FilePath with a value ending in a path separator ("like/this/") represents
+// a directory, otherwise it is assumed to represent a file. In either case,
+// it may or may not represent an actual file or directory in the file system.
+// Names are NOT checked for syntax correctness -- no checking for illegal
+// characters, malformed paths, etc.
+
+class GTEST_API_ FilePath {
+ public:
+ FilePath() : pathname_("") { }
+ FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
+
+ explicit FilePath(const std::string& pathname) : pathname_(pathname) {
+ Normalize();
+ }
+
+ FilePath& operator=(const FilePath& rhs) {
+ Set(rhs);
+ return *this;
+ }
+
+ void Set(const FilePath& rhs) {
+ pathname_ = rhs.pathname_;
+ }
+
+ const std::string& string() const { return pathname_; }
+ const char* c_str() const { return pathname_.c_str(); }
+
+ // Returns the current working directory, or "" if unsuccessful.
+ static FilePath GetCurrentDir();
+
+ // Given directory = "dir", base_name = "test", number = 0,
+ // extension = "xml", returns "dir/test.xml". If number is greater
+ // than zero (e.g., 12), returns "dir/test_12.xml".
+ // On Windows platform, uses \ as the separator rather than /.
+ static FilePath MakeFileName(const FilePath& directory,
+ const FilePath& base_name,
+ int number,
+ const char* extension);
+
+ // Given directory = "dir", relative_path = "test.xml",
+ // returns "dir/test.xml".
+ // On Windows, uses \ as the separator rather than /.
+ static FilePath ConcatPaths(const FilePath& directory,
+ const FilePath& relative_path);
+
+ // Returns a pathname for a file that does not currently exist. The pathname
+ // will be directory/base_name.extension or
+ // directory/base_name_<number>.extension if directory/base_name.extension
+ // already exists. The number will be incremented until a pathname is found
+ // that does not already exist.
+ // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+ // There could be a race condition if two or more processes are calling this
+ // function at the same time -- they could both pick the same filename.
+ static FilePath GenerateUniqueFileName(const FilePath& directory,
+ const FilePath& base_name,
+ const char* extension);
+
+ // Returns true iff the path is "".
+ bool IsEmpty() const { return pathname_.empty(); }
+
+ // If input name has a trailing separator character, removes it and returns
+ // the name, otherwise return the name string unmodified.
+ // On Windows platform, uses \ as the separator, other platforms use /.
+ FilePath RemoveTrailingPathSeparator() const;
+
+ // Returns a copy of the FilePath with the directory part removed.
+ // Example: FilePath("path/to/file").RemoveDirectoryName() returns
+ // FilePath("file"). If there is no directory part ("just_a_file"), it returns
+ // the FilePath unmodified. If there is no file part ("just_a_dir/") it
+ // returns an empty FilePath ("").
+ // On Windows platform, '\' is the path separator, otherwise it is '/'.
+ FilePath RemoveDirectoryName() const;
+
+ // RemoveFileName returns the directory path with the filename removed.
+ // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+ // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+ // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+ // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+ // On Windows platform, '\' is the path separator, otherwise it is '/'.
+ FilePath RemoveFileName() const;
+
+ // Returns a copy of the FilePath with the case-insensitive extension removed.
+ // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+ // FilePath("dir/file"). If a case-insensitive extension is not
+ // found, returns a copy of the original FilePath.
+ FilePath RemoveExtension(const char* extension) const;
+
+ // Creates directories so that path exists. Returns true if successful or if
+ // the directories already exist; returns false if unable to create
+ // directories for any reason. Will also return false if the FilePath does
+ // not represent a directory (that is, it doesn't end with a path separator).
+ bool CreateDirectoriesRecursively() const;
+
+ // Create the directory so that path exists. Returns true if successful or
+ // if the directory already exists; returns false if unable to create the
+ // directory for any reason, including if the parent directory does not
+ // exist. Not named "CreateDirectory" because that's a macro on Windows.
+ bool CreateFolder() const;
+
+ // Returns true if FilePath describes something in the file-system,
+ // either a file, directory, or whatever, and that something exists.
+ bool FileOrDirectoryExists() const;
+
+ // Returns true if pathname describes a directory in the file-system
+ // that exists.
+ bool DirectoryExists() const;
+
+ // Returns true if FilePath ends with a path separator, which indicates that
+ // it is intended to represent a directory. Returns false otherwise.
+ // This does NOT check that a directory (or file) actually exists.
+ bool IsDirectory() const;
+
+ // Returns true if pathname describes a root directory. (Windows has one
+ // root directory per disk drive.)
+ bool IsRootDirectory() const;
+
+ // Returns true if pathname describes an absolute path.
+ bool IsAbsolutePath() const;
+
+ private:
+ // Replaces multiple consecutive separators with a single separator.
+ // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+ // redundancies that might be in a pathname involving "." or "..".
+ //
+ // A pathname with multiple consecutive separators may occur either through
+ // user error or as a result of some scripts or APIs that generate a pathname
+ // with a trailing separator. On other platforms the same API or script
+ // may NOT generate a pathname with a trailing "/". Then elsewhere that
+ // pathname may have another "/" and pathname components added to it,
+ // without checking for the separator already being there.
+ // The script language and operating system may allow paths like "foo//bar"
+ // but some of the functions in FilePath will not handle that correctly. In
+ // particular, RemoveTrailingPathSeparator() only removes one separator, and
+ // it is called in CreateDirectoriesRecursively() assuming that it will change
+ // a pathname from directory syntax (trailing separator) to filename syntax.
+ //
+ // On Windows this method also replaces the alternate path separator '/' with
+ // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
+ // "bar\\foo".
+
+ void Normalize();
+
+ // Returns a pointer to the last occurence of a valid path separator in
+ // the FilePath. On Windows, for example, both '/' and '\' are valid path
+ // separators. Returns NULL if no path separator was found.
+ const char* FindLastPathSeparator() const;
+
+ std::string pathname_;
+}; // class FilePath
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+// This file was GENERATED by command:
+// pump.py gtest-type-util.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Type utilities needed for implementing typed and type-parameterized
+// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+// Currently we support at most 50 types in a list, and at most 50
+// type-parameterized tests in one type-parameterized test case.
+// Please contact googletestframework@googlegroups.com if you need
+// more.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+
+// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
+// libstdc++ (which is where cxxabi.h comes from).
+# if GTEST_HAS_CXXABI_H_
+# include <cxxabi.h>
+# elif defined(__HP_aCC)
+# include <acxx_demangle.h>
+# endif // GTEST_HASH_CXXABI_H_
+
+namespace testing {
+namespace internal {
+
+// GetTypeName<T>() returns a human-readable name of type T.
+// NB: This function is also used in Google Mock, so don't move it inside of
+// the typed-test-only section below.
+template <typename T>
+std::string GetTypeName() {
+# if GTEST_HAS_RTTI
+
+ const char* const name = typeid(T).name();
+# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
+ int status = 0;
+ // gcc's implementation of typeid(T).name() mangles the type name,
+ // so we have to demangle it.
+# if GTEST_HAS_CXXABI_H_
+ using abi::__cxa_demangle;
+# endif // GTEST_HAS_CXXABI_H_
+ char* const readable_name = __cxa_demangle(name, 0, 0, &status);
+ const std::string name_str(status == 0 ? readable_name : name);
+ free(readable_name);
+ return name_str;
+# else
+ return name;
+# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
+
+# else
+
+ return "<type>";
+
+# endif // GTEST_HAS_RTTI
+}
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
+// type. This can be used as a compile-time assertion to ensure that
+// two types are equal.
+
+template <typename T1, typename T2>
+struct AssertTypeEq;
+
+template <typename T>
+struct AssertTypeEq<T, T> {
+ typedef bool type;
+};
+
+// A unique type used as the default value for the arguments of class
+// template Types. This allows us to simulate variadic templates
+// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
+// support directly.
+struct None {};
+
+// The following family of struct and struct templates are used to
+// represent type lists. In particular, TypesN<T1, T2, ..., TN>
+// represents a type list with N types (T1, T2, ..., and TN) in it.
+// Except for Types0, every struct in the family has two member types:
+// Head for the first type in the list, and Tail for the rest of the
+// list.
+
+// The empty type list.
+struct Types0 {};
+
+// Type lists of length 1, 2, 3, and so on.
+
+template <typename T1>
+struct Types1 {
+ typedef T1 Head;
+ typedef Types0 Tail;
+};
+template <typename T1, typename T2>
+struct Types2 {
+ typedef T1 Head;
+ typedef Types1<T2> Tail;
+};
+
+template <typename T1, typename T2, typename T3>
+struct Types3 {
+ typedef T1 Head;
+ typedef Types2<T2, T3> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+struct Types4 {
+ typedef T1 Head;
+ typedef Types3<T2, T3, T4> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+struct Types5 {
+ typedef T1 Head;
+ typedef Types4<T2, T3, T4, T5> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+struct Types6 {
+ typedef T1 Head;
+ typedef Types5<T2, T3, T4, T5, T6> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+struct Types7 {
+ typedef T1 Head;
+ typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+struct Types8 {
+ typedef T1 Head;
+ typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+struct Types9 {
+ typedef T1 Head;
+ typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+struct Types10 {
+ typedef T1 Head;
+ typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+struct Types11 {
+ typedef T1 Head;
+ typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+struct Types12 {
+ typedef T1 Head;
+ typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+struct Types13 {
+ typedef T1 Head;
+ typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+struct Types14 {
+ typedef T1 Head;
+ typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+struct Types15 {
+ typedef T1 Head;
+ typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+struct Types16 {
+ typedef T1 Head;
+ typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+struct Types17 {
+ typedef T1 Head;
+ typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+struct Types18 {
+ typedef T1 Head;
+ typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+struct Types19 {
+ typedef T1 Head;
+ typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+struct Types20 {
+ typedef T1 Head;
+ typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+struct Types21 {
+ typedef T1 Head;
+ typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+struct Types22 {
+ typedef T1 Head;
+ typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+struct Types23 {
+ typedef T1 Head;
+ typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+struct Types24 {
+ typedef T1 Head;
+ typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+struct Types25 {
+ typedef T1 Head;
+ typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+struct Types26 {
+ typedef T1 Head;
+ typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+struct Types27 {
+ typedef T1 Head;
+ typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+struct Types28 {
+ typedef T1 Head;
+ typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+struct Types29 {
+ typedef T1 Head;
+ typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+struct Types30 {
+ typedef T1 Head;
+ typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+struct Types31 {
+ typedef T1 Head;
+ typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+struct Types32 {
+ typedef T1 Head;
+ typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+struct Types33 {
+ typedef T1 Head;
+ typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+struct Types34 {
+ typedef T1 Head;
+ typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+struct Types35 {
+ typedef T1 Head;
+ typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+struct Types36 {
+ typedef T1 Head;
+ typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+struct Types37 {
+ typedef T1 Head;
+ typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+struct Types38 {
+ typedef T1 Head;
+ typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+struct Types39 {
+ typedef T1 Head;
+ typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+struct Types40 {
+ typedef T1 Head;
+ typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+struct Types41 {
+ typedef T1 Head;
+ typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+struct Types42 {
+ typedef T1 Head;
+ typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+struct Types43 {
+ typedef T1 Head;
+ typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+struct Types44 {
+ typedef T1 Head;
+ typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+struct Types45 {
+ typedef T1 Head;
+ typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+struct Types46 {
+ typedef T1 Head;
+ typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+struct Types47 {
+ typedef T1 Head;
+ typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+struct Types48 {
+ typedef T1 Head;
+ typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+struct Types49 {
+ typedef T1 Head;
+ typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+struct Types50 {
+ typedef T1 Head;
+ typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49, T50> Tail;
+};
+
+
+} // namespace internal
+
+// We don't want to require the users to write TypesN<...> directly,
+// as that would require them to count the length. Types<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Types<int>
+// will appear as Types<int, None, None, ..., None> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Types<T1, ..., TN>, and Google Test will translate
+// that to TypesN<T1, ..., TN> internally to make error messages
+// readable. The translation is done by the 'type' member of the
+// Types template.
+template <typename T1 = internal::None, typename T2 = internal::None,
+ typename T3 = internal::None, typename T4 = internal::None,
+ typename T5 = internal::None, typename T6 = internal::None,
+ typename T7 = internal::None, typename T8 = internal::None,
+ typename T9 = internal::None, typename T10 = internal::None,
+ typename T11 = internal::None, typename T12 = internal::None,
+ typename T13 = internal::None, typename T14 = internal::None,
+ typename T15 = internal::None, typename T16 = internal::None,
+ typename T17 = internal::None, typename T18 = internal::None,
+ typename T19 = internal::None, typename T20 = internal::None,
+ typename T21 = internal::None, typename T22 = internal::None,
+ typename T23 = internal::None, typename T24 = internal::None,
+ typename T25 = internal::None, typename T26 = internal::None,
+ typename T27 = internal::None, typename T28 = internal::None,
+ typename T29 = internal::None, typename T30 = internal::None,
+ typename T31 = internal::None, typename T32 = internal::None,
+ typename T33 = internal::None, typename T34 = internal::None,
+ typename T35 = internal::None, typename T36 = internal::None,
+ typename T37 = internal::None, typename T38 = internal::None,
+ typename T39 = internal::None, typename T40 = internal::None,
+ typename T41 = internal::None, typename T42 = internal::None,
+ typename T43 = internal::None, typename T44 = internal::None,
+ typename T45 = internal::None, typename T46 = internal::None,
+ typename T47 = internal::None, typename T48 = internal::None,
+ typename T49 = internal::None, typename T50 = internal::None>
+struct Types {
+ typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
+};
+
+template <>
+struct Types<internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types0 type;
+};
+template <typename T1>
+struct Types<T1, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types1<T1> type;
+};
+template <typename T1, typename T2>
+struct Types<T1, T2, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types2<T1, T2> type;
+};
+template <typename T1, typename T2, typename T3>
+struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types3<T1, T2, T3> type;
+};
+template <typename T1, typename T2, typename T3, typename T4>
+struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types4<T1, T2, T3, T4> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types5<T1, T2, T3, T4, T5> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, T47, internal::None, internal::None, internal::None> {
+ typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, T47, T48, internal::None, internal::None> {
+ typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, T47, T48, T49, internal::None> {
+ typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
+};
+
+namespace internal {
+
+# define GTEST_TEMPLATE_ template <typename T> class
+
+// The template "selector" struct TemplateSel<Tmpl> is used to
+// represent Tmpl, which must be a class template with one type
+// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
+// as the type Tmpl<T>. This allows us to actually instantiate the
+// template "selected" by TemplateSel<Tmpl>.
+//
+// This trick is necessary for simulating typedef for class templates,
+// which C++ doesn't support directly.
+template <GTEST_TEMPLATE_ Tmpl>
+struct TemplateSel {
+ template <typename T>
+ struct Bind {
+ typedef Tmpl<T> type;
+ };
+};
+
+# define GTEST_BIND_(TmplSel, T) \
+ TmplSel::template Bind<T>::type
+
+// A unique struct template used as the default value for the
+// arguments of class template Templates. This allows us to simulate
+// variadic templates (e.g. Templates<int>, Templates<int, double>,
+// and etc), which C++ doesn't support directly.
+template <typename T>
+struct NoneT {};
+
+// The following family of struct and struct templates are used to
+// represent template lists. In particular, TemplatesN<T1, T2, ...,
+// TN> represents a list of N templates (T1, T2, ..., and TN). Except
+// for Templates0, every struct in the family has two member types:
+// Head for the selector of the first template in the list, and Tail
+// for the rest of the list.
+
+// The empty template list.
+struct Templates0 {};
+
+// Template lists of length 1, 2, 3, and so on.
+
+template <GTEST_TEMPLATE_ T1>
+struct Templates1 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates0 Tail;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
+struct Templates2 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates1<T2> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
+struct Templates3 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates2<T2, T3> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4>
+struct Templates4 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates3<T2, T3, T4> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
+struct Templates5 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates4<T2, T3, T4, T5> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
+struct Templates6 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates5<T2, T3, T4, T5, T6> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7>
+struct Templates7 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
+struct Templates8 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
+struct Templates9 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10>
+struct Templates10 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
+struct Templates11 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
+struct Templates12 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13>
+struct Templates13 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
+struct Templates14 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
+struct Templates15 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16>
+struct Templates16 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
+struct Templates17 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
+struct Templates18 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19>
+struct Templates19 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
+struct Templates20 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
+struct Templates21 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22>
+struct Templates22 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
+struct Templates23 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
+struct Templates24 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25>
+struct Templates25 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
+struct Templates26 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
+struct Templates27 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28>
+struct Templates28 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
+struct Templates29 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
+struct Templates30 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31>
+struct Templates31 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
+struct Templates32 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
+struct Templates33 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34>
+struct Templates34 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
+struct Templates35 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
+struct Templates36 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37>
+struct Templates37 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
+struct Templates38 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
+struct Templates39 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40>
+struct Templates40 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
+struct Templates41 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
+struct Templates42 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43>
+struct Templates43 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
+struct Templates44 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
+struct Templates45 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46>
+struct Templates46 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
+struct Templates47 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
+struct Templates48 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47, T48> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+ GTEST_TEMPLATE_ T49>
+struct Templates49 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47, T48, T49> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+ GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
+struct Templates50 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47, T48, T49, T50> Tail;
+};
+
+
+// We don't want to require the users to write TemplatesN<...> directly,
+// as that would require them to count the length. Templates<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Templates<list>
+// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Templates<T1, ..., TN>, and Google Test will translate
+// that to TemplatesN<T1, ..., TN> internally to make error messages
+// readable. The translation is done by the 'type' member of the
+// Templates template.
+template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
+ GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
+ GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
+ GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
+ GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
+ GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
+ GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
+ GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
+ GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
+ GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
+ GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
+ GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
+ GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
+ GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
+ GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
+ GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
+ GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
+ GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
+ GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
+ GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
+ GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
+ GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
+ GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
+ GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
+ GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
+struct Templates {
+ typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
+};
+
+template <>
+struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates0 type;
+};
+template <GTEST_TEMPLATE_ T1>
+struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates1<T1> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
+struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates2<T1, T2> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
+struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates3<T1, T2, T3> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4>
+struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates4<T1, T2, T3, T4> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
+struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates5<T1, T2, T3, T4, T5> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
+struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates6<T1, T2, T3, T4, T5, T6> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT> {
+ typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT> {
+ typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT> {
+ typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, T47, NoneT, NoneT, NoneT> {
+ typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, T47, T48, NoneT, NoneT> {
+ typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47, T48> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+ GTEST_TEMPLATE_ T49>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, T47, T48, T49, NoneT> {
+ typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47, T48, T49> type;
+};
+
+// The TypeList template makes it possible to use either a single type
+// or a Types<...> list in TYPED_TEST_CASE() and
+// INSTANTIATE_TYPED_TEST_CASE_P().
+
+template <typename T>
+struct TypeList {
+ typedef Types1<T> type;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49, T50> > {
+ typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
+};
+
+#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+// Due to C++ preprocessor weirdness, we need double indirection to
+// concatenate two tokens when one of them is __LINE__. Writing
+//
+// foo ## __LINE__
+//
+// will result in the token foo__LINE__, instead of foo followed by
+// the current line number. For more details, see
+// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
+#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
+#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
+
+class ProtocolMessage;
+namespace proto2 { class Message; }
+
+namespace testing {
+
+// Forward declarations.
+
+class AssertionResult; // Result of an assertion.
+class Message; // Represents a failure message.
+class Test; // Represents a test.
+class TestInfo; // Information about a test.
+class TestPartResult; // Result of a test part.
+class UnitTest; // A collection of test cases.
+
+template <typename T>
+::std::string PrintToString(const T& value);
+
+namespace internal {
+
+struct TraceInfo; // Information about a trace point.
+class ScopedTrace; // Implements scoped trace.
+class TestInfoImpl; // Opaque implementation of TestInfo
+class UnitTestImpl; // Opaque implementation of UnitTest
+
+// How many times InitGoogleTest() has been called.
+GTEST_API_ extern int g_init_gtest_count;
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+GTEST_API_ extern const char kStackTraceMarker[];
+
+// Two overloaded helpers for checking at compile time whether an
+// expression is a null pointer literal (i.e. NULL or any 0-valued
+// compile-time integral constant). Their return values have
+// different sizes, so we can use sizeof() to test which version is
+// picked by the compiler. These helpers have no implementations, as
+// we only need their signatures.
+//
+// Given IsNullLiteralHelper(x), the compiler will pick the first
+// version if x can be implicitly converted to Secret*, and pick the
+// second version otherwise. Since Secret is a secret and incomplete
+// type, the only expression a user can write that has type Secret* is
+// a null pointer literal. Therefore, we know that x is a null
+// pointer literal if and only if the first version is picked by the
+// compiler.
+char IsNullLiteralHelper(Secret* p);
+char (&IsNullLiteralHelper(...))[2]; // NOLINT
+
+// A compile-time bool constant that is true if and only if x is a
+// null pointer literal (i.e. NULL or any 0-valued compile-time
+// integral constant).
+#ifdef GTEST_ELLIPSIS_NEEDS_POD_
+// We lose support for NULL detection where the compiler doesn't like
+// passing non-POD classes through ellipsis (...).
+# define GTEST_IS_NULL_LITERAL_(x) false
+#else
+# define GTEST_IS_NULL_LITERAL_(x) \
+ (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)
+#endif // GTEST_ELLIPSIS_NEEDS_POD_
+
+// Appends the user-supplied message to the Google-Test-generated message.
+GTEST_API_ std::string AppendUserMessage(
+ const std::string& gtest_msg, const Message& user_msg);
+
+#if GTEST_HAS_EXCEPTIONS
+
+// This exception is thrown by (and only by) a failed Google Test
+// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
+// are enabled). We derive it from std::runtime_error, which is for
+// errors presumably detectable only at run time. Since
+// std::runtime_error inherits from std::exception, many testing
+// frameworks know how to extract and print the message inside it.
+
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4275) // Temporarily disables warning 4275.
+#endif // _MSC_VER
+
+class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
+ public:
+ explicit GoogleTestFailureException(const TestPartResult& failure);
+};
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif // _MSC_VER
+
+#endif // GTEST_HAS_EXCEPTIONS
+
+// A helper class for creating scoped traces in user programs.
+class GTEST_API_ ScopedTrace {
+ public:
+ // The c'tor pushes the given source file location and message onto
+ // a trace stack maintained by Google Test.
+ ScopedTrace(const char* file, int line, const Message& message);
+
+ // The d'tor pops the info pushed by the c'tor.
+ //
+ // Note that the d'tor is not virtual in order to be efficient.
+ // Don't inherit from ScopedTrace!
+ ~ScopedTrace();
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
+} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
+ // c'tor and d'tor. Therefore it doesn't
+ // need to be used otherwise.
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+// expected_expression: "foo"
+// actual_expression: "bar"
+// expected_value: "5"
+// actual_value: "6"
+//
+// The ignoring_case parameter is true iff the assertion is a
+// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
+// be inserted into the message.
+GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
+ const char* actual_expression,
+ const std::string& expected_value,
+ const std::string& actual_value,
+ bool ignoring_case);
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+GTEST_API_ std::string GetBoolAssertionFailureMessage(
+ const AssertionResult& assertion_result,
+ const char* expression_text,
+ const char* actual_predicate_value,
+ const char* expected_predicate_value);
+
+// This template class represents an IEEE floating-point number
+// (either single-precision or double-precision, depending on the
+// template parameters).
+//
+// The purpose of this class is to do more sophisticated number
+// comparison. (Due to round-off error, etc, it's very unlikely that
+// two floating-points will be equal exactly. Hence a naive
+// comparison by the == operation often doesn't work.)
+//
+// Format of IEEE floating-point:
+//
+// The most-significant bit being the leftmost, an IEEE
+// floating-point looks like
+//
+// sign_bit exponent_bits fraction_bits
+//
+// Here, sign_bit is a single bit that designates the sign of the
+// number.
+//
+// For float, there are 8 exponent bits and 23 fraction bits.
+//
+// For double, there are 11 exponent bits and 52 fraction bits.
+//
+// More details can be found at
+// http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
+//
+// Template parameter:
+//
+// RawType: the raw floating-point type (either float or double)
+template <typename RawType>
+class FloatingPoint {
+ public:
+ // Defines the unsigned integer type that has the same size as the
+ // floating point number.
+ typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
+
+ // Constants.
+
+ // # of bits in a number.
+ static const size_t kBitCount = 8*sizeof(RawType);
+
+ // # of fraction bits in a number.
+ static const size_t kFractionBitCount =
+ std::numeric_limits<RawType>::digits - 1;
+
+ // # of exponent bits in a number.
+ static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
+
+ // The mask for the sign bit.
+ static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
+
+ // The mask for the fraction bits.
+ static const Bits kFractionBitMask =
+ ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
+
+ // The mask for the exponent bits.
+ static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
+
+ // How many ULP's (Units in the Last Place) we want to tolerate when
+ // comparing two numbers. The larger the value, the more error we
+ // allow. A 0 value means that two numbers must be exactly the same
+ // to be considered equal.
+ //
+ // The maximum error of a single floating-point operation is 0.5
+ // units in the last place. On Intel CPU's, all floating-point
+ // calculations are done with 80-bit precision, while double has 64
+ // bits. Therefore, 4 should be enough for ordinary use.
+ //
+ // See the following article for more details on ULP:
+ // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
+ static const size_t kMaxUlps = 4;
+
+ // Constructs a FloatingPoint from a raw floating-point number.
+ //
+ // On an Intel CPU, passing a non-normalized NAN (Not a Number)
+ // around may change its bits, although the new value is guaranteed
+ // to be also a NAN. Therefore, don't expect this constructor to
+ // preserve the bits in x when x is a NAN.
+ explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
+
+ // Static methods
+
+ // Reinterprets a bit pattern as a floating-point number.
+ //
+ // This function is needed to test the AlmostEquals() method.
+ static RawType ReinterpretBits(const Bits bits) {
+ FloatingPoint fp(0);
+ fp.u_.bits_ = bits;
+ return fp.u_.value_;
+ }
+
+ // Returns the floating-point number that represent positive infinity.
+ static RawType Infinity() {
+ return ReinterpretBits(kExponentBitMask);
+ }
+
+ // Returns the maximum representable finite floating-point number.
+ static RawType Max();
+
+ // Non-static methods
+
+ // Returns the bits that represents this number.
+ const Bits &bits() const { return u_.bits_; }
+
+ // Returns the exponent bits of this number.
+ Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
+
+ // Returns the fraction bits of this number.
+ Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
+
+ // Returns the sign bit of this number.
+ Bits sign_bit() const { return kSignBitMask & u_.bits_; }
+
+ // Returns true iff this is NAN (not a number).
+ bool is_nan() const {
+ // It's a NAN if the exponent bits are all ones and the fraction
+ // bits are not entirely zeros.
+ return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
+ }
+
+ // Returns true iff this number is at most kMaxUlps ULP's away from
+ // rhs. In particular, this function:
+ //
+ // - returns false if either number is (or both are) NAN.
+ // - treats really large numbers as almost equal to infinity.
+ // - thinks +0.0 and -0.0 are 0 DLP's apart.
+ bool AlmostEquals(const FloatingPoint& rhs) const {
+ // The IEEE standard says that any comparison operation involving
+ // a NAN must return false.
+ if (is_nan() || rhs.is_nan()) return false;
+
+ return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
+ <= kMaxUlps;
+ }
+
+ private:
+ // The data type used to store the actual floating-point number.
+ union FloatingPointUnion {
+ RawType value_; // The raw floating-point number.
+ Bits bits_; // The bits that represent the number.
+ };
+
+ // Converts an integer from the sign-and-magnitude representation to
+ // the biased representation. More precisely, let N be 2 to the
+ // power of (kBitCount - 1), an integer x is represented by the
+ // unsigned number x + N.
+ //
+ // For instance,
+ //
+ // -N + 1 (the most negative number representable using
+ // sign-and-magnitude) is represented by 1;
+ // 0 is represented by N; and
+ // N - 1 (the biggest number representable using
+ // sign-and-magnitude) is represented by 2N - 1.
+ //
+ // Read http://en.wikipedia.org/wiki/Signed_number_representations
+ // for more details on signed number representations.
+ static Bits SignAndMagnitudeToBiased(const Bits &sam) {
+ if (kSignBitMask & sam) {
+ // sam represents a negative number.
+ return ~sam + 1;
+ } else {
+ // sam represents a positive number.
+ return kSignBitMask | sam;
+ }
+ }
+
+ // Given two numbers in the sign-and-magnitude representation,
+ // returns the distance between them as an unsigned number.
+ static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
+ const Bits &sam2) {
+ const Bits biased1 = SignAndMagnitudeToBiased(sam1);
+ const Bits biased2 = SignAndMagnitudeToBiased(sam2);
+ return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
+ }
+
+ FloatingPointUnion u_;
+};
+
+// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
+// macro defined by <windows.h>.
+template <>
+inline float FloatingPoint<float>::Max() { return FLT_MAX; }
+template <>
+inline double FloatingPoint<double>::Max() { return DBL_MAX; }
+
+// Typedefs the instances of the FloatingPoint template class that we
+// care to use.
+typedef FloatingPoint<float> Float;
+typedef FloatingPoint<double> Double;
+
+// In order to catch the mistake of putting tests that use different
+// test fixture classes in the same test case, we need to assign
+// unique IDs to fixture classes and compare them. The TypeId type is
+// used to hold such IDs. The user should treat TypeId as an opaque
+// type: the only operation allowed on TypeId values is to compare
+// them for equality using the == operator.
+typedef const void* TypeId;
+
+template <typename T>
+class TypeIdHelper {
+ public:
+ // dummy_ must not have a const type. Otherwise an overly eager
+ // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
+ // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
+ static bool dummy_;
+};
+
+template <typename T>
+bool TypeIdHelper<T>::dummy_ = false;
+
+// GetTypeId<T>() returns the ID of type T. Different values will be
+// returned for different types. Calling the function twice with the
+// same type argument is guaranteed to return the same ID.
+template <typename T>
+TypeId GetTypeId() {
+ // The compiler is required to allocate a different
+ // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
+ // the template. Therefore, the address of dummy_ is guaranteed to
+ // be unique.
+ return &(TypeIdHelper<T>::dummy_);
+}
+
+// Returns the type ID of ::testing::Test. Always call this instead
+// of GetTypeId< ::testing::Test>() to get the type ID of
+// ::testing::Test, as the latter may give the wrong result due to a
+// suspected linker bug when compiling Google Test as a Mac OS X
+// framework.
+GTEST_API_ TypeId GetTestTypeId();
+
+// Defines the abstract factory interface that creates instances
+// of a Test object.
+class TestFactoryBase {
+ public:
+ virtual ~TestFactoryBase() {}
+
+ // Creates a test instance to run. The instance is both created and destroyed
+ // within TestInfoImpl::Run()
+ virtual Test* CreateTest() = 0;
+
+ protected:
+ TestFactoryBase() {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
+};
+
+// This class provides implementation of TeastFactoryBase interface.
+// It is used in TEST and TEST_F macros.
+template <class TestClass>
+class TestFactoryImpl : public TestFactoryBase {
+ public:
+ virtual Test* CreateTest() { return new TestClass; }
+};
+
+#if GTEST_OS_WINDOWS
+
+// Predicate-formatters for implementing the HRESULT checking macros
+// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
+// We pass a long instead of HRESULT to avoid causing an
+// include dependency for the HRESULT type.
+GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
+ long hr); // NOLINT
+GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
+ long hr); // NOLINT
+
+#endif // GTEST_OS_WINDOWS
+
+// Types of SetUpTestCase() and TearDownTestCase() functions.
+typedef void (*SetUpTestCaseFunc)();
+typedef void (*TearDownTestCaseFunc)();
+
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
+// test_case_name: name of the test case
+// name: name of the test
+// type_param the name of the test's type parameter, or NULL if
+// this is not a typed or a type-parameterized test.
+// value_param text representation of the test's value parameter,
+// or NULL if this is not a type-parameterized test.
+// fixture_class_id: ID of the test fixture class
+// set_up_tc: pointer to the function that sets up the test case
+// tear_down_tc: pointer to the function that tears down the test case
+// factory: pointer to the factory that creates a test object.
+// The newly created TestInfo instance will assume
+// ownership of the factory object.
+GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
+ const char* test_case_name,
+ const char* name,
+ const char* type_param,
+ const char* value_param,
+ TypeId fixture_class_id,
+ SetUpTestCaseFunc set_up_tc,
+ TearDownTestCaseFunc tear_down_tc,
+ TestFactoryBase* factory);
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false. None of pstr, *pstr, and prefix can be NULL.
+GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// State of the definition of a type-parameterized test case.
+class GTEST_API_ TypedTestCasePState {
+ public:
+ TypedTestCasePState() : registered_(false) {}
+
+ // Adds the given test name to defined_test_names_ and return true
+ // if the test case hasn't been registered; otherwise aborts the
+ // program.
+ bool AddTestName(const char* file, int line, const char* case_name,
+ const char* test_name) {
+ if (registered_) {
+ fprintf(stderr, "%s Test %s must be defined before "
+ "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n",
+ FormatFileLocation(file, line).c_str(), test_name, case_name);
+ fflush(stderr);
+ posix::Abort();
+ }
+ defined_test_names_.insert(test_name);
+ return true;
+ }
+
+ // Verifies that registered_tests match the test names in
+ // defined_test_names_; returns registered_tests if successful, or
+ // aborts the program otherwise.
+ const char* VerifyRegisteredTestNames(
+ const char* file, int line, const char* registered_tests);
+
+ private:
+ bool registered_;
+ ::std::set<const char*> defined_test_names_;
+};
+
+// Skips to the first non-space char after the first comma in 'str';
+// returns NULL if no comma is found in 'str'.
+inline const char* SkipComma(const char* str) {
+ const char* comma = strchr(str, ',');
+ if (comma == NULL) {
+ return NULL;
+ }
+ while (IsSpace(*(++comma))) {}
+ return comma;
+}
+
+// Returns the prefix of 'str' before the first comma in it; returns
+// the entire string if it contains no comma.
+inline std::string GetPrefixUntilComma(const char* str) {
+ const char* comma = strchr(str, ',');
+ return comma == NULL ? str : std::string(str, comma);
+}
+
+// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
+// registers a list of type-parameterized tests with Google Test. The
+// return value is insignificant - we just need to return something
+// such that we can call this function in a namespace scope.
+//
+// Implementation note: The GTEST_TEMPLATE_ macro declares a template
+// template parameter. It's defined in gtest-type-util.h.
+template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
+class TypeParameterizedTest {
+ public:
+ // 'index' is the index of the test in the type list 'Types'
+ // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase,
+ // Types). Valid values for 'index' are [0, N - 1] where N is the
+ // length of Types.
+ static bool Register(const char* prefix, const char* case_name,
+ const char* test_names, int index) {
+ typedef typename Types::Head Type;
+ typedef Fixture<Type> FixtureClass;
+ typedef typename GTEST_BIND_(TestSel, Type) TestClass;
+
+ // First, registers the first type-parameterized test in the type
+ // list.
+ MakeAndRegisterTestInfo(
+ (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/"
+ + StreamableToString(index)).c_str(),
+ GetPrefixUntilComma(test_names).c_str(),
+ GetTypeName<Type>().c_str(),
+ NULL, // No value parameter.
+ GetTypeId<FixtureClass>(),
+ TestClass::SetUpTestCase,
+ TestClass::TearDownTestCase,
+ new TestFactoryImpl<TestClass>);
+
+ // Next, recurses (at compile time) with the tail of the type list.
+ return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>
+ ::Register(prefix, case_name, test_names, index + 1);
+ }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, class TestSel>
+class TypeParameterizedTest<Fixture, TestSel, Types0> {
+ public:
+ static bool Register(const char* /*prefix*/, const char* /*case_name*/,
+ const char* /*test_names*/, int /*index*/) {
+ return true;
+ }
+};
+
+// TypeParameterizedTestCase<Fixture, Tests, Types>::Register()
+// registers *all combinations* of 'Tests' and 'Types' with Google
+// Test. The return value is insignificant - we just need to return
+// something such that we can call this function in a namespace scope.
+template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
+class TypeParameterizedTestCase {
+ public:
+ static bool Register(const char* prefix, const char* case_name,
+ const char* test_names) {
+ typedef typename Tests::Head Head;
+
+ // First, register the first test in 'Test' for each type in 'Types'.
+ TypeParameterizedTest<Fixture, Head, Types>::Register(
+ prefix, case_name, test_names, 0);
+
+ // Next, recurses (at compile time) with the tail of the test list.
+ return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>
+ ::Register(prefix, case_name, SkipComma(test_names));
+ }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, typename Types>
+class TypeParameterizedTestCase<Fixture, Templates0, Types> {
+ public:
+ static bool Register(const char* /*prefix*/, const char* /*case_name*/,
+ const char* /*test_names*/) {
+ return true;
+ }
+};
+
+#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
+ UnitTest* unit_test, int skip_count);
+
+// Helpers for suppressing warnings on unreachable code or constant
+// condition.
+
+// Always returns true.
+GTEST_API_ bool AlwaysTrue();
+
+// Always returns false.
+inline bool AlwaysFalse() { return !AlwaysTrue(); }
+
+// Helper for suppressing false warning from Clang on a const char*
+// variable declared in a conditional expression always being NULL in
+// the else branch.
+struct GTEST_API_ ConstCharPtr {
+ ConstCharPtr(const char* str) : value(str) {}
+ operator bool() const { return true; }
+ const char* value;
+};
+
+// A simple Linear Congruential Generator for generating random
+// numbers with a uniform distribution. Unlike rand() and srand(), it
+// doesn't use global state (and therefore can't interfere with user
+// code). Unlike rand_r(), it's portable. An LCG isn't very random,
+// but it's good enough for our purposes.
+class GTEST_API_ Random {
+ public:
+ static const UInt32 kMaxRange = 1u << 31;
+
+ explicit Random(UInt32 seed) : state_(seed) {}
+
+ void Reseed(UInt32 seed) { state_ = seed; }
+
+ // Generates a random number from [0, range). Crashes if 'range' is
+ // 0 or greater than kMaxRange.
+ UInt32 Generate(UInt32 range);
+
+ private:
+ UInt32 state_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
+};
+
+// Defining a variable of type CompileAssertTypesEqual<T1, T2> will cause a
+// compiler error iff T1 and T2 are different types.
+template <typename T1, typename T2>
+struct CompileAssertTypesEqual;
+
+template <typename T>
+struct CompileAssertTypesEqual<T, T> {
+};
+
+// Removes the reference from a type if it is a reference type,
+// otherwise leaves it unchanged. This is the same as
+// tr1::remove_reference, which is not widely available yet.
+template <typename T>
+struct RemoveReference { typedef T type; }; // NOLINT
+template <typename T>
+struct RemoveReference<T&> { typedef T type; }; // NOLINT
+
+// A handy wrapper around RemoveReference that works when the argument
+// T depends on template parameters.
+#define GTEST_REMOVE_REFERENCE_(T) \
+ typename ::testing::internal::RemoveReference<T>::type
+
+// Removes const from a type if it is a const type, otherwise leaves
+// it unchanged. This is the same as tr1::remove_const, which is not
+// widely available yet.
+template <typename T>
+struct RemoveConst { typedef T type; }; // NOLINT
+template <typename T>
+struct RemoveConst<const T> { typedef T type; }; // NOLINT
+
+// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above
+// definition to fail to remove the const in 'const int[3]' and 'const
+// char[3][4]'. The following specialization works around the bug.
+template <typename T, size_t N>
+struct RemoveConst<const T[N]> {
+ typedef typename RemoveConst<T>::type type[N];
+};
+
+#if defined(_MSC_VER) && _MSC_VER < 1400
+// This is the only specialization that allows VC++ 7.1 to remove const in
+// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC
+// and thus needs to be conditionally compiled.
+template <typename T, size_t N>
+struct RemoveConst<T[N]> {
+ typedef typename RemoveConst<T>::type type[N];
+};
+#endif
+
+// A handy wrapper around RemoveConst that works when the argument
+// T depends on template parameters.
+#define GTEST_REMOVE_CONST_(T) \
+ typename ::testing::internal::RemoveConst<T>::type
+
+// Turns const U&, U&, const U, and U all into U.
+#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
+ GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
+
+// Adds reference to a type if it is not a reference type,
+// otherwise leaves it unchanged. This is the same as
+// tr1::add_reference, which is not widely available yet.
+template <typename T>
+struct AddReference { typedef T& type; }; // NOLINT
+template <typename T>
+struct AddReference<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper around AddReference that works when the argument T
+// depends on template parameters.
+#define GTEST_ADD_REFERENCE_(T) \
+ typename ::testing::internal::AddReference<T>::type
+
+// Adds a reference to const on top of T as necessary. For example,
+// it transforms
+//
+// char ==> const char&
+// const char ==> const char&
+// char& ==> const char&
+// const char& ==> const char&
+//
+// The argument T must depend on some template parameters.
+#define GTEST_REFERENCE_TO_CONST_(T) \
+ GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))
+
+// ImplicitlyConvertible<From, To>::value is a compile-time bool
+// constant that's true iff type From can be implicitly converted to
+// type To.
+template <typename From, typename To>
+class ImplicitlyConvertible {
+ private:
+ // We need the following helper functions only for their types.
+ // They have no implementations.
+
+ // MakeFrom() is an expression whose type is From. We cannot simply
+ // use From(), as the type From may not have a public default
+ // constructor.
+ static From MakeFrom();
+
+ // These two functions are overloaded. Given an expression
+ // Helper(x), the compiler will pick the first version if x can be
+ // implicitly converted to type To; otherwise it will pick the
+ // second version.
+ //
+ // The first version returns a value of size 1, and the second
+ // version returns a value of size 2. Therefore, by checking the
+ // size of Helper(x), which can be done at compile time, we can tell
+ // which version of Helper() is used, and hence whether x can be
+ // implicitly converted to type To.
+ static char Helper(To);
+ static char (&Helper(...))[2]; // NOLINT
+
+ // We have to put the 'public' section after the 'private' section,
+ // or MSVC refuses to compile the code.
+ public:
+ // MSVC warns about implicitly converting from double to int for
+ // possible loss of data, so we need to temporarily disable the
+ // warning.
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4244) // Temporarily disables warning 4244.
+
+ static const bool value =
+ sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
+# pragma warning(pop) // Restores the warning state.
+#elif defined(__BORLANDC__)
+ // C++Builder cannot use member overload resolution during template
+ // instantiation. The simplest workaround is to use its C++0x type traits
+ // functions (C++Builder 2009 and above only).
+ static const bool value = __is_convertible(From, To);
+#else
+ static const bool value =
+ sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
+#endif // _MSV_VER
+};
+template <typename From, typename To>
+const bool ImplicitlyConvertible<From, To>::value;
+
+// IsAProtocolMessage<T>::value is a compile-time bool constant that's
+// true iff T is type ProtocolMessage, proto2::Message, or a subclass
+// of those.
+template <typename T>
+struct IsAProtocolMessage
+ : public bool_constant<
+ ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||
+ ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {
+};
+
+// When the compiler sees expression IsContainerTest<C>(0), if C is an
+// STL-style container class, the first overload of IsContainerTest
+// will be viable (since both C::iterator* and C::const_iterator* are
+// valid types and NULL can be implicitly converted to them). It will
+// be picked over the second overload as 'int' is a perfect match for
+// the type of argument 0. If C::iterator or C::const_iterator is not
+// a valid type, the first overload is not viable, and the second
+// overload will be picked. Therefore, we can determine whether C is
+// a container class by checking the type of IsContainerTest<C>(0).
+// The value of the expression is insignificant.
+//
+// Note that we look for both C::iterator and C::const_iterator. The
+// reason is that C++ injects the name of a class as a member of the
+// class itself (e.g. you can refer to class iterator as either
+// 'iterator' or 'iterator::iterator'). If we look for C::iterator
+// only, for example, we would mistakenly think that a class named
+// iterator is an STL container.
+//
+// Also note that the simpler approach of overloading
+// IsContainerTest(typename C::const_iterator*) and
+// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
+typedef int IsContainer;
+template <class C>
+IsContainer IsContainerTest(int /* dummy */,
+ typename C::iterator* /* it */ = NULL,
+ typename C::const_iterator* /* const_it */ = NULL) {
+ return 0;
+}
+
+typedef char IsNotContainer;
+template <class C>
+IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
+
+// EnableIf<condition>::type is void when 'Cond' is true, and
+// undefined when 'Cond' is false. To use SFINAE to make a function
+// overload only apply when a particular expression is true, add
+// "typename EnableIf<expression>::type* = 0" as the last parameter.
+template<bool> struct EnableIf;
+template<> struct EnableIf<true> { typedef void type; }; // NOLINT
+
+// Utilities for native arrays.
+
+// ArrayEq() compares two k-dimensional native arrays using the
+// elements' operator==, where k can be any integer >= 0. When k is
+// 0, ArrayEq() degenerates into comparing a single pair of values.
+
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
+ return internal::ArrayEq(lhs, N, rhs);
+}
+
+// This helper reduces code bloat. If we instead put its logic inside
+// the previous ArrayEq() function, arrays with different sizes would
+// lead to different copies of the template code.
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
+ for (size_t i = 0; i != size; i++) {
+ if (!internal::ArrayEq(lhs[i], rhs[i]))
+ return false;
+ }
+ return true;
+}
+
+// Finds the first element in the iterator range [begin, end) that
+// equals elem. Element may be a native array type itself.
+template <typename Iter, typename Element>
+Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
+ for (Iter it = begin; it != end; ++it) {
+ if (internal::ArrayEq(*it, elem))
+ return it;
+ }
+ return end;
+}
+
+// CopyArray() copies a k-dimensional native array using the elements'
+// operator=, where k can be any integer >= 0. When k is 0,
+// CopyArray() degenerates into copying a single value.
+
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline void CopyArray(const T& from, U* to) { *to = from; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline void CopyArray(const T(&from)[N], U(*to)[N]) {
+ internal::CopyArray(from, N, *to);
+}
+
+// This helper reduces code bloat. If we instead put its logic inside
+// the previous CopyArray() function, arrays with different sizes
+// would lead to different copies of the template code.
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to) {
+ for (size_t i = 0; i != size; i++) {
+ internal::CopyArray(from[i], to + i);
+ }
+}
+
+// The relation between an NativeArray object (see below) and the
+// native array it represents.
+enum RelationToSource {
+ kReference, // The NativeArray references the native array.
+ kCopy // The NativeArray makes a copy of the native array and
+ // owns the copy.
+};
+
+// Adapts a native array to a read-only STL-style container. Instead
+// of the complete STL container concept, this adaptor only implements
+// members useful for Google Mock's container matchers. New members
+// should be added as needed. To simplify the implementation, we only
+// support Element being a raw type (i.e. having no top-level const or
+// reference modifier). It's the client's responsibility to satisfy
+// this requirement. Element can be an array type itself (hence
+// multi-dimensional arrays are supported).
+template <typename Element>
+class NativeArray {
+ public:
+ // STL-style container typedefs.
+ typedef Element value_type;
+ typedef Element* iterator;
+ typedef const Element* const_iterator;
+
+ // Constructs from a native array.
+ NativeArray(const Element* array, size_t count, RelationToSource relation) {
+ Init(array, count, relation);
+ }
+
+ // Copy constructor.
+ NativeArray(const NativeArray& rhs) {
+ Init(rhs.array_, rhs.size_, rhs.relation_to_source_);
+ }
+
+ ~NativeArray() {
+ // Ensures that the user doesn't instantiate NativeArray with a
+ // const or reference type.
+ static_cast<void>(StaticAssertTypeEqHelper<Element,
+ GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>());
+ if (relation_to_source_ == kCopy)
+ delete[] array_;
+ }
+
+ // STL-style container methods.
+ size_t size() const { return size_; }
+ const_iterator begin() const { return array_; }
+ const_iterator end() const { return array_ + size_; }
+ bool operator==(const NativeArray& rhs) const {
+ return size() == rhs.size() &&
+ ArrayEq(begin(), size(), rhs.begin());
+ }
+
+ private:
+ // Initializes this object; makes a copy of the input array if
+ // 'relation' is kCopy.
+ void Init(const Element* array, size_t a_size, RelationToSource relation) {
+ if (relation == kReference) {
+ array_ = array;
+ } else {
+ Element* const copy = new Element[a_size];
+ CopyArray(array, a_size, copy);
+ array_ = copy;
+ }
+ size_ = a_size;
+ relation_to_source_ = relation;
+ }
+
+ const Element* array_;
+ size_t size_;
+ RelationToSource relation_to_source_;
+
+ GTEST_DISALLOW_ASSIGN_(NativeArray);
+};
+
+} // namespace internal
+} // namespace testing
+
+#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
+ ::testing::internal::AssertHelper(result_type, file, line, message) \
+ = ::testing::Message()
+
+#define GTEST_MESSAGE_(message, result_type) \
+ GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
+
+#define GTEST_FATAL_FAILURE_(message) \
+ return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
+
+#define GTEST_NONFATAL_FAILURE_(message) \
+ GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
+
+#define GTEST_SUCCESS_(message) \
+ GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
+
+// Suppresses MSVC warnings 4072 (unreachable code) for the code following
+// statement if it returns or throws (or doesn't return or throw in some
+// situations).
+#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
+ if (::testing::internal::AlwaysTrue()) { statement; }
+
+#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::ConstCharPtr gtest_msg = "") { \
+ bool gtest_caught_expected = false; \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (expected_exception const&) { \
+ gtest_caught_expected = true; \
+ } \
+ catch (...) { \
+ gtest_msg.value = \
+ "Expected: " #statement " throws an exception of type " \
+ #expected_exception ".\n Actual: it throws a different type."; \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
+ } \
+ if (!gtest_caught_expected) { \
+ gtest_msg.value = \
+ "Expected: " #statement " throws an exception of type " \
+ #expected_exception ".\n Actual: it throws nothing."; \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
+ fail(gtest_msg.value)
+
+#define GTEST_TEST_NO_THROW_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (...) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
+ fail("Expected: " #statement " doesn't throw an exception.\n" \
+ " Actual: it throws.")
+
+#define GTEST_TEST_ANY_THROW_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ bool gtest_caught_any = false; \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (...) { \
+ gtest_caught_any = true; \
+ } \
+ if (!gtest_caught_any) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
+ fail("Expected: " #statement " throws an exception.\n" \
+ " Actual: it doesn't.")
+
+
+// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
+// either a boolean expression or an AssertionResult. text is a textual
+// represenation of expression as it was passed into the EXPECT_TRUE.
+#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (const ::testing::AssertionResult gtest_ar_ = \
+ ::testing::AssertionResult(expression)) \
+ ; \
+ else \
+ fail(::testing::internal::GetBoolAssertionFailureMessage(\
+ gtest_ar_, text, #actual, #expected).c_str())
+
+#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
+ fail("Expected: " #statement " doesn't generate new fatal " \
+ "failures in the current thread.\n" \
+ " Actual: it does.")
+
+// Expands to the name of the class that implements the given test.
+#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+ test_case_name##_##test_name##_Test
+
+// Helper macro for defining tests.
+#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\
+class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
+ public:\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
+ private:\
+ virtual void TestBody();\
+ static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
+};\
+\
+::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
+ ::test_info_ =\
+ ::testing::internal::MakeAndRegisterTestInfo(\
+ #test_case_name, #test_name, NULL, NULL, \
+ (parent_id), \
+ parent_class::SetUpTestCase, \
+ parent_class::TearDownTestCase, \
+ new ::testing::internal::TestFactoryImpl<\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
+void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the public API for death tests. It is
+// #included by gtest.h so a user doesn't need to include this
+// directly.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines internal utilities needed for implementing
+// death tests. They are subject to change without notice.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+
+
+#include <stdio.h>
+
+namespace testing {
+namespace internal {
+
+GTEST_DECLARE_string_(internal_run_death_test);
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kDeathTestStyleFlag[] = "death_test_style";
+const char kDeathTestUseFork[] = "death_test_use_fork";
+const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
+
+#if GTEST_HAS_DEATH_TEST
+
+// DeathTest is a class that hides much of the complexity of the
+// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
+// returns a concrete class that depends on the prevailing death test
+// style, as defined by the --gtest_death_test_style and/or
+// --gtest_internal_run_death_test flags.
+
+// In describing the results of death tests, these terms are used with
+// the corresponding definitions:
+//
+// exit status: The integer exit information in the format specified
+// by wait(2)
+// exit code: The integer code passed to exit(3), _exit(2), or
+// returned from main()
+class GTEST_API_ DeathTest {
+ public:
+ // Create returns false if there was an error determining the
+ // appropriate action to take for the current death test; for example,
+ // if the gtest_death_test_style flag is set to an invalid value.
+ // The LastMessage method will return a more detailed message in that
+ // case. Otherwise, the DeathTest pointer pointed to by the "test"
+ // argument is set. If the death test should be skipped, the pointer
+ // is set to NULL; otherwise, it is set to the address of a new concrete
+ // DeathTest object that controls the execution of the current test.
+ static bool Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test);
+ DeathTest();
+ virtual ~DeathTest() { }
+
+ // A helper class that aborts a death test when it's deleted.
+ class ReturnSentinel {
+ public:
+ explicit ReturnSentinel(DeathTest* test) : test_(test) { }
+ ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
+ private:
+ DeathTest* const test_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
+ } GTEST_ATTRIBUTE_UNUSED_;
+
+ // An enumeration of possible roles that may be taken when a death
+ // test is encountered. EXECUTE means that the death test logic should
+ // be executed immediately. OVERSEE means that the program should prepare
+ // the appropriate environment for a child process to execute the death
+ // test, then wait for it to complete.
+ enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
+
+ // An enumeration of the three reasons that a test might be aborted.
+ enum AbortReason {
+ TEST_ENCOUNTERED_RETURN_STATEMENT,
+ TEST_THREW_EXCEPTION,
+ TEST_DID_NOT_DIE
+ };
+
+ // Assumes one of the above roles.
+ virtual TestRole AssumeRole() = 0;
+
+ // Waits for the death test to finish and returns its status.
+ virtual int Wait() = 0;
+
+ // Returns true if the death test passed; that is, the test process
+ // exited during the test, its exit status matches a user-supplied
+ // predicate, and its stderr output matches a user-supplied regular
+ // expression.
+ // The user-supplied predicate may be a macro expression rather
+ // than a function pointer or functor, or else Wait and Passed could
+ // be combined.
+ virtual bool Passed(bool exit_status_ok) = 0;
+
+ // Signals that the death test did not die as expected.
+ virtual void Abort(AbortReason reason) = 0;
+
+ // Returns a human-readable outcome message regarding the outcome of
+ // the last death test.
+ static const char* LastMessage();
+
+ static void set_last_death_test_message(const std::string& message);
+
+ private:
+ // A string containing a description of the outcome of the last death test.
+ static std::string last_death_test_message_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
+};
+
+// Factory interface for death tests. May be mocked out for testing.
+class DeathTestFactory {
+ public:
+ virtual ~DeathTestFactory() { }
+ virtual bool Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test) = 0;
+};
+
+// A concrete DeathTestFactory implementation for normal use.
+class DefaultDeathTestFactory : public DeathTestFactory {
+ public:
+ virtual bool Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test);
+};
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
+
+// Traps C++ exceptions escaping statement and reports them as test
+// failures. Note that trapping SEH exceptions is not implemented here.
+# if GTEST_HAS_EXCEPTIONS
+# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } catch (const ::std::exception& gtest_exception) { \
+ fprintf(\
+ stderr, \
+ "\n%s: Caught std::exception-derived exception escaping the " \
+ "death test statement. Exception message: %s\n", \
+ ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
+ gtest_exception.what()); \
+ fflush(stderr); \
+ death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+ } catch (...) { \
+ death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+ }
+
+# else
+# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+
+# endif
+
+// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
+// ASSERT_EXIT*, and EXPECT_EXIT*.
+# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ const ::testing::internal::RE& gtest_regex = (regex); \
+ ::testing::internal::DeathTest* gtest_dt; \
+ if (!::testing::internal::DeathTest::Create(#statement, &gtest_regex, \
+ __FILE__, __LINE__, &gtest_dt)) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
+ } \
+ if (gtest_dt != NULL) { \
+ ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \
+ gtest_dt_ptr(gtest_dt); \
+ switch (gtest_dt->AssumeRole()) { \
+ case ::testing::internal::DeathTest::OVERSEE_TEST: \
+ if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
+ } \
+ break; \
+ case ::testing::internal::DeathTest::EXECUTE_TEST: { \
+ ::testing::internal::DeathTest::ReturnSentinel \
+ gtest_sentinel(gtest_dt); \
+ GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
+ gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
+ break; \
+ } \
+ default: \
+ break; \
+ } \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \
+ fail(::testing::internal::DeathTest::LastMessage())
+// The symbol "fail" here expands to something into which a message
+// can be streamed.
+
+// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
+// NDEBUG mode. In this case we need the statements to be executed, the regex is
+// ignored, and the macro must accept a streamed message even though the message
+// is never printed.
+# define GTEST_EXECUTE_STATEMENT_(statement, regex) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } else \
+ ::testing::Message()
+
+// A class representing the parsed contents of the
+// --gtest_internal_run_death_test flag, as it existed when
+// RUN_ALL_TESTS was called.
+class InternalRunDeathTestFlag {
+ public:
+ InternalRunDeathTestFlag(const std::string& a_file,
+ int a_line,
+ int an_index,
+ int a_write_fd)
+ : file_(a_file), line_(a_line), index_(an_index),
+ write_fd_(a_write_fd) {}
+
+ ~InternalRunDeathTestFlag() {
+ if (write_fd_ >= 0)
+ posix::Close(write_fd_);
+ }
+
+ const std::string& file() const { return file_; }
+ int line() const { return line_; }
+ int index() const { return index_; }
+ int write_fd() const { return write_fd_; }
+
+ private:
+ std::string file_;
+ int line_;
+ int index_;
+ int write_fd_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
+};
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
+
+#else // GTEST_HAS_DEATH_TEST
+
+// This macro is used for implementing macros such as
+// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
+// death tests are not supported. Those macros must compile on such systems
+// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on
+// systems that support death tests. This allows one to write such a macro
+// on a system that does not support death tests and be sure that it will
+// compile on a death-test supporting system.
+//
+// Parameters:
+// statement - A statement that a macro such as EXPECT_DEATH would test
+// for program termination. This macro has to make sure this
+// statement is compiled but not executed, to ensure that
+// EXPECT_DEATH_IF_SUPPORTED compiles with a certain
+// parameter iff EXPECT_DEATH compiles with it.
+// regex - A regex that a macro such as EXPECT_DEATH would use to test
+// the output of statement. This parameter has to be
+// compiled but not evaluated by this macro, to ensure that
+// this macro only accepts expressions that a macro such as
+// EXPECT_DEATH would accept.
+// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
+// and a return statement for ASSERT_DEATH_IF_SUPPORTED.
+// This ensures that ASSERT_DEATH_IF_SUPPORTED will not
+// compile inside functions where ASSERT_DEATH doesn't
+// compile.
+//
+// The branch that has an always false condition is used to ensure that
+// statement and regex are compiled (and thus syntactically correct) but
+// never executed. The unreachable code macro protects the terminator
+// statement from generating an 'unreachable code' warning in case
+// statement unconditionally returns or throws. The Message constructor at
+// the end allows the syntax of streaming additional messages into the
+// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
+# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ GTEST_LOG_(WARNING) \
+ << "Death tests are not supported on this platform.\n" \
+ << "Statement '" #statement "' cannot be verified."; \
+ } else if (::testing::internal::AlwaysFalse()) { \
+ ::testing::internal::RE::PartialMatch(".*", (regex)); \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ terminator; \
+ } else \
+ ::testing::Message()
+
+#endif // GTEST_HAS_DEATH_TEST
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+
+namespace testing {
+
+// This flag controls the style of death tests. Valid values are "threadsafe",
+// meaning that the death test child process will re-execute the test binary
+// from the start, running only a single death test, or "fast",
+// meaning that the child process will execute the test logic immediately
+// after forking.
+GTEST_DECLARE_string_(death_test_style);
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process. Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests. IMPORTANT: This is an internal utility. Using it may break the
+// implementation of death tests. User code MUST NOT use it.
+GTEST_API_ bool InDeathTestChild();
+
+} // namespace internal
+
+// The following macros are useful for writing death tests.
+
+// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
+// executed:
+//
+// 1. It generates a warning if there is more than one active
+// thread. This is because it's safe to fork() or clone() only
+// when there is a single thread.
+//
+// 2. The parent process clone()s a sub-process and runs the death
+// test in it; the sub-process exits with code 0 at the end of the
+// death test, if it hasn't exited already.
+//
+// 3. The parent process waits for the sub-process to terminate.
+//
+// 4. The parent process checks the exit code and error message of
+// the sub-process.
+//
+// Examples:
+//
+// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
+// for (int i = 0; i < 5; i++) {
+// EXPECT_DEATH(server.ProcessRequest(i),
+// "Invalid request .* in ProcessRequest()")
+// << "Failed to die on request " << i;
+// }
+//
+// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
+//
+// bool KilledBySIGHUP(int exit_code) {
+// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
+// }
+//
+// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
+//
+// On the regular expressions used in death tests:
+//
+// On POSIX-compliant systems (*nix), we use the <regex.h> library,
+// which uses the POSIX extended regex syntax.
+//
+// On other platforms (e.g. Windows), we only support a simple regex
+// syntax implemented as part of Google Test. This limited
+// implementation should be enough most of the time when writing
+// death tests; though it lacks many features you can find in PCRE
+// or POSIX extended regex syntax. For example, we don't support
+// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
+// repetition count ("x{5,7}"), among others.
+//
+// Below is the syntax that we do support. We chose it to be a
+// subset of both PCRE and POSIX extended regex, so it's easy to
+// learn wherever you come from. In the following: 'A' denotes a
+// literal character, period (.), or a single \\ escape sequence;
+// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
+// natural numbers.
+//
+// c matches any literal character c
+// \\d matches any decimal digit
+// \\D matches any character that's not a decimal digit
+// \\f matches \f
+// \\n matches \n
+// \\r matches \r
+// \\s matches any ASCII whitespace, including \n
+// \\S matches any character that's not a whitespace
+// \\t matches \t
+// \\v matches \v
+// \\w matches any letter, _, or decimal digit
+// \\W matches any character that \\w doesn't match
+// \\c matches any literal character c, which must be a punctuation
+// . matches any single character except \n
+// A? matches 0 or 1 occurrences of A
+// A* matches 0 or many occurrences of A
+// A+ matches 1 or many occurrences of A
+// ^ matches the beginning of a string (not that of each line)
+// $ matches the end of a string (not that of each line)
+// xy matches x followed by y
+//
+// If you accidentally use PCRE or POSIX extended regex features
+// not implemented by us, you will get a run-time failure. In that
+// case, please try to rewrite your regular expression within the
+// above syntax.
+//
+// This implementation is *not* meant to be as highly tuned or robust
+// as a compiled regex library, but should perform well enough for a
+// death test, which already incurs significant overhead by launching
+// a child process.
+//
+// Known caveats:
+//
+// A "threadsafe" style death test obtains the path to the test
+// program from argv[0] and re-executes it in the sub-process. For
+// simplicity, the current implementation doesn't search the PATH
+// when launching the sub-process. This means that the user must
+// invoke the test program via a path that contains at least one
+// path separator (e.g. path/to/foo_test and
+// /absolute/path/to/bar_test are fine, but foo_test is not). This
+// is rarely a problem as people usually don't put the test binary
+// directory in PATH.
+//
+// TODO(wan@google.com): make thread-safe death tests search the PATH.
+
+// Asserts that a given statement causes the program to exit, with an
+// integer exit status that satisfies predicate, and emitting error output
+// that matches regex.
+# define ASSERT_EXIT(statement, predicate, regex) \
+ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
+
+// Like ASSERT_EXIT, but continues on to successive tests in the
+// test case, if any:
+# define EXPECT_EXIT(statement, predicate, regex) \
+ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
+
+// Asserts that a given statement causes the program to exit, either by
+// explicitly exiting with a nonzero exit code or being killed by a
+// signal, and emitting error output that matches regex.
+# define ASSERT_DEATH(statement, regex) \
+ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+
+// Like ASSERT_DEATH, but continues on to successive tests in the
+// test case, if any:
+# define EXPECT_DEATH(statement, regex) \
+ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+
+// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
+
+// Tests that an exit code describes a normal exit with a given exit code.
+class GTEST_API_ ExitedWithCode {
+ public:
+ explicit ExitedWithCode(int exit_code);
+ bool operator()(int exit_status) const;
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ExitedWithCode& other);
+
+ const int exit_code_;
+};
+
+# if !GTEST_OS_WINDOWS
+// Tests that an exit code describes an exit due to termination by a
+// given signal.
+class GTEST_API_ KilledBySignal {
+ public:
+ explicit KilledBySignal(int signum);
+ bool operator()(int exit_status) const;
+ private:
+ const int signum_;
+};
+# endif // !GTEST_OS_WINDOWS
+
+// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
+// The death testing framework causes this to have interesting semantics,
+// since the sideeffects of the call are only visible in opt mode, and not
+// in debug mode.
+//
+// In practice, this can be used to test functions that utilize the
+// LOG(DFATAL) macro using the following style:
+//
+// int DieInDebugOr12(int* sideeffect) {
+// if (sideeffect) {
+// *sideeffect = 12;
+// }
+// LOG(DFATAL) << "death";
+// return 12;
+// }
+//
+// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {
+// int sideeffect = 0;
+// // Only asserts in dbg.
+// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
+//
+// #ifdef NDEBUG
+// // opt-mode has sideeffect visible.
+// EXPECT_EQ(12, sideeffect);
+// #else
+// // dbg-mode no visible sideeffect.
+// EXPECT_EQ(0, sideeffect);
+// #endif
+// }
+//
+// This will assert that DieInDebugReturn12InOpt() crashes in debug
+// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
+// appropriate fallback value (12 in this case) in opt mode. If you
+// need to test that a function has appropriate side-effects in opt
+// mode, include assertions against the side-effects. A general
+// pattern for this is:
+//
+// EXPECT_DEBUG_DEATH({
+// // Side-effects here will have an effect after this statement in
+// // opt mode, but none in debug mode.
+// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
+// }, "death");
+//
+# ifdef NDEBUG
+
+# define EXPECT_DEBUG_DEATH(statement, regex) \
+ GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# define ASSERT_DEBUG_DEATH(statement, regex) \
+ GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# else
+
+# define EXPECT_DEBUG_DEATH(statement, regex) \
+ EXPECT_DEATH(statement, regex)
+
+# define ASSERT_DEBUG_DEATH(statement, regex) \
+ ASSERT_DEATH(statement, regex)
+
+# endif // NDEBUG for EXPECT_DEBUG_DEATH
+#endif // GTEST_HAS_DEATH_TEST
+
+// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
+// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
+// death tests are supported; otherwise they just issue a warning. This is
+// useful when you are combining death test assertions with normal test
+// assertions in one test.
+#if GTEST_HAS_DEATH_TEST
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+ EXPECT_DEATH(statement, regex)
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+ ASSERT_DEATH(statement, regex)
+#else
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+ GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+ GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
+#endif
+
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+// This file was GENERATED by command:
+// pump.py gtest-param-test.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev)
+//
+// Macros and functions for implementing parameterized tests
+// in Google C++ Testing Framework (Google Test)
+//
+// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+
+
+// Value-parameterized tests allow you to test your code with different
+// parameters without writing multiple copies of the same test.
+//
+// Here is how you use value-parameterized tests:
+
+#if 0
+
+// To write value-parameterized tests, first you should define a fixture
+// class. It is usually derived from testing::TestWithParam<T> (see below for
+// another inheritance scheme that's sometimes useful in more complicated
+// class hierarchies), where the type of your parameter values.
+// TestWithParam<T> is itself derived from testing::Test. T can be any
+// copyable type. If it's a raw pointer, you are responsible for managing the
+// lifespan of the pointed values.
+
+class FooTest : public ::testing::TestWithParam<const char*> {
+ // You can implement all the usual class fixture members here.
+};
+
+// Then, use the TEST_P macro to define as many parameterized tests
+// for this fixture as you want. The _P suffix is for "parameterized"
+// or "pattern", whichever you prefer to think.
+
+TEST_P(FooTest, DoesBlah) {
+ // Inside a test, access the test parameter with the GetParam() method
+ // of the TestWithParam<T> class:
+ EXPECT_TRUE(foo.Blah(GetParam()));
+ ...
+}
+
+TEST_P(FooTest, HasBlahBlah) {
+ ...
+}
+
+// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
+// case with any set of parameters you want. Google Test defines a number
+// of functions for generating test parameters. They return what we call
+// (surprise!) parameter generators. Here is a summary of them, which
+// are all in the testing namespace:
+//
+//
+// Range(begin, end [, step]) - Yields values {begin, begin+step,
+// begin+step+step, ...}. The values do not
+// include end. step defaults to 1.
+// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
+// ValuesIn(container) - Yields values from a C-style array, an STL
+// ValuesIn(begin,end) container, or an iterator range [begin, end).
+// Bool() - Yields sequence {false, true}.
+// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
+// for the math savvy) of the values generated
+// by the N generators.
+//
+// For more details, see comments at the definitions of these functions below
+// in this file.
+//
+// The following statement will instantiate tests from the FooTest test case
+// each with parameter values "meeny", "miny", and "moe".
+
+INSTANTIATE_TEST_CASE_P(InstantiationName,
+ FooTest,
+ Values("meeny", "miny", "moe"));
+
+// To distinguish different instances of the pattern, (yes, you
+// can instantiate it more then once) the first argument to the
+// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
+// actual test case name. Remember to pick unique prefixes for different
+// instantiations. The tests from the instantiation above will have
+// these names:
+//
+// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
+// * InstantiationName/FooTest.DoesBlah/1 for "miny"
+// * InstantiationName/FooTest.DoesBlah/2 for "moe"
+// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
+// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
+// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
+//
+// You can use these names in --gtest_filter.
+//
+// This statement will instantiate all tests from FooTest again, each
+// with parameter values "cat" and "dog":
+
+const char* pets[] = {"cat", "dog"};
+INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
+
+// The tests from the instantiation above will have these names:
+//
+// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
+//
+// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
+// in the given test case, whether their definitions come before or
+// AFTER the INSTANTIATE_TEST_CASE_P statement.
+//
+// Please also note that generator expressions (including parameters to the
+// generators) are evaluated in InitGoogleTest(), after main() has started.
+// This allows the user on one hand, to adjust generator parameters in order
+// to dynamically determine a set of tests to run and on the other hand,
+// give the user a chance to inspect the generated tests with Google Test
+// reflection API before RUN_ALL_TESTS() is executed.
+//
+// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
+// for more examples.
+//
+// In the future, we plan to publish the API for defining new parameter
+// generators. But for now this interface remains part of the internal
+// implementation and is subject to change.
+//
+//
+// A parameterized test fixture must be derived from testing::Test and from
+// testing::WithParamInterface<T>, where T is the type of the parameter
+// values. Inheriting from TestWithParam<T> satisfies that requirement because
+// TestWithParam<T> inherits from both Test and WithParamInterface. In more
+// complicated hierarchies, however, it is occasionally useful to inherit
+// separately from Test and WithParamInterface. For example:
+
+class BaseTest : public ::testing::Test {
+ // You can inherit all the usual members for a non-parameterized test
+ // fixture here.
+};
+
+class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
+ // The usual test fixture members go here too.
+};
+
+TEST_F(BaseTest, HasFoo) {
+ // This is an ordinary non-parameterized test.
+}
+
+TEST_P(DerivedTest, DoesBlah) {
+ // GetParam works just the same here as if you inherit from TestWithParam.
+ EXPECT_TRUE(foo.Blah(GetParam()));
+}
+
+#endif // 0
+
+
+#if !GTEST_OS_SYMBIAN
+# include <utility>
+#endif
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+
+#include <iterator>
+#include <utility>
+#include <vector>
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+// Copyright 2003 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: Dan Egnor (egnor@google.com)
+//
+// A "smart" pointer type with reference tracking. Every pointer to a
+// particular object is kept on a circular linked list. When the last pointer
+// to an object is destroyed or reassigned, the object is deleted.
+//
+// Used properly, this deletes the object when the last reference goes away.
+// There are several caveats:
+// - Like all reference counting schemes, cycles lead to leaks.
+// - Each smart pointer is actually two pointers (8 bytes instead of 4).
+// - Every time a pointer is assigned, the entire list of pointers to that
+// object is traversed. This class is therefore NOT SUITABLE when there
+// will often be more than two or three pointers to a particular object.
+// - References are only tracked as long as linked_ptr<> objects are copied.
+// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
+// will happen (double deletion).
+//
+// A good use of this class is storing object references in STL containers.
+// You can safely put linked_ptr<> in a vector<>.
+// Other uses may not be as good.
+//
+// Note: If you use an incomplete type with linked_ptr<>, the class
+// *containing* linked_ptr<> must have a constructor and destructor (even
+// if they do nothing!).
+//
+// Bill Gibbons suggested we use something like this.
+//
+// Thread Safety:
+// Unlike other linked_ptr implementations, in this implementation
+// a linked_ptr object is thread-safe in the sense that:
+// - it's safe to copy linked_ptr objects concurrently,
+// - it's safe to copy *from* a linked_ptr and read its underlying
+// raw pointer (e.g. via get()) concurrently, and
+// - it's safe to write to two linked_ptrs that point to the same
+// shared object concurrently.
+// TODO(wan@google.com): rename this to safe_linked_ptr to avoid
+// confusion with normal linked_ptr.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+
+#include <stdlib.h>
+#include <assert.h>
+
+
+namespace testing {
+namespace internal {
+
+// Protects copying of all linked_ptr objects.
+GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);
+
+// This is used internally by all instances of linked_ptr<>. It needs to be
+// a non-template class because different types of linked_ptr<> can refer to
+// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
+// So, it needs to be possible for different types of linked_ptr to participate
+// in the same circular linked list, so we need a single class type here.
+//
+// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr<T>.
+class linked_ptr_internal {
+ public:
+ // Create a new circle that includes only this instance.
+ void join_new() {
+ next_ = this;
+ }
+
+ // Many linked_ptr operations may change p.link_ for some linked_ptr
+ // variable p in the same circle as this object. Therefore we need
+ // to prevent two such operations from occurring concurrently.
+ //
+ // Note that different types of linked_ptr objects can coexist in a
+ // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and
+ // linked_ptr<Derived2>). Therefore we must use a single mutex to
+ // protect all linked_ptr objects. This can create serious
+ // contention in production code, but is acceptable in a testing
+ // framework.
+
+ // Join an existing circle.
+ void join(linked_ptr_internal const* ptr)
+ GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
+ MutexLock lock(&g_linked_ptr_mutex);
+
+ linked_ptr_internal const* p = ptr;
+ while (p->next_ != ptr) p = p->next_;
+ p->next_ = this;
+ next_ = ptr;
+ }
+
+ // Leave whatever circle we're part of. Returns true if we were the
+ // last member of the circle. Once this is done, you can join() another.
+ bool depart()
+ GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
+ MutexLock lock(&g_linked_ptr_mutex);
+
+ if (next_ == this) return true;
+ linked_ptr_internal const* p = next_;
+ while (p->next_ != this) p = p->next_;
+ p->next_ = next_;
+ return false;
+ }
+
+ private:
+ mutable linked_ptr_internal const* next_;
+};
+
+template <typename T>
+class linked_ptr {
+ public:
+ typedef T element_type;
+
+ // Take over ownership of a raw pointer. This should happen as soon as
+ // possible after the object is created.
+ explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
+ ~linked_ptr() { depart(); }
+
+ // Copy an existing linked_ptr<>, adding ourselves to the list of references.
+ template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
+ linked_ptr(linked_ptr const& ptr) { // NOLINT
+ assert(&ptr != this);
+ copy(&ptr);
+ }
+
+ // Assignment releases the old value and acquires the new.
+ template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
+ depart();
+ copy(&ptr);
+ return *this;
+ }
+
+ linked_ptr& operator=(linked_ptr const& ptr) {
+ if (&ptr != this) {
+ depart();
+ copy(&ptr);
+ }
+ return *this;
+ }
+
+ // Smart pointer members.
+ void reset(T* ptr = NULL) {
+ depart();
+ capture(ptr);
+ }
+ T* get() const { return value_; }
+ T* operator->() const { return value_; }
+ T& operator*() const { return *value_; }
+
+ bool operator==(T* p) const { return value_ == p; }
+ bool operator!=(T* p) const { return value_ != p; }
+ template <typename U>
+ bool operator==(linked_ptr<U> const& ptr) const {
+ return value_ == ptr.get();
+ }
+ template <typename U>
+ bool operator!=(linked_ptr<U> const& ptr) const {
+ return value_ != ptr.get();
+ }
+
+ private:
+ template <typename U>
+ friend class linked_ptr;
+
+ T* value_;
+ linked_ptr_internal link_;
+
+ void depart() {
+ if (link_.depart()) delete value_;
+ }
+
+ void capture(T* ptr) {
+ value_ = ptr;
+ link_.join_new();
+ }
+
+ template <typename U> void copy(linked_ptr<U> const* ptr) {
+ value_ = ptr->get();
+ if (value_)
+ link_.join(&ptr->link_);
+ else
+ link_.join_new();
+ }
+};
+
+template<typename T> inline
+bool operator==(T* ptr, const linked_ptr<T>& x) {
+ return ptr == x.get();
+}
+
+template<typename T> inline
+bool operator!=(T* ptr, const linked_ptr<T>& x) {
+ return ptr != x.get();
+}
+
+// A function to convert T* into linked_ptr<T>
+// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
+// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
+template <typename T>
+linked_ptr<T> make_linked_ptr(T* ptr) {
+ return linked_ptr<T>(ptr);
+}
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Test - The Google C++ Testing Framework
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// A user can teach this function how to print a class type T by
+// defining either operator<<() or PrintTo() in the namespace that
+// defines T. More specifically, the FIRST defined function in the
+// following list will be used (assuming T is defined in namespace
+// foo):
+//
+// 1. foo::PrintTo(const T&, ostream*)
+// 2. operator<<(ostream&, const T&) defined in either foo or the
+// global namespace.
+//
+// If none of the above is defined, it will print the debug string of
+// the value if it is a protocol buffer, or print the raw bytes in the
+// value otherwise.
+//
+// To aid debugging: when T is a reference type, the address of the
+// value is also printed; when T is a (const) char pointer, both the
+// pointer value and the NUL-terminated string it points to are
+// printed.
+//
+// We also provide some convenient wrappers:
+//
+// // Prints a value to a string. For a (const or not) char
+// // pointer, the NUL-terminated string (but not the pointer) is
+// // printed.
+// std::string ::testing::PrintToString(const T& value);
+//
+// // Prints a value tersely: for a reference type, the referenced
+// // value (but not the address) is printed; for a (const or not) char
+// // pointer, the NUL-terminated string (but not the pointer) is
+// // printed.
+// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
+//
+// // Prints value using the type inferred by the compiler. The difference
+// // from UniversalTersePrint() is that this function prints both the
+// // pointer and the NUL-terminated string for a (const or not) char pointer.
+// void ::testing::internal::UniversalPrint(const T& value, ostream*);
+//
+// // Prints the fields of a tuple tersely to a string vector, one
+// // element for each field. Tuple support must be enabled in
+// // gtest-port.h.
+// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
+// const Tuple& value);
+//
+// Known limitation:
+//
+// The print primitives print the elements of an STL-style container
+// using the compiler-inferred type of *iter where iter is a
+// const_iterator of the container. When const_iterator is an input
+// iterator but not a forward iterator, this inferred type may not
+// match value_type, and the print output may be incorrect. In
+// practice, this is rarely a problem as for most containers
+// const_iterator is a forward iterator. We'll fix this if there's an
+// actual need for it. Note that this fix cannot rely on value_type
+// being defined as many user-defined container types don't have
+// value_type.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+
+#include <ostream> // NOLINT
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+
+namespace testing {
+
+// Definitions in the 'internal' and 'internal2' name spaces are
+// subject to change without notice. DO NOT USE THEM IN USER CODE!
+namespace internal2 {
+
+// Prints the given number of bytes in the given object to the given
+// ostream.
+GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
+ size_t count,
+ ::std::ostream* os);
+
+// For selecting which printer to use when a given type has neither <<
+// nor PrintTo().
+enum TypeKind {
+ kProtobuf, // a protobuf type
+ kConvertibleToInteger, // a type implicitly convertible to BiggestInt
+ // (e.g. a named or unnamed enum type)
+ kOtherType // anything else
+};
+
+// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
+// by the universal printer to print a value of type T when neither
+// operator<< nor PrintTo() is defined for T, where kTypeKind is the
+// "kind" of T as defined by enum TypeKind.
+template <typename T, TypeKind kTypeKind>
+class TypeWithoutFormatter {
+ public:
+ // This default version is called when kTypeKind is kOtherType.
+ static void PrintValue(const T& value, ::std::ostream* os) {
+ PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value),
+ sizeof(value), os);
+ }
+};
+
+// We print a protobuf using its ShortDebugString() when the string
+// doesn't exceed this many characters; otherwise we print it using
+// DebugString() for better readability.
+const size_t kProtobufOneLinerMaxLength = 50;
+
+template <typename T>
+class TypeWithoutFormatter<T, kProtobuf> {
+ public:
+ static void PrintValue(const T& value, ::std::ostream* os) {
+ const ::testing::internal::string short_str = value.ShortDebugString();
+ const ::testing::internal::string pretty_str =
+ short_str.length() <= kProtobufOneLinerMaxLength ?
+ short_str : ("\n" + value.DebugString());
+ *os << ("<" + pretty_str + ">");
+ }
+};
+
+template <typename T>
+class TypeWithoutFormatter<T, kConvertibleToInteger> {
+ public:
+ // Since T has no << operator or PrintTo() but can be implicitly
+ // converted to BiggestInt, we print it as a BiggestInt.
+ //
+ // Most likely T is an enum type (either named or unnamed), in which
+ // case printing it as an integer is the desired behavior. In case
+ // T is not an enum, printing it as an integer is the best we can do
+ // given that it has no user-defined printer.
+ static void PrintValue(const T& value, ::std::ostream* os) {
+ const internal::BiggestInt kBigInt = value;
+ *os << kBigInt;
+ }
+};
+
+// Prints the given value to the given ostream. If the value is a
+// protocol message, its debug string is printed; if it's an enum or
+// of a type implicitly convertible to BiggestInt, it's printed as an
+// integer; otherwise the bytes in the value are printed. This is
+// what UniversalPrinter<T>::Print() does when it knows nothing about
+// type T and T has neither << operator nor PrintTo().
+//
+// A user can override this behavior for a class type Foo by defining
+// a << operator in the namespace where Foo is defined.
+//
+// We put this operator in namespace 'internal2' instead of 'internal'
+// to simplify the implementation, as much code in 'internal' needs to
+// use << in STL, which would conflict with our own << were it defined
+// in 'internal'.
+//
+// Note that this operator<< takes a generic std::basic_ostream<Char,
+// CharTraits> type instead of the more restricted std::ostream. If
+// we define it to take an std::ostream instead, we'll get an
+// "ambiguous overloads" compiler error when trying to print a type
+// Foo that supports streaming to std::basic_ostream<Char,
+// CharTraits>, as the compiler cannot tell whether
+// operator<<(std::ostream&, const T&) or
+// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
+// specific.
+template <typename Char, typename CharTraits, typename T>
+::std::basic_ostream<Char, CharTraits>& operator<<(
+ ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
+ TypeWithoutFormatter<T,
+ (internal::IsAProtocolMessage<T>::value ? kProtobuf :
+ internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ?
+ kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ return os;
+}
+
+} // namespace internal2
+} // namespace testing
+
+// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
+// magic needed for implementing UniversalPrinter won't work.
+namespace testing_internal {
+
+// Used to print a value that is not an STL-style container when the
+// user doesn't define PrintTo() for it.
+template <typename T>
+void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
+ // With the following statement, during unqualified name lookup,
+ // testing::internal2::operator<< appears as if it was declared in
+ // the nearest enclosing namespace that contains both
+ // ::testing_internal and ::testing::internal2, i.e. the global
+ // namespace. For more details, refer to the C++ Standard section
+ // 7.3.4-1 [namespace.udir]. This allows us to fall back onto
+ // testing::internal2::operator<< in case T doesn't come with a <<
+ // operator.
+ //
+ // We cannot write 'using ::testing::internal2::operator<<;', which
+ // gcc 3.3 fails to compile due to a compiler bug.
+ using namespace ::testing::internal2; // NOLINT
+
+ // Assuming T is defined in namespace foo, in the next statement,
+ // the compiler will consider all of:
+ //
+ // 1. foo::operator<< (thanks to Koenig look-up),
+ // 2. ::operator<< (as the current namespace is enclosed in ::),
+ // 3. testing::internal2::operator<< (thanks to the using statement above).
+ //
+ // The operator<< whose type matches T best will be picked.
+ //
+ // We deliberately allow #2 to be a candidate, as sometimes it's
+ // impossible to define #1 (e.g. when foo is ::std, defining
+ // anything in it is undefined behavior unless you are a compiler
+ // vendor.).
+ *os << value;
+}
+
+} // namespace testing_internal
+
+namespace testing {
+namespace internal {
+
+// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
+// value to the given ostream. The caller must ensure that
+// 'ostream_ptr' is not NULL, or the behavior is undefined.
+//
+// We define UniversalPrinter as a class template (as opposed to a
+// function template), as we need to partially specialize it for
+// reference types, which cannot be done with function templates.
+template <typename T>
+class UniversalPrinter;
+
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os);
+
+// Used to print an STL-style container when the user doesn't define
+// a PrintTo() for it.
+template <typename C>
+void DefaultPrintTo(IsContainer /* dummy */,
+ false_type /* is not a pointer */,
+ const C& container, ::std::ostream* os) {
+ const size_t kMaxCount = 32; // The maximum number of elements to print.
+ *os << '{';
+ size_t count = 0;
+ for (typename C::const_iterator it = container.begin();
+ it != container.end(); ++it, ++count) {
+ if (count > 0) {
+ *os << ',';
+ if (count == kMaxCount) { // Enough has been printed.
+ *os << " ...";
+ break;
+ }
+ }
+ *os << ' ';
+ // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
+ // handle *it being a native array.
+ internal::UniversalPrint(*it, os);
+ }
+
+ if (count > 0) {
+ *os << ' ';
+ }
+ *os << '}';
+}
+
+// Used to print a pointer that is neither a char pointer nor a member
+// pointer, when the user doesn't define PrintTo() for it. (A member
+// variable pointer or member function pointer doesn't really point to
+// a location in the address space. Their representation is
+// implementation-defined. Therefore they will be printed as raw
+// bytes.)
+template <typename T>
+void DefaultPrintTo(IsNotContainer /* dummy */,
+ true_type /* is a pointer */,
+ T* p, ::std::ostream* os) {
+ if (p == NULL) {
+ *os << "NULL";
+ } else {
+ // C++ doesn't allow casting from a function pointer to any object
+ // pointer.
+ //
+ // IsTrue() silences warnings: "Condition is always true",
+ // "unreachable code".
+ if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
+ // T is not a function type. We just call << to print p,
+ // relying on ADL to pick up user-defined << for their pointer
+ // types, if any.
+ *os << p;
+ } else {
+ // T is a function type, so '*os << p' doesn't do what we want
+ // (it just prints p as bool). We want to print p as a const
+ // void*. However, we cannot cast it to const void* directly,
+ // even using reinterpret_cast, as earlier versions of gcc
+ // (e.g. 3.4.5) cannot compile the cast when p is a function
+ // pointer. Casting to UInt64 first solves the problem.
+ *os << reinterpret_cast<const void*>(
+ reinterpret_cast<internal::UInt64>(p));
+ }
+ }
+}
+
+// Used to print a non-container, non-pointer value when the user
+// doesn't define PrintTo() for it.
+template <typename T>
+void DefaultPrintTo(IsNotContainer /* dummy */,
+ false_type /* is not a pointer */,
+ const T& value, ::std::ostream* os) {
+ ::testing_internal::DefaultPrintNonContainerTo(value, os);
+}
+
+// Prints the given value using the << operator if it has one;
+// otherwise prints the bytes in it. This is what
+// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
+// or overloaded for type T.
+//
+// A user can override this behavior for a class type Foo by defining
+// an overload of PrintTo() in the namespace where Foo is defined. We
+// give the user this option as sometimes defining a << operator for
+// Foo is not desirable (e.g. the coding style may prevent doing it,
+// or there is already a << operator but it doesn't do what the user
+// wants).
+template <typename T>
+void PrintTo(const T& value, ::std::ostream* os) {
+ // DefaultPrintTo() is overloaded. The type of its first two
+ // arguments determine which version will be picked. If T is an
+ // STL-style container, the version for container will be called; if
+ // T is a pointer, the pointer version will be called; otherwise the
+ // generic version will be called.
+ //
+ // Note that we check for container types here, prior to we check
+ // for protocol message types in our operator<<. The rationale is:
+ //
+ // For protocol messages, we want to give people a chance to
+ // override Google Mock's format by defining a PrintTo() or
+ // operator<<. For STL containers, other formats can be
+ // incompatible with Google Mock's format for the container
+ // elements; therefore we check for container types here to ensure
+ // that our format is used.
+ //
+ // The second argument of DefaultPrintTo() is needed to bypass a bug
+ // in Symbian's C++ compiler that prevents it from picking the right
+ // overload between:
+ //
+ // PrintTo(const T& x, ...);
+ // PrintTo(T* x, ...);
+ DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);
+}
+
+// The following list of PrintTo() overloads tells
+// UniversalPrinter<T>::Print() how to print standard types (built-in
+// types, strings, plain arrays, and pointers).
+
+// Overloads for various char types.
+GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
+GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
+inline void PrintTo(char c, ::std::ostream* os) {
+ // When printing a plain char, we always treat it as unsigned. This
+ // way, the output won't be affected by whether the compiler thinks
+ // char is signed or not.
+ PrintTo(static_cast<unsigned char>(c), os);
+}
+
+// Overloads for other simple built-in types.
+inline void PrintTo(bool x, ::std::ostream* os) {
+ *os << (x ? "true" : "false");
+}
+
+// Overload for wchar_t type.
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its decimal code (except for L'\0').
+// The L'\0' char is printed as "L'\\0'". The decimal code is printed
+// as signed integer when wchar_t is implemented by the compiler
+// as a signed type and is printed as an unsigned integer when wchar_t
+// is implemented as an unsigned type.
+GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
+
+// Overloads for C strings.
+GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
+inline void PrintTo(char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const char*>(s), os);
+}
+
+// signed/unsigned char is often used for representing binary data, so
+// we print pointers to it as void* to be safe.
+inline void PrintTo(const signed char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(signed char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(unsigned char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+
+// MSVC can be configured to define wchar_t as a typedef of unsigned
+// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
+// type. When wchar_t is a typedef, defining an overload for const
+// wchar_t* would cause unsigned short* be printed as a wide string,
+// possibly causing invalid memory accesses.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Overloads for wide C strings
+GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
+inline void PrintTo(wchar_t* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const wchar_t*>(s), os);
+}
+#endif
+
+// Overload for C arrays. Multi-dimensional arrays are printed
+// properly.
+
+// Prints the given number of elements in an array, without printing
+// the curly braces.
+template <typename T>
+void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
+ UniversalPrint(a[0], os);
+ for (size_t i = 1; i != count; i++) {
+ *os << ", ";
+ UniversalPrint(a[i], os);
+ }
+}
+
+// Overloads for ::string and ::std::string.
+#if GTEST_HAS_GLOBAL_STRING
+GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);
+inline void PrintTo(const ::string& s, ::std::ostream* os) {
+ PrintStringTo(s, os);
+}
+#endif // GTEST_HAS_GLOBAL_STRING
+
+GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
+inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
+ PrintStringTo(s, os);
+}
+
+// Overloads for ::wstring and ::std::wstring.
+#if GTEST_HAS_GLOBAL_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::wstring& s, ::std::ostream* os) {
+ PrintWideStringTo(s, os);
+}
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
+ PrintWideStringTo(s, os);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_TR1_TUPLE
+// Overload for ::std::tr1::tuple. Needed for printing function arguments,
+// which are packed as tuples.
+
+// Helper function for printing a tuple. T must be instantiated with
+// a tuple type.
+template <typename T>
+void PrintTupleTo(const T& t, ::std::ostream* os);
+
+// Overloaded PrintTo() for tuples of various arities. We support
+// tuples of up-to 10 fields. The following implementation works
+// regardless of whether tr1::tuple is implemented using the
+// non-standard variadic template feature or not.
+
+inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1>
+void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2>
+void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+void PrintTo(
+ const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+#endif // GTEST_HAS_TR1_TUPLE
+
+// Overload for std::pair.
+template <typename T1, typename T2>
+void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
+ *os << '(';
+ // We cannot use UniversalPrint(value.first, os) here, as T1 may be
+ // a reference type. The same for printing value.second.
+ UniversalPrinter<T1>::Print(value.first, os);
+ *os << ", ";
+ UniversalPrinter<T2>::Print(value.second, os);
+ *os << ')';
+}
+
+// Implements printing a non-reference type T by letting the compiler
+// pick the right overload of PrintTo() for T.
+template <typename T>
+class UniversalPrinter {
+ public:
+ // MSVC warns about adding const to a function type, so we want to
+ // disable the warning.
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4180) // Temporarily disables warning 4180.
+#endif // _MSC_VER
+
+ // Note: we deliberately don't call this PrintTo(), as that name
+ // conflicts with ::testing::internal::PrintTo in the body of the
+ // function.
+ static void Print(const T& value, ::std::ostream* os) {
+ // By default, ::testing::internal::PrintTo() is used for printing
+ // the value.
+ //
+ // Thanks to Koenig look-up, if T is a class and has its own
+ // PrintTo() function defined in its namespace, that function will
+ // be visible here. Since it is more specific than the generic ones
+ // in ::testing::internal, it will be picked by the compiler in the
+ // following statement - exactly what we want.
+ PrintTo(value, os);
+ }
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif // _MSC_VER
+};
+
+// UniversalPrintArray(begin, len, os) prints an array of 'len'
+// elements, starting at address 'begin'.
+template <typename T>
+void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
+ if (len == 0) {
+ *os << "{}";
+ } else {
+ *os << "{ ";
+ const size_t kThreshold = 18;
+ const size_t kChunkSize = 8;
+ // If the array has more than kThreshold elements, we'll have to
+ // omit some details by printing only the first and the last
+ // kChunkSize elements.
+ // TODO(wan@google.com): let the user control the threshold using a flag.
+ if (len <= kThreshold) {
+ PrintRawArrayTo(begin, len, os);
+ } else {
+ PrintRawArrayTo(begin, kChunkSize, os);
+ *os << ", ..., ";
+ PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
+ }
+ *os << " }";
+ }
+}
+// This overload prints a (const) char array compactly.
+GTEST_API_ void UniversalPrintArray(
+ const char* begin, size_t len, ::std::ostream* os);
+
+// This overload prints a (const) wchar_t array compactly.
+GTEST_API_ void UniversalPrintArray(
+ const wchar_t* begin, size_t len, ::std::ostream* os);
+
+// Implements printing an array type T[N].
+template <typename T, size_t N>
+class UniversalPrinter<T[N]> {
+ public:
+ // Prints the given array, omitting some elements when there are too
+ // many.
+ static void Print(const T (&a)[N], ::std::ostream* os) {
+ UniversalPrintArray(a, N, os);
+ }
+};
+
+// Implements printing a reference type T&.
+template <typename T>
+class UniversalPrinter<T&> {
+ public:
+ // MSVC warns about adding const to a function type, so we want to
+ // disable the warning.
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4180) // Temporarily disables warning 4180.
+#endif // _MSC_VER
+
+ static void Print(const T& value, ::std::ostream* os) {
+ // Prints the address of the value. We use reinterpret_cast here
+ // as static_cast doesn't compile when T is a function type.
+ *os << "@" << reinterpret_cast<const void*>(&value) << " ";
+
+ // Then prints the value itself.
+ UniversalPrint(value, os);
+ }
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif // _MSC_VER
+};
+
+// Prints a value tersely: for a reference type, the referenced value
+// (but not the address) is printed; for a (const) char pointer, the
+// NUL-terminated string (but not the pointer) is printed.
+
+template <typename T>
+class UniversalTersePrinter {
+ public:
+ static void Print(const T& value, ::std::ostream* os) {
+ UniversalPrint(value, os);
+ }
+};
+template <typename T>
+class UniversalTersePrinter<T&> {
+ public:
+ static void Print(const T& value, ::std::ostream* os) {
+ UniversalPrint(value, os);
+ }
+};
+template <typename T, size_t N>
+class UniversalTersePrinter<T[N]> {
+ public:
+ static void Print(const T (&value)[N], ::std::ostream* os) {
+ UniversalPrinter<T[N]>::Print(value, os);
+ }
+};
+template <>
+class UniversalTersePrinter<const char*> {
+ public:
+ static void Print(const char* str, ::std::ostream* os) {
+ if (str == NULL) {
+ *os << "NULL";
+ } else {
+ UniversalPrint(string(str), os);
+ }
+ }
+};
+template <>
+class UniversalTersePrinter<char*> {
+ public:
+ static void Print(char* str, ::std::ostream* os) {
+ UniversalTersePrinter<const char*>::Print(str, os);
+ }
+};
+
+#if GTEST_HAS_STD_WSTRING
+template <>
+class UniversalTersePrinter<const wchar_t*> {
+ public:
+ static void Print(const wchar_t* str, ::std::ostream* os) {
+ if (str == NULL) {
+ *os << "NULL";
+ } else {
+ UniversalPrint(::std::wstring(str), os);
+ }
+ }
+};
+#endif
+
+template <>
+class UniversalTersePrinter<wchar_t*> {
+ public:
+ static void Print(wchar_t* str, ::std::ostream* os) {
+ UniversalTersePrinter<const wchar_t*>::Print(str, os);
+ }
+};
+
+template <typename T>
+void UniversalTersePrint(const T& value, ::std::ostream* os) {
+ UniversalTersePrinter<T>::Print(value, os);
+}
+
+// Prints a value using the type inferred by the compiler. The
+// difference between this and UniversalTersePrint() is that for a
+// (const) char pointer, this prints both the pointer and the
+// NUL-terminated string.
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os) {
+ // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
+ // UniversalPrinter with T directly.
+ typedef T T1;
+ UniversalPrinter<T1>::Print(value, os);
+}
+
+#if GTEST_HAS_TR1_TUPLE
+typedef ::std::vector<string> Strings;
+
+// This helper template allows PrintTo() for tuples and
+// UniversalTersePrintTupleFieldsToStrings() to be defined by
+// induction on the number of tuple fields. The idea is that
+// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N
+// fields in tuple t, and can be defined in terms of
+// TuplePrefixPrinter<N - 1>.
+
+// The inductive case.
+template <size_t N>
+struct TuplePrefixPrinter {
+ // Prints the first N fields of a tuple.
+ template <typename Tuple>
+ static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+ TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);
+ *os << ", ";
+ UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>
+ ::Print(::std::tr1::get<N - 1>(t), os);
+ }
+
+ // Tersely prints the first N fields of a tuple to a string vector,
+ // one element for each field.
+ template <typename Tuple>
+ static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+ TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
+ ::std::stringstream ss;
+ UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss);
+ strings->push_back(ss.str());
+ }
+};
+
+// Base cases.
+template <>
+struct TuplePrefixPrinter<0> {
+ template <typename Tuple>
+ static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}
+
+ template <typename Tuple>
+ static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}
+};
+// We have to specialize the entire TuplePrefixPrinter<> class
+// template here, even though the definition of
+// TersePrintPrefixToStrings() is the same as the generic version, as
+// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't
+// support specializing a method template of a class template.
+template <>
+struct TuplePrefixPrinter<1> {
+ template <typename Tuple>
+ static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+ UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::
+ Print(::std::tr1::get<0>(t), os);
+ }
+
+ template <typename Tuple>
+ static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+ ::std::stringstream ss;
+ UniversalTersePrint(::std::tr1::get<0>(t), &ss);
+ strings->push_back(ss.str());
+ }
+};
+
+// Helper function for printing a tuple. T must be instantiated with
+// a tuple type.
+template <typename T>
+void PrintTupleTo(const T& t, ::std::ostream* os) {
+ *os << "(";
+ TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>::
+ PrintPrefixTo(t, os);
+ *os << ")";
+}
+
+// Prints the fields of a tuple tersely to a string vector, one
+// element for each field. See the comment before
+// UniversalTersePrint() for how we define "tersely".
+template <typename Tuple>
+Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
+ Strings result;
+ TuplePrefixPrinter< ::std::tr1::tuple_size<Tuple>::value>::
+ TersePrintPrefixToStrings(value, &result);
+ return result;
+}
+#endif // GTEST_HAS_TR1_TUPLE
+
+} // namespace internal
+
+template <typename T>
+::std::string PrintToString(const T& value) {
+ ::std::stringstream ss;
+ internal::UniversalTersePrinter<T>::Print(value, &ss);
+ return ss.str();
+}
+
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+namespace internal {
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Outputs a message explaining invalid registration of different
+// fixture class for the same test case. This may happen when
+// TEST_P macro is used to define two tests with the same name
+// but in different namespaces.
+GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name,
+ const char* file, int line);
+
+template <typename> class ParamGeneratorInterface;
+template <typename> class ParamGenerator;
+
+// Interface for iterating over elements provided by an implementation
+// of ParamGeneratorInterface<T>.
+template <typename T>
+class ParamIteratorInterface {
+ public:
+ virtual ~ParamIteratorInterface() {}
+ // A pointer to the base generator instance.
+ // Used only for the purposes of iterator comparison
+ // to make sure that two iterators belong to the same generator.
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
+ // Advances iterator to point to the next element
+ // provided by the generator. The caller is responsible
+ // for not calling Advance() on an iterator equal to
+ // BaseGenerator()->End().
+ virtual void Advance() = 0;
+ // Clones the iterator object. Used for implementing copy semantics
+ // of ParamIterator<T>.
+ virtual ParamIteratorInterface* Clone() const = 0;
+ // Dereferences the current iterator and provides (read-only) access
+ // to the pointed value. It is the caller's responsibility not to call
+ // Current() on an iterator equal to BaseGenerator()->End().
+ // Used for implementing ParamGenerator<T>::operator*().
+ virtual const T* Current() const = 0;
+ // Determines whether the given iterator and other point to the same
+ // element in the sequence generated by the generator.
+ // Used for implementing ParamGenerator<T>::operator==().
+ virtual bool Equals(const ParamIteratorInterface& other) const = 0;
+};
+
+// Class iterating over elements provided by an implementation of
+// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
+// and implements the const forward iterator concept.
+template <typename T>
+class ParamIterator {
+ public:
+ typedef T value_type;
+ typedef const T& reference;
+ typedef ptrdiff_t difference_type;
+
+ // ParamIterator assumes ownership of the impl_ pointer.
+ ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
+ ParamIterator& operator=(const ParamIterator& other) {
+ if (this != &other)
+ impl_.reset(other.impl_->Clone());
+ return *this;
+ }
+
+ const T& operator*() const { return *impl_->Current(); }
+ const T* operator->() const { return impl_->Current(); }
+ // Prefix version of operator++.
+ ParamIterator& operator++() {
+ impl_->Advance();
+ return *this;
+ }
+ // Postfix version of operator++.
+ ParamIterator operator++(int /*unused*/) {
+ ParamIteratorInterface<T>* clone = impl_->Clone();
+ impl_->Advance();
+ return ParamIterator(clone);
+ }
+ bool operator==(const ParamIterator& other) const {
+ return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
+ }
+ bool operator!=(const ParamIterator& other) const {
+ return !(*this == other);
+ }
+
+ private:
+ friend class ParamGenerator<T>;
+ explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
+ scoped_ptr<ParamIteratorInterface<T> > impl_;
+};
+
+// ParamGeneratorInterface<T> is the binary interface to access generators
+// defined in other translation units.
+template <typename T>
+class ParamGeneratorInterface {
+ public:
+ typedef T ParamType;
+
+ virtual ~ParamGeneratorInterface() {}
+
+ // Generator interface definition
+ virtual ParamIteratorInterface<T>* Begin() const = 0;
+ virtual ParamIteratorInterface<T>* End() const = 0;
+};
+
+// Wraps ParamGeneratorInterface<T> and provides general generator syntax
+// compatible with the STL Container concept.
+// This class implements copy initialization semantics and the contained
+// ParamGeneratorInterface<T> instance is shared among all copies
+// of the original object. This is possible because that instance is immutable.
+template<typename T>
+class ParamGenerator {
+ public:
+ typedef ParamIterator<T> iterator;
+
+ explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
+ ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
+
+ ParamGenerator& operator=(const ParamGenerator& other) {
+ impl_ = other.impl_;
+ return *this;
+ }
+
+ iterator begin() const { return iterator(impl_->Begin()); }
+ iterator end() const { return iterator(impl_->End()); }
+
+ private:
+ linked_ptr<const ParamGeneratorInterface<T> > impl_;
+};
+
+// Generates values from a range of two comparable values. Can be used to
+// generate sequences of user-defined types that implement operator+() and
+// operator<().
+// This class is used in the Range() function.
+template <typename T, typename IncrementT>
+class RangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+ RangeGenerator(T begin, T end, IncrementT step)
+ : begin_(begin), end_(end),
+ step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
+ virtual ~RangeGenerator() {}
+
+ virtual ParamIteratorInterface<T>* Begin() const {
+ return new Iterator(this, begin_, 0, step_);
+ }
+ virtual ParamIteratorInterface<T>* End() const {
+ return new Iterator(this, end_, end_index_, step_);
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<T> {
+ public:
+ Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
+ IncrementT step)
+ : base_(base), value_(value), index_(index), step_(step) {}
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
+ return base_;
+ }
+ virtual void Advance() {
+ value_ = value_ + step_;
+ index_++;
+ }
+ virtual ParamIteratorInterface<T>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const T* Current() const { return &value_; }
+ virtual bool Equals(const ParamIteratorInterface<T>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const int other_index =
+ CheckedDowncastToActualType<const Iterator>(&other)->index_;
+ return index_ == other_index;
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : ParamIteratorInterface<T>(),
+ base_(other.base_), value_(other.value_), index_(other.index_),
+ step_(other.step_) {}
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<T>* const base_;
+ T value_;
+ int index_;
+ const IncrementT step_;
+ }; // class RangeGenerator::Iterator
+
+ static int CalculateEndIndex(const T& begin,
+ const T& end,
+ const IncrementT& step) {
+ int end_index = 0;
+ for (T i = begin; i < end; i = i + step)
+ end_index++;
+ return end_index;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const RangeGenerator& other);
+
+ const T begin_;
+ const T end_;
+ const IncrementT step_;
+ // The index for the end() iterator. All the elements in the generated
+ // sequence are indexed (0-based) to aid iterator comparison.
+ const int end_index_;
+}; // class RangeGenerator
+
+
+// Generates values from a pair of STL-style iterators. Used in the
+// ValuesIn() function. The elements are copied from the source range
+// since the source can be located on the stack, and the generator
+// is likely to persist beyond that stack frame.
+template <typename T>
+class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+ template <typename ForwardIterator>
+ ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
+ : container_(begin, end) {}
+ virtual ~ValuesInIteratorRangeGenerator() {}
+
+ virtual ParamIteratorInterface<T>* Begin() const {
+ return new Iterator(this, container_.begin());
+ }
+ virtual ParamIteratorInterface<T>* End() const {
+ return new Iterator(this, container_.end());
+ }
+
+ private:
+ typedef typename ::std::vector<T> ContainerType;
+
+ class Iterator : public ParamIteratorInterface<T> {
+ public:
+ Iterator(const ParamGeneratorInterface<T>* base,
+ typename ContainerType::const_iterator iterator)
+ : base_(base), iterator_(iterator) {}
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
+ return base_;
+ }
+ virtual void Advance() {
+ ++iterator_;
+ value_.reset();
+ }
+ virtual ParamIteratorInterface<T>* Clone() const {
+ return new Iterator(*this);
+ }
+ // We need to use cached value referenced by iterator_ because *iterator_
+ // can return a temporary object (and of type other then T), so just
+ // having "return &*iterator_;" doesn't work.
+ // value_ is updated here and not in Advance() because Advance()
+ // can advance iterator_ beyond the end of the range, and we cannot
+ // detect that fact. The client code, on the other hand, is
+ // responsible for not calling Current() on an out-of-range iterator.
+ virtual const T* Current() const {
+ if (value_.get() == NULL)
+ value_.reset(new T(*iterator_));
+ return value_.get();
+ }
+ virtual bool Equals(const ParamIteratorInterface<T>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ return iterator_ ==
+ CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ // The explicit constructor call suppresses a false warning
+ // emitted by gcc when supplied with the -Wextra option.
+ : ParamIteratorInterface<T>(),
+ base_(other.base_),
+ iterator_(other.iterator_) {}
+
+ const ParamGeneratorInterface<T>* const base_;
+ typename ContainerType::const_iterator iterator_;
+ // A cached value of *iterator_. We keep it here to allow access by
+ // pointer in the wrapping iterator's operator->().
+ // value_ needs to be mutable to be accessed in Current().
+ // Use of scoped_ptr helps manage cached value's lifetime,
+ // which is bound by the lifespan of the iterator itself.
+ mutable scoped_ptr<const T> value_;
+ }; // class ValuesInIteratorRangeGenerator::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const ValuesInIteratorRangeGenerator& other);
+
+ const ContainerType container_;
+}; // class ValuesInIteratorRangeGenerator
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Stores a parameter value and later creates tests parameterized with that
+// value.
+template <class TestClass>
+class ParameterizedTestFactory : public TestFactoryBase {
+ public:
+ typedef typename TestClass::ParamType ParamType;
+ explicit ParameterizedTestFactory(ParamType parameter) :
+ parameter_(parameter) {}
+ virtual Test* CreateTest() {
+ TestClass::SetParam(&parameter_);
+ return new TestClass();
+ }
+
+ private:
+ const ParamType parameter_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactoryBase is a base class for meta-factories that create
+// test factories for passing into MakeAndRegisterTestInfo function.
+template <class ParamType>
+class TestMetaFactoryBase {
+ public:
+ virtual ~TestMetaFactoryBase() {}
+
+ virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactory creates test factories for passing into
+// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
+// ownership of test factory pointer, same factory object cannot be passed
+// into that method twice. But ParameterizedTestCaseInfo is going to call
+// it for each Test/Parameter value combination. Thus it needs meta factory
+// creator class.
+template <class TestCase>
+class TestMetaFactory
+ : public TestMetaFactoryBase<typename TestCase::ParamType> {
+ public:
+ typedef typename TestCase::ParamType ParamType;
+
+ TestMetaFactory() {}
+
+ virtual TestFactoryBase* CreateTestFactory(ParamType parameter) {
+ return new ParameterizedTestFactory<TestCase>(parameter);
+ }
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseInfoBase is a generic interface
+// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase
+// accumulates test information provided by TEST_P macro invocations
+// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations
+// and uses that information to register all resulting test instances
+// in RegisterTests method. The ParameterizeTestCaseRegistry class holds
+// a collection of pointers to the ParameterizedTestCaseInfo objects
+// and calls RegisterTests() on each of them when asked.
+class ParameterizedTestCaseInfoBase {
+ public:
+ virtual ~ParameterizedTestCaseInfoBase() {}
+
+ // Base part of test case name for display purposes.
+ virtual const string& GetTestCaseName() const = 0;
+ // Test case id to verify identity.
+ virtual TypeId GetTestCaseTypeId() const = 0;
+ // UnitTest class invokes this method to register tests in this
+ // test case right before running them in RUN_ALL_TESTS macro.
+ // This method should not be called more then once on any single
+ // instance of a ParameterizedTestCaseInfoBase derived class.
+ virtual void RegisterTests() = 0;
+
+ protected:
+ ParameterizedTestCaseInfoBase() {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P
+// macro invocations for a particular test case and generators
+// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that
+// test case. It registers tests with all values generated by all
+// generators when asked.
+template <class TestCase>
+class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
+ public:
+ // ParamType and GeneratorCreationFunc are private types but are required
+ // for declarations of public methods AddTestPattern() and
+ // AddTestCaseInstantiation().
+ typedef typename TestCase::ParamType ParamType;
+ // A function that returns an instance of appropriate generator type.
+ typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
+
+ explicit ParameterizedTestCaseInfo(const char* name)
+ : test_case_name_(name) {}
+
+ // Test case base name for display purposes.
+ virtual const string& GetTestCaseName() const { return test_case_name_; }
+ // Test case id to verify identity.
+ virtual TypeId GetTestCaseTypeId() const { return GetTypeId<TestCase>(); }
+ // TEST_P macro uses AddTestPattern() to record information
+ // about a single test in a LocalTestInfo structure.
+ // test_case_name is the base name of the test case (without invocation
+ // prefix). test_base_name is the name of an individual test without
+ // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
+ // test case base name and DoBar is test base name.
+ void AddTestPattern(const char* test_case_name,
+ const char* test_base_name,
+ TestMetaFactoryBase<ParamType>* meta_factory) {
+ tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name,
+ test_base_name,
+ meta_factory)));
+ }
+ // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information
+ // about a generator.
+ int AddTestCaseInstantiation(const string& instantiation_name,
+ GeneratorCreationFunc* func,
+ const char* /* file */,
+ int /* line */) {
+ instantiations_.push_back(::std::make_pair(instantiation_name, func));
+ return 0; // Return value used only to run this method in namespace scope.
+ }
+ // UnitTest class invokes this method to register tests in this test case
+ // test cases right before running tests in RUN_ALL_TESTS macro.
+ // This method should not be called more then once on any single
+ // instance of a ParameterizedTestCaseInfoBase derived class.
+ // UnitTest has a guard to prevent from calling this method more then once.
+ virtual void RegisterTests() {
+ for (typename TestInfoContainer::iterator test_it = tests_.begin();
+ test_it != tests_.end(); ++test_it) {
+ linked_ptr<TestInfo> test_info = *test_it;
+ for (typename InstantiationContainer::iterator gen_it =
+ instantiations_.begin(); gen_it != instantiations_.end();
+ ++gen_it) {
+ const string& instantiation_name = gen_it->first;
+ ParamGenerator<ParamType> generator((*gen_it->second)());
+
+ string test_case_name;
+ if ( !instantiation_name.empty() )
+ test_case_name = instantiation_name + "/";
+ test_case_name += test_info->test_case_base_name;
+
+ int i = 0;
+ for (typename ParamGenerator<ParamType>::iterator param_it =
+ generator.begin();
+ param_it != generator.end(); ++param_it, ++i) {
+ Message test_name_stream;
+ test_name_stream << test_info->test_base_name << "/" << i;
+ MakeAndRegisterTestInfo(
+ test_case_name.c_str(),
+ test_name_stream.GetString().c_str(),
+ NULL, // No type parameter.
+ PrintToString(*param_it).c_str(),
+ GetTestCaseTypeId(),
+ TestCase::SetUpTestCase,
+ TestCase::TearDownTestCase,
+ test_info->test_meta_factory->CreateTestFactory(*param_it));
+ } // for param_it
+ } // for gen_it
+ } // for test_it
+ } // RegisterTests
+
+ private:
+ // LocalTestInfo structure keeps information about a single test registered
+ // with TEST_P macro.
+ struct TestInfo {
+ TestInfo(const char* a_test_case_base_name,
+ const char* a_test_base_name,
+ TestMetaFactoryBase<ParamType>* a_test_meta_factory) :
+ test_case_base_name(a_test_case_base_name),
+ test_base_name(a_test_base_name),
+ test_meta_factory(a_test_meta_factory) {}
+
+ const string test_case_base_name;
+ const string test_base_name;
+ const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
+ };
+ typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer;
+ // Keeps pairs of <Instantiation name, Sequence generator creation function>
+ // received from INSTANTIATE_TEST_CASE_P macros.
+ typedef ::std::vector<std::pair<string, GeneratorCreationFunc*> >
+ InstantiationContainer;
+
+ const string test_case_name_;
+ TestInfoContainer tests_;
+ InstantiationContainer instantiations_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo);
+}; // class ParameterizedTestCaseInfo
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase
+// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P
+// macros use it to locate their corresponding ParameterizedTestCaseInfo
+// descriptors.
+class ParameterizedTestCaseRegistry {
+ public:
+ ParameterizedTestCaseRegistry() {}
+ ~ParameterizedTestCaseRegistry() {
+ for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+ it != test_case_infos_.end(); ++it) {
+ delete *it;
+ }
+ }
+
+ // Looks up or creates and returns a structure containing information about
+ // tests and instantiations of a particular test case.
+ template <class TestCase>
+ ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(
+ const char* test_case_name,
+ const char* file,
+ int line) {
+ ParameterizedTestCaseInfo<TestCase>* typed_test_info = NULL;
+ for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+ it != test_case_infos_.end(); ++it) {
+ if ((*it)->GetTestCaseName() == test_case_name) {
+ if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) {
+ // Complain about incorrect usage of Google Test facilities
+ // and terminate the program since we cannot guaranty correct
+ // test case setup and tear-down in this case.
+ ReportInvalidTestCaseType(test_case_name, file, line);
+ posix::Abort();
+ } else {
+ // At this point we are sure that the object we found is of the same
+ // type we are looking for, so we downcast it to that type
+ // without further checks.
+ typed_test_info = CheckedDowncastToActualType<
+ ParameterizedTestCaseInfo<TestCase> >(*it);
+ }
+ break;
+ }
+ }
+ if (typed_test_info == NULL) {
+ typed_test_info = new ParameterizedTestCaseInfo<TestCase>(test_case_name);
+ test_case_infos_.push_back(typed_test_info);
+ }
+ return typed_test_info;
+ }
+ void RegisterTests() {
+ for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+ it != test_case_infos_.end(); ++it) {
+ (*it)->RegisterTests();
+ }
+ }
+
+ private:
+ typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer;
+
+ TestCaseInfoContainer test_case_infos_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry);
+};
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+// This file was GENERATED by command:
+// pump.py gtest-param-util-generated.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+// Currently Google Test supports at most 50 arguments in Values,
+// and at most 10 arguments in Combine. Please contact
+// googletestframework@googlegroups.com if you need more.
+// Please note that the number of arguments to Combine is limited
+// by the maximum arity of the implementation of tr1::tuple which is
+// currently set at 10.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Forward declarations of ValuesIn(), which is implemented in
+// include/gtest/gtest-param-test.h.
+template <typename ForwardIterator>
+internal::ParamGenerator<
+ typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end);
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container);
+
+namespace internal {
+
+// Used in the Values() function to provide polymorphic capabilities.
+template <typename T1>
+class ValueArray1 {
+ public:
+ explicit ValueArray1(T1 v1) : v1_(v1) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray1& other);
+
+ const T1 v1_;
+};
+
+template <typename T1, typename T2>
+class ValueArray2 {
+ public:
+ ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray2& other);
+
+ const T1 v1_;
+ const T2 v2_;
+};
+
+template <typename T1, typename T2, typename T3>
+class ValueArray3 {
+ public:
+ ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray3& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+class ValueArray4 {
+ public:
+ ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray4& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class ValueArray5 {
+ public:
+ ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray5& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+class ValueArray6 {
+ public:
+ ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray6& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+class ValueArray7 {
+ public:
+ ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray7& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+class ValueArray8 {
+ public:
+ ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray8& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+class ValueArray9 {
+ public:
+ ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray9& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+class ValueArray10 {
+ public:
+ ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray10& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+class ValueArray11 {
+ public:
+ ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray11& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+class ValueArray12 {
+ public:
+ ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray12& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+class ValueArray13 {
+ public:
+ ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray13& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+class ValueArray14 {
+ public:
+ ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray14& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+class ValueArray15 {
+ public:
+ ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray15& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+class ValueArray16 {
+ public:
+ ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray16& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+class ValueArray17 {
+ public:
+ ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+ T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray17& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+class ValueArray18 {
+ public:
+ ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray18& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+class ValueArray19 {
+ public:
+ ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray19& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+class ValueArray20 {
+ public:
+ ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray20& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+class ValueArray21 {
+ public:
+ ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray21& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+class ValueArray22 {
+ public:
+ ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray22& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+class ValueArray23 {
+ public:
+ ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray23& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+class ValueArray24 {
+ public:
+ ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray24& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+class ValueArray25 {
+ public:
+ ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+ T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray25& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+class ValueArray26 {
+ public:
+ ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray26& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+class ValueArray27 {
+ public:
+ ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+ v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+ v26_(v26), v27_(v27) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray27& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+class ValueArray28 {
+ public:
+ ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+ v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray28& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+class ValueArray29 {
+ public:
+ ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+ v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray29& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+class ValueArray30 {
+ public:
+ ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray30& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+class ValueArray31 {
+ public:
+ ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray31& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+class ValueArray32 {
+ public:
+ ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+ v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray32& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+class ValueArray33 {
+ public:
+ ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
+ T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray33& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+class ValueArray34 {
+ public:
+ ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray34& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+class ValueArray35 {
+ public:
+ ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+ v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+ v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
+ v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray35& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+class ValueArray36 {
+ public:
+ ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+ v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
+ v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray36& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+class ValueArray37 {
+ public:
+ ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+ v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
+ v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
+ v36_(v36), v37_(v37) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray37& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+class ValueArray38 {
+ public:
+ ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray38& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+class ValueArray39 {
+ public:
+ ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray39& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+class ValueArray40 {
+ public:
+ ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+ v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
+ v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
+ v40_(v40) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray40& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+class ValueArray41 {
+ public:
+ ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
+ T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray41& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+class ValueArray42 {
+ public:
+ ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray42& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+class ValueArray43 {
+ public:
+ ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+ v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+ v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
+ v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
+ v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray43& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+class ValueArray44 {
+ public:
+ ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+ v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
+ v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
+ v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
+ v43_(v43), v44_(v44) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray44& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+class ValueArray45 {
+ public:
+ ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+ v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
+ v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
+ v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
+ v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray45& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+class ValueArray46 {
+ public:
+ ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
+ v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray46& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+class ValueArray47 {
+ public:
+ ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
+ v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
+ v47_(v47) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray47& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+class ValueArray48 {
+ public:
+ ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+ v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
+ v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
+ v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
+ v46_(v46), v47_(v47), v48_(v48) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+ static_cast<T>(v48_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray48& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+ const T48 v48_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+class ValueArray49 {
+ public:
+ ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
+ T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
+ v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+ static_cast<T>(v48_), static_cast<T>(v49_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray49& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+ const T48 v48_;
+ const T49 v49_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+class ValueArray50 {
+ public:
+ ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
+ T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
+ v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+ static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray50& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+ const T48 v48_;
+ const T49 v49_;
+ const T50 v50_;
+};
+
+# if GTEST_HAS_COMBINE
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Generates values from the Cartesian product of values produced
+// by the argument generators.
+//
+template <typename T1, typename T2>
+class CartesianProductGenerator2
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2> ParamType;
+
+ CartesianProductGenerator2(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2)
+ : g1_(g1), g2_(g2) {}
+ virtual ~CartesianProductGenerator2() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current2_;
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator2::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator2& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+}; // class CartesianProductGenerator2
+
+
+template <typename T1, typename T2, typename T3>
+class CartesianProductGenerator3
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3> ParamType;
+
+ CartesianProductGenerator3(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
+ : g1_(g1), g2_(g2), g3_(g3) {}
+ virtual ~CartesianProductGenerator3() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current3_;
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator3::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator3& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+}; // class CartesianProductGenerator3
+
+
+template <typename T1, typename T2, typename T3, typename T4>
+class CartesianProductGenerator4
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType;
+
+ CartesianProductGenerator4(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
+ virtual ~CartesianProductGenerator4() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current4_;
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator4::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator4& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+}; // class CartesianProductGenerator4
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class CartesianProductGenerator5
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType;
+
+ CartesianProductGenerator5(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
+ virtual ~CartesianProductGenerator5() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current5_;
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator5::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator5& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+}; // class CartesianProductGenerator5
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+class CartesianProductGenerator6
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5,
+ T6> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType;
+
+ CartesianProductGenerator6(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
+ virtual ~CartesianProductGenerator6() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current6_;
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator6::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator6& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+}; // class CartesianProductGenerator6
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+class CartesianProductGenerator7
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
+
+ CartesianProductGenerator7(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
+ virtual ~CartesianProductGenerator7() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current7_;
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator7::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator7& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+}; // class CartesianProductGenerator7
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+class CartesianProductGenerator8
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7, T8> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
+
+ CartesianProductGenerator8(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+ const ParamGenerator<T8>& g8)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
+ g8_(g8) {}
+ virtual ~CartesianProductGenerator8() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin(), g8_, g8_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+ g8_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7,
+ const ParamGenerator<T8>& g8,
+ const typename ParamGenerator<T8>::iterator& current8)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+ begin8_(g8.begin()), end8_(g8.end()), current8_(current8) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current8_;
+ if (current8_ == end8_) {
+ current8_ = begin8_;
+ ++current7_;
+ }
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_ &&
+ current8_ == typed_other->current8_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_),
+ begin8_(other.begin8_),
+ end8_(other.end8_),
+ current8_(other.current8_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_, *current8_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_ ||
+ current8_ == end8_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ const typename ParamGenerator<T8>::iterator begin8_;
+ const typename ParamGenerator<T8>::iterator end8_;
+ typename ParamGenerator<T8>::iterator current8_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator8::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator8& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+ const ParamGenerator<T8> g8_;
+}; // class CartesianProductGenerator8
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+class CartesianProductGenerator9
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7, T8, T9> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
+
+ CartesianProductGenerator9(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+ const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9) {}
+ virtual ~CartesianProductGenerator9() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+ g8_.end(), g9_, g9_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7,
+ const ParamGenerator<T8>& g8,
+ const typename ParamGenerator<T8>::iterator& current8,
+ const ParamGenerator<T9>& g9,
+ const typename ParamGenerator<T9>::iterator& current9)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+ begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
+ begin9_(g9.begin()), end9_(g9.end()), current9_(current9) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current9_;
+ if (current9_ == end9_) {
+ current9_ = begin9_;
+ ++current8_;
+ }
+ if (current8_ == end8_) {
+ current8_ = begin8_;
+ ++current7_;
+ }
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_ &&
+ current8_ == typed_other->current8_ &&
+ current9_ == typed_other->current9_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_),
+ begin8_(other.begin8_),
+ end8_(other.end8_),
+ current8_(other.current8_),
+ begin9_(other.begin9_),
+ end9_(other.end9_),
+ current9_(other.current9_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_, *current8_,
+ *current9_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_ ||
+ current8_ == end8_ ||
+ current9_ == end9_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ const typename ParamGenerator<T8>::iterator begin8_;
+ const typename ParamGenerator<T8>::iterator end8_;
+ typename ParamGenerator<T8>::iterator current8_;
+ const typename ParamGenerator<T9>::iterator begin9_;
+ const typename ParamGenerator<T9>::iterator end9_;
+ typename ParamGenerator<T9>::iterator current9_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator9::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator9& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+ const ParamGenerator<T8> g8_;
+ const ParamGenerator<T9> g9_;
+}; // class CartesianProductGenerator9
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+class CartesianProductGenerator10
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7, T8, T9, T10> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
+
+ CartesianProductGenerator10(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+ const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,
+ const ParamGenerator<T10>& g10)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9), g10_(g10) {}
+ virtual ~CartesianProductGenerator10() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+ g8_.end(), g9_, g9_.end(), g10_, g10_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7,
+ const ParamGenerator<T8>& g8,
+ const typename ParamGenerator<T8>::iterator& current8,
+ const ParamGenerator<T9>& g9,
+ const typename ParamGenerator<T9>::iterator& current9,
+ const ParamGenerator<T10>& g10,
+ const typename ParamGenerator<T10>::iterator& current10)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+ begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
+ begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
+ begin10_(g10.begin()), end10_(g10.end()), current10_(current10) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current10_;
+ if (current10_ == end10_) {
+ current10_ = begin10_;
+ ++current9_;
+ }
+ if (current9_ == end9_) {
+ current9_ = begin9_;
+ ++current8_;
+ }
+ if (current8_ == end8_) {
+ current8_ = begin8_;
+ ++current7_;
+ }
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_ &&
+ current8_ == typed_other->current8_ &&
+ current9_ == typed_other->current9_ &&
+ current10_ == typed_other->current10_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_),
+ begin8_(other.begin8_),
+ end8_(other.end8_),
+ current8_(other.current8_),
+ begin9_(other.begin9_),
+ end9_(other.end9_),
+ current9_(other.current9_),
+ begin10_(other.begin10_),
+ end10_(other.end10_),
+ current10_(other.current10_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_, *current8_,
+ *current9_, *current10_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_ ||
+ current8_ == end8_ ||
+ current9_ == end9_ ||
+ current10_ == end10_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ const typename ParamGenerator<T8>::iterator begin8_;
+ const typename ParamGenerator<T8>::iterator end8_;
+ typename ParamGenerator<T8>::iterator current8_;
+ const typename ParamGenerator<T9>::iterator begin9_;
+ const typename ParamGenerator<T9>::iterator end9_;
+ typename ParamGenerator<T9>::iterator current9_;
+ const typename ParamGenerator<T10>::iterator begin10_;
+ const typename ParamGenerator<T10>::iterator end10_;
+ typename ParamGenerator<T10>::iterator current10_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator10::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator10& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+ const ParamGenerator<T8> g8_;
+ const ParamGenerator<T9> g9_;
+ const ParamGenerator<T10> g10_;
+}; // class CartesianProductGenerator10
+
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Helper classes providing Combine() with polymorphic features. They allow
+// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
+// convertible to U.
+//
+template <class Generator1, class Generator2>
+class CartesianProductHolder2 {
+ public:
+CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
+ : g1_(g1), g2_(g2) {}
+ template <typename T1, typename T2>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2> >(
+ new CartesianProductGenerator2<T1, T2>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder2& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+}; // class CartesianProductHolder2
+
+template <class Generator1, class Generator2, class Generator3>
+class CartesianProductHolder3 {
+ public:
+CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3)
+ : g1_(g1), g2_(g2), g3_(g3) {}
+ template <typename T1, typename T2, typename T3>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >(
+ new CartesianProductGenerator3<T1, T2, T3>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder3& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+}; // class CartesianProductHolder3
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4>
+class CartesianProductHolder4 {
+ public:
+CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
+ template <typename T1, typename T2, typename T3, typename T4>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >(
+ new CartesianProductGenerator4<T1, T2, T3, T4>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder4& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+}; // class CartesianProductHolder4
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5>
+class CartesianProductHolder5 {
+ public:
+CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >(
+ new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder5& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+}; // class CartesianProductHolder5
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6>
+class CartesianProductHolder6 {
+ public:
+CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >(
+ new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder6& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+}; // class CartesianProductHolder6
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7>
+class CartesianProductHolder7 {
+ public:
+CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >(
+ new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder7& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+}; // class CartesianProductHolder7
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7,
+ class Generator8>
+class CartesianProductHolder8 {
+ public:
+CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7, const Generator8& g8)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
+ g8_(g8) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7,
+ T8> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
+ new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_),
+ static_cast<ParamGenerator<T8> >(g8_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder8& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+ const Generator8 g8_;
+}; // class CartesianProductHolder8
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7,
+ class Generator8, class Generator9>
+class CartesianProductHolder9 {
+ public:
+CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7, const Generator8& g8,
+ const Generator9& g9)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9> >(
+ new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_),
+ static_cast<ParamGenerator<T8> >(g8_),
+ static_cast<ParamGenerator<T9> >(g9_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder9& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+ const Generator8 g8_;
+ const Generator9 g9_;
+}; // class CartesianProductHolder9
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7,
+ class Generator8, class Generator9, class Generator10>
+class CartesianProductHolder10 {
+ public:
+CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7, const Generator8& g8,
+ const Generator9& g9, const Generator10& g10)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9), g10_(g10) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9, T10> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9, T10> >(
+ new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
+ T10>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_),
+ static_cast<ParamGenerator<T8> >(g8_),
+ static_cast<ParamGenerator<T9> >(g9_),
+ static_cast<ParamGenerator<T10> >(g10_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder10& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+ const Generator8 g8_;
+ const Generator9 g9_;
+ const Generator10 g10_;
+}; // class CartesianProductHolder10
+
+# endif // GTEST_HAS_COMBINE
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Functions producing parameter generators.
+//
+// Google Test uses these generators to produce parameters for value-
+// parameterized tests. When a parameterized test case is instantiated
+// with a particular generator, Google Test creates and runs tests
+// for each element in the sequence produced by the generator.
+//
+// In the following sample, tests from test case FooTest are instantiated
+// each three times with parameter values 3, 5, and 8:
+//
+// class FooTest : public TestWithParam<int> { ... };
+//
+// TEST_P(FooTest, TestThis) {
+// }
+// TEST_P(FooTest, TestThat) {
+// }
+// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
+//
+
+// Range() returns generators providing sequences of values in a range.
+//
+// Synopsis:
+// Range(start, end)
+// - returns a generator producing a sequence of values {start, start+1,
+// start+2, ..., }.
+// Range(start, end, step)
+// - returns a generator producing a sequence of values {start, start+step,
+// start+step+step, ..., }.
+// Notes:
+// * The generated sequences never include end. For example, Range(1, 5)
+// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
+// returns a generator producing {1, 3, 5, 7}.
+// * start and end must have the same type. That type may be any integral or
+// floating-point type or a user defined type satisfying these conditions:
+// * It must be assignable (have operator=() defined).
+// * It must have operator+() (operator+(int-compatible type) for
+// two-operand version).
+// * It must have operator<() defined.
+// Elements in the resulting sequences will also have that type.
+// * Condition start < end must be satisfied in order for resulting sequences
+// to contain any elements.
+//
+template <typename T, typename IncrementT>
+internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
+ return internal::ParamGenerator<T>(
+ new internal::RangeGenerator<T, IncrementT>(start, end, step));
+}
+
+template <typename T>
+internal::ParamGenerator<T> Range(T start, T end) {
+ return Range(start, end, 1);
+}
+
+// ValuesIn() function allows generation of tests with parameters coming from
+// a container.
+//
+// Synopsis:
+// ValuesIn(const T (&array)[N])
+// - returns a generator producing sequences with elements from
+// a C-style array.
+// ValuesIn(const Container& container)
+// - returns a generator producing sequences with elements from
+// an STL-style container.
+// ValuesIn(Iterator begin, Iterator end)
+// - returns a generator producing sequences with elements from
+// a range [begin, end) defined by a pair of STL-style iterators. These
+// iterators can also be plain C pointers.
+//
+// Please note that ValuesIn copies the values from the containers
+// passed in and keeps them to generate tests in RUN_ALL_TESTS().
+//
+// Examples:
+//
+// This instantiates tests from test case StringTest
+// each with C-string values of "foo", "bar", and "baz":
+//
+// const char* strings[] = {"foo", "bar", "baz"};
+// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
+//
+// This instantiates tests from test case StlStringTest
+// each with STL strings with values "a" and "b":
+//
+// ::std::vector< ::std::string> GetParameterStrings() {
+// ::std::vector< ::std::string> v;
+// v.push_back("a");
+// v.push_back("b");
+// return v;
+// }
+//
+// INSTANTIATE_TEST_CASE_P(CharSequence,
+// StlStringTest,
+// ValuesIn(GetParameterStrings()));
+//
+//
+// This will also instantiate tests from CharTest
+// each with parameter values 'a' and 'b':
+//
+// ::std::list<char> GetParameterChars() {
+// ::std::list<char> list;
+// list.push_back('a');
+// list.push_back('b');
+// return list;
+// }
+// ::std::list<char> l = GetParameterChars();
+// INSTANTIATE_TEST_CASE_P(CharSequence2,
+// CharTest,
+// ValuesIn(l.begin(), l.end()));
+//
+template <typename ForwardIterator>
+internal::ParamGenerator<
+ typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end) {
+ typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
+ ::value_type ParamType;
+ return internal::ParamGenerator<ParamType>(
+ new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
+}
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
+ return ValuesIn(array, array + N);
+}
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container) {
+ return ValuesIn(container.begin(), container.end());
+}
+
+// Values() allows generating tests from explicitly specified list of
+// parameters.
+//
+// Synopsis:
+// Values(T v1, T v2, ..., T vN)
+// - returns a generator producing sequences with elements v1, v2, ..., vN.
+//
+// For example, this instantiates tests from test case BarTest each
+// with values "one", "two", and "three":
+//
+// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
+//
+// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
+// The exact type of values will depend on the type of parameter in BazTest.
+//
+// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
+//
+// Currently, Values() supports from 1 to 50 parameters.
+//
+template <typename T1>
+internal::ValueArray1<T1> Values(T1 v1) {
+ return internal::ValueArray1<T1>(v1);
+}
+
+template <typename T1, typename T2>
+internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
+ return internal::ValueArray2<T1, T2>(v1, v2);
+}
+
+template <typename T1, typename T2, typename T3>
+internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
+ return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
+ return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5) {
+ return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6) {
+ return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6, T7 v7) {
+ return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
+ v6, v7);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
+ return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
+ v5, v6, v7, v8);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
+ return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
+ v4, v5, v6, v7, v8, v9);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
+ T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
+ return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
+ v2, v3, v4, v5, v6, v7, v8, v9, v10);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
+ T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11) {
+ return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
+ T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12) {
+ return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13) {
+ return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
+ return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+ v14);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
+ return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+ v13, v14, v15);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16) {
+ return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+ v12, v13, v14, v15, v16);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17) {
+ return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+ v11, v12, v13, v14, v15, v16, v17);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+ T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18) {
+ return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+ v10, v11, v12, v13, v14, v15, v16, v17, v18);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+ T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+ T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
+ return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
+ v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
+ return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
+ return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
+ v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22) {
+ return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
+ v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23) {
+ return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
+ v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24) {
+ return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
+ v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
+ v19, v20, v21, v22, v23, v24);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
+ T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
+ T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
+ T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
+ return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
+ v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
+ v18, v19, v20, v21, v22, v23, v24, v25);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26) {
+ return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
+ v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27) {
+ return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
+ v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28) {
+ return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+ v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
+ v28);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29) {
+ return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+ v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
+ v27, v28, v29);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+ T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+ T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
+ return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+ v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
+ v26, v27, v28, v29, v30);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
+ return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+ v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
+ v25, v26, v27, v28, v29, v30, v31);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32) {
+ return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+ v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+ T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33) {
+ return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
+ v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+ T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+ T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
+ T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
+ T31 v31, T32 v32, T33 v33, T34 v34) {
+ return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
+ v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+ T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+ T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
+ return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
+ v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
+ v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+ T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+ T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
+ return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
+ v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+ v34, v35, v36);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+ T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+ T37 v37) {
+ return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
+ v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+ v34, v35, v36, v37);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+ T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+ T37 v37, T38 v38) {
+ return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
+ v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
+ v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
+ v33, v34, v35, v36, v37, v38);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+ T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+ T37 v37, T38 v38, T39 v39) {
+ return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
+ v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
+ v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
+ v32, v33, v34, v35, v36, v37, v38, v39);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
+ T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
+ T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
+ T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
+ T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
+ T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
+ return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
+ v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
+ v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
+ return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
+ v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
+ v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42) {
+ return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+ v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
+ v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
+ v42);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43) {
+ return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+ v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
+ v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
+ v41, v42, v43);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44) {
+ return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+ v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
+ v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
+ v40, v41, v42, v43, v44);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+ T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+ T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
+ T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
+ T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
+ return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+ v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
+ v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
+ v39, v40, v41, v42, v43, v44, v45);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+ T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
+ return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+ v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
+ v38, v39, v40, v41, v42, v43, v44, v45, v46);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+ T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
+ return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
+ v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
+ v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+ T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+ T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
+ T48 v48) {
+ return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
+ v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
+ v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+ T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+ T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
+ T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
+ T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
+ T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
+ T47 v47, T48 v48, T49 v49) {
+ return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
+ v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
+ v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
+ v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+ T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+ T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
+ T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
+ T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
+ return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
+ v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+ v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
+ v48, v49, v50);
+}
+
+// Bool() allows generating tests with parameters in a set of (false, true).
+//
+// Synopsis:
+// Bool()
+// - returns a generator producing sequences with elements {false, true}.
+//
+// It is useful when testing code that depends on Boolean flags. Combinations
+// of multiple flags can be tested when several Bool()'s are combined using
+// Combine() function.
+//
+// In the following example all tests in the test case FlagDependentTest
+// will be instantiated twice with parameters false and true.
+//
+// class FlagDependentTest : public testing::TestWithParam<bool> {
+// virtual void SetUp() {
+// external_flag = GetParam();
+// }
+// }
+// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
+//
+inline internal::ParamGenerator<bool> Bool() {
+ return Values(false, true);
+}
+
+# if GTEST_HAS_COMBINE
+// Combine() allows the user to combine two or more sequences to produce
+// values of a Cartesian product of those sequences' elements.
+//
+// Synopsis:
+// Combine(gen1, gen2, ..., genN)
+// - returns a generator producing sequences with elements coming from
+// the Cartesian product of elements from the sequences generated by
+// gen1, gen2, ..., genN. The sequence elements will have a type of
+// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
+// of elements from sequences produces by gen1, gen2, ..., genN.
+//
+// Combine can have up to 10 arguments. This number is currently limited
+// by the maximum number of elements in the tuple implementation used by Google
+// Test.
+//
+// Example:
+//
+// This will instantiate tests in test case AnimalTest each one with
+// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
+// tuple("dog", BLACK), and tuple("dog", WHITE):
+//
+// enum Color { BLACK, GRAY, WHITE };
+// class AnimalTest
+// : public testing::TestWithParam<tuple<const char*, Color> > {...};
+//
+// TEST_P(AnimalTest, AnimalLooksNice) {...}
+//
+// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
+// Combine(Values("cat", "dog"),
+// Values(BLACK, WHITE)));
+//
+// This will instantiate tests in FlagDependentTest with all variations of two
+// Boolean flags:
+//
+// class FlagDependentTest
+// : public testing::TestWithParam<tuple<bool, bool> > {
+// virtual void SetUp() {
+// // Assigns external_flag_1 and external_flag_2 values from the tuple.
+// tie(external_flag_1, external_flag_2) = GetParam();
+// }
+// };
+//
+// TEST_P(FlagDependentTest, TestFeature1) {
+// // Test your code using external_flag_1 and external_flag_2 here.
+// }
+// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
+// Combine(Bool(), Bool()));
+//
+template <typename Generator1, typename Generator2>
+internal::CartesianProductHolder2<Generator1, Generator2> Combine(
+ const Generator1& g1, const Generator2& g2) {
+ return internal::CartesianProductHolder2<Generator1, Generator2>(
+ g1, g2);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3>
+internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3) {
+ return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
+ g1, g2, g3);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4>
+internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
+ Generator4> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4) {
+ return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
+ Generator4>(
+ g1, g2, g3, g4);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5>
+internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
+ Generator4, Generator5> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5) {
+ return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
+ Generator4, Generator5>(
+ g1, g2, g3, g4, g5);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6>
+internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6) {
+ return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6>(
+ g1, g2, g3, g4, g5, g6);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7>
+internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7) {
+ return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7>(
+ g1, g2, g3, g4, g5, g6, g7);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7, typename Generator8>
+internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7, const Generator8& g8) {
+ return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8>(
+ g1, g2, g3, g4, g5, g6, g7, g8);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7, typename Generator8, typename Generator9>
+internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8,
+ Generator9> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7, const Generator8& g8, const Generator9& g9) {
+ return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
+ g1, g2, g3, g4, g5, g6, g7, g8, g9);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7, typename Generator8, typename Generator9,
+ typename Generator10>
+internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
+ Generator10> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7, const Generator8& g8, const Generator9& g9,
+ const Generator10& g10) {
+ return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
+ Generator10>(
+ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
+}
+# endif // GTEST_HAS_COMBINE
+
+
+
+# define TEST_P(test_case_name, test_name) \
+ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+ : public test_case_name { \
+ public: \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
+ virtual void TestBody(); \
+ private: \
+ static int AddToRegistry() { \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
+ #test_case_name, \
+ #test_name, \
+ new ::testing::internal::TestMetaFactory< \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
+ return 0; \
+ } \
+ static int gtest_registering_dummy_; \
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
+ }; \
+ int GTEST_TEST_CLASS_NAME_(test_case_name, \
+ test_name)::gtest_registering_dummy_ = \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
+ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
+ ::testing::internal::ParamGenerator<test_case_name::ParamType> \
+ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
+ int gtest_##prefix##test_case_name##_dummy_ = \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
+ #prefix, \
+ &gtest_##prefix##test_case_name##_EvalGenerator_, \
+ __FILE__, __LINE__)
+
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Google C++ Testing Framework definitions useful in production code.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+
+// When you need to test the private or protected members of a class,
+// use the FRIEND_TEST macro to declare your tests as friends of the
+// class. For example:
+//
+// class MyClass {
+// private:
+// void MyMethod();
+// FRIEND_TEST(MyClassTest, MyMethod);
+// };
+//
+// class MyClassTest : public testing::Test {
+// // ...
+// };
+//
+// TEST_F(MyClassTest, MyMethod) {
+// // Can call MyClass::MyMethod() here.
+// }
+
+#define FRIEND_TEST(test_case_name, test_name)\
+friend class test_case_name##_##test_name##_Test
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+
+#include <iosfwd>
+#include <vector>
+
+namespace testing {
+
+// A copyable object representing the result of a test part (i.e. an
+// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
+//
+// Don't inherit from TestPartResult as its destructor is not virtual.
+class GTEST_API_ TestPartResult {
+ public:
+ // The possible outcomes of a test part (i.e. an assertion or an
+ // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
+ enum Type {
+ kSuccess, // Succeeded.
+ kNonFatalFailure, // Failed but the test can continue.
+ kFatalFailure // Failed and the test should be terminated.
+ };
+
+ // C'tor. TestPartResult does NOT have a default constructor.
+ // Always use this constructor (with parameters) to create a
+ // TestPartResult object.
+ TestPartResult(Type a_type,
+ const char* a_file_name,
+ int a_line_number,
+ const char* a_message)
+ : type_(a_type),
+ file_name_(a_file_name == NULL ? "" : a_file_name),
+ line_number_(a_line_number),
+ summary_(ExtractSummary(a_message)),
+ message_(a_message) {
+ }
+
+ // Gets the outcome of the test part.
+ Type type() const { return type_; }
+
+ // Gets the name of the source file where the test part took place, or
+ // NULL if it's unknown.
+ const char* file_name() const {
+ return file_name_.empty() ? NULL : file_name_.c_str();
+ }
+
+ // Gets the line in the source file where the test part took place,
+ // or -1 if it's unknown.
+ int line_number() const { return line_number_; }
+
+ // Gets the summary of the failure message.
+ const char* summary() const { return summary_.c_str(); }
+
+ // Gets the message associated with the test part.
+ const char* message() const { return message_.c_str(); }
+
+ // Returns true iff the test part passed.
+ bool passed() const { return type_ == kSuccess; }
+
+ // Returns true iff the test part failed.
+ bool failed() const { return type_ != kSuccess; }
+
+ // Returns true iff the test part non-fatally failed.
+ bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
+
+ // Returns true iff the test part fatally failed.
+ bool fatally_failed() const { return type_ == kFatalFailure; }
+
+ private:
+ Type type_;
+
+ // Gets the summary of the failure message by omitting the stack
+ // trace in it.
+ static std::string ExtractSummary(const char* message);
+
+ // The name of the source file where the test part took place, or
+ // "" if the source file is unknown.
+ std::string file_name_;
+ // The line in the source file where the test part took place, or -1
+ // if the line number is unknown.
+ int line_number_;
+ std::string summary_; // The test failure summary.
+ std::string message_; // The test failure message.
+};
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
+
+// An array of TestPartResult objects.
+//
+// Don't inherit from TestPartResultArray as its destructor is not
+// virtual.
+class GTEST_API_ TestPartResultArray {
+ public:
+ TestPartResultArray() {}
+
+ // Appends the given TestPartResult to the array.
+ void Append(const TestPartResult& result);
+
+ // Returns the TestPartResult at the given index (0-based).
+ const TestPartResult& GetTestPartResult(int index) const;
+
+ // Returns the number of TestPartResult objects in the array.
+ int size() const;
+
+ private:
+ std::vector<TestPartResult> array_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
+};
+
+// This interface knows how to report a test part result.
+class GTEST_API_ TestPartResultReporterInterface {
+ public:
+ virtual ~TestPartResultReporterInterface() {}
+
+ virtual void ReportTestPartResult(const TestPartResult& result) = 0;
+};
+
+namespace internal {
+
+// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
+// statement generates new fatal failures. To do so it registers itself as the
+// current test part result reporter. Besides checking if fatal failures were
+// reported, it only delegates the reporting to the former result reporter.
+// The original result reporter is restored in the destructor.
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+class GTEST_API_ HasNewFatalFailureHelper
+ : public TestPartResultReporterInterface {
+ public:
+ HasNewFatalFailureHelper();
+ virtual ~HasNewFatalFailureHelper();
+ virtual void ReportTestPartResult(const TestPartResult& result);
+ bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
+ private:
+ bool has_new_fatal_failure_;
+ TestPartResultReporterInterface* original_reporter_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
+};
+
+} // namespace internal
+
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+
+// This header implements typed tests and type-parameterized tests.
+
+// Typed (aka type-driven) tests repeat the same test for types in a
+// list. You must know which types you want to test with when writing
+// typed tests. Here's how you do it:
+
+#if 0
+
+// First, define a fixture class template. It should be parameterized
+// by a type. Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ public:
+ ...
+ typedef std::list<T> List;
+ static T shared_;
+ T value_;
+};
+
+// Next, associate a list of types with the test case, which will be
+// repeated for each type in the list. The typedef is necessary for
+// the macro to parse correctly.
+typedef testing::Types<char, int, unsigned int> MyTypes;
+TYPED_TEST_CASE(FooTest, MyTypes);
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
+// TYPED_TEST_CASE(FooTest, int);
+
+// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
+// tests for this test case as you want.
+TYPED_TEST(FooTest, DoesBlah) {
+ // Inside a test, refer to TypeParam to get the type parameter.
+ // Since we are inside a derived class template, C++ requires use to
+ // visit the members of FooTest via 'this'.
+ TypeParam n = this->value_;
+
+ // To visit static members of the fixture, add the TestFixture::
+ // prefix.
+ n += TestFixture::shared_;
+
+ // To refer to typedefs in the fixture, add the "typename
+ // TestFixture::" prefix.
+ typename TestFixture::List values;
+ values.push_back(n);
+ ...
+}
+
+TYPED_TEST(FooTest, HasPropertyA) { ... }
+
+#endif // 0
+
+// Type-parameterized tests are abstract test patterns parameterized
+// by a type. Compared with typed tests, type-parameterized tests
+// allow you to define the test pattern without knowing what the type
+// parameters are. The defined pattern can be instantiated with
+// different types any number of times, in any number of translation
+// units.
+//
+// If you are designing an interface or concept, you can define a
+// suite of type-parameterized tests to verify properties that any
+// valid implementation of the interface/concept should have. Then,
+// each implementation can easily instantiate the test suite to verify
+// that it conforms to the requirements, without having to write
+// similar tests repeatedly. Here's an example:
+
+#if 0
+
+// First, define a fixture class template. It should be parameterized
+// by a type. Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ ...
+};
+
+// Next, declare that you will define a type-parameterized test case
+// (the _P suffix is for "parameterized" or "pattern", whichever you
+// prefer):
+TYPED_TEST_CASE_P(FooTest);
+
+// Then, use TYPED_TEST_P() to define as many type-parameterized tests
+// for this type-parameterized test case as you want.
+TYPED_TEST_P(FooTest, DoesBlah) {
+ // Inside a test, refer to TypeParam to get the type parameter.
+ TypeParam n = 0;
+ ...
+}
+
+TYPED_TEST_P(FooTest, HasPropertyA) { ... }
+
+// Now the tricky part: you need to register all test patterns before
+// you can instantiate them. The first argument of the macro is the
+// test case name; the rest are the names of the tests in this test
+// case.
+REGISTER_TYPED_TEST_CASE_P(FooTest,
+ DoesBlah, HasPropertyA);
+
+// Finally, you are free to instantiate the pattern with the types you
+// want. If you put the above code in a header file, you can #include
+// it in multiple C++ source files and instantiate it multiple times.
+//
+// To distinguish different instances of the pattern, the first
+// argument to the INSTANTIATE_* macro is a prefix that will be added
+// to the actual test case name. Remember to pick unique prefixes for
+// different instances.
+typedef testing::Types<char, int, unsigned int> MyTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
+// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int);
+
+#endif // 0
+
+
+// Implements typed tests.
+
+#if GTEST_HAS_TYPED_TEST
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the typedef for the type parameters of the
+// given test case.
+# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
+
+// The 'Types' template argument below must have spaces around it
+// since some compilers may choke on '>>' when passing a template
+// instance (e.g. Types<int>)
+# define TYPED_TEST_CASE(CaseName, Types) \
+ typedef ::testing::internal::TypeList< Types >::type \
+ GTEST_TYPE_PARAMS_(CaseName)
+
+# define TYPED_TEST(CaseName, TestName) \
+ template <typename gtest_TypeParam_> \
+ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
+ : public CaseName<gtest_TypeParam_> { \
+ private: \
+ typedef CaseName<gtest_TypeParam_> TestFixture; \
+ typedef gtest_TypeParam_ TypeParam; \
+ virtual void TestBody(); \
+ }; \
+ bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \
+ ::testing::internal::TypeParameterizedTest< \
+ CaseName, \
+ ::testing::internal::TemplateSel< \
+ GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \
+ GTEST_TYPE_PARAMS_(CaseName)>::Register(\
+ "", #CaseName, #TestName, 0); \
+ template <typename gtest_TypeParam_> \
+ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+
+#endif // GTEST_HAS_TYPED_TEST
+
+// Implements type-parameterized tests.
+
+#if GTEST_HAS_TYPED_TEST_P
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the namespace name that the type-parameterized tests for
+// the given type-parameterized test case are defined in. The exact
+// name of the namespace is subject to change without notice.
+# define GTEST_CASE_NAMESPACE_(TestCaseName) \
+ gtest_case_##TestCaseName##_
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the variable used to remember the names of
+// the defined tests in the given test case.
+# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
+ gtest_typed_test_case_p_state_##TestCaseName##_
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
+//
+// Expands to the name of the variable used to remember the names of
+// the registered tests in the given test case.
+# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
+ gtest_registered_test_names_##TestCaseName##_
+
+// The variables defined in the type-parameterized test macros are
+// static as typically these macros are used in a .h file that can be
+// #included in multiple translation units linked together.
+# define TYPED_TEST_CASE_P(CaseName) \
+ static ::testing::internal::TypedTestCasePState \
+ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)
+
+# define TYPED_TEST_P(CaseName, TestName) \
+ namespace GTEST_CASE_NAMESPACE_(CaseName) { \
+ template <typename gtest_TypeParam_> \
+ class TestName : public CaseName<gtest_TypeParam_> { \
+ private: \
+ typedef CaseName<gtest_TypeParam_> TestFixture; \
+ typedef gtest_TypeParam_ TypeParam; \
+ virtual void TestBody(); \
+ }; \
+ static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
+ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\
+ __FILE__, __LINE__, #CaseName, #TestName); \
+ } \
+ template <typename gtest_TypeParam_> \
+ void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()
+
+# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
+ namespace GTEST_CASE_NAMESPACE_(CaseName) { \
+ typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
+ } \
+ static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \
+ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\
+ __FILE__, __LINE__, #__VA_ARGS__)
+
+// The 'Types' template argument below must have spaces around it
+// since some compilers may choke on '>>' when passing a template
+// instance (e.g. Types<int>)
+# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
+ bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \
+ ::testing::internal::TypeParameterizedTestCase<CaseName, \
+ GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \
+ ::testing::internal::TypeList< Types >::type>::Register(\
+ #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
+
+#endif // GTEST_HAS_TYPED_TEST_P
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+
+// Depending on the platform, different string classes are available.
+// On Linux, in addition to ::std::string, Google also makes use of
+// class ::string, which has the same interface as ::std::string, but
+// has a different implementation.
+//
+// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that
+// ::string is available AND is a distinct type to ::std::string, or
+// define it to 0 to indicate otherwise.
+//
+// If the user's ::std::string and ::string are the same class due to
+// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0.
+//
+// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined
+// heuristically.
+
+namespace testing {
+
+// Declares the flags.
+
+// This flag temporary enables the disabled tests.
+GTEST_DECLARE_bool_(also_run_disabled_tests);
+
+// This flag brings the debugger on an assertion failure.
+GTEST_DECLARE_bool_(break_on_failure);
+
+// This flag controls whether Google Test catches all test-thrown exceptions
+// and logs them as failures.
+GTEST_DECLARE_bool_(catch_exceptions);
+
+// This flag enables using colors in terminal output. Available values are
+// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
+// to let Google Test decide.
+GTEST_DECLARE_string_(color);
+
+// This flag sets up the filter to select by name using a glob pattern
+// the tests to run. If the filter is not given all tests are executed.
+GTEST_DECLARE_string_(filter);
+
+// OpenCV extension: same as filter, but for the parameters string.
+GTEST_DECLARE_string_(param_filter);
+
+// This flag causes the Google Test to list tests. None of the tests listed
+// are actually run if the flag is provided.
+GTEST_DECLARE_bool_(list_tests);
+
+// This flag controls whether Google Test emits a detailed XML report to a file
+// in addition to its normal textual output.
+GTEST_DECLARE_string_(output);
+
+// This flags control whether Google Test prints the elapsed time for each
+// test.
+GTEST_DECLARE_bool_(print_time);
+
+// This flag specifies the random number seed.
+GTEST_DECLARE_int32_(random_seed);
+
+// This flag sets how many times the tests are repeated. The default value
+// is 1. If the value is -1 the tests are repeating forever.
+GTEST_DECLARE_int32_(repeat);
+
+// This flag controls whether Google Test includes Google Test internal
+// stack frames in failure stack traces.
+GTEST_DECLARE_bool_(show_internal_stack_frames);
+
+// When this flag is specified, tests' order is randomized on every iteration.
+GTEST_DECLARE_bool_(shuffle);
+
+// This flag specifies the maximum number of stack frames to be
+// printed in a failure message.
+GTEST_DECLARE_int32_(stack_trace_depth);
+
+// When this flag is specified, a failed assertion will throw an
+// exception if exceptions are enabled, or exit the program with a
+// non-zero code otherwise.
+GTEST_DECLARE_bool_(throw_on_failure);
+
+// When this flag is set with a "host:port" string, on supported
+// platforms test results are streamed to the specified port on
+// the specified host machine.
+GTEST_DECLARE_string_(stream_result_to);
+
+// The upper limit for valid stack trace depths.
+const int kMaxStackTraceDepth = 100;
+
+namespace internal {
+
+class AssertHelper;
+class DefaultGlobalTestPartResultReporter;
+class ExecDeathTest;
+class NoExecDeathTest;
+class FinalSuccessChecker;
+class GTestFlagSaver;
+class StreamingListenerTest;
+class TestResultAccessor;
+class TestEventListenersAccessor;
+class TestEventRepeater;
+class UnitTestRecordPropertyTestHelper;
+class WindowsDeathTest;
+class UnitTestImpl* GetUnitTestImpl();
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+ const std::string& message);
+
+} // namespace internal
+
+// The friend relationship of some of these classes is cyclic.
+// If we don't forward declare them the compiler might confuse the classes
+// in friendship clauses with same named classes on the scope.
+class Test;
+class TestCase;
+class TestInfo;
+class UnitTest;
+
+// A class for indicating whether an assertion was successful. When
+// the assertion wasn't successful, the AssertionResult object
+// remembers a non-empty message that describes how it failed.
+//
+// To create an instance of this class, use one of the factory functions
+// (AssertionSuccess() and AssertionFailure()).
+//
+// This class is useful for two purposes:
+// 1. Defining predicate functions to be used with Boolean test assertions
+// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
+// 2. Defining predicate-format functions to be
+// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
+//
+// For example, if you define IsEven predicate:
+//
+// testing::AssertionResult IsEven(int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess();
+// else
+// return testing::AssertionFailure() << n << " is odd";
+// }
+//
+// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
+// will print the message
+//
+// Value of: IsEven(Fib(5))
+// Actual: false (5 is odd)
+// Expected: true
+//
+// instead of a more opaque
+//
+// Value of: IsEven(Fib(5))
+// Actual: false
+// Expected: true
+//
+// in case IsEven is a simple Boolean predicate.
+//
+// If you expect your predicate to be reused and want to support informative
+// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
+// about half as often as positive ones in our tests), supply messages for
+// both success and failure cases:
+//
+// testing::AssertionResult IsEven(int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess() << n << " is even";
+// else
+// return testing::AssertionFailure() << n << " is odd";
+// }
+//
+// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
+//
+// Value of: IsEven(Fib(6))
+// Actual: true (8 is even)
+// Expected: false
+//
+// NB: Predicates that support negative Boolean assertions have reduced
+// performance in positive ones so be careful not to use them in tests
+// that have lots (tens of thousands) of positive Boolean assertions.
+//
+// To use this class with EXPECT_PRED_FORMAT assertions such as:
+//
+// // Verifies that Foo() returns an even number.
+// EXPECT_PRED_FORMAT1(IsEven, Foo());
+//
+// you need to define:
+//
+// testing::AssertionResult IsEven(const char* expr, int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess();
+// else
+// return testing::AssertionFailure()
+// << "Expected: " << expr << " is even\n Actual: it's " << n;
+// }
+//
+// If Foo() returns 5, you will see the following message:
+//
+// Expected: Foo() is even
+// Actual: it's 5
+//
+class GTEST_API_ AssertionResult {
+ public:
+ // Copy constructor.
+ // Used in EXPECT_TRUE/FALSE(assertion_result).
+ AssertionResult(const AssertionResult& other);
+ // Used in the EXPECT_TRUE/FALSE(bool_expression).
+ explicit AssertionResult(bool success) : success_(success) {}
+
+ // Returns true iff the assertion succeeded.
+ operator bool() const { return success_; } // NOLINT
+
+ // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+ AssertionResult operator!() const;
+
+ // Returns the text streamed into this AssertionResult. Test assertions
+ // use it when they fail (i.e., the predicate's outcome doesn't match the
+ // assertion's expectation). When nothing has been streamed into the
+ // object, returns an empty string.
+ const char* message() const {
+ return message_.get() != NULL ? message_->c_str() : "";
+ }
+ // TODO(vladl@google.com): Remove this after making sure no clients use it.
+ // Deprecated; please use message() instead.
+ const char* failure_message() const { return message(); }
+
+ // Streams a custom failure message into this object.
+ template <typename T> AssertionResult& operator<<(const T& value) {
+ AppendMessage(Message() << value);
+ return *this;
+ }
+
+ // Allows streaming basic output manipulators such as endl or flush into
+ // this object.
+ AssertionResult& operator<<(
+ ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
+ AppendMessage(Message() << basic_manipulator);
+ return *this;
+ }
+
+ private:
+ // Appends the contents of message to message_.
+ void AppendMessage(const Message& a_message) {
+ if (message_.get() == NULL)
+ message_.reset(new ::std::string);
+ message_->append(a_message.GetString().c_str());
+ }
+
+ // Stores result of the assertion predicate.
+ bool success_;
+ // Stores the message describing the condition in case the expectation
+ // construct is not satisfied with the predicate's outcome.
+ // Referenced via a pointer to avoid taking too much stack frame space
+ // with test assertions.
+ internal::scoped_ptr< ::std::string> message_;
+
+ GTEST_DISALLOW_ASSIGN_(AssertionResult);
+};
+
+// Makes a successful assertion result.
+GTEST_API_ AssertionResult AssertionSuccess();
+
+// Makes a failed assertion result.
+GTEST_API_ AssertionResult AssertionFailure();
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << msg.
+GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
+
+// The abstract class that all tests inherit from.
+//
+// In Google Test, a unit test program contains one or many TestCases, and
+// each TestCase contains one or many Tests.
+//
+// When you define a test using the TEST macro, you don't need to
+// explicitly derive from Test - the TEST macro automatically does
+// this for you.
+//
+// The only time you derive from Test is when defining a test fixture
+// to be used a TEST_F. For example:
+//
+// class FooTest : public testing::Test {
+// protected:
+// virtual void SetUp() { ... }
+// virtual void TearDown() { ... }
+// ...
+// };
+//
+// TEST_F(FooTest, Bar) { ... }
+// TEST_F(FooTest, Baz) { ... }
+//
+// Test is not copyable.
+class GTEST_API_ Test {
+ public:
+ friend class TestInfo;
+
+ // Defines types for pointers to functions that set up and tear down
+ // a test case.
+ typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;
+ typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;
+
+ // The d'tor is virtual as we intend to inherit from Test.
+ virtual ~Test();
+
+ // Sets up the stuff shared by all tests in this test case.
+ //
+ // Google Test will call Foo::SetUpTestCase() before running the first
+ // test in test case Foo. Hence a sub-class can define its own
+ // SetUpTestCase() method to shadow the one defined in the super
+ // class.
+ static void SetUpTestCase() {}
+
+ // Tears down the stuff shared by all tests in this test case.
+ //
+ // Google Test will call Foo::TearDownTestCase() after running the last
+ // test in test case Foo. Hence a sub-class can define its own
+ // TearDownTestCase() method to shadow the one defined in the super
+ // class.
+ static void TearDownTestCase() {}
+
+ // Returns true iff the current test has a fatal failure.
+ static bool HasFatalFailure();
+
+ // Returns true iff the current test has a non-fatal failure.
+ static bool HasNonfatalFailure();
+
+ // Returns true iff the current test has a (either fatal or
+ // non-fatal) failure.
+ static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
+
+ // Logs a property for the current test, test case, or for the entire
+ // invocation of the test program when used outside of the context of a
+ // test case. Only the last value for a given key is remembered. These
+ // are public static so they can be called from utility functions that are
+ // not members of the test fixture. Calls to RecordProperty made during
+ // lifespan of the test (from the moment its constructor starts to the
+ // moment its destructor finishes) will be output in XML as attributes of
+ // the <testcase> element. Properties recorded from fixture's
+ // SetUpTestCase or TearDownTestCase are logged as attributes of the
+ // corresponding <testsuite> element. Calls to RecordProperty made in the
+ // global context (before or after invocation of RUN_ALL_TESTS and from
+ // SetUp/TearDown method of Environment objects registered with Google
+ // Test) will be output as attributes of the <testsuites> element.
+ static void RecordProperty(const std::string& key, const std::string& value);
+ static void RecordProperty(const std::string& key, int value);
+
+ protected:
+ // Creates a Test object.
+ Test();
+
+ // Sets up the test fixture.
+ virtual void SetUp();
+
+ // Tears down the test fixture.
+ virtual void TearDown();
+
+ private:
+ // Returns true iff the current test has the same fixture class as
+ // the first test in the current test case.
+ static bool HasSameFixtureClass();
+
+ // Runs the test after the test fixture has been set up.
+ //
+ // A sub-class must implement this to define the test logic.
+ //
+ // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
+ // Instead, use the TEST or TEST_F macro.
+ virtual void TestBody() = 0;
+
+ // Sets up, executes, and tears down the test.
+ void Run();
+
+ // Deletes self. We deliberately pick an unusual name for this
+ // internal method to avoid clashing with names used in user TESTs.
+ void DeleteSelf_() { delete this; }
+
+ // Uses a GTestFlagSaver to save and restore all Google Test flags.
+ const internal::GTestFlagSaver* const gtest_flag_saver_;
+
+ // Often a user mis-spells SetUp() as Setup() and spends a long time
+ // wondering why it is never called by Google Test. The declaration of
+ // the following method is solely for catching such an error at
+ // compile time:
+ //
+ // - The return type is deliberately chosen to be not void, so it
+ // will be a conflict if a user declares void Setup() in his test
+ // fixture.
+ //
+ // - This method is private, so it will be another compiler error
+ // if a user calls it from his test fixture.
+ //
+ // DO NOT OVERRIDE THIS FUNCTION.
+ //
+ // If you see an error about overriding the following function or
+ // about it being private, you have mis-spelled SetUp() as Setup().
+ struct Setup_should_be_spelled_SetUp {};
+ virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
+
+ // We disallow copying Tests.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
+};
+
+typedef internal::TimeInMillis TimeInMillis;
+
+// A copyable object representing a user specified test property which can be
+// output as a key/value string pair.
+//
+// Don't inherit from TestProperty as its destructor is not virtual.
+class TestProperty {
+ public:
+ // C'tor. TestProperty does NOT have a default constructor.
+ // Always use this constructor (with parameters) to create a
+ // TestProperty object.
+ TestProperty(const std::string& a_key, const std::string& a_value) :
+ key_(a_key), value_(a_value) {
+ }
+
+ // Gets the user supplied key.
+ const char* key() const {
+ return key_.c_str();
+ }
+
+ // Gets the user supplied value.
+ const char* value() const {
+ return value_.c_str();
+ }
+
+ // Sets a new value, overriding the one supplied in the constructor.
+ void SetValue(const std::string& new_value) {
+ value_ = new_value;
+ }
+
+ private:
+ // The key supplied by the user.
+ std::string key_;
+ // The value supplied by the user.
+ std::string value_;
+};
+
+// The result of a single Test. This includes a list of
+// TestPartResults, a list of TestProperties, a count of how many
+// death tests there are in the Test, and how much time it took to run
+// the Test.
+//
+// TestResult is not copyable.
+class GTEST_API_ TestResult {
+ public:
+ // Creates an empty TestResult.
+ TestResult();
+
+ // D'tor. Do not inherit from TestResult.
+ ~TestResult();
+
+ // Gets the number of all test parts. This is the sum of the number
+ // of successful test parts and the number of failed test parts.
+ int total_part_count() const;
+
+ // Returns the number of the test properties.
+ int test_property_count() const;
+
+ // Returns true iff the test passed (i.e. no test part failed).
+ bool Passed() const { return !Failed(); }
+
+ // Returns true iff the test failed.
+ bool Failed() const;
+
+ // Returns true iff the test fatally failed.
+ bool HasFatalFailure() const;
+
+ // Returns true iff the test has a non-fatal failure.
+ bool HasNonfatalFailure() const;
+
+ // Returns the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+ // Returns the i-th test part result among all the results. i can range
+ // from 0 to test_property_count() - 1. If i is not in that range, aborts
+ // the program.
+ const TestPartResult& GetTestPartResult(int i) const;
+
+ // Returns the i-th test property. i can range from 0 to
+ // test_property_count() - 1. If i is not in that range, aborts the
+ // program.
+ const TestProperty& GetTestProperty(int i) const;
+
+ private:
+ friend class TestInfo;
+ friend class TestCase;
+ friend class UnitTest;
+ friend class internal::DefaultGlobalTestPartResultReporter;
+ friend class internal::ExecDeathTest;
+ friend class internal::TestResultAccessor;
+ friend class internal::UnitTestImpl;
+ friend class internal::WindowsDeathTest;
+
+ // Gets the vector of TestPartResults.
+ const std::vector<TestPartResult>& test_part_results() const {
+ return test_part_results_;
+ }
+
+ // Gets the vector of TestProperties.
+ const std::vector<TestProperty>& test_properties() const {
+ return test_properties_;
+ }
+
+ // Sets the elapsed time.
+ void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
+
+ // Adds a test property to the list. The property is validated and may add
+ // a non-fatal failure if invalid (e.g., if it conflicts with reserved
+ // key names). If a property is already recorded for the same key, the
+ // value will be updated, rather than storing multiple values for the same
+ // key. xml_element specifies the element for which the property is being
+ // recorded and is used for validation.
+ void RecordProperty(const std::string& xml_element,
+ const TestProperty& test_property);
+
+ // Adds a failure if the key is a reserved attribute of Google Test
+ // testcase tags. Returns true if the property is valid.
+ // TODO(russr): Validate attribute names are legal and human readable.
+ static bool ValidateTestProperty(const std::string& xml_element,
+ const TestProperty& test_property);
+
+ // Adds a test part result to the list.
+ void AddTestPartResult(const TestPartResult& test_part_result);
+
+ // Returns the death test count.
+ int death_test_count() const { return death_test_count_; }
+
+ // Increments the death test count, returning the new count.
+ int increment_death_test_count() { return ++death_test_count_; }
+
+ // Clears the test part results.
+ void ClearTestPartResults();
+
+ // Clears the object.
+ void Clear();
+
+ // Protects mutable state of the property vector and of owned
+ // properties, whose values may be updated.
+ internal::Mutex test_properites_mutex_;
+
+ // The vector of TestPartResults
+ std::vector<TestPartResult> test_part_results_;
+ // The vector of TestProperties
+ std::vector<TestProperty> test_properties_;
+ // Running count of death tests.
+ int death_test_count_;
+ // The elapsed time, in milliseconds.
+ TimeInMillis elapsed_time_;
+
+ // We disallow copying TestResult.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
+}; // class TestResult
+
+// A TestInfo object stores the following information about a test:
+//
+// Test case name
+// Test name
+// Whether the test should be run
+// A function pointer that creates the test object when invoked
+// Test result
+//
+// The constructor of TestInfo registers itself with the UnitTest
+// singleton such that the RUN_ALL_TESTS() macro knows which tests to
+// run.
+class GTEST_API_ TestInfo {
+ public:
+ // Destructs a TestInfo object. This function is not virtual, so
+ // don't inherit from TestInfo.
+ ~TestInfo();
+
+ // Returns the test case name.
+ const char* test_case_name() const { return test_case_name_.c_str(); }
+
+ // Returns the test name.
+ const char* name() const { return name_.c_str(); }
+
+ // Returns the name of the parameter type, or NULL if this is not a typed
+ // or a type-parameterized test.
+ const char* type_param() const {
+ if (type_param_.get() != NULL)
+ return type_param_->c_str();
+ return NULL;
+ }
+
+ // Returns the text representation of the value parameter, or NULL if this
+ // is not a value-parameterized test.
+ const char* value_param() const {
+ if (value_param_.get() != NULL)
+ return value_param_->c_str();
+ return NULL;
+ }
+
+ // Returns true if this test should run, that is if the test is not
+ // disabled (or it is disabled but the also_run_disabled_tests flag has
+ // been specified) and its full name matches the user-specified filter.
+ //
+ // Google Test allows the user to filter the tests by their full names.
+ // The full name of a test Bar in test case Foo is defined as
+ // "Foo.Bar". Only the tests that match the filter will run.
+ //
+ // A filter is a colon-separated list of glob (not regex) patterns,
+ // optionally followed by a '-' and a colon-separated list of
+ // negative patterns (tests to exclude). A test is run if it
+ // matches one of the positive patterns and does not match any of
+ // the negative patterns.
+ //
+ // For example, *A*:Foo.* is a filter that matches any string that
+ // contains the character 'A' or starts with "Foo.".
+ bool should_run() const { return should_run_; }
+
+ // Returns true iff this test will appear in the XML report.
+ bool is_reportable() const {
+ // For now, the XML report includes all tests matching the filter.
+ // In the future, we may trim tests that are excluded because of
+ // sharding.
+ return matches_filter_;
+ }
+
+ // Returns the result of the test.
+ const TestResult* result() const { return &result_; }
+
+ private:
+#if GTEST_HAS_DEATH_TEST
+ friend class internal::DefaultDeathTestFactory;
+#endif // GTEST_HAS_DEATH_TEST
+ friend class Test;
+ friend class TestCase;
+ friend class internal::UnitTestImpl;
+ friend class internal::StreamingListenerTest;
+ friend TestInfo* internal::MakeAndRegisterTestInfo(
+ const char* test_case_name,
+ const char* name,
+ const char* type_param,
+ const char* value_param,
+ internal::TypeId fixture_class_id,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc,
+ internal::TestFactoryBase* factory);
+
+ // Constructs a TestInfo object. The newly constructed instance assumes
+ // ownership of the factory object.
+ TestInfo(const std::string& test_case_name,
+ const std::string& name,
+ const char* a_type_param, // NULL if not a type-parameterized test
+ const char* a_value_param, // NULL if not a value-parameterized test
+ internal::TypeId fixture_class_id,
+ internal::TestFactoryBase* factory);
+
+ // Increments the number of death tests encountered in this test so
+ // far.
+ int increment_death_test_count() {
+ return result_.increment_death_test_count();
+ }
+
+ // Creates the test object, runs it, records its result, and then
+ // deletes it.
+ void Run();
+
+ static void ClearTestResult(TestInfo* test_info) {
+ test_info->result_.Clear();
+ }
+
+ // These fields are immutable properties of the test.
+ const std::string test_case_name_; // Test case name
+ const std::string name_; // Test name
+ // Name of the parameter type, or NULL if this is not a typed or a
+ // type-parameterized test.
+ const internal::scoped_ptr<const ::std::string> type_param_;
+ // Text representation of the value parameter, or NULL if this is not a
+ // value-parameterized test.
+ const internal::scoped_ptr<const ::std::string> value_param_;
+ const internal::TypeId fixture_class_id_; // ID of the test fixture class
+ bool should_run_; // True iff this test should run
+ bool is_disabled_; // True iff this test is disabled
+ bool matches_filter_; // True if this test matches the
+ // user-specified filter.
+ internal::TestFactoryBase* const factory_; // The factory that creates
+ // the test object
+
+ // This field is mutable and needs to be reset before running the
+ // test for the second time.
+ TestResult result_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
+};
+
+// A test case, which consists of a vector of TestInfos.
+//
+// TestCase is not copyable.
+class GTEST_API_ TestCase {
+ public:
+ // Creates a TestCase with the given name.
+ //
+ // TestCase does NOT have a default constructor. Always use this
+ // constructor to create a TestCase object.
+ //
+ // Arguments:
+ //
+ // name: name of the test case
+ // a_type_param: the name of the test's type parameter, or NULL if
+ // this is not a type-parameterized test.
+ // set_up_tc: pointer to the function that sets up the test case
+ // tear_down_tc: pointer to the function that tears down the test case
+ TestCase(const char* name, const char* a_type_param,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc);
+
+ // Destructor of TestCase.
+ virtual ~TestCase();
+
+ // Gets the name of the TestCase.
+ const char* name() const { return name_.c_str(); }
+
+ // Returns the name of the parameter type, or NULL if this is not a
+ // type-parameterized test case.
+ const char* type_param() const {
+ if (type_param_.get() != NULL)
+ return type_param_->c_str();
+ return NULL;
+ }
+
+ // Returns true if any test in this test case should run.
+ bool should_run() const { return should_run_; }
+
+ // Gets the number of successful tests in this test case.
+ int successful_test_count() const;
+
+ // Gets the number of failed tests in this test case.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests in this test case.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Get the number of tests in this test case that should run.
+ int test_to_run_count() const;
+
+ // Gets the number of all tests in this test case.
+ int total_test_count() const;
+
+ // Returns true iff the test case passed.
+ bool Passed() const { return !Failed(); }
+
+ // Returns true iff the test case failed.
+ bool Failed() const { return failed_test_count() > 0; }
+
+ // Returns the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+ // Returns the i-th test among all the tests. i can range from 0 to
+ // total_test_count() - 1. If i is not in that range, returns NULL.
+ const TestInfo* GetTestInfo(int i) const;
+
+ // Returns the TestResult that holds test properties recorded during
+ // execution of SetUpTestCase and TearDownTestCase.
+ const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
+
+ private:
+ friend class Test;
+ friend class internal::UnitTestImpl;
+
+ // Gets the (mutable) vector of TestInfos in this TestCase.
+ std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
+
+ // Gets the (immutable) vector of TestInfos in this TestCase.
+ const std::vector<TestInfo*>& test_info_list() const {
+ return test_info_list_;
+ }
+
+ // Returns the i-th test among all the tests. i can range from 0 to
+ // total_test_count() - 1. If i is not in that range, returns NULL.
+ TestInfo* GetMutableTestInfo(int i);
+
+ // Sets the should_run member.
+ void set_should_run(bool should) { should_run_ = should; }
+
+ // Adds a TestInfo to this test case. Will delete the TestInfo upon
+ // destruction of the TestCase object.
+ void AddTestInfo(TestInfo * test_info);
+
+ // Clears the results of all tests in this test case.
+ void ClearResult();
+
+ // Clears the results of all tests in the given test case.
+ static void ClearTestCaseResult(TestCase* test_case) {
+ test_case->ClearResult();
+ }
+
+ // Runs every test in this TestCase.
+ void Run();
+
+ // Runs SetUpTestCase() for this TestCase. This wrapper is needed
+ // for catching exceptions thrown from SetUpTestCase().
+ void RunSetUpTestCase() { (*set_up_tc_)(); }
+
+ // Runs TearDownTestCase() for this TestCase. This wrapper is
+ // needed for catching exceptions thrown from TearDownTestCase().
+ void RunTearDownTestCase() { (*tear_down_tc_)(); }
+
+ // Returns true iff test passed.
+ static bool TestPassed(const TestInfo* test_info) {
+ return test_info->should_run() && test_info->result()->Passed();
+ }
+
+ // Returns true iff test failed.
+ static bool TestFailed(const TestInfo* test_info) {
+ return test_info->should_run() && test_info->result()->Failed();
+ }
+
+ // Returns true iff the test is disabled and will be reported in the XML
+ // report.
+ static bool TestReportableDisabled(const TestInfo* test_info) {
+ return test_info->is_reportable() && test_info->is_disabled_;
+ }
+
+ // Returns true iff test is disabled.
+ static bool TestDisabled(const TestInfo* test_info) {
+ return test_info->is_disabled_;
+ }
+
+ // Returns true iff this test will appear in the XML report.
+ static bool TestReportable(const TestInfo* test_info) {
+ return test_info->is_reportable();
+ }
+
+ // Returns true if the given test should run.
+ static bool ShouldRunTest(const TestInfo* test_info) {
+ return test_info->should_run();
+ }
+
+ // Shuffles the tests in this test case.
+ void ShuffleTests(internal::Random* random);
+
+ // Restores the test order to before the first shuffle.
+ void UnshuffleTests();
+
+ // Name of the test case.
+ std::string name_;
+ // Name of the parameter type, or NULL if this is not a typed or a
+ // type-parameterized test.
+ const internal::scoped_ptr<const ::std::string> type_param_;
+ // The vector of TestInfos in their original order. It owns the
+ // elements in the vector.
+ std::vector<TestInfo*> test_info_list_;
+ // Provides a level of indirection for the test list to allow easy
+ // shuffling and restoring the test order. The i-th element in this
+ // vector is the index of the i-th test in the shuffled test list.
+ std::vector<int> test_indices_;
+ // Pointer to the function that sets up the test case.
+ Test::SetUpTestCaseFunc set_up_tc_;
+ // Pointer to the function that tears down the test case.
+ Test::TearDownTestCaseFunc tear_down_tc_;
+ // True iff any test in this test case should run.
+ bool should_run_;
+ // Elapsed time, in milliseconds.
+ TimeInMillis elapsed_time_;
+ // Holds test properties recorded during execution of SetUpTestCase and
+ // TearDownTestCase.
+ TestResult ad_hoc_test_result_;
+
+ // We disallow copying TestCases.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase);
+};
+
+// An Environment object is capable of setting up and tearing down an
+// environment. The user should subclass this to define his own
+// environment(s).
+//
+// An Environment object does the set-up and tear-down in virtual
+// methods SetUp() and TearDown() instead of the constructor and the
+// destructor, as:
+//
+// 1. You cannot safely throw from a destructor. This is a problem
+// as in some cases Google Test is used where exceptions are enabled, and
+// we may want to implement ASSERT_* using exceptions where they are
+// available.
+// 2. You cannot use ASSERT_* directly in a constructor or
+// destructor.
+class Environment {
+ public:
+ // The d'tor is virtual as we need to subclass Environment.
+ virtual ~Environment() {}
+
+ // Override this to define how to set up the environment.
+ virtual void SetUp() {}
+
+ // Override this to define how to tear down the environment.
+ virtual void TearDown() {}
+ private:
+ // If you see an error about overriding the following function or
+ // about it being private, you have mis-spelled SetUp() as Setup().
+ struct Setup_should_be_spelled_SetUp {};
+ virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
+};
+
+// The interface for tracing execution of tests. The methods are organized in
+// the order the corresponding events are fired.
+class TestEventListener {
+ public:
+ virtual ~TestEventListener() {}
+
+ // Fired before any test activity starts.
+ virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
+
+ // Fired before each iteration of tests starts. There may be more than
+ // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
+ // index, starting from 0.
+ virtual void OnTestIterationStart(const UnitTest& unit_test,
+ int iteration) = 0;
+
+ // Fired before environment set-up for each iteration of tests starts.
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
+
+ // Fired after environment set-up for each iteration of tests ends.
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
+
+ // Fired before the test case starts.
+ virtual void OnTestCaseStart(const TestCase& test_case) = 0;
+
+ // Fired before the test starts.
+ virtual void OnTestStart(const TestInfo& test_info) = 0;
+
+ // Fired after a failed assertion or a SUCCEED() invocation.
+ virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
+
+ // Fired after the test ends.
+ virtual void OnTestEnd(const TestInfo& test_info) = 0;
+
+ // Fired after the test case ends.
+ virtual void OnTestCaseEnd(const TestCase& test_case) = 0;
+
+ // Fired before environment tear-down for each iteration of tests starts.
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
+
+ // Fired after environment tear-down for each iteration of tests ends.
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
+
+ // Fired after each iteration of tests finishes.
+ virtual void OnTestIterationEnd(const UnitTest& unit_test,
+ int iteration) = 0;
+
+ // Fired after all test activities have ended.
+ virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
+};
+
+// The convenience class for users who need to override just one or two
+// methods and are not concerned that a possible change to a signature of
+// the methods they override will not be caught during the build. For
+// comments about each method please see the definition of TestEventListener
+// above.
+class EmptyTestEventListener : public TestEventListener {
+ public:
+ virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
+ int /*iteration*/) {}
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
+ virtual void OnTestStart(const TestInfo& /*test_info*/) {}
+ virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {}
+ virtual void OnTestEnd(const TestInfo& /*test_info*/) {}
+ virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
+ int /*iteration*/) {}
+ virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+};
+
+// TestEventListeners lets users add listeners to track events in Google Test.
+class GTEST_API_ TestEventListeners {
+ public:
+ TestEventListeners();
+ ~TestEventListeners();
+
+ // Appends an event listener to the end of the list. Google Test assumes
+ // the ownership of the listener (i.e. it will delete the listener when
+ // the test program finishes).
+ void Append(TestEventListener* listener);
+
+ // Removes the given event listener from the list and returns it. It then
+ // becomes the caller's responsibility to delete the listener. Returns
+ // NULL if the listener is not found in the list.
+ TestEventListener* Release(TestEventListener* listener);
+
+ // Returns the standard listener responsible for the default console
+ // output. Can be removed from the listeners list to shut down default
+ // console output. Note that removing this object from the listener list
+ // with Release transfers its ownership to the caller and makes this
+ // function return NULL the next time.
+ TestEventListener* default_result_printer() const {
+ return default_result_printer_;
+ }
+
+ // Returns the standard listener responsible for the default XML output
+ // controlled by the --gtest_output=xml flag. Can be removed from the
+ // listeners list by users who want to shut down the default XML output
+ // controlled by this flag and substitute it with custom one. Note that
+ // removing this object from the listener list with Release transfers its
+ // ownership to the caller and makes this function return NULL the next
+ // time.
+ TestEventListener* default_xml_generator() const {
+ return default_xml_generator_;
+ }
+
+ private:
+ friend class TestCase;
+ friend class TestInfo;
+ friend class internal::DefaultGlobalTestPartResultReporter;
+ friend class internal::NoExecDeathTest;
+ friend class internal::TestEventListenersAccessor;
+ friend class internal::UnitTestImpl;
+
+ // Returns repeater that broadcasts the TestEventListener events to all
+ // subscribers.
+ TestEventListener* repeater();
+
+ // Sets the default_result_printer attribute to the provided listener.
+ // The listener is also added to the listener list and previous
+ // default_result_printer is removed from it and deleted. The listener can
+ // also be NULL in which case it will not be added to the list. Does
+ // nothing if the previous and the current listener objects are the same.
+ void SetDefaultResultPrinter(TestEventListener* listener);
+
+ // Sets the default_xml_generator attribute to the provided listener. The
+ // listener is also added to the listener list and previous
+ // default_xml_generator is removed from it and deleted. The listener can
+ // also be NULL in which case it will not be added to the list. Does
+ // nothing if the previous and the current listener objects are the same.
+ void SetDefaultXmlGenerator(TestEventListener* listener);
+
+ // Controls whether events will be forwarded by the repeater to the
+ // listeners in the list.
+ bool EventForwardingEnabled() const;
+ void SuppressEventForwarding();
+
+ // The actual list of listeners.
+ internal::TestEventRepeater* repeater_;
+ // Listener responsible for the standard result output.
+ TestEventListener* default_result_printer_;
+ // Listener responsible for the creation of the XML output file.
+ TestEventListener* default_xml_generator_;
+
+ // We disallow copying TestEventListeners.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
+};
+
+// A UnitTest consists of a vector of TestCases.
+//
+// This is a singleton class. The only instance of UnitTest is
+// created when UnitTest::GetInstance() is first called. This
+// instance is never deleted.
+//
+// UnitTest is not copyable.
+//
+// This class is thread-safe as long as the methods are called
+// according to their specification.
+class GTEST_API_ UnitTest {
+ public:
+ // Gets the singleton UnitTest object. The first time this method
+ // is called, a UnitTest object is constructed and returned.
+ // Consecutive calls will return the same object.
+ static UnitTest* GetInstance();
+
+ // Runs all tests in this UnitTest object and prints the result.
+ // Returns 0 if successful, or 1 otherwise.
+ //
+ // This method can only be called from the main thread.
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ int Run() GTEST_MUST_USE_RESULT_;
+
+ // Returns the working directory when the first TEST() or TEST_F()
+ // was executed. The UnitTest object owns the string.
+ const char* original_working_dir() const;
+
+ // Returns the TestCase object for the test that's currently running,
+ // or NULL if no test is running.
+ const TestCase* current_test_case() const
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Returns the TestInfo object for the test that's currently running,
+ // or NULL if no test is running.
+ const TestInfo* current_test_info() const
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Returns the random seed used at the start of the current test run.
+ int random_seed() const;
+
+#if GTEST_HAS_PARAM_TEST
+ // Returns the ParameterizedTestCaseRegistry object used to keep track of
+ // value-parameterized tests and instantiate and register them.
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ internal::ParameterizedTestCaseRegistry& parameterized_test_registry()
+ GTEST_LOCK_EXCLUDED_(mutex_);
+#endif // GTEST_HAS_PARAM_TEST
+
+ // Gets the number of successful test cases.
+ int successful_test_case_count() const;
+
+ // Gets the number of failed test cases.
+ int failed_test_case_count() const;
+
+ // Gets the number of all test cases.
+ int total_test_case_count() const;
+
+ // Gets the number of all test cases that contain at least one test
+ // that should run.
+ int test_case_to_run_count() const;
+
+ // Gets the number of successful tests.
+ int successful_test_count() const;
+
+ // Gets the number of failed tests.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Gets the number of all tests.
+ int total_test_count() const;
+
+ // Gets the number of tests that should run.
+ int test_to_run_count() const;
+
+ // Gets the time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp() const;
+
+ // Gets the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const;
+
+ // Returns true iff the unit test passed (i.e. all test cases passed).
+ bool Passed() const;
+
+ // Returns true iff the unit test failed (i.e. some test case failed
+ // or something outside of all tests failed).
+ bool Failed() const;
+
+ // Gets the i-th test case among all the test cases. i can range from 0 to
+ // total_test_case_count() - 1. If i is not in that range, returns NULL.
+ const TestCase* GetTestCase(int i) const;
+
+ // Returns the TestResult containing information on test failures and
+ // properties logged outside of individual test cases.
+ const TestResult& ad_hoc_test_result() const;
+
+ // Returns the list of event listeners that can be used to track events
+ // inside Google Test.
+ TestEventListeners& listeners();
+
+ private:
+ // Registers and returns a global test environment. When a test
+ // program is run, all global test environments will be set-up in
+ // the order they were registered. After all tests in the program
+ // have finished, all global test environments will be torn-down in
+ // the *reverse* order they were registered.
+ //
+ // The UnitTest object takes ownership of the given environment.
+ //
+ // This method can only be called from the main thread.
+ Environment* AddEnvironment(Environment* env);
+
+ // Adds a TestPartResult to the current TestResult object. All
+ // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
+ // eventually call this to report their results. The user code
+ // should use the assertion macros instead of calling this directly.
+ void AddTestPartResult(TestPartResult::Type result_type,
+ const char* file_name,
+ int line_number,
+ const std::string& message,
+ const std::string& os_stack_trace)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Adds a TestProperty to the current TestResult object when invoked from
+ // inside a test, to current TestCase's ad_hoc_test_result_ when invoked
+ // from SetUpTestCase or TearDownTestCase, or to the global property set
+ // when invoked elsewhere. If the result already contains a property with
+ // the same key, the value will be updated.
+ void RecordProperty(const std::string& key, const std::string& value);
+
+ // Gets the i-th test case among all the test cases. i can range from 0 to
+ // total_test_case_count() - 1. If i is not in that range, returns NULL.
+ TestCase* GetMutableTestCase(int i);
+
+ // Accessors for the implementation object.
+ internal::UnitTestImpl* impl() { return impl_; }
+ const internal::UnitTestImpl* impl() const { return impl_; }
+
+ // These classes and funcions are friends as they need to access private
+ // members of UnitTest.
+ friend class Test;
+ friend class internal::AssertHelper;
+ friend class internal::ScopedTrace;
+ friend class internal::StreamingListenerTest;
+ friend class internal::UnitTestRecordPropertyTestHelper;
+ friend Environment* AddGlobalTestEnvironment(Environment* env);
+ friend internal::UnitTestImpl* internal::GetUnitTestImpl();
+ friend void internal::ReportFailureInUnknownLocation(
+ TestPartResult::Type result_type,
+ const std::string& message);
+
+ // Creates an empty UnitTest.
+ UnitTest();
+
+ // D'tor
+ virtual ~UnitTest();
+
+ // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+ // Google Test trace stack.
+ void PushGTestTrace(const internal::TraceInfo& trace)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Pops a trace from the per-thread Google Test trace stack.
+ void PopGTestTrace()
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Protects mutable state in *impl_. This is mutable as some const
+ // methods need to lock it too.
+ mutable internal::Mutex mutex_;
+
+ // Opaque implementation object. This field is never changed once
+ // the object is constructed. We don't mark it as const here, as
+ // doing so will cause a warning in the constructor of UnitTest.
+ // Mutable state in *impl_ is protected by mutex_.
+ internal::UnitTestImpl* impl_;
+
+ // We disallow copying UnitTest.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
+};
+
+// A convenient wrapper for adding an environment for the test
+// program.
+//
+// You should call this before RUN_ALL_TESTS() is called, probably in
+// main(). If you use gtest_main, you need to call this before main()
+// starts for it to take effect. For example, you can define a global
+// variable like this:
+//
+// testing::Environment* const foo_env =
+// testing::AddGlobalTestEnvironment(new FooEnvironment);
+//
+// However, we strongly recommend you to write your own main() and
+// call AddGlobalTestEnvironment() there, as relying on initialization
+// of global variables makes the code harder to read and may cause
+// problems when you register multiple environments from different
+// translation units and the environments have dependencies among them
+// (remember that the compiler doesn't guarantee the order in which
+// global variables from different translation units are initialized).
+inline Environment* AddGlobalTestEnvironment(Environment* env) {
+ return UnitTest::GetInstance()->AddEnvironment(env);
+}
+
+// Initializes Google Test. This must be called before calling
+// RUN_ALL_TESTS(). In particular, it parses a command line for the
+// flags that Google Test recognizes. Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned. Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+GTEST_API_ void InitGoogleTest(int* argc, char** argv);
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
+
+namespace internal {
+
+// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
+// value of type ToPrint that is an operand of a comparison assertion
+// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
+// the comparison, and is used to help determine the best way to
+// format the value. In particular, when the value is a C string
+// (char pointer) and the other operand is an STL string object, we
+// want to format the C string as a string, since we know it is
+// compared by value with the string object. If the value is a char
+// pointer but the other operand is not an STL string object, we don't
+// know whether the pointer is supposed to point to a NUL-terminated
+// string, and thus want to print it as a pointer to be safe.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// The default case.
+template <typename ToPrint, typename OtherOperand>
+class FormatForComparison {
+ public:
+ static ::std::string Format(const ToPrint& value) {
+ return ::testing::PrintToString(value);
+ }
+};
+
+// Array.
+template <typename ToPrint, size_t N, typename OtherOperand>
+class FormatForComparison<ToPrint[N], OtherOperand> {
+ public:
+ static ::std::string Format(const ToPrint* value) {
+ return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
+ }
+};
+
+// By default, print C string as pointers to be safe, as we don't know
+// whether they actually point to a NUL-terminated string.
+
+#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
+ template <typename OtherOperand> \
+ class FormatForComparison<CharType*, OtherOperand> { \
+ public: \
+ static ::std::string Format(CharType* value) { \
+ return ::testing::PrintToString(static_cast<const void*>(value)); \
+ } \
+ }
+
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
+
+#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
+
+// If a C string is compared with an STL string object, we know it's meant
+// to point to a NUL-terminated string, and thus can print it as a string.
+
+#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
+ template <> \
+ class FormatForComparison<CharType*, OtherStringType> { \
+ public: \
+ static ::std::string Format(CharType* value) { \
+ return ::testing::PrintToString(value); \
+ } \
+ }
+
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
+
+#if GTEST_HAS_GLOBAL_STRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string);
+#endif
+
+#if GTEST_HAS_GLOBAL_WSTRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring);
+#endif
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
+#endif
+
+#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
+
+// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
+// operand to be used in a failure message. The type (but not value)
+// of the other operand may affect the format. This allows us to
+// print a char* as a raw pointer when it is compared against another
+// char* or void*, and print it as a C string when it is compared
+// against an std::string object, for example.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename T1, typename T2>
+std::string FormatForComparisonFailureMessage(
+ const T1& value, const T2& /* other_operand */) {
+ return FormatForComparison<T1, T2>::Format(value);
+}
+
+// The helper function for {ASSERT|EXPECT}_EQ.
+template <typename T1, typename T2>
+AssertionResult CmpHelperEQ(const char* expected_expression,
+ const char* actual_expression,
+ const T1& expected,
+ const T2& actual) {
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4389) // Temporarily disables warning on
+ // signed/unsigned mismatch.
+#endif
+
+ if (expected == actual) {
+ return AssertionSuccess();
+ }
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ FormatForComparisonFailureMessage(expected, actual),
+ FormatForComparisonFailureMessage(actual, expected),
+ false);
+}
+
+// With this overloaded version, we allow anonymous enums to be used
+// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
+// can be implicitly cast to BiggestInt.
+GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression,
+ const char* actual_expression,
+ BiggestInt expected,
+ BiggestInt actual);
+
+// The helper class for {ASSERT|EXPECT}_EQ. The template argument
+// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
+// is a null pointer literal. The following default implementation is
+// for lhs_is_null_literal being false.
+template <bool lhs_is_null_literal>
+class EqHelper {
+ public:
+ // This templatized version is for the general case.
+ template <typename T1, typename T2>
+ static AssertionResult Compare(const char* expected_expression,
+ const char* actual_expression,
+ const T1& expected,
+ const T2& actual) {
+ return CmpHelperEQ(expected_expression, actual_expression, expected,
+ actual);
+ }
+
+ // With this overloaded version, we allow anonymous enums to be used
+ // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
+ // enums can be implicitly cast to BiggestInt.
+ //
+ // Even though its body looks the same as the above version, we
+ // cannot merge the two, as it will make anonymous enums unhappy.
+ static AssertionResult Compare(const char* expected_expression,
+ const char* actual_expression,
+ BiggestInt expected,
+ BiggestInt actual) {
+ return CmpHelperEQ(expected_expression, actual_expression, expected,
+ actual);
+ }
+};
+
+// This specialization is used when the first argument to ASSERT_EQ()
+// is a null pointer literal, like NULL, false, or 0.
+template <>
+class EqHelper<true> {
+ public:
+ // We define two overloaded versions of Compare(). The first
+ // version will be picked when the second argument to ASSERT_EQ() is
+ // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or
+ // EXPECT_EQ(false, a_bool).
+ template <typename T1, typename T2>
+ static AssertionResult Compare(
+ const char* expected_expression,
+ const char* actual_expression,
+ const T1& expected,
+ const T2& actual,
+ // The following line prevents this overload from being considered if T2
+ // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr)
+ // expands to Compare("", "", NULL, my_ptr), which requires a conversion
+ // to match the Secret* in the other overload, which would otherwise make
+ // this template match better.
+ typename EnableIf<!is_pointer<T2>::value>::type* = 0) {
+ return CmpHelperEQ(expected_expression, actual_expression, expected,
+ actual);
+ }
+
+ // This version will be picked when the second argument to ASSERT_EQ() is a
+ // pointer, e.g. ASSERT_EQ(NULL, a_pointer).
+ template <typename T>
+ static AssertionResult Compare(
+ const char* expected_expression,
+ const char* actual_expression,
+ // We used to have a second template parameter instead of Secret*. That
+ // template parameter would deduce to 'long', making this a better match
+ // than the first overload even without the first overload's EnableIf.
+ // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
+ // non-pointer argument" (even a deduced integral argument), so the old
+ // implementation caused warnings in user code.
+ Secret* /* expected (NULL) */,
+ T* actual) {
+ // We already know that 'expected' is a null pointer.
+ return CmpHelperEQ(expected_expression, actual_expression,
+ static_cast<T*>(NULL), actual);
+ }
+};
+
+// A macro for implementing the helper functions needed to implement
+// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
+// of similar code.
+//
+// For each templatized helper function, we also define an overloaded
+// version for BiggestInt in order to reduce code bloat and allow
+// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled
+// with gcc 4.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
+template <typename T1, typename T2>\
+AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
+ const T1& val1, const T2& val2) {\
+ if (val1 op val2) {\
+ return AssertionSuccess();\
+ } else {\
+ return AssertionFailure() \
+ << "Expected: (" << expr1 << ") " #op " (" << expr2\
+ << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
+ << " vs " << FormatForComparisonFailureMessage(val2, val1);\
+ }\
+}\
+GTEST_API_ AssertionResult CmpHelper##op_name(\
+ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// Implements the helper function for {ASSERT|EXPECT}_NE
+GTEST_IMPL_CMP_HELPER_(NE, !=);
+// Implements the helper function for {ASSERT|EXPECT}_LE
+GTEST_IMPL_CMP_HELPER_(LE, <=);
+// Implements the helper function for {ASSERT|EXPECT}_LT
+GTEST_IMPL_CMP_HELPER_(LT, <);
+// Implements the helper function for {ASSERT|EXPECT}_GE
+GTEST_IMPL_CMP_HELPER_(GE, >=);
+// Implements the helper function for {ASSERT|EXPECT}_GT
+GTEST_IMPL_CMP_HELPER_(GT, >);
+
+#undef GTEST_IMPL_CMP_HELPER_
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
+ const char* actual_expression,
+ const char* expected,
+ const char* actual);
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
+ const char* actual_expression,
+ const char* expected,
+ const char* actual);
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+
+// Helper function for *_STREQ on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
+ const char* actual_expression,
+ const wchar_t* expected,
+ const wchar_t* actual);
+
+// Helper function for *_STRNE on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const wchar_t* s1,
+ const wchar_t* s2);
+
+} // namespace internal
+
+// IsSubstring() and IsNotSubstring() are intended to be used as the
+// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
+// themselves. They check whether needle is a substring of haystack
+// (NULL is considered a substring of itself only), and return an
+// appropriate error message when they fail.
+//
+// The {needle,haystack}_expr arguments are the stringified
+// expressions that generated the two real arguments.
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack);
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack);
+#endif // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+// Helper template function for comparing floating-points.
+//
+// Template parameter:
+//
+// RawType: the raw floating-point type (either float or double)
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename RawType>
+AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression,
+ const char* actual_expression,
+ RawType expected,
+ RawType actual) {
+ const FloatingPoint<RawType> lhs(expected), rhs(actual);
+
+ if (lhs.AlmostEquals(rhs)) {
+ return AssertionSuccess();
+ }
+
+ ::std::stringstream expected_ss;
+ expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << expected;
+
+ ::std::stringstream actual_ss;
+ actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << actual;
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ StringStreamToString(&expected_ss),
+ StringStreamToString(&actual_ss),
+ false);
+}
+
+// Helper function for implementing ASSERT_NEAR.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
+ const char* expr2,
+ const char* abs_error_expr,
+ double val1,
+ double val2,
+ double abs_error);
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+// A class that enables one to stream messages to assertion macros
+class GTEST_API_ AssertHelper {
+ public:
+ // Constructor.
+ AssertHelper(TestPartResult::Type type,
+ const char* file,
+ int line,
+ const char* message);
+ ~AssertHelper();
+
+ // Message assignment is a semantic trick to enable assertion
+ // streaming; see the GTEST_MESSAGE_ macro below.
+ void operator=(const Message& message) const;
+
+ private:
+ // We put our data in a struct so that the size of the AssertHelper class can
+ // be as small as possible. This is important because gcc is incapable of
+ // re-using stack space even for temporary variables, so every EXPECT_EQ
+ // reserves stack space for another AssertHelper.
+ struct AssertHelperData {
+ AssertHelperData(TestPartResult::Type t,
+ const char* srcfile,
+ int line_num,
+ const char* msg)
+ : type(t), file(srcfile), line(line_num), message(msg) { }
+
+ TestPartResult::Type const type;
+ const char* const file;
+ int const line;
+ std::string const message;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
+ };
+
+ AssertHelperData* const data_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
+};
+
+} // namespace internal
+
+#if GTEST_HAS_PARAM_TEST
+// The pure interface class that all value-parameterized tests inherit from.
+// A value-parameterized class must inherit from both ::testing::Test and
+// ::testing::WithParamInterface. In most cases that just means inheriting
+// from ::testing::TestWithParam, but more complicated test hierarchies
+// may need to inherit from Test and WithParamInterface at different levels.
+//
+// This interface has support for accessing the test parameter value via
+// the GetParam() method.
+//
+// Use it with one of the parameter generator defining functions, like Range(),
+// Values(), ValuesIn(), Bool(), and Combine().
+//
+// class FooTest : public ::testing::TestWithParam<int> {
+// protected:
+// FooTest() {
+// // Can use GetParam() here.
+// }
+// virtual ~FooTest() {
+// // Can use GetParam() here.
+// }
+// virtual void SetUp() {
+// // Can use GetParam() here.
+// }
+// virtual void TearDown {
+// // Can use GetParam() here.
+// }
+// };
+// TEST_P(FooTest, DoesBar) {
+// // Can use GetParam() method here.
+// Foo foo;
+// ASSERT_TRUE(foo.DoesBar(GetParam()));
+// }
+// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
+
+template <typename T>
+class WithParamInterface {
+ public:
+ typedef T ParamType;
+ virtual ~WithParamInterface() {}
+
+ // The current parameter value. Is also available in the test fixture's
+ // constructor. This member function is non-static, even though it only
+ // references static data, to reduce the opportunity for incorrect uses
+ // like writing 'WithParamInterface<bool>::GetParam()' for a test that
+ // uses a fixture whose parameter type is int.
+ const ParamType& GetParam() const {
+ GTEST_CHECK_(parameter_ != NULL)
+ << "GetParam() can only be called inside a value-parameterized test "
+ << "-- did you intend to write TEST_P instead of TEST_F?";
+ return *parameter_;
+ }
+
+ private:
+ // Sets parameter value. The caller is responsible for making sure the value
+ // remains alive and unchanged throughout the current test.
+ static void SetParam(const ParamType* parameter) {
+ parameter_ = parameter;
+ }
+
+ // Static value used for accessing parameter during a test lifetime.
+ static const ParamType* parameter_;
+
+ // TestClass must be a subclass of WithParamInterface<T> and Test.
+ template <class TestClass> friend class internal::ParameterizedTestFactory;
+};
+
+template <typename T>
+const T* WithParamInterface<T>::parameter_ = NULL;
+
+// Most value-parameterized classes can ignore the existence of
+// WithParamInterface, and can just inherit from ::testing::TestWithParam.
+
+template <typename T>
+class TestWithParam : public Test, public WithParamInterface<T> {
+};
+
+#endif // GTEST_HAS_PARAM_TEST
+
+// Macros for indicating success/failure in test code.
+
+// ADD_FAILURE unconditionally adds a failure to the current test.
+// SUCCEED generates a success - it doesn't automatically make the
+// current test successful, as a test is only successful when it has
+// no failure.
+//
+// EXPECT_* verifies that a certain condition is satisfied. If not,
+// it behaves like ADD_FAILURE. In particular:
+//
+// EXPECT_TRUE verifies that a Boolean condition is true.
+// EXPECT_FALSE verifies that a Boolean condition is false.
+//
+// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
+// that they will also abort the current function on failure. People
+// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
+// writing data-driven tests often find themselves using ADD_FAILURE
+// and EXPECT_* more.
+
+// Generates a nonfatal failure with a generic message.
+#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
+
+// Generates a nonfatal failure at the given source file location with
+// a generic message.
+#define ADD_FAILURE_AT(file, line) \
+ GTEST_MESSAGE_AT_(file, line, "Failed", \
+ ::testing::TestPartResult::kNonFatalFailure)
+
+// Generates a fatal failure with a generic message.
+#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
+
+// Define this macro to 1 to omit the definition of FAIL(), which is a
+// generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_FAIL
+# define FAIL() GTEST_FAIL()
+#endif
+
+// Generates a success with a generic message.
+#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
+
+// Define this macro to 1 to omit the definition of SUCCEED(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_SUCCEED
+# define SUCCEED() GTEST_SUCCEED()
+#endif
+
+// Macros for testing exceptions.
+//
+// * {ASSERT|EXPECT}_THROW(statement, expected_exception):
+// Tests that the statement throws the expected exception.
+// * {ASSERT|EXPECT}_NO_THROW(statement):
+// Tests that the statement doesn't throw any exception.
+// * {ASSERT|EXPECT}_ANY_THROW(statement):
+// Tests that the statement throws an exception.
+
+#define EXPECT_THROW(statement, expected_exception) \
+ GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_NO_THROW(statement) \
+ GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_ANY_THROW(statement) \
+ GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_THROW(statement, expected_exception) \
+ GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
+#define ASSERT_NO_THROW(statement) \
+ GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
+#define ASSERT_ANY_THROW(statement) \
+ GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
+
+// Boolean assertions. Condition can be either a Boolean expression or an
+// AssertionResult. For more information on how to use AssertionResult with
+// these macros see comments on that class.
+#define EXPECT_TRUE(condition) \
+ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+ GTEST_NONFATAL_FAILURE_)
+#define EXPECT_FALSE(condition) \
+ GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+ GTEST_NONFATAL_FAILURE_)
+#define ASSERT_TRUE(condition) \
+ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+ GTEST_FATAL_FAILURE_)
+#define ASSERT_FALSE(condition) \
+ GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+ GTEST_FATAL_FAILURE_)
+
+// Includes the auto-generated header that implements a family of
+// generic predicate assertion macros.
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
+// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
+//
+// Implements a family of generic predicate assertion macros.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+
+// Makes sure this header is not included before gtest.h.
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+# error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
+#endif // GTEST_INCLUDE_GTEST_GTEST_H_
+
+// This header implements a family of generic predicate assertion
+// macros:
+//
+// ASSERT_PRED_FORMAT1(pred_format, v1)
+// ASSERT_PRED_FORMAT2(pred_format, v1, v2)
+// ...
+//
+// where pred_format is a function or functor that takes n (in the
+// case of ASSERT_PRED_FORMATn) values and their source expression
+// text, and returns a testing::AssertionResult. See the definition
+// of ASSERT_EQ in gtest.h for an example.
+//
+// If you don't care about formatting, you can use the more
+// restrictive version:
+//
+// ASSERT_PRED1(pred, v1)
+// ASSERT_PRED2(pred, v1, v2)
+// ...
+//
+// where pred is an n-ary function or functor that returns bool,
+// and the values v1, v2, ..., must support the << operator for
+// streaming to std::ostream.
+//
+// We also define the EXPECT_* variations.
+//
+// For now we only support predicates whose arity is at most 5.
+// Please email googletestframework@googlegroups.com if you need
+// support for higher arities.
+
+// GTEST_ASSERT_ is the basic statement to which all of the assertions
+// in this file reduce. Don't use this in your code.
+
+#define GTEST_ASSERT_(expression, on_failure) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (const ::testing::AssertionResult gtest_ar = (expression)) \
+ ; \
+ else \
+ on_failure(gtest_ar.failure_message())
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1>
+AssertionResult AssertPred1Helper(const char* pred_text,
+ const char* e1,
+ Pred pred,
+ const T1& v1) {
+ if (pred(v1)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, v1), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
+// this in your code.
+#define GTEST_PRED1_(pred, v1, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
+ #v1, \
+ pred, \
+ v1), on_failure)
+
+// Unary predicate assertion macros.
+#define EXPECT_PRED_FORMAT1(pred_format, v1) \
+ GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED1(pred, v1) \
+ GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT1(pred_format, v1) \
+ GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED1(pred, v1) \
+ GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2>
+AssertionResult AssertPred2Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ Pred pred,
+ const T1& v1,
+ const T2& v2) {
+ if (pred(v1, v2)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
+// this in your code.
+#define GTEST_PRED2_(pred, v1, v2, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
+ #v1, \
+ #v2, \
+ pred, \
+ v1, \
+ v2), on_failure)
+
+// Binary predicate assertion macros.
+#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
+ GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED2(pred, v1, v2) \
+ GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
+ GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED2(pred, v1, v2) \
+ GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3>
+AssertionResult AssertPred3Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3) {
+ if (pred(v1, v2, v3)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ", "
+ << e3 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2
+ << "\n" << e3 << " evaluates to " << v3;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
+// this in your code.
+#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ pred, \
+ v1, \
+ v2, \
+ v3), on_failure)
+
+// Ternary predicate assertion macros.
+#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED3(pred, v1, v2, v3) \
+ GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED3(pred, v1, v2, v3) \
+ GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3,
+ typename T4>
+AssertionResult AssertPred4Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ const char* e4,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3,
+ const T4& v4) {
+ if (pred(v1, v2, v3, v4)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ", "
+ << e3 << ", "
+ << e4 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2
+ << "\n" << e3 << " evaluates to " << v3
+ << "\n" << e4 << " evaluates to " << v4;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
+// this in your code.
+#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ #v4, \
+ pred, \
+ v1, \
+ v2, \
+ v3, \
+ v4), on_failure)
+
+// 4-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
+ GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
+ GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3,
+ typename T4,
+ typename T5>
+AssertionResult AssertPred5Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ const char* e4,
+ const char* e5,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3,
+ const T4& v4,
+ const T5& v5) {
+ if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ", "
+ << e3 << ", "
+ << e4 << ", "
+ << e5 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2
+ << "\n" << e3 << " evaluates to " << v3
+ << "\n" << e4 << " evaluates to " << v4
+ << "\n" << e5 << " evaluates to " << v5;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
+// this in your code.
+#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ #v4, \
+ #v5, \
+ pred, \
+ v1, \
+ v2, \
+ v3, \
+ v4, \
+ v5), on_failure)
+
+// 5-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
+ GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
+ GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+
+
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+
+// Macros for testing equalities and inequalities.
+//
+// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual
+// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
+// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
+// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
+// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
+// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
+//
+// When they are not, Google Test prints both the tested expressions and
+// their actual values. The values must be compatible built-in types,
+// or you will get a compiler error. By "compatible" we mean that the
+// values can be compared by the respective operator.
+//
+// Note:
+//
+// 1. It is possible to make a user-defined type work with
+// {ASSERT|EXPECT}_??(), but that requires overloading the
+// comparison operators and is thus discouraged by the Google C++
+// Usage Guide. Therefore, you are advised to use the
+// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
+// equal.
+//
+// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
+// pointers (in particular, C strings). Therefore, if you use it
+// with two C strings, you are testing how their locations in memory
+// are related, not how their content is related. To compare two C
+// strings by content, use {ASSERT|EXPECT}_STR*().
+//
+// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to
+// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you
+// what the actual value is when it fails, and similarly for the
+// other comparisons.
+//
+// 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
+// evaluate their arguments, which is undefined.
+//
+// 5. These macros evaluate their arguments exactly once.
+//
+// Examples:
+//
+// EXPECT_NE(5, Foo());
+// EXPECT_EQ(NULL, a_pointer);
+// ASSERT_LT(i, array_size);
+// ASSERT_GT(records.size(), 0) << "There is no record left.";
+
+#define EXPECT_EQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal:: \
+ EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
+ expected, actual)
+#define EXPECT_NE(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual)
+#define EXPECT_LE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define EXPECT_LT(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define EXPECT_GE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define EXPECT_GT(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+#define GTEST_ASSERT_EQ(expected, actual) \
+ ASSERT_PRED_FORMAT2(::testing::internal:: \
+ EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
+ expected, actual)
+#define GTEST_ASSERT_NE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+#define GTEST_ASSERT_LE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define GTEST_ASSERT_LT(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define GTEST_ASSERT_GE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define GTEST_ASSERT_GT(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
+// ASSERT_XY(), which clashes with some users' own code.
+
+#if !GTEST_DONT_DEFINE_ASSERT_EQ
+# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_NE
+# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LE
+# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LT
+# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GE
+# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GT
+# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
+#endif
+
+// C-string Comparisons. All tests treat NULL and any non-NULL string
+// as different. Two NULLs are equal.
+//
+// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
+// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
+// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
+// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
+//
+// For wide or narrow string objects, you can use the
+// {ASSERT|EXPECT}_??() macros.
+//
+// Don't depend on the order in which the arguments are evaluated,
+// which is undefined.
+//
+// These macros evaluate their arguments exactly once.
+
+#define EXPECT_STREQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
+#define EXPECT_STRNE(s1, s2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define EXPECT_STRCASEEQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
+#define EXPECT_STRCASENE(s1, s2)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+#define ASSERT_STREQ(expected, actual) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
+#define ASSERT_STRNE(s1, s2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define ASSERT_STRCASEEQ(expected, actual) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
+#define ASSERT_STRCASENE(s1, s2)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+// Macros for comparing floating-point numbers.
+//
+// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual):
+// Tests that two float values are almost equal.
+// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual):
+// Tests that two double values are almost equal.
+// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
+// Tests that v1 and v2 are within the given distance to each other.
+//
+// Google Test uses ULP-based comparison to automatically pick a default
+// error bound that is appropriate for the operands. See the
+// FloatingPoint template class in gtest-internal.h if you are
+// interested in the implementation details.
+
+#define EXPECT_FLOAT_EQ(expected, actual)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+ expected, actual)
+
+#define EXPECT_DOUBLE_EQ(expected, actual)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+ expected, actual)
+
+#define ASSERT_FLOAT_EQ(expected, actual)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+ expected, actual)
+
+#define ASSERT_DOUBLE_EQ(expected, actual)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+ expected, actual)
+
+#define EXPECT_NEAR(val1, val2, abs_error)\
+ EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+ val1, val2, abs_error)
+
+#define ASSERT_NEAR(val1, val2, abs_error)\
+ ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+ val1, val2, abs_error)
+
+// These predicate format functions work on floating-point values, and
+// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
+//
+// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
+ float val1, float val2);
+GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
+ double val1, double val2);
+
+
+#if GTEST_OS_WINDOWS
+
+// Macros that test for HRESULT failure and success, these are only useful
+// on Windows, and rely on Windows SDK macros and APIs to compile.
+//
+// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
+//
+// When expr unexpectedly fails or succeeds, Google Test prints the
+// expected result and the actual result with both a human-readable
+// string representation of the error, if available, as well as the
+// hex result code.
+# define EXPECT_HRESULT_SUCCEEDED(expr) \
+ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define ASSERT_HRESULT_SUCCEEDED(expr) \
+ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define EXPECT_HRESULT_FAILED(expr) \
+ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+# define ASSERT_HRESULT_FAILED(expr) \
+ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+#endif // GTEST_OS_WINDOWS
+
+// Macros that execute statement and check that it doesn't generate new fatal
+// failures in the current thread.
+//
+// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
+//
+// Examples:
+//
+// EXPECT_NO_FATAL_FAILURE(Process());
+// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
+//
+#define ASSERT_NO_FATAL_FAILURE(statement) \
+ GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
+#define EXPECT_NO_FATAL_FAILURE(statement) \
+ GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
+
+// Causes a trace (including the source file path, the current line
+// number, and the given message) to be included in every test failure
+// message generated by code in the current scope. The effect is
+// undone when the control leaves the current scope.
+//
+// The message argument can be anything streamable to std::ostream.
+//
+// In the implementation, we include the current line number as part
+// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
+// to appear in the same block - as long as they are on different
+// lines.
+#define SCOPED_TRACE(message) \
+ ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
+ __FILE__, __LINE__, ::testing::Message() << (message))
+
+// Compile-time assertion for type equality.
+// StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are
+// the same type. The value it returns is not interesting.
+//
+// Instead of making StaticAssertTypeEq a class template, we make it a
+// function template that invokes a helper class template. This
+// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
+// defining objects of that type.
+//
+// CAVEAT:
+//
+// When used inside a method of a class template,
+// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
+// instantiated. For example, given:
+//
+// template <typename T> class Foo {
+// public:
+// void Bar() { testing::StaticAssertTypeEq<int, T>(); }
+// };
+//
+// the code:
+//
+// void Test1() { Foo<bool> foo; }
+//
+// will NOT generate a compiler error, as Foo<bool>::Bar() is never
+// actually instantiated. Instead, you need:
+//
+// void Test2() { Foo<bool> foo; foo.Bar(); }
+//
+// to cause a compiler error.
+template <typename T1, typename T2>
+bool StaticAssertTypeEq() {
+ (void)internal::StaticAssertTypeEqHelper<T1, T2>();
+ return true;
+}
+
+// Defines a test.
+//
+// The first parameter is the name of the test case, and the second
+// parameter is the name of the test within the test case.
+//
+// The convention is to end the test case name with "Test". For
+// example, a test case for the Foo class can be named FooTest.
+//
+// The user should put his test code between braces after using this
+// macro. Example:
+//
+// TEST(FooTest, InitializesCorrectly) {
+// Foo foo;
+// EXPECT_TRUE(foo.StatusIsOK());
+// }
+
+// Note that we call GetTestTypeId() instead of GetTypeId<
+// ::testing::Test>() here to get the type ID of testing::Test. This
+// is to work around a suspected linker bug when using Google Test as
+// a framework on Mac OS X. The bug causes GetTypeId<
+// ::testing::Test>() to return different values depending on whether
+// the call is from the Google Test framework itself or from user test
+// code. GetTestTypeId() is guaranteed to always return the same
+// value, as it always calls GetTypeId<>() from the Google Test
+// framework.
+#define GTEST_TEST(test_case_name, test_name)\
+ GTEST_TEST_(test_case_name, test_name, \
+ ::testing::Test, ::testing::internal::GetTestTypeId())
+
+// Define this macro to 1 to omit the definition of TEST(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_TEST
+# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
+#endif
+
+// Defines a test that uses a test fixture.
+//
+// The first parameter is the name of the test fixture class, which
+// also doubles as the test case name. The second parameter is the
+// name of the test within the test case.
+//
+// A test fixture class must be declared earlier. The user should put
+// his test code between braces after using this macro. Example:
+//
+// class FooTest : public testing::Test {
+// protected:
+// virtual void SetUp() { b_.AddElement(3); }
+//
+// Foo a_;
+// Foo b_;
+// };
+//
+// TEST_F(FooTest, InitializesCorrectly) {
+// EXPECT_TRUE(a_.StatusIsOK());
+// }
+//
+// TEST_F(FooTest, ReturnsElementCountCorrectly) {
+// EXPECT_EQ(0, a_.size());
+// EXPECT_EQ(1, b_.size());
+// }
+
+#define TEST_F(test_fixture, test_name)\
+ GTEST_TEST_(test_fixture, test_name, test_fixture, \
+ ::testing::internal::GetTypeId<test_fixture>())
+
+} // namespace testing
+
+// Use this function in main() to run all tests. It returns 0 if all
+// tests are successful, or 1 otherwise.
+//
+// RUN_ALL_TESTS() should be invoked after the command line has been
+// parsed by InitGoogleTest().
+//
+// This function was formerly a macro; thus, it is in the global
+// namespace and has an all-caps name.
+int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
+
+inline int RUN_ALL_TESTS() {
+ return ::testing::UnitTest::GetInstance()->Run();
+}
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_H_
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_perf.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_perf.hpp
new file mode 100644
index 00000000..18309061
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/ts/ts_perf.hpp
@@ -0,0 +1,618 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_TS_PERF_HPP__
+#define __OPENCV_TS_PERF_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "ts_gtest.h"
+
+#ifdef HAVE_TBB
+#include "tbb/task_scheduler_init.h"
+#endif
+
+#if !(defined(LOGD) || defined(LOGI) || defined(LOGW) || defined(LOGE))
+# if defined(ANDROID) && defined(USE_ANDROID_LOGGING)
+# include <android/log.h>
+
+# define PERF_TESTS_LOG_TAG "OpenCV_perf"
+# define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, PERF_TESTS_LOG_TAG, __VA_ARGS__))
+# define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, PERF_TESTS_LOG_TAG, __VA_ARGS__))
+# define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, PERF_TESTS_LOG_TAG, __VA_ARGS__))
+# define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, PERF_TESTS_LOG_TAG, __VA_ARGS__))
+# else
+# define LOGD(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
+# define LOGI(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
+# define LOGW(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
+# define LOGE(_str, ...) do{printf(_str , ## __VA_ARGS__); printf("\n");fflush(stdout);} while(0)
+# endif
+#endif
+
+// declare major namespaces to avoid errors on unknown namespace
+namespace cv { namespace gpu {} namespace ocl {} }
+
+namespace perf
+{
+class TestBase;
+
+/*****************************************************************************************\
+* Predefined typical frame sizes and typical test parameters *
+\*****************************************************************************************/
+const cv::Size szQVGA = cv::Size(320, 240);
+const cv::Size szVGA = cv::Size(640, 480);
+const cv::Size szSVGA = cv::Size(800, 600);
+const cv::Size szXGA = cv::Size(1024, 768);
+const cv::Size szSXGA = cv::Size(1280, 1024);
+const cv::Size szWQHD = cv::Size(2560, 1440);
+
+const cv::Size sznHD = cv::Size(640, 360);
+const cv::Size szqHD = cv::Size(960, 540);
+const cv::Size sz240p = szQVGA;
+const cv::Size sz720p = cv::Size(1280, 720);
+const cv::Size sz1080p = cv::Size(1920, 1080);
+const cv::Size sz1440p = szWQHD;
+const cv::Size sz2160p = cv::Size(3840, 2160);//UHDTV1 4K
+const cv::Size sz4320p = cv::Size(7680, 4320);//UHDTV2 8K
+
+const cv::Size sz3MP = cv::Size(2048, 1536);
+const cv::Size sz5MP = cv::Size(2592, 1944);
+const cv::Size sz2K = cv::Size(2048, 2048);
+
+const cv::Size szODD = cv::Size(127, 61);
+
+const cv::Size szSmall24 = cv::Size(24, 24);
+const cv::Size szSmall32 = cv::Size(32, 32);
+const cv::Size szSmall64 = cv::Size(64, 64);
+const cv::Size szSmall128 = cv::Size(128, 128);
+
+#define SZ_ALL_VGA ::testing::Values(::perf::szQVGA, ::perf::szVGA, ::perf::szSVGA)
+#define SZ_ALL_GA ::testing::Values(::perf::szQVGA, ::perf::szVGA, ::perf::szSVGA, ::perf::szXGA, ::perf::szSXGA)
+#define SZ_ALL_HD ::testing::Values(::perf::sznHD, ::perf::szqHD, ::perf::sz720p, ::perf::sz1080p)
+#define SZ_ALL_SMALL ::testing::Values(::perf::szSmall24, ::perf::szSmall32, ::perf::szSmall64, ::perf::szSmall128)
+#define SZ_ALL ::testing::Values(::perf::szQVGA, ::perf::szVGA, ::perf::szSVGA, ::perf::szXGA, ::perf::szSXGA, ::perf::sznHD, ::perf::szqHD, ::perf::sz720p, ::perf::sz1080p)
+#define SZ_TYPICAL ::testing::Values(::perf::szVGA, ::perf::szqHD, ::perf::sz720p, ::perf::szODD)
+
+
+#define TYPICAL_MAT_SIZES ::perf::szVGA, ::perf::sz720p, ::perf::sz1080p, ::perf::szODD
+#define TYPICAL_MAT_TYPES CV_8UC1, CV_8UC4, CV_32FC1
+#define TYPICAL_MATS testing::Combine( testing::Values( TYPICAL_MAT_SIZES ), testing::Values( TYPICAL_MAT_TYPES ) )
+#define TYPICAL_MATS_C1 testing::Combine( testing::Values( TYPICAL_MAT_SIZES ), testing::Values( CV_8UC1, CV_32FC1 ) )
+#define TYPICAL_MATS_C4 testing::Combine( testing::Values( TYPICAL_MAT_SIZES ), testing::Values( CV_8UC4 ) )
+
+
+/*****************************************************************************************\
+* MatType - printable wrapper over integer 'type' of Mat *
+\*****************************************************************************************/
+class MatType
+{
+public:
+ MatType(int val=0) : _type(val) {}
+ operator int() const {return _type;}
+
+private:
+ int _type;
+};
+
+/*****************************************************************************************\
+* CV_ENUM and CV_FLAGS - macro to create printable wrappers for defines and enums *
+\*****************************************************************************************/
+
+#define CV_ENUM(class_name, ...) \
+ namespace { \
+ struct class_name { \
+ class_name(int val = 0) : val_(val) {} \
+ operator int() const { return val_; } \
+ void PrintTo(std::ostream* os) const { \
+ using namespace cv;using namespace cv::gpu; using namespace cv::ocl; \
+ const int vals[] = { __VA_ARGS__ }; \
+ const char* svals = #__VA_ARGS__; \
+ for(int i = 0, pos = 0; i < (int)(sizeof(vals)/sizeof(int)); ++i) { \
+ while(isspace(svals[pos]) || svals[pos] == ',') ++pos; \
+ int start = pos; \
+ while(!(isspace(svals[pos]) || svals[pos] == ',' || svals[pos] == 0)) \
+ ++pos; \
+ if (val_ == vals[i]) { \
+ *os << std::string(svals + start, svals + pos); \
+ return; \
+ } \
+ } \
+ *os << "UNKNOWN"; \
+ } \
+ static ::testing::internal::ParamGenerator<class_name> all() { \
+ using namespace cv;using namespace cv::gpu; using namespace cv::ocl; \
+ static class_name vals[] = { __VA_ARGS__ }; \
+ return ::testing::ValuesIn(vals); \
+ } \
+ private: int val_; \
+ }; \
+ inline void PrintTo(const class_name& t, std::ostream* os) { t.PrintTo(os); } }
+
+#define CV_FLAGS(class_name, ...) \
+ namespace { \
+ struct class_name { \
+ class_name(int val = 0) : val_(val) {} \
+ operator int() const { return val_; } \
+ void PrintTo(std::ostream* os) const { \
+ using namespace cv;using namespace cv::gpu; using namespace cv::ocl; \
+ const int vals[] = { __VA_ARGS__ }; \
+ const char* svals = #__VA_ARGS__; \
+ int value = val_; \
+ bool first = true; \
+ for(int i = 0, pos = 0; i < (int)(sizeof(vals)/sizeof(int)); ++i) { \
+ while(isspace(svals[pos]) || svals[pos] == ',') ++pos; \
+ int start = pos; \
+ while(!(isspace(svals[pos]) || svals[pos] == ',' || svals[pos] == 0)) \
+ ++pos; \
+ if ((value & vals[i]) == vals[i]) { \
+ value &= ~vals[i]; \
+ if (first) first = false; else *os << "|"; \
+ *os << std::string(svals + start, svals + pos); \
+ if (!value) return; \
+ } \
+ } \
+ if (first) *os << "UNKNOWN"; \
+ } \
+ private: int val_; \
+ }; \
+ inline void PrintTo(const class_name& t, std::ostream* os) { t.PrintTo(os); } }
+
+CV_ENUM(MatDepth, CV_8U, CV_8S, CV_16U, CV_16S, CV_32S, CV_32F, CV_64F, CV_USRTYPE1)
+
+/*****************************************************************************************\
+* Regression control utility for performance testing *
+\*****************************************************************************************/
+enum ERROR_TYPE
+{
+ ERROR_ABSOLUTE = 0,
+ ERROR_RELATIVE = 1
+};
+
+class CV_EXPORTS Regression
+{
+public:
+ static Regression& add(TestBase* test, const std::string& name, cv::InputArray array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE);
+ static Regression& addKeypoints(TestBase* test, const std::string& name, const std::vector<cv::KeyPoint>& array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE);
+ static Regression& addMatches(TestBase* test, const std::string& name, const std::vector<cv::DMatch>& array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE);
+ static void Init(const std::string& testSuitName, const std::string& ext = ".xml");
+
+ Regression& operator() (const std::string& name, cv::InputArray array, double eps = DBL_EPSILON, ERROR_TYPE err = ERROR_ABSOLUTE);
+
+private:
+ static Regression& instance();
+ Regression();
+ ~Regression();
+
+ Regression(const Regression&);
+ Regression& operator=(const Regression&);
+
+ cv::RNG regRNG;//own random numbers generator to make collection and verification work identical
+ std::string storageInPath;
+ std::string storageOutPath;
+ cv::FileStorage storageIn;
+ cv::FileStorage storageOut;
+ cv::FileNode rootIn;
+ std::string currentTestNodeName;
+ std::string suiteName;
+
+ cv::FileStorage& write();
+
+ static std::string getCurrentTestNodeName();
+ static bool isVector(cv::InputArray a);
+ static double getElem(cv::Mat& m, int x, int y, int cn = 0);
+
+ void init(const std::string& testSuitName, const std::string& ext);
+ void write(cv::InputArray array);
+ void write(cv::Mat m);
+ void verify(cv::FileNode node, cv::InputArray array, double eps, ERROR_TYPE err);
+ void verify(cv::FileNode node, cv::Mat actual, double eps, std::string argname, ERROR_TYPE err);
+};
+
+#define SANITY_CHECK(array, ...) ::perf::Regression::add(this, #array, array , ## __VA_ARGS__)
+#define SANITY_CHECK_KEYPOINTS(array, ...) ::perf::Regression::addKeypoints(this, #array, array , ## __VA_ARGS__)
+#define SANITY_CHECK_MATCHES(array, ...) ::perf::Regression::addMatches(this, #array, array , ## __VA_ARGS__)
+#define SANITY_CHECK_NOTHING() this->setVerified()
+
+class CV_EXPORTS GpuPerf
+{
+public:
+ static bool targetDevice();
+};
+
+#define PERF_RUN_GPU() ::perf::GpuPerf::targetDevice()
+
+/*****************************************************************************************\
+* Container for performance metrics *
+\*****************************************************************************************/
+typedef struct CV_EXPORTS performance_metrics
+{
+ size_t bytesIn;
+ size_t bytesOut;
+ unsigned int samples;
+ unsigned int outliers;
+ double gmean;
+ double gstddev;//stddev for log(time)
+ double mean;
+ double stddev;
+ double median;
+ double min;
+ double frequency;
+ int terminationReason;
+
+ enum
+ {
+ TERM_ITERATIONS = 0,
+ TERM_TIME = 1,
+ TERM_INTERRUPT = 2,
+ TERM_EXCEPTION = 3,
+ TERM_SKIP_TEST = 4, // there are some limitations and test should be skipped
+ TERM_UNKNOWN = -1
+ };
+
+ performance_metrics();
+ void clear();
+} performance_metrics;
+
+
+/*****************************************************************************************\
+* Strategy for performance measuring *
+\*****************************************************************************************/
+enum PERF_STRATEGY
+{
+ PERF_STRATEGY_BASE = 0,
+ PERF_STRATEGY_SIMPLE = 1
+};
+
+
+/*****************************************************************************************\
+* Base fixture for performance tests *
+\*****************************************************************************************/
+class CV_EXPORTS TestBase: public ::testing::Test
+{
+public:
+ TestBase();
+
+ static void Init(int argc, const char* const argv[]);
+ static void Init(const std::vector<std::string> & availableImpls,
+ int argc, const char* const argv[]);
+ static void RecordRunParameters();
+ static std::string getDataPath(const std::string& relativePath);
+ static std::string getSelectedImpl();
+
+ static enum PERF_STRATEGY getPerformanceStrategy();
+ static enum PERF_STRATEGY setPerformanceStrategy(enum PERF_STRATEGY strategy);
+
+ class PerfSkipTestException: public cv::Exception {};
+
+protected:
+ virtual void PerfTestBody() = 0;
+
+ virtual void SetUp();
+ virtual void TearDown();
+
+ void startTimer();
+ void stopTimer();
+ bool next();
+
+ //_declareHelper declare;
+
+ enum
+ {
+ WARMUP_READ,
+ WARMUP_WRITE,
+ WARMUP_RNG,
+ WARMUP_NONE
+ };
+
+ void reportMetrics(bool toJUnitXML = false);
+ static void warmup(cv::InputOutputArray a, int wtype = WARMUP_READ);
+
+ performance_metrics& calcMetrics();
+ void RunPerfTestBody();
+private:
+ typedef std::vector<std::pair<int, cv::Size> > SizeVector;
+ typedef std::vector<int64> TimeVector;
+
+ SizeVector inputData;
+ SizeVector outputData;
+ unsigned int getTotalInputSize() const;
+ unsigned int getTotalOutputSize() const;
+
+ TimeVector times;
+ int64 lastTime;
+ int64 totalTime;
+ int64 timeLimit;
+ static int64 timeLimitDefault;
+ static unsigned int iterationsLimitDefault;
+
+ unsigned int nIters;
+ unsigned int currentIter;
+ unsigned int runsPerIteration;
+
+ performance_metrics metrics;
+ void validateMetrics();
+
+ static int64 _timeadjustment;
+ static int64 _calibrate();
+
+ static void warmup_impl(cv::Mat m, int wtype);
+ static int getSizeInBytes(cv::InputArray a);
+ static cv::Size getSize(cv::InputArray a);
+ static void declareArray(SizeVector& sizes, cv::InputOutputArray a, int wtype = 0);
+
+ class CV_EXPORTS _declareHelper
+ {
+ public:
+ _declareHelper& in(cv::InputOutputArray a1, int wtype = WARMUP_READ);
+ _declareHelper& in(cv::InputOutputArray a1, cv::InputOutputArray a2, int wtype = WARMUP_READ);
+ _declareHelper& in(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, int wtype = WARMUP_READ);
+ _declareHelper& in(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, cv::InputOutputArray a4, int wtype = WARMUP_READ);
+
+ _declareHelper& out(cv::InputOutputArray a1, int wtype = WARMUP_WRITE);
+ _declareHelper& out(cv::InputOutputArray a1, cv::InputOutputArray a2, int wtype = WARMUP_WRITE);
+ _declareHelper& out(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, int wtype = WARMUP_WRITE);
+ _declareHelper& out(cv::InputOutputArray a1, cv::InputOutputArray a2, cv::InputOutputArray a3, cv::InputOutputArray a4, int wtype = WARMUP_WRITE);
+
+ _declareHelper& iterations(unsigned int n);
+ _declareHelper& time(double timeLimitSecs);
+ _declareHelper& tbb_threads(int n = -1);
+ _declareHelper& runs(unsigned int runsNumber);
+ private:
+ TestBase* test;
+ _declareHelper(TestBase* t);
+ _declareHelper(const _declareHelper&);
+ _declareHelper& operator=(const _declareHelper&);
+ friend class TestBase;
+ };
+ friend class _declareHelper;
+
+ bool verified;
+
+public:
+ _declareHelper declare;
+
+ void setVerified() { this->verified = true; }
+};
+
+template<typename T> class TestBaseWithParam: public TestBase, public ::testing::WithParamInterface<T> {};
+
+typedef std::tr1::tuple<cv::Size, MatType> Size_MatType_t;
+typedef TestBaseWithParam<Size_MatType_t> Size_MatType;
+
+/*****************************************************************************************\
+* Print functions for googletest *
+\*****************************************************************************************/
+CV_EXPORTS void PrintTo(const MatType& t, std::ostream* os);
+
+} //namespace perf
+
+namespace cv
+{
+
+CV_EXPORTS void PrintTo(const Size& sz, ::std::ostream* os);
+
+} //namespace cv
+
+
+/*****************************************************************************************\
+* Macro definitions for performance tests *
+\*****************************************************************************************/
+#define PERF_PROXY_NAMESPACE_NAME_(test_case_name, test_name) \
+ test_case_name##_##test_name##_perf_namespace_proxy
+
+// Defines a performance test.
+//
+// The first parameter is the name of the test case, and the second
+// parameter is the name of the test within the test case.
+//
+// The user should put his test code between braces after using this
+// macro. Example:
+//
+// PERF_TEST(FooTest, InitializesCorrectly) {
+// Foo foo;
+// EXPECT_TRUE(foo.StatusIsOK());
+// }
+#define PERF_TEST(test_case_name, test_name)\
+ namespace PERF_PROXY_NAMESPACE_NAME_(test_case_name, test_name) {\
+ class TestBase {/*compile error for this class means that you are trying to use perf::TestBase as a fixture*/};\
+ class test_case_name : public ::perf::TestBase {\
+ public:\
+ test_case_name() {}\
+ protected:\
+ virtual void PerfTestBody();\
+ };\
+ TEST_F(test_case_name, test_name){ RunPerfTestBody(); }\
+ }\
+ void PERF_PROXY_NAMESPACE_NAME_(test_case_name, test_name)::test_case_name::PerfTestBody()
+
+// Defines a performance test that uses a test fixture.
+//
+// The first parameter is the name of the test fixture class, which
+// also doubles as the test case name. The second parameter is the
+// name of the test within the test case.
+//
+// A test fixture class must be declared earlier. The user should put
+// his test code between braces after using this macro. Example:
+//
+// class FooTest : public ::perf::TestBase {
+// protected:
+// virtual void SetUp() { TestBase::SetUp(); b_.AddElement(3); }
+//
+// Foo a_;
+// Foo b_;
+// };
+//
+// PERF_TEST_F(FooTest, InitializesCorrectly) {
+// EXPECT_TRUE(a_.StatusIsOK());
+// }
+//
+// PERF_TEST_F(FooTest, ReturnsElementCountCorrectly) {
+// EXPECT_EQ(0, a_.size());
+// EXPECT_EQ(1, b_.size());
+// }
+#define PERF_TEST_F(fixture, testname) \
+ namespace PERF_PROXY_NAMESPACE_NAME_(fixture, testname) {\
+ class TestBase {/*compile error for this class means that you are trying to use perf::TestBase as a fixture*/};\
+ class fixture : public ::fixture {\
+ public:\
+ fixture() {}\
+ protected:\
+ virtual void PerfTestBody();\
+ };\
+ TEST_F(fixture, testname){ RunPerfTestBody(); }\
+ }\
+ void PERF_PROXY_NAMESPACE_NAME_(fixture, testname)::fixture::PerfTestBody()
+
+// Defines a parametrized performance test.
+//
+// The first parameter is the name of the test fixture class, which
+// also doubles as the test case name. The second parameter is the
+// name of the test within the test case.
+//
+// The user should put his test code between braces after using this
+// macro. Example:
+//
+// typedef ::perf::TestBaseWithParam<cv::Size> FooTest;
+//
+// PERF_TEST_P(FooTest, DoTestingRight, ::testing::Values(::perf::szVGA, ::perf::sz720p) {
+// cv::Mat b(GetParam(), CV_8U, cv::Scalar(10));
+// cv::Mat a(GetParam(), CV_8U, cv::Scalar(20));
+// cv::Mat c(GetParam(), CV_8U, cv::Scalar(0));
+//
+// declare.in(a, b).out(c).time(0.5);
+//
+// TEST_CYCLE() cv::add(a, b, c);
+//
+// SANITY_CHECK(c);
+// }
+#define PERF_TEST_P(fixture, name, params) \
+ class fixture##_##name : public fixture {\
+ public:\
+ fixture##_##name() {}\
+ protected:\
+ virtual void PerfTestBody();\
+ };\
+ TEST_P(fixture##_##name, name /*perf*/){ RunPerfTestBody(); }\
+ INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\
+ void fixture##_##name::PerfTestBody()
+
+#ifndef __CV_TEST_EXEC_ARGS
+#if defined(_MSC_VER) && (_MSC_VER <= 1400)
+#define __CV_TEST_EXEC_ARGS(...) \
+ while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/
+#else
+#define __CV_TEST_EXEC_ARGS(...) \
+ __VA_ARGS__;
+#endif
+#endif
+
+#define CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, ...) \
+ ::perf::Regression::Init(#modulename); \
+ ::perf::TestBase::Init(std::vector<std::string>(impls, impls + sizeof impls / sizeof *impls), \
+ argc, argv); \
+ ::testing::InitGoogleTest(&argc, argv); \
+ cvtest::printVersionInfo(); \
+ ::testing::Test::RecordProperty("cv_module_name", #modulename); \
+ ::perf::TestBase::RecordRunParameters(); \
+ __CV_TEST_EXEC_ARGS(__VA_ARGS__) \
+ return RUN_ALL_TESTS();
+
+// impls must be an array, not a pointer; "plain" should always be one of the implementations
+#define CV_PERF_TEST_MAIN_WITH_IMPLS(modulename, impls, ...) \
+int main(int argc, char **argv)\
+{\
+ CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, __VA_ARGS__)\
+}
+
+#define CV_PERF_TEST_MAIN(modulename, ...) \
+int main(int argc, char **argv)\
+{\
+ const char * plain_only[] = { "plain" };\
+ CV_PERF_TEST_MAIN_INTERNALS(modulename, plain_only, __VA_ARGS__)\
+}
+
+#define TEST_CYCLE_N(n) for(declare.iterations(n); startTimer(), next(); stopTimer())
+#define TEST_CYCLE() for(; startTimer(), next(); stopTimer())
+#define TEST_CYCLE_MULTIRUN(runsNum) for(declare.runs(runsNum); startTimer(), next(); stopTimer()) for(int r = 0; r < runsNum; ++r)
+
+namespace perf
+{
+namespace comparators
+{
+
+template<typename T>
+struct CV_EXPORTS RectLess_
+{
+ bool operator()(const cv::Rect_<T>& r1, const cv::Rect_<T>& r2) const
+ {
+ return r1.x < r2.x
+ || (r1.x == r2.x && r1.y < r2.y)
+ || (r1.x == r2.x && r1.y == r2.y && r1.width < r2.width)
+ || (r1.x == r2.x && r1.y == r2.y && r1.width == r2.width && r1.height < r2.height);
+ }
+};
+
+typedef RectLess_<int> RectLess;
+
+struct CV_EXPORTS KeypointGreater
+{
+ bool operator()(const cv::KeyPoint& kp1, const cv::KeyPoint& kp2) const
+ {
+ if(kp1.response > kp2.response) return true;
+ if(kp1.response < kp2.response) return false;
+ if(kp1.size > kp2.size) return true;
+ if(kp1.size < kp2.size) return false;
+ if(kp1.octave > kp2.octave) return true;
+ if(kp1.octave < kp2.octave) return false;
+ if(kp1.pt.y < kp2.pt.y) return false;
+ if(kp1.pt.y > kp2.pt.y) return true;
+ return kp1.pt.x < kp2.pt.x;
+ }
+};
+
+} //namespace comparators
+
+void CV_EXPORTS sort(std::vector<cv::KeyPoint>& pts, cv::InputOutputArray descriptors);
+} //namespace perf
+
+#endif //__OPENCV_TS_PERF_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/video.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/video.hpp
new file mode 100644
index 00000000..be11ce47
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/video.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/video/video.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/video/background_segm.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/video/background_segm.hpp
new file mode 100644
index 00000000..d2d068c6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/video/background_segm.hpp
@@ -0,0 +1,263 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_BACKGROUND_SEGM_HPP__
+#define __OPENCV_BACKGROUND_SEGM_HPP__
+
+#include "opencv2/core/core.hpp"
+#include <list>
+namespace cv
+{
+
+/*!
+ The Base Class for Background/Foreground Segmentation
+
+ The class is only used to define the common interface for
+ the whole family of background/foreground segmentation algorithms.
+*/
+class CV_EXPORTS_W BackgroundSubtractor : public Algorithm
+{
+public:
+ //! the virtual destructor
+ virtual ~BackgroundSubtractor();
+ //! the update operator that takes the next video frame and returns the current foreground mask as 8-bit binary image.
+ CV_WRAP_AS(apply) virtual void operator()(InputArray image, OutputArray fgmask,
+ double learningRate=0);
+
+ //! computes a background image
+ virtual void getBackgroundImage(OutputArray backgroundImage) const;
+};
+
+
+/*!
+ Gaussian Mixture-based Backbround/Foreground Segmentation Algorithm
+
+ The class implements the following algorithm:
+ "An improved adaptive background mixture model for real-time tracking with shadow detection"
+ P. KadewTraKuPong and R. Bowden,
+ Proc. 2nd European Workshp on Advanced Video-Based Surveillance Systems, 2001."
+ http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf
+
+*/
+class CV_EXPORTS_W BackgroundSubtractorMOG : public BackgroundSubtractor
+{
+public:
+ //! the default constructor
+ CV_WRAP BackgroundSubtractorMOG();
+ //! the full constructor that takes the length of the history, the number of gaussian mixtures, the background ratio parameter and the noise strength
+ CV_WRAP BackgroundSubtractorMOG(int history, int nmixtures, double backgroundRatio, double noiseSigma=0);
+ //! the destructor
+ virtual ~BackgroundSubtractorMOG();
+ //! the update operator
+ virtual void operator()(InputArray image, OutputArray fgmask, double learningRate=0);
+
+ //! re-initiaization method
+ virtual void initialize(Size frameSize, int frameType);
+
+ virtual AlgorithmInfo* info() const;
+
+protected:
+ Size frameSize;
+ int frameType;
+ Mat bgmodel;
+ int nframes;
+ int history;
+ int nmixtures;
+ double varThreshold;
+ double backgroundRatio;
+ double noiseSigma;
+};
+
+
+/*!
+ The class implements the following algorithm:
+ "Improved adaptive Gausian mixture model for background subtraction"
+ Z.Zivkovic
+ International Conference Pattern Recognition, UK, August, 2004.
+ http://www.zoranz.net/Publications/zivkovic2004ICPR.pdf
+*/
+class CV_EXPORTS_W BackgroundSubtractorMOG2 : public BackgroundSubtractor
+{
+public:
+ //! the default constructor
+ CV_WRAP BackgroundSubtractorMOG2();
+ //! the full constructor that takes the length of the history, the number of gaussian mixtures, the background ratio parameter and the noise strength
+ CV_WRAP BackgroundSubtractorMOG2(int history, float varThreshold, bool bShadowDetection=true);
+ //! the destructor
+ virtual ~BackgroundSubtractorMOG2();
+ //! the update operator
+ virtual void operator()(InputArray image, OutputArray fgmask, double learningRate=-1);
+
+ //! computes a background image which are the mean of all background gaussians
+ virtual void getBackgroundImage(OutputArray backgroundImage) const;
+
+ //! re-initiaization method
+ virtual void initialize(Size frameSize, int frameType);
+
+ virtual AlgorithmInfo* info() const;
+
+protected:
+ Size frameSize;
+ int frameType;
+ Mat bgmodel;
+ Mat bgmodelUsedModes;//keep track of number of modes per pixel
+ int nframes;
+ int history;
+ int nmixtures;
+ //! here it is the maximum allowed number of mixture components.
+ //! Actual number is determined dynamically per pixel
+ double varThreshold;
+ // threshold on the squared Mahalanobis distance to decide if it is well described
+ // by the background model or not. Related to Cthr from the paper.
+ // This does not influence the update of the background. A typical value could be 4 sigma
+ // and that is varThreshold=4*4=16; Corresponds to Tb in the paper.
+
+ /////////////////////////
+ // less important parameters - things you might change but be carefull
+ ////////////////////////
+ float backgroundRatio;
+ // corresponds to fTB=1-cf from the paper
+ // TB - threshold when the component becomes significant enough to be included into
+ // the background model. It is the TB=1-cf from the paper. So I use cf=0.1 => TB=0.
+ // For alpha=0.001 it means that the mode should exist for approximately 105 frames before
+ // it is considered foreground
+ // float noiseSigma;
+ float varThresholdGen;
+ //correspondts to Tg - threshold on the squared Mahalan. dist. to decide
+ //when a sample is close to the existing components. If it is not close
+ //to any a new component will be generated. I use 3 sigma => Tg=3*3=9.
+ //Smaller Tg leads to more generated components and higher Tg might make
+ //lead to small number of components but they can grow too large
+ float fVarInit;
+ float fVarMin;
+ float fVarMax;
+ //initial variance for the newly generated components.
+ //It will will influence the speed of adaptation. A good guess should be made.
+ //A simple way is to estimate the typical standard deviation from the images.
+ //I used here 10 as a reasonable value
+ // min and max can be used to further control the variance
+ float fCT;//CT - complexity reduction prior
+ //this is related to the number of samples needed to accept that a component
+ //actually exists. We use CT=0.05 of all the samples. By setting CT=0 you get
+ //the standard Stauffer&Grimson algorithm (maybe not exact but very similar)
+
+ //shadow detection parameters
+ bool bShadowDetection;//default 1 - do shadow detection
+ unsigned char nShadowDetection;//do shadow detection - insert this value as the detection result - 127 default value
+ float fTau;
+ // Tau - shadow threshold. The shadow is detected if the pixel is darker
+ //version of the background. Tau is a threshold on how much darker the shadow can be.
+ //Tau= 0.5 means that if pixel is more than 2 times darker then it is not shadow
+ //See: Prati,Mikic,Trivedi,Cucchiarra,"Detecting Moving Shadows...",IEEE PAMI,2003.
+};
+
+/**
+ * Background Subtractor module. Takes a series of images and returns a sequence of mask (8UC1)
+ * images of the same size, where 255 indicates Foreground and 0 represents Background.
+ * This class implements an algorithm described in "Visual Tracking of Human Visitors under
+ * Variable-Lighting Conditions for a Responsive Audio Art Installation," A. Godbehere,
+ * A. Matsukawa, K. Goldberg, American Control Conference, Montreal, June 2012.
+ */
+class CV_EXPORTS BackgroundSubtractorGMG: public cv::BackgroundSubtractor
+{
+public:
+ BackgroundSubtractorGMG();
+ virtual ~BackgroundSubtractorGMG();
+ virtual AlgorithmInfo* info() const;
+
+ /**
+ * Validate parameters and set up data structures for appropriate image size.
+ * Must call before running on data.
+ * @param frameSize input frame size
+ * @param min minimum value taken on by pixels in image sequence. Usually 0
+ * @param max maximum value taken on by pixels in image sequence. e.g. 1.0 or 255
+ */
+ void initialize(cv::Size frameSize, double min, double max);
+
+ /**
+ * Performs single-frame background subtraction and builds up a statistical background image
+ * model.
+ * @param image Input image
+ * @param fgmask Output mask image representing foreground and background pixels
+ * @param learningRate Determines how quickly features are "forgotten" from histograms
+ */
+ virtual void operator()(InputArray image, OutputArray fgmask, double learningRate=-1.0);
+
+ /**
+ * Releases all inner buffers.
+ */
+ void release();
+
+ //! Total number of distinct colors to maintain in histogram.
+ int maxFeatures;
+ //! Set between 0.0 and 1.0, determines how quickly features are "forgotten" from histograms.
+ double learningRate;
+ //! Number of frames of video to use to initialize histograms.
+ int numInitializationFrames;
+ //! Number of discrete levels in each channel to be used in histograms.
+ int quantizationLevels;
+ //! Prior probability that any given pixel is a background pixel. A sensitivity parameter.
+ double backgroundPrior;
+ //! Value above which pixel is determined to be FG.
+ double decisionThreshold;
+ //! Smoothing radius, in pixels, for cleaning up FG image.
+ int smoothingRadius;
+ //! Perform background model update
+ bool updateBackgroundModel;
+
+private:
+ double maxVal_;
+ double minVal_;
+
+ cv::Size frameSize_;
+ int frameNum_;
+
+ cv::Mat_<int> nfeatures_;
+ cv::Mat_<unsigned int> colors_;
+ cv::Mat_<float> weights_;
+
+ cv::Mat buf_;
+};
+
+}
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/video/tracking.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/video/tracking.hpp
new file mode 100644
index 00000000..f09be806
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/video/tracking.hpp
@@ -0,0 +1,373 @@
+/*! \file tracking.hpp
+ \brief The Object and Feature Tracking
+ */
+
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_TRACKING_HPP__
+#define __OPENCV_TRACKING_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************************\
+* Motion Analysis *
+\****************************************************************************************/
+
+/************************************ optical flow ***************************************/
+
+#define CV_LKFLOW_PYR_A_READY 1
+#define CV_LKFLOW_PYR_B_READY 2
+#define CV_LKFLOW_INITIAL_GUESSES 4
+#define CV_LKFLOW_GET_MIN_EIGENVALS 8
+
+/* It is Lucas & Kanade method, modified to use pyramids.
+ Also it does several iterations to get optical flow for
+ every point at every pyramid level.
+ Calculates optical flow between two images for certain set of points (i.e.
+ it is a "sparse" optical flow, which is opposite to the previous 3 methods) */
+CVAPI(void) cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr,
+ CvArr* prev_pyr, CvArr* curr_pyr,
+ const CvPoint2D32f* prev_features,
+ CvPoint2D32f* curr_features,
+ int count,
+ CvSize win_size,
+ int level,
+ char* status,
+ float* track_error,
+ CvTermCriteria criteria,
+ int flags );
+
+
+/* Modification of a previous sparse optical flow algorithm to calculate
+ affine flow */
+CVAPI(void) cvCalcAffineFlowPyrLK( const CvArr* prev, const CvArr* curr,
+ CvArr* prev_pyr, CvArr* curr_pyr,
+ const CvPoint2D32f* prev_features,
+ CvPoint2D32f* curr_features,
+ float* matrices, int count,
+ CvSize win_size, int level,
+ char* status, float* track_error,
+ CvTermCriteria criteria, int flags );
+
+/* Estimate rigid transformation between 2 images or 2 point sets */
+CVAPI(int) cvEstimateRigidTransform( const CvArr* A, const CvArr* B,
+ CvMat* M, int full_affine );
+
+/* Estimate optical flow for each pixel using the two-frame G. Farneback algorithm */
+CVAPI(void) cvCalcOpticalFlowFarneback( const CvArr* prev, const CvArr* next,
+ CvArr* flow, double pyr_scale, int levels,
+ int winsize, int iterations, int poly_n,
+ double poly_sigma, int flags );
+
+/********************************* motion templates *************************************/
+
+/****************************************************************************************\
+* All the motion template functions work only with single channel images. *
+* Silhouette image must have depth IPL_DEPTH_8U or IPL_DEPTH_8S *
+* Motion history image must have depth IPL_DEPTH_32F, *
+* Gradient mask - IPL_DEPTH_8U or IPL_DEPTH_8S, *
+* Motion orientation image - IPL_DEPTH_32F *
+* Segmentation mask - IPL_DEPTH_32F *
+* All the angles are in degrees, all the times are in milliseconds *
+\****************************************************************************************/
+
+/* Updates motion history image given motion silhouette */
+CVAPI(void) cvUpdateMotionHistory( const CvArr* silhouette, CvArr* mhi,
+ double timestamp, double duration );
+
+/* Calculates gradient of the motion history image and fills
+ a mask indicating where the gradient is valid */
+CVAPI(void) cvCalcMotionGradient( const CvArr* mhi, CvArr* mask, CvArr* orientation,
+ double delta1, double delta2,
+ int aperture_size CV_DEFAULT(3));
+
+/* Calculates average motion direction within a selected motion region
+ (region can be selected by setting ROIs and/or by composing a valid gradient mask
+ with the region mask) */
+CVAPI(double) cvCalcGlobalOrientation( const CvArr* orientation, const CvArr* mask,
+ const CvArr* mhi, double timestamp,
+ double duration );
+
+/* Splits a motion history image into a few parts corresponding to separate independent motions
+ (e.g. left hand, right hand) */
+CVAPI(CvSeq*) cvSegmentMotion( const CvArr* mhi, CvArr* seg_mask,
+ CvMemStorage* storage,
+ double timestamp, double seg_thresh );
+
+/****************************************************************************************\
+* Tracking *
+\****************************************************************************************/
+
+/* Implements CAMSHIFT algorithm - determines object position, size and orientation
+ from the object histogram back project (extension of meanshift) */
+CVAPI(int) cvCamShift( const CvArr* prob_image, CvRect window,
+ CvTermCriteria criteria, CvConnectedComp* comp,
+ CvBox2D* box CV_DEFAULT(NULL) );
+
+/* Implements MeanShift algorithm - determines object position
+ from the object histogram back project */
+CVAPI(int) cvMeanShift( const CvArr* prob_image, CvRect window,
+ CvTermCriteria criteria, CvConnectedComp* comp );
+
+/*
+standard Kalman filter (in G. Welch' and G. Bishop's notation):
+
+ x(k)=A*x(k-1)+B*u(k)+w(k) p(w)~N(0,Q)
+ z(k)=H*x(k)+v(k), p(v)~N(0,R)
+*/
+typedef struct CvKalman
+{
+ int MP; /* number of measurement vector dimensions */
+ int DP; /* number of state vector dimensions */
+ int CP; /* number of control vector dimensions */
+
+ /* backward compatibility fields */
+#if 1
+ float* PosterState; /* =state_pre->data.fl */
+ float* PriorState; /* =state_post->data.fl */
+ float* DynamMatr; /* =transition_matrix->data.fl */
+ float* MeasurementMatr; /* =measurement_matrix->data.fl */
+ float* MNCovariance; /* =measurement_noise_cov->data.fl */
+ float* PNCovariance; /* =process_noise_cov->data.fl */
+ float* KalmGainMatr; /* =gain->data.fl */
+ float* PriorErrorCovariance;/* =error_cov_pre->data.fl */
+ float* PosterErrorCovariance;/* =error_cov_post->data.fl */
+ float* Temp1; /* temp1->data.fl */
+ float* Temp2; /* temp2->data.fl */
+#endif
+
+ CvMat* state_pre; /* predicted state (x'(k)):
+ x(k)=A*x(k-1)+B*u(k) */
+ CvMat* state_post; /* corrected state (x(k)):
+ x(k)=x'(k)+K(k)*(z(k)-H*x'(k)) */
+ CvMat* transition_matrix; /* state transition matrix (A) */
+ CvMat* control_matrix; /* control matrix (B)
+ (it is not used if there is no control)*/
+ CvMat* measurement_matrix; /* measurement matrix (H) */
+ CvMat* process_noise_cov; /* process noise covariance matrix (Q) */
+ CvMat* measurement_noise_cov; /* measurement noise covariance matrix (R) */
+ CvMat* error_cov_pre; /* priori error estimate covariance matrix (P'(k)):
+ P'(k)=A*P(k-1)*At + Q)*/
+ CvMat* gain; /* Kalman gain matrix (K(k)):
+ K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R)*/
+ CvMat* error_cov_post; /* posteriori error estimate covariance matrix (P(k)):
+ P(k)=(I-K(k)*H)*P'(k) */
+ CvMat* temp1; /* temporary matrices */
+ CvMat* temp2;
+ CvMat* temp3;
+ CvMat* temp4;
+ CvMat* temp5;
+} CvKalman;
+
+/* Creates Kalman filter and sets A, B, Q, R and state to some initial values */
+CVAPI(CvKalman*) cvCreateKalman( int dynam_params, int measure_params,
+ int control_params CV_DEFAULT(0));
+
+/* Releases Kalman filter state */
+CVAPI(void) cvReleaseKalman( CvKalman** kalman);
+
+/* Updates Kalman filter by time (predicts future state of the system) */
+CVAPI(const CvMat*) cvKalmanPredict( CvKalman* kalman,
+ const CvMat* control CV_DEFAULT(NULL));
+
+/* Updates Kalman filter by measurement
+ (corrects state of the system and internal matrices) */
+CVAPI(const CvMat*) cvKalmanCorrect( CvKalman* kalman, const CvMat* measurement );
+
+#define cvKalmanUpdateByTime cvKalmanPredict
+#define cvKalmanUpdateByMeasurement cvKalmanCorrect
+
+#ifdef __cplusplus
+}
+
+namespace cv
+{
+
+//! updates motion history image using the current silhouette
+CV_EXPORTS_W void updateMotionHistory( InputArray silhouette, InputOutputArray mhi,
+ double timestamp, double duration );
+
+//! computes the motion gradient orientation image from the motion history image
+CV_EXPORTS_W void calcMotionGradient( InputArray mhi, OutputArray mask,
+ OutputArray orientation,
+ double delta1, double delta2,
+ int apertureSize=3 );
+
+//! computes the global orientation of the selected motion history image part
+CV_EXPORTS_W double calcGlobalOrientation( InputArray orientation, InputArray mask,
+ InputArray mhi, double timestamp,
+ double duration );
+
+CV_EXPORTS_W void segmentMotion(InputArray mhi, OutputArray segmask,
+ CV_OUT vector<Rect>& boundingRects,
+ double timestamp, double segThresh);
+
+//! updates the object tracking window using CAMSHIFT algorithm
+CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window,
+ TermCriteria criteria );
+
+//! updates the object tracking window using meanshift algorithm
+CV_EXPORTS_W int meanShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window,
+ TermCriteria criteria );
+
+/*!
+ Kalman filter.
+
+ The class implements standard Kalman filter http://en.wikipedia.org/wiki/Kalman_filter.
+ However, you can modify KalmanFilter::transitionMatrix, KalmanFilter::controlMatrix and
+ KalmanFilter::measurementMatrix to get the extended Kalman filter functionality.
+*/
+class CV_EXPORTS_W KalmanFilter
+{
+public:
+ //! the default constructor
+ CV_WRAP KalmanFilter();
+ //! the full constructor taking the dimensionality of the state, of the measurement and of the control vector
+ CV_WRAP KalmanFilter(int dynamParams, int measureParams, int controlParams=0, int type=CV_32F);
+ //! re-initializes Kalman filter. The previous content is destroyed.
+ void init(int dynamParams, int measureParams, int controlParams=0, int type=CV_32F);
+
+ //! computes predicted state
+ CV_WRAP const Mat& predict(const Mat& control=Mat());
+ //! updates the predicted state from the measurement
+ CV_WRAP const Mat& correct(const Mat& measurement);
+
+ Mat statePre; //!< predicted state (x'(k)): x(k)=A*x(k-1)+B*u(k)
+ Mat statePost; //!< corrected state (x(k)): x(k)=x'(k)+K(k)*(z(k)-H*x'(k))
+ Mat transitionMatrix; //!< state transition matrix (A)
+ Mat controlMatrix; //!< control matrix (B) (not used if there is no control)
+ Mat measurementMatrix; //!< measurement matrix (H)
+ Mat processNoiseCov; //!< process noise covariance matrix (Q)
+ Mat measurementNoiseCov;//!< measurement noise covariance matrix (R)
+ Mat errorCovPre; //!< priori error estimate covariance matrix (P'(k)): P'(k)=A*P(k-1)*At + Q)*/
+ Mat gain; //!< Kalman gain matrix (K(k)): K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R)
+ Mat errorCovPost; //!< posteriori error estimate covariance matrix (P(k)): P(k)=(I-K(k)*H)*P'(k)
+
+ // temporary matrices
+ Mat temp1;
+ Mat temp2;
+ Mat temp3;
+ Mat temp4;
+ Mat temp5;
+};
+
+enum
+{
+ OPTFLOW_USE_INITIAL_FLOW = CV_LKFLOW_INITIAL_GUESSES,
+ OPTFLOW_LK_GET_MIN_EIGENVALS = CV_LKFLOW_GET_MIN_EIGENVALS,
+ OPTFLOW_FARNEBACK_GAUSSIAN = 256
+};
+
+//! constructs a pyramid which can be used as input for calcOpticalFlowPyrLK
+CV_EXPORTS_W int buildOpticalFlowPyramid(InputArray img, OutputArrayOfArrays pyramid,
+ Size winSize, int maxLevel, bool withDerivatives = true,
+ int pyrBorder = BORDER_REFLECT_101, int derivBorder = BORDER_CONSTANT,
+ bool tryReuseInputImage = true);
+
+//! computes sparse optical flow using multi-scale Lucas-Kanade algorithm
+CV_EXPORTS_W void calcOpticalFlowPyrLK( InputArray prevImg, InputArray nextImg,
+ InputArray prevPts, CV_OUT InputOutputArray nextPts,
+ OutputArray status, OutputArray err,
+ Size winSize=Size(21,21), int maxLevel=3,
+ TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01),
+ int flags=0, double minEigThreshold=1e-4);
+
+//! computes dense optical flow using Farneback algorithm
+CV_EXPORTS_W void calcOpticalFlowFarneback( InputArray prev, InputArray next,
+ CV_OUT InputOutputArray flow, double pyr_scale, int levels, int winsize,
+ int iterations, int poly_n, double poly_sigma, int flags );
+
+//! estimates the best-fit Euqcidean, similarity, affine or perspective transformation
+// that maps one 2D point set to another or one image to another.
+CV_EXPORTS_W Mat estimateRigidTransform( InputArray src, InputArray dst,
+ bool fullAffine);
+
+//! computes dense optical flow using Simple Flow algorithm
+CV_EXPORTS_W void calcOpticalFlowSF(Mat& from,
+ Mat& to,
+ Mat& flow,
+ int layers,
+ int averaging_block_size,
+ int max_flow);
+
+CV_EXPORTS_W void calcOpticalFlowSF(Mat& from,
+ Mat& to,
+ Mat& flow,
+ int layers,
+ int averaging_block_size,
+ int max_flow,
+ double sigma_dist,
+ double sigma_color,
+ int postprocess_window,
+ double sigma_dist_fix,
+ double sigma_color_fix,
+ double occ_thr,
+ int upscale_averaging_radius,
+ double upscale_sigma_dist,
+ double upscale_sigma_color,
+ double speed_up_thr);
+
+class CV_EXPORTS DenseOpticalFlow : public Algorithm
+{
+public:
+ virtual void calc(InputArray I0, InputArray I1, InputOutputArray flow) = 0;
+ virtual void collectGarbage() = 0;
+};
+
+// Implementation of the Zach, Pock and Bischof Dual TV-L1 Optical Flow method
+//
+// see reference:
+// [1] C. Zach, T. Pock and H. Bischof, "A Duality Based Approach for Realtime TV-L1 Optical Flow".
+// [2] Javier Sanchez, Enric Meinhardt-Llopis and Gabriele Facciolo. "TV-L1 Optical Flow Estimation".
+CV_EXPORTS Ptr<DenseOpticalFlow> createOptFlow_DualTVL1();
+
+}
+
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/video/video.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/video/video.hpp
new file mode 100644
index 00000000..1dd96f54
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/video/video.hpp
@@ -0,0 +1,58 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEO_HPP__
+#define __OPENCV_VIDEO_HPP__
+
+#include "opencv2/video/tracking.hpp"
+#include "opencv2/video/background_segm.hpp"
+
+#ifdef __cplusplus
+namespace cv
+{
+
+CV_EXPORTS bool initModule_video(void);
+
+}
+#endif
+
+#endif //__OPENCV_VIDEO_HPP__
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab.hpp
new file mode 100644
index 00000000..4334d5c5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab.hpp
@@ -0,0 +1,43 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "opencv2/videostab/videostab.hpp"
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/deblurring.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/deblurring.hpp
new file mode 100644
index 00000000..a61f9ce6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/deblurring.hpp
@@ -0,0 +1,110 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_DEBLURRING_HPP__
+#define __OPENCV_VIDEOSTAB_DEBLURRING_HPP__
+
+#include <vector>
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+CV_EXPORTS float calcBlurriness(const Mat &frame);
+
+class CV_EXPORTS DeblurerBase
+{
+public:
+ DeblurerBase() : radius_(0), frames_(0), motions_(0) {}
+
+ virtual ~DeblurerBase() {}
+
+ virtual void setRadius(int val) { radius_ = val; }
+ virtual int radius() const { return radius_; }
+
+ virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; }
+ virtual const std::vector<Mat>& frames() const { return *frames_; }
+
+ virtual void setMotions(const std::vector<Mat> &val) { motions_ = &val; }
+ virtual const std::vector<Mat>& motions() const { return *motions_; }
+
+ virtual void setBlurrinessRates(const std::vector<float> &val) { blurrinessRates_ = &val; }
+ virtual const std::vector<float>& blurrinessRates() const { return *blurrinessRates_; }
+
+ virtual void update() {}
+
+ virtual void deblur(int idx, Mat &frame) = 0;
+
+protected:
+ int radius_;
+ const std::vector<Mat> *frames_;
+ const std::vector<Mat> *motions_;
+ const std::vector<float> *blurrinessRates_;
+};
+
+class CV_EXPORTS NullDeblurer : public DeblurerBase
+{
+public:
+ virtual void deblur(int /*idx*/, Mat &/*frame*/) {}
+};
+
+class CV_EXPORTS WeightingDeblurer : public DeblurerBase
+{
+public:
+ WeightingDeblurer();
+
+ void setSensitivity(float val) { sensitivity_ = val; }
+ float sensitivity() const { return sensitivity_; }
+
+ virtual void deblur(int idx, Mat &frame);
+
+private:
+ float sensitivity_;
+ Mat_<float> bSum_, gSum_, rSum_, wSum_;
+};
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching.hpp
new file mode 100644
index 00000000..23c5df3a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching.hpp
@@ -0,0 +1,103 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_FAST_MARCHING_HPP__
+#define __OPENCV_VIDEOSTAB_FAST_MARCHING_HPP__
+
+#include <cmath>
+#include <queue>
+#include <algorithm>
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+// See http://iwi.eldoc.ub.rug.nl/FILES/root/2004/JGraphToolsTelea/2004JGraphToolsTelea.pdf
+class CV_EXPORTS FastMarchingMethod
+{
+public:
+ FastMarchingMethod() : inf_(1e6f) {}
+
+ template <typename Inpaint>
+ Inpaint run(const Mat &mask, Inpaint inpaint);
+
+ Mat distanceMap() const { return dist_; }
+
+private:
+ enum { INSIDE = 0, BAND = 1, KNOWN = 255 };
+
+ struct DXY
+ {
+ float dist;
+ int x, y;
+
+ DXY() : dist(0), x(0), y(0) {}
+ DXY(float _dist, int _x, int _y) : dist(_dist), x(_x), y(_y) {}
+ bool operator <(const DXY &dxy) const { return dist < dxy.dist; }
+ };
+
+ float solve(int x1, int y1, int x2, int y2) const;
+ int& indexOf(const DXY &dxy) { return index_(dxy.y, dxy.x); }
+
+ void heapUp(int idx);
+ void heapDown(int idx);
+ void heapAdd(const DXY &dxy);
+ void heapRemoveMin();
+
+ float inf_;
+
+ cv::Mat_<uchar> flag_; // flag map
+ cv::Mat_<float> dist_; // distance map
+
+ cv::Mat_<int> index_; // index of point in the narrow band
+ std::vector<DXY> narrowBand_; // narrow band heap
+ int size_; // narrow band size
+};
+
+} // namespace videostab
+} // namespace cv
+
+#include "fast_marching_inl.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching_inl.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching_inl.hpp
new file mode 100644
index 00000000..dc860c2c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/fast_marching_inl.hpp
@@ -0,0 +1,166 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_FAST_MARCHING_INL_HPP__
+#define __OPENCV_VIDEOSTAB_FAST_MARCHING_INL_HPP__
+
+#include "opencv2/videostab/fast_marching.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+template <typename Inpaint>
+Inpaint FastMarchingMethod::run(const cv::Mat &mask, Inpaint inpaint)
+{
+ using namespace std;
+ using namespace cv;
+
+ CV_Assert(mask.type() == CV_8U);
+
+ static const int lut[4][2] = {{-1,0}, {0,-1}, {1,0}, {0,1}};
+
+ mask.copyTo(flag_);
+ flag_.create(mask.size());
+ dist_.create(mask.size());
+ index_.create(mask.size());
+ narrowBand_.clear();
+ size_ = 0;
+
+ // init
+ for (int y = 0; y < flag_.rows; ++y)
+ {
+ for (int x = 0; x < flag_.cols; ++x)
+ {
+ if (flag_(y,x) == KNOWN)
+ dist_(y,x) = 0.f;
+ else
+ {
+ int n = 0;
+ int nunknown = 0;
+
+ for (int i = 0; i < 4; ++i)
+ {
+ int xn = x + lut[i][0];
+ int yn = y + lut[i][1];
+
+ if (xn >= 0 && xn < flag_.cols && yn >= 0 && yn < flag_.rows)
+ {
+ n++;
+ if (flag_(yn,xn) != KNOWN)
+ nunknown++;
+ }
+ }
+
+ if (n>0 && nunknown == n)
+ {
+ dist_(y,x) = inf_;
+ flag_(y,x) = INSIDE;
+ }
+ else
+ {
+ dist_(y,x) = 0.f;
+ flag_(y,x) = BAND;
+ inpaint(x, y);
+
+ narrowBand_.push_back(DXY(0.f,x,y));
+ index_(y,x) = size_++;
+ }
+ }
+ }
+ }
+
+ // make heap
+ for (int i = size_/2-1; i >= 0; --i)
+ heapDown(i);
+
+ // main cycle
+ while (size_ > 0)
+ {
+ int x = narrowBand_[0].x;
+ int y = narrowBand_[0].y;
+ heapRemoveMin();
+
+ flag_(y,x) = KNOWN;
+ for (int n = 0; n < 4; ++n)
+ {
+ int xn = x + lut[n][0];
+ int yn = y + lut[n][1];
+
+ if (xn >= 0 && xn < flag_.cols && yn >= 0 && yn < flag_.rows && flag_(yn,xn) != KNOWN)
+ {
+ dist_(yn,xn) = min(min(solve(xn-1, yn, xn, yn-1), solve(xn+1, yn, xn, yn-1)),
+ min(solve(xn-1, yn, xn, yn+1), solve(xn+1, yn, xn, yn+1)));
+
+ if (flag_(yn,xn) == INSIDE)
+ {
+ flag_(yn,xn) = BAND;
+ inpaint(xn, yn);
+ heapAdd(DXY(dist_(yn,xn),xn,yn));
+ }
+ else
+ {
+ int i = index_(yn,xn);
+ if (dist_(yn,xn) < narrowBand_[i].dist)
+ {
+ narrowBand_[i].dist = dist_(yn,xn);
+ heapUp(i);
+ }
+ // works better if it's commented out
+ /*else if (dist(yn,xn) > narrowBand[i].dist)
+ {
+ narrowBand[i].dist = dist(yn,xn);
+ heapDown(i);
+ }*/
+ }
+ }
+ }
+ }
+
+ return inpaint;
+}
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/frame_source.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/frame_source.hpp
new file mode 100644
index 00000000..c22c0a4c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/frame_source.hpp
@@ -0,0 +1,91 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_FRAME_SOURCE_HPP__
+#define __OPENCV_VIDEOSTAB_FRAME_SOURCE_HPP__
+
+#include <vector>
+#include <string>
+#include "opencv2/core/core.hpp"
+#include "opencv2/highgui/highgui.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+class CV_EXPORTS IFrameSource
+{
+public:
+ virtual ~IFrameSource() {}
+ virtual void reset() = 0;
+ virtual Mat nextFrame() = 0;
+};
+
+class CV_EXPORTS NullFrameSource : public IFrameSource
+{
+public:
+ virtual void reset() {}
+ virtual Mat nextFrame() { return Mat(); }
+};
+
+class CV_EXPORTS VideoFileSource : public IFrameSource
+{
+public:
+ VideoFileSource(const std::string &path, bool volatileFrame = false);
+
+ virtual void reset();
+ virtual Mat nextFrame();
+
+ int frameCount() { return static_cast<int>(reader_.get(CV_CAP_PROP_FRAME_COUNT)); }
+ double fps() { return reader_.get(CV_CAP_PROP_FPS); }
+
+private:
+ std::string path_;
+ bool volatileFrame_;
+ VideoCapture reader_;
+};
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/global_motion.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/global_motion.hpp
new file mode 100644
index 00000000..f5f34b92
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/global_motion.hpp
@@ -0,0 +1,141 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_GLOBAL_MOTION_HPP__
+#define __OPENCV_VIDEOSTAB_GLOBAL_MOTION_HPP__
+
+#include <vector>
+#include "opencv2/core/core.hpp"
+#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/videostab/optical_flow.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+enum MotionModel
+{
+ TRANSLATION = 0,
+ TRANSLATION_AND_SCALE = 1,
+ LINEAR_SIMILARITY = 2,
+ AFFINE = 3
+};
+
+CV_EXPORTS Mat estimateGlobalMotionLeastSquares(
+ const std::vector<Point2f> &points0, const std::vector<Point2f> &points1,
+ int model = AFFINE, float *rmse = 0);
+
+struct CV_EXPORTS RansacParams
+{
+ int size; // subset size
+ float thresh; // max error to classify as inlier
+ float eps; // max outliers ratio
+ float prob; // probability of success
+
+ RansacParams(int _size, float _thresh, float _eps, float _prob)
+ : size(_size), thresh(_thresh), eps(_eps), prob(_prob) {}
+
+ static RansacParams translationMotionStd() { return RansacParams(2, 0.5f, 0.5f, 0.99f); }
+ static RansacParams translationAndScale2dMotionStd() { return RansacParams(3, 0.5f, 0.5f, 0.99f); }
+ static RansacParams linearSimilarityMotionStd() { return RansacParams(4, 0.5f, 0.5f, 0.99f); }
+ static RansacParams affine2dMotionStd() { return RansacParams(6, 0.5f, 0.5f, 0.99f); }
+};
+
+CV_EXPORTS Mat estimateGlobalMotionRobust(
+ const std::vector<Point2f> &points0, const std::vector<Point2f> &points1,
+ int model = AFFINE, const RansacParams &params = RansacParams::affine2dMotionStd(),
+ float *rmse = 0, int *ninliers = 0);
+
+class CV_EXPORTS IGlobalMotionEstimator
+{
+public:
+ virtual ~IGlobalMotionEstimator() {}
+ virtual Mat estimate(const Mat &frame0, const Mat &frame1) = 0;
+};
+
+class CV_EXPORTS PyrLkRobustMotionEstimator : public IGlobalMotionEstimator
+{
+public:
+ PyrLkRobustMotionEstimator();
+
+ void setDetector(Ptr<FeatureDetector> val) { detector_ = val; }
+ Ptr<FeatureDetector> detector() const { return detector_; }
+
+ void setOptFlowEstimator(Ptr<ISparseOptFlowEstimator> val) { optFlowEstimator_ = val; }
+ Ptr<ISparseOptFlowEstimator> optFlowEstimator() const { return optFlowEstimator_; }
+
+ void setMotionModel(MotionModel val) { motionModel_ = val; }
+ MotionModel motionModel() const { return motionModel_; }
+
+ void setRansacParams(const RansacParams &val) { ransacParams_ = val; }
+ RansacParams ransacParams() const { return ransacParams_; }
+
+ void setMaxRmse(float val) { maxRmse_ = val; }
+ float maxRmse() const { return maxRmse_; }
+
+ void setMinInlierRatio(float val) { minInlierRatio_ = val; }
+ float minInlierRatio() const { return minInlierRatio_; }
+
+ virtual Mat estimate(const Mat &frame0, const Mat &frame1);
+
+private:
+ Ptr<FeatureDetector> detector_;
+ Ptr<ISparseOptFlowEstimator> optFlowEstimator_;
+ MotionModel motionModel_;
+ RansacParams ransacParams_;
+ std::vector<uchar> status_;
+ std::vector<KeyPoint> keypointsPrev_;
+ std::vector<Point2f> pointsPrev_, points_;
+ std::vector<Point2f> pointsPrevGood_, pointsGood_;
+ float maxRmse_;
+ float minInlierRatio_;
+};
+
+CV_EXPORTS Mat getMotion(int from, int to, const Mat *motions, int size);
+
+CV_EXPORTS Mat getMotion(int from, int to, const std::vector<Mat> &motions);
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/inpainting.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/inpainting.hpp
new file mode 100644
index 00000000..8df60f7e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/inpainting.hpp
@@ -0,0 +1,200 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_INPAINTINT_HPP__
+#define __OPENCV_VIDEOSTAB_INPAINTINT_HPP__
+
+#include <vector>
+#include "opencv2/core/core.hpp"
+#include "opencv2/videostab/optical_flow.hpp"
+#include "opencv2/videostab/fast_marching.hpp"
+#include "opencv2/photo/photo.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+class CV_EXPORTS InpainterBase
+{
+public:
+ InpainterBase()
+ : radius_(0), frames_(0), motions_(0),
+ stabilizedFrames_(0), stabilizationMotions_(0) {}
+
+ virtual ~InpainterBase() {}
+
+ virtual void setRadius(int val) { radius_ = val; }
+ virtual int radius() const { return radius_; }
+
+ virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; }
+ virtual const std::vector<Mat>& frames() const { return *frames_; }
+
+ virtual void setMotions(const std::vector<Mat> &val) { motions_ = &val; }
+ virtual const std::vector<Mat>& motions() const { return *motions_; }
+
+ virtual void setStabilizedFrames(const std::vector<Mat> &val) { stabilizedFrames_ = &val; }
+ virtual const std::vector<Mat>& stabilizedFrames() const { return *stabilizedFrames_; }
+
+ virtual void setStabilizationMotions(const std::vector<Mat> &val) { stabilizationMotions_ = &val; }
+ virtual const std::vector<Mat>& stabilizationMotions() const { return *stabilizationMotions_; }
+
+ virtual void update() {}
+
+ virtual void inpaint(int idx, Mat &frame, Mat &mask) = 0;
+
+protected:
+ int radius_;
+ const std::vector<Mat> *frames_;
+ const std::vector<Mat> *motions_;
+ const std::vector<Mat> *stabilizedFrames_;
+ const std::vector<Mat> *stabilizationMotions_;
+};
+
+class CV_EXPORTS NullInpainter : public InpainterBase
+{
+public:
+ virtual void inpaint(int /*idx*/, Mat &/*frame*/, Mat &/*mask*/) {}
+};
+
+class CV_EXPORTS InpaintingPipeline : public InpainterBase
+{
+public:
+ void pushBack(Ptr<InpainterBase> inpainter) { inpainters_.push_back(inpainter); }
+ bool empty() const { return inpainters_.empty(); }
+
+ virtual void setRadius(int val);
+ virtual void setFrames(const std::vector<Mat> &val);
+ virtual void setMotions(const std::vector<Mat> &val);
+ virtual void setStabilizedFrames(const std::vector<Mat> &val);
+ virtual void setStabilizationMotions(const std::vector<Mat> &val);
+
+ virtual void update();
+
+ virtual void inpaint(int idx, Mat &frame, Mat &mask);
+
+private:
+ std::vector<Ptr<InpainterBase> > inpainters_;
+};
+
+class CV_EXPORTS ConsistentMosaicInpainter : public InpainterBase
+{
+public:
+ ConsistentMosaicInpainter();
+
+ void setStdevThresh(float val) { stdevThresh_ = val; }
+ float stdevThresh() const { return stdevThresh_; }
+
+ virtual void inpaint(int idx, Mat &frame, Mat &mask);
+
+private:
+ float stdevThresh_;
+};
+
+class CV_EXPORTS MotionInpainter : public InpainterBase
+{
+public:
+ MotionInpainter();
+
+ void setOptFlowEstimator(Ptr<IDenseOptFlowEstimator> val) { optFlowEstimator_ = val; }
+ Ptr<IDenseOptFlowEstimator> optFlowEstimator() const { return optFlowEstimator_; }
+
+ void setFlowErrorThreshold(float val) { flowErrorThreshold_ = val; }
+ float flowErrorThreshold() const { return flowErrorThreshold_; }
+
+ void setDistThreshold(float val) { distThresh_ = val; }
+ float distThresh() const { return distThresh_; }
+
+ void setBorderMode(int val) { borderMode_ = val; }
+ int borderMode() const { return borderMode_; }
+
+ virtual void inpaint(int idx, Mat &frame, Mat &mask);
+
+private:
+ FastMarchingMethod fmm_;
+ Ptr<IDenseOptFlowEstimator> optFlowEstimator_;
+ float flowErrorThreshold_;
+ float distThresh_;
+ int borderMode_;
+
+ Mat frame1_, transformedFrame1_;
+ Mat_<uchar> grayFrame_, transformedGrayFrame1_;
+ Mat_<uchar> mask1_, transformedMask1_;
+ Mat_<float> flowX_, flowY_, flowErrors_;
+ Mat_<uchar> flowMask_;
+};
+
+class CV_EXPORTS ColorAverageInpainter : public InpainterBase
+{
+public:
+ virtual void inpaint(int idx, Mat &frame, Mat &mask);
+
+private:
+ FastMarchingMethod fmm_;
+};
+
+class CV_EXPORTS ColorInpainter : public InpainterBase
+{
+public:
+ ColorInpainter(int method = INPAINT_TELEA, double _radius = 2.)
+ : method_(method), radius_(_radius) {}
+
+ virtual void inpaint(int idx, Mat &frame, Mat &mask);
+
+private:
+ int method_;
+ double radius_;
+ Mat invMask_;
+};
+
+CV_EXPORTS void calcFlowMask(
+ const Mat &flowX, const Mat &flowY, const Mat &errors, float maxError,
+ const Mat &mask0, const Mat &mask1, Mat &flowMask);
+
+CV_EXPORTS void completeFrameAccordingToFlow(
+ const Mat &flowMask, const Mat &flowX, const Mat &flowY, const Mat &frame1, const Mat &mask1,
+ float distThresh, Mat& frame0, Mat &mask0);
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/log.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/log.hpp
new file mode 100644
index 00000000..ce6fadf8
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/log.hpp
@@ -0,0 +1,75 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_LOG_HPP__
+#define __OPENCV_VIDEOSTAB_LOG_HPP__
+
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+class CV_EXPORTS ILog
+{
+public:
+ virtual ~ILog() {}
+ virtual void print(const char *format, ...) = 0;
+};
+
+class CV_EXPORTS NullLog : public ILog
+{
+public:
+ virtual void print(const char * /*format*/, ...) {}
+};
+
+class CV_EXPORTS LogToStdout : public ILog
+{
+public:
+ virtual void print(const char *format, ...);
+};
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/motion_stabilizing.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/motion_stabilizing.hpp
new file mode 100644
index 00000000..de05ad25
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/motion_stabilizing.hpp
@@ -0,0 +1,106 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_MOTION_STABILIZING_HPP__
+#define __OPENCV_VIDEOSTAB_MOTION_STABILIZING_HPP__
+
+#include <vector>
+#include "opencv2/core/core.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+class CV_EXPORTS IMotionStabilizer
+{
+public:
+ virtual void stabilize(const Mat *motions, int size, Mat *stabilizationMotions) const = 0;
+
+#ifdef OPENCV_CAN_BREAK_BINARY_COMPATIBILITY
+ virtual ~IMotionStabilizer() {}
+#endif
+};
+
+class CV_EXPORTS MotionFilterBase : public IMotionStabilizer
+{
+public:
+ MotionFilterBase() : radius_(0) {}
+ virtual ~MotionFilterBase() {}
+
+ virtual void setRadius(int val) { radius_ = val; }
+ virtual int radius() const { return radius_; }
+
+ virtual void update() {}
+
+ virtual Mat stabilize(int index, const Mat *motions, int size) const = 0;
+ virtual void stabilize(const Mat *motions, int size, Mat *stabilizationMotions) const;
+
+protected:
+ int radius_;
+};
+
+class CV_EXPORTS GaussianMotionFilter : public MotionFilterBase
+{
+public:
+ GaussianMotionFilter() : stdev_(-1.f) {}
+
+ void setStdev(float val) { stdev_ = val; }
+ float stdev() const { return stdev_; }
+
+ virtual void update();
+
+ virtual Mat stabilize(int index, const Mat *motions, int size) const;
+
+private:
+ float stdev_;
+ std::vector<float> weight_;
+};
+
+CV_EXPORTS Mat ensureInclusionConstraint(const Mat &M, Size size, float trimRatio);
+
+CV_EXPORTS float estimateOptimalTrimRatio(const Mat &M, Size size);
+
+} // namespace videostab
+} // namespace
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/optical_flow.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/optical_flow.hpp
new file mode 100644
index 00000000..2c1742fc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/optical_flow.hpp
@@ -0,0 +1,120 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP__
+#define __OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP__
+
+#include "opencv2/core/core.hpp"
+#include "opencv2/opencv_modules.hpp"
+
+#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
+# include "opencv2/gpu/gpu.hpp"
+#endif
+
+namespace cv
+{
+namespace videostab
+{
+
+class CV_EXPORTS ISparseOptFlowEstimator
+{
+public:
+ virtual ~ISparseOptFlowEstimator() {}
+ virtual void run(
+ InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
+ OutputArray status, OutputArray errors) = 0;
+};
+
+class CV_EXPORTS IDenseOptFlowEstimator
+{
+public:
+ virtual ~IDenseOptFlowEstimator() {}
+ virtual void run(
+ InputArray frame0, InputArray frame1, InputOutputArray flowX, InputOutputArray flowY,
+ OutputArray errors) = 0;
+};
+
+class CV_EXPORTS PyrLkOptFlowEstimatorBase
+{
+public:
+ PyrLkOptFlowEstimatorBase() { setWinSize(Size(21, 21)); setMaxLevel(3); }
+
+ void setWinSize(Size val) { winSize_ = val; }
+ Size winSize() const { return winSize_; }
+
+ void setMaxLevel(int val) { maxLevel_ = val; }
+ int maxLevel() const { return maxLevel_; }
+
+protected:
+ Size winSize_;
+ int maxLevel_;
+};
+
+class CV_EXPORTS SparsePyrLkOptFlowEstimator
+ : public PyrLkOptFlowEstimatorBase, public ISparseOptFlowEstimator
+{
+public:
+ virtual void run(
+ InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
+ OutputArray status, OutputArray errors);
+};
+
+#if defined(HAVE_OPENCV_GPU) && !defined(ANDROID)
+class CV_EXPORTS DensePyrLkOptFlowEstimatorGpu
+ : public PyrLkOptFlowEstimatorBase, public IDenseOptFlowEstimator
+{
+public:
+ DensePyrLkOptFlowEstimatorGpu();
+
+ virtual void run(
+ InputArray frame0, InputArray frame1, InputOutputArray flowX, InputOutputArray flowY,
+ OutputArray errors);
+private:
+ gpu::PyrLKOpticalFlow optFlowEstimator_;
+ gpu::GpuMat frame0_, frame1_, flowX_, flowY_, errors_;
+};
+#endif
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/stabilizer.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/stabilizer.hpp
new file mode 100644
index 00000000..d1d53887
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/stabilizer.hpp
@@ -0,0 +1,187 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_STABILIZER_HPP__
+#define __OPENCV_VIDEOSTAB_STABILIZER_HPP__
+
+#include <vector>
+#include "opencv2/core/core.hpp"
+#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/videostab/global_motion.hpp"
+#include "opencv2/videostab/motion_stabilizing.hpp"
+#include "opencv2/videostab/frame_source.hpp"
+#include "opencv2/videostab/log.hpp"
+#include "opencv2/videostab/inpainting.hpp"
+#include "opencv2/videostab/deblurring.hpp"
+
+namespace cv
+{
+namespace videostab
+{
+
+class CV_EXPORTS StabilizerBase
+{
+public:
+ virtual ~StabilizerBase() {}
+
+ void setLog(Ptr<ILog> _log) { log_ = _log; }
+ Ptr<ILog> log() const { return log_; }
+
+ void setRadius(int val) { radius_ = val; }
+ int radius() const { return radius_; }
+
+ void setFrameSource(Ptr<IFrameSource> val) { frameSource_ = val; }
+ Ptr<IFrameSource> frameSource() const { return frameSource_; }
+
+ void setMotionEstimator(Ptr<IGlobalMotionEstimator> val) { motionEstimator_ = val; }
+ Ptr<IGlobalMotionEstimator> motionEstimator() const { return motionEstimator_; }
+
+ void setDeblurer(Ptr<DeblurerBase> val) { deblurer_ = val; }
+ Ptr<DeblurerBase> deblurrer() const { return deblurer_; }
+
+ void setTrimRatio(float val) { trimRatio_ = val; }
+ float trimRatio() const { return trimRatio_; }
+
+ void setCorrectionForInclusion(bool val) { doCorrectionForInclusion_ = val; }
+ bool doCorrectionForInclusion() const { return doCorrectionForInclusion_; }
+
+ void setBorderMode(int val) { borderMode_ = val; }
+ int borderMode() const { return borderMode_; }
+
+ void setInpainter(Ptr<InpainterBase> val) { inpainter_ = val; }
+ Ptr<InpainterBase> inpainter() const { return inpainter_; }
+
+protected:
+ StabilizerBase();
+
+ void setUp(int cacheSize, const Mat &frame);
+ Mat nextStabilizedFrame();
+ bool doOneIteration();
+ void stabilizeFrame(const Mat &stabilizationMotion);
+
+ virtual void setUp(Mat &firstFrame) = 0;
+ virtual void stabilizeFrame() = 0;
+ virtual void estimateMotion() = 0;
+
+ Ptr<ILog> log_;
+ Ptr<IFrameSource> frameSource_;
+ Ptr<IGlobalMotionEstimator> motionEstimator_;
+ Ptr<DeblurerBase> deblurer_;
+ Ptr<InpainterBase> inpainter_;
+ int radius_;
+ float trimRatio_;
+ bool doCorrectionForInclusion_;
+ int borderMode_;
+
+ Size frameSize_;
+ Mat frameMask_;
+ int curPos_;
+ int curStabilizedPos_;
+ bool doDeblurring_;
+ Mat preProcessedFrame_;
+ bool doInpainting_;
+ Mat inpaintingMask_;
+ std::vector<Mat> frames_;
+ std::vector<Mat> motions_; // motions_[i] is the motion from i-th to i+1-th frame
+ std::vector<float> blurrinessRates_;
+ std::vector<Mat> stabilizedFrames_;
+ std::vector<Mat> stabilizedMasks_;
+ std::vector<Mat> stabilizationMotions_;
+};
+
+class CV_EXPORTS OnePassStabilizer : public StabilizerBase, public IFrameSource
+{
+public:
+ OnePassStabilizer();
+
+ void setMotionFilter(Ptr<MotionFilterBase> val) { motionFilter_ = val; }
+ Ptr<MotionFilterBase> motionFilter() const { return motionFilter_; }
+
+ virtual void reset() { resetImpl(); }
+ virtual Mat nextFrame() { return nextStabilizedFrame(); }
+
+private:
+ void resetImpl();
+
+ virtual void setUp(Mat &firstFrame);
+ virtual void estimateMotion();
+ virtual void stabilizeFrame();
+
+ Ptr<MotionFilterBase> motionFilter_;
+};
+
+class CV_EXPORTS TwoPassStabilizer : public StabilizerBase, public IFrameSource
+{
+public:
+ TwoPassStabilizer();
+
+ void setMotionStabilizer(Ptr<IMotionStabilizer> val) { motionStabilizer_ = val; }
+ Ptr<IMotionStabilizer> motionStabilizer() const { return motionStabilizer_; }
+
+ void setEstimateTrimRatio(bool val) { mustEstTrimRatio_ = val; }
+ bool mustEstimateTrimaRatio() const { return mustEstTrimRatio_; }
+
+ virtual void reset() { resetImpl(); }
+ virtual Mat nextFrame();
+
+ // available after pre-pass, before it's empty
+ std::vector<Mat> motions() const;
+
+private:
+ void resetImpl();
+ void runPrePassIfNecessary();
+
+ virtual void setUp(Mat &firstFrame);
+ virtual void estimateMotion() { /* do nothing as motion was estimation in pre-pass */ }
+ virtual void stabilizeFrame();
+
+ Ptr<IMotionStabilizer> motionStabilizer_;
+ bool mustEstTrimRatio_;
+
+ int frameCount_;
+ bool isPrePassDone_;
+};
+
+} // namespace videostab
+} // namespace cv
+
+#endif
diff --git a/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/videostab.hpp b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/videostab.hpp
new file mode 100644
index 00000000..3ea34a89
--- /dev/null
+++ b/2.3-1/thirdparty/includes/OpenCV/opencv2/videostab/videostab.hpp
@@ -0,0 +1,48 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_VIDEOSTAB_HPP__
+#define __OPENCV_VIDEOSTAB_HPP__
+
+#include "opencv2/videostab/stabilizer.hpp"
+
+#endif
diff --git a/2.3-1/thirdparty/includes/WiringPi/wiringPi.h b/2.3-1/thirdparty/includes/WiringPi/wiringPi.h
new file mode 100644
index 00000000..a5eea873
--- /dev/null
+++ b/2.3-1/thirdparty/includes/WiringPi/wiringPi.h
@@ -0,0 +1,234 @@
+/*
+ * wiringPi.h:
+ * Arduino like Wiring library for the Raspberry Pi.
+ * Copyright (c) 2012-2016 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifndef __WIRING_PI_H__
+#define __WIRING_PI_H__
+
+/* C doesn't have true/false by default and I can never remember which
+ way round they are, so ...
+*/
+#ifndef TRUE
+# define TRUE (1==1)
+# define FALSE (!TRUE)
+#endif
+
+/* Handy defines*/
+
+/* wiringPi modes*/
+
+#define WPI_MODE_PINS 0
+#define WPI_MODE_GPIO 1
+#define WPI_MODE_GPIO_SYS 2
+#define WPI_MODE_PHYS 3
+#define WPI_MODE_PIFACE 4
+#define WPI_MODE_UNINITIALISED -1
+
+/* Pin modes*/
+
+#define INPUT 0
+#define OUTPUT 1
+#define PWM_OUTPUT 2
+#define GPIO_CLOCK 3
+#define SOFT_PWM_OUTPUT 4
+#define SOFT_TONE_OUTPUT 5
+#define PWM_TONE_OUTPUT 6
+
+#define LOW 0
+#define HIGH 1
+
+/* Pull up/down/none*/
+
+#define PUD_OFF 0
+#define PUD_DOWN 1
+#define PUD_UP 2
+
+/* PWM*/
+
+#define PWM_MODE_MS 0
+#define PWM_MODE_BAL 1
+
+/*Interrupt levels*/
+
+#define INT_EDGE_SETUP 0
+#define INT_EDGE_FALLING 1
+#define INT_EDGE_RISING 2
+#define INT_EDGE_BOTH 3
+
+/*Pi model types and version numbers
+ Intended for the GPIO program Use at your own risk.
+*/
+#define PI_MODEL_A 0
+#define PI_MODEL_B 1
+#define PI_MODEL_AP 2
+#define PI_MODEL_BP 3
+#define PI_MODEL_2 4
+#define PI_ALPHA 5
+#define PI_MODEL_CM 6
+#define PI_MODEL_07 7
+#define PI_MODEL_3 8
+#define PI_MODEL_ZERO 9
+
+#define PI_VERSION_1 0
+#define PI_VERSION_1_1 1
+#define PI_VERSION_1_2 2
+#define PI_VERSION_2 3
+
+#define PI_MAKER_SONY 0
+#define PI_MAKER_EGOMAN 1
+#define PI_MAKER_MBEST 2
+#define PI_MAKER_UNKNOWN 3
+
+extern const char *piModelNames [16] ;
+extern const char *piRevisionNames [16] ;
+extern const char *piMakerNames [16] ;
+extern const int piMemorySize [ 8] ;
+
+
+/* Intended for the GPIO program Use at your own risk.*/
+
+/* Threads*/
+
+#define PI_THREAD(X) void *X (void *dummy)
+
+/* Failure modes*/
+
+#define WPI_FATAL (1==1)
+#define WPI_ALMOST (1==2)
+
+
+/*wiringPiNodeStruct:
+ This describes additional device nodes in the extended wiringPi
+ 2.0 scheme of things.
+ It's a simple linked list for now, but will hopefully migrate to
+ a binary tree for efficiency reasons - but then again, the chances
+ of more than 1 or 2 devices being added are fairly slim, so who
+ knows....
+*/
+struct wiringPiNodeStruct
+{
+ int pinBase ;
+ int pinMax ;
+
+ int fd ; /* Node specific*/
+ unsigned int data0 ; /* ditto*/
+ unsigned int data1 ; /* ditto*/
+ unsigned int data2 ; /* ditto*/
+ unsigned int data3 ; /* ditto*/
+
+ void (*pinMode) (struct wiringPiNodeStruct *node, int pin, int mode) ;
+ void (*pullUpDnControl) (struct wiringPiNodeStruct *node, int pin, int mode) ;
+ int (*digitalRead) (struct wiringPiNodeStruct *node, int pin) ;
+ void (*digitalWrite) (struct wiringPiNodeStruct *node, int pin, int value) ;
+ void (*pwmWrite) (struct wiringPiNodeStruct *node, int pin, int value) ;
+ int (*analogRead) (struct wiringPiNodeStruct *node, int pin) ;
+ void (*analogWrite) (struct wiringPiNodeStruct *node, int pin, int value) ;
+
+ struct wiringPiNodeStruct *next ;
+} ;
+
+extern struct wiringPiNodeStruct *wiringPiNodes ;
+
+
+/*Function prototypes
+ c++ wrappers thanks to a comment by Nick Lott
+ (and others on the Raspberry Pi forums)
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Data*/
+
+/* Internal*/
+
+extern int wiringPiFailure (int fatal, const char *message, ...) ;
+
+/* Core wiringPi functions*/
+
+extern struct wiringPiNodeStruct *wiringPiFindNode (int pin) ;
+extern struct wiringPiNodeStruct *wiringPiNewNode (int pinBase, int numPins) ;
+
+extern int wiringPiSetup (void) ;
+extern int wiringPiSetupSys (void) ;
+extern int wiringPiSetupGpio (void) ;
+extern int wiringPiSetupPhys (void) ;
+
+extern void pinModeAlt (int pin, int mode) ;
+extern void pinMode (int pin, int mode) ;
+extern void pullUpDnControl (int pin, int pud) ;
+extern int digitalRead (int pin) ;
+extern void digitalWrite (int pin, int value) ;
+extern void pwmWrite (int pin, int value) ;
+extern int analogRead (int pin) ;
+extern void analogWrite (int pin, int value) ;
+
+/* PiFace specifics
+ (Deprecated)*/
+
+extern int wiringPiSetupPiFace (void) ;
+extern int wiringPiSetupPiFaceForGpioProg (void) ; /* Don't use this - for gpio program only*/
+
+/* On-Board Raspberry Pi hardware specific stuff*/
+
+extern int piBoardRev (void) ;
+extern void piBoardId (int *model, int *rev, int *mem, int *maker, int *overVolted) ;
+extern int wpiPinToGpio (int wpiPin) ;
+extern int physPinToGpio (int physPin) ;
+extern void setPadDrive (int group, int value) ;
+extern int getAlt (int pin) ;
+extern void pwmToneWrite (int pin, int freq) ;
+extern void digitalWriteByte (int value) ;
+extern unsigned int digitalReadByte (void) ;
+extern void pwmSetMode (int mode) ;
+extern void pwmSetRange (unsigned int range) ;
+extern void pwmSetClock (int divisor) ;
+extern void gpioClockSet (int pin, int freq) ;
+
+/* Interrupts
+ (Also Pi hardware specific)*/
+
+extern int waitForInterrupt (int pin, int mS) ;
+extern int wiringPiISR (int pin, int mode, void (*function)(void)) ;
+
+/* Threads*/
+
+extern int piThreadCreate (void *(*fn)(void *)) ;
+extern void piLock (int key) ;
+extern void piUnlock (int key) ;
+
+/* Schedulling priority*/
+
+extern int piHiPri (const int pri) ;
+
+/* Extras from arduino land*/
+
+extern void delay (unsigned int howLong) ;
+extern void delayMicroseconds (unsigned int howLong) ;
+extern unsigned int millis (void) ;
+extern unsigned int micros (void) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/2.3-1/thirdparty/includes/WiringPi/wiringSerial.h b/2.3-1/thirdparty/includes/WiringPi/wiringSerial.h
new file mode 100644
index 00000000..430dc731
--- /dev/null
+++ b/2.3-1/thirdparty/includes/WiringPi/wiringSerial.h
@@ -0,0 +1,38 @@
+/*
+ * wiringSerial.h:
+ * Handle a serial port
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int serialOpen (const char *device, const int baud) ;
+extern void serialClose (const int fd) ;
+extern void serialFlush (const int fd) ;
+extern void serialPutchar (const int fd, const unsigned char c) ;
+extern void serialPuts (const int fd, const char *s) ;
+extern void serialPrintf (const int fd, const char *message, ...) ;
+extern int serialDataAvail (const int fd) ;
+extern int serialGetchar (const int fd) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libIlmImf.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libIlmImf.a
new file mode 100644
index 00000000..6d0a4f6d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libIlmImf.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjasper.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjasper.a
new file mode 100644
index 00000000..d6b9ba9f
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjasper.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjpeg.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjpeg.a
new file mode 100644
index 00000000..bf4ade58
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibjpeg.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibpng.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibpng.a
new file mode 100644
index 00000000..1faca814
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibpng.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibtiff.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibtiff.a
new file mode 100644
index 00000000..0078039b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/liblibtiff.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_calib3d.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_calib3d.a
new file mode 100644
index 00000000..b45e1f08
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_calib3d.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_contrib.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_contrib.a
new file mode 100644
index 00000000..6d98d068
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_contrib.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_core.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_core.a
new file mode 100644
index 00000000..aa3b9cca
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_core.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_features2d.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_features2d.a
new file mode 100644
index 00000000..ca77857a
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_features2d.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_flann.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_flann.a
new file mode 100644
index 00000000..89fff9c6
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_flann.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_gpu.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_gpu.a
new file mode 100644
index 00000000..7eb500db
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_gpu.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_haartraining_engine.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_haartraining_engine.a
new file mode 100644
index 00000000..596f8a42
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_haartraining_engine.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_highgui.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_highgui.a
new file mode 100644
index 00000000..8b1b52a8
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_highgui.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_imgproc.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_imgproc.a
new file mode 100644
index 00000000..51f5f9d2
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_imgproc.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_legacy.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_legacy.a
new file mode 100644
index 00000000..5326c8d1
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_legacy.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ml.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ml.a
new file mode 100644
index 00000000..c1166a1f
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ml.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_nonfree.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_nonfree.a
new file mode 100644
index 00000000..496c1593
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_nonfree.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_objdetect.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_objdetect.a
new file mode 100644
index 00000000..6da7310a
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_objdetect.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ocl.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ocl.a
new file mode 100644
index 00000000..cdd97f17
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ocl.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_photo.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_photo.a
new file mode 100644
index 00000000..8446f17b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_photo.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_stitching.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_stitching.a
new file mode 100644
index 00000000..a4dadaeb
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_stitching.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_superres.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_superres.a
new file mode 100644
index 00000000..1f4693ff
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_superres.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ts.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ts.a
new file mode 100644
index 00000000..4dd7c7aa
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_ts.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_video.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_video.a
new file mode 100644
index 00000000..3d319215
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_video.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_videostab.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_videostab.a
new file mode 100644
index 00000000..88ae48f2
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libopencv_videostab.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libzlib.a b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libzlib.a
new file mode 100644
index 00000000..c46e963d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/linux/x64/OpenCV/libzlib.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/Lapack/blasplus.lib b/2.3-1/thirdparty/lib/pc/windows/x64/Lapack/blasplus.lib
new file mode 100644
index 00000000..df511369
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/Lapack/blasplus.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/Lapack/lapack.lib b/2.3-1/thirdparty/lib/pc/windows/x64/Lapack/lapack.lib
new file mode 100644
index 00000000..305c5a8e
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/Lapack/lapack.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImf.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImf.lib
new file mode 100644
index 00000000..07425b49
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImf.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImfd.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImfd.lib
new file mode 100644
index 00000000..bc261571
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/IlmImfd.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjasper.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjasper.lib
new file mode 100644
index 00000000..4dd7bde5
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjasper.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjpeg.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjpeg.lib
new file mode 100644
index 00000000..4d04ee69
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libjpeg.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libpng.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libpng.lib
new file mode 100644
index 00000000..a4dad985
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libpng.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libtiff.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libtiff.lib
new file mode 100644
index 00000000..5aa67303
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/libtiff.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_calib3d2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_calib3d2413.lib
new file mode 100644
index 00000000..addf909d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_calib3d2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_contrib2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_contrib2413.lib
new file mode 100644
index 00000000..aa5ff427
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_contrib2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_core2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_core2413.lib
new file mode 100644
index 00000000..5bf8abc0
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_core2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_features2d2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_features2d2413.lib
new file mode 100644
index 00000000..f52f8574
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_features2d2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_flann2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_flann2413.lib
new file mode 100644
index 00000000..e0c9dcdc
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_flann2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_gpu2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_gpu2413.lib
new file mode 100644
index 00000000..45932513
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_gpu2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_haartraining_engine.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_haartraining_engine.lib
new file mode 100644
index 00000000..aa5320cf
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_haartraining_engine.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_highgui2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_highgui2413.lib
new file mode 100644
index 00000000..7ad10302
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_highgui2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_imgproc2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_imgproc2413.lib
new file mode 100644
index 00000000..7c2cf7bd
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_imgproc2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_legacy2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_legacy2413.lib
new file mode 100644
index 00000000..c1ef356d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_legacy2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ml2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ml2413.lib
new file mode 100644
index 00000000..e88073e2
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ml2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_nonfree2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_nonfree2413.lib
new file mode 100644
index 00000000..877099b6
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_nonfree2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_objdetect2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_objdetect2413.lib
new file mode 100644
index 00000000..4213b7f1
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_objdetect2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ocl2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ocl2413.lib
new file mode 100644
index 00000000..c5d7463c
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ocl2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_photo2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_photo2413.lib
new file mode 100644
index 00000000..e05aaba6
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_photo2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_stitching2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_stitching2413.lib
new file mode 100644
index 00000000..1b06799a
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_stitching2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_superres2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_superres2413.lib
new file mode 100644
index 00000000..5bb5ff5b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_superres2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ts2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ts2413.lib
new file mode 100644
index 00000000..1d73d573
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_ts2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_video2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_video2413.lib
new file mode 100644
index 00000000..434315b3
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_video2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_videostab2413.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_videostab2413.lib
new file mode 100644
index 00000000..9dbacb7c
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/opencv_videostab2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/zlib.lib b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/zlib.lib
new file mode 100644
index 00000000..3c005b52
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x64/OpenCV/zlib.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/Lapack/libblas.lib b/2.3-1/thirdparty/lib/pc/windows/x86/Lapack/libblas.lib
new file mode 100644
index 00000000..b8ab82cd
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/Lapack/libblas.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/Lapack/liblapack.lib b/2.3-1/thirdparty/lib/pc/windows/x86/Lapack/liblapack.lib
new file mode 100644
index 00000000..1ba73b25
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/Lapack/liblapack.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/IlmImf.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/IlmImf.lib
new file mode 100644
index 00000000..c5129163
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/IlmImf.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjasper.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjasper.lib
new file mode 100644
index 00000000..05181ee7
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjasper.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjpeg.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjpeg.lib
new file mode 100644
index 00000000..afb553ae
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libjpeg.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libpng.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libpng.lib
new file mode 100644
index 00000000..d972c7b3
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libpng.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libtiff.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libtiff.lib
new file mode 100644
index 00000000..b3fb0355
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/libtiff.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_calib3d2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_calib3d2413.lib
new file mode 100644
index 00000000..52dec5fc
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_calib3d2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_contrib2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_contrib2413.lib
new file mode 100644
index 00000000..f02515bc
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_contrib2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_core2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_core2413.lib
new file mode 100644
index 00000000..7afda305
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_core2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_features2d2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_features2d2413.lib
new file mode 100644
index 00000000..f3c1249b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_features2d2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_flann2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_flann2413.lib
new file mode 100644
index 00000000..f89e5472
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_flann2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_gpu2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_gpu2413.lib
new file mode 100644
index 00000000..4e1d2904
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_gpu2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_highgui2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_highgui2413.lib
new file mode 100644
index 00000000..e7a9ee8d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_highgui2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_imgproc2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_imgproc2413.lib
new file mode 100644
index 00000000..3cb0ba42
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_imgproc2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_legacy2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_legacy2413.lib
new file mode 100644
index 00000000..abf1b9ba
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_legacy2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ml2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ml2413.lib
new file mode 100644
index 00000000..eabe9360
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ml2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_nonfree2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_nonfree2413.lib
new file mode 100644
index 00000000..5bda409b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_nonfree2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_objdetect2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_objdetect2413.lib
new file mode 100644
index 00000000..9c98106f
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_objdetect2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ocl2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ocl2413.lib
new file mode 100644
index 00000000..f1550228
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ocl2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_photo2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_photo2413.lib
new file mode 100644
index 00000000..6d379c36
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_photo2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_stitching2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_stitching2413.lib
new file mode 100644
index 00000000..fa59309b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_stitching2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_superres2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_superres2413.lib
new file mode 100644
index 00000000..c63b5a17
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_superres2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ts2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ts2413.lib
new file mode 100644
index 00000000..4f7fc71e
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_ts2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_video2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_video2413.lib
new file mode 100644
index 00000000..d516a77a
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_video2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_videostab2413.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_videostab2413.lib
new file mode 100644
index 00000000..bcaf6b4e
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/opencv_videostab2413.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/zlib.lib b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/zlib.lib
new file mode 100644
index 00000000..6754dd09
--- /dev/null
+++ b/2.3-1/thirdparty/lib/pc/windows/x86/OpenCV/zlib.lib
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libIlmImf.a b/2.3-1/thirdparty/lib/raspberrypi/libIlmImf.a
new file mode 100644
index 00000000..0d9631d2
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libIlmImf.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libcblas.a b/2.3-1/thirdparty/lib/raspberrypi/libcblas.a
new file mode 100644
index 00000000..7a460be9
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libcblas.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libgfortran.a b/2.3-1/thirdparty/lib/raspberrypi/libgfortran.a
new file mode 100644
index 00000000..7aacee8f
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libgfortran.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libgsl.a b/2.3-1/thirdparty/lib/raspberrypi/libgsl.a
new file mode 100644
index 00000000..1eb5d60d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libgsl.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libjasper.a b/2.3-1/thirdparty/lib/raspberrypi/libjasper.a
new file mode 100644
index 00000000..662e414c
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libjasper.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libjpeg.a b/2.3-1/thirdparty/lib/raspberrypi/libjpeg.a
new file mode 100644
index 00000000..e30c70c4
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libjpeg.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/liblapack.a b/2.3-1/thirdparty/lib/raspberrypi/liblapack.a
new file mode 100644
index 00000000..726f2b99
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/liblapack.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_calib3d.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_calib3d.a
new file mode 100644
index 00000000..5d69787c
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_calib3d.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_contrib.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_contrib.a
new file mode 100644
index 00000000..c2b4527e
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_contrib.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_core.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_core.a
new file mode 100644
index 00000000..1a7056fc
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_core.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_features2d.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_features2d.a
new file mode 100644
index 00000000..3bd21f25
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_features2d.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_flann.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_flann.a
new file mode 100644
index 00000000..b5648fc6
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_flann.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_gpu.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_gpu.a
new file mode 100644
index 00000000..a3b093ac
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_gpu.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_highgui.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_highgui.a
new file mode 100644
index 00000000..9b22dabe
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_highgui.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_imgproc.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_imgproc.a
new file mode 100644
index 00000000..3ae1ca04
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_imgproc.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_legacy.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_legacy.a
new file mode 100644
index 00000000..2d906d1c
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_legacy.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_ml.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_ml.a
new file mode 100644
index 00000000..5f6c164a
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_ml.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_nonfree.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_nonfree.a
new file mode 100644
index 00000000..4f49c8d1
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_nonfree.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_objdetect.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_objdetect.a
new file mode 100644
index 00000000..6b3ddad3
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_objdetect.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_ocl.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_ocl.a
new file mode 100644
index 00000000..f5a4b42b
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_ocl.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_photo.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_photo.a
new file mode 100644
index 00000000..998a80a7
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_photo.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_stitching.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_stitching.a
new file mode 100644
index 00000000..aa0b1d39
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_stitching.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_superres.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_superres.a
new file mode 100644
index 00000000..d33df018
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_superres.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_ts.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_ts.a
new file mode 100644
index 00000000..f7016020
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_ts.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_video.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_video.a
new file mode 100644
index 00000000..c4a07bf0
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_video.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libopencv_videostab.a b/2.3-1/thirdparty/lib/raspberrypi/libopencv_videostab.a
new file mode 100644
index 00000000..e2c302d5
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libopencv_videostab.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libpng.a b/2.3-1/thirdparty/lib/raspberrypi/libpng.a
new file mode 100644
index 00000000..937cc22c
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libpng.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/librefblas.a b/2.3-1/thirdparty/lib/raspberrypi/librefblas.a
new file mode 100644
index 00000000..300a0db5
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/librefblas.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libtiff.a b/2.3-1/thirdparty/lib/raspberrypi/libtiff.a
new file mode 100644
index 00000000..917d747d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libtiff.a
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libwiringPi.so b/2.3-1/thirdparty/lib/raspberrypi/libwiringPi.so
new file mode 100644
index 00000000..da4a81e1
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libwiringPi.so
Binary files differ
diff --git a/2.3-1/thirdparty/lib/raspberrypi/libzlib.a b/2.3-1/thirdparty/lib/raspberrypi/libzlib.a
new file mode 100644
index 00000000..5a64389d
--- /dev/null
+++ b/2.3-1/thirdparty/lib/raspberrypi/libzlib.a
Binary files differ
diff --git a/2.3-1/toyApplication/GuitarString.rar b/2.3-1/toyApplication/GuitarString.rar
new file mode 100644
index 00000000..e7d99217
--- /dev/null
+++ b/2.3-1/toyApplication/GuitarString.rar
Binary files differ
diff --git a/2.3-1/toyApplication/tols.m b/2.3-1/toyApplication/tols.m
new file mode 100644
index 00000000..2275e436
--- /dev/null
+++ b/2.3-1/toyApplication/tols.m
@@ -0,0 +1,160 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [y, fullframes, loops] = tols(x, h, L)
+% perform time-partitioned overlap save algorithm
+% x -- signal (vector)
+% h -- impulse response (vector)
+% L -- fft size (frame length for impulse response segmentation is L/2)
+% y -- convolution result
+% fullframes -- number of full signal frames processed
+% loops -- number of total loops
+%
+% @author gregor heinrich :: arbylon
+% @date Nov./Dec. 2006
+
+
+
+% fft size for signal and stepping
+% (only for notation)
+K = L / 2;
+% (only for notation; is always = K)
+S = L - K;
+
+% segment impulse response
+[HH, R] = segmentir(h, K);
+
+% original length of x (without zero-padding the first frame)
+lenx = length(x);
+
+% zero-padding of first frame ("saved zeroth frame")
+x = [zeros(K,1); x];
+fprintf('padding %i zeros in front of x\n', K);
+
+y = [];
+
+% window of input signal frame spectra
+% @real-time: can be implemented as circular buffer
+XX = zeros(L, R);
+
+% number of full frames from the input
+% @real-time: unknown
+fullframes = floor((length(x)-L)/S) + 1;
+fprintf('expect %i full input frames and %i IR frames.\n', fullframes, R);
+
+% signal frames available (including partial ones)
+hassignal = 1;
+% more tail frames needed to complete convolution
+hastail = 1;
+i = 0;
+
+% @real-time: we don't know when the signal ends, thus we don't use the
+% fullframes variable in a for loop
+while hassignal || hastail
+ icirc = mod(i, R) + 1;
+ % index into x where xx starts and ends (includes zero-padding)
+ xxstart = i * S + 1;
+ xxend = i * S + L;
+ if xxend <= length(x)
+ % complete signal frame
+ xx = x(xxstart : xxend);
+ % fprintf(' - signal over full frame\n');
+ elseif xxstart <= length(x)
+ % incomplete signal frame -> must be zero-padded
+ % @real-time: signal ending is started
+ xx = x(xxstart : end);
+ zpad = xxend - length(x);
+ xx = [xx; zeros(zpad, 1)];
+ fprintf(' - loop %i: signal incomplete, padding %i zeroes\n', i+1, zpad);
+ else
+ % @real-time: there are no samples from the input left; signal
+ % ending is finished; convolution ending is started
+ if hassignal
+ hassignal = 0;
+ % xframes should be exactly = fullframes
+ xframes = i - 1;
+ fprintf(' - loop %i: signal finished, processing tail only.\n', i + 1);
+ end
+ end
+
+ % drop oldest frame and add new one
+ % @real-time: can be implemented using a circular buffer
+ if (i >= R)
+ rend = R;
+ else
+ % before all ir frames are filled
+ rend = i + 1;
+ end
+ if hassignal
+ % more signal samples available
+ X = fft(xx, L);
+ % for debugging with 1:n: X = round(ifft(X));
+ XX(:, icirc) = X;
+ rstart = 1;
+ else
+ % @real-time: during convolution ending
+ rstart = i - xframes + 1;
+ end
+
+ % total length of y
+ ylen = lenx + length(h) - 1;
+ % end of output larger than expected result?
+ yyend = S*(i+1);
+ if yyend > ylen
+ hassignal = 0;
+ hastail = 0;
+ loops = i;
+ end
+
+ % add most recent frame to convolution result
+ if hastail == 1
+ yylen = S;
+ y = [y; zeros(S,1)];
+ else
+ yylen = S - (yyend - ylen);
+ y = [y; zeros(yylen,1)];
+ loops = i;
+ end
+
+ % @real-time: loops over r can be done in parallel, also between
+ % subsequent loops over i
+ for r=rstart:rend
+ rcirc = mod(i - (r - 1), R) + 1;
+ % calculate partial convolution
+ Y = XX(:,rcirc) .* HH(:,r);
+ yy = ifft(Y, L);
+ % select last L-K points
+ yy = yy(S+1:L);
+ % add contribution of signal and ir with r frames offset
+ y(end-yylen+1:end) = y(end-yylen+1:end) + yy(1:yylen);
+ end
+ i = i+1;
+
+end % while
+fprintf(' - total loops: %i\n', i);
+% TODO: make this independent of xlen
+%y = y(1:ylen);
+endfunction % convolve
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [HH, R] = segmentir(h, K)
+% segment impulse response into columns, the last
+% frame/column is zero-padded as needed.
+% HH -- matrix of impulse response frames
+% R -- number of IR frames (=columns of HH)
+ L = 2 * K;
+ fullframes = ceil(length(h)/K) - 1;
+ for i=1:fullframes
+ % column-wise IR frames
+ hh(:,i) = h(K*(i-1)+1 : K*i);
+ end
+ if mod(length(h), K) ~= 0
+ % zero-pad last ir frame
+ hlast = h((fullframes*K+1):length(h));
+ hlast = [hlast ; zeros(K - length(hlast),1)];
+ hh(:,fullframes+1) = hlast;
+ end
+ % column ffts
+ HH = fft(hh, L);
+ % for debugging 1:n: HH = round(ifft(HH));
+ R = size(HH,2);
+endfunction % segmentir
+
diff --git a/2.3-1/toyApplication/tolstoy.m b/2.3-1/toyApplication/tolstoy.m
new file mode 100644
index 00000000..51f18359
--- /dev/null
+++ b/2.3-1/toyApplication/tolstoy.m
@@ -0,0 +1,64 @@
+function [yf, yt, ydiff] = tolstoy(x, h, L)
+% compute the convolution between two signals using the time-partitioned
+% overlap-save algorithm.
+% x -- signal (vector)
+% h -- impulse response (vector)
+% L -- fft size (IR frames are L/2, signal stepping is L/2 with 50% overlap)
+% yf -- result using frequency domain convolution
+% yt -- result using time domain convolution
+% ydiff -- error between yf and yt
+%
+% @author gregor heinrich :: arbylon
+% @date Nov./Dec. 2006
+
+% TODO: time-varying impulse responses.
+% TODO: trade-off calculation for frame sizes.
+
+close all
+
+% standard values
+if nargin==0
+ L = 2^5;
+ x=ones(20,1);
+ h=ones(3,1);
+ %breaks truncation rule
+ L = 2^5;
+ x=ones(112,1);
+ h=ones(38,1);
+end
+
+x = x(:);
+h = h(:);
+
+fprintf('signal length: %i, IR length: %i\n', length(x), length(h));
+fprintf('1. convolution in time domain.\n');
+tic
+yt = conv(x,h);
+t1 = toc;
+
+%plot(yt);
+%title('time-domain convolution y_t');
+%figure
+
+K = L / 2;
+
+fprintf('2. convolution in frequency domain.\n');
+fprintf('signal frame length: %i / stepping: %i, IR frame length: %i\n', L, K, K);
+
+tic
+yf = tols(x, h, L);
+t2 = toc;
+fprintf('comparison of calculation time: time-domain: %gs, freq-domain: %gs.\n', t1, t2);
+plot(yf);
+title('frequency-domain convolution y_f');
+%figure
+len = min([length(yt),length(yf)]);
+ydiff = yf(1:len)-yt(1:len);
+%plot(ydiff);
+%title('error plot y_t - y_f');
+error = sum(ydiff.^2);
+fprintf('total squared error: %g.\n', error);
+fprintf('done.\n');
+
+end % test
+
diff --git a/2.3-1/unloader.sce b/2.3-1/unloader.sce
new file mode 100644
index 00000000..a8bf1673
--- /dev/null
+++ b/2.3-1/unloader.sce
@@ -0,0 +1,14 @@
+// This file is released under the 3-clause BSD license. See COPYING-BSD.
+// Generated by builder.sce: Please, do not edit this file
+
+try
+ getversion("scilab");
+catch
+ error("Scilab 5.4 or more is required.");
+end;
+
+fileQuit = get_absolute_file_path("unloader.sce") + "etc/" + "scilab2c.quit";
+if isfile(fileQuit) then
+ exec(fileQuit);
+end
+
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..182480dc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,22 @@
+# Scilab2C
+- - - - - -
+__A scilab to C conversion extention for scilab.__
+- - - - - -
+###How to use this toolbox ?
+1. Download the [Scilab 5.5.2](http://www.scilab.org/download/latest)
+2. Clone this repository.
+3. Copy this cloned repository at /pathuptoscilab/scilab-5.5.2/share/scilab/contrib
+4. Go to scilab console
+5. Change the directory to /pathuptoscilab/scilab-5.5.2/share/scilab/contrib/Scilab2C/2.3.1
+6. And execute the following two commands to load this toolbox in Scilab
+ * `` exec builder.sce ``
+ * `` exec loader.sce ``
+7. Scilab2c toolbox successfully loaded into Scilab.
+8. Run the ``sci2c_gui`` command in scilab console to open up the Scilab2C GUI
+9. Follow the user manual for further explorer to this toolbox
+
+# Thank you.
+
+
+
+